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.

62402 lines
2.7 MiB

e54_gfx_learning.elf: file format elf32-littlearm
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00029a34 00000000 00000000 00010000 2**3
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .ARM.exidx 00000008 00029a34 00029a34 00039a34 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
2 .relocate 00000074 20000000 00029a3c 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 00006d8c 20000078 00029ab8 00040078 2**3
ALLOC
6 .stack 00010004 20006e04 00030844 00040078 2**0
ALLOC
7 .ARM.attributes 0000002e 00000000 00000000 00040074 2**0
CONTENTS, READONLY
8 .comment 00000059 00000000 00000000 000400a2 2**0
CONTENTS, READONLY
9 .debug_info 0009d63d 00000000 00000000 000400fb 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 0000c8ba 00000000 00000000 000dd738 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_loc 0004d923 00000000 00000000 000e9ff2 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_aranges 00002000 00000000 00000000 00137915 2**0
CONTENTS, READONLY, DEBUGGING
13 .debug_ranges 00003f18 00000000 00000000 00139915 2**0
CONTENTS, READONLY, DEBUGGING
14 .debug_macro 0003f994 00000000 00000000 0013d82d 2**0
CONTENTS, READONLY, DEBUGGING
15 .debug_line 0003ad4e 00000000 00000000 0017d1c1 2**0
CONTENTS, READONLY, DEBUGGING
16 .debug_str 0012b007 00000000 00000000 001b7f0f 2**0
CONTENTS, READONLY, DEBUGGING
17 .debug_frame 000064d4 00000000 00000000 002e2f18 2**2
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <exception_table>:
/**********************
* GLOBAL FUNCTIONS
**********************/
void _lv_gc_clear_roots(void)
{
0: 08 6e 01 20 79 0f 00 00 75 0f 00 00 75 0f 00 00 .n. y...u...u...
#define LV_CLEAR_ROOT(root_type, root_name) _lv_memset_00(&LV_GC_ROOT(root_name), sizeof(LV_GC_ROOT(root_name)));
LV_ITERATE_ROOTS(LV_CLEAR_ROOT)
10: 75 0f 00 00 75 0f 00 00 75 0f 00 00 00 00 00 00 u...u...u.......
...
2c: 75 0f 00 00 75 0f 00 00 00 00 00 00 75 0f 00 00 u...u.......u...
3c: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
4c: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
5c: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
6c: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
7c: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
8c: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
9c: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
ac: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
bc: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
cc: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
dc: 75 0f 00 00 75 0f 00 00 75 0f 00 00 00 00 00 00 u...u...u.......
...
f4: 71 1c 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 q...u...u...u...
104: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
114: 75 0f 00 00 cd 1e 00 00 e1 1e 00 00 f5 1e 00 00 u...............
124: 09 1f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 ....u...u...u...
134: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
144: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
154: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
164: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
174: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
184: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
194: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
1a4: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
1b4: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
1c4: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
1d4: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
1e4: 75 0f 00 00 75 0f 00 00 91 21 00 00 75 0f 00 00 u...u....!..u...
1f4: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
204: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
214: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
224: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
234: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
244: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
254: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u...
00000264 <__do_global_dtors_aux>:
264: b510 push {r4, lr}
266: 4c05 ldr r4, [pc, #20] ; (27c <__do_global_dtors_aux+0x18>)
268: 7823 ldrb r3, [r4, #0]
26a: b933 cbnz r3, 27a <__do_global_dtors_aux+0x16>
26c: 4b04 ldr r3, [pc, #16] ; (280 <__do_global_dtors_aux+0x1c>)
26e: b113 cbz r3, 276 <__do_global_dtors_aux+0x12>
270: 4804 ldr r0, [pc, #16] ; (284 <__do_global_dtors_aux+0x20>)
272: f3af 8000 nop.w
276: 2301 movs r3, #1
278: 7023 strb r3, [r4, #0]
27a: bd10 pop {r4, pc}
27c: 20000078 .word 0x20000078
280: 00000000 .word 0x00000000
284: 00029a3c .word 0x00029a3c
00000288 <frame_dummy>:
288: 4b0c ldr r3, [pc, #48] ; (2bc <frame_dummy+0x34>)
28a: b143 cbz r3, 29e <frame_dummy+0x16>
28c: 480c ldr r0, [pc, #48] ; (2c0 <frame_dummy+0x38>)
28e: 490d ldr r1, [pc, #52] ; (2c4 <frame_dummy+0x3c>)
290: b510 push {r4, lr}
292: f3af 8000 nop.w
296: 480c ldr r0, [pc, #48] ; (2c8 <frame_dummy+0x40>)
298: 6803 ldr r3, [r0, #0]
29a: b923 cbnz r3, 2a6 <frame_dummy+0x1e>
29c: bd10 pop {r4, pc}
29e: 480a ldr r0, [pc, #40] ; (2c8 <frame_dummy+0x40>)
2a0: 6803 ldr r3, [r0, #0]
2a2: b933 cbnz r3, 2b2 <frame_dummy+0x2a>
2a4: 4770 bx lr
2a6: 4b09 ldr r3, [pc, #36] ; (2cc <frame_dummy+0x44>)
2a8: 2b00 cmp r3, #0
2aa: d0f7 beq.n 29c <frame_dummy+0x14>
2ac: e8bd 4010 ldmia.w sp!, {r4, lr}
2b0: 4718 bx r3
2b2: 4b06 ldr r3, [pc, #24] ; (2cc <frame_dummy+0x44>)
2b4: 2b00 cmp r3, #0
2b6: d0f5 beq.n 2a4 <frame_dummy+0x1c>
2b8: 4718 bx r3
2ba: bf00 nop
2bc: 00000000 .word 0x00000000
2c0: 00029a3c .word 0x00029a3c
2c4: 2000007c .word 0x2000007c
2c8: 00029a3c .word 0x00029a3c
2cc: 00000000 .word 0x00000000
000002d0 <ssd1963_init>:
/**********************
* GLOBAL FUNCTIONS
**********************/
void ssd1963_init(void)
{
2d0: b570 push {r4, r5, r6, lr}
}
static void ssd1963_reset(void)
{
/*Hardware reset*/
asm volatile("nop");
2d2: bf00 nop
((Port *)hw)->Group[submodule_index].OUTTGL.reg = PORT_OUT_OUT(mask);
}
static inline void hri_port_set_OUT_reg(const void *const hw, uint8_t submodule_index, hri_port_out_reg_t mask)
{
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
2d4: 4c8c ldr r4, [pc, #560] ; (508 <ssd1963_init+0x238>)
2d6: 2610 movs r6, #16
2d8: 61a6 str r6, [r4, #24]
LV_DRV_DISP_RST(1);
LV_DRV_DELAY_MS(50);
2da: 2032 movs r0, #50 ; 0x32
2dc: 4d8b ldr r5, [pc, #556] ; (50c <ssd1963_init+0x23c>)
2de: 47a8 blx r5
((Port *)hw)->Group[submodule_index].OUTCLR.reg = ~data;
}
static inline void hri_port_clear_OUT_reg(const void *const hw, uint8_t submodule_index, hri_port_out_reg_t mask)
{
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
2e0: 6166 str r6, [r4, #20]
LV_DRV_DISP_RST(0);
asm volatile("nop");
2e2: bf00 nop
LV_DRV_DELAY_MS(50);
2e4: 2032 movs r0, #50 ; 0x32
2e6: 47a8 blx r5
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
2e8: 61a6 str r6, [r4, #24]
LV_DRV_DISP_RST(1);
LV_DRV_DELAY_MS(50);
2ea: 2032 movs r0, #50 ; 0x32
2ec: 47a8 blx r5
asm volatile("nop");
2ee: bf00 nop
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
2f0: 2640 movs r6, #64 ; 0x40
2f2: 6166 str r6, [r4, #20]
/*Chip enable*/
LV_DRV_DISP_PAR_CS(0);
LV_DRV_DELAY_MS(10);
2f4: 200a movs r0, #10
2f6: 47a8 blx r5
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
2f8: 61a6 str r6, [r4, #24]
LV_DRV_DISP_PAR_CS(1);
LV_DRV_DELAY_MS(5);
2fa: 2005 movs r0, #5
2fc: 47a8 blx r5
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
2fe: 6166 str r6, [r4, #20]
/**
* Command mode
*/
static inline void ssd1963_cmd_mode(void)
{
if(cmd_mode == false) {
300: 4b83 ldr r3, [pc, #524] ; (510 <ssd1963_init+0x240>)
302: 781b ldrb r3, [r3, #0]
304: b923 cbnz r3, 310 <ssd1963_init+0x40>
306: 2220 movs r2, #32
308: 6162 str r2, [r4, #20]
LV_DRV_DISP_CMD_DATA(SSD1963_CMD_MODE);
cmd_mode = true;
30a: 2201 movs r2, #1
30c: 4b80 ldr r3, [pc, #512] ; (510 <ssd1963_init+0x240>)
30e: 701a strb r2, [r3, #0]
static inline void ssd1963_cmd(uint8_t cmd)
{
LV_DRV_DISP_PAR_CS(0);
ssd1963_cmd_mode();
LV_DRV_DISP_PAR_WR_WORD(cmd);
310: 2201 movs r2, #1
312: 4980 ldr r1, [pc, #512] ; (514 <ssd1963_init+0x244>)
314: 4880 ldr r0, [pc, #512] ; (518 <ssd1963_init+0x248>)
316: 4b81 ldr r3, [pc, #516] ; (51c <ssd1963_init+0x24c>)
318: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
31a: 4c7b ldr r4, [pc, #492] ; (508 <ssd1963_init+0x238>)
31c: 2540 movs r5, #64 ; 0x40
31e: 61a5 str r5, [r4, #24]
LV_DRV_DELAY_MS(20);
320: 2014 movs r0, #20
322: 4b7a ldr r3, [pc, #488] ; (50c <ssd1963_init+0x23c>)
324: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
326: 6165 str r5, [r4, #20]
if(cmd_mode == false) {
328: 4b79 ldr r3, [pc, #484] ; (510 <ssd1963_init+0x240>)
32a: 781b ldrb r3, [r3, #0]
32c: b923 cbnz r3, 338 <ssd1963_init+0x68>
32e: 2220 movs r2, #32
330: 6162 str r2, [r4, #20]
cmd_mode = true;
332: 2201 movs r2, #1
334: 4b76 ldr r3, [pc, #472] ; (510 <ssd1963_init+0x240>)
336: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(cmd);
338: 2201 movs r2, #1
33a: 4976 ldr r1, [pc, #472] ; (514 <ssd1963_init+0x244>)
33c: 4876 ldr r0, [pc, #472] ; (518 <ssd1963_init+0x248>)
33e: 4b77 ldr r3, [pc, #476] ; (51c <ssd1963_init+0x24c>)
340: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
342: 4c71 ldr r4, [pc, #452] ; (508 <ssd1963_init+0x238>)
344: 2540 movs r5, #64 ; 0x40
346: 61a5 str r5, [r4, #24]
LV_DRV_DELAY_MS(20);
348: 2014 movs r0, #20
34a: 4b70 ldr r3, [pc, #448] ; (50c <ssd1963_init+0x23c>)
34c: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
34e: 6165 str r5, [r4, #20]
if(cmd_mode == false) {
350: 4b6f ldr r3, [pc, #444] ; (510 <ssd1963_init+0x240>)
352: 781b ldrb r3, [r3, #0]
354: b923 cbnz r3, 360 <ssd1963_init+0x90>
356: 2220 movs r2, #32
358: 6162 str r2, [r4, #20]
cmd_mode = true;
35a: 2201 movs r2, #1
35c: 4b6c ldr r3, [pc, #432] ; (510 <ssd1963_init+0x240>)
35e: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(cmd);
360: 2201 movs r2, #1
362: 496c ldr r1, [pc, #432] ; (514 <ssd1963_init+0x244>)
364: 486c ldr r0, [pc, #432] ; (518 <ssd1963_init+0x248>)
366: 4b6d ldr r3, [pc, #436] ; (51c <ssd1963_init+0x24c>)
368: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
36a: 4c67 ldr r4, [pc, #412] ; (508 <ssd1963_init+0x238>)
36c: 2540 movs r5, #64 ; 0x40
36e: 61a5 str r5, [r4, #24]
LV_DRV_DELAY_MS(20);
370: 2014 movs r0, #20
372: 4b66 ldr r3, [pc, #408] ; (50c <ssd1963_init+0x23c>)
374: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
376: 6165 str r5, [r4, #20]
378: 6165 str r5, [r4, #20]
if(cmd_mode == false) {
37a: 4b65 ldr r3, [pc, #404] ; (510 <ssd1963_init+0x240>)
37c: 781b ldrb r3, [r3, #0]
37e: b923 cbnz r3, 38a <ssd1963_init+0xba>
380: 2220 movs r2, #32
382: 6162 str r2, [r4, #20]
cmd_mode = true;
384: 2201 movs r2, #1
386: 4b62 ldr r3, [pc, #392] ; (510 <ssd1963_init+0x240>)
388: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(cmd);
38a: 22e2 movs r2, #226 ; 0xe2
38c: 4961 ldr r1, [pc, #388] ; (514 <ssd1963_init+0x244>)
38e: 4862 ldr r0, [pc, #392] ; (518 <ssd1963_init+0x248>)
390: 4b62 ldr r3, [pc, #392] ; (51c <ssd1963_init+0x24c>)
392: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
394: 4b5c ldr r3, [pc, #368] ; (508 <ssd1963_init+0x238>)
396: 2240 movs r2, #64 ; 0x40
398: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
39a: 615a str r2, [r3, #20]
if(cmd_mode != false) {
39c: 4b5c ldr r3, [pc, #368] ; (510 <ssd1963_init+0x240>)
39e: 781b ldrb r3, [r3, #0]
3a0: b12b cbz r3, 3ae <ssd1963_init+0xde>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
3a2: 2220 movs r2, #32
3a4: 4b58 ldr r3, [pc, #352] ; (508 <ssd1963_init+0x238>)
3a6: 619a str r2, [r3, #24]
cmd_mode = false;
3a8: 2200 movs r2, #0
3aa: 4b59 ldr r3, [pc, #356] ; (510 <ssd1963_init+0x240>)
3ac: 701a strb r2, [r3, #0]
static inline void ssd1963_data(uint8_t data)
{
LV_DRV_DISP_PAR_CS(0);
ssd1963_data_mode();
LV_DRV_DISP_PAR_WR_WORD(data);
3ae: 2223 movs r2, #35 ; 0x23
3b0: 4958 ldr r1, [pc, #352] ; (514 <ssd1963_init+0x244>)
3b2: 4859 ldr r0, [pc, #356] ; (518 <ssd1963_init+0x248>)
3b4: 4b59 ldr r3, [pc, #356] ; (51c <ssd1963_init+0x24c>)
3b6: 4798 blx r3
3b8: 4b53 ldr r3, [pc, #332] ; (508 <ssd1963_init+0x238>)
3ba: 2240 movs r2, #64 ; 0x40
3bc: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
3be: 615a str r2, [r3, #20]
if(cmd_mode != false) {
3c0: 4b53 ldr r3, [pc, #332] ; (510 <ssd1963_init+0x240>)
3c2: 781b ldrb r3, [r3, #0]
3c4: b12b cbz r3, 3d2 <ssd1963_init+0x102>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
3c6: 2220 movs r2, #32
3c8: 4b4f ldr r3, [pc, #316] ; (508 <ssd1963_init+0x238>)
3ca: 619a str r2, [r3, #24]
cmd_mode = false;
3cc: 2200 movs r2, #0
3ce: 4b50 ldr r3, [pc, #320] ; (510 <ssd1963_init+0x240>)
3d0: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
3d2: 2202 movs r2, #2
3d4: 494f ldr r1, [pc, #316] ; (514 <ssd1963_init+0x244>)
3d6: 4850 ldr r0, [pc, #320] ; (518 <ssd1963_init+0x248>)
3d8: 4b50 ldr r3, [pc, #320] ; (51c <ssd1963_init+0x24c>)
3da: 4798 blx r3
3dc: 4b4a ldr r3, [pc, #296] ; (508 <ssd1963_init+0x238>)
3de: 2240 movs r2, #64 ; 0x40
3e0: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
3e2: 615a str r2, [r3, #20]
if(cmd_mode != false) {
3e4: 4b4a ldr r3, [pc, #296] ; (510 <ssd1963_init+0x240>)
3e6: 781b ldrb r3, [r3, #0]
3e8: b12b cbz r3, 3f6 <ssd1963_init+0x126>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
3ea: 2220 movs r2, #32
3ec: 4b46 ldr r3, [pc, #280] ; (508 <ssd1963_init+0x238>)
3ee: 619a str r2, [r3, #24]
cmd_mode = false;
3f0: 2200 movs r2, #0
3f2: 4b47 ldr r3, [pc, #284] ; (510 <ssd1963_init+0x240>)
3f4: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
3f6: 2254 movs r2, #84 ; 0x54
3f8: 4946 ldr r1, [pc, #280] ; (514 <ssd1963_init+0x244>)
3fa: 4847 ldr r0, [pc, #284] ; (518 <ssd1963_init+0x248>)
3fc: 4b47 ldr r3, [pc, #284] ; (51c <ssd1963_init+0x24c>)
3fe: 4798 blx r3
400: 4b41 ldr r3, [pc, #260] ; (508 <ssd1963_init+0x238>)
402: 2240 movs r2, #64 ; 0x40
404: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
406: 615a str r2, [r3, #20]
if(cmd_mode == false) {
408: 4b41 ldr r3, [pc, #260] ; (510 <ssd1963_init+0x240>)
40a: 781b ldrb r3, [r3, #0]
40c: b92b cbnz r3, 41a <ssd1963_init+0x14a>
40e: 2220 movs r2, #32
410: 4b3d ldr r3, [pc, #244] ; (508 <ssd1963_init+0x238>)
412: 615a str r2, [r3, #20]
cmd_mode = true;
414: 2201 movs r2, #1
416: 4b3e ldr r3, [pc, #248] ; (510 <ssd1963_init+0x240>)
418: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(cmd);
41a: 22e0 movs r2, #224 ; 0xe0
41c: 493d ldr r1, [pc, #244] ; (514 <ssd1963_init+0x244>)
41e: 483e ldr r0, [pc, #248] ; (518 <ssd1963_init+0x248>)
420: 4b3e ldr r3, [pc, #248] ; (51c <ssd1963_init+0x24c>)
422: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
424: 4b38 ldr r3, [pc, #224] ; (508 <ssd1963_init+0x238>)
426: 2240 movs r2, #64 ; 0x40
428: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
42a: 615a str r2, [r3, #20]
if(cmd_mode != false) {
42c: 4b38 ldr r3, [pc, #224] ; (510 <ssd1963_init+0x240>)
42e: 781b ldrb r3, [r3, #0]
430: b12b cbz r3, 43e <ssd1963_init+0x16e>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
432: 2220 movs r2, #32
434: 4b34 ldr r3, [pc, #208] ; (508 <ssd1963_init+0x238>)
436: 619a str r2, [r3, #24]
cmd_mode = false;
438: 2200 movs r2, #0
43a: 4b35 ldr r3, [pc, #212] ; (510 <ssd1963_init+0x240>)
43c: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
43e: 2201 movs r2, #1
440: 4934 ldr r1, [pc, #208] ; (514 <ssd1963_init+0x244>)
442: 4835 ldr r0, [pc, #212] ; (518 <ssd1963_init+0x248>)
444: 4b35 ldr r3, [pc, #212] ; (51c <ssd1963_init+0x24c>)
446: 4798 blx r3
448: 4c2f ldr r4, [pc, #188] ; (508 <ssd1963_init+0x238>)
44a: 2540 movs r5, #64 ; 0x40
44c: 61a5 str r5, [r4, #24]
delay_us(100);
44e: 2064 movs r0, #100 ; 0x64
450: 4b33 ldr r3, [pc, #204] ; (520 <ssd1963_init+0x250>)
452: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
454: 6165 str r5, [r4, #20]
if(cmd_mode == false) {
456: 4b2e ldr r3, [pc, #184] ; (510 <ssd1963_init+0x240>)
458: 781b ldrb r3, [r3, #0]
45a: b923 cbnz r3, 466 <ssd1963_init+0x196>
45c: 2220 movs r2, #32
45e: 6162 str r2, [r4, #20]
cmd_mode = true;
460: 2201 movs r2, #1
462: 4b2b ldr r3, [pc, #172] ; (510 <ssd1963_init+0x240>)
464: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(cmd);
466: 22e0 movs r2, #224 ; 0xe0
468: 492a ldr r1, [pc, #168] ; (514 <ssd1963_init+0x244>)
46a: 482b ldr r0, [pc, #172] ; (518 <ssd1963_init+0x248>)
46c: 4b2b ldr r3, [pc, #172] ; (51c <ssd1963_init+0x24c>)
46e: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
470: 4b25 ldr r3, [pc, #148] ; (508 <ssd1963_init+0x238>)
472: 2240 movs r2, #64 ; 0x40
474: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
476: 615a str r2, [r3, #20]
if(cmd_mode != false) {
478: 4b25 ldr r3, [pc, #148] ; (510 <ssd1963_init+0x240>)
47a: 781b ldrb r3, [r3, #0]
47c: b12b cbz r3, 48a <ssd1963_init+0x1ba>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
47e: 2220 movs r2, #32
480: 4b21 ldr r3, [pc, #132] ; (508 <ssd1963_init+0x238>)
482: 619a str r2, [r3, #24]
cmd_mode = false;
484: 2200 movs r2, #0
486: 4b22 ldr r3, [pc, #136] ; (510 <ssd1963_init+0x240>)
488: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
48a: 2203 movs r2, #3
48c: 4921 ldr r1, [pc, #132] ; (514 <ssd1963_init+0x244>)
48e: 4822 ldr r0, [pc, #136] ; (518 <ssd1963_init+0x248>)
490: 4b22 ldr r3, [pc, #136] ; (51c <ssd1963_init+0x24c>)
492: 4798 blx r3
494: 4c1c ldr r4, [pc, #112] ; (508 <ssd1963_init+0x238>)
496: 2540 movs r5, #64 ; 0x40
498: 61a5 str r5, [r4, #24]
delay_ms(1);
49a: 2001 movs r0, #1
49c: 4b1b ldr r3, [pc, #108] ; (50c <ssd1963_init+0x23c>)
49e: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
4a0: 6165 str r5, [r4, #20]
if(cmd_mode == false) {
4a2: 4b1b ldr r3, [pc, #108] ; (510 <ssd1963_init+0x240>)
4a4: 781b ldrb r3, [r3, #0]
4a6: b923 cbnz r3, 4b2 <ssd1963_init+0x1e2>
4a8: 2220 movs r2, #32
4aa: 6162 str r2, [r4, #20]
cmd_mode = true;
4ac: 2201 movs r2, #1
4ae: 4b18 ldr r3, [pc, #96] ; (510 <ssd1963_init+0x240>)
4b0: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(cmd);
4b2: 2201 movs r2, #1
4b4: 4917 ldr r1, [pc, #92] ; (514 <ssd1963_init+0x244>)
4b6: 4818 ldr r0, [pc, #96] ; (518 <ssd1963_init+0x248>)
4b8: 4b18 ldr r3, [pc, #96] ; (51c <ssd1963_init+0x24c>)
4ba: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
4bc: 4c12 ldr r4, [pc, #72] ; (508 <ssd1963_init+0x238>)
4be: 2540 movs r5, #64 ; 0x40
4c0: 61a5 str r5, [r4, #24]
delay_ms(1);
4c2: 2001 movs r0, #1
4c4: 4b11 ldr r3, [pc, #68] ; (50c <ssd1963_init+0x23c>)
4c6: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
4c8: 6165 str r5, [r4, #20]
if(cmd_mode == false) {
4ca: 4b11 ldr r3, [pc, #68] ; (510 <ssd1963_init+0x240>)
4cc: 781b ldrb r3, [r3, #0]
4ce: b923 cbnz r3, 4da <ssd1963_init+0x20a>
4d0: 2220 movs r2, #32
4d2: 6162 str r2, [r4, #20]
cmd_mode = true;
4d4: 2201 movs r2, #1
4d6: 4b0e ldr r3, [pc, #56] ; (510 <ssd1963_init+0x240>)
4d8: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(cmd);
4da: 22e6 movs r2, #230 ; 0xe6
4dc: 490d ldr r1, [pc, #52] ; (514 <ssd1963_init+0x244>)
4de: 480e ldr r0, [pc, #56] ; (518 <ssd1963_init+0x248>)
4e0: 4b0e ldr r3, [pc, #56] ; (51c <ssd1963_init+0x24c>)
4e2: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
4e4: 4b08 ldr r3, [pc, #32] ; (508 <ssd1963_init+0x238>)
4e6: 2240 movs r2, #64 ; 0x40
4e8: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
4ea: 615a str r2, [r3, #20]
if(cmd_mode != false) {
4ec: 4b08 ldr r3, [pc, #32] ; (510 <ssd1963_init+0x240>)
4ee: 781b ldrb r3, [r3, #0]
4f0: b12b cbz r3, 4fe <ssd1963_init+0x22e>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
4f2: 2220 movs r2, #32
4f4: 4b04 ldr r3, [pc, #16] ; (508 <ssd1963_init+0x238>)
4f6: 619a str r2, [r3, #24]
cmd_mode = false;
4f8: 2200 movs r2, #0
4fa: 4b05 ldr r3, [pc, #20] ; (510 <ssd1963_init+0x240>)
4fc: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
4fe: 2204 movs r2, #4
500: 4904 ldr r1, [pc, #16] ; (514 <ssd1963_init+0x244>)
502: 4805 ldr r0, [pc, #20] ; (518 <ssd1963_init+0x248>)
504: e00e b.n 524 <ssd1963_init+0x254>
506: bf00 nop
508: 41008000 .word 0x41008000
50c: 00001521 .word 0x00001521
510: 20000000 .word 0x20000000
514: 1c03c3f7 .word 0x1c03c3f7
518: 41008080 .word 0x41008080
51c: 00001041 .word 0x00001041
520: 00001501 .word 0x00001501
524: 4b8a ldr r3, [pc, #552] ; (750 <ssd1963_init+0x480>)
526: 4798 blx r3
528: 4b8a ldr r3, [pc, #552] ; (754 <ssd1963_init+0x484>)
52a: 2240 movs r2, #64 ; 0x40
52c: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
52e: 615a str r2, [r3, #20]
if(cmd_mode != false) {
530: 4b89 ldr r3, [pc, #548] ; (758 <ssd1963_init+0x488>)
532: 781b ldrb r3, [r3, #0]
534: b12b cbz r3, 542 <ssd1963_init+0x272>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
536: 2220 movs r2, #32
538: 4b86 ldr r3, [pc, #536] ; (754 <ssd1963_init+0x484>)
53a: 619a str r2, [r3, #24]
cmd_mode = false;
53c: 2200 movs r2, #0
53e: 4b86 ldr r3, [pc, #536] ; (758 <ssd1963_init+0x488>)
540: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
542: 223a movs r2, #58 ; 0x3a
544: 4985 ldr r1, [pc, #532] ; (75c <ssd1963_init+0x48c>)
546: 4886 ldr r0, [pc, #536] ; (760 <ssd1963_init+0x490>)
548: 4b81 ldr r3, [pc, #516] ; (750 <ssd1963_init+0x480>)
54a: 4798 blx r3
54c: 4b81 ldr r3, [pc, #516] ; (754 <ssd1963_init+0x484>)
54e: 2240 movs r2, #64 ; 0x40
550: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
552: 615a str r2, [r3, #20]
if(cmd_mode != false) {
554: 4b80 ldr r3, [pc, #512] ; (758 <ssd1963_init+0x488>)
556: 781b ldrb r3, [r3, #0]
558: b12b cbz r3, 566 <ssd1963_init+0x296>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
55a: 2220 movs r2, #32
55c: 4b7d ldr r3, [pc, #500] ; (754 <ssd1963_init+0x484>)
55e: 619a str r2, [r3, #24]
cmd_mode = false;
560: 2200 movs r2, #0
562: 4b7d ldr r3, [pc, #500] ; (758 <ssd1963_init+0x488>)
564: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
566: 22b6 movs r2, #182 ; 0xb6
568: 497c ldr r1, [pc, #496] ; (75c <ssd1963_init+0x48c>)
56a: 487d ldr r0, [pc, #500] ; (760 <ssd1963_init+0x490>)
56c: 4b78 ldr r3, [pc, #480] ; (750 <ssd1963_init+0x480>)
56e: 4798 blx r3
570: 4b78 ldr r3, [pc, #480] ; (754 <ssd1963_init+0x484>)
572: 2240 movs r2, #64 ; 0x40
574: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
576: 615a str r2, [r3, #20]
if(cmd_mode == false) {
578: 4b77 ldr r3, [pc, #476] ; (758 <ssd1963_init+0x488>)
57a: 781b ldrb r3, [r3, #0]
57c: b92b cbnz r3, 58a <ssd1963_init+0x2ba>
57e: 2220 movs r2, #32
580: 4b74 ldr r3, [pc, #464] ; (754 <ssd1963_init+0x484>)
582: 615a str r2, [r3, #20]
cmd_mode = true;
584: 2201 movs r2, #1
586: 4b74 ldr r3, [pc, #464] ; (758 <ssd1963_init+0x488>)
588: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(cmd);
58a: 22b0 movs r2, #176 ; 0xb0
58c: 4973 ldr r1, [pc, #460] ; (75c <ssd1963_init+0x48c>)
58e: 4874 ldr r0, [pc, #464] ; (760 <ssd1963_init+0x490>)
590: 4b6f ldr r3, [pc, #444] ; (750 <ssd1963_init+0x480>)
592: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
594: 4b6f ldr r3, [pc, #444] ; (754 <ssd1963_init+0x484>)
596: 2240 movs r2, #64 ; 0x40
598: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
59a: 615a str r2, [r3, #20]
if(cmd_mode != false) {
59c: 4b6e ldr r3, [pc, #440] ; (758 <ssd1963_init+0x488>)
59e: 781b ldrb r3, [r3, #0]
5a0: b12b cbz r3, 5ae <ssd1963_init+0x2de>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
5a2: 2220 movs r2, #32
5a4: 4b6b ldr r3, [pc, #428] ; (754 <ssd1963_init+0x484>)
5a6: 619a str r2, [r3, #24]
cmd_mode = false;
5a8: 2200 movs r2, #0
5aa: 4b6b ldr r3, [pc, #428] ; (758 <ssd1963_init+0x488>)
5ac: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
5ae: 2228 movs r2, #40 ; 0x28
5b0: 496a ldr r1, [pc, #424] ; (75c <ssd1963_init+0x48c>)
5b2: 486b ldr r0, [pc, #428] ; (760 <ssd1963_init+0x490>)
5b4: 4b66 ldr r3, [pc, #408] ; (750 <ssd1963_init+0x480>)
5b6: 4798 blx r3
5b8: 4b66 ldr r3, [pc, #408] ; (754 <ssd1963_init+0x484>)
5ba: 2240 movs r2, #64 ; 0x40
5bc: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
5be: 615a str r2, [r3, #20]
if(cmd_mode != false) {
5c0: 4b65 ldr r3, [pc, #404] ; (758 <ssd1963_init+0x488>)
5c2: 781b ldrb r3, [r3, #0]
5c4: b12b cbz r3, 5d2 <ssd1963_init+0x302>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
5c6: 2220 movs r2, #32
5c8: 4b62 ldr r3, [pc, #392] ; (754 <ssd1963_init+0x484>)
5ca: 619a str r2, [r3, #24]
cmd_mode = false;
5cc: 2200 movs r2, #0
5ce: 4b62 ldr r3, [pc, #392] ; (758 <ssd1963_init+0x488>)
5d0: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
5d2: 2280 movs r2, #128 ; 0x80
5d4: 4961 ldr r1, [pc, #388] ; (75c <ssd1963_init+0x48c>)
5d6: 4862 ldr r0, [pc, #392] ; (760 <ssd1963_init+0x490>)
5d8: 4b5d ldr r3, [pc, #372] ; (750 <ssd1963_init+0x480>)
5da: 4798 blx r3
5dc: 4c5d ldr r4, [pc, #372] ; (754 <ssd1963_init+0x484>)
5de: 2540 movs r5, #64 ; 0x40
5e0: 61a5 str r5, [r4, #24]
ssd1963_data((SSD1963_HOR_RES-1)>>8); //Set panel size
5e2: 4b60 ldr r3, [pc, #384] ; (764 <ssd1963_init+0x494>)
5e4: 4798 blx r3
5e6: 4b60 ldr r3, [pc, #384] ; (768 <ssd1963_init+0x498>)
5e8: 4798 blx r3
5ea: 1e42 subs r2, r0, #1
5ec: f3c2 2207 ubfx r2, r2, #8, #8
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
5f0: 6165 str r5, [r4, #20]
if(cmd_mode != false) {
5f2: 4b59 ldr r3, [pc, #356] ; (758 <ssd1963_init+0x488>)
5f4: 781b ldrb r3, [r3, #0]
5f6: b123 cbz r3, 602 <ssd1963_init+0x332>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
5f8: 2120 movs r1, #32
5fa: 61a1 str r1, [r4, #24]
cmd_mode = false;
5fc: 2100 movs r1, #0
5fe: 4b56 ldr r3, [pc, #344] ; (758 <ssd1963_init+0x488>)
600: 7019 strb r1, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
602: 4956 ldr r1, [pc, #344] ; (75c <ssd1963_init+0x48c>)
604: 4856 ldr r0, [pc, #344] ; (760 <ssd1963_init+0x490>)
606: 4b52 ldr r3, [pc, #328] ; (750 <ssd1963_init+0x480>)
608: 4798 blx r3
60a: 4c52 ldr r4, [pc, #328] ; (754 <ssd1963_init+0x484>)
60c: 2540 movs r5, #64 ; 0x40
60e: 61a5 str r5, [r4, #24]
ssd1963_data(SSD1963_HOR_RES-1);
610: 4b54 ldr r3, [pc, #336] ; (764 <ssd1963_init+0x494>)
612: 4798 blx r3
614: 4b54 ldr r3, [pc, #336] ; (768 <ssd1963_init+0x498>)
616: 4798 blx r3
618: 1e42 subs r2, r0, #1
61a: b2d2 uxtb r2, r2
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
61c: 6165 str r5, [r4, #20]
if(cmd_mode != false) {
61e: 4b4e ldr r3, [pc, #312] ; (758 <ssd1963_init+0x488>)
620: 781b ldrb r3, [r3, #0]
622: b123 cbz r3, 62e <ssd1963_init+0x35e>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
624: 2120 movs r1, #32
626: 61a1 str r1, [r4, #24]
cmd_mode = false;
628: 2100 movs r1, #0
62a: 4b4b ldr r3, [pc, #300] ; (758 <ssd1963_init+0x488>)
62c: 7019 strb r1, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
62e: 494b ldr r1, [pc, #300] ; (75c <ssd1963_init+0x48c>)
630: 484b ldr r0, [pc, #300] ; (760 <ssd1963_init+0x490>)
632: 4b47 ldr r3, [pc, #284] ; (750 <ssd1963_init+0x480>)
634: 4798 blx r3
636: 4c47 ldr r4, [pc, #284] ; (754 <ssd1963_init+0x484>)
638: 2540 movs r5, #64 ; 0x40
63a: 61a5 str r5, [r4, #24]
ssd1963_data((SSD1963_VER_RES-1)>>8);
63c: 4b49 ldr r3, [pc, #292] ; (764 <ssd1963_init+0x494>)
63e: 4798 blx r3
640: 4b4a ldr r3, [pc, #296] ; (76c <ssd1963_init+0x49c>)
642: 4798 blx r3
644: 1e42 subs r2, r0, #1
646: f3c2 2207 ubfx r2, r2, #8, #8
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
64a: 6165 str r5, [r4, #20]
if(cmd_mode != false) {
64c: 4b42 ldr r3, [pc, #264] ; (758 <ssd1963_init+0x488>)
64e: 781b ldrb r3, [r3, #0]
650: b123 cbz r3, 65c <ssd1963_init+0x38c>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
652: 2120 movs r1, #32
654: 61a1 str r1, [r4, #24]
cmd_mode = false;
656: 2100 movs r1, #0
658: 4b3f ldr r3, [pc, #252] ; (758 <ssd1963_init+0x488>)
65a: 7019 strb r1, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
65c: 493f ldr r1, [pc, #252] ; (75c <ssd1963_init+0x48c>)
65e: 4840 ldr r0, [pc, #256] ; (760 <ssd1963_init+0x490>)
660: 4b3b ldr r3, [pc, #236] ; (750 <ssd1963_init+0x480>)
662: 4798 blx r3
664: 4c3b ldr r4, [pc, #236] ; (754 <ssd1963_init+0x484>)
666: 2540 movs r5, #64 ; 0x40
668: 61a5 str r5, [r4, #24]
ssd1963_data(SSD1963_VER_RES-1);
66a: 4b3e ldr r3, [pc, #248] ; (764 <ssd1963_init+0x494>)
66c: 4798 blx r3
66e: 4b3f ldr r3, [pc, #252] ; (76c <ssd1963_init+0x49c>)
670: 4798 blx r3
672: 1e42 subs r2, r0, #1
674: b2d2 uxtb r2, r2
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
676: 6165 str r5, [r4, #20]
if(cmd_mode != false) {
678: 4b37 ldr r3, [pc, #220] ; (758 <ssd1963_init+0x488>)
67a: 781b ldrb r3, [r3, #0]
67c: b123 cbz r3, 688 <ssd1963_init+0x3b8>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
67e: 2120 movs r1, #32
680: 61a1 str r1, [r4, #24]
cmd_mode = false;
682: 2100 movs r1, #0
684: 4b34 ldr r3, [pc, #208] ; (758 <ssd1963_init+0x488>)
686: 7019 strb r1, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
688: 4934 ldr r1, [pc, #208] ; (75c <ssd1963_init+0x48c>)
68a: 4835 ldr r0, [pc, #212] ; (760 <ssd1963_init+0x490>)
68c: 4b30 ldr r3, [pc, #192] ; (750 <ssd1963_init+0x480>)
68e: 4798 blx r3
690: 4b30 ldr r3, [pc, #192] ; (754 <ssd1963_init+0x484>)
692: 2240 movs r2, #64 ; 0x40
694: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
696: 615a str r2, [r3, #20]
if(cmd_mode != false) {
698: 4b2f ldr r3, [pc, #188] ; (758 <ssd1963_init+0x488>)
69a: 781b ldrb r3, [r3, #0]
69c: b12b cbz r3, 6aa <ssd1963_init+0x3da>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
69e: 2220 movs r2, #32
6a0: 4b2c ldr r3, [pc, #176] ; (754 <ssd1963_init+0x484>)
6a2: 619a str r2, [r3, #24]
cmd_mode = false;
6a4: 2200 movs r2, #0
6a6: 4b2c ldr r3, [pc, #176] ; (758 <ssd1963_init+0x488>)
6a8: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
6aa: 2200 movs r2, #0
6ac: 492b ldr r1, [pc, #172] ; (75c <ssd1963_init+0x48c>)
6ae: 482c ldr r0, [pc, #176] ; (760 <ssd1963_init+0x490>)
6b0: 4b27 ldr r3, [pc, #156] ; (750 <ssd1963_init+0x480>)
6b2: 4798 blx r3
6b4: 4b27 ldr r3, [pc, #156] ; (754 <ssd1963_init+0x484>)
6b6: 2240 movs r2, #64 ; 0x40
6b8: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
6ba: 615a str r2, [r3, #20]
if(cmd_mode == false) {
6bc: 4b26 ldr r3, [pc, #152] ; (758 <ssd1963_init+0x488>)
6be: 781b ldrb r3, [r3, #0]
6c0: b92b cbnz r3, 6ce <ssd1963_init+0x3fe>
6c2: 2220 movs r2, #32
6c4: 4b23 ldr r3, [pc, #140] ; (754 <ssd1963_init+0x484>)
6c6: 615a str r2, [r3, #20]
cmd_mode = true;
6c8: 2201 movs r2, #1
6ca: 4b23 ldr r3, [pc, #140] ; (758 <ssd1963_init+0x488>)
6cc: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(cmd);
6ce: 22f0 movs r2, #240 ; 0xf0
6d0: 4922 ldr r1, [pc, #136] ; (75c <ssd1963_init+0x48c>)
6d2: 4823 ldr r0, [pc, #140] ; (760 <ssd1963_init+0x490>)
6d4: 4b1e ldr r3, [pc, #120] ; (750 <ssd1963_init+0x480>)
6d6: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
6d8: 4b1e ldr r3, [pc, #120] ; (754 <ssd1963_init+0x484>)
6da: 2240 movs r2, #64 ; 0x40
6dc: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
6de: 615a str r2, [r3, #20]
if(cmd_mode != false) {
6e0: 4b1d ldr r3, [pc, #116] ; (758 <ssd1963_init+0x488>)
6e2: 781b ldrb r3, [r3, #0]
6e4: b12b cbz r3, 6f2 <ssd1963_init+0x422>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
6e6: 2220 movs r2, #32
6e8: 4b1a ldr r3, [pc, #104] ; (754 <ssd1963_init+0x484>)
6ea: 619a str r2, [r3, #24]
cmd_mode = false;
6ec: 2200 movs r2, #0
6ee: 4b1a ldr r3, [pc, #104] ; (758 <ssd1963_init+0x488>)
6f0: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
6f2: 2203 movs r2, #3
6f4: 4919 ldr r1, [pc, #100] ; (75c <ssd1963_init+0x48c>)
6f6: 481a ldr r0, [pc, #104] ; (760 <ssd1963_init+0x490>)
6f8: 4b15 ldr r3, [pc, #84] ; (750 <ssd1963_init+0x480>)
6fa: 4798 blx r3
6fc: 4b15 ldr r3, [pc, #84] ; (754 <ssd1963_init+0x484>)
6fe: 2240 movs r2, #64 ; 0x40
700: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
702: 615a str r2, [r3, #20]
if(cmd_mode == false) {
704: 4b14 ldr r3, [pc, #80] ; (758 <ssd1963_init+0x488>)
706: 781b ldrb r3, [r3, #0]
708: b92b cbnz r3, 716 <ssd1963_init+0x446>
70a: 2220 movs r2, #32
70c: 4b11 ldr r3, [pc, #68] ; (754 <ssd1963_init+0x484>)
70e: 615a str r2, [r3, #20]
cmd_mode = true;
710: 2201 movs r2, #1
712: 4b11 ldr r3, [pc, #68] ; (758 <ssd1963_init+0x488>)
714: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(cmd);
716: 223a movs r2, #58 ; 0x3a
718: 4910 ldr r1, [pc, #64] ; (75c <ssd1963_init+0x48c>)
71a: 4811 ldr r0, [pc, #68] ; (760 <ssd1963_init+0x490>)
71c: 4b0c ldr r3, [pc, #48] ; (750 <ssd1963_init+0x480>)
71e: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
720: 4b0c ldr r3, [pc, #48] ; (754 <ssd1963_init+0x484>)
722: 2240 movs r2, #64 ; 0x40
724: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
726: 615a str r2, [r3, #20]
if(cmd_mode != false) {
728: 4b0b ldr r3, [pc, #44] ; (758 <ssd1963_init+0x488>)
72a: 781b ldrb r3, [r3, #0]
72c: b12b cbz r3, 73a <ssd1963_init+0x46a>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
72e: 2220 movs r2, #32
730: 4b08 ldr r3, [pc, #32] ; (754 <ssd1963_init+0x484>)
732: 619a str r2, [r3, #24]
cmd_mode = false;
734: 2200 movs r2, #0
736: 4b08 ldr r3, [pc, #32] ; (758 <ssd1963_init+0x488>)
738: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
73a: 2255 movs r2, #85 ; 0x55
73c: 4907 ldr r1, [pc, #28] ; (75c <ssd1963_init+0x48c>)
73e: 4808 ldr r0, [pc, #32] ; (760 <ssd1963_init+0x490>)
740: 4b03 ldr r3, [pc, #12] ; (750 <ssd1963_init+0x480>)
742: 4798 blx r3
744: 4b03 ldr r3, [pc, #12] ; (754 <ssd1963_init+0x484>)
746: 2240 movs r2, #64 ; 0x40
748: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
74a: 615a str r2, [r3, #20]
74c: e010 b.n 770 <ssd1963_init+0x4a0>
74e: bf00 nop
750: 00001041 .word 0x00001041
754: 41008000 .word 0x41008000
758: 20000000 .word 0x20000000
75c: 1c03c3f7 .word 0x1c03c3f7
760: 41008080 .word 0x41008080
764: 00010ee1 .word 0x00010ee1
768: 00010eed .word 0x00010eed
76c: 00010f15 .word 0x00010f15
if(cmd_mode == false) {
770: 4b8a ldr r3, [pc, #552] ; (99c <ssd1963_init+0x6cc>)
772: 781b ldrb r3, [r3, #0]
774: b92b cbnz r3, 782 <ssd1963_init+0x4b2>
776: 2220 movs r2, #32
778: 4b89 ldr r3, [pc, #548] ; (9a0 <ssd1963_init+0x6d0>)
77a: 615a str r2, [r3, #20]
cmd_mode = true;
77c: 2201 movs r2, #1
77e: 4b87 ldr r3, [pc, #540] ; (99c <ssd1963_init+0x6cc>)
780: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(cmd);
782: 22b4 movs r2, #180 ; 0xb4
784: 4987 ldr r1, [pc, #540] ; (9a4 <ssd1963_init+0x6d4>)
786: 4888 ldr r0, [pc, #544] ; (9a8 <ssd1963_init+0x6d8>)
788: 4b88 ldr r3, [pc, #544] ; (9ac <ssd1963_init+0x6dc>)
78a: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
78c: 4b84 ldr r3, [pc, #528] ; (9a0 <ssd1963_init+0x6d0>)
78e: 2240 movs r2, #64 ; 0x40
790: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
792: 615a str r2, [r3, #20]
if(cmd_mode != false) {
794: 4b81 ldr r3, [pc, #516] ; (99c <ssd1963_init+0x6cc>)
796: 781b ldrb r3, [r3, #0]
798: b12b cbz r3, 7a6 <ssd1963_init+0x4d6>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
79a: 2220 movs r2, #32
79c: 4b80 ldr r3, [pc, #512] ; (9a0 <ssd1963_init+0x6d0>)
79e: 619a str r2, [r3, #24]
cmd_mode = false;
7a0: 2200 movs r2, #0
7a2: 4b7e ldr r3, [pc, #504] ; (99c <ssd1963_init+0x6cc>)
7a4: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
7a6: 2202 movs r2, #2
7a8: 497e ldr r1, [pc, #504] ; (9a4 <ssd1963_init+0x6d4>)
7aa: 487f ldr r0, [pc, #508] ; (9a8 <ssd1963_init+0x6d8>)
7ac: 4b7f ldr r3, [pc, #508] ; (9ac <ssd1963_init+0x6dc>)
7ae: 4798 blx r3
7b0: 4b7b ldr r3, [pc, #492] ; (9a0 <ssd1963_init+0x6d0>)
7b2: 2240 movs r2, #64 ; 0x40
7b4: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
7b6: 615a str r2, [r3, #20]
if(cmd_mode != false) {
7b8: 4b78 ldr r3, [pc, #480] ; (99c <ssd1963_init+0x6cc>)
7ba: 781b ldrb r3, [r3, #0]
7bc: b12b cbz r3, 7ca <ssd1963_init+0x4fa>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
7be: 2220 movs r2, #32
7c0: 4b77 ldr r3, [pc, #476] ; (9a0 <ssd1963_init+0x6d0>)
7c2: 619a str r2, [r3, #24]
cmd_mode = false;
7c4: 2200 movs r2, #0
7c6: 4b75 ldr r3, [pc, #468] ; (99c <ssd1963_init+0x6cc>)
7c8: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
7ca: 220d movs r2, #13
7cc: 4975 ldr r1, [pc, #468] ; (9a4 <ssd1963_init+0x6d4>)
7ce: 4876 ldr r0, [pc, #472] ; (9a8 <ssd1963_init+0x6d8>)
7d0: 4b76 ldr r3, [pc, #472] ; (9ac <ssd1963_init+0x6dc>)
7d2: 4798 blx r3
7d4: 4b72 ldr r3, [pc, #456] ; (9a0 <ssd1963_init+0x6d0>)
7d6: 2240 movs r2, #64 ; 0x40
7d8: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
7da: 615a str r2, [r3, #20]
if(cmd_mode != false) {
7dc: 4b6f ldr r3, [pc, #444] ; (99c <ssd1963_init+0x6cc>)
7de: 781b ldrb r3, [r3, #0]
7e0: b12b cbz r3, 7ee <ssd1963_init+0x51e>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
7e2: 2220 movs r2, #32
7e4: 4b6e ldr r3, [pc, #440] ; (9a0 <ssd1963_init+0x6d0>)
7e6: 619a str r2, [r3, #24]
cmd_mode = false;
7e8: 2200 movs r2, #0
7ea: 4b6c ldr r3, [pc, #432] ; (99c <ssd1963_init+0x6cc>)
7ec: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
7ee: 2200 movs r2, #0
7f0: 496c ldr r1, [pc, #432] ; (9a4 <ssd1963_init+0x6d4>)
7f2: 486d ldr r0, [pc, #436] ; (9a8 <ssd1963_init+0x6d8>)
7f4: 4b6d ldr r3, [pc, #436] ; (9ac <ssd1963_init+0x6dc>)
7f6: 4798 blx r3
7f8: 4b69 ldr r3, [pc, #420] ; (9a0 <ssd1963_init+0x6d0>)
7fa: 2240 movs r2, #64 ; 0x40
7fc: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
7fe: 615a str r2, [r3, #20]
if(cmd_mode != false) {
800: 4b66 ldr r3, [pc, #408] ; (99c <ssd1963_init+0x6cc>)
802: 781b ldrb r3, [r3, #0]
804: b12b cbz r3, 812 <ssd1963_init+0x542>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
806: 2220 movs r2, #32
808: 4b65 ldr r3, [pc, #404] ; (9a0 <ssd1963_init+0x6d0>)
80a: 619a str r2, [r3, #24]
cmd_mode = false;
80c: 2200 movs r2, #0
80e: 4b63 ldr r3, [pc, #396] ; (99c <ssd1963_init+0x6cc>)
810: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
812: 222b movs r2, #43 ; 0x2b
814: 4963 ldr r1, [pc, #396] ; (9a4 <ssd1963_init+0x6d4>)
816: 4864 ldr r0, [pc, #400] ; (9a8 <ssd1963_init+0x6d8>)
818: 4b64 ldr r3, [pc, #400] ; (9ac <ssd1963_init+0x6dc>)
81a: 4798 blx r3
81c: 4b60 ldr r3, [pc, #384] ; (9a0 <ssd1963_init+0x6d0>)
81e: 2240 movs r2, #64 ; 0x40
820: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
822: 615a str r2, [r3, #20]
if(cmd_mode != false) {
824: 4b5d ldr r3, [pc, #372] ; (99c <ssd1963_init+0x6cc>)
826: 781b ldrb r3, [r3, #0]
828: b12b cbz r3, 836 <ssd1963_init+0x566>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
82a: 2220 movs r2, #32
82c: 4b5c ldr r3, [pc, #368] ; (9a0 <ssd1963_init+0x6d0>)
82e: 619a str r2, [r3, #24]
cmd_mode = false;
830: 2200 movs r2, #0
832: 4b5a ldr r3, [pc, #360] ; (99c <ssd1963_init+0x6cc>)
834: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
836: 2228 movs r2, #40 ; 0x28
838: 495a ldr r1, [pc, #360] ; (9a4 <ssd1963_init+0x6d4>)
83a: 485b ldr r0, [pc, #364] ; (9a8 <ssd1963_init+0x6d8>)
83c: 4b5b ldr r3, [pc, #364] ; (9ac <ssd1963_init+0x6dc>)
83e: 4798 blx r3
840: 4b57 ldr r3, [pc, #348] ; (9a0 <ssd1963_init+0x6d0>)
842: 2240 movs r2, #64 ; 0x40
844: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
846: 615a str r2, [r3, #20]
if(cmd_mode != false) {
848: 4b54 ldr r3, [pc, #336] ; (99c <ssd1963_init+0x6cc>)
84a: 781b ldrb r3, [r3, #0]
84c: b12b cbz r3, 85a <ssd1963_init+0x58a>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
84e: 2220 movs r2, #32
850: 4b53 ldr r3, [pc, #332] ; (9a0 <ssd1963_init+0x6d0>)
852: 619a str r2, [r3, #24]
cmd_mode = false;
854: 2200 movs r2, #0
856: 4b51 ldr r3, [pc, #324] ; (99c <ssd1963_init+0x6cc>)
858: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
85a: 2200 movs r2, #0
85c: 4951 ldr r1, [pc, #324] ; (9a4 <ssd1963_init+0x6d4>)
85e: 4852 ldr r0, [pc, #328] ; (9a8 <ssd1963_init+0x6d8>)
860: 4b52 ldr r3, [pc, #328] ; (9ac <ssd1963_init+0x6dc>)
862: 4798 blx r3
864: 4b4e ldr r3, [pc, #312] ; (9a0 <ssd1963_init+0x6d0>)
866: 2240 movs r2, #64 ; 0x40
868: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
86a: 615a str r2, [r3, #20]
if(cmd_mode != false) {
86c: 4b4b ldr r3, [pc, #300] ; (99c <ssd1963_init+0x6cc>)
86e: 781b ldrb r3, [r3, #0]
870: b12b cbz r3, 87e <ssd1963_init+0x5ae>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
872: 2220 movs r2, #32
874: 4b4a ldr r3, [pc, #296] ; (9a0 <ssd1963_init+0x6d0>)
876: 619a str r2, [r3, #24]
cmd_mode = false;
878: 2200 movs r2, #0
87a: 4b48 ldr r3, [pc, #288] ; (99c <ssd1963_init+0x6cc>)
87c: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
87e: 2200 movs r2, #0
880: 4948 ldr r1, [pc, #288] ; (9a4 <ssd1963_init+0x6d4>)
882: 4849 ldr r0, [pc, #292] ; (9a8 <ssd1963_init+0x6d8>)
884: 4b49 ldr r3, [pc, #292] ; (9ac <ssd1963_init+0x6dc>)
886: 4798 blx r3
888: 4b45 ldr r3, [pc, #276] ; (9a0 <ssd1963_init+0x6d0>)
88a: 2240 movs r2, #64 ; 0x40
88c: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
88e: 615a str r2, [r3, #20]
if(cmd_mode != false) {
890: 4b42 ldr r3, [pc, #264] ; (99c <ssd1963_init+0x6cc>)
892: 781b ldrb r3, [r3, #0]
894: b12b cbz r3, 8a2 <ssd1963_init+0x5d2>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
896: 2220 movs r2, #32
898: 4b41 ldr r3, [pc, #260] ; (9a0 <ssd1963_init+0x6d0>)
89a: 619a str r2, [r3, #24]
cmd_mode = false;
89c: 2200 movs r2, #0
89e: 4b3f ldr r3, [pc, #252] ; (99c <ssd1963_init+0x6cc>)
8a0: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
8a2: 2200 movs r2, #0
8a4: 493f ldr r1, [pc, #252] ; (9a4 <ssd1963_init+0x6d4>)
8a6: 4840 ldr r0, [pc, #256] ; (9a8 <ssd1963_init+0x6d8>)
8a8: 4b40 ldr r3, [pc, #256] ; (9ac <ssd1963_init+0x6dc>)
8aa: 4798 blx r3
8ac: 4b3c ldr r3, [pc, #240] ; (9a0 <ssd1963_init+0x6d0>)
8ae: 2240 movs r2, #64 ; 0x40
8b0: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
8b2: 615a str r2, [r3, #20]
if(cmd_mode == false) {
8b4: 4b39 ldr r3, [pc, #228] ; (99c <ssd1963_init+0x6cc>)
8b6: 781b ldrb r3, [r3, #0]
8b8: b92b cbnz r3, 8c6 <ssd1963_init+0x5f6>
8ba: 2220 movs r2, #32
8bc: 4b38 ldr r3, [pc, #224] ; (9a0 <ssd1963_init+0x6d0>)
8be: 615a str r2, [r3, #20]
cmd_mode = true;
8c0: 2201 movs r2, #1
8c2: 4b36 ldr r3, [pc, #216] ; (99c <ssd1963_init+0x6cc>)
8c4: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(cmd);
8c6: 22b6 movs r2, #182 ; 0xb6
8c8: 4936 ldr r1, [pc, #216] ; (9a4 <ssd1963_init+0x6d4>)
8ca: 4837 ldr r0, [pc, #220] ; (9a8 <ssd1963_init+0x6d8>)
8cc: 4b37 ldr r3, [pc, #220] ; (9ac <ssd1963_init+0x6dc>)
8ce: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
8d0: 4b33 ldr r3, [pc, #204] ; (9a0 <ssd1963_init+0x6d0>)
8d2: 2240 movs r2, #64 ; 0x40
8d4: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
8d6: 615a str r2, [r3, #20]
if(cmd_mode != false) {
8d8: 4b30 ldr r3, [pc, #192] ; (99c <ssd1963_init+0x6cc>)
8da: 781b ldrb r3, [r3, #0]
8dc: b12b cbz r3, 8ea <ssd1963_init+0x61a>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
8de: 2220 movs r2, #32
8e0: 4b2f ldr r3, [pc, #188] ; (9a0 <ssd1963_init+0x6d0>)
8e2: 619a str r2, [r3, #24]
cmd_mode = false;
8e4: 2200 movs r2, #0
8e6: 4b2d ldr r3, [pc, #180] ; (99c <ssd1963_init+0x6cc>)
8e8: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
8ea: 2201 movs r2, #1
8ec: 492d ldr r1, [pc, #180] ; (9a4 <ssd1963_init+0x6d4>)
8ee: 482e ldr r0, [pc, #184] ; (9a8 <ssd1963_init+0x6d8>)
8f0: 4b2e ldr r3, [pc, #184] ; (9ac <ssd1963_init+0x6dc>)
8f2: 4798 blx r3
8f4: 4b2a ldr r3, [pc, #168] ; (9a0 <ssd1963_init+0x6d0>)
8f6: 2240 movs r2, #64 ; 0x40
8f8: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
8fa: 615a str r2, [r3, #20]
if(cmd_mode != false) {
8fc: 4b27 ldr r3, [pc, #156] ; (99c <ssd1963_init+0x6cc>)
8fe: 781b ldrb r3, [r3, #0]
900: b12b cbz r3, 90e <ssd1963_init+0x63e>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
902: 2220 movs r2, #32
904: 4b26 ldr r3, [pc, #152] ; (9a0 <ssd1963_init+0x6d0>)
906: 619a str r2, [r3, #24]
cmd_mode = false;
908: 2200 movs r2, #0
90a: 4b24 ldr r3, [pc, #144] ; (99c <ssd1963_init+0x6cc>)
90c: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
90e: 221d movs r2, #29
910: 4924 ldr r1, [pc, #144] ; (9a4 <ssd1963_init+0x6d4>)
912: 4825 ldr r0, [pc, #148] ; (9a8 <ssd1963_init+0x6d8>)
914: 4b25 ldr r3, [pc, #148] ; (9ac <ssd1963_init+0x6dc>)
916: 4798 blx r3
918: 4b21 ldr r3, [pc, #132] ; (9a0 <ssd1963_init+0x6d0>)
91a: 2240 movs r2, #64 ; 0x40
91c: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
91e: 615a str r2, [r3, #20]
if(cmd_mode != false) {
920: 4b1e ldr r3, [pc, #120] ; (99c <ssd1963_init+0x6cc>)
922: 781b ldrb r3, [r3, #0]
924: b12b cbz r3, 932 <ssd1963_init+0x662>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
926: 2220 movs r2, #32
928: 4b1d ldr r3, [pc, #116] ; (9a0 <ssd1963_init+0x6d0>)
92a: 619a str r2, [r3, #24]
cmd_mode = false;
92c: 2200 movs r2, #0
92e: 4b1b ldr r3, [pc, #108] ; (99c <ssd1963_init+0x6cc>)
930: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
932: 2200 movs r2, #0
934: 491b ldr r1, [pc, #108] ; (9a4 <ssd1963_init+0x6d4>)
936: 481c ldr r0, [pc, #112] ; (9a8 <ssd1963_init+0x6d8>)
938: 4b1c ldr r3, [pc, #112] ; (9ac <ssd1963_init+0x6dc>)
93a: 4798 blx r3
93c: 4b18 ldr r3, [pc, #96] ; (9a0 <ssd1963_init+0x6d0>)
93e: 2240 movs r2, #64 ; 0x40
940: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
942: 615a str r2, [r3, #20]
if(cmd_mode != false) {
944: 4b15 ldr r3, [pc, #84] ; (99c <ssd1963_init+0x6cc>)
946: 781b ldrb r3, [r3, #0]
948: b12b cbz r3, 956 <ssd1963_init+0x686>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
94a: 2220 movs r2, #32
94c: 4b14 ldr r3, [pc, #80] ; (9a0 <ssd1963_init+0x6d0>)
94e: 619a str r2, [r3, #24]
cmd_mode = false;
950: 2200 movs r2, #0
952: 4b12 ldr r3, [pc, #72] ; (99c <ssd1963_init+0x6cc>)
954: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
956: 220c movs r2, #12
958: 4912 ldr r1, [pc, #72] ; (9a4 <ssd1963_init+0x6d4>)
95a: 4813 ldr r0, [pc, #76] ; (9a8 <ssd1963_init+0x6d8>)
95c: 4b13 ldr r3, [pc, #76] ; (9ac <ssd1963_init+0x6dc>)
95e: 4798 blx r3
960: 4b0f ldr r3, [pc, #60] ; (9a0 <ssd1963_init+0x6d0>)
962: 2240 movs r2, #64 ; 0x40
964: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
966: 615a str r2, [r3, #20]
if(cmd_mode != false) {
968: 4b0c ldr r3, [pc, #48] ; (99c <ssd1963_init+0x6cc>)
96a: 781b ldrb r3, [r3, #0]
96c: b12b cbz r3, 97a <ssd1963_init+0x6aa>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
96e: 2220 movs r2, #32
970: 4b0b ldr r3, [pc, #44] ; (9a0 <ssd1963_init+0x6d0>)
972: 619a str r2, [r3, #24]
cmd_mode = false;
974: 2200 movs r2, #0
976: 4b09 ldr r3, [pc, #36] ; (99c <ssd1963_init+0x6cc>)
978: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
97a: 2209 movs r2, #9
97c: 4909 ldr r1, [pc, #36] ; (9a4 <ssd1963_init+0x6d4>)
97e: 480a ldr r0, [pc, #40] ; (9a8 <ssd1963_init+0x6d8>)
980: 4b0a ldr r3, [pc, #40] ; (9ac <ssd1963_init+0x6dc>)
982: 4798 blx r3
984: 4b06 ldr r3, [pc, #24] ; (9a0 <ssd1963_init+0x6d0>)
986: 2240 movs r2, #64 ; 0x40
988: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
98a: 615a str r2, [r3, #20]
if(cmd_mode != false) {
98c: 4b03 ldr r3, [pc, #12] ; (99c <ssd1963_init+0x6cc>)
98e: 781b ldrb r3, [r3, #0]
990: b18b cbz r3, 9b6 <ssd1963_init+0x6e6>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
992: 2220 movs r2, #32
994: 4b02 ldr r3, [pc, #8] ; (9a0 <ssd1963_init+0x6d0>)
996: 619a str r2, [r3, #24]
998: e00a b.n 9b0 <ssd1963_init+0x6e0>
99a: bf00 nop
99c: 20000000 .word 0x20000000
9a0: 41008000 .word 0x41008000
9a4: 1c03c3f7 .word 0x1c03c3f7
9a8: 41008080 .word 0x41008080
9ac: 00001041 .word 0x00001041
cmd_mode = false;
9b0: 2200 movs r2, #0
9b2: 4b8b ldr r3, [pc, #556] ; (be0 <ssd1963_init+0x910>)
9b4: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
9b6: 2200 movs r2, #0
9b8: 498a ldr r1, [pc, #552] ; (be4 <ssd1963_init+0x914>)
9ba: 488b ldr r0, [pc, #556] ; (be8 <ssd1963_init+0x918>)
9bc: 4b8b ldr r3, [pc, #556] ; (bec <ssd1963_init+0x91c>)
9be: 4798 blx r3
9c0: 4b8b ldr r3, [pc, #556] ; (bf0 <ssd1963_init+0x920>)
9c2: 2240 movs r2, #64 ; 0x40
9c4: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
9c6: 615a str r2, [r3, #20]
if(cmd_mode != false) {
9c8: 4b85 ldr r3, [pc, #532] ; (be0 <ssd1963_init+0x910>)
9ca: 781b ldrb r3, [r3, #0]
9cc: b12b cbz r3, 9da <ssd1963_init+0x70a>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
9ce: 2220 movs r2, #32
9d0: 4b87 ldr r3, [pc, #540] ; (bf0 <ssd1963_init+0x920>)
9d2: 619a str r2, [r3, #24]
cmd_mode = false;
9d4: 2200 movs r2, #0
9d6: 4b82 ldr r3, [pc, #520] ; (be0 <ssd1963_init+0x910>)
9d8: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
9da: 2200 movs r2, #0
9dc: 4981 ldr r1, [pc, #516] ; (be4 <ssd1963_init+0x914>)
9de: 4882 ldr r0, [pc, #520] ; (be8 <ssd1963_init+0x918>)
9e0: 4b82 ldr r3, [pc, #520] ; (bec <ssd1963_init+0x91c>)
9e2: 4798 blx r3
9e4: 4b82 ldr r3, [pc, #520] ; (bf0 <ssd1963_init+0x920>)
9e6: 2240 movs r2, #64 ; 0x40
9e8: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
9ea: 615a str r2, [r3, #20]
if(cmd_mode == false) {
9ec: 4b7c ldr r3, [pc, #496] ; (be0 <ssd1963_init+0x910>)
9ee: 781b ldrb r3, [r3, #0]
9f0: b92b cbnz r3, 9fe <ssd1963_init+0x72e>
9f2: 2220 movs r2, #32
9f4: 4b7e ldr r3, [pc, #504] ; (bf0 <ssd1963_init+0x920>)
9f6: 615a str r2, [r3, #20]
cmd_mode = true;
9f8: 2201 movs r2, #1
9fa: 4b79 ldr r3, [pc, #484] ; (be0 <ssd1963_init+0x910>)
9fc: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(cmd);
9fe: 222a movs r2, #42 ; 0x2a
a00: 4978 ldr r1, [pc, #480] ; (be4 <ssd1963_init+0x914>)
a02: 4879 ldr r0, [pc, #484] ; (be8 <ssd1963_init+0x918>)
a04: 4b79 ldr r3, [pc, #484] ; (bec <ssd1963_init+0x91c>)
a06: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
a08: 4b79 ldr r3, [pc, #484] ; (bf0 <ssd1963_init+0x920>)
a0a: 2240 movs r2, #64 ; 0x40
a0c: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
a0e: 615a str r2, [r3, #20]
if(cmd_mode != false) {
a10: 4b73 ldr r3, [pc, #460] ; (be0 <ssd1963_init+0x910>)
a12: 781b ldrb r3, [r3, #0]
a14: b12b cbz r3, a22 <ssd1963_init+0x752>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
a16: 2220 movs r2, #32
a18: 4b75 ldr r3, [pc, #468] ; (bf0 <ssd1963_init+0x920>)
a1a: 619a str r2, [r3, #24]
cmd_mode = false;
a1c: 2200 movs r2, #0
a1e: 4b70 ldr r3, [pc, #448] ; (be0 <ssd1963_init+0x910>)
a20: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
a22: 2200 movs r2, #0
a24: 496f ldr r1, [pc, #444] ; (be4 <ssd1963_init+0x914>)
a26: 4870 ldr r0, [pc, #448] ; (be8 <ssd1963_init+0x918>)
a28: 4b70 ldr r3, [pc, #448] ; (bec <ssd1963_init+0x91c>)
a2a: 4798 blx r3
a2c: 4b70 ldr r3, [pc, #448] ; (bf0 <ssd1963_init+0x920>)
a2e: 2240 movs r2, #64 ; 0x40
a30: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
a32: 615a str r2, [r3, #20]
if(cmd_mode != false) {
a34: 4b6a ldr r3, [pc, #424] ; (be0 <ssd1963_init+0x910>)
a36: 781b ldrb r3, [r3, #0]
a38: b12b cbz r3, a46 <ssd1963_init+0x776>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
a3a: 2220 movs r2, #32
a3c: 4b6c ldr r3, [pc, #432] ; (bf0 <ssd1963_init+0x920>)
a3e: 619a str r2, [r3, #24]
cmd_mode = false;
a40: 2200 movs r2, #0
a42: 4b67 ldr r3, [pc, #412] ; (be0 <ssd1963_init+0x910>)
a44: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
a46: 2200 movs r2, #0
a48: 4966 ldr r1, [pc, #408] ; (be4 <ssd1963_init+0x914>)
a4a: 4867 ldr r0, [pc, #412] ; (be8 <ssd1963_init+0x918>)
a4c: 4b67 ldr r3, [pc, #412] ; (bec <ssd1963_init+0x91c>)
a4e: 4798 blx r3
a50: 4b67 ldr r3, [pc, #412] ; (bf0 <ssd1963_init+0x920>)
a52: 2240 movs r2, #64 ; 0x40
a54: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
a56: 615a str r2, [r3, #20]
if(cmd_mode != false) {
a58: 4b61 ldr r3, [pc, #388] ; (be0 <ssd1963_init+0x910>)
a5a: 781b ldrb r3, [r3, #0]
a5c: b12b cbz r3, a6a <ssd1963_init+0x79a>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
a5e: 2220 movs r2, #32
a60: 4b63 ldr r3, [pc, #396] ; (bf0 <ssd1963_init+0x920>)
a62: 619a str r2, [r3, #24]
cmd_mode = false;
a64: 2200 movs r2, #0
a66: 4b5e ldr r3, [pc, #376] ; (be0 <ssd1963_init+0x910>)
a68: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
a6a: 2201 movs r2, #1
a6c: 495d ldr r1, [pc, #372] ; (be4 <ssd1963_init+0x914>)
a6e: 485e ldr r0, [pc, #376] ; (be8 <ssd1963_init+0x918>)
a70: 4b5e ldr r3, [pc, #376] ; (bec <ssd1963_init+0x91c>)
a72: 4798 blx r3
a74: 4b5e ldr r3, [pc, #376] ; (bf0 <ssd1963_init+0x920>)
a76: 2240 movs r2, #64 ; 0x40
a78: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
a7a: 615a str r2, [r3, #20]
if(cmd_mode != false) {
a7c: 4b58 ldr r3, [pc, #352] ; (be0 <ssd1963_init+0x910>)
a7e: 781b ldrb r3, [r3, #0]
a80: b12b cbz r3, a8e <ssd1963_init+0x7be>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
a82: 2220 movs r2, #32
a84: 4b5a ldr r3, [pc, #360] ; (bf0 <ssd1963_init+0x920>)
a86: 619a str r2, [r3, #24]
cmd_mode = false;
a88: 2200 movs r2, #0
a8a: 4b55 ldr r3, [pc, #340] ; (be0 <ssd1963_init+0x910>)
a8c: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
a8e: 22df movs r2, #223 ; 0xdf
a90: 4954 ldr r1, [pc, #336] ; (be4 <ssd1963_init+0x914>)
a92: 4855 ldr r0, [pc, #340] ; (be8 <ssd1963_init+0x918>)
a94: 4b55 ldr r3, [pc, #340] ; (bec <ssd1963_init+0x91c>)
a96: 4798 blx r3
a98: 4b55 ldr r3, [pc, #340] ; (bf0 <ssd1963_init+0x920>)
a9a: 2240 movs r2, #64 ; 0x40
a9c: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
a9e: 615a str r2, [r3, #20]
if(cmd_mode == false) {
aa0: 4b4f ldr r3, [pc, #316] ; (be0 <ssd1963_init+0x910>)
aa2: 781b ldrb r3, [r3, #0]
aa4: b92b cbnz r3, ab2 <ssd1963_init+0x7e2>
aa6: 2220 movs r2, #32
aa8: 4b51 ldr r3, [pc, #324] ; (bf0 <ssd1963_init+0x920>)
aaa: 615a str r2, [r3, #20]
cmd_mode = true;
aac: 2201 movs r2, #1
aae: 4b4c ldr r3, [pc, #304] ; (be0 <ssd1963_init+0x910>)
ab0: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(cmd);
ab2: 222b movs r2, #43 ; 0x2b
ab4: 494b ldr r1, [pc, #300] ; (be4 <ssd1963_init+0x914>)
ab6: 484c ldr r0, [pc, #304] ; (be8 <ssd1963_init+0x918>)
ab8: 4b4c ldr r3, [pc, #304] ; (bec <ssd1963_init+0x91c>)
aba: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
abc: 4b4c ldr r3, [pc, #304] ; (bf0 <ssd1963_init+0x920>)
abe: 2240 movs r2, #64 ; 0x40
ac0: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
ac2: 615a str r2, [r3, #20]
if(cmd_mode != false) {
ac4: 4b46 ldr r3, [pc, #280] ; (be0 <ssd1963_init+0x910>)
ac6: 781b ldrb r3, [r3, #0]
ac8: b12b cbz r3, ad6 <ssd1963_init+0x806>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
aca: 2220 movs r2, #32
acc: 4b48 ldr r3, [pc, #288] ; (bf0 <ssd1963_init+0x920>)
ace: 619a str r2, [r3, #24]
cmd_mode = false;
ad0: 2200 movs r2, #0
ad2: 4b43 ldr r3, [pc, #268] ; (be0 <ssd1963_init+0x910>)
ad4: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
ad6: 2200 movs r2, #0
ad8: 4942 ldr r1, [pc, #264] ; (be4 <ssd1963_init+0x914>)
ada: 4843 ldr r0, [pc, #268] ; (be8 <ssd1963_init+0x918>)
adc: 4b43 ldr r3, [pc, #268] ; (bec <ssd1963_init+0x91c>)
ade: 4798 blx r3
ae0: 4b43 ldr r3, [pc, #268] ; (bf0 <ssd1963_init+0x920>)
ae2: 2240 movs r2, #64 ; 0x40
ae4: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
ae6: 615a str r2, [r3, #20]
if(cmd_mode != false) {
ae8: 4b3d ldr r3, [pc, #244] ; (be0 <ssd1963_init+0x910>)
aea: 781b ldrb r3, [r3, #0]
aec: b12b cbz r3, afa <ssd1963_init+0x82a>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
aee: 2220 movs r2, #32
af0: 4b3f ldr r3, [pc, #252] ; (bf0 <ssd1963_init+0x920>)
af2: 619a str r2, [r3, #24]
cmd_mode = false;
af4: 2200 movs r2, #0
af6: 4b3a ldr r3, [pc, #232] ; (be0 <ssd1963_init+0x910>)
af8: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
afa: 2200 movs r2, #0
afc: 4939 ldr r1, [pc, #228] ; (be4 <ssd1963_init+0x914>)
afe: 483a ldr r0, [pc, #232] ; (be8 <ssd1963_init+0x918>)
b00: 4b3a ldr r3, [pc, #232] ; (bec <ssd1963_init+0x91c>)
b02: 4798 blx r3
b04: 4b3a ldr r3, [pc, #232] ; (bf0 <ssd1963_init+0x920>)
b06: 2240 movs r2, #64 ; 0x40
b08: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
b0a: 615a str r2, [r3, #20]
if(cmd_mode != false) {
b0c: 4b34 ldr r3, [pc, #208] ; (be0 <ssd1963_init+0x910>)
b0e: 781b ldrb r3, [r3, #0]
b10: b12b cbz r3, b1e <ssd1963_init+0x84e>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
b12: 2220 movs r2, #32
b14: 4b36 ldr r3, [pc, #216] ; (bf0 <ssd1963_init+0x920>)
b16: 619a str r2, [r3, #24]
cmd_mode = false;
b18: 2200 movs r2, #0
b1a: 4b31 ldr r3, [pc, #196] ; (be0 <ssd1963_init+0x910>)
b1c: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
b1e: 2201 movs r2, #1
b20: 4930 ldr r1, [pc, #192] ; (be4 <ssd1963_init+0x914>)
b22: 4831 ldr r0, [pc, #196] ; (be8 <ssd1963_init+0x918>)
b24: 4b31 ldr r3, [pc, #196] ; (bec <ssd1963_init+0x91c>)
b26: 4798 blx r3
b28: 4b31 ldr r3, [pc, #196] ; (bf0 <ssd1963_init+0x920>)
b2a: 2240 movs r2, #64 ; 0x40
b2c: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
b2e: 615a str r2, [r3, #20]
if(cmd_mode != false) {
b30: 4b2b ldr r3, [pc, #172] ; (be0 <ssd1963_init+0x910>)
b32: 781b ldrb r3, [r3, #0]
b34: b12b cbz r3, b42 <ssd1963_init+0x872>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
b36: 2220 movs r2, #32
b38: 4b2d ldr r3, [pc, #180] ; (bf0 <ssd1963_init+0x920>)
b3a: 619a str r2, [r3, #24]
cmd_mode = false;
b3c: 2200 movs r2, #0
b3e: 4b28 ldr r3, [pc, #160] ; (be0 <ssd1963_init+0x910>)
b40: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
b42: 220f movs r2, #15
b44: 4927 ldr r1, [pc, #156] ; (be4 <ssd1963_init+0x914>)
b46: 4828 ldr r0, [pc, #160] ; (be8 <ssd1963_init+0x918>)
b48: 4b28 ldr r3, [pc, #160] ; (bec <ssd1963_init+0x91c>)
b4a: 4798 blx r3
b4c: 4b28 ldr r3, [pc, #160] ; (bf0 <ssd1963_init+0x920>)
b4e: 2240 movs r2, #64 ; 0x40
b50: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
b52: 615a str r2, [r3, #20]
if(cmd_mode == false) {
b54: 4b22 ldr r3, [pc, #136] ; (be0 <ssd1963_init+0x910>)
b56: 781b ldrb r3, [r3, #0]
b58: b92b cbnz r3, b66 <ssd1963_init+0x896>
b5a: 2220 movs r2, #32
b5c: 4b24 ldr r3, [pc, #144] ; (bf0 <ssd1963_init+0x920>)
b5e: 615a str r2, [r3, #20]
cmd_mode = true;
b60: 2201 movs r2, #1
b62: 4b1f ldr r3, [pc, #124] ; (be0 <ssd1963_init+0x910>)
b64: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(cmd);
b66: 2229 movs r2, #41 ; 0x29
b68: 491e ldr r1, [pc, #120] ; (be4 <ssd1963_init+0x914>)
b6a: 481f ldr r0, [pc, #124] ; (be8 <ssd1963_init+0x918>)
b6c: 4b1f ldr r3, [pc, #124] ; (bec <ssd1963_init+0x91c>)
b6e: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
b70: 4b1f ldr r3, [pc, #124] ; (bf0 <ssd1963_init+0x920>)
b72: 2240 movs r2, #64 ; 0x40
b74: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
b76: 615a str r2, [r3, #20]
if(cmd_mode == false) {
b78: 4b19 ldr r3, [pc, #100] ; (be0 <ssd1963_init+0x910>)
b7a: 781b ldrb r3, [r3, #0]
b7c: b92b cbnz r3, b8a <ssd1963_init+0x8ba>
b7e: 2220 movs r2, #32
b80: 4b1b ldr r3, [pc, #108] ; (bf0 <ssd1963_init+0x920>)
b82: 615a str r2, [r3, #20]
cmd_mode = true;
b84: 2201 movs r2, #1
b86: 4b16 ldr r3, [pc, #88] ; (be0 <ssd1963_init+0x910>)
b88: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(cmd);
b8a: 22be movs r2, #190 ; 0xbe
b8c: 4915 ldr r1, [pc, #84] ; (be4 <ssd1963_init+0x914>)
b8e: 4816 ldr r0, [pc, #88] ; (be8 <ssd1963_init+0x918>)
b90: 4b16 ldr r3, [pc, #88] ; (bec <ssd1963_init+0x91c>)
b92: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
b94: 4b16 ldr r3, [pc, #88] ; (bf0 <ssd1963_init+0x920>)
b96: 2240 movs r2, #64 ; 0x40
b98: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
b9a: 615a str r2, [r3, #20]
if(cmd_mode != false) {
b9c: 4b10 ldr r3, [pc, #64] ; (be0 <ssd1963_init+0x910>)
b9e: 781b ldrb r3, [r3, #0]
ba0: b12b cbz r3, bae <ssd1963_init+0x8de>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
ba2: 2220 movs r2, #32
ba4: 4b12 ldr r3, [pc, #72] ; (bf0 <ssd1963_init+0x920>)
ba6: 619a str r2, [r3, #24]
cmd_mode = false;
ba8: 2200 movs r2, #0
baa: 4b0d ldr r3, [pc, #52] ; (be0 <ssd1963_init+0x910>)
bac: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
bae: 2206 movs r2, #6
bb0: 490c ldr r1, [pc, #48] ; (be4 <ssd1963_init+0x914>)
bb2: 480d ldr r0, [pc, #52] ; (be8 <ssd1963_init+0x918>)
bb4: 4b0d ldr r3, [pc, #52] ; (bec <ssd1963_init+0x91c>)
bb6: 4798 blx r3
bb8: 4b0d ldr r3, [pc, #52] ; (bf0 <ssd1963_init+0x920>)
bba: 2240 movs r2, #64 ; 0x40
bbc: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
bbe: 615a str r2, [r3, #20]
if(cmd_mode != false) {
bc0: 4b07 ldr r3, [pc, #28] ; (be0 <ssd1963_init+0x910>)
bc2: 781b ldrb r3, [r3, #0]
bc4: b12b cbz r3, bd2 <ssd1963_init+0x902>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
bc6: 2220 movs r2, #32
bc8: 4b09 ldr r3, [pc, #36] ; (bf0 <ssd1963_init+0x920>)
bca: 619a str r2, [r3, #24]
cmd_mode = false;
bcc: 2200 movs r2, #0
bce: 4b04 ldr r3, [pc, #16] ; (be0 <ssd1963_init+0x910>)
bd0: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
bd2: 22ff movs r2, #255 ; 0xff
bd4: 4903 ldr r1, [pc, #12] ; (be4 <ssd1963_init+0x914>)
bd6: 4804 ldr r0, [pc, #16] ; (be8 <ssd1963_init+0x918>)
bd8: 4b04 ldr r3, [pc, #16] ; (bec <ssd1963_init+0x91c>)
bda: 4798 blx r3
bdc: e00a b.n bf4 <ssd1963_init+0x924>
bde: bf00 nop
be0: 20000000 .word 0x20000000
be4: 1c03c3f7 .word 0x1c03c3f7
be8: 41008080 .word 0x41008080
bec: 00001041 .word 0x00001041
bf0: 41008000 .word 0x41008000
bf4: 4b26 ldr r3, [pc, #152] ; (c90 <ssd1963_init+0x9c0>)
bf6: 2240 movs r2, #64 ; 0x40
bf8: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
bfa: 615a str r2, [r3, #20]
if(cmd_mode != false) {
bfc: 4b25 ldr r3, [pc, #148] ; (c94 <ssd1963_init+0x9c4>)
bfe: 781b ldrb r3, [r3, #0]
c00: b12b cbz r3, c0e <ssd1963_init+0x93e>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
c02: 2220 movs r2, #32
c04: 4b22 ldr r3, [pc, #136] ; (c90 <ssd1963_init+0x9c0>)
c06: 619a str r2, [r3, #24]
cmd_mode = false;
c08: 2200 movs r2, #0
c0a: 4b22 ldr r3, [pc, #136] ; (c94 <ssd1963_init+0x9c4>)
c0c: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
c0e: 2201 movs r2, #1
c10: 4921 ldr r1, [pc, #132] ; (c98 <ssd1963_init+0x9c8>)
c12: 4822 ldr r0, [pc, #136] ; (c9c <ssd1963_init+0x9cc>)
c14: 4b22 ldr r3, [pc, #136] ; (ca0 <ssd1963_init+0x9d0>)
c16: 4798 blx r3
c18: 4b1d ldr r3, [pc, #116] ; (c90 <ssd1963_init+0x9c0>)
c1a: 2240 movs r2, #64 ; 0x40
c1c: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
c1e: 615a str r2, [r3, #20]
if(cmd_mode != false) {
c20: 4b1c ldr r3, [pc, #112] ; (c94 <ssd1963_init+0x9c4>)
c22: 781b ldrb r3, [r3, #0]
c24: b12b cbz r3, c32 <ssd1963_init+0x962>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
c26: 2220 movs r2, #32
c28: 4b19 ldr r3, [pc, #100] ; (c90 <ssd1963_init+0x9c0>)
c2a: 619a str r2, [r3, #24]
cmd_mode = false;
c2c: 2200 movs r2, #0
c2e: 4b19 ldr r3, [pc, #100] ; (c94 <ssd1963_init+0x9c4>)
c30: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
c32: 22ff movs r2, #255 ; 0xff
c34: 4918 ldr r1, [pc, #96] ; (c98 <ssd1963_init+0x9c8>)
c36: 4819 ldr r0, [pc, #100] ; (c9c <ssd1963_init+0x9cc>)
c38: 4b19 ldr r3, [pc, #100] ; (ca0 <ssd1963_init+0x9d0>)
c3a: 4798 blx r3
c3c: 4b14 ldr r3, [pc, #80] ; (c90 <ssd1963_init+0x9c0>)
c3e: 2240 movs r2, #64 ; 0x40
c40: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
c42: 615a str r2, [r3, #20]
if(cmd_mode != false) {
c44: 4b13 ldr r3, [pc, #76] ; (c94 <ssd1963_init+0x9c4>)
c46: 781b ldrb r3, [r3, #0]
c48: b12b cbz r3, c56 <ssd1963_init+0x986>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
c4a: 2220 movs r2, #32
c4c: 4b10 ldr r3, [pc, #64] ; (c90 <ssd1963_init+0x9c0>)
c4e: 619a str r2, [r3, #24]
cmd_mode = false;
c50: 2200 movs r2, #0
c52: 4b10 ldr r3, [pc, #64] ; (c94 <ssd1963_init+0x9c4>)
c54: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
c56: 2200 movs r2, #0
c58: 490f ldr r1, [pc, #60] ; (c98 <ssd1963_init+0x9c8>)
c5a: 4810 ldr r0, [pc, #64] ; (c9c <ssd1963_init+0x9cc>)
c5c: 4b10 ldr r3, [pc, #64] ; (ca0 <ssd1963_init+0x9d0>)
c5e: 4798 blx r3
c60: 4b0b ldr r3, [pc, #44] ; (c90 <ssd1963_init+0x9c0>)
c62: 2240 movs r2, #64 ; 0x40
c64: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
c66: 615a str r2, [r3, #20]
if(cmd_mode != false) {
c68: 4b0a ldr r3, [pc, #40] ; (c94 <ssd1963_init+0x9c4>)
c6a: 781b ldrb r3, [r3, #0]
c6c: b12b cbz r3, c7a <ssd1963_init+0x9aa>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
c6e: 2220 movs r2, #32
c70: 4b07 ldr r3, [pc, #28] ; (c90 <ssd1963_init+0x9c0>)
c72: 619a str r2, [r3, #24]
cmd_mode = false;
c74: 2200 movs r2, #0
c76: 4b07 ldr r3, [pc, #28] ; (c94 <ssd1963_init+0x9c4>)
c78: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
c7a: 2201 movs r2, #1
c7c: 4906 ldr r1, [pc, #24] ; (c98 <ssd1963_init+0x9c8>)
c7e: 4807 ldr r0, [pc, #28] ; (c9c <ssd1963_init+0x9cc>)
c80: 4b07 ldr r3, [pc, #28] ; (ca0 <ssd1963_init+0x9d0>)
c82: 4798 blx r3
c84: 4b02 ldr r3, [pc, #8] ; (c90 <ssd1963_init+0x9c0>)
c86: 2240 movs r2, #64 ; 0x40
c88: 619a str r2, [r3, #24]
c8a: 619a str r2, [r3, #24]
c8c: bd70 pop {r4, r5, r6, pc}
c8e: bf00 nop
c90: 41008000 .word 0x41008000
c94: 20000000 .word 0x20000000
c98: 1c03c3f7 .word 0x1c03c3f7
c9c: 41008080 .word 0x41008080
ca0: 00001041 .word 0x00001041
00000ca4 <ssd1963_flush>:
{
ca4: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
if(area->x2 < 0) return;
ca8: f9b1 3004 ldrsh.w r3, [r1, #4]
cac: 2b00 cmp r3, #0
cae: db0f blt.n cd0 <ssd1963_flush+0x2c>
cb0: 4681 mov r9, r0
cb2: 468a mov sl, r1
cb4: 4615 mov r5, r2
if(area->y2 < 0) return;
cb6: f9b1 3006 ldrsh.w r3, [r1, #6]
cba: 2b00 cmp r3, #0
cbc: db08 blt.n cd0 <ssd1963_flush+0x2c>
if(area->x1 > SSD1963_HOR_RES - 1) return;
cbe: f9b1 4000 ldrsh.w r4, [r1]
cc2: 4b04 ldr r3, [pc, #16] ; (cd4 <ssd1963_flush+0x30>)
cc4: 4798 blx r3
cc6: 4b04 ldr r3, [pc, #16] ; (cd8 <ssd1963_flush+0x34>)
cc8: 4798 blx r3
cca: 3801 subs r0, #1
ccc: 4284 cmp r4, r0
cce: dd05 ble.n cdc <ssd1963_flush+0x38>
cd0: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
cd4: 00010ee1 .word 0x00010ee1
cd8: 00010eed .word 0x00010eed
if(area->y1 > SSD1963_VER_RES - 1) return;
cdc: f9ba 4002 ldrsh.w r4, [sl, #2]
ce0: 4b94 ldr r3, [pc, #592] ; (f34 <ssd1963_flush+0x290>)
ce2: 4798 blx r3
ce4: 4b94 ldr r3, [pc, #592] ; (f38 <ssd1963_flush+0x294>)
ce6: 4798 blx r3
ce8: 3801 subs r0, #1
cea: 4284 cmp r4, r0
cec: dcf0 bgt.n cd0 <ssd1963_flush+0x2c>
int32_t act_x1 = area->x1 < 0 ? 0 : area->x1;
cee: f9ba 6000 ldrsh.w r6, [sl]
cf2: ea26 76e6 bic.w r6, r6, r6, asr #31
int32_t act_y1 = area->y1 < 0 ? 0 : area->y1;
cf6: f9ba 4002 ldrsh.w r4, [sl, #2]
cfa: ea24 74e4 bic.w r4, r4, r4, asr #31
cfe: 46a3 mov fp, r4
int32_t act_x2 = area->x2 > SSD1963_HOR_RES - 1 ? SSD1963_HOR_RES - 1 : area->x2;
d00: f9ba 7004 ldrsh.w r7, [sl, #4]
d04: 4b8b ldr r3, [pc, #556] ; (f34 <ssd1963_flush+0x290>)
d06: 4798 blx r3
d08: 4b8c ldr r3, [pc, #560] ; (f3c <ssd1963_flush+0x298>)
d0a: 4798 blx r3
d0c: 3801 subs r0, #1
d0e: 4287 cmp r7, r0
d10: f300 810a bgt.w f28 <ssd1963_flush+0x284>
d14: f9ba 7004 ldrsh.w r7, [sl, #4]
int32_t act_y2 = area->y2 > SSD1963_VER_RES - 1 ? SSD1963_VER_RES - 1 : area->y2;
d18: f9ba 8006 ldrsh.w r8, [sl, #6]
d1c: 4b85 ldr r3, [pc, #532] ; (f34 <ssd1963_flush+0x290>)
d1e: 4798 blx r3
d20: 4b85 ldr r3, [pc, #532] ; (f38 <ssd1963_flush+0x294>)
d22: 4798 blx r3
d24: 3801 subs r0, #1
d26: 4580 cmp r8, r0
d28: f300 8118 bgt.w f5c <ssd1963_flush+0x2b8>
d2c: f9ba 8006 ldrsh.w r8, [sl, #6]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
d30: 2240 movs r2, #64 ; 0x40
d32: 4b83 ldr r3, [pc, #524] ; (f40 <ssd1963_flush+0x29c>)
d34: 615a str r2, [r3, #20]
if(cmd_mode == false) {
d36: 4b83 ldr r3, [pc, #524] ; (f44 <ssd1963_flush+0x2a0>)
d38: 781b ldrb r3, [r3, #0]
d3a: b92b cbnz r3, d48 <ssd1963_flush+0xa4>
d3c: 2220 movs r2, #32
d3e: 4b80 ldr r3, [pc, #512] ; (f40 <ssd1963_flush+0x29c>)
d40: 615a str r2, [r3, #20]
cmd_mode = true;
d42: 2201 movs r2, #1
d44: 4b7f ldr r3, [pc, #508] ; (f44 <ssd1963_flush+0x2a0>)
d46: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(cmd);
d48: 222a movs r2, #42 ; 0x2a
d4a: 497f ldr r1, [pc, #508] ; (f48 <ssd1963_flush+0x2a4>)
d4c: 487f ldr r0, [pc, #508] ; (f4c <ssd1963_flush+0x2a8>)
d4e: 4b80 ldr r3, [pc, #512] ; (f50 <ssd1963_flush+0x2ac>)
d50: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
d52: 4b7b ldr r3, [pc, #492] ; (f40 <ssd1963_flush+0x29c>)
d54: 2140 movs r1, #64 ; 0x40
d56: 6199 str r1, [r3, #24]
ssd1963_data(act_x1 >> 8);
d58: f3c6 2207 ubfx r2, r6, #8, #8
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
d5c: 6159 str r1, [r3, #20]
if(cmd_mode != false) {
d5e: 4b79 ldr r3, [pc, #484] ; (f44 <ssd1963_flush+0x2a0>)
d60: 781b ldrb r3, [r3, #0]
d62: b12b cbz r3, d70 <ssd1963_flush+0xcc>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
d64: 2120 movs r1, #32
d66: 4b76 ldr r3, [pc, #472] ; (f40 <ssd1963_flush+0x29c>)
d68: 6199 str r1, [r3, #24]
cmd_mode = false;
d6a: 2100 movs r1, #0
d6c: 4b75 ldr r3, [pc, #468] ; (f44 <ssd1963_flush+0x2a0>)
d6e: 7019 strb r1, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
d70: 4975 ldr r1, [pc, #468] ; (f48 <ssd1963_flush+0x2a4>)
d72: 4876 ldr r0, [pc, #472] ; (f4c <ssd1963_flush+0x2a8>)
d74: 4b76 ldr r3, [pc, #472] ; (f50 <ssd1963_flush+0x2ac>)
d76: 4798 blx r3
d78: 4b71 ldr r3, [pc, #452] ; (f40 <ssd1963_flush+0x29c>)
d7a: 2240 movs r2, #64 ; 0x40
d7c: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
d7e: 615a str r2, [r3, #20]
if(cmd_mode != false) {
d80: 4b70 ldr r3, [pc, #448] ; (f44 <ssd1963_flush+0x2a0>)
d82: 781b ldrb r3, [r3, #0]
d84: b12b cbz r3, d92 <ssd1963_flush+0xee>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
d86: 2220 movs r2, #32
d88: 4b6d ldr r3, [pc, #436] ; (f40 <ssd1963_flush+0x29c>)
d8a: 619a str r2, [r3, #24]
cmd_mode = false;
d8c: 2200 movs r2, #0
d8e: 4b6d ldr r3, [pc, #436] ; (f44 <ssd1963_flush+0x2a0>)
d90: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
d92: b2f2 uxtb r2, r6
d94: 496c ldr r1, [pc, #432] ; (f48 <ssd1963_flush+0x2a4>)
d96: 486d ldr r0, [pc, #436] ; (f4c <ssd1963_flush+0x2a8>)
d98: 4b6d ldr r3, [pc, #436] ; (f50 <ssd1963_flush+0x2ac>)
d9a: 4798 blx r3
d9c: 4b68 ldr r3, [pc, #416] ; (f40 <ssd1963_flush+0x29c>)
d9e: 2140 movs r1, #64 ; 0x40
da0: 6199 str r1, [r3, #24]
ssd1963_data(act_x2 >> 8);
da2: f3c7 2207 ubfx r2, r7, #8, #8
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
da6: 6159 str r1, [r3, #20]
if(cmd_mode != false) {
da8: 4b66 ldr r3, [pc, #408] ; (f44 <ssd1963_flush+0x2a0>)
daa: 781b ldrb r3, [r3, #0]
dac: b12b cbz r3, dba <ssd1963_flush+0x116>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
dae: 2120 movs r1, #32
db0: 4b63 ldr r3, [pc, #396] ; (f40 <ssd1963_flush+0x29c>)
db2: 6199 str r1, [r3, #24]
cmd_mode = false;
db4: 2100 movs r1, #0
db6: 4b63 ldr r3, [pc, #396] ; (f44 <ssd1963_flush+0x2a0>)
db8: 7019 strb r1, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
dba: 4963 ldr r1, [pc, #396] ; (f48 <ssd1963_flush+0x2a4>)
dbc: 4863 ldr r0, [pc, #396] ; (f4c <ssd1963_flush+0x2a8>)
dbe: 4b64 ldr r3, [pc, #400] ; (f50 <ssd1963_flush+0x2ac>)
dc0: 4798 blx r3
dc2: 4b5f ldr r3, [pc, #380] ; (f40 <ssd1963_flush+0x29c>)
dc4: 2140 movs r1, #64 ; 0x40
dc6: 6199 str r1, [r3, #24]
ssd1963_data(0x00FF & act_x2);
dc8: b2fa uxtb r2, r7
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
dca: 6159 str r1, [r3, #20]
if(cmd_mode != false) {
dcc: 4b5d ldr r3, [pc, #372] ; (f44 <ssd1963_flush+0x2a0>)
dce: 781b ldrb r3, [r3, #0]
dd0: b12b cbz r3, dde <ssd1963_flush+0x13a>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
dd2: 2120 movs r1, #32
dd4: 4b5a ldr r3, [pc, #360] ; (f40 <ssd1963_flush+0x29c>)
dd6: 6199 str r1, [r3, #24]
cmd_mode = false;
dd8: 2100 movs r1, #0
dda: 4b5a ldr r3, [pc, #360] ; (f44 <ssd1963_flush+0x2a0>)
ddc: 7019 strb r1, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
dde: 495a ldr r1, [pc, #360] ; (f48 <ssd1963_flush+0x2a4>)
de0: 485a ldr r0, [pc, #360] ; (f4c <ssd1963_flush+0x2a8>)
de2: 4b5b ldr r3, [pc, #364] ; (f50 <ssd1963_flush+0x2ac>)
de4: 4798 blx r3
de6: 4b56 ldr r3, [pc, #344] ; (f40 <ssd1963_flush+0x29c>)
de8: 2240 movs r2, #64 ; 0x40
dea: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
dec: 615a str r2, [r3, #20]
if(cmd_mode == false) {
dee: 4b55 ldr r3, [pc, #340] ; (f44 <ssd1963_flush+0x2a0>)
df0: 781b ldrb r3, [r3, #0]
df2: b92b cbnz r3, e00 <ssd1963_flush+0x15c>
df4: 2220 movs r2, #32
df6: 4b52 ldr r3, [pc, #328] ; (f40 <ssd1963_flush+0x29c>)
df8: 615a str r2, [r3, #20]
cmd_mode = true;
dfa: 2201 movs r2, #1
dfc: 4b51 ldr r3, [pc, #324] ; (f44 <ssd1963_flush+0x2a0>)
dfe: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(cmd);
e00: 222b movs r2, #43 ; 0x2b
e02: 4951 ldr r1, [pc, #324] ; (f48 <ssd1963_flush+0x2a4>)
e04: 4851 ldr r0, [pc, #324] ; (f4c <ssd1963_flush+0x2a8>)
e06: 4b52 ldr r3, [pc, #328] ; (f50 <ssd1963_flush+0x2ac>)
e08: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
e0a: 4b4d ldr r3, [pc, #308] ; (f40 <ssd1963_flush+0x29c>)
e0c: 2140 movs r1, #64 ; 0x40
e0e: 6199 str r1, [r3, #24]
ssd1963_data(act_y1 >> 8);
e10: f3cb 2207 ubfx r2, fp, #8, #8
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
e14: 6159 str r1, [r3, #20]
if(cmd_mode != false) {
e16: 4b4b ldr r3, [pc, #300] ; (f44 <ssd1963_flush+0x2a0>)
e18: 781b ldrb r3, [r3, #0]
e1a: b12b cbz r3, e28 <ssd1963_flush+0x184>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
e1c: 2120 movs r1, #32
e1e: 4b48 ldr r3, [pc, #288] ; (f40 <ssd1963_flush+0x29c>)
e20: 6199 str r1, [r3, #24]
cmd_mode = false;
e22: 2100 movs r1, #0
e24: 4b47 ldr r3, [pc, #284] ; (f44 <ssd1963_flush+0x2a0>)
e26: 7019 strb r1, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
e28: 4947 ldr r1, [pc, #284] ; (f48 <ssd1963_flush+0x2a4>)
e2a: 4848 ldr r0, [pc, #288] ; (f4c <ssd1963_flush+0x2a8>)
e2c: 4b48 ldr r3, [pc, #288] ; (f50 <ssd1963_flush+0x2ac>)
e2e: 4798 blx r3
e30: 4b43 ldr r3, [pc, #268] ; (f40 <ssd1963_flush+0x29c>)
e32: 2240 movs r2, #64 ; 0x40
e34: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
e36: 615a str r2, [r3, #20]
if(cmd_mode != false) {
e38: 4b42 ldr r3, [pc, #264] ; (f44 <ssd1963_flush+0x2a0>)
e3a: 781b ldrb r3, [r3, #0]
e3c: b12b cbz r3, e4a <ssd1963_flush+0x1a6>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
e3e: 2220 movs r2, #32
e40: 4b3f ldr r3, [pc, #252] ; (f40 <ssd1963_flush+0x29c>)
e42: 619a str r2, [r3, #24]
cmd_mode = false;
e44: 2200 movs r2, #0
e46: 4b3f ldr r3, [pc, #252] ; (f44 <ssd1963_flush+0x2a0>)
e48: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
e4a: b2e2 uxtb r2, r4
e4c: 493e ldr r1, [pc, #248] ; (f48 <ssd1963_flush+0x2a4>)
e4e: 483f ldr r0, [pc, #252] ; (f4c <ssd1963_flush+0x2a8>)
e50: 4b3f ldr r3, [pc, #252] ; (f50 <ssd1963_flush+0x2ac>)
e52: 4798 blx r3
e54: 4b3a ldr r3, [pc, #232] ; (f40 <ssd1963_flush+0x29c>)
e56: 2140 movs r1, #64 ; 0x40
e58: 6199 str r1, [r3, #24]
ssd1963_data(act_y2 >> 8);
e5a: f3c8 2207 ubfx r2, r8, #8, #8
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
e5e: 6159 str r1, [r3, #20]
if(cmd_mode != false) {
e60: 4b38 ldr r3, [pc, #224] ; (f44 <ssd1963_flush+0x2a0>)
e62: 781b ldrb r3, [r3, #0]
e64: b12b cbz r3, e72 <ssd1963_flush+0x1ce>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
e66: 2120 movs r1, #32
e68: 4b35 ldr r3, [pc, #212] ; (f40 <ssd1963_flush+0x29c>)
e6a: 6199 str r1, [r3, #24]
cmd_mode = false;
e6c: 2100 movs r1, #0
e6e: 4b35 ldr r3, [pc, #212] ; (f44 <ssd1963_flush+0x2a0>)
e70: 7019 strb r1, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
e72: 4935 ldr r1, [pc, #212] ; (f48 <ssd1963_flush+0x2a4>)
e74: 4835 ldr r0, [pc, #212] ; (f4c <ssd1963_flush+0x2a8>)
e76: 4b36 ldr r3, [pc, #216] ; (f50 <ssd1963_flush+0x2ac>)
e78: 4798 blx r3
e7a: 4b31 ldr r3, [pc, #196] ; (f40 <ssd1963_flush+0x29c>)
e7c: 2140 movs r1, #64 ; 0x40
e7e: 6199 str r1, [r3, #24]
ssd1963_data(0x00FF & act_y2);
e80: fa5f f288 uxtb.w r2, r8
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
e84: 6159 str r1, [r3, #20]
if(cmd_mode != false) {
e86: 4b2f ldr r3, [pc, #188] ; (f44 <ssd1963_flush+0x2a0>)
e88: 781b ldrb r3, [r3, #0]
e8a: b12b cbz r3, e98 <ssd1963_flush+0x1f4>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
e8c: 2120 movs r1, #32
e8e: 4b2c ldr r3, [pc, #176] ; (f40 <ssd1963_flush+0x29c>)
e90: 6199 str r1, [r3, #24]
cmd_mode = false;
e92: 2100 movs r1, #0
e94: 4b2b ldr r3, [pc, #172] ; (f44 <ssd1963_flush+0x2a0>)
e96: 7019 strb r1, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(data);
e98: 492b ldr r1, [pc, #172] ; (f48 <ssd1963_flush+0x2a4>)
e9a: 482c ldr r0, [pc, #176] ; (f4c <ssd1963_flush+0x2a8>)
e9c: 4b2c ldr r3, [pc, #176] ; (f50 <ssd1963_flush+0x2ac>)
e9e: 4798 blx r3
ea0: 4b27 ldr r3, [pc, #156] ; (f40 <ssd1963_flush+0x29c>)
ea2: 2240 movs r2, #64 ; 0x40
ea4: 619a str r2, [r3, #24]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
ea6: 615a str r2, [r3, #20]
if(cmd_mode == false) {
ea8: 4b26 ldr r3, [pc, #152] ; (f44 <ssd1963_flush+0x2a0>)
eaa: 781b ldrb r3, [r3, #0]
eac: b92b cbnz r3, eba <ssd1963_flush+0x216>
eae: 2220 movs r2, #32
eb0: 4b23 ldr r3, [pc, #140] ; (f40 <ssd1963_flush+0x29c>)
eb2: 615a str r2, [r3, #20]
cmd_mode = true;
eb4: 2201 movs r2, #1
eb6: 4b23 ldr r3, [pc, #140] ; (f44 <ssd1963_flush+0x2a0>)
eb8: 701a strb r2, [r3, #0]
LV_DRV_DISP_PAR_WR_WORD(cmd);
eba: 222c movs r2, #44 ; 0x2c
ebc: 4922 ldr r1, [pc, #136] ; (f48 <ssd1963_flush+0x2a4>)
ebe: 4823 ldr r0, [pc, #140] ; (f4c <ssd1963_flush+0x2a8>)
ec0: 4b23 ldr r3, [pc, #140] ; (f50 <ssd1963_flush+0x2ac>)
ec2: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
ec4: 2240 movs r2, #64 ; 0x40
ec6: 4b1e ldr r3, [pc, #120] ; (f40 <ssd1963_flush+0x29c>)
ec8: 619a str r2, [r3, #24]
uint16_t full_w = area->x2 - area->x1 + 1;
eca: f8ba 3004 ldrh.w r3, [sl, #4]
ece: 3301 adds r3, #1
ed0: f8ba 2000 ldrh.w r2, [sl]
ed4: 1a9b subs r3, r3, r2
ed6: b29b uxth r3, r3
if(cmd_mode != false) {
ed8: 4a1a ldr r2, [pc, #104] ; (f44 <ssd1963_flush+0x2a0>)
eda: 7812 ldrb r2, [r2, #0]
edc: b12a cbz r2, eea <ssd1963_flush+0x246>
ede: 2120 movs r1, #32
ee0: 4a17 ldr r2, [pc, #92] ; (f40 <ssd1963_flush+0x29c>)
ee2: 6191 str r1, [r2, #24]
cmd_mode = false;
ee4: 2100 movs r1, #0
ee6: 4a17 ldr r2, [pc, #92] ; (f44 <ssd1963_flush+0x2a0>)
ee8: 7011 strb r1, [r2, #0]
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
eea: 2140 movs r1, #64 ; 0x40
eec: 4a14 ldr r2, [pc, #80] ; (f40 <ssd1963_flush+0x29c>)
eee: 6151 str r1, [r2, #20]
uint16_t act_w = act_x2 - act_x1 + 1;
ef0: f1c6 0601 rsb r6, r6, #1
ef4: 443e add r6, r7
ef6: b2b6 uxth r6, r6
for(i = act_y1; i <= act_y2; i++) {
ef8: 45d8 cmp r8, fp
efa: db0e blt.n f1a <ssd1963_flush+0x276>
color_p += full_w;
efc: 005f lsls r7, r3, #1
LV_DRV_DISP_PAR_WR_ARRAY((uint16_t *)color_p, act_w);
efe: f8df b048 ldr.w fp, [pc, #72] ; f48 <ssd1963_flush+0x2a4>
f02: f8df a054 ldr.w sl, [pc, #84] ; f58 <ssd1963_flush+0x2b4>
f06: 4633 mov r3, r6
f08: 462a mov r2, r5
f0a: 4659 mov r1, fp
f0c: 480f ldr r0, [pc, #60] ; (f4c <ssd1963_flush+0x2a8>)
f0e: 47d0 blx sl
color_p += full_w;
f10: 443d add r5, r7
f12: 3401 adds r4, #1
f14: b224 sxth r4, r4
for(i = act_y1; i <= act_y2; i++) {
f16: 45a0 cmp r8, r4
f18: daf5 bge.n f06 <ssd1963_flush+0x262>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
f1a: 2240 movs r2, #64 ; 0x40
f1c: 4b08 ldr r3, [pc, #32] ; (f40 <ssd1963_flush+0x29c>)
f1e: 619a str r2, [r3, #24]
lv_disp_flush_ready(disp_drv);
f20: 4648 mov r0, r9
f22: 4b0c ldr r3, [pc, #48] ; (f54 <ssd1963_flush+0x2b0>)
f24: 4798 blx r3
f26: e6d3 b.n cd0 <ssd1963_flush+0x2c>
int32_t act_x2 = area->x2 > SSD1963_HOR_RES - 1 ? SSD1963_HOR_RES - 1 : area->x2;
f28: 4b02 ldr r3, [pc, #8] ; (f34 <ssd1963_flush+0x290>)
f2a: 4798 blx r3
f2c: 4b03 ldr r3, [pc, #12] ; (f3c <ssd1963_flush+0x298>)
f2e: 4798 blx r3
f30: 1e47 subs r7, r0, #1
f32: e6f1 b.n d18 <ssd1963_flush+0x74>
f34: 00010ee1 .word 0x00010ee1
f38: 00010f15 .word 0x00010f15
f3c: 00010eed .word 0x00010eed
f40: 41008000 .word 0x41008000
f44: 20000000 .word 0x20000000
f48: 1c03c3f7 .word 0x1c03c3f7
f4c: 41008080 .word 0x41008080
f50: 00001041 .word 0x00001041
f54: 00010fad .word 0x00010fad
f58: 00001079 .word 0x00001079
int32_t act_y2 = area->y2 > SSD1963_VER_RES - 1 ? SSD1963_VER_RES - 1 : area->y2;
f5c: 4b03 ldr r3, [pc, #12] ; (f6c <ssd1963_flush+0x2c8>)
f5e: 4798 blx r3
f60: 4b03 ldr r3, [pc, #12] ; (f70 <ssd1963_flush+0x2cc>)
f62: 4798 blx r3
f64: f100 38ff add.w r8, r0, #4294967295
f68: e6e2 b.n d30 <ssd1963_flush+0x8c>
f6a: bf00 nop
f6c: 00010ee1 .word 0x00010ee1
f70: 00010f15 .word 0x00010f15
00000f74 <Dummy_Handler>:
/**
* \brief Default interrupt handler for unused IRQs.
*/
void Dummy_Handler(void)
{
f74: e7fe b.n f74 <Dummy_Handler>
...
00000f78 <Reset_Handler>:
{
f78: b508 push {r3, lr}
if (pSrc != pDest) {
f7a: 4b1c ldr r3, [pc, #112] ; (fec <Reset_Handler+0x74>)
f7c: 4a1c ldr r2, [pc, #112] ; (ff0 <Reset_Handler+0x78>)
f7e: 429a cmp r2, r3
f80: d010 beq.n fa4 <Reset_Handler+0x2c>
for (; pDest < &_erelocate;) {
f82: 4b1c ldr r3, [pc, #112] ; (ff4 <Reset_Handler+0x7c>)
f84: 4a19 ldr r2, [pc, #100] ; (fec <Reset_Handler+0x74>)
f86: 429a cmp r2, r3
f88: d20c bcs.n fa4 <Reset_Handler+0x2c>
f8a: 3b01 subs r3, #1
f8c: 1a9b subs r3, r3, r2
f8e: f023 0303 bic.w r3, r3, #3
f92: 3304 adds r3, #4
f94: 4413 add r3, r2
f96: 4916 ldr r1, [pc, #88] ; (ff0 <Reset_Handler+0x78>)
*pDest++ = *pSrc++;
f98: f851 0b04 ldr.w r0, [r1], #4
f9c: f842 0b04 str.w r0, [r2], #4
for (; pDest < &_erelocate;) {
fa0: 429a cmp r2, r3
fa2: d1f9 bne.n f98 <Reset_Handler+0x20>
for (pDest = &_szero; pDest < &_ezero;) {
fa4: 4b14 ldr r3, [pc, #80] ; (ff8 <Reset_Handler+0x80>)
fa6: 4a15 ldr r2, [pc, #84] ; (ffc <Reset_Handler+0x84>)
fa8: 429a cmp r2, r3
faa: d20a bcs.n fc2 <Reset_Handler+0x4a>
fac: 3b01 subs r3, #1
fae: 1a9b subs r3, r3, r2
fb0: f023 0303 bic.w r3, r3, #3
fb4: 3304 adds r3, #4
fb6: 4413 add r3, r2
*pDest++ = 0;
fb8: 2100 movs r1, #0
fba: f842 1b04 str.w r1, [r2], #4
for (pDest = &_szero; pDest < &_ezero;) {
fbe: 4293 cmp r3, r2
fc0: d1fb bne.n fba <Reset_Handler+0x42>
SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk);
fc2: 4b0f ldr r3, [pc, #60] ; (1000 <Reset_Handler+0x88>)
fc4: 4a0f ldr r2, [pc, #60] ; (1004 <Reset_Handler+0x8c>)
fc6: f022 027f bic.w r2, r2, #127 ; 0x7f
fca: 609a str r2, [r3, #8]
SCB->CPACR |= (0xFu << 20);
fcc: f8d3 2088 ldr.w r2, [r3, #136] ; 0x88
fd0: f442 0270 orr.w r2, r2, #15728640 ; 0xf00000
fd4: f8c3 2088 str.w r2, [r3, #136] ; 0x88
\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");
fd8: f3bf 8f4f dsb sy
__ASM volatile ("isb 0xF":::"memory");
fdc: f3bf 8f6f isb sy
__libc_init_array();
fe0: 4b09 ldr r3, [pc, #36] ; (1008 <Reset_Handler+0x90>)
fe2: 4798 blx r3
main();
fe4: 4b09 ldr r3, [pc, #36] ; (100c <Reset_Handler+0x94>)
fe6: 4798 blx r3
fe8: e7fe b.n fe8 <Reset_Handler+0x70>
fea: bf00 nop
fec: 20000000 .word 0x20000000
ff0: 00029a3c .word 0x00029a3c
ff4: 20000074 .word 0x20000074
ff8: 20006e04 .word 0x20006e04
ffc: 20000078 .word 0x20000078
1000: e000ed00 .word 0xe000ed00
1004: 00000000 .word 0x00000000
1008: 0001b495 .word 0x0001b495
100c: 000021b1 .word 0x000021b1
00001010 <p_gpio_set_port_data>:
p_gpio_parallel_write(group, mask, data[ind]);
}
}
void p_gpio_set_port_data(PortGroup* const port, const uint32_t mask, const uint32_t data)
{
1010: b410 push {r4}
uint32_t dword = (uint32_t)(SSD1963_TFT_DATA_FIX(data));
1012: 0053 lsls r3, r2, #1
1014: f403 737c and.w r3, r3, #1008 ; 0x3f0
1018: 0154 lsls r4, r2, #5
101a: f404 3470 and.w r4, r4, #245760 ; 0x3c000
101e: 4323 orrs r3, r4
1020: f002 0407 and.w r4, r2, #7
1024: 4323 orrs r3, r4
1026: 0352 lsls r2, r2, #13
1028: f002 52e0 and.w r2, r2, #469762048 ; 0x1c000000
102c: 431a orrs r2, r3
port->OUTSET.reg = (mask & dword);
102e: ea02 0301 and.w r3, r2, r1
1032: 6183 str r3, [r0, #24]
port->OUTCLR.reg = (mask & ~dword);
1034: ea21 0102 bic.w r1, r1, r2
1038: 6141 str r1, [r0, #20]
}
103a: f85d 4b04 ldr.w r4, [sp], #4
103e: 4770 bx lr
00001040 <p_gpio_parallel_write>:
{
1040: b510 push {r4, lr}
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
1042: 2440 movs r4, #64 ; 0x40
1044: 4b0a ldr r3, [pc, #40] ; (1070 <p_gpio_parallel_write+0x30>)
1046: 615c str r4, [r3, #20]
p_gpio_set_port_data(group, mask, (uint32_t)data);
1048: 4b0a ldr r3, [pc, #40] ; (1074 <p_gpio_parallel_write+0x34>)
104a: 4798 blx r3
104c: 2308 movs r3, #8
asm volatile("nop");
104e: bf00 nop
for(int x = 0; x < 8; x++)
1050: 3b01 subs r3, #1
1052: d1fc bne.n 104e <p_gpio_parallel_write+0xe>
1054: 2280 movs r2, #128 ; 0x80
1056: 4b06 ldr r3, [pc, #24] ; (1070 <p_gpio_parallel_write+0x30>)
1058: 615a str r2, [r3, #20]
105a: 2308 movs r3, #8
asm volatile("nop");
105c: bf00 nop
for(int x = 0; x < 8; x++)
105e: 3b01 subs r3, #1
1060: d1fc bne.n 105c <p_gpio_parallel_write+0x1c>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
1062: 4b03 ldr r3, [pc, #12] ; (1070 <p_gpio_parallel_write+0x30>)
1064: 2280 movs r2, #128 ; 0x80
1066: 619a str r2, [r3, #24]
1068: 2240 movs r2, #64 ; 0x40
106a: 619a str r2, [r3, #24]
106c: bd10 pop {r4, pc}
106e: bf00 nop
1070: 41008000 .word 0x41008000
1074: 00001011 .word 0x00001011
00001078 <p_gpio_parallel_write_arr>:
for(int ind = 0; ind < len; ind++)
1078: b18b cbz r3, 109e <p_gpio_parallel_write_arr+0x26>
{
107a: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
107e: 460f mov r7, r1
1080: 4606 mov r6, r0
1082: 4614 mov r4, r2
1084: eb02 0543 add.w r5, r2, r3, lsl #1
p_gpio_parallel_write(group, mask, data[ind]);
1088: f8df 8014 ldr.w r8, [pc, #20] ; 10a0 <p_gpio_parallel_write_arr+0x28>
108c: f834 2b02 ldrh.w r2, [r4], #2
1090: 4639 mov r1, r7
1092: 4630 mov r0, r6
1094: 47c0 blx r8
for(int ind = 0; ind < len; ind++)
1096: 42ac cmp r4, r5
1098: d1f8 bne.n 108c <p_gpio_parallel_write_arr+0x14>
109a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
109e: 4770 bx lr
10a0: 00001041 .word 0x00001041
000010a4 <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)
{
10a4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
10a8: b083 sub sp, #12
10aa: 468b mov fp, r1
10ac: 9200 str r2, [sp, #0]
for(uint8_t i = 0; i < 32; i++)
{
if(mask & (1UL << i))
{
uint32_t _gpio_pin = GPIO(port, i);
10ae: 0140 lsls r0, r0, #5
10b0: b2c3 uxtb r3, r0
10b2: 9301 str r3, [sp, #4]
10b4: 2600 movs r6, #0
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
10b6: f8df 9194 ldr.w r9, [pc, #404] ; 124c <p_gpio_set_port_group_config+0x1a8>
10ba: e065 b.n 1188 <p_gpio_set_port_group_config+0xe4>
((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask;
10bc: eb09 13c7 add.w r3, r9, r7, lsl #7
10c0: 605d str r5, [r3, #4]
const enum gpio_direction direction)
{
switch (direction) {
case GPIO_DIRECTION_OFF:
hri_port_clear_DIR_reg(PORT, port, mask);
hri_port_write_WRCONFIG_reg(PORT, port, PORT_WRCONFIG_WRPINCFG | (mask & 0xffff));
10c2: b2aa uxth r2, r5
10c4: f042 4280 orr.w r2, r2, #1073741824 ; 0x40000000
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;
10c8: 629a str r2, [r3, #40] ; 0x28
hri_port_write_WRCONFIG_reg(
PORT, port, PORT_WRCONFIG_HWSEL | PORT_WRCONFIG_WRPINCFG | ((mask & 0xffff0000) >> 16));
10ca: 0c2a lsrs r2, r5, #16
hri_port_write_WRCONFIG_reg(
10cc: f042 4240 orr.w r2, r2, #3221225472 ; 0xc0000000
10d0: 629a str r2, [r3, #40] ; 0x28
* \brief Set pin pull mode
*/
static inline void _gpio_set_pin_pull_mode(const enum gpio_port port, const uint8_t pin,
const enum gpio_pull_mode pull_mode)
{
switch (pull_mode) {
10d2: 9b00 ldr r3, [sp, #0]
10d4: 781b ldrb r3, [r3, #0]
10d6: 2b01 cmp r3, #1
10d8: d077 beq.n 11ca <p_gpio_set_port_group_config+0x126>
10da: b323 cbz r3, 1126 <p_gpio_set_port_group_config+0x82>
10dc: 2b02 cmp r3, #2
10de: f000 8084 beq.w 11ea <p_gpio_set_port_group_config+0x146>
hri_port_set_PINCFG_PULLEN_bit(PORT, port, pin);
hri_port_clear_OUT_reg(PORT, port, 1U << pin);
break;
default:
ASSERT(false);
10e2: 2289 movs r2, #137 ; 0x89
10e4: 4957 ldr r1, [pc, #348] ; (1244 <p_gpio_set_port_group_config+0x1a0>)
10e6: 2000 movs r0, #0
10e8: 4b57 ldr r3, [pc, #348] ; (1248 <p_gpio_set_port_group_config+0x1a4>)
10ea: 4798 blx r3
10ec: e024 b.n 1138 <p_gpio_set_port_group_config+0x94>
((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask;
10ee: eb09 12c7 add.w r2, r9, r7, lsl #7
10f2: 6055 str r5, [r2, #4]
hri_port_write_WRCONFIG_reg(PORT, port, PORT_WRCONFIG_WRPINCFG | PORT_WRCONFIG_INEN | (mask & 0xffff));
10f4: b2ab uxth r3, r5
10f6: f043 4380 orr.w r3, r3, #1073741824 ; 0x40000000
10fa: f443 3300 orr.w r3, r3, #131072 ; 0x20000
((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data;
10fe: 6293 str r3, [r2, #40] ; 0x28
| ((mask & 0xffff0000) >> 16));
1100: 0c2b lsrs r3, r5, #16
hri_port_write_WRCONFIG_reg(PORT,
1102: f043 4340 orr.w r3, r3, #3221225472 ; 0xc0000000
1106: f443 3300 orr.w r3, r3, #131072 ; 0x20000
110a: 6293 str r3, [r2, #40] ; 0x28
110c: e7e1 b.n 10d2 <p_gpio_set_port_group_config+0x2e>
((Port *)hw)->Group[submodule_index].DIRSET.reg = mask;
110e: eb09 13c7 add.w r3, r9, r7, lsl #7
1112: 609d str r5, [r3, #8]
hri_port_write_WRCONFIG_reg(PORT, port, PORT_WRCONFIG_WRPINCFG | (mask & 0xffff));
1114: b2aa uxth r2, r5
1116: f042 4280 orr.w r2, r2, #1073741824 ; 0x40000000
((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data;
111a: 629a str r2, [r3, #40] ; 0x28
PORT, port, PORT_WRCONFIG_HWSEL | PORT_WRCONFIG_WRPINCFG | ((mask & 0xffff0000) >> 16));
111c: 0c2a lsrs r2, r5, #16
hri_port_write_WRCONFIG_reg(
111e: f042 4240 orr.w r2, r2, #3221225472 ; 0xc0000000
1122: 629a str r2, [r3, #40] ; 0x28
1124: e7d5 b.n 10d2 <p_gpio_set_port_group_config+0x2e>
((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN;
1126: eb09 13c7 add.w r3, r9, r7, lsl #7
112a: 4443 add r3, r8
112c: f893 2040 ldrb.w r2, [r3, #64] ; 0x40
1130: f002 02fb and.w r2, r2, #251 ; 0xfb
1134: f883 2040 strb.w r2, [r3, #64] ; 0x40
gpio_set_pin_direction(_gpio_pin, config->direction);
gpio_set_pin_pull_mode(_gpio_pin, config->pull_mode);
gpio_set_pin_function(_gpio_pin, config->function);
1138: 9b00 ldr r3, [sp, #0]
113a: 685a ldr r2, [r3, #4]
/**
* \brief Set gpio pin function
*/
static inline void _gpio_set_pin_function(const uint32_t gpio, const uint32_t function)
{
uint8_t port = GPIO_PORT(gpio);
113c: 0964 lsrs r4, r4, #5
uint8_t pin = GPIO_PIN(gpio);
if (function == GPIO_PIN_FUNCTION_OFF) {
113e: f1b2 3fff cmp.w r2, #4294967295
1142: d062 beq.n 120a <p_gpio_set_port_group_config+0x166>
tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg;
1144: b2e4 uxtb r4, r4
1146: eb09 11c4 add.w r1, r9, r4, lsl #7
114a: 4441 add r1, r8
114c: f891 3040 ldrb.w r3, [r1, #64] ; 0x40
tmp &= ~PORT_PINCFG_PMUXEN;
1150: f003 03fe and.w r3, r3, #254 ; 0xfe
tmp |= value << PORT_PINCFG_PMUXEN_Pos;
1154: f043 0301 orr.w r3, r3, #1
((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp;
1158: f881 3040 strb.w r3, [r1, #64] ; 0x40
hri_port_write_PINCFG_PMUXEN_bit(PORT, port, pin, false);
} else {
hri_port_write_PINCFG_PMUXEN_bit(PORT, port, pin, true);
if (pin & 1) {
115c: f01a 0f01 tst.w sl, #1
1160: d15e bne.n 1220 <p_gpio_set_port_group_config+0x17c>
tmp = ((Port *)hw)->Group[submodule_index].PMUX[index].reg;
1162: eb09 14c4 add.w r4, r9, r4, lsl #7
1166: eb04 0858 add.w r8, r4, r8, lsr #1
116a: f898 3030 ldrb.w r3, [r8, #48] ; 0x30
tmp &= ~PORT_PMUX_PMUXE_Msk;
116e: f003 03f0 and.w r3, r3, #240 ; 0xf0
tmp |= PORT_PMUX_PMUXE(data);
1172: f002 020f and.w r2, r2, #15
1176: 431a orrs r2, r3
((Port *)hw)->Group[submodule_index].PMUX[index].reg = tmp;
1178: f888 2030 strb.w r2, [r8, #48] ; 0x30
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
117c: eb09 17c7 add.w r7, r9, r7, lsl #7
1180: 617d str r5, [r7, #20]
1182: 3601 adds r6, #1
for(uint8_t i = 0; i < 32; i++)
1184: 2e20 cmp r6, #32
1186: d059 beq.n 123c <p_gpio_set_port_group_config+0x198>
1188: b2f4 uxtb r4, r6
if(mask & (1UL << i))
118a: fa2b f306 lsr.w r3, fp, r6
118e: f013 0f01 tst.w r3, #1
1192: d0f6 beq.n 1182 <p_gpio_set_port_group_config+0xde>
uint32_t _gpio_pin = GPIO(port, i);
1194: f004 041f and.w r4, r4, #31
1198: 9b01 ldr r3, [sp, #4]
119a: 441c add r4, r3
gpio_set_pin_direction(_gpio_pin, config->direction);
119c: fa5f fa84 uxtb.w sl, r4
* 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);
11a0: ea4f 175a mov.w r7, sl, lsr #5
11a4: f00a 081f and.w r8, sl, #31
11a8: 2501 movs r5, #1
11aa: fa05 f508 lsl.w r5, r5, r8
switch (direction) {
11ae: 9b00 ldr r3, [sp, #0]
11b0: 785b ldrb r3, [r3, #1]
11b2: 2b01 cmp r3, #1
11b4: d09b beq.n 10ee <p_gpio_set_port_group_config+0x4a>
11b6: 2b00 cmp r3, #0
11b8: d080 beq.n 10bc <p_gpio_set_port_group_config+0x18>
11ba: 2b02 cmp r3, #2
11bc: d0a7 beq.n 110e <p_gpio_set_port_group_config+0x6a>
ASSERT(false);
11be: 2246 movs r2, #70 ; 0x46
11c0: 4920 ldr r1, [pc, #128] ; (1244 <p_gpio_set_port_group_config+0x1a0>)
11c2: 2000 movs r0, #0
11c4: 4b20 ldr r3, [pc, #128] ; (1248 <p_gpio_set_port_group_config+0x1a4>)
11c6: 4798 blx r3
11c8: e783 b.n 10d2 <p_gpio_set_port_group_config+0x2e>
hri_port_clear_DIR_reg(PORT, port, 1U << pin);
11ca: 2301 movs r3, #1
11cc: fa03 f308 lsl.w r3, r3, r8
((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask;
11d0: eb09 12c7 add.w r2, r9, r7, lsl #7
11d4: 6053 str r3, [r2, #4]
((Port *)hw)->Group[submodule_index].PINCFG[index].reg |= PORT_PINCFG_PULLEN;
11d6: eb02 0008 add.w r0, r2, r8
11da: f890 1040 ldrb.w r1, [r0, #64] ; 0x40
11de: f041 0104 orr.w r1, r1, #4
11e2: f880 1040 strb.w r1, [r0, #64] ; 0x40
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
11e6: 6193 str r3, [r2, #24]
11e8: e7a6 b.n 1138 <p_gpio_set_port_group_config+0x94>
hri_port_clear_DIR_reg(PORT, port, 1U << pin);
11ea: 2301 movs r3, #1
11ec: fa03 f308 lsl.w r3, r3, r8
((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask;
11f0: eb09 12c7 add.w r2, r9, r7, lsl #7
11f4: 6053 str r3, [r2, #4]
((Port *)hw)->Group[submodule_index].PINCFG[index].reg |= PORT_PINCFG_PULLEN;
11f6: eb02 0008 add.w r0, r2, r8
11fa: f890 1040 ldrb.w r1, [r0, #64] ; 0x40
11fe: f041 0104 orr.w r1, r1, #4
1202: f880 1040 strb.w r1, [r0, #64] ; 0x40
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
1206: 6153 str r3, [r2, #20]
1208: e796 b.n 1138 <p_gpio_set_port_group_config+0x94>
tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg;
120a: b2e4 uxtb r4, r4
120c: eb09 14c4 add.w r4, r9, r4, lsl #7
1210: 44a0 add r8, r4
1212: f898 3040 ldrb.w r3, [r8, #64] ; 0x40
tmp &= ~PORT_PINCFG_PMUXEN;
1216: f003 03fe and.w r3, r3, #254 ; 0xfe
((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp;
121a: f888 3040 strb.w r3, [r8, #64] ; 0x40
121e: e7ad b.n 117c <p_gpio_set_port_group_config+0xd8>
tmp = ((Port *)hw)->Group[submodule_index].PMUX[index].reg;
1220: eb09 14c4 add.w r4, r9, r4, lsl #7
1224: eb04 0858 add.w r8, r4, r8, lsr #1
1228: f898 3030 ldrb.w r3, [r8, #48] ; 0x30
tmp &= ~PORT_PMUX_PMUXO_Msk;
122c: f003 030f and.w r3, r3, #15
tmp |= PORT_PMUX_PMUXO(data);
1230: ea43 1202 orr.w r2, r3, r2, lsl #4
1234: b2d2 uxtb r2, r2
((Port *)hw)->Group[submodule_index].PMUX[index].reg = tmp;
1236: f888 2030 strb.w r2, [r8, #48] ; 0x30
123a: e79f b.n 117c <p_gpio_set_port_group_config+0xd8>
gpio_set_pin_level(_gpio_pin, 0);
}
}
}
123c: b003 add sp, #12
123e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
1242: bf00 nop
1244: 0001b530 .word 0x0001b530
1248: 000019d5 .word 0x000019d5
124c: 41008000 .word 0x41008000
00001250 <p_gpio_init>:
{
1250: b570 push {r4, r5, r6, lr}
1252: b082 sub sp, #8
memset(&data_config, 0, sizeof(data_config));
1254: 2300 movs r3, #0
1256: 9300 str r3, [sp, #0]
data_config.direction = GPIO_DIRECTION_OUT;
1258: 2302 movs r3, #2
125a: f88d 3001 strb.w r3, [sp, #1]
data_config.function = GPIO_PIN_FUNCTION_OFF;
125e: f04f 33ff mov.w r3, #4294967295
1262: 9301 str r3, [sp, #4]
p_gpio_set_port_group_config(SSD1963_TFT_DATA_PORT, SSD1963_TFT_DATA_MASK, &data_config);
1264: 466a mov r2, sp
1266: 493f ldr r1, [pc, #252] ; (1364 <p_gpio_init+0x114>)
1268: 2001 movs r0, #1
126a: 4b3f ldr r3, [pc, #252] ; (1368 <p_gpio_init+0x118>)
126c: 4798 blx r3
((Port *)hw)->Group[submodule_index].DIRSET.reg = mask;
126e: 4b3f ldr r3, [pc, #252] ; (136c <p_gpio_init+0x11c>)
1270: 2640 movs r6, #64 ; 0x40
1272: 609e str r6, [r3, #8]
((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data;
1274: 4a3e ldr r2, [pc, #248] ; (1370 <p_gpio_init+0x120>)
1276: 629a str r2, [r3, #40] ; 0x28
1278: f04f 4240 mov.w r2, #3221225472 ; 0xc0000000
127c: 629a str r2, [r3, #40] ; 0x28
((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN;
127e: f893 1046 ldrb.w r1, [r3, #70] ; 0x46
1282: f001 01fb and.w r1, r1, #251 ; 0xfb
1286: f883 1046 strb.w r1, [r3, #70] ; 0x46
tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg;
128a: f893 1046 ldrb.w r1, [r3, #70] ; 0x46
tmp &= ~PORT_PINCFG_PMUXEN;
128e: f001 01fe and.w r1, r1, #254 ; 0xfe
((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp;
1292: f883 1046 strb.w r1, [r3, #70] ; 0x46
((Port *)hw)->Group[submodule_index].DIRSET.reg = mask;
1296: 2510 movs r5, #16
1298: 609d str r5, [r3, #8]
((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data;
129a: 4936 ldr r1, [pc, #216] ; (1374 <p_gpio_init+0x124>)
129c: 6299 str r1, [r3, #40] ; 0x28
129e: 629a str r2, [r3, #40] ; 0x28
((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN;
12a0: f893 1044 ldrb.w r1, [r3, #68] ; 0x44
12a4: f001 01fb and.w r1, r1, #251 ; 0xfb
12a8: f883 1044 strb.w r1, [r3, #68] ; 0x44
tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg;
12ac: f893 1044 ldrb.w r1, [r3, #68] ; 0x44
tmp &= ~PORT_PINCFG_PMUXEN;
12b0: f001 01fe and.w r1, r1, #254 ; 0xfe
((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp;
12b4: f883 1044 strb.w r1, [r3, #68] ; 0x44
((Port *)hw)->Group[submodule_index].DIRSET.reg = mask;
12b8: 2408 movs r4, #8
12ba: 609c str r4, [r3, #8]
((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data;
12bc: 492e ldr r1, [pc, #184] ; (1378 <p_gpio_init+0x128>)
12be: 6299 str r1, [r3, #40] ; 0x28
12c0: 629a str r2, [r3, #40] ; 0x28
((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN;
12c2: f893 1043 ldrb.w r1, [r3, #67] ; 0x43
12c6: f001 01fb and.w r1, r1, #251 ; 0xfb
12ca: f883 1043 strb.w r1, [r3, #67] ; 0x43
tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg;
12ce: f893 1043 ldrb.w r1, [r3, #67] ; 0x43
tmp &= ~PORT_PINCFG_PMUXEN;
12d2: f001 01fe and.w r1, r1, #254 ; 0xfe
((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp;
12d6: f883 1043 strb.w r1, [r3, #67] ; 0x43
((Port *)hw)->Group[submodule_index].DIRSET.reg = mask;
12da: 2120 movs r1, #32
12dc: 6099 str r1, [r3, #8]
((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data;
12de: f101 4180 add.w r1, r1, #1073741824 ; 0x40000000
12e2: 6299 str r1, [r3, #40] ; 0x28
12e4: 629a str r2, [r3, #40] ; 0x28
((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN;
12e6: f893 1045 ldrb.w r1, [r3, #69] ; 0x45
12ea: f001 01fb and.w r1, r1, #251 ; 0xfb
12ee: f883 1045 strb.w r1, [r3, #69] ; 0x45
tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg;
12f2: f893 1045 ldrb.w r1, [r3, #69] ; 0x45
tmp &= ~PORT_PINCFG_PMUXEN;
12f6: f001 01fe and.w r1, r1, #254 ; 0xfe
((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp;
12fa: f883 1045 strb.w r1, [r3, #69] ; 0x45
((Port *)hw)->Group[submodule_index].DIRSET.reg = mask;
12fe: 2080 movs r0, #128 ; 0x80
1300: 6098 str r0, [r3, #8]
((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data;
1302: 491e ldr r1, [pc, #120] ; (137c <p_gpio_init+0x12c>)
1304: 6299 str r1, [r3, #40] ; 0x28
1306: 629a str r2, [r3, #40] ; 0x28
((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN;
1308: f893 2047 ldrb.w r2, [r3, #71] ; 0x47
130c: f002 02fb and.w r2, r2, #251 ; 0xfb
1310: f883 2047 strb.w r2, [r3, #71] ; 0x47
tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg;
1314: f893 2047 ldrb.w r2, [r3, #71] ; 0x47
tmp &= ~PORT_PINCFG_PMUXEN;
1318: f002 02fe and.w r2, r2, #254 ; 0xfe
((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp;
131c: f883 2047 strb.w r2, [r3, #71] ; 0x47
((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask;
1320: f44f 7280 mov.w r2, #256 ; 0x100
1324: f8c3 2184 str.w r2, [r3, #388] ; 0x184
((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data;
1328: f501 3100 add.w r1, r1, #131072 ; 0x20000
132c: 3180 adds r1, #128 ; 0x80
132e: f8c3 11a8 str.w r1, [r3, #424] ; 0x1a8
1332: 4913 ldr r1, [pc, #76] ; (1380 <p_gpio_init+0x130>)
1334: f8c3 11a8 str.w r1, [r3, #424] ; 0x1a8
((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask;
1338: f8c3 2184 str.w r2, [r3, #388] ; 0x184
((Port *)hw)->Group[submodule_index].PINCFG[index].reg |= PORT_PINCFG_PULLEN;
133c: f893 11c8 ldrb.w r1, [r3, #456] ; 0x1c8
1340: f041 0104 orr.w r1, r1, #4
1344: f883 11c8 strb.w r1, [r3, #456] ; 0x1c8
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
1348: f8c3 2194 str.w r2, [r3, #404] ; 0x194
tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg;
134c: f893 21c8 ldrb.w r2, [r3, #456] ; 0x1c8
tmp &= ~PORT_PINCFG_PMUXEN;
1350: f002 02fe and.w r2, r2, #254 ; 0xfe
((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp;
1354: f883 21c8 strb.w r2, [r3, #456] ; 0x1c8
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
1358: 619e str r6, [r3, #24]
135a: 619d str r5, [r3, #24]
135c: 619c str r4, [r3, #24]
135e: 6198 str r0, [r3, #24]
}
1360: b002 add sp, #8
1362: bd70 pop {r4, r5, r6, pc}
1364: 1c03c3f7 .word 0x1c03c3f7
1368: 000010a5 .word 0x000010a5
136c: 41008000 .word 0x41008000
1370: 40000040 .word 0x40000040
1374: 40000010 .word 0x40000010
1378: 40000008 .word 0x40000008
137c: 40000080 .word 0x40000080
1380: c0020000 .word 0xc0020000
00001384 <p_i2c_init>:
#include "p_i2c.h"
struct i2c_m_sync_desc p_i2c_master;
void p_i2c_init(void)
{
1384: 4770 bx lr
...
00001388 <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)
{
1388: b508 push {r3, lr}
sys_time++;
138a: 4906 ldr r1, [pc, #24] ; (13a4 <TIMER_0_task1_cb+0x1c>)
138c: e9d1 2300 ldrd r2, r3, [r1]
1390: 3201 adds r2, #1
1392: f143 0300 adc.w r3, r3, #0
1396: e9c1 2300 strd r2, r3, [r1]
lv_tick_inc(1);
139a: 2001 movs r0, #1
139c: 4b02 ldr r3, [pc, #8] ; (13a8 <TIMER_0_task1_cb+0x20>)
139e: 4798 blx r3
13a0: bd08 pop {r3, pc}
13a2: bf00 nop
13a4: 20000098 .word 0x20000098
13a8: 00011045 .word 0x00011045
000013ac <p_tcc_init>:
//timer_add_task(&p_tcc_inst, &TIMER_0_task2);
timer_start(&p_tcc_inst);
}
void p_tcc_init(void)
{
13ac: b510 push {r4, lr}
delay_init(SysTick);
13ae: 4811 ldr r0, [pc, #68] ; (13f4 <p_tcc_init+0x48>)
13b0: 4b11 ldr r3, [pc, #68] ; (13f8 <p_tcc_init+0x4c>)
13b2: 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;
13b4: 4a11 ldr r2, [pc, #68] ; (13fc <p_tcc_init+0x50>)
13b6: 6953 ldr r3, [r2, #20]
13b8: f443 4380 orr.w r3, r3, #16384 ; 0x4000
13bc: 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;
13be: 2240 movs r2, #64 ; 0x40
13c0: 4b0f ldr r3, [pc, #60] ; (1400 <p_tcc_init+0x54>)
13c2: f8c3 20a4 str.w r2, [r3, #164] ; 0xa4
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());
13c6: 4b0f ldr r3, [pc, #60] ; (1404 <p_tcc_init+0x58>)
13c8: 4798 blx r3
13ca: 4c0f ldr r4, [pc, #60] ; (1408 <p_tcc_init+0x5c>)
13cc: 4602 mov r2, r0
13ce: 490f ldr r1, [pc, #60] ; (140c <p_tcc_init+0x60>)
13d0: 4620 mov r0, r4
13d2: 4b0f ldr r3, [pc, #60] ; (1410 <p_tcc_init+0x64>)
13d4: 4798 blx r3
TIMER_0_task1.interval = 1;
13d6: 490f ldr r1, [pc, #60] ; (1414 <p_tcc_init+0x68>)
13d8: 2301 movs r3, #1
13da: 610b str r3, [r1, #16]
TIMER_0_task1.cb = TIMER_0_task1_cb;
13dc: 4a0e ldr r2, [pc, #56] ; (1418 <p_tcc_init+0x6c>)
13de: 614a str r2, [r1, #20]
TIMER_0_task1.mode = TIMER_TASK_REPEAT;
13e0: 760b strb r3, [r1, #24]
//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);
13e2: 3108 adds r1, #8
13e4: 4620 mov r0, r4
13e6: 4b0d ldr r3, [pc, #52] ; (141c <p_tcc_init+0x70>)
13e8: 4798 blx r3
//timer_add_task(&p_tcc_inst, &TIMER_0_task2);
timer_start(&p_tcc_inst);
13ea: 4620 mov r0, r4
13ec: 4b0c ldr r3, [pc, #48] ; (1420 <p_tcc_init+0x74>)
13ee: 4798 blx r3
13f0: bd10 pop {r4, pc}
13f2: bf00 nop
13f4: e000e010 .word 0xe000e010
13f8: 000014ed .word 0x000014ed
13fc: 40000800 .word 0x40000800
1400: 40001c00 .word 0x40001c00
1404: 0000214b .word 0x0000214b
1408: 20006c04 .word 0x20006c04
140c: 40003800 .word 0x40003800
1410: 00001649 .word 0x00001649
1414: 20000098 .word 0x20000098
1418: 00001389 .word 0x00001389
141c: 000016c1 .word 0x000016c1
1420: 00001685 .word 0x00001685
00001424 <p_usart_init>:
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)
{
1424: b530 push {r4, r5, lr}
1426: b083 sub sp, #12
1428: 4b1f ldr r3, [pc, #124] ; (14a8 <p_usart_init+0x84>)
142a: 2240 movs r2, #64 ; 0x40
142c: f8c3 20dc str.w r2, [r3, #220] ; 0xdc
1430: 2243 movs r2, #67 ; 0x43
1432: f8c3 208c str.w r2, [r3, #140] ; 0x8c
}
static inline void hri_mclk_set_APBBMASK_SERCOM2_bit(const void *const hw)
{
MCLK_CRITICAL_SECTION_ENTER();
((Mclk *)hw)->APBBMASK.reg |= MCLK_APBBMASK_SERCOM2;
1436: 4a1d ldr r2, [pc, #116] ; (14ac <p_usart_init+0x88>)
1438: 6993 ldr r3, [r2, #24]
143a: f443 7300 orr.w r3, r3, #512 ; 0x200
143e: 6193 str r3, [r2, #24]
hri_gclk_write_PCHCTRL_reg(GCLK, SERCOM2_GCLK_ID_CORE, CONF_GCLK_SERCOM2_CORE_SRC | (1 << GCLK_PCHCTRL_CHEN_Pos));
hri_gclk_write_PCHCTRL_reg(GCLK, SERCOM2_GCLK_ID_SLOW, CONF_GCLK_SERCOM2_SLOW_SRC | (1 << GCLK_PCHCTRL_CHEN_Pos));
hri_mclk_set_APBBMASK_SERCOM2_bit(MCLK);
usart_async_init(&p_usart_debug_inst, USART_DEBUG_SERCOM, debug_rx_buff, DEBUG_USART_EX_BUFF_SIZE, (void*)NULL);
1440: 4c1b ldr r4, [pc, #108] ; (14b0 <p_usart_init+0x8c>)
1442: 2300 movs r3, #0
1444: 9300 str r3, [sp, #0]
1446: 2310 movs r3, #16
1448: 4a1a ldr r2, [pc, #104] ; (14b4 <p_usart_init+0x90>)
144a: 491b ldr r1, [pc, #108] ; (14b8 <p_usart_init+0x94>)
144c: 4620 mov r0, r4
144e: 4d1b ldr r5, [pc, #108] ; (14bc <p_usart_init+0x98>)
1450: 47a8 blx r5
tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg;
1452: 4b1b ldr r3, [pc, #108] ; (14c0 <p_usart_init+0x9c>)
1454: f893 20d8 ldrb.w r2, [r3, #216] ; 0xd8
tmp &= ~PORT_PINCFG_PMUXEN;
1458: f002 02fe and.w r2, r2, #254 ; 0xfe
tmp |= value << PORT_PINCFG_PMUXEN_Pos;
145c: f042 0201 orr.w r2, r2, #1
((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp;
1460: f883 20d8 strb.w r2, [r3, #216] ; 0xd8
tmp = ((Port *)hw)->Group[submodule_index].PMUX[index].reg;
1464: f893 20bc ldrb.w r2, [r3, #188] ; 0xbc
tmp &= ~PORT_PMUX_PMUXE_Msk;
1468: f002 02f0 and.w r2, r2, #240 ; 0xf0
tmp |= PORT_PMUX_PMUXE(data);
146c: f042 0203 orr.w r2, r2, #3
((Port *)hw)->Group[submodule_index].PMUX[index].reg = tmp;
1470: f883 20bc strb.w r2, [r3, #188] ; 0xbc
tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg;
1474: f893 20d9 ldrb.w r2, [r3, #217] ; 0xd9
tmp &= ~PORT_PINCFG_PMUXEN;
1478: f002 02fe and.w r2, r2, #254 ; 0xfe
tmp |= value << PORT_PINCFG_PMUXEN_Pos;
147c: f042 0201 orr.w r2, r2, #1
((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp;
1480: f883 20d9 strb.w r2, [r3, #217] ; 0xd9
tmp = ((Port *)hw)->Group[submodule_index].PMUX[index].reg;
1484: f893 20bc ldrb.w r2, [r3, #188] ; 0xbc
tmp &= ~PORT_PMUX_PMUXO_Msk;
1488: f002 020f and.w r2, r2, #15
tmp |= PORT_PMUX_PMUXO(data);
148c: f042 0230 orr.w r2, r2, #48 ; 0x30
((Port *)hw)->Group[submodule_index].PMUX[index].reg = tmp;
1490: 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);
1494: 4620 mov r0, r4
1496: 4b0b ldr r3, [pc, #44] ; (14c4 <p_usart_init+0xa0>)
1498: 4798 blx r3
io_write(&p_usart_debug_inst.io, example_USART_0, 12);
149a: 220c movs r2, #12
149c: 490a ldr r1, [pc, #40] ; (14c8 <p_usart_init+0xa4>)
149e: 4620 mov r0, r4
14a0: 4b0a ldr r3, [pc, #40] ; (14cc <p_usart_init+0xa8>)
14a2: 4798 blx r3
}
14a4: b003 add sp, #12
14a6: bd30 pop {r4, r5, pc}
14a8: 40001c00 .word 0x40001c00
14ac: 40000800 .word 0x40000800
14b0: 20006c20 .word 0x20006c20
14b4: 200000b4 .word 0x200000b4
14b8: 41012000 .word 0x41012000
14bc: 00001919 .word 0x00001919
14c0: 41008000 .word 0x41008000
14c4: 000019a9 .word 0x000019a9
14c8: 20000004 .word 0x20000004
14cc: 00001541 .word 0x00001541
000014d0 <atomic_enter_critical>:
__ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory");
14d0: f3ef 8310 mrs r3, PRIMASK
/**
* \brief Disable interrupts, enter critical section
*/
void atomic_enter_critical(hal_atomic_t volatile *atomic)
{
*atomic = __get_PRIMASK();
14d4: 6003 str r3, [r0, #0]
__ASM volatile ("cpsid i" : : : "memory");
14d6: 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");
14d8: f3bf 8f5f dmb sy
14dc: 4770 bx lr
000014de <atomic_leave_critical>:
14de: f3bf 8f5f dmb sy
* \brief Exit atomic section
*/
void atomic_leave_critical(hal_atomic_t volatile *atomic)
{
__DMB();
__set_PRIMASK(*atomic);
14e2: 6803 ldr r3, [r0, #0]
__ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory");
14e4: f383 8810 msr PRIMASK, r3
14e8: 4770 bx lr
...
000014ec <delay_init>:
/**
* \brief Initialize Delay driver
*/
void delay_init(void *const hw)
{
14ec: b508 push {r3, lr}
_delay_init(hardware = hw);
14ee: 4b02 ldr r3, [pc, #8] ; (14f8 <delay_init+0xc>)
14f0: 6018 str r0, [r3, #0]
14f2: 4b02 ldr r3, [pc, #8] ; (14fc <delay_init+0x10>)
14f4: 4798 blx r3
14f6: bd08 pop {r3, pc}
14f8: 200000c4 .word 0x200000c4
14fc: 00001b89 .word 0x00001b89
00001500 <delay_us>:
/**
* \brief Perform delay in us
*/
void delay_us(const uint16_t us)
{
1500: b510 push {r4, lr}
_delay_cycles(hardware, _get_cycles_for_us(us));
1502: 4b04 ldr r3, [pc, #16] ; (1514 <delay_us+0x14>)
1504: 681c ldr r4, [r3, #0]
1506: 4b04 ldr r3, [pc, #16] ; (1518 <delay_us+0x18>)
1508: 4798 blx r3
150a: 4601 mov r1, r0
150c: 4620 mov r0, r4
150e: 4b03 ldr r3, [pc, #12] ; (151c <delay_us+0x1c>)
1510: 4798 blx r3
1512: bd10 pop {r4, pc}
1514: 200000c4 .word 0x200000c4
1518: 00001b51 .word 0x00001b51
151c: 00001b91 .word 0x00001b91
00001520 <delay_ms>:
/**
* \brief Perform delay in ms
*/
void delay_ms(const uint16_t ms)
{
1520: b510 push {r4, lr}
_delay_cycles(hardware, _get_cycles_for_ms(ms));
1522: 4b04 ldr r3, [pc, #16] ; (1534 <delay_ms+0x14>)
1524: 681c ldr r4, [r3, #0]
1526: 4b04 ldr r3, [pc, #16] ; (1538 <delay_ms+0x18>)
1528: 4798 blx r3
152a: 4601 mov r1, r0
152c: 4620 mov r0, r4
152e: 4b03 ldr r3, [pc, #12] ; (153c <delay_ms+0x1c>)
1530: 4798 blx r3
1532: bd10 pop {r4, pc}
1534: 200000c4 .word 0x200000c4
1538: 00001b69 .word 0x00001b69
153c: 00001b91 .word 0x00001b91
00001540 <io_write>:
/**
* \brief I/O write interface
*/
int32_t io_write(struct io_descriptor *const io_descr, const uint8_t *const buf, const uint16_t length)
{
1540: b570 push {r4, r5, r6, lr}
1542: 460d mov r5, r1
1544: 4616 mov r6, r2
ASSERT(io_descr && buf);
1546: 4604 mov r4, r0
1548: b160 cbz r0, 1564 <io_write+0x24>
154a: 1c08 adds r0, r1, #0
154c: bf18 it ne
154e: 2001 movne r0, #1
1550: 2234 movs r2, #52 ; 0x34
1552: 4905 ldr r1, [pc, #20] ; (1568 <io_write+0x28>)
1554: 4b05 ldr r3, [pc, #20] ; (156c <io_write+0x2c>)
1556: 4798 blx r3
return io_descr->write(io_descr, buf, length);
1558: 6823 ldr r3, [r4, #0]
155a: 4632 mov r2, r6
155c: 4629 mov r1, r5
155e: 4620 mov r0, r4
1560: 4798 blx r3
}
1562: bd70 pop {r4, r5, r6, pc}
1564: 2000 movs r0, #0
1566: e7f3 b.n 1550 <io_write+0x10>
1568: 0001b54c .word 0x0001b54c
156c: 000019d5 .word 0x000019d5
00001570 <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)
{
1570: b5f8 push {r3, r4, r5, r6, r7, lr}
1572: 4684 mov ip, r0
* \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;
1574: 6807 ldr r7, [r0, #0]
struct timer_task *it, *prev = NULL, *head = (struct timer_task *)list_get_head(list);
if (!head) {
1576: b12f cbz r7, 1584 <timer_add_timer_task+0x14>
if (it->time_label <= time) {
time_left = it->interval - (time - it->time_label);
} else {
time_left = it->interval - (0xFFFFFFFF - it->time_label) - time;
}
if (time_left >= new_task->interval)
1578: 688d ldr r5, [r1, #8]
157a: 463c mov r4, r7
157c: 2600 movs r6, #0
time_left = it->interval - (0xFFFFFFFF - it->time_label) - time;
157e: f1c2 0e01 rsb lr, r2, #1
1582: e00b b.n 159c <timer_add_timer_task+0x2c>
list_insert_as_head(list, new_task);
1584: 4b0e ldr r3, [pc, #56] ; (15c0 <timer_add_timer_task+0x50>)
1586: 4798 blx r3
return;
1588: bdf8 pop {r3, r4, r5, r6, r7, pc}
time_left = it->interval - (0xFFFFFFFF - it->time_label) - time;
158a: 4473 add r3, lr
158c: 68a0 ldr r0, [r4, #8]
158e: 4403 add r3, r0
if (time_left >= new_task->interval)
1590: 42ab cmp r3, r5
1592: d20a bcs.n 15aa <timer_add_timer_task+0x3a>
* \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;
1594: 6823 ldr r3, [r4, #0]
1596: 4626 mov r6, r4
for (it = head; it; it = (struct timer_task *)list_get_next_element(it)) {
1598: b153 cbz r3, 15b0 <timer_add_timer_task+0x40>
159a: 461c mov r4, r3
if (it->time_label <= time) {
159c: 6863 ldr r3, [r4, #4]
159e: 4293 cmp r3, r2
15a0: d8f3 bhi.n 158a <timer_add_timer_task+0x1a>
time_left = it->interval - (time - it->time_label);
15a2: 68a0 ldr r0, [r4, #8]
15a4: 4403 add r3, r0
15a6: 1a9b subs r3, r3, r2
15a8: e7f2 b.n 1590 <timer_add_timer_task+0x20>
break;
prev = it;
}
if (it == head) {
15aa: 42a7 cmp r7, r4
15ac: d004 beq.n 15b8 <timer_add_timer_task+0x48>
15ae: 4634 mov r4, r6
list_insert_as_head(list, new_task);
} else {
list_insert_after(prev, new_task);
15b0: 4620 mov r0, r4
15b2: 4b04 ldr r3, [pc, #16] ; (15c4 <timer_add_timer_task+0x54>)
15b4: 4798 blx r3
15b6: bdf8 pop {r3, r4, r5, r6, r7, pc}
list_insert_as_head(list, new_task);
15b8: 4660 mov r0, ip
15ba: 4b01 ldr r3, [pc, #4] ; (15c0 <timer_add_timer_task+0x50>)
15bc: 4798 blx r3
15be: bdf8 pop {r3, r4, r5, r6, r7, pc}
15c0: 000019fd .word 0x000019fd
15c4: 00001a29 .word 0x00001a29
000015c8 <timer_process_counted>:
/**
* \internal Process interrupts
*/
static void timer_process_counted(struct _timer_device *device)
{
15c8: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
return (void *)list->head;
15cc: 6944 ldr r4, [r0, #20]
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;
15ce: 6907 ldr r7, [r0, #16]
15d0: 3701 adds r7, #1
15d2: 6107 str r7, [r0, #16]
if ((timer->flags & TIMER_FLAG_QUEUE_IS_TAKEN) || (timer->flags & TIMER_FLAG_INTERRUPT_TRIGERRED)) {
15d4: 7e03 ldrb r3, [r0, #24]
15d6: f013 0f01 tst.w r3, #1
15da: d113 bne.n 1604 <timer_process_counted+0x3c>
15dc: 7e03 ldrb r3, [r0, #24]
15de: f013 0f02 tst.w r3, #2
15e2: d10f bne.n 1604 <timer_process_counted+0x3c>
timer->flags |= TIMER_FLAG_INTERRUPT_TRIGERRED;
return;
}
while (it && ((time - it->time_label) >= it->interval)) {
15e4: b354 cbz r4, 163c <timer_process_counted+0x74>
15e6: 6863 ldr r3, [r4, #4]
15e8: 1afb subs r3, r7, r3
15ea: 68a2 ldr r2, [r4, #8]
15ec: 4293 cmp r3, r2
15ee: d307 bcc.n 1600 <timer_process_counted+0x38>
15f0: 4606 mov r6, r0
struct timer_task *tmp = it;
list_remove_head(&timer->tasks);
15f2: f100 0814 add.w r8, r0, #20
15f6: f8df 9048 ldr.w r9, [pc, #72] ; 1640 <timer_process_counted+0x78>
if (TIMER_TASK_REPEAT == tmp->mode) {
tmp->time_label = time;
timer_add_timer_task(&timer->tasks, tmp, time);
15fa: f8df a048 ldr.w sl, [pc, #72] ; 1644 <timer_process_counted+0x7c>
15fe: e012 b.n 1626 <timer_process_counted+0x5e>
1600: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
timer->flags |= TIMER_FLAG_INTERRUPT_TRIGERRED;
1604: 7e03 ldrb r3, [r0, #24]
1606: f043 0302 orr.w r3, r3, #2
160a: 7603 strb r3, [r0, #24]
return;
160c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
1610: 6975 ldr r5, [r6, #20]
}
it = (struct timer_task *)list_get_head(&timer->tasks);
tmp->cb(tmp);
1612: 68e3 ldr r3, [r4, #12]
1614: 4620 mov r0, r4
1616: 4798 blx r3
while (it && ((time - it->time_label) >= it->interval)) {
1618: b185 cbz r5, 163c <timer_process_counted+0x74>
it = (struct timer_task *)list_get_head(&timer->tasks);
161a: 462c mov r4, r5
while (it && ((time - it->time_label) >= it->interval)) {
161c: 686b ldr r3, [r5, #4]
161e: 1afb subs r3, r7, r3
1620: 68aa ldr r2, [r5, #8]
1622: 4293 cmp r3, r2
1624: d30a bcc.n 163c <timer_process_counted+0x74>
list_remove_head(&timer->tasks);
1626: 4640 mov r0, r8
1628: 47c8 blx r9
if (TIMER_TASK_REPEAT == tmp->mode) {
162a: 7c23 ldrb r3, [r4, #16]
162c: 2b01 cmp r3, #1
162e: d1ef bne.n 1610 <timer_process_counted+0x48>
tmp->time_label = time;
1630: 6067 str r7, [r4, #4]
timer_add_timer_task(&timer->tasks, tmp, time);
1632: 463a mov r2, r7
1634: 4621 mov r1, r4
1636: 4640 mov r0, r8
1638: 47d0 blx sl
163a: e7e9 b.n 1610 <timer_process_counted+0x48>
163c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
1640: 00001a31 .word 0x00001a31
1644: 00001571 .word 0x00001571
00001648 <timer_init>:
{
1648: b538 push {r3, r4, r5, lr}
164a: 460d mov r5, r1
ASSERT(descr && hw);
164c: 4604 mov r4, r0
164e: b178 cbz r0, 1670 <timer_init+0x28>
1650: 1c08 adds r0, r1, #0
1652: bf18 it ne
1654: 2001 movne r0, #1
1656: 223b movs r2, #59 ; 0x3b
1658: 4906 ldr r1, [pc, #24] ; (1674 <timer_init+0x2c>)
165a: 4b07 ldr r3, [pc, #28] ; (1678 <timer_init+0x30>)
165c: 4798 blx r3
_timer_init(&descr->device, hw);
165e: 4629 mov r1, r5
1660: 4620 mov r0, r4
1662: 4b06 ldr r3, [pc, #24] ; (167c <timer_init+0x34>)
1664: 4798 blx r3
descr->time = 0;
1666: 2000 movs r0, #0
1668: 6120 str r0, [r4, #16]
descr->device.timer_cb.period_expired = timer_process_counted;
166a: 4b05 ldr r3, [pc, #20] ; (1680 <timer_init+0x38>)
166c: 6023 str r3, [r4, #0]
}
166e: bd38 pop {r3, r4, r5, pc}
1670: 2000 movs r0, #0
1672: e7f0 b.n 1656 <timer_init+0xe>
1674: 0001b560 .word 0x0001b560
1678: 000019d5 .word 0x000019d5
167c: 00001f7d .word 0x00001f7d
1680: 000015c9 .word 0x000015c9
00001684 <timer_start>:
{
1684: b510 push {r4, lr}
ASSERT(descr);
1686: 4604 mov r4, r0
1688: 2253 movs r2, #83 ; 0x53
168a: 4909 ldr r1, [pc, #36] ; (16b0 <timer_start+0x2c>)
168c: 3000 adds r0, #0
168e: bf18 it ne
1690: 2001 movne r0, #1
1692: 4b08 ldr r3, [pc, #32] ; (16b4 <timer_start+0x30>)
1694: 4798 blx r3
if (_timer_is_started(&descr->device)) {
1696: 4620 mov r0, r4
1698: 4b07 ldr r3, [pc, #28] ; (16b8 <timer_start+0x34>)
169a: 4798 blx r3
169c: b920 cbnz r0, 16a8 <timer_start+0x24>
_timer_start(&descr->device);
169e: 4620 mov r0, r4
16a0: 4b06 ldr r3, [pc, #24] ; (16bc <timer_start+0x38>)
16a2: 4798 blx r3
return ERR_NONE;
16a4: 2000 movs r0, #0
16a6: bd10 pop {r4, pc}
return ERR_DENIED;
16a8: f06f 0010 mvn.w r0, #16
}
16ac: bd10 pop {r4, pc}
16ae: bf00 nop
16b0: 0001b560 .word 0x0001b560
16b4: 000019d5 .word 0x000019d5
16b8: 00002139 .word 0x00002139
16bc: 00002125 .word 0x00002125
000016c0 <timer_add_task>:
{
16c0: b570 push {r4, r5, r6, lr}
16c2: b082 sub sp, #8
16c4: 460d mov r5, r1
ASSERT(descr && task);
16c6: 4604 mov r4, r0
16c8: b318 cbz r0, 1712 <timer_add_task+0x52>
16ca: 1c08 adds r0, r1, #0
16cc: bf18 it ne
16ce: 2001 movne r0, #1
16d0: 227a movs r2, #122 ; 0x7a
16d2: 491e ldr r1, [pc, #120] ; (174c <timer_add_task+0x8c>)
16d4: 4b1e ldr r3, [pc, #120] ; (1750 <timer_add_task+0x90>)
16d6: 4798 blx r3
descr->flags |= TIMER_FLAG_QUEUE_IS_TAKEN;
16d8: 7e23 ldrb r3, [r4, #24]
16da: f043 0301 orr.w r3, r3, #1
16de: 7623 strb r3, [r4, #24]
if (is_list_element(&descr->tasks, task)) {
16e0: f104 0614 add.w r6, r4, #20
16e4: 4629 mov r1, r5
16e6: 4630 mov r0, r6
16e8: 4b1a ldr r3, [pc, #104] ; (1754 <timer_add_task+0x94>)
16ea: 4798 blx r3
16ec: b998 cbnz r0, 1716 <timer_add_task+0x56>
task->time_label = descr->time;
16ee: 6923 ldr r3, [r4, #16]
16f0: 606b str r3, [r5, #4]
timer_add_timer_task(&descr->tasks, task, descr->time);
16f2: 6922 ldr r2, [r4, #16]
16f4: 4629 mov r1, r5
16f6: 4630 mov r0, r6
16f8: 4b17 ldr r3, [pc, #92] ; (1758 <timer_add_task+0x98>)
16fa: 4798 blx r3
descr->flags &= ~TIMER_FLAG_QUEUE_IS_TAKEN;
16fc: 7e23 ldrb r3, [r4, #24]
16fe: f003 03fe and.w r3, r3, #254 ; 0xfe
1702: 7623 strb r3, [r4, #24]
if (descr->flags & TIMER_FLAG_INTERRUPT_TRIGERRED) {
1704: 7e23 ldrb r3, [r4, #24]
1706: f013 0f02 tst.w r3, #2
170a: d110 bne.n 172e <timer_add_task+0x6e>
return ERR_NONE;
170c: 2000 movs r0, #0
}
170e: b002 add sp, #8
1710: bd70 pop {r4, r5, r6, pc}
1712: 2000 movs r0, #0
1714: e7dc b.n 16d0 <timer_add_task+0x10>
descr->flags &= ~TIMER_FLAG_QUEUE_IS_TAKEN;
1716: 7e23 ldrb r3, [r4, #24]
1718: f003 03fe and.w r3, r3, #254 ; 0xfe
171c: 7623 strb r3, [r4, #24]
ASSERT(false);
171e: 227f movs r2, #127 ; 0x7f
1720: 490a ldr r1, [pc, #40] ; (174c <timer_add_task+0x8c>)
1722: 2000 movs r0, #0
1724: 4b0a ldr r3, [pc, #40] ; (1750 <timer_add_task+0x90>)
1726: 4798 blx r3
return ERR_ALREADY_INITIALIZED;
1728: f06f 0011 mvn.w r0, #17
172c: e7ef b.n 170e <timer_add_task+0x4e>
CRITICAL_SECTION_ENTER()
172e: a801 add r0, sp, #4
1730: 4b0a ldr r3, [pc, #40] ; (175c <timer_add_task+0x9c>)
1732: 4798 blx r3
descr->flags &= ~TIMER_FLAG_INTERRUPT_TRIGERRED;
1734: 7e23 ldrb r3, [r4, #24]
1736: f003 03fd and.w r3, r3, #253 ; 0xfd
173a: 7623 strb r3, [r4, #24]
_timer_set_irq(&descr->device);
173c: 4620 mov r0, r4
173e: 4b08 ldr r3, [pc, #32] ; (1760 <timer_add_task+0xa0>)
1740: 4798 blx r3
CRITICAL_SECTION_LEAVE()
1742: a801 add r0, sp, #4
1744: 4b07 ldr r3, [pc, #28] ; (1764 <timer_add_task+0xa4>)
1746: 4798 blx r3
return ERR_NONE;
1748: 2000 movs r0, #0
174a: e7e0 b.n 170e <timer_add_task+0x4e>
174c: 0001b560 .word 0x0001b560
1750: 000019d5 .word 0x000019d5
1754: 000019db .word 0x000019db
1758: 00001571 .word 0x00001571
175c: 000014d1 .word 0x000014d1
1760: 00002151 .word 0x00002151
1764: 000014df .word 0x000014df
00001768 <usart_transmission_complete>:
* \brief Process completion of data sending
*
* \param[in] device The pointer to device structure
*/
static void usart_transmission_complete(struct _usart_async_device *device)
{
1768: b508 push {r3, lr}
struct usart_async_descriptor *descr = CONTAINER_OF(device, struct usart_async_descriptor, device);
descr->stat = 0;
176a: 2300 movs r3, #0
176c: 6283 str r3, [r0, #40] ; 0x28
if (descr->usart_cb.tx_done) {
176e: 69c3 ldr r3, [r0, #28]
1770: b11b cbz r3, 177a <usart_transmission_complete+0x12>
1772: f1a0 0208 sub.w r2, r0, #8
descr->usart_cb.tx_done(descr);
1776: 4610 mov r0, r2
1778: 4798 blx r3
177a: bd08 pop {r3, pc}
0000177c <usart_error>:
* \brief Process error interrupt
*
* \param[in] device The pointer to device structure
*/
static void usart_error(struct _usart_async_device *device)
{
177c: b508 push {r3, lr}
struct usart_async_descriptor *descr = CONTAINER_OF(device, struct usart_async_descriptor, device);
descr->stat = 0;
177e: 2300 movs r3, #0
1780: 6283 str r3, [r0, #40] ; 0x28
if (descr->usart_cb.error) {
1782: 6a43 ldr r3, [r0, #36] ; 0x24
1784: b11b cbz r3, 178e <usart_error+0x12>
1786: f1a0 0208 sub.w r2, r0, #8
descr->usart_cb.error(descr);
178a: 4610 mov r0, r2
178c: 4798 blx r3
178e: bd08 pop {r3, pc}
00001790 <usart_fill_rx_buffer>:
{
1790: b538 push {r3, r4, r5, lr}
1792: 4604 mov r4, r0
struct usart_async_descriptor *descr = CONTAINER_OF(device, struct usart_async_descriptor, device);
1794: f1a0 0508 sub.w r5, r0, #8
ringbuffer_put(&descr->rx, data);
1798: 302c adds r0, #44 ; 0x2c
179a: 4b03 ldr r3, [pc, #12] ; (17a8 <usart_fill_rx_buffer+0x18>)
179c: 4798 blx r3
if (descr->usart_cb.rx_done) {
179e: 6a23 ldr r3, [r4, #32]
17a0: b10b cbz r3, 17a6 <usart_fill_rx_buffer+0x16>
descr->usart_cb.rx_done(descr);
17a2: 4628 mov r0, r5
17a4: 4798 blx r3
17a6: bd38 pop {r3, r4, r5, pc}
17a8: 00001ad1 .word 0x00001ad1
000017ac <usart_async_write>:
{
17ac: b570 push {r4, r5, r6, lr}
17ae: 460e mov r6, r1
17b0: 4615 mov r5, r2
ASSERT(descr && buf && length);
17b2: 4604 mov r4, r0
17b4: b1e0 cbz r0, 17f0 <usart_async_write+0x44>
17b6: b1e9 cbz r1, 17f4 <usart_async_write+0x48>
17b8: 1c10 adds r0, r2, #0
17ba: bf18 it ne
17bc: 2001 movne r0, #1
17be: f240 123b movw r2, #315 ; 0x13b
17c2: 490f ldr r1, [pc, #60] ; (1800 <usart_async_write+0x54>)
17c4: 4b0f ldr r3, [pc, #60] ; (1804 <usart_async_write+0x58>)
17c6: 4798 blx r3
if (descr->tx_por != descr->tx_buffer_length) {
17c8: f8b4 2044 ldrh.w r2, [r4, #68] ; 0x44
17cc: f8b4 304c ldrh.w r3, [r4, #76] ; 0x4c
17d0: 429a cmp r2, r3
17d2: d111 bne.n 17f8 <usart_async_write+0x4c>
descr->tx_buffer = (uint8_t *)buf;
17d4: 64a6 str r6, [r4, #72] ; 0x48
descr->tx_buffer_length = length;
17d6: f8a4 504c strh.w r5, [r4, #76] ; 0x4c
descr->tx_por = 0;
17da: 2300 movs r3, #0
17dc: f8a4 3044 strh.w r3, [r4, #68] ; 0x44
descr->stat = USART_ASYNC_STATUS_BUSY;
17e0: 2301 movs r3, #1
17e2: 6323 str r3, [r4, #48] ; 0x30
_usart_async_enable_byte_sent_irq(&descr->device);
17e4: f104 0008 add.w r0, r4, #8
17e8: 4b07 ldr r3, [pc, #28] ; (1808 <usart_async_write+0x5c>)
17ea: 4798 blx r3
return (int32_t)length;
17ec: 4628 mov r0, r5
17ee: bd70 pop {r4, r5, r6, pc}
ASSERT(descr && buf && length);
17f0: 2000 movs r0, #0
17f2: e7e4 b.n 17be <usart_async_write+0x12>
17f4: 2000 movs r0, #0
17f6: e7e2 b.n 17be <usart_async_write+0x12>
return ERR_NO_RESOURCE;
17f8: f06f 001b mvn.w r0, #27
}
17fc: bd70 pop {r4, r5, r6, pc}
17fe: bf00 nop
1800: 0001b578 .word 0x0001b578
1804: 000019d5 .word 0x000019d5
1808: 00001ebb .word 0x00001ebb
0000180c <usart_process_byte_sent>:
{
180c: b510 push {r4, lr}
180e: 4604 mov r4, r0
if (descr->tx_por != descr->tx_buffer_length) {
1810: 8f83 ldrh r3, [r0, #60] ; 0x3c
1812: f8b0 2044 ldrh.w r2, [r0, #68] ; 0x44
1816: 429a cmp r2, r3
1818: d009 beq.n 182e <usart_process_byte_sent+0x22>
_usart_async_write_byte(&descr->device, descr->tx_buffer[descr->tx_por++]);
181a: 6c02 ldr r2, [r0, #64] ; 0x40
181c: 1c59 adds r1, r3, #1
181e: 8781 strh r1, [r0, #60] ; 0x3c
1820: 5cd1 ldrb r1, [r2, r3]
1822: 4b04 ldr r3, [pc, #16] ; (1834 <usart_process_byte_sent+0x28>)
1824: 4798 blx r3
_usart_async_enable_byte_sent_irq(&descr->device);
1826: 4620 mov r0, r4
1828: 4b03 ldr r3, [pc, #12] ; (1838 <usart_process_byte_sent+0x2c>)
182a: 4798 blx r3
182c: bd10 pop {r4, pc}
_usart_async_enable_tx_done_irq(&descr->device);
182e: 4b03 ldr r3, [pc, #12] ; (183c <usart_process_byte_sent+0x30>)
1830: 4798 blx r3
1832: bd10 pop {r4, pc}
1834: 00001eb5 .word 0x00001eb5
1838: 00001ebb .word 0x00001ebb
183c: 00001ec3 .word 0x00001ec3
00001840 <usart_async_read>:
{
1840: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
1844: b082 sub sp, #8
1846: 460f mov r7, r1
1848: 4690 mov r8, r2
ASSERT(descr && buf && length);
184a: 4606 mov r6, r0
184c: b1a0 cbz r0, 1878 <usart_async_read+0x38>
184e: b199 cbz r1, 1878 <usart_async_read+0x38>
1850: 2a00 cmp r2, #0
1852: d12d bne.n 18b0 <usart_async_read+0x70>
1854: f44f 72ac mov.w r2, #344 ; 0x158
1858: 4929 ldr r1, [pc, #164] ; (1900 <usart_async_read+0xc0>)
185a: 2000 movs r0, #0
185c: 4b29 ldr r3, [pc, #164] ; (1904 <usart_async_read+0xc4>)
185e: 4798 blx r3
CRITICAL_SECTION_ENTER()
1860: a801 add r0, sp, #4
1862: 4b29 ldr r3, [pc, #164] ; (1908 <usart_async_read+0xc8>)
1864: 4798 blx r3
num = ringbuffer_num(&descr->rx);
1866: f106 0034 add.w r0, r6, #52 ; 0x34
186a: 4b28 ldr r3, [pc, #160] ; (190c <usart_async_read+0xcc>)
186c: 4798 blx r3
CRITICAL_SECTION_LEAVE()
186e: a801 add r0, sp, #4
1870: 4b27 ldr r3, [pc, #156] ; (1910 <usart_async_read+0xd0>)
1872: 4798 blx r3
uint16_t was_read = 0;
1874: 2500 movs r5, #0
return (int32_t)was_read;
1876: e03e b.n 18f6 <usart_async_read+0xb6>
ASSERT(descr && buf && length);
1878: f44f 72ac mov.w r2, #344 ; 0x158
187c: 4920 ldr r1, [pc, #128] ; (1900 <usart_async_read+0xc0>)
187e: 2000 movs r0, #0
1880: 4b20 ldr r3, [pc, #128] ; (1904 <usart_async_read+0xc4>)
1882: 4798 blx r3
CRITICAL_SECTION_ENTER()
1884: a801 add r0, sp, #4
1886: 4b20 ldr r3, [pc, #128] ; (1908 <usart_async_read+0xc8>)
1888: 4798 blx r3
num = ringbuffer_num(&descr->rx);
188a: f106 0a34 add.w sl, r6, #52 ; 0x34
188e: 4650 mov r0, sl
1890: 4b1e ldr r3, [pc, #120] ; (190c <usart_async_read+0xcc>)
1892: 4798 blx r3
1894: 4681 mov r9, r0
CRITICAL_SECTION_LEAVE()
1896: a801 add r0, sp, #4
1898: 4b1d ldr r3, [pc, #116] ; (1910 <usart_async_read+0xd0>)
189a: 4798 blx r3
while ((was_read < num) && (was_read < length)) {
189c: f1b9 0f00 cmp.w r9, #0
18a0: d004 beq.n 18ac <usart_async_read+0x6c>
18a2: f1b8 0f00 cmp.w r8, #0
18a6: d119 bne.n 18dc <usart_async_read+0x9c>
uint16_t was_read = 0;
18a8: 2500 movs r5, #0
18aa: e024 b.n 18f6 <usart_async_read+0xb6>
18ac: 2500 movs r5, #0
18ae: e022 b.n 18f6 <usart_async_read+0xb6>
ASSERT(descr && buf && length);
18b0: f44f 72ac mov.w r2, #344 ; 0x158
18b4: 4912 ldr r1, [pc, #72] ; (1900 <usart_async_read+0xc0>)
18b6: 2001 movs r0, #1
18b8: 4b12 ldr r3, [pc, #72] ; (1904 <usart_async_read+0xc4>)
18ba: 4798 blx r3
CRITICAL_SECTION_ENTER()
18bc: a801 add r0, sp, #4
18be: 4b12 ldr r3, [pc, #72] ; (1908 <usart_async_read+0xc8>)
18c0: 4798 blx r3
num = ringbuffer_num(&descr->rx);
18c2: f106 0a34 add.w sl, r6, #52 ; 0x34
18c6: 4650 mov r0, sl
18c8: 4b10 ldr r3, [pc, #64] ; (190c <usart_async_read+0xcc>)
18ca: 4798 blx r3
18cc: 4681 mov r9, r0
CRITICAL_SECTION_LEAVE()
18ce: a801 add r0, sp, #4
18d0: 4b0f ldr r3, [pc, #60] ; (1910 <usart_async_read+0xd0>)
18d2: 4798 blx r3
uint16_t was_read = 0;
18d4: 2500 movs r5, #0
while ((was_read < num) && (was_read < length)) {
18d6: f1b9 0f00 cmp.w r9, #0
18da: d00c beq.n 18f6 <usart_async_read+0xb6>
{
18dc: 2400 movs r4, #0
ringbuffer_get(&descr->rx, &buf[was_read++]);
18de: 4e0d ldr r6, [pc, #52] ; (1914 <usart_async_read+0xd4>)
18e0: 1c60 adds r0, r4, #1
18e2: b285 uxth r5, r0
18e4: 1939 adds r1, r7, r4
18e6: 4650 mov r0, sl
18e8: 47b0 blx r6
18ea: 3401 adds r4, #1
while ((was_read < num) && (was_read < length)) {
18ec: 454c cmp r4, r9
18ee: d202 bcs.n 18f6 <usart_async_read+0xb6>
18f0: b2a3 uxth r3, r4
18f2: 4598 cmp r8, r3
18f4: d8f4 bhi.n 18e0 <usart_async_read+0xa0>
}
18f6: 4628 mov r0, r5
18f8: b002 add sp, #8
18fa: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
18fe: bf00 nop
1900: 0001b578 .word 0x0001b578
1904: 000019d5 .word 0x000019d5
1908: 000014d1 .word 0x000014d1
190c: 00001b11 .word 0x00001b11
1910: 000014df .word 0x000014df
1914: 00001a8d .word 0x00001a8d
00001918 <usart_async_init>:
{
1918: b5f8 push {r3, r4, r5, r6, r7, lr}
191a: 460d mov r5, r1
191c: 4616 mov r6, r2
191e: 461f mov r7, r3
ASSERT(descr && hw && rx_buffer && rx_buffer_length);
1920: 4604 mov r4, r0
1922: b320 cbz r0, 196e <usart_async_init+0x56>
1924: b329 cbz r1, 1972 <usart_async_init+0x5a>
1926: b332 cbz r2, 1976 <usart_async_init+0x5e>
1928: 1c18 adds r0, r3, #0
192a: bf18 it ne
192c: 2001 movne r0, #1
192e: 223a movs r2, #58 ; 0x3a
1930: 4913 ldr r1, [pc, #76] ; (1980 <usart_async_init+0x68>)
1932: 4b14 ldr r3, [pc, #80] ; (1984 <usart_async_init+0x6c>)
1934: 4798 blx r3
if (ERR_NONE != ringbuffer_init(&descr->rx, rx_buffer, rx_buffer_length)) {
1936: 463a mov r2, r7
1938: 4631 mov r1, r6
193a: f104 0034 add.w r0, r4, #52 ; 0x34
193e: 4b12 ldr r3, [pc, #72] ; (1988 <usart_async_init+0x70>)
1940: 4798 blx r3
1942: b9d0 cbnz r0, 197a <usart_async_init+0x62>
init_status = _usart_async_init(&descr->device, hw);
1944: 4629 mov r1, r5
1946: f104 0008 add.w r0, r4, #8
194a: 4b10 ldr r3, [pc, #64] ; (198c <usart_async_init+0x74>)
194c: 4798 blx r3
if (init_status) {
194e: 4603 mov r3, r0
1950: b958 cbnz r0, 196a <usart_async_init+0x52>
descr->io.read = usart_async_read;
1952: 4a0f ldr r2, [pc, #60] ; (1990 <usart_async_init+0x78>)
1954: 6062 str r2, [r4, #4]
descr->io.write = usart_async_write;
1956: 4a0f ldr r2, [pc, #60] ; (1994 <usart_async_init+0x7c>)
1958: 6022 str r2, [r4, #0]
descr->device.usart_cb.tx_byte_sent = usart_process_byte_sent;
195a: 4a0f ldr r2, [pc, #60] ; (1998 <usart_async_init+0x80>)
195c: 60a2 str r2, [r4, #8]
descr->device.usart_cb.rx_done_cb = usart_fill_rx_buffer;
195e: 4a0f ldr r2, [pc, #60] ; (199c <usart_async_init+0x84>)
1960: 60e2 str r2, [r4, #12]
descr->device.usart_cb.tx_done_cb = usart_transmission_complete;
1962: 4a0f ldr r2, [pc, #60] ; (19a0 <usart_async_init+0x88>)
1964: 6122 str r2, [r4, #16]
descr->device.usart_cb.error_cb = usart_error;
1966: 4a0f ldr r2, [pc, #60] ; (19a4 <usart_async_init+0x8c>)
1968: 6162 str r2, [r4, #20]
}
196a: 4618 mov r0, r3
196c: bdf8 pop {r3, r4, r5, r6, r7, pc}
ASSERT(descr && hw && rx_buffer && rx_buffer_length);
196e: 2000 movs r0, #0
1970: e7dd b.n 192e <usart_async_init+0x16>
1972: 2000 movs r0, #0
1974: e7db b.n 192e <usart_async_init+0x16>
1976: 2000 movs r0, #0
1978: e7d9 b.n 192e <usart_async_init+0x16>
return ERR_INVALID_ARG;
197a: f06f 030c mvn.w r3, #12
197e: e7f4 b.n 196a <usart_async_init+0x52>
1980: 0001b578 .word 0x0001b578
1984: 000019d5 .word 0x000019d5
1988: 00001a3d .word 0x00001a3d
198c: 00001e1d .word 0x00001e1d
1990: 00001841 .word 0x00001841
1994: 000017ad .word 0x000017ad
1998: 0000180d .word 0x0000180d
199c: 00001791 .word 0x00001791
19a0: 00001769 .word 0x00001769
19a4: 0000177d .word 0x0000177d
000019a8 <usart_async_enable>:
{
19a8: b510 push {r4, lr}
ASSERT(descr);
19aa: 4604 mov r4, r0
19ac: 2261 movs r2, #97 ; 0x61
19ae: 4906 ldr r1, [pc, #24] ; (19c8 <usart_async_enable+0x20>)
19b0: 3000 adds r0, #0
19b2: bf18 it ne
19b4: 2001 movne r0, #1
19b6: 4b05 ldr r3, [pc, #20] ; (19cc <usart_async_enable+0x24>)
19b8: 4798 blx r3
_usart_async_enable(&descr->device);
19ba: f104 0008 add.w r0, r4, #8
19be: 4b04 ldr r3, [pc, #16] ; (19d0 <usart_async_enable+0x28>)
19c0: 4798 blx r3
}
19c2: 2000 movs r0, #0
19c4: bd10 pop {r4, pc}
19c6: bf00 nop
19c8: 0001b578 .word 0x0001b578
19cc: 000019d5 .word 0x000019d5
19d0: 00001ea1 .word 0x00001ea1
000019d4 <assert>:
/**
* \brief Assert function
*/
void assert(const bool condition, const char *const file, const int line)
{
if (!(condition)) {
19d4: b900 cbnz r0, 19d8 <assert+0x4>
__asm("BKPT #0");
19d6: be00 bkpt 0x0000
19d8: 4770 bx lr
000019da <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) {
19da: 6803 ldr r3, [r0, #0]
19dc: b14b cbz r3, 19f2 <is_list_element+0x18>
if (it == element) {
19de: 428b cmp r3, r1
19e0: d009 beq.n 19f6 <is_list_element+0x1c>
for (it = list->head; it; it = it->next) {
19e2: 681b ldr r3, [r3, #0]
19e4: b11b cbz r3, 19ee <is_list_element+0x14>
if (it == element) {
19e6: 4299 cmp r1, r3
19e8: d1fb bne.n 19e2 <is_list_element+0x8>
return true;
19ea: 2001 movs r0, #1
}
}
return false;
}
19ec: 4770 bx lr
return false;
19ee: 2000 movs r0, #0
19f0: 4770 bx lr
19f2: 2000 movs r0, #0
19f4: 4770 bx lr
return true;
19f6: 2001 movs r0, #1
19f8: 4770 bx lr
...
000019fc <list_insert_as_head>:
/**
* \brief Insert an element as list head
*/
void list_insert_as_head(struct list_descriptor *const list, void *const element)
{
19fc: b538 push {r3, r4, r5, lr}
19fe: 4604 mov r4, r0
1a00: 460d mov r5, r1
ASSERT(!is_list_element(list, element));
1a02: 4b06 ldr r3, [pc, #24] ; (1a1c <list_insert_as_head+0x20>)
1a04: 4798 blx r3
1a06: f080 0001 eor.w r0, r0, #1
1a0a: 2239 movs r2, #57 ; 0x39
1a0c: 4904 ldr r1, [pc, #16] ; (1a20 <list_insert_as_head+0x24>)
1a0e: b2c0 uxtb r0, r0
1a10: 4b04 ldr r3, [pc, #16] ; (1a24 <list_insert_as_head+0x28>)
1a12: 4798 blx r3
((struct list_element *)element)->next = list->head;
1a14: 6823 ldr r3, [r4, #0]
1a16: 602b str r3, [r5, #0]
list->head = (struct list_element *)element;
1a18: 6025 str r5, [r4, #0]
1a1a: bd38 pop {r3, r4, r5, pc}
1a1c: 000019db .word 0x000019db
1a20: 0001b598 .word 0x0001b598
1a24: 000019d5 .word 0x000019d5
00001a28 <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;
1a28: 6803 ldr r3, [r0, #0]
1a2a: 600b str r3, [r1, #0]
((struct list_element *)after)->next = (struct list_element *)element;
1a2c: 6001 str r1, [r0, #0]
1a2e: 4770 bx lr
00001a30 <list_remove_head>:
/**
* \brief Removes list head
*/
void *list_remove_head(struct list_descriptor *const list)
{
if (list->head) {
1a30: 6803 ldr r3, [r0, #0]
1a32: b10b cbz r3, 1a38 <list_remove_head+0x8>
struct list_element *tmp = list->head;
list->head = list->head->next;
1a34: 681a ldr r2, [r3, #0]
1a36: 6002 str r2, [r0, #0]
return (void *)tmp;
}
return NULL;
}
1a38: 4618 mov r0, r3
1a3a: 4770 bx lr
00001a3c <ringbuffer_init>:
/**
* \brief Ringbuffer init
*/
int32_t ringbuffer_init(struct ringbuffer *const rb, void *buf, uint32_t size)
{
1a3c: b570 push {r4, r5, r6, lr}
1a3e: 460e mov r6, r1
1a40: 4615 mov r5, r2
ASSERT(rb && buf && size);
1a42: 4604 mov r4, r0
1a44: b178 cbz r0, 1a66 <ringbuffer_init+0x2a>
1a46: b181 cbz r1, 1a6a <ringbuffer_init+0x2e>
1a48: b1a2 cbz r2, 1a74 <ringbuffer_init+0x38>
1a4a: 2001 movs r0, #1
1a4c: 2228 movs r2, #40 ; 0x28
1a4e: 490d ldr r1, [pc, #52] ; (1a84 <ringbuffer_init+0x48>)
1a50: 4b0d ldr r3, [pc, #52] ; (1a88 <ringbuffer_init+0x4c>)
1a52: 4798 blx r3
/*
* buf size must be aligned to power of 2
*/
if ((size & (size - 1)) != 0) {
1a54: 1e6b subs r3, r5, #1
1a56: 421d tst r5, r3
1a58: d109 bne.n 1a6e <ringbuffer_init+0x32>
return ERR_INVALID_ARG;
}
/* size - 1 is faster in calculation */
rb->size = size - 1;
1a5a: 6063 str r3, [r4, #4]
rb->read_index = 0;
1a5c: 2000 movs r0, #0
1a5e: 60a0 str r0, [r4, #8]
rb->write_index = rb->read_index;
1a60: 60e0 str r0, [r4, #12]
rb->buf = (uint8_t *)buf;
1a62: 6026 str r6, [r4, #0]
return ERR_NONE;
1a64: bd70 pop {r4, r5, r6, pc}
ASSERT(rb && buf && size);
1a66: 2000 movs r0, #0
1a68: e7f0 b.n 1a4c <ringbuffer_init+0x10>
1a6a: 2000 movs r0, #0
1a6c: e7ee b.n 1a4c <ringbuffer_init+0x10>
return ERR_INVALID_ARG;
1a6e: f06f 000c mvn.w r0, #12
1a72: bd70 pop {r4, r5, r6, pc}
ASSERT(rb && buf && size);
1a74: 2228 movs r2, #40 ; 0x28
1a76: 4903 ldr r1, [pc, #12] ; (1a84 <ringbuffer_init+0x48>)
1a78: 2000 movs r0, #0
1a7a: 4b03 ldr r3, [pc, #12] ; (1a88 <ringbuffer_init+0x4c>)
1a7c: 4798 blx r3
if ((size & (size - 1)) != 0) {
1a7e: 1e6b subs r3, r5, #1
1a80: e7eb b.n 1a5a <ringbuffer_init+0x1e>
1a82: bf00 nop
1a84: 0001b5b8 .word 0x0001b5b8
1a88: 000019d5 .word 0x000019d5
00001a8c <ringbuffer_get>:
/**
* \brief Get one byte from ringbuffer
*
*/
int32_t ringbuffer_get(struct ringbuffer *const rb, uint8_t *data)
{
1a8c: b538 push {r3, r4, r5, lr}
1a8e: 460d mov r5, r1
ASSERT(rb && data);
1a90: 4604 mov r4, r0
1a92: b1a0 cbz r0, 1abe <ringbuffer_get+0x32>
1a94: 1c08 adds r0, r1, #0
1a96: bf18 it ne
1a98: 2001 movne r0, #1
1a9a: 2240 movs r2, #64 ; 0x40
1a9c: 490a ldr r1, [pc, #40] ; (1ac8 <ringbuffer_get+0x3c>)
1a9e: 4b0b ldr r3, [pc, #44] ; (1acc <ringbuffer_get+0x40>)
1aa0: 4798 blx r3
if (rb->write_index != rb->read_index) {
1aa2: 68a3 ldr r3, [r4, #8]
1aa4: 68e2 ldr r2, [r4, #12]
1aa6: 429a cmp r2, r3
1aa8: d00b beq.n 1ac2 <ringbuffer_get+0x36>
*data = rb->buf[rb->read_index & rb->size];
1aaa: 6862 ldr r2, [r4, #4]
1aac: 4013 ands r3, r2
1aae: 6822 ldr r2, [r4, #0]
1ab0: 5cd3 ldrb r3, [r2, r3]
1ab2: 702b strb r3, [r5, #0]
rb->read_index++;
1ab4: 68a3 ldr r3, [r4, #8]
1ab6: 3301 adds r3, #1
1ab8: 60a3 str r3, [r4, #8]
return ERR_NONE;
1aba: 2000 movs r0, #0
1abc: bd38 pop {r3, r4, r5, pc}
1abe: 2000 movs r0, #0
1ac0: e7eb b.n 1a9a <ringbuffer_get+0xe>
}
return ERR_NOT_FOUND;
1ac2: f06f 0009 mvn.w r0, #9
}
1ac6: bd38 pop {r3, r4, r5, pc}
1ac8: 0001b5b8 .word 0x0001b5b8
1acc: 000019d5 .word 0x000019d5
00001ad0 <ringbuffer_put>:
/**
* \brief Put one byte to ringbuffer
*
*/
int32_t ringbuffer_put(struct ringbuffer *const rb, uint8_t data)
{
1ad0: b538 push {r3, r4, r5, lr}
1ad2: 460d mov r5, r1
ASSERT(rb);
1ad4: 4604 mov r4, r0
1ad6: 2251 movs r2, #81 ; 0x51
1ad8: 490b ldr r1, [pc, #44] ; (1b08 <ringbuffer_put+0x38>)
1ada: 3000 adds r0, #0
1adc: bf18 it ne
1ade: 2001 movne r0, #1
1ae0: 4b0a ldr r3, [pc, #40] ; (1b0c <ringbuffer_put+0x3c>)
1ae2: 4798 blx r3
rb->buf[rb->write_index & rb->size] = data;
1ae4: 68e3 ldr r3, [r4, #12]
1ae6: 6862 ldr r2, [r4, #4]
1ae8: 4013 ands r3, r2
1aea: 6822 ldr r2, [r4, #0]
1aec: 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) {
1aee: 68e3 ldr r3, [r4, #12]
1af0: 6861 ldr r1, [r4, #4]
1af2: 68a2 ldr r2, [r4, #8]
1af4: 1a9a subs r2, r3, r2
1af6: 428a cmp r2, r1
rb->read_index = rb->write_index - rb->size;
1af8: bf84 itt hi
1afa: 1a59 subhi r1, r3, r1
1afc: 60a1 strhi r1, [r4, #8]
}
rb->write_index++;
1afe: 3301 adds r3, #1
1b00: 60e3 str r3, [r4, #12]
return ERR_NONE;
}
1b02: 2000 movs r0, #0
1b04: bd38 pop {r3, r4, r5, pc}
1b06: bf00 nop
1b08: 0001b5b8 .word 0x0001b5b8
1b0c: 000019d5 .word 0x000019d5
00001b10 <ringbuffer_num>:
/**
* \brief Return the element number of ringbuffer
*/
uint32_t ringbuffer_num(const struct ringbuffer *const rb)
{
1b10: b510 push {r4, lr}
ASSERT(rb);
1b12: 4604 mov r4, r0
1b14: 2267 movs r2, #103 ; 0x67
1b16: 4905 ldr r1, [pc, #20] ; (1b2c <ringbuffer_num+0x1c>)
1b18: 3000 adds r0, #0
1b1a: bf18 it ne
1b1c: 2001 movne r0, #1
1b1e: 4b04 ldr r3, [pc, #16] ; (1b30 <ringbuffer_num+0x20>)
1b20: 4798 blx r3
return rb->write_index - rb->read_index;
1b22: 68e0 ldr r0, [r4, #12]
1b24: 68a3 ldr r3, [r4, #8]
}
1b26: 1ac0 subs r0, r0, r3
1b28: bd10 pop {r4, pc}
1b2a: bf00 nop
1b2c: 0001b5b8 .word 0x0001b5b8
1b30: 000019d5 .word 0x000019d5
00001b34 <_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));
1b34: 0943 lsrs r3, r0, #5
1b36: f000 001f and.w r0, r0, #31
1b3a: 2201 movs r2, #1
1b3c: fa02 f000 lsl.w r0, r2, r0
1b40: 3340 adds r3, #64 ; 0x40
1b42: 4a02 ldr r2, [pc, #8] ; (1b4c <_irq_set+0x18>)
1b44: f842 0023 str.w r0, [r2, r3, lsl #2]
1b48: 4770 bx lr
1b4a: bf00 nop
1b4c: e000e100 .word 0xe000e100
00001b50 <_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;
1b50: ebc0 00c0 rsb r0, r0, r0, lsl #3
1b54: eb00 1000 add.w r0, r0, r0, lsl #4
1b58: 3002 adds r0, #2
1b5a: 4b02 ldr r3, [pc, #8] ; (1b64 <_get_cycles_for_us+0x14>)
1b5c: fba3 3000 umull r3, r0, r3, r0
* \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);
}
1b60: 0840 lsrs r0, r0, #1
1b62: 4770 bx lr
1b64: aaaaaaab .word 0xaaaaaaab
00001b68 <_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;
1b68: ebc0 00c0 rsb r0, r0, r0, lsl #3
1b6c: eb00 1000 add.w r0, r0, r0, lsl #4
1b70: 3002 adds r0, #2
1b72: 4b04 ldr r3, [pc, #16] ; (1b84 <_get_cycles_for_ms+0x1c>)
1b74: fba3 3000 umull r3, r0, r3, r0
1b78: 0840 lsrs r0, r0, #1
* \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);
}
1b7a: f44f 737a mov.w r3, #1000 ; 0x3e8
1b7e: fb03 f000 mul.w r0, r3, r0
1b82: 4770 bx lr
1b84: aaaaaaab .word 0xaaaaaaab
00001b88 <_delay_init>:
/**
* \brief Initialize delay functionality
*/
void _delay_init(void *const hw)
{
1b88: 4770 bx lr
1b8a: 0000 movs r0, r0
1b8c: 0000 movs r0, r0
...
00001b90 <_delay_cycles>:
__asm(".align 3 \n"
"__delay:\n"
"subs r1, r1, #1\n"
"bhi __delay\n");
#elif defined __GNUC__
__asm(".syntax unified\n"
1b90: 3901 subs r1, #1
1b92: d8fd bhi.n 1b90 <_delay_cycles>
1b94: 4770 bx lr
1b96: bf00 nop
00001b98 <_init_chip>:
/**
* \brief Initialize the hardware abstraction layer
*/
void _init_chip(void)
{
1b98: b508 push {r3, lr}
}
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);
1b9a: 4a09 ldr r2, [pc, #36] ; (1bc0 <_init_chip+0x28>)
1b9c: 8813 ldrh r3, [r2, #0]
1b9e: b29b uxth r3, r3
1ba0: f443 63a0 orr.w r3, r3, #1280 ; 0x500
1ba4: 8013 strh r3, [r2, #0]
hri_nvmctrl_set_CTRLA_RWS_bf(NVMCTRL, CONF_NVM_WAIT_STATE);
_osc32kctrl_init_sources();
1ba6: 4b07 ldr r3, [pc, #28] ; (1bc4 <_init_chip+0x2c>)
1ba8: 4798 blx r3
_oscctrl_init_sources();
1baa: 4b07 ldr r3, [pc, #28] ; (1bc8 <_init_chip+0x30>)
1bac: 4798 blx r3
_mclk_init();
1bae: 4b07 ldr r3, [pc, #28] ; (1bcc <_init_chip+0x34>)
1bb0: 4798 blx r3
#if _GCLK_INIT_1ST
_gclk_init_generators_by_fref(_GCLK_INIT_1ST);
#endif
_oscctrl_init_referenced_generators();
1bb2: 4b07 ldr r3, [pc, #28] ; (1bd0 <_init_chip+0x38>)
1bb4: 4798 blx r3
_gclk_init_generators_by_fref(_GCLK_INIT_LAST);
1bb6: f640 70ff movw r0, #4095 ; 0xfff
1bba: 4b06 ldr r3, [pc, #24] ; (1bd4 <_init_chip+0x3c>)
1bbc: 4798 blx r3
1bbe: bd08 pop {r3, pc}
1bc0: 41004000 .word 0x41004000
1bc4: 00001c09 .word 0x00001c09
1bc8: 00001c29 .word 0x00001c29
1bcc: 00001bfd .word 0x00001bfd
1bd0: 00001c2d .word 0x00001c2d
1bd4: 00001bd9 .word 0x00001bd9
00001bd8 <_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)) {
1bd8: f010 0f01 tst.w r0, #1
1bdc: d008 beq.n 1bf0 <_gclk_init_generators_by_fref+0x18>
((Gclk *)hw)->GENCTRL[index].reg = data;
1bde: 4a05 ldr r2, [pc, #20] ; (1bf4 <_gclk_init_generators_by_fref+0x1c>)
1be0: 4b05 ldr r3, [pc, #20] ; (1bf8 <_gclk_init_generators_by_fref+0x20>)
1be2: 621a str r2, [r3, #32]
while (((Gclk *)hw)->SYNCBUSY.reg & reg) {
1be4: 4619 mov r1, r3
1be6: f643 72fd movw r2, #16381 ; 0x3ffd
1bea: 684b ldr r3, [r1, #4]
1bec: 4213 tst r3, r2
1bee: d1fc bne.n 1bea <_gclk_init_generators_by_fref+0x12>
1bf0: 4770 bx lr
1bf2: bf00 nop
1bf4: 00010107 .word 0x00010107
1bf8: 40001c00 .word 0x40001c00
00001bfc <_mclk_init>:
((Mclk *)hw)->CPUDIV.reg = data;
1bfc: 2201 movs r2, #1
1bfe: 4b01 ldr r3, [pc, #4] ; (1c04 <_mclk_init+0x8>)
1c00: 715a strb r2, [r3, #5]
1c02: 4770 bx lr
1c04: 40000800 .word 0x40000800
00001c08 <_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;
1c08: 4b06 ldr r3, [pc, #24] ; (1c24 <_osc32kctrl_init_sources+0x1c>)
1c0a: f242 328e movw r2, #9102 ; 0x238e
1c0e: 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;
1c10: 2200 movs r2, #0
1c12: 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;
1c14: 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;
1c16: 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)
1c18: 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;
1c1c: 61da str r2, [r3, #28]
((Osc32kctrl *)hw)->RTCCTRL.reg = data;
1c1e: 2201 movs r2, #1
1c20: 741a strb r2, [r3, #16]
1c22: 4770 bx lr
1c24: 40001400 .word 0x40001400
00001c28 <_oscctrl_init_sources>:
/**
* \brief Initialize clock sources
*/
void _oscctrl_init_sources(void)
{
1c28: 4770 bx lr
...
00001c2c <_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;
1c2c: 4a0e ldr r2, [pc, #56] ; (1c68 <_oscctrl_init_referenced_generators+0x3c>)
1c2e: 4b0f ldr r3, [pc, #60] ; (1c6c <_oscctrl_init_referenced_generators+0x40>)
1c30: 635a str r2, [r3, #52] ; 0x34
while (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSYNCBUSY.reg & reg) {
1c32: 461a mov r2, r3
1c34: 6bd3 ldr r3, [r2, #60] ; 0x3c
1c36: f013 0f06 tst.w r3, #6
1c3a: d1fb bne.n 1c34 <_oscctrl_init_referenced_generators+0x8>
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;
1c3c: 4b0b ldr r3, [pc, #44] ; (1c6c <_oscctrl_init_referenced_generators+0x40>)
1c3e: f44f 6202 mov.w r2, #2080 ; 0x820
1c42: 639a str r2, [r3, #56] ; 0x38
((Oscctrl *)hw)->Dpll[submodule_index].DPLLCTRLA.reg = data;
1c44: 2202 movs r2, #2
1c46: f883 2030 strb.w r2, [r3, #48] ; 0x30
while (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSYNCBUSY.reg & reg) {
1c4a: 461a mov r2, r3
1c4c: 6bd3 ldr r3, [r2, #60] ; 0x3c
1c4e: f013 0f02 tst.w r3, #2
1c52: d1fb bne.n 1c4c <_oscctrl_init_referenced_generators+0x20>
return (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSTATUS.reg & OSCCTRL_DPLLSTATUS_LOCK)
1c54: 4b05 ldr r3, [pc, #20] ; (1c6c <_oscctrl_init_referenced_generators+0x40>)
1c56: 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)))
1c58: f012 0f01 tst.w r2, #1
1c5c: d103 bne.n 1c66 <_oscctrl_init_referenced_generators+0x3a>
return (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSTATUS.reg & OSCCTRL_DPLLSTATUS_CLKRDY)
1c5e: 6c1a ldr r2, [r3, #64] ; 0x40
1c60: f012 0f02 tst.w r2, #2
1c64: d0f7 beq.n 1c56 <_oscctrl_init_referenced_generators+0x2a>
1c66: 4770 bx lr
1c68: 00010e4d .word 0x00010e4d
1c6c: 40001000 .word 0x40001000
00001c70 <RAMECC_Handler>:
/**
* \internal RAMECC interrupt handler
*/
void RAMECC_Handler(void)
{
1c70: b500 push {lr}
1c72: b083 sub sp, #12
return tmp;
}
static inline hri_ramecc_intflag_reg_t hri_ramecc_read_INTFLAG_reg(const void *const hw)
{
return ((Ramecc *)hw)->INTFLAG.reg;
1c74: 4b0d ldr r3, [pc, #52] ; (1cac <RAMECC_Handler+0x3c>)
1c76: 789b ldrb r3, [r3, #2]
1c78: b2db uxtb r3, r3
struct _ramecc_device *dev = (struct _ramecc_device *)&device;
volatile uint32_t int_mask = hri_ramecc_read_INTFLAG_reg(RAMECC);
1c7a: 9301 str r3, [sp, #4]
if (int_mask & RAMECC_INTFLAG_DUALE && dev->ramecc_cb.dual_bit_err) {
1c7c: 9b01 ldr r3, [sp, #4]
1c7e: f013 0f02 tst.w r3, #2
1c82: d006 beq.n 1c92 <RAMECC_Handler+0x22>
1c84: 4b0a ldr r3, [pc, #40] ; (1cb0 <RAMECC_Handler+0x40>)
1c86: 681b ldr r3, [r3, #0]
1c88: b11b cbz r3, 1c92 <RAMECC_Handler+0x22>
return tmp;
}
static inline hri_ramecc_erraddr_reg_t hri_ramecc_read_ERRADDR_reg(const void *const hw)
{
return ((Ramecc *)hw)->ERRADDR.reg;
1c8a: 4a08 ldr r2, [pc, #32] ; (1cac <RAMECC_Handler+0x3c>)
1c8c: 6850 ldr r0, [r2, #4]
dev->ramecc_cb.dual_bit_err((uint32_t)hri_ramecc_read_ERRADDR_reg(RAMECC));
1c8e: 4798 blx r3
1c90: e009 b.n 1ca6 <RAMECC_Handler+0x36>
} else if (int_mask & RAMECC_INTFLAG_SINGLEE && dev->ramecc_cb.single_bit_err) {
1c92: 9b01 ldr r3, [sp, #4]
1c94: f013 0f01 tst.w r3, #1
1c98: d005 beq.n 1ca6 <RAMECC_Handler+0x36>
1c9a: 4b05 ldr r3, [pc, #20] ; (1cb0 <RAMECC_Handler+0x40>)
1c9c: 685b ldr r3, [r3, #4]
1c9e: b113 cbz r3, 1ca6 <RAMECC_Handler+0x36>
1ca0: 4a02 ldr r2, [pc, #8] ; (1cac <RAMECC_Handler+0x3c>)
1ca2: 6850 ldr r0, [r2, #4]
dev->ramecc_cb.single_bit_err((uint32_t)hri_ramecc_read_ERRADDR_reg(RAMECC));
1ca4: 4798 blx r3
} else {
return;
}
}
1ca6: b003 add sp, #12
1ca8: f85d fb04 ldr.w pc, [sp], #4
1cac: 41020000 .word 0x41020000
1cb0: 20006c70 .word 0x20006c70
00001cb4 <_sercom_get_hardware_index>:
/**
* \brief Retrieve ordinal number of the given sercom hardware instance
*/
static uint8_t _sercom_get_hardware_index(const void *const hw)
{
1cb4: b470 push {r4, r5, r6}
1cb6: b089 sub sp, #36 ; 0x24
1cb8: 4606 mov r6, r0
Sercom *const sercom_modules[] = SERCOM_INSTS;
1cba: 466c mov r4, sp
1cbc: 4d0d ldr r5, [pc, #52] ; (1cf4 <_sercom_get_hardware_index+0x40>)
1cbe: cd0f ldmia r5!, {r0, r1, r2, r3}
1cc0: c40f stmia r4!, {r0, r1, r2, r3}
1cc2: e895 000f ldmia.w r5, {r0, r1, r2, r3}
1cc6: e884 000f stmia.w r4, {r0, r1, r2, r3}
/* Find index for SERCOM instance. */
for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) {
if ((uint32_t)hw == (uint32_t)sercom_modules[i]) {
1cca: 9b00 ldr r3, [sp, #0]
1ccc: 42b3 cmp r3, r6
1cce: d00d beq.n 1cec <_sercom_get_hardware_index+0x38>
1cd0: 4631 mov r1, r6
1cd2: ab01 add r3, sp, #4
for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) {
1cd4: 2001 movs r0, #1
if ((uint32_t)hw == (uint32_t)sercom_modules[i]) {
1cd6: f853 2b04 ldr.w r2, [r3], #4
1cda: 428a cmp r2, r1
1cdc: d007 beq.n 1cee <_sercom_get_hardware_index+0x3a>
for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) {
1cde: 3001 adds r0, #1
1ce0: 2808 cmp r0, #8
1ce2: d1f8 bne.n 1cd6 <_sercom_get_hardware_index+0x22>
return i;
}
}
return 0;
1ce4: 2000 movs r0, #0
}
1ce6: b009 add sp, #36 ; 0x24
1ce8: bc70 pop {r4, r5, r6}
1cea: 4770 bx lr
for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) {
1cec: 2000 movs r0, #0
return i;
1cee: b2c0 uxtb r0, r0
1cf0: e7f9 b.n 1ce6 <_sercom_get_hardware_index+0x32>
1cf2: bf00 nop
1cf4: 0001b5dc .word 0x0001b5dc
00001cf8 <_sercom_usart_interrupt_handler>:
* \internal Sercom interrupt handler
*
* \param[in] p The pointer to interrupt parameter
*/
static void _sercom_usart_interrupt_handler(struct _usart_async_device *device)
{
1cf8: b510 push {r4, lr}
void *hw = device->hw;
1cfa: 6984 ldr r4, [r0, #24]
((Sercom *)hw)->USART.INTFLAG.reg = SERCOM_USART_INTFLAG_ERROR;
}
static inline bool hri_sercomusart_get_interrupt_DRE_bit(const void *const hw)
{
return (((Sercom *)hw)->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_DRE) >> SERCOM_USART_INTFLAG_DRE_Pos;
1cfc: 7e23 ldrb r3, [r4, #24]
if (hri_sercomusart_get_interrupt_DRE_bit(hw) && hri_sercomusart_get_INTEN_DRE_bit(hw)) {
1cfe: f013 0f01 tst.w r3, #1
1d02: d003 beq.n 1d0c <_sercom_usart_interrupt_handler+0x14>
((Sercom *)hw)->USART.INTENSET.reg = SERCOM_USART_INTENSET_DRE;
}
static inline bool hri_sercomusart_get_INTEN_DRE_bit(const void *const hw)
{
return (((Sercom *)hw)->USART.INTENSET.reg & SERCOM_USART_INTENSET_DRE) >> SERCOM_USART_INTENSET_DRE_Pos;
1d04: 7da3 ldrb r3, [r4, #22]
1d06: f013 0f01 tst.w r3, #1
1d0a: d112 bne.n 1d32 <_sercom_usart_interrupt_handler+0x3a>
return (((Sercom *)hw)->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_TXC) >> SERCOM_USART_INTFLAG_TXC_Pos;
1d0c: 7e23 ldrb r3, [r4, #24]
hri_sercomusart_clear_INTEN_DRE_bit(hw);
device->usart_cb.tx_byte_sent(device);
} else if (hri_sercomusart_get_interrupt_TXC_bit(hw) && hri_sercomusart_get_INTEN_TXC_bit(hw)) {
1d0e: f013 0f02 tst.w r3, #2
1d12: d003 beq.n 1d1c <_sercom_usart_interrupt_handler+0x24>
((Sercom *)hw)->USART.INTENSET.reg = SERCOM_USART_INTENSET_TXC;
}
static inline bool hri_sercomusart_get_INTEN_TXC_bit(const void *const hw)
{
return (((Sercom *)hw)->USART.INTENSET.reg & SERCOM_USART_INTENSET_TXC) >> SERCOM_USART_INTENSET_TXC_Pos;
1d14: 7da3 ldrb r3, [r4, #22]
1d16: f013 0f02 tst.w r3, #2
1d1a: d10f bne.n 1d3c <_sercom_usart_interrupt_handler+0x44>
return (((Sercom *)hw)->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_RXC) >> SERCOM_USART_INTFLAG_RXC_Pos;
1d1c: 7e23 ldrb r3, [r4, #24]
hri_sercomusart_clear_INTEN_TXC_bit(hw);
device->usart_cb.tx_done_cb(device);
} else if (hri_sercomusart_get_interrupt_RXC_bit(hw)) {
1d1e: f013 0f04 tst.w r3, #4
1d22: d015 beq.n 1d50 <_sercom_usart_interrupt_handler+0x58>
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;
1d24: 8b63 ldrh r3, [r4, #26]
if (hri_sercomusart_read_STATUS_reg(hw)
1d26: f003 0337 and.w r3, r3, #55 ; 0x37
1d2a: b163 cbz r3, 1d46 <_sercom_usart_interrupt_handler+0x4e>
((Sercom *)hw)->USART.STATUS.reg = mask;
1d2c: 23ff movs r3, #255 ; 0xff
1d2e: 8363 strh r3, [r4, #26]
1d30: bd10 pop {r4, pc}
((Sercom *)hw)->USART.INTENCLR.reg = SERCOM_USART_INTENSET_DRE;
1d32: 2301 movs r3, #1
1d34: 7523 strb r3, [r4, #20]
device->usart_cb.tx_byte_sent(device);
1d36: 6803 ldr r3, [r0, #0]
1d38: 4798 blx r3
1d3a: bd10 pop {r4, pc}
((Sercom *)hw)->USART.INTENCLR.reg = SERCOM_USART_INTENSET_TXC;
1d3c: 2302 movs r3, #2
1d3e: 7523 strb r3, [r4, #20]
device->usart_cb.tx_done_cb(device);
1d40: 6883 ldr r3, [r0, #8]
1d42: 4798 blx r3
1d44: bd10 pop {r4, pc}
return ((Sercom *)hw)->USART.DATA.reg;
1d46: 6aa1 ldr r1, [r4, #40] ; 0x28
| SERCOM_USART_STATUS_ISF | SERCOM_USART_STATUS_COLL)) {
hri_sercomusart_clear_STATUS_reg(hw, SERCOM_USART_STATUS_MASK);
return;
}
device->usart_cb.rx_done_cb(device, hri_sercomusart_read_DATA_reg(hw));
1d48: 6843 ldr r3, [r0, #4]
1d4a: b2c9 uxtb r1, r1
1d4c: 4798 blx r3
1d4e: bd10 pop {r4, pc}
return (((Sercom *)hw)->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_ERROR) >> SERCOM_USART_INTFLAG_ERROR_Pos;
1d50: 7e23 ldrb r3, [r4, #24]
} else if (hri_sercomusart_get_interrupt_ERROR_bit(hw)) {
1d52: 09db lsrs r3, r3, #7
1d54: d100 bne.n 1d58 <_sercom_usart_interrupt_handler+0x60>
1d56: bd10 pop {r4, pc}
((Sercom *)hw)->USART.INTFLAG.reg = SERCOM_USART_INTFLAG_ERROR;
1d58: 2380 movs r3, #128 ; 0x80
1d5a: 7623 strb r3, [r4, #24]
uint32_t status;
hri_sercomusart_clear_interrupt_ERROR_bit(hw);
device->usart_cb.error_cb(device);
1d5c: 68c3 ldr r3, [r0, #12]
1d5e: 4798 blx r3
return ((Sercom *)hw)->USART.STATUS.reg;
1d60: 8b63 ldrh r3, [r4, #26]
1d62: b29b uxth r3, r3
((Sercom *)hw)->USART.STATUS.reg = mask;
1d64: 8363 strh r3, [r4, #26]
1d66: e7f6 b.n 1d56 <_sercom_usart_interrupt_handler+0x5e>
00001d68 <_sercom_get_irq_num>:
/**
* \brief Retrieve IRQ number for the given hardware instance
*/
static uint8_t _sercom_get_irq_num(const void *const hw)
{
1d68: b508 push {r3, lr}
return SERCOM0_0_IRQn + (_sercom_get_hardware_index(hw) << 2);
1d6a: 4b03 ldr r3, [pc, #12] ; (1d78 <_sercom_get_irq_num+0x10>)
1d6c: 4798 blx r3
1d6e: 0080 lsls r0, r0, #2
1d70: 302e adds r0, #46 ; 0x2e
}
1d72: f000 00fe and.w r0, r0, #254 ; 0xfe
1d76: bd08 pop {r3, pc}
1d78: 00001cb5 .word 0x00001cb5
00001d7c <_usart_init>:
{
1d7c: b510 push {r4, lr}
1d7e: 4604 mov r4, r0
uint8_t sercom_offset = _sercom_get_hardware_index(hw);
1d80: 4b21 ldr r3, [pc, #132] ; (1e08 <_usart_init+0x8c>)
1d82: 4798 blx r3
if (_usarts[i].number == sercom_offset) {
1d84: 2802 cmp r0, #2
1d86: d005 beq.n 1d94 <_usart_init+0x18>
ASSERT(false);
1d88: f240 226b movw r2, #619 ; 0x26b
1d8c: 491f ldr r1, [pc, #124] ; (1e0c <_usart_init+0x90>)
1d8e: 2000 movs r0, #0
1d90: 4b1f ldr r3, [pc, #124] ; (1e10 <_usart_init+0x94>)
1d92: 4798 blx r3
return ((Sercom *)hw)->USART.SYNCBUSY.reg & reg;
1d94: 69e3 ldr r3, [r4, #28]
if (!hri_sercomusart_is_syncing(hw, SERCOM_USART_SYNCBUSY_SWRST)) {
1d96: f013 0f01 tst.w r3, #1
1d9a: d119 bne.n 1dd0 <_usart_init+0x54>
while (((Sercom *)hw)->USART.SYNCBUSY.reg & reg) {
1d9c: 69e3 ldr r3, [r4, #28]
1d9e: f013 0f03 tst.w r3, #3
1da2: d1fb bne.n 1d9c <_usart_init+0x20>
tmp = ((Sercom *)hw)->USART.CTRLA.reg;
1da4: 6823 ldr r3, [r4, #0]
if (hri_sercomusart_get_CTRLA_reg(hw, SERCOM_USART_CTRLA_ENABLE)) {
1da6: f013 0f02 tst.w r3, #2
1daa: d00b beq.n 1dc4 <_usart_init+0x48>
((Sercom *)hw)->USART.CTRLA.reg &= ~SERCOM_USART_CTRLA_ENABLE;
1dac: 6823 ldr r3, [r4, #0]
1dae: f023 0302 bic.w r3, r3, #2
1db2: 6023 str r3, [r4, #0]
while (((Sercom *)hw)->USART.SYNCBUSY.reg & reg) {
1db4: 69e3 ldr r3, [r4, #28]
1db6: f013 0f03 tst.w r3, #3
1dba: d1fb bne.n 1db4 <_usart_init+0x38>
1dbc: 69e3 ldr r3, [r4, #28]
1dbe: f013 0f02 tst.w r3, #2
1dc2: d1fb bne.n 1dbc <_usart_init+0x40>
((Sercom *)hw)->USART.CTRLA.reg = data;
1dc4: 2305 movs r3, #5
1dc6: 6023 str r3, [r4, #0]
while (((Sercom *)hw)->USART.SYNCBUSY.reg & reg) {
1dc8: 69e3 ldr r3, [r4, #28]
1dca: f013 0f03 tst.w r3, #3
1dce: d1fb bne.n 1dc8 <_usart_init+0x4c>
1dd0: 69e3 ldr r3, [r4, #28]
1dd2: f013 0f01 tst.w r3, #1
1dd6: d1fb bne.n 1dd0 <_usart_init+0x54>
((Sercom *)hw)->USART.CTRLA.reg = data;
1dd8: 4b0e ldr r3, [pc, #56] ; (1e14 <_usart_init+0x98>)
1dda: 6023 str r3, [r4, #0]
while (((Sercom *)hw)->USART.SYNCBUSY.reg & reg) {
1ddc: 69e3 ldr r3, [r4, #28]
1dde: f013 0f03 tst.w r3, #3
1de2: d1fb bne.n 1ddc <_usart_init+0x60>
((Sercom *)hw)->USART.CTRLB.reg = data;
1de4: f44f 3340 mov.w r3, #196608 ; 0x30000
1de8: 6063 str r3, [r4, #4]
while (((Sercom *)hw)->USART.SYNCBUSY.reg & reg) {
1dea: 69e3 ldr r3, [r4, #28]
1dec: f013 0f1f tst.w r3, #31
1df0: d1fb bne.n 1dea <_usart_init+0x6e>
((Sercom *)hw)->USART.CTRLC.reg = data;
1df2: 4b09 ldr r3, [pc, #36] ; (1e18 <_usart_init+0x9c>)
1df4: 60a3 str r3, [r4, #8]
((Sercom *)hw)->USART.BAUD.reg = data;
1df6: f64f 4311 movw r3, #64529 ; 0xfc11
1dfa: 81a3 strh r3, [r4, #12]
((Sercom *)hw)->USART.RXPL.reg = data;
1dfc: 2000 movs r0, #0
1dfe: 73a0 strb r0, [r4, #14]
((Sercom *)hw)->USART.DBGCTRL.reg = data;
1e00: f884 0030 strb.w r0, [r4, #48] ; 0x30
}
1e04: bd10 pop {r4, pc}
1e06: bf00 nop
1e08: 00001cb5 .word 0x00001cb5
1e0c: 0001b614 .word 0x0001b614
1e10: 000019d5 .word 0x000019d5
1e14: 40100004 .word 0x40100004
1e18: 00700002 .word 0x00700002
00001e1c <_usart_async_init>:
{
1e1c: b570 push {r4, r5, r6, lr}
1e1e: 460d mov r5, r1
ASSERT(device);
1e20: 4606 mov r6, r0
1e22: 22cb movs r2, #203 ; 0xcb
1e24: 4918 ldr r1, [pc, #96] ; (1e88 <_usart_async_init+0x6c>)
1e26: 3000 adds r0, #0
1e28: bf18 it ne
1e2a: 2001 movne r0, #1
1e2c: 4b17 ldr r3, [pc, #92] ; (1e8c <_usart_async_init+0x70>)
1e2e: 4798 blx r3
init_status = _usart_init(hw);
1e30: 4628 mov r0, r5
1e32: 4b17 ldr r3, [pc, #92] ; (1e90 <_usart_async_init+0x74>)
1e34: 4798 blx r3
if (init_status) {
1e36: 4604 mov r4, r0
1e38: b108 cbz r0, 1e3e <_usart_async_init+0x22>
}
1e3a: 4620 mov r0, r4
1e3c: bd70 pop {r4, r5, r6, pc}
device->hw = hw;
1e3e: 61b5 str r5, [r6, #24]
if (hw == SERCOM2) {
1e40: 4b14 ldr r3, [pc, #80] ; (1e94 <_usart_async_init+0x78>)
1e42: 429d cmp r5, r3
_sercom2_dev = (struct _usart_async_device *)dev;
1e44: bf04 itt eq
1e46: 4b14 ldreq r3, [pc, #80] ; (1e98 <_usart_async_init+0x7c>)
1e48: 601e streq r6, [r3, #0]
uint8_t irq = _sercom_get_irq_num(hw);
1e4a: 4628 mov r0, r5
1e4c: 4b13 ldr r3, [pc, #76] ; (1e9c <_usart_async_init+0x80>)
1e4e: 4798 blx r3
1e50: 1d01 adds r1, r0, #4
1e52: b2c9 uxtb r1, r1
NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
1e54: 2501 movs r5, #1
1e56: f000 021f and.w r2, r0, #31
1e5a: fa05 f202 lsl.w r2, r5, r2
1e5e: 0943 lsrs r3, r0, #5
1e60: 009b lsls r3, r3, #2
1e62: f103 4360 add.w r3, r3, #3758096384 ; 0xe0000000
1e66: f503 4361 add.w r3, r3, #57600 ; 0xe100
1e6a: f8c3 2080 str.w r2, [r3, #128] ; 0x80
__ASM volatile ("dsb 0xF":::"memory");
1e6e: f3bf 8f4f dsb sy
__ASM volatile ("isb 0xF":::"memory");
1e72: f3bf 8f6f isb sy
*/
__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));
1e76: f8c3 2180 str.w r2, [r3, #384] ; 0x180
NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
1e7a: 601a str r2, [r3, #0]
irq++;
1e7c: 3001 adds r0, #1
1e7e: b2c0 uxtb r0, r0
for (uint32_t i = 0; i < 4; i++) {
1e80: 4281 cmp r1, r0
1e82: d1e8 bne.n 1e56 <_usart_async_init+0x3a>
1e84: e7d9 b.n 1e3a <_usart_async_init+0x1e>
1e86: bf00 nop
1e88: 0001b614 .word 0x0001b614
1e8c: 000019d5 .word 0x000019d5
1e90: 00001d7d .word 0x00001d7d
1e94: 41012000 .word 0x41012000
1e98: 200000c8 .word 0x200000c8
1e9c: 00001d69 .word 0x00001d69
00001ea0 <_usart_async_enable>:
hri_sercomusart_set_CTRLA_ENABLE_bit(device->hw);
1ea0: 6982 ldr r2, [r0, #24]
((Sercom *)hw)->USART.CTRLA.reg |= SERCOM_USART_CTRLA_ENABLE;
1ea2: 6813 ldr r3, [r2, #0]
1ea4: f043 0302 orr.w r3, r3, #2
1ea8: 6013 str r3, [r2, #0]
while (((Sercom *)hw)->USART.SYNCBUSY.reg & reg) {
1eaa: 69d3 ldr r3, [r2, #28]
1eac: f013 0f03 tst.w r3, #3
1eb0: d1fb bne.n 1eaa <_usart_async_enable+0xa>
}
1eb2: 4770 bx lr
00001eb4 <_usart_async_write_byte>:
hri_sercomusart_write_DATA_reg(device->hw, data);
1eb4: 6983 ldr r3, [r0, #24]
((Sercom *)hw)->USART.DATA.reg = data;
1eb6: 6299 str r1, [r3, #40] ; 0x28
1eb8: 4770 bx lr
00001eba <_usart_async_enable_byte_sent_irq>:
hri_sercomusart_set_INTEN_DRE_bit(device->hw);
1eba: 6983 ldr r3, [r0, #24]
((Sercom *)hw)->USART.INTENSET.reg = SERCOM_USART_INTENSET_DRE;
1ebc: 2201 movs r2, #1
1ebe: 759a strb r2, [r3, #22]
1ec0: 4770 bx lr
00001ec2 <_usart_async_enable_tx_done_irq>:
hri_sercomusart_set_INTEN_TXC_bit(device->hw);
1ec2: 6983 ldr r3, [r0, #24]
((Sercom *)hw)->USART.INTENSET.reg = SERCOM_USART_INTENSET_TXC;
1ec4: 2202 movs r2, #2
1ec6: 759a strb r2, [r3, #22]
1ec8: 4770 bx lr
...
00001ecc <SERCOM2_0_Handler>:
/**
* \internal Sercom interrupt handler
*/
void SERCOM2_0_Handler(void)
{
1ecc: b508 push {r3, lr}
_sercom_usart_interrupt_handler(_sercom2_dev);
1ece: 4b02 ldr r3, [pc, #8] ; (1ed8 <SERCOM2_0_Handler+0xc>)
1ed0: 6818 ldr r0, [r3, #0]
1ed2: 4b02 ldr r3, [pc, #8] ; (1edc <SERCOM2_0_Handler+0x10>)
1ed4: 4798 blx r3
1ed6: bd08 pop {r3, pc}
1ed8: 200000c8 .word 0x200000c8
1edc: 00001cf9 .word 0x00001cf9
00001ee0 <SERCOM2_1_Handler>:
}
/**
* \internal Sercom interrupt handler
*/
void SERCOM2_1_Handler(void)
{
1ee0: b508 push {r3, lr}
_sercom_usart_interrupt_handler(_sercom2_dev);
1ee2: 4b02 ldr r3, [pc, #8] ; (1eec <SERCOM2_1_Handler+0xc>)
1ee4: 6818 ldr r0, [r3, #0]
1ee6: 4b02 ldr r3, [pc, #8] ; (1ef0 <SERCOM2_1_Handler+0x10>)
1ee8: 4798 blx r3
1eea: bd08 pop {r3, pc}
1eec: 200000c8 .word 0x200000c8
1ef0: 00001cf9 .word 0x00001cf9
00001ef4 <SERCOM2_2_Handler>:
}
/**
* \internal Sercom interrupt handler
*/
void SERCOM2_2_Handler(void)
{
1ef4: b508 push {r3, lr}
_sercom_usart_interrupt_handler(_sercom2_dev);
1ef6: 4b02 ldr r3, [pc, #8] ; (1f00 <SERCOM2_2_Handler+0xc>)
1ef8: 6818 ldr r0, [r3, #0]
1efa: 4b02 ldr r3, [pc, #8] ; (1f04 <SERCOM2_2_Handler+0x10>)
1efc: 4798 blx r3
1efe: bd08 pop {r3, pc}
1f00: 200000c8 .word 0x200000c8
1f04: 00001cf9 .word 0x00001cf9
00001f08 <SERCOM2_3_Handler>:
}
/**
* \internal Sercom interrupt handler
*/
void SERCOM2_3_Handler(void)
{
1f08: b508 push {r3, lr}
_sercom_usart_interrupt_handler(_sercom2_dev);
1f0a: 4b02 ldr r3, [pc, #8] ; (1f14 <SERCOM2_3_Handler+0xc>)
1f0c: 6818 ldr r0, [r3, #0]
1f0e: 4b02 ldr r3, [pc, #8] ; (1f18 <SERCOM2_3_Handler+0x10>)
1f10: 4798 blx r3
1f12: bd08 pop {r3, pc}
1f14: 200000c8 .word 0x200000c8
1f18: 00001cf9 .word 0x00001cf9
00001f1c <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)
{
1f1c: b570 push {r4, r5, r6, lr}
1f1e: b088 sub sp, #32
1f20: 4606 mov r6, r0
* \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;
1f22: 466c mov r4, sp
1f24: 4d12 ldr r5, [pc, #72] ; (1f70 <get_tc_index+0x54>)
1f26: cd0f ldmia r5!, {r0, r1, r2, r3}
1f28: c40f stmia r4!, {r0, r1, r2, r3}
1f2a: e895 000f ldmia.w r5, {r0, r1, r2, r3}
1f2e: e884 000f stmia.w r4, {r0, r1, r2, r3}
/* Find index for TC instance. */
for (uint32_t i = 0; i < TC_INST_NUM; i++) {
if ((uint32_t)hw == (uint32_t)tc_modules[i]) {
1f32: 9b00 ldr r3, [sp, #0]
1f34: 42b3 cmp r3, r6
1f36: d00b beq.n 1f50 <get_tc_index+0x34>
1f38: 4630 mov r0, r6
1f3a: aa01 add r2, sp, #4
for (uint32_t i = 0; i < TC_INST_NUM; i++) {
1f3c: 2301 movs r3, #1
if ((uint32_t)hw == (uint32_t)tc_modules[i]) {
1f3e: f852 1b04 ldr.w r1, [r2], #4
1f42: 4281 cmp r1, r0
1f44: d005 beq.n 1f52 <get_tc_index+0x36>
for (uint32_t i = 0; i < TC_INST_NUM; i++) {
1f46: 3301 adds r3, #1
1f48: 2b08 cmp r3, #8
1f4a: d1f8 bne.n 1f3e <get_tc_index+0x22>
return i;
1f4c: 2000 movs r0, #0
1f4e: e00b b.n 1f68 <get_tc_index+0x4c>
for (uint32_t i = 0; i < TC_INST_NUM; i++) {
1f50: 2300 movs r3, #0
if (_tcs[i].number == index) {
1f52: f013 0fff tst.w r3, #255 ; 0xff
1f56: d009 beq.n 1f6c <get_tc_index+0x50>
ASSERT(false);
1f58: f44f 729e mov.w r2, #316 ; 0x13c
1f5c: 4905 ldr r1, [pc, #20] ; (1f74 <get_tc_index+0x58>)
1f5e: 2000 movs r0, #0
1f60: 4b05 ldr r3, [pc, #20] ; (1f78 <get_tc_index+0x5c>)
1f62: 4798 blx r3
return -1;
1f64: f04f 30ff mov.w r0, #4294967295
}
1f68: b008 add sp, #32
1f6a: bd70 pop {r4, r5, r6, pc}
return i;
1f6c: 2000 movs r0, #0
1f6e: e7fb b.n 1f68 <get_tc_index+0x4c>
1f70: 0001b630 .word 0x0001b630
1f74: 0001b664 .word 0x0001b664
1f78: 000019d5 .word 0x000019d5
00001f7c <_timer_init>:
{
1f7c: b570 push {r4, r5, r6, lr}
1f7e: 4606 mov r6, r0
1f80: 460c mov r4, r1
int8_t i = get_tc_index(hw);
1f82: 4608 mov r0, r1
1f84: 4b60 ldr r3, [pc, #384] ; (2108 <_timer_init+0x18c>)
1f86: 4798 blx r3
1f88: 4605 mov r5, r0
device->hw = hw;
1f8a: 60f4 str r4, [r6, #12]
ASSERT(ARRAY_SIZE(_tcs));
1f8c: 228d movs r2, #141 ; 0x8d
1f8e: 495f ldr r1, [pc, #380] ; (210c <_timer_init+0x190>)
1f90: 2001 movs r0, #1
1f92: 4b5f ldr r3, [pc, #380] ; (2110 <_timer_init+0x194>)
1f94: 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;
1f96: 6923 ldr r3, [r4, #16]
if (!hri_tc_is_syncing(hw, TC_SYNCBUSY_SWRST)) {
1f98: f013 0f01 tst.w r3, #1
1f9c: d119 bne.n 1fd2 <_timer_init+0x56>
while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) {
1f9e: 6923 ldr r3, [r4, #16]
1fa0: f013 0f03 tst.w r3, #3
1fa4: d1fb bne.n 1f9e <_timer_init+0x22>
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);
tmp = ((Tc *)hw)->COUNT16.CTRLA.reg;
1fa6: 6823 ldr r3, [r4, #0]
if (hri_tc_get_CTRLA_reg(hw, TC_CTRLA_ENABLE)) {
1fa8: f013 0f02 tst.w r3, #2
1fac: d00b beq.n 1fc6 <_timer_init+0x4a>
((Tc *)hw)->COUNT16.CTRLA.reg &= ~TC_CTRLA_ENABLE;
1fae: 6823 ldr r3, [r4, #0]
1fb0: f023 0302 bic.w r3, r3, #2
1fb4: 6023 str r3, [r4, #0]
while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) {
1fb6: 6923 ldr r3, [r4, #16]
1fb8: f013 0f03 tst.w r3, #3
1fbc: d1fb bne.n 1fb6 <_timer_init+0x3a>
1fbe: 6923 ldr r3, [r4, #16]
1fc0: f013 0f02 tst.w r3, #2
1fc4: d1fb bne.n 1fbe <_timer_init+0x42>
}
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;
1fc6: 2301 movs r3, #1
1fc8: 6023 str r3, [r4, #0]
while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) {
1fca: 6923 ldr r3, [r4, #16]
1fcc: f013 0f03 tst.w r3, #3
1fd0: d1fb bne.n 1fca <_timer_init+0x4e>
1fd2: 6923 ldr r3, [r4, #16]
1fd4: f013 0f01 tst.w r3, #1
1fd8: d1fb bne.n 1fd2 <_timer_init+0x56>
hri_tc_write_CTRLA_reg(hw, _tcs[i].ctrl_a);
1fda: eb05 0385 add.w r3, r5, r5, lsl #2
1fde: 4a4d ldr r2, [pc, #308] ; (2114 <_timer_init+0x198>)
1fe0: eb02 0383 add.w r3, r2, r3, lsl #2
1fe4: 6a5a ldr r2, [r3, #36] ; 0x24
((Tc *)hw)->COUNT16.CTRLA.reg = data;
1fe6: 6022 str r2, [r4, #0]
while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) {
1fe8: 6923 ldr r3, [r4, #16]
1fea: f013 0f03 tst.w r3, #3
1fee: d1fb bne.n 1fe8 <_timer_init+0x6c>
hri_tc_write_DBGCTRL_reg(hw, _tcs[i].dbg_ctrl);
1ff0: eb05 0385 add.w r3, r5, r5, lsl #2
1ff4: 4947 ldr r1, [pc, #284] ; (2114 <_timer_init+0x198>)
1ff6: eb01 0383 add.w r3, r1, r3, lsl #2
1ffa: f893 102a ldrb.w r1, [r3, #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;
1ffe: 73e1 strb r1, [r4, #15]
hri_tc_write_EVCTRL_reg(hw, _tcs[i].event_ctrl);
2000: 8d1b ldrh r3, [r3, #40] ; 0x28
((Tc *)hw)->COUNT16.EVCTRL.reg = data;
2002: 80e3 strh r3, [r4, #6]
((Tc *)hw)->COUNT16.WAVE.reg = data;
2004: 2301 movs r3, #1
2006: 7323 strb r3, [r4, #12]
if ((_tcs[i].ctrl_a & TC_CTRLA_MODE_Msk) == TC_CTRLA_MODE_COUNT32) {
2008: f002 020c and.w r2, r2, #12
200c: 2a08 cmp r2, #8
200e: d048 beq.n 20a2 <_timer_init+0x126>
} else if ((_tcs[i].ctrl_a & TC_CTRLA_MODE_Msk) == TC_CTRLA_MODE_COUNT16) {
2010: 2a00 cmp r2, #0
2012: d158 bne.n 20c6 <_timer_init+0x14a>
hri_tccount16_write_CC_reg(hw, 0, (uint16_t)_tcs[i].cc0);
2014: eb05 0385 add.w r3, r5, r5, lsl #2
2018: 4a3e ldr r2, [pc, #248] ; (2114 <_timer_init+0x198>)
201a: eb02 0383 add.w r3, r2, r3, lsl #2
201e: 8d9b ldrh r3, [r3, #44] ; 0x2c
}
static inline void hri_tccount16_write_CC_reg(const void *const hw, uint8_t index, hri_tccount16_cc_reg_t data)
{
TC_CRITICAL_SECTION_ENTER();
((Tc *)hw)->COUNT16.CC[index].reg = data;
2020: 83a3 strh r3, [r4, #28]
while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) {
2022: 6923 ldr r3, [r4, #16]
2024: f013 0fc0 tst.w r3, #192 ; 0xc0
2028: d1fb bne.n 2022 <_timer_init+0xa6>
((Tc *)hw)->COUNT16.CC[index].reg = data;
202a: 2300 movs r3, #0
202c: 83e3 strh r3, [r4, #30]
while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) {
202e: 6923 ldr r3, [r4, #16]
2030: f013 0fc0 tst.w r3, #192 ; 0xc0
2034: d1fb bne.n 202e <_timer_init+0xb2>
((Tc *)hw)->COUNT16.INTENSET.reg = TC_INTENSET_OVF;
2036: 2301 movs r3, #1
2038: 7263 strb r3, [r4, #9]
if (hw == TC0) {
203a: 4b37 ldr r3, [pc, #220] ; (2118 <_timer_init+0x19c>)
203c: 429c cmp r4, r3
_tc0_dev = (struct _timer_device *)dev;
203e: bf04 itt eq
2040: 4b36 ldreq r3, [pc, #216] ; (211c <_timer_init+0x1a0>)
2042: 601e streq r6, [r3, #0]
NVIC_DisableIRQ(_tcs[i].irq);
2044: eb05 0385 add.w r3, r5, r5, lsl #2
2048: 4a32 ldr r2, [pc, #200] ; (2114 <_timer_init+0x198>)
204a: eb02 0383 add.w r3, r2, r3, lsl #2
204e: f9b3 3022 ldrsh.w r3, [r3, #34] ; 0x22
if ((int32_t)(IRQn) >= 0)
2052: 2b00 cmp r3, #0
2054: db23 blt.n 209e <_timer_init+0x122>
NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
2056: 095a lsrs r2, r3, #5
2058: f003 031f and.w r3, r3, #31
205c: 2101 movs r1, #1
205e: fa01 f303 lsl.w r3, r1, r3
2062: 3220 adds r2, #32
2064: 492e ldr r1, [pc, #184] ; (2120 <_timer_init+0x1a4>)
2066: f841 3022 str.w r3, [r1, r2, lsl #2]
__ASM volatile ("dsb 0xF":::"memory");
206a: f3bf 8f4f dsb sy
__ASM volatile ("isb 0xF":::"memory");
206e: f3bf 8f6f isb sy
NVIC_ClearPendingIRQ(_tcs[i].irq);
2072: eb05 0585 add.w r5, r5, r5, lsl #2
2076: 4b27 ldr r3, [pc, #156] ; (2114 <_timer_init+0x198>)
2078: eb03 0585 add.w r5, r3, r5, lsl #2
207c: f9b5 3022 ldrsh.w r3, [r5, #34] ; 0x22
if ((int32_t)(IRQn) >= 0)
2080: 2b00 cmp r3, #0
2082: db0c blt.n 209e <_timer_init+0x122>
NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
2084: 0959 lsrs r1, r3, #5
2086: f003 031f and.w r3, r3, #31
208a: 2201 movs r2, #1
208c: fa02 f303 lsl.w r3, r2, r3
2090: 4a23 ldr r2, [pc, #140] ; (2120 <_timer_init+0x1a4>)
2092: f101 0060 add.w r0, r1, #96 ; 0x60
2096: f842 3020 str.w r3, [r2, r0, lsl #2]
NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
209a: f842 3021 str.w r3, [r2, r1, lsl #2]
}
209e: 2000 movs r0, #0
20a0: bd70 pop {r4, r5, r6, pc}
hri_tccount32_write_CC_reg(hw, 0, _tcs[i].cc0);
20a2: eb05 0385 add.w r3, r5, r5, lsl #2
20a6: 4a1b ldr r2, [pc, #108] ; (2114 <_timer_init+0x198>)
20a8: eb02 0383 add.w r3, r2, r3, lsl #2
20ac: 6adb ldr r3, [r3, #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;
20ae: 61e3 str r3, [r4, #28]
while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) {
20b0: 6923 ldr r3, [r4, #16]
20b2: f013 0fc0 tst.w r3, #192 ; 0xc0
20b6: d1fb bne.n 20b0 <_timer_init+0x134>
((Tc *)hw)->COUNT32.CC[index].reg = data;
20b8: 2300 movs r3, #0
20ba: 6223 str r3, [r4, #32]
while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) {
20bc: 6923 ldr r3, [r4, #16]
20be: f013 0fc0 tst.w r3, #192 ; 0xc0
20c2: d1fb bne.n 20bc <_timer_init+0x140>
20c4: e7b7 b.n 2036 <_timer_init+0xba>
} else if ((_tcs[i].ctrl_a & TC_CTRLA_MODE_Msk) == TC_CTRLA_MODE_COUNT8) {
20c6: 2a04 cmp r2, #4
20c8: d1b5 bne.n 2036 <_timer_init+0xba>
hri_tccount8_write_CC_reg(hw, 0, (uint8_t)_tcs[i].cc0);
20ca: eb05 0385 add.w r3, r5, r5, lsl #2
20ce: 4a11 ldr r2, [pc, #68] ; (2114 <_timer_init+0x198>)
20d0: eb02 0383 add.w r3, r2, r3, lsl #2
20d4: f893 302c ldrb.w r3, [r3, #44] ; 0x2c
((Tc *)hw)->COUNT8.CC[index].reg = data;
20d8: 7723 strb r3, [r4, #28]
while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) {
20da: 6923 ldr r3, [r4, #16]
20dc: f013 0fc0 tst.w r3, #192 ; 0xc0
20e0: d1fb bne.n 20da <_timer_init+0x15e>
((Tc *)hw)->COUNT8.CC[index].reg = data;
20e2: 2300 movs r3, #0
20e4: 7763 strb r3, [r4, #29]
while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) {
20e6: 6923 ldr r3, [r4, #16]
20e8: f013 0fc0 tst.w r3, #192 ; 0xc0
20ec: d1fb bne.n 20e6 <_timer_init+0x16a>
hri_tccount8_write_PER_reg(hw, _tcs[i].per);
20ee: eb05 0385 add.w r3, r5, r5, lsl #2
20f2: 4a08 ldr r2, [pc, #32] ; (2114 <_timer_init+0x198>)
20f4: eb02 0383 add.w r3, r2, r3, lsl #2
20f8: f893 302b ldrb.w r3, [r3, #43] ; 0x2b
((Tc *)hw)->COUNT8.PER.reg = data;
20fc: 76e3 strb r3, [r4, #27]
while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) {
20fe: 6923 ldr r3, [r4, #16]
2100: f013 0f20 tst.w r3, #32
2104: d1fb bne.n 20fe <_timer_init+0x182>
2106: e796 b.n 2036 <_timer_init+0xba>
2108: 00001f1d .word 0x00001f1d
210c: 0001b664 .word 0x0001b664
2110: 000019d5 .word 0x000019d5
2114: 0001b630 .word 0x0001b630
2118: 40003800 .word 0x40003800
211c: 200000cc .word 0x200000cc
2120: e000e100 .word 0xe000e100
00002124 <_timer_start>:
hri_tc_set_CTRLA_ENABLE_bit(device->hw);
2124: 68c2 ldr r2, [r0, #12]
((Tc *)hw)->COUNT16.CTRLA.reg |= TC_CTRLA_ENABLE;
2126: 6813 ldr r3, [r2, #0]
2128: f043 0302 orr.w r3, r3, #2
212c: 6013 str r3, [r2, #0]
while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) {
212e: 6913 ldr r3, [r2, #16]
2130: f013 0f03 tst.w r3, #3
2134: d1fb bne.n 212e <_timer_start+0xa>
}
2136: 4770 bx lr
00002138 <_timer_is_started>:
return hri_tc_get_CTRLA_ENABLE_bit(device->hw);
2138: 68c2 ldr r2, [r0, #12]
213a: 6913 ldr r3, [r2, #16]
213c: f013 0f03 tst.w r3, #3
2140: d1fb bne.n 213a <_timer_is_started+0x2>
tmp = ((Tc *)hw)->COUNT16.CTRLA.reg;
2142: 6810 ldr r0, [r2, #0]
}
2144: f3c0 0040 ubfx r0, r0, #1, #1
2148: 4770 bx lr
0000214a <_tc_get_timer>:
}
214a: 2000 movs r0, #0
214c: 4770 bx lr
...
00002150 <_timer_set_irq>:
{
2150: b510 push {r4, lr}
int8_t i = get_tc_index(hw);
2152: 68c0 ldr r0, [r0, #12]
2154: 4b09 ldr r3, [pc, #36] ; (217c <_timer_set_irq+0x2c>)
2156: 4798 blx r3
2158: 4604 mov r4, r0
ASSERT(ARRAY_SIZE(_tcs));
215a: f240 120f movw r2, #271 ; 0x10f
215e: 4908 ldr r1, [pc, #32] ; (2180 <_timer_set_irq+0x30>)
2160: 2001 movs r0, #1
2162: 4b08 ldr r3, [pc, #32] ; (2184 <_timer_set_irq+0x34>)
2164: 4798 blx r3
_irq_set(_tcs[i].irq);
2166: eb04 0484 add.w r4, r4, r4, lsl #2
216a: 4b07 ldr r3, [pc, #28] ; (2188 <_timer_set_irq+0x38>)
216c: eb03 0484 add.w r4, r3, r4, lsl #2
2170: f894 0022 ldrb.w r0, [r4, #34] ; 0x22
2174: 4b05 ldr r3, [pc, #20] ; (218c <_timer_set_irq+0x3c>)
2176: 4798 blx r3
2178: bd10 pop {r4, pc}
217a: bf00 nop
217c: 00001f1d .word 0x00001f1d
2180: 0001b664 .word 0x0001b664
2184: 000019d5 .word 0x000019d5
2188: 0001b630 .word 0x0001b630
218c: 00001b35 .word 0x00001b35
00002190 <TC0_Handler>:
{
2190: b508 push {r3, lr}
tc_interrupt_handler(_tc0_dev);
2192: 4b06 ldr r3, [pc, #24] ; (21ac <TC0_Handler+0x1c>)
2194: 6818 ldr r0, [r3, #0]
void *const hw = device->hw;
2196: 68c3 ldr r3, [r0, #12]
return (((Tc *)hw)->COUNT16.INTFLAG.reg & TC_INTFLAG_OVF) >> TC_INTFLAG_OVF_Pos;
2198: 7a9a ldrb r2, [r3, #10]
if (hri_tc_get_interrupt_OVF_bit(hw)) {
219a: f012 0f01 tst.w r2, #1
219e: d100 bne.n 21a2 <TC0_Handler+0x12>
21a0: bd08 pop {r3, pc}
((Tc *)hw)->COUNT16.INTFLAG.reg = TC_INTFLAG_OVF;
21a2: 2201 movs r2, #1
21a4: 729a strb r2, [r3, #10]
device->timer_cb.period_expired(device);
21a6: 6803 ldr r3, [r0, #0]
21a8: 4798 blx r3
}
21aa: e7f9 b.n 21a0 <TC0_Handler+0x10>
21ac: 200000cc .word 0x200000cc
000021b0 <main>:
#include "oracle.h"
int main(void)
{
21b0: b508 push {r3, lr}
oracle_init();
21b2: 4b02 ldr r3, [pc, #8] ; (21bc <main+0xc>)
21b4: 4798 blx r3
for(;;)
{
oracle_service();
21b6: 4c02 ldr r4, [pc, #8] ; (21c0 <main+0x10>)
21b8: 47a0 blx r4
21ba: e7fd b.n 21b8 <main+0x8>
21bc: 000021c5 .word 0x000021c5
21c0: 00002299 .word 0x00002299
000021c4 <oracle_init>:
static lv_disp_buf_t disp_buf;
static lv_color_t buf[LV_HOR_RES_MAX * 10]; /*Declare a buffer for 10 lines*/
void oracle_init(void)
{
21c4: b530 push {r4, r5, lr}
21c6: b08d sub sp, #52 ; 0x34
* Currently the following initialization functions are supported:
* - System clock initialization
*/
static inline void init_mcu(void)
{
_init_chip();
21c8: 4b1e ldr r3, [pc, #120] ; (2244 <oracle_init+0x80>)
21ca: 4798 blx r3
// init mcu
init_mcu();
// uart init
p_usart_init();
21cc: 4b1e ldr r3, [pc, #120] ; (2248 <oracle_init+0x84>)
21ce: 4798 blx r3
// i2c init
p_i2c_init();
21d0: 4b1e ldr r3, [pc, #120] ; (224c <oracle_init+0x88>)
21d2: 4798 blx r3
// gpio init
p_gpio_init();
21d4: 4b1e ldr r3, [pc, #120] ; (2250 <oracle_init+0x8c>)
21d6: 4798 blx r3
// time init
p_tcc_init();
21d8: 4b1e ldr r3, [pc, #120] ; (2254 <oracle_init+0x90>)
21da: 4798 blx r3
// devices init
lv_init();
21dc: 4b1e ldr r3, [pc, #120] ; (2258 <oracle_init+0x94>)
21de: 4798 blx r3
ssd1963_init();
21e0: 4b1e ldr r3, [pc, #120] ; (225c <oracle_init+0x98>)
21e2: 4798 blx r3
lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX * 10); /*Initialize the display buffer*/
21e4: 4c1e ldr r4, [pc, #120] ; (2260 <oracle_init+0x9c>)
21e6: f44f 5396 mov.w r3, #4800 ; 0x12c0
21ea: 2200 movs r2, #0
21ec: 491d ldr r1, [pc, #116] ; (2264 <oracle_init+0xa0>)
21ee: 4620 mov r0, r4
21f0: 4d1d ldr r5, [pc, #116] ; (2268 <oracle_init+0xa4>)
21f2: 47a8 blx r5
lv_disp_drv_t disp_drv; /*Descriptor of a display driver*/
lv_disp_drv_init(&disp_drv); /*Basic initialization*/
21f4: a801 add r0, sp, #4
21f6: 4b1d ldr r3, [pc, #116] ; (226c <oracle_init+0xa8>)
21f8: 4798 blx r3
disp_drv.flush_cb = ssd1963_flush; /*Set your driver function*/
21fa: 4b1d ldr r3, [pc, #116] ; (2270 <oracle_init+0xac>)
21fc: 9304 str r3, [sp, #16]
disp_drv.buffer = &disp_buf; /*Assign the buffer to the display*/
21fe: 9402 str r4, [sp, #8]
lv_disp_drv_register(&disp_drv); /*Finally register the driver*/
2200: a801 add r0, sp, #4
2202: 4b1c ldr r3, [pc, #112] ; (2274 <oracle_init+0xb0>)
2204: 4798 blx r3
lv_obj_t* scr = lv_disp_get_scr_act(NULL);
2206: 2000 movs r0, #0
2208: 4b1b ldr r3, [pc, #108] ; (2278 <oracle_init+0xb4>)
220a: 4798 blx r3
220c: 4605 mov r5, r0
lv_obj_t* hornet_image = lv_img_create(scr, NULL);
220e: 2100 movs r1, #0
2210: 4b1a ldr r3, [pc, #104] ; (227c <oracle_init+0xb8>)
2212: 4798 blx r3
2214: 4604 mov r4, r0
lv_img_set_src(hornet_image, &hornet);
2216: 491a ldr r1, [pc, #104] ; (2280 <oracle_init+0xbc>)
2218: 4b1a ldr r3, [pc, #104] ; (2284 <oracle_init+0xc0>)
221a: 4798 blx r3
lv_obj_set_pos(hornet_image, 0, 0);
221c: 2200 movs r2, #0
221e: 4611 mov r1, r2
2220: 4620 mov r0, r4
2222: 4c19 ldr r4, [pc, #100] ; (2288 <oracle_init+0xc4>)
2224: 47a0 blx r4
lv_obj_t* random_text = lv_label_create(scr, NULL);
2226: 2100 movs r1, #0
2228: 4628 mov r0, r5
222a: 4b18 ldr r3, [pc, #96] ; (228c <oracle_init+0xc8>)
222c: 4798 blx r3
222e: 4605 mov r5, r0
lv_obj_set_pos(random_text, 90, 35);
2230: 2223 movs r2, #35 ; 0x23
2232: 215a movs r1, #90 ; 0x5a
2234: 47a0 blx r4
lv_label_set_text(random_text, "Hello World");
2236: 4916 ldr r1, [pc, #88] ; (2290 <oracle_init+0xcc>)
2238: 4628 mov r0, r5
223a: 4b16 ldr r3, [pc, #88] ; (2294 <oracle_init+0xd0>)
223c: 4798 blx r3
}
223e: b00d add sp, #52 ; 0x34
2240: bd30 pop {r4, r5, pc}
2242: bf00 nop
2244: 00001b99 .word 0x00001b99
2248: 00001425 .word 0x00001425
224c: 00001385 .word 0x00001385
2250: 00001251 .word 0x00001251
2254: 000013ad .word 0x000013ad
2258: 00002869 .word 0x00002869
225c: 000002d1 .word 0x000002d1
2260: 20002650 .word 0x20002650
2264: 200000d0 .word 0x200000d0
2268: 00010d71 .word 0x00010d71
226c: 00010d11 .word 0x00010d11
2270: 00000ca5 .word 0x00000ca5
2274: 00010d91 .word 0x00010d91
2278: 0000234d .word 0x0000234d
227c: 0001986d .word 0x0001986d
2280: 0001b678 .word 0x0001b678
2284: 00019611 .word 0x00019611
2288: 0000343d .word 0x0000343d
228c: 0001ab05 .word 0x0001ab05
2290: 00023be0 .word 0x00023be0
2294: 0001a805 .word 0x0001a805
00002298 <oracle_service>:
void oracle_service(void)
{
2298: b508 push {r3, lr}
delay_ms(1);
229a: 2001 movs r0, #1
229c: 4b02 ldr r3, [pc, #8] ; (22a8 <oracle_service+0x10>)
229e: 4798 blx r3
lv_task_handler();
22a0: 4b02 ldr r3, [pc, #8] ; (22ac <oracle_service+0x14>)
22a2: 4798 blx r3
22a4: bd08 pop {r3, pc}
22a6: bf00 nop
22a8: 00001521 .word 0x00001521
22ac: 000137cd .word 0x000137cd
000022b0 <lv_debug_check_null>:
bool lv_debug_check_null(const void * p)
{
if(p) return true;
return false;
}
22b0: 3000 adds r0, #0
22b2: bf18 it ne
22b4: 2001 movne r0, #1
22b6: 4770 bx lr
000022b8 <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)
{
22b8: b5f0 push {r4, r5, r6, r7, lr}
22ba: b0c3 sub sp, #268 ; 0x10c
22bc: 4605 mov r5, r0
22be: 4614 mov r4, r2
static const char hex[] = "0123456789ABCDEF";
size_t msg_len = strlen(msg);
22c0: 4b1c ldr r3, [pc, #112] ; (2334 <lv_debug_log_error+0x7c>)
22c2: 4798 blx r3
uint32_t value_len = sizeof(unsigned long int);
if(msg_len < 230) {
22c4: 28e5 cmp r0, #229 ; 0xe5
22c6: d82c bhi.n 2322 <lv_debug_log_error+0x6a>
22c8: 4606 mov r6, r0
char buf[255];
char * bufp = buf;
/*Add the function name*/
_lv_memcpy(bufp, msg, msg_len);
22ca: af02 add r7, sp, #8
22cc: 4602 mov r2, r0
22ce: 4629 mov r1, r5
22d0: 4638 mov r0, r7
22d2: 4b19 ldr r3, [pc, #100] ; (2338 <lv_debug_log_error+0x80>)
22d4: 4798 blx r3
bufp += msg_len;
22d6: 19bd adds r5, r7, r6
/*Add value in hey*/
*bufp = ' ';
22d8: 2320 movs r3, #32
22da: 55bb strb r3, [r7, r6]
bufp ++;
*bufp = '(';
22dc: 2328 movs r3, #40 ; 0x28
22de: 706b strb r3, [r5, #1]
bufp ++;
*bufp = '0';
22e0: 2330 movs r3, #48 ; 0x30
22e2: 70ab strb r3, [r5, #2]
bufp ++;
*bufp = 'x';
22e4: 2378 movs r3, #120 ; 0x78
22e6: 70eb strb r3, [r5, #3]
bufp ++;
22e8: 1d29 adds r1, r5, #4
22ea: 221c movs r2, #28
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];
22ec: 4813 ldr r0, [pc, #76] ; (233c <lv_debug_log_error+0x84>)
uint8_t x = (unsigned long int)((unsigned long int)value >> (i * 4)) & 0xF;
22ee: fa24 f302 lsr.w r3, r4, r2
*bufp = hex[x];
22f2: f003 030f and.w r3, r3, #15
22f6: 4403 add r3, r0
22f8: 7d1b ldrb r3, [r3, #20]
22fa: f801 3b01 strb.w r3, [r1], #1
22fe: 3a04 subs r2, #4
for(i = value_len * 2 - 1; i >= 0; i--) {
2300: f112 0f04 cmn.w r2, #4
2304: d1f3 bne.n 22ee <lv_debug_log_error+0x36>
bufp++;
}
*bufp = ')';
2306: 2329 movs r3, #41 ; 0x29
2308: 732b strb r3, [r5, #12]
bufp ++;
*bufp = '\0';
230a: 2300 movs r3, #0
230c: 736b strb r3, [r5, #13]
LV_LOG_ERROR(buf);
230e: ab02 add r3, sp, #8
2310: 9300 str r3, [sp, #0]
2312: 4b0b ldr r3, [pc, #44] ; (2340 <lv_debug_log_error+0x88>)
2314: 22bc movs r2, #188 ; 0xbc
2316: 490b ldr r1, [pc, #44] ; (2344 <lv_debug_log_error+0x8c>)
2318: 2003 movs r0, #3
231a: 4c0b ldr r4, [pc, #44] ; (2348 <lv_debug_log_error+0x90>)
231c: 47a0 blx r4
}
else {
LV_LOG_ERROR(msg);
}
}
231e: b043 add sp, #268 ; 0x10c
2320: bdf0 pop {r4, r5, r6, r7, pc}
LV_LOG_ERROR(msg);
2322: 9500 str r5, [sp, #0]
2324: 4b06 ldr r3, [pc, #24] ; (2340 <lv_debug_log_error+0x88>)
2326: 22bf movs r2, #191 ; 0xbf
2328: 4906 ldr r1, [pc, #24] ; (2344 <lv_debug_log_error+0x8c>)
232a: 2003 movs r0, #3
232c: 4c06 ldr r4, [pc, #24] ; (2348 <lv_debug_log_error+0x90>)
232e: 47a0 blx r4
}
2330: e7f5 b.n 231e <lv_debug_log_error+0x66>
2332: bf00 nop
2334: 0001b51f .word 0x0001b51f
2338: 00012655 .word 0x00012655
233c: 00023bec .word 0x00023bec
2340: 00023c14 .word 0x00023c14
2344: 00023c28 .word 0x00023c28
2348: 0001225d .word 0x0001225d
0000234c <lv_disp_get_scr_act>:
* 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)
{
if(!disp) disp = lv_disp_get_default();
234c: b108 cbz r0, 2352 <lv_disp_get_scr_act+0x6>
if(!disp) {
LV_LOG_WARN("lv_scr_act: no display registered to get its act. screen");
return NULL;
}
return disp->act_scr;
234e: 6bc0 ldr r0, [r0, #60] ; 0x3c
2350: 4770 bx lr
{
2352: b510 push {r4, lr}
2354: b082 sub sp, #8
if(!disp) disp = lv_disp_get_default();
2356: 4b08 ldr r3, [pc, #32] ; (2378 <lv_disp_get_scr_act+0x2c>)
2358: 4798 blx r3
if(!disp) {
235a: b110 cbz r0, 2362 <lv_disp_get_scr_act+0x16>
return disp->act_scr;
235c: 6bc0 ldr r0, [r0, #60] ; 0x3c
}
235e: b002 add sp, #8
2360: bd10 pop {r4, pc}
LV_LOG_WARN("lv_scr_act: no display registered to get its act. screen");
2362: 4b06 ldr r3, [pc, #24] ; (237c <lv_disp_get_scr_act+0x30>)
2364: 9300 str r3, [sp, #0]
2366: 4b06 ldr r3, [pc, #24] ; (2380 <lv_disp_get_scr_act+0x34>)
2368: 222e movs r2, #46 ; 0x2e
236a: 4906 ldr r1, [pc, #24] ; (2384 <lv_disp_get_scr_act+0x38>)
236c: 2002 movs r0, #2
236e: 4c06 ldr r4, [pc, #24] ; (2388 <lv_disp_get_scr_act+0x3c>)
2370: 47a0 blx r4
return NULL;
2372: 2000 movs r0, #0
2374: e7f3 b.n 235e <lv_disp_get_scr_act+0x12>
2376: bf00 nop
2378: 00010ee1 .word 0x00010ee1
237c: 00023e04 .word 0x00023e04
2380: 00023d30 .word 0x00023d30
2384: 00023dd8 .word 0x00023dd8
2388: 0001225d .word 0x0001225d
0000238c <lv_disp_get_layer_top>:
* @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)
{
if(!disp) disp = lv_disp_get_default();
238c: b108 cbz r0, 2392 <lv_disp_get_layer_top+0x6>
if(!disp) {
LV_LOG_WARN("lv_layer_top: no display registered to get its top layer");
return NULL;
}
return disp->top_layer;
238e: 6c00 ldr r0, [r0, #64] ; 0x40
2390: 4770 bx lr
{
2392: b510 push {r4, lr}
2394: b082 sub sp, #8
if(!disp) disp = lv_disp_get_default();
2396: 4b08 ldr r3, [pc, #32] ; (23b8 <lv_disp_get_layer_top+0x2c>)
2398: 4798 blx r3
if(!disp) {
239a: b110 cbz r0, 23a2 <lv_disp_get_layer_top+0x16>
return disp->top_layer;
239c: 6c00 ldr r0, [r0, #64] ; 0x40
}
239e: b002 add sp, #8
23a0: bd10 pop {r4, pc}
LV_LOG_WARN("lv_layer_top: no display registered to get its top layer");
23a2: 4b06 ldr r3, [pc, #24] ; (23bc <lv_disp_get_layer_top+0x30>)
23a4: 9300 str r3, [sp, #0]
23a6: 4b06 ldr r3, [pc, #24] ; (23c0 <lv_disp_get_layer_top+0x34>)
23a8: 224b movs r2, #75 ; 0x4b
23aa: 4906 ldr r1, [pc, #24] ; (23c4 <lv_disp_get_layer_top+0x38>)
23ac: 2002 movs r0, #2
23ae: 4c06 ldr r4, [pc, #24] ; (23c8 <lv_disp_get_layer_top+0x3c>)
23b0: 47a0 blx r4
return NULL;
23b2: 2000 movs r0, #0
23b4: e7f3 b.n 239e <lv_disp_get_layer_top+0x12>
23b6: bf00 nop
23b8: 00010ee1 .word 0x00010ee1
23bc: 00023e40 .word 0x00023e40
23c0: 00023d44 .word 0x00023d44
23c4: 00023dd8 .word 0x00023dd8
23c8: 0001225d .word 0x0001225d
000023cc <lv_disp_get_layer_sys>:
* @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)
{
if(!disp) disp = lv_disp_get_default();
23cc: b108 cbz r0, 23d2 <lv_disp_get_layer_sys+0x6>
if(!disp) {
LV_LOG_WARN("lv_layer_sys: no display registered to get its sys. layer");
return NULL;
}
return disp->sys_layer;
23ce: 6c40 ldr r0, [r0, #68] ; 0x44
23d0: 4770 bx lr
{
23d2: b510 push {r4, lr}
23d4: b082 sub sp, #8
if(!disp) disp = lv_disp_get_default();
23d6: 4b08 ldr r3, [pc, #32] ; (23f8 <lv_disp_get_layer_sys+0x2c>)
23d8: 4798 blx r3
if(!disp) {
23da: b110 cbz r0, 23e2 <lv_disp_get_layer_sys+0x16>
return disp->sys_layer;
23dc: 6c40 ldr r0, [r0, #68] ; 0x44
}
23de: b002 add sp, #8
23e0: bd10 pop {r4, pc}
LV_LOG_WARN("lv_layer_sys: no display registered to get its sys. layer");
23e2: 4b06 ldr r3, [pc, #24] ; (23fc <lv_disp_get_layer_sys+0x30>)
23e4: 9300 str r3, [sp, #0]
23e6: 4b06 ldr r3, [pc, #24] ; (2400 <lv_disp_get_layer_sys+0x34>)
23e8: 225c movs r2, #92 ; 0x5c
23ea: 4906 ldr r1, [pc, #24] ; (2404 <lv_disp_get_layer_sys+0x38>)
23ec: 2002 movs r0, #2
23ee: 4c06 ldr r4, [pc, #24] ; (2408 <lv_disp_get_layer_sys+0x3c>)
23f0: 47a0 blx r4
return NULL;
23f2: 2000 movs r0, #0
23f4: e7f3 b.n 23de <lv_disp_get_layer_sys+0x12>
23f6: bf00 nop
23f8: 00010ee1 .word 0x00010ee1
23fc: 00023e7c .word 0x00023e7c
2400: 00023d5c .word 0x00023d5c
2404: 00023dd8 .word 0x00023dd8
2408: 0001225d .word 0x0001225d
0000240c <obj_to_foreground>:
static void obj_to_foreground(lv_obj_t * obj)
{
/*Search for 'top' attribute*/
lv_obj_t * i = obj;
lv_obj_t * last_top = NULL;
while(i != NULL) {
240c: b1a0 cbz r0, 2438 <obj_to_foreground+0x2c>
{
240e: b538 push {r3, r4, r5, lr}
2410: 4603 mov r3, r0
while(i != NULL) {
2412: 2400 movs r4, #0
if(i->top != 0) last_top = i;
i = lv_obj_get_parent(i);
2414: 4d09 ldr r5, [pc, #36] ; (243c <obj_to_foreground+0x30>)
if(i->top != 0) last_top = i;
2416: f893 2034 ldrb.w r2, [r3, #52] ; 0x34
241a: f002 0220 and.w r2, r2, #32
241e: 2a00 cmp r2, #0
2420: bf18 it ne
2422: 461c movne r4, r3
i = lv_obj_get_parent(i);
2424: 4618 mov r0, r3
2426: 47a8 blx r5
while(i != NULL) {
2428: 4603 mov r3, r0
242a: 2800 cmp r0, #0
242c: d1f3 bne.n 2416 <obj_to_foreground+0xa>
}
if(last_top != NULL) {
242e: b114 cbz r4, 2436 <obj_to_foreground+0x2a>
/*Move the last_top object to the foreground*/
lv_obj_move_foreground(last_top);
2430: 4620 mov r0, r4
2432: 4b03 ldr r3, [pc, #12] ; (2440 <obj_to_foreground+0x34>)
2434: 4798 blx r3
2436: bd38 pop {r3, r4, r5, pc}
2438: 4770 bx lr
243a: bf00 nop
243c: 00002c7d .word 0x00002c7d
2440: 000033b5 .word 0x000033b5
00002444 <focus_next_core>:
{
2444: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
if(group->frozen) return;
2448: 7d03 ldrb r3, [r0, #20]
244a: f013 0f01 tst.w r3, #1
244e: d12a bne.n 24a6 <focus_next_core+0x62>
2450: 4617 mov r7, r2
2452: 468a mov sl, r1
2454: 4606 mov r6, r0
lv_obj_t ** obj_next = group->obj_focus;
2456: 68c4 ldr r4, [r0, #12]
bool can_begin = true;
2458: f04f 0901 mov.w r9, #1
lv_obj_t ** obj_sentinel = NULL;
245c: 2500 movs r5, #0
if(!lv_obj_get_hidden(*obj_next)) break;
245e: f8df 80c4 ldr.w r8, [pc, #196] ; 2524 <focus_next_core+0xe0>
can_begin = false;
2462: 46ab mov fp, r5
2464: e04a b.n 24fc <focus_next_core+0xb8>
if(group->wrap || obj_sentinel == NULL) {
2466: 7d33 ldrb r3, [r6, #20]
2468: f013 0f10 tst.w r3, #16
246c: d100 bne.n 2470 <focus_next_core+0x2c>
246e: b9d5 cbnz r5, 24a6 <focus_next_core+0x62>
if(!can_begin) return;
2470: f1b9 0f00 cmp.w r9, #0
2474: d017 beq.n 24a6 <focus_next_core+0x62>
obj_next = begin(&group->obj_ll);
2476: 4630 mov r0, r6
2478: 47d0 blx sl
247a: 4604 mov r4, r0
if(obj_sentinel == NULL) {
247c: 2d00 cmp r5, #0
247e: d035 beq.n 24ec <focus_next_core+0xa8>
can_begin = false;
2480: 46d9 mov r9, fp
2482: e046 b.n 2512 <focus_next_core+0xce>
if(obj_next == group->obj_focus) return; /*There's only one visible object and it's already focused*/
2484: 68f3 ldr r3, [r6, #12]
2486: 42a3 cmp r3, r4
2488: d00d beq.n 24a6 <focus_next_core+0x62>
if(group->obj_focus) {
248a: b193 cbz r3, 24b2 <focus_next_core+0x6e>
(*group->obj_focus)->signal_cb(*group->obj_focus, LV_SIGNAL_DEFOCUS, NULL);
248c: 6818 ldr r0, [r3, #0]
248e: 69c3 ldr r3, [r0, #28]
2490: 2200 movs r2, #0
2492: 2117 movs r1, #23
2494: 4798 blx r3
lv_res_t res = lv_event_send(*group->obj_focus, LV_EVENT_DEFOCUSED, NULL);
2496: 68f3 ldr r3, [r6, #12]
2498: 2200 movs r2, #0
249a: 210e movs r1, #14
249c: 6818 ldr r0, [r3, #0]
249e: 4b1e ldr r3, [pc, #120] ; (2518 <focus_next_core+0xd4>)
24a0: 4798 blx r3
if(res != LV_RES_OK) return;
24a2: 2801 cmp r0, #1
24a4: d001 beq.n 24aa <focus_next_core+0x66>
24a6: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
lv_obj_invalidate(*group->obj_focus);
24aa: 68f3 ldr r3, [r6, #12]
24ac: 6818 ldr r0, [r3, #0]
24ae: 4b1b ldr r3, [pc, #108] ; (251c <focus_next_core+0xd8>)
24b0: 4798 blx r3
group->obj_focus = obj_next;
24b2: 60f4 str r4, [r6, #12]
(*group->obj_focus)->signal_cb(*group->obj_focus, LV_SIGNAL_FOCUS, NULL);
24b4: 6820 ldr r0, [r4, #0]
24b6: 69c3 ldr r3, [r0, #28]
24b8: 2200 movs r2, #0
24ba: 2116 movs r1, #22
24bc: 4798 blx r3
lv_res_t res = lv_event_send(*group->obj_focus, LV_EVENT_FOCUSED, NULL);
24be: 68f3 ldr r3, [r6, #12]
24c0: 2200 movs r2, #0
24c2: 210d movs r1, #13
24c4: 6818 ldr r0, [r3, #0]
24c6: 4b14 ldr r3, [pc, #80] ; (2518 <focus_next_core+0xd4>)
24c8: 4798 blx r3
if(res != LV_RES_OK) return;
24ca: 2801 cmp r0, #1
24cc: d1eb bne.n 24a6 <focus_next_core+0x62>
obj_to_foreground(*group->obj_focus);
24ce: 68f3 ldr r3, [r6, #12]
24d0: 6818 ldr r0, [r3, #0]
24d2: 4b13 ldr r3, [pc, #76] ; (2520 <focus_next_core+0xdc>)
24d4: 4798 blx r3
lv_obj_invalidate(*group->obj_focus);
24d6: 68f3 ldr r3, [r6, #12]
24d8: 6818 ldr r0, [r3, #0]
24da: 4b10 ldr r3, [pc, #64] ; (251c <focus_next_core+0xd8>)
24dc: 4798 blx r3
if(group->focus_cb) group->focus_cb(group);
24de: 6933 ldr r3, [r6, #16]
24e0: 2b00 cmp r3, #0
24e2: d0e0 beq.n 24a6 <focus_next_core+0x62>
24e4: 4630 mov r0, r6
24e6: 4798 blx r3
24e8: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
if(obj_sentinel == NULL) return; /*Group is empty*/
24ec: 2800 cmp r0, #0
24ee: d0da beq.n 24a6 <focus_next_core+0x62>
obj_next = begin(&group->obj_ll);
24f0: 4605 mov r5, r0
can_begin = false;
24f2: 46d9 mov r9, fp
if(!lv_obj_get_hidden(*obj_next)) break;
24f4: 6820 ldr r0, [r4, #0]
24f6: 47c0 blx r8
24f8: 2800 cmp r0, #0
24fa: d0c3 beq.n 2484 <focus_next_core+0x40>
if(obj_next == NULL) {
24fc: 2c00 cmp r4, #0
24fe: d0b2 beq.n 2466 <focus_next_core+0x22>
2500: 2d00 cmp r5, #0
2502: bf08 it eq
2504: 4625 moveq r5, r4
obj_next = move(&group->obj_ll, obj_next);
2506: 4621 mov r1, r4
2508: 4630 mov r0, r6
250a: 47b8 blx r7
250c: 4604 mov r4, r0
if(obj_next == obj_sentinel) return;
250e: 42a8 cmp r0, r5
2510: d0c9 beq.n 24a6 <focus_next_core+0x62>
if(obj_next == NULL) continue;
2512: 2c00 cmp r4, #0
2514: d1ee bne.n 24f4 <focus_next_core+0xb0>
2516: e7f1 b.n 24fc <focus_next_core+0xb8>
2518: 00002acd .word 0x00002acd
251c: 00003321 .word 0x00003321
2520: 0000240d .word 0x0000240d
2524: 000031a5 .word 0x000031a5
00002528 <_lv_group_init>:
{
2528: b508 push {r3, lr}
_lv_ll_init(&LV_GC_ROOT(_lv_group_ll), sizeof(lv_group_t));
252a: 2118 movs r1, #24
252c: 4801 ldr r0, [pc, #4] ; (2534 <_lv_group_init+0xc>)
252e: 4b02 ldr r3, [pc, #8] ; (2538 <_lv_group_init+0x10>)
2530: 4798 blx r3
2532: bd08 pop {r3, pc}
2534: 20006dec .word 0x20006dec
2538: 00011ef9 .word 0x00011ef9
0000253c <lv_group_focus_next>:
{
253c: b508 push {r3, lr}
focus_next_core(group, _lv_ll_get_head, _lv_ll_get_next);
253e: 4a02 ldr r2, [pc, #8] ; (2548 <lv_group_focus_next+0xc>)
2540: 4902 ldr r1, [pc, #8] ; (254c <lv_group_focus_next+0x10>)
2542: 4b03 ldr r3, [pc, #12] ; (2550 <lv_group_focus_next+0x14>)
2544: 4798 blx r3
2546: bd08 pop {r3, pc}
2548: 00011fbd .word 0x00011fbd
254c: 00011fa9 .word 0x00011fa9
2550: 00002445 .word 0x00002445
00002554 <lv_group_focus_prev>:
{
2554: b508 push {r3, lr}
focus_next_core(group, _lv_ll_get_tail, _lv_ll_get_prev);
2556: 4a02 ldr r2, [pc, #8] ; (2560 <lv_group_focus_prev+0xc>)
2558: 4902 ldr r1, [pc, #8] ; (2564 <lv_group_focus_prev+0x10>)
255a: 4b03 ldr r3, [pc, #12] ; (2568 <lv_group_focus_prev+0x14>)
255c: 4798 blx r3
255e: bd08 pop {r3, pc}
2560: 00011fe9 .word 0x00011fe9
2564: 00011fb3 .word 0x00011fb3
2568: 00002445 .word 0x00002445
0000256c <lv_group_refocus>:
{
256c: b538 push {r3, r4, r5, lr}
256e: 4604 mov r4, r0
uint8_t temp_wrap = g->wrap;
2570: 7d03 ldrb r3, [r0, #20]
2572: f3c3 1500 ubfx r5, r3, #4, #1
g->wrap = 1;
2576: f043 0310 orr.w r3, r3, #16
257a: 7503 strb r3, [r0, #20]
if(g->refocus_policy == LV_GROUP_REFOCUS_POLICY_NEXT)
257c: f013 0f08 tst.w r3, #8
lv_group_focus_next(g);
2580: bf0c ite eq
2582: 4b04 ldreq r3, [pc, #16] ; (2594 <lv_group_refocus+0x28>)
lv_group_focus_prev(g);
2584: 4b04 ldrne r3, [pc, #16] ; (2598 <lv_group_refocus+0x2c>)
2586: 4798 blx r3
g->wrap = temp_wrap;
2588: 7d23 ldrb r3, [r4, #20]
258a: f365 1304 bfi r3, r5, #4, #1
258e: 7523 strb r3, [r4, #20]
2590: bd38 pop {r3, r4, r5, pc}
2592: bf00 nop
2594: 0000253d .word 0x0000253d
2598: 00002555 .word 0x00002555
0000259c <lv_group_add_obj>:
if(group == NULL) return;
259c: 2800 cmp r0, #0
259e: d04f beq.n 2640 <lv_group_add_obj+0xa4>
{
25a0: b5f0 push {r4, r5, r6, r7, lr}
25a2: b083 sub sp, #12
25a4: 4605 mov r5, r0
25a6: 460c mov r4, r1
_LV_LL_READ(group->obj_ll, obj_i) {
25a8: 4607 mov r7, r0
25aa: 4b26 ldr r3, [pc, #152] ; (2644 <lv_group_add_obj+0xa8>)
25ac: 4798 blx r3
25ae: 4601 mov r1, r0
25b0: b1a0 cbz r0, 25dc <lv_group_add_obj+0x40>
if((*obj_i) == obj) {
25b2: 6803 ldr r3, [r0, #0]
25b4: 429c cmp r4, r3
25b6: d007 beq.n 25c8 <lv_group_add_obj+0x2c>
_LV_LL_READ(group->obj_ll, obj_i) {
25b8: 4e23 ldr r6, [pc, #140] ; (2648 <lv_group_add_obj+0xac>)
25ba: 4638 mov r0, r7
25bc: 47b0 blx r6
25be: 4601 mov r1, r0
25c0: b160 cbz r0, 25dc <lv_group_add_obj+0x40>
if((*obj_i) == obj) {
25c2: 680b ldr r3, [r1, #0]
25c4: 42a3 cmp r3, r4
25c6: d1f8 bne.n 25ba <lv_group_add_obj+0x1e>
LV_LOG_INFO("lv_group_add_obj: the object is already added to this group");
25c8: 4b20 ldr r3, [pc, #128] ; (264c <lv_group_add_obj+0xb0>)
25ca: 9300 str r3, [sp, #0]
25cc: 4b20 ldr r3, [pc, #128] ; (2650 <lv_group_add_obj+0xb4>)
25ce: 2275 movs r2, #117 ; 0x75
25d0: 4920 ldr r1, [pc, #128] ; (2654 <lv_group_add_obj+0xb8>)
25d2: 2001 movs r0, #1
25d4: 4c20 ldr r4, [pc, #128] ; (2658 <lv_group_add_obj+0xbc>)
25d6: 47a0 blx r4
}
25d8: b003 add sp, #12
25da: bdf0 pop {r4, r5, r6, r7, pc}
if(obj->group_p) {
25dc: 6ba3 ldr r3, [r4, #56] ; 0x38
25de: b173 cbz r3, 25fe <lv_group_add_obj+0x62>
if(lv_obj_is_focused(obj)) {
25e0: 4620 mov r0, r4
25e2: 4b1e ldr r3, [pc, #120] ; (265c <lv_group_add_obj+0xc0>)
25e4: 4798 blx r3
25e6: b150 cbz r0, 25fe <lv_group_add_obj+0x62>
lv_group_refocus(obj->group_p);
25e8: 6ba0 ldr r0, [r4, #56] ; 0x38
25ea: 4b1d ldr r3, [pc, #116] ; (2660 <lv_group_add_obj+0xc4>)
25ec: 4798 blx r3
LV_LOG_INFO("lv_group_add_obj: assign object to an other group");
25ee: 4b1d ldr r3, [pc, #116] ; (2664 <lv_group_add_obj+0xc8>)
25f0: 9300 str r3, [sp, #0]
25f2: 4b17 ldr r3, [pc, #92] ; (2650 <lv_group_add_obj+0xb4>)
25f4: 227f movs r2, #127 ; 0x7f
25f6: 4917 ldr r1, [pc, #92] ; (2654 <lv_group_add_obj+0xb8>)
25f8: 2001 movs r0, #1
25fa: 4e17 ldr r6, [pc, #92] ; (2658 <lv_group_add_obj+0xbc>)
25fc: 47b0 blx r6
obj->group_p = group;
25fe: 63a5 str r5, [r4, #56] ; 0x38
lv_obj_t ** next = _lv_ll_ins_tail(&group->obj_ll);
2600: 4628 mov r0, r5
2602: 4b19 ldr r3, [pc, #100] ; (2668 <lv_group_add_obj+0xcc>)
2604: 4798 blx r3
2606: 4606 mov r6, r0
LV_ASSERT_MEM(next);
2608: 4b18 ldr r3, [pc, #96] ; (266c <lv_group_add_obj+0xd0>)
260a: 4798 blx r3
260c: b158 cbz r0, 2626 <lv_group_add_obj+0x8a>
if(next == NULL) return;
260e: 2e00 cmp r6, #0
2610: d0e2 beq.n 25d8 <lv_group_add_obj+0x3c>
*next = obj;
2612: 6034 str r4, [r6, #0]
if(_lv_ll_get_head(&group->obj_ll) == next) {
2614: 4628 mov r0, r5
2616: 4b0b ldr r3, [pc, #44] ; (2644 <lv_group_add_obj+0xa8>)
2618: 4798 blx r3
261a: 4286 cmp r6, r0
261c: d1dc bne.n 25d8 <lv_group_add_obj+0x3c>
lv_group_refocus(group);
261e: 4628 mov r0, r5
2620: 4b0f ldr r3, [pc, #60] ; (2660 <lv_group_add_obj+0xc4>)
2622: 4798 blx r3
2624: e7d8 b.n 25d8 <lv_group_add_obj+0x3c>
LV_ASSERT_MEM(next);
2626: 4b0a ldr r3, [pc, #40] ; (2650 <lv_group_add_obj+0xb4>)
2628: 9300 str r3, [sp, #0]
262a: 2285 movs r2, #133 ; 0x85
262c: 4909 ldr r1, [pc, #36] ; (2654 <lv_group_add_obj+0xb8>)
262e: 2003 movs r0, #3
2630: 4c09 ldr r4, [pc, #36] ; (2658 <lv_group_add_obj+0xbc>)
2632: 47a0 blx r4
2634: 4632 mov r2, r6
2636: 2300 movs r3, #0
2638: 480d ldr r0, [pc, #52] ; (2670 <lv_group_add_obj+0xd4>)
263a: 490e ldr r1, [pc, #56] ; (2674 <lv_group_add_obj+0xd8>)
263c: 4788 blx r1
263e: e7fe b.n 263e <lv_group_add_obj+0xa2>
2640: 4770 bx lr
2642: bf00 nop
2644: 00011fa9 .word 0x00011fa9
2648: 00011fbd .word 0x00011fbd
264c: 00023fe8 .word 0x00023fe8
2650: 00023f98 .word 0x00023f98
2654: 00023fac .word 0x00023fac
2658: 0001225d .word 0x0001225d
265c: 00004ff9 .word 0x00004ff9
2660: 0000256d .word 0x0000256d
2664: 00024024 .word 0x00024024
2668: 00011f5d .word 0x00011f5d
266c: 000022b1 .word 0x000022b1
2670: 00023fd8 .word 0x00023fd8
2674: 000022b9 .word 0x000022b9
00002678 <lv_group_remove_obj>:
{
2678: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
lv_group_t * g = obj->group_p;
267c: f8d0 8038 ldr.w r8, [r0, #56] ; 0x38
if(g == NULL) return;
2680: f1b8 0f00 cmp.w r8, #0
2684: d051 beq.n 272a <lv_group_remove_obj+0xb2>
if(g->obj_focus == NULL) return; /*Just to be sure (Not possible if there is at least one object in the group)*/
2686: f8d8 300c ldr.w r3, [r8, #12]
268a: 2b00 cmp r3, #0
268c: d04d beq.n 272a <lv_group_remove_obj+0xb2>
268e: 4605 mov r5, r0
if(*g->obj_focus == obj) {
2690: 681b ldr r3, [r3, #0]
2692: 4298 cmp r0, r3
2694: d01e beq.n 26d4 <lv_group_remove_obj+0x5c>
_LV_LL_READ(g->obj_ll, i) {
2696: 4646 mov r6, r8
2698: 4640 mov r0, r8
269a: 4b25 ldr r3, [pc, #148] ; (2730 <lv_group_remove_obj+0xb8>)
269c: 4798 blx r3
269e: 4604 mov r4, r0
26a0: 2800 cmp r0, #0
26a2: d042 beq.n 272a <lv_group_remove_obj+0xb2>
if(*i == obj) {
26a4: 6803 ldr r3, [r0, #0]
26a6: 429d cmp r5, r3
26a8: d009 beq.n 26be <lv_group_remove_obj+0x46>
_LV_LL_READ(g->obj_ll, i) {
26aa: 4f22 ldr r7, [pc, #136] ; (2734 <lv_group_remove_obj+0xbc>)
26ac: 4621 mov r1, r4
26ae: 4630 mov r0, r6
26b0: 47b8 blx r7
26b2: 4604 mov r4, r0
26b4: 2800 cmp r0, #0
26b6: d038 beq.n 272a <lv_group_remove_obj+0xb2>
if(*i == obj) {
26b8: 6823 ldr r3, [r4, #0]
26ba: 429d cmp r5, r3
26bc: d1f6 bne.n 26ac <lv_group_remove_obj+0x34>
_lv_ll_remove(&g->obj_ll, i);
26be: 4621 mov r1, r4
26c0: 4640 mov r0, r8
26c2: 4b1d ldr r3, [pc, #116] ; (2738 <lv_group_remove_obj+0xc0>)
26c4: 4798 blx r3
lv_mem_free(i);
26c6: 4620 mov r0, r4
26c8: 4b1c ldr r3, [pc, #112] ; (273c <lv_group_remove_obj+0xc4>)
26ca: 4798 blx r3
obj->group_p = NULL;
26cc: 2300 movs r3, #0
26ce: 63ab str r3, [r5, #56] ; 0x38
break;
26d0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(g->frozen) g->frozen = 0;
26d4: f898 3014 ldrb.w r3, [r8, #20]
26d8: f013 0f01 tst.w r3, #1
26dc: d005 beq.n 26ea <lv_group_remove_obj+0x72>
26de: f898 3014 ldrb.w r3, [r8, #20]
26e2: f36f 0300 bfc r3, #0, #1
26e6: f888 3014 strb.w r3, [r8, #20]
if(_lv_ll_get_head(&g->obj_ll) == g->obj_focus && _lv_ll_get_tail(&g->obj_ll) == g->obj_focus) {
26ea: 4640 mov r0, r8
26ec: 4b10 ldr r3, [pc, #64] ; (2730 <lv_group_remove_obj+0xb8>)
26ee: 4798 blx r3
26f0: f8d8 300c ldr.w r3, [r8, #12]
26f4: 4283 cmp r3, r0
26f6: d00b beq.n 2710 <lv_group_remove_obj+0x98>
lv_group_refocus(g);
26f8: 4640 mov r0, r8
26fa: 4b11 ldr r3, [pc, #68] ; (2740 <lv_group_remove_obj+0xc8>)
26fc: 4798 blx r3
if(*g->obj_focus == obj) {
26fe: f8d8 300c ldr.w r3, [r8, #12]
2702: 681b ldr r3, [r3, #0]
2704: 429d cmp r5, r3
g->obj_focus = NULL;
2706: bf04 itt eq
2708: 2300 moveq r3, #0
270a: f8c8 300c streq.w r3, [r8, #12]
270e: e7c2 b.n 2696 <lv_group_remove_obj+0x1e>
if(_lv_ll_get_head(&g->obj_ll) == g->obj_focus && _lv_ll_get_tail(&g->obj_ll) == g->obj_focus) {
2710: 4640 mov r0, r8
2712: 4b0c ldr r3, [pc, #48] ; (2744 <lv_group_remove_obj+0xcc>)
2714: 4798 blx r3
2716: f8d8 300c ldr.w r3, [r8, #12]
271a: 4298 cmp r0, r3
271c: d1ec bne.n 26f8 <lv_group_remove_obj+0x80>
(*g->obj_focus)->signal_cb(*g->obj_focus, LV_SIGNAL_DEFOCUS, NULL);
271e: 6800 ldr r0, [r0, #0]
2720: 69c3 ldr r3, [r0, #28]
2722: 2200 movs r2, #0
2724: 2117 movs r1, #23
2726: 4798 blx r3
2728: e7e9 b.n 26fe <lv_group_remove_obj+0x86>
272a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
272e: bf00 nop
2730: 00011fa9 .word 0x00011fa9
2734: 00011fbd .word 0x00011fbd
2738: 00012095 .word 0x00012095
273c: 000124c5 .word 0x000124c5
2740: 0000256d .word 0x0000256d
2744: 00011fb3 .word 0x00011fb3
00002748 <lv_group_get_focused>:
if(!group) return NULL;
2748: b118 cbz r0, 2752 <lv_group_get_focused+0xa>
if(group->obj_focus == NULL) return NULL;
274a: 68c3 ldr r3, [r0, #12]
274c: b11b cbz r3, 2756 <lv_group_get_focused+0xe>
return *group->obj_focus;
274e: 6818 ldr r0, [r3, #0]
2750: 4770 bx lr
if(!group) return NULL;
2752: 2000 movs r0, #0
2754: 4770 bx lr
if(group->obj_focus == NULL) return NULL;
2756: 2000 movs r0, #0
}
2758: 4770 bx lr
0000275a <lv_group_get_editing>:
if(!group) return false;
275a: b118 cbz r0, 2764 <lv_group_get_editing+0xa>
return group->editing ? true : false;
275c: 7d00 ldrb r0, [r0, #20]
275e: f3c0 0040 ubfx r0, r0, #1, #1
2762: 4770 bx lr
if(!group) return false;
2764: 2000 movs r0, #0
}
2766: 4770 bx lr
00002768 <lv_indev_get_act>:
* right now
*/
lv_indev_t * lv_indev_get_act(void)
{
return indev_act;
}
2768: 4b01 ldr r3, [pc, #4] ; (2770 <lv_indev_get_act+0x8>)
276a: 6858 ldr r0, [r3, #4]
276c: 4770 bx lr
276e: bf00 nop
2770: 20002674 .word 0x20002674
00002774 <lv_indev_reset>:
* Reset one or all input devices
* @param indev pointer to an input device to reset or NULL to reset all of them
* @param obj pointer to an object which triggers the reset.
*/
void lv_indev_reset(lv_indev_t * indev, lv_obj_t * obj)
{
2774: b5f8 push {r3, r4, r5, r6, r7, lr}
if(indev) {
2776: b1b0 cbz r0, 27a6 <lv_indev_reset+0x32>
2778: 4603 mov r3, r0
indev->proc.reset_query = 1;
277a: f890 2050 ldrb.w r2, [r0, #80] ; 0x50
277e: f042 0202 orr.w r2, r2, #2
2782: f880 2050 strb.w r2, [r0, #80] ; 0x50
if(indev_act == indev) indev_obj_act = NULL;
2786: 4a18 ldr r2, [pc, #96] ; (27e8 <lv_indev_reset+0x74>)
2788: 6852 ldr r2, [r2, #4]
278a: 4290 cmp r0, r2
278c: d004 beq.n 2798 <lv_indev_reset+0x24>
if(obj == NULL || indev->proc.types.pointer.last_pressed == obj) {
278e: b139 cbz r1, 27a0 <lv_indev_reset+0x2c>
2790: 6bda ldr r2, [r3, #60] ; 0x3c
2792: 4291 cmp r1, r2
2794: d004 beq.n 27a0 <lv_indev_reset+0x2c>
2796: bdf8 pop {r3, r4, r5, r6, r7, pc}
if(indev_act == indev) indev_obj_act = NULL;
2798: 2000 movs r0, #0
279a: 4a13 ldr r2, [pc, #76] ; (27e8 <lv_indev_reset+0x74>)
279c: 6010 str r0, [r2, #0]
279e: e7f6 b.n 278e <lv_indev_reset+0x1a>
indev->proc.types.pointer.last_pressed = NULL;
27a0: 2200 movs r2, #0
27a2: 63da str r2, [r3, #60] ; 0x3c
27a4: bdf8 pop {r3, r4, r5, r6, r7, pc}
27a6: 460c mov r4, r1
}
}
else {
lv_indev_t * i = lv_indev_get_next(NULL);
27a8: 2000 movs r0, #0
27aa: 4b10 ldr r3, [pc, #64] ; (27ec <lv_indev_reset+0x78>)
27ac: 4798 blx r3
while(i) {
27ae: 4603 mov r3, r0
27b0: 2800 cmp r0, #0
27b2: d0f0 beq.n 2796 <lv_indev_reset+0x22>
i->proc.reset_query = 1;
if(indev_act == i) indev_obj_act = NULL;
27b4: 4d0c ldr r5, [pc, #48] ; (27e8 <lv_indev_reset+0x74>)
27b6: 2700 movs r7, #0
if(obj == NULL || i->proc.types.pointer.last_pressed == obj) {
i->proc.types.pointer.last_pressed = NULL;
}
i = lv_indev_get_next(i);
27b8: 4e0c ldr r6, [pc, #48] ; (27ec <lv_indev_reset+0x78>)
27ba: e005 b.n 27c8 <lv_indev_reset+0x54>
i->proc.types.pointer.last_pressed = NULL;
27bc: 63df str r7, [r3, #60] ; 0x3c
i = lv_indev_get_next(i);
27be: 4618 mov r0, r3
27c0: 47b0 blx r6
while(i) {
27c2: 4603 mov r3, r0
27c4: 2800 cmp r0, #0
27c6: d0e6 beq.n 2796 <lv_indev_reset+0x22>
i->proc.reset_query = 1;
27c8: f893 2050 ldrb.w r2, [r3, #80] ; 0x50
27cc: f042 0202 orr.w r2, r2, #2
27d0: f883 2050 strb.w r2, [r3, #80] ; 0x50
if(indev_act == i) indev_obj_act = NULL;
27d4: 686a ldr r2, [r5, #4]
27d6: 429a cmp r2, r3
27d8: bf08 it eq
27da: 602f streq r7, [r5, #0]
if(obj == NULL || i->proc.types.pointer.last_pressed == obj) {
27dc: 2c00 cmp r4, #0
27de: d0ed beq.n 27bc <lv_indev_reset+0x48>
27e0: 6bda ldr r2, [r3, #60] ; 0x3c
27e2: 4294 cmp r4, r2
27e4: d1eb bne.n 27be <lv_indev_reset+0x4a>
27e6: e7e9 b.n 27bc <lv_indev_reset+0x48>
27e8: 20002674 .word 0x20002674
27ec: 00011021 .word 0x00011021
000027f0 <_lv_indev_init>:
{
27f0: b508 push {r3, lr}
lv_indev_reset(NULL, NULL); /*Reset all input devices*/
27f2: 2100 movs r1, #0
27f4: 4608 mov r0, r1
27f6: 4b01 ldr r3, [pc, #4] ; (27fc <_lv_indev_init+0xc>)
27f8: 4798 blx r3
27fa: bd08 pop {r3, pc}
27fc: 00002775 .word 0x00002775
00002800 <lv_indev_get_obj_act>:
* @return pointer to currently active object or NULL if no active object
*/
lv_obj_t * lv_indev_get_obj_act(void)
{
return indev_obj_act;
}
2800: 4b01 ldr r3, [pc, #4] ; (2808 <lv_indev_get_obj_act+0x8>)
2802: 6818 ldr r0, [r3, #0]
2804: 4770 bx lr
2806: bf00 nop
2808: 20002674 .word 0x20002674
0000280c <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)
{
280c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
2810: 4689 mov r9, r1
2812: 4690 mov r8, r2
lv_obj_t * i;
_LV_LL_READ(obj->child_ll, i) {
2814: f100 0a04 add.w sl, r0, #4
2818: 4650 mov r0, sl
281a: 4b11 ldr r3, [pc, #68] ; (2860 <refresh_children_position+0x54>)
281c: 4798 blx r3
281e: b1e0 cbz r0, 285a <refresh_children_position+0x4e>
2820: 4604 mov r4, r0
i->coords.x1 += x_diff;
2822: fa1f f689 uxth.w r6, r9
i->coords.y1 += y_diff;
2826: fa1f f588 uxth.w r5, r8
_LV_LL_READ(obj->child_ll, i) {
282a: 4f0e ldr r7, [pc, #56] ; (2864 <refresh_children_position+0x58>)
i->coords.x1 += x_diff;
282c: 8a23 ldrh r3, [r4, #16]
282e: 4433 add r3, r6
2830: 8223 strh r3, [r4, #16]
i->coords.y1 += y_diff;
2832: 8a63 ldrh r3, [r4, #18]
2834: 442b add r3, r5
2836: 8263 strh r3, [r4, #18]
i->coords.x2 += x_diff;
2838: 8aa3 ldrh r3, [r4, #20]
283a: 4433 add r3, r6
283c: 82a3 strh r3, [r4, #20]
i->coords.y2 += y_diff;
283e: 8ae3 ldrh r3, [r4, #22]
2840: 442b add r3, r5
2842: 82e3 strh r3, [r4, #22]
refresh_children_position(i, x_diff, y_diff);
2844: 4642 mov r2, r8
2846: 4649 mov r1, r9
2848: 4620 mov r0, r4
284a: f7ff ffdf bl 280c <refresh_children_position>
_LV_LL_READ(obj->child_ll, i) {
284e: 4621 mov r1, r4
2850: 4650 mov r0, sl
2852: 47b8 blx r7
2854: 4604 mov r4, r0
2856: 2800 cmp r0, #0
2858: d1e8 bne.n 282c <refresh_children_position+0x20>
285a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
285e: bf00 nop
2860: 00011fa9 .word 0x00011fa9
2864: 00011fbd .word 0x00011fbd
00002868 <lv_init>:
{
2868: b530 push {r4, r5, lr}
286a: b085 sub sp, #20
if(lv_initialized) {
286c: 4b21 ldr r3, [pc, #132] ; (28f4 <lv_init+0x8c>)
286e: 781b ldrb r3, [r3, #0]
2870: 2b00 cmp r3, #0
2872: d136 bne.n 28e2 <lv_init+0x7a>
_lv_mem_init();
2874: 4b20 ldr r3, [pc, #128] ; (28f8 <lv_init+0x90>)
2876: 4798 blx r3
_lv_task_core_init();
2878: 4b20 ldr r3, [pc, #128] ; (28fc <lv_init+0x94>)
287a: 4798 blx r3
_lv_fs_init();
287c: 4b20 ldr r3, [pc, #128] ; (2900 <lv_init+0x98>)
287e: 4798 blx r3
_lv_anim_core_init();
2880: 4b20 ldr r3, [pc, #128] ; (2904 <lv_init+0x9c>)
2882: 4798 blx r3
_lv_group_init();
2884: 4b20 ldr r3, [pc, #128] ; (2908 <lv_init+0xa0>)
2886: 4798 blx r3
_lv_ll_init(&LV_GC_ROOT(_lv_obj_style_trans_ll), sizeof(lv_style_trans_t));
2888: 2110 movs r1, #16
288a: 4820 ldr r0, [pc, #128] ; (290c <lv_init+0xa4>)
288c: 4c20 ldr r4, [pc, #128] ; (2910 <lv_init+0xa8>)
288e: 47a0 blx r4
lv_theme_t * th = LV_THEME_DEFAULT_INIT(LV_THEME_DEFAULT_COLOR_PRIMARY, LV_THEME_DEFAULT_COLOR_SECONDARY,
2890: 4b20 ldr r3, [pc, #128] ; (2914 <lv_init+0xac>)
2892: 9302 str r3, [sp, #8]
2894: 9301 str r3, [sp, #4]
2896: 9300 str r3, [sp, #0]
2898: 2202 movs r2, #2
289a: f04f 011f mov.w r1, #31
289e: f64f 0000 movw r0, #63488 ; 0xf800
28a2: 4d1d ldr r5, [pc, #116] ; (2918 <lv_init+0xb0>)
28a4: 47a8 blx r5
lv_theme_set_act(th);
28a6: 4b1d ldr r3, [pc, #116] ; (291c <lv_init+0xb4>)
28a8: 4798 blx r3
_lv_refr_init();
28aa: 4b1d ldr r3, [pc, #116] ; (2920 <lv_init+0xb8>)
28ac: 4798 blx r3
_lv_ll_init(&LV_GC_ROOT(_lv_disp_ll), sizeof(lv_disp_t));
28ae: f44f 71b8 mov.w r1, #368 ; 0x170
28b2: 481c ldr r0, [pc, #112] ; (2924 <lv_init+0xbc>)
28b4: 47a0 blx r4
_lv_ll_init(&LV_GC_ROOT(_lv_indev_ll), sizeof(lv_indev_t));
28b6: 2160 movs r1, #96 ; 0x60
28b8: 481b ldr r0, [pc, #108] ; (2928 <lv_init+0xc0>)
28ba: 47a0 blx r4
_lv_indev_init();
28bc: 4b1b ldr r3, [pc, #108] ; (292c <lv_init+0xc4>)
28be: 4798 blx r3
_lv_img_decoder_init();
28c0: 4b1b ldr r3, [pc, #108] ; (2930 <lv_init+0xc8>)
28c2: 4798 blx r3
lv_img_cache_set_size(LV_IMG_CACHE_DEF_SIZE);
28c4: 2001 movs r0, #1
28c6: 4b1b ldr r3, [pc, #108] ; (2934 <lv_init+0xcc>)
28c8: 4798 blx r3
lv_initialized = true;
28ca: 2001 movs r0, #1
28cc: 4b09 ldr r3, [pc, #36] ; (28f4 <lv_init+0x8c>)
28ce: 7018 strb r0, [r3, #0]
LV_LOG_INFO("lv_init ready");
28d0: 4b19 ldr r3, [pc, #100] ; (2938 <lv_init+0xd0>)
28d2: 9300 str r3, [sp, #0]
28d4: 4b19 ldr r3, [pc, #100] ; (293c <lv_init+0xd4>)
28d6: 22a2 movs r2, #162 ; 0xa2
28d8: 4919 ldr r1, [pc, #100] ; (2940 <lv_init+0xd8>)
28da: 4c1a ldr r4, [pc, #104] ; (2944 <lv_init+0xdc>)
28dc: 47a0 blx r4
}
28de: b005 add sp, #20
28e0: bd30 pop {r4, r5, pc}
LV_LOG_WARN("lv_init: already inited");
28e2: 4b19 ldr r3, [pc, #100] ; (2948 <lv_init+0xe0>)
28e4: 9300 str r3, [sp, #0]
28e6: 4b15 ldr r3, [pc, #84] ; (293c <lv_init+0xd4>)
28e8: 2278 movs r2, #120 ; 0x78
28ea: 4915 ldr r1, [pc, #84] ; (2940 <lv_init+0xd8>)
28ec: 2002 movs r0, #2
28ee: 4c15 ldr r4, [pc, #84] ; (2944 <lv_init+0xdc>)
28f0: 47a0 blx r4
return;
28f2: e7f4 b.n 28de <lv_init+0x76>
28f4: 2000267c .word 0x2000267c
28f8: 000123bd .word 0x000123bd
28fc: 000135ed .word 0x000135ed
2900: 00011c79 .word 0x00011c79
2904: 0001129d .word 0x0001129d
2908: 00002529 .word 0x00002529
290c: 20006d3c .word 0x20006d3c
2910: 00011ef9 .word 0x00011ef9
2914: 20000010 .word 0x20000010
2918: 00016b49 .word 0x00016b49
291c: 000141d1 .word 0x000141d1
2920: 00005e55 .word 0x00005e55
2924: 20006c98 .word 0x20006c98
2928: 20006c8c .word 0x20006c8c
292c: 000027f1 .word 0x000027f1
2930: 0000ffc1 .word 0x0000ffc1
2934: 0000f42d .word 0x0000f42d
2938: 0002481c .word 0x0002481c
293c: 00024058 .word 0x00024058
2940: 000247dc .word 0x000247dc
2944: 0001225d .word 0x0001225d
2948: 00024804 .word 0x00024804
0000294c <lv_obj_set_adv_hittest>:
{
294c: b530 push {r4, r5, lr}
294e: b083 sub sp, #12
2950: 4604 mov r4, r0
2952: 460d mov r5, r1
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2954: 4b0c ldr r3, [pc, #48] ; (2988 <lv_obj_set_adv_hittest+0x3c>)
2956: 4798 blx r3
2958: b138 cbz r0, 296a <lv_obj_set_adv_hittest+0x1e>
obj->adv_hittest = en == false ? 0 : 1;
295a: f894 3034 ldrb.w r3, [r4, #52] ; 0x34
295e: f365 13c7 bfi r3, r5, #7, #1
2962: f884 3034 strb.w r3, [r4, #52] ; 0x34
}
2966: b003 add sp, #12
2968: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
296a: 4b08 ldr r3, [pc, #32] ; (298c <lv_obj_set_adv_hittest+0x40>)
296c: 9300 str r3, [sp, #0]
296e: f240 5294 movw r2, #1428 ; 0x594
2972: 4907 ldr r1, [pc, #28] ; (2990 <lv_obj_set_adv_hittest+0x44>)
2974: 2003 movs r0, #3
2976: 4d07 ldr r5, [pc, #28] ; (2994 <lv_obj_set_adv_hittest+0x48>)
2978: 47a8 blx r5
297a: 4622 mov r2, r4
297c: 2300 movs r3, #0
297e: 4806 ldr r0, [pc, #24] ; (2998 <lv_obj_set_adv_hittest+0x4c>)
2980: 4906 ldr r1, [pc, #24] ; (299c <lv_obj_set_adv_hittest+0x50>)
2982: 4788 blx r1
2984: e7fe b.n 2984 <lv_obj_set_adv_hittest+0x38>
2986: bf00 nop
2988: 000022b1 .word 0x000022b1
298c: 000240b4 .word 0x000240b4
2990: 000247dc .word 0x000247dc
2994: 0001225d .word 0x0001225d
2998: 0002483c .word 0x0002483c
299c: 000022b9 .word 0x000022b9
000029a0 <lv_obj_set_click>:
{
29a0: b530 push {r4, r5, lr}
29a2: b083 sub sp, #12
29a4: 4604 mov r4, r0
29a6: 460d mov r5, r1
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
29a8: 4b0c ldr r3, [pc, #48] ; (29dc <lv_obj_set_click+0x3c>)
29aa: 4798 blx r3
29ac: b138 cbz r0, 29be <lv_obj_set_click+0x1e>
obj->click = (en == true ? 1 : 0);
29ae: f894 3034 ldrb.w r3, [r4, #52] ; 0x34
29b2: f365 0300 bfi r3, r5, #0, #1
29b6: f884 3034 strb.w r3, [r4, #52] ; 0x34
}
29ba: b003 add sp, #12
29bc: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
29be: 4b08 ldr r3, [pc, #32] ; (29e0 <lv_obj_set_click+0x40>)
29c0: 9300 str r3, [sp, #0]
29c2: f44f 62b4 mov.w r2, #1440 ; 0x5a0
29c6: 4907 ldr r1, [pc, #28] ; (29e4 <lv_obj_set_click+0x44>)
29c8: 2003 movs r0, #3
29ca: 4d07 ldr r5, [pc, #28] ; (29e8 <lv_obj_set_click+0x48>)
29cc: 47a8 blx r5
29ce: 4622 mov r2, r4
29d0: 2300 movs r3, #0
29d2: 4806 ldr r0, [pc, #24] ; (29ec <lv_obj_set_click+0x4c>)
29d4: 4906 ldr r1, [pc, #24] ; (29f0 <lv_obj_set_click+0x50>)
29d6: 4788 blx r1
29d8: e7fe b.n 29d8 <lv_obj_set_click+0x38>
29da: bf00 nop
29dc: 000022b1 .word 0x000022b1
29e0: 000240cc .word 0x000240cc
29e4: 000247dc .word 0x000247dc
29e8: 0001225d .word 0x0001225d
29ec: 0002483c .word 0x0002483c
29f0: 000022b9 .word 0x000022b9
000029f4 <lv_event_send_func>:
{
29f4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
29f8: b086 sub sp, #24
29fa: 4607 mov r7, r0
29fc: 4615 mov r5, r2
29fe: 461e mov r6, r3
if(obj != NULL) {
2a00: 460c mov r4, r1
2a02: b121 cbz r1, 2a0e <lv_event_send_func+0x1a>
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2a04: 4608 mov r0, r1
2a06: 4b28 ldr r3, [pc, #160] ; (2aa8 <lv_event_send_func+0xb4>)
2a08: 4798 blx r3
2a0a: 2800 cmp r0, #0
2a0c: d033 beq.n 2a76 <lv_event_send_func+0x82>
event_temp_data.obj = obj;
2a0e: 9403 str r4, [sp, #12]
event_temp_data.deleted = false;
2a10: 2300 movs r3, #0
2a12: f88d 3010 strb.w r3, [sp, #16]
event_temp_data.prev = NULL;
2a16: 9305 str r3, [sp, #20]
if(event_temp_data_head) {
2a18: 4b24 ldr r3, [pc, #144] ; (2aac <lv_event_send_func+0xb8>)
2a1a: 685b ldr r3, [r3, #4]
2a1c: b103 cbz r3, 2a20 <lv_event_send_func+0x2c>
event_temp_data.prev = event_temp_data_head;
2a1e: 9305 str r3, [sp, #20]
event_temp_data_head = &event_temp_data;
2a20: 4b22 ldr r3, [pc, #136] ; (2aac <lv_event_send_func+0xb8>)
2a22: aa03 add r2, sp, #12
2a24: 605a str r2, [r3, #4]
const void * event_act_data_save = event_act_data;
2a26: f8d3 8008 ldr.w r8, [r3, #8]
event_act_data = data;
2a2a: 609e str r6, [r3, #8]
lv_indev_t * indev_act = lv_indev_get_act();
2a2c: 4b20 ldr r3, [pc, #128] ; (2ab0 <lv_event_send_func+0xbc>)
2a2e: 4798 blx r3
if(indev_act) {
2a30: b118 cbz r0, 2a3a <lv_event_send_func+0x46>
if(indev_act->driver.feedback_cb) indev_act->driver.feedback_cb(&indev_act->driver, event);
2a32: 6883 ldr r3, [r0, #8]
2a34: b10b cbz r3, 2a3a <lv_event_send_func+0x46>
2a36: 4629 mov r1, r5
2a38: 4798 blx r3
if(event_xcb) event_xcb(obj, event);
2a3a: b117 cbz r7, 2a42 <lv_event_send_func+0x4e>
2a3c: 4629 mov r1, r5
2a3e: 4620 mov r0, r4
2a40: 47b8 blx r7
event_act_data = event_act_data_save;
2a42: 4b1a ldr r3, [pc, #104] ; (2aac <lv_event_send_func+0xb8>)
2a44: f8c3 8008 str.w r8, [r3, #8]
event_temp_data_head = event_temp_data_head->prev;
2a48: 685a ldr r2, [r3, #4]
2a4a: 6892 ldr r2, [r2, #8]
2a4c: 605a str r2, [r3, #4]
if(event_temp_data.deleted) {
2a4e: f89d 3010 ldrb.w r3, [sp, #16]
2a52: b9f3 cbnz r3, 2a92 <lv_event_send_func+0x9e>
if(obj) {
2a54: b30c cbz r4, 2a9a <lv_event_send_func+0xa6>
if(obj->parent_event && obj->parent) {
2a56: f894 3034 ldrb.w r3, [r4, #52] ; 0x34
2a5a: f013 0f40 tst.w r3, #64 ; 0x40
2a5e: d01e beq.n 2a9e <lv_event_send_func+0xaa>
2a60: 6820 ldr r0, [r4, #0]
2a62: b1f0 cbz r0, 2aa2 <lv_event_send_func+0xae>
lv_res_t res = lv_event_send(obj->parent, event, data);
2a64: 4632 mov r2, r6
2a66: 4629 mov r1, r5
2a68: 4b12 ldr r3, [pc, #72] ; (2ab4 <lv_event_send_func+0xc0>)
2a6a: 4798 blx r3
return LV_RES_INV;
2a6c: 2801 cmp r0, #1
2a6e: bf14 ite ne
2a70: 2000 movne r0, #0
2a72: 2001 moveq r0, #1
2a74: e00e b.n 2a94 <lv_event_send_func+0xa0>
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2a76: 4b10 ldr r3, [pc, #64] ; (2ab8 <lv_event_send_func+0xc4>)
2a78: 9300 str r3, [sp, #0]
2a7a: f44f 62db mov.w r2, #1752 ; 0x6d8
2a7e: 490f ldr r1, [pc, #60] ; (2abc <lv_event_send_func+0xc8>)
2a80: 2003 movs r0, #3
2a82: 4d0f ldr r5, [pc, #60] ; (2ac0 <lv_event_send_func+0xcc>)
2a84: 47a8 blx r5
2a86: 4622 mov r2, r4
2a88: 2300 movs r3, #0
2a8a: 480e ldr r0, [pc, #56] ; (2ac4 <lv_event_send_func+0xd0>)
2a8c: 490e ldr r1, [pc, #56] ; (2ac8 <lv_event_send_func+0xd4>)
2a8e: 4788 blx r1
2a90: e7fe b.n 2a90 <lv_event_send_func+0x9c>
return LV_RES_INV;
2a92: 2000 movs r0, #0
}
2a94: b006 add sp, #24
2a96: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
return LV_RES_OK;
2a9a: 2001 movs r0, #1
2a9c: e7fa b.n 2a94 <lv_event_send_func+0xa0>
2a9e: 2001 movs r0, #1
2aa0: e7f8 b.n 2a94 <lv_event_send_func+0xa0>
2aa2: 2001 movs r0, #1
2aa4: e7f6 b.n 2a94 <lv_event_send_func+0xa0>
2aa6: bf00 nop
2aa8: 000022b1 .word 0x000022b1
2aac: 2000267c .word 0x2000267c
2ab0: 00002769 .word 0x00002769
2ab4: 00002acd .word 0x00002acd
2ab8: 0002419c .word 0x0002419c
2abc: 000247dc .word 0x000247dc
2ac0: 0001225d .word 0x0001225d
2ac4: 0002483c .word 0x0002483c
2ac8: 000022b9 .word 0x000022b9
00002acc <lv_event_send>:
if(obj == NULL) return LV_RES_OK;
2acc: b1e8 cbz r0, 2b0a <lv_event_send+0x3e>
{
2ace: b570 push {r4, r5, r6, lr}
2ad0: b082 sub sp, #8
2ad2: 4604 mov r4, r0
2ad4: 4616 mov r6, r2
2ad6: 460d mov r5, r1
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2ad8: 4b0d ldr r3, [pc, #52] ; (2b10 <lv_event_send+0x44>)
2ada: 4798 blx r3
2adc: b968 cbnz r0, 2afa <lv_event_send+0x2e>
2ade: 4b0d ldr r3, [pc, #52] ; (2b14 <lv_event_send+0x48>)
2ae0: 9300 str r3, [sp, #0]
2ae2: f240 62c4 movw r2, #1732 ; 0x6c4
2ae6: 490c ldr r1, [pc, #48] ; (2b18 <lv_event_send+0x4c>)
2ae8: 2003 movs r0, #3
2aea: 4d0c ldr r5, [pc, #48] ; (2b1c <lv_event_send+0x50>)
2aec: 47a8 blx r5
2aee: 4622 mov r2, r4
2af0: 2300 movs r3, #0
2af2: 480b ldr r0, [pc, #44] ; (2b20 <lv_event_send+0x54>)
2af4: 490b ldr r1, [pc, #44] ; (2b24 <lv_event_send+0x58>)
2af6: 4788 blx r1
2af8: e7fe b.n 2af8 <lv_event_send+0x2c>
res = lv_event_send_func(obj->event_cb, obj, event, data);
2afa: 4633 mov r3, r6
2afc: 462a mov r2, r5
2afe: 4621 mov r1, r4
2b00: 69a0 ldr r0, [r4, #24]
2b02: 4c09 ldr r4, [pc, #36] ; (2b28 <lv_event_send+0x5c>)
2b04: 47a0 blx r4
}
2b06: b002 add sp, #8
2b08: bd70 pop {r4, r5, r6, pc}
if(obj == NULL) return LV_RES_OK;
2b0a: 2001 movs r0, #1
2b0c: 4770 bx lr
2b0e: bf00 nop
2b10: 000022b1 .word 0x000022b1
2b14: 000241b0 .word 0x000241b0
2b18: 000247dc .word 0x000247dc
2b1c: 0001225d .word 0x0001225d
2b20: 0002483c .word 0x0002483c
2b24: 000022b9 .word 0x000022b9
2b28: 000029f5 .word 0x000029f5
00002b2c <lv_obj_set_signal_cb>:
{
2b2c: b530 push {r4, r5, lr}
2b2e: b083 sub sp, #12
2b30: 4604 mov r4, r0
2b32: 460d mov r5, r1
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2b34: 4b09 ldr r3, [pc, #36] ; (2b5c <lv_obj_set_signal_cb+0x30>)
2b36: 4798 blx r3
2b38: b110 cbz r0, 2b40 <lv_obj_set_signal_cb+0x14>
obj->signal_cb = signal_cb;
2b3a: 61e5 str r5, [r4, #28]
}
2b3c: b003 add sp, #12
2b3e: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2b40: 4b07 ldr r3, [pc, #28] ; (2b60 <lv_obj_set_signal_cb+0x34>)
2b42: 9300 str r3, [sp, #0]
2b44: f240 721b movw r2, #1819 ; 0x71b
2b48: 4906 ldr r1, [pc, #24] ; (2b64 <lv_obj_set_signal_cb+0x38>)
2b4a: 2003 movs r0, #3
2b4c: 4d06 ldr r5, [pc, #24] ; (2b68 <lv_obj_set_signal_cb+0x3c>)
2b4e: 47a8 blx r5
2b50: 4622 mov r2, r4
2b52: 2300 movs r3, #0
2b54: 4805 ldr r0, [pc, #20] ; (2b6c <lv_obj_set_signal_cb+0x40>)
2b56: 4906 ldr r1, [pc, #24] ; (2b70 <lv_obj_set_signal_cb+0x44>)
2b58: 4788 blx r1
2b5a: e7fe b.n 2b5a <lv_obj_set_signal_cb+0x2e>
2b5c: 000022b1 .word 0x000022b1
2b60: 000241c0 .word 0x000241c0
2b64: 000247dc .word 0x000247dc
2b68: 0001225d .word 0x0001225d
2b6c: 0002483c .word 0x0002483c
2b70: 000022b9 .word 0x000022b9
00002b74 <lv_signal_send>:
if(obj == NULL) return LV_RES_OK;
2b74: b120 cbz r0, 2b80 <lv_signal_send+0xc>
{
2b76: b510 push {r4, lr}
if(obj->signal_cb) res = obj->signal_cb(obj, signal, param);
2b78: 69c4 ldr r4, [r0, #28]
2b7a: b11c cbz r4, 2b84 <lv_signal_send+0x10>
2b7c: 47a0 blx r4
2b7e: bd10 pop {r4, pc}
if(obj == NULL) return LV_RES_OK;
2b80: 2001 movs r0, #1
2b82: 4770 bx lr
lv_res_t res = LV_RES_OK;
2b84: 2001 movs r0, #1
}
2b86: bd10 pop {r4, pc}
00002b88 <lv_obj_set_design_cb>:
{
2b88: b530 push {r4, r5, lr}
2b8a: b083 sub sp, #12
2b8c: 4604 mov r4, r0
2b8e: 460d mov r5, r1
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2b90: 4b09 ldr r3, [pc, #36] ; (2bb8 <lv_obj_set_design_cb+0x30>)
2b92: 4798 blx r3
2b94: b110 cbz r0, 2b9c <lv_obj_set_design_cb+0x14>
obj->design_cb = design_cb;
2b96: 6225 str r5, [r4, #32]
}
2b98: b003 add sp, #12
2b9a: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2b9c: 4b07 ldr r3, [pc, #28] ; (2bbc <lv_obj_set_design_cb+0x34>)
2b9e: 9300 str r3, [sp, #0]
2ba0: f240 7237 movw r2, #1847 ; 0x737
2ba4: 4906 ldr r1, [pc, #24] ; (2bc0 <lv_obj_set_design_cb+0x38>)
2ba6: 2003 movs r0, #3
2ba8: 4d06 ldr r5, [pc, #24] ; (2bc4 <lv_obj_set_design_cb+0x3c>)
2baa: 47a8 blx r5
2bac: 4622 mov r2, r4
2bae: 2300 movs r3, #0
2bb0: 4805 ldr r0, [pc, #20] ; (2bc8 <lv_obj_set_design_cb+0x40>)
2bb2: 4906 ldr r1, [pc, #24] ; (2bcc <lv_obj_set_design_cb+0x44>)
2bb4: 4788 blx r1
2bb6: e7fe b.n 2bb6 <lv_obj_set_design_cb+0x2e>
2bb8: 000022b1 .word 0x000022b1
2bbc: 000241d8 .word 0x000241d8
2bc0: 000247dc .word 0x000247dc
2bc4: 0001225d .word 0x0001225d
2bc8: 0002483c .word 0x0002483c
2bcc: 000022b9 .word 0x000022b9
00002bd0 <lv_obj_allocate_ext_attr>:
{
2bd0: b530 push {r4, r5, lr}
2bd2: b083 sub sp, #12
2bd4: 4604 mov r4, r0
2bd6: 460d mov r5, r1
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2bd8: 4b0d ldr r3, [pc, #52] ; (2c10 <lv_obj_allocate_ext_attr+0x40>)
2bda: 4798 blx r3
2bdc: b968 cbnz r0, 2bfa <lv_obj_allocate_ext_attr+0x2a>
2bde: 4b0d ldr r3, [pc, #52] ; (2c14 <lv_obj_allocate_ext_attr+0x44>)
2be0: 9300 str r3, [sp, #0]
2be2: f240 7249 movw r2, #1865 ; 0x749
2be6: 490c ldr r1, [pc, #48] ; (2c18 <lv_obj_allocate_ext_attr+0x48>)
2be8: 2003 movs r0, #3
2bea: 4d0c ldr r5, [pc, #48] ; (2c1c <lv_obj_allocate_ext_attr+0x4c>)
2bec: 47a8 blx r5
2bee: 4622 mov r2, r4
2bf0: 2300 movs r3, #0
2bf2: 480b ldr r0, [pc, #44] ; (2c20 <lv_obj_allocate_ext_attr+0x50>)
2bf4: 490b ldr r1, [pc, #44] ; (2c24 <lv_obj_allocate_ext_attr+0x54>)
2bf6: 4788 blx r1
2bf8: e7fe b.n 2bf8 <lv_obj_allocate_ext_attr+0x28>
void * new_ext = lv_mem_realloc(obj->ext_attr, ext_size);
2bfa: 4629 mov r1, r5
2bfc: 6a60 ldr r0, [r4, #36] ; 0x24
2bfe: 4b0a ldr r3, [pc, #40] ; (2c28 <lv_obj_allocate_ext_attr+0x58>)
2c00: 4798 blx r3
if(new_ext == NULL) return NULL;
2c02: 4603 mov r3, r0
2c04: b100 cbz r0, 2c08 <lv_obj_allocate_ext_attr+0x38>
obj->ext_attr = new_ext;
2c06: 6260 str r0, [r4, #36] ; 0x24
}
2c08: 4618 mov r0, r3
2c0a: b003 add sp, #12
2c0c: bd30 pop {r4, r5, pc}
2c0e: bf00 nop
2c10: 000022b1 .word 0x000022b1
2c14: 000241f0 .word 0x000241f0
2c18: 000247dc .word 0x000247dc
2c1c: 0001225d .word 0x0001225d
2c20: 0002483c .word 0x0002483c
2c24: 000022b9 .word 0x000022b9
2c28: 00012899 .word 0x00012899
00002c2c <lv_obj_refresh_ext_draw_pad>:
{
2c2c: b530 push {r4, r5, lr}
2c2e: b083 sub sp, #12
2c30: 4604 mov r4, r0
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2c32: 4b0c ldr r3, [pc, #48] ; (2c64 <lv_obj_refresh_ext_draw_pad+0x38>)
2c34: 4798 blx r3
2c36: b968 cbnz r0, 2c54 <lv_obj_refresh_ext_draw_pad+0x28>
2c38: 4b0b ldr r3, [pc, #44] ; (2c68 <lv_obj_refresh_ext_draw_pad+0x3c>)
2c3a: 9300 str r3, [sp, #0]
2c3c: f240 7259 movw r2, #1881 ; 0x759
2c40: 490a ldr r1, [pc, #40] ; (2c6c <lv_obj_refresh_ext_draw_pad+0x40>)
2c42: 2003 movs r0, #3
2c44: 4d0a ldr r5, [pc, #40] ; (2c70 <lv_obj_refresh_ext_draw_pad+0x44>)
2c46: 47a8 blx r5
2c48: 4622 mov r2, r4
2c4a: 2300 movs r3, #0
2c4c: 4809 ldr r0, [pc, #36] ; (2c74 <lv_obj_refresh_ext_draw_pad+0x48>)
2c4e: 490a ldr r1, [pc, #40] ; (2c78 <lv_obj_refresh_ext_draw_pad+0x4c>)
2c50: 4788 blx r1
2c52: e7fe b.n 2c52 <lv_obj_refresh_ext_draw_pad+0x26>
obj->ext_draw_pad = 0;
2c54: 2200 movs r2, #0
2c56: 8662 strh r2, [r4, #50] ; 0x32
obj->signal_cb(obj, LV_SIGNAL_REFR_EXT_DRAW_PAD, NULL);
2c58: 69e3 ldr r3, [r4, #28]
2c5a: 2106 movs r1, #6
2c5c: 4620 mov r0, r4
2c5e: 4798 blx r3
}
2c60: b003 add sp, #12
2c62: bd30 pop {r4, r5, pc}
2c64: 000022b1 .word 0x000022b1
2c68: 0002420c .word 0x0002420c
2c6c: 000247dc .word 0x000247dc
2c70: 0001225d .word 0x0001225d
2c74: 0002483c .word 0x0002483c
2c78: 000022b9 .word 0x000022b9
00002c7c <lv_obj_get_parent>:
{
2c7c: b530 push {r4, r5, lr}
2c7e: b083 sub sp, #12
2c80: 4604 mov r4, r0
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2c82: 4b0a ldr r3, [pc, #40] ; (2cac <lv_obj_get_parent+0x30>)
2c84: 4798 blx r3
2c86: b110 cbz r0, 2c8e <lv_obj_get_parent+0x12>
}
2c88: 6820 ldr r0, [r4, #0]
2c8a: b003 add sp, #12
2c8c: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2c8e: 4b08 ldr r3, [pc, #32] ; (2cb0 <lv_obj_get_parent+0x34>)
2c90: 9300 str r3, [sp, #0]
2c92: f240 729f movw r2, #1951 ; 0x79f
2c96: 4907 ldr r1, [pc, #28] ; (2cb4 <lv_obj_get_parent+0x38>)
2c98: 2003 movs r0, #3
2c9a: 4d07 ldr r5, [pc, #28] ; (2cb8 <lv_obj_get_parent+0x3c>)
2c9c: 47a8 blx r5
2c9e: 4622 mov r2, r4
2ca0: 2300 movs r3, #0
2ca2: 4806 ldr r0, [pc, #24] ; (2cbc <lv_obj_get_parent+0x40>)
2ca4: 4906 ldr r1, [pc, #24] ; (2cc0 <lv_obj_get_parent+0x44>)
2ca6: 4788 blx r1
2ca8: e7fe b.n 2ca8 <lv_obj_get_parent+0x2c>
2caa: bf00 nop
2cac: 000022b1 .word 0x000022b1
2cb0: 00024228 .word 0x00024228
2cb4: 000247dc .word 0x000247dc
2cb8: 0001225d .word 0x0001225d
2cbc: 0002483c .word 0x0002483c
2cc0: 000022b9 .word 0x000022b9
00002cc4 <lv_obj_get_screen>:
{
2cc4: b530 push {r4, r5, lr}
2cc6: b083 sub sp, #12
2cc8: 4604 mov r4, r0
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2cca: 4b0e ldr r3, [pc, #56] ; (2d04 <lv_obj_get_screen+0x40>)
2ccc: 4798 blx r3
2cce: b108 cbz r0, 2cd4 <lv_obj_get_screen+0x10>
par = lv_obj_get_parent(act_p);
2cd0: 4d0d ldr r5, [pc, #52] ; (2d08 <lv_obj_get_screen+0x44>)
2cd2: e00e b.n 2cf2 <lv_obj_get_screen+0x2e>
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2cd4: 4b0d ldr r3, [pc, #52] ; (2d0c <lv_obj_get_screen+0x48>)
2cd6: 9300 str r3, [sp, #0]
2cd8: f240 726b movw r2, #1899 ; 0x76b
2cdc: 490c ldr r1, [pc, #48] ; (2d10 <lv_obj_get_screen+0x4c>)
2cde: 2003 movs r0, #3
2ce0: 4d0c ldr r5, [pc, #48] ; (2d14 <lv_obj_get_screen+0x50>)
2ce2: 47a8 blx r5
2ce4: 4622 mov r2, r4
2ce6: 2300 movs r3, #0
2ce8: 480b ldr r0, [pc, #44] ; (2d18 <lv_obj_get_screen+0x54>)
2cea: 490c ldr r1, [pc, #48] ; (2d1c <lv_obj_get_screen+0x58>)
2cec: 4788 blx r1
2cee: e7fe b.n 2cee <lv_obj_get_screen+0x2a>
par = lv_obj_get_parent(act_p);
2cf0: 461c mov r4, r3
2cf2: 4620 mov r0, r4
2cf4: 47a8 blx r5
} while(par != NULL);
2cf6: 4603 mov r3, r0
2cf8: 2800 cmp r0, #0
2cfa: d1f9 bne.n 2cf0 <lv_obj_get_screen+0x2c>
}
2cfc: 4620 mov r0, r4
2cfe: b003 add sp, #12
2d00: bd30 pop {r4, r5, pc}
2d02: bf00 nop
2d04: 000022b1 .word 0x000022b1
2d08: 00002c7d .word 0x00002c7d
2d0c: 0002423c .word 0x0002423c
2d10: 000247dc .word 0x000247dc
2d14: 0001225d .word 0x0001225d
2d18: 0002483c .word 0x0002483c
2d1c: 000022b9 .word 0x000022b9
00002d20 <lv_obj_get_disp>:
{
2d20: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
2d24: b083 sub sp, #12
2d26: 4604 mov r4, r0
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2d28: 4b22 ldr r3, [pc, #136] ; (2db4 <lv_obj_get_disp+0x94>)
2d2a: 4798 blx r3
2d2c: b180 cbz r0, 2d50 <lv_obj_get_disp+0x30>
if(obj->parent == NULL)
2d2e: 6823 ldr r3, [r4, #0]
2d30: b11b cbz r3, 2d3a <lv_obj_get_disp+0x1a>
scr = lv_obj_get_screen(obj); /*get the screen of `obj`*/
2d32: 4620 mov r0, r4
2d34: 4b20 ldr r3, [pc, #128] ; (2db8 <lv_obj_get_disp+0x98>)
2d36: 4798 blx r3
2d38: 4604 mov r4, r0
_LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) {
2d3a: 4820 ldr r0, [pc, #128] ; (2dbc <lv_obj_get_disp+0x9c>)
2d3c: 4b20 ldr r3, [pc, #128] ; (2dc0 <lv_obj_get_disp+0xa0>)
2d3e: 4798 blx r3
2d40: 4605 mov r5, r0
2d42: b360 cbz r0, 2d9e <lv_obj_get_disp+0x7e>
_LV_LL_READ(d->scr_ll, s) {
2d44: f8df 9078 ldr.w r9, [pc, #120] ; 2dc0 <lv_obj_get_disp+0xa0>
2d48: 4e1e ldr r6, [pc, #120] ; (2dc4 <lv_obj_get_disp+0xa4>)
_LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) {
2d4a: f8df 8070 ldr.w r8, [pc, #112] ; 2dbc <lv_obj_get_disp+0x9c>
2d4e: e012 b.n 2d76 <lv_obj_get_disp+0x56>
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2d50: 4b1d ldr r3, [pc, #116] ; (2dc8 <lv_obj_get_disp+0xa8>)
2d52: 9300 str r3, [sp, #0]
2d54: f240 727f movw r2, #1919 ; 0x77f
2d58: 491c ldr r1, [pc, #112] ; (2dcc <lv_obj_get_disp+0xac>)
2d5a: 2003 movs r0, #3
2d5c: 4d1c ldr r5, [pc, #112] ; (2dd0 <lv_obj_get_disp+0xb0>)
2d5e: 47a8 blx r5
2d60: 4622 mov r2, r4
2d62: 2300 movs r3, #0
2d64: 481b ldr r0, [pc, #108] ; (2dd4 <lv_obj_get_disp+0xb4>)
2d66: 491c ldr r1, [pc, #112] ; (2dd8 <lv_obj_get_disp+0xb8>)
2d68: 4788 blx r1
2d6a: e7fe b.n 2d6a <lv_obj_get_disp+0x4a>
_LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) {
2d6c: 4629 mov r1, r5
2d6e: 4640 mov r0, r8
2d70: 47b0 blx r6
2d72: 4605 mov r5, r0
2d74: b198 cbz r0, 2d9e <lv_obj_get_disp+0x7e>
_LV_LL_READ(d->scr_ll, s) {
2d76: f105 0730 add.w r7, r5, #48 ; 0x30
2d7a: 4638 mov r0, r7
2d7c: 47c8 blx r9
2d7e: 4601 mov r1, r0
2d80: 2800 cmp r0, #0
2d82: d0f3 beq.n 2d6c <lv_obj_get_disp+0x4c>
if(s == scr) return d;
2d84: 4284 cmp r4, r0
2d86: d006 beq.n 2d96 <lv_obj_get_disp+0x76>
_LV_LL_READ(d->scr_ll, s) {
2d88: 4638 mov r0, r7
2d8a: 47b0 blx r6
2d8c: 4601 mov r1, r0
2d8e: 2800 cmp r0, #0
2d90: d0ec beq.n 2d6c <lv_obj_get_disp+0x4c>
if(s == scr) return d;
2d92: 428c cmp r4, r1
2d94: d1f8 bne.n 2d88 <lv_obj_get_disp+0x68>
}
2d96: 4628 mov r0, r5
2d98: b003 add sp, #12
2d9a: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
LV_LOG_WARN("lv_scr_get_disp: screen not found")
2d9e: 4b0f ldr r3, [pc, #60] ; (2ddc <lv_obj_get_disp+0xbc>)
2da0: 9300 str r3, [sp, #0]
2da2: 4b09 ldr r3, [pc, #36] ; (2dc8 <lv_obj_get_disp+0xa8>)
2da4: f44f 62f2 mov.w r2, #1936 ; 0x790
2da8: 4908 ldr r1, [pc, #32] ; (2dcc <lv_obj_get_disp+0xac>)
2daa: 2002 movs r0, #2
2dac: 4c08 ldr r4, [pc, #32] ; (2dd0 <lv_obj_get_disp+0xb0>)
2dae: 47a0 blx r4
return NULL;
2db0: 2500 movs r5, #0
2db2: e7f0 b.n 2d96 <lv_obj_get_disp+0x76>
2db4: 000022b1 .word 0x000022b1
2db8: 00002cc5 .word 0x00002cc5
2dbc: 20006c98 .word 0x20006c98
2dc0: 00011fa9 .word 0x00011fa9
2dc4: 00011fbd .word 0x00011fbd
2dc8: 00024250 .word 0x00024250
2dcc: 000247dc .word 0x000247dc
2dd0: 0001225d .word 0x0001225d
2dd4: 0002483c .word 0x0002483c
2dd8: 000022b9 .word 0x000022b9
2ddc: 0002484c .word 0x0002484c
00002de0 <lv_obj_get_child>:
{
2de0: b530 push {r4, r5, lr}
2de2: b083 sub sp, #12
2de4: 4604 mov r4, r0
2de6: 460d mov r5, r1
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2de8: 4b0d ldr r3, [pc, #52] ; (2e20 <lv_obj_get_child+0x40>)
2dea: 4798 blx r3
2dec: b130 cbz r0, 2dfc <lv_obj_get_child+0x1c>
if(child == NULL) {
2dee: b19d cbz r5, 2e18 <lv_obj_get_child+0x38>
result = _lv_ll_get_next(&obj->child_ll, child);
2df0: 4629 mov r1, r5
2df2: 1d20 adds r0, r4, #4
2df4: 4b0b ldr r3, [pc, #44] ; (2e24 <lv_obj_get_child+0x44>)
2df6: 4798 blx r3
}
2df8: b003 add sp, #12
2dfa: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2dfc: 4b0a ldr r3, [pc, #40] ; (2e28 <lv_obj_get_child+0x48>)
2dfe: 9300 str r3, [sp, #0]
2e00: f240 72ad movw r2, #1965 ; 0x7ad
2e04: 4909 ldr r1, [pc, #36] ; (2e2c <lv_obj_get_child+0x4c>)
2e06: 2003 movs r0, #3
2e08: 4d09 ldr r5, [pc, #36] ; (2e30 <lv_obj_get_child+0x50>)
2e0a: 47a8 blx r5
2e0c: 4622 mov r2, r4
2e0e: 2300 movs r3, #0
2e10: 4808 ldr r0, [pc, #32] ; (2e34 <lv_obj_get_child+0x54>)
2e12: 4909 ldr r1, [pc, #36] ; (2e38 <lv_obj_get_child+0x58>)
2e14: 4788 blx r1
2e16: e7fe b.n 2e16 <lv_obj_get_child+0x36>
result = _lv_ll_get_head(&obj->child_ll);
2e18: 1d20 adds r0, r4, #4
2e1a: 4b08 ldr r3, [pc, #32] ; (2e3c <lv_obj_get_child+0x5c>)
2e1c: 4798 blx r3
2e1e: e7eb b.n 2df8 <lv_obj_get_child+0x18>
2e20: 000022b1 .word 0x000022b1
2e24: 00011fbd .word 0x00011fbd
2e28: 00024260 .word 0x00024260
2e2c: 000247dc .word 0x000247dc
2e30: 0001225d .word 0x0001225d
2e34: 0002483c .word 0x0002483c
2e38: 000022b9 .word 0x000022b9
2e3c: 00011fa9 .word 0x00011fa9
00002e40 <lv_obj_get_coords>:
{
2e40: b530 push {r4, r5, lr}
2e42: b083 sub sp, #12
2e44: 4605 mov r5, r0
2e46: 460c mov r4, r1
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2e48: 4b0e ldr r3, [pc, #56] ; (2e84 <lv_obj_get_coords+0x44>)
2e4a: 4798 blx r3
2e4c: b160 cbz r0, 2e68 <lv_obj_get_coords+0x28>
2e4e: f105 020f add.w r2, r5, #15
2e52: f104 0008 add.w r0, r4, #8
* @param src pointer to the source buffer
* @param len number of byte to 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;
2e56: 4623 mov r3, r4
const uint8_t * s8 = (const uint8_t *)src;
while(len) {
*d8 = *s8;
2e58: f812 1f01 ldrb.w r1, [r2, #1]!
2e5c: f803 1b01 strb.w r1, [r3], #1
while(len) {
2e60: 4283 cmp r3, r0
2e62: d1f9 bne.n 2e58 <lv_obj_get_coords+0x18>
}
2e64: b003 add sp, #12
2e66: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2e68: 4b07 ldr r3, [pc, #28] ; (2e88 <lv_obj_get_coords+0x48>)
2e6a: 9300 str r3, [sp, #0]
2e6c: f640 0201 movw r2, #2049 ; 0x801
2e70: 4906 ldr r1, [pc, #24] ; (2e8c <lv_obj_get_coords+0x4c>)
2e72: 2003 movs r0, #3
2e74: 4c06 ldr r4, [pc, #24] ; (2e90 <lv_obj_get_coords+0x50>)
2e76: 47a0 blx r4
2e78: 462a mov r2, r5
2e7a: 2300 movs r3, #0
2e7c: 4805 ldr r0, [pc, #20] ; (2e94 <lv_obj_get_coords+0x54>)
2e7e: 4906 ldr r1, [pc, #24] ; (2e98 <lv_obj_get_coords+0x58>)
2e80: 4788 blx r1
2e82: e7fe b.n 2e82 <lv_obj_get_coords+0x42>
2e84: 000022b1 .word 0x000022b1
2e88: 000242d8 .word 0x000242d8
2e8c: 000247dc .word 0x000247dc
2e90: 0001225d .word 0x0001225d
2e94: 0002483c .word 0x0002483c
2e98: 000022b9 .word 0x000022b9
00002e9c <lv_obj_get_x>:
{
2e9c: b530 push {r4, r5, lr}
2e9e: b083 sub sp, #12
2ea0: 4604 mov r4, r0
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2ea2: 4b0f ldr r3, [pc, #60] ; (2ee0 <lv_obj_get_x+0x44>)
2ea4: 4798 blx r3
2ea6: b968 cbnz r0, 2ec4 <lv_obj_get_x+0x28>
2ea8: 4b0e ldr r3, [pc, #56] ; (2ee4 <lv_obj_get_x+0x48>)
2eaa: 9300 str r3, [sp, #0]
2eac: f640 0222 movw r2, #2082 ; 0x822
2eb0: 490d ldr r1, [pc, #52] ; (2ee8 <lv_obj_get_x+0x4c>)
2eb2: 2003 movs r0, #3
2eb4: 4d0d ldr r5, [pc, #52] ; (2eec <lv_obj_get_x+0x50>)
2eb6: 47a8 blx r5
2eb8: 4622 mov r2, r4
2eba: 2300 movs r3, #0
2ebc: 480c ldr r0, [pc, #48] ; (2ef0 <lv_obj_get_x+0x54>)
2ebe: 490d ldr r1, [pc, #52] ; (2ef4 <lv_obj_get_x+0x58>)
2ec0: 4788 blx r1
2ec2: e7fe b.n 2ec2 <lv_obj_get_x+0x26>
lv_obj_t * parent = lv_obj_get_parent(obj);
2ec4: 4620 mov r0, r4
2ec6: 4b0c ldr r3, [pc, #48] ; (2ef8 <lv_obj_get_x+0x5c>)
2ec8: 4798 blx r3
if(parent) {
2eca: 4603 mov r3, r0
2ecc: b128 cbz r0, 2eda <lv_obj_get_x+0x3e>
rel_x = obj->coords.x1 - parent->coords.x1;
2ece: 8a20 ldrh r0, [r4, #16]
2ed0: 8a1b ldrh r3, [r3, #16]
2ed2: 1ac0 subs r0, r0, r3
2ed4: b200 sxth r0, r0
}
2ed6: b003 add sp, #12
2ed8: bd30 pop {r4, r5, pc}
rel_x = obj->coords.x1;
2eda: f9b4 0010 ldrsh.w r0, [r4, #16]
2ede: e7fa b.n 2ed6 <lv_obj_get_x+0x3a>
2ee0: 000022b1 .word 0x000022b1
2ee4: 000242ec .word 0x000242ec
2ee8: 000247dc .word 0x000247dc
2eec: 0001225d .word 0x0001225d
2ef0: 0002483c .word 0x0002483c
2ef4: 000022b9 .word 0x000022b9
2ef8: 00002c7d .word 0x00002c7d
00002efc <lv_obj_get_y>:
{
2efc: b530 push {r4, r5, lr}
2efe: b083 sub sp, #12
2f00: 4604 mov r4, r0
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2f02: 4b0f ldr r3, [pc, #60] ; (2f40 <lv_obj_get_y+0x44>)
2f04: 4798 blx r3
2f06: b968 cbnz r0, 2f24 <lv_obj_get_y+0x28>
2f08: 4b0e ldr r3, [pc, #56] ; (2f44 <lv_obj_get_y+0x48>)
2f0a: 9300 str r3, [sp, #0]
2f0c: f640 0236 movw r2, #2102 ; 0x836
2f10: 490d ldr r1, [pc, #52] ; (2f48 <lv_obj_get_y+0x4c>)
2f12: 2003 movs r0, #3
2f14: 4d0d ldr r5, [pc, #52] ; (2f4c <lv_obj_get_y+0x50>)
2f16: 47a8 blx r5
2f18: 4622 mov r2, r4
2f1a: 2300 movs r3, #0
2f1c: 480c ldr r0, [pc, #48] ; (2f50 <lv_obj_get_y+0x54>)
2f1e: 490d ldr r1, [pc, #52] ; (2f54 <lv_obj_get_y+0x58>)
2f20: 4788 blx r1
2f22: e7fe b.n 2f22 <lv_obj_get_y+0x26>
lv_obj_t * parent = lv_obj_get_parent(obj);
2f24: 4620 mov r0, r4
2f26: 4b0c ldr r3, [pc, #48] ; (2f58 <lv_obj_get_y+0x5c>)
2f28: 4798 blx r3
if(parent) {
2f2a: 4603 mov r3, r0
2f2c: b128 cbz r0, 2f3a <lv_obj_get_y+0x3e>
rel_y = obj->coords.y1 - parent->coords.y1;
2f2e: 8a60 ldrh r0, [r4, #18]
2f30: 8a5b ldrh r3, [r3, #18]
2f32: 1ac0 subs r0, r0, r3
2f34: b200 sxth r0, r0
}
2f36: b003 add sp, #12
2f38: bd30 pop {r4, r5, pc}
rel_y = obj->coords.y1;
2f3a: f9b4 0012 ldrsh.w r0, [r4, #18]
2f3e: e7fa b.n 2f36 <lv_obj_get_y+0x3a>
2f40: 000022b1 .word 0x000022b1
2f44: 000242fc .word 0x000242fc
2f48: 000247dc .word 0x000247dc
2f4c: 0001225d .word 0x0001225d
2f50: 0002483c .word 0x0002483c
2f54: 000022b9 .word 0x000022b9
2f58: 00002c7d .word 0x00002c7d
00002f5c <lv_obj_get_width>:
{
2f5c: b530 push {r4, r5, lr}
2f5e: b083 sub sp, #12
2f60: 4604 mov r4, r0
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2f62: 4b0c ldr r3, [pc, #48] ; (2f94 <lv_obj_get_width+0x38>)
2f64: 4798 blx r3
2f66: b130 cbz r0, 2f76 <lv_obj_get_width+0x1a>
* @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);
2f68: 8aa0 ldrh r0, [r4, #20]
2f6a: 3001 adds r0, #1
2f6c: 8a23 ldrh r3, [r4, #16]
2f6e: 1ac0 subs r0, r0, r3
}
2f70: b200 sxth r0, r0
2f72: b003 add sp, #12
2f74: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2f76: 4b08 ldr r3, [pc, #32] ; (2f98 <lv_obj_get_width+0x3c>)
2f78: 9300 str r3, [sp, #0]
2f7a: f640 024a movw r2, #2122 ; 0x84a
2f7e: 4907 ldr r1, [pc, #28] ; (2f9c <lv_obj_get_width+0x40>)
2f80: 2003 movs r0, #3
2f82: 4d07 ldr r5, [pc, #28] ; (2fa0 <lv_obj_get_width+0x44>)
2f84: 47a8 blx r5
2f86: 4622 mov r2, r4
2f88: 2300 movs r3, #0
2f8a: 4806 ldr r0, [pc, #24] ; (2fa4 <lv_obj_get_width+0x48>)
2f8c: 4906 ldr r1, [pc, #24] ; (2fa8 <lv_obj_get_width+0x4c>)
2f8e: 4788 blx r1
2f90: e7fe b.n 2f90 <lv_obj_get_width+0x34>
2f92: bf00 nop
2f94: 000022b1 .word 0x000022b1
2f98: 0002430c .word 0x0002430c
2f9c: 000247dc .word 0x000247dc
2fa0: 0001225d .word 0x0001225d
2fa4: 0002483c .word 0x0002483c
2fa8: 000022b9 .word 0x000022b9
00002fac <lv_obj_get_height>:
{
2fac: b530 push {r4, r5, lr}
2fae: b083 sub sp, #12
2fb0: 4604 mov r4, r0
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2fb2: 4b0c ldr r3, [pc, #48] ; (2fe4 <lv_obj_get_height+0x38>)
2fb4: 4798 blx r3
2fb6: b130 cbz r0, 2fc6 <lv_obj_get_height+0x1a>
* @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);
2fb8: 8ae0 ldrh r0, [r4, #22]
2fba: 3001 adds r0, #1
2fbc: 8a63 ldrh r3, [r4, #18]
2fbe: 1ac0 subs r0, r0, r3
}
2fc0: b200 sxth r0, r0
2fc2: b003 add sp, #12
2fc4: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2fc6: 4b08 ldr r3, [pc, #32] ; (2fe8 <lv_obj_get_height+0x3c>)
2fc8: 9300 str r3, [sp, #0]
2fca: f640 0256 movw r2, #2134 ; 0x856
2fce: 4907 ldr r1, [pc, #28] ; (2fec <lv_obj_get_height+0x40>)
2fd0: 2003 movs r0, #3
2fd2: 4d07 ldr r5, [pc, #28] ; (2ff0 <lv_obj_get_height+0x44>)
2fd4: 47a8 blx r5
2fd6: 4622 mov r2, r4
2fd8: 2300 movs r3, #0
2fda: 4806 ldr r0, [pc, #24] ; (2ff4 <lv_obj_get_height+0x48>)
2fdc: 4906 ldr r1, [pc, #24] ; (2ff8 <lv_obj_get_height+0x4c>)
2fde: 4788 blx r1
2fe0: e7fe b.n 2fe0 <lv_obj_get_height+0x34>
2fe2: bf00 nop
2fe4: 000022b1 .word 0x000022b1
2fe8: 00024320 .word 0x00024320
2fec: 000247dc .word 0x000247dc
2ff0: 0001225d .word 0x0001225d
2ff4: 0002483c .word 0x0002483c
2ff8: 000022b9 .word 0x000022b9
00002ffc <lv_obj_get_style_list>:
if(part == LV_OBJ_PART_MAIN) return &((lv_obj_t *)obj)->style_list;
2ffc: b909 cbnz r1, 3002 <lv_obj_get_style_list+0x6>
2ffe: 3028 adds r0, #40 ; 0x28
3000: 4770 bx lr
{
3002: b500 push {lr}
3004: b083 sub sp, #12
info.part = part;
3006: f88d 1000 strb.w r1, [sp]
info.result = NULL;
300a: 2300 movs r3, #0
300c: 9301 str r3, [sp, #4]
res = lv_signal_send((lv_obj_t *)obj, LV_SIGNAL_GET_STYLE, &info);
300e: 466a mov r2, sp
3010: 2108 movs r1, #8
3012: 4b04 ldr r3, [pc, #16] ; (3024 <lv_obj_get_style_list+0x28>)
3014: 4798 blx r3
if(res != LV_RES_OK) return NULL;
3016: 2801 cmp r0, #1
return info.result;
3018: bf0c ite eq
301a: 9801 ldreq r0, [sp, #4]
if(res != LV_RES_OK) return NULL;
301c: 2000 movne r0, #0
}
301e: b003 add sp, #12
3020: f85d fb04 ldr.w pc, [sp], #4
3024: 00002b75 .word 0x00002b75
00003028 <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)
{
3028: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
302c: 4680 mov r8, r0
302e: 468a mov sl, r1
3030: 4693 mov fp, r2
3032: 461e mov r6, 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));
3034: 481c ldr r0, [pc, #112] ; (30a8 <trans_del+0x80>)
3036: 4b1d ldr r3, [pc, #116] ; (30ac <trans_del+0x84>)
3038: 4798 blx r3
while(tr != NULL) {
303a: 2800 cmp r0, #0
303c: d031 beq.n 30a2 <trans_del+0x7a>
303e: 4605 mov r5, r0
if(tr == tr_limit) break;
3040: 42b0 cmp r0, r6
3042: d02e beq.n 30a2 <trans_del+0x7a>
/*'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);
3044: f8df 9060 ldr.w r9, [pc, #96] ; 30a8 <trans_del+0x80>
3048: 4f19 ldr r7, [pc, #100] ; (30b0 <trans_del+0x88>)
304a: e009 b.n 3060 <trans_del+0x38>
if(tr->obj == obj && (part == tr->part || part == 0xFF) && (prop == tr->prop || prop == 0xFF)) {
304c: 88ab ldrh r3, [r5, #4]
304e: 455b cmp r3, fp
3050: d014 beq.n 307c <trans_del+0x54>
3052: f1bb 0fff cmp.w fp, #255 ; 0xff
3056: d011 beq.n 307c <trans_del+0x54>
while(tr != NULL) {
3058: b31c cbz r4, 30a2 <trans_del+0x7a>
305a: 4625 mov r5, r4
if(tr == tr_limit) break;
305c: 42a6 cmp r6, r4
305e: d020 beq.n 30a2 <trans_del+0x7a>
tr_prev = _lv_ll_get_prev(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr);
3060: 4629 mov r1, r5
3062: 4648 mov r0, r9
3064: 47b8 blx r7
3066: 4604 mov r4, r0
if(tr->obj == obj && (part == tr->part || part == 0xFF) && (prop == tr->prop || prop == 0xFF)) {
3068: 6828 ldr r0, [r5, #0]
306a: 4540 cmp r0, r8
306c: d1f4 bne.n 3058 <trans_del+0x30>
306e: 79a9 ldrb r1, [r5, #6]
3070: 4551 cmp r1, sl
3072: d0eb beq.n 304c <trans_del+0x24>
3074: f1ba 0fff cmp.w sl, #255 ; 0xff
3078: d1ee bne.n 3058 <trans_del+0x30>
307a: e7e7 b.n 304c <trans_del+0x24>
/* 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);
307c: 4b0d ldr r3, [pc, #52] ; (30b4 <trans_del+0x8c>)
307e: 4798 blx r3
lv_style_t * style_trans = _lv_style_list_get_transition_style(list);
3080: 4b0d ldr r3, [pc, #52] ; (30b8 <trans_del+0x90>)
3082: 4798 blx r3
lv_style_remove_prop(style_trans, tr->prop);
3084: 88a9 ldrh r1, [r5, #4]
3086: 4b0d ldr r3, [pc, #52] ; (30bc <trans_del+0x94>)
3088: 4798 blx r3
lv_anim_del(tr, NULL);
308a: 2100 movs r1, #0
308c: 4628 mov r0, r5
308e: 4b0c ldr r3, [pc, #48] ; (30c0 <trans_del+0x98>)
3090: 4798 blx r3
_lv_ll_remove(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr);
3092: 4629 mov r1, r5
3094: 4648 mov r0, r9
3096: 4b0b ldr r3, [pc, #44] ; (30c4 <trans_del+0x9c>)
3098: 4798 blx r3
lv_mem_free(tr);
309a: 4628 mov r0, r5
309c: 4b0a ldr r3, [pc, #40] ; (30c8 <trans_del+0xa0>)
309e: 4798 blx r3
30a0: e7da b.n 3058 <trans_del+0x30>
30a2: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
30a6: bf00 nop
30a8: 20006d3c .word 0x20006d3c
30ac: 00011fb3 .word 0x00011fb3
30b0: 00011fe9 .word 0x00011fe9
30b4: 00002ffd .word 0x00002ffd
30b8: 000070e7 .word 0x000070e7
30bc: 000067ed .word 0x000067ed
30c0: 00011329 .word 0x00011329
30c4: 00012095 .word 0x00012095
30c8: 000124c5 .word 0x000124c5
000030cc <lv_obj_clean_style_list>:
{
30cc: b530 push {r4, r5, lr}
30ce: b083 sub sp, #12
30d0: 4604 mov r4, r0
30d2: 460d mov r5, r1
lv_style_list_t * style_dsc = lv_obj_get_style_list(obj, part);
30d4: 4b0b ldr r3, [pc, #44] ; (3104 <lv_obj_clean_style_list+0x38>)
30d6: 4798 blx r3
if(style_dsc == NULL) {
30d8: b148 cbz r0, 30ee <lv_obj_clean_style_list+0x22>
_lv_style_list_reset(style_dsc);
30da: 4b0b ldr r3, [pc, #44] ; (3108 <lv_obj_clean_style_list+0x3c>)
30dc: 4798 blx r3
trans_del(obj, part, 0xFF, NULL);
30de: 2300 movs r3, #0
30e0: 22ff movs r2, #255 ; 0xff
30e2: 4629 mov r1, r5
30e4: 4620 mov r0, r4
30e6: 4c09 ldr r4, [pc, #36] ; (310c <lv_obj_clean_style_list+0x40>)
30e8: 47a0 blx r4
}
30ea: b003 add sp, #12
30ec: bd30 pop {r4, r5, pc}
LV_LOG_WARN("lv_obj_clean_style_list: can't find style with `part`");
30ee: 4b08 ldr r3, [pc, #32] ; (3110 <lv_obj_clean_style_list+0x44>)
30f0: 9300 str r3, [sp, #0]
30f2: 4b08 ldr r3, [pc, #32] ; (3114 <lv_obj_clean_style_list+0x48>)
30f4: f240 4292 movw r2, #1170 ; 0x492
30f8: 4907 ldr r1, [pc, #28] ; (3118 <lv_obj_clean_style_list+0x4c>)
30fa: 2002 movs r0, #2
30fc: 4c07 ldr r4, [pc, #28] ; (311c <lv_obj_clean_style_list+0x50>)
30fe: 47a0 blx r4
return;
3100: e7f3 b.n 30ea <lv_obj_clean_style_list+0x1e>
3102: bf00 nop
3104: 00002ffd .word 0x00002ffd
3108: 000070f9 .word 0x000070f9
310c: 00003029 .word 0x00003029
3110: 00024898 .word 0x00024898
3114: 000243e4 .word 0x000243e4
3118: 000247dc .word 0x000247dc
311c: 0001225d .word 0x0001225d
00003120 <trans_anim_ready_cb>:
tr->prop = prop_tmp;
}
static void trans_anim_ready_cb(lv_anim_t * a)
{
3120: b5f8 push {r3, r4, r5, r6, r7, lr}
lv_style_trans_t * tr = a->var;
3122: 6804 ldr r4, [r0, #0]
* 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) {
3124: 4817 ldr r0, [pc, #92] ; (3184 <trans_anim_ready_cb+0x64>)
3126: 4b18 ldr r3, [pc, #96] ; (3188 <trans_anim_ready_cb+0x68>)
3128: 4798 blx r3
312a: b308 cbz r0, 3170 <trans_anim_ready_cb+0x50>
312c: 4601 mov r1, r0
312e: 2700 movs r7, #0
3130: 4e14 ldr r6, [pc, #80] ; (3184 <trans_anim_ready_cb+0x64>)
3132: 4d16 ldr r5, [pc, #88] ; (318c <trans_anim_ready_cb+0x6c>)
3134: e003 b.n 313e <trans_anim_ready_cb+0x1e>
3136: 4630 mov r0, r6
3138: 47a8 blx r5
313a: 4601 mov r1, r0
313c: b178 cbz r0, 315e <trans_anim_ready_cb+0x3e>
if(tr_i != tr && tr_i->obj == tr->obj && tr_i->part == tr->part && tr_i->prop == tr->prop) {
313e: 428c cmp r4, r1
3140: d0f9 beq.n 3136 <trans_anim_ready_cb+0x16>
3142: 680a ldr r2, [r1, #0]
3144: 6823 ldr r3, [r4, #0]
3146: 429a cmp r2, r3
3148: d1f5 bne.n 3136 <trans_anim_ready_cb+0x16>
314a: 684b ldr r3, [r1, #4]
314c: f023 427f bic.w r2, r3, #4278190080 ; 0xff000000
3150: 6863 ldr r3, [r4, #4]
3152: f023 437f bic.w r3, r3, #4278190080 ; 0xff000000
running = true;
3156: 429a cmp r2, r3
3158: bf08 it eq
315a: 2701 moveq r7, #1
315c: e7eb b.n 3136 <trans_anim_ready_cb+0x16>
}
}
if(!running) {
315e: b13f cbz r7, 3170 <trans_anim_ready_cb+0x50>
lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part);
lv_style_t * style_trans = _lv_style_list_get_transition_style(list);
lv_style_remove_prop(style_trans, tr->prop);
}
_lv_ll_remove(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr);
3160: 4621 mov r1, r4
3162: 4808 ldr r0, [pc, #32] ; (3184 <trans_anim_ready_cb+0x64>)
3164: 4b0a ldr r3, [pc, #40] ; (3190 <trans_anim_ready_cb+0x70>)
3166: 4798 blx r3
lv_mem_free(tr);
3168: 4620 mov r0, r4
316a: 4b0a ldr r3, [pc, #40] ; (3194 <trans_anim_ready_cb+0x74>)
316c: 4798 blx r3
316e: bdf8 pop {r3, r4, r5, r6, r7, pc}
lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part);
3170: 79a1 ldrb r1, [r4, #6]
3172: 6820 ldr r0, [r4, #0]
3174: 4b08 ldr r3, [pc, #32] ; (3198 <trans_anim_ready_cb+0x78>)
3176: 4798 blx r3
lv_style_t * style_trans = _lv_style_list_get_transition_style(list);
3178: 4b08 ldr r3, [pc, #32] ; (319c <trans_anim_ready_cb+0x7c>)
317a: 4798 blx r3
lv_style_remove_prop(style_trans, tr->prop);
317c: 88a1 ldrh r1, [r4, #4]
317e: 4b08 ldr r3, [pc, #32] ; (31a0 <trans_anim_ready_cb+0x80>)
3180: 4798 blx r3
3182: e7ed b.n 3160 <trans_anim_ready_cb+0x40>
3184: 20006d3c .word 0x20006d3c
3188: 00011fa9 .word 0x00011fa9
318c: 00011fbd .word 0x00011fbd
3190: 00012095 .word 0x00012095
3194: 000124c5 .word 0x000124c5
3198: 00002ffd .word 0x00002ffd
319c: 000070e7 .word 0x000070e7
31a0: 000067ed .word 0x000067ed
000031a4 <lv_obj_get_hidden>:
{
31a4: b530 push {r4, r5, lr}
31a6: b083 sub sp, #12
31a8: 4604 mov r4, r0
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
31aa: 4b0b ldr r3, [pc, #44] ; (31d8 <lv_obj_get_hidden+0x34>)
31ac: 4798 blx r3
31ae: b128 cbz r0, 31bc <lv_obj_get_hidden+0x18>
return obj->hidden == 0 ? false : true;
31b0: f894 0034 ldrb.w r0, [r4, #52] ; 0x34
}
31b4: f3c0 1000 ubfx r0, r0, #4, #1
31b8: b003 add sp, #12
31ba: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
31bc: 4b07 ldr r3, [pc, #28] ; (31dc <lv_obj_get_hidden+0x38>)
31be: 9300 str r3, [sp, #0]
31c0: f640 2241 movw r2, #2625 ; 0xa41
31c4: 4906 ldr r1, [pc, #24] ; (31e0 <lv_obj_get_hidden+0x3c>)
31c6: 2003 movs r0, #3
31c8: 4d06 ldr r5, [pc, #24] ; (31e4 <lv_obj_get_hidden+0x40>)
31ca: 47a8 blx r5
31cc: 4622 mov r2, r4
31ce: 2300 movs r3, #0
31d0: 4805 ldr r0, [pc, #20] ; (31e8 <lv_obj_get_hidden+0x44>)
31d2: 4906 ldr r1, [pc, #24] ; (31ec <lv_obj_get_hidden+0x48>)
31d4: 4788 blx r1
31d6: e7fe b.n 31d6 <lv_obj_get_hidden+0x32>
31d8: 000022b1 .word 0x000022b1
31dc: 00024434 .word 0x00024434
31e0: 000247dc .word 0x000247dc
31e4: 0001225d .word 0x0001225d
31e8: 0002483c .word 0x0002483c
31ec: 000022b9 .word 0x000022b9
000031f0 <lv_obj_invalidate_area>:
{
31f0: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
31f4: b086 sub sp, #24
31f6: 4604 mov r4, r0
31f8: 460e mov r6, r1
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
31fa: 4b3a ldr r3, [pc, #232] ; (32e4 <lv_obj_invalidate_area+0xf4>)
31fc: 4798 blx r3
31fe: b968 cbnz r0, 321c <lv_obj_invalidate_area+0x2c>
3200: 4b39 ldr r3, [pc, #228] ; (32e8 <lv_obj_invalidate_area+0xf8>)
3202: 9300 str r3, [sp, #0]
3204: f44f 72f0 mov.w r2, #480 ; 0x1e0
3208: 4938 ldr r1, [pc, #224] ; (32ec <lv_obj_invalidate_area+0xfc>)
320a: 2003 movs r0, #3
320c: 4d38 ldr r5, [pc, #224] ; (32f0 <lv_obj_invalidate_area+0x100>)
320e: 47a8 blx r5
3210: 4622 mov r2, r4
3212: 2300 movs r3, #0
3214: 4837 ldr r0, [pc, #220] ; (32f4 <lv_obj_invalidate_area+0x104>)
3216: 4938 ldr r1, [pc, #224] ; (32f8 <lv_obj_invalidate_area+0x108>)
3218: 4788 blx r1
321a: e7fe b.n 321a <lv_obj_invalidate_area+0x2a>
if(lv_obj_get_hidden(obj)) return;
321c: 4620 mov r0, r4
321e: 4b37 ldr r3, [pc, #220] ; (32fc <lv_obj_invalidate_area+0x10c>)
3220: 4798 blx r3
3222: b110 cbz r0, 322a <lv_obj_invalidate_area+0x3a>
}
3224: b006 add sp, #24
3226: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
lv_obj_t * obj_scr = lv_obj_get_screen(obj);
322a: 4620 mov r0, r4
322c: 4b34 ldr r3, [pc, #208] ; (3300 <lv_obj_invalidate_area+0x110>)
322e: 4798 blx r3
3230: 4607 mov r7, r0
lv_disp_t * disp = lv_obj_get_disp(obj_scr);
3232: 4b34 ldr r3, [pc, #208] ; (3304 <lv_obj_invalidate_area+0x114>)
3234: 4798 blx r3
3236: 4605 mov r5, r0
if(obj_scr == lv_disp_get_scr_act(disp) || obj_scr == lv_disp_get_layer_top(disp) ||
3238: 4b33 ldr r3, [pc, #204] ; (3308 <lv_obj_invalidate_area+0x118>)
323a: 4798 blx r3
323c: 4287 cmp r7, r0
323e: d009 beq.n 3254 <lv_obj_invalidate_area+0x64>
3240: 4628 mov r0, r5
3242: 4b32 ldr r3, [pc, #200] ; (330c <lv_obj_invalidate_area+0x11c>)
3244: 4798 blx r3
3246: 4287 cmp r7, r0
3248: d004 beq.n 3254 <lv_obj_invalidate_area+0x64>
obj_scr == lv_disp_get_layer_sys(disp)) {
324a: 4628 mov r0, r5
324c: 4b30 ldr r3, [pc, #192] ; (3310 <lv_obj_invalidate_area+0x120>)
324e: 4798 blx r3
if(obj_scr == lv_disp_get_scr_act(disp) || obj_scr == lv_disp_get_layer_top(disp) ||
3250: 4287 cmp r7, r0
3252: d1e7 bne.n 3224 <lv_obj_invalidate_area+0x34>
lv_coord_t ext_size = obj->ext_draw_pad;
3254: f9b4 3032 ldrsh.w r3, [r4, #50] ; 0x32
3258: f104 020f add.w r2, r4, #15
325c: f104 0017 add.w r0, r4, #23
uint8_t * d8 = (uint8_t *)dst;
3260: a902 add r1, sp, #8
*d8 = *s8;
3262: f812 7f01 ldrb.w r7, [r2, #1]!
3266: f801 7b01 strb.w r7, [r1], #1
while(len) {
326a: 4282 cmp r2, r0
326c: d1f9 bne.n 3262 <lv_obj_invalidate_area+0x72>
obj_coords.x1 -= ext_size;
326e: b29b uxth r3, r3
3270: f8bd 2008 ldrh.w r2, [sp, #8]
3274: 1ad2 subs r2, r2, r3
3276: f8ad 2008 strh.w r2, [sp, #8]
obj_coords.y1 -= ext_size;
327a: f8bd 200a ldrh.w r2, [sp, #10]
327e: 1ad2 subs r2, r2, r3
3280: f8ad 200a strh.w r2, [sp, #10]
obj_coords.x2 += ext_size;
3284: f8bd 200c ldrh.w r2, [sp, #12]
3288: 441a add r2, r3
328a: f8ad 200c strh.w r2, [sp, #12]
obj_coords.y2 += ext_size;
328e: f8bd 200e ldrh.w r2, [sp, #14]
3292: 4413 add r3, r2
3294: f8ad 300e strh.w r3, [sp, #14]
is_common = _lv_area_intersect(&area_trunc, area, &obj_coords);
3298: aa02 add r2, sp, #8
329a: 4631 mov r1, r6
329c: a804 add r0, sp, #16
329e: 4b1d ldr r3, [pc, #116] ; (3314 <lv_obj_invalidate_area+0x124>)
32a0: 4798 blx r3
if(is_common == false) return; /*The area is not on the object*/
32a2: 2800 cmp r0, #0
32a4: d0be beq.n 3224 <lv_obj_invalidate_area+0x34>
lv_obj_t * par = lv_obj_get_parent(obj);
32a6: 4620 mov r0, r4
32a8: 4b1b ldr r3, [pc, #108] ; (3318 <lv_obj_invalidate_area+0x128>)
32aa: 4798 blx r3
while(par != NULL) {
32ac: 4604 mov r4, r0
32ae: b198 cbz r0, 32d8 <lv_obj_invalidate_area+0xe8>
is_common = _lv_area_intersect(&area_trunc, &area_trunc, &par->coords);
32b0: f8df 8060 ldr.w r8, [pc, #96] ; 3314 <lv_obj_invalidate_area+0x124>
if(lv_obj_get_hidden(par)) return; /*If the parent is hidden then the child is hidden and won't be drawn*/
32b4: 4f11 ldr r7, [pc, #68] ; (32fc <lv_obj_invalidate_area+0x10c>)
par = lv_obj_get_parent(par);
32b6: 4e18 ldr r6, [pc, #96] ; (3318 <lv_obj_invalidate_area+0x128>)
is_common = _lv_area_intersect(&area_trunc, &area_trunc, &par->coords);
32b8: f104 0210 add.w r2, r4, #16
32bc: a904 add r1, sp, #16
32be: 4608 mov r0, r1
32c0: 47c0 blx r8
if(is_common == false) break; /*If no common parts with parent break;*/
32c2: 2800 cmp r0, #0
32c4: d0ae beq.n 3224 <lv_obj_invalidate_area+0x34>
if(lv_obj_get_hidden(par)) return; /*If the parent is hidden then the child is hidden and won't be drawn*/
32c6: 4620 mov r0, r4
32c8: 47b8 blx r7
32ca: 2800 cmp r0, #0
32cc: d1aa bne.n 3224 <lv_obj_invalidate_area+0x34>
par = lv_obj_get_parent(par);
32ce: 4620 mov r0, r4
32d0: 47b0 blx r6
while(par != NULL) {
32d2: 4604 mov r4, r0
32d4: 2800 cmp r0, #0
32d6: d1ef bne.n 32b8 <lv_obj_invalidate_area+0xc8>
if(is_common) _lv_inv_area(disp, &area_trunc);
32d8: a904 add r1, sp, #16
32da: 4628 mov r0, r5
32dc: 4b0f ldr r3, [pc, #60] ; (331c <lv_obj_invalidate_area+0x12c>)
32de: 4798 blx r3
32e0: e7a0 b.n 3224 <lv_obj_invalidate_area+0x34>
32e2: bf00 nop
32e4: 000022b1 .word 0x000022b1
32e8: 00024448 .word 0x00024448
32ec: 000247dc .word 0x000247dc
32f0: 0001225d .word 0x0001225d
32f4: 0002483c .word 0x0002483c
32f8: 000022b9 .word 0x000022b9
32fc: 000031a5 .word 0x000031a5
3300: 00002cc5 .word 0x00002cc5
3304: 00002d21 .word 0x00002d21
3308: 0000234d .word 0x0000234d
330c: 0000238d .word 0x0000238d
3310: 000023cd .word 0x000023cd
3314: 00011519 .word 0x00011519
3318: 00002c7d .word 0x00002c7d
331c: 00005e59 .word 0x00005e59
00003320 <lv_obj_invalidate>:
{
3320: b530 push {r4, r5, lr}
3322: b085 sub sp, #20
3324: 4604 mov r4, r0
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
3326: 4b1c ldr r3, [pc, #112] ; (3398 <lv_obj_invalidate+0x78>)
3328: 4798 blx r3
332a: b338 cbz r0, 337c <lv_obj_invalidate+0x5c>
lv_coord_t ext_size = obj->ext_draw_pad;
332c: f9b4 3032 ldrsh.w r3, [r4, #50] ; 0x32
3330: f104 020f add.w r2, r4, #15
3334: f104 0517 add.w r5, r4, #23
uint8_t * d8 = (uint8_t *)dst;
3338: a902 add r1, sp, #8
*d8 = *s8;
333a: f812 0f01 ldrb.w r0, [r2, #1]!
333e: f801 0b01 strb.w r0, [r1], #1
while(len) {
3342: 42aa cmp r2, r5
3344: d1f9 bne.n 333a <lv_obj_invalidate+0x1a>
obj_coords.x1 -= ext_size;
3346: b29b uxth r3, r3
3348: f8bd 2008 ldrh.w r2, [sp, #8]
334c: 1ad2 subs r2, r2, r3
334e: f8ad 2008 strh.w r2, [sp, #8]
obj_coords.y1 -= ext_size;
3352: f8bd 200a ldrh.w r2, [sp, #10]
3356: 1ad2 subs r2, r2, r3
3358: f8ad 200a strh.w r2, [sp, #10]
obj_coords.x2 += ext_size;
335c: f8bd 200c ldrh.w r2, [sp, #12]
3360: 441a add r2, r3
3362: f8ad 200c strh.w r2, [sp, #12]
obj_coords.y2 += ext_size;
3366: f8bd 200e ldrh.w r2, [sp, #14]
336a: 4413 add r3, r2
336c: f8ad 300e strh.w r3, [sp, #14]
lv_obj_invalidate_area(obj, &obj_coords);
3370: a902 add r1, sp, #8
3372: 4620 mov r0, r4
3374: 4b09 ldr r3, [pc, #36] ; (339c <lv_obj_invalidate+0x7c>)
3376: 4798 blx r3
}
3378: b005 add sp, #20
337a: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
337c: 4b08 ldr r3, [pc, #32] ; (33a0 <lv_obj_invalidate+0x80>)
337e: 9300 str r3, [sp, #0]
3380: f240 220d movw r2, #525 ; 0x20d
3384: 4907 ldr r1, [pc, #28] ; (33a4 <lv_obj_invalidate+0x84>)
3386: 2003 movs r0, #3
3388: 4d07 ldr r5, [pc, #28] ; (33a8 <lv_obj_invalidate+0x88>)
338a: 47a8 blx r5
338c: 4622 mov r2, r4
338e: 2300 movs r3, #0
3390: 4806 ldr r0, [pc, #24] ; (33ac <lv_obj_invalidate+0x8c>)
3392: 4907 ldr r1, [pc, #28] ; (33b0 <lv_obj_invalidate+0x90>)
3394: 4788 blx r1
3396: e7fe b.n 3396 <lv_obj_invalidate+0x76>
3398: 000022b1 .word 0x000022b1
339c: 000031f1 .word 0x000031f1
33a0: 00024460 .word 0x00024460
33a4: 000247dc .word 0x000247dc
33a8: 0001225d .word 0x0001225d
33ac: 0002483c .word 0x0002483c
33b0: 000022b9 .word 0x000022b9
000033b4 <lv_obj_move_foreground>:
{
33b4: b5f0 push {r4, r5, r6, r7, lr}
33b6: b083 sub sp, #12
33b8: 4605 mov r5, r0
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
33ba: 4b16 ldr r3, [pc, #88] ; (3414 <lv_obj_move_foreground+0x60>)
33bc: 4798 blx r3
33be: b968 cbnz r0, 33dc <lv_obj_move_foreground+0x28>
33c0: 4b15 ldr r3, [pc, #84] ; (3418 <lv_obj_move_foreground+0x64>)
33c2: 9300 str r3, [sp, #0]
33c4: f240 2262 movw r2, #610 ; 0x262
33c8: 4914 ldr r1, [pc, #80] ; (341c <lv_obj_move_foreground+0x68>)
33ca: 2003 movs r0, #3
33cc: 4c14 ldr r4, [pc, #80] ; (3420 <lv_obj_move_foreground+0x6c>)
33ce: 47a0 blx r4
33d0: 462a mov r2, r5
33d2: 2300 movs r3, #0
33d4: 4813 ldr r0, [pc, #76] ; (3424 <lv_obj_move_foreground+0x70>)
33d6: 4914 ldr r1, [pc, #80] ; (3428 <lv_obj_move_foreground+0x74>)
33d8: 4788 blx r1
33da: e7fe b.n 33da <lv_obj_move_foreground+0x26>
lv_obj_t * parent = lv_obj_get_parent(obj);
33dc: 4628 mov r0, r5
33de: 4b13 ldr r3, [pc, #76] ; (342c <lv_obj_move_foreground+0x78>)
33e0: 4798 blx r3
33e2: 4604 mov r4, r0
if(_lv_ll_get_head(&parent->child_ll) == obj) return;
33e4: 1d06 adds r6, r0, #4
33e6: 4630 mov r0, r6
33e8: 4b11 ldr r3, [pc, #68] ; (3430 <lv_obj_move_foreground+0x7c>)
33ea: 4798 blx r3
33ec: 4285 cmp r5, r0
33ee: d00f beq.n 3410 <lv_obj_move_foreground+0x5c>
lv_obj_invalidate(parent);
33f0: 4620 mov r0, r4
33f2: 4f10 ldr r7, [pc, #64] ; (3434 <lv_obj_move_foreground+0x80>)
33f4: 47b8 blx r7
_lv_ll_chg_list(&parent->child_ll, &parent->child_ll, obj, true);
33f6: 2301 movs r3, #1
33f8: 462a mov r2, r5
33fa: 4631 mov r1, r6
33fc: 4630 mov r0, r6
33fe: 4e0e ldr r6, [pc, #56] ; (3438 <lv_obj_move_foreground+0x84>)
3400: 47b0 blx r6
parent->signal_cb(parent, LV_SIGNAL_CHILD_CHG, obj);
3402: 69e3 ldr r3, [r4, #28]
3404: 462a mov r2, r5
3406: 2101 movs r1, #1
3408: 4620 mov r0, r4
340a: 4798 blx r3
lv_obj_invalidate(parent);
340c: 4620 mov r0, r4
340e: 47b8 blx r7
}
3410: b003 add sp, #12
3412: bdf0 pop {r4, r5, r6, r7, pc}
3414: 000022b1 .word 0x000022b1
3418: 00024474 .word 0x00024474
341c: 000247dc .word 0x000247dc
3420: 0001225d .word 0x0001225d
3424: 0002483c .word 0x0002483c
3428: 000022b9 .word 0x000022b9
342c: 00002c7d .word 0x00002c7d
3430: 00011fa9 .word 0x00011fa9
3434: 00003321 .word 0x00003321
3438: 00012121 .word 0x00012121
0000343c <lv_obj_set_pos>:
{
343c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
3440: b084 sub sp, #16
3442: 4604 mov r4, r0
3444: 468a mov sl, r1
3446: 4617 mov r7, r2
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
3448: 4b2d ldr r3, [pc, #180] ; (3500 <lv_obj_set_pos+0xc4>)
344a: 4798 blx r3
344c: 2800 cmp r0, #0
344e: d03e beq.n 34ce <lv_obj_set_pos+0x92>
lv_obj_t * par = obj->parent;
3450: 6826 ldr r6, [r4, #0]
if(par == NULL) {
3452: 2e00 cmp r6, #0
3454: d049 beq.n 34ea <lv_obj_set_pos+0xae>
diff.x = x - obj->coords.x1;
3456: 8a33 ldrh r3, [r6, #16]
3458: 8a22 ldrh r2, [r4, #16]
345a: 1a9b subs r3, r3, r2
345c: 4453 add r3, sl
345e: fa1f fa83 uxth.w sl, r3
3462: fa0f f88a sxth.w r8, sl
diff.y = y - obj->coords.y1;
3466: 8a75 ldrh r5, [r6, #18]
3468: 8a63 ldrh r3, [r4, #18]
346a: 1aed subs r5, r5, r3
346c: 443d add r5, r7
346e: b2ad uxth r5, r5
3470: fa0f f985 sxth.w r9, r5
if(diff.x == 0 && diff.y == 0) return;
3474: f1b8 0f00 cmp.w r8, #0
3478: d102 bne.n 3480 <lv_obj_set_pos+0x44>
347a: f1b9 0f00 cmp.w r9, #0
347e: d023 beq.n 34c8 <lv_obj_set_pos+0x8c>
lv_obj_invalidate(obj);
3480: 4620 mov r0, r4
3482: 4f20 ldr r7, [pc, #128] ; (3504 <lv_obj_set_pos+0xc8>)
3484: 47b8 blx r7
lv_obj_get_coords(obj, &ori);
3486: a902 add r1, sp, #8
3488: 4620 mov r0, r4
348a: 4b1f ldr r3, [pc, #124] ; (3508 <lv_obj_set_pos+0xcc>)
348c: 4798 blx r3
obj->coords.x1 += diff.x;
348e: 8a23 ldrh r3, [r4, #16]
3490: 4453 add r3, sl
3492: 8223 strh r3, [r4, #16]
obj->coords.y1 += diff.y;
3494: 8a63 ldrh r3, [r4, #18]
3496: 442b add r3, r5
3498: 8263 strh r3, [r4, #18]
obj->coords.x2 += diff.x;
349a: 8aa3 ldrh r3, [r4, #20]
349c: 4453 add r3, sl
349e: 82a3 strh r3, [r4, #20]
obj->coords.y2 += diff.y;
34a0: 8ae3 ldrh r3, [r4, #22]
34a2: 441d add r5, r3
34a4: 82e5 strh r5, [r4, #22]
refresh_children_position(obj, diff.x, diff.y);
34a6: 464a mov r2, r9
34a8: 4641 mov r1, r8
34aa: 4620 mov r0, r4
34ac: 4b17 ldr r3, [pc, #92] ; (350c <lv_obj_set_pos+0xd0>)
34ae: 4798 blx r3
obj->signal_cb(obj, LV_SIGNAL_COORD_CHG, &ori);
34b0: 69e3 ldr r3, [r4, #28]
34b2: aa02 add r2, sp, #8
34b4: 2102 movs r1, #2
34b6: 4620 mov r0, r4
34b8: 4798 blx r3
par->signal_cb(par, LV_SIGNAL_CHILD_CHG, obj);
34ba: 69f3 ldr r3, [r6, #28]
34bc: 4622 mov r2, r4
34be: 2101 movs r1, #1
34c0: 4630 mov r0, r6
34c2: 4798 blx r3
lv_obj_invalidate(obj);
34c4: 4620 mov r0, r4
34c6: 47b8 blx r7
}
34c8: b004 add sp, #16
34ca: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
34ce: 4b10 ldr r3, [pc, #64] ; (3510 <lv_obj_set_pos+0xd4>)
34d0: 9300 str r3, [sp, #0]
34d2: f240 2296 movw r2, #662 ; 0x296
34d6: 490f ldr r1, [pc, #60] ; (3514 <lv_obj_set_pos+0xd8>)
34d8: 2003 movs r0, #3
34da: 4d0f ldr r5, [pc, #60] ; (3518 <lv_obj_set_pos+0xdc>)
34dc: 47a8 blx r5
34de: 4622 mov r2, r4
34e0: 2300 movs r3, #0
34e2: 480e ldr r0, [pc, #56] ; (351c <lv_obj_set_pos+0xe0>)
34e4: 490e ldr r1, [pc, #56] ; (3520 <lv_obj_set_pos+0xe4>)
34e6: 4788 blx r1
34e8: e7fe b.n 34e8 <lv_obj_set_pos+0xac>
LV_LOG_WARN("lv_obj_set_pos: not changing position of screen object");
34ea: 4b0e ldr r3, [pc, #56] ; (3524 <lv_obj_set_pos+0xe8>)
34ec: 9300 str r3, [sp, #0]
34ee: 4b08 ldr r3, [pc, #32] ; (3510 <lv_obj_set_pos+0xd4>)
34f0: f44f 7227 mov.w r2, #668 ; 0x29c
34f4: 4907 ldr r1, [pc, #28] ; (3514 <lv_obj_set_pos+0xd8>)
34f6: 2002 movs r0, #2
34f8: 4c07 ldr r4, [pc, #28] ; (3518 <lv_obj_set_pos+0xdc>)
34fa: 47a0 blx r4
return;
34fc: e7e4 b.n 34c8 <lv_obj_set_pos+0x8c>
34fe: bf00 nop
3500: 000022b1 .word 0x000022b1
3504: 00003321 .word 0x00003321
3508: 00002e41 .word 0x00002e41
350c: 0000280d .word 0x0000280d
3510: 000244a4 .word 0x000244a4
3514: 000247dc .word 0x000247dc
3518: 0001225d .word 0x0001225d
351c: 0002483c .word 0x0002483c
3520: 000022b9 .word 0x000022b9
3524: 000248d0 .word 0x000248d0
00003528 <lv_obj_set_x>:
{
3528: b530 push {r4, r5, lr}
352a: b083 sub sp, #12
352c: 4604 mov r4, r0
352e: 460d mov r5, r1
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
3530: 4b0d ldr r3, [pc, #52] ; (3568 <lv_obj_set_x+0x40>)
3532: 4798 blx r3
3534: b968 cbnz r0, 3552 <lv_obj_set_x+0x2a>
3536: 4b0d ldr r3, [pc, #52] ; (356c <lv_obj_set_x+0x44>)
3538: 9300 str r3, [sp, #0]
353a: f44f 7233 mov.w r2, #716 ; 0x2cc
353e: 490c ldr r1, [pc, #48] ; (3570 <lv_obj_set_x+0x48>)
3540: 2003 movs r0, #3
3542: 4d0c ldr r5, [pc, #48] ; (3574 <lv_obj_set_x+0x4c>)
3544: 47a8 blx r5
3546: 4622 mov r2, r4
3548: 2300 movs r3, #0
354a: 480b ldr r0, [pc, #44] ; (3578 <lv_obj_set_x+0x50>)
354c: 490b ldr r1, [pc, #44] ; (357c <lv_obj_set_x+0x54>)
354e: 4788 blx r1
3550: e7fe b.n 3550 <lv_obj_set_x+0x28>
lv_obj_set_pos(obj, x, lv_obj_get_y(obj));
3552: 4620 mov r0, r4
3554: 4b0a ldr r3, [pc, #40] ; (3580 <lv_obj_set_x+0x58>)
3556: 4798 blx r3
3558: 4602 mov r2, r0
355a: 4629 mov r1, r5
355c: 4620 mov r0, r4
355e: 4b09 ldr r3, [pc, #36] ; (3584 <lv_obj_set_x+0x5c>)
3560: 4798 blx r3
}
3562: b003 add sp, #12
3564: bd30 pop {r4, r5, pc}
3566: bf00 nop
3568: 000022b1 .word 0x000022b1
356c: 000244b4 .word 0x000244b4
3570: 000247dc .word 0x000247dc
3574: 0001225d .word 0x0001225d
3578: 0002483c .word 0x0002483c
357c: 000022b9 .word 0x000022b9
3580: 00002efd .word 0x00002efd
3584: 0000343d .word 0x0000343d
00003588 <lv_obj_set_y>:
{
3588: b530 push {r4, r5, lr}
358a: b083 sub sp, #12
358c: 4604 mov r4, r0
358e: 460d mov r5, r1
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
3590: 4b0d ldr r3, [pc, #52] ; (35c8 <lv_obj_set_y+0x40>)
3592: 4798 blx r3
3594: b968 cbnz r0, 35b2 <lv_obj_set_y+0x2a>
3596: 4b0d ldr r3, [pc, #52] ; (35cc <lv_obj_set_y+0x44>)
3598: 9300 str r3, [sp, #0]
359a: f44f 7236 mov.w r2, #728 ; 0x2d8
359e: 490c ldr r1, [pc, #48] ; (35d0 <lv_obj_set_y+0x48>)
35a0: 2003 movs r0, #3
35a2: 4d0c ldr r5, [pc, #48] ; (35d4 <lv_obj_set_y+0x4c>)
35a4: 47a8 blx r5
35a6: 4622 mov r2, r4
35a8: 2300 movs r3, #0
35aa: 480b ldr r0, [pc, #44] ; (35d8 <lv_obj_set_y+0x50>)
35ac: 490b ldr r1, [pc, #44] ; (35dc <lv_obj_set_y+0x54>)
35ae: 4788 blx r1
35b0: e7fe b.n 35b0 <lv_obj_set_y+0x28>
lv_obj_set_pos(obj, lv_obj_get_x(obj), y);
35b2: 4620 mov r0, r4
35b4: 4b0a ldr r3, [pc, #40] ; (35e0 <lv_obj_set_y+0x58>)
35b6: 4798 blx r3
35b8: 462a mov r2, r5
35ba: 4601 mov r1, r0
35bc: 4620 mov r0, r4
35be: 4b09 ldr r3, [pc, #36] ; (35e4 <lv_obj_set_y+0x5c>)
35c0: 4798 blx r3
}
35c2: b003 add sp, #12
35c4: bd30 pop {r4, r5, pc}
35c6: bf00 nop
35c8: 000022b1 .word 0x000022b1
35cc: 000244c4 .word 0x000244c4
35d0: 000247dc .word 0x000247dc
35d4: 0001225d .word 0x0001225d
35d8: 0002483c .word 0x0002483c
35dc: 000022b9 .word 0x000022b9
35e0: 00002e9d .word 0x00002e9d
35e4: 0000343d .word 0x0000343d
000035e8 <lv_obj_align>:
{
35e8: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
35ec: b085 sub sp, #20
35ee: 4604 mov r4, r0
35f0: 460d mov r5, r1
35f2: 4690 mov r8, r2
35f4: 461f mov r7, r3
35f6: f9bd 6030 ldrsh.w r6, [sp, #48] ; 0x30
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
35fa: 4b2c ldr r3, [pc, #176] ; (36ac <lv_obj_align+0xc4>)
35fc: 4798 blx r3
35fe: b968 cbnz r0, 361c <lv_obj_align+0x34>
3600: 4b2b ldr r3, [pc, #172] ; (36b0 <lv_obj_align+0xc8>)
3602: 9300 str r3, [sp, #0]
3604: f240 326d movw r2, #877 ; 0x36d
3608: 492a ldr r1, [pc, #168] ; (36b4 <lv_obj_align+0xcc>)
360a: 2003 movs r0, #3
360c: 4d2a ldr r5, [pc, #168] ; (36b8 <lv_obj_align+0xd0>)
360e: 47a8 blx r5
3610: 4622 mov r2, r4
3612: 2300 movs r3, #0
3614: 4829 ldr r0, [pc, #164] ; (36bc <lv_obj_align+0xd4>)
3616: 492a ldr r1, [pc, #168] ; (36c0 <lv_obj_align+0xd8>)
3618: 4788 blx r1
361a: e7fe b.n 361a <lv_obj_align+0x32>
if(base == NULL) base = lv_obj_get_parent(obj);
361c: b18d cbz r5, 3642 <lv_obj_align+0x5a>
LV_ASSERT_OBJ(base, LV_OBJX_NAME);
361e: 4628 mov r0, r5
3620: 4b22 ldr r3, [pc, #136] ; (36ac <lv_obj_align+0xc4>)
3622: 4798 blx r3
3624: b990 cbnz r0, 364c <lv_obj_align+0x64>
3626: 4b22 ldr r3, [pc, #136] ; (36b0 <lv_obj_align+0xc8>)
3628: 9300 str r3, [sp, #0]
362a: f240 3271 movw r2, #881 ; 0x371
362e: 4921 ldr r1, [pc, #132] ; (36b4 <lv_obj_align+0xcc>)
3630: 2003 movs r0, #3
3632: 4c21 ldr r4, [pc, #132] ; (36b8 <lv_obj_align+0xd0>)
3634: 47a0 blx r4
3636: 462a mov r2, r5
3638: 2300 movs r3, #0
363a: 4820 ldr r0, [pc, #128] ; (36bc <lv_obj_align+0xd4>)
363c: 4920 ldr r1, [pc, #128] ; (36c0 <lv_obj_align+0xd8>)
363e: 4788 blx r1
3640: e7fe b.n 3640 <lv_obj_align+0x58>
if(base == NULL) base = lv_obj_get_parent(obj);
3642: 4620 mov r0, r4
3644: 4b1f ldr r3, [pc, #124] ; (36c4 <lv_obj_align+0xdc>)
3646: 4798 blx r3
3648: 4605 mov r5, r0
364a: e7e8 b.n 361e <lv_obj_align+0x36>
_lv_area_align(&base->coords, &obj->coords, align, &new_pos);
364c: ab03 add r3, sp, #12
364e: 4642 mov r2, r8
3650: f104 0110 add.w r1, r4, #16
3654: f105 0010 add.w r0, r5, #16
3658: f8df 9070 ldr.w r9, [pc, #112] ; 36cc <lv_obj_align+0xe4>
365c: 47c8 blx r9
lv_obj_t * par = lv_obj_get_parent(obj);
365e: 4620 mov r0, r4
3660: 4b18 ldr r3, [pc, #96] ; (36c4 <lv_obj_align+0xdc>)
3662: 4798 blx r3
lv_coord_t par_abs_y = par->coords.y1;
3664: f9b0 3012 ldrsh.w r3, [r0, #18]
new_pos.y += y_ofs;
3668: f8bd 200e ldrh.w r2, [sp, #14]
366c: 4432 add r2, r6
new_pos.x += x_ofs;
366e: f8bd 100c ldrh.w r1, [sp, #12]
3672: 4439 add r1, r7
new_pos.x -= par_abs_x;
3674: 8a00 ldrh r0, [r0, #16]
3676: 1a09 subs r1, r1, r0
3678: b209 sxth r1, r1
367a: f8ad 100c strh.w r1, [sp, #12]
new_pos.y -= par_abs_y;
367e: 1ad2 subs r2, r2, r3
3680: b212 sxth r2, r2
3682: f8ad 200e strh.w r2, [sp, #14]
lv_obj_set_pos(obj, new_pos.x, new_pos.y);
3686: 4620 mov r0, r4
3688: 4b0f ldr r3, [pc, #60] ; (36c8 <lv_obj_align+0xe0>)
368a: 4798 blx r3
obj->realign.align = align;
368c: f884 8048 strb.w r8, [r4, #72] ; 0x48
obj->realign.xofs = x_ofs;
3690: f8a4 7044 strh.w r7, [r4, #68] ; 0x44
obj->realign.yofs = y_ofs;
3694: f8a4 6046 strh.w r6, [r4, #70] ; 0x46
obj->realign.base = base;
3698: 6425 str r5, [r4, #64] ; 0x40
obj->realign.origo_align = 0;
369a: f894 3049 ldrb.w r3, [r4, #73] ; 0x49
369e: f36f 0341 bfc r3, #1, #1
36a2: f884 3049 strb.w r3, [r4, #73] ; 0x49
}
36a6: b005 add sp, #20
36a8: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
36ac: 000022b1 .word 0x000022b1
36b0: 000244d4 .word 0x000244d4
36b4: 000247dc .word 0x000247dc
36b8: 0001225d .word 0x0001225d
36bc: 0002483c .word 0x0002483c
36c0: 000022b9 .word 0x000022b9
36c4: 00002c7d .word 0x00002c7d
36c8: 0000343d .word 0x0000343d
36cc: 00011825 .word 0x00011825
000036d0 <lv_obj_align_origo>:
{
36d0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
36d4: b085 sub sp, #20
36d6: 4681 mov r9, r0
36d8: 460e mov r6, r1
36da: 4692 mov sl, r2
36dc: 9303 str r3, [sp, #12]
36de: f9bd b038 ldrsh.w fp, [sp, #56] ; 0x38
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
36e2: 4ba3 ldr r3, [pc, #652] ; (3970 <lv_obj_align_origo+0x2a0>)
36e4: 4798 blx r3
36e6: b968 cbnz r0, 3704 <lv_obj_align_origo+0x34>
36e8: 4ba2 ldr r3, [pc, #648] ; (3974 <lv_obj_align_origo+0x2a4>)
36ea: 9300 str r3, [sp, #0]
36ec: f240 3295 movw r2, #917 ; 0x395
36f0: 49a1 ldr r1, [pc, #644] ; (3978 <lv_obj_align_origo+0x2a8>)
36f2: 2003 movs r0, #3
36f4: 4ca1 ldr r4, [pc, #644] ; (397c <lv_obj_align_origo+0x2ac>)
36f6: 47a0 blx r4
36f8: 464a mov r2, r9
36fa: 2300 movs r3, #0
36fc: 48a0 ldr r0, [pc, #640] ; (3980 <lv_obj_align_origo+0x2b0>)
36fe: 49a1 ldr r1, [pc, #644] ; (3984 <lv_obj_align_origo+0x2b4>)
3700: 4788 blx r1
3702: e7fe b.n 3702 <lv_obj_align_origo+0x32>
lv_coord_t new_x = lv_obj_get_x(obj);
3704: 4648 mov r0, r9
3706: 4ba0 ldr r3, [pc, #640] ; (3988 <lv_obj_align_origo+0x2b8>)
3708: 4798 blx r3
370a: 4605 mov r5, r0
lv_coord_t new_y = lv_obj_get_y(obj);
370c: 4648 mov r0, r9
370e: 4b9f ldr r3, [pc, #636] ; (398c <lv_obj_align_origo+0x2bc>)
3710: 4798 blx r3
3712: 4604 mov r4, r0
lv_coord_t obj_w_half = lv_obj_get_width(obj) / 2;
3714: 4648 mov r0, r9
3716: 4b9e ldr r3, [pc, #632] ; (3990 <lv_obj_align_origo+0x2c0>)
3718: 4798 blx r3
371a: eb00 70d0 add.w r0, r0, r0, lsr #31
371e: f340 084f sbfx r8, r0, #1, #16
lv_coord_t obj_h_half = lv_obj_get_height(obj) / 2;
3722: 4648 mov r0, r9
3724: 4b9b ldr r3, [pc, #620] ; (3994 <lv_obj_align_origo+0x2c4>)
3726: 4798 blx r3
3728: eb00 70d0 add.w r0, r0, r0, lsr #31
372c: f340 074f sbfx r7, r0, #1, #16
if(base == NULL) {
3730: b1ee cbz r6, 376e <lv_obj_align_origo+0x9e>
LV_ASSERT_OBJ(base, LV_OBJX_NAME);
3732: 4630 mov r0, r6
3734: 4b8e ldr r3, [pc, #568] ; (3970 <lv_obj_align_origo+0x2a0>)
3736: 4798 blx r3
3738: b1f0 cbz r0, 3778 <lv_obj_align_origo+0xa8>
switch(align) {
373a: f1ba 0f14 cmp.w sl, #20
373e: d839 bhi.n 37b4 <lv_obj_align_origo+0xe4>
3740: e8df f01a tbh [pc, sl, lsl #1]
3744: 005c0028 .word 0x005c0028
3748: 006d0062 .word 0x006d0062
374c: 007f0076 .word 0x007f0076
3750: 0099008d .word 0x0099008d
3754: 00b400a5 .word 0x00b400a5
3758: 00c500ba .word 0x00c500ba
375c: 00d700ce .word 0x00d700ce
3760: 00f100e5 .word 0x00f100e5
3764: 010300f7 .word 0x010300f7
3768: 012e010c .word 0x012e010c
376c: 013d .short 0x013d
base = lv_obj_get_parent(obj);
376e: 4648 mov r0, r9
3770: 4b89 ldr r3, [pc, #548] ; (3998 <lv_obj_align_origo+0x2c8>)
3772: 4798 blx r3
3774: 4606 mov r6, r0
3776: e7dc b.n 3732 <lv_obj_align_origo+0x62>
LV_ASSERT_OBJ(base, LV_OBJX_NAME);
3778: 4b7e ldr r3, [pc, #504] ; (3974 <lv_obj_align_origo+0x2a4>)
377a: 9300 str r3, [sp, #0]
377c: f240 32a1 movw r2, #929 ; 0x3a1
3780: 497d ldr r1, [pc, #500] ; (3978 <lv_obj_align_origo+0x2a8>)
3782: 2003 movs r0, #3
3784: 4c7d ldr r4, [pc, #500] ; (397c <lv_obj_align_origo+0x2ac>)
3786: 47a0 blx r4
3788: 4632 mov r2, r6
378a: 2300 movs r3, #0
378c: 487c ldr r0, [pc, #496] ; (3980 <lv_obj_align_origo+0x2b0>)
378e: 497d ldr r1, [pc, #500] ; (3984 <lv_obj_align_origo+0x2b4>)
3790: 4788 blx r1
3792: e7fe b.n 3792 <lv_obj_align_origo+0xc2>
new_x = lv_obj_get_width(base) / 2 - obj_w_half;
3794: 4630 mov r0, r6
3796: 4b7e ldr r3, [pc, #504] ; (3990 <lv_obj_align_origo+0x2c0>)
3798: 4798 blx r3
379a: eb00 70d0 add.w r0, r0, r0, lsr #31
379e: ebc8 0560 rsb r5, r8, r0, asr #1
37a2: b22d sxth r5, r5
new_y = lv_obj_get_height(base) / 2 - obj_h_half;
37a4: 4630 mov r0, r6
37a6: 4b7b ldr r3, [pc, #492] ; (3994 <lv_obj_align_origo+0x2c4>)
37a8: 4798 blx r3
37aa: eb00 70d0 add.w r0, r0, r0, lsr #31
37ae: ebc7 0460 rsb r4, r7, r0, asr #1
37b2: b224 sxth r4, r4
lv_obj_t * par = lv_obj_get_parent(obj);
37b4: 4648 mov r0, r9
37b6: 4b78 ldr r3, [pc, #480] ; (3998 <lv_obj_align_origo+0x2c8>)
37b8: 4798 blx r3
new_x += x_ofs + base_abs_x;
37ba: 8a31 ldrh r1, [r6, #16]
37bc: 9f03 ldr r7, [sp, #12]
37be: 4439 add r1, r7
37c0: 4429 add r1, r5
new_x -= par_abs_x;
37c2: 8a03 ldrh r3, [r0, #16]
37c4: 1ac9 subs r1, r1, r3
new_y += y_ofs + base_abs_y;
37c6: 8a72 ldrh r2, [r6, #18]
37c8: 445a add r2, fp
37ca: 4422 add r2, r4
new_y -= par_abs_y;
37cc: 8a43 ldrh r3, [r0, #18]
37ce: 1ad2 subs r2, r2, r3
lv_obj_set_pos(obj, new_x, new_y);
37d0: b212 sxth r2, r2
37d2: b209 sxth r1, r1
37d4: 4648 mov r0, r9
37d6: 4b71 ldr r3, [pc, #452] ; (399c <lv_obj_align_origo+0x2cc>)
37d8: 4798 blx r3
obj->realign.align = align;
37da: f889 a048 strb.w sl, [r9, #72] ; 0x48
obj->realign.xofs = x_ofs;
37de: f8a9 7044 strh.w r7, [r9, #68] ; 0x44
obj->realign.yofs = y_ofs;
37e2: f8a9 b046 strh.w fp, [r9, #70] ; 0x46
obj->realign.base = base;
37e6: f8c9 6040 str.w r6, [r9, #64] ; 0x40
obj->realign.origo_align = 1;
37ea: f899 3049 ldrb.w r3, [r9, #73] ; 0x49
37ee: f043 0302 orr.w r3, r3, #2
37f2: f889 3049 strb.w r3, [r9, #73] ; 0x49
}
37f6: b005 add sp, #20
37f8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
new_x = -obj_w_half;
37fc: f1c8 0500 rsb r5, r8, #0
3800: b22d sxth r5, r5
new_y = -obj_h_half;
3802: 427c negs r4, r7
3804: b224 sxth r4, r4
break;
3806: e7d5 b.n 37b4 <lv_obj_align_origo+0xe4>
new_x = lv_obj_get_width(base) / 2 - obj_w_half;
3808: 4630 mov r0, r6
380a: 4b61 ldr r3, [pc, #388] ; (3990 <lv_obj_align_origo+0x2c0>)
380c: 4798 blx r3
380e: eb00 70d0 add.w r0, r0, r0, lsr #31
3812: ebc8 0560 rsb r5, r8, r0, asr #1
3816: b22d sxth r5, r5
new_y = -obj_h_half;
3818: 427c negs r4, r7
381a: b224 sxth r4, r4
break;
381c: e7ca b.n 37b4 <lv_obj_align_origo+0xe4>
new_x = lv_obj_get_width(base) - obj_w_half;
381e: 4630 mov r0, r6
3820: 4b5b ldr r3, [pc, #364] ; (3990 <lv_obj_align_origo+0x2c0>)
3822: 4798 blx r3
3824: eba0 0008 sub.w r0, r0, r8
3828: b205 sxth r5, r0
new_y = -obj_h_half;
382a: 427c negs r4, r7
382c: b224 sxth r4, r4
break;
382e: e7c1 b.n 37b4 <lv_obj_align_origo+0xe4>
new_x = -obj_w_half;
3830: f1c8 0500 rsb r5, r8, #0
3834: b22d sxth r5, r5
new_y = lv_obj_get_height(base) - obj_h_half;
3836: 4630 mov r0, r6
3838: 4b56 ldr r3, [pc, #344] ; (3994 <lv_obj_align_origo+0x2c4>)
383a: 4798 blx r3
383c: 1bc0 subs r0, r0, r7
383e: b204 sxth r4, r0
break;
3840: e7b8 b.n 37b4 <lv_obj_align_origo+0xe4>
new_x = lv_obj_get_width(base) / 2 - obj_w_half;
3842: 4630 mov r0, r6
3844: 4b52 ldr r3, [pc, #328] ; (3990 <lv_obj_align_origo+0x2c0>)
3846: 4798 blx r3
3848: eb00 70d0 add.w r0, r0, r0, lsr #31
384c: ebc8 0560 rsb r5, r8, r0, asr #1
3850: b22d sxth r5, r5
new_y = lv_obj_get_height(base) - obj_h_half;
3852: 4630 mov r0, r6
3854: 4b4f ldr r3, [pc, #316] ; (3994 <lv_obj_align_origo+0x2c4>)
3856: 4798 blx r3
3858: 1bc0 subs r0, r0, r7
385a: b204 sxth r4, r0
break;
385c: e7aa b.n 37b4 <lv_obj_align_origo+0xe4>
new_x = lv_obj_get_width(base) - obj_w_half;
385e: 4630 mov r0, r6
3860: 4b4b ldr r3, [pc, #300] ; (3990 <lv_obj_align_origo+0x2c0>)
3862: 4798 blx r3
3864: eba0 0008 sub.w r0, r0, r8
3868: b205 sxth r5, r0
new_y = lv_obj_get_height(base) - obj_h_half;
386a: 4630 mov r0, r6
386c: 4b49 ldr r3, [pc, #292] ; (3994 <lv_obj_align_origo+0x2c4>)
386e: 4798 blx r3
3870: 1bc0 subs r0, r0, r7
3872: b204 sxth r4, r0
break;
3874: e79e b.n 37b4 <lv_obj_align_origo+0xe4>
new_x = -obj_w_half;
3876: f1c8 0500 rsb r5, r8, #0
387a: b22d sxth r5, r5
new_y = lv_obj_get_height(base) / 2 - obj_h_half;
387c: 4630 mov r0, r6
387e: 4b45 ldr r3, [pc, #276] ; (3994 <lv_obj_align_origo+0x2c4>)
3880: 4798 blx r3
3882: eb00 70d0 add.w r0, r0, r0, lsr #31
3886: ebc7 0460 rsb r4, r7, r0, asr #1
388a: b224 sxth r4, r4
break;
388c: e792 b.n 37b4 <lv_obj_align_origo+0xe4>
new_x = lv_obj_get_width(base) - obj_w_half;
388e: 4630 mov r0, r6
3890: 4b3f ldr r3, [pc, #252] ; (3990 <lv_obj_align_origo+0x2c0>)
3892: 4798 blx r3
3894: eba0 0008 sub.w r0, r0, r8
3898: b205 sxth r5, r0
new_y = lv_obj_get_height(base) / 2 - obj_h_half;
389a: 4630 mov r0, r6
389c: 4b3d ldr r3, [pc, #244] ; (3994 <lv_obj_align_origo+0x2c4>)
389e: 4798 blx r3
38a0: eb00 70d0 add.w r0, r0, r0, lsr #31
38a4: ebc7 0460 rsb r4, r7, r0, asr #1
38a8: b224 sxth r4, r4
break;
38aa: e783 b.n 37b4 <lv_obj_align_origo+0xe4>
new_x = -obj_w_half;
38ac: f1c8 0500 rsb r5, r8, #0
38b0: b22d sxth r5, r5
new_y = -obj_h_half;
38b2: 427c negs r4, r7
38b4: b224 sxth r4, r4
break;
38b6: e77d b.n 37b4 <lv_obj_align_origo+0xe4>
new_x = lv_obj_get_width(base) / 2 - obj_w_half;
38b8: 4630 mov r0, r6
38ba: 4b35 ldr r3, [pc, #212] ; (3990 <lv_obj_align_origo+0x2c0>)
38bc: 4798 blx r3
38be: eb00 70d0 add.w r0, r0, r0, lsr #31
38c2: ebc8 0560 rsb r5, r8, r0, asr #1
38c6: b22d sxth r5, r5
new_y = -obj_h_half;
38c8: 427c negs r4, r7
38ca: b224 sxth r4, r4
break;
38cc: e772 b.n 37b4 <lv_obj_align_origo+0xe4>
new_x = lv_obj_get_width(base) - obj_w_half;
38ce: 4630 mov r0, r6
38d0: 4b2f ldr r3, [pc, #188] ; (3990 <lv_obj_align_origo+0x2c0>)
38d2: 4798 blx r3
38d4: eba0 0008 sub.w r0, r0, r8
38d8: b205 sxth r5, r0
new_y = -obj_h_half;
38da: 427c negs r4, r7
38dc: b224 sxth r4, r4
break;
38de: e769 b.n 37b4 <lv_obj_align_origo+0xe4>
new_x = -obj_w_half;
38e0: f1c8 0500 rsb r5, r8, #0
38e4: b22d sxth r5, r5
new_y = lv_obj_get_height(base) - obj_h_half;
38e6: 4630 mov r0, r6
38e8: 4b2a ldr r3, [pc, #168] ; (3994 <lv_obj_align_origo+0x2c4>)
38ea: 4798 blx r3
38ec: 1bc0 subs r0, r0, r7
38ee: b204 sxth r4, r0
break;
38f0: e760 b.n 37b4 <lv_obj_align_origo+0xe4>
new_x = lv_obj_get_width(base) / 2 - obj_w_half;
38f2: 4630 mov r0, r6
38f4: 4b26 ldr r3, [pc, #152] ; (3990 <lv_obj_align_origo+0x2c0>)
38f6: 4798 blx r3
38f8: eb00 70d0 add.w r0, r0, r0, lsr #31
38fc: ebc8 0560 rsb r5, r8, r0, asr #1
3900: b22d sxth r5, r5
new_y = lv_obj_get_height(base) - obj_h_half;
3902: 4630 mov r0, r6
3904: 4b23 ldr r3, [pc, #140] ; (3994 <lv_obj_align_origo+0x2c4>)
3906: 4798 blx r3
3908: 1bc0 subs r0, r0, r7
390a: b204 sxth r4, r0
break;
390c: e752 b.n 37b4 <lv_obj_align_origo+0xe4>
new_x = lv_obj_get_width(base) - obj_w_half;
390e: 4630 mov r0, r6
3910: 4b1f ldr r3, [pc, #124] ; (3990 <lv_obj_align_origo+0x2c0>)
3912: 4798 blx r3
3914: eba0 0008 sub.w r0, r0, r8
3918: b205 sxth r5, r0
new_y = lv_obj_get_height(base) - obj_h_half;
391a: 4630 mov r0, r6
391c: 4b1d ldr r3, [pc, #116] ; (3994 <lv_obj_align_origo+0x2c4>)
391e: 4798 blx r3
3920: 1bc0 subs r0, r0, r7
3922: b204 sxth r4, r0
break;
3924: e746 b.n 37b4 <lv_obj_align_origo+0xe4>
new_x = -obj_w_half;
3926: f1c8 0500 rsb r5, r8, #0
392a: b22d sxth r5, r5
new_y = -obj_h_half;
392c: 427c negs r4, r7
392e: b224 sxth r4, r4
break;
3930: e740 b.n 37b4 <lv_obj_align_origo+0xe4>
new_x = -obj_w_half;
3932: f1c8 0500 rsb r5, r8, #0
3936: b22d sxth r5, r5
new_y = lv_obj_get_height(base) / 2 - obj_h_half;
3938: 4630 mov r0, r6
393a: 4b16 ldr r3, [pc, #88] ; (3994 <lv_obj_align_origo+0x2c4>)
393c: 4798 blx r3
393e: eb00 70d0 add.w r0, r0, r0, lsr #31
3942: ebc7 0460 rsb r4, r7, r0, asr #1
3946: b224 sxth r4, r4
break;
3948: e734 b.n 37b4 <lv_obj_align_origo+0xe4>
new_x = -obj_w_half;
394a: f1c8 0500 rsb r5, r8, #0
394e: b22d sxth r5, r5
new_y = lv_obj_get_height(base) - obj_h_half;
3950: 4630 mov r0, r6
3952: 4b10 ldr r3, [pc, #64] ; (3994 <lv_obj_align_origo+0x2c4>)
3954: 4798 blx r3
3956: 1bc0 subs r0, r0, r7
3958: b204 sxth r4, r0
break;
395a: e72b b.n 37b4 <lv_obj_align_origo+0xe4>
new_x = lv_obj_get_width(base) - obj_w_half;
395c: 4630 mov r0, r6
395e: 4b0c ldr r3, [pc, #48] ; (3990 <lv_obj_align_origo+0x2c0>)
3960: 4798 blx r3
3962: eba0 0008 sub.w r0, r0, r8
3966: b205 sxth r5, r0
new_y = -obj_h_half;
3968: 427c negs r4, r7
396a: b224 sxth r4, r4
break;
396c: e722 b.n 37b4 <lv_obj_align_origo+0xe4>
396e: bf00 nop
3970: 000022b1 .word 0x000022b1
3974: 000244e4 .word 0x000244e4
3978: 000247dc .word 0x000247dc
397c: 0001225d .word 0x0001225d
3980: 0002483c .word 0x0002483c
3984: 000022b9 .word 0x000022b9
3988: 00002e9d .word 0x00002e9d
398c: 00002efd .word 0x00002efd
3990: 00002f5d .word 0x00002f5d
3994: 00002fad .word 0x00002fad
3998: 00002c7d .word 0x00002c7d
399c: 0000343d .word 0x0000343d
new_x = lv_obj_get_width(base) - obj_w_half;
39a0: 4630 mov r0, r6
39a2: 4b0d ldr r3, [pc, #52] ; (39d8 <lv_obj_align_origo+0x308>)
39a4: 4798 blx r3
39a6: eba0 0008 sub.w r0, r0, r8
39aa: b205 sxth r5, r0
new_y = lv_obj_get_height(base) / 2 - obj_h_half;
39ac: 4630 mov r0, r6
39ae: 4b0b ldr r3, [pc, #44] ; (39dc <lv_obj_align_origo+0x30c>)
39b0: 4798 blx r3
39b2: eb00 70d0 add.w r0, r0, r0, lsr #31
39b6: ebc7 0460 rsb r4, r7, r0, asr #1
39ba: b224 sxth r4, r4
break;
39bc: e6fa b.n 37b4 <lv_obj_align_origo+0xe4>
new_x = lv_obj_get_width(base) - obj_w_half;
39be: 4630 mov r0, r6
39c0: 4b05 ldr r3, [pc, #20] ; (39d8 <lv_obj_align_origo+0x308>)
39c2: 4798 blx r3
39c4: eba0 0008 sub.w r0, r0, r8
39c8: b205 sxth r5, r0
new_y = lv_obj_get_height(base) - obj_h_half;
39ca: 4630 mov r0, r6
39cc: 4b03 ldr r3, [pc, #12] ; (39dc <lv_obj_align_origo+0x30c>)
39ce: 4798 blx r3
39d0: 1bc0 subs r0, r0, r7
39d2: b204 sxth r4, r0
break;
39d4: e6ee b.n 37b4 <lv_obj_align_origo+0xe4>
39d6: bf00 nop
39d8: 00002f5d .word 0x00002f5d
39dc: 00002fad .word 0x00002fad
000039e0 <lv_obj_realign>:
{
39e0: b530 push {r4, r5, lr}
39e2: b083 sub sp, #12
39e4: 4604 mov r4, r0
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
39e6: 4b12 ldr r3, [pc, #72] ; (3a30 <lv_obj_realign+0x50>)
39e8: 4798 blx r3
39ea: b190 cbz r0, 3a12 <lv_obj_realign+0x32>
if(obj->realign.origo_align)
39ec: f894 3049 ldrb.w r3, [r4, #73] ; 0x49
39f0: f013 0f02 tst.w r3, #2
lv_obj_align_origo(obj, obj->realign.base, obj->realign.align, obj->realign.xofs, obj->realign.yofs);
39f4: f9b4 3044 ldrsh.w r3, [r4, #68] ; 0x44
39f8: f894 2048 ldrb.w r2, [r4, #72] ; 0x48
39fc: f9b4 1046 ldrsh.w r1, [r4, #70] ; 0x46
3a00: 9100 str r1, [sp, #0]
3a02: 6c21 ldr r1, [r4, #64] ; 0x40
3a04: 4620 mov r0, r4
3a06: bf14 ite ne
3a08: 4c0a ldrne r4, [pc, #40] ; (3a34 <lv_obj_realign+0x54>)
lv_obj_align(obj, obj->realign.base, obj->realign.align, obj->realign.xofs, obj->realign.yofs);
3a0a: 4c0b ldreq r4, [pc, #44] ; (3a38 <lv_obj_realign+0x58>)
3a0c: 47a0 blx r4
}
3a0e: b003 add sp, #12
3a10: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
3a12: 4b0a ldr r3, [pc, #40] ; (3a3c <lv_obj_realign+0x5c>)
3a14: 9300 str r3, [sp, #0]
3a16: f240 422a movw r2, #1066 ; 0x42a
3a1a: 4909 ldr r1, [pc, #36] ; (3a40 <lv_obj_realign+0x60>)
3a1c: 2003 movs r0, #3
3a1e: 4d09 ldr r5, [pc, #36] ; (3a44 <lv_obj_realign+0x64>)
3a20: 47a8 blx r5
3a22: 4622 mov r2, r4
3a24: 2300 movs r3, #0
3a26: 4808 ldr r0, [pc, #32] ; (3a48 <lv_obj_realign+0x68>)
3a28: 4908 ldr r1, [pc, #32] ; (3a4c <lv_obj_realign+0x6c>)
3a2a: 4788 blx r1
3a2c: e7fe b.n 3a2c <lv_obj_realign+0x4c>
3a2e: bf00 nop
3a30: 000022b1 .word 0x000022b1
3a34: 000036d1 .word 0x000036d1
3a38: 000035e9 .word 0x000035e9
3a3c: 000244f8 .word 0x000244f8
3a40: 000247dc .word 0x000247dc
3a44: 0001225d .word 0x0001225d
3a48: 0002483c .word 0x0002483c
3a4c: 000022b9 .word 0x000022b9
00003a50 <refresh_children_style>:
{
3a50: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
3a54: 4606 mov r6, r0
lv_obj_t * child = lv_obj_get_child(obj, NULL);
3a56: 2100 movs r1, #0
3a58: 4b0d ldr r3, [pc, #52] ; (3a90 <refresh_children_style+0x40>)
3a5a: 4798 blx r3
while(child != NULL) {
3a5c: b1b0 cbz r0, 3a8c <refresh_children_style+0x3c>
3a5e: 4604 mov r4, r0
lv_obj_invalidate(child);
3a60: 4d0c ldr r5, [pc, #48] ; (3a94 <refresh_children_style+0x44>)
child->signal_cb(child, LV_SIGNAL_STYLE_CHG, NULL);
3a62: f04f 0800 mov.w r8, #0
child = lv_obj_get_child(obj, child);
3a66: 4f0a ldr r7, [pc, #40] ; (3a90 <refresh_children_style+0x40>)
lv_obj_invalidate(child);
3a68: 4620 mov r0, r4
3a6a: 47a8 blx r5
child->signal_cb(child, LV_SIGNAL_STYLE_CHG, NULL);
3a6c: 69e3 ldr r3, [r4, #28]
3a6e: 4642 mov r2, r8
3a70: 2104 movs r1, #4
3a72: 4620 mov r0, r4
3a74: 4798 blx r3
lv_obj_invalidate(child);
3a76: 4620 mov r0, r4
3a78: 47a8 blx r5
refresh_children_style(child); /*Check children too*/
3a7a: 4620 mov r0, r4
3a7c: f7ff ffe8 bl 3a50 <refresh_children_style>
child = lv_obj_get_child(obj, child);
3a80: 4621 mov r1, r4
3a82: 4630 mov r0, r6
3a84: 47b8 blx r7
while(child != NULL) {
3a86: 4604 mov r4, r0
3a88: 2800 cmp r0, #0
3a8a: d1ed bne.n 3a68 <refresh_children_style+0x18>
3a8c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
3a90: 00002de1 .word 0x00002de1
3a94: 00003321 .word 0x00003321
00003a98 <lv_obj_refresh_style>:
{
3a98: b530 push {r4, r5, lr}
3a9a: b083 sub sp, #12
3a9c: 4605 mov r5, r0
3a9e: 460c mov r4, r1
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
3aa0: 4b36 ldr r3, [pc, #216] ; (3b7c <lv_obj_refresh_style+0xe4>)
3aa2: 4798 blx r3
3aa4: b198 cbz r0, 3ace <lv_obj_refresh_style+0x36>
switch(prop) {
3aa6: 2c71 cmp r4, #113 ; 0x71
3aa8: d846 bhi.n 3b38 <lv_obj_refresh_style+0xa0>
3aaa: 2c70 cmp r4, #112 ; 0x70
3aac: d223 bcs.n 3af6 <lv_obj_refresh_style+0x5e>
3aae: 2c41 cmp r4, #65 ; 0x41
3ab0: d81b bhi.n 3aea <lv_obj_refresh_style+0x52>
3ab2: 2c40 cmp r4, #64 ; 0x40
3ab4: d21f bcs.n 3af6 <lv_obj_refresh_style+0x5e>
3ab6: 2c02 cmp r4, #2
3ab8: d305 bcc.n 3ac6 <lv_obj_refresh_style+0x2e>
3aba: 2c07 cmp r4, #7
3abc: d91b bls.n 3af6 <lv_obj_refresh_style+0x5e>
3abe: f1a4 0310 sub.w r3, r4, #16
3ac2: 2b08 cmp r3, #8
3ac4: d917 bls.n 3af6 <lv_obj_refresh_style+0x5e>
lv_obj_invalidate(obj);
3ac6: 4628 mov r0, r5
3ac8: 4b2d ldr r3, [pc, #180] ; (3b80 <lv_obj_refresh_style+0xe8>)
3aca: 4798 blx r3
}
3acc: e02f b.n 3b2e <lv_obj_refresh_style+0x96>
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
3ace: 4b2d ldr r3, [pc, #180] ; (3b84 <lv_obj_refresh_style+0xec>)
3ad0: 9300 str r3, [sp, #0]
3ad2: f240 521d movw r2, #1309 ; 0x51d
3ad6: 492c ldr r1, [pc, #176] ; (3b88 <lv_obj_refresh_style+0xf0>)
3ad8: 2003 movs r0, #3
3ada: 4c2c ldr r4, [pc, #176] ; (3b8c <lv_obj_refresh_style+0xf4>)
3adc: 47a0 blx r4
3ade: 462a mov r2, r5
3ae0: 2300 movs r3, #0
3ae2: 482b ldr r0, [pc, #172] ; (3b90 <lv_obj_refresh_style+0xf8>)
3ae4: 492b ldr r1, [pc, #172] ; (3b94 <lv_obj_refresh_style+0xfc>)
3ae6: 4788 blx r1
3ae8: e7fe b.n 3ae8 <lv_obj_refresh_style+0x50>
switch(prop) {
3aea: 2c53 cmp r4, #83 ; 0x53
3aec: d821 bhi.n 3b32 <lv_obj_refresh_style+0x9a>
3aee: 2c50 cmp r4, #80 ; 0x50
3af0: d201 bcs.n 3af6 <lv_obj_refresh_style+0x5e>
3af2: 2c4c cmp r4, #76 ; 0x4c
3af4: d1e7 bne.n 3ac6 <lv_obj_refresh_style+0x2e>
lv_obj_invalidate(obj);
3af6: 4628 mov r0, r5
3af8: 4b21 ldr r3, [pc, #132] ; (3b80 <lv_obj_refresh_style+0xe8>)
3afa: 4798 blx r3
obj->signal_cb(obj, LV_SIGNAL_STYLE_CHG, NULL);
3afc: 69eb ldr r3, [r5, #28]
3afe: 2200 movs r2, #0
3b00: 2104 movs r1, #4
3b02: 4628 mov r0, r5
3b04: 4798 blx r3
switch(prop) {
3b06: 2c15 cmp r4, #21
3b08: d309 bcc.n 3b1e <lv_obj_refresh_style+0x86>
3b0a: 2c18 cmp r4, #24
3b0c: d901 bls.n 3b12 <lv_obj_refresh_style+0x7a>
3b0e: 2cff cmp r4, #255 ; 0xff
3b10: d105 bne.n 3b1e <lv_obj_refresh_style+0x86>
if(obj->parent) obj->parent->signal_cb(obj->parent, LV_SIGNAL_CHILD_CHG, NULL);
3b12: 6828 ldr r0, [r5, #0]
3b14: b118 cbz r0, 3b1e <lv_obj_refresh_style+0x86>
3b16: 69c3 ldr r3, [r0, #28]
3b18: 2200 movs r2, #0
3b1a: 2101 movs r1, #1
3b1c: 4798 blx r3
lv_obj_invalidate(obj);
3b1e: 4628 mov r0, r5
3b20: 4b17 ldr r3, [pc, #92] ; (3b80 <lv_obj_refresh_style+0xe8>)
3b22: 4798 blx r3
if(prop == LV_STYLE_PROP_ALL || (prop & LV_STYLE_INHERIT_MASK)) refresh_children_style(obj);
3b24: 2cff cmp r4, #255 ; 0xff
3b26: d024 beq.n 3b72 <lv_obj_refresh_style+0xda>
3b28: f414 4f00 tst.w r4, #32768 ; 0x8000
3b2c: d121 bne.n 3b72 <lv_obj_refresh_style+0xda>
}
3b2e: b003 add sp, #12
3b30: bd30 pop {r4, r5, pc}
switch(prop) {
3b32: 2c5c cmp r4, #92 ; 0x5c
3b34: d1c7 bne.n 3ac6 <lv_obj_refresh_style+0x2e>
3b36: e7de b.n 3af6 <lv_obj_refresh_style+0x5e>
3b38: 2c7f cmp r4, #127 ; 0x7f
3b3a: d90c bls.n 3b56 <lv_obj_refresh_style+0xbe>
3b3c: f248 0381 movw r3, #32897 ; 0x8081
3b40: 429c cmp r4, r3
3b42: d811 bhi.n 3b68 <lv_obj_refresh_style+0xd0>
3b44: f248 0380 movw r3, #32896 ; 0x8080
3b48: 429c cmp r4, r3
3b4a: d2d4 bcs.n 3af6 <lv_obj_refresh_style+0x5e>
3b4c: 2c90 cmp r4, #144 ; 0x90
3b4e: d0d2 beq.n 3af6 <lv_obj_refresh_style+0x5e>
3b50: 2cff cmp r4, #255 ; 0xff
3b52: d1b8 bne.n 3ac6 <lv_obj_refresh_style+0x2e>
3b54: e7cf b.n 3af6 <lv_obj_refresh_style+0x5e>
3b56: 2c7e cmp r4, #126 ; 0x7e
3b58: d2cd bcs.n 3af6 <lv_obj_refresh_style+0x5e>
3b5a: 2c73 cmp r4, #115 ; 0x73
3b5c: d3b3 bcc.n 3ac6 <lv_obj_refresh_style+0x2e>
3b5e: 2c75 cmp r4, #117 ; 0x75
3b60: d9c9 bls.n 3af6 <lv_obj_refresh_style+0x5e>
3b62: 2c7c cmp r4, #124 ; 0x7c
3b64: d1af bne.n 3ac6 <lv_obj_refresh_style+0x2e>
3b66: e7c6 b.n 3af6 <lv_obj_refresh_style+0x5e>
3b68: f248 038e movw r3, #32910 ; 0x808e
3b6c: 429c cmp r4, r3
3b6e: d1aa bne.n 3ac6 <lv_obj_refresh_style+0x2e>
3b70: e7c1 b.n 3af6 <lv_obj_refresh_style+0x5e>
if(prop == LV_STYLE_PROP_ALL || (prop & LV_STYLE_INHERIT_MASK)) refresh_children_style(obj);
3b72: 4628 mov r0, r5
3b74: 4b08 ldr r3, [pc, #32] ; (3b98 <lv_obj_refresh_style+0x100>)
3b76: 4798 blx r3
3b78: e7d9 b.n 3b2e <lv_obj_refresh_style+0x96>
3b7a: bf00 nop
3b7c: 000022b1 .word 0x000022b1
3b80: 00003321 .word 0x00003321
3b84: 00024508 .word 0x00024508
3b88: 000247dc .word 0x000247dc
3b8c: 0001225d .word 0x0001225d
3b90: 0002483c .word 0x0002483c
3b94: 000022b9 .word 0x000022b9
3b98: 00003a51 .word 0x00003a51
00003b9c <lv_obj_reset_style_list>:
{
3b9c: b510 push {r4, lr}
3b9e: 4604 mov r4, r0
lv_obj_clean_style_list(obj, part);
3ba0: 4b03 ldr r3, [pc, #12] ; (3bb0 <lv_obj_reset_style_list+0x14>)
3ba2: 4798 blx r3
lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL);
3ba4: 21ff movs r1, #255 ; 0xff
3ba6: 4620 mov r0, r4
3ba8: 4b02 ldr r3, [pc, #8] ; (3bb4 <lv_obj_reset_style_list+0x18>)
3baa: 4798 blx r3
3bac: bd10 pop {r4, pc}
3bae: bf00 nop
3bb0: 000030cd .word 0x000030cd
3bb4: 00003a99 .word 0x00003a99
00003bb8 <report_style_mod_core>:
{
3bb8: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
3bbc: 4604 mov r4, r0
3bbe: 460f mov r7, r1
3bc0: 2600 movs r6, #0
lv_style_list_t * dsc = lv_obj_get_style_list(obj, part_sub);
3bc2: f8df 8088 ldr.w r8, [pc, #136] ; 3c4c <report_style_mod_core+0x94>
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++;
if(list->style_cnt == 0 || id >= list->style_cnt) return NULL;
3bc6: 4635 mov r5, r6
lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL);
3bc8: f8df 9084 ldr.w r9, [pc, #132] ; 3c50 <report_style_mod_core+0x98>
3bcc: e005 b.n 3bda <report_style_mod_core+0x22>
3bce: 21ff movs r1, #255 ; 0xff
3bd0: 4638 mov r0, r7
3bd2: 47c8 blx r9
3bd4: 3601 adds r6, #1
for(part_sub = 0; part_sub != _LV_OBJ_PART_REAL_LAST; part_sub++) {
3bd6: 2e40 cmp r6, #64 ; 0x40
3bd8: d022 beq.n 3c20 <report_style_mod_core+0x68>
lv_style_list_t * dsc = lv_obj_get_style_list(obj, part_sub);
3bda: b2f1 uxtb r1, r6
3bdc: 4638 mov r0, r7
3bde: 47c0 blx r8
if(dsc == NULL) break;
3be0: 4686 mov lr, r0
3be2: b1e8 cbz r0, 3c20 <report_style_mod_core+0x68>
for(ci = 0; ci < dsc->style_cnt; ci++) {
3be4: 7901 ldrb r1, [r0, #4]
3be6: 2900 cmp r1, #0
3be8: d0f4 beq.n 3bd4 <report_style_mod_core+0x1c>
if(list->has_trans && list->skip_trans) id++;
3bea: f890 c005 ldrb.w ip, [r0, #5]
3bee: f00c 0c06 and.w ip, ip, #6
3bf2: 2300 movs r3, #0
3bf4: b2da uxtb r2, r3
3bf6: f1bc 0f06 cmp.w ip, #6
3bfa: bf04 itt eq
3bfc: 3201 addeq r2, #1
3bfe: b2d2 uxtbeq r2, r2
if(list->style_cnt == 0 || id >= list->style_cnt) return NULL;
3c00: 428a cmp r2, r1
return list->style_list[id];
3c02: bf3a itte cc
3c04: f8de 0000 ldrcc.w r0, [lr]
3c08: f850 2022 ldrcc.w r2, [r0, r2, lsl #2]
if(list->style_cnt == 0 || id >= list->style_cnt) return NULL;
3c0c: 462a movcs r2, r5
if(class == style || style == NULL) {
3c0e: 4294 cmp r4, r2
3c10: d0dd beq.n 3bce <report_style_mod_core+0x16>
3c12: 2c00 cmp r4, #0
3c14: d0db beq.n 3bce <report_style_mod_core+0x16>
3c16: 3301 adds r3, #1
for(ci = 0; ci < dsc->style_cnt; ci++) {
3c18: b2da uxtb r2, r3
3c1a: 428a cmp r2, r1
3c1c: d3ea bcc.n 3bf4 <report_style_mod_core+0x3c>
3c1e: e7d9 b.n 3bd4 <report_style_mod_core+0x1c>
lv_obj_t * child = lv_obj_get_child(obj, NULL);
3c20: 2100 movs r1, #0
3c22: 4638 mov r0, r7
3c24: 4b08 ldr r3, [pc, #32] ; (3c48 <report_style_mod_core+0x90>)
3c26: 4798 blx r3
while(child) {
3c28: 4605 mov r5, r0
3c2a: b150 cbz r0, 3c42 <report_style_mod_core+0x8a>
child = lv_obj_get_child(obj, child);
3c2c: 4e06 ldr r6, [pc, #24] ; (3c48 <report_style_mod_core+0x90>)
report_style_mod_core(style, child);
3c2e: 4629 mov r1, r5
3c30: 4620 mov r0, r4
3c32: f7ff ffc1 bl 3bb8 <report_style_mod_core>
child = lv_obj_get_child(obj, child);
3c36: 4629 mov r1, r5
3c38: 4638 mov r0, r7
3c3a: 47b0 blx r6
while(child) {
3c3c: 4605 mov r5, r0
3c3e: 2800 cmp r0, #0
3c40: d1f5 bne.n 3c2e <report_style_mod_core+0x76>
3c42: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
3c46: bf00 nop
3c48: 00002de1 .word 0x00002de1
3c4c: 00002ffd .word 0x00002ffd
3c50: 00003a99 .word 0x00003a99
00003c54 <lv_obj_report_style_mod>:
{
3c54: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
3c58: 4680 mov r8, r0
lv_disp_t * d = lv_disp_get_next(NULL);
3c5a: 2000 movs r0, #0
3c5c: 4b0f ldr r3, [pc, #60] ; (3c9c <lv_obj_report_style_mod+0x48>)
3c5e: 4798 blx r3
while(d) {
3c60: b1c8 cbz r0, 3c96 <lv_obj_report_style_mod+0x42>
3c62: 4681 mov r9, r0
_LV_LL_READ(d->scr_ll, i) {
3c64: f8df a040 ldr.w sl, [pc, #64] ; 3ca8 <lv_obj_report_style_mod+0x54>
report_style_mod_core(style, i);
3c68: 4f0d ldr r7, [pc, #52] ; (3ca0 <lv_obj_report_style_mod+0x4c>)
_LV_LL_READ(d->scr_ll, i) {
3c6a: 4e0e ldr r6, [pc, #56] ; (3ca4 <lv_obj_report_style_mod+0x50>)
3c6c: f109 0530 add.w r5, r9, #48 ; 0x30
3c70: 4628 mov r0, r5
3c72: 47d0 blx sl
3c74: 4604 mov r4, r0
3c76: b140 cbz r0, 3c8a <lv_obj_report_style_mod+0x36>
report_style_mod_core(style, i);
3c78: 4621 mov r1, r4
3c7a: 4640 mov r0, r8
3c7c: 47b8 blx r7
_LV_LL_READ(d->scr_ll, i) {
3c7e: 4621 mov r1, r4
3c80: 4628 mov r0, r5
3c82: 47b0 blx r6
3c84: 4604 mov r4, r0
3c86: 2800 cmp r0, #0
3c88: d1f6 bne.n 3c78 <lv_obj_report_style_mod+0x24>
d = lv_disp_get_next(d);
3c8a: 4648 mov r0, r9
3c8c: 4b03 ldr r3, [pc, #12] ; (3c9c <lv_obj_report_style_mod+0x48>)
3c8e: 4798 blx r3
while(d) {
3c90: 4681 mov r9, r0
3c92: 2800 cmp r0, #0
3c94: d1ea bne.n 3c6c <lv_obj_report_style_mod+0x18>
3c96: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
3c9a: bf00 nop
3c9c: 00010fb9 .word 0x00010fb9
3ca0: 00003bb9 .word 0x00003bb9
3ca4: 00011fbd .word 0x00011fbd
3ca8: 00011fa9 .word 0x00011fa9
00003cac <trans_anim_cb>:
{
3cac: b5f8 push {r3, r4, r5, r6, r7, lr}
3cae: 4604 mov r4, r0
3cb0: 460d mov r5, r1
lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part);
3cb2: 7981 ldrb r1, [r0, #6]
3cb4: 6800 ldr r0, [r0, #0]
3cb6: 4b42 ldr r3, [pc, #264] ; (3dc0 <trans_anim_cb+0x114>)
3cb8: 4798 blx r3
lv_style_t * style = _lv_style_list_get_transition_style(list);
3cba: 4b42 ldr r3, [pc, #264] ; (3dc4 <trans_anim_cb+0x118>)
3cbc: 4798 blx r3
if((tr->prop & 0xF) < LV_STYLE_ID_COLOR) { /*Value*/
3cbe: 88a1 ldrh r1, [r4, #4]
3cc0: f001 030f and.w r3, r1, #15
3cc4: 2b08 cmp r3, #8
3cc6: dc19 bgt.n 3cfc <trans_anim_cb+0x50>
if(v == 0) x = tr->start_value._int;
3cc8: b945 cbnz r5, 3cdc <trans_anim_cb+0x30>
3cca: f9b4 2008 ldrsh.w r2, [r4, #8]
_lv_style_set_int(style, tr->prop, x);
3cce: 4b3e ldr r3, [pc, #248] ; (3dc8 <trans_anim_cb+0x11c>)
3cd0: 4798 blx r3
lv_obj_refresh_style(tr->obj, tr->prop);
3cd2: 88a1 ldrh r1, [r4, #4]
3cd4: 6820 ldr r0, [r4, #0]
3cd6: 4b3d ldr r3, [pc, #244] ; (3dcc <trans_anim_cb+0x120>)
3cd8: 4798 blx r3
3cda: bdf8 pop {r3, r4, r5, r6, r7, pc}
else if(v == 255) x = tr->end_value._int;
3cdc: 2dff cmp r5, #255 ; 0xff
3cde: d00a beq.n 3cf6 <trans_anim_cb+0x4a>
else x = tr->start_value._int + ((int32_t)((int32_t)(tr->end_value._int - tr->start_value._int) * v) >> 8);
3ce0: f9b4 2008 ldrsh.w r2, [r4, #8]
3ce4: f9b4 300c ldrsh.w r3, [r4, #12]
3ce8: 1a9b subs r3, r3, r2
3cea: fb05 f503 mul.w r5, r5, r3
3cee: eb02 2225 add.w r2, r2, r5, asr #8
3cf2: b212 sxth r2, r2
3cf4: e7eb b.n 3cce <trans_anim_cb+0x22>
else if(v == 255) x = tr->end_value._int;
3cf6: f9b4 200c ldrsh.w r2, [r4, #12]
3cfa: e7e8 b.n 3cce <trans_anim_cb+0x22>
else if((tr->prop & 0xF) < LV_STYLE_ID_OPA) { /*Color*/
3cfc: 2b0b cmp r3, #11
3cfe: dc43 bgt.n 3d88 <trans_anim_cb+0xdc>
if(v <= 0) x = tr->start_value._color;
3d00: 2d00 cmp r5, #0
3d02: dd05 ble.n 3d10 <trans_anim_cb+0x64>
else if(v >= 255) x = tr->end_value._color;
3d04: 2dfe cmp r5, #254 ; 0xfe
3d06: dd05 ble.n 3d14 <trans_anim_cb+0x68>
3d08: 89a2 ldrh r2, [r4, #12]
_lv_style_set_color(style, tr->prop, x);
3d0a: 4b31 ldr r3, [pc, #196] ; (3dd0 <trans_anim_cb+0x124>)
3d0c: 4798 blx r3
3d0e: e7e0 b.n 3cd2 <trans_anim_cb+0x26>
if(v <= 0) x = tr->start_value._color;
3d10: 8922 ldrh r2, [r4, #8]
3d12: e7fa b.n 3d0a <trans_anim_cb+0x5e>
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)));
3d14: b2ed uxtb r5, r5
3d16: f1c5 02ff rsb r2, r5, #255 ; 0xff
3d1a: 7b63 ldrb r3, [r4, #13]
3d1c: 08db lsrs r3, r3, #3
3d1e: 7a66 ldrb r6, [r4, #9]
3d20: 08f6 lsrs r6, r6, #3
3d22: fb02 f606 mul.w r6, r2, r6
3d26: fb05 6303 mla r3, r5, r3, r6
3d2a: eb03 2703 add.w r7, r3, r3, lsl #8
3d2e: eb03 13c7 add.w r3, r3, r7, lsl #7
3d32: f3c3 57c4 ubfx r7, r3, #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)));
3d36: 89a3 ldrh r3, [r4, #12]
3d38: f3c3 1345 ubfx r3, r3, #5, #6
3d3c: 8926 ldrh r6, [r4, #8]
3d3e: f3c6 1645 ubfx r6, r6, #5, #6
3d42: fb02 f606 mul.w r6, r2, r6
3d46: fb05 6303 mla r3, r5, r3, r6
3d4a: eb03 2603 add.w r6, r3, r3, lsl #8
3d4e: eb03 13c6 add.w r3, r3, r6, lsl #7
3d52: f3c3 56c5 ubfx r6, r3, #23, #6
LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix)));
3d56: 7b23 ldrb r3, [r4, #12]
3d58: f003 031f and.w r3, r3, #31
3d5c: f894 e008 ldrb.w lr, [r4, #8]
3d60: f00e 0e1f and.w lr, lr, #31
3d64: fb02 f20e mul.w r2, r2, lr
3d68: fb05 2503 mla r5, r5, r3, r2
3d6c: eb05 2305 add.w r3, r5, r5, lsl #8
3d70: eb05 15c3 add.w r5, r5, r3, lsl #7
3d74: 0ded lsrs r5, r5, #23
3d76: f04f 0200 mov.w r2, #0
3d7a: f365 0204 bfi r2, r5, #0, #5
3d7e: f366 124a bfi r2, r6, #5, #6
3d82: f367 22cf bfi r2, r7, #11, #5
3d86: e7c0 b.n 3d0a <trans_anim_cb+0x5e>
else if((tr->prop & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/
3d88: 2b0d cmp r3, #13
3d8a: dc12 bgt.n 3db2 <trans_anim_cb+0x106>
if(v <= 0) x = tr->start_value._opa;
3d8c: 2d00 cmp r5, #0
3d8e: dd05 ble.n 3d9c <trans_anim_cb+0xf0>
else if(v >= 255) x = tr->end_value._opa;
3d90: 2dfe cmp r5, #254 ; 0xfe
3d92: dd05 ble.n 3da0 <trans_anim_cb+0xf4>
3d94: 7b22 ldrb r2, [r4, #12]
_lv_style_set_opa(style, tr->prop, x);
3d96: 4b0f ldr r3, [pc, #60] ; (3dd4 <trans_anim_cb+0x128>)
3d98: 4798 blx r3
3d9a: e79a b.n 3cd2 <trans_anim_cb+0x26>
if(v <= 0) x = tr->start_value._opa;
3d9c: 7a22 ldrb r2, [r4, #8]
3d9e: e7fa b.n 3d96 <trans_anim_cb+0xea>
else x = tr->start_value._opa + (((tr->end_value._opa - tr->start_value._opa) * v) >> 8);
3da0: 7a22 ldrb r2, [r4, #8]
3da2: 7b23 ldrb r3, [r4, #12]
3da4: 1a9b subs r3, r3, r2
3da6: fb05 f503 mul.w r5, r5, r3
3daa: eb02 2225 add.w r2, r2, r5, asr #8
3dae: b2d2 uxtb r2, r2
3db0: e7f1 b.n 3d96 <trans_anim_cb+0xea>
if(v < 128) x = tr->start_value._ptr;
3db2: 2d7f cmp r5, #127 ; 0x7f
3db4: bfd4 ite le
3db6: 68a2 ldrle r2, [r4, #8]
else x = tr->end_value._ptr;
3db8: 68e2 ldrgt r2, [r4, #12]
_lv_style_set_ptr(style, tr->prop, x);
3dba: 4b07 ldr r3, [pc, #28] ; (3dd8 <trans_anim_cb+0x12c>)
3dbc: 4798 blx r3
3dbe: e788 b.n 3cd2 <trans_anim_cb+0x26>
3dc0: 00002ffd .word 0x00002ffd
3dc4: 000070e7 .word 0x000070e7
3dc8: 000068e1 .word 0x000068e1
3dcc: 00003a99 .word 0x00003a99
3dd0: 00006a25 .word 0x00006a25
3dd4: 00006b69 .word 0x00006b69
3dd8: 00006c99 .word 0x00006c99
00003ddc <lv_obj_get_base_dir>:
{
3ddc: b530 push {r4, r5, lr}
3dde: b083 sub sp, #12
3de0: 4604 mov r4, r0
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
3de2: 4b0a ldr r3, [pc, #40] ; (3e0c <lv_obj_get_base_dir+0x30>)
3de4: 4798 blx r3
3de6: b110 cbz r0, 3dee <lv_obj_get_base_dir+0x12>
}
3de8: 2000 movs r0, #0
3dea: b003 add sp, #12
3dec: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
3dee: 4b08 ldr r3, [pc, #32] ; (3e10 <lv_obj_get_base_dir+0x34>)
3df0: 9300 str r3, [sp, #0]
3df2: f640 22b1 movw r2, #2737 ; 0xab1
3df6: 4907 ldr r1, [pc, #28] ; (3e14 <lv_obj_get_base_dir+0x38>)
3df8: 2003 movs r0, #3
3dfa: 4d07 ldr r5, [pc, #28] ; (3e18 <lv_obj_get_base_dir+0x3c>)
3dfc: 47a8 blx r5
3dfe: 4622 mov r2, r4
3e00: 2300 movs r3, #0
3e02: 4806 ldr r0, [pc, #24] ; (3e1c <lv_obj_get_base_dir+0x40>)
3e04: 4906 ldr r1, [pc, #24] ; (3e20 <lv_obj_get_base_dir+0x44>)
3e06: 4788 blx r1
3e08: e7fe b.n 3e08 <lv_obj_get_base_dir+0x2c>
3e0a: bf00 nop
3e0c: 000022b1 .word 0x000022b1
3e10: 000245d8 .word 0x000245d8
3e14: 000247dc .word 0x000247dc
3e18: 0001225d .word 0x0001225d
3e1c: 0002483c .word 0x0002483c
3e20: 000022b9 .word 0x000022b9
00003e24 <lv_obj_create>:
{
3e24: b5f0 push {r4, r5, r6, r7, lr}
3e26: b083 sub sp, #12
3e28: 460d mov r5, r1
if(parent == NULL) {
3e2a: 4606 mov r6, r0
3e2c: b188 cbz r0, 3e52 <lv_obj_create+0x2e>
LV_ASSERT_OBJ(parent, LV_OBJX_NAME);
3e2e: 4b9d ldr r3, [pc, #628] ; (40a4 <lv_obj_create+0x280>)
3e30: 4798 blx r3
3e32: 2800 cmp r0, #0
3e34: f040 8164 bne.w 4100 <lv_obj_create+0x2dc>
3e38: 4b9b ldr r3, [pc, #620] ; (40a8 <lv_obj_create+0x284>)
3e3a: 9300 str r3, [sp, #0]
3e3c: 22ed movs r2, #237 ; 0xed
3e3e: 499b ldr r1, [pc, #620] ; (40ac <lv_obj_create+0x288>)
3e40: 2003 movs r0, #3
3e42: 4c9b ldr r4, [pc, #620] ; (40b0 <lv_obj_create+0x28c>)
3e44: 47a0 blx r4
3e46: 4632 mov r2, r6
3e48: 2300 movs r3, #0
3e4a: 489a ldr r0, [pc, #616] ; (40b4 <lv_obj_create+0x290>)
3e4c: 499a ldr r1, [pc, #616] ; (40b8 <lv_obj_create+0x294>)
3e4e: 4788 blx r1
3e50: e7fe b.n 3e50 <lv_obj_create+0x2c>
lv_disp_t * disp = lv_disp_get_default();
3e52: 4b9a ldr r3, [pc, #616] ; (40bc <lv_obj_create+0x298>)
3e54: 4798 blx r3
if(!disp) {
3e56: b948 cbnz r0, 3e6c <lv_obj_create+0x48>
LV_LOG_WARN("lv_obj_create: not display created to so far. No place to assign the new screen");
3e58: 4b99 ldr r3, [pc, #612] ; (40c0 <lv_obj_create+0x29c>)
3e5a: 9300 str r3, [sp, #0]
3e5c: 4b92 ldr r3, [pc, #584] ; (40a8 <lv_obj_create+0x284>)
3e5e: 22cf movs r2, #207 ; 0xcf
3e60: 4992 ldr r1, [pc, #584] ; (40ac <lv_obj_create+0x288>)
3e62: 2002 movs r0, #2
3e64: 4c92 ldr r4, [pc, #584] ; (40b0 <lv_obj_create+0x28c>)
3e66: 47a0 blx r4
return NULL;
3e68: 4634 mov r4, r6
3e6a: e1f5 b.n 4258 <lv_obj_create+0x434>
new_obj = _lv_ll_ins_head(&disp->scr_ll);
3e6c: 3030 adds r0, #48 ; 0x30
3e6e: 4b95 ldr r3, [pc, #596] ; (40c4 <lv_obj_create+0x2a0>)
3e70: 4798 blx r3
3e72: 4604 mov r4, r0
LV_ASSERT_MEM(new_obj);
3e74: 4b8b ldr r3, [pc, #556] ; (40a4 <lv_obj_create+0x280>)
3e76: 4798 blx r3
3e78: b960 cbnz r0, 3e94 <lv_obj_create+0x70>
3e7a: 4b8b ldr r3, [pc, #556] ; (40a8 <lv_obj_create+0x284>)
3e7c: 9300 str r3, [sp, #0]
3e7e: 22d4 movs r2, #212 ; 0xd4
3e80: 498a ldr r1, [pc, #552] ; (40ac <lv_obj_create+0x288>)
3e82: 2003 movs r0, #3
3e84: 4d8a ldr r5, [pc, #552] ; (40b0 <lv_obj_create+0x28c>)
3e86: 47a8 blx r5
3e88: 4622 mov r2, r4
3e8a: 2300 movs r3, #0
3e8c: 488e ldr r0, [pc, #568] ; (40c8 <lv_obj_create+0x2a4>)
3e8e: 498a ldr r1, [pc, #552] ; (40b8 <lv_obj_create+0x294>)
3e90: 4788 blx r1
3e92: e7fe b.n 3e92 <lv_obj_create+0x6e>
if(new_obj == NULL) return NULL;
3e94: 2c00 cmp r4, #0
3e96: f000 81df beq.w 4258 <lv_obj_create+0x434>
_lv_memset_00(new_obj, sizeof(lv_obj_t));
3e9a: 214c movs r1, #76 ; 0x4c
3e9c: 4620 mov r0, r4
3e9e: 4b8b ldr r3, [pc, #556] ; (40cc <lv_obj_create+0x2a8>)
3ea0: 4798 blx r3
new_obj->base_dir = LV_BIDI_DIR_LTR;
3ea2: f894 3035 ldrb.w r3, [r4, #53] ; 0x35
3ea6: f36f 1305 bfc r3, #4, #2
3eaa: f884 3035 strb.w r3, [r4, #53] ; 0x35
new_obj->signal_cb = lv_obj_signal;
3eae: 4b88 ldr r3, [pc, #544] ; (40d0 <lv_obj_create+0x2ac>)
3eb0: 61e3 str r3, [r4, #28]
new_obj->design_cb = lv_obj_design;
3eb2: 4b88 ldr r3, [pc, #544] ; (40d4 <lv_obj_create+0x2b0>)
3eb4: 6223 str r3, [r4, #32]
new_obj->event_cb = NULL;
3eb6: 2700 movs r7, #0
3eb8: 61a7 str r7, [r4, #24]
new_obj->coords.x1 = 0;
3eba: 8227 strh r7, [r4, #16]
new_obj->coords.y1 = 0;
3ebc: 8267 strh r7, [r4, #18]
new_obj->coords.x2 = lv_disp_get_hor_res(NULL) - 1;
3ebe: 4638 mov r0, r7
3ec0: 4b85 ldr r3, [pc, #532] ; (40d8 <lv_obj_create+0x2b4>)
3ec2: 4798 blx r3
3ec4: 3801 subs r0, #1
3ec6: 82a0 strh r0, [r4, #20]
new_obj->coords.y2 = lv_disp_get_ver_res(NULL) - 1;
3ec8: 4638 mov r0, r7
3eca: 4b84 ldr r3, [pc, #528] ; (40dc <lv_obj_create+0x2b8>)
3ecc: 4798 blx r3
3ece: 3801 subs r0, #1
3ed0: 82e0 strh r0, [r4, #22]
_lv_ll_init(&(new_obj->child_ll), sizeof(lv_obj_t));
3ed2: 214c movs r1, #76 ; 0x4c
3ed4: 1d20 adds r0, r4, #4
3ed6: 4b82 ldr r3, [pc, #520] ; (40e0 <lv_obj_create+0x2bc>)
3ed8: 4798 blx r3
new_obj->ext_draw_pad = 0;
3eda: 2300 movs r3, #0
3edc: 8663 strh r3, [r4, #50] ; 0x32
new_obj->ext_click_pad_hor = 0;
3ede: f884 3030 strb.w r3, [r4, #48] ; 0x30
new_obj->ext_click_pad_ver = 0;
3ee2: f884 3031 strb.w r3, [r4, #49] ; 0x31
new_obj->realign.align = LV_ALIGN_CENTER;
3ee6: f884 3048 strb.w r3, [r4, #72] ; 0x48
new_obj->realign.xofs = 0;
3eea: f8a4 3044 strh.w r3, [r4, #68] ; 0x44
new_obj->realign.yofs = 0;
3eee: f8a4 3046 strh.w r3, [r4, #70] ; 0x46
new_obj->realign.base = NULL;
3ef2: 6423 str r3, [r4, #64] ; 0x40
new_obj->realign.auto_realign = 0;
3ef4: f894 2049 ldrb.w r2, [r4, #73] ; 0x49
3ef8: f363 0200 bfi r2, r3, #0, #1
3efc: f884 2049 strb.w r2, [r4, #73] ; 0x49
new_obj->group_p = NULL;
3f00: 63a3 str r3, [r4, #56] ; 0x38
new_obj->adv_hittest = 0;
3f02: f894 2034 ldrb.w r2, [r4, #52] ; 0x34
new_obj->click = 1;
3f06: f002 027f and.w r2, r2, #127 ; 0x7f
new_obj->drag = 0;
3f0a: f042 0201 orr.w r2, r2, #1
new_obj->drag_dir = LV_DRAG_DIR_BOTH;
3f0e: f894 1035 ldrb.w r1, [r4, #53] ; 0x35
3f12: 2003 movs r0, #3
3f14: f360 0143 bfi r1, r0, #1, #3
new_obj->protect = LV_PROTECT_NONE;
3f18: f884 303c strb.w r3, [r4, #60] ; 0x3c
new_obj->parent_event = 0;
3f1c: f002 02c1 and.w r2, r2, #193 ; 0xc1
3f20: f363 1286 bfi r2, r3, #6, #1
3f24: f884 2034 strb.w r2, [r4, #52] ; 0x34
new_obj->gesture_parent = 1;
3f28: f041 0101 orr.w r1, r1, #1
3f2c: f884 1035 strb.w r1, [r4, #53] ; 0x35
new_obj->state = LV_STATE_DEFAULT;
3f30: f884 303d strb.w r3, [r4, #61] ; 0x3d
new_obj->ext_attr = NULL;
3f34: 6263 str r3, [r4, #36] ; 0x24
lv_style_list_init(&new_obj->style_list);
3f36: f104 0728 add.w r7, r4, #40 ; 0x28
3f3a: 4638 mov r0, r7
3f3c: 4b69 ldr r3, [pc, #420] ; (40e4 <lv_obj_create+0x2c0>)
3f3e: 4798 blx r3
if(copy == NULL) {
3f40: 2d00 cmp r5, #0
3f42: f000 816c beq.w 421e <lv_obj_create+0x3fa>
lv_style_list_copy(&new_obj->style_list, &copy->style_list);
3f46: f105 0128 add.w r1, r5, #40 ; 0x28
3f4a: 4638 mov r0, r7
3f4c: 4b66 ldr r3, [pc, #408] ; (40e8 <lv_obj_create+0x2c4>)
3f4e: 4798 blx r3
3f50: f105 020f add.w r2, r5, #15
3f54: f104 0118 add.w r1, r4, #24
uint8_t * d8 = (uint8_t *)dst;
3f58: f104 0310 add.w r3, r4, #16
*d8 = *s8;
3f5c: f812 0f01 ldrb.w r0, [r2, #1]!
3f60: f803 0b01 strb.w r0, [r3], #1
while(len) {
3f64: 428b cmp r3, r1
3f66: d1f9 bne.n 3f5c <lv_obj_create+0x138>
new_obj->ext_draw_pad = copy->ext_draw_pad;
3f68: f9b5 3032 ldrsh.w r3, [r5, #50] ; 0x32
3f6c: 8663 strh r3, [r4, #50] ; 0x32
new_obj->ext_click_pad_hor = copy->ext_click_pad_hor;
3f6e: f895 3030 ldrb.w r3, [r5, #48] ; 0x30
3f72: f884 3030 strb.w r3, [r4, #48] ; 0x30
new_obj->ext_click_pad_ver = copy->ext_click_pad_ver;
3f76: f895 3031 ldrb.w r3, [r5, #49] ; 0x31
3f7a: f884 3031 strb.w r3, [r4, #49] ; 0x31
new_obj->realign.align = copy->realign.align;
3f7e: f895 3048 ldrb.w r3, [r5, #72] ; 0x48
3f82: f884 3048 strb.w r3, [r4, #72] ; 0x48
new_obj->realign.xofs = copy->realign.xofs;
3f86: f9b5 3044 ldrsh.w r3, [r5, #68] ; 0x44
3f8a: f8a4 3044 strh.w r3, [r4, #68] ; 0x44
new_obj->realign.yofs = copy->realign.yofs;
3f8e: f9b5 3046 ldrsh.w r3, [r5, #70] ; 0x46
3f92: f8a4 3046 strh.w r3, [r4, #70] ; 0x46
new_obj->realign.base = copy->realign.base;
3f96: 6c2b ldr r3, [r5, #64] ; 0x40
3f98: 6423 str r3, [r4, #64] ; 0x40
new_obj->realign.auto_realign = copy->realign.auto_realign;
3f9a: f895 2049 ldrb.w r2, [r5, #73] ; 0x49
3f9e: f894 3049 ldrb.w r3, [r4, #73] ; 0x49
3fa2: f362 0300 bfi r3, r2, #0, #1
3fa6: f884 3049 strb.w r3, [r4, #73] ; 0x49
new_obj->event_cb = copy->event_cb;
3faa: 69ab ldr r3, [r5, #24]
3fac: 61a3 str r3, [r4, #24]
new_obj->adv_hittest = copy->adv_hittest;
3fae: f895 3034 ldrb.w r3, [r5, #52] ; 0x34
3fb2: 09db lsrs r3, r3, #7
3fb4: f894 2034 ldrb.w r2, [r4, #52] ; 0x34
3fb8: f363 12c7 bfi r2, r3, #7, #1
3fbc: f884 2034 strb.w r2, [r4, #52] ; 0x34
new_obj->click = copy->click;
3fc0: f895 2034 ldrb.w r2, [r5, #52] ; 0x34
3fc4: f894 3034 ldrb.w r3, [r4, #52] ; 0x34
3fc8: f362 0300 bfi r3, r2, #0, #1
3fcc: f884 3034 strb.w r3, [r4, #52] ; 0x34
new_obj->drag = copy->drag;
3fd0: f895 3034 ldrb.w r3, [r5, #52] ; 0x34
3fd4: f3c3 0340 ubfx r3, r3, #1, #1
3fd8: f894 2034 ldrb.w r2, [r4, #52] ; 0x34
3fdc: f363 0241 bfi r2, r3, #1, #1
3fe0: f884 2034 strb.w r2, [r4, #52] ; 0x34
new_obj->drag_dir = copy->drag_dir;
3fe4: f895 3035 ldrb.w r3, [r5, #53] ; 0x35
3fe8: f3c3 0342 ubfx r3, r3, #1, #3
3fec: f894 2035 ldrb.w r2, [r4, #53] ; 0x35
3ff0: f363 0243 bfi r2, r3, #1, #3
3ff4: f884 2035 strb.w r2, [r4, #53] ; 0x35
new_obj->drag_throw = copy->drag_throw;
3ff8: f895 3034 ldrb.w r3, [r5, #52] ; 0x34
3ffc: f3c3 0380 ubfx r3, r3, #2, #1
4000: f894 2034 ldrb.w r2, [r4, #52] ; 0x34
4004: f363 0282 bfi r2, r3, #2, #1
4008: f884 2034 strb.w r2, [r4, #52] ; 0x34
new_obj->drag_parent = copy->drag_parent;
400c: f895 3034 ldrb.w r3, [r5, #52] ; 0x34
4010: f3c3 03c0 ubfx r3, r3, #3, #1
4014: b2d2 uxtb r2, r2
4016: f363 02c3 bfi r2, r3, #3, #1
401a: f884 2034 strb.w r2, [r4, #52] ; 0x34
new_obj->hidden = copy->hidden;
401e: f895 3034 ldrb.w r3, [r5, #52] ; 0x34
4022: f3c3 1300 ubfx r3, r3, #4, #1
4026: b2d2 uxtb r2, r2
4028: f363 1204 bfi r2, r3, #4, #1
402c: f884 2034 strb.w r2, [r4, #52] ; 0x34
new_obj->top = copy->top;
4030: f895 3034 ldrb.w r3, [r5, #52] ; 0x34
4034: f3c3 1340 ubfx r3, r3, #5, #1
4038: b2d2 uxtb r2, r2
403a: f363 1245 bfi r2, r3, #5, #1
403e: f884 2034 strb.w r2, [r4, #52] ; 0x34
new_obj->parent_event = copy->parent_event;
4042: f895 3034 ldrb.w r3, [r5, #52] ; 0x34
4046: f3c3 1380 ubfx r3, r3, #6, #1
404a: b2d2 uxtb r2, r2
404c: f363 1286 bfi r2, r3, #6, #1
4050: f884 2034 strb.w r2, [r4, #52] ; 0x34
new_obj->protect = copy->protect;
4054: f895 303c ldrb.w r3, [r5, #60] ; 0x3c
4058: f884 303c strb.w r3, [r4, #60] ; 0x3c
new_obj->gesture_parent = copy->gesture_parent;
405c: f895 2035 ldrb.w r2, [r5, #53] ; 0x35
4060: f894 3035 ldrb.w r3, [r4, #53] ; 0x35
4064: f362 0300 bfi r3, r2, #0, #1
4068: f884 3035 strb.w r3, [r4, #53] ; 0x35
if(copy->group_p != NULL) {
406c: 6ba8 ldr r0, [r5, #56] ; 0x38
406e: b110 cbz r0, 4076 <lv_obj_create+0x252>
lv_group_add_obj(copy->group_p, new_obj);
4070: 4621 mov r1, r4
4072: 4b1e ldr r3, [pc, #120] ; (40ec <lv_obj_create+0x2c8>)
4074: 4798 blx r3
if(lv_obj_get_parent(copy) != NULL && parent != NULL) {
4076: 4628 mov r0, r5
4078: 4b1d ldr r3, [pc, #116] ; (40f0 <lv_obj_create+0x2cc>)
407a: 4798 blx r3
407c: 2800 cmp r0, #0
407e: f000 80d9 beq.w 4234 <lv_obj_create+0x410>
4082: 2e00 cmp r6, #0
4084: f000 80df beq.w 4246 <lv_obj_create+0x422>
lv_obj_set_pos(new_obj, lv_obj_get_x(copy), lv_obj_get_y(copy));
4088: 4628 mov r0, r5
408a: 4b1a ldr r3, [pc, #104] ; (40f4 <lv_obj_create+0x2d0>)
408c: 4798 blx r3
408e: 4607 mov r7, r0
4090: 4628 mov r0, r5
4092: 4b19 ldr r3, [pc, #100] ; (40f8 <lv_obj_create+0x2d4>)
4094: 4798 blx r3
4096: 4602 mov r2, r0
4098: 4639 mov r1, r7
409a: 4620 mov r0, r4
409c: 4b17 ldr r3, [pc, #92] ; (40fc <lv_obj_create+0x2d8>)
409e: 4798 blx r3
40a0: e0c9 b.n 4236 <lv_obj_create+0x412>
40a2: bf00 nop
40a4: 000022b1 .word 0x000022b1
40a8: 000245ec .word 0x000245ec
40ac: 000247dc .word 0x000247dc
40b0: 0001225d .word 0x0001225d
40b4: 0002483c .word 0x0002483c
40b8: 000022b9 .word 0x000022b9
40bc: 00010ee1 .word 0x00010ee1
40c0: 00024938 .word 0x00024938
40c4: 00011f11 .word 0x00011f11
40c8: 00023fd8 .word 0x00023fd8
40cc: 00012b37 .word 0x00012b37
40d0: 00005a05 .word 0x00005a05
40d4: 00005429 .word 0x00005429
40d8: 00010eed .word 0x00010eed
40dc: 00010f15 .word 0x00010f15
40e0: 00011ef9 .word 0x00011ef9
40e4: 000064e9 .word 0x000064e9
40e8: 00007169 .word 0x00007169
40ec: 0000259d .word 0x0000259d
40f0: 00002c7d .word 0x00002c7d
40f4: 00002e9d .word 0x00002e9d
40f8: 00002efd .word 0x00002efd
40fc: 0000343d .word 0x0000343d
new_obj = _lv_ll_ins_head(&parent->child_ll);
4100: 1d30 adds r0, r6, #4
4102: 4b57 ldr r3, [pc, #348] ; (4260 <lv_obj_create+0x43c>)
4104: 4798 blx r3
4106: 4604 mov r4, r0
LV_ASSERT_MEM(new_obj);
4108: 4b56 ldr r3, [pc, #344] ; (4264 <lv_obj_create+0x440>)
410a: 4798 blx r3
410c: 2800 cmp r0, #0
410e: d047 beq.n 41a0 <lv_obj_create+0x37c>
if(new_obj == NULL) return NULL;
4110: 2c00 cmp r4, #0
4112: f000 80a1 beq.w 4258 <lv_obj_create+0x434>
_lv_memset_00(new_obj, sizeof(lv_obj_t));
4116: 214c movs r1, #76 ; 0x4c
4118: 4620 mov r0, r4
411a: 4b53 ldr r3, [pc, #332] ; (4268 <lv_obj_create+0x444>)
411c: 4798 blx r3
new_obj->parent = parent;
411e: 6026 str r6, [r4, #0]
new_obj->base_dir = LV_BIDI_DIR_LTR;
4120: f894 3035 ldrb.w r3, [r4, #53] ; 0x35
4124: f36f 1305 bfc r3, #4, #2
4128: f884 3035 strb.w r3, [r4, #53] ; 0x35
new_obj->signal_cb = lv_obj_signal;
412c: 4b4f ldr r3, [pc, #316] ; (426c <lv_obj_create+0x448>)
412e: 61e3 str r3, [r4, #28]
new_obj->design_cb = lv_obj_design;
4130: 4b4f ldr r3, [pc, #316] ; (4270 <lv_obj_create+0x44c>)
4132: 6223 str r3, [r4, #32]
new_obj->event_cb = NULL;
4134: 2000 movs r0, #0
4136: 61a0 str r0, [r4, #24]
new_obj->coords.y1 = parent->coords.y1;
4138: f9b6 3012 ldrsh.w r3, [r6, #18]
413c: 8263 strh r3, [r4, #18]
new_obj->coords.y2 = parent->coords.y1 + LV_OBJ_DEF_HEIGHT;
413e: 8a77 ldrh r7, [r6, #18]
4140: 4b4c ldr r3, [pc, #304] ; (4274 <lv_obj_create+0x450>)
4142: 4798 blx r3
4144: 2332 movs r3, #50 ; 0x32
4146: fb03 f300 mul.w r3, r3, r0
414a: 3350 adds r3, #80 ; 0x50
414c: f5b3 7fa0 cmp.w r3, #320 ; 0x140
4150: da33 bge.n 41ba <lv_obj_create+0x396>
4152: 2301 movs r3, #1
4154: 443b add r3, r7
4156: 82e3 strh r3, [r4, #22]
if(lv_obj_get_base_dir(new_obj) == LV_BIDI_DIR_RTL) {
4158: 4620 mov r0, r4
415a: 4b47 ldr r3, [pc, #284] ; (4278 <lv_obj_create+0x454>)
415c: 4798 blx r3
415e: 2801 cmp r0, #1
4160: d03a beq.n 41d8 <lv_obj_create+0x3b4>
new_obj->coords.x1 = parent->coords.x1;
4162: f9b6 3010 ldrsh.w r3, [r6, #16]
4166: 8223 strh r3, [r4, #16]
new_obj->coords.x2 = parent->coords.x1 + LV_OBJ_DEF_WIDTH;
4168: 8a37 ldrh r7, [r6, #16]
416a: 2000 movs r0, #0
416c: 4b41 ldr r3, [pc, #260] ; (4274 <lv_obj_create+0x450>)
416e: 4798 blx r3
4170: 2364 movs r3, #100 ; 0x64
4172: fb03 f300 mul.w r3, r3, r0
4176: 3350 adds r3, #80 ; 0x50
4178: f5b3 7fa0 cmp.w r3, #320 ; 0x140
417c: db4d blt.n 421a <lv_obj_create+0x3f6>
417e: 2000 movs r0, #0
4180: 4b3c ldr r3, [pc, #240] ; (4274 <lv_obj_create+0x450>)
4182: 4798 blx r3
4184: 2364 movs r3, #100 ; 0x64
4186: fb03 f300 mul.w r3, r3, r0
418a: 3350 adds r3, #80 ; 0x50
418c: 4a3b ldr r2, [pc, #236] ; (427c <lv_obj_create+0x458>)
418e: fb82 1203 smull r1, r2, r2, r3
4192: 17db asrs r3, r3, #31
4194: ebc3 13a2 rsb r3, r3, r2, asr #6
4198: b29b uxth r3, r3
419a: 443b add r3, r7
419c: 82a3 strh r3, [r4, #20]
419e: e698 b.n 3ed2 <lv_obj_create+0xae>
LV_ASSERT_MEM(new_obj);
41a0: 4b37 ldr r3, [pc, #220] ; (4280 <lv_obj_create+0x45c>)
41a2: 9300 str r3, [sp, #0]
41a4: 22f0 movs r2, #240 ; 0xf0
41a6: 4937 ldr r1, [pc, #220] ; (4284 <lv_obj_create+0x460>)
41a8: 2003 movs r0, #3
41aa: 4d37 ldr r5, [pc, #220] ; (4288 <lv_obj_create+0x464>)
41ac: 47a8 blx r5
41ae: 4622 mov r2, r4
41b0: 2300 movs r3, #0
41b2: 4836 ldr r0, [pc, #216] ; (428c <lv_obj_create+0x468>)
41b4: 4936 ldr r1, [pc, #216] ; (4290 <lv_obj_create+0x46c>)
41b6: 4788 blx r1
41b8: e7fe b.n 41b8 <lv_obj_create+0x394>
new_obj->coords.y2 = parent->coords.y1 + LV_OBJ_DEF_HEIGHT;
41ba: 2000 movs r0, #0
41bc: 4b2d ldr r3, [pc, #180] ; (4274 <lv_obj_create+0x450>)
41be: 4798 blx r3
41c0: 2332 movs r3, #50 ; 0x32
41c2: fb03 f300 mul.w r3, r3, r0
41c6: 3350 adds r3, #80 ; 0x50
41c8: 4a2c ldr r2, [pc, #176] ; (427c <lv_obj_create+0x458>)
41ca: fb82 1203 smull r1, r2, r2, r3
41ce: 17db asrs r3, r3, #31
41d0: ebc3 13a2 rsb r3, r3, r2, asr #6
41d4: b29b uxth r3, r3
41d6: e7bd b.n 4154 <lv_obj_create+0x330>
new_obj->coords.x2 = parent->coords.x2;
41d8: f9b6 3014 ldrsh.w r3, [r6, #20]
41dc: 82a3 strh r3, [r4, #20]
new_obj->coords.x1 = parent->coords.x2 - LV_OBJ_DEF_WIDTH;
41de: 8ab7 ldrh r7, [r6, #20]
41e0: 2000 movs r0, #0
41e2: 4b24 ldr r3, [pc, #144] ; (4274 <lv_obj_create+0x450>)
41e4: 4798 blx r3
41e6: 2364 movs r3, #100 ; 0x64
41e8: fb03 f300 mul.w r3, r3, r0
41ec: 3350 adds r3, #80 ; 0x50
41ee: f5b3 7fa0 cmp.w r3, #320 ; 0x140
41f2: db10 blt.n 4216 <lv_obj_create+0x3f2>
41f4: 2000 movs r0, #0
41f6: 4b1f ldr r3, [pc, #124] ; (4274 <lv_obj_create+0x450>)
41f8: 4798 blx r3
41fa: 2364 movs r3, #100 ; 0x64
41fc: fb03 f300 mul.w r3, r3, r0
4200: 3350 adds r3, #80 ; 0x50
4202: 4a1e ldr r2, [pc, #120] ; (427c <lv_obj_create+0x458>)
4204: fb82 1203 smull r1, r2, r2, r3
4208: 17db asrs r3, r3, #31
420a: ebc3 13a2 rsb r3, r3, r2, asr #6
420e: b29b uxth r3, r3
4210: 1afb subs r3, r7, r3
4212: 8223 strh r3, [r4, #16]
4214: e65d b.n 3ed2 <lv_obj_create+0xae>
4216: 2301 movs r3, #1
4218: e7fa b.n 4210 <lv_obj_create+0x3ec>
new_obj->coords.x2 = parent->coords.x1 + LV_OBJ_DEF_WIDTH;
421a: 2301 movs r3, #1
421c: e7bd b.n 419a <lv_obj_create+0x376>
if(parent != NULL) lv_theme_apply(new_obj, LV_THEME_OBJ);
421e: b126 cbz r6, 422a <lv_obj_create+0x406>
4220: 2102 movs r1, #2
4222: 4620 mov r0, r4
4224: 4b1b ldr r3, [pc, #108] ; (4294 <lv_obj_create+0x470>)
4226: 4798 blx r3
4228: e005 b.n 4236 <lv_obj_create+0x412>
else lv_theme_apply(new_obj, LV_THEME_SCR);
422a: 2101 movs r1, #1
422c: 4620 mov r0, r4
422e: 4b19 ldr r3, [pc, #100] ; (4294 <lv_obj_create+0x470>)
4230: 4798 blx r3
4232: e008 b.n 4246 <lv_obj_create+0x422>
if(parent != NULL) {
4234: b13e cbz r6, 4246 <lv_obj_create+0x422>
parent->signal_cb(parent, LV_SIGNAL_CHILD_CHG, new_obj);
4236: 69f3 ldr r3, [r6, #28]
4238: 4622 mov r2, r4
423a: 2101 movs r1, #1
423c: 4630 mov r0, r6
423e: 4798 blx r3
lv_obj_invalidate(new_obj);
4240: 4620 mov r0, r4
4242: 4b15 ldr r3, [pc, #84] ; (4298 <lv_obj_create+0x474>)
4244: 4798 blx r3
LV_LOG_INFO("Object create ready");
4246: 4b15 ldr r3, [pc, #84] ; (429c <lv_obj_create+0x478>)
4248: 9300 str r3, [sp, #0]
424a: 4b0d ldr r3, [pc, #52] ; (4280 <lv_obj_create+0x45c>)
424c: f240 1287 movw r2, #391 ; 0x187
4250: 490c ldr r1, [pc, #48] ; (4284 <lv_obj_create+0x460>)
4252: 2001 movs r0, #1
4254: 4d0c ldr r5, [pc, #48] ; (4288 <lv_obj_create+0x464>)
4256: 47a8 blx r5
}
4258: 4620 mov r0, r4
425a: b003 add sp, #12
425c: bdf0 pop {r4, r5, r6, r7, pc}
425e: bf00 nop
4260: 00011f11 .word 0x00011f11
4264: 000022b1 .word 0x000022b1
4268: 00012b37 .word 0x00012b37
426c: 00005a05 .word 0x00005a05
4270: 00005429 .word 0x00005429
4274: 00010f3d .word 0x00010f3d
4278: 00003ddd .word 0x00003ddd
427c: 66666667 .word 0x66666667
4280: 000245ec .word 0x000245ec
4284: 000247dc .word 0x000247dc
4288: 0001225d .word 0x0001225d
428c: 00023fd8 .word 0x00023fd8
4290: 000022b9 .word 0x000022b9
4294: 000141e9 .word 0x000141e9
4298: 00003321 .word 0x00003321
429c: 00024988 .word 0x00024988
000042a0 <lv_obj_set_size>:
{
42a0: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
42a4: b084 sub sp, #16
42a6: 4604 mov r4, r0
42a8: 460d mov r5, r1
42aa: 4616 mov r6, r2
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
42ac: 4b32 ldr r3, [pc, #200] ; (4378 <lv_obj_set_size+0xd8>)
42ae: 4798 blx r3
42b0: b968 cbnz r0, 42ce <lv_obj_set_size+0x2e>
42b2: 4b32 ldr r3, [pc, #200] ; (437c <lv_obj_set_size+0xdc>)
42b4: 9300 str r3, [sp, #0]
42b6: f240 22e5 movw r2, #741 ; 0x2e5
42ba: 4931 ldr r1, [pc, #196] ; (4380 <lv_obj_set_size+0xe0>)
42bc: 2003 movs r0, #3
42be: 4d31 ldr r5, [pc, #196] ; (4384 <lv_obj_set_size+0xe4>)
42c0: 47a8 blx r5
42c2: 4622 mov r2, r4
42c4: 2300 movs r3, #0
42c6: 4830 ldr r0, [pc, #192] ; (4388 <lv_obj_set_size+0xe8>)
42c8: 4930 ldr r1, [pc, #192] ; (438c <lv_obj_set_size+0xec>)
42ca: 4788 blx r1
42cc: e7fe b.n 42cc <lv_obj_set_size+0x2c>
if(lv_obj_get_width(obj) == w && lv_obj_get_height(obj) == h) {
42ce: 4620 mov r0, r4
42d0: 4b2f ldr r3, [pc, #188] ; (4390 <lv_obj_set_size+0xf0>)
42d2: 4798 blx r3
42d4: 42a8 cmp r0, r5
42d6: d03f beq.n 4358 <lv_obj_set_size+0xb8>
lv_obj_invalidate(obj);
42d8: 4620 mov r0, r4
42da: 4b2e ldr r3, [pc, #184] ; (4394 <lv_obj_set_size+0xf4>)
42dc: 4798 blx r3
lv_obj_get_coords(obj, &ori);
42de: a902 add r1, sp, #8
42e0: 4620 mov r0, r4
42e2: 4b2d ldr r3, [pc, #180] ; (4398 <lv_obj_set_size+0xf8>)
42e4: 4798 blx r3
obj->coords.y2 = obj->coords.y1 + h - 1;
42e6: 1e73 subs r3, r6, #1
42e8: 8a62 ldrh r2, [r4, #18]
42ea: 4413 add r3, r2
42ec: 82e3 strh r3, [r4, #22]
if(lv_obj_get_base_dir(obj) == LV_BIDI_DIR_RTL) {
42ee: 4620 mov r0, r4
42f0: 4b2a ldr r3, [pc, #168] ; (439c <lv_obj_set_size+0xfc>)
42f2: 4798 blx r3
42f4: 2801 cmp r0, #1
42f6: d035 beq.n 4364 <lv_obj_set_size+0xc4>
obj->coords.x2 = obj->coords.x1 + w - 1;
42f8: 1e6b subs r3, r5, #1
42fa: 8a22 ldrh r2, [r4, #16]
42fc: 4413 add r3, r2
42fe: 82a3 strh r3, [r4, #20]
obj->signal_cb(obj, LV_SIGNAL_COORD_CHG, &ori);
4300: 69e3 ldr r3, [r4, #28]
4302: aa02 add r2, sp, #8
4304: 2102 movs r1, #2
4306: 4620 mov r0, r4
4308: 4798 blx r3
lv_obj_t * par = lv_obj_get_parent(obj);
430a: 4620 mov r0, r4
430c: 4b24 ldr r3, [pc, #144] ; (43a0 <lv_obj_set_size+0x100>)
430e: 4798 blx r3
if(par != NULL) par->signal_cb(par, LV_SIGNAL_CHILD_CHG, obj);
4310: b118 cbz r0, 431a <lv_obj_set_size+0x7a>
4312: 69c5 ldr r5, [r0, #28]
4314: 4622 mov r2, r4
4316: 2101 movs r1, #1
4318: 47a8 blx r5
_LV_LL_READ(obj->child_ll, i) {
431a: 1d26 adds r6, r4, #4
431c: 4630 mov r0, r6
431e: 4b21 ldr r3, [pc, #132] ; (43a4 <lv_obj_set_size+0x104>)
4320: 4798 blx r3
4322: 4605 mov r5, r0
4324: b168 cbz r0, 4342 <lv_obj_set_size+0xa2>
i->signal_cb(i, LV_SIGNAL_PARENT_SIZE_CHG, &ori);
4326: f04f 0803 mov.w r8, #3
_LV_LL_READ(obj->child_ll, i) {
432a: 4f1f ldr r7, [pc, #124] ; (43a8 <lv_obj_set_size+0x108>)
i->signal_cb(i, LV_SIGNAL_PARENT_SIZE_CHG, &ori);
432c: 69eb ldr r3, [r5, #28]
432e: aa02 add r2, sp, #8
4330: 4641 mov r1, r8
4332: 4628 mov r0, r5
4334: 4798 blx r3
_LV_LL_READ(obj->child_ll, i) {
4336: 4629 mov r1, r5
4338: 4630 mov r0, r6
433a: 47b8 blx r7
433c: 4605 mov r5, r0
433e: 2800 cmp r0, #0
4340: d1f4 bne.n 432c <lv_obj_set_size+0x8c>
lv_obj_invalidate(obj);
4342: 4620 mov r0, r4
4344: 4b13 ldr r3, [pc, #76] ; (4394 <lv_obj_set_size+0xf4>)
4346: 4798 blx r3
if(obj->realign.auto_realign) lv_obj_realign(obj);
4348: f894 3049 ldrb.w r3, [r4, #73] ; 0x49
434c: f013 0f01 tst.w r3, #1
4350: d10e bne.n 4370 <lv_obj_set_size+0xd0>
}
4352: b004 add sp, #16
4354: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(lv_obj_get_width(obj) == w && lv_obj_get_height(obj) == h) {
4358: 4620 mov r0, r4
435a: 4b14 ldr r3, [pc, #80] ; (43ac <lv_obj_set_size+0x10c>)
435c: 4798 blx r3
435e: 42b0 cmp r0, r6
4360: d1ba bne.n 42d8 <lv_obj_set_size+0x38>
4362: e7f6 b.n 4352 <lv_obj_set_size+0xb2>
obj->coords.x1 = obj->coords.x2 - w + 1;
4364: f1c5 0301 rsb r3, r5, #1
4368: 8aa2 ldrh r2, [r4, #20]
436a: 4413 add r3, r2
436c: 8223 strh r3, [r4, #16]
436e: e7c7 b.n 4300 <lv_obj_set_size+0x60>
if(obj->realign.auto_realign) lv_obj_realign(obj);
4370: 4620 mov r0, r4
4372: 4b0f ldr r3, [pc, #60] ; (43b0 <lv_obj_set_size+0x110>)
4374: 4798 blx r3
4376: e7ec b.n 4352 <lv_obj_set_size+0xb2>
4378: 000022b1 .word 0x000022b1
437c: 00024610 .word 0x00024610
4380: 000247dc .word 0x000247dc
4384: 0001225d .word 0x0001225d
4388: 0002483c .word 0x0002483c
438c: 000022b9 .word 0x000022b9
4390: 00002f5d .word 0x00002f5d
4394: 00003321 .word 0x00003321
4398: 00002e41 .word 0x00002e41
439c: 00003ddd .word 0x00003ddd
43a0: 00002c7d .word 0x00002c7d
43a4: 00011fa9 .word 0x00011fa9
43a8: 00011fbd .word 0x00011fbd
43ac: 00002fad .word 0x00002fad
43b0: 000039e1 .word 0x000039e1
000043b4 <lv_obj_set_height>:
{
43b4: b530 push {r4, r5, lr}
43b6: b083 sub sp, #12
43b8: 4604 mov r4, r0
43ba: 460d mov r5, r1
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
43bc: 4b0d ldr r3, [pc, #52] ; (43f4 <lv_obj_set_height+0x40>)
43be: 4798 blx r3
43c0: b968 cbnz r0, 43de <lv_obj_set_height+0x2a>
43c2: 4b0d ldr r3, [pc, #52] ; (43f8 <lv_obj_set_height+0x44>)
43c4: 9300 str r3, [sp, #0]
43c6: f240 3227 movw r2, #807 ; 0x327
43ca: 490c ldr r1, [pc, #48] ; (43fc <lv_obj_set_height+0x48>)
43cc: 2003 movs r0, #3
43ce: 4d0c ldr r5, [pc, #48] ; (4400 <lv_obj_set_height+0x4c>)
43d0: 47a8 blx r5
43d2: 4622 mov r2, r4
43d4: 2300 movs r3, #0
43d6: 480b ldr r0, [pc, #44] ; (4404 <lv_obj_set_height+0x50>)
43d8: 490b ldr r1, [pc, #44] ; (4408 <lv_obj_set_height+0x54>)
43da: 4788 blx r1
43dc: e7fe b.n 43dc <lv_obj_set_height+0x28>
lv_obj_set_size(obj, lv_obj_get_width(obj), h);
43de: 4620 mov r0, r4
43e0: 4b0a ldr r3, [pc, #40] ; (440c <lv_obj_set_height+0x58>)
43e2: 4798 blx r3
43e4: 462a mov r2, r5
43e6: 4601 mov r1, r0
43e8: 4620 mov r0, r4
43ea: 4b09 ldr r3, [pc, #36] ; (4410 <lv_obj_set_height+0x5c>)
43ec: 4798 blx r3
}
43ee: b003 add sp, #12
43f0: bd30 pop {r4, r5, pc}
43f2: bf00 nop
43f4: 000022b1 .word 0x000022b1
43f8: 00024634 .word 0x00024634
43fc: 000247dc .word 0x000247dc
4400: 0001225d .word 0x0001225d
4404: 0002483c .word 0x0002483c
4408: 000022b9 .word 0x000022b9
440c: 00002f5d .word 0x00002f5d
4410: 000042a1 .word 0x000042a1
00004414 <lv_obj_is_protected>:
{
4414: b530 push {r4, r5, lr}
4416: b083 sub sp, #12
4418: 4604 mov r4, r0
441a: 460d mov r5, r1
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
441c: 4b0c ldr r3, [pc, #48] ; (4450 <lv_obj_is_protected+0x3c>)
441e: 4798 blx r3
4420: b138 cbz r0, 4432 <lv_obj_is_protected+0x1e>
return (obj->protect & prot) == 0 ? false : true;
4422: f894 303c ldrb.w r3, [r4, #60] ; 0x3c
4426: 421d tst r5, r3
}
4428: bf14 ite ne
442a: 2001 movne r0, #1
442c: 2000 moveq r0, #0
442e: b003 add sp, #12
4430: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
4432: 4b08 ldr r3, [pc, #32] ; (4454 <lv_obj_is_protected+0x40>)
4434: 9300 str r3, [sp, #0]
4436: f640 22d7 movw r2, #2775 ; 0xad7
443a: 4907 ldr r1, [pc, #28] ; (4458 <lv_obj_is_protected+0x44>)
443c: 2003 movs r0, #3
443e: 4d07 ldr r5, [pc, #28] ; (445c <lv_obj_is_protected+0x48>)
4440: 47a8 blx r5
4442: 4622 mov r2, r4
4444: 2300 movs r3, #0
4446: 4806 ldr r0, [pc, #24] ; (4460 <lv_obj_is_protected+0x4c>)
4448: 4906 ldr r1, [pc, #24] ; (4464 <lv_obj_is_protected+0x50>)
444a: 4788 blx r1
444c: e7fe b.n 444c <lv_obj_is_protected+0x38>
444e: bf00 nop
4450: 000022b1 .word 0x000022b1
4454: 0002465c .word 0x0002465c
4458: 000247dc .word 0x000247dc
445c: 0001225d .word 0x0001225d
4460: 0002483c .word 0x0002483c
4464: 000022b9 .word 0x000022b9
00004468 <lv_obj_get_state>:
{
4468: b530 push {r4, r5, lr}
446a: b085 sub sp, #20
446c: 4604 mov r4, r0
446e: 460d mov r5, r1
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
4470: 4b11 ldr r3, [pc, #68] ; (44b8 <lv_obj_get_state+0x50>)
4472: 4798 blx r3
4474: b128 cbz r0, 4482 <lv_obj_get_state+0x1a>
if(part < _LV_OBJ_PART_REAL_LAST) return ((lv_obj_t *)obj)->state;
4476: 2d3f cmp r5, #63 ; 0x3f
4478: d811 bhi.n 449e <lv_obj_get_state+0x36>
447a: f894 003d ldrb.w r0, [r4, #61] ; 0x3d
}
447e: b005 add sp, #20
4480: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
4482: 4b0e ldr r3, [pc, #56] ; (44bc <lv_obj_get_state+0x54>)
4484: 9300 str r3, [sp, #0]
4486: f640 22de movw r2, #2782 ; 0xade
448a: 490d ldr r1, [pc, #52] ; (44c0 <lv_obj_get_state+0x58>)
448c: 2003 movs r0, #3
448e: 4d0d ldr r5, [pc, #52] ; (44c4 <lv_obj_get_state+0x5c>)
4490: 47a8 blx r5
4492: 4622 mov r2, r4
4494: 2300 movs r3, #0
4496: 480c ldr r0, [pc, #48] ; (44c8 <lv_obj_get_state+0x60>)
4498: 490c ldr r1, [pc, #48] ; (44cc <lv_obj_get_state+0x64>)
449a: 4788 blx r1
449c: e7fe b.n 449c <lv_obj_get_state+0x34>
info.part = part;
449e: f88d 500c strb.w r5, [sp, #12]
info.result = LV_STATE_DEFAULT;
44a2: 2300 movs r3, #0
44a4: f88d 300d strb.w r3, [sp, #13]
lv_signal_send((lv_obj_t *)obj, LV_SIGNAL_GET_STATE_DSC, &info);
44a8: aa03 add r2, sp, #12
44aa: 2109 movs r1, #9
44ac: 4620 mov r0, r4
44ae: 4b08 ldr r3, [pc, #32] ; (44d0 <lv_obj_get_state+0x68>)
44b0: 4798 blx r3
return info.result;
44b2: f89d 000d ldrb.w r0, [sp, #13]
44b6: e7e2 b.n 447e <lv_obj_get_state+0x16>
44b8: 000022b1 .word 0x000022b1
44bc: 00024670 .word 0x00024670
44c0: 000247dc .word 0x000247dc
44c4: 0001225d .word 0x0001225d
44c8: 0002483c .word 0x0002483c
44cc: 000022b9 .word 0x000022b9
44d0: 00002b75 .word 0x00002b75
000044d4 <_lv_obj_get_style_int>:
{
44d4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
44d8: b085 sub sp, #20
44da: 4617 mov r7, r2
while(parent) {
44dc: b360 cbz r0, 4538 <_lv_obj_get_style_int+0x64>
44de: 460d mov r5, r1
44e0: ea4f 2b12 mov.w fp, r2, lsr #8
44e4: 4606 mov r6, r0
lv_style_list_t * dsc = lv_obj_get_style_list(parent, part);
44e6: f8df a08c ldr.w sl, [pc, #140] ; 4574 <_lv_obj_get_style_int+0xa0>
lv_state_t state = lv_obj_get_state(parent, part);
44ea: f8df 908c ldr.w r9, [pc, #140] ; 4578 <_lv_obj_get_style_int+0xa4>
res = _lv_style_list_get_int(dsc, prop, &value_act);
44ee: f8df 808c ldr.w r8, [pc, #140] ; 457c <_lv_obj_get_style_int+0xa8>
44f2: e006 b.n 4502 <_lv_obj_get_style_int+0x2e>
if(res == LV_RES_OK) return value_act;
44f4: f9bd 000e ldrsh.w r0, [sp, #14]
}
44f8: b005 add sp, #20
44fa: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
44fe: 2500 movs r5, #0
while(parent) {
4500: b1de cbz r6, 453a <_lv_obj_get_style_int+0x66>
lv_style_list_t * dsc = lv_obj_get_style_list(parent, part);
4502: 4629 mov r1, r5
4504: 4630 mov r0, r6
4506: 47d0 blx sl
4508: 9001 str r0, [sp, #4]
lv_state_t state = lv_obj_get_state(parent, part);
450a: 4629 mov r1, r5
450c: 4630 mov r0, r6
450e: 47c8 blx r9
prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS);
4510: eb07 2000 add.w r0, r7, r0, lsl #8
4514: b284 uxth r4, r0
res = _lv_style_list_get_int(dsc, prop, &value_act);
4516: f10d 020e add.w r2, sp, #14
451a: 4621 mov r1, r4
451c: 9801 ldr r0, [sp, #4]
451e: 47c0 blx r8
if(res == LV_RES_OK) return value_act;
4520: 2801 cmp r0, #1
4522: d0e7 beq.n 44f4 <_lv_obj_get_style_int+0x20>
if(attr.bits.inherit == 0) break;
4524: f01b 0f80 tst.w fp, #128 ; 0x80
4528: d007 beq.n 453a <_lv_obj_get_style_int+0x66>
if(part != LV_OBJ_PART_MAIN) {
452a: 2d00 cmp r5, #0
452c: d1e7 bne.n 44fe <_lv_obj_get_style_int+0x2a>
parent = lv_obj_get_parent(parent);
452e: 4630 mov r0, r6
4530: 4b0f ldr r3, [pc, #60] ; (4570 <_lv_obj_get_style_int+0x9c>)
4532: 4798 blx r3
4534: 4606 mov r6, r0
4536: e7e2 b.n 44fe <_lv_obj_get_style_int+0x2a>
while(parent) {
4538: 4614 mov r4, r2
prop = prop & (~LV_STYLE_STATE_MASK);
453a: f424 44fe bic.w r4, r4, #32512 ; 0x7f00
switch(prop) {
453e: b2a4 uxth r4, r4
4540: 2c22 cmp r4, #34 ; 0x22
4542: d00f beq.n 4564 <_lv_obj_get_style_int+0x90>
4544: d806 bhi.n 4554 <_lv_obj_get_style_int+0x80>
4546: 2c03 cmp r4, #3
4548: d00a beq.n 4560 <_lv_obj_get_style_int+0x8c>
454a: 2c07 cmp r4, #7
454c: d10c bne.n 4568 <_lv_obj_get_style_int+0x94>
return LV_IMG_ZOOM_NONE;
454e: f44f 7080 mov.w r0, #256 ; 0x100
4552: e7d1 b.n 44f8 <_lv_obj_get_style_int+0x24>
switch(prop) {
4554: 2c31 cmp r4, #49 ; 0x31
4556: d009 beq.n 456c <_lv_obj_get_style_int+0x98>
4558: 2cc0 cmp r4, #192 ; 0xc0
455a: d105 bne.n 4568 <_lv_obj_get_style_int+0x94>
return LV_DPI / 8;
455c: 2010 movs r0, #16
455e: e7cb b.n 44f8 <_lv_obj_get_style_int+0x24>
return LV_DPI / 20;
4560: 2006 movs r0, #6
4562: e7c9 b.n 44f8 <_lv_obj_get_style_int+0x24>
return 255;
4564: 20ff movs r0, #255 ; 0xff
4566: e7c7 b.n 44f8 <_lv_obj_get_style_int+0x24>
return 0;
4568: 2000 movs r0, #0
456a: e7c5 b.n 44f8 <_lv_obj_get_style_int+0x24>
return LV_BORDER_SIDE_FULL;
456c: 200f movs r0, #15
456e: e7c3 b.n 44f8 <_lv_obj_get_style_int+0x24>
4570: 00002c7d .word 0x00002c7d
4574: 00002ffd .word 0x00002ffd
4578: 00004469 .word 0x00004469
457c: 000072e5 .word 0x000072e5
00004580 <_lv_obj_get_style_color>:
{
4580: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
4584: b085 sub sp, #20
4586: 4617 mov r7, r2
while(parent) {
4588: b348 cbz r0, 45de <_lv_obj_get_style_color+0x5e>
458a: 460d mov r5, r1
458c: ea4f 2b12 mov.w fp, r2, lsr #8
4590: 4606 mov r6, r0
lv_style_list_t * dsc = lv_obj_get_style_list(parent, part);
4592: f8df a06c ldr.w sl, [pc, #108] ; 4600 <_lv_obj_get_style_color+0x80>
lv_state_t state = lv_obj_get_state(parent, part);
4596: f8df 906c ldr.w r9, [pc, #108] ; 4604 <_lv_obj_get_style_color+0x84>
res = _lv_style_list_get_color(dsc, prop, &value_act);
459a: f8df 806c ldr.w r8, [pc, #108] ; 4608 <_lv_obj_get_style_color+0x88>
459e: e004 b.n 45aa <_lv_obj_get_style_color+0x2a>
if(res == LV_RES_OK) return value_act;
45a0: f8bd 000c ldrh.w r0, [sp, #12]
45a4: e025 b.n 45f2 <_lv_obj_get_style_color+0x72>
45a6: 2500 movs r5, #0
while(parent) {
45a8: b1d6 cbz r6, 45e0 <_lv_obj_get_style_color+0x60>
lv_style_list_t * dsc = lv_obj_get_style_list(parent, part);
45aa: 4629 mov r1, r5
45ac: 4630 mov r0, r6
45ae: 47d0 blx sl
45b0: 9001 str r0, [sp, #4]
lv_state_t state = lv_obj_get_state(parent, part);
45b2: 4629 mov r1, r5
45b4: 4630 mov r0, r6
45b6: 47c8 blx r9
prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS);
45b8: eb07 2000 add.w r0, r7, r0, lsl #8
45bc: b284 uxth r4, r0
res = _lv_style_list_get_color(dsc, prop, &value_act);
45be: aa03 add r2, sp, #12
45c0: 4621 mov r1, r4
45c2: 9801 ldr r0, [sp, #4]
45c4: 47c0 blx r8
if(res == LV_RES_OK) return value_act;
45c6: 2801 cmp r0, #1
45c8: d0ea beq.n 45a0 <_lv_obj_get_style_color+0x20>
if(attr.bits.inherit == 0) break;
45ca: f01b 0f80 tst.w fp, #128 ; 0x80
45ce: d007 beq.n 45e0 <_lv_obj_get_style_color+0x60>
if(part != LV_OBJ_PART_MAIN) {
45d0: 2d00 cmp r5, #0
45d2: d1e8 bne.n 45a6 <_lv_obj_get_style_color+0x26>
parent = lv_obj_get_parent(parent);
45d4: 4630 mov r0, r6
45d6: 4b08 ldr r3, [pc, #32] ; (45f8 <_lv_obj_get_style_color+0x78>)
45d8: 4798 blx r3
45da: 4606 mov r6, r0
45dc: e7e3 b.n 45a6 <_lv_obj_get_style_color+0x26>
while(parent) {
45de: 4614 mov r4, r2
prop = prop & (~LV_STYLE_STATE_MASK);
45e0: f424 44fe bic.w r4, r4, #32512 ; 0x7f00
switch(prop) {
45e4: 3c29 subs r4, #41 ; 0x29
45e6: 2c01 cmp r4, #1
return LV_COLOR_WHITE;
45e8: bf9a itte ls
45ea: 4b04 ldrls r3, [pc, #16] ; (45fc <_lv_obj_get_style_color+0x7c>)
45ec: f8b3 0674 ldrhls.w r0, [r3, #1652] ; 0x674
return LV_COLOR_BLACK;
45f0: 2000 movhi r0, #0
}
45f2: b005 add sp, #20
45f4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
45f8: 00002c7d .word 0x00002c7d
45fc: 00024058 .word 0x00024058
4600: 00002ffd .word 0x00002ffd
4604: 00004469 .word 0x00004469
4608: 000073a9 .word 0x000073a9
0000460c <_lv_obj_get_style_opa>:
{
460c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
4610: b085 sub sp, #20
4612: 4617 mov r7, r2
while(parent) {
4614: b350 cbz r0, 466c <_lv_obj_get_style_opa+0x60>
4616: 460d mov r5, r1
4618: ea4f 2b12 mov.w fp, r2, lsr #8
461c: 4606 mov r6, r0
lv_style_list_t * dsc = lv_obj_get_style_list(parent, part);
461e: f8df a074 ldr.w sl, [pc, #116] ; 4694 <_lv_obj_get_style_opa+0x88>
lv_state_t state = lv_obj_get_state(parent, part);
4622: f8df 9074 ldr.w r9, [pc, #116] ; 4698 <_lv_obj_get_style_opa+0x8c>
res = _lv_style_list_get_opa(dsc, prop, &value_act);
4626: f8df 8074 ldr.w r8, [pc, #116] ; 469c <_lv_obj_get_style_opa+0x90>
462a: e004 b.n 4636 <_lv_obj_get_style_opa+0x2a>
if(res == LV_RES_OK) return value_act;
462c: f89d 000f ldrb.w r0, [sp, #15]
4630: e029 b.n 4686 <_lv_obj_get_style_opa+0x7a>
4632: 2500 movs r5, #0
while(parent) {
4634: b1de cbz r6, 466e <_lv_obj_get_style_opa+0x62>
lv_style_list_t * dsc = lv_obj_get_style_list(parent, part);
4636: 4629 mov r1, r5
4638: 4630 mov r0, r6
463a: 47d0 blx sl
463c: 9001 str r0, [sp, #4]
lv_state_t state = lv_obj_get_state(parent, part);
463e: 4629 mov r1, r5
4640: 4630 mov r0, r6
4642: 47c8 blx r9
prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS);
4644: eb07 2000 add.w r0, r7, r0, lsl #8
4648: b284 uxth r4, r0
res = _lv_style_list_get_opa(dsc, prop, &value_act);
464a: f10d 020f add.w r2, sp, #15
464e: 4621 mov r1, r4
4650: 9801 ldr r0, [sp, #4]
4652: 47c0 blx r8
if(res == LV_RES_OK) return value_act;
4654: 2801 cmp r0, #1
4656: d0e9 beq.n 462c <_lv_obj_get_style_opa+0x20>
if(attr.bits.inherit == 0) break;
4658: f01b 0f80 tst.w fp, #128 ; 0x80
465c: d007 beq.n 466e <_lv_obj_get_style_opa+0x62>
if(part != LV_OBJ_PART_MAIN) {
465e: 2d00 cmp r5, #0
4660: d1e7 bne.n 4632 <_lv_obj_get_style_opa+0x26>
parent = lv_obj_get_parent(parent);
4662: 4630 mov r0, r6
4664: 4b0a ldr r3, [pc, #40] ; (4690 <_lv_obj_get_style_opa+0x84>)
4666: 4798 blx r3
4668: 4606 mov r6, r0
466a: e7e2 b.n 4632 <_lv_obj_get_style_opa+0x26>
while(parent) {
466c: 4614 mov r4, r2
prop = prop & (~LV_STYLE_STATE_MASK);
466e: f424 44fe bic.w r4, r4, #32512 ; 0x7f00
switch(prop) {
4672: b2a4 uxth r4, r4
4674: 2c6d cmp r4, #109 ; 0x6d
4676: d009 beq.n 468c <_lv_obj_get_style_opa+0x80>
4678: f248 03ad movw r3, #32941 ; 0x80ad
467c: 429c cmp r4, r3
467e: d005 beq.n 468c <_lv_obj_get_style_opa+0x80>
4680: 2c2c cmp r4, #44 ; 0x2c
4682: d003 beq.n 468c <_lv_obj_get_style_opa+0x80>
return LV_OPA_COVER;
4684: 20ff movs r0, #255 ; 0xff
}
4686: b005 add sp, #20
4688: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
return LV_OPA_TRANSP;
468c: 2000 movs r0, #0
468e: e7fa b.n 4686 <_lv_obj_get_style_opa+0x7a>
4690: 00002c7d .word 0x00002c7d
4694: 00002ffd .word 0x00002ffd
4698: 00004469 .word 0x00004469
469c: 0000746d .word 0x0000746d
000046a0 <_lv_obj_get_style_ptr>:
{
46a0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
46a4: b085 sub sp, #20
46a6: 4617 mov r7, r2
while(parent) {
46a8: b350 cbz r0, 4700 <_lv_obj_get_style_ptr+0x60>
46aa: 460d mov r5, r1
46ac: ea4f 2b12 mov.w fp, r2, lsr #8
46b0: 4606 mov r6, r0
lv_style_list_t * dsc = lv_obj_get_style_list(parent, part);
46b2: f8df a080 ldr.w sl, [pc, #128] ; 4734 <_lv_obj_get_style_ptr+0x94>
lv_state_t state = lv_obj_get_state(parent, part);
46b6: f8df 9080 ldr.w r9, [pc, #128] ; 4738 <_lv_obj_get_style_ptr+0x98>
res = _lv_style_list_get_ptr(dsc, prop, &value_act);
46ba: f8df 8080 ldr.w r8, [pc, #128] ; 473c <_lv_obj_get_style_ptr+0x9c>
46be: e005 b.n 46cc <_lv_obj_get_style_ptr+0x2c>
if(res == LV_RES_OK) return value_act;
46c0: 9803 ldr r0, [sp, #12]
}
46c2: b005 add sp, #20
46c4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
46c8: 2500 movs r5, #0
while(parent) {
46ca: b1d6 cbz r6, 4702 <_lv_obj_get_style_ptr+0x62>
lv_style_list_t * dsc = lv_obj_get_style_list(parent, part);
46cc: 4629 mov r1, r5
46ce: 4630 mov r0, r6
46d0: 47d0 blx sl
46d2: 9001 str r0, [sp, #4]
lv_state_t state = lv_obj_get_state(parent, part);
46d4: 4629 mov r1, r5
46d6: 4630 mov r0, r6
46d8: 47c8 blx r9
prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS);
46da: eb07 2000 add.w r0, r7, r0, lsl #8
46de: b284 uxth r4, r0
res = _lv_style_list_get_ptr(dsc, prop, &value_act);
46e0: aa03 add r2, sp, #12
46e2: 4621 mov r1, r4
46e4: 9801 ldr r0, [sp, #4]
46e6: 47c0 blx r8
if(res == LV_RES_OK) return value_act;
46e8: 2801 cmp r0, #1
46ea: d0e9 beq.n 46c0 <_lv_obj_get_style_ptr+0x20>
if(attr.bits.inherit == 0) break;
46ec: f01b 0f80 tst.w fp, #128 ; 0x80
46f0: d007 beq.n 4702 <_lv_obj_get_style_ptr+0x62>
if(part != LV_OBJ_PART_MAIN) {
46f2: 2d00 cmp r5, #0
46f4: d1e8 bne.n 46c8 <_lv_obj_get_style_ptr+0x28>
parent = lv_obj_get_parent(parent);
46f6: 4630 mov r0, r6
46f8: 4b0b ldr r3, [pc, #44] ; (4728 <_lv_obj_get_style_ptr+0x88>)
46fa: 4798 blx r3
46fc: 4606 mov r6, r0
46fe: e7e3 b.n 46c8 <_lv_obj_get_style_ptr+0x28>
while(parent) {
4700: 4614 mov r4, r2
prop = prop & (~LV_STYLE_STATE_MASK);
4702: f424 44fe bic.w r4, r4, #32512 ; 0x7f00
switch(prop) {
4706: b2a4 uxth r4, r4
4708: 2cbe cmp r4, #190 ; 0xbe
470a: d00a beq.n 4722 <_lv_obj_get_style_ptr+0x82>
470c: f248 038e movw r3, #32910 ; 0x808e
4710: 429c cmp r4, r3
4712: d003 beq.n 471c <_lv_obj_get_style_ptr+0x7c>
4714: 2c7e cmp r4, #126 ; 0x7e
4716: d001 beq.n 471c <_lv_obj_get_style_ptr+0x7c>
return NULL;
4718: 2000 movs r0, #0
471a: e7d2 b.n 46c2 <_lv_obj_get_style_ptr+0x22>
return lv_theme_get_font_normal();
471c: 4b03 ldr r3, [pc, #12] ; (472c <_lv_obj_get_style_ptr+0x8c>)
471e: 4798 blx r3
4720: e7cf b.n 46c2 <_lv_obj_get_style_ptr+0x22>
return &lv_anim_path_def;
4722: 4803 ldr r0, [pc, #12] ; (4730 <_lv_obj_get_style_ptr+0x90>)
4724: e7cd b.n 46c2 <_lv_obj_get_style_ptr+0x22>
4726: bf00 nop
4728: 00002c7d .word 0x00002c7d
472c: 000141dd .word 0x000141dd
4730: 00029200 .word 0x00029200
4734: 00002ffd .word 0x00002ffd
4738: 00004469 .word 0x00004469
473c: 00007531 .word 0x00007531
00004740 <trans_anim_start_cb>:
{
4740: b570 push {r4, r5, r6, lr}
lv_style_trans_t * tr = a->var;
4742: 6804 ldr r4, [r0, #0]
lv_style_property_t prop_tmp = tr->prop;
4744: 88a5 ldrh r5, [r4, #4]
if((prop_tmp & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/
4746: f005 030f and.w r3, r5, #15
474a: 2b08 cmp r3, #8
474c: dd13 ble.n 4776 <trans_anim_start_cb+0x36>
else if((prop_tmp & 0xF) < LV_STYLE_ID_OPA) { /*Color*/
474e: 2b0b cmp r3, #11
4750: dd18 ble.n 4784 <trans_anim_start_cb+0x44>
else if((prop_tmp & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/
4752: 2b0d cmp r3, #13
4754: dd1d ble.n 4792 <trans_anim_start_cb+0x52>
tr->start_value._ptr = _lv_obj_get_style_ptr(tr->obj, tr->part, prop_tmp);
4756: 462a mov r2, r5
4758: 79a1 ldrb r1, [r4, #6]
475a: 6820 ldr r0, [r4, #0]
475c: 4b10 ldr r3, [pc, #64] ; (47a0 <trans_anim_start_cb+0x60>)
475e: 4798 blx r3
4760: 60a0 str r0, [r4, #8]
tr->prop = 0;
4762: 2300 movs r3, #0
4764: 80a3 strh r3, [r4, #4]
trans_del(tr->obj, tr->part, prop_tmp, tr);
4766: 4623 mov r3, r4
4768: 462a mov r2, r5
476a: 79a1 ldrb r1, [r4, #6]
476c: 6820 ldr r0, [r4, #0]
476e: 4e0d ldr r6, [pc, #52] ; (47a4 <trans_anim_start_cb+0x64>)
4770: 47b0 blx r6
tr->prop = prop_tmp;
4772: 80a5 strh r5, [r4, #4]
4774: bd70 pop {r4, r5, r6, pc}
tr->start_value._int = _lv_obj_get_style_int(tr->obj, tr->part, prop_tmp);
4776: 462a mov r2, r5
4778: 79a1 ldrb r1, [r4, #6]
477a: 6820 ldr r0, [r4, #0]
477c: 4b0a ldr r3, [pc, #40] ; (47a8 <trans_anim_start_cb+0x68>)
477e: 4798 blx r3
4780: 8120 strh r0, [r4, #8]
4782: e7ee b.n 4762 <trans_anim_start_cb+0x22>
tr->start_value._color = _lv_obj_get_style_color(tr->obj, tr->part, prop_tmp);
4784: 462a mov r2, r5
4786: 79a1 ldrb r1, [r4, #6]
4788: 6820 ldr r0, [r4, #0]
478a: 4b08 ldr r3, [pc, #32] ; (47ac <trans_anim_start_cb+0x6c>)
478c: 4798 blx r3
478e: 8120 strh r0, [r4, #8]
4790: e7e7 b.n 4762 <trans_anim_start_cb+0x22>
tr->start_value._opa = _lv_obj_get_style_opa(tr->obj, tr->part, prop_tmp);
4792: 462a mov r2, r5
4794: 79a1 ldrb r1, [r4, #6]
4796: 6820 ldr r0, [r4, #0]
4798: 4b05 ldr r3, [pc, #20] ; (47b0 <trans_anim_start_cb+0x70>)
479a: 4798 blx r3
479c: 7220 strb r0, [r4, #8]
479e: e7e0 b.n 4762 <trans_anim_start_cb+0x22>
47a0: 000046a1 .word 0x000046a1
47a4: 00003029 .word 0x00003029
47a8: 000044d5 .word 0x000044d5
47ac: 00004581 .word 0x00004581
47b0: 0000460d .word 0x0000460d
000047b4 <lv_obj_set_state>:
if(obj->state == new_state) return;
47b4: f890 303d ldrb.w r3, [r0, #61] ; 0x3d
47b8: 428b cmp r3, r1
47ba: f000 8252 beq.w 4c62 <lv_obj_set_state+0x4ae>
{
47be: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
47c2: b0a1 sub sp, #132 ; 0x84
47c4: 4689 mov r9, r1
47c6: 4682 mov sl, r0
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
47c8: 4bab ldr r3, [pc, #684] ; (4a78 <lv_obj_set_state+0x2c4>)
47ca: 4798 blx r3
47cc: b140 cbz r0, 47e0 <lv_obj_set_state+0x2c>
lv_state_t prev_state = obj->state;
47ce: f89a b03d ldrb.w fp, [sl, #61] ; 0x3d
obj->state = new_state;
47d2: f88a 903d strb.w r9, [sl, #61] ; 0x3d
47d6: 2300 movs r3, #0
47d8: 9306 str r3, [sp, #24]
_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)
47da: 4da8 ldr r5, [pc, #672] ; (4a7c <lv_obj_set_state+0x2c8>)
lv_style_t * style_trans = _lv_style_list_get_transition_style(style_list);
47dc: 46d8 mov r8, fp
47de: e1d2 b.n 4b86 <lv_obj_set_state+0x3d2>
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
47e0: 4ba7 ldr r3, [pc, #668] ; (4a80 <lv_obj_set_state+0x2cc>)
47e2: 9300 str r3, [sp, #0]
47e4: f240 6237 movw r2, #1591 ; 0x637
47e8: 49a6 ldr r1, [pc, #664] ; (4a84 <lv_obj_set_state+0x2d0>)
47ea: 2003 movs r0, #3
47ec: 4ca6 ldr r4, [pc, #664] ; (4a88 <lv_obj_set_state+0x2d4>)
47ee: 47a0 blx r4
47f0: 4652 mov r2, sl
47f2: 2300 movs r3, #0
47f4: 48a5 ldr r0, [pc, #660] ; (4a8c <lv_obj_set_state+0x2d8>)
47f6: 49a6 ldr r1, [pc, #664] ; (4a90 <lv_obj_set_state+0x2dc>)
47f8: 4788 blx r1
47fa: e7fe b.n 47fa <lv_obj_set_state+0x46>
style_list->skip_trans = 1;
47fc: 7973 ldrb r3, [r6, #5]
47fe: f043 0304 orr.w r3, r3, #4
4802: 7173 strb r3, [r6, #5]
obj->state = prev_state;
4804: f88a 803d strb.w r8, [sl, #61] ; 0x3d
lv_style_int_t int1 = _lv_obj_get_style_int(obj, part, prop);
4808: 4622 mov r2, r4
480a: f8dd b00c ldr.w fp, [sp, #12]
480e: 4659 mov r1, fp
4810: 4650 mov r0, sl
4812: 47a8 blx r5
4814: 4607 mov r7, r0
obj->state = new_state;
4816: f88a 903d strb.w r9, [sl, #61] ; 0x3d
lv_style_int_t int2 = _lv_obj_get_style_int(obj, part, prop);
481a: 4622 mov r2, r4
481c: f8cd b00c str.w fp, [sp, #12]
4820: 4659 mov r1, fp
4822: 4650 mov r0, sl
4824: 47a8 blx r5
4826: 4683 mov fp, r0
style_list->skip_trans = 0;
4828: 7973 ldrb r3, [r6, #5]
482a: f36f 0382 bfc r3, #2, #1
482e: 7173 strb r3, [r6, #5]
if(int1 == int2) return NULL;
4830: 4287 cmp r7, r0
4832: d04a beq.n 48ca <lv_obj_set_state+0x116>
obj->state = prev_state;
4834: f88a 803d strb.w r8, [sl, #61] ; 0x3d
int1 = _lv_obj_get_style_int(obj, part, prop);
4838: 4622 mov r2, r4
483a: 9903 ldr r1, [sp, #12]
483c: 4650 mov r0, sl
483e: 47a8 blx r5
4840: 4606 mov r6, r0
obj->state = new_state;
4842: f88a 903d strb.w r9, [sl, #61] ; 0x3d
_lv_style_set_int(style_trans, prop, int1); /*Be sure `trans_style` has a valid value */
4846: 4602 mov r2, r0
4848: 4621 mov r1, r4
484a: 9804 ldr r0, [sp, #16]
484c: 4b91 ldr r3, [pc, #580] ; (4a94 <lv_obj_set_state+0x2e0>)
484e: 4798 blx r3
if(prop == LV_STYLE_RADIUS) {
4850: 2c01 cmp r4, #1
4852: f000 8094 beq.w 497e <lv_obj_set_state+0x1ca>
tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll));
4856: 4890 ldr r0, [pc, #576] ; (4a98 <lv_obj_set_state+0x2e4>)
4858: 4b90 ldr r3, [pc, #576] ; (4a9c <lv_obj_set_state+0x2e8>)
485a: 4798 blx r3
485c: 4607 mov r7, r0
LV_ASSERT_MEM(tr);
485e: 4b86 ldr r3, [pc, #536] ; (4a78 <lv_obj_set_state+0x2c4>)
4860: 4798 blx r3
4862: 2800 cmp r0, #0
4864: f000 80a2 beq.w 49ac <lv_obj_set_state+0x1f8>
if(tr == NULL) return NULL;
4868: 2f00 cmp r7, #0
486a: d02e beq.n 48ca <lv_obj_set_state+0x116>
tr->start_value._int = int1;
486c: 813e strh r6, [r7, #8]
tr->end_value._int = int2;
486e: f8a7 b00c strh.w fp, [r7, #12]
tr->obj = obj;
4872: f8c7 a000 str.w sl, [r7]
tr->prop = props[i];
4876: 80bc strh r4, [r7, #4]
tr->part = part;
4878: f89d 300c ldrb.w r3, [sp, #12]
487c: 71bb strb r3, [r7, #6]
lv_anim_init(&a);
487e: a810 add r0, sp, #64 ; 0x40
4880: 4b87 ldr r3, [pc, #540] ; (4aa0 <lv_obj_set_state+0x2ec>)
4882: 4798 blx r3
* @param a pointer to an initialized `lv_anim_t` variable
* @param var pointer to a variable to animate
*/
static inline void lv_anim_set_var(lv_anim_t * a, void * var)
{
a->var = var;
4884: 9710 str r7, [sp, #64] ; 0x40
* 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;
4886: 4b87 ldr r3, [pc, #540] ; (4aa4 <lv_obj_set_state+0x2f0>)
4888: 9311 str r3, [sp, #68] ; 0x44
* @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;
488a: 4b87 ldr r3, [pc, #540] ; (4aa8 <lv_obj_set_state+0x2f4>)
488c: 9312 str r3, [sp, #72] ; 0x48
* @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;
488e: 4b87 ldr r3, [pc, #540] ; (4aac <lv_obj_set_state+0x2f8>)
4890: 9313 str r3, [sp, #76] ; 0x4c
a->start = start;
4892: 2300 movs r3, #0
4894: 9316 str r3, [sp, #88] ; 0x58
a->end = end;
4896: 23ff movs r3, #255 ; 0xff
4898: 9317 str r3, [sp, #92] ; 0x5c
a->time = duration;
489a: 9b0a ldr r3, [sp, #40] ; 0x28
489c: 9318 str r3, [sp, #96] ; 0x60
a->act_time = (int32_t)(-delay);
489e: 9b09 ldr r3, [sp, #36] ; 0x24
48a0: 425b negs r3, r3
48a2: 9319 str r3, [sp, #100] ; 0x64
48a4: 9a08 ldr r2, [sp, #32]
48a6: 1e53 subs r3, r2, #1
48a8: 1dd0 adds r0, r2, #7
uint8_t * d8 = (uint8_t *)dst;
48aa: aa14 add r2, sp, #80 ; 0x50
*d8 = *s8;
48ac: f813 1f01 ldrb.w r1, [r3, #1]!
48b0: f802 1b01 strb.w r1, [r2], #1
while(len) {
48b4: 4283 cmp r3, r0
48b6: d1f9 bne.n 48ac <lv_obj_set_state+0xf8>
a.early_apply = 0;
48b8: f89d 3076 ldrb.w r3, [sp, #118] ; 0x76
48bc: f36f 0300 bfc r3, #0, #1
48c0: f88d 3076 strb.w r3, [sp, #118] ; 0x76
lv_anim_start(&a);
48c4: a810 add r0, sp, #64 ; 0x40
48c6: 4b7a ldr r3, [pc, #488] ; (4ab0 <lv_obj_set_state+0x2fc>)
48c8: 4798 blx r3
for(i = 0; i < LV_STYLE_TRANS_NUM_MAX; i++) {
48ca: 9b05 ldr r3, [sp, #20]
48cc: aa10 add r2, sp, #64 ; 0x40
48ce: 4293 cmp r3, r2
48d0: f000 8154 beq.w 4b7c <lv_obj_set_state+0x3c8>
if(props[i] != 0) {
48d4: 9b05 ldr r3, [sp, #20]
48d6: f833 4b02 ldrh.w r4, [r3], #2
48da: 9305 str r3, [sp, #20]
48dc: 2c00 cmp r4, #0
48de: d0f4 beq.n 48ca <lv_obj_set_state+0x116>
_lv_style_list_add_trans_style(style_list);
48e0: 9807 ldr r0, [sp, #28]
48e2: 4b74 ldr r3, [pc, #464] ; (4ab4 <lv_obj_set_state+0x300>)
48e4: 4798 blx r3
lv_style_list_t * style_list = lv_obj_get_style_list(obj, part);
48e6: 9903 ldr r1, [sp, #12]
48e8: 4650 mov r0, sl
48ea: 4b73 ldr r3, [pc, #460] ; (4ab8 <lv_obj_set_state+0x304>)
48ec: 4798 blx r3
48ee: 4606 mov r6, r0
lv_style_t * style_trans = _lv_style_list_get_transition_style(style_list);
48f0: 4b72 ldr r3, [pc, #456] ; (4abc <lv_obj_set_state+0x308>)
48f2: 4798 blx r3
48f4: 9004 str r0, [sp, #16]
if((prop & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/
48f6: f004 030f and.w r3, r4, #15
48fa: 2b08 cmp r3, #8
48fc: f77f af7e ble.w 47fc <lv_obj_set_state+0x48>
else if((prop & 0xF) < LV_STYLE_ID_OPA) { /*Color*/
4900: 2b0b cmp r3, #11
4902: dd61 ble.n 49c8 <lv_obj_set_state+0x214>
else if((prop & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/
4904: 2b0d cmp r3, #13
4906: f300 80e9 bgt.w 4adc <lv_obj_set_state+0x328>
style_list->skip_trans = 1;
490a: 7973 ldrb r3, [r6, #5]
490c: f043 0304 orr.w r3, r3, #4
4910: 7173 strb r3, [r6, #5]
obj->state = prev_state;
4912: f88a 803d strb.w r8, [sl, #61] ; 0x3d
lv_opa_t o1 = _lv_obj_get_style_opa(obj, part, prop);
4916: 4622 mov r2, r4
4918: f8dd b00c ldr.w fp, [sp, #12]
491c: 4659 mov r1, fp
491e: 4650 mov r0, sl
4920: 4f67 ldr r7, [pc, #412] ; (4ac0 <lv_obj_set_state+0x30c>)
4922: 47b8 blx r7
4924: 900b str r0, [sp, #44] ; 0x2c
obj->state = new_state;
4926: f88a 903d strb.w r9, [sl, #61] ; 0x3d
lv_opa_t o2 = _lv_obj_get_style_opa(obj, part, prop);
492a: 4622 mov r2, r4
492c: f8cd b00c str.w fp, [sp, #12]
4930: 4659 mov r1, fp
4932: 4650 mov r0, sl
4934: 47b8 blx r7
4936: 4683 mov fp, r0
style_list->skip_trans = 0;
4938: 7973 ldrb r3, [r6, #5]
493a: f36f 0382 bfc r3, #2, #1
493e: 7173 strb r3, [r6, #5]
if(o1 == o2) return NULL;
4940: 9b0b ldr r3, [sp, #44] ; 0x2c
4942: 4283 cmp r3, r0
4944: d0c1 beq.n 48ca <lv_obj_set_state+0x116>
obj->state = prev_state;
4946: f88a 803d strb.w r8, [sl, #61] ; 0x3d
o1 = _lv_obj_get_style_opa(obj, part, prop);
494a: 4622 mov r2, r4
494c: 9903 ldr r1, [sp, #12]
494e: 4650 mov r0, sl
4950: 47b8 blx r7
4952: 4606 mov r6, r0
obj->state = new_state;
4954: f88a 903d strb.w r9, [sl, #61] ; 0x3d
_lv_style_set_opa(style_trans, prop, o1); /*Be sure `trans_style` has a valid value */
4958: 4602 mov r2, r0
495a: 4621 mov r1, r4
495c: 9804 ldr r0, [sp, #16]
495e: 4b59 ldr r3, [pc, #356] ; (4ac4 <lv_obj_set_state+0x310>)
4960: 4798 blx r3
tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll));
4962: 484d ldr r0, [pc, #308] ; (4a98 <lv_obj_set_state+0x2e4>)
4964: 4b4d ldr r3, [pc, #308] ; (4a9c <lv_obj_set_state+0x2e8>)
4966: 4798 blx r3
4968: 4607 mov r7, r0
LV_ASSERT_MEM(tr);
496a: 4b43 ldr r3, [pc, #268] ; (4a78 <lv_obj_set_state+0x2c4>)
496c: 4798 blx r3
496e: 2800 cmp r0, #0
4970: d074 beq.n 4a5c <lv_obj_set_state+0x2a8>
if(tr == NULL) return NULL;
4972: 2f00 cmp r7, #0
4974: d0a9 beq.n 48ca <lv_obj_set_state+0x116>
tr->start_value._opa = o1;
4976: 723e strb r6, [r7, #8]
tr->end_value._opa = o2;
4978: f887 b00c strb.w fp, [r7, #12]
497c: e779 b.n 4872 <lv_obj_set_state+0xbe>
if(int1 == LV_RADIUS_CIRCLE || int2 == LV_RADIUS_CIRCLE) {
497e: f647 73ff movw r3, #32767 ; 0x7fff
4982: 429e cmp r6, r3
4984: f000 814c beq.w 4c20 <lv_obj_set_state+0x46c>
4988: 459b cmp fp, r3
498a: f47f af64 bne.w 4856 <lv_obj_set_state+0xa2>
lv_coord_t whalf = lv_obj_get_width(obj) / 2;
498e: 4650 mov r0, sl
4990: f8df b144 ldr.w fp, [pc, #324] ; 4ad8 <lv_obj_set_state+0x324>
4994: 47d8 blx fp
4996: eb00 70d0 add.w r0, r0, r0, lsr #31
499a: f340 074f sbfx r7, r0, #1, #16
lv_coord_t hhalf = lv_obj_get_width(obj) / 2;
499e: 4650 mov r0, sl
49a0: 47d8 blx fp
49a2: eb00 70d0 add.w r0, r0, r0, lsr #31
49a6: f340 034f sbfx r3, r0, #1, #16
49aa: e151 b.n 4c50 <lv_obj_set_state+0x49c>
LV_ASSERT_MEM(tr);
49ac: 4b46 ldr r3, [pc, #280] ; (4ac8 <lv_obj_set_state+0x314>)
49ae: 9300 str r3, [sp, #0]
49b0: f640 62b2 movw r2, #3762 ; 0xeb2
49b4: 4933 ldr r1, [pc, #204] ; (4a84 <lv_obj_set_state+0x2d0>)
49b6: 2003 movs r0, #3
49b8: 4c33 ldr r4, [pc, #204] ; (4a88 <lv_obj_set_state+0x2d4>)
49ba: 47a0 blx r4
49bc: 463a mov r2, r7
49be: 2300 movs r3, #0
49c0: 4842 ldr r0, [pc, #264] ; (4acc <lv_obj_set_state+0x318>)
49c2: 4933 ldr r1, [pc, #204] ; (4a90 <lv_obj_set_state+0x2dc>)
49c4: 4788 blx r1
49c6: e7fe b.n 49c6 <lv_obj_set_state+0x212>
style_list->skip_trans = 1;
49c8: 7973 ldrb r3, [r6, #5]
49ca: f043 0304 orr.w r3, r3, #4
49ce: 7173 strb r3, [r6, #5]
obj->state = prev_state;
49d0: f88a 803d strb.w r8, [sl, #61] ; 0x3d
lv_color_t c1 = _lv_obj_get_style_color(obj, part, prop);
49d4: 4622 mov r2, r4
49d6: 9903 ldr r1, [sp, #12]
49d8: 4650 mov r0, sl
49da: 4f3d ldr r7, [pc, #244] ; (4ad0 <lv_obj_set_state+0x31c>)
49dc: 47b8 blx r7
49de: 4683 mov fp, r0
obj->state = new_state;
49e0: f88a 903d strb.w r9, [sl, #61] ; 0x3d
lv_color_t c2 = _lv_obj_get_style_color(obj, part, prop);
49e4: 4622 mov r2, r4
49e6: 9903 ldr r1, [sp, #12]
49e8: 4650 mov r0, sl
49ea: 47b8 blx r7
49ec: f8ad 002c strh.w r0, [sp, #44] ; 0x2c
style_list->skip_trans = 0;
49f0: 7973 ldrb r3, [r6, #5]
49f2: f36f 0382 bfc r3, #2, #1
49f6: 7173 strb r3, [r6, #5]
if(c1.full == c2.full) return NULL;
49f8: fa1f fb8b uxth.w fp, fp
49fc: b283 uxth r3, r0
49fe: 459b cmp fp, r3
4a00: f43f af63 beq.w 48ca <lv_obj_set_state+0x116>
obj->state = prev_state;
4a04: f88a 803d strb.w r8, [sl, #61] ; 0x3d
c1 = _lv_obj_get_style_color(obj, part, prop);
4a08: 4622 mov r2, r4
4a0a: 9903 ldr r1, [sp, #12]
4a0c: 4650 mov r0, sl
4a0e: 47b8 blx r7
4a10: 4683 mov fp, r0
obj->state = new_state;
4a12: f88a 903d strb.w r9, [sl, #61] ; 0x3d
_lv_style_set_color(style_trans, prop, c1); /*Be sure `trans_style` has a valid value */
4a16: 4602 mov r2, r0
4a18: 4621 mov r1, r4
4a1a: 9804 ldr r0, [sp, #16]
4a1c: 4b2d ldr r3, [pc, #180] ; (4ad4 <lv_obj_set_state+0x320>)
4a1e: 4798 blx r3
tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll));
4a20: 481d ldr r0, [pc, #116] ; (4a98 <lv_obj_set_state+0x2e4>)
4a22: 4b1e ldr r3, [pc, #120] ; (4a9c <lv_obj_set_state+0x2e8>)
4a24: 4798 blx r3
4a26: 4607 mov r7, r0
LV_ASSERT_MEM(tr);
4a28: 4b13 ldr r3, [pc, #76] ; (4a78 <lv_obj_set_state+0x2c4>)
4a2a: 4798 blx r3
4a2c: b140 cbz r0, 4a40 <lv_obj_set_state+0x28c>
if(tr == NULL) return NULL;
4a2e: 2f00 cmp r7, #0
4a30: f43f af4b beq.w 48ca <lv_obj_set_state+0x116>
tr->start_value._color = c1;
4a34: f8a7 b008 strh.w fp, [r7, #8]
tr->end_value._color = c2;
4a38: f8bd 302c ldrh.w r3, [sp, #44] ; 0x2c
4a3c: 81bb strh r3, [r7, #12]
4a3e: e718 b.n 4872 <lv_obj_set_state+0xbe>
LV_ASSERT_MEM(tr);
4a40: 4b21 ldr r3, [pc, #132] ; (4ac8 <lv_obj_set_state+0x314>)
4a42: 9300 str r3, [sp, #0]
4a44: f640 62c6 movw r2, #3782 ; 0xec6
4a48: 490e ldr r1, [pc, #56] ; (4a84 <lv_obj_set_state+0x2d0>)
4a4a: 2003 movs r0, #3
4a4c: 4c0e ldr r4, [pc, #56] ; (4a88 <lv_obj_set_state+0x2d4>)
4a4e: 47a0 blx r4
4a50: 463a mov r2, r7
4a52: 2300 movs r3, #0
4a54: 481d ldr r0, [pc, #116] ; (4acc <lv_obj_set_state+0x318>)
4a56: 490e ldr r1, [pc, #56] ; (4a90 <lv_obj_set_state+0x2dc>)
4a58: 4788 blx r1
4a5a: e7fe b.n 4a5a <lv_obj_set_state+0x2a6>
LV_ASSERT_MEM(tr);
4a5c: 4b1a ldr r3, [pc, #104] ; (4ac8 <lv_obj_set_state+0x314>)
4a5e: 9300 str r3, [sp, #0]
4a60: f640 62db movw r2, #3803 ; 0xedb
4a64: 4907 ldr r1, [pc, #28] ; (4a84 <lv_obj_set_state+0x2d0>)
4a66: 2003 movs r0, #3
4a68: 4c07 ldr r4, [pc, #28] ; (4a88 <lv_obj_set_state+0x2d4>)
4a6a: 47a0 blx r4
4a6c: 463a mov r2, r7
4a6e: 2300 movs r3, #0
4a70: 4816 ldr r0, [pc, #88] ; (4acc <lv_obj_set_state+0x318>)
4a72: 4907 ldr r1, [pc, #28] ; (4a90 <lv_obj_set_state+0x2dc>)
4a74: 4788 blx r1
4a76: e7fe b.n 4a76 <lv_obj_set_state+0x2c2>
4a78: 000022b1 .word 0x000022b1
4a7c: 000044d5 .word 0x000044d5
4a80: 000246d0 .word 0x000246d0
4a84: 000247dc .word 0x000247dc
4a88: 0001225d .word 0x0001225d
4a8c: 0002483c .word 0x0002483c
4a90: 000022b9 .word 0x000022b9
4a94: 000068e1 .word 0x000068e1
4a98: 20006d3c .word 0x20006d3c
4a9c: 00011f11 .word 0x00011f11
4aa0: 000112e5 .word 0x000112e5
4aa4: 00003cad .word 0x00003cad
4aa8: 00004741 .word 0x00004741
4aac: 00003121 .word 0x00003121
4ab0: 000113a1 .word 0x000113a1
4ab4: 00007235 .word 0x00007235
4ab8: 00002ffd .word 0x00002ffd
4abc: 000070e7 .word 0x000070e7
4ac0: 0000460d .word 0x0000460d
4ac4: 00006b69 .word 0x00006b69
4ac8: 000246e4 .word 0x000246e4
4acc: 00023fd8 .word 0x00023fd8
4ad0: 00004581 .word 0x00004581
4ad4: 00006a25 .word 0x00006a25
4ad8: 00002f5d .word 0x00002f5d
obj->state = prev_state;
4adc: f88a 803d strb.w r8, [sl, #61] ; 0x3d
style_list->skip_trans = 1;
4ae0: 7973 ldrb r3, [r6, #5]
4ae2: f043 0304 orr.w r3, r3, #4
4ae6: 7173 strb r3, [r6, #5]
const void * p1 = _lv_obj_get_style_ptr(obj, part, prop);
4ae8: 4622 mov r2, r4
4aea: f8dd b00c ldr.w fp, [sp, #12]
4aee: 4659 mov r1, fp
4af0: 4650 mov r0, sl
4af2: 4f5c ldr r7, [pc, #368] ; (4c64 <lv_obj_set_state+0x4b0>)
4af4: 47b8 blx r7
4af6: 900c str r0, [sp, #48] ; 0x30
obj->state = new_state;
4af8: f88a 903d strb.w r9, [sl, #61] ; 0x3d
const void * p2 = _lv_obj_get_style_ptr(obj, part, prop);
4afc: 4622 mov r2, r4
4afe: f8cd b00c str.w fp, [sp, #12]
4b02: 4659 mov r1, fp
4b04: 4650 mov r0, sl
4b06: 47b8 blx r7
4b08: 4683 mov fp, r0
4b0a: a920 add r1, sp, #128 ; 0x80
4b0c: f841 0d40 str.w r0, [r1, #-64]!
style_list->skip_trans = 0;
4b10: 7973 ldrb r3, [r6, #5]
4b12: f36f 0382 bfc r3, #2, #1
4b16: 7173 strb r3, [r6, #5]
if(memcmp(&p1, &p2, sizeof(const void *)) == 0) return NULL;
4b18: 2204 movs r2, #4
4b1a: a80c add r0, sp, #48 ; 0x30
4b1c: 4b52 ldr r3, [pc, #328] ; (4c68 <lv_obj_set_state+0x4b4>)
4b1e: 4798 blx r3
4b20: 2800 cmp r0, #0
4b22: f43f aed2 beq.w 48ca <lv_obj_set_state+0x116>
obj->state = prev_state;
4b26: f88a 803d strb.w r8, [sl, #61] ; 0x3d
p1 = _lv_obj_get_style_ptr(obj, part, prop);
4b2a: 4622 mov r2, r4
4b2c: 9903 ldr r1, [sp, #12]
4b2e: 4650 mov r0, sl
4b30: 47b8 blx r7
4b32: 4606 mov r6, r0
4b34: 900c str r0, [sp, #48] ; 0x30
obj->state = new_state;
4b36: f88a 903d strb.w r9, [sl, #61] ; 0x3d
_lv_style_set_ptr(style_trans, prop, p1); /*Be sure `trans_style` has a valid value */
4b3a: 4602 mov r2, r0
4b3c: 4621 mov r1, r4
4b3e: 9804 ldr r0, [sp, #16]
4b40: 4b4a ldr r3, [pc, #296] ; (4c6c <lv_obj_set_state+0x4b8>)
4b42: 4798 blx r3
tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll));
4b44: 484a ldr r0, [pc, #296] ; (4c70 <lv_obj_set_state+0x4bc>)
4b46: 4b4b ldr r3, [pc, #300] ; (4c74 <lv_obj_set_state+0x4c0>)
4b48: 4798 blx r3
4b4a: 4607 mov r7, r0
LV_ASSERT_MEM(tr);
4b4c: 4b4a ldr r3, [pc, #296] ; (4c78 <lv_obj_set_state+0x4c4>)
4b4e: 4798 blx r3
4b50: b130 cbz r0, 4b60 <lv_obj_set_state+0x3ac>
if(tr == NULL) return NULL;
4b52: 2f00 cmp r7, #0
4b54: f43f aeb9 beq.w 48ca <lv_obj_set_state+0x116>
tr->start_value._ptr = p1;
4b58: 60be str r6, [r7, #8]
tr->end_value._ptr = p2;
4b5a: f8c7 b00c str.w fp, [r7, #12]
4b5e: e688 b.n 4872 <lv_obj_set_state+0xbe>
LV_ASSERT_MEM(tr);
4b60: 4b46 ldr r3, [pc, #280] ; (4c7c <lv_obj_set_state+0x4c8>)
4b62: 9300 str r3, [sp, #0]
4b64: f640 62ef movw r2, #3823 ; 0xeef
4b68: 4945 ldr r1, [pc, #276] ; (4c80 <lv_obj_set_state+0x4cc>)
4b6a: 2003 movs r0, #3
4b6c: 4c45 ldr r4, [pc, #276] ; (4c84 <lv_obj_set_state+0x4d0>)
4b6e: 47a0 blx r4
4b70: 463a mov r2, r7
4b72: 2300 movs r3, #0
4b74: 4844 ldr r0, [pc, #272] ; (4c88 <lv_obj_set_state+0x4d4>)
4b76: 4945 ldr r1, [pc, #276] ; (4c8c <lv_obj_set_state+0x4d8>)
4b78: 4788 blx r1
4b7a: e7fe b.n 4b7a <lv_obj_set_state+0x3c6>
4b7c: 9b06 ldr r3, [sp, #24]
4b7e: 3301 adds r3, #1
4b80: 9306 str r3, [sp, #24]
for(part = 0; part < _LV_OBJ_PART_REAL_LAST; part++) {
4b82: 2b40 cmp r3, #64 ; 0x40
4b84: d045 beq.n 4c12 <lv_obj_set_state+0x45e>
4b86: f89d 3018 ldrb.w r3, [sp, #24]
4b8a: 9303 str r3, [sp, #12]
lv_style_list_t * style_list = lv_obj_get_style_list(obj, part);
4b8c: 4619 mov r1, r3
4b8e: 4650 mov r0, sl
4b90: 4b3f ldr r3, [pc, #252] ; (4c90 <lv_obj_set_state+0x4dc>)
4b92: 4798 blx r3
if(style_list == NULL) break; /*No more style lists*/
4b94: 9007 str r0, [sp, #28]
4b96: 2800 cmp r0, #0
4b98: d03b beq.n 4c12 <lv_obj_set_state+0x45e>
if(style_list->ignore_trans) continue;
4b9a: 7943 ldrb r3, [r0, #5]
4b9c: f013 0f08 tst.w r3, #8
4ba0: d1ec bne.n 4b7c <lv_obj_set_state+0x3c8>
4ba2: 22b0 movs r2, #176 ; 0xb0
4ba4: 9c03 ldr r4, [sp, #12]
4ba6: 4621 mov r1, r4
4ba8: 4650 mov r0, sl
4baa: 47a8 blx r5
4bac: 900a str r0, [sp, #40] ; 0x28
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_DELAY, transition_delay, lv_style_int_t, _int, scalar)
4bae: 22b1 movs r2, #177 ; 0xb1
4bb0: 4621 mov r1, r4
4bb2: 4650 mov r0, sl
4bb4: 47a8 blx r5
4bb6: 9009 str r0, [sp, #36] ; 0x24
_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)
4bb8: 22be movs r2, #190 ; 0xbe
4bba: 4621 mov r1, r4
4bbc: 4650 mov r0, sl
4bbe: 4b29 ldr r3, [pc, #164] ; (4c64 <lv_obj_set_state+0x4b0>)
4bc0: 4798 blx r3
4bc2: 9008 str r0, [sp, #32]
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_1, transition_prop_1, lv_style_int_t, _int, scalar)
4bc4: 22b2 movs r2, #178 ; 0xb2
4bc6: 4621 mov r1, r4
4bc8: 4650 mov r0, sl
4bca: 47a8 blx r5
props[0] = lv_obj_get_style_transition_prop_1(obj, part);
4bcc: f8ad 0034 strh.w r0, [sp, #52] ; 0x34
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_2, transition_prop_2, lv_style_int_t, _int, scalar)
4bd0: 22b3 movs r2, #179 ; 0xb3
4bd2: 4621 mov r1, r4
4bd4: 4650 mov r0, sl
4bd6: 47a8 blx r5
props[1] = lv_obj_get_style_transition_prop_2(obj, part);
4bd8: f8ad 0036 strh.w r0, [sp, #54] ; 0x36
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_3, transition_prop_3, lv_style_int_t, _int, scalar)
4bdc: 22b4 movs r2, #180 ; 0xb4
4bde: 4621 mov r1, r4
4be0: 4650 mov r0, sl
4be2: 47a8 blx r5
props[2] = lv_obj_get_style_transition_prop_3(obj, part);
4be4: f8ad 0038 strh.w r0, [sp, #56] ; 0x38
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_4, transition_prop_4, lv_style_int_t, _int, scalar)
4be8: 22b5 movs r2, #181 ; 0xb5
4bea: 4621 mov r1, r4
4bec: 4650 mov r0, sl
4bee: 47a8 blx r5
props[3] = lv_obj_get_style_transition_prop_4(obj, part);
4bf0: f8ad 003a strh.w r0, [sp, #58] ; 0x3a
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar)
4bf4: 22b6 movs r2, #182 ; 0xb6
4bf6: 4621 mov r1, r4
4bf8: 4650 mov r0, sl
4bfa: 47a8 blx r5
props[4] = lv_obj_get_style_transition_prop_5(obj, part);
4bfc: f8ad 003c strh.w r0, [sp, #60] ; 0x3c
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar)
4c00: 22b7 movs r2, #183 ; 0xb7
4c02: 4621 mov r1, r4
4c04: 4650 mov r0, sl
4c06: 47a8 blx r5
props[5] = lv_obj_get_style_transition_prop_6(obj, part);
4c08: f8ad 003e strh.w r0, [sp, #62] ; 0x3e
4c0c: ab0d add r3, sp, #52 ; 0x34
4c0e: 9305 str r3, [sp, #20]
4c10: e660 b.n 48d4 <lv_obj_set_state+0x120>
lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL);
4c12: 21ff movs r1, #255 ; 0xff
4c14: 4650 mov r0, sl
4c16: 4b1f ldr r3, [pc, #124] ; (4c94 <lv_obj_set_state+0x4e0>)
4c18: 4798 blx r3
}
4c1a: b021 add sp, #132 ; 0x84
4c1c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
lv_coord_t whalf = lv_obj_get_width(obj) / 2;
4c20: 4650 mov r0, sl
4c22: 4e1d ldr r6, [pc, #116] ; (4c98 <lv_obj_set_state+0x4e4>)
4c24: 47b0 blx r6
4c26: eb00 70d0 add.w r0, r0, r0, lsr #31
4c2a: f340 074f sbfx r7, r0, #1, #16
lv_coord_t hhalf = lv_obj_get_width(obj) / 2;
4c2e: 4650 mov r0, sl
4c30: 47b0 blx r6
4c32: eb00 70d0 add.w r0, r0, r0, lsr #31
4c36: f340 034f sbfx r3, r0, #1, #16
if(int1 == LV_RADIUS_CIRCLE) int1 = LV_MATH_MIN(whalf + 1, hhalf + 1);
4c3a: 1c5e adds r6, r3, #1
4c3c: 1c7a adds r2, r7, #1
4c3e: 4296 cmp r6, r2
4c40: bfa8 it ge
4c42: 4616 movge r6, r2
4c44: b236 sxth r6, r6
if(int2 == LV_RADIUS_CIRCLE) int2 = LV_MATH_MIN(whalf + 1, hhalf + 1);
4c46: f647 72ff movw r2, #32767 ; 0x7fff
4c4a: 4593 cmp fp, r2
4c4c: f47f ae03 bne.w 4856 <lv_obj_set_state+0xa2>
4c50: f103 0b01 add.w fp, r3, #1
4c54: 3701 adds r7, #1
4c56: 45bb cmp fp, r7
4c58: bfa8 it ge
4c5a: 46bb movge fp, r7
4c5c: fa0f fb8b sxth.w fp, fp
4c60: e5f9 b.n 4856 <lv_obj_set_state+0xa2>
4c62: 4770 bx lr
4c64: 000046a1 .word 0x000046a1
4c68: 0001b4dd .word 0x0001b4dd
4c6c: 00006c99 .word 0x00006c99
4c70: 20006d3c .word 0x20006d3c
4c74: 00011f11 .word 0x00011f11
4c78: 000022b1 .word 0x000022b1
4c7c: 000246e4 .word 0x000246e4
4c80: 000247dc .word 0x000247dc
4c84: 0001225d .word 0x0001225d
4c88: 00023fd8 .word 0x00023fd8
4c8c: 000022b9 .word 0x000022b9
4c90: 00002ffd .word 0x00002ffd
4c94: 00003a99 .word 0x00003a99
4c98: 00002f5d .word 0x00002f5d
00004c9c <lv_obj_add_state>:
{
4c9c: b530 push {r4, r5, lr}
4c9e: b083 sub sp, #12
4ca0: 4605 mov r5, r0
4ca2: 460c mov r4, r1
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
4ca4: 4b0d ldr r3, [pc, #52] ; (4cdc <lv_obj_add_state+0x40>)
4ca6: 4798 blx r3
4ca8: b150 cbz r0, 4cc0 <lv_obj_add_state+0x24>
lv_state_t new_state = obj->state | state;
4caa: f895 303d ldrb.w r3, [r5, #61] ; 0x3d
4cae: ea43 0104 orr.w r1, r3, r4
if(obj->state != new_state) {
4cb2: 428b cmp r3, r1
4cb4: d002 beq.n 4cbc <lv_obj_add_state+0x20>
lv_obj_set_state(obj, new_state);
4cb6: 4628 mov r0, r5
4cb8: 4b09 ldr r3, [pc, #36] ; (4ce0 <lv_obj_add_state+0x44>)
4cba: 4798 blx r3
}
4cbc: b003 add sp, #12
4cbe: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
4cc0: 4b08 ldr r3, [pc, #32] ; (4ce4 <lv_obj_add_state+0x48>)
4cc2: 9300 str r3, [sp, #0]
4cc4: f240 627e movw r2, #1662 ; 0x67e
4cc8: 4907 ldr r1, [pc, #28] ; (4ce8 <lv_obj_add_state+0x4c>)
4cca: 2003 movs r0, #3
4ccc: 4c07 ldr r4, [pc, #28] ; (4cec <lv_obj_add_state+0x50>)
4cce: 47a0 blx r4
4cd0: 462a mov r2, r5
4cd2: 2300 movs r3, #0
4cd4: 4806 ldr r0, [pc, #24] ; (4cf0 <lv_obj_add_state+0x54>)
4cd6: 4907 ldr r1, [pc, #28] ; (4cf4 <lv_obj_add_state+0x58>)
4cd8: 4788 blx r1
4cda: e7fe b.n 4cda <lv_obj_add_state+0x3e>
4cdc: 000022b1 .word 0x000022b1
4ce0: 000047b5 .word 0x000047b5
4ce4: 000246f4 .word 0x000246f4
4ce8: 000247dc .word 0x000247dc
4cec: 0001225d .word 0x0001225d
4cf0: 0002483c .word 0x0002483c
4cf4: 000022b9 .word 0x000022b9
00004cf8 <lv_obj_clear_state>:
{
4cf8: b530 push {r4, r5, lr}
4cfa: b083 sub sp, #12
4cfc: 4605 mov r5, r0
4cfe: 460c mov r4, r1
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
4d00: 4b0d ldr r3, [pc, #52] ; (4d38 <lv_obj_clear_state+0x40>)
4d02: 4798 blx r3
4d04: b150 cbz r0, 4d1c <lv_obj_clear_state+0x24>
lv_state_t new_state = obj->state & (~state);
4d06: f895 303d ldrb.w r3, [r5, #61] ; 0x3d
4d0a: ea23 0104 bic.w r1, r3, r4
if(obj->state != new_state) {
4d0e: 428b cmp r3, r1
4d10: d002 beq.n 4d18 <lv_obj_clear_state+0x20>
lv_obj_set_state(obj, new_state);
4d12: 4628 mov r0, r5
4d14: 4b09 ldr r3, [pc, #36] ; (4d3c <lv_obj_clear_state+0x44>)
4d16: 4798 blx r3
}
4d18: b003 add sp, #12
4d1a: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
4d1c: 4b08 ldr r3, [pc, #32] ; (4d40 <lv_obj_clear_state+0x48>)
4d1e: 9300 str r3, [sp, #0]
4d20: f240 628f movw r2, #1679 ; 0x68f
4d24: 4907 ldr r1, [pc, #28] ; (4d44 <lv_obj_clear_state+0x4c>)
4d26: 2003 movs r0, #3
4d28: 4c07 ldr r4, [pc, #28] ; (4d48 <lv_obj_clear_state+0x50>)
4d2a: 47a0 blx r4
4d2c: 462a mov r2, r5
4d2e: 2300 movs r3, #0
4d30: 4806 ldr r0, [pc, #24] ; (4d4c <lv_obj_clear_state+0x54>)
4d32: 4907 ldr r1, [pc, #28] ; (4d50 <lv_obj_clear_state+0x58>)
4d34: 4788 blx r1
4d36: e7fe b.n 4d36 <lv_obj_clear_state+0x3e>
4d38: 000022b1 .word 0x000022b1
4d3c: 000047b5 .word 0x000047b5
4d40: 00024708 .word 0x00024708
4d44: 000247dc .word 0x000247dc
4d48: 0001225d .word 0x0001225d
4d4c: 0002483c .word 0x0002483c
4d50: 000022b9 .word 0x000022b9
00004d54 <lv_obj_get_signal_cb>:
{
4d54: b530 push {r4, r5, lr}
4d56: b083 sub sp, #12
4d58: 4604 mov r4, r0
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
4d5a: 4b0a ldr r3, [pc, #40] ; (4d84 <lv_obj_get_signal_cb+0x30>)
4d5c: 4798 blx r3
4d5e: b110 cbz r0, 4d66 <lv_obj_get_signal_cb+0x12>
}
4d60: 69e0 ldr r0, [r4, #28]
4d62: b003 add sp, #12
4d64: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
4d66: 4b08 ldr r3, [pc, #32] ; (4d88 <lv_obj_get_signal_cb+0x34>)
4d68: 9300 str r3, [sp, #0]
4d6a: f640 22f5 movw r2, #2805 ; 0xaf5
4d6e: 4907 ldr r1, [pc, #28] ; (4d8c <lv_obj_get_signal_cb+0x38>)
4d70: 2003 movs r0, #3
4d72: 4d07 ldr r5, [pc, #28] ; (4d90 <lv_obj_get_signal_cb+0x3c>)
4d74: 47a8 blx r5
4d76: 4622 mov r2, r4
4d78: 2300 movs r3, #0
4d7a: 4806 ldr r0, [pc, #24] ; (4d94 <lv_obj_get_signal_cb+0x40>)
4d7c: 4906 ldr r1, [pc, #24] ; (4d98 <lv_obj_get_signal_cb+0x44>)
4d7e: 4788 blx r1
4d80: e7fe b.n 4d80 <lv_obj_get_signal_cb+0x2c>
4d82: bf00 nop
4d84: 000022b1 .word 0x000022b1
4d88: 0002471c .word 0x0002471c
4d8c: 000247dc .word 0x000247dc
4d90: 0001225d .word 0x0001225d
4d94: 0002483c .word 0x0002483c
4d98: 000022b9 .word 0x000022b9
00004d9c <lv_obj_get_ext_attr>:
{
4d9c: b530 push {r4, r5, lr}
4d9e: b083 sub sp, #12
4da0: 4604 mov r4, r0
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
4da2: 4b0a ldr r3, [pc, #40] ; (4dcc <lv_obj_get_ext_attr+0x30>)
4da4: 4798 blx r3
4da6: b110 cbz r0, 4dae <lv_obj_get_ext_attr+0x12>
}
4da8: 6a60 ldr r0, [r4, #36] ; 0x24
4daa: b003 add sp, #12
4dac: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
4dae: 4b08 ldr r3, [pc, #32] ; (4dd0 <lv_obj_get_ext_attr+0x34>)
4db0: 9300 str r3, [sp, #0]
4db2: f640 321e movw r2, #2846 ; 0xb1e
4db6: 4907 ldr r1, [pc, #28] ; (4dd4 <lv_obj_get_ext_attr+0x38>)
4db8: 2003 movs r0, #3
4dba: 4d07 ldr r5, [pc, #28] ; (4dd8 <lv_obj_get_ext_attr+0x3c>)
4dbc: 47a8 blx r5
4dbe: 4622 mov r2, r4
4dc0: 2300 movs r3, #0
4dc2: 4806 ldr r0, [pc, #24] ; (4ddc <lv_obj_get_ext_attr+0x40>)
4dc4: 4906 ldr r1, [pc, #24] ; (4de0 <lv_obj_get_ext_attr+0x44>)
4dc6: 4788 blx r1
4dc8: e7fe b.n 4dc8 <lv_obj_get_ext_attr+0x2c>
4dca: bf00 nop
4dcc: 000022b1 .word 0x000022b1
4dd0: 00024760 .word 0x00024760
4dd4: 000247dc .word 0x000247dc
4dd8: 0001225d .word 0x0001225d
4ddc: 0002483c .word 0x0002483c
4de0: 000022b9 .word 0x000022b9
00004de4 <lv_obj_get_group>:
{
4de4: b530 push {r4, r5, lr}
4de6: b083 sub sp, #12
4de8: 4604 mov r4, r0
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
4dea: 4b0a ldr r3, [pc, #40] ; (4e14 <lv_obj_get_group+0x30>)
4dec: 4798 blx r3
4dee: b110 cbz r0, 4df6 <lv_obj_get_group+0x12>
}
4df0: 6ba0 ldr r0, [r4, #56] ; 0x38
4df2: b003 add sp, #12
4df4: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
4df6: 4b08 ldr r3, [pc, #32] ; (4e18 <lv_obj_get_group+0x34>)
4df8: 9300 str r3, [sp, #0]
4dfa: f640 326f movw r2, #2927 ; 0xb6f
4dfe: 4907 ldr r1, [pc, #28] ; (4e1c <lv_obj_get_group+0x38>)
4e00: 2003 movs r0, #3
4e02: 4d07 ldr r5, [pc, #28] ; (4e20 <lv_obj_get_group+0x3c>)
4e04: 47a8 blx r5
4e06: 4622 mov r2, r4
4e08: 2300 movs r3, #0
4e0a: 4806 ldr r0, [pc, #24] ; (4e24 <lv_obj_get_group+0x40>)
4e0c: 4906 ldr r1, [pc, #24] ; (4e28 <lv_obj_get_group+0x44>)
4e0e: 4788 blx r1
4e10: e7fe b.n 4e10 <lv_obj_get_group+0x2c>
4e12: bf00 nop
4e14: 000022b1 .word 0x000022b1
4e18: 00024784 .word 0x00024784
4e1c: 000247dc .word 0x000247dc
4e20: 0001225d .word 0x0001225d
4e24: 0002483c .word 0x0002483c
4e28: 000022b9 .word 0x000022b9
00004e2c <obj_del_core>:
{
4e2c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
4e30: 4605 mov r5, r0
lv_event_send(obj, LV_EVENT_DELETE, NULL);
4e32: 2200 movs r2, #0
4e34: 2115 movs r1, #21
4e36: 4b3c ldr r3, [pc, #240] ; (4f28 <obj_del_core+0xfc>)
4e38: 4798 blx r3
lv_group_t * group = lv_obj_get_group(obj);
4e3a: 4628 mov r0, r5
4e3c: 4b3b ldr r3, [pc, #236] ; (4f2c <obj_del_core+0x100>)
4e3e: 4798 blx r3
if(group) lv_group_remove_obj(obj);
4e40: 4607 mov r7, r0
4e42: b110 cbz r0, 4e4a <obj_del_core+0x1e>
4e44: 4628 mov r0, r5
4e46: 4b3a ldr r3, [pc, #232] ; (4f30 <obj_del_core+0x104>)
4e48: 4798 blx r3
lv_anim_del(obj, NULL);
4e4a: 2100 movs r1, #0
4e4c: 4628 mov r0, r5
4e4e: 4b39 ldr r3, [pc, #228] ; (4f34 <obj_del_core+0x108>)
4e50: 4798 blx r3
trans_del(obj, 0xFF, 0xFF, NULL);
4e52: 2300 movs r3, #0
4e54: 22ff movs r2, #255 ; 0xff
4e56: 4611 mov r1, r2
4e58: 4628 mov r0, r5
4e5a: 4c37 ldr r4, [pc, #220] ; (4f38 <obj_del_core+0x10c>)
4e5c: 47a0 blx r4
i = _lv_ll_get_head(&(obj->child_ll));
4e5e: f105 0804 add.w r8, r5, #4
4e62: 4640 mov r0, r8
4e64: 4b35 ldr r3, [pc, #212] ; (4f3c <obj_del_core+0x110>)
4e66: 4798 blx r3
while(i != NULL) {
4e68: 4604 mov r4, r0
4e6a: b158 cbz r0, 4e84 <obj_del_core+0x58>
i_next = _lv_ll_get_next(&(obj->child_ll), i);
4e6c: f8df 90e8 ldr.w r9, [pc, #232] ; 4f58 <obj_del_core+0x12c>
4e70: 4621 mov r1, r4
4e72: 4640 mov r0, r8
4e74: 47c8 blx r9
4e76: 4606 mov r6, r0
obj_del_core(i);
4e78: 4620 mov r0, r4
4e7a: f7ff ffd7 bl 4e2c <obj_del_core>
i = i_next;
4e7e: 4634 mov r4, r6
while(i != NULL) {
4e80: 2e00 cmp r6, #0
4e82: d1f5 bne.n 4e70 <obj_del_core+0x44>
#endif
static void lv_event_mark_deleted(lv_obj_t * obj)
{
lv_event_temp_data_t * t = event_temp_data_head;
4e84: 4b2e ldr r3, [pc, #184] ; (4f40 <obj_del_core+0x114>)
4e86: 685b ldr r3, [r3, #4]
while(t) {
4e88: b13b cbz r3, 4e9a <obj_del_core+0x6e>
if(t->obj == obj) t->deleted = true;
4e8a: 2101 movs r1, #1
4e8c: 681a ldr r2, [r3, #0]
4e8e: 4295 cmp r5, r2
4e90: bf08 it eq
4e92: 7119 strbeq r1, [r3, #4]
t = t->prev;
4e94: 689b ldr r3, [r3, #8]
while(t) {
4e96: 2b00 cmp r3, #0
4e98: d1f8 bne.n 4e8c <obj_del_core+0x60>
lv_indev_t * indev = lv_indev_get_next(NULL);
4e9a: 2000 movs r0, #0
4e9c: 4b29 ldr r3, [pc, #164] ; (4f44 <obj_del_core+0x118>)
4e9e: 4798 blx r3
while(indev) {
4ea0: 4604 mov r4, r0
4ea2: b310 cbz r0, 4eea <obj_del_core+0xbe>
lv_indev_reset(indev, obj);
4ea4: f8df 80b4 ldr.w r8, [pc, #180] ; 4f5c <obj_del_core+0x130>
if(indev->group == group && obj == lv_indev_get_obj_act()) {
4ea8: f8df 90b4 ldr.w r9, [pc, #180] ; 4f60 <obj_del_core+0x134>
indev = lv_indev_get_next(indev);
4eac: 4e25 ldr r6, [pc, #148] ; (4f44 <obj_del_core+0x118>)
4eae: e00e b.n 4ece <obj_del_core+0xa2>
lv_indev_reset(indev, obj);
4eb0: 4629 mov r1, r5
4eb2: 4620 mov r0, r4
4eb4: 47c0 blx r8
if(indev->proc.types.pointer.last_pressed == obj) {
4eb6: 6be3 ldr r3, [r4, #60] ; 0x3c
4eb8: 429d cmp r5, r3
indev->proc.types.pointer.last_pressed = NULL;
4eba: bf04 itt eq
4ebc: 2300 moveq r3, #0
4ebe: 63e3 streq r3, [r4, #60] ; 0x3c
if(indev->group == group && obj == lv_indev_get_obj_act()) {
4ec0: 6da3 ldr r3, [r4, #88] ; 0x58
4ec2: 429f cmp r7, r3
4ec4: d00a beq.n 4edc <obj_del_core+0xb0>
indev = lv_indev_get_next(indev);
4ec6: 4620 mov r0, r4
4ec8: 47b0 blx r6
while(indev) {
4eca: 4604 mov r4, r0
4ecc: b168 cbz r0, 4eea <obj_del_core+0xbe>
if(indev->proc.types.pointer.act_obj == obj || indev->proc.types.pointer.last_obj == obj) {
4ece: 6b63 ldr r3, [r4, #52] ; 0x34
4ed0: 429d cmp r5, r3
4ed2: d0ed beq.n 4eb0 <obj_del_core+0x84>
4ed4: 6ba3 ldr r3, [r4, #56] ; 0x38
4ed6: 429d cmp r5, r3
4ed8: d1ed bne.n 4eb6 <obj_del_core+0x8a>
4eda: e7e9 b.n 4eb0 <obj_del_core+0x84>
if(indev->group == group && obj == lv_indev_get_obj_act()) {
4edc: 47c8 blx r9
4ede: 4285 cmp r5, r0
4ee0: d1f1 bne.n 4ec6 <obj_del_core+0x9a>
lv_indev_reset(indev, obj);
4ee2: 4629 mov r1, r5
4ee4: 4620 mov r0, r4
4ee6: 47c0 blx r8
4ee8: e7ed b.n 4ec6 <obj_del_core+0x9a>
obj->signal_cb(obj, LV_SIGNAL_CLEANUP, NULL);
4eea: 69eb ldr r3, [r5, #28]
4eec: 2200 movs r2, #0
4eee: 4611 mov r1, r2
4ef0: 4628 mov r0, r5
4ef2: 4798 blx r3
lv_obj_t * par = lv_obj_get_parent(obj);
4ef4: 4628 mov r0, r5
4ef6: 4b14 ldr r3, [pc, #80] ; (4f48 <obj_del_core+0x11c>)
4ef8: 4798 blx r3
if(par == NULL) { /*It is a screen*/
4efa: b160 cbz r0, 4f16 <obj_del_core+0xea>
_lv_ll_remove(&(par->child_ll), obj);
4efc: 4629 mov r1, r5
4efe: 3004 adds r0, #4
4f00: 4b12 ldr r3, [pc, #72] ; (4f4c <obj_del_core+0x120>)
4f02: 4798 blx r3
if(obj->ext_attr != NULL) lv_mem_free(obj->ext_attr);
4f04: 6a68 ldr r0, [r5, #36] ; 0x24
4f06: b108 cbz r0, 4f0c <obj_del_core+0xe0>
4f08: 4b11 ldr r3, [pc, #68] ; (4f50 <obj_del_core+0x124>)
4f0a: 4798 blx r3
lv_mem_free(obj); /*Free the object itself*/
4f0c: 4628 mov r0, r5
4f0e: 4b10 ldr r3, [pc, #64] ; (4f50 <obj_del_core+0x124>)
4f10: 4798 blx r3
4f12: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
lv_disp_t * d = lv_obj_get_disp(obj);
4f16: 4628 mov r0, r5
4f18: 4b0e ldr r3, [pc, #56] ; (4f54 <obj_del_core+0x128>)
4f1a: 4798 blx r3
_lv_ll_remove(&d->scr_ll, obj);
4f1c: 4629 mov r1, r5
4f1e: 3030 adds r0, #48 ; 0x30
4f20: 4b0a ldr r3, [pc, #40] ; (4f4c <obj_del_core+0x120>)
4f22: 4798 blx r3
4f24: e7ee b.n 4f04 <obj_del_core+0xd8>
4f26: bf00 nop
4f28: 00002acd .word 0x00002acd
4f2c: 00004de5 .word 0x00004de5
4f30: 00002679 .word 0x00002679
4f34: 00011329 .word 0x00011329
4f38: 00003029 .word 0x00003029
4f3c: 00011fa9 .word 0x00011fa9
4f40: 2000267c .word 0x2000267c
4f44: 00011021 .word 0x00011021
4f48: 00002c7d .word 0x00002c7d
4f4c: 00012095 .word 0x00012095
4f50: 000124c5 .word 0x000124c5
4f54: 00002d21 .word 0x00002d21
4f58: 00011fbd .word 0x00011fbd
4f5c: 00002775 .word 0x00002775
4f60: 00002801 .word 0x00002801
00004f64 <lv_obj_del>:
{
4f64: b570 push {r4, r5, r6, lr}
4f66: b082 sub sp, #8
4f68: 4604 mov r4, r0
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
4f6a: 4b19 ldr r3, [pc, #100] ; (4fd0 <lv_obj_del+0x6c>)
4f6c: 4798 blx r3
4f6e: b968 cbnz r0, 4f8c <lv_obj_del+0x28>
4f70: 4b18 ldr r3, [pc, #96] ; (4fd4 <lv_obj_del+0x70>)
4f72: 9300 str r3, [sp, #0]
4f74: f240 1293 movw r2, #403 ; 0x193
4f78: 4917 ldr r1, [pc, #92] ; (4fd8 <lv_obj_del+0x74>)
4f7a: 2003 movs r0, #3
4f7c: 4d17 ldr r5, [pc, #92] ; (4fdc <lv_obj_del+0x78>)
4f7e: 47a8 blx r5
4f80: 4622 mov r2, r4
4f82: 2300 movs r3, #0
4f84: 4816 ldr r0, [pc, #88] ; (4fe0 <lv_obj_del+0x7c>)
4f86: 4917 ldr r1, [pc, #92] ; (4fe4 <lv_obj_del+0x80>)
4f88: 4788 blx r1
4f8a: e7fe b.n 4f8a <lv_obj_del+0x26>
lv_obj_invalidate(obj);
4f8c: 4620 mov r0, r4
4f8e: 4b16 ldr r3, [pc, #88] ; (4fe8 <lv_obj_del+0x84>)
4f90: 4798 blx r3
lv_obj_t * par = lv_obj_get_parent(obj);
4f92: 4620 mov r0, r4
4f94: 4b15 ldr r3, [pc, #84] ; (4fec <lv_obj_del+0x88>)
4f96: 4798 blx r3
if(par == NULL) {
4f98: 4605 mov r5, r0
4f9a: b140 cbz r0, 4fae <lv_obj_del+0x4a>
obj_del_core(obj);
4f9c: 4620 mov r0, r4
4f9e: 4b14 ldr r3, [pc, #80] ; (4ff0 <lv_obj_del+0x8c>)
4fa0: 4798 blx r3
par->signal_cb(par, LV_SIGNAL_CHILD_CHG, NULL);
4fa2: 69eb ldr r3, [r5, #28]
4fa4: 2200 movs r2, #0
4fa6: 2101 movs r1, #1
4fa8: 4628 mov r0, r5
4faa: 4798 blx r3
4fac: e00c b.n 4fc8 <lv_obj_del+0x64>
disp = lv_obj_get_disp(obj);
4fae: 4620 mov r0, r4
4fb0: 4b10 ldr r3, [pc, #64] ; (4ff4 <lv_obj_del+0x90>)
4fb2: 4798 blx r3
if(!disp) return LV_RES_INV; /*Shouldn't happen*/
4fb4: 4605 mov r5, r0
4fb6: b138 cbz r0, 4fc8 <lv_obj_del+0x64>
if(disp->act_scr == obj) act_scr_del = true;
4fb8: 6bc6 ldr r6, [r0, #60] ; 0x3c
obj_del_core(obj);
4fba: 4620 mov r0, r4
4fbc: 4b0c ldr r3, [pc, #48] ; (4ff0 <lv_obj_del+0x8c>)
4fbe: 4798 blx r3
if(act_scr_del) {
4fc0: 42b4 cmp r4, r6
4fc2: d101 bne.n 4fc8 <lv_obj_del+0x64>
disp->act_scr = NULL;
4fc4: 2300 movs r3, #0
4fc6: 63eb str r3, [r5, #60] ; 0x3c
}
4fc8: 2000 movs r0, #0
4fca: b002 add sp, #8
4fcc: bd70 pop {r4, r5, r6, pc}
4fce: bf00 nop
4fd0: 000022b1 .word 0x000022b1
4fd4: 00024798 .word 0x00024798
4fd8: 000247dc .word 0x000247dc
4fdc: 0001225d .word 0x0001225d
4fe0: 0002483c .word 0x0002483c
4fe4: 000022b9 .word 0x000022b9
4fe8: 00003321 .word 0x00003321
4fec: 00002c7d .word 0x00002c7d
4ff0: 00004e2d .word 0x00004e2d
4ff4: 00002d21 .word 0x00002d21
00004ff8 <lv_obj_is_focused>:
{
4ff8: b530 push {r4, r5, lr}
4ffa: b083 sub sp, #12
4ffc: 4604 mov r4, r0
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
4ffe: 4b0e ldr r3, [pc, #56] ; (5038 <lv_obj_is_focused+0x40>)
5000: 4798 blx r3
5002: b148 cbz r0, 5018 <lv_obj_is_focused+0x20>
if(obj->group_p) {
5004: 6ba0 ldr r0, [r4, #56] ; 0x38
5006: b1a8 cbz r0, 5034 <lv_obj_is_focused+0x3c>
if(lv_group_get_focused(obj->group_p) == obj) return true;
5008: 4b0c ldr r3, [pc, #48] ; (503c <lv_obj_is_focused+0x44>)
500a: 4798 blx r3
500c: 4284 cmp r4, r0
500e: bf14 ite ne
5010: 2000 movne r0, #0
5012: 2001 moveq r0, #1
}
5014: b003 add sp, #12
5016: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
5018: 4b09 ldr r3, [pc, #36] ; (5040 <lv_obj_is_focused+0x48>)
501a: 9300 str r3, [sp, #0]
501c: f44f 6238 mov.w r2, #2944 ; 0xb80
5020: 4908 ldr r1, [pc, #32] ; (5044 <lv_obj_is_focused+0x4c>)
5022: 2003 movs r0, #3
5024: 4d08 ldr r5, [pc, #32] ; (5048 <lv_obj_is_focused+0x50>)
5026: 47a8 blx r5
5028: 4622 mov r2, r4
502a: 2300 movs r3, #0
502c: 4807 ldr r0, [pc, #28] ; (504c <lv_obj_is_focused+0x54>)
502e: 4908 ldr r1, [pc, #32] ; (5050 <lv_obj_is_focused+0x58>)
5030: 4788 blx r1
5032: e7fe b.n 5032 <lv_obj_is_focused+0x3a>
return false;
5034: 2000 movs r0, #0
5036: e7ed b.n 5014 <lv_obj_is_focused+0x1c>
5038: 000022b1 .word 0x000022b1
503c: 00002749 .word 0x00002749
5040: 000247c8 .word 0x000247c8
5044: 000247dc .word 0x000247dc
5048: 0001225d .word 0x0001225d
504c: 0002483c .word 0x0002483c
5050: 000022b9 .word 0x000022b9
00005054 <lv_obj_is_point_on_coords>:
{
5054: b500 push {lr}
5056: b083 sub sp, #12
ext_area.x1 = obj->coords.x1 - obj->ext_click_pad_hor;
5058: f890 3030 ldrb.w r3, [r0, #48] ; 0x30
505c: 8a02 ldrh r2, [r0, #16]
505e: 1ad2 subs r2, r2, r3
5060: f8ad 2000 strh.w r2, [sp]
ext_area.x2 = obj->coords.x2 + obj->ext_click_pad_hor;
5064: 8a82 ldrh r2, [r0, #20]
5066: 4413 add r3, r2
5068: f8ad 3004 strh.w r3, [sp, #4]
ext_area.y1 = obj->coords.y1 - obj->ext_click_pad_ver;
506c: f890 3031 ldrb.w r3, [r0, #49] ; 0x31
5070: 8a42 ldrh r2, [r0, #18]
5072: 1ad2 subs r2, r2, r3
5074: f8ad 2002 strh.w r2, [sp, #2]
ext_area.y2 = obj->coords.y2 + obj->ext_click_pad_ver;
5078: 8ac2 ldrh r2, [r0, #22]
507a: 4413 add r3, r2
507c: f8ad 3006 strh.w r3, [sp, #6]
if(!_lv_area_is_point_on(&ext_area, point, 0)) {
5080: 2200 movs r2, #0
5082: 4668 mov r0, sp
5084: 4b02 ldr r3, [pc, #8] ; (5090 <lv_obj_is_point_on_coords+0x3c>)
5086: 4798 blx r3
}
5088: b003 add sp, #12
508a: f85d fb04 ldr.w pc, [sp], #4
508e: bf00 nop
5090: 000115b9 .word 0x000115b9
00005094 <lv_obj_handle_get_type_signal>:
if(buf->type[i] == NULL) break;
5094: 6803 ldr r3, [r0, #0]
5096: b17b cbz r3, 50b8 <lv_obj_handle_get_type_signal+0x24>
{
5098: b410 push {r4}
509a: 1d02 adds r2, r0, #4
for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/
509c: 2301 movs r3, #1
if(buf->type[i] == NULL) break;
509e: f852 4b04 ldr.w r4, [r2], #4
50a2: b11c cbz r4, 50ac <lv_obj_handle_get_type_signal+0x18>
for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/
50a4: 3301 adds r3, #1
50a6: b2db uxtb r3, r3
50a8: 2b07 cmp r3, #7
50aa: d1f8 bne.n 509e <lv_obj_handle_get_type_signal+0xa>
buf->type[i] = name;
50ac: f840 1023 str.w r1, [r0, r3, lsl #2]
}
50b0: 2001 movs r0, #1
50b2: f85d 4b04 ldr.w r4, [sp], #4
50b6: 4770 bx lr
for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/
50b8: 2300 movs r3, #0
buf->type[i] = name;
50ba: f840 1023 str.w r1, [r0, r3, lsl #2]
}
50be: 2001 movs r0, #1
50c0: 4770 bx lr
...
000050c4 <lv_obj_init_draw_rect_dsc>:
{
50c4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
50c8: 4605 mov r5, r0
50ca: 460e mov r6, r1
50cc: 4614 mov r4, r2
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
50ce: 2201 movs r2, #1
50d0: 4ba8 ldr r3, [pc, #672] ; (5374 <lv_obj_init_draw_rect_dsc+0x2b0>)
50d2: 4798 blx r3
draw_dsc->radius = lv_obj_get_style_radius(obj, part);
50d4: 8020 strh r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar)
50d6: f248 020c movw r2, #32780 ; 0x800c
50da: 4631 mov r1, r6
50dc: 4628 mov r0, r5
50de: 4ba6 ldr r3, [pc, #664] ; (5378 <lv_obj_init_draw_rect_dsc+0x2b4>)
50e0: 4798 blx r3
if(opa_scale <= LV_OPA_MIN) {
50e2: 2805 cmp r0, #5
50e4: d942 bls.n 516c <lv_obj_init_draw_rect_dsc+0xa8>
50e6: 4607 mov r7, r0
if(draw_dsc->bg_opa != LV_OPA_TRANSP) {
50e8: 7b23 ldrb r3, [r4, #12]
50ea: 2b00 cmp r3, #0
50ec: d149 bne.n 5182 <lv_obj_init_draw_rect_dsc+0xbe>
if(draw_dsc->border_opa != LV_OPA_TRANSP) {
50ee: 7d23 ldrb r3, [r4, #20]
50f0: 2b00 cmp r3, #0
50f2: d176 bne.n 51e2 <lv_obj_init_draw_rect_dsc+0x11e>
if(draw_dsc->outline_opa != LV_OPA_TRANSP) {
50f4: 7f23 ldrb r3, [r4, #28]
50f6: 2b00 cmp r3, #0
50f8: f040 8098 bne.w 522c <lv_obj_init_draw_rect_dsc+0x168>
if(draw_dsc->pattern_opa != LV_OPA_TRANSP) {
50fc: f894 3036 ldrb.w r3, [r4, #54] ; 0x36
5100: 2b00 cmp r3, #0
5102: f040 80b8 bne.w 5276 <lv_obj_init_draw_rect_dsc+0x1b2>
if(draw_dsc->shadow_opa > LV_OPA_MIN) {
5106: f894 3028 ldrb.w r3, [r4, #40] ; 0x28
510a: 2b05 cmp r3, #5
510c: f200 8101 bhi.w 5312 <lv_obj_init_draw_rect_dsc+0x24e>
if(draw_dsc->value_opa > LV_OPA_MIN) {
5110: f894 3044 ldrb.w r3, [r4, #68] ; 0x44
5114: 2b05 cmp r3, #5
5116: f200 8137 bhi.w 5388 <lv_obj_init_draw_rect_dsc+0x2c4>
if(opa_scale < LV_OPA_MAX) {
511a: 2ff9 cmp r7, #249 ; 0xf9
511c: d824 bhi.n 5168 <lv_obj_init_draw_rect_dsc+0xa4>
draw_dsc->bg_opa = (uint16_t)((uint16_t)draw_dsc->bg_opa * opa_scale) >> 8;
511e: b2bf uxth r7, r7
5120: 7b23 ldrb r3, [r4, #12]
5122: fb13 f307 smulbb r3, r3, r7
5126: f3c3 2307 ubfx r3, r3, #8, #8
512a: 7323 strb r3, [r4, #12]
draw_dsc->border_opa = (uint16_t)((uint16_t)draw_dsc->border_opa * opa_scale) >> 8;
512c: 7d23 ldrb r3, [r4, #20]
512e: fb13 f307 smulbb r3, r3, r7
5132: f3c3 2307 ubfx r3, r3, #8, #8
5136: 7523 strb r3, [r4, #20]
draw_dsc->shadow_opa = (uint16_t)((uint16_t)draw_dsc->shadow_opa * opa_scale) >> 8;
5138: f894 3028 ldrb.w r3, [r4, #40] ; 0x28
513c: fb13 f307 smulbb r3, r3, r7
5140: f3c3 2307 ubfx r3, r3, #8, #8
5144: f884 3028 strb.w r3, [r4, #40] ; 0x28
draw_dsc->pattern_opa = (uint16_t)((uint16_t)draw_dsc->pattern_opa * opa_scale) >> 8;
5148: f894 3036 ldrb.w r3, [r4, #54] ; 0x36
514c: fb13 f307 smulbb r3, r3, r7
5150: f3c3 2307 ubfx r3, r3, #8, #8
5154: f884 3036 strb.w r3, [r4, #54] ; 0x36
draw_dsc->value_opa = (uint16_t)((uint16_t)draw_dsc->value_opa * opa_scale) >> 8;
5158: f894 3044 ldrb.w r3, [r4, #68] ; 0x44
515c: fb13 f707 smulbb r7, r3, r7
5160: f3c7 2707 ubfx r7, r7, #8, #8
5164: f884 7044 strb.w r7, [r4, #68] ; 0x44
5168: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
draw_dsc->bg_opa = LV_OPA_TRANSP;
516c: 2300 movs r3, #0
516e: 7323 strb r3, [r4, #12]
draw_dsc->border_opa = LV_OPA_TRANSP;
5170: 7523 strb r3, [r4, #20]
draw_dsc->shadow_opa = LV_OPA_TRANSP;
5172: f884 3028 strb.w r3, [r4, #40] ; 0x28
draw_dsc->pattern_opa = LV_OPA_TRANSP;
5176: f884 3036 strb.w r3, [r4, #54] ; 0x36
draw_dsc->value_opa = LV_OPA_TRANSP;
517a: f884 3044 strb.w r3, [r4, #68] ; 0x44
return;
517e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
5182: 222c movs r2, #44 ; 0x2c
5184: 4631 mov r1, r6
5186: 4628 mov r0, r5
5188: 4b7b ldr r3, [pc, #492] ; (5378 <lv_obj_init_draw_rect_dsc+0x2b4>)
518a: 4798 blx r3
draw_dsc->bg_opa = lv_obj_get_style_bg_opa(obj, part);
518c: 7320 strb r0, [r4, #12]
if(draw_dsc->bg_opa > LV_OPA_MIN) {
518e: 2805 cmp r0, #5
5190: d9ad bls.n 50ee <lv_obj_init_draw_rect_dsc+0x2a>
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
5192: 2229 movs r2, #41 ; 0x29
5194: 4631 mov r1, r6
5196: 4628 mov r0, r5
5198: 4b78 ldr r3, [pc, #480] ; (537c <lv_obj_init_draw_rect_dsc+0x2b8>)
519a: 4798 blx r3
draw_dsc->bg_color = lv_obj_get_style_bg_color(obj, part);
519c: 8060 strh r0, [r4, #2]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_DIR, bg_grad_dir, lv_grad_dir_t, _int, scalar)
519e: 2223 movs r2, #35 ; 0x23
51a0: 4631 mov r1, r6
51a2: 4628 mov r0, r5
51a4: 4b73 ldr r3, [pc, #460] ; (5374 <lv_obj_init_draw_rect_dsc+0x2b0>)
51a6: 4798 blx r3
51a8: b2c0 uxtb r0, r0
draw_dsc->bg_grad_dir = lv_obj_get_style_bg_grad_dir(obj, part);
51aa: 71a0 strb r0, [r4, #6]
if(draw_dsc->bg_grad_dir != LV_GRAD_DIR_NONE) {
51ac: b930 cbnz r0, 51bc <lv_obj_init_draw_rect_dsc+0xf8>
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_BLEND_MODE, bg_blend_mode, lv_blend_mode_t, _int, scalar)
51ae: 2220 movs r2, #32
51b0: 4631 mov r1, r6
51b2: 4628 mov r0, r5
51b4: 4b6f ldr r3, [pc, #444] ; (5374 <lv_obj_init_draw_rect_dsc+0x2b0>)
51b6: 4798 blx r3
51b8: 7360 strb r0, [r4, #13]
51ba: e798 b.n 50ee <lv_obj_init_draw_rect_dsc+0x2a>
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_COLOR, bg_grad_color, lv_color_t, _color, nonscalar)
51bc: 222a movs r2, #42 ; 0x2a
51be: 4631 mov r1, r6
51c0: 4628 mov r0, r5
51c2: 4b6e ldr r3, [pc, #440] ; (537c <lv_obj_init_draw_rect_dsc+0x2b8>)
51c4: 4798 blx r3
draw_dsc->bg_grad_color = lv_obj_get_style_bg_grad_color(obj, part);
51c6: 80a0 strh r0, [r4, #4]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_MAIN_STOP, bg_main_stop, lv_style_int_t, _int, scalar)
51c8: 2221 movs r2, #33 ; 0x21
51ca: 4631 mov r1, r6
51cc: 4628 mov r0, r5
51ce: f8df 81a4 ldr.w r8, [pc, #420] ; 5374 <lv_obj_init_draw_rect_dsc+0x2b0>
51d2: 47c0 blx r8
draw_dsc->bg_main_color_stop = lv_obj_get_style_bg_main_stop(obj, part);
51d4: 8120 strh r0, [r4, #8]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_STOP, bg_grad_stop, lv_style_int_t, _int, scalar)
51d6: 2222 movs r2, #34 ; 0x22
51d8: 4631 mov r1, r6
51da: 4628 mov r0, r5
51dc: 47c0 blx r8
draw_dsc->bg_grad_color_stop = lv_obj_get_style_bg_grad_stop(obj, part);
51de: 8160 strh r0, [r4, #10]
51e0: e7e5 b.n 51ae <lv_obj_init_draw_rect_dsc+0xea>
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar)
51e2: 2230 movs r2, #48 ; 0x30
51e4: 4631 mov r1, r6
51e6: 4628 mov r0, r5
51e8: 4b62 ldr r3, [pc, #392] ; (5374 <lv_obj_init_draw_rect_dsc+0x2b0>)
51ea: 4798 blx r3
draw_dsc->border_width = lv_obj_get_style_border_width(obj, part);
51ec: 8220 strh r0, [r4, #16]
if(draw_dsc->border_width) {
51ee: 2800 cmp r0, #0
51f0: d080 beq.n 50f4 <lv_obj_init_draw_rect_dsc+0x30>
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar)
51f2: 223c movs r2, #60 ; 0x3c
51f4: 4631 mov r1, r6
51f6: 4628 mov r0, r5
51f8: 4b5f ldr r3, [pc, #380] ; (5378 <lv_obj_init_draw_rect_dsc+0x2b4>)
51fa: 4798 blx r3
draw_dsc->border_opa = lv_obj_get_style_border_opa(obj, part);
51fc: 7520 strb r0, [r4, #20]
if(draw_dsc->border_opa > LV_OPA_MIN) {
51fe: 2805 cmp r0, #5
5200: d806 bhi.n 5210 <lv_obj_init_draw_rect_dsc+0x14c>
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_BLEND_MODE, border_blend_mode, lv_blend_mode_t, _int, scalar)
5202: 2232 movs r2, #50 ; 0x32
5204: 4631 mov r1, r6
5206: 4628 mov r0, r5
5208: 4b5a ldr r3, [pc, #360] ; (5374 <lv_obj_init_draw_rect_dsc+0x2b0>)
520a: 4798 blx r3
520c: 7560 strb r0, [r4, #21]
520e: e771 b.n 50f4 <lv_obj_init_draw_rect_dsc+0x30>
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar)
5210: 2231 movs r2, #49 ; 0x31
5212: 4631 mov r1, r6
5214: 4628 mov r0, r5
5216: 4b57 ldr r3, [pc, #348] ; (5374 <lv_obj_init_draw_rect_dsc+0x2b0>)
5218: 4798 blx r3
draw_dsc->border_side = lv_obj_get_style_border_side(obj, part);
521a: b2c0 uxtb r0, r0
521c: 8260 strh r0, [r4, #18]
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar)
521e: 2239 movs r2, #57 ; 0x39
5220: 4631 mov r1, r6
5222: 4628 mov r0, r5
5224: 4b55 ldr r3, [pc, #340] ; (537c <lv_obj_init_draw_rect_dsc+0x2b8>)
5226: 4798 blx r3
draw_dsc->border_color = lv_obj_get_style_border_color(obj, part);
5228: 81e0 strh r0, [r4, #14]
522a: e7ea b.n 5202 <lv_obj_init_draw_rect_dsc+0x13e>
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar)
522c: 2240 movs r2, #64 ; 0x40
522e: 4631 mov r1, r6
5230: 4628 mov r0, r5
5232: 4b50 ldr r3, [pc, #320] ; (5374 <lv_obj_init_draw_rect_dsc+0x2b0>)
5234: 4798 blx r3
draw_dsc->outline_width = lv_obj_get_style_outline_width(obj, part);
5236: 8320 strh r0, [r4, #24]
if(draw_dsc->outline_width) {
5238: 2800 cmp r0, #0
523a: f43f af5f beq.w 50fc <lv_obj_init_draw_rect_dsc+0x38>
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar)
523e: 224c movs r2, #76 ; 0x4c
5240: 4631 mov r1, r6
5242: 4628 mov r0, r5
5244: 4b4c ldr r3, [pc, #304] ; (5378 <lv_obj_init_draw_rect_dsc+0x2b4>)
5246: 4798 blx r3
draw_dsc->outline_opa = lv_obj_get_style_outline_opa(obj, part);
5248: 7720 strb r0, [r4, #28]
if(draw_dsc->outline_opa > LV_OPA_MIN) {
524a: 2805 cmp r0, #5
524c: d806 bhi.n 525c <lv_obj_init_draw_rect_dsc+0x198>
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_BLEND_MODE, outline_blend_mode, lv_blend_mode_t, _int, scalar)
524e: 2242 movs r2, #66 ; 0x42
5250: 4631 mov r1, r6
5252: 4628 mov r0, r5
5254: 4b47 ldr r3, [pc, #284] ; (5374 <lv_obj_init_draw_rect_dsc+0x2b0>)
5256: 4798 blx r3
5258: 7760 strb r0, [r4, #29]
525a: e74f b.n 50fc <lv_obj_init_draw_rect_dsc+0x38>
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar)
525c: 2241 movs r2, #65 ; 0x41
525e: 4631 mov r1, r6
5260: 4628 mov r0, r5
5262: 4b44 ldr r3, [pc, #272] ; (5374 <lv_obj_init_draw_rect_dsc+0x2b0>)
5264: 4798 blx r3
draw_dsc->outline_pad = lv_obj_get_style_outline_pad(obj, part);
5266: 8360 strh r0, [r4, #26]
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar)
5268: 2249 movs r2, #73 ; 0x49
526a: 4631 mov r1, r6
526c: 4628 mov r0, r5
526e: 4b43 ldr r3, [pc, #268] ; (537c <lv_obj_init_draw_rect_dsc+0x2b8>)
5270: 4798 blx r3
draw_dsc->outline_color = lv_obj_get_style_outline_color(obj, part);
5272: 82e0 strh r0, [r4, #22]
5274: e7eb b.n 524e <lv_obj_init_draw_rect_dsc+0x18a>
_LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_IMAGE, pattern_image, const void *, _ptr, scalar)
5276: 226e movs r2, #110 ; 0x6e
5278: 4631 mov r1, r6
527a: 4628 mov r0, r5
527c: 4b40 ldr r3, [pc, #256] ; (5380 <lv_obj_init_draw_rect_dsc+0x2bc>)
527e: 4798 blx r3
draw_dsc->pattern_image = lv_obj_get_style_pattern_image(obj, part);
5280: 62e0 str r0, [r4, #44] ; 0x2c
if(draw_dsc->pattern_image) {
5282: 2800 cmp r0, #0
5284: f43f af3f beq.w 5106 <lv_obj_init_draw_rect_dsc+0x42>
_LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_OPA, pattern_opa, lv_opa_t, _opa, scalar)
5288: 226c movs r2, #108 ; 0x6c
528a: 4631 mov r1, r6
528c: 4628 mov r0, r5
528e: 4b3a ldr r3, [pc, #232] ; (5378 <lv_obj_init_draw_rect_dsc+0x2b4>)
5290: 4798 blx r3
draw_dsc->pattern_opa = lv_obj_get_style_pattern_opa(obj, part);
5292: f884 0036 strb.w r0, [r4, #54] ; 0x36
if(draw_dsc->pattern_opa > LV_OPA_MIN) {
5296: 2805 cmp r0, #5
5298: f67f af35 bls.w 5106 <lv_obj_init_draw_rect_dsc+0x42>
_LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR_OPA, pattern_recolor_opa, lv_opa_t, _opa, scalar)
529c: 226d movs r2, #109 ; 0x6d
529e: 4631 mov r1, r6
52a0: 4628 mov r0, r5
52a2: 4b35 ldr r3, [pc, #212] ; (5378 <lv_obj_init_draw_rect_dsc+0x2b4>)
52a4: 4798 blx r3
draw_dsc->pattern_recolor_opa = lv_obj_get_style_pattern_recolor_opa(obj, part);
52a6: f884 0037 strb.w r0, [r4, #55] ; 0x37
_LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_REPEAT, pattern_repeat, bool, _int, scalar)
52aa: 2261 movs r2, #97 ; 0x61
52ac: 4631 mov r1, r6
52ae: 4628 mov r0, r5
52b0: 4b30 ldr r3, [pc, #192] ; (5374 <lv_obj_init_draw_rect_dsc+0x2b0>)
52b2: 4798 blx r3
52b4: 3000 adds r0, #0
52b6: bf18 it ne
52b8: 2001 movne r0, #1
draw_dsc->pattern_repeat = lv_obj_get_style_pattern_repeat(obj, part);
52ba: f894 3038 ldrb.w r3, [r4, #56] ; 0x38
52be: f360 0300 bfi r3, r0, #0, #1
52c2: f884 3038 strb.w r3, [r4, #56] ; 0x38
if(lv_img_src_get_type(draw_dsc->pattern_image) == LV_IMG_SRC_SYMBOL) {
52c6: 6ae0 ldr r0, [r4, #44] ; 0x2c
52c8: 4b2e ldr r3, [pc, #184] ; (5384 <lv_obj_init_draw_rect_dsc+0x2c0>)
52ca: 4798 blx r3
52cc: 2802 cmp r0, #2
52ce: d00b beq.n 52e8 <lv_obj_init_draw_rect_dsc+0x224>
else if(draw_dsc->pattern_recolor_opa > LV_OPA_MIN) {
52d0: f894 3037 ldrb.w r3, [r4, #55] ; 0x37
52d4: 2b05 cmp r3, #5
52d6: d815 bhi.n 5304 <lv_obj_init_draw_rect_dsc+0x240>
_LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_BLEND_MODE, pattern_blend_mode, lv_blend_mode_t, _int, scalar)
52d8: 2260 movs r2, #96 ; 0x60
52da: 4631 mov r1, r6
52dc: 4628 mov r0, r5
52de: 4b25 ldr r3, [pc, #148] ; (5374 <lv_obj_init_draw_rect_dsc+0x2b0>)
52e0: 4798 blx r3
52e2: f884 0039 strb.w r0, [r4, #57] ; 0x39
52e6: e70e b.n 5106 <lv_obj_init_draw_rect_dsc+0x42>
_LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar)
52e8: 2269 movs r2, #105 ; 0x69
52ea: 4631 mov r1, r6
52ec: 4628 mov r0, r5
52ee: 4b23 ldr r3, [pc, #140] ; (537c <lv_obj_init_draw_rect_dsc+0x2b8>)
52f0: 4798 blx r3
draw_dsc->pattern_recolor = lv_obj_get_style_pattern_recolor(obj, part);
52f2: 86a0 strh r0, [r4, #52] ; 0x34
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar)
52f4: f248 028e movw r2, #32910 ; 0x808e
52f8: 4631 mov r1, r6
52fa: 4628 mov r0, r5
52fc: 4b20 ldr r3, [pc, #128] ; (5380 <lv_obj_init_draw_rect_dsc+0x2bc>)
52fe: 4798 blx r3
draw_dsc->pattern_font = lv_obj_get_style_text_font(obj, part);
5300: 6320 str r0, [r4, #48] ; 0x30
5302: e7e9 b.n 52d8 <lv_obj_init_draw_rect_dsc+0x214>
_LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar)
5304: 2269 movs r2, #105 ; 0x69
5306: 4631 mov r1, r6
5308: 4628 mov r0, r5
530a: 4b1c ldr r3, [pc, #112] ; (537c <lv_obj_init_draw_rect_dsc+0x2b8>)
530c: 4798 blx r3
draw_dsc->pattern_recolor = lv_obj_get_style_pattern_recolor(obj, part);
530e: 86a0 strh r0, [r4, #52] ; 0x34
5310: e7e2 b.n 52d8 <lv_obj_init_draw_rect_dsc+0x214>
_LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar)
5312: 2250 movs r2, #80 ; 0x50
5314: 4631 mov r1, r6
5316: 4628 mov r0, r5
5318: 4b16 ldr r3, [pc, #88] ; (5374 <lv_obj_init_draw_rect_dsc+0x2b0>)
531a: 4798 blx r3
draw_dsc->shadow_width = lv_obj_get_style_shadow_width(obj, part);
531c: 8420 strh r0, [r4, #32]
if(draw_dsc->shadow_width) {
531e: 2800 cmp r0, #0
5320: f43f aef6 beq.w 5110 <lv_obj_init_draw_rect_dsc+0x4c>
_LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OPA, shadow_opa, lv_opa_t, _opa, scalar)
5324: 225c movs r2, #92 ; 0x5c
5326: 4631 mov r1, r6
5328: 4628 mov r0, r5
532a: 4b13 ldr r3, [pc, #76] ; (5378 <lv_obj_init_draw_rect_dsc+0x2b4>)
532c: 4798 blx r3
draw_dsc->shadow_opa = lv_obj_get_style_shadow_opa(obj, part);
532e: f884 0028 strb.w r0, [r4, #40] ; 0x28
if(draw_dsc->shadow_opa > LV_OPA_MIN) {
5332: 2805 cmp r0, #5
5334: f67f aeec bls.w 5110 <lv_obj_init_draw_rect_dsc+0x4c>
_LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_X, shadow_ofs_x, lv_style_int_t, _int, scalar)
5338: 2251 movs r2, #81 ; 0x51
533a: 4631 mov r1, r6
533c: 4628 mov r0, r5
533e: f8df 8034 ldr.w r8, [pc, #52] ; 5374 <lv_obj_init_draw_rect_dsc+0x2b0>
5342: 47c0 blx r8
draw_dsc->shadow_ofs_x = lv_obj_get_style_shadow_ofs_x(obj, part);
5344: 8460 strh r0, [r4, #34] ; 0x22
_LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_Y, shadow_ofs_y, lv_style_int_t, _int, scalar)
5346: 2252 movs r2, #82 ; 0x52
5348: 4631 mov r1, r6
534a: 4628 mov r0, r5
534c: 47c0 blx r8
draw_dsc->shadow_ofs_y = lv_obj_get_style_shadow_ofs_y(obj, part);
534e: 84a0 strh r0, [r4, #36] ; 0x24
_LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar)
5350: 2253 movs r2, #83 ; 0x53
5352: 4631 mov r1, r6
5354: 4628 mov r0, r5
5356: 47c0 blx r8
draw_dsc->shadow_spread = lv_obj_get_style_shadow_spread(obj, part);
5358: 84e0 strh r0, [r4, #38] ; 0x26
_LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar)
535a: 2259 movs r2, #89 ; 0x59
535c: 4631 mov r1, r6
535e: 4628 mov r0, r5
5360: 4b06 ldr r3, [pc, #24] ; (537c <lv_obj_init_draw_rect_dsc+0x2b8>)
5362: 4798 blx r3
draw_dsc->shadow_color = lv_obj_get_style_shadow_color(obj, part);
5364: 83e0 strh r0, [r4, #30]
_LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_BLEND_MODE, shadow_blend_mode, lv_blend_mode_t, _int, scalar)
5366: 2254 movs r2, #84 ; 0x54
5368: 4631 mov r1, r6
536a: 4628 mov r0, r5
536c: 47c0 blx r8
536e: f884 0029 strb.w r0, [r4, #41] ; 0x29
5372: e6cd b.n 5110 <lv_obj_init_draw_rect_dsc+0x4c>
5374: 000044d5 .word 0x000044d5
5378: 0000460d .word 0x0000460d
537c: 00004581 .word 0x00004581
5380: 000046a1 .word 0x000046a1
5384: 00009969 .word 0x00009969
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_STR, value_str, const char *, _ptr, scalar)
5388: 227f movs r2, #127 ; 0x7f
538a: 4631 mov r1, r6
538c: 4628 mov r0, r5
538e: 4b22 ldr r3, [pc, #136] ; (5418 <lv_obj_init_draw_rect_dsc+0x354>)
5390: 4798 blx r3
draw_dsc->value_str = lv_obj_get_style_value_str(obj, part);
5392: 63e0 str r0, [r4, #60] ; 0x3c
if(draw_dsc->value_str) {
5394: 2800 cmp r0, #0
5396: f43f aec0 beq.w 511a <lv_obj_init_draw_rect_dsc+0x56>
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OPA, value_opa, lv_opa_t, _opa, scalar)
539a: 227c movs r2, #124 ; 0x7c
539c: 4631 mov r1, r6
539e: 4628 mov r0, r5
53a0: 4b1e ldr r3, [pc, #120] ; (541c <lv_obj_init_draw_rect_dsc+0x358>)
53a2: 4798 blx r3
draw_dsc->value_opa = lv_obj_get_style_value_opa(obj, part);
53a4: f884 0044 strb.w r0, [r4, #68] ; 0x44
if(draw_dsc->value_opa > LV_OPA_MIN) {
53a8: 2805 cmp r0, #5
53aa: f67f aeb6 bls.w 511a <lv_obj_init_draw_rect_dsc+0x56>
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_X, value_ofs_x, lv_style_int_t, _int, scalar)
53ae: 2273 movs r2, #115 ; 0x73
53b0: 4631 mov r1, r6
53b2: 4628 mov r0, r5
53b4: f8df 806c ldr.w r8, [pc, #108] ; 5424 <lv_obj_init_draw_rect_dsc+0x360>
53b8: 47c0 blx r8
draw_dsc->value_ofs_x = lv_obj_get_style_value_ofs_x(obj, part);
53ba: f8a4 0048 strh.w r0, [r4, #72] ; 0x48
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_Y, value_ofs_y, lv_style_int_t, _int, scalar)
53be: 2274 movs r2, #116 ; 0x74
53c0: 4631 mov r1, r6
53c2: 4628 mov r0, r5
53c4: 47c0 blx r8
draw_dsc->value_ofs_y = lv_obj_get_style_value_ofs_y(obj, part);
53c6: f8a4 004a strh.w r0, [r4, #74] ; 0x4a
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar)
53ca: 2279 movs r2, #121 ; 0x79
53cc: 4631 mov r1, r6
53ce: 4628 mov r0, r5
53d0: 4b13 ldr r3, [pc, #76] ; (5420 <lv_obj_init_draw_rect_dsc+0x35c>)
53d2: 4798 blx r3
draw_dsc->value_color = lv_obj_get_style_value_color(obj, part);
53d4: f8a4 0046 strh.w r0, [r4, #70] ; 0x46
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar)
53d8: 227e movs r2, #126 ; 0x7e
53da: 4631 mov r1, r6
53dc: 4628 mov r0, r5
53de: 4b0e ldr r3, [pc, #56] ; (5418 <lv_obj_init_draw_rect_dsc+0x354>)
53e0: 4798 blx r3
draw_dsc->value_font = lv_obj_get_style_value_font(obj, part);
53e2: 6420 str r0, [r4, #64] ; 0x40
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LETTER_SPACE, value_letter_space, lv_style_int_t, _int, scalar)
53e4: 2270 movs r2, #112 ; 0x70
53e6: 4631 mov r1, r6
53e8: 4628 mov r0, r5
53ea: 47c0 blx r8
draw_dsc->value_letter_space = lv_obj_get_style_value_letter_space(obj, part);
53ec: f8a4 004c strh.w r0, [r4, #76] ; 0x4c
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LINE_SPACE, value_line_space, lv_style_int_t, _int, scalar)
53f0: 2271 movs r2, #113 ; 0x71
53f2: 4631 mov r1, r6
53f4: 4628 mov r0, r5
53f6: 47c0 blx r8
draw_dsc->value_line_space = lv_obj_get_style_value_line_space(obj, part);
53f8: f8a4 004e strh.w r0, [r4, #78] ; 0x4e
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_ALIGN, value_align, lv_align_t, _int, scalar)
53fc: 2275 movs r2, #117 ; 0x75
53fe: 4631 mov r1, r6
5400: 4628 mov r0, r5
5402: 47c0 blx r8
5404: 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)
5408: 2272 movs r2, #114 ; 0x72
540a: 4631 mov r1, r6
540c: 4628 mov r0, r5
540e: 47c0 blx r8
5410: f884 0051 strb.w r0, [r4, #81] ; 0x51
5414: e681 b.n 511a <lv_obj_init_draw_rect_dsc+0x56>
5416: bf00 nop
5418: 000046a1 .word 0x000046a1
541c: 0000460d .word 0x0000460d
5420: 00004581 .word 0x00004581
5424: 000044d5 .word 0x000044d5
00005428 <lv_obj_design>:
{
5428: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
542c: b098 sub sp, #96 ; 0x60
542e: 4604 mov r4, r0
5430: 460e mov r6, r1
if(mode == LV_DESIGN_COVER_CHK) {
5432: 2a02 cmp r2, #2
5434: d008 beq.n 5448 <lv_obj_design+0x20>
else if(mode == LV_DESIGN_DRAW_MAIN) {
5436: 2a00 cmp r2, #0
5438: d06c beq.n 5514 <lv_obj_design+0xec>
else if(mode == LV_DESIGN_DRAW_POST) {
543a: 2a01 cmp r2, #1
543c: f000 80cc beq.w 55d8 <lv_obj_design+0x1b0>
return LV_DESIGN_RES_OK;
5440: 2000 movs r0, #0
}
5442: b018 add sp, #96 ; 0x60
5444: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
_LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar)
5448: 2100 movs r1, #0
544a: 4b8e ldr r3, [pc, #568] ; (5684 <lv_obj_design+0x25c>)
544c: 4798 blx r3
if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) return LV_DESIGN_RES_MASKED;
544e: b108 cbz r0, 5454 <lv_obj_design+0x2c>
5450: 2003 movs r0, #3
5452: e7f6 b.n 5442 <lv_obj_design+0x1a>
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
5454: 2201 movs r2, #1
5456: 2100 movs r1, #0
5458: 4620 mov r0, r4
545a: 4d8a ldr r5, [pc, #552] ; (5684 <lv_obj_design+0x25c>)
545c: 47a8 blx r5
545e: 4607 mov r7, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar)
5460: 2204 movs r2, #4
5462: 2100 movs r1, #0
5464: 4620 mov r0, r4
5466: 47a8 blx r5
5468: 4680 mov r8, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar)
546a: 2205 movs r2, #5
546c: 2100 movs r1, #0
546e: 4620 mov r0, r4
5470: 47a8 blx r5
5472: f104 030f add.w r3, r4, #15
5476: f104 0517 add.w r5, r4, #23
uint8_t * d8 = (uint8_t *)dst;
547a: aa03 add r2, sp, #12
*d8 = *s8;
547c: f813 1f01 ldrb.w r1, [r3, #1]!
5480: f802 1b01 strb.w r1, [r2], #1
while(len) {
5484: 429d cmp r5, r3
5486: d1f9 bne.n 547c <lv_obj_design+0x54>
coords.x1 -= w;
5488: fa1f f888 uxth.w r8, r8
548c: f8bd 300c ldrh.w r3, [sp, #12]
5490: eba3 0308 sub.w r3, r3, r8
5494: f8ad 300c strh.w r3, [sp, #12]
coords.x2 += w;
5498: f8bd 3010 ldrh.w r3, [sp, #16]
549c: 4498 add r8, r3
549e: f8ad 8010 strh.w r8, [sp, #16]
coords.y1 -= h;
54a2: b280 uxth r0, r0
54a4: f8bd 300e ldrh.w r3, [sp, #14]
54a8: 1a1b subs r3, r3, r0
54aa: f8ad 300e strh.w r3, [sp, #14]
coords.y2 += h;
54ae: f8bd 3012 ldrh.w r3, [sp, #18]
54b2: 4418 add r0, r3
54b4: f8ad 0012 strh.w r0, [sp, #18]
if(_lv_area_is_in(clip_area, &coords, r) == false) return LV_DESIGN_RES_NOT_COVER;
54b8: 463a mov r2, r7
54ba: a903 add r1, sp, #12
54bc: 4630 mov r0, r6
54be: 4b72 ldr r3, [pc, #456] ; (5688 <lv_obj_design+0x260>)
54c0: 4798 blx r3
54c2: b908 cbnz r0, 54c8 <lv_obj_design+0xa0>
54c4: 2002 movs r0, #2
54c6: e7bc b.n 5442 <lv_obj_design+0x1a>
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
54c8: 222c movs r2, #44 ; 0x2c
54ca: 2100 movs r1, #0
54cc: 4620 mov r0, r4
54ce: 4b6f ldr r3, [pc, #444] ; (568c <lv_obj_design+0x264>)
54d0: 4798 blx r3
if(lv_obj_get_style_bg_opa(obj, LV_OBJ_PART_MAIN) < LV_OPA_MAX) return LV_DESIGN_RES_NOT_COVER;
54d2: 28f9 cmp r0, #249 ; 0xf9
54d4: d801 bhi.n 54da <lv_obj_design+0xb2>
54d6: 2002 movs r0, #2
54d8: e7b3 b.n 5442 <lv_obj_design+0x1a>
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_BLEND_MODE, bg_blend_mode, lv_blend_mode_t, _int, scalar)
54da: 2220 movs r2, #32
54dc: 2100 movs r1, #0
54de: 4620 mov r0, r4
54e0: 4b68 ldr r3, [pc, #416] ; (5684 <lv_obj_design+0x25c>)
54e2: 4798 blx r3
if(lv_obj_get_style_bg_blend_mode(obj, LV_OBJ_PART_MAIN) != LV_BLEND_MODE_NORMAL) return LV_DESIGN_RES_NOT_COVER;
54e4: b2c0 uxtb r0, r0
54e6: b108 cbz r0, 54ec <lv_obj_design+0xc4>
54e8: 2002 movs r0, #2
54ea: e7aa b.n 5442 <lv_obj_design+0x1a>
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_BLEND_MODE, border_blend_mode, lv_blend_mode_t, _int, scalar)
54ec: 2232 movs r2, #50 ; 0x32
54ee: 2100 movs r1, #0
54f0: 4620 mov r0, r4
54f2: 4b64 ldr r3, [pc, #400] ; (5684 <lv_obj_design+0x25c>)
54f4: 4798 blx r3
if(lv_obj_get_style_border_blend_mode(obj, LV_OBJ_PART_MAIN) != LV_BLEND_MODE_NORMAL) return LV_DESIGN_RES_NOT_COVER;
54f6: b2c0 uxtb r0, r0
54f8: b108 cbz r0, 54fe <lv_obj_design+0xd6>
54fa: 2002 movs r0, #2
54fc: e7a1 b.n 5442 <lv_obj_design+0x1a>
_LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar)
54fe: f248 020c movw r2, #32780 ; 0x800c
5502: 2100 movs r1, #0
5504: 4620 mov r0, r4
5506: 4b61 ldr r3, [pc, #388] ; (568c <lv_obj_design+0x264>)
5508: 4798 blx r3
return LV_DESIGN_RES_COVER;
550a: 28fa cmp r0, #250 ; 0xfa
550c: bf34 ite cc
550e: 2002 movcc r0, #2
5510: 2001 movcs r0, #1
5512: e796 b.n 5442 <lv_obj_design+0x1a>
lv_draw_rect_dsc_init(&draw_dsc);
5514: a803 add r0, sp, #12
5516: 4b5e ldr r3, [pc, #376] ; (5690 <lv_obj_design+0x268>)
5518: 4798 blx r3
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar)
551a: 2233 movs r2, #51 ; 0x33
551c: 2100 movs r1, #0
551e: 4620 mov r0, r4
5520: 4b58 ldr r3, [pc, #352] ; (5684 <lv_obj_design+0x25c>)
5522: 4798 blx r3
if(lv_obj_get_style_border_post(obj, LV_OBJ_PART_MAIN)) {
5524: b110 cbz r0, 552c <lv_obj_design+0x104>
draw_dsc.border_opa = LV_OPA_TRANSP;
5526: 2300 movs r3, #0
5528: f88d 3020 strb.w r3, [sp, #32]
lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc);
552c: aa03 add r2, sp, #12
552e: 2100 movs r1, #0
5530: 4620 mov r0, r4
5532: 4b58 ldr r3, [pc, #352] ; (5694 <lv_obj_design+0x26c>)
5534: 4798 blx r3
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar)
5536: 2204 movs r2, #4
5538: 2100 movs r1, #0
553a: 4620 mov r0, r4
553c: 4d51 ldr r5, [pc, #324] ; (5684 <lv_obj_design+0x25c>)
553e: 47a8 blx r5
5540: 4680 mov r8, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar)
5542: 2205 movs r2, #5
5544: 2100 movs r1, #0
5546: 4620 mov r0, r4
5548: 47a8 blx r5
lv_area_copy(&coords, &obj->coords);
554a: f104 0710 add.w r7, r4, #16
554e: f104 030f add.w r3, r4, #15
5552: f104 0517 add.w r5, r4, #23
uint8_t * d8 = (uint8_t *)dst;
5556: aa01 add r2, sp, #4
*d8 = *s8;
5558: f813 1f01 ldrb.w r1, [r3, #1]!
555c: f802 1b01 strb.w r1, [r2], #1
while(len) {
5560: 42ab cmp r3, r5
5562: d1f9 bne.n 5558 <lv_obj_design+0x130>
coords.x1 -= w;
5564: fa1f f888 uxth.w r8, r8
5568: f8bd 3004 ldrh.w r3, [sp, #4]
556c: eba3 0308 sub.w r3, r3, r8
5570: f8ad 3004 strh.w r3, [sp, #4]
coords.x2 += w;
5574: f8bd 3008 ldrh.w r3, [sp, #8]
5578: 4498 add r8, r3
557a: f8ad 8008 strh.w r8, [sp, #8]
coords.y1 -= h;
557e: b280 uxth r0, r0
5580: f8bd 3006 ldrh.w r3, [sp, #6]
5584: 1a1b subs r3, r3, r0
5586: f8ad 3006 strh.w r3, [sp, #6]
coords.y2 += h;
558a: f8bd 300a ldrh.w r3, [sp, #10]
558e: 4418 add r0, r3
5590: f8ad 000a strh.w r0, [sp, #10]
lv_draw_rect(&coords, clip_area, &draw_dsc);
5594: aa03 add r2, sp, #12
5596: 4631 mov r1, r6
5598: a801 add r0, sp, #4
559a: 4b3f ldr r3, [pc, #252] ; (5698 <lv_obj_design+0x270>)
559c: 4798 blx r3
_LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar)
559e: 2202 movs r2, #2
55a0: 2100 movs r1, #0
55a2: 4620 mov r0, r4
55a4: 4b37 ldr r3, [pc, #220] ; (5684 <lv_obj_design+0x25c>)
55a6: 4798 blx r3
if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) {
55a8: b908 cbnz r0, 55ae <lv_obj_design+0x186>
return LV_DESIGN_RES_OK;
55aa: 2000 movs r0, #0
55ac: e749 b.n 5442 <lv_obj_design+0x1a>
lv_draw_mask_radius_param_t * mp = _lv_mem_buf_get(sizeof(lv_draw_mask_radius_param_t));
55ae: 201c movs r0, #28
55b0: 4b3a ldr r3, [pc, #232] ; (569c <lv_obj_design+0x274>)
55b2: 4798 blx r3
55b4: 4605 mov r5, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
55b6: 2201 movs r2, #1
55b8: 2100 movs r1, #0
55ba: 4620 mov r0, r4
55bc: 4b31 ldr r3, [pc, #196] ; (5684 <lv_obj_design+0x25c>)
55be: 4798 blx r3
lv_draw_mask_radius_init(mp, &obj->coords, r, false);
55c0: 2300 movs r3, #0
55c2: 4602 mov r2, r0
55c4: 4639 mov r1, r7
55c6: 4628 mov r0, r5
55c8: 4e35 ldr r6, [pc, #212] ; (56a0 <lv_obj_design+0x278>)
55ca: 47b0 blx r6
lv_draw_mask_add(mp, obj + 8);
55cc: f504 7118 add.w r1, r4, #608 ; 0x260
55d0: 4628 mov r0, r5
55d2: 4b34 ldr r3, [pc, #208] ; (56a4 <lv_obj_design+0x27c>)
55d4: 4798 blx r3
55d6: e7e8 b.n 55aa <lv_obj_design+0x182>
_LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar)
55d8: 2202 movs r2, #2
55da: 2100 movs r1, #0
55dc: 4b29 ldr r3, [pc, #164] ; (5684 <lv_obj_design+0x25c>)
55de: 4798 blx r3
if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) {
55e0: b938 cbnz r0, 55f2 <lv_obj_design+0x1ca>
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar)
55e2: 2233 movs r2, #51 ; 0x33
55e4: 2100 movs r1, #0
55e6: 4620 mov r0, r4
55e8: 4b26 ldr r3, [pc, #152] ; (5684 <lv_obj_design+0x25c>)
55ea: 4798 blx r3
if(lv_obj_get_style_border_post(obj, LV_OBJ_PART_MAIN)) {
55ec: b940 cbnz r0, 5600 <lv_obj_design+0x1d8>
return LV_DESIGN_RES_OK;
55ee: 2000 movs r0, #0
55f0: e727 b.n 5442 <lv_obj_design+0x1a>
lv_draw_mask_radius_param_t * param = lv_draw_mask_remove_custom(obj + 8);
55f2: f504 7018 add.w r0, r4, #608 ; 0x260
55f6: 4b2c ldr r3, [pc, #176] ; (56a8 <lv_obj_design+0x280>)
55f8: 4798 blx r3
_lv_mem_buf_release(param);
55fa: 4b2c ldr r3, [pc, #176] ; (56ac <lv_obj_design+0x284>)
55fc: 4798 blx r3
55fe: e7f0 b.n 55e2 <lv_obj_design+0x1ba>
lv_draw_rect_dsc_init(&draw_dsc);
5600: a803 add r0, sp, #12
5602: 4b23 ldr r3, [pc, #140] ; (5690 <lv_obj_design+0x268>)
5604: 4798 blx r3
draw_dsc.bg_opa = LV_OPA_TRANSP;
5606: 2700 movs r7, #0
5608: f88d 7018 strb.w r7, [sp, #24]
draw_dsc.pattern_opa = LV_OPA_TRANSP;
560c: f88d 7042 strb.w r7, [sp, #66] ; 0x42
draw_dsc.shadow_opa = LV_OPA_TRANSP;
5610: f88d 7034 strb.w r7, [sp, #52] ; 0x34
lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc);
5614: aa03 add r2, sp, #12
5616: 4639 mov r1, r7
5618: 4620 mov r0, r4
561a: 4b1e ldr r3, [pc, #120] ; (5694 <lv_obj_design+0x26c>)
561c: 4798 blx r3
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar)
561e: 2204 movs r2, #4
5620: 4639 mov r1, r7
5622: 4620 mov r0, r4
5624: 4d17 ldr r5, [pc, #92] ; (5684 <lv_obj_design+0x25c>)
5626: 47a8 blx r5
5628: 4680 mov r8, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar)
562a: 2205 movs r2, #5
562c: 4639 mov r1, r7
562e: 4620 mov r0, r4
5630: 47a8 blx r5
5632: f104 030f add.w r3, r4, #15
5636: 3417 adds r4, #23
uint8_t * d8 = (uint8_t *)dst;
5638: aa01 add r2, sp, #4
*d8 = *s8;
563a: f813 1f01 ldrb.w r1, [r3, #1]!
563e: f802 1b01 strb.w r1, [r2], #1
while(len) {
5642: 42a3 cmp r3, r4
5644: d1f9 bne.n 563a <lv_obj_design+0x212>
coords.x1 -= w;
5646: fa1f f388 uxth.w r3, r8
564a: f8bd 2004 ldrh.w r2, [sp, #4]
564e: 1ad2 subs r2, r2, r3
5650: f8ad 2004 strh.w r2, [sp, #4]
coords.x2 += w;
5654: f8bd 2008 ldrh.w r2, [sp, #8]
5658: 4413 add r3, r2
565a: f8ad 3008 strh.w r3, [sp, #8]
coords.y1 -= h;
565e: b280 uxth r0, r0
5660: f8bd 3006 ldrh.w r3, [sp, #6]
5664: 1a1b subs r3, r3, r0
5666: f8ad 3006 strh.w r3, [sp, #6]
coords.y2 += h;
566a: f8bd 300a ldrh.w r3, [sp, #10]
566e: 4418 add r0, r3
5670: f8ad 000a strh.w r0, [sp, #10]
lv_draw_rect(&coords, clip_area, &draw_dsc);
5674: aa03 add r2, sp, #12
5676: 4631 mov r1, r6
5678: a801 add r0, sp, #4
567a: 4b07 ldr r3, [pc, #28] ; (5698 <lv_obj_design+0x270>)
567c: 4798 blx r3
return LV_DESIGN_RES_OK;
567e: 2000 movs r0, #0
5680: e6df b.n 5442 <lv_obj_design+0x1a>
5682: bf00 nop
5684: 000044d5 .word 0x000044d5
5688: 0001176d .word 0x0001176d
568c: 0000460d .word 0x0000460d
5690: 0000c269 .word 0x0000c269
5694: 000050c5 .word 0x000050c5
5698: 0000c331 .word 0x0000c331
569c: 0001293d .word 0x0001293d
56a0: 0000c02d .word 0x0000c02d
56a4: 0000bdc1 .word 0x0000bdc1
56a8: 0000be91 .word 0x0000be91
56ac: 00012571 .word 0x00012571
000056b0 <lv_obj_init_draw_label_dsc>:
{
56b0: b5f8 push {r3, r4, r5, r6, r7, lr}
56b2: 4605 mov r5, r0
56b4: 460e mov r6, r1
56b6: 4614 mov r4, r2
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_OPA, text_opa, lv_opa_t, _opa, scalar)
56b8: f248 028c movw r2, #32908 ; 0x808c
56bc: 4b26 ldr r3, [pc, #152] ; (5758 <lv_obj_init_draw_label_dsc+0xa8>)
56be: 4798 blx r3
draw_dsc->opa = lv_obj_get_style_text_opa(obj, part);
56c0: 7220 strb r0, [r4, #8]
if(draw_dsc->opa <= LV_OPA_MIN) return;
56c2: 2805 cmp r0, #5
56c4: d800 bhi.n 56c8 <lv_obj_init_draw_label_dsc+0x18>
56c6: bdf8 pop {r3, r4, r5, r6, r7, pc}
_LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar)
56c8: f248 020c movw r2, #32780 ; 0x800c
56cc: 4631 mov r1, r6
56ce: 4628 mov r0, r5
56d0: 4b21 ldr r3, [pc, #132] ; (5758 <lv_obj_init_draw_label_dsc+0xa8>)
56d2: 4798 blx r3
if(opa_scale < LV_OPA_MAX) {
56d4: 28f9 cmp r0, #249 ; 0xf9
56d6: d805 bhi.n 56e4 <lv_obj_init_draw_label_dsc+0x34>
draw_dsc->opa = (uint16_t)((uint16_t)draw_dsc->opa * opa_scale) >> 8;
56d8: 7a23 ldrb r3, [r4, #8]
56da: fb13 f000 smulbb r0, r3, r0
56de: f3c0 2007 ubfx r0, r0, #8, #8
56e2: 7220 strb r0, [r4, #8]
if(draw_dsc->opa <= LV_OPA_MIN) return;
56e4: 7a23 ldrb r3, [r4, #8]
56e6: 2b05 cmp r3, #5
56e8: d9ed bls.n 56c6 <lv_obj_init_draw_label_dsc+0x16>
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
56ea: f248 0289 movw r2, #32905 ; 0x8089
56ee: 4631 mov r1, r6
56f0: 4628 mov r0, r5
56f2: 4b1a ldr r3, [pc, #104] ; (575c <lv_obj_init_draw_label_dsc+0xac>)
56f4: 4798 blx r3
draw_dsc->color = lv_obj_get_style_text_color(obj, part);
56f6: 8020 strh r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar)
56f8: f248 0280 movw r2, #32896 ; 0x8080
56fc: 4631 mov r1, r6
56fe: 4628 mov r0, r5
5700: 4f17 ldr r7, [pc, #92] ; (5760 <lv_obj_init_draw_label_dsc+0xb0>)
5702: 47b8 blx r7
draw_dsc->letter_space = lv_obj_get_style_text_letter_space(obj, part);
5704: 81a0 strh r0, [r4, #12]
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar)
5706: f248 0281 movw r2, #32897 ; 0x8081
570a: 4631 mov r1, r6
570c: 4628 mov r0, r5
570e: 47b8 blx r7
draw_dsc->line_space = lv_obj_get_style_text_line_space(obj, part);
5710: 8160 strh r0, [r4, #10]
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_DECOR, text_decor, lv_text_decor_t, _int, scalar)
5712: f248 0282 movw r2, #32898 ; 0x8082
5716: 4631 mov r1, r6
5718: 4628 mov r0, r5
571a: 47b8 blx r7
571c: 7620 strb r0, [r4, #24]
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_BLEND_MODE, text_blend_mode, lv_blend_mode_t, _int, scalar)
571e: f248 0283 movw r2, #32899 ; 0x8083
5722: 4631 mov r1, r6
5724: 4628 mov r0, r5
5726: 47b8 blx r7
5728: 7660 strb r0, [r4, #25]
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar)
572a: f248 028e movw r2, #32910 ; 0x808e
572e: 4631 mov r1, r6
5730: 4628 mov r0, r5
5732: 4b0c ldr r3, [pc, #48] ; (5764 <lv_obj_init_draw_label_dsc+0xb4>)
5734: 4798 blx r3
draw_dsc->font = lv_obj_get_style_text_font(obj, part);
5736: 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) {
5738: 89e2 ldrh r2, [r4, #14]
573a: f64f 73ff movw r3, #65535 ; 0xffff
573e: 429a cmp r2, r3
5740: d0c1 beq.n 56c6 <lv_obj_init_draw_label_dsc+0x16>
5742: 8a22 ldrh r2, [r4, #16]
5744: 429a cmp r2, r3
5746: d0be beq.n 56c6 <lv_obj_init_draw_label_dsc+0x16>
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_SEL_COLOR, text_sel_color, lv_color_t, _color, nonscalar)
5748: f248 028a movw r2, #32906 ; 0x808a
574c: 4631 mov r1, r6
574e: 4628 mov r0, r5
5750: 4b02 ldr r3, [pc, #8] ; (575c <lv_obj_init_draw_label_dsc+0xac>)
5752: 4798 blx r3
draw_dsc->color = lv_obj_get_style_text_sel_color(obj, part);
5754: 8020 strh r0, [r4, #0]
5756: e7b6 b.n 56c6 <lv_obj_init_draw_label_dsc+0x16>
5758: 0000460d .word 0x0000460d
575c: 00004581 .word 0x00004581
5760: 000044d5 .word 0x000044d5
5764: 000046a1 .word 0x000046a1
00005768 <lv_obj_init_draw_img_dsc>:
{
5768: b570 push {r4, r5, r6, lr}
576a: 4605 mov r5, r0
576c: 460e mov r6, r1
576e: 4614 mov r4, r2
_LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_OPA, image_opa, lv_opa_t, _opa, scalar)
5770: f248 02ac movw r2, #32940 ; 0x80ac
5774: 4b21 ldr r3, [pc, #132] ; (57fc <lv_obj_init_draw_img_dsc+0x94>)
5776: 4798 blx r3
draw_dsc->opa = lv_obj_get_style_image_opa(obj, part);
5778: 7020 strb r0, [r4, #0]
if(draw_dsc->opa <= LV_OPA_MIN) return;
577a: 2805 cmp r0, #5
577c: d800 bhi.n 5780 <lv_obj_init_draw_img_dsc+0x18>
577e: bd70 pop {r4, r5, r6, pc}
_LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar)
5780: f248 020c movw r2, #32780 ; 0x800c
5784: 4631 mov r1, r6
5786: 4628 mov r0, r5
5788: 4b1c ldr r3, [pc, #112] ; (57fc <lv_obj_init_draw_img_dsc+0x94>)
578a: 4798 blx r3
if(opa_scale < LV_OPA_MAX) {
578c: 28f9 cmp r0, #249 ; 0xf9
578e: d805 bhi.n 579c <lv_obj_init_draw_img_dsc+0x34>
draw_dsc->opa = (uint16_t)((uint16_t)draw_dsc->opa * opa_scale) >> 8;
5790: 7823 ldrb r3, [r4, #0]
5792: fb13 f000 smulbb r0, r3, r0
5796: f3c0 2007 ubfx r0, r0, #8, #8
579a: 7020 strb r0, [r4, #0]
if(draw_dsc->opa <= LV_OPA_MIN) return;
579c: 7823 ldrb r3, [r4, #0]
579e: 2b05 cmp r3, #5
57a0: d9ed bls.n 577e <lv_obj_init_draw_img_dsc+0x16>
draw_dsc->angle = 0;
57a2: 2300 movs r3, #0
57a4: 8063 strh r3, [r4, #2]
draw_dsc->zoom = LV_IMG_ZOOM_NONE;
57a6: f44f 7380 mov.w r3, #256 ; 0x100
57aa: 8123 strh r3, [r4, #8]
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
57ac: 8aab ldrh r3, [r5, #20]
57ae: 3301 adds r3, #1
57b0: 8a2a ldrh r2, [r5, #16]
57b2: 1a9b subs r3, r3, r2
draw_dsc->pivot.x = lv_area_get_width(&obj->coords) / 2;
57b4: b21b sxth r3, r3
57b6: eb03 73d3 add.w r3, r3, r3, lsr #31
57ba: 105b asrs r3, r3, #1
57bc: 80a3 strh r3, [r4, #4]
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
57be: 8aeb ldrh r3, [r5, #22]
57c0: 3301 adds r3, #1
57c2: 8a6a ldrh r2, [r5, #18]
57c4: 1a9b subs r3, r3, r2
draw_dsc->pivot.y = lv_area_get_height(&obj->coords) / 2;
57c6: b21b sxth r3, r3
57c8: eb03 73d3 add.w r3, r3, r3, lsr #31
57cc: 105b asrs r3, r3, #1
57ce: 80e3 strh r3, [r4, #6]
_LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR_OPA, image_recolor_opa, lv_opa_t, _opa, scalar)
57d0: f248 02ad movw r2, #32941 ; 0x80ad
57d4: 4631 mov r1, r6
57d6: 4628 mov r0, r5
57d8: 4b08 ldr r3, [pc, #32] ; (57fc <lv_obj_init_draw_img_dsc+0x94>)
57da: 4798 blx r3
draw_dsc->recolor_opa = lv_obj_get_style_image_recolor_opa(obj, part);
57dc: 72a0 strb r0, [r4, #10]
_LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar)
57de: f248 02a9 movw r2, #32937 ; 0x80a9
57e2: 4631 mov r1, r6
57e4: 4628 mov r0, r5
57e6: 4b06 ldr r3, [pc, #24] ; (5800 <lv_obj_init_draw_img_dsc+0x98>)
57e8: 4798 blx r3
draw_dsc->recolor = lv_obj_get_style_image_recolor(obj, part);
57ea: 81a0 strh r0, [r4, #12]
_LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_BLEND_MODE, image_blend_mode, lv_blend_mode_t, _int, scalar)
57ec: f248 02a0 movw r2, #32928 ; 0x80a0
57f0: 4631 mov r1, r6
57f2: 4628 mov r0, r5
57f4: 4b03 ldr r3, [pc, #12] ; (5804 <lv_obj_init_draw_img_dsc+0x9c>)
57f6: 4798 blx r3
57f8: 73a0 strb r0, [r4, #14]
57fa: e7c0 b.n 577e <lv_obj_init_draw_img_dsc+0x16>
57fc: 0000460d .word 0x0000460d
5800: 00004581 .word 0x00004581
5804: 000044d5 .word 0x000044d5
00005808 <lv_obj_get_draw_rect_ext_pad_size>:
{
5808: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
580c: b089 sub sp, #36 ; 0x24
580e: 4604 mov r4, r0
5810: 460e mov r6, r1
_LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar)
5812: 2250 movs r2, #80 ; 0x50
5814: 4b76 ldr r3, [pc, #472] ; (59f0 <lv_obj_get_draw_rect_ext_pad_size+0x1e8>)
5816: 4798 blx r3
if(sh_width) {
5818: 4607 mov r7, r0
581a: bb68 cbnz r0, 5878 <lv_obj_get_draw_rect_ext_pad_size+0x70>
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_STR, value_str, const char *, _ptr, scalar)
581c: 227f movs r2, #127 ; 0x7f
581e: 4631 mov r1, r6
5820: 4620 mov r0, r4
5822: 4b74 ldr r3, [pc, #464] ; (59f4 <lv_obj_get_draw_rect_ext_pad_size+0x1ec>)
5824: 4798 blx r3
if(value_str) {
5826: 4680 mov r8, r0
5828: b130 cbz r0, 5838 <lv_obj_get_draw_rect_ext_pad_size+0x30>
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OPA, value_opa, lv_opa_t, _opa, scalar)
582a: 227c movs r2, #124 ; 0x7c
582c: 4631 mov r1, r6
582e: 4620 mov r0, r4
5830: 4b71 ldr r3, [pc, #452] ; (59f8 <lv_obj_get_draw_rect_ext_pad_size+0x1f0>)
5832: 4798 blx r3
if(value_opa > LV_OPA_MIN) {
5834: 2805 cmp r0, #5
5836: d84c bhi.n 58d2 <lv_obj_get_draw_rect_ext_pad_size+0xca>
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar)
5838: 2240 movs r2, #64 ; 0x40
583a: 4631 mov r1, r6
583c: 4620 mov r0, r4
583e: 4b6c ldr r3, [pc, #432] ; (59f0 <lv_obj_get_draw_rect_ext_pad_size+0x1e8>)
5840: 4798 blx r3
if(outline_width) {
5842: 4605 mov r5, r0
5844: 2800 cmp r0, #0
5846: f040 80bf bne.w 59c8 <lv_obj_get_draw_rect_ext_pad_size+0x1c0>
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar)
584a: 2204 movs r2, #4
584c: 4631 mov r1, r6
584e: 4620 mov r0, r4
5850: f8df 819c ldr.w r8, [pc, #412] ; 59f0 <lv_obj_get_draw_rect_ext_pad_size+0x1e8>
5854: 47c0 blx r8
5856: 4605 mov r5, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar)
5858: 2205 movs r2, #5
585a: 4631 mov r1, r6
585c: 4620 mov r0, r4
585e: 47c0 blx r8
lv_coord_t wh = LV_MATH_MAX(w, h);
5860: 42a8 cmp r0, r5
5862: bfb8 it lt
5864: 4628 movlt r0, r5
5866: b200 sxth r0, r0
if(wh > 0) s += wh;
5868: 2800 cmp r0, #0
586a: bfc4 itt gt
586c: 19c0 addgt r0, r0, r7
586e: b207 sxthgt r7, r0
}
5870: 4638 mov r0, r7
5872: b009 add sp, #36 ; 0x24
5874: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
_LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OPA, shadow_opa, lv_opa_t, _opa, scalar)
5878: 225c movs r2, #92 ; 0x5c
587a: 4631 mov r1, r6
587c: 4620 mov r0, r4
587e: 4b5e ldr r3, [pc, #376] ; (59f8 <lv_obj_get_draw_rect_ext_pad_size+0x1f0>)
5880: 4798 blx r3
if(sh_opa > LV_OPA_MIN) {
5882: 2805 cmp r0, #5
5884: d801 bhi.n 588a <lv_obj_get_draw_rect_ext_pad_size+0x82>
lv_coord_t s = 0;
5886: 2700 movs r7, #0
5888: e7c8 b.n 581c <lv_obj_get_draw_rect_ext_pad_size+0x14>
_LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar)
588a: 2253 movs r2, #83 ; 0x53
588c: 4631 mov r1, r6
588e: 4620 mov r0, r4
5890: 4d57 ldr r5, [pc, #348] ; (59f0 <lv_obj_get_draw_rect_ext_pad_size+0x1e8>)
5892: 47a8 blx r5
sh_width = sh_width / 2; /*THe blur adds only half width*/
5894: eb07 77d7 add.w r7, r7, r7, lsr #31
sh_width++;
5898: eb00 0767 add.w r7, r0, r7, asr #1
sh_width += lv_obj_get_style_shadow_spread(obj, part);
589c: 3701 adds r7, #1
589e: b2bf uxth r7, r7
_LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_X, shadow_ofs_x, lv_style_int_t, _int, scalar)
58a0: 2251 movs r2, #81 ; 0x51
58a2: 4631 mov r1, r6
58a4: 4620 mov r0, r4
58a6: 47a8 blx r5
58a8: 4680 mov r8, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_Y, shadow_ofs_y, lv_style_int_t, _int, scalar)
58aa: 2252 movs r2, #82 ; 0x52
58ac: 4631 mov r1, r6
58ae: 4620 mov r0, r4
58b0: 47a8 blx r5
sh_width += LV_MATH_MAX(LV_MATH_ABS(sh_ofs_x), LV_MATH_ABS(sh_ofs_y));
58b2: 2800 cmp r0, #0
58b4: bfb8 it lt
58b6: 4240 neglt r0, r0
58b8: f1b8 0f00 cmp.w r8, #0
58bc: bfb8 it lt
58be: f1c8 0800 rsblt r8, r8, #0
58c2: 4540 cmp r0, r8
58c4: bfac ite ge
58c6: 183f addge r7, r7, r0
58c8: 4447 addlt r7, r8
s = LV_MATH_MAX(s, sh_width);
58ca: b238 sxth r0, r7
58cc: ea20 77e0 bic.w r7, r0, r0, asr #31
58d0: e7a4 b.n 581c <lv_obj_get_draw_rect_ext_pad_size+0x14>
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LETTER_SPACE, value_letter_space, lv_style_int_t, _int, scalar)
58d2: 2270 movs r2, #112 ; 0x70
58d4: 4631 mov r1, r6
58d6: 4620 mov r0, r4
58d8: 4d45 ldr r5, [pc, #276] ; (59f0 <lv_obj_get_draw_rect_ext_pad_size+0x1e8>)
58da: 47a8 blx r5
58dc: 4682 mov sl, r0
58de: 2270 movs r2, #112 ; 0x70
58e0: 4631 mov r1, r6
58e2: 4620 mov r0, r4
58e4: 47a8 blx r5
58e6: 4683 mov fp, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar)
58e8: 227e movs r2, #126 ; 0x7e
58ea: 4631 mov r1, r6
58ec: 4620 mov r0, r4
58ee: 4b41 ldr r3, [pc, #260] ; (59f4 <lv_obj_get_draw_rect_ext_pad_size+0x1ec>)
58f0: 4798 blx r3
_lv_txt_get_size(&txt_size, value_str, font, letter_space, line_space, LV_COORD_MAX, LV_TXT_FLAG_NONE);
58f2: f04f 0900 mov.w r9, #0
58f6: f8cd 9008 str.w r9, [sp, #8]
58fa: f647 4318 movw r3, #31768 ; 0x7c18
58fe: 9301 str r3, [sp, #4]
5900: f8cd b000 str.w fp, [sp]
5904: 4653 mov r3, sl
5906: 4602 mov r2, r0
5908: 4641 mov r1, r8
590a: a804 add r0, sp, #16
590c: f8df 80ec ldr.w r8, [pc, #236] ; 59fc <lv_obj_get_draw_rect_ext_pad_size+0x1f4>
5910: 47c0 blx r8
value_area.x1 = 0;
5912: f8ad 9018 strh.w r9, [sp, #24]
value_area.y1 = 0;
5916: f8ad 901a strh.w r9, [sp, #26]
value_area.x2 = txt_size.x - 1;
591a: f8bd 3010 ldrh.w r3, [sp, #16]
591e: 3b01 subs r3, #1
5920: f8ad 301c strh.w r3, [sp, #28]
value_area.y2 = txt_size.y - 1;
5924: f8bd 3012 ldrh.w r3, [sp, #18]
5928: 3b01 subs r3, #1
592a: f8ad 301e strh.w r3, [sp, #30]
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_ALIGN, value_align, lv_align_t, _int, scalar)
592e: 2275 movs r2, #117 ; 0x75
5930: 4631 mov r1, r6
5932: 4620 mov r0, r4
5934: 47a8 blx r5
5936: 4681 mov r9, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_X, value_ofs_x, lv_style_int_t, _int, scalar)
5938: 2273 movs r2, #115 ; 0x73
593a: 4631 mov r1, r6
593c: 4620 mov r0, r4
593e: 47a8 blx r5
5940: 4680 mov r8, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_Y, value_ofs_y, lv_style_int_t, _int, scalar)
5942: 2274 movs r2, #116 ; 0x74
5944: 4631 mov r1, r6
5946: 4620 mov r0, r4
5948: 47a8 blx r5
594a: 4605 mov r5, r0
_lv_area_align(&obj->coords, &value_area, align, &p_align);
594c: ab05 add r3, sp, #20
594e: fa5f f289 uxtb.w r2, r9
5952: a906 add r1, sp, #24
5954: f104 0010 add.w r0, r4, #16
5958: f8df 90a4 ldr.w r9, [pc, #164] ; 5a00 <lv_obj_get_draw_rect_ext_pad_size+0x1f8>
595c: 47c8 blx r9
value_area.x1 += p_align.x + xofs;
595e: f8bd 3014 ldrh.w r3, [sp, #20]
5962: 4443 add r3, r8
5964: b29b uxth r3, r3
value_area.y1 += p_align.y + yofs;
5966: f8bd 2016 ldrh.w r2, [sp, #22]
596a: 442a add r2, r5
596c: b292 uxth r2, r2
s = LV_MATH_MAX(s, obj->coords.x1 - value_area.x1);
596e: f9b4 0010 ldrsh.w r0, [r4, #16]
value_area.x1 += p_align.x + xofs;
5972: f8bd 1018 ldrh.w r1, [sp, #24]
5976: 4419 add r1, r3
s = LV_MATH_MAX(s, obj->coords.x1 - value_area.x1);
5978: b209 sxth r1, r1
597a: 1a40 subs r0, r0, r1
597c: 42b8 cmp r0, r7
597e: bfb8 it lt
5980: 4638 movlt r0, r7
s = LV_MATH_MAX(s, obj->coords.y1 - value_area.y1);
5982: f9b4 1012 ldrsh.w r1, [r4, #18]
value_area.y1 += p_align.y + yofs;
5986: f8bd 701a ldrh.w r7, [sp, #26]
598a: 4417 add r7, r2
s = LV_MATH_MAX(s, obj->coords.y1 - value_area.y1);
598c: b23f sxth r7, r7
598e: 1bcf subs r7, r1, r7
5990: b200 sxth r0, r0
5992: 4287 cmp r7, r0
5994: bfb8 it lt
5996: 4607 movlt r7, r0
value_area.x2 += p_align.x + xofs;
5998: f8bd 001c ldrh.w r0, [sp, #28]
599c: 4403 add r3, r0
s = LV_MATH_MAX(s, value_area.x2 - obj->coords.x2);
599e: b21b sxth r3, r3
59a0: f9b4 0014 ldrsh.w r0, [r4, #20]
59a4: 1a18 subs r0, r3, r0
59a6: b23b sxth r3, r7
59a8: 4283 cmp r3, r0
59aa: bfb8 it lt
59ac: 4603 movlt r3, r0
value_area.y2 += p_align.y + yofs;
59ae: f8bd 001e ldrh.w r0, [sp, #30]
59b2: 4410 add r0, r2
s = LV_MATH_MAX(s, value_area.y2 - obj->coords.y2);
59b4: b200 sxth r0, r0
59b6: f9b4 7016 ldrsh.w r7, [r4, #22]
59ba: 1bc7 subs r7, r0, r7
59bc: b218 sxth r0, r3
59be: 42b8 cmp r0, r7
59c0: bfb8 it lt
59c2: 4638 movlt r0, r7
59c4: b207 sxth r7, r0
59c6: e737 b.n 5838 <lv_obj_get_draw_rect_ext_pad_size+0x30>
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar)
59c8: 224c movs r2, #76 ; 0x4c
59ca: 4631 mov r1, r6
59cc: 4620 mov r0, r4
59ce: 4b0a ldr r3, [pc, #40] ; (59f8 <lv_obj_get_draw_rect_ext_pad_size+0x1f0>)
59d0: 4798 blx r3
if(outline_opa > LV_OPA_MIN) {
59d2: 2805 cmp r0, #5
59d4: f67f af39 bls.w 584a <lv_obj_get_draw_rect_ext_pad_size+0x42>
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar)
59d8: 2241 movs r2, #65 ; 0x41
59da: 4631 mov r1, r6
59dc: 4620 mov r0, r4
59de: 4b04 ldr r3, [pc, #16] ; (59f0 <lv_obj_get_draw_rect_ext_pad_size+0x1e8>)
59e0: 4798 blx r3
s = LV_MATH_MAX(s, outline_pad + outline_width);
59e2: 4428 add r0, r5
59e4: 42b8 cmp r0, r7
59e6: bfb8 it lt
59e8: 4638 movlt r0, r7
59ea: b207 sxth r7, r0
59ec: e72d b.n 584a <lv_obj_get_draw_rect_ext_pad_size+0x42>
59ee: bf00 nop
59f0: 000044d5 .word 0x000044d5
59f4: 000046a1 .word 0x000046a1
59f8: 0000460d .word 0x0000460d
59fc: 0001407d .word 0x0001407d
5a00: 00011825 .word 0x00011825
00005a04 <lv_obj_signal>:
if(sign == LV_SIGNAL_GET_STYLE) {
5a04: 2908 cmp r1, #8
5a06: d01a beq.n 5a3e <lv_obj_signal+0x3a>
{
5a08: b510 push {r4, lr}
5a0a: 4604 mov r4, r0
else if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME);
5a0c: 2907 cmp r1, #7
5a0e: d020 beq.n 5a52 <lv_obj_signal+0x4e>
if(sign == LV_SIGNAL_CHILD_CHG) {
5a10: 2901 cmp r1, #1
5a12: d023 beq.n 5a5c <lv_obj_signal+0x58>
else if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) {
5a14: 2906 cmp r1, #6
5a16: d027 beq.n 5a68 <lv_obj_signal+0x64>
else if(sign == LV_SIGNAL_PARENT_SIZE_CHG) {
5a18: 2903 cmp r1, #3
5a1a: d030 beq.n 5a7e <lv_obj_signal+0x7a>
else if(sign == LV_SIGNAL_STYLE_CHG) {
5a1c: 2904 cmp r1, #4
5a1e: d039 beq.n 5a94 <lv_obj_signal+0x90>
else if(sign == LV_SIGNAL_PRESSED) {
5a20: 290b cmp r1, #11
5a22: d03b beq.n 5a9c <lv_obj_signal+0x98>
else if(sign == LV_SIGNAL_RELEASED || sign == LV_SIGNAL_PRESS_LOST) {
5a24: f1a1 030d sub.w r3, r1, #13
5a28: b2db uxtb r3, r3
5a2a: 2b01 cmp r3, #1
5a2c: d93b bls.n 5aa6 <lv_obj_signal+0xa2>
else if(sign == LV_SIGNAL_FOCUS) {
5a2e: 2916 cmp r1, #22
5a30: d03e beq.n 5ab0 <lv_obj_signal+0xac>
else if(sign == LV_SIGNAL_DEFOCUS) {
5a32: 2917 cmp r1, #23
5a34: d051 beq.n 5ada <lv_obj_signal+0xd6>
else if(sign == LV_SIGNAL_CLEANUP) {
5a36: 2900 cmp r1, #0
5a38: d054 beq.n 5ae4 <lv_obj_signal+0xe0>
lv_res_t res = LV_RES_OK;
5a3a: 2001 movs r0, #1
}
5a3c: bd10 pop {r4, pc}
if(info->part == LV_OBJ_PART_MAIN) info->result = &obj->style_list;
5a3e: 7813 ldrb r3, [r2, #0]
5a40: b91b cbnz r3, 5a4a <lv_obj_signal+0x46>
5a42: 3028 adds r0, #40 ; 0x28
5a44: 6050 str r0, [r2, #4]
return LV_RES_OK;
5a46: 2001 movs r0, #1
5a48: 4770 bx lr
else info->result = NULL;
5a4a: 2300 movs r3, #0
5a4c: 6053 str r3, [r2, #4]
return LV_RES_OK;
5a4e: 2001 movs r0, #1
5a50: 4770 bx lr
else if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME);
5a52: 4926 ldr r1, [pc, #152] ; (5aec <lv_obj_signal+0xe8>)
5a54: 4610 mov r0, r2
5a56: 4b26 ldr r3, [pc, #152] ; (5af0 <lv_obj_signal+0xec>)
5a58: 4798 blx r3
5a5a: bd10 pop {r4, pc}
if(lv_obj_is_protected(obj, LV_PROTECT_CHILD_CHG) != false) res = LV_RES_INV;
5a5c: 4b25 ldr r3, [pc, #148] ; (5af4 <lv_obj_signal+0xf0>)
5a5e: 4798 blx r3
5a60: f080 0001 eor.w r0, r0, #1
return LV_RES_OK;
5a64: b2c0 uxtb r0, r0
5a66: bd10 pop {r4, pc}
lv_coord_t d = lv_obj_get_draw_rect_ext_pad_size(obj, LV_OBJ_PART_MAIN);
5a68: 2100 movs r1, #0
5a6a: 4b23 ldr r3, [pc, #140] ; (5af8 <lv_obj_signal+0xf4>)
5a6c: 4798 blx r3
obj->ext_draw_pad = LV_MATH_MAX(obj->ext_draw_pad, d);
5a6e: f9b4 3032 ldrsh.w r3, [r4, #50] ; 0x32
5a72: 4298 cmp r0, r3
5a74: bfb8 it lt
5a76: 4618 movlt r0, r3
5a78: 8660 strh r0, [r4, #50] ; 0x32
lv_res_t res = LV_RES_OK;
5a7a: 2001 movs r0, #1
5a7c: bd10 pop {r4, pc}
if(obj->realign.auto_realign) {
5a7e: f890 3049 ldrb.w r3, [r0, #73] ; 0x49
5a82: f013 0f01 tst.w r3, #1
5a86: d101 bne.n 5a8c <lv_obj_signal+0x88>
lv_res_t res = LV_RES_OK;
5a88: 2001 movs r0, #1
5a8a: bd10 pop {r4, pc}
lv_obj_realign(obj);
5a8c: 4b1b ldr r3, [pc, #108] ; (5afc <lv_obj_signal+0xf8>)
5a8e: 4798 blx r3
lv_res_t res = LV_RES_OK;
5a90: 2001 movs r0, #1
5a92: bd10 pop {r4, pc}
lv_obj_refresh_ext_draw_pad(obj);
5a94: 4b1a ldr r3, [pc, #104] ; (5b00 <lv_obj_signal+0xfc>)
5a96: 4798 blx r3
lv_res_t res = LV_RES_OK;
5a98: 2001 movs r0, #1
5a9a: bd10 pop {r4, pc}
lv_obj_add_state(obj, LV_STATE_PRESSED);
5a9c: 2110 movs r1, #16
5a9e: 4b19 ldr r3, [pc, #100] ; (5b04 <lv_obj_signal+0x100>)
5aa0: 4798 blx r3
lv_res_t res = LV_RES_OK;
5aa2: 2001 movs r0, #1
5aa4: bd10 pop {r4, pc}
lv_obj_clear_state(obj, LV_STATE_PRESSED);
5aa6: 2110 movs r1, #16
5aa8: 4b17 ldr r3, [pc, #92] ; (5b08 <lv_obj_signal+0x104>)
5aaa: 4798 blx r3
lv_res_t res = LV_RES_OK;
5aac: 2001 movs r0, #1
5aae: bd10 pop {r4, pc}
if(lv_group_get_editing(lv_obj_get_group(obj))) {
5ab0: 4b16 ldr r3, [pc, #88] ; (5b0c <lv_obj_signal+0x108>)
5ab2: 4798 blx r3
5ab4: 4b16 ldr r3, [pc, #88] ; (5b10 <lv_obj_signal+0x10c>)
5ab6: 4798 blx r3
5ab8: b128 cbz r0, 5ac6 <lv_obj_signal+0xc2>
lv_obj_add_state(obj, state);
5aba: 2106 movs r1, #6
5abc: 4620 mov r0, r4
5abe: 4b11 ldr r3, [pc, #68] ; (5b04 <lv_obj_signal+0x100>)
5ac0: 4798 blx r3
lv_res_t res = LV_RES_OK;
5ac2: 2001 movs r0, #1
5ac4: bd10 pop {r4, pc}
lv_obj_add_state(obj, LV_STATE_FOCUSED);
5ac6: 2102 movs r1, #2
5ac8: 4620 mov r0, r4
5aca: 4b0e ldr r3, [pc, #56] ; (5b04 <lv_obj_signal+0x100>)
5acc: 4798 blx r3
lv_obj_clear_state(obj, LV_STATE_EDITED);
5ace: 2104 movs r1, #4
5ad0: 4620 mov r0, r4
5ad2: 4b0d ldr r3, [pc, #52] ; (5b08 <lv_obj_signal+0x104>)
5ad4: 4798 blx r3
lv_res_t res = LV_RES_OK;
5ad6: 2001 movs r0, #1
5ad8: bd10 pop {r4, pc}
lv_obj_clear_state(obj, LV_STATE_FOCUSED | LV_STATE_EDITED);
5ada: 2106 movs r1, #6
5adc: 4b0a ldr r3, [pc, #40] ; (5b08 <lv_obj_signal+0x104>)
5ade: 4798 blx r3
lv_res_t res = LV_RES_OK;
5ae0: 2001 movs r0, #1
5ae2: bd10 pop {r4, pc}
lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN);
5ae4: 4b0b ldr r3, [pc, #44] ; (5b14 <lv_obj_signal+0x110>)
5ae6: 4798 blx r3
lv_res_t res = LV_RES_OK;
5ae8: 2001 movs r0, #1
5aea: bd10 pop {r4, pc}
5aec: 000249e8 .word 0x000249e8
5af0: 00005095 .word 0x00005095
5af4: 00004415 .word 0x00004415
5af8: 00005809 .word 0x00005809
5afc: 000039e1 .word 0x000039e1
5b00: 00002c2d .word 0x00002c2d
5b04: 00004c9d .word 0x00004c9d
5b08: 00004cf9 .word 0x00004cf9
5b0c: 00004de5 .word 0x00004de5
5b10: 0000275b .word 0x0000275b
5b14: 000030cd .word 0x000030cd
00005b18 <lv_refr_get_top_obj>:
* @param area_p pointer to an area
* @param obj the first object to start the searching (typically a screen)
* @return
*/
static lv_obj_t * lv_refr_get_top_obj(const lv_area_t * area_p, lv_obj_t * obj)
{
5b18: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
5b1c: 4605 mov r5, r0
5b1e: 4688 mov r8, r1
lv_obj_t * found_p = NULL;
/*If this object is fully cover the draw area check the children too */
if(_lv_area_is_in(area_p, &obj->coords, 0) && obj->hidden == 0) {
5b20: 2200 movs r2, #0
5b22: 3110 adds r1, #16
5b24: 4b1f ldr r3, [pc, #124] ; (5ba4 <lv_refr_get_top_obj+0x8c>)
5b26: 4798 blx r3
5b28: b350 cbz r0, 5b80 <lv_refr_get_top_obj+0x68>
5b2a: f898 3034 ldrb.w r3, [r8, #52] ; 0x34
5b2e: f013 0f10 tst.w r3, #16
5b32: d127 bne.n 5b84 <lv_refr_get_top_obj+0x6c>
lv_design_res_t design_res = obj->design_cb ? obj->design_cb(obj, area_p,
5b34: f8d8 3020 ldr.w r3, [r8, #32]
5b38: b343 cbz r3, 5b8c <lv_refr_get_top_obj+0x74>
5b3a: 2202 movs r2, #2
5b3c: 4629 mov r1, r5
5b3e: 4640 mov r0, r8
5b40: 4798 blx r3
5b42: 4681 mov r9, r0
LV_DESIGN_COVER_CHK) : LV_DESIGN_RES_NOT_COVER;
if(design_res == LV_DESIGN_RES_MASKED) return NULL;
5b44: 2803 cmp r0, #3
5b46: d01f beq.n 5b88 <lv_refr_get_top_obj+0x70>
lv_obj_t * i;
_LV_LL_READ(obj->child_ll, i) {
5b48: f108 0604 add.w r6, r8, #4
5b4c: 4630 mov r0, r6
5b4e: 4b16 ldr r3, [pc, #88] ; (5ba8 <lv_refr_get_top_obj+0x90>)
5b50: 4798 blx r3
5b52: 4604 mov r4, r0
5b54: b160 cbz r0, 5b70 <lv_refr_get_top_obj+0x58>
5b56: 4f15 ldr r7, [pc, #84] ; (5bac <lv_refr_get_top_obj+0x94>)
found_p = lv_refr_get_top_obj(area_p, i);
5b58: 4621 mov r1, r4
5b5a: 4628 mov r0, r5
5b5c: f7ff ffdc bl 5b18 <lv_refr_get_top_obj>
/*If a children is ok then break*/
if(found_p != NULL) {
5b60: 4603 mov r3, r0
5b62: b950 cbnz r0, 5b7a <lv_refr_get_top_obj+0x62>
_LV_LL_READ(obj->child_ll, i) {
5b64: 4621 mov r1, r4
5b66: 4630 mov r0, r6
5b68: 47b8 blx r7
5b6a: 4604 mov r4, r0
5b6c: 2800 cmp r0, #0
5b6e: d1f3 bne.n 5b58 <lv_refr_get_top_obj+0x40>
}
/*If no better children use this object*/
if(found_p == NULL) {
if(design_res == LV_DESIGN_RES_COVER) {
found_p = obj;
5b70: f1b9 0f01 cmp.w r9, #1
5b74: bf0c ite eq
5b76: 4643 moveq r3, r8
5b78: 2300 movne r3, #0
}
}
}
return found_p;
}
5b7a: 4618 mov r0, r3
5b7c: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
lv_obj_t * found_p = NULL;
5b80: 2300 movs r3, #0
5b82: e7fa b.n 5b7a <lv_refr_get_top_obj+0x62>
5b84: 2300 movs r3, #0
5b86: e7f8 b.n 5b7a <lv_refr_get_top_obj+0x62>
if(design_res == LV_DESIGN_RES_MASKED) return NULL;
5b88: 2300 movs r3, #0
5b8a: e7f6 b.n 5b7a <lv_refr_get_top_obj+0x62>
_LV_LL_READ(obj->child_ll, i) {
5b8c: f108 0604 add.w r6, r8, #4
5b90: 4630 mov r0, r6
5b92: 4b05 ldr r3, [pc, #20] ; (5ba8 <lv_refr_get_top_obj+0x90>)
5b94: 4798 blx r3
5b96: 4604 mov r4, r0
lv_design_res_t design_res = obj->design_cb ? obj->design_cb(obj, area_p,
5b98: f04f 0902 mov.w r9, #2
_LV_LL_READ(obj->child_ll, i) {
5b9c: 2800 cmp r0, #0
5b9e: d1da bne.n 5b56 <lv_refr_get_top_obj+0x3e>
5ba0: 4603 mov r3, r0
5ba2: e7ea b.n 5b7a <lv_refr_get_top_obj+0x62>
5ba4: 0001176d .word 0x0001176d
5ba8: 00011fa9 .word 0x00011fa9
5bac: 00011fbd .word 0x00011fbd
00005bb0 <lv_refr_obj>:
* @param mask_ori_p pointer to an area, the objects will be drawn only here
*/
static void lv_refr_obj(lv_obj_t * obj, const lv_area_t * mask_ori_p)
{
/*Do not refresh hidden objects*/
if(obj->hidden != 0) return;
5bb0: f890 3034 ldrb.w r3, [r0, #52] ; 0x34
5bb4: f013 0f10 tst.w r3, #16
5bb8: d000 beq.n 5bbc <lv_refr_obj+0xc>
5bba: 4770 bx lr
{
5bbc: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
5bc0: b08b sub sp, #44 ; 0x2c
5bc2: 460e mov r6, r1
5bc4: 4605 mov r5, r0
/* Truncate the original mask to the coordinates of the parent
* because the parent and its children are visible only here */
lv_area_t obj_mask;
lv_area_t obj_ext_mask;
lv_area_t obj_area;
lv_coord_t ext_size = obj->ext_draw_pad;
5bc6: f9b0 4032 ldrsh.w r4, [r0, #50] ; 0x32
lv_obj_get_coords(obj, &obj_area);
5bca: a904 add r1, sp, #16
5bcc: 4b35 ldr r3, [pc, #212] ; (5ca4 <lv_refr_obj+0xf4>)
5bce: 4798 blx r3
obj_area.x1 -= ext_size;
5bd0: b2a3 uxth r3, r4
5bd2: f8bd 2010 ldrh.w r2, [sp, #16]
5bd6: 1ad2 subs r2, r2, r3
5bd8: f8ad 2010 strh.w r2, [sp, #16]
obj_area.y1 -= ext_size;
5bdc: f8bd 2012 ldrh.w r2, [sp, #18]
5be0: 1ad2 subs r2, r2, r3
5be2: f8ad 2012 strh.w r2, [sp, #18]
obj_area.x2 += ext_size;
5be6: f8bd 2014 ldrh.w r2, [sp, #20]
5bea: 441a add r2, r3
5bec: f8ad 2014 strh.w r2, [sp, #20]
obj_area.y2 += ext_size;
5bf0: f8bd 2016 ldrh.w r2, [sp, #22]
5bf4: 4413 add r3, r2
5bf6: f8ad 3016 strh.w r3, [sp, #22]
union_ok = _lv_area_intersect(&obj_ext_mask, mask_ori_p, &obj_area);
5bfa: aa04 add r2, sp, #16
5bfc: 4631 mov r1, r6
5bfe: a806 add r0, sp, #24
5c00: 4b29 ldr r3, [pc, #164] ; (5ca8 <lv_refr_obj+0xf8>)
5c02: 4798 blx r3
/*Draw the parent and its children only if they ore on 'mask_parent'*/
if(union_ok != false) {
5c04: b1a8 cbz r0, 5c32 <lv_refr_obj+0x82>
/* Redraw the object */
if(obj->design_cb) obj->design_cb(obj, &obj_ext_mask, LV_DESIGN_DRAW_MAIN);
5c06: 6a2b ldr r3, [r5, #32]
5c08: b11b cbz r3, 5c12 <lv_refr_obj+0x62>
5c0a: 2200 movs r2, #0
5c0c: a906 add r1, sp, #24
5c0e: 4628 mov r0, r5
5c10: 4798 blx r3
#if LV_COLOR_DEPTH == 32
debug_color.ch.alpha = 0xff;
#endif
#endif
/*Create a new 'obj_mask' without 'ext_size' because the children can't be visible there*/
lv_obj_get_coords(obj, &obj_area);
5c12: a904 add r1, sp, #16
5c14: 4628 mov r0, r5
5c16: 4b23 ldr r3, [pc, #140] ; (5ca4 <lv_refr_obj+0xf4>)
5c18: 4798 blx r3
union_ok = _lv_area_intersect(&obj_mask, mask_ori_p, &obj_area);
5c1a: aa04 add r2, sp, #16
5c1c: 4631 mov r1, r6
5c1e: a808 add r0, sp, #32
5c20: 4b21 ldr r3, [pc, #132] ; (5ca8 <lv_refr_obj+0xf8>)
5c22: 4798 blx r3
if(union_ok != false) {
5c24: b940 cbnz r0, 5c38 <lv_refr_obj+0x88>
}
}
}
/* If all the children are redrawn make 'post draw' design */
if(obj->design_cb) obj->design_cb(obj, &obj_ext_mask, LV_DESIGN_DRAW_POST);
5c26: 6a2b ldr r3, [r5, #32]
5c28: b11b cbz r3, 5c32 <lv_refr_obj+0x82>
5c2a: 2201 movs r2, #1
5c2c: a906 add r1, sp, #24
5c2e: 4628 mov r0, r5
5c30: 4798 blx r3
}
}
5c32: b00b add sp, #44 ; 0x2c
5c34: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
_LV_LL_READ_BACK(obj->child_ll, child_p) {
5c38: f105 0804 add.w r8, r5, #4
5c3c: 4640 mov r0, r8
5c3e: 4b1b ldr r3, [pc, #108] ; (5cac <lv_refr_obj+0xfc>)
5c40: 4798 blx r3
5c42: 4604 mov r4, r0
5c44: 2800 cmp r0, #0
5c46: d0ee beq.n 5c26 <lv_refr_obj+0x76>
lv_obj_get_coords(child_p, &child_area);
5c48: f8df 9058 ldr.w r9, [pc, #88] ; 5ca4 <lv_refr_obj+0xf4>
union_ok = _lv_area_intersect(&mask_child, &obj_mask, &child_area);
5c4c: 4e16 ldr r6, [pc, #88] ; (5ca8 <lv_refr_obj+0xf8>)
_LV_LL_READ_BACK(obj->child_ll, child_p) {
5c4e: 4f18 ldr r7, [pc, #96] ; (5cb0 <lv_refr_obj+0x100>)
5c50: e005 b.n 5c5e <lv_refr_obj+0xae>
5c52: 4621 mov r1, r4
5c54: 4640 mov r0, r8
5c56: 47b8 blx r7
5c58: 4604 mov r4, r0
5c5a: 2800 cmp r0, #0
5c5c: d0e3 beq.n 5c26 <lv_refr_obj+0x76>
lv_obj_get_coords(child_p, &child_area);
5c5e: a902 add r1, sp, #8
5c60: 4620 mov r0, r4
5c62: 47c8 blx r9
child_area.x1 -= ext_size;
5c64: 8e63 ldrh r3, [r4, #50] ; 0x32
5c66: f8bd 2008 ldrh.w r2, [sp, #8]
5c6a: 1ad2 subs r2, r2, r3
5c6c: f8ad 2008 strh.w r2, [sp, #8]
child_area.y1 -= ext_size;
5c70: f8bd 200a ldrh.w r2, [sp, #10]
5c74: 1ad2 subs r2, r2, r3
5c76: f8ad 200a strh.w r2, [sp, #10]
child_area.x2 += ext_size;
5c7a: f8bd 200c ldrh.w r2, [sp, #12]
5c7e: 441a add r2, r3
5c80: f8ad 200c strh.w r2, [sp, #12]
child_area.y2 += ext_size;
5c84: f8bd 200e ldrh.w r2, [sp, #14]
5c88: 4413 add r3, r2
5c8a: f8ad 300e strh.w r3, [sp, #14]
union_ok = _lv_area_intersect(&mask_child, &obj_mask, &child_area);
5c8e: aa02 add r2, sp, #8
5c90: a908 add r1, sp, #32
5c92: 4668 mov r0, sp
5c94: 47b0 blx r6
if(union_ok) {
5c96: 2800 cmp r0, #0
5c98: d0db beq.n 5c52 <lv_refr_obj+0xa2>
lv_refr_obj(child_p, &mask_child);
5c9a: 4669 mov r1, sp
5c9c: 4620 mov r0, r4
5c9e: f7ff ff87 bl 5bb0 <lv_refr_obj>
5ca2: e7d6 b.n 5c52 <lv_refr_obj+0xa2>
5ca4: 00002e41 .word 0x00002e41
5ca8: 00011519 .word 0x00011519
5cac: 00011fb3 .word 0x00011fb3
5cb0: 00011fe9 .word 0x00011fe9
00005cb4 <lv_refr_obj_and_children>:
{
5cb4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
5cb8: 460f mov r7, r1
if(top_p == NULL) top_p = lv_disp_get_scr_act(disp_refr);
5cba: 4604 mov r4, r0
5cbc: b170 cbz r0, 5cdc <lv_refr_obj_and_children+0x28>
lv_refr_obj(top_p, mask_p);
5cbe: 4639 mov r1, r7
5cc0: 4620 mov r0, r4
5cc2: 4b1a ldr r3, [pc, #104] ; (5d2c <lv_refr_obj_and_children+0x78>)
5cc4: 4798 blx r3
par = lv_obj_get_parent(top_p);
5cc6: 4620 mov r0, r4
5cc8: 4b19 ldr r3, [pc, #100] ; (5d30 <lv_refr_obj_and_children+0x7c>)
5cca: 4798 blx r3
while(par != NULL) {
5ccc: 4681 mov r9, r0
5cce: b160 cbz r0, 5cea <lv_refr_obj_and_children+0x36>
lv_obj_t * i = _lv_ll_get_prev(&(par->child_ll), border_p);
5cd0: 4e18 ldr r6, [pc, #96] ; (5d34 <lv_refr_obj_and_children+0x80>)
lv_refr_obj(i, mask_p);
5cd2: f8df 8058 ldr.w r8, [pc, #88] ; 5d2c <lv_refr_obj_and_children+0x78>
par = lv_obj_get_parent(par);
5cd6: f8df a058 ldr.w sl, [pc, #88] ; 5d30 <lv_refr_obj_and_children+0x7c>
5cda: e00e b.n 5cfa <lv_refr_obj_and_children+0x46>
if(top_p == NULL) top_p = lv_disp_get_scr_act(disp_refr);
5cdc: 4b16 ldr r3, [pc, #88] ; (5d38 <lv_refr_obj_and_children+0x84>)
5cde: 6818 ldr r0, [r3, #0]
5ce0: 4b16 ldr r3, [pc, #88] ; (5d3c <lv_refr_obj_and_children+0x88>)
5ce2: 4798 blx r3
if(top_p == NULL) return; /*Shouldn't happen*/
5ce4: 4604 mov r4, r0
5ce6: 2800 cmp r0, #0
5ce8: d1e9 bne.n 5cbe <lv_refr_obj_and_children+0xa>
5cea: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
par = lv_obj_get_parent(par);
5cee: 4648 mov r0, r9
5cf0: 47d0 blx sl
5cf2: 464c mov r4, r9
while(par != NULL) {
5cf4: 4681 mov r9, r0
5cf6: 2800 cmp r0, #0
5cf8: d0f7 beq.n 5cea <lv_refr_obj_and_children+0x36>
lv_obj_t * i = _lv_ll_get_prev(&(par->child_ll), border_p);
5cfa: f109 0504 add.w r5, r9, #4
5cfe: 4621 mov r1, r4
5d00: 4628 mov r0, r5
5d02: 47b0 blx r6
while(i != NULL) {
5d04: 4604 mov r4, r0
5d06: b140 cbz r0, 5d1a <lv_refr_obj_and_children+0x66>
lv_refr_obj(i, mask_p);
5d08: 4639 mov r1, r7
5d0a: 4620 mov r0, r4
5d0c: 47c0 blx r8
i = _lv_ll_get_prev(&(par->child_ll), i);
5d0e: 4621 mov r1, r4
5d10: 4628 mov r0, r5
5d12: 47b0 blx r6
while(i != NULL) {
5d14: 4604 mov r4, r0
5d16: 2800 cmp r0, #0
5d18: d1f6 bne.n 5d08 <lv_refr_obj_and_children+0x54>
if(par->design_cb) par->design_cb(par, mask_p, LV_DESIGN_DRAW_POST);
5d1a: f8d9 3020 ldr.w r3, [r9, #32]
5d1e: 2b00 cmp r3, #0
5d20: d0e5 beq.n 5cee <lv_refr_obj_and_children+0x3a>
5d22: 2201 movs r2, #1
5d24: 4639 mov r1, r7
5d26: 4648 mov r0, r9
5d28: 4798 blx r3
5d2a: e7e0 b.n 5cee <lv_refr_obj_and_children+0x3a>
5d2c: 00005bb1 .word 0x00005bb1
5d30: 00002c7d .word 0x00002c7d
5d34: 00011fe9 .word 0x00011fe9
5d38: 20002688 .word 0x20002688
5d3c: 0000234d .word 0x0000234d
00005d40 <lv_refr_vdb_flush>:
/**
* Flush the content of the VDB
*/
static void lv_refr_vdb_flush(void)
{
5d40: b538 push {r3, r4, r5, lr}
lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr);
5d42: 4d1a ldr r5, [pc, #104] ; (5dac <lv_refr_vdb_flush+0x6c>)
5d44: 6828 ldr r0, [r5, #0]
5d46: 4b1a ldr r3, [pc, #104] ; (5db0 <lv_refr_vdb_flush+0x70>)
5d48: 4798 blx r3
5d4a: 4604 mov r4, r0
/*In double buffered mode wait until the other buffer is flushed before flushing the current
* one*/
if(lv_disp_is_double_buf(disp_refr)) {
5d4c: 6828 ldr r0, [r5, #0]
5d4e: 4b19 ldr r3, [pc, #100] ; (5db4 <lv_refr_vdb_flush+0x74>)
5d50: 4798 blx r3
5d52: b978 cbnz r0, 5d74 <lv_refr_vdb_flush+0x34>
while(vdb->flushing) {
if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver);
}
}
vdb->flushing = 1;
5d54: 2301 movs r3, #1
5d56: 61a3 str r3, [r4, #24]
if(disp_refr->driver.buffer->last_area && disp_refr->driver.buffer->last_part) vdb->flushing_last = 1;
5d58: 4b14 ldr r3, [pc, #80] ; (5dac <lv_refr_vdb_flush+0x6c>)
5d5a: 6818 ldr r0, [r3, #0]
5d5c: 6843 ldr r3, [r0, #4]
5d5e: 6a1a ldr r2, [r3, #32]
5d60: f012 0f01 tst.w r2, #1
5d64: d010 beq.n 5d88 <lv_refr_vdb_flush+0x48>
5d66: 6a1b ldr r3, [r3, #32]
5d68: f013 0f02 tst.w r3, #2
5d6c: d00c beq.n 5d88 <lv_refr_vdb_flush+0x48>
5d6e: 2301 movs r3, #1
5d70: 61e3 str r3, [r4, #28]
5d72: e00b b.n 5d8c <lv_refr_vdb_flush+0x4c>
if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver);
5d74: 4d0d ldr r5, [pc, #52] ; (5dac <lv_refr_vdb_flush+0x6c>)
5d76: 6828 ldr r0, [r5, #0]
while(vdb->flushing) {
5d78: 69a3 ldr r3, [r4, #24]
5d7a: 2b00 cmp r3, #0
5d7c: d0ea beq.n 5d54 <lv_refr_vdb_flush+0x14>
if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver);
5d7e: 69c3 ldr r3, [r0, #28]
5d80: 2b00 cmp r3, #0
5d82: d0f9 beq.n 5d78 <lv_refr_vdb_flush+0x38>
5d84: 4798 blx r3
5d86: e7f6 b.n 5d76 <lv_refr_vdb_flush+0x36>
else vdb->flushing_last = 0;
5d88: 2300 movs r3, #0
5d8a: 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);
5d8c: 68c3 ldr r3, [r0, #12]
5d8e: b11b cbz r3, 5d98 <lv_refr_vdb_flush+0x58>
5d90: 68a2 ldr r2, [r4, #8]
5d92: f104 0110 add.w r1, r4, #16
5d96: 4798 blx r3
if(vdb->buf1 && vdb->buf2) {
5d98: 6823 ldr r3, [r4, #0]
5d9a: b133 cbz r3, 5daa <lv_refr_vdb_flush+0x6a>
5d9c: 6862 ldr r2, [r4, #4]
5d9e: b122 cbz r2, 5daa <lv_refr_vdb_flush+0x6a>
if(vdb->buf_act == vdb->buf1)
5da0: 68a1 ldr r1, [r4, #8]
vdb->buf_act = vdb->buf2;
5da2: 428b cmp r3, r1
5da4: bf08 it eq
5da6: 4613 moveq r3, r2
5da8: 60a3 str r3, [r4, #8]
5daa: bd38 pop {r3, r4, r5, pc}
5dac: 20002688 .word 0x20002688
5db0: 00010fdd .word 0x00010fdd
5db4: 00010fe1 .word 0x00010fe1
00005db8 <lv_refr_area_part>:
{
5db8: b570 push {r4, r5, r6, lr}
5dba: b082 sub sp, #8
5dbc: 4606 mov r6, r0
lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr);
5dbe: 4d1a ldr r5, [pc, #104] ; (5e28 <lv_refr_area_part+0x70>)
5dc0: 6828 ldr r0, [r5, #0]
5dc2: 4b1a ldr r3, [pc, #104] ; (5e2c <lv_refr_area_part+0x74>)
5dc4: 4798 blx r3
5dc6: 4604 mov r4, r0
if(lv_disp_is_double_buf(disp_refr) == false) {
5dc8: 6828 ldr r0, [r5, #0]
5dca: 4b19 ldr r3, [pc, #100] ; (5e30 <lv_refr_area_part+0x78>)
5dcc: 4798 blx r3
5dce: b938 cbnz r0, 5de0 <lv_refr_area_part+0x28>
if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver);
5dd0: 6828 ldr r0, [r5, #0]
while(vdb->flushing) {
5dd2: 69a3 ldr r3, [r4, #24]
5dd4: b123 cbz r3, 5de0 <lv_refr_area_part+0x28>
if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver);
5dd6: 69c3 ldr r3, [r0, #28]
5dd8: 2b00 cmp r3, #0
5dda: d0fa beq.n 5dd2 <lv_refr_area_part+0x1a>
5ddc: 4798 blx r3
5dde: e7f7 b.n 5dd0 <lv_refr_area_part+0x18>
_lv_area_intersect(&start_mask, area_p, &vdb->area);
5de0: f104 0210 add.w r2, r4, #16
5de4: 4631 mov r1, r6
5de6: 4668 mov r0, sp
5de8: 4b12 ldr r3, [pc, #72] ; (5e34 <lv_refr_area_part+0x7c>)
5dea: 4798 blx r3
top_p = lv_refr_get_top_obj(&start_mask, lv_disp_get_scr_act(disp_refr));
5dec: 4c0e ldr r4, [pc, #56] ; (5e28 <lv_refr_area_part+0x70>)
5dee: 6820 ldr r0, [r4, #0]
5df0: 4b11 ldr r3, [pc, #68] ; (5e38 <lv_refr_area_part+0x80>)
5df2: 4798 blx r3
5df4: 4601 mov r1, r0
5df6: 4668 mov r0, sp
5df8: 4b10 ldr r3, [pc, #64] ; (5e3c <lv_refr_area_part+0x84>)
5dfa: 4798 blx r3
lv_refr_obj_and_children(top_p, &start_mask);
5dfc: 4669 mov r1, sp
5dfe: 4d10 ldr r5, [pc, #64] ; (5e40 <lv_refr_area_part+0x88>)
5e00: 47a8 blx r5
lv_refr_obj_and_children(lv_disp_get_layer_top(disp_refr), &start_mask);
5e02: 6820 ldr r0, [r4, #0]
5e04: 4b0f ldr r3, [pc, #60] ; (5e44 <lv_refr_area_part+0x8c>)
5e06: 4798 blx r3
5e08: 4669 mov r1, sp
5e0a: 47a8 blx r5
lv_refr_obj_and_children(lv_disp_get_layer_sys(disp_refr), &start_mask);
5e0c: 6820 ldr r0, [r4, #0]
5e0e: 4b0e ldr r3, [pc, #56] ; (5e48 <lv_refr_area_part+0x90>)
5e10: 4798 blx r3
5e12: 4669 mov r1, sp
5e14: 47a8 blx r5
if(lv_disp_is_true_double_buf(disp_refr) == false) {
5e16: 6820 ldr r0, [r4, #0]
5e18: 4b0c ldr r3, [pc, #48] ; (5e4c <lv_refr_area_part+0x94>)
5e1a: 4798 blx r3
5e1c: b108 cbz r0, 5e22 <lv_refr_area_part+0x6a>
}
5e1e: b002 add sp, #8
5e20: bd70 pop {r4, r5, r6, pc}
lv_refr_vdb_flush();
5e22: 4b0b ldr r3, [pc, #44] ; (5e50 <lv_refr_area_part+0x98>)
5e24: 4798 blx r3
}
5e26: e7fa b.n 5e1e <lv_refr_area_part+0x66>
5e28: 20002688 .word 0x20002688
5e2c: 00010fdd .word 0x00010fdd
5e30: 00010fe1 .word 0x00010fe1
5e34: 00011519 .word 0x00011519
5e38: 0000234d .word 0x0000234d
5e3c: 00005b19 .word 0x00005b19
5e40: 00005cb5 .word 0x00005cb5
5e44: 0000238d .word 0x0000238d
5e48: 000023cd .word 0x000023cd
5e4c: 00010ff5 .word 0x00010ff5
5e50: 00005d41 .word 0x00005d41
00005e54 <_lv_refr_init>:
{
5e54: 4770 bx lr
...
00005e58 <_lv_inv_area>:
{
5e58: b5f0 push {r4, r5, r6, r7, lr}
5e5a: b085 sub sp, #20
5e5c: 460c mov r4, r1
if(!disp) disp = lv_disp_get_default();
5e5e: 4605 mov r5, r0
5e60: 2800 cmp r0, #0
5e62: d054 beq.n 5f0e <_lv_inv_area+0xb6>
if(area_p == NULL) {
5e64: 2c00 cmp r4, #0
5e66: d057 beq.n 5f18 <_lv_inv_area+0xc0>
scr_area.x1 = 0;
5e68: 2300 movs r3, #0
5e6a: f8ad 3008 strh.w r3, [sp, #8]
scr_area.y1 = 0;
5e6e: f8ad 300a strh.w r3, [sp, #10]
scr_area.x2 = lv_disp_get_hor_res(disp) - 1;
5e72: 4628 mov r0, r5
5e74: 4b36 ldr r3, [pc, #216] ; (5f50 <_lv_inv_area+0xf8>)
5e76: 4798 blx r3
5e78: 3801 subs r0, #1
5e7a: f8ad 000c strh.w r0, [sp, #12]
scr_area.y2 = lv_disp_get_ver_res(disp) - 1;
5e7e: 4628 mov r0, r5
5e80: 4b34 ldr r3, [pc, #208] ; (5f54 <_lv_inv_area+0xfc>)
5e82: 4798 blx r3
5e84: 3801 subs r0, #1
5e86: f8ad 000e strh.w r0, [sp, #14]
suc = _lv_area_intersect(&com_area, area_p, &scr_area);
5e8a: aa02 add r2, sp, #8
5e8c: 4621 mov r1, r4
5e8e: 4668 mov r0, sp
5e90: 4b31 ldr r3, [pc, #196] ; (5f58 <_lv_inv_area+0x100>)
5e92: 4798 blx r3
if(suc != false) {
5e94: 2800 cmp r0, #0
5e96: d045 beq.n 5f24 <_lv_inv_area+0xcc>
if(disp->driver.rounder_cb) disp->driver.rounder_cb(&disp->driver, &com_area);
5e98: 692b ldr r3, [r5, #16]
5e9a: b113 cbz r3, 5ea2 <_lv_inv_area+0x4a>
5e9c: 4669 mov r1, sp
5e9e: 4628 mov r0, r5
5ea0: 4798 blx r3
for(i = 0; i < disp->inv_p; i++) {
5ea2: f8b5 3168 ldrh.w r3, [r5, #360] ; 0x168
5ea6: f3c3 0309 ubfx r3, r3, #0, #10
5eaa: b19b cbz r3, 5ed4 <_lv_inv_area+0x7c>
5eac: 2100 movs r1, #0
5eae: 460c mov r4, r1
if(_lv_area_is_in(&com_area, &disp->inv_areas[i], 0) != false) return;
5eb0: 460f mov r7, r1
5eb2: 4e2a ldr r6, [pc, #168] ; (5f5c <_lv_inv_area+0x104>)
5eb4: 3109 adds r1, #9
5eb6: 463a mov r2, r7
5eb8: eb05 01c1 add.w r1, r5, r1, lsl #3
5ebc: 4668 mov r0, sp
5ebe: 47b0 blx r6
5ec0: bb80 cbnz r0, 5f24 <_lv_inv_area+0xcc>
for(i = 0; i < disp->inv_p; i++) {
5ec2: 3401 adds r4, #1
5ec4: b2a4 uxth r4, r4
5ec6: 4621 mov r1, r4
5ec8: f8b5 3168 ldrh.w r3, [r5, #360] ; 0x168
5ecc: f3c3 0309 ubfx r3, r3, #0, #10
5ed0: 429c cmp r4, r3
5ed2: dbef blt.n 5eb4 <_lv_inv_area+0x5c>
if(disp->inv_p < LV_INV_BUF_SIZE) {
5ed4: 2b1f cmp r3, #31
5ed6: dc27 bgt.n 5f28 <_lv_inv_area+0xd0>
lv_area_copy(&disp->inv_areas[disp->inv_p], &com_area);
5ed8: 3309 adds r3, #9
5eda: eb05 03c3 add.w r3, r5, r3, lsl #3
5ede: f10d 32ff add.w r2, sp, #4294967295
5ee2: f103 0008 add.w r0, r3, #8
*d8 = *s8;
5ee6: f812 1f01 ldrb.w r1, [r2, #1]!
5eea: f803 1b01 strb.w r1, [r3], #1
while(len) {
5eee: 4283 cmp r3, r0
5ef0: d1f9 bne.n 5ee6 <_lv_inv_area+0x8e>
disp->inv_p++;
5ef2: f8b5 3168 ldrh.w r3, [r5, #360] ; 0x168
5ef6: f3c3 0209 ubfx r2, r3, #0, #10
5efa: 3201 adds r2, #1
5efc: f362 0309 bfi r3, r2, #0, #10
5f00: f8a5 3168 strh.w r3, [r5, #360] ; 0x168
lv_task_set_prio(disp->refr_task, LV_REFR_TASK_PRIO);
5f04: 2103 movs r1, #3
5f06: 6ae8 ldr r0, [r5, #44] ; 0x2c
5f08: 4b15 ldr r3, [pc, #84] ; (5f60 <_lv_inv_area+0x108>)
5f0a: 4798 blx r3
5f0c: e00a b.n 5f24 <_lv_inv_area+0xcc>
if(!disp) disp = lv_disp_get_default();
5f0e: 4b15 ldr r3, [pc, #84] ; (5f64 <_lv_inv_area+0x10c>)
5f10: 4798 blx r3
if(!disp) return;
5f12: 4605 mov r5, r0
5f14: b130 cbz r0, 5f24 <_lv_inv_area+0xcc>
5f16: e7a5 b.n 5e64 <_lv_inv_area+0xc>
disp->inv_p = 0;
5f18: f8b5 3168 ldrh.w r3, [r5, #360] ; 0x168
5f1c: f36f 0309 bfc r3, #0, #10
5f20: f8a5 3168 strh.w r3, [r5, #360] ; 0x168
}
5f24: b005 add sp, #20
5f26: bdf0 pop {r4, r5, r6, r7, pc}
disp->inv_p = 0;
5f28: f8b5 3168 ldrh.w r3, [r5, #360] ; 0x168
5f2c: f36f 0309 bfc r3, #0, #10
5f30: f8a5 3168 strh.w r3, [r5, #360] ; 0x168
5f34: f10d 0207 add.w r2, sp, #7
5f38: f105 0050 add.w r0, r5, #80 ; 0x50
uint8_t * d8 = (uint8_t *)dst;
5f3c: f105 0348 add.w r3, r5, #72 ; 0x48
*d8 = *s8;
5f40: f812 1f01 ldrb.w r1, [r2, #1]!
5f44: f803 1b01 strb.w r1, [r3], #1
while(len) {
5f48: 4283 cmp r3, r0
5f4a: d1f9 bne.n 5f40 <_lv_inv_area+0xe8>
5f4c: e7d1 b.n 5ef2 <_lv_inv_area+0x9a>
5f4e: bf00 nop
5f50: 00010eed .word 0x00010eed
5f54: 00010f15 .word 0x00010f15
5f58: 00011519 .word 0x00011519
5f5c: 0001176d .word 0x0001176d
5f60: 00013959 .word 0x00013959
5f64: 00010ee1 .word 0x00010ee1
00005f68 <_lv_refr_get_disp_refreshing>:
}
5f68: 4b01 ldr r3, [pc, #4] ; (5f70 <_lv_refr_get_disp_refreshing+0x8>)
5f6a: 6818 ldr r0, [r3, #0]
5f6c: 4770 bx lr
5f6e: bf00 nop
5f70: 20002688 .word 0x20002688
00005f74 <_lv_disp_refr_task>:
{
5f74: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
5f78: b08d sub sp, #52 ; 0x34
5f7a: 4605 mov r5, r0
uint32_t start = lv_tick_get();
5f7c: 4bb7 ldr r3, [pc, #732] ; (625c <_lv_disp_refr_task+0x2e8>)
5f7e: 4798 blx r3
5f80: 9009 str r0, [sp, #36] ; 0x24
disp_refr = task->user_data;
5f82: 4cb7 ldr r4, [pc, #732] ; (6260 <_lv_disp_refr_task+0x2ec>)
5f84: 68eb ldr r3, [r5, #12]
5f86: 6023 str r3, [r4, #0]
lv_task_set_prio(task, LV_TASK_PRIO_OFF);
5f88: 2100 movs r1, #0
5f8a: 4628 mov r0, r5
5f8c: 4bb5 ldr r3, [pc, #724] ; (6264 <_lv_disp_refr_task+0x2f0>)
5f8e: 4798 blx r3
if(disp_refr->act_scr == NULL) {
5f90: 6820 ldr r0, [r4, #0]
5f92: 6bc3 ldr r3, [r0, #60] ; 0x3c
5f94: b17b cbz r3, 5fb6 <_lv_disp_refr_task+0x42>
for(join_in = 0; join_in < disp_refr->inv_p; join_in++) {
5f96: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168
5f9a: f3c3 0309 ubfx r3, r3, #0, #10
5f9e: 2b00 cmp r3, #0
5fa0: f000 8278 beq.w 6494 <_lv_disp_refr_task+0x520>
5fa4: f04f 0848 mov.w r8, #72 ; 0x48
5fa8: 2700 movs r7, #0
for(join_from = 0; join_from < disp_refr->inv_p; join_from++) {
5faa: 4dad ldr r5, [pc, #692] ; (6260 <_lv_disp_refr_task+0x2ec>)
if(_lv_area_is_on(&disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]) == false) {
5fac: f8df a2e4 ldr.w sl, [pc, #740] ; 6294 <_lv_disp_refr_task+0x320>
if(lv_area_get_size(&joined_area) < (lv_area_get_size(&disp_refr->inv_areas[join_in]) +
5fb0: f8df b2c8 ldr.w fp, [pc, #712] ; 627c <_lv_disp_refr_task+0x308>
5fb4: e04d b.n 6052 <_lv_disp_refr_task+0xde>
disp_refr->inv_p = 0;
5fb6: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168
5fba: f36f 0309 bfc r3, #0, #10
5fbe: f8a0 3168 strh.w r3, [r0, #360] ; 0x168
return;
5fc2: e262 b.n 648a <_lv_disp_refr_task+0x516>
disp_refr->inv_area_joined[join_from] = 1;
5fc4: 4426 add r6, r4
5fc6: 2301 movs r3, #1
5fc8: f886 3148 strb.w r3, [r6, #328] ; 0x148
for(join_from = 0; join_from < disp_refr->inv_p; join_from++) {
5fcc: 3401 adds r4, #1
5fce: 6828 ldr r0, [r5, #0]
5fd0: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168
5fd4: f3c3 0309 ubfx r3, r3, #0, #10
5fd8: 429c cmp r4, r3
5fda: d230 bcs.n 603e <_lv_disp_refr_task+0xca>
if(disp_refr->inv_area_joined[join_from] != 0 || join_in == join_from) {
5fdc: 1903 adds r3, r0, r4
5fde: f893 3148 ldrb.w r3, [r3, #328] ; 0x148
5fe2: 2b00 cmp r3, #0
5fe4: d1f2 bne.n 5fcc <_lv_disp_refr_task+0x58>
5fe6: 42a7 cmp r7, r4
5fe8: d0f0 beq.n 5fcc <_lv_disp_refr_task+0x58>
5fea: f104 0609 add.w r6, r4, #9
5fee: 00f6 lsls r6, r6, #3
if(_lv_area_is_on(&disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]) == false) {
5ff0: 1981 adds r1, r0, r6
5ff2: 4440 add r0, r8
5ff4: 47d0 blx sl
5ff6: 2800 cmp r0, #0
5ff8: d0e8 beq.n 5fcc <_lv_disp_refr_task+0x58>
_lv_area_join(&joined_area, &disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]);
5ffa: 6829 ldr r1, [r5, #0]
5ffc: 198a adds r2, r1, r6
5ffe: 4441 add r1, r8
6000: a80a add r0, sp, #40 ; 0x28
6002: 4b99 ldr r3, [pc, #612] ; (6268 <_lv_disp_refr_task+0x2f4>)
6004: 4798 blx r3
if(lv_area_get_size(&joined_area) < (lv_area_get_size(&disp_refr->inv_areas[join_in]) +
6006: a80a add r0, sp, #40 ; 0x28
6008: 47d8 blx fp
600a: 9003 str r0, [sp, #12]
600c: 6828 ldr r0, [r5, #0]
600e: 4440 add r0, r8
6010: 47d8 blx fp
6012: 4681 mov r9, r0
lv_area_get_size(&disp_refr->inv_areas[join_from]))) {
6014: 6828 ldr r0, [r5, #0]
6016: 4430 add r0, r6
6018: 47d8 blx fp
if(lv_area_get_size(&joined_area) < (lv_area_get_size(&disp_refr->inv_areas[join_in]) +
601a: 4448 add r0, r9
601c: 9b03 ldr r3, [sp, #12]
601e: 4283 cmp r3, r0
6020: d2d4 bcs.n 5fcc <_lv_disp_refr_task+0x58>
lv_area_copy(&disp_refr->inv_areas[join_in], &joined_area);
6022: 682e ldr r6, [r5, #0]
6024: eb06 0308 add.w r3, r6, r8
6028: f10d 0227 add.w r2, sp, #39 ; 0x27
602c: f103 0008 add.w r0, r3, #8
*d8 = *s8;
6030: f812 1f01 ldrb.w r1, [r2, #1]!
6034: f803 1b01 strb.w r1, [r3], #1
while(len) {
6038: 4283 cmp r3, r0
603a: d1f9 bne.n 6030 <_lv_disp_refr_task+0xbc>
603c: e7c2 b.n 5fc4 <_lv_disp_refr_task+0x50>
for(join_in = 0; join_in < disp_refr->inv_p; join_in++) {
603e: 3701 adds r7, #1
6040: 6828 ldr r0, [r5, #0]
6042: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168
6046: f3c3 0309 ubfx r3, r3, #0, #10
604a: f108 0808 add.w r8, r8, #8
604e: 429f cmp r7, r3
6050: d20e bcs.n 6070 <_lv_disp_refr_task+0xfc>
if(disp_refr->inv_area_joined[join_in] != 0) continue;
6052: 4438 add r0, r7
6054: f890 3148 ldrb.w r3, [r0, #328] ; 0x148
6058: 2b00 cmp r3, #0
605a: d1f0 bne.n 603e <_lv_disp_refr_task+0xca>
for(join_from = 0; join_from < disp_refr->inv_p; join_from++) {
605c: 6828 ldr r0, [r5, #0]
605e: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168
6062: f3c3 0309 ubfx r3, r3, #0, #10
6066: 2b00 cmp r3, #0
6068: f000 81fa beq.w 6460 <_lv_disp_refr_task+0x4ec>
606c: 2400 movs r4, #0
606e: e7b5 b.n 5fdc <_lv_disp_refr_task+0x68>
px_num = 0;
6070: 2100 movs r1, #0
6072: 4a7b ldr r2, [pc, #492] ; (6260 <_lv_disp_refr_task+0x2ec>)
6074: 6051 str r1, [r2, #4]
if(disp_refr->inv_p == 0) return;
6076: 2b00 cmp r3, #0
6078: f000 81fa beq.w 6470 <_lv_disp_refr_task+0x4fc>
for(i = disp_refr->inv_p - 1; i >= 0; i--) {
607c: 1e5a subs r2, r3, #1
607e: 4611 mov r1, r2
6080: 9207 str r2, [sp, #28]
6082: d432 bmi.n 60ea <_lv_disp_refr_task+0x176>
if(disp_refr->inv_area_joined[i] == 0) {
6084: 1882 adds r2, r0, r2
6086: f892 2148 ldrb.w r2, [r2, #328] ; 0x148
608a: b17a cbz r2, 60ac <_lv_disp_refr_task+0x138>
608c: f203 1347 addw r3, r3, #327 ; 0x147
6090: 4403 add r3, r0
6092: 460a mov r2, r1
for(i = disp_refr->inv_p - 1; i >= 0; i--) {
6094: 3a01 subs r2, #1
6096: f1b2 3fff cmp.w r2, #4294967295
609a: d005 beq.n 60a8 <_lv_disp_refr_task+0x134>
if(disp_refr->inv_area_joined[i] == 0) {
609c: f813 1d01 ldrb.w r1, [r3, #-1]!
60a0: 2900 cmp r1, #0
60a2: d1f7 bne.n 6094 <_lv_disp_refr_task+0x120>
60a4: 9207 str r2, [sp, #28]
60a6: e001 b.n 60ac <_lv_disp_refr_task+0x138>
int32_t last_i = 0;
60a8: 2300 movs r3, #0
60aa: 9307 str r3, [sp, #28]
disp_refr->driver.buffer->last_area = 0;
60ac: 6842 ldr r2, [r0, #4]
60ae: f892 3020 ldrb.w r3, [r2, #32]
60b2: f36f 0300 bfc r3, #0, #1
60b6: f882 3020 strb.w r3, [r2, #32]
disp_refr->driver.buffer->last_part = 0;
60ba: 6842 ldr r2, [r0, #4]
60bc: f892 3020 ldrb.w r3, [r2, #32]
60c0: f36f 0341 bfc r3, #1, #1
60c4: f882 3020 strb.w r3, [r2, #32]
for(i = 0; i < disp_refr->inv_p; i++) {
60c8: 4b65 ldr r3, [pc, #404] ; (6260 <_lv_disp_refr_task+0x2ec>)
60ca: 681c ldr r4, [r3, #0]
60cc: f8b4 3168 ldrh.w r3, [r4, #360] ; 0x168
60d0: f3c3 0309 ubfx r3, r3, #0, #10
60d4: 2b00 cmp r3, #0
60d6: f000 81cb beq.w 6470 <_lv_disp_refr_task+0x4fc>
60da: 2348 movs r3, #72 ; 0x48
60dc: 9306 str r3, [sp, #24]
60de: f04f 0a00 mov.w sl, #0
if(disp_refr->driver.monitor_cb) px_num += lv_area_get_size(&disp_refr->inv_areas[i]);
60e2: f8df b17c ldr.w fp, [pc, #380] ; 6260 <_lv_disp_refr_task+0x2ec>
60e6: 4627 mov r7, r4
60e8: e045 b.n 6176 <_lv_disp_refr_task+0x202>
int32_t last_i = 0;
60ea: 2300 movs r3, #0
60ec: 9307 str r3, [sp, #28]
60ee: e7dd b.n 60ac <_lv_disp_refr_task+0x138>
if(i == last_i) disp_refr->driver.buffer->last_area = 1;
60f0: 687a ldr r2, [r7, #4]
60f2: f892 3020 ldrb.w r3, [r2, #32]
60f6: f043 0301 orr.w r3, r3, #1
60fa: f882 3020 strb.w r3, [r2, #32]
60fe: e043 b.n 6188 <_lv_disp_refr_task+0x214>
lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr);
6100: f8db 0000 ldr.w r0, [fp]
6104: 4b59 ldr r3, [pc, #356] ; (626c <_lv_disp_refr_task+0x2f8>)
6106: 4798 blx r3
6108: 4604 mov r4, r0
vdb->area.x1 = 0;
610a: 2500 movs r5, #0
610c: 8205 strh r5, [r0, #16]
vdb->area.x2 = lv_disp_get_hor_res(disp_refr) - 1;
610e: f8db 0000 ldr.w r0, [fp]
6112: 4b57 ldr r3, [pc, #348] ; (6270 <_lv_disp_refr_task+0x2fc>)
6114: 4798 blx r3
6116: 3801 subs r0, #1
6118: 82a0 strh r0, [r4, #20]
vdb->area.y1 = 0;
611a: 8265 strh r5, [r4, #18]
vdb->area.y2 = lv_disp_get_ver_res(disp_refr) - 1;
611c: f8db 0000 ldr.w r0, [fp]
6120: 4b54 ldr r3, [pc, #336] ; (6274 <_lv_disp_refr_task+0x300>)
6122: 4798 blx r3
6124: 3801 subs r0, #1
6126: 82e0 strh r0, [r4, #22]
disp_refr->driver.buffer->last_part = 1;
6128: f8db 3000 ldr.w r3, [fp]
612c: 685a ldr r2, [r3, #4]
612e: f892 3020 ldrb.w r3, [r2, #32]
6132: f043 0302 orr.w r3, r3, #2
6136: f882 3020 strb.w r3, [r2, #32]
lv_refr_area_part(area_p);
613a: 9803 ldr r0, [sp, #12]
613c: 4b4e ldr r3, [pc, #312] ; (6278 <_lv_disp_refr_task+0x304>)
613e: 4798 blx r3
if(disp_refr->driver.monitor_cb) px_num += lv_area_get_size(&disp_refr->inv_areas[i]);
6140: f8db 0000 ldr.w r0, [fp]
6144: 6983 ldr r3, [r0, #24]
6146: b143 cbz r3, 615a <_lv_disp_refr_task+0x1e6>
6148: 9b06 ldr r3, [sp, #24]
614a: 4418 add r0, r3
614c: 4b4b ldr r3, [pc, #300] ; (627c <_lv_disp_refr_task+0x308>)
614e: 4798 blx r3
6150: f8db 3004 ldr.w r3, [fp, #4]
6154: 4403 add r3, r0
6156: f8cb 3004 str.w r3, [fp, #4]
for(i = 0; i < disp_refr->inv_p; i++) {
615a: f10a 0a01 add.w sl, sl, #1
615e: f8db 7000 ldr.w r7, [fp]
6162: 9b06 ldr r3, [sp, #24]
6164: 3308 adds r3, #8
6166: 9306 str r3, [sp, #24]
6168: f8b7 3168 ldrh.w r3, [r7, #360] ; 0x168
616c: f3c3 0309 ubfx r3, r3, #0, #10
6170: 459a cmp sl, r3
6172: f280 817d bge.w 6470 <_lv_disp_refr_task+0x4fc>
if(disp_refr->inv_area_joined[i] == 0) {
6176: eb07 030a add.w r3, r7, sl
617a: f893 3148 ldrb.w r3, [r3, #328] ; 0x148
617e: 2b00 cmp r3, #0
6180: d1eb bne.n 615a <_lv_disp_refr_task+0x1e6>
if(i == last_i) disp_refr->driver.buffer->last_area = 1;
6182: 9b07 ldr r3, [sp, #28]
6184: 4553 cmp r3, sl
6186: d0b3 beq.n 60f0 <_lv_disp_refr_task+0x17c>
disp_refr->driver.buffer->last_part = 0;
6188: 687a ldr r2, [r7, #4]
618a: f892 3020 ldrb.w r3, [r2, #32]
618e: f36f 0341 bfc r3, #1, #1
6192: f882 3020 strb.w r3, [r2, #32]
lv_refr_area(&disp_refr->inv_areas[i]);
6196: 9b06 ldr r3, [sp, #24]
6198: 18fb adds r3, r7, r3
619a: 9303 str r3, [sp, #12]
if(lv_disp_is_true_double_buf(disp_refr)) {
619c: 4638 mov r0, r7
619e: 4b38 ldr r3, [pc, #224] ; (6280 <_lv_disp_refr_task+0x30c>)
61a0: 4798 blx r3
61a2: 2800 cmp r0, #0
61a4: d1ac bne.n 6100 <_lv_disp_refr_task+0x18c>
lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr);
61a6: f8db 0000 ldr.w r0, [fp]
61aa: 4b30 ldr r3, [pc, #192] ; (626c <_lv_disp_refr_task+0x2f8>)
61ac: 4798 blx r3
61ae: 4606 mov r6, r0
61b0: eb07 07ca add.w r7, r7, sl, lsl #3
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
61b4: f8b7 404c ldrh.w r4, [r7, #76] ; 0x4c
61b8: 3401 adds r4, #1
61ba: f8b7 3048 ldrh.w r3, [r7, #72] ; 0x48
61be: 1ae4 subs r4, r4, r3
61c0: b224 sxth r4, r4
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
61c2: f9b7 504e ldrsh.w r5, [r7, #78] ; 0x4e
61c6: f105 0801 add.w r8, r5, #1
61ca: f8b7 304a ldrh.w r3, [r7, #74] ; 0x4a
61ce: eba8 0803 sub.w r8, r8, r3
61d2: fa0f f888 sxth.w r8, r8
area_p->y2 >= lv_disp_get_ver_res(disp_refr) ? lv_disp_get_ver_res(disp_refr) - 1 : area_p->y2;
61d6: f8db 0000 ldr.w r0, [fp]
61da: 4b26 ldr r3, [pc, #152] ; (6274 <_lv_disp_refr_task+0x300>)
61dc: 4798 blx r3
lv_coord_t y2 =
61de: 4285 cmp r5, r0
61e0: da34 bge.n 624c <_lv_disp_refr_task+0x2d8>
61e2: f9b7 904e ldrsh.w r9, [r7, #78] ; 0x4e
int32_t max_row = (uint32_t)vdb->size / w;
61e6: 68f3 ldr r3, [r6, #12]
61e8: fbb3 f3f4 udiv r3, r3, r4
61ec: 4598 cmp r8, r3
61ee: bfa8 it ge
61f0: 4698 movge r8, r3
if(disp_refr->driver.rounder_cb) {
61f2: f8db 3000 ldr.w r3, [fp]
61f6: 691b ldr r3, [r3, #16]
61f8: 2b00 cmp r3, #0
61fa: d052 beq.n 62a2 <_lv_disp_refr_task+0x32e>
tmp.x1 = 0;
61fc: 2300 movs r3, #0
61fe: f8ad 3028 strh.w r3, [sp, #40] ; 0x28
tmp.x2 = 0;
6202: f8ad 302c strh.w r3, [sp, #44] ; 0x2c
tmp.y1 = 0;
6206: f8ad 302a strh.w r3, [sp, #42] ; 0x2a
lv_coord_t h_tmp = max_row;
620a: fa0f f588 sxth.w r5, r8
620e: 1e6c subs r4, r5, #1
6210: b224 sxth r4, r4
tmp.y2 = h_tmp - 1;
6212: f8ad 402e strh.w r4, [sp, #46] ; 0x2e
disp_refr->driver.rounder_cb(&disp_refr->driver, &tmp);
6216: f8db 0000 ldr.w r0, [fp]
621a: 6903 ldr r3, [r0, #16]
621c: a90a add r1, sp, #40 ; 0x28
621e: 4798 blx r3
6220: f9bd 102e ldrsh.w r1, [sp, #46] ; 0x2e
6224: 1c4b adds r3, r1, #1
6226: f8bd 202a ldrh.w r2, [sp, #42] ; 0x2a
622a: 1a9b subs r3, r3, r2
if(lv_area_get_height(&tmp) <= max_row) break;
622c: b21b sxth r3, r3
622e: 4598 cmp r8, r3
6230: da32 bge.n 6298 <_lv_disp_refr_task+0x324>
h_tmp--;
6232: 4625 mov r5, r4
} while(h_tmp > 0);
6234: 2c00 cmp r4, #0
6236: dcea bgt.n 620e <_lv_disp_refr_task+0x29a>
LV_LOG_WARN("Can't set VDB height using the round function. (Wrong round_cb or to "
6238: 4b12 ldr r3, [pc, #72] ; (6284 <_lv_disp_refr_task+0x310>)
623a: 9300 str r3, [sp, #0]
623c: 4b12 ldr r3, [pc, #72] ; (6288 <_lv_disp_refr_task+0x314>)
623e: f240 129f movw r2, #415 ; 0x19f
6242: 4912 ldr r1, [pc, #72] ; (628c <_lv_disp_refr_task+0x318>)
6244: 2002 movs r0, #2
6246: 4c12 ldr r4, [pc, #72] ; (6290 <_lv_disp_refr_task+0x31c>)
6248: 47a0 blx r4
624a: e779 b.n 6140 <_lv_disp_refr_task+0x1cc>
area_p->y2 >= lv_disp_get_ver_res(disp_refr) ? lv_disp_get_ver_res(disp_refr) - 1 : area_p->y2;
624c: f8db 0000 ldr.w r0, [fp]
6250: 4b08 ldr r3, [pc, #32] ; (6274 <_lv_disp_refr_task+0x300>)
6252: 4798 blx r3
6254: 3801 subs r0, #1
lv_coord_t y2 =
6256: fa0f f980 sxth.w r9, r0
625a: e7c4 b.n 61e6 <_lv_disp_refr_task+0x272>
625c: 00011059 .word 0x00011059
6260: 20002688 .word 0x20002688
6264: 00013959 .word 0x00013959
6268: 0001156f .word 0x0001156f
626c: 00010fdd .word 0x00010fdd
6270: 00010eed .word 0x00010eed
6274: 00010f15 .word 0x00010f15
6278: 00005db9 .word 0x00005db9
627c: 000114fd .word 0x000114fd
6280: 00010ff5 .word 0x00010ff5
6284: 00024a2c .word 0x00024a2c
6288: 000249f0 .word 0x000249f0
628c: 00024a00 .word 0x00024a00
6290: 0001225d .word 0x0001225d
6294: 00011729 .word 0x00011729
if(h_tmp <= 0) {
6298: 2d00 cmp r5, #0
max_row = tmp.y2 + 1;
629a: bfc8 it gt
629c: f101 0801 addgt.w r8, r1, #1
if(h_tmp <= 0) {
62a0: ddca ble.n 6238 <_lv_disp_refr_task+0x2c4>
for(row = area_p->y1; row + max_row - 1 <= y2; row += max_row) {
62a2: f9b7 404a ldrsh.w r4, [r7, #74] ; 0x4a
62a6: f8cd 9010 str.w r9, [sp, #16]
62aa: eb04 0308 add.w r3, r4, r8
62ae: 3b01 subs r3, #1
62b0: 454b cmp r3, r9
62b2: dc4b bgt.n 634c <_lv_disp_refr_task+0x3d8>
vdb->area.y2 = row + max_row - 1;
62b4: fa1f f388 uxth.w r3, r8
62b8: 9305 str r3, [sp, #20]
62ba: 3b01 subs r3, #1
62bc: f8cd a020 str.w sl, [sp, #32]
62c0: 469a mov sl, r3
62c2: e00d b.n 62e0 <_lv_disp_refr_task+0x36c>
if(y2 == row_last) disp_refr->driver.buffer->last_part = 1;
62c4: 45a9 cmp r9, r5
62c6: d01c beq.n 6302 <_lv_disp_refr_task+0x38e>
lv_refr_area_part(area_p);
62c8: 9803 ldr r0, [sp, #12]
62ca: 4b78 ldr r3, [pc, #480] ; (64ac <_lv_disp_refr_task+0x538>)
62cc: 4798 blx r3
62ce: 9b05 ldr r3, [sp, #20]
62d0: 441c add r4, r3
62d2: b224 sxth r4, r4
for(row = area_p->y1; row + max_row - 1 <= y2; row += max_row) {
62d4: eb04 0308 add.w r3, r4, r8
62d8: 3b01 subs r3, #1
62da: 9a04 ldr r2, [sp, #16]
62dc: 4293 cmp r3, r2
62de: dc1a bgt.n 6316 <_lv_disp_refr_task+0x3a2>
vdb->area.x1 = area_p->x1;
62e0: f9b7 3048 ldrsh.w r3, [r7, #72] ; 0x48
62e4: 8233 strh r3, [r6, #16]
vdb->area.x2 = area_p->x2;
62e6: f9b7 304c ldrsh.w r3, [r7, #76] ; 0x4c
62ea: 82b3 strh r3, [r6, #20]
vdb->area.y1 = row;
62ec: 8274 strh r4, [r6, #18]
62ee: b2a4 uxth r4, r4
62f0: eb04 050a add.w r5, r4, sl
62f4: b22d sxth r5, r5
vdb->area.y2 = row + max_row - 1;
62f6: 82f5 strh r5, [r6, #22]
if(vdb->area.y2 > y2) vdb->area.y2 = y2;
62f8: 45a9 cmp r9, r5
62fa: dae3 bge.n 62c4 <_lv_disp_refr_task+0x350>
62fc: f8a6 9016 strh.w r9, [r6, #22]
row_last = vdb->area.y2;
6300: 464d mov r5, r9
if(y2 == row_last) disp_refr->driver.buffer->last_part = 1;
6302: f8db 3000 ldr.w r3, [fp]
6306: 685a ldr r2, [r3, #4]
6308: f892 3020 ldrb.w r3, [r2, #32]
630c: f043 0302 orr.w r3, r3, #2
6310: f882 3020 strb.w r3, [r2, #32]
6314: e7d8 b.n 62c8 <_lv_disp_refr_task+0x354>
6316: f8dd a020 ldr.w sl, [sp, #32]
if(y2 != row_last) {
631a: 45a9 cmp r9, r5
631c: f43f af10 beq.w 6140 <_lv_disp_refr_task+0x1cc>
vdb->area.x1 = area_p->x1;
6320: f9b7 3048 ldrsh.w r3, [r7, #72] ; 0x48
6324: 8233 strh r3, [r6, #16]
vdb->area.x2 = area_p->x2;
6326: f9b7 304c ldrsh.w r3, [r7, #76] ; 0x4c
632a: 82b3 strh r3, [r6, #20]
vdb->area.y1 = row;
632c: 8274 strh r4, [r6, #18]
vdb->area.y2 = y2;
632e: f8a6 9016 strh.w r9, [r6, #22]
disp_refr->driver.buffer->last_part = 1;
6332: f8db 3000 ldr.w r3, [fp]
6336: 685a ldr r2, [r3, #4]
6338: f892 3020 ldrb.w r3, [r2, #32]
633c: f043 0302 orr.w r3, r3, #2
6340: f882 3020 strb.w r3, [r2, #32]
lv_refr_area_part(area_p);
6344: 9803 ldr r0, [sp, #12]
6346: 4b59 ldr r3, [pc, #356] ; (64ac <_lv_disp_refr_task+0x538>)
6348: 4798 blx r3
634a: e6f9 b.n 6140 <_lv_disp_refr_task+0x1cc>
lv_coord_t row_last = 0;
634c: 2500 movs r5, #0
634e: e7e4 b.n 631a <_lv_disp_refr_task+0x3a6>
if(lv_disp_is_true_double_buf(disp_refr) && disp_refr->driver.set_px_cb == NULL) {
6350: 4b57 ldr r3, [pc, #348] ; (64b0 <_lv_disp_refr_task+0x53c>)
6352: 4798 blx r3
6354: b118 cbz r0, 635e <_lv_disp_refr_task+0x3ea>
6356: 4b57 ldr r3, [pc, #348] ; (64b4 <_lv_disp_refr_task+0x540>)
6358: 6818 ldr r0, [r3, #0]
635a: 6943 ldr r3, [r0, #20]
635c: b1eb cbz r3, 639a <_lv_disp_refr_task+0x426>
_lv_memset_00(disp_refr->inv_areas, sizeof(disp_refr->inv_areas));
635e: 4c55 ldr r4, [pc, #340] ; (64b4 <_lv_disp_refr_task+0x540>)
6360: 6820 ldr r0, [r4, #0]
6362: f44f 7180 mov.w r1, #256 ; 0x100
6366: 3048 adds r0, #72 ; 0x48
6368: 4d53 ldr r5, [pc, #332] ; (64b8 <_lv_disp_refr_task+0x544>)
636a: 47a8 blx r5
_lv_memset_00(disp_refr->inv_area_joined, sizeof(disp_refr->inv_area_joined));
636c: 6820 ldr r0, [r4, #0]
636e: 2120 movs r1, #32
6370: f500 70a4 add.w r0, r0, #328 ; 0x148
6374: 47a8 blx r5
disp_refr->inv_p = 0;
6376: 6823 ldr r3, [r4, #0]
6378: f8b3 2168 ldrh.w r2, [r3, #360] ; 0x168
637c: f36f 0209 bfc r2, #0, #10
6380: f8a3 2168 strh.w r2, [r3, #360] ; 0x168
elaps = lv_tick_elaps(start);
6384: 9809 ldr r0, [sp, #36] ; 0x24
6386: 4b4d ldr r3, [pc, #308] ; (64bc <_lv_disp_refr_task+0x548>)
6388: 4798 blx r3
638a: 4601 mov r1, r0
if(disp_refr->driver.monitor_cb) {
638c: 6820 ldr r0, [r4, #0]
638e: 6983 ldr r3, [r0, #24]
6390: 2b00 cmp r3, #0
6392: d076 beq.n 6482 <_lv_disp_refr_task+0x50e>
disp_refr->driver.monitor_cb(&disp_refr->driver, elaps, px_num);
6394: 6862 ldr r2, [r4, #4]
6396: 4798 blx r3
6398: e073 b.n 6482 <_lv_disp_refr_task+0x50e>
lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr);
639a: 4b49 ldr r3, [pc, #292] ; (64c0 <_lv_disp_refr_task+0x54c>)
639c: 4798 blx r3
639e: 4604 mov r4, r0
lv_refr_vdb_flush();
63a0: 4b48 ldr r3, [pc, #288] ; (64c4 <_lv_disp_refr_task+0x550>)
63a2: 4798 blx r3
while(vdb->flushing)
63a4: 69a3 ldr r3, [r4, #24]
63a6: 2b00 cmp r3, #0
63a8: d1fc bne.n 63a4 <_lv_disp_refr_task+0x430>
uint8_t * buf_act = (uint8_t *)vdb->buf_act;
63aa: 68a3 ldr r3, [r4, #8]
63ac: 9303 str r3, [sp, #12]
uint8_t * buf_ina = (uint8_t *)vdb->buf_act == vdb->buf1 ? vdb->buf2 : vdb->buf1;
63ae: f8d4 a000 ldr.w sl, [r4]
63b2: 4553 cmp r3, sl
63b4: bf08 it eq
63b6: f8d4 a004 ldreq.w sl, [r4, #4]
lv_coord_t hres = lv_disp_get_hor_res(disp_refr);
63ba: 4c3e ldr r4, [pc, #248] ; (64b4 <_lv_disp_refr_task+0x540>)
63bc: 6820 ldr r0, [r4, #0]
63be: 4b42 ldr r3, [pc, #264] ; (64c8 <_lv_disp_refr_task+0x554>)
63c0: 4798 blx r3
63c2: 9004 str r0, [sp, #16]
for(a = 0; a < disp_refr->inv_p; a++) {
63c4: 6823 ldr r3, [r4, #0]
63c6: f8b3 2168 ldrh.w r2, [r3, #360] ; 0x168
63ca: f3c2 0209 ubfx r2, r2, #0, #10
63ce: 2a00 cmp r2, #0
63d0: d0c5 beq.n 635e <_lv_disp_refr_task+0x3ea>
start_offs += hres * sizeof(lv_color_t);
63d2: 0045 lsls r5, r0, #1
63d4: 2200 movs r2, #0
63d6: 4690 mov r8, r2
for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) {
63d8: 46a1 mov r9, r4
63da: e00c b.n 63f6 <_lv_disp_refr_task+0x482>
for(a = 0; a < disp_refr->inv_p; a++) {
63dc: f108 0801 add.w r8, r8, #1
63e0: fa1f f888 uxth.w r8, r8
63e4: 4642 mov r2, r8
63e6: f8d9 3000 ldr.w r3, [r9]
63ea: f8b3 1168 ldrh.w r1, [r3, #360] ; 0x168
63ee: f3c1 0109 ubfx r1, r1, #0, #10
63f2: 4588 cmp r8, r1
63f4: dab3 bge.n 635e <_lv_disp_refr_task+0x3ea>
if(disp_refr->inv_area_joined[a] == 0) {
63f6: 1899 adds r1, r3, r2
63f8: f891 1148 ldrb.w r1, [r1, #328] ; 0x148
63fc: 2900 cmp r1, #0
63fe: d1ed bne.n 63dc <_lv_disp_refr_task+0x468>
6400: eb03 03c2 add.w r3, r3, r2, lsl #3
(hres * disp_refr->inv_areas[a].y1 + disp_refr->inv_areas[a].x1) * sizeof(lv_color_t);
6404: f9b3 704a ldrsh.w r7, [r3, #74] ; 0x4a
6408: f9b3 1048 ldrsh.w r1, [r3, #72] ; 0x48
640c: 9804 ldr r0, [sp, #16]
640e: fb07 1600 mla r6, r7, r0, r1
uint32_t start_offs =
6412: 0076 lsls r6, r6, #1
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
6414: f8b3 304c ldrh.w r3, [r3, #76] ; 0x4c
6418: 3301 adds r3, #1
641a: 1a5b subs r3, r3, r1
uint32_t line_length = lv_area_get_width(&disp_refr->inv_areas[a]) * sizeof(lv_color_t);
641c: b21b sxth r3, r3
641e: 005b lsls r3, r3, #1
6420: 9305 str r3, [sp, #20]
for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) {
6422: f8d9 3000 ldr.w r3, [r9]
6426: eb03 03c2 add.w r3, r3, r2, lsl #3
642a: f9b3 304e ldrsh.w r3, [r3, #78] ; 0x4e
642e: 42bb cmp r3, r7
6430: dbd4 blt.n 63dc <_lv_disp_refr_task+0x468>
6432: 9b03 ldr r3, [sp, #12]
6434: eb03 0b06 add.w fp, r3, r6
6438: 4456 add r6, sl
643a: 3209 adds r2, #9
643c: 00d4 lsls r4, r2, #3
_lv_memcpy(buf_act + start_offs, buf_ina + start_offs, line_length);
643e: 9a05 ldr r2, [sp, #20]
6440: 4631 mov r1, r6
6442: 4658 mov r0, fp
6444: 4b21 ldr r3, [pc, #132] ; (64cc <_lv_disp_refr_task+0x558>)
6446: 4798 blx r3
6448: 3701 adds r7, #1
644a: b23f sxth r7, r7
644c: 44ab add fp, r5
644e: 442e add r6, r5
for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) {
6450: f8d9 3000 ldr.w r3, [r9]
6454: 4423 add r3, r4
6456: f9b3 3006 ldrsh.w r3, [r3, #6]
645a: 42bb cmp r3, r7
645c: daef bge.n 643e <_lv_disp_refr_task+0x4ca>
645e: e7bd b.n 63dc <_lv_disp_refr_task+0x468>
px_num = 0;
6460: 2200 movs r2, #0
6462: 4b14 ldr r3, [pc, #80] ; (64b4 <_lv_disp_refr_task+0x540>)
6464: 605a str r2, [r3, #4]
if(disp_refr->inv_p == 0) return;
6466: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168
646a: f3c3 0309 ubfx r3, r3, #0, #10
646e: b97b cbnz r3, 6490 <_lv_disp_refr_task+0x51c>
if(disp_refr->inv_p != 0) {
6470: 4b10 ldr r3, [pc, #64] ; (64b4 <_lv_disp_refr_task+0x540>)
6472: 6818 ldr r0, [r3, #0]
6474: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168
6478: f3c3 0309 ubfx r3, r3, #0, #10
647c: 2b00 cmp r3, #0
647e: f47f af67 bne.w 6350 <_lv_disp_refr_task+0x3dc>
_lv_mem_buf_free_all();
6482: 4b13 ldr r3, [pc, #76] ; (64d0 <_lv_disp_refr_task+0x55c>)
6484: 4798 blx r3
_lv_font_clean_up_fmt_txt();
6486: 4b13 ldr r3, [pc, #76] ; (64d4 <_lv_disp_refr_task+0x560>)
6488: 4798 blx r3
}
648a: b00d add sp, #52 ; 0x34
648c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
int32_t last_i = 0;
6490: 9207 str r2, [sp, #28]
6492: e60b b.n 60ac <_lv_disp_refr_task+0x138>
px_num = 0;
6494: 2200 movs r2, #0
6496: 4b07 ldr r3, [pc, #28] ; (64b4 <_lv_disp_refr_task+0x540>)
6498: 605a str r2, [r3, #4]
if(disp_refr->inv_p == 0) return;
649a: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168
649e: f3c3 0309 ubfx r3, r3, #0, #10
64a2: 2b00 cmp r3, #0
64a4: d0ed beq.n 6482 <_lv_disp_refr_task+0x50e>
int32_t last_i = 0;
64a6: 9207 str r2, [sp, #28]
64a8: e600 b.n 60ac <_lv_disp_refr_task+0x138>
64aa: bf00 nop
64ac: 00005db9 .word 0x00005db9
64b0: 00010ff5 .word 0x00010ff5
64b4: 20002688 .word 0x20002688
64b8: 00012b37 .word 0x00012b37
64bc: 00011071 .word 0x00011071
64c0: 00010fdd .word 0x00010fdd
64c4: 00005d41 .word 0x00005d41
64c8: 00010eed .word 0x00010eed
64cc: 00012655 .word 0x00012655
64d0: 000125f9 .word 0x000125f9
64d4: 00010cf5 .word 0x00010cf5
000064d8 <lv_style_init>:
/**
* Initialize a style
* @param style pointer to a style to initialize
*/
void lv_style_init(lv_style_t * style)
{
64d8: b508 push {r3, lr}
_lv_memset_00(style, sizeof(lv_style_t));
64da: 2104 movs r1, #4
64dc: 4b01 ldr r3, [pc, #4] ; (64e4 <lv_style_init+0xc>)
64de: 4798 blx r3
64e0: bd08 pop {r3, pc}
64e2: bf00 nop
64e4: 00012b37 .word 0x00012b37
000064e8 <lv_style_list_init>:
/**
* Initialize a style list
* @param list a style list to initialize
*/
void lv_style_list_init(lv_style_list_t * list)
{
64e8: b508 push {r3, lr}
_lv_memset_00(list, sizeof(lv_style_list_t));
64ea: 2108 movs r1, #8
64ec: 4b01 ldr r3, [pc, #4] ; (64f4 <lv_style_list_init+0xc>)
64ee: 4798 blx r3
64f0: bd08 pop {r3, pc}
64f2: bf00 nop
64f4: 00012b37 .word 0x00012b37
000064f8 <_lv_style_list_remove_style>:
* Remove a style from a style list
* @param style_list pointer to a style list
* @param style pointer to a style to remove
*/
void _lv_style_list_remove_style(lv_style_list_t * list, lv_style_t * style)
{
64f8: b570 push {r4, r5, r6, lr}
64fa: b082 sub sp, #8
LV_ASSERT_STYLE_LIST(list);
LV_ASSERT_STYLE(style);
if(list->style_cnt == 0) return;
64fc: 7906 ldrb r6, [r0, #4]
64fe: 2e00 cmp r6, #0
6500: d055 beq.n 65ae <_lv_style_list_remove_style+0xb6>
6502: 4604 mov r4, r0
/*Check if the style really exists here*/
uint8_t i;
bool found = false;
for(i = 0; i < list->style_cnt; i++) {
if(list->style_list[i] == style) {
6504: 6800 ldr r0, [r0, #0]
6506: 6803 ldr r3, [r0, #0]
6508: 4299 cmp r1, r3
650a: d00a beq.n 6522 <_lv_style_list_remove_style+0x2a>
650c: 4603 mov r3, r0
650e: 1e75 subs r5, r6, #1
6510: b2ed uxtb r5, r5
6512: eb00 0585 add.w r5, r0, r5, lsl #2
for(i = 0; i < list->style_cnt; i++) {
6516: 429d cmp r5, r3
6518: d049 beq.n 65ae <_lv_style_list_remove_style+0xb6>
if(list->style_list[i] == style) {
651a: f853 2f04 ldr.w r2, [r3, #4]!
651e: 428a cmp r2, r1
6520: d1f9 bne.n 6516 <_lv_style_list_remove_style+0x1e>
6522: 460d mov r5, r1
break;
}
}
if(found == false) return;
if(list->style_cnt == 1) {
6524: 2e01 cmp r6, #1
6526: d00e beq.n 6546 <_lv_style_list_remove_style+0x4e>
list->style_cnt = 0;
list->has_local = 0;
return;
}
lv_style_t ** new_classes = lv_mem_realloc(list->style_list, sizeof(lv_style_t *) * (list->style_cnt - 1));
6528: 1e71 subs r1, r6, #1
652a: 0089 lsls r1, r1, #2
652c: 4b21 ldr r3, [pc, #132] ; (65b4 <_lv_style_list_remove_style+0xbc>)
652e: 4798 blx r3
6530: 4606 mov r6, r0
LV_ASSERT_MEM(new_classes);
6532: 4b21 ldr r3, [pc, #132] ; (65b8 <_lv_style_list_remove_style+0xc0>)
6534: 4798 blx r3
6536: b180 cbz r0, 655a <_lv_style_list_remove_style+0x62>
if(new_classes == NULL) {
6538: b1ee cbz r6, 6576 <_lv_style_list_remove_style+0x7e>
LV_LOG_WARN("lv_style_list_remove_style: couldn't reallocate class list");
return;
}
uint8_t j;
for(i = 0, j = 0; i < list->style_cnt; i++) {
653a: 7921 ldrb r1, [r4, #4]
653c: 2900 cmp r1, #0
653e: d033 beq.n 65a8 <_lv_style_list_remove_style+0xb0>
6540: 2200 movs r2, #0
6542: 4613 mov r3, r2
6544: e026 b.n 6594 <_lv_style_list_remove_style+0x9c>
lv_mem_free(list->style_list);
6546: 4b1d ldr r3, [pc, #116] ; (65bc <_lv_style_list_remove_style+0xc4>)
6548: 4798 blx r3
list->style_list = NULL;
654a: 2300 movs r3, #0
654c: 6023 str r3, [r4, #0]
list->style_cnt = 0;
654e: 7123 strb r3, [r4, #4]
list->has_local = 0;
6550: 7962 ldrb r2, [r4, #5]
6552: f363 0200 bfi r2, r3, #0, #1
6556: 7162 strb r2, [r4, #5]
return;
6558: e029 b.n 65ae <_lv_style_list_remove_style+0xb6>
LV_ASSERT_MEM(new_classes);
655a: 4b19 ldr r3, [pc, #100] ; (65c0 <_lv_style_list_remove_style+0xc8>)
655c: 9300 str r3, [sp, #0]
655e: f44f 7282 mov.w r2, #260 ; 0x104
6562: 4918 ldr r1, [pc, #96] ; (65c4 <_lv_style_list_remove_style+0xcc>)
6564: 2003 movs r0, #3
6566: 4c18 ldr r4, [pc, #96] ; (65c8 <_lv_style_list_remove_style+0xd0>)
6568: 47a0 blx r4
656a: 4632 mov r2, r6
656c: 2300 movs r3, #0
656e: 4817 ldr r0, [pc, #92] ; (65cc <_lv_style_list_remove_style+0xd4>)
6570: 4917 ldr r1, [pc, #92] ; (65d0 <_lv_style_list_remove_style+0xd8>)
6572: 4788 blx r1
6574: e7fe b.n 6574 <_lv_style_list_remove_style+0x7c>
LV_LOG_WARN("lv_style_list_remove_style: couldn't reallocate class list");
6576: 4b17 ldr r3, [pc, #92] ; (65d4 <_lv_style_list_remove_style+0xdc>)
6578: 9300 str r3, [sp, #0]
657a: 4b11 ldr r3, [pc, #68] ; (65c0 <_lv_style_list_remove_style+0xc8>)
657c: f44f 7283 mov.w r2, #262 ; 0x106
6580: 4910 ldr r1, [pc, #64] ; (65c4 <_lv_style_list_remove_style+0xcc>)
6582: 2002 movs r0, #2
6584: 4c10 ldr r4, [pc, #64] ; (65c8 <_lv_style_list_remove_style+0xd0>)
6586: 47a0 blx r4
return;
6588: e011 b.n 65ae <_lv_style_list_remove_style+0xb6>
for(i = 0, j = 0; i < list->style_cnt; i++) {
658a: 3301 adds r3, #1
658c: b2db uxtb r3, r3
658e: 7921 ldrb r1, [r4, #4]
6590: 4299 cmp r1, r3
6592: d909 bls.n 65a8 <_lv_style_list_remove_style+0xb0>
if(list->style_list[i] == style) continue;
6594: 6821 ldr r1, [r4, #0]
6596: f851 1023 ldr.w r1, [r1, r3, lsl #2]
659a: 428d cmp r5, r1
659c: d0f5 beq.n 658a <_lv_style_list_remove_style+0x92>
new_classes[j] = list->style_list[i];
659e: f846 1022 str.w r1, [r6, r2, lsl #2]
j++;
65a2: 3201 adds r2, #1
65a4: b2d2 uxtb r2, r2
65a6: e7f0 b.n 658a <_lv_style_list_remove_style+0x92>
}
list->style_cnt--;
65a8: 3901 subs r1, #1
65aa: 7121 strb r1, [r4, #4]
list->style_list = new_classes;
65ac: 6026 str r6, [r4, #0]
}
65ae: b002 add sp, #8
65b0: bd70 pop {r4, r5, r6, pc}
65b2: bf00 nop
65b4: 00012899 .word 0x00012899
65b8: 000022b1 .word 0x000022b1
65bc: 000124c5 .word 0x000124c5
65c0: 00024a7c .word 0x00024a7c
65c4: 00024b3c .word 0x00024b3c
65c8: 0001225d .word 0x0001225d
65cc: 00023fd8 .word 0x00023fd8
65d0: 000022b9 .word 0x000022b9
65d4: 00024b68 .word 0x00024b68
000065d8 <_lv_style_list_add_style>:
if(list == NULL) return;
65d8: 2800 cmp r0, #0
65da: d051 beq.n 6680 <_lv_style_list_add_style+0xa8>
{
65dc: b570 push {r4, r5, r6, lr}
65de: b082 sub sp, #8
65e0: 4604 mov r4, r0
65e2: 460e mov r6, r1
_lv_style_list_remove_style(list, style);
65e4: 4b27 ldr r3, [pc, #156] ; (6684 <_lv_style_list_add_style+0xac>)
65e6: 4798 blx r3
if(list->style_cnt == 0) new_classes = lv_mem_alloc(sizeof(lv_style_t *));
65e8: 7923 ldrb r3, [r4, #4]
65ea: bb63 cbnz r3, 6646 <_lv_style_list_add_style+0x6e>
65ec: 2004 movs r0, #4
65ee: 4b26 ldr r3, [pc, #152] ; (6688 <_lv_style_list_add_style+0xb0>)
65f0: 4798 blx r3
65f2: 4605 mov r5, r0
LV_ASSERT_MEM(new_classes);
65f4: 4628 mov r0, r5
65f6: 4b25 ldr r3, [pc, #148] ; (668c <_lv_style_list_add_style+0xb4>)
65f8: 4798 blx r3
65fa: b358 cbz r0, 6654 <_lv_style_list_add_style+0x7c>
if(new_classes == NULL) {
65fc: 2d00 cmp r5, #0
65fe: d036 beq.n 666e <_lv_style_list_add_style+0x96>
if(list->has_trans) first_style++;
6600: 7963 ldrb r3, [r4, #5]
uint8_t first_style = 0;
6602: f3c3 0040 ubfx r0, r3, #1, #1
if(list->has_local) first_style++;
6606: f013 0f01 tst.w r3, #1
660a: bf18 it ne
660c: 3001 addne r0, #1
for(i = list->style_cnt; i > first_style; i--) {
660e: 7923 ldrb r3, [r4, #4]
6610: 4298 cmp r0, r3
6612: d210 bcs.n 6636 <_lv_style_list_add_style+0x5e>
6614: eb05 0183 add.w r1, r5, r3, lsl #2
6618: f103 4280 add.w r2, r3, #1073741824 ; 0x40000000
661c: 3a01 subs r2, #1
661e: 3b01 subs r3, #1
6620: 1a1b subs r3, r3, r0
6622: b2db uxtb r3, r3
6624: 1ad3 subs r3, r2, r3
6626: eb05 0383 add.w r3, r5, r3, lsl #2
new_classes[i] = new_classes[i - 1];
662a: f851 2c04 ldr.w r2, [r1, #-4]
662e: f841 2904 str.w r2, [r1], #-4
for(i = list->style_cnt; i > first_style; i--) {
6632: 4299 cmp r1, r3
6634: d1f9 bne.n 662a <_lv_style_list_add_style+0x52>
new_classes[first_style] = style;
6636: f845 6020 str.w r6, [r5, r0, lsl #2]
list->style_cnt++;
663a: 7923 ldrb r3, [r4, #4]
663c: 3301 adds r3, #1
663e: 7123 strb r3, [r4, #4]
list->style_list = new_classes;
6640: 6025 str r5, [r4, #0]
}
6642: b002 add sp, #8
6644: bd70 pop {r4, r5, r6, pc}
else new_classes = lv_mem_realloc(list->style_list, sizeof(lv_style_t *) * (list->style_cnt + 1));
6646: 3301 adds r3, #1
6648: 0099 lsls r1, r3, #2
664a: 6820 ldr r0, [r4, #0]
664c: 4b10 ldr r3, [pc, #64] ; (6690 <_lv_style_list_add_style+0xb8>)
664e: 4798 blx r3
6650: 4605 mov r5, r0
6652: e7cf b.n 65f4 <_lv_style_list_add_style+0x1c>
LV_ASSERT_MEM(new_classes);
6654: 4b0f ldr r3, [pc, #60] ; (6694 <_lv_style_list_add_style+0xbc>)
6656: 9300 str r3, [sp, #0]
6658: 22d0 movs r2, #208 ; 0xd0
665a: 490f ldr r1, [pc, #60] ; (6698 <_lv_style_list_add_style+0xc0>)
665c: 2003 movs r0, #3
665e: 4c0f ldr r4, [pc, #60] ; (669c <_lv_style_list_add_style+0xc4>)
6660: 47a0 blx r4
6662: 462a mov r2, r5
6664: 2300 movs r3, #0
6666: 480e ldr r0, [pc, #56] ; (66a0 <_lv_style_list_add_style+0xc8>)
6668: 490e ldr r1, [pc, #56] ; (66a4 <_lv_style_list_add_style+0xcc>)
666a: 4788 blx r1
666c: e7fe b.n 666c <_lv_style_list_add_style+0x94>
LV_LOG_WARN("lv_style_list_add_style: couldn't add the class");
666e: 4b0e ldr r3, [pc, #56] ; (66a8 <_lv_style_list_add_style+0xd0>)
6670: 9300 str r3, [sp, #0]
6672: 4b08 ldr r3, [pc, #32] ; (6694 <_lv_style_list_add_style+0xbc>)
6674: 22d2 movs r2, #210 ; 0xd2
6676: 4908 ldr r1, [pc, #32] ; (6698 <_lv_style_list_add_style+0xc0>)
6678: 2002 movs r0, #2
667a: 4c08 ldr r4, [pc, #32] ; (669c <_lv_style_list_add_style+0xc4>)
667c: 47a0 blx r4
return;
667e: e7e0 b.n 6642 <_lv_style_list_add_style+0x6a>
6680: 4770 bx lr
6682: bf00 nop
6684: 000064f9 .word 0x000064f9
6688: 000123dd .word 0x000123dd
668c: 000022b1 .word 0x000022b1
6690: 00012899 .word 0x00012899
6694: 00024a98 .word 0x00024a98
6698: 00024b3c .word 0x00024b3c
669c: 0001225d .word 0x0001225d
66a0: 00023fd8 .word 0x00023fd8
66a4: 000022b9 .word 0x000022b9
66a8: 00024ba4 .word 0x00024ba4
000066ac <get_alloc_local_style>:
* Get he local style from a style list. Allocate it if not exists yet.
* @param list pointer to a style list
* @return pointer to the local style
*/
static lv_style_t * get_alloc_local_style(lv_style_list_t * list)
{
66ac: b530 push {r4, r5, lr}
66ae: b083 sub sp, #12
LV_ASSERT_STYLE_LIST(list);
if(list->has_local) return lv_style_list_get_style(list, 0);
66b0: 7943 ldrb r3, [r0, #5]
66b2: f013 0f01 tst.w r3, #1
66b6: d010 beq.n 66da <get_alloc_local_style+0x2e>
if(list->has_trans && list->skip_trans) id++;
66b8: f003 0306 and.w r3, r3, #6
66bc: 2b06 cmp r3, #6
66be: bf14 ite ne
66c0: 2300 movne r3, #0
66c2: 2301 moveq r3, #1
if(list->style_cnt == 0 || id >= list->style_cnt) return NULL;
66c4: 7902 ldrb r2, [r0, #4]
66c6: 2a00 cmp r2, #0
66c8: d034 beq.n 6734 <get_alloc_local_style+0x88>
66ca: 429a cmp r2, r3
66cc: d934 bls.n 6738 <get_alloc_local_style+0x8c>
return list->style_list[id];
66ce: 6802 ldr r2, [r0, #0]
66d0: f852 4023 ldr.w r4, [r2, r3, lsl #2]
/*Add the local style to the furst place*/
_lv_style_list_add_style(list, local_style);
list->has_local = 1;
return local_style;
}
66d4: 4620 mov r0, r4
66d6: b003 add sp, #12
66d8: bd30 pop {r4, r5, pc}
66da: 4605 mov r5, r0
lv_style_t * local_style = lv_mem_alloc(sizeof(lv_style_t));
66dc: 2004 movs r0, #4
66de: 4b17 ldr r3, [pc, #92] ; (673c <get_alloc_local_style+0x90>)
66e0: 4798 blx r3
66e2: 4604 mov r4, r0
LV_ASSERT_MEM(local_style);
66e4: 4b16 ldr r3, [pc, #88] ; (6740 <get_alloc_local_style+0x94>)
66e6: 4798 blx r3
66e8: b160 cbz r0, 6704 <get_alloc_local_style+0x58>
if(local_style == NULL) {
66ea: b1cc cbz r4, 6720 <get_alloc_local_style+0x74>
lv_style_init(local_style);
66ec: 4620 mov r0, r4
66ee: 4b15 ldr r3, [pc, #84] ; (6744 <get_alloc_local_style+0x98>)
66f0: 4798 blx r3
_lv_style_list_add_style(list, local_style);
66f2: 4621 mov r1, r4
66f4: 4628 mov r0, r5
66f6: 4b14 ldr r3, [pc, #80] ; (6748 <get_alloc_local_style+0x9c>)
66f8: 4798 blx r3
list->has_local = 1;
66fa: 796b ldrb r3, [r5, #5]
66fc: f043 0301 orr.w r3, r3, #1
6700: 716b strb r3, [r5, #5]
return local_style;
6702: e7e7 b.n 66d4 <get_alloc_local_style+0x28>
LV_ASSERT_MEM(local_style);
6704: 4b11 ldr r3, [pc, #68] ; (674c <get_alloc_local_style+0xa0>)
6706: 9300 str r3, [sp, #0]
6708: f240 4235 movw r2, #1077 ; 0x435
670c: 4910 ldr r1, [pc, #64] ; (6750 <get_alloc_local_style+0xa4>)
670e: 2003 movs r0, #3
6710: 4d10 ldr r5, [pc, #64] ; (6754 <get_alloc_local_style+0xa8>)
6712: 47a8 blx r5
6714: 4622 mov r2, r4
6716: 2300 movs r3, #0
6718: 480f ldr r0, [pc, #60] ; (6758 <get_alloc_local_style+0xac>)
671a: 4910 ldr r1, [pc, #64] ; (675c <get_alloc_local_style+0xb0>)
671c: 4788 blx r1
671e: e7fe b.n 671e <get_alloc_local_style+0x72>
LV_LOG_WARN("get_local_style: couldn't create local style");
6720: 4b0f ldr r3, [pc, #60] ; (6760 <get_alloc_local_style+0xb4>)
6722: 9300 str r3, [sp, #0]
6724: 4b09 ldr r3, [pc, #36] ; (674c <get_alloc_local_style+0xa0>)
6726: f240 4237 movw r2, #1079 ; 0x437
672a: 4909 ldr r1, [pc, #36] ; (6750 <get_alloc_local_style+0xa4>)
672c: 2002 movs r0, #2
672e: 4d09 ldr r5, [pc, #36] ; (6754 <get_alloc_local_style+0xa8>)
6730: 47a8 blx r5
return NULL;
6732: e7cf b.n 66d4 <get_alloc_local_style+0x28>
if(list->style_cnt == 0 || id >= list->style_cnt) return NULL;
6734: 2400 movs r4, #0
6736: e7cd b.n 66d4 <get_alloc_local_style+0x28>
6738: 2400 movs r4, #0
673a: e7cb b.n 66d4 <get_alloc_local_style+0x28>
673c: 000123dd .word 0x000123dd
6740: 000022b1 .word 0x000022b1
6744: 000064d9 .word 0x000064d9
6748: 000065d9 .word 0x000065d9
674c: 00024ab4 .word 0x00024ab4
6750: 00024b3c .word 0x00024b3c
6754: 0001225d .word 0x0001225d
6758: 00023fd8 .word 0x00023fd8
675c: 000022b9 .word 0x000022b9
6760: 00024bd4 .word 0x00024bd4
00006764 <lv_style_reset>:
{
6764: b510 push {r4, lr}
6766: 4604 mov r4, r0
lv_mem_free(style->map);
6768: 6800 ldr r0, [r0, #0]
676a: 4b02 ldr r3, [pc, #8] ; (6774 <lv_style_reset+0x10>)
676c: 4798 blx r3
style->map = NULL;
676e: 2300 movs r3, #0
6770: 6023 str r3, [r4, #0]
6772: bd10 pop {r4, pc}
6774: 000124c5 .word 0x000124c5
00006778 <_lv_style_get_mem_size>:
if(style->map == NULL) return 0;
6778: 6802 ldr r2, [r0, #0]
677a: b1d2 cbz r2, 67b2 <_lv_style_get_mem_size+0x3a>
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
677c: 7813 ldrb r3, [r2, #0]
677e: 2bff cmp r3, #255 ; 0xff
6780: d013 beq.n 67aa <_lv_style_get_mem_size+0x32>
6782: 2000 movs r0, #0
6784: e006 b.n 6794 <_lv_style_get_mem_size+0x1c>
else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t);
6786: 2b0b cmp r3, #11
6788: dc0a bgt.n 67a0 <_lv_style_get_mem_size+0x28>
678a: 3002 adds r0, #2
i += sizeof(lv_style_property_t);
678c: 3002 adds r0, #2
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
678e: 5c13 ldrb r3, [r2, r0]
6790: 2bff cmp r3, #255 ; 0xff
6792: d00b beq.n 67ac <_lv_style_get_mem_size+0x34>
if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t);
6794: f003 030f and.w r3, r3, #15
6798: 2b08 cmp r3, #8
679a: dcf4 bgt.n 6786 <_lv_style_get_mem_size+0xe>
679c: 3002 adds r0, #2
679e: e7f5 b.n 678c <_lv_style_get_mem_size+0x14>
else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t);
67a0: 2b0d cmp r3, #13
67a2: bfd4 ite le
67a4: 3001 addle r0, #1
else i += sizeof(const void *);
67a6: 3004 addgt r0, #4
67a8: e7f0 b.n 678c <_lv_style_get_mem_size+0x14>
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
67aa: 2000 movs r0, #0
return i + sizeof(lv_style_property_t);
67ac: 3002 adds r0, #2
67ae: b280 uxth r0, r0
67b0: 4770 bx lr
if(style->map == NULL) return 0;
67b2: 2000 movs r0, #0
}
67b4: 4770 bx lr
...
000067b8 <lv_style_copy>:
if(style_src == NULL) return;
67b8: b181 cbz r1, 67dc <lv_style_copy+0x24>
{
67ba: b570 push {r4, r5, r6, lr}
67bc: 460c mov r4, r1
if(style_src->map == NULL) return;
67be: 680a ldr r2, [r1, #0]
67c0: b15a cbz r2, 67da <lv_style_copy+0x22>
67c2: 4605 mov r5, r0
uint16_t size = _lv_style_get_mem_size(style_src);
67c4: 4608 mov r0, r1
67c6: 4b06 ldr r3, [pc, #24] ; (67e0 <lv_style_copy+0x28>)
67c8: 4798 blx r3
67ca: 4606 mov r6, r0
style_dest->map = lv_mem_alloc(size);
67cc: 4b05 ldr r3, [pc, #20] ; (67e4 <lv_style_copy+0x2c>)
67ce: 4798 blx r3
67d0: 6028 str r0, [r5, #0]
_lv_memcpy(style_dest->map, style_src->map, size);
67d2: 4632 mov r2, r6
67d4: 6821 ldr r1, [r4, #0]
67d6: 4b04 ldr r3, [pc, #16] ; (67e8 <lv_style_copy+0x30>)
67d8: 4798 blx r3
67da: bd70 pop {r4, r5, r6, pc}
67dc: 4770 bx lr
67de: bf00 nop
67e0: 00006779 .word 0x00006779
67e4: 000123dd .word 0x000123dd
67e8: 00012655 .word 0x00012655
000067ec <lv_style_remove_prop>:
if(style == NULL) return false;
67ec: 2800 cmp r0, #0
67ee: d06b beq.n 68c8 <lv_style_remove_prop+0xdc>
{
67f0: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
67f4: 4607 mov r7, r0
if(style->map == NULL) return -1;
67f6: 6800 ldr r0, [r0, #0]
67f8: 2800 cmp r0, #0
67fa: d06a beq.n 68d2 <lv_style_remove_prop+0xe6>
uint8_t id_to_find = prop & 0xFF;
67fc: b2cd uxtb r5, r1
attr.full = (prop >> 8) & 0xFF;
67fe: 0a0e lsrs r6, r1, #8
6800: 46b4 mov ip, r6
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
6802: 7803 ldrb r3, [r0, #0]
6804: 2bff cmp r3, #255 ; 0xff
6806: d03b beq.n 6880 <lv_style_remove_prop+0x94>
6808: f04f 3eff mov.w lr, #4294967295
680c: 46f0 mov r8, lr
680e: 2200 movs r2, #0
else if((attr_i.bits.state & (~attr.bits.state)) == 0) {
6810: f3cc 0c06 ubfx ip, ip, #0, #7
6814: e027 b.n 6866 <lv_style_remove_prop+0x7a>
attr_i.full = style->map[i + 1];
6816: 1884 adds r4, r0, r2
6818: 7864 ldrb r4, [r4, #1]
if(attr_i.bits.state == attr.bits.state) {
681a: ea86 0904 eor.w r9, r6, r4
681e: f019 0f7f tst.w r9, #127 ; 0x7f
6822: d00b beq.n 683c <lv_style_remove_prop+0x50>
else if((attr_i.bits.state & (~attr.bits.state)) == 0) {
6824: f004 047f and.w r4, r4, #127 ; 0x7f
6828: ea34 090c bics.w r9, r4, ip
682c: d11d bne.n 686a <lv_style_remove_prop+0x7e>
if(attr_i.bits.state > weight) {
682e: 4544 cmp r4, r8
weight = attr_i.bits.state;
6830: bfc4 itt gt
6832: fa0f f884 sxthgt.w r8, r4
id_guess = i;
6836: fa0f fe82 sxthgt.w lr, r2
683a: e016 b.n 686a <lv_style_remove_prop+0x7e>
return i;
683c: 4696 mov lr, r2
if(id >= 0) {
683e: f1be 0f00 cmp.w lr, #0
6842: db43 blt.n 68cc <lv_style_remove_prop+0xe0>
attr_found.full = *(style->map + id + 1);
6844: 4674 mov r4, lr
6846: 4470 add r0, lr
if(attr_found.bits.state == attr_goal.bits.state) {
6848: 7843 ldrb r3, [r0, #1]
684a: 405e eors r6, r3
684c: f016 0f7f tst.w r6, #127 ; 0x7f
6850: d019 beq.n 6886 <lv_style_remove_prop+0x9a>
return false;
6852: 2000 movs r0, #0
6854: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t);
6858: 2b0b cmp r3, #11
685a: dc0c bgt.n 6876 <lv_style_remove_prop+0x8a>
685c: 3202 adds r2, #2
i += sizeof(lv_style_property_t);
685e: 3202 adds r2, #2
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
6860: 5c83 ldrb r3, [r0, r2]
6862: 2bff cmp r3, #255 ; 0xff
6864: d0eb beq.n 683e <lv_style_remove_prop+0x52>
if(style->map[i] == id_to_find) {
6866: 429d cmp r5, r3
6868: d0d5 beq.n 6816 <lv_style_remove_prop+0x2a>
if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t);
686a: f003 030f and.w r3, r3, #15
686e: 2b08 cmp r3, #8
6870: dcf2 bgt.n 6858 <lv_style_remove_prop+0x6c>
6872: 3202 adds r2, #2
6874: e7f3 b.n 685e <lv_style_remove_prop+0x72>
else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t);
6876: 2b0d cmp r3, #13
6878: bfd4 ite le
687a: 3201 addle r2, #1
else i += sizeof(const void *);
687c: 3204 addgt r2, #4
687e: e7ee b.n 685e <lv_style_remove_prop+0x72>
int16_t id_guess = -1;
6880: f04f 3eff mov.w lr, #4294967295
6884: e7db b.n 683e <lv_style_remove_prop+0x52>
6886: 460d mov r5, r1
uint32_t map_size = _lv_style_get_mem_size(style);
6888: 4638 mov r0, r7
688a: 4b13 ldr r3, [pc, #76] ; (68d8 <lv_style_remove_prop+0xec>)
688c: 4798 blx r3
if((prop & 0xF) < LV_STYLE_ID_COLOR) prop_size += sizeof(lv_style_int_t);
688e: f005 010f and.w r1, r5, #15
else if((prop & 0xF) < LV_STYLE_ID_OPA) prop_size += sizeof(lv_color_t);
6892: 290b cmp r1, #11
6894: dd04 ble.n 68a0 <lv_style_remove_prop+0xb4>
else prop_size += sizeof(const void *);
6896: 290e cmp r1, #14
6898: bfb4 ite lt
689a: 2103 movlt r1, #3
689c: 2106 movge r1, #6
689e: e000 b.n 68a2 <lv_style_remove_prop+0xb6>
else if((prop & 0xF) < LV_STYLE_ID_OPA) prop_size += sizeof(lv_color_t);
68a0: 2104 movs r1, #4
for(i = id; i < map_size - prop_size; i++) {
68a2: 460d mov r5, r1
68a4: 1a41 subs r1, r0, r1
68a6: 428c cmp r4, r1
68a8: d207 bcs.n 68ba <lv_style_remove_prop+0xce>
68aa: 4623 mov r3, r4
style->map[i] = style->map[i + prop_size];
68ac: 683a ldr r2, [r7, #0]
68ae: 1954 adds r4, r2, r5
68b0: 5ce4 ldrb r4, [r4, r3]
68b2: 54d4 strb r4, [r2, r3]
for(i = id; i < map_size - prop_size; i++) {
68b4: 3301 adds r3, #1
68b6: 428b cmp r3, r1
68b8: d1f8 bne.n 68ac <lv_style_remove_prop+0xc0>
style->map = lv_mem_realloc(style->map, map_size - prop_size);
68ba: 6838 ldr r0, [r7, #0]
68bc: 4b07 ldr r3, [pc, #28] ; (68dc <lv_style_remove_prop+0xf0>)
68be: 4798 blx r3
68c0: 6038 str r0, [r7, #0]
return true;
68c2: 2001 movs r0, #1
68c4: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
if(style == NULL) return false;
68c8: 2000 movs r0, #0
68ca: 4770 bx lr
return false;
68cc: 2000 movs r0, #0
68ce: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
68d2: 2000 movs r0, #0
}
68d4: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
68d8: 00006779 .word 0x00006779
68dc: 00012899 .word 0x00012899
000068e0 <_lv_style_set_int>:
{
68e0: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
68e4: b086 sub sp, #24
68e6: f8ad 100e strh.w r1, [sp, #14]
68ea: f8ad 200c strh.w r2, [sp, #12]
if(style->map == NULL) return -1;
68ee: 6804 ldr r4, [r0, #0]
68f0: 2c00 cmp r4, #0
68f2: d048 beq.n 6986 <_lv_style_set_int+0xa6>
uint8_t id_to_find = prop & 0xFF;
68f4: b2cf uxtb r7, r1
attr.full = (prop >> 8) & 0xFF;
68f6: 0a0d lsrs r5, r1, #8
68f8: 46ae mov lr, r5
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
68fa: 7823 ldrb r3, [r4, #0]
68fc: 2bff cmp r3, #255 ; 0xff
68fe: d02c beq.n 695a <_lv_style_set_int+0x7a>
6900: f04f 31ff mov.w r1, #4294967295
6904: 4688 mov r8, r1
6906: 2200 movs r2, #0
else if((attr_i.bits.state & (~attr.bits.state)) == 0) {
6908: f3ce 0e06 ubfx lr, lr, #0, #7
690c: e018 b.n 6940 <_lv_style_set_int+0x60>
attr_i.full = style->map[i + 1];
690e: 18a6 adds r6, r4, r2
6910: 7876 ldrb r6, [r6, #1]
if(attr_i.bits.state == attr.bits.state) {
6912: ea85 0c06 eor.w ip, r5, r6
6916: f01c 0f7f tst.w ip, #127 ; 0x7f
691a: d021 beq.n 6960 <_lv_style_set_int+0x80>
else if((attr_i.bits.state & (~attr.bits.state)) == 0) {
691c: f006 067f and.w r6, r6, #127 ; 0x7f
6920: ea36 0c0e bics.w ip, r6, lr
6924: d10e bne.n 6944 <_lv_style_set_int+0x64>
if(attr_i.bits.state > weight) {
6926: 4546 cmp r6, r8
weight = attr_i.bits.state;
6928: bfc4 itt gt
692a: fa0f f886 sxthgt.w r8, r6
id_guess = i;
692e: b211 sxthgt r1, r2
6930: e008 b.n 6944 <_lv_style_set_int+0x64>
else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t);
6932: 2b0b cmp r3, #11
6934: dc0c bgt.n 6950 <_lv_style_set_int+0x70>
6936: 3202 adds r2, #2
i += sizeof(lv_style_property_t);
6938: 3202 adds r2, #2
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
693a: 5ca3 ldrb r3, [r4, r2]
693c: 2bff cmp r3, #255 ; 0xff
693e: d00e beq.n 695e <_lv_style_set_int+0x7e>
if(style->map[i] == id_to_find) {
6940: 429f cmp r7, r3
6942: d0e4 beq.n 690e <_lv_style_set_int+0x2e>
if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t);
6944: f003 030f and.w r3, r3, #15
6948: 2b08 cmp r3, #8
694a: dcf2 bgt.n 6932 <_lv_style_set_int+0x52>
694c: 3202 adds r2, #2
694e: e7f3 b.n 6938 <_lv_style_set_int+0x58>
else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t);
6950: 2b0d cmp r3, #13
6952: bfd4 ite le
6954: 3201 addle r2, #1
else i += sizeof(const void *);
6956: 3204 addgt r2, #4
6958: e7ee b.n 6938 <_lv_style_set_int+0x58>
int16_t id_guess = -1;
695a: f04f 31ff mov.w r1, #4294967295
return id_guess;
695e: 460a mov r2, r1
if(id >= 0) {
6960: 2a00 cmp r2, #0
6962: db10 blt.n 6986 <_lv_style_set_int+0xa6>
attr_found.full = *(style->map + id + 1);
6964: 18a3 adds r3, r4, r2
if(attr_found.bits.state == attr_goal.bits.state) {
6966: 785b ldrb r3, [r3, #1]
6968: 405d eors r5, r3
696a: f015 0f7f tst.w r5, #127 ; 0x7f
696e: d10a bne.n 6986 <_lv_style_set_int+0xa6>
_lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &value, sizeof(lv_style_int_t));
6970: 3202 adds r2, #2
6972: 18a3 adds r3, r4, r2
*d8 = *s8;
6974: f89d 100c ldrb.w r1, [sp, #12]
6978: 54a1 strb r1, [r4, r2]
697a: f89d 200d ldrb.w r2, [sp, #13]
697e: 705a strb r2, [r3, #1]
}
6980: b006 add sp, #24
6982: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
6986: 4606 mov r6, r0
lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP;
6988: 23ff movs r3, #255 ; 0xff
698a: f8ad 3016 strh.w r3, [sp, #22]
uint16_t size = _lv_style_get_mem_size(style);
698e: 4b1d ldr r3, [pc, #116] ; (6a04 <_lv_style_set_int+0x124>)
6990: 4798 blx r3
if(size == 0) size += end_mark_size;
6992: 2800 cmp r0, #0
6994: bf08 it eq
6996: 2002 moveq r0, #2
size += sizeof(lv_style_property_t) + sizeof(lv_style_int_t);
6998: 1d05 adds r5, r0, #4
style->map = lv_mem_realloc(style->map, size);
699a: b2ad uxth r5, r5
699c: 4629 mov r1, r5
699e: 4620 mov r0, r4
69a0: 4b19 ldr r3, [pc, #100] ; (6a08 <_lv_style_set_int+0x128>)
69a2: 4798 blx r3
69a4: 6030 str r0, [r6, #0]
LV_ASSERT_MEM(style->map);
69a6: 4b19 ldr r3, [pc, #100] ; (6a0c <_lv_style_set_int+0x12c>)
69a8: 4798 blx r3
69aa: b1e8 cbz r0, 69e8 <_lv_style_set_int+0x108>
if(style == NULL) return;
69ac: 2e00 cmp r6, #0
69ae: d0e7 beq.n 6980 <_lv_style_set_int+0xa0>
_lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t));
69b0: 1fab subs r3, r5, #6
69b2: 6832 ldr r2, [r6, #0]
69b4: 18d1 adds r1, r2, r3
69b6: f89d 000e ldrb.w r0, [sp, #14]
69ba: 54d0 strb r0, [r2, r3]
69bc: f89d 300f ldrb.w r3, [sp, #15]
69c0: 704b strb r3, [r1, #1]
69c2: 1f2b subs r3, r5, #4
_lv_memcpy_small(style->map + size - sizeof(lv_style_int_t) - end_mark_size, &value, sizeof(lv_style_int_t));
69c4: 6832 ldr r2, [r6, #0]
69c6: 18d1 adds r1, r2, r3
69c8: f89d 000c ldrb.w r0, [sp, #12]
69cc: 54d0 strb r0, [r2, r3]
69ce: f89d 300d ldrb.w r3, [sp, #13]
69d2: 704b strb r3, [r1, #1]
69d4: 3d02 subs r5, #2
_lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark));
69d6: 6833 ldr r3, [r6, #0]
69d8: 195a adds r2, r3, r5
69da: f89d 1016 ldrb.w r1, [sp, #22]
69de: 5559 strb r1, [r3, r5]
69e0: f89d 3017 ldrb.w r3, [sp, #23]
69e4: 7053 strb r3, [r2, #1]
69e6: e7cb b.n 6980 <_lv_style_set_int+0xa0>
LV_ASSERT_MEM(style->map);
69e8: 4b09 ldr r3, [pc, #36] ; (6a10 <_lv_style_set_int+0x130>)
69ea: 9300 str r3, [sp, #0]
69ec: f44f 72c3 mov.w r2, #390 ; 0x186
69f0: 4908 ldr r1, [pc, #32] ; (6a14 <_lv_style_set_int+0x134>)
69f2: 2003 movs r0, #3
69f4: 4c08 ldr r4, [pc, #32] ; (6a18 <_lv_style_set_int+0x138>)
69f6: 47a0 blx r4
69f8: 6832 ldr r2, [r6, #0]
69fa: 2300 movs r3, #0
69fc: 4807 ldr r0, [pc, #28] ; (6a1c <_lv_style_set_int+0x13c>)
69fe: 4908 ldr r1, [pc, #32] ; (6a20 <_lv_style_set_int+0x140>)
6a00: 4788 blx r1
6a02: e7fe b.n 6a02 <_lv_style_set_int+0x122>
6a04: 00006779 .word 0x00006779
6a08: 00012899 .word 0x00012899
6a0c: 000022b1 .word 0x000022b1
6a10: 00024acc .word 0x00024acc
6a14: 00024b3c .word 0x00024b3c
6a18: 0001225d .word 0x0001225d
6a1c: 00023fd8 .word 0x00023fd8
6a20: 000022b9 .word 0x000022b9
00006a24 <_lv_style_set_color>:
{
6a24: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
6a28: b086 sub sp, #24
6a2a: f8ad 200c strh.w r2, [sp, #12]
6a2e: f8ad 100e strh.w r1, [sp, #14]
if(style->map == NULL) return -1;
6a32: 6804 ldr r4, [r0, #0]
6a34: 2c00 cmp r4, #0
6a36: d048 beq.n 6aca <_lv_style_set_color+0xa6>
uint8_t id_to_find = prop & 0xFF;
6a38: b2cf uxtb r7, r1
attr.full = (prop >> 8) & 0xFF;
6a3a: 0a0d lsrs r5, r1, #8
6a3c: 46ae mov lr, r5
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
6a3e: 7823 ldrb r3, [r4, #0]
6a40: 2bff cmp r3, #255 ; 0xff
6a42: d02c beq.n 6a9e <_lv_style_set_color+0x7a>
6a44: f04f 31ff mov.w r1, #4294967295
6a48: 4688 mov r8, r1
6a4a: 2200 movs r2, #0
else if((attr_i.bits.state & (~attr.bits.state)) == 0) {
6a4c: f3ce 0e06 ubfx lr, lr, #0, #7
6a50: e018 b.n 6a84 <_lv_style_set_color+0x60>
attr_i.full = style->map[i + 1];
6a52: 18a6 adds r6, r4, r2
6a54: 7876 ldrb r6, [r6, #1]
if(attr_i.bits.state == attr.bits.state) {
6a56: ea85 0c06 eor.w ip, r5, r6
6a5a: f01c 0f7f tst.w ip, #127 ; 0x7f
6a5e: d021 beq.n 6aa4 <_lv_style_set_color+0x80>
else if((attr_i.bits.state & (~attr.bits.state)) == 0) {
6a60: f006 067f and.w r6, r6, #127 ; 0x7f
6a64: ea36 0c0e bics.w ip, r6, lr
6a68: d10e bne.n 6a88 <_lv_style_set_color+0x64>
if(attr_i.bits.state > weight) {
6a6a: 4546 cmp r6, r8
weight = attr_i.bits.state;
6a6c: bfc4 itt gt
6a6e: fa0f f886 sxthgt.w r8, r6
id_guess = i;
6a72: b211 sxthgt r1, r2
6a74: e008 b.n 6a88 <_lv_style_set_color+0x64>
else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t);
6a76: 2b0b cmp r3, #11
6a78: dc0c bgt.n 6a94 <_lv_style_set_color+0x70>
6a7a: 3202 adds r2, #2
i += sizeof(lv_style_property_t);
6a7c: 3202 adds r2, #2
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
6a7e: 5ca3 ldrb r3, [r4, r2]
6a80: 2bff cmp r3, #255 ; 0xff
6a82: d00e beq.n 6aa2 <_lv_style_set_color+0x7e>
if(style->map[i] == id_to_find) {
6a84: 429f cmp r7, r3
6a86: d0e4 beq.n 6a52 <_lv_style_set_color+0x2e>
if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t);
6a88: f003 030f and.w r3, r3, #15
6a8c: 2b08 cmp r3, #8
6a8e: dcf2 bgt.n 6a76 <_lv_style_set_color+0x52>
6a90: 3202 adds r2, #2
6a92: e7f3 b.n 6a7c <_lv_style_set_color+0x58>
else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t);
6a94: 2b0d cmp r3, #13
6a96: bfd4 ite le
6a98: 3201 addle r2, #1
else i += sizeof(const void *);
6a9a: 3204 addgt r2, #4
6a9c: e7ee b.n 6a7c <_lv_style_set_color+0x58>
int16_t id_guess = -1;
6a9e: f04f 31ff mov.w r1, #4294967295
return id_guess;
6aa2: 460a mov r2, r1
if(id >= 0) {
6aa4: 2a00 cmp r2, #0
6aa6: db10 blt.n 6aca <_lv_style_set_color+0xa6>
attr_found.full = *(style->map + id + 1);
6aa8: 18a3 adds r3, r4, r2
if(attr_found.bits.state == attr_goal.bits.state) {
6aaa: 785b ldrb r3, [r3, #1]
6aac: 405d eors r5, r3
6aae: f015 0f7f tst.w r5, #127 ; 0x7f
6ab2: d10a bne.n 6aca <_lv_style_set_color+0xa6>
_lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &color, sizeof(lv_color_t));
6ab4: 3202 adds r2, #2
6ab6: 18a3 adds r3, r4, r2
6ab8: f89d 100c ldrb.w r1, [sp, #12]
6abc: 54a1 strb r1, [r4, r2]
6abe: f89d 200d ldrb.w r2, [sp, #13]
6ac2: 705a strb r2, [r3, #1]
}
6ac4: b006 add sp, #24
6ac6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
6aca: 4606 mov r6, r0
lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP;
6acc: 23ff movs r3, #255 ; 0xff
6ace: f8ad 3016 strh.w r3, [sp, #22]
uint16_t size = _lv_style_get_mem_size(style);
6ad2: 4b1d ldr r3, [pc, #116] ; (6b48 <_lv_style_set_color+0x124>)
6ad4: 4798 blx r3
if(size == 0) size += end_mark_size;
6ad6: 2800 cmp r0, #0
6ad8: bf08 it eq
6ada: 2002 moveq r0, #2
size += sizeof(lv_style_property_t) + sizeof(lv_color_t);
6adc: 1d05 adds r5, r0, #4
style->map = lv_mem_realloc(style->map, size);
6ade: b2ad uxth r5, r5
6ae0: 4629 mov r1, r5
6ae2: 4620 mov r0, r4
6ae4: 4b19 ldr r3, [pc, #100] ; (6b4c <_lv_style_set_color+0x128>)
6ae6: 4798 blx r3
6ae8: 6030 str r0, [r6, #0]
LV_ASSERT_MEM(style->map);
6aea: 4b19 ldr r3, [pc, #100] ; (6b50 <_lv_style_set_color+0x12c>)
6aec: 4798 blx r3
6aee: b1e8 cbz r0, 6b2c <_lv_style_set_color+0x108>
if(style == NULL) return;
6af0: 2e00 cmp r6, #0
6af2: d0e7 beq.n 6ac4 <_lv_style_set_color+0xa0>
_lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t));
6af4: 1fab subs r3, r5, #6
6af6: 6832 ldr r2, [r6, #0]
6af8: 18d1 adds r1, r2, r3
6afa: f89d 000e ldrb.w r0, [sp, #14]
6afe: 54d0 strb r0, [r2, r3]
6b00: f89d 300f ldrb.w r3, [sp, #15]
6b04: 704b strb r3, [r1, #1]
6b06: 1f2b subs r3, r5, #4
_lv_memcpy_small(style->map + size - sizeof(lv_color_t) - end_mark_size, &color, sizeof(lv_color_t));
6b08: 6832 ldr r2, [r6, #0]
6b0a: 18d1 adds r1, r2, r3
6b0c: f89d 000c ldrb.w r0, [sp, #12]
6b10: 54d0 strb r0, [r2, r3]
6b12: f89d 300d ldrb.w r3, [sp, #13]
6b16: 704b strb r3, [r1, #1]
6b18: 3d02 subs r5, #2
_lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark));
6b1a: 6833 ldr r3, [r6, #0]
6b1c: 195a adds r2, r3, r5
6b1e: f89d 1016 ldrb.w r1, [sp, #22]
6b22: 5559 strb r1, [r3, r5]
6b24: f89d 3017 ldrb.w r3, [sp, #23]
6b28: 7053 strb r3, [r2, #1]
6b2a: e7cb b.n 6ac4 <_lv_style_set_color+0xa0>
LV_ASSERT_MEM(style->map);
6b2c: 4b09 ldr r3, [pc, #36] ; (6b54 <_lv_style_set_color+0x130>)
6b2e: 9300 str r3, [sp, #0]
6b30: f240 12b5 movw r2, #437 ; 0x1b5
6b34: 4908 ldr r1, [pc, #32] ; (6b58 <_lv_style_set_color+0x134>)
6b36: 2003 movs r0, #3
6b38: 4c08 ldr r4, [pc, #32] ; (6b5c <_lv_style_set_color+0x138>)
6b3a: 47a0 blx r4
6b3c: 6832 ldr r2, [r6, #0]
6b3e: 2300 movs r3, #0
6b40: 4807 ldr r0, [pc, #28] ; (6b60 <_lv_style_set_color+0x13c>)
6b42: 4908 ldr r1, [pc, #32] ; (6b64 <_lv_style_set_color+0x140>)
6b44: 4788 blx r1
6b46: e7fe b.n 6b46 <_lv_style_set_color+0x122>
6b48: 00006779 .word 0x00006779
6b4c: 00012899 .word 0x00012899
6b50: 000022b1 .word 0x000022b1
6b54: 00024ae0 .word 0x00024ae0
6b58: 00024b3c .word 0x00024b3c
6b5c: 0001225d .word 0x0001225d
6b60: 00023fd8 .word 0x00023fd8
6b64: 000022b9 .word 0x000022b9
00006b68 <_lv_style_set_opa>:
{
6b68: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
6b6c: b087 sub sp, #28
6b6e: f8ad 100e strh.w r1, [sp, #14]
if(style->map == NULL) return -1;
6b72: 6804 ldr r4, [r0, #0]
6b74: 2c00 cmp r4, #0
6b76: d043 beq.n 6c00 <_lv_style_set_opa+0x98>
uint8_t id_to_find = prop & 0xFF;
6b78: fa5f fe81 uxtb.w lr, r1
attr.full = (prop >> 8) & 0xFF;
6b7c: 0a0d lsrs r5, r1, #8
6b7e: 46ac mov ip, r5
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
6b80: 7823 ldrb r3, [r4, #0]
6b82: 2bff cmp r3, #255 ; 0xff
6b84: d02c beq.n 6be0 <_lv_style_set_opa+0x78>
6b86: f04f 37ff mov.w r7, #4294967295
6b8a: 46b8 mov r8, r7
6b8c: 2100 movs r1, #0
else if((attr_i.bits.state & (~attr.bits.state)) == 0) {
6b8e: f3cc 0c06 ubfx ip, ip, #0, #7
6b92: e018 b.n 6bc6 <_lv_style_set_opa+0x5e>
attr_i.full = style->map[i + 1];
6b94: 1866 adds r6, r4, r1
6b96: 7876 ldrb r6, [r6, #1]
if(attr_i.bits.state == attr.bits.state) {
6b98: ea85 0906 eor.w r9, r5, r6
6b9c: f019 0f7f tst.w r9, #127 ; 0x7f
6ba0: d021 beq.n 6be6 <_lv_style_set_opa+0x7e>
else if((attr_i.bits.state & (~attr.bits.state)) == 0) {
6ba2: f006 067f and.w r6, r6, #127 ; 0x7f
6ba6: ea36 090c bics.w r9, r6, ip
6baa: d10e bne.n 6bca <_lv_style_set_opa+0x62>
if(attr_i.bits.state > weight) {
6bac: 4546 cmp r6, r8
weight = attr_i.bits.state;
6bae: bfc4 itt gt
6bb0: fa0f f886 sxthgt.w r8, r6
id_guess = i;
6bb4: b20f sxthgt r7, r1
6bb6: e008 b.n 6bca <_lv_style_set_opa+0x62>
else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t);
6bb8: 2b0b cmp r3, #11
6bba: dc0c bgt.n 6bd6 <_lv_style_set_opa+0x6e>
6bbc: 3102 adds r1, #2
i += sizeof(lv_style_property_t);
6bbe: 3102 adds r1, #2
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
6bc0: 5c63 ldrb r3, [r4, r1]
6bc2: 2bff cmp r3, #255 ; 0xff
6bc4: d00e beq.n 6be4 <_lv_style_set_opa+0x7c>
if(style->map[i] == id_to_find) {
6bc6: 459e cmp lr, r3
6bc8: d0e4 beq.n 6b94 <_lv_style_set_opa+0x2c>
if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t);
6bca: f003 030f and.w r3, r3, #15
6bce: 2b08 cmp r3, #8
6bd0: dcf2 bgt.n 6bb8 <_lv_style_set_opa+0x50>
6bd2: 3102 adds r1, #2
6bd4: e7f3 b.n 6bbe <_lv_style_set_opa+0x56>
else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t);
6bd6: 2b0d cmp r3, #13
6bd8: bfd4 ite le
6bda: 3101 addle r1, #1
else i += sizeof(const void *);
6bdc: 3104 addgt r1, #4
6bde: e7ee b.n 6bbe <_lv_style_set_opa+0x56>
int16_t id_guess = -1;
6be0: f04f 37ff mov.w r7, #4294967295
return id_guess;
6be4: 4639 mov r1, r7
if(id >= 0) {
6be6: 2900 cmp r1, #0
6be8: db0a blt.n 6c00 <_lv_style_set_opa+0x98>
attr_found.full = *(style->map + id + 1);
6bea: 1863 adds r3, r4, r1
if(attr_found.bits.state == attr_goal.bits.state) {
6bec: 785b ldrb r3, [r3, #1]
6bee: 405d eors r5, r3
6bf0: f015 0f7f tst.w r5, #127 ; 0x7f
6bf4: d104 bne.n 6c00 <_lv_style_set_opa+0x98>
6bf6: 4421 add r1, r4
6bf8: 708a strb r2, [r1, #2]
}
6bfa: b007 add sp, #28
6bfc: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
6c00: 4617 mov r7, r2
6c02: 4606 mov r6, r0
lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP;
6c04: 23ff movs r3, #255 ; 0xff
6c06: f8ad 3016 strh.w r3, [sp, #22]
uint16_t size = _lv_style_get_mem_size(style);
6c0a: 4b1b ldr r3, [pc, #108] ; (6c78 <_lv_style_set_opa+0x110>)
6c0c: 4798 blx r3
if(size == 0) size += end_mark_size;
6c0e: 2800 cmp r0, #0
6c10: bf08 it eq
6c12: 2002 moveq r0, #2
size += sizeof(lv_style_property_t) + sizeof(lv_opa_t);
6c14: 1cc5 adds r5, r0, #3
style->map = lv_mem_realloc(style->map, size);
6c16: b2ad uxth r5, r5
6c18: 4629 mov r1, r5
6c1a: 4620 mov r0, r4
6c1c: 4b17 ldr r3, [pc, #92] ; (6c7c <_lv_style_set_opa+0x114>)
6c1e: 4798 blx r3
6c20: 6030 str r0, [r6, #0]
LV_ASSERT_MEM(style->map);
6c22: 4b17 ldr r3, [pc, #92] ; (6c80 <_lv_style_set_opa+0x118>)
6c24: 4798 blx r3
6c26: b1c0 cbz r0, 6c5a <_lv_style_set_opa+0xf2>
if(style == NULL) return;
6c28: 2e00 cmp r6, #0
6c2a: d0e6 beq.n 6bfa <_lv_style_set_opa+0x92>
_lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t));
6c2c: 1f6b subs r3, r5, #5
6c2e: 6832 ldr r2, [r6, #0]
6c30: 18d1 adds r1, r2, r3
6c32: f89d 000e ldrb.w r0, [sp, #14]
6c36: 54d0 strb r0, [r2, r3]
6c38: f89d 300f ldrb.w r3, [sp, #15]
6c3c: 704b strb r3, [r1, #1]
6c3e: 6833 ldr r3, [r6, #0]
6c40: 442b add r3, r5
6c42: f803 7c03 strb.w r7, [r3, #-3]
_lv_memcpy_small(style->map + size - sizeof(lv_opa_t) - end_mark_size, &opa, sizeof(lv_opa_t));
6c46: 3d02 subs r5, #2
_lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark));
6c48: 6833 ldr r3, [r6, #0]
6c4a: 195a adds r2, r3, r5
6c4c: f89d 1016 ldrb.w r1, [sp, #22]
6c50: 5559 strb r1, [r3, r5]
6c52: f89d 3017 ldrb.w r3, [sp, #23]
6c56: 7053 strb r3, [r2, #1]
6c58: e7cf b.n 6bfa <_lv_style_set_opa+0x92>
LV_ASSERT_MEM(style->map);
6c5a: 4b0a ldr r3, [pc, #40] ; (6c84 <_lv_style_set_opa+0x11c>)
6c5c: 9300 str r3, [sp, #0]
6c5e: f44f 72f2 mov.w r2, #484 ; 0x1e4
6c62: 4909 ldr r1, [pc, #36] ; (6c88 <_lv_style_set_opa+0x120>)
6c64: 2003 movs r0, #3
6c66: 4c09 ldr r4, [pc, #36] ; (6c8c <_lv_style_set_opa+0x124>)
6c68: 47a0 blx r4
6c6a: 6832 ldr r2, [r6, #0]
6c6c: 2300 movs r3, #0
6c6e: 4808 ldr r0, [pc, #32] ; (6c90 <_lv_style_set_opa+0x128>)
6c70: 4908 ldr r1, [pc, #32] ; (6c94 <_lv_style_set_opa+0x12c>)
6c72: 4788 blx r1
6c74: e7fe b.n 6c74 <_lv_style_set_opa+0x10c>
6c76: bf00 nop
6c78: 00006779 .word 0x00006779
6c7c: 00012899 .word 0x00012899
6c80: 000022b1 .word 0x000022b1
6c84: 00024af4 .word 0x00024af4
6c88: 00024b3c .word 0x00024b3c
6c8c: 0001225d .word 0x0001225d
6c90: 00023fd8 .word 0x00023fd8
6c94: 000022b9 .word 0x000022b9
00006c98 <_lv_style_set_ptr>:
{
6c98: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
6c9c: b086 sub sp, #24
6c9e: 9202 str r2, [sp, #8]
6ca0: f8ad 100e strh.w r1, [sp, #14]
if(style->map == NULL) return -1;
6ca4: 6804 ldr r4, [r0, #0]
6ca6: 2c00 cmp r4, #0
6ca8: d04e beq.n 6d48 <_lv_style_set_ptr+0xb0>
uint8_t id_to_find = prop & 0xFF;
6caa: b2cf uxtb r7, r1
attr.full = (prop >> 8) & 0xFF;
6cac: 0a0d lsrs r5, r1, #8
6cae: 46ae mov lr, r5
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
6cb0: 7823 ldrb r3, [r4, #0]
6cb2: 2bff cmp r3, #255 ; 0xff
6cb4: d02c beq.n 6d10 <_lv_style_set_ptr+0x78>
6cb6: f04f 31ff mov.w r1, #4294967295
6cba: 4688 mov r8, r1
6cbc: 2200 movs r2, #0
else if((attr_i.bits.state & (~attr.bits.state)) == 0) {
6cbe: f3ce 0e06 ubfx lr, lr, #0, #7
6cc2: e018 b.n 6cf6 <_lv_style_set_ptr+0x5e>
attr_i.full = style->map[i + 1];
6cc4: 18a6 adds r6, r4, r2
6cc6: 7876 ldrb r6, [r6, #1]
if(attr_i.bits.state == attr.bits.state) {
6cc8: ea85 0c06 eor.w ip, r5, r6
6ccc: f01c 0f7f tst.w ip, #127 ; 0x7f
6cd0: d021 beq.n 6d16 <_lv_style_set_ptr+0x7e>
else if((attr_i.bits.state & (~attr.bits.state)) == 0) {
6cd2: f006 067f and.w r6, r6, #127 ; 0x7f
6cd6: ea36 0c0e bics.w ip, r6, lr
6cda: d10e bne.n 6cfa <_lv_style_set_ptr+0x62>
if(attr_i.bits.state > weight) {
6cdc: 4546 cmp r6, r8
weight = attr_i.bits.state;
6cde: bfc4 itt gt
6ce0: fa0f f886 sxthgt.w r8, r6
id_guess = i;
6ce4: b211 sxthgt r1, r2
6ce6: e008 b.n 6cfa <_lv_style_set_ptr+0x62>
else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t);
6ce8: 2b0b cmp r3, #11
6cea: dc0c bgt.n 6d06 <_lv_style_set_ptr+0x6e>
6cec: 3202 adds r2, #2
i += sizeof(lv_style_property_t);
6cee: 3202 adds r2, #2
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
6cf0: 5ca3 ldrb r3, [r4, r2]
6cf2: 2bff cmp r3, #255 ; 0xff
6cf4: d00e beq.n 6d14 <_lv_style_set_ptr+0x7c>
if(style->map[i] == id_to_find) {
6cf6: 429f cmp r7, r3
6cf8: d0e4 beq.n 6cc4 <_lv_style_set_ptr+0x2c>
if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t);
6cfa: f003 030f and.w r3, r3, #15
6cfe: 2b08 cmp r3, #8
6d00: dcf2 bgt.n 6ce8 <_lv_style_set_ptr+0x50>
6d02: 3202 adds r2, #2
6d04: e7f3 b.n 6cee <_lv_style_set_ptr+0x56>
else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t);
6d06: 2b0d cmp r3, #13
6d08: bfd4 ite le
6d0a: 3201 addle r2, #1
else i += sizeof(const void *);
6d0c: 3204 addgt r2, #4
6d0e: e7ee b.n 6cee <_lv_style_set_ptr+0x56>
int16_t id_guess = -1;
6d10: f04f 31ff mov.w r1, #4294967295
return id_guess;
6d14: 460a mov r2, r1
if(id >= 0) {
6d16: 2a00 cmp r2, #0
6d18: db16 blt.n 6d48 <_lv_style_set_ptr+0xb0>
attr_found.full = *(style->map + id + 1);
6d1a: 18a3 adds r3, r4, r2
if(attr_found.bits.state == attr_goal.bits.state) {
6d1c: 785b ldrb r3, [r3, #1]
6d1e: 405d eors r5, r3
6d20: f015 0f7f tst.w r5, #127 ; 0x7f
6d24: d110 bne.n 6d48 <_lv_style_set_ptr+0xb0>
_lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &p, sizeof(const void *));
6d26: 3202 adds r2, #2
6d28: 18a3 adds r3, r4, r2
6d2a: f89d 1008 ldrb.w r1, [sp, #8]
6d2e: 54a1 strb r1, [r4, r2]
6d30: f89d 2009 ldrb.w r2, [sp, #9]
6d34: 705a strb r2, [r3, #1]
6d36: f89d 200a ldrb.w r2, [sp, #10]
6d3a: 709a strb r2, [r3, #2]
6d3c: f89d 200b ldrb.w r2, [sp, #11]
6d40: 70da strb r2, [r3, #3]
}
6d42: b006 add sp, #24
6d44: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
6d48: 4606 mov r6, r0
lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP;
6d4a: 23ff movs r3, #255 ; 0xff
6d4c: f8ad 3016 strh.w r3, [sp, #22]
uint16_t size = _lv_style_get_mem_size(style);
6d50: 4b20 ldr r3, [pc, #128] ; (6dd4 <_lv_style_set_ptr+0x13c>)
6d52: 4798 blx r3
if(size == 0) size += end_mark_size;
6d54: 2800 cmp r0, #0
6d56: bf08 it eq
6d58: 2002 moveq r0, #2
size += sizeof(lv_style_property_t) + sizeof(const void *);
6d5a: 1d85 adds r5, r0, #6
style->map = lv_mem_realloc(style->map, size);
6d5c: b2ad uxth r5, r5
6d5e: 4629 mov r1, r5
6d60: 4620 mov r0, r4
6d62: 4b1d ldr r3, [pc, #116] ; (6dd8 <_lv_style_set_ptr+0x140>)
6d64: 4798 blx r3
6d66: 6030 str r0, [r6, #0]
LV_ASSERT_MEM(style->map);
6d68: 4b1c ldr r3, [pc, #112] ; (6ddc <_lv_style_set_ptr+0x144>)
6d6a: 4798 blx r3
6d6c: b320 cbz r0, 6db8 <_lv_style_set_ptr+0x120>
if(style == NULL) return;
6d6e: 2e00 cmp r6, #0
6d70: d0e7 beq.n 6d42 <_lv_style_set_ptr+0xaa>
_lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t));
6d72: f1a5 0308 sub.w r3, r5, #8
6d76: 6832 ldr r2, [r6, #0]
6d78: 18d1 adds r1, r2, r3
6d7a: f89d 000e ldrb.w r0, [sp, #14]
6d7e: 54d0 strb r0, [r2, r3]
6d80: f89d 300f ldrb.w r3, [sp, #15]
6d84: 704b strb r3, [r1, #1]
6d86: 1faa subs r2, r5, #6
_lv_memcpy_small(style->map + size - sizeof(const void *) - end_mark_size, &p, sizeof(const void *));
6d88: 6831 ldr r1, [r6, #0]
6d8a: 188b adds r3, r1, r2
6d8c: f89d 0008 ldrb.w r0, [sp, #8]
6d90: 5488 strb r0, [r1, r2]
6d92: f89d 2009 ldrb.w r2, [sp, #9]
6d96: 705a strb r2, [r3, #1]
6d98: f89d 200a ldrb.w r2, [sp, #10]
6d9c: 709a strb r2, [r3, #2]
6d9e: f89d 200b ldrb.w r2, [sp, #11]
6da2: 70da strb r2, [r3, #3]
6da4: 3d02 subs r5, #2
_lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark));
6da6: 6833 ldr r3, [r6, #0]
6da8: 195a adds r2, r3, r5
6daa: f89d 1016 ldrb.w r1, [sp, #22]
6dae: 5559 strb r1, [r3, r5]
6db0: f89d 3017 ldrb.w r3, [sp, #23]
6db4: 7053 strb r3, [r2, #1]
6db6: e7c4 b.n 6d42 <_lv_style_set_ptr+0xaa>
LV_ASSERT_MEM(style->map);
6db8: 4b09 ldr r3, [pc, #36] ; (6de0 <_lv_style_set_ptr+0x148>)
6dba: 9300 str r3, [sp, #0]
6dbc: f240 2213 movw r2, #531 ; 0x213
6dc0: 4908 ldr r1, [pc, #32] ; (6de4 <_lv_style_set_ptr+0x14c>)
6dc2: 2003 movs r0, #3
6dc4: 4c08 ldr r4, [pc, #32] ; (6de8 <_lv_style_set_ptr+0x150>)
6dc6: 47a0 blx r4
6dc8: 6832 ldr r2, [r6, #0]
6dca: 2300 movs r3, #0
6dcc: 4807 ldr r0, [pc, #28] ; (6dec <_lv_style_set_ptr+0x154>)
6dce: 4908 ldr r1, [pc, #32] ; (6df0 <_lv_style_set_ptr+0x158>)
6dd0: 4788 blx r1
6dd2: e7fe b.n 6dd2 <_lv_style_set_ptr+0x13a>
6dd4: 00006779 .word 0x00006779
6dd8: 00012899 .word 0x00012899
6ddc: 000022b1 .word 0x000022b1
6de0: 00024b08 .word 0x00024b08
6de4: 00024b3c .word 0x00024b3c
6de8: 0001225d .word 0x0001225d
6dec: 00023fd8 .word 0x00023fd8
6df0: 000022b9 .word 0x000022b9
00006df4 <_lv_style_get_int>:
if(style == NULL) return -1;
6df4: 2800 cmp r0, #0
6df6: d04d beq.n 6e94 <_lv_style_get_int+0xa0>
{
6df8: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
6dfc: 4684 mov ip, r0
if(style->map == NULL) return -1;
6dfe: 6804 ldr r4, [r0, #0]
6e00: 2c00 cmp r4, #0
6e02: d04a beq.n 6e9a <_lv_style_get_int+0xa6>
uint8_t id_to_find = prop & 0xFF;
6e04: b2ce uxtb r6, r1
attr.full = (prop >> 8) & 0xFF;
6e06: 0a09 lsrs r1, r1, #8
6e08: 468e mov lr, r1
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
6e0a: 7823 ldrb r3, [r4, #0]
6e0c: 2bff cmp r3, #255 ; 0xff
6e0e: d03e beq.n 6e8e <_lv_style_get_int+0x9a>
6e10: f04f 37ff mov.w r7, #4294967295
6e14: 46b8 mov r8, r7
6e16: 2000 movs r0, #0
else if((attr_i.bits.state & (~attr.bits.state)) == 0) {
6e18: f3ce 0e06 ubfx lr, lr, #0, #7
6e1c: e02a b.n 6e74 <_lv_style_get_int+0x80>
attr_i.full = style->map[i + 1];
6e1e: 1825 adds r5, r4, r0
6e20: 786d ldrb r5, [r5, #1]
if(attr_i.bits.state == attr.bits.state) {
6e22: ea81 0905 eor.w r9, r1, r5
6e26: f019 0f7f tst.w r9, #127 ; 0x7f
6e2a: d00a beq.n 6e42 <_lv_style_get_int+0x4e>
else if((attr_i.bits.state & (~attr.bits.state)) == 0) {
6e2c: f005 057f and.w r5, r5, #127 ; 0x7f
6e30: ea35 090e bics.w r9, r5, lr
6e34: d120 bne.n 6e78 <_lv_style_get_int+0x84>
if(attr_i.bits.state > weight) {
6e36: 4545 cmp r5, r8
weight = attr_i.bits.state;
6e38: bfc4 itt gt
6e3a: fa0f f885 sxthgt.w r8, r5
id_guess = i;
6e3e: b207 sxthgt r7, r0
6e40: e01a b.n 6e78 <_lv_style_get_int+0x84>
return i;
6e42: 4607 mov r7, r0
if(id < 0) {
6e44: 2f00 cmp r7, #0
6e46: db2c blt.n 6ea2 <_lv_style_get_int+0xae>
_lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(lv_style_int_t));
6e48: 1cbb adds r3, r7, #2
6e4a: 18e0 adds r0, r4, r3
6e4c: 5ce3 ldrb r3, [r4, r3]
6e4e: 7013 strb r3, [r2, #0]
6e50: 7843 ldrb r3, [r0, #1]
6e52: 7053 strb r3, [r2, #1]
attr_act.full = style->map[id + 1];
6e54: f8dc 0000 ldr.w r0, [ip]
6e58: 4407 add r7, r0
6e5a: 7878 ldrb r0, [r7, #1]
return attr_act.bits.state & attr_goal.bits.state;
6e5c: f3c1 0106 ubfx r1, r1, #0, #7
6e60: 4008 ands r0, r1
6e62: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t);
6e66: 2b0b cmp r3, #11
6e68: dc0c bgt.n 6e84 <_lv_style_get_int+0x90>
6e6a: 3002 adds r0, #2
i += sizeof(lv_style_property_t);
6e6c: 3002 adds r0, #2
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
6e6e: 5c23 ldrb r3, [r4, r0]
6e70: 2bff cmp r3, #255 ; 0xff
6e72: d0e7 beq.n 6e44 <_lv_style_get_int+0x50>
if(style->map[i] == id_to_find) {
6e74: 429e cmp r6, r3
6e76: d0d2 beq.n 6e1e <_lv_style_get_int+0x2a>
if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t);
6e78: f003 030f and.w r3, r3, #15
6e7c: 2b08 cmp r3, #8
6e7e: dcf2 bgt.n 6e66 <_lv_style_get_int+0x72>
6e80: 3002 adds r0, #2
6e82: e7f3 b.n 6e6c <_lv_style_get_int+0x78>
else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t);
6e84: 2b0d cmp r3, #13
6e86: bfd4 ite le
6e88: 3001 addle r0, #1
else i += sizeof(const void *);
6e8a: 3004 addgt r0, #4
6e8c: e7ee b.n 6e6c <_lv_style_get_int+0x78>
int16_t id_guess = -1;
6e8e: f04f 37ff mov.w r7, #4294967295
6e92: e7d7 b.n 6e44 <_lv_style_get_int+0x50>
if(style == NULL) return -1;
6e94: f04f 30ff mov.w r0, #4294967295
6e98: 4770 bx lr
if(style->map == NULL) return -1;
6e9a: f04f 30ff mov.w r0, #4294967295
6e9e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
return -1;
6ea2: f04f 30ff mov.w r0, #4294967295
}
6ea6: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
00006eaa <_lv_style_get_opa>:
if(style == NULL) return -1;
6eaa: 2800 cmp r0, #0
6eac: d04a beq.n 6f44 <_lv_style_get_opa+0x9a>
{
6eae: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
6eb2: 4686 mov lr, r0
if(style->map == NULL) return -1;
6eb4: 6804 ldr r4, [r0, #0]
6eb6: 2c00 cmp r4, #0
6eb8: d047 beq.n 6f4a <_lv_style_get_opa+0xa0>
uint8_t id_to_find = prop & 0xFF;
6eba: b2ce uxtb r6, r1
attr.full = (prop >> 8) & 0xFF;
6ebc: 0a09 lsrs r1, r1, #8
6ebe: 468c mov ip, r1
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
6ec0: 7823 ldrb r3, [r4, #0]
6ec2: 2bff cmp r3, #255 ; 0xff
6ec4: d03b beq.n 6f3e <_lv_style_get_opa+0x94>
6ec6: f04f 37ff mov.w r7, #4294967295
6eca: 46b8 mov r8, r7
6ecc: 2000 movs r0, #0
else if((attr_i.bits.state & (~attr.bits.state)) == 0) {
6ece: f3cc 0c06 ubfx ip, ip, #0, #7
6ed2: e027 b.n 6f24 <_lv_style_get_opa+0x7a>
attr_i.full = style->map[i + 1];
6ed4: 1825 adds r5, r4, r0
6ed6: 786d ldrb r5, [r5, #1]
if(attr_i.bits.state == attr.bits.state) {
6ed8: ea81 0905 eor.w r9, r1, r5
6edc: f019 0f7f tst.w r9, #127 ; 0x7f
6ee0: d00a beq.n 6ef8 <_lv_style_get_opa+0x4e>
else if((attr_i.bits.state & (~attr.bits.state)) == 0) {
6ee2: f005 057f and.w r5, r5, #127 ; 0x7f
6ee6: ea35 090c bics.w r9, r5, ip
6eea: d11d bne.n 6f28 <_lv_style_get_opa+0x7e>
if(attr_i.bits.state > weight) {
6eec: 4545 cmp r5, r8
weight = attr_i.bits.state;
6eee: bfc4 itt gt
6ef0: fa0f f885 sxthgt.w r8, r5
id_guess = i;
6ef4: b207 sxthgt r7, r0
6ef6: e017 b.n 6f28 <_lv_style_get_opa+0x7e>
return i;
6ef8: 4607 mov r7, r0
if(id < 0) {
6efa: 2f00 cmp r7, #0
6efc: db29 blt.n 6f52 <_lv_style_get_opa+0xa8>
6efe: 443c add r4, r7
6f00: 78a3 ldrb r3, [r4, #2]
6f02: 7013 strb r3, [r2, #0]
attr_act.full = style->map[id + 1];
6f04: f8de 0000 ldr.w r0, [lr]
6f08: 4407 add r7, r0
6f0a: 7878 ldrb r0, [r7, #1]
return attr_act.bits.state & attr_goal.bits.state;
6f0c: f3c1 0106 ubfx r1, r1, #0, #7
6f10: 4008 ands r0, r1
6f12: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t);
6f16: 2b0b cmp r3, #11
6f18: dc0c bgt.n 6f34 <_lv_style_get_opa+0x8a>
6f1a: 3002 adds r0, #2
i += sizeof(lv_style_property_t);
6f1c: 3002 adds r0, #2
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
6f1e: 5c23 ldrb r3, [r4, r0]
6f20: 2bff cmp r3, #255 ; 0xff
6f22: d0ea beq.n 6efa <_lv_style_get_opa+0x50>
if(style->map[i] == id_to_find) {
6f24: 429e cmp r6, r3
6f26: d0d5 beq.n 6ed4 <_lv_style_get_opa+0x2a>
if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t);
6f28: f003 030f and.w r3, r3, #15
6f2c: 2b08 cmp r3, #8
6f2e: dcf2 bgt.n 6f16 <_lv_style_get_opa+0x6c>
6f30: 3002 adds r0, #2
6f32: e7f3 b.n 6f1c <_lv_style_get_opa+0x72>
else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t);
6f34: 2b0d cmp r3, #13
6f36: bfd4 ite le
6f38: 3001 addle r0, #1
else i += sizeof(const void *);
6f3a: 3004 addgt r0, #4
6f3c: e7ee b.n 6f1c <_lv_style_get_opa+0x72>
int16_t id_guess = -1;
6f3e: f04f 37ff mov.w r7, #4294967295
6f42: e7da b.n 6efa <_lv_style_get_opa+0x50>
if(style == NULL) return -1;
6f44: f04f 30ff mov.w r0, #4294967295
6f48: 4770 bx lr
if(style->map == NULL) return -1;
6f4a: f04f 30ff mov.w r0, #4294967295
6f4e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
return -1;
6f52: f04f 30ff mov.w r0, #4294967295
}
6f56: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
00006f5a <_lv_style_get_color>:
if(style == NULL) return -1;
6f5a: 2800 cmp r0, #0
6f5c: d04d beq.n 6ffa <_lv_style_get_color+0xa0>
{
6f5e: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
6f62: 4684 mov ip, r0
if(style->map == NULL) return -1;
6f64: 6804 ldr r4, [r0, #0]
6f66: 2c00 cmp r4, #0
6f68: d04a beq.n 7000 <_lv_style_get_color+0xa6>
uint8_t id_to_find = prop & 0xFF;
6f6a: b2ce uxtb r6, r1
attr.full = (prop >> 8) & 0xFF;
6f6c: 0a09 lsrs r1, r1, #8
6f6e: 468e mov lr, r1
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
6f70: 7823 ldrb r3, [r4, #0]
6f72: 2bff cmp r3, #255 ; 0xff
6f74: d03e beq.n 6ff4 <_lv_style_get_color+0x9a>
6f76: f04f 37ff mov.w r7, #4294967295
6f7a: 46b8 mov r8, r7
6f7c: 2000 movs r0, #0
else if((attr_i.bits.state & (~attr.bits.state)) == 0) {
6f7e: f3ce 0e06 ubfx lr, lr, #0, #7
6f82: e02a b.n 6fda <_lv_style_get_color+0x80>
attr_i.full = style->map[i + 1];
6f84: 1825 adds r5, r4, r0
6f86: 786d ldrb r5, [r5, #1]
if(attr_i.bits.state == attr.bits.state) {
6f88: ea81 0905 eor.w r9, r1, r5
6f8c: f019 0f7f tst.w r9, #127 ; 0x7f
6f90: d00a beq.n 6fa8 <_lv_style_get_color+0x4e>
else if((attr_i.bits.state & (~attr.bits.state)) == 0) {
6f92: f005 057f and.w r5, r5, #127 ; 0x7f
6f96: ea35 090e bics.w r9, r5, lr
6f9a: d120 bne.n 6fde <_lv_style_get_color+0x84>
if(attr_i.bits.state > weight) {
6f9c: 4545 cmp r5, r8
weight = attr_i.bits.state;
6f9e: bfc4 itt gt
6fa0: fa0f f885 sxthgt.w r8, r5
id_guess = i;
6fa4: b207 sxthgt r7, r0
6fa6: e01a b.n 6fde <_lv_style_get_color+0x84>
return i;
6fa8: 4607 mov r7, r0
if(id < 0) {
6faa: 2f00 cmp r7, #0
6fac: db2c blt.n 7008 <_lv_style_get_color+0xae>
_lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(lv_color_t));
6fae: 1cbb adds r3, r7, #2
6fb0: 18e0 adds r0, r4, r3
6fb2: 5ce3 ldrb r3, [r4, r3]
6fb4: 7013 strb r3, [r2, #0]
6fb6: 7843 ldrb r3, [r0, #1]
6fb8: 7053 strb r3, [r2, #1]
attr_act.full = style->map[id + 1];
6fba: f8dc 0000 ldr.w r0, [ip]
6fbe: 4407 add r7, r0
6fc0: 7878 ldrb r0, [r7, #1]
return attr_act.bits.state & attr_goal.bits.state;
6fc2: f3c1 0106 ubfx r1, r1, #0, #7
6fc6: 4008 ands r0, r1
6fc8: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t);
6fcc: 2b0b cmp r3, #11
6fce: dc0c bgt.n 6fea <_lv_style_get_color+0x90>
6fd0: 3002 adds r0, #2
i += sizeof(lv_style_property_t);
6fd2: 3002 adds r0, #2
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
6fd4: 5c23 ldrb r3, [r4, r0]
6fd6: 2bff cmp r3, #255 ; 0xff
6fd8: d0e7 beq.n 6faa <_lv_style_get_color+0x50>
if(style->map[i] == id_to_find) {
6fda: 429e cmp r6, r3
6fdc: d0d2 beq.n 6f84 <_lv_style_get_color+0x2a>
if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t);
6fde: f003 030f and.w r3, r3, #15
6fe2: 2b08 cmp r3, #8
6fe4: dcf2 bgt.n 6fcc <_lv_style_get_color+0x72>
6fe6: 3002 adds r0, #2
6fe8: e7f3 b.n 6fd2 <_lv_style_get_color+0x78>
else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t);
6fea: 2b0d cmp r3, #13
6fec: bfd4 ite le
6fee: 3001 addle r0, #1
else i += sizeof(const void *);
6ff0: 3004 addgt r0, #4
6ff2: e7ee b.n 6fd2 <_lv_style_get_color+0x78>
int16_t id_guess = -1;
6ff4: f04f 37ff mov.w r7, #4294967295
6ff8: e7d7 b.n 6faa <_lv_style_get_color+0x50>
if(style == NULL) return -1;
6ffa: f04f 30ff mov.w r0, #4294967295
6ffe: 4770 bx lr
if(style->map == NULL) return -1;
7000: f04f 30ff mov.w r0, #4294967295
7004: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
return -1;
7008: f04f 30ff mov.w r0, #4294967295
}
700c: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
00007010 <_lv_style_get_ptr>:
if(style == NULL) return -1;
7010: 2800 cmp r0, #0
7012: d050 beq.n 70b6 <_lv_style_get_ptr+0xa6>
{
7014: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
7018: 4607 mov r7, r0
if(style->map == NULL) return -1;
701a: 6804 ldr r4, [r0, #0]
701c: 2c00 cmp r4, #0
701e: d04d beq.n 70bc <_lv_style_get_ptr+0xac>
uint8_t id_to_find = prop & 0xFF;
7020: b2ce uxtb r6, r1
attr.full = (prop >> 8) & 0xFF;
7022: 0a09 lsrs r1, r1, #8
7024: 468c mov ip, r1
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
7026: 7823 ldrb r3, [r4, #0]
7028: 2bff cmp r3, #255 ; 0xff
702a: d02d beq.n 7088 <_lv_style_get_ptr+0x78>
702c: f04f 3eff mov.w lr, #4294967295
7030: 46f0 mov r8, lr
7032: 2000 movs r0, #0
else if((attr_i.bits.state & (~attr.bits.state)) == 0) {
7034: f3cc 0c06 ubfx ip, ip, #0, #7
7038: e019 b.n 706e <_lv_style_get_ptr+0x5e>
attr_i.full = style->map[i + 1];
703a: 1825 adds r5, r4, r0
703c: 786d ldrb r5, [r5, #1]
if(attr_i.bits.state == attr.bits.state) {
703e: ea81 0905 eor.w r9, r1, r5
7042: f019 0f7f tst.w r9, #127 ; 0x7f
7046: d022 beq.n 708e <_lv_style_get_ptr+0x7e>
else if((attr_i.bits.state & (~attr.bits.state)) == 0) {
7048: f005 057f and.w r5, r5, #127 ; 0x7f
704c: ea35 090c bics.w r9, r5, ip
7050: d10f bne.n 7072 <_lv_style_get_ptr+0x62>
if(attr_i.bits.state > weight) {
7052: 4545 cmp r5, r8
weight = attr_i.bits.state;
7054: bfc4 itt gt
7056: fa0f f885 sxthgt.w r8, r5
id_guess = i;
705a: fa0f fe80 sxthgt.w lr, r0
705e: e008 b.n 7072 <_lv_style_get_ptr+0x62>
else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t);
7060: 2b0b cmp r3, #11
7062: dc0c bgt.n 707e <_lv_style_get_ptr+0x6e>
7064: 3002 adds r0, #2
i += sizeof(lv_style_property_t);
7066: 3002 adds r0, #2
while(style->map[i] != _LV_STYLE_CLOSEING_PROP) {
7068: 5c23 ldrb r3, [r4, r0]
706a: 2bff cmp r3, #255 ; 0xff
706c: d00e beq.n 708c <_lv_style_get_ptr+0x7c>
if(style->map[i] == id_to_find) {
706e: 429e cmp r6, r3
7070: d0e3 beq.n 703a <_lv_style_get_ptr+0x2a>
if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t);
7072: f003 030f and.w r3, r3, #15
7076: 2b08 cmp r3, #8
7078: dcf2 bgt.n 7060 <_lv_style_get_ptr+0x50>
707a: 3002 adds r0, #2
707c: e7f3 b.n 7066 <_lv_style_get_ptr+0x56>
else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t);
707e: 2b0d cmp r3, #13
7080: bfd4 ite le
7082: 3001 addle r0, #1
else i += sizeof(const void *);
7084: 3004 addgt r0, #4
7086: e7ee b.n 7066 <_lv_style_get_ptr+0x56>
int16_t id_guess = -1;
7088: f04f 3eff mov.w lr, #4294967295
return id_guess;
708c: 4670 mov r0, lr
if(id < 0) {
708e: 2800 cmp r0, #0
7090: db18 blt.n 70c4 <_lv_style_get_ptr+0xb4>
_lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(const void *));
7092: 4605 mov r5, r0
7094: 3001 adds r0, #1
7096: 1823 adds r3, r4, r0
7098: 1d14 adds r4, r2, #4
709a: f813 0f01 ldrb.w r0, [r3, #1]!
709e: f802 0b01 strb.w r0, [r2], #1
while(len) {
70a2: 4294 cmp r4, r2
70a4: d1f9 bne.n 709a <_lv_style_get_ptr+0x8a>
attr_act.full = style->map[id + 1];
70a6: 683b ldr r3, [r7, #0]
70a8: 442b add r3, r5
70aa: 7858 ldrb r0, [r3, #1]
return attr_act.bits.state & attr_goal.bits.state;
70ac: f3c1 0106 ubfx r1, r1, #0, #7
70b0: 4008 ands r0, r1
70b2: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
if(style == NULL) return -1;
70b6: f04f 30ff mov.w r0, #4294967295
70ba: 4770 bx lr
if(style->map == NULL) return -1;
70bc: f04f 30ff mov.w r0, #4294967295
70c0: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
return -1;
70c4: f04f 30ff mov.w r0, #4294967295
}
70c8: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
000070cc <lv_style_list_get_local_style>:
if(!list->has_local) return NULL;
70cc: 7943 ldrb r3, [r0, #5]
70ce: f013 0f01 tst.w r3, #1
70d2: d006 beq.n 70e2 <lv_style_list_get_local_style+0x16>
if(list->has_trans) return list->style_list[1];
70d4: f013 0f02 tst.w r3, #2
70d8: 6803 ldr r3, [r0, #0]
70da: bf14 ite ne
70dc: 6858 ldrne r0, [r3, #4]
else return list->style_list[0];
70de: 6818 ldreq r0, [r3, #0]
70e0: 4770 bx lr
if(!list->has_local) return NULL;
70e2: 2000 movs r0, #0
}
70e4: 4770 bx lr
000070e6 <_lv_style_list_get_transition_style>:
if(!list->has_trans) return NULL;
70e6: 7943 ldrb r3, [r0, #5]
70e8: f013 0f02 tst.w r3, #2
return list->style_list[0];
70ec: bf1a itte ne
70ee: 6803 ldrne r3, [r0, #0]
70f0: 6818 ldrne r0, [r3, #0]
if(!list->has_trans) return NULL;
70f2: 2000 moveq r0, #0
}
70f4: 4770 bx lr
...
000070f8 <_lv_style_list_reset>:
if(list == NULL) return;
70f8: 2800 cmp r0, #0
70fa: d02c beq.n 7156 <_lv_style_list_reset+0x5e>
{
70fc: b538 push {r3, r4, r5, lr}
70fe: 4604 mov r4, r0
if(list->has_local) {
7100: 7943 ldrb r3, [r0, #5]
7102: f013 0f01 tst.w r3, #1
7106: d008 beq.n 711a <_lv_style_list_reset+0x22>
lv_style_t * local = lv_style_list_get_local_style(list);
7108: 4b13 ldr r3, [pc, #76] ; (7158 <_lv_style_list_reset+0x60>)
710a: 4798 blx r3
if(local) {
710c: 4605 mov r5, r0
710e: b120 cbz r0, 711a <_lv_style_list_reset+0x22>
lv_style_reset(local);
7110: 4b12 ldr r3, [pc, #72] ; (715c <_lv_style_list_reset+0x64>)
7112: 4798 blx r3
lv_mem_free(local);
7114: 4628 mov r0, r5
7116: 4b12 ldr r3, [pc, #72] ; (7160 <_lv_style_list_reset+0x68>)
7118: 4798 blx r3
if(list->has_trans) {
711a: 7963 ldrb r3, [r4, #5]
711c: f013 0f02 tst.w r3, #2
7120: d009 beq.n 7136 <_lv_style_list_reset+0x3e>
lv_style_t * trans = _lv_style_list_get_transition_style(list);
7122: 4620 mov r0, r4
7124: 4b0f ldr r3, [pc, #60] ; (7164 <_lv_style_list_reset+0x6c>)
7126: 4798 blx r3
if(trans) {
7128: 4605 mov r5, r0
712a: b120 cbz r0, 7136 <_lv_style_list_reset+0x3e>
lv_style_reset(trans);
712c: 4b0b ldr r3, [pc, #44] ; (715c <_lv_style_list_reset+0x64>)
712e: 4798 blx r3
lv_mem_free(trans);
7130: 4628 mov r0, r5
7132: 4b0b ldr r3, [pc, #44] ; (7160 <_lv_style_list_reset+0x68>)
7134: 4798 blx r3
if(list->style_cnt > 0) lv_mem_free(list->style_list);
7136: 7923 ldrb r3, [r4, #4]
7138: b94b cbnz r3, 714e <_lv_style_list_reset+0x56>
list->style_list = NULL;
713a: 2200 movs r2, #0
713c: 6022 str r2, [r4, #0]
list->style_cnt = 0;
713e: 7122 strb r2, [r4, #4]
list->has_local = 0;
7140: 7963 ldrb r3, [r4, #5]
list->skip_trans = 0;
7142: f003 03fc and.w r3, r3, #252 ; 0xfc
7146: f362 0382 bfi r3, r2, #2, #1
714a: 7163 strb r3, [r4, #5]
714c: bd38 pop {r3, r4, r5, pc}
if(list->style_cnt > 0) lv_mem_free(list->style_list);
714e: 6820 ldr r0, [r4, #0]
7150: 4b03 ldr r3, [pc, #12] ; (7160 <_lv_style_list_reset+0x68>)
7152: 4798 blx r3
7154: e7f1 b.n 713a <_lv_style_list_reset+0x42>
7156: 4770 bx lr
7158: 000070cd .word 0x000070cd
715c: 00006765 .word 0x00006765
7160: 000124c5 .word 0x000124c5
7164: 000070e7 .word 0x000070e7
00007168 <lv_style_list_copy>:
{
7168: b570 push {r4, r5, r6, lr}
716a: 4605 mov r5, r0
716c: 460c mov r4, r1
_lv_style_list_reset(list_dest);
716e: 4b2c ldr r3, [pc, #176] ; (7220 <lv_style_list_copy+0xb8>)
7170: 4798 blx r3
if(list_src->style_list == NULL) return;
7172: 6823 ldr r3, [r4, #0]
7174: 2b00 cmp r3, #0
7176: d041 beq.n 71fc <lv_style_list_copy+0x94>
if(list_src->has_local == 0) {
7178: 7963 ldrb r3, [r4, #5]
717a: f013 0f01 tst.w r3, #1
717e: d120 bne.n 71c2 <lv_style_list_copy+0x5a>
if(list_src->has_trans) {
7180: f013 0f02 tst.w r3, #2
7184: d010 beq.n 71a8 <lv_style_list_copy+0x40>
list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 1) * sizeof(lv_style_t *));
7186: 7920 ldrb r0, [r4, #4]
7188: 3801 subs r0, #1
718a: 0080 lsls r0, r0, #2
718c: 4b25 ldr r3, [pc, #148] ; (7224 <lv_style_list_copy+0xbc>)
718e: 4798 blx r3
7190: 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 *));
7192: 7922 ldrb r2, [r4, #4]
7194: 3a01 subs r2, #1
7196: 6821 ldr r1, [r4, #0]
7198: 0092 lsls r2, r2, #2
719a: 3104 adds r1, #4
719c: 4b22 ldr r3, [pc, #136] ; (7228 <lv_style_list_copy+0xc0>)
719e: 4798 blx r3
list_dest->style_cnt = list_src->style_cnt - 1;
71a0: 7923 ldrb r3, [r4, #4]
71a2: 3b01 subs r3, #1
71a4: 712b strb r3, [r5, #4]
71a6: bd70 pop {r4, r5, r6, pc}
list_dest->style_list = lv_mem_alloc(list_src->style_cnt * sizeof(lv_style_t *));
71a8: 7920 ldrb r0, [r4, #4]
71aa: 0080 lsls r0, r0, #2
71ac: 4b1d ldr r3, [pc, #116] ; (7224 <lv_style_list_copy+0xbc>)
71ae: 4798 blx r3
71b0: 6028 str r0, [r5, #0]
_lv_memcpy(list_dest->style_list, list_src->style_list, list_src->style_cnt * sizeof(lv_style_t *));
71b2: 7922 ldrb r2, [r4, #4]
71b4: 0092 lsls r2, r2, #2
71b6: 6821 ldr r1, [r4, #0]
71b8: 4b1b ldr r3, [pc, #108] ; (7228 <lv_style_list_copy+0xc0>)
71ba: 4798 blx r3
list_dest->style_cnt = list_src->style_cnt;
71bc: 7923 ldrb r3, [r4, #4]
71be: 712b strb r3, [r5, #4]
71c0: bd70 pop {r4, r5, r6, pc}
if(list_src->has_trans) {
71c2: f013 0f02 tst.w r3, #2
71c6: d01a beq.n 71fe <lv_style_list_copy+0x96>
list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 2) * sizeof(lv_style_t *));
71c8: 7920 ldrb r0, [r4, #4]
71ca: 3802 subs r0, #2
71cc: 0080 lsls r0, r0, #2
71ce: 4b15 ldr r3, [pc, #84] ; (7224 <lv_style_list_copy+0xbc>)
71d0: 4798 blx r3
71d2: 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 *));
71d4: 7922 ldrb r2, [r4, #4]
71d6: 3a02 subs r2, #2
71d8: 6821 ldr r1, [r4, #0]
71da: 0092 lsls r2, r2, #2
71dc: 3108 adds r1, #8
71de: 4b12 ldr r3, [pc, #72] ; (7228 <lv_style_list_copy+0xc0>)
71e0: 4798 blx r3
list_dest->style_cnt = list_src->style_cnt - 2;
71e2: 7923 ldrb r3, [r4, #4]
71e4: 3b02 subs r3, #2
71e6: 712b strb r3, [r5, #4]
lv_style_t * local_style = get_alloc_local_style(list_dest);
71e8: 4628 mov r0, r5
71ea: 4d10 ldr r5, [pc, #64] ; (722c <lv_style_list_copy+0xc4>)
71ec: 47a8 blx r5
71ee: 4606 mov r6, r0
lv_style_copy(local_style, get_alloc_local_style((lv_style_list_t *)list_src));
71f0: 4620 mov r0, r4
71f2: 47a8 blx r5
71f4: 4601 mov r1, r0
71f6: 4630 mov r0, r6
71f8: 4b0d ldr r3, [pc, #52] ; (7230 <lv_style_list_copy+0xc8>)
71fa: 4798 blx r3
71fc: bd70 pop {r4, r5, r6, pc}
list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 1) * sizeof(lv_style_t *));
71fe: 7920 ldrb r0, [r4, #4]
7200: 3801 subs r0, #1
7202: 0080 lsls r0, r0, #2
7204: 4b07 ldr r3, [pc, #28] ; (7224 <lv_style_list_copy+0xbc>)
7206: 4798 blx r3
7208: 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 *));
720a: 7922 ldrb r2, [r4, #4]
720c: 3a01 subs r2, #1
720e: 6821 ldr r1, [r4, #0]
7210: 0092 lsls r2, r2, #2
7212: 3104 adds r1, #4
7214: 4b04 ldr r3, [pc, #16] ; (7228 <lv_style_list_copy+0xc0>)
7216: 4798 blx r3
list_dest->style_cnt = list_src->style_cnt - 1;
7218: 7923 ldrb r3, [r4, #4]
721a: 3b01 subs r3, #1
721c: 712b strb r3, [r5, #4]
721e: e7e3 b.n 71e8 <lv_style_list_copy+0x80>
7220: 000070f9 .word 0x000070f9
7224: 000123dd .word 0x000123dd
7228: 00012655 .word 0x00012655
722c: 000066ad .word 0x000066ad
7230: 000067b9 .word 0x000067b9
00007234 <_lv_style_list_add_trans_style>:
{
7234: b530 push {r4, r5, lr}
7236: b083 sub sp, #12
7238: 4604 mov r4, r0
if(list->has_trans) return _lv_style_list_get_transition_style(list);
723a: 7943 ldrb r3, [r0, #5]
723c: f013 0f02 tst.w r3, #2
7240: d005 beq.n 724e <_lv_style_list_add_trans_style+0x1a>
7242: 4b1d ldr r3, [pc, #116] ; (72b8 <_lv_style_list_add_trans_style+0x84>)
7244: 4798 blx r3
7246: 4605 mov r5, r0
}
7248: 4628 mov r0, r5
724a: b003 add sp, #12
724c: bd30 pop {r4, r5, pc}
lv_style_t * trans_style = lv_mem_alloc(sizeof(lv_style_t));
724e: 2004 movs r0, #4
7250: 4b1a ldr r3, [pc, #104] ; (72bc <_lv_style_list_add_trans_style+0x88>)
7252: 4798 blx r3
7254: 4605 mov r5, r0
LV_ASSERT_MEM(trans_style);
7256: 4b1a ldr r3, [pc, #104] ; (72c0 <_lv_style_list_add_trans_style+0x8c>)
7258: 4798 blx r3
725a: b1a8 cbz r0, 7288 <_lv_style_list_add_trans_style+0x54>
if(trans_style == NULL) {
725c: b315 cbz r5, 72a4 <_lv_style_list_add_trans_style+0x70>
lv_style_init(trans_style);
725e: 4628 mov r0, r5
7260: 4b18 ldr r3, [pc, #96] ; (72c4 <_lv_style_list_add_trans_style+0x90>)
7262: 4798 blx r3
_lv_style_list_add_style(list, trans_style);
7264: 4629 mov r1, r5
7266: 4620 mov r0, r4
7268: 4b17 ldr r3, [pc, #92] ; (72c8 <_lv_style_list_add_trans_style+0x94>)
726a: 4798 blx r3
list->has_trans = 1;
726c: 7963 ldrb r3, [r4, #5]
726e: f043 0302 orr.w r3, r3, #2
7272: 7163 strb r3, [r4, #5]
if(list->has_local) {
7274: f013 0f01 tst.w r3, #1
7278: d0e6 beq.n 7248 <_lv_style_list_add_trans_style+0x14>
lv_style_t * tmp = list->style_list[0];
727a: 6823 ldr r3, [r4, #0]
727c: 681a ldr r2, [r3, #0]
list->style_list[0] = list->style_list[1];
727e: 6859 ldr r1, [r3, #4]
7280: 6019 str r1, [r3, #0]
list->style_list[1] = tmp;
7282: 6823 ldr r3, [r4, #0]
7284: 605a str r2, [r3, #4]
7286: e7df b.n 7248 <_lv_style_list_add_trans_style+0x14>
LV_ASSERT_MEM(trans_style);
7288: 4b10 ldr r3, [pc, #64] ; (72cc <_lv_style_list_add_trans_style+0x98>)
728a: 9300 str r3, [sp, #0]
728c: f240 22cd movw r2, #717 ; 0x2cd
7290: 490f ldr r1, [pc, #60] ; (72d0 <_lv_style_list_add_trans_style+0x9c>)
7292: 2003 movs r0, #3
7294: 4c0f ldr r4, [pc, #60] ; (72d4 <_lv_style_list_add_trans_style+0xa0>)
7296: 47a0 blx r4
7298: 462a mov r2, r5
729a: 2300 movs r3, #0
729c: 480e ldr r0, [pc, #56] ; (72d8 <_lv_style_list_add_trans_style+0xa4>)
729e: 490f ldr r1, [pc, #60] ; (72dc <_lv_style_list_add_trans_style+0xa8>)
72a0: 4788 blx r1
72a2: e7fe b.n 72a2 <_lv_style_list_add_trans_style+0x6e>
LV_LOG_WARN("lv_style_list_add_trans_style: couldn't create transition style");
72a4: 4b0e ldr r3, [pc, #56] ; (72e0 <_lv_style_list_add_trans_style+0xac>)
72a6: 9300 str r3, [sp, #0]
72a8: 4b08 ldr r3, [pc, #32] ; (72cc <_lv_style_list_add_trans_style+0x98>)
72aa: f240 22cf movw r2, #719 ; 0x2cf
72ae: 4908 ldr r1, [pc, #32] ; (72d0 <_lv_style_list_add_trans_style+0x9c>)
72b0: 2002 movs r0, #2
72b2: 4c08 ldr r4, [pc, #32] ; (72d4 <_lv_style_list_add_trans_style+0xa0>)
72b4: 47a0 blx r4
return NULL;
72b6: e7c7 b.n 7248 <_lv_style_list_add_trans_style+0x14>
72b8: 000070e7 .word 0x000070e7
72bc: 000123dd .word 0x000123dd
72c0: 000022b1 .word 0x000022b1
72c4: 000064d9 .word 0x000064d9
72c8: 000065d9 .word 0x000065d9
72cc: 00024b1c .word 0x00024b1c
72d0: 00024b3c .word 0x00024b3c
72d4: 0001225d .word 0x0001225d
72d8: 00023fd8 .word 0x00023fd8
72dc: 000022b9 .word 0x000022b9
72e0: 00024c04 .word 0x00024c04
000072e4 <_lv_style_list_get_int>:
if(list == NULL) return LV_RES_INV;
72e4: 2800 cmp r0, #0
72e6: d059 beq.n 739c <_lv_style_list_get_int+0xb8>
{
72e8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
72ec: b083 sub sp, #12
72ee: 4605 mov r5, r0
if(list->style_list == NULL) return LV_RES_INV;
72f0: 6803 ldr r3, [r0, #0]
72f2: 2b00 cmp r3, #0
72f4: d054 beq.n 73a0 <_lv_style_list_get_int+0xbc>
int16_t weight_goal = attr.full;
72f6: ea4f 2811 mov.w r8, r1, lsr #8
lv_style_int_t value_act = 0;
72fa: 2300 movs r3, #0
72fc: f8ad 3006 strh.w r3, [sp, #6]
for(ci = 0; ci < list->style_cnt; ci++) {
7300: 7900 ldrb r0, [r0, #4]
7302: 2800 cmp r0, #0
7304: d042 beq.n 738c <_lv_style_list_get_int+0xa8>
7306: 4693 mov fp, r2
7308: 4689 mov r9, r1
730a: 461c mov r4, r3
730c: f04f 36ff mov.w r6, #4294967295
7310: 469a mov sl, r3
int16_t weight_act = _lv_style_get_int(class, prop, &value_act);
7312: 4f24 ldr r7, [pc, #144] ; (73a4 <_lv_style_list_get_int+0xc0>)
7314: e01c b.n 7350 <_lv_style_list_get_int+0x6c>
7316: 4650 mov r0, sl
7318: f10d 0206 add.w r2, sp, #6
731c: 4649 mov r1, r9
731e: 47b8 blx r7
if(weight_act == weight_goal) {
7320: 4580 cmp r8, r0
7322: d027 beq.n 7374 <_lv_style_list_get_int+0x90>
else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) {
7324: 796b ldrb r3, [r5, #5]
7326: f013 0f02 tst.w r3, #2
732a: d005 beq.n 7338 <_lv_style_list_get_int+0x54>
732c: 2800 cmp r0, #0
732e: db03 blt.n 7338 <_lv_style_list_get_int+0x54>
7330: b914 cbnz r4, 7338 <_lv_style_list_get_int+0x54>
7332: f013 0f04 tst.w r3, #4
7336: d023 beq.n 7380 <_lv_style_list_get_int+0x9c>
else if(weight_act > weight) {
7338: 42b0 cmp r0, r6
733a: dd04 ble.n 7346 <_lv_style_list_get_int+0x62>
*res = value_act;
733c: f8bd 3006 ldrh.w r3, [sp, #6]
7340: f8ab 3000 strh.w r3, [fp]
weight = weight_act;
7344: 4606 mov r6, r0
7346: 3401 adds r4, #1
7348: b224 sxth r4, r4
for(ci = 0; ci < list->style_cnt; ci++) {
734a: 7928 ldrb r0, [r5, #4]
734c: 4284 cmp r4, r0
734e: da1f bge.n 7390 <_lv_style_list_get_int+0xac>
lv_style_t * class = lv_style_list_get_style(list, ci);
7350: b2e2 uxtb r2, r4
if(list->has_trans && list->skip_trans) id++;
7352: 796b ldrb r3, [r5, #5]
7354: f003 0306 and.w r3, r3, #6
7358: 2b06 cmp r3, #6
735a: bf04 itt eq
735c: 3201 addeq r2, #1
735e: b2d2 uxtbeq r2, r2
if(list->style_cnt == 0 || id >= list->style_cnt) return NULL;
7360: 2800 cmp r0, #0
7362: d0d8 beq.n 7316 <_lv_style_list_get_int+0x32>
7364: 4282 cmp r2, r0
7366: d203 bcs.n 7370 <_lv_style_list_get_int+0x8c>
return list->style_list[id];
7368: 682b ldr r3, [r5, #0]
736a: f853 0022 ldr.w r0, [r3, r2, lsl #2]
736e: e7d3 b.n 7318 <_lv_style_list_get_int+0x34>
if(list->style_cnt == 0 || id >= list->style_cnt) return NULL;
7370: 4650 mov r0, sl
7372: e7d1 b.n 7318 <_lv_style_list_get_int+0x34>
*res = value_act;
7374: f8bd 3006 ldrh.w r3, [sp, #6]
7378: f8ab 3000 strh.w r3, [fp]
return LV_RES_OK;
737c: 2001 movs r0, #1
737e: e00a b.n 7396 <_lv_style_list_get_int+0xb2>
*res = value_act;
7380: f8bd 3006 ldrh.w r3, [sp, #6]
7384: f8ab 3000 strh.w r3, [fp]
return LV_RES_OK;
7388: 2001 movs r0, #1
738a: e004 b.n 7396 <_lv_style_list_get_int+0xb2>
int16_t weight = -1;
738c: f04f 36ff mov.w r6, #4294967295
if(weight >= 0) return LV_RES_OK;
7390: 43f0 mvns r0, r6
if(list == NULL) return LV_RES_INV;
7392: f3c0 30c0 ubfx r0, r0, #15, #1
}
7396: b003 add sp, #12
7398: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
if(list == NULL) return LV_RES_INV;
739c: 2000 movs r0, #0
739e: 4770 bx lr
if(list->style_list == NULL) return LV_RES_INV;
73a0: 2000 movs r0, #0
73a2: e7f8 b.n 7396 <_lv_style_list_get_int+0xb2>
73a4: 00006df5 .word 0x00006df5
000073a8 <_lv_style_list_get_color>:
if(list == NULL) return LV_RES_INV;
73a8: 2800 cmp r0, #0
73aa: d058 beq.n 745e <_lv_style_list_get_color+0xb6>
{
73ac: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
73b0: b083 sub sp, #12
73b2: 4605 mov r5, r0
if(list->style_list == NULL) return LV_RES_INV;
73b4: 6803 ldr r3, [r0, #0]
73b6: 2b00 cmp r3, #0
73b8: d053 beq.n 7462 <_lv_style_list_get_color+0xba>
int16_t weight_goal = attr.full;
73ba: ea4f 2811 mov.w r8, r1, lsr #8
lv_color_t value_act = { 0 };
73be: 2300 movs r3, #0
73c0: f8ad 3004 strh.w r3, [sp, #4]
for(ci = 0; ci < list->style_cnt; ci++) {
73c4: 7900 ldrb r0, [r0, #4]
73c6: 2800 cmp r0, #0
73c8: d041 beq.n 744e <_lv_style_list_get_color+0xa6>
73ca: 4693 mov fp, r2
73cc: 4689 mov r9, r1
73ce: 461c mov r4, r3
73d0: f04f 36ff mov.w r6, #4294967295
73d4: 469a mov sl, r3
int16_t weight_act = _lv_style_get_color(class, prop, &value_act);
73d6: 4f24 ldr r7, [pc, #144] ; (7468 <_lv_style_list_get_color+0xc0>)
73d8: e01b b.n 7412 <_lv_style_list_get_color+0x6a>
73da: 4650 mov r0, sl
73dc: aa01 add r2, sp, #4
73de: 4649 mov r1, r9
73e0: 47b8 blx r7
if(weight_act == weight_goal) {
73e2: 4580 cmp r8, r0
73e4: d027 beq.n 7436 <_lv_style_list_get_color+0x8e>
else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) {
73e6: 796b ldrb r3, [r5, #5]
73e8: f013 0f02 tst.w r3, #2
73ec: d005 beq.n 73fa <_lv_style_list_get_color+0x52>
73ee: 2800 cmp r0, #0
73f0: db03 blt.n 73fa <_lv_style_list_get_color+0x52>
73f2: b914 cbnz r4, 73fa <_lv_style_list_get_color+0x52>
73f4: f013 0f04 tst.w r3, #4
73f8: d023 beq.n 7442 <_lv_style_list_get_color+0x9a>
else if(weight_act > weight) {
73fa: 42b0 cmp r0, r6
73fc: dd04 ble.n 7408 <_lv_style_list_get_color+0x60>
*res = value_act;
73fe: f8bd 3004 ldrh.w r3, [sp, #4]
7402: f8ab 3000 strh.w r3, [fp]
weight = weight_act;
7406: 4606 mov r6, r0
7408: 3401 adds r4, #1
740a: b224 sxth r4, r4
for(ci = 0; ci < list->style_cnt; ci++) {
740c: 7928 ldrb r0, [r5, #4]
740e: 4284 cmp r4, r0
7410: da1f bge.n 7452 <_lv_style_list_get_color+0xaa>
lv_style_t * class = lv_style_list_get_style(list, ci);
7412: b2e2 uxtb r2, r4
if(list->has_trans && list->skip_trans) id++;
7414: 796b ldrb r3, [r5, #5]
7416: f003 0306 and.w r3, r3, #6
741a: 2b06 cmp r3, #6
741c: bf04 itt eq
741e: 3201 addeq r2, #1
7420: b2d2 uxtbeq r2, r2
if(list->style_cnt == 0 || id >= list->style_cnt) return NULL;
7422: 2800 cmp r0, #0
7424: d0d9 beq.n 73da <_lv_style_list_get_color+0x32>
7426: 4282 cmp r2, r0
7428: d203 bcs.n 7432 <_lv_style_list_get_color+0x8a>
return list->style_list[id];
742a: 682b ldr r3, [r5, #0]
742c: f853 0022 ldr.w r0, [r3, r2, lsl #2]
7430: e7d4 b.n 73dc <_lv_style_list_get_color+0x34>
if(list->style_cnt == 0 || id >= list->style_cnt) return NULL;
7432: 4650 mov r0, sl
7434: e7d2 b.n 73dc <_lv_style_list_get_color+0x34>
*res = value_act;
7436: f8bd 3004 ldrh.w r3, [sp, #4]
743a: f8ab 3000 strh.w r3, [fp]
return LV_RES_OK;
743e: 2001 movs r0, #1
7440: e00a b.n 7458 <_lv_style_list_get_color+0xb0>
*res = value_act;
7442: f8bd 3004 ldrh.w r3, [sp, #4]
7446: f8ab 3000 strh.w r3, [fp]
return LV_RES_OK;
744a: 2001 movs r0, #1
744c: e004 b.n 7458 <_lv_style_list_get_color+0xb0>
int16_t weight = -1;
744e: f04f 36ff mov.w r6, #4294967295
if(weight >= 0) return LV_RES_OK;
7452: 43f0 mvns r0, r6
if(list == NULL) return LV_RES_INV;
7454: f3c0 30c0 ubfx r0, r0, #15, #1
}
7458: b003 add sp, #12
745a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
if(list == NULL) return LV_RES_INV;
745e: 2000 movs r0, #0
7460: 4770 bx lr
if(list->style_list == NULL) return LV_RES_INV;
7462: 2000 movs r0, #0
7464: e7f8 b.n 7458 <_lv_style_list_get_color+0xb0>
7466: bf00 nop
7468: 00006f5b .word 0x00006f5b
0000746c <_lv_style_list_get_opa>:
if(list == NULL) return LV_RES_INV;
746c: 2800 cmp r0, #0
746e: d059 beq.n 7524 <_lv_style_list_get_opa+0xb8>
{
7470: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
7474: b083 sub sp, #12
7476: 4605 mov r5, r0
if(list->style_list == NULL) return LV_RES_INV;
7478: 6803 ldr r3, [r0, #0]
747a: 2b00 cmp r3, #0
747c: d054 beq.n 7528 <_lv_style_list_get_opa+0xbc>
int16_t weight_goal = attr.full;
747e: ea4f 2811 mov.w r8, r1, lsr #8
lv_opa_t value_act = LV_OPA_TRANSP;
7482: 2300 movs r3, #0
7484: f88d 3007 strb.w r3, [sp, #7]
for(ci = 0; ci < list->style_cnt; ci++) {
7488: 7900 ldrb r0, [r0, #4]
748a: 2800 cmp r0, #0
748c: d042 beq.n 7514 <_lv_style_list_get_opa+0xa8>
748e: 4693 mov fp, r2
7490: 4689 mov r9, r1
7492: 461c mov r4, r3
7494: f04f 36ff mov.w r6, #4294967295
7498: 469a mov sl, r3
int16_t weight_act = _lv_style_get_opa(class, prop, &value_act);
749a: 4f24 ldr r7, [pc, #144] ; (752c <_lv_style_list_get_opa+0xc0>)
749c: e01c b.n 74d8 <_lv_style_list_get_opa+0x6c>
749e: 4650 mov r0, sl
74a0: f10d 0207 add.w r2, sp, #7
74a4: 4649 mov r1, r9
74a6: 47b8 blx r7
if(weight_act == weight_goal) {
74a8: 4580 cmp r8, r0
74aa: d027 beq.n 74fc <_lv_style_list_get_opa+0x90>
else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) {
74ac: 796b ldrb r3, [r5, #5]
74ae: f013 0f02 tst.w r3, #2
74b2: d005 beq.n 74c0 <_lv_style_list_get_opa+0x54>
74b4: 2800 cmp r0, #0
74b6: db03 blt.n 74c0 <_lv_style_list_get_opa+0x54>
74b8: b914 cbnz r4, 74c0 <_lv_style_list_get_opa+0x54>
74ba: f013 0f04 tst.w r3, #4
74be: d023 beq.n 7508 <_lv_style_list_get_opa+0x9c>
else if(weight_act > weight) {
74c0: 42b0 cmp r0, r6
74c2: dd04 ble.n 74ce <_lv_style_list_get_opa+0x62>
*res = value_act;
74c4: f89d 3007 ldrb.w r3, [sp, #7]
74c8: f88b 3000 strb.w r3, [fp]
weight = weight_act;
74cc: 4606 mov r6, r0
74ce: 3401 adds r4, #1
74d0: b224 sxth r4, r4
for(ci = 0; ci < list->style_cnt; ci++) {
74d2: 7928 ldrb r0, [r5, #4]
74d4: 4284 cmp r4, r0
74d6: da1f bge.n 7518 <_lv_style_list_get_opa+0xac>
lv_style_t * class = lv_style_list_get_style(list, ci);
74d8: b2e2 uxtb r2, r4
if(list->has_trans && list->skip_trans) id++;
74da: 796b ldrb r3, [r5, #5]
74dc: f003 0306 and.w r3, r3, #6
74e0: 2b06 cmp r3, #6
74e2: bf04 itt eq
74e4: 3201 addeq r2, #1
74e6: b2d2 uxtbeq r2, r2
if(list->style_cnt == 0 || id >= list->style_cnt) return NULL;
74e8: 2800 cmp r0, #0
74ea: d0d8 beq.n 749e <_lv_style_list_get_opa+0x32>
74ec: 4282 cmp r2, r0
74ee: d203 bcs.n 74f8 <_lv_style_list_get_opa+0x8c>
return list->style_list[id];
74f0: 682b ldr r3, [r5, #0]
74f2: f853 0022 ldr.w r0, [r3, r2, lsl #2]
74f6: e7d3 b.n 74a0 <_lv_style_list_get_opa+0x34>
if(list->style_cnt == 0 || id >= list->style_cnt) return NULL;
74f8: 4650 mov r0, sl
74fa: e7d1 b.n 74a0 <_lv_style_list_get_opa+0x34>
*res = value_act;
74fc: f89d 3007 ldrb.w r3, [sp, #7]
7500: f88b 3000 strb.w r3, [fp]
return LV_RES_OK;
7504: 2001 movs r0, #1
7506: e00a b.n 751e <_lv_style_list_get_opa+0xb2>
*res = value_act;
7508: f89d 3007 ldrb.w r3, [sp, #7]
750c: f88b 3000 strb.w r3, [fp]
return LV_RES_OK;
7510: 2001 movs r0, #1
7512: e004 b.n 751e <_lv_style_list_get_opa+0xb2>
int16_t weight = -1;
7514: f04f 36ff mov.w r6, #4294967295
if(weight >= 0) return LV_RES_OK;
7518: 43f0 mvns r0, r6
if(list == NULL) return LV_RES_INV;
751a: f3c0 30c0 ubfx r0, r0, #15, #1
}
751e: b003 add sp, #12
7520: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
if(list == NULL) return LV_RES_INV;
7524: 2000 movs r0, #0
7526: 4770 bx lr
if(list->style_list == NULL) return LV_RES_INV;
7528: 2000 movs r0, #0
752a: e7f8 b.n 751e <_lv_style_list_get_opa+0xb2>
752c: 00006eab .word 0x00006eab
00007530 <_lv_style_list_get_ptr>:
if(list == NULL) return LV_RES_INV;
7530: 2800 cmp r0, #0
7532: d052 beq.n 75da <_lv_style_list_get_ptr+0xaa>
{
7534: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
7538: b083 sub sp, #12
753a: 4605 mov r5, r0
if(list->style_list == NULL) return LV_RES_INV;
753c: 6803 ldr r3, [r0, #0]
753e: 2b00 cmp r3, #0
7540: d04d beq.n 75de <_lv_style_list_get_ptr+0xae>
int16_t weight_goal = attr.full;
7542: ea4f 2811 mov.w r8, r1, lsr #8
for(ci = 0; ci < list->style_cnt; ci++) {
7546: 7900 ldrb r0, [r0, #4]
7548: 2800 cmp r0, #0
754a: d03e beq.n 75ca <_lv_style_list_get_ptr+0x9a>
754c: 4693 mov fp, r2
754e: 4689 mov r9, r1
7550: 2400 movs r4, #0
7552: f04f 36ff mov.w r6, #4294967295
7556: 46a2 mov sl, r4
int16_t weight_act = _lv_style_get_ptr(class, prop, &value_act);
7558: 4f22 ldr r7, [pc, #136] ; (75e4 <_lv_style_list_get_ptr+0xb4>)
755a: e01a b.n 7592 <_lv_style_list_get_ptr+0x62>
755c: 4650 mov r0, sl
755e: aa01 add r2, sp, #4
7560: 4649 mov r1, r9
7562: 47b8 blx r7
if(weight_act == weight_goal) {
7564: 4580 cmp r8, r0
7566: d026 beq.n 75b6 <_lv_style_list_get_ptr+0x86>
else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) {
7568: 796b ldrb r3, [r5, #5]
756a: f013 0f02 tst.w r3, #2
756e: d005 beq.n 757c <_lv_style_list_get_ptr+0x4c>
7570: 2800 cmp r0, #0
7572: db03 blt.n 757c <_lv_style_list_get_ptr+0x4c>
7574: b914 cbnz r4, 757c <_lv_style_list_get_ptr+0x4c>
7576: f013 0f04 tst.w r3, #4
757a: d021 beq.n 75c0 <_lv_style_list_get_ptr+0x90>
else if(weight_act > weight) {
757c: 42b0 cmp r0, r6
757e: dd03 ble.n 7588 <_lv_style_list_get_ptr+0x58>
*res = value_act;
7580: 9b01 ldr r3, [sp, #4]
7582: f8cb 3000 str.w r3, [fp]
weight = weight_act;
7586: 4606 mov r6, r0
7588: 3401 adds r4, #1
758a: b224 sxth r4, r4
for(ci = 0; ci < list->style_cnt; ci++) {
758c: 7928 ldrb r0, [r5, #4]
758e: 4284 cmp r4, r0
7590: da1d bge.n 75ce <_lv_style_list_get_ptr+0x9e>
lv_style_t * class = lv_style_list_get_style(list, ci);
7592: b2e2 uxtb r2, r4
if(list->has_trans && list->skip_trans) id++;
7594: 796b ldrb r3, [r5, #5]
7596: f003 0306 and.w r3, r3, #6
759a: 2b06 cmp r3, #6
759c: bf04 itt eq
759e: 3201 addeq r2, #1
75a0: b2d2 uxtbeq r2, r2
if(list->style_cnt == 0 || id >= list->style_cnt) return NULL;
75a2: 2800 cmp r0, #0
75a4: d0da beq.n 755c <_lv_style_list_get_ptr+0x2c>
75a6: 4282 cmp r2, r0
75a8: d203 bcs.n 75b2 <_lv_style_list_get_ptr+0x82>
return list->style_list[id];
75aa: 682b ldr r3, [r5, #0]
75ac: f853 0022 ldr.w r0, [r3, r2, lsl #2]
75b0: e7d5 b.n 755e <_lv_style_list_get_ptr+0x2e>
if(list->style_cnt == 0 || id >= list->style_cnt) return NULL;
75b2: 4650 mov r0, sl
75b4: e7d3 b.n 755e <_lv_style_list_get_ptr+0x2e>
*res = value_act;
75b6: 9b01 ldr r3, [sp, #4]
75b8: f8cb 3000 str.w r3, [fp]
return LV_RES_OK;
75bc: 2001 movs r0, #1
75be: e009 b.n 75d4 <_lv_style_list_get_ptr+0xa4>
*res = value_act;
75c0: 9b01 ldr r3, [sp, #4]
75c2: f8cb 3000 str.w r3, [fp]
return LV_RES_OK;
75c6: 2001 movs r0, #1
75c8: e004 b.n 75d4 <_lv_style_list_get_ptr+0xa4>
int16_t weight = -1;
75ca: f04f 36ff mov.w r6, #4294967295
if(weight >= 0) return LV_RES_OK;
75ce: 43f0 mvns r0, r6
if(list == NULL) return LV_RES_INV;
75d0: f3c0 30c0 ubfx r0, r0, #15, #1
}
75d4: b003 add sp, #12
75d6: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
if(list == NULL) return LV_RES_INV;
75da: 2000 movs r0, #0
75dc: 4770 bx lr
if(list->style_list == NULL) return LV_RES_INV;
75de: 2000 movs r0, #0
75e0: e7f8 b.n 75d4 <_lv_style_list_get_ptr+0xa4>
75e2: bf00 nop
75e4: 00007011 .word 0x00007011
000075e8 <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)
{
75e8: b5f0 push {r4, r5, r6, r7, lr}
75ea: f001 0e1f and.w lr, r1, #31
75ee: f3c1 1645 ubfx r6, r1, #5, #6
75f2: f3c1 21c4 ubfx r1, r1, #11, #5
if(opa <= LV_OPA_MIN) return bg;
75f6: 2a05 cmp r2, #5
75f8: d93f bls.n 767a <color_blend_true_color_additive+0x92>
uint32_t tmp;
#if LV_COLOR_DEPTH == 1
tmp = bg.full + fg.full;
fg.full = LV_MATH_MIN(tmp, 1);
#else
tmp = bg.ch.red + fg.ch.red;
75fa: f3c0 24c4 ubfx r4, r0, #11, #5
75fe: 440c add r4, r1
#if LV_COLOR_DEPTH == 8
fg.ch.red = LV_MATH_MIN(tmp, 7);
#elif LV_COLOR_DEPTH == 16
fg.ch.red = LV_MATH_MIN(tmp, 31);
7600: 2c1f cmp r4, #31
7602: bf28 it cs
7604: 241f movcs r4, #31
7606: f004 041f and.w r4, r4, #31
#if LV_COLOR_DEPTH == 8
fg.ch.green = LV_MATH_MIN(tmp, 7);
#elif LV_COLOR_DEPTH == 16
#if LV_COLOR_16_SWAP == 0
tmp = bg.ch.green + fg.ch.green;
760a: f3c0 1345 ubfx r3, r0, #5, #6
760e: 4433 add r3, r6
fg.ch.green = LV_MATH_MIN(tmp, 63);
7610: 2b3f cmp r3, #63 ; 0x3f
7612: bf28 it cs
7614: 233f movcs r3, #63 ; 0x3f
7616: f003 053f and.w r5, r3, #63 ; 0x3f
#elif LV_COLOR_DEPTH == 32
fg.ch.green = LV_MATH_MIN(tmp, 255);
#endif
tmp = bg.ch.blue + fg.ch.blue;
761a: f000 001f and.w r0, r0, #31
761e: 4470 add r0, lr
#if LV_COLOR_DEPTH == 8
fg.ch.blue = LV_MATH_MIN(tmp, 4);
#elif LV_COLOR_DEPTH == 16
fg.ch.blue = LV_MATH_MIN(tmp, 31);
7620: 281f cmp r0, #31
7622: bf28 it cs
7624: 201f movcs r0, #31
7626: f000 031f and.w r3, r0, #31
#elif LV_COLOR_DEPTH == 32
fg.ch.blue = LV_MATH_MIN(tmp, 255);
#endif
#endif
if(opa == LV_OPA_COVER) return fg;
762a: 2aff cmp r2, #255 ; 0xff
762c: d02e beq.n 768c <color_blend_true_color_additive+0xa4>
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)));
762e: f1c2 07ff rsb r7, 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)));
LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix)));
7632: fb07 f00e mul.w r0, r7, lr
7636: fb02 0003 mla r0, r2, r3, r0
763a: eb00 2300 add.w r3, r0, r0, lsl #8
763e: eb00 10c3 add.w r0, r0, r3, lsl #7
7642: 0dc3 lsrs r3, r0, #23
7644: f04f 0000 mov.w r0, #0
7648: f363 0004 bfi r0, r3, #0, #5
LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix)));
764c: fb07 f306 mul.w r3, r7, r6
7650: fb02 3305 mla r3, r2, r5, r3
7654: eb03 2503 add.w r5, r3, r3, lsl #8
7658: eb03 13c5 add.w r3, r3, r5, lsl #7
765c: 0ddb lsrs r3, r3, #23
765e: f363 104a bfi r0, r3, #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)));
7662: fb07 f101 mul.w r1, r7, r1
7666: fb02 1204 mla r2, r2, r4, r1
766a: eb02 2302 add.w r3, r2, r2, lsl #8
766e: eb02 12c3 add.w r2, r2, r3, lsl #7
7672: 0dd2 lsrs r2, r2, #23
7674: f362 20cf bfi r0, r2, #11, #5
return lv_color_mix(fg, bg, opa);
}
7678: bdf0 pop {r4, r5, r6, r7, pc}
if(opa <= LV_OPA_MIN) return bg;
767a: f04f 0000 mov.w r0, #0
767e: f36e 0004 bfi r0, lr, #0, #5
7682: f366 104a bfi r0, r6, #5, #6
7686: f361 20cf bfi r0, r1, #11, #5
768a: bdf0 pop {r4, r5, r6, r7, pc}
if(opa == LV_OPA_COVER) return fg;
768c: f04f 0000 mov.w r0, #0
7690: f363 0004 bfi r0, r3, #0, #5
7694: f365 104a bfi r0, r5, #5, #6
7698: f364 20cf bfi r0, r4, #11, #5
769c: bdf0 pop {r4, r5, r6, r7, pc}
0000769e <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)
{
769e: b5f0 push {r4, r5, r6, r7, lr}
76a0: f001 0e1f and.w lr, r1, #31
76a4: f3c1 1645 ubfx r6, r1, #5, #6
76a8: f3c1 21c4 ubfx r1, r1, #11, #5
if(opa <= LV_OPA_MIN) return bg;
76ac: 2a05 cmp r2, #5
76ae: d93d bls.n 772c <color_blend_true_color_subtractive+0x8e>
int32_t tmp;
tmp = bg.ch.red - fg.ch.red;
76b0: f3c0 24c4 ubfx r4, r0, #11, #5
76b4: 1b0c subs r4, r1, r4
fg.ch.red = LV_MATH_MAX(tmp, 0);
76b6: ea24 74e4 bic.w r4, r4, r4, asr #31
76ba: f004 041f and.w r4, r4, #31
#if LV_COLOR_16_SWAP == 0
tmp = bg.ch.green - fg.ch.green;
76be: f3c0 1345 ubfx r3, r0, #5, #6
76c2: 1af3 subs r3, r6, r3
fg.ch.green = LV_MATH_MAX(tmp, 0);
76c4: ea23 73e3 bic.w r3, r3, r3, asr #31
76c8: f003 053f and.w r5, r3, #63 ; 0x3f
tmp = LV_MATH_MAX(tmp, 0);
fg.ch.green_h = tmp >> 3;
fg.ch.green_l = tmp & 0x7;
#endif
tmp = bg.ch.blue - fg.ch.blue;
76cc: f000 001f and.w r0, r0, #31
76d0: ebae 0000 sub.w r0, lr, r0
fg.ch.blue = LV_MATH_MAX(tmp, 0);
76d4: ea20 70e0 bic.w r0, r0, r0, asr #31
76d8: f000 031f and.w r3, r0, #31
if(opa == LV_OPA_COVER) return fg;
76dc: 2aff cmp r2, #255 ; 0xff
76de: d02e beq.n 773e <color_blend_true_color_subtractive+0xa0>
76e0: f1c2 07ff rsb r7, r2, #255 ; 0xff
LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix)));
76e4: fb07 f00e mul.w r0, r7, lr
76e8: fb02 0003 mla r0, r2, r3, r0
76ec: eb00 2300 add.w r3, r0, r0, lsl #8
76f0: eb00 10c3 add.w r0, r0, r3, lsl #7
76f4: 0dc3 lsrs r3, r0, #23
76f6: f04f 0000 mov.w r0, #0
76fa: f363 0004 bfi r0, r3, #0, #5
LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix)));
76fe: fb07 f306 mul.w r3, r7, r6
7702: fb02 3305 mla r3, r2, r5, r3
7706: eb03 2503 add.w r5, r3, r3, lsl #8
770a: eb03 13c5 add.w r3, r3, r5, lsl #7
770e: 0ddb lsrs r3, r3, #23
7710: f363 104a bfi r0, r3, #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)));
7714: fb07 f101 mul.w r1, r7, r1
7718: fb02 1204 mla r2, r2, r4, r1
771c: eb02 2302 add.w r3, r2, r2, lsl #8
7720: eb02 12c3 add.w r2, r2, r3, lsl #7
7724: 0dd2 lsrs r2, r2, #23
7726: f362 20cf bfi r0, r2, #11, #5
return lv_color_mix(fg, bg, opa);
}
772a: bdf0 pop {r4, r5, r6, r7, pc}
if(opa <= LV_OPA_MIN) return bg;
772c: f04f 0000 mov.w r0, #0
7730: f36e 0004 bfi r0, lr, #0, #5
7734: f366 104a bfi r0, r6, #5, #6
7738: f361 20cf bfi r0, r1, #11, #5
773c: bdf0 pop {r4, r5, r6, r7, pc}
if(opa == LV_OPA_COVER) return fg;
773e: f04f 0000 mov.w r0, #0
7742: f363 0004 bfi r0, r3, #0, #5
7746: f365 104a bfi r0, r5, #5, #6
774a: f364 20cf bfi r0, r4, #11, #5
774e: bdf0 pop {r4, r5, r6, r7, pc}
00007750 <_lv_blend_fill>:
{
7750: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
7754: b093 sub sp, #76 ; 0x4c
7756: f89d 4070 ldrb.w r4, [sp, #112] ; 0x70
775a: f89d b074 ldrb.w fp, [sp, #116] ; 0x74
775e: f89d 9078 ldrb.w r9, [sp, #120] ; 0x78
if(opa < LV_OPA_MIN) return;
7762: f1bb 0f04 cmp.w fp, #4
7766: d900 bls.n 776a <_lv_blend_fill+0x1a>
if(mask_res == LV_DRAW_MASK_RES_TRANSP) return;
7768: b914 cbnz r4, 7770 <_lv_blend_fill+0x20>
}
776a: b013 add sp, #76 ; 0x4c
776c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
7770: 9308 str r3, [sp, #32]
7772: f8ad 2024 strh.w r2, [sp, #36] ; 0x24
7776: 460e mov r6, r1
7778: 4605 mov r5, r0
lv_disp_t * disp = _lv_refr_get_disp_refreshing();
777a: 4bba ldr r3, [pc, #744] ; (7a64 <_lv_blend_fill+0x314>)
777c: 4798 blx r3
777e: 4680 mov r8, r0
lv_disp_buf_t * vdb = lv_disp_get_buf(disp);
7780: 4bb9 ldr r3, [pc, #740] ; (7a68 <_lv_blend_fill+0x318>)
7782: 4798 blx r3
7784: 4607 mov r7, r0
lv_color_t * disp_buf = vdb->buf_act;
7786: 6882 ldr r2, [r0, #8]
7788: 9206 str r2, [sp, #24]
is_common = _lv_area_intersect(&draw_area, clip_area, fill_area);
778a: 4632 mov r2, r6
778c: 4629 mov r1, r5
778e: a810 add r0, sp, #64 ; 0x40
7790: 4bb6 ldr r3, [pc, #728] ; (7a6c <_lv_blend_fill+0x31c>)
7792: 4798 blx r3
if(!is_common) return;
7794: 2800 cmp r0, #0
7796: d0e8 beq.n 776a <_lv_blend_fill+0x1a>
draw_area.x1 -= disp_area->x1;
7798: 8a3a ldrh r2, [r7, #16]
779a: f8bd 3040 ldrh.w r3, [sp, #64] ; 0x40
779e: 1a9b subs r3, r3, r2
77a0: b299 uxth r1, r3
77a2: 460d mov r5, r1
77a4: 910a str r1, [sp, #40] ; 0x28
77a6: b208 sxth r0, r1
77a8: 900b str r0, [sp, #44] ; 0x2c
77aa: f8ad 0040 strh.w r0, [sp, #64] ; 0x40
draw_area.y1 -= disp_area->y1;
77ae: 8a7b ldrh r3, [r7, #18]
77b0: f8bd 1042 ldrh.w r1, [sp, #66] ; 0x42
77b4: 1ac9 subs r1, r1, r3
77b6: fa0f fc81 sxth.w ip, r1
77ba: f8ad c042 strh.w ip, [sp, #66] ; 0x42
draw_area.x2 -= disp_area->x1;
77be: f8bd 0044 ldrh.w r0, [sp, #68] ; 0x44
77c2: 1a80 subs r0, r0, r2
77c4: b280 uxth r0, r0
77c6: f8ad 0044 strh.w r0, [sp, #68] ; 0x44
draw_area.y2 -= disp_area->y1;
77ca: f8bd e046 ldrh.w lr, [sp, #70] ; 0x46
77ce: ebae 0e03 sub.w lr, lr, r3
77d2: fa0f fe8e sxth.w lr, lr
77d6: f8ad e046 strh.w lr, [sp, #70] ; 0x46
if(mask && disp->driver.antialiasing == 0)
77da: 9a08 ldr r2, [sp, #32]
77dc: b1aa cbz r2, 780a <_lv_blend_fill+0xba>
77de: f898 3008 ldrb.w r3, [r8, #8]
77e2: f013 0f01 tst.w r3, #1
77e6: d110 bne.n 780a <_lv_blend_fill+0xba>
* @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);
77e8: 1c41 adds r1, r0, #1
77ea: 1b49 subs r1, r1, r5
77ec: b209 sxth r1, r1
for(i = 0; i < mask_w; i++) mask[i] = mask[i] > 128 ? LV_OPA_COVER : LV_OPA_TRANSP;
77ee: 2900 cmp r1, #0
77f0: dd0b ble.n 780a <_lv_blend_fill+0xba>
77f2: 4613 mov r3, r2
77f4: 4411 add r1, r2
77f6: 781a ldrb r2, [r3, #0]
77f8: 2a80 cmp r2, #128 ; 0x80
77fa: f04f 32ff mov.w r2, #4294967295
77fe: bf98 it ls
7800: 2200 movls r2, #0
7802: f803 2b01 strb.w r2, [r3], #1
7806: 428b cmp r3, r1
7808: d1f5 bne.n 77f6 <_lv_blend_fill+0xa6>
if(disp->driver.set_px_cb) {
780a: f8d8 3014 ldr.w r3, [r8, #20]
780e: 2b00 cmp r3, #0
7810: d077 beq.n 7902 <_lv_blend_fill+0x1b2>
7812: f8bd 8024 ldrh.w r8, [sp, #36] ; 0x24
lv_disp_t * disp = _lv_refr_get_disp_refreshing();
7816: 4b93 ldr r3, [pc, #588] ; (7a64 <_lv_blend_fill+0x314>)
7818: 4798 blx r3
781a: 4605 mov r5, r0
781c: 8abb ldrh r3, [r7, #20]
781e: 3301 adds r3, #1
7820: 8a3a ldrh r2, [r7, #16]
7822: 1a9b subs r3, r3, r2
7824: b21b sxth r3, r3
7826: 9307 str r3, [sp, #28]
if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) {
7828: 2c01 cmp r4, #1
782a: d03e beq.n 78aa <_lv_blend_fill+0x15a>
const lv_opa_t * mask_tmp = mask - draw_area->x1;
782c: f9bd 2040 ldrsh.w r2, [sp, #64] ; 0x40
7830: 9b08 ldr r3, [sp, #32]
7832: 1a9f subs r7, r3, r2
7834: f8bd 3044 ldrh.w r3, [sp, #68] ; 0x44
7838: 3301 adds r3, #1
783a: 1a9b subs r3, r3, r2
783c: b21b sxth r3, r3
783e: 9308 str r3, [sp, #32]
for(y = draw_area->y1; y <= draw_area->y2; y++) {
7840: f9bd a042 ldrsh.w sl, [sp, #66] ; 0x42
7844: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46
7848: 459a cmp sl, r3
784a: dc8e bgt.n 776a <_lv_blend_fill+0x1a>
for(x = draw_area->x1; x <= draw_area->x2; x++) {
784c: f9bd 6040 ldrsh.w r6, [sp, #64] ; 0x40
7850: 4634 mov r4, r6
7852: f9bd 3044 ldrsh.w r3, [sp, #68] ; 0x44
7856: 429e cmp r6, r3
7858: dc1e bgt.n 7898 <_lv_blend_fill+0x148>
785a: 443e add r6, r7
disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color,
785c: fa0f f98a sxth.w r9, sl
7860: 9605 str r6, [sp, #20]
7862: 464b mov r3, r9
7864: 46b9 mov r9, r7
7866: 461f mov r7, r3
(uint32_t)((uint32_t)opa * mask_tmp[x]) >> 8);
7868: 9a05 ldr r2, [sp, #20]
786a: f812 3b01 ldrb.w r3, [r2], #1
786e: 9205 str r2, [sp, #20]
7870: fb03 f30b mul.w r3, r3, fp
disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color,
7874: f3c3 2307 ubfx r3, r3, #8, #8
7878: 9302 str r3, [sp, #8]
787a: f8ad 8004 strh.w r8, [sp, #4]
787e: 9700 str r7, [sp, #0]
7880: b223 sxth r3, r4
7882: 9a07 ldr r2, [sp, #28]
7884: 9906 ldr r1, [sp, #24]
7886: 4628 mov r0, r5
7888: 696e ldr r6, [r5, #20]
788a: 47b0 blx r6
for(x = draw_area->x1; x <= draw_area->x2; x++) {
788c: 3401 adds r4, #1
788e: f9bd 3044 ldrsh.w r3, [sp, #68] ; 0x44
7892: 429c cmp r4, r3
7894: dde8 ble.n 7868 <_lv_blend_fill+0x118>
7896: 464f mov r7, r9
7898: 9b08 ldr r3, [sp, #32]
789a: 441f add r7, r3
for(y = draw_area->y1; y <= draw_area->y2; y++) {
789c: f10a 0a01 add.w sl, sl, #1
78a0: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46
78a4: 459a cmp sl, r3
78a6: ddd1 ble.n 784c <_lv_blend_fill+0xfc>
78a8: e75f b.n 776a <_lv_blend_fill+0x1a>
for(y = draw_area->y1; y <= draw_area->y2; y++) {
78aa: f9bd 9042 ldrsh.w r9, [sp, #66] ; 0x42
78ae: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46
78b2: 4599 cmp r9, r3
78b4: f73f af59 bgt.w 776a <_lv_blend_fill+0x1a>
78b8: f8dd a01c ldr.w sl, [sp, #28]
78bc: 465e mov r6, fp
78be: f8dd b018 ldr.w fp, [sp, #24]
for(x = draw_area->x1; x <= draw_area->x2; x++) {
78c2: f9bd 4040 ldrsh.w r4, [sp, #64] ; 0x40
78c6: f9bd 3044 ldrsh.w r3, [sp, #68] ; 0x44
78ca: 429c cmp r4, r3
78cc: dc12 bgt.n 78f4 <_lv_blend_fill+0x1a4>
disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, opa);
78ce: fa0f f789 sxth.w r7, r9
78d2: 9705 str r7, [sp, #20]
78d4: 9602 str r6, [sp, #8]
78d6: f8ad 8004 strh.w r8, [sp, #4]
78da: 9b05 ldr r3, [sp, #20]
78dc: 9300 str r3, [sp, #0]
78de: b223 sxth r3, r4
78e0: 4652 mov r2, sl
78e2: 4659 mov r1, fp
78e4: 4628 mov r0, r5
78e6: 696f ldr r7, [r5, #20]
78e8: 47b8 blx r7
for(x = draw_area->x1; x <= draw_area->x2; x++) {
78ea: 3401 adds r4, #1
78ec: f9bd 3044 ldrsh.w r3, [sp, #68] ; 0x44
78f0: 429c cmp r4, r3
78f2: ddef ble.n 78d4 <_lv_blend_fill+0x184>
for(y = draw_area->y1; y <= draw_area->y2; y++) {
78f4: f109 0901 add.w r9, r9, #1
78f8: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46
78fc: 4599 cmp r9, r3
78fe: dde0 ble.n 78c2 <_lv_blend_fill+0x172>
7900: e733 b.n 776a <_lv_blend_fill+0x1a>
else if(mode == LV_BLEND_MODE_NORMAL) {
7902: f1b9 0f00 cmp.w r9, #0
7906: f040 83a0 bne.w 804a <_lv_blend_fill+0x8fa>
790a: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24
790e: f8ad 301c strh.w r3, [sp, #28]
lv_disp_t * disp = _lv_refr_get_disp_refreshing();
7912: 4b54 ldr r3, [pc, #336] ; (7a64 <_lv_blend_fill+0x314>)
7914: 4798 blx r3
7916: 4606 mov r6, r0
7918: 8abb ldrh r3, [r7, #20]
791a: 3301 adds r3, #1
791c: 8a3f ldrh r7, [r7, #16]
791e: 1bdf subs r7, r3, r7
7920: b23f sxth r7, r7
7922: f9bd 2040 ldrsh.w r2, [sp, #64] ; 0x40
7926: f8bd 3044 ldrh.w r3, [sp, #68] ; 0x44
792a: 3301 adds r3, #1
792c: 1a9b subs r3, r3, r2
792e: b21b sxth r3, r3
7930: 930b str r3, [sp, #44] ; 0x2c
int32_t draw_area_w = lv_area_get_width(draw_area);
7932: 461d mov r5, r3
* @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);
7934: f9bd 0046 ldrsh.w r0, [sp, #70] ; 0x46
7938: f9bd 3042 ldrsh.w r3, [sp, #66] ; 0x42
793c: 1c41 adds r1, r0, #1
793e: 1ac9 subs r1, r1, r3
int32_t draw_area_h = lv_area_get_height(draw_area);
7940: b209 sxth r1, r1
7942: 910c str r1, [sp, #48] ; 0x30
lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1;
7944: 930a str r3, [sp, #40] ; 0x28
7946: fb03 2207 mla r2, r3, r7, r2
794a: 9906 ldr r1, [sp, #24]
794c: eb01 0142 add.w r1, r1, r2, lsl #1
7950: 9105 str r1, [sp, #20]
if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) {
7952: 2c01 cmp r4, #1
7954: d029 beq.n 79aa <_lv_blend_fill+0x25a>
if(opa > LV_OPA_MAX) {
7956: f1bb 0ffa cmp.w fp, #250 ; 0xfa
795a: f200 8108 bhi.w 7b6e <_lv_blend_fill+0x41e>
for(y = draw_area->y1; y <= draw_area->y2; y++) {
795e: 4283 cmp r3, r0
7960: f73f af03 bgt.w 776a <_lv_blend_fill+0x1a>
last_dest_color.full = disp_buf_first[0].full;
7964: 9b06 ldr r3, [sp, #24]
7966: f833 3012 ldrh.w r3, [r3, r2, lsl #1]
796a: f8bd 6024 ldrh.w r6, [sp, #36] ; 0x24
796e: f3c6 2cc4 ubfx ip, r6, #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)));
7972: f3c6 1245 ubfx r2, r6, #5, #6
7976: 4610 mov r0, r2
LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix)));
7978: f006 021f and.w r2, r6, #31
797c: 4614 mov r4, r2
disp_buf_first += disp_w;
797e: 007a lsls r2, r7, #1
7980: 920c str r2, [sp, #48] ; 0x30
7982: 9a0b ldr r2, [sp, #44] ; 0x2c
7984: 9908 ldr r1, [sp, #32]
7986: 3901 subs r1, #1
7988: 9106 str r1, [sp, #24]
798a: 0052 lsls r2, r2, #1
798c: 920e str r2, [sp, #56] ; 0x38
798e: 4619 mov r1, r3
7990: f04f 0e00 mov.w lr, #0
7994: 4672 mov r2, lr
if(opa_tmp == LV_OPA_COVER) last_res_color = color;
7996: b2b6 uxth r6, r6
7998: 9608 str r6, [sp, #32]
if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa :
799a: f8cd b024 str.w fp, [sp, #36] ; 0x24
799e: 950d str r5, [sp, #52] ; 0x34
79a0: 46a1 mov r9, r4
79a2: f8cd b01c str.w fp, [sp, #28]
79a6: 4683 mov fp, r0
79a8: e345 b.n 8036 <_lv_blend_fill+0x8e6>
if(opa > LV_OPA_MAX) {
79aa: f1bb 0ffa cmp.w fp, #250 ; 0xfa
79ae: d925 bls.n 79fc <_lv_blend_fill+0x2ac>
if(disp->driver.gpu_fill_cb && lv_area_get_size(draw_area) > GPU_SIZE_LIMIT) {
79b0: 6a73 ldr r3, [r6, #36] ; 0x24
79b2: b123 cbz r3, 79be <_lv_blend_fill+0x26e>
79b4: a810 add r0, sp, #64 ; 0x40
79b6: 4b2e ldr r3, [pc, #184] ; (7a70 <_lv_blend_fill+0x320>)
79b8: 4798 blx r3
79ba: 28f0 cmp r0, #240 ; 0xf0
79bc: d813 bhi.n 79e6 <_lv_blend_fill+0x296>
for(y = 0; y < draw_area_h; y++) {
79be: 9b0c ldr r3, [sp, #48] ; 0x30
79c0: 2b00 cmp r3, #0
79c2: f77f aed2 ble.w 776a <_lv_blend_fill+0x1a>
disp_buf_first += disp_w;
79c6: 007f lsls r7, r7, #1
79c8: 2400 movs r4, #0
lv_color_fill(disp_buf_first, color, draw_area_w);
79ca: 4d2a ldr r5, [pc, #168] ; (7a74 <_lv_blend_fill+0x324>)
79cc: f8dd 8030 ldr.w r8, [sp, #48] ; 0x30
79d0: 9e05 ldr r6, [sp, #20]
79d2: 9a0b ldr r2, [sp, #44] ; 0x2c
79d4: f8bd 101c ldrh.w r1, [sp, #28]
79d8: 4630 mov r0, r6
79da: 47a8 blx r5
disp_buf_first += disp_w;
79dc: 443e add r6, r7
for(y = 0; y < draw_area_h; y++) {
79de: 3401 adds r4, #1
79e0: 45a0 cmp r8, r4
79e2: d1f6 bne.n 79d2 <_lv_blend_fill+0x282>
79e4: e6c1 b.n 776a <_lv_blend_fill+0x1a>
disp->driver.gpu_fill_cb(&disp->driver, disp_buf, disp_w, draw_area, color);
79e6: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24
79ea: f8ad 3000 strh.w r3, [sp]
79ee: 6a74 ldr r4, [r6, #36] ; 0x24
79f0: ab10 add r3, sp, #64 ; 0x40
79f2: 463a mov r2, r7
79f4: 9906 ldr r1, [sp, #24]
79f6: 4630 mov r0, r6
79f8: 47a0 blx r4
79fa: e6b6 b.n 776a <_lv_blend_fill+0x1a>
if(disp->driver.gpu_blend_cb && lv_area_get_size(draw_area) > GPU_SIZE_LIMIT) {
79fc: 6a33 ldr r3, [r6, #32]
79fe: 2b00 cmp r3, #0
7a00: d03c beq.n 7a7c <_lv_blend_fill+0x32c>
7a02: a810 add r0, sp, #64 ; 0x40
7a04: 4b1a ldr r3, [pc, #104] ; (7a70 <_lv_blend_fill+0x320>)
7a06: 4798 blx r3
7a08: 28f0 cmp r0, #240 ; 0xf0
7a0a: d937 bls.n 7a7c <_lv_blend_fill+0x32c>
for(x = 0; x < draw_area_w ; x++) blend_buf[x].full = color.full;
7a0c: 990b ldr r1, [sp, #44] ; 0x2c
7a0e: 2900 cmp r1, #0
7a10: dd0c ble.n 7a2c <_lv_blend_fill+0x2dc>
7a12: f8bd 8024 ldrh.w r8, [sp, #36] ; 0x24
7a16: 4a18 ldr r2, [pc, #96] ; (7a78 <_lv_blend_fill+0x328>)
7a18: 1e93 subs r3, r2, #2
7a1a: f101 4100 add.w r1, r1, #2147483648 ; 0x80000000
7a1e: 3901 subs r1, #1
7a20: eb02 0241 add.w r2, r2, r1, lsl #1
7a24: f823 8f02 strh.w r8, [r3, #2]!
7a28: 429a cmp r2, r3
7a2a: d1fb bne.n 7a24 <_lv_blend_fill+0x2d4>
for(y = draw_area->y1; y <= draw_area->y2; y++) {
7a2c: f9bd 5042 ldrsh.w r5, [sp, #66] ; 0x42
7a30: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46
7a34: 429d cmp r5, r3
7a36: f73f ae98 bgt.w 776a <_lv_blend_fill+0x1a>
disp_buf_first += disp_w;
7a3a: ea4f 0847 mov.w r8, r7, lsl #1
disp->driver.gpu_blend_cb(&disp->driver, disp_buf_first, blend_buf, draw_area_w, opa);
7a3e: f8df a038 ldr.w sl, [pc, #56] ; 7a78 <_lv_blend_fill+0x328>
7a42: f8dd 9014 ldr.w r9, [sp, #20]
7a46: 465c mov r4, fp
7a48: 9400 str r4, [sp, #0]
7a4a: 9b0b ldr r3, [sp, #44] ; 0x2c
7a4c: 4652 mov r2, sl
7a4e: 4649 mov r1, r9
7a50: 4630 mov r0, r6
7a52: 6a37 ldr r7, [r6, #32]
7a54: 47b8 blx r7
disp_buf_first += disp_w;
7a56: 44c1 add r9, r8
for(y = draw_area->y1; y <= draw_area->y2; y++) {
7a58: 3501 adds r5, #1
7a5a: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46
7a5e: 429d cmp r5, r3
7a60: ddf2 ble.n 7a48 <_lv_blend_fill+0x2f8>
7a62: e682 b.n 776a <_lv_blend_fill+0x1a>
7a64: 00005f69 .word 0x00005f69
7a68: 00010fdd .word 0x00010fdd
7a6c: 00011519 .word 0x00011519
7a70: 000114fd .word 0x000114fd
7a74: 00011b3b .word 0x00011b3b
7a78: 20002690 .word 0x20002690
lv_color_t last_dest_color = LV_COLOR_BLACK;
7a7c: f04f 0e00 mov.w lr, #0
7a80: f8bd 2024 ldrh.w r2, [sp, #36] ; 0x24
7a84: f002 091f and.w r9, r2, #31
7a88: f3c2 1845 ubfx r8, r2, #5, #6
7a8c: f3c2 2cc4 ubfx ip, r2, #11, #5
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
7a90: fb0b f30c mul.w r3, fp, ip
7a94: eb03 2103 add.w r1, r3, r3, lsl #8
7a98: eb03 13c1 add.w r3, r3, r1, lsl #7
7a9c: f3c3 51c4 ubfx r1, r3, #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)));
7aa0: fb0b f308 mul.w r3, fp, r8
7aa4: eb03 2403 add.w r4, r3, r3, lsl #8
7aa8: eb03 13c4 add.w r3, r3, r4, lsl #7
7aac: f3c3 54c5 ubfx r4, r3, #23, #6
LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix)));
7ab0: fb0b f309 mul.w r3, fp, r9
7ab4: eb03 2203 add.w r2, r3, r3, lsl #8
7ab8: eb03 13c2 add.w r3, r3, r2, lsl #7
7abc: f3c3 52c4 ubfx r2, r3, #23, #5
}
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;
7ac0: fa1f f38b uxth.w r3, fp
7ac4: fb0c fc03 mul.w ip, ip, r3
out[1] = (uint16_t) LV_COLOR_GET_G(c) * mix;
7ac8: fb08 f803 mul.w r8, r8, r3
out[2] = (uint16_t) LV_COLOR_GET_B(c) * mix;
7acc: fb09 f903 mul.w r9, r9, r3
lv_opa_t opa_inv = 255 - opa;
7ad0: ea6f 030b mvn.w r3, fp
7ad4: b2db uxtb r3, r3
for(y = 0; y < draw_area_h; y++) {
7ad6: 980c ldr r0, [sp, #48] ; 0x30
7ad8: 2800 cmp r0, #0
7ada: f77f ae46 ble.w 776a <_lv_blend_fill+0x1a>
disp_buf_first += disp_w;
7ade: 0078 lsls r0, r7, #1
7ae0: 9007 str r0, [sp, #28]
7ae2: 980b ldr r0, [sp, #44] ; 0x2c
7ae4: 0040 lsls r0, r0, #1
7ae6: 9008 str r0, [sp, #32]
7ae8: 2000 movs r0, #0
7aea: 9006 str r0, [sp, #24]
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);
7aec: b29f uxth r7, r3
7aee: e036 b.n 7b5e <_lv_blend_fill+0x40e>
disp_buf_first[x] = last_res_color;
7af0: 7830 ldrb r0, [r6, #0]
7af2: f362 0004 bfi r0, r2, #0, #5
7af6: 7030 strb r0, [r6, #0]
7af8: 8830 ldrh r0, [r6, #0]
7afa: f364 104a bfi r0, r4, #5, #6
7afe: 8030 strh r0, [r6, #0]
7b00: 0a00 lsrs r0, r0, #8
7b02: f361 00c7 bfi r0, r1, #3, #5
7b06: 7070 strb r0, [r6, #1]
7b08: 3302 adds r3, #2
for(x = 0; x < draw_area_w; x++) {
7b0a: 459b cmp fp, r3
7b0c: d01c beq.n 7b48 <_lv_blend_fill+0x3f8>
if(last_dest_color.full != disp_buf_first[x].full) {
7b0e: 461e mov r6, r3
7b10: fa1f f08e uxth.w r0, lr
7b14: f8b3 a000 ldrh.w sl, [r3]
7b18: 4550 cmp r0, sl
7b1a: d0e9 beq.n 7af0 <_lv_blend_fill+0x3a0>
last_dest_color = disp_buf_first[x];
7b1c: f8b3 e000 ldrh.w lr, [r3]
7b20: 7859 ldrb r1, [r3, #1]
7b22: 08c9 lsrs r1, r1, #3
7b24: fb01 c107 mla r1, r1, r7, ip
7b28: f3c1 2104 ubfx r1, r1, #8, #5
LV_COLOR_SET_G(ret, (uint16_t)((uint16_t) premult_c1[1] + LV_COLOR_GET_G(c2) * mix) >> 8);
7b2c: f3ce 1445 ubfx r4, lr, #5, #6
7b30: fb04 8407 mla r4, r4, r7, r8
7b34: f3c4 2405 ubfx r4, r4, #8, #6
LV_COLOR_SET_B(ret, (uint16_t)((uint16_t) premult_c1[2] + LV_COLOR_GET_B(c2) * mix) >> 8);
7b38: 781a ldrb r2, [r3, #0]
7b3a: f002 021f and.w r2, r2, #31
7b3e: fb02 9207 mla r2, r2, r7, r9
7b42: f3c2 2204 ubfx r2, r2, #8, #5
7b46: e7d3 b.n 7af0 <_lv_blend_fill+0x3a0>
disp_buf_first += disp_w;
7b48: 9b05 ldr r3, [sp, #20]
7b4a: 9807 ldr r0, [sp, #28]
7b4c: 4403 add r3, r0
7b4e: 9305 str r3, [sp, #20]
for(y = 0; y < draw_area_h; y++) {
7b50: 9b06 ldr r3, [sp, #24]
7b52: 3301 adds r3, #1
7b54: 9306 str r3, [sp, #24]
7b56: 980c ldr r0, [sp, #48] ; 0x30
7b58: 4298 cmp r0, r3
7b5a: f43f ae06 beq.w 776a <_lv_blend_fill+0x1a>
for(x = 0; x < draw_area_w; x++) {
7b5e: 2d00 cmp r5, #0
7b60: ddf2 ble.n 7b48 <_lv_blend_fill+0x3f8>
7b62: 9805 ldr r0, [sp, #20]
7b64: 4603 mov r3, r0
7b66: 9e08 ldr r6, [sp, #32]
7b68: eb00 0b06 add.w fp, r0, r6
7b6c: e7cf b.n 7b0e <_lv_blend_fill+0x3be>
for(y = 0; y < draw_area_h; y++) {
7b6e: 9b0c ldr r3, [sp, #48] ; 0x30
7b70: 2b00 cmp r3, #0
7b72: f77f adfa ble.w 776a <_lv_blend_fill+0x1a>
int32_t x_end4 = draw_area_w - 4;
7b76: 9b0b ldr r3, [sp, #44] ; 0x2c
7b78: 3b04 subs r3, #4
7b7a: 930d str r3, [sp, #52] ; 0x34
disp_buf_first += disp_w;
7b7c: 007b lsls r3, r7, #1
7b7e: 930f str r3, [sp, #60] ; 0x3c
7b80: 2300 movs r3, #0
7b82: 930a str r3, [sp, #40] ; 0x28
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
7b84: f8bd 201c ldrh.w r2, [sp, #28]
7b88: f3c2 2cc4 ubfx ip, r2, #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)));
7b8c: f3c2 1e45 ubfx lr, r2, #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)));
7b90: f3c2 0304 ubfx r3, r2, #0, #5
7b94: 9306 str r3, [sp, #24]
7b96: e1de b.n 7f56 <_lv_blend_fill+0x806>
FILL_NORMAL_MASK_PX(x, color)
7b98: f8bd 301c ldrh.w r3, [sp, #28]
7b9c: 803b strh r3, [r7, #0]
7b9e: 4643 mov r3, r8
for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) {
7ba0: 3101 adds r1, #1
7ba2: 428d cmp r5, r1
7ba4: f000 834c beq.w 8240 <_lv_blend_fill+0xaf0>
7ba8: 3702 adds r7, #2
7baa: f018 0f03 tst.w r8, #3
7bae: f000 8355 beq.w 825c <_lv_blend_fill+0xb0c>
FILL_NORMAL_MASK_PX(x, color)
7bb2: f818 3b01 ldrb.w r3, [r8], #1
7bb6: 2b00 cmp r3, #0
7bb8: d0f1 beq.n 7b9e <_lv_blend_fill+0x44e>
7bba: 2bff cmp r3, #255 ; 0xff
7bbc: d0ec beq.n 7b98 <_lv_blend_fill+0x448>
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
7bbe: f1c3 09ff rsb r9, r3, #255 ; 0xff
7bc2: 787a ldrb r2, [r7, #1]
7bc4: 08d2 lsrs r2, r2, #3
7bc6: fb09 f202 mul.w r2, r9, r2
7bca: fb03 220c mla r2, r3, ip, r2
7bce: eb02 2002 add.w r0, r2, r2, lsl #8
7bd2: eb02 12c0 add.w r2, r2, r0, lsl #7
7bd6: f3c2 52c4 ubfx r2, r2, #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)));
7bda: 8838 ldrh r0, [r7, #0]
7bdc: f3c0 1045 ubfx r0, r0, #5, #6
7be0: fb09 f000 mul.w r0, r9, r0
7be4: fb03 000e mla r0, r3, lr, r0
7be8: eb00 2600 add.w r6, r0, r0, lsl #8
7bec: eb00 10c6 add.w r0, r0, r6, lsl #7
7bf0: f3c0 50c5 ubfx r0, r0, #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)));
7bf4: 783e ldrb r6, [r7, #0]
7bf6: f006 0a1f and.w sl, r6, #31
7bfa: fb09 f90a mul.w r9, r9, sl
7bfe: fb03 9304 mla r3, r3, r4, r9
7c02: eb03 2903 add.w r9, r3, r3, lsl #8
7c06: eb03 13c9 add.w r3, r3, r9, lsl #7
7c0a: 0ddb lsrs r3, r3, #23
7c0c: f363 0604 bfi r6, r3, #0, #5
7c10: 703e strb r6, [r7, #0]
7c12: 883b ldrh r3, [r7, #0]
7c14: f360 134a bfi r3, r0, #5, #6
7c18: 803b strh r3, [r7, #0]
7c1a: 0a1b lsrs r3, r3, #8
7c1c: f362 03c7 bfi r3, r2, #3, #5
7c20: 707b strb r3, [r7, #1]
7c22: e7bc b.n 7b9e <_lv_blend_fill+0x44e>
disp_buf_first[x] = color;
7c24: f8bd 401c ldrh.w r4, [sp, #28]
7c28: f820 4c06 strh.w r4, [r0, #-6]
disp_buf_first[x + 1] = color;
7c2c: f820 4c04 strh.w r4, [r0, #-4]
disp_buf_first[x + 2] = color;
7c30: f820 4c02 strh.w r4, [r0, #-2]
disp_buf_first[x + 3] = color;
7c34: 8004 strh r4, [r0, #0]
for(; x <= x_end4; x += 4) {
7c36: 3104 adds r1, #4
7c38: 3304 adds r3, #4
7c3a: 3008 adds r0, #8
7c3c: 428f cmp r7, r1
7c3e: f2c0 8129 blt.w 7e94 <_lv_blend_fill+0x744>
7c42: 461a mov r2, r3
if(*mask32) {
7c44: f853 4c04 ldr.w r4, [r3, #-4]
7c48: 2c00 cmp r4, #0
7c4a: d0f4 beq.n 7c36 <_lv_blend_fill+0x4e6>
if((*mask32) == 0xFFFFFFFF) {
7c4c: f1b4 3fff cmp.w r4, #4294967295
7c50: d0e8 beq.n 7c24 <_lv_blend_fill+0x4d4>
FILL_NORMAL_MASK_PX(x, color)
7c52: f813 8c04 ldrb.w r8, [r3, #-4]
7c56: f1b8 0f00 cmp.w r8, #0
7c5a: d03f beq.n 7cdc <_lv_blend_fill+0x58c>
7c5c: f1b8 0fff cmp.w r8, #255 ; 0xff
7c60: f000 8105 beq.w 7e6e <_lv_blend_fill+0x71e>
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
7c64: f1c8 06ff rsb r6, r8, #255 ; 0xff
7c68: f810 4c05 ldrb.w r4, [r0, #-5]
7c6c: 08e4 lsrs r4, r4, #3
7c6e: fb06 f404 mul.w r4, r6, r4
7c72: fb08 440c mla r4, r8, ip, r4
7c76: eb04 2504 add.w r5, r4, r4, lsl #8
7c7a: eb04 14c5 add.w r4, r4, r5, lsl #7
7c7e: f3c4 54c4 ubfx r4, r4, #23, #5
7c82: 9409 str r4, [sp, #36] ; 0x24
LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix)));
7c84: f830 5c06 ldrh.w r5, [r0, #-6]
7c88: f3c5 1545 ubfx r5, r5, #5, #6
7c8c: fb06 f505 mul.w r5, r6, r5
7c90: fb08 550e mla r5, r8, lr, r5
7c94: eb05 2905 add.w r9, r5, r5, lsl #8
7c98: eb05 15c9 add.w r5, r5, r9, lsl #7
7c9c: f3c5 55c5 ubfx r5, r5, #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)));
7ca0: f810 9c06 ldrb.w r9, [r0, #-6]
7ca4: f009 0b1f and.w fp, r9, #31
7ca8: fb06 f60b mul.w r6, r6, fp
7cac: 9c06 ldr r4, [sp, #24]
7cae: fb08 6804 mla r8, r8, r4, r6
7cb2: eb08 2608 add.w r6, r8, r8, lsl #8
7cb6: eb08 16c6 add.w r6, r8, r6, lsl #7
7cba: 0df6 lsrs r6, r6, #23
7cbc: f366 0904 bfi r9, r6, #0, #5
7cc0: f800 9c06 strb.w r9, [r0, #-6]
7cc4: f830 6c06 ldrh.w r6, [r0, #-6]
7cc8: f365 164a bfi r6, r5, #5, #6
7ccc: f820 6c06 strh.w r6, [r0, #-6]
7cd0: 0a36 lsrs r6, r6, #8
7cd2: 9c09 ldr r4, [sp, #36] ; 0x24
7cd4: f364 06c7 bfi r6, r4, #3, #5
7cd8: f800 6c05 strb.w r6, [r0, #-5]
FILL_NORMAL_MASK_PX(x + 1, color)
7cdc: f812 8c03 ldrb.w r8, [r2, #-3]
7ce0: f1b8 0f00 cmp.w r8, #0
7ce4: d03f beq.n 7d66 <_lv_blend_fill+0x616>
7ce6: f1b8 0fff cmp.w r8, #255 ; 0xff
7cea: f000 80c5 beq.w 7e78 <_lv_blend_fill+0x728>
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
7cee: f1c8 06ff rsb r6, r8, #255 ; 0xff
7cf2: f810 4c03 ldrb.w r4, [r0, #-3]
7cf6: 08e4 lsrs r4, r4, #3
7cf8: fb06 f404 mul.w r4, r6, r4
7cfc: fb08 440c mla r4, r8, ip, r4
7d00: eb04 2504 add.w r5, r4, r4, lsl #8
7d04: eb04 14c5 add.w r4, r4, r5, lsl #7
7d08: f3c4 54c4 ubfx r4, r4, #23, #5
7d0c: 9409 str r4, [sp, #36] ; 0x24
LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix)));
7d0e: f830 5c04 ldrh.w r5, [r0, #-4]
7d12: f3c5 1545 ubfx r5, r5, #5, #6
7d16: fb06 f505 mul.w r5, r6, r5
7d1a: fb08 550e mla r5, r8, lr, r5
7d1e: eb05 2905 add.w r9, r5, r5, lsl #8
7d22: eb05 15c9 add.w r5, r5, r9, lsl #7
7d26: f3c5 55c5 ubfx r5, r5, #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)));
7d2a: f810 9c04 ldrb.w r9, [r0, #-4]
7d2e: f009 0b1f and.w fp, r9, #31
7d32: fb06 f60b mul.w r6, r6, fp
7d36: 9c06 ldr r4, [sp, #24]
7d38: fb08 6804 mla r8, r8, r4, r6
7d3c: eb08 2608 add.w r6, r8, r8, lsl #8
7d40: eb08 16c6 add.w r6, r8, r6, lsl #7
7d44: 0df6 lsrs r6, r6, #23
7d46: f366 0904 bfi r9, r6, #0, #5
7d4a: f800 9c04 strb.w r9, [r0, #-4]
7d4e: f830 6c04 ldrh.w r6, [r0, #-4]
7d52: f365 164a bfi r6, r5, #5, #6
7d56: f820 6c04 strh.w r6, [r0, #-4]
7d5a: 0a36 lsrs r6, r6, #8
7d5c: 9c09 ldr r4, [sp, #36] ; 0x24
7d5e: f364 06c7 bfi r6, r4, #3, #5
7d62: f800 6c03 strb.w r6, [r0, #-3]
FILL_NORMAL_MASK_PX(x + 2, color)
7d66: f812 8c02 ldrb.w r8, [r2, #-2]
7d6a: f1b8 0f00 cmp.w r8, #0
7d6e: d03f beq.n 7df0 <_lv_blend_fill+0x6a0>
7d70: f1b8 0fff cmp.w r8, #255 ; 0xff
7d74: f000 8085 beq.w 7e82 <_lv_blend_fill+0x732>
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
7d78: f1c8 06ff rsb r6, r8, #255 ; 0xff
7d7c: f810 4c01 ldrb.w r4, [r0, #-1]
7d80: 08e4 lsrs r4, r4, #3
7d82: fb06 f404 mul.w r4, r6, r4
7d86: fb08 440c mla r4, r8, ip, r4
7d8a: eb04 2504 add.w r5, r4, r4, lsl #8
7d8e: eb04 14c5 add.w r4, r4, r5, lsl #7
7d92: f3c4 54c4 ubfx r4, r4, #23, #5
7d96: 9409 str r4, [sp, #36] ; 0x24
LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix)));
7d98: f830 5c02 ldrh.w r5, [r0, #-2]
7d9c: f3c5 1545 ubfx r5, r5, #5, #6
7da0: fb06 f505 mul.w r5, r6, r5
7da4: fb08 550e mla r5, r8, lr, r5
7da8: eb05 2905 add.w r9, r5, r5, lsl #8
7dac: eb05 15c9 add.w r5, r5, r9, lsl #7
7db0: f3c5 55c5 ubfx r5, r5, #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)));
7db4: f810 9c02 ldrb.w r9, [r0, #-2]
7db8: f009 0b1f and.w fp, r9, #31
7dbc: fb06 f60b mul.w r6, r6, fp
7dc0: 9c06 ldr r4, [sp, #24]
7dc2: fb08 6804 mla r8, r8, r4, r6
7dc6: eb08 2608 add.w r6, r8, r8, lsl #8
7dca: eb08 16c6 add.w r6, r8, r6, lsl #7
7dce: 0df6 lsrs r6, r6, #23
7dd0: f366 0904 bfi r9, r6, #0, #5
7dd4: f800 9c02 strb.w r9, [r0, #-2]
7dd8: f830 6c02 ldrh.w r6, [r0, #-2]
7ddc: f365 164a bfi r6, r5, #5, #6
7de0: f820 6c02 strh.w r6, [r0, #-2]
7de4: 0a36 lsrs r6, r6, #8
7de6: 9c09 ldr r4, [sp, #36] ; 0x24
7de8: f364 06c7 bfi r6, r4, #3, #5
7dec: f800 6c01 strb.w r6, [r0, #-1]
FILL_NORMAL_MASK_PX(x + 3, color)
7df0: f812 8c01 ldrb.w r8, [r2, #-1]
7df4: f1b8 0f00 cmp.w r8, #0
7df8: f43f af1d beq.w 7c36 <_lv_blend_fill+0x4e6>
7dfc: f1b8 0fff cmp.w r8, #255 ; 0xff
7e00: d044 beq.n 7e8c <_lv_blend_fill+0x73c>
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
7e02: f1c8 06ff rsb r6, r8, #255 ; 0xff
7e06: 7844 ldrb r4, [r0, #1]
7e08: 08e4 lsrs r4, r4, #3
7e0a: fb06 f404 mul.w r4, r6, r4
7e0e: fb08 440c mla r4, r8, ip, r4
7e12: eb04 2504 add.w r5, r4, r4, lsl #8
7e16: eb04 14c5 add.w r4, r4, r5, lsl #7
7e1a: f3c4 5bc4 ubfx fp, r4, #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)));
7e1e: 8805 ldrh r5, [r0, #0]
7e20: f3c5 1545 ubfx r5, r5, #5, #6
7e24: fb06 f505 mul.w r5, r6, r5
7e28: fb08 550e mla r5, r8, lr, r5
7e2c: eb05 2905 add.w r9, r5, r5, lsl #8
7e30: eb05 15c9 add.w r5, r5, r9, lsl #7
7e34: f3c5 55c5 ubfx r5, r5, #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)));
7e38: f890 9000 ldrb.w r9, [r0]
7e3c: f009 0a1f and.w sl, r9, #31
7e40: fb06 f60a mul.w r6, r6, sl
7e44: 9c06 ldr r4, [sp, #24]
7e46: fb08 6804 mla r8, r8, r4, r6
7e4a: eb08 2608 add.w r6, r8, r8, lsl #8
7e4e: eb08 16c6 add.w r6, r8, r6, lsl #7
7e52: 0df6 lsrs r6, r6, #23
7e54: f366 0904 bfi r9, r6, #0, #5
7e58: f880 9000 strb.w r9, [r0]
7e5c: 8806 ldrh r6, [r0, #0]
7e5e: f365 164a bfi r6, r5, #5, #6
7e62: 8006 strh r6, [r0, #0]
7e64: 0a36 lsrs r6, r6, #8
7e66: f36b 06c7 bfi r6, fp, #3, #5
7e6a: 7046 strb r6, [r0, #1]
7e6c: e6e3 b.n 7c36 <_lv_blend_fill+0x4e6>
FILL_NORMAL_MASK_PX(x, color)
7e6e: f8bd 401c ldrh.w r4, [sp, #28]
7e72: f820 4c06 strh.w r4, [r0, #-6]
7e76: e731 b.n 7cdc <_lv_blend_fill+0x58c>
FILL_NORMAL_MASK_PX(x + 1, color)
7e78: f8bd 401c ldrh.w r4, [sp, #28]
7e7c: f820 4c04 strh.w r4, [r0, #-4]
7e80: e771 b.n 7d66 <_lv_blend_fill+0x616>
FILL_NORMAL_MASK_PX(x + 2, color)
7e82: f8bd 401c ldrh.w r4, [sp, #28]
7e86: f820 4c02 strh.w r4, [r0, #-2]
7e8a: e7b1 b.n 7df0 <_lv_blend_fill+0x6a0>
FILL_NORMAL_MASK_PX(x + 3, color)
7e8c: f8bd 401c ldrh.w r4, [sp, #28]
7e90: 8004 strh r4, [r0, #0]
7e92: e6d0 b.n 7c36 <_lv_blend_fill+0x4e6>
7e94: 9d0e ldr r5, [sp, #56] ; 0x38
for(; x < draw_area_w ; x++) {
7e96: 428d cmp r5, r1
7e98: dd4e ble.n 7f38 <_lv_blend_fill+0x7e8>
7e9a: 1e54 subs r4, r2, #1
7e9c: 9b05 ldr r3, [sp, #20]
7e9e: eb03 0841 add.w r8, r3, r1, lsl #1
7ea2: 9e06 ldr r6, [sp, #24]
7ea4: e008 b.n 7eb8 <_lv_blend_fill+0x768>
FILL_NORMAL_MASK_PX(x, color)
7ea6: f8bd 301c ldrh.w r3, [sp, #28]
7eaa: f8a8 3000 strh.w r3, [r8]
for(; x < draw_area_w ; x++) {
7eae: 3101 adds r1, #1
7eb0: f108 0802 add.w r8, r8, #2
7eb4: 428d cmp r5, r1
7eb6: dd3f ble.n 7f38 <_lv_blend_fill+0x7e8>
FILL_NORMAL_MASK_PX(x, color)
7eb8: f814 3f01 ldrb.w r3, [r4, #1]!
7ebc: 2b00 cmp r3, #0
7ebe: d0f6 beq.n 7eae <_lv_blend_fill+0x75e>
7ec0: 2bff cmp r3, #255 ; 0xff
7ec2: d0f0 beq.n 7ea6 <_lv_blend_fill+0x756>
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
7ec4: f1c3 09ff rsb r9, r3, #255 ; 0xff
7ec8: f898 2001 ldrb.w r2, [r8, #1]
7ecc: 08d2 lsrs r2, r2, #3
7ece: fb09 f202 mul.w r2, r9, r2
7ed2: fb03 220c mla r2, r3, ip, r2
7ed6: eb02 2002 add.w r0, r2, r2, lsl #8
7eda: eb02 12c0 add.w r2, r2, r0, lsl #7
7ede: f3c2 52c4 ubfx r2, r2, #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)));
7ee2: f8b8 0000 ldrh.w r0, [r8]
7ee6: f3c0 1045 ubfx r0, r0, #5, #6
7eea: fb09 f000 mul.w r0, r9, r0
7eee: fb03 000e mla r0, r3, lr, r0
7ef2: eb00 2700 add.w r7, r0, r0, lsl #8
7ef6: eb00 10c7 add.w r0, r0, r7, lsl #7
7efa: f3c0 50c5 ubfx r0, r0, #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)));
7efe: f898 7000 ldrb.w r7, [r8]
7f02: f007 0a1f and.w sl, r7, #31
7f06: fb09 f90a mul.w r9, r9, sl
7f0a: fb03 9306 mla r3, r3, r6, r9
7f0e: eb03 2903 add.w r9, r3, r3, lsl #8
7f12: eb03 13c9 add.w r3, r3, r9, lsl #7
7f16: 0ddb lsrs r3, r3, #23
7f18: f363 0704 bfi r7, r3, #0, #5
7f1c: f888 7000 strb.w r7, [r8]
7f20: f8b8 3000 ldrh.w r3, [r8]
7f24: f360 134a bfi r3, r0, #5, #6
7f28: f8a8 3000 strh.w r3, [r8]
7f2c: 0a1b lsrs r3, r3, #8
7f2e: f362 03c7 bfi r3, r2, #3, #5
7f32: f888 3001 strb.w r3, [r8, #1]
7f36: e7ba b.n 7eae <_lv_blend_fill+0x75e>
disp_buf_first += disp_w;
7f38: 9b05 ldr r3, [sp, #20]
7f3a: 9a0f ldr r2, [sp, #60] ; 0x3c
7f3c: 4413 add r3, r2
7f3e: 9305 str r3, [sp, #20]
7f40: 9b08 ldr r3, [sp, #32]
7f42: 9a0b ldr r2, [sp, #44] ; 0x2c
7f44: 4413 add r3, r2
7f46: 9308 str r3, [sp, #32]
for(y = 0; y < draw_area_h; y++) {
7f48: 9b0a ldr r3, [sp, #40] ; 0x28
7f4a: 3301 adds r3, #1
7f4c: 930a str r3, [sp, #40] ; 0x28
7f4e: 9a0c ldr r2, [sp, #48] ; 0x30
7f50: 429a cmp r2, r3
7f52: f43f ac0a beq.w 776a <_lv_blend_fill+0x1a>
for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) {
7f56: 2d00 cmp r5, #0
7f58: f340 8170 ble.w 823c <_lv_blend_fill+0xaec>
7f5c: 9a08 ldr r2, [sp, #32]
7f5e: f012 0f03 tst.w r2, #3
7f62: f000 8179 beq.w 8258 <_lv_blend_fill+0xb08>
7f66: 9f05 ldr r7, [sp, #20]
7f68: 4690 mov r8, r2
7f6a: 2100 movs r1, #0
7f6c: 9c06 ldr r4, [sp, #24]
7f6e: e620 b.n 7bb2 <_lv_blend_fill+0x462>
if(*mask_tmp_x != last_mask || last_dest_color.full != disp_buf_first[x].full) {
7f70: 2aff cmp r2, #255 ; 0xff
7f72: d002 beq.n 7f7a <_lv_blend_fill+0x82a>
if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa :
7f74: f8dd e024 ldr.w lr, [sp, #36] ; 0x24
7f78: e004 b.n 7f84 <_lv_blend_fill+0x834>
7f7a: f8dd e024 ldr.w lr, [sp, #36] ; 0x24
if(*mask_tmp_x != last_mask || last_dest_color.full != disp_buf_first[x].full) {
7f7e: 882a ldrh r2, [r5, #0]
7f80: 429a cmp r2, r3
7f82: d032 beq.n 7fea <_lv_blend_fill+0x89a>
if(opa_tmp == LV_OPA_COVER) last_res_color = color;
7f84: f1be 0fff cmp.w lr, #255 ; 0xff
7f88: d042 beq.n 8010 <_lv_blend_fill+0x8c0>
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
7f8a: f1ce 04ff rsb r4, lr, #255 ; 0xff
7f8e: 786b ldrb r3, [r5, #1]
7f90: 08db lsrs r3, r3, #3
7f92: fb0e f20c mul.w r2, lr, ip
7f96: fb04 2303 mla r3, r4, r3, r2
7f9a: eb03 2203 add.w r2, r3, r3, lsl #8
7f9e: eb03 13c2 add.w r3, r3, r2, lsl #7
7fa2: f3c3 53c4 ubfx r3, r3, #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)));
7fa6: 882a ldrh r2, [r5, #0]
7fa8: f3c2 1245 ubfx r2, r2, #5, #6
7fac: fb0b f10e mul.w r1, fp, lr
7fb0: fb04 1202 mla r2, r4, r2, r1
7fb4: eb02 2102 add.w r1, r2, r2, lsl #8
7fb8: eb02 12c1 add.w r2, r2, r1, lsl #7
7fbc: f3c2 52c5 ubfx r2, r2, #23, #6
LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix)));
7fc0: 7829 ldrb r1, [r5, #0]
7fc2: f001 011f and.w r1, r1, #31
7fc6: fb09 f60e mul.w r6, r9, lr
7fca: fb04 6101 mla r1, r4, r1, r6
7fce: eb01 2601 add.w r6, r1, r1, lsl #8
7fd2: eb01 11c6 add.w r1, r1, r6, lsl #7
7fd6: 0dc9 lsrs r1, r1, #23
7fd8: f361 0a04 bfi sl, r1, #0, #5
7fdc: f362 1a4a bfi sl, r2, #5, #6
7fe0: f363 2acf bfi sl, r3, #11, #5
7fe4: fa1f f18a uxth.w r1, sl
last_dest_color.full = disp_buf_first[x].full;
7fe8: 882b ldrh r3, [r5, #0]
disp_buf_first[x] = last_res_color;
7fea: 8029 strh r1, [r5, #0]
7fec: 4602 mov r2, r0
7fee: 3502 adds r5, #2
for(x = 0; x < draw_area_w; x++) {
7ff0: 45a8 cmp r8, r5
7ff2: d00f beq.n 8014 <_lv_blend_fill+0x8c4>
if(*mask_tmp_x) {
7ff4: f817 0f01 ldrb.w r0, [r7, #1]!
7ff8: 2800 cmp r0, #0
7ffa: d0f8 beq.n 7fee <_lv_blend_fill+0x89e>
if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa :
7ffc: 4290 cmp r0, r2
7ffe: d0be beq.n 7f7e <_lv_blend_fill+0x82e>
8000: 28ff cmp r0, #255 ; 0xff
8002: d0b5 beq.n 7f70 <_lv_blend_fill+0x820>
(uint32_t)((uint32_t)(*mask_tmp_x) * opa) >> 8;
8004: 9b07 ldr r3, [sp, #28]
8006: fb03 fe00 mul.w lr, r3, r0
if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa :
800a: f3ce 2e07 ubfx lr, lr, #8, #8
800e: e7b9 b.n 7f84 <_lv_blend_fill+0x834>
if(opa_tmp == LV_OPA_COVER) last_res_color = color;
8010: 9908 ldr r1, [sp, #32]
8012: e7e9 b.n 7fe8 <_lv_blend_fill+0x898>
disp_buf_first += disp_w;
8014: 9805 ldr r0, [sp, #20]
8016: 9c0c ldr r4, [sp, #48] ; 0x30
8018: 4420 add r0, r4
801a: 9005 str r0, [sp, #20]
for(y = draw_area->y1; y <= draw_area->y2; y++) {
801c: 980a ldr r0, [sp, #40] ; 0x28
801e: 3001 adds r0, #1
8020: 4604 mov r4, r0
8022: 900a str r0, [sp, #40] ; 0x28
8024: 9806 ldr r0, [sp, #24]
8026: 9d0b ldr r5, [sp, #44] ; 0x2c
8028: 4428 add r0, r5
802a: 9006 str r0, [sp, #24]
802c: f9bd 0046 ldrsh.w r0, [sp, #70] ; 0x46
8030: 4284 cmp r4, r0
8032: f73f ab9a bgt.w 776a <_lv_blend_fill+0x1a>
for(x = 0; x < draw_area_w; x++) {
8036: 980d ldr r0, [sp, #52] ; 0x34
8038: 2800 cmp r0, #0
803a: ddeb ble.n 8014 <_lv_blend_fill+0x8c4>
803c: 9805 ldr r0, [sp, #20]
803e: 4605 mov r5, r0
8040: 9c0e ldr r4, [sp, #56] ; 0x38
8042: eb00 0804 add.w r8, r0, r4
8046: 9f06 ldr r7, [sp, #24]
8048: e7d4 b.n 7ff4 <_lv_blend_fill+0x8a4>
804a: f8bd 5024 ldrh.w r5, [sp, #36] ; 0x24
switch(mode) {
804e: f1b9 0f01 cmp.w r9, #1
8052: d040 beq.n 80d6 <_lv_blend_fill+0x986>
8054: f1b9 0f02 cmp.w r9, #2
8058: d132 bne.n 80c0 <_lv_blend_fill+0x970>
blend_fp = color_blend_true_color_subtractive;
805a: 4b83 ldr r3, [pc, #524] ; (8268 <_lv_blend_fill+0xb18>)
805c: 9305 str r3, [sp, #20]
805e: f8bd 2024 ldrh.w r2, [sp, #36] ; 0x24
8062: f002 081f and.w r8, r2, #31
8066: f3c2 1645 ubfx r6, r2, #5, #6
806a: f3c2 23c4 ubfx r3, r2, #11, #5
806e: 4699 mov r9, r3
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
8070: 8aba ldrh r2, [r7, #20]
8072: 3201 adds r2, #1
8074: 8a3b ldrh r3, [r7, #16]
8076: 1ad3 subs r3, r2, r3
8078: b21f sxth r7, r3
lv_color_t * disp_buf_tmp = disp_buf + disp_w * draw_area->y1;
807a: f8cd c024 str.w ip, [sp, #36] ; 0x24
807e: fb0c f307 mul.w r3, ip, r7
8082: 9a06 ldr r2, [sp, #24]
8084: eb02 0243 add.w r2, r2, r3, lsl #1
8088: 9207 str r2, [sp, #28]
if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) {
808a: 2c01 cmp r4, #1
808c: d026 beq.n 80dc <_lv_blend_fill+0x98c>
808e: 3001 adds r0, #1
8090: 9a0a ldr r2, [sp, #40] ; 0x28
8092: 1a80 subs r0, r0, r2
8094: b202 sxth r2, r0
8096: 920c str r2, [sp, #48] ; 0x30
const lv_opa_t * mask_tmp = mask - draw_area->x1;
8098: 9a08 ldr r2, [sp, #32]
809a: 990b ldr r1, [sp, #44] ; 0x2c
809c: 1a52 subs r2, r2, r1
809e: 9208 str r2, [sp, #32]
last_dest_color.full = disp_buf_tmp[0].full;
80a0: 9a06 ldr r2, [sp, #24]
80a2: f832 2013 ldrh.w r2, [r2, r3, lsl #1]
for(y = draw_area->y1; y <= draw_area->y2; y++) {
80a6: 45f4 cmp ip, lr
80a8: f73f ab5f bgt.w 776a <_lv_blend_fill+0x1a>
disp_buf_tmp += disp_w;
80ac: 007b lsls r3, r7, #1
80ae: 930b str r3, [sp, #44] ; 0x2c
80b0: 4610 mov r0, r2
80b2: 2100 movs r1, #0
lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : (uint32_t)((uint32_t)mask_tmp[x] * opa) >> 8;
80b4: f8cd b018 str.w fp, [sp, #24]
80b8: f8cd b028 str.w fp, [sp, #40] ; 0x28
80bc: 46cb mov fp, r9
80be: e0b0 b.n 8222 <_lv_blend_fill+0xad2>
LV_LOG_WARN("fill_blended: unsupported blend mode");
80c0: 4b6a ldr r3, [pc, #424] ; (826c <_lv_blend_fill+0xb1c>)
80c2: 9300 str r3, [sp, #0]
80c4: 4b6a ldr r3, [pc, #424] ; (8270 <_lv_blend_fill+0xb20>)
80c6: f44f 7204 mov.w r2, #528 ; 0x210
80ca: 496a ldr r1, [pc, #424] ; (8274 <_lv_blend_fill+0xb24>)
80cc: 2002 movs r0, #2
80ce: 4c6a ldr r4, [pc, #424] ; (8278 <_lv_blend_fill+0xb28>)
80d0: 47a0 blx r4
80d2: f7ff bb4a b.w 776a <_lv_blend_fill+0x1a>
blend_fp = color_blend_true_color_additive;
80d6: 4b69 ldr r3, [pc, #420] ; (827c <_lv_blend_fill+0xb2c>)
80d8: 9305 str r3, [sp, #20]
80da: e7c0 b.n 805e <_lv_blend_fill+0x90e>
lv_color_t last_dest_color = LV_COLOR_BLACK;
80dc: f04f 0a00 mov.w sl, #0
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
80e0: fb0b f309 mul.w r3, fp, r9
80e4: eb03 2003 add.w r0, r3, r3, lsl #8
80e8: eb03 13c0 add.w r3, r3, r0, lsl #7
80ec: f3c3 50c4 ubfx r0, r3, #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)));
80f0: fb0b f306 mul.w r3, fp, r6
80f4: eb03 2203 add.w r2, r3, r3, lsl #8
80f8: eb03 13c2 add.w r3, r3, r2, lsl #7
80fc: f3c3 52c5 ubfx r2, r3, #23, #6
LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix)));
8100: fb0b f308 mul.w r3, fp, r8
8104: eb03 2103 add.w r1, r3, r3, lsl #8
8108: eb03 13c1 add.w r3, r3, r1, lsl #7
810c: f3c3 53c4 ubfx r3, r3, #23, #5
for(y = draw_area->y1; y <= draw_area->y2; y++) {
8110: 45f4 cmp ip, lr
8112: f73f ab2a bgt.w 776a <_lv_blend_fill+0x1a>
disp_buf_tmp += disp_w;
8116: 0079 lsls r1, r7, #1
8118: 9108 str r1, [sp, #32]
811a: f8cd b018 str.w fp, [sp, #24]
811e: 46cb mov fp, r9
8120: e03a b.n 8198 <_lv_blend_fill+0xa48>
disp_buf_tmp[x] = last_res_color;
8122: 7821 ldrb r1, [r4, #0]
8124: f363 0104 bfi r1, r3, #0, #5
8128: 7021 strb r1, [r4, #0]
812a: 8821 ldrh r1, [r4, #0]
812c: f362 114a bfi r1, r2, #5, #6
8130: 8021 strh r1, [r4, #0]
8132: 0a09 lsrs r1, r1, #8
8134: f360 01c7 bfi r1, r0, #3, #5
8138: 7061 strb r1, [r4, #1]
for(x = draw_area->x1; x <= draw_area->x2; x++) {
813a: f109 0901 add.w r9, r9, #1
813e: 3702 adds r7, #2
8140: f9bd 1044 ldrsh.w r1, [sp, #68] ; 0x44
8144: 4589 cmp r9, r1
8146: dc1a bgt.n 817e <_lv_blend_fill+0xa2e>
if(last_dest_color.full != disp_buf_tmp[x].full) {
8148: 463c mov r4, r7
814a: fa1f f18a uxth.w r1, sl
814e: f8b7 e000 ldrh.w lr, [r7]
8152: 4571 cmp r1, lr
8154: d0e5 beq.n 8122 <_lv_blend_fill+0x9d2>
last_dest_color = disp_buf_tmp[x];
8156: f8b7 a000 ldrh.w sl, [r7]
last_res_color = blend_fp(color, disp_buf_tmp[x], opa);
815a: f368 0504 bfi r5, r8, #0, #5
815e: f366 154a bfi r5, r6, #5, #6
8162: f36b 25cf bfi r5, fp, #11, #5
8166: 9a06 ldr r2, [sp, #24]
8168: 4651 mov r1, sl
816a: 4628 mov r0, r5
816c: 9b05 ldr r3, [sp, #20]
816e: 4798 blx r3
8170: f000 031f and.w r3, r0, #31
8174: f3c0 1245 ubfx r2, r0, #5, #6
8178: f3c0 20c4 ubfx r0, r0, #11, #5
817c: e7d1 b.n 8122 <_lv_blend_fill+0x9d2>
disp_buf_tmp += disp_w;
817e: 9907 ldr r1, [sp, #28]
8180: 9c08 ldr r4, [sp, #32]
8182: 4421 add r1, r4
8184: 9107 str r1, [sp, #28]
for(y = draw_area->y1; y <= draw_area->y2; y++) {
8186: 9909 ldr r1, [sp, #36] ; 0x24
8188: 3101 adds r1, #1
818a: 460c mov r4, r1
818c: 9109 str r1, [sp, #36] ; 0x24
818e: f9bd 1046 ldrsh.w r1, [sp, #70] ; 0x46
8192: 428c cmp r4, r1
8194: f73f aae9 bgt.w 776a <_lv_blend_fill+0x1a>
for(x = draw_area->x1; x <= draw_area->x2; x++) {
8198: f9bd 7040 ldrsh.w r7, [sp, #64] ; 0x40
819c: 46b9 mov r9, r7
819e: f9bd 1044 ldrsh.w r1, [sp, #68] ; 0x44
81a2: 428f cmp r7, r1
81a4: dceb bgt.n 817e <_lv_blend_fill+0xa2e>
81a6: 9907 ldr r1, [sp, #28]
81a8: eb01 0747 add.w r7, r1, r7, lsl #1
81ac: e7cc b.n 8148 <_lv_blend_fill+0x9f8>
lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : (uint32_t)((uint32_t)mask_tmp[x] * opa) >> 8;
81ae: 2bf9 cmp r3, #249 ; 0xf9
81b0: bf9d ittte ls
81b2: 9a0a ldrls r2, [sp, #40] ; 0x28
81b4: 4353 mulls r3, r2
81b6: f3c3 2207 ubfxls r2, r3, #8, #8
81ba: 9a06 ldrhi r2, [sp, #24]
last_res_color = blend_fp(color, disp_buf_tmp[x], opa_tmp);
81bc: f368 0504 bfi r5, r8, #0, #5
81c0: f366 154a bfi r5, r6, #5, #6
81c4: f36b 25cf bfi r5, fp, #11, #5
81c8: 8821 ldrh r1, [r4, #0]
81ca: 4628 mov r0, r5
81cc: 9b05 ldr r3, [sp, #20]
81ce: 4798 blx r3
81d0: b280 uxth r0, r0
last_mask = mask_tmp[x];
81d2: f89a 1000 ldrb.w r1, [sl]
last_dest_color.full = disp_buf_tmp[x].full;
81d6: 8822 ldrh r2, [r4, #0]
disp_buf_tmp[x] = last_res_color;
81d8: 8020 strh r0, [r4, #0]
for(x = draw_area->x1; x <= draw_area->x2; x++) {
81da: f109 0901 add.w r9, r9, #1
81de: 3701 adds r7, #1
81e0: 3402 adds r4, #2
81e2: f9bd 3044 ldrsh.w r3, [sp, #68] ; 0x44
81e6: 4599 cmp r9, r3
81e8: dc0a bgt.n 8200 <_lv_blend_fill+0xab0>
81ea: 46ba mov sl, r7
if(mask_tmp[x] == 0) continue;
81ec: 783b ldrb r3, [r7, #0]
81ee: 2b00 cmp r3, #0
81f0: d0f3 beq.n 81da <_lv_blend_fill+0xa8a>
if(mask_tmp[x] != last_mask || last_dest_color.full != disp_buf_tmp[x].full) {
81f2: 428b cmp r3, r1
81f4: d1db bne.n 81ae <_lv_blend_fill+0xa5e>
81f6: f8b4 e000 ldrh.w lr, [r4]
81fa: 4596 cmp lr, r2
81fc: d1d7 bne.n 81ae <_lv_blend_fill+0xa5e>
81fe: e7eb b.n 81d8 <_lv_blend_fill+0xa88>
disp_buf_tmp += disp_w;
8200: 9b07 ldr r3, [sp, #28]
8202: 9c0b ldr r4, [sp, #44] ; 0x2c
8204: 4423 add r3, r4
8206: 9307 str r3, [sp, #28]
8208: 9b08 ldr r3, [sp, #32]
820a: 9c0c ldr r4, [sp, #48] ; 0x30
820c: 4423 add r3, r4
820e: 9308 str r3, [sp, #32]
for(y = draw_area->y1; y <= draw_area->y2; y++) {
8210: 9b09 ldr r3, [sp, #36] ; 0x24
8212: 3301 adds r3, #1
8214: 461c mov r4, r3
8216: 9309 str r3, [sp, #36] ; 0x24
8218: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46
821c: 429c cmp r4, r3
821e: f73f aaa4 bgt.w 776a <_lv_blend_fill+0x1a>
for(x = draw_area->x1; x <= draw_area->x2; x++) {
8222: f9bd 4040 ldrsh.w r4, [sp, #64] ; 0x40
8226: 46a1 mov r9, r4
8228: f9bd 3044 ldrsh.w r3, [sp, #68] ; 0x44
822c: 429c cmp r4, r3
822e: dce7 bgt.n 8200 <_lv_blend_fill+0xab0>
8230: 9b08 ldr r3, [sp, #32]
8232: 191f adds r7, r3, r4
8234: 9b07 ldr r3, [sp, #28]
8236: eb03 0444 add.w r4, r3, r4, lsl #1
823a: e7d6 b.n 81ea <_lv_blend_fill+0xa9a>
for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) {
823c: 9b08 ldr r3, [sp, #32]
823e: 2100 movs r1, #0
for(; x <= x_end4; x += 4) {
8240: 9a0d ldr r2, [sp, #52] ; 0x34
8242: 428a cmp r2, r1
8244: f6ff ae78 blt.w 7f38 <_lv_blend_fill+0x7e8>
8248: 3304 adds r3, #4
824a: 1cc8 adds r0, r1, #3
824c: 9a05 ldr r2, [sp, #20]
824e: eb02 0040 add.w r0, r2, r0, lsl #1
8252: 950e str r5, [sp, #56] ; 0x38
8254: 9f0d ldr r7, [sp, #52] ; 0x34
8256: e4f4 b.n 7c42 <_lv_blend_fill+0x4f2>
for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) {
8258: 9b08 ldr r3, [sp, #32]
825a: 2100 movs r1, #0
for(; x <= x_end4; x += 4) {
825c: 9a0d ldr r2, [sp, #52] ; 0x34
825e: 428a cmp r2, r1
8260: daf2 bge.n 8248 <_lv_blend_fill+0xaf8>
8262: 461a mov r2, r3
8264: e619 b.n 7e9a <_lv_blend_fill+0x74a>
8266: bf00 nop
8268: 0000769f .word 0x0000769f
826c: 00024c90 .word 0x00024c90
8270: 00024c44 .word 0x00024c44
8274: 00024c60 .word 0x00024c60
8278: 0001225d .word 0x0001225d
827c: 000075e9 .word 0x000075e9
00008280 <_lv_blend_map>:
{
8280: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
8284: b091 sub sp, #68 ; 0x44
8286: f89d 4068 ldrb.w r4, [sp, #104] ; 0x68
828a: f89d a06c ldrb.w sl, [sp, #108] ; 0x6c
828e: f89d 5070 ldrb.w r5, [sp, #112] ; 0x70
if(opa < LV_OPA_MIN) return;
8292: f1ba 0f04 cmp.w sl, #4
8296: d900 bls.n 829a <_lv_blend_map+0x1a>
if(mask_res == LV_DRAW_MASK_RES_TRANSP) return;
8298: b914 cbnz r4, 82a0 <_lv_blend_map+0x20>
}
829a: b011 add sp, #68 ; 0x44
829c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
82a0: 9304 str r3, [sp, #16]
82a2: 9207 str r2, [sp, #28]
82a4: 460f mov r7, r1
82a6: 4601 mov r1, r0
is_common = _lv_area_intersect(&draw_area, clip_area, map_area);
82a8: 463a mov r2, r7
82aa: a80e add r0, sp, #56 ; 0x38
82ac: 4bbc ldr r3, [pc, #752] ; (85a0 <_lv_blend_map+0x320>)
82ae: 4798 blx r3
if(!is_common) return;
82b0: 2800 cmp r0, #0
82b2: d0f2 beq.n 829a <_lv_blend_map+0x1a>
lv_disp_t * disp = _lv_refr_get_disp_refreshing();
82b4: 4bbb ldr r3, [pc, #748] ; (85a4 <_lv_blend_map+0x324>)
82b6: 4798 blx r3
82b8: 4680 mov r8, r0
lv_disp_buf_t * vdb = lv_disp_get_buf(disp);
82ba: 4bbb ldr r3, [pc, #748] ; (85a8 <_lv_blend_map+0x328>)
82bc: 4798 blx r3
82be: 4606 mov r6, r0
lv_color_t * disp_buf = vdb->buf_act;
82c0: 6883 ldr r3, [r0, #8]
82c2: 9305 str r3, [sp, #20]
draw_area.x1 -= disp_area->x1;
82c4: 8a02 ldrh r2, [r0, #16]
82c6: f8bd 3038 ldrh.w r3, [sp, #56] ; 0x38
82ca: 1a9b subs r3, r3, r2
82cc: b29b uxth r3, r3
82ce: 9306 str r3, [sp, #24]
82d0: f9bd c018 ldrsh.w ip, [sp, #24]
82d4: f8ad c038 strh.w ip, [sp, #56] ; 0x38
draw_area.y1 -= disp_area->y1;
82d8: 8a43 ldrh r3, [r0, #18]
82da: f8bd b03a ldrh.w fp, [sp, #58] ; 0x3a
82de: ebab 0b03 sub.w fp, fp, r3
82e2: fa1f fb8b uxth.w fp, fp
82e6: fa0f fe8b sxth.w lr, fp
82ea: f8ad e03a strh.w lr, [sp, #58] ; 0x3a
draw_area.x2 -= disp_area->x1;
82ee: f8bd 103c ldrh.w r1, [sp, #60] ; 0x3c
82f2: 1a89 subs r1, r1, r2
82f4: b289 uxth r1, r1
82f6: f8ad 103c strh.w r1, [sp, #60] ; 0x3c
draw_area.y2 -= disp_area->y1;
82fa: f8bd 003e ldrh.w r0, [sp, #62] ; 0x3e
82fe: 1ac0 subs r0, r0, r3
8300: b280 uxth r0, r0
8302: b202 sxth r2, r0
8304: 9208 str r2, [sp, #32]
8306: f8ad 203e strh.w r2, [sp, #62] ; 0x3e
if(mask && disp->driver.antialiasing == 0)
830a: 9a04 ldr r2, [sp, #16]
830c: b1d2 cbz r2, 8344 <_lv_blend_map+0xc4>
830e: f898 3008 ldrb.w r3, [r8, #8]
8312: f013 0f01 tst.w r3, #1
8316: d115 bne.n 8344 <_lv_blend_map+0xc4>
8318: f101 0901 add.w r9, r1, #1
831c: 9b06 ldr r3, [sp, #24]
831e: eba9 0903 sub.w r9, r9, r3
8322: fa0f f989 sxth.w r9, r9
for(i = 0; i < mask_w; i++) mask[i] = mask[i] > 128 ? LV_OPA_COVER : LV_OPA_TRANSP;
8326: f1b9 0f00 cmp.w r9, #0
832a: dd0b ble.n 8344 <_lv_blend_map+0xc4>
832c: 4613 mov r3, r2
832e: 4491 add r9, r2
8330: 781a ldrb r2, [r3, #0]
8332: 2a80 cmp r2, #128 ; 0x80
8334: f04f 32ff mov.w r2, #4294967295
8338: bf98 it ls
833a: 2200 movls r2, #0
833c: f803 2b01 strb.w r2, [r3], #1
8340: 454b cmp r3, r9
8342: d1f5 bne.n 8330 <_lv_blend_map+0xb0>
if(disp->driver.set_px_cb) {
8344: f8d8 3014 ldr.w r3, [r8, #20]
8348: 2b00 cmp r3, #0
834a: f000 80a9 beq.w 84a0 <_lv_blend_map+0x220>
lv_disp_t * disp = _lv_refr_get_disp_refreshing();
834e: 4b95 ldr r3, [pc, #596] ; (85a4 <_lv_blend_map+0x324>)
8350: 4798 blx r3
8352: 4605 mov r5, r0
8354: f9b6 0010 ldrsh.w r0, [r6, #16]
8358: 8ab3 ldrh r3, [r6, #20]
835a: 3301 adds r3, #1
835c: 1a1b subs r3, r3, r0
835e: b21b sxth r3, r3
8360: 9306 str r3, [sp, #24]
8362: f9bd 1038 ldrsh.w r1, [sp, #56] ; 0x38
8366: f9b7 2000 ldrsh.w r2, [r7]
836a: f8b7 9004 ldrh.w r9, [r7, #4]
836e: f109 0901 add.w r9, r9, #1
8372: eba9 0902 sub.w r9, r9, r2
8376: fa0f f989 sxth.w r9, r9
const lv_color_t * map_buf_tmp = map_buf + map_w * (draw_area->y1 - (map_area->y1 - disp_area->y1));
837a: f9bd e03a ldrsh.w lr, [sp, #58] ; 0x3a
837e: f9b7 3002 ldrsh.w r3, [r7, #2]
8382: f9b6 6012 ldrsh.w r6, [r6, #18]
8386: 1b9b subs r3, r3, r6
8388: ebae 0303 sub.w r3, lr, r3
map_buf_tmp += (draw_area->x1 - (map_area->x1 - disp_area->x1));
838c: 1a12 subs r2, r2, r0
838e: 1a8a subs r2, r1, r2
map_buf_tmp -= draw_area->x1;
8390: fb09 2303 mla r3, r9, r3, r2
8394: ea4f 0b41 mov.w fp, r1, lsl #1
8398: ebcb 0b43 rsb fp, fp, r3, lsl #1
839c: 9b07 ldr r3, [sp, #28]
839e: 445b add r3, fp
83a0: 469b mov fp, r3
if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) {
83a2: 2c01 cmp r4, #1
83a4: d046 beq.n 8434 <_lv_blend_map+0x1b4>
const lv_opa_t * mask_tmp = mask - draw_area->x1;
83a6: 9b04 ldr r3, [sp, #16]
83a8: 1a5b subs r3, r3, r1
83aa: 9307 str r3, [sp, #28]
for(y = draw_area->y1; y <= draw_area->y2; y++) {
83ac: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e
83b0: 459e cmp lr, r3
83b2: f73f af72 bgt.w 829a <_lv_blend_map+0x1a>
83b6: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c
map_buf_tmp += map_w;
83ba: ea4f 0249 mov.w r2, r9, lsl #1
83be: 9208 str r2, [sp, #32]
83c0: 3301 adds r3, #1
83c2: 1a59 subs r1, r3, r1
mask_tmp += draw_area_w;
83c4: b20b sxth r3, r1
83c6: 9309 str r3, [sp, #36] ; 0x24
83c8: 46f1 mov r9, lr
for(x = draw_area->x1; x <= draw_area->x2; x++) {
83ca: f9bd 6038 ldrsh.w r6, [sp, #56] ; 0x38
83ce: 4634 mov r4, r6
83d0: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c
83d4: 429e cmp r6, r3
83d6: dc20 bgt.n 841a <_lv_blend_map+0x19a>
83d8: 9b07 ldr r3, [sp, #28]
83da: eb03 0806 add.w r8, r3, r6
83de: eb0b 0646 add.w r6, fp, r6, lsl #1
disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x],
83e2: fa0f f789 sxth.w r7, r9
83e6: 9604 str r6, [sp, #16]
(uint32_t)((uint32_t)opa * mask_tmp[x]) >> 8);
83e8: f818 3b01 ldrb.w r3, [r8], #1
83ec: fb03 f30a mul.w r3, r3, sl
disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x],
83f0: f3c3 2307 ubfx r3, r3, #8, #8
83f4: 9302 str r3, [sp, #8]
83f6: 9a04 ldr r2, [sp, #16]
83f8: f832 3b02 ldrh.w r3, [r2], #2
83fc: 9204 str r2, [sp, #16]
83fe: f8ad 3004 strh.w r3, [sp, #4]
8402: 9700 str r7, [sp, #0]
8404: b223 sxth r3, r4
8406: 9a06 ldr r2, [sp, #24]
8408: 9905 ldr r1, [sp, #20]
840a: 4628 mov r0, r5
840c: 696e ldr r6, [r5, #20]
840e: 47b0 blx r6
for(x = draw_area->x1; x <= draw_area->x2; x++) {
8410: 3401 adds r4, #1
8412: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c
8416: 429c cmp r4, r3
8418: dde6 ble.n 83e8 <_lv_blend_map+0x168>
841a: 9b07 ldr r3, [sp, #28]
841c: 9a09 ldr r2, [sp, #36] ; 0x24
841e: 4413 add r3, r2
8420: 9307 str r3, [sp, #28]
map_buf_tmp += map_w;
8422: 9b08 ldr r3, [sp, #32]
8424: 449b add fp, r3
for(y = draw_area->y1; y <= draw_area->y2; y++) {
8426: f109 0901 add.w r9, r9, #1
842a: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e
842e: 4599 cmp r9, r3
8430: ddcb ble.n 83ca <_lv_blend_map+0x14a>
8432: e732 b.n 829a <_lv_blend_map+0x1a>
for(y = draw_area->y1; y <= draw_area->y2; y++) {
8434: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e
8438: 4573 cmp r3, lr
843a: f6ff af2e blt.w 829a <_lv_blend_map+0x1a>
map_buf_tmp += map_w;
843e: ea4f 0949 mov.w r9, r9, lsl #1
8442: 46f0 mov r8, lr
for(x = draw_area->x1; x <= draw_area->x2; x++) {
8444: f9bd 7038 ldrsh.w r7, [sp, #56] ; 0x38
8448: 463c mov r4, r7
844a: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c
844e: 429f cmp r7, r3
8450: dc1e bgt.n 8490 <_lv_blend_map+0x210>
8452: eb0b 0747 add.w r7, fp, r7, lsl #1
disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], opa);
8456: fa0f f688 sxth.w r6, r8
845a: 9704 str r7, [sp, #16]
845c: 4633 mov r3, r6
845e: 4656 mov r6, sl
8460: 46ca mov sl, r9
8462: 4699 mov r9, r3
8464: 9602 str r6, [sp, #8]
8466: 9a04 ldr r2, [sp, #16]
8468: f832 3b02 ldrh.w r3, [r2], #2
846c: 9204 str r2, [sp, #16]
846e: f8ad 3004 strh.w r3, [sp, #4]
8472: f8cd 9000 str.w r9, [sp]
8476: b223 sxth r3, r4
8478: 9a06 ldr r2, [sp, #24]
847a: 9905 ldr r1, [sp, #20]
847c: 4628 mov r0, r5
847e: 696f ldr r7, [r5, #20]
8480: 47b8 blx r7
for(x = draw_area->x1; x <= draw_area->x2; x++) {
8482: 3401 adds r4, #1
8484: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c
8488: 429c cmp r4, r3
848a: ddeb ble.n 8464 <_lv_blend_map+0x1e4>
848c: 46d1 mov r9, sl
848e: 46b2 mov sl, r6
map_buf_tmp += map_w;
8490: 44cb add fp, r9
for(y = draw_area->y1; y <= draw_area->y2; y++) {
8492: f108 0801 add.w r8, r8, #1
8496: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e
849a: 4598 cmp r8, r3
849c: ddd2 ble.n 8444 <_lv_blend_map+0x1c4>
849e: e6fc b.n 829a <_lv_blend_map+0x1a>
else if(mode == LV_BLEND_MODE_NORMAL) {
84a0: 2d00 cmp r5, #0
84a2: f040 8399 bne.w 8bd8 <_lv_blend_map+0x958>
84a6: f9b6 3010 ldrsh.w r3, [r6, #16]
84aa: f8b6 8014 ldrh.w r8, [r6, #20]
84ae: f108 0801 add.w r8, r8, #1
84b2: eba8 0803 sub.w r8, r8, r3
84b6: fa0f f888 sxth.w r8, r8
84ba: 3101 adds r1, #1
84bc: 9a06 ldr r2, [sp, #24]
84be: 1a89 subs r1, r1, r2
84c0: b20a sxth r2, r1
84c2: 9209 str r2, [sp, #36] ; 0x24
int32_t draw_area_w = lv_area_get_width(draw_area);
84c4: 4615 mov r5, r2
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
84c6: 3001 adds r0, #1
84c8: eba0 0b0b sub.w fp, r0, fp
int32_t draw_area_h = lv_area_get_height(draw_area);
84cc: fa0f f28b sxth.w r2, fp
84d0: 9208 str r2, [sp, #32]
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
84d2: f9b7 1000 ldrsh.w r1, [r7]
84d6: f8b7 9004 ldrh.w r9, [r7, #4]
84da: f109 0901 add.w r9, r9, #1
84de: eba9 0901 sub.w r9, r9, r1
84e2: fa0f f989 sxth.w r9, r9
lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1;
84e6: fb0e c208 mla r2, lr, r8, ip
84ea: 9805 ldr r0, [sp, #20]
84ec: eb00 0242 add.w r2, r0, r2, lsl #1
84f0: 9205 str r2, [sp, #20]
const lv_color_t * map_buf_first = map_buf + map_w * (draw_area->y1 - (map_area->y1 - disp_area->y1));
84f2: f9b7 2002 ldrsh.w r2, [r7, #2]
84f6: f9b6 0012 ldrsh.w r0, [r6, #18]
84fa: 1a12 subs r2, r2, r0
84fc: ebae 0e02 sub.w lr, lr, r2
map_buf_first += (draw_area->x1 - (map_area->x1 - disp_area->x1));
8500: 1acb subs r3, r1, r3
8502: ebac 0303 sub.w r3, ip, r3
8506: fb09 330e mla r3, r9, lr, r3
850a: 9a07 ldr r2, [sp, #28]
850c: eb02 0343 add.w r3, r2, r3, lsl #1
8510: 9306 str r3, [sp, #24]
lv_disp_t * disp = _lv_refr_get_disp_refreshing();
8512: 4b24 ldr r3, [pc, #144] ; (85a4 <_lv_blend_map+0x324>)
8514: 4798 blx r3
8516: 4606 mov r6, r0
if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) {
8518: 2c01 cmp r4, #1
851a: d01b beq.n 8554 <_lv_blend_map+0x2d4>
if(opa > LV_OPA_MAX) {
851c: f1ba 0ffa cmp.w sl, #250 ; 0xfa
8520: f200 80c5 bhi.w 86ae <_lv_blend_map+0x42e>
for(y = 0; y < draw_area_h; y++) {
8524: 9b08 ldr r3, [sp, #32]
8526: 2b00 cmp r3, #0
8528: f77f aeb7 ble.w 829a <_lv_blend_map+0x1a>
disp_buf_first += disp_w;
852c: ea4f 0348 mov.w r3, r8, lsl #1
8530: 930a str r3, [sp, #40] ; 0x28
map_buf_first += map_w;
8532: ea4f 0349 mov.w r3, r9, lsl #1
8536: 930b str r3, [sp, #44] ; 0x2c
8538: 9b09 ldr r3, [sp, #36] ; 0x24
853a: 9a04 ldr r2, [sp, #16]
853c: 3a01 subs r2, #1
853e: 9204 str r2, [sp, #16]
8540: 005b lsls r3, r3, #1
8542: 930d str r3, [sp, #52] ; 0x34
8544: f04f 0b00 mov.w fp, #0
lv_opa_t opa_tmp = mask[x] >= LV_OPA_MAX ? opa : ((opa * mask[x]) >> 8);
8548: f8cd a01c str.w sl, [sp, #28]
854c: 950c str r5, [sp, #48] ; 0x30
854e: f8dd 9018 ldr.w r9, [sp, #24]
8552: e336 b.n 8bc2 <_lv_blend_map+0x942>
if(disp->driver.gpu_blend_cb && (lv_area_get_size(draw_area) > GPU_SIZE_LIMIT)) {
8554: 6a03 ldr r3, [r0, #32]
8556: b35b cbz r3, 85b0 <_lv_blend_map+0x330>
8558: a80e add r0, sp, #56 ; 0x38
855a: 4b14 ldr r3, [pc, #80] ; (85ac <_lv_blend_map+0x32c>)
855c: 4798 blx r3
855e: 28f0 cmp r0, #240 ; 0xf0
8560: d926 bls.n 85b0 <_lv_blend_map+0x330>
for(y = draw_area->y1; y <= draw_area->y2; y++) {
8562: f9bd 503a ldrsh.w r5, [sp, #58] ; 0x3a
8566: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e
856a: 429d cmp r5, r3
856c: f73f ae95 bgt.w 829a <_lv_blend_map+0x1a>
disp_buf_first += disp_w;
8570: ea4f 0848 mov.w r8, r8, lsl #1
map_buf_first += map_w;
8574: ea4f 0949 mov.w r9, r9, lsl #1
8578: f8dd b014 ldr.w fp, [sp, #20]
857c: 9f06 ldr r7, [sp, #24]
disp->driver.gpu_blend_cb(&disp->driver, disp_buf_first, map_buf_first, draw_area_w, opa);
857e: f8cd a000 str.w sl, [sp]
8582: 9b09 ldr r3, [sp, #36] ; 0x24
8584: 463a mov r2, r7
8586: 4659 mov r1, fp
8588: 4630 mov r0, r6
858a: 6a34 ldr r4, [r6, #32]
858c: 47a0 blx r4
disp_buf_first += disp_w;
858e: 44c3 add fp, r8
map_buf_first += map_w;
8590: 444f add r7, r9
for(y = draw_area->y1; y <= draw_area->y2; y++) {
8592: 3501 adds r5, #1
8594: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e
8598: 429d cmp r5, r3
859a: ddf0 ble.n 857e <_lv_blend_map+0x2fe>
859c: e67d b.n 829a <_lv_blend_map+0x1a>
859e: bf00 nop
85a0: 00011519 .word 0x00011519
85a4: 00005f69 .word 0x00005f69
85a8: 00010fdd .word 0x00010fdd
85ac: 000114fd .word 0x000114fd
if(opa > LV_OPA_MAX) {
85b0: f1ba 0ffa cmp.w sl, #250 ; 0xfa
85b4: d810 bhi.n 85d8 <_lv_blend_map+0x358>
for(y = 0; y < draw_area_h; y++) {
85b6: 9b08 ldr r3, [sp, #32]
85b8: 2b00 cmp r3, #0
85ba: f77f ae6e ble.w 829a <_lv_blend_map+0x1a>
disp_buf_first += disp_w;
85be: ea4f 0348 mov.w r3, r8, lsl #1
85c2: 9304 str r3, [sp, #16]
map_buf_first += map_w;
85c4: ea4f 0949 mov.w r9, r9, lsl #1
85c8: 9b09 ldr r3, [sp, #36] ; 0x24
85ca: ea4f 0b43 mov.w fp, r3, lsl #1
85ce: f04f 0800 mov.w r8, #0
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
85d2: f1ca 0eff rsb lr, sl, #255 ; 0xff
85d6: e026 b.n 8626 <_lv_blend_map+0x3a6>
for(y = 0; y < draw_area_h; y++) {
85d8: 9b08 ldr r3, [sp, #32]
85da: 2b00 cmp r3, #0
85dc: f77f ae5d ble.w 829a <_lv_blend_map+0x1a>
_lv_memcpy(disp_buf_first, map_buf_first, draw_area_w * sizeof(lv_color_t));
85e0: 9a09 ldr r2, [sp, #36] ; 0x24
85e2: 0056 lsls r6, r2, #1
disp_buf_first += disp_w;
85e4: ea4f 0848 mov.w r8, r8, lsl #1
map_buf_first += map_w;
85e8: ea4f 0949 mov.w r9, r9, lsl #1
85ec: 2400 movs r4, #0
_lv_memcpy(disp_buf_first, map_buf_first, draw_area_w * sizeof(lv_color_t));
85ee: 4d66 ldr r5, [pc, #408] ; (8788 <_lv_blend_map+0x508>)
85f0: 469b mov fp, r3
85f2: 9f05 ldr r7, [sp, #20]
85f4: f8dd a018 ldr.w sl, [sp, #24]
85f8: 4632 mov r2, r6
85fa: 4651 mov r1, sl
85fc: 4638 mov r0, r7
85fe: 47a8 blx r5
disp_buf_first += disp_w;
8600: 4447 add r7, r8
map_buf_first += map_w;
8602: 44ca add sl, r9
for(y = 0; y < draw_area_h; y++) {
8604: 3401 adds r4, #1
8606: 45a3 cmp fp, r4
8608: d1f6 bne.n 85f8 <_lv_blend_map+0x378>
860a: e646 b.n 829a <_lv_blend_map+0x1a>
disp_buf_first += disp_w;
860c: 9b05 ldr r3, [sp, #20]
860e: 9a04 ldr r2, [sp, #16]
8610: 4413 add r3, r2
8612: 9305 str r3, [sp, #20]
map_buf_first += map_w;
8614: 9b06 ldr r3, [sp, #24]
8616: 444b add r3, r9
8618: 9306 str r3, [sp, #24]
for(y = 0; y < draw_area_h; y++) {
861a: f108 0801 add.w r8, r8, #1
861e: 9b08 ldr r3, [sp, #32]
8620: 4543 cmp r3, r8
8622: f43f ae3a beq.w 829a <_lv_blend_map+0x1a>
for(x = 0; x < draw_area_w; x++) {
8626: 2d00 cmp r5, #0
8628: ddf0 ble.n 860c <_lv_blend_map+0x38c>
862a: 9b06 ldr r3, [sp, #24]
862c: 461f mov r7, r3
862e: 9c05 ldr r4, [sp, #20]
8630: eb03 0c0b add.w ip, r3, fp
8634: 787b ldrb r3, [r7, #1]
8636: 08db lsrs r3, r3, #3
8638: 7862 ldrb r2, [r4, #1]
863a: 08d2 lsrs r2, r2, #3
863c: fb0e f202 mul.w r2, lr, r2
8640: fb0a 2303 mla r3, sl, r3, r2
8644: eb03 2203 add.w r2, r3, r3, lsl #8
8648: eb03 13c2 add.w r3, r3, r2, lsl #7
864c: f3c3 53c4 ubfx r3, r3, #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)));
8650: 883a ldrh r2, [r7, #0]
8652: f3c2 1245 ubfx r2, r2, #5, #6
8656: 8821 ldrh r1, [r4, #0]
8658: f3c1 1145 ubfx r1, r1, #5, #6
865c: fb0e f101 mul.w r1, lr, r1
8660: fb0a 1202 mla r2, sl, r2, r1
8664: eb02 2102 add.w r1, r2, r2, lsl #8
8668: eb02 12c1 add.w r2, r2, r1, lsl #7
866c: f3c2 52c5 ubfx r2, r2, #23, #6
LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix)));
8670: f817 1b02 ldrb.w r1, [r7], #2
8674: f001 011f and.w r1, r1, #31
8678: 7820 ldrb r0, [r4, #0]
867a: f000 061f and.w r6, r0, #31
867e: fb0e f606 mul.w r6, lr, r6
8682: fb0a 6101 mla r1, sl, r1, r6
8686: eb01 2601 add.w r6, r1, r1, lsl #8
868a: eb01 11c6 add.w r1, r1, r6, lsl #7
868e: 0dc9 lsrs r1, r1, #23
disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa);
8690: f361 0004 bfi r0, r1, #0, #5
8694: 7020 strb r0, [r4, #0]
8696: 8821 ldrh r1, [r4, #0]
8698: f362 114a bfi r1, r2, #5, #6
869c: 8021 strh r1, [r4, #0]
869e: 0a09 lsrs r1, r1, #8
86a0: f363 01c7 bfi r1, r3, #3, #5
86a4: 7061 strb r1, [r4, #1]
86a6: 3402 adds r4, #2
for(x = 0; x < draw_area_w; x++) {
86a8: 45bc cmp ip, r7
86aa: d1c3 bne.n 8634 <_lv_blend_map+0x3b4>
86ac: e7ae b.n 860c <_lv_blend_map+0x38c>
int32_t x_end4 = draw_area_w - 4;
86ae: 9b09 ldr r3, [sp, #36] ; 0x24
86b0: 3b04 subs r3, #4
86b2: 930a str r3, [sp, #40] ; 0x28
for(y = 0; y < draw_area_h; y++) {
86b4: 9b08 ldr r3, [sp, #32]
86b6: 2b00 cmp r3, #0
86b8: f77f adef ble.w 829a <_lv_blend_map+0x1a>
disp_buf_first += disp_w;
86bc: ea4f 0348 mov.w r3, r8, lsl #1
86c0: 930c str r3, [sp, #48] ; 0x30
map_buf_first += map_w;
86c2: ea4f 0349 mov.w r3, r9, lsl #1
86c6: 930d str r3, [sp, #52] ; 0x34
86c8: 2300 movs r3, #0
86ca: 9307 str r3, [sp, #28]
86cc: e365 b.n 8d9a <_lv_blend_map+0xb1a>
MAP_NORMAL_MASK_PX(x)
86ce: f8b8 3000 ldrh.w r3, [r8]
86d2: f8ae 3000 strh.w r3, [lr]
86d6: 4663 mov r3, ip
for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) {
86d8: 3101 adds r1, #1
86da: 428d cmp r5, r1
86dc: f000 8347 beq.w 8d6e <_lv_blend_map+0xaee>
86e0: f108 0802 add.w r8, r8, #2
86e4: f10e 0e02 add.w lr, lr, #2
86e8: f01c 0f03 tst.w ip, #3
86ec: f000 832d beq.w 8d4a <_lv_blend_map+0xaca>
MAP_NORMAL_MASK_PX(x)
86f0: f81c 4b01 ldrb.w r4, [ip], #1
86f4: 2c00 cmp r4, #0
86f6: d0ee beq.n 86d6 <_lv_blend_map+0x456>
86f8: 2cff cmp r4, #255 ; 0xff
86fa: d0e8 beq.n 86ce <_lv_blend_map+0x44e>
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
86fc: f1c4 06ff rsb r6, r4, #255 ; 0xff
8700: f898 3001 ldrb.w r3, [r8, #1]
8704: 08db lsrs r3, r3, #3
8706: f89e 2001 ldrb.w r2, [lr, #1]
870a: 08d2 lsrs r2, r2, #3
870c: fb06 f202 mul.w r2, r6, r2
8710: fb04 2303 mla r3, r4, r3, r2
8714: eb03 2203 add.w r2, r3, r3, lsl #8
8718: eb03 13c2 add.w r3, r3, r2, lsl #7
871c: f3c3 53c4 ubfx r3, r3, #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)));
8720: f8b8 0000 ldrh.w r0, [r8]
8724: f3c0 1045 ubfx r0, r0, #5, #6
8728: f8be 2000 ldrh.w r2, [lr]
872c: f3c2 1245 ubfx r2, r2, #5, #6
8730: fb06 f202 mul.w r2, r6, r2
8734: fb04 2000 mla r0, r4, r0, r2
8738: eb00 2200 add.w r2, r0, r0, lsl #8
873c: eb00 10c2 add.w r0, r0, r2, lsl #7
8740: f3c0 50c5 ubfx r0, r0, #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)));
8744: f898 2000 ldrb.w r2, [r8]
8748: f002 021f and.w r2, r2, #31
874c: f89e 7000 ldrb.w r7, [lr]
8750: f007 091f and.w r9, r7, #31
8754: fb06 f609 mul.w r6, r6, r9
8758: fb04 6202 mla r2, r4, r2, r6
875c: eb02 2402 add.w r4, r2, r2, lsl #8
8760: eb02 12c4 add.w r2, r2, r4, lsl #7
8764: 0dd2 lsrs r2, r2, #23
8766: 463c mov r4, r7
8768: f362 0404 bfi r4, r2, #0, #5
876c: f88e 4000 strb.w r4, [lr]
8770: f8be 2000 ldrh.w r2, [lr]
8774: f360 124a bfi r2, r0, #5, #6
8778: f8ae 2000 strh.w r2, [lr]
877c: 0a12 lsrs r2, r2, #8
877e: f363 02c7 bfi r2, r3, #3, #5
8782: f88e 2001 strb.w r2, [lr, #1]
8786: e7a6 b.n 86d6 <_lv_blend_map+0x456>
8788: 00012655 .word 0x00012655
disp_buf_first[x] = map_buf_first[x];
878c: f834 5c06 ldrh.w r5, [r4, #-6]
8790: f820 5c06 strh.w r5, [r0, #-6]
disp_buf_first[x + 1] = map_buf_first[x + 1];
8794: f834 5c04 ldrh.w r5, [r4, #-4]
8798: f820 5c04 strh.w r5, [r0, #-4]
disp_buf_first[x + 2] = map_buf_first[x + 2];
879c: f834 5c02 ldrh.w r5, [r4, #-2]
87a0: f820 5c02 strh.w r5, [r0, #-2]
disp_buf_first[x + 3] = map_buf_first[x + 3];
87a4: 8825 ldrh r5, [r4, #0]
87a6: 8005 strh r5, [r0, #0]
for(; x < x_end4; x += 4) {
87a8: 3104 adds r1, #4
87aa: 3304 adds r3, #4
87ac: 3408 adds r4, #8
87ae: 3008 adds r0, #8
87b0: 458e cmp lr, r1
87b2: f340 8147 ble.w 8a44 <_lv_blend_map+0x7c4>
87b6: 461a mov r2, r3
if(*mask32) {
87b8: f853 5c04 ldr.w r5, [r3, #-4]
87bc: 2d00 cmp r5, #0
87be: d0f3 beq.n 87a8 <_lv_blend_map+0x528>
if((*mask32) == 0xFFFFFFFF) {
87c0: f1b5 3fff cmp.w r5, #4294967295
87c4: d0e2 beq.n 878c <_lv_blend_map+0x50c>
MAP_NORMAL_MASK_PX(x)
87c6: f813 cc04 ldrb.w ip, [r3, #-4]
87ca: f1bc 0f00 cmp.w ip, #0
87ce: d047 beq.n 8860 <_lv_blend_map+0x5e0>
87d0: f1bc 0fff cmp.w ip, #255 ; 0xff
87d4: f000 8124 beq.w 8a20 <_lv_blend_map+0x7a0>
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
87d8: f1cc 09ff rsb r9, ip, #255 ; 0xff
87dc: f814 5c05 ldrb.w r5, [r4, #-5]
87e0: 08ed lsrs r5, r5, #3
87e2: f810 6c05 ldrb.w r6, [r0, #-5]
87e6: 08f6 lsrs r6, r6, #3
87e8: fb09 f606 mul.w r6, r9, r6
87ec: fb0c 6505 mla r5, ip, r5, r6
87f0: eb05 2605 add.w r6, r5, r5, lsl #8
87f4: eb05 15c6 add.w r5, r5, r6, lsl #7
87f8: f3c5 55c4 ubfx r5, r5, #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)));
87fc: f834 6c06 ldrh.w r6, [r4, #-6]
8800: f3c6 1645 ubfx r6, r6, #5, #6
8804: f830 7c06 ldrh.w r7, [r0, #-6]
8808: f3c7 1745 ubfx r7, r7, #5, #6
880c: fb09 f707 mul.w r7, r9, r7
8810: fb0c 7606 mla r6, ip, r6, r7
8814: eb06 2706 add.w r7, r6, r6, lsl #8
8818: eb06 16c7 add.w r6, r6, r7, lsl #7
881c: f3c6 56c5 ubfx r6, r6, #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)));
8820: f814 7c06 ldrb.w r7, [r4, #-6]
8824: f007 071f and.w r7, r7, #31
8828: f810 8c06 ldrb.w r8, [r0, #-6]
882c: f008 0b1f and.w fp, r8, #31
8830: fb09 f90b mul.w r9, r9, fp
8834: fb0c 9707 mla r7, ip, r7, r9
8838: eb07 2c07 add.w ip, r7, r7, lsl #8
883c: eb07 17cc add.w r7, r7, ip, lsl #7
8840: 0dff lsrs r7, r7, #23
8842: f367 0804 bfi r8, r7, #0, #5
8846: f800 8c06 strb.w r8, [r0, #-6]
884a: f830 7c06 ldrh.w r7, [r0, #-6]
884e: f366 174a bfi r7, r6, #5, #6
8852: f820 7c06 strh.w r7, [r0, #-6]
8856: 0a3f lsrs r7, r7, #8
8858: f365 07c7 bfi r7, r5, #3, #5
885c: f800 7c05 strb.w r7, [r0, #-5]
MAP_NORMAL_MASK_PX(x + 1)
8860: f812 cc03 ldrb.w ip, [r2, #-3]
8864: f1bc 0f00 cmp.w ip, #0
8868: d047 beq.n 88fa <_lv_blend_map+0x67a>
886a: f1bc 0fff cmp.w ip, #255 ; 0xff
886e: f000 80dc beq.w 8a2a <_lv_blend_map+0x7aa>
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
8872: f1cc 09ff rsb r9, ip, #255 ; 0xff
8876: f814 5c03 ldrb.w r5, [r4, #-3]
887a: 08ed lsrs r5, r5, #3
887c: f810 6c03 ldrb.w r6, [r0, #-3]
8880: 08f6 lsrs r6, r6, #3
8882: fb09 f606 mul.w r6, r9, r6
8886: fb0c 6505 mla r5, ip, r5, r6
888a: eb05 2605 add.w r6, r5, r5, lsl #8
888e: eb05 15c6 add.w r5, r5, r6, lsl #7
8892: f3c5 55c4 ubfx r5, r5, #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)));
8896: f834 6c04 ldrh.w r6, [r4, #-4]
889a: f3c6 1645 ubfx r6, r6, #5, #6
889e: f830 7c04 ldrh.w r7, [r0, #-4]
88a2: f3c7 1745 ubfx r7, r7, #5, #6
88a6: fb09 f707 mul.w r7, r9, r7
88aa: fb0c 7606 mla r6, ip, r6, r7
88ae: eb06 2706 add.w r7, r6, r6, lsl #8
88b2: eb06 16c7 add.w r6, r6, r7, lsl #7
88b6: f3c6 56c5 ubfx r6, r6, #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)));
88ba: f814 7c04 ldrb.w r7, [r4, #-4]
88be: f007 071f and.w r7, r7, #31
88c2: f810 8c04 ldrb.w r8, [r0, #-4]
88c6: f008 0b1f and.w fp, r8, #31
88ca: fb09 f90b mul.w r9, r9, fp
88ce: fb0c 9707 mla r7, ip, r7, r9
88d2: eb07 2c07 add.w ip, r7, r7, lsl #8
88d6: eb07 17cc add.w r7, r7, ip, lsl #7
88da: 0dff lsrs r7, r7, #23
88dc: f367 0804 bfi r8, r7, #0, #5
88e0: f800 8c04 strb.w r8, [r0, #-4]
88e4: f830 7c04 ldrh.w r7, [r0, #-4]
88e8: f366 174a bfi r7, r6, #5, #6
88ec: f820 7c04 strh.w r7, [r0, #-4]
88f0: 0a3f lsrs r7, r7, #8
88f2: f365 07c7 bfi r7, r5, #3, #5
88f6: f800 7c03 strb.w r7, [r0, #-3]
MAP_NORMAL_MASK_PX(x + 2)
88fa: f812 cc02 ldrb.w ip, [r2, #-2]
88fe: f1bc 0f00 cmp.w ip, #0
8902: d047 beq.n 8994 <_lv_blend_map+0x714>
8904: f1bc 0fff cmp.w ip, #255 ; 0xff
8908: f000 8094 beq.w 8a34 <_lv_blend_map+0x7b4>
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
890c: f1cc 09ff rsb r9, ip, #255 ; 0xff
8910: f814 5c01 ldrb.w r5, [r4, #-1]
8914: 08ed lsrs r5, r5, #3
8916: f810 6c01 ldrb.w r6, [r0, #-1]
891a: 08f6 lsrs r6, r6, #3
891c: fb09 f606 mul.w r6, r9, r6
8920: fb0c 6505 mla r5, ip, r5, r6
8924: eb05 2605 add.w r6, r5, r5, lsl #8
8928: eb05 15c6 add.w r5, r5, r6, lsl #7
892c: f3c5 55c4 ubfx r5, r5, #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)));
8930: f834 6c02 ldrh.w r6, [r4, #-2]
8934: f3c6 1645 ubfx r6, r6, #5, #6
8938: f830 7c02 ldrh.w r7, [r0, #-2]
893c: f3c7 1745 ubfx r7, r7, #5, #6
8940: fb09 f707 mul.w r7, r9, r7
8944: fb0c 7606 mla r6, ip, r6, r7
8948: eb06 2706 add.w r7, r6, r6, lsl #8
894c: eb06 16c7 add.w r6, r6, r7, lsl #7
8950: f3c6 56c5 ubfx r6, r6, #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)));
8954: f814 7c02 ldrb.w r7, [r4, #-2]
8958: f007 071f and.w r7, r7, #31
895c: f810 8c02 ldrb.w r8, [r0, #-2]
8960: f008 0b1f and.w fp, r8, #31
8964: fb09 f90b mul.w r9, r9, fp
8968: fb0c 9707 mla r7, ip, r7, r9
896c: eb07 2c07 add.w ip, r7, r7, lsl #8
8970: eb07 17cc add.w r7, r7, ip, lsl #7
8974: 0dff lsrs r7, r7, #23
8976: f367 0804 bfi r8, r7, #0, #5
897a: f800 8c02 strb.w r8, [r0, #-2]
897e: f830 7c02 ldrh.w r7, [r0, #-2]
8982: f366 174a bfi r7, r6, #5, #6
8986: f820 7c02 strh.w r7, [r0, #-2]
898a: 0a3f lsrs r7, r7, #8
898c: f365 07c7 bfi r7, r5, #3, #5
8990: f800 7c01 strb.w r7, [r0, #-1]
MAP_NORMAL_MASK_PX(x + 3)
8994: f812 8c01 ldrb.w r8, [r2, #-1]
8998: f1b8 0f00 cmp.w r8, #0
899c: f43f af04 beq.w 87a8 <_lv_blend_map+0x528>
89a0: f1b8 0fff cmp.w r8, #255 ; 0xff
89a4: d04b beq.n 8a3e <_lv_blend_map+0x7be>
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
89a6: f1c8 09ff rsb r9, r8, #255 ; 0xff
89aa: 7865 ldrb r5, [r4, #1]
89ac: 08ed lsrs r5, r5, #3
89ae: 7846 ldrb r6, [r0, #1]
89b0: 08f6 lsrs r6, r6, #3
89b2: fb09 f606 mul.w r6, r9, r6
89b6: fb08 6505 mla r5, r8, r5, r6
89ba: eb05 2605 add.w r6, r5, r5, lsl #8
89be: eb05 15c6 add.w r5, r5, r6, lsl #7
89c2: f3c5 55c4 ubfx r5, r5, #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)));
89c6: 8826 ldrh r6, [r4, #0]
89c8: f3c6 1645 ubfx r6, r6, #5, #6
89cc: 8807 ldrh r7, [r0, #0]
89ce: f3c7 1745 ubfx r7, r7, #5, #6
89d2: fb09 f707 mul.w r7, r9, r7
89d6: fb08 7606 mla r6, r8, r6, r7
89da: eb06 2706 add.w r7, r6, r6, lsl #8
89de: eb06 16c7 add.w r6, r6, r7, lsl #7
89e2: f3c6 56c5 ubfx r6, r6, #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)));
89e6: 7827 ldrb r7, [r4, #0]
89e8: f007 071f and.w r7, r7, #31
89ec: f890 c000 ldrb.w ip, [r0]
89f0: f00c 0a1f and.w sl, ip, #31
89f4: fb09 f90a mul.w r9, r9, sl
89f8: fb08 9707 mla r7, r8, r7, r9
89fc: eb07 2807 add.w r8, r7, r7, lsl #8
8a00: eb07 17c8 add.w r7, r7, r8, lsl #7
8a04: 0dff lsrs r7, r7, #23
8a06: f367 0c04 bfi ip, r7, #0, #5
8a0a: f880 c000 strb.w ip, [r0]
8a0e: 8807 ldrh r7, [r0, #0]
8a10: f366 174a bfi r7, r6, #5, #6
8a14: 8007 strh r7, [r0, #0]
8a16: 0a3f lsrs r7, r7, #8
8a18: f365 07c7 bfi r7, r5, #3, #5
8a1c: 7047 strb r7, [r0, #1]
8a1e: e6c3 b.n 87a8 <_lv_blend_map+0x528>
MAP_NORMAL_MASK_PX(x)
8a20: f834 5c06 ldrh.w r5, [r4, #-6]
8a24: f820 5c06 strh.w r5, [r0, #-6]
8a28: e71a b.n 8860 <_lv_blend_map+0x5e0>
MAP_NORMAL_MASK_PX(x + 1)
8a2a: f834 5c04 ldrh.w r5, [r4, #-4]
8a2e: f820 5c04 strh.w r5, [r0, #-4]
8a32: e762 b.n 88fa <_lv_blend_map+0x67a>
MAP_NORMAL_MASK_PX(x + 2)
8a34: f834 5c02 ldrh.w r5, [r4, #-2]
8a38: f820 5c02 strh.w r5, [r0, #-2]
8a3c: e7aa b.n 8994 <_lv_blend_map+0x714>
MAP_NORMAL_MASK_PX(x + 3)
8a3e: 8825 ldrh r5, [r4, #0]
8a40: 8005 strh r5, [r0, #0]
8a42: e6b1 b.n 87a8 <_lv_blend_map+0x528>
8a44: 9d0b ldr r5, [sp, #44] ; 0x2c
for(; x < draw_area_w ; x++) {
8a46: 428d cmp r5, r1
8a48: f340 8194 ble.w 8d74 <_lv_blend_map+0xaf4>
8a4c: 1e56 subs r6, r2, #1
8a4e: ea4f 0c41 mov.w ip, r1, lsl #1
8a52: 9b06 ldr r3, [sp, #24]
8a54: eb03 080c add.w r8, r3, ip
8a58: 9b05 ldr r3, [sp, #20]
8a5a: 449c add ip, r3
8a5c: e00b b.n 8a76 <_lv_blend_map+0x7f6>
MAP_NORMAL_MASK_PX(x)
8a5e: f8b8 3000 ldrh.w r3, [r8]
8a62: f8ac 3000 strh.w r3, [ip]
for(; x < draw_area_w ; x++) {
8a66: 3101 adds r1, #1
8a68: f108 0802 add.w r8, r8, #2
8a6c: f10c 0c02 add.w ip, ip, #2
8a70: 428d cmp r5, r1
8a72: f340 817f ble.w 8d74 <_lv_blend_map+0xaf4>
MAP_NORMAL_MASK_PX(x)
8a76: f816 4f01 ldrb.w r4, [r6, #1]!
8a7a: 2c00 cmp r4, #0
8a7c: d0f3 beq.n 8a66 <_lv_blend_map+0x7e6>
8a7e: 2cff cmp r4, #255 ; 0xff
8a80: d0ed beq.n 8a5e <_lv_blend_map+0x7de>
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
8a82: f1c4 07ff rsb r7, r4, #255 ; 0xff
8a86: f898 3001 ldrb.w r3, [r8, #1]
8a8a: 08db lsrs r3, r3, #3
8a8c: f89c 2001 ldrb.w r2, [ip, #1]
8a90: 08d2 lsrs r2, r2, #3
8a92: fb07 f202 mul.w r2, r7, r2
8a96: fb04 2303 mla r3, r4, r3, r2
8a9a: eb03 2203 add.w r2, r3, r3, lsl #8
8a9e: eb03 13c2 add.w r3, r3, r2, lsl #7
8aa2: f3c3 53c4 ubfx r3, r3, #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)));
8aa6: f8b8 0000 ldrh.w r0, [r8]
8aaa: f3c0 1045 ubfx r0, r0, #5, #6
8aae: f8bc 2000 ldrh.w r2, [ip]
8ab2: f3c2 1245 ubfx r2, r2, #5, #6
8ab6: fb07 f202 mul.w r2, r7, r2
8aba: fb04 2000 mla r0, r4, r0, r2
8abe: eb00 2200 add.w r2, r0, r0, lsl #8
8ac2: eb00 10c2 add.w r0, r0, r2, lsl #7
8ac6: f3c0 50c5 ubfx r0, r0, #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)));
8aca: f898 2000 ldrb.w r2, [r8]
8ace: f002 021f and.w r2, r2, #31
8ad2: f89c e000 ldrb.w lr, [ip]
8ad6: f00e 091f and.w r9, lr, #31
8ada: fb07 f709 mul.w r7, r7, r9
8ade: fb04 7202 mla r2, r4, r2, r7
8ae2: eb02 2402 add.w r4, r2, r2, lsl #8
8ae6: eb02 12c4 add.w r2, r2, r4, lsl #7
8aea: 0dd2 lsrs r2, r2, #23
8aec: 4674 mov r4, lr
8aee: f362 0404 bfi r4, r2, #0, #5
8af2: f88c 4000 strb.w r4, [ip]
8af6: f8bc 2000 ldrh.w r2, [ip]
8afa: f360 124a bfi r2, r0, #5, #6
8afe: f8ac 2000 strh.w r2, [ip]
8b02: 0a12 lsrs r2, r2, #8
8b04: f363 02c7 bfi r2, r3, #3, #5
8b08: f88c 2001 strb.w r2, [ip, #1]
8b0c: e7ab b.n 8a66 <_lv_blend_map+0x7e6>
8b0e: 3702 adds r7, #2
8b10: 3602 adds r6, #2
for(x = 0; x < draw_area_w; x++) {
8b12: 4547 cmp r7, r8
8b14: d045 beq.n 8ba2 <_lv_blend_map+0x922>
if(mask[x]) {
8b16: f81c 1f01 ldrb.w r1, [ip, #1]!
8b1a: 2900 cmp r1, #0
8b1c: d0f7 beq.n 8b0e <_lv_blend_map+0x88e>
lv_opa_t opa_tmp = mask[x] >= LV_OPA_MAX ? opa : ((opa * mask[x]) >> 8);
8b1e: 29f9 cmp r1, #249 ; 0xf9
8b20: bf9a itte ls
8b22: fb01 f10a mulls.w r1, r1, sl
8b26: f3c1 2407 ubfxls r4, r1, #8, #8
8b2a: 9c07 ldrhi r4, [sp, #28]
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
8b2c: f1c4 05ff rsb r5, r4, #255 ; 0xff
8b30: 787b ldrb r3, [r7, #1]
8b32: 08db lsrs r3, r3, #3
8b34: 7872 ldrb r2, [r6, #1]
8b36: 08d2 lsrs r2, r2, #3
8b38: fb05 f202 mul.w r2, r5, r2
8b3c: fb04 2303 mla r3, r4, r3, r2
8b40: eb03 2203 add.w r2, r3, r3, lsl #8
8b44: eb03 13c2 add.w r3, r3, r2, lsl #7
8b48: f3c3 53c4 ubfx r3, r3, #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)));
8b4c: 883a ldrh r2, [r7, #0]
8b4e: f3c2 1245 ubfx r2, r2, #5, #6
8b52: 8831 ldrh r1, [r6, #0]
8b54: f3c1 1145 ubfx r1, r1, #5, #6
8b58: fb05 f101 mul.w r1, r5, r1
8b5c: fb04 1202 mla r2, r4, r2, r1
8b60: eb02 2102 add.w r1, r2, r2, lsl #8
8b64: eb02 12c1 add.w r2, r2, r1, lsl #7
8b68: f3c2 52c5 ubfx r2, r2, #23, #6
LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix)));
8b6c: 7839 ldrb r1, [r7, #0]
8b6e: f001 011f and.w r1, r1, #31
8b72: 7830 ldrb r0, [r6, #0]
8b74: f000 0e1f and.w lr, r0, #31
8b78: fb05 f50e mul.w r5, r5, lr
8b7c: fb04 5101 mla r1, r4, r1, r5
8b80: eb01 2401 add.w r4, r1, r1, lsl #8
8b84: eb01 11c4 add.w r1, r1, r4, lsl #7
8b88: 0dc9 lsrs r1, r1, #23
disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa_tmp);
8b8a: f361 0004 bfi r0, r1, #0, #5
8b8e: 7030 strb r0, [r6, #0]
8b90: 8831 ldrh r1, [r6, #0]
8b92: f362 114a bfi r1, r2, #5, #6
8b96: 8031 strh r1, [r6, #0]
8b98: 0a09 lsrs r1, r1, #8
8b9a: f363 01c7 bfi r1, r3, #3, #5
8b9e: 7071 strb r1, [r6, #1]
8ba0: e7b5 b.n 8b0e <_lv_blend_map+0x88e>
disp_buf_first += disp_w;
8ba2: 9b05 ldr r3, [sp, #20]
8ba4: 9a0a ldr r2, [sp, #40] ; 0x28
8ba6: 4413 add r3, r2
8ba8: 9305 str r3, [sp, #20]
map_buf_first += map_w;
8baa: 9b0b ldr r3, [sp, #44] ; 0x2c
8bac: 4499 add r9, r3
for(y = 0; y < draw_area_h; y++) {
8bae: f10b 0b01 add.w fp, fp, #1
8bb2: 9b04 ldr r3, [sp, #16]
8bb4: 9a09 ldr r2, [sp, #36] ; 0x24
8bb6: 4413 add r3, r2
8bb8: 9304 str r3, [sp, #16]
8bba: 9b08 ldr r3, [sp, #32]
8bbc: 455b cmp r3, fp
8bbe: f43f ab6c beq.w 829a <_lv_blend_map+0x1a>
for(x = 0; x < draw_area_w; x++) {
8bc2: 9b0c ldr r3, [sp, #48] ; 0x30
8bc4: 2b00 cmp r3, #0
8bc6: ddec ble.n 8ba2 <_lv_blend_map+0x922>
8bc8: 464f mov r7, r9
8bca: 9e05 ldr r6, [sp, #20]
8bcc: 9b0d ldr r3, [sp, #52] ; 0x34
8bce: eb09 0803 add.w r8, r9, r3
8bd2: f8dd c010 ldr.w ip, [sp, #16]
8bd6: e79e b.n 8b16 <_lv_blend_map+0x896>
switch(mode) {
8bd8: 2d01 cmp r5, #1
8bda: d049 beq.n 8c70 <_lv_blend_map+0x9f0>
8bdc: 2d02 cmp r5, #2
8bde: d13c bne.n 8c5a <_lv_blend_map+0x9da>
blend_fp = color_blend_true_color_subtractive;
8be0: f8df 81e0 ldr.w r8, [pc, #480] ; 8dc4 <_lv_blend_map+0xb44>
8be4: f9b6 3010 ldrsh.w r3, [r6, #16]
8be8: 9309 str r3, [sp, #36] ; 0x24
8bea: 8ab0 ldrh r0, [r6, #20]
8bec: 3001 adds r0, #1
8bee: 1ac0 subs r0, r0, r3
8bf0: b200 sxth r0, r0
8bf2: f9b7 2000 ldrsh.w r2, [r7]
8bf6: 88bb ldrh r3, [r7, #4]
8bf8: 3301 adds r3, #1
8bfa: 1a9b subs r3, r3, r2
8bfc: b21d sxth r5, r3
lv_color_t * disp_buf_tmp = disp_buf + disp_w * draw_area->y1;
8bfe: 46f1 mov r9, lr
8c00: fb0e fb00 mul.w fp, lr, r0
8c04: 9b05 ldr r3, [sp, #20]
8c06: eb03 0b4b add.w fp, r3, fp, lsl #1
const lv_color_t * map_buf_tmp = map_buf + map_w * (draw_area->y1 - (map_area->y1 - disp_area->y1));
8c0a: f9b7 3002 ldrsh.w r3, [r7, #2]
8c0e: f9b6 6012 ldrsh.w r6, [r6, #18]
8c12: 1b9f subs r7, r3, r6
8c14: ebae 0707 sub.w r7, lr, r7
8c18: fb05 f707 mul.w r7, r5, r7
8c1c: 9b07 ldr r3, [sp, #28]
8c1e: eb03 0747 add.w r7, r3, r7, lsl #1
if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) {
8c22: 2c01 cmp r4, #1
8c24: d027 beq.n 8c76 <_lv_blend_map+0x9f6>
const lv_opa_t * mask_tmp = mask - draw_area->x1;
8c26: 9b04 ldr r3, [sp, #16]
8c28: eba3 030c sub.w r3, r3, ip
8c2c: 461a mov r2, r3
map_buf_tmp -= draw_area->x1;
8c2e: eba7 034c sub.w r3, r7, ip, lsl #1
8c32: 9304 str r3, [sp, #16]
for(y = draw_area->y1; y <= draw_area->y2; y++) {
8c34: 9b08 ldr r3, [sp, #32]
8c36: 459e cmp lr, r3
8c38: f73f ab2f bgt.w 829a <_lv_blend_map+0x1a>
disp_buf_tmp += disp_w;
8c3c: 0043 lsls r3, r0, #1
8c3e: 9307 str r3, [sp, #28]
map_buf_tmp += map_w;
8c40: 006b lsls r3, r5, #1
8c42: 9308 str r3, [sp, #32]
lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : ((opa * mask_tmp[x]) >> 8);
8c44: f8cd a014 str.w sl, [sp, #20]
8c48: 1c4b adds r3, r1, #1
8c4a: 9906 ldr r1, [sp, #24]
8c4c: 1a5b subs r3, r3, r1
mask_tmp += draw_area_w;
8c4e: b21b sxth r3, r3
8c50: 9309 str r3, [sp, #36] ; 0x24
8c52: f8cd a018 str.w sl, [sp, #24]
8c56: 4692 mov sl, r2
8c58: e066 b.n 8d28 <_lv_blend_map+0xaa8>
LV_LOG_WARN("fill_blended: unsupported blend mode");
8c5a: 4b56 ldr r3, [pc, #344] ; (8db4 <_lv_blend_map+0xb34>)
8c5c: 9300 str r3, [sp, #0]
8c5e: 4b56 ldr r3, [pc, #344] ; (8db8 <_lv_blend_map+0xb38>)
8c60: f240 3253 movw r2, #851 ; 0x353
8c64: 4955 ldr r1, [pc, #340] ; (8dbc <_lv_blend_map+0xb3c>)
8c66: 2002 movs r0, #2
8c68: 4c55 ldr r4, [pc, #340] ; (8dc0 <_lv_blend_map+0xb40>)
8c6a: 47a0 blx r4
8c6c: f7ff bb15 b.w 829a <_lv_blend_map+0x1a>
blend_fp = color_blend_true_color_additive;
8c70: f8df 8154 ldr.w r8, [pc, #340] ; 8dc8 <_lv_blend_map+0xb48>
8c74: e7b6 b.n 8be4 <_lv_blend_map+0x964>
map_buf_tmp -= draw_area->x1;
8c76: 9b09 ldr r3, [sp, #36] ; 0x24
8c78: 1a9b subs r3, r3, r2
8c7a: eb07 0743 add.w r7, r7, r3, lsl #1
for(y = draw_area->y1; y <= draw_area->y2; y++) {
8c7e: 9b08 ldr r3, [sp, #32]
8c80: 459e cmp lr, r3
8c82: f73f ab0a bgt.w 829a <_lv_blend_map+0x1a>
disp_buf_tmp += disp_w;
8c86: 0043 lsls r3, r0, #1
8c88: 9304 str r3, [sp, #16]
map_buf_tmp += map_w;
8c8a: 006b lsls r3, r5, #1
8c8c: 9305 str r3, [sp, #20]
8c8e: 463b mov r3, r7
8c90: 4647 mov r7, r8
8c92: 4698 mov r8, r3
for(x = draw_area->x1; x <= draw_area->x2; x++) {
8c94: f9bd 3038 ldrsh.w r3, [sp, #56] ; 0x38
8c98: 461c mov r4, r3
8c9a: f9bd 203c ldrsh.w r2, [sp, #60] ; 0x3c
8c9e: 4293 cmp r3, r2
8ca0: dc10 bgt.n 8cc4 <_lv_blend_map+0xa44>
8ca2: 005b lsls r3, r3, #1
8ca4: eb0b 0503 add.w r5, fp, r3
8ca8: eb08 0603 add.w r6, r8, r3
disp_buf_tmp[x] = blend_fp(map_buf_tmp[x], disp_buf_tmp[x], opa);
8cac: 4652 mov r2, sl
8cae: 8829 ldrh r1, [r5, #0]
8cb0: f836 0b02 ldrh.w r0, [r6], #2
8cb4: 47b8 blx r7
8cb6: f825 0b02 strh.w r0, [r5], #2
for(x = draw_area->x1; x <= draw_area->x2; x++) {
8cba: 3401 adds r4, #1
8cbc: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c
8cc0: 429c cmp r4, r3
8cc2: ddf3 ble.n 8cac <_lv_blend_map+0xa2c>
disp_buf_tmp += disp_w;
8cc4: 9b04 ldr r3, [sp, #16]
8cc6: 449b add fp, r3
map_buf_tmp += map_w;
8cc8: 9b05 ldr r3, [sp, #20]
8cca: 4498 add r8, r3
for(y = draw_area->y1; y <= draw_area->y2; y++) {
8ccc: f109 0901 add.w r9, r9, #1
8cd0: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e
8cd4: 4599 cmp r9, r3
8cd6: dddd ble.n 8c94 <_lv_blend_map+0xa14>
8cd8: f7ff badf b.w 829a <_lv_blend_map+0x1a>
for(x = draw_area->x1; x <= draw_area->x2; x++) {
8cdc: 3501 adds r5, #1
8cde: 3602 adds r6, #2
8ce0: 3402 adds r4, #2
8ce2: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c
8ce6: 429d cmp r5, r3
8ce8: dc0f bgt.n 8d0a <_lv_blend_map+0xa8a>
if(mask_tmp[x] == 0) continue;
8cea: f817 3b01 ldrb.w r3, [r7], #1
8cee: 2b00 cmp r3, #0
8cf0: d0f4 beq.n 8cdc <_lv_blend_map+0xa5c>
lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : ((opa * mask_tmp[x]) >> 8);
8cf2: 2bf9 cmp r3, #249 ; 0xf9
8cf4: bf9d ittte ls
8cf6: 9a06 ldrls r2, [sp, #24]
8cf8: 4353 mulls r3, r2
8cfa: f3c3 2207 ubfxls r2, r3, #8, #8
8cfe: 9a05 ldrhi r2, [sp, #20]
disp_buf_tmp[x] = blend_fp(map_buf_tmp[x], disp_buf_tmp[x], opa_tmp);
8d00: 8831 ldrh r1, [r6, #0]
8d02: 8820 ldrh r0, [r4, #0]
8d04: 47c0 blx r8
8d06: 8030 strh r0, [r6, #0]
8d08: e7e8 b.n 8cdc <_lv_blend_map+0xa5c>
disp_buf_tmp += disp_w;
8d0a: 9b07 ldr r3, [sp, #28]
8d0c: 449b add fp, r3
8d0e: 9b09 ldr r3, [sp, #36] ; 0x24
8d10: 449a add sl, r3
map_buf_tmp += map_w;
8d12: 9b04 ldr r3, [sp, #16]
8d14: 9a08 ldr r2, [sp, #32]
8d16: 4413 add r3, r2
8d18: 9304 str r3, [sp, #16]
for(y = draw_area->y1; y <= draw_area->y2; y++) {
8d1a: f109 0901 add.w r9, r9, #1
8d1e: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e
8d22: 4599 cmp r9, r3
8d24: f73f aab9 bgt.w 829a <_lv_blend_map+0x1a>
for(x = draw_area->x1; x <= draw_area->x2; x++) {
8d28: f9bd 3038 ldrsh.w r3, [sp, #56] ; 0x38
8d2c: 461d mov r5, r3
8d2e: f9bd 203c ldrsh.w r2, [sp, #60] ; 0x3c
8d32: 4293 cmp r3, r2
8d34: dce9 bgt.n 8d0a <_lv_blend_map+0xa8a>
8d36: eb0a 0703 add.w r7, sl, r3
8d3a: 005b lsls r3, r3, #1
8d3c: eb0b 0603 add.w r6, fp, r3
8d40: 9a04 ldr r2, [sp, #16]
8d42: 18d4 adds r4, r2, r3
8d44: e7d1 b.n 8cea <_lv_blend_map+0xa6a>
for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) {
8d46: 9b04 ldr r3, [sp, #16]
8d48: 2100 movs r1, #0
for(; x < x_end4; x += 4) {
8d4a: 9a0a ldr r2, [sp, #40] ; 0x28
8d4c: 428a cmp r2, r1
8d4e: dd0a ble.n 8d66 <_lv_blend_map+0xae6>
8d50: 3304 adds r3, #4
8d52: 1cc8 adds r0, r1, #3
8d54: 0040 lsls r0, r0, #1
8d56: 9a06 ldr r2, [sp, #24]
8d58: 1814 adds r4, r2, r0
8d5a: 9a05 ldr r2, [sp, #20]
8d5c: 4410 add r0, r2
8d5e: 950b str r5, [sp, #44] ; 0x2c
8d60: f8dd e028 ldr.w lr, [sp, #40] ; 0x28
8d64: e527 b.n 87b6 <_lv_blend_map+0x536>
8d66: 461a mov r2, r3
8d68: e670 b.n 8a4c <_lv_blend_map+0x7cc>
for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) {
8d6a: 9b04 ldr r3, [sp, #16]
8d6c: 2100 movs r1, #0
for(; x < x_end4; x += 4) {
8d6e: 9a0a ldr r2, [sp, #40] ; 0x28
8d70: 4291 cmp r1, r2
8d72: dbed blt.n 8d50 <_lv_blend_map+0xad0>
disp_buf_first += disp_w;
8d74: 9b05 ldr r3, [sp, #20]
8d76: 9a0c ldr r2, [sp, #48] ; 0x30
8d78: 4413 add r3, r2
8d7a: 9305 str r3, [sp, #20]
8d7c: 9b04 ldr r3, [sp, #16]
8d7e: 9a09 ldr r2, [sp, #36] ; 0x24
8d80: 4413 add r3, r2
8d82: 9304 str r3, [sp, #16]
map_buf_first += map_w;
8d84: 9b06 ldr r3, [sp, #24]
8d86: 9a0d ldr r2, [sp, #52] ; 0x34
8d88: 4413 add r3, r2
8d8a: 9306 str r3, [sp, #24]
for(y = 0; y < draw_area_h; y++) {
8d8c: 9b07 ldr r3, [sp, #28]
8d8e: 3301 adds r3, #1
8d90: 9307 str r3, [sp, #28]
8d92: 9a08 ldr r2, [sp, #32]
8d94: 429a cmp r2, r3
8d96: f43f aa80 beq.w 829a <_lv_blend_map+0x1a>
for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) {
8d9a: 2d00 cmp r5, #0
8d9c: dde5 ble.n 8d6a <_lv_blend_map+0xaea>
8d9e: 9a04 ldr r2, [sp, #16]
8da0: f012 0f03 tst.w r2, #3
8da4: d0cf beq.n 8d46 <_lv_blend_map+0xac6>
8da6: f8dd 8018 ldr.w r8, [sp, #24]
8daa: f8dd e014 ldr.w lr, [sp, #20]
8dae: 4694 mov ip, r2
8db0: 2100 movs r1, #0
8db2: e49d b.n 86f0 <_lv_blend_map+0x470>
8db4: 00024c90 .word 0x00024c90
8db8: 00024c54 .word 0x00024c54
8dbc: 00024c60 .word 0x00024c60
8dc0: 0001225d .word 0x0001225d
8dc4: 0000769f .word 0x0000769f
8dc8: 000075e9 .word 0x000075e9
00008dcc <lv_draw_map>:
* @param antialias anti-alias transformations (rotate, zoom) or not
*/
LV_ATTRIBUTE_FAST_MEM static void lv_draw_map(const lv_area_t * map_area, const lv_area_t * clip_area,
const uint8_t * map_p,
lv_draw_img_dsc_t * draw_dsc, bool chroma_key, bool alpha_byte)
{
8dcc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
8dd0: b0bd sub sp, #244 ; 0xf4
8dd2: 901b str r0, [sp, #108] ; 0x6c
8dd4: 9123 str r1, [sp, #140] ; 0x8c
8dd6: 4617 mov r7, r2
8dd8: 9308 str r3, [sp, #32]
8dda: f89d 3118 ldrb.w r3, [sp, #280] ; 0x118
8dde: 930a str r3, [sp, #40] ; 0x28
8de0: f89d 311c ldrb.w r3, [sp, #284] ; 0x11c
8de4: 9306 str r3, [sp, #24]
8de6: 1e4b subs r3, r1, #1
8de8: 1dc8 adds r0, r1, #7
* @param src pointer to the source buffer
* @param len number of byte to 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;
8dea: aa3a add r2, sp, #232 ; 0xe8
const uint8_t * s8 = (const uint8_t *)src;
while(len) {
*d8 = *s8;
8dec: f813 1f01 ldrb.w r1, [r3, #1]!
8df0: f802 1b01 strb.w r1, [r2], #1
while(len) {
8df4: 4283 cmp r3, r0
8df6: d1f9 bne.n 8dec <lv_draw_map+0x20>
/* Use the clip area as draw area*/
lv_area_t draw_area;
lv_area_copy(&draw_area, clip_area);
lv_disp_t * disp = _lv_refr_get_disp_refreshing();
8df8: 4ba3 ldr r3, [pc, #652] ; (9088 <lv_draw_map+0x2bc>)
8dfa: 4798 blx r3
lv_disp_buf_t * vdb = lv_disp_get_buf(disp);
8dfc: 4ba3 ldr r3, [pc, #652] ; (908c <lv_draw_map+0x2c0>)
8dfe: 4798 blx r3
8e00: 9018 str r0, [sp, #96] ; 0x60
const lv_area_t * disp_area = &vdb->area;
/* Now `draw_area` has absolute coordinates.
* Make it relative to `disp_area` to simplify draw to `disp_buf`*/
draw_area.x1 -= disp_area->x1;
8e02: 8a01 ldrh r1, [r0, #16]
8e04: f8bd 30e8 ldrh.w r3, [sp, #232] ; 0xe8
8e08: 1a5b subs r3, r3, r1
8e0a: f8ad 30e8 strh.w r3, [sp, #232] ; 0xe8
draw_area.y1 -= disp_area->y1;
8e0e: 8a42 ldrh r2, [r0, #18]
8e10: f8bd 30ea ldrh.w r3, [sp, #234] ; 0xea
8e14: 1a9b subs r3, r3, r2
8e16: f8ad 30ea strh.w r3, [sp, #234] ; 0xea
draw_area.x2 -= disp_area->x1;
8e1a: f8bd 30ec ldrh.w r3, [sp, #236] ; 0xec
8e1e: 1a5b subs r3, r3, r1
8e20: f8ad 30ec strh.w r3, [sp, #236] ; 0xec
draw_area.y2 -= disp_area->y1;
8e24: f8bd 30ee ldrh.w r3, [sp, #238] ; 0xee
8e28: 1a9b subs r3, r3, r2
8e2a: f8ad 30ee strh.w r3, [sp, #238] ; 0xee
uint8_t other_mask_cnt = lv_draw_mask_get_cnt();
8e2e: 4b98 ldr r3, [pc, #608] ; (9090 <lv_draw_map+0x2c4>)
8e30: 4798 blx r3
/*The simplest case just copy the pixels into the VDB*/
if(other_mask_cnt == 0 && draw_dsc->angle == 0 && draw_dsc->zoom == LV_IMG_ZOOM_NONE &&
8e32: 9019 str r0, [sp, #100] ; 0x64
8e34: b930 cbnz r0, 8e44 <lv_draw_map+0x78>
8e36: 9a08 ldr r2, [sp, #32]
8e38: 8853 ldrh r3, [r2, #2]
8e3a: b91b cbnz r3, 8e44 <lv_draw_map+0x78>
8e3c: 8913 ldrh r3, [r2, #8]
8e3e: f5b3 7f80 cmp.w r3, #256 ; 0x100
8e42: d071 beq.n 8f28 <lv_draw_map+0x15c>
draw_dsc->blend_mode);
}
/*In the other cases every pixel need to be checked one-by-one*/
else {
/*The pixel size in byte is different if an alpha byte is added too*/
uint8_t px_size_byte = alpha_byte ? LV_IMG_PX_SIZE_ALPHA_BYTE : sizeof(lv_color_t);
8e44: 9b06 ldr r3, [sp, #24]
8e46: 2b00 cmp r3, #0
8e48: bf14 ite ne
8e4a: f04f 0b03 movne.w fp, #3
8e4e: f04f 0b02 moveq.w fp, #2
8e52: 991b ldr r1, [sp, #108] ; 0x6c
8e54: 460b mov r3, r1
8e56: f9b1 2000 ldrsh.w r2, [r1]
8e5a: 888d ldrh r5, [r1, #4]
8e5c: 3501 adds r5, #1
8e5e: 1aad subs r5, r5, r2
8e60: b22d sxth r5, r5
/*Go to the first displayed pixel of the map*/
int32_t map_w = lv_area_get_width(map_area);
const uint8_t * map_buf_tmp = map_p;
map_buf_tmp += map_w * (draw_area.y1 - (map_area->y1 - disp_area->y1)) * px_size_byte;
8e62: f9bd 00ea ldrsh.w r0, [sp, #234] ; 0xea
8e66: 9e18 ldr r6, [sp, #96] ; 0x60
8e68: f9b6 1012 ldrsh.w r1, [r6, #18]
8e6c: 46d8 mov r8, fp
map_buf_tmp += (draw_area.x1 - (map_area->x1 - disp_area->x1)) * px_size_byte;
8e6e: f9bd 40e8 ldrsh.w r4, [sp, #232] ; 0xe8
8e72: f9b6 6010 ldrsh.w r6, [r6, #16]
map_buf_tmp += map_w * (draw_area.y1 - (map_area->y1 - disp_area->y1)) * px_size_byte;
8e76: f9b3 3002 ldrsh.w r3, [r3, #2]
8e7a: 1a5b subs r3, r3, r1
8e7c: 1ac3 subs r3, r0, r3
map_buf_tmp += (draw_area.x1 - (map_area->x1 - disp_area->x1)) * px_size_byte;
8e7e: 1b92 subs r2, r2, r6
8e80: 1aa2 subs r2, r4, r2
8e82: fb05 2303 mla r3, r5, r3, r2
8e86: fb03 730b mla r3, r3, fp, r7
8e8a: 9314 str r3, [sp, #80] ; 0x50
uint32_t px_i = 0;
const uint8_t * map_px;
lv_area_t blend_area;
blend_area.x1 = draw_area.x1 + disp_area->x1;
8e8c: b2a4 uxth r4, r4
8e8e: 19a2 adds r2, r4, r6
8e90: b292 uxth r2, r2
8e92: f8ad 2098 strh.w r2, [sp, #152] ; 0x98
8e96: f8bd 30ec ldrh.w r3, [sp, #236] ; 0xec
8e9a: 3301 adds r3, #1
8e9c: 1b1b subs r3, r3, r4
8e9e: b29b uxth r3, r3
8ea0: b21c sxth r4, r3
8ea2: 9416 str r4, [sp, #88] ; 0x58
blend_area.x2 = blend_area.x1 + lv_area_get_width(&draw_area) - 1;
8ea4: 3b01 subs r3, #1
8ea6: 4413 add r3, r2
8ea8: f8ad 309c strh.w r3, [sp, #156] ; 0x9c
blend_area.y1 = disp_area->y1 + draw_area.y1;
8eac: b280 uxth r0, r0
8eae: 1843 adds r3, r0, r1
8eb0: b21b sxth r3, r3
8eb2: f8ad 309a strh.w r3, [sp, #154] ; 0x9a
blend_area.y2 = blend_area.y1;
8eb6: f8ad 309e strh.w r3, [sp, #158] ; 0x9e
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
8eba: f8bd 60ee ldrh.w r6, [sp, #238] ; 0xee
8ebe: 3601 adds r6, #1
8ec0: 1a36 subs r6, r6, r0
8ec2: b236 sxth r6, r6
lv_coord_t draw_area_h = lv_area_get_height(&draw_area);
lv_coord_t draw_area_w = lv_area_get_width(&draw_area);
#if LV_USE_IMG_TRANSFORM
bool transform = draw_dsc->angle != 0 || draw_dsc->zoom != LV_IMG_ZOOM_NONE ? true : false;
8ec4: 9908 ldr r1, [sp, #32]
8ec6: 884b ldrh r3, [r1, #2]
8ec8: 2b00 cmp r3, #0
8eca: f040 8353 bne.w 9574 <lv_draw_map+0x7a8>
8ece: 890b ldrh r3, [r1, #8]
8ed0: f5b3 7280 subs.w r2, r3, #256 ; 0x100
8ed4: bf18 it ne
8ed6: 2201 movne r2, #1
8ed8: 9205 str r2, [sp, #20]
#else
bool transform = false;
#endif
/*Simple ARGB image. Handle it as special case because it's very common*/
if(other_mask_cnt == 0 && !transform && !chroma_key && draw_dsc->recolor_opa == LV_OPA_TRANSP && alpha_byte) {
8eda: 9a19 ldr r2, [sp, #100] ; 0x64
8edc: 2a00 cmp r2, #0
8ede: f040 8370 bne.w 95c2 <lv_draw_map+0x7f6>
8ee2: f5b3 7f80 cmp.w r3, #256 ; 0x100
8ee6: f040 8349 bne.w 957c <lv_draw_map+0x7b0>
8eea: 9b0a ldr r3, [sp, #40] ; 0x28
8eec: b923 cbnz r3, 8ef8 <lv_draw_map+0x12c>
8eee: 7a8b ldrb r3, [r1, #10]
8ef0: b913 cbnz r3, 8ef8 <lv_draw_map+0x12c>
8ef2: 9b06 ldr r3, [sp, #24]
8ef4: 2b00 cmp r3, #0
8ef6: d131 bne.n 8f5c <lv_draw_map+0x190>
_lv_mem_buf_release(map2);
}
/*Most complicated case: transform or other mask or chroma keyed*/
else {
/*Build the image and a mask line-by-line*/
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);
8ef8: a83a add r0, sp, #232 ; 0xe8
8efa: 4b66 ldr r3, [pc, #408] ; (9094 <lv_draw_map+0x2c8>)
8efc: 4798 blx r3
8efe: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0
8f02: f240 80ac bls.w 905e <lv_draw_map+0x292>
lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t));
8f06: f44f 7070 mov.w r0, #960 ; 0x3c0
8f0a: 4c63 ldr r4, [pc, #396] ; (9098 <lv_draw_map+0x2cc>)
8f0c: 47a0 blx r4
8f0e: 901a str r0, [sp, #104] ; 0x68
lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size);
8f10: f44f 70f0 mov.w r0, #480 ; 0x1e0
8f14: 47a0 blx r4
8f16: 9017 str r0, [sp, #92] ; 0x5c
#if LV_USE_IMG_TRANSFORM
lv_img_transform_dsc_t trans_dsc;
_lv_memset_00(&trans_dsc, sizeof(lv_img_transform_dsc_t));
8f18: 2148 movs r1, #72 ; 0x48
8f1a: a828 add r0, sp, #160 ; 0xa0
8f1c: 4b5f ldr r3, [pc, #380] ; (909c <lv_draw_map+0x2d0>)
8f1e: 4798 blx r3
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);
8f20: f44f 73f0 mov.w r3, #480 ; 0x1e0
8f24: 931c str r3, [sp, #112] ; 0x70
8f26: e0e4 b.n 90f2 <lv_draw_map+0x326>
if(other_mask_cnt == 0 && draw_dsc->angle == 0 && draw_dsc->zoom == LV_IMG_ZOOM_NONE &&
8f28: 9b0a ldr r3, [sp, #40] ; 0x28
8f2a: 2b00 cmp r3, #0
8f2c: d18a bne.n 8e44 <lv_draw_map+0x78>
chroma_key == false && alpha_byte == false && draw_dsc->recolor_opa == LV_OPA_TRANSP) {
8f2e: 9b06 ldr r3, [sp, #24]
8f30: b98b cbnz r3, 8f56 <lv_draw_map+0x18a>
8f32: 7a93 ldrb r3, [r2, #10]
8f34: b113 cbz r3, 8f3c <lv_draw_map+0x170>
uint8_t px_size_byte = alpha_byte ? LV_IMG_PX_SIZE_ALPHA_BYTE : sizeof(lv_color_t);
8f36: f04f 0b02 mov.w fp, #2
8f3a: e78a b.n 8e52 <lv_draw_map+0x86>
_lv_blend_map(clip_area, map_area, (lv_color_t *)map_p, NULL, LV_DRAW_MASK_RES_FULL_COVER, draw_dsc->opa,
8f3c: 7b93 ldrb r3, [r2, #14]
8f3e: 9302 str r3, [sp, #8]
8f40: 7813 ldrb r3, [r2, #0]
8f42: 9301 str r3, [sp, #4]
8f44: 2301 movs r3, #1
8f46: 9300 str r3, [sp, #0]
8f48: 2300 movs r3, #0
8f4a: 463a mov r2, r7
8f4c: 991b ldr r1, [sp, #108] ; 0x6c
8f4e: 9823 ldr r0, [sp, #140] ; 0x8c
8f50: 4c53 ldr r4, [pc, #332] ; (90a0 <lv_draw_map+0x2d4>)
8f52: 47a0 blx r4
8f54: e30b b.n 956e <lv_draw_map+0x7a2>
uint8_t px_size_byte = alpha_byte ? LV_IMG_PX_SIZE_ALPHA_BYTE : sizeof(lv_color_t);
8f56: f04f 0b03 mov.w fp, #3
8f5a: e77a b.n 8e52 <lv_draw_map+0x86>
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);
8f5c: a83a add r0, sp, #232 ; 0xe8
8f5e: 4b4d ldr r3, [pc, #308] ; (9094 <lv_draw_map+0x2c8>)
8f60: 4798 blx r3
8f62: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0
8f66: d814 bhi.n 8f92 <lv_draw_map+0x1c6>
8f68: a83a add r0, sp, #232 ; 0xe8
8f6a: 4b4a ldr r3, [pc, #296] ; (9094 <lv_draw_map+0x2c8>)
8f6c: 4798 blx r3
8f6e: 4681 mov r9, r0
lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t));
8f70: ea4f 0049 mov.w r0, r9, lsl #1
8f74: 4c48 ldr r4, [pc, #288] ; (9098 <lv_draw_map+0x2cc>)
8f76: 47a0 blx r4
8f78: 4682 mov sl, r0
lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size);
8f7a: 4648 mov r0, r9
8f7c: 47a0 blx r4
8f7e: 4604 mov r4, r0
for(y = 0; y < draw_area_h; y++) {
8f80: 9605 str r6, [sp, #20]
8f82: 2e00 cmp r6, #0
8f84: dd4f ble.n 9026 <lv_draw_map+0x25a>
map_buf_tmp += map_w * px_size_byte;
8f86: fb08 f805 mul.w r8, r8, r5
8f8a: 2500 movs r5, #0
8f8c: 46ac mov ip, r5
8f8e: 9e14 ldr r6, [sp, #80] ; 0x50
8f90: e025 b.n 8fde <lv_draw_map+0x212>
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);
8f92: f44f 79f0 mov.w r9, #480 ; 0x1e0
8f96: e7eb b.n 8f70 <lv_draw_map+0x1a4>
8f98: 445b add r3, fp
8f9a: 3702 adds r7, #2
for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) {
8f9c: 4596 cmp lr, r2
8f9e: d00a beq.n 8fb6 <lv_draw_map+0x1ea>
lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1];
8fa0: 7899 ldrb r1, [r3, #2]
mask_buf[px_i] = px_opa;
8fa2: f802 1b01 strb.w r1, [r2], #1
if(px_opa) {
8fa6: 2900 cmp r1, #0
8fa8: d0f6 beq.n 8f98 <lv_draw_map+0x1cc>
map2[px_i].full = map_px[0] + (map_px[1] << 8);
8faa: 7858 ldrb r0, [r3, #1]
8fac: 7819 ldrb r1, [r3, #0]
8fae: eb01 2100 add.w r1, r1, r0, lsl #8
8fb2: 8039 strh r1, [r7, #0]
8fb4: e7f0 b.n 8f98 <lv_draw_map+0x1cc>
map_buf_tmp += map_w * px_size_byte;
8fb6: 4446 add r6, r8
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
8fb8: f8bd 30ec ldrh.w r3, [sp, #236] ; 0xec
8fbc: 3301 adds r3, #1
8fbe: f8bd 20e8 ldrh.w r2, [sp, #232] ; 0xe8
8fc2: 1a9b subs r3, r3, r2
if(px_i + lv_area_get_width(&draw_area) < mask_buf_size) {
8fc4: fa0c f383 sxtah r3, ip, r3
8fc8: 4599 cmp r9, r3
8fca: d914 bls.n 8ff6 <lv_draw_map+0x22a>
blend_area.y2 ++;
8fcc: f8bd 309e ldrh.w r3, [sp, #158] ; 0x9e
8fd0: 3301 adds r3, #1
8fd2: f8ad 309e strh.w r3, [sp, #158] ; 0x9e
for(y = 0; y < draw_area_h; y++) {
8fd6: 3501 adds r5, #1
8fd8: 9b05 ldr r3, [sp, #20]
8fda: 429d cmp r5, r3
8fdc: d023 beq.n 9026 <lv_draw_map+0x25a>
for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) {
8fde: 9b16 ldr r3, [sp, #88] ; 0x58
8fe0: 2b00 cmp r3, #0
8fe2: dde8 ble.n 8fb6 <lv_draw_map+0x1ea>
8fe4: eb04 020c add.w r2, r4, ip
8fe8: eb0a 074c add.w r7, sl, ip, lsl #1
8fec: 449c add ip, r3
8fee: eb04 0e0c add.w lr, r4, ip
8ff2: 4633 mov r3, r6
8ff4: e7d4 b.n 8fa0 <lv_draw_map+0x1d4>
_lv_blend_map(clip_area, &blend_area, map2, mask_buf, LV_DRAW_MASK_RES_CHANGED, draw_dsc->opa, draw_dsc->blend_mode);
8ff6: 9a08 ldr r2, [sp, #32]
8ff8: 7b93 ldrb r3, [r2, #14]
8ffa: 9302 str r3, [sp, #8]
8ffc: 7813 ldrb r3, [r2, #0]
8ffe: 9301 str r3, [sp, #4]
9000: 2302 movs r3, #2
9002: 9300 str r3, [sp, #0]
9004: 4623 mov r3, r4
9006: 4652 mov r2, sl
9008: a926 add r1, sp, #152 ; 0x98
900a: 9823 ldr r0, [sp, #140] ; 0x8c
900c: 4f24 ldr r7, [pc, #144] ; (90a0 <lv_draw_map+0x2d4>)
900e: 47b8 blx r7
blend_area.y1 = blend_area.y2 + 1;
9010: f8bd 309e ldrh.w r3, [sp, #158] ; 0x9e
9014: 3301 adds r3, #1
9016: b21b sxth r3, r3
9018: f8ad 309a strh.w r3, [sp, #154] ; 0x9a
blend_area.y2 = blend_area.y1;
901c: f8ad 309e strh.w r3, [sp, #158] ; 0x9e
px_i = 0;
9020: f04f 0c00 mov.w ip, #0
9024: e7d7 b.n 8fd6 <lv_draw_map+0x20a>
if(blend_area.y1 != blend_area.y2) {
9026: f9bd 309e ldrsh.w r3, [sp, #158] ; 0x9e
902a: f9bd 209a ldrsh.w r2, [sp, #154] ; 0x9a
902e: 429a cmp r2, r3
9030: d00f beq.n 9052 <lv_draw_map+0x286>
blend_area.y2--;
9032: 3b01 subs r3, #1
9034: f8ad 309e strh.w r3, [sp, #158] ; 0x9e
_lv_blend_map(clip_area, &blend_area, map2, mask_buf, LV_DRAW_MASK_RES_CHANGED, draw_dsc->opa, draw_dsc->blend_mode);
9038: 9a08 ldr r2, [sp, #32]
903a: 7b93 ldrb r3, [r2, #14]
903c: 9302 str r3, [sp, #8]
903e: 7813 ldrb r3, [r2, #0]
9040: 9301 str r3, [sp, #4]
9042: 2302 movs r3, #2
9044: 9300 str r3, [sp, #0]
9046: 4623 mov r3, r4
9048: 4652 mov r2, sl
904a: a926 add r1, sp, #152 ; 0x98
904c: 9823 ldr r0, [sp, #140] ; 0x8c
904e: 4d14 ldr r5, [pc, #80] ; (90a0 <lv_draw_map+0x2d4>)
9050: 47a8 blx r5
_lv_mem_buf_release(mask_buf);
9052: 4620 mov r0, r4
9054: 4c13 ldr r4, [pc, #76] ; (90a4 <lv_draw_map+0x2d8>)
9056: 47a0 blx r4
_lv_mem_buf_release(map2);
9058: 4650 mov r0, sl
905a: 47a0 blx r4
if(other_mask_cnt == 0 && !transform && !chroma_key && draw_dsc->recolor_opa == LV_OPA_TRANSP && alpha_byte) {
905c: e287 b.n 956e <lv_draw_map+0x7a2>
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);
905e: a83a add r0, sp, #232 ; 0xe8
9060: 4b0c ldr r3, [pc, #48] ; (9094 <lv_draw_map+0x2c8>)
9062: 4798 blx r3
9064: 901c str r0, [sp, #112] ; 0x70
lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t));
9066: 9b1c ldr r3, [sp, #112] ; 0x70
9068: 0058 lsls r0, r3, #1
906a: 4c0b ldr r4, [pc, #44] ; (9098 <lv_draw_map+0x2cc>)
906c: 47a0 blx r4
906e: 901a str r0, [sp, #104] ; 0x68
lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size);
9070: 981c ldr r0, [sp, #112] ; 0x70
9072: 47a0 blx r4
9074: 9017 str r0, [sp, #92] ; 0x5c
_lv_memset_00(&trans_dsc, sizeof(lv_img_transform_dsc_t));
9076: 2148 movs r1, #72 ; 0x48
9078: a828 add r0, sp, #160 ; 0xa0
907a: 4b08 ldr r3, [pc, #32] ; (909c <lv_draw_map+0x2d0>)
907c: 4798 blx r3
if(transform) {
907e: 9b05 ldr r3, [sp, #20]
9080: 2b00 cmp r3, #0
9082: d036 beq.n 90f2 <lv_draw_map+0x326>
9084: e291 b.n 95aa <lv_draw_map+0x7de>
9086: bf00 nop
9088: 00005f69 .word 0x00005f69
908c: 00010fdd .word 0x00010fdd
9090: 0000bec5 .word 0x0000bec5
9094: 000114fd .word 0x000114fd
9098: 0001293d .word 0x0001293d
909c: 00012b37 .word 0x00012b37
90a0: 00008281 .word 0x00008281
90a4: 00012571 .word 0x00012571
lv_img_cf_t cf = LV_IMG_CF_TRUE_COLOR;
if(alpha_byte) cf = LV_IMG_CF_TRUE_COLOR_ALPHA;
90a8: 2205 movs r2, #5
else if(chroma_key) cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED;
trans_dsc.cfg.angle = draw_dsc->angle;
90aa: 9808 ldr r0, [sp, #32]
90ac: 8843 ldrh r3, [r0, #2]
90ae: f8ad 30ac strh.w r3, [sp, #172] ; 0xac
trans_dsc.cfg.zoom = draw_dsc->zoom;
90b2: 8903 ldrh r3, [r0, #8]
90b4: f8ad 30ae strh.w r3, [sp, #174] ; 0xae
trans_dsc.cfg.src = map_p;
90b8: 9728 str r7, [sp, #160] ; 0xa0
trans_dsc.cfg.src_w = map_w;
90ba: f8ad 50a4 strh.w r5, [sp, #164] ; 0xa4
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
90be: 991b ldr r1, [sp, #108] ; 0x6c
90c0: 88cb ldrh r3, [r1, #6]
90c2: 3301 adds r3, #1
90c4: 8849 ldrh r1, [r1, #2]
90c6: 1a5b subs r3, r3, r1
trans_dsc.cfg.src_h = lv_area_get_height(map_area);;
90c8: f8ad 30a6 strh.w r3, [sp, #166] ; 0xa6
trans_dsc.cfg.cf = cf;
90cc: f88d 20b2 strb.w r2, [sp, #178] ; 0xb2
trans_dsc.cfg.pivot_x = draw_dsc->pivot.x;
90d0: 8883 ldrh r3, [r0, #4]
90d2: f8ad 30a8 strh.w r3, [sp, #168] ; 0xa8
trans_dsc.cfg.pivot_y = draw_dsc->pivot.y;
90d6: 88c3 ldrh r3, [r0, #6]
90d8: f8ad 30aa strh.w r3, [sp, #170] ; 0xaa
trans_dsc.cfg.color = draw_dsc->recolor;
90dc: 8983 ldrh r3, [r0, #12]
90de: f8ad 30b0 strh.w r3, [sp, #176] ; 0xb0
trans_dsc.cfg.antialias = draw_dsc->antialias;
90e2: 7bc3 ldrb r3, [r0, #15]
90e4: f3c3 0300 ubfx r3, r3, #0, #1
90e8: f88d 30b3 strb.w r3, [sp, #179] ; 0xb3
_lv_img_buf_transform_init(&trans_dsc);
90ec: a828 add r0, sp, #160 ; 0xa0
90ee: 4b93 ldr r3, [pc, #588] ; (933c <lv_draw_map+0x570>)
90f0: 4798 blx r3
}
#endif
uint16_t recolor_premult[3] = {0};
lv_opa_t recolor_opa_inv = 255 - draw_dsc->recolor_opa;
90f2: 9808 ldr r0, [sp, #32]
90f4: 7a83 ldrb r3, [r0, #10]
90f6: 43da mvns r2, r3
90f8: b2d2 uxtb r2, r2
90fa: 9212 str r2, [sp, #72] ; 0x48
if(draw_dsc->recolor_opa != 0) {
90fc: b303 cbz r3, 9140 <lv_draw_map+0x374>
out[0] = (uint16_t) LV_COLOR_GET_R(c) * mix;
90fe: b29b uxth r3, r3
9100: 7b42 ldrb r2, [r0, #13]
9102: 08d2 lsrs r2, r2, #3
9104: fb02 f203 mul.w r2, r2, r3
9108: 9210 str r2, [sp, #64] ; 0x40
out[1] = (uint16_t) LV_COLOR_GET_G(c) * mix;
910a: 8982 ldrh r2, [r0, #12]
910c: f3c2 1245 ubfx r2, r2, #5, #6
9110: fb02 f203 mul.w r2, r2, r3
9114: 9211 str r2, [sp, #68] ; 0x44
out[2] = (uint16_t) LV_COLOR_GET_B(c) * mix;
9116: 7b02 ldrb r2, [r0, #12]
9118: f002 021f and.w r2, r2, #31
911c: fb02 f303 mul.w r3, r2, r3
9120: 9313 str r3, [sp, #76] ; 0x4c
lv_color_premult(draw_dsc->recolor, draw_dsc->recolor_opa, recolor_premult);
}
lv_draw_mask_res_t mask_res;
mask_res = (alpha_byte || chroma_key || draw_dsc->angle ||
9122: 9b06 ldr r3, [sp, #24]
9124: b98b cbnz r3, 914a <lv_draw_map+0x37e>
9126: 9b0a ldr r3, [sp, #40] ; 0x28
9128: bb53 cbnz r3, 9180 <lv_draw_map+0x3b4>
912a: 9a08 ldr r2, [sp, #32]
912c: 8853 ldrh r3, [r2, #2]
912e: bb53 cbnz r3, 9186 <lv_draw_map+0x3ba>
9130: 8913 ldrh r3, [r2, #8]
9132: f5b3 7f80 cmp.w r3, #256 ; 0x100
9136: bf14 ite ne
9138: 2302 movne r3, #2
913a: 2301 moveq r3, #1
913c: 931d str r3, [sp, #116] ; 0x74
913e: e006 b.n 914e <lv_draw_map+0x382>
uint16_t recolor_premult[3] = {0};
9140: 2300 movs r3, #0
9142: 9313 str r3, [sp, #76] ; 0x4c
9144: 9311 str r3, [sp, #68] ; 0x44
9146: 9310 str r3, [sp, #64] ; 0x40
9148: e7eb b.n 9122 <lv_draw_map+0x356>
mask_res = (alpha_byte || chroma_key || draw_dsc->angle ||
914a: 2302 movs r3, #2
914c: 931d str r3, [sp, #116] ; 0x74
draw_dsc->zoom != LV_IMG_ZOOM_NONE) ? LV_DRAW_MASK_RES_CHANGED : LV_DRAW_MASK_RES_FULL_COVER;
/*Prepare the `mask_buf`if there are other masks*/
if(other_mask_cnt) {
914e: 9b19 ldr r3, [sp, #100] ; 0x64
9150: b9e3 cbnz r3, 918c <lv_draw_map+0x3c0>
}
int32_t x;
int32_t y;
#if LV_USE_IMG_TRANSFORM
int32_t rot_y = disp_area->y1 + draw_area.y1 - map_area->y1;
9152: 9b18 ldr r3, [sp, #96] ; 0x60
9154: f9b3 3012 ldrsh.w r3, [r3, #18]
9158: f9bd 20ea ldrsh.w r2, [sp, #234] ; 0xea
915c: 4413 add r3, r2
915e: 9a1b ldr r2, [sp, #108] ; 0x6c
9160: f9b2 2002 ldrsh.w r2, [r2, #2]
9164: 1a9b subs r3, r3, r2
9166: 9322 str r3, [sp, #136] ; 0x88
#endif
for(y = 0; y < draw_area_h; y++) {
9168: 961f str r6, [sp, #124] ; 0x7c
916a: 2e00 cmp r6, #0
916c: f340 81e4 ble.w 9538 <lv_draw_map+0x76c>
else if(mask_res_sub == LV_DRAW_MASK_RES_CHANGED) {
mask_res = LV_DRAW_MASK_RES_CHANGED;
}
}
map_buf_tmp += map_w * px_size_byte;
9170: fb08 f305 mul.w r3, r8, r5
9174: 931e str r3, [sp, #120] ; 0x78
9176: 2300 movs r3, #0
9178: 930e str r3, [sp, #56] ; 0x38
917a: 930f str r3, [sp, #60] ; 0x3c
}
}
else {
pxi = 0; /*unused*/
px_size = 0; /*unused*/
dsc->res.color = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, xs_int, ys_int, dsc->cfg.color);
917c: 46d1 mov r9, sl
917e: e154 b.n 942a <lv_draw_map+0x65e>
mask_res = (alpha_byte || chroma_key || draw_dsc->angle ||
9180: 2302 movs r3, #2
9182: 931d str r3, [sp, #116] ; 0x74
9184: e7e3 b.n 914e <lv_draw_map+0x382>
9186: 2302 movs r3, #2
9188: 931d str r3, [sp, #116] ; 0x74
918a: e7e0 b.n 914e <lv_draw_map+0x382>
_lv_memset_ff(mask_buf, mask_buf_size);
918c: 991c ldr r1, [sp, #112] ; 0x70
918e: 9817 ldr r0, [sp, #92] ; 0x5c
9190: 4b6b ldr r3, [pc, #428] ; (9340 <lv_draw_map+0x574>)
9192: 4798 blx r3
9194: e7dd b.n 9152 <lv_draw_map+0x386>
int32_t xt = x - dsc->cfg.pivot_x;
9196: 9b0c ldr r3, [sp, #48] ; 0x30
9198: 442b add r3, r5
919a: b21b sxth r3, r3
919c: f9bd 20a8 ldrsh.w r2, [sp, #168] ; 0xa8
91a0: 1a9b subs r3, r3, r2
int32_t yt = y - dsc->cfg.pivot_y;
91a2: f9bd 20aa ldrsh.w r2, [sp, #170] ; 0xaa
91a6: 990d ldr r1, [sp, #52] ; 0x34
91a8: 1a8a subs r2, r1, r2
if(dsc->cfg.zoom == LV_IMG_ZOOM_NONE) {
91aa: f8bd 10ae ldrh.w r1, [sp, #174] ; 0xae
91ae: f5b1 7f80 cmp.w r1, #256 ; 0x100
91b2: d056 beq.n 9262 <lv_draw_map+0x496>
else if(dsc->cfg.angle == 0) {
91b4: f9bd 10ac ldrsh.w r1, [sp, #172] ; 0xac
91b8: 2900 cmp r1, #0
91ba: d165 bne.n 9288 <lv_draw_map+0x4bc>
xt *= dsc->tmp.zoom_inv;
91bc: f8bd 10d6 ldrh.w r1, [sp, #214] ; 0xd6
xs = xt + dsc->tmp.pivot_x_256;
91c0: 9c31 ldr r4, [sp, #196] ; 0xc4
91c2: fb01 4303 mla r3, r1, r3, r4
91c6: 9309 str r3, [sp, #36] ; 0x24
ys = yt + dsc->tmp.pivot_y_256;
91c8: 9b32 ldr r3, [sp, #200] ; 0xc8
91ca: fb01 3302 mla r3, r1, r2, r3
91ce: 930b str r3, [sp, #44] ; 0x2c
int32_t xs_int = xs >> 8;
91d0: 9b09 ldr r3, [sp, #36] ; 0x24
91d2: 121f asrs r7, r3, #8
if(xs_int >= dsc->cfg.src_w) return false;
91d4: f9bd 30a4 ldrsh.w r3, [sp, #164] ; 0xa4
91d8: 429f cmp r7, r3
91da: f280 80ab bge.w 9334 <lv_draw_map+0x568>
else if(xs_int < 0) return false;
91de: 2f00 cmp r7, #0
91e0: f2c0 80a8 blt.w 9334 <lv_draw_map+0x568>
int32_t ys_int = ys >> 8;
91e4: 9a0b ldr r2, [sp, #44] ; 0x2c
91e6: 1212 asrs r2, r2, #8
91e8: 4610 mov r0, r2
91ea: 9215 str r2, [sp, #84] ; 0x54
if(ys_int >= dsc->cfg.src_h) return false;
91ec: f9bd 20a6 ldrsh.w r2, [sp, #166] ; 0xa6
91f0: 4290 cmp r0, r2
91f2: f280 809f bge.w 9334 <lv_draw_map+0x568>
else if(ys_int < 0) return false;
91f6: 2800 cmp r0, #0
91f8: f2c0 809c blt.w 9334 <lv_draw_map+0x568>
if(dsc->tmp.native_color) {
91fc: f89d 20d4 ldrb.w r2, [sp, #212] ; 0xd4
9200: f012 0f04 tst.w r2, #4
9204: d06a beq.n 92dc <lv_draw_map+0x510>
const uint8_t * src_u8 = (const uint8_t *)dsc->cfg.src;
9206: 9928 ldr r1, [sp, #160] ; 0xa0
if(dsc->tmp.has_alpha == 0) {
9208: f012 0f02 tst.w r2, #2
920c: d155 bne.n 92ba <lv_draw_map+0x4ee>
pxi = dsc->cfg.src_w * ys_int * px_size + xs_int * px_size;
920e: fb03 7300 mla r3, r3, r0, r7
9212: 005a lsls r2, r3, #1
_lv_memcpy_small(&dsc->res.color, &src_u8[pxi], px_size);
9214: 1888 adds r0, r1, r2
*d8 = *s8;
9216: f811 3013 ldrb.w r3, [r1, r3, lsl #1]
921a: f88d 30b4 strb.w r3, [sp, #180] ; 0xb4
921e: 7843 ldrb r3, [r0, #1]
9220: f88d 30b5 strb.w r3, [sp, #181] ; 0xb5
px_size = LV_COLOR_SIZE >> 3;
9224: 2102 movs r1, #2
dsc->res.opa = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, xs_int, ys_int);
}
if(dsc->tmp.chroma_keyed) {
9226: f89d 30d4 ldrb.w r3, [sp, #212] ; 0xd4
922a: f013 0f01 tst.w r3, #1
922e: d00d beq.n 924c <lv_draw_map+0x480>
lv_color_t ct = LV_COLOR_TRANSP;
9230: 9b20 ldr r3, [sp, #128] ; 0x80
9232: f36f 0304 bfc r3, #0, #5
9236: f443 63fc orr.w r3, r3, #2016 ; 0x7e0
923a: f36f 23cf bfc r3, #11, #5
923e: f8ad 3080 strh.w r3, [sp, #128] ; 0x80
if(dsc->res.color.full == ct.full) return false;
9242: f8bd 00b4 ldrh.w r0, [sp, #180] ; 0xb4
9246: b29b uxth r3, r3
9248: 4298 cmp r0, r3
924a: d073 beq.n 9334 <lv_draw_map+0x568>
}
if(dsc->cfg.antialias == false) return true;
924c: f89d 30b3 ldrb.w r3, [sp, #179] ; 0xb3
9250: 2b00 cmp r3, #0
9252: d159 bne.n 9308 <lv_draw_map+0x53c>
mask_buf[px_i] = trans_dsc.res.opa;
9254: f89d 30b6 ldrb.w r3, [sp, #182] ; 0xb6
9258: f88a 3000 strb.w r3, [sl]
c.full = trans_dsc.res.color.full;
925c: f8bd 30b4 ldrh.w r3, [sp, #180] ; 0xb4
9260: e086 b.n 9370 <lv_draw_map+0x5a4>
xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_x_256;
9262: 9834 ldr r0, [sp, #208] ; 0xd0
9264: 9933 ldr r1, [sp, #204] ; 0xcc
9266: fb00 f403 mul.w r4, r0, r3
926a: fb01 4712 mls r7, r1, r2, r4
926e: 9c31 ldr r4, [sp, #196] ; 0xc4
9270: eb04 14e7 add.w r4, r4, r7, asr #7
9274: 9409 str r4, [sp, #36] ; 0x24
ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_y_256;
9276: fb00 f202 mul.w r2, r0, r2
927a: fb01 2303 mla r3, r1, r3, r2
927e: 9a32 ldr r2, [sp, #200] ; 0xc8
9280: eb02 13e3 add.w r3, r2, r3, asr #7
9284: 930b str r3, [sp, #44] ; 0x2c
9286: e7a3 b.n 91d0 <lv_draw_map+0x404>
xt *= dsc->tmp.zoom_inv;
9288: f8bd 10d6 ldrh.w r1, [sp, #214] ; 0xd6
928c: fb01 f303 mul.w r3, r1, r3
yt *= dsc->tmp.zoom_inv;
9290: fb01 f202 mul.w r2, r1, r2
xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_x_256;
9294: 9934 ldr r1, [sp, #208] ; 0xd0
9296: 9833 ldr r0, [sp, #204] ; 0xcc
9298: fb01 f403 mul.w r4, r1, r3
929c: fb00 4712 mls r7, r0, r2, r4
92a0: 9c31 ldr r4, [sp, #196] ; 0xc4
92a2: eb04 34e7 add.w r4, r4, r7, asr #15
92a6: 9409 str r4, [sp, #36] ; 0x24
ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_y_256;
92a8: fb01 f202 mul.w r2, r1, r2
92ac: fb00 2303 mla r3, r0, r3, r2
92b0: 9a32 ldr r2, [sp, #200] ; 0xc8
92b2: eb02 33e3 add.w r3, r2, r3, asr #15
92b6: 930b str r3, [sp, #44] ; 0x2c
92b8: e78a b.n 91d0 <lv_draw_map+0x404>
pxi = dsc->cfg.src_w * ys_int * px_size + xs_int * px_size;
92ba: 9a15 ldr r2, [sp, #84] ; 0x54
92bc: fb03 7302 mla r3, r3, r2, r7
92c0: eb03 0243 add.w r2, r3, r3, lsl #1
_lv_memcpy_small(&dsc->res.color, &src_u8[pxi], px_size - 1);
92c4: 188b adds r3, r1, r2
92c6: 5c89 ldrb r1, [r1, r2]
92c8: f88d 10b4 strb.w r1, [sp, #180] ; 0xb4
92cc: 7859 ldrb r1, [r3, #1]
92ce: f88d 10b5 strb.w r1, [sp, #181] ; 0xb5
dsc->res.opa = src_u8[pxi + px_size - 1];
92d2: 789b ldrb r3, [r3, #2]
92d4: f88d 30b6 strb.w r3, [sp, #182] ; 0xb6
px_size = LV_IMG_PX_SIZE_ALPHA_BYTE;
92d8: 2103 movs r1, #3
92da: e7a4 b.n 9226 <lv_draw_map+0x45a>
dsc->res.color = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, xs_int, ys_int, dsc->cfg.color);
92dc: b239 sxth r1, r7
92de: f9bd 2054 ldrsh.w r2, [sp, #84] ; 0x54
92e2: f8bd 30b0 ldrh.w r3, [sp, #176] ; 0xb0
92e6: 9225 str r2, [sp, #148] ; 0x94
92e8: 9124 str r1, [sp, #144] ; 0x90
92ea: a82e add r0, sp, #184 ; 0xb8
92ec: 4c15 ldr r4, [pc, #84] ; (9344 <lv_draw_map+0x578>)
92ee: 47a0 blx r4
92f0: f8ad 00b4 strh.w r0, [sp, #180] ; 0xb4
dsc->res.opa = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, xs_int, ys_int);
92f4: 9a25 ldr r2, [sp, #148] ; 0x94
92f6: 9924 ldr r1, [sp, #144] ; 0x90
92f8: a82e add r0, sp, #184 ; 0xb8
92fa: 4b13 ldr r3, [pc, #76] ; (9348 <lv_draw_map+0x57c>)
92fc: 4798 blx r3
92fe: f88d 00b6 strb.w r0, [sp, #182] ; 0xb6
pxi = 0; /*unused*/
9302: 2200 movs r2, #0
px_size = 0; /*unused*/
9304: 4611 mov r1, r2
9306: e78e b.n 9226 <lv_draw_map+0x45a>
dsc->tmp.xs = xs;
9308: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24
930c: f8ad 30d8 strh.w r3, [sp, #216] ; 0xd8
dsc->tmp.ys = ys;
9310: f8bd 302c ldrh.w r3, [sp, #44] ; 0x2c
9314: f8ad 30da strh.w r3, [sp, #218] ; 0xda
dsc->tmp.xs_int = xs_int;
9318: f8ad 70dc strh.w r7, [sp, #220] ; 0xdc
dsc->tmp.ys_int = ys_int;
931c: f8bd 3054 ldrh.w r3, [sp, #84] ; 0x54
9320: f8ad 30de strh.w r3, [sp, #222] ; 0xde
dsc->tmp.pxi = pxi;
9324: 9238 str r2, [sp, #224] ; 0xe0
dsc->tmp.px_size = px_size;
9326: f88d 10e4 strb.w r1, [sp, #228] ; 0xe4
bool ret;
ret = _lv_img_buf_transform_anti_alias(dsc);
932a: a828 add r0, sp, #160 ; 0xa0
932c: 4b07 ldr r3, [pc, #28] ; (934c <lv_draw_map+0x580>)
932e: 4798 blx r3
if(ret == false) {
9330: 2800 cmp r0, #0
9332: d18f bne.n 9254 <lv_draw_map+0x488>
mask_buf[px_i] = LV_OPA_TRANSP;
9334: 2300 movs r3, #0
9336: f88a 3000 strb.w r3, [sl]
continue;
933a: e03d b.n 93b8 <lv_draw_map+0x5ec>
933c: 0000eb4d .word 0x0000eb4d
9340: 00012bed .word 0x00012bed
9344: 0000e919 .word 0x0000e919
9348: 0000ea49 .word 0x0000ea49
934c: 0000edfd .word 0x0000edfd
9350: 000007e0 .word 0x000007e0
mask_buf[px_i] = 0xFF;
9354: 23ff movs r3, #255 ; 0xff
9356: f88a 3000 strb.w r3, [sl]
c.full = map_px[0] + (map_px[1] << 8);
935a: 7872 ldrb r2, [r6, #1]
935c: 7833 ldrb r3, [r6, #0]
935e: eb03 2302 add.w r3, r3, r2, lsl #8
9362: b29b uxth r3, r3
if(chroma_key) {
9364: 9a0a ldr r2, [sp, #40] ; 0x28
9366: b11a cbz r2, 9370 <lv_draw_map+0x5a4>
if(c.full == chroma_keyed_color.full) {
9368: f83f 201c ldrh.w r2, [pc, #-28] ; 9350 <lv_draw_map+0x584>
936c: 429a cmp r2, r3
936e: d036 beq.n 93de <lv_draw_map+0x612>
if(draw_dsc->recolor_opa != 0) {
9370: 9a08 ldr r2, [sp, #32]
9372: 7a92 ldrb r2, [r2, #10]
9374: b1ea cbz r2, 93b2 <lv_draw_map+0x5e6>
LV_COLOR_SET_R(ret, (uint16_t)((uint16_t) premult_c1[0] + LV_COLOR_GET_R(c2) * mix) >> 8);
9376: f8bd 2048 ldrh.w r2, [sp, #72] ; 0x48
937a: 0ad9 lsrs r1, r3, #11
937c: 9810 ldr r0, [sp, #64] ; 0x40
937e: fb01 0102 mla r1, r1, r2, r0
9382: f3c1 2104 ubfx r1, r1, #8, #5
LV_COLOR_SET_G(ret, (uint16_t)((uint16_t) premult_c1[1] + LV_COLOR_GET_G(c2) * mix) >> 8);
9386: f3c3 1045 ubfx r0, r3, #5, #6
938a: 9c11 ldr r4, [sp, #68] ; 0x44
938c: fb00 4002 mla r0, r0, r2, r4
9390: f3c0 2005 ubfx r0, r0, #8, #6
LV_COLOR_SET_B(ret, (uint16_t)((uint16_t) premult_c1[2] + LV_COLOR_GET_B(c2) * mix) >> 8);
9394: f003 031f and.w r3, r3, #31
9398: 9c13 ldr r4, [sp, #76] ; 0x4c
939a: fb03 4302 mla r3, r3, r2, r4
939e: f3c3 2307 ubfx r3, r3, #8, #8
93a2: f363 0904 bfi r9, r3, #0, #5
93a6: f360 194a bfi r9, r0, #5, #6
93aa: f361 29cf bfi r9, r1, #11, #5
93ae: fa1f f389 uxth.w r3, r9
map2[px_i].full = c.full;
93b2: 9a07 ldr r2, [sp, #28]
93b4: f822 3015 strh.w r3, [r2, r5, lsl #1]
for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) {
93b8: 3501 adds r5, #1
93ba: 445e add r6, fp
93bc: f10a 0a01 add.w sl, sl, #1
93c0: 4545 cmp r5, r8
93c2: d010 beq.n 93e6 <lv_draw_map+0x61a>
if(transform) {
93c4: 9b05 ldr r3, [sp, #20]
93c6: 2b00 cmp r3, #0
93c8: f47f aee5 bne.w 9196 <lv_draw_map+0x3ca>
if(alpha_byte) {
93cc: 9b06 ldr r3, [sp, #24]
93ce: 2b00 cmp r3, #0
93d0: d0c0 beq.n 9354 <lv_draw_map+0x588>
lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1];
93d2: 78b3 ldrb r3, [r6, #2]
mask_buf[px_i] = px_opa;
93d4: f88a 3000 strb.w r3, [sl]
if(px_opa == 0) {
93d8: 2b00 cmp r3, #0
93da: d0ed beq.n 93b8 <lv_draw_map+0x5ec>
93dc: e7bd b.n 935a <lv_draw_map+0x58e>
mask_buf[px_i] = LV_OPA_TRANSP;
93de: 2300 movs r3, #0
93e0: f88a 3000 strb.w r3, [sl]
continue;
93e4: e7e8 b.n 93b8 <lv_draw_map+0x5ec>
93e6: 9b16 ldr r3, [sp, #88] ; 0x58
93e8: 9a0f ldr r2, [sp, #60] ; 0x3c
93ea: 189c adds r4, r3, r2
if(other_mask_cnt) {
93ec: 9b19 ldr r3, [sp, #100] ; 0x64
93ee: 2b00 cmp r3, #0
93f0: d13e bne.n 9470 <lv_draw_map+0x6a4>
map_buf_tmp += map_w * px_size_byte;
93f2: 9b14 ldr r3, [sp, #80] ; 0x50
93f4: 9a1e ldr r2, [sp, #120] ; 0x78
93f6: 4413 add r3, r2
93f8: 9314 str r3, [sp, #80] ; 0x50
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
93fa: f8bd 30ec ldrh.w r3, [sp, #236] ; 0xec
93fe: 3301 adds r3, #1
9400: f8bd 20e8 ldrh.w r2, [sp, #232] ; 0xe8
9404: 1a9b subs r3, r3, r2
if(px_i + lv_area_get_width(&draw_area) < mask_buf_size) {
9406: fa04 f383 sxtah r3, r4, r3
940a: 9a1c ldr r2, [sp, #112] ; 0x70
940c: 429a cmp r2, r3
940e: d95c bls.n 94ca <lv_draw_map+0x6fe>
blend_area.y2 ++;
9410: f8bd 309e ldrh.w r3, [sp, #158] ; 0x9e
9414: 3301 adds r3, #1
9416: f8ad 309e strh.w r3, [sp, #158] ; 0x9e
941a: 940f str r4, [sp, #60] ; 0x3c
for(y = 0; y < draw_area_h; y++) {
941c: 9b0e ldr r3, [sp, #56] ; 0x38
941e: 3301 adds r3, #1
9420: 930e str r3, [sp, #56] ; 0x38
9422: 9a1f ldr r2, [sp, #124] ; 0x7c
9424: 4293 cmp r3, r2
9426: f000 8087 beq.w 9538 <lv_draw_map+0x76c>
int32_t rot_x = disp_area->x1 + draw_area.x1 - map_area->x1;
942a: 9b18 ldr r3, [sp, #96] ; 0x60
942c: f9b3 3010 ldrsh.w r3, [r3, #16]
9430: f9bd 20e8 ldrsh.w r2, [sp, #232] ; 0xe8
9434: 4413 add r3, r2
9436: 9a1b ldr r2, [sp, #108] ; 0x6c
9438: f9b2 2000 ldrsh.w r2, [r2]
943c: 1a9b subs r3, r3, r2
943e: 930c str r3, [sp, #48] ; 0x30
for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) {
9440: 9b16 ldr r3, [sp, #88] ; 0x58
9442: 4698 mov r8, r3
9444: 2b00 cmp r3, #0
9446: dd11 ble.n 946c <lv_draw_map+0x6a0>
9448: 9b17 ldr r3, [sp, #92] ; 0x5c
944a: 4619 mov r1, r3
944c: 9a0f ldr r2, [sp, #60] ; 0x3c
944e: eb01 0a02 add.w sl, r1, r2
9452: 9b1a ldr r3, [sp, #104] ; 0x68
9454: 4619 mov r1, r3
9456: eb01 0342 add.w r3, r1, r2, lsl #1
945a: 9307 str r3, [sp, #28]
945c: 9e14 ldr r6, [sp, #80] ; 0x50
945e: 2500 movs r5, #0
int32_t yt = y - dsc->cfg.pivot_y;
9460: 9b22 ldr r3, [sp, #136] ; 0x88
9462: 9a0e ldr r2, [sp, #56] ; 0x38
9464: 4413 add r3, r2
9466: b21b sxth r3, r3
9468: 930d str r3, [sp, #52] ; 0x34
946a: e7ab b.n 93c4 <lv_draw_map+0x5f8>
946c: 9c0f ldr r4, [sp, #60] ; 0x3c
946e: e7bd b.n 93ec <lv_draw_map+0x620>
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,
9470: 9b0f ldr r3, [sp, #60] ; 0x3c
9472: 9a17 ldr r2, [sp, #92] ; 0x5c
9474: 4413 add r3, r2
9476: 461e mov r6, r3
9478: f8bd 10e8 ldrh.w r1, [sp, #232] ; 0xe8
947c: f8bd 30ec ldrh.w r3, [sp, #236] ; 0xec
9480: 3301 adds r3, #1
9482: 1a5b subs r3, r3, r1
9484: f8bd 20ea ldrh.w r2, [sp, #234] ; 0xea
9488: 9d18 ldr r5, [sp, #96] ; 0x60
948a: 8a68 ldrh r0, [r5, #18]
948c: 4402 add r2, r0
948e: 980e ldr r0, [sp, #56] ; 0x38
9490: 4402 add r2, r0
9492: 8a28 ldrh r0, [r5, #16]
9494: 4401 add r1, r0
9496: b21b sxth r3, r3
9498: b212 sxth r2, r2
949a: b209 sxth r1, r1
949c: 4630 mov r0, r6
949e: 4d4e ldr r5, [pc, #312] ; (95d8 <lv_draw_map+0x80c>)
94a0: 47a8 blx r5
if(mask_res_sub == LV_DRAW_MASK_RES_TRANSP) {
94a2: b128 cbz r0, 94b0 <lv_draw_map+0x6e4>
mask_res = LV_DRAW_MASK_RES_CHANGED;
94a4: 2802 cmp r0, #2
94a6: 9a1d ldr r2, [sp, #116] ; 0x74
94a8: bf08 it eq
94aa: 4602 moveq r2, r0
94ac: 921d str r2, [sp, #116] ; 0x74
94ae: e7a0 b.n 93f2 <lv_draw_map+0x626>
94b0: f8bd 10ec ldrh.w r1, [sp, #236] ; 0xec
94b4: 3101 adds r1, #1
94b6: f8bd 30e8 ldrh.w r3, [sp, #232] ; 0xe8
94ba: 1ac9 subs r1, r1, r3
_lv_memset_00(mask_buf + px_i_start, lv_area_get_width(&draw_area));
94bc: b209 sxth r1, r1
94be: 4630 mov r0, r6
94c0: 4b46 ldr r3, [pc, #280] ; (95dc <lv_draw_map+0x810>)
94c2: 4798 blx r3
mask_res = LV_DRAW_MASK_RES_CHANGED;
94c4: 2302 movs r3, #2
94c6: 931d str r3, [sp, #116] ; 0x74
94c8: e793 b.n 93f2 <lv_draw_map+0x626>
}
else {
_lv_blend_map(clip_area, &blend_area, map2, mask_buf, mask_res, draw_dsc->opa, draw_dsc->blend_mode);
94ca: 9d08 ldr r5, [sp, #32]
94cc: 7bab ldrb r3, [r5, #14]
94ce: 9302 str r3, [sp, #8]
94d0: 782b ldrb r3, [r5, #0]
94d2: 9301 str r3, [sp, #4]
94d4: 9b1d ldr r3, [sp, #116] ; 0x74
94d6: 9300 str r3, [sp, #0]
94d8: 9b17 ldr r3, [sp, #92] ; 0x5c
94da: 9a1a ldr r2, [sp, #104] ; 0x68
94dc: a926 add r1, sp, #152 ; 0x98
94de: 9823 ldr r0, [sp, #140] ; 0x8c
94e0: 4c3f ldr r4, [pc, #252] ; (95e0 <lv_draw_map+0x814>)
94e2: 47a0 blx r4
blend_area.y1 = blend_area.y2 + 1;
94e4: f8bd 309e ldrh.w r3, [sp, #158] ; 0x9e
94e8: 3301 adds r3, #1
94ea: b21b sxth r3, r3
94ec: f8ad 309a strh.w r3, [sp, #154] ; 0x9a
blend_area.y2 = blend_area.y1;
94f0: f8ad 309e strh.w r3, [sp, #158] ; 0x9e
px_i = 0;
mask_res = (alpha_byte || chroma_key || draw_dsc->angle ||
94f4: 9b06 ldr r3, [sp, #24]
94f6: b95b cbnz r3, 9510 <lv_draw_map+0x744>
94f8: 9b0a ldr r3, [sp, #40] ; 0x28
94fa: b983 cbnz r3, 951e <lv_draw_map+0x752>
94fc: 886b ldrh r3, [r5, #2]
94fe: b98b cbnz r3, 9524 <lv_draw_map+0x758>
9500: 892b ldrh r3, [r5, #8]
9502: f5b3 7f80 cmp.w r3, #256 ; 0x100
9506: bf14 ite ne
9508: 2302 movne r3, #2
950a: 2301 moveq r3, #1
950c: 931d str r3, [sp, #116] ; 0x74
950e: e001 b.n 9514 <lv_draw_map+0x748>
9510: 2302 movs r3, #2
9512: 931d str r3, [sp, #116] ; 0x74
draw_dsc->zoom != LV_IMG_ZOOM_NONE) ? LV_DRAW_MASK_RES_CHANGED : LV_DRAW_MASK_RES_FULL_COVER;
/*Prepare the `mask_buf`if there are other masks*/
if(other_mask_cnt) {
9514: 9b19 ldr r3, [sp, #100] ; 0x64
9516: b943 cbnz r3, 952a <lv_draw_map+0x75e>
px_i = 0;
9518: 2300 movs r3, #0
951a: 930f str r3, [sp, #60] ; 0x3c
951c: e77e b.n 941c <lv_draw_map+0x650>
mask_res = (alpha_byte || chroma_key || draw_dsc->angle ||
951e: 2302 movs r3, #2
9520: 931d str r3, [sp, #116] ; 0x74
9522: e7f7 b.n 9514 <lv_draw_map+0x748>
9524: 2302 movs r3, #2
9526: 931d str r3, [sp, #116] ; 0x74
9528: e7f4 b.n 9514 <lv_draw_map+0x748>
_lv_memset_ff(mask_buf, mask_buf_size);
952a: 991c ldr r1, [sp, #112] ; 0x70
952c: 9817 ldr r0, [sp, #92] ; 0x5c
952e: 4b2d ldr r3, [pc, #180] ; (95e4 <lv_draw_map+0x818>)
9530: 4798 blx r3
px_i = 0;
9532: 2300 movs r3, #0
9534: 930f str r3, [sp, #60] ; 0x3c
9536: e771 b.n 941c <lv_draw_map+0x650>
}
}
}
/*Flush the last part*/
if(blend_area.y1 != blend_area.y2) {
9538: f9bd 309e ldrsh.w r3, [sp, #158] ; 0x9e
953c: f9bd 209a ldrsh.w r2, [sp, #154] ; 0x9a
9540: 429a cmp r2, r3
9542: d00f beq.n 9564 <lv_draw_map+0x798>
blend_area.y2--;
9544: 3b01 subs r3, #1
9546: f8ad 309e strh.w r3, [sp, #158] ; 0x9e
_lv_blend_map(clip_area, &blend_area, map2, mask_buf, mask_res, draw_dsc->opa, draw_dsc->blend_mode);
954a: 9a08 ldr r2, [sp, #32]
954c: 7b93 ldrb r3, [r2, #14]
954e: 9302 str r3, [sp, #8]
9550: 7813 ldrb r3, [r2, #0]
9552: 9301 str r3, [sp, #4]
9554: 9b1d ldr r3, [sp, #116] ; 0x74
9556: 9300 str r3, [sp, #0]
9558: 9b17 ldr r3, [sp, #92] ; 0x5c
955a: 9a1a ldr r2, [sp, #104] ; 0x68
955c: a926 add r1, sp, #152 ; 0x98
955e: 9823 ldr r0, [sp, #140] ; 0x8c
9560: 4c1f ldr r4, [pc, #124] ; (95e0 <lv_draw_map+0x814>)
9562: 47a0 blx r4
}
_lv_mem_buf_release(mask_buf);
9564: 9817 ldr r0, [sp, #92] ; 0x5c
9566: 4c20 ldr r4, [pc, #128] ; (95e8 <lv_draw_map+0x81c>)
9568: 47a0 blx r4
_lv_mem_buf_release(map2);
956a: 981a ldr r0, [sp, #104] ; 0x68
956c: 47a0 blx r4
}
}
}
956e: b03d add sp, #244 ; 0xf4
9570: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
if(other_mask_cnt == 0 && !transform && !chroma_key && draw_dsc->recolor_opa == LV_OPA_TRANSP && alpha_byte) {
9574: 9b19 ldr r3, [sp, #100] ; 0x64
9576: bb13 cbnz r3, 95be <lv_draw_map+0x7f2>
9578: 2301 movs r3, #1
957a: 9305 str r3, [sp, #20]
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);
957c: a83a add r0, sp, #232 ; 0xe8
957e: 4b1b ldr r3, [pc, #108] ; (95ec <lv_draw_map+0x820>)
9580: 4798 blx r3
9582: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0
9586: f67f ad6a bls.w 905e <lv_draw_map+0x292>
lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t));
958a: f44f 7070 mov.w r0, #960 ; 0x3c0
958e: 4c18 ldr r4, [pc, #96] ; (95f0 <lv_draw_map+0x824>)
9590: 47a0 blx r4
9592: 901a str r0, [sp, #104] ; 0x68
lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size);
9594: f44f 70f0 mov.w r0, #480 ; 0x1e0
9598: 47a0 blx r4
959a: 9017 str r0, [sp, #92] ; 0x5c
_lv_memset_00(&trans_dsc, sizeof(lv_img_transform_dsc_t));
959c: 2148 movs r1, #72 ; 0x48
959e: a828 add r0, sp, #160 ; 0xa0
95a0: 4b0e ldr r3, [pc, #56] ; (95dc <lv_draw_map+0x810>)
95a2: 4798 blx r3
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);
95a4: f44f 73f0 mov.w r3, #480 ; 0x1e0
95a8: 931c str r3, [sp, #112] ; 0x70
if(alpha_byte) cf = LV_IMG_CF_TRUE_COLOR_ALPHA;
95aa: 9b06 ldr r3, [sp, #24]
95ac: 2b00 cmp r3, #0
95ae: f47f ad7b bne.w 90a8 <lv_draw_map+0x2dc>
else if(chroma_key) cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED;
95b2: 9b0a ldr r3, [sp, #40] ; 0x28
95b4: 2b00 cmp r3, #0
95b6: bf0c ite eq
95b8: 2204 moveq r2, #4
95ba: 2206 movne r2, #6
95bc: e575 b.n 90aa <lv_draw_map+0x2de>
if(other_mask_cnt == 0 && !transform && !chroma_key && draw_dsc->recolor_opa == LV_OPA_TRANSP && alpha_byte) {
95be: 2301 movs r3, #1
95c0: 9305 str r3, [sp, #20]
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);
95c2: a83a add r0, sp, #232 ; 0xe8
95c4: 4b09 ldr r3, [pc, #36] ; (95ec <lv_draw_map+0x820>)
95c6: 4798 blx r3
95c8: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0
95cc: f67f ad47 bls.w 905e <lv_draw_map+0x292>
95d0: f44f 73f0 mov.w r3, #480 ; 0x1e0
95d4: 931c str r3, [sp, #112] ; 0x70
95d6: e546 b.n 9066 <lv_draw_map+0x29a>
95d8: 0000be1d .word 0x0000be1d
95dc: 00012b37 .word 0x00012b37
95e0: 00008281 .word 0x00008281
95e4: 00012bed .word 0x00012bed
95e8: 00012571 .word 0x00012571
95ec: 000114fd .word 0x000114fd
95f0: 0001293d .word 0x0001293d
000095f4 <show_error>:
static void show_error(const lv_area_t * coords, const lv_area_t * clip_area, const char * msg)
{
95f4: b570 push {r4, r5, r6, lr}
95f6: b09e sub sp, #120 ; 0x78
95f8: 4604 mov r4, r0
95fa: 460d mov r5, r1
95fc: 4616 mov r6, r2
lv_draw_rect_dsc_t rect_dsc;
lv_draw_rect_dsc_init(&rect_dsc);
95fe: a809 add r0, sp, #36 ; 0x24
9600: 4b0b ldr r3, [pc, #44] ; (9630 <show_error+0x3c>)
9602: 4798 blx r3
rect_dsc.bg_color = LV_COLOR_WHITE;
9604: 4b0b ldr r3, [pc, #44] ; (9634 <show_error+0x40>)
9606: 881b ldrh r3, [r3, #0]
9608: f8ad 3026 strh.w r3, [sp, #38] ; 0x26
lv_draw_rect(coords, clip_area, &rect_dsc);
960c: aa09 add r2, sp, #36 ; 0x24
960e: 4629 mov r1, r5
9610: 4620 mov r0, r4
9612: 4b09 ldr r3, [pc, #36] ; (9638 <show_error+0x44>)
9614: 4798 blx r3
lv_draw_label_dsc_t label_dsc;
lv_draw_label_dsc_init(&label_dsc);
9616: a802 add r0, sp, #8
9618: 4b08 ldr r3, [pc, #32] ; (963c <show_error+0x48>)
961a: 4798 blx r3
lv_draw_label(coords, clip_area, &label_dsc, msg, NULL);
961c: 2300 movs r3, #0
961e: 9300 str r3, [sp, #0]
9620: 4633 mov r3, r6
9622: aa02 add r2, sp, #8
9624: 4629 mov r1, r5
9626: 4620 mov r0, r4
9628: 4c05 ldr r4, [pc, #20] ; (9640 <show_error+0x4c>)
962a: 47a0 blx r4
}
962c: b01e add sp, #120 ; 0x78
962e: bd70 pop {r4, r5, r6, pc}
9630: 0000c269 .word 0x0000c269
9634: 00024cb8 .word 0x00024cb8
9638: 0000c331 .word 0x0000c331
963c: 000099cd .word 0x000099cd
9640: 00009a25 .word 0x00009a25
00009644 <lv_draw_img_dsc_init>:
{
9644: b510 push {r4, lr}
9646: 4604 mov r4, r0
_lv_memset_00(dsc, sizeof(lv_draw_img_dsc_t));
9648: 2110 movs r1, #16
964a: 4b0c ldr r3, [pc, #48] ; (967c <lv_draw_img_dsc_init+0x38>)
964c: 4798 blx r3
dsc->recolor = LV_COLOR_BLACK;
964e: 7b23 ldrb r3, [r4, #12]
9650: f36f 0304 bfc r3, #0, #5
9654: 7323 strb r3, [r4, #12]
9656: 89a3 ldrh r3, [r4, #12]
9658: f36f 134a bfc r3, #5, #6
965c: 81a3 strh r3, [r4, #12]
965e: 0a1b lsrs r3, r3, #8
9660: f36f 03c7 bfc r3, #3, #5
9664: 7363 strb r3, [r4, #13]
dsc->opa = LV_OPA_COVER;
9666: 23ff movs r3, #255 ; 0xff
9668: 7023 strb r3, [r4, #0]
dsc->zoom = LV_IMG_ZOOM_NONE;
966a: f44f 7380 mov.w r3, #256 ; 0x100
966e: 8123 strh r3, [r4, #8]
dsc->antialias = LV_ANTIALIAS;
9670: 7be3 ldrb r3, [r4, #15]
9672: f043 0301 orr.w r3, r3, #1
9676: 73e3 strb r3, [r4, #15]
9678: bd10 pop {r4, pc}
967a: bf00 nop
967c: 00012b37 .word 0x00012b37
00009680 <lv_img_cf_get_px_size>:
switch(cf) {
9680: 3804 subs r0, #4
9682: 280a cmp r0, #10
9684: d813 bhi.n 96ae <lv_img_cf_get_px_size+0x2e>
9686: e8df f000 tbb [pc, r0]
968a: 0806 .short 0x0806
968c: 0e0c0a06 .word 0x0e0c0a06
9690: 0e0c0a10 .word 0x0e0c0a10
9694: 10 .byte 0x10
9695: 00 .byte 0x00
px_size = LV_COLOR_SIZE;
9696: 2010 movs r0, #16
9698: 4770 bx lr
px_size = LV_IMG_PX_SIZE_ALPHA_BYTE << 3;
969a: 2018 movs r0, #24
break;
969c: 4770 bx lr
px_size = 1;
969e: 2001 movs r0, #1
break;
96a0: 4770 bx lr
px_size = 2;
96a2: 2002 movs r0, #2
break;
96a4: 4770 bx lr
px_size = 4;
96a6: 2004 movs r0, #4
break;
96a8: 4770 bx lr
px_size = 8;
96aa: 2008 movs r0, #8
break;
96ac: 4770 bx lr
px_size = 0;
96ae: 2000 movs r0, #0
}
96b0: 4770 bx lr
000096b2 <lv_img_cf_is_chroma_keyed>:
switch(cf) {
96b2: 2803 cmp r0, #3
96b4: d005 beq.n 96c2 <lv_img_cf_is_chroma_keyed+0x10>
96b6: d302 bcc.n 96be <lv_img_cf_is_chroma_keyed+0xc>
96b8: 3806 subs r0, #6
96ba: 2804 cmp r0, #4
96bc: d901 bls.n 96c2 <lv_img_cf_is_chroma_keyed+0x10>
is_chroma_keyed = false;
96be: 2000 movs r0, #0
96c0: 4770 bx lr
is_chroma_keyed = true;
96c2: 2001 movs r0, #1
}
96c4: 4770 bx lr
000096c6 <lv_img_cf_has_alpha>:
switch(cf) {
96c6: 3802 subs r0, #2
96c8: 280c cmp r0, #12
96ca: d808 bhi.n 96de <lv_img_cf_has_alpha+0x18>
96cc: e8df f000 tbb [pc, r0]
96d0: 09070709 .word 0x09070709
96d4: 09090907 .word 0x09090907
96d8: 09090909 .word 0x09090909
96dc: 09 .byte 0x09
96dd: 00 .byte 0x00
has_alpha = false;
96de: 2000 movs r0, #0
96e0: 4770 bx lr
has_alpha = true;
96e2: 2001 movs r0, #1
}
96e4: 4770 bx lr
...
000096e8 <lv_draw_img>:
{
96e8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
96ec: b08f sub sp, #60 ; 0x3c
96ee: 4605 mov r5, r0
96f0: 460e mov r6, r1
if(src == NULL) {
96f2: b13a cbz r2, 9704 <lv_draw_img+0x1c>
96f4: 461c mov r4, r3
96f6: 4610 mov r0, r2
if(dsc->opa <= LV_OPA_MIN) return;
96f8: 781b ldrb r3, [r3, #0]
96fa: 2b05 cmp r3, #5
96fc: d810 bhi.n 9720 <lv_draw_img+0x38>
}
96fe: b00f add sp, #60 ; 0x3c
9700: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
LV_LOG_WARN("Image draw: src is NULL");
9704: 4b84 ldr r3, [pc, #528] ; (9918 <lv_draw_img+0x230>)
9706: 9300 str r3, [sp, #0]
9708: 4b84 ldr r3, [pc, #528] ; (991c <lv_draw_img+0x234>)
970a: 224d movs r2, #77 ; 0x4d
970c: 4984 ldr r1, [pc, #528] ; (9920 <lv_draw_img+0x238>)
970e: 2002 movs r0, #2
9710: 4c84 ldr r4, [pc, #528] ; (9924 <lv_draw_img+0x23c>)
9712: 47a0 blx r4
show_error(coords, mask, "No\ndata");
9714: 4a84 ldr r2, [pc, #528] ; (9928 <lv_draw_img+0x240>)
9716: 4631 mov r1, r6
9718: 4628 mov r0, r5
971a: 4b84 ldr r3, [pc, #528] ; (992c <lv_draw_img+0x244>)
971c: 4798 blx r3
return;
971e: e7ee b.n 96fe <lv_draw_img+0x16>
lv_img_cache_entry_t * cdsc = _lv_img_cache_open(src, draw_dsc->recolor);
9720: 89a1 ldrh r1, [r4, #12]
9722: 4b83 ldr r3, [pc, #524] ; (9930 <lv_draw_img+0x248>)
9724: 4798 blx r3
if(cdsc == NULL) return LV_RES_INV;
9726: 4607 mov r7, r0
9728: 2800 cmp r0, #0
972a: f000 80b5 beq.w 9898 <lv_draw_img+0x1b0>
bool chroma_keyed = lv_img_cf_is_chroma_keyed(cdsc->dec_dsc.header.cf);
972e: f890 900c ldrb.w r9, [r0, #12]
9732: f009 091f and.w r9, r9, #31
9736: 4648 mov r0, r9
9738: 4b7e ldr r3, [pc, #504] ; (9934 <lv_draw_img+0x24c>)
973a: 4798 blx r3
973c: 4680 mov r8, r0
bool alpha_byte = lv_img_cf_has_alpha(cdsc->dec_dsc.header.cf);
973e: 4648 mov r0, r9
9740: 4b7d ldr r3, [pc, #500] ; (9938 <lv_draw_img+0x250>)
9742: 4798 blx r3
9744: 4681 mov r9, r0
if(cdsc->dec_dsc.error_msg != NULL) {
9746: 69bb ldr r3, [r7, #24]
9748: b16b cbz r3, 9766 <lv_draw_img+0x7e>
LV_LOG_WARN("Image draw error");
974a: 4b7c ldr r3, [pc, #496] ; (993c <lv_draw_img+0x254>)
974c: 9300 str r3, [sp, #0]
974e: 4b7c ldr r3, [pc, #496] ; (9940 <lv_draw_img+0x258>)
9750: 22f7 movs r2, #247 ; 0xf7
9752: 4973 ldr r1, [pc, #460] ; (9920 <lv_draw_img+0x238>)
9754: 2002 movs r0, #2
9756: 4c73 ldr r4, [pc, #460] ; (9924 <lv_draw_img+0x23c>)
9758: 47a0 blx r4
show_error(coords, clip_area, cdsc->dec_dsc.error_msg);
975a: 69ba ldr r2, [r7, #24]
975c: 4631 mov r1, r6
975e: 4628 mov r0, r5
9760: 4b72 ldr r3, [pc, #456] ; (992c <lv_draw_img+0x244>)
9762: 4798 blx r3
9764: e7cb b.n 96fe <lv_draw_img+0x16>
else if(cdsc->dec_dsc.img_data) {
9766: 693b ldr r3, [r7, #16]
9768: 2b00 cmp r3, #0
976a: d049 beq.n 9800 <lv_draw_img+0x118>
976c: 1e6b subs r3, r5, #1
976e: 1de8 adds r0, r5, #7
9770: aa0a add r2, sp, #40 ; 0x28
9772: f813 1f01 ldrb.w r1, [r3, #1]!
9776: f802 1b01 strb.w r1, [r2], #1
while(len) {
977a: 4298 cmp r0, r3
977c: d1f9 bne.n 9772 <lv_draw_img+0x8a>
if(draw_dsc->angle || draw_dsc->zoom != LV_IMG_ZOOM_NONE) {
977e: 8863 ldrh r3, [r4, #2]
9780: b91b cbnz r3, 978a <lv_draw_img+0xa2>
9782: 8922 ldrh r2, [r4, #8]
9784: f5b2 7f80 cmp.w r2, #256 ; 0x100
9788: d028 beq.n 97dc <lv_draw_img+0xf4>
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
978a: 88ea ldrh r2, [r5, #6]
978c: 3201 adds r2, #1
978e: 8869 ldrh r1, [r5, #2]
9790: 1a52 subs r2, r2, r1
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
9792: 88a9 ldrh r1, [r5, #4]
9794: 3101 adds r1, #1
9796: 8828 ldrh r0, [r5, #0]
9798: 1a09 subs r1, r1, r0
_lv_img_buf_get_transformed_area(&map_area_rot, w, h, draw_dsc->angle, draw_dsc->zoom, &draw_dsc->pivot);
979a: 1d20 adds r0, r4, #4
979c: 9001 str r0, [sp, #4]
979e: 8920 ldrh r0, [r4, #8]
97a0: 9000 str r0, [sp, #0]
97a2: b21b sxth r3, r3
97a4: b212 sxth r2, r2
97a6: b209 sxth r1, r1
97a8: a80a add r0, sp, #40 ; 0x28
97aa: f8df a1b8 ldr.w sl, [pc, #440] ; 9964 <lv_draw_img+0x27c>
97ae: 47d0 blx sl
map_area_rot.x1 += coords->x1;
97b0: 882a ldrh r2, [r5, #0]
97b2: f8bd 3028 ldrh.w r3, [sp, #40] ; 0x28
97b6: 4413 add r3, r2
97b8: f8ad 3028 strh.w r3, [sp, #40] ; 0x28
map_area_rot.y1 += coords->y1;
97bc: 886b ldrh r3, [r5, #2]
97be: f8bd 102a ldrh.w r1, [sp, #42] ; 0x2a
97c2: 4419 add r1, r3
97c4: f8ad 102a strh.w r1, [sp, #42] ; 0x2a
map_area_rot.x2 += coords->x1;
97c8: f8bd 102c ldrh.w r1, [sp, #44] ; 0x2c
97cc: 440a add r2, r1
97ce: f8ad 202c strh.w r2, [sp, #44] ; 0x2c
map_area_rot.y2 += coords->y1;
97d2: f8bd 202e ldrh.w r2, [sp, #46] ; 0x2e
97d6: 4413 add r3, r2
97d8: f8ad 302e strh.w r3, [sp, #46] ; 0x2e
union_ok = _lv_area_intersect(&mask_com, clip_area, &map_area_rot);
97dc: aa0a add r2, sp, #40 ; 0x28
97de: 4631 mov r1, r6
97e0: a80c add r0, sp, #48 ; 0x30
97e2: 4b58 ldr r3, [pc, #352] ; (9944 <lv_draw_img+0x25c>)
97e4: 4798 blx r3
if(union_ok == false) {
97e6: 2800 cmp r0, #0
97e8: d089 beq.n 96fe <lv_draw_img+0x16>
lv_draw_map(coords, &mask_com, cdsc->dec_dsc.img_data, draw_dsc, chroma_keyed, alpha_byte);
97ea: 693a ldr r2, [r7, #16]
97ec: f8cd 9004 str.w r9, [sp, #4]
97f0: f8cd 8000 str.w r8, [sp]
97f4: 4623 mov r3, r4
97f6: a90c add r1, sp, #48 ; 0x30
97f8: 4628 mov r0, r5
97fa: 4c53 ldr r4, [pc, #332] ; (9948 <lv_draw_img+0x260>)
97fc: 47a0 blx r4
97fe: e77e b.n 96fe <lv_draw_img+0x16>
union_ok = _lv_area_intersect(&mask_com, clip_area, coords);
9800: 462a mov r2, r5
9802: 4631 mov r1, r6
9804: a808 add r0, sp, #32
9806: 4b4f ldr r3, [pc, #316] ; (9944 <lv_draw_img+0x25c>)
9808: 4798 blx r3
if(union_ok == false) {
980a: 2800 cmp r0, #0
980c: f43f af77 beq.w 96fe <lv_draw_img+0x16>
9810: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24
9814: 3301 adds r3, #1
9816: f8bd 2020 ldrh.w r2, [sp, #32]
981a: 1a9b subs r3, r3, r2
981c: b21b sxth r3, r3
981e: 9303 str r3, [sp, #12]
uint8_t * buf = _lv_mem_buf_get(lv_area_get_width(&mask_com) *
9820: eb03 0043 add.w r0, r3, r3, lsl #1
9824: 4b49 ldr r3, [pc, #292] ; (994c <lv_draw_img+0x264>)
9826: 4798 blx r3
9828: 9002 str r0, [sp, #8]
982a: f10d 021f add.w r2, sp, #31
uint8_t * d8 = (uint8_t *)dst;
982e: ab0a add r3, sp, #40 ; 0x28
while(len) {
9830: a80c add r0, sp, #48 ; 0x30
*d8 = *s8;
9832: f812 1f01 ldrb.w r1, [r2, #1]!
9836: f803 1b01 strb.w r1, [r3], #1
while(len) {
983a: 4283 cmp r3, r0
983c: d1f9 bne.n 9832 <lv_draw_img+0x14a>
lv_area_set_height(&line, 1);
983e: 2101 movs r1, #1
9840: a80a add r0, sp, #40 ; 0x28
9842: 4b43 ldr r3, [pc, #268] ; (9950 <lv_draw_img+0x268>)
9844: 4798 blx r3
int32_t x = mask_com.x1 - coords->x1;
9846: f9bd 3020 ldrsh.w r3, [sp, #32]
984a: f9b5 2000 ldrsh.w r2, [r5]
int32_t y = mask_com.y1 - coords->y1;
984e: f9bd a022 ldrsh.w sl, [sp, #34] ; 0x22
9852: f9b5 1002 ldrsh.w r1, [r5, #2]
9856: ebaa 0101 sub.w r1, sl, r1
985a: 4608 mov r0, r1
for(row = mask_com.y1; row <= mask_com.y2; row++) {
985c: f9bd 1026 ldrsh.w r1, [sp, #38] ; 0x26
9860: 458a cmp sl, r1
9862: dc55 bgt.n 9910 <lv_draw_img+0x228>
union_ok = _lv_area_intersect(&mask_line, clip_area, &line);
9864: f8df b0dc ldr.w fp, [pc, #220] ; 9944 <lv_draw_img+0x25c>
read_res = lv_img_decoder_read_line(&cdsc->dec_dsc, x, y, width, buf);
9868: 1a9b subs r3, r3, r2
986a: b21b sxth r3, r3
986c: 9305 str r3, [sp, #20]
986e: 9507 str r5, [sp, #28]
9870: 9406 str r4, [sp, #24]
9872: 4644 mov r4, r8
9874: 4680 mov r8, r0
9876: e023 b.n 98c0 <lv_draw_img+0x1d8>
9878: 9d07 ldr r5, [sp, #28]
lv_img_decoder_close(&cdsc->dec_dsc);
987a: 9804 ldr r0, [sp, #16]
987c: 4b35 ldr r3, [pc, #212] ; (9954 <lv_draw_img+0x26c>)
987e: 4798 blx r3
LV_LOG_WARN("Image draw can't read the line");
9880: 4b35 ldr r3, [pc, #212] ; (9958 <lv_draw_img+0x270>)
9882: 9300 str r3, [sp, #0]
9884: 4b2e ldr r3, [pc, #184] ; (9940 <lv_draw_img+0x258>)
9886: f44f 729a mov.w r2, #308 ; 0x134
988a: 4925 ldr r1, [pc, #148] ; (9920 <lv_draw_img+0x238>)
988c: 2002 movs r0, #2
988e: 4c25 ldr r4, [pc, #148] ; (9924 <lv_draw_img+0x23c>)
9890: 47a0 blx r4
_lv_mem_buf_release(buf);
9892: 9802 ldr r0, [sp, #8]
9894: 4b31 ldr r3, [pc, #196] ; (995c <lv_draw_img+0x274>)
9896: 4798 blx r3
LV_LOG_WARN("Image draw error");
9898: 4b28 ldr r3, [pc, #160] ; (993c <lv_draw_img+0x254>)
989a: 9300 str r3, [sp, #0]
989c: 4b1f ldr r3, [pc, #124] ; (991c <lv_draw_img+0x234>)
989e: 2258 movs r2, #88 ; 0x58
98a0: 491f ldr r1, [pc, #124] ; (9920 <lv_draw_img+0x238>)
98a2: 2002 movs r0, #2
98a4: 4c1f ldr r4, [pc, #124] ; (9924 <lv_draw_img+0x23c>)
98a6: 47a0 blx r4
show_error(coords, mask, "No\ndata");
98a8: 4a1f ldr r2, [pc, #124] ; (9928 <lv_draw_img+0x240>)
98aa: 4631 mov r1, r6
98ac: 4628 mov r0, r5
98ae: 4b1f ldr r3, [pc, #124] ; (992c <lv_draw_img+0x244>)
98b0: 4798 blx r3
return;
98b2: e724 b.n 96fe <lv_draw_img+0x16>
for(row = mask_com.y1; row <= mask_com.y2; row++) {
98b4: f10a 0a01 add.w sl, sl, #1
98b8: f9bd 3026 ldrsh.w r3, [sp, #38] ; 0x26
98bc: 459a cmp sl, r3
98be: dc27 bgt.n 9910 <lv_draw_img+0x228>
union_ok = _lv_area_intersect(&mask_line, clip_area, &line);
98c0: aa0a add r2, sp, #40 ; 0x28
98c2: 4631 mov r1, r6
98c4: a80c add r0, sp, #48 ; 0x30
98c6: 47d8 blx fp
if(union_ok == false) continue;
98c8: 2800 cmp r0, #0
98ca: d0f3 beq.n 98b4 <lv_draw_img+0x1cc>
read_res = lv_img_decoder_read_line(&cdsc->dec_dsc, x, y, width, buf);
98cc: 9704 str r7, [sp, #16]
98ce: 9b02 ldr r3, [sp, #8]
98d0: 9300 str r3, [sp, #0]
98d2: 9b03 ldr r3, [sp, #12]
98d4: fa0f f288 sxth.w r2, r8
98d8: 9905 ldr r1, [sp, #20]
98da: 4638 mov r0, r7
98dc: 4d20 ldr r5, [pc, #128] ; (9960 <lv_draw_img+0x278>)
98de: 47a8 blx r5
if(read_res != LV_RES_OK) {
98e0: 2801 cmp r0, #1
98e2: d1c9 bne.n 9878 <lv_draw_img+0x190>
lv_draw_map(&line, &mask_line, buf, draw_dsc, chroma_keyed, alpha_byte);
98e4: f8cd 9004 str.w r9, [sp, #4]
98e8: 9400 str r4, [sp, #0]
98ea: 9b06 ldr r3, [sp, #24]
98ec: 9a02 ldr r2, [sp, #8]
98ee: a90c add r1, sp, #48 ; 0x30
98f0: a80a add r0, sp, #40 ; 0x28
98f2: 4d15 ldr r5, [pc, #84] ; (9948 <lv_draw_img+0x260>)
98f4: 47a8 blx r5
line.y1++;
98f6: f8bd 302a ldrh.w r3, [sp, #42] ; 0x2a
98fa: 3301 adds r3, #1
98fc: f8ad 302a strh.w r3, [sp, #42] ; 0x2a
line.y2++;
9900: f8bd 302e ldrh.w r3, [sp, #46] ; 0x2e
9904: 3301 adds r3, #1
9906: f8ad 302e strh.w r3, [sp, #46] ; 0x2e
y++;
990a: f108 0801 add.w r8, r8, #1
990e: e7d1 b.n 98b4 <lv_draw_img+0x1cc>
_lv_mem_buf_release(buf);
9910: 9802 ldr r0, [sp, #8]
9912: 4b12 ldr r3, [pc, #72] ; (995c <lv_draw_img+0x274>)
9914: 4798 blx r3
9916: e6f2 b.n 96fe <lv_draw_img+0x16>
9918: 00024d0c .word 0x00024d0c
991c: 00024cbc .word 0x00024cbc
9920: 00024cdc .word 0x00024cdc
9924: 0001225d .word 0x0001225d
9928: 00024d24 .word 0x00024d24
992c: 000095f5 .word 0x000095f5
9930: 0000f201 .word 0x0000f201
9934: 000096b3 .word 0x000096b3
9938: 000096c7 .word 0x000096c7
993c: 00024d2c .word 0x00024d2c
9940: 00024cc8 .word 0x00024cc8
9944: 00011519 .word 0x00011519
9948: 00008dcd .word 0x00008dcd
994c: 0001293d .word 0x0001293d
9950: 000114f3 .word 0x000114f3
9954: 0000ff35 .word 0x0000ff35
9958: 00024d40 .word 0x00024d40
995c: 00012571 .word 0x00012571
9960: 0000ff11 .word 0x0000ff11
9964: 0000ec65 .word 0x0000ec65
00009968 <lv_img_src_get_type>:
if(src == NULL) return img_src_type;
9968: b158 cbz r0, 9982 <lv_img_src_get_type+0x1a>
if(u8_p[0] >= 0x20 && u8_p[0] <= 0x7F) {
996a: 7802 ldrb r2, [r0, #0]
996c: f1a2 0320 sub.w r3, r2, #32
9970: b2db uxtb r3, r3
9972: 2b5f cmp r3, #95 ; 0x5f
9974: d907 bls.n 9986 <lv_img_src_get_type+0x1e>
else if(u8_p[0] >= 0x80) {
9976: b252 sxtb r2, r2
img_src_type = LV_IMG_SRC_VARIABLE; /*`lv_img_dsc_t` is design to the first byte < 0x20*/
9978: 2a00 cmp r2, #0
997a: bfb4 ite lt
997c: 2002 movlt r0, #2
997e: 2000 movge r0, #0
9980: 4770 bx lr
if(src == NULL) return img_src_type;
9982: 2003 movs r0, #3
9984: 4770 bx lr
img_src_type = LV_IMG_SRC_FILE; /*If it's an ASCII character then it's file name*/
9986: 2001 movs r0, #1
}
9988: 4770 bx lr
0000998a <hex_char_to_num>:
*/
static uint8_t hex_char_to_num(char hex)
{
uint8_t result = 0;
if(hex >= '0' && hex <= '9') {
998a: f1a0 0330 sub.w r3, r0, #48 ; 0x30
998e: b2db uxtb r3, r3
9990: 2b09 cmp r3, #9
9992: d917 bls.n 99c4 <hex_char_to_num+0x3a>
result = hex - '0';
}
else {
if(hex >= 'a') hex -= 'a' - 'A'; /*Convert to upper case*/
9994: 2860 cmp r0, #96 ; 0x60
9996: bf84 itt hi
9998: 3820 subhi r0, #32
999a: b2c0 uxtbhi r0, r0
switch(hex) {
999c: 3841 subs r0, #65 ; 0x41
999e: 2805 cmp r0, #5
99a0: d80e bhi.n 99c0 <hex_char_to_num+0x36>
99a2: e8df f000 tbb [pc, r0]
99a6: 0311 .short 0x0311
99a8: 0b090705 .word 0x0b090705
case 'A':
result = 10;
break;
case 'B':
result = 11;
99ac: 200b movs r0, #11
99ae: 4770 bx lr
break;
case 'C':
result = 12;
99b0: 200c movs r0, #12
break;
99b2: 4770 bx lr
case 'D':
result = 13;
99b4: 200d movs r0, #13
break;
99b6: 4770 bx lr
case 'E':
result = 14;
99b8: 200e movs r0, #14
break;
99ba: 4770 bx lr
case 'F':
result = 15;
99bc: 200f movs r0, #15
break;
99be: 4770 bx lr
default:
result = 0;
99c0: 2000 movs r0, #0
break;
99c2: 4770 bx lr
result = hex - '0';
99c4: 4618 mov r0, r3
99c6: 4770 bx lr
result = 10;
99c8: 200a movs r0, #10
}
}
return result;
}
99ca: 4770 bx lr
000099cc <lv_draw_label_dsc_init>:
{
99cc: b510 push {r4, lr}
99ce: 4604 mov r4, r0
_lv_memset_00(dsc, sizeof(lv_draw_label_dsc_t));
99d0: 211c movs r1, #28
99d2: 4b12 ldr r3, [pc, #72] ; (9a1c <lv_draw_label_dsc_init+0x50>)
99d4: 4798 blx r3
dsc->opa = LV_OPA_COVER;
99d6: 23ff movs r3, #255 ; 0xff
99d8: 7223 strb r3, [r4, #8]
dsc->color = LV_COLOR_BLACK;
99da: 7823 ldrb r3, [r4, #0]
99dc: f36f 0304 bfc r3, #0, #5
99e0: 7023 strb r3, [r4, #0]
99e2: 8823 ldrh r3, [r4, #0]
99e4: f36f 134a bfc r3, #5, #6
99e8: 8023 strh r3, [r4, #0]
99ea: 0a1b lsrs r3, r3, #8
99ec: f36f 03c7 bfc r3, #3, #5
99f0: 7063 strb r3, [r4, #1]
dsc->font = LV_THEME_DEFAULT_FONT_NORMAL;
99f2: 4b0b ldr r3, [pc, #44] ; (9a20 <lv_draw_label_dsc_init+0x54>)
99f4: 6063 str r3, [r4, #4]
dsc->sel_start = LV_DRAW_LABEL_NO_TXT_SEL;
99f6: f64f 73ff movw r3, #65535 ; 0xffff
99fa: 81e3 strh r3, [r4, #14]
dsc->sel_end = LV_DRAW_LABEL_NO_TXT_SEL;
99fc: 8223 strh r3, [r4, #16]
dsc->sel_color = LV_COLOR_BLUE;
99fe: 78a3 ldrb r3, [r4, #2]
9a00: f043 031f orr.w r3, r3, #31
9a04: 70a3 strb r3, [r4, #2]
9a06: 8863 ldrh r3, [r4, #2]
9a08: f36f 134a bfc r3, #5, #6
9a0c: 8063 strh r3, [r4, #2]
9a0e: 0a1b lsrs r3, r3, #8
9a10: f36f 03c7 bfc r3, #3, #5
9a14: 70e3 strb r3, [r4, #3]
dsc->bidi_dir = LV_BIDI_DIR_LTR;
9a16: 2300 movs r3, #0
9a18: 75a3 strb r3, [r4, #22]
9a1a: bd10 pop {r4, pc}
9a1c: 00012b37 .word 0x00012b37
9a20: 20000010 .word 0x20000010
00009a24 <lv_draw_label>:
{
9a24: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
9a28: b0d9 sub sp, #356 ; 0x164
9a2a: 9c62 ldr r4, [sp, #392] ; 0x188
if(dsc->opa <= LV_OPA_MIN) return;
9a2c: 7a15 ldrb r5, [r2, #8]
9a2e: 2d05 cmp r5, #5
9a30: d901 bls.n 9a36 <lv_draw_label+0x12>
if(txt[0] == '\0') return;
9a32: 781d ldrb r5, [r3, #0]
9a34: b915 cbnz r5, 9a3c <lv_draw_label+0x18>
}
9a36: b059 add sp, #356 ; 0x164
9a38: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
9a3c: 930a str r3, [sp, #40] ; 0x28
9a3e: 4693 mov fp, r2
9a40: 460a mov r2, r1
9a42: 910d str r1, [sp, #52] ; 0x34
9a44: 4605 mov r5, r0
9a46: 9013 str r0, [sp, #76] ; 0x4c
const lv_font_t * font = dsc->font;
9a48: f8db 3004 ldr.w r3, [fp, #4]
9a4c: 9305 str r3, [sp, #20]
bool clip_ok = _lv_area_intersect(&clipped_area, coords, mask);
9a4e: 4601 mov r1, r0
9a50: a856 add r0, sp, #344 ; 0x158
9a52: 4baa ldr r3, [pc, #680] ; (9cfc <lv_draw_label+0x2d8>)
9a54: 4798 blx r3
if(!clip_ok) return;
9a56: 2800 cmp r0, #0
9a58: d0ed beq.n 9a36 <lv_draw_label+0x12>
if((dsc->flag & LV_TXT_FLAG_EXPAND) == 0) {
9a5a: f89b 2017 ldrb.w r2, [fp, #23]
9a5e: f012 0f02 tst.w r2, #2
9a62: d121 bne.n 9aa8 <lv_draw_label+0x84>
9a64: 88ab ldrh r3, [r5, #4]
9a66: 3301 adds r3, #1
9a68: 882a ldrh r2, [r5, #0]
9a6a: 1a9b subs r3, r3, r2
w = lv_area_get_width(coords);
9a6c: b21b sxth r3, r3
int32_t line_height_font = lv_font_get_line_height(font);
9a6e: 9a05 ldr r2, [sp, #20]
9a70: f9b2 a008 ldrsh.w sl, [r2, #8]
int32_t line_height = line_height_font + dsc->line_space;
9a74: f9bb 900a ldrsh.w r9, [fp, #10]
9a78: 44d1 add r9, sl
pos.x = coords->x1;
9a7a: 9913 ldr r1, [sp, #76] ; 0x4c
9a7c: f9b1 2000 ldrsh.w r2, [r1]
9a80: 921f str r2, [sp, #124] ; 0x7c
pos.y = coords->y1;
9a82: f9b1 0002 ldrsh.w r0, [r1, #2]
x_ofs = dsc->ofs_x;
9a86: f9bb 2012 ldrsh.w r2, [fp, #18]
9a8a: 921a str r2, [sp, #104] ; 0x68
y_ofs = dsc->ofs_y;
9a8c: f9bb 1014 ldrsh.w r1, [fp, #20]
pos.y += y_ofs;
9a90: 1842 adds r2, r0, r1
9a92: b292 uxth r2, r2
9a94: b215 sxth r5, r2
if(hint && y_ofs == 0 && coords->y1 < 0) {
9a96: 2c00 cmp r4, #0
9a98: d04a beq.n 9b30 <lv_draw_label+0x10c>
9a9a: 2900 cmp r1, #0
9a9c: d14b bne.n 9b36 <lv_draw_label+0x112>
9a9e: 2800 cmp r0, #0
9aa0: db14 blt.n 9acc <lv_draw_label+0xa8>
pos.y += y_ofs;
9aa2: 950e str r5, [sp, #56] ; 0x38
uint32_t line_start = 0;
9aa4: 2600 movs r6, #0
9aa6: e029 b.n 9afc <lv_draw_label+0xd8>
_lv_txt_get_size(&p, txt, dsc->font, dsc->letter_space, dsc->line_space, LV_COORD_MAX,
9aa8: f9bb 300c ldrsh.w r3, [fp, #12]
9aac: 9202 str r2, [sp, #8]
9aae: f647 4218 movw r2, #31768 ; 0x7c18
9ab2: 9201 str r2, [sp, #4]
9ab4: f9bb 200a ldrsh.w r2, [fp, #10]
9ab8: 9200 str r2, [sp, #0]
9aba: f8db 2004 ldr.w r2, [fp, #4]
9abe: 990a ldr r1, [sp, #40] ; 0x28
9ac0: a83a add r0, sp, #232 ; 0xe8
9ac2: 4d8f ldr r5, [pc, #572] ; (9d00 <lv_draw_label+0x2dc>)
9ac4: 47a8 blx r5
w = p.x;
9ac6: f9bd 30e8 ldrsh.w r3, [sp, #232] ; 0xe8
9aca: e7d0 b.n 9a6e <lv_draw_label+0x4a>
if(LV_MATH_ABS(hint->coord_y - coords->y1) > LV_LABEL_HINT_UPDATE_TH - 2 * line_height) {
9acc: 68a1 ldr r1, [r4, #8]
9ace: 1a08 subs r0, r1, r0
9ad0: ea80 71e0 eor.w r1, r0, r0, asr #31
9ad4: eba1 71e0 sub.w r1, r1, r0, asr #31
9ad8: f5c9 7000 rsb r0, r9, #512 ; 0x200
9adc: ebb1 0f40 cmp.w r1, r0, lsl #1
9ae0: dd05 ble.n 9aee <lv_draw_label+0xca>
hint->line_start = -1;
9ae2: f04f 32ff mov.w r2, #4294967295
9ae6: 6022 str r2, [r4, #0]
pos.y += y_ofs;
9ae8: 950e str r5, [sp, #56] ; 0x38
uint32_t line_start = 0;
9aea: 2600 movs r6, #0
9aec: e006 b.n 9afc <lv_draw_label+0xd8>
last_line_start = hint->line_start;
9aee: 6826 ldr r6, [r4, #0]
if(hint && last_line_start >= 0) {
9af0: 2e00 cmp r6, #0
9af2: db23 blt.n 9b3c <lv_draw_label+0x118>
pos.y += hint->y;
9af4: 6861 ldr r1, [r4, #4]
9af6: 440a add r2, r1
9af8: b212 sxth r2, r2
9afa: 920e str r2, [sp, #56] ; 0x38
uint32_t line_end = line_start + _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag);
9afc: b21b sxth r3, r3
9afe: 4619 mov r1, r3
9b00: 9310 str r3, [sp, #64] ; 0x40
9b02: f9bb 200c ldrsh.w r2, [fp, #12]
9b06: f89b 3017 ldrb.w r3, [fp, #23]
9b0a: 9300 str r3, [sp, #0]
9b0c: 460b mov r3, r1
9b0e: 9905 ldr r1, [sp, #20]
9b10: 980a ldr r0, [sp, #40] ; 0x28
9b12: 4430 add r0, r6
9b14: 4d7b ldr r5, [pc, #492] ; (9d04 <lv_draw_label+0x2e0>)
9b16: 47a8 blx r5
9b18: 1983 adds r3, r0, r6
line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag);
9b1a: 462f mov r7, r5
if(hint && pos.y >= -LV_LABEL_HINT_UPDATE_TH && hint->line_start < 0) {
9b1c: f8df 81f8 ldr.w r8, [pc, #504] ; 9d18 <lv_draw_label+0x2f4>
9b20: 4631 mov r1, r6
9b22: f8cd 9018 str.w r9, [sp, #24]
9b26: 46d1 mov r9, sl
9b28: 9d0e ldr r5, [sp, #56] ; 0x38
9b2a: 4626 mov r6, r4
9b2c: 461c mov r4, r3
while(pos.y + line_height_font < mask->y1) {
9b2e: e00f b.n 9b50 <lv_draw_label+0x12c>
pos.y += y_ofs;
9b30: 950e str r5, [sp, #56] ; 0x38
uint32_t line_start = 0;
9b32: 2600 movs r6, #0
9b34: e7e2 b.n 9afc <lv_draw_label+0xd8>
pos.y += y_ofs;
9b36: 950e str r5, [sp, #56] ; 0x38
uint32_t line_start = 0;
9b38: 2600 movs r6, #0
9b3a: e7df b.n 9afc <lv_draw_label+0xd8>
pos.y += y_ofs;
9b3c: 950e str r5, [sp, #56] ; 0x38
uint32_t line_start = 0;
9b3e: 2600 movs r6, #0
9b40: e7dc b.n 9afc <lv_draw_label+0xd8>
9b42: 4621 mov r1, r4
if(txt[line_start] == '\0') return;
9b44: f89a 3000 ldrb.w r3, [sl]
9b48: 2b00 cmp r3, #0
9b4a: f43f af74 beq.w 9a36 <lv_draw_label+0x12>
line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag);
9b4e: 4604 mov r4, r0
while(pos.y + line_height_font < mask->y1) {
9b50: eb05 0309 add.w r3, r5, r9
9b54: 9a0d ldr r2, [sp, #52] ; 0x34
9b56: f9b2 2002 ldrsh.w r2, [r2, #2]
9b5a: 4293 cmp r3, r2
9b5c: da20 bge.n 9ba0 <lv_draw_label+0x17c>
line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag);
9b5e: 9b0a ldr r3, [sp, #40] ; 0x28
9b60: eb03 0a04 add.w sl, r3, r4
9b64: f9bb 200c ldrsh.w r2, [fp, #12]
9b68: f89b 3017 ldrb.w r3, [fp, #23]
9b6c: 9300 str r3, [sp, #0]
9b6e: 9b10 ldr r3, [sp, #64] ; 0x40
9b70: 9905 ldr r1, [sp, #20]
9b72: 4650 mov r0, sl
9b74: 47b8 blx r7
9b76: 4420 add r0, r4
9b78: 9b06 ldr r3, [sp, #24]
9b7a: 441d add r5, r3
9b7c: b22d sxth r5, r5
if(hint && pos.y >= -LV_LABEL_HINT_UPDATE_TH && hint->line_start < 0) {
9b7e: 2e00 cmp r6, #0
9b80: d0df beq.n 9b42 <lv_draw_label+0x11e>
9b82: 4545 cmp r5, r8
9b84: dbdd blt.n 9b42 <lv_draw_label+0x11e>
9b86: 6833 ldr r3, [r6, #0]
9b88: 2b00 cmp r3, #0
9b8a: dada bge.n 9b42 <lv_draw_label+0x11e>
hint->line_start = line_start;
9b8c: 6034 str r4, [r6, #0]
hint->y = pos.y - coords->y1;
9b8e: 9a13 ldr r2, [sp, #76] ; 0x4c
9b90: f9b2 3002 ldrsh.w r3, [r2, #2]
9b94: 1aeb subs r3, r5, r3
9b96: 6073 str r3, [r6, #4]
hint->coord_y = coords->y1;
9b98: f9b2 3002 ldrsh.w r3, [r2, #2]
9b9c: 60b3 str r3, [r6, #8]
9b9e: e7d0 b.n 9b42 <lv_draw_label+0x11e>
9ba0: 460e mov r6, r1
9ba2: 9407 str r4, [sp, #28]
9ba4: f8dd 9018 ldr.w r9, [sp, #24]
9ba8: 950e str r5, [sp, #56] ; 0x38
if(dsc->flag & LV_TXT_FLAG_CENTER) {
9baa: f89b 2017 ldrb.w r2, [fp, #23]
9bae: f012 0f04 tst.w r2, #4
9bb2: d12f bne.n 9c14 <lv_draw_label+0x1f0>
else if(dsc->flag & LV_TXT_FLAG_RIGHT) {
9bb4: f012 0f08 tst.w r2, #8
9bb8: d145 bne.n 9c46 <lv_draw_label+0x222>
lv_opa_t opa = dsc->opa;
9bba: f89b 3008 ldrb.w r3, [fp, #8]
9bbe: 930b str r3, [sp, #44] ; 0x2c
uint16_t sel_start = dsc->sel_start;
9bc0: f8bb 700e ldrh.w r7, [fp, #14]
uint16_t sel_end = dsc->sel_end;
9bc4: f8bb 3010 ldrh.w r3, [fp, #16]
9bc8: 4619 mov r1, r3
9bca: 9308 str r3, [sp, #32]
if(sel_start > sel_end) {
9bcc: 429f cmp r7, r3
9bce: d902 bls.n 9bd6 <lv_draw_label+0x1b2>
9bd0: 463b mov r3, r7
sel_start = sel_end;
9bd2: 460f mov r7, r1
sel_end = tmp;
9bd4: 9308 str r3, [sp, #32]
if((dsc->decor & LV_TEXT_DECOR_UNDERLINE) || (dsc->decor & LV_TEXT_DECOR_STRIKETHROUGH)) {
9bd6: f89b 3018 ldrb.w r3, [fp, #24]
9bda: f013 0f03 tst.w r3, #3
9bde: d149 bne.n 9c74 <lv_draw_label+0x250>
lv_draw_rect_dsc_init(&draw_dsc_sel);
9be0: a83d add r0, sp, #244 ; 0xf4
9be2: 4b49 ldr r3, [pc, #292] ; (9d08 <lv_draw_label+0x2e4>)
9be4: 4798 blx r3
draw_dsc_sel.bg_color = dsc->sel_color;
9be6: f8bb 3002 ldrh.w r3, [fp, #2]
9bea: f8ad 30f6 strh.w r3, [sp, #246] ; 0xf6
9bee: 9b0b ldr r3, [sp, #44] ; 0x2c
9bf0: 2bfa cmp r3, #250 ; 0xfa
9bf2: bf88 it hi
9bf4: 23ff movhi r3, #255 ; 0xff
9bf6: 9316 str r3, [sp, #88] ; 0x58
9bf8: fa1f f389 uxth.w r3, r9
9bfc: 9317 str r3, [sp, #92] ; 0x5c
9bfe: f8bd 3038 ldrh.w r3, [sp, #56] ; 0x38
9c02: 9311 str r3, [sp, #68] ; 0x44
while(txt[line_start] != '\0') {
9c04: 9d1f ldr r5, [sp, #124] ; 0x7c
uint16_t par_start = 0;
9c06: 2300 movs r3, #0
9c08: 9319 str r3, [sp, #100] ; 0x64
9c0a: 46ba mov sl, r7
9c0c: 46d8 mov r8, fp
9c0e: 46b3 mov fp, r6
while(txt[line_start] != '\0') {
9c10: f000 bdd3 b.w a7ba <lv_draw_label+0xd96>
line_width = _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag);
9c14: f9bb 300c ldrsh.w r3, [fp, #12]
9c18: 1ba1 subs r1, r4, r6
9c1a: 9200 str r2, [sp, #0]
9c1c: 9a05 ldr r2, [sp, #20]
9c1e: b289 uxth r1, r1
9c20: 980a ldr r0, [sp, #40] ; 0x28
9c22: 4430 add r0, r6
9c24: 4c39 ldr r4, [pc, #228] ; (9d0c <lv_draw_label+0x2e8>)
9c26: 47a0 blx r4
9c28: 9a13 ldr r2, [sp, #76] ; 0x4c
9c2a: 8893 ldrh r3, [r2, #4]
9c2c: 3301 adds r3, #1
9c2e: 8812 ldrh r2, [r2, #0]
9c30: 1a9b subs r3, r3, r2
pos.x += (lv_area_get_width(coords) - line_width) / 2;
9c32: b21b sxth r3, r3
9c34: 1a18 subs r0, r3, r0
9c36: eb00 70d0 add.w r0, r0, r0, lsr #31
9c3a: 9b1f ldr r3, [sp, #124] ; 0x7c
9c3c: eb03 0360 add.w r3, r3, r0, asr #1
9c40: b21b sxth r3, r3
9c42: 931f str r3, [sp, #124] ; 0x7c
9c44: e7b9 b.n 9bba <lv_draw_label+0x196>
line_width = _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag);
9c46: f9bb 300c ldrsh.w r3, [fp, #12]
9c4a: 9907 ldr r1, [sp, #28]
9c4c: 1b89 subs r1, r1, r6
9c4e: 9200 str r2, [sp, #0]
9c50: 9a05 ldr r2, [sp, #20]
9c52: b289 uxth r1, r1
9c54: 980a ldr r0, [sp, #40] ; 0x28
9c56: 4430 add r0, r6
9c58: 4c2c ldr r4, [pc, #176] ; (9d0c <lv_draw_label+0x2e8>)
9c5a: 47a0 blx r4
9c5c: 9a13 ldr r2, [sp, #76] ; 0x4c
9c5e: 8893 ldrh r3, [r2, #4]
9c60: 3301 adds r3, #1
9c62: 8812 ldrh r2, [r2, #0]
9c64: 1a9b subs r3, r3, r2
pos.x += lv_area_get_width(coords) - line_width;
9c66: b21b sxth r3, r3
9c68: 1a1b subs r3, r3, r0
9c6a: 9a1f ldr r2, [sp, #124] ; 0x7c
9c6c: 4413 add r3, r2
9c6e: b21b sxth r3, r3
9c70: 931f str r3, [sp, #124] ; 0x7c
9c72: e7a2 b.n 9bba <lv_draw_label+0x196>
lv_draw_line_dsc_init(&line_dsc);
9c74: a853 add r0, sp, #332 ; 0x14c
9c76: 4b26 ldr r3, [pc, #152] ; (9d10 <lv_draw_label+0x2ec>)
9c78: 4798 blx r3
line_dsc.color = dsc->color;
9c7a: f8bb 3000 ldrh.w r3, [fp]
9c7e: f8ad 314c strh.w r3, [sp, #332] ; 0x14c
line_dsc.width = (dsc->font->line_height + 5) / 10; /*+5 for rounding*/
9c82: f8db 3004 ldr.w r3, [fp, #4]
9c86: f9b3 3008 ldrsh.w r3, [r3, #8]
9c8a: 3305 adds r3, #5
9c8c: 4a21 ldr r2, [pc, #132] ; (9d14 <lv_draw_label+0x2f0>)
9c8e: fb82 1203 smull r1, r2, r2, r3
9c92: 17db asrs r3, r3, #31
9c94: ebc3 03a2 rsb r3, r3, r2, asr #2
9c98: f8ad 314e strh.w r3, [sp, #334] ; 0x14e
line_dsc.opa = dsc->opa;
9c9c: f89b 3008 ldrb.w r3, [fp, #8]
9ca0: f88d 3154 strb.w r3, [sp, #340] ; 0x154
line_dsc.blend_mode = dsc->blend_mode;
9ca4: f89d 3155 ldrb.w r3, [sp, #341] ; 0x155
9ca8: f89b 2019 ldrb.w r2, [fp, #25]
9cac: f362 0301 bfi r3, r2, #0, #2
9cb0: f88d 3155 strb.w r3, [sp, #341] ; 0x155
9cb4: e794 b.n 9be0 <lv_draw_label+0x1bc>
uint16_t logical_char_pos = 0;
9cb6: 2500 movs r5, #0
9cb8: e0aa b.n 9e10 <lv_draw_label+0x3ec>
9cba: 2500 movs r5, #0
9cbc: e0a8 b.n 9e10 <lv_draw_label+0x3ec>
if(cmd_state == CMD_STATE_WAIT) { /*Start char*/
9cbe: 9b06 ldr r3, [sp, #24]
9cc0: b92b cbnz r3, 9cce <lv_draw_label+0x2aa>
par_start = i;
9cc2: f8bd 3148 ldrh.w r3, [sp, #328] ; 0x148
9cc6: 9319 str r3, [sp, #100] ; 0x64
cmd_state = CMD_STATE_PAR;
9cc8: 2301 movs r3, #1
9cca: 9306 str r3, [sp, #24]
continue;
9ccc: e08a b.n 9de4 <lv_draw_label+0x3c0>
else if(cmd_state == CMD_STATE_PAR) { /*Other start char in parameter escaped cmd. char */
9cce: 9b06 ldr r3, [sp, #24]
9cd0: 2b01 cmp r3, #1
9cd2: f000 85f1 beq.w a8b8 <lv_draw_label+0xe94>
else if(cmd_state == CMD_STATE_IN) { /*Command end */
9cd6: 2b02 cmp r3, #2
9cd8: f000 8533 beq.w a742 <lv_draw_label+0xd1e>
lv_color_t color = dsc->color;
9cdc: f8b8 6000 ldrh.w r6, [r8]
9ce0: e0b5 b.n 9e4e <lv_draw_label+0x42a>
if(letter == ' ') {
9ce2: 2c20 cmp r4, #32
9ce4: d17e bne.n 9de4 <lv_draw_label+0x3c0>
if(i - par_start == LABEL_RECOLOR_PAR_LENGTH + 1) {
9ce6: 9b52 ldr r3, [sp, #328] ; 0x148
9ce8: 9a19 ldr r2, [sp, #100] ; 0x64
9cea: 1a9b subs r3, r3, r2
9cec: 2b07 cmp r3, #7
9cee: d015 beq.n 9d1c <lv_draw_label+0x2f8>
recolor.full = dsc->color.full;
9cf0: f8b8 3000 ldrh.w r3, [r8]
9cf4: 930c str r3, [sp, #48] ; 0x30
cmd_state = CMD_STATE_IN; /*After the parameter the text is in the command*/
9cf6: 2302 movs r3, #2
9cf8: 9306 str r3, [sp, #24]
9cfa: e073 b.n 9de4 <lv_draw_label+0x3c0>
9cfc: 00011519 .word 0x00011519
9d00: 0001407d .word 0x0001407d
9d04: 00013db1 .word 0x00013db1
9d08: 0000c269 .word 0x0000c269
9d0c: 00013fdd .word 0x00013fdd
9d10: 0000a8e1 .word 0x0000a8e1
9d14: 66666667 .word 0x66666667
9d18: fffffc00 .word 0xfffffc00
_lv_memcpy_small(buf, &bidi_txt[par_start], LABEL_RECOLOR_PAR_LENGTH);
9d1c: 9b09 ldr r3, [sp, #36] ; 0x24
9d1e: 1898 adds r0, r3, r2
9d20: 1e43 subs r3, r0, #1
9d22: 3005 adds r0, #5
uint8_t * d8 = (uint8_t *)dst;
9d24: aa3a add r2, sp, #232 ; 0xe8
*d8 = *s8;
9d26: f813 1f01 ldrb.w r1, [r3, #1]!
9d2a: f802 1b01 strb.w r1, [r2], #1
while(len) {
9d2e: 4283 cmp r3, r0
9d30: d1f9 bne.n 9d26 <lv_draw_label+0x302>
r = (hex_char_to_num(buf[0]) << 4) + hex_char_to_num(buf[1]);
9d32: f89d 00e8 ldrb.w r0, [sp, #232] ; 0xe8
9d36: 4c8c ldr r4, [pc, #560] ; (9f68 <lv_draw_label+0x544>)
9d38: 47a0 blx r4
9d3a: 4605 mov r5, r0
9d3c: f89d 00e9 ldrb.w r0, [sp, #233] ; 0xe9
9d40: 47a0 blx r4
9d42: eb00 1505 add.w r5, r0, r5, lsl #4
g = (hex_char_to_num(buf[2]) << 4) + hex_char_to_num(buf[3]);
9d46: f89d 00ea ldrb.w r0, [sp, #234] ; 0xea
9d4a: 47a0 blx r4
9d4c: 4606 mov r6, r0
9d4e: f89d 00eb ldrb.w r0, [sp, #235] ; 0xeb
9d52: 47a0 blx r4
9d54: eb00 1606 add.w r6, r0, r6, lsl #4
b = (hex_char_to_num(buf[4]) << 4) + hex_char_to_num(buf[5]);
9d58: f89d 00ec ldrb.w r0, [sp, #236] ; 0xec
9d5c: 47a0 blx r4
9d5e: 4607 mov r7, r0
9d60: f89d 00ed ldrb.w r0, [sp, #237] ; 0xed
9d64: 47a0 blx r4
9d66: eb00 1307 add.w r3, r0, r7, lsl #4
#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);
9d6a: f3c3 03c4 ubfx r3, r3, #3, #5
9d6e: 9a2e ldr r2, [sp, #184] ; 0xb8
9d70: f363 0204 bfi r2, r3, #0, #5
9d74: 4613 mov r3, r2
9d76: f3c6 0685 ubfx r6, r6, #2, #6
9d7a: f366 134a bfi r3, r6, #5, #6
9d7e: f3c5 05c4 ubfx r5, r5, #3, #5
9d82: f365 23cf bfi r3, r5, #11, #5
9d86: f8ad 30b8 strh.w r3, [sp, #184] ; 0xb8
9d8a: b29b uxth r3, r3
9d8c: 930c str r3, [sp, #48] ; 0x30
cmd_state = CMD_STATE_IN; /*After the parameter the text is in the command*/
9d8e: 2302 movs r3, #2
9d90: 9306 str r3, [sp, #24]
9d92: e027 b.n 9de4 <lv_draw_label+0x3c0>
sel_coords.x1 = pos.x;
9d94: f8ad a0e8 strh.w sl, [sp, #232] ; 0xe8
sel_coords.y1 = pos.y;
9d98: 9a0e ldr r2, [sp, #56] ; 0x38
9d9a: f8ad 20ea strh.w r2, [sp, #234] ; 0xea
sel_coords.x2 = pos.x + letter_w + dsc->letter_space - 1;
9d9e: f8b8 300c ldrh.w r3, [r8, #12]
9da2: 3b01 subs r3, #1
9da4: 4453 add r3, sl
9da6: 4403 add r3, r0
9da8: f8ad 30ec strh.w r3, [sp, #236] ; 0xec
sel_coords.y2 = pos.y + line_height - 1;
9dac: 9b17 ldr r3, [sp, #92] ; 0x5c
9dae: 3b01 subs r3, #1
9db0: 4413 add r3, r2
9db2: f8ad 30ee strh.w r3, [sp, #238] ; 0xee
lv_draw_rect(&sel_coords, mask, &draw_dsc_sel);
9db6: aa3d add r2, sp, #244 ; 0xf4
9db8: 990d ldr r1, [sp, #52] ; 0x34
9dba: a83a add r0, sp, #232 ; 0xe8
9dbc: 4b6b ldr r3, [pc, #428] ; (9f6c <lv_draw_label+0x548>)
9dbe: 4798 blx r3
9dc0: e056 b.n 9e70 <lv_draw_label+0x44c>
LV_LOG_WARN("lv_draw_letter: font is NULL");
9dc2: 4b6b ldr r3, [pc, #428] ; (9f70 <lv_draw_label+0x54c>)
9dc4: 9300 str r3, [sp, #0]
9dc6: 4b6b ldr r3, [pc, #428] ; (9f74 <lv_draw_label+0x550>)
9dc8: f240 1297 movw r2, #407 ; 0x197
9dcc: 496a ldr r1, [pc, #424] ; (9f78 <lv_draw_label+0x554>)
9dce: 2002 movs r0, #2
9dd0: 4c6a ldr r4, [pc, #424] ; (9f7c <lv_draw_label+0x558>)
9dd2: 47a0 blx r4
if(letter_w > 0) {
9dd4: 2f00 cmp r7, #0
9dd6: dd05 ble.n 9de4 <lv_draw_label+0x3c0>
pos.x += letter_w + dsc->letter_space;
9dd8: f8b8 300c ldrh.w r3, [r8, #12]
9ddc: 4453 add r3, sl
9dde: 443b add r3, r7
9de0: fa0f fa83 sxth.w sl, r3
while(i < line_end - line_start) {
9de4: 9952 ldr r1, [sp, #328] ; 0x148
9de6: 9b07 ldr r3, [sp, #28]
9de8: eba3 030b sub.w r3, r3, fp
9dec: 428b cmp r3, r1
9dee: f240 84ac bls.w a74a <lv_draw_label+0xd26>
if(sel_start != 0xFFFF && sel_end != 0xFFFF) {
9df2: f64f 73ff movw r3, #65535 ; 0xffff
9df6: 4599 cmp r9, r3
9df8: f43f af5d beq.w 9cb6 <lv_draw_label+0x292>
9dfc: 9a08 ldr r2, [sp, #32]
9dfe: 429a cmp r2, r3
9e00: f43f af5b beq.w 9cba <lv_draw_label+0x296>
logical_char_pos = _lv_txt_encoded_get_char_id(txt, line_start + i);
9e04: 4459 add r1, fp
9e06: 980a ldr r0, [sp, #40] ; 0x28
9e08: 4b5d ldr r3, [pc, #372] ; (9f80 <lv_draw_label+0x55c>)
9e0a: 681b ldr r3, [r3, #0]
9e0c: 4798 blx r3
9e0e: b285 uxth r5, r0
uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i);
9e10: 4e5c ldr r6, [pc, #368] ; (9f84 <lv_draw_label+0x560>)
9e12: 6833 ldr r3, [r6, #0]
9e14: a952 add r1, sp, #328 ; 0x148
9e16: 9f09 ldr r7, [sp, #36] ; 0x24
9e18: 4638 mov r0, r7
9e1a: 4798 blx r3
9e1c: 4604 mov r4, r0
uint32_t letter_next = _lv_txt_encoded_next(&bidi_txt[i], NULL);
9e1e: 6833 ldr r3, [r6, #0]
9e20: 2100 movs r1, #0
9e22: 9852 ldr r0, [sp, #328] ; 0x148
9e24: 4438 add r0, r7
9e26: 4798 blx r3
if((dsc->flag & LV_TXT_FLAG_RECOLOR) != 0) {
9e28: f898 3017 ldrb.w r3, [r8, #23]
9e2c: f013 0f01 tst.w r3, #1
9e30: d006 beq.n 9e40 <lv_draw_label+0x41c>
if(letter == (uint32_t)LV_TXT_COLOR_CMD[0]) {
9e32: 2c23 cmp r4, #35 ; 0x23
9e34: f43f af43 beq.w 9cbe <lv_draw_label+0x29a>
if(cmd_state == CMD_STATE_PAR) {
9e38: 9b06 ldr r3, [sp, #24]
9e3a: 2b01 cmp r3, #1
9e3c: f43f af51 beq.w 9ce2 <lv_draw_label+0x2be>
lv_color_t color = dsc->color;
9e40: f8b8 6000 ldrh.w r6, [r8]
if(cmd_state == CMD_STATE_IN) color = recolor;
9e44: 9b0c ldr r3, [sp, #48] ; 0x30
9e46: 9a06 ldr r2, [sp, #24]
9e48: 2a02 cmp r2, #2
9e4a: bf08 it eq
9e4c: 461e moveq r6, r3
letter_w = lv_font_get_glyph_width(font, letter, letter_next);
9e4e: 4602 mov r2, r0
9e50: 4621 mov r1, r4
9e52: 9805 ldr r0, [sp, #20]
9e54: 4b4c ldr r3, [pc, #304] ; (9f88 <lv_draw_label+0x564>)
9e56: 4798 blx r3
9e58: 4607 mov r7, r0
if(sel_start != 0xFFFF && sel_end != 0xFFFF) {
9e5a: f64f 73ff movw r3, #65535 ; 0xffff
9e5e: 4599 cmp r9, r3
9e60: d006 beq.n 9e70 <lv_draw_label+0x44c>
9e62: 9908 ldr r1, [sp, #32]
9e64: 4299 cmp r1, r3
9e66: d003 beq.n 9e70 <lv_draw_label+0x44c>
if(logical_char_pos >= sel_start && logical_char_pos < sel_end) {
9e68: 45a9 cmp r9, r5
9e6a: d801 bhi.n 9e70 <lv_draw_label+0x44c>
9e6c: 42a9 cmp r1, r5
9e6e: d891 bhi.n 9d94 <lv_draw_label+0x370>
if(opa < LV_OPA_MIN) return;
9e70: 9b0b ldr r3, [sp, #44] ; 0x2c
9e72: 2b04 cmp r3, #4
9e74: d9ae bls.n 9dd4 <lv_draw_label+0x3b0>
if(font_p == NULL) {
9e76: 9b05 ldr r3, [sp, #20]
9e78: 2b00 cmp r3, #0
9e7a: d0a2 beq.n 9dc2 <lv_draw_label+0x39e>
lv_draw_letter(&pos, mask, font, letter, color, opa, dsc->blend_mode);
9e7c: f898 3019 ldrb.w r3, [r8, #25]
9e80: 930f str r3, [sp, #60] ; 0x3c
bool g_ret = lv_font_get_glyph_dsc(font_p, &g, letter, '\0');
9e82: 2300 movs r3, #0
9e84: 4622 mov r2, r4
9e86: a93a add r1, sp, #232 ; 0xe8
9e88: 9805 ldr r0, [sp, #20]
9e8a: 4d40 ldr r5, [pc, #256] ; (9f8c <lv_draw_label+0x568>)
9e8c: 47a8 blx r5
if(g_ret == false) {
9e8e: b958 cbnz r0, 9ea8 <lv_draw_label+0x484>
if(letter >= 0x20) {
9e90: 2c1f cmp r4, #31
9e92: d99f bls.n 9dd4 <lv_draw_label+0x3b0>
LV_LOG_WARN("lv_draw_letter: glyph dsc. not found");
9e94: 4b3e ldr r3, [pc, #248] ; (9f90 <lv_draw_label+0x56c>)
9e96: 9300 str r3, [sp, #0]
9e98: 4b36 ldr r3, [pc, #216] ; (9f74 <lv_draw_label+0x550>)
9e9a: f240 12a1 movw r2, #417 ; 0x1a1
9e9e: 4936 ldr r1, [pc, #216] ; (9f78 <lv_draw_label+0x554>)
9ea0: 2002 movs r0, #2
9ea2: 4c36 ldr r4, [pc, #216] ; (9f7c <lv_draw_label+0x558>)
9ea4: 47a0 blx r4
9ea6: e795 b.n 9dd4 <lv_draw_label+0x3b0>
if((g.box_h == 0) && (g.box_w == 0)) return;
9ea8: f8bd 20ec ldrh.w r2, [sp, #236] ; 0xec
9eac: b91a cbnz r2, 9eb6 <lv_draw_label+0x492>
9eae: f8bd 30ea ldrh.w r3, [sp, #234] ; 0xea
9eb2: 2b00 cmp r3, #0
9eb4: d08e beq.n 9dd4 <lv_draw_label+0x3b0>
int32_t pos_x = pos_p->x + g.ofs_x;
9eb6: f9bd 50ee ldrsh.w r5, [sp, #238] ; 0xee
9eba: 4455 add r5, sl
if(pos_x + g.box_w < clip_area->x1 ||
9ebc: f8bd 30ea ldrh.w r3, [sp, #234] ; 0xea
9ec0: 442b add r3, r5
9ec2: 980d ldr r0, [sp, #52] ; 0x34
9ec4: f9b0 1000 ldrsh.w r1, [r0]
9ec8: 428b cmp r3, r1
9eca: db83 blt.n 9dd4 <lv_draw_label+0x3b0>
pos_x > clip_area->x2 ||
9ecc: f9b0 3004 ldrsh.w r3, [r0, #4]
if(pos_x + g.box_w < clip_area->x1 ||
9ed0: 429d cmp r5, r3
9ed2: f73f af7f bgt.w 9dd4 <lv_draw_label+0x3b0>
int32_t pos_y = pos_p->y + (font_p->line_height - font_p->base_line) - g.box_h - g.ofs_y;
9ed6: 9b05 ldr r3, [sp, #20]
9ed8: f9b3 1008 ldrsh.w r1, [r3, #8]
9edc: f9b3 300a ldrsh.w r3, [r3, #10]
9ee0: 1acb subs r3, r1, r3
9ee2: 990e ldr r1, [sp, #56] ; 0x38
9ee4: 440b add r3, r1
9ee6: 1a99 subs r1, r3, r2
9ee8: f9bd 30f0 ldrsh.w r3, [sp, #240] ; 0xf0
9eec: 1acb subs r3, r1, r3
pos_y + g.box_h < clip_area->y1 ||
9eee: 9315 str r3, [sp, #84] ; 0x54
9ef0: 441a add r2, r3
9ef2: f9b0 3002 ldrsh.w r3, [r0, #2]
pos_x > clip_area->x2 ||
9ef6: 429a cmp r2, r3
9ef8: f6ff af6c blt.w 9dd4 <lv_draw_label+0x3b0>
pos_y > clip_area->y2) {
9efc: f9b0 3006 ldrsh.w r3, [r0, #6]
pos_y + g.box_h < clip_area->y1 ||
9f00: 9915 ldr r1, [sp, #84] ; 0x54
9f02: 4299 cmp r1, r3
9f04: f73f af66 bgt.w 9dd4 <lv_draw_label+0x3b0>
const uint8_t * map_p = lv_font_get_glyph_bitmap(font_p, letter);
9f08: 4621 mov r1, r4
9f0a: 9805 ldr r0, [sp, #20]
9f0c: 4b21 ldr r3, [pc, #132] ; (9f94 <lv_draw_label+0x570>)
9f0e: 4798 blx r3
if(map_p == NULL) {
9f10: 4686 mov lr, r0
9f12: b1f0 cbz r0, 9f52 <lv_draw_label+0x52e>
if(font_p->subpx) {
9f14: 9b05 ldr r3, [sp, #20]
9f16: 7b1b ldrb r3, [r3, #12]
9f18: f013 0f03 tst.w r3, #3
9f1c: f000 825e beq.w a3dc <lv_draw_label+0x9b8>
draw_letter_subpx(pos_x, pos_y, &g, clip_area, map_p, color, opa, blend_mode);
9f20: b22b sxth r3, r5
9f22: 9318 str r3, [sp, #96] ; 0x60
9f24: f9bd 3054 ldrsh.w r3, [sp, #84] ; 0x54
9f28: 931d str r3, [sp, #116] ; 0x74
uint32_t bpp = g->bpp;
9f2a: f89d 30f2 ldrb.w r3, [sp, #242] ; 0xf2
9f2e: 9312 str r3, [sp, #72] ; 0x48
if(bpp == 3) bpp = 4;
9f30: 2b03 cmp r3, #3
9f32: f000 80ff beq.w a134 <lv_draw_label+0x710>
switch(bpp) {
9f36: 3b01 subs r3, #1
9f38: 2b07 cmp r3, #7
9f3a: f200 8102 bhi.w a142 <lv_draw_label+0x71e>
9f3e: e8df f013 tbh [pc, r3, lsl #1]
9f42: 010a .short 0x010a
9f44: 0100002d .word 0x0100002d
9f48: 010000fb .word 0x010000fb
9f4c: 01000100 .word 0x01000100
9f50: 0111 .short 0x0111
LV_LOG_WARN("lv_draw_letter: character's bitmap not found");
9f52: 4b11 ldr r3, [pc, #68] ; (9f98 <lv_draw_label+0x574>)
9f54: 9300 str r3, [sp, #0]
9f56: 4b07 ldr r3, [pc, #28] ; (9f74 <lv_draw_label+0x550>)
9f58: f240 12b7 movw r2, #439 ; 0x1b7
9f5c: 4906 ldr r1, [pc, #24] ; (9f78 <lv_draw_label+0x554>)
9f5e: 2002 movs r0, #2
9f60: 4c06 ldr r4, [pc, #24] ; (9f7c <lv_draw_label+0x558>)
9f62: 47a0 blx r4
9f64: e736 b.n 9dd4 <lv_draw_label+0x3b0>
9f66: bf00 nop
9f68: 0000998b .word 0x0000998b
9f6c: 0000c331 .word 0x0000c331
9f70: 00024ee8 .word 0x00024ee8
9f74: 00024e78 .word 0x00024e78
9f78: 00024eb8 .word 0x00024eb8
9f7c: 0001225d .word 0x0001225d
9f80: 20000064 .word 0x20000064
9f84: 20000058 .word 0x20000058
9f88: 00010061 .word 0x00010061
9f8c: 00010059 .word 0x00010059
9f90: 00024f08 .word 0x00024f08
9f94: 00010051 .word 0x00010051
9f98: 00024f30 .word 0x00024f30
bitmask_init = 0xC0;
9f9c: 23c0 movs r3, #192 ; 0xc0
9f9e: 931b str r3, [sp, #108] ; 0x6c
bpp_opa_table = _lv_bpp2_opa_table;
9fa0: 4bac ldr r3, [pc, #688] ; (a254 <lv_draw_label+0x830>)
9fa2: 9320 str r3, [sp, #128] ; 0x80
int32_t box_w = g->box_w;
9fa4: f8bd 30ea ldrh.w r3, [sp, #234] ; 0xea
9fa8: 931e str r3, [sp, #120] ; 0x78
int32_t box_h = g->box_h;
9faa: f8bd 10ec ldrh.w r1, [sp, #236] ; 0xec
int32_t width_bit = box_w * bpp; /*Letter width in bits*/
9fae: 9a12 ldr r2, [sp, #72] ; 0x48
9fb0: fb02 f203 mul.w r2, r2, r3
int32_t col_start = pos_x >= clip_area->x1 ? 0 : (clip_area->x1 - pos_x) * 3;
9fb4: 9b0d ldr r3, [sp, #52] ; 0x34
9fb6: f9b3 3000 ldrsh.w r3, [r3]
9fba: 9c18 ldr r4, [sp, #96] ; 0x60
9fbc: 429c cmp r4, r3
9fbe: bfba itte lt
9fc0: 1b1b sublt r3, r3, r4
9fc2: eb03 0343 addlt.w r3, r3, r3, lsl #1
9fc6: 2300 movge r3, #0
9fc8: 9327 str r3, [sp, #156] ; 0x9c
int32_t col_end = pos_x + box_w / 3 <= clip_area->x2 ? box_w : (clip_area->x2 - pos_x + 1) * 3;
9fca: 9b0d ldr r3, [sp, #52] ; 0x34
9fcc: f9b3 3004 ldrsh.w r3, [r3, #4]
9fd0: 981e ldr r0, [sp, #120] ; 0x78
9fd2: 4604 mov r4, r0
9fd4: 48a0 ldr r0, [pc, #640] ; (a258 <lv_draw_label+0x834>)
9fd6: fb80 4004 smull r4, r0, r0, r4
9fda: 9c18 ldr r4, [sp, #96] ; 0x60
9fdc: 4420 add r0, r4
9fde: 4298 cmp r0, r3
9fe0: bfc3 ittte gt
9fe2: 1b1b subgt r3, r3, r4
9fe4: 3301 addgt r3, #1
9fe6: eb03 0343 addgt.w r3, r3, r3, lsl #1
9fea: 9b1e ldrle r3, [sp, #120] ; 0x78
9fec: 9314 str r3, [sp, #80] ; 0x50
int32_t row_start = pos_y >= clip_area->y1 ? 0 : clip_area->y1 - pos_y;
9fee: 9b0d ldr r3, [sp, #52] ; 0x34
9ff0: f9b3 3002 ldrsh.w r3, [r3, #2]
9ff4: 9c1d ldr r4, [sp, #116] ; 0x74
9ff6: 429c cmp r4, r3
9ff8: bfb4 ite lt
9ffa: 1b1b sublt r3, r3, r4
9ffc: 2300 movge r3, #0
9ffe: 9325 str r3, [sp, #148] ; 0x94
int32_t row_end = pos_y + box_h <= clip_area->y2 ? box_h : clip_area->y2 - pos_y + 1;
a000: 9b0d ldr r3, [sp, #52] ; 0x34
a002: f9b3 3006 ldrsh.w r3, [r3, #6]
a006: 9c1d ldr r4, [sp, #116] ; 0x74
a008: 1908 adds r0, r1, r4
a00a: 4298 cmp r0, r3
a00c: f340 80b1 ble.w a172 <lv_draw_label+0x74e>
a010: 1b1b subs r3, r3, r4
a012: 3301 adds r3, #1
a014: 9328 str r3, [sp, #160] ; 0xa0
a016: f006 031f and.w r3, r6, #31
a01a: 9322 str r3, [sp, #136] ; 0x88
a01c: f3c6 1345 ubfx r3, r6, #5, #6
a020: 9324 str r3, [sp, #144] ; 0x90
a022: f3c6 23c4 ubfx r3, r6, #11, #5
a026: 9323 str r3, [sp, #140] ; 0x8c
int32_t bit_ofs = (row_start * width_bit) + (col_start * bpp);
a028: 9b12 ldr r3, [sp, #72] ; 0x48
a02a: 4618 mov r0, r3
a02c: 9b27 ldr r3, [sp, #156] ; 0x9c
a02e: fb00 f303 mul.w r3, r0, r3
a032: 9825 ldr r0, [sp, #148] ; 0x94
a034: fb00 3202 mla r2, r0, r2, r3
map_p += bit_ofs >> 3;
a038: eb0e 06e2 add.w r6, lr, r2, asr #3
a03c: 9631 str r6, [sp, #196] ; 0xc4
col_bit = bit_ofs & 0x7; /* "& 0x7" equals to "% 8" just faster */
a03e: f002 0607 and.w r6, r2, #7
int32_t mask_buf_size = box_w * box_h > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : g->box_w * g->box_h;
a042: 981e ldr r0, [sp, #120] ; 0x78
a044: fb01 f100 mul.w r1, r1, r0
a048: f5b1 7ff0 cmp.w r1, #480 ; 0x1e0
a04c: bfa8 it ge
a04e: f44f 71f0 movge.w r1, #480 ; 0x1e0
lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size);
a052: 9129 str r1, [sp, #164] ; 0xa4
a054: 4608 mov r0, r1
a056: 4c81 ldr r4, [pc, #516] ; (a25c <lv_draw_label+0x838>)
a058: 47a0 blx r4
a05a: 9021 str r0, [sp, #132] ; 0x84
lv_color_t * color_buf = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t));
a05c: 9929 ldr r1, [sp, #164] ; 0xa4
a05e: 0048 lsls r0, r1, #1
a060: 47a0 blx r4
a062: 9030 str r0, [sp, #192] ; 0xc0
lv_disp_t * disp = _lv_refr_get_disp_refreshing();
a064: 4b7e ldr r3, [pc, #504] ; (a260 <lv_draw_label+0x83c>)
a066: 4798 blx r3
lv_disp_buf_t * vdb = lv_disp_get_buf(disp);
a068: 4b7e ldr r3, [pc, #504] ; (a264 <lv_draw_label+0x840>)
a06a: 4798 blx r3
a06c: f9b0 4010 ldrsh.w r4, [r0, #16]
a070: 8a83 ldrh r3, [r0, #20]
a072: 3301 adds r3, #1
a074: 1b1b subs r3, r3, r4
int32_t vdb_width = lv_area_get_width(&vdb->area);
a076: b219 sxth r1, r3
a078: 9126 str r1, [sp, #152] ; 0x98
lv_color_t * vdb_buf_tmp = vdb->buf_act;
a07a: 6881 ldr r1, [r0, #8]
vdb_buf_tmp += (row_start * vdb_width) + col_start / 3;
a07c: 9b27 ldr r3, [sp, #156] ; 0x9c
a07e: 4a76 ldr r2, [pc, #472] ; (a258 <lv_draw_label+0x834>)
a080: fb82 e203 smull lr, r2, r2, r3
a084: eba2 72e3 sub.w r2, r2, r3, asr #31
vdb_buf_tmp += ((pos_y - vdb->area.y1) * vdb_width) + pos_x - vdb->area.x1;
a088: f9b0 3012 ldrsh.w r3, [r0, #18]
a08c: 981d ldr r0, [sp, #116] ; 0x74
a08e: 1ac3 subs r3, r0, r3
a090: 9826 ldr r0, [sp, #152] ; 0x98
a092: 4686 mov lr, r0
a094: 9818 ldr r0, [sp, #96] ; 0x60
a096: fb0e 0303 mla r3, lr, r3, r0
a09a: 1b1b subs r3, r3, r4
vdb_buf_tmp += (row_start * vdb_width) + col_start / 3;
a09c: 9c25 ldr r4, [sp, #148] ; 0x94
a09e: fb0e 2004 mla r0, lr, r4, r2
a0a2: 4403 add r3, r0
a0a4: eb01 0143 add.w r1, r1, r3, lsl #1
a0a8: 9118 str r1, [sp, #96] ; 0x60
map_area.x1 = col_start / 3 + pos_x;
a0aa: b2ad uxth r5, r5
a0ac: 442a add r2, r5
a0ae: f8ad 20e0 strh.w r2, [sp, #224] ; 0xe0
map_area.x2 = col_end / 3 + pos_x - 1;
a0b2: 9a14 ldr r2, [sp, #80] ; 0x50
a0b4: 4696 mov lr, r2
a0b6: 4968 ldr r1, [pc, #416] ; (a258 <lv_draw_label+0x834>)
a0b8: fb81 e30e smull lr, r3, r1, lr
a0bc: eba3 73e2 sub.w r3, r3, r2, asr #31
a0c0: 3d01 subs r5, #1
a0c2: 442b add r3, r5
a0c4: f8ad 30e4 strh.w r3, [sp, #228] ; 0xe4
map_area.y1 = row_start + pos_y;
a0c8: 9d15 ldr r5, [sp, #84] ; 0x54
a0ca: 4425 add r5, r4
a0cc: b22b sxth r3, r5
a0ce: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2
map_area.y2 = map_area.y1;
a0d2: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6
uint8_t other_mask_cnt = lv_draw_mask_get_cnt();
a0d6: 4b64 ldr r3, [pc, #400] ; (a268 <lv_draw_label+0x844>)
a0d8: 4798 blx r3
a0da: 902a str r0, [sp, #168] ; 0xa8
for(row = row_start ; row < row_end; row++) {
a0dc: 9d28 ldr r5, [sp, #160] ; 0xa0
a0de: 42ac cmp r4, r5
a0e0: f280 8161 bge.w a3a6 <lv_draw_label+0x982>
if((int32_t) mask_p + (col_end - col_start) < mask_buf_size) {
a0e4: 9914 ldr r1, [sp, #80] ; 0x50
a0e6: 9a27 ldr r2, [sp, #156] ; 0x9c
a0e8: 1a8c subs r4, r1, r2
a0ea: 942b str r4, [sp, #172] ; 0xac
col_bit += ((box_w - col_end) + col_start) * bpp;
a0ec: 9d1e ldr r5, [sp, #120] ; 0x78
a0ee: 1a6b subs r3, r5, r1
a0f0: 4413 add r3, r2
a0f2: 9912 ldr r1, [sp, #72] ; 0x48
a0f4: fb01 f303 mul.w r3, r1, r3
a0f8: 932c str r3, [sp, #176] ; 0xb0
vdb_buf_tmp += vdb_width - (col_end - col_start) / 3;
a0fa: 4a57 ldr r2, [pc, #348] ; (a258 <lv_draw_label+0x834>)
a0fc: fb82 2304 smull r2, r3, r2, r4
a100: ebc3 73e4 rsb r3, r3, r4, asr #31
a104: 9826 ldr r0, [sp, #152] ; 0x98
a106: 4403 add r3, r0
a108: 005b lsls r3, r3, #1
a10a: 932d str r3, [sp, #180] ; 0xb4
a10c: 2300 movs r3, #0
a10e: 9326 str r3, [sp, #152] ; 0x98
col_bit = 0;
a110: 9315 str r3, [sp, #84] ; 0x54
a112: f8cd b0c8 str.w fp, [sp, #200] ; 0xc8
a116: f8cd 90cc str.w r9, [sp, #204] ; 0xcc
a11a: 9734 str r7, [sp, #208] ; 0xd0
a11c: f8dd 9060 ldr.w r9, [sp, #96] ; 0x60
a120: f8dd b0c4 ldr.w fp, [sp, #196] ; 0xc4
a124: f8cd a0c4 str.w sl, [sp, #196] ; 0xc4
a128: f8dd a0c0 ldr.w sl, [sp, #192] ; 0xc0
a12c: f8cd 80d4 str.w r8, [sp, #212] ; 0xd4
a130: 4688 mov r8, r1
a132: e0ea b.n a30a <lv_draw_label+0x8e6>
if(bpp == 3) bpp = 4;
a134: 2304 movs r3, #4
a136: 9312 str r3, [sp, #72] ; 0x48
bitmask_init = 0xF0;
a138: 23f0 movs r3, #240 ; 0xf0
a13a: 931b str r3, [sp, #108] ; 0x6c
bpp_opa_table = _lv_bpp4_opa_table;
a13c: 4b4b ldr r3, [pc, #300] ; (a26c <lv_draw_label+0x848>)
a13e: 9320 str r3, [sp, #128] ; 0x80
a140: e730 b.n 9fa4 <lv_draw_label+0x580>
LV_LOG_WARN("lv_draw_letter: invalid bpp not found");
a142: 4b4b ldr r3, [pc, #300] ; (a270 <lv_draw_label+0x84c>)
a144: 9300 str r3, [sp, #0]
a146: 4b4b ldr r3, [pc, #300] ; (a274 <lv_draw_label+0x850>)
a148: f240 227a movw r2, #634 ; 0x27a
a14c: 494a ldr r1, [pc, #296] ; (a278 <lv_draw_label+0x854>)
a14e: 2002 movs r0, #2
a150: 4c4a ldr r4, [pc, #296] ; (a27c <lv_draw_label+0x858>)
a152: 47a0 blx r4
a154: e63e b.n 9dd4 <lv_draw_label+0x3b0>
uint32_t bpp = g->bpp;
a156: 2301 movs r3, #1
a158: 9312 str r3, [sp, #72] ; 0x48
bitmask_init = 0x80;
a15a: 2380 movs r3, #128 ; 0x80
a15c: 931b str r3, [sp, #108] ; 0x6c
bpp_opa_table = _lv_bpp1_opa_table;
a15e: 4b48 ldr r3, [pc, #288] ; (a280 <lv_draw_label+0x85c>)
a160: 9320 str r3, [sp, #128] ; 0x80
a162: e71f b.n 9fa4 <lv_draw_label+0x580>
uint32_t bpp = g->bpp;
a164: 2308 movs r3, #8
a166: 9312 str r3, [sp, #72] ; 0x48
bitmask_init = 0xFF;
a168: 23ff movs r3, #255 ; 0xff
a16a: 931b str r3, [sp, #108] ; 0x6c
bpp_opa_table = _lv_bpp8_opa_table;
a16c: 4b45 ldr r3, [pc, #276] ; (a284 <lv_draw_label+0x860>)
a16e: 9320 str r3, [sp, #128] ; 0x80
a170: e718 b.n 9fa4 <lv_draw_label+0x580>
int32_t row_end = pos_y + box_h <= clip_area->y2 ? box_h : clip_area->y2 - pos_y + 1;
a172: 9128 str r1, [sp, #160] ; 0xa0
a174: e74f b.n a016 <lv_draw_label+0x5f2>
px_opa = bpp == 8 ? letter_px : bpp_opa_table[letter_px];
a176: f1b8 0f08 cmp.w r8, #8
a17a: d004 beq.n a186 <lv_draw_label+0x762>
a17c: b2db uxtb r3, r3
a17e: 9a20 ldr r2, [sp, #128] ; 0x80
a180: 5cd2 ldrb r2, [r2, r3]
a182: e000 b.n a186 <lv_draw_label+0x762>
px_opa = 0;
a184: 9a15 ldr r2, [sp, #84] ; 0x54
font_rgb[subpx_cnt] = px_opa;
a186: ab58 add r3, sp, #352 ; 0x160
a188: 440b add r3, r1
a18a: f803 2c84 strb.w r2, [r3, #-132]
subpx_cnt ++;
a18e: 3101 adds r1, #1
if(subpx_cnt == 3) {
a190: 2903 cmp r1, #3
a192: d028 beq.n a1e6 <lv_draw_label+0x7c2>
if(col_bit < (int32_t) (8 - bpp)) {
a194: 45b4 cmp ip, r6
a196: f340 8094 ble.w a2c2 <lv_draw_label+0x89e>
col_bit += bpp;
a19a: 9b12 ldr r3, [sp, #72] ; 0x48
a19c: 4443 add r3, r8
a19e: 461e mov r6, r3
bitmask = bitmask >> bpp;
a1a0: fa2e fe08 lsr.w lr, lr, r8
for(col = col_start; col < col_end; col++) {
a1a4: 3501 adds r5, #1
a1a6: 9b14 ldr r3, [sp, #80] ; 0x50
a1a8: 42ab cmp r3, r5
a1aa: f000 8090 beq.w a2ce <lv_draw_label+0x8aa>
letter_px = (*map_p & bitmask) >> (8 - col_bit - bpp);
a1ae: 9612 str r6, [sp, #72] ; 0x48
a1b0: f89b 3000 ldrb.w r3, [fp]
a1b4: ea03 020e and.w r2, r3, lr
a1b8: ebac 0306 sub.w r3, ip, r6
a1bc: fa22 f303 lsr.w r3, r2, r3
if(letter_px != 0) {
a1c0: f013 02ff ands.w r2, r3, #255 ; 0xff
a1c4: d0de beq.n a184 <lv_draw_label+0x760>
if(opa == LV_OPA_COVER) {
a1c6: 9816 ldr r0, [sp, #88] ; 0x58
a1c8: 28ff cmp r0, #255 ; 0xff
a1ca: d0d4 beq.n a176 <lv_draw_label+0x752>
px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8
a1cc: f1b8 0f08 cmp.w r8, #8
a1d0: bf0f iteee eq
a1d2: b2da uxtbeq r2, r3
: (uint32_t)((uint32_t)bpp_opa_table[letter_px] * opa) >> 8;
a1d4: b2db uxtbne r3, r3
a1d6: 9a20 ldrne r2, [sp, #128] ; 0x80
a1d8: 5cd2 ldrbne r2, [r2, r3]
a1da: 9b16 ldr r3, [sp, #88] ; 0x58
a1dc: fb03 f202 mul.w r2, r3, r2
px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8
a1e0: f3c2 2207 ubfx r2, r2, #8, #8
a1e4: e7cf b.n a186 <lv_draw_label+0x762>
res_color.ch.red = (uint32_t)((uint16_t)txt_rgb[0] * font_rgb[0] + (bg_rgb[0] * (255 - font_rgb[0]))) >> 8;
a1e6: f89d 10dc ldrb.w r1, [sp, #220] ; 0xdc
uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue};
a1ea: f89a 3001 ldrb.w r3, [sl, #1]
res_color.ch.red = (uint32_t)((uint16_t)txt_rgb[0] * font_rgb[0] + (bg_rgb[0] * (255 - font_rgb[0]))) >> 8;
a1ee: 08db lsrs r3, r3, #3
a1f0: f1c1 00ff rsb r0, r1, #255 ; 0xff
a1f4: 9a23 ldr r2, [sp, #140] ; 0x8c
a1f6: fb01 f202 mul.w r2, r1, r2
a1fa: fb00 2303 mla r3, r0, r3, r2
a1fe: f3c3 2304 ubfx r3, r3, #8, #5
a202: 931d str r3, [sp, #116] ; 0x74
res_color.ch.blue = (uint32_t)((uint16_t)txt_rgb[2] * font_rgb[2] + (bg_rgb[2] * (255 - font_rgb[2]))) >> 8;
a204: f89d 30de ldrb.w r3, [sp, #222] ; 0xde
a208: 9318 str r3, [sp, #96] ; 0x60
uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue};
a20a: f89a 2000 ldrb.w r2, [sl]
res_color.ch.blue = (uint32_t)((uint16_t)txt_rgb[2] * font_rgb[2] + (bg_rgb[2] * (255 - font_rgb[2]))) >> 8;
a20e: f002 021f and.w r2, r2, #31
a212: f1c3 00ff rsb r0, r3, #255 ; 0xff
a216: 9b22 ldr r3, [sp, #136] ; 0x88
a218: 9c18 ldr r4, [sp, #96] ; 0x60
a21a: fb04 f303 mul.w r3, r4, r3
a21e: fb00 3202 mla r2, r0, r2, r3
a222: f3c2 2304 ubfx r3, r2, #8, #5
a226: 931e str r3, [sp, #120] ; 0x78
res_color.ch.green = (uint32_t)((uint32_t)txt_rgb[1] * font_rgb[1] + (bg_rgb[1] * (255 - font_rgb[1]))) >> 8;
a228: f89d 00dd ldrb.w r0, [sp, #221] ; 0xdd
uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue};
a22c: f8ba 3000 ldrh.w r3, [sl]
res_color.ch.green = (uint32_t)((uint32_t)txt_rgb[1] * font_rgb[1] + (bg_rgb[1] * (255 - font_rgb[1]))) >> 8;
a230: f3c3 1445 ubfx r4, r3, #5, #6
a234: f1c0 03ff rsb r3, r0, #255 ; 0xff
a238: 9a24 ldr r2, [sp, #144] ; 0x90
a23a: fb00 f202 mul.w r2, r0, r2
a23e: fb03 2304 mla r3, r3, r4, r2
a242: f3c3 2305 ubfx r3, r3, #8, #6
if(font_rgb[0] == 0 && font_rgb[1] == 0 && font_rgb[2] == 0) mask_buf[mask_p] = LV_OPA_TRANSP;
a246: b9f9 cbnz r1, a288 <lv_draw_label+0x864>
a248: b9f0 cbnz r0, a288 <lv_draw_label+0x864>
a24a: 9a18 ldr r2, [sp, #96] ; 0x60
a24c: b9e2 cbnz r2, a288 <lv_draw_label+0x864>
a24e: 9a21 ldr r2, [sp, #132] ; 0x84
a250: 55d1 strb r1, [r2, r7]
a252: e01d b.n a290 <lv_draw_label+0x86c>
a254: 00024d64 .word 0x00024d64
a258: 55555556 .word 0x55555556
a25c: 0001293d .word 0x0001293d
a260: 00005f69 .word 0x00005f69
a264: 00010fdd .word 0x00010fdd
a268: 0000bec5 .word 0x0000bec5
a26c: 00024d68 .word 0x00024d68
a270: 00024f60 .word 0x00024f60
a274: 00024e88 .word 0x00024e88
a278: 00024eb8 .word 0x00024eb8
a27c: 0001225d .word 0x0001225d
a280: 00024d60 .word 0x00024d60
a284: 00024d78 .word 0x00024d78
else mask_buf[mask_p] = LV_OPA_COVER;
a288: 9a21 ldr r2, [sp, #132] ; 0x84
a28a: f04f 31ff mov.w r1, #4294967295
a28e: 55d1 strb r1, [r2, r7]
color_buf[mask_p] = res_color;
a290: eb09 0047 add.w r0, r9, r7, lsl #1
a294: f819 1017 ldrb.w r1, [r9, r7, lsl #1]
a298: 9a1e ldr r2, [sp, #120] ; 0x78
a29a: f362 0104 bfi r1, r2, #0, #5
a29e: f809 1017 strb.w r1, [r9, r7, lsl #1]
a2a2: f839 2017 ldrh.w r2, [r9, r7, lsl #1]
a2a6: f363 124a bfi r2, r3, #5, #6
a2aa: f829 2017 strh.w r2, [r9, r7, lsl #1]
a2ae: 0a12 lsrs r2, r2, #8
a2b0: 9b1d ldr r3, [sp, #116] ; 0x74
a2b2: f363 02c7 bfi r2, r3, #3, #5
a2b6: 7042 strb r2, [r0, #1]
mask_p++;
a2b8: 3701 adds r7, #1
vdb_buf_tmp++;
a2ba: f10a 0a02 add.w sl, sl, #2
subpx_cnt = 0;
a2be: 2100 movs r1, #0
a2c0: e768 b.n a194 <lv_draw_label+0x770>
map_p++;
a2c2: f10b 0b01 add.w fp, fp, #1
bitmask = bitmask_init;
a2c6: f8dd e06c ldr.w lr, [sp, #108] ; 0x6c
col_bit = 0;
a2ca: 9e15 ldr r6, [sp, #84] ; 0x54
a2cc: e76a b.n a1a4 <lv_draw_label+0x780>
a2ce: 4653 mov r3, sl
a2d0: 46ca mov sl, r9
a2d2: 4699 mov r9, r3
if(other_mask_cnt) {
a2d4: 9b2a ldr r3, [sp, #168] ; 0xa8
a2d6: bb4b cbnz r3, a32c <lv_draw_label+0x908>
if((int32_t) mask_p + (col_end - col_start) < mask_buf_size) {
a2d8: 9b2b ldr r3, [sp, #172] ; 0xac
a2da: 443b add r3, r7
a2dc: 9a29 ldr r2, [sp, #164] ; 0xa4
a2de: 429a cmp r2, r3
a2e0: dd41 ble.n a366 <lv_draw_label+0x942>
map_area.y2 ++;
a2e2: f8bd 30e6 ldrh.w r3, [sp, #230] ; 0xe6
a2e6: 3301 adds r3, #1
a2e8: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6
a2ec: 9726 str r7, [sp, #152] ; 0x98
col_bit += ((box_w - col_end) + col_start) * bpp;
a2ee: 9b2c ldr r3, [sp, #176] ; 0xb0
a2f0: 441e add r6, r3
map_p += (col_bit >> 3);
a2f2: eb0b 0be6 add.w fp, fp, r6, asr #3
col_bit = col_bit & 0x7;
a2f6: f006 0607 and.w r6, r6, #7
vdb_buf_tmp += vdb_width - (col_end - col_start) / 3;
a2fa: 9b2d ldr r3, [sp, #180] ; 0xb4
a2fc: 4499 add r9, r3
for(row = row_start ; row < row_end; row++) {
a2fe: 9b25 ldr r3, [sp, #148] ; 0x94
a300: 3301 adds r3, #1
a302: 9325 str r3, [sp, #148] ; 0x94
a304: 9a28 ldr r2, [sp, #160] ; 0xa0
a306: 4293 cmp r3, r2
a308: da44 bge.n a394 <lv_draw_label+0x970>
bitmask = bitmask_init >> col_bit;
a30a: 9b1b ldr r3, [sp, #108] ; 0x6c
a30c: fa23 fe06 lsr.w lr, r3, r6
for(col = col_start; col < col_end; col++) {
a310: 9d27 ldr r5, [sp, #156] ; 0x9c
a312: 9a14 ldr r2, [sp, #80] ; 0x50
a314: 4295 cmp r5, r2
a316: da07 bge.n a328 <lv_draw_label+0x904>
a318: 9f26 ldr r7, [sp, #152] ; 0x98
a31a: 2100 movs r1, #0
a31c: f1c8 0c08 rsb ip, r8, #8
else mask_buf[mask_p] = LV_OPA_COVER;
a320: 464b mov r3, r9
a322: 46d1 mov r9, sl
a324: 469a mov sl, r3
a326: e742 b.n a1ae <lv_draw_label+0x78a>
for(col = col_start; col < col_end; col++) {
a328: 9f26 ldr r7, [sp, #152] ; 0x98
a32a: e7d3 b.n a2d4 <lv_draw_label+0x8b0>
lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf + mask_p_start, map_area.x1, map_area.y2,
a32c: 9b26 ldr r3, [sp, #152] ; 0x98
a32e: 9a21 ldr r2, [sp, #132] ; 0x84
a330: 4413 add r3, r2
a332: 461c mov r4, r3
a334: f9bd 10e0 ldrsh.w r1, [sp, #224] ; 0xe0
a338: f8bd 30e4 ldrh.w r3, [sp, #228] ; 0xe4
a33c: 3301 adds r3, #1
a33e: 1a5b subs r3, r3, r1
a340: b21b sxth r3, r3
a342: f9bd 20e6 ldrsh.w r2, [sp, #230] ; 0xe6
a346: 4620 mov r0, r4
a348: 4dab ldr r5, [pc, #684] ; (a5f8 <lv_draw_label+0xbd4>)
a34a: 47a8 blx r5
if(mask_res == LV_DRAW_MASK_RES_TRANSP) {
a34c: 2800 cmp r0, #0
a34e: d1c3 bne.n a2d8 <lv_draw_label+0x8b4>
a350: f8bd 10e4 ldrh.w r1, [sp, #228] ; 0xe4
a354: 3101 adds r1, #1
a356: f8bd 30e0 ldrh.w r3, [sp, #224] ; 0xe0
a35a: 1ac9 subs r1, r1, r3
_lv_memset_00(mask_buf + mask_p_start, lv_area_get_width(&map_area));
a35c: b209 sxth r1, r1
a35e: 4620 mov r0, r4
a360: 4ba6 ldr r3, [pc, #664] ; (a5fc <lv_draw_label+0xbd8>)
a362: 4798 blx r3
a364: e7b8 b.n a2d8 <lv_draw_label+0x8b4>
_lv_blend_map(clip_area, &map_area, color_buf, mask_buf, LV_DRAW_MASK_RES_CHANGED, opa, blend_mode);
a366: 9b0f ldr r3, [sp, #60] ; 0x3c
a368: 9302 str r3, [sp, #8]
a36a: 9b16 ldr r3, [sp, #88] ; 0x58
a36c: 9301 str r3, [sp, #4]
a36e: 2302 movs r3, #2
a370: 9300 str r3, [sp, #0]
a372: 9b21 ldr r3, [sp, #132] ; 0x84
a374: 4652 mov r2, sl
a376: a938 add r1, sp, #224 ; 0xe0
a378: 980d ldr r0, [sp, #52] ; 0x34
a37a: 4ca1 ldr r4, [pc, #644] ; (a600 <lv_draw_label+0xbdc>)
a37c: 47a0 blx r4
map_area.y1 = map_area.y2 + 1;
a37e: f8bd 30e6 ldrh.w r3, [sp, #230] ; 0xe6
a382: 3301 adds r3, #1
a384: b21b sxth r3, r3
a386: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2
map_area.y2 = map_area.y1;
a38a: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6
mask_p = 0;
a38e: 2300 movs r3, #0
a390: 9326 str r3, [sp, #152] ; 0x98
a392: e7ac b.n a2ee <lv_draw_label+0x8ca>
a394: f8dd b0c8 ldr.w fp, [sp, #200] ; 0xc8
a398: f8dd 90cc ldr.w r9, [sp, #204] ; 0xcc
a39c: 9f34 ldr r7, [sp, #208] ; 0xd0
a39e: f8dd a0c4 ldr.w sl, [sp, #196] ; 0xc4
a3a2: f8dd 80d4 ldr.w r8, [sp, #212] ; 0xd4
if(map_area.y1 != map_area.y2) {
a3a6: f9bd 30e6 ldrsh.w r3, [sp, #230] ; 0xe6
a3aa: f9bd 20e2 ldrsh.w r2, [sp, #226] ; 0xe2
a3ae: 429a cmp r2, r3
a3b0: d00e beq.n a3d0 <lv_draw_label+0x9ac>
map_area.y2--;
a3b2: 3b01 subs r3, #1
a3b4: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6
_lv_blend_map(clip_area, &map_area, color_buf, mask_buf, LV_DRAW_MASK_RES_CHANGED, opa, blend_mode);
a3b8: 9b0f ldr r3, [sp, #60] ; 0x3c
a3ba: 9302 str r3, [sp, #8]
a3bc: 9b16 ldr r3, [sp, #88] ; 0x58
a3be: 9301 str r3, [sp, #4]
a3c0: 2302 movs r3, #2
a3c2: 9300 str r3, [sp, #0]
a3c4: 9b21 ldr r3, [sp, #132] ; 0x84
a3c6: 9a30 ldr r2, [sp, #192] ; 0xc0
a3c8: a938 add r1, sp, #224 ; 0xe0
a3ca: 980d ldr r0, [sp, #52] ; 0x34
a3cc: 4c8c ldr r4, [pc, #560] ; (a600 <lv_draw_label+0xbdc>)
a3ce: 47a0 blx r4
_lv_mem_buf_release(mask_buf);
a3d0: 9821 ldr r0, [sp, #132] ; 0x84
a3d2: 4c8c ldr r4, [pc, #560] ; (a604 <lv_draw_label+0xbe0>)
a3d4: 47a0 blx r4
_lv_mem_buf_release(color_buf);
a3d6: 9830 ldr r0, [sp, #192] ; 0xc0
a3d8: 47a0 blx r4
a3da: e4fb b.n 9dd4 <lv_draw_label+0x3b0>
draw_letter_normal(pos_x, pos_y, &g, clip_area, map_p, color, opa, blend_mode);
a3dc: b22c sxth r4, r5
a3de: f9bd 0054 ldrsh.w r0, [sp, #84] ; 0x54
a3e2: f8ad 608c strh.w r6, [sp, #140] ; 0x8c
uint32_t bpp = g->bpp;
a3e6: f89d 30f2 ldrb.w r3, [sp, #242] ; 0xf2
a3ea: 9320 str r3, [sp, #128] ; 0x80
if(bpp == 3) bpp = 4;
a3ec: 2b03 cmp r3, #3
a3ee: f000 80c1 beq.w a574 <lv_draw_label+0xb50>
switch(bpp) {
a3f2: 3b01 subs r3, #1
a3f4: 2b07 cmp r3, #7
a3f6: f200 80c5 bhi.w a584 <lv_draw_label+0xb60>
a3fa: e8df f013 tbh [pc, r3, lsl #1]
a3fe: 00cd .short 0x00cd
a400: 00c30008 .word 0x00c30008
a404: 00c300bd .word 0x00c300bd
a408: 00c300c3 .word 0x00c300c3
a40c: 00d5 .short 0x00d5
shades = 4;
a40e: 2304 movs r3, #4
bitmask_init = 0xC0;
a410: 22c0 movs r2, #192 ; 0xc0
a412: 9212 str r2, [sp, #72] ; 0x48
bpp_opa_table_p = _lv_bpp2_opa_table;
a414: 4a7c ldr r2, [pc, #496] ; (a608 <lv_draw_label+0xbe4>)
a416: 9222 str r2, [sp, #136] ; 0x88
if(opa < LV_OPA_MAX) {
a418: 9916 ldr r1, [sp, #88] ; 0x58
a41a: 29f9 cmp r1, #249 ; 0xf9
a41c: d82b bhi.n a476 <lv_draw_label+0xa52>
if(prev_opa != opa || prev_bpp != bpp) {
a41e: 4a7b ldr r2, [pc, #492] ; (a60c <lv_draw_label+0xbe8>)
a420: f892 2100 ldrb.w r2, [r2, #256] ; 0x100
a424: 428a cmp r2, r1
a426: f000 80c8 beq.w a5ba <lv_draw_label+0xb96>
for(i = 0; i < shades; i++) {
a42a: b1d3 cbz r3, a462 <lv_draw_label+0xa3e>
a42c: 9e22 ldr r6, [sp, #136] ; 0x88
a42e: 1e72 subs r2, r6, #1
a430: 4976 ldr r1, [pc, #472] ; (a60c <lv_draw_label+0xbe8>)
a432: 3901 subs r1, #1
a434: 3b01 subs r3, #1
a436: eb06 0c03 add.w ip, r6, r3
opa_table[i] = bpp_opa_table_p[i] == LV_OPA_COVER ? opa : ((bpp_opa_table_p[i] * opa) >> 8);
a43a: 9b16 ldr r3, [sp, #88] ; 0x58
a43c: 461e mov r6, r3
a43e: f8cd b050 str.w fp, [sp, #80] ; 0x50
a442: 469b mov fp, r3
a444: f812 3f01 ldrb.w r3, [r2, #1]!
a448: 2bff cmp r3, #255 ; 0xff
a44a: bf1a itte ne
a44c: fb0b f303 mulne.w r3, fp, r3
a450: f3c3 2307 ubfxne r3, r3, #8, #8
a454: 4633 moveq r3, r6
a456: f801 3f01 strb.w r3, [r1, #1]!
for(i = 0; i < shades; i++) {
a45a: 4594 cmp ip, r2
a45c: d1f2 bne.n a444 <lv_draw_label+0xa20>
a45e: f8dd b050 ldr.w fp, [sp, #80] ; 0x50
prev_opa = opa;
a462: 4b6a ldr r3, [pc, #424] ; (a60c <lv_draw_label+0xbe8>)
a464: f89d 2058 ldrb.w r2, [sp, #88] ; 0x58
a468: f883 2100 strb.w r2, [r3, #256] ; 0x100
prev_bpp = bpp;
a46c: 9a20 ldr r2, [sp, #128] ; 0x80
a46e: f8c3 2104 str.w r2, [r3, #260] ; 0x104
bpp_opa_table_p = opa_table;
a472: 9b1c ldr r3, [sp, #112] ; 0x70
a474: 9322 str r3, [sp, #136] ; 0x88
int32_t box_w = g->box_w;
a476: f8bd 30ea ldrh.w r3, [sp, #234] ; 0xea
a47a: 9324 str r3, [sp, #144] ; 0x90
int32_t box_h = g->box_h;
a47c: f8bd 20ec ldrh.w r2, [sp, #236] ; 0xec
int32_t width_bit = box_w * bpp; /*Letter width in bits*/
a480: 9920 ldr r1, [sp, #128] ; 0x80
a482: fb01 fc03 mul.w ip, r1, r3
int32_t col_start = pos_x >= clip_area->x1 ? 0 : clip_area->x1 - pos_x;
a486: 9b0d ldr r3, [sp, #52] ; 0x34
a488: f9b3 3000 ldrsh.w r3, [r3]
a48c: 429c cmp r4, r3
a48e: bfb4 ite lt
a490: 1b1b sublt r3, r3, r4
a492: 2300 movge r3, #0
a494: 9314 str r3, [sp, #80] ; 0x50
int32_t col_end = pos_x + box_w <= clip_area->x2 ? box_w : clip_area->x2 - pos_x + 1;
a496: 9b0d ldr r3, [sp, #52] ; 0x34
a498: f9b3 3004 ldrsh.w r3, [r3, #4]
a49c: 9924 ldr r1, [sp, #144] ; 0x90
a49e: 4421 add r1, r4
a4a0: 4299 cmp r1, r3
a4a2: bfc6 itte gt
a4a4: 1b1b subgt r3, r3, r4
a4a6: 3301 addgt r3, #1
a4a8: 9b24 ldrle r3, [sp, #144] ; 0x90
a4aa: 9325 str r3, [sp, #148] ; 0x94
int32_t row_start = pos_y >= clip_area->y1 ? 0 : clip_area->y1 - pos_y;
a4ac: 9b0d ldr r3, [sp, #52] ; 0x34
a4ae: f9b3 3002 ldrsh.w r3, [r3, #2]
a4b2: 4298 cmp r0, r3
a4b4: bfb4 ite lt
a4b6: 1a1b sublt r3, r3, r0
a4b8: 2300 movge r3, #0
a4ba: 9326 str r3, [sp, #152] ; 0x98
int32_t row_end = pos_y + box_h <= clip_area->y2 ? box_h : clip_area->y2 - pos_y + 1;
a4bc: 9b0d ldr r3, [sp, #52] ; 0x34
a4be: f9b3 3006 ldrsh.w r3, [r3, #6]
a4c2: 1811 adds r1, r2, r0
a4c4: 4299 cmp r1, r3
a4c6: bfc3 ittte gt
a4c8: 1a1b subgt r3, r3, r0
a4ca: 3301 addgt r3, #1
a4cc: 931b strgt r3, [sp, #108] ; 0x6c
a4ce: 921b strle r2, [sp, #108] ; 0x6c
uint32_t bit_ofs = (row_start * width_bit) + (col_start * bpp);
a4d0: 9b14 ldr r3, [sp, #80] ; 0x50
a4d2: 9321 str r3, [sp, #132] ; 0x84
a4d4: 9920 ldr r1, [sp, #128] ; 0x80
a4d6: fb03 f401 mul.w r4, r3, r1
a4da: 9826 ldr r0, [sp, #152] ; 0x98
a4dc: fb00 440c mla r4, r0, ip, r4
map_p += bit_ofs >> 3;
a4e0: eb0e 06d4 add.w r6, lr, r4, lsr #3
col_bit = bit_ofs & 0x7; /* "& 0x7" equals to "% 8" just faster */
a4e4: f004 0407 and.w r4, r4, #7
uint32_t mask_buf_size = box_w * box_h > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : box_w * box_h;
a4e8: 9924 ldr r1, [sp, #144] ; 0x90
a4ea: fb02 fe01 mul.w lr, r2, r1
a4ee: 4672 mov r2, lr
a4f0: f5be 7ff0 cmp.w lr, #480 ; 0x1e0
a4f4: bfa8 it ge
a4f6: f44f 72f0 movge.w r2, #480 ; 0x1e0
a4fa: 921d str r2, [sp, #116] ; 0x74
lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size);
a4fc: 4610 mov r0, r2
a4fe: 4b44 ldr r3, [pc, #272] ; (a610 <lv_draw_label+0xbec>)
a500: 4798 blx r3
a502: 9018 str r0, [sp, #96] ; 0x60
fill_area.x1 = col_start + pos_x;
a504: b2ad uxth r5, r5
a506: 9b14 ldr r3, [sp, #80] ; 0x50
a508: 18eb adds r3, r5, r3
a50a: f8ad 30e0 strh.w r3, [sp, #224] ; 0xe0
fill_area.x2 = col_end + pos_x - 1;
a50e: 3d01 subs r5, #1
a510: 9a25 ldr r2, [sp, #148] ; 0x94
a512: 18ab adds r3, r5, r2
a514: f8ad 30e4 strh.w r3, [sp, #228] ; 0xe4
fill_area.y1 = row_start + pos_y;
a518: 9d15 ldr r5, [sp, #84] ; 0x54
a51a: 9826 ldr r0, [sp, #152] ; 0x98
a51c: 4405 add r5, r0
a51e: b22b sxth r3, r5
a520: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2
fill_area.y2 = fill_area.y1;
a524: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6
uint8_t other_mask_cnt = lv_draw_mask_get_cnt();
a528: 4b3a ldr r3, [pc, #232] ; (a614 <lv_draw_label+0xbf0>)
a52a: 4798 blx r3
a52c: 901e str r0, [sp, #120] ; 0x78
uint32_t col_bit_max = 8 - bpp;
a52e: 9920 ldr r1, [sp, #128] ; 0x80
a530: f1c1 0508 rsb r5, r1, #8
uint32_t col_bit_row_ofs = (box_w + col_start - col_end) * bpp;
a534: 9a24 ldr r2, [sp, #144] ; 0x90
a536: 9b14 ldr r3, [sp, #80] ; 0x50
a538: 18d3 adds r3, r2, r3
a53a: 9a25 ldr r2, [sp, #148] ; 0x94
a53c: 1a9b subs r3, r3, r2
a53e: fb01 f303 mul.w r3, r1, r3
a542: 9320 str r3, [sp, #128] ; 0x80
for(row = row_start ; row < row_end; row++) {
a544: 9826 ldr r0, [sp, #152] ; 0x98
a546: 9b1b ldr r3, [sp, #108] ; 0x6c
a548: 4298 cmp r0, r3
a54a: f280 80df bge.w a70c <lv_draw_label+0xce8>
a54e: f04f 0e00 mov.w lr, #0
mask_buf[mask_p] = 0;
a552: f8cd b090 str.w fp, [sp, #144] ; 0x90
a556: f8cd 9098 str.w r9, [sp, #152] ; 0x98
a55a: 9727 str r7, [sp, #156] ; 0x9c
a55c: 460f mov r7, r1
a55e: 9515 str r5, [sp, #84] ; 0x54
a560: f8cd a0a0 str.w sl, [sp, #160] ; 0xa0
a564: f8dd a094 ldr.w sl, [sp, #148] ; 0x94
a568: 4681 mov r9, r0
a56a: f8cd 8094 str.w r8, [sp, #148] ; 0x94
a56e: f8dd 8088 ldr.w r8, [sp, #136] ; 0x88
a572: e07a b.n a66a <lv_draw_label+0xc46>
if(bpp == 3) bpp = 4;
a574: 2304 movs r3, #4
a576: 9320 str r3, [sp, #128] ; 0x80
shades = 16;
a578: 2310 movs r3, #16
bitmask_init = 0xF0;
a57a: 22f0 movs r2, #240 ; 0xf0
a57c: 9212 str r2, [sp, #72] ; 0x48
bpp_opa_table_p = _lv_bpp4_opa_table;
a57e: 4a26 ldr r2, [pc, #152] ; (a618 <lv_draw_label+0xbf4>)
a580: 9222 str r2, [sp, #136] ; 0x88
a582: e749 b.n a418 <lv_draw_label+0x9f4>
LV_LOG_WARN("lv_draw_letter: invalid bpp");
a584: 4b25 ldr r3, [pc, #148] ; (a61c <lv_draw_label+0xbf8>)
a586: 9300 str r3, [sp, #0]
a588: 4b25 ldr r3, [pc, #148] ; (a620 <lv_draw_label+0xbfc>)
a58a: f240 12e5 movw r2, #485 ; 0x1e5
a58e: 4925 ldr r1, [pc, #148] ; (a624 <lv_draw_label+0xc00>)
a590: 2002 movs r0, #2
a592: 4c25 ldr r4, [pc, #148] ; (a628 <lv_draw_label+0xc04>)
a594: 47a0 blx r4
a596: e41d b.n 9dd4 <lv_draw_label+0x3b0>
uint32_t bpp = g->bpp;
a598: 2301 movs r3, #1
a59a: 9320 str r3, [sp, #128] ; 0x80
shades = 2;
a59c: 2302 movs r3, #2
bitmask_init = 0x80;
a59e: 2280 movs r2, #128 ; 0x80
a5a0: 9212 str r2, [sp, #72] ; 0x48
bpp_opa_table_p = _lv_bpp1_opa_table;
a5a2: 4a22 ldr r2, [pc, #136] ; (a62c <lv_draw_label+0xc08>)
a5a4: 9222 str r2, [sp, #136] ; 0x88
a5a6: e737 b.n a418 <lv_draw_label+0x9f4>
uint32_t bpp = g->bpp;
a5a8: 2308 movs r3, #8
a5aa: 9320 str r3, [sp, #128] ; 0x80
shades = 256;
a5ac: f44f 7380 mov.w r3, #256 ; 0x100
bitmask_init = 0xFF;
a5b0: 22ff movs r2, #255 ; 0xff
a5b2: 9212 str r2, [sp, #72] ; 0x48
bpp_opa_table_p = _lv_bpp8_opa_table;
a5b4: 4a1e ldr r2, [pc, #120] ; (a630 <lv_draw_label+0xc0c>)
a5b6: 9222 str r2, [sp, #136] ; 0x88
a5b8: e72e b.n a418 <lv_draw_label+0x9f4>
if(prev_opa != opa || prev_bpp != bpp) {
a5ba: 4a14 ldr r2, [pc, #80] ; (a60c <lv_draw_label+0xbe8>)
a5bc: f8d2 2104 ldr.w r2, [r2, #260] ; 0x104
a5c0: 9920 ldr r1, [sp, #128] ; 0x80
a5c2: 4291 cmp r1, r2
a5c4: f47f af31 bne.w a42a <lv_draw_label+0xa06>
a5c8: e74b b.n a462 <lv_draw_label+0xa3e>
map_p++;
a5ca: 3601 adds r6, #1
bitmask = bitmask_init;
a5cc: 9812 ldr r0, [sp, #72] ; 0x48
col_bit = 0;
a5ce: 2400 movs r4, #0
a5d0: 3101 adds r1, #1
for(col = col_start; col < col_end; col++) {
a5d2: 458c cmp ip, r1
a5d4: d02e beq.n a634 <lv_draw_label+0xc10>
letter_px = (*map_p & bitmask) >> (col_bit_max - col_bit);
a5d6: 7833 ldrb r3, [r6, #0]
a5d8: 4003 ands r3, r0
a5da: 1b2a subs r2, r5, r4
a5dc: 40d3 lsrs r3, r2
if(letter_px) {
a5de: f013 0fff tst.w r3, #255 ; 0xff
mask_buf[mask_p] = bpp_opa_table_p[letter_px];
a5e2: bf1a itte ne
a5e4: b2db uxtbne r3, r3
a5e6: f818 3003 ldrbne.w r3, [r8, r3]
mask_buf[mask_p] = 0;
a5ea: 2300 moveq r3, #0
a5ec: 700b strb r3, [r1, #0]
if(col_bit < col_bit_max) {
a5ee: 42a5 cmp r5, r4
a5f0: d9eb bls.n a5ca <lv_draw_label+0xba6>
col_bit += bpp;
a5f2: 443c add r4, r7
bitmask = bitmask >> bpp;
a5f4: 40f8 lsrs r0, r7
a5f6: e7eb b.n a5d0 <lv_draw_label+0xbac>
a5f8: 0000be1d .word 0x0000be1d
a5fc: 00012b37 .word 0x00012b37
a600: 00008281 .word 0x00008281
a604: 00012571 .word 0x00012571
a608: 00024d64 .word 0x00024d64
a60c: 20002a50 .word 0x20002a50
a610: 0001293d .word 0x0001293d
a614: 0000bec5 .word 0x0000bec5
a618: 00024d68 .word 0x00024d68
a61c: 00024f88 .word 0x00024f88
a620: 00024e9c .word 0x00024e9c
a624: 00024eb8 .word 0x00024eb8
a628: 0001225d .word 0x0001225d
a62c: 00024d60 .word 0x00024d60
a630: 00024d78 .word 0x00024d78
a634: 9515 str r5, [sp, #84] ; 0x54
if(other_mask_cnt) {
a636: 9b1e ldr r3, [sp, #120] ; 0x78
a638: bb53 cbnz r3, a690 <lv_draw_label+0xc6c>
if((uint32_t) mask_p + (col_end - col_start) < mask_buf_size) {
a63a: 9b14 ldr r3, [sp, #80] ; 0x50
a63c: ebaa 0303 sub.w r3, sl, r3
a640: 445b add r3, fp
a642: 9a1d ldr r2, [sp, #116] ; 0x74
a644: 429a cmp r2, r3
a646: d93f bls.n a6c8 <lv_draw_label+0xca4>
fill_area.y2 ++;
a648: f8bd 30e6 ldrh.w r3, [sp, #230] ; 0xe6
a64c: 3301 adds r3, #1
a64e: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6
a652: 46de mov lr, fp
col_bit += col_bit_row_ofs;
a654: 9b20 ldr r3, [sp, #128] ; 0x80
a656: 441c add r4, r3
map_p += (col_bit >> 3);
a658: eb06 06d4 add.w r6, r6, r4, lsr #3
col_bit = col_bit & 0x7;
a65c: f004 0407 and.w r4, r4, #7
for(row = row_start ; row < row_end; row++) {
a660: f109 0901 add.w r9, r9, #1
a664: 9b1b ldr r3, [sp, #108] ; 0x6c
a666: 4599 cmp r9, r3
a668: da47 bge.n a6fa <lv_draw_label+0xcd6>
bitmask = bitmask_init >> col_bit;
a66a: 9b12 ldr r3, [sp, #72] ; 0x48
a66c: fa23 f004 lsr.w r0, r3, r4
for(col = col_start; col < col_end; col++) {
a670: 9b14 ldr r3, [sp, #80] ; 0x50
a672: 4553 cmp r3, sl
a674: da0a bge.n a68c <lv_draw_label+0xc68>
a676: 9a18 ldr r2, [sp, #96] ; 0x60
a678: eb02 010e add.w r1, r2, lr
a67c: 9b21 ldr r3, [sp, #132] ; 0x84
a67e: ebaa 0b03 sub.w fp, sl, r3
a682: 44f3 add fp, lr
a684: eb02 0c0b add.w ip, r2, fp
a688: 9d15 ldr r5, [sp, #84] ; 0x54
a68a: e7a4 b.n a5d6 <lv_draw_label+0xbb2>
a68c: 46f3 mov fp, lr
a68e: e7d2 b.n a636 <lv_draw_label+0xc12>
lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf + mask_p_start, fill_area.x1, fill_area.y2,
a690: 9b18 ldr r3, [sp, #96] ; 0x60
a692: 4473 add r3, lr
a694: 4618 mov r0, r3
a696: 9322 str r3, [sp, #136] ; 0x88
a698: f9bd 10e0 ldrsh.w r1, [sp, #224] ; 0xe0
a69c: f8bd 30e4 ldrh.w r3, [sp, #228] ; 0xe4
a6a0: 3301 adds r3, #1
a6a2: 1a5b subs r3, r3, r1
a6a4: b21b sxth r3, r3
a6a6: f9bd 20e6 ldrsh.w r2, [sp, #230] ; 0xe6
a6aa: 4d85 ldr r5, [pc, #532] ; (a8c0 <lv_draw_label+0xe9c>)
a6ac: 47a8 blx r5
if(mask_res == LV_DRAW_MASK_RES_TRANSP) {
a6ae: 2800 cmp r0, #0
a6b0: d1c3 bne.n a63a <lv_draw_label+0xc16>
a6b2: f8bd 10e4 ldrh.w r1, [sp, #228] ; 0xe4
a6b6: 3101 adds r1, #1
a6b8: f8bd 30e0 ldrh.w r3, [sp, #224] ; 0xe0
a6bc: 1ac9 subs r1, r1, r3
_lv_memset_00(mask_buf + mask_p_start, lv_area_get_width(&fill_area));
a6be: b209 sxth r1, r1
a6c0: 9822 ldr r0, [sp, #136] ; 0x88
a6c2: 4b80 ldr r3, [pc, #512] ; (a8c4 <lv_draw_label+0xea0>)
a6c4: 4798 blx r3
a6c6: e7b8 b.n a63a <lv_draw_label+0xc16>
_lv_blend_fill(clip_area, &fill_area,
a6c8: 9b0f ldr r3, [sp, #60] ; 0x3c
a6ca: 9302 str r3, [sp, #8]
a6cc: 23ff movs r3, #255 ; 0xff
a6ce: 9301 str r3, [sp, #4]
a6d0: 2302 movs r3, #2
a6d2: 9300 str r3, [sp, #0]
a6d4: 9b18 ldr r3, [sp, #96] ; 0x60
a6d6: f8bd 208c ldrh.w r2, [sp, #140] ; 0x8c
a6da: a938 add r1, sp, #224 ; 0xe0
a6dc: 980d ldr r0, [sp, #52] ; 0x34
a6de: f8df b1e8 ldr.w fp, [pc, #488] ; a8c8 <lv_draw_label+0xea4>
a6e2: 47d8 blx fp
fill_area.y1 = fill_area.y2 + 1;
a6e4: f8bd 30e6 ldrh.w r3, [sp, #230] ; 0xe6
a6e8: 3301 adds r3, #1
a6ea: b21b sxth r3, r3
a6ec: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2
fill_area.y2 = fill_area.y1;
a6f0: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6
mask_p = 0;
a6f4: f04f 0e00 mov.w lr, #0
a6f8: e7ac b.n a654 <lv_draw_label+0xc30>
a6fa: f8dd b090 ldr.w fp, [sp, #144] ; 0x90
a6fe: f8dd 9098 ldr.w r9, [sp, #152] ; 0x98
a702: 9f27 ldr r7, [sp, #156] ; 0x9c
a704: f8dd a0a0 ldr.w sl, [sp, #160] ; 0xa0
a708: f8dd 8094 ldr.w r8, [sp, #148] ; 0x94
if(fill_area.y1 != fill_area.y2) {
a70c: f9bd 30e6 ldrsh.w r3, [sp, #230] ; 0xe6
a710: f9bd 20e2 ldrsh.w r2, [sp, #226] ; 0xe2
a714: 429a cmp r2, r3
a716: d00f beq.n a738 <lv_draw_label+0xd14>
fill_area.y2--;
a718: 3b01 subs r3, #1
a71a: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6
_lv_blend_fill(clip_area, &fill_area,
a71e: 9b0f ldr r3, [sp, #60] ; 0x3c
a720: 9302 str r3, [sp, #8]
a722: 23ff movs r3, #255 ; 0xff
a724: 9301 str r3, [sp, #4]
a726: 2302 movs r3, #2
a728: 9300 str r3, [sp, #0]
a72a: 9b18 ldr r3, [sp, #96] ; 0x60
a72c: f8bd 208c ldrh.w r2, [sp, #140] ; 0x8c
a730: a938 add r1, sp, #224 ; 0xe0
a732: 980d ldr r0, [sp, #52] ; 0x34
a734: 4c64 ldr r4, [pc, #400] ; (a8c8 <lv_draw_label+0xea4>)
a736: 47a0 blx r4
_lv_mem_buf_release(mask_buf);
a738: 9818 ldr r0, [sp, #96] ; 0x60
a73a: 4b64 ldr r3, [pc, #400] ; (a8cc <lv_draw_label+0xea8>)
a73c: 4798 blx r3
a73e: f7ff bb49 b.w 9dd4 <lv_draw_label+0x3b0>
cmd_state = CMD_STATE_WAIT;
a742: 2300 movs r3, #0
a744: 9306 str r3, [sp, #24]
a746: f7ff bb4d b.w 9de4 <lv_draw_label+0x3c0>
a74a: 4653 mov r3, sl
a74c: 46ca mov sl, r9
a74e: 4699 mov r9, r3
if(dsc->decor & LV_TEXT_DECOR_STRIKETHROUGH) {
a750: f898 3018 ldrb.w r3, [r8, #24]
a754: f013 0f02 tst.w r3, #2
a758: d146 bne.n a7e8 <lv_draw_label+0xdc4>
if(dsc->decor & LV_TEXT_DECOR_UNDERLINE) {
a75a: f898 3018 ldrb.w r3, [r8, #24]
a75e: f013 0f01 tst.w r3, #1
a762: d162 bne.n a82a <lv_draw_label+0xe06>
line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag);
a764: 9a0a ldr r2, [sp, #40] ; 0x28
a766: 9d07 ldr r5, [sp, #28]
a768: 1956 adds r6, r2, r5
a76a: f9b8 200c ldrsh.w r2, [r8, #12]
a76e: f898 3017 ldrb.w r3, [r8, #23]
a772: 9300 str r3, [sp, #0]
a774: 9b10 ldr r3, [sp, #64] ; 0x40
a776: 9905 ldr r1, [sp, #20]
a778: 4630 mov r0, r6
a77a: 4c55 ldr r4, [pc, #340] ; (a8d0 <lv_draw_label+0xeac>)
a77c: 47a0 blx r4
a77e: 1944 adds r4, r0, r5
pos.x = coords->x1;
a780: 9b13 ldr r3, [sp, #76] ; 0x4c
a782: f9b3 5000 ldrsh.w r5, [r3]
if(dsc->flag & LV_TXT_FLAG_CENTER) {
a786: f898 2017 ldrb.w r2, [r8, #23]
a78a: f012 0f04 tst.w r2, #4
a78e: d16c bne.n a86a <lv_draw_label+0xe46>
else if(dsc->flag & LV_TXT_FLAG_RIGHT) {
a790: f012 0f08 tst.w r2, #8
a794: d17e bne.n a894 <lv_draw_label+0xe70>
a796: 9b0e ldr r3, [sp, #56] ; 0x38
a798: 9917 ldr r1, [sp, #92] ; 0x5c
a79a: 440b add r3, r1
a79c: b21b sxth r3, r3
a79e: 9a11 ldr r2, [sp, #68] ; 0x44
a7a0: 440a add r2, r1
a7a2: b292 uxth r2, r2
a7a4: 9211 str r2, [sp, #68] ; 0x44
line_start = line_end;
a7a6: f8dd b01c ldr.w fp, [sp, #28]
pos.y += line_height;
a7aa: 930e str r3, [sp, #56] ; 0x38
if(pos.y > mask->y2) return;
a7ac: 9a0d ldr r2, [sp, #52] ; 0x34
a7ae: f9b2 2006 ldrsh.w r2, [r2, #6]
a7b2: 429a cmp r2, r3
a7b4: f6ff a93f blt.w 9a36 <lv_draw_label+0x12>
line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag);
a7b8: 9407 str r4, [sp, #28]
while(txt[line_start] != '\0') {
a7ba: 9a0a ldr r2, [sp, #40] ; 0x28
a7bc: 4613 mov r3, r2
a7be: 445b add r3, fp
a7c0: 9309 str r3, [sp, #36] ; 0x24
a7c2: f812 300b ldrb.w r3, [r2, fp]
a7c6: 2b00 cmp r3, #0
a7c8: f43f a935 beq.w 9a36 <lv_draw_label+0x12>
pos.x += x_ofs;
a7cc: 9b1a ldr r3, [sp, #104] ; 0x68
a7ce: 441d add r5, r3
a7d0: fa0f f985 sxth.w r9, r5
i = 0;
a7d4: 2300 movs r3, #0
a7d6: 9352 str r3, [sp, #328] ; 0x148
cmd_state = CMD_STATE_WAIT;
a7d8: 9306 str r3, [sp, #24]
bpp_opa_table_p = opa_table;
a7da: 4b3e ldr r3, [pc, #248] ; (a8d4 <lv_draw_label+0xeb0>)
a7dc: 931c str r3, [sp, #112] ; 0x70
a7de: 464b mov r3, r9
a7e0: 46d1 mov r9, sl
a7e2: 469a mov sl, r3
while(i < line_end - line_start) {
a7e4: f7ff bafe b.w 9de4 <lv_draw_label+0x3c0>
p1.x = pos_x_start;
a7e8: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c
a7ec: f8ad 30e0 strh.w r3, [sp, #224] ; 0xe0
p1.y = pos.y + (dsc->font->line_height / 2) + line_dsc.width / 2;
a7f0: f8d8 3004 ldr.w r3, [r8, #4]
a7f4: f9b3 3008 ldrsh.w r3, [r3, #8]
a7f8: eb03 72d3 add.w r2, r3, r3, lsr #31
a7fc: f9bd 314e ldrsh.w r3, [sp, #334] ; 0x14e
a800: eb03 73d3 add.w r3, r3, r3, lsr #31
a804: 105b asrs r3, r3, #1
a806: eb03 0362 add.w r3, r3, r2, asr #1
a80a: 9a11 ldr r2, [sp, #68] ; 0x44
a80c: 4413 add r3, r2
a80e: b21b sxth r3, r3
a810: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2
p2.x = pos.x;
a814: f8ad 90e8 strh.w r9, [sp, #232] ; 0xe8
p2.y = p1.y;
a818: f8ad 30ea strh.w r3, [sp, #234] ; 0xea
lv_draw_line(&p1, &p2, mask, &line_dsc);
a81c: ab53 add r3, sp, #332 ; 0x14c
a81e: 9a0d ldr r2, [sp, #52] ; 0x34
a820: a93a add r1, sp, #232 ; 0xe8
a822: a838 add r0, sp, #224 ; 0xe0
a824: 4c2c ldr r4, [pc, #176] ; (a8d8 <lv_draw_label+0xeb4>)
a826: 47a0 blx r4
a828: e797 b.n a75a <lv_draw_label+0xd36>
p1.x = pos_x_start;
a82a: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c
a82e: f8ad 30e0 strh.w r3, [sp, #224] ; 0xe0
p1.y = pos.y + dsc->font->line_height - dsc->font->base_line + line_dsc.width / 2 + 1;
a832: f8d8 2004 ldr.w r2, [r8, #4]
a836: f9bd 314e ldrsh.w r3, [sp, #334] ; 0x14e
a83a: eb03 73d3 add.w r3, r3, r3, lsr #31
a83e: 105b asrs r3, r3, #1
a840: 3301 adds r3, #1
a842: 8911 ldrh r1, [r2, #8]
a844: 440b add r3, r1
a846: 8952 ldrh r2, [r2, #10]
a848: 1a9b subs r3, r3, r2
a84a: 9a11 ldr r2, [sp, #68] ; 0x44
a84c: 4413 add r3, r2
a84e: b21b sxth r3, r3
a850: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2
p2.x = pos.x;
a854: f8ad 90e8 strh.w r9, [sp, #232] ; 0xe8
p2.y = p1.y;
a858: f8ad 30ea strh.w r3, [sp, #234] ; 0xea
lv_draw_line(&p1, &p2, mask, &line_dsc);
a85c: ab53 add r3, sp, #332 ; 0x14c
a85e: 9a0d ldr r2, [sp, #52] ; 0x34
a860: a93a add r1, sp, #232 ; 0xe8
a862: a838 add r0, sp, #224 ; 0xe0
a864: 4c1c ldr r4, [pc, #112] ; (a8d8 <lv_draw_label+0xeb4>)
a866: 47a0 blx r4
a868: e77c b.n a764 <lv_draw_label+0xd40>
_lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag);
a86a: f9b8 300c ldrsh.w r3, [r8, #12]
a86e: 9200 str r2, [sp, #0]
a870: 9a05 ldr r2, [sp, #20]
a872: 4601 mov r1, r0
a874: 4630 mov r0, r6
a876: 4e19 ldr r6, [pc, #100] ; (a8dc <lv_draw_label+0xeb8>)
a878: 47b0 blx r6
a87a: 9a13 ldr r2, [sp, #76] ; 0x4c
a87c: 8893 ldrh r3, [r2, #4]
a87e: 3301 adds r3, #1
a880: 8812 ldrh r2, [r2, #0]
a882: 1a9b subs r3, r3, r2
pos.x += (lv_area_get_width(coords) - line_width) / 2;
a884: b21b sxth r3, r3
a886: 1a18 subs r0, r3, r0
a888: eb00 70d0 add.w r0, r0, r0, lsr #31
a88c: eb05 0560 add.w r5, r5, r0, asr #1
a890: b22d sxth r5, r5
a892: e780 b.n a796 <lv_draw_label+0xd72>
_lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag);
a894: f9b8 300c ldrsh.w r3, [r8, #12]
a898: 9200 str r2, [sp, #0]
a89a: 9a05 ldr r2, [sp, #20]
a89c: 4601 mov r1, r0
a89e: 4630 mov r0, r6
a8a0: 4e0e ldr r6, [pc, #56] ; (a8dc <lv_draw_label+0xeb8>)
a8a2: 47b0 blx r6
a8a4: 9a13 ldr r2, [sp, #76] ; 0x4c
a8a6: 8893 ldrh r3, [r2, #4]
a8a8: 3301 adds r3, #1
a8aa: 8812 ldrh r2, [r2, #0]
a8ac: 1a9b subs r3, r3, r2
pos.x += lv_area_get_width(coords) - line_width;
a8ae: b21b sxth r3, r3
a8b0: 1a18 subs r0, r3, r0
a8b2: 4405 add r5, r0
a8b4: b22d sxth r5, r5
a8b6: e76e b.n a796 <lv_draw_label+0xd72>
cmd_state = CMD_STATE_WAIT;
a8b8: 2300 movs r3, #0
a8ba: 9306 str r3, [sp, #24]
a8bc: f7ff ba0e b.w 9cdc <lv_draw_label+0x2b8>
a8c0: 0000be1d .word 0x0000be1d
a8c4: 00012b37 .word 0x00012b37
a8c8: 00007751 .word 0x00007751
a8cc: 00012571 .word 0x00012571
a8d0: 00013db1 .word 0x00013db1
a8d4: 20002a50 .word 0x20002a50
a8d8: 0000a911 .word 0x0000a911
a8dc: 00013fdd .word 0x00013fdd
0000a8e0 <lv_draw_line_dsc_init>:
/**********************
* GLOBAL FUNCTIONS
**********************/
LV_ATTRIBUTE_FAST_MEM void lv_draw_line_dsc_init(lv_draw_line_dsc_t * dsc)
{
a8e0: b510 push {r4, lr}
a8e2: 4604 mov r4, r0
_lv_memset_00(dsc, sizeof(lv_draw_line_dsc_t));
a8e4: 210a movs r1, #10
a8e6: 4b09 ldr r3, [pc, #36] ; (a90c <lv_draw_line_dsc_init+0x2c>)
a8e8: 4798 blx r3
dsc->width = 1;
a8ea: 2301 movs r3, #1
a8ec: 8063 strh r3, [r4, #2]
dsc->opa = LV_OPA_COVER;
a8ee: 23ff movs r3, #255 ; 0xff
a8f0: 7223 strb r3, [r4, #8]
dsc->color = LV_COLOR_BLACK;
a8f2: 7823 ldrb r3, [r4, #0]
a8f4: f36f 0304 bfc r3, #0, #5
a8f8: 7023 strb r3, [r4, #0]
a8fa: 8823 ldrh r3, [r4, #0]
a8fc: f36f 134a bfc r3, #5, #6
a900: 8023 strh r3, [r4, #0]
a902: 0a1b lsrs r3, r3, #8
a904: f36f 03c7 bfc r3, #3, #5
a908: 7063 strb r3, [r4, #1]
a90a: bd10 pop {r4, pc}
a90c: 00012b37 .word 0x00012b37
0000a910 <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)
{
a910: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
a914: b0cb sub sp, #300 ; 0x12c
if(dsc->width == 0) return;
a916: f9b3 5002 ldrsh.w r5, [r3, #2]
a91a: 2d00 cmp r5, #0
a91c: f000 8418 beq.w b150 <lv_draw_line+0x840>
if(dsc->opa <= LV_OPA_MIN) return;
a920: 7a1c ldrb r4, [r3, #8]
a922: 2c05 cmp r4, #5
a924: f240 8414 bls.w b150 <lv_draw_line+0x840>
if(point1->x == point2->x && point1->y == point2->y) return;
a928: f9b0 6000 ldrsh.w r6, [r0]
a92c: f9b1 7000 ldrsh.w r7, [r1]
a930: 42be cmp r6, r7
a932: f000 8130 beq.w ab96 <lv_draw_line+0x286>
a936: 461c mov r4, r3
a938: 4696 mov lr, r2
a93a: 9208 str r2, [sp, #32]
a93c: 9107 str r1, [sp, #28]
a93e: 9006 str r0, [sp, #24]
lv_area_t clip_line;
clip_line.x1 = LV_MATH_MIN(point1->x, point2->x) - dsc->width / 2;
a940: eb05 75d5 add.w r5, r5, r5, lsr #31
a944: f3c5 054f ubfx r5, r5, #1, #16
a948: 42be cmp r6, r7
a94a: bfd4 ite le
a94c: ebc5 0306 rsble r3, r5, r6
a950: ebc5 0307 rsbgt r3, r5, r7
a954: f8ad 3120 strh.w r3, [sp, #288] ; 0x120
clip_line.x2 = LV_MATH_MAX(point1->x, point2->x) + dsc->width / 2;
a958: 42be cmp r6, r7
a95a: bfac ite ge
a95c: 19ab addge r3, r5, r6
a95e: 19eb addlt r3, r5, r7
a960: f8ad 3124 strh.w r3, [sp, #292] ; 0x124
clip_line.y1 = LV_MATH_MIN(point1->y, point2->y) - dsc->width / 2;
a964: 460f mov r7, r1
a966: f9b1 2002 ldrsh.w r2, [r1, #2]
a96a: 4606 mov r6, r0
a96c: f9b0 3002 ldrsh.w r3, [r0, #2]
a970: 429a cmp r2, r3
a972: bfd4 ite le
a974: ebc5 0102 rsble r1, r5, r2
a978: ebc5 0103 rsbgt r1, r5, r3
a97c: f8ad 1122 strh.w r1, [sp, #290] ; 0x122
clip_line.y2 = LV_MATH_MAX(point1->y, point2->y) + dsc->width / 2;
a980: 429a cmp r2, r3
a982: bfac ite ge
a984: 18ad addge r5, r5, r2
a986: 18ed addlt r5, r5, r3
a988: f8ad 5126 strh.w r5, [sp, #294] ; 0x126
bool is_common;
is_common = _lv_area_intersect(&clip_line, &clip_line, clip);
a98c: 4672 mov r2, lr
a98e: a948 add r1, sp, #288 ; 0x120
a990: 4608 mov r0, r1
a992: 4bab ldr r3, [pc, #684] ; (ac40 <lv_draw_line+0x330>)
a994: 4798 blx r3
if(!is_common) return;
a996: 2800 cmp r0, #0
a998: f000 83da beq.w b150 <lv_draw_line+0x840>
if(point1->y == point2->y) draw_line_hor(point1, point2, &clip_line, dsc);
a99c: f9b6 6002 ldrsh.w r6, [r6, #2]
a9a0: f9b7 5002 ldrsh.w r5, [r7, #2]
a9a4: 42ae cmp r6, r5
a9a6: f000 80fe beq.w aba6 <lv_draw_line+0x296>
else if(point1->x == point2->x) draw_line_ver(point1, point2, &clip_line, dsc);
a9aa: 9b06 ldr r3, [sp, #24]
a9ac: f9b3 3000 ldrsh.w r3, [r3]
a9b0: 461a mov r2, r3
a9b2: 9305 str r3, [sp, #20]
a9b4: 9b07 ldr r3, [sp, #28]
a9b6: f9b3 a000 ldrsh.w sl, [r3]
a9ba: 4552 cmp r2, sl
a9bc: f000 8201 beq.w adc2 <lv_draw_line+0x4b2>
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) {
a9c0: 42ae cmp r6, r5
a9c2: db06 blt.n a9d2 <lv_draw_line+0xc2>
a9c4: 4633 mov r3, r6
p2.y = point2->y;
p1.x = point1->x;
p2.x = point2->x;
}
else {
p1.y = point2->y;
a9c6: 462e mov r6, r5
p2.y = point1->y;
a9c8: 461d mov r5, r3
if(point1->y < point2->y) {
a9ca: 9b05 ldr r3, [sp, #20]
p1.x = point2->x;
a9cc: f8cd a014 str.w sl, [sp, #20]
p2.x = point1->x;
a9d0: 469a mov sl, r3
}
int32_t xdiff = p2.x - p1.x;
a9d2: 9b05 ldr r3, [sp, #20]
a9d4: ebaa 0303 sub.w r3, sl, r3
a9d8: 9309 str r3, [sp, #36] ; 0x24
int32_t ydiff = p2.y - p1.y;
a9da: 1baa subs r2, r5, r6
a9dc: 920a str r2, [sp, #40] ; 0x28
bool flat = LV_MATH_ABS(xdiff) > LV_MATH_ABS(ydiff) ? true : false;
a9de: 2b00 cmp r3, #0
a9e0: bfb8 it lt
a9e2: 425b neglt r3, r3
a9e4: 469b mov fp, r3
a9e6: 2a00 cmp r2, #0
a9e8: bfb8 it lt
a9ea: 4252 neglt r2, r2
a9ec: 4690 mov r8, r2
143, 145, 147, 149, 151, 153, 155, 158,
160, 162, 165, 167, 170, 173, 175, 178,
181,
};
int32_t w = dsc->width;
a9ee: f9b4 9002 ldrsh.w r9, [r4, #2]
int32_t wcorr_i = 0;
if(flat) wcorr_i = (LV_MATH_ABS(ydiff) << 5) / LV_MATH_ABS(xdiff);
a9f2: 4293 cmp r3, r2
a9f4: bfc7 ittee gt
a9f6: 0153 lslgt r3, r2, #5
a9f8: fb93 f3fb sdivgt r3, r3, fp
else wcorr_i = (LV_MATH_ABS(xdiff) << 5) / LV_MATH_ABS(ydiff);
a9fc: ea4f 134b movle.w r3, fp, lsl #5
aa00: fb93 f3f2 sdivle r3, r3, r2
w = (w * wcorr[wcorr_i] + 63) >> 7; /*+ 63 for rounding*/
aa04: 4a8f ldr r2, [pc, #572] ; (ac44 <lv_draw_line+0x334>)
aa06: 5cd3 ldrb r3, [r2, r3]
aa08: fb09 f903 mul.w r9, r9, r3
aa0c: f109 093f add.w r9, r9, #63 ; 0x3f
aa10: ea4f 13e9 mov.w r3, r9, asr #7
aa14: 461f mov r7, 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;
aa16: b29b uxth r3, r3
aa18: 9805 ldr r0, [sp, #20]
aa1a: 4582 cmp sl, r0
aa1c: bfd4 ite le
aa1e: ebc3 020a rsble r2, r3, sl
aa22: ebc3 0200 rsbgt r2, r3, r0
aa26: f8ad 2038 strh.w r2, [sp, #56] ; 0x38
draw_area.x2 = LV_MATH_MAX(p1.x, p2.x) + w;
aa2a: 4582 cmp sl, r0
aa2c: bfac ite ge
aa2e: eb03 020a addge.w r2, r3, sl
aa32: 181a addlt r2, r3, r0
aa34: f8ad 203c strh.w r2, [sp, #60] ; 0x3c
draw_area.y1 = LV_MATH_MIN(p1.y, p2.y) - w;
aa38: 42b5 cmp r5, r6
aa3a: bfd4 ite le
aa3c: ebc3 0205 rsble r2, r3, r5
aa40: ebc3 0206 rsbgt r2, r3, r6
aa44: f8ad 203a strh.w r2, [sp, #58] ; 0x3a
draw_area.y2 = LV_MATH_MAX(p1.y, p2.y) + w;
aa48: 42b5 cmp r5, r6
aa4a: bfac ite ge
aa4c: 195b addge r3, r3, r5
aa4e: 199b addlt r3, r3, r6
aa50: f8ad 303e strh.w r3, [sp, #62] ; 0x3e
/* 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);
aa54: aa48 add r2, sp, #288 ; 0x120
aa56: a90e add r1, sp, #56 ; 0x38
aa58: 4608 mov r0, r1
aa5a: 4b79 ldr r3, [pc, #484] ; (ac40 <lv_draw_line+0x330>)
aa5c: 4798 blx r3
if(is_common == false) return;
aa5e: 2800 cmp r0, #0
aa60: f000 8372 beq.w b148 <lv_draw_line+0x838>
int32_t w_half0 = w >> 1;
aa64: ea4f 2929 mov.w r9, r9, asr #8
int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/
aa68: f007 0301 and.w r3, r7, #1
aa6c: 444b add r3, r9
aa6e: 930b str r3, [sp, #44] ; 0x2c
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) {
aa70: 45c3 cmp fp, r8
aa72: f340 82b6 ble.w afe2 <lv_draw_line+0x6d2>
if(xdiff > 0) {
aa76: 9a09 ldr r2, [sp, #36] ; 0x24
aa78: 2a00 cmp r2, #0
aa7a: f340 828e ble.w af9a <lv_draw_line+0x68a>
lv_draw_mask_line_points_init(&mask_left_param, p1.x, p1.y - w_half0, p2.x, p2.y - w_half0,
aa7e: fa1f fb86 uxth.w fp, r6
aa82: fa1f f389 uxth.w r3, r9
aa86: fa1f f985 uxth.w r9, r5
aa8a: ebab 0203 sub.w r2, fp, r3
aa8e: 2100 movs r1, #0
aa90: 9101 str r1, [sp, #4]
aa92: eba9 0303 sub.w r3, r9, r3
aa96: b21b sxth r3, r3
aa98: 9300 str r3, [sp, #0]
aa9a: 4653 mov r3, sl
aa9c: b212 sxth r2, r2
aa9e: 9905 ldr r1, [sp, #20]
aaa0: a812 add r0, sp, #72 ; 0x48
aaa2: 4f69 ldr r7, [pc, #420] ; (ac48 <lv_draw_line+0x338>)
aaa4: 47b8 blx r7
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,
aaa6: f8bd 802c ldrh.w r8, [sp, #44] ; 0x2c
aaaa: eb0b 0208 add.w r2, fp, r8
aaae: 2301 movs r3, #1
aab0: 9301 str r3, [sp, #4]
aab2: 44c1 add r9, r8
aab4: fa0f f389 sxth.w r3, r9
aab8: 9300 str r3, [sp, #0]
aaba: 4653 mov r3, sl
aabc: b212 sxth r2, r2
aabe: 9905 ldr r1, [sp, #20]
aac0: a81d add r0, sp, #116 ; 0x74
aac2: 47b8 blx r7
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);
aac4: 2100 movs r1, #0
aac6: a812 add r0, sp, #72 ; 0x48
aac8: f8df 819c ldr.w r8, [pc, #412] ; ac68 <lv_draw_line+0x358>
aacc: 47c0 blx r8
aace: 900b str r0, [sp, #44] ; 0x2c
int16_t mask_right_id = lv_draw_mask_add(&mask_right_param, NULL);
aad0: 2100 movs r1, #0
aad2: a81d add r0, sp, #116 ; 0x74
aad4: 47c0 blx r8
aad6: 900c str r0, [sp, #48] ; 0x30
int16_t mask_top_id = LV_MASK_ID_INV;
int16_t mask_bottom_id = LV_MASK_ID_INV;
if(!dsc->raw_end) {
aad8: 7a63 ldrb r3, [r4, #9]
aada: f013 0f10 tst.w r3, #16
aade: f000 82a4 beq.w b02a <lv_draw_line+0x71a>
int16_t mask_bottom_id = LV_MASK_ID_INV;
aae2: f04f 33ff mov.w r3, #4294967295
aae6: 930d str r3, [sp, #52] ; 0x34
int16_t mask_top_id = LV_MASK_ID_INV;
aae8: 930a str r3, [sp, #40] ; 0x28
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);
mask_top_id = lv_draw_mask_add(&mask_top_param, NULL);
mask_bottom_id = lv_draw_mask_add(&mask_bottom_param, NULL);
}
lv_disp_t * disp = _lv_refr_get_disp_refreshing();
aaea: 4b58 ldr r3, [pc, #352] ; (ac4c <lv_draw_line+0x33c>)
aaec: 4798 blx r3
lv_disp_buf_t * vdb = lv_disp_get_buf(disp);
aaee: 4b58 ldr r3, [pc, #352] ; (ac50 <lv_draw_line+0x340>)
aaf0: 4798 blx r3
aaf2: 4682 mov sl, r0
const lv_area_t * disp_area = &vdb->area;
/*Store the coordinates of the `draw_a` relative to the VDB */
draw_area.x1 -= disp_area->x1;
aaf4: 8a06 ldrh r6, [r0, #16]
aaf6: f8bd 5038 ldrh.w r5, [sp, #56] ; 0x38
aafa: 1bad subs r5, r5, r6
aafc: b2aa uxth r2, r5
aafe: f8ad 2038 strh.w r2, [sp, #56] ; 0x38
draw_area.y1 -= disp_area->y1;
ab02: 8a40 ldrh r0, [r0, #18]
ab04: f8bd 103a ldrh.w r1, [sp, #58] ; 0x3a
ab08: 1a09 subs r1, r1, r0
ab0a: f8ad 103a strh.w r1, [sp, #58] ; 0x3a
draw_area.x2 -= disp_area->x1;
ab0e: f8bd 303c ldrh.w r3, [sp, #60] ; 0x3c
ab12: 1b9b subs r3, r3, r6
ab14: b29b uxth r3, r3
ab16: f8ad 303c strh.w r3, [sp, #60] ; 0x3c
draw_area.y2 -= disp_area->y1;
ab1a: f8bd 103e ldrh.w r1, [sp, #62] ; 0x3e
ab1e: 1a09 subs r1, r1, r0
ab20: f8ad 103e strh.w r1, [sp, #62] ; 0x3e
ab24: 1c5d adds r5, r3, #1
ab26: 1aad subs r5, r5, r2
ab28: b22d sxth r5, r5
* 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);
ab2a: a80e add r0, sp, #56 ; 0x38
ab2c: 4b49 ldr r3, [pc, #292] ; (ac54 <lv_draw_line+0x344>)
ab2e: 4798 blx r3
ab30: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0
ab34: f0c0 82a2 bcc.w b07c <lv_draw_line+0x76c>
ab38: f44f 7bf0 mov.w fp, #480 ; 0x1e0
lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size);
ab3c: 4658 mov r0, fp
ab3e: 4b46 ldr r3, [pc, #280] ; (ac58 <lv_draw_line+0x348>)
ab40: 4798 blx r3
ab42: 4681 mov r9, r0
lv_area_t fill_area;
fill_area.x1 = draw_area.x1 + disp_area->x1;
ab44: f8ba 3010 ldrh.w r3, [sl, #16]
ab48: f8bd 2038 ldrh.w r2, [sp, #56] ; 0x38
ab4c: 441a add r2, r3
ab4e: b212 sxth r2, r2
ab50: 9205 str r2, [sp, #20]
ab52: f8ad 2040 strh.w r2, [sp, #64] ; 0x40
fill_area.x2 = draw_area.x2 + disp_area->x1;
ab56: f8bd 203c ldrh.w r2, [sp, #60] ; 0x3c
ab5a: 4413 add r3, r2
ab5c: f8ad 3044 strh.w r3, [sp, #68] ; 0x44
fill_area.y1 = draw_area.y1 + disp_area->y1;
ab60: f8bd 303a ldrh.w r3, [sp, #58] ; 0x3a
ab64: f8ba 2012 ldrh.w r2, [sl, #18]
ab68: 4413 add r3, r2
ab6a: b21b sxth r3, r3
ab6c: f8ad 3042 strh.w r3, [sp, #66] ; 0x42
fill_area.y2 = fill_area.y1;
ab70: f8ad 3046 strh.w r3, [sp, #70] ; 0x46
int32_t x = vdb->area.x1 + draw_area.x1;
uint32_t mask_p = 0;
_lv_memset_ff(mask_buf, mask_buf_size);
ab74: 4659 mov r1, fp
ab76: 4b39 ldr r3, [pc, #228] ; (ac5c <lv_draw_line+0x34c>)
ab78: 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++) {
ab7a: f9ba 2012 ldrsh.w r2, [sl, #18]
ab7e: f9bd 603a ldrsh.w r6, [sp, #58] ; 0x3a
ab82: 4416 add r6, r2
ab84: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e
ab88: 4413 add r3, r2
ab8a: 429e cmp r6, r3
ab8c: f300 82b9 bgt.w b102 <lv_draw_line+0x7f2>
ab90: 2700 movs r7, #0
mask_p += draw_area_w;
if((uint32_t) mask_p + draw_area_w < mask_buf_size) {
fill_area.y2 ++;
}
else {
_lv_blend_fill(&fill_area, clip,
ab92: 9409 str r4, [sp, #36] ; 0x24
ab94: e2a0 b.n b0d8 <lv_draw_line+0x7c8>
if(point1->x == point2->x && point1->y == point2->y) return;
ab96: f9b0 e002 ldrsh.w lr, [r0, #2]
ab9a: f9b1 4002 ldrsh.w r4, [r1, #2]
ab9e: 45a6 cmp lr, r4
aba0: f47f aec9 bne.w a936 <lv_draw_line+0x26>
aba4: e2d4 b.n b150 <lv_draw_line+0x840>
lv_opa_t opa = dsc->opa;
aba6: f894 9008 ldrb.w r9, [r4, #8]
lv_disp_t * disp = _lv_refr_get_disp_refreshing();
abaa: 4b28 ldr r3, [pc, #160] ; (ac4c <lv_draw_line+0x33c>)
abac: 4798 blx r3
lv_disp_buf_t * vdb = lv_disp_get_buf(disp);
abae: 4b28 ldr r3, [pc, #160] ; (ac50 <lv_draw_line+0x340>)
abb0: 4798 blx r3
abb2: 4607 mov r7, r0
int32_t w = dsc->width - 1;
abb4: f9b4 3002 ldrsh.w r3, [r4, #2]
abb8: 3b01 subs r3, #1
int32_t w_half0 = w >> 1;
abba: 105e asrs r6, r3, #1
int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/
abbc: f003 0301 and.w r3, r3, #1
abc0: 199d adds r5, r3, r6
bool dashed = dsc->dash_gap && dsc->dash_width ? true : false;
abc2: f9b4 3006 ldrsh.w r3, [r4, #6]
abc6: 2b00 cmp r3, #0
abc8: d035 beq.n ac36 <lv_draw_line+0x326>
abca: f9b4 8004 ldrsh.w r8, [r4, #4]
abce: f118 0800 adds.w r8, r8, #0
abd2: bf18 it ne
abd4: f04f 0801 movne.w r8, #1
if(lv_draw_mask_get_cnt()) simple_mode = false;
abd8: 4b21 ldr r3, [pc, #132] ; (ac60 <lv_draw_line+0x350>)
abda: 4798 blx r3
abdc: bb70 cbnz r0, ac3c <lv_draw_line+0x32c>
else if(dashed) simple_mode = false;
abde: f088 0201 eor.w r2, r8, #1
draw_area.x1 = LV_MATH_MIN(point1->x, point2->x);
abe2: 9b07 ldr r3, [sp, #28]
abe4: f9b3 3000 ldrsh.w r3, [r3]
abe8: 9906 ldr r1, [sp, #24]
abea: f9b1 1000 ldrsh.w r1, [r1]
abee: 4618 mov r0, r3
abf0: 428b cmp r3, r1
abf2: bfa8 it ge
abf4: 4608 movge r0, r1
abf6: f8ad 00a0 strh.w r0, [sp, #160] ; 0xa0
draw_area.x2 = LV_MATH_MAX(point1->x, point2->x) - 1;
abfa: 428b cmp r3, r1
abfc: bfb8 it lt
abfe: 460b movlt r3, r1
ac00: 3b01 subs r3, #1
ac02: f8ad 30a4 strh.w r3, [sp, #164] ; 0xa4
draw_area.y1 = point1->y - w_half1;
ac06: 9906 ldr r1, [sp, #24]
ac08: 884b ldrh r3, [r1, #2]
ac0a: 1b5d subs r5, r3, r5
ac0c: f8ad 50a2 strh.w r5, [sp, #162] ; 0xa2
draw_area.y2 = point1->y + w_half0;
ac10: 4433 add r3, r6
ac12: f8ad 30a6 strh.w r3, [sp, #166] ; 0xa6
if(simple_mode) {
ac16: b34a cbz r2, ac6c <lv_draw_line+0x35c>
dsc->blend_mode);
ac18: 7a63 ldrb r3, [r4, #9]
_lv_blend_fill(clip, &draw_area,
ac1a: f003 0303 and.w r3, r3, #3
ac1e: 9302 str r3, [sp, #8]
ac20: f8cd 9004 str.w r9, [sp, #4]
ac24: 2301 movs r3, #1
ac26: 9300 str r3, [sp, #0]
ac28: 2300 movs r3, #0
ac2a: 8822 ldrh r2, [r4, #0]
ac2c: a928 add r1, sp, #160 ; 0xa0
ac2e: a848 add r0, sp, #288 ; 0x120
ac30: 4d0c ldr r5, [pc, #48] ; (ac64 <lv_draw_line+0x354>)
ac32: 47a8 blx r5
ac34: e288 b.n b148 <lv_draw_line+0x838>
bool dashed = dsc->dash_gap && dsc->dash_width ? true : false;
ac36: f04f 0800 mov.w r8, #0
ac3a: e7cd b.n abd8 <lv_draw_line+0x2c8>
if(lv_draw_mask_get_cnt()) simple_mode = false;
ac3c: 2200 movs r2, #0
ac3e: e7d0 b.n abe2 <lv_draw_line+0x2d2>
ac40: 00011519 .word 0x00011519
ac44: 00024fa4 .word 0x00024fa4
ac48: 0000bee9 .word 0x0000bee9
ac4c: 00005f69 .word 0x00005f69
ac50: 00010fdd .word 0x00010fdd
ac54: 000114fd .word 0x000114fd
ac58: 0001293d .word 0x0001293d
ac5c: 00012bed .word 0x00012bed
ac60: 0000bec5 .word 0x0000bec5
ac64: 00007751 .word 0x00007751
ac68: 0000bdc1 .word 0x0000bdc1
is_common = _lv_area_intersect(&draw_area, clip, &draw_area);
ac6c: aa28 add r2, sp, #160 ; 0xa0
ac6e: a948 add r1, sp, #288 ; 0x120
ac70: 4610 mov r0, r2
ac72: 4ba1 ldr r3, [pc, #644] ; (aef8 <lv_draw_line+0x5e8>)
ac74: 4798 blx r3
if(!is_common) return;
ac76: 2800 cmp r0, #0
ac78: f000 8266 beq.w b148 <lv_draw_line+0x838>
draw_area.x1 -= disp_area->x1;
ac7c: f9bd e0a0 ldrsh.w lr, [sp, #160] ; 0xa0
ac80: f9b7 1010 ldrsh.w r1, [r7, #16]
ac84: b28b uxth r3, r1
ac86: ebae 0203 sub.w r2, lr, r3
ac8a: b292 uxth r2, r2
ac8c: fa0f fc82 sxth.w ip, r2
ac90: f8ad c0a0 strh.w ip, [sp, #160] ; 0xa0
draw_area.y1 -= disp_area->y1;
ac94: f9bd 00a2 ldrsh.w r0, [sp, #162] ; 0xa2
ac98: f8b7 9012 ldrh.w r9, [r7, #18]
ac9c: eba0 0509 sub.w r5, r0, r9
aca0: f8ad 50a2 strh.w r5, [sp, #162] ; 0xa2
draw_area.x2 -= disp_area->x1;
aca4: f9bd 60a4 ldrsh.w r6, [sp, #164] ; 0xa4
aca8: 1af3 subs r3, r6, r3
acaa: b29b uxth r3, r3
acac: f8ad 30a4 strh.w r3, [sp, #164] ; 0xa4
draw_area.y2 -= disp_area->y1;
acb0: f8bd 50a6 ldrh.w r5, [sp, #166] ; 0xa6
acb4: eba5 0509 sub.w r5, r5, r9
acb8: f8ad 50a6 strh.w r5, [sp, #166] ; 0xa6
acbc: 3301 adds r3, #1
acbe: 1a9a subs r2, r3, r2
acc0: b215 sxth r5, r2
fill_area.x1 = draw_area.x1 + disp_area->x1;
acc2: f8ad e0cc strh.w lr, [sp, #204] ; 0xcc
fill_area.x2 = draw_area.x2 + disp_area->x1;
acc6: f8ad 60d0 strh.w r6, [sp, #208] ; 0xd0
fill_area.y1 = draw_area.y1 + disp_area->y1;
acca: f8ad 00ce strh.w r0, [sp, #206] ; 0xce
fill_area.y2 = fill_area.y1;
acce: f8ad 00d2 strh.w r0, [sp, #210] ; 0xd2
if(dashed) {
acd2: f1b8 0f00 cmp.w r8, #0
acd6: d01c beq.n ad12 <lv_draw_line+0x402>
dash_start = (vdb->area.x1 + draw_area.x1) % (dsc->dash_gap + dsc->dash_width);
acd8: 4461 add r1, ip
acda: f9b4 2006 ldrsh.w r2, [r4, #6]
acde: f9b4 3004 ldrsh.w r3, [r4, #4]
ace2: 441a add r2, r3
ace4: fb91 f3f2 sdiv r3, r1, r2
ace8: fb02 1113 mls r1, r2, r3, r1
acec: b20b sxth r3, r1
acee: 930a str r3, [sp, #40] ; 0x28
lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w);
acf0: 9509 str r5, [sp, #36] ; 0x24
acf2: 4628 mov r0, r5
acf4: 4b81 ldr r3, [pc, #516] ; (aefc <lv_draw_line+0x5ec>)
acf6: 4798 blx r3
acf8: 4682 mov sl, r0
for(h = draw_area.y1; h <= draw_area.y2; h++) {
acfa: f9bd 60a2 ldrsh.w r6, [sp, #162] ; 0xa2
acfe: f9bd 30a6 ldrsh.w r3, [sp, #166] ; 0xa6
ad02: 42b3 cmp r3, r6
ad04: db59 blt.n adba <lv_draw_line+0x4aa>
_lv_memset_ff(mask_buf, draw_area_w);
ad06: f8df 9210 ldr.w r9, [pc, #528] ; af18 <lv_draw_line+0x608>
_lv_blend_fill(clip, &fill_area,
ad0a: f8df b208 ldr.w fp, [pc, #520] ; af14 <lv_draw_line+0x604>
ad0e: 9505 str r5, [sp, #20]
ad10: e035 b.n ad7e <lv_draw_line+0x46e>
if(dashed) {
ad12: 2100 movs r1, #0
ad14: e7ea b.n acec <lv_draw_line+0x3dc>
else if(dash_cnt >= dsc->dash_gap + dsc->dash_width) {
ad16: f9b4 e006 ldrsh.w lr, [r4, #6]
ad1a: 4473 add r3, lr
ad1c: 429a cmp r2, r3
mask_buf[i] = 0x00;
ad1e: bfba itte lt
ad20: f80a 1000 strblt.w r1, [sl, r0]
ad24: 4613 movlt r3, r2
dash_cnt = 0;
ad26: 460b movge r3, r1
for(i = 0; i < draw_area_w; i++, dash_cnt++) {
ad28: 3001 adds r0, #1
ad2a: b200 sxth r0, r0
ad2c: 3301 adds r3, #1
ad2e: b21a sxth r2, r3
ad30: 4285 cmp r5, r0
ad32: dd07 ble.n ad44 <lv_draw_line+0x434>
if(dash_cnt <= dsc->dash_width) {
ad34: f9b4 3004 ldrsh.w r3, [r4, #4]
ad38: 4293 cmp r3, r2
ad3a: dbec blt.n ad16 <lv_draw_line+0x406>
i += diff;
ad3c: 4418 add r0, r3
ad3e: 1a80 subs r0, r0, r2
ad40: b200 sxth r0, r0
ad42: e7f1 b.n ad28 <lv_draw_line+0x418>
ad44: 9505 str r5, [sp, #20]
mask_res = LV_DRAW_MASK_RES_CHANGED;
ad46: 2002 movs r0, #2
dsc->blend_mode);
ad48: 7a63 ldrb r3, [r4, #9]
_lv_blend_fill(clip, &fill_area,
ad4a: f003 0303 and.w r3, r3, #3
ad4e: 9302 str r3, [sp, #8]
ad50: 7a23 ldrb r3, [r4, #8]
ad52: 9301 str r3, [sp, #4]
ad54: 9000 str r0, [sp, #0]
ad56: 4653 mov r3, sl
ad58: 8822 ldrh r2, [r4, #0]
ad5a: a933 add r1, sp, #204 ; 0xcc
ad5c: a848 add r0, sp, #288 ; 0x120
ad5e: 47d8 blx fp
fill_area.y1++;
ad60: f8bd 30ce ldrh.w r3, [sp, #206] ; 0xce
ad64: 3301 adds r3, #1
ad66: f8ad 30ce strh.w r3, [sp, #206] ; 0xce
fill_area.y2++;
ad6a: f8bd 30d2 ldrh.w r3, [sp, #210] ; 0xd2
ad6e: 3301 adds r3, #1
ad70: f8ad 30d2 strh.w r3, [sp, #210] ; 0xd2
for(h = draw_area.y1; h <= draw_area.y2; h++) {
ad74: 3601 adds r6, #1
ad76: f9bd 30a6 ldrsh.w r3, [sp, #166] ; 0xa6
ad7a: 429e cmp r6, r3
ad7c: dc1d bgt.n adba <lv_draw_line+0x4aa>
_lv_memset_ff(mask_buf, draw_area_w);
ad7e: 9909 ldr r1, [sp, #36] ; 0x24
ad80: 4650 mov r0, sl
ad82: 47c8 blx r9
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);
ad84: 8a7a ldrh r2, [r7, #18]
ad86: 4432 add r2, r6
ad88: 8a39 ldrh r1, [r7, #16]
ad8a: f8bd 30a0 ldrh.w r3, [sp, #160] ; 0xa0
ad8e: 4419 add r1, r3
ad90: 9b05 ldr r3, [sp, #20]
ad92: b212 sxth r2, r2
ad94: b209 sxth r1, r1
ad96: 4650 mov r0, sl
ad98: 4d59 ldr r5, [pc, #356] ; (af00 <lv_draw_line+0x5f0>)
ad9a: 47a8 blx r5
if(dashed) {
ad9c: f1b8 0f00 cmp.w r8, #0
ada0: d0d2 beq.n ad48 <lv_draw_line+0x438>
if(mask_res != LV_DRAW_MASK_RES_TRANSP) {
ada2: 2800 cmp r0, #0
ada4: d0d0 beq.n ad48 <lv_draw_line+0x438>
for(i = 0; i < draw_area_w; i++, dash_cnt++) {
ada6: 9b05 ldr r3, [sp, #20]
ada8: 2b00 cmp r3, #0
adaa: dd04 ble.n adb6 <lv_draw_line+0x4a6>
adac: 9a0a ldr r2, [sp, #40] ; 0x28
adae: 2000 movs r0, #0
dash_cnt = 0;
adb0: 4601 mov r1, r0
adb2: 461d mov r5, r3
adb4: e7be b.n ad34 <lv_draw_line+0x424>
mask_res = LV_DRAW_MASK_RES_CHANGED;
adb6: 2002 movs r0, #2
adb8: e7c6 b.n ad48 <lv_draw_line+0x438>
_lv_mem_buf_release(mask_buf);
adba: 4650 mov r0, sl
adbc: 4b51 ldr r3, [pc, #324] ; (af04 <lv_draw_line+0x5f4>)
adbe: 4798 blx r3
adc0: e1c2 b.n b148 <lv_draw_line+0x838>
lv_opa_t opa = dsc->opa;
adc2: f894 9008 ldrb.w r9, [r4, #8]
lv_disp_t * disp = _lv_refr_get_disp_refreshing();
adc6: 4b50 ldr r3, [pc, #320] ; (af08 <lv_draw_line+0x5f8>)
adc8: 4798 blx r3
lv_disp_buf_t * vdb = lv_disp_get_buf(disp);
adca: 4b50 ldr r3, [pc, #320] ; (af0c <lv_draw_line+0x5fc>)
adcc: 4798 blx r3
adce: 4680 mov r8, r0
int32_t w = dsc->width - 1;
add0: f9b4 5002 ldrsh.w r5, [r4, #2]
add4: 3d01 subs r5, #1
int32_t w_half0 = w >> 1;
add6: 106f asrs r7, r5, #1
int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/
add8: f005 0501 and.w r5, r5, #1
addc: 443d add r5, r7
bool dashed = dsc->dash_gap && dsc->dash_width ? true : false;
adde: f9b4 3006 ldrsh.w r3, [r4, #6]
ade2: b12b cbz r3, adf0 <lv_draw_line+0x4e0>
ade4: f9b4 6004 ldrsh.w r6, [r4, #4]
ade8: 3600 adds r6, #0
adea: bf18 it ne
adec: 2601 movne r6, #1
adee: e000 b.n adf2 <lv_draw_line+0x4e2>
adf0: 2600 movs r6, #0
if(lv_draw_mask_get_cnt()) simple_mode = false;
adf2: 4b47 ldr r3, [pc, #284] ; (af10 <lv_draw_line+0x600>)
adf4: 4798 blx r3
adf6: b910 cbnz r0, adfe <lv_draw_line+0x4ee>
else if(dashed) simple_mode = false;
adf8: f086 0201 eor.w r2, r6, #1
adfc: e000 b.n ae00 <lv_draw_line+0x4f0>
if(lv_draw_mask_get_cnt()) simple_mode = false;
adfe: 2200 movs r2, #0
draw_area.x1 = point1->x - w_half1;
ae00: 9906 ldr r1, [sp, #24]
ae02: 880b ldrh r3, [r1, #0]
ae04: 1b5d subs r5, r3, r5
ae06: f8ad 50a0 strh.w r5, [sp, #160] ; 0xa0
draw_area.x2 = point1->x + w_half0;
ae0a: 441f add r7, r3
ae0c: f8ad 70a4 strh.w r7, [sp, #164] ; 0xa4
draw_area.y1 = LV_MATH_MIN(point1->y, point2->y);
ae10: 9b07 ldr r3, [sp, #28]
ae12: f9b3 3002 ldrsh.w r3, [r3, #2]
ae16: f9b1 1002 ldrsh.w r1, [r1, #2]
ae1a: 4618 mov r0, r3
ae1c: 428b cmp r3, r1
ae1e: bfa8 it ge
ae20: 4608 movge r0, r1
ae22: f8ad 00a2 strh.w r0, [sp, #162] ; 0xa2
draw_area.y2 = LV_MATH_MAX(point1->y, point2->y) - 1;
ae26: 428b cmp r3, r1
ae28: bfb8 it lt
ae2a: 460b movlt r3, r1
ae2c: 3b01 subs r3, #1
ae2e: f8ad 30a6 strh.w r3, [sp, #166] ; 0xa6
if(simple_mode) {
ae32: b172 cbz r2, ae52 <lv_draw_line+0x542>
dsc->blend_mode);
ae34: 7a63 ldrb r3, [r4, #9]
_lv_blend_fill(clip, &draw_area,
ae36: f003 0303 and.w r3, r3, #3
ae3a: 9302 str r3, [sp, #8]
ae3c: f8cd 9004 str.w r9, [sp, #4]
ae40: 2301 movs r3, #1
ae42: 9300 str r3, [sp, #0]
ae44: 2300 movs r3, #0
ae46: 8822 ldrh r2, [r4, #0]
ae48: a928 add r1, sp, #160 ; 0xa0
ae4a: a848 add r0, sp, #288 ; 0x120
ae4c: 4d31 ldr r5, [pc, #196] ; (af14 <lv_draw_line+0x604>)
ae4e: 47a8 blx r5
ae50: e17a b.n b148 <lv_draw_line+0x838>
is_common = _lv_area_intersect(&draw_area, clip, &draw_area);
ae52: aa28 add r2, sp, #160 ; 0xa0
ae54: a948 add r1, sp, #288 ; 0x120
ae56: 4610 mov r0, r2
ae58: 4b27 ldr r3, [pc, #156] ; (aef8 <lv_draw_line+0x5e8>)
ae5a: 4798 blx r3
if(!is_common) return;
ae5c: 2800 cmp r0, #0
ae5e: f000 8173 beq.w b148 <lv_draw_line+0x838>
draw_area.x1 -= vdb->area.x1;
ae62: f9bd 00a0 ldrsh.w r0, [sp, #160] ; 0xa0
ae66: f8b8 3010 ldrh.w r3, [r8, #16]
ae6a: 1ac5 subs r5, r0, r3
ae6c: b2ad uxth r5, r5
ae6e: f8ad 50a0 strh.w r5, [sp, #160] ; 0xa0
draw_area.y1 -= vdb->area.y1;
ae72: f9bd 20a2 ldrsh.w r2, [sp, #162] ; 0xa2
ae76: f8b8 7012 ldrh.w r7, [r8, #18]
ae7a: 1bd1 subs r1, r2, r7
ae7c: f8ad 10a2 strh.w r1, [sp, #162] ; 0xa2
draw_area.x2 -= vdb->area.x1;
ae80: f9bd 10a4 ldrsh.w r1, [sp, #164] ; 0xa4
ae84: 1acb subs r3, r1, r3
ae86: b29b uxth r3, r3
ae88: f8ad 30a4 strh.w r3, [sp, #164] ; 0xa4
draw_area.y2 -= vdb->area.y1;
ae8c: f8bd e0a6 ldrh.w lr, [sp, #166] ; 0xa6
ae90: ebae 0707 sub.w r7, lr, r7
ae94: f8ad 70a6 strh.w r7, [sp, #166] ; 0xa6
ae98: 3301 adds r3, #1
ae9a: 1b5b subs r3, r3, r5
ae9c: b21b sxth r3, r3
ae9e: 9309 str r3, [sp, #36] ; 0x24
fill_area.x1 = draw_area.x1 + disp_area->x1;
aea0: f8ad 00cc strh.w r0, [sp, #204] ; 0xcc
fill_area.x2 = draw_area.x2 + disp_area->x1;
aea4: f8ad 10d0 strh.w r1, [sp, #208] ; 0xd0
fill_area.y1 = draw_area.y1 + disp_area->y1;
aea8: f8ad 20ce strh.w r2, [sp, #206] ; 0xce
fill_area.y2 = fill_area.y1;
aeac: f8ad 20d2 strh.w r2, [sp, #210] ; 0xd2
lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w);
aeb0: 930a str r3, [sp, #40] ; 0x28
aeb2: 4618 mov r0, r3
aeb4: 4b11 ldr r3, [pc, #68] ; (aefc <lv_draw_line+0x5ec>)
aeb6: 4798 blx r3
aeb8: 9005 str r0, [sp, #20]
if(dashed) {
aeba: b176 cbz r6, aeda <lv_draw_line+0x5ca>
dash_start = (vdb->area.x1 + draw_area.x1) % (dsc->dash_gap + dsc->dash_width);
aebc: f9b8 2010 ldrsh.w r2, [r8, #16]
aec0: f9bd 70a0 ldrsh.w r7, [sp, #160] ; 0xa0
aec4: 443a add r2, r7
aec6: f9b4 3006 ldrsh.w r3, [r4, #6]
aeca: f9b4 7004 ldrsh.w r7, [r4, #4]
aece: 443b add r3, r7
aed0: fb92 f7f3 sdiv r7, r2, r3
aed4: fb03 2717 mls r7, r3, r7, r2
aed8: e000 b.n aedc <lv_draw_line+0x5cc>
if(dashed) {
aeda: 2700 movs r7, #0
aedc: b23f sxth r7, r7
for(h = draw_area.y1; h <= draw_area.y2; h++) {
aede: f9bd 50a2 ldrsh.w r5, [sp, #162] ; 0xa2
aee2: f9bd 30a6 ldrsh.w r3, [sp, #166] ; 0xa6
aee6: 429d cmp r5, r3
aee8: dc53 bgt.n af92 <lv_draw_line+0x682>
_lv_memset_ff(mask_buf, draw_area_w);
aeea: f8df 902c ldr.w r9, [pc, #44] ; af18 <lv_draw_line+0x608>
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);
aeee: f8df a010 ldr.w sl, [pc, #16] ; af00 <lv_draw_line+0x5f0>
_lv_blend_fill(clip, &fill_area,
aef2: f8df b020 ldr.w fp, [pc, #32] ; af14 <lv_draw_line+0x604>
aef6: e02c b.n af52 <lv_draw_line+0x642>
aef8: 00011519 .word 0x00011519
aefc: 0001293d .word 0x0001293d
af00: 0000be1d .word 0x0000be1d
af04: 00012571 .word 0x00012571
af08: 00005f69 .word 0x00005f69
af0c: 00010fdd .word 0x00010fdd
af10: 0000bec5 .word 0x0000bec5
af14: 00007751 .word 0x00007751
af18: 00012bed .word 0x00012bed
dash_cnt ++;
af1c: 3701 adds r7, #1
af1e: b23f sxth r7, r7
_lv_blend_fill(clip, &fill_area,
af20: 2300 movs r3, #0
af22: 9302 str r3, [sp, #8]
af24: 7a23 ldrb r3, [r4, #8]
af26: 9301 str r3, [sp, #4]
af28: 9000 str r0, [sp, #0]
af2a: 9b05 ldr r3, [sp, #20]
af2c: 8822 ldrh r2, [r4, #0]
af2e: a933 add r1, sp, #204 ; 0xcc
af30: a848 add r0, sp, #288 ; 0x120
af32: 47d8 blx fp
fill_area.y1++;
af34: f8bd 30ce ldrh.w r3, [sp, #206] ; 0xce
af38: 3301 adds r3, #1
af3a: f8ad 30ce strh.w r3, [sp, #206] ; 0xce
fill_area.y2++;
af3e: f8bd 30d2 ldrh.w r3, [sp, #210] ; 0xd2
af42: 3301 adds r3, #1
af44: f8ad 30d2 strh.w r3, [sp, #210] ; 0xd2
for(h = draw_area.y1; h <= draw_area.y2; h++) {
af48: 3501 adds r5, #1
af4a: f9bd 30a6 ldrsh.w r3, [sp, #166] ; 0xa6
af4e: 429d cmp r5, r3
af50: dc1f bgt.n af92 <lv_draw_line+0x682>
_lv_memset_ff(mask_buf, draw_area_w);
af52: 990a ldr r1, [sp, #40] ; 0x28
af54: 9805 ldr r0, [sp, #20]
af56: 47c8 blx r9
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);
af58: f8b8 2012 ldrh.w r2, [r8, #18]
af5c: 442a add r2, r5
af5e: f8b8 1010 ldrh.w r1, [r8, #16]
af62: f8bd 30a0 ldrh.w r3, [sp, #160] ; 0xa0
af66: 4419 add r1, r3
af68: 9b09 ldr r3, [sp, #36] ; 0x24
af6a: b212 sxth r2, r2
af6c: b209 sxth r1, r1
af6e: 9805 ldr r0, [sp, #20]
af70: 47d0 blx sl
if(dashed) {
af72: 2e00 cmp r6, #0
af74: d0d4 beq.n af20 <lv_draw_line+0x610>
if(mask_res != LV_DRAW_MASK_RES_TRANSP) {
af76: 2800 cmp r0, #0
af78: d0d0 beq.n af1c <lv_draw_line+0x60c>
if(dash_cnt > dsc->dash_width) {
af7a: f9b4 2004 ldrsh.w r2, [r4, #4]
mask_res = LV_DRAW_MASK_RES_TRANSP;
af7e: 42ba cmp r2, r7
af80: bfb8 it lt
af82: 2000 movlt r0, #0
if(dash_cnt >= dsc->dash_gap + dsc->dash_width) {
af84: f9b4 3006 ldrsh.w r3, [r4, #6]
af88: 4413 add r3, r2
dash_cnt = 0;
af8a: 429f cmp r7, r3
af8c: bfa8 it ge
af8e: 2700 movge r7, #0
af90: e7c4 b.n af1c <lv_draw_line+0x60c>
_lv_mem_buf_release(mask_buf);
af92: 9805 ldr r0, [sp, #20]
af94: 4b97 ldr r3, [pc, #604] ; (b1f4 <lv_draw_line+0x8e4>)
af96: 4798 blx r3
af98: e0d6 b.n b148 <lv_draw_line+0x838>
lv_draw_mask_line_points_init(&mask_left_param, p1.x, p1.y + w_half1, p2.x, p2.y + w_half1,
af9a: fa1f fb86 uxth.w fp, r6
af9e: f8bd 802c ldrh.w r8, [sp, #44] ; 0x2c
afa2: b2a9 uxth r1, r5
afa4: eb0b 0208 add.w r2, fp, r8
afa8: 2300 movs r3, #0
afaa: 9301 str r3, [sp, #4]
afac: 460f mov r7, r1
afae: 4488 add r8, r1
afb0: fa0f f388 sxth.w r3, r8
afb4: 9300 str r3, [sp, #0]
afb6: 4653 mov r3, sl
afb8: b212 sxth r2, r2
afba: 9905 ldr r1, [sp, #20]
afbc: a812 add r0, sp, #72 ; 0x48
afbe: f8df 8238 ldr.w r8, [pc, #568] ; b1f8 <lv_draw_line+0x8e8>
afc2: 47c0 blx r8
lv_draw_mask_line_points_init(&mask_right_param, p1.x, p1.y - w_half0, p2.x, p2.y - w_half0,
afc4: fa1f f389 uxth.w r3, r9
afc8: ebab 0203 sub.w r2, fp, r3
afcc: 2101 movs r1, #1
afce: 9101 str r1, [sp, #4]
afd0: 1afb subs r3, r7, r3
afd2: b21b sxth r3, r3
afd4: 9300 str r3, [sp, #0]
afd6: 4653 mov r3, sl
afd8: b212 sxth r2, r2
afda: 9905 ldr r1, [sp, #20]
afdc: a81d add r0, sp, #116 ; 0x74
afde: 47c0 blx r8
afe0: e570 b.n aac4 <lv_draw_line+0x1b4>
lv_draw_mask_line_points_init(&mask_left_param, p1.x + w_half1, p1.y, p2.x + w_half1, p2.y,
afe2: f8bd b014 ldrh.w fp, [sp, #20]
afe6: f8bd 802c ldrh.w r8, [sp, #44] ; 0x2c
afea: fa1f f38a uxth.w r3, sl
afee: 461f mov r7, r3
aff0: 4443 add r3, r8
aff2: 44d8 add r8, fp
aff4: 2200 movs r2, #0
aff6: 9201 str r2, [sp, #4]
aff8: 9500 str r5, [sp, #0]
affa: b21b sxth r3, r3
affc: 4632 mov r2, r6
affe: fa0f f188 sxth.w r1, r8
b002: a812 add r0, sp, #72 ; 0x48
b004: f8df 81f0 ldr.w r8, [pc, #496] ; b1f8 <lv_draw_line+0x8e8>
b008: 47c0 blx r8
lv_draw_mask_line_points_init(&mask_right_param, p1.x - w_half0, p1.y, p2.x - w_half0, p2.y,
b00a: fa1f f989 uxth.w r9, r9
b00e: eba7 0309 sub.w r3, r7, r9
b012: ebab 0909 sub.w r9, fp, r9
b016: 2201 movs r2, #1
b018: 9201 str r2, [sp, #4]
b01a: 9500 str r5, [sp, #0]
b01c: b21b sxth r3, r3
b01e: 4632 mov r2, r6
b020: fa0f f189 sxth.w r1, r9
b024: a81d add r0, sp, #116 ; 0x74
b026: 47c0 blx r8
b028: e54c b.n aac4 <lv_draw_line+0x1b4>
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);
b02a: f8bd 8028 ldrh.w r8, [sp, #40] ; 0x28
b02e: f8bd 9024 ldrh.w r9, [sp, #36] ; 0x24
b032: 9905 ldr r1, [sp, #20]
b034: eba1 0308 sub.w r3, r1, r8
b038: 2203 movs r2, #3
b03a: 9201 str r2, [sp, #4]
b03c: eb09 0206 add.w r2, r9, r6
b040: b212 sxth r2, r2
b042: 9200 str r2, [sp, #0]
b044: b21b sxth r3, r3
b046: 4632 mov r2, r6
b048: a828 add r0, sp, #160 ; 0xa0
b04a: 4e6b ldr r6, [pc, #428] ; (b1f8 <lv_draw_line+0x8e8>)
b04c: 47b0 blx r6
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);
b04e: ebaa 0308 sub.w r3, sl, r8
b052: 2202 movs r2, #2
b054: 9201 str r2, [sp, #4]
b056: eb09 0205 add.w r2, r9, r5
b05a: b212 sxth r2, r2
b05c: 9200 str r2, [sp, #0]
b05e: b21b sxth r3, r3
b060: 462a mov r2, r5
b062: 4651 mov r1, sl
b064: a833 add r0, sp, #204 ; 0xcc
b066: 47b0 blx r6
mask_top_id = lv_draw_mask_add(&mask_top_param, NULL);
b068: 2100 movs r1, #0
b06a: a828 add r0, sp, #160 ; 0xa0
b06c: 4d63 ldr r5, [pc, #396] ; (b1fc <lv_draw_line+0x8ec>)
b06e: 47a8 blx r5
b070: 900a str r0, [sp, #40] ; 0x28
mask_bottom_id = lv_draw_mask_add(&mask_bottom_param, NULL);
b072: 2100 movs r1, #0
b074: a833 add r0, sp, #204 ; 0xcc
b076: 47a8 blx r5
b078: 900d str r0, [sp, #52] ; 0x34
b07a: e536 b.n aaea <lv_draw_line+0x1da>
size_t mask_buf_size = LV_MATH_MIN(lv_area_get_size(&draw_area), LV_HOR_RES_MAX);
b07c: a80e add r0, sp, #56 ; 0x38
b07e: 4b60 ldr r3, [pc, #384] ; (b200 <lv_draw_line+0x8f0>)
b080: 4798 blx r3
b082: 4683 mov fp, r0
b084: e55a b.n ab3c <lv_draw_line+0x22c>
_lv_memset_00(&mask_buf[mask_p], draw_area_w);
b086: 4629 mov r1, r5
b088: 4640 mov r0, r8
b08a: 4b5e ldr r3, [pc, #376] ; (b204 <lv_draw_line+0x8f4>)
b08c: 4798 blx r3
b08e: e02d b.n b0ec <lv_draw_line+0x7dc>
dsc->color, mask_buf, LV_DRAW_MASK_RES_CHANGED, dsc->opa,
dsc->blend_mode);
b090: 9a09 ldr r2, [sp, #36] ; 0x24
b092: 7a53 ldrb r3, [r2, #9]
_lv_blend_fill(&fill_area, clip,
b094: f003 0303 and.w r3, r3, #3
b098: 9302 str r3, [sp, #8]
b09a: 7a13 ldrb r3, [r2, #8]
b09c: 9301 str r3, [sp, #4]
b09e: 2302 movs r3, #2
b0a0: 9300 str r3, [sp, #0]
b0a2: 464b mov r3, r9
b0a4: 8812 ldrh r2, [r2, #0]
b0a6: a948 add r1, sp, #288 ; 0x120
b0a8: a810 add r0, sp, #64 ; 0x40
b0aa: 4c57 ldr r4, [pc, #348] ; (b208 <lv_draw_line+0x8f8>)
b0ac: 47a0 blx r4
fill_area.y1 = fill_area.y2 + 1;
b0ae: f8bd 3046 ldrh.w r3, [sp, #70] ; 0x46
b0b2: 3301 adds r3, #1
b0b4: b21b sxth r3, r3
b0b6: f8ad 3042 strh.w r3, [sp, #66] ; 0x42
fill_area.y2 = fill_area.y1;
b0ba: f8ad 3046 strh.w r3, [sp, #70] ; 0x46
mask_p = 0;
_lv_memset_ff(mask_buf, mask_buf_size);
b0be: 4659 mov r1, fp
b0c0: 4648 mov r0, r9
b0c2: 4b52 ldr r3, [pc, #328] ; (b20c <lv_draw_line+0x8fc>)
b0c4: 4798 blx r3
mask_p = 0;
b0c6: 2700 movs r7, #0
for(h = draw_area.y1 + disp_area->y1; h <= draw_area.y2 + disp_area->y1; h++) {
b0c8: 3601 adds r6, #1
b0ca: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e
b0ce: f9ba 2012 ldrsh.w r2, [sl, #18]
b0d2: 4413 add r3, r2
b0d4: 429e cmp r6, r3
b0d6: dc13 bgt.n b100 <lv_draw_line+0x7f0>
lv_draw_mask_res_t mask_res = lv_draw_mask_apply(&mask_buf[mask_p], x, h, draw_area_w);
b0d8: eb09 0807 add.w r8, r9, r7
b0dc: 462b mov r3, r5
b0de: b232 sxth r2, r6
b0e0: 9905 ldr r1, [sp, #20]
b0e2: 4640 mov r0, r8
b0e4: 4c4a ldr r4, [pc, #296] ; (b210 <lv_draw_line+0x900>)
b0e6: 47a0 blx r4
if(mask_res == LV_DRAW_MASK_RES_TRANSP) {
b0e8: 2800 cmp r0, #0
b0ea: d0cc beq.n b086 <lv_draw_line+0x776>
mask_p += draw_area_w;
b0ec: 442f add r7, r5
if((uint32_t) mask_p + draw_area_w < mask_buf_size) {
b0ee: 19eb adds r3, r5, r7
b0f0: 459b cmp fp, r3
b0f2: d9cd bls.n b090 <lv_draw_line+0x780>
fill_area.y2 ++;
b0f4: f8bd 3046 ldrh.w r3, [sp, #70] ; 0x46
b0f8: 3301 adds r3, #1
b0fa: f8ad 3046 strh.w r3, [sp, #70] ; 0x46
b0fe: e7e3 b.n b0c8 <lv_draw_line+0x7b8>
b100: 9c09 ldr r4, [sp, #36] ; 0x24
}
}
/*Flush the last part*/
if(fill_area.y1 != fill_area.y2) {
b102: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46
b106: f9bd 2042 ldrsh.w r2, [sp, #66] ; 0x42
b10a: 429a cmp r2, r3
b10c: d010 beq.n b130 <lv_draw_line+0x820>
fill_area.y2--;
b10e: 3b01 subs r3, #1
b110: f8ad 3046 strh.w r3, [sp, #70] ; 0x46
_lv_blend_fill(&fill_area, clip,
dsc->color, mask_buf, LV_DRAW_MASK_RES_CHANGED, dsc->opa,
dsc->blend_mode);
b114: 7a63 ldrb r3, [r4, #9]
_lv_blend_fill(&fill_area, clip,
b116: f003 0303 and.w r3, r3, #3
b11a: 9302 str r3, [sp, #8]
b11c: 7a23 ldrb r3, [r4, #8]
b11e: 9301 str r3, [sp, #4]
b120: 2302 movs r3, #2
b122: 9300 str r3, [sp, #0]
b124: 464b mov r3, r9
b126: 8822 ldrh r2, [r4, #0]
b128: a948 add r1, sp, #288 ; 0x120
b12a: a810 add r0, sp, #64 ; 0x40
b12c: 4d36 ldr r5, [pc, #216] ; (b208 <lv_draw_line+0x8f8>)
b12e: 47a8 blx r5
}
_lv_mem_buf_release(mask_buf);
b130: 4648 mov r0, r9
b132: 4b30 ldr r3, [pc, #192] ; (b1f4 <lv_draw_line+0x8e4>)
b134: 4798 blx r3
lv_draw_mask_remove_id(mask_left_id);
b136: 980b ldr r0, [sp, #44] ; 0x2c
b138: 4d36 ldr r5, [pc, #216] ; (b214 <lv_draw_line+0x904>)
b13a: 47a8 blx r5
lv_draw_mask_remove_id(mask_right_id);
b13c: 980c ldr r0, [sp, #48] ; 0x30
b13e: 47a8 blx r5
lv_draw_mask_remove_id(mask_top_id);
b140: 980a ldr r0, [sp, #40] ; 0x28
b142: 47a8 blx r5
lv_draw_mask_remove_id(mask_bottom_id);
b144: 980d ldr r0, [sp, #52] ; 0x34
b146: 47a8 blx r5
if(dsc->round_end || dsc->round_start) {
b148: 7a63 ldrb r3, [r4, #9]
b14a: f013 0f0c tst.w r3, #12
b14e: d102 bne.n b156 <lv_draw_line+0x846>
}
b150: b04b add sp, #300 ; 0x12c
b152: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
lv_draw_rect_dsc_init(&cir_dsc);
b156: a833 add r0, sp, #204 ; 0xcc
b158: 4b2f ldr r3, [pc, #188] ; (b218 <lv_draw_line+0x908>)
b15a: 4798 blx r3
cir_dsc.bg_color = dsc->color;
b15c: 8823 ldrh r3, [r4, #0]
b15e: f8ad 30ce strh.w r3, [sp, #206] ; 0xce
cir_dsc.radius = LV_RADIUS_CIRCLE;
b162: f647 73ff movw r3, #32767 ; 0x7fff
b166: f8ad 30cc strh.w r3, [sp, #204] ; 0xcc
cir_dsc.bg_opa = dsc->opa;
b16a: 7a23 ldrb r3, [r4, #8]
b16c: f88d 30d8 strb.w r3, [sp, #216] ; 0xd8
int32_t r = (dsc->width >> 1);
b170: f9b4 3002 ldrsh.w r3, [r4, #2]
b174: 105e asrs r6, r3, #1
int32_t r_corr = (dsc->width & 1) ? 0 : 1;
b176: f083 0301 eor.w r3, r3, #1
b17a: f003 0501 and.w r5, r3, #1
if(dsc->round_start) {
b17e: 7a63 ldrb r3, [r4, #9]
b180: f013 0f04 tst.w r3, #4
b184: d11c bne.n b1c0 <lv_draw_line+0x8b0>
if(dsc->round_end) {
b186: 7a63 ldrb r3, [r4, #9]
b188: f013 0f08 tst.w r3, #8
b18c: d0e0 beq.n b150 <lv_draw_line+0x840>
cir_area.x1 = point2->x - r;
b18e: 9907 ldr r1, [sp, #28]
b190: 880a ldrh r2, [r1, #0]
b192: b2b6 uxth r6, r6
b194: 1b93 subs r3, r2, r6
b196: f8ad 30a0 strh.w r3, [sp, #160] ; 0xa0
cir_area.y1 = point2->y - r;
b19a: 8849 ldrh r1, [r1, #2]
b19c: 1b8b subs r3, r1, r6
b19e: f8ad 30a2 strh.w r3, [sp, #162] ; 0xa2
cir_area.x2 = point2->x + r - r_corr;
b1a2: b2ab uxth r3, r5
b1a4: 4432 add r2, r6
b1a6: 1ad2 subs r2, r2, r3
b1a8: f8ad 20a4 strh.w r2, [sp, #164] ; 0xa4
cir_area.y2 = point2->y + r - r_corr ;
b1ac: 440e add r6, r1
b1ae: 1af3 subs r3, r6, r3
b1b0: f8ad 30a6 strh.w r3, [sp, #166] ; 0xa6
lv_draw_rect(&cir_area, clip, &cir_dsc);
b1b4: aa33 add r2, sp, #204 ; 0xcc
b1b6: 9908 ldr r1, [sp, #32]
b1b8: a828 add r0, sp, #160 ; 0xa0
b1ba: 4b18 ldr r3, [pc, #96] ; (b21c <lv_draw_line+0x90c>)
b1bc: 4798 blx r3
b1be: e7c7 b.n b150 <lv_draw_line+0x840>
cir_area.x1 = point1->x - r;
b1c0: 9806 ldr r0, [sp, #24]
b1c2: 8802 ldrh r2, [r0, #0]
b1c4: b2b3 uxth r3, r6
b1c6: 1ad1 subs r1, r2, r3
b1c8: f8ad 10a0 strh.w r1, [sp, #160] ; 0xa0
cir_area.y1 = point1->y - r;
b1cc: 8840 ldrh r0, [r0, #2]
b1ce: 1ac1 subs r1, r0, r3
b1d0: f8ad 10a2 strh.w r1, [sp, #162] ; 0xa2
cir_area.x2 = point1->x + r - r_corr;
b1d4: b2a9 uxth r1, r5
b1d6: 441a add r2, r3
b1d8: 1a52 subs r2, r2, r1
b1da: f8ad 20a4 strh.w r2, [sp, #164] ; 0xa4
cir_area.y2 = point1->y + r - r_corr ;
b1de: 4403 add r3, r0
b1e0: 1a5b subs r3, r3, r1
b1e2: f8ad 30a6 strh.w r3, [sp, #166] ; 0xa6
lv_draw_rect(&cir_area, clip, &cir_dsc);
b1e6: aa33 add r2, sp, #204 ; 0xcc
b1e8: 9908 ldr r1, [sp, #32]
b1ea: a828 add r0, sp, #160 ; 0xa0
b1ec: 4b0b ldr r3, [pc, #44] ; (b21c <lv_draw_line+0x90c>)
b1ee: 4798 blx r3
b1f0: e7c9 b.n b186 <lv_draw_line+0x876>
b1f2: bf00 nop
b1f4: 00012571 .word 0x00012571
b1f8: 0000bee9 .word 0x0000bee9
b1fc: 0000bdc1 .word 0x0000bdc1
b200: 000114fd .word 0x000114fd
b204: 00012b37 .word 0x00012b37
b208: 00007751 .word 0x00007751
b20c: 00012bed .word 0x00012bed
b210: 0000be1d .word 0x0000be1d
b214: 0000be6d .word 0x0000be6d
b218: 0000c269 .word 0x0000c269
b21c: 0000c331 .word 0x0000c331
0000b220 <lv_draw_mask_line>:
**********************/
LV_ATTRIBUTE_FAST_MEM static lv_draw_mask_res_t lv_draw_mask_line(lv_opa_t * mask_buf, lv_coord_t abs_x,
lv_coord_t abs_y, lv_coord_t len,
lv_draw_mask_line_param_t * p)
{
b220: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
b224: 9c06 ldr r4, [sp, #24]
/*Make to points relative to the vertex*/
abs_y -= p->origo.y;
b226: 8aa5 ldrh r5, [r4, #20]
b228: 1b52 subs r2, r2, r5
b22a: b212 sxth r2, r2
abs_x -= p->origo.x;
b22c: 8a65 ldrh r5, [r4, #18]
b22e: 1b4d subs r5, r1, r5
b230: b22d sxth r5, r5
/*Handle special cases*/
if(p->steep == 0) {
b232: 6a21 ldr r1, [r4, #32]
b234: 2900 cmp r1, #0
b236: d14b bne.n b2d0 <lv_draw_mask_line+0xb0>
/*Horizontal*/
if(p->flat) {
b238: f894 1028 ldrb.w r1, [r4, #40] ; 0x28
b23c: f011 0f01 tst.w r1, #1
b240: d016 beq.n b270 <lv_draw_mask_line+0x50>
/*Non sense: Can't be on the right/left of a horizontal line*/
if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT ||
b242: 7c23 ldrb r3, [r4, #16]
b244: f003 0303 and.w r3, r3, #3
b248: 2b01 cmp r3, #1
b24a: f240 81db bls.w b604 <lv_draw_mask_line+0x3e4>
p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER;
else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP && abs_y + 1 < 0) return LV_DRAW_MASK_RES_FULL_COVER;
b24e: 2b02 cmp r3, #2
b250: d004 beq.n b25c <lv_draw_mask_line+0x3c>
else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_BOTTOM && abs_y > 0) return LV_DRAW_MASK_RES_FULL_COVER;
b252: 2b03 cmp r3, #3
b254: d006 beq.n b264 <lv_draw_mask_line+0x44>
else {
return LV_DRAW_MASK_RES_TRANSP;
b256: 2000 movs r0, #0
b258: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP && abs_y + 1 < 0) return LV_DRAW_MASK_RES_FULL_COVER;
b25c: 3201 adds r2, #1
p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER;
b25e: 0fd0 lsrs r0, r2, #31
b260: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
b264: 2a00 cmp r2, #0
b266: bfd4 ite le
b268: 2000 movle r0, #0
b26a: 2001 movgt r0, #1
b26c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
}
}
/*Vertical*/
else {
/*Non sense: Can't be on the top/bottom of a vertical line*/
if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP ||
b270: 7c22 ldrb r2, [r4, #16]
b272: f002 0203 and.w r2, r2, #3
b276: 1e91 subs r1, r2, #2
b278: b2c9 uxtb r1, r1
b27a: 2901 cmp r1, #1
b27c: f240 81c5 bls.w b60a <lv_draw_mask_line+0x3ea>
p->cfg.side == LV_DRAW_MASK_LINE_SIDE_BOTTOM) return LV_DRAW_MASK_RES_FULL_COVER;
else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT && abs_x > 0) return LV_DRAW_MASK_RES_FULL_COVER;
b280: 2a01 cmp r2, #1
b282: d00c beq.n b29e <lv_draw_mask_line+0x7e>
else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) {
b284: b9b2 cbnz r2, b2b4 <lv_draw_mask_line+0x94>
if(abs_x + len < 0) return LV_DRAW_MASK_RES_FULL_COVER;
b286: 18e9 adds r1, r5, r3
b288: f100 81c2 bmi.w b610 <lv_draw_mask_line+0x3f0>
else {
int32_t k = - abs_x;
b28c: 426d negs r5, r5
if(k < 0) return LV_DRAW_MASK_RES_TRANSP;
b28e: 2d00 cmp r5, #0
b290: f2c0 81c1 blt.w b616 <lv_draw_mask_line+0x3f6>
if(k >= 0 && k < len) _lv_memset_00(&mask_buf[k], len - k);
b294: 42ab cmp r3, r5
b296: dc07 bgt.n b2a8 <lv_draw_mask_line+0x88>
return LV_DRAW_MASK_RES_CHANGED;
b298: 2002 movs r0, #2
b29a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT && abs_x > 0) return LV_DRAW_MASK_RES_FULL_COVER;
b29e: 2d00 cmp r5, #0
b2a0: dd08 ble.n b2b4 <lv_draw_mask_line+0x94>
b2a2: 2001 movs r0, #1
b2a4: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(k >= 0 && k < len) _lv_memset_00(&mask_buf[k], len - k);
b2a8: 4428 add r0, r5
b2aa: 4bcd ldr r3, [pc, #820] ; (b5e0 <lv_draw_mask_line+0x3c0>)
b2ac: 4798 blx r3
return LV_DRAW_MASK_RES_CHANGED;
b2ae: 2002 movs r0, #2
b2b0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
}
}
else {
if(abs_x + len < 0) return LV_DRAW_MASK_RES_TRANSP;
b2b4: 42dd cmn r5, r3
b2b6: f100 81b1 bmi.w b61c <lv_draw_mask_line+0x3fc>
else {
int32_t k = - abs_x;
b2ba: 4269 negs r1, r5
b2bc: ea21 71e1 bic.w r1, r1, r1, asr #31
if(k < 0) k = 0;
if(k >= len) return LV_DRAW_MASK_RES_TRANSP;
b2c0: 428b cmp r3, r1
b2c2: f340 81ae ble.w b622 <lv_draw_mask_line+0x402>
else if(k >= 0 && k < len) _lv_memset_00(&mask_buf[0], k);
b2c6: 4bc6 ldr r3, [pc, #792] ; (b5e0 <lv_draw_mask_line+0x3c0>)
b2c8: 4798 blx r3
return LV_DRAW_MASK_RES_CHANGED;
b2ca: 2002 movs r0, #2
b2cc: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
}
}
}
lv_draw_mask_res_t res;
if(p->flat) {
b2d0: f894 6028 ldrb.w r6, [r4, #40] ; 0x28
b2d4: f016 0f01 tst.w r6, #1
b2d8: d10f bne.n b2fa <lv_draw_mask_line+0xda>
{
int32_t k;
int32_t x_at_y;
/* At the beginning of the mask if the limit line is greater then the mask's y.
* Then the mask is in the "wrong" area*/
x_at_y = (int32_t)((int32_t)p->xy_steep * abs_y) >> 10;
b2da: 69a7 ldr r7, [r4, #24]
b2dc: fb02 f107 mul.w r1, r2, r7
b2e0: 1289 asrs r1, r1, #10
if(p->xy_steep > 0) x_at_y++;
b2e2: 2f00 cmp r7, #0
b2e4: bfcc ite gt
b2e6: f101 0e01 addgt.w lr, r1, #1
x_at_y = (int32_t)((int32_t)p->xy_steep * abs_y) >> 10;
b2ea: 468e movle lr, r1
if(x_at_y < abs_x) {
b2ec: 4575 cmp r5, lr
b2ee: f340 8098 ble.w b422 <lv_draw_mask_line+0x202>
p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER;
b2f2: f3c6 0040 ubfx r0, r6, #1, #1
b2f6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
y_at_x = (int32_t)((int32_t)p->yx_steep * abs_x) >> 10;
b2fa: 69e1 ldr r1, [r4, #28]
b2fc: fb05 f701 mul.w r7, r5, r1
b300: 12bf asrs r7, r7, #10
if(p->yx_steep > 0) {
b302: 2900 cmp r1, #0
b304: dd06 ble.n b314 <lv_draw_mask_line+0xf4>
if(y_at_x > abs_y) {
b306: 4297 cmp r7, r2
b308: f340 81b8 ble.w b67c <lv_draw_mask_line+0x45c>
p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER;
b30c: f3c6 0040 ubfx r0, r6, #1, #1
b310: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(y_at_x < abs_y) {
b314: 4297 cmp r7, r2
b316: f280 81ed bge.w b6f4 <lv_draw_mask_line+0x4d4>
p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER;
b31a: f3c6 0040 ubfx r0, r6, #1, #1
b31e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(p->inv) {
b322: f086 0002 eor.w r0, r6, #2
p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER;
b326: f3c0 0040 ubfx r0, r0, #1, #1
b32a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(p->inv) {
b32e: f086 0002 eor.w r0, r6, #2
p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER;
b332: f3c0 0040 ubfx r0, r0, #1, #1
b336: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
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;
if(mask_new <= LV_OPA_MIN) return 0;
b33a: 2500 movs r5, #0
b33c: e1d4 b.n b6e8 <lv_draw_mask_line+0x4c8>
b33e: 46f4 mov ip, lr
mask_buf[k] = mask_mix(mask_buf[k], m);
b340: f888 c000 strb.w ip, [r8]
px_h -= p->spx;
b344: 6a63 ldr r3, [r4, #36] ; 0x24
b346: 1ad2 subs r2, r2, r3
k++;
b348: 3501 adds r5, #1
b34a: 3601 adds r6, #1
if(k >= len) break;
b34c: 42bd cmp r5, r7
b34e: da49 bge.n b3e4 <lv_draw_mask_line+0x1c4>
while(px_h > p->spx) {
b350: 6a63 ldr r3, [r4, #36] ; 0x24
b352: 429a cmp r2, r3
b354: dd1d ble.n b392 <lv_draw_mask_line+0x172>
if(k >= 0 && k < len) {
b356: 2d00 cmp r5, #0
b358: dbf4 blt.n b344 <lv_draw_mask_line+0x124>
b35a: 42bd cmp r5, r7
b35c: daf2 bge.n b344 <lv_draw_mask_line+0x124>
m = px_h - (p->spx >> 1);
b35e: eba2 0363 sub.w r3, r2, r3, asr #1
b362: b2db uxtb r3, r3
if(p->inv) m = 255 - m;
b364: f894 c028 ldrb.w ip, [r4, #40] ; 0x28
b368: f01c 0f02 tst.w ip, #2
b36c: bf1c itt ne
b36e: 43db mvnne r3, r3
b370: b2db uxtbne r3, r3
b372: 46b0 mov r8, r6
mask_buf[k] = mask_mix(mask_buf[k], m);
b374: f896 c000 ldrb.w ip, [r6]
if(mask_new >= LV_OPA_MAX) return mask_act;
b378: 2bf9 cmp r3, #249 ; 0xf9
b37a: d8e1 bhi.n b340 <lv_draw_mask_line+0x120>
if(mask_new <= LV_OPA_MIN) return 0;
b37c: 2b05 cmp r3, #5
b37e: d9de bls.n b33e <lv_draw_mask_line+0x11e>
return LV_MATH_UDIV255(mask_act * mask_new);// >> 8);
b380: fb03 f30c mul.w r3, r3, ip
b384: eb03 2c03 add.w ip, r3, r3, lsl #8
b388: eb03 13cc add.w r3, r3, ip, lsl #7
b38c: f3c3 5cc7 ubfx ip, r3, #23, #8
b390: e7d6 b.n b340 <lv_draw_mask_line+0x120>
if(k < len && k >= 0) {
b392: 42bd cmp r5, r7
b394: da26 bge.n b3e4 <lv_draw_mask_line+0x1c4>
b396: 2d00 cmp r5, #0
b398: db24 blt.n b3e4 <lv_draw_mask_line+0x1c4>
int32_t x_inters = (px_h * p->xy_steep) >> 10;
b39a: 69a3 ldr r3, [r4, #24]
b39c: fb03 f302 mul.w r3, r3, r2
b3a0: 129b asrs r3, r3, #10
m = (x_inters * px_h) >> 9;
b3a2: fb02 f203 mul.w r2, r2, r3
b3a6: f3c2 2247 ubfx r2, r2, #9, #8
if(p->yx_steep < 0) m = 255 - m;
b3aa: 69e3 ldr r3, [r4, #28]
b3ac: 2b00 cmp r3, #0
b3ae: bfbc itt lt
b3b0: 43d2 mvnlt r2, r2
b3b2: b2d2 uxtblt r2, r2
if(p->inv) m = 255 - m;
b3b4: f894 3028 ldrb.w r3, [r4, #40] ; 0x28
b3b8: f013 0f02 tst.w r3, #2
b3bc: bf1c itt ne
b3be: 43d2 mvnne r2, r2
b3c0: b2d2 uxtbne r2, r2
mask_buf[k] = mask_mix(mask_buf[k], m);
b3c2: 1946 adds r6, r0, r5
b3c4: 5d43 ldrb r3, [r0, r5]
if(mask_new >= LV_OPA_MAX) return mask_act;
b3c6: 2af9 cmp r2, #249 ; 0xf9
b3c8: d80b bhi.n b3e2 <lv_draw_mask_line+0x1c2>
if(mask_new <= LV_OPA_MIN) return 0;
b3ca: 2a05 cmp r2, #5
b3cc: d908 bls.n b3e0 <lv_draw_mask_line+0x1c0>
return LV_MATH_UDIV255(mask_act * mask_new);// >> 8);
b3ce: fb02 f203 mul.w r2, r2, r3
b3d2: eb02 2302 add.w r3, r2, r2, lsl #8
b3d6: eb02 12c3 add.w r2, r2, r3, lsl #7
b3da: f3c2 53c7 ubfx r3, r2, #23, #8
b3de: e000 b.n b3e2 <lv_draw_mask_line+0x1c2>
if(mask_new <= LV_OPA_MIN) return 0;
b3e0: 2300 movs r3, #0
mask_buf[k] = mask_mix(mask_buf[k], m);
b3e2: 7033 strb r3, [r6, #0]
if(p->inv) {
b3e4: f894 3028 ldrb.w r3, [r4, #40] ; 0x28
b3e8: f013 0f02 tst.w r3, #2
b3ec: d00a beq.n b404 <lv_draw_mask_line+0x1e4>
if(k > len) {
b3ee: 428f cmp r7, r1
b3f0: f2c0 811a blt.w b628 <lv_draw_mask_line+0x408>
if(k >= 0) {
b3f4: 2900 cmp r1, #0
b3f6: f2c0 811a blt.w b62e <lv_draw_mask_line+0x40e>
_lv_memset_00(&mask_buf[0], k);
b3fa: 4b79 ldr r3, [pc, #484] ; (b5e0 <lv_draw_mask_line+0x3c0>)
b3fc: 4798 blx r3
return LV_DRAW_MASK_RES_CHANGED;
b3fe: 2002 movs r0, #2
b400: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(k < 0) {
b404: 3501 adds r5, #1
b406: f100 8115 bmi.w b634 <lv_draw_mask_line+0x414>
if(k <= len) {
b40a: 42bd cmp r5, r7
b40c: dd02 ble.n b414 <lv_draw_mask_line+0x1f4>
return LV_DRAW_MASK_RES_CHANGED;
b40e: 2002 movs r0, #2
b410: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
_lv_memset_00(&mask_buf[k], len - k);
b414: 1b79 subs r1, r7, r5
b416: 4428 add r0, r5
b418: 4b71 ldr r3, [pc, #452] ; (b5e0 <lv_draw_mask_line+0x3c0>)
b41a: 4798 blx r3
return LV_DRAW_MASK_RES_CHANGED;
b41c: 2002 movs r0, #2
b41e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(x_at_y > abs_x + len) {
b422: eb05 0e03 add.w lr, r5, r3
b426: 4571 cmp r1, lr
b428: dd05 ble.n b436 <lv_draw_mask_line+0x216>
if(p->inv) {
b42a: f086 0002 eor.w r0, r6, #2
p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER;
b42e: f3c0 0040 ubfx r0, r0, #1, #1
b432: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
int32_t xs = ((abs_y << 8) * p->xy_steep) >> 10;
b436: 0211 lsls r1, r2, #8
b438: fb07 f101 mul.w r1, r7, r1
int32_t xsi = xs >> 8;
b43c: ea4f 48a1 mov.w r8, r1, asr #18
int32_t xsf = xs & 0xFF;
b440: f3c1 2187 ubfx r1, r1, #10, #8
int32_t xe = (((abs_y + 1) << 8) * p->xy_steep) >> 10;
b444: 3201 adds r2, #1
b446: 0212 lsls r2, r2, #8
b448: fb07 f202 mul.w r2, r7, r2
int32_t xei = xe >> 8;
b44c: ea4f 4ca2 mov.w ip, r2, asr #18
k = xsi - abs_x;
b450: eba8 0e05 sub.w lr, r8, r5
if(xsi != xei && (p->xy_steep < 0 && xsf == 0)) {
b454: 45e0 cmp r8, ip
b456: d063 beq.n b520 <lv_draw_mask_line+0x300>
b458: 2f00 cmp r7, #0
b45a: db5b blt.n b514 <lv_draw_mask_line+0x2f4>
y_inters = ((255 - xsf) * p->yx_steep) >> 10;
b45c: f1c1 01ff rsb r1, r1, #255 ; 0xff
b460: 69e2 ldr r2, [r4, #28]
b462: fb02 f201 mul.w r2, r2, r1
b466: 1295 asrs r5, r2, #10
if(k >= 0 && k < len) {
b468: f1be 0f00 cmp.w lr, #0
b46c: db1c blt.n b4a8 <lv_draw_mask_line+0x288>
b46e: 4573 cmp r3, lr
b470: dd1a ble.n b4a8 <lv_draw_mask_line+0x288>
m = 255 - ((y_inters * (255 - xsf)) >> 9);
b472: fb05 f101 mul.w r1, r5, r1
b476: f3c1 2247 ubfx r2, r1, #9, #8
if(p->inv) m = 255 - m;
b47a: f016 0f02 tst.w r6, #2
m = 255 - ((y_inters * (255 - xsf)) >> 9);
b47e: bf04 itt eq
b480: 43d2 mvneq r2, r2
b482: b2d2 uxtbeq r2, r2
mask_buf[k] = mask_mix(mask_buf[k], m);
b484: eb00 060e add.w r6, r0, lr
b488: f810 100e ldrb.w r1, [r0, lr]
if(mask_new >= LV_OPA_MAX) return mask_act;
b48c: 2af9 cmp r2, #249 ; 0xf9
b48e: d80a bhi.n b4a6 <lv_draw_mask_line+0x286>
if(mask_new <= LV_OPA_MIN) return 0;
b490: 2a05 cmp r2, #5
b492: f240 80a1 bls.w b5d8 <lv_draw_mask_line+0x3b8>
return LV_MATH_UDIV255(mask_act * mask_new);// >> 8);
b496: fb02 f201 mul.w r2, r2, r1
b49a: eb02 2102 add.w r1, r2, r2, lsl #8
b49e: eb02 12c1 add.w r2, r2, r1, lsl #7
b4a2: f3c2 51c7 ubfx r1, r2, #23, #8
mask_buf[k] = mask_mix(mask_buf[k], m);
b4a6: 7031 strb r1, [r6, #0]
if(k >= 0 && k < len) {
b4a8: f11e 0101 adds.w r1, lr, #1
b4ac: d420 bmi.n b4f0 <lv_draw_mask_line+0x2d0>
b4ae: 428b cmp r3, r1
b4b0: dd1e ble.n b4f0 <lv_draw_mask_line+0x2d0>
int32_t x_inters = ((255 - y_inters) * p->xy_steep) >> 10;
b4b2: f1c5 02ff rsb r2, r5, #255 ; 0xff
b4b6: 69a5 ldr r5, [r4, #24]
b4b8: fb05 f502 mul.w r5, r5, r2
b4bc: 12ad asrs r5, r5, #10
m = ((255 - y_inters) * x_inters) >> 9;
b4be: fb02 f205 mul.w r2, r2, r5
b4c2: f3c2 2247 ubfx r2, r2, #9, #8
if(p->inv) m = 255 - m;
b4c6: f894 5028 ldrb.w r5, [r4, #40] ; 0x28
b4ca: f015 0f02 tst.w r5, #2
b4ce: bf1c itt ne
b4d0: 43d2 mvnne r2, r2
b4d2: b2d2 uxtbne r2, r2
mask_buf[k] = mask_mix(mask_buf[k], m);
b4d4: 5c45 ldrb r5, [r0, r1]
if(mask_new >= LV_OPA_MAX) return mask_act;
b4d6: 2af9 cmp r2, #249 ; 0xf9
b4d8: d809 bhi.n b4ee <lv_draw_mask_line+0x2ce>
if(mask_new <= LV_OPA_MIN) return 0;
b4da: 2a05 cmp r2, #5
b4dc: d97e bls.n b5dc <lv_draw_mask_line+0x3bc>
return LV_MATH_UDIV255(mask_act * mask_new);// >> 8);
b4de: fb02 f205 mul.w r2, r2, r5
b4e2: eb02 2502 add.w r5, r2, r2, lsl #8
b4e6: eb02 12c5 add.w r2, r2, r5, lsl #7
b4ea: f3c2 55c7 ubfx r5, r2, #23, #8
mask_buf[k] = mask_mix(mask_buf[k], m);
b4ee: 5445 strb r5, [r0, r1]
if(p->inv) {
b4f0: f894 2028 ldrb.w r2, [r4, #40] ; 0x28
b4f4: f012 0f02 tst.w r2, #2
b4f8: d074 beq.n b5e4 <lv_draw_mask_line+0x3c4>
if(k > len) return LV_DRAW_MASK_RES_TRANSP;
b4fa: 4573 cmp r3, lr
b4fc: f2c0 80b2 blt.w b664 <lv_draw_mask_line+0x444>
if(k >= 0) _lv_memset_00(&mask_buf[0], k);
b500: f1be 0f00 cmp.w lr, #0
b504: f2c0 80b1 blt.w b66a <lv_draw_mask_line+0x44a>
b508: 4671 mov r1, lr
b50a: 4b35 ldr r3, [pc, #212] ; (b5e0 <lv_draw_mask_line+0x3c0>)
b50c: 4798 blx r3
return LV_DRAW_MASK_RES_CHANGED;
b50e: 2002 movs r0, #2
b510: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(xsi != xei && (p->xy_steep < 0 && xsf == 0)) {
b514: 2900 cmp r1, #0
b516: f040 8100 bne.w b71a <lv_draw_mask_line+0x4fa>
k--;
b51a: f10e 3eff add.w lr, lr, #4294967295
xsf = 0xFF;
b51e: 21ff movs r1, #255 ; 0xff
if(k >= 0 && k < len) {
b520: f1be 0f00 cmp.w lr, #0
b524: db1e blt.n b564 <lv_draw_mask_line+0x344>
b526: 4573 cmp r3, lr
b528: dd1c ble.n b564 <lv_draw_mask_line+0x344>
int32_t xef = xe & 0xFF;
b52a: f3c2 2287 ubfx r2, r2, #10, #8
m = (xsf + xef) >> 1;
b52e: 440a add r2, r1
b530: f3c2 0247 ubfx r2, r2, #1, #8
if(p->inv) m = 255 - m;
b534: f016 0f02 tst.w r6, #2
b538: bf1c itt ne
b53a: 43d2 mvnne r2, r2
b53c: b2d2 uxtbne r2, r2
mask_buf[k] = mask_mix(mask_buf[k], m);
b53e: eb00 060e add.w r6, r0, lr
b542: f810 100e ldrb.w r1, [r0, lr]
if(mask_new >= LV_OPA_MAX) return mask_act;
b546: 2af9 cmp r2, #249 ; 0xf9
b548: d80b bhi.n b562 <lv_draw_mask_line+0x342>
if(mask_new <= LV_OPA_MIN) return 0;
b54a: 2a05 cmp r2, #5
b54c: d908 bls.n b560 <lv_draw_mask_line+0x340>
return LV_MATH_UDIV255(mask_act * mask_new);// >> 8);
b54e: fb02 f201 mul.w r2, r2, r1
b552: eb02 2102 add.w r1, r2, r2, lsl #8
b556: eb02 12c1 add.w r2, r2, r1, lsl #7
b55a: f3c2 51c7 ubfx r1, r2, #23, #8
b55e: e000 b.n b562 <lv_draw_mask_line+0x342>
if(mask_new <= LV_OPA_MIN) return 0;
b560: 2100 movs r1, #0
mask_buf[k] = mask_mix(mask_buf[k], m);
b562: 7031 strb r1, [r6, #0]
if(p->inv) {
b564: f894 2028 ldrb.w r2, [r4, #40] ; 0x28
b568: f012 0f02 tst.w r2, #2
b56c: d00a beq.n b584 <lv_draw_mask_line+0x364>
k = xsi - abs_x;
b56e: ebac 0105 sub.w r1, ip, r5
if(k >= len) {
b572: 428b cmp r3, r1
b574: dd61 ble.n b63a <lv_draw_mask_line+0x41a>
if(k >= 0) _lv_memset_00(&mask_buf[0], k);
b576: 2900 cmp r1, #0
b578: db62 blt.n b640 <lv_draw_mask_line+0x420>
b57a: 4b19 ldr r3, [pc, #100] ; (b5e0 <lv_draw_mask_line+0x3c0>)
b57c: 4798 blx r3
return LV_DRAW_MASK_RES_CHANGED;
b57e: 2002 movs r0, #2
b580: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
k++;
b584: f10e 0201 add.w r2, lr, #1
b588: 429a cmp r2, r3
b58a: bfa8 it ge
b58c: 461a movge r2, r3
if(k == 0) return LV_DRAW_MASK_RES_TRANSP;
b58e: 2a00 cmp r2, #0
b590: d059 beq.n b646 <lv_draw_mask_line+0x426>
else if(k > 0) _lv_memset_00(&mask_buf[k], len - k);
b592: 2a00 cmp r2, #0
b594: dd5a ble.n b64c <lv_draw_mask_line+0x42c>
b596: 1a99 subs r1, r3, r2
b598: 4410 add r0, r2
b59a: 4b11 ldr r3, [pc, #68] ; (b5e0 <lv_draw_mask_line+0x3c0>)
b59c: 4798 blx r3
return LV_DRAW_MASK_RES_CHANGED;
b59e: 2002 movs r0, #2
b5a0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(mask_new <= LV_OPA_MIN) return 0;
b5a4: 2500 movs r5, #0
b5a6: e0dc b.n b762 <lv_draw_mask_line+0x542>
b5a8: 2500 movs r5, #0
b5aa: e100 b.n b7ae <lv_draw_mask_line+0x58e>
else if(k > 0) _lv_memset_00(&mask_buf[0], k);
b5ac: 2900 cmp r1, #0
b5ae: dd50 ble.n b652 <lv_draw_mask_line+0x432>
b5b0: 4b0b ldr r3, [pc, #44] ; (b5e0 <lv_draw_mask_line+0x3c0>)
b5b2: 4798 blx r3
return LV_DRAW_MASK_RES_CHANGED;
b5b4: 2002 movs r0, #2
b5b6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
k += 2;
b5ba: f10e 0e01 add.w lr, lr, #1
if(k > len) return LV_DRAW_MASK_RES_FULL_COVER;
b5be: 4573 cmp r3, lr
b5c0: db4a blt.n b658 <lv_draw_mask_line+0x438>
if(k >= 0) _lv_memset_00(&mask_buf[k], len - k);
b5c2: f1be 0f00 cmp.w lr, #0
b5c6: db4a blt.n b65e <lv_draw_mask_line+0x43e>
b5c8: eba3 010e sub.w r1, r3, lr
b5cc: 4470 add r0, lr
b5ce: 4b04 ldr r3, [pc, #16] ; (b5e0 <lv_draw_mask_line+0x3c0>)
b5d0: 4798 blx r3
return LV_DRAW_MASK_RES_CHANGED;
b5d2: 2002 movs r0, #2
b5d4: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(mask_new <= LV_OPA_MIN) return 0;
b5d8: 2100 movs r1, #0
b5da: e764 b.n b4a6 <lv_draw_mask_line+0x286>
b5dc: 2500 movs r5, #0
b5de: e786 b.n b4ee <lv_draw_mask_line+0x2ce>
b5e0: 00012b37 .word 0x00012b37
k++;
b5e4: f10e 0202 add.w r2, lr, #2
b5e8: 429a cmp r2, r3
b5ea: bfa8 it ge
b5ec: 461a movge r2, r3
if(k == 0) return LV_DRAW_MASK_RES_TRANSP;
b5ee: 2a00 cmp r2, #0
b5f0: d03e beq.n b670 <lv_draw_mask_line+0x450>
else if(k > 0) _lv_memset_00(&mask_buf[k], len - k);
b5f2: 2a00 cmp r2, #0
b5f4: dd3f ble.n b676 <lv_draw_mask_line+0x456>
b5f6: 1a99 subs r1, r3, r2
b5f8: 4410 add r0, r2
b5fa: 4b73 ldr r3, [pc, #460] ; (b7c8 <lv_draw_mask_line+0x5a8>)
b5fc: 4798 blx r3
return LV_DRAW_MASK_RES_CHANGED;
b5fe: 2002 movs r0, #2
b600: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER;
b604: 2001 movs r0, #1
b606: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
p->cfg.side == LV_DRAW_MASK_LINE_SIDE_BOTTOM) return LV_DRAW_MASK_RES_FULL_COVER;
b60a: 2001 movs r0, #1
b60c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(abs_x + len < 0) return LV_DRAW_MASK_RES_FULL_COVER;
b610: 2001 movs r0, #1
b612: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(k < 0) return LV_DRAW_MASK_RES_TRANSP;
b616: 2000 movs r0, #0
b618: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(abs_x + len < 0) return LV_DRAW_MASK_RES_TRANSP;
b61c: 2000 movs r0, #0
b61e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(k >= len) return LV_DRAW_MASK_RES_TRANSP;
b622: 2000 movs r0, #0
b624: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
return LV_DRAW_MASK_RES_TRANSP;
b628: 2000 movs r0, #0
b62a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
return LV_DRAW_MASK_RES_CHANGED;
b62e: 2002 movs r0, #2
b630: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
return LV_DRAW_MASK_RES_TRANSP;
b634: 2000 movs r0, #0
b636: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
return LV_DRAW_MASK_RES_TRANSP;
b63a: 2000 movs r0, #0
b63c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
return LV_DRAW_MASK_RES_CHANGED;
b640: 2002 movs r0, #2
b642: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(k == 0) return LV_DRAW_MASK_RES_TRANSP;
b646: 2000 movs r0, #0
b648: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
return LV_DRAW_MASK_RES_CHANGED;
b64c: 2002 movs r0, #2
b64e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
b652: 2002 movs r0, #2
b654: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(k > len) return LV_DRAW_MASK_RES_FULL_COVER;
b658: 2001 movs r0, #1
b65a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
return LV_DRAW_MASK_RES_CHANGED;
b65e: 2002 movs r0, #2
b660: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(k > len) return LV_DRAW_MASK_RES_TRANSP;
b664: 2000 movs r0, #0
b666: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
return LV_DRAW_MASK_RES_CHANGED;
b66a: 2002 movs r0, #2
b66c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(k == 0) return LV_DRAW_MASK_RES_TRANSP;
b670: 2000 movs r0, #0
b672: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
return LV_DRAW_MASK_RES_CHANGED;
b676: 2002 movs r0, #2
b678: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
y_at_x = (int32_t)((int32_t)p->yx_steep * (abs_x + len)) >> 10;
b67c: 461f mov r7, r3
b67e: 442b add r3, r5
b680: fb01 f103 mul.w r1, r1, r3
if(y_at_x < abs_y) {
b684: ebb2 2fa1 cmp.w r2, r1, asr #10
b688: f73f ae4b bgt.w b322 <lv_draw_mask_line+0x102>
if(p->yx_steep > 0) xe = ((abs_y << 8) * p->xy_steep) >> 10;
b68c: 0212 lsls r2, r2, #8
b68e: 69a3 ldr r3, [r4, #24]
b690: fb03 f302 mul.w r3, r3, r2
b694: 129b asrs r3, r3, #10
int32_t xei = xe >> 8;
b696: 1219 asrs r1, r3, #8
if(xef == 0) px_h = 255;
b698: f013 03ff ands.w r3, r3, #255 ; 0xff
b69c: d039 beq.n b712 <lv_draw_mask_line+0x4f2>
else px_h = 255 - (((255 - xef) * p->spx) >> 8);
b69e: f1c3 03ff rsb r3, r3, #255 ; 0xff
b6a2: 6a62 ldr r2, [r4, #36] ; 0x24
b6a4: fb02 f203 mul.w r2, r2, r3
b6a8: ea4f 2e22 mov.w lr, r2, asr #8
b6ac: f1ce 02ff rsb r2, lr, #255 ; 0xff
if(k >= 0 && k < len) {
b6b0: 1b49 subs r1, r1, r5
b6b2: d41a bmi.n b6ea <lv_draw_mask_line+0x4ca>
b6b4: 42b9 cmp r1, r7
b6b6: da18 bge.n b6ea <lv_draw_mask_line+0x4ca>
m = 255 - (((255 - xef) * (255 - px_h)) >> 9);
b6b8: fb0e f303 mul.w r3, lr, r3
b6bc: f3c3 2347 ubfx r3, r3, #9, #8
if(p->inv) m = 255 - m;
b6c0: f016 0f02 tst.w r6, #2
m = 255 - (((255 - xef) * (255 - px_h)) >> 9);
b6c4: bf04 itt eq
b6c6: 43db mvneq r3, r3
b6c8: b2db uxtbeq r3, r3
mask_buf[k] = mask_mix(mask_buf[k], m);
b6ca: 1846 adds r6, r0, r1
b6cc: 5c45 ldrb r5, [r0, r1]
if(mask_new >= LV_OPA_MAX) return mask_act;
b6ce: 2bf9 cmp r3, #249 ; 0xf9
b6d0: d80a bhi.n b6e8 <lv_draw_mask_line+0x4c8>
if(mask_new <= LV_OPA_MIN) return 0;
b6d2: 2b05 cmp r3, #5
b6d4: f67f ae31 bls.w b33a <lv_draw_mask_line+0x11a>
return LV_MATH_UDIV255(mask_act * mask_new);// >> 8);
b6d8: fb03 f305 mul.w r3, r3, r5
b6dc: eb03 2503 add.w r5, r3, r3, lsl #8
b6e0: eb03 13c5 add.w r3, r3, r5, lsl #7
b6e4: f3c3 55c7 ubfx r5, r3, #23, #8
mask_buf[k] = mask_mix(mask_buf[k], m);
b6e8: 7035 strb r5, [r6, #0]
k++;
b6ea: 1c4d adds r5, r1, #1
b6ec: 1946 adds r6, r0, r5
if(mask_new <= LV_OPA_MIN) return 0;
b6ee: f04f 0e00 mov.w lr, #0
b6f2: e62d b.n b350 <lv_draw_mask_line+0x130>
y_at_x = (int32_t)((int32_t)p->yx_steep * (abs_x + len)) >> 10;
b6f4: 461f mov r7, r3
b6f6: 442b add r3, r5
b6f8: fb01 f103 mul.w r1, r1, r3
if(y_at_x > abs_y) {
b6fc: ebb2 2fa1 cmp.w r2, r1, asr #10
b700: f6ff ae15 blt.w b32e <lv_draw_mask_line+0x10e>
else xe = (((abs_y + 1) << 8) * p->xy_steep) >> 10;
b704: 3201 adds r2, #1
b706: 0212 lsls r2, r2, #8
b708: 69a3 ldr r3, [r4, #24]
b70a: fb03 f302 mul.w r3, r3, r2
b70e: 129b asrs r3, r3, #10
b710: e7c1 b.n b696 <lv_draw_mask_line+0x476>
int32_t k = xei - abs_x;
b712: 1b4d subs r5, r1, r5
b714: 4629 mov r1, r5
if(xef == 0) px_h = 255;
b716: 22ff movs r2, #255 ; 0xff
b718: e7e8 b.n b6ec <lv_draw_mask_line+0x4cc>
y_inters = (xsf * (-p->yx_steep)) >> 10;
b71a: 69e2 ldr r2, [r4, #28]
b71c: 4252 negs r2, r2
b71e: fb01 f202 mul.w r2, r1, r2
b722: 1292 asrs r2, r2, #10
if(k >= 0 && k < len) {
b724: f1be 0f00 cmp.w lr, #0
b728: db1c blt.n b764 <lv_draw_mask_line+0x544>
b72a: 4573 cmp r3, lr
b72c: dd1a ble.n b764 <lv_draw_mask_line+0x544>
m = (y_inters * xsf) >> 9;
b72e: fb02 f101 mul.w r1, r2, r1
b732: f3c1 2147 ubfx r1, r1, #9, #8
if(p->inv) m = 255 - m;
b736: f016 0f02 tst.w r6, #2
b73a: bf1c itt ne
b73c: 43c9 mvnne r1, r1
b73e: b2c9 uxtbne r1, r1
mask_buf[k] = mask_mix(mask_buf[k], m);
b740: eb00 060e add.w r6, r0, lr
b744: f810 500e ldrb.w r5, [r0, lr]
if(mask_new >= LV_OPA_MAX) return mask_act;
b748: 29f9 cmp r1, #249 ; 0xf9
b74a: d80a bhi.n b762 <lv_draw_mask_line+0x542>
if(mask_new <= LV_OPA_MIN) return 0;
b74c: 2905 cmp r1, #5
b74e: f67f af29 bls.w b5a4 <lv_draw_mask_line+0x384>
return LV_MATH_UDIV255(mask_act * mask_new);// >> 8);
b752: fb01 f105 mul.w r1, r1, r5
b756: eb01 2501 add.w r5, r1, r1, lsl #8
b75a: eb01 11c5 add.w r1, r1, r5, lsl #7
b75e: f3c1 55c7 ubfx r5, r1, #23, #8
mask_buf[k] = mask_mix(mask_buf[k], m);
b762: 7035 strb r5, [r6, #0]
if(k >= 0 && k < len) {
b764: f1be 0101 subs.w r1, lr, #1
b768: d422 bmi.n b7b0 <lv_draw_mask_line+0x590>
b76a: 428b cmp r3, r1
b76c: dd20 ble.n b7b0 <lv_draw_mask_line+0x590>
int32_t x_inters = ((255 - y_inters) * (-p->xy_steep)) >> 10;
b76e: f1c2 02ff rsb r2, r2, #255 ; 0xff
b772: 69a5 ldr r5, [r4, #24]
b774: 426d negs r5, r5
b776: fb02 f505 mul.w r5, r2, r5
b77a: 12ad asrs r5, r5, #10
m = 255 - (((255 - y_inters) * x_inters) >> 9);
b77c: fb02 f205 mul.w r2, r2, r5
b780: f3c2 2247 ubfx r2, r2, #9, #8
if(p->inv) m = 255 - m;
b784: f894 5028 ldrb.w r5, [r4, #40] ; 0x28
b788: f015 0f02 tst.w r5, #2
m = 255 - (((255 - y_inters) * x_inters) >> 9);
b78c: bf04 itt eq
b78e: 43d2 mvneq r2, r2
b790: b2d2 uxtbeq r2, r2
mask_buf[k] = mask_mix(mask_buf[k], m);
b792: 5c45 ldrb r5, [r0, r1]
if(mask_new >= LV_OPA_MAX) return mask_act;
b794: 2af9 cmp r2, #249 ; 0xf9
b796: d80a bhi.n b7ae <lv_draw_mask_line+0x58e>
if(mask_new <= LV_OPA_MIN) return 0;
b798: 2a05 cmp r2, #5
b79a: f67f af05 bls.w b5a8 <lv_draw_mask_line+0x388>
return LV_MATH_UDIV255(mask_act * mask_new);// >> 8);
b79e: fb02 f205 mul.w r2, r2, r5
b7a2: eb02 2502 add.w r5, r2, r2, lsl #8
b7a6: eb02 12c5 add.w r2, r2, r5, lsl #7
b7aa: f3c2 55c7 ubfx r5, r2, #23, #8
mask_buf[k] = mask_mix(mask_buf[k], m);
b7ae: 5445 strb r5, [r0, r1]
if(p->inv) {
b7b0: f894 2028 ldrb.w r2, [r4, #40] ; 0x28
b7b4: f012 0f02 tst.w r2, #2
b7b8: f43f aeff beq.w b5ba <lv_draw_mask_line+0x39a>
if(k > len) k = len;
b7bc: 428b cmp r3, r1
b7be: f6bf aef5 bge.w b5ac <lv_draw_mask_line+0x38c>
return LV_DRAW_MASK_RES_CHANGED;
b7c2: 2002 movs r0, #2
b7c4: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
b7c8: 00012b37 .word 0x00012b37
0000b7cc <lv_draw_mask_radius>:
{
b7cc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
b7d0: b08d sub sp, #52 ; 0x34
b7d2: 9d16 ldr r5, [sp, #88] ; 0x58
bool outer = p->cfg.outer;
b7d4: 7cae ldrb r6, [r5, #18]
b7d6: f006 0601 and.w r6, r6, #1
int32_t radius = p->cfg.radius;
b7da: f9b5 8010 ldrsh.w r8, [r5, #16]
b7de: 1dec adds r4, r5, #7
b7e0: f105 090f add.w r9, r5, #15
uint8_t * d8 = (uint8_t *)dst;
b7e4: f10d 0e28 add.w lr, sp, #40 ; 0x28
*d8 = *s8;
b7e8: f814 7f01 ldrb.w r7, [r4, #1]!
b7ec: f80e 7b01 strb.w r7, [lr], #1
while(len) {
b7f0: 454c cmp r4, r9
b7f2: d1f9 bne.n b7e8 <lv_draw_mask_radius+0x1c>
if(outer == false) {
b7f4: 2e00 cmp r6, #0
b7f6: d13d bne.n b874 <lv_draw_mask_radius+0xa8>
if(abs_y < rect.y1 || abs_y > rect.y2) {
b7f8: f9bd 402a ldrsh.w r4, [sp, #42] ; 0x2a
b7fc: 4294 cmp r4, r2
b7fe: f300 822b bgt.w bc58 <lv_draw_mask_radius+0x48c>
b802: f9bd 402e ldrsh.w r4, [sp, #46] ; 0x2e
b806: 4294 cmp r4, r2
b808: f2c0 822a blt.w bc60 <lv_draw_mask_radius+0x494>
b80c: 469b mov fp, r3
b80e: 460f mov r7, r1
b810: 9002 str r0, [sp, #8]
if((abs_x >= rect.x1 + radius && abs_x + len <= rect.x2 - radius) ||
b812: f9bd 9028 ldrsh.w r9, [sp, #40] ; 0x28
b816: eb08 0309 add.w r3, r8, r9
b81a: 4299 cmp r1, r3
b81c: db06 blt.n b82c <lv_draw_mask_radius+0x60>
b81e: 4459 add r1, fp
b820: f9bd 302c ldrsh.w r3, [sp, #44] ; 0x2c
b824: eba3 0308 sub.w r3, r3, r8
b828: 4299 cmp r1, r3
b82a: dd0b ble.n b844 <lv_draw_mask_radius+0x78>
(abs_y >= rect.y1 + radius && abs_y <= rect.y2 - radius)) {
b82c: f9bd 302a ldrsh.w r3, [sp, #42] ; 0x2a
b830: eb03 0108 add.w r1, r3, r8
if((abs_x >= rect.x1 + radius && abs_x + len <= rect.x2 - radius) ||
b834: 428a cmp r2, r1
b836: db53 blt.n b8e0 <lv_draw_mask_radius+0x114>
(abs_y >= rect.y1 + radius && abs_y <= rect.y2 - radius)) {
b838: f9bd 102e ldrsh.w r1, [sp, #46] ; 0x2e
b83c: eba1 0108 sub.w r1, r1, r8
b840: 428a cmp r2, r1
b842: dc4d bgt.n b8e0 <lv_draw_mask_radius+0x114>
if(outer == false) {
b844: bb86 cbnz r6, b8a8 <lv_draw_mask_radius+0xdc>
int32_t last = rect.x1 - abs_x;
b846: eba9 0407 sub.w r4, r9, r7
if(last > len) return LV_DRAW_MASK_RES_TRANSP;
b84a: 455c cmp r4, fp
b84c: f300 820c bgt.w bc68 <lv_draw_mask_radius+0x49c>
if(last >= 0) {
b850: 2c00 cmp r4, #0
b852: db03 blt.n b85c <lv_draw_mask_radius+0x90>
_lv_memset_00(&mask_buf[0], last);
b854: 4621 mov r1, r4
b856: 9802 ldr r0, [sp, #8]
b858: 4b9f ldr r3, [pc, #636] ; (bad8 <lv_draw_mask_radius+0x30c>)
b85a: 4798 blx r3
int32_t first = rect.x2 - abs_x + 1;
b85c: f9bd 002c ldrsh.w r0, [sp, #44] ; 0x2c
b860: 1bc0 subs r0, r0, r7
b862: 3001 adds r0, #1
if(first <= 0) return LV_DRAW_MASK_RES_TRANSP;
b864: 2800 cmp r0, #0
b866: f340 8201 ble.w bc6c <lv_draw_mask_radius+0x4a0>
else if(first < len) {
b86a: 4583 cmp fp, r0
b86c: dc0d bgt.n b88a <lv_draw_mask_radius+0xbe>
if(last == 0 && first == len) return LV_DRAW_MASK_RES_FULL_COVER;
b86e: b1bc cbz r4, b8a0 <lv_draw_mask_radius+0xd4>
else return LV_DRAW_MASK_RES_CHANGED;
b870: 2002 movs r0, #2
b872: e1f2 b.n bc5a <lv_draw_mask_radius+0x48e>
if(abs_y < rect.y1 || abs_y > rect.y2) {
b874: f9bd 402a ldrsh.w r4, [sp, #42] ; 0x2a
b878: 4294 cmp r4, r2
b87a: f300 81f3 bgt.w bc64 <lv_draw_mask_radius+0x498>
b87e: f9bd 402e ldrsh.w r4, [sp, #46] ; 0x2e
b882: 4294 cmp r4, r2
b884: dac2 bge.n b80c <lv_draw_mask_radius+0x40>
return LV_DRAW_MASK_RES_FULL_COVER;
b886: 2001 movs r0, #1
b888: e1e7 b.n bc5a <lv_draw_mask_radius+0x48e>
_lv_memset_00(&mask_buf[first], len - first);
b88a: ebab 0100 sub.w r1, fp, r0
b88e: 9b02 ldr r3, [sp, #8]
b890: 4403 add r3, r0
b892: 4618 mov r0, r3
b894: 4b90 ldr r3, [pc, #576] ; (bad8 <lv_draw_mask_radius+0x30c>)
b896: 4798 blx r3
if(last == 0 && first == len) return LV_DRAW_MASK_RES_FULL_COVER;
b898: 2c00 cmp r4, #0
b89a: d1e9 bne.n b870 <lv_draw_mask_radius+0xa4>
else return LV_DRAW_MASK_RES_CHANGED;
b89c: 2002 movs r0, #2
b89e: e1dc b.n bc5a <lv_draw_mask_radius+0x48e>
if(last == 0 && first == len) return LV_DRAW_MASK_RES_FULL_COVER;
b8a0: 4583 cmp fp, r0
b8a2: d1e5 bne.n b870 <lv_draw_mask_radius+0xa4>
b8a4: 2001 movs r0, #1
b8a6: e1d8 b.n bc5a <lv_draw_mask_radius+0x48e>
int32_t first = rect.x1 - abs_x;
b8a8: eba9 0007 sub.w r0, r9, r7
b8ac: ea20 70e0 bic.w r0, r0, r0, asr #31
if(first <= len) {
b8b0: 4558 cmp r0, fp
b8b2: dd01 ble.n b8b8 <lv_draw_mask_radius+0xec>
return LV_DRAW_MASK_RES_CHANGED;
b8b4: 2002 movs r0, #2
b8b6: e1d0 b.n bc5a <lv_draw_mask_radius+0x48e>
int32_t last = rect.x2 - abs_x - first + 1;
b8b8: f9bd 102c ldrsh.w r1, [sp, #44] ; 0x2c
b8bc: 1bc9 subs r1, r1, r7
b8be: 1a09 subs r1, r1, r0
b8c0: 3101 adds r1, #1
if(first + last > len) last = len - first;
b8c2: 1843 adds r3, r0, r1
b8c4: 459b cmp fp, r3
b8c6: bfb8 it lt
b8c8: ebab 0100 sublt.w r1, fp, r0
if(last >= 0) {
b8cc: 2900 cmp r1, #0
b8ce: f2c0 81cf blt.w bc70 <lv_draw_mask_radius+0x4a4>
_lv_memset_00(&mask_buf[first], last);
b8d2: 9b02 ldr r3, [sp, #8]
b8d4: 4403 add r3, r0
b8d6: 4618 mov r0, r3
b8d8: 4b7f ldr r3, [pc, #508] ; (bad8 <lv_draw_mask_radius+0x30c>)
b8da: 4798 blx r3
return LV_DRAW_MASK_RES_CHANGED;
b8dc: 2002 movs r0, #2
b8de: e1bc b.n bc5a <lv_draw_mask_radius+0x48e>
b8e0: f9bd a02c ldrsh.w sl, [sp, #44] ; 0x2c
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
b8e4: b29b uxth r3, r3
b8e6: f8bd 102e ldrh.w r1, [sp, #46] ; 0x2e
b8ea: 3101 adds r1, #1
b8ec: 1ac9 subs r1, r1, r3
int32_t h = lv_area_get_height(&rect);
b8ee: b209 sxth r1, r1
abs_y -= rect.y1;
b8f0: 1ad2 subs r2, r2, r3
uint32_t r2 = p->cfg.radius * p->cfg.radius;
b8f2: fb08 f308 mul.w r3, r8, r8
b8f6: 9301 str r3, [sp, #4]
if(abs_y < radius || abs_y > h - radius - 1) {
b8f8: b212 sxth r2, r2
b8fa: 4590 cmp r8, r2
b8fc: f300 81d1 bgt.w bca2 <lv_draw_mask_radius+0x4d6>
b900: eba1 0308 sub.w r3, r1, r8
b904: 3b01 subs r3, #1
b906: 429a cmp r2, r3
b908: f300 81b4 bgt.w bc74 <lv_draw_mask_radius+0x4a8>
return LV_DRAW_MASK_RES_CHANGED;
b90c: 2002 movs r0, #2
b90e: e1a4 b.n bc5a <lv_draw_mask_radius+0x48e>
x0.f = p->y_prev_x.f;
b910: 8b6b ldrh r3, [r5, #26]
b912: f8ad 301a strh.w r3, [sp, #26]
x0.i = p->y_prev_x.i;
b916: 8b2b ldrh r3, [r5, #24]
b918: f8ad 3018 strh.w r3, [sp, #24]
b91c: e1d6 b.n bccc <lv_draw_mask_radius+0x500>
_lv_sqrt(r2 - ((y - 1) * (y - 1)), &x1, sqrt_mask);
b91e: 9a04 ldr r2, [sp, #16]
b920: a907 add r1, sp, #28
b922: 9b01 ldr r3, [sp, #4]
b924: fb00 3010 mls r0, r0, r0, r3
b928: 4b6c ldr r3, [pc, #432] ; (badc <lv_draw_mask_radius+0x310>)
b92a: 4798 blx r3
_lv_sqrt(r2 - (y * y), &x0, sqrt_mask);
b92c: 9a04 ldr r2, [sp, #16]
b92e: a906 add r1, sp, #24
b930: 9b01 ldr r3, [sp, #4]
b932: fb04 3014 mls r0, r4, r4, r3
b936: 4b69 ldr r3, [pc, #420] ; (badc <lv_draw_mask_radius+0x310>)
b938: 4798 blx r3
p->y_prev = y;
b93a: 616c str r4, [r5, #20]
p->y_prev_x.f = x0.f;
b93c: f8bd 301a ldrh.w r3, [sp, #26]
b940: 836b strh r3, [r5, #26]
p->y_prev_x.i = x0.i;
b942: f8bd 3018 ldrh.w r3, [sp, #24]
b946: 832b strh r3, [r5, #24]
b948: e1d1 b.n bcee <lv_draw_mask_radius+0x522>
if(x0.i == x1.i - 1 && x1.f == 0) {
b94a: f8bd 101e ldrh.w r1, [sp, #30]
b94e: 2900 cmp r1, #0
b950: f040 81d5 bne.w bcfe <lv_draw_mask_radius+0x532>
x1.i--;
b954: 3a01 subs r2, #1
b956: f8ad 201c strh.w r2, [sp, #28]
x1.f = 0xFF;
b95a: 22ff movs r2, #255 ; 0xff
b95c: f8ad 201e strh.w r2, [sp, #30]
b960: e1cd b.n bcfe <lv_draw_mask_radius+0x532>
lv_opa_t m = (x0.f + x1.f) >> 1;
b962: f8bd 201a ldrh.w r2, [sp, #26]
b966: f8bd 101e ldrh.w r1, [sp, #30]
b96a: 440a add r2, r1
b96c: f3c2 0247 ubfx r2, r2, #1, #8
if(outer) m = 255 - m;
b970: b10e cbz r6, b976 <lv_draw_mask_radius+0x1aa>
b972: 43d2 mvns r2, r2
b974: b2d2 uxtb r2, r2
int32_t ofs = radius - x0.i - 1;
b976: eba8 0303 sub.w r3, r8, r3
b97a: 3b01 subs r3, #1
if(kl >= 0 && kl < len) {
b97c: 18f9 adds r1, r7, r3
b97e: d411 bmi.n b9a4 <lv_draw_mask_radius+0x1d8>
b980: 4559 cmp r1, fp
b982: da0f bge.n b9a4 <lv_draw_mask_radius+0x1d8>
mask_buf[kl] = mask_mix(mask_buf[kl], m);
b984: 9802 ldr r0, [sp, #8]
b986: 5c40 ldrb r0, [r0, r1]
if(mask_new >= LV_OPA_MAX) return mask_act;
b988: 2af9 cmp r2, #249 ; 0xf9
b98a: d809 bhi.n b9a0 <lv_draw_mask_radius+0x1d4>
if(mask_new <= LV_OPA_MIN) return 0;
b98c: 2a05 cmp r2, #5
b98e: d935 bls.n b9fc <lv_draw_mask_radius+0x230>
return LV_MATH_UDIV255(mask_act * mask_new);// >> 8);
b990: fb02 f000 mul.w r0, r2, r0
b994: eb00 2400 add.w r4, r0, r0, lsl #8
b998: eb00 10c4 add.w r0, r0, r4, lsl #7
b99c: f3c0 50c7 ubfx r0, r0, #23, #8
mask_buf[kl] = mask_mix(mask_buf[kl], m);
b9a0: 9c02 ldr r4, [sp, #8]
b9a2: 5460 strb r0, [r4, r1]
int32_t kr = k + (w - ofs - 1);
b9a4: eba9 0303 sub.w r3, r9, r3
b9a8: 3b01 subs r3, #1
if(kr >= 0 && kr < len) {
b9aa: 19df adds r7, r3, r7
b9ac: d411 bmi.n b9d2 <lv_draw_mask_radius+0x206>
b9ae: 455f cmp r7, fp
b9b0: da0f bge.n b9d2 <lv_draw_mask_radius+0x206>
mask_buf[kr] = mask_mix(mask_buf[kr], m);
b9b2: 9b02 ldr r3, [sp, #8]
b9b4: 5ddb ldrb r3, [r3, r7]
if(mask_new >= LV_OPA_MAX) return mask_act;
b9b6: 2af9 cmp r2, #249 ; 0xf9
b9b8: d809 bhi.n b9ce <lv_draw_mask_radius+0x202>
if(mask_new <= LV_OPA_MIN) return 0;
b9ba: 2a05 cmp r2, #5
b9bc: d920 bls.n ba00 <lv_draw_mask_radius+0x234>
return LV_MATH_UDIV255(mask_act * mask_new);// >> 8);
b9be: fb02 f203 mul.w r2, r2, r3
b9c2: eb02 2302 add.w r3, r2, r2, lsl #8
b9c6: eb02 12c3 add.w r2, r2, r3, lsl #7
b9ca: f3c2 53c7 ubfx r3, r2, #23, #8
mask_buf[kr] = mask_mix(mask_buf[kr], m);
b9ce: 9a02 ldr r2, [sp, #8]
b9d0: 55d3 strb r3, [r2, r7]
if(outer == false) {
b9d2: b1be cbz r6, ba04 <lv_draw_mask_radius+0x238>
kl++;
b9d4: 1c48 adds r0, r1, #1
b9d6: ea20 70e0 bic.w r0, r0, r0, asr #31
if(len_tmp + first > len) len_tmp = len - first;
b9da: 455f cmp r7, fp
int32_t len_tmp = kr - first;
b9dc: bfd4 ite le
b9de: 1a39 suble r1, r7, r0
if(len_tmp + first > len) len_tmp = len - first;
b9e0: ebab 0100 subgt.w r1, fp, r0
if(first < len && len_tmp >= 0) {
b9e4: 4558 cmp r0, fp
b9e6: f280 8119 bge.w bc1c <lv_draw_mask_radius+0x450>
b9ea: 2900 cmp r1, #0
b9ec: f2c0 8116 blt.w bc1c <lv_draw_mask_radius+0x450>
_lv_memset_00(&mask_buf[first], len_tmp);
b9f0: 9b02 ldr r3, [sp, #8]
b9f2: 4403 add r3, r0
b9f4: 4618 mov r0, r3
b9f6: 4b38 ldr r3, [pc, #224] ; (bad8 <lv_draw_mask_radius+0x30c>)
b9f8: 4798 blx r3
b9fa: e10f b.n bc1c <lv_draw_mask_radius+0x450>
if(mask_new <= LV_OPA_MIN) return 0;
b9fc: 2000 movs r0, #0
b9fe: e7cf b.n b9a0 <lv_draw_mask_radius+0x1d4>
ba00: 2300 movs r3, #0
ba02: e7e4 b.n b9ce <lv_draw_mask_radius+0x202>
if(kl > len) {
ba04: 4559 cmp r1, fp
ba06: f300 8125 bgt.w bc54 <lv_draw_mask_radius+0x488>
if(kl >= 0) {
ba0a: 2900 cmp r1, #0
ba0c: db02 blt.n ba14 <lv_draw_mask_radius+0x248>
_lv_memset_00(&mask_buf[0], kl);
ba0e: 9802 ldr r0, [sp, #8]
ba10: 4b31 ldr r3, [pc, #196] ; (bad8 <lv_draw_mask_radius+0x30c>)
ba12: 4798 blx r3
if(kr < 0) {
ba14: 3701 adds r7, #1
ba16: f100 811d bmi.w bc54 <lv_draw_mask_radius+0x488>
if(kr <= len) {
ba1a: 455f cmp r7, fp
ba1c: f300 80fe bgt.w bc1c <lv_draw_mask_radius+0x450>
_lv_memset_00(&mask_buf[kr], len - kr);
ba20: ebab 0107 sub.w r1, fp, r7
ba24: 9b02 ldr r3, [sp, #8]
ba26: 443b add r3, r7
ba28: 4618 mov r0, r3
ba2a: 4b2b ldr r3, [pc, #172] ; (bad8 <lv_draw_mask_radius+0x30c>)
ba2c: 4798 blx r3
ba2e: e0f5 b.n bc1c <lv_draw_mask_radius+0x450>
_lv_sqrt(r2 - (i * i), &y_next, sqrt_mask);
ba30: 9a04 ldr r2, [sp, #16]
ba32: a909 add r1, sp, #36 ; 0x24
ba34: 9b01 ldr r3, [sp, #4]
ba36: fb08 3018 mls r0, r8, r8, r3
ba3a: 4b28 ldr r3, [pc, #160] ; (badc <lv_draw_mask_radius+0x310>)
ba3c: 4798 blx r3
m = 255 - (((255 - x0.f) * (255 - y_next.f)) >> 9);
ba3e: f8bd 1026 ldrh.w r1, [sp, #38] ; 0x26
ba42: f8bd 301a ldrh.w r3, [sp, #26]
ba46: f1c3 02ff rsb r2, r3, #255 ; 0xff
ba4a: f1c1 03ff rsb r3, r1, #255 ; 0xff
ba4e: fb03 f302 mul.w r3, r3, r2
ba52: f3c3 2347 ubfx r3, r3, #9, #8
if(outer) m = 255 - m;
ba56: b90e cbnz r6, ba5c <lv_draw_mask_radius+0x290>
m = 255 - (((255 - x0.f) * (255 - y_next.f)) >> 9);
ba58: 43db mvns r3, r3
ba5a: b2db uxtb r3, r3
if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m);
ba5c: 9803 ldr r0, [sp, #12]
ba5e: 4602 mov r2, r0
ba60: 2800 cmp r0, #0
ba62: db11 blt.n ba88 <lv_draw_mask_radius+0x2bc>
ba64: 4558 cmp r0, fp
ba66: da0f bge.n ba88 <lv_draw_mask_radius+0x2bc>
ba68: 9c02 ldr r4, [sp, #8]
ba6a: 1820 adds r0, r4, r0
ba6c: 5ca2 ldrb r2, [r4, r2]
if(mask_new >= LV_OPA_MAX) return mask_act;
ba6e: 2bf9 cmp r3, #249 ; 0xf9
ba70: d809 bhi.n ba86 <lv_draw_mask_radius+0x2ba>
if(mask_new <= LV_OPA_MIN) return 0;
ba72: 2b05 cmp r3, #5
ba74: d929 bls.n baca <lv_draw_mask_radius+0x2fe>
return LV_MATH_UDIV255(mask_act * mask_new);// >> 8);
ba76: fb03 f202 mul.w r2, r3, r2
ba7a: eb02 2402 add.w r4, r2, r2, lsl #8
ba7e: eb02 12c4 add.w r2, r2, r4, lsl #7
ba82: f3c2 52c7 ubfx r2, r2, #23, #8
if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m);
ba86: 7002 strb r2, [r0, #0]
if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m);
ba88: f1ba 0f00 cmp.w sl, #0
ba8c: db13 blt.n bab6 <lv_draw_mask_radius+0x2ea>
ba8e: 45da cmp sl, fp
ba90: da11 bge.n bab6 <lv_draw_mask_radius+0x2ea>
ba92: 9c02 ldr r4, [sp, #8]
ba94: eb04 000a add.w r0, r4, sl
ba98: f814 200a ldrb.w r2, [r4, sl]
if(mask_new >= LV_OPA_MAX) return mask_act;
ba9c: 2bf9 cmp r3, #249 ; 0xf9
ba9e: d809 bhi.n bab4 <lv_draw_mask_radius+0x2e8>
if(mask_new <= LV_OPA_MIN) return 0;
baa0: 2b05 cmp r3, #5
baa2: d914 bls.n bace <lv_draw_mask_radius+0x302>
return LV_MATH_UDIV255(mask_act * mask_new);// >> 8);
baa4: fb03 f302 mul.w r3, r3, r2
baa8: eb03 2203 add.w r2, r3, r3, lsl #8
baac: eb03 13c2 add.w r3, r3, r2, lsl #7
bab0: f3c3 52c7 ubfx r2, r3, #23, #8
if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m);
bab4: 7002 strb r2, [r0, #0]
kl--;
bab6: 9b03 ldr r3, [sp, #12]
bab8: 3b01 subs r3, #1
baba: 9303 str r3, [sp, #12]
kr++;
babc: f10a 0a01 add.w sl, sl, #1
y_prev.f = y_next.f;
bac0: f8ad 1022 strh.w r1, [sp, #34] ; 0x22
i++;
bac4: f108 0801 add.w r8, r8, #1
bac8: e15e b.n bd88 <lv_draw_mask_radius+0x5bc>
if(mask_new <= LV_OPA_MIN) return 0;
baca: 2200 movs r2, #0
bacc: e7db b.n ba86 <lv_draw_mask_radius+0x2ba>
bace: 2200 movs r2, #0
bad0: e7f0 b.n bab4 <lv_draw_mask_radius+0x2e8>
bad2: 2700 movs r7, #0
bad4: e039 b.n bb4a <lv_draw_mask_radius+0x37e>
bad6: bf00 nop
bad8: 00012b37 .word 0x00012b37
badc: 0001231d .word 0x0001231d
bae0: 2700 movs r7, #0
if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m);
bae2: f80e 7008 strb.w r7, [lr, r8]
kl--;
bae6: 3801 subs r0, #1
kr++;
bae8: 3401 adds r4, #1
for(; i <= x1.i; i++) {
baea: 3101 adds r1, #1
y_prev.f = y_next.f;
baec: 461a mov r2, r3
for(; i <= x1.i; i++) {
baee: 9d01 ldr r5, [sp, #4]
baf0: 42a9 cmp r1, r5
baf2: d840 bhi.n bb76 <lv_draw_mask_radius+0x3aa>
*/
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);
baf4: eb09 1712 add.w r7, r9, r2, lsr #4
sqrt_approx(&y_next, &y_prev, r2 - (i * i));
baf8: fb01 a311 mls r3, r1, r1, sl
uint32_t raw2 = raw * raw;
bafc: fb07 fc07 mul.w ip, r7, r7
int32_t d = x - raw2;
bb00: ebcc 2303 rsb r3, ip, r3, lsl #8
d = (int32_t)d / (int32_t)(2 * raw) + raw;
bb04: ea4f 0c47 mov.w ip, r7, lsl #1
bb08: fb93 f3fc sdiv r3, r3, ip
bb0c: 441f add r7, r3
q->i = d >> 4;
bb0e: f3c7 1c0f ubfx ip, r7, #4, #16
q->f = (d & 0xF) << 4;
bb12: 013f lsls r7, r7, #4
bb14: f007 03f0 and.w r3, r7, #240 ; 0xf0
m = (y_prev.f + y_next.f) >> 1;
bb18: 441a add r2, r3
bb1a: f3c2 0247 ubfx r2, r2, #1, #8
if(outer) m = 255 - m;
bb1e: b10e cbz r6, bb24 <lv_draw_mask_radius+0x358>
bb20: 43d2 mvns r2, r2
bb22: b2d2 uxtb r2, r2
if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m);
bb24: 2800 cmp r0, #0
bb26: db12 blt.n bb4e <lv_draw_mask_radius+0x382>
bb28: 4583 cmp fp, r0
bb2a: dd10 ble.n bb4e <lv_draw_mask_radius+0x382>
bb2c: 4680 mov r8, r0
bb2e: f81e 7000 ldrb.w r7, [lr, r0]
if(mask_new >= LV_OPA_MAX) return mask_act;
bb32: 2af9 cmp r2, #249 ; 0xf9
bb34: d809 bhi.n bb4a <lv_draw_mask_radius+0x37e>
if(mask_new <= LV_OPA_MIN) return 0;
bb36: 2a05 cmp r2, #5
bb38: d9cb bls.n bad2 <lv_draw_mask_radius+0x306>
return LV_MATH_UDIV255(mask_act * mask_new);// >> 8);
bb3a: fb02 f507 mul.w r5, r2, r7
bb3e: eb05 2705 add.w r7, r5, r5, lsl #8
bb42: eb05 17c7 add.w r7, r5, r7, lsl #7
bb46: f3c7 57c7 ubfx r7, r7, #23, #8
if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m);
bb4a: f80e 7008 strb.w r7, [lr, r8]
if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m);
bb4e: 2c00 cmp r4, #0
bb50: dbc9 blt.n bae6 <lv_draw_mask_radius+0x31a>
bb52: 45a3 cmp fp, r4
bb54: ddc7 ble.n bae6 <lv_draw_mask_radius+0x31a>
bb56: 46a0 mov r8, r4
bb58: f81e 7004 ldrb.w r7, [lr, r4]
if(mask_new >= LV_OPA_MAX) return mask_act;
bb5c: 2af9 cmp r2, #249 ; 0xf9
bb5e: d8c0 bhi.n bae2 <lv_draw_mask_radius+0x316>
if(mask_new <= LV_OPA_MIN) return 0;
bb60: 2a05 cmp r2, #5
bb62: d9bd bls.n bae0 <lv_draw_mask_radius+0x314>
return LV_MATH_UDIV255(mask_act * mask_new);// >> 8);
bb64: fb02 f207 mul.w r2, r2, r7
bb68: eb02 2702 add.w r7, r2, r2, lsl #8
bb6c: eb02 17c7 add.w r7, r2, r7, lsl #7
bb70: f3c7 57c7 ubfx r7, r7, #23, #8
bb74: e7b5 b.n bae2 <lv_draw_mask_radius+0x316>
bb76: f8dd 8010 ldr.w r8, [sp, #16]
bb7a: f8dd a014 ldr.w sl, [sp, #20]
bb7e: 43ea mvns r2, r5
bb80: 4442 add r2, r8
bb82: 9903 ldr r1, [sp, #12]
bb84: 4411 add r1, r2
bb86: 9103 str r1, [sp, #12]
bb88: 3501 adds r5, #1
bb8a: 44aa add sl, r5
bb8c: ebaa 0a08 sub.w sl, sl, r8
bb90: f8ad 3022 strh.w r3, [sp, #34] ; 0x22
bb94: f8ad c024 strh.w ip, [sp, #36] ; 0x24
bb98: f8ad 3026 strh.w r3, [sp, #38] ; 0x26
if(y_prev.f) {
bb9c: f8bd 3022 ldrh.w r3, [sp, #34] ; 0x22
bba0: 2b00 cmp r3, #0
bba2: d03a beq.n bc1a <lv_draw_mask_radius+0x44e>
m = (y_prev.f * x1.f) >> 9;
bba4: f8bd 201e ldrh.w r2, [sp, #30]
bba8: fb03 f302 mul.w r3, r3, r2
bbac: f3c3 2347 ubfx r3, r3, #9, #8
if(outer) m = 255 - m;
bbb0: b10e cbz r6, bbb6 <lv_draw_mask_radius+0x3ea>
bbb2: 43db mvns r3, r3
bbb4: b2db uxtb r3, r3
if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m);
bbb6: 9a03 ldr r2, [sp, #12]
bbb8: 2a00 cmp r2, #0
bbba: db12 blt.n bbe2 <lv_draw_mask_radius+0x416>
bbbc: 4593 cmp fp, r2
bbbe: dd10 ble.n bbe2 <lv_draw_mask_radius+0x416>
bbc0: 9802 ldr r0, [sp, #8]
bbc2: 4601 mov r1, r0
bbc4: 4411 add r1, r2
bbc6: 5c82 ldrb r2, [r0, r2]
if(mask_new >= LV_OPA_MAX) return mask_act;
bbc8: 2bf9 cmp r3, #249 ; 0xf9
bbca: d809 bhi.n bbe0 <lv_draw_mask_radius+0x414>
if(mask_new <= LV_OPA_MIN) return 0;
bbcc: 2b05 cmp r3, #5
bbce: d927 bls.n bc20 <lv_draw_mask_radius+0x454>
return LV_MATH_UDIV255(mask_act * mask_new);// >> 8);
bbd0: fb03 f202 mul.w r2, r3, r2
bbd4: eb02 2002 add.w r0, r2, r2, lsl #8
bbd8: eb02 12c0 add.w r2, r2, r0, lsl #7
bbdc: f3c2 52c7 ubfx r2, r2, #23, #8
if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m);
bbe0: 700a strb r2, [r1, #0]
if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m);
bbe2: f1ba 0f00 cmp.w sl, #0
bbe6: db13 blt.n bc10 <lv_draw_mask_radius+0x444>
bbe8: 45d3 cmp fp, sl
bbea: dd11 ble.n bc10 <lv_draw_mask_radius+0x444>
bbec: 9802 ldr r0, [sp, #8]
bbee: eb00 010a add.w r1, r0, sl
bbf2: f810 200a ldrb.w r2, [r0, sl]
if(mask_new >= LV_OPA_MAX) return mask_act;
bbf6: 2bf9 cmp r3, #249 ; 0xf9
bbf8: d809 bhi.n bc0e <lv_draw_mask_radius+0x442>
if(mask_new <= LV_OPA_MIN) return 0;
bbfa: 2b05 cmp r3, #5
bbfc: d912 bls.n bc24 <lv_draw_mask_radius+0x458>
return LV_MATH_UDIV255(mask_act * mask_new);// >> 8);
bbfe: fb03 f302 mul.w r3, r3, r2
bc02: eb03 2203 add.w r2, r3, r3, lsl #8
bc06: eb03 13c2 add.w r3, r3, r2, lsl #7
bc0a: f3c3 52c7 ubfx r2, r3, #23, #8
if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m);
bc0e: 700a strb r2, [r1, #0]
kl--;
bc10: 9b03 ldr r3, [sp, #12]
bc12: 3b01 subs r3, #1
bc14: 9303 str r3, [sp, #12]
kr++;
bc16: f10a 0a01 add.w sl, sl, #1
if(outer == 0) {
bc1a: b12e cbz r6, bc28 <lv_draw_mask_radius+0x45c>
return LV_DRAW_MASK_RES_CHANGED;
bc1c: 2002 movs r0, #2
bc1e: e01c b.n bc5a <lv_draw_mask_radius+0x48e>
if(mask_new <= LV_OPA_MIN) return 0;
bc20: 2200 movs r2, #0
bc22: e7dd b.n bbe0 <lv_draw_mask_radius+0x414>
bc24: 2200 movs r2, #0
bc26: e7f2 b.n bc0e <lv_draw_mask_radius+0x442>
kl++;
bc28: 9903 ldr r1, [sp, #12]
bc2a: 3101 adds r1, #1
if(kl > len) {
bc2c: 4559 cmp r1, fp
bc2e: dc11 bgt.n bc54 <lv_draw_mask_radius+0x488>
if(kl >= 0) _lv_memset_00(&mask_buf[0], kl);
bc30: 2900 cmp r1, #0
bc32: db02 blt.n bc3a <lv_draw_mask_radius+0x46e>
bc34: 9802 ldr r0, [sp, #8]
bc36: 4b60 ldr r3, [pc, #384] ; (bdb8 <lv_draw_mask_radius+0x5ec>)
bc38: 4798 blx r3
if(kr < 0) {
bc3a: f1ba 0f00 cmp.w sl, #0
bc3e: db09 blt.n bc54 <lv_draw_mask_radius+0x488>
if(kr < len) _lv_memset_00(&mask_buf[kr], len - kr);
bc40: 45da cmp sl, fp
bc42: daeb bge.n bc1c <lv_draw_mask_radius+0x450>
bc44: ebab 010a sub.w r1, fp, sl
bc48: 9b02 ldr r3, [sp, #8]
bc4a: 4453 add r3, sl
bc4c: 4618 mov r0, r3
bc4e: 4b5a ldr r3, [pc, #360] ; (bdb8 <lv_draw_mask_radius+0x5ec>)
bc50: 4798 blx r3
bc52: e7e3 b.n bc1c <lv_draw_mask_radius+0x450>
return LV_DRAW_MASK_RES_TRANSP;
bc54: 2000 movs r0, #0
bc56: e000 b.n bc5a <lv_draw_mask_radius+0x48e>
return LV_DRAW_MASK_RES_TRANSP;
bc58: 2000 movs r0, #0
}
bc5a: b00d add sp, #52 ; 0x34
bc5c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
return LV_DRAW_MASK_RES_TRANSP;
bc60: 2000 movs r0, #0
bc62: e7fa b.n bc5a <lv_draw_mask_radius+0x48e>
return LV_DRAW_MASK_RES_FULL_COVER;
bc64: 2001 movs r0, #1
bc66: e7f8 b.n bc5a <lv_draw_mask_radius+0x48e>
if(last > len) return LV_DRAW_MASK_RES_TRANSP;
bc68: 2000 movs r0, #0
bc6a: e7f6 b.n bc5a <lv_draw_mask_radius+0x48e>
if(first <= 0) return LV_DRAW_MASK_RES_TRANSP;
bc6c: 2000 movs r0, #0
bc6e: e7f4 b.n bc5a <lv_draw_mask_radius+0x48e>
return LV_DRAW_MASK_RES_CHANGED;
bc70: 2002 movs r0, #2
bc72: e7f2 b.n bc5a <lv_draw_mask_radius+0x48e>
if(radius <= 256) sqrt_mask = 0x800;
bc74: f5b8 7f80 cmp.w r8, #256 ; 0x100
bc78: bfd4 ite le
bc7a: f44f 6300 movle.w r3, #2048 ; 0x800
bc7e: f44f 4300 movgt.w r3, #32768 ; 0x8000
bc82: 9304 str r3, [sp, #16]
y = radius - (h - abs_y) + 1;
bc84: 1a89 subs r1, r1, r2
bc86: eba8 0001 sub.w r0, r8, r1
bc8a: 1c44 adds r4, r0, #1
if((y - 1) == p->y_prev) {
bc8c: 696b ldr r3, [r5, #20]
bc8e: 4298 cmp r0, r3
bc90: f47f ae45 bne.w b91e <lv_draw_mask_radius+0x152>
x1.f = p->y_prev_x.f;
bc94: 8b6b ldrh r3, [r5, #26]
bc96: f8ad 301e strh.w r3, [sp, #30]
x1.i = p->y_prev_x.i;
bc9a: 8b2b ldrh r3, [r5, #24]
bc9c: f8ad 301c strh.w r3, [sp, #28]
bca0: e644 b.n b92c <lv_draw_mask_radius+0x160>
if(radius <= 256) sqrt_mask = 0x800;
bca2: f5b8 7f80 cmp.w r8, #256 ; 0x100
bca6: bfd4 ite le
bca8: f44f 6300 movle.w r3, #2048 ; 0x800
bcac: f44f 4300 movgt.w r3, #32768 ; 0x8000
bcb0: 9304 str r3, [sp, #16]
y = radius - abs_y;
bcb2: eba8 0402 sub.w r4, r8, r2
if(y == p->y_prev) {
bcb6: 696b ldr r3, [r5, #20]
bcb8: 429c cmp r4, r3
bcba: f43f ae29 beq.w b910 <lv_draw_mask_radius+0x144>
_lv_sqrt(r2 - (y * y), &x0, sqrt_mask);
bcbe: 9a04 ldr r2, [sp, #16]
bcc0: a906 add r1, sp, #24
bcc2: 9b01 ldr r3, [sp, #4]
bcc4: fb04 3014 mls r0, r4, r4, r3
bcc8: 4b3c ldr r3, [pc, #240] ; (bdbc <lv_draw_mask_radius+0x5f0>)
bcca: 4798 blx r3
_lv_sqrt(r2 - ((y - 1) * (y - 1)), &x1, sqrt_mask);
bccc: 1e63 subs r3, r4, #1
bcce: 9a04 ldr r2, [sp, #16]
bcd0: a907 add r1, sp, #28
bcd2: 9303 str r3, [sp, #12]
bcd4: 9801 ldr r0, [sp, #4]
bcd6: fb03 0013 mls r0, r3, r3, r0
bcda: 4b38 ldr r3, [pc, #224] ; (bdbc <lv_draw_mask_radius+0x5f0>)
bcdc: 4798 blx r3
p->y_prev = y - 1;
bcde: 9b03 ldr r3, [sp, #12]
bce0: 616b str r3, [r5, #20]
p->y_prev_x.f = x1.f;
bce2: f8bd 301e ldrh.w r3, [sp, #30]
bce6: 836b strh r3, [r5, #26]
p->y_prev_x.i = x1.i;
bce8: f8bd 301c ldrh.w r3, [sp, #28]
bcec: 832b strh r3, [r5, #24]
if(x0.i == x1.i - 1 && x1.f == 0) {
bcee: f8bd 3018 ldrh.w r3, [sp, #24]
bcf2: f8bd 201c ldrh.w r2, [sp, #28]
bcf6: 1e51 subs r1, r2, #1
bcf8: 428b cmp r3, r1
bcfa: f43f ae26 beq.w b94a <lv_draw_mask_radius+0x17e>
int32_t k = rect.x1 - abs_x; /*First relevant coordinate on the of the mask*/
bcfe: eba9 0707 sub.w r7, r9, r7
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
bd02: f10a 0a01 add.w sl, sl, #1
bd06: ebaa 0909 sub.w r9, sl, r9
int32_t w = lv_area_get_width(&rect);
bd0a: fa0f f989 sxth.w r9, r9
if(x0.i == x1.i) {
bd0e: f8bd 201c ldrh.w r2, [sp, #28]
bd12: 429a cmp r2, r3
bd14: f43f ae25 beq.w b962 <lv_draw_mask_radius+0x196>
int32_t ofs = radius - (x0.i + 1);
bd18: 3301 adds r3, #1
bd1a: eba8 0803 sub.w r8, r8, r3
int32_t kl = k + ofs;
bd1e: eb07 0308 add.w r3, r7, r8
bd22: 9303 str r3, [sp, #12]
int32_t kr = k + (w - ofs - 1);
bd24: eba9 0808 sub.w r8, r9, r8
bd28: f108 3aff add.w sl, r8, #4294967295
bd2c: 44ba add sl, r7
if(outer) {
bd2e: b186 cbz r6, bd52 <lv_draw_mask_radius+0x586>
int32_t first = kl + 1;
bd30: 1c58 adds r0, r3, #1
bd32: ea20 70e0 bic.w r0, r0, r0, asr #31
if(len_tmp + first > len) len_tmp = len - first;
bd36: 45da cmp sl, fp
int32_t len_tmp = kr - first;
bd38: bfd4 ite le
bd3a: ebaa 0100 suble.w r1, sl, r0
if(len_tmp + first > len) len_tmp = len - first;
bd3e: ebab 0100 subgt.w r1, fp, r0
if(first < len && len_tmp >= 0) {
bd42: 4558 cmp r0, fp
bd44: da05 bge.n bd52 <lv_draw_mask_radius+0x586>
bd46: 2900 cmp r1, #0
bd48: db03 blt.n bd52 <lv_draw_mask_radius+0x586>
_lv_memset_00(&mask_buf[first], len_tmp);
bd4a: 9b02 ldr r3, [sp, #8]
bd4c: 4418 add r0, r3
bd4e: 4b1a ldr r3, [pc, #104] ; (bdb8 <lv_draw_mask_radius+0x5ec>)
bd50: 4798 blx r3
uint32_t i = x0.i + 1;
bd52: f8bd 0018 ldrh.w r0, [sp, #24]
bd56: f100 0801 add.w r8, r0, #1
_lv_sqrt(r2 - (x0.i * x0.i), &y_prev, sqrt_mask);
bd5a: 9a04 ldr r2, [sp, #16]
bd5c: a908 add r1, sp, #32
bd5e: 9b01 ldr r3, [sp, #4]
bd60: fb00 3010 mls r0, r0, r0, r3
bd64: 4b15 ldr r3, [pc, #84] ; (bdbc <lv_draw_mask_radius+0x5f0>)
bd66: 4798 blx r3
if(y_prev.f == 0) {
bd68: f8bd 3022 ldrh.w r3, [sp, #34] ; 0x22
bd6c: b93b cbnz r3, bd7e <lv_draw_mask_radius+0x5b2>
y_prev.i--;
bd6e: f8bd 3020 ldrh.w r3, [sp, #32]
bd72: 3b01 subs r3, #1
bd74: f8ad 3020 strh.w r3, [sp, #32]
y_prev.f = 0xFF;
bd78: 23ff movs r3, #255 ; 0xff
bd7a: f8ad 3022 strh.w r3, [sp, #34] ; 0x22
if(y_prev.i >= y) {
bd7e: f8bd 3020 ldrh.w r3, [sp, #32]
bd82: 429c cmp r4, r3
bd84: f77f ae54 ble.w ba30 <lv_draw_mask_radius+0x264>
for(; i <= x1.i; i++) {
bd88: f8bd 501c ldrh.w r5, [sp, #28]
bd8c: 45a8 cmp r8, r5
bd8e: f63f af05 bhi.w bb9c <lv_draw_mask_radius+0x3d0>
uint32_t raw = (ref->i << 4) + (ref->f >> 4);
bd92: f8bd 9020 ldrh.w r9, [sp, #32]
bd96: ea4f 1909 mov.w r9, r9, lsl #4
bd9a: f8bd 2022 ldrh.w r2, [sp, #34] ; 0x22
bd9e: 4641 mov r1, r8
bda0: 4654 mov r4, sl
bda2: 9803 ldr r0, [sp, #12]
if(mask_new <= LV_OPA_MIN) return 0;
bda4: f8cd 8010 str.w r8, [sp, #16]
bda8: f8cd a014 str.w sl, [sp, #20]
bdac: f8dd a004 ldr.w sl, [sp, #4]
bdb0: 9501 str r5, [sp, #4]
bdb2: f8dd e008 ldr.w lr, [sp, #8]
bdb6: e69d b.n baf4 <lv_draw_mask_radius+0x328>
bdb8: 00012b37 .word 0x00012b37
bdbc: 0001231d .word 0x0001231d
0000bdc0 <lv_draw_mask_add>:
{
bdc0: b510 push {r4, lr}
bdc2: b082 sub sp, #8
if(LV_GC_ROOT(_lv_draw_mask_list[i]).param == NULL) break;
bdc4: 4b10 ldr r3, [pc, #64] ; (be08 <lv_draw_mask_add+0x48>)
bdc6: 681b ldr r3, [r3, #0]
bdc8: b19b cbz r3, bdf2 <lv_draw_mask_add+0x32>
bdca: 4a0f ldr r2, [pc, #60] ; (be08 <lv_draw_mask_add+0x48>)
for(i = 0; i < _LV_MASK_MAX_NUM; i++) {
bdcc: 2301 movs r3, #1
if(LV_GC_ROOT(_lv_draw_mask_list[i]).param == NULL) break;
bdce: 6894 ldr r4, [r2, #8]
bdd0: b184 cbz r4, bdf4 <lv_draw_mask_add+0x34>
for(i = 0; i < _LV_MASK_MAX_NUM; i++) {
bdd2: 3301 adds r3, #1
bdd4: b2db uxtb r3, r3
bdd6: 3208 adds r2, #8
bdd8: 2b10 cmp r3, #16
bdda: d1f8 bne.n bdce <lv_draw_mask_add+0xe>
LV_LOG_WARN("lv_mask_add: no place to add the mask");
bddc: 4b0b ldr r3, [pc, #44] ; (be0c <lv_draw_mask_add+0x4c>)
bdde: 9300 str r3, [sp, #0]
bde0: 4b0b ldr r3, [pc, #44] ; (be10 <lv_draw_mask_add+0x50>)
bde2: 2257 movs r2, #87 ; 0x57
bde4: 490b ldr r1, [pc, #44] ; (be14 <lv_draw_mask_add+0x54>)
bde6: 2002 movs r0, #2
bde8: 4c0b ldr r4, [pc, #44] ; (be18 <lv_draw_mask_add+0x58>)
bdea: 47a0 blx r4
return LV_MASK_ID_INV;
bdec: f04f 30ff mov.w r0, #4294967295
bdf0: e007 b.n be02 <lv_draw_mask_add+0x42>
for(i = 0; i < _LV_MASK_MAX_NUM; i++) {
bdf2: 2300 movs r3, #0
LV_GC_ROOT(_lv_draw_mask_list[i]).param = param;
bdf4: 4a04 ldr r2, [pc, #16] ; (be08 <lv_draw_mask_add+0x48>)
bdf6: f842 0033 str.w r0, [r2, r3, lsl #3]
LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id = custom_id;
bdfa: eb02 02c3 add.w r2, r2, r3, lsl #3
bdfe: 6051 str r1, [r2, #4]
return i;
be00: b218 sxth r0, r3
}
be02: b002 add sp, #8
be04: bd10 pop {r4, pc}
be06: bf00 nop
be08: 20006d6c .word 0x20006d6c
be0c: 00025024 .word 0x00025024
be10: 00024fc8 .word 0x00024fc8
be14: 00024ff4 .word 0x00024ff4
be18: 0001225d .word 0x0001225d
0000be1c <lv_draw_mask_apply>:
{
be1c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
be20: b082 sub sp, #8
while(m->param) {
be22: 4c11 ldr r4, [pc, #68] ; (be68 <lv_draw_mask_apply+0x4c>)
be24: 6824 ldr r4, [r4, #0]
be26: b1ec cbz r4, be64 <lv_draw_mask_apply+0x48>
be28: 469a mov sl, r3
be2a: 4691 mov r9, r2
be2c: 4688 mov r8, r1
be2e: 4607 mov r7, r0
be30: 4e0d ldr r6, [pc, #52] ; (be68 <lv_draw_mask_apply+0x4c>)
be32: 2500 movs r5, #0
res = dsc->cb(mask_buf, abs_x, abs_y, len, (void *)m->param);
be34: 9400 str r4, [sp, #0]
be36: 6824 ldr r4, [r4, #0]
be38: 4653 mov r3, sl
be3a: 464a mov r2, r9
be3c: 4641 mov r1, r8
be3e: 4638 mov r0, r7
be40: 47a0 blx r4
if(res == LV_DRAW_MASK_RES_TRANSP) return LV_DRAW_MASK_RES_TRANSP;
be42: 4604 mov r4, r0
be44: b150 cbz r0, be5c <lv_draw_mask_apply+0x40>
else if(res == LV_DRAW_MASK_RES_CHANGED) changed = true;
be46: 2802 cmp r0, #2
be48: bf08 it eq
be4a: 2501 moveq r5, #1
while(m->param) {
be4c: f856 4f08 ldr.w r4, [r6, #8]!
be50: 2c00 cmp r4, #0
be52: d1ef bne.n be34 <lv_draw_mask_apply+0x18>
return changed ? LV_DRAW_MASK_RES_CHANGED : LV_DRAW_MASK_RES_FULL_COVER;
be54: 2d00 cmp r5, #0
be56: bf14 ite ne
be58: 2402 movne r4, #2
be5a: 2401 moveq r4, #1
}
be5c: 4620 mov r0, r4
be5e: b002 add sp, #8
be60: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
return changed ? LV_DRAW_MASK_RES_CHANGED : LV_DRAW_MASK_RES_FULL_COVER;
be64: 2401 movs r4, #1
be66: e7f9 b.n be5c <lv_draw_mask_apply+0x40>
be68: 20006d6c .word 0x20006d6c
0000be6c <lv_draw_mask_remove_id>:
if(id != LV_MASK_ID_INV) {
be6c: f1b0 3fff cmp.w r0, #4294967295
be70: d00a beq.n be88 <lv_draw_mask_remove_id+0x1c>
p = LV_GC_ROOT(_lv_draw_mask_list[id]).param;
be72: 4b06 ldr r3, [pc, #24] ; (be8c <lv_draw_mask_remove_id+0x20>)
be74: f853 1030 ldr.w r1, [r3, r0, lsl #3]
LV_GC_ROOT(_lv_draw_mask_list[id]).param = NULL;
be78: 2200 movs r2, #0
be7a: f843 2030 str.w r2, [r3, r0, lsl #3]
LV_GC_ROOT(_lv_draw_mask_list[id]).custom_id = NULL;
be7e: eb03 03c0 add.w r3, r3, r0, lsl #3
be82: 605a str r2, [r3, #4]
}
be84: 4608 mov r0, r1
be86: 4770 bx lr
void * p = NULL;
be88: 2100 movs r1, #0
return p;
be8a: e7fb b.n be84 <lv_draw_mask_remove_id+0x18>
be8c: 20006d6c .word 0x20006d6c
0000be90 <lv_draw_mask_remove_custom>:
{
be90: b470 push {r4, r5, r6}
be92: 4b0b ldr r3, [pc, #44] ; (bec0 <lv_draw_mask_remove_custom+0x30>)
be94: 1d1a adds r2, r3, #4
be96: f103 0480 add.w r4, r3, #128 ; 0x80
void * p = NULL;
be9a: 2600 movs r6, #0
LV_GC_ROOT(_lv_draw_mask_list[i]).param = NULL;
be9c: 4635 mov r5, r6
be9e: e003 b.n bea8 <lv_draw_mask_remove_custom+0x18>
bea0: 3308 adds r3, #8
bea2: 3208 adds r2, #8
for(i = 0; i < _LV_MASK_MAX_NUM; i++) {
bea4: 42a3 cmp r3, r4
bea6: d008 beq.n beba <lv_draw_mask_remove_custom+0x2a>
if(LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id == custom_id) {
bea8: 6859 ldr r1, [r3, #4]
beaa: 4281 cmp r1, r0
beac: d1f8 bne.n bea0 <lv_draw_mask_remove_custom+0x10>
p = LV_GC_ROOT(_lv_draw_mask_list[i]).param;
beae: f852 6c04 ldr.w r6, [r2, #-4]
LV_GC_ROOT(_lv_draw_mask_list[i]).param = NULL;
beb2: f842 5c04 str.w r5, [r2, #-4]
LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id = NULL;
beb6: 605d str r5, [r3, #4]
beb8: e7f2 b.n bea0 <lv_draw_mask_remove_custom+0x10>
}
beba: 4630 mov r0, r6
bebc: bc70 pop {r4, r5, r6}
bebe: 4770 bx lr
bec0: 20006d6c .word 0x20006d6c
0000bec4 <lv_draw_mask_get_cnt>:
{
bec4: 2300 movs r3, #0
uint8_t cnt = 0;
bec6: 4618 mov r0, r3
if(LV_GC_ROOT(_lv_draw_mask_list[i]).param) cnt++;
bec8: 4906 ldr r1, [pc, #24] ; (bee4 <lv_draw_mask_get_cnt+0x20>)
beca: e002 b.n bed2 <lv_draw_mask_get_cnt+0xe>
becc: 3301 adds r3, #1
for(i = 0; i < _LV_MASK_MAX_NUM; i++) {
bece: 2b10 cmp r3, #16
bed0: d006 beq.n bee0 <lv_draw_mask_get_cnt+0x1c>
if(LV_GC_ROOT(_lv_draw_mask_list[i]).param) cnt++;
bed2: f851 2033 ldr.w r2, [r1, r3, lsl #3]
bed6: 2a00 cmp r2, #0
bed8: d0f8 beq.n becc <lv_draw_mask_get_cnt+0x8>
beda: 3001 adds r0, #1
bedc: b2c0 uxtb r0, r0
bede: e7f5 b.n becc <lv_draw_mask_get_cnt+0x8>
}
bee0: 4770 bx lr
bee2: bf00 nop
bee4: 20006d6c .word 0x20006d6c
0000bee8 <lv_draw_mask_line_points_init>:
{
bee8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
beec: 4604 mov r4, r0
beee: 460f mov r7, r1
bef0: 4615 mov r5, r2
bef2: 4698 mov r8, r3
bef4: f9bd 6018 ldrsh.w r6, [sp, #24]
_lv_memset_00(param, sizeof(lv_draw_mask_line_param_t));
bef8: 212c movs r1, #44 ; 0x2c
befa: 4b4a ldr r3, [pc, #296] ; (c024 <lv_draw_mask_line_points_init+0x13c>)
befc: 4798 blx r3
if(p1y > p2y) {
befe: 42b5 cmp r5, r6
bf00: dd05 ble.n bf0e <lv_draw_mask_line_points_init+0x26>
bf02: 462b mov r3, r5
p1y = t;
bf04: 4635 mov r5, r6
p2y = p1y;
bf06: 461e mov r6, r3
if(p1y > p2y) {
bf08: 463b mov r3, r7
p1x = t;
bf0a: 4647 mov r7, r8
p2x = p1x;
bf0c: 4698 mov r8, r3
param->cfg.p1.x = p1x;
bf0e: 8127 strh r7, [r4, #8]
param->cfg.p1.y = p1y;
bf10: 8165 strh r5, [r4, #10]
param->cfg.p2.x = p2x;
bf12: f8a4 800c strh.w r8, [r4, #12]
param->cfg.p2.y = p2y;
bf16: 81e6 strh r6, [r4, #14]
param->cfg.side = side;
bf18: 7c23 ldrb r3, [r4, #16]
bf1a: f89d 201c ldrb.w r2, [sp, #28]
bf1e: f362 0301 bfi r3, r2, #0, #2
bf22: 7423 strb r3, [r4, #16]
param->origo.x = p1x;
bf24: 8267 strh r7, [r4, #18]
param->origo.y = p1y;
bf26: 82a5 strh r5, [r4, #20]
param->flat = (LV_MATH_ABS(p2x - p1x) > LV_MATH_ABS(p2y - p1y)) ? 1 : 0;
bf28: eba8 0707 sub.w r7, r8, r7
bf2c: 1b75 subs r5, r6, r5
bf2e: ea87 71e7 eor.w r1, r7, r7, asr #31
bf32: eba1 71e7 sub.w r1, r1, r7, asr #31
bf36: ea85 73e5 eor.w r3, r5, r5, asr #31
bf3a: eba3 73e5 sub.w r3, r3, r5, asr #31
bf3e: 4299 cmp r1, r3
bf40: bfd4 ite le
bf42: 2100 movle r1, #0
bf44: 2101 movgt r1, #1
bf46: f894 2028 ldrb.w r2, [r4, #40] ; 0x28
bf4a: f361 0200 bfi r2, r1, #0, #1
bf4e: f884 2028 strb.w r2, [r4, #40] ; 0x28
param->yx_steep = 0;
bf52: 2100 movs r1, #0
bf54: 61e1 str r1, [r4, #28]
param->xy_steep = 0;
bf56: 61a1 str r1, [r4, #24]
param->dsc.cb = (lv_draw_mask_xcb_t)lv_draw_mask_line;
bf58: 4b33 ldr r3, [pc, #204] ; (c028 <lv_draw_mask_line_points_init+0x140>)
bf5a: 6023 str r3, [r4, #0]
param->dsc.type = LV_DRAW_MASK_TYPE_LINE;
bf5c: 7121 strb r1, [r4, #4]
if(param->flat) {
bf5e: f012 0f01 tst.w r2, #1
bf62: d025 beq.n bfb0 <lv_draw_mask_line_points_init+0xc8>
if(dx) {
bf64: b13f cbz r7, bf76 <lv_draw_mask_line_points_init+0x8e>
m = (1 << 20) / dx; /*m is multiplier to normalize y (upscaled by 1024)*/
bf66: f44f 1380 mov.w r3, #1048576 ; 0x100000
bf6a: fb93 f3f7 sdiv r3, r3, r7
param->yx_steep = (m * dy) >> 10;
bf6e: fb05 f303 mul.w r3, r5, r3
bf72: 129b asrs r3, r3, #10
bf74: 61e3 str r3, [r4, #28]
if(dy) {
bf76: b13d cbz r5, bf88 <lv_draw_mask_line_points_init+0xa0>
m = (1 << 20) / dy; /*m is multiplier to normalize x (upscaled by 1024)*/
bf78: f44f 1680 mov.w r6, #1048576 ; 0x100000
bf7c: fb96 f5f5 sdiv r5, r6, r5
param->xy_steep = (m * dx) >> 10;
bf80: fb07 f705 mul.w r7, r7, r5
bf84: 12bf asrs r7, r7, #10
bf86: 61a7 str r7, [r4, #24]
param->steep = param->yx_steep;
bf88: 69e3 ldr r3, [r4, #28]
bf8a: 6223 str r3, [r4, #32]
if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) param->inv = 0;
bf8c: 7c23 ldrb r3, [r4, #16]
bf8e: f013 0303 ands.w r3, r3, #3
bf92: d122 bne.n bfda <lv_draw_mask_line_points_init+0xf2>
bf94: f894 3028 ldrb.w r3, [r4, #40] ; 0x28
bf98: f36f 0341 bfc r3, #1, #1
bf9c: f884 3028 strb.w r3, [r4, #40] ; 0x28
param->spx = param->steep >> 2;
bfa0: 6a23 ldr r3, [r4, #32]
bfa2: 109a asrs r2, r3, #2
if(param->steep < 0) param->spx = -param->spx;
bfa4: 2b00 cmp r3, #0
bfa6: bfb8 it lt
bfa8: 4252 neglt r2, r2
bfaa: 6262 str r2, [r4, #36] ; 0x24
bfac: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(dy) {
bfb0: b13d cbz r5, bfc2 <lv_draw_mask_line_points_init+0xda>
m = (1 << 20) / dy; /*m is multiplier to normalize x (upscaled by 1024)*/
bfb2: f44f 1380 mov.w r3, #1048576 ; 0x100000
bfb6: fb93 f3f5 sdiv r3, r3, r5
param->xy_steep = (m * dx) >> 10;
bfba: fb07 f303 mul.w r3, r7, r3
bfbe: 129b asrs r3, r3, #10
bfc0: 61a3 str r3, [r4, #24]
if(dx) {
bfc2: b13f cbz r7, bfd4 <lv_draw_mask_line_points_init+0xec>
m = (1 << 20) / dx; /*m is multiplier to normalize x (upscaled by 1024)*/
bfc4: f44f 1880 mov.w r8, #1048576 ; 0x100000
bfc8: fb98 f7f7 sdiv r7, r8, r7
param->yx_steep = (m * dy) >> 10;
bfcc: fb05 f507 mul.w r5, r5, r7
bfd0: 12ad asrs r5, r5, #10
bfd2: 61e5 str r5, [r4, #28]
param->steep = param->xy_steep;
bfd4: 69a3 ldr r3, [r4, #24]
bfd6: 6223 str r3, [r4, #32]
bfd8: e7d8 b.n bf8c <lv_draw_mask_line_points_init+0xa4>
else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) param->inv = 1;
bfda: 2b01 cmp r3, #1
bfdc: d00f beq.n bffe <lv_draw_mask_line_points_init+0x116>
else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP) {
bfde: 2b02 cmp r3, #2
bfe0: d014 beq.n c00c <lv_draw_mask_line_points_init+0x124>
else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_BOTTOM) {
bfe2: 2b03 cmp r3, #3
bfe4: d1dc bne.n bfa0 <lv_draw_mask_line_points_init+0xb8>
if(param->steep > 0) param->inv = 0;
bfe6: 6a23 ldr r3, [r4, #32]
bfe8: 2b00 cmp r3, #0
bfea: f894 3028 ldrb.w r3, [r4, #40] ; 0x28
bfee: bfcc ite gt
bff0: f36f 0341 bfcgt r3, #1, #1
else param->inv = 1;
bff4: f043 0302 orrle.w r3, r3, #2
bff8: f884 3028 strb.w r3, [r4, #40] ; 0x28
bffc: e7d0 b.n bfa0 <lv_draw_mask_line_points_init+0xb8>
else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) param->inv = 1;
bffe: f894 3028 ldrb.w r3, [r4, #40] ; 0x28
c002: f043 0302 orr.w r3, r3, #2
c006: f884 3028 strb.w r3, [r4, #40] ; 0x28
c00a: e7c9 b.n bfa0 <lv_draw_mask_line_points_init+0xb8>
if(param->steep > 0) param->inv = 1;
c00c: 6a23 ldr r3, [r4, #32]
c00e: 2b00 cmp r3, #0
c010: f894 3028 ldrb.w r3, [r4, #40] ; 0x28
c014: bfcc ite gt
c016: f043 0302 orrgt.w r3, r3, #2
else param->inv = 0;
c01a: f36f 0341 bfcle r3, #1, #1
c01e: f884 3028 strb.w r3, [r4, #40] ; 0x28
c022: e7bd b.n bfa0 <lv_draw_mask_line_points_init+0xb8>
c024: 00012b37 .word 0x00012b37
c028: 0000b221 .word 0x0000b221
0000c02c <lv_draw_mask_radius_init>:
{
c02c: b470 push {r4, r5, r6}
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
c02e: 88cc ldrh r4, [r1, #6]
c030: 3401 adds r4, #1
c032: 884d ldrh r5, [r1, #2]
c034: 1b64 subs r4, r4, r5
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
c036: 888d ldrh r5, [r1, #4]
c038: 3501 adds r5, #1
c03a: 880e ldrh r6, [r1, #0]
c03c: 1bad subs r5, r5, r6
int32_t short_side = LV_MATH_MIN(w, h);
c03e: b224 sxth r4, r4
c040: b22d sxth r5, r5
c042: 42ac cmp r4, r5
c044: bfa8 it ge
c046: 462c movge r4, r5
if(radius > short_side >> 1) radius = short_side >> 1;
c048: 1064 asrs r4, r4, #1
c04a: 42a2 cmp r2, r4
c04c: bfc8 it gt
c04e: b222 sxthgt r2, r4
c050: 3901 subs r1, #1
c052: f100 0610 add.w r6, r0, #16
uint8_t * d8 = (uint8_t *)dst;
c056: f100 0408 add.w r4, r0, #8
*d8 = *s8;
c05a: f811 5f01 ldrb.w r5, [r1, #1]!
c05e: f804 5b01 strb.w r5, [r4], #1
while(len) {
c062: 42b4 cmp r4, r6
c064: d1f9 bne.n c05a <lv_draw_mask_radius_init+0x2e>
param->cfg.radius = radius;
c066: 8202 strh r2, [r0, #16]
param->cfg.outer = inv ? 1 : 0;
c068: 7c82 ldrb r2, [r0, #18]
c06a: f363 0200 bfi r2, r3, #0, #1
c06e: 7482 strb r2, [r0, #18]
param->dsc.cb = (lv_draw_mask_xcb_t)lv_draw_mask_radius;
c070: 4b05 ldr r3, [pc, #20] ; (c088 <lv_draw_mask_radius_init+0x5c>)
c072: 6003 str r3, [r0, #0]
param->dsc.type = LV_DRAW_MASK_TYPE_RADIUS;
c074: 2302 movs r3, #2
c076: 7103 strb r3, [r0, #4]
param->y_prev = INT32_MIN;
c078: f04f 4300 mov.w r3, #2147483648 ; 0x80000000
c07c: 6143 str r3, [r0, #20]
param->y_prev_x.f = 0;
c07e: 2300 movs r3, #0
c080: 8343 strh r3, [r0, #26]
param->y_prev_x.i = 0;
c082: 8303 strh r3, [r0, #24]
}
c084: bc70 pop {r4, r5, r6}
c086: 4770 bx lr
c088: 0000b7cd .word 0x0000b7cd
0000c08c <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)
{
c08c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
c090: b08b sub sp, #44 ; 0x2c
c092: 9006 str r0, [sp, #24]
c094: 4689 mov r9, r1
c096: 9207 str r2, [sp, #28]
int32_t s_left = sw >> 1;
c098: ea4f 0b61 mov.w fp, r1, asr #1
c09c: f8cd b008 str.w fp, [sp, #8]
int32_t s_right = (sw >> 1);
if((sw & 1) == 0) s_left--;
c0a0: f011 0f01 tst.w r1, #1
c0a4: bf06 itte eq
c0a6: f10b 33ff addeq.w r3, fp, #4294967295
c0aa: 9308 streq r3, [sp, #32]
int32_t s_left = sw >> 1;
c0ac: f8cd b020 strne.w fp, [sp, #32]
/*Horizontal blur*/
uint16_t * sh_ups_blur_buf = _lv_mem_buf_get(size * sizeof(uint16_t));
c0b0: 9c06 ldr r4, [sp, #24]
c0b2: 0067 lsls r7, r4, #1
c0b4: 4638 mov r0, r7
c0b6: 4b69 ldr r3, [pc, #420] ; (c25c <shadow_blur_corner+0x1d0>)
c0b8: 4798 blx r3
c0ba: 9005 str r0, [sp, #20]
int32_t x;
int32_t y;
uint16_t * sh_ups_tmp_buf = sh_ups_buf;
for(y = 0; y < size; y++) {
c0bc: 2c00 cmp r4, #0
c0be: f340 80be ble.w c23e <shadow_blur_corner+0x1b2>
int32_t v = sh_ups_tmp_buf[size - 1] * sw;
c0c2: 1eba subs r2, r7, #2
c0c4: 19c1 adds r1, r0, r7
c0c6: 9103 str r1, [sp, #12]
c0c8: 9d07 ldr r5, [sp, #28]
c0ca: f04f 0800 mov.w r8, #0
for(x = size - 1; x >= 0; x--) {
c0ce: f104 3aff add.w sl, r4, #4294967295
c0d2: 9908 ldr r1, [sp, #32]
c0d4: ebaa 0101 sub.w r1, sl, r1
c0d8: 9104 str r1, [sp, #16]
c0da: 4606 mov r6, r0
c0dc: f8cd b024 str.w fp, [sp, #36] ; 0x24
c0e0: 4693 mov fp, r2
int32_t v = sh_ups_tmp_buf[size - 1] * sw;
c0e2: f8cd 9004 str.w r9, [sp, #4]
c0e6: f835 300b ldrh.w r3, [r5, fp]
c0ea: fb09 f303 mul.w r3, r9, r3
for(x = size - 1; x >= 0; x--) {
c0ee: f1ba 0f00 cmp.w sl, #0
c0f2: db1b blt.n c12c <shadow_blur_corner+0xa0>
c0f4: 9a02 ldr r2, [sp, #8]
c0f6: eb02 010a add.w r1, r2, sl
c0fa: 9a04 ldr r2, [sp, #16]
c0fc: 3a01 subs r2, #1
c0fe: 9803 ldr r0, [sp, #12]
c100: f04f 0e00 mov.w lr, #0
sh_ups_blur_buf[x] = v;
c104: f820 3d02 strh.w r3, [r0, #-2]!
/*Forget the right pixel*/
uint32_t right_val = 0;
if(x + s_right < size) right_val = sh_ups_tmp_buf[x + s_right];
c108: 428c cmp r4, r1
c10a: bfcc ite gt
c10c: f835 c011 ldrhgt.w ip, [r5, r1, lsl #1]
c110: 46f4 movle ip, lr
v -= right_val;
c112: eba3 030c sub.w r3, r3, ip
/*Add the left pixel*/
uint32_t left_val;
if(x - s_left - 1 < 0) left_val = sh_ups_tmp_buf[0];
c116: 2a00 cmp r2, #0
c118: bfb4 ite lt
c11a: f8b5 c000 ldrhlt.w ip, [r5]
else left_val = sh_ups_tmp_buf[x - s_left - 1];
c11e: f835 c012 ldrhge.w ip, [r5, r2, lsl #1]
v += left_val;
c122: 4463 add r3, ip
c124: 3901 subs r1, #1
c126: 3a01 subs r2, #1
for(x = size - 1; x >= 0; x--) {
c128: 42b0 cmp r0, r6
c12a: d1eb bne.n c104 <shadow_blur_corner+0x78>
}
_lv_memcpy(sh_ups_tmp_buf, sh_ups_blur_buf, size * sizeof(uint16_t));
c12c: 463a mov r2, r7
c12e: 4631 mov r1, r6
c130: 4628 mov r0, r5
c132: 4b4b ldr r3, [pc, #300] ; (c260 <shadow_blur_corner+0x1d4>)
c134: 4798 blx r3
sh_ups_tmp_buf += size;
c136: 443d add r5, r7
for(y = 0; y < size; y++) {
c138: f108 0801 add.w r8, r8, #1
c13c: 45a0 cmp r8, r4
c13e: d1d0 bne.n c0e2 <shadow_blur_corner+0x56>
c140: f8dd b024 ldr.w fp, [sp, #36] ; 0x24
}
/*Vertical blur*/
uint32_t i;
sh_ups_buf[0] = sh_ups_buf[0] / sw;
c144: 9a07 ldr r2, [sp, #28]
c146: 8813 ldrh r3, [r2, #0]
c148: 9901 ldr r1, [sp, #4]
c14a: fb93 f3f1 sdiv r3, r3, r1
c14e: 8013 strh r3, [r2, #0]
for(i = 1; i < (uint32_t)size * size; i++) {
c150: 9b06 ldr r3, [sp, #24]
c152: fb03 f503 mul.w r5, r3, r3
c156: 2d01 cmp r5, #1
c158: d911 bls.n c17e <shadow_blur_corner+0xf2>
c15a: 9a07 ldr r2, [sp, #28]
c15c: 2101 movs r1, #1
c15e: 9e01 ldr r6, [sp, #4]
c160: 4610 mov r0, r2
if(sh_ups_buf[i] == sh_ups_buf[i - 1]) sh_ups_buf[i] = sh_ups_buf[i - 1];
c162: f832 3f02 ldrh.w r3, [r2, #2]!
c166: 8800 ldrh r0, [r0, #0]
c168: 4298 cmp r0, r3
else sh_ups_buf[i] = sh_ups_buf[i] / sw;
c16a: bf1c itt ne
c16c: fb93 f3f6 sdivne r3, r3, r6
c170: 8013 strhne r3, [r2, #0]
for(i = 1; i < (uint32_t)size * size; i++) {
c172: 3101 adds r1, #1
c174: 42a9 cmp r1, r5
c176: d3f3 bcc.n c160 <shadow_blur_corner+0xd4>
}
for(x = 0; x < size; x++) {
c178: 9b06 ldr r3, [sp, #24]
c17a: 2b00 cmp r3, #0
c17c: dd59 ble.n c232 <shadow_blur_corner+0x1a6>
c17e: 9e07 ldr r6, [sp, #28]
c180: 9602 str r6, [sp, #8]
c182: 9908 ldr r1, [sp, #32]
c184: fb01 7207 mla r2, r1, r7, r7
c188: ea6f 030b mvn.w r3, fp
c18c: 1a5b subs r3, r3, r1
c18e: 9d06 ldr r5, [sp, #24]
c190: fb05 f303 mul.w r3, r5, r3
c194: 9306 str r3, [sp, #24]
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];
c196: 1e6b subs r3, r5, #1
c198: fb05 f303 mul.w r3, r5, r3
c19c: eb06 0343 add.w r3, r6, r3, lsl #1
c1a0: 9307 str r3, [sp, #28]
c1a2: f04f 0a00 mov.w sl, #0
c1a6: 1e93 subs r3, r2, #2
c1a8: 9308 str r3, [sp, #32]
if(y + s_left + 1 < size) bottom_val = sh_ups_buf[(y + s_left + 1) * size + x];
c1aa: f101 0901 add.w r9, r1, #1
sh_ups_tmp_buf = &sh_ups_buf[x];
c1ae: 9b02 ldr r3, [sp, #8]
c1b0: 461e mov r6, r3
c1b2: 3302 adds r3, #2
c1b4: 461a mov r2, r3
c1b6: 9302 str r3, [sp, #8]
int32_t v = sh_ups_tmp_buf[0] * sw;
c1b8: 8833 ldrh r3, [r6, #0]
c1ba: 9901 ldr r1, [sp, #4]
c1bc: fb01 f303 mul.w r3, r1, r3
c1c0: 9908 ldr r1, [sp, #32]
c1c2: 188d adds r5, r1, r2
c1c4: 9a05 ldr r2, [sp, #20]
c1c6: f1a2 0c02 sub.w ip, r2, #2
c1ca: 46e0 mov r8, ip
c1cc: 46b6 mov lr, r6
c1ce: 2200 movs r2, #0
c1d0: f8cd c00c str.w ip, [sp, #12]
c1d4: 9604 str r6, [sp, #16]
c1d6: 9e06 ldr r6, [sp, #24]
c1d8: f8dd c01c ldr.w ip, [sp, #28]
sh_ups_blur_buf[y] = v < 0 ? 0 : (v >> SHADOW_UPSACALE_SHIFT);
c1dc: 2b00 cmp r3, #0
c1de: bfac ite ge
c1e0: 1199 asrge r1, r3, #6
c1e2: 2100 movlt r1, #0
c1e4: f828 1f02 strh.w r1, [r8, #2]!
c1e8: 4611 mov r1, r2
if(y - s_right <= 0) top_val = sh_ups_tmp_buf[0];
c1ea: eba2 000b sub.w r0, r2, fp
c1ee: 2800 cmp r0, #0
c1f0: bfd4 ite le
c1f2: f8be 0000 ldrhle.w r0, [lr]
else top_val = sh_ups_buf[(y - s_right) * size + x];
c1f6: f835 0016 ldrhgt.w r0, [r5, r6, lsl #1]
v -= top_val;
c1fa: 1a1b subs r3, r3, r0
if(y + s_left + 1 < size) bottom_val = sh_ups_buf[(y + s_left + 1) * size + x];
c1fc: 4449 add r1, r9
c1fe: 428c cmp r4, r1
c200: bfcc ite gt
c202: 8829 ldrhgt r1, [r5, #0]
else bottom_val = sh_ups_buf[(size - 1) * size + x];
c204: f83c 101a ldrhle.w r1, [ip, sl, lsl #1]
v += bottom_val;
c208: 440b add r3, r1
for(y = 0; y < size ; y++, sh_ups_tmp_buf += size) {
c20a: 3201 adds r2, #1
c20c: 44be add lr, r7
c20e: 443d add r5, r7
c210: 42a2 cmp r2, r4
c212: dbe3 blt.n c1dc <shadow_blur_corner+0x150>
c214: f8dd c00c ldr.w ip, [sp, #12]
c218: 9e04 ldr r6, [sp, #16]
c21a: 2300 movs r3, #0
}
/*Write back the result into `sh_ups_buf`*/
sh_ups_tmp_buf = &sh_ups_buf[x];
for(y = 0; y < size; y++, sh_ups_tmp_buf += size) {
(*sh_ups_tmp_buf) = sh_ups_blur_buf[y];
c21c: f83c 2f02 ldrh.w r2, [ip, #2]!
c220: 8032 strh r2, [r6, #0]
for(y = 0; y < size; y++, sh_ups_tmp_buf += size) {
c222: 3301 adds r3, #1
c224: 443e add r6, r7
c226: 42a3 cmp r3, r4
c228: dbf8 blt.n c21c <shadow_blur_corner+0x190>
for(x = 0; x < size; x++) {
c22a: f10a 0a01 add.w sl, sl, #1
c22e: 45a2 cmp sl, r4
c230: dbbd blt.n c1ae <shadow_blur_corner+0x122>
}
}
_lv_mem_buf_release(sh_ups_blur_buf);
c232: 9805 ldr r0, [sp, #20]
c234: 4b0b ldr r3, [pc, #44] ; (c264 <shadow_blur_corner+0x1d8>)
c236: 4798 blx r3
}
c238: b00b add sp, #44 ; 0x2c
c23a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
sh_ups_buf[0] = sh_ups_buf[0] / sw;
c23e: f8cd 9004 str.w r9, [sp, #4]
c242: 9a07 ldr r2, [sp, #28]
c244: 8813 ldrh r3, [r2, #0]
c246: fb93 f9f9 sdiv r9, r3, r9
c24a: f8a2 9000 strh.w r9, [r2]
for(i = 1; i < (uint32_t)size * size; i++) {
c24e: 9b06 ldr r3, [sp, #24]
c250: fb03 f503 mul.w r5, r3, r3
c254: 2d01 cmp r5, #1
c256: d880 bhi.n c15a <shadow_blur_corner+0xce>
c258: e7eb b.n c232 <shadow_blur_corner+0x1a6>
c25a: bf00 nop
c25c: 0001293d .word 0x0001293d
c260: 00012655 .word 0x00012655
c264: 00012571 .word 0x00012571
0000c268 <lv_draw_rect_dsc_init>:
{
c268: b510 push {r4, lr}
c26a: 4604 mov r4, r0
_lv_memset_00(dsc, sizeof(lv_draw_rect_dsc_t));
c26c: 2154 movs r1, #84 ; 0x54
c26e: 4b2d ldr r3, [pc, #180] ; (c324 <lv_draw_rect_dsc_init+0xbc>)
c270: 4798 blx r3
dsc->bg_color = LV_COLOR_WHITE;
c272: 4b2d ldr r3, [pc, #180] ; (c328 <lv_draw_rect_dsc_init+0xc0>)
c274: 881b ldrh r3, [r3, #0]
c276: 8063 strh r3, [r4, #2]
dsc->bg_grad_color = LV_COLOR_BLACK;
c278: 7923 ldrb r3, [r4, #4]
c27a: f36f 0304 bfc r3, #0, #5
c27e: 7123 strb r3, [r4, #4]
c280: 88a3 ldrh r3, [r4, #4]
c282: f36f 134a bfc r3, #5, #6
c286: 80a3 strh r3, [r4, #4]
c288: 0a1b lsrs r3, r3, #8
c28a: f36f 03c7 bfc r3, #3, #5
c28e: 7163 strb r3, [r4, #5]
dsc->border_color = LV_COLOR_BLACK;
c290: 7ba3 ldrb r3, [r4, #14]
c292: f36f 0304 bfc r3, #0, #5
c296: 73a3 strb r3, [r4, #14]
c298: 89e3 ldrh r3, [r4, #14]
c29a: f36f 134a bfc r3, #5, #6
c29e: 81e3 strh r3, [r4, #14]
c2a0: 0a1b lsrs r3, r3, #8
c2a2: f36f 03c7 bfc r3, #3, #5
c2a6: 73e3 strb r3, [r4, #15]
dsc->pattern_recolor = LV_COLOR_BLACK;
c2a8: f894 3034 ldrb.w r3, [r4, #52] ; 0x34
c2ac: f36f 0304 bfc r3, #0, #5
c2b0: f884 3034 strb.w r3, [r4, #52] ; 0x34
c2b4: 8ea3 ldrh r3, [r4, #52] ; 0x34
c2b6: f36f 134a bfc r3, #5, #6
c2ba: 86a3 strh r3, [r4, #52] ; 0x34
c2bc: 0a1b lsrs r3, r3, #8
c2be: f36f 03c7 bfc r3, #3, #5
c2c2: f884 3035 strb.w r3, [r4, #53] ; 0x35
dsc->value_color = LV_COLOR_BLACK;
c2c6: f894 3046 ldrb.w r3, [r4, #70] ; 0x46
c2ca: f36f 0304 bfc r3, #0, #5
c2ce: f884 3046 strb.w r3, [r4, #70] ; 0x46
c2d2: f8b4 3046 ldrh.w r3, [r4, #70] ; 0x46
c2d6: f36f 134a bfc r3, #5, #6
c2da: f8a4 3046 strh.w r3, [r4, #70] ; 0x46
c2de: 0a1b lsrs r3, r3, #8
c2e0: f36f 03c7 bfc r3, #3, #5
c2e4: f884 3047 strb.w r3, [r4, #71] ; 0x47
dsc->shadow_color = LV_COLOR_BLACK;
c2e8: 7fa3 ldrb r3, [r4, #30]
c2ea: f36f 0304 bfc r3, #0, #5
c2ee: 77a3 strb r3, [r4, #30]
c2f0: 8be3 ldrh r3, [r4, #30]
c2f2: f36f 134a bfc r3, #5, #6
c2f6: 83e3 strh r3, [r4, #30]
c2f8: 0a1b lsrs r3, r3, #8
c2fa: f36f 03c7 bfc r3, #3, #5
c2fe: 77e3 strb r3, [r4, #31]
dsc->bg_grad_color_stop = 0xFF;
c300: 23ff movs r3, #255 ; 0xff
c302: 8163 strh r3, [r4, #10]
dsc->bg_opa = LV_OPA_COVER;
c304: 7323 strb r3, [r4, #12]
dsc->outline_opa = LV_OPA_COVER;
c306: 7723 strb r3, [r4, #28]
dsc->border_opa = LV_OPA_COVER;
c308: 7523 strb r3, [r4, #20]
dsc->pattern_opa = LV_OPA_COVER;
c30a: f884 3036 strb.w r3, [r4, #54] ; 0x36
dsc->pattern_font = LV_THEME_DEFAULT_FONT_NORMAL;
c30e: 4a07 ldr r2, [pc, #28] ; (c32c <lv_draw_rect_dsc_init+0xc4>)
c310: 6322 str r2, [r4, #48] ; 0x30
dsc->value_opa = LV_OPA_COVER;
c312: f884 3044 strb.w r3, [r4, #68] ; 0x44
dsc->value_font = LV_THEME_DEFAULT_FONT_NORMAL;
c316: 6422 str r2, [r4, #64] ; 0x40
dsc->shadow_opa = LV_OPA_COVER;
c318: f884 3028 strb.w r3, [r4, #40] ; 0x28
dsc->border_side = LV_BORDER_SIDE_FULL;
c31c: 230f movs r3, #15
c31e: 8263 strh r3, [r4, #18]
c320: bd10 pop {r4, pc}
c322: bf00 nop
c324: 00012b37 .word 0x00012b37
c328: 0002507c .word 0x0002507c
c32c: 20000010 .word 0x20000010
0000c330 <lv_draw_rect>:
{
c330: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
c334: b0b1 sub sp, #196 ; 0xc4
* @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);
c336: 88c4 ldrh r4, [r0, #6]
c338: 8845 ldrh r5, [r0, #2]
c33a: 1c63 adds r3, r4, #1
c33c: 1b5b subs r3, r3, r5
if(lv_area_get_height(coords) < 1 || lv_area_get_width(coords) < 1) return;
c33e: b21b sxth r3, r3
c340: 2b00 cmp r3, #0
c342: f341 800f ble.w d364 <lv_draw_rect+0x1034>
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
c346: 8886 ldrh r6, [r0, #4]
c348: f8b0 8000 ldrh.w r8, [r0]
c34c: 1c73 adds r3, r6, #1
c34e: eba3 0308 sub.w r3, r3, r8
c352: b21b sxth r3, r3
c354: 2b00 cmp r3, #0
c356: f341 8005 ble.w d364 <lv_draw_rect+0x1034>
c35a: 4692 mov sl, r2
c35c: 9104 str r1, [sp, #16]
c35e: 9006 str r0, [sp, #24]
if(dsc->shadow_width == 0) return;
c360: f9b2 7020 ldrsh.w r7, [r2, #32]
c364: 2f00 cmp r7, #0
c366: f000 8719 beq.w d19c <lv_draw_rect+0xe6c>
if(dsc->shadow_opa <= LV_OPA_MIN) return;
c36a: f892 3028 ldrb.w r3, [r2, #40] ; 0x28
c36e: 9309 str r3, [sp, #36] ; 0x24
c370: 2b05 cmp r3, #5
c372: f240 8713 bls.w d19c <lv_draw_rect+0xe6c>
if(dsc->shadow_width == 1 && dsc->shadow_ofs_x == 0 &&
c376: 6a13 ldr r3, [r2, #32]
c378: 2b01 cmp r3, #1
c37a: f000 80f6 beq.w c56a <lv_draw_rect+0x23a>
sh_rect_area.x1 = coords->x1 + dsc->shadow_ofs_x - dsc->shadow_spread;
c37e: f8ba 2022 ldrh.w r2, [sl, #34] ; 0x22
c382: f8ba 3026 ldrh.w r3, [sl, #38] ; 0x26
c386: 1ad1 subs r1, r2, r3
c388: 4488 add r8, r1
c38a: fa1f f888 uxth.w r8, r8
c38e: f8ad 8050 strh.w r8, [sp, #80] ; 0x50
sh_rect_area.x2 = coords->x2 + dsc->shadow_ofs_x + dsc->shadow_spread;
c392: 441a add r2, r3
c394: 4416 add r6, r2
c396: b2b6 uxth r6, r6
c398: f8ad 6054 strh.w r6, [sp, #84] ; 0x54
sh_rect_area.y1 = coords->y1 + dsc->shadow_ofs_y - dsc->shadow_spread;
c39c: f8ba 2024 ldrh.w r2, [sl, #36] ; 0x24
c3a0: 1ad1 subs r1, r2, r3
c3a2: 440d add r5, r1
c3a4: b2ad uxth r5, r5
c3a6: f8ad 5052 strh.w r5, [sp, #82] ; 0x52
sh_rect_area.y2 = coords->y2 + dsc->shadow_ofs_y + dsc->shadow_spread;
c3aa: 4413 add r3, r2
c3ac: 441c add r4, r3
c3ae: b2a4 uxth r4, r4
c3b0: f8ad 4056 strh.w r4, [sp, #86] ; 0x56
sh_area.x1 = sh_rect_area.x1 - sw / 2 - 1;
c3b4: eb07 73d7 add.w r3, r7, r7, lsr #31
c3b8: ea6f 0263 mvn.w r2, r3, asr #1
c3bc: b292 uxth r2, r2
c3be: eb08 0102 add.w r1, r8, r2
c3c2: f8ad 1058 strh.w r1, [sp, #88] ; 0x58
sh_area.x2 = sh_rect_area.x2 + sw / 2 + 1;
c3c6: 105b asrs r3, r3, #1
c3c8: 3301 adds r3, #1
c3ca: b29b uxth r3, r3
c3cc: 18f1 adds r1, r6, r3
c3ce: f8ad 105c strh.w r1, [sp, #92] ; 0x5c
sh_area.y1 = sh_rect_area.y1 - sw / 2 - 1;
c3d2: 442a add r2, r5
c3d4: f8ad 205a strh.w r2, [sp, #90] ; 0x5a
sh_area.y2 = sh_rect_area.y2 + sw / 2 + 1;
c3d8: 4423 add r3, r4
c3da: f8ad 305e strh.w r3, [sp, #94] ; 0x5e
if(opa > LV_OPA_MAX) opa = LV_OPA_COVER;
c3de: 9b09 ldr r3, [sp, #36] ; 0x24
c3e0: 2bfb cmp r3, #251 ; 0xfb
c3e2: bf28 it cs
c3e4: 23ff movcs r3, #255 ; 0xff
c3e6: 9309 str r3, [sp, #36] ; 0x24
lv_disp_t * disp = _lv_refr_get_disp_refreshing();
c3e8: 4bbe ldr r3, [pc, #760] ; (c6e4 <lv_draw_rect+0x3b4>)
c3ea: 4798 blx r3
lv_disp_buf_t * vdb = lv_disp_get_buf(disp);
c3ec: 4bbe ldr r3, [pc, #760] ; (c6e8 <lv_draw_rect+0x3b8>)
c3ee: 4798 blx r3
c3f0: 4681 mov r9, r0
is_common = _lv_area_intersect(&draw_area, &sh_area, clip);
c3f2: 9a04 ldr r2, [sp, #16]
c3f4: a916 add r1, sp, #88 ; 0x58
c3f6: a818 add r0, sp, #96 ; 0x60
c3f8: 4bbc ldr r3, [pc, #752] ; (c6ec <lv_draw_rect+0x3bc>)
c3fa: 4798 blx r3
if(is_common == false) return;
c3fc: 2800 cmp r0, #0
c3fe: f000 86cd beq.w d19c <lv_draw_rect+0xe6c>
draw_area.x1 -= disp_area->x1;
c402: f8b9 1010 ldrh.w r1, [r9, #16]
c406: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60
c40a: 1a5b subs r3, r3, r1
c40c: f8ad 3060 strh.w r3, [sp, #96] ; 0x60
draw_area.y1 -= disp_area->y1;
c410: f8b9 2012 ldrh.w r2, [r9, #18]
c414: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62
c418: 1a9b subs r3, r3, r2
c41a: f8ad 3062 strh.w r3, [sp, #98] ; 0x62
draw_area.x2 -= disp_area->x1;
c41e: f8bd 3064 ldrh.w r3, [sp, #100] ; 0x64
c422: 1a5b subs r3, r3, r1
c424: f8ad 3064 strh.w r3, [sp, #100] ; 0x64
draw_area.y2 -= disp_area->y1;
c428: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66
c42c: 1a9b subs r3, r3, r2
c42e: f8ad 3066 strh.w r3, [sp, #102] ; 0x66
c432: 9a06 ldr r2, [sp, #24]
c434: 1e53 subs r3, r2, #1
c436: 1dd0 adds r0, r2, #7
* @param src pointer to the source buffer
* @param len number of byte to 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;
c438: aa1a add r2, sp, #104 ; 0x68
const uint8_t * s8 = (const uint8_t *)src;
while(len) {
*d8 = *s8;
c43a: f813 1f01 ldrb.w r1, [r3, #1]!
c43e: f802 1b01 strb.w r1, [r2], #1
while(len) {
c442: 4298 cmp r0, r3
c444: d1f9 bne.n c43a <lv_draw_rect+0x10a>
bg_coords.x1 += 1;
c446: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68
c44a: 3301 adds r3, #1
c44c: fa1f fe83 uxth.w lr, r3
c450: f8ad e068 strh.w lr, [sp, #104] ; 0x68
bg_coords.y1 += 1;
c454: f8bd 106a ldrh.w r1, [sp, #106] ; 0x6a
c458: 3101 adds r1, #1
c45a: b288 uxth r0, r1
c45c: f8ad 006a strh.w r0, [sp, #106] ; 0x6a
bg_coords.x2 -= 1;
c460: f8bd 306c ldrh.w r3, [sp, #108] ; 0x6c
c464: 1e5a subs r2, r3, #1
c466: f8ad 206c strh.w r2, [sp, #108] ; 0x6c
bg_coords.y2 -= 1;
c46a: f8bd 106e ldrh.w r1, [sp, #110] ; 0x6e
c46e: 1e4a subs r2, r1, #1
c470: f8ad 206e strh.w r2, [sp, #110] ; 0x6e
int32_t r_bg = dsc->radius;
c474: f9ba 2000 ldrsh.w r2, [sl]
c478: eba3 030e sub.w r3, r3, lr
c47c: b21b sxth r3, r3
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
c47e: 1a09 subs r1, r1, r0
c480: b209 sxth r1, r1
int32_t short_side = LV_MATH_MIN(lv_area_get_width(&bg_coords), lv_area_get_height(&bg_coords));
c482: 428b cmp r3, r1
c484: bfa8 it ge
c486: 460b movge r3, r1
if(r_bg > short_side >> 1) r_bg = short_side >> 1;
c488: 105b asrs r3, r3, #1
c48a: 4293 cmp r3, r2
c48c: bfa8 it ge
c48e: 4613 movge r3, r2
c490: 930e str r3, [sp, #56] ; 0x38
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
c492: 3601 adds r6, #1
c494: eba6 0608 sub.w r6, r6, r8
c498: b2b6 uxth r6, r6
c49a: b233 sxth r3, r6
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
c49c: 3401 adds r4, #1
c49e: 1b64 subs r4, r4, r5
c4a0: b2a4 uxth r4, r4
c4a2: b225 sxth r5, r4
short_side = LV_MATH_MIN(lv_area_get_width(&sh_rect_area), lv_area_get_height(&sh_rect_area));
c4a4: 429d cmp r5, r3
c4a6: bfa8 it ge
c4a8: 461d movge r5, r3
if(r_sh > short_side >> 1) r_sh = short_side >> 1;
c4aa: 106d asrs r5, r5, #1
c4ac: 4295 cmp r5, r2
c4ae: bfa8 it ge
c4b0: 4615 movge r5, r2
int32_t corner_size = sw + r_sh;
c4b2: eb07 0905 add.w r9, r7, r5
sh_buf = _lv_mem_buf_get(corner_size * corner_size * sizeof(uint16_t));
c4b6: fb09 f009 mul.w r0, r9, r9
c4ba: 0040 lsls r0, r0, #1
c4bc: 4b8c ldr r3, [pc, #560] ; (c6f0 <lv_draw_rect+0x3c0>)
c4be: 4798 blx r3
c4c0: 900a str r0, [sp, #40] ; 0x28
shadow_draw_corner_buf(&sh_rect_area, (uint16_t *)sh_buf, dsc->shadow_width, r_sh);
c4c2: f9ba b020 ldrsh.w fp, [sl, #32]
c4c6: b22a sxth r2, r5
int32_t size = sw_ori + r;
c4c8: eb02 070b add.w r7, r2, fp
c4cc: f10d 014f add.w r1, sp, #79 ; 0x4f
uint8_t * d8 = (uint8_t *)dst;
c4d0: ab22 add r3, sp, #136 ; 0x88
while(len) {
c4d2: f10d 0e90 add.w lr, sp, #144 ; 0x90
*d8 = *s8;
c4d6: f811 0f01 ldrb.w r0, [r1, #1]!
c4da: f803 0b01 strb.w r0, [r3], #1
while(len) {
c4de: 4573 cmp r3, lr
c4e0: d1f9 bne.n c4d6 <lv_draw_rect+0x1a6>
sh_area.x2 = sw / 2 + r - 1 - ((sw & 1) ? 0 : 1);
c4e2: eb0b 71db add.w r1, fp, fp, lsr #31
c4e6: f3c1 014f ubfx r1, r1, #1, #16
c4ea: 1e4b subs r3, r1, #1
c4ec: f01b 0001 ands.w r0, fp, #1
c4f0: 9010 str r0, [sp, #64] ; 0x40
c4f2: bf0c ite eq
c4f4: 2001 moveq r0, #1
c4f6: 2000 movne r0, #0
c4f8: 1a1b subs r3, r3, r0
c4fa: 442b add r3, r5
c4fc: b29b uxth r3, r3
c4fe: f8ad 308c strh.w r3, [sp, #140] ; 0x8c
sh_area.y1 = sw / 2 + 1;
c502: 3101 adds r1, #1
c504: b289 uxth r1, r1
c506: f8ad 108a strh.w r1, [sp, #138] ; 0x8a
sh_area.x1 = sh_area.x2 - lv_area_get_width(coords);
c50a: 1b9b subs r3, r3, r6
c50c: f8ad 3088 strh.w r3, [sp, #136] ; 0x88
sh_area.y2 = sh_area.y1 + lv_area_get_height(coords);
c510: 4421 add r1, r4
c512: f8ad 108e strh.w r1, [sp, #142] ; 0x8e
lv_draw_mask_radius_init(&mask_param, &sh_area, r, false);
c516: 2300 movs r3, #0
c518: a922 add r1, sp, #136 ; 0x88
c51a: a829 add r0, sp, #164 ; 0xa4
c51c: 4c75 ldr r4, [pc, #468] ; (c6f4 <lv_draw_rect+0x3c4>)
c51e: 47a0 blx r4
if(sw_ori == 1) sw = 1;
c520: f1bb 0f01 cmp.w fp, #1
c524: f002 81d8 beq.w e8d8 <lv_draw_rect+0x25a8>
c528: ea4f 036b mov.w r3, fp, asr #1
c52c: 930b str r3, [sp, #44] ; 0x2c
lv_opa_t * mask_line = _lv_mem_buf_get(size);
c52e: 9707 str r7, [sp, #28]
c530: 4638 mov r0, r7
c532: 4b6f ldr r3, [pc, #444] ; (c6f0 <lv_draw_rect+0x3c0>)
c534: 4798 blx r3
c536: 900c str r0, [sp, #48] ; 0x30
for(y = 0; y < size; y++) {
c538: 2f00 cmp r7, #0
c53a: dd5c ble.n c5f6 <lv_draw_rect+0x2c6>
_lv_memset_00(sh_ups_tmp_buf, size * sizeof(sh_ups_tmp_buf[0]));
c53c: 9b07 ldr r3, [sp, #28]
c53e: ea4f 0b43 mov.w fp, r3, lsl #1
c542: f107 4300 add.w r3, r7, #2147483648 ; 0x80000000
c546: 3b01 subs r3, #1
c548: 005b lsls r3, r3, #1
c54a: 9c0a ldr r4, [sp, #40] ; 0x28
c54c: 2500 movs r5, #0
_lv_memset_ff(mask_line, size);
c54e: f8df 81b8 ldr.w r8, [pc, #440] ; c708 <lv_draw_rect+0x3d8>
lv_draw_mask_res_t mask_res = mask_param.dsc.cb(mask_line, 0, y, size, &mask_param);
c552: b23a sxth r2, r7
c554: 9208 str r2, [sp, #32]
_lv_memset_00(sh_ups_tmp_buf, size * sizeof(sh_ups_tmp_buf[0]));
c556: f8cd 9034 str.w r9, [sp, #52] ; 0x34
c55a: 9705 str r7, [sp, #20]
c55c: 9e0c ldr r6, [sp, #48] ; 0x30
c55e: 4699 mov r9, r3
c560: f8cd a03c str.w sl, [sp, #60] ; 0x3c
c564: f8dd a02c ldr.w sl, [sp, #44] ; 0x2c
c568: e014 b.n c594 <lv_draw_rect+0x264>
if(dsc->shadow_width == 1 && dsc->shadow_ofs_x == 0 &&
c56a: f9b2 3024 ldrsh.w r3, [r2, #36] ; 0x24
c56e: 2b00 cmp r3, #0
c570: f47f af05 bne.w c37e <lv_draw_rect+0x4e>
dsc->shadow_ofs_y == 0 && dsc->shadow_spread <= 0) {
c574: f9b2 3026 ldrsh.w r3, [r2, #38] ; 0x26
c578: 2b00 cmp r3, #0
c57a: f73f af00 bgt.w c37e <lv_draw_rect+0x4e>
c57e: f000 be0d b.w d19c <lv_draw_rect+0xe6c>
_lv_memset_00(sh_ups_tmp_buf, size * sizeof(sh_ups_tmp_buf[0]));
c582: 4659 mov r1, fp
c584: 4620 mov r0, r4
c586: 4b5c ldr r3, [pc, #368] ; (c6f8 <lv_draw_rect+0x3c8>)
c588: 4798 blx r3
sh_ups_tmp_buf += size;
c58a: 445c add r4, fp
for(y = 0; y < size; y++) {
c58c: 3501 adds r5, #1
c58e: 9b05 ldr r3, [sp, #20]
c590: 42ab cmp r3, r5
c592: dd2b ble.n c5ec <lv_draw_rect+0x2bc>
_lv_memset_ff(mask_line, size);
c594: 9907 ldr r1, [sp, #28]
c596: 4630 mov r0, r6
c598: 47c0 blx r8
lv_draw_mask_res_t mask_res = mask_param.dsc.cb(mask_line, 0, y, size, &mask_param);
c59a: ab29 add r3, sp, #164 ; 0xa4
c59c: 9300 str r3, [sp, #0]
c59e: 9b08 ldr r3, [sp, #32]
c5a0: b22a sxth r2, r5
c5a2: 2100 movs r1, #0
c5a4: 4630 mov r0, r6
c5a6: 9f29 ldr r7, [sp, #164] ; 0xa4
c5a8: 47b8 blx r7
if(mask_res == LV_DRAW_MASK_RES_TRANSP) {
c5aa: 2800 cmp r0, #0
c5ac: d0e9 beq.n c582 <lv_draw_rect+0x252>
sh_ups_tmp_buf[0] = (mask_line[0] << SHADOW_UPSACALE_SHIFT) / sw;
c5ae: 46d6 mov lr, sl
c5b0: 7833 ldrb r3, [r6, #0]
c5b2: 019b lsls r3, r3, #6
c5b4: fb93 f3fa sdiv r3, r3, sl
c5b8: 8023 strh r3, [r4, #0]
for(i = 1; i < size; i++) {
c5ba: 9b05 ldr r3, [sp, #20]
c5bc: 2b01 cmp r3, #1
c5be: dde4 ble.n c58a <lv_draw_rect+0x25a>
c5c0: 4631 mov r1, r6
c5c2: 4622 mov r2, r4
c5c4: eb04 0009 add.w r0, r4, r9
c5c8: 461f mov r7, r3
c5ca: 468c mov ip, r1
if(mask_line[i] == mask_line[i - 1]) sh_ups_tmp_buf[i] = sh_ups_tmp_buf[i - 1];
c5cc: f811 3f01 ldrb.w r3, [r1, #1]!
c5d0: f89c c000 ldrb.w ip, [ip]
c5d4: 459c cmp ip, r3
c5d6: bf0e itee eq
c5d8: 8813 ldrheq r3, [r2, #0]
else sh_ups_tmp_buf[i] = (mask_line[i] << SHADOW_UPSACALE_SHIFT) / sw;
c5da: 019b lslne r3, r3, #6
c5dc: fb93 f3fe sdivne r3, r3, lr
c5e0: 8053 strh r3, [r2, #2]
c5e2: 3202 adds r2, #2
for(i = 1; i < size; i++) {
c5e4: 4290 cmp r0, r2
c5e6: d1f0 bne.n c5ca <lv_draw_rect+0x29a>
c5e8: 9705 str r7, [sp, #20]
c5ea: e7ce b.n c58a <lv_draw_rect+0x25a>
c5ec: f8dd 9034 ldr.w r9, [sp, #52] ; 0x34
c5f0: 461f mov r7, r3
c5f2: f8dd a03c ldr.w sl, [sp, #60] ; 0x3c
_lv_mem_buf_release(mask_line);
c5f6: 980c ldr r0, [sp, #48] ; 0x30
c5f8: 4b40 ldr r3, [pc, #256] ; (c6fc <lv_draw_rect+0x3cc>)
c5fa: 4798 blx r3
if(sw == 1) {
c5fc: 9b0b ldr r3, [sp, #44] ; 0x2c
c5fe: 2b01 cmp r3, #1
c600: f002 814d beq.w e89e <lv_draw_rect+0x256e>
shadow_blur_corner(size, sw, sh_buf);
c604: b23c sxth r4, r7
c606: 9e0a ldr r6, [sp, #40] ; 0x28
c608: 4632 mov r2, r6
c60a: 9d0b ldr r5, [sp, #44] ; 0x2c
c60c: 4629 mov r1, r5
c60e: 4620 mov r0, r4
c610: 4b3b ldr r3, [pc, #236] ; (c700 <lv_draw_rect+0x3d0>)
c612: 4798 blx r3
sw += sw_ori & 1;
c614: 9a10 ldr r2, [sp, #64] ; 0x40
c616: 442a add r2, r5
c618: b211 sxth r1, r2
if(sw > 1) {
c61a: 2901 cmp r1, #1
c61c: dd22 ble.n c664 <lv_draw_rect+0x334>
sh_buf[0] = (sh_buf[0] << SHADOW_UPSACALE_SHIFT) / sw;
c61e: 460d mov r5, r1
c620: 8833 ldrh r3, [r6, #0]
c622: 019b lsls r3, r3, #6
c624: fb93 f3f1 sdiv r3, r3, r1
c628: 4632 mov r2, r6
c62a: 8033 strh r3, [r6, #0]
for(i = 1; i < (uint32_t) size * size; i++) {
c62c: 9807 ldr r0, [sp, #28]
c62e: fb00 f000 mul.w r0, r0, r0
c632: 2801 cmp r0, #1
c634: d912 bls.n c65c <lv_draw_rect+0x32c>
c636: f100 4000 add.w r0, r0, #2147483648 ; 0x80000000
c63a: 3801 subs r0, #1
c63c: eb06 0040 add.w r0, r6, r0, lsl #1
c640: e001 b.n c646 <lv_draw_rect+0x316>
c642: 4282 cmp r2, r0
c644: d00a beq.n c65c <lv_draw_rect+0x32c>
c646: 4616 mov r6, r2
if(sh_buf[i] == sh_buf[i - 1]) sh_buf[i] = sh_buf[i - 1];
c648: f832 3f02 ldrh.w r3, [r2, #2]!
c64c: 8836 ldrh r6, [r6, #0]
c64e: 429e cmp r6, r3
c650: d0f7 beq.n c642 <lv_draw_rect+0x312>
else sh_buf[i] = (sh_buf[i] << SHADOW_UPSACALE_SHIFT) / sw;
c652: 019b lsls r3, r3, #6
c654: fb93 f3f5 sdiv r3, r3, r5
c658: 8013 strh r3, [r2, #0]
c65a: e7f2 b.n c642 <lv_draw_rect+0x312>
shadow_blur_corner(size, sw, sh_buf);
c65c: 9a0a ldr r2, [sp, #40] ; 0x28
c65e: 4620 mov r0, r4
c660: 4b27 ldr r3, [pc, #156] ; (c700 <lv_draw_rect+0x3d0>)
c662: 4798 blx r3
for(x = 0; x < size * size; x++) {
c664: fb07 f707 mul.w r7, r7, r7
c668: b157 cbz r7, c680 <lv_draw_rect+0x350>
c66a: 990a ldr r1, [sp, #40] ; 0x28
c66c: 460b mov r3, r1
c66e: 1e4a subs r2, r1, #1
c670: eb01 0047 add.w r0, r1, r7, lsl #1
res_buf[x] = sh_buf[x];
c674: f833 1b02 ldrh.w r1, [r3], #2
c678: f802 1f01 strb.w r1, [r2, #1]!
for(x = 0; x < size * size; x++) {
c67c: 4283 cmp r3, r0
c67e: d1f9 bne.n c674 <lv_draw_rect+0x344>
lv_coord_t h_half = sh_area.y1 + lv_area_get_height(&sh_area) / 2;
c680: f8bd 205a ldrh.w r2, [sp, #90] ; 0x5a
c684: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e
c688: 3301 adds r3, #1
c68a: 1a9b subs r3, r3, r2
c68c: b21b sxth r3, r3
c68e: eb03 73d3 add.w r3, r3, r3, lsr #31
c692: eb02 0363 add.w r3, r2, r3, asr #1
c696: b29b uxth r3, r3
c698: 930f str r3, [sp, #60] ; 0x3c
c69a: b21b sxth r3, r3
c69c: 930c str r3, [sp, #48] ; 0x30
lv_coord_t w_half = sh_area.x1 + lv_area_get_width(&sh_area) / 2;
c69e: f8bd 2058 ldrh.w r2, [sp, #88] ; 0x58
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
c6a2: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c
c6a6: 3301 adds r3, #1
c6a8: 1a9b subs r3, r3, r2
c6aa: b21b sxth r3, r3
c6ac: eb03 73d3 add.w r3, r3, r3, lsr #31
c6b0: eb02 0363 add.w r3, r2, r3, asr #1
c6b4: b29b uxth r3, r3
c6b6: 9310 str r3, [sp, #64] ; 0x40
c6b8: b21b sxth r3, r3
c6ba: 930d str r3, [sp, #52] ; 0x34
if(lv_draw_mask_get_cnt() > 0) simple_mode = false;
c6bc: 4b11 ldr r3, [pc, #68] ; (c704 <lv_draw_rect+0x3d4>)
c6be: 4798 blx r3
c6c0: bb20 cbnz r0, c70c <lv_draw_rect+0x3dc>
else if(dsc->shadow_ofs_x != 0 || dsc->shadow_ofs_y != 0) simple_mode = false;
c6c2: f9ba 3022 ldrsh.w r3, [sl, #34] ; 0x22
c6c6: 2b00 cmp r3, #0
c6c8: f040 81bc bne.w ca44 <lv_draw_rect+0x714>
c6cc: f9ba 3024 ldrsh.w r3, [sl, #36] ; 0x24
c6d0: 2b00 cmp r3, #0
c6d2: f040 81ba bne.w ca4a <lv_draw_rect+0x71a>
else if(dsc->shadow_spread != 0) simple_mode = false;
c6d6: f9ba 3026 ldrsh.w r3, [sl, #38] ; 0x26
c6da: fab3 f383 clz r3, r3
c6de: 095b lsrs r3, r3, #5
c6e0: 9307 str r3, [sp, #28]
c6e2: e015 b.n c710 <lv_draw_rect+0x3e0>
c6e4: 00005f69 .word 0x00005f69
c6e8: 00010fdd .word 0x00010fdd
c6ec: 00011519 .word 0x00011519
c6f0: 0001293d .word 0x0001293d
c6f4: 0000c02d .word 0x0000c02d
c6f8: 00012b37 .word 0x00012b37
c6fc: 00012571 .word 0x00012571
c700: 0000c08d .word 0x0000c08d
c704: 0000bec5 .word 0x0000bec5
c708: 00012bed .word 0x00012bed
if(lv_draw_mask_get_cnt() > 0) simple_mode = false;
c70c: 2300 movs r3, #0
c70e: 9307 str r3, [sp, #28]
c710: f8bd 005c ldrh.w r0, [sp, #92] ; 0x5c
c714: 3001 adds r0, #1
c716: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58
c71a: 1ac0 subs r0, r0, r3
lv_opa_t * mask_buf = _lv_mem_buf_get(lv_area_get_width(&sh_area));
c71c: b200 sxth r0, r0
c71e: 4bc2 ldr r3, [pc, #776] ; (ca28 <lv_draw_rect+0x6f8>)
c720: 4798 blx r3
c722: 9005 str r0, [sp, #20]
lv_draw_mask_radius_init(&mask_rout_param, &bg_coords, r_bg, true);
c724: 2301 movs r3, #1
c726: 9a0e ldr r2, [sp, #56] ; 0x38
c728: a91a add r1, sp, #104 ; 0x68
c72a: a829 add r0, sp, #164 ; 0xa4
c72c: 4cbf ldr r4, [pc, #764] ; (ca2c <lv_draw_rect+0x6fc>)
c72e: 47a0 blx r4
int16_t mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL);
c730: 2100 movs r1, #0
c732: a829 add r0, sp, #164 ; 0xa4
c734: 4bbe ldr r3, [pc, #760] ; (ca30 <lv_draw_rect+0x700>)
c736: 4798 blx r3
c738: 900e str r0, [sp, #56] ; 0x38
a.x2 = sh_area.x2;
c73a: f9bd 305c ldrsh.w r3, [sp, #92] ; 0x5c
c73e: f8ad 3074 strh.w r3, [sp, #116] ; 0x74
a.x1 = a.x2 - corner_size + 1;
c742: fa1f fb89 uxth.w fp, r9
c746: 3301 adds r3, #1
c748: eba3 030b sub.w r3, r3, fp
c74c: f8ad 3070 strh.w r3, [sp, #112] ; 0x70
a.y1 = sh_area.y1;
c750: f9bd 305a ldrsh.w r3, [sp, #90] ; 0x5a
c754: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
a.y2 = a.y1 + corner_size - 1;
c758: 3b01 subs r3, #1
c75a: 445b add r3, fp
c75c: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
bool has_com = _lv_area_intersect(&ca, &a, clip);
c760: 9a04 ldr r2, [sp, #16]
c762: a91c add r1, sp, #112 ; 0x70
c764: a81e add r0, sp, #120 ; 0x78
c766: 4bb3 ldr r3, [pc, #716] ; (ca34 <lv_draw_rect+0x704>)
c768: 4798 blx r3
if(has_com) {
c76a: 2800 cmp r0, #0
c76c: d072 beq.n c854 <lv_draw_rect+0x524>
if(ca.y2 > h_half) ca.y2 = h_half;
c76e: f9bd 307e ldrsh.w r3, [sp, #126] ; 0x7e
c772: 990c ldr r1, [sp, #48] ; 0x30
c774: 428b cmp r3, r1
c776: bfc4 itt gt
c778: 460b movgt r3, r1
c77a: f8ad 307e strhgt.w r3, [sp, #126] ; 0x7e
if(ca.x1 <= w_half) ca.x1 = w_half + 1;
c77e: f9bd 3078 ldrsh.w r3, [sp, #120] ; 0x78
c782: 9a0d ldr r2, [sp, #52] ; 0x34
c784: 4293 cmp r3, r2
c786: dc03 bgt.n c790 <lv_draw_rect+0x460>
c788: 9b10 ldr r3, [sp, #64] ; 0x40
c78a: 3301 adds r3, #1
c78c: f8ad 3078 strh.w r3, [sp, #120] ; 0x78
c790: f9bd 2078 ldrsh.w r2, [sp, #120] ; 0x78
c794: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c
c798: 3301 adds r3, #1
c79a: 1a9b subs r3, r3, r2
c79c: b21b sxth r3, r3
c79e: 9308 str r3, [sp, #32]
if(w > 0) {
c7a0: 2b00 cmp r3, #0
c7a2: dd57 ble.n c854 <lv_draw_rect+0x524>
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
c7a4: f9bd 707e ldrsh.w r7, [sp, #126] ; 0x7e
c7a8: f9bd 407a ldrsh.w r4, [sp, #122] ; 0x7a
sh_buf_tmp += corner_size * (ca.y1 - a.y1);
c7ac: f9bd 5072 ldrsh.w r5, [sp, #114] ; 0x72
c7b0: 1b65 subs r5, r4, r5
sh_buf_tmp = sh_buf + (ca.x1 - a.x1);
c7b2: f9bd 3070 ldrsh.w r3, [sp, #112] ; 0x70
c7b6: 1ad2 subs r2, r2, r3
sh_buf_tmp += corner_size * (ca.y1 - a.y1);
c7b8: fb09 2505 mla r5, r9, r5, r2
c7bc: 9b0a ldr r3, [sp, #40] ; 0x28
c7be: 441d add r5, r3
c7c0: f10d 0277 add.w r2, sp, #119 ; 0x77
uint8_t * d8 = (uint8_t *)dst;
c7c4: ab22 add r3, sp, #136 ; 0x88
while(len) {
c7c6: a824 add r0, sp, #144 ; 0x90
*d8 = *s8;
c7c8: f812 1f01 ldrb.w r1, [r2, #1]!
c7cc: f803 1b01 strb.w r1, [r3], #1
while(len) {
c7d0: 4283 cmp r3, r0
c7d2: d1f9 bne.n c7c8 <lv_draw_rect+0x498>
fa.y2 = fa.y1;
c7d4: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a
c7d8: f8ad 308e strh.w r3, [sp, #142] ; 0x8e
c7dc: 3701 adds r7, #1
c7de: 1b3f subs r7, r7, r4
for(y = 0; y < h; y++) {
c7e0: b23f sxth r7, r7
c7e2: 2f00 cmp r7, #0
c7e4: dd36 ble.n c854 <lv_draw_rect+0x524>
c7e6: 2600 movs r6, #0
_lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf,
c7e8: f8df 8254 ldr.w r8, [pc, #596] ; ca40 <lv_draw_rect+0x710>
c7ec: f8cd b044 str.w fp, [sp, #68] ; 0x44
c7f0: 46bb mov fp, r7
c7f2: 9b09 ldr r3, [sp, #36] ; 0x24
c7f4: 930b str r3, [sp, #44] ; 0x2c
_lv_memcpy(mask_buf, sh_buf_tmp, w);
c7f6: 9a08 ldr r2, [sp, #32]
c7f8: 4629 mov r1, r5
c7fa: 9f05 ldr r7, [sp, #20]
c7fc: 4638 mov r0, r7
c7fe: 4c8e ldr r4, [pc, #568] ; (ca38 <lv_draw_rect+0x708>)
c800: 47a0 blx r4
mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w);
c802: ac30 add r4, sp, #192 ; 0xc0
c804: 9b08 ldr r3, [sp, #32]
c806: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a
c80a: f934 1d38 ldrsh.w r1, [r4, #-56]!
c80e: 9705 str r7, [sp, #20]
c810: 4638 mov r0, r7
c812: 4f8a ldr r7, [pc, #552] ; (ca3c <lv_draw_rect+0x70c>)
c814: 47b8 blx r7
if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED;
c816: 2801 cmp r0, #1
c818: bf08 it eq
c81a: 2002 moveq r0, #2
_lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf,
c81c: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29
c820: 9302 str r3, [sp, #8]
c822: 9a0b ldr r2, [sp, #44] ; 0x2c
c824: 9201 str r2, [sp, #4]
c826: 9000 str r0, [sp, #0]
c828: 9b05 ldr r3, [sp, #20]
c82a: f8ba 201e ldrh.w r2, [sl, #30]
c82e: 4621 mov r1, r4
c830: 9804 ldr r0, [sp, #16]
c832: 47c0 blx r8
fa.y1++;
c834: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a
c838: 3301 adds r3, #1
c83a: f8ad 308a strh.w r3, [sp, #138] ; 0x8a
fa.y2++;
c83e: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e
c842: 3301 adds r3, #1
c844: f8ad 308e strh.w r3, [sp, #142] ; 0x8e
c848: 444d add r5, r9
for(y = 0; y < h; y++) {
c84a: 3601 adds r6, #1
c84c: 455e cmp r6, fp
c84e: d1d2 bne.n c7f6 <lv_draw_rect+0x4c6>
c850: f8dd b044 ldr.w fp, [sp, #68] ; 0x44
a.x2 = sh_area.x2;
c854: f9bd 305c ldrsh.w r3, [sp, #92] ; 0x5c
c858: f8ad 3074 strh.w r3, [sp, #116] ; 0x74
a.x1 = a.x2 - corner_size + 1;
c85c: 3301 adds r3, #1
c85e: eba3 030b sub.w r3, r3, fp
c862: f8ad 3070 strh.w r3, [sp, #112] ; 0x70
a.y1 = sh_area.y2 - corner_size + 1;
c866: f9bd 205e ldrsh.w r2, [sp, #94] ; 0x5e
c86a: 1c53 adds r3, r2, #1
c86c: eba3 030b sub.w r3, r3, fp
c870: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
a.y2 = sh_area.y2;
c874: f8ad 2076 strh.w r2, [sp, #118] ; 0x76
has_com = _lv_area_intersect(&ca, &a, clip);
c878: 9a04 ldr r2, [sp, #16]
c87a: a91c add r1, sp, #112 ; 0x70
c87c: a81e add r0, sp, #120 ; 0x78
c87e: 4b6d ldr r3, [pc, #436] ; (ca34 <lv_draw_rect+0x704>)
c880: 4798 blx r3
if(has_com) {
c882: 2800 cmp r0, #0
c884: d073 beq.n c96e <lv_draw_rect+0x63e>
if(ca.y1 <= h_half) ca.y1 = h_half + 1;
c886: f9bd 307a ldrsh.w r3, [sp, #122] ; 0x7a
c88a: 9a0c ldr r2, [sp, #48] ; 0x30
c88c: 4293 cmp r3, r2
c88e: dc03 bgt.n c898 <lv_draw_rect+0x568>
c890: 9b0f ldr r3, [sp, #60] ; 0x3c
c892: 3301 adds r3, #1
c894: f8ad 307a strh.w r3, [sp, #122] ; 0x7a
if(ca.x1 <= w_half) ca.x1 = w_half + 1;
c898: f9bd 3078 ldrsh.w r3, [sp, #120] ; 0x78
c89c: 9a0d ldr r2, [sp, #52] ; 0x34
c89e: 4293 cmp r3, r2
c8a0: dc03 bgt.n c8aa <lv_draw_rect+0x57a>
c8a2: 9b10 ldr r3, [sp, #64] ; 0x40
c8a4: 3301 adds r3, #1
c8a6: f8ad 3078 strh.w r3, [sp, #120] ; 0x78
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
c8aa: f9bd 2078 ldrsh.w r2, [sp, #120] ; 0x78
c8ae: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c
c8b2: 3301 adds r3, #1
c8b4: 1a9b subs r3, r3, r2
c8b6: b21b sxth r3, r3
c8b8: 9308 str r3, [sp, #32]
if(w > 0) {
c8ba: 2b00 cmp r3, #0
c8bc: dd57 ble.n c96e <lv_draw_rect+0x63e>
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
c8be: f9bd 407e ldrsh.w r4, [sp, #126] ; 0x7e
c8c2: f9bd 607a ldrsh.w r6, [sp, #122] ; 0x7a
sh_buf_tmp += corner_size * (a.y2 - ca.y2);
c8c6: f9bd 5076 ldrsh.w r5, [sp, #118] ; 0x76
c8ca: 1b2d subs r5, r5, r4
sh_buf_tmp = sh_buf + (ca.x1 - a.x1);
c8cc: f9bd 3070 ldrsh.w r3, [sp, #112] ; 0x70
c8d0: 1ad2 subs r2, r2, r3
sh_buf_tmp += corner_size * (a.y2 - ca.y2);
c8d2: fb09 2505 mla r5, r9, r5, r2
c8d6: 9b0a ldr r3, [sp, #40] ; 0x28
c8d8: 441d add r5, r3
c8da: f10d 0277 add.w r2, sp, #119 ; 0x77
uint8_t * d8 = (uint8_t *)dst;
c8de: ab22 add r3, sp, #136 ; 0x88
while(len) {
c8e0: a824 add r0, sp, #144 ; 0x90
*d8 = *s8;
c8e2: f812 1f01 ldrb.w r1, [r2, #1]!
c8e6: f803 1b01 strb.w r1, [r3], #1
while(len) {
c8ea: 4283 cmp r3, r0
c8ec: d1f9 bne.n c8e2 <lv_draw_rect+0x5b2>
fa.y1 = fa.y2; /*Fill from bottom to top*/
c8ee: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e
c8f2: f8ad 308a strh.w r3, [sp, #138] ; 0x8a
c8f6: 1c67 adds r7, r4, #1
c8f8: 1bbf subs r7, r7, r6
for(y = 0; y < h; y++) {
c8fa: b23f sxth r7, r7
c8fc: 2f00 cmp r7, #0
c8fe: dd36 ble.n c96e <lv_draw_rect+0x63e>
c900: 2600 movs r6, #0
_lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf,
c902: f8df 813c ldr.w r8, [pc, #316] ; ca40 <lv_draw_rect+0x710>
c906: f8cd b040 str.w fp, [sp, #64] ; 0x40
c90a: 46bb mov fp, r7
c90c: 9b09 ldr r3, [sp, #36] ; 0x24
c90e: 930b str r3, [sp, #44] ; 0x2c
_lv_memcpy(mask_buf, sh_buf_tmp, w);
c910: 9a08 ldr r2, [sp, #32]
c912: 4629 mov r1, r5
c914: 9f05 ldr r7, [sp, #20]
c916: 4638 mov r0, r7
c918: 4c47 ldr r4, [pc, #284] ; (ca38 <lv_draw_rect+0x708>)
c91a: 47a0 blx r4
mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w);
c91c: ac30 add r4, sp, #192 ; 0xc0
c91e: 9b08 ldr r3, [sp, #32]
c920: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a
c924: f934 1d38 ldrsh.w r1, [r4, #-56]!
c928: 9705 str r7, [sp, #20]
c92a: 4638 mov r0, r7
c92c: 4f43 ldr r7, [pc, #268] ; (ca3c <lv_draw_rect+0x70c>)
c92e: 47b8 blx r7
if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED;
c930: 2801 cmp r0, #1
c932: bf08 it eq
c934: 2002 moveq r0, #2
_lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf,
c936: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29
c93a: 9302 str r3, [sp, #8]
c93c: 9a0b ldr r2, [sp, #44] ; 0x2c
c93e: 9201 str r2, [sp, #4]
c940: 9000 str r0, [sp, #0]
c942: 9b05 ldr r3, [sp, #20]
c944: f8ba 201e ldrh.w r2, [sl, #30]
c948: 4621 mov r1, r4
c94a: 9804 ldr r0, [sp, #16]
c94c: 47c0 blx r8
fa.y1--;
c94e: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a
c952: 3b01 subs r3, #1
c954: f8ad 308a strh.w r3, [sp, #138] ; 0x8a
fa.y2--;
c958: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e
c95c: 3b01 subs r3, #1
c95e: f8ad 308e strh.w r3, [sp, #142] ; 0x8e
c962: 444d add r5, r9
for(y = 0; y < h; y++) {
c964: 3601 adds r6, #1
c966: 455e cmp r6, fp
c968: d1d2 bne.n c910 <lv_draw_rect+0x5e0>
c96a: f8dd b040 ldr.w fp, [sp, #64] ; 0x40
a.x2 = sh_area.x2;
c96e: f9bd 305c ldrsh.w r3, [sp, #92] ; 0x5c
c972: f8ad 3074 strh.w r3, [sp, #116] ; 0x74
a.x1 = a.x2 - corner_size + 1;
c976: 3301 adds r3, #1
c978: eba3 030b sub.w r3, r3, fp
c97c: f8ad 3070 strh.w r3, [sp, #112] ; 0x70
a.y1 = sh_area.y1 + corner_size;
c980: f8bd 305a ldrh.w r3, [sp, #90] ; 0x5a
c984: 445b add r3, fp
c986: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
a.y2 = sh_area.y2 - corner_size;
c98a: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e
c98e: eba3 030b sub.w r3, r3, fp
c992: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
has_com = _lv_area_intersect(&ca, &a, clip);
c996: 9a04 ldr r2, [sp, #16]
c998: a91c add r1, sp, #112 ; 0x70
c99a: a81e add r0, sp, #120 ; 0x78
c99c: 4b25 ldr r3, [pc, #148] ; (ca34 <lv_draw_rect+0x704>)
c99e: 4798 blx r3
if(has_com) {
c9a0: 2800 cmp r0, #0
c9a2: f000 8085 beq.w cab0 <lv_draw_rect+0x780>
if(simple_mode) ca.x1 = LV_MATH_MAX(ca.x1, coords->x2);
c9a6: 9b07 ldr r3, [sp, #28]
c9a8: b14b cbz r3, c9be <lv_draw_rect+0x68e>
c9aa: 9b06 ldr r3, [sp, #24]
c9ac: f9b3 3004 ldrsh.w r3, [r3, #4]
c9b0: f9bd 2078 ldrsh.w r2, [sp, #120] ; 0x78
c9b4: 4293 cmp r3, r2
c9b6: bfb8 it lt
c9b8: 4613 movlt r3, r2
c9ba: f8ad 3078 strh.w r3, [sp, #120] ; 0x78
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
c9be: f9bd 3078 ldrsh.w r3, [sp, #120] ; 0x78
c9c2: f8bd 207c ldrh.w r2, [sp, #124] ; 0x7c
c9c6: 3201 adds r2, #1
c9c8: 1ad2 subs r2, r2, r3
c9ca: fa0f f882 sxth.w r8, r2
if(w > 0) {
c9ce: f1b8 0f00 cmp.w r8, #0
c9d2: dd6d ble.n cab0 <lv_draw_rect+0x780>
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
c9d4: f8bd 407e ldrh.w r4, [sp, #126] ; 0x7e
c9d8: 3401 adds r4, #1
c9da: f8bd 207a ldrh.w r2, [sp, #122] ; 0x7a
c9de: 1aa4 subs r4, r4, r2
c9e0: b224 sxth r4, r4
sh_buf_tmp = sh_buf + corner_size * (corner_size - 1);
c9e2: f109 31ff add.w r1, r9, #4294967295
sh_buf_tmp += ca.x1 - a.x1;
c9e6: f9bd 2070 ldrsh.w r2, [sp, #112] ; 0x70
c9ea: 1a9b subs r3, r3, r2
c9ec: fb09 3301 mla r3, r9, r1, r3
c9f0: 9a0a ldr r2, [sp, #40] ; 0x28
c9f2: 18d3 adds r3, r2, r3
c9f4: 9308 str r3, [sp, #32]
c9f6: f10d 0277 add.w r2, sp, #119 ; 0x77
uint8_t * d8 = (uint8_t *)dst;
c9fa: ab22 add r3, sp, #136 ; 0x88
while(len) {
c9fc: a824 add r0, sp, #144 ; 0x90
*d8 = *s8;
c9fe: f812 1f01 ldrb.w r1, [r2, #1]!
ca02: f803 1b01 strb.w r1, [r3], #1
while(len) {
ca06: 4283 cmp r3, r0
ca08: d1f9 bne.n c9fe <lv_draw_rect+0x6ce>
fa.y2 = fa.y1;
ca0a: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a
ca0e: f8ad 308e strh.w r3, [sp, #142] ; 0x8e
for(y = 0; y < h; y++) {
ca12: 4625 mov r5, r4
ca14: 2c00 cmp r4, #0
ca16: dd4b ble.n cab0 <lv_draw_rect+0x780>
ca18: 2400 movs r4, #0
_lv_memcpy(mask_buf, sh_buf_tmp, w);
ca1a: 4f07 ldr r7, [pc, #28] ; (ca38 <lv_draw_rect+0x708>)
_lv_blend_fill(clip, &fa,
ca1c: f8cd 902c str.w r9, [sp, #44] ; 0x2c
ca20: 46a9 mov r9, r5
ca22: 9d07 ldr r5, [sp, #28]
ca24: e03a b.n ca9c <lv_draw_rect+0x76c>
ca26: bf00 nop
ca28: 0001293d .word 0x0001293d
ca2c: 0000c02d .word 0x0000c02d
ca30: 0000bdc1 .word 0x0000bdc1
ca34: 00011519 .word 0x00011519
ca38: 00012655 .word 0x00012655
ca3c: 0000be1d .word 0x0000be1d
ca40: 00007751 .word 0x00007751
else if(dsc->shadow_ofs_x != 0 || dsc->shadow_ofs_y != 0) simple_mode = false;
ca44: 2300 movs r3, #0
ca46: 9307 str r3, [sp, #28]
ca48: e662 b.n c710 <lv_draw_rect+0x3e0>
ca4a: 2300 movs r3, #0
ca4c: 9307 str r3, [sp, #28]
ca4e: e65f b.n c710 <lv_draw_rect+0x3e0>
mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w);
ca50: 4643 mov r3, r8
ca52: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a
ca56: f9bd 1088 ldrsh.w r1, [sp, #136] ; 0x88
ca5a: 9805 ldr r0, [sp, #20]
ca5c: 4e23 ldr r6, [pc, #140] ; (caec <lv_draw_rect+0x7bc>)
ca5e: 47b0 blx r6
if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED;
ca60: 2801 cmp r0, #1
ca62: bf08 it eq
ca64: 2002 moveq r0, #2
_lv_blend_fill(clip, &fa,
ca66: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29
ca6a: 9302 str r3, [sp, #8]
ca6c: f89a 3028 ldrb.w r3, [sl, #40] ; 0x28
ca70: 9301 str r3, [sp, #4]
ca72: 9000 str r0, [sp, #0]
ca74: 9b05 ldr r3, [sp, #20]
ca76: f8ba 201e ldrh.w r2, [sl, #30]
ca7a: a922 add r1, sp, #136 ; 0x88
ca7c: 9804 ldr r0, [sp, #16]
ca7e: 4e1c ldr r6, [pc, #112] ; (caf0 <lv_draw_rect+0x7c0>)
ca80: 47b0 blx r6
fa.y1++;
ca82: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a
ca86: 3301 adds r3, #1
ca88: f8ad 308a strh.w r3, [sp, #138] ; 0x8a
fa.y2++;
ca8c: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e
ca90: 3301 adds r3, #1
ca92: f8ad 308e strh.w r3, [sp, #142] ; 0x8e
for(y = 0; y < h; y++) {
ca96: 3401 adds r4, #1
ca98: 454c cmp r4, r9
ca9a: d007 beq.n caac <lv_draw_rect+0x77c>
_lv_memcpy(mask_buf, sh_buf_tmp, w);
ca9c: 4642 mov r2, r8
ca9e: 9908 ldr r1, [sp, #32]
caa0: 9805 ldr r0, [sp, #20]
caa2: 47b8 blx r7
if(simple_mode) {
caa4: 2d00 cmp r5, #0
caa6: d0d3 beq.n ca50 <lv_draw_rect+0x720>
mask_res = LV_DRAW_MASK_RES_CHANGED;
caa8: 2002 movs r0, #2
caaa: e7dc b.n ca66 <lv_draw_rect+0x736>
caac: f8dd 902c ldr.w r9, [sp, #44] ; 0x2c
for(y = 0; y < corner_size; y++) {
cab0: f1b9 0f00 cmp.w r9, #0
cab4: dd1e ble.n caf4 <lv_draw_rect+0x7c4>
for(x = 0; x < corner_size / 2; x++) {
cab6: eb09 77d9 add.w r7, r9, r9, lsr #31
caba: 107f asrs r7, r7, #1
cabc: 9d0a ldr r5, [sp, #40] ; 0x28
cabe: 2600 movs r6, #0
cac0: e00c b.n cadc <lv_draw_rect+0x7ac>
lv_opa_t tmp = sh_buf_tmp[x];
cac2: 7819 ldrb r1, [r3, #0]
sh_buf_tmp[x] = sh_buf_tmp[corner_size - x - 1];
cac4: f812 0c01 ldrb.w r0, [r2, #-1]
cac8: f803 0b01 strb.w r0, [r3], #1
sh_buf_tmp[corner_size - x - 1] = tmp;
cacc: f802 1d01 strb.w r1, [r2, #-1]!
for(x = 0; x < corner_size / 2; x++) {
cad0: 42a3 cmp r3, r4
cad2: d1f6 bne.n cac2 <lv_draw_rect+0x792>
cad4: 444d add r5, r9
for(y = 0; y < corner_size; y++) {
cad6: 3601 adds r6, #1
cad8: 45b1 cmp r9, r6
cada: d00b beq.n caf4 <lv_draw_rect+0x7c4>
for(x = 0; x < corner_size / 2; x++) {
cadc: 2f00 cmp r7, #0
cade: ddf9 ble.n cad4 <lv_draw_rect+0x7a4>
cae0: 462b mov r3, r5
cae2: eb05 0209 add.w r2, r5, r9
cae6: 19ec adds r4, r5, r7
cae8: e7eb b.n cac2 <lv_draw_rect+0x792>
caea: bf00 nop
caec: 0000be1d .word 0x0000be1d
caf0: 00007751 .word 0x00007751
a.x1 = sh_area.x1;
caf4: f9bd 3058 ldrsh.w r3, [sp, #88] ; 0x58
caf8: f8ad 3070 strh.w r3, [sp, #112] ; 0x70
a.x2 = a.x1 + corner_size - 1;
cafc: 3b01 subs r3, #1
cafe: 445b add r3, fp
cb00: f8ad 3074 strh.w r3, [sp, #116] ; 0x74
a.y1 = sh_area.y1;
cb04: f9bd 305a ldrsh.w r3, [sp, #90] ; 0x5a
cb08: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
a.y2 = a.y1 + corner_size - 1;
cb0c: 3b01 subs r3, #1
cb0e: 445b add r3, fp
cb10: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
has_com = _lv_area_intersect(&ca, &a, clip);
cb14: 9a04 ldr r2, [sp, #16]
cb16: a91c add r1, sp, #112 ; 0x70
cb18: a81e add r0, sp, #120 ; 0x78
cb1a: 4bae ldr r3, [pc, #696] ; (cdd4 <lv_draw_rect+0xaa4>)
cb1c: 4798 blx r3
if(has_com) {
cb1e: 2800 cmp r0, #0
cb20: d071 beq.n cc06 <lv_draw_rect+0x8d6>
if(ca.y2 > h_half) ca.y2 = h_half;
cb22: f9bd 307e ldrsh.w r3, [sp, #126] ; 0x7e
cb26: 990c ldr r1, [sp, #48] ; 0x30
cb28: 428b cmp r3, r1
cb2a: bfc4 itt gt
cb2c: 460b movgt r3, r1
cb2e: f8ad 307e strhgt.w r3, [sp, #126] ; 0x7e
if(ca.x2 > w_half) ca.x2 = w_half;
cb32: f9bd 307c ldrsh.w r3, [sp, #124] ; 0x7c
cb36: 990d ldr r1, [sp, #52] ; 0x34
cb38: 428b cmp r3, r1
cb3a: bfc4 itt gt
cb3c: 460b movgt r3, r1
cb3e: f8ad 307c strhgt.w r3, [sp, #124] ; 0x7c
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
cb42: f9bd 2078 ldrsh.w r2, [sp, #120] ; 0x78
cb46: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c
cb4a: 3301 adds r3, #1
cb4c: 1a9b subs r3, r3, r2
cb4e: b21b sxth r3, r3
cb50: 9308 str r3, [sp, #32]
if(w > 0) {
cb52: 2b00 cmp r3, #0
cb54: dd57 ble.n cc06 <lv_draw_rect+0x8d6>
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
cb56: f9bd 707e ldrsh.w r7, [sp, #126] ; 0x7e
cb5a: f9bd 407a ldrsh.w r4, [sp, #122] ; 0x7a
sh_buf_tmp += corner_size * (ca.y1 - a.y1);
cb5e: f9bd 5072 ldrsh.w r5, [sp, #114] ; 0x72
cb62: 1b65 subs r5, r4, r5
sh_buf_tmp = sh_buf + (ca.x1 - a.x1);
cb64: f9bd 3070 ldrsh.w r3, [sp, #112] ; 0x70
cb68: 1ad2 subs r2, r2, r3
sh_buf_tmp += corner_size * (ca.y1 - a.y1);
cb6a: fb09 2505 mla r5, r9, r5, r2
cb6e: 9b0a ldr r3, [sp, #40] ; 0x28
cb70: 441d add r5, r3
cb72: f10d 0277 add.w r2, sp, #119 ; 0x77
uint8_t * d8 = (uint8_t *)dst;
cb76: ab22 add r3, sp, #136 ; 0x88
while(len) {
cb78: a824 add r0, sp, #144 ; 0x90
*d8 = *s8;
cb7a: f812 1f01 ldrb.w r1, [r2, #1]!
cb7e: f803 1b01 strb.w r1, [r3], #1
while(len) {
cb82: 4283 cmp r3, r0
cb84: d1f9 bne.n cb7a <lv_draw_rect+0x84a>
fa.y2 = fa.y1;
cb86: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a
cb8a: f8ad 308e strh.w r3, [sp, #142] ; 0x8e
cb8e: 3701 adds r7, #1
cb90: 1b3f subs r7, r7, r4
for(y = 0; y < h; y++) {
cb92: b23f sxth r7, r7
cb94: 2f00 cmp r7, #0
cb96: dd36 ble.n cc06 <lv_draw_rect+0x8d6>
cb98: 2600 movs r6, #0
_lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf,
cb9a: f8df 8244 ldr.w r8, [pc, #580] ; cde0 <lv_draw_rect+0xab0>
cb9e: f8cd b040 str.w fp, [sp, #64] ; 0x40
cba2: 46bb mov fp, r7
cba4: 9b09 ldr r3, [sp, #36] ; 0x24
cba6: 930b str r3, [sp, #44] ; 0x2c
_lv_memcpy(mask_buf, sh_buf_tmp, w);
cba8: 9a08 ldr r2, [sp, #32]
cbaa: 4629 mov r1, r5
cbac: 9f05 ldr r7, [sp, #20]
cbae: 4638 mov r0, r7
cbb0: 4c89 ldr r4, [pc, #548] ; (cdd8 <lv_draw_rect+0xaa8>)
cbb2: 47a0 blx r4
mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w);
cbb4: ac30 add r4, sp, #192 ; 0xc0
cbb6: 9b08 ldr r3, [sp, #32]
cbb8: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a
cbbc: f934 1d38 ldrsh.w r1, [r4, #-56]!
cbc0: 9705 str r7, [sp, #20]
cbc2: 4638 mov r0, r7
cbc4: 4f85 ldr r7, [pc, #532] ; (cddc <lv_draw_rect+0xaac>)
cbc6: 47b8 blx r7
if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED;
cbc8: 2801 cmp r0, #1
cbca: bf08 it eq
cbcc: 2002 moveq r0, #2
_lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf,
cbce: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29
cbd2: 9302 str r3, [sp, #8]
cbd4: 9a0b ldr r2, [sp, #44] ; 0x2c
cbd6: 9201 str r2, [sp, #4]
cbd8: 9000 str r0, [sp, #0]
cbda: 9b05 ldr r3, [sp, #20]
cbdc: f8ba 201e ldrh.w r2, [sl, #30]
cbe0: 4621 mov r1, r4
cbe2: 9804 ldr r0, [sp, #16]
cbe4: 47c0 blx r8
fa.y1++;
cbe6: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a
cbea: 3301 adds r3, #1
cbec: f8ad 308a strh.w r3, [sp, #138] ; 0x8a
fa.y2++;
cbf0: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e
cbf4: 3301 adds r3, #1
cbf6: f8ad 308e strh.w r3, [sp, #142] ; 0x8e
cbfa: 444d add r5, r9
for(y = 0; y < h; y++) {
cbfc: 3601 adds r6, #1
cbfe: 455e cmp r6, fp
cc00: d1d2 bne.n cba8 <lv_draw_rect+0x878>
cc02: f8dd b040 ldr.w fp, [sp, #64] ; 0x40
a.x1 = sh_area.x1;
cc06: f9bd 3058 ldrsh.w r3, [sp, #88] ; 0x58
cc0a: f8ad 3070 strh.w r3, [sp, #112] ; 0x70
a.x2 = a.x1 + corner_size - 1;
cc0e: 3b01 subs r3, #1
cc10: 445b add r3, fp
cc12: f8ad 3074 strh.w r3, [sp, #116] ; 0x74
a.y1 = sh_area.y2 - corner_size + 1;
cc16: f9bd 205e ldrsh.w r2, [sp, #94] ; 0x5e
cc1a: 1c53 adds r3, r2, #1
cc1c: eba3 030b sub.w r3, r3, fp
cc20: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
a.y2 = sh_area.y2;
cc24: f8ad 2076 strh.w r2, [sp, #118] ; 0x76
has_com = _lv_area_intersect(&ca, &a, clip);
cc28: 9a04 ldr r2, [sp, #16]
cc2a: a91c add r1, sp, #112 ; 0x70
cc2c: a81e add r0, sp, #120 ; 0x78
cc2e: 4b69 ldr r3, [pc, #420] ; (cdd4 <lv_draw_rect+0xaa4>)
cc30: 4798 blx r3
if(has_com) {
cc32: 2800 cmp r0, #0
cc34: d072 beq.n cd1c <lv_draw_rect+0x9ec>
if(ca.y1 <= h_half) ca.y1 = h_half + 1;
cc36: f9bd 307a ldrsh.w r3, [sp, #122] ; 0x7a
cc3a: 9a0c ldr r2, [sp, #48] ; 0x30
cc3c: 4293 cmp r3, r2
cc3e: dc03 bgt.n cc48 <lv_draw_rect+0x918>
cc40: 9b0f ldr r3, [sp, #60] ; 0x3c
cc42: 3301 adds r3, #1
cc44: f8ad 307a strh.w r3, [sp, #122] ; 0x7a
if(ca.x2 > w_half) ca.x2 = w_half;
cc48: f9bd 307c ldrsh.w r3, [sp, #124] ; 0x7c
cc4c: 990d ldr r1, [sp, #52] ; 0x34
cc4e: 428b cmp r3, r1
cc50: bfc4 itt gt
cc52: 460b movgt r3, r1
cc54: f8ad 307c strhgt.w r3, [sp, #124] ; 0x7c
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
cc58: f9bd 2078 ldrsh.w r2, [sp, #120] ; 0x78
cc5c: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c
cc60: 3301 adds r3, #1
cc62: 1a9b subs r3, r3, r2
cc64: b21b sxth r3, r3
cc66: 9308 str r3, [sp, #32]
if(w > 0) {
cc68: 2b00 cmp r3, #0
cc6a: dd57 ble.n cd1c <lv_draw_rect+0x9ec>
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
cc6c: f9bd 407e ldrsh.w r4, [sp, #126] ; 0x7e
cc70: f9bd 607a ldrsh.w r6, [sp, #122] ; 0x7a
sh_buf_tmp += corner_size * (a.y2 - ca.y2);
cc74: f9bd 5076 ldrsh.w r5, [sp, #118] ; 0x76
cc78: 1b2d subs r5, r5, r4
sh_buf_tmp = sh_buf + (ca.x1 - a.x1);
cc7a: f9bd 3070 ldrsh.w r3, [sp, #112] ; 0x70
cc7e: 1ad2 subs r2, r2, r3
sh_buf_tmp += corner_size * (a.y2 - ca.y2);
cc80: fb09 2505 mla r5, r9, r5, r2
cc84: 9b0a ldr r3, [sp, #40] ; 0x28
cc86: 441d add r5, r3
cc88: f10d 0277 add.w r2, sp, #119 ; 0x77
uint8_t * d8 = (uint8_t *)dst;
cc8c: ab22 add r3, sp, #136 ; 0x88
while(len) {
cc8e: a824 add r0, sp, #144 ; 0x90
*d8 = *s8;
cc90: f812 1f01 ldrb.w r1, [r2, #1]!
cc94: f803 1b01 strb.w r1, [r3], #1
while(len) {
cc98: 4283 cmp r3, r0
cc9a: d1f9 bne.n cc90 <lv_draw_rect+0x960>
fa.y1 = fa.y2; /*Fill from bottom to top*/
cc9c: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e
cca0: f8ad 308a strh.w r3, [sp, #138] ; 0x8a
cca4: 1c67 adds r7, r4, #1
cca6: 1bbf subs r7, r7, r6
for(y = 0; y < h; y++) {
cca8: b23f sxth r7, r7
ccaa: 2f00 cmp r7, #0
ccac: dd36 ble.n cd1c <lv_draw_rect+0x9ec>
ccae: 2600 movs r6, #0
_lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf,
ccb0: f8df 812c ldr.w r8, [pc, #300] ; cde0 <lv_draw_rect+0xab0>
ccb4: f8cd b030 str.w fp, [sp, #48] ; 0x30
ccb8: 46bb mov fp, r7
ccba: 9b09 ldr r3, [sp, #36] ; 0x24
ccbc: 930b str r3, [sp, #44] ; 0x2c
_lv_memcpy(mask_buf, sh_buf_tmp, w);
ccbe: 9a08 ldr r2, [sp, #32]
ccc0: 4629 mov r1, r5
ccc2: 9f05 ldr r7, [sp, #20]
ccc4: 4638 mov r0, r7
ccc6: 4c44 ldr r4, [pc, #272] ; (cdd8 <lv_draw_rect+0xaa8>)
ccc8: 47a0 blx r4
mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w);
ccca: ac30 add r4, sp, #192 ; 0xc0
cccc: 9b08 ldr r3, [sp, #32]
ccce: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a
ccd2: f934 1d38 ldrsh.w r1, [r4, #-56]!
ccd6: 9705 str r7, [sp, #20]
ccd8: 4638 mov r0, r7
ccda: 4f40 ldr r7, [pc, #256] ; (cddc <lv_draw_rect+0xaac>)
ccdc: 47b8 blx r7
if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED;
ccde: 2801 cmp r0, #1
cce0: bf08 it eq
cce2: 2002 moveq r0, #2
_lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf,
cce4: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29
cce8: 9302 str r3, [sp, #8]
ccea: 9a0b ldr r2, [sp, #44] ; 0x2c
ccec: 9201 str r2, [sp, #4]
ccee: 9000 str r0, [sp, #0]
ccf0: 9b05 ldr r3, [sp, #20]
ccf2: f8ba 201e ldrh.w r2, [sl, #30]
ccf6: 4621 mov r1, r4
ccf8: 9804 ldr r0, [sp, #16]
ccfa: 47c0 blx r8
fa.y1--;
ccfc: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a
cd00: 3b01 subs r3, #1
cd02: f8ad 308a strh.w r3, [sp, #138] ; 0x8a
fa.y2--;
cd06: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e
cd0a: 3b01 subs r3, #1
cd0c: f8ad 308e strh.w r3, [sp, #142] ; 0x8e
cd10: 444d add r5, r9
for(y = 0; y < h; y++) {
cd12: 3601 adds r6, #1
cd14: 455e cmp r6, fp
cd16: d1d2 bne.n ccbe <lv_draw_rect+0x98e>
cd18: f8dd b030 ldr.w fp, [sp, #48] ; 0x30
a.x1 = sh_area.x1;
cd1c: f9bd 3058 ldrsh.w r3, [sp, #88] ; 0x58
cd20: f8ad 3070 strh.w r3, [sp, #112] ; 0x70
a.x2 = a.x1 + corner_size - 1;
cd24: 3b01 subs r3, #1
cd26: 445b add r3, fp
cd28: f8ad 3074 strh.w r3, [sp, #116] ; 0x74
a.y1 = sh_area.y1 + corner_size;
cd2c: f8bd 305a ldrh.w r3, [sp, #90] ; 0x5a
cd30: 445b add r3, fp
cd32: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
a.y2 = sh_area.y2 - corner_size;
cd36: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e
cd3a: eba3 030b sub.w r3, r3, fp
cd3e: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
has_com = _lv_area_intersect(&ca, &a, clip);
cd42: 9a04 ldr r2, [sp, #16]
cd44: a91c add r1, sp, #112 ; 0x70
cd46: a81e add r0, sp, #120 ; 0x78
cd48: 4b22 ldr r3, [pc, #136] ; (cdd4 <lv_draw_rect+0xaa4>)
cd4a: 4798 blx r3
if(has_com) {
cd4c: 2800 cmp r0, #0
cd4e: d079 beq.n ce44 <lv_draw_rect+0xb14>
if(simple_mode) ca.x2 = LV_MATH_MIN(coords->x1, ca.x2);
cd50: 9b07 ldr r3, [sp, #28]
cd52: b14b cbz r3, cd68 <lv_draw_rect+0xa38>
cd54: f9bd 307c ldrsh.w r3, [sp, #124] ; 0x7c
cd58: 9a06 ldr r2, [sp, #24]
cd5a: f9b2 2000 ldrsh.w r2, [r2]
cd5e: 4293 cmp r3, r2
cd60: bfa8 it ge
cd62: 4613 movge r3, r2
cd64: f8ad 307c strh.w r3, [sp, #124] ; 0x7c
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
cd68: f9bd 3078 ldrsh.w r3, [sp, #120] ; 0x78
cd6c: f8bd 807c ldrh.w r8, [sp, #124] ; 0x7c
cd70: f108 0801 add.w r8, r8, #1
cd74: eba8 0803 sub.w r8, r8, r3
cd78: fa0f f888 sxth.w r8, r8
if(w > 0) {
cd7c: f1b8 0f00 cmp.w r8, #0
cd80: dd60 ble.n ce44 <lv_draw_rect+0xb14>
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
cd82: f8bd 407e ldrh.w r4, [sp, #126] ; 0x7e
cd86: 3401 adds r4, #1
cd88: f8bd 207a ldrh.w r2, [sp, #122] ; 0x7a
cd8c: 1aa4 subs r4, r4, r2
cd8e: b224 sxth r4, r4
sh_buf_tmp = sh_buf + corner_size * (corner_size - 1);
cd90: f109 31ff add.w r1, r9, #4294967295
sh_buf_tmp += ca.x1 - a.x1;
cd94: f9bd 2070 ldrsh.w r2, [sp, #112] ; 0x70
cd98: 1a9b subs r3, r3, r2
cd9a: fb09 3301 mla r3, r9, r1, r3
cd9e: 9a0a ldr r2, [sp, #40] ; 0x28
cda0: 18d3 adds r3, r2, r3
cda2: 9308 str r3, [sp, #32]
cda4: f10d 0277 add.w r2, sp, #119 ; 0x77
uint8_t * d8 = (uint8_t *)dst;
cda8: ab22 add r3, sp, #136 ; 0x88
while(len) {
cdaa: a824 add r0, sp, #144 ; 0x90
*d8 = *s8;
cdac: f812 1f01 ldrb.w r1, [r2, #1]!
cdb0: f803 1b01 strb.w r1, [r3], #1
while(len) {
cdb4: 4283 cmp r3, r0
cdb6: d1f9 bne.n cdac <lv_draw_rect+0xa7c>
fa.y2 = fa.y1;
cdb8: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a
cdbc: f8ad 308e strh.w r3, [sp, #142] ; 0x8e
for(y = 0; y < h; y++) {
cdc0: 4625 mov r5, r4
cdc2: 2c00 cmp r4, #0
cdc4: dd3e ble.n ce44 <lv_draw_rect+0xb14>
cdc6: 2400 movs r4, #0
_lv_memcpy(mask_buf, sh_buf_tmp, w);
cdc8: 4f03 ldr r7, [pc, #12] ; (cdd8 <lv_draw_rect+0xaa8>)
_lv_blend_fill(clip, &fa,
cdca: f8cd 902c str.w r9, [sp, #44] ; 0x2c
cdce: 46a9 mov r9, r5
cdd0: 9d07 ldr r5, [sp, #28]
cdd2: e02d b.n ce30 <lv_draw_rect+0xb00>
cdd4: 00011519 .word 0x00011519
cdd8: 00012655 .word 0x00012655
cddc: 0000be1d .word 0x0000be1d
cde0: 00007751 .word 0x00007751
mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w);
cde4: 4643 mov r3, r8
cde6: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a
cdea: f9bd 1088 ldrsh.w r1, [sp, #136] ; 0x88
cdee: 9805 ldr r0, [sp, #20]
cdf0: 4eaa ldr r6, [pc, #680] ; (d09c <lv_draw_rect+0xd6c>)
cdf2: 47b0 blx r6
if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED;
cdf4: 2801 cmp r0, #1
cdf6: bf08 it eq
cdf8: 2002 moveq r0, #2
_lv_blend_fill(clip, &fa,
cdfa: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29
cdfe: 9302 str r3, [sp, #8]
ce00: f89a 3028 ldrb.w r3, [sl, #40] ; 0x28
ce04: 9301 str r3, [sp, #4]
ce06: 9000 str r0, [sp, #0]
ce08: 9b05 ldr r3, [sp, #20]
ce0a: f8ba 201e ldrh.w r2, [sl, #30]
ce0e: a922 add r1, sp, #136 ; 0x88
ce10: 9804 ldr r0, [sp, #16]
ce12: 4ea3 ldr r6, [pc, #652] ; (d0a0 <lv_draw_rect+0xd70>)
ce14: 47b0 blx r6
fa.y1++;
ce16: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a
ce1a: 3301 adds r3, #1
ce1c: f8ad 308a strh.w r3, [sp, #138] ; 0x8a
fa.y2++;
ce20: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e
ce24: 3301 adds r3, #1
ce26: f8ad 308e strh.w r3, [sp, #142] ; 0x8e
for(y = 0; y < h; y++) {
ce2a: 3401 adds r4, #1
ce2c: 454c cmp r4, r9
ce2e: d007 beq.n ce40 <lv_draw_rect+0xb10>
_lv_memcpy(mask_buf, sh_buf_tmp, w);
ce30: 4642 mov r2, r8
ce32: 9908 ldr r1, [sp, #32]
ce34: 9805 ldr r0, [sp, #20]
ce36: 47b8 blx r7
if(simple_mode) {
ce38: 2d00 cmp r5, #0
ce3a: d0d3 beq.n cde4 <lv_draw_rect+0xab4>
mask_res = LV_DRAW_MASK_RES_CHANGED;
ce3c: 2002 movs r0, #2
ce3e: e7dc b.n cdfa <lv_draw_rect+0xaca>
ce40: f8dd 902c ldr.w r9, [sp, #44] ; 0x2c
a.x1 = sh_area.x1 + corner_size;
ce44: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58
ce48: 445b add r3, fp
ce4a: f8ad 3070 strh.w r3, [sp, #112] ; 0x70
a.x2 = sh_area.x2 - corner_size;
ce4e: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c
ce52: eba3 030b sub.w r3, r3, fp
ce56: f8ad 3074 strh.w r3, [sp, #116] ; 0x74
a.y1 = sh_area.y1;
ce5a: f9bd 305a ldrsh.w r3, [sp, #90] ; 0x5a
ce5e: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
a.y2 = sh_area.y1 + corner_size - 1;
ce62: 3b01 subs r3, #1
ce64: 445b add r3, fp
ce66: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
has_com = _lv_area_intersect(&ca, &a, clip);
ce6a: 9a04 ldr r2, [sp, #16]
ce6c: a91c add r1, sp, #112 ; 0x70
ce6e: a81e add r0, sp, #120 ; 0x78
ce70: 4b8c ldr r3, [pc, #560] ; (d0a4 <lv_draw_rect+0xd74>)
ce72: 4798 blx r3
if(has_com) {
ce74: 2800 cmp r0, #0
ce76: d07d beq.n cf74 <lv_draw_rect+0xc44>
if(simple_mode) ca.y2 = LV_MATH_MIN(ca.y2, coords->y1);
ce78: 9b07 ldr r3, [sp, #28]
ce7a: b14b cbz r3, ce90 <lv_draw_rect+0xb60>
ce7c: 9b06 ldr r3, [sp, #24]
ce7e: f9b3 3002 ldrsh.w r3, [r3, #2]
ce82: f9bd 207e ldrsh.w r2, [sp, #126] ; 0x7e
ce86: 4293 cmp r3, r2
ce88: bfa8 it ge
ce8a: 4613 movge r3, r2
ce8c: f8ad 307e strh.w r3, [sp, #126] ; 0x7e
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
ce90: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c
ce94: 3301 adds r3, #1
ce96: f8bd 2078 ldrh.w r2, [sp, #120] ; 0x78
ce9a: 1a9b subs r3, r3, r2
ce9c: b21b sxth r3, r3
ce9e: 9308 str r3, [sp, #32]
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
cea0: f9bd 307a ldrsh.w r3, [sp, #122] ; 0x7a
cea4: f8bd 507e ldrh.w r5, [sp, #126] ; 0x7e
cea8: 3501 adds r5, #1
ceaa: 1aed subs r5, r5, r3
ceac: b22d sxth r5, r5
sh_buf_tmp = sh_buf + corner_size - 1;
ceae: 46c8 mov r8, r9
sh_buf_tmp += corner_size * (ca.y1 - a.y1);
ceb0: f9bd 4072 ldrsh.w r4, [sp, #114] ; 0x72
ceb4: 1b1c subs r4, r3, r4
sh_buf_tmp = sh_buf + corner_size - 1;
ceb6: f109 33ff add.w r3, r9, #4294967295
sh_buf_tmp += corner_size * (ca.y1 - a.y1);
ceba: fb09 3404 mla r4, r9, r4, r3
cebe: 9b0a ldr r3, [sp, #40] ; 0x28
cec0: 441c add r4, r3
cec2: f10d 0277 add.w r2, sp, #119 ; 0x77
uint8_t * d8 = (uint8_t *)dst;
cec6: ab22 add r3, sp, #136 ; 0x88
while(len) {
cec8: a824 add r0, sp, #144 ; 0x90
*d8 = *s8;
ceca: f812 1f01 ldrb.w r1, [r2, #1]!
cece: f803 1b01 strb.w r1, [r3], #1
while(len) {
ced2: 4283 cmp r3, r0
ced4: d1f9 bne.n ceca <lv_draw_rect+0xb9a>
fa.y2 = fa.y1;
ced6: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a
ceda: f8ad 308e strh.w r3, [sp, #142] ; 0x8e
for(y = 0; y < h; y++) {
cede: 462b mov r3, r5
cee0: 2d00 cmp r5, #0
cee2: dd47 ble.n cf74 <lv_draw_rect+0xc44>
cee4: 2500 movs r5, #0
_lv_memset(mask_buf, opa_tmp, w);
cee6: 4f70 ldr r7, [pc, #448] ; (d0a8 <lv_draw_rect+0xd78>)
_lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf,
cee8: f8cd 902c str.w r9, [sp, #44] ; 0x2c
ceec: f8dd 9024 ldr.w r9, [sp, #36] ; 0x24
cef0: f8cd b030 str.w fp, [sp, #48] ; 0x30
cef4: 469b mov fp, r3
cef6: e02a b.n cf4e <lv_draw_rect+0xc1e>
if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8;
cef8: f1b9 0fff cmp.w r9, #255 ; 0xff
cefc: d12a bne.n cf54 <lv_draw_rect+0xc24>
lv_opa_t opa_tmp = sh_buf_tmp[0];
cefe: 4649 mov r1, r9
cf00: e02c b.n cf5c <lv_draw_rect+0xc2c>
mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w);
cf02: 9b08 ldr r3, [sp, #32]
cf04: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a
cf08: f9bd 1088 ldrsh.w r1, [sp, #136] ; 0x88
cf0c: 9805 ldr r0, [sp, #20]
cf0e: 4e63 ldr r6, [pc, #396] ; (d09c <lv_draw_rect+0xd6c>)
cf10: 47b0 blx r6
if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED;
cf12: 2801 cmp r0, #1
cf14: bf08 it eq
cf16: 2002 moveq r0, #2
_lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf,
cf18: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29
cf1c: 9302 str r3, [sp, #8]
cf1e: 23ff movs r3, #255 ; 0xff
cf20: 9301 str r3, [sp, #4]
cf22: 9000 str r0, [sp, #0]
cf24: 9b05 ldr r3, [sp, #20]
cf26: f8ba 201e ldrh.w r2, [sl, #30]
cf2a: a922 add r1, sp, #136 ; 0x88
cf2c: 9804 ldr r0, [sp, #16]
cf2e: 4e5c ldr r6, [pc, #368] ; (d0a0 <lv_draw_rect+0xd70>)
cf30: 47b0 blx r6
fa.y1++;
cf32: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a
cf36: 3301 adds r3, #1
cf38: f8ad 308a strh.w r3, [sp, #138] ; 0x8a
fa.y2++;
cf3c: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e
cf40: 3301 adds r3, #1
cf42: f8ad 308e strh.w r3, [sp, #142] ; 0x8e
sh_buf_tmp += corner_size;
cf46: 4444 add r4, r8
for(y = 0; y < h; y++) {
cf48: 3501 adds r5, #1
cf4a: 455d cmp r5, fp
cf4c: d00e beq.n cf6c <lv_draw_rect+0xc3c>
lv_opa_t opa_tmp = sh_buf_tmp[0];
cf4e: 7823 ldrb r3, [r4, #0]
if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8;
cf50: 2bff cmp r3, #255 ; 0xff
cf52: d0d1 beq.n cef8 <lv_draw_rect+0xbc8>
cf54: fb03 f309 mul.w r3, r3, r9
cf58: f3c3 2107 ubfx r1, r3, #8, #8
_lv_memset(mask_buf, opa_tmp, w);
cf5c: 9a08 ldr r2, [sp, #32]
cf5e: 9805 ldr r0, [sp, #20]
cf60: 47b8 blx r7
if(simple_mode) {
cf62: 9b07 ldr r3, [sp, #28]
cf64: 2b00 cmp r3, #0
cf66: d0cc beq.n cf02 <lv_draw_rect+0xbd2>
mask_res = LV_DRAW_MASK_RES_CHANGED;
cf68: 2002 movs r0, #2
cf6a: e7d5 b.n cf18 <lv_draw_rect+0xbe8>
cf6c: f8dd 902c ldr.w r9, [sp, #44] ; 0x2c
cf70: f8dd b030 ldr.w fp, [sp, #48] ; 0x30
a.x1 = sh_area.x1 + corner_size;
cf74: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58
cf78: 445b add r3, fp
cf7a: f8ad 3070 strh.w r3, [sp, #112] ; 0x70
a.x2 = sh_area.x2 - corner_size;
cf7e: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c
cf82: eba3 030b sub.w r3, r3, fp
cf86: f8ad 3074 strh.w r3, [sp, #116] ; 0x74
a.y1 = sh_area.y2 - corner_size + 1;
cf8a: f9bd 205e ldrsh.w r2, [sp, #94] ; 0x5e
cf8e: 1c53 adds r3, r2, #1
cf90: eba3 030b sub.w r3, r3, fp
cf94: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
a.y2 = sh_area.y2;
cf98: f8ad 2076 strh.w r2, [sp, #118] ; 0x76
has_com = _lv_area_intersect(&ca, &a, clip);
cf9c: 9a04 ldr r2, [sp, #16]
cf9e: a91c add r1, sp, #112 ; 0x70
cfa0: a81e add r0, sp, #120 ; 0x78
cfa2: 4b40 ldr r3, [pc, #256] ; (d0a4 <lv_draw_rect+0xd74>)
cfa4: 4798 blx r3
if(has_com) {
cfa6: 2800 cmp r0, #0
cfa8: f000 8082 beq.w d0b0 <lv_draw_rect+0xd80>
if(simple_mode) ca.y1 = LV_MATH_MAX(ca.y1, coords->y2);
cfac: 9b07 ldr r3, [sp, #28]
cfae: b14b cbz r3, cfc4 <lv_draw_rect+0xc94>
cfb0: 9b06 ldr r3, [sp, #24]
cfb2: f9b3 3006 ldrsh.w r3, [r3, #6]
cfb6: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a
cfba: 4293 cmp r3, r2
cfbc: bfb8 it lt
cfbe: 4613 movlt r3, r2
cfc0: f8ad 307a strh.w r3, [sp, #122] ; 0x7a
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
cfc4: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c
cfc8: 3301 adds r3, #1
cfca: f8bd 2078 ldrh.w r2, [sp, #120] ; 0x78
cfce: 1a9b subs r3, r3, r2
cfd0: b21b sxth r3, r3
cfd2: 9308 str r3, [sp, #32]
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
cfd4: f9bd 307e ldrsh.w r3, [sp, #126] ; 0x7e
cfd8: 1c5d adds r5, r3, #1
cfda: f8bd 207a ldrh.w r2, [sp, #122] ; 0x7a
cfde: 1aad subs r5, r5, r2
cfe0: b22d sxth r5, r5
sh_buf_tmp = sh_buf + corner_size - 1;
cfe2: 46c8 mov r8, r9
sh_buf_tmp += corner_size * (a.y2 - ca.y2);
cfe4: f9bd 4076 ldrsh.w r4, [sp, #118] ; 0x76
cfe8: 1ae4 subs r4, r4, r3
sh_buf_tmp = sh_buf + corner_size - 1;
cfea: f109 33ff add.w r3, r9, #4294967295
sh_buf_tmp += corner_size * (a.y2 - ca.y2);
cfee: fb09 3404 mla r4, r9, r4, r3
cff2: 9b0a ldr r3, [sp, #40] ; 0x28
cff4: 441c add r4, r3
cff6: f10d 0277 add.w r2, sp, #119 ; 0x77
uint8_t * d8 = (uint8_t *)dst;
cffa: ab22 add r3, sp, #136 ; 0x88
while(len) {
cffc: a824 add r0, sp, #144 ; 0x90
*d8 = *s8;
cffe: f812 1f01 ldrb.w r1, [r2, #1]!
d002: f803 1b01 strb.w r1, [r3], #1
while(len) {
d006: 4283 cmp r3, r0
d008: d1f9 bne.n cffe <lv_draw_rect+0xcce>
fa.y1 = fa.y2;
d00a: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e
d00e: f8ad 308a strh.w r3, [sp, #138] ; 0x8a
for(y = 0; y < h; y++) {
d012: 46a9 mov r9, r5
d014: 2d00 cmp r5, #0
d016: dd4b ble.n d0b0 <lv_draw_rect+0xd80>
d018: 2500 movs r5, #0
_lv_memset(mask_buf, opa_tmp, w);
d01a: 4f23 ldr r7, [pc, #140] ; (d0a8 <lv_draw_rect+0xd78>)
_lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf,
d01c: f8cd b02c str.w fp, [sp, #44] ; 0x2c
d020: f8dd b024 ldr.w fp, [sp, #36] ; 0x24
d024: e02a b.n d07c <lv_draw_rect+0xd4c>
if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8;
d026: f1bb 0fff cmp.w fp, #255 ; 0xff
d02a: d12a bne.n d082 <lv_draw_rect+0xd52>
lv_opa_t opa_tmp = sh_buf_tmp[0];
d02c: 4659 mov r1, fp
d02e: e02c b.n d08a <lv_draw_rect+0xd5a>
mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w);
d030: 9b08 ldr r3, [sp, #32]
d032: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a
d036: f9bd 1088 ldrsh.w r1, [sp, #136] ; 0x88
d03a: 9805 ldr r0, [sp, #20]
d03c: 4e17 ldr r6, [pc, #92] ; (d09c <lv_draw_rect+0xd6c>)
d03e: 47b0 blx r6
if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED;
d040: 2801 cmp r0, #1
d042: bf08 it eq
d044: 2002 moveq r0, #2
_lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf,
d046: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29
d04a: 9302 str r3, [sp, #8]
d04c: 23ff movs r3, #255 ; 0xff
d04e: 9301 str r3, [sp, #4]
d050: 9000 str r0, [sp, #0]
d052: 9b05 ldr r3, [sp, #20]
d054: f8ba 201e ldrh.w r2, [sl, #30]
d058: a922 add r1, sp, #136 ; 0x88
d05a: 9804 ldr r0, [sp, #16]
d05c: 4e10 ldr r6, [pc, #64] ; (d0a0 <lv_draw_rect+0xd70>)
d05e: 47b0 blx r6
fa.y1--;
d060: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a
d064: 3b01 subs r3, #1
d066: f8ad 308a strh.w r3, [sp, #138] ; 0x8a
fa.y2--;
d06a: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e
d06e: 3b01 subs r3, #1
d070: f8ad 308e strh.w r3, [sp, #142] ; 0x8e
sh_buf_tmp += corner_size;
d074: 4444 add r4, r8
for(y = 0; y < h; y++) {
d076: 3501 adds r5, #1
d078: 454d cmp r5, r9
d07a: d017 beq.n d0ac <lv_draw_rect+0xd7c>
lv_opa_t opa_tmp = sh_buf_tmp[0];
d07c: 7823 ldrb r3, [r4, #0]
if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8;
d07e: 2bff cmp r3, #255 ; 0xff
d080: d0d1 beq.n d026 <lv_draw_rect+0xcf6>
d082: fb03 f30b mul.w r3, r3, fp
d086: f3c3 2107 ubfx r1, r3, #8, #8
_lv_memset(mask_buf, opa_tmp, w);
d08a: 9a08 ldr r2, [sp, #32]
d08c: 9805 ldr r0, [sp, #20]
d08e: 47b8 blx r7
if(simple_mode) {
d090: 9b07 ldr r3, [sp, #28]
d092: 2b00 cmp r3, #0
d094: d0cc beq.n d030 <lv_draw_rect+0xd00>
mask_res = LV_DRAW_MASK_RES_CHANGED;
d096: 2002 movs r0, #2
d098: e7d5 b.n d046 <lv_draw_rect+0xd16>
d09a: bf00 nop
d09c: 0000be1d .word 0x0000be1d
d0a0: 00007751 .word 0x00007751
d0a4: 00011519 .word 0x00011519
d0a8: 00012a81 .word 0x00012a81
d0ac: f8dd b02c ldr.w fp, [sp, #44] ; 0x2c
a.x1 = sh_area.x1 + corner_size;
d0b0: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58
d0b4: 445b add r3, fp
d0b6: f8ad 3070 strh.w r3, [sp, #112] ; 0x70
a.x2 = sh_area.x2 - corner_size;
d0ba: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c
d0be: eba3 030b sub.w r3, r3, fp
d0c2: f8ad 3074 strh.w r3, [sp, #116] ; 0x74
a.y1 = sh_area.y1 + corner_size;
d0c6: f8bd 305a ldrh.w r3, [sp, #90] ; 0x5a
d0ca: 445b add r3, fp
d0cc: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
a.y2 = sh_area.y2 - corner_size;
d0d0: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e
d0d4: eba3 0b0b sub.w fp, r3, fp
d0d8: f8ad b076 strh.w fp, [sp, #118] ; 0x76
has_com = _lv_area_intersect(&ca, &a, clip);
d0dc: 9a04 ldr r2, [sp, #16]
d0de: a91c add r1, sp, #112 ; 0x70
d0e0: a81e add r0, sp, #120 ; 0x78
d0e2: 4ba2 ldr r3, [pc, #648] ; (d36c <lv_draw_rect+0x103c>)
d0e4: 4798 blx r3
if(has_com && simple_mode == false) {
d0e6: 2800 cmp r0, #0
d0e8: d050 beq.n d18c <lv_draw_rect+0xe5c>
d0ea: 9b07 ldr r3, [sp, #28]
d0ec: 2b00 cmp r3, #0
d0ee: d14d bne.n d18c <lv_draw_rect+0xe5c>
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
d0f0: f8bd 607c ldrh.w r6, [sp, #124] ; 0x7c
d0f4: 3601 adds r6, #1
d0f6: f8bd 3078 ldrh.w r3, [sp, #120] ; 0x78
d0fa: 1af6 subs r6, r6, r3
d0fc: b236 sxth r6, r6
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
d0fe: f8bd 407e ldrh.w r4, [sp, #126] ; 0x7e
d102: 3401 adds r4, #1
d104: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a
d108: 1ae4 subs r4, r4, r3
d10a: b224 sxth r4, r4
d10c: f10d 0277 add.w r2, sp, #119 ; 0x77
uint8_t * d8 = (uint8_t *)dst;
d110: ab22 add r3, sp, #136 ; 0x88
while(len) {
d112: a824 add r0, sp, #144 ; 0x90
*d8 = *s8;
d114: f812 1f01 ldrb.w r1, [r2, #1]!
d118: f803 1b01 strb.w r1, [r3], #1
while(len) {
d11c: 4283 cmp r3, r0
d11e: d1f9 bne.n d114 <lv_draw_rect+0xde4>
fa.y2 = fa.y1;
d120: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a
d124: f8ad 308e strh.w r3, [sp, #142] ; 0x8e
for(y = 0; y < h; y++) {
d128: 46a3 mov fp, r4
d12a: 2c00 cmp r4, #0
d12c: dd2e ble.n d18c <lv_draw_rect+0xe5c>
d12e: 2500 movs r5, #0
_lv_memset(mask_buf, dsc->shadow_opa, w);
d130: f8df 9254 ldr.w r9, [pc, #596] ; d388 <lv_draw_rect+0x1058>
mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w);
d134: f8df 8254 ldr.w r8, [pc, #596] ; d38c <lv_draw_rect+0x105c>
_lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf,
d138: 4f8d ldr r7, [pc, #564] ; (d370 <lv_draw_rect+0x1040>)
_lv_memset(mask_buf, dsc->shadow_opa, w);
d13a: 4632 mov r2, r6
d13c: f89a 1028 ldrb.w r1, [sl, #40] ; 0x28
d140: 9805 ldr r0, [sp, #20]
d142: 47c8 blx r9
mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w);
d144: ac30 add r4, sp, #192 ; 0xc0
d146: 4633 mov r3, r6
d148: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a
d14c: f934 1d38 ldrsh.w r1, [r4, #-56]!
d150: 9805 ldr r0, [sp, #20]
d152: 47c0 blx r8
if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED;
d154: 2801 cmp r0, #1
d156: bf08 it eq
d158: 2002 moveq r0, #2
_lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf,
d15a: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29
d15e: 9302 str r3, [sp, #8]
d160: 23ff movs r3, #255 ; 0xff
d162: 9301 str r3, [sp, #4]
d164: 9000 str r0, [sp, #0]
d166: 9b05 ldr r3, [sp, #20]
d168: f8ba 201e ldrh.w r2, [sl, #30]
d16c: 4621 mov r1, r4
d16e: 9804 ldr r0, [sp, #16]
d170: 47b8 blx r7
fa.y1++;
d172: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a
d176: 3301 adds r3, #1
d178: f8ad 308a strh.w r3, [sp, #138] ; 0x8a
fa.y2++;
d17c: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e
d180: 3301 adds r3, #1
d182: f8ad 308e strh.w r3, [sp, #142] ; 0x8e
for(y = 0; y < h; y++) {
d186: 3501 adds r5, #1
d188: 455d cmp r5, fp
d18a: d1d6 bne.n d13a <lv_draw_rect+0xe0a>
lv_draw_mask_remove_id(mask_rout_id);
d18c: 980e ldr r0, [sp, #56] ; 0x38
d18e: 4b79 ldr r3, [pc, #484] ; (d374 <lv_draw_rect+0x1044>)
d190: 4798 blx r3
_lv_mem_buf_release(mask_buf);
d192: 9805 ldr r0, [sp, #20]
d194: 4c78 ldr r4, [pc, #480] ; (d378 <lv_draw_rect+0x1048>)
d196: 47a0 blx r4
_lv_mem_buf_release(sh_buf);
d198: 980a ldr r0, [sp, #40] ; 0x28
d19a: 47a0 blx r4
if(dsc->bg_opa <= LV_OPA_MIN) return;
d19c: f89a 700c ldrb.w r7, [sl, #12]
d1a0: 2f05 cmp r7, #5
d1a2: d942 bls.n d22a <lv_draw_rect+0xefa>
d1a4: 9a06 ldr r2, [sp, #24]
d1a6: 1e53 subs r3, r2, #1
d1a8: 1dd0 adds r0, r2, #7
d1aa: aa1a add r2, sp, #104 ; 0x68
*d8 = *s8;
d1ac: f813 1f01 ldrb.w r1, [r3, #1]!
d1b0: f802 1b01 strb.w r1, [r2], #1
while(len) {
d1b4: 4298 cmp r0, r3
d1b6: d1f9 bne.n d1ac <lv_draw_rect+0xe7c>
if(dsc->border_width > 1 && dsc->border_opa >= LV_OPA_MAX && dsc->radius != 0) {
d1b8: f9ba 3010 ldrsh.w r3, [sl, #16]
d1bc: 2b01 cmp r3, #1
d1be: dd24 ble.n d20a <lv_draw_rect+0xeda>
d1c0: f89a 3014 ldrb.w r3, [sl, #20]
d1c4: 2bf9 cmp r3, #249 ; 0xf9
d1c6: d920 bls.n d20a <lv_draw_rect+0xeda>
d1c8: f9ba 3000 ldrsh.w r3, [sl]
d1cc: b1eb cbz r3, d20a <lv_draw_rect+0xeda>
coords_bg.x1 += (dsc->border_side & LV_BORDER_SIDE_LEFT) ? 1 : 0;
d1ce: f8ba 3012 ldrh.w r3, [sl, #18]
d1d2: f3c3 0280 ubfx r2, r3, #2, #1
d1d6: f8bd 1068 ldrh.w r1, [sp, #104] ; 0x68
d1da: 440a add r2, r1
d1dc: f8ad 2068 strh.w r2, [sp, #104] ; 0x68
coords_bg.y1 += (dsc->border_side & LV_BORDER_SIDE_TOP) ? 1 : 0;
d1e0: f3c3 0240 ubfx r2, r3, #1, #1
d1e4: f8bd 106a ldrh.w r1, [sp, #106] ; 0x6a
d1e8: 440a add r2, r1
d1ea: f8ad 206a strh.w r2, [sp, #106] ; 0x6a
coords_bg.x2 -= (dsc->border_side & LV_BORDER_SIDE_RIGHT) ? 1 : 0;
d1ee: f3c3 01c0 ubfx r1, r3, #3, #1
d1f2: f8bd 206c ldrh.w r2, [sp, #108] ; 0x6c
d1f6: 1a52 subs r2, r2, r1
d1f8: f8ad 206c strh.w r2, [sp, #108] ; 0x6c
coords_bg.y2 -= (dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? 1 : 0;
d1fc: f003 0301 and.w r3, r3, #1
d200: f8bd 206e ldrh.w r2, [sp, #110] ; 0x6e
d204: 1ad3 subs r3, r2, r3
d206: f8ad 306e strh.w r3, [sp, #110] ; 0x6e
if(opa > LV_OPA_MAX) opa = LV_OPA_COVER;
d20a: 2ffb cmp r7, #251 ; 0xfb
d20c: bf28 it cs
d20e: 27ff movcs r7, #255 ; 0xff
lv_disp_t * disp = _lv_refr_get_disp_refreshing();
d210: 4b5a ldr r3, [pc, #360] ; (d37c <lv_draw_rect+0x104c>)
d212: 4798 blx r3
lv_disp_buf_t * vdb = lv_disp_get_buf(disp);
d214: 4b5a ldr r3, [pc, #360] ; (d380 <lv_draw_rect+0x1050>)
d216: 4798 blx r3
d218: 4680 mov r8, r0
is_common = _lv_area_intersect(&draw_area, &coords_bg, clip);
d21a: 9a04 ldr r2, [sp, #16]
d21c: a91a add r1, sp, #104 ; 0x68
d21e: a81c add r0, sp, #112 ; 0x70
d220: 4b52 ldr r3, [pc, #328] ; (d36c <lv_draw_rect+0x103c>)
d222: 4798 blx r3
if(is_common == false) return;
d224: 2800 cmp r0, #0
d226: f040 80b3 bne.w d390 <lv_draw_rect+0x1060>
_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;
d22a: f8da 002c ldr.w r0, [sl, #44] ; 0x2c
d22e: b120 cbz r0, d23a <lv_draw_rect+0xf0a>
if(dsc->pattern_opa <= LV_OPA_MIN) return;
d230: f89a 3036 ldrb.w r3, [sl, #54] ; 0x36
d234: 2b05 cmp r3, #5
d236: f200 83eb bhi.w da10 <lv_draw_rect+0x16e0>
if(dsc->border_opa <= LV_OPA_MIN) return;
d23a: f89a 4014 ldrb.w r4, [sl, #20]
d23e: 2c05 cmp r4, #5
d240: d915 bls.n d26e <lv_draw_rect+0xf3e>
if(dsc->border_width == 0) return;
d242: f9ba 3010 ldrsh.w r3, [sl, #16]
d246: b193 cbz r3, d26e <lv_draw_rect+0xf3e>
if(dsc->border_side == LV_BORDER_SIDE_NONE) return;
d248: f9ba 3012 ldrsh.w r3, [sl, #18]
d24c: b17b cbz r3, d26e <lv_draw_rect+0xf3e>
if(opa > LV_OPA_MAX) opa = LV_OPA_COVER;
d24e: 2cfb cmp r4, #251 ; 0xfb
d250: bf28 it cs
d252: 24ff movcs r4, #255 ; 0xff
lv_disp_t * disp = _lv_refr_get_disp_refreshing();
d254: 4b49 ldr r3, [pc, #292] ; (d37c <lv_draw_rect+0x104c>)
d256: 4798 blx r3
lv_disp_buf_t * vdb = lv_disp_get_buf(disp);
d258: 4b49 ldr r3, [pc, #292] ; (d380 <lv_draw_rect+0x1050>)
d25a: 4798 blx r3
d25c: 4605 mov r5, r0
is_common = _lv_area_intersect(&draw_area, coords, clip);
d25e: 9a04 ldr r2, [sp, #16]
d260: 9906 ldr r1, [sp, #24]
d262: a818 add r0, sp, #96 ; 0x60
d264: 4b41 ldr r3, [pc, #260] ; (d36c <lv_draw_rect+0x103c>)
d266: 4798 blx r3
if(is_common == false) return;
d268: 2800 cmp r0, #0
d26a: f040 8546 bne.w dcfa <lv_draw_rect+0x19ca>
}
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;
d26e: f8da 103c ldr.w r1, [sl, #60] ; 0x3c
d272: b121 cbz r1, d27e <lv_draw_rect+0xf4e>
if(dsc->value_opa <= LV_OPA_MIN) return;
d274: f89a 3044 ldrb.w r3, [sl, #68] ; 0x44
d278: 2b05 cmp r3, #5
d27a: f201 8053 bhi.w e324 <lv_draw_rect+0x1ff4>
if(dsc->outline_opa <= LV_OPA_MIN) return;
d27e: f89a b01c ldrb.w fp, [sl, #28]
d282: f1bb 0f05 cmp.w fp, #5
d286: d96d bls.n d364 <lv_draw_rect+0x1034>
if(dsc->outline_width == 0) return;
d288: f9ba 3018 ldrsh.w r3, [sl, #24]
d28c: 2b00 cmp r3, #0
d28e: d069 beq.n d364 <lv_draw_rect+0x1034>
if(opa > LV_OPA_MAX) opa = LV_OPA_COVER;
d290: f1bb 0ffb cmp.w fp, #251 ; 0xfb
d294: bf28 it cs
d296: f04f 0bff movcs.w fp, #255 ; 0xff
uint8_t other_mask_cnt = lv_draw_mask_get_cnt();
d29a: 4b3a ldr r3, [pc, #232] ; (d384 <lv_draw_rect+0x1054>)
d29c: 4798 blx r3
d29e: 9009 str r0, [sp, #36] ; 0x24
d2a0: 9a06 ldr r2, [sp, #24]
d2a2: 1e53 subs r3, r2, #1
d2a4: 1dd0 adds r0, r2, #7
uint8_t * d8 = (uint8_t *)dst;
d2a6: aa16 add r2, sp, #88 ; 0x58
*d8 = *s8;
d2a8: f813 1f01 ldrb.w r1, [r3, #1]!
d2ac: f802 1b01 strb.w r1, [r2], #1
while(len) {
d2b0: 4283 cmp r3, r0
d2b2: d1f9 bne.n d2a8 <lv_draw_rect+0xf78>
area_inner.x1 -= dsc->outline_pad;
d2b4: f8ba 501a ldrh.w r5, [sl, #26]
d2b8: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58
d2bc: 1b5b subs r3, r3, r5
d2be: b29b uxth r3, r3
d2c0: 9306 str r3, [sp, #24]
d2c2: f8ad 3058 strh.w r3, [sp, #88] ; 0x58
area_inner.y1 -= dsc->outline_pad;
d2c6: f8bd 305a ldrh.w r3, [sp, #90] ; 0x5a
d2ca: 1b5b subs r3, r3, r5
d2cc: b29b uxth r3, r3
d2ce: 9307 str r3, [sp, #28]
d2d0: f8ad 305a strh.w r3, [sp, #90] ; 0x5a
area_inner.x2 += dsc->outline_pad;
d2d4: f8bd 605c ldrh.w r6, [sp, #92] ; 0x5c
d2d8: 442e add r6, r5
d2da: b2b6 uxth r6, r6
d2dc: f8ad 605c strh.w r6, [sp, #92] ; 0x5c
area_inner.y2 += dsc->outline_pad;
d2e0: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e
d2e4: 441d add r5, r3
d2e6: b2ad uxth r5, r5
d2e8: f8ad 505e strh.w r5, [sp, #94] ; 0x5e
int32_t rin = dsc->radius;
d2ec: f9ba 3000 ldrsh.w r3, [sl]
d2f0: 9308 str r3, [sp, #32]
int32_t rout = rin + dsc->outline_width;
d2f2: f9ba 3018 ldrsh.w r3, [sl, #24]
d2f6: 9305 str r3, [sp, #20]
d2f8: f10d 0257 add.w r2, sp, #87 ; 0x57
uint8_t * d8 = (uint8_t *)dst;
d2fc: ab18 add r3, sp, #96 ; 0x60
while(len) {
d2fe: a81a add r0, sp, #104 ; 0x68
*d8 = *s8;
d300: f812 1f01 ldrb.w r1, [r2, #1]!
d304: f803 1b01 strb.w r1, [r3], #1
while(len) {
d308: 4283 cmp r3, r0
d30a: d1f9 bne.n d300 <lv_draw_rect+0xfd0>
area_outer.x1 -= dsc->outline_width;
d30c: f8bd 4014 ldrh.w r4, [sp, #20]
d310: f8bd 9060 ldrh.w r9, [sp, #96] ; 0x60
d314: eba9 0904 sub.w r9, r9, r4
d318: fa1f f389 uxth.w r3, r9
d31c: 930a str r3, [sp, #40] ; 0x28
d31e: f8ad 3060 strh.w r3, [sp, #96] ; 0x60
area_outer.x2 += dsc->outline_width;
d322: f8bd 7064 ldrh.w r7, [sp, #100] ; 0x64
d326: 4427 add r7, r4
d328: b2bf uxth r7, r7
d32a: f8ad 7064 strh.w r7, [sp, #100] ; 0x64
area_outer.y1 -= dsc->outline_width;
d32e: f8bd 8062 ldrh.w r8, [sp, #98] ; 0x62
d332: eba8 0804 sub.w r8, r8, r4
d336: fa1f f888 uxth.w r8, r8
d33a: f8ad 8062 strh.w r8, [sp, #98] ; 0x62
area_outer.y2 += dsc->outline_width;
d33e: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66
d342: 441c add r4, r3
d344: b2a4 uxth r4, r4
d346: f8ad 4066 strh.w r4, [sp, #102] ; 0x66
lv_disp_t * disp = _lv_refr_get_disp_refreshing();
d34a: 4b0c ldr r3, [pc, #48] ; (d37c <lv_draw_rect+0x104c>)
d34c: 4798 blx r3
lv_disp_buf_t * vdb = lv_disp_get_buf(disp);
d34e: 4b0c ldr r3, [pc, #48] ; (d380 <lv_draw_rect+0x1050>)
d350: 4798 blx r3
d352: 4681 mov r9, r0
is_common = _lv_area_intersect(&draw_area, &area_outer, clip);
d354: 9a04 ldr r2, [sp, #16]
d356: a918 add r1, sp, #96 ; 0x60
d358: a81a add r0, sp, #104 ; 0x68
d35a: 4b04 ldr r3, [pc, #16] ; (d36c <lv_draw_rect+0x103c>)
d35c: 4798 blx r3
if(is_common == false) return;
d35e: 2800 cmp r0, #0
d360: f041 8044 bne.w e3ec <lv_draw_rect+0x20bc>
}
d364: b031 add sp, #196 ; 0xc4
d366: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
d36a: bf00 nop
d36c: 00011519 .word 0x00011519
d370: 00007751 .word 0x00007751
d374: 0000be6d .word 0x0000be6d
d378: 00012571 .word 0x00012571
d37c: 00005f69 .word 0x00005f69
d380: 00010fdd .word 0x00010fdd
d384: 0000bec5 .word 0x0000bec5
d388: 00012a81 .word 0x00012a81
d38c: 0000be1d .word 0x0000be1d
draw_area.x1 -= disp_area->x1;
d390: f8b8 1010 ldrh.w r1, [r8, #16]
d394: f8bd 3070 ldrh.w r3, [sp, #112] ; 0x70
d398: 1a5b subs r3, r3, r1
d39a: b29a uxth r2, r3
d39c: f8ad 2070 strh.w r2, [sp, #112] ; 0x70
draw_area.y1 -= disp_area->y1;
d3a0: f8b8 0012 ldrh.w r0, [r8, #18]
d3a4: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72
d3a8: 1a1b subs r3, r3, r0
d3aa: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
draw_area.x2 -= disp_area->x1;
d3ae: f8bd 3074 ldrh.w r3, [sp, #116] ; 0x74
d3b2: 1a5b subs r3, r3, r1
d3b4: b29b uxth r3, r3
d3b6: f8ad 3074 strh.w r3, [sp, #116] ; 0x74
draw_area.y2 -= disp_area->y1;
d3ba: f8bd 1076 ldrh.w r1, [sp, #118] ; 0x76
d3be: 1a09 subs r1, r1, r0
d3c0: f8ad 1076 strh.w r1, [sp, #118] ; 0x76
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
d3c4: 3301 adds r3, #1
d3c6: 1a9b subs r3, r3, r2
d3c8: b21b sxth r3, r3
d3ca: 9309 str r3, [sp, #36] ; 0x24
lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w);
d3cc: 930a str r3, [sp, #40] ; 0x28
d3ce: 4618 mov r0, r3
d3d0: 4b93 ldr r3, [pc, #588] ; (d620 <lv_draw_rect+0x12f0>)
d3d2: 4798 blx r3
d3d4: 9005 str r0, [sp, #20]
uint16_t other_mask_cnt = lv_draw_mask_get_cnt();
d3d6: 4b93 ldr r3, [pc, #588] ; (d624 <lv_draw_rect+0x12f4>)
d3d8: 4798 blx r3
d3da: b283 uxth r3, r0
d3dc: 930b str r3, [sp, #44] ; 0x2c
if(other_mask_cnt) simple_mode = false;
d3de: bb43 cbnz r3, d432 <lv_draw_rect+0x1102>
else if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) simple_mode = false;
d3e0: f89a 3006 ldrb.w r3, [sl, #6]
d3e4: 3b02 subs r3, #2
d3e6: bf18 it ne
d3e8: 2301 movne r3, #1
d3ea: 9307 str r3, [sp, #28]
d3ec: f8bd 506c ldrh.w r5, [sp, #108] ; 0x6c
d3f0: 3501 adds r5, #1
d3f2: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68
d3f6: 1aed subs r5, r5, r3
d3f8: b22d sxth r5, r5
int32_t coords_w = lv_area_get_width(&coords_bg);
d3fa: 462c mov r4, r5
int32_t rout = dsc->radius;
d3fc: f9ba 2000 ldrsh.w r2, [sl]
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
d400: f8bd 306e ldrh.w r3, [sp, #110] ; 0x6e
d404: 3301 adds r3, #1
d406: f8bd 606a ldrh.w r6, [sp, #106] ; 0x6a
d40a: 1b9b subs r3, r3, r6
int32_t coords_h = lv_area_get_height(&coords_bg);
d40c: b21e sxth r6, r3
int32_t short_side = LV_MATH_MIN(coords_w, coords_h);
d40e: 4633 mov r3, r6
d410: 42ae cmp r6, r5
d412: bfa8 it ge
d414: 462b movge r3, r5
if(rout > short_side >> 1) rout = short_side >> 1;
d416: 105e asrs r6, r3, #1
d418: 4296 cmp r6, r2
d41a: bfa8 it ge
d41c: 4616 movge r6, r2
if(simple_mode && rout == 0 && (dsc->bg_grad_dir == LV_GRAD_DIR_NONE)) {
d41e: 9b07 ldr r3, [sp, #28]
d420: b1db cbz r3, d45a <lv_draw_rect+0x112a>
d422: b9d6 cbnz r6, d45a <lv_draw_rect+0x112a>
d424: f89a 3006 ldrb.w r3, [sl, #6]
d428: b133 cbz r3, d438 <lv_draw_rect+0x1108>
int16_t mask_rout_id = LV_MASK_ID_INV;
d42a: f04f 33ff mov.w r3, #4294967295
d42e: 930e str r3, [sp, #56] ; 0x38
d430: e021 b.n d476 <lv_draw_rect+0x1146>
if(other_mask_cnt) simple_mode = false;
d432: 2300 movs r3, #0
d434: 9307 str r3, [sp, #28]
d436: e7d9 b.n d3ec <lv_draw_rect+0x10bc>
_lv_blend_fill(clip, &coords_bg,
d438: f89a 300d ldrb.w r3, [sl, #13]
d43c: 9302 str r3, [sp, #8]
d43e: 9701 str r7, [sp, #4]
d440: 2301 movs r3, #1
d442: 9300 str r3, [sp, #0]
d444: 2300 movs r3, #0
d446: f8ba 2002 ldrh.w r2, [sl, #2]
d44a: a91a add r1, sp, #104 ; 0x68
d44c: 9804 ldr r0, [sp, #16]
d44e: 4c76 ldr r4, [pc, #472] ; (d628 <lv_draw_rect+0x12f8>)
d450: 47a0 blx r4
int16_t mask_rout_id = LV_MASK_ID_INV;
d452: f04f 33ff mov.w r3, #4294967295
d456: 930e str r3, [sp, #56] ; 0x38
d458: e276 b.n d948 <lv_draw_rect+0x1618>
if(rout > 0) {
d45a: 2e00 cmp r6, #0
d45c: dd32 ble.n d4c4 <lv_draw_rect+0x1194>
lv_draw_mask_radius_init(&mask_rout_param, &coords_bg, rout, false);
d45e: 2300 movs r3, #0
d460: 4632 mov r2, r6
d462: a91a add r1, sp, #104 ; 0x68
d464: a829 add r0, sp, #164 ; 0xa4
d466: f8df 91d0 ldr.w r9, [pc, #464] ; d638 <lv_draw_rect+0x1308>
d46a: 47c8 blx r9
mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL);
d46c: 2100 movs r1, #0
d46e: a829 add r0, sp, #164 ; 0xa4
d470: 4b6e ldr r3, [pc, #440] ; (d62c <lv_draw_rect+0x12fc>)
d472: 4798 blx r3
d474: 900e str r0, [sp, #56] ; 0x38
lv_color_t grad_color = dsc->bg_color;
d476: f8ba b002 ldrh.w fp, [sl, #2]
if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR && dsc->bg_color.full != dsc->bg_grad_color.full) {
d47a: f89a 3006 ldrb.w r3, [sl, #6]
d47e: 2b02 cmp r3, #2
d480: d024 beq.n d4cc <lv_draw_rect+0x119c>
lv_color_t * grad_map = NULL;
d482: 2300 movs r3, #0
d484: 930d str r3, [sp, #52] ; 0x34
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
d486: f9bd 206c ldrsh.w r2, [sp, #108] ; 0x6c
d48a: f9bd 1068 ldrsh.w r1, [sp, #104] ; 0x68
d48e: 1c53 adds r3, r2, #1
d490: 1a5b subs r3, r3, r1
if(lv_area_get_width(&coords_bg) - 2 * rout > SPLIT_LIMIT) split = true;
d492: b21b sxth r3, r3
d494: eba3 0946 sub.w r9, r3, r6, lsl #1
fill_area.x1 = coords_bg.x1;
d498: f8ad 1078 strh.w r1, [sp, #120] ; 0x78
fill_area.x2 = coords_bg.x2;
d49c: f8ad 207c strh.w r2, [sp, #124] ; 0x7c
fill_area.y1 = disp_area->y1 + draw_area.y1;
d4a0: f9bd 2072 ldrsh.w r2, [sp, #114] ; 0x72
d4a4: f8b8 3012 ldrh.w r3, [r8, #18]
d4a8: 4413 add r3, r2
d4aa: b21b sxth r3, r3
d4ac: f8ad 307a strh.w r3, [sp, #122] ; 0x7a
fill_area.y2 = fill_area.y1;
d4b0: f8ad 307e strh.w r3, [sp, #126] ; 0x7e
for(h = draw_area.y1; h <= draw_area.y2; h++) {
d4b4: 4615 mov r5, r2
d4b6: f9bd 3076 ldrsh.w r3, [sp, #118] ; 0x76
d4ba: 429a cmp r2, r3
d4bc: f300 8237 bgt.w d92e <lv_draw_rect+0x15fe>
_lv_blend_fill(clip, &fill_area2,
d4c0: 9708 str r7, [sp, #32]
d4c2: e0fa b.n d6ba <lv_draw_rect+0x138a>
int16_t mask_rout_id = LV_MASK_ID_INV;
d4c4: f04f 33ff mov.w r3, #4294967295
d4c8: 930e str r3, [sp, #56] ; 0x38
d4ca: e7d4 b.n d476 <lv_draw_rect+0x1146>
if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR && dsc->bg_color.full != dsc->bg_grad_color.full) {
d4cc: f8ba 3004 ldrh.w r3, [sl, #4]
d4d0: 459b cmp fp, r3
d4d2: f000 8089 beq.w d5e8 <lv_draw_rect+0x12b8>
grad_map = _lv_mem_buf_get(coords_w * sizeof(lv_color_t));
d4d6: 0068 lsls r0, r5, #1
d4d8: 4b51 ldr r3, [pc, #324] ; (d620 <lv_draw_rect+0x12f0>)
d4da: 4798 blx r3
d4dc: 900d str r0, [sp, #52] ; 0x34
for(i = 0; i < coords_w; i++) {
d4de: 2d00 cmp r5, #0
d4e0: ddd1 ble.n d486 <lv_draw_rect+0x1156>
d4e2: f04f 0900 mov.w r9, #0
d4e6: 9608 str r6, [sp, #32]
d4e8: 4606 mov r6, r0
d4ea: e01b b.n d524 <lv_draw_rect+0x11f4>
if(i <= min) return dsc->bg_color;
d4ec: f89a 3002 ldrb.w r3, [sl, #2]
d4f0: f003 031f and.w r3, r3, #31
d4f4: f8ba 1002 ldrh.w r1, [sl, #2]
d4f8: f3c1 1145 ubfx r1, r1, #5, #6
d4fc: f89a 2003 ldrb.w r2, [sl, #3]
d500: 08d2 lsrs r2, r2, #3
grad_map[i] = grad_get(dsc, coords_w, i);
d502: 7828 ldrb r0, [r5, #0]
d504: f363 0004 bfi r0, r3, #0, #5
d508: 7028 strb r0, [r5, #0]
d50a: 882b ldrh r3, [r5, #0]
d50c: f361 134a bfi r3, r1, #5, #6
d510: 802b strh r3, [r5, #0]
d512: 0a1b lsrs r3, r3, #8
d514: f362 03c7 bfi r3, r2, #3, #5
d518: 706b strb r3, [r5, #1]
for(i = 0; i < coords_w; i++) {
d51a: f109 0901 add.w r9, r9, #1
d51e: 3602 adds r6, #2
d520: 454c cmp r4, r9
d522: d05f beq.n d5e4 <lv_draw_rect+0x12b4>
grad_map[i] = grad_get(dsc, coords_w, i);
d524: 4635 mov r5, r6
int32_t min = (dsc->bg_main_color_stop * s) >> 8;
d526: f9ba 0008 ldrsh.w r0, [sl, #8]
d52a: fb00 f304 mul.w r3, r0, r4
d52e: 121b asrs r3, r3, #8
if(i <= min) return dsc->bg_color;
d530: fa0f f189 sxth.w r1, r9
d534: 428b cmp r3, r1
d536: dad9 bge.n d4ec <lv_draw_rect+0x11bc>
int32_t max = (dsc->bg_grad_color_stop * s) >> 8;
d538: f9ba 200a ldrsh.w r2, [sl, #10]
d53c: fb02 fe04 mul.w lr, r2, r4
if(i >= max) return dsc->bg_grad_color;
d540: ebb1 2f2e cmp.w r1, lr, asr #8
d544: da42 bge.n d5cc <lv_draw_rect+0x129c>
int32_t d = dsc->bg_grad_color_stop - dsc->bg_main_color_stop;
d546: 1a12 subs r2, r2, r0
d = (s * d) >> 8;
d548: fb04 f202 mul.w r2, r4, r2
i -= min;
d54c: eba9 0303 sub.w r3, r9, r3
lv_opa_t mix = (i * 255) / d;
d550: b21b sxth r3, r3
d552: ebc3 2303 rsb r3, r3, r3, lsl #8
d = (s * d) >> 8;
d556: 1212 asrs r2, r2, #8
lv_opa_t mix = (i * 255) / d;
d558: fb93 f3f2 sdiv r3, r3, r2
d55c: 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)));
d55e: f1c3 0eff rsb lr, r3, #255 ; 0xff
d562: f89a 2005 ldrb.w r2, [sl, #5]
d566: 08d2 lsrs r2, r2, #3
d568: f89a 1003 ldrb.w r1, [sl, #3]
d56c: 08c9 lsrs r1, r1, #3
d56e: fb0e f101 mul.w r1, lr, r1
d572: fb03 1202 mla r2, r3, r2, r1
d576: eb02 2102 add.w r1, r2, r2, lsl #8
d57a: eb02 12c1 add.w r2, r2, r1, lsl #7
d57e: f3c2 52c4 ubfx r2, r2, #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)));
d582: f8ba 1004 ldrh.w r1, [sl, #4]
d586: f3c1 1145 ubfx r1, r1, #5, #6
d58a: f8ba 0002 ldrh.w r0, [sl, #2]
d58e: f3c0 1045 ubfx r0, r0, #5, #6
d592: fb0e f000 mul.w r0, lr, r0
d596: fb03 0101 mla r1, r3, r1, r0
d59a: eb01 2001 add.w r0, r1, r1, lsl #8
d59e: eb01 11c0 add.w r1, r1, r0, lsl #7
d5a2: f3c1 51c5 ubfx r1, r1, #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)));
d5a6: f89a 0004 ldrb.w r0, [sl, #4]
d5aa: f000 001f and.w r0, r0, #31
d5ae: f89a c002 ldrb.w ip, [sl, #2]
d5b2: f00c 0c1f and.w ip, ip, #31
d5b6: fb0e fe0c mul.w lr, lr, ip
d5ba: fb03 e300 mla r3, r3, r0, lr
d5be: eb03 2003 add.w r0, r3, r3, lsl #8
d5c2: eb03 13c0 add.w r3, r3, r0, lsl #7
d5c6: f3c3 53c4 ubfx r3, r3, #23, #5
d5ca: e79a b.n d502 <lv_draw_rect+0x11d2>
if(i >= max) return dsc->bg_grad_color;
d5cc: f89a 3004 ldrb.w r3, [sl, #4]
d5d0: f003 031f and.w r3, r3, #31
d5d4: f8ba 1004 ldrh.w r1, [sl, #4]
d5d8: f3c1 1145 ubfx r1, r1, #5, #6
d5dc: f89a 2005 ldrb.w r2, [sl, #5]
d5e0: 08d2 lsrs r2, r2, #3
d5e2: e78e b.n d502 <lv_draw_rect+0x11d2>
d5e4: 9e08 ldr r6, [sp, #32]
d5e6: e74e b.n d486 <lv_draw_rect+0x1156>
lv_color_t * grad_map = NULL;
d5e8: 2300 movs r3, #0
d5ea: 930d str r3, [sp, #52] ; 0x34
d5ec: e74b b.n d486 <lv_draw_rect+0x1156>
_lv_memset_ff(mask_buf, draw_area_w);
d5ee: 990a ldr r1, [sp, #40] ; 0x28
d5f0: 9f05 ldr r7, [sp, #20]
d5f2: 4638 mov r0, r7
d5f4: 4b0e ldr r3, [pc, #56] ; (d630 <lv_draw_rect+0x1300>)
d5f6: 4798 blx r3
mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w);
d5f8: f8b8 2012 ldrh.w r2, [r8, #18]
d5fc: 442a add r2, r5
d5fe: f8b8 1010 ldrh.w r1, [r8, #16]
d602: f8bd 3070 ldrh.w r3, [sp, #112] ; 0x70
d606: 4419 add r1, r3
d608: 9b09 ldr r3, [sp, #36] ; 0x24
d60a: b212 sxth r2, r2
d60c: b209 sxth r1, r1
d60e: 4638 mov r0, r7
d610: 4f08 ldr r7, [pc, #32] ; (d634 <lv_draw_rect+0x1304>)
d612: 47b8 blx r7
d614: 4607 mov r7, r0
if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) {
d616: f89a 3006 ldrb.w r3, [sl, #6]
d61a: 2b01 cmp r3, #1
d61c: d129 bne.n d672 <lv_draw_rect+0x1342>
d61e: e07a b.n d716 <lv_draw_rect+0x13e6>
d620: 0001293d .word 0x0001293d
d624: 0000bec5 .word 0x0000bec5
d628: 00007751 .word 0x00007751
d62c: 0000bdc1 .word 0x0000bdc1
d630: 00012bed .word 0x00012bed
d634: 0000be1d .word 0x0000be1d
d638: 0000c02d .word 0x0000c02d
_lv_memset_ff(mask_buf, draw_area_w);
d63c: 990a ldr r1, [sp, #40] ; 0x28
d63e: 9f05 ldr r7, [sp, #20]
d640: 4638 mov r0, r7
d642: 4bb6 ldr r3, [pc, #728] ; (d91c <lv_draw_rect+0x15ec>)
d644: 4798 blx r3
mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w);
d646: f8b8 2012 ldrh.w r2, [r8, #18]
d64a: 442a add r2, r5
d64c: f8b8 1010 ldrh.w r1, [r8, #16]
d650: f8bd 3070 ldrh.w r3, [sp, #112] ; 0x70
d654: 4419 add r1, r3
d656: 9b09 ldr r3, [sp, #36] ; 0x24
d658: b212 sxth r2, r2
d65a: b209 sxth r1, r1
d65c: 4638 mov r0, r7
d65e: 4fb0 ldr r7, [pc, #704] ; (d920 <lv_draw_rect+0x15f0>)
d660: 47b8 blx r7
d662: 4607 mov r7, r0
if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) {
d664: f89a 3006 ldrb.w r3, [sl, #6]
d668: 2b01 cmp r3, #1
d66a: d054 beq.n d716 <lv_draw_rect+0x13e6>
if(simple_mode && split &&
d66c: 9a07 ldr r2, [sp, #28]
d66e: 2a00 cmp r2, #0
d670: d13a bne.n d6e8 <lv_draw_rect+0x13b8>
if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) {
d672: 2b02 cmp r3, #2
d674: f000 8144 beq.w d900 <lv_draw_rect+0x15d0>
else if(other_mask_cnt != 0 || !split) {
d678: 9b0b ldr r3, [sp, #44] ; 0x2c
d67a: b913 cbnz r3, d682 <lv_draw_rect+0x1352>
d67c: f1b9 0f32 cmp.w r9, #50 ; 0x32
d680: dc0b bgt.n d69a <lv_draw_rect+0x136a>
_lv_blend_fill(clip, &fill_area,
d682: f89a 300d ldrb.w r3, [sl, #13]
d686: 9302 str r3, [sp, #8]
d688: 9b08 ldr r3, [sp, #32]
d68a: 9301 str r3, [sp, #4]
d68c: 9700 str r7, [sp, #0]
d68e: 9b05 ldr r3, [sp, #20]
d690: 465a mov r2, fp
d692: a91e add r1, sp, #120 ; 0x78
d694: 9804 ldr r0, [sp, #16]
d696: 4ca3 ldr r4, [pc, #652] ; (d924 <lv_draw_rect+0x15f4>)
d698: 47a0 blx r4
fill_area.y1++;
d69a: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a
d69e: 3301 adds r3, #1
d6a0: f8ad 307a strh.w r3, [sp, #122] ; 0x7a
fill_area.y2++;
d6a4: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e
d6a8: 3301 adds r3, #1
d6aa: f8ad 307e strh.w r3, [sp, #126] ; 0x7e
for(h = draw_area.y1; h <= draw_area.y2; h++) {
d6ae: 3501 adds r5, #1
d6b0: f9bd 3076 ldrsh.w r3, [sp, #118] ; 0x76
d6b4: 429d cmp r5, r3
d6b6: f300 8139 bgt.w d92c <lv_draw_rect+0x15fc>
int32_t y = h + vdb->area.y1;
d6ba: f9b8 4012 ldrsh.w r4, [r8, #18]
d6be: 442c add r4, r5
if(y > coords_bg.y1 + rout + 1 &&
d6c0: f9bd 306a ldrsh.w r3, [sp, #106] ; 0x6a
d6c4: 4433 add r3, r6
d6c6: 3301 adds r3, #1
d6c8: 429c cmp r4, r3
d6ca: ddb7 ble.n d63c <lv_draw_rect+0x130c>
y < coords_bg.y2 - rout - 1) {
d6cc: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e
d6d0: 1b9b subs r3, r3, r6
d6d2: 3b01 subs r3, #1
if(y > coords_bg.y1 + rout + 1 &&
d6d4: 429c cmp r4, r3
d6d6: dab1 bge.n d63c <lv_draw_rect+0x130c>
if(simple_mode == false) {
d6d8: 9b07 ldr r3, [sp, #28]
d6da: 2b00 cmp r3, #0
d6dc: d087 beq.n d5ee <lv_draw_rect+0x12be>
if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) {
d6de: f89a 3006 ldrb.w r3, [sl, #6]
d6e2: 2b01 cmp r3, #1
d6e4: d016 beq.n d714 <lv_draw_rect+0x13e4>
mask_res = LV_DRAW_MASK_RES_FULL_COVER;
d6e6: 2701 movs r7, #1
if(simple_mode && split &&
d6e8: f1b9 0f32 cmp.w r9, #50 ; 0x32
d6ec: f300 8093 bgt.w d816 <lv_draw_rect+0x14e6>
if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) {
d6f0: 2b02 cmp r3, #2
d6f2: f000 8105 beq.w d900 <lv_draw_rect+0x15d0>
else if(dsc->bg_grad_dir == LV_GRAD_DIR_VER) {
d6f6: 2b01 cmp r3, #1
d6f8: d1be bne.n d678 <lv_draw_rect+0x1348>
_lv_blend_fill(clip, &fill_area,
d6fa: f89a 300d ldrb.w r3, [sl, #13]
d6fe: 9302 str r3, [sp, #8]
d700: 9b08 ldr r3, [sp, #32]
d702: 9301 str r3, [sp, #4]
d704: 9700 str r7, [sp, #0]
d706: 9b05 ldr r3, [sp, #20]
d708: 465a mov r2, fp
d70a: a91e add r1, sp, #120 ; 0x78
d70c: 9804 ldr r0, [sp, #16]
d70e: 4c85 ldr r4, [pc, #532] ; (d924 <lv_draw_rect+0x15f4>)
d710: 47a0 blx r4
d712: e7c2 b.n d69a <lv_draw_rect+0x136a>
mask_res = LV_DRAW_MASK_RES_FULL_COVER;
d714: 2701 movs r7, #1
if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) {
d716: f8ba 2002 ldrh.w r2, [sl, #2]
d71a: f8ba 3004 ldrh.w r3, [sl, #4]
d71e: 429a cmp r2, r3
d720: d06f beq.n d802 <lv_draw_rect+0x14d2>
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
d722: f8bd 106a ldrh.w r1, [sp, #106] ; 0x6a
grad_color = grad_get(dsc, lv_area_get_height(&coords_bg), y - coords_bg.y1);
d726: 1a62 subs r2, r4, r1
d728: b293 uxth r3, r2
d72a: 461a mov r2, r3
d72c: 930c str r3, [sp, #48] ; 0x30
int32_t min = (dsc->bg_main_color_stop * s) >> 8;
d72e: f9ba e008 ldrsh.w lr, [sl, #8]
d732: f8bd 306e ldrh.w r3, [sp, #110] ; 0x6e
d736: 3301 adds r3, #1
d738: 1a5b subs r3, r3, r1
d73a: b21b sxth r3, r3
d73c: fb03 f10e mul.w r1, r3, lr
d740: 1209 asrs r1, r1, #8
if(i <= min) return dsc->bg_color;
d742: b210 sxth r0, r2
d744: 4281 cmp r1, r0
d746: da4b bge.n d7e0 <lv_draw_rect+0x14b0>
int32_t max = (dsc->bg_grad_color_stop * s) >> 8;
d748: f9ba c00a ldrsh.w ip, [sl, #10]
d74c: fb0c f203 mul.w r2, ip, r3
if(i >= max) return dsc->bg_grad_color;
d750: ebb0 2f22 cmp.w r0, r2, asr #8
d754: f280 80b0 bge.w d8b8 <lv_draw_rect+0x1588>
int32_t d = dsc->bg_grad_color_stop - dsc->bg_main_color_stop;
d758: ebac 0e0e sub.w lr, ip, lr
d = (s * d) >> 8;
d75c: fb03 f30e mul.w r3, r3, lr
i -= min;
d760: 9a0c ldr r2, [sp, #48] ; 0x30
d762: 1a52 subs r2, r2, r1
lv_opa_t mix = (i * 255) / d;
d764: b212 sxth r2, r2
d766: ebc2 2202 rsb r2, r2, r2, lsl #8
d = (s * d) >> 8;
d76a: 121b asrs r3, r3, #8
lv_opa_t mix = (i * 255) / d;
d76c: fb92 f3f3 sdiv r3, r2, r3
d770: 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)));
d772: f1c3 01ff rsb r1, r3, #255 ; 0xff
d776: f89a 2005 ldrb.w r2, [sl, #5]
d77a: 08d2 lsrs r2, r2, #3
d77c: f89a 0003 ldrb.w r0, [sl, #3]
d780: 08c0 lsrs r0, r0, #3
d782: fb01 f000 mul.w r0, r1, r0
d786: fb03 0202 mla r2, r3, r2, r0
d78a: eb02 2002 add.w r0, r2, r2, lsl #8
d78e: eb02 12c0 add.w r2, r2, r0, lsl #7
d792: f3c2 52c4 ubfx r2, r2, #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)));
d796: f8ba 0004 ldrh.w r0, [sl, #4]
d79a: f3c0 1045 ubfx r0, r0, #5, #6
d79e: f8ba e002 ldrh.w lr, [sl, #2]
d7a2: f3ce 1e45 ubfx lr, lr, #5, #6
d7a6: fb01 fe0e mul.w lr, r1, lr
d7aa: fb03 e000 mla r0, r3, r0, lr
d7ae: eb00 2e00 add.w lr, r0, r0, lsl #8
d7b2: eb00 10ce add.w r0, r0, lr, lsl #7
d7b6: f3c0 50c5 ubfx r0, r0, #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)));
d7ba: f89a e004 ldrb.w lr, [sl, #4]
d7be: f00e 0e1f and.w lr, lr, #31
d7c2: f89a c002 ldrb.w ip, [sl, #2]
d7c6: f00c 0c1f and.w ip, ip, #31
d7ca: fb01 f10c mul.w r1, r1, ip
d7ce: fb03 130e mla r3, r3, lr, r1
d7d2: eb03 2103 add.w r1, r3, r3, lsl #8
d7d6: eb03 13c1 add.w r3, r3, r1, lsl #7
d7da: f3c3 53c4 ubfx r3, r3, #23, #5
d7de: e00a b.n d7f6 <lv_draw_rect+0x14c6>
if(i <= min) return dsc->bg_color;
d7e0: f89a 3002 ldrb.w r3, [sl, #2]
d7e4: f003 031f and.w r3, r3, #31
d7e8: f8ba 0002 ldrh.w r0, [sl, #2]
d7ec: f3c0 1045 ubfx r0, r0, #5, #6
d7f0: f89a 2003 ldrb.w r2, [sl, #3]
d7f4: 08d2 lsrs r2, r2, #3
d7f6: f363 0b04 bfi fp, r3, #0, #5
d7fa: f360 1b4a bfi fp, r0, #5, #6
d7fe: f362 2bcf bfi fp, r2, #11, #5
if(simple_mode && split &&
d802: 9b07 ldr r3, [sp, #28]
d804: 2b00 cmp r3, #0
d806: f43f af78 beq.w d6fa <lv_draw_rect+0x13ca>
d80a: f1b9 0f32 cmp.w r9, #50 ; 0x32
d80e: bfc8 it gt
d810: 2301 movgt r3, #1
d812: f77f af72 ble.w d6fa <lv_draw_rect+0x13ca>
(y < coords_bg.y1 + rout + 1 ||
d816: f9bd 206a ldrsh.w r2, [sp, #106] ; 0x6a
d81a: 4432 add r2, r6
d81c: 3201 adds r2, #1
if(simple_mode && split &&
d81e: 4294 cmp r4, r2
d820: db06 blt.n d830 <lv_draw_rect+0x1500>
y > coords_bg.y2 - rout - 1)) {
d822: f9bd 206e ldrsh.w r2, [sp, #110] ; 0x6e
d826: 1b92 subs r2, r2, r6
d828: 3a01 subs r2, #1
(y < coords_bg.y1 + rout + 1 ||
d82a: 4294 cmp r4, r2
d82c: f77f af60 ble.w d6f0 <lv_draw_rect+0x13c0>
fill_area2.x1 = coords_bg.x1;
d830: f9bd 3068 ldrsh.w r3, [sp, #104] ; 0x68
d834: f8ad 3088 strh.w r3, [sp, #136] ; 0x88
fill_area2.x2 = coords_bg.x1 + rout - 1;
d838: b2b2 uxth r2, r6
d83a: 920c str r2, [sp, #48] ; 0x30
d83c: 3b01 subs r3, #1
d83e: 4413 add r3, r2
d840: f8ad 308c strh.w r3, [sp, #140] ; 0x8c
fill_area2.y1 = fill_area.y1;
d844: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a
d848: f8ad 308a strh.w r3, [sp, #138] ; 0x8a
fill_area2.y2 = fill_area.y2;
d84c: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e
d850: f8ad 308e strh.w r3, [sp, #142] ; 0x8e
_lv_blend_fill(clip, &fill_area2,
d854: f89a 300d ldrb.w r3, [sl, #13]
d858: 9302 str r3, [sp, #8]
d85a: 9b08 ldr r3, [sp, #32]
d85c: 9301 str r3, [sp, #4]
d85e: 9700 str r7, [sp, #0]
d860: 9b05 ldr r3, [sp, #20]
d862: 465a mov r2, fp
d864: a922 add r1, sp, #136 ; 0x88
d866: 9804 ldr r0, [sp, #16]
d868: 4c2e ldr r4, [pc, #184] ; (d924 <lv_draw_rect+0x15f4>)
d86a: 47a0 blx r4
if(dsc->bg_grad_dir == LV_GRAD_DIR_VER) {
d86c: f89a 3006 ldrb.w r3, [sl, #6]
d870: 2b01 cmp r3, #1
d872: d02d beq.n d8d0 <lv_draw_rect+0x15a0>
fill_area2.x1 = coords_bg.x2 - rout + 1;
d874: f9bd 306c ldrsh.w r3, [sp, #108] ; 0x6c
d878: 1c5a adds r2, r3, #1
d87a: 990c ldr r1, [sp, #48] ; 0x30
d87c: 1a54 subs r4, r2, r1
d87e: f8ad 4088 strh.w r4, [sp, #136] ; 0x88
fill_area2.x2 = coords_bg.x2;
d882: f8ad 308c strh.w r3, [sp, #140] ; 0x8c
int32_t mask_ofs = (coords_bg.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1);
d886: 1b9b subs r3, r3, r6
d888: 3301 adds r3, #1
d88a: f9b8 2010 ldrsh.w r2, [r8, #16]
d88e: f9bd 1070 ldrsh.w r1, [sp, #112] ; 0x70
d892: 440a add r2, r1
d894: 1a9b subs r3, r3, r2
_lv_blend_fill(clip, &fill_area2,
d896: f89a 200d ldrb.w r2, [sl, #13]
d89a: 9202 str r2, [sp, #8]
d89c: 9a08 ldr r2, [sp, #32]
d89e: 9201 str r2, [sp, #4]
d8a0: 9700 str r7, [sp, #0]
d8a2: 9a05 ldr r2, [sp, #20]
d8a4: 2b00 cmp r3, #0
d8a6: bfa8 it ge
d8a8: 18d2 addge r2, r2, r3
d8aa: 4613 mov r3, r2
d8ac: 465a mov r2, fp
d8ae: a922 add r1, sp, #136 ; 0x88
d8b0: 9804 ldr r0, [sp, #16]
d8b2: 4c1c ldr r4, [pc, #112] ; (d924 <lv_draw_rect+0x15f4>)
d8b4: 47a0 blx r4
d8b6: e6f0 b.n d69a <lv_draw_rect+0x136a>
if(i >= max) return dsc->bg_grad_color;
d8b8: f89a 3004 ldrb.w r3, [sl, #4]
d8bc: f003 031f and.w r3, r3, #31
d8c0: f8ba 0004 ldrh.w r0, [sl, #4]
d8c4: f3c0 1045 ubfx r0, r0, #5, #6
d8c8: f89a 2005 ldrb.w r2, [sl, #5]
d8cc: 08d2 lsrs r2, r2, #3
d8ce: e792 b.n d7f6 <lv_draw_rect+0x14c6>
fill_area2.x1 = coords_bg.x1 + rout;
d8d0: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68
d8d4: 9a0c ldr r2, [sp, #48] ; 0x30
d8d6: 4413 add r3, r2
d8d8: f8ad 3088 strh.w r3, [sp, #136] ; 0x88
fill_area2.x2 = coords_bg.x2 - rout;
d8dc: f8bd 306c ldrh.w r3, [sp, #108] ; 0x6c
d8e0: 1a9b subs r3, r3, r2
d8e2: f8ad 308c strh.w r3, [sp, #140] ; 0x8c
_lv_blend_fill(clip, &fill_area2,
d8e6: f89a 300d ldrb.w r3, [sl, #13]
d8ea: 9302 str r3, [sp, #8]
d8ec: 9b08 ldr r3, [sp, #32]
d8ee: 9301 str r3, [sp, #4]
d8f0: 2301 movs r3, #1
d8f2: 9300 str r3, [sp, #0]
d8f4: 2300 movs r3, #0
d8f6: 465a mov r2, fp
d8f8: a922 add r1, sp, #136 ; 0x88
d8fa: 9804 ldr r0, [sp, #16]
d8fc: 47a0 blx r4
d8fe: e7b9 b.n d874 <lv_draw_rect+0x1544>
_lv_blend_map(clip, &fill_area, grad_map, mask_buf, mask_res, opa, dsc->bg_blend_mode);
d900: f89a 300d ldrb.w r3, [sl, #13]
d904: 9302 str r3, [sp, #8]
d906: 9b08 ldr r3, [sp, #32]
d908: 9301 str r3, [sp, #4]
d90a: 9700 str r7, [sp, #0]
d90c: 9b05 ldr r3, [sp, #20]
d90e: 9a0d ldr r2, [sp, #52] ; 0x34
d910: a91e add r1, sp, #120 ; 0x78
d912: 9804 ldr r0, [sp, #16]
d914: 4c04 ldr r4, [pc, #16] ; (d928 <lv_draw_rect+0x15f8>)
d916: 47a0 blx r4
d918: e6bf b.n d69a <lv_draw_rect+0x136a>
d91a: bf00 nop
d91c: 00012bed .word 0x00012bed
d920: 0000be1d .word 0x0000be1d
d924: 00007751 .word 0x00007751
d928: 00008281 .word 0x00008281
d92c: 9f08 ldr r7, [sp, #32]
if(dsc->bg_grad_dir == LV_GRAD_DIR_NONE && other_mask_cnt == 0 && split) {
d92e: f89a 3006 ldrb.w r3, [sl, #6]
d932: b923 cbnz r3, d93e <lv_draw_rect+0x160e>
d934: 9b0b ldr r3, [sp, #44] ; 0x2c
d936: b913 cbnz r3, d93e <lv_draw_rect+0x160e>
d938: f1b9 0f32 cmp.w r9, #50 ; 0x32
d93c: dc0b bgt.n d956 <lv_draw_rect+0x1626>
if(grad_map) _lv_mem_buf_release(grad_map);
d93e: 9b0d ldr r3, [sp, #52] ; 0x34
d940: b113 cbz r3, d948 <lv_draw_rect+0x1618>
d942: 4618 mov r0, r3
d944: 4bb3 ldr r3, [pc, #716] ; (dc14 <lv_draw_rect+0x18e4>)
d946: 4798 blx r3
lv_draw_mask_remove_id(mask_rout_id);
d948: 980e ldr r0, [sp, #56] ; 0x38
d94a: 4bb3 ldr r3, [pc, #716] ; (dc18 <lv_draw_rect+0x18e8>)
d94c: 4798 blx r3
_lv_mem_buf_release(mask_buf);
d94e: 9805 ldr r0, [sp, #20]
d950: 4bb0 ldr r3, [pc, #704] ; (dc14 <lv_draw_rect+0x18e4>)
d952: 4798 blx r3
d954: e469 b.n d22a <lv_draw_rect+0xefa>
fill_area.x1 = coords_bg.x1 + rout;
d956: b2b6 uxth r6, r6
d958: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68
d95c: 4433 add r3, r6
d95e: f8ad 3078 strh.w r3, [sp, #120] ; 0x78
fill_area.x2 = coords_bg.x2 - rout;
d962: f8bd 306c ldrh.w r3, [sp, #108] ; 0x6c
d966: 1b9b subs r3, r3, r6
d968: f8ad 307c strh.w r3, [sp, #124] ; 0x7c
fill_area.y1 = coords_bg.y1;
d96c: f9bd 306a ldrsh.w r3, [sp, #106] ; 0x6a
d970: f8ad 307a strh.w r3, [sp, #122] ; 0x7a
fill_area.y2 = coords_bg.y1 + rout;
d974: 4433 add r3, r6
d976: f8ad 307e strh.w r3, [sp, #126] ; 0x7e
_lv_blend_fill(clip, &fill_area,
d97a: f89a 300d ldrb.w r3, [sl, #13]
d97e: 9302 str r3, [sp, #8]
d980: 9701 str r7, [sp, #4]
d982: 2301 movs r3, #1
d984: 9300 str r3, [sp, #0]
d986: 2300 movs r3, #0
d988: f8ba 2002 ldrh.w r2, [sl, #2]
d98c: a91e add r1, sp, #120 ; 0x78
d98e: 9804 ldr r0, [sp, #16]
d990: 4ca2 ldr r4, [pc, #648] ; (dc1c <lv_draw_rect+0x18ec>)
d992: 47a0 blx r4
fill_area.y1 = coords_bg.y2 - rout;
d994: f9bd 106e ldrsh.w r1, [sp, #110] ; 0x6e
d998: 1b8a subs r2, r1, r6
d99a: b212 sxth r2, r2
d99c: f8ad 207a strh.w r2, [sp, #122] ; 0x7a
if(fill_area.y1 <= fill_area.y2) fill_area.y1 = fill_area.y2 + 1; /*Avoid overdrawing the last line*/
d9a0: f9bd 307e ldrsh.w r3, [sp, #126] ; 0x7e
d9a4: 429a cmp r2, r3
d9a6: bfdc itt le
d9a8: 3301 addle r3, #1
d9aa: f8ad 307a strhle.w r3, [sp, #122] ; 0x7a
fill_area.y2 = coords_bg.y2;
d9ae: f8ad 107e strh.w r1, [sp, #126] ; 0x7e
_lv_blend_fill(clip, &fill_area,
d9b2: f89a 300d ldrb.w r3, [sl, #13]
d9b6: 9302 str r3, [sp, #8]
d9b8: 9701 str r7, [sp, #4]
d9ba: 2501 movs r5, #1
d9bc: 9500 str r5, [sp, #0]
d9be: 2300 movs r3, #0
d9c0: f8ba 2002 ldrh.w r2, [sl, #2]
d9c4: a91e add r1, sp, #120 ; 0x78
d9c6: f8dd 8010 ldr.w r8, [sp, #16]
d9ca: 4640 mov r0, r8
d9cc: 4c93 ldr r4, [pc, #588] ; (dc1c <lv_draw_rect+0x18ec>)
d9ce: 47a0 blx r4
fill_area.x1 = coords_bg.x1;
d9d0: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68
d9d4: f8ad 3078 strh.w r3, [sp, #120] ; 0x78
fill_area.x2 = coords_bg.x2;
d9d8: f8bd 306c ldrh.w r3, [sp, #108] ; 0x6c
d9dc: f8ad 307c strh.w r3, [sp, #124] ; 0x7c
fill_area.y1 = coords_bg.y1 + rout + 1;
d9e0: f8bd 306a ldrh.w r3, [sp, #106] ; 0x6a
d9e4: 442b add r3, r5
d9e6: 4433 add r3, r6
d9e8: f8ad 307a strh.w r3, [sp, #122] ; 0x7a
fill_area.y2 = coords_bg.y2 - rout - 1;
d9ec: f8bd 306e ldrh.w r3, [sp, #110] ; 0x6e
d9f0: 3b01 subs r3, #1
d9f2: 1b9e subs r6, r3, r6
d9f4: f8ad 607e strh.w r6, [sp, #126] ; 0x7e
_lv_blend_fill(clip, &fill_area,
d9f8: f89a 300d ldrb.w r3, [sl, #13]
d9fc: 9302 str r3, [sp, #8]
d9fe: 9701 str r7, [sp, #4]
da00: 9500 str r5, [sp, #0]
da02: 2300 movs r3, #0
da04: f8ba 2002 ldrh.w r2, [sl, #2]
da08: a91e add r1, sp, #120 ; 0x78
da0a: 4640 mov r0, r8
da0c: 47a0 blx r4
da0e: e796 b.n d93e <lv_draw_rect+0x160e>
lv_img_src_t src_type = lv_img_src_get_type(dsc->pattern_image);
da10: 4b83 ldr r3, [pc, #524] ; (dc20 <lv_draw_rect+0x18f0>)
da12: 4798 blx r3
da14: 4605 mov r5, r0
if(src_type == LV_IMG_SRC_FILE || src_type == LV_IMG_SRC_VARIABLE) {
da16: 2801 cmp r0, #1
da18: d912 bls.n da40 <lv_draw_rect+0x1710>
else if(src_type == LV_IMG_SRC_SYMBOL) {
da1a: 2802 cmp r0, #2
da1c: d039 beq.n da92 <lv_draw_rect+0x1762>
LV_LOG_WARN("lv_img_design: image source type is unknown");
da1e: 4b81 ldr r3, [pc, #516] ; (dc24 <lv_draw_rect+0x18f4>)
da20: 9300 str r3, [sp, #0]
da22: 4b81 ldr r3, [pc, #516] ; (dc28 <lv_draw_rect+0x18f8>)
da24: f240 52ae movw r2, #1454 ; 0x5ae
da28: 4980 ldr r1, [pc, #512] ; (dc2c <lv_draw_rect+0x18fc>)
da2a: 2002 movs r0, #2
da2c: 4c80 ldr r4, [pc, #512] ; (dc30 <lv_draw_rect+0x1900>)
da2e: 47a0 blx r4
lv_draw_img(coords, clip, NULL, NULL);
da30: 2300 movs r3, #0
da32: 461a mov r2, r3
da34: 9904 ldr r1, [sp, #16]
da36: 9806 ldr r0, [sp, #24]
da38: 4c7e ldr r4, [pc, #504] ; (dc34 <lv_draw_rect+0x1904>)
da3a: 47a0 blx r4
da3c: f7ff bbfd b.w d23a <lv_draw_rect+0xf0a>
lv_res_t res = lv_img_decoder_get_info(dsc->pattern_image, &header);
da40: a929 add r1, sp, #164 ; 0xa4
da42: f8da 002c ldr.w r0, [sl, #44] ; 0x2c
da46: 4b7c ldr r3, [pc, #496] ; (dc38 <lv_draw_rect+0x1908>)
da48: 4798 blx r3
if(res != LV_RES_OK) {
da4a: 2801 cmp r0, #1
da4c: d00a beq.n da64 <lv_draw_rect+0x1734>
LV_LOG_WARN("draw_img: can't get image info");
da4e: 4b7b ldr r3, [pc, #492] ; (dc3c <lv_draw_rect+0x190c>)
da50: 9300 str r3, [sp, #0]
da52: 4b75 ldr r3, [pc, #468] ; (dc28 <lv_draw_rect+0x18f8>)
da54: f240 5294 movw r2, #1428 ; 0x594
da58: 4974 ldr r1, [pc, #464] ; (dc2c <lv_draw_rect+0x18fc>)
da5a: 2002 movs r0, #2
da5c: 4c74 ldr r4, [pc, #464] ; (dc30 <lv_draw_rect+0x1900>)
da5e: 47a0 blx r4
da60: f7ff bbeb b.w d23a <lv_draw_rect+0xf0a>
img_w = header.w;
da64: 9b29 ldr r3, [sp, #164] ; 0xa4
da66: f3c3 298a ubfx r9, r3, #10, #11
img_h = header.h;
da6a: f8bd 70a6 ldrh.w r7, [sp, #166] ; 0xa6
da6e: f3c7 174a ubfx r7, r7, #5, #11
lv_draw_img_dsc_init(&img_dsc);
da72: a81e add r0, sp, #120 ; 0x78
da74: 4b72 ldr r3, [pc, #456] ; (dc40 <lv_draw_rect+0x1910>)
da76: 4798 blx r3
img_dsc.opa = dsc->pattern_opa;
da78: f89a 3036 ldrb.w r3, [sl, #54] ; 0x36
da7c: f88d 3078 strb.w r3, [sp, #120] ; 0x78
img_dsc.recolor_opa = dsc->pattern_recolor_opa;
da80: f89a 3037 ldrb.w r3, [sl, #55] ; 0x37
da84: f88d 3082 strb.w r3, [sp, #130] ; 0x82
img_dsc.recolor = dsc->pattern_recolor;
da88: f8ba 3034 ldrh.w r3, [sl, #52] ; 0x34
da8c: f8ad 3084 strh.w r3, [sp, #132] ; 0x84
da90: e020 b.n dad4 <lv_draw_rect+0x17a4>
lv_draw_label_dsc_init(&label_dsc);
da92: a822 add r0, sp, #136 ; 0x88
da94: 4b6b ldr r3, [pc, #428] ; (dc44 <lv_draw_rect+0x1914>)
da96: 4798 blx r3
label_dsc.color = dsc->pattern_recolor;
da98: f8ba 3034 ldrh.w r3, [sl, #52] ; 0x34
da9c: f8ad 3088 strh.w r3, [sp, #136] ; 0x88
label_dsc.font = dsc->pattern_font;
daa0: f8da 2030 ldr.w r2, [sl, #48] ; 0x30
daa4: 9223 str r2, [sp, #140] ; 0x8c
label_dsc.opa = dsc->pattern_opa;
daa6: f89a 3036 ldrb.w r3, [sl, #54] ; 0x36
daaa: f88d 3090 strb.w r3, [sp, #144] ; 0x90
_lv_txt_get_size(&s, dsc->pattern_image, label_dsc.font, label_dsc.letter_space, label_dsc.line_space, LV_COORD_MAX,
daae: f9bd 3094 ldrsh.w r3, [sp, #148] ; 0x94
dab2: 2100 movs r1, #0
dab4: 9102 str r1, [sp, #8]
dab6: f647 4118 movw r1, #31768 ; 0x7c18
daba: 9101 str r1, [sp, #4]
dabc: f9bd 1092 ldrsh.w r1, [sp, #146] ; 0x92
dac0: 9100 str r1, [sp, #0]
dac2: f8da 102c ldr.w r1, [sl, #44] ; 0x2c
dac6: a829 add r0, sp, #164 ; 0xa4
dac8: 4c5f ldr r4, [pc, #380] ; (dc48 <lv_draw_rect+0x1918>)
daca: 47a0 blx r4
img_w = s.x;
dacc: f9bd 90a4 ldrsh.w r9, [sp, #164] ; 0xa4
img_h = s.y;
dad0: f9bd 70a6 ldrsh.w r7, [sp, #166] ; 0xa6
if(dsc->pattern_repeat) {
dad4: f89a 3038 ldrb.w r3, [sl, #56] ; 0x38
dad8: f013 0f01 tst.w r3, #1
dadc: d13f bne.n db5e <lv_draw_rect+0x182e>
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
dade: 9c06 ldr r4, [sp, #24]
dae0: 8821 ldrh r1, [r4, #0]
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
dae2: 8860 ldrh r0, [r4, #2]
dae4: 88e2 ldrh r2, [r4, #6]
dae6: 3201 adds r2, #1
dae8: 1a12 subs r2, r2, r0
int32_t obj_h = lv_area_get_height(coords);
daea: b212 sxth r2, r2
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
daec: 88a3 ldrh r3, [r4, #4]
daee: 3301 adds r3, #1
daf0: 1a5b subs r3, r3, r1
int32_t obj_w = lv_area_get_width(coords);
daf2: b21b sxth r3, r3
coords_tmp.x1 = coords->x1 + (obj_w - img_w) / 2;
daf4: eba3 0309 sub.w r3, r3, r9
daf8: eb03 73d3 add.w r3, r3, r3, lsr #31
dafc: eb01 0363 add.w r3, r1, r3, asr #1
db00: b29b uxth r3, r3
db02: f8ad 3070 strh.w r3, [sp, #112] ; 0x70
coords_tmp.y1 = coords->y1 + (obj_h - img_h) / 2;
db06: 1bd2 subs r2, r2, r7
db08: eb02 71d2 add.w r1, r2, r2, lsr #31
db0c: eb00 0161 add.w r1, r0, r1, asr #1
db10: b289 uxth r1, r1
db12: f8ad 1072 strh.w r1, [sp, #114] ; 0x72
coords_tmp.x2 = coords_tmp.x1 + img_w - 1;
db16: f109 39ff add.w r9, r9, #4294967295
db1a: 4499 add r9, r3
db1c: f8ad 9074 strh.w r9, [sp, #116] ; 0x74
coords_tmp.y2 = coords_tmp.y1 + img_h - 1;
db20: 1e7b subs r3, r7, #1
db22: 440b add r3, r1
db24: b29b uxth r3, r3
db26: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
if(src_type == LV_IMG_SRC_SYMBOL) {
db2a: 2d02 cmp r5, #2
db2c: f000 80bd beq.w dcaa <lv_draw_rect+0x197a>
if(_lv_area_is_in(&coords_tmp, coords, dsc->radius) == false) {
db30: f9ba 2000 ldrsh.w r2, [sl]
db34: 9906 ldr r1, [sp, #24]
db36: a81c add r0, sp, #112 ; 0x70
db38: 4b44 ldr r3, [pc, #272] ; (dc4c <lv_draw_rect+0x191c>)
db3a: 4798 blx r3
int16_t radius_mask_id = LV_MASK_ID_INV;
db3c: f04f 34ff mov.w r4, #4294967295
if(_lv_area_is_in(&coords_tmp, coords, dsc->radius) == false) {
db40: 2800 cmp r0, #0
db42: f000 86d4 beq.w e8ee <lv_draw_rect+0x25be>
else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc);
db46: ab1e add r3, sp, #120 ; 0x78
db48: f8da 202c ldr.w r2, [sl, #44] ; 0x2c
db4c: 9904 ldr r1, [sp, #16]
db4e: a81c add r0, sp, #112 ; 0x70
db50: 4d38 ldr r5, [pc, #224] ; (dc34 <lv_draw_rect+0x1904>)
db52: 47a8 blx r5
lv_draw_mask_remove_id(radius_mask_id);
db54: 4620 mov r0, r4
db56: 4b30 ldr r3, [pc, #192] ; (dc18 <lv_draw_rect+0x18e8>)
db58: 4798 blx r3
db5a: f7ff bb6e b.w d23a <lv_draw_rect+0xf0a>
lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false);
db5e: 2300 movs r3, #0
db60: f9ba 2000 ldrsh.w r2, [sl]
db64: 9e06 ldr r6, [sp, #24]
db66: 4631 mov r1, r6
db68: a829 add r0, sp, #164 ; 0xa4
db6a: 4c39 ldr r4, [pc, #228] ; (dc50 <lv_draw_rect+0x1920>)
db6c: 47a0 blx r4
int16_t radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL);
db6e: 2100 movs r1, #0
db70: a829 add r0, sp, #164 ; 0xa4
db72: 4b38 ldr r3, [pc, #224] ; (dc54 <lv_draw_rect+0x1924>)
db74: 4798 blx r3
db76: 9007 str r0, [sp, #28]
db78: 88b3 ldrh r3, [r6, #4]
db7a: 3301 adds r3, #1
db7c: 4634 mov r4, r6
db7e: 8832 ldrh r2, [r6, #0]
db80: 1a9b subs r3, r3, r2
int32_t ofs_x = (lv_area_get_width(coords) - (lv_area_get_width(coords) / img_w) * img_w) / 2;
db82: b21b sxth r3, r3
db84: fb93 f2f9 sdiv r2, r3, r9
db88: fb09 3312 mls r3, r9, r2, r3
db8c: eb03 73d3 add.w r3, r3, r3, lsr #31
db90: ea4f 0b63 mov.w fp, r3, asr #1
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
db94: f9b6 1006 ldrsh.w r1, [r6, #6]
db98: 8873 ldrh r3, [r6, #2]
db9a: 1c4a adds r2, r1, #1
db9c: 1ad2 subs r2, r2, r3
int32_t ofs_y = (lv_area_get_height(coords) - (lv_area_get_height(coords) / img_h) * img_h) / 2;
db9e: b210 sxth r0, r2
dba0: fb90 f2f7 sdiv r2, r0, r7
dba4: fb07 0212 mls r2, r7, r2, r0
dba8: eb02 72d2 add.w r2, r2, r2, lsr #31
coords_tmp.y1 = coords->y1 - ofs_y;
dbac: eba3 0362 sub.w r3, r3, r2, asr #1
dbb0: b29b uxth r3, r3
dbb2: b21a sxth r2, r3
dbb4: f8ad 2072 strh.w r2, [sp, #114] ; 0x72
coords_tmp.y2 = coords_tmp.y1 + img_h - 1;
dbb8: b2bf uxth r7, r7
dbba: 1e78 subs r0, r7, #1
dbbc: 4403 add r3, r0
dbbe: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
for(; coords_tmp.y1 <= coords->y2; coords_tmp.y1 += img_h, coords_tmp.y2 += img_h) {
dbc2: 4291 cmp r1, r2
dbc4: db6c blt.n dca0 <lv_draw_rect+0x1970>
if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL);
dbc6: f8df 8090 ldr.w r8, [pc, #144] ; dc58 <lv_draw_rect+0x1928>
else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc);
dbca: 4e1a ldr r6, [pc, #104] ; (dc34 <lv_draw_rect+0x1904>)
dbcc: f8cd 9014 str.w r9, [sp, #20]
dbd0: 46a1 mov r9, r4
dbd2: e052 b.n dc7a <lv_draw_rect+0x194a>
if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL);
dbd4: 2300 movs r3, #0
dbd6: 9300 str r3, [sp, #0]
dbd8: f8da 302c ldr.w r3, [sl, #44] ; 0x2c
dbdc: aa22 add r2, sp, #136 ; 0x88
dbde: 9904 ldr r1, [sp, #16]
dbe0: a81c add r0, sp, #112 ; 0x70
dbe2: 47c0 blx r8
for(; coords_tmp.x1 <= coords->x2; coords_tmp.x1 += img_w, coords_tmp.x2 += img_w) {
dbe4: f8bd 3070 ldrh.w r3, [sp, #112] ; 0x70
dbe8: 4423 add r3, r4
dbea: b21b sxth r3, r3
dbec: f8ad 3070 strh.w r3, [sp, #112] ; 0x70
dbf0: f8bd 2074 ldrh.w r2, [sp, #116] ; 0x74
dbf4: 4422 add r2, r4
dbf6: f8ad 2074 strh.w r2, [sp, #116] ; 0x74
dbfa: f9b9 2004 ldrsh.w r2, [r9, #4]
dbfe: 429a cmp r2, r3
dc00: db2c blt.n dc5c <lv_draw_rect+0x192c>
if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL);
dc02: 2d02 cmp r5, #2
dc04: d0e6 beq.n dbd4 <lv_draw_rect+0x18a4>
else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc);
dc06: ab1e add r3, sp, #120 ; 0x78
dc08: f8da 202c ldr.w r2, [sl, #44] ; 0x2c
dc0c: 9904 ldr r1, [sp, #16]
dc0e: a81c add r0, sp, #112 ; 0x70
dc10: 47b0 blx r6
dc12: e7e7 b.n dbe4 <lv_draw_rect+0x18b4>
dc14: 00012571 .word 0x00012571
dc18: 0000be6d .word 0x0000be6d
dc1c: 00007751 .word 0x00007751
dc20: 00009969 .word 0x00009969
dc24: 000250e0 .word 0x000250e0
dc28: 00025080 .word 0x00025080
dc2c: 00025090 .word 0x00025090
dc30: 0001225d .word 0x0001225d
dc34: 000096e9 .word 0x000096e9
dc38: 0000fded .word 0x0000fded
dc3c: 000250c0 .word 0x000250c0
dc40: 00009645 .word 0x00009645
dc44: 000099cd .word 0x000099cd
dc48: 0001407d .word 0x0001407d
dc4c: 0001176d .word 0x0001176d
dc50: 0000c02d .word 0x0000c02d
dc54: 0000bdc1 .word 0x0000bdc1
dc58: 00009a25 .word 0x00009a25
for(; coords_tmp.y1 <= coords->y2; coords_tmp.y1 += img_h, coords_tmp.y2 += img_h) {
dc5c: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72
dc60: 443b add r3, r7
dc62: b21b sxth r3, r3
dc64: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
dc68: f8bd 2076 ldrh.w r2, [sp, #118] ; 0x76
dc6c: 443a add r2, r7
dc6e: f8ad 2076 strh.w r2, [sp, #118] ; 0x76
dc72: f9b9 2006 ldrsh.w r2, [r9, #6]
dc76: 429a cmp r2, r3
dc78: db12 blt.n dca0 <lv_draw_rect+0x1970>
coords_tmp.x1 = coords->x1 - ofs_x;
dc7a: f8b9 3000 ldrh.w r3, [r9]
dc7e: eba3 030b sub.w r3, r3, fp
dc82: b29b uxth r3, r3
dc84: b21a sxth r2, r3
dc86: f8ad 2070 strh.w r2, [sp, #112] ; 0x70
coords_tmp.x2 = coords_tmp.x1 + img_w - 1;
dc8a: f8bd 4014 ldrh.w r4, [sp, #20]
dc8e: 1e61 subs r1, r4, #1
dc90: 440b add r3, r1
dc92: f8ad 3074 strh.w r3, [sp, #116] ; 0x74
for(; coords_tmp.x1 <= coords->x2; coords_tmp.x1 += img_w, coords_tmp.x2 += img_w) {
dc96: f9b9 3004 ldrsh.w r3, [r9, #4]
dc9a: 4293 cmp r3, r2
dc9c: dab1 bge.n dc02 <lv_draw_rect+0x18d2>
dc9e: e7dd b.n dc5c <lv_draw_rect+0x192c>
lv_draw_mask_remove_id(radius_mask_id);
dca0: 9807 ldr r0, [sp, #28]
dca2: 4b8a ldr r3, [pc, #552] ; (decc <lv_draw_rect+0x1b9c>)
dca4: 4798 blx r3
dca6: f7ff bac8 b.w d23a <lv_draw_rect+0xf0a>
coords_tmp.y1 += y_corr;
dcaa: f002 0201 and.w r2, r2, #1
dcae: 4411 add r1, r2
dcb0: f8ad 1072 strh.w r1, [sp, #114] ; 0x72
coords_tmp.y2 += y_corr;
dcb4: 4413 add r3, r2
dcb6: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
if(_lv_area_is_in(&coords_tmp, coords, dsc->radius) == false) {
dcba: f9ba 2000 ldrsh.w r2, [sl]
dcbe: 4621 mov r1, r4
dcc0: a81c add r0, sp, #112 ; 0x70
dcc2: 4b83 ldr r3, [pc, #524] ; (ded0 <lv_draw_rect+0x1ba0>)
dcc4: 4798 blx r3
dcc6: b9a8 cbnz r0, dcf4 <lv_draw_rect+0x19c4>
lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false);
dcc8: 2300 movs r3, #0
dcca: f9ba 2000 ldrsh.w r2, [sl]
dcce: 9906 ldr r1, [sp, #24]
dcd0: a829 add r0, sp, #164 ; 0xa4
dcd2: 4c80 ldr r4, [pc, #512] ; (ded4 <lv_draw_rect+0x1ba4>)
dcd4: 47a0 blx r4
radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL);
dcd6: 2100 movs r1, #0
dcd8: a829 add r0, sp, #164 ; 0xa4
dcda: 4b7f ldr r3, [pc, #508] ; (ded8 <lv_draw_rect+0x1ba8>)
dcdc: 4798 blx r3
dcde: 4604 mov r4, r0
if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL);
dce0: 2300 movs r3, #0
dce2: 9300 str r3, [sp, #0]
dce4: f8da 302c ldr.w r3, [sl, #44] ; 0x2c
dce8: aa22 add r2, sp, #136 ; 0x88
dcea: 9904 ldr r1, [sp, #16]
dcec: a81c add r0, sp, #112 ; 0x70
dcee: 4d7b ldr r5, [pc, #492] ; (dedc <lv_draw_rect+0x1bac>)
dcf0: 47a8 blx r5
dcf2: e72f b.n db54 <lv_draw_rect+0x1824>
int16_t radius_mask_id = LV_MASK_ID_INV;
dcf4: f04f 34ff mov.w r4, #4294967295
dcf8: e7f2 b.n dce0 <lv_draw_rect+0x19b0>
draw_area.x1 -= disp_area->x1;
dcfa: 8a29 ldrh r1, [r5, #16]
dcfc: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60
dd00: 1a5b subs r3, r3, r1
dd02: b29a uxth r2, r3
dd04: f8ad 2060 strh.w r2, [sp, #96] ; 0x60
draw_area.y1 -= disp_area->y1;
dd08: 8a68 ldrh r0, [r5, #18]
dd0a: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62
dd0e: 1a1b subs r3, r3, r0
dd10: f8ad 3062 strh.w r3, [sp, #98] ; 0x62
draw_area.x2 -= disp_area->x1;
dd14: f8bd 3064 ldrh.w r3, [sp, #100] ; 0x64
dd18: 1a5b subs r3, r3, r1
dd1a: b29b uxth r3, r3
dd1c: f8ad 3064 strh.w r3, [sp, #100] ; 0x64
draw_area.y2 -= disp_area->y1;
dd20: f8bd 1066 ldrh.w r1, [sp, #102] ; 0x66
dd24: 1a09 subs r1, r1, r0
dd26: f8ad 1066 strh.w r1, [sp, #102] ; 0x66
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
dd2a: 3301 adds r3, #1
dd2c: 1a9b subs r3, r3, r2
dd2e: b21b sxth r3, r3
dd30: 9308 str r3, [sp, #32]
lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w);
dd32: 9309 str r3, [sp, #36] ; 0x24
dd34: 4618 mov r0, r3
dd36: 4b6a ldr r3, [pc, #424] ; (dee0 <lv_draw_rect+0x1bb0>)
dd38: 4798 blx r3
dd3a: 4683 mov fp, r0
uint8_t other_mask_cnt = lv_draw_mask_get_cnt();
dd3c: 4b69 ldr r3, [pc, #420] ; (dee4 <lv_draw_rect+0x1bb4>)
dd3e: 4798 blx r3
if(other_mask_cnt) simple_mode = false;
dd40: b948 cbnz r0, dd56 <lv_draw_rect+0x1a26>
else if(dsc->border_side != LV_BORDER_SIDE_FULL) simple_mode = false;
dd42: f9ba 8012 ldrsh.w r8, [sl, #18]
dd46: f1b8 0f0f cmp.w r8, #15
dd4a: bf14 ite ne
dd4c: f04f 0800 movne.w r8, #0
dd50: f04f 0801 moveq.w r8, #1
dd54: e001 b.n dd5a <lv_draw_rect+0x1a2a>
if(other_mask_cnt) simple_mode = false;
dd56: f04f 0800 mov.w r8, #0
int32_t rout = dsc->radius;
dd5a: f9ba 2000 ldrsh.w r2, [sl]
dd5e: 9e06 ldr r6, [sp, #24]
dd60: 88b3 ldrh r3, [r6, #4]
dd62: 3301 adds r3, #1
dd64: 8831 ldrh r1, [r6, #0]
dd66: 1a5b subs r3, r3, r1
int32_t coords_w = lv_area_get_width(coords);
dd68: b219 sxth r1, r3
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
dd6a: 88f3 ldrh r3, [r6, #6]
dd6c: 3301 adds r3, #1
dd6e: 8870 ldrh r0, [r6, #2]
dd70: 1a1b subs r3, r3, r0
int32_t coords_h = lv_area_get_height(coords);
dd72: b21b sxth r3, r3
int32_t short_side = LV_MATH_MIN(coords_w, coords_h);
dd74: 428b cmp r3, r1
dd76: bfa8 it ge
dd78: 460b movge r3, r1
if(rout > short_side >> 1) rout = short_side >> 1;
dd7a: 105b asrs r3, r3, #1
dd7c: 4293 cmp r3, r2
dd7e: bfa8 it ge
dd80: 4613 movge r3, r2
dd82: 461a mov r2, r3
dd84: 930a str r3, [sp, #40] ; 0x28
if(rout > 0) {
dd86: 2b00 cmp r3, #0
dd88: f340 8088 ble.w de9c <lv_draw_rect+0x1b6c>
lv_draw_mask_radius_init(&mask_rout_param, coords, rout, false);
dd8c: 2300 movs r3, #0
dd8e: 4631 mov r1, r6
dd90: a822 add r0, sp, #136 ; 0x88
dd92: 4e50 ldr r6, [pc, #320] ; (ded4 <lv_draw_rect+0x1ba4>)
dd94: 47b0 blx r6
mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL);
dd96: 2100 movs r1, #0
dd98: a822 add r0, sp, #136 ; 0x88
dd9a: 4b4f ldr r3, [pc, #316] ; (ded8 <lv_draw_rect+0x1ba8>)
dd9c: 4798 blx r3
dd9e: 900e str r0, [sp, #56] ; 0x38
int32_t rin = rout - dsc->border_width;
dda0: f9ba 6010 ldrsh.w r6, [sl, #16]
dda4: 9a06 ldr r2, [sp, #24]
dda6: 1e53 subs r3, r2, #1
dda8: 1dd0 adds r0, r2, #7
uint8_t * d8 = (uint8_t *)dst;
ddaa: aa1a add r2, sp, #104 ; 0x68
*d8 = *s8;
ddac: f813 1f01 ldrb.w r1, [r3, #1]!
ddb0: f802 1b01 strb.w r1, [r2], #1
while(len) {
ddb4: 4283 cmp r3, r0
ddb6: d1f9 bne.n ddac <lv_draw_rect+0x1a7c>
area_small.x1 += ((dsc->border_side & LV_BORDER_SIDE_LEFT) ? dsc->border_width : - (dsc->border_width + rout));
ddb8: f8bd 2068 ldrh.w r2, [sp, #104] ; 0x68
ddbc: f8ba 3012 ldrh.w r3, [sl, #18]
ddc0: f013 0f04 tst.w r3, #4
ddc4: d06e beq.n dea4 <lv_draw_rect+0x1b74>
ddc6: b2b1 uxth r1, r6
ddc8: 440a add r2, r1
ddca: f8ad 2068 strh.w r2, [sp, #104] ; 0x68
area_small.x2 -= ((dsc->border_side & LV_BORDER_SIDE_RIGHT) ? dsc->border_width : - (dsc->border_width + rout));
ddce: f8bd 206c ldrh.w r2, [sp, #108] ; 0x6c
ddd2: f013 0f08 tst.w r3, #8
ddd6: d06a beq.n deae <lv_draw_rect+0x1b7e>
ddd8: b2b1 uxth r1, r6
ddda: 1a52 subs r2, r2, r1
dddc: f8ad 206c strh.w r2, [sp, #108] ; 0x6c
area_small.y1 += ((dsc->border_side & LV_BORDER_SIDE_TOP) ? dsc->border_width : - (dsc->border_width + rout));
dde0: f8bd 206a ldrh.w r2, [sp, #106] ; 0x6a
dde4: f013 0f02 tst.w r3, #2
dde8: d066 beq.n deb8 <lv_draw_rect+0x1b88>
ddea: b2b1 uxth r1, r6
ddec: 440a add r2, r1
ddee: f8ad 206a strh.w r2, [sp, #106] ; 0x6a
area_small.y2 -= ((dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? dsc->border_width : - (dsc->border_width + rout));
ddf2: f8bd 206e ldrh.w r2, [sp, #110] ; 0x6e
ddf6: f013 0f01 tst.w r3, #1
ddfa: d062 beq.n dec2 <lv_draw_rect+0x1b92>
ddfc: b2b3 uxth r3, r6
ddfe: 1ad3 subs r3, r2, r3
de00: f8ad 306e strh.w r3, [sp, #110] ; 0x6e
lv_draw_mask_radius_init(&mask_rin_param, &area_small, rout - dsc->border_width, true);
de04: f8dd 9028 ldr.w r9, [sp, #40] ; 0x28
de08: fa1f f789 uxth.w r7, r9
de0c: 1bba subs r2, r7, r6
de0e: 2301 movs r3, #1
de10: b212 sxth r2, r2
de12: a91a add r1, sp, #104 ; 0x68
de14: a829 add r0, sp, #164 ; 0xa4
de16: 4e2f ldr r6, [pc, #188] ; (ded4 <lv_draw_rect+0x1ba4>)
de18: 47b0 blx r6
int16_t mask_rin_id = lv_draw_mask_add(&mask_rin_param, NULL);
de1a: 2100 movs r1, #0
de1c: a829 add r0, sp, #164 ; 0xa4
de1e: 4b2e ldr r3, [pc, #184] ; (ded8 <lv_draw_rect+0x1ba8>)
de20: 4798 blx r3
de22: 900f str r0, [sp, #60] ; 0x3c
int32_t corner_size = LV_MATH_MAX(rout, dsc->border_width - 1);
de24: f9ba 3010 ldrsh.w r3, [sl, #16]
de28: 3b01 subs r3, #1
de2a: 454b cmp r3, r9
de2c: bfb8 it lt
de2e: 464b movlt r3, r9
de30: 4619 mov r1, r3
de32: 930d str r3, [sp, #52] ; 0x34
lv_color_t color = dsc->border_color;
de34: f8ba 300e ldrh.w r3, [sl, #14]
de38: f8ad 3014 strh.w r3, [sp, #20]
lv_blend_mode_t blend_mode = dsc->border_blend_mode;
de3c: f89a 6015 ldrb.w r6, [sl, #21]
if(simple_mode) {
de40: f1b8 0f00 cmp.w r8, #0
de44: f000 81bf beq.w e1c6 <lv_draw_rect+0x1e96>
int32_t upper_corner_end = coords->y1 - disp_area->y1 + corner_size;
de48: f9b5 3012 ldrsh.w r3, [r5, #18]
de4c: 9806 ldr r0, [sp, #24]
de4e: f9b0 2002 ldrsh.w r2, [r0, #2]
de52: 1ad2 subs r2, r2, r3
de54: 440a add r2, r1
upper_corner_end = LV_MATH_MIN(upper_corner_end, draw_area.y2);
de56: f9bd 1066 ldrsh.w r1, [sp, #102] ; 0x66
de5a: 4291 cmp r1, r2
de5c: bfa8 it ge
de5e: 4611 movge r1, r2
de60: 910b str r1, [sp, #44] ; 0x2c
fill_area.x1 = coords->x1;
de62: 8802 ldrh r2, [r0, #0]
de64: f8ad 2070 strh.w r2, [sp, #112] ; 0x70
fill_area.x2 = coords->x2;
de68: 8882 ldrh r2, [r0, #4]
de6a: f8ad 2074 strh.w r2, [sp, #116] ; 0x74
fill_area.y1 = disp_area->y1 + draw_area.y1;
de6e: f9bd 2062 ldrsh.w r2, [sp, #98] ; 0x62
de72: 4413 add r3, r2
de74: b21b sxth r3, r3
de76: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
fill_area.y2 = fill_area.y1;
de7a: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
for(h = draw_area.y1; h <= upper_corner_end; h++) {
de7e: 4690 mov r8, r2
de80: 9b0b ldr r3, [sp, #44] ; 0x2c
de82: 4293 cmp r3, r2
de84: f2c0 80b3 blt.w dfee <lv_draw_rect+0x1cbe>
_lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode);
de88: f8df 905c ldr.w r9, [pc, #92] ; dee8 <lv_draw_rect+0x1bb8>
de8c: f8cd b01c str.w fp, [sp, #28]
de90: 46b3 mov fp, r6
de92: 4626 mov r6, r4
de94: f8cd a030 str.w sl, [sp, #48] ; 0x30
de98: 4682 mov sl, r0
de9a: e055 b.n df48 <lv_draw_rect+0x1c18>
int16_t mask_rout_id = LV_MASK_ID_INV;
de9c: f04f 33ff mov.w r3, #4294967295
dea0: 930e str r3, [sp, #56] ; 0x38
dea2: e77d b.n dda0 <lv_draw_rect+0x1a70>
area_small.x1 += ((dsc->border_side & LV_BORDER_SIDE_LEFT) ? dsc->border_width : - (dsc->border_width + rout));
dea4: 990a ldr r1, [sp, #40] ; 0x28
dea6: 1871 adds r1, r6, r1
dea8: 4249 negs r1, r1
deaa: b289 uxth r1, r1
deac: e78c b.n ddc8 <lv_draw_rect+0x1a98>
area_small.x2 -= ((dsc->border_side & LV_BORDER_SIDE_RIGHT) ? dsc->border_width : - (dsc->border_width + rout));
deae: 990a ldr r1, [sp, #40] ; 0x28
deb0: 1871 adds r1, r6, r1
deb2: 4249 negs r1, r1
deb4: b289 uxth r1, r1
deb6: e790 b.n ddda <lv_draw_rect+0x1aaa>
area_small.y1 += ((dsc->border_side & LV_BORDER_SIDE_TOP) ? dsc->border_width : - (dsc->border_width + rout));
deb8: 990a ldr r1, [sp, #40] ; 0x28
deba: 1871 adds r1, r6, r1
debc: 4249 negs r1, r1
debe: b289 uxth r1, r1
dec0: e794 b.n ddec <lv_draw_rect+0x1abc>
area_small.y2 -= ((dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? dsc->border_width : - (dsc->border_width + rout));
dec2: 9b0a ldr r3, [sp, #40] ; 0x28
dec4: 18f3 adds r3, r6, r3
dec6: 425b negs r3, r3
dec8: b29b uxth r3, r3
deca: e798 b.n ddfe <lv_draw_rect+0x1ace>
decc: 0000be6d .word 0x0000be6d
ded0: 0001176d .word 0x0001176d
ded4: 0000c02d .word 0x0000c02d
ded8: 0000bdc1 .word 0x0000bdc1
dedc: 00009a25 .word 0x00009a25
dee0: 0001293d .word 0x0001293d
dee4: 0000bec5 .word 0x0000bec5
dee8: 00007751 .word 0x00007751
fill_area2.x1 = coords->x2 - rout + 1;
deec: f9ba 3004 ldrsh.w r3, [sl, #4]
def0: 1c5a adds r2, r3, #1
def2: 1bd2 subs r2, r2, r7
def4: f8ad 2078 strh.w r2, [sp, #120] ; 0x78
fill_area2.x2 = coords->x2;
def8: f8ad 307c strh.w r3, [sp, #124] ; 0x7c
int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1);
defc: 9a0a ldr r2, [sp, #40] ; 0x28
defe: 1a9b subs r3, r3, r2
df00: 3301 adds r3, #1
df02: f9b5 2010 ldrsh.w r2, [r5, #16]
df06: f9bd 1060 ldrsh.w r1, [sp, #96] ; 0x60
df0a: 440a add r2, r1
df0c: 1a9b subs r3, r3, r2
_lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode);
df0e: f8cd b008 str.w fp, [sp, #8]
df12: 9601 str r6, [sp, #4]
df14: 9400 str r4, [sp, #0]
df16: 9a07 ldr r2, [sp, #28]
df18: 2b00 cmp r3, #0
df1a: bfa8 it ge
df1c: 18d2 addge r2, r2, r3
df1e: 4613 mov r3, r2
df20: f8bd 2014 ldrh.w r2, [sp, #20]
df24: a91e add r1, sp, #120 ; 0x78
df26: 9804 ldr r0, [sp, #16]
df28: 47c8 blx r9
fill_area.y1++;
df2a: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72
df2e: 3301 adds r3, #1
df30: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
fill_area.y2++;
df34: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76
df38: 3301 adds r3, #1
df3a: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
for(h = draw_area.y1; h <= upper_corner_end; h++) {
df3e: f108 0801 add.w r8, r8, #1
df42: 9b0b ldr r3, [sp, #44] ; 0x2c
df44: 4543 cmp r3, r8
df46: db4c blt.n dfe2 <lv_draw_rect+0x1cb2>
_lv_memset_ff(mask_buf, draw_area_w);
df48: 9909 ldr r1, [sp, #36] ; 0x24
df4a: 9c07 ldr r4, [sp, #28]
df4c: 4620 mov r0, r4
df4e: 4bc7 ldr r3, [pc, #796] ; (e26c <lv_draw_rect+0x1f3c>)
df50: 4798 blx r3
mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w);
df52: 8a6a ldrh r2, [r5, #18]
df54: 4442 add r2, r8
df56: 8a29 ldrh r1, [r5, #16]
df58: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60
df5c: 4419 add r1, r3
df5e: 9b08 ldr r3, [sp, #32]
df60: b212 sxth r2, r2
df62: b209 sxth r1, r1
df64: 9407 str r4, [sp, #28]
df66: 4620 mov r0, r4
df68: 4cc1 ldr r4, [pc, #772] ; (e270 <lv_draw_rect+0x1f40>)
df6a: 47a0 blx r4
df6c: 4604 mov r4, r0
fill_area2.y1 = fill_area.y1;
df6e: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72
df72: f8ad 307a strh.w r3, [sp, #122] ; 0x7a
fill_area2.y2 = fill_area.y2;
df76: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76
df7a: f8ad 307e strh.w r3, [sp, #126] ; 0x7e
fill_area2.x1 = coords->x1;
df7e: f9ba 3000 ldrsh.w r3, [sl]
df82: f8ad 3078 strh.w r3, [sp, #120] ; 0x78
fill_area2.x2 = coords->x1 + rout - 1;
df86: 3b01 subs r3, #1
df88: 443b add r3, r7
df8a: f8ad 307c strh.w r3, [sp, #124] ; 0x7c
_lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode);
df8e: f8cd b008 str.w fp, [sp, #8]
df92: 9601 str r6, [sp, #4]
df94: 9000 str r0, [sp, #0]
df96: 9b07 ldr r3, [sp, #28]
df98: f8bd 2014 ldrh.w r2, [sp, #20]
df9c: a91e add r1, sp, #120 ; 0x78
df9e: 9804 ldr r0, [sp, #16]
dfa0: 47c8 blx r9
if(fill_area2.y2 < coords->y1 + dsc->border_width) {
dfa2: f9bd 207e ldrsh.w r2, [sp, #126] ; 0x7e
dfa6: f9ba 3002 ldrsh.w r3, [sl, #2]
dfaa: 990c ldr r1, [sp, #48] ; 0x30
dfac: f9b1 1010 ldrsh.w r1, [r1, #16]
dfb0: 440b add r3, r1
dfb2: 429a cmp r2, r3
dfb4: da9a bge.n deec <lv_draw_rect+0x1bbc>
fill_area2.x1 = coords->x1 + rout;
dfb6: f8ba 3000 ldrh.w r3, [sl]
dfba: 443b add r3, r7
dfbc: f8ad 3078 strh.w r3, [sp, #120] ; 0x78
fill_area2.x2 = coords->x2 - rout;
dfc0: f8ba 3004 ldrh.w r3, [sl, #4]
dfc4: 1bdb subs r3, r3, r7
dfc6: f8ad 307c strh.w r3, [sp, #124] ; 0x7c
_lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode);
dfca: f8cd b008 str.w fp, [sp, #8]
dfce: 9601 str r6, [sp, #4]
dfd0: 2301 movs r3, #1
dfd2: 9300 str r3, [sp, #0]
dfd4: 2300 movs r3, #0
dfd6: f8bd 2014 ldrh.w r2, [sp, #20]
dfda: a91e add r1, sp, #120 ; 0x78
dfdc: 9804 ldr r0, [sp, #16]
dfde: 47c8 blx r9
dfe0: e784 b.n deec <lv_draw_rect+0x1bbc>
dfe2: 4634 mov r4, r6
dfe4: 465e mov r6, fp
dfe6: f8dd b01c ldr.w fp, [sp, #28]
dfea: f8dd a030 ldr.w sl, [sp, #48] ; 0x30
int32_t lower_corner_end = coords->y2 - disp_area->y1 - corner_size;
dfee: f9b5 3012 ldrsh.w r3, [r5, #18]
dff2: 9a06 ldr r2, [sp, #24]
dff4: f9b2 2006 ldrsh.w r2, [r2, #6]
dff8: 1ad2 subs r2, r2, r3
dffa: 990d ldr r1, [sp, #52] ; 0x34
dffc: 1a52 subs r2, r2, r1
lower_corner_end = LV_MATH_MAX(lower_corner_end, draw_area.y1);
dffe: f9bd 8062 ldrsh.w r8, [sp, #98] ; 0x62
e002: 4590 cmp r8, r2
e004: bfb8 it lt
e006: 4690 movlt r8, r2
if(lower_corner_end <= upper_corner_end) lower_corner_end = upper_corner_end + 1;
e008: 990b ldr r1, [sp, #44] ; 0x2c
e00a: 4541 cmp r1, r8
e00c: bfa8 it ge
e00e: f101 0801 addge.w r8, r1, #1
fill_area.y1 = disp_area->y1 + lower_corner_end;
e012: 4443 add r3, r8
e014: b21b sxth r3, r3
e016: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
fill_area.y2 = fill_area.y1;
e01a: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
for(h = lower_corner_end; h <= draw_area.y2; h++) {
e01e: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66
e022: 4598 cmp r8, r3
e024: f300 808d bgt.w e142 <lv_draw_rect+0x1e12>
_lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode);
e028: f8df 9248 ldr.w r9, [pc, #584] ; e274 <lv_draw_rect+0x1f44>
e02c: f8cd b01c str.w fp, [sp, #28]
e030: 46b3 mov fp, r6
e032: 4626 mov r6, r4
e034: f8cd a02c str.w sl, [sp, #44] ; 0x2c
e038: f8dd a018 ldr.w sl, [sp, #24]
e03c: e02e b.n e09c <lv_draw_rect+0x1d6c>
fill_area2.x1 = coords->x2 - rout + 1;
e03e: f9ba 3004 ldrsh.w r3, [sl, #4]
e042: 1c5a adds r2, r3, #1
e044: 1bd2 subs r2, r2, r7
e046: f8ad 2078 strh.w r2, [sp, #120] ; 0x78
fill_area2.x2 = coords->x2;
e04a: f8ad 307c strh.w r3, [sp, #124] ; 0x7c
int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1);
e04e: 9a0a ldr r2, [sp, #40] ; 0x28
e050: 1a9b subs r3, r3, r2
e052: 3301 adds r3, #1
e054: f9b5 2010 ldrsh.w r2, [r5, #16]
e058: f9bd 1060 ldrsh.w r1, [sp, #96] ; 0x60
e05c: 440a add r2, r1
e05e: 1a9b subs r3, r3, r2
_lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode);
e060: f8cd b008 str.w fp, [sp, #8]
e064: 9601 str r6, [sp, #4]
e066: 9400 str r4, [sp, #0]
e068: 9a07 ldr r2, [sp, #28]
e06a: 2b00 cmp r3, #0
e06c: bfa8 it ge
e06e: 18d2 addge r2, r2, r3
e070: 4613 mov r3, r2
e072: f8bd 2014 ldrh.w r2, [sp, #20]
e076: a91e add r1, sp, #120 ; 0x78
e078: 9804 ldr r0, [sp, #16]
e07a: 47c8 blx r9
fill_area.y1++;
e07c: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72
e080: 3301 adds r3, #1
e082: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
fill_area.y2++;
e086: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76
e08a: 3301 adds r3, #1
e08c: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
for(h = lower_corner_end; h <= draw_area.y2; h++) {
e090: f108 0801 add.w r8, r8, #1
e094: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66
e098: 4598 cmp r8, r3
e09a: dc4c bgt.n e136 <lv_draw_rect+0x1e06>
_lv_memset_ff(mask_buf, draw_area_w);
e09c: 9909 ldr r1, [sp, #36] ; 0x24
e09e: 9c07 ldr r4, [sp, #28]
e0a0: 4620 mov r0, r4
e0a2: 4b72 ldr r3, [pc, #456] ; (e26c <lv_draw_rect+0x1f3c>)
e0a4: 4798 blx r3
mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w);
e0a6: 8a6a ldrh r2, [r5, #18]
e0a8: 4442 add r2, r8
e0aa: 8a29 ldrh r1, [r5, #16]
e0ac: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60
e0b0: 4419 add r1, r3
e0b2: 9b08 ldr r3, [sp, #32]
e0b4: b212 sxth r2, r2
e0b6: b209 sxth r1, r1
e0b8: 9407 str r4, [sp, #28]
e0ba: 4620 mov r0, r4
e0bc: 4c6c ldr r4, [pc, #432] ; (e270 <lv_draw_rect+0x1f40>)
e0be: 47a0 blx r4
e0c0: 4604 mov r4, r0
fill_area2.x1 = coords->x1;
e0c2: f9ba 3000 ldrsh.w r3, [sl]
e0c6: f8ad 3078 strh.w r3, [sp, #120] ; 0x78
fill_area2.x2 = coords->x1 + rout - 1;
e0ca: 3b01 subs r3, #1
e0cc: 443b add r3, r7
e0ce: f8ad 307c strh.w r3, [sp, #124] ; 0x7c
fill_area2.y1 = fill_area.y1;
e0d2: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72
e0d6: f8ad 307a strh.w r3, [sp, #122] ; 0x7a
fill_area2.y2 = fill_area.y2;
e0da: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76
e0de: f8ad 307e strh.w r3, [sp, #126] ; 0x7e
_lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode);
e0e2: f8cd b008 str.w fp, [sp, #8]
e0e6: 9601 str r6, [sp, #4]
e0e8: 9000 str r0, [sp, #0]
e0ea: 9b07 ldr r3, [sp, #28]
e0ec: f8bd 2014 ldrh.w r2, [sp, #20]
e0f0: a91e add r1, sp, #120 ; 0x78
e0f2: 9804 ldr r0, [sp, #16]
e0f4: 47c8 blx r9
if(fill_area2.y2 > coords->y2 - dsc->border_width) {
e0f6: f9bd 207e ldrsh.w r2, [sp, #126] ; 0x7e
e0fa: f9ba 3006 ldrsh.w r3, [sl, #6]
e0fe: 990b ldr r1, [sp, #44] ; 0x2c
e100: f9b1 1010 ldrsh.w r1, [r1, #16]
e104: 1a5b subs r3, r3, r1
e106: 429a cmp r2, r3
e108: dd99 ble.n e03e <lv_draw_rect+0x1d0e>
fill_area2.x1 = coords->x1 + rout;
e10a: f8ba 3000 ldrh.w r3, [sl]
e10e: 443b add r3, r7
e110: f8ad 3078 strh.w r3, [sp, #120] ; 0x78
fill_area2.x2 = coords->x2 - rout;
e114: f8ba 3004 ldrh.w r3, [sl, #4]
e118: 1bdb subs r3, r3, r7
e11a: f8ad 307c strh.w r3, [sp, #124] ; 0x7c
_lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode);
e11e: f8cd b008 str.w fp, [sp, #8]
e122: 9601 str r6, [sp, #4]
e124: 2301 movs r3, #1
e126: 9300 str r3, [sp, #0]
e128: 2300 movs r3, #0
e12a: f8bd 2014 ldrh.w r2, [sp, #20]
e12e: a91e add r1, sp, #120 ; 0x78
e130: 9804 ldr r0, [sp, #16]
e132: 47c8 blx r9
e134: e783 b.n e03e <lv_draw_rect+0x1d0e>
e136: 4634 mov r4, r6
e138: 465e mov r6, fp
e13a: f8dd b01c ldr.w fp, [sp, #28]
e13e: f8dd a02c ldr.w sl, [sp, #44] ; 0x2c
fill_area.y1 = coords->y1 + corner_size + 1;
e142: f8bd 2034 ldrh.w r2, [sp, #52] ; 0x34
e146: 9906 ldr r1, [sp, #24]
e148: 884b ldrh r3, [r1, #2]
e14a: 3301 adds r3, #1
e14c: 4413 add r3, r2
e14e: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
fill_area.y2 = coords->y2 - corner_size - 1;
e152: 88cb ldrh r3, [r1, #6]
e154: 3b01 subs r3, #1
e156: 1a9b subs r3, r3, r2
e158: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
fill_area.x1 = coords->x1;
e15c: f9b1 3000 ldrsh.w r3, [r1]
e160: f8ad 3070 strh.w r3, [sp, #112] ; 0x70
fill_area.x2 = coords->x1 + dsc->border_width - 1;
e164: f8ba 2010 ldrh.w r2, [sl, #16]
e168: 3a01 subs r2, #1
e16a: 4413 add r3, r2
e16c: f8ad 3074 strh.w r3, [sp, #116] ; 0x74
_lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode);
e170: 9602 str r6, [sp, #8]
e172: 9401 str r4, [sp, #4]
e174: 2701 movs r7, #1
e176: 9700 str r7, [sp, #0]
e178: 2300 movs r3, #0
e17a: f8bd 9014 ldrh.w r9, [sp, #20]
e17e: 464a mov r2, r9
e180: a91c add r1, sp, #112 ; 0x70
e182: f8dd 8010 ldr.w r8, [sp, #16]
e186: 4640 mov r0, r8
e188: 4d3a ldr r5, [pc, #232] ; (e274 <lv_draw_rect+0x1f44>)
e18a: 47a8 blx r5
fill_area.x1 = coords->x2 - dsc->border_width + 1;
e18c: 9b06 ldr r3, [sp, #24]
e18e: f9b3 2004 ldrsh.w r2, [r3, #4]
e192: f8ba 3010 ldrh.w r3, [sl, #16]
e196: 1afb subs r3, r7, r3
e198: 4413 add r3, r2
e19a: f8ad 3070 strh.w r3, [sp, #112] ; 0x70
fill_area.x2 = coords->x2;
e19e: f8ad 2074 strh.w r2, [sp, #116] ; 0x74
_lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode);
e1a2: 9602 str r6, [sp, #8]
e1a4: 9401 str r4, [sp, #4]
e1a6: 9700 str r7, [sp, #0]
e1a8: 2300 movs r3, #0
e1aa: 464a mov r2, r9
e1ac: a91c add r1, sp, #112 ; 0x70
e1ae: 4640 mov r0, r8
e1b0: 47a8 blx r5
lv_draw_mask_remove_id(mask_rin_id);
e1b2: 980f ldr r0, [sp, #60] ; 0x3c
e1b4: 4c30 ldr r4, [pc, #192] ; (e278 <lv_draw_rect+0x1f48>)
e1b6: 47a0 blx r4
lv_draw_mask_remove_id(mask_rout_id);
e1b8: 980e ldr r0, [sp, #56] ; 0x38
e1ba: 47a0 blx r4
_lv_mem_buf_release(mask_buf);
e1bc: 4658 mov r0, fp
e1be: 4b2f ldr r3, [pc, #188] ; (e27c <lv_draw_rect+0x1f4c>)
e1c0: 4798 blx r3
e1c2: f7ff b854 b.w d26e <lv_draw_rect+0xf3e>
fill_area.x1 = coords->x1;
e1c6: 9a06 ldr r2, [sp, #24]
e1c8: f9b2 1000 ldrsh.w r1, [r2]
e1cc: f8ad 1070 strh.w r1, [sp, #112] ; 0x70
fill_area.x2 = coords->x2;
e1d0: f9b2 2004 ldrsh.w r2, [r2, #4]
e1d4: f8ad 2074 strh.w r2, [sp, #116] ; 0x74
fill_area.y1 = disp_area->y1 + draw_area.y1;
e1d8: f9bd 0062 ldrsh.w r0, [sp, #98] ; 0x62
e1dc: 8a6b ldrh r3, [r5, #18]
e1de: 4403 add r3, r0
e1e0: b21b sxth r3, r3
e1e2: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
fill_area.y2 = fill_area.y1;
e1e6: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
if(dsc->border_side == LV_BORDER_SIDE_LEFT) fill_area.x2 = coords->x1 + corner_size;
e1ea: f9ba 3012 ldrsh.w r3, [sl, #18]
e1ee: 2b04 cmp r3, #4
e1f0: d029 beq.n e246 <lv_draw_rect+0x1f16>
else if(dsc->border_side == LV_BORDER_SIDE_RIGHT) fill_area.x1 = coords->x2 - corner_size;
e1f2: 2b08 cmp r3, #8
e1f4: d044 beq.n e280 <lv_draw_rect+0x1f50>
volatile bool top_only = false;
e1f6: 2200 movs r2, #0
e1f8: f88d 204e strb.w r2, [sp, #78] ; 0x4e
volatile bool bottom_only = false;
e1fc: f88d 204f strb.w r2, [sp, #79] ; 0x4f
if(dsc->border_side == LV_BORDER_SIDE_TOP) top_only = true;
e200: 2b02 cmp r3, #2
e202: d129 bne.n e258 <lv_draw_rect+0x1f28>
e204: 2301 movs r3, #1
e206: f88d 304e strb.w r3, [sp, #78] ; 0x4e
volatile bool normal = !top_only && !bottom_only ? true : false;
e20a: f89d 304e ldrb.w r3, [sp, #78] ; 0x4e
e20e: b91b cbnz r3, e218 <lv_draw_rect+0x1ee8>
e210: f89d 804f ldrb.w r8, [sp, #79] ; 0x4f
e214: f088 0801 eor.w r8, r8, #1
e218: f008 0801 and.w r8, r8, #1
e21c: f88d 8050 strb.w r8, [sp, #80] ; 0x50
for(h = draw_area.y1; h <= draw_area.y2; h++) {
e220: 4607 mov r7, r0
e222: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66
e226: 4298 cmp r0, r3
e228: dcc3 bgt.n e1b2 <lv_draw_rect+0x1e82>
_lv_memset_ff(mask_buf, draw_area_w);
e22a: f8df 8040 ldr.w r8, [pc, #64] ; e26c <lv_draw_rect+0x1f3c>
_lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode);
e22e: f8df 9044 ldr.w r9, [pc, #68] ; e274 <lv_draw_rect+0x1f44>
e232: 940a str r4, [sp, #40] ; 0x28
e234: f8cd b01c str.w fp, [sp, #28]
e238: f8dd b018 ldr.w fp, [sp, #24]
e23c: f8cd a02c str.w sl, [sp, #44] ; 0x2c
e240: f8dd a034 ldr.w sl, [sp, #52] ; 0x34
e244: e04e b.n e2e4 <lv_draw_rect+0x1fb4>
if(dsc->border_side == LV_BORDER_SIDE_LEFT) fill_area.x2 = coords->x1 + corner_size;
e246: 9a0d ldr r2, [sp, #52] ; 0x34
e248: 4411 add r1, r2
e24a: f8ad 1074 strh.w r1, [sp, #116] ; 0x74
volatile bool top_only = false;
e24e: 2200 movs r2, #0
e250: f88d 204e strb.w r2, [sp, #78] ; 0x4e
volatile bool bottom_only = false;
e254: f88d 204f strb.w r2, [sp, #79] ; 0x4f
if(dsc->border_side == LV_BORDER_SIDE_BOTTOM) bottom_only = true;
e258: 2b01 cmp r3, #1
e25a: d016 beq.n e28a <lv_draw_rect+0x1f5a>
if(dsc->border_side == (LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM)) {
e25c: 2b03 cmp r3, #3
e25e: d1d4 bne.n e20a <lv_draw_rect+0x1eda>
top_only = true;
e260: 2301 movs r3, #1
e262: f88d 304e strb.w r3, [sp, #78] ; 0x4e
bottom_only = true;
e266: f88d 304f strb.w r3, [sp, #79] ; 0x4f
e26a: e7ce b.n e20a <lv_draw_rect+0x1eda>
e26c: 00012bed .word 0x00012bed
e270: 0000be1d .word 0x0000be1d
e274: 00007751 .word 0x00007751
e278: 0000be6d .word 0x0000be6d
e27c: 00012571 .word 0x00012571
else if(dsc->border_side == LV_BORDER_SIDE_RIGHT) fill_area.x1 = coords->x2 - corner_size;
e280: 990d ldr r1, [sp, #52] ; 0x34
e282: 1a52 subs r2, r2, r1
e284: f8ad 2070 strh.w r2, [sp, #112] ; 0x70
e288: e7e1 b.n e24e <lv_draw_rect+0x1f1e>
if(dsc->border_side == LV_BORDER_SIDE_BOTTOM) bottom_only = true;
e28a: f88d 304f strb.w r3, [sp, #79] ; 0x4f
e28e: e7bc b.n e20a <lv_draw_rect+0x1eda>
_lv_memset_ff(mask_buf, draw_area_w);
e290: 9909 ldr r1, [sp, #36] ; 0x24
e292: 9c07 ldr r4, [sp, #28]
e294: 4620 mov r0, r4
e296: 47c0 blx r8
mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w);
e298: 8a6a ldrh r2, [r5, #18]
e29a: 443a add r2, r7
e29c: 8a29 ldrh r1, [r5, #16]
e29e: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60
e2a2: 4419 add r1, r3
e2a4: 9b08 ldr r3, [sp, #32]
e2a6: b212 sxth r2, r2
e2a8: b209 sxth r1, r1
e2aa: 9407 str r4, [sp, #28]
e2ac: 4620 mov r0, r4
e2ae: 4c98 ldr r4, [pc, #608] ; (e510 <lv_draw_rect+0x21e0>)
e2b0: 47a0 blx r4
_lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode);
e2b2: 9602 str r6, [sp, #8]
e2b4: 9a0a ldr r2, [sp, #40] ; 0x28
e2b6: 9201 str r2, [sp, #4]
e2b8: 9000 str r0, [sp, #0]
e2ba: 9b07 ldr r3, [sp, #28]
e2bc: f8bd 2014 ldrh.w r2, [sp, #20]
e2c0: a91c add r1, sp, #112 ; 0x70
e2c2: 9804 ldr r0, [sp, #16]
e2c4: 47c8 blx r9
fill_area.y1++;
e2c6: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72
e2ca: 3301 adds r3, #1
e2cc: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
fill_area.y2++;
e2d0: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76
e2d4: 3301 adds r3, #1
e2d6: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
for(h = draw_area.y1; h <= draw_area.y2; h++) {
e2da: 3701 adds r7, #1
e2dc: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66
e2e0: 429f cmp r7, r3
e2e2: dc1a bgt.n e31a <lv_draw_rect+0x1fea>
if(normal ||
e2e4: f89d 3050 ldrb.w r3, [sp, #80] ; 0x50
e2e8: 2b00 cmp r3, #0
e2ea: d1d1 bne.n e290 <lv_draw_rect+0x1f60>
(top_only && fill_area.y1 <= coords->y1 + corner_size) ||
e2ec: f89d 304e ldrb.w r3, [sp, #78] ; 0x4e
if(normal ||
e2f0: b133 cbz r3, e300 <lv_draw_rect+0x1fd0>
(top_only && fill_area.y1 <= coords->y1 + corner_size) ||
e2f2: f9bd 2072 ldrsh.w r2, [sp, #114] ; 0x72
e2f6: f9bb 3002 ldrsh.w r3, [fp, #2]
e2fa: 4453 add r3, sl
e2fc: 429a cmp r2, r3
e2fe: ddc7 ble.n e290 <lv_draw_rect+0x1f60>
(bottom_only && fill_area.y1 >= coords->y2 - corner_size)) {
e300: f89d 304f ldrb.w r3, [sp, #79] ; 0x4f
(top_only && fill_area.y1 <= coords->y1 + corner_size) ||
e304: 2b00 cmp r3, #0
e306: d0de beq.n e2c6 <lv_draw_rect+0x1f96>
(bottom_only && fill_area.y1 >= coords->y2 - corner_size)) {
e308: f9bd 2072 ldrsh.w r2, [sp, #114] ; 0x72
e30c: f9bb 3006 ldrsh.w r3, [fp, #6]
e310: eba3 030a sub.w r3, r3, sl
e314: 429a cmp r2, r3
e316: dbd6 blt.n e2c6 <lv_draw_rect+0x1f96>
e318: e7ba b.n e290 <lv_draw_rect+0x1f60>
e31a: f8dd b01c ldr.w fp, [sp, #28]
e31e: f8dd a02c ldr.w sl, [sp, #44] ; 0x2c
e322: e746 b.n e1b2 <lv_draw_rect+0x1e82>
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,
e324: f9ba 304c ldrsh.w r3, [sl, #76] ; 0x4c
e328: 2400 movs r4, #0
e32a: 9402 str r4, [sp, #8]
e32c: f647 4218 movw r2, #31768 ; 0x7c18
e330: 9201 str r2, [sp, #4]
e332: f9ba 204e ldrsh.w r2, [sl, #78] ; 0x4e
e336: 9200 str r2, [sp, #0]
e338: f8da 2040 ldr.w r2, [sl, #64] ; 0x40
e33c: a81c add r0, sp, #112 ; 0x70
e33e: 4d75 ldr r5, [pc, #468] ; (e514 <lv_draw_rect+0x21e4>)
e340: 47a8 blx r5
LV_TXT_FLAG_NONE);
lv_area_t value_area;
value_area.x1 = 0;
e342: f8ad 4088 strh.w r4, [sp, #136] ; 0x88
value_area.y1 = 0;
e346: f8ad 408a strh.w r4, [sp, #138] ; 0x8a
value_area.x2 = s.x - 1;
e34a: f8bd 3070 ldrh.w r3, [sp, #112] ; 0x70
e34e: 3b01 subs r3, #1
e350: f8ad 308c strh.w r3, [sp, #140] ; 0x8c
value_area.y2 = s.y - 1;
e354: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72
e358: 3b01 subs r3, #1
e35a: f8ad 308e strh.w r3, [sp, #142] ; 0x8e
lv_point_t p_align;
_lv_area_align(coords, &value_area, dsc->value_align, &p_align);
e35e: ab1e add r3, sp, #120 ; 0x78
e360: f89a 2050 ldrb.w r2, [sl, #80] ; 0x50
e364: a922 add r1, sp, #136 ; 0x88
e366: 9806 ldr r0, [sp, #24]
e368: 4d6b ldr r5, [pc, #428] ; (e518 <lv_draw_rect+0x21e8>)
e36a: 47a8 blx r5
value_area.x1 += p_align.x + dsc->value_ofs_x;
e36c: f8bd 2078 ldrh.w r2, [sp, #120] ; 0x78
e370: f8ba 3048 ldrh.w r3, [sl, #72] ; 0x48
e374: 441a add r2, r3
e376: b292 uxth r2, r2
e378: f8bd 3088 ldrh.w r3, [sp, #136] ; 0x88
e37c: 4413 add r3, r2
e37e: f8ad 3088 strh.w r3, [sp, #136] ; 0x88
value_area.y1 += p_align.y + dsc->value_ofs_y;
e382: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a
e386: f8ba 104a ldrh.w r1, [sl, #74] ; 0x4a
e38a: 440b add r3, r1
e38c: b29b uxth r3, r3
e38e: f8bd 108a ldrh.w r1, [sp, #138] ; 0x8a
e392: 4419 add r1, r3
e394: f8ad 108a strh.w r1, [sp, #138] ; 0x8a
value_area.x2 += p_align.x + dsc->value_ofs_x;
e398: f8bd 108c ldrh.w r1, [sp, #140] ; 0x8c
e39c: 440a add r2, r1
e39e: f8ad 208c strh.w r2, [sp, #140] ; 0x8c
value_area.y2 += p_align.y + dsc->value_ofs_y;
e3a2: f8bd 208e ldrh.w r2, [sp, #142] ; 0x8e
e3a6: 4413 add r3, r2
e3a8: f8ad 308e strh.w r3, [sp, #142] ; 0x8e
lv_draw_label_dsc_t label_dsc;
lv_draw_label_dsc_init(&label_dsc);
e3ac: a829 add r0, sp, #164 ; 0xa4
e3ae: 4b5b ldr r3, [pc, #364] ; (e51c <lv_draw_rect+0x21ec>)
e3b0: 4798 blx r3
label_dsc.font = dsc->value_font;
e3b2: f8da 3040 ldr.w r3, [sl, #64] ; 0x40
e3b6: 932a str r3, [sp, #168] ; 0xa8
label_dsc.letter_space = dsc->value_letter_space;
e3b8: f8ba 304c ldrh.w r3, [sl, #76] ; 0x4c
e3bc: f8ad 30b0 strh.w r3, [sp, #176] ; 0xb0
label_dsc.line_space = dsc->value_line_space;
e3c0: f8ba 304e ldrh.w r3, [sl, #78] ; 0x4e
e3c4: f8ad 30ae strh.w r3, [sp, #174] ; 0xae
label_dsc.color = dsc->value_color;
e3c8: f8ba 3046 ldrh.w r3, [sl, #70] ; 0x46
e3cc: f8ad 30a4 strh.w r3, [sp, #164] ; 0xa4
label_dsc.opa = dsc->value_opa;
e3d0: f89a 3044 ldrb.w r3, [sl, #68] ; 0x44
e3d4: f88d 30ac strb.w r3, [sp, #172] ; 0xac
lv_draw_label(&value_area, clip, &label_dsc, dsc->value_str, NULL);
e3d8: 9400 str r4, [sp, #0]
e3da: f8da 303c ldr.w r3, [sl, #60] ; 0x3c
e3de: aa29 add r2, sp, #164 ; 0xa4
e3e0: 9904 ldr r1, [sp, #16]
e3e2: a822 add r0, sp, #136 ; 0x88
e3e4: 4c4e ldr r4, [pc, #312] ; (e520 <lv_draw_rect+0x21f0>)
e3e6: 47a0 blx r4
e3e8: f7fe bf49 b.w d27e <lv_draw_rect+0xf4e>
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
e3ec: 1c72 adds r2, r6, #1
e3ee: 9b06 ldr r3, [sp, #24]
e3f0: 1ad2 subs r2, r2, r3
int32_t inner_w = lv_area_get_width(&area_inner);
e3f2: b212 sxth r2, r2
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
e3f4: 1c6b adds r3, r5, #1
e3f6: 9907 ldr r1, [sp, #28]
e3f8: 1a5b subs r3, r3, r1
int32_t inner_h = lv_area_get_height(&area_inner);
e3fa: b21b sxth r3, r3
int32_t short_side = LV_MATH_MIN(inner_w, inner_h);
e3fc: 429a cmp r2, r3
e3fe: bfa8 it ge
e400: 461a movge r2, r3
if(rin > short_side >> 1) rin = short_side >> 1;
e402: 1052 asrs r2, r2, #1
e404: 9b08 ldr r3, [sp, #32]
e406: 429a cmp r2, r3
e408: bfa8 it ge
e40a: 461a movge r2, r3
int32_t rout = rin + dsc->outline_width;
e40c: 9b05 ldr r3, [sp, #20]
e40e: 4413 add r3, r2
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
e410: 3701 adds r7, #1
e412: 990a ldr r1, [sp, #40] ; 0x28
e414: 1a79 subs r1, r7, r1
int32_t coords_out_w = lv_area_get_width(&area_outer);
e416: b208 sxth r0, r1
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
e418: 1c61 adds r1, r4, #1
e41a: eba1 0108 sub.w r1, r1, r8
int32_t coords_out_h = lv_area_get_height(&area_outer);
e41e: b209 sxth r1, r1
short_side = LV_MATH_MIN(coords_out_w, coords_out_h);
e420: 4281 cmp r1, r0
e422: bfa8 it ge
e424: 4601 movge r1, r0
if(rout > short_side >> 1) rout = short_side >> 1;
e426: 1049 asrs r1, r1, #1
e428: 4299 cmp r1, r3
e42a: bfa8 it ge
e42c: 4619 movge r1, r3
e42e: 460f mov r7, r1
e430: 9106 str r1, [sp, #24]
draw_area.x1 -= disp_area->x1;
e432: f8b9 0010 ldrh.w r0, [r9, #16]
e436: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68
e43a: 1a1b subs r3, r3, r0
e43c: b299 uxth r1, r3
e43e: f8ad 1068 strh.w r1, [sp, #104] ; 0x68
draw_area.y1 -= disp_area->y1;
e442: f8b9 4012 ldrh.w r4, [r9, #18]
e446: f8bd 306a ldrh.w r3, [sp, #106] ; 0x6a
e44a: 1b1b subs r3, r3, r4
e44c: f8ad 306a strh.w r3, [sp, #106] ; 0x6a
draw_area.x2 -= disp_area->x1;
e450: f8bd 306c ldrh.w r3, [sp, #108] ; 0x6c
e454: 1a1b subs r3, r3, r0
e456: b29b uxth r3, r3
e458: f8ad 306c strh.w r3, [sp, #108] ; 0x6c
draw_area.y2 -= disp_area->y1;
e45c: f8bd 006e ldrh.w r0, [sp, #110] ; 0x6e
e460: 1b00 subs r0, r0, r4
e462: f8ad 006e strh.w r0, [sp, #110] ; 0x6e
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
e466: 3301 adds r3, #1
e468: 1a5b subs r3, r3, r1
e46a: b21b sxth r3, r3
e46c: 461e mov r6, r3
e46e: 9307 str r3, [sp, #28]
lv_draw_mask_radius_init(&mask_rin_param, &area_inner, rin, true);
e470: 2301 movs r3, #1
e472: a916 add r1, sp, #88 ; 0x58
e474: a822 add r0, sp, #136 ; 0x88
e476: 4d2b ldr r5, [pc, #172] ; (e524 <lv_draw_rect+0x21f4>)
e478: 47a8 blx r5
int16_t mask_rin_id = lv_draw_mask_add(&mask_rin_param, NULL);
e47a: 2100 movs r1, #0
e47c: a822 add r0, sp, #136 ; 0x88
e47e: 4c2a ldr r4, [pc, #168] ; (e528 <lv_draw_rect+0x21f8>)
e480: 47a0 blx r4
e482: 900c str r0, [sp, #48] ; 0x30
lv_draw_mask_radius_init(&mask_rout_param, &area_outer, rout, false);
e484: 2300 movs r3, #0
e486: b23a sxth r2, r7
e488: a918 add r1, sp, #96 ; 0x60
e48a: a829 add r0, sp, #164 ; 0xa4
e48c: 47a8 blx r5
int16_t mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL);
e48e: 2100 movs r1, #0
e490: a829 add r0, sp, #164 ; 0xa4
e492: 47a0 blx r4
e494: 900d str r0, [sp, #52] ; 0x34
lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w);
e496: 9608 str r6, [sp, #32]
e498: 4630 mov r0, r6
e49a: 4b24 ldr r3, [pc, #144] ; (e52c <lv_draw_rect+0x21fc>)
e49c: 4798 blx r3
e49e: 900b str r0, [sp, #44] ; 0x2c
int32_t corner_size = LV_MATH_MAX(rout, dsc->outline_width - 1);
e4a0: f9ba 3018 ldrsh.w r3, [sl, #24]
lv_color_t color = dsc->outline_color;
e4a4: f8ba 2016 ldrh.w r2, [sl, #22]
e4a8: f8ad 2014 strh.w r2, [sp, #20]
lv_blend_mode_t blend_mode = dsc->outline_blend_mode;
e4ac: f89a 501d ldrb.w r5, [sl, #29]
if(simple_mode) {
e4b0: 9a09 ldr r2, [sp, #36] ; 0x24
e4b2: 2a00 cmp r2, #0
e4b4: f040 81a6 bne.w e804 <lv_draw_rect+0x24d4>
int32_t corner_size = LV_MATH_MAX(rout, dsc->outline_width - 1);
e4b8: 3b01 subs r3, #1
e4ba: 42bb cmp r3, r7
e4bc: bfb8 it lt
e4be: 463b movlt r3, r7
e4c0: 4619 mov r1, r3
e4c2: 930e str r3, [sp, #56] ; 0x38
int32_t upper_corner_end = area_outer.y1 - disp_area->y1 + corner_size;
e4c4: f9b9 3012 ldrsh.w r3, [r9, #18]
e4c8: f9bd 2062 ldrsh.w r2, [sp, #98] ; 0x62
e4cc: 1ad2 subs r2, r2, r3
e4ce: 440a add r2, r1
e4d0: 4611 mov r1, r2
e4d2: 9209 str r2, [sp, #36] ; 0x24
fill_area.x1 = area_outer.x1;
e4d4: f8bd 2060 ldrh.w r2, [sp, #96] ; 0x60
e4d8: f8ad 2070 strh.w r2, [sp, #112] ; 0x70
fill_area.x2 = area_outer.x2;
e4dc: f8bd 2064 ldrh.w r2, [sp, #100] ; 0x64
e4e0: f8ad 2074 strh.w r2, [sp, #116] ; 0x74
fill_area.y1 = disp_area->y1 + draw_area.y1;
e4e4: f9bd 206a ldrsh.w r2, [sp, #106] ; 0x6a
e4e8: 4413 add r3, r2
e4ea: b21b sxth r3, r3
e4ec: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
fill_area.y2 = fill_area.y1;
e4f0: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
for(h = draw_area.y1; h <= upper_corner_end; h++) {
e4f4: 4616 mov r6, r2
e4f6: 4291 cmp r1, r2
e4f8: f2c0 809d blt.w e636 <lv_draw_rect+0x2306>
_lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode);
e4fc: f8df 8030 ldr.w r8, [pc, #48] ; e530 <lv_draw_rect+0x2200>
e500: 462b mov r3, r5
e502: 465d mov r5, fp
e504: f8cd a028 str.w sl, [sp, #40] ; 0x28
e508: 4682 mov sl, r0
e50a: 469b mov fp, r3
e50c: e03f b.n e58e <lv_draw_rect+0x225e>
e50e: bf00 nop
e510: 0000be1d .word 0x0000be1d
e514: 0001407d .word 0x0001407d
e518: 00011825 .word 0x00011825
e51c: 000099cd .word 0x000099cd
e520: 00009a25 .word 0x00009a25
e524: 0000c02d .word 0x0000c02d
e528: 0000bdc1 .word 0x0000bdc1
e52c: 0001293d .word 0x0001293d
e530: 00007751 .word 0x00007751
fill_area2.x1 = area_outer.x2 - rout + 1;
e534: f9bd 3064 ldrsh.w r3, [sp, #100] ; 0x64
e538: 1c5a adds r2, r3, #1
e53a: 1b14 subs r4, r2, r4
e53c: f8ad 4078 strh.w r4, [sp, #120] ; 0x78
fill_area2.x2 = area_outer.x2;
e540: f8ad 307c strh.w r3, [sp, #124] ; 0x7c
int32_t mask_ofs = (area_outer.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1);
e544: 9a06 ldr r2, [sp, #24]
e546: 1a9b subs r3, r3, r2
e548: 3301 adds r3, #1
e54a: f9b9 2010 ldrsh.w r2, [r9, #16]
e54e: f9bd 1068 ldrsh.w r1, [sp, #104] ; 0x68
e552: 440a add r2, r1
e554: 1a9b subs r3, r3, r2
_lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode);
e556: f8cd b008 str.w fp, [sp, #8]
e55a: 9501 str r5, [sp, #4]
e55c: 9700 str r7, [sp, #0]
e55e: 2b00 cmp r3, #0
e560: bfac ite ge
e562: 4453 addge r3, sl
e564: f10a 0300 addlt.w r3, sl, #0
e568: f8bd 2014 ldrh.w r2, [sp, #20]
e56c: a91e add r1, sp, #120 ; 0x78
e56e: 9804 ldr r0, [sp, #16]
e570: 47c0 blx r8
fill_area.y1++;
e572: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72
e576: 3301 adds r3, #1
e578: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
fill_area.y2++;
e57c: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76
e580: 3301 adds r3, #1
e582: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
for(h = draw_area.y1; h <= upper_corner_end; h++) {
e586: 3601 adds r6, #1
e588: 9b09 ldr r3, [sp, #36] ; 0x24
e58a: 42b3 cmp r3, r6
e58c: db4e blt.n e62c <lv_draw_rect+0x22fc>
_lv_memset_ff(mask_buf, draw_area_w);
e58e: 9908 ldr r1, [sp, #32]
e590: 4650 mov r0, sl
e592: 4bcc ldr r3, [pc, #816] ; (e8c4 <lv_draw_rect+0x2594>)
e594: 4798 blx r3
mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w);
e596: f8b9 2012 ldrh.w r2, [r9, #18]
e59a: 4432 add r2, r6
e59c: f8b9 1010 ldrh.w r1, [r9, #16]
e5a0: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68
e5a4: 4419 add r1, r3
e5a6: 9b07 ldr r3, [sp, #28]
e5a8: b212 sxth r2, r2
e5aa: b209 sxth r1, r1
e5ac: 4650 mov r0, sl
e5ae: 4cc6 ldr r4, [pc, #792] ; (e8c8 <lv_draw_rect+0x2598>)
e5b0: 47a0 blx r4
e5b2: 4607 mov r7, r0
fill_area2.y1 = fill_area.y1;
e5b4: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72
e5b8: f8ad 307a strh.w r3, [sp, #122] ; 0x7a
fill_area2.y2 = fill_area.y2;
e5bc: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76
e5c0: f8ad 307e strh.w r3, [sp, #126] ; 0x7e
fill_area2.x1 = area_outer.x1;
e5c4: f9bd 3060 ldrsh.w r3, [sp, #96] ; 0x60
e5c8: f8ad 3078 strh.w r3, [sp, #120] ; 0x78
fill_area2.x2 = area_outer.x1 + rout - 1;
e5cc: f8bd 4018 ldrh.w r4, [sp, #24]
e5d0: 3b01 subs r3, #1
e5d2: 4423 add r3, r4
e5d4: f8ad 307c strh.w r3, [sp, #124] ; 0x7c
_lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode);
e5d8: f8cd b008 str.w fp, [sp, #8]
e5dc: 9501 str r5, [sp, #4]
e5de: 9000 str r0, [sp, #0]
e5e0: 4653 mov r3, sl
e5e2: f8bd 2014 ldrh.w r2, [sp, #20]
e5e6: a91e add r1, sp, #120 ; 0x78
e5e8: 9804 ldr r0, [sp, #16]
e5ea: 47c0 blx r8
if(fill_area2.y2 < area_outer.y1 + dsc->outline_width) {
e5ec: f9bd 207e ldrsh.w r2, [sp, #126] ; 0x7e
e5f0: f9bd 3062 ldrsh.w r3, [sp, #98] ; 0x62
e5f4: 990a ldr r1, [sp, #40] ; 0x28
e5f6: f9b1 1018 ldrsh.w r1, [r1, #24]
e5fa: 440b add r3, r1
e5fc: 429a cmp r2, r3
e5fe: da99 bge.n e534 <lv_draw_rect+0x2204>
fill_area2.x1 = area_outer.x1 + rout;
e600: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60
e604: 4423 add r3, r4
e606: f8ad 3078 strh.w r3, [sp, #120] ; 0x78
fill_area2.x2 = area_outer.x2 - rout;
e60a: f8bd 3064 ldrh.w r3, [sp, #100] ; 0x64
e60e: 1b1b subs r3, r3, r4
e610: f8ad 307c strh.w r3, [sp, #124] ; 0x7c
_lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode);
e614: f8cd b008 str.w fp, [sp, #8]
e618: 9501 str r5, [sp, #4]
e61a: 2301 movs r3, #1
e61c: 9300 str r3, [sp, #0]
e61e: 2300 movs r3, #0
e620: f8bd 2014 ldrh.w r2, [sp, #20]
e624: a91e add r1, sp, #120 ; 0x78
e626: 9804 ldr r0, [sp, #16]
e628: 47c0 blx r8
e62a: e783 b.n e534 <lv_draw_rect+0x2204>
e62c: 465b mov r3, fp
e62e: 46ab mov fp, r5
e630: f8dd a028 ldr.w sl, [sp, #40] ; 0x28
e634: 461d mov r5, r3
int32_t lower_corner_end = area_outer.y2 - disp_area->y1 - corner_size;
e636: f9b9 3012 ldrsh.w r3, [r9, #18]
e63a: f9bd 6066 ldrsh.w r6, [sp, #102] ; 0x66
e63e: 1af6 subs r6, r6, r3
e640: 9a0e ldr r2, [sp, #56] ; 0x38
e642: 1ab6 subs r6, r6, r2
if(lower_corner_end <= upper_corner_end) lower_corner_end = upper_corner_end + 1;
e644: 9909 ldr r1, [sp, #36] ; 0x24
e646: 460a mov r2, r1
e648: 42b1 cmp r1, r6
e64a: bfa4 itt ge
e64c: 3201 addge r2, #1
e64e: 4616 movge r6, r2
fill_area.y1 = disp_area->y1 + lower_corner_end;
e650: 4433 add r3, r6
e652: b21b sxth r3, r3
e654: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
fill_area.y2 = fill_area.y1;
e658: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
for(h = lower_corner_end; h <= draw_area.y2; h++) {
e65c: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e
e660: 429e cmp r6, r3
e662: f300 808c bgt.w e77e <lv_draw_rect+0x244e>
_lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode);
e666: f8df 8264 ldr.w r8, [pc, #612] ; e8cc <lv_draw_rect+0x259c>
e66a: 462b mov r3, r5
e66c: 465d mov r5, fp
e66e: f8cd a024 str.w sl, [sp, #36] ; 0x24
e672: f8dd a02c ldr.w sl, [sp, #44] ; 0x2c
e676: 469b mov fp, r3
e678: e02d b.n e6d6 <lv_draw_rect+0x23a6>
fill_area2.x1 = area_outer.x2 - rout + 1;
e67a: f9bd 3064 ldrsh.w r3, [sp, #100] ; 0x64
e67e: 1c5a adds r2, r3, #1
e680: 1b14 subs r4, r2, r4
e682: f8ad 4078 strh.w r4, [sp, #120] ; 0x78
fill_area2.x2 = area_outer.x2;
e686: f8ad 307c strh.w r3, [sp, #124] ; 0x7c
int32_t mask_ofs = (area_outer.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1);
e68a: 9a06 ldr r2, [sp, #24]
e68c: 1a9b subs r3, r3, r2
e68e: 3301 adds r3, #1
e690: f9b9 2010 ldrsh.w r2, [r9, #16]
e694: f9bd 1068 ldrsh.w r1, [sp, #104] ; 0x68
e698: 440a add r2, r1
e69a: 1a9b subs r3, r3, r2
_lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode);
e69c: f8cd b008 str.w fp, [sp, #8]
e6a0: 9501 str r5, [sp, #4]
e6a2: 9700 str r7, [sp, #0]
e6a4: 2b00 cmp r3, #0
e6a6: bfac ite ge
e6a8: 4453 addge r3, sl
e6aa: f10a 0300 addlt.w r3, sl, #0
e6ae: f8bd 2014 ldrh.w r2, [sp, #20]
e6b2: a91e add r1, sp, #120 ; 0x78
e6b4: 9804 ldr r0, [sp, #16]
e6b6: 47c0 blx r8
fill_area.y1++;
e6b8: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72
e6bc: 3301 adds r3, #1
e6be: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
fill_area.y2++;
e6c2: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76
e6c6: 3301 adds r3, #1
e6c8: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
for(h = lower_corner_end; h <= draw_area.y2; h++) {
e6cc: 3601 adds r6, #1
e6ce: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e
e6d2: 429e cmp r6, r3
e6d4: dc4e bgt.n e774 <lv_draw_rect+0x2444>
_lv_memset_ff(mask_buf, draw_area_w);
e6d6: 9908 ldr r1, [sp, #32]
e6d8: 4650 mov r0, sl
e6da: 4b7a ldr r3, [pc, #488] ; (e8c4 <lv_draw_rect+0x2594>)
e6dc: 4798 blx r3
mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w);
e6de: f8b9 2012 ldrh.w r2, [r9, #18]
e6e2: 4432 add r2, r6
e6e4: f8b9 1010 ldrh.w r1, [r9, #16]
e6e8: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68
e6ec: 4419 add r1, r3
e6ee: 9b07 ldr r3, [sp, #28]
e6f0: b212 sxth r2, r2
e6f2: b209 sxth r1, r1
e6f4: 4650 mov r0, sl
e6f6: 4c74 ldr r4, [pc, #464] ; (e8c8 <lv_draw_rect+0x2598>)
e6f8: 47a0 blx r4
e6fa: 4607 mov r7, r0
fill_area2.x1 = area_outer.x1;
e6fc: f9bd 3060 ldrsh.w r3, [sp, #96] ; 0x60
e700: f8ad 3078 strh.w r3, [sp, #120] ; 0x78
fill_area2.x2 = area_outer.x1 + rout - 1;
e704: f8bd 4018 ldrh.w r4, [sp, #24]
e708: 3b01 subs r3, #1
e70a: 4423 add r3, r4
e70c: f8ad 307c strh.w r3, [sp, #124] ; 0x7c
fill_area2.y1 = fill_area.y1;
e710: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72
e714: f8ad 307a strh.w r3, [sp, #122] ; 0x7a
fill_area2.y2 = fill_area.y2;
e718: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76
e71c: f8ad 307e strh.w r3, [sp, #126] ; 0x7e
_lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode);
e720: f8cd b008 str.w fp, [sp, #8]
e724: 9501 str r5, [sp, #4]
e726: 9000 str r0, [sp, #0]
e728: 4653 mov r3, sl
e72a: f8bd 2014 ldrh.w r2, [sp, #20]
e72e: a91e add r1, sp, #120 ; 0x78
e730: 9804 ldr r0, [sp, #16]
e732: 47c0 blx r8
if(fill_area2.y2 > area_outer.y2 - dsc->outline_width) {
e734: f9bd 207e ldrsh.w r2, [sp, #126] ; 0x7e
e738: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66
e73c: 9909 ldr r1, [sp, #36] ; 0x24
e73e: f9b1 1018 ldrsh.w r1, [r1, #24]
e742: 1a5b subs r3, r3, r1
e744: 429a cmp r2, r3
e746: dd98 ble.n e67a <lv_draw_rect+0x234a>
fill_area2.x1 = area_outer.x1 + rout;
e748: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60
e74c: 4423 add r3, r4
e74e: f8ad 3078 strh.w r3, [sp, #120] ; 0x78
fill_area2.x2 = area_outer.x2 - rout;
e752: f8bd 3064 ldrh.w r3, [sp, #100] ; 0x64
e756: 1b1b subs r3, r3, r4
e758: f8ad 307c strh.w r3, [sp, #124] ; 0x7c
_lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode);
e75c: f8cd b008 str.w fp, [sp, #8]
e760: 9501 str r5, [sp, #4]
e762: 2301 movs r3, #1
e764: 9300 str r3, [sp, #0]
e766: 2300 movs r3, #0
e768: f8bd 2014 ldrh.w r2, [sp, #20]
e76c: a91e add r1, sp, #120 ; 0x78
e76e: 9804 ldr r0, [sp, #16]
e770: 47c0 blx r8
e772: e782 b.n e67a <lv_draw_rect+0x234a>
e774: 465b mov r3, fp
e776: 46ab mov fp, r5
e778: f8dd a024 ldr.w sl, [sp, #36] ; 0x24
e77c: 461d mov r5, r3
fill_area.y1 = area_outer.y1 + corner_size + 1;
e77e: f8bd 3038 ldrh.w r3, [sp, #56] ; 0x38
e782: f8bd 2062 ldrh.w r2, [sp, #98] ; 0x62
e786: 3201 adds r2, #1
e788: 441a add r2, r3
e78a: f8ad 2072 strh.w r2, [sp, #114] ; 0x72
fill_area.y2 = area_outer.y2 - corner_size - 1;
e78e: f8bd 2066 ldrh.w r2, [sp, #102] ; 0x66
e792: 3a01 subs r2, #1
e794: 1ad3 subs r3, r2, r3
e796: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
fill_area.x1 = area_outer.x1;
e79a: f9bd 3060 ldrsh.w r3, [sp, #96] ; 0x60
e79e: f8ad 3070 strh.w r3, [sp, #112] ; 0x70
fill_area.x2 = area_outer.x1 + dsc->outline_width - 1;
e7a2: 3b01 subs r3, #1
e7a4: f8ba 2018 ldrh.w r2, [sl, #24]
e7a8: 4413 add r3, r2
e7aa: f8ad 3074 strh.w r3, [sp, #116] ; 0x74
_lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode);
e7ae: 9502 str r5, [sp, #8]
e7b0: f8cd b004 str.w fp, [sp, #4]
e7b4: 2601 movs r6, #1
e7b6: 9600 str r6, [sp, #0]
e7b8: 2300 movs r3, #0
e7ba: f8bd 8014 ldrh.w r8, [sp, #20]
e7be: 4642 mov r2, r8
e7c0: a91c add r1, sp, #112 ; 0x70
e7c2: 9f04 ldr r7, [sp, #16]
e7c4: 4638 mov r0, r7
e7c6: 4c41 ldr r4, [pc, #260] ; (e8cc <lv_draw_rect+0x259c>)
e7c8: 47a0 blx r4
fill_area.x1 = area_outer.x2 - dsc->outline_width + 1;
e7ca: f9bd 2064 ldrsh.w r2, [sp, #100] ; 0x64
e7ce: 1993 adds r3, r2, r6
e7d0: f8ba 1018 ldrh.w r1, [sl, #24]
e7d4: 1a5b subs r3, r3, r1
e7d6: f8ad 3070 strh.w r3, [sp, #112] ; 0x70
fill_area.x2 = area_outer.x2;
e7da: f8ad 2074 strh.w r2, [sp, #116] ; 0x74
_lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode);
e7de: 9502 str r5, [sp, #8]
e7e0: f8cd b004 str.w fp, [sp, #4]
e7e4: 9600 str r6, [sp, #0]
e7e6: 2300 movs r3, #0
e7e8: 4642 mov r2, r8
e7ea: a91c add r1, sp, #112 ; 0x70
e7ec: 4638 mov r0, r7
e7ee: 47a0 blx r4
lv_draw_mask_remove_id(mask_rin_id);
e7f0: 980c ldr r0, [sp, #48] ; 0x30
e7f2: 4c37 ldr r4, [pc, #220] ; (e8d0 <lv_draw_rect+0x25a0>)
e7f4: 47a0 blx r4
lv_draw_mask_remove_id(mask_rout_id);
e7f6: 980d ldr r0, [sp, #52] ; 0x34
e7f8: 47a0 blx r4
_lv_mem_buf_release(mask_buf);
e7fa: 980b ldr r0, [sp, #44] ; 0x2c
e7fc: 4b35 ldr r3, [pc, #212] ; (e8d4 <lv_draw_rect+0x25a4>)
e7fe: 4798 blx r3
e800: f7fe bdb0 b.w d364 <lv_draw_rect+0x1034>
fill_area.x1 = area_outer.x1;
e804: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60
e808: f8ad 3070 strh.w r3, [sp, #112] ; 0x70
fill_area.x2 = area_outer.x2;
e80c: f8bd 3064 ldrh.w r3, [sp, #100] ; 0x64
e810: f8ad 3074 strh.w r3, [sp, #116] ; 0x74
fill_area.y1 = disp_area->y1 + draw_area.y1;
e814: f9bd 206a ldrsh.w r2, [sp, #106] ; 0x6a
e818: f8b9 3012 ldrh.w r3, [r9, #18]
e81c: 4413 add r3, r2
e81e: b21b sxth r3, r3
e820: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
fill_area.y2 = fill_area.y1;
e824: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
for(h = draw_area.y1; h <= draw_area.y2; h++) {
e828: 4614 mov r4, r2
e82a: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e
e82e: 429a cmp r2, r3
e830: dcde bgt.n e7f0 <lv_draw_rect+0x24c0>
_lv_memset_ff(mask_buf, draw_area_w);
e832: f8df 8090 ldr.w r8, [pc, #144] ; e8c4 <lv_draw_rect+0x2594>
mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w);
e836: 4f24 ldr r7, [pc, #144] ; (e8c8 <lv_draw_rect+0x2598>)
_lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode);
e838: 4e24 ldr r6, [pc, #144] ; (e8cc <lv_draw_rect+0x259c>)
e83a: f8dd a02c ldr.w sl, [sp, #44] ; 0x2c
e83e: 462b mov r3, r5
e840: 465d mov r5, fp
e842: 469b mov fp, r3
_lv_memset_ff(mask_buf, draw_area_w);
e844: 9908 ldr r1, [sp, #32]
e846: 4650 mov r0, sl
e848: 47c0 blx r8
mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w);
e84a: f8b9 2012 ldrh.w r2, [r9, #18]
e84e: 4422 add r2, r4
e850: f8b9 1010 ldrh.w r1, [r9, #16]
e854: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68
e858: 4419 add r1, r3
e85a: 9b07 ldr r3, [sp, #28]
e85c: b212 sxth r2, r2
e85e: b209 sxth r1, r1
e860: 4650 mov r0, sl
e862: 47b8 blx r7
_lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode);
e864: f8cd b008 str.w fp, [sp, #8]
e868: 9501 str r5, [sp, #4]
e86a: 9000 str r0, [sp, #0]
e86c: 4653 mov r3, sl
e86e: f8bd 2014 ldrh.w r2, [sp, #20]
e872: a91c add r1, sp, #112 ; 0x70
e874: 9804 ldr r0, [sp, #16]
e876: 47b0 blx r6
fill_area.y1++;
e878: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72
e87c: 3301 adds r3, #1
e87e: f8ad 3072 strh.w r3, [sp, #114] ; 0x72
fill_area.y2++;
e882: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76
e886: 3301 adds r3, #1
e888: f8ad 3076 strh.w r3, [sp, #118] ; 0x76
for(h = draw_area.y1; h <= draw_area.y2; h++) {
e88c: 3401 adds r4, #1
e88e: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e
e892: 429c cmp r4, r3
e894: ddd6 ble.n e844 <lv_draw_rect+0x2514>
e896: e7ab b.n e7f0 <lv_draw_rect+0x24c0>
_lv_mem_buf_release(mask_line);
e898: 980c ldr r0, [sp, #48] ; 0x30
e89a: 4b0e ldr r3, [pc, #56] ; (e8d4 <lv_draw_rect+0x25a4>)
e89c: 4798 blx r3
for(i = 0; i < size * size; i++) {
e89e: fb07 f707 mul.w r7, r7, r7
e8a2: 2f00 cmp r7, #0
e8a4: f43d aeec beq.w c680 <lv_draw_rect+0x350>
e8a8: 980a ldr r0, [sp, #40] ; 0x28
e8aa: 4602 mov r2, r0
e8ac: 1e41 subs r1, r0, #1
e8ae: eb00 0047 add.w r0, r0, r7, lsl #1
res_buf[i] = (sh_buf[i] >> SHADOW_UPSACALE_SHIFT);
e8b2: f832 3b02 ldrh.w r3, [r2], #2
e8b6: 099b lsrs r3, r3, #6
e8b8: f801 3f01 strb.w r3, [r1, #1]!
for(i = 0; i < size * size; i++) {
e8bc: 4290 cmp r0, r2
e8be: d1f8 bne.n e8b2 <lv_draw_rect+0x2582>
e8c0: f7fd bede b.w c680 <lv_draw_rect+0x350>
e8c4: 00012bed .word 0x00012bed
e8c8: 0000be1d .word 0x0000be1d
e8cc: 00007751 .word 0x00007751
e8d0: 0000be6d .word 0x0000be6d
e8d4: 00012571 .word 0x00012571
lv_opa_t * mask_line = _lv_mem_buf_get(size);
e8d8: 9707 str r7, [sp, #28]
e8da: 4638 mov r0, r7
e8dc: 4b0b ldr r3, [pc, #44] ; (e90c <lv_draw_rect+0x25dc>)
e8de: 4798 blx r3
e8e0: 900c str r0, [sp, #48] ; 0x30
for(y = 0; y < size; y++) {
e8e2: 2f00 cmp r7, #0
e8e4: ddd8 ble.n e898 <lv_draw_rect+0x2568>
e8e6: 2301 movs r3, #1
e8e8: 930b str r3, [sp, #44] ; 0x2c
e8ea: f7fd be27 b.w c53c <lv_draw_rect+0x20c>
lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false);
e8ee: 2300 movs r3, #0
e8f0: f9ba 2000 ldrsh.w r2, [sl]
e8f4: 9906 ldr r1, [sp, #24]
e8f6: a829 add r0, sp, #164 ; 0xa4
e8f8: 4c05 ldr r4, [pc, #20] ; (e910 <lv_draw_rect+0x25e0>)
e8fa: 47a0 blx r4
radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL);
e8fc: 2100 movs r1, #0
e8fe: a829 add r0, sp, #164 ; 0xa4
e900: 4b04 ldr r3, [pc, #16] ; (e914 <lv_draw_rect+0x25e4>)
e902: 4798 blx r3
e904: 4604 mov r4, r0
e906: f7ff b91e b.w db46 <lv_draw_rect+0x1816>
e90a: bf00 nop
e90c: 0001293d .word 0x0001293d
e910: 0000c02d .word 0x0000c02d
e914: 0000bdc1 .word 0x0000bdc1
0000e918 <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)
{
e918: b5f0 push {r4, r5, r6, r7, lr}
e91a: b083 sub sp, #12
lv_color_t p_color = LV_COLOR_BLACK;
e91c: f89d 4004 ldrb.w r4, [sp, #4]
e920: f36f 0404 bfc r4, #0, #5
e924: f88d 4004 strb.w r4, [sp, #4]
e928: f8bd 4004 ldrh.w r4, [sp, #4]
e92c: f36f 144a bfc r4, #5, #6
e930: f8ad 4004 strh.w r4, [sp, #4]
e934: 0a24 lsrs r4, r4, #8
e936: f36f 04c7 bfc r4, #3, #5
e93a: f88d 4005 strb.w r4, [sp, #5]
uint8_t * buf_u8 = (uint8_t *)dsc->data;
e93e: 6886 ldr r6, [r0, #8]
if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED ||
e940: 7804 ldrb r4, [r0, #0]
e942: f004 041f and.w r4, r4, #31
e946: 1f25 subs r5, r4, #4
e948: b2ed uxtb r5, r5
e94a: 2d02 cmp r5, #2
e94c: d90e bls.n e96c <lv_img_buf_get_px_color+0x54>
_lv_memcpy_small(&p_color, &buf_u8[px], sizeof(lv_color_t));
#if LV_COLOR_SIZE == 32
p_color.ch.alpha = 0xFF; /*Only the color should be get so use a deafult alpha value*/
#endif
}
else if(dsc->header.cf == LV_IMG_CF_INDEXED_1BIT) {
e94e: 2c07 cmp r4, #7
e950: d028 beq.n e9a4 <lv_img_buf_get_px_color+0x8c>
* dsc->header.w + 7 means rounding up to 8 because the lines are byte aligned
* so the possible real width are 8, 16, 24 ...*/
uint32_t px = ((dsc->header.w + 7) >> 3) * y + x;
p_color.full = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit);
}
else if(dsc->header.cf == LV_IMG_CF_INDEXED_2BIT) {
e952: 2c08 cmp r4, #8
e954: d03b beq.n e9ce <lv_img_buf_get_px_color+0xb6>
* dsc->header.w + 3 means rounding up to 4 because the lines are byte aligned
* so the possible real width are 4, 8, 12 ...*/
uint32_t px = ((dsc->header.w + 3) >> 2) * y + x;
p_color.full = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit);
}
else if(dsc->header.cf == LV_IMG_CF_INDEXED_4BIT) {
e956: 2c09 cmp r4, #9
e958: d050 beq.n e9fc <lv_img_buf_get_px_color+0xe4>
* dsc->header.w + 1 means rounding up to 2 because the lines are byte aligned
* so the possible real width are 2, 4, 6 ...*/
uint32_t px = ((dsc->header.w + 1) >> 1) * y + x;
p_color.full = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit);
}
else if(dsc->header.cf == LV_IMG_CF_INDEXED_8BIT) {
e95a: 2c0a cmp r4, #10
e95c: d066 beq.n ea2c <lv_img_buf_get_px_color+0x114>
buf_u8 += 4 * 256;
uint32_t px = dsc->header.w * y + x;
p_color.full = buf_u8[px];
}
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) {
e95e: 3c0b subs r4, #11
else if(dsc->header.cf == LV_IMG_CF_ALPHA_1BIT || dsc->header.cf == LV_IMG_CF_ALPHA_2BIT ||
e960: b2e4 uxtb r4, r4
e962: 2c03 cmp r4, #3
p_color = color;
e964: bf98 it ls
e966: f8ad 3004 strhls.w r3, [sp, #4]
e96a: e017 b.n e99c <lv_img_buf_get_px_color+0x84>
e96c: 4614 mov r4, r2
e96e: 460f mov r7, r1
e970: 4605 mov r5, r0
uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf) >> 3;
e972: 7800 ldrb r0, [r0, #0]
e974: f000 001f and.w r0, r0, #31
e978: 4b32 ldr r3, [pc, #200] ; (ea44 <lv_img_buf_get_px_color+0x12c>)
e97a: 4798 blx r3
uint32_t px = dsc->header.w * y * px_size + x * px_size;
e97c: 682b ldr r3, [r5, #0]
e97e: f3c3 238a ubfx r3, r3, #10, #11
e982: fb04 7203 mla r2, r4, r3, r7
e986: f3c0 00c7 ubfx r0, r0, #3, #8
e98a: fb00 f202 mul.w r2, r0, r2
_lv_memcpy_small(&p_color, &buf_u8[px], sizeof(lv_color_t));
e98e: 18b3 adds r3, r6, r2
*d8 = *s8;
e990: 5cb2 ldrb r2, [r6, r2]
e992: f88d 2004 strb.w r2, [sp, #4]
e996: 785b ldrb r3, [r3, #1]
e998: f88d 3005 strb.w r3, [sp, #5]
}
return p_color;
}
e99c: f8bd 0004 ldrh.w r0, [sp, #4]
e9a0: b003 add sp, #12
e9a2: bdf0 pop {r4, r5, r6, r7, pc}
p_color.full = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit);
e9a4: f001 0307 and.w r3, r1, #7
e9a8: f1c3 0407 rsb r4, r3, #7
uint32_t px = ((dsc->header.w + 7) >> 3) * y + x;
e9ac: 6803 ldr r3, [r0, #0]
e9ae: f3c3 238a ubfx r3, r3, #10, #11
e9b2: 3307 adds r3, #7
e9b4: 10db asrs r3, r3, #3
p_color.full = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit);
e9b6: fb02 6603 mla r6, r2, r3, r6
e9ba: eb06 01e1 add.w r1, r6, r1, asr #3
e9be: 7a0b ldrb r3, [r1, #8]
e9c0: 2201 movs r2, #1
e9c2: 40a2 lsls r2, r4
e9c4: 4013 ands r3, r2
e9c6: 4123 asrs r3, r4
e9c8: f8ad 3004 strh.w r3, [sp, #4]
e9cc: e7e6 b.n e99c <lv_img_buf_get_px_color+0x84>
uint8_t bit = (x & 0x3) * 2;
e9ce: f001 0403 and.w r4, r1, #3
p_color.full = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit);
e9d2: 0064 lsls r4, r4, #1
e9d4: f1c4 0406 rsb r4, r4, #6
uint32_t px = ((dsc->header.w + 3) >> 2) * y + x;
e9d8: 6803 ldr r3, [r0, #0]
e9da: f3c3 238a ubfx r3, r3, #10, #11
e9de: 3303 adds r3, #3
e9e0: 109b asrs r3, r3, #2
p_color.full = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit);
e9e2: fb02 6603 mla r6, r2, r3, r6
e9e6: eb06 01a1 add.w r1, r6, r1, asr #2
e9ea: 7c0b ldrb r3, [r1, #16]
e9ec: 2203 movs r2, #3
e9ee: 40a2 lsls r2, r4
e9f0: 4013 ands r3, r2
e9f2: fa43 f404 asr.w r4, r3, r4
e9f6: f8ad 4004 strh.w r4, [sp, #4]
e9fa: e7cf b.n e99c <lv_img_buf_get_px_color+0x84>
uint8_t bit = (x & 0x1) * 4;
e9fc: f001 0401 and.w r4, r1, #1
p_color.full = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit);
ea00: 00a4 lsls r4, r4, #2
ea02: f1c4 0404 rsb r4, r4, #4
uint32_t px = ((dsc->header.w + 1) >> 1) * y + x;
ea06: 6803 ldr r3, [r0, #0]
ea08: f3c3 238a ubfx r3, r3, #10, #11
ea0c: 3301 adds r3, #1
ea0e: 105b asrs r3, r3, #1
p_color.full = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit);
ea10: fb02 6603 mla r6, r2, r3, r6
ea14: eb06 0161 add.w r1, r6, r1, asr #1
ea18: f891 3040 ldrb.w r3, [r1, #64] ; 0x40
ea1c: 220f movs r2, #15
ea1e: 40a2 lsls r2, r4
ea20: 4013 ands r3, r2
ea22: fa43 f404 asr.w r4, r3, r4
ea26: f8ad 4004 strh.w r4, [sp, #4]
ea2a: e7b7 b.n e99c <lv_img_buf_get_px_color+0x84>
uint32_t px = dsc->header.w * y + x;
ea2c: 6803 ldr r3, [r0, #0]
ea2e: f3c3 238a ubfx r3, r3, #10, #11
p_color.full = buf_u8[px];
ea32: 4431 add r1, r6
ea34: fb02 1103 mla r1, r2, r3, r1
ea38: f891 3400 ldrb.w r3, [r1, #1024] ; 0x400
ea3c: f8ad 3004 strh.w r3, [sp, #4]
ea40: e7ac b.n e99c <lv_img_buf_get_px_color+0x84>
ea42: bf00 nop
ea44: 00009681 .word 0x00009681
0000ea48 <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)
{
ea48: b5f0 push {r4, r5, r6, r7, lr}
ea4a: b085 sub sp, #20
ea4c: 4604 mov r4, r0
ea4e: 460d mov r5, r1
ea50: 4617 mov r7, r2
uint8_t * buf_u8 = (uint8_t *)dsc->data;
ea52: 6886 ldr r6, [r0, #8]
if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA) {
ea54: 7803 ldrb r3, [r0, #0]
ea56: f003 031f and.w r3, r3, #31
ea5a: 2b05 cmp r3, #5
ea5c: d00a beq.n ea74 <lv_img_buf_get_px_alpha+0x2c>
uint32_t px = dsc->header.w * y * LV_IMG_PX_SIZE_ALPHA_BYTE + x * LV_IMG_PX_SIZE_ALPHA_BYTE;
return buf_u8[px + LV_IMG_PX_SIZE_ALPHA_BYTE - 1];
}
else if(dsc->header.cf == LV_IMG_CF_ALPHA_1BIT) {
ea5e: 2b0b cmp r3, #11
ea60: d012 beq.n ea88 <lv_img_buf_get_px_alpha+0x40>
* so the possible real width are 8 ,16, 24 ...*/
uint32_t px = ((dsc->header.w + 7) >> 3) * y + x;
uint8_t px_opa = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit);
return px_opa ? LV_OPA_TRANSP : LV_OPA_COVER;
}
else if(dsc->header.cf == LV_IMG_CF_ALPHA_2BIT) {
ea62: 2b0c cmp r3, #12
ea64: d027 beq.n eab6 <lv_img_buf_get_px_alpha+0x6e>
* so the possible real width are 4 ,8, 12 ...*/
uint32_t px = ((dsc->header.w + 3) >> 2) * y + x;
uint8_t px_opa = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit);
return opa_table[px_opa];
}
else if(dsc->header.cf == LV_IMG_CF_ALPHA_4BIT) {
ea66: 2b0d cmp r3, #13
ea68: d049 beq.n eafe <lv_img_buf_get_px_alpha+0xb6>
* so the possible real width are 2 ,4, 6 ...*/
uint32_t px = ((dsc->header.w + 1) >> 1) * y + x;
uint8_t px_opa = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit);
return opa_table[px_opa];
}
else if(dsc->header.cf == LV_IMG_CF_ALPHA_8BIT) {
ea6a: 2b0e cmp r3, #14
ea6c: d064 beq.n eb38 <lv_img_buf_get_px_alpha+0xf0>
uint32_t px = dsc->header.w * y + x;
return buf_u8[px];
}
return LV_OPA_COVER;
ea6e: 20ff movs r0, #255 ; 0xff
}
ea70: b005 add sp, #20
ea72: bdf0 pop {r4, r5, r6, r7, pc}
uint32_t px = dsc->header.w * y * LV_IMG_PX_SIZE_ALPHA_BYTE + x * LV_IMG_PX_SIZE_ALPHA_BYTE;
ea74: 6802 ldr r2, [r0, #0]
ea76: f3c2 228a ubfx r2, r2, #10, #11
ea7a: fb07 1502 mla r5, r7, r2, r1
return buf_u8[px + LV_IMG_PX_SIZE_ALPHA_BYTE - 1];
ea7e: eb05 0545 add.w r5, r5, r5, lsl #1
ea82: 4435 add r5, r6
ea84: 78a8 ldrb r0, [r5, #2]
ea86: e7f3 b.n ea70 <lv_img_buf_get_px_alpha+0x28>
uint8_t px_opa = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit);
ea88: f001 0307 and.w r3, r1, #7
ea8c: f1c3 0107 rsb r1, r3, #7
uint32_t px = ((dsc->header.w + 7) >> 3) * y + x;
ea90: 6802 ldr r2, [r0, #0]
ea92: f3c2 228a ubfx r2, r2, #10, #11
ea96: 3207 adds r2, #7
ea98: 10d2 asrs r2, r2, #3
ea9a: 10ed asrs r5, r5, #3
uint8_t px_opa = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit);
ea9c: fb07 6202 mla r2, r7, r2, r6
eaa0: 5d53 ldrb r3, [r2, r5]
eaa2: 2201 movs r2, #1
eaa4: 408a lsls r2, r1
eaa6: 4013 ands r3, r2
eaa8: 410b asrs r3, r1
return px_opa ? LV_OPA_TRANSP : LV_OPA_COVER;
eaaa: f013 0fff tst.w r3, #255 ; 0xff
eaae: bf0c ite eq
eab0: 20ff moveq r0, #255 ; 0xff
eab2: 2000 movne r0, #0
eab4: e7dc b.n ea70 <lv_img_buf_get_px_alpha+0x28>
const uint8_t opa_table[4] = {0, 85, 170, 255}; /*Opacity mapping with bpp = 2*/
eab6: 2300 movs r3, #0
eab8: f88d 3000 strb.w r3, [sp]
eabc: 2355 movs r3, #85 ; 0x55
eabe: f88d 3001 strb.w r3, [sp, #1]
eac2: 23aa movs r3, #170 ; 0xaa
eac4: f88d 3002 strb.w r3, [sp, #2]
eac8: 23ff movs r3, #255 ; 0xff
eaca: f88d 3003 strb.w r3, [sp, #3]
uint8_t bit = (x & 0x3) * 2;
eace: f001 0303 and.w r3, r1, #3
uint8_t px_opa = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit);
ead2: 005b lsls r3, r3, #1
ead4: f1c3 0106 rsb r1, r3, #6
uint32_t px = ((dsc->header.w + 3) >> 2) * y + x;
ead8: 6802 ldr r2, [r0, #0]
eada: f3c2 228a ubfx r2, r2, #10, #11
eade: 3203 adds r2, #3
eae0: 1092 asrs r2, r2, #2
eae2: 10ad asrs r5, r5, #2
uint8_t px_opa = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit);
eae4: fb07 6202 mla r2, r7, r2, r6
eae8: 5d53 ldrb r3, [r2, r5]
eaea: 2203 movs r2, #3
eaec: 408a lsls r2, r1
eaee: 4013 ands r3, r2
eaf0: 410b asrs r3, r1
return opa_table[px_opa];
eaf2: aa04 add r2, sp, #16
eaf4: fa52 f383 uxtab r3, r2, r3
eaf8: f813 0c10 ldrb.w r0, [r3, #-16]
eafc: e7b8 b.n ea70 <lv_img_buf_get_px_alpha+0x28>
const uint8_t opa_table[16] = {0, 17, 34, 51, /*Opacity mapping with bpp = 4*/
eafe: 4b12 ldr r3, [pc, #72] ; (eb48 <lv_img_buf_get_px_alpha+0x100>)
eb00: cb0f ldmia r3, {r0, r1, r2, r3}
eb02: f10d 0e10 add.w lr, sp, #16
eb06: e90e 000f stmdb lr, {r0, r1, r2, r3}
uint8_t bit = (x & 0x1) * 4;
eb0a: f005 0301 and.w r3, r5, #1
uint8_t px_opa = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit);
eb0e: 009b lsls r3, r3, #2
eb10: f1c3 0104 rsb r1, r3, #4
uint32_t px = ((dsc->header.w + 1) >> 1) * y + x;
eb14: 6822 ldr r2, [r4, #0]
eb16: f3c2 228a ubfx r2, r2, #10, #11
eb1a: 3201 adds r2, #1
eb1c: 1052 asrs r2, r2, #1
eb1e: 106d asrs r5, r5, #1
uint8_t px_opa = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit);
eb20: fb07 6202 mla r2, r7, r2, r6
eb24: 5d53 ldrb r3, [r2, r5]
eb26: 220f movs r2, #15
eb28: 408a lsls r2, r1
eb2a: 4013 ands r3, r2
eb2c: 410b asrs r3, r1
return opa_table[px_opa];
eb2e: fa5e f383 uxtab r3, lr, r3
eb32: f813 0c10 ldrb.w r0, [r3, #-16]
eb36: e79b b.n ea70 <lv_img_buf_get_px_alpha+0x28>
uint32_t px = dsc->header.w * y + x;
eb38: 6802 ldr r2, [r0, #0]
eb3a: f3c2 228a ubfx r2, r2, #10, #11
return buf_u8[px];
eb3e: fb07 6202 mla r2, r7, r2, r6
eb42: 5c50 ldrb r0, [r2, r1]
eb44: e794 b.n ea70 <lv_img_buf_get_px_alpha+0x28>
eb46: bf00 nop
eb48: 0002510c .word 0x0002510c
0000eb4c <_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)
{
eb4c: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
eb50: 4604 mov r4, r0
dsc->tmp.pivot_x_256 = dsc->cfg.pivot_x * 256;
eb52: f9b0 3008 ldrsh.w r3, [r0, #8]
eb56: 021b lsls r3, r3, #8
eb58: 6243 str r3, [r0, #36] ; 0x24
dsc->tmp.pivot_y_256 = dsc->cfg.pivot_y * 256;
eb5a: f9b0 300a ldrsh.w r3, [r0, #10]
eb5e: 021b lsls r3, r3, #8
eb60: 6283 str r3, [r0, #40] ; 0x28
int32_t angle_low = dsc->cfg.angle / 10;
eb62: f9b0 000c ldrsh.w r0, [r0, #12]
eb66: f8df 80f4 ldr.w r8, [pc, #244] ; ec5c <_lv_img_buf_transform_init+0x110>
eb6a: fb88 2300 smull r2, r3, r8, r0
eb6e: 17c5 asrs r5, r0, #31
eb70: ebc5 05a3 rsb r5, r5, r3, asr #2
eb74: b22d sxth r5, r5
int32_t angle_hight = angle_low + 1;
int32_t angle_rem = dsc->cfg.angle - (angle_low * 10);
eb76: f06f 0709 mvn.w r7, #9
eb7a: fb07 0705 mla r7, r7, r5, r0
int32_t s1 = _lv_trigo_sin(-angle_low);
eb7e: fa1f fa85 uxth.w sl, r5
eb82: f1ca 0000 rsb r0, sl, #0
eb86: b200 sxth r0, r0
eb88: f8df 90d4 ldr.w r9, [pc, #212] ; ec60 <_lv_img_buf_transform_init+0x114>
eb8c: 47c8 blx r9
eb8e: 4606 mov r6, r0
int32_t angle_hight = angle_low + 1;
eb90: 3501 adds r5, #1
int32_t s2 = _lv_trigo_sin(-angle_hight);
eb92: b2ad uxth r5, r5
eb94: 4268 negs r0, r5
eb96: b200 sxth r0, r0
eb98: 47c8 blx r9
eb9a: 4683 mov fp, r0
int32_t c1 = _lv_trigo_sin(-angle_low + 90);
eb9c: f1ca 005a rsb r0, sl, #90 ; 0x5a
eba0: b200 sxth r0, r0
eba2: 47c8 blx r9
eba4: 4682 mov sl, r0
int32_t c2 = _lv_trigo_sin(-angle_hight + 90);
eba6: f1c5 055a rsb r5, r5, #90 ; 0x5a
ebaa: b228 sxth r0, r5
ebac: 47c8 blx r9
dsc->tmp.sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10;
ebae: f1c7 030a rsb r3, r7, #10
ebb2: fb07 fb0b mul.w fp, r7, fp
ebb6: fb03 b606 mla r6, r3, r6, fp
ebba: fb88 2b06 smull r2, fp, r8, r6
ebbe: 17f6 asrs r6, r6, #31
ebc0: ebc6 06ab rsb r6, r6, fp, asr #2
ebc4: 62e6 str r6, [r4, #44] ; 0x2c
dsc->tmp.cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10;
ebc6: fb07 f000 mul.w r0, r7, r0
ebca: fb03 000a mla r0, r3, sl, r0
ebce: fb88 3800 smull r3, r8, r8, r0
ebd2: 17c0 asrs r0, r0, #31
ebd4: ebc0 00a8 rsb r0, r0, r8, asr #2
ebd8: 6320 str r0, [r4, #48] ; 0x30
dsc->tmp.chroma_keyed = lv_img_cf_is_chroma_keyed(dsc->cfg.cf) ? 1 : 0;
ebda: 7ca0 ldrb r0, [r4, #18]
ebdc: 4b1d ldr r3, [pc, #116] ; (ec54 <_lv_img_buf_transform_init+0x108>)
ebde: 4798 blx r3
ebe0: f894 3034 ldrb.w r3, [r4, #52] ; 0x34
ebe4: f360 0300 bfi r3, r0, #0, #1
ebe8: f884 3034 strb.w r3, [r4, #52] ; 0x34
dsc->tmp.has_alpha = lv_img_cf_has_alpha(dsc->cfg.cf) ? 1 : 0;
ebec: 7ca0 ldrb r0, [r4, #18]
ebee: 4b1a ldr r3, [pc, #104] ; (ec58 <_lv_img_buf_transform_init+0x10c>)
ebf0: 4798 blx r3
ebf2: f894 3034 ldrb.w r3, [r4, #52] ; 0x34
ebf6: f360 0341 bfi r3, r0, #1, #1
ebfa: f884 3034 strb.w r3, [r4, #52] ; 0x34
if(dsc->cfg.cf == LV_IMG_CF_TRUE_COLOR || dsc->cfg.cf == LV_IMG_CF_TRUE_COLOR_ALPHA ||
ebfe: 7ca2 ldrb r2, [r4, #18]
ec00: 1f13 subs r3, r2, #4
ec02: b2db uxtb r3, r3
ec04: 2b02 cmp r3, #2
dsc->cfg.cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED) {
dsc->tmp.native_color = 1;
ec06: f894 3034 ldrb.w r3, [r4, #52] ; 0x34
ec0a: bf94 ite ls
ec0c: f043 0304 orrls.w r3, r3, #4
}
else {
dsc->tmp.native_color = 0;
ec10: f36f 0382 bfchi r3, #2, #1
ec14: f884 3034 strb.w r3, [r4, #52] ; 0x34
}
dsc->tmp.img_dsc.data = dsc->cfg.src;
ec18: 6823 ldr r3, [r4, #0]
ec1a: 6223 str r3, [r4, #32]
dsc->tmp.img_dsc.header.always_zero = 0;
ec1c: 7e23 ldrb r3, [r4, #24]
dsc->tmp.img_dsc.header.cf = dsc->cfg.cf;
ec1e: f003 031f and.w r3, r3, #31
ec22: f362 0304 bfi r3, r2, #0, #5
ec26: 7623 strb r3, [r4, #24]
dsc->tmp.img_dsc.header.w = dsc->cfg.src_w;
ec28: 69a3 ldr r3, [r4, #24]
ec2a: 88a2 ldrh r2, [r4, #4]
ec2c: f362 2394 bfi r3, r2, #10, #11
ec30: 61a3 str r3, [r4, #24]
dsc->tmp.img_dsc.header.h = dsc->cfg.src_h;
ec32: 0c1b lsrs r3, r3, #16
ec34: 88e2 ldrh r2, [r4, #6]
ec36: f362 134f bfi r3, r2, #5, #11
ec3a: 8363 strh r3, [r4, #26]
dsc->tmp.zoom_inv = (256 * 256) / dsc->cfg.zoom;
ec3c: 89e2 ldrh r2, [r4, #14]
ec3e: f44f 3380 mov.w r3, #65536 ; 0x10000
ec42: fb93 f3f2 sdiv r3, r3, r2
ec46: 86e3 strh r3, [r4, #54] ; 0x36
dsc->res.opa = LV_OPA_COVER;
ec48: 23ff movs r3, #255 ; 0xff
ec4a: 75a3 strb r3, [r4, #22]
dsc->res.color = dsc->cfg.color;
ec4c: 8a23 ldrh r3, [r4, #16]
ec4e: 82a3 strh r3, [r4, #20]
ec50: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
ec54: 000096b3 .word 0x000096b3
ec58: 000096c7 .word 0x000096c7
ec5c: 66666667 .word 0x66666667
ec60: 000122a5 .word 0x000122a5
0000ec64 <_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)
{
ec64: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
ec68: b087 sub sp, #28
ec6a: 9003 str r0, [sp, #12]
ec6c: 9104 str r1, [sp, #16]
ec6e: 9205 str r2, [sp, #20]
ec70: f8bd 4040 ldrh.w r4, [sp, #64] ; 0x40
ec74: 9401 str r4, [sp, #4]
ec76: f8dd b044 ldr.w fp, [sp, #68] ; 0x44
#if LV_USE_IMG_TRANSFORM
int32_t angle_low = angle / 10;
ec7a: 4f5e ldr r7, [pc, #376] ; (edf4 <_lv_img_buf_get_transformed_area+0x190>)
ec7c: fb87 6003 smull r6, r0, r7, r3
ec80: 17dd asrs r5, r3, #31
ec82: ebc5 05a0 rsb r5, r5, r0, asr #2
ec86: b22d sxth r5, r5
int32_t angle_hight = angle_low + 1;
ec88: f105 0901 add.w r9, r5, #1
int32_t angle_rem = angle - (angle_low * 10);
ec8c: f06f 0609 mvn.w r6, #9
ec90: fb06 3605 mla r6, r6, r5, r3
int32_t s1 = _lv_trigo_sin(angle_low);
ec94: 4628 mov r0, r5
ec96: f8df 8160 ldr.w r8, [pc, #352] ; edf8 <_lv_img_buf_get_transformed_area+0x194>
ec9a: 47c0 blx r8
ec9c: 4604 mov r4, r0
int32_t s2 = _lv_trigo_sin(angle_hight);
ec9e: fa0f f089 sxth.w r0, r9
eca2: 47c0 blx r8
eca4: 4682 mov sl, r0
int32_t c1 = _lv_trigo_sin(angle_low + 90);
eca6: f105 005a add.w r0, r5, #90 ; 0x5a
ecaa: b200 sxth r0, r0
ecac: 47c0 blx r8
ecae: 4605 mov r5, r0
int32_t c2 = _lv_trigo_sin(angle_hight + 90);
ecb0: f109 005a add.w r0, r9, #90 ; 0x5a
ecb4: b200 sxth r0, r0
ecb6: 47c0 blx r8
int32_t sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10;
ecb8: f1c6 030a rsb r3, r6, #10
ecbc: fb06 fa0a mul.w sl, r6, sl
ecc0: fb03 a404 mla r4, r3, r4, sl
ecc4: fb87 ea04 smull lr, sl, r7, r4
ecc8: 17e4 asrs r4, r4, #31
ecca: ebc4 04aa rsb r4, r4, sl, asr #2
int32_t cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10;
ecce: fb06 f000 mul.w r0, r6, r0
ecd2: fb03 0505 mla r5, r3, r5, r0
ecd6: fb87 3705 smull r3, r7, r7, r5
ecda: 17ed asrs r5, r5, #31
ecdc: ebc5 07a7 rsb r7, r5, r7, asr #2
lv_coord_t xt;
lv_coord_t yt;
lv_area_t a;
a.x1 = ((-pivot->x) * zoom) >> 8;
ece0: f9bb c000 ldrsh.w ip, [fp]
a.y1 = ((-pivot->y) * zoom) >> 8;
ece4: f9bb 8002 ldrsh.w r8, [fp, #2]
a.x1 = ((-pivot->x) * zoom) >> 8;
ece8: f1cc 0300 rsb r3, ip, #0
ecec: 9d01 ldr r5, [sp, #4]
ecee: fb05 f303 mul.w r3, r5, r3
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;
ecf2: f343 230f sbfx r3, r3, #8, #16
ecf6: fb03 fa07 mul.w sl, r3, r7
a.y1 = ((-pivot->y) * zoom) >> 8;
ecfa: f1c8 0200 rsb r2, r8, #0
ecfe: fb05 f202 mul.w r2, r5, r2
lt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x;
ed02: f342 220f sbfx r2, r2, #8, #16
ed06: fb02 fe04 mul.w lr, r2, r4
ed0a: fa1f f68c uxth.w r6, ip
ed0e: ebaa 0b0e sub.w fp, sl, lr
ed12: eb06 3beb add.w fp, r6, fp, asr #15
ed16: fa0f fb8b sxth.w fp, fp
lt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y;
ed1a: fb03 f304 mul.w r3, r3, r4
ed1e: fb02 f207 mul.w r2, r2, r7
ed22: fa1f f088 uxth.w r0, r8
ed26: 1899 adds r1, r3, r2
ed28: eb00 31e1 add.w r1, r0, r1, asr #15
ed2c: b209 sxth r1, r1
ed2e: 9102 str r1, [sp, #8]
a.x2 = ((w - pivot->x) * zoom) >> 8;
ed30: 9904 ldr r1, [sp, #16]
ed32: eba1 0c0c sub.w ip, r1, ip
ed36: fb05 fc0c mul.w ip, r5, ip
xt = a.x2;
yt = a.y1;
rt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x;
ed3a: f34c 2c0f sbfx ip, ip, #8, #16
ed3e: fb0c f907 mul.w r9, ip, r7
ed42: eba9 0e0e sub.w lr, r9, lr
ed46: eb06 3eee add.w lr, r6, lr, asr #15
ed4a: fa0f fe8e sxth.w lr, lr
rt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y;
ed4e: fb0c fc04 mul.w ip, ip, r4
ed52: 4462 add r2, ip
ed54: eb00 32e2 add.w r2, r0, r2, asr #15
ed58: b212 sxth r2, r2
a.y2 = ((h - pivot->y) * zoom) >> 8;
ed5a: 9905 ldr r1, [sp, #20]
ed5c: eba1 0808 sub.w r8, r1, r8
ed60: fb05 f808 mul.w r8, r5, r8
xt = a.x1;
yt = a.y2;
lb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x;
ed64: f348 280f sbfx r8, r8, #8, #16
ed68: fb08 f404 mul.w r4, r8, r4
ed6c: ebaa 0504 sub.w r5, sl, r4
ed70: eb06 35e5 add.w r5, r6, r5, asr #15
ed74: b22d sxth r5, r5
lb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y;
ed76: fb08 f707 mul.w r7, r8, r7
ed7a: 443b add r3, r7
ed7c: eb00 33e3 add.w r3, r0, r3, asr #15
ed80: b21b sxth r3, r3
xt = a.x2;
yt = a.y2;
rb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x;
ed82: eba9 0404 sub.w r4, r9, r4
ed86: eb06 36e4 add.w r6, r6, r4, asr #15
ed8a: b236 sxth r6, r6
rb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y;
ed8c: 44bc add ip, r7
ed8e: eb00 30ec add.w r0, r0, ip, asr #15
ed92: b200 sxth r0, r0
res->x1 = LV_MATH_MIN4(lb.x, lt.x, rb.x, rt.x);
ed94: 465c mov r4, fp
ed96: 45f3 cmp fp, lr
ed98: bfa8 it ge
ed9a: 4674 movge r4, lr
ed9c: 42ac cmp r4, r5
ed9e: bfa8 it ge
eda0: 462c movge r4, r5
eda2: 42b4 cmp r4, r6
eda4: bfa8 it ge
eda6: 4634 movge r4, r6
eda8: 9903 ldr r1, [sp, #12]
edaa: 460f mov r7, r1
edac: 800c strh r4, [r1, #0]
res->x2 = LV_MATH_MAX4(lb.x, lt.x, rb.x, rt.x);
edae: 45de cmp lr, fp
edb0: bfb8 it lt
edb2: 46de movlt lr, fp
edb4: 4575 cmp r5, lr
edb6: bfb8 it lt
edb8: 4675 movlt r5, lr
edba: 42ae cmp r6, r5
edbc: bfb8 it lt
edbe: 462e movlt r6, r5
edc0: 808e strh r6, [r1, #4]
res->y1 = LV_MATH_MIN4(lb.y, lt.y, rb.y, rt.y);
edc2: 9902 ldr r1, [sp, #8]
edc4: 460c mov r4, r1
edc6: 4291 cmp r1, r2
edc8: bfa8 it ge
edca: 4614 movge r4, r2
edcc: 429c cmp r4, r3
edce: bfa8 it ge
edd0: 461c movge r4, r3
edd2: 4284 cmp r4, r0
edd4: bfa8 it ge
edd6: 4604 movge r4, r0
edd8: 807c strh r4, [r7, #2]
res->y2 = LV_MATH_MAX4(lb.y, lt.y, rb.y, rt.y);
edda: 4291 cmp r1, r2
eddc: bfb8 it lt
edde: 4611 movlt r1, r2
ede0: 428b cmp r3, r1
ede2: bfb8 it lt
ede4: 460b movlt r3, r1
ede6: 4298 cmp r0, r3
ede8: bfb8 it lt
edea: 4618 movlt r0, r3
edec: 80f8 strh r0, [r7, #6]
res->x1 = 0;
res->y1 = 0;
res->x2 = w;
res->y2 = h;
#endif
}
edee: b007 add sp, #28
edf0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
edf4: 66666667 .word 0x66666667
edf8: 000122a5 .word 0x000122a5
0000edfc <_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)
{
edfc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
ee00: b089 sub sp, #36 ; 0x24
ee02: 4604 mov r4, r0
const uint8_t * src_u8 = dsc->cfg.src;
/*Get the fractional part of the source pixel*/
int xs_fract = dsc->tmp.xs & 0xff;
ee04: f9b0 5038 ldrsh.w r5, [r0, #56] ; 0x38
ee08: b2ea uxtb r2, r5
int ys_fract = dsc->tmp.ys & 0xff;
ee0a: f9b0 603a ldrsh.w r6, [r0, #58] ; 0x3a
ee0e: b2f3 uxtb r3, r6
int32_t xn; /*x neightboor*/
lv_opa_t xr; /*x mix ratio*/
if(xs_fract < 0x70) {
ee10: 2a6f cmp r2, #111 ; 0x6f
ee12: dc74 bgt.n eefe <_lv_img_buf_transform_anti_alias+0x102>
xn = - 1;
if(dsc->tmp.xs_int + xn < 0) xn = 0;
ee14: f9b0 103c ldrsh.w r1, [r0, #60] ; 0x3c
ee18: 4249 negs r1, r1
ee1a: 17c9 asrs r1, r1, #31
xr = xs_fract + 0x80;
ee1c: 3d80 subs r5, #128 ; 0x80
ee1e: b2ed uxtb r5, r5
}
int32_t yn; /*x neightboor*/
lv_opa_t yr; /*x mix ratio*/
if(ys_fract < 0x70) {
ee20: 2b6f cmp r3, #111 ; 0x6f
ee22: dc7e bgt.n ef22 <_lv_img_buf_transform_anti_alias+0x126>
yn = - 1;
if(dsc->tmp.ys_int + yn < 0) yn = 0;
ee24: f9b4 b03e ldrsh.w fp, [r4, #62] ; 0x3e
ee28: f1cb 0b00 rsb fp, fp, #0
ee2c: ea4f 7beb mov.w fp, fp, asr #31
yr = ys_fract + 0x80;
ee30: 3e80 subs r6, #128 ; 0x80
ee32: b2f6 uxtb r6, r6
else {
yn = 0;
yr = 0xFF;
}
lv_color_t c00 = dsc->res.color;
ee34: f894 9014 ldrb.w r9, [r4, #20]
ee38: f009 091f and.w r9, r9, #31
ee3c: f8b4 8014 ldrh.w r8, [r4, #20]
ee40: f3c8 1845 ubfx r8, r8, #5, #6
ee44: 7d67 ldrb r7, [r4, #21]
ee46: 08ff lsrs r7, r7, #3
lv_color_t c01;
lv_color_t c10;
lv_color_t c11;
lv_opa_t a00 = dsc->res.opa;
ee48: 7da3 ldrb r3, [r4, #22]
ee4a: 9300 str r3, [sp, #0]
lv_opa_t a10 = 0;
lv_opa_t a01 = 0;
lv_opa_t a11 = 0;
if(dsc->tmp.native_color) {
ee4c: f894 c034 ldrb.w ip, [r4, #52] ; 0x34
ee50: f01c 0f04 tst.w ip, #4
ee54: d07b beq.n ef4e <_lv_img_buf_transform_anti_alias+0x152>
const uint8_t * src_u8 = dsc->cfg.src;
ee56: 6823 ldr r3, [r4, #0]
_lv_memcpy_small(&c01, &src_u8[dsc->tmp.pxi + dsc->tmp.px_size * xn], sizeof(lv_color_t));
ee58: 6c20 ldr r0, [r4, #64] ; 0x40
ee5a: f894 e044 ldrb.w lr, [r4, #68] ; 0x44
ee5e: fb0e 0101 mla r1, lr, r1, r0
ee62: 185a adds r2, r3, r1
ee64: f813 a001 ldrb.w sl, [r3, r1]
ee68: f88d a01c strb.w sl, [sp, #28]
ee6c: 7852 ldrb r2, [r2, #1]
ee6e: f88d 201d strb.w r2, [sp, #29]
_lv_memcpy_small(&c10, &src_u8[dsc->tmp.pxi + dsc->cfg.src_w * dsc->tmp.px_size * yn], sizeof(lv_color_t));
ee72: f9b4 2004 ldrsh.w r2, [r4, #4]
ee76: fb0e f202 mul.w r2, lr, r2
ee7a: fb0b fb02 mul.w fp, fp, r2
ee7e: 4458 add r0, fp
ee80: 181a adds r2, r3, r0
ee82: f813 a000 ldrb.w sl, [r3, r0]
ee86: f88d a018 strb.w sl, [sp, #24]
ee8a: 7852 ldrb r2, [r2, #1]
ee8c: f88d 2019 strb.w r2, [sp, #25]
_lv_memcpy_small(&c11, &src_u8[dsc->tmp.pxi + dsc->cfg.src_w * dsc->tmp.px_size * yn + dsc->tmp.px_size * xn],
ee90: eb01 020b add.w r2, r1, fp
ee94: eb03 0a02 add.w sl, r3, r2
ee98: f813 b002 ldrb.w fp, [r3, r2]
ee9c: f88d b014 strb.w fp, [sp, #20]
eea0: f89a a001 ldrb.w sl, [sl, #1]
eea4: f88d a015 strb.w sl, [sp, #21]
sizeof(lv_color_t));
if(dsc->tmp.has_alpha) {
eea8: f01c 0f02 tst.w ip, #2
eeac: f000 8081 beq.w efb2 <_lv_img_buf_transform_anti_alias+0x1b6>
eeb0: f10e 3eff add.w lr, lr, #4294967295
a10 = src_u8[dsc->tmp.pxi + dsc->tmp.px_size * xn + dsc->tmp.px_size - 1];
eeb4: 4473 add r3, lr
eeb6: f813 b001 ldrb.w fp, [r3, r1]
a01 = src_u8[dsc->tmp.pxi + dsc->cfg.src_w * dsc->tmp.px_size * yn + dsc->tmp.px_size - 1];
eeba: f813 a000 ldrb.w sl, [r3, r0]
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];
eebe: 5c98 ldrb r0, [r3, r2]
}
lv_opa_t xr0 = xr;
lv_opa_t xr1 = xr;
if(dsc->tmp.has_alpha) {
lv_opa_t a0 = (a00 * xr + (a10 * (255 - xr))) >> 8;
eec0: f1c5 03ff rsb r3, r5, #255 ; 0xff
eec4: fb03 f10b mul.w r1, r3, fp
eec8: 9a00 ldr r2, [sp, #0]
eeca: fb05 1102 mla r1, r5, r2, r1
lv_opa_t a1 = (a01 * xr + (a11 * (255 - xr))) >> 8;
eece: fb03 f300 mul.w r3, r3, r0
eed2: fb05 330a mla r3, r5, sl, r3
eed6: f3c3 2307 ubfx r3, r3, #8, #8
dsc->res.opa = (a0 * yr + (a1 * (255 - yr))) >> 8;
eeda: f1c6 02ff rsb r2, r6, #255 ; 0xff
eede: f3c1 2107 ubfx r1, r1, #8, #8
eee2: fb06 fe01 mul.w lr, r6, r1
eee6: fb02 e203 mla r2, r2, r3, lr
eeea: 1212 asrs r2, r2, #8
eeec: 75a2 strb r2, [r4, #22]
if(a0 <= LV_OPA_MIN && a1 <= LV_OPA_MIN) return false;
eeee: 2905 cmp r1, #5
eef0: f200 80dc bhi.w f0ac <_lv_img_buf_transform_anti_alias+0x2b0>
eef4: 2b05 cmp r3, #5
eef6: f240 817d bls.w f1f4 <_lv_img_buf_transform_anti_alias+0x3f8>
if(a0 <= LV_OPA_MIN) yr = LV_OPA_TRANSP;
eefa: 2600 movs r6, #0
eefc: e0d9 b.n f0b2 <_lv_img_buf_transform_anti_alias+0x2b6>
else if(xs_fract > 0x90) {
eefe: 2a90 cmp r2, #144 ; 0x90
ef00: dd0c ble.n ef1c <_lv_img_buf_transform_anti_alias+0x120>
if(dsc->tmp.xs_int + xn >= dsc->cfg.src_w) xn = 0;
ef02: f9b0 103c ldrsh.w r1, [r0, #60] ; 0x3c
ef06: 3101 adds r1, #1
ef08: f9b0 2004 ldrsh.w r2, [r0, #4]
ef0c: 4291 cmp r1, r2
ef0e: bfac ite ge
ef10: 2100 movge r1, #0
ef12: 2101 movlt r1, #1
xr = (0xFF - xs_fract) + 0x80;
ef14: f1c5 057f rsb r5, r5, #127 ; 0x7f
ef18: b2ed uxtb r5, r5
ef1a: e781 b.n ee20 <_lv_img_buf_transform_anti_alias+0x24>
xr = 0xFF;
ef1c: 25ff movs r5, #255 ; 0xff
xn = 0;
ef1e: 2100 movs r1, #0
ef20: e77e b.n ee20 <_lv_img_buf_transform_anti_alias+0x24>
else if(ys_fract > 0x90) {
ef22: 2b90 cmp r3, #144 ; 0x90
ef24: dd0f ble.n ef46 <_lv_img_buf_transform_anti_alias+0x14a>
if(dsc->tmp.ys_int + yn >= dsc->cfg.src_h) yn = 0;
ef26: f9b4 b03e ldrsh.w fp, [r4, #62] ; 0x3e
ef2a: f10b 0b01 add.w fp, fp, #1
ef2e: f9b4 2006 ldrsh.w r2, [r4, #6]
ef32: 4593 cmp fp, r2
ef34: bfac ite ge
ef36: f04f 0b00 movge.w fp, #0
ef3a: f04f 0b01 movlt.w fp, #1
yr = (0xFF - ys_fract) + 0x80;
ef3e: f1c6 067f rsb r6, r6, #127 ; 0x7f
ef42: b2f6 uxtb r6, r6
ef44: e776 b.n ee34 <_lv_img_buf_transform_anti_alias+0x38>
yr = 0xFF;
ef46: 26ff movs r6, #255 ; 0xff
yn = 0;
ef48: f04f 0b00 mov.w fp, #0
ef4c: e772 b.n ee34 <_lv_img_buf_transform_anti_alias+0x38>
c01 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int, dsc->cfg.color);
ef4e: f104 0318 add.w r3, r4, #24
ef52: 4618 mov r0, r3
ef54: b28b uxth r3, r1
ef56: 8fa1 ldrh r1, [r4, #60] ; 0x3c
ef58: 9302 str r3, [sp, #8]
ef5a: 4419 add r1, r3
ef5c: 8a23 ldrh r3, [r4, #16]
ef5e: f9b4 203e ldrsh.w r2, [r4, #62] ; 0x3e
ef62: b209 sxth r1, r1
ef64: 9001 str r0, [sp, #4]
ef66: f8df a294 ldr.w sl, [pc, #660] ; f1fc <_lv_img_buf_transform_anti_alias+0x400>
ef6a: 47d0 blx sl
ef6c: f8ad 001c strh.w r0, [sp, #28]
c10 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int, dsc->tmp.ys_int + yn, dsc->cfg.color);
ef70: fa1f f18b uxth.w r1, fp
ef74: 8fe2 ldrh r2, [r4, #62] ; 0x3e
ef76: 9103 str r1, [sp, #12]
ef78: 440a add r2, r1
ef7a: 8a23 ldrh r3, [r4, #16]
ef7c: b212 sxth r2, r2
ef7e: f9b4 103c ldrsh.w r1, [r4, #60] ; 0x3c
ef82: f8dd b004 ldr.w fp, [sp, #4]
ef86: 4658 mov r0, fp
ef88: 47d0 blx sl
ef8a: f8ad 0018 strh.w r0, [sp, #24]
c11 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int + yn, dsc->cfg.color);
ef8e: 8fe2 ldrh r2, [r4, #62] ; 0x3e
ef90: 9903 ldr r1, [sp, #12]
ef92: 440a add r2, r1
ef94: 8fa1 ldrh r1, [r4, #60] ; 0x3c
ef96: 9b02 ldr r3, [sp, #8]
ef98: 4419 add r1, r3
ef9a: 8a23 ldrh r3, [r4, #16]
ef9c: b212 sxth r2, r2
ef9e: b209 sxth r1, r1
efa0: 4658 mov r0, fp
efa2: 47d0 blx sl
efa4: f8ad 0014 strh.w r0, [sp, #20]
if(dsc->tmp.has_alpha) {
efa8: f894 3034 ldrb.w r3, [r4, #52] ; 0x34
efac: f013 0f02 tst.w r3, #2
efb0: d152 bne.n f058 <_lv_img_buf_transform_anti_alias+0x25c>
if(a11 <= LV_OPA_MIN) xr1 = LV_OPA_COVER;
}
else {
xr0 = xr;
xr1 = xr;
dsc->res.opa = LV_OPA_COVER;
efb2: 23ff movs r3, #255 ; 0xff
efb4: 75a3 strb r3, [r4, #22]
xr0 = xr;
efb6: 462b mov r3, r5
}
lv_color_t c0;
if(xr0 == LV_OPA_TRANSP) c0 = c01;
efb8: 2b00 cmp r3, #0
efba: f040 808b bne.w f0d4 <_lv_img_buf_transform_anti_alias+0x2d8>
efbe: f89d 901c ldrb.w r9, [sp, #28]
efc2: f009 091f and.w r9, r9, #31
efc6: f8bd 801c ldrh.w r8, [sp, #28]
efca: f3c8 1845 ubfx r8, r8, #5, #6
efce: f89d 701d ldrb.w r7, [sp, #29]
efd2: 08ff lsrs r7, r7, #3
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;
efd4: 2d00 cmp r5, #0
efd6: f040 80ac bne.w f132 <_lv_img_buf_transform_anti_alias+0x336>
efda: f89d 5014 ldrb.w r5, [sp, #20]
efde: f005 051f and.w r5, r5, #31
efe2: f8bd 3014 ldrh.w r3, [sp, #20]
efe6: f3c3 1345 ubfx r3, r3, #5, #6
efea: f89d 1015 ldrb.w r1, [sp, #21]
efee: 08c9 lsrs r1, r1, #3
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;
eff0: 2e00 cmp r6, #0
eff2: f000 80e3 beq.w f1bc <_lv_img_buf_transform_anti_alias+0x3c0>
else if(yr == LV_OPA_COVER) dsc->res.color = c0;
eff6: 2eff cmp r6, #255 ; 0xff
eff8: f000 80ee beq.w f1d8 <_lv_img_buf_transform_anti_alias+0x3dc>
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
effc: f1c6 02ff rsb r2, r6, #255 ; 0xff
LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix)));
f000: fb02 f505 mul.w r5, r2, r5
f004: fb06 5509 mla r5, r6, r9, r5
f008: eb05 2905 add.w r9, r5, r5, lsl #8
f00c: eb05 15c9 add.w r5, r5, r9, lsl #7
f010: 0ded lsrs r5, r5, #23
else dsc->res.color = lv_color_mix(c0, c1, yr);
f012: 7d20 ldrb r0, [r4, #20]
f014: f365 0004 bfi r0, r5, #0, #5
f018: 7520 strb r0, [r4, #20]
LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix)));
f01a: fb02 f303 mul.w r3, r2, r3
f01e: fb06 3808 mla r8, r6, r8, r3
f022: eb08 2308 add.w r3, r8, r8, lsl #8
f026: eb08 18c3 add.w r8, r8, r3, lsl #7
f02a: ea4f 58d8 mov.w r8, r8, lsr #23
f02e: 8aa3 ldrh r3, [r4, #20]
f030: f368 134a bfi r3, r8, #5, #6
f034: 82a3 strh r3, [r4, #20]
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
f036: fb02 f101 mul.w r1, r2, r1
f03a: fb06 1607 mla r6, r6, r7, r1
f03e: eb06 2706 add.w r7, r6, r6, lsl #8
f042: eb06 16c7 add.w r6, r6, r7, lsl #7
f046: 0df6 lsrs r6, r6, #23
f048: 0a1b lsrs r3, r3, #8
f04a: f366 03c7 bfi r3, r6, #3, #5
f04e: 7563 strb r3, [r4, #21]
return true;
f050: 2001 movs r0, #1
}
f052: b009 add sp, #36 ; 0x24
f054: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
a10 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int);
f058: 8fa1 ldrh r1, [r4, #60] ; 0x3c
f05a: 9b02 ldr r3, [sp, #8]
f05c: 4419 add r1, r3
f05e: f9b4 203e ldrsh.w r2, [r4, #62] ; 0x3e
f062: b209 sxth r1, r1
f064: f8dd a004 ldr.w sl, [sp, #4]
f068: 4650 mov r0, sl
f06a: 4b63 ldr r3, [pc, #396] ; (f1f8 <_lv_img_buf_transform_anti_alias+0x3fc>)
f06c: 4798 blx r3
f06e: 4683 mov fp, r0
a01 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int, dsc->tmp.ys_int + yn);
f070: 8fe2 ldrh r2, [r4, #62] ; 0x3e
f072: 9903 ldr r1, [sp, #12]
f074: 440a add r2, r1
f076: b212 sxth r2, r2
f078: f9b4 103c ldrsh.w r1, [r4, #60] ; 0x3c
f07c: f8cd a004 str.w sl, [sp, #4]
f080: 4650 mov r0, sl
f082: 4b5d ldr r3, [pc, #372] ; (f1f8 <_lv_img_buf_transform_anti_alias+0x3fc>)
f084: 4798 blx r3
f086: 4682 mov sl, r0
a11 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int + yn);
f088: 8fe2 ldrh r2, [r4, #62] ; 0x3e
f08a: 9903 ldr r1, [sp, #12]
f08c: 440a add r2, r1
f08e: 8fa1 ldrh r1, [r4, #60] ; 0x3c
f090: 9b02 ldr r3, [sp, #8]
f092: 4419 add r1, r3
f094: b212 sxth r2, r2
f096: b209 sxth r1, r1
f098: 9801 ldr r0, [sp, #4]
f09a: 4b57 ldr r3, [pc, #348] ; (f1f8 <_lv_img_buf_transform_anti_alias+0x3fc>)
f09c: 4798 blx r3
if(dsc->tmp.has_alpha) {
f09e: f894 3034 ldrb.w r3, [r4, #52] ; 0x34
f0a2: f013 0f02 tst.w r3, #2
f0a6: f47f af0b bne.w eec0 <_lv_img_buf_transform_anti_alias+0xc4>
f0aa: e782 b.n efb2 <_lv_img_buf_transform_anti_alias+0x1b6>
if(a1 <= LV_OPA_MIN) yr = LV_OPA_COVER;
f0ac: 2b05 cmp r3, #5
f0ae: bf98 it ls
f0b0: 26ff movls r6, #255 ; 0xff
if(a00 <= LV_OPA_MIN) xr0 = LV_OPA_TRANSP;
f0b2: 9b00 ldr r3, [sp, #0]
f0b4: 2b05 cmp r3, #5
f0b6: bf8c ite hi
f0b8: 462b movhi r3, r5
f0ba: 2300 movls r3, #0
if(a10 <= LV_OPA_MIN) xr0 = LV_OPA_COVER;
f0bc: f1bb 0f05 cmp.w fp, #5
f0c0: bf98 it ls
f0c2: 23ff movls r3, #255 ; 0xff
if(a01 <= LV_OPA_MIN) xr1 = LV_OPA_TRANSP;
f0c4: f1ba 0f05 cmp.w sl, #5
f0c8: bf98 it ls
f0ca: 2500 movls r5, #0
if(a11 <= LV_OPA_MIN) xr1 = LV_OPA_COVER;
f0cc: 2805 cmp r0, #5
f0ce: bf98 it ls
f0d0: 25ff movls r5, #255 ; 0xff
f0d2: e771 b.n efb8 <_lv_img_buf_transform_anti_alias+0x1bc>
else if(xr0 == LV_OPA_COVER) c0 = c00;
f0d4: 2bff cmp r3, #255 ; 0xff
f0d6: f43f af7d beq.w efd4 <_lv_img_buf_transform_anti_alias+0x1d8>
f0da: f1c3 01ff rsb r1, r3, #255 ; 0xff
f0de: f89d 201d ldrb.w r2, [sp, #29]
f0e2: 08d2 lsrs r2, r2, #3
f0e4: fb03 f707 mul.w r7, r3, r7
f0e8: fb01 7702 mla r7, r1, r2, r7
f0ec: eb07 2207 add.w r2, r7, r7, lsl #8
f0f0: eb07 17c2 add.w r7, r7, r2, lsl #7
f0f4: f3c7 57c4 ubfx r7, r7, #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)));
f0f8: f8bd 201c ldrh.w r2, [sp, #28]
f0fc: f3c2 1245 ubfx r2, r2, #5, #6
f100: fb03 f808 mul.w r8, r3, r8
f104: fb01 8802 mla r8, r1, r2, r8
f108: eb08 2208 add.w r2, r8, r8, lsl #8
f10c: eb08 18c2 add.w r8, r8, r2, lsl #7
f110: f3c8 58c5 ubfx r8, r8, #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)));
f114: f89d 201c ldrb.w r2, [sp, #28]
f118: f002 021f and.w r2, r2, #31
f11c: fb03 f909 mul.w r9, r3, r9
f120: fb01 9902 mla r9, r1, r2, r9
f124: eb09 2309 add.w r3, r9, r9, lsl #8
f128: eb09 19c3 add.w r9, r9, r3, lsl #7
f12c: f3c9 59c4 ubfx r9, r9, #23, #5
f130: e750 b.n efd4 <_lv_img_buf_transform_anti_alias+0x1d8>
else if(xr1 == LV_OPA_COVER) c1 = c10;
f132: 2dff cmp r5, #255 ; 0xff
f134: d036 beq.n f1a4 <_lv_img_buf_transform_anti_alias+0x3a8>
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
f136: f1c5 00ff rsb r0, r5, #255 ; 0xff
f13a: f89d 1019 ldrb.w r1, [sp, #25]
f13e: 08c9 lsrs r1, r1, #3
f140: f89d 3015 ldrb.w r3, [sp, #21]
f144: 08db lsrs r3, r3, #3
f146: fb00 f303 mul.w r3, r0, r3
f14a: fb05 3101 mla r1, r5, r1, r3
f14e: eb01 2301 add.w r3, r1, r1, lsl #8
f152: eb01 11c3 add.w r1, r1, r3, lsl #7
f156: 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)));
f15a: f8bd 3018 ldrh.w r3, [sp, #24]
f15e: f3c3 1345 ubfx r3, r3, #5, #6
f162: f8bd 2014 ldrh.w r2, [sp, #20]
f166: f3c2 1245 ubfx r2, r2, #5, #6
f16a: fb00 f202 mul.w r2, r0, r2
f16e: fb05 2303 mla r3, r5, r3, r2
f172: eb03 2203 add.w r2, r3, r3, lsl #8
f176: eb03 13c2 add.w r3, r3, r2, lsl #7
f17a: f3c3 53c5 ubfx r3, r3, #23, #6
LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix)));
f17e: f89d 2018 ldrb.w r2, [sp, #24]
f182: f002 021f and.w r2, r2, #31
f186: f89d e014 ldrb.w lr, [sp, #20]
f18a: f00e 0e1f and.w lr, lr, #31
f18e: fb00 f00e mul.w r0, r0, lr
f192: fb05 0502 mla r5, r5, r2, r0
f196: eb05 2205 add.w r2, r5, r5, lsl #8
f19a: eb05 15c2 add.w r5, r5, r2, lsl #7
f19e: f3c5 55c4 ubfx r5, r5, #23, #5
f1a2: e725 b.n eff0 <_lv_img_buf_transform_anti_alias+0x1f4>
f1a4: f89d 5018 ldrb.w r5, [sp, #24]
f1a8: f005 051f and.w r5, r5, #31
f1ac: f8bd 3018 ldrh.w r3, [sp, #24]
f1b0: f3c3 1345 ubfx r3, r3, #5, #6
f1b4: f89d 1019 ldrb.w r1, [sp, #25]
f1b8: 08c9 lsrs r1, r1, #3
f1ba: e719 b.n eff0 <_lv_img_buf_transform_anti_alias+0x1f4>
if(yr == LV_OPA_TRANSP) dsc->res.color = c1;
f1bc: 7d22 ldrb r2, [r4, #20]
f1be: f365 0204 bfi r2, r5, #0, #5
f1c2: 7522 strb r2, [r4, #20]
f1c4: 8aa2 ldrh r2, [r4, #20]
f1c6: f363 124a bfi r2, r3, #5, #6
f1ca: 82a2 strh r2, [r4, #20]
f1cc: 0a12 lsrs r2, r2, #8
f1ce: f361 02c7 bfi r2, r1, #3, #5
f1d2: 7562 strb r2, [r4, #21]
return true;
f1d4: 2001 movs r0, #1
f1d6: e73c b.n f052 <_lv_img_buf_transform_anti_alias+0x256>
else if(yr == LV_OPA_COVER) dsc->res.color = c0;
f1d8: 7d23 ldrb r3, [r4, #20]
f1da: f369 0304 bfi r3, r9, #0, #5
f1de: 7523 strb r3, [r4, #20]
f1e0: 8aa3 ldrh r3, [r4, #20]
f1e2: f368 134a bfi r3, r8, #5, #6
f1e6: 82a3 strh r3, [r4, #20]
f1e8: 0a1b lsrs r3, r3, #8
f1ea: f367 03c7 bfi r3, r7, #3, #5
f1ee: 7563 strb r3, [r4, #21]
return true;
f1f0: 2001 movs r0, #1
f1f2: e72e b.n f052 <_lv_img_buf_transform_anti_alias+0x256>
if(a0 <= LV_OPA_MIN && a1 <= LV_OPA_MIN) return false;
f1f4: 2000 movs r0, #0
f1f6: e72c b.n f052 <_lv_img_buf_transform_anti_alias+0x256>
f1f8: 0000ea49 .word 0x0000ea49
f1fc: 0000e919 .word 0x0000e919
0000f200 <_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)
{
f200: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
f204: b083 sub sp, #12
f206: 4688 mov r8, r1
if(entry_cnt == 0) {
f208: 4b5d ldr r3, [pc, #372] ; (f380 <_lv_img_cache_open+0x180>)
f20a: 8819 ldrh r1, [r3, #0]
f20c: b1e1 cbz r1, f248 <_lv_img_cache_open+0x48>
f20e: 4607 mov r7, r0
LV_LOG_WARN("lv_img_cache_open: the cache size is 0");
return NULL;
}
lv_img_cache_entry_t * cache = LV_GC_ROOT(_lv_img_cache_array);
f210: 4b5c ldr r3, [pc, #368] ; (f384 <_lv_img_cache_open+0x184>)
f212: 681e ldr r6, [r3, #0]
f214: 4633 mov r3, r6
f216: 3901 subs r1, #1
f218: b289 uxth r1, r1
f21a: 3101 adds r1, #1
f21c: eb01 01c1 add.w r1, r1, r1, lsl #3
f220: eb06 0181 add.w r1, r6, r1, lsl #2
/*Decrement all lifes. Make the entries older*/
uint16_t i;
for(i = 0; i < entry_cnt; i++) {
if(cache[i].life > INT32_MIN + LV_IMG_CACHE_AGING) {
f224: 4858 ldr r0, [pc, #352] ; (f388 <_lv_img_cache_open+0x188>)
f226: 6a1a ldr r2, [r3, #32]
f228: 4282 cmp r2, r0
cache[i].life -= LV_IMG_CACHE_AGING;
f22a: bfa4 itt ge
f22c: f102 32ff addge.w r2, r2, #4294967295
f230: 621a strge r2, [r3, #32]
f232: 3324 adds r3, #36 ; 0x24
for(i = 0; i < entry_cnt; i++) {
f234: 428b cmp r3, r1
f236: d1f6 bne.n f226 <_lv_img_cache_open+0x26>
f238: 2400 movs r4, #0
/*Is the image cached?*/
lv_img_cache_entry_t * cached_src = NULL;
for(i = 0; i < entry_cnt; i++) {
bool match = false;
lv_img_src_t src_type = lv_img_src_get_type(cache[i].dec_dsc.src);
f23a: f8df 9180 ldr.w r9, [pc, #384] ; f3bc <_lv_img_cache_open+0x1bc>
if(src_type == LV_IMG_SRC_VARIABLE) {
if(cache[i].dec_dsc.src == src && cache[i].dec_dsc.color.full == color.full) match = true;
}
else if(src_type == LV_IMG_SRC_FILE) {
if(strcmp(cache[i].dec_dsc.src, src) == 0) match = true;
f23e: f8df b180 ldr.w fp, [pc, #384] ; f3c0 <_lv_img_cache_open+0x1c0>
for(i = 0; i < entry_cnt; i++) {
f242: f8df a13c ldr.w sl, [pc, #316] ; f380 <_lv_img_cache_open+0x180>
f246: e011 b.n f26c <_lv_img_cache_open+0x6c>
LV_LOG_WARN("lv_img_cache_open: the cache size is 0");
f248: 4b50 ldr r3, [pc, #320] ; (f38c <_lv_img_cache_open+0x18c>)
f24a: 9300 str r3, [sp, #0]
f24c: 4b50 ldr r3, [pc, #320] ; (f390 <_lv_img_cache_open+0x190>)
f24e: 2244 movs r2, #68 ; 0x44
f250: 4950 ldr r1, [pc, #320] ; (f394 <_lv_img_cache_open+0x194>)
f252: 2002 movs r0, #2
f254: 4c50 ldr r4, [pc, #320] ; (f398 <_lv_img_cache_open+0x198>)
f256: 47a0 blx r4
return NULL;
f258: 2500 movs r5, #0
f25a: e025 b.n f2a8 <_lv_img_cache_open+0xa8>
else if(src_type == LV_IMG_SRC_FILE) {
f25c: 2801 cmp r0, #1
f25e: d027 beq.n f2b0 <_lv_img_cache_open+0xb0>
for(i = 0; i < entry_cnt; i++) {
f260: 3401 adds r4, #1
f262: b2a4 uxth r4, r4
f264: f8ba 3000 ldrh.w r3, [sl]
f268: 42a3 cmp r3, r4
f26a: d92a bls.n f2c2 <_lv_img_cache_open+0xc2>
lv_img_src_t src_type = lv_img_src_get_type(cache[i].dec_dsc.src);
f26c: eb04 05c4 add.w r5, r4, r4, lsl #3
f270: eb06 0585 add.w r5, r6, r5, lsl #2
f274: 6868 ldr r0, [r5, #4]
f276: 47c8 blx r9
if(src_type == LV_IMG_SRC_VARIABLE) {
f278: 2800 cmp r0, #0
f27a: d1ef bne.n f25c <_lv_img_cache_open+0x5c>
if(cache[i].dec_dsc.src == src && cache[i].dec_dsc.color.full == color.full) match = true;
f27c: 686b ldr r3, [r5, #4]
f27e: 42bb cmp r3, r7
f280: d1ee bne.n f260 <_lv_img_cache_open+0x60>
f282: 8928 ldrh r0, [r5, #8]
f284: fa1f f388 uxth.w r3, r8
f288: 4298 cmp r0, r3
f28a: bf14 ite ne
f28c: 2000 movne r0, #0
f28e: 2001 moveq r0, #1
}
if(match) {
f290: 2800 cmp r0, #0
f292: d0e5 beq.n f260 <_lv_img_cache_open+0x60>
/* If opened increment its life.
* Image difficult to open should live longer to keep avoid frequent their recaching.
* Therefore increase `life` with `time_to_open`*/
cached_src = &cache[i];
cached_src->life += cached_src->dec_dsc.time_to_open * LV_IMG_CACHE_LIFE_GAIN;
f294: 6a2b ldr r3, [r5, #32]
f296: 696a ldr r2, [r5, #20]
f298: 4413 add r3, r2
if(cached_src->life > LV_IMG_CACHE_LIFE_LIMIT) cached_src->life = LV_IMG_CACHE_LIFE_LIMIT;
f29a: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8
f29e: dd0e ble.n f2be <_lv_img_cache_open+0xbe>
f2a0: f44f 737a mov.w r3, #1000 ; 0x3e8
f2a4: 622b str r3, [r5, #32]
break;
}
}
/*The image is not cached then cache it now*/
if(cached_src == NULL) {
f2a6: b165 cbz r5, f2c2 <_lv_img_cache_open+0xc2>
if(cached_src->dec_dsc.time_to_open == 0) cached_src->dec_dsc.time_to_open = 1;
}
return cached_src;
}
f2a8: 4628 mov r0, r5
f2aa: b003 add sp, #12
f2ac: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
if(strcmp(cache[i].dec_dsc.src, src) == 0) match = true;
f2b0: 4639 mov r1, r7
f2b2: 6868 ldr r0, [r5, #4]
f2b4: 47d8 blx fp
f2b6: fab0 f080 clz r0, r0
f2ba: 0940 lsrs r0, r0, #5
f2bc: e7e8 b.n f290 <_lv_img_cache_open+0x90>
cached_src->life += cached_src->dec_dsc.time_to_open * LV_IMG_CACHE_LIFE_GAIN;
f2be: 622b str r3, [r5, #32]
f2c0: e7f1 b.n f2a6 <_lv_img_cache_open+0xa6>
for(i = 1; i < entry_cnt; i++) {
f2c2: 4b2f ldr r3, [pc, #188] ; (f380 <_lv_img_cache_open+0x180>)
f2c4: 881a ldrh r2, [r3, #0]
f2c6: 2a01 cmp r2, #1
f2c8: d937 bls.n f33a <_lv_img_cache_open+0x13a>
f2ca: f106 0324 add.w r3, r6, #36 ; 0x24
f2ce: 3a02 subs r2, #2
f2d0: b292 uxth r2, r2
f2d2: eb02 02c2 add.w r2, r2, r2, lsl #3
f2d6: eb06 0282 add.w r2, r6, r2, lsl #2
f2da: 3248 adds r2, #72 ; 0x48
f2dc: 4635 mov r5, r6
if(cache[i].life < cached_src->life) {
f2de: 6a18 ldr r0, [r3, #32]
f2e0: 6a29 ldr r1, [r5, #32]
cached_src = &cache[i];
f2e2: 4288 cmp r0, r1
f2e4: bfb8 it lt
f2e6: 461d movlt r5, r3
f2e8: 3324 adds r3, #36 ; 0x24
for(i = 1; i < entry_cnt; i++) {
f2ea: 4293 cmp r3, r2
f2ec: d1f7 bne.n f2de <_lv_img_cache_open+0xde>
if(cached_src->dec_dsc.src) {
f2ee: 686b ldr r3, [r5, #4]
f2f0: b32b cbz r3, f33e <_lv_img_cache_open+0x13e>
lv_img_decoder_close(&cached_src->dec_dsc);
f2f2: 4628 mov r0, r5
f2f4: 4b29 ldr r3, [pc, #164] ; (f39c <_lv_img_cache_open+0x19c>)
f2f6: 4798 blx r3
LV_LOG_INFO("image draw: cache miss, close and reuse an entry");
f2f8: 4b29 ldr r3, [pc, #164] ; (f3a0 <_lv_img_cache_open+0x1a0>)
f2fa: 9300 str r3, [sp, #0]
f2fc: 4b24 ldr r3, [pc, #144] ; (f390 <_lv_img_cache_open+0x190>)
f2fe: 2277 movs r2, #119 ; 0x77
f300: 4924 ldr r1, [pc, #144] ; (f394 <_lv_img_cache_open+0x194>)
f302: 2001 movs r0, #1
f304: 4c24 ldr r4, [pc, #144] ; (f398 <_lv_img_cache_open+0x198>)
f306: 47a0 blx r4
t_start = lv_tick_get();
f308: 4b26 ldr r3, [pc, #152] ; (f3a4 <_lv_img_cache_open+0x1a4>)
f30a: 4798 blx r3
f30c: 4604 mov r4, r0
cached_src->dec_dsc.time_to_open = 0;
f30e: 2300 movs r3, #0
f310: 616b str r3, [r5, #20]
lv_res_t open_res = lv_img_decoder_open(&cached_src->dec_dsc, src, color);
f312: 4642 mov r2, r8
f314: 4639 mov r1, r7
f316: 4628 mov r0, r5
f318: 4b23 ldr r3, [pc, #140] ; (f3a8 <_lv_img_cache_open+0x1a8>)
f31a: 4798 blx r3
if(open_res == LV_RES_INV) {
f31c: b1c0 cbz r0, f350 <_lv_img_cache_open+0x150>
cached_src->life = 0;
f31e: 2300 movs r3, #0
f320: 622b str r3, [r5, #32]
if(cached_src->dec_dsc.time_to_open == 0) {
f322: 696b ldr r3, [r5, #20]
f324: 2b00 cmp r3, #0
f326: d1bf bne.n f2a8 <_lv_img_cache_open+0xa8>
cached_src->dec_dsc.time_to_open = lv_tick_elaps(t_start);
f328: 4620 mov r0, r4
f32a: 4b20 ldr r3, [pc, #128] ; (f3ac <_lv_img_cache_open+0x1ac>)
f32c: 4798 blx r3
f32e: 6168 str r0, [r5, #20]
if(cached_src->dec_dsc.time_to_open == 0) cached_src->dec_dsc.time_to_open = 1;
f330: 2800 cmp r0, #0
f332: d1b9 bne.n f2a8 <_lv_img_cache_open+0xa8>
f334: 2301 movs r3, #1
f336: 616b str r3, [r5, #20]
f338: e7b6 b.n f2a8 <_lv_img_cache_open+0xa8>
for(i = 1; i < entry_cnt; i++) {
f33a: 4635 mov r5, r6
f33c: e7d7 b.n f2ee <_lv_img_cache_open+0xee>
LV_LOG_INFO("image draw: cache miss, cached to an empty entry");
f33e: 4b1c ldr r3, [pc, #112] ; (f3b0 <_lv_img_cache_open+0x1b0>)
f340: 9300 str r3, [sp, #0]
f342: 4b13 ldr r3, [pc, #76] ; (f390 <_lv_img_cache_open+0x190>)
f344: 227a movs r2, #122 ; 0x7a
f346: 4913 ldr r1, [pc, #76] ; (f394 <_lv_img_cache_open+0x194>)
f348: 2001 movs r0, #1
f34a: 4c13 ldr r4, [pc, #76] ; (f398 <_lv_img_cache_open+0x198>)
f34c: 47a0 blx r4
f34e: e7db b.n f308 <_lv_img_cache_open+0x108>
LV_LOG_WARN("Image draw cannot open the image resource");
f350: 4b18 ldr r3, [pc, #96] ; (f3b4 <_lv_img_cache_open+0x1b4>)
f352: 9300 str r3, [sp, #0]
f354: 4b0e ldr r3, [pc, #56] ; (f390 <_lv_img_cache_open+0x190>)
f356: 2283 movs r2, #131 ; 0x83
f358: 490e ldr r1, [pc, #56] ; (f394 <_lv_img_cache_open+0x194>)
f35a: 2002 movs r0, #2
f35c: 4c0e ldr r4, [pc, #56] ; (f398 <_lv_img_cache_open+0x198>)
f35e: 47a0 blx r4
lv_img_decoder_close(&cached_src->dec_dsc);
f360: 4628 mov r0, r5
f362: 4b0e ldr r3, [pc, #56] ; (f39c <_lv_img_cache_open+0x19c>)
f364: 4798 blx r3
_lv_memset_00(&cached_src->dec_dsc, sizeof(lv_img_decoder_dsc_t));
f366: 2120 movs r1, #32
f368: 4628 mov r0, r5
f36a: 4c13 ldr r4, [pc, #76] ; (f3b8 <_lv_img_cache_open+0x1b8>)
f36c: 47a0 blx r4
_lv_memset_00(cached_src, sizeof(lv_img_cache_entry_t));
f36e: 2124 movs r1, #36 ; 0x24
f370: 4628 mov r0, r5
f372: 47a0 blx r4
cached_src->life = INT32_MIN; /*Make the empty entry very "weak" to force its use */
f374: f04f 4300 mov.w r3, #2147483648 ; 0x80000000
f378: 622b str r3, [r5, #32]
return NULL;
f37a: 2500 movs r5, #0
f37c: e794 b.n f2a8 <_lv_img_cache_open+0xa8>
f37e: bf00 nop
f380: 20002b58 .word 0x20002b58
f384: 20006d58 .word 0x20006d58
f388: 80000002 .word 0x80000002
f38c: 00025190 .word 0x00025190
f390: 00025134 .word 0x00025134
f394: 00025160 .word 0x00025160
f398: 0001225d .word 0x0001225d
f39c: 0000ff35 .word 0x0000ff35
f3a0: 000251b8 .word 0x000251b8
f3a4: 00011059 .word 0x00011059
f3a8: 0000fe49 .word 0x0000fe49
f3ac: 00011071 .word 0x00011071
f3b0: 000251ec .word 0x000251ec
f3b4: 00025220 .word 0x00025220
f3b8: 00012b37 .word 0x00012b37
f3bc: 00009969 .word 0x00009969
f3c0: 0001b4fb .word 0x0001b4fb
0000f3c4 <lv_img_cache_invalidate_src>:
* Invalidate an image source in the cache.
* Useful if the image source is updated therefore it needs to be cached again.
* @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)
{
f3c4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
lv_img_cache_entry_t * cache = LV_GC_ROOT(_lv_img_cache_array);
f3c8: 4b14 ldr r3, [pc, #80] ; (f41c <lv_img_cache_invalidate_src+0x58>)
f3ca: 681f ldr r7, [r3, #0]
uint16_t i;
for(i = 0; i < entry_cnt; i++) {
f3cc: 4b14 ldr r3, [pc, #80] ; (f420 <lv_img_cache_invalidate_src+0x5c>)
f3ce: 881b ldrh r3, [r3, #0]
f3d0: b30b cbz r3, f416 <lv_img_cache_invalidate_src+0x52>
f3d2: 4606 mov r6, r0
f3d4: 2400 movs r4, #0
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));
f3d6: f8df 904c ldr.w r9, [pc, #76] ; f424 <lv_img_cache_invalidate_src+0x60>
lv_img_decoder_close(&cache[i].dec_dsc);
f3da: f8df a04c ldr.w sl, [pc, #76] ; f428 <lv_img_cache_invalidate_src+0x64>
for(i = 0; i < entry_cnt; i++) {
f3de: f8df 8040 ldr.w r8, [pc, #64] ; f420 <lv_img_cache_invalidate_src+0x5c>
f3e2: e00e b.n f402 <lv_img_cache_invalidate_src+0x3e>
if(cache[i].dec_dsc.src != NULL) {
f3e4: b10b cbz r3, f3ea <lv_img_cache_invalidate_src+0x26>
lv_img_decoder_close(&cache[i].dec_dsc);
f3e6: 4628 mov r0, r5
f3e8: 47d0 blx sl
_lv_memset_00(&cache[i].dec_dsc, sizeof(lv_img_decoder_dsc_t));
f3ea: 2120 movs r1, #32
f3ec: 4628 mov r0, r5
f3ee: 47c8 blx r9
_lv_memset_00(&cache[i], sizeof(lv_img_cache_entry_t));
f3f0: 2124 movs r1, #36 ; 0x24
f3f2: 4628 mov r0, r5
f3f4: 47c8 blx r9
for(i = 0; i < entry_cnt; i++) {
f3f6: 3401 adds r4, #1
f3f8: b2a4 uxth r4, r4
f3fa: f8b8 3000 ldrh.w r3, [r8]
f3fe: 42a3 cmp r3, r4
f400: d909 bls.n f416 <lv_img_cache_invalidate_src+0x52>
if(cache[i].dec_dsc.src == src || src == NULL) {
f402: eb04 05c4 add.w r5, r4, r4, lsl #3
f406: eb07 0585 add.w r5, r7, r5, lsl #2
f40a: 686b ldr r3, [r5, #4]
f40c: 42b3 cmp r3, r6
f40e: d0e9 beq.n f3e4 <lv_img_cache_invalidate_src+0x20>
f410: 2e00 cmp r6, #0
f412: d1f0 bne.n f3f6 <lv_img_cache_invalidate_src+0x32>
f414: e7e6 b.n f3e4 <lv_img_cache_invalidate_src+0x20>
f416: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
f41a: bf00 nop
f41c: 20006d58 .word 0x20006d58
f420: 20002b58 .word 0x20002b58
f424: 00012b37 .word 0x00012b37
f428: 0000ff35 .word 0x0000ff35
0000f42c <lv_img_cache_set_size>:
{
f42c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
f430: b082 sub sp, #8
f432: 4604 mov r4, r0
if(LV_GC_ROOT(_lv_img_cache_array) != NULL) {
f434: 4b21 ldr r3, [pc, #132] ; (f4bc <lv_img_cache_set_size+0x90>)
f436: 681b ldr r3, [r3, #0]
f438: b133 cbz r3, f448 <lv_img_cache_set_size+0x1c>
lv_img_cache_invalidate_src(NULL);
f43a: 2000 movs r0, #0
f43c: 4b20 ldr r3, [pc, #128] ; (f4c0 <lv_img_cache_set_size+0x94>)
f43e: 4798 blx r3
lv_mem_free(LV_GC_ROOT(_lv_img_cache_array));
f440: 4b1e ldr r3, [pc, #120] ; (f4bc <lv_img_cache_set_size+0x90>)
f442: 6818 ldr r0, [r3, #0]
f444: 4b1f ldr r3, [pc, #124] ; (f4c4 <lv_img_cache_set_size+0x98>)
f446: 4798 blx r3
LV_GC_ROOT(_lv_img_cache_array) = lv_mem_alloc(sizeof(lv_img_cache_entry_t) * new_entry_cnt);
f448: eb04 00c4 add.w r0, r4, r4, lsl #3
f44c: 0080 lsls r0, r0, #2
f44e: 4b1e ldr r3, [pc, #120] ; (f4c8 <lv_img_cache_set_size+0x9c>)
f450: 4798 blx r3
f452: 4b1a ldr r3, [pc, #104] ; (f4bc <lv_img_cache_set_size+0x90>)
f454: 6018 str r0, [r3, #0]
LV_ASSERT_MEM(LV_GC_ROOT(_lv_img_cache_array));
f456: 4b1d ldr r3, [pc, #116] ; (f4cc <lv_img_cache_set_size+0xa0>)
f458: 4798 blx r3
f45a: b1e8 cbz r0, f498 <lv_img_cache_set_size+0x6c>
if(LV_GC_ROOT(_lv_img_cache_array) == NULL) {
f45c: 4b17 ldr r3, [pc, #92] ; (f4bc <lv_img_cache_set_size+0x90>)
f45e: 681b ldr r3, [r3, #0]
f460: b343 cbz r3, f4b4 <lv_img_cache_set_size+0x88>
entry_cnt = new_entry_cnt;
f462: 4b1b ldr r3, [pc, #108] ; (f4d0 <lv_img_cache_set_size+0xa4>)
f464: 801c strh r4, [r3, #0]
for(i = 0; i < entry_cnt; i++) {
f466: b1a4 cbz r4, f492 <lv_img_cache_set_size+0x66>
f468: 2400 movs r4, #0
_lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i].dec_dsc, sizeof(lv_img_decoder_dsc_t));
f46a: 4f14 ldr r7, [pc, #80] ; (f4bc <lv_img_cache_set_size+0x90>)
f46c: 4e19 ldr r6, [pc, #100] ; (f4d4 <lv_img_cache_set_size+0xa8>)
for(i = 0; i < entry_cnt; i++) {
f46e: 4698 mov r8, r3
_lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i].dec_dsc, sizeof(lv_img_decoder_dsc_t));
f470: eb04 05c4 add.w r5, r4, r4, lsl #3
f474: 00ad lsls r5, r5, #2
f476: 6838 ldr r0, [r7, #0]
f478: 2120 movs r1, #32
f47a: 4428 add r0, r5
f47c: 47b0 blx r6
_lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i], sizeof(lv_img_cache_entry_t));
f47e: 6838 ldr r0, [r7, #0]
f480: 2124 movs r1, #36 ; 0x24
f482: 4428 add r0, r5
f484: 47b0 blx r6
for(i = 0; i < entry_cnt; i++) {
f486: 3401 adds r4, #1
f488: b2a4 uxth r4, r4
f48a: f8b8 3000 ldrh.w r3, [r8]
f48e: 42a3 cmp r3, r4
f490: d8ee bhi.n f470 <lv_img_cache_set_size+0x44>
}
f492: b002 add sp, #8
f494: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
LV_ASSERT_MEM(LV_GC_ROOT(_lv_img_cache_array));
f498: 4b0f ldr r3, [pc, #60] ; (f4d8 <lv_img_cache_set_size+0xac>)
f49a: 9300 str r3, [sp, #0]
f49c: 22a8 movs r2, #168 ; 0xa8
f49e: 490f ldr r1, [pc, #60] ; (f4dc <lv_img_cache_set_size+0xb0>)
f4a0: 2003 movs r0, #3
f4a2: 4c0f ldr r4, [pc, #60] ; (f4e0 <lv_img_cache_set_size+0xb4>)
f4a4: 47a0 blx r4
f4a6: 4b05 ldr r3, [pc, #20] ; (f4bc <lv_img_cache_set_size+0x90>)
f4a8: 681a ldr r2, [r3, #0]
f4aa: 2300 movs r3, #0
f4ac: 480d ldr r0, [pc, #52] ; (f4e4 <lv_img_cache_set_size+0xb8>)
f4ae: 490e ldr r1, [pc, #56] ; (f4e8 <lv_img_cache_set_size+0xbc>)
f4b0: 4788 blx r1
f4b2: e7fe b.n f4b2 <lv_img_cache_set_size+0x86>
entry_cnt = 0;
f4b4: 2200 movs r2, #0
f4b6: 4b06 ldr r3, [pc, #24] ; (f4d0 <lv_img_cache_set_size+0xa4>)
f4b8: 801a strh r2, [r3, #0]
return;
f4ba: e7ea b.n f492 <lv_img_cache_set_size+0x66>
f4bc: 20006d58 .word 0x20006d58
f4c0: 0000f3c5 .word 0x0000f3c5
f4c4: 000124c5 .word 0x000124c5
f4c8: 000123dd .word 0x000123dd
f4cc: 000022b1 .word 0x000022b1
f4d0: 20002b58 .word 0x20002b58
f4d4: 00012b37 .word 0x00012b37
f4d8: 00025148 .word 0x00025148
f4dc: 00025160 .word 0x00025160
f4e0: 0001225d .word 0x0001225d
f4e4: 00023fd8 .word 0x00023fd8
f4e8: 000022b9 .word 0x000022b9
0000f4ec <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)
{
f4ec: b530 push {r4, r5, lr}
f4ee: b087 sub sp, #28
f4f0: 460c mov r4, r1
f4f2: 4615 mov r5, r2
(void)decoder; /*Unused*/
lv_img_src_t src_type = lv_img_src_get_type(src);
f4f4: 4608 mov r0, r1
f4f6: 4b33 ldr r3, [pc, #204] ; (f5c4 <lv_img_decoder_built_in_info+0xd8>)
f4f8: 4798 blx r3
if(src_type == LV_IMG_SRC_VARIABLE) {
f4fa: b9d8 cbnz r0, f534 <lv_img_decoder_built_in_info+0x48>
lv_img_cf_t cf = ((lv_img_dsc_t *)src)->header.cf;
f4fc: 7823 ldrb r3, [r4, #0]
f4fe: f3c3 0304 ubfx r3, r3, #0, #5
if(cf < CF_BUILT_IN_FIRST || cf > CF_BUILT_IN_LAST) return LV_RES_INV;
f502: 3b04 subs r3, #4
f504: b2db uxtb r3, r3
f506: 2b0a cmp r3, #10
f508: d859 bhi.n f5be <lv_img_decoder_built_in_info+0xd2>
header->w = ((lv_img_dsc_t *)src)->header.w;
f50a: 6823 ldr r3, [r4, #0]
f50c: f3c3 238a ubfx r3, r3, #10, #11
f510: 682a ldr r2, [r5, #0]
f512: f363 2294 bfi r2, r3, #10, #11
f516: 602a str r2, [r5, #0]
header->h = ((lv_img_dsc_t *)src)->header.h;
f518: 8863 ldrh r3, [r4, #2]
f51a: f3c3 134a ubfx r3, r3, #5, #11
f51e: 886a ldrh r2, [r5, #2]
f520: f363 124f bfi r2, r3, #5, #11
f524: 806a strh r2, [r5, #2]
header->cf = ((lv_img_dsc_t *)src)->header.cf;
f526: 7822 ldrb r2, [r4, #0]
f528: 782b ldrb r3, [r5, #0]
f52a: f362 0304 bfi r3, r2, #0, #5
f52e: 702b strb r3, [r5, #0]
}
else {
LV_LOG_WARN("Image get info found unknown src type");
return LV_RES_INV;
}
return LV_RES_OK;
f530: 2001 movs r0, #1
f532: e00d b.n f550 <lv_img_decoder_built_in_info+0x64>
else if(src_type == LV_IMG_SRC_FILE) {
f534: 2801 cmp r0, #1
f536: d00d beq.n f554 <lv_img_decoder_built_in_info+0x68>
else if(src_type == LV_IMG_SRC_SYMBOL) {
f538: 2802 cmp r0, #2
f53a: d032 beq.n f5a2 <lv_img_decoder_built_in_info+0xb6>
LV_LOG_WARN("Image get info found unknown src type");
f53c: 4b22 ldr r3, [pc, #136] ; (f5c8 <lv_img_decoder_built_in_info+0xdc>)
f53e: 9300 str r3, [sp, #0]
f540: 4b22 ldr r3, [pc, #136] ; (f5cc <lv_img_decoder_built_in_info+0xe0>)
f542: f44f 729a mov.w r2, #308 ; 0x134
f546: 4922 ldr r1, [pc, #136] ; (f5d0 <lv_img_decoder_built_in_info+0xe4>)
f548: 2002 movs r0, #2
f54a: 4c22 ldr r4, [pc, #136] ; (f5d4 <lv_img_decoder_built_in_info+0xe8>)
f54c: 47a0 blx r4
return LV_RES_INV;
f54e: 2000 movs r0, #0
}
f550: b007 add sp, #28
f552: bd30 pop {r4, r5, pc}
res = lv_fs_open(&file, src, LV_FS_MODE_RD);
f554: 2202 movs r2, #2
f556: 4621 mov r1, r4
f558: a804 add r0, sp, #16
f55a: 4b1f ldr r3, [pc, #124] ; (f5d8 <lv_img_decoder_built_in_info+0xec>)
f55c: 4798 blx r3
if(res == LV_FS_RES_OK) {
f55e: b138 cbz r0, f570 <lv_img_decoder_built_in_info+0x84>
if(header->cf < CF_BUILT_IN_FIRST || header->cf > CF_BUILT_IN_LAST) return LV_RES_INV;
f560: 782b ldrb r3, [r5, #0]
f562: 331c adds r3, #28
f564: f003 031f and.w r3, r3, #31
f568: 2b0a cmp r3, #10
f56a: d818 bhi.n f59e <lv_img_decoder_built_in_info+0xb2>
return LV_RES_OK;
f56c: 2001 movs r0, #1
f56e: e7ef b.n f550 <lv_img_decoder_built_in_info+0x64>
res = lv_fs_read(&file, header, sizeof(lv_img_header_t), &rn);
f570: ab03 add r3, sp, #12
f572: 2204 movs r2, #4
f574: 4629 mov r1, r5
f576: a804 add r0, sp, #16
f578: 4c18 ldr r4, [pc, #96] ; (f5dc <lv_img_decoder_built_in_info+0xf0>)
f57a: 47a0 blx r4
f57c: 4604 mov r4, r0
lv_fs_close(&file);
f57e: a804 add r0, sp, #16
f580: 4b17 ldr r3, [pc, #92] ; (f5e0 <lv_img_decoder_built_in_info+0xf4>)
f582: 4798 blx r3
if(res != LV_FS_RES_OK || rn != sizeof(lv_img_header_t)) {
f584: b914 cbnz r4, f58c <lv_img_decoder_built_in_info+0xa0>
f586: 9b03 ldr r3, [sp, #12]
f588: 2b04 cmp r3, #4
f58a: d0e9 beq.n f560 <lv_img_decoder_built_in_info+0x74>
LV_LOG_WARN("Image get info get read file header");
f58c: 4b15 ldr r3, [pc, #84] ; (f5e4 <lv_img_decoder_built_in_info+0xf8>)
f58e: 9300 str r3, [sp, #0]
f590: 4b0e ldr r3, [pc, #56] ; (f5cc <lv_img_decoder_built_in_info+0xe0>)
f592: f240 1221 movw r2, #289 ; 0x121
f596: 490e ldr r1, [pc, #56] ; (f5d0 <lv_img_decoder_built_in_info+0xe4>)
f598: 2002 movs r0, #2
f59a: 4c0e ldr r4, [pc, #56] ; (f5d4 <lv_img_decoder_built_in_info+0xe8>)
f59c: 47a0 blx r4
return LV_RES_INV;
f59e: 2000 movs r0, #0
f5a0: e7d6 b.n f550 <lv_img_decoder_built_in_info+0x64>
header->w = 1;
f5a2: 682b ldr r3, [r5, #0]
f5a4: 2001 movs r0, #1
f5a6: f360 2394 bfi r3, r0, #10, #11
f5aa: 602b str r3, [r5, #0]
header->h = 1;
f5ac: 0c1a lsrs r2, r3, #16
f5ae: f360 124f bfi r2, r0, #5, #11
f5b2: 806a strh r2, [r5, #2]
header->cf = LV_IMG_CF_ALPHA_1BIT;
f5b4: 220b movs r2, #11
f5b6: f362 0304 bfi r3, r2, #0, #5
f5ba: 702b strb r3, [r5, #0]
f5bc: e7c8 b.n f550 <lv_img_decoder_built_in_info+0x64>
if(cf < CF_BUILT_IN_FIRST || cf > CF_BUILT_IN_LAST) return LV_RES_INV;
f5be: 2000 movs r0, #0
f5c0: e7c6 b.n f550 <lv_img_decoder_built_in_info+0x64>
f5c2: bf00 nop
f5c4: 00009969 .word 0x00009969
f5c8: 0002536c .word 0x0002536c
f5cc: 0002524c .word 0x0002524c
f5d0: 00025318 .word 0x00025318
f5d4: 0001225d .word 0x0001225d
f5d8: 00011d4d .word 0x00011d4d
f5dc: 00011cbd .word 0x00011cbd
f5e0: 00011c8d .word 0x00011c8d
f5e4: 00025348 .word 0x00025348
0000f5e8 <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)
{
f5e8: b538 push {r3, r4, r5, lr}
(void)decoder; /*Unused*/
lv_img_decoder_built_in_data_t * user_data = dsc->user_data;
f5ea: 69cc ldr r4, [r1, #28]
if(user_data) {
f5ec: b1a4 cbz r4, f618 <lv_img_decoder_built_in_close+0x30>
f5ee: 460d mov r5, r1
#if LV_USE_FILESYSTEM
if(user_data->f) {
f5f0: 6820 ldr r0, [r4, #0]
f5f2: b120 cbz r0, f5fe <lv_img_decoder_built_in_close+0x16>
lv_fs_close(user_data->f);
f5f4: 4b09 ldr r3, [pc, #36] ; (f61c <lv_img_decoder_built_in_close+0x34>)
f5f6: 4798 blx r3
lv_mem_free(user_data->f);
f5f8: 6820 ldr r0, [r4, #0]
f5fa: 4b09 ldr r3, [pc, #36] ; (f620 <lv_img_decoder_built_in_close+0x38>)
f5fc: 4798 blx r3
}
#endif
if(user_data->palette) lv_mem_free(user_data->palette);
f5fe: 6860 ldr r0, [r4, #4]
f600: b108 cbz r0, f606 <lv_img_decoder_built_in_close+0x1e>
f602: 4b07 ldr r3, [pc, #28] ; (f620 <lv_img_decoder_built_in_close+0x38>)
f604: 4798 blx r3
if(user_data->opa) lv_mem_free(user_data->opa);
f606: 68a0 ldr r0, [r4, #8]
f608: b108 cbz r0, f60e <lv_img_decoder_built_in_close+0x26>
f60a: 4b05 ldr r3, [pc, #20] ; (f620 <lv_img_decoder_built_in_close+0x38>)
f60c: 4798 blx r3
lv_mem_free(user_data);
f60e: 4620 mov r0, r4
f610: 4b03 ldr r3, [pc, #12] ; (f620 <lv_img_decoder_built_in_close+0x38>)
f612: 4798 blx r3
dsc->user_data = NULL;
f614: 2300 movs r3, #0
f616: 61eb str r3, [r5, #28]
f618: bd38 pop {r3, r4, r5, pc}
f61a: bf00 nop
f61c: 00011c8d .word 0x00011c8d
f620: 000124c5 .word 0x000124c5
0000f624 <lv_img_decoder_built_in_open>:
{
f624: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
f628: b085 sub sp, #20
f62a: 4605 mov r5, r0
f62c: 460c mov r4, r1
if(dsc->src_type == LV_IMG_SRC_FILE) {
f62e: 7a8b ldrb r3, [r1, #10]
f630: 2b01 cmp r3, #1
f632: d016 beq.n f662 <lv_img_decoder_built_in_open+0x3e>
else if(dsc->src_type == LV_IMG_SRC_VARIABLE) {
f634: 2b00 cmp r3, #0
f636: f040 81aa bne.w f98e <lv_img_decoder_built_in_open+0x36a>
if(((lv_img_dsc_t *)dsc->src)->data == NULL) {
f63a: 684b ldr r3, [r1, #4]
f63c: 689b ldr r3, [r3, #8]
f63e: 2b00 cmp r3, #0
f640: f000 81a3 beq.w f98a <lv_img_decoder_built_in_open+0x366>
lv_img_cf_t cf = dsc->header.cf;
f644: 7b08 ldrb r0, [r1, #12]
f646: f000 001f and.w r0, r0, #31
if(cf == LV_IMG_CF_TRUE_COLOR || cf == LV_IMG_CF_TRUE_COLOR_ALPHA || cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED) {
f64a: 1f03 subs r3, r0, #4
f64c: b2db uxtb r3, r3
f64e: 2b02 cmp r3, #2
f650: f200 8085 bhi.w f75e <lv_img_decoder_built_in_open+0x13a>
dsc->img_data = ((lv_img_dsc_t *)dsc->src)->data;
f654: 6863 ldr r3, [r4, #4]
f656: 689b ldr r3, [r3, #8]
f658: 6123 str r3, [r4, #16]
return LV_RES_OK;
f65a: 2001 movs r0, #1
}
f65c: b005 add sp, #20
f65e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
if(strcmp(lv_fs_get_ext(dsc->src), "bin")) return LV_RES_INV;
f662: 6848 ldr r0, [r1, #4]
f664: 4b96 ldr r3, [pc, #600] ; (f8c0 <lv_img_decoder_built_in_open+0x29c>)
f666: 4798 blx r3
f668: 4996 ldr r1, [pc, #600] ; (f8c4 <lv_img_decoder_built_in_open+0x2a0>)
f66a: 4b97 ldr r3, [pc, #604] ; (f8c8 <lv_img_decoder_built_in_open+0x2a4>)
f66c: 4798 blx r3
f66e: 2800 cmp r0, #0
f670: d12a bne.n f6c8 <lv_img_decoder_built_in_open+0xa4>
lv_fs_res_t res = lv_fs_open(&f, dsc->src, LV_FS_MODE_RD);
f672: 2202 movs r2, #2
f674: 6861 ldr r1, [r4, #4]
f676: a802 add r0, sp, #8
f678: 4b94 ldr r3, [pc, #592] ; (f8cc <lv_img_decoder_built_in_open+0x2a8>)
f67a: 4798 blx r3
if(res != LV_FS_RES_OK) {
f67c: b9d8 cbnz r0, f6b6 <lv_img_decoder_built_in_open+0x92>
if(dsc->user_data == NULL) {
f67e: 69e3 ldr r3, [r4, #28]
f680: b323 cbz r3, f6cc <lv_img_decoder_built_in_open+0xa8>
lv_img_decoder_built_in_data_t * user_data = dsc->user_data;
f682: 69e6 ldr r6, [r4, #28]
user_data->f = lv_mem_alloc(sizeof(f));
f684: 2008 movs r0, #8
f686: 4b92 ldr r3, [pc, #584] ; (f8d0 <lv_img_decoder_built_in_open+0x2ac>)
f688: 4798 blx r3
f68a: 6030 str r0, [r6, #0]
LV_ASSERT_MEM(user_data->f);
f68c: 4b91 ldr r3, [pc, #580] ; (f8d4 <lv_img_decoder_built_in_open+0x2b0>)
f68e: 4798 blx r3
f690: 2800 cmp r0, #0
f692: d040 beq.n f716 <lv_img_decoder_built_in_open+0xf2>
if(user_data->f == NULL) {
f694: 6833 ldr r3, [r6, #0]
f696: 2b00 cmp r3, #0
f698: d14b bne.n f732 <lv_img_decoder_built_in_open+0x10e>
LV_LOG_ERROR("img_decoder_built_in_open: out of memory");
f69a: 4b8f ldr r3, [pc, #572] ; (f8d8 <lv_img_decoder_built_in_open+0x2b4>)
f69c: 9300 str r3, [sp, #0]
f69e: 4b8f ldr r3, [pc, #572] ; (f8dc <lv_img_decoder_built_in_open+0x2b8>)
f6a0: f240 125f movw r2, #351 ; 0x15f
f6a4: 498e ldr r1, [pc, #568] ; (f8e0 <lv_img_decoder_built_in_open+0x2bc>)
f6a6: 2003 movs r0, #3
f6a8: 4e8e ldr r6, [pc, #568] ; (f8e4 <lv_img_decoder_built_in_open+0x2c0>)
f6aa: 47b0 blx r6
lv_img_decoder_built_in_close(decoder, dsc);
f6ac: 4621 mov r1, r4
f6ae: 4628 mov r0, r5
f6b0: 4b8d ldr r3, [pc, #564] ; (f8e8 <lv_img_decoder_built_in_open+0x2c4>)
f6b2: 4798 blx r3
return LV_RES_INV;
f6b4: e008 b.n f6c8 <lv_img_decoder_built_in_open+0xa4>
LV_LOG_WARN("Built-in image decoder can't open the file");
f6b6: 4b8d ldr r3, [pc, #564] ; (f8ec <lv_img_decoder_built_in_open+0x2c8>)
f6b8: 9300 str r3, [sp, #0]
f6ba: 4b88 ldr r3, [pc, #544] ; (f8dc <lv_img_decoder_built_in_open+0x2b8>)
f6bc: f44f 72a6 mov.w r2, #332 ; 0x14c
f6c0: 4987 ldr r1, [pc, #540] ; (f8e0 <lv_img_decoder_built_in_open+0x2bc>)
f6c2: 2002 movs r0, #2
f6c4: 4c87 ldr r4, [pc, #540] ; (f8e4 <lv_img_decoder_built_in_open+0x2c0>)
f6c6: 47a0 blx r4
if(strcmp(lv_fs_get_ext(dsc->src), "bin")) return LV_RES_INV;
f6c8: 2000 movs r0, #0
f6ca: e7c7 b.n f65c <lv_img_decoder_built_in_open+0x38>
dsc->user_data = lv_mem_alloc(sizeof(lv_img_decoder_built_in_data_t));
f6cc: 200c movs r0, #12
f6ce: 4b80 ldr r3, [pc, #512] ; (f8d0 <lv_img_decoder_built_in_open+0x2ac>)
f6d0: 4798 blx r3
f6d2: 61e0 str r0, [r4, #28]
LV_ASSERT_MEM(dsc->user_data);
f6d4: 4b7f ldr r3, [pc, #508] ; (f8d4 <lv_img_decoder_built_in_open+0x2b0>)
f6d6: 4798 blx r3
f6d8: b968 cbnz r0, f6f6 <lv_img_decoder_built_in_open+0xd2>
f6da: 4b80 ldr r3, [pc, #512] ; (f8dc <lv_img_decoder_built_in_open+0x2b8>)
f6dc: 9300 str r3, [sp, #0]
f6de: f240 1253 movw r2, #339 ; 0x153
f6e2: 497f ldr r1, [pc, #508] ; (f8e0 <lv_img_decoder_built_in_open+0x2bc>)
f6e4: 2003 movs r0, #3
f6e6: 4d7f ldr r5, [pc, #508] ; (f8e4 <lv_img_decoder_built_in_open+0x2c0>)
f6e8: 47a8 blx r5
f6ea: 69e2 ldr r2, [r4, #28]
f6ec: 2300 movs r3, #0
f6ee: 4880 ldr r0, [pc, #512] ; (f8f0 <lv_img_decoder_built_in_open+0x2cc>)
f6f0: 4980 ldr r1, [pc, #512] ; (f8f4 <lv_img_decoder_built_in_open+0x2d0>)
f6f2: 4788 blx r1
f6f4: e7fe b.n f6f4 <lv_img_decoder_built_in_open+0xd0>
if(dsc->user_data == NULL) {
f6f6: 69e0 ldr r0, [r4, #28]
f6f8: b948 cbnz r0, f70e <lv_img_decoder_built_in_open+0xea>
LV_LOG_ERROR("img_decoder_built_in_open: out of memory");
f6fa: 4b77 ldr r3, [pc, #476] ; (f8d8 <lv_img_decoder_built_in_open+0x2b4>)
f6fc: 9300 str r3, [sp, #0]
f6fe: 4b77 ldr r3, [pc, #476] ; (f8dc <lv_img_decoder_built_in_open+0x2b8>)
f700: f240 1255 movw r2, #341 ; 0x155
f704: 4976 ldr r1, [pc, #472] ; (f8e0 <lv_img_decoder_built_in_open+0x2bc>)
f706: 2003 movs r0, #3
f708: 4c76 ldr r4, [pc, #472] ; (f8e4 <lv_img_decoder_built_in_open+0x2c0>)
f70a: 47a0 blx r4
return LV_RES_INV;
f70c: e7dc b.n f6c8 <lv_img_decoder_built_in_open+0xa4>
_lv_memset_00(dsc->user_data, sizeof(lv_img_decoder_built_in_data_t));
f70e: 210c movs r1, #12
f710: 4b79 ldr r3, [pc, #484] ; (f8f8 <lv_img_decoder_built_in_open+0x2d4>)
f712: 4798 blx r3
f714: e7b5 b.n f682 <lv_img_decoder_built_in_open+0x5e>
LV_ASSERT_MEM(user_data->f);
f716: 4b71 ldr r3, [pc, #452] ; (f8dc <lv_img_decoder_built_in_open+0x2b8>)
f718: 9300 str r3, [sp, #0]
f71a: f240 125d movw r2, #349 ; 0x15d
f71e: 4970 ldr r1, [pc, #448] ; (f8e0 <lv_img_decoder_built_in_open+0x2bc>)
f720: 2003 movs r0, #3
f722: 4c70 ldr r4, [pc, #448] ; (f8e4 <lv_img_decoder_built_in_open+0x2c0>)
f724: 47a0 blx r4
f726: 6832 ldr r2, [r6, #0]
f728: 2300 movs r3, #0
f72a: 4871 ldr r0, [pc, #452] ; (f8f0 <lv_img_decoder_built_in_open+0x2cc>)
f72c: 4971 ldr r1, [pc, #452] ; (f8f4 <lv_img_decoder_built_in_open+0x2d0>)
f72e: 4788 blx r1
f730: e7fe b.n f730 <lv_img_decoder_built_in_open+0x10c>
f732: f10d 0207 add.w r2, sp, #7
f736: f103 0108 add.w r1, r3, #8
f73a: f812 0f01 ldrb.w r0, [r2, #1]!
f73e: f803 0b01 strb.w r0, [r3], #1
while(len) {
f742: 428b cmp r3, r1
f744: d1f9 bne.n f73a <lv_img_decoder_built_in_open+0x116>
lv_img_cf_t cf = dsc->header.cf;
f746: 7b20 ldrb r0, [r4, #12]
f748: f000 001f and.w r0, r0, #31
if(cf == LV_IMG_CF_TRUE_COLOR || cf == LV_IMG_CF_TRUE_COLOR_ALPHA || cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED) {
f74c: 1f03 subs r3, r0, #4
f74e: b2db uxtb r3, r3
f750: 2b02 cmp r3, #2
f752: d804 bhi.n f75e <lv_img_decoder_built_in_open+0x13a>
if(dsc->src_type == LV_IMG_SRC_VARIABLE) {
f754: 7aa3 ldrb r3, [r4, #10]
f756: 2b00 cmp r3, #0
f758: f43f af7c beq.w f654 <lv_img_decoder_built_in_open+0x30>
f75c: e11f b.n f99e <lv_img_decoder_built_in_open+0x37a>
else if(cf == LV_IMG_CF_INDEXED_1BIT || cf == LV_IMG_CF_INDEXED_2BIT || cf == LV_IMG_CF_INDEXED_4BIT ||
f75e: 1fc3 subs r3, r0, #7
f760: b2db uxtb r3, r3
f762: 2b03 cmp r3, #3
f764: d909 bls.n f77a <lv_img_decoder_built_in_open+0x156>
else if(cf == LV_IMG_CF_ALPHA_1BIT || cf == LV_IMG_CF_ALPHA_2BIT || cf == LV_IMG_CF_ALPHA_4BIT ||
f766: f1a0 030b sub.w r3, r0, #11
f76a: b2db uxtb r3, r3
f76c: 2b03 cmp r3, #3
f76e: f200 80fd bhi.w f96c <lv_img_decoder_built_in_open+0x348>
dsc->img_data = NULL;
f772: 2300 movs r3, #0
f774: 6123 str r3, [r4, #16]
return LV_RES_OK; /*Nothing to process*/
f776: 2001 movs r0, #1
f778: e770 b.n f65c <lv_img_decoder_built_in_open+0x38>
uint8_t px_size = lv_img_cf_get_px_size(cf);
f77a: 4b60 ldr r3, [pc, #384] ; (f8fc <lv_img_decoder_built_in_open+0x2d8>)
f77c: 4798 blx r3
f77e: 4607 mov r7, r0
if(dsc->user_data == NULL) {
f780: 69e3 ldr r3, [r4, #28]
f782: b1bb cbz r3, f7b4 <lv_img_decoder_built_in_open+0x190>
lv_img_decoder_built_in_data_t * user_data = dsc->user_data;
f784: 69e6 ldr r6, [r4, #28]
user_data->palette = lv_mem_alloc(palette_size * sizeof(lv_color_t));
f786: 2002 movs r0, #2
f788: 40b8 lsls r0, r7
f78a: 4b51 ldr r3, [pc, #324] ; (f8d0 <lv_img_decoder_built_in_open+0x2ac>)
f78c: 4798 blx r3
f78e: 6070 str r0, [r6, #4]
LV_ASSERT_MEM(user_data->palette);
f790: 4b50 ldr r3, [pc, #320] ; (f8d4 <lv_img_decoder_built_in_open+0x2b0>)
f792: 4798 blx r3
f794: 2800 cmp r0, #0
f796: d137 bne.n f808 <lv_img_decoder_built_in_open+0x1e4>
f798: 4b50 ldr r3, [pc, #320] ; (f8dc <lv_img_decoder_built_in_open+0x2b8>)
f79a: 9300 str r3, [sp, #0]
f79c: f240 1297 movw r2, #407 ; 0x197
f7a0: 494f ldr r1, [pc, #316] ; (f8e0 <lv_img_decoder_built_in_open+0x2bc>)
f7a2: 2003 movs r0, #3
f7a4: 4c4f ldr r4, [pc, #316] ; (f8e4 <lv_img_decoder_built_in_open+0x2c0>)
f7a6: 47a0 blx r4
f7a8: 6872 ldr r2, [r6, #4]
f7aa: 2300 movs r3, #0
f7ac: 4850 ldr r0, [pc, #320] ; (f8f0 <lv_img_decoder_built_in_open+0x2cc>)
f7ae: 4951 ldr r1, [pc, #324] ; (f8f4 <lv_img_decoder_built_in_open+0x2d0>)
f7b0: 4788 blx r1
f7b2: e7fe b.n f7b2 <lv_img_decoder_built_in_open+0x18e>
dsc->user_data = lv_mem_alloc(sizeof(lv_img_decoder_built_in_data_t));
f7b4: 200c movs r0, #12
f7b6: 4b46 ldr r3, [pc, #280] ; (f8d0 <lv_img_decoder_built_in_open+0x2ac>)
f7b8: 4798 blx r3
f7ba: 61e0 str r0, [r4, #28]
LV_ASSERT_MEM(dsc->user_data);
f7bc: 4b45 ldr r3, [pc, #276] ; (f8d4 <lv_img_decoder_built_in_open+0x2b0>)
f7be: 4798 blx r3
f7c0: b968 cbnz r0, f7de <lv_img_decoder_built_in_open+0x1ba>
f7c2: 4b46 ldr r3, [pc, #280] ; (f8dc <lv_img_decoder_built_in_open+0x2b8>)
f7c4: 9300 str r3, [sp, #0]
f7c6: f44f 72c6 mov.w r2, #396 ; 0x18c
f7ca: 4945 ldr r1, [pc, #276] ; (f8e0 <lv_img_decoder_built_in_open+0x2bc>)
f7cc: 2003 movs r0, #3
f7ce: 4d45 ldr r5, [pc, #276] ; (f8e4 <lv_img_decoder_built_in_open+0x2c0>)
f7d0: 47a8 blx r5
f7d2: 69e2 ldr r2, [r4, #28]
f7d4: 2300 movs r3, #0
f7d6: 4846 ldr r0, [pc, #280] ; (f8f0 <lv_img_decoder_built_in_open+0x2cc>)
f7d8: 4946 ldr r1, [pc, #280] ; (f8f4 <lv_img_decoder_built_in_open+0x2d0>)
f7da: 4788 blx r1
f7dc: e7fe b.n f7dc <lv_img_decoder_built_in_open+0x1b8>
if(dsc->user_data == NULL) {
f7de: 69e0 ldr r0, [r4, #28]
f7e0: b970 cbnz r0, f800 <lv_img_decoder_built_in_open+0x1dc>
LV_LOG_ERROR("img_decoder_built_in_open: out of memory");
f7e2: 4b3d ldr r3, [pc, #244] ; (f8d8 <lv_img_decoder_built_in_open+0x2b4>)
f7e4: 9300 str r3, [sp, #0]
f7e6: 4b3d ldr r3, [pc, #244] ; (f8dc <lv_img_decoder_built_in_open+0x2b8>)
f7e8: f44f 72c7 mov.w r2, #398 ; 0x18e
f7ec: 493c ldr r1, [pc, #240] ; (f8e0 <lv_img_decoder_built_in_open+0x2bc>)
f7ee: 2003 movs r0, #3
f7f0: 4e3c ldr r6, [pc, #240] ; (f8e4 <lv_img_decoder_built_in_open+0x2c0>)
f7f2: 47b0 blx r6
lv_img_decoder_built_in_close(decoder, dsc);
f7f4: 4621 mov r1, r4
f7f6: 4628 mov r0, r5
f7f8: 4b3b ldr r3, [pc, #236] ; (f8e8 <lv_img_decoder_built_in_open+0x2c4>)
f7fa: 4798 blx r3
return LV_RES_INV;
f7fc: 2000 movs r0, #0
f7fe: e72d b.n f65c <lv_img_decoder_built_in_open+0x38>
_lv_memset_00(dsc->user_data, sizeof(lv_img_decoder_built_in_data_t));
f800: 210c movs r1, #12
f802: 4b3d ldr r3, [pc, #244] ; (f8f8 <lv_img_decoder_built_in_open+0x2d4>)
f804: 4798 blx r3
f806: e7bd b.n f784 <lv_img_decoder_built_in_open+0x160>
uint32_t palette_size = 1 << px_size;
f808: 2301 movs r3, #1
f80a: fa03 f707 lsl.w r7, r3, r7
user_data->opa = lv_mem_alloc(palette_size * sizeof(lv_opa_t));
f80e: 4638 mov r0, r7
f810: 4b2f ldr r3, [pc, #188] ; (f8d0 <lv_img_decoder_built_in_open+0x2ac>)
f812: 4798 blx r3
f814: 60b0 str r0, [r6, #8]
LV_ASSERT_MEM(user_data->opa);
f816: 4b2f ldr r3, [pc, #188] ; (f8d4 <lv_img_decoder_built_in_open+0x2b0>)
f818: 4798 blx r3
f81a: 2800 cmp r0, #0
f81c: d032 beq.n f884 <lv_img_decoder_built_in_open+0x260>
if(user_data->palette == NULL || user_data->opa == NULL) {
f81e: 6873 ldr r3, [r6, #4]
f820: 2b00 cmp r3, #0
f822: d03d beq.n f8a0 <lv_img_decoder_built_in_open+0x27c>
f824: 68b3 ldr r3, [r6, #8]
f826: 2b00 cmp r3, #0
f828: d03a beq.n f8a0 <lv_img_decoder_built_in_open+0x27c>
if(dsc->src_type == LV_IMG_SRC_FILE) {
f82a: 7aa3 ldrb r3, [r4, #10]
f82c: 2b01 cmp r3, #1
f82e: d067 beq.n f900 <lv_img_decoder_built_in_open+0x2dc>
lv_color32_t * palette_p = (lv_color32_t *)((lv_img_dsc_t *)dsc->src)->data;
f830: 6863 ldr r3, [r4, #4]
f832: 689a ldr r2, [r3, #8]
for(i = 0; i < palette_size; i++) {
f834: 2f00 cmp r7, #0
f836: f000 8095 beq.w f964 <lv_img_decoder_built_in_open+0x340>
f83a: 2300 movs r3, #0
user_data->palette[i] = lv_color_make(palette_p[i].ch.red, palette_p[i].ch.green, palette_p[i].ch.blue);
f83c: 6870 ldr r0, [r6, #4]
f83e: eb00 0c43 add.w ip, r0, r3, lsl #1
#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);
f842: f892 e001 ldrb.w lr, [r2, #1]
f846: ea4f 0e9e mov.w lr, lr, lsr #2
f84a: 7895 ldrb r5, [r2, #2]
f84c: 08ed lsrs r5, r5, #3
f84e: 7811 ldrb r1, [r2, #0]
f850: 08c9 lsrs r1, r1, #3
f852: f810 8013 ldrb.w r8, [r0, r3, lsl #1]
f856: f361 0804 bfi r8, r1, #0, #5
f85a: f800 8013 strb.w r8, [r0, r3, lsl #1]
f85e: f830 1013 ldrh.w r1, [r0, r3, lsl #1]
f862: f36e 114a bfi r1, lr, #5, #6
f866: f820 1013 strh.w r1, [r0, r3, lsl #1]
f86a: 0a09 lsrs r1, r1, #8
f86c: f365 01c7 bfi r1, r5, #3, #5
f870: f88c 1001 strb.w r1, [ip, #1]
user_data->opa[i] = palette_p[i].ch.alpha;
f874: 78d0 ldrb r0, [r2, #3]
f876: 68b1 ldr r1, [r6, #8]
f878: 54c8 strb r0, [r1, r3]
for(i = 0; i < palette_size; i++) {
f87a: 3301 adds r3, #1
f87c: 3204 adds r2, #4
f87e: 429f cmp r7, r3
f880: d1dc bne.n f83c <lv_img_decoder_built_in_open+0x218>
f882: e06f b.n f964 <lv_img_decoder_built_in_open+0x340>
LV_ASSERT_MEM(user_data->opa);
f884: 4b15 ldr r3, [pc, #84] ; (f8dc <lv_img_decoder_built_in_open+0x2b8>)
f886: 9300 str r3, [sp, #0]
f888: f240 1299 movw r2, #409 ; 0x199
f88c: 4914 ldr r1, [pc, #80] ; (f8e0 <lv_img_decoder_built_in_open+0x2bc>)
f88e: 2003 movs r0, #3
f890: 4c14 ldr r4, [pc, #80] ; (f8e4 <lv_img_decoder_built_in_open+0x2c0>)
f892: 47a0 blx r4
f894: 68b2 ldr r2, [r6, #8]
f896: 2300 movs r3, #0
f898: 4815 ldr r0, [pc, #84] ; (f8f0 <lv_img_decoder_built_in_open+0x2cc>)
f89a: 4916 ldr r1, [pc, #88] ; (f8f4 <lv_img_decoder_built_in_open+0x2d0>)
f89c: 4788 blx r1
f89e: e7fe b.n f89e <lv_img_decoder_built_in_open+0x27a>
LV_LOG_ERROR("img_decoder_built_in_open: out of memory");
f8a0: 4b0d ldr r3, [pc, #52] ; (f8d8 <lv_img_decoder_built_in_open+0x2b4>)
f8a2: 9300 str r3, [sp, #0]
f8a4: 4b0d ldr r3, [pc, #52] ; (f8dc <lv_img_decoder_built_in_open+0x2b8>)
f8a6: f240 129b movw r2, #411 ; 0x19b
f8aa: 490d ldr r1, [pc, #52] ; (f8e0 <lv_img_decoder_built_in_open+0x2bc>)
f8ac: 2003 movs r0, #3
f8ae: 4e0d ldr r6, [pc, #52] ; (f8e4 <lv_img_decoder_built_in_open+0x2c0>)
f8b0: 47b0 blx r6
lv_img_decoder_built_in_close(decoder, dsc);
f8b2: 4621 mov r1, r4
f8b4: 4628 mov r0, r5
f8b6: 4b0c ldr r3, [pc, #48] ; (f8e8 <lv_img_decoder_built_in_open+0x2c4>)
f8b8: 4798 blx r3
return LV_RES_INV;
f8ba: 2000 movs r0, #0
f8bc: e6ce b.n f65c <lv_img_decoder_built_in_open+0x38>
f8be: bf00 nop
f8c0: 00011e21 .word 0x00011e21
f8c4: 00025394 .word 0x00025394
f8c8: 0001b4fb .word 0x0001b4fb
f8cc: 00011d4d .word 0x00011d4d
f8d0: 000123dd .word 0x000123dd
f8d4: 000022b1 .word 0x000022b1
f8d8: 000253c4 .word 0x000253c4
f8dc: 0002526c .word 0x0002526c
f8e0: 00025318 .word 0x00025318
f8e4: 0001225d .word 0x0001225d
f8e8: 0000f5e9 .word 0x0000f5e9
f8ec: 00025398 .word 0x00025398
f8f0: 00023fd8 .word 0x00023fd8
f8f4: 000022b9 .word 0x000022b9
f8f8: 00012b37 .word 0x00012b37
f8fc: 00009681 .word 0x00009681
lv_fs_seek(user_data->f, 4); /*Skip the header*/
f900: 2104 movs r1, #4
f902: 6830 ldr r0, [r6, #0]
f904: 4b28 ldr r3, [pc, #160] ; (f9a8 <lv_img_decoder_built_in_open+0x384>)
f906: 4798 blx r3
for(i = 0; i < palette_size; i++) {
f908: b367 cbz r7, f964 <lv_img_decoder_built_in_open+0x340>
f90a: 2500 movs r5, #0
lv_fs_read(user_data->f, &cur_color, sizeof(lv_color32_t), NULL);
f90c: 46a9 mov r9, r5
f90e: f8df 80b0 ldr.w r8, [pc, #176] ; f9c0 <lv_img_decoder_built_in_open+0x39c>
f912: 464b mov r3, r9
f914: 2204 movs r2, #4
f916: a902 add r1, sp, #8
f918: 6830 ldr r0, [r6, #0]
f91a: 47c0 blx r8
user_data->palette[i] = lv_color_make(cur_color.ch.red, cur_color.ch.green, cur_color.ch.blue);
f91c: 6872 ldr r2, [r6, #4]
f91e: eb02 0e45 add.w lr, r2, r5, lsl #1
f922: f89d 0009 ldrb.w r0, [sp, #9]
f926: 0880 lsrs r0, r0, #2
f928: f89d 100a ldrb.w r1, [sp, #10]
f92c: 08c9 lsrs r1, r1, #3
f92e: f89d 3008 ldrb.w r3, [sp, #8]
f932: 08db lsrs r3, r3, #3
f934: f812 c015 ldrb.w ip, [r2, r5, lsl #1]
f938: f363 0c04 bfi ip, r3, #0, #5
f93c: f802 c015 strb.w ip, [r2, r5, lsl #1]
f940: f832 3015 ldrh.w r3, [r2, r5, lsl #1]
f944: f360 134a bfi r3, r0, #5, #6
f948: f822 3015 strh.w r3, [r2, r5, lsl #1]
f94c: 0a1b lsrs r3, r3, #8
f94e: f361 03c7 bfi r3, r1, #3, #5
f952: f88e 3001 strb.w r3, [lr, #1]
user_data->opa[i] = cur_color.ch.alpha;
f956: f89d 200b ldrb.w r2, [sp, #11]
f95a: 68b3 ldr r3, [r6, #8]
f95c: 555a strb r2, [r3, r5]
for(i = 0; i < palette_size; i++) {
f95e: 3501 adds r5, #1
f960: 42af cmp r7, r5
f962: d1d6 bne.n f912 <lv_img_decoder_built_in_open+0x2ee>
dsc->img_data = NULL;
f964: 2300 movs r3, #0
f966: 6123 str r3, [r4, #16]
return LV_RES_OK;
f968: 2001 movs r0, #1
f96a: e677 b.n f65c <lv_img_decoder_built_in_open+0x38>
lv_img_decoder_built_in_close(decoder, dsc);
f96c: 4621 mov r1, r4
f96e: 4628 mov r0, r5
f970: 4b0e ldr r3, [pc, #56] ; (f9ac <lv_img_decoder_built_in_open+0x388>)
f972: 4798 blx r3
LV_LOG_WARN("Image decoder open: unknown color format")
f974: 4b0e ldr r3, [pc, #56] ; (f9b0 <lv_img_decoder_built_in_open+0x38c>)
f976: 9300 str r3, [sp, #0]
f978: 4b0e ldr r3, [pc, #56] ; (f9b4 <lv_img_decoder_built_in_open+0x390>)
f97a: f240 12d3 movw r2, #467 ; 0x1d3
f97e: 490e ldr r1, [pc, #56] ; (f9b8 <lv_img_decoder_built_in_open+0x394>)
f980: 2002 movs r0, #2
f982: 4c0e ldr r4, [pc, #56] ; (f9bc <lv_img_decoder_built_in_open+0x398>)
f984: 47a0 blx r4
return LV_RES_INV;
f986: 2000 movs r0, #0
f988: e668 b.n f65c <lv_img_decoder_built_in_open+0x38>
return LV_RES_INV;
f98a: 2000 movs r0, #0
f98c: e666 b.n f65c <lv_img_decoder_built_in_open+0x38>
lv_img_cf_t cf = dsc->header.cf;
f98e: 7b08 ldrb r0, [r1, #12]
f990: f000 001f and.w r0, r0, #31
if(cf == LV_IMG_CF_TRUE_COLOR || cf == LV_IMG_CF_TRUE_COLOR_ALPHA || cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED) {
f994: 1f03 subs r3, r0, #4
f996: b2db uxtb r3, r3
f998: 2b02 cmp r3, #2
f99a: f63f aee0 bhi.w f75e <lv_img_decoder_built_in_open+0x13a>
dsc->img_data = NULL;
f99e: 2300 movs r3, #0
f9a0: 6123 str r3, [r4, #16]
return LV_RES_OK;
f9a2: 2001 movs r0, #1
f9a4: e65a b.n f65c <lv_img_decoder_built_in_open+0x38>
f9a6: bf00 nop
f9a8: 00011cf9 .word 0x00011cf9
f9ac: 0000f5e9 .word 0x0000f5e9
f9b0: 000253f0 .word 0x000253f0
f9b4: 0002526c .word 0x0002526c
f9b8: 00025318 .word 0x00025318
f9bc: 0001225d .word 0x0001225d
f9c0: 00011cbd .word 0x00011cbd
0000f9c4 <lv_img_decoder_built_in_read_line>:
{
f9c4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
f9c8: b08b sub sp, #44 ; 0x2c
f9ca: 460d mov r5, r1
f9cc: 4614 mov r4, r2
f9ce: 469a mov sl, r3
f9d0: f9bd 6050 ldrsh.w r6, [sp, #80] ; 0x50
if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA ||
f9d4: 7b0b ldrb r3, [r1, #12]
f9d6: f003 031f and.w r3, r3, #31
f9da: 1f1a subs r2, r3, #4
f9dc: b2d2 uxtb r2, r2
f9de: 2a02 cmp r2, #2
f9e0: d845 bhi.n fa6e <lv_img_decoder_built_in_read_line+0xaa>
if(dsc->src_type == LV_IMG_SRC_FILE) {
f9e2: 7a8b ldrb r3, [r1, #10]
f9e4: 2b01 cmp r3, #1
f9e6: d003 beq.n f9f0 <lv_img_decoder_built_in_read_line+0x2c>
lv_res_t res = LV_RES_INV;
f9e8: 2000 movs r0, #0
}
f9ea: b00b add sp, #44 ; 0x2c
f9ec: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
static lv_res_t lv_img_decoder_built_in_line_true_color(lv_img_decoder_dsc_t * dsc, lv_coord_t x, lv_coord_t y,
lv_coord_t len, uint8_t * buf)
{
#if LV_USE_FILESYSTEM
lv_img_decoder_built_in_data_t * user_data = dsc->user_data;
f9f0: f8d1 801c ldr.w r8, [r1, #28]
lv_fs_res_t res;
uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf);
f9f4: 7b08 ldrb r0, [r1, #12]
f9f6: f000 001f and.w r0, r0, #31
f9fa: 4b9e ldr r3, [pc, #632] ; (fc74 <lv_img_decoder_built_in_read_line+0x2b0>)
f9fc: 4798 blx r3
f9fe: 4607 mov r7, r0
uint32_t pos = ((y * dsc->header.w + x) * px_size) >> 3;
fa00: 68e9 ldr r1, [r5, #12]
fa02: f3c1 218a ubfx r1, r1, #10, #11
fa06: fb0a 4101 mla r1, sl, r1, r4
fa0a: fb00 f101 mul.w r1, r0, r1
fa0e: 10c9 asrs r1, r1, #3
pos += 4; /*Skip the header*/
res = lv_fs_seek(user_data->f, pos);
fa10: 3104 adds r1, #4
fa12: f8d8 0000 ldr.w r0, [r8]
fa16: 4b98 ldr r3, [pc, #608] ; (fc78 <lv_img_decoder_built_in_read_line+0x2b4>)
fa18: 4798 blx r3
if(res != LV_FS_RES_OK) {
fa1a: b9d8 cbnz r0, fa54 <lv_img_decoder_built_in_read_line+0x90>
LV_LOG_WARN("Built-in image decoder seek failed");
return LV_RES_INV;
}
uint32_t btr = len * (px_size >> 3);
fa1c: f3c7 07c7 ubfx r7, r7, #3, #8
fa20: fb06 f607 mul.w r6, r6, r7
uint32_t br = 0;
fa24: ab0a add r3, sp, #40 ; 0x28
fa26: 2200 movs r2, #0
fa28: f843 2d10 str.w r2, [r3, #-16]!
lv_fs_read(user_data->f, buf, btr, &br);
fa2c: 4632 mov r2, r6
fa2e: 9915 ldr r1, [sp, #84] ; 0x54
fa30: f8d8 0000 ldr.w r0, [r8]
fa34: 4c91 ldr r4, [pc, #580] ; (fc7c <lv_img_decoder_built_in_read_line+0x2b8>)
fa36: 47a0 blx r4
if(res != LV_FS_RES_OK || btr != br) {
fa38: 9b06 ldr r3, [sp, #24]
fa3a: 429e cmp r6, r3
fa3c: d015 beq.n fa6a <lv_img_decoder_built_in_read_line+0xa6>
LV_LOG_WARN("Built-in image decoder read failed");
fa3e: 4b90 ldr r3, [pc, #576] ; (fc80 <lv_img_decoder_built_in_read_line+0x2bc>)
fa40: 9300 str r3, [sp, #0]
fa42: 4b90 ldr r3, [pc, #576] ; (fc84 <lv_img_decoder_built_in_read_line+0x2c0>)
fa44: f240 2235 movw r2, #565 ; 0x235
fa48: 498f ldr r1, [pc, #572] ; (fc88 <lv_img_decoder_built_in_read_line+0x2c4>)
fa4a: 2002 movs r0, #2
fa4c: 4c8f ldr r4, [pc, #572] ; (fc8c <lv_img_decoder_built_in_read_line+0x2c8>)
fa4e: 47a0 blx r4
return LV_RES_INV;
fa50: 2000 movs r0, #0
fa52: e7ca b.n f9ea <lv_img_decoder_built_in_read_line+0x26>
LV_LOG_WARN("Built-in image decoder seek failed");
fa54: 4b8e ldr r3, [pc, #568] ; (fc90 <lv_img_decoder_built_in_read_line+0x2cc>)
fa56: 9300 str r3, [sp, #0]
fa58: 4b8a ldr r3, [pc, #552] ; (fc84 <lv_img_decoder_built_in_read_line+0x2c0>)
fa5a: f240 222e movw r2, #558 ; 0x22e
fa5e: 498a ldr r1, [pc, #552] ; (fc88 <lv_img_decoder_built_in_read_line+0x2c4>)
fa60: 2002 movs r0, #2
fa62: 4c8a ldr r4, [pc, #552] ; (fc8c <lv_img_decoder_built_in_read_line+0x2c8>)
fa64: 47a0 blx r4
return LV_RES_INV;
fa66: 2000 movs r0, #0
fa68: e7bf b.n f9ea <lv_img_decoder_built_in_read_line+0x26>
}
return LV_RES_OK;
fa6a: 2001 movs r0, #1
fa6c: e7bd b.n f9ea <lv_img_decoder_built_in_read_line+0x26>
dsc->header.cf == LV_IMG_CF_ALPHA_4BIT || dsc->header.cf == LV_IMG_CF_ALPHA_8BIT) {
fa6e: f1a3 020b sub.w r2, r3, #11
else if(dsc->header.cf == LV_IMG_CF_ALPHA_1BIT || dsc->header.cf == LV_IMG_CF_ALPHA_2BIT ||
fa72: b2d2 uxtb r2, r2
fa74: 2a03 cmp r2, #3
fa76: d90f bls.n fa98 <lv_img_decoder_built_in_read_line+0xd4>
dsc->header.cf == LV_IMG_CF_INDEXED_4BIT || dsc->header.cf == LV_IMG_CF_INDEXED_8BIT) {
fa78: 3b07 subs r3, #7
else if(dsc->header.cf == LV_IMG_CF_INDEXED_1BIT || dsc->header.cf == LV_IMG_CF_INDEXED_2BIT ||
fa7a: b2db uxtb r3, r3
fa7c: 2b03 cmp r3, #3
fa7e: f240 80df bls.w fc40 <lv_img_decoder_built_in_read_line+0x27c>
LV_LOG_WARN("Built-in image decoder read not supports the color format");
fa82: 4b84 ldr r3, [pc, #528] ; (fc94 <lv_img_decoder_built_in_read_line+0x2d0>)
fa84: 9300 str r3, [sp, #0]
fa86: 4b84 ldr r3, [pc, #528] ; (fc98 <lv_img_decoder_built_in_read_line+0x2d4>)
fa88: f44f 72fe mov.w r2, #508 ; 0x1fc
fa8c: 497e ldr r1, [pc, #504] ; (fc88 <lv_img_decoder_built_in_read_line+0x2c4>)
fa8e: 2002 movs r0, #2
fa90: 4c7e ldr r4, [pc, #504] ; (fc8c <lv_img_decoder_built_in_read_line+0x2c8>)
fa92: 47a0 blx r4
return LV_RES_INV;
fa94: 2000 movs r0, #0
fa96: e7a8 b.n f9ea <lv_img_decoder_built_in_read_line+0x26>
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)*/
fa98: 2200 movs r2, #0
fa9a: f88d 2010 strb.w r2, [sp, #16]
fa9e: 23ff movs r3, #255 ; 0xff
faa0: f88d 3011 strb.w r3, [sp, #17]
const lv_opa_t alpha2_opa_table[4] = {0, 85, 170, 255}; /*Opacity mapping with bpp = 2*/
faa4: f88d 2014 strb.w r2, [sp, #20]
faa8: 2255 movs r2, #85 ; 0x55
faaa: f88d 2015 strb.w r2, [sp, #21]
faae: 22aa movs r2, #170 ; 0xaa
fab0: f88d 2016 strb.w r2, [sp, #22]
fab4: f88d 3017 strb.w r3, [sp, #23]
const lv_opa_t alpha4_opa_table[16] = {0, 17, 34, 51, /*Opacity mapping with bpp = 4*/
fab8: 4b78 ldr r3, [pc, #480] ; (fc9c <lv_img_decoder_built_in_read_line+0x2d8>)
faba: cb0f ldmia r3, {r0, r1, r2, r3}
fabc: af0a add r7, sp, #40 ; 0x28
fabe: e907 000f stmdb r7, {r0, r1, r2, r3}
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;
fac2: 8929 ldrh r1, [r5, #8]
lv_coord_t i;
for(i = 0; i < len; i++) {
fac4: 2e00 cmp r6, #0
fac6: dd0c ble.n fae2 <lv_img_decoder_built_in_read_line+0x11e>
#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;
fac8: 0a08 lsrs r0, r1, #8
faca: 9b15 ldr r3, [sp, #84] ; 0x54
facc: 1e72 subs r2, r6, #1
face: b292 uxth r2, r2
fad0: 3201 adds r2, #1
fad2: eb02 0242 add.w r2, r2, r2, lsl #1
fad6: 441a add r2, r3
buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = bg_color.full & 0xFF;
fad8: 7019 strb r1, [r3, #0]
buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + 1] = (bg_color.full >> 8) & 0xFF;
fada: 7058 strb r0, [r3, #1]
fadc: 3303 adds r3, #3
for(i = 0; i < len; i++) {
fade: 429a cmp r2, r3
fae0: d1fa bne.n fad8 <lv_img_decoder_built_in_read_line+0x114>
#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);
fae2: 7b28 ldrb r0, [r5, #12]
fae4: f000 001f and.w r0, r0, #31
fae8: 4b62 ldr r3, [pc, #392] ; (fc74 <lv_img_decoder_built_in_read_line+0x2b0>)
faea: 4798 blx r3
faec: 4680 mov r8, r0
uint16_t mask = (1 << px_size) - 1; /*E.g. px_size = 2; mask = 0x03*/
faee: 2701 movs r7, #1
faf0: 4087 lsls r7, r0
faf2: 3f01 subs r7, #1
faf4: b2bf uxth r7, r7
lv_coord_t w = 0;
uint32_t ofs = 0;
int8_t pos = 0;
switch(dsc->header.cf) {
faf6: 7b2b ldrb r3, [r5, #12]
faf8: f003 031f and.w r3, r3, #31
fafc: 3b0b subs r3, #11
fafe: 2b03 cmp r3, #3
fb00: f200 8083 bhi.w fc0a <lv_img_decoder_built_in_read_line+0x246>
fb04: e8df f003 tbb [pc, r3]
fb08: 76614c02 .word 0x76614c02
case LV_IMG_CF_ALPHA_1BIT:
w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/
fb0c: 68eb ldr r3, [r5, #12]
fb0e: f3c3 238a ubfx r3, r3, #10, #11
fb12: 10da asrs r2, r3, #3
if(dsc->header.w & 0x7) w++;
fb14: f013 0f07 tst.w r3, #7
w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/
fb18: bf0c ite eq
fb1a: fa0f fb82 sxtheq.w fp, r2
if(dsc->header.w & 0x7) w++;
fb1e: f102 0b01 addne.w fp, r2, #1
ofs += w * y + (x >> 3); /*First pixel*/
fb22: 10e3 asrs r3, r4, #3
fb24: fb0a 3a0b mla sl, sl, fp, r3
pos = 7 - (x & 0x7);
fb28: 43e4 mvns r4, r4
fb2a: f004 0407 and.w r4, r4, #7
opa_table = alpha1_opa_table;
fb2e: f10d 0910 add.w r9, sp, #16
pos = 0;
break;
}
#if LV_USE_FILESYSTEM
lv_img_decoder_built_in_data_t * user_data = dsc->user_data;
fb32: 69eb ldr r3, [r5, #28]
fb34: 9303 str r3, [sp, #12]
uint8_t * fs_buf = _lv_mem_buf_get(w);
fb36: 4658 mov r0, fp
fb38: 4b59 ldr r3, [pc, #356] ; (fca0 <lv_img_decoder_built_in_read_line+0x2dc>)
fb3a: 4798 blx r3
fb3c: 9002 str r0, [sp, #8]
#endif
const uint8_t * data_tmp = NULL;
if(dsc->src_type == LV_IMG_SRC_VARIABLE) {
fb3e: 7aab ldrb r3, [r5, #10]
fb40: 2b00 cmp r3, #0
fb42: d16b bne.n fc1c <lv_img_decoder_built_in_read_line+0x258>
const lv_img_dsc_t * img_dsc = dsc->src;
data_tmp = img_dsc->data + ofs;
fb44: 686b ldr r3, [r5, #4]
fb46: 689b ldr r3, [r3, #8]
fb48: 449a add sl, r3
data_tmp = NULL; /*To avoid warnings*/
return LV_RES_INV;
#endif
}
for(i = 0; i < len; i++) {
fb4a: 2e00 cmp r6, #0
fb4c: dd23 ble.n fb96 <lv_img_decoder_built_in_read_line+0x1d2>
fb4e: 9a15 ldr r2, [sp, #84] ; 0x54
fb50: 1e71 subs r1, r6, #1
fb52: b289 uxth r1, r1
fb54: 3101 adds r1, #1
fb56: eb01 0141 add.w r1, r1, r1, lsl #1
fb5a: 4411 add r1, r2
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;
fb5c: f1c8 0008 rsb r0, r8, #8
fb60: b240 sxtb r0, r0
uint8_t val_act = (*data_tmp & (mask << pos)) >> pos;
fb62: f89a 3000 ldrb.w r3, [sl]
fb66: fa07 f604 lsl.w r6, r7, r4
fb6a: 4033 ands r3, r6
fb6c: 4123 asrs r3, r4
dsc->header.cf == LV_IMG_CF_ALPHA_8BIT ? val_act : opa_table[val_act];
fb6e: 7b2e ldrb r6, [r5, #12]
buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] =
fb70: f006 061f and.w r6, r6, #31
fb74: 2e0e cmp r6, #14
uint8_t val_act = (*data_tmp & (mask << pos)) >> pos;
fb76: b2db uxtb r3, r3
buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] =
fb78: bf18 it ne
fb7a: f819 3003 ldrbne.w r3, [r9, r3]
fb7e: 7093 strb r3, [r2, #2]
pos -= px_size;
fb80: eba4 0408 sub.w r4, r4, r8
fb84: b264 sxtb r4, r4
if(pos < 0) {
fb86: 2c00 cmp r4, #0
pos = 8 - px_size;
fb88: bfbc itt lt
fb8a: 4604 movlt r4, r0
data_tmp++;
fb8c: f10a 0a01 addlt.w sl, sl, #1
fb90: 3203 adds r2, #3
for(i = 0; i < len; i++) {
fb92: 428a cmp r2, r1
fb94: d1e5 bne.n fb62 <lv_img_decoder_built_in_read_line+0x19e>
}
}
#if LV_USE_FILESYSTEM
_lv_mem_buf_release(fs_buf);
fb96: 9802 ldr r0, [sp, #8]
fb98: 4b42 ldr r3, [pc, #264] ; (fca4 <lv_img_decoder_built_in_read_line+0x2e0>)
fb9a: 4798 blx r3
res = lv_img_decoder_built_in_line_alpha(dsc, x, y, len, buf);
fb9c: 2001 movs r0, #1
fb9e: e724 b.n f9ea <lv_img_decoder_built_in_read_line+0x26>
w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/
fba0: 68eb ldr r3, [r5, #12]
fba2: f3c3 238a ubfx r3, r3, #10, #11
fba6: 109a asrs r2, r3, #2
if(dsc->header.w & 0x3) w++;
fba8: f013 0f03 tst.w r3, #3
w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/
fbac: bf0c ite eq
fbae: fa0f fb82 sxtheq.w fp, r2
if(dsc->header.w & 0x3) w++;
fbb2: f102 0b01 addne.w fp, r2, #1
ofs += w * y + (x >> 2); /*First pixel*/
fbb6: 10a3 asrs r3, r4, #2
fbb8: fb0a 3a0b mla sl, sl, fp, r3
pos = 6 - ((x & 0x3) * 2);
fbbc: 43e4 mvns r4, r4
fbbe: f004 0403 and.w r4, r4, #3
fbc2: 0064 lsls r4, r4, #1
opa_table = alpha2_opa_table;
fbc4: f10d 0914 add.w r9, sp, #20
fbc8: e7b3 b.n fb32 <lv_img_decoder_built_in_read_line+0x16e>
w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/
fbca: 68eb ldr r3, [r5, #12]
fbcc: f3c3 238a ubfx r3, r3, #10, #11
fbd0: 105a asrs r2, r3, #1
if(dsc->header.w & 0x1) w++;
fbd2: f013 0f01 tst.w r3, #1
w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/
fbd6: bf0c ite eq
fbd8: fa0f fb82 sxtheq.w fp, r2
if(dsc->header.w & 0x1) w++;
fbdc: f102 0b01 addne.w fp, r2, #1
ofs += w * y + (x >> 1); /*First pixel*/
fbe0: 1063 asrs r3, r4, #1
fbe2: fb0a 3a0b mla sl, sl, fp, r3
pos = 4 - ((x & 0x1) * 4);
fbe6: f014 0f01 tst.w r4, #1
fbea: d013 beq.n fc14 <lv_img_decoder_built_in_read_line+0x250>
fbec: 2400 movs r4, #0
opa_table = alpha4_opa_table;
fbee: f10d 0918 add.w r9, sp, #24
fbf2: e79e b.n fb32 <lv_img_decoder_built_in_read_line+0x16e>
w = dsc->header.w; /*E.g. x = 7 -> w = 7 (bytes)*/
fbf4: 68eb ldr r3, [r5, #12]
fbf6: f3c3 238a ubfx r3, r3, #10, #11
fbfa: b29a uxth r2, r3
fbfc: fa0f fb83 sxth.w fp, r3
ofs += w * y + x; /*First pixel*/
fc00: fb0a 4a02 mla sl, sl, r2, r4
pos = 0;
fc04: 2400 movs r4, #0
const lv_opa_t * opa_table = NULL;
fc06: 46a1 mov r9, r4
fc08: e793 b.n fb32 <lv_img_decoder_built_in_read_line+0x16e>
int8_t pos = 0;
fc0a: 2400 movs r4, #0
uint32_t ofs = 0;
fc0c: 46a2 mov sl, r4
lv_coord_t w = 0;
fc0e: 46a3 mov fp, r4
const lv_opa_t * opa_table = NULL;
fc10: 46a1 mov r9, r4
fc12: e78e b.n fb32 <lv_img_decoder_built_in_read_line+0x16e>
pos = 4 - ((x & 0x1) * 4);
fc14: 2404 movs r4, #4
opa_table = alpha4_opa_table;
fc16: f10d 0918 add.w r9, sp, #24
fc1a: e78a b.n fb32 <lv_img_decoder_built_in_read_line+0x16e>
lv_fs_seek(user_data->f, ofs + 4); /*+4 to skip the header*/
fc1c: f10a 0104 add.w r1, sl, #4
fc20: 9b03 ldr r3, [sp, #12]
fc22: 6818 ldr r0, [r3, #0]
fc24: 4b14 ldr r3, [pc, #80] ; (fc78 <lv_img_decoder_built_in_read_line+0x2b4>)
fc26: 4798 blx r3
lv_fs_read(user_data->f, fs_buf, w, NULL);
fc28: 2300 movs r3, #0
fc2a: 465a mov r2, fp
fc2c: f8dd b008 ldr.w fp, [sp, #8]
fc30: 4659 mov r1, fp
fc32: 9803 ldr r0, [sp, #12]
fc34: 6800 ldr r0, [r0, #0]
fc36: f8df a044 ldr.w sl, [pc, #68] ; fc7c <lv_img_decoder_built_in_read_line+0x2b8>
fc3a: 47d0 blx sl
data_tmp = fs_buf;
fc3c: 46da mov sl, fp
fc3e: e784 b.n fb4a <lv_img_decoder_built_in_read_line+0x186>
static lv_res_t lv_img_decoder_built_in_line_indexed(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_INDEXED
uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf);
fc40: 7b08 ldrb r0, [r1, #12]
fc42: f000 001f and.w r0, r0, #31
fc46: 4b0b ldr r3, [pc, #44] ; (fc74 <lv_img_decoder_built_in_read_line+0x2b0>)
fc48: 4798 blx r3
fc4a: 4681 mov r9, r0
uint16_t mask = (1 << px_size) - 1; /*E.g. px_size = 2; mask = 0x03*/
fc4c: f04f 0801 mov.w r8, #1
fc50: fa08 f800 lsl.w r8, r8, r0
fc54: f108 38ff add.w r8, r8, #4294967295
fc58: fa1f f888 uxth.w r8, r8
lv_coord_t w = 0;
int8_t pos = 0;
uint32_t ofs = 0;
switch(dsc->header.cf) {
fc5c: 7b2b ldrb r3, [r5, #12]
fc5e: f003 031f and.w r3, r3, #31
fc62: 3b07 subs r3, #7
fc64: 2b03 cmp r3, #3
fc66: f200 80a5 bhi.w fdb4 <lv_img_decoder_built_in_read_line+0x3f0>
fc6a: e8df f003 tbb [pc, r3]
fc6e: 681d .short 0x681d
fc70: 967e .short 0x967e
fc72: bf00 nop
fc74: 00009681 .word 0x00009681
fc78: 00011cf9 .word 0x00011cf9
fc7c: 00011cbd .word 0x00011cbd
fc80: 00025440 .word 0x00025440
fc84: 0002528c .word 0x0002528c
fc88: 00025318 .word 0x00025318
fc8c: 0001225d .word 0x0001225d
fc90: 0002541c .word 0x0002541c
fc94: 00025464 .word 0x00025464
fc98: 000252c4 .word 0x000252c4
fc9c: 000252b4 .word 0x000252b4
fca0: 0001293d .word 0x0001293d
fca4: 00012571 .word 0x00012571
case LV_IMG_CF_INDEXED_1BIT:
w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/
fca8: 68eb ldr r3, [r5, #12]
fcaa: f3c3 238a ubfx r3, r3, #10, #11
fcae: ea4f 0be3 mov.w fp, r3, asr #3
if(dsc->header.w & 0x7) w++;
fcb2: f013 0f07 tst.w r3, #7
w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/
fcb6: bf0c ite eq
fcb8: fa0f fb8b sxtheq.w fp, fp
if(dsc->header.w & 0x7) w++;
fcbc: f10b 0b01 addne.w fp, fp, #1
ofs += w * y + (x >> 3); /*First pixel*/
fcc0: 10e3 asrs r3, r4, #3
fcc2: fb0a 3a0b mla sl, sl, fp, r3
ofs += 8; /*Skip the palette*/
fcc6: f10a 0a08 add.w sl, sl, #8
pos = 7 - (x & 0x7);
fcca: 43e4 mvns r4, r4
fccc: f004 0407 and.w r4, r4, #7
ofs += 1024; /*Skip the palette*/
pos = 0;
break;
}
lv_img_decoder_built_in_data_t * user_data = dsc->user_data;
fcd0: 69ef ldr r7, [r5, #28]
#if LV_USE_FILESYSTEM
uint8_t * fs_buf = _lv_mem_buf_get(w);
fcd2: 4658 mov r0, fp
fcd4: 4b41 ldr r3, [pc, #260] ; (fddc <lv_img_decoder_built_in_read_line+0x418>)
fcd6: 4798 blx r3
fcd8: 9002 str r0, [sp, #8]
#endif
const uint8_t * data_tmp = NULL;
if(dsc->src_type == LV_IMG_SRC_VARIABLE) {
fcda: 7aab ldrb r3, [r5, #10]
fcdc: 2b00 cmp r3, #0
fcde: d16e bne.n fdbe <lv_img_decoder_built_in_read_line+0x3fa>
const lv_img_dsc_t * img_dsc = dsc->src;
data_tmp = img_dsc->data + ofs;
fce0: 686b ldr r3, [r5, #4]
fce2: 689b ldr r3, [r3, #8]
fce4: 449a add sl, r3
return LV_RES_INV;
#endif
}
lv_coord_t i;
for(i = 0; i < len; i++) {
fce6: 2e00 cmp r6, #0
fce8: dd24 ble.n fd34 <lv_img_decoder_built_in_read_line+0x370>
fcea: 9a15 ldr r2, [sp, #84] ; 0x54
fcec: 1e71 subs r1, r6, #1
fcee: b289 uxth r1, r1
fcf0: 3101 adds r1, #1
fcf2: eb01 0141 add.w r1, r1, r1, lsl #1
fcf6: 4411 add r1, r2
#endif
buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = user_data->opa[val_act];
pos -= px_size;
if(pos < 0) {
pos = 8 - px_size;
fcf8: f1c9 0508 rsb r5, r9, #8
fcfc: b26d sxtb r5, r5
uint8_t val_act = (*data_tmp & (mask << pos)) >> pos;
fcfe: f89a 3000 ldrb.w r3, [sl]
fd02: fa08 f004 lsl.w r0, r8, r4
fd06: 4003 ands r3, r0
fd08: 4123 asrs r3, r4
lv_color_t color = user_data->palette[val_act];
fd0a: b2db uxtb r3, r3
fd0c: 6878 ldr r0, [r7, #4]
fd0e: f830 0013 ldrh.w r0, [r0, r3, lsl #1]
buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = color.full & 0xFF;
fd12: 7010 strb r0, [r2, #0]
buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + 1] = (color.full >> 8) & 0xFF;
fd14: 0a00 lsrs r0, r0, #8
fd16: 7050 strb r0, [r2, #1]
buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = user_data->opa[val_act];
fd18: 68b8 ldr r0, [r7, #8]
fd1a: 5cc3 ldrb r3, [r0, r3]
fd1c: 7093 strb r3, [r2, #2]
pos -= px_size;
fd1e: eba4 0409 sub.w r4, r4, r9
fd22: b264 sxtb r4, r4
if(pos < 0) {
fd24: 2c00 cmp r4, #0
pos = 8 - px_size;
fd26: bfbc itt lt
fd28: 462c movlt r4, r5
data_tmp++;
fd2a: f10a 0a01 addlt.w sl, sl, #1
fd2e: 3203 adds r2, #3
for(i = 0; i < len; i++) {
fd30: 428a cmp r2, r1
fd32: d1e4 bne.n fcfe <lv_img_decoder_built_in_read_line+0x33a>
}
}
#if LV_USE_FILESYSTEM
_lv_mem_buf_release(fs_buf);
fd34: 9802 ldr r0, [sp, #8]
fd36: 4b2a ldr r3, [pc, #168] ; (fde0 <lv_img_decoder_built_in_read_line+0x41c>)
fd38: 4798 blx r3
res = lv_img_decoder_built_in_line_indexed(dsc, x, y, len, buf);
fd3a: 2001 movs r0, #1
fd3c: e655 b.n f9ea <lv_img_decoder_built_in_read_line+0x26>
w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/
fd3e: 68eb ldr r3, [r5, #12]
fd40: f3c3 238a ubfx r3, r3, #10, #11
fd44: ea4f 0ba3 mov.w fp, r3, asr #2
if(dsc->header.w & 0x3) w++;
fd48: f013 0f03 tst.w r3, #3
w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/
fd4c: bf0c ite eq
fd4e: fa0f fb8b sxtheq.w fp, fp
if(dsc->header.w & 0x3) w++;
fd52: f10b 0b01 addne.w fp, fp, #1
ofs += w * y + (x >> 2); /*First pixel*/
fd56: 10a3 asrs r3, r4, #2
fd58: fb0a 3a0b mla sl, sl, fp, r3
ofs += 16; /*Skip the palette*/
fd5c: f10a 0a10 add.w sl, sl, #16
pos = 6 - ((x & 0x3) * 2);
fd60: 43e4 mvns r4, r4
fd62: f004 0403 and.w r4, r4, #3
fd66: 0064 lsls r4, r4, #1
fd68: e7b2 b.n fcd0 <lv_img_decoder_built_in_read_line+0x30c>
w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/
fd6a: 68eb ldr r3, [r5, #12]
fd6c: f3c3 238a ubfx r3, r3, #10, #11
fd70: ea4f 0b63 mov.w fp, r3, asr #1
if(dsc->header.w & 0x1) w++;
fd74: f013 0f01 tst.w r3, #1
w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/
fd78: bf0c ite eq
fd7a: fa0f fb8b sxtheq.w fp, fp
if(dsc->header.w & 0x1) w++;
fd7e: f10b 0b01 addne.w fp, fp, #1
ofs += w * y + (x >> 1); /*First pixel*/
fd82: 1063 asrs r3, r4, #1
fd84: fb0a 3a0b mla sl, sl, fp, r3
ofs += 64; /*Skip the palette*/
fd88: f10a 0a40 add.w sl, sl, #64 ; 0x40
pos = 4 - ((x & 0x1) * 4);
fd8c: f004 0401 and.w r4, r4, #1
fd90: 2c00 cmp r4, #0
fd92: bf0c ite eq
fd94: 2404 moveq r4, #4
fd96: 2400 movne r4, #0
fd98: e79a b.n fcd0 <lv_img_decoder_built_in_read_line+0x30c>
w = dsc->header.w; /*E.g. x = 7 -> w = 7 (bytes)*/
fd9a: 68eb ldr r3, [r5, #12]
fd9c: f3c3 2b8a ubfx fp, r3, #10, #11
fda0: fa1f f38b uxth.w r3, fp
fda4: fa0f fb8b sxth.w fp, fp
ofs += w * y + x; /*First pixel*/
fda8: fb0a 4a03 mla sl, sl, r3, r4
ofs += 1024; /*Skip the palette*/
fdac: f50a 6a80 add.w sl, sl, #1024 ; 0x400
pos = 0;
fdb0: 2400 movs r4, #0
fdb2: e78d b.n fcd0 <lv_img_decoder_built_in_read_line+0x30c>
uint32_t ofs = 0;
fdb4: f04f 0a00 mov.w sl, #0
int8_t pos = 0;
fdb8: 4654 mov r4, sl
lv_coord_t w = 0;
fdba: 46d3 mov fp, sl
fdbc: e788 b.n fcd0 <lv_img_decoder_built_in_read_line+0x30c>
lv_fs_seek(user_data->f, ofs + 4); /*+4 to skip the header*/
fdbe: f10a 0104 add.w r1, sl, #4
fdc2: 6838 ldr r0, [r7, #0]
fdc4: 4b07 ldr r3, [pc, #28] ; (fde4 <lv_img_decoder_built_in_read_line+0x420>)
fdc6: 4798 blx r3
lv_fs_read(user_data->f, fs_buf, w, NULL);
fdc8: 2300 movs r3, #0
fdca: 465a mov r2, fp
fdcc: f8dd a008 ldr.w sl, [sp, #8]
fdd0: 4651 mov r1, sl
fdd2: 6838 ldr r0, [r7, #0]
fdd4: 4d04 ldr r5, [pc, #16] ; (fde8 <lv_img_decoder_built_in_read_line+0x424>)
fdd6: 47a8 blx r5
fdd8: e785 b.n fce6 <lv_img_decoder_built_in_read_line+0x322>
fdda: bf00 nop
fddc: 0001293d .word 0x0001293d
fde0: 00012571 .word 0x00012571
fde4: 00011cf9 .word 0x00011cf9
fde8: 00011cbd .word 0x00011cbd
0000fdec <lv_img_decoder_get_info>:
{
fdec: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
fdf0: 4681 mov r9, r0
fdf2: 460e mov r6, r1
header->always_zero = 0;
fdf4: 780b ldrb r3, [r1, #0]
fdf6: f36f 1347 bfc r3, #5, #3
fdfa: 700b strb r3, [r1, #0]
_LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) {
fdfc: 480f ldr r0, [pc, #60] ; (fe3c <lv_img_decoder_get_info+0x50>)
fdfe: 4b10 ldr r3, [pc, #64] ; (fe40 <lv_img_decoder_get_info+0x54>)
fe00: 4798 blx r3
fe02: b1c8 cbz r0, fe38 <lv_img_decoder_get_info+0x4c>
fe04: 4604 mov r4, r0
res = LV_RES_INV;
fe06: f04f 0a00 mov.w sl, #0
_LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) {
fe0a: f8df 8030 ldr.w r8, [pc, #48] ; fe3c <lv_img_decoder_get_info+0x50>
fe0e: 4f0d ldr r7, [pc, #52] ; (fe44 <lv_img_decoder_get_info+0x58>)
fe10: e005 b.n fe1e <lv_img_decoder_get_info+0x32>
res = LV_RES_INV;
fe12: 4655 mov r5, sl
_LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) {
fe14: 4621 mov r1, r4
fe16: 4640 mov r0, r8
fe18: 47b8 blx r7
fe1a: 4604 mov r4, r0
fe1c: b148 cbz r0, fe32 <lv_img_decoder_get_info+0x46>
if(d->info_cb) {
fe1e: 6823 ldr r3, [r4, #0]
fe20: 2b00 cmp r3, #0
fe22: d0f6 beq.n fe12 <lv_img_decoder_get_info+0x26>
res = d->info_cb(d, src, header);
fe24: 4632 mov r2, r6
fe26: 4649 mov r1, r9
fe28: 4620 mov r0, r4
fe2a: 4798 blx r3
fe2c: 4605 mov r5, r0
if(res == LV_RES_OK) break;
fe2e: 2801 cmp r0, #1
fe30: d1f0 bne.n fe14 <lv_img_decoder_get_info+0x28>
}
fe32: 4628 mov r0, r5
fe34: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
lv_res_t res = LV_RES_INV;
fe38: 2500 movs r5, #0
fe3a: e7fa b.n fe32 <lv_img_decoder_get_info+0x46>
fe3c: 20006ca4 .word 0x20006ca4
fe40: 00011fa9 .word 0x00011fa9
fe44: 00011fbd .word 0x00011fbd
0000fe48 <lv_img_decoder_open>:
{
fe48: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
fe4c: 4682 mov sl, r0
fe4e: 4688 mov r8, r1
dsc->color = color;
fe50: 8102 strh r2, [r0, #8]
dsc->src_type = lv_img_src_get_type(src);
fe52: 4608 mov r0, r1
fe54: 4b26 ldr r3, [pc, #152] ; (fef0 <lv_img_decoder_open+0xa8>)
fe56: 4798 blx r3
fe58: f88a 000a strb.w r0, [sl, #10]
dsc->user_data = NULL;
fe5c: 2300 movs r3, #0
fe5e: f8ca 301c str.w r3, [sl, #28]
if(dsc->src_type == LV_IMG_SRC_FILE) {
fe62: 2801 cmp r0, #1
fe64: d00d beq.n fe82 <lv_img_decoder_open+0x3a>
dsc->src = src;
fe66: f8ca 8004 str.w r8, [sl, #4]
_LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) {
fe6a: 4822 ldr r0, [pc, #136] ; (fef4 <lv_img_decoder_open+0xac>)
fe6c: 4b22 ldr r3, [pc, #136] ; (fef8 <lv_img_decoder_open+0xb0>)
fe6e: 4798 blx r3
fe70: 4604 mov r4, r0
fe72: 2800 cmp r0, #0
fe74: d036 beq.n fee4 <lv_img_decoder_open+0x9c>
fe76: 2500 movs r5, #0
res = d->info_cb(d, src, &dsc->header);
fe78: f10a 090c add.w r9, sl, #12
_LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) {
fe7c: 4f1d ldr r7, [pc, #116] ; (fef4 <lv_img_decoder_open+0xac>)
fe7e: 4e1f ldr r6, [pc, #124] ; (fefc <lv_img_decoder_open+0xb4>)
fe80: e010 b.n fea4 <lv_img_decoder_open+0x5c>
size_t fnlen = strlen(src);
fe82: 4640 mov r0, r8
fe84: 4b1e ldr r3, [pc, #120] ; (ff00 <lv_img_decoder_open+0xb8>)
fe86: 4798 blx r3
dsc->src = lv_mem_alloc(fnlen + 1);
fe88: 3001 adds r0, #1
fe8a: 4b1e ldr r3, [pc, #120] ; (ff04 <lv_img_decoder_open+0xbc>)
fe8c: 4798 blx r3
fe8e: f8ca 0004 str.w r0, [sl, #4]
strcpy((char *)dsc->src, src);
fe92: 4641 mov r1, r8
fe94: 4b1c ldr r3, [pc, #112] ; (ff08 <lv_img_decoder_open+0xc0>)
fe96: 4798 blx r3
fe98: e7e7 b.n fe6a <lv_img_decoder_open+0x22>
_LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) {
fe9a: 4621 mov r1, r4
fe9c: 4638 mov r0, r7
fe9e: 47b0 blx r6
fea0: 4604 mov r4, r0
fea2: b1d8 cbz r0, fedc <lv_img_decoder_open+0x94>
if(d->info_cb == NULL || d->open_cb == NULL) continue;
fea4: 6823 ldr r3, [r4, #0]
fea6: 2b00 cmp r3, #0
fea8: d0f7 beq.n fe9a <lv_img_decoder_open+0x52>
feaa: 6862 ldr r2, [r4, #4]
feac: 2a00 cmp r2, #0
feae: d0f4 beq.n fe9a <lv_img_decoder_open+0x52>
res = d->info_cb(d, src, &dsc->header);
feb0: 464a mov r2, r9
feb2: 4641 mov r1, r8
feb4: 4620 mov r0, r4
feb6: 4798 blx r3
feb8: 4605 mov r5, r0
if(res != LV_RES_OK) continue;
feba: 2801 cmp r0, #1
febc: d1ed bne.n fe9a <lv_img_decoder_open+0x52>
dsc->error_msg = NULL;
febe: 2300 movs r3, #0
fec0: f8ca 3018 str.w r3, [sl, #24]
dsc->img_data = NULL;
fec4: f8ca 3010 str.w r3, [sl, #16]
dsc->decoder = d;
fec8: f8ca 4000 str.w r4, [sl]
res = d->open_cb(d, dsc);
fecc: 6863 ldr r3, [r4, #4]
fece: 4651 mov r1, sl
fed0: 4620 mov r0, r4
fed2: 4798 blx r3
fed4: 4605 mov r5, r0
if(res == LV_RES_OK) break;
fed6: 2801 cmp r0, #1
fed8: d1df bne.n fe9a <lv_img_decoder_open+0x52>
feda: e000 b.n fede <lv_img_decoder_open+0x96>
if(res == LV_RES_INV) {
fedc: b11d cbz r5, fee6 <lv_img_decoder_open+0x9e>
}
fede: 4628 mov r0, r5
fee0: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
lv_res_t res = LV_RES_INV;
fee4: 2500 movs r5, #0
_lv_memset_00(dsc, sizeof(lv_img_decoder_dsc_t));
fee6: 2120 movs r1, #32
fee8: 4650 mov r0, sl
feea: 4b08 ldr r3, [pc, #32] ; (ff0c <lv_img_decoder_open+0xc4>)
feec: 4798 blx r3
feee: e7f6 b.n fede <lv_img_decoder_open+0x96>
fef0: 00009969 .word 0x00009969
fef4: 20006ca4 .word 0x20006ca4
fef8: 00011fa9 .word 0x00011fa9
fefc: 00011fbd .word 0x00011fbd
ff00: 0001b51f .word 0x0001b51f
ff04: 000123dd .word 0x000123dd
ff08: 0001b50f .word 0x0001b50f
ff0c: 00012b37 .word 0x00012b37
0000ff10 <lv_img_decoder_read_line>:
{
ff10: b570 push {r4, r5, r6, lr}
ff12: b082 sub sp, #8
if(dsc->decoder->read_line_cb) res = dsc->decoder->read_line_cb(dsc->decoder, dsc, x, y, len, buf);
ff14: 6806 ldr r6, [r0, #0]
ff16: 68b4 ldr r4, [r6, #8]
ff18: b154 cbz r4, ff30 <lv_img_decoder_read_line+0x20>
ff1a: 461d mov r5, r3
ff1c: 4613 mov r3, r2
ff1e: 460a mov r2, r1
ff20: 4601 mov r1, r0
ff22: 9806 ldr r0, [sp, #24]
ff24: 9001 str r0, [sp, #4]
ff26: 9500 str r5, [sp, #0]
ff28: 4630 mov r0, r6
ff2a: 47a0 blx r4
}
ff2c: b002 add sp, #8
ff2e: bd70 pop {r4, r5, r6, pc}
lv_res_t res = LV_RES_INV;
ff30: 2000 movs r0, #0
ff32: e7fb b.n ff2c <lv_img_decoder_read_line+0x1c>
0000ff34 <lv_img_decoder_close>:
if(dsc->decoder) {
ff34: 6803 ldr r3, [r0, #0]
ff36: b183 cbz r3, ff5a <lv_img_decoder_close+0x26>
{
ff38: b510 push {r4, lr}
ff3a: 4604 mov r4, r0
if(dsc->decoder->close_cb) dsc->decoder->close_cb(dsc->decoder, dsc);
ff3c: 68da ldr r2, [r3, #12]
ff3e: b112 cbz r2, ff46 <lv_img_decoder_close+0x12>
ff40: 4601 mov r1, r0
ff42: 4618 mov r0, r3
ff44: 4790 blx r2
if(dsc->src_type == LV_IMG_SRC_FILE) {
ff46: 7aa3 ldrb r3, [r4, #10]
ff48: 2b01 cmp r3, #1
ff4a: d000 beq.n ff4e <lv_img_decoder_close+0x1a>
ff4c: bd10 pop {r4, pc}
lv_mem_free(dsc->src);
ff4e: 6860 ldr r0, [r4, #4]
ff50: 4b02 ldr r3, [pc, #8] ; (ff5c <lv_img_decoder_close+0x28>)
ff52: 4798 blx r3
dsc->src = NULL;
ff54: 2300 movs r3, #0
ff56: 6063 str r3, [r4, #4]
}
ff58: e7f8 b.n ff4c <lv_img_decoder_close+0x18>
ff5a: 4770 bx lr
ff5c: 000124c5 .word 0x000124c5
0000ff60 <lv_img_decoder_create>:
{
ff60: b530 push {r4, r5, lr}
ff62: b083 sub sp, #12
decoder = _lv_ll_ins_head(&LV_GC_ROOT(_lv_img_defoder_ll));
ff64: 480d ldr r0, [pc, #52] ; (ff9c <lv_img_decoder_create+0x3c>)
ff66: 4b0e ldr r3, [pc, #56] ; (ffa0 <lv_img_decoder_create+0x40>)
ff68: 4798 blx r3
ff6a: 4604 mov r4, r0
LV_ASSERT_MEM(decoder);
ff6c: 4b0d ldr r3, [pc, #52] ; (ffa4 <lv_img_decoder_create+0x44>)
ff6e: 4798 blx r3
ff70: b138 cbz r0, ff82 <lv_img_decoder_create+0x22>
if(decoder == NULL) return NULL;
ff72: b11c cbz r4, ff7c <lv_img_decoder_create+0x1c>
_lv_memset_00(decoder, sizeof(lv_img_decoder_t));
ff74: 2110 movs r1, #16
ff76: 4620 mov r0, r4
ff78: 4b0b ldr r3, [pc, #44] ; (ffa8 <lv_img_decoder_create+0x48>)
ff7a: 4798 blx r3
}
ff7c: 4620 mov r0, r4
ff7e: b003 add sp, #12
ff80: bd30 pop {r4, r5, pc}
LV_ASSERT_MEM(decoder);
ff82: 4b0a ldr r3, [pc, #40] ; (ffac <lv_img_decoder_create+0x4c>)
ff84: 9300 str r3, [sp, #0]
ff86: 22c9 movs r2, #201 ; 0xc9
ff88: 4909 ldr r1, [pc, #36] ; (ffb0 <lv_img_decoder_create+0x50>)
ff8a: 2003 movs r0, #3
ff8c: 4d09 ldr r5, [pc, #36] ; (ffb4 <lv_img_decoder_create+0x54>)
ff8e: 47a8 blx r5
ff90: 4622 mov r2, r4
ff92: 2300 movs r3, #0
ff94: 4808 ldr r0, [pc, #32] ; (ffb8 <lv_img_decoder_create+0x58>)
ff96: 4909 ldr r1, [pc, #36] ; (ffbc <lv_img_decoder_create+0x5c>)
ff98: 4788 blx r1
ff9a: e7fe b.n ff9a <lv_img_decoder_create+0x3a>
ff9c: 20006ca4 .word 0x20006ca4
ffa0: 00011f11 .word 0x00011f11
ffa4: 000022b1 .word 0x000022b1
ffa8: 00012b37 .word 0x00012b37
ffac: 000252e8 .word 0x000252e8
ffb0: 00025318 .word 0x00025318
ffb4: 0001225d .word 0x0001225d
ffb8: 00023fd8 .word 0x00023fd8
ffbc: 000022b9 .word 0x000022b9
0000ffc0 <_lv_img_decoder_init>:
{
ffc0: b510 push {r4, lr}
ffc2: b082 sub sp, #8
_lv_ll_init(&LV_GC_ROOT(_lv_img_defoder_ll), sizeof(lv_img_decoder_t));
ffc4: 2110 movs r1, #16
ffc6: 4814 ldr r0, [pc, #80] ; (10018 <STACK_SIZE+0x18>)
ffc8: 4b14 ldr r3, [pc, #80] ; (1001c <STACK_SIZE+0x1c>)
ffca: 4798 blx r3
decoder = lv_img_decoder_create();
ffcc: 4b14 ldr r3, [pc, #80] ; (10020 <STACK_SIZE+0x20>)
ffce: 4798 blx r3
if(decoder == NULL) {
ffd0: b148 cbz r0, ffe6 <_lv_img_decoder_init+0x26>
decoder->info_cb = info_cb;
ffd2: 4a14 ldr r2, [pc, #80] ; (10024 <STACK_SIZE+0x24>)
ffd4: 6002 str r2, [r0, #0]
decoder->open_cb = open_cb;
ffd6: 4a14 ldr r2, [pc, #80] ; (10028 <STACK_SIZE+0x28>)
ffd8: 6042 str r2, [r0, #4]
decoder->read_line_cb = read_line_cb;
ffda: 4a14 ldr r2, [pc, #80] ; (1002c <STACK_SIZE+0x2c>)
ffdc: 6082 str r2, [r0, #8]
decoder->close_cb = close_cb;
ffde: 4a14 ldr r2, [pc, #80] ; (10030 <STACK_SIZE+0x30>)
ffe0: 60c2 str r2, [r0, #12]
}
ffe2: b002 add sp, #8
ffe4: bd10 pop {r4, pc}
LV_LOG_WARN("lv_img_decoder_init: out of memory");
ffe6: 4b13 ldr r3, [pc, #76] ; (10034 <STACK_SIZE+0x34>)
ffe8: 9300 str r3, [sp, #0]
ffea: 4b13 ldr r3, [pc, #76] ; (10038 <STACK_SIZE+0x38>)
ffec: 2247 movs r2, #71 ; 0x47
ffee: 4913 ldr r1, [pc, #76] ; (1003c <STACK_SIZE+0x3c>)
fff0: 2002 movs r0, #2
fff2: 4c13 ldr r4, [pc, #76] ; (10040 <STACK_SIZE+0x40>)
fff4: 47a0 blx r4
LV_ASSERT_MEM(decoder);
fff6: 2000 movs r0, #0
fff8: 4b12 ldr r3, [pc, #72] ; (10044 <STACK_SIZE+0x44>)
fffa: 4798 blx r3
fffc: 2800 cmp r0, #0
fffe: d1f0 bne.n ffe2 <_lv_img_decoder_init+0x22>
10000: 4b0d ldr r3, [pc, #52] ; (10038 <STACK_SIZE+0x38>)
10002: 9300 str r3, [sp, #0]
10004: 2248 movs r2, #72 ; 0x48
10006: 490d ldr r1, [pc, #52] ; (1003c <STACK_SIZE+0x3c>)
10008: 2003 movs r0, #3
1000a: 47a0 blx r4
1000c: 2200 movs r2, #0
1000e: 2300 movs r3, #0
10010: 480d ldr r0, [pc, #52] ; (10048 <STACK_SIZE+0x48>)
10012: 490e ldr r1, [pc, #56] ; (1004c <STACK_SIZE+0x4c>)
10014: 4788 blx r1
10016: e7fe b.n 10016 <STACK_SIZE+0x16>
10018: 20006ca4 .word 0x20006ca4
1001c: 00011ef9 .word 0x00011ef9
10020: 0000ff61 .word 0x0000ff61
10024: 0000f4ed .word 0x0000f4ed
10028: 0000f625 .word 0x0000f625
1002c: 0000f9c5 .word 0x0000f9c5
10030: 0000f5e9 .word 0x0000f5e9
10034: 000254a0 .word 0x000254a0
10038: 00025300 .word 0x00025300
1003c: 00025318 .word 0x00025318
10040: 0001225d .word 0x0001225d
10044: 000022b1 .word 0x000022b1
10048: 00023fd8 .word 0x00023fd8
1004c: 000022b9 .word 0x000022b9
00010050 <lv_font_get_glyph_bitmap>:
* @param font_p pointer to a font
* @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)
{
10050: b508 push {r3, lr}
return font_p->get_glyph_bitmap(font_p, letter);
10052: 6843 ldr r3, [r0, #4]
10054: 4798 blx r3
}
10056: bd08 pop {r3, pc}
00010058 <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)
{
10058: b510 push {r4, lr}
return font_p->get_glyph_dsc(font_p, dsc_out, letter, letter_next);
1005a: 6804 ldr r4, [r0, #0]
1005c: 47a0 blx r4
}
1005e: bd10 pop {r4, pc}
00010060 <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)
{
10060: b510 push {r4, lr}
10062: b084 sub sp, #16
lv_font_glyph_dsc_t g;
bool ret;
ret = lv_font_get_glyph_dsc(font, &g, letter, letter_next);
10064: 4613 mov r3, r2
10066: 460a mov r2, r1
10068: a901 add r1, sp, #4
1006a: 4c04 ldr r4, [pc, #16] ; (1007c <lv_font_get_glyph_width+0x1c>)
1006c: 47a0 blx r4
if(ret) return g.adv_w;
1006e: b118 cbz r0, 10078 <lv_font_get_glyph_width+0x18>
10070: f8bd 0004 ldrh.w r0, [sp, #4]
else return 0;
}
10074: b004 add sp, #16
10076: bd10 pop {r4, pc}
else return 0;
10078: 2000 movs r0, #0
1007a: e7fb b.n 10074 <lv_font_get_glyph_width+0x14>
1007c: 00010059 .word 0x00010059
00010080 <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];
10080: 7803 ldrb r3, [r0, #0]
10082: 780a ldrb r2, [r1, #0]
10084: 4293 cmp r3, r2
10086: bf11 iteee ne
10088: 1a98 subne r0, r3, r2
else return (int32_t) ref8_p[1] - element8_p[1];
1008a: 7840 ldrbeq r0, [r0, #1]
1008c: 784b ldrbeq r3, [r1, #1]
1008e: 1ac0 subeq r0, r0, r3
}
10090: 4770 bx lr
00010092 <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];
10092: 8803 ldrh r3, [r0, #0]
10094: 880a ldrh r2, [r1, #0]
10096: 4293 cmp r3, r2
10098: bf11 iteee ne
1009a: 1a98 subne r0, r3, r2
else return (int32_t) ref16_p[1] - element16_p[1];
1009c: 8840 ldrheq r0, [r0, #2]
1009e: 884b ldrheq r3, [r1, #2]
100a0: 1ac0 subeq r0, r0, r3
}
100a2: 4770 bx lr
000100a4 <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));
100a4: 8800 ldrh r0, [r0, #0]
100a6: 880b ldrh r3, [r1, #0]
}
100a8: 1ac0 subs r0, r0, r3
100aa: 4770 bx lr
000100ac <get_glyph_dsc_id>:
if(letter == '\0') return 0;
100ac: 460b mov r3, r1
100ae: 2900 cmp r1, #0
100b0: d06c beq.n 1018c <get_glyph_dsc_id+0xe0>
{
100b2: b5f0 push {r4, r5, r6, r7, lr}
100b4: b085 sub sp, #20
lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc;
100b6: 6904 ldr r4, [r0, #16]
if(letter == fdsc->last_letter) return fdsc->last_glyph_id;
100b8: 69a2 ldr r2, [r4, #24]
100ba: 4291 cmp r1, r2
100bc: d015 beq.n 100ea <get_glyph_dsc_id+0x3e>
for(i = 0; i < fdsc->cmap_num; i++) {
100be: 8a67 ldrh r7, [r4, #18]
100c0: f3c7 0709 ubfx r7, r7, #0, #10
100c4: 2f00 cmp r7, #0
100c6: d05d beq.n 10184 <get_glyph_dsc_id+0xd8>
uint32_t rcp = letter - fdsc->cmaps[i].range_start;
100c8: 68a1 ldr r1, [r4, #8]
100ca: 6808 ldr r0, [r1, #0]
100cc: 1a1a subs r2, r3, r0
100ce: 9203 str r2, [sp, #12]
if(rcp > fdsc->cmaps[i].range_length) continue;
100d0: 8888 ldrh r0, [r1, #4]
100d2: 4282 cmp r2, r0
100d4: d80b bhi.n 100ee <get_glyph_dsc_id+0x42>
uint32_t rcp = letter - fdsc->cmaps[i].range_start;
100d6: 2600 movs r6, #0
100d8: 461d mov r5, r3
if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY) {
100da: 7c8b ldrb r3, [r1, #18]
100dc: b9e3 cbnz r3, 10118 <get_glyph_dsc_id+0x6c>
glyph_id = fdsc->cmaps[i].glyph_id_start + rcp;
100de: 88c8 ldrh r0, [r1, #6]
100e0: 4410 add r0, r2
fdsc->last_letter = letter;
100e2: 61a5 str r5, [r4, #24]
fdsc->last_glyph_id = glyph_id;
100e4: 61e0 str r0, [r4, #28]
}
100e6: b005 add sp, #20
100e8: bdf0 pop {r4, r5, r6, r7, pc}
if(letter == fdsc->last_letter) return fdsc->last_glyph_id;
100ea: 69e0 ldr r0, [r4, #28]
100ec: e7fb b.n 100e6 <get_glyph_dsc_id+0x3a>
if(rcp > fdsc->cmaps[i].range_length) continue;
100ee: 2500 movs r5, #0
for(i = 0; i < fdsc->cmap_num; i++) {
100f0: 3501 adds r5, #1
100f2: b2ad uxth r5, r5
100f4: 42bd cmp r5, r7
100f6: da45 bge.n 10184 <get_glyph_dsc_id+0xd8>
uint32_t rcp = letter - fdsc->cmaps[i].range_start;
100f8: eb05 0085 add.w r0, r5, r5, lsl #2
100fc: 0082 lsls r2, r0, #2
100fe: 4616 mov r6, r2
10100: eb01 0e02 add.w lr, r1, r2
10104: f851 2020 ldr.w r2, [r1, r0, lsl #2]
10108: 1a9a subs r2, r3, r2
1010a: 9203 str r2, [sp, #12]
if(rcp > fdsc->cmaps[i].range_length) continue;
1010c: f8be 0004 ldrh.w r0, [lr, #4]
10110: 4282 cmp r2, r0
10112: d8ed bhi.n 100f0 <get_glyph_dsc_id+0x44>
uint32_t rcp = letter - fdsc->cmaps[i].range_start;
10114: 4671 mov r1, lr
10116: e7df b.n 100d8 <get_glyph_dsc_id+0x2c>
else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL) {
10118: 2b01 cmp r3, #1
1011a: d005 beq.n 10128 <get_glyph_dsc_id+0x7c>
else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_SPARSE_TINY) {
1011c: 2b02 cmp r3, #2
1011e: d008 beq.n 10132 <get_glyph_dsc_id+0x86>
else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_SPARSE_FULL) {
10120: 2b03 cmp r3, #3
10122: d018 beq.n 10156 <get_glyph_dsc_id+0xaa>
uint32_t glyph_id = 0;
10124: 2000 movs r0, #0
10126: e7dc b.n 100e2 <get_glyph_dsc_id+0x36>
glyph_id = fdsc->cmaps[i].glyph_id_start + gid_ofs_8[rcp];
10128: 68cb ldr r3, [r1, #12]
1012a: 5c9b ldrb r3, [r3, r2]
1012c: 88c8 ldrh r0, [r1, #6]
1012e: 4418 add r0, r3
10130: e7d7 b.n 100e2 <get_glyph_dsc_id+0x36>
uint8_t * p = _lv_utils_bsearch(&rcp, fdsc->cmaps[i].unicode_list, fdsc->cmaps[i].list_length,
10132: 8a0a ldrh r2, [r1, #16]
10134: 6889 ldr r1, [r1, #8]
10136: 4b16 ldr r3, [pc, #88] ; (10190 <get_glyph_dsc_id+0xe4>)
10138: 9300 str r3, [sp, #0]
1013a: 2302 movs r3, #2
1013c: a803 add r0, sp, #12
1013e: 4f15 ldr r7, [pc, #84] ; (10194 <get_glyph_dsc_id+0xe8>)
10140: 47b8 blx r7
if(p) {
10142: 4603 mov r3, r0
10144: b1d0 cbz r0, 1017c <get_glyph_dsc_id+0xd0>
lv_uintptr_t ofs = (lv_uintptr_t)(p - (uint8_t *) fdsc->cmaps[i].unicode_list);
10146: 68a2 ldr r2, [r4, #8]
10148: 4416 add r6, r2
1014a: 68b0 ldr r0, [r6, #8]
1014c: 1a18 subs r0, r3, r0
glyph_id = fdsc->cmaps[i].glyph_id_start + ofs;
1014e: 88f3 ldrh r3, [r6, #6]
10150: eb03 0050 add.w r0, r3, r0, lsr #1
10154: e7c5 b.n 100e2 <get_glyph_dsc_id+0x36>
uint8_t * p = _lv_utils_bsearch(&rcp, fdsc->cmaps[i].unicode_list, fdsc->cmaps[i].list_length,
10156: 8a0a ldrh r2, [r1, #16]
10158: 6889 ldr r1, [r1, #8]
1015a: 4b0d ldr r3, [pc, #52] ; (10190 <get_glyph_dsc_id+0xe4>)
1015c: 9300 str r3, [sp, #0]
1015e: 2302 movs r3, #2
10160: a803 add r0, sp, #12
10162: 4f0c ldr r7, [pc, #48] ; (10194 <get_glyph_dsc_id+0xe8>)
10164: 47b8 blx r7
if(p) {
10166: b158 cbz r0, 10180 <get_glyph_dsc_id+0xd4>
lv_uintptr_t ofs = (lv_uintptr_t)(p - (uint8_t *) fdsc->cmaps[i].unicode_list);
10168: 68a2 ldr r2, [r4, #8]
1016a: 4416 add r6, r2
1016c: 68b2 ldr r2, [r6, #8]
1016e: 1a83 subs r3, r0, r2
ofs = ofs >> 1; /*The list stores `uint16_t` so the get the index divide by 2*/
10170: 085b lsrs r3, r3, #1
glyph_id = fdsc->cmaps[i].glyph_id_start + gid_ofs_16[ofs];
10172: 68f2 ldr r2, [r6, #12]
10174: 5cd3 ldrb r3, [r2, r3]
10176: 88f0 ldrh r0, [r6, #6]
10178: 4418 add r0, r3
1017a: e7b2 b.n 100e2 <get_glyph_dsc_id+0x36>
uint32_t glyph_id = 0;
1017c: 2000 movs r0, #0
1017e: e7b0 b.n 100e2 <get_glyph_dsc_id+0x36>
10180: 2000 movs r0, #0
10182: e7ae b.n 100e2 <get_glyph_dsc_id+0x36>
fdsc->last_letter = letter;
10184: 61a3 str r3, [r4, #24]
fdsc->last_glyph_id = 0;
10186: 2000 movs r0, #0
10188: 61e0 str r0, [r4, #28]
return 0;
1018a: e7ac b.n 100e6 <get_glyph_dsc_id+0x3a>
if(letter == '\0') return 0;
1018c: 4608 mov r0, r1
1018e: 4770 bx lr
10190: 000100a5 .word 0x000100a5
10194: 00014185 .word 0x00014185
00010198 <lv_font_get_bitmap_fmt_txt>:
{
10198: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
1019c: b09f sub sp, #124 ; 0x7c
if(unicode_letter == '\t') unicode_letter = ' ';
1019e: 2909 cmp r1, #9
lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc;
101a0: 6905 ldr r5, [r0, #16]
uint32_t gid = get_glyph_dsc_id(font, unicode_letter);
101a2: bf08 it eq
101a4: 2120 moveq r1, #32
101a6: 4ba0 ldr r3, [pc, #640] ; (10428 <lv_font_get_bitmap_fmt_txt+0x290>)
101a8: 4798 blx r3
if(!gid) return NULL;
101aa: 2800 cmp r0, #0
101ac: f000 84ea beq.w 10b84 <lv_font_get_bitmap_fmt_txt+0x9ec>
101b0: 4680 mov r8, r0
const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[gid];
101b2: 686f ldr r7, [r5, #4]
101b4: eb07 06c0 add.w r6, r7, r0, lsl #3
if(fdsc->bitmap_format == LV_FONT_FMT_TXT_PLAIN) {
101b8: 7d2b ldrb r3, [r5, #20]
101ba: f013 0f03 tst.w r3, #3
101be: d10b bne.n 101d8 <lv_font_get_bitmap_fmt_txt+0x40>
if(gdsc) return &fdsc->glyph_bitmap[gdsc->bitmap_index];
101c0: 2e00 cmp r6, #0
101c2: f000 84e2 beq.w 10b8a <lv_font_get_bitmap_fmt_txt+0x9f2>
101c6: f857 3030 ldr.w r3, [r7, r0, lsl #3]
101ca: f3c3 0313 ubfx r3, r3, #0, #20
101ce: 6828 ldr r0, [r5, #0]
101d0: 4418 add r0, r3
}
101d2: b01f add sp, #124 ; 0x7c
101d4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
uint32_t gsize = gdsc->box_w * gdsc->box_h;
101d8: 7933 ldrb r3, [r6, #4]
101da: 7974 ldrb r4, [r6, #5]
101dc: fb04 f403 mul.w r4, r4, r3
if(gsize == 0) return NULL;
101e0: 2c00 cmp r4, #0
101e2: f000 84d5 beq.w 10b90 <lv_font_get_bitmap_fmt_txt+0x9f8>
switch(fdsc->bpp) {
101e6: 7ceb ldrb r3, [r5, #19]
101e8: f3c3 0383 ubfx r3, r3, #2, #4
101ec: 3b01 subs r3, #1
101ee: 2b03 cmp r3, #3
101f0: d805 bhi.n 101fe <lv_font_get_bitmap_fmt_txt+0x66>
101f2: e8df f003 tbb [pc, r3]
101f6: 7502 .short 0x7502
101f8: 7b78 .short 0x7b78
buf_size = (gsize + 7) >> 3;
101fa: 3407 adds r4, #7
101fc: 08e4 lsrs r4, r4, #3
if(_lv_mem_get_size(decompr_buf) < buf_size) {
101fe: 4b8b ldr r3, [pc, #556] ; (1042c <lv_font_get_bitmap_fmt_txt+0x294>)
10200: 6818 ldr r0, [r3, #0]
10202: 4b8b ldr r3, [pc, #556] ; (10430 <lv_font_get_bitmap_fmt_txt+0x298>)
10204: 4798 blx r3
10206: 4284 cmp r4, r0
10208: d911 bls.n 1022e <lv_font_get_bitmap_fmt_txt+0x96>
decompr_buf = lv_mem_realloc(decompr_buf, buf_size);
1020a: f8df 9220 ldr.w r9, [pc, #544] ; 1042c <lv_font_get_bitmap_fmt_txt+0x294>
1020e: 4621 mov r1, r4
10210: f8d9 0000 ldr.w r0, [r9]
10214: 4b87 ldr r3, [pc, #540] ; (10434 <lv_font_get_bitmap_fmt_txt+0x29c>)
10216: 4798 blx r3
10218: f8c9 0000 str.w r0, [r9]
LV_ASSERT_MEM(decompr_buf);
1021c: 4b86 ldr r3, [pc, #536] ; (10438 <lv_font_get_bitmap_fmt_txt+0x2a0>)
1021e: 4798 blx r3
10220: 2800 cmp r0, #0
10222: d066 beq.n 102f2 <lv_font_get_bitmap_fmt_txt+0x15a>
if(decompr_buf == NULL) return NULL;
10224: 4b81 ldr r3, [pc, #516] ; (1042c <lv_font_get_bitmap_fmt_txt+0x294>)
10226: 681b ldr r3, [r3, #0]
10228: 2b00 cmp r3, #0
1022a: f000 84b4 beq.w 10b96 <lv_font_get_bitmap_fmt_txt+0x9fe>
decompress(&fdsc->glyph_bitmap[gdsc->bitmap_index], decompr_buf, gdsc->box_w, gdsc->box_h, (uint8_t)fdsc->bpp);
1022e: f857 1038 ldr.w r1, [r7, r8, lsl #3]
10232: f3c1 0113 ubfx r1, r1, #0, #20
10236: 682b ldr r3, [r5, #0]
10238: 4419 add r1, r3
1023a: 4b7c ldr r3, [pc, #496] ; (1042c <lv_font_get_bitmap_fmt_txt+0x294>)
1023c: f8d3 9000 ldr.w r9, [r3]
10240: 7933 ldrb r3, [r6, #4]
10242: 930c str r3, [sp, #48] ; 0x30
10244: 469b mov fp, r3
10246: b21a sxth r2, r3
10248: 4617 mov r7, r2
1024a: 9218 str r2, [sp, #96] ; 0x60
1024c: 7972 ldrb r2, [r6, #5]
1024e: 9215 str r2, [sp, #84] ; 0x54
10250: 7cea ldrb r2, [r5, #19]
10252: f3c2 0283 ubfx r2, r2, #2, #4
10256: b2d3 uxtb r3, r2
10258: 930f str r3, [sp, #60] ; 0x3c
if(bpp == 3) wr_size = 4;
1025a: 2b03 cmp r3, #3
1025c: bf14 ite ne
1025e: 4618 movne r0, r3
10260: 2004 moveq r0, #4
10262: 9008 str r0, [sp, #32]
rle_in = in;
10264: 4b71 ldr r3, [pc, #452] ; (1042c <lv_font_get_bitmap_fmt_txt+0x294>)
10266: 6059 str r1, [r3, #4]
rle_bpp = bpp;
10268: 721a strb r2, [r3, #8]
rle_state = RLE_STATE_SINGLE;
1026a: 2200 movs r2, #0
1026c: 725a strb r2, [r3, #9]
rle_rdp = 0;
1026e: 60da str r2, [r3, #12]
rle_prev_v = 0;
10270: 741a strb r2, [r3, #16]
rle_cnt = 0;
10272: 745a strb r2, [r3, #17]
uint8_t * line_buf1 = _lv_mem_buf_get(w);
10274: 4658 mov r0, fp
10276: 4c71 ldr r4, [pc, #452] ; (1043c <lv_font_get_bitmap_fmt_txt+0x2a4>)
10278: 47a0 blx r4
1027a: 9016 str r0, [sp, #88] ; 0x58
uint8_t * line_buf2 = _lv_mem_buf_get(w);
1027c: 4658 mov r0, fp
1027e: 47a0 blx r4
10280: 9017 str r0, [sp, #92] ; 0x5c
for(i = 0; i < w; i++) {
10282: 2f00 cmp r7, #0
10284: f000 8251 beq.w 1072a <lv_font_get_bitmap_fmt_txt+0x592>
10288: 4b68 ldr r3, [pc, #416] ; (1042c <lv_font_get_bitmap_fmt_txt+0x294>)
1028a: 7c19 ldrb r1, [r3, #16]
1028c: 9103 str r1, [sp, #12]
1028e: 7c5c ldrb r4, [r3, #17]
ret = get_bits(rle_in, rle_rdp, rle_bpp);
10290: 685f ldr r7, [r3, #4]
10292: 68dd ldr r5, [r3, #12]
10294: f893 a008 ldrb.w sl, [r3, #8]
bit_mask = (uint16_t)((uint16_t) 1 << len) - 1;
10298: 2201 movs r2, #1
1029a: fa02 f20a lsl.w r2, r2, sl
1029e: 1e51 subs r1, r2, #1
if(bit_pos + len >= 8) {
102a0: 46d0 mov r8, sl
102a2: f1ca 0608 rsb r6, sl, #8
102a6: 960a str r6, [sp, #40] ; 0x28
102a8: f1ca 0610 rsb r6, sl, #16
102ac: 9609 str r6, [sp, #36] ; 0x24
102ae: f893 c009 ldrb.w ip, [r3, #9]
102b2: 9816 ldr r0, [sp, #88] ; 0x58
102b4: f100 3eff add.w lr, r0, #4294967295
102b8: f10b 33ff add.w r3, fp, #4294967295
102bc: b29b uxth r3, r3
102be: 930d str r3, [sp, #52] ; 0x34
102c0: eb00 0b03 add.w fp, r0, r3
102c4: 4676 mov r6, lr
102c6: 2300 movs r3, #0
102c8: 9305 str r3, [sp, #20]
102ca: 9307 str r3, [sp, #28]
102cc: 461a mov r2, r3
switch(len) {
102ce: f10a 3aff add.w sl, sl, #4294967295
rle_rdp += rle_bpp;
102d2: 2301 movs r3, #1
102d4: 9304 str r3, [sp, #16]
bit_mask = (uint16_t)((uint16_t) 1 << len) - 1;
102d6: b2cb uxtb r3, r1
102d8: 930b str r3, [sp, #44] ; 0x2c
bit_mask = 0x3;
102da: 9206 str r2, [sp, #24]
102dc: 4661 mov r1, ip
102de: e034 b.n 1034a <lv_font_get_bitmap_fmt_txt+0x1b2>
buf_size = (gsize + 3) >> 2;
102e0: 3403 adds r4, #3
102e2: 08a4 lsrs r4, r4, #2
break;
102e4: e78b b.n 101fe <lv_font_get_bitmap_fmt_txt+0x66>
buf_size = (gsize + 1) >> 1;
102e6: 3401 adds r4, #1
102e8: 0864 lsrs r4, r4, #1
break;
102ea: e788 b.n 101fe <lv_font_get_bitmap_fmt_txt+0x66>
buf_size = (gsize + 1) >> 1;
102ec: 3401 adds r4, #1
102ee: 0864 lsrs r4, r4, #1
break;
102f0: e785 b.n 101fe <lv_font_get_bitmap_fmt_txt+0x66>
LV_ASSERT_MEM(decompr_buf);
102f2: 4b53 ldr r3, [pc, #332] ; (10440 <lv_font_get_bitmap_fmt_txt+0x2a8>)
102f4: 9300 str r3, [sp, #0]
102f6: 2272 movs r2, #114 ; 0x72
102f8: 4952 ldr r1, [pc, #328] ; (10444 <lv_font_get_bitmap_fmt_txt+0x2ac>)
102fa: 2003 movs r0, #3
102fc: 4c52 ldr r4, [pc, #328] ; (10448 <lv_font_get_bitmap_fmt_txt+0x2b0>)
102fe: 47a0 blx r4
10300: f8d9 2000 ldr.w r2, [r9]
10304: 2300 movs r3, #0
10306: 4851 ldr r0, [pc, #324] ; (1044c <lv_font_get_bitmap_fmt_txt+0x2b4>)
10308: 4951 ldr r1, [pc, #324] ; (10450 <lv_font_get_bitmap_fmt_txt+0x2b8>)
1030a: 4788 blx r1
1030c: e7fe b.n 1030c <lv_font_get_bitmap_fmt_txt+0x174>
bit_mask = 0x3;
1030e: 2003 movs r0, #3
uint32_t byte_pos = bit_pos >> 3;
10310: 08eb lsrs r3, r5, #3
bit_pos = bit_pos & 0x7;
10312: f005 0207 and.w r2, r5, #7
if(bit_pos + len >= 8) {
10316: eb02 0c08 add.w ip, r2, r8
1031a: f1bc 0f07 cmp.w ip, #7
1031e: d835 bhi.n 1038c <lv_font_get_bitmap_fmt_txt+0x1f4>
return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask;
10320: f817 c003 ldrb.w ip, [r7, r3]
10324: 9b0a ldr r3, [sp, #40] ; 0x28
10326: 1a9a subs r2, r3, r2
10328: fa4c f302 asr.w r3, ip, r2
1032c: 4003 ands r3, r0
if(rle_rdp != 0 && rle_prev_v == ret) {
1032e: b115 cbz r5, 10336 <lv_font_get_bitmap_fmt_txt+0x19e>
10330: 9a03 ldr r2, [sp, #12]
10332: 4293 cmp r3, r2
10334: d038 beq.n 103a8 <lv_font_get_bitmap_fmt_txt+0x210>
rle_rdp += rle_bpp;
10336: 4445 add r5, r8
rle_prev_v = ret;
10338: 9303 str r3, [sp, #12]
rle_rdp += rle_bpp;
1033a: 2201 movs r2, #1
1033c: 9804 ldr r0, [sp, #16]
1033e: 9006 str r0, [sp, #24]
out[i] = rle_next();
10340: f806 3f01 strb.w r3, [r6, #1]!
for(i = 0; i < w; i++) {
10344: 455e cmp r6, fp
10346: f000 814e beq.w 105e6 <lv_font_get_bitmap_fmt_txt+0x44e>
if(rle_state == RLE_STATE_SINGLE) {
1034a: bba1 cbnz r1, 103b6 <lv_font_get_bitmap_fmt_txt+0x21e>
switch(len) {
1034c: f1ba 0f07 cmp.w sl, #7
10350: d818 bhi.n 10384 <lv_font_get_bitmap_fmt_txt+0x1ec>
10352: a301 add r3, pc, #4 ; (adr r3, 10358 <lv_font_get_bitmap_fmt_txt+0x1c0>)
10354: f853 f02a ldr.w pc, [r3, sl, lsl #2]
10358: 00010389 .word 0x00010389
1035c: 0001030f .word 0x0001030f
10360: 00010379 .word 0x00010379
10364: 0001037d .word 0x0001037d
10368: 00010385 .word 0x00010385
1036c: 00010385 .word 0x00010385
10370: 00010385 .word 0x00010385
10374: 00010381 .word 0x00010381
bit_mask = 0x7;
10378: 2007 movs r0, #7
1037a: e7c9 b.n 10310 <lv_font_get_bitmap_fmt_txt+0x178>
bit_mask = 0xF;
1037c: 200f movs r0, #15
1037e: e7c7 b.n 10310 <lv_font_get_bitmap_fmt_txt+0x178>
bit_mask = 0xFF;
10380: 20ff movs r0, #255 ; 0xff
10382: e7c5 b.n 10310 <lv_font_get_bitmap_fmt_txt+0x178>
bit_mask = (uint16_t)((uint16_t) 1 << len) - 1;
10384: 980b ldr r0, [sp, #44] ; 0x2c
10386: e7c3 b.n 10310 <lv_font_get_bitmap_fmt_txt+0x178>
bit_mask = 0x1;
10388: 2001 movs r0, #1
1038a: e7c1 b.n 10310 <lv_font_get_bitmap_fmt_txt+0x178>
uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1];
1038c: f817 c003 ldrb.w ip, [r7, r3]
10390: 443b add r3, r7
10392: 785b ldrb r3, [r3, #1]
10394: eb03 230c add.w r3, r3, ip, lsl #8
return (in16 >> (16 - bit_pos - len)) & bit_mask;
10398: fa1f fc83 uxth.w ip, r3
1039c: 9b09 ldr r3, [sp, #36] ; 0x24
1039e: 1a9a subs r2, r3, r2
103a0: fa4c f302 asr.w r3, ip, r2
103a4: 4003 ands r3, r0
103a6: e7c2 b.n 1032e <lv_font_get_bitmap_fmt_txt+0x196>
if(rle_rdp != 0 && rle_prev_v == ret) {
103a8: 2201 movs r2, #1
103aa: 9205 str r2, [sp, #20]
rle_cnt = 0;
103ac: 2400 movs r4, #0
if(rle_rdp != 0 && rle_prev_v == ret) {
103ae: 9a04 ldr r2, [sp, #16]
103b0: 9207 str r2, [sp, #28]
rle_state = RLE_STATE_REPEATE;
103b2: 4611 mov r1, r2
103b4: e7bf b.n 10336 <lv_font_get_bitmap_fmt_txt+0x19e>
else if(rle_state == RLE_STATE_REPEATE) {
103b6: 2901 cmp r1, #1
103b8: d004 beq.n 103c4 <lv_font_get_bitmap_fmt_txt+0x22c>
else if(rle_state == RLE_STATE_COUNTER) {
103ba: 2902 cmp r1, #2
103bc: f000 80cd beq.w 1055a <lv_font_get_bitmap_fmt_txt+0x3c2>
uint8_t ret = 0;
103c0: 2300 movs r3, #0
103c2: e7bd b.n 10340 <lv_font_get_bitmap_fmt_txt+0x1a8>
uint32_t byte_pos = bit_pos >> 3;
103c4: 08eb lsrs r3, r5, #3
bit_pos = bit_pos & 0x7;
103c6: f005 0207 and.w r2, r5, #7
if(bit_pos + len >= 8) {
103ca: f102 0c01 add.w ip, r2, #1
103ce: f1bc 0f07 cmp.w ip, #7
103d2: d813 bhi.n 103fc <lv_font_get_bitmap_fmt_txt+0x264>
return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask;
103d4: 5cfb ldrb r3, [r7, r3]
103d6: 43d2 mvns r2, r2
103d8: 3208 adds r2, #8
103da: 4113 asrs r3, r2
103dc: f003 0301 and.w r3, r3, #1
rle_cnt++;
103e0: 3401 adds r4, #1
103e2: b2e4 uxtb r4, r4
rle_rdp += 1;
103e4: 1c6a adds r2, r5, #1
if(v == 1) {
103e6: b9b3 cbnz r3, 10416 <lv_font_get_bitmap_fmt_txt+0x27e>
switch(len) {
103e8: f1ba 0f07 cmp.w sl, #7
103ec: f200 80a5 bhi.w 1053a <lv_font_get_bitmap_fmt_txt+0x3a2>
103f0: e8df f00a tbb [pc, sl]
103f4: 9f9d84a5 .word 0x9f9d84a5
103f8: a1a3a3a3 .word 0xa1a3a3a3
uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1];
103fc: f817 c003 ldrb.w ip, [r7, r3]
10400: 443b add r3, r7
10402: 785b ldrb r3, [r3, #1]
10404: eb03 230c add.w r3, r3, ip, lsl #8
return (in16 >> (16 - bit_pos - len)) & bit_mask;
10408: b29b uxth r3, r3
1040a: 43d2 mvns r2, r2
1040c: 3210 adds r2, #16
1040e: 4113 asrs r3, r2
10410: f003 0301 and.w r3, r3, #1
10414: e7e4 b.n 103e0 <lv_font_get_bitmap_fmt_txt+0x248>
if(rle_cnt == 11) {
10416: 2c0b cmp r4, #11
10418: d01c beq.n 10454 <lv_font_get_bitmap_fmt_txt+0x2bc>
rle_rdp += 1;
1041a: 4615 mov r5, r2
ret = rle_prev_v;
1041c: 9b03 ldr r3, [sp, #12]
if(rle_cnt == 11) {
1041e: 2201 movs r2, #1
10420: 9205 str r2, [sp, #20]
10422: 9a04 ldr r2, [sp, #16]
10424: e78c b.n 10340 <lv_font_get_bitmap_fmt_txt+0x1a8>
10426: bf00 nop
10428: 000100ad .word 0x000100ad
1042c: 20002b5c .word 0x20002b5c
10430: 00012551 .word 0x00012551
10434: 00012899 .word 0x00012899
10438: 000022b1 .word 0x000022b1
1043c: 0001293d .word 0x0001293d
10440: 000254c4 .word 0x000254c4
10444: 000254e0 .word 0x000254e0
10448: 0001225d .word 0x0001225d
1044c: 00023fd8 .word 0x00023fd8
10450: 000022b9 .word 0x000022b9
uint32_t byte_pos = bit_pos >> 3;
10454: 08d3 lsrs r3, r2, #3
bit_pos = bit_pos & 0x7;
10456: f002 0207 and.w r2, r2, #7
if(bit_pos + len >= 8) {
1045a: 1d91 adds r1, r2, #6
1045c: 2907 cmp r1, #7
1045e: d813 bhi.n 10488 <lv_font_get_bitmap_fmt_txt+0x2f0>
return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask;
10460: 5cfc ldrb r4, [r7, r3]
10462: f1c2 0202 rsb r2, r2, #2
10466: fa44 f202 asr.w r2, r4, r2
1046a: f002 043f and.w r4, r2, #63 ; 0x3f
rle_rdp += 6;
1046e: 3507 adds r5, #7
if(rle_cnt != 0) {
10470: 2c00 cmp r4, #0
10472: f040 80ad bne.w 105d0 <lv_font_get_bitmap_fmt_txt+0x438>
switch(len) {
10476: f1ba 0f07 cmp.w sl, #7
1047a: d826 bhi.n 104ca <lv_font_get_bitmap_fmt_txt+0x332>
1047c: e8df f00a tbb [pc, sl]
10480: 211f1027 .word 0x211f1027
10484: 23252525 .word 0x23252525
uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1];
10488: 5cf9 ldrb r1, [r7, r3]
1048a: 443b add r3, r7
1048c: 785c ldrb r4, [r3, #1]
1048e: eb04 2401 add.w r4, r4, r1, lsl #8
return (in16 >> (16 - bit_pos - len)) & bit_mask;
10492: b2a4 uxth r4, r4
10494: f1c2 020a rsb r2, r2, #10
10498: 4114 asrs r4, r2
1049a: f004 043f and.w r4, r4, #63 ; 0x3f
1049e: e7e6 b.n 1046e <lv_font_get_bitmap_fmt_txt+0x2d6>
bit_mask = 0x3;
104a0: 2003 movs r0, #3
uint32_t byte_pos = bit_pos >> 3;
104a2: 08ea lsrs r2, r5, #3
bit_pos = bit_pos & 0x7;
104a4: f005 0307 and.w r3, r5, #7
if(bit_pos + len >= 8) {
104a8: eb03 0108 add.w r1, r3, r8
104ac: 2907 cmp r1, #7
104ae: d810 bhi.n 104d2 <lv_font_get_bitmap_fmt_txt+0x33a>
return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask;
104b0: 5cba ldrb r2, [r7, r2]
104b2: 990a ldr r1, [sp, #40] ; 0x28
104b4: 1acb subs r3, r1, r3
104b6: fa42 f303 asr.w r3, r2, r3
104ba: 4003 ands r3, r0
104bc: e014 b.n 104e8 <lv_font_get_bitmap_fmt_txt+0x350>
bit_mask = 0x7;
104be: 2007 movs r0, #7
104c0: e7ef b.n 104a2 <lv_font_get_bitmap_fmt_txt+0x30a>
bit_mask = 0xF;
104c2: 200f movs r0, #15
104c4: e7ed b.n 104a2 <lv_font_get_bitmap_fmt_txt+0x30a>
bit_mask = 0xFF;
104c6: 20ff movs r0, #255 ; 0xff
104c8: e7eb b.n 104a2 <lv_font_get_bitmap_fmt_txt+0x30a>
bit_mask = (uint16_t)((uint16_t) 1 << len) - 1;
104ca: 980b ldr r0, [sp, #44] ; 0x2c
104cc: e7e9 b.n 104a2 <lv_font_get_bitmap_fmt_txt+0x30a>
bit_mask = 0x1;
104ce: 2001 movs r0, #1
104d0: e7e7 b.n 104a2 <lv_font_get_bitmap_fmt_txt+0x30a>
uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1];
104d2: 5cb9 ldrb r1, [r7, r2]
104d4: 443a add r2, r7
104d6: 7852 ldrb r2, [r2, #1]
104d8: eb02 2201 add.w r2, r2, r1, lsl #8
return (in16 >> (16 - bit_pos - len)) & bit_mask;
104dc: b292 uxth r2, r2
104de: 9909 ldr r1, [sp, #36] ; 0x24
104e0: 1acb subs r3, r1, r3
104e2: fa42 f303 asr.w r3, r2, r3
104e6: 4003 ands r3, r0
rle_rdp += rle_bpp;
104e8: 4445 add r5, r8
rle_prev_v = ret;
104ea: 9303 str r3, [sp, #12]
rle_rdp += rle_bpp;
104ec: 2201 movs r2, #1
104ee: 9205 str r2, [sp, #20]
104f0: 9804 ldr r0, [sp, #16]
104f2: 4602 mov r2, r0
104f4: 9007 str r0, [sp, #28]
rle_state = RLE_STATE_SINGLE;
104f6: 2100 movs r1, #0
rle_rdp += rle_bpp;
104f8: 9006 str r0, [sp, #24]
104fa: e721 b.n 10340 <lv_font_get_bitmap_fmt_txt+0x1a8>
bit_mask = 0x3;
104fc: 2003 movs r0, #3
uint32_t byte_pos = bit_pos >> 3;
104fe: 08d1 lsrs r1, r2, #3
bit_pos = bit_pos & 0x7;
10500: f002 0307 and.w r3, r2, #7
if(bit_pos + len >= 8) {
10504: eb03 0508 add.w r5, r3, r8
10508: 2d07 cmp r5, #7
1050a: d81a bhi.n 10542 <lv_font_get_bitmap_fmt_txt+0x3aa>
return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask;
1050c: 5c79 ldrb r1, [r7, r1]
1050e: 9d0a ldr r5, [sp, #40] ; 0x28
10510: 1aeb subs r3, r5, r3
10512: fa41 f303 asr.w r3, r1, r3
10516: 4003 ands r3, r0
rle_rdp += rle_bpp;
10518: eb02 0508 add.w r5, r2, r8
rle_prev_v = ret;
1051c: 9303 str r3, [sp, #12]
rle_rdp += rle_bpp;
1051e: 2201 movs r2, #1
10520: 9205 str r2, [sp, #20]
10522: 9804 ldr r0, [sp, #16]
10524: 4602 mov r2, r0
10526: 9007 str r0, [sp, #28]
rle_state = RLE_STATE_SINGLE;
10528: 2100 movs r1, #0
rle_rdp += rle_bpp;
1052a: 9006 str r0, [sp, #24]
1052c: e708 b.n 10340 <lv_font_get_bitmap_fmt_txt+0x1a8>
bit_mask = 0x7;
1052e: 2007 movs r0, #7
10530: e7e5 b.n 104fe <lv_font_get_bitmap_fmt_txt+0x366>
bit_mask = 0xF;
10532: 200f movs r0, #15
10534: e7e3 b.n 104fe <lv_font_get_bitmap_fmt_txt+0x366>
bit_mask = 0xFF;
10536: 20ff movs r0, #255 ; 0xff
10538: e7e1 b.n 104fe <lv_font_get_bitmap_fmt_txt+0x366>
bit_mask = (uint16_t)((uint16_t) 1 << len) - 1;
1053a: 980b ldr r0, [sp, #44] ; 0x2c
1053c: e7df b.n 104fe <lv_font_get_bitmap_fmt_txt+0x366>
bit_mask = 0x1;
1053e: 2001 movs r0, #1
10540: e7dd b.n 104fe <lv_font_get_bitmap_fmt_txt+0x366>
uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1];
10542: 5c7d ldrb r5, [r7, r1]
10544: 4439 add r1, r7
10546: 7849 ldrb r1, [r1, #1]
10548: eb01 2105 add.w r1, r1, r5, lsl #8
return (in16 >> (16 - bit_pos - len)) & bit_mask;
1054c: b289 uxth r1, r1
1054e: 9d09 ldr r5, [sp, #36] ; 0x24
10550: 1aeb subs r3, r5, r3
10552: fa41 f303 asr.w r3, r1, r3
10556: 4003 ands r3, r0
10558: e7de b.n 10518 <lv_font_get_bitmap_fmt_txt+0x380>
rle_cnt--;
1055a: 3c01 subs r4, #1
if(rle_cnt == 0) {
1055c: f014 04ff ands.w r4, r4, #255 ; 0xff
10560: d13d bne.n 105de <lv_font_get_bitmap_fmt_txt+0x446>
switch(len) {
10562: f1ba 0f07 cmp.w sl, #7
10566: d823 bhi.n 105b0 <lv_font_get_bitmap_fmt_txt+0x418>
10568: e8df f00a tbb [pc, sl]
1056c: 1e1c0424 .word 0x1e1c0424
10570: 20222222 .word 0x20222222
bit_mask = 0x3;
10574: 2003 movs r0, #3
uint32_t byte_pos = bit_pos >> 3;
10576: 08ea lsrs r2, r5, #3
bit_pos = bit_pos & 0x7;
10578: f005 0307 and.w r3, r5, #7
if(bit_pos + len >= 8) {
1057c: eb03 0108 add.w r1, r3, r8
10580: 2907 cmp r1, #7
10582: d819 bhi.n 105b8 <lv_font_get_bitmap_fmt_txt+0x420>
return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask;
10584: 5cba ldrb r2, [r7, r2]
10586: 990a ldr r1, [sp, #40] ; 0x28
10588: 1acb subs r3, r1, r3
1058a: fa42 f303 asr.w r3, r2, r3
1058e: 4003 ands r3, r0
rle_rdp += rle_bpp;
10590: 4445 add r5, r8
rle_prev_v = ret;
10592: 9303 str r3, [sp, #12]
rle_rdp += rle_bpp;
10594: 2201 movs r2, #1
10596: 9205 str r2, [sp, #20]
10598: 9804 ldr r0, [sp, #16]
1059a: 4602 mov r2, r0
1059c: 9007 str r0, [sp, #28]
rle_state = RLE_STATE_SINGLE;
1059e: 2100 movs r1, #0
rle_rdp += rle_bpp;
105a0: 9006 str r0, [sp, #24]
105a2: e6cd b.n 10340 <lv_font_get_bitmap_fmt_txt+0x1a8>
bit_mask = 0x7;
105a4: 2007 movs r0, #7
105a6: e7e6 b.n 10576 <lv_font_get_bitmap_fmt_txt+0x3de>
bit_mask = 0xF;
105a8: 200f movs r0, #15
105aa: e7e4 b.n 10576 <lv_font_get_bitmap_fmt_txt+0x3de>
bit_mask = 0xFF;
105ac: 20ff movs r0, #255 ; 0xff
105ae: e7e2 b.n 10576 <lv_font_get_bitmap_fmt_txt+0x3de>
bit_mask = (uint16_t)((uint16_t) 1 << len) - 1;
105b0: 980b ldr r0, [sp, #44] ; 0x2c
105b2: e7e0 b.n 10576 <lv_font_get_bitmap_fmt_txt+0x3de>
bit_mask = 0x1;
105b4: 2001 movs r0, #1
105b6: e7de b.n 10576 <lv_font_get_bitmap_fmt_txt+0x3de>
uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1];
105b8: 5cb9 ldrb r1, [r7, r2]
105ba: 443a add r2, r7
105bc: 7852 ldrb r2, [r2, #1]
105be: eb02 2201 add.w r2, r2, r1, lsl #8
return (in16 >> (16 - bit_pos - len)) & bit_mask;
105c2: b292 uxth r2, r2
105c4: 9909 ldr r1, [sp, #36] ; 0x24
105c6: 1acb subs r3, r1, r3
105c8: fa42 f303 asr.w r3, r2, r3
105cc: 4003 ands r3, r0
105ce: e7df b.n 10590 <lv_font_get_bitmap_fmt_txt+0x3f8>
ret = rle_prev_v;
105d0: 9b03 ldr r3, [sp, #12]
if(rle_cnt != 0) {
105d2: 2201 movs r2, #1
105d4: 9205 str r2, [sp, #20]
105d6: 9a04 ldr r2, [sp, #16]
105d8: 9207 str r2, [sp, #28]
rle_state = RLE_STATE_COUNTER;
105da: 2102 movs r1, #2
105dc: e6b0 b.n 10340 <lv_font_get_bitmap_fmt_txt+0x1a8>
ret = rle_prev_v;
105de: 9b03 ldr r3, [sp, #12]
if(rle_cnt == 0) {
105e0: 2001 movs r0, #1
105e2: 9005 str r0, [sp, #20]
105e4: e6ac b.n 10340 <lv_font_get_bitmap_fmt_txt+0x1a8>
105e6: 9806 ldr r0, [sp, #24]
105e8: 468c mov ip, r1
105ea: b9c8 cbnz r0, 10620 <lv_font_get_bitmap_fmt_txt+0x488>
105ec: b10a cbz r2, 105f2 <lv_font_get_bitmap_fmt_txt+0x45a>
105ee: 4b9f ldr r3, [pc, #636] ; (1086c <lv_font_get_bitmap_fmt_txt+0x6d4>)
105f0: 60dd str r5, [r3, #12]
105f2: 9b07 ldr r3, [sp, #28]
105f4: b113 cbz r3, 105fc <lv_font_get_bitmap_fmt_txt+0x464>
105f6: 4b9d ldr r3, [pc, #628] ; (1086c <lv_font_get_bitmap_fmt_txt+0x6d4>)
105f8: f883 c009 strb.w ip, [r3, #9]
105fc: 9b05 ldr r3, [sp, #20]
105fe: b10b cbz r3, 10604 <lv_font_get_bitmap_fmt_txt+0x46c>
10600: 4b9a ldr r3, [pc, #616] ; (1086c <lv_font_get_bitmap_fmt_txt+0x6d4>)
10602: 745c strb r4, [r3, #17]
rle_rdp += rle_bpp;
10604: 2000 movs r0, #0
if(len == 3) {
10606: 9b0f ldr r3, [sp, #60] ; 0x3c
10608: 9303 str r3, [sp, #12]
len = 4;
1060a: 2704 movs r7, #4
val = 15;
1060c: f04f 0c0f mov.w ip, #15
val = 13;
10610: f04f 080d mov.w r8, #13
val = 11;
10614: f04f 0a0b mov.w sl, #11
val = 9;
10618: f04f 0b09 mov.w fp, #9
val = 4;
1061c: 9704 str r7, [sp, #16]
1061e: e028 b.n 10672 <lv_font_get_bitmap_fmt_txt+0x4da>
10620: 4b92 ldr r3, [pc, #584] ; (1086c <lv_font_get_bitmap_fmt_txt+0x6d4>)
10622: f89d 100c ldrb.w r1, [sp, #12]
10626: 7419 strb r1, [r3, #16]
10628: e7e0 b.n 105ec <lv_font_get_bitmap_fmt_txt+0x454>
switch(val) {
1062a: 2907 cmp r1, #7
1062c: d83d bhi.n 106aa <lv_font_get_bitmap_fmt_txt+0x512>
1062e: e8df f001 tbb [pc, r1]
10632: 2704 .short 0x2704
10634: 33302d2a .word 0x33302d2a
10638: 3936 .short 0x3936
len = 4;
1063a: 463d mov r5, r7
val = 0;
1063c: 2100 movs r1, #0
bit_pos = bit_pos & 0x7;
1063e: f000 0207 and.w r2, r0, #7
10642: f1c2 0208 rsb r2, r2, #8
bit_pos = 8 - bit_pos - len;
10646: 1b52 subs r2, r2, r5
out[byte_pos] &= ((~bit_mask) << bit_pos);
10648: f3c0 04cf ubfx r4, r0, #3, #16
1064c: f04f 33ff mov.w r3, #4294967295
10650: 40ab lsls r3, r5
10652: f063 03ff orn r3, r3, #255 ; 0xff
10656: 4093 lsls r3, r2
10658: f819 5004 ldrb.w r5, [r9, r4]
1065c: 402b ands r3, r5
out[byte_pos] |= (val << bit_pos);
1065e: fa01 f202 lsl.w r2, r1, r2
10662: 4313 orrs r3, r2
10664: f809 3004 strb.w r3, [r9, r4]
wrp += wr_size;
10668: 9a08 ldr r2, [sp, #32]
1066a: 4613 mov r3, r2
1066c: 4410 add r0, r2
for(x = 0; x < w; x++) {
1066e: 45b6 cmp lr, r6
10670: d01d beq.n 106ae <lv_font_get_bitmap_fmt_txt+0x516>
bits_write(out, wrp, line_buf1[x], bpp);
10672: f81e 1f01 ldrb.w r1, [lr, #1]!
if(len == 3) {
10676: 9b0f ldr r3, [sp, #60] ; 0x3c
10678: 2b03 cmp r3, #3
1067a: d0d6 beq.n 1062a <lv_font_get_bitmap_fmt_txt+0x492>
1067c: 9d03 ldr r5, [sp, #12]
1067e: e7de b.n 1063e <lv_font_get_bitmap_fmt_txt+0x4a6>
len = 4;
10680: 463d mov r5, r7
val = 2;
10682: 2102 movs r1, #2
10684: e7db b.n 1063e <lv_font_get_bitmap_fmt_txt+0x4a6>
len = 4;
10686: 463d mov r5, r7
val = 4;
10688: 9904 ldr r1, [sp, #16]
1068a: e7d8 b.n 1063e <lv_font_get_bitmap_fmt_txt+0x4a6>
len = 4;
1068c: 463d mov r5, r7
val = 6;
1068e: 2106 movs r1, #6
10690: e7d5 b.n 1063e <lv_font_get_bitmap_fmt_txt+0x4a6>
len = 4;
10692: 463d mov r5, r7
val = 9;
10694: 4659 mov r1, fp
10696: e7d2 b.n 1063e <lv_font_get_bitmap_fmt_txt+0x4a6>
len = 4;
10698: 463d mov r5, r7
val = 11;
1069a: 4651 mov r1, sl
1069c: e7cf b.n 1063e <lv_font_get_bitmap_fmt_txt+0x4a6>
len = 4;
1069e: 463d mov r5, r7
val = 13;
106a0: 4641 mov r1, r8
106a2: e7cc b.n 1063e <lv_font_get_bitmap_fmt_txt+0x4a6>
len = 4;
106a4: 463d mov r5, r7
val = 15;
106a6: 4661 mov r1, ip
106a8: e7c9 b.n 1063e <lv_font_get_bitmap_fmt_txt+0x4a6>
len = 4;
106aa: 463d mov r5, r7
106ac: e7c7 b.n 1063e <lv_font_get_bitmap_fmt_txt+0x4a6>
106ae: 9a0d ldr r2, [sp, #52] ; 0x34
106b0: fb02 3303 mla r3, r2, r3, r3
106b4: 930e str r3, [sp, #56] ; 0x38
for(y = 1; y < h; y++) {
106b6: 9b15 ldr r3, [sp, #84] ; 0x54
106b8: 2b01 cmp r3, #1
106ba: f340 8255 ble.w 10b68 <lv_font_get_bitmap_fmt_txt+0x9d0>
ret = get_bits(rle_in, rle_rdp, rle_bpp);
106be: 4b6b ldr r3, [pc, #428] ; (1086c <lv_font_get_bitmap_fmt_txt+0x6d4>)
106c0: f8d3 8004 ldr.w r8, [r3, #4]
106c4: 7a1a ldrb r2, [r3, #8]
106c6: 4610 mov r0, r2
106c8: 9219 str r2, [sp, #100] ; 0x64
bit_mask = (uint16_t)((uint16_t) 1 << len) - 1;
106ca: 2201 movs r2, #1
106cc: fa02 f100 lsl.w r1, r2, r0
106d0: 3901 subs r1, #1
106d2: b2c9 uxtb r1, r1
106d4: 911b str r1, [sp, #108] ; 0x6c
if(bit_pos + len >= 8) {
106d6: 4601 mov r1, r0
106d8: 4682 mov sl, r0
106da: 7c58 ldrb r0, [r3, #17]
106dc: 9007 str r0, [sp, #28]
106de: f1c1 0108 rsb r1, r1, #8
106e2: 910b str r1, [sp, #44] ; 0x2c
106e4: f1ca 0110 rsb r1, sl, #16
106e8: 910d str r1, [sp, #52] ; 0x34
106ea: 7c19 ldrb r1, [r3, #16]
106ec: 9103 str r1, [sp, #12]
106ee: f8d3 c00c ldr.w ip, [r3, #12]
106f2: f893 b009 ldrb.w fp, [r3, #9]
106f6: 9908 ldr r1, [sp, #32]
106f8: 9112 str r1, [sp, #72] ; 0x48
106fa: 9b0c ldr r3, [sp, #48] ; 0x30
106fc: 3b01 subs r3, #1
106fe: b29b uxth r3, r3
10700: fb01 f103 mul.w r1, r1, r3
10704: 911a str r1, [sp, #104] ; 0x68
10706: 2100 movs r1, #0
10708: 910a str r1, [sp, #40] ; 0x28
1070a: 910c str r1, [sp, #48] ; 0x30
1070c: 9106 str r1, [sp, #24]
1070e: 9108 str r1, [sp, #32]
10710: 9210 str r2, [sp, #64] ; 0x40
10712: 9a17 ldr r2, [sp, #92] ; 0x5c
10714: 18d3 adds r3, r2, r3
10716: 931c str r3, [sp, #112] ; 0x70
rle_rdp += rle_bpp;
10718: 2301 movs r3, #1
1071a: 9304 str r3, [sp, #16]
if(len == 3) {
1071c: 9a0f ldr r2, [sp, #60] ; 0x3c
1071e: 9209 str r2, [sp, #36] ; 0x24
val = 4;
10720: 2204 movs r2, #4
10722: 921d str r2, [sp, #116] ; 0x74
rle_rdp += rle_bpp;
10724: 9305 str r3, [sp, #20]
10726: 4666 mov r6, ip
10728: e1f5 b.n 10b16 <lv_font_get_bitmap_fmt_txt+0x97e>
for(i = 0; i < w; i++) {
1072a: 2300 movs r3, #0
1072c: 930e str r3, [sp, #56] ; 0x38
1072e: e7c2 b.n 106b6 <lv_font_get_bitmap_fmt_txt+0x51e>
bit_mask = 0x3;
10730: f04f 0903 mov.w r9, #3
10734: e00c b.n 10750 <lv_font_get_bitmap_fmt_txt+0x5b8>
bit_mask = 0x7;
10736: f04f 0907 mov.w r9, #7
1073a: e009 b.n 10750 <lv_font_get_bitmap_fmt_txt+0x5b8>
bit_mask = 0xF;
1073c: f04f 090f mov.w r9, #15
10740: e006 b.n 10750 <lv_font_get_bitmap_fmt_txt+0x5b8>
bit_mask = 0xFF;
10742: 46e1 mov r9, ip
10744: e004 b.n 10750 <lv_font_get_bitmap_fmt_txt+0x5b8>
bit_mask = (uint16_t)((uint16_t) 1 << len) - 1;
10746: f8dd 9044 ldr.w r9, [sp, #68] ; 0x44
1074a: e001 b.n 10750 <lv_font_get_bitmap_fmt_txt+0x5b8>
bit_mask = 0x1;
1074c: f8dd 9010 ldr.w r9, [sp, #16]
uint32_t byte_pos = bit_pos >> 3;
10750: 08f3 lsrs r3, r6, #3
bit_pos = bit_pos & 0x7;
10752: f006 0207 and.w r2, r6, #7
if(bit_pos + len >= 8) {
10756: eb02 0b0a add.w fp, r2, sl
1075a: f1bb 0f07 cmp.w fp, #7
1075e: d831 bhi.n 107c4 <lv_font_get_bitmap_fmt_txt+0x62c>
return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask;
10760: f818 3003 ldrb.w r3, [r8, r3]
10764: 9d0b ldr r5, [sp, #44] ; 0x2c
10766: 1aaa subs r2, r5, r2
10768: fa43 f202 asr.w r2, r3, r2
1076c: ea02 0909 and.w r9, r2, r9
10770: fa5f f989 uxtb.w r9, r9
if(rle_rdp != 0 && rle_prev_v == ret) {
10774: b116 cbz r6, 1077c <lv_font_get_bitmap_fmt_txt+0x5e4>
10776: 9b03 ldr r3, [sp, #12]
10778: 454b cmp r3, r9
1077a: d033 beq.n 107e4 <lv_font_get_bitmap_fmt_txt+0x64c>
rle_rdp += rle_bpp;
1077c: 4456 add r6, sl
rle_prev_v = ret;
1077e: f8cd 900c str.w r9, [sp, #12]
rle_rdp += rle_bpp;
10782: 9b04 ldr r3, [sp, #16]
10784: 9306 str r3, [sp, #24]
10786: 9b05 ldr r3, [sp, #20]
10788: 9308 str r3, [sp, #32]
out[i] = rle_next();
1078a: f804 9f01 strb.w r9, [r4, #1]!
for(i = 0; i < w; i++) {
1078e: 42a0 cmp r0, r4
10790: f000 815d beq.w 10a4e <lv_font_get_bitmap_fmt_txt+0x8b6>
if(rle_state == RLE_STATE_SINGLE) {
10794: bb69 cbnz r1, 107f2 <lv_font_get_bitmap_fmt_txt+0x65a>
switch(len) {
10796: 9b07 ldr r3, [sp, #28]
10798: 461a mov r2, r3
1079a: 2a07 cmp r2, #7
1079c: d8d3 bhi.n 10746 <lv_font_get_bitmap_fmt_txt+0x5ae>
1079e: a301 add r3, pc, #4 ; (adr r3, 107a4 <lv_font_get_bitmap_fmt_txt+0x60c>)
107a0: f853 f022 ldr.w pc, [r3, r2, lsl #2]
107a4: 0001074d .word 0x0001074d
107a8: 00010731 .word 0x00010731
107ac: 00010737 .word 0x00010737
107b0: 0001073d .word 0x0001073d
107b4: 00010747 .word 0x00010747
107b8: 00010747 .word 0x00010747
107bc: 00010747 .word 0x00010747
107c0: 00010743 .word 0x00010743
uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1];
107c4: f818 b003 ldrb.w fp, [r8, r3]
107c8: 4443 add r3, r8
107ca: 785b ldrb r3, [r3, #1]
107cc: eb03 230b add.w r3, r3, fp, lsl #8
return (in16 >> (16 - bit_pos - len)) & bit_mask;
107d0: b29b uxth r3, r3
107d2: 9d0d ldr r5, [sp, #52] ; 0x34
107d4: 1aaa subs r2, r5, r2
107d6: fa43 f202 asr.w r2, r3, r2
107da: ea02 0209 and.w r2, r2, r9
107de: fa5f f982 uxtb.w r9, r2
107e2: e7c7 b.n 10774 <lv_font_get_bitmap_fmt_txt+0x5dc>
if(rle_rdp != 0 && rle_prev_v == ret) {
107e4: 9b04 ldr r3, [sp, #16]
107e6: 930a str r3, [sp, #40] ; 0x28
rle_cnt = 0;
107e8: 4677 mov r7, lr
if(rle_rdp != 0 && rle_prev_v == ret) {
107ea: 9b05 ldr r3, [sp, #20]
107ec: 930c str r3, [sp, #48] ; 0x30
rle_state = RLE_STATE_REPEATE;
107ee: 4619 mov r1, r3
107f0: e7c4 b.n 1077c <lv_font_get_bitmap_fmt_txt+0x5e4>
else if(rle_state == RLE_STATE_REPEATE) {
107f2: 2901 cmp r1, #1
107f4: d004 beq.n 10800 <lv_font_get_bitmap_fmt_txt+0x668>
else if(rle_state == RLE_STATE_COUNTER) {
107f6: 2902 cmp r1, #2
107f8: f000 80d7 beq.w 109aa <lv_font_get_bitmap_fmt_txt+0x812>
uint8_t ret = 0;
107fc: 46f1 mov r9, lr
107fe: e7c4 b.n 1078a <lv_font_get_bitmap_fmt_txt+0x5f2>
uint32_t byte_pos = bit_pos >> 3;
10800: 08f3 lsrs r3, r6, #3
bit_pos = bit_pos & 0x7;
10802: f006 0207 and.w r2, r6, #7
if(bit_pos + len >= 8) {
10806: f102 0901 add.w r9, r2, #1
1080a: f1b9 0f07 cmp.w r9, #7
1080e: d815 bhi.n 1083c <lv_font_get_bitmap_fmt_txt+0x6a4>
return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask;
10810: f818 3003 ldrb.w r3, [r8, r3]
10814: 43d2 mvns r2, r2
10816: 3208 adds r2, #8
10818: 4113 asrs r3, r2
1081a: f003 0301 and.w r3, r3, #1
rle_cnt++;
1081e: 1c7a adds r2, r7, #1
10820: b2d7 uxtb r7, r2
rle_rdp += 1;
10822: 1c72 adds r2, r6, #1
if(v == 1) {
10824: b9bb cbnz r3, 10856 <lv_font_get_bitmap_fmt_txt+0x6be>
switch(len) {
10826: 9b07 ldr r3, [sp, #28]
10828: 4619 mov r1, r3
1082a: 2907 cmp r1, #7
1082c: f200 808e bhi.w 1094c <lv_font_get_bitmap_fmt_txt+0x7b4>
10830: e8df f001 tbb [pc, r1]
10834: 8886848e .word 0x8886848e
10838: 8a8c8c8c .word 0x8a8c8c8c
uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1];
1083c: f818 9003 ldrb.w r9, [r8, r3]
10840: 4443 add r3, r8
10842: 785b ldrb r3, [r3, #1]
10844: eb03 2309 add.w r3, r3, r9, lsl #8
return (in16 >> (16 - bit_pos - len)) & bit_mask;
10848: b29b uxth r3, r3
1084a: 43d2 mvns r2, r2
1084c: 3210 adds r2, #16
1084e: 4113 asrs r3, r2
10850: f003 0301 and.w r3, r3, #1
10854: e7e3 b.n 1081e <lv_font_get_bitmap_fmt_txt+0x686>
if(rle_cnt == 11) {
10856: 2f0b cmp r7, #11
10858: d00a beq.n 10870 <lv_font_get_bitmap_fmt_txt+0x6d8>
rle_rdp += 1;
1085a: 4616 mov r6, r2
ret = rle_prev_v;
1085c: f8dd 900c ldr.w r9, [sp, #12]
if(rle_cnt == 11) {
10860: 9b04 ldr r3, [sp, #16]
10862: 930a str r3, [sp, #40] ; 0x28
10864: 9b05 ldr r3, [sp, #20]
10866: 9306 str r3, [sp, #24]
10868: e78f b.n 1078a <lv_font_get_bitmap_fmt_txt+0x5f2>
1086a: bf00 nop
1086c: 20002b5c .word 0x20002b5c
uint32_t byte_pos = bit_pos >> 3;
10870: 08d3 lsrs r3, r2, #3
bit_pos = bit_pos & 0x7;
10872: f002 0207 and.w r2, r2, #7
if(bit_pos + len >= 8) {
10876: 1d91 adds r1, r2, #6
10878: 2907 cmp r1, #7
1087a: d815 bhi.n 108a8 <lv_font_get_bitmap_fmt_txt+0x710>
return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask;
1087c: f818 3003 ldrb.w r3, [r8, r3]
10880: f1c2 0202 rsb r2, r2, #2
10884: fa43 f202 asr.w r2, r3, r2
10888: f002 073f and.w r7, r2, #63 ; 0x3f
rle_rdp += 6;
1088c: 3607 adds r6, #7
if(rle_cnt != 0) {
1088e: 2f00 cmp r7, #0
10890: f040 80cf bne.w 10a32 <lv_font_get_bitmap_fmt_txt+0x89a>
switch(len) {
10894: 9b07 ldr r3, [sp, #28]
10896: 461a mov r2, r3
10898: 2a07 cmp r2, #7
1089a: d839 bhi.n 10910 <lv_font_get_bitmap_fmt_txt+0x778>
1089c: e8df f002 tbb [pc, r2]
108a0: 3330123b .word 0x3330123b
108a4: 36383838 .word 0x36383838
uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1];
108a8: f818 1003 ldrb.w r1, [r8, r3]
108ac: 4443 add r3, r8
108ae: 785b ldrb r3, [r3, #1]
108b0: eb03 2301 add.w r3, r3, r1, lsl #8
return (in16 >> (16 - bit_pos - len)) & bit_mask;
108b4: b29b uxth r3, r3
108b6: f1c2 020a rsb r2, r2, #10
108ba: fa43 f202 asr.w r2, r3, r2
108be: f002 073f and.w r7, r2, #63 ; 0x3f
108c2: e7e3 b.n 1088c <lv_font_get_bitmap_fmt_txt+0x6f4>
bit_mask = 0x3;
108c4: f04f 0903 mov.w r9, #3
uint32_t byte_pos = bit_pos >> 3;
108c8: 08f3 lsrs r3, r6, #3
bit_pos = bit_pos & 0x7;
108ca: f006 0207 and.w r2, r6, #7
if(bit_pos + len >= 8) {
108ce: eb02 010a add.w r1, r2, sl
108d2: 2907 cmp r1, #7
108d4: d822 bhi.n 1091c <lv_font_get_bitmap_fmt_txt+0x784>
return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask;
108d6: f818 3003 ldrb.w r3, [r8, r3]
108da: 990b ldr r1, [sp, #44] ; 0x2c
108dc: 1a8a subs r2, r1, r2
108de: fa43 f202 asr.w r2, r3, r2
108e2: ea02 0209 and.w r2, r2, r9
108e6: fa5f f982 uxtb.w r9, r2
rle_rdp += rle_bpp;
108ea: 4456 add r6, sl
rle_prev_v = ret;
108ec: f8cd 900c str.w r9, [sp, #12]
rle_rdp += rle_bpp;
108f0: 9b04 ldr r3, [sp, #16]
108f2: 930a str r3, [sp, #40] ; 0x28
108f4: 9b05 ldr r3, [sp, #20]
108f6: 930c str r3, [sp, #48] ; 0x30
rle_state = RLE_STATE_SINGLE;
108f8: 4671 mov r1, lr
rle_rdp += rle_bpp;
108fa: 9306 str r3, [sp, #24]
108fc: 9308 str r3, [sp, #32]
108fe: e744 b.n 1078a <lv_font_get_bitmap_fmt_txt+0x5f2>
bit_mask = 0x7;
10900: f04f 0907 mov.w r9, #7
10904: e7e0 b.n 108c8 <lv_font_get_bitmap_fmt_txt+0x730>
bit_mask = 0xF;
10906: f04f 090f mov.w r9, #15
1090a: e7dd b.n 108c8 <lv_font_get_bitmap_fmt_txt+0x730>
bit_mask = 0xFF;
1090c: 46e1 mov r9, ip
1090e: e7db b.n 108c8 <lv_font_get_bitmap_fmt_txt+0x730>
bit_mask = (uint16_t)((uint16_t) 1 << len) - 1;
10910: f8dd 9044 ldr.w r9, [sp, #68] ; 0x44
10914: e7d8 b.n 108c8 <lv_font_get_bitmap_fmt_txt+0x730>
bit_mask = 0x1;
10916: f8dd 9010 ldr.w r9, [sp, #16]
1091a: e7d5 b.n 108c8 <lv_font_get_bitmap_fmt_txt+0x730>
uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1];
1091c: f818 1003 ldrb.w r1, [r8, r3]
10920: 4443 add r3, r8
10922: 785b ldrb r3, [r3, #1]
10924: eb03 2301 add.w r3, r3, r1, lsl #8
return (in16 >> (16 - bit_pos - len)) & bit_mask;
10928: b29b uxth r3, r3
1092a: 990d ldr r1, [sp, #52] ; 0x34
1092c: 1a8a subs r2, r1, r2
1092e: fa43 f202 asr.w r2, r3, r2
10932: ea02 0209 and.w r2, r2, r9
10936: fa5f f982 uxtb.w r9, r2
1093a: e7d6 b.n 108ea <lv_font_get_bitmap_fmt_txt+0x752>
bit_mask = 0x3;
1093c: 2603 movs r6, #3
1093e: e008 b.n 10952 <lv_font_get_bitmap_fmt_txt+0x7ba>
bit_mask = 0x7;
10940: 2607 movs r6, #7
10942: e006 b.n 10952 <lv_font_get_bitmap_fmt_txt+0x7ba>
bit_mask = 0xF;
10944: 260f movs r6, #15
10946: e004 b.n 10952 <lv_font_get_bitmap_fmt_txt+0x7ba>
bit_mask = 0xFF;
10948: 4666 mov r6, ip
1094a: e002 b.n 10952 <lv_font_get_bitmap_fmt_txt+0x7ba>
bit_mask = (uint16_t)((uint16_t) 1 << len) - 1;
1094c: 9e11 ldr r6, [sp, #68] ; 0x44
1094e: e000 b.n 10952 <lv_font_get_bitmap_fmt_txt+0x7ba>
bit_mask = 0x1;
10950: 9e04 ldr r6, [sp, #16]
uint32_t byte_pos = bit_pos >> 3;
10952: 08d3 lsrs r3, r2, #3
bit_pos = bit_pos & 0x7;
10954: f002 0107 and.w r1, r2, #7
if(bit_pos + len >= 8) {
10958: eb01 090a add.w r9, r1, sl
1095c: f1b9 0f07 cmp.w r9, #7
10960: d814 bhi.n 1098c <lv_font_get_bitmap_fmt_txt+0x7f4>
return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask;
10962: f818 3003 ldrb.w r3, [r8, r3]
10966: 9d0b ldr r5, [sp, #44] ; 0x2c
10968: 1a69 subs r1, r5, r1
1096a: fa43 f101 asr.w r1, r3, r1
1096e: 4031 ands r1, r6
10970: fa5f f981 uxtb.w r9, r1
rle_rdp += rle_bpp;
10974: eb02 060a add.w r6, r2, sl
rle_prev_v = ret;
10978: f8cd 900c str.w r9, [sp, #12]
rle_rdp += rle_bpp;
1097c: 9b04 ldr r3, [sp, #16]
1097e: 930a str r3, [sp, #40] ; 0x28
10980: 9b05 ldr r3, [sp, #20]
10982: 930c str r3, [sp, #48] ; 0x30
rle_state = RLE_STATE_SINGLE;
10984: 4671 mov r1, lr
rle_rdp += rle_bpp;
10986: 9306 str r3, [sp, #24]
10988: 9308 str r3, [sp, #32]
1098a: e6fe b.n 1078a <lv_font_get_bitmap_fmt_txt+0x5f2>
uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1];
1098c: f818 9003 ldrb.w r9, [r8, r3]
10990: 4443 add r3, r8
10992: 785b ldrb r3, [r3, #1]
10994: eb03 2309 add.w r3, r3, r9, lsl #8
return (in16 >> (16 - bit_pos - len)) & bit_mask;
10998: b29b uxth r3, r3
1099a: 9d0d ldr r5, [sp, #52] ; 0x34
1099c: 1a69 subs r1, r5, r1
1099e: fa43 f101 asr.w r1, r3, r1
109a2: 4031 ands r1, r6
109a4: fa5f f981 uxtb.w r9, r1
109a8: e7e4 b.n 10974 <lv_font_get_bitmap_fmt_txt+0x7dc>
rle_cnt--;
109aa: 1e7b subs r3, r7, #1
if(rle_cnt == 0) {
109ac: f013 07ff ands.w r7, r3, #255 ; 0xff
109b0: d148 bne.n 10a44 <lv_font_get_bitmap_fmt_txt+0x8ac>
switch(len) {
109b2: 9b07 ldr r3, [sp, #28]
109b4: 461a mov r2, r3
109b6: 2a07 cmp r2, #7
109b8: d80d bhi.n 109d6 <lv_font_get_bitmap_fmt_txt+0x83e>
109ba: e8df f002 tbb [pc, r2]
109be: 040e .short 0x040e
109c0: 0c0c0806 .word 0x0c0c0806
109c4: 0a0c .short 0x0a0c
bit_mask = 0x3;
109c6: 2103 movs r1, #3
109c8: e008 b.n 109dc <lv_font_get_bitmap_fmt_txt+0x844>
bit_mask = 0x7;
109ca: 2107 movs r1, #7
109cc: e006 b.n 109dc <lv_font_get_bitmap_fmt_txt+0x844>
bit_mask = 0xF;
109ce: 210f movs r1, #15
109d0: e004 b.n 109dc <lv_font_get_bitmap_fmt_txt+0x844>
bit_mask = 0xFF;
109d2: 4661 mov r1, ip
109d4: e002 b.n 109dc <lv_font_get_bitmap_fmt_txt+0x844>
bit_mask = (uint16_t)((uint16_t) 1 << len) - 1;
109d6: 9911 ldr r1, [sp, #68] ; 0x44
109d8: e000 b.n 109dc <lv_font_get_bitmap_fmt_txt+0x844>
bit_mask = 0x1;
109da: 9904 ldr r1, [sp, #16]
uint32_t byte_pos = bit_pos >> 3;
109dc: 08f3 lsrs r3, r6, #3
bit_pos = bit_pos & 0x7;
109de: f006 0207 and.w r2, r6, #7
if(bit_pos + len >= 8) {
109e2: eb02 090a add.w r9, r2, sl
109e6: f1b9 0f07 cmp.w r9, #7
109ea: d813 bhi.n 10a14 <lv_font_get_bitmap_fmt_txt+0x87c>
return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask;
109ec: f818 3003 ldrb.w r3, [r8, r3]
109f0: 9d0b ldr r5, [sp, #44] ; 0x2c
109f2: 1aaa subs r2, r5, r2
109f4: fa43 f202 asr.w r2, r3, r2
109f8: 400a ands r2, r1
109fa: fa5f f982 uxtb.w r9, r2
rle_rdp += rle_bpp;
109fe: 4456 add r6, sl
rle_prev_v = ret;
10a00: f8cd 900c str.w r9, [sp, #12]
rle_rdp += rle_bpp;
10a04: 9b04 ldr r3, [sp, #16]
10a06: 930a str r3, [sp, #40] ; 0x28
10a08: 9b05 ldr r3, [sp, #20]
10a0a: 930c str r3, [sp, #48] ; 0x30
rle_state = RLE_STATE_SINGLE;
10a0c: 4671 mov r1, lr
rle_rdp += rle_bpp;
10a0e: 9306 str r3, [sp, #24]
10a10: 9308 str r3, [sp, #32]
10a12: e6ba b.n 1078a <lv_font_get_bitmap_fmt_txt+0x5f2>
uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1];
10a14: f818 9003 ldrb.w r9, [r8, r3]
10a18: 4443 add r3, r8
10a1a: 785b ldrb r3, [r3, #1]
10a1c: eb03 2309 add.w r3, r3, r9, lsl #8
return (in16 >> (16 - bit_pos - len)) & bit_mask;
10a20: b29b uxth r3, r3
10a22: 9d0d ldr r5, [sp, #52] ; 0x34
10a24: 1aaa subs r2, r5, r2
10a26: fa43 f202 asr.w r2, r3, r2
10a2a: 400a ands r2, r1
10a2c: fa5f f982 uxtb.w r9, r2
10a30: e7e5 b.n 109fe <lv_font_get_bitmap_fmt_txt+0x866>
ret = rle_prev_v;
10a32: f8dd 900c ldr.w r9, [sp, #12]
if(rle_cnt != 0) {
10a36: 9b04 ldr r3, [sp, #16]
10a38: 930a str r3, [sp, #40] ; 0x28
10a3a: 9b05 ldr r3, [sp, #20]
10a3c: 930c str r3, [sp, #48] ; 0x30
rle_state = RLE_STATE_COUNTER;
10a3e: 2102 movs r1, #2
if(rle_cnt != 0) {
10a40: 9306 str r3, [sp, #24]
10a42: e6a2 b.n 1078a <lv_font_get_bitmap_fmt_txt+0x5f2>
ret = rle_prev_v;
10a44: f8dd 900c ldr.w r9, [sp, #12]
if(rle_cnt == 0) {
10a48: 9b04 ldr r3, [sp, #16]
10a4a: 930a str r3, [sp, #40] ; 0x28
10a4c: e69d b.n 1078a <lv_font_get_bitmap_fmt_txt+0x5f2>
10a4e: f8dd 904c ldr.w r9, [sp, #76] ; 0x4c
10a52: 9707 str r7, [sp, #28]
10a54: 9f14 ldr r7, [sp, #80] ; 0x50
10a56: 9b16 ldr r3, [sp, #88] ; 0x58
10a58: f103 3eff add.w lr, r3, #4294967295
for(i = 0; i < w; i++) {
10a5c: 9d0e ldr r5, [sp, #56] ; 0x38
val = 2;
10a5e: f8dd c03c ldr.w ip, [sp, #60] ; 0x3c
10a62: 9611 str r6, [sp, #68] ; 0x44
10a64: 9113 str r1, [sp, #76] ; 0x4c
10a66: f8dd b048 ldr.w fp, [sp, #72] ; 0x48
10a6a: e021 b.n 10ab0 <lv_font_get_bitmap_fmt_txt+0x918>
switch(val) {
10a6c: 2a07 cmp r2, #7
10a6e: d840 bhi.n 10af2 <lv_font_get_bitmap_fmt_txt+0x95a>
10a70: e8df f002 tbb [pc, r2]
10a74: 302d2a04 .word 0x302d2a04
10a78: 3c393633 .word 0x3c393633
len = 4;
10a7c: 2304 movs r3, #4
val = 0;
10a7e: 2200 movs r2, #0
bit_pos = bit_pos & 0x7;
10a80: f005 0107 and.w r1, r5, #7
10a84: f1c1 0108 rsb r1, r1, #8
bit_pos = 8 - bit_pos - len;
10a88: 1ac9 subs r1, r1, r3
out[byte_pos] &= ((~bit_mask) << bit_pos);
10a8a: f3c5 00cf ubfx r0, r5, #3, #16
uint8_t bit_mask = (uint16_t)((uint16_t) 1 << len) - 1;
10a8e: 2601 movs r6, #1
10a90: fa06 f303 lsl.w r3, r6, r3
out[byte_pos] &= ((~bit_mask) << bit_pos);
10a94: 425b negs r3, r3
10a96: f063 03ff orn r3, r3, #255 ; 0xff
10a9a: 408b lsls r3, r1
10a9c: f819 6000 ldrb.w r6, [r9, r0]
10aa0: 4033 ands r3, r6
out[byte_pos] |= (val << bit_pos);
10aa2: 408a lsls r2, r1
10aa4: 4313 orrs r3, r2
10aa6: f809 3000 strb.w r3, [r9, r0]
10aaa: 445d add r5, fp
for(x = 0; x < w; x++) {
10aac: 42bc cmp r4, r7
10aae: d022 beq.n 10af6 <lv_font_get_bitmap_fmt_txt+0x95e>
line_buf1[x] = line_buf2[x] ^ line_buf1[x];
10ab0: f817 2f01 ldrb.w r2, [r7, #1]!
10ab4: f89e 3001 ldrb.w r3, [lr, #1]
10ab8: 405a eors r2, r3
10aba: f80e 2f01 strb.w r2, [lr, #1]!
if(len == 3) {
10abe: f1bc 0f03 cmp.w ip, #3
10ac2: d0d3 beq.n 10a6c <lv_font_get_bitmap_fmt_txt+0x8d4>
10ac4: 9b09 ldr r3, [sp, #36] ; 0x24
10ac6: e7db b.n 10a80 <lv_font_get_bitmap_fmt_txt+0x8e8>
len = 4;
10ac8: 2304 movs r3, #4
val = 2;
10aca: 2202 movs r2, #2
10acc: e7d8 b.n 10a80 <lv_font_get_bitmap_fmt_txt+0x8e8>
len = 4;
10ace: 2304 movs r3, #4
val = 4;
10ad0: 9a1d ldr r2, [sp, #116] ; 0x74
10ad2: e7d5 b.n 10a80 <lv_font_get_bitmap_fmt_txt+0x8e8>
len = 4;
10ad4: 2304 movs r3, #4
val = 6;
10ad6: 2206 movs r2, #6
10ad8: e7d2 b.n 10a80 <lv_font_get_bitmap_fmt_txt+0x8e8>
len = 4;
10ada: 2304 movs r3, #4
val = 9;
10adc: 2209 movs r2, #9
10ade: e7cf b.n 10a80 <lv_font_get_bitmap_fmt_txt+0x8e8>
len = 4;
10ae0: 2304 movs r3, #4
val = 11;
10ae2: 220b movs r2, #11
10ae4: e7cc b.n 10a80 <lv_font_get_bitmap_fmt_txt+0x8e8>
len = 4;
10ae6: 2304 movs r3, #4
val = 13;
10ae8: 220d movs r2, #13
10aea: e7c9 b.n 10a80 <lv_font_get_bitmap_fmt_txt+0x8e8>
len = 4;
10aec: 2304 movs r3, #4
val = 15;
10aee: 220f movs r2, #15
10af0: e7c6 b.n 10a80 <lv_font_get_bitmap_fmt_txt+0x8e8>
len = 4;
10af2: 2304 movs r3, #4
10af4: e7c4 b.n 10a80 <lv_font_get_bitmap_fmt_txt+0x8e8>
10af6: 9e11 ldr r6, [sp, #68] ; 0x44
10af8: f8dd b04c ldr.w fp, [sp, #76] ; 0x4c
10afc: 9b1a ldr r3, [sp, #104] ; 0x68
10afe: 9a12 ldr r2, [sp, #72] ; 0x48
10b00: 4413 add r3, r2
10b02: 9a0e ldr r2, [sp, #56] ; 0x38
10b04: 441a add r2, r3
10b06: 920e str r2, [sp, #56] ; 0x38
10b08: 9b10 ldr r3, [sp, #64] ; 0x40
10b0a: 3301 adds r3, #1
10b0c: b21b sxth r3, r3
10b0e: 9310 str r3, [sp, #64] ; 0x40
for(y = 1; y < h; y++) {
10b10: 9a15 ldr r2, [sp, #84] ; 0x54
10b12: 429a cmp r2, r3
10b14: d015 beq.n 10b42 <lv_font_get_bitmap_fmt_txt+0x9aa>
for(i = 0; i < w; i++) {
10b16: 9b18 ldr r3, [sp, #96] ; 0x60
10b18: 2b00 cmp r3, #0
10b1a: d0f5 beq.n 10b08 <lv_font_get_bitmap_fmt_txt+0x970>
10b1c: 9b17 ldr r3, [sp, #92] ; 0x5c
10b1e: 1e5f subs r7, r3, #1
10b20: 463c mov r4, r7
uint8_t ret = 0;
10b22: f04f 0e00 mov.w lr, #0
switch(len) {
10b26: 9b19 ldr r3, [sp, #100] ; 0x64
10b28: 1e5d subs r5, r3, #1
bit_mask = (uint16_t)((uint16_t) 1 << len) - 1;
10b2a: 9b1b ldr r3, [sp, #108] ; 0x6c
10b2c: 9311 str r3, [sp, #68] ; 0x44
bit_mask = 0xFF;
10b2e: f04f 0cff mov.w ip, #255 ; 0xff
10b32: f8cd 904c str.w r9, [sp, #76] ; 0x4c
10b36: 4659 mov r1, fp
10b38: 9714 str r7, [sp, #80] ; 0x50
10b3a: 9f07 ldr r7, [sp, #28]
10b3c: 9507 str r5, [sp, #28]
10b3e: 981c ldr r0, [sp, #112] ; 0x70
10b40: e628 b.n 10794 <lv_font_get_bitmap_fmt_txt+0x5fc>
10b42: 46b4 mov ip, r6
10b44: 9b08 ldr r3, [sp, #32]
10b46: b9c3 cbnz r3, 10b7a <lv_font_get_bitmap_fmt_txt+0x9e2>
10b48: 9b06 ldr r3, [sp, #24]
10b4a: b113 cbz r3, 10b52 <lv_font_get_bitmap_fmt_txt+0x9ba>
10b4c: 4b13 ldr r3, [pc, #76] ; (10b9c <lv_font_get_bitmap_fmt_txt+0xa04>)
10b4e: f8c3 c00c str.w ip, [r3, #12]
10b52: 9b0c ldr r3, [sp, #48] ; 0x30
10b54: b113 cbz r3, 10b5c <lv_font_get_bitmap_fmt_txt+0x9c4>
10b56: 4b11 ldr r3, [pc, #68] ; (10b9c <lv_font_get_bitmap_fmt_txt+0xa04>)
10b58: f883 b009 strb.w fp, [r3, #9]
10b5c: 9b0a ldr r3, [sp, #40] ; 0x28
10b5e: b11b cbz r3, 10b68 <lv_font_get_bitmap_fmt_txt+0x9d0>
10b60: 4b0e ldr r3, [pc, #56] ; (10b9c <lv_font_get_bitmap_fmt_txt+0xa04>)
10b62: f89d 201c ldrb.w r2, [sp, #28]
10b66: 745a strb r2, [r3, #17]
_lv_mem_buf_release(line_buf1);
10b68: 9816 ldr r0, [sp, #88] ; 0x58
10b6a: 4c0d ldr r4, [pc, #52] ; (10ba0 <lv_font_get_bitmap_fmt_txt+0xa08>)
10b6c: 47a0 blx r4
_lv_mem_buf_release(line_buf2);
10b6e: 9817 ldr r0, [sp, #92] ; 0x5c
10b70: 47a0 blx r4
return decompr_buf;
10b72: 4b0a ldr r3, [pc, #40] ; (10b9c <lv_font_get_bitmap_fmt_txt+0xa04>)
10b74: 6818 ldr r0, [r3, #0]
10b76: f7ff bb2c b.w 101d2 <lv_font_get_bitmap_fmt_txt+0x3a>
10b7a: 4b08 ldr r3, [pc, #32] ; (10b9c <lv_font_get_bitmap_fmt_txt+0xa04>)
10b7c: f89d 200c ldrb.w r2, [sp, #12]
10b80: 741a strb r2, [r3, #16]
10b82: e7e1 b.n 10b48 <lv_font_get_bitmap_fmt_txt+0x9b0>
if(!gid) return NULL;
10b84: 2000 movs r0, #0
10b86: f7ff bb24 b.w 101d2 <lv_font_get_bitmap_fmt_txt+0x3a>
return NULL;
10b8a: 2000 movs r0, #0
10b8c: f7ff bb21 b.w 101d2 <lv_font_get_bitmap_fmt_txt+0x3a>
if(gsize == 0) return NULL;
10b90: 2000 movs r0, #0
10b92: f7ff bb1e b.w 101d2 <lv_font_get_bitmap_fmt_txt+0x3a>
if(decompr_buf == NULL) return NULL;
10b96: 2000 movs r0, #0
10b98: f7ff bb1b b.w 101d2 <lv_font_get_bitmap_fmt_txt+0x3a>
10b9c: 20002b5c .word 0x20002b5c
10ba0: 00012571 .word 0x00012571
00010ba4 <lv_font_get_glyph_dsc_fmt_txt>:
{
10ba4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
10ba8: b084 sub sp, #16
10baa: 4607 mov r7, r0
10bac: 460c mov r4, r1
10bae: 4699 mov r9, r3
if(unicode_letter == '\t') {
10bb0: 2a09 cmp r2, #9
is_tab = true;
10bb2: bf06 itte eq
10bb4: 2501 moveq r5, #1
unicode_letter = ' ';
10bb6: 2220 moveq r2, #32
bool is_tab = false;
10bb8: 2500 movne r5, #0
lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc;
10bba: 6906 ldr r6, [r0, #16]
uint32_t gid = get_glyph_dsc_id(font, unicode_letter);
10bbc: 4611 mov r1, r2
10bbe: 4b49 ldr r3, [pc, #292] ; (10ce4 <lv_font_get_glyph_dsc_fmt_txt+0x140>)
10bc0: 4798 blx r3
if(!gid) return false;
10bc2: 4680 mov r8, r0
10bc4: 2800 cmp r0, #0
10bc6: f000 8086 beq.w 10cd6 <lv_font_get_glyph_dsc_fmt_txt+0x132>
if(fdsc->kern_dsc) {
10bca: 68f3 ldr r3, [r6, #12]
10bcc: 2b00 cmp r3, #0
10bce: d07c beq.n 10cca <lv_font_get_glyph_dsc_fmt_txt+0x126>
uint32_t gid_next = get_glyph_dsc_id(font, unicode_letter_next);
10bd0: 4649 mov r1, r9
10bd2: 4638 mov r0, r7
10bd4: 4b43 ldr r3, [pc, #268] ; (10ce4 <lv_font_get_glyph_dsc_fmt_txt+0x140>)
10bd6: 4798 blx r3
if(gid_next) {
10bd8: 4603 mov r3, r0
10bda: bb18 cbnz r0, 10c24 <lv_font_get_glyph_dsc_fmt_txt+0x80>
int8_t kvalue = 0;
10bdc: 2300 movs r3, #0
const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[gid];
10bde: 6870 ldr r0, [r6, #4]
10be0: eb00 00c8 add.w r0, r0, r8, lsl #3
int32_t kv = ((int32_t)((int32_t)kvalue * fdsc->kern_scale) >> 4);
10be4: 8a32 ldrh r2, [r6, #16]
10be6: fb03 f302 mul.w r3, r3, r2
10bea: 111b asrs r3, r3, #4
uint32_t adv_w = gdsc->adv_w;
10bec: 8842 ldrh r2, [r0, #2]
10bee: f3c2 120b ubfx r2, r2, #4, #12
if(is_tab) adv_w *= 2;
10bf2: b105 cbz r5, 10bf6 <lv_font_get_glyph_dsc_fmt_txt+0x52>
10bf4: 0052 lsls r2, r2, #1
adv_w = (adv_w + (1 << 3)) >> 4;
10bf6: 3308 adds r3, #8
10bf8: 4413 add r3, r2
10bfa: 091b lsrs r3, r3, #4
dsc_out->adv_w = adv_w;
10bfc: 8023 strh r3, [r4, #0]
dsc_out->box_h = gdsc->box_h;
10bfe: 7943 ldrb r3, [r0, #5]
10c00: 80a3 strh r3, [r4, #4]
dsc_out->box_w = gdsc->box_w;
10c02: 7902 ldrb r2, [r0, #4]
10c04: 8062 strh r2, [r4, #2]
dsc_out->ofs_x = gdsc->ofs_x;
10c06: f990 3006 ldrsb.w r3, [r0, #6]
10c0a: 80e3 strh r3, [r4, #6]
dsc_out->ofs_y = gdsc->ofs_y;
10c0c: f990 3007 ldrsb.w r3, [r0, #7]
10c10: 8123 strh r3, [r4, #8]
dsc_out->bpp = (uint8_t)fdsc->bpp;
10c12: 7cf3 ldrb r3, [r6, #19]
10c14: f3c3 0383 ubfx r3, r3, #2, #4
10c18: 72a3 strb r3, [r4, #10]
if(is_tab) dsc_out->box_w = dsc_out->box_w * 2;
10c1a: 2d00 cmp r5, #0
10c1c: d060 beq.n 10ce0 <lv_font_get_glyph_dsc_fmt_txt+0x13c>
10c1e: 0052 lsls r2, r2, #1
10c20: 8062 strh r2, [r4, #2]
10c22: e059 b.n 10cd8 <lv_font_get_glyph_dsc_fmt_txt+0x134>
lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc;
10c24: 693a ldr r2, [r7, #16]
if(fdsc->kern_classes == 0) {
10c26: 7cd1 ldrb r1, [r2, #19]
10c28: f011 0f40 tst.w r1, #64 ; 0x40
10c2c: d13c bne.n 10ca8 <lv_font_get_glyph_dsc_fmt_txt+0x104>
const lv_font_fmt_txt_kern_pair_t * kdsc = fdsc->kern_dsc;
10c2e: 68d7 ldr r7, [r2, #12]
if(kdsc->glyph_ids_size == 0) {
10c30: 7afa ldrb r2, [r7, #11]
10c32: f012 0203 ands.w r2, r2, #3
10c36: d003 beq.n 10c40 <lv_font_get_glyph_dsc_fmt_txt+0x9c>
else if(kdsc->glyph_ids_size == 1) {
10c38: 2a01 cmp r2, #1
10c3a: d01b beq.n 10c74 <lv_font_get_glyph_dsc_fmt_txt+0xd0>
int8_t value = 0;
10c3c: 2300 movs r3, #0
10c3e: e7ce b.n 10bde <lv_font_get_glyph_dsc_fmt_txt+0x3a>
const uint8_t * g_ids = kdsc->glyph_ids;
10c40: f8d7 9000 ldr.w r9, [r7]
uint16_t g_id_both = (gid_right << 8) + gid_left; /*Create one number from the ids*/
10c44: eb08 2300 add.w r3, r8, r0, lsl #8
10c48: a804 add r0, sp, #16
10c4a: f820 3d04 strh.w r3, [r0, #-4]!
uint8_t * kid_p = _lv_utils_bsearch(&g_id_both, g_ids, kdsc->pair_cnt, 2, kern_pair_8_compare);
10c4e: 68ba ldr r2, [r7, #8]
10c50: 4b25 ldr r3, [pc, #148] ; (10ce8 <lv_font_get_glyph_dsc_fmt_txt+0x144>)
10c52: 9300 str r3, [sp, #0]
10c54: 2302 movs r3, #2
10c56: f022 427f bic.w r2, r2, #4278190080 ; 0xff000000
10c5a: 4649 mov r1, r9
10c5c: f8df a090 ldr.w sl, [pc, #144] ; 10cf0 <lv_font_get_glyph_dsc_fmt_txt+0x14c>
10c60: 47d0 blx sl
if(kid_p) {
10c62: b128 cbz r0, 10c70 <lv_font_get_glyph_dsc_fmt_txt+0xcc>
lv_uintptr_t ofs = (lv_uintptr_t)(kid_p - g_ids);
10c64: eba0 0309 sub.w r3, r0, r9
ofs = ofs >> 1; /*ofs is for pair, divide by 2 to refer as a single value*/
10c68: 085b lsrs r3, r3, #1
value = kdsc->values[ofs];
10c6a: 687a ldr r2, [r7, #4]
10c6c: 56d3 ldrsb r3, [r2, r3]
10c6e: e7b6 b.n 10bde <lv_font_get_glyph_dsc_fmt_txt+0x3a>
int8_t value = 0;
10c70: 2300 movs r3, #0
10c72: e7b4 b.n 10bde <lv_font_get_glyph_dsc_fmt_txt+0x3a>
const uint16_t * g_ids = kdsc->glyph_ids;
10c74: f8d7 9000 ldr.w r9, [r7]
lv_uintptr_t g_id_both = (uint32_t)((uint32_t)gid_right << 8) + gid_left; /*Create one number from the ids*/
10c78: eb08 2300 add.w r3, r8, r0, lsl #8
10c7c: a804 add r0, sp, #16
10c7e: f840 3d04 str.w r3, [r0, #-4]!
uint8_t * kid_p = _lv_utils_bsearch(&g_id_both, g_ids, kdsc->pair_cnt, 4, kern_pair_16_compare);
10c82: 68ba ldr r2, [r7, #8]
10c84: 4b19 ldr r3, [pc, #100] ; (10cec <lv_font_get_glyph_dsc_fmt_txt+0x148>)
10c86: 9300 str r3, [sp, #0]
10c88: 2304 movs r3, #4
10c8a: f022 427f bic.w r2, r2, #4278190080 ; 0xff000000
10c8e: 4649 mov r1, r9
10c90: f8df a05c ldr.w sl, [pc, #92] ; 10cf0 <lv_font_get_glyph_dsc_fmt_txt+0x14c>
10c94: 47d0 blx sl
if(kid_p) {
10c96: b128 cbz r0, 10ca4 <lv_font_get_glyph_dsc_fmt_txt+0x100>
lv_uintptr_t ofs = (lv_uintptr_t)(kid_p - (const uint8_t *)g_ids);
10c98: eba0 0309 sub.w r3, r0, r9
ofs = ofs >> 4; /*ofs is 4 byte pairs, divide by 4 to refer as a single value*/
10c9c: 091b lsrs r3, r3, #4
value = kdsc->values[ofs];
10c9e: 687a ldr r2, [r7, #4]
10ca0: 56d3 ldrsb r3, [r2, r3]
10ca2: e79c b.n 10bde <lv_font_get_glyph_dsc_fmt_txt+0x3a>
int8_t value = 0;
10ca4: 2300 movs r3, #0
10ca6: e79a b.n 10bde <lv_font_get_glyph_dsc_fmt_txt+0x3a>
const lv_font_fmt_txt_kern_classes_t * kdsc = fdsc->kern_dsc;
10ca8: 68d1 ldr r1, [r2, #12]
uint8_t left_class = kdsc->left_class_mapping[gid_left];
10caa: 684a ldr r2, [r1, #4]
10cac: f812 2008 ldrb.w r2, [r2, r8]
if(left_class > 0 && right_class > 0) {
10cb0: b16a cbz r2, 10cce <lv_font_get_glyph_dsc_fmt_txt+0x12a>
uint8_t right_class = kdsc->right_class_mapping[gid_right];
10cb2: 6888 ldr r0, [r1, #8]
10cb4: 5cc3 ldrb r3, [r0, r3]
if(left_class > 0 && right_class > 0) {
10cb6: b163 cbz r3, 10cd2 <lv_font_get_glyph_dsc_fmt_txt+0x12e>
value = kdsc->class_pair_values[(left_class - 1) * kdsc->right_class_cnt + (right_class - 1)];
10cb8: 3a01 subs r2, #1
10cba: 7b48 ldrb r0, [r1, #13]
10cbc: 6809 ldr r1, [r1, #0]
10cbe: 440b add r3, r1
10cc0: fb00 3202 mla r2, r0, r2, r3
10cc4: f912 3c01 ldrsb.w r3, [r2, #-1]
10cc8: e789 b.n 10bde <lv_font_get_glyph_dsc_fmt_txt+0x3a>
int8_t kvalue = 0;
10cca: 2300 movs r3, #0
10ccc: e787 b.n 10bde <lv_font_get_glyph_dsc_fmt_txt+0x3a>
int8_t value = 0;
10cce: 2300 movs r3, #0
10cd0: e785 b.n 10bde <lv_font_get_glyph_dsc_fmt_txt+0x3a>
10cd2: 2300 movs r3, #0
10cd4: e783 b.n 10bde <lv_font_get_glyph_dsc_fmt_txt+0x3a>
if(!gid) return false;
10cd6: 2500 movs r5, #0
}
10cd8: 4628 mov r0, r5
10cda: b004 add sp, #16
10cdc: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
return true;
10ce0: 2501 movs r5, #1
10ce2: e7f9 b.n 10cd8 <lv_font_get_glyph_dsc_fmt_txt+0x134>
10ce4: 000100ad .word 0x000100ad
10ce8: 00010081 .word 0x00010081
10cec: 00010093 .word 0x00010093
10cf0: 00014185 .word 0x00014185
00010cf4 <_lv_font_clean_up_fmt_txt>:
{
10cf4: b508 push {r3, lr}
if(decompr_buf) {
10cf6: 4b04 ldr r3, [pc, #16] ; (10d08 <_lv_font_clean_up_fmt_txt+0x14>)
10cf8: 6818 ldr r0, [r3, #0]
10cfa: b120 cbz r0, 10d06 <_lv_font_clean_up_fmt_txt+0x12>
lv_mem_free(decompr_buf);
10cfc: 4b03 ldr r3, [pc, #12] ; (10d0c <_lv_font_clean_up_fmt_txt+0x18>)
10cfe: 4798 blx r3
decompr_buf = NULL;
10d00: 2200 movs r2, #0
10d02: 4b01 ldr r3, [pc, #4] ; (10d08 <_lv_font_clean_up_fmt_txt+0x14>)
10d04: 601a str r2, [r3, #0]
10d06: bd08 pop {r3, pc}
10d08: 20002b5c .word 0x20002b5c
10d0c: 000124c5 .word 0x000124c5
00010d10 <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)
{
10d10: b510 push {r4, lr}
10d12: 4604 mov r4, r0
_lv_memset_00(driver, sizeof(lv_disp_drv_t));
10d14: 212c movs r1, #44 ; 0x2c
10d16: 4b15 ldr r3, [pc, #84] ; (10d6c <lv_disp_drv_init+0x5c>)
10d18: 4798 blx r3
driver->flush_cb = NULL;
10d1a: 2300 movs r3, #0
10d1c: 60e3 str r3, [r4, #12]
driver->hor_res = LV_HOR_RES_MAX;
10d1e: f44f 72f0 mov.w r2, #480 ; 0x1e0
10d22: 8022 strh r2, [r4, #0]
driver->ver_res = LV_VER_RES_MAX;
10d24: f44f 7288 mov.w r2, #272 ; 0x110
10d28: 8062 strh r2, [r4, #2]
driver->buffer = NULL;
10d2a: 6063 str r3, [r4, #4]
driver->rotated = 0;
10d2c: 7a22 ldrb r2, [r4, #8]
10d2e: f363 0241 bfi r2, r3, #1, #1
10d32: 7222 strb r2, [r4, #8]
driver->color_chroma_key = LV_COLOR_TRANSP;
10d34: f894 2028 ldrb.w r2, [r4, #40] ; 0x28
10d38: f363 0204 bfi r2, r3, #0, #5
10d3c: f884 2028 strb.w r2, [r4, #40] ; 0x28
10d40: 8d22 ldrh r2, [r4, #40] ; 0x28
10d42: f442 62fc orr.w r2, r2, #2016 ; 0x7e0
10d46: 8522 strh r2, [r4, #40] ; 0x28
10d48: 0a12 lsrs r2, r2, #8
10d4a: f363 02c7 bfi r2, r3, #3, #5
10d4e: f884 2029 strb.w r2, [r4, #41] ; 0x29
driver->dpi = LV_DPI;
10d52: 8922 ldrh r2, [r4, #8]
10d54: 2182 movs r1, #130 ; 0x82
10d56: f361 028b bfi r2, r1, #2, #10
10d5a: 8122 strh r2, [r4, #8]
#if LV_ANTIALIAS
driver->antialiasing = true;
10d5c: f042 0201 orr.w r2, r2, #1
10d60: 7222 strb r2, [r4, #8]
#if LV_COLOR_SCREEN_TRANSP
driver->screen_transp = 1;
#endif
#if LV_USE_GPU
driver->gpu_blend_cb = NULL;
10d62: 6223 str r3, [r4, #32]
driver->gpu_fill_cb = NULL;
10d64: 6263 str r3, [r4, #36] ; 0x24
#if LV_USE_USER_DATA
driver->user_data = NULL;
#endif
driver->set_px_cb = NULL;
10d66: 6163 str r3, [r4, #20]
10d68: bd10 pop {r4, pc}
10d6a: bf00 nop
10d6c: 00012b37 .word 0x00012b37
00010d70 <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)
{
10d70: b5f8 push {r3, r4, r5, r6, r7, lr}
10d72: 4604 mov r4, r0
10d74: 460d mov r5, r1
10d76: 4617 mov r7, r2
10d78: 461e mov r6, r3
_lv_memset_00(disp_buf, sizeof(lv_disp_buf_t));
10d7a: 2124 movs r1, #36 ; 0x24
10d7c: 4b03 ldr r3, [pc, #12] ; (10d8c <lv_disp_buf_init+0x1c>)
10d7e: 4798 blx r3
disp_buf->buf1 = buf1;
10d80: 6025 str r5, [r4, #0]
disp_buf->buf2 = buf2;
10d82: 6067 str r7, [r4, #4]
disp_buf->buf_act = disp_buf->buf1;
10d84: 60a5 str r5, [r4, #8]
disp_buf->size = size_in_px_cnt;
10d86: 60e6 str r6, [r4, #12]
10d88: bdf8 pop {r3, r4, r5, r6, r7, pc}
10d8a: bf00 nop
10d8c: 00012b37 .word 0x00012b37
00010d90 <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)
{
10d90: b5f0 push {r4, r5, r6, r7, lr}
10d92: b083 sub sp, #12
10d94: 4605 mov r5, r0
lv_disp_t * disp = _lv_ll_ins_head(&LV_GC_ROOT(_lv_disp_ll));
10d96: 483f ldr r0, [pc, #252] ; (10e94 <lv_disp_drv_register+0x104>)
10d98: 4b3f ldr r3, [pc, #252] ; (10e98 <lv_disp_drv_register+0x108>)
10d9a: 4798 blx r3
if(!disp) {
10d9c: 4604 mov r4, r0
10d9e: 2800 cmp r0, #0
10da0: d054 beq.n 10e4c <lv_disp_drv_register+0xbc>
LV_ASSERT_MEM(disp);
return NULL;
}
_lv_memset_00(disp, sizeof(lv_disp_t));
10da2: f44f 71b8 mov.w r1, #368 ; 0x170
10da6: 4b3d ldr r3, [pc, #244] ; (10e9c <lv_disp_drv_register+0x10c>)
10da8: 4798 blx r3
_lv_memcpy(&disp->driver, driver, sizeof(lv_disp_drv_t));
10daa: 222c movs r2, #44 ; 0x2c
10dac: 4629 mov r1, r5
10dae: 4620 mov r0, r4
10db0: 4b3b ldr r3, [pc, #236] ; (10ea0 <lv_disp_drv_register+0x110>)
10db2: 4798 blx r3
_lv_ll_init(&disp->scr_ll, sizeof(lv_obj_t));
10db4: 214c movs r1, #76 ; 0x4c
10db6: f104 0030 add.w r0, r4, #48 ; 0x30
10dba: 4b3a ldr r3, [pc, #232] ; (10ea4 <lv_disp_drv_register+0x114>)
10dbc: 4798 blx r3
disp->last_activity_time = 0;
10dbe: 2300 movs r3, #0
10dc0: f8c4 316c str.w r3, [r4, #364] ; 0x16c
if(disp_def == NULL) disp_def = disp;
10dc4: 4b38 ldr r3, [pc, #224] ; (10ea8 <lv_disp_drv_register+0x118>)
10dc6: 681b ldr r3, [r3, #0]
10dc8: 2b00 cmp r3, #0
10dca: d050 beq.n 10e6e <lv_disp_drv_register+0xde>
lv_disp_t * disp_def_tmp = disp_def;
10dcc: 4b36 ldr r3, [pc, #216] ; (10ea8 <lv_disp_drv_register+0x118>)
10dce: 681f ldr r7, [r3, #0]
disp_def = disp; /*Temporarily change the default screen to create the default screens on the
10dd0: 601c str r4, [r3, #0]
new display*/
/*Create a refresh task*/
disp->refr_task = lv_task_create(_lv_disp_refr_task, LV_DISP_DEF_REFR_PERIOD, LV_REFR_TASK_PRIO, disp);
10dd2: 4623 mov r3, r4
10dd4: 2203 movs r2, #3
10dd6: 211e movs r1, #30
10dd8: 4834 ldr r0, [pc, #208] ; (10eac <lv_disp_drv_register+0x11c>)
10dda: 4d35 ldr r5, [pc, #212] ; (10eb0 <lv_disp_drv_register+0x120>)
10ddc: 47a8 blx r5
10dde: 62e0 str r0, [r4, #44] ; 0x2c
LV_ASSERT_MEM(disp->refr_task);
10de0: 4b34 ldr r3, [pc, #208] ; (10eb4 <lv_disp_drv_register+0x124>)
10de2: 4798 blx r3
10de4: 2800 cmp r0, #0
10de6: d045 beq.n 10e74 <lv_disp_drv_register+0xe4>
if(disp->refr_task == NULL) return NULL;
10de8: 6ae3 ldr r3, [r4, #44] ; 0x2c
10dea: 2b00 cmp r3, #0
10dec: d04f beq.n 10e8e <lv_disp_drv_register+0xfe>
disp->inv_p = 0;
10dee: f8b4 3168 ldrh.w r3, [r4, #360] ; 0x168
10df2: f36f 0309 bfc r3, #0, #10
10df6: f8a4 3168 strh.w r3, [r4, #360] ; 0x168
disp->last_activity_time = 0;
10dfa: 2500 movs r5, #0
10dfc: f8c4 516c str.w r5, [r4, #364] ; 0x16c
disp->act_scr = lv_obj_create(NULL, NULL); /*Create a default screen on the display*/
10e00: 4629 mov r1, r5
10e02: 4628 mov r0, r5
10e04: 4e2c ldr r6, [pc, #176] ; (10eb8 <lv_disp_drv_register+0x128>)
10e06: 47b0 blx r6
10e08: 63e0 str r0, [r4, #60] ; 0x3c
disp->top_layer = lv_obj_create(NULL, NULL); /*Create top layer on the display*/
10e0a: 4629 mov r1, r5
10e0c: 4628 mov r0, r5
10e0e: 47b0 blx r6
10e10: 6420 str r0, [r4, #64] ; 0x40
disp->sys_layer = lv_obj_create(NULL, NULL); /*Create sys layer on the display*/
10e12: 4629 mov r1, r5
10e14: 4628 mov r0, r5
10e16: 47b0 blx r6
10e18: 6460 str r0, [r4, #68] ; 0x44
lv_obj_reset_style_list(disp->top_layer, LV_OBJ_PART_MAIN);
10e1a: 4629 mov r1, r5
10e1c: 6c20 ldr r0, [r4, #64] ; 0x40
10e1e: 4e27 ldr r6, [pc, #156] ; (10ebc <lv_disp_drv_register+0x12c>)
10e20: 47b0 blx r6
lv_obj_reset_style_list(disp->sys_layer, LV_OBJ_PART_MAIN);
10e22: 4629 mov r1, r5
10e24: 6c60 ldr r0, [r4, #68] ; 0x44
10e26: 47b0 blx r6
lv_obj_set_click(disp->top_layer, false);
10e28: 4629 mov r1, r5
10e2a: 6c20 ldr r0, [r4, #64] ; 0x40
10e2c: 4e24 ldr r6, [pc, #144] ; (10ec0 <lv_disp_drv_register+0x130>)
10e2e: 47b0 blx r6
lv_obj_set_click(disp->sys_layer, false);
10e30: 4629 mov r1, r5
10e32: 6c60 ldr r0, [r4, #68] ; 0x44
10e34: 47b0 blx r6
lv_obj_invalidate(disp->act_scr);
10e36: 6be0 ldr r0, [r4, #60] ; 0x3c
10e38: 4b22 ldr r3, [pc, #136] ; (10ec4 <lv_disp_drv_register+0x134>)
10e3a: 4798 blx r3
disp_def = disp_def_tmp; /*Revert the default display*/
10e3c: 4b1a ldr r3, [pc, #104] ; (10ea8 <lv_disp_drv_register+0x118>)
10e3e: 601f str r7, [r3, #0]
lv_task_ready(disp->refr_task); /*Be sure the screen will be refreshed immediately on start up*/
10e40: 6ae0 ldr r0, [r4, #44] ; 0x2c
10e42: 4b21 ldr r3, [pc, #132] ; (10ec8 <lv_disp_drv_register+0x138>)
10e44: 4798 blx r3
return disp;
}
10e46: 4620 mov r0, r4
10e48: b003 add sp, #12
10e4a: bdf0 pop {r4, r5, r6, r7, pc}
LV_ASSERT_MEM(disp);
10e4c: 4b19 ldr r3, [pc, #100] ; (10eb4 <lv_disp_drv_register+0x124>)
10e4e: 4798 blx r3
10e50: 2800 cmp r0, #0
10e52: d1f8 bne.n 10e46 <lv_disp_drv_register+0xb6>
10e54: 4b1d ldr r3, [pc, #116] ; (10ecc <lv_disp_drv_register+0x13c>)
10e56: 9300 str r3, [sp, #0]
10e58: 227c movs r2, #124 ; 0x7c
10e5a: 491d ldr r1, [pc, #116] ; (10ed0 <lv_disp_drv_register+0x140>)
10e5c: 2003 movs r0, #3
10e5e: 4c1d ldr r4, [pc, #116] ; (10ed4 <lv_disp_drv_register+0x144>)
10e60: 47a0 blx r4
10e62: 2200 movs r2, #0
10e64: 2300 movs r3, #0
10e66: 481c ldr r0, [pc, #112] ; (10ed8 <lv_disp_drv_register+0x148>)
10e68: 491c ldr r1, [pc, #112] ; (10edc <lv_disp_drv_register+0x14c>)
10e6a: 4788 blx r1
10e6c: e7fe b.n 10e6c <lv_disp_drv_register+0xdc>
if(disp_def == NULL) disp_def = disp;
10e6e: 4b0e ldr r3, [pc, #56] ; (10ea8 <lv_disp_drv_register+0x118>)
10e70: 601c str r4, [r3, #0]
10e72: e7ab b.n 10dcc <lv_disp_drv_register+0x3c>
LV_ASSERT_MEM(disp->refr_task);
10e74: 4b15 ldr r3, [pc, #84] ; (10ecc <lv_disp_drv_register+0x13c>)
10e76: 9300 str r3, [sp, #0]
10e78: 228d movs r2, #141 ; 0x8d
10e7a: 4915 ldr r1, [pc, #84] ; (10ed0 <lv_disp_drv_register+0x140>)
10e7c: 2003 movs r0, #3
10e7e: 4d15 ldr r5, [pc, #84] ; (10ed4 <lv_disp_drv_register+0x144>)
10e80: 47a8 blx r5
10e82: 6ae2 ldr r2, [r4, #44] ; 0x2c
10e84: 2300 movs r3, #0
10e86: 4814 ldr r0, [pc, #80] ; (10ed8 <lv_disp_drv_register+0x148>)
10e88: 4914 ldr r1, [pc, #80] ; (10edc <lv_disp_drv_register+0x14c>)
10e8a: 4788 blx r1
10e8c: e7fe b.n 10e8c <lv_disp_drv_register+0xfc>
if(disp->refr_task == NULL) return NULL;
10e8e: 2400 movs r4, #0
10e90: e7d9 b.n 10e46 <lv_disp_drv_register+0xb6>
10e92: bf00 nop
10e94: 20006c98 .word 0x20006c98
10e98: 00011f11 .word 0x00011f11
10e9c: 00012b37 .word 0x00012b37
10ea0: 00012655 .word 0x00012655
10ea4: 00011ef9 .word 0x00011ef9
10ea8: 20002b70 .word 0x20002b70
10eac: 00005f75 .word 0x00005f75
10eb0: 000139e5 .word 0x000139e5
10eb4: 000022b1 .word 0x000022b1
10eb8: 00003e25 .word 0x00003e25
10ebc: 00003b9d .word 0x00003b9d
10ec0: 000029a1 .word 0x000029a1
10ec4: 00003321 .word 0x00003321
10ec8: 00013a55 .word 0x00013a55
10ecc: 000291bc .word 0x000291bc
10ed0: 000291d4 .word 0x000291d4
10ed4: 0001225d .word 0x0001225d
10ed8: 00023fd8 .word 0x00023fd8
10edc: 000022b9 .word 0x000022b9
00010ee0 <lv_disp_get_default>:
* @return pointer to the default display
*/
lv_disp_t * lv_disp_get_default(void)
{
return disp_def;
}
10ee0: 4b01 ldr r3, [pc, #4] ; (10ee8 <lv_disp_get_default+0x8>)
10ee2: 6818 ldr r0, [r3, #0]
10ee4: 4770 bx lr
10ee6: bf00 nop
10ee8: 20002b70 .word 0x20002b70
00010eec <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();
10eec: 4603 mov r3, r0
10eee: b140 cbz r0, 10f02 <lv_disp_get_hor_res+0x16>
if(disp == NULL)
return LV_HOR_RES_MAX;
else
return disp->driver.rotated == 0 ? disp->driver.hor_res : disp->driver.ver_res;
10ef0: 7a1a ldrb r2, [r3, #8]
10ef2: f012 0f02 tst.w r2, #2
10ef6: bf0c ite eq
10ef8: f9b3 0000 ldrsheq.w r0, [r3]
10efc: f9b3 0002 ldrshne.w r0, [r3, #2]
10f00: 4770 bx lr
return disp_def;
10f02: 4b03 ldr r3, [pc, #12] ; (10f10 <lv_disp_get_hor_res+0x24>)
10f04: 681b ldr r3, [r3, #0]
if(disp == NULL)
10f06: 2b00 cmp r3, #0
10f08: d1f2 bne.n 10ef0 <lv_disp_get_hor_res+0x4>
return LV_HOR_RES_MAX;
10f0a: f44f 70f0 mov.w r0, #480 ; 0x1e0
}
10f0e: 4770 bx lr
10f10: 20002b70 .word 0x20002b70
00010f14 <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();
10f14: 4603 mov r3, r0
10f16: b140 cbz r0, 10f2a <lv_disp_get_ver_res+0x16>
if(disp == NULL)
return LV_VER_RES_MAX;
else
return disp->driver.rotated == 0 ? disp->driver.ver_res : disp->driver.hor_res;
10f18: 7a1a ldrb r2, [r3, #8]
10f1a: f012 0f02 tst.w r2, #2
10f1e: bf0c ite eq
10f20: f9b3 0002 ldrsheq.w r0, [r3, #2]
10f24: f9b3 0000 ldrshne.w r0, [r3]
10f28: 4770 bx lr
return disp_def;
10f2a: 4b03 ldr r3, [pc, #12] ; (10f38 <lv_disp_get_ver_res+0x24>)
10f2c: 681b ldr r3, [r3, #0]
if(disp == NULL)
10f2e: 2b00 cmp r3, #0
10f30: d1f2 bne.n 10f18 <lv_disp_get_ver_res+0x4>
return LV_VER_RES_MAX;
10f32: f44f 7088 mov.w r0, #272 ; 0x110
}
10f36: 4770 bx lr
10f38: 20002b70 .word 0x20002b70
00010f3c <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();
10f3c: 4603 mov r3, r0
10f3e: b118 cbz r0, 10f48 <lv_disp_get_dpi+0xc>
if(disp == NULL) return LV_DPI; /*Do not return 0 because it might be a divider*/
return disp->driver.dpi;
10f40: 8918 ldrh r0, [r3, #8]
10f42: f3c0 0089 ubfx r0, r0, #2, #10
10f46: 4770 bx lr
return disp_def;
10f48: 4b02 ldr r3, [pc, #8] ; (10f54 <lv_disp_get_dpi+0x18>)
10f4a: 681b ldr r3, [r3, #0]
if(disp == NULL) return LV_DPI; /*Do not return 0 because it might be a divider*/
10f4c: 2b00 cmp r3, #0
10f4e: d1f7 bne.n 10f40 <lv_disp_get_dpi+0x4>
10f50: 2082 movs r0, #130 ; 0x82
}
10f52: 4770 bx lr
10f54: 20002b70 .word 0x20002b70
00010f58 <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)
{
10f58: b538 push {r3, r4, r5, lr}
if(disp == NULL) disp = lv_disp_get_default();
10f5a: 4605 mov r5, r0
10f5c: b1a0 cbz r0, 10f88 <lv_disp_get_size_category+0x30>
uint32_t w;
if(disp == NULL) w = LV_HOR_RES_MAX;
else w = lv_disp_get_hor_res(disp);
10f5e: 4628 mov r0, r5
10f60: 4b0f ldr r3, [pc, #60] ; (10fa0 <lv_disp_get_size_category+0x48>)
10f62: 4798 blx r3
10f64: 4604 mov r4, r0
uint32_t dpi = lv_disp_get_dpi(disp);
10f66: 4628 mov r0, r5
10f68: 4b0e ldr r3, [pc, #56] ; (10fa4 <lv_disp_get_size_category+0x4c>)
10f6a: 4798 blx r3
w = w * 10 / dpi;
10f6c: eb04 0484 add.w r4, r4, r4, lsl #2
10f70: 0064 lsls r4, r4, #1
10f72: fbb4 f0f0 udiv r0, r4, r0
if(w < LV_DISP_SMALL_LIMIT) return LV_DISP_SIZE_SMALL;
10f76: 281d cmp r0, #29
10f78: d90d bls.n 10f96 <lv_disp_get_size_category+0x3e>
if(w < LV_DISP_MEDIUM_LIMIT) return LV_DISP_SIZE_MEDIUM;
10f7a: 2831 cmp r0, #49 ; 0x31
10f7c: d90d bls.n 10f9a <lv_disp_get_size_category+0x42>
if(w < LV_DISP_LARGE_LIMIT) return LV_DISP_SIZE_LARGE;
else return LV_DISP_SIZE_EXTRA_LARGE;
10f7e: 2846 cmp r0, #70 ; 0x46
10f80: bf34 ite cc
10f82: 2002 movcc r0, #2
10f84: 2003 movcs r0, #3
10f86: bd38 pop {r3, r4, r5, pc}
return disp_def;
10f88: 4b07 ldr r3, [pc, #28] ; (10fa8 <lv_disp_get_size_category+0x50>)
10f8a: 681d ldr r5, [r3, #0]
10f8c: f44f 74f0 mov.w r4, #480 ; 0x1e0
if(disp == NULL) w = LV_HOR_RES_MAX;
10f90: 2d00 cmp r5, #0
10f92: d0e8 beq.n 10f66 <lv_disp_get_size_category+0xe>
10f94: e7e3 b.n 10f5e <lv_disp_get_size_category+0x6>
if(w < LV_DISP_SMALL_LIMIT) return LV_DISP_SIZE_SMALL;
10f96: 2000 movs r0, #0
10f98: bd38 pop {r3, r4, r5, pc}
if(w < LV_DISP_MEDIUM_LIMIT) return LV_DISP_SIZE_MEDIUM;
10f9a: 2001 movs r0, #1
}
10f9c: bd38 pop {r3, r4, r5, pc}
10f9e: bf00 nop
10fa0: 00010eed .word 0x00010eed
10fa4: 00010f3d .word 0x00010f3d
10fa8: 20002b70 .word 0x20002b70
00010fac <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;
10fac: 6842 ldr r2, [r0, #4]
10fae: 2300 movs r3, #0
10fb0: 6193 str r3, [r2, #24]
disp_drv->buffer->flushing_last = 0;
10fb2: 6842 ldr r2, [r0, #4]
10fb4: 61d3 str r3, [r2, #28]
10fb6: 4770 bx lr
00010fb8 <lv_disp_get_next>:
* Get the next display.
* @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)
{
10fb8: b508 push {r3, lr}
if(disp == NULL)
10fba: b120 cbz r0, 10fc6 <lv_disp_get_next+0xe>
10fbc: 4601 mov r1, r0
return _lv_ll_get_head(&LV_GC_ROOT(_lv_disp_ll));
else
return _lv_ll_get_next(&LV_GC_ROOT(_lv_disp_ll), disp);
10fbe: 4804 ldr r0, [pc, #16] ; (10fd0 <lv_disp_get_next+0x18>)
10fc0: 4b04 ldr r3, [pc, #16] ; (10fd4 <lv_disp_get_next+0x1c>)
10fc2: 4798 blx r3
}
10fc4: bd08 pop {r3, pc}
return _lv_ll_get_head(&LV_GC_ROOT(_lv_disp_ll));
10fc6: 4802 ldr r0, [pc, #8] ; (10fd0 <lv_disp_get_next+0x18>)
10fc8: 4b03 ldr r3, [pc, #12] ; (10fd8 <lv_disp_get_next+0x20>)
10fca: 4798 blx r3
10fcc: bd08 pop {r3, pc}
10fce: bf00 nop
10fd0: 20006c98 .word 0x20006c98
10fd4: 00011fbd .word 0x00011fbd
10fd8: 00011fa9 .word 0x00011fa9
00010fdc <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;
}
10fdc: 6840 ldr r0, [r0, #4]
10fde: 4770 bx lr
00010fe0 <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)
10fe0: 6843 ldr r3, [r0, #4]
10fe2: 681a ldr r2, [r3, #0]
10fe4: b122 cbz r2, 10ff0 <lv_disp_is_double_buf+0x10>
10fe6: 6858 ldr r0, [r3, #4]
10fe8: 3000 adds r0, #0
10fea: bf18 it ne
10fec: 2001 movne r0, #1
10fee: 4770 bx lr
return true;
else
return false;
10ff0: 2000 movs r0, #0
}
10ff2: 4770 bx lr
00010ff4 <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)
{
10ff4: b510 push {r4, lr}
10ff6: 4604 mov r4, r0
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) {
10ff8: 4b08 ldr r3, [pc, #32] ; (1101c <lv_disp_is_true_double_buf+0x28>)
10ffa: 4798 blx r3
10ffc: 4603 mov r3, r0
10ffe: b158 cbz r0, 11018 <lv_disp_is_true_double_buf+0x24>
uint32_t scr_size = disp->driver.hor_res * disp->driver.ver_res;
11000: f9b4 2000 ldrsh.w r2, [r4]
11004: f9b4 3002 ldrsh.w r3, [r4, #2]
11008: fb03 f302 mul.w r3, r3, r2
if(lv_disp_is_double_buf(disp) && disp->driver.buffer->size == scr_size) {
1100c: 6862 ldr r2, [r4, #4]
1100e: 68d2 ldr r2, [r2, #12]
11010: 4293 cmp r3, r2
11012: bf14 ite ne
11014: 2300 movne r3, #0
11016: 2301 moveq r3, #1
return true;
}
else {
return false;
}
}
11018: 4618 mov r0, r3
1101a: bd10 pop {r4, pc}
1101c: 00010fe1 .word 0x00010fe1
00011020 <lv_indev_get_next>:
* @param indev pointer to the current input device. NULL to initialize.
* @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)
{
11020: b508 push {r3, lr}
if(indev == NULL)
11022: b120 cbz r0, 1102e <lv_indev_get_next+0xe>
11024: 4601 mov r1, r0
return _lv_ll_get_head(&LV_GC_ROOT(_lv_indev_ll));
else
return _lv_ll_get_next(&LV_GC_ROOT(_lv_indev_ll), indev);
11026: 4804 ldr r0, [pc, #16] ; (11038 <lv_indev_get_next+0x18>)
11028: 4b04 ldr r3, [pc, #16] ; (1103c <lv_indev_get_next+0x1c>)
1102a: 4798 blx r3
}
1102c: bd08 pop {r3, pc}
return _lv_ll_get_head(&LV_GC_ROOT(_lv_indev_ll));
1102e: 4802 ldr r0, [pc, #8] ; (11038 <lv_indev_get_next+0x18>)
11030: 4b03 ldr r3, [pc, #12] ; (11040 <lv_indev_get_next+0x20>)
11032: 4798 blx r3
11034: bd08 pop {r3, pc}
11036: bf00 nop
11038: 20006c8c .word 0x20006c8c
1103c: 00011fbd .word 0x00011fbd
11040: 00011fa9 .word 0x00011fa9
00011044 <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;
11044: 4b03 ldr r3, [pc, #12] ; (11054 <lv_tick_inc+0x10>)
11046: 2200 movs r2, #0
11048: 701a strb r2, [r3, #0]
sys_time += tick_period;
1104a: 685a ldr r2, [r3, #4]
1104c: 4410 add r0, r2
1104e: 6058 str r0, [r3, #4]
11050: 4770 bx lr
11052: bf00 nop
11054: 20002b74 .word 0x20002b74
00011058 <lv_tick_get>:
uint32_t lv_tick_get(void)
{
#if LV_TICK_CUSTOM == 0
uint32_t result;
do {
tick_irq_flag = 1;
11058: 4b04 ldr r3, [pc, #16] ; (1106c <lv_tick_get+0x14>)
1105a: f04f 0101 mov.w r1, #1
1105e: 7019 strb r1, [r3, #0]
result = sys_time;
} while(!tick_irq_flag); /*'lv_tick_inc()' clears this flag which can be in an interrupt.
11060: 781a ldrb r2, [r3, #0]
11062: 2a00 cmp r2, #0
11064: d0fb beq.n 1105e <lv_tick_get+0x6>
return result;
#else
return LV_TICK_CUSTOM_SYS_TIME_EXPR;
#endif
}
11066: 4b01 ldr r3, [pc, #4] ; (1106c <lv_tick_get+0x14>)
11068: 6858 ldr r0, [r3, #4]
1106a: 4770 bx lr
1106c: 20002b74 .word 0x20002b74
00011070 <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)
{
11070: b510 push {r4, lr}
11072: 4604 mov r4, r0
uint32_t act_time = lv_tick_get();
11074: 4b01 ldr r3, [pc, #4] ; (1107c <lv_tick_elaps+0xc>)
11076: 4798 blx r3
prev_tick = UINT32_MAX - prev_tick + 1;
prev_tick += act_time;
}
return prev_tick;
}
11078: 1b00 subs r0, r0, r4
1107a: bd10 pop {r4, pc}
1107c: 00011059 .word 0x00011059
00011080 <lv_anim_path_linear>:
{
LV_UNUSED(path);
/*Calculate the current step*/
uint32_t step;
if(a->time == a->act_time) {
11080: 6a0a ldr r2, [r1, #32]
11082: 6a48 ldr r0, [r1, #36] ; 0x24
11084: 4282 cmp r2, r0
step = LV_ANIM_RESOLUTION; /*Use the last value if the time fully elapsed*/
}
else {
step = ((int32_t)a->act_time * LV_ANIM_RESOLUTION) / a->time;
11086: bf1a itte ne
11088: 0280 lslne r0, r0, #10
1108a: fb90 f0f2 sdivne r0, r0, r2
1108e: f44f 6080 moveq.w r0, #1024 ; 0x400
}
/* 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);
11092: 698a ldr r2, [r1, #24]
11094: 69cb ldr r3, [r1, #28]
11096: 1a9b subs r3, r3, r2
11098: fb00 f003 mul.w r0, r0, r3
new_value = new_value >> LV_ANIM_RES_SHIFT;
new_value += a->start;
1109c: eb02 20a0 add.w r0, r2, r0, asr #10
return (lv_anim_value_t)new_value;
}
110a0: b200 sxth r0, r0
110a2: 4770 bx lr
000110a4 <anim_mark_list_change>:
}
return anim_list_changed;
}
static void anim_mark_list_change(void)
{
110a4: b508 push {r3, lr}
anim_list_changed = true;
110a6: 2201 movs r2, #1
110a8: 4b08 ldr r3, [pc, #32] ; (110cc <anim_mark_list_change+0x28>)
110aa: 701a strb r2, [r3, #0]
if(_lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)) == NULL)
110ac: 4808 ldr r0, [pc, #32] ; (110d0 <anim_mark_list_change+0x2c>)
110ae: 4b09 ldr r3, [pc, #36] ; (110d4 <anim_mark_list_change+0x30>)
110b0: 4798 blx r3
110b2: b128 cbz r0, 110c0 <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);
110b4: 2104 movs r1, #4
110b6: 4b05 ldr r3, [pc, #20] ; (110cc <anim_mark_list_change+0x28>)
110b8: 6858 ldr r0, [r3, #4]
110ba: 4b07 ldr r3, [pc, #28] ; (110d8 <anim_mark_list_change+0x34>)
110bc: 4798 blx r3
110be: bd08 pop {r3, pc}
lv_task_set_prio(_lv_anim_task, LV_TASK_PRIO_OFF);
110c0: 2100 movs r1, #0
110c2: 4b02 ldr r3, [pc, #8] ; (110cc <anim_mark_list_change+0x28>)
110c4: 6858 ldr r0, [r3, #4]
110c6: 4b04 ldr r3, [pc, #16] ; (110d8 <anim_mark_list_change+0x34>)
110c8: 4798 blx r3
110ca: bd08 pop {r3, pc}
110cc: 20002b7c .word 0x20002b7c
110d0: 20006d5c .word 0x20006d5c
110d4: 00011fa9 .word 0x00011fa9
110d8: 00013959 .word 0x00013959
000110dc <anim_task>:
{
110dc: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
110e0: b091 sub sp, #68 ; 0x44
_LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) {
110e2: 4863 ldr r0, [pc, #396] ; (11270 <anim_task+0x194>)
110e4: 4b63 ldr r3, [pc, #396] ; (11274 <anim_task+0x198>)
110e6: 4798 blx r3
110e8: b168 cbz r0, 11106 <anim_task+0x2a>
110ea: 4601 mov r1, r0
110ec: 4d60 ldr r5, [pc, #384] ; (11270 <anim_task+0x194>)
110ee: 4c62 ldr r4, [pc, #392] ; (11278 <anim_task+0x19c>)
a->has_run = 0;
110f0: f891 303c ldrb.w r3, [r1, #60] ; 0x3c
110f4: f36f 0341 bfc r3, #1, #1
110f8: f881 303c strb.w r3, [r1, #60] ; 0x3c
_LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) {
110fc: 4628 mov r0, r5
110fe: 47a0 blx r4
11100: 4601 mov r1, r0
11102: 2800 cmp r0, #0
11104: d1f4 bne.n 110f0 <anim_task+0x14>
uint32_t elaps = lv_tick_elaps(last_task_run);
11106: 4b5d ldr r3, [pc, #372] ; (1127c <anim_task+0x1a0>)
11108: 6898 ldr r0, [r3, #8]
1110a: 4b5d ldr r3, [pc, #372] ; (11280 <anim_task+0x1a4>)
1110c: 4798 blx r3
1110e: 4680 mov r8, r0
a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll));
11110: 4857 ldr r0, [pc, #348] ; (11270 <anim_task+0x194>)
11112: 4b58 ldr r3, [pc, #352] ; (11274 <anim_task+0x198>)
11114: 4798 blx r3
while(a != NULL) {
11116: 4604 mov r4, r0
11118: 2800 cmp r0, #0
1111a: f000 8089 beq.w 11230 <anim_task+0x154>
anim_list_changed = false;
1111e: 4d57 ldr r5, [pc, #348] ; (1127c <anim_task+0x1a0>)
11120: f04f 0700 mov.w r7, #0
a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll));
11124: 4e52 ldr r6, [pc, #328] ; (11270 <anim_task+0x194>)
11126: f8df 914c ldr.w r9, [pc, #332] ; 11274 <anim_task+0x198>
1112a: e01c b.n 11166 <anim_task+0x8a>
if(a->act_time <= 0 && new_act_time >= 0) {
1112c: eb13 0308 adds.w r3, r3, r8
11130: f100 8085 bmi.w 1123e <anim_task+0x162>
if(a->start_cb) a->start_cb(a);
11134: 68a2 ldr r2, [r4, #8]
11136: 2a00 cmp r2, #0
11138: f000 8088 beq.w 1124c <anim_task+0x170>
1113c: 4620 mov r0, r4
1113e: 4790 blx r2
11140: e01e b.n 11180 <anim_task+0xa4>
else new_value = lv_anim_path_linear(&a->path, a);
11142: 4621 mov r1, r4
11144: f104 0010 add.w r0, r4, #16
11148: 4b4e ldr r3, [pc, #312] ; (11284 <anim_task+0x1a8>)
1114a: 4798 blx r3
1114c: e028 b.n 111a0 <anim_task+0xc4>
if(a->act_time >= a->time) {
1114e: 6a62 ldr r2, [r4, #36] ; 0x24
11150: 6a23 ldr r3, [r4, #32]
11152: 429a cmp r2, r3
11154: da2b bge.n 111ae <anim_task+0xd2>
if(anim_list_changed)
11156: 782b ldrb r3, [r5, #0]
11158: 2b00 cmp r3, #0
1115a: d071 beq.n 11240 <anim_task+0x164>
a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll));
1115c: 4630 mov r0, r6
1115e: 47c8 blx r9
11160: 4604 mov r4, r0
while(a != NULL) {
11162: 2c00 cmp r4, #0
11164: d064 beq.n 11230 <anim_task+0x154>
anim_list_changed = false;
11166: 702f strb r7, [r5, #0]
if(!a->has_run) {
11168: f894 303c ldrb.w r3, [r4, #60] ; 0x3c
1116c: f013 0f02 tst.w r3, #2
11170: d166 bne.n 11240 <anim_task+0x164>
a->has_run = 1; /*The list readying might be reseted so need to know which anim has run already*/
11172: f043 0302 orr.w r3, r3, #2
11176: f884 303c strb.w r3, [r4, #60] ; 0x3c
int32_t new_act_time = a->act_time + elaps;
1117a: 6a63 ldr r3, [r4, #36] ; 0x24
if(a->act_time <= 0 && new_act_time >= 0) {
1117c: 2b00 cmp r3, #0
1117e: ddd5 ble.n 1112c <anim_task+0x50>
a->act_time += elaps;
11180: 6a63 ldr r3, [r4, #36] ; 0x24
11182: 4443 add r3, r8
11184: 6263 str r3, [r4, #36] ; 0x24
if(a->act_time >= 0) {
11186: 2b00 cmp r3, #0
11188: dbe5 blt.n 11156 <anim_task+0x7a>
if(a->act_time > a->time) a->act_time = a->time;
1118a: 6a22 ldr r2, [r4, #32]
1118c: 429a cmp r2, r3
1118e: bfb8 it lt
11190: 6262 strlt r2, [r4, #36] ; 0x24
if(a->path.cb) new_value = a->path.cb(&a->path, a);
11192: 6923 ldr r3, [r4, #16]
11194: 2b00 cmp r3, #0
11196: d0d4 beq.n 11142 <anim_task+0x66>
11198: 4621 mov r1, r4
1119a: f104 0010 add.w r0, r4, #16
1119e: 4798 blx r3
if(a->exec_cb) a->exec_cb(a->var, new_value);
111a0: 6863 ldr r3, [r4, #4]
111a2: 2b00 cmp r3, #0
111a4: d0d3 beq.n 1114e <anim_task+0x72>
111a6: b201 sxth r1, r0
111a8: 6820 ldr r0, [r4, #0]
111aa: 4798 blx r3
111ac: e7cf b.n 1114e <anim_task+0x72>
if(a->playback_now == 0 && a->repeat_cnt > 0 && a->repeat_cnt != LV_ANIM_REPEAT_INFINITE) {
111ae: f894 303c ldrb.w r3, [r4, #60] ; 0x3c
111b2: f013 0301 ands.w r3, r3, #1
111b6: d108 bne.n 111ca <anim_task+0xee>
111b8: 8ea2 ldrh r2, [r4, #52] ; 0x34
111ba: 2a00 cmp r2, #0
111bc: d048 beq.n 11250 <anim_task+0x174>
111be: f64f 71ff movw r1, #65535 ; 0xffff
111c2: 428a cmp r2, r1
111c4: d04b beq.n 1125e <anim_task+0x182>
a->repeat_cnt--;
111c6: 3a01 subs r2, #1
111c8: 86a2 strh r2, [r4, #52] ; 0x34
if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) {
111ca: 8ea2 ldrh r2, [r4, #52] ; 0x34
111cc: b1ca cbz r2, 11202 <anim_task+0x126>
a->act_time = -a->repeat_delay; /*Restart the animation*/
111ce: 6b22 ldr r2, [r4, #48] ; 0x30
111d0: 4252 negs r2, r2
111d2: 6262 str r2, [r4, #36] ; 0x24
if(a->playback_time != 0) {
111d4: 6ae2 ldr r2, [r4, #44] ; 0x2c
111d6: 2a00 cmp r2, #0
111d8: d0bd beq.n 11156 <anim_task+0x7a>
if(a->playback_now == 0) a->act_time = -a->playback_delay;
111da: 2b00 cmp r3, #0
111dc: d03b beq.n 11256 <anim_task+0x17a>
a->playback_now = a->playback_now == 0 ? 1 : 0;
111de: f083 0301 eor.w r3, r3, #1
111e2: f894 103c ldrb.w r1, [r4, #60] ; 0x3c
111e6: f363 0100 bfi r1, r3, #0, #1
111ea: f884 103c strb.w r1, [r4, #60] ; 0x3c
tmp = a->start;
111ee: 69a3 ldr r3, [r4, #24]
a->start = a->end;
111f0: 69e0 ldr r0, [r4, #28]
111f2: 61a0 str r0, [r4, #24]
a->end = tmp;
111f4: 61e3 str r3, [r4, #28]
a->time = a->playback_now == 0 ? a->time_orig : a->playback_time;
111f6: f011 0f01 tst.w r1, #1
111fa: bf08 it eq
111fc: 6ba2 ldreq r2, [r4, #56] ; 0x38
111fe: 6222 str r2, [r4, #32]
11200: e7a9 b.n 11156 <anim_task+0x7a>
if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) {
11202: 6ae2 ldr r2, [r4, #44] ; 0x2c
11204: b102 cbz r2, 11208 <anim_task+0x12c>
11206: b333 cbz r3, 11256 <anim_task+0x17a>
_lv_memcpy(&a_tmp, a, sizeof(lv_anim_t));
11208: 2240 movs r2, #64 ; 0x40
1120a: 4621 mov r1, r4
1120c: 4668 mov r0, sp
1120e: 4b1e ldr r3, [pc, #120] ; (11288 <anim_task+0x1ac>)
11210: 4798 blx r3
_lv_ll_remove(&LV_GC_ROOT(_lv_anim_ll), a);
11212: 4621 mov r1, r4
11214: 4630 mov r0, r6
11216: 4b1d ldr r3, [pc, #116] ; (1128c <anim_task+0x1b0>)
11218: 4798 blx r3
lv_mem_free(a);
1121a: 4620 mov r0, r4
1121c: 4b1c ldr r3, [pc, #112] ; (11290 <anim_task+0x1b4>)
1121e: 4798 blx r3
anim_mark_list_change();
11220: 4b1c ldr r3, [pc, #112] ; (11294 <anim_task+0x1b8>)
11222: 4798 blx r3
if(a_tmp.ready_cb != NULL) a_tmp.ready_cb(&a_tmp);
11224: 9b03 ldr r3, [sp, #12]
11226: 2b00 cmp r3, #0
11228: d095 beq.n 11156 <anim_task+0x7a>
1122a: 4668 mov r0, sp
1122c: 4798 blx r3
1122e: e792 b.n 11156 <anim_task+0x7a>
last_task_run = lv_tick_get();
11230: 4b19 ldr r3, [pc, #100] ; (11298 <anim_task+0x1bc>)
11232: 4798 blx r3
11234: 4b11 ldr r3, [pc, #68] ; (1127c <anim_task+0x1a0>)
11236: 6098 str r0, [r3, #8]
}
11238: b011 add sp, #68 ; 0x44
1123a: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
a->act_time += elaps;
1123e: 6263 str r3, [r4, #36] ; 0x24
a = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a);
11240: 4621 mov r1, r4
11242: 4630 mov r0, r6
11244: 4b0c ldr r3, [pc, #48] ; (11278 <anim_task+0x19c>)
11246: 4798 blx r3
11248: 4604 mov r4, r0
1124a: e78a b.n 11162 <anim_task+0x86>
a->act_time += elaps;
1124c: 6263 str r3, [r4, #36] ; 0x24
1124e: e79c b.n 1118a <anim_task+0xae>
if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) {
11250: 6ae2 ldr r2, [r4, #44] ; 0x2c
11252: 2a00 cmp r2, #0
11254: d0d8 beq.n 11208 <anim_task+0x12c>
if(a->playback_now == 0) a->act_time = -a->playback_delay;
11256: 6aa1 ldr r1, [r4, #40] ; 0x28
11258: 4249 negs r1, r1
1125a: 6261 str r1, [r4, #36] ; 0x24
1125c: e7bf b.n 111de <anim_task+0x102>
a->act_time = -a->repeat_delay; /*Restart the animation*/
1125e: 6b22 ldr r2, [r4, #48] ; 0x30
11260: 4252 negs r2, r2
11262: 6262 str r2, [r4, #36] ; 0x24
if(a->playback_time != 0) {
11264: 6ae2 ldr r2, [r4, #44] ; 0x2c
11266: 2a00 cmp r2, #0
11268: f43f af75 beq.w 11156 <anim_task+0x7a>
1126c: e7f3 b.n 11256 <anim_task+0x17a>
1126e: bf00 nop
11270: 20006d5c .word 0x20006d5c
11274: 00011fa9 .word 0x00011fa9
11278: 00011fbd .word 0x00011fbd
1127c: 20002b7c .word 0x20002b7c
11280: 00011071 .word 0x00011071
11284: 00011081 .word 0x00011081
11288: 00012655 .word 0x00012655
1128c: 00012095 .word 0x00012095
11290: 000124c5 .word 0x000124c5
11294: 000110a5 .word 0x000110a5
11298: 00011059 .word 0x00011059
0001129c <_lv_anim_core_init>:
{
1129c: b538 push {r3, r4, r5, lr}
_lv_ll_init(&LV_GC_ROOT(_lv_anim_ll), sizeof(lv_anim_t));
1129e: 2140 movs r1, #64 ; 0x40
112a0: 4809 ldr r0, [pc, #36] ; (112c8 <_lv_anim_core_init+0x2c>)
112a2: 4b0a ldr r3, [pc, #40] ; (112cc <_lv_anim_core_init+0x30>)
112a4: 4798 blx r3
last_task_run = lv_tick_get();
112a6: 4b0a ldr r3, [pc, #40] ; (112d0 <_lv_anim_core_init+0x34>)
112a8: 4798 blx r3
112aa: 4c0a ldr r4, [pc, #40] ; (112d4 <_lv_anim_core_init+0x38>)
112ac: 60a0 str r0, [r4, #8]
_lv_anim_task = lv_task_create(anim_task, LV_DISP_DEF_REFR_PERIOD, LV_ANIM_TASK_PRIO, NULL);
112ae: 2300 movs r3, #0
112b0: 2204 movs r2, #4
112b2: 211e movs r1, #30
112b4: 4808 ldr r0, [pc, #32] ; (112d8 <_lv_anim_core_init+0x3c>)
112b6: 4d09 ldr r5, [pc, #36] ; (112dc <_lv_anim_core_init+0x40>)
112b8: 47a8 blx r5
112ba: 6060 str r0, [r4, #4]
anim_mark_list_change(); /*Turn off the animation task*/
112bc: 4b08 ldr r3, [pc, #32] ; (112e0 <_lv_anim_core_init+0x44>)
112be: 4798 blx r3
anim_list_changed = false; /*The list has not actaully changed*/
112c0: 2300 movs r3, #0
112c2: 7023 strb r3, [r4, #0]
112c4: bd38 pop {r3, r4, r5, pc}
112c6: bf00 nop
112c8: 20006d5c .word 0x20006d5c
112cc: 00011ef9 .word 0x00011ef9
112d0: 00011059 .word 0x00011059
112d4: 20002b7c .word 0x20002b7c
112d8: 000110dd .word 0x000110dd
112dc: 000139e5 .word 0x000139e5
112e0: 000110a5 .word 0x000110a5
000112e4 <lv_anim_init>:
{
112e4: b510 push {r4, lr}
112e6: 4604 mov r4, r0
_lv_memset_00(a, sizeof(lv_anim_t));
112e8: 2140 movs r1, #64 ; 0x40
112ea: 4b0d ldr r3, [pc, #52] ; (11320 <lv_anim_init+0x3c>)
112ec: 4798 blx r3
a->time = 500;
112ee: f44f 73fa mov.w r3, #500 ; 0x1f4
112f2: 6223 str r3, [r4, #32]
a->start = 0;
112f4: 2300 movs r3, #0
112f6: 61a3 str r3, [r4, #24]
a->end = 100;
112f8: 2364 movs r3, #100 ; 0x64
112fa: 61e3 str r3, [r4, #28]
{
uint8_t * d8 = (uint8_t *)dst;
const uint8_t * s8 = (const uint8_t *)src;
while(len) {
*d8 = *s8;
112fc: 4b09 ldr r3, [pc, #36] ; (11324 <lv_anim_init+0x40>)
112fe: 781a ldrb r2, [r3, #0]
11300: 7422 strb r2, [r4, #16]
11302: 785a ldrb r2, [r3, #1]
11304: 7462 strb r2, [r4, #17]
11306: 789a ldrb r2, [r3, #2]
11308: 74a2 strb r2, [r4, #18]
1130a: 78db ldrb r3, [r3, #3]
1130c: 74e3 strb r3, [r4, #19]
a->repeat_cnt = 1;
1130e: 2301 movs r3, #1
11310: 86a3 strh r3, [r4, #52] ; 0x34
a->early_apply = 1;
11312: f894 3036 ldrb.w r3, [r4, #54] ; 0x36
11316: f043 0301 orr.w r3, r3, #1
1131a: f884 3036 strb.w r3, [r4, #54] ; 0x36
1131e: bd10 pop {r4, pc}
11320: 00012b37 .word 0x00012b37
11324: 00029200 .word 0x00029200
00011328 <lv_anim_del>:
{
11328: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
1132c: 4607 mov r7, r0
1132e: 4689 mov r9, r1
a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll));
11330: 4815 ldr r0, [pc, #84] ; (11388 <lv_anim_del+0x60>)
11332: 4b16 ldr r3, [pc, #88] ; (1138c <lv_anim_del+0x64>)
11334: 4798 blx r3
while(a != NULL) {
11336: b310 cbz r0, 1137e <lv_anim_del+0x56>
11338: 4604 mov r4, r0
1133a: f04f 0a00 mov.w sl, #0
a_next = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a);
1133e: f8df 8048 ldr.w r8, [pc, #72] ; 11388 <lv_anim_del+0x60>
11342: 4e13 ldr r6, [pc, #76] ; (11390 <lv_anim_del+0x68>)
_lv_ll_remove(&LV_GC_ROOT(_lv_anim_ll), a);
11344: f8df b054 ldr.w fp, [pc, #84] ; 1139c <lv_anim_del+0x74>
11348: e00b b.n 11362 <lv_anim_del+0x3a>
1134a: 4621 mov r1, r4
1134c: 4640 mov r0, r8
1134e: 47d8 blx fp
lv_mem_free(a);
11350: 4620 mov r0, r4
11352: 4b10 ldr r3, [pc, #64] ; (11394 <lv_anim_del+0x6c>)
11354: 4798 blx r3
anim_mark_list_change(); /*Read by `anim_task`. It need to know if a delete occurred in
11356: 4b10 ldr r3, [pc, #64] ; (11398 <lv_anim_del+0x70>)
11358: 4798 blx r3
del = true;
1135a: f04f 0a01 mov.w sl, #1
1135e: 462c mov r4, r5
while(a != NULL) {
11360: b17d cbz r5, 11382 <lv_anim_del+0x5a>
a_next = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a);
11362: 4621 mov r1, r4
11364: 4640 mov r0, r8
11366: 47b0 blx r6
11368: 4605 mov r5, r0
if(a->var == var && (a->exec_cb == exec_cb || exec_cb == NULL)) {
1136a: 6823 ldr r3, [r4, #0]
1136c: 42bb cmp r3, r7
1136e: d1f6 bne.n 1135e <lv_anim_del+0x36>
11370: 6863 ldr r3, [r4, #4]
11372: 454b cmp r3, r9
11374: d0e9 beq.n 1134a <lv_anim_del+0x22>
11376: f1b9 0f00 cmp.w r9, #0
1137a: d1f0 bne.n 1135e <lv_anim_del+0x36>
1137c: e7e5 b.n 1134a <lv_anim_del+0x22>
bool del = false;
1137e: f04f 0a00 mov.w sl, #0
}
11382: 4650 mov r0, sl
11384: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
11388: 20006d5c .word 0x20006d5c
1138c: 00011fa9 .word 0x00011fa9
11390: 00011fbd .word 0x00011fbd
11394: 000124c5 .word 0x000124c5
11398: 000110a5 .word 0x000110a5
1139c: 00012095 .word 0x00012095
000113a0 <lv_anim_start>:
{
113a0: b530 push {r4, r5, lr}
113a2: b083 sub sp, #12
113a4: 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*/
113a6: 6841 ldr r1, [r0, #4]
113a8: b111 cbz r1, 113b0 <lv_anim_start+0x10>
113aa: 6800 ldr r0, [r0, #0]
113ac: 4b1b ldr r3, [pc, #108] ; (1141c <lv_anim_start+0x7c>)
113ae: 4798 blx r3
if(_lv_ll_is_empty(&LV_GC_ROOT(_lv_anim_ll))) {
113b0: 481b ldr r0, [pc, #108] ; (11420 <lv_anim_start+0x80>)
113b2: 4b1c ldr r3, [pc, #112] ; (11424 <lv_anim_start+0x84>)
113b4: 4798 blx r3
113b6: b9f0 cbnz r0, 113f6 <lv_anim_start+0x56>
lv_anim_t * new_anim = _lv_ll_ins_head(&LV_GC_ROOT(_lv_anim_ll));
113b8: 4819 ldr r0, [pc, #100] ; (11420 <lv_anim_start+0x80>)
113ba: 4b1b ldr r3, [pc, #108] ; (11428 <lv_anim_start+0x88>)
113bc: 4798 blx r3
113be: 4604 mov r4, r0
LV_ASSERT_MEM(new_anim);
113c0: 4b1a ldr r3, [pc, #104] ; (1142c <lv_anim_start+0x8c>)
113c2: 4798 blx r3
113c4: b1e8 cbz r0, 11402 <lv_anim_start+0x62>
if(new_anim == NULL) return;
113c6: b1a4 cbz r4, 113f2 <lv_anim_start+0x52>
a->time_orig = a->time;
113c8: 6a2b ldr r3, [r5, #32]
113ca: 63ab str r3, [r5, #56] ; 0x38
_lv_memcpy(new_anim, a, sizeof(lv_anim_t));
113cc: 2240 movs r2, #64 ; 0x40
113ce: 4629 mov r1, r5
113d0: 4620 mov r0, r4
113d2: 4b17 ldr r3, [pc, #92] ; (11430 <lv_anim_start+0x90>)
113d4: 4798 blx r3
if(new_anim->early_apply) {
113d6: f894 3036 ldrb.w r3, [r4, #54] ; 0x36
113da: f013 0f01 tst.w r3, #1
113de: d006 beq.n 113ee <lv_anim_start+0x4e>
if(new_anim->exec_cb && new_anim->var) new_anim->exec_cb(new_anim->var, new_anim->start);
113e0: 6863 ldr r3, [r4, #4]
113e2: b123 cbz r3, 113ee <lv_anim_start+0x4e>
113e4: 6820 ldr r0, [r4, #0]
113e6: b110 cbz r0, 113ee <lv_anim_start+0x4e>
113e8: f9b4 1018 ldrsh.w r1, [r4, #24]
113ec: 4798 blx r3
anim_mark_list_change();
113ee: 4b11 ldr r3, [pc, #68] ; (11434 <lv_anim_start+0x94>)
113f0: 4798 blx r3
}
113f2: b003 add sp, #12
113f4: bd30 pop {r4, r5, pc}
last_task_run = lv_tick_get() - 1;
113f6: 4b10 ldr r3, [pc, #64] ; (11438 <lv_anim_start+0x98>)
113f8: 4798 blx r3
113fa: 3801 subs r0, #1
113fc: 4b0f ldr r3, [pc, #60] ; (1143c <lv_anim_start+0x9c>)
113fe: 6098 str r0, [r3, #8]
11400: e7da b.n 113b8 <lv_anim_start+0x18>
LV_ASSERT_MEM(new_anim);
11402: 4b0f ldr r3, [pc, #60] ; (11440 <lv_anim_start+0xa0>)
11404: 9300 str r3, [sp, #0]
11406: 226a movs r2, #106 ; 0x6a
11408: 490e ldr r1, [pc, #56] ; (11444 <lv_anim_start+0xa4>)
1140a: 2003 movs r0, #3
1140c: 4d0e ldr r5, [pc, #56] ; (11448 <lv_anim_start+0xa8>)
1140e: 47a8 blx r5
11410: 4622 mov r2, r4
11412: 2300 movs r3, #0
11414: 480d ldr r0, [pc, #52] ; (1144c <lv_anim_start+0xac>)
11416: 490e ldr r1, [pc, #56] ; (11450 <lv_anim_start+0xb0>)
11418: 4788 blx r1
1141a: e7fe b.n 1141a <lv_anim_start+0x7a>
1141c: 00011329 .word 0x00011329
11420: 20006d5c .word 0x20006d5c
11424: 00012245 .word 0x00012245
11428: 00011f11 .word 0x00011f11
1142c: 000022b1 .word 0x000022b1
11430: 00012655 .word 0x00012655
11434: 000110a5 .word 0x000110a5
11438: 00011059 .word 0x00011059
1143c: 20002b7c .word 0x20002b7c
11440: 00029208 .word 0x00029208
11444: 00029218 .word 0x00029218
11448: 0001225d .word 0x0001225d
1144c: 00023fd8 .word 0x00023fd8
11450: 000022b9 .word 0x000022b9
00011454 <lv_anim_get>:
{
11454: b5f8 push {r3, r4, r5, r6, r7, lr}
11456: 4604 mov r4, r0
11458: 460f mov r7, r1
_LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) {
1145a: 480a ldr r0, [pc, #40] ; (11484 <lv_anim_get+0x30>)
1145c: 4b0a ldr r3, [pc, #40] ; (11488 <lv_anim_get+0x34>)
1145e: 4798 blx r3
11460: 4601 mov r1, r0
11462: b160 cbz r0, 1147e <lv_anim_get+0x2a>
11464: 4e07 ldr r6, [pc, #28] ; (11484 <lv_anim_get+0x30>)
11466: 4d09 ldr r5, [pc, #36] ; (1148c <lv_anim_get+0x38>)
11468: e003 b.n 11472 <lv_anim_get+0x1e>
1146a: 4630 mov r0, r6
1146c: 47a8 blx r5
1146e: 4601 mov r1, r0
11470: b128 cbz r0, 1147e <lv_anim_get+0x2a>
if(a->var == var && a->exec_cb == exec_cb) {
11472: 680b ldr r3, [r1, #0]
11474: 42a3 cmp r3, r4
11476: d1f8 bne.n 1146a <lv_anim_get+0x16>
11478: 684b ldr r3, [r1, #4]
1147a: 42bb cmp r3, r7
1147c: d1f5 bne.n 1146a <lv_anim_get+0x16>
}
1147e: 4608 mov r0, r1
11480: bdf8 pop {r3, r4, r5, r6, r7, pc}
11482: bf00 nop
11484: 20006d5c .word 0x20006d5c
11488: 00011fa9 .word 0x00011fa9
1148c: 00011fbd .word 0x00011fbd
00011490 <lv_anim_speed_to_time>:
int32_t d = LV_MATH_ABS((int32_t)start - end);
11490: 1a89 subs r1, r1, r2
11492: 2900 cmp r1, #0
11494: bfb8 it lt
11496: 4249 neglt r1, r1
uint32_t time = (int32_t)((int32_t)(d * 1000) / speed);
11498: f44f 727a mov.w r2, #1000 ; 0x3e8
1149c: fb02 f201 mul.w r2, r2, r1
114a0: fb92 f0f0 sdiv r0, r2, r0
114a4: f64f 72ff movw r2, #65535 ; 0xffff
114a8: 4290 cmp r0, r2
114aa: bf28 it cs
114ac: 4610 movcs r0, r2
time++;
114ae: 2800 cmp r0, #0
114b0: bf08 it eq
114b2: 2001 moveq r0, #1
}
114b4: b280 uxth r0, r0
114b6: 4770 bx lr
000114b8 <lv_point_within_circle>:
/**********************
* STATIC FUNCTIONS
**********************/
static bool lv_point_within_circle(const lv_area_t * area, const lv_point_t * p)
{
114b8: b430 push {r4, r5}
lv_coord_t r = (area->x2 - area->x1) / 2;
114ba: f9b0 5000 ldrsh.w r5, [r0]
114be: f9b0 3004 ldrsh.w r3, [r0, #4]
114c2: 1b5b subs r3, r3, r5
114c4: eb03 73d3 add.w r3, r3, r3, lsr #31
114c8: 105b asrs r3, r3, #1
/* Circle center */
lv_coord_t cx = area->x1 + r;
114ca: b29c uxth r4, r3
lv_coord_t cy = area->y1 + r;
/*Simplify the code by moving everything to (0, 0) */
lv_coord_t px = p->x - cx;
114cc: 880a ldrh r2, [r1, #0]
114ce: 1b52 subs r2, r2, r5
114d0: 1b12 subs r2, r2, r4
lv_coord_t py = p->y - cy;
114d2: 8849 ldrh r1, [r1, #2]
114d4: 8840 ldrh r0, [r0, #2]
114d6: 1a08 subs r0, r1, r0
114d8: 1b00 subs r0, r0, r4
int32_t r_sqrd = r * r;
114da: fb13 f303 smulbb r3, r3, r3
int32_t dist = (px * px) + (py * py);
114de: fb10 f000 smulbb r0, r0, r0
114e2: fb12 0202 smlabb r2, r2, r2, r0
if(dist <= r_sqrd)
return true;
else
return false;
}
114e6: 4293 cmp r3, r2
114e8: bfb4 ite lt
114ea: 2000 movlt r0, #0
114ec: 2001 movge r0, #1
114ee: bc30 pop {r4, r5}
114f0: 4770 bx lr
000114f2 <lv_area_set_height>:
area_p->y2 = area_p->y1 + h - 1;
114f2: 3901 subs r1, #1
114f4: 8843 ldrh r3, [r0, #2]
114f6: 4419 add r1, r3
114f8: 80c1 strh r1, [r0, #6]
114fa: 4770 bx lr
000114fc <lv_area_get_size>:
size = (uint32_t)(area_p->x2 - area_p->x1 + 1) * (area_p->y2 - area_p->y1 + 1);
114fc: f9b0 2004 ldrsh.w r2, [r0, #4]
11500: f9b0 3000 ldrsh.w r3, [r0]
11504: 1ad2 subs r2, r2, r3
11506: f9b0 3006 ldrsh.w r3, [r0, #6]
1150a: f9b0 0002 ldrsh.w r0, [r0, #2]
1150e: 1a18 subs r0, r3, r0
11510: 3001 adds r0, #1
}
11512: fb02 0000 mla r0, r2, r0, r0
11516: 4770 bx lr
00011518 <_lv_area_intersect>:
{
11518: b470 push {r4, r5, r6}
res_p->x1 = LV_MATH_MAX(a1_p->x1, a2_p->x1);
1151a: f9b2 5000 ldrsh.w r5, [r2]
1151e: f9b1 3000 ldrsh.w r3, [r1]
11522: 429d cmp r5, r3
11524: bfb8 it lt
11526: 461d movlt r5, r3
11528: 8005 strh r5, [r0, #0]
res_p->y1 = LV_MATH_MAX(a1_p->y1, a2_p->y1);
1152a: f9b2 3002 ldrsh.w r3, [r2, #2]
1152e: f9b1 4002 ldrsh.w r4, [r1, #2]
11532: 42a3 cmp r3, r4
11534: bfb8 it lt
11536: 4623 movlt r3, r4
11538: 8043 strh r3, [r0, #2]
res_p->x2 = LV_MATH_MIN(a1_p->x2, a2_p->x2);
1153a: f9b2 4004 ldrsh.w r4, [r2, #4]
1153e: f9b1 6004 ldrsh.w r6, [r1, #4]
11542: 42b4 cmp r4, r6
11544: bfa8 it ge
11546: 4634 movge r4, r6
11548: 8084 strh r4, [r0, #4]
res_p->y2 = LV_MATH_MIN(a1_p->y2, a2_p->y2);
1154a: f9b2 2006 ldrsh.w r2, [r2, #6]
1154e: f9b1 1006 ldrsh.w r1, [r1, #6]
11552: 428a cmp r2, r1
11554: bfa8 it ge
11556: 460a movge r2, r1
11558: 80c2 strh r2, [r0, #6]
if((res_p->x1 > res_p->x2) || (res_p->y1 > res_p->y2)) {
1155a: 42a5 cmp r5, r4
1155c: dc05 bgt.n 1156a <_lv_area_intersect+0x52>
1155e: 4293 cmp r3, r2
11560: bfcc ite gt
11562: 2000 movgt r0, #0
11564: 2001 movle r0, #1
}
11566: bc70 pop {r4, r5, r6}
11568: 4770 bx lr
union_ok = false;
1156a: 2000 movs r0, #0
1156c: e7fb b.n 11566 <_lv_area_intersect+0x4e>
0001156e <_lv_area_join>:
{
1156e: b410 push {r4}
a_res_p->x1 = LV_MATH_MIN(a1_p->x1, a2_p->x1);
11570: f9b2 3000 ldrsh.w r3, [r2]
11574: f9b1 4000 ldrsh.w r4, [r1]
11578: 42a3 cmp r3, r4
1157a: bfa8 it ge
1157c: 4623 movge r3, r4
1157e: 8003 strh r3, [r0, #0]
a_res_p->y1 = LV_MATH_MIN(a1_p->y1, a2_p->y1);
11580: f9b2 3002 ldrsh.w r3, [r2, #2]
11584: f9b1 4002 ldrsh.w r4, [r1, #2]
11588: 42a3 cmp r3, r4
1158a: bfa8 it ge
1158c: 4623 movge r3, r4
1158e: 8043 strh r3, [r0, #2]
a_res_p->x2 = LV_MATH_MAX(a1_p->x2, a2_p->x2);
11590: f9b2 3004 ldrsh.w r3, [r2, #4]
11594: f9b1 4004 ldrsh.w r4, [r1, #4]
11598: 42a3 cmp r3, r4
1159a: bfb8 it lt
1159c: 4623 movlt r3, r4
1159e: 8083 strh r3, [r0, #4]
a_res_p->y2 = LV_MATH_MAX(a1_p->y2, a2_p->y2);
115a0: f9b2 3006 ldrsh.w r3, [r2, #6]
115a4: f9b1 2006 ldrsh.w r2, [r1, #6]
115a8: 4293 cmp r3, r2
115aa: bfb8 it lt
115ac: 4613 movlt r3, r2
115ae: 80c3 strh r3, [r0, #6]
}
115b0: f85d 4b04 ldr.w r4, [sp], #4
115b4: 4770 bx lr
...
000115b8 <_lv_area_is_point_on>:
{
115b8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
115bc: b085 sub sp, #20
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))) {
115be: f9b1 5000 ldrsh.w r5, [r1]
115c2: f9b0 e000 ldrsh.w lr, [r0]
115c6: 4575 cmp r5, lr
115c8: f2c0 809d blt.w 11706 <_lv_area_is_point_on+0x14e>
115cc: f9b0 8004 ldrsh.w r8, [r0, #4]
115d0: 4545 cmp r5, r8
115d2: f300 809c bgt.w 1170e <_lv_area_is_point_on+0x156>
115d6: f9b1 3002 ldrsh.w r3, [r1, #2]
115da: f9b0 a002 ldrsh.w sl, [r0, #2]
115de: 4553 cmp r3, sl
115e0: f2c0 8097 blt.w 11712 <_lv_area_is_point_on+0x15a>
115e4: f9b0 0006 ldrsh.w r0, [r0, #6]
115e8: 9001 str r0, [sp, #4]
if(!is_on_rect)
115ea: 4283 cmp r3, r0
115ec: f300 8093 bgt.w 11716 <_lv_area_is_point_on+0x15e>
if(radius <= 0) {
115f0: 2a00 cmp r2, #0
115f2: f340 8092 ble.w 1171a <_lv_area_is_point_on+0x162>
115f6: 468c mov ip, r1
* @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);
115f8: fa1f f988 uxth.w r9, r8
115fc: fa1f f68e uxth.w r6, lr
* @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);
11600: b287 uxth r7, r0
11602: fa1f f58a uxth.w r5, sl
corner_area.x1 = a_p->x1;
11606: f8ad e008 strh.w lr, [sp, #8]
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
1160a: f109 0301 add.w r3, r9, #1
1160e: 1b9b subs r3, r3, r6
lv_coord_t w = lv_area_get_width(a_p) / 2;
11610: b21b sxth r3, r3
11612: eb03 74d3 add.w r4, r3, r3, lsr #31
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
11616: 1c7b adds r3, r7, #1
11618: 1b5b subs r3, r3, r5
lv_coord_t h = lv_area_get_height(a_p) / 2;
1161a: b21b sxth r3, r3
1161c: eb03 71d3 add.w r1, r3, r3, lsr #31
lv_coord_t max_radius = LV_MATH_MIN(w, h);
11620: 1064 asrs r4, r4, #1
11622: 104b asrs r3, r1, #1
corner_area.x2 = a_p->x1 + radius;
11624: 42a3 cmp r3, r4
11626: bfa8 it ge
11628: 4623 movge r3, r4
1162a: 4293 cmp r3, r2
1162c: bfa8 it ge
1162e: 4613 movge r3, r2
11630: b29c uxth r4, r3
11632: 4426 add r6, r4
11634: b2b6 uxth r6, r6
11636: f8ad 600c strh.w r6, [sp, #12]
corner_area.y1 = a_p->y1;
1163a: f8ad a00a strh.w sl, [sp, #10]
corner_area.y2 = a_p->y1 + radius;
1163e: 4425 add r5, r4
11640: b2ad uxth r5, r5
11642: fa0f fb85 sxth.w fp, r5
11646: f8ad b00e strh.w fp, [sp, #14]
if(_lv_area_is_point_on(&corner_area, p_p, 0)) {
1164a: 2200 movs r2, #0
1164c: f8cd c000 str.w ip, [sp]
11650: 4661 mov r1, ip
11652: a802 add r0, sp, #8
11654: f7ff ffb0 bl 115b8 <_lv_area_is_point_on>
11658: b150 cbz r0, 11670 <_lv_area_is_point_on+0xb8>
corner_area.x2 += radius;
1165a: 4426 add r6, r4
1165c: f8ad 600c strh.w r6, [sp, #12]
corner_area.y2 += radius;
11660: 442c add r4, r5
11662: f8ad 400e strh.w r4, [sp, #14]
return lv_point_within_circle(&corner_area, p_p);
11666: 9900 ldr r1, [sp, #0]
11668: a802 add r0, sp, #8
1166a: 4b2e ldr r3, [pc, #184] ; (11724 <_lv_area_is_point_on+0x16c>)
1166c: 4798 blx r3
1166e: e04b b.n 11708 <_lv_area_is_point_on+0x150>
corner_area.y1 = a_p->y2 - radius;
11670: 1b3f subs r7, r7, r4
11672: b2bf uxth r7, r7
11674: f8ad 700a strh.w r7, [sp, #10]
corner_area.y2 = a_p->y2;
11678: f8bd 3004 ldrh.w r3, [sp, #4]
1167c: f8ad 300e strh.w r3, [sp, #14]
if(_lv_area_is_point_on(&corner_area, p_p, 0)) {
11680: 2200 movs r2, #0
11682: 9900 ldr r1, [sp, #0]
11684: a802 add r0, sp, #8
11686: f7ff ff97 bl 115b8 <_lv_area_is_point_on>
1168a: b150 cbz r0, 116a2 <_lv_area_is_point_on+0xea>
corner_area.x2 += radius;
1168c: 4426 add r6, r4
1168e: f8ad 600c strh.w r6, [sp, #12]
corner_area.y1 -= radius;
11692: 1b3c subs r4, r7, r4
11694: f8ad 400a strh.w r4, [sp, #10]
return lv_point_within_circle(&corner_area, p_p);
11698: 9900 ldr r1, [sp, #0]
1169a: a802 add r0, sp, #8
1169c: 4b21 ldr r3, [pc, #132] ; (11724 <_lv_area_is_point_on+0x16c>)
1169e: 4798 blx r3
116a0: e032 b.n 11708 <_lv_area_is_point_on+0x150>
corner_area.x1 = a_p->x2 - radius;
116a2: eba9 0904 sub.w r9, r9, r4
116a6: fa1f f989 uxth.w r9, r9
116aa: f8ad 9008 strh.w r9, [sp, #8]
corner_area.x2 = a_p->x2;
116ae: f8ad 800c strh.w r8, [sp, #12]
if(_lv_area_is_point_on(&corner_area, p_p, 0)) {
116b2: 2200 movs r2, #0
116b4: 9e00 ldr r6, [sp, #0]
116b6: 4631 mov r1, r6
116b8: a802 add r0, sp, #8
116ba: f7ff ff7d bl 115b8 <_lv_area_is_point_on>
116be: b158 cbz r0, 116d8 <_lv_area_is_point_on+0x120>
corner_area.x1 -= radius;
116c0: eba9 0904 sub.w r9, r9, r4
116c4: f8ad 9008 strh.w r9, [sp, #8]
corner_area.y1 -= radius;
116c8: 1b3c subs r4, r7, r4
116ca: f8ad 400a strh.w r4, [sp, #10]
return lv_point_within_circle(&corner_area, p_p);
116ce: 4631 mov r1, r6
116d0: a802 add r0, sp, #8
116d2: 4b14 ldr r3, [pc, #80] ; (11724 <_lv_area_is_point_on+0x16c>)
116d4: 4798 blx r3
116d6: e017 b.n 11708 <_lv_area_is_point_on+0x150>
corner_area.y1 = a_p->y1;
116d8: f8ad a00a strh.w sl, [sp, #10]
corner_area.y2 = a_p->y1 + radius;
116dc: f8ad b00e strh.w fp, [sp, #14]
if(_lv_area_is_point_on(&corner_area, p_p, 0)) {
116e0: 2200 movs r2, #0
116e2: 9e00 ldr r6, [sp, #0]
116e4: 4631 mov r1, r6
116e6: a802 add r0, sp, #8
116e8: f7ff ff66 bl 115b8 <_lv_area_is_point_on>
116ec: b1b8 cbz r0, 1171e <_lv_area_is_point_on+0x166>
corner_area.x1 -= radius;
116ee: eba9 0904 sub.w r9, r9, r4
116f2: f8ad 9008 strh.w r9, [sp, #8]
corner_area.y2 += radius;
116f6: 442c add r4, r5
116f8: f8ad 400e strh.w r4, [sp, #14]
return lv_point_within_circle(&corner_area, p_p);
116fc: 4631 mov r1, r6
116fe: a802 add r0, sp, #8
11700: 4b08 ldr r3, [pc, #32] ; (11724 <_lv_area_is_point_on+0x16c>)
11702: 4798 blx r3
11704: e000 b.n 11708 <_lv_area_is_point_on+0x150>
return false;
11706: 2000 movs r0, #0
}
11708: b005 add sp, #20
1170a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
return false;
1170e: 2000 movs r0, #0
11710: e7fa b.n 11708 <_lv_area_is_point_on+0x150>
11712: 2000 movs r0, #0
11714: e7f8 b.n 11708 <_lv_area_is_point_on+0x150>
11716: 2000 movs r0, #0
11718: e7f6 b.n 11708 <_lv_area_is_point_on+0x150>
return true;
1171a: 2001 movs r0, #1
1171c: e7f4 b.n 11708 <_lv_area_is_point_on+0x150>
return true;
1171e: 2001 movs r0, #1
11720: e7f2 b.n 11708 <_lv_area_is_point_on+0x150>
11722: bf00 nop
11724: 000114b9 .word 0x000114b9
00011728 <_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)) {
11728: f9b0 2000 ldrsh.w r2, [r0]
1172c: f9b1 3004 ldrsh.w r3, [r1, #4]
11730: 429a cmp r2, r3
11732: dc14 bgt.n 1175e <_lv_area_is_on+0x36>
11734: f9b0 2004 ldrsh.w r2, [r0, #4]
11738: f9b1 3000 ldrsh.w r3, [r1]
1173c: 429a cmp r2, r3
1173e: db10 blt.n 11762 <_lv_area_is_on+0x3a>
11740: f9b0 2002 ldrsh.w r2, [r0, #2]
11744: f9b1 3006 ldrsh.w r3, [r1, #6]
11748: 429a cmp r2, r3
1174a: dc0c bgt.n 11766 <_lv_area_is_on+0x3e>
1174c: f9b0 0006 ldrsh.w r0, [r0, #6]
11750: f9b1 3002 ldrsh.w r3, [r1, #2]
11754: 4298 cmp r0, r3
11756: bfb4 ite lt
11758: 2000 movlt r0, #0
1175a: 2001 movge r0, #1
1175c: 4770 bx lr
return false;
1175e: 2000 movs r0, #0
11760: 4770 bx lr
11762: 2000 movs r0, #0
11764: 4770 bx lr
11766: 2000 movs r0, #0
}
11768: 4770 bx lr
...
0001176c <_lv_area_is_in>:
{
1176c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
11770: b082 sub sp, #8
if(ain_p->x1 >= aholder_p->x1 && ain_p->y1 >= aholder_p->y1 && ain_p->x2 <= aholder_p->x2 &&
11772: f9b0 5000 ldrsh.w r5, [r0]
11776: f9b1 3000 ldrsh.w r3, [r1]
1177a: 42ab cmp r3, r5
1177c: dc14 bgt.n 117a8 <_lv_area_is_in+0x3c>
1177e: f9b0 4002 ldrsh.w r4, [r0, #2]
11782: f9b1 3002 ldrsh.w r3, [r1, #2]
11786: 429c cmp r4, r3
11788: db14 blt.n 117b4 <_lv_area_is_in+0x48>
1178a: f9b0 4004 ldrsh.w r4, [r0, #4]
1178e: f9b1 3004 ldrsh.w r3, [r1, #4]
11792: 429c cmp r4, r3
11794: dc10 bgt.n 117b8 <_lv_area_is_in+0x4c>
11796: f9b0 3006 ldrsh.w r3, [r0, #6]
1179a: f9b1 4006 ldrsh.w r4, [r1, #6]
1179e: 42a3 cmp r3, r4
117a0: bfcc ite gt
117a2: 2300 movgt r3, #0
117a4: 2301 movle r3, #1
117a6: e000 b.n 117aa <_lv_area_is_in+0x3e>
bool is_in = false;
117a8: 2300 movs r3, #0
if(radius == 0) return is_in;
117aa: b93a cbnz r2, 117bc <_lv_area_is_in+0x50>
}
117ac: 4618 mov r0, r3
117ae: b002 add sp, #8
117b0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
bool is_in = false;
117b4: 2300 movs r3, #0
117b6: e7f8 b.n 117aa <_lv_area_is_in+0x3e>
117b8: 2300 movs r3, #0
117ba: e7f6 b.n 117aa <_lv_area_is_in+0x3e>
117bc: 4617 mov r7, r2
117be: 460c mov r4, r1
117c0: 4606 mov r6, r0
p.x = ain_p->x1;
117c2: f8ad 5004 strh.w r5, [sp, #4]
p.y = ain_p->y1;
117c6: 8843 ldrh r3, [r0, #2]
117c8: f8ad 3006 strh.w r3, [sp, #6]
if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false;
117cc: a901 add r1, sp, #4
117ce: 4620 mov r0, r4
117d0: 4b13 ldr r3, [pc, #76] ; (11820 <_lv_area_is_in+0xb4>)
117d2: 4798 blx r3
117d4: 4603 mov r3, r0
117d6: 2800 cmp r0, #0
117d8: d0e8 beq.n 117ac <_lv_area_is_in+0x40>
p.x = ain_p->x2;
117da: f9b6 8004 ldrsh.w r8, [r6, #4]
117de: a902 add r1, sp, #8
117e0: f821 8d04 strh.w r8, [r1, #-4]!
if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false;
117e4: 463a mov r2, r7
117e6: 4620 mov r0, r4
117e8: 4b0d ldr r3, [pc, #52] ; (11820 <_lv_area_is_in+0xb4>)
117ea: 4798 blx r3
117ec: 4603 mov r3, r0
117ee: 2800 cmp r0, #0
117f0: d0dc beq.n 117ac <_lv_area_is_in+0x40>
p.x = ain_p->x1;
117f2: f8ad 5004 strh.w r5, [sp, #4]
p.y = ain_p->y2;
117f6: 88f3 ldrh r3, [r6, #6]
117f8: f8ad 3006 strh.w r3, [sp, #6]
if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false;
117fc: 463a mov r2, r7
117fe: a901 add r1, sp, #4
11800: 4620 mov r0, r4
11802: 4b07 ldr r3, [pc, #28] ; (11820 <_lv_area_is_in+0xb4>)
11804: 4798 blx r3
11806: 4603 mov r3, r0
11808: 2800 cmp r0, #0
1180a: d0cf beq.n 117ac <_lv_area_is_in+0x40>
p.x = ain_p->x2;
1180c: a902 add r1, sp, #8
1180e: f821 8d04 strh.w r8, [r1, #-4]!
if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false;
11812: 463a mov r2, r7
11814: 4620 mov r0, r4
11816: 4b02 ldr r3, [pc, #8] ; (11820 <_lv_area_is_in+0xb4>)
11818: 4798 blx r3
1181a: 4603 mov r3, r0
1181c: e7c6 b.n 117ac <_lv_area_is_in+0x40>
1181e: bf00 nop
11820: 000115b9 .word 0x000115b9
00011824 <_lv_area_align>:
{
11824: b430 push {r4, r5}
switch(align) {
11826: 2a14 cmp r2, #20
11828: d83a bhi.n 118a0 <_lv_area_align+0x7c>
1182a: e8df f012 tbh [pc, r2, lsl #1]
1182e: 0015 .short 0x0015
11830: 00470043 .word 0x00470043
11834: 0067005c .word 0x0067005c
11838: 008d0072 .word 0x008d0072
1183c: 00b3009e .word 0x00b3009e
11840: 00d600ce .word 0x00d600ce
11844: 00fc00ee .word 0x00fc00ee
11848: 011c0104 .word 0x011c0104
1184c: 0132012a .word 0x0132012a
11850: 0158014a .word 0x0158014a
11854: 01780160 .word 0x01780160
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
11858: 8882 ldrh r2, [r0, #4]
1185a: 3201 adds r2, #1
1185c: 8804 ldrh r4, [r0, #0]
1185e: 1b12 subs r2, r2, r4
res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2;
11860: b212 sxth r2, r2
11862: eb02 74d2 add.w r4, r2, r2, lsr #31
11866: 888a ldrh r2, [r1, #4]
11868: 3201 adds r2, #1
1186a: 880d ldrh r5, [r1, #0]
1186c: 1b52 subs r2, r2, r5
1186e: b212 sxth r2, r2
11870: eb02 72d2 add.w r2, r2, r2, lsr #31
11874: 1052 asrs r2, r2, #1
11876: ebc2 0264 rsb r2, r2, r4, asr #1
1187a: 801a strh r2, [r3, #0]
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
1187c: 88c2 ldrh r2, [r0, #6]
1187e: 3201 adds r2, #1
11880: 8844 ldrh r4, [r0, #2]
11882: 1b12 subs r2, r2, r4
res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2;
11884: b212 sxth r2, r2
11886: eb02 74d2 add.w r4, r2, r2, lsr #31
1188a: 88ca ldrh r2, [r1, #6]
1188c: 3201 adds r2, #1
1188e: 8849 ldrh r1, [r1, #2]
11890: 1a52 subs r2, r2, r1
11892: b212 sxth r2, r2
11894: eb02 72d2 add.w r2, r2, r2, lsr #31
11898: 1052 asrs r2, r2, #1
1189a: ebc2 0264 rsb r2, r2, r4, asr #1
1189e: 805a strh r2, [r3, #2]
res->x += base->x1;
118a0: 881a ldrh r2, [r3, #0]
118a2: 8801 ldrh r1, [r0, #0]
118a4: 440a add r2, r1
118a6: 801a strh r2, [r3, #0]
res->y += base->y1;
118a8: 885a ldrh r2, [r3, #2]
118aa: 8841 ldrh r1, [r0, #2]
118ac: 440a add r2, r1
118ae: 805a strh r2, [r3, #2]
}
118b0: bc30 pop {r4, r5}
118b2: 4770 bx lr
res->x = 0;
118b4: 2200 movs r2, #0
118b6: 801a strh r2, [r3, #0]
res->y = 0;
118b8: 805a strh r2, [r3, #2]
break;
118ba: e7f1 b.n 118a0 <_lv_area_align+0x7c>
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
118bc: 8882 ldrh r2, [r0, #4]
118be: 3201 adds r2, #1
118c0: 8804 ldrh r4, [r0, #0]
118c2: 1b12 subs r2, r2, r4
res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2;
118c4: b212 sxth r2, r2
118c6: eb02 74d2 add.w r4, r2, r2, lsr #31
118ca: 888a ldrh r2, [r1, #4]
118cc: 3201 adds r2, #1
118ce: 8809 ldrh r1, [r1, #0]
118d0: 1a52 subs r2, r2, r1
118d2: b212 sxth r2, r2
118d4: eb02 72d2 add.w r2, r2, r2, lsr #31
118d8: 1052 asrs r2, r2, #1
118da: ebc2 0264 rsb r2, r2, r4, asr #1
118de: 801a strh r2, [r3, #0]
res->y = 0;
118e0: 2200 movs r2, #0
118e2: 805a strh r2, [r3, #2]
break;
118e4: e7dc b.n 118a0 <_lv_area_align+0x7c>
res->x = lv_area_get_width(base) - lv_area_get_width(to_align);
118e6: 8882 ldrh r2, [r0, #4]
118e8: 888c ldrh r4, [r1, #4]
118ea: 1b12 subs r2, r2, r4
118ec: 8804 ldrh r4, [r0, #0]
118ee: 1b12 subs r2, r2, r4
118f0: 8809 ldrh r1, [r1, #0]
118f2: 440a add r2, r1
118f4: 801a strh r2, [r3, #0]
res->y = 0;
118f6: 2200 movs r2, #0
118f8: 805a strh r2, [r3, #2]
break;
118fa: e7d1 b.n 118a0 <_lv_area_align+0x7c>
res->x = 0;
118fc: 2200 movs r2, #0
118fe: 801a strh r2, [r3, #0]
res->y = lv_area_get_height(base) - lv_area_get_height(to_align);
11900: 88c2 ldrh r2, [r0, #6]
11902: 88cc ldrh r4, [r1, #6]
11904: 1b12 subs r2, r2, r4
11906: 8844 ldrh r4, [r0, #2]
11908: 1b12 subs r2, r2, r4
1190a: 8849 ldrh r1, [r1, #2]
1190c: 440a add r2, r1
1190e: 805a strh r2, [r3, #2]
break;
11910: e7c6 b.n 118a0 <_lv_area_align+0x7c>
11912: 8882 ldrh r2, [r0, #4]
11914: 3201 adds r2, #1
11916: 8804 ldrh r4, [r0, #0]
11918: 1b12 subs r2, r2, r4
res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2;
1191a: b212 sxth r2, r2
1191c: eb02 74d2 add.w r4, r2, r2, lsr #31
11920: 888a ldrh r2, [r1, #4]
11922: 3201 adds r2, #1
11924: 880d ldrh r5, [r1, #0]
11926: 1b52 subs r2, r2, r5
11928: b212 sxth r2, r2
1192a: eb02 72d2 add.w r2, r2, r2, lsr #31
1192e: 1052 asrs r2, r2, #1
11930: ebc2 0264 rsb r2, r2, r4, asr #1
11934: 801a strh r2, [r3, #0]
res->y = lv_area_get_height(base) - lv_area_get_height(to_align);
11936: 88c2 ldrh r2, [r0, #6]
11938: 88cc ldrh r4, [r1, #6]
1193a: 1b12 subs r2, r2, r4
1193c: 8844 ldrh r4, [r0, #2]
1193e: 1b12 subs r2, r2, r4
11940: 8849 ldrh r1, [r1, #2]
11942: 440a add r2, r1
11944: 805a strh r2, [r3, #2]
break;
11946: e7ab b.n 118a0 <_lv_area_align+0x7c>
res->x = lv_area_get_width(base) - lv_area_get_width(to_align);
11948: 8882 ldrh r2, [r0, #4]
1194a: 888c ldrh r4, [r1, #4]
1194c: 1b12 subs r2, r2, r4
1194e: 8804 ldrh r4, [r0, #0]
11950: 1b12 subs r2, r2, r4
11952: 880c ldrh r4, [r1, #0]
11954: 4422 add r2, r4
11956: 801a strh r2, [r3, #0]
res->y = lv_area_get_height(base) - lv_area_get_height(to_align);
11958: 88c2 ldrh r2, [r0, #6]
1195a: 88cc ldrh r4, [r1, #6]
1195c: 1b12 subs r2, r2, r4
1195e: 8844 ldrh r4, [r0, #2]
11960: 1b12 subs r2, r2, r4
11962: 8849 ldrh r1, [r1, #2]
11964: 440a add r2, r1
11966: 805a strh r2, [r3, #2]
break;
11968: e79a b.n 118a0 <_lv_area_align+0x7c>
res->x = 0;
1196a: 2200 movs r2, #0
1196c: 801a strh r2, [r3, #0]
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
1196e: 88c2 ldrh r2, [r0, #6]
11970: 3201 adds r2, #1
11972: 8844 ldrh r4, [r0, #2]
11974: 1b12 subs r2, r2, r4
res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2;
11976: b212 sxth r2, r2
11978: eb02 74d2 add.w r4, r2, r2, lsr #31
1197c: 88ca ldrh r2, [r1, #6]
1197e: 3201 adds r2, #1
11980: 8849 ldrh r1, [r1, #2]
11982: 1a52 subs r2, r2, r1
11984: b212 sxth r2, r2
11986: eb02 72d2 add.w r2, r2, r2, lsr #31
1198a: 1052 asrs r2, r2, #1
1198c: ebc2 0264 rsb r2, r2, r4, asr #1
11990: 805a strh r2, [r3, #2]
break;
11992: e785 b.n 118a0 <_lv_area_align+0x7c>
res->x = lv_area_get_width(base) - lv_area_get_width(to_align);
11994: 8882 ldrh r2, [r0, #4]
11996: 888c ldrh r4, [r1, #4]
11998: 1b12 subs r2, r2, r4
1199a: 8804 ldrh r4, [r0, #0]
1199c: 1b12 subs r2, r2, r4
1199e: 880c ldrh r4, [r1, #0]
119a0: 4422 add r2, r4
119a2: 801a strh r2, [r3, #0]
119a4: 88c2 ldrh r2, [r0, #6]
119a6: 3201 adds r2, #1
119a8: 8844 ldrh r4, [r0, #2]
119aa: 1b12 subs r2, r2, r4
res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2;
119ac: b212 sxth r2, r2
119ae: eb02 74d2 add.w r4, r2, r2, lsr #31
119b2: 88ca ldrh r2, [r1, #6]
119b4: 3201 adds r2, #1
119b6: 8849 ldrh r1, [r1, #2]
119b8: 1a52 subs r2, r2, r1
119ba: b212 sxth r2, r2
119bc: eb02 72d2 add.w r2, r2, r2, lsr #31
119c0: 1052 asrs r2, r2, #1
119c2: ebc2 0264 rsb r2, r2, r4, asr #1
119c6: 805a strh r2, [r3, #2]
break;
119c8: e76a b.n 118a0 <_lv_area_align+0x7c>
res->x = 0;
119ca: 2200 movs r2, #0
119cc: 801a strh r2, [r3, #0]
119ce: 88ca ldrh r2, [r1, #6]
119d0: 8849 ldrh r1, [r1, #2]
119d2: 1a52 subs r2, r2, r1
res->y = -lv_area_get_height(to_align);
119d4: 43d2 mvns r2, r2
119d6: 805a strh r2, [r3, #2]
break;
119d8: e762 b.n 118a0 <_lv_area_align+0x7c>
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
119da: 8882 ldrh r2, [r0, #4]
119dc: 3201 adds r2, #1
119de: 8804 ldrh r4, [r0, #0]
119e0: 1b12 subs r2, r2, r4
res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2;
119e2: b212 sxth r2, r2
119e4: eb02 74d2 add.w r4, r2, r2, lsr #31
119e8: 888a ldrh r2, [r1, #4]
119ea: 3201 adds r2, #1
119ec: 880d ldrh r5, [r1, #0]
119ee: 1b52 subs r2, r2, r5
119f0: b212 sxth r2, r2
119f2: eb02 72d2 add.w r2, r2, r2, lsr #31
119f6: 1052 asrs r2, r2, #1
119f8: ebc2 0264 rsb r2, r2, r4, asr #1
119fc: 801a strh r2, [r3, #0]
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
119fe: 88ca ldrh r2, [r1, #6]
11a00: 8849 ldrh r1, [r1, #2]
11a02: 1a52 subs r2, r2, r1
res->y = -lv_area_get_height(to_align);
11a04: 43d2 mvns r2, r2
11a06: 805a strh r2, [r3, #2]
break;
11a08: e74a b.n 118a0 <_lv_area_align+0x7c>
res->x = lv_area_get_width(base) - lv_area_get_width(to_align);
11a0a: 8882 ldrh r2, [r0, #4]
11a0c: 888c ldrh r4, [r1, #4]
11a0e: 1b12 subs r2, r2, r4
11a10: 8804 ldrh r4, [r0, #0]
11a12: 1b12 subs r2, r2, r4
11a14: 880c ldrh r4, [r1, #0]
11a16: 4422 add r2, r4
11a18: 801a strh r2, [r3, #0]
11a1a: 88ca ldrh r2, [r1, #6]
11a1c: 8849 ldrh r1, [r1, #2]
11a1e: 1a52 subs r2, r2, r1
res->y = -lv_area_get_height(to_align);
11a20: 43d2 mvns r2, r2
11a22: 805a strh r2, [r3, #2]
break;
11a24: e73c b.n 118a0 <_lv_area_align+0x7c>
res->x = 0;
11a26: 2200 movs r2, #0
11a28: 801a strh r2, [r3, #0]
11a2a: 88c2 ldrh r2, [r0, #6]
11a2c: 3201 adds r2, #1
11a2e: 8841 ldrh r1, [r0, #2]
11a30: 1a52 subs r2, r2, r1
res->y = lv_area_get_height(base);
11a32: 805a strh r2, [r3, #2]
break;
11a34: e734 b.n 118a0 <_lv_area_align+0x7c>
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
11a36: 8882 ldrh r2, [r0, #4]
11a38: 3201 adds r2, #1
11a3a: 8804 ldrh r4, [r0, #0]
11a3c: 1b12 subs r2, r2, r4
res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2;
11a3e: b212 sxth r2, r2
11a40: eb02 74d2 add.w r4, r2, r2, lsr #31
11a44: 888a ldrh r2, [r1, #4]
11a46: 3201 adds r2, #1
11a48: 8809 ldrh r1, [r1, #0]
11a4a: 1a52 subs r2, r2, r1
11a4c: b212 sxth r2, r2
11a4e: eb02 72d2 add.w r2, r2, r2, lsr #31
11a52: 1052 asrs r2, r2, #1
11a54: ebc2 0264 rsb r2, r2, r4, asr #1
11a58: 801a strh r2, [r3, #0]
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
11a5a: 88c2 ldrh r2, [r0, #6]
11a5c: 3201 adds r2, #1
11a5e: 8841 ldrh r1, [r0, #2]
11a60: 1a52 subs r2, r2, r1
res->y = lv_area_get_height(base);
11a62: 805a strh r2, [r3, #2]
break;
11a64: e71c b.n 118a0 <_lv_area_align+0x7c>
res->x = lv_area_get_width(base) - lv_area_get_width(to_align);
11a66: 8882 ldrh r2, [r0, #4]
11a68: 888c ldrh r4, [r1, #4]
11a6a: 1b12 subs r2, r2, r4
11a6c: 8804 ldrh r4, [r0, #0]
11a6e: 1b12 subs r2, r2, r4
11a70: 8809 ldrh r1, [r1, #0]
11a72: 440a add r2, r1
11a74: 801a strh r2, [r3, #0]
11a76: 88c2 ldrh r2, [r0, #6]
11a78: 3201 adds r2, #1
11a7a: 8841 ldrh r1, [r0, #2]
11a7c: 1a52 subs r2, r2, r1
res->y = lv_area_get_height(base);
11a7e: 805a strh r2, [r3, #2]
break;
11a80: e70e b.n 118a0 <_lv_area_align+0x7c>
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
11a82: 888a ldrh r2, [r1, #4]
11a84: 8809 ldrh r1, [r1, #0]
11a86: 1a52 subs r2, r2, r1
res->x = -lv_area_get_width(to_align);
11a88: 43d2 mvns r2, r2
11a8a: 801a strh r2, [r3, #0]
res->y = 0;
11a8c: 2200 movs r2, #0
11a8e: 805a strh r2, [r3, #2]
break;
11a90: e706 b.n 118a0 <_lv_area_align+0x7c>
11a92: 888a ldrh r2, [r1, #4]
11a94: 880c ldrh r4, [r1, #0]
11a96: 1b12 subs r2, r2, r4
res->x = -lv_area_get_width(to_align);
11a98: 43d2 mvns r2, r2
11a9a: 801a strh r2, [r3, #0]
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
11a9c: 88c2 ldrh r2, [r0, #6]
11a9e: 3201 adds r2, #1
11aa0: 8844 ldrh r4, [r0, #2]
11aa2: 1b12 subs r2, r2, r4
res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2;
11aa4: b212 sxth r2, r2
11aa6: eb02 74d2 add.w r4, r2, r2, lsr #31
11aaa: 88ca ldrh r2, [r1, #6]
11aac: 3201 adds r2, #1
11aae: 8849 ldrh r1, [r1, #2]
11ab0: 1a52 subs r2, r2, r1
11ab2: b212 sxth r2, r2
11ab4: eb02 72d2 add.w r2, r2, r2, lsr #31
11ab8: 1052 asrs r2, r2, #1
11aba: ebc2 0264 rsb r2, r2, r4, asr #1
11abe: 805a strh r2, [r3, #2]
break;
11ac0: e6ee b.n 118a0 <_lv_area_align+0x7c>
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
11ac2: 888a ldrh r2, [r1, #4]
11ac4: 880c ldrh r4, [r1, #0]
11ac6: 1b12 subs r2, r2, r4
res->x = -lv_area_get_width(to_align);
11ac8: 43d2 mvns r2, r2
11aca: 801a strh r2, [r3, #0]
res->y = lv_area_get_height(base) - lv_area_get_height(to_align);
11acc: 88c2 ldrh r2, [r0, #6]
11ace: 88cc ldrh r4, [r1, #6]
11ad0: 1b12 subs r2, r2, r4
11ad2: 8844 ldrh r4, [r0, #2]
11ad4: 1b12 subs r2, r2, r4
11ad6: 8849 ldrh r1, [r1, #2]
11ad8: 440a add r2, r1
11ada: 805a strh r2, [r3, #2]
break;
11adc: e6e0 b.n 118a0 <_lv_area_align+0x7c>
11ade: 8882 ldrh r2, [r0, #4]
11ae0: 3201 adds r2, #1
11ae2: 8801 ldrh r1, [r0, #0]
11ae4: 1a52 subs r2, r2, r1
res->x = lv_area_get_width(base);
11ae6: 801a strh r2, [r3, #0]
res->y = 0;
11ae8: 2200 movs r2, #0
11aea: 805a strh r2, [r3, #2]
break;
11aec: e6d8 b.n 118a0 <_lv_area_align+0x7c>
11aee: 8882 ldrh r2, [r0, #4]
11af0: 3201 adds r2, #1
11af2: 8804 ldrh r4, [r0, #0]
11af4: 1b12 subs r2, r2, r4
res->x = lv_area_get_width(base);
11af6: 801a strh r2, [r3, #0]
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
11af8: 88c2 ldrh r2, [r0, #6]
11afa: 3201 adds r2, #1
11afc: 8844 ldrh r4, [r0, #2]
11afe: 1b12 subs r2, r2, r4
res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2;
11b00: b212 sxth r2, r2
11b02: eb02 74d2 add.w r4, r2, r2, lsr #31
11b06: 88ca ldrh r2, [r1, #6]
11b08: 3201 adds r2, #1
11b0a: 8849 ldrh r1, [r1, #2]
11b0c: 1a52 subs r2, r2, r1
11b0e: b212 sxth r2, r2
11b10: eb02 72d2 add.w r2, r2, r2, lsr #31
11b14: 1052 asrs r2, r2, #1
11b16: ebc2 0264 rsb r2, r2, r4, asr #1
11b1a: 805a strh r2, [r3, #2]
break;
11b1c: e6c0 b.n 118a0 <_lv_area_align+0x7c>
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
11b1e: 8882 ldrh r2, [r0, #4]
11b20: 3201 adds r2, #1
11b22: 8804 ldrh r4, [r0, #0]
11b24: 1b12 subs r2, r2, r4
res->x = lv_area_get_width(base);
11b26: 801a strh r2, [r3, #0]
res->y = lv_area_get_height(base) - lv_area_get_height(to_align);
11b28: 88c2 ldrh r2, [r0, #6]
11b2a: 88cc ldrh r4, [r1, #6]
11b2c: 1b12 subs r2, r2, r4
11b2e: 8844 ldrh r4, [r0, #2]
11b30: 1b12 subs r2, r2, r4
11b32: 8849 ldrh r1, [r1, #2]
11b34: 440a add r2, r1
11b36: 805a strh r2, [r3, #2]
break;
11b38: e6b2 b.n 118a0 <_lv_area_align+0x7c>
00011b3a <lv_color_fill>:
/**********************
* STATIC FUNCTIONS
**********************/
LV_ATTRIBUTE_FAST_MEM void lv_color_fill(lv_color_t * buf, lv_color_t color, uint32_t px_num)
{
11b3a: b430 push {r4, r5}
11b3c: b28d uxth r5, r1
#if LV_COLOR_DEPTH == 16
uintptr_t buf_int = (uintptr_t) buf;
if(buf_int & 0x3) {
11b3e: f010 0f03 tst.w r0, #3
*buf = color;
11b42: bf1c itt ne
11b44: f820 1b02 strhne.w r1, [r0], #2
buf++;
px_num--;
11b48: f102 32ff addne.w r2, r2, #4294967295
}
uint32_t c32 = color.full + (color.full << 16);
11b4c: eb05 4105 add.w r1, r5, r5, lsl #16
uint32_t * buf32 = (uint32_t *)buf;
while(px_num > 16) {
11b50: 2a10 cmp r2, #16
11b52: d921 bls.n 11b98 <lv_color_fill+0x5e>
11b54: f100 0320 add.w r3, r0, #32
11b58: 4614 mov r4, r2
*buf32 = c32;
11b5a: f843 1c20 str.w r1, [r3, #-32]
buf32++;
*buf32 = c32;
11b5e: f843 1c1c str.w r1, [r3, #-28]
buf32++;
*buf32 = c32;
11b62: f843 1c18 str.w r1, [r3, #-24]
buf32++;
*buf32 = c32;
11b66: f843 1c14 str.w r1, [r3, #-20]
buf32++;
*buf32 = c32;
11b6a: f843 1c10 str.w r1, [r3, #-16]
buf32++;
*buf32 = c32;
11b6e: f843 1c0c str.w r1, [r3, #-12]
buf32++;
*buf32 = c32;
11b72: f843 1c08 str.w r1, [r3, #-8]
buf32++;
*buf32 = c32;
11b76: f843 1c04 str.w r1, [r3, #-4]
buf32++;
px_num -= 16;
11b7a: 3c10 subs r4, #16
11b7c: 3320 adds r3, #32
while(px_num > 16) {
11b7e: 2c10 cmp r4, #16
11b80: d8eb bhi.n 11b5a <lv_color_fill+0x20>
11b82: f1a2 0311 sub.w r3, r2, #17
11b86: 091b lsrs r3, r3, #4
11b88: 1c59 adds r1, r3, #1
11b8a: 3a10 subs r2, #16
11b8c: ebc3 7303 rsb r3, r3, r3, lsl #28
11b90: eb02 1203 add.w r2, r2, r3, lsl #4
buf32++;
11b94: eb00 1041 add.w r0, r0, r1, lsl #5
}
buf = (lv_color_t *)buf32;
while(px_num) {
11b98: b11a cbz r2, 11ba2 <lv_color_fill+0x68>
*buf = color;
11b9a: f820 5b02 strh.w r5, [r0], #2
while(px_num) {
11b9e: 3a01 subs r2, #1
11ba0: d1fb bne.n 11b9a <lv_color_fill+0x60>
*buf = color;
buf++;
px_num --;
}
#endif
}
11ba2: bc30 pop {r4, r5}
11ba4: 4770 bx lr
00011ba6 <lv_color_lighten>:
lv_color_t lv_color_lighten(lv_color_t c, lv_opa_t lvl)
{
11ba6: b430 push {r4, r5}
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)));
11ba8: ebc1 1541 rsb r5, r1, r1, lsl #5
11bac: f1c1 04ff rsb r4, r1, #255 ; 0xff
11bb0: f3c0 23c4 ubfx r3, r0, #11, #5
11bb4: fb04 5303 mla r3, r4, r3, r5
11bb8: eb03 2203 add.w r2, r3, r3, lsl #8
11bbc: eb03 13c2 add.w r3, r3, r2, lsl #7
11bc0: f3c3 52c4 ubfx r2, r3, #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)));
11bc4: f3c0 1345 ubfx r3, r0, #5, #6
11bc8: ebc1 1181 rsb r1, r1, r1, lsl #6
11bcc: fb04 1103 mla r1, r4, r3, r1
11bd0: eb01 2301 add.w r3, r1, r1, lsl #8
11bd4: eb01 11c3 add.w r1, r1, r3, lsl #7
11bd8: f3c1 51c5 ubfx r1, r1, #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)));
11bdc: f000 001f and.w r0, r0, #31
11be0: fb04 5000 mla r0, r4, r0, r5
11be4: eb00 2300 add.w r3, r0, r0, lsl #8
11be8: eb00 10c3 add.w r0, r0, r3, lsl #7
11bec: 0dc3 lsrs r3, r0, #23
11bee: f04f 0000 mov.w r0, #0
11bf2: f363 0004 bfi r0, r3, #0, #5
11bf6: f361 104a bfi r0, r1, #5, #6
11bfa: f362 20cf bfi r0, r2, #11, #5
return lv_color_mix(LV_COLOR_WHITE, c, lvl);
}
11bfe: bc30 pop {r4, r5}
11c00: 4770 bx lr
00011c02 <lv_color_darken>:
lv_color_t lv_color_darken(lv_color_t c, lv_opa_t lvl)
{
11c02: b410 push {r4}
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
11c04: f1c1 01ff rsb r1, r1, #255 ; 0xff
11c08: f3c0 23c4 ubfx r3, r0, #11, #5
11c0c: fb01 f303 mul.w r3, r1, r3
11c10: eb03 2203 add.w r2, r3, r3, lsl #8
11c14: eb03 13c2 add.w r3, r3, r2, lsl #7
11c18: f3c3 53c4 ubfx r3, r3, #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)));
11c1c: f3c0 1245 ubfx r2, r0, #5, #6
11c20: fb01 f202 mul.w r2, r1, r2
11c24: eb02 2402 add.w r4, r2, r2, lsl #8
11c28: eb02 12c4 add.w r2, r2, r4, lsl #7
11c2c: f3c2 52c5 ubfx r2, r2, #23, #6
LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix)));
11c30: f000 001f and.w r0, r0, #31
11c34: fb01 f100 mul.w r1, r1, r0
11c38: eb01 2001 add.w r0, r1, r1, lsl #8
11c3c: eb01 11c0 add.w r1, r1, r0, lsl #7
11c40: 0dc9 lsrs r1, r1, #23
11c42: f04f 0000 mov.w r0, #0
11c46: f361 0004 bfi r0, r1, #0, #5
11c4a: f362 104a bfi r0, r2, #5, #6
11c4e: f363 20cf bfi r0, r3, #11, #5
return lv_color_mix(LV_COLOR_BLACK, c, lvl);
}
11c52: f85d 4b04 ldr.w r4, [sp], #4
11c56: 4770 bx lr
00011c58 <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*/
11c58: 1c42 adds r2, r0, #1
while(*path != '\0') {
11c5a: 7843 ldrb r3, [r0, #1]
11c5c: b91b cbnz r3, 11c66 <lv_fs_get_real_path+0xe>
11c5e: e008 b.n 11c72 <lv_fs_get_real_path+0x1a>
11c60: f812 3f01 ldrb.w r3, [r2, #1]!
11c64: b12b cbz r3, 11c72 <lv_fs_get_real_path+0x1a>
if(*path == ':' || *path == '\\' || *path == '/') {
11c66: 2b3a cmp r3, #58 ; 0x3a
11c68: d0fa beq.n 11c60 <lv_fs_get_real_path+0x8>
11c6a: 2b5c cmp r3, #92 ; 0x5c
11c6c: d0f8 beq.n 11c60 <lv_fs_get_real_path+0x8>
11c6e: 2b2f cmp r3, #47 ; 0x2f
11c70: d0f6 beq.n 11c60 <lv_fs_get_real_path+0x8>
break;
}
}
return path;
}
11c72: 4610 mov r0, r2
11c74: 4770 bx lr
...
00011c78 <_lv_fs_init>:
{
11c78: b508 push {r3, lr}
_lv_ll_init(&LV_GC_ROOT(_lv_drv_ll), sizeof(lv_fs_drv_t));
11c7a: 2144 movs r1, #68 ; 0x44
11c7c: 4801 ldr r0, [pc, #4] ; (11c84 <_lv_fs_init+0xc>)
11c7e: 4b02 ldr r3, [pc, #8] ; (11c88 <_lv_fs_init+0x10>)
11c80: 4798 blx r3
11c82: bd08 pop {r3, pc}
11c84: 20006d30 .word 0x20006d30
11c88: 00011ef9 .word 0x00011ef9
00011c8c <lv_fs_close>:
{
11c8c: b538 push {r3, r4, r5, lr}
if(file_p->drv == NULL) {
11c8e: 6843 ldr r3, [r0, #4]
11c90: b173 cbz r3, 11cb0 <lv_fs_close+0x24>
if(file_p->drv->close_cb == NULL) {
11c92: 691a ldr r2, [r3, #16]
11c94: b172 cbz r2, 11cb4 <lv_fs_close+0x28>
11c96: 4604 mov r4, r0
lv_fs_res_t res = file_p->drv->close_cb(file_p->drv, file_p->file_d);
11c98: 6801 ldr r1, [r0, #0]
11c9a: 4618 mov r0, r3
11c9c: 4790 blx r2
11c9e: 4605 mov r5, r0
lv_mem_free(file_p->file_d); /*Clean up*/
11ca0: 6820 ldr r0, [r4, #0]
11ca2: 4b05 ldr r3, [pc, #20] ; (11cb8 <lv_fs_close+0x2c>)
11ca4: 4798 blx r3
file_p->file_d = NULL;
11ca6: 2300 movs r3, #0
11ca8: 6023 str r3, [r4, #0]
file_p->drv = NULL;
11caa: 6063 str r3, [r4, #4]
}
11cac: 4628 mov r0, r5
11cae: bd38 pop {r3, r4, r5, pc}
return LV_FS_RES_INV_PARAM;
11cb0: 250b movs r5, #11
11cb2: e7fb b.n 11cac <lv_fs_close+0x20>
return LV_FS_RES_NOT_IMP;
11cb4: 2509 movs r5, #9
11cb6: e7f9 b.n 11cac <lv_fs_close+0x20>
11cb8: 000124c5 .word 0x000124c5
00011cbc <lv_fs_read>:
{
11cbc: b5f0 push {r4, r5, r6, r7, lr}
11cbe: b085 sub sp, #20
if(br != NULL) *br = 0;
11cc0: 461e mov r6, r3
11cc2: b10b cbz r3, 11cc8 <lv_fs_read+0xc>
11cc4: 2300 movs r3, #0
11cc6: 6033 str r3, [r6, #0]
if(file_p->drv == NULL) return LV_FS_RES_INV_PARAM;
11cc8: 6845 ldr r5, [r0, #4]
11cca: b18d cbz r5, 11cf0 <lv_fs_read+0x34>
if(file_p->drv->read_cb == NULL) return LV_FS_RES_NOT_IMP;
11ccc: 69af ldr r7, [r5, #24]
11cce: b18f cbz r7, 11cf4 <lv_fs_read+0x38>
11cd0: 4613 mov r3, r2
11cd2: 460a mov r2, r1
11cd4: 4604 mov r4, r0
uint32_t br_tmp = 0;
11cd6: a804 add r0, sp, #16
11cd8: 2100 movs r1, #0
11cda: f840 1d04 str.w r1, [r0, #-4]!
lv_fs_res_t res = file_p->drv->read_cb(file_p->drv, file_p->file_d, buf, btr, &br_tmp);
11cde: 6821 ldr r1, [r4, #0]
11ce0: 9000 str r0, [sp, #0]
11ce2: 4628 mov r0, r5
11ce4: 47b8 blx r7
if(br != NULL) *br = br_tmp;
11ce6: b10e cbz r6, 11cec <lv_fs_read+0x30>
11ce8: 9b03 ldr r3, [sp, #12]
11cea: 6033 str r3, [r6, #0]
}
11cec: b005 add sp, #20
11cee: bdf0 pop {r4, r5, r6, r7, pc}
if(file_p->drv == NULL) return LV_FS_RES_INV_PARAM;
11cf0: 200b movs r0, #11
11cf2: e7fb b.n 11cec <lv_fs_read+0x30>
if(file_p->drv->read_cb == NULL) return LV_FS_RES_NOT_IMP;
11cf4: 2009 movs r0, #9
11cf6: e7f9 b.n 11cec <lv_fs_read+0x30>
00011cf8 <lv_fs_seek>:
{
11cf8: b538 push {r3, r4, r5, lr}
if(file_p->drv == NULL) {
11cfa: 6844 ldr r4, [r0, #4]
11cfc: b134 cbz r4, 11d0c <lv_fs_seek+0x14>
if(file_p->drv->seek_cb == NULL) {
11cfe: 6a25 ldr r5, [r4, #32]
11d00: b135 cbz r5, 11d10 <lv_fs_seek+0x18>
11d02: 460a mov r2, r1
lv_fs_res_t res = file_p->drv->seek_cb(file_p->drv, file_p->file_d, pos);
11d04: 6801 ldr r1, [r0, #0]
11d06: 4620 mov r0, r4
11d08: 47a8 blx r5
return res;
11d0a: bd38 pop {r3, r4, r5, pc}
return LV_FS_RES_INV_PARAM;
11d0c: 200b movs r0, #11
11d0e: bd38 pop {r3, r4, r5, pc}
return LV_FS_RES_NOT_IMP;
11d10: 2009 movs r0, #9
}
11d12: bd38 pop {r3, r4, r5, pc}
00011d14 <lv_fs_get_drv>:
{
11d14: b570 push {r4, r5, r6, lr}
11d16: 4604 mov r4, r0
_LV_LL_READ(LV_GC_ROOT(_lv_drv_ll), drv) {
11d18: 4809 ldr r0, [pc, #36] ; (11d40 <lv_fs_get_drv+0x2c>)
11d1a: 4b0a ldr r3, [pc, #40] ; (11d44 <lv_fs_get_drv+0x30>)
11d1c: 4798 blx r3
11d1e: 4601 mov r1, r0
11d20: b158 cbz r0, 11d3a <lv_fs_get_drv+0x26>
if(drv->letter == letter) {
11d22: 7803 ldrb r3, [r0, #0]
11d24: 42a3 cmp r3, r4
11d26: d008 beq.n 11d3a <lv_fs_get_drv+0x26>
_LV_LL_READ(LV_GC_ROOT(_lv_drv_ll), drv) {
11d28: 4e05 ldr r6, [pc, #20] ; (11d40 <lv_fs_get_drv+0x2c>)
11d2a: 4d07 ldr r5, [pc, #28] ; (11d48 <lv_fs_get_drv+0x34>)
11d2c: 4630 mov r0, r6
11d2e: 47a8 blx r5
11d30: 4601 mov r1, r0
11d32: b110 cbz r0, 11d3a <lv_fs_get_drv+0x26>
if(drv->letter == letter) {
11d34: 780b ldrb r3, [r1, #0]
11d36: 42a3 cmp r3, r4
11d38: d1f8 bne.n 11d2c <lv_fs_get_drv+0x18>
}
11d3a: 4608 mov r0, r1
11d3c: bd70 pop {r4, r5, r6, pc}
11d3e: bf00 nop
11d40: 20006d30 .word 0x20006d30
11d44: 00011fa9 .word 0x00011fa9
11d48: 00011fbd .word 0x00011fbd
00011d4c <lv_fs_open>:
{
11d4c: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
11d50: b083 sub sp, #12
file_p->drv = NULL;
11d52: 2300 movs r3, #0
11d54: 6043 str r3, [r0, #4]
file_p->file_d = NULL;
11d56: 6003 str r3, [r0, #0]
if(path == NULL) return LV_FS_RES_INV_PARAM;
11d58: 2900 cmp r1, #0
11d5a: d045 beq.n 11de8 <lv_fs_open+0x9c>
11d5c: 460d mov r5, r1
11d5e: 4691 mov r9, r2
11d60: 4604 mov r4, r0
file_p->drv = lv_fs_get_drv(letter);
11d62: 7808 ldrb r0, [r1, #0]
11d64: 4b24 ldr r3, [pc, #144] ; (11df8 <lv_fs_open+0xac>)
11d66: 4798 blx r3
11d68: 6060 str r0, [r4, #4]
if(file_p->drv == NULL) {
11d6a: b140 cbz r0, 11d7e <lv_fs_open+0x32>
if(file_p->drv->ready_cb != NULL) {
11d6c: 6883 ldr r3, [r0, #8]
11d6e: b153 cbz r3, 11d86 <lv_fs_open+0x3a>
if(file_p->drv->ready_cb(file_p->drv) == false) {
11d70: 4798 blx r3
11d72: b940 cbnz r0, 11d86 <lv_fs_open+0x3a>
file_p->drv = NULL;
11d74: 2300 movs r3, #0
11d76: 6063 str r3, [r4, #4]
file_p->file_d = NULL;
11d78: 6023 str r3, [r4, #0]
return LV_FS_RES_HW_ERR;
11d7a: 2501 movs r5, #1
11d7c: e035 b.n 11dea <lv_fs_open+0x9e>
file_p->file_d = NULL;
11d7e: 2300 movs r3, #0
11d80: 6023 str r3, [r4, #0]
return LV_FS_RES_NOT_EX;
11d82: 2503 movs r5, #3
11d84: e031 b.n 11dea <lv_fs_open+0x9e>
file_p->file_d = lv_mem_alloc(file_p->drv->file_size);
11d86: 6863 ldr r3, [r4, #4]
11d88: 8858 ldrh r0, [r3, #2]
11d8a: 4b1c ldr r3, [pc, #112] ; (11dfc <lv_fs_open+0xb0>)
11d8c: 4798 blx r3
11d8e: 6020 str r0, [r4, #0]
LV_ASSERT_MEM(file_p->file_d);
11d90: 4b1b ldr r3, [pc, #108] ; (11e00 <lv_fs_open+0xb4>)
11d92: 4798 blx r3
11d94: b128 cbz r0, 11da2 <lv_fs_open+0x56>
if(file_p->file_d == NULL) {
11d96: 6826 ldr r6, [r4, #0]
11d98: b986 cbnz r6, 11dbc <lv_fs_open+0x70>
file_p->drv = NULL;
11d9a: 2300 movs r3, #0
11d9c: 6063 str r3, [r4, #4]
return LV_FS_RES_OUT_OF_MEM; /* Out of memory */
11d9e: 250a movs r5, #10
11da0: e023 b.n 11dea <lv_fs_open+0x9e>
LV_ASSERT_MEM(file_p->file_d);
11da2: 4b18 ldr r3, [pc, #96] ; (11e04 <lv_fs_open+0xb8>)
11da4: 9300 str r3, [sp, #0]
11da6: 226f movs r2, #111 ; 0x6f
11da8: 4917 ldr r1, [pc, #92] ; (11e08 <lv_fs_open+0xbc>)
11daa: 2003 movs r0, #3
11dac: 4d17 ldr r5, [pc, #92] ; (11e0c <lv_fs_open+0xc0>)
11dae: 47a8 blx r5
11db0: 6822 ldr r2, [r4, #0]
11db2: 2300 movs r3, #0
11db4: 4816 ldr r0, [pc, #88] ; (11e10 <lv_fs_open+0xc4>)
11db6: 4917 ldr r1, [pc, #92] ; (11e14 <lv_fs_open+0xc8>)
11db8: 4788 blx r1
11dba: e7fe b.n 11dba <lv_fs_open+0x6e>
if(file_p->drv->open_cb == NULL) {
11dbc: f8d4 8004 ldr.w r8, [r4, #4]
11dc0: f8d8 700c ldr.w r7, [r8, #12]
11dc4: b1af cbz r7, 11df2 <lv_fs_open+0xa6>
const char * real_path = lv_fs_get_real_path(path);
11dc6: 4628 mov r0, r5
11dc8: 4b13 ldr r3, [pc, #76] ; (11e18 <lv_fs_open+0xcc>)
11dca: 4798 blx r3
lv_fs_res_t res = file_p->drv->open_cb(file_p->drv, file_p->file_d, real_path, mode);
11dcc: 464b mov r3, r9
11dce: 4602 mov r2, r0
11dd0: 4631 mov r1, r6
11dd2: 4640 mov r0, r8
11dd4: 47b8 blx r7
if(res != LV_FS_RES_OK) {
11dd6: 4605 mov r5, r0
11dd8: b138 cbz r0, 11dea <lv_fs_open+0x9e>
lv_mem_free(file_p->file_d);
11dda: 6820 ldr r0, [r4, #0]
11ddc: 4b0f ldr r3, [pc, #60] ; (11e1c <lv_fs_open+0xd0>)
11dde: 4798 blx r3
file_p->file_d = NULL;
11de0: 2300 movs r3, #0
11de2: 6023 str r3, [r4, #0]
file_p->drv = NULL;
11de4: 6063 str r3, [r4, #4]
11de6: e000 b.n 11dea <lv_fs_open+0x9e>
if(path == NULL) return LV_FS_RES_INV_PARAM;
11de8: 250b movs r5, #11
}
11dea: 4628 mov r0, r5
11dec: b003 add sp, #12
11dee: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
return LV_FS_RES_NOT_IMP;
11df2: 2509 movs r5, #9
11df4: e7f9 b.n 11dea <lv_fs_open+0x9e>
11df6: bf00 nop
11df8: 00011d15 .word 0x00011d15
11dfc: 000123dd .word 0x000123dd
11e00: 000022b1 .word 0x000022b1
11e04: 00029258 .word 0x00029258
11e08: 00029274 .word 0x00029274
11e0c: 0001225d .word 0x0001225d
11e10: 00023fd8 .word 0x00023fd8
11e14: 000022b9 .word 0x000022b9
11e18: 00011c59 .word 0x00011c59
11e1c: 000124c5 .word 0x000124c5
00011e20 <lv_fs_get_ext>:
{
11e20: b510 push {r4, lr}
11e22: 4604 mov r4, r0
for(i = strlen(fn); i > 0; i--) {
11e24: 4b12 ldr r3, [pc, #72] ; (11e70 <lv_fs_get_ext+0x50>)
11e26: 4798 blx r3
11e28: b1c8 cbz r0, 11e5e <lv_fs_get_ext+0x3e>
11e2a: 4602 mov r2, r0
if(fn[i] == '.') {
11e2c: 1821 adds r1, r4, r0
11e2e: 5c23 ldrb r3, [r4, r0]
11e30: 2b2e cmp r3, #46 ; 0x2e
11e32: d00f beq.n 11e54 <lv_fs_get_ext+0x34>
else if(fn[i] == '/' || fn[i] == '\\') {
11e34: 2b2f cmp r3, #47 ; 0x2f
11e36: d014 beq.n 11e62 <lv_fs_get_ext+0x42>
11e38: 2b5c cmp r3, #92 ; 0x5c
11e3a: d014 beq.n 11e66 <lv_fs_get_ext+0x46>
for(i = strlen(fn); i > 0; i--) {
11e3c: 3a01 subs r2, #1
11e3e: d00c beq.n 11e5a <lv_fs_get_ext+0x3a>
if(fn[i] == '.') {
11e40: f811 3d01 ldrb.w r3, [r1, #-1]!
11e44: 2b2e cmp r3, #46 ; 0x2e
11e46: d005 beq.n 11e54 <lv_fs_get_ext+0x34>
else if(fn[i] == '/' || fn[i] == '\\') {
11e48: 2b2f cmp r3, #47 ; 0x2f
11e4a: d00e beq.n 11e6a <lv_fs_get_ext+0x4a>
11e4c: 2b5c cmp r3, #92 ; 0x5c
11e4e: d1f5 bne.n 11e3c <lv_fs_get_ext+0x1c>
return ""; /*No extension if a '\' or '/' found*/
11e50: 4808 ldr r0, [pc, #32] ; (11e74 <lv_fs_get_ext+0x54>)
}
11e52: bd10 pop {r4, pc}
return &fn[i + 1];
11e54: 3201 adds r2, #1
11e56: 18a0 adds r0, r4, r2
11e58: bd10 pop {r4, pc}
return ""; /*Empty string if no '.' in the file name. */
11e5a: 4806 ldr r0, [pc, #24] ; (11e74 <lv_fs_get_ext+0x54>)
11e5c: bd10 pop {r4, pc}
11e5e: 4805 ldr r0, [pc, #20] ; (11e74 <lv_fs_get_ext+0x54>)
11e60: bd10 pop {r4, pc}
return ""; /*No extension if a '\' or '/' found*/
11e62: 4804 ldr r0, [pc, #16] ; (11e74 <lv_fs_get_ext+0x54>)
11e64: bd10 pop {r4, pc}
11e66: 4803 ldr r0, [pc, #12] ; (11e74 <lv_fs_get_ext+0x54>)
11e68: bd10 pop {r4, pc}
11e6a: 4802 ldr r0, [pc, #8] ; (11e74 <lv_fs_get_ext+0x54>)
11e6c: bd10 pop {r4, pc}
11e6e: bf00 nop
11e70: 0001b51f .word 0x0001b51f
11e74: 00024f04 .word 0x00024f04
00011e78 <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)
{
11e78: b510 push {r4, lr}
11e7a: b082 sub sp, #8
11e7c: 9201 str r2, [sp, #4]
if(act == NULL) return; /*Can't set the next node of `NULL`*/
11e7e: b181 cbz r1, 11ea2 <node_set_next+0x2a>
11e80: 460c mov r4, r1
uint32_t node_p_size = sizeof(lv_ll_node_t *);
if(next)
11e82: b182 cbz r2, 11ea6 <node_set_next+0x2e>
_lv_memcpy_small(act + LL_NEXT_P_OFFSET(ll_p), &next, node_p_size);
11e84: 6803 ldr r3, [r0, #0]
11e86: 3304 adds r3, #4
11e88: 18ca adds r2, r1, r3
11e8a: f89d 1004 ldrb.w r1, [sp, #4]
11e8e: 54e1 strb r1, [r4, r3]
11e90: f89d 3005 ldrb.w r3, [sp, #5]
11e94: 7053 strb r3, [r2, #1]
11e96: f89d 3006 ldrb.w r3, [sp, #6]
11e9a: 7093 strb r3, [r2, #2]
11e9c: f89d 3007 ldrb.w r3, [sp, #7]
11ea0: 70d3 strb r3, [r2, #3]
else
_lv_memset_00(act + LL_NEXT_P_OFFSET(ll_p), node_p_size);
}
11ea2: b002 add sp, #8
11ea4: bd10 pop {r4, pc}
_lv_memset_00(act + LL_NEXT_P_OFFSET(ll_p), node_p_size);
11ea6: 6800 ldr r0, [r0, #0]
11ea8: 3004 adds r0, #4
11eaa: 2104 movs r1, #4
11eac: 4420 add r0, r4
11eae: 4b01 ldr r3, [pc, #4] ; (11eb4 <node_set_next+0x3c>)
11eb0: 4798 blx r3
11eb2: e7f6 b.n 11ea2 <node_set_next+0x2a>
11eb4: 00012b37 .word 0x00012b37
00011eb8 <node_set_prev>:
{
11eb8: b500 push {lr}
11eba: b083 sub sp, #12
11ebc: 9201 str r2, [sp, #4]
if(act == NULL) return; /*Can't set the prev node of `NULL`*/
11ebe: b181 cbz r1, 11ee2 <node_set_prev+0x2a>
11ec0: 460a mov r2, r1
if(prev)
11ec2: 9b01 ldr r3, [sp, #4]
11ec4: b183 cbz r3, 11ee8 <node_set_prev+0x30>
_lv_memcpy_small(act + LL_PREV_P_OFFSET(ll_p), &prev, node_p_size);
11ec6: 6801 ldr r1, [r0, #0]
11ec8: 1853 adds r3, r2, r1
11eca: f89d 0004 ldrb.w r0, [sp, #4]
11ece: 5450 strb r0, [r2, r1]
11ed0: f89d 2005 ldrb.w r2, [sp, #5]
11ed4: 705a strb r2, [r3, #1]
11ed6: f89d 2006 ldrb.w r2, [sp, #6]
11eda: 709a strb r2, [r3, #2]
11edc: f89d 2007 ldrb.w r2, [sp, #7]
11ee0: 70da strb r2, [r3, #3]
}
11ee2: b003 add sp, #12
11ee4: f85d fb04 ldr.w pc, [sp], #4
_lv_memset_00(act + LL_PREV_P_OFFSET(ll_p), node_p_size);
11ee8: 6800 ldr r0, [r0, #0]
11eea: 2104 movs r1, #4
11eec: 4410 add r0, r2
11eee: 4b01 ldr r3, [pc, #4] ; (11ef4 <node_set_prev+0x3c>)
11ef0: 4798 blx r3
11ef2: e7f6 b.n 11ee2 <node_set_prev+0x2a>
11ef4: 00012b37 .word 0x00012b37
00011ef8 <_lv_ll_init>:
ll_p->head = NULL;
11ef8: 2300 movs r3, #0
11efa: 6043 str r3, [r0, #4]
ll_p->tail = NULL;
11efc: 6083 str r3, [r0, #8]
if(node_size & 0x3) {
11efe: f011 0f03 tst.w r1, #3
node_size = node_size & (~0x3);
11f02: bf1c itt ne
11f04: f021 0103 bicne.w r1, r1, #3
node_size += 4;
11f08: 3104 addne r1, #4
ll_p->n_size = node_size;
11f0a: 6001 str r1, [r0, #0]
11f0c: 4770 bx lr
...
00011f10 <_lv_ll_ins_head>:
{
11f10: b538 push {r3, r4, r5, lr}
11f12: 4604 mov r4, r0
n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE);
11f14: 6800 ldr r0, [r0, #0]
11f16: 3008 adds r0, #8
11f18: 4b0d ldr r3, [pc, #52] ; (11f50 <_lv_ll_ins_head+0x40>)
11f1a: 4798 blx r3
if(n_new != NULL) {
11f1c: 4605 mov r5, r0
11f1e: b190 cbz r0, 11f46 <_lv_ll_ins_head+0x36>
node_set_prev(ll_p, n_new, NULL); /*No prev. before the new head*/
11f20: 2200 movs r2, #0
11f22: 4601 mov r1, r0
11f24: 4620 mov r0, r4
11f26: 4b0b ldr r3, [pc, #44] ; (11f54 <_lv_ll_ins_head+0x44>)
11f28: 4798 blx r3
node_set_next(ll_p, n_new, ll_p->head); /*After new comes the old head*/
11f2a: 6862 ldr r2, [r4, #4]
11f2c: 4629 mov r1, r5
11f2e: 4620 mov r0, r4
11f30: 4b09 ldr r3, [pc, #36] ; (11f58 <_lv_ll_ins_head+0x48>)
11f32: 4798 blx r3
if(ll_p->head != NULL) { /*If there is old head then before it goes the new*/
11f34: 6861 ldr r1, [r4, #4]
11f36: b119 cbz r1, 11f40 <_lv_ll_ins_head+0x30>
node_set_prev(ll_p, ll_p->head, n_new);
11f38: 462a mov r2, r5
11f3a: 4620 mov r0, r4
11f3c: 4b05 ldr r3, [pc, #20] ; (11f54 <_lv_ll_ins_head+0x44>)
11f3e: 4798 blx r3
ll_p->head = n_new; /*Set the new head in the dsc.*/
11f40: 6065 str r5, [r4, #4]
if(ll_p->tail == NULL) { /*If there is no tail (1. node) set the tail too*/
11f42: 68a3 ldr r3, [r4, #8]
11f44: b10b cbz r3, 11f4a <_lv_ll_ins_head+0x3a>
}
11f46: 4628 mov r0, r5
11f48: bd38 pop {r3, r4, r5, pc}
ll_p->tail = n_new;
11f4a: 60a5 str r5, [r4, #8]
11f4c: e7fb b.n 11f46 <_lv_ll_ins_head+0x36>
11f4e: bf00 nop
11f50: 000123dd .word 0x000123dd
11f54: 00011eb9 .word 0x00011eb9
11f58: 00011e79 .word 0x00011e79
00011f5c <_lv_ll_ins_tail>:
{
11f5c: b538 push {r3, r4, r5, lr}
11f5e: 4604 mov r4, r0
n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE);
11f60: 6800 ldr r0, [r0, #0]
11f62: 3008 adds r0, #8
11f64: 4b0d ldr r3, [pc, #52] ; (11f9c <_lv_ll_ins_tail+0x40>)
11f66: 4798 blx r3
if(n_new != NULL) {
11f68: 4605 mov r5, r0
11f6a: b190 cbz r0, 11f92 <_lv_ll_ins_tail+0x36>
node_set_next(ll_p, n_new, NULL); /*No next after the new tail*/
11f6c: 2200 movs r2, #0
11f6e: 4601 mov r1, r0
11f70: 4620 mov r0, r4
11f72: 4b0b ldr r3, [pc, #44] ; (11fa0 <_lv_ll_ins_tail+0x44>)
11f74: 4798 blx r3
node_set_prev(ll_p, n_new, ll_p->tail); /*The prev. before new is tho old tail*/
11f76: 68a2 ldr r2, [r4, #8]
11f78: 4629 mov r1, r5
11f7a: 4620 mov r0, r4
11f7c: 4b09 ldr r3, [pc, #36] ; (11fa4 <_lv_ll_ins_tail+0x48>)
11f7e: 4798 blx r3
if(ll_p->tail != NULL) { /*If there is old tail then the new comes after it*/
11f80: 68a1 ldr r1, [r4, #8]
11f82: b119 cbz r1, 11f8c <_lv_ll_ins_tail+0x30>
node_set_next(ll_p, ll_p->tail, n_new);
11f84: 462a mov r2, r5
11f86: 4620 mov r0, r4
11f88: 4b05 ldr r3, [pc, #20] ; (11fa0 <_lv_ll_ins_tail+0x44>)
11f8a: 4798 blx r3
ll_p->tail = n_new; /*Set the new tail in the dsc.*/
11f8c: 60a5 str r5, [r4, #8]
if(ll_p->head == NULL) { /*If there is no head (1. node) set the head too*/
11f8e: 6863 ldr r3, [r4, #4]
11f90: b10b cbz r3, 11f96 <_lv_ll_ins_tail+0x3a>
}
11f92: 4628 mov r0, r5
11f94: bd38 pop {r3, r4, r5, pc}
ll_p->head = n_new;
11f96: 6065 str r5, [r4, #4]
11f98: e7fb b.n 11f92 <_lv_ll_ins_tail+0x36>
11f9a: bf00 nop
11f9c: 000123dd .word 0x000123dd
11fa0: 00011e79 .word 0x00011e79
11fa4: 00011eb9 .word 0x00011eb9
00011fa8 <_lv_ll_get_head>:
if(ll_p != NULL) {
11fa8: b108 cbz r0, 11fae <_lv_ll_get_head+0x6>
head = ll_p->head;
11faa: 6840 ldr r0, [r0, #4]
11fac: 4770 bx lr
void * head = NULL;
11fae: 2000 movs r0, #0
}
11fb0: 4770 bx lr
00011fb2 <_lv_ll_get_tail>:
if(ll_p != NULL) {
11fb2: b108 cbz r0, 11fb8 <_lv_ll_get_tail+0x6>
tail = ll_p->tail;
11fb4: 6880 ldr r0, [r0, #8]
11fb6: 4770 bx lr
void * tail = NULL;
11fb8: 2000 movs r0, #0
}
11fba: 4770 bx lr
00011fbc <_lv_ll_get_next>:
{
11fbc: b082 sub sp, #8
void * next = NULL;
11fbe: 2300 movs r3, #0
11fc0: 9301 str r3, [sp, #4]
if(ll_p != NULL) {
11fc2: b170 cbz r0, 11fe2 <_lv_ll_get_next+0x26>
_lv_memcpy_small(&next, n_act_d + LL_NEXT_P_OFFSET(ll_p), sizeof(void *));
11fc4: 6803 ldr r3, [r0, #0]
11fc6: 3304 adds r3, #4
11fc8: 18ca adds r2, r1, r3
11fca: 5ccb ldrb r3, [r1, r3]
11fcc: f88d 3004 strb.w r3, [sp, #4]
11fd0: 7853 ldrb r3, [r2, #1]
11fd2: f88d 3005 strb.w r3, [sp, #5]
11fd6: 7893 ldrb r3, [r2, #2]
11fd8: f88d 3006 strb.w r3, [sp, #6]
11fdc: 78d3 ldrb r3, [r2, #3]
11fde: f88d 3007 strb.w r3, [sp, #7]
}
11fe2: 9801 ldr r0, [sp, #4]
11fe4: b002 add sp, #8
11fe6: 4770 bx lr
00011fe8 <_lv_ll_get_prev>:
{
11fe8: b082 sub sp, #8
void * prev = NULL;
11fea: 2300 movs r3, #0
11fec: 9301 str r3, [sp, #4]
if(ll_p != NULL) {
11fee: b168 cbz r0, 1200c <_lv_ll_get_prev+0x24>
_lv_memcpy_small(&prev, n_act_d + LL_PREV_P_OFFSET(ll_p), sizeof(void *));
11ff0: 6802 ldr r2, [r0, #0]
11ff2: 188b adds r3, r1, r2
11ff4: 5c8a ldrb r2, [r1, r2]
11ff6: f88d 2004 strb.w r2, [sp, #4]
11ffa: 785a ldrb r2, [r3, #1]
11ffc: f88d 2005 strb.w r2, [sp, #5]
12000: 789a ldrb r2, [r3, #2]
12002: f88d 2006 strb.w r2, [sp, #6]
12006: 78db ldrb r3, [r3, #3]
12008: f88d 3007 strb.w r3, [sp, #7]
}
1200c: 9801 ldr r0, [sp, #4]
1200e: b002 add sp, #8
12010: 4770 bx lr
...
00012014 <_lv_ll_ins_prev>:
if(NULL == ll_p || NULL == n_act) return NULL;
12014: b360 cbz r0, 12070 <_lv_ll_ins_prev+0x5c>
{
12016: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
1201a: 4604 mov r4, r0
if(NULL == ll_p || NULL == n_act) return NULL;
1201c: b351 cbz r1, 12074 <_lv_ll_ins_prev+0x60>
1201e: 460d mov r5, r1
if(_lv_ll_get_head(ll_p) == n_act) {
12020: 6843 ldr r3, [r0, #4]
12022: 4299 cmp r1, r3
12024: d020 beq.n 12068 <_lv_ll_ins_prev+0x54>
n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE);
12026: 6800 ldr r0, [r0, #0]
12028: 3008 adds r0, #8
1202a: 4b15 ldr r3, [pc, #84] ; (12080 <_lv_ll_ins_prev+0x6c>)
1202c: 4798 blx r3
if(n_new == NULL) return NULL;
1202e: 4606 mov r6, r0
12030: b318 cbz r0, 1207a <_lv_ll_ins_prev+0x66>
n_prev = _lv_ll_get_prev(ll_p, n_act);
12032: 4629 mov r1, r5
12034: 4620 mov r0, r4
12036: 4b13 ldr r3, [pc, #76] ; (12084 <_lv_ll_ins_prev+0x70>)
12038: 4798 blx r3
1203a: 4680 mov r8, r0
node_set_next(ll_p, n_prev, n_new);
1203c: 4632 mov r2, r6
1203e: 4601 mov r1, r0
12040: 4620 mov r0, r4
12042: 4f11 ldr r7, [pc, #68] ; (12088 <_lv_ll_ins_prev+0x74>)
12044: 47b8 blx r7
node_set_prev(ll_p, n_new, n_prev);
12046: 4642 mov r2, r8
12048: 4631 mov r1, r6
1204a: 4620 mov r0, r4
1204c: f8df 8040 ldr.w r8, [pc, #64] ; 12090 <_lv_ll_ins_prev+0x7c>
12050: 47c0 blx r8
node_set_prev(ll_p, n_act, n_new);
12052: 4632 mov r2, r6
12054: 4629 mov r1, r5
12056: 4620 mov r0, r4
12058: 47c0 blx r8
node_set_next(ll_p, n_new, n_act);
1205a: 462a mov r2, r5
1205c: 4631 mov r1, r6
1205e: 4620 mov r0, r4
12060: 47b8 blx r7
n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE);
12062: 4630 mov r0, r6
12064: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
n_new = _lv_ll_ins_head(ll_p);
12068: 4b08 ldr r3, [pc, #32] ; (1208c <_lv_ll_ins_prev+0x78>)
1206a: 4798 blx r3
1206c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
if(NULL == ll_p || NULL == n_act) return NULL;
12070: 2000 movs r0, #0
12072: 4770 bx lr
12074: 4608 mov r0, r1
12076: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
}
1207a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
1207e: bf00 nop
12080: 000123dd .word 0x000123dd
12084: 00011fe9 .word 0x00011fe9
12088: 00011e79 .word 0x00011e79
1208c: 00011f11 .word 0x00011f11
12090: 00011eb9 .word 0x00011eb9
00012094 <_lv_ll_remove>:
{
12094: b570 push {r4, r5, r6, lr}
12096: 460d mov r5, r1
if(ll_p != NULL) {
12098: 4604 mov r4, r0
1209a: b350 cbz r0, 120f2 <_lv_ll_remove+0x5e>
if(_lv_ll_get_head(ll_p) == node_p) {
1209c: 6843 ldr r3, [r0, #4]
1209e: 4299 cmp r1, r3
120a0: d029 beq.n 120f6 <_lv_ll_remove+0x62>
else if(_lv_ll_get_tail(ll_p) == node_p) {
120a2: 6883 ldr r3, [r0, #8]
120a4: 4299 cmp r1, r3
120a6: d017 beq.n 120d8 <_lv_ll_remove+0x44>
lv_ll_node_t * n_prev = _lv_ll_get_prev(ll_p, node_p);
120a8: 4629 mov r1, r5
120aa: 4620 mov r0, r4
120ac: 4b18 ldr r3, [pc, #96] ; (12110 <_lv_ll_remove+0x7c>)
120ae: 4798 blx r3
120b0: 4606 mov r6, r0
lv_ll_node_t * n_next = _lv_ll_get_next(ll_p, node_p);
120b2: 4629 mov r1, r5
120b4: 4620 mov r0, r4
120b6: 4b17 ldr r3, [pc, #92] ; (12114 <_lv_ll_remove+0x80>)
120b8: 4798 blx r3
120ba: 4605 mov r5, r0
node_set_next(ll_p, n_prev, n_next);
120bc: 4602 mov r2, r0
120be: 4631 mov r1, r6
120c0: 4620 mov r0, r4
120c2: 4b15 ldr r3, [pc, #84] ; (12118 <_lv_ll_remove+0x84>)
120c4: 4798 blx r3
node_set_prev(ll_p, n_next, n_prev);
120c6: 4632 mov r2, r6
120c8: 4629 mov r1, r5
120ca: 4620 mov r0, r4
120cc: 4b13 ldr r3, [pc, #76] ; (1211c <_lv_ll_remove+0x88>)
120ce: 4798 blx r3
}
120d0: bd70 pop {r4, r5, r6, pc}
ll_p->tail = NULL;
120d2: 2300 movs r3, #0
120d4: 60a3 str r3, [r4, #8]
120d6: bd70 pop {r4, r5, r6, pc}
ll_p->tail = _lv_ll_get_prev(ll_p, node_p);
120d8: 4b0d ldr r3, [pc, #52] ; (12110 <_lv_ll_remove+0x7c>)
120da: 4798 blx r3
120dc: 60a0 str r0, [r4, #8]
if(ll_p->tail == NULL) {
120de: b128 cbz r0, 120ec <_lv_ll_remove+0x58>
node_set_next(ll_p, ll_p->tail, NULL);
120e0: 2200 movs r2, #0
120e2: 4601 mov r1, r0
120e4: 4620 mov r0, r4
120e6: 4b0c ldr r3, [pc, #48] ; (12118 <_lv_ll_remove+0x84>)
120e8: 4798 blx r3
120ea: bd70 pop {r4, r5, r6, pc}
ll_p->head = NULL;
120ec: 2300 movs r3, #0
120ee: 6063 str r3, [r4, #4]
120f0: bd70 pop {r4, r5, r6, pc}
if(_lv_ll_get_head(ll_p) == node_p) {
120f2: 2900 cmp r1, #0
120f4: d1d8 bne.n 120a8 <_lv_ll_remove+0x14>
ll_p->head = _lv_ll_get_next(ll_p, node_p);
120f6: 4629 mov r1, r5
120f8: 4620 mov r0, r4
120fa: 4b06 ldr r3, [pc, #24] ; (12114 <_lv_ll_remove+0x80>)
120fc: 4798 blx r3
120fe: 6060 str r0, [r4, #4]
if(ll_p->head == NULL) {
12100: 2800 cmp r0, #0
12102: d0e6 beq.n 120d2 <_lv_ll_remove+0x3e>
node_set_prev(ll_p, ll_p->head, NULL);
12104: 2200 movs r2, #0
12106: 4601 mov r1, r0
12108: 4620 mov r0, r4
1210a: 4b04 ldr r3, [pc, #16] ; (1211c <_lv_ll_remove+0x88>)
1210c: 4798 blx r3
1210e: bd70 pop {r4, r5, r6, pc}
12110: 00011fe9 .word 0x00011fe9
12114: 00011fbd .word 0x00011fbd
12118: 00011e79 .word 0x00011e79
1211c: 00011eb9 .word 0x00011eb9
00012120 <_lv_ll_chg_list>:
{
12120: b570 push {r4, r5, r6, lr}
12122: 460c mov r4, r1
12124: 4615 mov r5, r2
12126: 461e mov r6, r3
_lv_ll_remove(ll_ori_p, node);
12128: 4611 mov r1, r2
1212a: 4b17 ldr r3, [pc, #92] ; (12188 <_lv_ll_chg_list+0x68>)
1212c: 4798 blx r3
if(head) {
1212e: b1ae cbz r6, 1215c <_lv_ll_chg_list+0x3c>
node_set_prev(ll_new_p, node, NULL);
12130: 2200 movs r2, #0
12132: 4629 mov r1, r5
12134: 4620 mov r0, r4
12136: 4b15 ldr r3, [pc, #84] ; (1218c <_lv_ll_chg_list+0x6c>)
12138: 4798 blx r3
node_set_next(ll_new_p, node, ll_new_p->head);
1213a: 6862 ldr r2, [r4, #4]
1213c: 4629 mov r1, r5
1213e: 4620 mov r0, r4
12140: 4b13 ldr r3, [pc, #76] ; (12190 <_lv_ll_chg_list+0x70>)
12142: 4798 blx r3
if(ll_new_p->head != NULL) { /*If there is old head then before it goes the new*/
12144: 6861 ldr r1, [r4, #4]
12146: b119 cbz r1, 12150 <_lv_ll_chg_list+0x30>
node_set_prev(ll_new_p, ll_new_p->head, node);
12148: 462a mov r2, r5
1214a: 4620 mov r0, r4
1214c: 4b0f ldr r3, [pc, #60] ; (1218c <_lv_ll_chg_list+0x6c>)
1214e: 4798 blx r3
ll_new_p->head = node; /*Set the new head in the dsc.*/
12150: 6065 str r5, [r4, #4]
if(ll_new_p->tail == NULL) { /*If there is no tail (first node) set the tail too*/
12152: 68a3 ldr r3, [r4, #8]
12154: b103 cbz r3, 12158 <_lv_ll_chg_list+0x38>
12156: bd70 pop {r4, r5, r6, pc}
ll_new_p->tail = node;
12158: 60a5 str r5, [r4, #8]
1215a: bd70 pop {r4, r5, r6, pc}
node_set_prev(ll_new_p, node, ll_new_p->tail);
1215c: 68a2 ldr r2, [r4, #8]
1215e: 4629 mov r1, r5
12160: 4620 mov r0, r4
12162: 4b0a ldr r3, [pc, #40] ; (1218c <_lv_ll_chg_list+0x6c>)
12164: 4798 blx r3
node_set_next(ll_new_p, node, NULL);
12166: 2200 movs r2, #0
12168: 4629 mov r1, r5
1216a: 4620 mov r0, r4
1216c: 4b08 ldr r3, [pc, #32] ; (12190 <_lv_ll_chg_list+0x70>)
1216e: 4798 blx r3
if(ll_new_p->tail != NULL) { /*If there is old tail then after it goes the new*/
12170: 68a1 ldr r1, [r4, #8]
12172: b119 cbz r1, 1217c <_lv_ll_chg_list+0x5c>
node_set_next(ll_new_p, ll_new_p->tail, node);
12174: 462a mov r2, r5
12176: 4620 mov r0, r4
12178: 4b05 ldr r3, [pc, #20] ; (12190 <_lv_ll_chg_list+0x70>)
1217a: 4798 blx r3
ll_new_p->tail = node; /*Set the new tail in the dsc.*/
1217c: 60a5 str r5, [r4, #8]
if(ll_new_p->head == NULL) { /*If there is no head (first node) set the head too*/
1217e: 6863 ldr r3, [r4, #4]
12180: 2b00 cmp r3, #0
12182: d1e8 bne.n 12156 <_lv_ll_chg_list+0x36>
ll_new_p->head = node;
12184: 6065 str r5, [r4, #4]
}
12186: e7e6 b.n 12156 <_lv_ll_chg_list+0x36>
12188: 00012095 .word 0x00012095
1218c: 00011eb9 .word 0x00011eb9
12190: 00011e79 .word 0x00011e79
00012194 <_lv_ll_move_before>:
if(n_act == n_after) return; /*Can't move before itself*/
12194: 4291 cmp r1, r2
12196: d04c beq.n 12232 <_lv_ll_move_before+0x9e>
{
12198: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
1219c: 4617 mov r7, r2
1219e: 460c mov r4, r1
121a0: 4605 mov r5, r0
if(n_after != NULL)
121a2: b312 cbz r2, 121ea <_lv_ll_move_before+0x56>
n_before = _lv_ll_get_prev(ll_p, n_after);
121a4: 4611 mov r1, r2
121a6: 4b23 ldr r3, [pc, #140] ; (12234 <_lv_ll_move_before+0xa0>)
121a8: 4798 blx r3
121aa: 4606 mov r6, r0
if(n_act == n_before) return; /*Already before `n_after`*/
121ac: 4284 cmp r4, r0
121ae: d01a beq.n 121e6 <_lv_ll_move_before+0x52>
_lv_ll_remove(ll_p, n_act);
121b0: 4621 mov r1, r4
121b2: 4628 mov r0, r5
121b4: 4b20 ldr r3, [pc, #128] ; (12238 <_lv_ll_move_before+0xa4>)
121b6: 4798 blx r3
node_set_next(ll_p, n_before, n_act);
121b8: 4622 mov r2, r4
121ba: 4631 mov r1, r6
121bc: 4628 mov r0, r5
121be: f8df 807c ldr.w r8, [pc, #124] ; 1223c <_lv_ll_move_before+0xa8>
121c2: 47c0 blx r8
node_set_prev(ll_p, n_act, n_before);
121c4: 4632 mov r2, r6
121c6: 4621 mov r1, r4
121c8: 4628 mov r0, r5
121ca: f8df 9074 ldr.w r9, [pc, #116] ; 12240 <_lv_ll_move_before+0xac>
121ce: 47c8 blx r9
node_set_prev(ll_p, n_after, n_act);
121d0: 4622 mov r2, r4
121d2: 4639 mov r1, r7
121d4: 4628 mov r0, r5
121d6: 47c8 blx r9
node_set_next(ll_p, n_act, n_after);
121d8: 463a mov r2, r7
121da: 4621 mov r1, r4
121dc: 4628 mov r0, r5
121de: 47c0 blx r8
if(n_before == NULL) ll_p->head = n_act;
121e0: b306 cbz r6, 12224 <_lv_ll_move_before+0x90>
121e2: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
121e6: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
if(ll_p != NULL) {
121ea: b1f0 cbz r0, 1222a <_lv_ll_move_before+0x96>
tail = ll_p->tail;
121ec: 6886 ldr r6, [r0, #8]
if(n_act == n_before) return; /*Already before `n_after`*/
121ee: 42b4 cmp r4, r6
121f0: d01d beq.n 1222e <_lv_ll_move_before+0x9a>
_lv_ll_remove(ll_p, n_act);
121f2: 4621 mov r1, r4
121f4: 4628 mov r0, r5
121f6: 4b10 ldr r3, [pc, #64] ; (12238 <_lv_ll_move_before+0xa4>)
121f8: 4798 blx r3
node_set_next(ll_p, n_before, n_act);
121fa: 4622 mov r2, r4
121fc: 4631 mov r1, r6
121fe: 4628 mov r0, r5
12200: 4f0e ldr r7, [pc, #56] ; (1223c <_lv_ll_move_before+0xa8>)
12202: 47b8 blx r7
node_set_prev(ll_p, n_act, n_before);
12204: 4632 mov r2, r6
12206: 4621 mov r1, r4
12208: 4628 mov r0, r5
1220a: f8df 8034 ldr.w r8, [pc, #52] ; 12240 <_lv_ll_move_before+0xac>
1220e: 47c0 blx r8
node_set_prev(ll_p, n_after, n_act);
12210: 4622 mov r2, r4
12212: 2100 movs r1, #0
12214: 4628 mov r0, r5
12216: 47c0 blx r8
node_set_next(ll_p, n_act, n_after);
12218: 2200 movs r2, #0
1221a: 4621 mov r1, r4
1221c: 4628 mov r0, r5
1221e: 47b8 blx r7
if(n_after == NULL) ll_p->tail = n_act;
12220: 60ac str r4, [r5, #8]
12222: e7dd b.n 121e0 <_lv_ll_move_before+0x4c>
if(n_before == NULL) ll_p->head = n_act;
12224: 606c str r4, [r5, #4]
12226: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
void * tail = NULL;
1222a: 4616 mov r6, r2
1222c: e7df b.n 121ee <_lv_ll_move_before+0x5a>
1222e: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
12232: 4770 bx lr
12234: 00011fe9 .word 0x00011fe9
12238: 00012095 .word 0x00012095
1223c: 00011e79 .word 0x00011e79
12240: 00011eb9 .word 0x00011eb9
00012244 <_lv_ll_is_empty>:
if(ll_p == NULL) return true;
12244: b140 cbz r0, 12258 <_lv_ll_is_empty+0x14>
if(ll_p->head == NULL && ll_p->tail == NULL) return true;
12246: 6842 ldr r2, [r0, #4]
12248: b10a cbz r2, 1224e <_lv_ll_is_empty+0xa>
return false;
1224a: 2000 movs r0, #0
}
1224c: 4770 bx lr
if(ll_p->head == NULL && ll_p->tail == NULL) return true;
1224e: 6880 ldr r0, [r0, #8]
12250: fab0 f080 clz r0, r0
12254: 0940 lsrs r0, r0, #5
12256: 4770 bx lr
if(ll_p == NULL) return true;
12258: 2001 movs r0, #1
1225a: 4770 bx lr
0001225c <_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, ...)
{
1225c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
12260: b0c4 sub sp, #272 ; 0x110
if(level >= _LV_LOG_LEVEL_NUM) return; /*Invalid level*/
if(level >= LV_LOG_LEVEL) {
12262: 1e44 subs r4, r0, #1
12264: b2e4 uxtb r4, r4
12266: 2c04 cmp r4, #4
12268: d815 bhi.n 12296 <_lv_log_add+0x3a>
1226a: 461f mov r7, r3
1226c: 4616 mov r6, r2
1226e: 460d mov r5, r1
12270: 4680 mov r8, r0
va_list args;
va_start(args, format);
12272: ab4b add r3, sp, #300 ; 0x12c
12274: 9303 str r3, [sp, #12]
char buf[256];
lv_vsnprintf(buf, sizeof(buf), format, args);
12276: 9a4a ldr r2, [sp, #296] ; 0x128
12278: f44f 7180 mov.w r1, #256 ; 0x100
1227c: a804 add r0, sp, #16
1227e: 4c07 ldr r4, [pc, #28] ; (1229c <_lv_log_add+0x40>)
12280: 47a0 blx r4
}
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);
12282: 4b07 ldr r3, [pc, #28] ; (122a0 <_lv_log_add+0x44>)
12284: 681c ldr r4, [r3, #0]
12286: b134 cbz r4, 12296 <_lv_log_add+0x3a>
12288: ab04 add r3, sp, #16
1228a: 9300 str r3, [sp, #0]
1228c: 463b mov r3, r7
1228e: 4632 mov r2, r6
12290: 4629 mov r1, r5
12292: 4640 mov r0, r8
12294: 47a0 blx r4
#endif
}
}
12296: b044 add sp, #272 ; 0x110
12298: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
1229c: 000135cd .word 0x000135cd
122a0: 20002b88 .word 0x20002b88
000122a4 <_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;
122a4: 4b1b ldr r3, [pc, #108] ; (12314 <_lv_trigo_sin+0x70>)
122a6: fb83 2300 smull r2, r3, r3, r0
122aa: 181a adds r2, r3, r0
122ac: 17c3 asrs r3, r0, #31
122ae: ebc3 2322 rsb r3, r3, r2, asr #8
122b2: f44f 72b4 mov.w r2, #360 ; 0x168
122b6: fb02 0013 mls r0, r2, r3, r0
122ba: b200 sxth r0, r0
if(angle < 0) angle = 360 + angle;
122bc: 2800 cmp r0, #0
122be: bfbc itt lt
122c0: 1880 addlt r0, r0, r2
122c2: b200 sxthlt r0, r0
if(angle < 90) {
122c4: 2859 cmp r0, #89 ; 0x59
122c6: dd13 ble.n 122f0 <_lv_trigo_sin+0x4c>
ret = sin0_90_table[angle];
}
else if(angle >= 90 && angle < 180) {
122c8: b280 uxth r0, r0
122ca: f1a0 035a sub.w r3, r0, #90 ; 0x5a
122ce: b29b uxth r3, r3
122d0: 2b59 cmp r3, #89 ; 0x59
122d2: d911 bls.n 122f8 <_lv_trigo_sin+0x54>
angle = 180 - angle;
ret = sin0_90_table[angle];
}
else if(angle >= 180 && angle < 270) {
122d4: f1a0 03b4 sub.w r3, r0, #180 ; 0xb4
122d8: b29b uxth r3, r3
122da: 2b59 cmp r3, #89 ; 0x59
122dc: d913 bls.n 12306 <_lv_trigo_sin+0x62>
angle = angle - 180;
ret = -sin0_90_table[angle];
}
else { /*angle >=270*/
angle = 360 - angle;
122de: f5c0 70b4 rsb r0, r0, #360 ; 0x168
ret = -sin0_90_table[angle];
122e2: b200 sxth r0, r0
122e4: 4b0c ldr r3, [pc, #48] ; (12318 <_lv_trigo_sin+0x74>)
122e6: f833 0010 ldrh.w r0, [r3, r0, lsl #1]
122ea: 4240 negs r0, r0
122ec: b200 sxth r0, r0
}
return ret;
}
122ee: 4770 bx lr
ret = sin0_90_table[angle];
122f0: 4b09 ldr r3, [pc, #36] ; (12318 <_lv_trigo_sin+0x74>)
122f2: f933 0010 ldrsh.w r0, [r3, r0, lsl #1]
122f6: 4770 bx lr
angle = 180 - angle;
122f8: f1c0 00b4 rsb r0, r0, #180 ; 0xb4
ret = sin0_90_table[angle];
122fc: b200 sxth r0, r0
122fe: 4b06 ldr r3, [pc, #24] ; (12318 <_lv_trigo_sin+0x74>)
12300: f933 0010 ldrsh.w r0, [r3, r0, lsl #1]
12304: 4770 bx lr
ret = -sin0_90_table[angle];
12306: b21b sxth r3, r3
12308: 4a03 ldr r2, [pc, #12] ; (12318 <_lv_trigo_sin+0x74>)
1230a: f832 0013 ldrh.w r0, [r2, r3, lsl #1]
1230e: 4240 negs r0, r0
12310: b200 sxth r0, r0
12312: 4770 bx lr
12314: b60b60b7 .word 0xb60b60b7
12318: 0002929c .word 0x0002929c
0001231c <_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)
{
1231c: b430 push {r4, r5}
x = x << 8; /*To get 4 bit precision. (sqrt(256) = 16 = 4 bit)*/
1231e: 0200 lsls r0, r0, #8
uint32_t root = 0;
12320: 2400 movs r4, #0
uint32_t trial;
// http://ww1.microchip.com/...en/AppNotes/91040a.pdf
do {
trial = root + mask;
12322: 1913 adds r3, r2, r4
if((uint32_t)trial * trial <= x) root = trial;
12324: fb03 f503 mul.w r5, r3, r3
12328: 42a8 cmp r0, r5
1232a: bf28 it cs
1232c: 461c movcs r4, r3
mask = mask >> 1;
} while(mask);
1232e: 0852 lsrs r2, r2, #1
12330: d1f7 bne.n 12322 <_lv_sqrt+0x6>
q->i = (uint32_t) root >> 4;
12332: 0923 lsrs r3, r4, #4
12334: 800b strh r3, [r1, #0]
q->f = (uint32_t)(root & 0xf) << 4;
12336: 0124 lsls r4, r4, #4
12338: b2e4 uxtb r4, r4
1233a: 804c strh r4, [r1, #2]
}
1233c: bc30 pop {r4, r5}
1233e: 4770 bx lr
00012340 <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*/
12340: 4603 mov r3, r0
12342: b160 cbz r0, 1235e <ent_get_next+0x1e>
next_e = (lv_mem_ent_t *)work_mem;
}
else { /*Get the next entry */
uint8_t * data = &act_e->first_data;
12344: 3004 adds r0, #4
next_e = (lv_mem_ent_t *)&data[act_e->header.s.d_size];
12346: 681b ldr r3, [r3, #0]
12348: eb00 0053 add.w r0, r0, r3, lsr #1
if(&next_e->first_data >= &work_mem[LV_MEM_SIZE]) next_e = NULL;
1234c: 1d02 adds r2, r0, #4
1234e: 4b05 ldr r3, [pc, #20] ; (12364 <ent_get_next+0x24>)
12350: 681b ldr r3, [r3, #0]
12352: f503 4380 add.w r3, r3, #16384 ; 0x4000
12356: 429a cmp r2, r3
12358: bf28 it cs
1235a: 2000 movcs r0, #0
}
return next_e;
}
1235c: 4770 bx lr
next_e = (lv_mem_ent_t *)work_mem;
1235e: 4b01 ldr r3, [pc, #4] ; (12364 <ent_get_next+0x24>)
12360: 6818 ldr r0, [r3, #0]
12362: 4770 bx lr
12364: 20002b8c .word 0x20002b8c
00012368 <ent_trunc>:
size = size & (~0x7);
size += 8;
}
#else
/*Round the size up to 4*/
if(size & 0x3) {
12368: f011 0f03 tst.w r1, #3
size = size & (~0x3);
1236c: bf1c itt ne
1236e: f021 0103 bicne.w r1, r1, #3
size += 4;
12372: 3104 addne r1, #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)) {
12374: 6803 ldr r3, [r0, #0]
12376: f3c3 035e ubfx r3, r3, #1, #31
1237a: 1d0a adds r2, r1, #4
1237c: 4293 cmp r3, r2
1237e: d017 beq.n 123b0 <ent_trunc+0x48>
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) {
12380: 4299 cmp r1, r3
12382: d016 beq.n 123b2 <ent_trunc+0x4a>
{
12384: b410 push {r4}
uint8_t * e_data = &e->first_data;
12386: 1d02 adds r2, r0, #4
lv_mem_ent_t * after_new_e = (lv_mem_ent_t *)&e_data[size];
after_new_e->header.s.used = 0;
12388: 5c53 ldrb r3, [r2, r1]
1238a: f36f 0300 bfc r3, #0, #1
1238e: 5453 strb r3, [r2, r1]
after_new_e->header.s.d_size = (uint32_t)e->header.s.d_size - size - sizeof(lv_mem_header_t);
12390: 6803 ldr r3, [r0, #0]
12392: f3c3 035e ubfx r3, r3, #1, #31
12396: 3b04 subs r3, #4
12398: 1a5b subs r3, r3, r1
1239a: 5854 ldr r4, [r2, r1]
1239c: f363 045f bfi r4, r3, #1, #31
123a0: 5054 str r4, [r2, r1]
}
/* Set the new size for the original entry */
e->header.s.d_size = (uint32_t)size;
123a2: 6803 ldr r3, [r0, #0]
123a4: f361 035f bfi r3, r1, #1, #31
123a8: 6003 str r3, [r0, #0]
}
123aa: f85d 4b04 ldr.w r4, [sp], #4
123ae: 4770 bx lr
size = e->header.s.d_size;
123b0: 4611 mov r1, r2
e->header.s.d_size = (uint32_t)size;
123b2: 6803 ldr r3, [r0, #0]
123b4: f361 035f bfi r3, r1, #1, #31
123b8: 6003 str r3, [r0, #0]
123ba: 4770 bx lr
000123bc <_lv_mem_init>:
work_mem = (uint8_t *)work_mem_int;
123bc: 4b06 ldr r3, [pc, #24] ; (123d8 <_lv_mem_init+0x1c>)
123be: 1d1a adds r2, r3, #4
123c0: 601a str r2, [r3, #0]
full->header.s.used = 0;
123c2: 791a ldrb r2, [r3, #4]
123c4: f36f 0200 bfc r2, #0, #1
123c8: 711a strb r2, [r3, #4]
full->header.s.d_size = LV_MEM_SIZE - sizeof(lv_mem_header_t);
123ca: 685a ldr r2, [r3, #4]
123cc: f643 71fc movw r1, #16380 ; 0x3ffc
123d0: f361 025f bfi r2, r1, #1, #31
123d4: 605a str r2, [r3, #4]
123d6: 4770 bx lr
123d8: 20002b8c .word 0x20002b8c
000123dc <lv_mem_alloc>:
if(size == 0) {
123dc: 2800 cmp r0, #0
123de: d02e beq.n 1243e <lv_mem_alloc+0x62>
{
123e0: b5f0 push {r4, r5, r6, r7, lr}
123e2: b083 sub sp, #12
123e4: 4605 mov r5, r0
if(size & 0x3) {
123e6: f010 0f03 tst.w r0, #3
size = size & (~0x3);
123ea: bf1c itt ne
123ec: f020 0503 bicne.w r5, r0, #3
size += 4;
123f0: 3504 addne r5, #4
lv_mem_ent_t * e = NULL;
123f2: 2400 movs r4, #0
e = ent_get_next(e);
123f4: 4e13 ldr r6, [pc, #76] ; (12444 <lv_mem_alloc+0x68>)
ent_trunc(e, size);
123f6: 4f14 ldr r7, [pc, #80] ; (12448 <lv_mem_alloc+0x6c>)
123f8: e008 b.n 1240c <lv_mem_alloc+0x30>
123fa: 4629 mov r1, r5
123fc: 47b8 blx r7
e->header.s.used = 1;
123fe: 7823 ldrb r3, [r4, #0]
12400: f043 0301 orr.w r3, r3, #1
12404: 4620 mov r0, r4
12406: f800 3b04 strb.w r3, [r0], #4
} while(e != NULL && alloc == NULL);
1240a: b9b0 cbnz r0, 1243a <lv_mem_alloc+0x5e>
e = ent_get_next(e);
1240c: 4620 mov r0, r4
1240e: 47b0 blx r6
if(e != NULL) {
12410: 4604 mov r4, r0
12412: b148 cbz r0, 12428 <lv_mem_alloc+0x4c>
if(e->header.s.used == 0 && e->header.s.d_size >= size) {
12414: 7803 ldrb r3, [r0, #0]
12416: f013 0f01 tst.w r3, #1
1241a: d1f7 bne.n 1240c <lv_mem_alloc+0x30>
1241c: 6803 ldr r3, [r0, #0]
1241e: f3c3 035e ubfx r3, r3, #1, #31
12422: 429d cmp r5, r3
12424: d9e9 bls.n 123fa <lv_mem_alloc+0x1e>
12426: e7f1 b.n 1240c <lv_mem_alloc+0x30>
if(alloc == NULL) LV_LOG_WARN("Couldn't allocate memory");
12428: 4b08 ldr r3, [pc, #32] ; (1244c <lv_mem_alloc+0x70>)
1242a: 9300 str r3, [sp, #0]
1242c: 4b08 ldr r3, [pc, #32] ; (12450 <lv_mem_alloc+0x74>)
1242e: 22d1 movs r2, #209 ; 0xd1
12430: 4908 ldr r1, [pc, #32] ; (12454 <lv_mem_alloc+0x78>)
12432: 2002 movs r0, #2
12434: 4c08 ldr r4, [pc, #32] ; (12458 <lv_mem_alloc+0x7c>)
12436: 47a0 blx r4
return alloc;
12438: 2000 movs r0, #0
}
1243a: b003 add sp, #12
1243c: bdf0 pop {r4, r5, r6, r7, pc}
return &zero_mem;
1243e: 4807 ldr r0, [pc, #28] ; (1245c <lv_mem_alloc+0x80>)
12440: 4770 bx lr
12442: bf00 nop
12444: 00012341 .word 0x00012341
12448: 00012369 .word 0x00012369
1244c: 000293c0 .word 0x000293c0
12450: 00029354 .word 0x00029354
12454: 00029398 .word 0x00029398
12458: 0001225d .word 0x0001225d
1245c: 20006b90 .word 0x20006b90
00012460 <lv_mem_defrag>:
{
12460: b538 push {r3, r4, r5, lr}
e_free = ent_get_next(NULL);
12462: 2000 movs r0, #0
12464: 4b16 ldr r3, [pc, #88] ; (124c0 <lv_mem_defrag+0x60>)
12466: 4798 blx r3
12468: 4604 mov r4, r0
e_next = ent_get_next(e_free);
1246a: 4d15 ldr r5, [pc, #84] ; (124c0 <lv_mem_defrag+0x60>)
1246c: e01b b.n 124a6 <lv_mem_defrag+0x46>
1246e: bd38 pop {r3, r4, r5, pc}
12470: 4620 mov r0, r4
12472: 47a8 blx r5
while(e_next != NULL) {
12474: 4601 mov r1, r0
12476: b308 cbz r0, 124bc <lv_mem_defrag+0x5c>
if(e_next->header.s.used == 0) {
12478: 7803 ldrb r3, [r0, #0]
1247a: f013 0f01 tst.w r3, #1
1247e: d111 bne.n 124a4 <lv_mem_defrag+0x44>
e_free->header.s.d_size += e_next->header.s.d_size + sizeof(e_next->header);
12480: 6823 ldr r3, [r4, #0]
12482: f3c3 025e ubfx r2, r3, #1, #31
12486: 3204 adds r2, #4
12488: 6808 ldr r0, [r1, #0]
1248a: eb02 0250 add.w r2, r2, r0, lsr #1
1248e: f362 035f bfi r3, r2, #1, #31
12492: 6023 str r3, [r4, #0]
e_next = ent_get_next(e_next);
12494: 4608 mov r0, r1
12496: 47a8 blx r5
while(e_next != NULL) {
12498: 4601 mov r1, r0
1249a: b170 cbz r0, 124ba <lv_mem_defrag+0x5a>
if(e_next->header.s.used == 0) {
1249c: 780b ldrb r3, [r1, #0]
1249e: f013 0f01 tst.w r3, #1
124a2: d0ed beq.n 12480 <lv_mem_defrag+0x20>
{
124a4: 460c mov r4, r1
while(e_free != NULL) {
124a6: 2c00 cmp r4, #0
124a8: d0e1 beq.n 1246e <lv_mem_defrag+0xe>
if(e_free->header.s.used != 0) {
124aa: 7823 ldrb r3, [r4, #0]
124ac: f013 0f01 tst.w r3, #1
124b0: d0de beq.n 12470 <lv_mem_defrag+0x10>
e_free = ent_get_next(e_free);
124b2: 4620 mov r0, r4
124b4: 47a8 blx r5
124b6: 4604 mov r4, r0
124b8: e7f5 b.n 124a6 <lv_mem_defrag+0x46>
124ba: bd38 pop {r3, r4, r5, pc}
124bc: bd38 pop {r3, r4, r5, pc}
124be: bf00 nop
124c0: 00012341 .word 0x00012341
000124c4 <lv_mem_free>:
{
124c4: b538 push {r3, r4, r5, lr}
if(data == &zero_mem) return;
124c6: 4b1e ldr r3, [pc, #120] ; (12540 <lv_mem_free+0x7c>)
124c8: 4298 cmp r0, r3
124ca: d038 beq.n 1253e <lv_mem_free+0x7a>
if(data == NULL) return;
124cc: 2800 cmp r0, #0
124ce: d036 beq.n 1253e <lv_mem_free+0x7a>
124d0: 4604 mov r4, r0
e->header.s.used = 0;
124d2: f810 3c04 ldrb.w r3, [r0, #-4]
124d6: f36f 0300 bfc r3, #0, #1
124da: f800 3c04 strb.w r3, [r0, #-4]
full_defrag_cnt++;
124de: 4a19 ldr r2, [pc, #100] ; (12544 <lv_mem_free+0x80>)
124e0: f8b2 3d20 ldrh.w r3, [r2, #3360] ; 0xd20
124e4: 3301 adds r3, #1
124e6: b29b uxth r3, r3
124e8: f8a2 3d20 strh.w r3, [r2, #3360] ; 0xd20
if(full_defrag_cnt < LV_MEM_FULL_DEFRAG_CNT) {
124ec: 2b0f cmp r3, #15
124ee: d820 bhi.n 12532 <lv_mem_free+0x6e>
e_next = ent_get_next(e);
124f0: 3804 subs r0, #4
124f2: 4b15 ldr r3, [pc, #84] ; (12548 <lv_mem_free+0x84>)
124f4: 4798 blx r3
while(e_next != NULL) {
124f6: 4601 mov r1, r0
124f8: b308 cbz r0, 1253e <lv_mem_free+0x7a>
if(e_next->header.s.used == 0) {
124fa: 7803 ldrb r3, [r0, #0]
124fc: f013 0f01 tst.w r3, #1
12500: d115 bne.n 1252e <lv_mem_free+0x6a>
e_next = ent_get_next(e_next);
12502: 4d11 ldr r5, [pc, #68] ; (12548 <lv_mem_free+0x84>)
e->header.s.d_size += e_next->header.s.d_size + sizeof(e->header);
12504: f854 3c04 ldr.w r3, [r4, #-4]
12508: f3c3 025e ubfx r2, r3, #1, #31
1250c: 3204 adds r2, #4
1250e: 6808 ldr r0, [r1, #0]
12510: eb02 0250 add.w r2, r2, r0, lsr #1
12514: f362 035f bfi r3, r2, #1, #31
12518: f844 3c04 str.w r3, [r4, #-4]
e_next = ent_get_next(e_next);
1251c: 4608 mov r0, r1
1251e: 47a8 blx r5
while(e_next != NULL) {
12520: 4601 mov r1, r0
12522: b128 cbz r0, 12530 <lv_mem_free+0x6c>
if(e_next->header.s.used == 0) {
12524: 780b ldrb r3, [r1, #0]
12526: f013 0f01 tst.w r3, #1
1252a: d0eb beq.n 12504 <lv_mem_free+0x40>
1252c: bd38 pop {r3, r4, r5, pc}
1252e: bd38 pop {r3, r4, r5, pc}
12530: bd38 pop {r3, r4, r5, pc}
full_defrag_cnt = 0;
12532: 2200 movs r2, #0
12534: 4b03 ldr r3, [pc, #12] ; (12544 <lv_mem_free+0x80>)
12536: f8a3 2d20 strh.w r2, [r3, #3360] ; 0xd20
lv_mem_defrag();
1253a: 4b04 ldr r3, [pc, #16] ; (1254c <lv_mem_free+0x88>)
1253c: 4798 blx r3
1253e: bd38 pop {r3, r4, r5, pc}
12540: 20006b90 .word 0x20006b90
12544: 20005e74 .word 0x20005e74
12548: 00012341 .word 0x00012341
1254c: 00012461 .word 0x00012461
00012550 <_lv_mem_get_size>:
if(data == NULL) return 0;
12550: b138 cbz r0, 12562 <_lv_mem_get_size+0x12>
if(data == &zero_mem) return 0;
12552: 4a06 ldr r2, [pc, #24] ; (1256c <_lv_mem_get_size+0x1c>)
12554: 4290 cmp r0, r2
12556: d006 beq.n 12566 <_lv_mem_get_size+0x16>
return e->header.s.d_size;
12558: f850 0c04 ldr.w r0, [r0, #-4]
1255c: f3c0 005e ubfx r0, r0, #1, #31
12560: 4770 bx lr
if(data == NULL) return 0;
12562: 2000 movs r0, #0
12564: 4770 bx lr
if(data == &zero_mem) return 0;
12566: 2000 movs r0, #0
}
12568: 4770 bx lr
1256a: bf00 nop
1256c: 20006b90 .word 0x20006b90
00012570 <_lv_mem_buf_release>:
if(mem_buf_small[i].p == p) {
12570: 4b1b ldr r3, [pc, #108] ; (125e0 <_lv_mem_buf_release+0x70>)
12572: 681b ldr r3, [r3, #0]
12574: 4298 cmp r0, r3
12576: d020 beq.n 125ba <_lv_mem_buf_release+0x4a>
12578: 4b19 ldr r3, [pc, #100] ; (125e0 <_lv_mem_buf_release+0x70>)
1257a: 689b ldr r3, [r3, #8]
1257c: 4283 cmp r3, r0
1257e: bf08 it eq
12580: 2201 moveq r2, #1
12582: d01b beq.n 125bc <_lv_mem_buf_release+0x4c>
{
12584: b510 push {r4, lr}
12586: b082 sub sp, #8
if(LV_GC_ROOT(_lv_mem_buf[i]).p == p) {
12588: 4b16 ldr r3, [pc, #88] ; (125e4 <_lv_mem_buf_release+0x74>)
1258a: 681b ldr r3, [r3, #0]
1258c: 4298 cmp r0, r3
1258e: d01d beq.n 125cc <_lv_mem_buf_release+0x5c>
12590: 2301 movs r3, #1
12592: 4914 ldr r1, [pc, #80] ; (125e4 <_lv_mem_buf_release+0x74>)
12594: 461c mov r4, r3
12596: f851 2033 ldr.w r2, [r1, r3, lsl #3]
1259a: 4290 cmp r0, r2
1259c: d017 beq.n 125ce <_lv_mem_buf_release+0x5e>
1259e: 3301 adds r3, #1
for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) {
125a0: 2b10 cmp r3, #16
125a2: d1f7 bne.n 12594 <_lv_mem_buf_release+0x24>
LV_LOG_ERROR("lv_mem_buf_release: p is not a known buffer")
125a4: 4b10 ldr r3, [pc, #64] ; (125e8 <_lv_mem_buf_release+0x78>)
125a6: 9300 str r3, [sp, #0]
125a8: 4b10 ldr r3, [pc, #64] ; (125ec <_lv_mem_buf_release+0x7c>)
125aa: f240 2232 movw r2, #562 ; 0x232
125ae: 4910 ldr r1, [pc, #64] ; (125f0 <_lv_mem_buf_release+0x80>)
125b0: 2003 movs r0, #3
125b2: 4c10 ldr r4, [pc, #64] ; (125f4 <_lv_mem_buf_release+0x84>)
125b4: 47a0 blx r4
}
125b6: b002 add sp, #8
125b8: bd10 pop {r4, pc}
if(mem_buf_small[i].p == p) {
125ba: 2200 movs r2, #0
mem_buf_small[i].used = 0;
125bc: 4b08 ldr r3, [pc, #32] ; (125e0 <_lv_mem_buf_release+0x70>)
125be: eb03 03c2 add.w r3, r3, r2, lsl #3
125c2: 799a ldrb r2, [r3, #6]
125c4: f36f 0200 bfc r2, #0, #1
125c8: 719a strb r2, [r3, #6]
return;
125ca: 4770 bx lr
if(LV_GC_ROOT(_lv_mem_buf[i]).p == p) {
125cc: 2400 movs r4, #0
LV_GC_ROOT(_lv_mem_buf[i]).used = 0;
125ce: 4b05 ldr r3, [pc, #20] ; (125e4 <_lv_mem_buf_release+0x74>)
125d0: eb03 04c4 add.w r4, r3, r4, lsl #3
125d4: 79a3 ldrb r3, [r4, #6]
125d6: f36f 0300 bfc r3, #0, #1
125da: 71a3 strb r3, [r4, #6]
return;
125dc: e7eb b.n 125b6 <_lv_mem_buf_release+0x46>
125de: bf00 nop
125e0: 20000044 .word 0x20000044
125e4: 20006cb0 .word 0x20006cb0
125e8: 000293dc .word 0x000293dc
125ec: 00029364 .word 0x00029364
125f0: 00029398 .word 0x00029398
125f4: 0001225d .word 0x0001225d
000125f8 <_lv_mem_buf_free_all>:
{
125f8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
mem_buf_small[i].used = 0;
125fc: 4b12 ldr r3, [pc, #72] ; (12648 <_lv_mem_buf_free_all+0x50>)
125fe: 799a ldrb r2, [r3, #6]
12600: f36f 0200 bfc r2, #0, #1
12604: 719a strb r2, [r3, #6]
12606: 7b9a ldrb r2, [r3, #14]
12608: f36f 0200 bfc r2, #0, #1
1260c: 739a strb r2, [r3, #14]
1260e: 4c0f ldr r4, [pc, #60] ; (1264c <_lv_mem_buf_free_all+0x54>)
12610: 2500 movs r5, #0
lv_mem_free(LV_GC_ROOT(_lv_mem_buf[i]).p);
12612: f8df 803c ldr.w r8, [pc, #60] ; 12650 <_lv_mem_buf_free_all+0x58>
LV_GC_ROOT(_lv_mem_buf[i]).p = NULL;
12616: 462e mov r6, r5
LV_GC_ROOT(_lv_mem_buf[i]).used = 0;
12618: 1f27 subs r7, r4, #4
1261a: e003 b.n 12624 <_lv_mem_buf_free_all+0x2c>
1261c: 3501 adds r5, #1
1261e: 3408 adds r4, #8
for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) {
12620: 2d10 cmp r5, #16
12622: d00e beq.n 12642 <_lv_mem_buf_free_all+0x4a>
if(LV_GC_ROOT(_lv_mem_buf[i]).p) {
12624: f854 0c04 ldr.w r0, [r4, #-4]
12628: 2800 cmp r0, #0
1262a: d0f7 beq.n 1261c <_lv_mem_buf_free_all+0x24>
lv_mem_free(LV_GC_ROOT(_lv_mem_buf[i]).p);
1262c: 47c0 blx r8
LV_GC_ROOT(_lv_mem_buf[i]).p = NULL;
1262e: f844 6c04 str.w r6, [r4, #-4]
LV_GC_ROOT(_lv_mem_buf[i]).used = 0;
12632: eb07 03c5 add.w r3, r7, r5, lsl #3
12636: 799a ldrb r2, [r3, #6]
12638: f366 0200 bfi r2, r6, #0, #1
1263c: 719a strb r2, [r3, #6]
LV_GC_ROOT(_lv_mem_buf[i]).size = 0;
1263e: 8026 strh r6, [r4, #0]
12640: e7ec b.n 1261c <_lv_mem_buf_free_all+0x24>
}
12642: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
12646: bf00 nop
12648: 20000044 .word 0x20000044
1264c: 20006cb4 .word 0x20006cb4
12650: 000124c5 .word 0x000124c5
00012654 <_lv_memcpy>:
{
12654: b4f0 push {r4, r5, r6, r7}
lv_uintptr_t d_align = (lv_uintptr_t)d8 & ALIGN_MASK;
12656: f000 0303 and.w r3, r0, #3
lv_uintptr_t s_align = (lv_uintptr_t)s8 & ALIGN_MASK;
1265a: f001 0403 and.w r4, r1, #3
if(s_align != d_align) {
1265e: 42a3 cmp r3, r4
12660: f000 80a6 beq.w 127b0 <_lv_memcpy+0x15c>
while(len > 32) {
12664: 2a20 cmp r2, #32
12666: f240 80a1 bls.w 127ac <_lv_memcpy+0x158>
1266a: f100 0420 add.w r4, r0, #32
1266e: f101 0320 add.w r3, r1, #32
12672: 4615 mov r5, r2
REPEAT8(COPY8);
12674: f813 6c20 ldrb.w r6, [r3, #-32]
12678: f804 6c20 strb.w r6, [r4, #-32]
1267c: f813 6c1f ldrb.w r6, [r3, #-31]
12680: f804 6c1f strb.w r6, [r4, #-31]
12684: f813 6c1e ldrb.w r6, [r3, #-30]
12688: f804 6c1e strb.w r6, [r4, #-30]
1268c: f813 6c1d ldrb.w r6, [r3, #-29]
12690: f804 6c1d strb.w r6, [r4, #-29]
12694: f813 6c1c ldrb.w r6, [r3, #-28]
12698: f804 6c1c strb.w r6, [r4, #-28]
1269c: f813 6c1b ldrb.w r6, [r3, #-27]
126a0: f804 6c1b strb.w r6, [r4, #-27]
126a4: f813 6c1a ldrb.w r6, [r3, #-26]
126a8: f804 6c1a strb.w r6, [r4, #-26]
126ac: f813 6c19 ldrb.w r6, [r3, #-25]
126b0: f804 6c19 strb.w r6, [r4, #-25]
REPEAT8(COPY8);
126b4: f813 6c18 ldrb.w r6, [r3, #-24]
126b8: f804 6c18 strb.w r6, [r4, #-24]
126bc: f813 6c17 ldrb.w r6, [r3, #-23]
126c0: f804 6c17 strb.w r6, [r4, #-23]
126c4: f813 6c16 ldrb.w r6, [r3, #-22]
126c8: f804 6c16 strb.w r6, [r4, #-22]
126cc: f813 6c15 ldrb.w r6, [r3, #-21]
126d0: f804 6c15 strb.w r6, [r4, #-21]
126d4: f813 6c14 ldrb.w r6, [r3, #-20]
126d8: f804 6c14 strb.w r6, [r4, #-20]
126dc: f813 6c13 ldrb.w r6, [r3, #-19]
126e0: f804 6c13 strb.w r6, [r4, #-19]
126e4: f813 6c12 ldrb.w r6, [r3, #-18]
126e8: f804 6c12 strb.w r6, [r4, #-18]
126ec: f813 6c11 ldrb.w r6, [r3, #-17]
126f0: f804 6c11 strb.w r6, [r4, #-17]
REPEAT8(COPY8);
126f4: f813 6c10 ldrb.w r6, [r3, #-16]
126f8: f804 6c10 strb.w r6, [r4, #-16]
126fc: f813 6c0f ldrb.w r6, [r3, #-15]
12700: f804 6c0f strb.w r6, [r4, #-15]
12704: f813 6c0e ldrb.w r6, [r3, #-14]
12708: f804 6c0e strb.w r6, [r4, #-14]
1270c: f813 6c0d ldrb.w r6, [r3, #-13]
12710: f804 6c0d strb.w r6, [r4, #-13]
12714: f813 6c0c ldrb.w r6, [r3, #-12]
12718: f804 6c0c strb.w r6, [r4, #-12]
1271c: f813 6c0b ldrb.w r6, [r3, #-11]
12720: f804 6c0b strb.w r6, [r4, #-11]
12724: f813 6c0a ldrb.w r6, [r3, #-10]
12728: f804 6c0a strb.w r6, [r4, #-10]
1272c: f813 6c09 ldrb.w r6, [r3, #-9]
12730: f804 6c09 strb.w r6, [r4, #-9]
REPEAT8(COPY8);
12734: f813 6c08 ldrb.w r6, [r3, #-8]
12738: f804 6c08 strb.w r6, [r4, #-8]
1273c: f813 6c07 ldrb.w r6, [r3, #-7]
12740: f804 6c07 strb.w r6, [r4, #-7]
12744: f813 6c06 ldrb.w r6, [r3, #-6]
12748: f804 6c06 strb.w r6, [r4, #-6]
1274c: f813 6c05 ldrb.w r6, [r3, #-5]
12750: f804 6c05 strb.w r6, [r4, #-5]
12754: f813 6c04 ldrb.w r6, [r3, #-4]
12758: f804 6c04 strb.w r6, [r4, #-4]
1275c: f813 6c03 ldrb.w r6, [r3, #-3]
12760: f804 6c03 strb.w r6, [r4, #-3]
12764: f813 6c02 ldrb.w r6, [r3, #-2]
12768: f804 6c02 strb.w r6, [r4, #-2]
1276c: f813 6c01 ldrb.w r6, [r3, #-1]
12770: f804 6c01 strb.w r6, [r4, #-1]
len -= 32;
12774: 3d20 subs r5, #32
12776: 3420 adds r4, #32
12778: 3320 adds r3, #32
while(len > 32) {
1277a: 2d20 cmp r5, #32
1277c: f63f af7a bhi.w 12674 <_lv_memcpy+0x20>
12780: f1a2 0521 sub.w r5, r2, #33 ; 0x21
12784: f025 041f bic.w r4, r5, #31
12788: 3420 adds r4, #32
1278a: 1903 adds r3, r0, r4
1278c: 4421 add r1, r4
1278e: 3a20 subs r2, #32
12790: f025 051f bic.w r5, r5, #31
12794: 1b52 subs r2, r2, r5
while(len) {
12796: b13a cbz r2, 127a8 <_lv_memcpy+0x154>
12798: 3901 subs r1, #1
1279a: 441a add r2, r3
COPY8
1279c: f811 4f01 ldrb.w r4, [r1, #1]!
127a0: f803 4b01 strb.w r4, [r3], #1
while(len) {
127a4: 429a cmp r2, r3
127a6: d1f9 bne.n 1279c <_lv_memcpy+0x148>
}
127a8: bcf0 pop {r4, r5, r6, r7}
127aa: 4770 bx lr
while(len > 32) {
127ac: 4603 mov r3, r0
127ae: e7f2 b.n 12796 <_lv_memcpy+0x142>
if(d_align) {
127b0: 2b00 cmp r3, #0
127b2: d15b bne.n 1286c <_lv_memcpy+0x218>
uint8_t * d8 = dst;
127b4: 4605 mov r5, r0
while(len > 32) {
127b6: 2a20 cmp r2, #32
127b8: d934 bls.n 12824 <_lv_memcpy+0x1d0>
127ba: f105 0420 add.w r4, r5, #32
127be: f101 0320 add.w r3, r1, #32
127c2: 4616 mov r6, r2
REPEAT8(COPY32)
127c4: f853 7c20 ldr.w r7, [r3, #-32]
127c8: f844 7c20 str.w r7, [r4, #-32]
127cc: f853 7c1c ldr.w r7, [r3, #-28]
127d0: f844 7c1c str.w r7, [r4, #-28]
127d4: f853 7c18 ldr.w r7, [r3, #-24]
127d8: f844 7c18 str.w r7, [r4, #-24]
127dc: f853 7c14 ldr.w r7, [r3, #-20]
127e0: f844 7c14 str.w r7, [r4, #-20]
127e4: f853 7c10 ldr.w r7, [r3, #-16]
127e8: f844 7c10 str.w r7, [r4, #-16]
127ec: f853 7c0c ldr.w r7, [r3, #-12]
127f0: f844 7c0c str.w r7, [r4, #-12]
127f4: f853 7c08 ldr.w r7, [r3, #-8]
127f8: f844 7c08 str.w r7, [r4, #-8]
127fc: f853 7c04 ldr.w r7, [r3, #-4]
12800: f844 7c04 str.w r7, [r4, #-4]
len -= 32;
12804: 3e20 subs r6, #32
12806: 3420 adds r4, #32
12808: 3320 adds r3, #32
while(len > 32) {
1280a: 2e20 cmp r6, #32
1280c: d8da bhi.n 127c4 <_lv_memcpy+0x170>
1280e: f1a2 0321 sub.w r3, r2, #33 ; 0x21
12812: f023 041f bic.w r4, r3, #31
12816: 3420 adds r4, #32
12818: 4425 add r5, r4
1281a: 4421 add r1, r4
1281c: 3a20 subs r2, #32
1281e: f023 031f bic.w r3, r3, #31
12822: 1ad2 subs r2, r2, r3
while(len > 4) {
12824: 2a04 cmp r2, #4
12826: d932 bls.n 1288e <_lv_memcpy+0x23a>
12828: 1f0e subs r6, r1, #4
1282a: 462c mov r4, r5
1282c: 4613 mov r3, r2
COPY32;
1282e: f856 7f04 ldr.w r7, [r6, #4]!
12832: f844 7b04 str.w r7, [r4], #4
len -= 4;
12836: 3b04 subs r3, #4
while(len > 4) {
12838: 2b04 cmp r3, #4
1283a: d8f8 bhi.n 1282e <_lv_memcpy+0x1da>
1283c: 1f54 subs r4, r2, #5
1283e: f024 0303 bic.w r3, r4, #3
12842: 3304 adds r3, #4
12844: 3a04 subs r2, #4
12846: f024 0403 bic.w r4, r4, #3
1284a: 1b12 subs r2, r2, r4
COPY32;
1284c: 4419 add r1, r3
1284e: 442b add r3, r5
while(len) {
12850: 2a00 cmp r2, #0
12852: d0a9 beq.n 127a8 <_lv_memcpy+0x154>
12854: 3901 subs r1, #1
12856: 441a add r2, r3
COPY8
12858: f811 4f01 ldrb.w r4, [r1, #1]!
1285c: f803 4b01 strb.w r4, [r3], #1
while(len) {
12860: 4293 cmp r3, r2
12862: d1f9 bne.n 12858 <_lv_memcpy+0x204>
12864: e7a0 b.n 127a8 <_lv_memcpy+0x154>
COPY8;
12866: 4629 mov r1, r5
12868: 461d mov r5, r3
1286a: e7a4 b.n 127b6 <_lv_memcpy+0x162>
while(d_align && len) {
1286c: f1c3 0304 rsb r3, r3, #4
12870: b17a cbz r2, 12892 <_lv_memcpy+0x23e>
12872: 18c4 adds r4, r0, r3
12874: 4603 mov r3, r0
COPY8;
12876: f811 5b01 ldrb.w r5, [r1], #1
1287a: f803 5b01 strb.w r5, [r3], #1
1287e: 460d mov r5, r1
len--;
12880: 3a01 subs r2, #1
while(d_align && len) {
12882: 42a3 cmp r3, r4
12884: d0ef beq.n 12866 <_lv_memcpy+0x212>
12886: 2a00 cmp r2, #0
12888: d1f5 bne.n 12876 <_lv_memcpy+0x222>
while(len > 4) {
1288a: 2200 movs r2, #0
1288c: e7e0 b.n 12850 <_lv_memcpy+0x1fc>
1288e: 462b mov r3, r5
12890: e7de b.n 12850 <_lv_memcpy+0x1fc>
uint8_t * d8 = dst;
12892: 4603 mov r3, r0
12894: e7f9 b.n 1288a <_lv_memcpy+0x236>
...
00012898 <lv_mem_realloc>:
{
12898: b5f0 push {r4, r5, r6, r7, lr}
1289a: b083 sub sp, #12
1289c: 4604 mov r4, r0
1289e: 460d mov r5, r1
if(new_size & 0x3) {
128a0: f011 0f03 tst.w r1, #3
new_size = new_size & (~0x3);
128a4: bf1c itt ne
128a6: f021 0503 bicne.w r5, r1, #3
new_size += 4;
128aa: 3504 addne r5, #4
if(data_p != NULL) {
128ac: b138 cbz r0, 128be <lv_mem_realloc+0x26>
if(e->header.s.used == 0) {
128ae: f810 3c04 ldrb.w r3, [r0, #-4]
128b2: f003 0301 and.w r3, r3, #1
data_p = NULL;
128b6: 2b00 cmp r3, #0
128b8: bf14 ite ne
128ba: 4604 movne r4, r0
128bc: 2400 moveq r4, #0
uint32_t old_size = _lv_mem_get_size(data_p);
128be: 4620 mov r0, r4
128c0: 4b15 ldr r3, [pc, #84] ; (12918 <lv_mem_realloc+0x80>)
128c2: 4798 blx r3
128c4: 4606 mov r6, r0
if(old_size == new_size) return data_p; /*Also avoid reallocating the same memory*/
128c6: 4285 cmp r5, r0
128c8: d024 beq.n 12914 <lv_mem_realloc+0x7c>
if(new_size < old_size) {
128ca: d311 bcc.n 128f0 <lv_mem_realloc+0x58>
new_p = lv_mem_alloc(new_size);
128cc: 4628 mov r0, r5
128ce: 4b13 ldr r3, [pc, #76] ; (1291c <lv_mem_realloc+0x84>)
128d0: 4798 blx r3
if(new_p == NULL) {
128d2: 4607 mov r7, r0
128d4: b1a0 cbz r0, 12900 <lv_mem_realloc+0x68>
if(data_p != NULL) {
128d6: b184 cbz r4, 128fa <lv_mem_realloc+0x62>
if(old_size != 0) {
128d8: b17e cbz r6, 128fa <lv_mem_realloc+0x62>
_lv_memcpy(new_p, data_p, LV_MATH_MIN(new_size, old_size));
128da: 462a mov r2, r5
128dc: 42b5 cmp r5, r6
128de: bf28 it cs
128e0: 4632 movcs r2, r6
128e2: 4621 mov r1, r4
128e4: 4b0e ldr r3, [pc, #56] ; (12920 <lv_mem_realloc+0x88>)
128e6: 4798 blx r3
lv_mem_free(data_p);
128e8: 4620 mov r0, r4
128ea: 4b0e ldr r3, [pc, #56] ; (12924 <lv_mem_realloc+0x8c>)
128ec: 4798 blx r3
128ee: e004 b.n 128fa <lv_mem_realloc+0x62>
ent_trunc(e, new_size);
128f0: 4629 mov r1, r5
128f2: 1f20 subs r0, r4, #4
128f4: 4b0c ldr r3, [pc, #48] ; (12928 <lv_mem_realloc+0x90>)
128f6: 4798 blx r3
return &e->first_data;
128f8: 4627 mov r7, r4
}
128fa: 4638 mov r0, r7
128fc: b003 add sp, #12
128fe: bdf0 pop {r4, r5, r6, r7, pc}
LV_LOG_WARN("Couldn't allocate memory");
12900: 4b0a ldr r3, [pc, #40] ; (1292c <lv_mem_realloc+0x94>)
12902: 9300 str r3, [sp, #0]
12904: 4b0a ldr r3, [pc, #40] ; (12930 <lv_mem_realloc+0x98>)
12906: f240 123f movw r2, #319 ; 0x13f
1290a: 490a ldr r1, [pc, #40] ; (12934 <lv_mem_realloc+0x9c>)
1290c: 2002 movs r0, #2
1290e: 4c0a ldr r4, [pc, #40] ; (12938 <lv_mem_realloc+0xa0>)
12910: 47a0 blx r4
return NULL;
12912: e7f2 b.n 128fa <lv_mem_realloc+0x62>
if(old_size == new_size) return data_p; /*Also avoid reallocating the same memory*/
12914: 4627 mov r7, r4
12916: e7f0 b.n 128fa <lv_mem_realloc+0x62>
12918: 00012551 .word 0x00012551
1291c: 000123dd .word 0x000123dd
12920: 00012655 .word 0x00012655
12924: 000124c5 .word 0x000124c5
12928: 00012369 .word 0x00012369
1292c: 000293c0 .word 0x000293c0
12930: 00029378 .word 0x00029378
12934: 00029398 .word 0x00029398
12938: 0001225d .word 0x0001225d
0001293c <_lv_mem_buf_get>:
if(size == 0) return NULL;
1293c: 2800 cmp r0, #0
1293e: f000 808d beq.w 12a5c <_lv_mem_buf_get+0x120>
12942: 4601 mov r1, r0
if(size <= MEM_BUF_SMALL_SIZE) {
12944: 2810 cmp r0, #16
12946: d80b bhi.n 12960 <_lv_mem_buf_get+0x24>
if(mem_buf_small[i].used == 0) {
12948: 4b45 ldr r3, [pc, #276] ; (12a60 <_lv_mem_buf_get+0x124>)
1294a: 799b ldrb r3, [r3, #6]
1294c: f013 0f01 tst.w r3, #1
12950: d00e beq.n 12970 <_lv_mem_buf_get+0x34>
12952: 4b43 ldr r3, [pc, #268] ; (12a60 <_lv_mem_buf_get+0x124>)
12954: 7b9b ldrb r3, [r3, #14]
12956: f013 0f01 tst.w r3, #1
1295a: bf08 it eq
1295c: 2001 moveq r0, #1
1295e: d008 beq.n 12972 <_lv_mem_buf_get+0x36>
{
12960: b570 push {r4, r5, r6, lr}
12962: b082 sub sp, #8
12964: 4a3f ldr r2, [pc, #252] ; (12a64 <_lv_mem_buf_get+0x128>)
if(mem_buf_small[i].used == 0) {
12966: 2300 movs r3, #0
12968: f04f 36ff mov.w r6, #4294967295
if(LV_GC_ROOT(_lv_mem_buf[i]).used == 0 && LV_GC_ROOT(_lv_mem_buf[i]).size >= size) {
1296c: 4614 mov r4, r2
1296e: e019 b.n 129a4 <_lv_mem_buf_get+0x68>
if(mem_buf_small[i].used == 0) {
12970: 2000 movs r0, #0
mem_buf_small[i].used = 1;
12972: 4a3b ldr r2, [pc, #236] ; (12a60 <_lv_mem_buf_get+0x124>)
12974: eb02 01c0 add.w r1, r2, r0, lsl #3
12978: 798b ldrb r3, [r1, #6]
1297a: f043 0301 orr.w r3, r3, #1
1297e: 718b strb r3, [r1, #6]
return mem_buf_small[i].p;
12980: f852 0030 ldr.w r0, [r2, r0, lsl #3]
12984: 4770 bx lr
LV_GC_ROOT(_lv_mem_buf[i]).used = 1;
12986: 4a37 ldr r2, [pc, #220] ; (12a64 <_lv_mem_buf_get+0x128>)
12988: eb02 01c3 add.w r1, r2, r3, lsl #3
1298c: 798b ldrb r3, [r1, #6]
1298e: f043 0301 orr.w r3, r3, #1
12992: 718b strb r3, [r1, #6]
return LV_GC_ROOT(_lv_mem_buf[i]).p;
12994: f852 0035 ldr.w r0, [r2, r5, lsl #3]
12998: e023 b.n 129e2 <_lv_mem_buf_get+0xa6>
i_guess = i;
1299a: b25e sxtb r6, r3
1299c: 3301 adds r3, #1
1299e: 3208 adds r2, #8
for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) {
129a0: 2b10 cmp r3, #16
129a2: d013 beq.n 129cc <_lv_mem_buf_get+0x90>
if(LV_GC_ROOT(_lv_mem_buf[i]).used == 0 && LV_GC_ROOT(_lv_mem_buf[i]).size >= size) {
129a4: 461d mov r5, r3
129a6: eb04 00c3 add.w r0, r4, r3, lsl #3
129aa: 7980 ldrb r0, [r0, #6]
129ac: f010 0f01 tst.w r0, #1
129b0: d1f4 bne.n 1299c <_lv_mem_buf_get+0x60>
129b2: 8890 ldrh r0, [r2, #4]
129b4: 4281 cmp r1, r0
129b6: d8f1 bhi.n 1299c <_lv_mem_buf_get+0x60>
if(LV_GC_ROOT(_lv_mem_buf[i]).size == size) {
129b8: d0e5 beq.n 12986 <_lv_mem_buf_get+0x4a>
else if(i_guess < 0) {
129ba: 2e00 cmp r6, #0
129bc: dbed blt.n 1299a <_lv_mem_buf_get+0x5e>
else if(LV_GC_ROOT(_lv_mem_buf[i]).size < LV_GC_ROOT(_lv_mem_buf[i_guess]).size) {
129be: eb04 05c6 add.w r5, r4, r6, lsl #3
129c2: 88ad ldrh r5, [r5, #4]
129c4: 4285 cmp r5, r0
i_guess = i;
129c6: bf88 it hi
129c8: b25e sxtbhi r6, r3
129ca: e7e7 b.n 1299c <_lv_mem_buf_get+0x60>
if(i_guess >= 0) {
129cc: 2e00 cmp r6, #0
129ce: db0a blt.n 129e6 <_lv_mem_buf_get+0xaa>
LV_GC_ROOT(_lv_mem_buf[i_guess]).used = 1;
129d0: 4a24 ldr r2, [pc, #144] ; (12a64 <_lv_mem_buf_get+0x128>)
129d2: eb02 01c6 add.w r1, r2, r6, lsl #3
129d6: 798b ldrb r3, [r1, #6]
129d8: f043 0301 orr.w r3, r3, #1
129dc: 718b strb r3, [r1, #6]
return LV_GC_ROOT(_lv_mem_buf[i_guess]).p;
129de: f852 0036 ldr.w r0, [r2, r6, lsl #3]
}
129e2: b002 add sp, #8
129e4: bd70 pop {r4, r5, r6, pc}
if(LV_GC_ROOT(_lv_mem_buf[i]).used == 0) {
129e6: 4b1f ldr r3, [pc, #124] ; (12a64 <_lv_mem_buf_get+0x128>)
129e8: 799b ldrb r3, [r3, #6]
129ea: f013 0f01 tst.w r3, #1
129ee: bf08 it eq
129f0: 2400 moveq r4, #0
129f2: d016 beq.n 12a22 <_lv_mem_buf_get+0xe6>
129f4: 2301 movs r3, #1
129f6: 481b ldr r0, [pc, #108] ; (12a64 <_lv_mem_buf_get+0x128>)
129f8: 461c mov r4, r3
129fa: eb00 02c3 add.w r2, r0, r3, lsl #3
129fe: 7992 ldrb r2, [r2, #6]
12a00: f012 0f01 tst.w r2, #1
12a04: d00d beq.n 12a22 <_lv_mem_buf_get+0xe6>
12a06: 3301 adds r3, #1
for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) {
12a08: 2b10 cmp r3, #16
12a0a: d1f5 bne.n 129f8 <_lv_mem_buf_get+0xbc>
LV_LOG_ERROR("lv_mem_buf_get: no free buffer. Increase LV_DRAW_BUF_MAX_NUM.");
12a0c: 4b16 ldr r3, [pc, #88] ; (12a68 <_lv_mem_buf_get+0x12c>)
12a0e: 9300 str r3, [sp, #0]
12a10: 4b16 ldr r3, [pc, #88] ; (12a6c <_lv_mem_buf_get+0x130>)
12a12: f240 2216 movw r2, #534 ; 0x216
12a16: 4916 ldr r1, [pc, #88] ; (12a70 <_lv_mem_buf_get+0x134>)
12a18: 2003 movs r0, #3
12a1a: 4c16 ldr r4, [pc, #88] ; (12a74 <_lv_mem_buf_get+0x138>)
12a1c: 47a0 blx r4
return NULL;
12a1e: 2000 movs r0, #0
12a20: e7df b.n 129e2 <_lv_mem_buf_get+0xa6>
LV_GC_ROOT(_lv_mem_buf[i]).used = 1;
12a22: 4d10 ldr r5, [pc, #64] ; (12a64 <_lv_mem_buf_get+0x128>)
12a24: eb05 03c4 add.w r3, r5, r4, lsl #3
12a28: 799a ldrb r2, [r3, #6]
12a2a: f042 0201 orr.w r2, r2, #1
12a2e: 719a strb r2, [r3, #6]
LV_GC_ROOT(_lv_mem_buf[i]).size = size;
12a30: 8099 strh r1, [r3, #4]
LV_GC_ROOT(_lv_mem_buf[i]).p = lv_mem_realloc(LV_GC_ROOT(_lv_mem_buf[i]).p, size);
12a32: f855 0034 ldr.w r0, [r5, r4, lsl #3]
12a36: 4b10 ldr r3, [pc, #64] ; (12a78 <_lv_mem_buf_get+0x13c>)
12a38: 4798 blx r3
12a3a: f845 0034 str.w r0, [r5, r4, lsl #3]
if(LV_GC_ROOT(_lv_mem_buf[i]).p == NULL) {
12a3e: b118 cbz r0, 12a48 <_lv_mem_buf_get+0x10c>
return LV_GC_ROOT(_lv_mem_buf[i]).p;
12a40: 4b08 ldr r3, [pc, #32] ; (12a64 <_lv_mem_buf_get+0x128>)
12a42: f853 0034 ldr.w r0, [r3, r4, lsl #3]
12a46: e7cc b.n 129e2 <_lv_mem_buf_get+0xa6>
LV_LOG_ERROR("lv_mem_buf_get: Out of memory, can't allocate a new buffer (increase your LV_MEM_SIZE/heap size)")
12a48: 4b0c ldr r3, [pc, #48] ; (12a7c <_lv_mem_buf_get+0x140>)
12a4a: 9300 str r3, [sp, #0]
12a4c: 4b07 ldr r3, [pc, #28] ; (12a6c <_lv_mem_buf_get+0x130>)
12a4e: f44f 7204 mov.w r2, #528 ; 0x210
12a52: 4907 ldr r1, [pc, #28] ; (12a70 <_lv_mem_buf_get+0x134>)
12a54: 2003 movs r0, #3
12a56: 4d07 ldr r5, [pc, #28] ; (12a74 <_lv_mem_buf_get+0x138>)
12a58: 47a8 blx r5
12a5a: e7f1 b.n 12a40 <_lv_mem_buf_get+0x104>
if(size == 0) return NULL;
12a5c: 2000 movs r0, #0
12a5e: 4770 bx lr
12a60: 20000044 .word 0x20000044
12a64: 20006cb0 .word 0x20006cb0
12a68: 0002946c .word 0x0002946c
12a6c: 00029388 .word 0x00029388
12a70: 00029398 .word 0x00029398
12a74: 0001225d .word 0x0001225d
12a78: 00012899 .word 0x00012899
12a7c: 00029408 .word 0x00029408
00012a80 <_lv_memset>:
if(d_align) {
12a80: f010 0303 ands.w r3, r0, #3
12a84: d013 beq.n 12aae <_lv_memset+0x2e>
while(d_align && len) {
12a86: f1c3 0304 rsb r3, r3, #4
12a8a: b13a cbz r2, 12a9c <_lv_memset+0x1c>
12a8c: 4403 add r3, r0
*d8 = v;
12a8e: f800 1b01 strb.w r1, [r0], #1
len--;
12a92: 3a01 subs r2, #1
while(d_align && len) {
12a94: 4298 cmp r0, r3
12a96: d00a beq.n 12aae <_lv_memset+0x2e>
12a98: 2a00 cmp r2, #0
12a9a: d1f8 bne.n 12a8e <_lv_memset+0xe>
while(len > 4) {
12a9c: 2200 movs r2, #0
while(len) {
12a9e: 2a00 cmp r2, #0
12aa0: d048 beq.n 12b34 <_lv_memset+0xb4>
12aa2: 4402 add r2, r0
*d8 = v;
12aa4: f800 1b01 strb.w r1, [r0], #1
while(len) {
12aa8: 4290 cmp r0, r2
12aaa: d1fb bne.n 12aa4 <_lv_memset+0x24>
12aac: 4770 bx lr
{
12aae: b430 push {r4, r5}
uint32_t v32 = v + (v << 8) + (v << 16) + (v << 24);
12ab0: eb01 2401 add.w r4, r1, r1, lsl #8
12ab4: eb04 4401 add.w r4, r4, r1, lsl #16
12ab8: eb04 6401 add.w r4, r4, r1, lsl #24
while(len > 32) {
12abc: 2a20 cmp r2, #32
12abe: d920 bls.n 12b02 <_lv_memset+0x82>
12ac0: f100 0320 add.w r3, r0, #32
12ac4: 4615 mov r5, r2
SET32(v32);
12ac6: f843 4c20 str.w r4, [r3, #-32]
SET32(v32);
12aca: f843 4c1c str.w r4, [r3, #-28]
SET32(v32);
12ace: f843 4c18 str.w r4, [r3, #-24]
SET32(v32);
12ad2: f843 4c14 str.w r4, [r3, #-20]
SET32(v32);
12ad6: f843 4c10 str.w r4, [r3, #-16]
SET32(v32);
12ada: f843 4c0c str.w r4, [r3, #-12]
SET32(v32);
12ade: f843 4c08 str.w r4, [r3, #-8]
SET32(v32);
12ae2: f843 4c04 str.w r4, [r3, #-4]
len -= 32;
12ae6: 3d20 subs r5, #32
12ae8: 3320 adds r3, #32
while(len > 32) {
12aea: 2d20 cmp r5, #32
12aec: d8eb bhi.n 12ac6 <_lv_memset+0x46>
12aee: f1a2 0321 sub.w r3, r2, #33 ; 0x21
12af2: f023 051f bic.w r5, r3, #31
12af6: 3520 adds r5, #32
12af8: 4428 add r0, r5
12afa: 3a20 subs r2, #32
12afc: f023 031f bic.w r3, r3, #31
12b00: 1ad2 subs r2, r2, r3
while(len > 4) {
12b02: 2a04 cmp r2, #4
12b04: d90f bls.n 12b26 <_lv_memset+0xa6>
12b06: 4605 mov r5, r0
12b08: 4613 mov r3, r2
SET32(v32);
12b0a: f845 4b04 str.w r4, [r5], #4
len -= 4;
12b0e: 3b04 subs r3, #4
while(len > 4) {
12b10: 2b04 cmp r3, #4
12b12: d8fa bhi.n 12b0a <_lv_memset+0x8a>
12b14: 1f53 subs r3, r2, #5
12b16: f023 0403 bic.w r4, r3, #3
12b1a: 3404 adds r4, #4
12b1c: 3a04 subs r2, #4
12b1e: f023 0303 bic.w r3, r3, #3
12b22: 1ad2 subs r2, r2, r3
SET32(v32);
12b24: 4420 add r0, r4
while(len) {
12b26: b122 cbz r2, 12b32 <_lv_memset+0xb2>
12b28: 4402 add r2, r0
*d8 = v;
12b2a: f800 1b01 strb.w r1, [r0], #1
while(len) {
12b2e: 4290 cmp r0, r2
12b30: d1fb bne.n 12b2a <_lv_memset+0xaa>
}
12b32: bc30 pop {r4, r5}
12b34: 4770 bx lr
00012b36 <_lv_memset_00>:
if(d_align) {
12b36: f010 0303 ands.w r3, r0, #3
12b3a: d141 bne.n 12bc0 <_lv_memset_00+0x8a>
{
12b3c: b410 push {r4}
while(len > 32) {
12b3e: 2920 cmp r1, #32
12b40: d921 bls.n 12b86 <_lv_memset_00+0x50>
12b42: f100 0320 add.w r3, r0, #32
12b46: 460c mov r4, r1
SET32(0);
12b48: 2200 movs r2, #0
12b4a: f843 2c20 str.w r2, [r3, #-32]
SET32(0);
12b4e: f843 2c1c str.w r2, [r3, #-28]
SET32(0);
12b52: f843 2c18 str.w r2, [r3, #-24]
SET32(0);
12b56: f843 2c14 str.w r2, [r3, #-20]
SET32(0);
12b5a: f843 2c10 str.w r2, [r3, #-16]
SET32(0);
12b5e: f843 2c0c str.w r2, [r3, #-12]
SET32(0);
12b62: f843 2c08 str.w r2, [r3, #-8]
SET32(0);
12b66: f843 2c04 str.w r2, [r3, #-4]
len -= 32;
12b6a: 3c20 subs r4, #32
12b6c: 3320 adds r3, #32
while(len > 32) {
12b6e: 2c20 cmp r4, #32
12b70: d8eb bhi.n 12b4a <_lv_memset_00+0x14>
12b72: f1a1 0321 sub.w r3, r1, #33 ; 0x21
12b76: f023 021f bic.w r2, r3, #31
12b7a: 3220 adds r2, #32
12b7c: 4410 add r0, r2
12b7e: 3920 subs r1, #32
12b80: f023 031f bic.w r3, r3, #31
12b84: 1ac9 subs r1, r1, r3
while(len > 4) {
12b86: 2904 cmp r1, #4
12b88: d910 bls.n 12bac <_lv_memset_00+0x76>
12b8a: 4602 mov r2, r0
12b8c: 460b mov r3, r1
SET32(0);
12b8e: 2400 movs r4, #0
12b90: f842 4b04 str.w r4, [r2], #4
len -= 4;
12b94: 3b04 subs r3, #4
while(len > 4) {
12b96: 2b04 cmp r3, #4
12b98: d8fa bhi.n 12b90 <_lv_memset_00+0x5a>
12b9a: 1f4b subs r3, r1, #5
12b9c: f023 0203 bic.w r2, r3, #3
12ba0: 3204 adds r2, #4
12ba2: 3904 subs r1, #4
12ba4: f023 0303 bic.w r3, r3, #3
12ba8: 1ac9 subs r1, r1, r3
SET32(0);
12baa: 4410 add r0, r2
while(len) {
12bac: b129 cbz r1, 12bba <_lv_memset_00+0x84>
12bae: 4401 add r1, r0
*d8 = 0;
12bb0: 2300 movs r3, #0
12bb2: f800 3b01 strb.w r3, [r0], #1
while(len) {
12bb6: 4288 cmp r0, r1
12bb8: d1fb bne.n 12bb2 <_lv_memset_00+0x7c>
}
12bba: f85d 4b04 ldr.w r4, [sp], #4
12bbe: 4770 bx lr
while(d_align && len) {
12bc0: f1c3 0304 rsb r3, r3, #4
12bc4: b141 cbz r1, 12bd8 <_lv_memset_00+0xa2>
12bc6: 4403 add r3, r0
*d8 = 0x00;
12bc8: 2200 movs r2, #0
12bca: f800 2b01 strb.w r2, [r0], #1
len--;
12bce: 3901 subs r1, #1
while(d_align && len) {
12bd0: 4298 cmp r0, r3
12bd2: d0b3 beq.n 12b3c <_lv_memset_00+0x6>
12bd4: 2900 cmp r1, #0
12bd6: d1f8 bne.n 12bca <_lv_memset_00+0x94>
while(len > 4) {
12bd8: 2100 movs r1, #0
while(len) {
12bda: 2900 cmp r1, #0
12bdc: d0ef beq.n 12bbe <_lv_memset_00+0x88>
12bde: 4401 add r1, r0
*d8 = 0;
12be0: 2300 movs r3, #0
12be2: f800 3b01 strb.w r3, [r0], #1
while(len) {
12be6: 4288 cmp r0, r1
12be8: d1fb bne.n 12be2 <_lv_memset_00+0xac>
12bea: 4770 bx lr
00012bec <_lv_memset_ff>:
if(d_align) {
12bec: f010 0303 ands.w r3, r0, #3
12bf0: d143 bne.n 12c7a <_lv_memset_ff+0x8e>
{
12bf2: b410 push {r4}
while(len > 32) {
12bf4: 2920 cmp r1, #32
12bf6: d922 bls.n 12c3e <_lv_memset_ff+0x52>
12bf8: f100 0320 add.w r3, r0, #32
12bfc: 460c mov r4, r1
SET32(0xFFFFFFFF);
12bfe: f04f 32ff mov.w r2, #4294967295
12c02: f843 2c20 str.w r2, [r3, #-32]
SET32(0xFFFFFFFF);
12c06: f843 2c1c str.w r2, [r3, #-28]
SET32(0xFFFFFFFF);
12c0a: f843 2c18 str.w r2, [r3, #-24]
SET32(0xFFFFFFFF);
12c0e: f843 2c14 str.w r2, [r3, #-20]
SET32(0xFFFFFFFF);
12c12: f843 2c10 str.w r2, [r3, #-16]
SET32(0xFFFFFFFF);
12c16: f843 2c0c str.w r2, [r3, #-12]
SET32(0xFFFFFFFF);
12c1a: f843 2c08 str.w r2, [r3, #-8]
SET32(0xFFFFFFFF);
12c1e: f843 2c04 str.w r2, [r3, #-4]
len -= 32;
12c22: 3c20 subs r4, #32
12c24: 3320 adds r3, #32
while(len > 32) {
12c26: 2c20 cmp r4, #32
12c28: d8eb bhi.n 12c02 <_lv_memset_ff+0x16>
12c2a: f1a1 0321 sub.w r3, r1, #33 ; 0x21
12c2e: f023 021f bic.w r2, r3, #31
12c32: 3220 adds r2, #32
12c34: 4410 add r0, r2
12c36: 3920 subs r1, #32
12c38: f023 031f bic.w r3, r3, #31
12c3c: 1ac9 subs r1, r1, r3
while(len > 4) {
12c3e: 2904 cmp r1, #4
12c40: d911 bls.n 12c66 <_lv_memset_ff+0x7a>
12c42: 4602 mov r2, r0
12c44: 460b mov r3, r1
SET32(0xFFFFFFFF);
12c46: f04f 34ff mov.w r4, #4294967295
12c4a: f842 4b04 str.w r4, [r2], #4
len -= 4;
12c4e: 3b04 subs r3, #4
while(len > 4) {
12c50: 2b04 cmp r3, #4
12c52: d8fa bhi.n 12c4a <_lv_memset_ff+0x5e>
12c54: 1f4b subs r3, r1, #5
12c56: f023 0203 bic.w r2, r3, #3
12c5a: 3204 adds r2, #4
12c5c: 3904 subs r1, #4
12c5e: f023 0303 bic.w r3, r3, #3
12c62: 1ac9 subs r1, r1, r3
SET32(0xFFFFFFFF);
12c64: 4410 add r0, r2
while(len) {
12c66: b129 cbz r1, 12c74 <_lv_memset_ff+0x88>
12c68: 4401 add r1, r0
*d8 = 0xFF;
12c6a: 23ff movs r3, #255 ; 0xff
12c6c: f800 3b01 strb.w r3, [r0], #1
while(len) {
12c70: 4288 cmp r0, r1
12c72: d1fb bne.n 12c6c <_lv_memset_ff+0x80>
}
12c74: f85d 4b04 ldr.w r4, [sp], #4
12c78: 4770 bx lr
while(d_align && len) {
12c7a: f1c3 0304 rsb r3, r3, #4
12c7e: b141 cbz r1, 12c92 <_lv_memset_ff+0xa6>
12c80: 4403 add r3, r0
*d8 = 0xFF;
12c82: 22ff movs r2, #255 ; 0xff
12c84: f800 2b01 strb.w r2, [r0], #1
len--;
12c88: 3901 subs r1, #1
while(d_align && len) {
12c8a: 4298 cmp r0, r3
12c8c: d0b1 beq.n 12bf2 <_lv_memset_ff+0x6>
12c8e: 2900 cmp r1, #0
12c90: d1f8 bne.n 12c84 <_lv_memset_ff+0x98>
while(len > 4) {
12c92: 2100 movs r1, #0
while(len) {
12c94: 2900 cmp r1, #0
12c96: d0ef beq.n 12c78 <_lv_memset_ff+0x8c>
12c98: 4401 add r1, r0
*d8 = 0xFF;
12c9a: 23ff movs r3, #255 ; 0xff
12c9c: f800 3b01 strb.w r3, [r0], #1
while(len) {
12ca0: 4288 cmp r0, r1
12ca2: d1fb bne.n 12c9c <_lv_memset_ff+0xb0>
12ca4: 4770 bx lr
00012ca6 <_out_buffer>:
// internal buffer output
static inline void _out_buffer(char character, void * buffer, size_t idx, size_t maxlen)
{
if(idx < maxlen) {
12ca6: 429a cmp r2, r3
((char *)buffer)[idx] = character;
12ca8: bf38 it cc
12caa: 5488 strbcc r0, [r1, r2]
12cac: 4770 bx lr
00012cae <_out_null>:
}
// internal null output
static inline void _out_null(char character, void * buffer, size_t idx, size_t maxlen)
{
12cae: 4770 bx lr
00012cb0 <_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)
{
12cb0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
12cb4: b083 sub sp, #12
12cb6: 4607 mov r7, r0
12cb8: 9100 str r1, [sp, #0]
12cba: 4693 mov fp, r2
12cbc: 4698 mov r8, r3
12cbe: f8dd 9030 ldr.w r9, [sp, #48] ; 0x30
12cc2: 9c0d ldr r4, [sp, #52] ; 0x34
12cc4: f89d 5038 ldrb.w r5, [sp, #56] ; 0x38
12cc8: 9910 ldr r1, [sp, #64] ; 0x40
12cca: f8dd a044 ldr.w sl, [sp, #68] ; 0x44
12cce: 9a12 ldr r2, [sp, #72] ; 0x48
// pad leading zeros
if(!(flags & FLAGS_LEFT)) {
12cd0: f012 0302 ands.w r3, r2, #2
12cd4: 9301 str r3, [sp, #4]
12cd6: d135 bne.n 12d44 <_ntoa_format+0x94>
if(width && (flags & FLAGS_ZEROPAD) && (negative || (flags & (FLAGS_PLUS | FLAGS_SPACE)))) {
12cd8: f1ba 0f00 cmp.w sl, #0
12cdc: d00e beq.n 12cfc <_ntoa_format+0x4c>
12cde: f012 0f01 tst.w r2, #1
12ce2: f000 80b6 beq.w 12e52 <_ntoa_format+0x1a2>
12ce6: b915 cbnz r5, 12cee <_ntoa_format+0x3e>
12ce8: f012 0f0c tst.w r2, #12
12cec: d001 beq.n 12cf2 <_ntoa_format+0x42>
width--;
12cee: f10a 3aff add.w sl, sl, #4294967295
}
while((len < prec) && (len < PRINTF_NTOA_BUFFER_SIZE)) {
12cf2: 428c cmp r4, r1
12cf4: d213 bcs.n 12d1e <_ntoa_format+0x6e>
12cf6: 2c1f cmp r4, #31
12cf8: d904 bls.n 12d04 <_ntoa_format+0x54>
12cfa: e010 b.n 12d1e <_ntoa_format+0x6e>
12cfc: 428c cmp r4, r1
12cfe: d20b bcs.n 12d18 <_ntoa_format+0x68>
12d00: 2c1f cmp r4, #31
12d02: d809 bhi.n 12d18 <_ntoa_format+0x68>
12d04: eb09 0304 add.w r3, r9, r4
buf[len++] = '0';
12d08: 2030 movs r0, #48 ; 0x30
12d0a: 3401 adds r4, #1
12d0c: f803 0b01 strb.w r0, [r3], #1
while((len < prec) && (len < PRINTF_NTOA_BUFFER_SIZE)) {
12d10: 42a1 cmp r1, r4
12d12: d901 bls.n 12d18 <_ntoa_format+0x68>
12d14: 2c20 cmp r4, #32
12d16: d1f8 bne.n 12d0a <_ntoa_format+0x5a>
}
while((flags & FLAGS_ZEROPAD) && (len < width) && (len < PRINTF_NTOA_BUFFER_SIZE)) {
12d18: f012 0f01 tst.w r2, #1
12d1c: d012 beq.n 12d44 <_ntoa_format+0x94>
12d1e: 45a2 cmp sl, r4
12d20: d910 bls.n 12d44 <_ntoa_format+0x94>
12d22: 2c1f cmp r4, #31
12d24: d809 bhi.n 12d3a <_ntoa_format+0x8a>
12d26: eb09 0304 add.w r3, r9, r4
buf[len++] = '0';
12d2a: 2030 movs r0, #48 ; 0x30
12d2c: 3401 adds r4, #1
12d2e: f803 0b01 strb.w r0, [r3], #1
while((flags & FLAGS_ZEROPAD) && (len < width) && (len < PRINTF_NTOA_BUFFER_SIZE)) {
12d32: 4554 cmp r4, sl
12d34: d005 beq.n 12d42 <_ntoa_format+0x92>
12d36: 2c20 cmp r4, #32
12d38: d1f8 bne.n 12d2c <_ntoa_format+0x7c>
}
}
// handle hash
if(flags & FLAGS_HASH) {
12d3a: f012 0f10 tst.w r2, #16
12d3e: d104 bne.n 12d4a <_ntoa_format+0x9a>
12d40: e044 b.n 12dcc <_ntoa_format+0x11c>
12d42: 46a2 mov sl, r4
12d44: f012 0f10 tst.w r2, #16
12d48: d013 beq.n 12d72 <_ntoa_format+0xc2>
if(!(flags & FLAGS_PRECISION) && len && ((len == prec) || (len == width))) {
12d4a: f412 6f80 tst.w r2, #1024 ; 0x400
12d4e: d104 bne.n 12d5a <_ntoa_format+0xaa>
12d50: b11c cbz r4, 12d5a <_ntoa_format+0xaa>
12d52: 42a1 cmp r1, r4
12d54: d01b beq.n 12d8e <_ntoa_format+0xde>
12d56: 4554 cmp r4, sl
12d58: d019 beq.n 12d8e <_ntoa_format+0xde>
len--;
if(len && (base == 16U)) {
len--;
}
}
if((base == 16U) && !(flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) {
12d5a: 9b0f ldr r3, [sp, #60] ; 0x3c
12d5c: 2b10 cmp r3, #16
12d5e: d01e beq.n 12d9e <_ntoa_format+0xee>
buf[len++] = 'x';
}
else if((base == 16U) && (flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) {
buf[len++] = 'X';
}
else if((base == 2U) && (len < PRINTF_NTOA_BUFFER_SIZE)) {
12d60: 9b0f ldr r3, [sp, #60] ; 0x3c
12d62: 2b02 cmp r3, #2
12d64: d027 beq.n 12db6 <_ntoa_format+0x106>
buf[len++] = 'b';
}
if(len < PRINTF_NTOA_BUFFER_SIZE) {
12d66: 2c1f cmp r4, #31
12d68: d830 bhi.n 12dcc <_ntoa_format+0x11c>
buf[len++] = '0';
12d6a: 2330 movs r3, #48 ; 0x30
12d6c: f809 3004 strb.w r3, [r9, r4]
12d70: 3401 adds r4, #1
}
}
if(len < PRINTF_NTOA_BUFFER_SIZE) {
12d72: 2c1f cmp r4, #31
12d74: d82a bhi.n 12dcc <_ntoa_format+0x11c>
if(negative) {
12d76: bb2d cbnz r5, 12dc4 <_ntoa_format+0x114>
buf[len++] = '-';
}
else if(flags & FLAGS_PLUS) {
12d78: f012 0f04 tst.w r2, #4
12d7c: d13a bne.n 12df4 <_ntoa_format+0x144>
buf[len++] = '+'; // ignore the space if the '+' exists
}
else if(flags & FLAGS_SPACE) {
12d7e: f012 0f08 tst.w r2, #8
12d82: d023 beq.n 12dcc <_ntoa_format+0x11c>
buf[len++] = ' ';
12d84: 2320 movs r3, #32
12d86: f809 3004 strb.w r3, [r9, r4]
12d8a: 3401 adds r4, #1
12d8c: e01e b.n 12dcc <_ntoa_format+0x11c>
if(len && (base == 16U)) {
12d8e: 1e63 subs r3, r4, #1
12d90: d00f beq.n 12db2 <_ntoa_format+0x102>
12d92: 990f ldr r1, [sp, #60] ; 0x3c
12d94: 2910 cmp r1, #16
12d96: d001 beq.n 12d9c <_ntoa_format+0xec>
len--;
12d98: 461c mov r4, r3
12d9a: e7e1 b.n 12d60 <_ntoa_format+0xb0>
len--;
12d9c: 3c02 subs r4, #2
if((base == 16U) && !(flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) {
12d9e: f012 0f20 tst.w r2, #32
12da2: d15d bne.n 12e60 <_ntoa_format+0x1b0>
12da4: 2c1f cmp r4, #31
12da6: d8de bhi.n 12d66 <_ntoa_format+0xb6>
buf[len++] = 'x';
12da8: 2378 movs r3, #120 ; 0x78
12daa: f809 3004 strb.w r3, [r9, r4]
12dae: 3401 adds r4, #1
12db0: e7d9 b.n 12d66 <_ntoa_format+0xb6>
len--;
12db2: 461c mov r4, r3
12db4: e7d1 b.n 12d5a <_ntoa_format+0xaa>
else if((base == 2U) && (len < PRINTF_NTOA_BUFFER_SIZE)) {
12db6: 2c1f cmp r4, #31
12db8: d808 bhi.n 12dcc <_ntoa_format+0x11c>
buf[len++] = 'b';
12dba: 2362 movs r3, #98 ; 0x62
12dbc: f809 3004 strb.w r3, [r9, r4]
12dc0: 3401 adds r4, #1
12dc2: e7d0 b.n 12d66 <_ntoa_format+0xb6>
buf[len++] = '-';
12dc4: 232d movs r3, #45 ; 0x2d
12dc6: f809 3004 strb.w r3, [r9, r4]
12dca: 3401 adds r4, #1
if(!(flags & FLAGS_LEFT) && !(flags & FLAGS_ZEROPAD)) {
12dcc: f012 0f03 tst.w r2, #3
12dd0: d115 bne.n 12dfe <_ntoa_format+0x14e>
for(i = len; i < width; i++) {
12dd2: 4554 cmp r4, sl
12dd4: bf28 it cs
12dd6: 465e movcs r6, fp
12dd8: d212 bcs.n 12e00 <_ntoa_format+0x150>
12dda: eb0b 050a add.w r5, fp, sl
12dde: 1b2d subs r5, r5, r4
12de0: 465a mov r2, fp
out(' ', buffer, idx++, maxlen);
12de2: 1c56 adds r6, r2, #1
12de4: 4643 mov r3, r8
12de6: 9900 ldr r1, [sp, #0]
12de8: 2020 movs r0, #32
12dea: 47b8 blx r7
12dec: 4632 mov r2, r6
for(i = len; i < width; i++) {
12dee: 42ae cmp r6, r5
12df0: d1f7 bne.n 12de2 <_ntoa_format+0x132>
12df2: e005 b.n 12e00 <_ntoa_format+0x150>
buf[len++] = '+'; // ignore the space if the '+' exists
12df4: 232b movs r3, #43 ; 0x2b
12df6: f809 3004 strb.w r3, [r9, r4]
12dfa: 3401 adds r4, #1
12dfc: e7e6 b.n 12dcc <_ntoa_format+0x11c>
if(!(flags & FLAGS_LEFT) && !(flags & FLAGS_ZEROPAD)) {
12dfe: 465e mov r6, fp
while(len) {
12e00: 4635 mov r5, r6
12e02: b15c cbz r4, 12e1c <_ntoa_format+0x16c>
12e04: 44a1 add r9, r4
12e06: 4434 add r4, r6
12e08: 4632 mov r2, r6
out(buf[--len], buffer, idx++, maxlen);
12e0a: 1c55 adds r5, r2, #1
12e0c: 4643 mov r3, r8
12e0e: 9900 ldr r1, [sp, #0]
12e10: f819 0d01 ldrb.w r0, [r9, #-1]!
12e14: 47b8 blx r7
12e16: 462a mov r2, r5
while(len) {
12e18: 42ac cmp r4, r5
12e1a: d1f6 bne.n 12e0a <_ntoa_format+0x15a>
if(flags & FLAGS_LEFT) {
12e1c: 9b01 ldr r3, [sp, #4]
12e1e: b1a3 cbz r3, 12e4a <_ntoa_format+0x19a>
while(idx - start_idx < width) {
12e20: eba5 030b sub.w r3, r5, fp
12e24: 4553 cmp r3, sl
12e26: d212 bcs.n 12e4e <_ntoa_format+0x19e>
out(' ', buffer, idx++, maxlen);
12e28: 2620 movs r6, #32
12e2a: 462a mov r2, r5
12e2c: 9d00 ldr r5, [sp, #0]
12e2e: 1c54 adds r4, r2, #1
12e30: 4643 mov r3, r8
12e32: 4629 mov r1, r5
12e34: 4630 mov r0, r6
12e36: 47b8 blx r7
12e38: 4622 mov r2, r4
while(idx - start_idx < width) {
12e3a: eba4 030b sub.w r3, r4, fp
12e3e: 4553 cmp r3, sl
12e40: d3f5 bcc.n 12e2e <_ntoa_format+0x17e>
}
}
return _out_rev(out, buffer, idx, maxlen, buf, len, width, flags);
}
12e42: 4620 mov r0, r4
12e44: b003 add sp, #12
12e46: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
if(flags & FLAGS_LEFT) {
12e4a: 462c mov r4, r5
12e4c: e7f9 b.n 12e42 <_ntoa_format+0x192>
while(idx - start_idx < width) {
12e4e: 462c mov r4, r5
return _out_rev(out, buffer, idx, maxlen, buf, len, width, flags);
12e50: e7f7 b.n 12e42 <_ntoa_format+0x192>
while((len < prec) && (len < PRINTF_NTOA_BUFFER_SIZE)) {
12e52: 428c cmp r4, r1
12e54: f4bf af76 bcs.w 12d44 <_ntoa_format+0x94>
12e58: 2c1f cmp r4, #31
12e5a: f67f af53 bls.w 12d04 <_ntoa_format+0x54>
12e5e: e771 b.n 12d44 <_ntoa_format+0x94>
else if((base == 16U) && (flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) {
12e60: 2c1f cmp r4, #31
12e62: d8b3 bhi.n 12dcc <_ntoa_format+0x11c>
buf[len++] = 'X';
12e64: 2358 movs r3, #88 ; 0x58
12e66: f809 3004 strb.w r3, [r9, r4]
12e6a: 3401 adds r4, #1
12e6c: e77b b.n 12d66 <_ntoa_format+0xb6>
...
00012e70 <_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)
{
12e70: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
12e74: b090 sub sp, #64 ; 0x40
12e76: 9d16 ldr r5, [sp, #88] ; 0x58
12e78: 9e18 ldr r6, [sp, #96] ; 0x60
12e7a: f8dd 806c ldr.w r8, [sp, #108] ; 0x6c
char buf[PRINTF_NTOA_BUFFER_SIZE];
size_t len = 0U;
// no hash for 0 values
if(!value) {
12e7e: b92d cbnz r5, 12e8c <_ntoa_long+0x1c>
flags &= ~FLAGS_HASH;
12e80: f028 0410 bic.w r4, r8, #16
}
// write if precision != 0 and value is != 0
if(!(flags & FLAGS_PRECISION) || value) {
12e84: f418 6f80 tst.w r8, #1024 ; 0x400
12e88: d12f bne.n 12eea <_ntoa_long+0x7a>
flags &= ~FLAGS_HASH;
12e8a: 46a0 mov r8, r4
12e8c: f018 0f20 tst.w r8, #32
12e90: f10d 0e1f add.w lr, sp, #31
do {
const char digit = (char)(value % base);
buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10;
12e94: f04f 0700 mov.w r7, #0
12e98: bf14 ite ne
12e9a: f04f 0c37 movne.w ip, #55 ; 0x37
12e9e: f04f 0c57 moveq.w ip, #87 ; 0x57
const char digit = (char)(value % base);
12ea2: fbb5 f4f6 udiv r4, r5, r6
12ea6: fb06 5414 mls r4, r6, r4, r5
12eaa: b2e4 uxtb r4, r4
buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10;
12eac: 3701 adds r7, #1
12eae: 2c09 cmp r4, #9
12eb0: bf94 ite ls
12eb2: 3430 addls r4, #48 ; 0x30
12eb4: 4464 addhi r4, ip
12eb6: b2e4 uxtb r4, r4
12eb8: f80e 4f01 strb.w r4, [lr, #1]!
value /= base;
12ebc: fbb5 f5f6 udiv r5, r5, r6
} while(value && (len < PRINTF_NTOA_BUFFER_SIZE));
12ec0: b10d cbz r5, 12ec6 <_ntoa_long+0x56>
12ec2: 2f20 cmp r7, #32
12ec4: d1ed bne.n 12ea2 <_ntoa_long+0x32>
}
return _ntoa_format(out, buffer, idx, maxlen, buf, len, negative, (unsigned int)base, prec, width, flags);
12ec6: f8cd 8018 str.w r8, [sp, #24]
12eca: 9c1a ldr r4, [sp, #104] ; 0x68
12ecc: 9405 str r4, [sp, #20]
12ece: 9c19 ldr r4, [sp, #100] ; 0x64
12ed0: 9404 str r4, [sp, #16]
12ed2: 9603 str r6, [sp, #12]
12ed4: f89d 405c ldrb.w r4, [sp, #92] ; 0x5c
12ed8: 9402 str r4, [sp, #8]
12eda: 9701 str r7, [sp, #4]
12edc: ac08 add r4, sp, #32
12ede: 9400 str r4, [sp, #0]
12ee0: 4c03 ldr r4, [pc, #12] ; (12ef0 <_ntoa_long+0x80>)
12ee2: 47a0 blx r4
}
12ee4: b010 add sp, #64 ; 0x40
12ee6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
flags &= ~FLAGS_HASH;
12eea: 46a0 mov r8, r4
size_t len = 0U;
12eec: 2700 movs r7, #0
12eee: e7ea b.n 12ec6 <_ntoa_long+0x56>
12ef0: 00012cb1 .word 0x00012cb1
00012ef4 <_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)
{
12ef4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
12ef8: b095 sub sp, #84 ; 0x54
12efa: 9008 str r0, [sp, #32]
12efc: 9109 str r1, [sp, #36] ; 0x24
12efe: 920a str r2, [sp, #40] ; 0x28
12f00: 930b str r3, [sp, #44] ; 0x2c
12f02: e9dd 451e ldrd r4, r5, [sp, #120] ; 0x78
12f06: f8dd 9088 ldr.w r9, [sp, #136] ; 0x88
12f0a: f8dd 808c ldr.w r8, [sp, #140] ; 0x8c
char buf[PRINTF_NTOA_BUFFER_SIZE];
size_t len = 0U;
// no hash for 0 values
if(!value) {
12f0e: ea54 0305 orrs.w r3, r4, r5
12f12: d107 bne.n 12f24 <_ntoa_long_long+0x30>
flags &= ~FLAGS_HASH;
12f14: 9b26 ldr r3, [sp, #152] ; 0x98
12f16: f023 0310 bic.w r3, r3, #16
}
// write if precision != 0 and value is != 0
if(!(flags & FLAGS_PRECISION) || value) {
12f1a: 9a26 ldr r2, [sp, #152] ; 0x98
12f1c: f412 6f80 tst.w r2, #1024 ; 0x400
12f20: d13e bne.n 12fa0 <_ntoa_long_long+0xac>
flags &= ~FLAGS_HASH;
12f22: 9326 str r3, [sp, #152] ; 0x98
12f24: 9b26 ldr r3, [sp, #152] ; 0x98
12f26: f013 0f20 tst.w r3, #32
12f2a: f10d 0a2f add.w sl, sp, #47 ; 0x2f
do {
const char digit = (char)(value % base);
buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10;
12f2e: f04f 0600 mov.w r6, #0
const char digit = (char)(value % base);
12f32: 4f1d ldr r7, [pc, #116] ; (12fa8 <_ntoa_long_long+0xb4>)
buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10;
12f34: bf14 ite ne
12f36: f04f 0b37 movne.w fp, #55 ; 0x37
12f3a: f04f 0b57 moveq.w fp, #87 ; 0x57
const char digit = (char)(value % base);
12f3e: 464a mov r2, r9
12f40: 4643 mov r3, r8
12f42: 4620 mov r0, r4
12f44: 4629 mov r1, r5
12f46: 47b8 blx r7
12f48: b2d2 uxtb r2, r2
buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10;
12f4a: 3601 adds r6, #1
12f4c: 2a09 cmp r2, #9
12f4e: bf94 ite ls
12f50: 3230 addls r2, #48 ; 0x30
12f52: 445a addhi r2, fp
12f54: b2d2 uxtb r2, r2
12f56: f80a 2f01 strb.w r2, [sl, #1]!
value /= base;
12f5a: 464a mov r2, r9
12f5c: 4643 mov r3, r8
12f5e: 4620 mov r0, r4
12f60: 4629 mov r1, r5
12f62: 47b8 blx r7
12f64: 4604 mov r4, r0
12f66: 460d mov r5, r1
} while(value && (len < PRINTF_NTOA_BUFFER_SIZE));
12f68: ea54 0305 orrs.w r3, r4, r5
12f6c: d001 beq.n 12f72 <_ntoa_long_long+0x7e>
12f6e: 2e20 cmp r6, #32
12f70: d1e5 bne.n 12f3e <_ntoa_long_long+0x4a>
}
return _ntoa_format(out, buffer, idx, maxlen, buf, len, negative, (unsigned int)base, prec, width, flags);
12f72: 9b26 ldr r3, [sp, #152] ; 0x98
12f74: 9306 str r3, [sp, #24]
12f76: 9b25 ldr r3, [sp, #148] ; 0x94
12f78: 9305 str r3, [sp, #20]
12f7a: 9b24 ldr r3, [sp, #144] ; 0x90
12f7c: 9304 str r3, [sp, #16]
12f7e: f8cd 900c str.w r9, [sp, #12]
12f82: f89d 3080 ldrb.w r3, [sp, #128] ; 0x80
12f86: 9302 str r3, [sp, #8]
12f88: 9601 str r6, [sp, #4]
12f8a: ab0c add r3, sp, #48 ; 0x30
12f8c: 9300 str r3, [sp, #0]
12f8e: 9b0b ldr r3, [sp, #44] ; 0x2c
12f90: 9a0a ldr r2, [sp, #40] ; 0x28
12f92: 9909 ldr r1, [sp, #36] ; 0x24
12f94: 9808 ldr r0, [sp, #32]
12f96: 4c05 ldr r4, [pc, #20] ; (12fac <_ntoa_long_long+0xb8>)
12f98: 47a0 blx r4
}
12f9a: b015 add sp, #84 ; 0x54
12f9c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
flags &= ~FLAGS_HASH;
12fa0: 9326 str r3, [sp, #152] ; 0x98
size_t len = 0U;
12fa2: 2600 movs r6, #0
12fa4: e7e5 b.n 12f72 <_ntoa_long_long+0x7e>
12fa6: bf00 nop
12fa8: 0001b185 .word 0x0001b185
12fac: 00012cb1 .word 0x00012cb1
00012fb0 <_vsnprintf>:
#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)
{
12fb0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
12fb4: b091 sub sp, #68 ; 0x44
12fb6: 920a str r2, [sp, #40] ; 0x28
12fb8: 461c mov r4, r3
12fba: 9e1a ldr r6, [sp, #104] ; 0x68
unsigned int flags, width, precision, n;
size_t idx = 0U;
if(!buffer) {
12fbc: 910b str r1, [sp, #44] ; 0x2c
// use null output function
out = _out_null;
12fbe: 4b93 ldr r3, [pc, #588] ; (1320c <_vsnprintf+0x25c>)
12fc0: 2900 cmp r1, #0
12fc2: bf14 ite ne
12fc4: 4681 movne r9, r0
12fc6: 4699 moveq r9, r3
format++;
break;
}
case '%' :
out('%', buffer, idx++, maxlen);
12fc8: f04f 0b00 mov.w fp, #0
while(*format) {
12fcc: 7820 ldrb r0, [r4, #0]
12fce: 2800 cmp r0, #0
12fd0: f000 826a beq.w 134a8 <_vsnprintf+0x4f8>
if(*format != '%') {
12fd4: 2825 cmp r0, #37 ; 0x25
12fd6: d008 beq.n 12fea <_vsnprintf+0x3a>
out(*format, buffer, idx++, maxlen);
12fd8: f10b 0501 add.w r5, fp, #1
12fdc: 9b0a ldr r3, [sp, #40] ; 0x28
12fde: 465a mov r2, fp
12fe0: 990b ldr r1, [sp, #44] ; 0x2c
12fe2: 47c8 blx r9
format++;
12fe4: 3401 adds r4, #1
out(*format, buffer, idx++, maxlen);
12fe6: 46ab mov fp, r5
continue;
12fe8: e7f0 b.n 12fcc <_vsnprintf+0x1c>
format++;
12fea: 1c62 adds r2, r4, #1
flags = 0U;
12fec: 2100 movs r1, #0
12fee: e001 b.n 12ff4 <_vsnprintf+0x44>
flags |= FLAGS_ZEROPAD;
12ff0: f041 0101 orr.w r1, r1, #1
12ff4: 4614 mov r4, r2
12ff6: 3201 adds r2, #1
switch(*format) {
12ff8: 7823 ldrb r3, [r4, #0]
12ffa: 3b20 subs r3, #32
12ffc: 2b10 cmp r3, #16
12ffe: d831 bhi.n 13064 <_vsnprintf+0xb4>
13000: a001 add r0, pc, #4 ; (adr r0, 13008 <_vsnprintf+0x58>)
13002: f850 f023 ldr.w pc, [r0, r3, lsl #2]
13006: bf00 nop
13008: 00013059 .word 0x00013059
1300c: 00013065 .word 0x00013065
13010: 00013065 .word 0x00013065
13014: 0001305f .word 0x0001305f
13018: 00013065 .word 0x00013065
1301c: 00013065 .word 0x00013065
13020: 00013065 .word 0x00013065
13024: 00013065 .word 0x00013065
13028: 00013065 .word 0x00013065
1302c: 00013065 .word 0x00013065
13030: 00013065 .word 0x00013065
13034: 00013053 .word 0x00013053
13038: 00013065 .word 0x00013065
1303c: 0001304d .word 0x0001304d
13040: 00013065 .word 0x00013065
13044: 00013065 .word 0x00013065
13048: 00012ff1 .word 0x00012ff1
flags |= FLAGS_LEFT;
1304c: f041 0102 orr.w r1, r1, #2
break;
13050: e7d0 b.n 12ff4 <_vsnprintf+0x44>
flags |= FLAGS_PLUS;
13052: f041 0104 orr.w r1, r1, #4
break;
13056: e7cd b.n 12ff4 <_vsnprintf+0x44>
flags |= FLAGS_SPACE;
13058: f041 0108 orr.w r1, r1, #8
break;
1305c: e7ca b.n 12ff4 <_vsnprintf+0x44>
flags |= FLAGS_HASH;
1305e: f041 0110 orr.w r1, r1, #16
break;
13062: e7c7 b.n 12ff4 <_vsnprintf+0x44>
if(_is_digit(*format)) {
13064: 7823 ldrb r3, [r4, #0]
return (ch >= '0') && (ch <= '9');
13066: f1a3 0230 sub.w r2, r3, #48 ; 0x30
if(_is_digit(*format)) {
1306a: b2d2 uxtb r2, r2
1306c: 2a09 cmp r2, #9
1306e: d916 bls.n 1309e <_vsnprintf+0xee>
else if(*format == '*') {
13070: 2b2a cmp r3, #42 ; 0x2a
13072: d022 beq.n 130ba <_vsnprintf+0x10a>
width = 0U;
13074: 2500 movs r5, #0
if(*format == '.') {
13076: 7823 ldrb r3, [r4, #0]
13078: 2b2e cmp r3, #46 ; 0x2e
1307a: d028 beq.n 130ce <_vsnprintf+0x11e>
precision = 0U;
1307c: 2700 movs r7, #0
switch(*format) {
1307e: 7823 ldrb r3, [r4, #0]
13080: 3b68 subs r3, #104 ; 0x68
13082: 2b12 cmp r3, #18
13084: d84f bhi.n 13126 <_vsnprintf+0x176>
13086: e8df f003 tbb [pc, r3]
1308a: 4eaa .short 0x4eaa
1308c: 4e454eb8 .word 0x4e454eb8
13090: 4e4e4e4e .word 0x4e4e4e4e
13094: 4eb44e4e .word 0x4eb44e4e
13098: 4e4e4e4e .word 0x4e4e4e4e
1309c: bc .byte 0xbc
1309d: 00 .byte 0x00
1309e: 2500 movs r5, #0
i = i * 10U + (unsigned int)(*((*str)++) - '0');
130a0: eb05 0585 add.w r5, r5, r5, lsl #2
130a4: eb03 0545 add.w r5, r3, r5, lsl #1
130a8: 3d30 subs r5, #48 ; 0x30
while(_is_digit(**str)) {
130aa: f814 3f01 ldrb.w r3, [r4, #1]!
return (ch >= '0') && (ch <= '9');
130ae: f1a3 0230 sub.w r2, r3, #48 ; 0x30
while(_is_digit(**str)) {
130b2: b2d2 uxtb r2, r2
130b4: 2a09 cmp r2, #9
130b6: d9f3 bls.n 130a0 <_vsnprintf+0xf0>
130b8: e7dd b.n 13076 <_vsnprintf+0xc6>
const int w = va_arg(va, int);
130ba: 1d33 adds r3, r6, #4
130bc: 6835 ldr r5, [r6, #0]
if(w < 0) {
130be: 2d00 cmp r5, #0
flags |= FLAGS_LEFT; // reverse padding
130c0: bfbc itt lt
130c2: f041 0102 orrlt.w r1, r1, #2
width = (unsigned int) - w;
130c6: 426d neglt r5, r5
format++;
130c8: 3401 adds r4, #1
const int w = va_arg(va, int);
130ca: 461e mov r6, r3
130cc: e7d3 b.n 13076 <_vsnprintf+0xc6>
flags |= FLAGS_PRECISION;
130ce: f441 6180 orr.w r1, r1, #1024 ; 0x400
format++;
130d2: 1c60 adds r0, r4, #1
if(_is_digit(*format)) {
130d4: 7863 ldrb r3, [r4, #1]
return (ch >= '0') && (ch <= '9');
130d6: f1a3 0230 sub.w r2, r3, #48 ; 0x30
if(_is_digit(*format)) {
130da: b2d2 uxtb r2, r2
130dc: 2a09 cmp r2, #9
130de: d904 bls.n 130ea <_vsnprintf+0x13a>
else if(*format == '*') {
130e0: 2b2a cmp r3, #42 ; 0x2a
130e2: d011 beq.n 13108 <_vsnprintf+0x158>
format++;
130e4: 4604 mov r4, r0
precision = 0U;
130e6: 2700 movs r7, #0
130e8: e7c9 b.n 1307e <_vsnprintf+0xce>
130ea: 2700 movs r7, #0
i = i * 10U + (unsigned int)(*((*str)++) - '0');
130ec: eb07 0787 add.w r7, r7, r7, lsl #2
130f0: eb03 0747 add.w r7, r3, r7, lsl #1
130f4: 3f30 subs r7, #48 ; 0x30
while(_is_digit(**str)) {
130f6: f810 3f01 ldrb.w r3, [r0, #1]!
return (ch >= '0') && (ch <= '9');
130fa: f1a3 0230 sub.w r2, r3, #48 ; 0x30
while(_is_digit(**str)) {
130fe: b2d2 uxtb r2, r2
13100: 2a09 cmp r2, #9
13102: d9f3 bls.n 130ec <_vsnprintf+0x13c>
i = i * 10U + (unsigned int)(*((*str)++) - '0');
13104: 4604 mov r4, r0
13106: e7ba b.n 1307e <_vsnprintf+0xce>
precision = prec > 0 ? (unsigned int)prec : 0U;
13108: 6837 ldr r7, [r6, #0]
1310a: ea27 77e7 bic.w r7, r7, r7, asr #31
format++;
1310e: 3402 adds r4, #2
const int prec = (int)va_arg(va, int);
13110: 3604 adds r6, #4
13112: e7b4 b.n 1307e <_vsnprintf+0xce>
if(*format == 'l') {
13114: 7863 ldrb r3, [r4, #1]
13116: 2b6c cmp r3, #108 ; 0x6c
flags |= FLAGS_LONG;
13118: bf19 ittee ne
1311a: f441 7180 orrne.w r1, r1, #256 ; 0x100
format++;
1311e: 3401 addne r4, #1
flags |= FLAGS_LONG_LONG;
13120: f441 7140 orreq.w r1, r1, #768 ; 0x300
format++;
13124: 3402 addeq r4, #2
switch(*format) {
13126: 7820 ldrb r0, [r4, #0]
13128: f1a0 0325 sub.w r3, r0, #37 ; 0x25
1312c: 2b53 cmp r3, #83 ; 0x53
1312e: f200 81b2 bhi.w 13496 <_vsnprintf+0x4e6>
13132: e8df f013 tbh [pc, r3, lsl #1]
13136: 01a6 .short 0x01a6
13138: 01b001b0 .word 0x01b001b0
1313c: 01b001b0 .word 0x01b001b0
13140: 01b001b0 .word 0x01b001b0
13144: 01b001b0 .word 0x01b001b0
13148: 01b001b0 .word 0x01b001b0
1314c: 01b001b0 .word 0x01b001b0
13150: 01b001b0 .word 0x01b001b0
13154: 01b001b0 .word 0x01b001b0
13158: 01b001b0 .word 0x01b001b0
1315c: 01b001b0 .word 0x01b001b0
13160: 01b001b0 .word 0x01b001b0
13164: 01b001b0 .word 0x01b001b0
13168: 01b001b0 .word 0x01b001b0
1316c: 01b001b0 .word 0x01b001b0
13170: 01b001b0 .word 0x01b001b0
13174: 01b001b0 .word 0x01b001b0
13178: 01b001b0 .word 0x01b001b0
1317c: 01b001b0 .word 0x01b001b0
13180: 01b001b0 .word 0x01b001b0
13184: 01b001b0 .word 0x01b001b0
13188: 01b001b0 .word 0x01b001b0
1318c: 01b001b0 .word 0x01b001b0
13190: 01b001b0 .word 0x01b001b0
13194: 01b001b0 .word 0x01b001b0
13198: 01b001b0 .word 0x01b001b0
1319c: 01b0006d .word 0x01b0006d
131a0: 01b001b0 .word 0x01b001b0
131a4: 01b001b0 .word 0x01b001b0
131a8: 01b001b0 .word 0x01b001b0
131ac: 01b001b0 .word 0x01b001b0
131b0: 0114006d .word 0x0114006d
131b4: 01b0006d .word 0x01b0006d
131b8: 01b001b0 .word 0x01b001b0
131bc: 006d01b0 .word 0x006d01b0
131c0: 01b001b0 .word 0x01b001b0
131c4: 01b001b0 .word 0x01b001b0
131c8: 006d01b0 .word 0x006d01b0
131cc: 01b0018f .word 0x01b0018f
131d0: 013701b0 .word 0x013701b0
131d4: 006d01b0 .word 0x006d01b0
131d8: 01b001b0 .word 0x01b001b0
131dc: 006d .short 0x006d
if(*format == 'h') {
131de: 7863 ldrb r3, [r4, #1]
131e0: 2b68 cmp r3, #104 ; 0x68
flags |= FLAGS_SHORT;
131e2: bf19 ittee ne
131e4: f041 0180 orrne.w r1, r1, #128 ; 0x80
format++;
131e8: 3401 addne r4, #1
flags |= FLAGS_CHAR;
131ea: f041 01c0 orreq.w r1, r1, #192 ; 0xc0
format++;
131ee: 3402 addeq r4, #2
131f0: e799 b.n 13126 <_vsnprintf+0x176>
flags |= (sizeof(ptrdiff_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG);
131f2: f441 7180 orr.w r1, r1, #256 ; 0x100
format++;
131f6: 3401 adds r4, #1
break;
131f8: e795 b.n 13126 <_vsnprintf+0x176>
flags |= (sizeof(intmax_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG);
131fa: f441 7100 orr.w r1, r1, #512 ; 0x200
format++;
131fe: 3401 adds r4, #1
break;
13200: e791 b.n 13126 <_vsnprintf+0x176>
flags |= (sizeof(size_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG);
13202: f441 7180 orr.w r1, r1, #256 ; 0x100
format++;
13206: 3401 adds r4, #1
break;
13208: e78d b.n 13126 <_vsnprintf+0x176>
1320a: bf00 nop
1320c: 00012caf .word 0x00012caf
if(*format == 'x' || *format == 'X') {
13210: 2878 cmp r0, #120 ; 0x78
13212: f000 81d5 beq.w 135c0 <_vsnprintf+0x610>
13216: 2858 cmp r0, #88 ; 0x58
13218: f000 8154 beq.w 134c4 <_vsnprintf+0x514>
else if(*format == 'o') {
1321c: 286f cmp r0, #111 ; 0x6f
1321e: f000 81d1 beq.w 135c4 <_vsnprintf+0x614>
else if(*format == 'b') {
13222: 2862 cmp r0, #98 ; 0x62
13224: f000 81d0 beq.w 135c8 <_vsnprintf+0x618>
flags &= ~FLAGS_HASH; // no hash for dec format
13228: f021 0310 bic.w r3, r1, #16
if((*format != 'i') && (*format != 'd')) {
1322c: 2869 cmp r0, #105 ; 0x69
1322e: d126 bne.n 1327e <_vsnprintf+0x2ce>
if(flags & FLAGS_PRECISION) {
13230: f411 6f80 tst.w r1, #1024 ; 0x400
13234: f040 81c0 bne.w 135b8 <_vsnprintf+0x608>
base = 10U;
13238: 220a movs r2, #10
if(flags & FLAGS_LONG_LONG) {
1323a: f413 7f00 tst.w r3, #512 ; 0x200
1323e: d124 bne.n 1328a <_vsnprintf+0x2da>
else if(flags & FLAGS_LONG) {
13240: f413 7f80 tst.w r3, #256 ; 0x100
13244: d144 bne.n 132d0 <_vsnprintf+0x320>
const int value = (flags & FLAGS_CHAR) ? (char)va_arg(va, int) : (flags & FLAGS_SHORT) ? (short int)va_arg(va,
13246: f013 0f40 tst.w r3, #64 ; 0x40
1324a: d157 bne.n 132fc <_vsnprintf+0x34c>
int) : va_arg(va, int);
1324c: f013 0f80 tst.w r3, #128 ; 0x80
13250: bf14 ite ne
13252: f9b6 1000 ldrshne.w r1, [r6]
13256: 6831 ldreq r1, [r6, #0]
13258: 3604 adds r6, #4
idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned int)(value > 0 ? value : 0 - value), value < 0, base, precision,
1325a: 9305 str r3, [sp, #20]
1325c: 9504 str r5, [sp, #16]
1325e: 9703 str r7, [sp, #12]
13260: 9202 str r2, [sp, #8]
13262: 0fcb lsrs r3, r1, #31
13264: 9301 str r3, [sp, #4]
13266: 2900 cmp r1, #0
13268: bfb8 it lt
1326a: 4249 neglt r1, r1
1326c: 9100 str r1, [sp, #0]
1326e: 9b0a ldr r3, [sp, #40] ; 0x28
13270: 465a mov r2, fp
13272: 990b ldr r1, [sp, #44] ; 0x2c
13274: 4648 mov r0, r9
13276: 4dac ldr r5, [pc, #688] ; (13528 <_vsnprintf+0x578>)
13278: 47a8 blx r5
1327a: 4683 mov fp, r0
1327c: e152 b.n 13524 <_vsnprintf+0x574>
if((*format != 'i') && (*format != 'd')) {
1327e: 2864 cmp r0, #100 ; 0x64
13280: f000 8156 beq.w 13530 <_vsnprintf+0x580>
flags &= ~FLAGS_HASH; // no hash for dec format
13284: 4619 mov r1, r3
base = 10U;
13286: 220a movs r2, #10
13288: e11f b.n 134ca <_vsnprintf+0x51a>
const long long value = va_arg(va, long long);
1328a: 1df1 adds r1, r6, #7
1328c: f021 0107 bic.w r1, r1, #7
13290: f101 0608 add.w r6, r1, #8
13294: 6808 ldr r0, [r1, #0]
13296: 6849 ldr r1, [r1, #4]
idx = _ntoa_long_long(out, buffer, idx, maxlen, (unsigned long long)(value > 0 ? value : 0 - value), value < 0, base,
13298: 9308 str r3, [sp, #32]
1329a: 9507 str r5, [sp, #28]
1329c: 9706 str r7, [sp, #24]
1329e: 9204 str r2, [sp, #16]
132a0: 2300 movs r3, #0
132a2: 9305 str r3, [sp, #20]
132a4: 0fcb lsrs r3, r1, #31
132a6: 9302 str r3, [sp, #8]
132a8: 4602 mov r2, r0
132aa: 460b mov r3, r1
132ac: 2800 cmp r0, #0
132ae: f173 0100 sbcs.w r1, r3, #0
132b2: db09 blt.n 132c8 <_vsnprintf+0x318>
132b4: e9cd 2300 strd r2, r3, [sp]
132b8: 9b0a ldr r3, [sp, #40] ; 0x28
132ba: 465a mov r2, fp
132bc: 990b ldr r1, [sp, #44] ; 0x2c
132be: 4648 mov r0, r9
132c0: 4d9a ldr r5, [pc, #616] ; (1352c <_vsnprintf+0x57c>)
132c2: 47a8 blx r5
132c4: 4683 mov fp, r0
132c6: e12d b.n 13524 <_vsnprintf+0x574>
132c8: 4242 negs r2, r0
132ca: eb63 0343 sbc.w r3, r3, r3, lsl #1
132ce: e7f1 b.n 132b4 <_vsnprintf+0x304>
const long value = va_arg(va, long);
132d0: f106 0804 add.w r8, r6, #4
132d4: 6831 ldr r1, [r6, #0]
idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)(value > 0 ? value : 0 - value), value < 0, base, precision,
132d6: 9305 str r3, [sp, #20]
132d8: 9504 str r5, [sp, #16]
132da: 9703 str r7, [sp, #12]
132dc: 9202 str r2, [sp, #8]
132de: 0fcb lsrs r3, r1, #31
132e0: 9301 str r3, [sp, #4]
132e2: 2900 cmp r1, #0
132e4: bfb8 it lt
132e6: 4249 neglt r1, r1
132e8: 9100 str r1, [sp, #0]
132ea: 9b0a ldr r3, [sp, #40] ; 0x28
132ec: 465a mov r2, fp
132ee: 990b ldr r1, [sp, #44] ; 0x2c
132f0: 4648 mov r0, r9
132f2: 4d8d ldr r5, [pc, #564] ; (13528 <_vsnprintf+0x578>)
132f4: 47a8 blx r5
132f6: 4683 mov fp, r0
const long value = va_arg(va, long);
132f8: 4646 mov r6, r8
132fa: e113 b.n 13524 <_vsnprintf+0x574>
132fc: 7831 ldrb r1, [r6, #0]
const int value = (flags & FLAGS_CHAR) ? (char)va_arg(va, int) : (flags & FLAGS_SHORT) ? (short int)va_arg(va,
132fe: 3604 adds r6, #4
13300: e7ab b.n 1325a <_vsnprintf+0x2aa>
idx = _ntoa_long_long(out, buffer, idx, maxlen, va_arg(va, unsigned long long), false, base, precision, width, flags);
13302: 1df1 adds r1, r6, #7
13304: f021 0107 bic.w r1, r1, #7
13308: f101 0608 add.w r6, r1, #8
1330c: 9308 str r3, [sp, #32]
1330e: 9507 str r5, [sp, #28]
13310: 9706 str r7, [sp, #24]
13312: 2300 movs r3, #0
13314: 9204 str r2, [sp, #16]
13316: 9305 str r3, [sp, #20]
13318: 9302 str r3, [sp, #8]
1331a: e9d1 2300 ldrd r2, r3, [r1]
1331e: e9cd 2300 strd r2, r3, [sp]
13322: 9b0a ldr r3, [sp, #40] ; 0x28
13324: 465a mov r2, fp
13326: 990b ldr r1, [sp, #44] ; 0x2c
13328: 4648 mov r0, r9
1332a: 4d80 ldr r5, [pc, #512] ; (1352c <_vsnprintf+0x57c>)
1332c: 47a8 blx r5
1332e: 4683 mov fp, r0
13330: e0f8 b.n 13524 <_vsnprintf+0x574>
idx = _ntoa_long(out, buffer, idx, maxlen, va_arg(va, unsigned long), false, base, precision, width, flags);
13332: f106 0804 add.w r8, r6, #4
13336: 9305 str r3, [sp, #20]
13338: 9504 str r5, [sp, #16]
1333a: 9703 str r7, [sp, #12]
1333c: 9202 str r2, [sp, #8]
1333e: 2300 movs r3, #0
13340: 9301 str r3, [sp, #4]
13342: 6833 ldr r3, [r6, #0]
13344: 9300 str r3, [sp, #0]
13346: 9b0a ldr r3, [sp, #40] ; 0x28
13348: 465a mov r2, fp
1334a: 990b ldr r1, [sp, #44] ; 0x2c
1334c: 4648 mov r0, r9
1334e: 4d76 ldr r5, [pc, #472] ; (13528 <_vsnprintf+0x578>)
13350: 47a8 blx r5
13352: 4683 mov fp, r0
13354: 4646 mov r6, r8
13356: e0e5 b.n 13524 <_vsnprintf+0x574>
13358: 7831 ldrb r1, [r6, #0]
const unsigned int value = (flags & FLAGS_CHAR) ? (unsigned char)va_arg(va,
1335a: 3604 adds r6, #4
1335c: e0d4 b.n 13508 <_vsnprintf+0x558>
if(!(flags & FLAGS_LEFT)) {
1335e: f011 0f02 tst.w r1, #2
13362: f040 80ea bne.w 1353a <_vsnprintf+0x58a>
while(l++ < width) {
13366: 2d01 cmp r5, #1
13368: f240 8103 bls.w 13572 <_vsnprintf+0x5c2>
1336c: f10b 37ff add.w r7, fp, #4294967295
13370: 442f add r7, r5
out(' ', buffer, idx++, maxlen);
13372: f04f 0820 mov.w r8, #32
13376: 465a mov r2, fp
13378: 1c55 adds r5, r2, #1
1337a: 9b0a ldr r3, [sp, #40] ; 0x28
1337c: 990b ldr r1, [sp, #44] ; 0x2c
1337e: 4640 mov r0, r8
13380: 47c8 blx r9
13382: 462a mov r2, r5
while(l++ < width) {
13384: 42bd cmp r5, r7
13386: d1f7 bne.n 13378 <_vsnprintf+0x3c8>
out((char)va_arg(va, int), buffer, idx++, maxlen);
13388: 1d37 adds r7, r6, #4
1338a: f105 0b01 add.w fp, r5, #1
1338e: 9b0a ldr r3, [sp, #40] ; 0x28
13390: 462a mov r2, r5
13392: 990b ldr r1, [sp, #44] ; 0x2c
13394: 7830 ldrb r0, [r6, #0]
13396: 47c8 blx r9
13398: 463e mov r6, r7
format++;
1339a: 3401 adds r4, #1
break;
1339c: e616 b.n 12fcc <_vsnprintf+0x1c>
out((char)va_arg(va, int), buffer, idx++, maxlen);
1339e: 9e0c ldr r6, [sp, #48] ; 0x30
133a0: 46bb mov fp, r7
133a2: e7fa b.n 1339a <_vsnprintf+0x3ea>
const char * p = va_arg(va, char *);
133a4: 1d33 adds r3, r6, #4
133a6: 930e str r3, [sp, #56] ; 0x38
133a8: 6833 ldr r3, [r6, #0]
133aa: 461a mov r2, r3
133ac: 930c str r3, [sp, #48] ; 0x30
unsigned int l = _strnlen_s(p, precision ? precision : (size_t) -1);
133ae: 2f00 cmp r7, #0
133b0: bf14 ite ne
133b2: 463b movne r3, r7
133b4: f04f 33ff moveq.w r3, #4294967295
for(s = str; *s && maxsize--; ++s);
133b8: 7810 ldrb r0, [r2, #0]
133ba: 2800 cmp r0, #0
133bc: f000 80db beq.w 13576 <_vsnprintf+0x5c6>
133c0: f812 6f01 ldrb.w r6, [r2, #1]!
133c4: b10e cbz r6, 133ca <_vsnprintf+0x41a>
133c6: 3b01 subs r3, #1
133c8: d1fa bne.n 133c0 <_vsnprintf+0x410>
return (unsigned int)(s - str);
133ca: 9b0c ldr r3, [sp, #48] ; 0x30
133cc: 1ad3 subs r3, r2, r3
133ce: 930d str r3, [sp, #52] ; 0x34
if(flags & FLAGS_PRECISION) {
133d0: f411 6a80 ands.w sl, r1, #1024 ; 0x400
133d4: d003 beq.n 133de <_vsnprintf+0x42e>
l = (l < precision ? l : precision);
133d6: 42bb cmp r3, r7
133d8: bf28 it cs
133da: 463b movcs r3, r7
133dc: 930d str r3, [sp, #52] ; 0x34
if(!(flags & FLAGS_LEFT)) {
133de: f011 0302 ands.w r3, r1, #2
133e2: 930f str r3, [sp, #60] ; 0x3c
133e4: f040 80ce bne.w 13584 <_vsnprintf+0x5d4>
while(l++ < width) {
133e8: 990d ldr r1, [sp, #52] ; 0x34
133ea: 460b mov r3, r1
133ec: 3301 adds r3, #1
133ee: 428d cmp r5, r1
133f0: f240 80c3 bls.w 1357a <_vsnprintf+0x5ca>
133f4: eb05 080b add.w r8, r5, fp
133f8: eba8 0801 sub.w r8, r8, r1
out(' ', buffer, idx++, maxlen);
133fc: 465a mov r2, fp
133fe: 1c56 adds r6, r2, #1
13400: 9b0a ldr r3, [sp, #40] ; 0x28
13402: 990b ldr r1, [sp, #44] ; 0x2c
13404: 2020 movs r0, #32
13406: 47c8 blx r9
13408: 4632 mov r2, r6
while(l++ < width) {
1340a: 4546 cmp r6, r8
1340c: d1f7 bne.n 133fe <_vsnprintf+0x44e>
1340e: 1c6b adds r3, r5, #1
13410: 930d str r3, [sp, #52] ; 0x34
while((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) {
13412: 9b0c ldr r3, [sp, #48] ; 0x30
13414: 7818 ldrb r0, [r3, #0]
13416: 2800 cmp r0, #0
13418: f000 80b2 beq.w 13580 <_vsnprintf+0x5d0>
1341c: f8dd 8030 ldr.w r8, [sp, #48] ; 0x30
13420: 4632 mov r2, r6
13422: 4656 mov r6, sl
13424: e009 b.n 1343a <_vsnprintf+0x48a>
13426: 461f mov r7, r3
out(*(p++), buffer, idx++, maxlen);
13428: f102 0b01 add.w fp, r2, #1
1342c: 9b0a ldr r3, [sp, #40] ; 0x28
1342e: 990b ldr r1, [sp, #44] ; 0x2c
13430: 47c8 blx r9
while((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) {
13432: f818 0f01 ldrb.w r0, [r8, #1]!
13436: b130 cbz r0, 13446 <_vsnprintf+0x496>
out(*(p++), buffer, idx++, maxlen);
13438: 465a mov r2, fp
while((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) {
1343a: 2e00 cmp r6, #0
1343c: d0f4 beq.n 13428 <_vsnprintf+0x478>
1343e: 1e7b subs r3, r7, #1
13440: 2f00 cmp r7, #0
13442: d1f0 bne.n 13426 <_vsnprintf+0x476>
13444: 4693 mov fp, r2
if(flags & FLAGS_LEFT) {
13446: 9b0f ldr r3, [sp, #60] ; 0x3c
13448: 2b00 cmp r3, #0
1344a: f040 809f bne.w 1358c <_vsnprintf+0x5dc>
format++;
1344e: 3401 adds r4, #1
const char * p = va_arg(va, char *);
13450: 9e0e ldr r6, [sp, #56] ; 0x38
break;
13452: e5bb b.n 12fcc <_vsnprintf+0x1c>
idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)((uintptr_t)va_arg(va, void *)), false, 16U, precision, width,
13454: 1d35 adds r5, r6, #4
flags |= FLAGS_ZEROPAD | FLAGS_UPPERCASE;
13456: f041 0121 orr.w r1, r1, #33 ; 0x21
idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)((uintptr_t)va_arg(va, void *)), false, 16U, precision, width,
1345a: 9105 str r1, [sp, #20]
1345c: 2308 movs r3, #8
1345e: 9304 str r3, [sp, #16]
13460: 9703 str r7, [sp, #12]
13462: 2310 movs r3, #16
13464: 9302 str r3, [sp, #8]
13466: 2300 movs r3, #0
13468: 9301 str r3, [sp, #4]
1346a: 6833 ldr r3, [r6, #0]
1346c: 9300 str r3, [sp, #0]
1346e: 9b0a ldr r3, [sp, #40] ; 0x28
13470: 465a mov r2, fp
13472: 990b ldr r1, [sp, #44] ; 0x2c
13474: 4648 mov r0, r9
13476: 4e2c ldr r6, [pc, #176] ; (13528 <_vsnprintf+0x578>)
13478: 47b0 blx r6
1347a: 4683 mov fp, r0
format++;
1347c: 3401 adds r4, #1
idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)((uintptr_t)va_arg(va, void *)), false, 16U, precision, width,
1347e: 462e mov r6, r5
break;
13480: e5a4 b.n 12fcc <_vsnprintf+0x1c>
out('%', buffer, idx++, maxlen);
13482: f10b 0501 add.w r5, fp, #1
13486: 9b0a ldr r3, [sp, #40] ; 0x28
13488: 465a mov r2, fp
1348a: 990b ldr r1, [sp, #44] ; 0x2c
1348c: 2025 movs r0, #37 ; 0x25
1348e: 47c8 blx r9
format++;
13490: 3401 adds r4, #1
out('%', buffer, idx++, maxlen);
13492: 46ab mov fp, r5
break;
13494: e59a b.n 12fcc <_vsnprintf+0x1c>
default :
out(*format, buffer, idx++, maxlen);
13496: f10b 0501 add.w r5, fp, #1
1349a: 9b0a ldr r3, [sp, #40] ; 0x28
1349c: 465a mov r2, fp
1349e: 990b ldr r1, [sp, #44] ; 0x2c
134a0: 47c8 blx r9
format++;
134a2: 3401 adds r4, #1
out(*format, buffer, idx++, maxlen);
134a4: 46ab mov fp, r5
break;
134a6: e591 b.n 12fcc <_vsnprintf+0x1c>
}
}
// termination
out((char)0, buffer, idx < maxlen ? idx : maxlen - 1U, maxlen);
134a8: 9a0a ldr r2, [sp, #40] ; 0x28
134aa: 4593 cmp fp, r2
134ac: bf2c ite cs
134ae: f102 32ff addcs.w r2, r2, #4294967295
134b2: 465a movcc r2, fp
134b4: 9b0a ldr r3, [sp, #40] ; 0x28
134b6: 990b ldr r1, [sp, #44] ; 0x2c
134b8: 2000 movs r0, #0
134ba: 47c8 blx r9
// return written chars without terminating \0
return (int)idx;
}
134bc: 4658 mov r0, fp
134be: b011 add sp, #68 ; 0x44
134c0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
flags |= FLAGS_UPPERCASE;
134c4: f041 0120 orr.w r1, r1, #32
base = 16U;
134c8: 2210 movs r2, #16
flags &= ~(FLAGS_PLUS | FLAGS_SPACE);
134ca: f021 030c bic.w r3, r1, #12
if(flags & FLAGS_PRECISION) {
134ce: f411 6f80 tst.w r1, #1024 ; 0x400
134d2: d007 beq.n 134e4 <_vsnprintf+0x534>
flags &= ~FLAGS_ZEROPAD;
134d4: f021 030d bic.w r3, r1, #13
if((*format == 'i') || (*format == 'd')) {
134d8: 2869 cmp r0, #105 ; 0x69
134da: f43f aeae beq.w 1323a <_vsnprintf+0x28a>
134de: 2864 cmp r0, #100 ; 0x64
134e0: f43f aeab beq.w 1323a <_vsnprintf+0x28a>
if(flags & FLAGS_LONG_LONG) {
134e4: f413 7f00 tst.w r3, #512 ; 0x200
134e8: f47f af0b bne.w 13302 <_vsnprintf+0x352>
else if(flags & FLAGS_LONG) {
134ec: f413 7f80 tst.w r3, #256 ; 0x100
134f0: f47f af1f bne.w 13332 <_vsnprintf+0x382>
unsigned int) : (flags & FLAGS_SHORT) ? (unsigned short int)va_arg(va, unsigned int) : va_arg(va, unsigned int);
134f4: f013 0f40 tst.w r3, #64 ; 0x40
134f8: f47f af2e bne.w 13358 <_vsnprintf+0x3a8>
134fc: f013 0f80 tst.w r3, #128 ; 0x80
13500: bf14 ite ne
13502: 8831 ldrhne r1, [r6, #0]
13504: 6831 ldreq r1, [r6, #0]
13506: 3604 adds r6, #4
idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags);
13508: 9305 str r3, [sp, #20]
1350a: 9504 str r5, [sp, #16]
1350c: 9703 str r7, [sp, #12]
1350e: 9202 str r2, [sp, #8]
13510: 2300 movs r3, #0
13512: 9301 str r3, [sp, #4]
13514: 9100 str r1, [sp, #0]
13516: 9b0a ldr r3, [sp, #40] ; 0x28
13518: 465a mov r2, fp
1351a: 990b ldr r1, [sp, #44] ; 0x2c
1351c: 4648 mov r0, r9
1351e: 4d02 ldr r5, [pc, #8] ; (13528 <_vsnprintf+0x578>)
13520: 47a8 blx r5
13522: 4683 mov fp, r0
format++;
13524: 3401 adds r4, #1
break;
13526: e551 b.n 12fcc <_vsnprintf+0x1c>
13528: 00012e71 .word 0x00012e71
1352c: 00012ef5 .word 0x00012ef5
if(flags & FLAGS_PRECISION) {
13530: f411 6f80 tst.w r1, #1024 ; 0x400
13534: d13c bne.n 135b0 <_vsnprintf+0x600>
base = 10U;
13536: 220a movs r2, #10
13538: e67f b.n 1323a <_vsnprintf+0x28a>
out((char)va_arg(va, int), buffer, idx++, maxlen);
1353a: 1d33 adds r3, r6, #4
1353c: 930c str r3, [sp, #48] ; 0x30
1353e: f10b 0701 add.w r7, fp, #1
13542: 9b0a ldr r3, [sp, #40] ; 0x28
13544: 465a mov r2, fp
13546: 990b ldr r1, [sp, #44] ; 0x2c
13548: 7830 ldrb r0, [r6, #0]
1354a: 47c8 blx r9
while(l++ < width) {
1354c: 2d01 cmp r5, #1
1354e: f67f af26 bls.w 1339e <_vsnprintf+0x3ee>
13552: eb05 0a0b add.w sl, r5, fp
out(' ', buffer, idx++, maxlen);
13556: f04f 0820 mov.w r8, #32
1355a: 463a mov r2, r7
1355c: 1c56 adds r6, r2, #1
1355e: 9b0a ldr r3, [sp, #40] ; 0x28
13560: 990b ldr r1, [sp, #44] ; 0x2c
13562: 4640 mov r0, r8
13564: 47c8 blx r9
13566: 4632 mov r2, r6
while(l++ < width) {
13568: 45b2 cmp sl, r6
1356a: d1f7 bne.n 1355c <_vsnprintf+0x5ac>
1356c: 44ab add fp, r5
out((char)va_arg(va, int), buffer, idx++, maxlen);
1356e: 9e0c ldr r6, [sp, #48] ; 0x30
13570: e713 b.n 1339a <_vsnprintf+0x3ea>
while(l++ < width) {
13572: 465d mov r5, fp
13574: e708 b.n 13388 <_vsnprintf+0x3d8>
for(s = str; *s && maxsize--; ++s);
13576: 9a0c ldr r2, [sp, #48] ; 0x30
13578: e727 b.n 133ca <_vsnprintf+0x41a>
while(l++ < width) {
1357a: 930d str r3, [sp, #52] ; 0x34
1357c: 465e mov r6, fp
1357e: e748 b.n 13412 <_vsnprintf+0x462>
while((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) {
13580: 46b3 mov fp, r6
13582: e764 b.n 1344e <_vsnprintf+0x49e>
13584: 465e mov r6, fp
13586: 2800 cmp r0, #0
13588: f47f af48 bne.w 1341c <_vsnprintf+0x46c>
while(l++ < width) {
1358c: 9a0d ldr r2, [sp, #52] ; 0x34
1358e: 4295 cmp r5, r2
13590: f67f af5d bls.w 1344e <_vsnprintf+0x49e>
13594: 445d add r5, fp
13596: 1aad subs r5, r5, r2
13598: 465a mov r2, fp
out(' ', buffer, idx++, maxlen);
1359a: 2620 movs r6, #32
1359c: f102 0b01 add.w fp, r2, #1
135a0: 9b0a ldr r3, [sp, #40] ; 0x28
135a2: 990b ldr r1, [sp, #44] ; 0x2c
135a4: 4630 mov r0, r6
135a6: 47c8 blx r9
135a8: 465a mov r2, fp
while(l++ < width) {
135aa: 45ab cmp fp, r5
135ac: d1f6 bne.n 1359c <_vsnprintf+0x5ec>
135ae: e74e b.n 1344e <_vsnprintf+0x49e>
flags &= ~FLAGS_ZEROPAD;
135b0: f021 0311 bic.w r3, r1, #17
base = 10U;
135b4: 220a movs r2, #10
135b6: e640 b.n 1323a <_vsnprintf+0x28a>
flags &= ~FLAGS_ZEROPAD;
135b8: f021 0311 bic.w r3, r1, #17
base = 10U;
135bc: 220a movs r2, #10
135be: e63c b.n 1323a <_vsnprintf+0x28a>
base = 16U;
135c0: 2210 movs r2, #16
135c2: e782 b.n 134ca <_vsnprintf+0x51a>
base = 8U;
135c4: 2208 movs r2, #8
135c6: e780 b.n 134ca <_vsnprintf+0x51a>
base = 2U;
135c8: 2202 movs r2, #2
135ca: e77e b.n 134ca <_vsnprintf+0x51a>
000135cc <lv_vsnprintf>:
va_end(va);
return ret;
}
int lv_vsnprintf(char * buffer, size_t count, const char * format, va_list va)
{
135cc: b510 push {r4, lr}
135ce: b082 sub sp, #8
return _vsnprintf(_out_buffer, buffer, count, format, va);
135d0: 9300 str r3, [sp, #0]
135d2: 4613 mov r3, r2
135d4: 460a mov r2, r1
135d6: 4601 mov r1, r0
135d8: 4802 ldr r0, [pc, #8] ; (135e4 <lv_vsnprintf+0x18>)
135da: 4c03 ldr r4, [pc, #12] ; (135e8 <lv_vsnprintf+0x1c>)
135dc: 47a0 blx r4
}
135de: b002 add sp, #8
135e0: bd10 pop {r4, pc}
135e2: bf00 nop
135e4: 00012ca7 .word 0x00012ca7
135e8: 00012fb1 .word 0x00012fb1
000135ec <_lv_task_core_init>:
/**
* Init the lv_task module
*/
void _lv_task_core_init(void)
{
135ec: b508 push {r3, lr}
_lv_ll_init(&LV_GC_ROOT(_lv_task_ll), sizeof(lv_task_t));
135ee: 2118 movs r1, #24
135f0: 4804 ldr r0, [pc, #16] ; (13604 <_lv_task_core_init+0x18>)
135f2: 4b05 ldr r3, [pc, #20] ; (13608 <_lv_task_core_init+0x1c>)
135f4: 4798 blx r3
task_list_changed = false;
135f6: 4b05 ldr r3, [pc, #20] ; (1360c <_lv_task_core_init+0x20>)
135f8: 2200 movs r2, #0
135fa: 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;
135fc: 2201 movs r2, #1
135fe: 705a strb r2, [r3, #1]
13600: bd08 pop {r3, pc}
13602: bf00 nop
13604: 20006c80 .word 0x20006c80
13608: 00011ef9 .word 0x00011ef9
1360c: 20006bb8 .word 0x20006bb8
00013610 <lv_task_create_basic>:
{
13610: b5f0 push {r4, r5, r6, r7, lr}
13612: b083 sub sp, #12
tmp = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll));
13614: 4837 ldr r0, [pc, #220] ; (136f4 <lv_task_create_basic+0xe4>)
13616: 4b38 ldr r3, [pc, #224] ; (136f8 <lv_task_create_basic+0xe8>)
13618: 4798 blx r3
if(NULL == tmp) {
1361a: b310 cbz r0, 13662 <lv_task_create_basic+0x52>
1361c: 4604 mov r4, r0
tmp = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), tmp);
1361e: 4e35 ldr r6, [pc, #212] ; (136f4 <lv_task_create_basic+0xe4>)
13620: 4d36 ldr r5, [pc, #216] ; (136fc <lv_task_create_basic+0xec>)
if(tmp->prio <= DEF_PRIO) {
13622: 7d23 ldrb r3, [r4, #20]
13624: f003 0307 and.w r3, r3, #7
13628: 2b03 cmp r3, #3
1362a: dd30 ble.n 1368e <lv_task_create_basic+0x7e>
tmp = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), tmp);
1362c: 4621 mov r1, r4
1362e: 4630 mov r0, r6
13630: 47a8 blx r5
} while(tmp != NULL);
13632: 4604 mov r4, r0
13634: 2800 cmp r0, #0
13636: d1f4 bne.n 13622 <lv_task_create_basic+0x12>
new_task = _lv_ll_ins_tail(&LV_GC_ROOT(_lv_task_ll));
13638: 482e ldr r0, [pc, #184] ; (136f4 <lv_task_create_basic+0xe4>)
1363a: 4b31 ldr r3, [pc, #196] ; (13700 <lv_task_create_basic+0xf0>)
1363c: 4798 blx r3
1363e: 4605 mov r5, r0
LV_ASSERT_MEM(new_task);
13640: 4b30 ldr r3, [pc, #192] ; (13704 <lv_task_create_basic+0xf4>)
13642: 4798 blx r3
13644: 2800 cmp r0, #0
13646: d152 bne.n 136ee <lv_task_create_basic+0xde>
13648: 4b2f ldr r3, [pc, #188] ; (13708 <lv_task_create_basic+0xf8>)
1364a: 9300 str r3, [sp, #0]
1364c: 22e5 movs r2, #229 ; 0xe5
1364e: 492f ldr r1, [pc, #188] ; (1370c <lv_task_create_basic+0xfc>)
13650: 2003 movs r0, #3
13652: 4c2f ldr r4, [pc, #188] ; (13710 <lv_task_create_basic+0x100>)
13654: 47a0 blx r4
13656: 462a mov r2, r5
13658: 2300 movs r3, #0
1365a: 482e ldr r0, [pc, #184] ; (13714 <lv_task_create_basic+0x104>)
1365c: 492e ldr r1, [pc, #184] ; (13718 <lv_task_create_basic+0x108>)
1365e: 4788 blx r1
13660: e7fe b.n 13660 <lv_task_create_basic+0x50>
new_task = _lv_ll_ins_head(&LV_GC_ROOT(_lv_task_ll));
13662: 4824 ldr r0, [pc, #144] ; (136f4 <lv_task_create_basic+0xe4>)
13664: 4b2d ldr r3, [pc, #180] ; (1371c <lv_task_create_basic+0x10c>)
13666: 4798 blx r3
13668: 4605 mov r5, r0
LV_ASSERT_MEM(new_task);
1366a: 4b26 ldr r3, [pc, #152] ; (13704 <lv_task_create_basic+0xf4>)
1366c: 4798 blx r3
1366e: b960 cbnz r0, 1368a <lv_task_create_basic+0x7a>
13670: 4b25 ldr r3, [pc, #148] ; (13708 <lv_task_create_basic+0xf8>)
13672: 9300 str r3, [sp, #0]
13674: 22d3 movs r2, #211 ; 0xd3
13676: 4925 ldr r1, [pc, #148] ; (1370c <lv_task_create_basic+0xfc>)
13678: 2003 movs r0, #3
1367a: 4c25 ldr r4, [pc, #148] ; (13710 <lv_task_create_basic+0x100>)
1367c: 47a0 blx r4
1367e: 462a mov r2, r5
13680: 2300 movs r3, #0
13682: 4824 ldr r0, [pc, #144] ; (13714 <lv_task_create_basic+0x104>)
13684: 4924 ldr r1, [pc, #144] ; (13718 <lv_task_create_basic+0x108>)
13686: 4788 blx r1
13688: e7fe b.n 13688 <lv_task_create_basic+0x78>
if(new_task == NULL) return NULL;
1368a: b95d cbnz r5, 136a4 <lv_task_create_basic+0x94>
1368c: e01f b.n 136ce <lv_task_create_basic+0xbe>
new_task = _lv_ll_ins_prev(&LV_GC_ROOT(_lv_task_ll), tmp);
1368e: 4621 mov r1, r4
13690: 4818 ldr r0, [pc, #96] ; (136f4 <lv_task_create_basic+0xe4>)
13692: 4b23 ldr r3, [pc, #140] ; (13720 <lv_task_create_basic+0x110>)
13694: 4798 blx r3
13696: 4605 mov r5, r0
LV_ASSERT_MEM(new_task);
13698: 4b1a ldr r3, [pc, #104] ; (13704 <lv_task_create_basic+0xf4>)
1369a: 4798 blx r3
1369c: b1d0 cbz r0, 136d4 <lv_task_create_basic+0xc4>
if(new_task == NULL) return NULL;
1369e: b1b5 cbz r5, 136ce <lv_task_create_basic+0xbe>
if(tmp == NULL) {
136a0: 2c00 cmp r4, #0
136a2: d0c9 beq.n 13638 <lv_task_create_basic+0x28>
task_list_changed = true;
136a4: 4c1f ldr r4, [pc, #124] ; (13724 <lv_task_create_basic+0x114>)
136a6: 2601 movs r6, #1
136a8: 7026 strb r6, [r4, #0]
new_task->period = DEF_PERIOD;
136aa: f44f 73fa mov.w r3, #500 ; 0x1f4
136ae: 602b str r3, [r5, #0]
new_task->task_cb = NULL;
136b0: 2700 movs r7, #0
136b2: 60af str r7, [r5, #8]
new_task->prio = DEF_PRIO;
136b4: 7d2b ldrb r3, [r5, #20]
136b6: 2203 movs r2, #3
136b8: f362 0302 bfi r3, r2, #0, #3
136bc: 752b strb r3, [r5, #20]
new_task->repeat_count = -1;
136be: f04f 33ff mov.w r3, #4294967295
136c2: 612b str r3, [r5, #16]
new_task->last_run = lv_tick_get();
136c4: 4b18 ldr r3, [pc, #96] ; (13728 <lv_task_create_basic+0x118>)
136c6: 4798 blx r3
136c8: 6068 str r0, [r5, #4]
new_task->user_data = NULL;
136ca: 60ef str r7, [r5, #12]
task_created = true;
136cc: 70a6 strb r6, [r4, #2]
}
136ce: 4628 mov r0, r5
136d0: b003 add sp, #12
136d2: bdf0 pop {r4, r5, r6, r7, pc}
LV_ASSERT_MEM(new_task);
136d4: 4b0c ldr r3, [pc, #48] ; (13708 <lv_task_create_basic+0xf8>)
136d6: 9300 str r3, [sp, #0]
136d8: 22db movs r2, #219 ; 0xdb
136da: 490c ldr r1, [pc, #48] ; (1370c <lv_task_create_basic+0xfc>)
136dc: 2003 movs r0, #3
136de: 4c0c ldr r4, [pc, #48] ; (13710 <lv_task_create_basic+0x100>)
136e0: 47a0 blx r4
136e2: 462a mov r2, r5
136e4: 2300 movs r3, #0
136e6: 480b ldr r0, [pc, #44] ; (13714 <lv_task_create_basic+0x104>)
136e8: 490b ldr r1, [pc, #44] ; (13718 <lv_task_create_basic+0x108>)
136ea: 4788 blx r1
136ec: e7fe b.n 136ec <lv_task_create_basic+0xdc>
if(new_task == NULL) return NULL;
136ee: 2d00 cmp r5, #0
136f0: d1d8 bne.n 136a4 <lv_task_create_basic+0x94>
136f2: e7ec b.n 136ce <lv_task_create_basic+0xbe>
136f4: 20006c80 .word 0x20006c80
136f8: 00011fa9 .word 0x00011fa9
136fc: 00011fbd .word 0x00011fbd
13700: 00011f5d .word 0x00011f5d
13704: 000022b1 .word 0x000022b1
13708: 000294ac .word 0x000294ac
1370c: 000294d4 .word 0x000294d4
13710: 0001225d .word 0x0001225d
13714: 00023fd8 .word 0x00023fd8
13718: 000022b9 .word 0x000022b9
1371c: 00011f11 .word 0x00011f11
13720: 00012015 .word 0x00012015
13724: 20006bb8 .word 0x20006bb8
13728: 00011059 .word 0x00011059
0001372c <lv_task_del>:
{
1372c: b510 push {r4, lr}
1372e: 4604 mov r4, r0
_lv_ll_remove(&LV_GC_ROOT(_lv_task_ll), task);
13730: 4601 mov r1, r0
13732: 4809 ldr r0, [pc, #36] ; (13758 <lv_task_del+0x2c>)
13734: 4b09 ldr r3, [pc, #36] ; (1375c <lv_task_del+0x30>)
13736: 4798 blx r3
task_list_changed = true;
13738: 2201 movs r2, #1
1373a: 4b09 ldr r3, [pc, #36] ; (13760 <lv_task_del+0x34>)
1373c: 701a strb r2, [r3, #0]
lv_mem_free(task);
1373e: 4620 mov r0, r4
13740: 4b08 ldr r3, [pc, #32] ; (13764 <lv_task_del+0x38>)
13742: 4798 blx r3
if(LV_GC_ROOT(_lv_task_act) == task) task_deleted = true; /*The active task was deleted*/
13744: 4b08 ldr r3, [pc, #32] ; (13768 <lv_task_del+0x3c>)
13746: 681b ldr r3, [r3, #0]
13748: 429c cmp r4, r3
1374a: d000 beq.n 1374e <lv_task_del+0x22>
1374c: bd10 pop {r4, pc}
1374e: 2201 movs r2, #1
13750: 4b03 ldr r3, [pc, #12] ; (13760 <lv_task_del+0x34>)
13752: 70da strb r2, [r3, #3]
}
13754: e7fa b.n 1374c <lv_task_del+0x20>
13756: bf00 nop
13758: 20006c80 .word 0x20006c80
1375c: 00012095 .word 0x00012095
13760: 20006bb8 .word 0x20006bb8
13764: 000124c5 .word 0x000124c5
13768: 20006d4c .word 0x20006d4c
0001376c <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)
{
1376c: b510 push {r4, lr}
1376e: 4604 mov r4, r0
* @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);
13770: 6840 ldr r0, [r0, #4]
13772: 4b12 ldr r3, [pc, #72] ; (137bc <lv_task_exec+0x50>)
13774: 4798 blx r3
if(elp >= task->period)
13776: 6823 ldr r3, [r4, #0]
13778: 4298 cmp r0, r3
1377a: d201 bcs.n 13780 <lv_task_exec+0x14>
bool exec = false;
1377c: 2000 movs r0, #0
1377e: bd10 pop {r4, pc}
task->last_run = lv_tick_get();
13780: 4b0f ldr r3, [pc, #60] ; (137c0 <lv_task_exec+0x54>)
13782: 4798 blx r3
13784: 6060 str r0, [r4, #4]
task_deleted = false;
13786: 4b0f ldr r3, [pc, #60] ; (137c4 <lv_task_exec+0x58>)
13788: 2200 movs r2, #0
1378a: 70da strb r2, [r3, #3]
task_created = false;
1378c: 709a strb r2, [r3, #2]
if(task->task_cb) task->task_cb(task);
1378e: 68a3 ldr r3, [r4, #8]
13790: b12b cbz r3, 1379e <lv_task_exec+0x32>
13792: 4620 mov r0, r4
13794: 4798 blx r3
if(task_deleted == false) { /*The task might be deleted by itself as well*/
13796: 4b0b ldr r3, [pc, #44] ; (137c4 <lv_task_exec+0x58>)
13798: 78d8 ldrb r0, [r3, #3]
1379a: b100 cbz r0, 1379e <lv_task_exec+0x32>
}
1379c: bd10 pop {r4, pc}
if(task->repeat_count > 0) {
1379e: 6923 ldr r3, [r4, #16]
137a0: 2b00 cmp r3, #0
task->repeat_count--;
137a2: bfc4 itt gt
137a4: f103 33ff addgt.w r3, r3, #4294967295
137a8: 6123 strgt r3, [r4, #16]
if(task->repeat_count == 0) {
137aa: 6923 ldr r3, [r4, #16]
137ac: b10b cbz r3, 137b2 <lv_task_exec+0x46>
exec = true;
137ae: 2001 movs r0, #1
137b0: e7f4 b.n 1379c <lv_task_exec+0x30>
lv_task_del(task);
137b2: 4620 mov r0, r4
137b4: 4b04 ldr r3, [pc, #16] ; (137c8 <lv_task_exec+0x5c>)
137b6: 4798 blx r3
exec = true;
137b8: 2001 movs r0, #1
137ba: bd10 pop {r4, pc}
137bc: 00011071 .word 0x00011071
137c0: 00011059 .word 0x00011059
137c4: 20006bb8 .word 0x20006bb8
137c8: 0001372d .word 0x0001372d
000137cc <lv_task_handler>:
{
137cc: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
if(already_running) return 1;
137d0: 4b58 ldr r3, [pc, #352] ; (13934 <lv_task_handler+0x168>)
137d2: 791b ldrb r3, [r3, #4]
137d4: 2b00 cmp r3, #0
137d6: f040 80a9 bne.w 1392c <lv_task_handler+0x160>
already_running = true;
137da: 4b56 ldr r3, [pc, #344] ; (13934 <lv_task_handler+0x168>)
137dc: 2201 movs r2, #1
137de: 711a strb r2, [r3, #4]
if(lv_task_run == false) {
137e0: 785b ldrb r3, [r3, #1]
137e2: b92b cbnz r3, 137f0 <lv_task_handler+0x24>
already_running = false; /*Release mutex*/
137e4: 2200 movs r2, #0
137e6: 4b53 ldr r3, [pc, #332] ; (13934 <lv_task_handler+0x168>)
137e8: 711a strb r2, [r3, #4]
return 1;
137ea: 2001 movs r0, #1
137ec: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
handler_start = lv_tick_get();
137f0: 4b51 ldr r3, [pc, #324] ; (13938 <lv_task_handler+0x16c>)
137f2: 4798 blx r3
137f4: 4b4f ldr r3, [pc, #316] ; (13934 <lv_task_handler+0x168>)
137f6: 6098 str r0, [r3, #8]
lv_task_t * task_interrupter = NULL;
137f8: 2600 movs r6, #0
task_deleted = false;
137fa: 461d mov r5, r3
LV_GC_ROOT(_lv_task_act) = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll));
137fc: f8df 814c ldr.w r8, [pc, #332] ; 1394c <lv_task_handler+0x180>
13800: 4c4e ldr r4, [pc, #312] ; (1393c <lv_task_handler+0x170>)
next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), LV_GC_ROOT(_lv_task_act));
13802: f8df 9150 ldr.w r9, [pc, #336] ; 13954 <lv_task_handler+0x188>
13806: e06d b.n 138e4 <lv_task_handler+0x118>
LV_GC_ROOT(_lv_task_act) = next;
13808: 6027 str r7, [r4, #0]
task_interrupter = NULL; /*From this point only task after the interrupter comes, so
1380a: 2600 movs r6, #0
continue; /*Load the next task*/
1380c: e009 b.n 13822 <lv_task_handler+0x56>
lv_task_exec(LV_GC_ROOT(_lv_task_act));
1380e: 4b4c ldr r3, [pc, #304] ; (13940 <lv_task_handler+0x174>)
13810: 4798 blx r3
if(task_created || task_deleted) {
13812: 78ab ldrb r3, [r5, #2]
13814: bb33 cbnz r3, 13864 <lv_task_handler+0x98>
13816: 78eb ldrb r3, [r5, #3]
13818: bb23 cbnz r3, 13864 <lv_task_handler+0x98>
if(task_list_changed) {
1381a: 782b ldrb r3, [r5, #0]
1381c: 2b00 cmp r3, #0
1381e: d15f bne.n 138e0 <lv_task_handler+0x114>
LV_GC_ROOT(_lv_task_act) = next; /*Load the next task*/
13820: 6027 str r7, [r4, #0]
while(LV_GC_ROOT(_lv_task_act)) {
13822: 6821 ldr r1, [r4, #0]
13824: b1f1 cbz r1, 13864 <lv_task_handler+0x98>
next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), LV_GC_ROOT(_lv_task_act));
13826: 4640 mov r0, r8
13828: 47c8 blx r9
1382a: 4607 mov r7, r0
if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio == LV_TASK_PRIO_OFF) {
1382c: 6820 ldr r0, [r4, #0]
1382e: 7d03 ldrb r3, [r0, #20]
13830: f013 0307 ands.w r3, r3, #7
13834: d016 beq.n 13864 <lv_task_handler+0x98>
if(LV_GC_ROOT(_lv_task_act) == task_interrupter) {
13836: 4286 cmp r6, r0
13838: d0e6 beq.n 13808 <lv_task_handler+0x3c>
if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio == LV_TASK_PRIO_HIGHEST) {
1383a: 2b05 cmp r3, #5
1383c: d0e7 beq.n 1380e <lv_task_handler+0x42>
else if(task_interrupter) {
1383e: 2e00 cmp r6, #0
13840: d042 beq.n 138c8 <lv_task_handler+0xfc>
if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio > task_interrupter->prio) {
13842: 7d02 ldrb r2, [r0, #20]
13844: f002 0207 and.w r2, r2, #7
13848: 7d33 ldrb r3, [r6, #20]
1384a: f003 0307 and.w r3, r3, #7
1384e: 429a cmp r2, r3
13850: dddf ble.n 13812 <lv_task_handler+0x46>
if(lv_task_exec(LV_GC_ROOT(_lv_task_act))) {
13852: 4b3b ldr r3, [pc, #236] ; (13940 <lv_task_handler+0x174>)
13854: 4798 blx r3
13856: 2800 cmp r0, #0
13858: d0db beq.n 13812 <lv_task_handler+0x46>
if(!task_created && !task_deleted) {
1385a: 78ab ldrb r3, [r5, #2]
1385c: b913 cbnz r3, 13864 <lv_task_handler+0x98>
1385e: 78eb ldrb r3, [r5, #3]
13860: 2b00 cmp r3, #0
13862: d02f beq.n 138c4 <lv_task_handler+0xf8>
busy_time += lv_tick_elaps(handler_start);
13864: 4c33 ldr r4, [pc, #204] ; (13934 <lv_task_handler+0x168>)
13866: 68a0 ldr r0, [r4, #8]
13868: 4d36 ldr r5, [pc, #216] ; (13944 <lv_task_handler+0x178>)
1386a: 47a8 blx r5
1386c: 68e3 ldr r3, [r4, #12]
1386e: 4403 add r3, r0
13870: 60e3 str r3, [r4, #12]
uint32_t idle_period_time = lv_tick_elaps(idle_period_start);
13872: 6920 ldr r0, [r4, #16]
13874: 47a8 blx r5
if(idle_period_time >= IDLE_MEAS_PERIOD) {
13876: f5b0 7ffa cmp.w r0, #500 ; 0x1f4
1387a: d315 bcc.n 138a8 <lv_task_handler+0xdc>
idle_last = (uint32_t)((uint32_t)busy_time * 100) / IDLE_MEAS_PERIOD; /*Calculate the busy percentage*/
1387c: 68e2 ldr r2, [r4, #12]
1387e: 2364 movs r3, #100 ; 0x64
13880: fb03 f302 mul.w r3, r3, r2
13884: 4a30 ldr r2, [pc, #192] ; (13948 <lv_task_handler+0x17c>)
13886: fba2 2303 umull r2, r3, r2, r3
1388a: f3c3 1347 ubfx r3, r3, #5, #8
idle_last = idle_last > 100 ? 0 : 100 - idle_last; /*But we need idle time*/
1388e: 2b64 cmp r3, #100 ; 0x64
13890: bf9a itte ls
13892: f1c3 0364 rsbls r3, r3, #100 ; 0x64
13896: b2db uxtbls r3, r3
13898: 2300 movhi r3, #0
1389a: 4c26 ldr r4, [pc, #152] ; (13934 <lv_task_handler+0x168>)
1389c: 7523 strb r3, [r4, #20]
busy_time = 0;
1389e: 2300 movs r3, #0
138a0: 60e3 str r3, [r4, #12]
idle_period_start = lv_tick_get();
138a2: 4b25 ldr r3, [pc, #148] ; (13938 <lv_task_handler+0x16c>)
138a4: 4798 blx r3
138a6: 6120 str r0, [r4, #16]
time_till_next = LV_NO_TASK_READY;
138a8: f04f 32ff mov.w r2, #4294967295
138ac: 4b21 ldr r3, [pc, #132] ; (13934 <lv_task_handler+0x168>)
138ae: 619a str r2, [r3, #24]
next = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll));
138b0: 4826 ldr r0, [pc, #152] ; (1394c <lv_task_handler+0x180>)
138b2: 4b27 ldr r3, [pc, #156] ; (13950 <lv_task_handler+0x184>)
138b4: 4798 blx r3
while(next) {
138b6: 4604 mov r4, r0
138b8: 2800 cmp r0, #0
138ba: d031 beq.n 13920 <lv_task_handler+0x154>
uint32_t elp = lv_tick_elaps(task->last_run);
138bc: 4f21 ldr r7, [pc, #132] ; (13944 <lv_task_handler+0x178>)
if(delay < time_till_next)
138be: 4e1d ldr r6, [pc, #116] ; (13934 <lv_task_handler+0x168>)
next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), next); /*Find the next task*/
138c0: 4d22 ldr r5, [pc, #136] ; (1394c <lv_task_handler+0x180>)
138c2: e01d b.n 13900 <lv_task_handler+0x134>
task_interrupter = LV_GC_ROOT(_lv_task_act);
138c4: 6826 ldr r6, [r4, #0]
break;
138c6: e00d b.n 138e4 <lv_task_handler+0x118>
if(lv_task_exec(LV_GC_ROOT(_lv_task_act))) {
138c8: 4b1d ldr r3, [pc, #116] ; (13940 <lv_task_handler+0x174>)
138ca: 4798 blx r3
138cc: 2800 cmp r0, #0
138ce: d0a0 beq.n 13812 <lv_task_handler+0x46>
if(!task_created && !task_deleted) {
138d0: 78ab ldrb r3, [r5, #2]
138d2: 2b00 cmp r3, #0
138d4: d1c6 bne.n 13864 <lv_task_handler+0x98>
138d6: 78eb ldrb r3, [r5, #3]
138d8: 2b00 cmp r3, #0
138da: d1c3 bne.n 13864 <lv_task_handler+0x98>
task_interrupter = LV_GC_ROOT(_lv_task_act); /*Check all tasks again from the highest priority */
138dc: 6826 ldr r6, [r4, #0]
break;
138de: e001 b.n 138e4 <lv_task_handler+0x118>
task_list_changed = false;
138e0: 2600 movs r6, #0
138e2: 702e strb r6, [r5, #0]
task_deleted = false;
138e4: 2300 movs r3, #0
138e6: 70eb strb r3, [r5, #3]
task_created = false;
138e8: 70ab strb r3, [r5, #2]
LV_GC_ROOT(_lv_task_act) = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll));
138ea: 4640 mov r0, r8
138ec: 4b18 ldr r3, [pc, #96] ; (13950 <lv_task_handler+0x184>)
138ee: 4798 blx r3
138f0: 6020 str r0, [r4, #0]
while(LV_GC_ROOT(_lv_task_act)) {
138f2: e796 b.n 13822 <lv_task_handler+0x56>
next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), next); /*Find the next task*/
138f4: 4621 mov r1, r4
138f6: 4628 mov r0, r5
138f8: 4b16 ldr r3, [pc, #88] ; (13954 <lv_task_handler+0x188>)
138fa: 4798 blx r3
while(next) {
138fc: 4604 mov r4, r0
138fe: b178 cbz r0, 13920 <lv_task_handler+0x154>
if(next->prio != LV_TASK_PRIO_OFF) {
13900: 7d23 ldrb r3, [r4, #20]
13902: f013 0f07 tst.w r3, #7
13906: d0f5 beq.n 138f4 <lv_task_handler+0x128>
uint32_t elp = lv_tick_elaps(task->last_run);
13908: 6860 ldr r0, [r4, #4]
1390a: 47b8 blx r7
if(elp >= task->period)
1390c: 6823 ldr r3, [r4, #0]
1390e: 4298 cmp r0, r3
return 0;
return task->period - elp;
13910: bf34 ite cc
13912: 1a1b subcc r3, r3, r0
return 0;
13914: 2300 movcs r3, #0
if(delay < time_till_next)
13916: 69b2 ldr r2, [r6, #24]
13918: 429a cmp r2, r3
time_till_next = delay;
1391a: bf88 it hi
1391c: 61b3 strhi r3, [r6, #24]
1391e: e7e9 b.n 138f4 <lv_task_handler+0x128>
already_running = false; /*Release the mutex*/
13920: 4b04 ldr r3, [pc, #16] ; (13934 <lv_task_handler+0x168>)
13922: 2200 movs r2, #0
13924: 711a strb r2, [r3, #4]
return time_till_next;
13926: 6998 ldr r0, [r3, #24]
13928: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
if(already_running) return 1;
1392c: 2001 movs r0, #1
}
1392e: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
13932: bf00 nop
13934: 20006bb8 .word 0x20006bb8
13938: 00011059 .word 0x00011059
1393c: 20006d4c .word 0x20006d4c
13940: 0001376d .word 0x0001376d
13944: 00011071 .word 0x00011071
13948: 10624dd3 .word 0x10624dd3
1394c: 20006c80 .word 0x20006c80
13950: 00011fa9 .word 0x00011fa9
13954: 00011fbd .word 0x00011fbd
00013958 <lv_task_set_prio>:
{
13958: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
if(task->prio == prio) return;
1395c: 7d03 ldrb r3, [r0, #20]
1395e: f003 0307 and.w r3, r3, #7
13962: 428b cmp r3, r1
13964: d031 beq.n 139ca <lv_task_set_prio+0x72>
13966: 460d mov r5, r1
13968: 4688 mov r8, r1
1396a: 4681 mov r9, r0
_LV_LL_READ(LV_GC_ROOT(_lv_task_ll), i) {
1396c: 4818 ldr r0, [pc, #96] ; (139d0 <lv_task_set_prio+0x78>)
1396e: 4b19 ldr r3, [pc, #100] ; (139d4 <lv_task_set_prio+0x7c>)
13970: 4798 blx r3
13972: 4604 mov r4, r0
13974: b318 cbz r0, 139be <lv_task_set_prio+0x66>
if(i->prio <= prio) {
13976: 7d03 ldrb r3, [r0, #20]
13978: f003 0307 and.w r3, r3, #7
1397c: 429d cmp r5, r3
1397e: da0b bge.n 13998 <lv_task_set_prio+0x40>
_LV_LL_READ(LV_GC_ROOT(_lv_task_ll), i) {
13980: 4f13 ldr r7, [pc, #76] ; (139d0 <lv_task_set_prio+0x78>)
13982: 4e15 ldr r6, [pc, #84] ; (139d8 <lv_task_set_prio+0x80>)
13984: 4621 mov r1, r4
13986: 4638 mov r0, r7
13988: 47b0 blx r6
1398a: 4604 mov r4, r0
1398c: b1b8 cbz r0, 139be <lv_task_set_prio+0x66>
if(i->prio <= prio) {
1398e: 7d23 ldrb r3, [r4, #20]
13990: f003 0307 and.w r3, r3, #7
13994: 429d cmp r5, r3
13996: dbf5 blt.n 13984 <lv_task_set_prio+0x2c>
if(i != task) _lv_ll_move_before(&LV_GC_ROOT(_lv_task_ll), task, i);
13998: 45a1 cmp r9, r4
1399a: d005 beq.n 139a8 <lv_task_set_prio+0x50>
1399c: 4622 mov r2, r4
1399e: 4649 mov r1, r9
139a0: 480b ldr r0, [pc, #44] ; (139d0 <lv_task_set_prio+0x78>)
139a2: 4b0e ldr r3, [pc, #56] ; (139dc <lv_task_set_prio+0x84>)
139a4: 4798 blx r3
if(i == NULL) {
139a6: b154 cbz r4, 139be <lv_task_set_prio+0x66>
task_list_changed = true;
139a8: 2201 movs r2, #1
139aa: 4b0d ldr r3, [pc, #52] ; (139e0 <lv_task_set_prio+0x88>)
139ac: 701a strb r2, [r3, #0]
task->prio = prio;
139ae: f899 3014 ldrb.w r3, [r9, #20]
139b2: f368 0302 bfi r3, r8, #0, #3
139b6: f889 3014 strb.w r3, [r9, #20]
139ba: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
_lv_ll_move_before(&LV_GC_ROOT(_lv_task_ll), task, NULL);
139be: 2200 movs r2, #0
139c0: 4649 mov r1, r9
139c2: 4803 ldr r0, [pc, #12] ; (139d0 <lv_task_set_prio+0x78>)
139c4: 4b05 ldr r3, [pc, #20] ; (139dc <lv_task_set_prio+0x84>)
139c6: 4798 blx r3
139c8: e7ee b.n 139a8 <lv_task_set_prio+0x50>
139ca: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
139ce: bf00 nop
139d0: 20006c80 .word 0x20006c80
139d4: 00011fa9 .word 0x00011fa9
139d8: 00011fbd .word 0x00011fbd
139dc: 00012195 .word 0x00012195
139e0: 20006bb8 .word 0x20006bb8
000139e4 <lv_task_create>:
{
139e4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
139e8: b082 sub sp, #8
139ea: 4680 mov r8, r0
139ec: 460f mov r7, r1
139ee: 4616 mov r6, r2
139f0: 461d mov r5, r3
lv_task_t * new_task = lv_task_create_basic();
139f2: 4b10 ldr r3, [pc, #64] ; (13a34 <lv_task_create+0x50>)
139f4: 4798 blx r3
139f6: 4604 mov r4, r0
LV_ASSERT_MEM(new_task);
139f8: 4b0f ldr r3, [pc, #60] ; (13a38 <lv_task_create+0x54>)
139fa: 4798 blx r3
139fc: b160 cbz r0, 13a18 <lv_task_create+0x34>
if(new_task == NULL) return NULL;
139fe: b13c cbz r4, 13a10 <lv_task_create+0x2c>
task->task_cb = task_cb;
13a00: f8c4 8008 str.w r8, [r4, #8]
task->period = period;
13a04: 6027 str r7, [r4, #0]
lv_task_set_prio(new_task, prio);
13a06: 4631 mov r1, r6
13a08: 4620 mov r0, r4
13a0a: 4b0c ldr r3, [pc, #48] ; (13a3c <lv_task_create+0x58>)
13a0c: 4798 blx r3
new_task->user_data = user_data;
13a0e: 60e5 str r5, [r4, #12]
}
13a10: 4620 mov r0, r4
13a12: b002 add sp, #8
13a14: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
LV_ASSERT_MEM(new_task);
13a18: 4b09 ldr r3, [pc, #36] ; (13a40 <lv_task_create+0x5c>)
13a1a: 9300 str r3, [sp, #0]
13a1c: f44f 7283 mov.w r2, #262 ; 0x106
13a20: 4908 ldr r1, [pc, #32] ; (13a44 <lv_task_create+0x60>)
13a22: 2003 movs r0, #3
13a24: 4d08 ldr r5, [pc, #32] ; (13a48 <lv_task_create+0x64>)
13a26: 47a8 blx r5
13a28: 4622 mov r2, r4
13a2a: 2300 movs r3, #0
13a2c: 4807 ldr r0, [pc, #28] ; (13a4c <lv_task_create+0x68>)
13a2e: 4908 ldr r1, [pc, #32] ; (13a50 <lv_task_create+0x6c>)
13a30: 4788 blx r1
13a32: e7fe b.n 13a32 <lv_task_create+0x4e>
13a34: 00013611 .word 0x00013611
13a38: 000022b1 .word 0x000022b1
13a3c: 00013959 .word 0x00013959
13a40: 000294c4 .word 0x000294c4
13a44: 000294d4 .word 0x000294d4
13a48: 0001225d .word 0x0001225d
13a4c: 00023fd8 .word 0x00023fd8
13a50: 000022b9 .word 0x000022b9
00013a54 <lv_task_ready>:
{
13a54: b510 push {r4, lr}
13a56: 4604 mov r4, r0
task->last_run = lv_tick_get() - task->period - 1;
13a58: 4b03 ldr r3, [pc, #12] ; (13a68 <lv_task_ready+0x14>)
13a5a: 4798 blx r3
13a5c: 6823 ldr r3, [r4, #0]
13a5e: 43db mvns r3, r3
13a60: 4403 add r3, r0
13a62: 6063 str r3, [r4, #4]
13a64: bd10 pop {r4, pc}
13a66: bf00 nop
13a68: 00011059 .word 0x00011059
00013a6c <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)
13a6c: 7803 ldrb r3, [r0, #0]
13a6e: f013 0f80 tst.w r3, #128 ; 0x80
13a72: d101 bne.n 13a78 <lv_txt_utf8_size+0xc>
return 1;
13a74: 2001 movs r0, #1
13a76: 4770 bx lr
else if((str[0] & 0xE0) == 0xC0)
13a78: f003 02e0 and.w r2, r3, #224 ; 0xe0
13a7c: 2ac0 cmp r2, #192 ; 0xc0
13a7e: d00a beq.n 13a96 <lv_txt_utf8_size+0x2a>
return 2;
else if((str[0] & 0xF0) == 0xE0)
13a80: f003 02f0 and.w r2, r3, #240 ; 0xf0
13a84: 2ae0 cmp r2, #224 ; 0xe0
13a86: d008 beq.n 13a9a <lv_txt_utf8_size+0x2e>
return 3;
else if((str[0] & 0xF8) == 0xF0)
13a88: f003 03f8 and.w r3, r3, #248 ; 0xf8
return 4;
return 0; /*If the char was invalid tell it's 1 byte long*/
13a8c: 2bf0 cmp r3, #240 ; 0xf0
13a8e: bf0c ite eq
13a90: 2004 moveq r0, #4
13a92: 2000 movne r0, #0
13a94: 4770 bx lr
return 2;
13a96: 2002 movs r0, #2
13a98: 4770 bx lr
return 3;
13a9a: 2003 movs r0, #3
}
13a9c: 4770 bx lr
00013a9e <lv_txt_unicode_to_utf8>:
* @param letter_uni an Unicode letter
* @return UTF-8 coded character in Little Endian to be compatible with C chars (e.g. 'Á', 'Ű')
*/
static uint32_t lv_txt_unicode_to_utf8(uint32_t letter_uni)
{
if(letter_uni < 128) return letter_uni;
13a9e: 287f cmp r0, #127 ; 0x7f
13aa0: d916 bls.n 13ad0 <lv_txt_unicode_to_utf8+0x32>
{
13aa2: b082 sub sp, #8
uint8_t bytes[4];
if(letter_uni < 0x0800) {
13aa4: f5b0 6f00 cmp.w r0, #2048 ; 0x800
13aa8: d213 bcs.n 13ad2 <lv_txt_unicode_to_utf8+0x34>
bytes[0] = ((letter_uni >> 6) & 0x1F) | 0xC0;
13aaa: f3c0 1384 ubfx r3, r0, #6, #5
13aae: f063 033f orn r3, r3, #63 ; 0x3f
13ab2: f88d 3004 strb.w r3, [sp, #4]
bytes[1] = ((letter_uni >> 0) & 0x3F) | 0x80;
13ab6: f000 003f and.w r0, r0, #63 ; 0x3f
13aba: f060 007f orn r0, r0, #127 ; 0x7f
13abe: f88d 0005 strb.w r0, [sp, #5]
bytes[2] = 0;
13ac2: 2300 movs r3, #0
13ac4: f88d 3006 strb.w r3, [sp, #6]
bytes[3] = 0;
13ac8: f88d 3007 strb.w r3, [sp, #7]
bytes[2] = ((letter_uni >> 6) & 0x3F) | 0x80;
bytes[3] = ((letter_uni >> 0) & 0x3F) | 0x80;
}
uint32_t * res_p = (uint32_t *)bytes;
return *res_p;
13acc: 9801 ldr r0, [sp, #4]
}
13ace: b002 add sp, #8
13ad0: 4770 bx lr
else if(letter_uni < 0x010000) {
13ad2: f5b0 3f80 cmp.w r0, #65536 ; 0x10000
13ad6: d215 bcs.n 13b04 <lv_txt_unicode_to_utf8+0x66>
bytes[0] = ((letter_uni >> 12) & 0x0F) | 0xE0;
13ad8: f3c0 3303 ubfx r3, r0, #12, #4
13adc: f063 031f orn r3, r3, #31
13ae0: f88d 3004 strb.w r3, [sp, #4]
bytes[1] = ((letter_uni >> 6) & 0x3F) | 0x80;
13ae4: f3c0 1385 ubfx r3, r0, #6, #6
13ae8: f063 037f orn r3, r3, #127 ; 0x7f
13aec: f88d 3005 strb.w r3, [sp, #5]
bytes[2] = ((letter_uni >> 0) & 0x3F) | 0x80;
13af0: f000 003f and.w r0, r0, #63 ; 0x3f
13af4: f060 007f orn r0, r0, #127 ; 0x7f
13af8: f88d 0006 strb.w r0, [sp, #6]
bytes[3] = 0;
13afc: 2300 movs r3, #0
13afe: f88d 3007 strb.w r3, [sp, #7]
13b02: e7e3 b.n 13acc <lv_txt_unicode_to_utf8+0x2e>
else if(letter_uni < 0x110000) {
13b04: f5b0 1f88 cmp.w r0, #1114112 ; 0x110000
13b08: d2e0 bcs.n 13acc <lv_txt_unicode_to_utf8+0x2e>
bytes[0] = ((letter_uni >> 18) & 0x07) | 0xF0;
13b0a: f3c0 4382 ubfx r3, r0, #18, #3
13b0e: f063 030f orn r3, r3, #15
13b12: f88d 3004 strb.w r3, [sp, #4]
bytes[1] = ((letter_uni >> 12) & 0x3F) | 0x80;
13b16: f3c0 3305 ubfx r3, r0, #12, #6
13b1a: f063 037f orn r3, r3, #127 ; 0x7f
13b1e: f88d 3005 strb.w r3, [sp, #5]
bytes[2] = ((letter_uni >> 6) & 0x3F) | 0x80;
13b22: f3c0 1385 ubfx r3, r0, #6, #6
13b26: f063 037f orn r3, r3, #127 ; 0x7f
13b2a: f88d 3006 strb.w r3, [sp, #6]
bytes[3] = ((letter_uni >> 0) & 0x3F) | 0x80;
13b2e: f000 003f and.w r0, r0, #63 ; 0x3f
13b32: f060 007f orn r0, r0, #127 ; 0x7f
13b36: f88d 0007 strb.w r0, [sp, #7]
13b3a: e7c7 b.n 13acc <lv_txt_unicode_to_utf8+0x2e>
00013b3c <lv_txt_utf8_conv_wc>:
* Convert a wide character, e.g. 'Á' little endian to be UTF-8 compatible
* @param c a wide character or a Little endian number
* @return `c` in big endian
*/
static uint32_t lv_txt_utf8_conv_wc(uint32_t c)
{
13b3c: b082 sub sp, #8
13b3e: 9001 str r0, [sp, #4]
/*Swap the bytes (UTF-8 is big endian, but the MCUs are little endian)*/
if((c & 0x80) != 0) {
13b40: f010 0f80 tst.w r0, #128 ; 0x80
13b44: d017 beq.n 13b76 <lv_txt_utf8_conv_wc+0x3a>
uint32_t swapped;
uint8_t c8[4];
_lv_memcpy_small(c8, &c, 4);
swapped = (c8[0] << 24) + (c8[1] << 16) + (c8[2] << 8) + (c8[3]);
13b46: f89d 3004 ldrb.w r3, [sp, #4]
13b4a: f89d 2005 ldrb.w r2, [sp, #5]
13b4e: 0412 lsls r2, r2, #16
13b50: eb02 6203 add.w r2, r2, r3, lsl #24
13b54: f89d 3006 ldrb.w r3, [sp, #6]
13b58: eb02 2203 add.w r2, r2, r3, lsl #8
13b5c: f89d 3007 ldrb.w r3, [sp, #7]
13b60: 441a add r2, r3
13b62: 2304 movs r3, #4
uint8_t i;
for(i = 0; i < 4; i++) {
if((swapped & 0xFF) == 0)
13b64: f012 0fff tst.w r2, #255 ; 0xff
swapped = (swapped >> 8); /*Ignore leading zeros (they were in the end originally)*/
13b68: bf08 it eq
13b6a: 0a12 lsreq r2, r2, #8
13b6c: 3b01 subs r3, #1
for(i = 0; i < 4; i++) {
13b6e: f013 03ff ands.w r3, r3, #255 ; 0xff
13b72: d1f7 bne.n 13b64 <lv_txt_utf8_conv_wc+0x28>
}
c = swapped;
13b74: 9201 str r2, [sp, #4]
}
return c;
}
13b76: 9801 ldr r0, [sp, #4]
13b78: b002 add sp, #8
13b7a: 4770 bx lr
00013b7c <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)
{
13b7c: b470 push {r4, r5, r6}
13b7e: b083 sub sp, #12
* */
uint32_t result = 0;
/*Dummy 'i' pointer is required*/
uint32_t i_tmp = 0;
13b80: 2300 movs r3, #0
13b82: 9301 str r3, [sp, #4]
if(i == NULL) i = &i_tmp;
13b84: 460c mov r4, r1
13b86: b151 cbz r1, 13b9e <lv_txt_utf8_next+0x22>
/*Normal ASCII*/
if((txt[*i] & 0x80) == 0) {
13b88: 6822 ldr r2, [r4, #0]
13b8a: 5c83 ldrb r3, [r0, r2]
13b8c: f013 0f80 tst.w r3, #128 ; 0x80
13b90: d107 bne.n 13ba2 <lv_txt_utf8_next+0x26>
result = txt[*i];
13b92: 4618 mov r0, r3
(*i)++;
13b94: 3201 adds r2, #1
13b96: 6022 str r2, [r4, #0]
else {
(*i)++; /*Not UTF-8 char. Go the next.*/
}
}
return result;
}
13b98: b003 add sp, #12
13b9a: bc70 pop {r4, r5, r6}
13b9c: 4770 bx lr
if(i == NULL) i = &i_tmp;
13b9e: ac01 add r4, sp, #4
13ba0: e7f2 b.n 13b88 <lv_txt_utf8_next+0xc>
if((txt[*i] & 0xE0) == 0xC0) {
13ba2: f003 01e0 and.w r1, r3, #224 ; 0xe0
13ba6: 29c0 cmp r1, #192 ; 0xc0
13ba8: d00b beq.n 13bc2 <lv_txt_utf8_next+0x46>
else if((txt[*i] & 0xF0) == 0xE0) {
13baa: f003 01f0 and.w r1, r3, #240 ; 0xf0
13bae: 29e0 cmp r1, #224 ; 0xe0
13bb0: d019 beq.n 13be6 <lv_txt_utf8_next+0x6a>
else if((txt[*i] & 0xF8) == 0xF0) {
13bb2: f003 01f8 and.w r1, r3, #248 ; 0xf8
13bb6: 29f0 cmp r1, #240 ; 0xf0
13bb8: d033 beq.n 13c22 <lv_txt_utf8_next+0xa6>
(*i)++; /*Not UTF-8 char. Go the next.*/
13bba: 3201 adds r2, #1
13bbc: 6022 str r2, [r4, #0]
uint32_t result = 0;
13bbe: 2000 movs r0, #0
13bc0: e7ea b.n 13b98 <lv_txt_utf8_next+0x1c>
(*i)++;
13bc2: 1c51 adds r1, r2, #1
13bc4: 6021 str r1, [r4, #0]
if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/
13bc6: 5c40 ldrb r0, [r0, r1]
13bc8: f000 01c0 and.w r1, r0, #192 ; 0xc0
13bcc: 2980 cmp r1, #128 ; 0x80
13bce: d001 beq.n 13bd4 <lv_txt_utf8_next+0x58>
13bd0: 2000 movs r0, #0
13bd2: e7e1 b.n 13b98 <lv_txt_utf8_next+0x1c>
result = (uint32_t)(txt[*i] & 0x1F) << 6;
13bd4: 019b lsls r3, r3, #6
13bd6: f403 63f8 and.w r3, r3, #1984 ; 0x7c0
result += (txt[*i] & 0x3F);
13bda: f000 003f and.w r0, r0, #63 ; 0x3f
13bde: 4418 add r0, r3
(*i)++;
13be0: 3202 adds r2, #2
13be2: 6022 str r2, [r4, #0]
13be4: e7d8 b.n 13b98 <lv_txt_utf8_next+0x1c>
(*i)++;
13be6: 1c51 adds r1, r2, #1
13be8: 6021 str r1, [r4, #0]
if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/
13bea: 5c41 ldrb r1, [r0, r1]
13bec: f001 05c0 and.w r5, r1, #192 ; 0xc0
13bf0: 2d80 cmp r5, #128 ; 0x80
13bf2: d001 beq.n 13bf8 <lv_txt_utf8_next+0x7c>
13bf4: 2000 movs r0, #0
13bf6: e7cf b.n 13b98 <lv_txt_utf8_next+0x1c>
(*i)++;
13bf8: 1c95 adds r5, r2, #2
13bfa: 6025 str r5, [r4, #0]
if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/
13bfc: 5d40 ldrb r0, [r0, r5]
13bfe: f000 05c0 and.w r5, r0, #192 ; 0xc0
13c02: 2d80 cmp r5, #128 ; 0x80
13c04: d001 beq.n 13c0a <lv_txt_utf8_next+0x8e>
13c06: 2000 movs r0, #0
13c08: e7c6 b.n 13b98 <lv_txt_utf8_next+0x1c>
result = (uint32_t)(txt[*i] & 0x0F) << 12;
13c0a: 031b lsls r3, r3, #12
13c0c: b29b uxth r3, r3
result += (txt[*i] & 0x3F);
13c0e: f000 003f and.w r0, r0, #63 ; 0x3f
13c12: 4403 add r3, r0
result += (uint32_t)(txt[*i] & 0x3F) << 6;
13c14: 0188 lsls r0, r1, #6
13c16: f400 607c and.w r0, r0, #4032 ; 0xfc0
result += (txt[*i] & 0x3F);
13c1a: 4418 add r0, r3
(*i)++;
13c1c: 3203 adds r2, #3
13c1e: 6022 str r2, [r4, #0]
13c20: e7ba b.n 13b98 <lv_txt_utf8_next+0x1c>
(*i)++;
13c22: 1c51 adds r1, r2, #1
13c24: 6021 str r1, [r4, #0]
if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/
13c26: 5c41 ldrb r1, [r0, r1]
13c28: f001 05c0 and.w r5, r1, #192 ; 0xc0
13c2c: 2d80 cmp r5, #128 ; 0x80
13c2e: d001 beq.n 13c34 <lv_txt_utf8_next+0xb8>
13c30: 2000 movs r0, #0
13c32: e7b1 b.n 13b98 <lv_txt_utf8_next+0x1c>
(*i)++;
13c34: 1c95 adds r5, r2, #2
13c36: 6025 str r5, [r4, #0]
if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/
13c38: 5d45 ldrb r5, [r0, r5]
13c3a: f005 06c0 and.w r6, r5, #192 ; 0xc0
13c3e: 2e80 cmp r6, #128 ; 0x80
13c40: d001 beq.n 13c46 <lv_txt_utf8_next+0xca>
13c42: 2000 movs r0, #0
13c44: e7a8 b.n 13b98 <lv_txt_utf8_next+0x1c>
(*i)++;
13c46: 1cd6 adds r6, r2, #3
13c48: 6026 str r6, [r4, #0]
if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/
13c4a: 5d86 ldrb r6, [r0, r6]
13c4c: f006 00c0 and.w r0, r6, #192 ; 0xc0
13c50: 2880 cmp r0, #128 ; 0x80
13c52: d001 beq.n 13c58 <lv_txt_utf8_next+0xdc>
13c54: 2000 movs r0, #0
13c56: e79f b.n 13b98 <lv_txt_utf8_next+0x1c>
result = (uint32_t)(txt[*i] & 0x07) << 18;
13c58: 049b lsls r3, r3, #18
13c5a: f403 13e0 and.w r3, r3, #1835008 ; 0x1c0000
result += (uint32_t)(txt[*i] & 0x3F) << 12;
13c5e: 0309 lsls r1, r1, #12
13c60: f401 307c and.w r0, r1, #258048 ; 0x3f000
13c64: 4303 orrs r3, r0
result += (uint32_t)(txt[*i] & 0x3F) << 6;
13c66: 01a8 lsls r0, r5, #6
13c68: f400 607c and.w r0, r0, #4032 ; 0xfc0
result += txt[*i] & 0x3F;
13c6c: f006 063f and.w r6, r6, #63 ; 0x3f
13c70: 4430 add r0, r6
13c72: 4418 add r0, r3
(*i)++;
13c74: 3204 adds r2, #4
13c76: 6022 str r2, [r4, #0]
13c78: e78e b.n 13b98 <lv_txt_utf8_next+0x1c>
...
00013c7c <lv_txt_utf8_prev>:
* @param i start byte index in 'txt' where to start. After the call it will point to the previous
* UTF-8 char in 'txt'.
* @return the decoded Unicode character or 0 on invalid UTF-8 code
*/
static uint32_t lv_txt_utf8_prev(const char * txt, uint32_t * i)
{
13c7c: b5f0 push {r4, r5, r6, r7, lr}
13c7e: b083 sub sp, #12
13c80: 4606 mov r6, r0
13c82: 460d mov r5, r1
uint8_t c_size;
uint8_t cnt = 0;
/*Try to find a !0 long UTF-8 char by stepping one character back*/
(*i)--;
13c84: 680b ldr r3, [r1, #0]
13c86: 3b01 subs r3, #1
13c88: 600b str r3, [r1, #0]
13c8a: 2404 movs r4, #4
do {
if(cnt >= 4) return 0; /*No UTF-8 char found before the initial*/
c_size = _lv_txt_encoded_size(&txt[*i]);
13c8c: 4f0e ldr r7, [pc, #56] ; (13cc8 <lv_txt_utf8_prev+0x4c>)
13c8e: e005 b.n 13c9c <lv_txt_utf8_prev+0x20>
if(c_size == 0) {
if(*i != 0)
(*i)--;
13c90: 3801 subs r0, #1
13c92: 6028 str r0, [r5, #0]
13c94: 1e63 subs r3, r4, #1
if(cnt >= 4) return 0; /*No UTF-8 char found before the initial*/
13c96: f013 04ff ands.w r4, r3, #255 ; 0xff
13c9a: d008 beq.n 13cae <lv_txt_utf8_prev+0x32>
c_size = _lv_txt_encoded_size(&txt[*i]);
13c9c: 6828 ldr r0, [r5, #0]
13c9e: 4430 add r0, r6
13ca0: 683b ldr r3, [r7, #0]
13ca2: 4798 blx r3
if(c_size == 0) {
13ca4: b928 cbnz r0, 13cb2 <lv_txt_utf8_prev+0x36>
if(*i != 0)
13ca6: 6828 ldr r0, [r5, #0]
13ca8: 2800 cmp r0, #0
13caa: d1f1 bne.n 13c90 <lv_txt_utf8_prev+0x14>
13cac: e009 b.n 13cc2 <lv_txt_utf8_prev+0x46>
if(cnt >= 4) return 0; /*No UTF-8 char found before the initial*/
13cae: 2000 movs r0, #0
13cb0: e007 b.n 13cc2 <lv_txt_utf8_prev+0x46>
return 0;
}
cnt++;
} while(c_size == 0);
uint32_t i_tmp = *i;
13cb2: 682b ldr r3, [r5, #0]
13cb4: a902 add r1, sp, #8
13cb6: f841 3d04 str.w r3, [r1, #-4]!
uint32_t letter = _lv_txt_encoded_next(txt, &i_tmp); /*Character found, get it*/
13cba: 4b03 ldr r3, [pc, #12] ; (13cc8 <lv_txt_utf8_prev+0x4c>)
13cbc: 685b ldr r3, [r3, #4]
13cbe: 4630 mov r0, r6
13cc0: 4798 blx r3
return letter;
}
13cc2: b003 add sp, #12
13cc4: bdf0 pop {r4, r5, r6, r7, pc}
13cc6: bf00 nop
13cc8: 20000054 .word 0x20000054
00013ccc <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)
{
13ccc: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
uint32_t i;
uint32_t byte_cnt = 0;
for(i = 0; i < utf8_id; i++) {
13cd0: 460e mov r6, r1
13cd2: b191 cbz r1, 13cfa <lv_txt_utf8_get_byte_id+0x2e>
13cd4: 4607 mov r7, r0
13cd6: 2400 movs r4, #0
13cd8: 4625 mov r5, r4
uint8_t c_size = _lv_txt_encoded_size(&txt[byte_cnt]);
13cda: f8df 8024 ldr.w r8, [pc, #36] ; 13d00 <lv_txt_utf8_get_byte_id+0x34>
13cde: 1938 adds r0, r7, r4
13ce0: f8d8 3000 ldr.w r3, [r8]
13ce4: 4798 blx r3
byte_cnt += c_size > 0 ? c_size : 1;
13ce6: 2800 cmp r0, #0
13ce8: bf08 it eq
13cea: 2001 moveq r0, #1
13cec: 4404 add r4, r0
for(i = 0; i < utf8_id; i++) {
13cee: 3501 adds r5, #1
13cf0: 42ae cmp r6, r5
13cf2: d1f4 bne.n 13cde <lv_txt_utf8_get_byte_id+0x12>
}
return byte_cnt;
}
13cf4: 4620 mov r0, r4
13cf6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
uint32_t byte_cnt = 0;
13cfa: 460c mov r4, r1
return byte_cnt;
13cfc: e7fa b.n 13cf4 <lv_txt_utf8_get_byte_id+0x28>
13cfe: bf00 nop
13d00: 20000054 .word 0x20000054
00013d04 <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)
{
13d04: b5f0 push {r4, r5, r6, r7, lr}
13d06: b083 sub sp, #12
uint32_t i = 0;
13d08: 2300 movs r3, #0
13d0a: 9301 str r3, [sp, #4]
uint32_t char_cnt = 0;
while(i < byte_id) {
13d0c: 460d mov r5, r1
13d0e: b169 cbz r1, 13d2c <lv_txt_utf8_get_char_id+0x28>
13d10: 4606 mov r6, r0
13d12: 461c mov r4, r3
_lv_txt_encoded_next(txt, &i); /*'i' points to the next letter so use the prev. value*/
13d14: 4f06 ldr r7, [pc, #24] ; (13d30 <lv_txt_utf8_get_char_id+0x2c>)
13d16: a901 add r1, sp, #4
13d18: 4630 mov r0, r6
13d1a: 687b ldr r3, [r7, #4]
13d1c: 4798 blx r3
char_cnt++;
13d1e: 3401 adds r4, #1
while(i < byte_id) {
13d20: 9b01 ldr r3, [sp, #4]
13d22: 42ab cmp r3, r5
13d24: d3f7 bcc.n 13d16 <lv_txt_utf8_get_char_id+0x12>
}
return char_cnt;
}
13d26: 4620 mov r0, r4
13d28: b003 add sp, #12
13d2a: bdf0 pop {r4, r5, r6, r7, pc}
uint32_t char_cnt = 0;
13d2c: 460c mov r4, r1
return char_cnt;
13d2e: e7fa b.n 13d26 <lv_txt_utf8_get_char_id+0x22>
13d30: 20000054 .word 0x20000054
00013d34 <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)
{
13d34: b570 push {r4, r5, r6, lr}
13d36: b082 sub sp, #8
uint32_t len = 0;
uint32_t i = 0;
13d38: 2300 movs r3, #0
13d3a: 9301 str r3, [sp, #4]
while(txt[i] != '\0') {
13d3c: 7803 ldrb r3, [r0, #0]
13d3e: b173 cbz r3, 13d5e <lv_txt_utf8_get_length+0x2a>
13d40: 4604 mov r4, r0
13d42: 2500 movs r5, #0
_lv_txt_encoded_next(txt, &i);
13d44: 4e07 ldr r6, [pc, #28] ; (13d64 <lv_txt_utf8_get_length+0x30>)
13d46: a901 add r1, sp, #4
13d48: 4620 mov r0, r4
13d4a: 6873 ldr r3, [r6, #4]
13d4c: 4798 blx r3
len++;
13d4e: 3501 adds r5, #1
while(txt[i] != '\0') {
13d50: 9b01 ldr r3, [sp, #4]
13d52: 5ce3 ldrb r3, [r4, r3]
13d54: 2b00 cmp r3, #0
13d56: d1f6 bne.n 13d46 <lv_txt_utf8_get_length+0x12>
}
return len;
}
13d58: 4628 mov r0, r5
13d5a: b002 add sp, #8
13d5c: bd70 pop {r4, r5, r6, pc}
uint32_t len = 0;
13d5e: 2500 movs r5, #0
return len;
13d60: e7fa b.n 13d58 <lv_txt_utf8_get_length+0x24>
13d62: bf00 nop
13d64: 20000054 .word 0x20000054
00013d68 <_lv_txt_is_cmd>:
if(c == (uint32_t)LV_TXT_COLOR_CMD[0]) {
13d68: 2923 cmp r1, #35 ; 0x23
13d6a: d004 beq.n 13d76 <_lv_txt_is_cmd+0xe>
if(*state == LV_TXT_CMD_STATE_PAR) {
13d6c: 7803 ldrb r3, [r0, #0]
13d6e: 2b01 cmp r3, #1
13d70: d015 beq.n 13d9e <_lv_txt_is_cmd+0x36>
bool ret = false;
13d72: 2000 movs r0, #0
13d74: 4770 bx lr
if(*state == LV_TXT_CMD_STATE_WAIT) { /*Start char*/
13d76: 7803 ldrb r3, [r0, #0]
13d78: b91b cbnz r3, 13d82 <_lv_txt_is_cmd+0x1a>
*state = LV_TXT_CMD_STATE_PAR;
13d7a: 2301 movs r3, #1
13d7c: 7003 strb r3, [r0, #0]
ret = true;
13d7e: 4618 mov r0, r3
13d80: 4770 bx lr
else if(*state == LV_TXT_CMD_STATE_PAR) {
13d82: 2b01 cmp r3, #1
13d84: d003 beq.n 13d8e <_lv_txt_is_cmd+0x26>
else if(*state == LV_TXT_CMD_STATE_IN) {
13d86: 2b02 cmp r3, #2
13d88: d005 beq.n 13d96 <_lv_txt_is_cmd+0x2e>
bool ret = false;
13d8a: 2000 movs r0, #0
}
13d8c: 4770 bx lr
*state = LV_TXT_CMD_STATE_WAIT;
13d8e: 2300 movs r3, #0
13d90: 7003 strb r3, [r0, #0]
bool ret = false;
13d92: 4618 mov r0, r3
13d94: 4770 bx lr
*state = LV_TXT_CMD_STATE_WAIT;
13d96: 2300 movs r3, #0
13d98: 7003 strb r3, [r0, #0]
ret = true;
13d9a: 2001 movs r0, #1
13d9c: 4770 bx lr
if(c == ' ') {
13d9e: 2920 cmp r1, #32
13da0: d103 bne.n 13daa <_lv_txt_is_cmd+0x42>
*state = LV_TXT_CMD_STATE_IN; /*After the parameter the text is in the command*/
13da2: 2302 movs r3, #2
13da4: 7003 strb r3, [r0, #0]
ret = true;
13da6: 2001 movs r0, #1
13da8: 4770 bx lr
13daa: 2001 movs r0, #1
13dac: 4770 bx lr
...
00013db0 <_lv_txt_get_next_line>:
{
13db0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
13db4: b091 sub sp, #68 ; 0x44
13db6: 9105 str r1, [sp, #20]
13db8: 9206 str r2, [sp, #24]
13dba: 9307 str r3, [sp, #28]
13dbc: f89d 3068 ldrb.w r3, [sp, #104] ; 0x68
13dc0: 9304 str r3, [sp, #16]
if(txt == NULL) return 0;
13dc2: 9008 str r0, [sp, #32]
13dc4: 2800 cmp r0, #0
13dc6: f000 80f0 beq.w 13faa <_lv_txt_get_next_line+0x1fa>
if(font == NULL) return 0;
13dca: 2900 cmp r1, #0
13dcc: f000 80ef beq.w 13fae <_lv_txt_get_next_line+0x1fe>
if((flag & LV_TXT_FLAG_EXPAND) || (flag & LV_TXT_FLAG_FIT)) {
13dd0: f013 0f12 tst.w r3, #18
13dd4: d017 beq.n 13e06 <_lv_txt_get_next_line+0x56>
for(i = 0; txt[i] != '\n' && txt[i] != '\r' && txt[i] != '\0'; i++) {
13dd6: 7803 ldrb r3, [r0, #0]
13dd8: 2b0a cmp r3, #10
13dda: f000 80ea beq.w 13fb2 <_lv_txt_get_next_line+0x202>
13dde: 2b0d cmp r3, #13
13de0: f000 80ed beq.w 13fbe <_lv_txt_get_next_line+0x20e>
13de4: 2b00 cmp r3, #0
13de6: f000 80ec beq.w 13fc2 <_lv_txt_get_next_line+0x212>
13dea: 4601 mov r1, r0
13dec: 2200 movs r2, #0
13dee: 3201 adds r2, #1
13df0: f811 3f01 ldrb.w r3, [r1, #1]!
13df4: 2b0a cmp r3, #10
13df6: f000 80dd beq.w 13fb4 <_lv_txt_get_next_line+0x204>
13dfa: 2b0d cmp r3, #13
13dfc: f000 80da beq.w 13fb4 <_lv_txt_get_next_line+0x204>
13e00: 2b00 cmp r3, #0
13e02: d1f4 bne.n 13dee <_lv_txt_get_next_line+0x3e>
13e04: e0d7 b.n 13fb6 <_lv_txt_get_next_line+0x206>
13e06: 9b04 ldr r3, [sp, #16]
13e08: f003 0302 and.w r3, r3, #2
13e0c: 461a mov r2, r3
13e0e: 930b str r3, [sp, #44] ; 0x2c
if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX;
13e10: f647 4318 movw r3, #31768 ; 0x7c18
13e14: 9907 ldr r1, [sp, #28]
13e16: 2a00 cmp r2, #0
13e18: bf18 it ne
13e1a: 4619 movne r1, r3
13e1c: 9107 str r1, [sp, #28]
lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT;
13e1e: 2300 movs r3, #0
13e20: f88d 303f strb.w r3, [sp, #63] ; 0x3f
uint32_t i = 0; /* Iterating index into txt */
13e24: 930e str r3, [sp, #56] ; 0x38
letter = _lv_txt_encoded_next(txt, &i_next);
13e26: f8df 91ac ldr.w r9, [pc, #428] ; 13fd4 <_lv_txt_get_next_line+0x224>
{
uint8_t i;
bool ret = false;
/*Compare the letter to TXT_BREAK_CHARS*/
for(i = 0; LV_TXT_BREAK_CHARS[i] != '\0'; i++) {
13e2a: f8df a1ac ldr.w sl, [pc, #428] ; 13fd8 <_lv_txt_get_next_line+0x228>
while(txt[i] != '\0' && max_width > 0) {
13e2e: e078 b.n 13f22 <_lv_txt_get_next_line+0x172>
letter_w = lv_font_get_glyph_width(font, letter, letter_next);
13e30: 9a01 ldr r2, [sp, #4]
13e32: 4621 mov r1, r4
13e34: 9805 ldr r0, [sp, #20]
13e36: 4b64 ldr r3, [pc, #400] ; (13fc8 <_lv_txt_get_next_line+0x218>)
13e38: 4798 blx r3
cur_w += letter_w;
13e3a: 4405 add r5, r0
13e3c: b2ad uxth r5, r5
if(letter_w > 0) {
13e3e: b200 sxth r0, r0
13e40: 2800 cmp r0, #0
13e42: dd02 ble.n 13e4a <_lv_txt_get_next_line+0x9a>
cur_w += letter_space;
13e44: 9b06 ldr r3, [sp, #24]
13e46: 441d add r5, r3
13e48: b2ad uxth r5, r5
13e4a: b22d sxth r5, r5
if(break_index == NO_BREAK_FOUND && (cur_w - letter_space) > max_width) {
13e4c: f1b7 3fff cmp.w r7, #4294967295
13e50: d038 beq.n 13ec4 <_lv_txt_get_next_line+0x114>
if(letter == '\n' || letter == '\r' || is_break_char(letter)) {
13e52: f1a4 020a sub.w r2, r4, #10
13e56: 2a16 cmp r2, #22
13e58: d83b bhi.n 13ed2 <_lv_txt_get_next_line+0x122>
13e5a: 4b5c ldr r3, [pc, #368] ; (13fcc <_lv_txt_get_next_line+0x21c>)
13e5c: 40d3 lsrs r3, r2
13e5e: f013 0f01 tst.w r3, #1
13e62: d139 bne.n 13ed8 <_lv_txt_get_next_line+0x128>
13e64: 2301 movs r3, #1
13e66: 222c movs r2, #44 ; 0x2c
if(letter == (uint32_t)LV_TXT_BREAK_CHARS[i]) {
13e68: 4294 cmp r4, r2
13e6a: d035 beq.n 13ed8 <_lv_txt_get_next_line+0x128>
for(i = 0; LV_TXT_BREAK_CHARS[i] != '\0'; i++) {
13e6c: 3301 adds r3, #1
13e6e: b2db uxtb r3, r3
13e70: f81a 2003 ldrb.w r2, [sl, r3]
13e74: 2a00 cmp r2, #0
13e76: d1f7 bne.n 13e68 <_lv_txt_get_next_line+0xb8>
if(word_w_ptr != NULL && break_index == NO_BREAK_FOUND) *word_w_ptr = cur_w;
13e78: f1b7 3fff cmp.w r7, #4294967295
13e7c: bf08 it eq
13e7e: 46ab moveq fp, r5
i = i_next;
13e80: 9e0c ldr r6, [sp, #48] ; 0x30
i_next = i_next_next;
13e82: 9b0d ldr r3, [sp, #52] ; 0x34
13e84: 930c str r3, [sp, #48] ; 0x30
letter_next = _lv_txt_encoded_next(txt, &i_next_next);
13e86: 9b03 ldr r3, [sp, #12]
13e88: 9302 str r3, [sp, #8]
13e8a: 9c01 ldr r4, [sp, #4]
while(txt[i] != '\0') {
13e8c: f818 3006 ldrb.w r3, [r8, r6]
13e90: 2b00 cmp r3, #0
13e92: d06e beq.n 13f72 <_lv_txt_get_next_line+0x1c2>
letter_next = _lv_txt_encoded_next(txt, &i_next_next);
13e94: f8d9 3004 ldr.w r3, [r9, #4]
13e98: a90d add r1, sp, #52 ; 0x34
13e9a: 4640 mov r0, r8
13e9c: 4798 blx r3
13e9e: 9001 str r0, [sp, #4]
word_len++;
13ea0: 9b02 ldr r3, [sp, #8]
13ea2: 3301 adds r3, #1
13ea4: 9303 str r3, [sp, #12]
if((flag & LV_TXT_FLAG_RECOLOR) != 0) {
13ea6: 9b04 ldr r3, [sp, #16]
13ea8: f013 0f01 tst.w r3, #1
13eac: d0c0 beq.n 13e30 <_lv_txt_get_next_line+0x80>
if(_lv_txt_is_cmd(cmd_state, letter) != false) {
13eae: 4621 mov r1, r4
13eb0: f10d 003f add.w r0, sp, #63 ; 0x3f
13eb4: 4b46 ldr r3, [pc, #280] ; (13fd0 <_lv_txt_get_next_line+0x220>)
13eb6: 4798 blx r3
13eb8: 2800 cmp r0, #0
13eba: d0b9 beq.n 13e30 <_lv_txt_get_next_line+0x80>
i = i_next;
13ebc: 9e0c ldr r6, [sp, #48] ; 0x30
i_next = i_next_next;
13ebe: 9b0d ldr r3, [sp, #52] ; 0x34
13ec0: 930c str r3, [sp, #48] ; 0x30
13ec2: e7e0 b.n 13e86 <_lv_txt_get_next_line+0xd6>
if(break_index == NO_BREAK_FOUND && (cur_w - letter_space) > max_width) {
13ec4: 9b06 ldr r3, [sp, #24]
13ec6: 1aeb subs r3, r5, r3
13ec8: 9a09 ldr r2, [sp, #36] ; 0x24
13eca: 4293 cmp r3, r2
13ecc: bfc8 it gt
13ece: 4637 movgt r7, r6
13ed0: e7bf b.n 13e52 <_lv_txt_get_next_line+0xa2>
if(letter == '\n' || letter == '\r' || is_break_char(letter)) {
13ed2: 2301 movs r3, #1
13ed4: 222c movs r2, #44 ; 0x2c
13ed6: e7c7 b.n 13e68 <_lv_txt_get_next_line+0xb8>
if(i == 0 && break_index == NO_BREAK_FOUND && word_w_ptr != NULL) *word_w_ptr = cur_w;
13ed8: 2e00 cmp r6, #0
13eda: d14a bne.n 13f72 <_lv_txt_get_next_line+0x1c2>
13edc: f1b7 3fff cmp.w r7, #4294967295
13ee0: d14a bne.n 13f78 <_lv_txt_get_next_line+0x1c8>
13ee2: 46ab mov fp, r5
if(word_len == 0 || (letter == '\r' && letter_next == '\n')) i = i_next;
13ee4: 9b02 ldr r3, [sp, #8]
13ee6: b123 cbz r3, 13ef2 <_lv_txt_get_next_line+0x142>
13ee8: 2c0d cmp r4, #13
13eea: d103 bne.n 13ef4 <_lv_txt_get_next_line+0x144>
13eec: 9b01 ldr r3, [sp, #4]
13eee: 2b0a cmp r3, #10
13ef0: d100 bne.n 13ef4 <_lv_txt_get_next_line+0x144>
13ef2: 9e0c ldr r6, [sp, #48] ; 0x30
return i;
13ef4: b2b6 uxth r6, r6
max_width -= word_w;
13ef6: 9b07 ldr r3, [sp, #28]
13ef8: eba3 0b0b sub.w fp, r3, fp
13efc: fa0f f38b sxth.w r3, fp
13f00: 9307 str r3, [sp, #28]
if(advance == 0) {
13f02: 2e00 cmp r6, #0
13f04: d03a beq.n 13f7c <_lv_txt_get_next_line+0x1cc>
i += advance;
13f06: 9f0e ldr r7, [sp, #56] ; 0x38
13f08: 443e add r6, r7
13f0a: 960e str r6, [sp, #56] ; 0x38
if(txt[0] == '\n' || txt[0] == '\r') break;
13f0c: 9a08 ldr r2, [sp, #32]
13f0e: 7813 ldrb r3, [r2, #0]
13f10: 2b0a cmp r3, #10
13f12: d03f beq.n 13f94 <_lv_txt_get_next_line+0x1e4>
13f14: 2b0d cmp r3, #13
13f16: d03d beq.n 13f94 <_lv_txt_get_next_line+0x1e4>
if(txt[i] == '\n' || txt[i] == '\r') {
13f18: 5d93 ldrb r3, [r2, r6]
13f1a: 2b0a cmp r3, #10
13f1c: d038 beq.n 13f90 <_lv_txt_get_next_line+0x1e0>
13f1e: 2b0d cmp r3, #13
13f20: d036 beq.n 13f90 <_lv_txt_get_next_line+0x1e0>
while(txt[i] != '\0' && max_width > 0) {
13f22: 9b0e ldr r3, [sp, #56] ; 0x38
13f24: 930a str r3, [sp, #40] ; 0x28
13f26: 9908 ldr r1, [sp, #32]
13f28: eb01 0803 add.w r8, r1, r3
13f2c: 5ccb ldrb r3, [r1, r3]
13f2e: 2b00 cmp r3, #0
13f30: d030 beq.n 13f94 <_lv_txt_get_next_line+0x1e4>
13f32: 9b07 ldr r3, [sp, #28]
13f34: 2b00 cmp r3, #0
13f36: dd2d ble.n 13f94 <_lv_txt_get_next_line+0x1e4>
if(txt == NULL || txt[0] == '\0') return 0;
13f38: f1b8 0f00 cmp.w r8, #0
13f3c: d01e beq.n 13f7c <_lv_txt_get_next_line+0x1cc>
if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX;
13f3e: f647 4318 movw r3, #31768 ; 0x7c18
13f42: 9a07 ldr r2, [sp, #28]
13f44: 990b ldr r1, [sp, #44] ; 0x2c
13f46: 2900 cmp r1, #0
13f48: bf08 it eq
13f4a: 4613 moveq r3, r2
13f4c: 9309 str r3, [sp, #36] ; 0x24
uint32_t i = 0, i_next = 0, i_next_next = 0; /* Iterating index into txt */
13f4e: 2600 movs r6, #0
13f50: 960c str r6, [sp, #48] ; 0x30
13f52: 960d str r6, [sp, #52] ; 0x34
letter = _lv_txt_encoded_next(txt, &i_next);
13f54: f8d9 3004 ldr.w r3, [r9, #4]
13f58: a90c add r1, sp, #48 ; 0x30
13f5a: 4640 mov r0, r8
13f5c: 4798 blx r3
13f5e: 4604 mov r4, r0
i_next_next = i_next;
13f60: 9b0c ldr r3, [sp, #48] ; 0x30
13f62: 930d str r3, [sp, #52] ; 0x34
uint32_t word_w = 0;
13f64: 46b3 mov fp, r6
uint32_t break_index = NO_BREAK_FOUND; /* only used for "long" words */
13f66: f04f 37ff mov.w r7, #4294967295
uint32_t word_len = 0; /* Number of characters in the transversed word */
13f6a: 9602 str r6, [sp, #8]
lv_coord_t cur_w = 0; /* Pixel Width of transversed string */
13f6c: 4635 mov r5, r6
uint32_t letter_next = 0; /* Letter at i_next */
13f6e: 9601 str r6, [sp, #4]
13f70: e78c b.n 13e8c <_lv_txt_get_next_line+0xdc>
if(break_index == NO_BREAK_FOUND) {
13f72: f1b7 3fff cmp.w r7, #4294967295
13f76: d0b5 beq.n 13ee4 <_lv_txt_get_next_line+0x134>
if(force) return break_index;
13f78: 9b0a ldr r3, [sp, #40] ; 0x28
13f7a: b13b cbz r3, 13f8c <_lv_txt_get_next_line+0x1dc>
if(i == 0) _lv_txt_encoded_next(txt, &i); // prevent inf loops
13f7c: 9b0e ldr r3, [sp, #56] ; 0x38
13f7e: b95b cbnz r3, 13f98 <_lv_txt_get_next_line+0x1e8>
13f80: 4b14 ldr r3, [pc, #80] ; (13fd4 <_lv_txt_get_next_line+0x224>)
13f82: 685b ldr r3, [r3, #4]
13f84: a90e add r1, sp, #56 ; 0x38
13f86: 9808 ldr r0, [sp, #32]
13f88: 4798 blx r3
13f8a: e003 b.n 13f94 <_lv_txt_get_next_line+0x1e4>
if(force) return break_index;
13f8c: b2be uxth r6, r7
13f8e: e7b2 b.n 13ef6 <_lv_txt_get_next_line+0x146>
i++; /* Include the following newline in the current line */
13f90: 3601 adds r6, #1
13f92: 960e str r6, [sp, #56] ; 0x38
if(i == 0) {
13f94: 9b0e ldr r3, [sp, #56] ; 0x38
13f96: b113 cbz r3, 13f9e <_lv_txt_get_next_line+0x1ee>
return i;
13f98: f8bd 0038 ldrh.w r0, [sp, #56] ; 0x38
13f9c: e00c b.n 13fb8 <_lv_txt_get_next_line+0x208>
_lv_txt_encoded_next(txt, &i);
13f9e: 4b0d ldr r3, [pc, #52] ; (13fd4 <_lv_txt_get_next_line+0x224>)
13fa0: 685b ldr r3, [r3, #4]
13fa2: a90e add r1, sp, #56 ; 0x38
13fa4: 9808 ldr r0, [sp, #32]
13fa6: 4798 blx r3
13fa8: e7f6 b.n 13f98 <_lv_txt_get_next_line+0x1e8>
if(txt == NULL) return 0;
13faa: 2000 movs r0, #0
13fac: e004 b.n 13fb8 <_lv_txt_get_next_line+0x208>
if(font == NULL) return 0;
13fae: 2000 movs r0, #0
13fb0: e002 b.n 13fb8 <_lv_txt_get_next_line+0x208>
for(i = 0; txt[i] != '\n' && txt[i] != '\r' && txt[i] != '\0'; i++) {
13fb2: 2200 movs r2, #0
if(txt[i] != '\0') i++; /*To go beyond `\n`*/
13fb4: 3201 adds r2, #1
return i;
13fb6: b290 uxth r0, r2
}
13fb8: b011 add sp, #68 ; 0x44
13fba: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
for(i = 0; txt[i] != '\n' && txt[i] != '\r' && txt[i] != '\0'; i++) {
13fbe: 2200 movs r2, #0
13fc0: e7f8 b.n 13fb4 <_lv_txt_get_next_line+0x204>
13fc2: 2200 movs r2, #0
13fc4: e7f7 b.n 13fb6 <_lv_txt_get_next_line+0x206>
13fc6: bf00 nop
13fc8: 00010061 .word 0x00010061
13fcc: 00400009 .word 0x00400009
13fd0: 00013d69 .word 0x00013d69
13fd4: 20000054 .word 0x20000054
13fd8: 00029514 .word 0x00029514
00013fdc <_lv_txt_get_width>:
{
13fdc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
13fe0: b085 sub sp, #20
if(txt == NULL) return 0;
13fe2: 2800 cmp r0, #0
13fe4: d040 beq.n 14068 <_lv_txt_get_width+0x8c>
13fe6: 4605 mov r5, r0
if(font == NULL) return 0;
13fe8: 2a00 cmp r2, #0
13fea: d03f beq.n 1406c <_lv_txt_get_width+0x90>
uint32_t i = 0;
13fec: 2000 movs r0, #0
13fee: 9003 str r0, [sp, #12]
lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT;
13ff0: f88d 000b strb.w r0, [sp, #11]
if(length != 0) {
13ff4: b149 cbz r1, 1400a <_lv_txt_get_width+0x2e>
13ff6: 469b mov fp, r3
13ff8: 9201 str r2, [sp, #4]
13ffa: 4689 mov r9, r1
13ffc: 2400 movs r4, #0
uint32_t letter = _lv_txt_encoded_next(txt, &i);
13ffe: 4f1c ldr r7, [pc, #112] ; (14070 <_lv_txt_get_width+0x94>)
if((flag & LV_TXT_FLAG_RECOLOR) != 0) {
14000: f89d a038 ldrb.w sl, [sp, #56] ; 0x38
14004: f00a 0a01 and.w sl, sl, #1
14008: e00c b.n 14024 <_lv_txt_get_width+0x48>
lv_coord_t width = 0;
1400a: 4604 mov r4, r0
1400c: e028 b.n 14060 <_lv_txt_get_width+0x84>
lv_coord_t char_width = lv_font_get_glyph_width(font, letter, letter_next);
1400e: 4642 mov r2, r8
14010: 4631 mov r1, r6
14012: 9801 ldr r0, [sp, #4]
14014: 4b17 ldr r3, [pc, #92] ; (14074 <_lv_txt_get_width+0x98>)
14016: 4798 blx r3
if(char_width > 0) {
14018: b203 sxth r3, r0
1401a: 2b00 cmp r3, #0
1401c: dd02 ble.n 14024 <_lv_txt_get_width+0x48>
width += letter_space;
1401e: 445c add r4, fp
14020: 4404 add r4, r0
14022: b224 sxth r4, r4
while(i < length) {
14024: 9b03 ldr r3, [sp, #12]
14026: 4599 cmp r9, r3
14028: d915 bls.n 14056 <_lv_txt_get_width+0x7a>
uint32_t letter = _lv_txt_encoded_next(txt, &i);
1402a: 687b ldr r3, [r7, #4]
1402c: a903 add r1, sp, #12
1402e: 4628 mov r0, r5
14030: 4798 blx r3
14032: 4606 mov r6, r0
uint32_t letter_next = _lv_txt_encoded_next(&txt[i], NULL);
14034: 687b ldr r3, [r7, #4]
14036: 2100 movs r1, #0
14038: 9803 ldr r0, [sp, #12]
1403a: 4428 add r0, r5
1403c: 4798 blx r3
1403e: 4680 mov r8, r0
if((flag & LV_TXT_FLAG_RECOLOR) != 0) {
14040: f1ba 0f00 cmp.w sl, #0
14044: d0e3 beq.n 1400e <_lv_txt_get_width+0x32>
if(_lv_txt_is_cmd(&cmd_state, letter) != false) {
14046: 4631 mov r1, r6
14048: f10d 000b add.w r0, sp, #11
1404c: 4b0a ldr r3, [pc, #40] ; (14078 <_lv_txt_get_width+0x9c>)
1404e: 4798 blx r3
14050: 2800 cmp r0, #0
14052: d1e7 bne.n 14024 <_lv_txt_get_width+0x48>
14054: e7db b.n 1400e <_lv_txt_get_width+0x32>
if(width > 0) {
14056: 2c00 cmp r4, #0
14058: dd02 ble.n 14060 <_lv_txt_get_width+0x84>
width -= letter_space; /*Trim the last letter space. Important if the text is center
1405a: eba4 040b sub.w r4, r4, fp
1405e: b224 sxth r4, r4
}
14060: 4620 mov r0, r4
14062: b005 add sp, #20
14064: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
if(txt == NULL) return 0;
14068: 2400 movs r4, #0
1406a: e7f9 b.n 14060 <_lv_txt_get_width+0x84>
if(font == NULL) return 0;
1406c: 2400 movs r4, #0
1406e: e7f7 b.n 14060 <_lv_txt_get_width+0x84>
14070: 20000054 .word 0x20000054
14074: 00010061 .word 0x00010061
14078: 00013d69 .word 0x00013d69
0001407c <_lv_txt_get_size>:
{
1407c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
14080: b089 sub sp, #36 ; 0x24
14082: f9bd 4048 ldrsh.w r4, [sp, #72] ; 0x48
14086: 9406 str r4, [sp, #24]
14088: f9bd 504c ldrsh.w r5, [sp, #76] ; 0x4c
1408c: f89d 8050 ldrb.w r8, [sp, #80] ; 0x50
size_res->x = 0;
14090: 2400 movs r4, #0
14092: 8004 strh r4, [r0, #0]
size_res->y = 0;
14094: 8044 strh r4, [r0, #2]
if(text == NULL) return;
14096: 2900 cmp r1, #0
14098: d05b beq.n 14152 <_lv_txt_get_size+0xd6>
1409a: 460f mov r7, r1
if(font == NULL) return;
1409c: 2a00 cmp r2, #0
1409e: d058 beq.n 14152 <_lv_txt_get_size+0xd6>
140a0: 9303 str r3, [sp, #12]
140a2: 4611 mov r1, r2
140a4: 9202 str r2, [sp, #8]
140a6: 4604 mov r4, r0
if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX;
140a8: f008 0302 and.w r3, r8, #2
140ac: f647 4218 movw r2, #31768 ; 0x7c18
140b0: 2b00 cmp r3, #0
140b2: bf18 it ne
140b4: 4615 movne r5, r2
140b6: 9504 str r5, [sp, #16]
* @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;
140b8: f9b1 2008 ldrsh.w r2, [r1, #8]
140bc: 9207 str r2, [sp, #28]
uint16_t letter_height = lv_font_get_line_height(font);
140be: fa1f fa82 uxth.w sl, r2
while(text[line_start] != '\0') {
140c2: 783b ldrb r3, [r7, #0]
140c4: 2b00 cmp r3, #0
140c6: d04c beq.n 14162 <_lv_txt_get_size+0xe6>
140c8: 463e mov r6, r7
140ca: 2500 movs r5, #0
new_line_start += _lv_txt_get_next_line(&text[line_start], font, letter_space, max_width, flag);
140cc: f8df b0b0 ldr.w fp, [pc, #176] ; 14180 <_lv_txt_get_size+0x104>
if((unsigned long)size_res->y + (unsigned long)letter_height + (unsigned long)line_space > LV_MAX_OF(lv_coord_t)) {
140d0: 9b06 ldr r3, [sp, #24]
140d2: 449a add sl, r3
140d4: fa1f f98a uxth.w r9, sl
140d8: 4647 mov r7, r8
140da: 46b0 mov r8, r6
new_line_start += _lv_txt_get_next_line(&text[line_start], font, letter_space, max_width, flag);
140dc: 9700 str r7, [sp, #0]
140de: 9b04 ldr r3, [sp, #16]
140e0: 9a03 ldr r2, [sp, #12]
140e2: 9902 ldr r1, [sp, #8]
140e4: 4630 mov r0, r6
140e6: 47d8 blx fp
140e8: 4405 add r5, r0
if((unsigned long)size_res->y + (unsigned long)letter_height + (unsigned long)line_space > LV_MAX_OF(lv_coord_t)) {
140ea: f9b4 3002 ldrsh.w r3, [r4, #2]
140ee: eb0a 0203 add.w r2, sl, r3
140f2: f5b2 4f00 cmp.w r2, #32768 ; 0x8000
140f6: d224 bcs.n 14142 <_lv_txt_get_size+0xc6>
140f8: f8cd 9014 str.w r9, [sp, #20]
size_res->y += line_space;
140fc: 444b add r3, r9
140fe: 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,
14100: 9700 str r7, [sp, #0]
14102: 9b03 ldr r3, [sp, #12]
14104: 9a02 ldr r2, [sp, #8]
14106: 4601 mov r1, r0
14108: 4630 mov r0, r6
1410a: 4e18 ldr r6, [pc, #96] ; (1416c <_lv_txt_get_size+0xf0>)
1410c: 47b0 blx r6
size_res->x = LV_MATH_MAX(act_line_length, size_res->x);
1410e: f9b4 3000 ldrsh.w r3, [r4]
14112: 4298 cmp r0, r3
14114: bfb8 it lt
14116: 4618 movlt r0, r3
14118: 8020 strh r0, [r4, #0]
while(text[line_start] != '\0') {
1411a: eb08 0605 add.w r6, r8, r5
1411e: f818 3005 ldrb.w r3, [r8, r5]
14122: 2b00 cmp r3, #0
14124: d1da bne.n 140dc <_lv_txt_get_size+0x60>
if((line_start != 0) && (text[line_start - 1] == '\n' || text[line_start - 1] == '\r')) {
14126: b12d cbz r5, 14134 <_lv_txt_get_size+0xb8>
14128: f816 3c01 ldrb.w r3, [r6, #-1]
1412c: 2b0a cmp r3, #10
1412e: d013 beq.n 14158 <_lv_txt_get_size+0xdc>
14130: 2b0d cmp r3, #13
14132: d011 beq.n 14158 <_lv_txt_get_size+0xdc>
if(size_res->y == 0)
14134: f9b4 3002 ldrsh.w r3, [r4, #2]
14138: b19b cbz r3, 14162 <_lv_txt_get_size+0xe6>
size_res->y -= line_space;
1413a: 9a06 ldr r2, [sp, #24]
1413c: 1a9b subs r3, r3, r2
1413e: 8063 strh r3, [r4, #2]
14140: e007 b.n 14152 <_lv_txt_get_size+0xd6>
LV_LOG_WARN("lv_txt_get_size: integer overflow while calculating text height");
14142: 4b0b ldr r3, [pc, #44] ; (14170 <_lv_txt_get_size+0xf4>)
14144: 9300 str r3, [sp, #0]
14146: 4b0b ldr r3, [pc, #44] ; (14174 <_lv_txt_get_size+0xf8>)
14148: 2271 movs r2, #113 ; 0x71
1414a: 490b ldr r1, [pc, #44] ; (14178 <_lv_txt_get_size+0xfc>)
1414c: 2002 movs r0, #2
1414e: 4c0b ldr r4, [pc, #44] ; (1417c <_lv_txt_get_size+0x100>)
14150: 47a0 blx r4
}
14152: b009 add sp, #36 ; 0x24
14154: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
size_res->y += letter_height + line_space;
14158: 8863 ldrh r3, [r4, #2]
1415a: 9a05 ldr r2, [sp, #20]
1415c: 441a add r2, r3
1415e: 8062 strh r2, [r4, #2]
14160: e7e8 b.n 14134 <_lv_txt_get_size+0xb8>
size_res->y = letter_height;
14162: f8bd 301c ldrh.w r3, [sp, #28]
14166: 8063 strh r3, [r4, #2]
14168: e7f3 b.n 14152 <_lv_txt_get_size+0xd6>
1416a: bf00 nop
1416c: 00013fdd .word 0x00013fdd
14170: 00029544 .word 0x00029544
14174: 00029500 .word 0x00029500
14178: 0002951c .word 0x0002951c
1417c: 0001225d .word 0x0001225d
14180: 00013db1 .word 0x00013db1
00014184 <_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))
{
14184: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
14188: 4681 mov r9, r0
1418a: 468a mov sl, r1
1418c: 461f mov r7, r3
1418e: f8dd 8020 ldr.w r8, [sp, #32]
const char * middle;
int32_t c;
for(middle = base; n != 0;) {
14192: 4614 mov r4, r2
14194: b932 cbnz r2, 141a4 <_lv_utils_bsearch+0x20>
}
else {
return (char *)middle;
}
}
return NULL;
14196: 2000 movs r0, #0
14198: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
else if(c < 0) {
1419c: 2800 cmp r0, #0
1419e: da14 bge.n 141ca <_lv_utils_bsearch+0x46>
n /= 2;
141a0: 462c mov r4, r5
for(middle = base; n != 0;) {
141a2: b17c cbz r4, 141c4 <_lv_utils_bsearch+0x40>
middle += (n / 2) * size;
141a4: 0865 lsrs r5, r4, #1
141a6: fb07 a605 mla r6, r7, r5, sl
if((c = (*cmp)(key, middle)) > 0) {
141aa: 4631 mov r1, r6
141ac: 4648 mov r0, r9
141ae: 47c0 blx r8
141b0: 2800 cmp r0, #0
141b2: ddf3 ble.n 1419c <_lv_utils_bsearch+0x18>
n = (n / 2) - ((n & 1) == 0);
141b4: f084 0401 eor.w r4, r4, #1
141b8: f004 0401 and.w r4, r4, #1
141bc: 1b2c subs r4, r5, r4
base = (middle += size);
141be: eb06 0a07 add.w sl, r6, r7
141c2: e7ee b.n 141a2 <_lv_utils_bsearch+0x1e>
return NULL;
141c4: 2000 movs r0, #0
141c6: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
middle += (n / 2) * size;
141ca: 4630 mov r0, r6
}
141cc: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
000141d0 <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;
141d0: 4b01 ldr r3, [pc, #4] ; (141d8 <lv_theme_set_act+0x8>)
141d2: 6018 str r0, [r3, #0]
141d4: 4770 bx lr
141d6: bf00 nop
141d8: 20006bd4 .word 0x20006bd4
000141dc <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;
141dc: 4b01 ldr r3, [pc, #4] ; (141e4 <lv_theme_get_font_normal+0x8>)
141de: 681b ldr r3, [r3, #0]
}
141e0: 68d8 ldr r0, [r3, #12]
141e2: 4770 bx lr
141e4: 20006bd4 .word 0x20006bd4
000141e8 <lv_theme_apply>:
{
return act_theme->flags;
}
void lv_theme_apply(lv_obj_t * obj, lv_theme_style_t name)
{
141e8: b508 push {r3, lr}
act_theme->apply_xcb(obj, name);
141ea: 4b02 ldr r3, [pc, #8] ; (141f4 <lv_theme_apply+0xc>)
141ec: 681b ldr r3, [r3, #0]
141ee: 681b ldr r3, [r3, #0]
141f0: 4798 blx r3
141f2: bd08 pop {r3, pc}
141f4: 20006bd4 .word 0x20006bd4
000141f8 <theme_apply>:
return &theme;
}
static void theme_apply(lv_obj_t * obj, lv_theme_style_t name)
{
141f8: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
141fc: 4604 mov r4, r0
lv_style_list_t * list;
switch(name) {
141fe: 3901 subs r1, #1
14200: 2927 cmp r1, #39 ; 0x27
14202: d834 bhi.n 1426e <theme_apply+0x76>
14204: e8df f011 tbh [pc, r1, lsl #1]
14208: 00390028 .word 0x00390028
1420c: 00a100ec .word 0x00a100ec
14210: 00600053 .word 0x00600053
14214: 00d803a3 .word 0x00d803a3
14218: 02b20144 .word 0x02b20144
1421c: 03cc0046 .word 0x03cc0046
14220: 03fe0273 .word 0x03fe0273
14224: 00e000dc .word 0x00e000dc
14228: 00e40081 .word 0x00e40081
1422c: 00e80193 .word 0x00e80193
14230: 02660247 .word 0x02660247
14234: 016a03e3 .word 0x016a03e3
14238: 023f017c .word 0x023f017c
1423c: 022301a0 .word 0x022301a0
14240: 0375011f .word 0x0375011f
14244: 01080391 .word 0x01080391
14248: 02e000b8 .word 0x02e000b8
1424c: 01f401c9 .word 0x01f401c9
14250: 02040347 .word 0x02040347
14254: 033a0312 .word 0x033a0312
case LV_THEME_NONE:
break;
case LV_THEME_SCR:
lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN);
14258: 2100 movs r1, #0
1425a: 4b9b ldr r3, [pc, #620] ; (144c8 <theme_apply+0x2d0>)
1425c: 4798 blx r3
list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN);
1425e: 2100 movs r1, #0
14260: 4620 mov r0, r4
14262: 4b9a ldr r3, [pc, #616] ; (144cc <theme_apply+0x2d4>)
14264: 4798 blx r3
_lv_style_list_add_style(list, &styles->scr);
14266: 4b9a ldr r3, [pc, #616] ; (144d0 <theme_apply+0x2d8>)
14268: 6819 ldr r1, [r3, #0]
1426a: 4b9a ldr r3, [pc, #616] ; (144d4 <theme_apply+0x2dc>)
1426c: 4798 blx r3
#endif
default:
break;
}
lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL);
1426e: 21ff movs r1, #255 ; 0xff
14270: 4620 mov r0, r4
14272: 4b99 ldr r3, [pc, #612] ; (144d8 <theme_apply+0x2e0>)
14274: 4798 blx r3
14276: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN);
1427a: 2100 movs r1, #0
1427c: 4b92 ldr r3, [pc, #584] ; (144c8 <theme_apply+0x2d0>)
1427e: 4798 blx r3
list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN);
14280: 2100 movs r1, #0
14282: 4620 mov r0, r4
14284: 4b91 ldr r3, [pc, #580] ; (144cc <theme_apply+0x2d4>)
14286: 4798 blx r3
_lv_style_list_add_style(list, &styles->bg);
14288: 4b91 ldr r3, [pc, #580] ; (144d0 <theme_apply+0x2d8>)
1428a: 6819 ldr r1, [r3, #0]
1428c: 3104 adds r1, #4
1428e: 4b91 ldr r3, [pc, #580] ; (144d4 <theme_apply+0x2dc>)
14290: 4798 blx r3
break;
14292: e7ec b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN);
14294: 2100 movs r1, #0
14296: 4b8c ldr r3, [pc, #560] ; (144c8 <theme_apply+0x2d0>)
14298: 4798 blx r3
list = lv_obj_get_style_list(obj, LV_CONT_PART_MAIN);
1429a: 2100 movs r1, #0
1429c: 4620 mov r0, r4
1429e: 4b8b ldr r3, [pc, #556] ; (144cc <theme_apply+0x2d4>)
142a0: 4798 blx r3
_lv_style_list_add_style(list, &styles->bg);
142a2: 4b8b ldr r3, [pc, #556] ; (144d0 <theme_apply+0x2d8>)
142a4: 6819 ldr r1, [r3, #0]
142a6: 3104 adds r1, #4
142a8: 4b8a ldr r3, [pc, #552] ; (144d4 <theme_apply+0x2dc>)
142aa: 4798 blx r3
break;
142ac: e7df b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN);
142ae: 2100 movs r1, #0
142b0: 4b85 ldr r3, [pc, #532] ; (144c8 <theme_apply+0x2d0>)
142b2: 4798 blx r3
list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN);
142b4: 2100 movs r1, #0
142b6: 4620 mov r0, r4
142b8: 4b84 ldr r3, [pc, #528] ; (144cc <theme_apply+0x2d4>)
142ba: 4798 blx r3
_lv_style_list_add_style(list, &styles->btn);
142bc: 4b84 ldr r3, [pc, #528] ; (144d0 <theme_apply+0x2d8>)
142be: 6819 ldr r1, [r3, #0]
142c0: 3110 adds r1, #16
142c2: 4b84 ldr r3, [pc, #528] ; (144d4 <theme_apply+0x2dc>)
142c4: 4798 blx r3
break;
142c6: e7d2 b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_BTNMATRIX_PART_BG);
142c8: 2100 movs r1, #0
142ca: f8df 81fc ldr.w r8, [pc, #508] ; 144c8 <theme_apply+0x2d0>
142ce: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BG);
142d0: 2100 movs r1, #0
142d2: 4620 mov r0, r4
142d4: 4f7d ldr r7, [pc, #500] ; (144cc <theme_apply+0x2d4>)
142d6: 47b8 blx r7
142d8: 4681 mov r9, r0
_lv_style_list_add_style(list, &styles->bg);
142da: 4e7d ldr r6, [pc, #500] ; (144d0 <theme_apply+0x2d8>)
142dc: 6831 ldr r1, [r6, #0]
142de: 3104 adds r1, #4
142e0: 4d7c ldr r5, [pc, #496] ; (144d4 <theme_apply+0x2dc>)
142e2: 47a8 blx r5
_lv_style_list_add_style(list, &styles->pad_small);
142e4: 6831 ldr r1, [r6, #0]
142e6: 3118 adds r1, #24
142e8: 4648 mov r0, r9
142ea: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_BTNMATRIX_PART_BTN);
142ec: 2101 movs r1, #1
142ee: 4620 mov r0, r4
142f0: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BTN);
142f2: 2101 movs r1, #1
142f4: 4620 mov r0, r4
142f6: 47b8 blx r7
142f8: 4607 mov r7, r0
_lv_style_list_add_style(list, &styles->bg);
142fa: 6831 ldr r1, [r6, #0]
142fc: 3104 adds r1, #4
142fe: 47a8 blx r5
_lv_style_list_add_style(list, &styles->bg_click);
14300: 6831 ldr r1, [r6, #0]
14302: 3108 adds r1, #8
14304: 4638 mov r0, r7
14306: 47a8 blx r5
break;
14308: e7b1 b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_KEYBOARD_PART_BG);
1430a: 2100 movs r1, #0
1430c: f8df 81b8 ldr.w r8, [pc, #440] ; 144c8 <theme_apply+0x2d0>
14310: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BG);
14312: 2100 movs r1, #0
14314: 4620 mov r0, r4
14316: 4f6d ldr r7, [pc, #436] ; (144cc <theme_apply+0x2d4>)
14318: 47b8 blx r7
1431a: 4681 mov r9, r0
_lv_style_list_add_style(list, &styles->scr);
1431c: 4e6c ldr r6, [pc, #432] ; (144d0 <theme_apply+0x2d8>)
1431e: 6831 ldr r1, [r6, #0]
14320: 4d6c ldr r5, [pc, #432] ; (144d4 <theme_apply+0x2dc>)
14322: 47a8 blx r5
_lv_style_list_add_style(list, &styles->kb_bg);
14324: 6831 ldr r1, [r6, #0]
14326: 3168 adds r1, #104 ; 0x68
14328: 4648 mov r0, r9
1432a: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_KEYBOARD_PART_BTN);
1432c: 2101 movs r1, #1
1432e: 4620 mov r0, r4
14330: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BTN);
14332: 2101 movs r1, #1
14334: 4620 mov r0, r4
14336: 47b8 blx r7
14338: 4607 mov r7, r0
_lv_style_list_add_style(list, &styles->bg);
1433a: 6831 ldr r1, [r6, #0]
1433c: 3104 adds r1, #4
1433e: 47a8 blx r5
_lv_style_list_add_style(list, &styles->bg_click);
14340: 6831 ldr r1, [r6, #0]
14342: 3108 adds r1, #8
14344: 4638 mov r0, r7
14346: 47a8 blx r5
break;
14348: e791 b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_BAR_PART_BG);
1434a: 2100 movs r1, #0
1434c: f8df 8178 ldr.w r8, [pc, #376] ; 144c8 <theme_apply+0x2d0>
14350: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_BAR_PART_BG);
14352: 2100 movs r1, #0
14354: 4620 mov r0, r4
14356: 4f5d ldr r7, [pc, #372] ; (144cc <theme_apply+0x2d4>)
14358: 47b8 blx r7
_lv_style_list_add_style(list, &styles->bar_bg);
1435a: 4e5d ldr r6, [pc, #372] ; (144d0 <theme_apply+0x2d8>)
1435c: 6831 ldr r1, [r6, #0]
1435e: 3124 adds r1, #36 ; 0x24
14360: 4d5c ldr r5, [pc, #368] ; (144d4 <theme_apply+0x2dc>)
14362: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_BAR_PART_INDIC);
14364: 2101 movs r1, #1
14366: 4620 mov r0, r4
14368: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_BAR_PART_INDIC);
1436a: 2101 movs r1, #1
1436c: 4620 mov r0, r4
1436e: 47b8 blx r7
_lv_style_list_add_style(list, &styles->bar_indic);
14370: 6831 ldr r1, [r6, #0]
14372: 3128 adds r1, #40 ; 0x28
14374: 47a8 blx r5
break;
14376: e77a b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_SWITCH_PART_BG);
14378: 2100 movs r1, #0
1437a: f8df 814c ldr.w r8, [pc, #332] ; 144c8 <theme_apply+0x2d0>
1437e: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_SWITCH_PART_BG);
14380: 2100 movs r1, #0
14382: 4620 mov r0, r4
14384: 4f51 ldr r7, [pc, #324] ; (144cc <theme_apply+0x2d4>)
14386: 47b8 blx r7
_lv_style_list_add_style(list, &styles->bar_bg);
14388: 4e51 ldr r6, [pc, #324] ; (144d0 <theme_apply+0x2d8>)
1438a: 6831 ldr r1, [r6, #0]
1438c: 3124 adds r1, #36 ; 0x24
1438e: 4d51 ldr r5, [pc, #324] ; (144d4 <theme_apply+0x2dc>)
14390: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_SWITCH_PART_INDIC);
14392: 2101 movs r1, #1
14394: 4620 mov r0, r4
14396: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_SWITCH_PART_INDIC);
14398: 2101 movs r1, #1
1439a: 4620 mov r0, r4
1439c: 47b8 blx r7
_lv_style_list_add_style(list, &styles->bar_indic);
1439e: 6831 ldr r1, [r6, #0]
143a0: 3128 adds r1, #40 ; 0x28
143a2: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_SWITCH_PART_KNOB);
143a4: 2102 movs r1, #2
143a6: 4620 mov r0, r4
143a8: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_SWITCH_PART_KNOB);
143aa: 2102 movs r1, #2
143ac: 4620 mov r0, r4
143ae: 47b8 blx r7
_lv_style_list_add_style(list, &styles->sw_knob);
143b0: 6831 ldr r1, [r6, #0]
143b2: 319c adds r1, #156 ; 0x9c
143b4: 47a8 blx r5
break;
143b6: e75a b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_CANVAS_PART_MAIN);
143b8: 2100 movs r1, #0
143ba: 4b43 ldr r3, [pc, #268] ; (144c8 <theme_apply+0x2d0>)
143bc: 4798 blx r3
break;
143be: e756 b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_IMG_PART_MAIN);
143c0: 2100 movs r1, #0
143c2: 4b41 ldr r3, [pc, #260] ; (144c8 <theme_apply+0x2d0>)
143c4: 4798 blx r3
break;
143c6: e752 b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_IMG_PART_MAIN);
143c8: 2100 movs r1, #0
143ca: 4b3f ldr r3, [pc, #252] ; (144c8 <theme_apply+0x2d0>)
143cc: 4798 blx r3
break;
143ce: e74e b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_LABEL_PART_MAIN);
143d0: 2100 movs r1, #0
143d2: 4b3d ldr r3, [pc, #244] ; (144c8 <theme_apply+0x2d0>)
143d4: 4798 blx r3
break;
143d6: e74a b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_LABEL_PART_MAIN);
143d8: 2100 movs r1, #0
143da: 4b3b ldr r3, [pc, #236] ; (144c8 <theme_apply+0x2d0>)
143dc: 4798 blx r3
break;
143de: e746 b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_ARC_PART_BG);
143e0: 2100 movs r1, #0
143e2: f8df 80e4 ldr.w r8, [pc, #228] ; 144c8 <theme_apply+0x2d0>
143e6: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_ARC_PART_BG);
143e8: 2100 movs r1, #0
143ea: 4620 mov r0, r4
143ec: 4f37 ldr r7, [pc, #220] ; (144cc <theme_apply+0x2d4>)
143ee: 47b8 blx r7
143f0: 4681 mov r9, r0
_lv_style_list_add_style(list, &styles->bg);
143f2: 4e37 ldr r6, [pc, #220] ; (144d0 <theme_apply+0x2d8>)
143f4: 6831 ldr r1, [r6, #0]
143f6: 3104 adds r1, #4
143f8: 4d36 ldr r5, [pc, #216] ; (144d4 <theme_apply+0x2dc>)
143fa: 47a8 blx r5
_lv_style_list_add_style(list, &styles->arc_bg);
143fc: 6831 ldr r1, [r6, #0]
143fe: 3120 adds r1, #32
14400: 4648 mov r0, r9
14402: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_ARC_PART_INDIC);
14404: 2101 movs r1, #1
14406: 4620 mov r0, r4
14408: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_ARC_PART_INDIC);
1440a: 2101 movs r1, #1
1440c: 4620 mov r0, r4
1440e: 47b8 blx r7
_lv_style_list_add_style(list, &styles->arc_indic);
14410: 6831 ldr r1, [r6, #0]
14412: 311c adds r1, #28
14414: 47a8 blx r5
break;
14416: e72a b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_SPINNER_PART_BG);
14418: 2100 movs r1, #0
1441a: f8df 80ac ldr.w r8, [pc, #172] ; 144c8 <theme_apply+0x2d0>
1441e: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_SPINNER_PART_BG);
14420: 2100 movs r1, #0
14422: 4620 mov r0, r4
14424: 4f29 ldr r7, [pc, #164] ; (144cc <theme_apply+0x2d4>)
14426: 47b8 blx r7
_lv_style_list_add_style(list, &styles->arc_bg);
14428: 4e29 ldr r6, [pc, #164] ; (144d0 <theme_apply+0x2d8>)
1442a: 6831 ldr r1, [r6, #0]
1442c: 3120 adds r1, #32
1442e: 4d29 ldr r5, [pc, #164] ; (144d4 <theme_apply+0x2dc>)
14430: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_SPINNER_PART_INDIC);
14432: 2101 movs r1, #1
14434: 4620 mov r0, r4
14436: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_SPINNER_PART_INDIC);
14438: 2101 movs r1, #1
1443a: 4620 mov r0, r4
1443c: 47b8 blx r7
_lv_style_list_add_style(list, &styles->arc_indic);
1443e: 6831 ldr r1, [r6, #0]
14440: 311c adds r1, #28
14442: 47a8 blx r5
break;
14444: e713 b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_SLIDER_PART_BG);
14446: 2100 movs r1, #0
14448: f8df 807c ldr.w r8, [pc, #124] ; 144c8 <theme_apply+0x2d0>
1444c: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_SLIDER_PART_BG);
1444e: 2100 movs r1, #0
14450: 4620 mov r0, r4
14452: 4f1e ldr r7, [pc, #120] ; (144cc <theme_apply+0x2d4>)
14454: 47b8 blx r7
14456: 4681 mov r9, r0
_lv_style_list_add_style(list, &styles->bar_bg);
14458: 4e1d ldr r6, [pc, #116] ; (144d0 <theme_apply+0x2d8>)
1445a: 6831 ldr r1, [r6, #0]
1445c: 3124 adds r1, #36 ; 0x24
1445e: 4d1d ldr r5, [pc, #116] ; (144d4 <theme_apply+0x2dc>)
14460: 47a8 blx r5
_lv_style_list_add_style(list, &styles->slider_bg);
14462: 6831 ldr r1, [r6, #0]
14464: 3194 adds r1, #148 ; 0x94
14466: 4648 mov r0, r9
14468: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_SLIDER_PART_INDIC);
1446a: 2101 movs r1, #1
1446c: 4620 mov r0, r4
1446e: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_SLIDER_PART_INDIC);
14470: 2101 movs r1, #1
14472: 4620 mov r0, r4
14474: 47b8 blx r7
_lv_style_list_add_style(list, &styles->bar_indic);
14476: 6831 ldr r1, [r6, #0]
14478: 3128 adds r1, #40 ; 0x28
1447a: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_SLIDER_PART_KNOB);
1447c: 2102 movs r1, #2
1447e: 4620 mov r0, r4
14480: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_SLIDER_PART_KNOB);
14482: 2102 movs r1, #2
14484: 4620 mov r0, r4
14486: 47b8 blx r7
_lv_style_list_add_style(list, &styles->slider_knob);
14488: 6831 ldr r1, [r6, #0]
1448a: 3190 adds r1, #144 ; 0x90
1448c: 47a8 blx r5
break;
1448e: e6ee b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_CHECKBOX_PART_BG);
14490: 2100 movs r1, #0
14492: f8df 8034 ldr.w r8, [pc, #52] ; 144c8 <theme_apply+0x2d0>
14496: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BG);
14498: 2100 movs r1, #0
1449a: 4620 mov r0, r4
1449c: 4f0b ldr r7, [pc, #44] ; (144cc <theme_apply+0x2d4>)
1449e: 47b8 blx r7
_lv_style_list_add_style(list, &styles->cb_bg);
144a0: 4e0b ldr r6, [pc, #44] ; (144d0 <theme_apply+0x2d8>)
144a2: 6831 ldr r1, [r6, #0]
144a4: 314c adds r1, #76 ; 0x4c
144a6: 4d0b ldr r5, [pc, #44] ; (144d4 <theme_apply+0x2dc>)
144a8: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_CHECKBOX_PART_BULLET);
144aa: 2140 movs r1, #64 ; 0x40
144ac: 4620 mov r0, r4
144ae: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BULLET);
144b0: 2140 movs r1, #64 ; 0x40
144b2: 4620 mov r0, r4
144b4: 47b8 blx r7
144b6: 4607 mov r7, r0
_lv_style_list_add_style(list, &styles->btn);
144b8: 6831 ldr r1, [r6, #0]
144ba: 3110 adds r1, #16
144bc: 47a8 blx r5
_lv_style_list_add_style(list, &styles->cb_bullet);
144be: 6831 ldr r1, [r6, #0]
144c0: 3150 adds r1, #80 ; 0x50
144c2: 4638 mov r0, r7
144c4: 47a8 blx r5
break;
144c6: e6d2 b.n 1426e <theme_apply+0x76>
144c8: 000030cd .word 0x000030cd
144cc: 00002ffd .word 0x00002ffd
144d0: 20006bd8 .word 0x20006bd8
144d4: 000065d9 .word 0x000065d9
144d8: 00003a99 .word 0x00003a99
lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BG);
144dc: 2100 movs r1, #0
144de: 4b9f ldr r3, [pc, #636] ; (1475c <theme_apply+0x564>)
144e0: 4798 blx r3
list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BG);
144e2: 2100 movs r1, #0
144e4: 4620 mov r0, r4
144e6: 4b9e ldr r3, [pc, #632] ; (14760 <theme_apply+0x568>)
144e8: 4798 blx r3
144ea: 4607 mov r7, r0
_lv_style_list_add_style(list, &styles->bg);
144ec: 4e9d ldr r6, [pc, #628] ; (14764 <theme_apply+0x56c>)
144ee: 6831 ldr r1, [r6, #0]
144f0: 3104 adds r1, #4
144f2: 4d9d ldr r5, [pc, #628] ; (14768 <theme_apply+0x570>)
144f4: 47a8 blx r5
_lv_style_list_add_style(list, &styles->mbox_bg);
144f6: 6831 ldr r1, [r6, #0]
144f8: 317c adds r1, #124 ; 0x7c
144fa: 4638 mov r0, r7
144fc: 47a8 blx r5
break;
144fe: e6b6 b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BTN_BG);
14500: 2140 movs r1, #64 ; 0x40
14502: f8df 8258 ldr.w r8, [pc, #600] ; 1475c <theme_apply+0x564>
14506: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN_BG);
14508: 2140 movs r1, #64 ; 0x40
1450a: 4620 mov r0, r4
1450c: 4f94 ldr r7, [pc, #592] ; (14760 <theme_apply+0x568>)
1450e: 47b8 blx r7
_lv_style_list_add_style(list, &styles->pad_small);
14510: 4e94 ldr r6, [pc, #592] ; (14764 <theme_apply+0x56c>)
14512: 6831 ldr r1, [r6, #0]
14514: 3118 adds r1, #24
14516: 4d94 ldr r5, [pc, #592] ; (14768 <theme_apply+0x570>)
14518: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BTN);
1451a: 2141 movs r1, #65 ; 0x41
1451c: 4620 mov r0, r4
1451e: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN);
14520: 2141 movs r1, #65 ; 0x41
14522: 4620 mov r0, r4
14524: 47b8 blx r7
_lv_style_list_add_style(list, &styles->btn);
14526: 6831 ldr r1, [r6, #0]
14528: 3110 adds r1, #16
1452a: 47a8 blx r5
break;
1452c: e69f b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_LED_PART_MAIN);
1452e: 2100 movs r1, #0
14530: 4b8a ldr r3, [pc, #552] ; (1475c <theme_apply+0x564>)
14532: 4798 blx r3
list = lv_obj_get_style_list(obj, LV_LED_PART_MAIN);
14534: 2100 movs r1, #0
14536: 4620 mov r0, r4
14538: 4b89 ldr r3, [pc, #548] ; (14760 <theme_apply+0x568>)
1453a: 4798 blx r3
_lv_style_list_add_style(list, &styles->led);
1453c: 4b89 ldr r3, [pc, #548] ; (14764 <theme_apply+0x56c>)
1453e: 6819 ldr r1, [r3, #0]
14540: 316c adds r1, #108 ; 0x6c
14542: 4b89 ldr r3, [pc, #548] ; (14768 <theme_apply+0x570>)
14544: 4798 blx r3
break;
14546: e692 b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_PAGE_PART_BG);
14548: 2100 movs r1, #0
1454a: f8df 8210 ldr.w r8, [pc, #528] ; 1475c <theme_apply+0x564>
1454e: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_PAGE_PART_BG);
14550: 2100 movs r1, #0
14552: 4620 mov r0, r4
14554: 4f82 ldr r7, [pc, #520] ; (14760 <theme_apply+0x568>)
14556: 47b8 blx r7
_lv_style_list_add_style(list, &styles->bg);
14558: 4e82 ldr r6, [pc, #520] ; (14764 <theme_apply+0x56c>)
1455a: 6831 ldr r1, [r6, #0]
1455c: 3104 adds r1, #4
1455e: 4d82 ldr r5, [pc, #520] ; (14768 <theme_apply+0x570>)
14560: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_PAGE_PART_SCROLLABLE);
14562: 2140 movs r1, #64 ; 0x40
14564: 4620 mov r0, r4
14566: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLABLE);
14568: 2140 movs r1, #64 ; 0x40
1456a: 4620 mov r0, r4
1456c: 47b8 blx r7
_lv_style_list_add_style(list, &styles->pad_inner);
1456e: 6831 ldr r1, [r6, #0]
14570: 3114 adds r1, #20
14572: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_PAGE_PART_SCROLLBAR);
14574: 2101 movs r1, #1
14576: 4620 mov r0, r4
14578: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLBAR);
1457a: 2101 movs r1, #1
1457c: 4620 mov r0, r4
1457e: 47b8 blx r7
_lv_style_list_add_style(list, &styles->sb);
14580: 6831 ldr r1, [r6, #0]
14582: 3180 adds r1, #128 ; 0x80
14584: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_PAGE_PART_EDGE_FLASH);
14586: 2102 movs r1, #2
14588: 4620 mov r0, r4
1458a: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_PAGE_PART_EDGE_FLASH);
1458c: 2102 movs r1, #2
1458e: 4620 mov r0, r4
14590: 47b8 blx r7
_lv_style_list_add_style(list, &styles->edge_flash);
14592: 6831 ldr r1, [r6, #0]
14594: 3184 adds r1, #132 ; 0x84
14596: 47a8 blx r5
break;
14598: e669 b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_TABVIEW_PART_BG);
1459a: 2100 movs r1, #0
1459c: 4d6f ldr r5, [pc, #444] ; (1475c <theme_apply+0x564>)
1459e: 47a8 blx r5
list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_BG);
145a0: 2100 movs r1, #0
145a2: 4620 mov r0, r4
145a4: f8df 81b8 ldr.w r8, [pc, #440] ; 14760 <theme_apply+0x568>
145a8: 47c0 blx r8
_lv_style_list_add_style(list, &styles->scr);
145aa: 4f6e ldr r7, [pc, #440] ; (14764 <theme_apply+0x56c>)
145ac: 6839 ldr r1, [r7, #0]
145ae: 4e6e ldr r6, [pc, #440] ; (14768 <theme_apply+0x570>)
145b0: 47b0 blx r6
lv_obj_clean_style_list(obj, LV_TABVIEW_PART_BG_SCRLLABLE);
145b2: 2140 movs r1, #64 ; 0x40
145b4: 4620 mov r0, r4
145b6: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_TABVIEW_PART_TAB_BG);
145b8: 2141 movs r1, #65 ; 0x41
145ba: 4620 mov r0, r4
145bc: 47a8 blx r5
list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_TAB_BG);
145be: 2141 movs r1, #65 ; 0x41
145c0: 4620 mov r0, r4
145c2: 47c0 blx r8
_lv_style_list_add_style(list, &styles->tabview_btns_bg);
145c4: 6839 ldr r1, [r7, #0]
145c6: 31a8 adds r1, #168 ; 0xa8
145c8: 47b0 blx r6
lv_obj_clean_style_list(obj, LV_TABVIEW_PART_INDIC);
145ca: 2143 movs r1, #67 ; 0x43
145cc: 4620 mov r0, r4
145ce: 47a8 blx r5
list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_INDIC);
145d0: 2143 movs r1, #67 ; 0x43
145d2: 4620 mov r0, r4
145d4: 47c0 blx r8
_lv_style_list_add_style(list, &styles->tabview_indic);
145d6: 6839 ldr r1, [r7, #0]
145d8: 31ac adds r1, #172 ; 0xac
145da: 47b0 blx r6
lv_obj_clean_style_list(obj, LV_TABVIEW_PART_TAB_BTN);
145dc: 2142 movs r1, #66 ; 0x42
145de: 4620 mov r0, r4
145e0: 47a8 blx r5
list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_TAB_BTN);
145e2: 2142 movs r1, #66 ; 0x42
145e4: 4620 mov r0, r4
145e6: 47c0 blx r8
_lv_style_list_add_style(list, &styles->tabview_btns);
145e8: 6839 ldr r1, [r7, #0]
145ea: 31a4 adds r1, #164 ; 0xa4
145ec: 47b0 blx r6
break;
145ee: e63e b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_PAGE_PART_BG);
145f0: 2100 movs r1, #0
145f2: 4d5a ldr r5, [pc, #360] ; (1475c <theme_apply+0x564>)
145f4: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_PAGE_PART_SCROLLABLE);
145f6: 2140 movs r1, #64 ; 0x40
145f8: 4620 mov r0, r4
145fa: 47a8 blx r5
list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLABLE);
145fc: 2140 movs r1, #64 ; 0x40
145fe: 4620 mov r0, r4
14600: 4b57 ldr r3, [pc, #348] ; (14760 <theme_apply+0x568>)
14602: 4798 blx r3
_lv_style_list_add_style(list, &styles->tabview_page_scrl);
14604: 4b57 ldr r3, [pc, #348] ; (14764 <theme_apply+0x56c>)
14606: 6819 ldr r1, [r3, #0]
14608: 31b0 adds r1, #176 ; 0xb0
1460a: 4b57 ldr r3, [pc, #348] ; (14768 <theme_apply+0x570>)
1460c: 4798 blx r3
break;
1460e: e62e b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_BG);
14610: 2100 movs r1, #0
14612: f8df 8148 ldr.w r8, [pc, #328] ; 1475c <theme_apply+0x564>
14616: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_BG);
14618: 2100 movs r1, #0
1461a: 4620 mov r0, r4
1461c: 4f50 ldr r7, [pc, #320] ; (14760 <theme_apply+0x568>)
1461e: 47b8 blx r7
_lv_style_list_add_style(list, &styles->scr);
14620: 4e50 ldr r6, [pc, #320] ; (14764 <theme_apply+0x56c>)
14622: 6831 ldr r1, [r6, #0]
14624: 4d50 ldr r5, [pc, #320] ; (14768 <theme_apply+0x570>)
14626: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_SCROLLBAR);
14628: 2101 movs r1, #1
1462a: 4620 mov r0, r4
1462c: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_SCROLLBAR);
1462e: 2101 movs r1, #1
14630: 4620 mov r0, r4
14632: 47b8 blx r7
_lv_style_list_add_style(list, &styles->sb);
14634: 6831 ldr r1, [r6, #0]
14636: 3180 adds r1, #128 ; 0x80
14638: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_EDGE_FLASH);
1463a: 2102 movs r1, #2
1463c: 4620 mov r0, r4
1463e: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_EDGE_FLASH);
14640: 2102 movs r1, #2
14642: 4620 mov r0, r4
14644: 47b8 blx r7
_lv_style_list_add_style(list, &styles->edge_flash);
14646: 6831 ldr r1, [r6, #0]
14648: 3184 adds r1, #132 ; 0x84
1464a: 47a8 blx r5
break;
1464c: e60f b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_ROLLER_PART_BG);
1464e: 2100 movs r1, #0
14650: f8df 8108 ldr.w r8, [pc, #264] ; 1475c <theme_apply+0x564>
14654: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_ROLLER_PART_BG);
14656: 2100 movs r1, #0
14658: 4620 mov r0, r4
1465a: 4f41 ldr r7, [pc, #260] ; (14760 <theme_apply+0x568>)
1465c: 47b8 blx r7
1465e: 4681 mov r9, r0
_lv_style_list_add_style(list, &styles->bg);
14660: 4e40 ldr r6, [pc, #256] ; (14764 <theme_apply+0x56c>)
14662: 6831 ldr r1, [r6, #0]
14664: 3104 adds r1, #4
14666: 4d40 ldr r5, [pc, #256] ; (14768 <theme_apply+0x570>)
14668: 47a8 blx r5
_lv_style_list_add_style(list, &styles->roller_bg);
1466a: 6831 ldr r1, [r6, #0]
1466c: 3188 adds r1, #136 ; 0x88
1466e: 4648 mov r0, r9
14670: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_ROLLER_PART_SELECTED);
14672: 2103 movs r1, #3
14674: 4620 mov r0, r4
14676: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_ROLLER_PART_SELECTED);
14678: 2103 movs r1, #3
1467a: 4620 mov r0, r4
1467c: 47b8 blx r7
_lv_style_list_add_style(list, &styles->roller_sel);
1467e: 6831 ldr r1, [r6, #0]
14680: 318c adds r1, #140 ; 0x8c
14682: 47a8 blx r5
break;
14684: e5f3 b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_OBJMASK_PART_MAIN);
14686: 2100 movs r1, #0
14688: 4b34 ldr r3, [pc, #208] ; (1475c <theme_apply+0x564>)
1468a: 4798 blx r3
list = lv_obj_get_style_list(obj, LV_OBJMASK_PART_MAIN);
1468c: 2100 movs r1, #0
1468e: 4620 mov r0, r4
14690: 4b33 ldr r3, [pc, #204] ; (14760 <theme_apply+0x568>)
14692: 4798 blx r3
break;
14694: e5eb b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_LIST_PART_BG);
14696: 2100 movs r1, #0
14698: 4f30 ldr r7, [pc, #192] ; (1475c <theme_apply+0x564>)
1469a: 47b8 blx r7
list = lv_obj_get_style_list(obj, LV_LIST_PART_BG);
1469c: 2100 movs r1, #0
1469e: 4620 mov r0, r4
146a0: f8df 80bc ldr.w r8, [pc, #188] ; 14760 <theme_apply+0x568>
146a4: 47c0 blx r8
146a6: 4681 mov r9, r0
_lv_style_list_add_style(list, &styles->bg);
146a8: 4e2e ldr r6, [pc, #184] ; (14764 <theme_apply+0x56c>)
146aa: 6831 ldr r1, [r6, #0]
146ac: 3104 adds r1, #4
146ae: 4d2e ldr r5, [pc, #184] ; (14768 <theme_apply+0x570>)
146b0: 47a8 blx r5
_lv_style_list_add_style(list, &styles->list_bg);
146b2: 6831 ldr r1, [r6, #0]
146b4: 3174 adds r1, #116 ; 0x74
146b6: 4648 mov r0, r9
146b8: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_LIST_PART_SCROLLABLE);
146ba: 2140 movs r1, #64 ; 0x40
146bc: 4620 mov r0, r4
146be: 47b8 blx r7
lv_obj_clean_style_list(obj, LV_LIST_PART_SCROLLBAR);
146c0: 2101 movs r1, #1
146c2: 4620 mov r0, r4
146c4: 47b8 blx r7
list = lv_obj_get_style_list(obj, LV_LIST_PART_SCROLLBAR);
146c6: 2101 movs r1, #1
146c8: 4620 mov r0, r4
146ca: 47c0 blx r8
_lv_style_list_add_style(list, &styles->sb);
146cc: 6831 ldr r1, [r6, #0]
146ce: 3180 adds r1, #128 ; 0x80
146d0: 47a8 blx r5
break;
146d2: e5cc b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN);
146d4: 2100 movs r1, #0
146d6: 4b21 ldr r3, [pc, #132] ; (1475c <theme_apply+0x564>)
146d8: 4798 blx r3
list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN);
146da: 2100 movs r1, #0
146dc: 4620 mov r0, r4
146de: 4b20 ldr r3, [pc, #128] ; (14760 <theme_apply+0x568>)
146e0: 4798 blx r3
_lv_style_list_add_style(list, &styles->list_btn);
146e2: 4b20 ldr r3, [pc, #128] ; (14764 <theme_apply+0x56c>)
146e4: 6819 ldr r1, [r3, #0]
146e6: 3178 adds r1, #120 ; 0x78
146e8: 4b1f ldr r3, [pc, #124] ; (14768 <theme_apply+0x570>)
146ea: 4798 blx r3
break;
146ec: e5bf b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_MAIN);
146ee: 2100 movs r1, #0
146f0: f8df 8068 ldr.w r8, [pc, #104] ; 1475c <theme_apply+0x564>
146f4: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_MAIN);
146f6: 2100 movs r1, #0
146f8: 4620 mov r0, r4
146fa: 4f19 ldr r7, [pc, #100] ; (14760 <theme_apply+0x568>)
146fc: 47b8 blx r7
146fe: 4681 mov r9, r0
_lv_style_list_add_style(list, &styles->bg);
14700: 4e18 ldr r6, [pc, #96] ; (14764 <theme_apply+0x56c>)
14702: 6831 ldr r1, [r6, #0]
14704: 3104 adds r1, #4
14706: 4d18 ldr r5, [pc, #96] ; (14768 <theme_apply+0x570>)
14708: 47a8 blx r5
_lv_style_list_add_style(list, &styles->bg_click);
1470a: 6831 ldr r1, [r6, #0]
1470c: 3108 adds r1, #8
1470e: 4648 mov r0, r9
14710: 47a8 blx r5
_lv_style_list_add_style(list, &styles->pad_small);
14712: 6831 ldr r1, [r6, #0]
14714: 3118 adds r1, #24
14716: 4648 mov r0, r9
14718: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_LIST);
1471a: 2140 movs r1, #64 ; 0x40
1471c: 4620 mov r0, r4
1471e: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_LIST);
14720: 2140 movs r1, #64 ; 0x40
14722: 4620 mov r0, r4
14724: 47b8 blx r7
14726: 4681 mov r9, r0
_lv_style_list_add_style(list, &styles->bg);
14728: 6831 ldr r1, [r6, #0]
1472a: 3104 adds r1, #4
1472c: 47a8 blx r5
_lv_style_list_add_style(list, &styles->ddlist_page);
1472e: 6831 ldr r1, [r6, #0]
14730: 3154 adds r1, #84 ; 0x54
14732: 4648 mov r0, r9
14734: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SCROLLBAR);
14736: 2141 movs r1, #65 ; 0x41
14738: 4620 mov r0, r4
1473a: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SCROLLBAR);
1473c: 2141 movs r1, #65 ; 0x41
1473e: 4620 mov r0, r4
14740: 47b8 blx r7
_lv_style_list_add_style(list, &styles->sb);
14742: 6831 ldr r1, [r6, #0]
14744: 3180 adds r1, #128 ; 0x80
14746: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SELECTED);
14748: 2142 movs r1, #66 ; 0x42
1474a: 4620 mov r0, r4
1474c: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SELECTED);
1474e: 2142 movs r1, #66 ; 0x42
14750: 4620 mov r0, r4
14752: 47b8 blx r7
_lv_style_list_add_style(list, &styles->ddlist_sel);
14754: 6831 ldr r1, [r6, #0]
14756: 3158 adds r1, #88 ; 0x58
14758: 47a8 blx r5
break;
1475a: e588 b.n 1426e <theme_apply+0x76>
1475c: 000030cd .word 0x000030cd
14760: 00002ffd .word 0x00002ffd
14764: 20006bd8 .word 0x20006bd8
14768: 000065d9 .word 0x000065d9
lv_obj_clean_style_list(obj, LV_CHART_PART_BG);
1476c: 2100 movs r1, #0
1476e: f8df 8290 ldr.w r8, [pc, #656] ; 14a00 <theme_apply+0x808>
14772: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_CHART_PART_BG);
14774: 2100 movs r1, #0
14776: 4620 mov r0, r4
14778: 4f9e ldr r7, [pc, #632] ; (149f4 <theme_apply+0x7fc>)
1477a: 47b8 blx r7
1477c: 4681 mov r9, r0
_lv_style_list_add_style(list, &styles->bg);
1477e: 4e9e ldr r6, [pc, #632] ; (149f8 <theme_apply+0x800>)
14780: 6831 ldr r1, [r6, #0]
14782: 3104 adds r1, #4
14784: 4d9d ldr r5, [pc, #628] ; (149fc <theme_apply+0x804>)
14786: 47a8 blx r5
_lv_style_list_add_style(list, &styles->chart_bg);
14788: 6831 ldr r1, [r6, #0]
1478a: 3140 adds r1, #64 ; 0x40
1478c: 4648 mov r0, r9
1478e: 47a8 blx r5
_lv_style_list_add_style(list, &styles->pad_small);
14790: 6831 ldr r1, [r6, #0]
14792: 3118 adds r1, #24
14794: 4648 mov r0, r9
14796: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_CHART_PART_SERIES_BG);
14798: 2101 movs r1, #1
1479a: 4620 mov r0, r4
1479c: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES_BG);
1479e: 2101 movs r1, #1
147a0: 4620 mov r0, r4
147a2: 47b8 blx r7
147a4: 4681 mov r9, r0
_lv_style_list_add_style(list, &styles->pad_small);
147a6: 6831 ldr r1, [r6, #0]
147a8: 3118 adds r1, #24
147aa: 47a8 blx r5
_lv_style_list_add_style(list, &styles->chart_series_bg);
147ac: 6831 ldr r1, [r6, #0]
147ae: 3144 adds r1, #68 ; 0x44
147b0: 4648 mov r0, r9
147b2: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_CHART_PART_SERIES);
147b4: 2102 movs r1, #2
147b6: 4620 mov r0, r4
147b8: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES);
147ba: 2102 movs r1, #2
147bc: 4620 mov r0, r4
147be: 47b8 blx r7
_lv_style_list_add_style(list, &styles->chart_series);
147c0: 6831 ldr r1, [r6, #0]
147c2: 3148 adds r1, #72 ; 0x48
147c4: 47a8 blx r5
break;
147c6: e552 b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_TABLE_PART_BG);
147c8: 2100 movs r1, #0
147ca: f8df 8234 ldr.w r8, [pc, #564] ; 14a00 <theme_apply+0x808>
147ce: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_TABLE_PART_BG);
147d0: 2100 movs r1, #0
147d2: 4620 mov r0, r4
147d4: 4f87 ldr r7, [pc, #540] ; (149f4 <theme_apply+0x7fc>)
147d6: 47b8 blx r7
_lv_style_list_add_style(list, &styles->bg);
147d8: 4e87 ldr r6, [pc, #540] ; (149f8 <theme_apply+0x800>)
147da: 6831 ldr r1, [r6, #0]
147dc: 3104 adds r1, #4
147de: 4d87 ldr r5, [pc, #540] ; (149fc <theme_apply+0x804>)
147e0: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL1);
147e2: 2101 movs r1, #1
147e4: 4620 mov r0, r4
147e6: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL1);
147e8: 2101 movs r1, #1
147ea: 4620 mov r0, r4
147ec: 47b8 blx r7
_lv_style_list_add_style(list, &styles->table_cell);
147ee: 6831 ldr r1, [r6, #0]
147f0: 31a0 adds r1, #160 ; 0xa0
147f2: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL2);
147f4: 2102 movs r1, #2
147f6: 4620 mov r0, r4
147f8: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL2);
147fa: 2102 movs r1, #2
147fc: 4620 mov r0, r4
147fe: 47b8 blx r7
_lv_style_list_add_style(list, &styles->table_cell);
14800: 6831 ldr r1, [r6, #0]
14802: 31a0 adds r1, #160 ; 0xa0
14804: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL3);
14806: 2103 movs r1, #3
14808: 4620 mov r0, r4
1480a: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL3);
1480c: 2103 movs r1, #3
1480e: 4620 mov r0, r4
14810: 47b8 blx r7
_lv_style_list_add_style(list, &styles->table_cell);
14812: 6831 ldr r1, [r6, #0]
14814: 31a0 adds r1, #160 ; 0xa0
14816: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL4);
14818: 2104 movs r1, #4
1481a: 4620 mov r0, r4
1481c: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL4);
1481e: 2104 movs r1, #4
14820: 4620 mov r0, r4
14822: 47b8 blx r7
_lv_style_list_add_style(list, &styles->table_cell);
14824: 6831 ldr r1, [r6, #0]
14826: 31a0 adds r1, #160 ; 0xa0
14828: 47a8 blx r5
break;
1482a: e520 b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_WIN_PART_BG);
1482c: 2100 movs r1, #0
1482e: f8df 81d0 ldr.w r8, [pc, #464] ; 14a00 <theme_apply+0x808>
14832: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_WIN_PART_BG);
14834: 2100 movs r1, #0
14836: 4620 mov r0, r4
14838: 4f6e ldr r7, [pc, #440] ; (149f4 <theme_apply+0x7fc>)
1483a: 47b8 blx r7
_lv_style_list_add_style(list, &styles->scr);
1483c: 4e6e ldr r6, [pc, #440] ; (149f8 <theme_apply+0x800>)
1483e: 6831 ldr r1, [r6, #0]
14840: 4d6e ldr r5, [pc, #440] ; (149fc <theme_apply+0x804>)
14842: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_WIN_PART_SCROLLBAR);
14844: 2142 movs r1, #66 ; 0x42
14846: 4620 mov r0, r4
14848: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_WIN_PART_SCROLLBAR);
1484a: 2142 movs r1, #66 ; 0x42
1484c: 4620 mov r0, r4
1484e: 47b8 blx r7
_lv_style_list_add_style(list, &styles->sb);
14850: 6831 ldr r1, [r6, #0]
14852: 3180 adds r1, #128 ; 0x80
14854: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_WIN_PART_CONTENT_SCROLLABLE);
14856: 2141 movs r1, #65 ; 0x41
14858: 4620 mov r0, r4
1485a: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_WIN_PART_CONTENT_SCROLLABLE);
1485c: 2141 movs r1, #65 ; 0x41
1485e: 4620 mov r0, r4
14860: 47b8 blx r7
_lv_style_list_add_style(list, &styles->tabview_page_scrl);
14862: 6831 ldr r1, [r6, #0]
14864: 31b0 adds r1, #176 ; 0xb0
14866: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_WIN_PART_HEADER);
14868: 2140 movs r1, #64 ; 0x40
1486a: 4620 mov r0, r4
1486c: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_WIN_PART_HEADER);
1486e: 2140 movs r1, #64 ; 0x40
14870: 4620 mov r0, r4
14872: 47b8 blx r7
_lv_style_list_add_style(list, &styles->tabview_btns_bg);
14874: 6831 ldr r1, [r6, #0]
14876: 31a8 adds r1, #168 ; 0xa8
14878: 47a8 blx r5
break;
1487a: e4f8 b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN);
1487c: 2100 movs r1, #0
1487e: 4b60 ldr r3, [pc, #384] ; (14a00 <theme_apply+0x808>)
14880: 4798 blx r3
list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN);
14882: 2100 movs r1, #0
14884: 4620 mov r0, r4
14886: 4b5b ldr r3, [pc, #364] ; (149f4 <theme_apply+0x7fc>)
14888: 4798 blx r3
_lv_style_list_add_style(list, &styles->tabview_btns);
1488a: 4b5b ldr r3, [pc, #364] ; (149f8 <theme_apply+0x800>)
1488c: 6819 ldr r1, [r3, #0]
1488e: 31a4 adds r1, #164 ; 0xa4
14890: 4b5a ldr r3, [pc, #360] ; (149fc <theme_apply+0x804>)
14892: 4798 blx r3
break;
14894: e4eb b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_BG);
14896: 2100 movs r1, #0
14898: f8df 8164 ldr.w r8, [pc, #356] ; 14a00 <theme_apply+0x808>
1489c: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_BG);
1489e: 2100 movs r1, #0
148a0: 4620 mov r0, r4
148a2: 4f54 ldr r7, [pc, #336] ; (149f4 <theme_apply+0x7fc>)
148a4: 47b8 blx r7
148a6: 4681 mov r9, r0
_lv_style_list_add_style(list, &styles->bg);
148a8: 4e53 ldr r6, [pc, #332] ; (149f8 <theme_apply+0x800>)
148aa: 6831 ldr r1, [r6, #0]
148ac: 3104 adds r1, #4
148ae: 4d53 ldr r5, [pc, #332] ; (149fc <theme_apply+0x804>)
148b0: 47a8 blx r5
_lv_style_list_add_style(list, &styles->pad_small);
148b2: 6831 ldr r1, [r6, #0]
148b4: 3118 adds r1, #24
148b6: 4648 mov r0, r9
148b8: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_PLACEHOLDER);
148ba: 2104 movs r1, #4
148bc: 4620 mov r0, r4
148be: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_PLACEHOLDER);
148c0: 2104 movs r1, #4
148c2: 4620 mov r0, r4
148c4: 47b8 blx r7
_lv_style_list_add_style(list, &styles->ta_placeholder);
148c6: 6831 ldr r1, [r6, #0]
148c8: 31b8 adds r1, #184 ; 0xb8
148ca: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_CURSOR);
148cc: 2103 movs r1, #3
148ce: 4620 mov r0, r4
148d0: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_CURSOR);
148d2: 2103 movs r1, #3
148d4: 4620 mov r0, r4
148d6: 47b8 blx r7
_lv_style_list_add_style(list, &styles->ta_cursor);
148d8: 6831 ldr r1, [r6, #0]
148da: 31b4 adds r1, #180 ; 0xb4
148dc: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_SCROLLBAR);
148de: 2101 movs r1, #1
148e0: 4620 mov r0, r4
148e2: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_SCROLLBAR);
148e4: 2101 movs r1, #1
148e6: 4620 mov r0, r4
148e8: 47b8 blx r7
_lv_style_list_add_style(list, &styles->sb);
148ea: 6831 ldr r1, [r6, #0]
148ec: 3180 adds r1, #128 ; 0x80
148ee: 47a8 blx r5
break;
148f0: e4bd b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_SPINBOX_PART_BG);
148f2: 2100 movs r1, #0
148f4: f8df 8108 ldr.w r8, [pc, #264] ; 14a00 <theme_apply+0x808>
148f8: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_BG);
148fa: 2100 movs r1, #0
148fc: 4620 mov r0, r4
148fe: 4f3d ldr r7, [pc, #244] ; (149f4 <theme_apply+0x7fc>)
14900: 47b8 blx r7
14902: 4681 mov r9, r0
_lv_style_list_add_style(list, &styles->bg);
14904: 4e3c ldr r6, [pc, #240] ; (149f8 <theme_apply+0x800>)
14906: 6831 ldr r1, [r6, #0]
14908: 3104 adds r1, #4
1490a: 4d3c ldr r5, [pc, #240] ; (149fc <theme_apply+0x804>)
1490c: 47a8 blx r5
_lv_style_list_add_style(list, &styles->pad_small);
1490e: 6831 ldr r1, [r6, #0]
14910: 3118 adds r1, #24
14912: 4648 mov r0, r9
14914: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_SPINBOX_PART_CURSOR);
14916: 2103 movs r1, #3
14918: 4620 mov r0, r4
1491a: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_CURSOR);
1491c: 2103 movs r1, #3
1491e: 4620 mov r0, r4
14920: 47b8 blx r7
_lv_style_list_add_style(list, &styles->spinbox_cursor);
14922: 6831 ldr r1, [r6, #0]
14924: 3198 adds r1, #152 ; 0x98
14926: 47a8 blx r5
break;
14928: e4a1 b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN);
1492a: 2100 movs r1, #0
1492c: 4b34 ldr r3, [pc, #208] ; (14a00 <theme_apply+0x808>)
1492e: 4798 blx r3
list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN);
14930: 2100 movs r1, #0
14932: 4620 mov r0, r4
14934: 4b2f ldr r3, [pc, #188] ; (149f4 <theme_apply+0x7fc>)
14936: 4798 blx r3
14938: 4607 mov r7, r0
_lv_style_list_add_style(list, &styles->bg);
1493a: 4e2f ldr r6, [pc, #188] ; (149f8 <theme_apply+0x800>)
1493c: 6831 ldr r1, [r6, #0]
1493e: 3104 adds r1, #4
14940: 4d2e ldr r5, [pc, #184] ; (149fc <theme_apply+0x804>)
14942: 47a8 blx r5
_lv_style_list_add_style(list, &styles->bg_click);
14944: 6831 ldr r1, [r6, #0]
14946: 3108 adds r1, #8
14948: 4638 mov r0, r7
1494a: 47a8 blx r5
break;
1494c: e48f b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_CALENDAR_PART_BG);
1494e: 2100 movs r1, #0
14950: f8df 80ac ldr.w r8, [pc, #172] ; 14a00 <theme_apply+0x808>
14954: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_BG);
14956: 2100 movs r1, #0
14958: 4620 mov r0, r4
1495a: 4f26 ldr r7, [pc, #152] ; (149f4 <theme_apply+0x7fc>)
1495c: 47b8 blx r7
_lv_style_list_add_style(list, &styles->bg);
1495e: 4e26 ldr r6, [pc, #152] ; (149f8 <theme_apply+0x800>)
14960: 6831 ldr r1, [r6, #0]
14962: 3104 adds r1, #4
14964: 4d25 ldr r5, [pc, #148] ; (149fc <theme_apply+0x804>)
14966: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_CALENDAR_PART_DATE);
14968: 2103 movs r1, #3
1496a: 4620 mov r0, r4
1496c: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_DATE);
1496e: 2103 movs r1, #3
14970: 4620 mov r0, r4
14972: 47b8 blx r7
_lv_style_list_add_style(list, &styles->calendar_date_nums);
14974: 6831 ldr r1, [r6, #0]
14976: 312c adds r1, #44 ; 0x2c
14978: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_CALENDAR_PART_HEADER);
1497a: 2101 movs r1, #1
1497c: 4620 mov r0, r4
1497e: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_HEADER);
14980: 2101 movs r1, #1
14982: 4620 mov r0, r4
14984: 47b8 blx r7
_lv_style_list_add_style(list, &styles->calendar_header);
14986: 6831 ldr r1, [r6, #0]
14988: 3130 adds r1, #48 ; 0x30
1498a: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_CALENDAR_PART_DAY_NAMES);
1498c: 2102 movs r1, #2
1498e: 4620 mov r0, r4
14990: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_DAY_NAMES);
14992: 2102 movs r1, #2
14994: 4620 mov r0, r4
14996: 47b8 blx r7
_lv_style_list_add_style(list, &styles->calendar_daynames);
14998: 6831 ldr r1, [r6, #0]
1499a: 3134 adds r1, #52 ; 0x34
1499c: 47a8 blx r5
break;
1499e: e466 b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_CPICKER_PART_MAIN);
149a0: 2100 movs r1, #0
149a2: f8df 805c ldr.w r8, [pc, #92] ; 14a00 <theme_apply+0x808>
149a6: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_CPICKER_PART_MAIN);
149a8: 2100 movs r1, #0
149aa: 4620 mov r0, r4
149ac: 4f11 ldr r7, [pc, #68] ; (149f4 <theme_apply+0x7fc>)
149ae: 47b8 blx r7
_lv_style_list_add_style(list, &styles->cpicker_bg);
149b0: 4e11 ldr r6, [pc, #68] ; (149f8 <theme_apply+0x800>)
149b2: 6831 ldr r1, [r6, #0]
149b4: 3138 adds r1, #56 ; 0x38
149b6: 4d11 ldr r5, [pc, #68] ; (149fc <theme_apply+0x804>)
149b8: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_CPICKER_PART_KNOB);
149ba: 2101 movs r1, #1
149bc: 4620 mov r0, r4
149be: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_CPICKER_PART_KNOB);
149c0: 2101 movs r1, #1
149c2: 4620 mov r0, r4
149c4: 47b8 blx r7
_lv_style_list_add_style(list, &styles->cpicker_indic);
149c6: 6831 ldr r1, [r6, #0]
149c8: 313c adds r1, #60 ; 0x3c
149ca: 47a8 blx r5
break;
149cc: e44f b.n 1426e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_LINEMETER_PART_MAIN);
149ce: 2100 movs r1, #0
149d0: 4b0b ldr r3, [pc, #44] ; (14a00 <theme_apply+0x808>)
149d2: 4798 blx r3
list = lv_obj_get_style_list(obj, LV_LINEMETER_PART_MAIN);
149d4: 2100 movs r1, #0
149d6: 4620 mov r0, r4
149d8: 4b06 ldr r3, [pc, #24] ; (149f4 <theme_apply+0x7fc>)
149da: 4798 blx r3
149dc: 4607 mov r7, r0
_lv_style_list_add_style(list, &styles->bg);
149de: 4e06 ldr r6, [pc, #24] ; (149f8 <theme_apply+0x800>)
149e0: 6831 ldr r1, [r6, #0]
149e2: 3104 adds r1, #4
149e4: 4d05 ldr r5, [pc, #20] ; (149fc <theme_apply+0x804>)
149e6: 47a8 blx r5
_lv_style_list_add_style(list, &styles->lmeter);
149e8: 6831 ldr r1, [r6, #0]
149ea: 3170 adds r1, #112 ; 0x70
149ec: 4638 mov r0, r7
149ee: 47a8 blx r5
break;
149f0: e43d b.n 1426e <theme_apply+0x76>
149f2: bf00 nop
149f4: 00002ffd .word 0x00002ffd
149f8: 20006bd8 .word 0x20006bd8
149fc: 000065d9 .word 0x000065d9
14a00: 000030cd .word 0x000030cd
lv_obj_clean_style_list(obj, LV_GAUGE_PART_MAIN);
14a04: 2100 movs r1, #0
14a06: f8df 8054 ldr.w r8, [pc, #84] ; 14a5c <theme_apply+0x864>
14a0a: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAIN);
14a0c: 2100 movs r1, #0
14a0e: 4620 mov r0, r4
14a10: 4f0f ldr r7, [pc, #60] ; (14a50 <theme_apply+0x858>)
14a12: 47b8 blx r7
14a14: 4681 mov r9, r0
_lv_style_list_add_style(list, &styles->bg);
14a16: 4e0f ldr r6, [pc, #60] ; (14a54 <theme_apply+0x85c>)
14a18: 6831 ldr r1, [r6, #0]
14a1a: 3104 adds r1, #4
14a1c: 4d0e ldr r5, [pc, #56] ; (14a58 <theme_apply+0x860>)
14a1e: 47a8 blx r5
_lv_style_list_add_style(list, &styles->gauge_main);
14a20: 6831 ldr r1, [r6, #0]
14a22: 315c adds r1, #92 ; 0x5c
14a24: 4648 mov r0, r9
14a26: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_GAUGE_PART_MAJOR);
14a28: 2101 movs r1, #1
14a2a: 4620 mov r0, r4
14a2c: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAJOR);
14a2e: 2101 movs r1, #1
14a30: 4620 mov r0, r4
14a32: 47b8 blx r7
_lv_style_list_add_style(list, &styles->gauge_strong);
14a34: 6831 ldr r1, [r6, #0]
14a36: 3160 adds r1, #96 ; 0x60
14a38: 47a8 blx r5
lv_obj_clean_style_list(obj, LV_GAUGE_PART_NEEDLE);
14a3a: 2102 movs r1, #2
14a3c: 4620 mov r0, r4
14a3e: 47c0 blx r8
list = lv_obj_get_style_list(obj, LV_GAUGE_PART_NEEDLE);
14a40: 2102 movs r1, #2
14a42: 4620 mov r0, r4
14a44: 47b8 blx r7
_lv_style_list_add_style(list, &styles->gauge_needle);
14a46: 6831 ldr r1, [r6, #0]
14a48: 3164 adds r1, #100 ; 0x64
14a4a: 47a8 blx r5
break;
14a4c: e40f b.n 1426e <theme_apply+0x76>
14a4e: bf00 nop
14a50: 00002ffd .word 0x00002ffd
14a54: 20006bd8 .word 0x20006bd8
14a58: 000065d9 .word 0x000065d9
14a5c: 000030cd .word 0x000030cd
00014a60 <style_init_reset>:
/**********************
* STATIC FUNCTIONS
**********************/
static void style_init_reset(lv_style_t * style)
{
14a60: b508 push {r3, lr}
if(inited) lv_style_reset(style);
14a62: 4b04 ldr r3, [pc, #16] ; (14a74 <style_init_reset+0x14>)
14a64: 791b ldrb r3, [r3, #4]
14a66: b913 cbnz r3, 14a6e <style_init_reset+0xe>
else lv_style_init(style);
14a68: 4b03 ldr r3, [pc, #12] ; (14a78 <style_init_reset+0x18>)
14a6a: 4798 blx r3
14a6c: bd08 pop {r3, pc}
if(inited) lv_style_reset(style);
14a6e: 4b03 ldr r3, [pc, #12] ; (14a7c <style_init_reset+0x1c>)
14a70: 4798 blx r3
14a72: bd08 pop {r3, pc}
14a74: 20006bd8 .word 0x20006bd8
14a78: 000064d9 .word 0x000064d9
14a7c: 00006765 .word 0x00006765
00014a80 <basic_init>:
{
14a80: b570 push {r4, r5, r6, lr}
style_init_reset(&styles->scr);
14a82: 4cb3 ldr r4, [pc, #716] ; (14d50 <basic_init+0x2d0>)
14a84: 6820 ldr r0, [r4, #0]
14a86: 4bb3 ldr r3, [pc, #716] ; (14d54 <basic_init+0x2d4>)
14a88: 4798 blx r3
_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)
14a8a: 22ff movs r2, #255 ; 0xff
14a8c: 212c movs r1, #44 ; 0x2c
14a8e: 6820 ldr r0, [r4, #0]
14a90: 4bb1 ldr r3, [pc, #708] ; (14d58 <basic_init+0x2d8>)
14a92: 4798 blx r3
lv_style_set_bg_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR);
14a94: 6a23 ldr r3, [r4, #32]
14a96: f013 0302 ands.w r3, r3, #2
14a9a: bf14 ite ne
14a9c: 211d movne r1, #29
14a9e: 2108 moveq r1, #8
14aa0: 2b00 cmp r3, #0
14aa2: bf15 itete ne
14aa4: 203b movne r0, #59 ; 0x3b
14aa6: 2012 moveq r0, #18
14aa8: 231e movne r3, #30
14aaa: 230b moveq r3, #11
14aac: f04f 0200 mov.w r2, #0
14ab0: f363 0204 bfi r2, r3, #0, #5
14ab4: f360 124a bfi r2, r0, #5, #6
14ab8: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
14abc: 2129 movs r1, #41 ; 0x29
14abe: 6820 ldr r0, [r4, #0]
14ac0: 4ba6 ldr r3, [pc, #664] ; (14d5c <basic_init+0x2dc>)
14ac2: 4798 blx r3
lv_style_set_text_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR_TEXT);
14ac4: 4620 mov r0, r4
14ac6: 6a23 ldr r3, [r4, #32]
14ac8: f013 0302 ands.w r3, r3, #2
14acc: bf14 ite ne
14ace: 2107 movne r1, #7
14ad0: 211c moveq r1, #28
14ad2: 2b00 cmp r3, #0
14ad4: bf15 itete ne
14ad6: 240f movne r4, #15
14ad8: 243a moveq r4, #58 ; 0x3a
14ada: 2308 movne r3, #8
14adc: 231d moveq r3, #29
14ade: f04f 0200 mov.w r2, #0
14ae2: f363 0204 bfi r2, r3, #0, #5
14ae6: f364 124a bfi r2, r4, #5, #6
14aea: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_STR, value_str, const char *, _ptr, scalar)
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar)
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar)
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_DECOR, text_decor, lv_text_decor_t, _int, scalar)
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_BLEND_MODE, text_blend_mode, lv_blend_mode_t, _int, scalar)
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
14aee: f248 0189 movw r1, #32905 ; 0x8089
14af2: 6800 ldr r0, [r0, #0]
14af4: 4b99 ldr r3, [pc, #612] ; (14d5c <basic_init+0x2dc>)
14af6: 4798 blx r3
lv_style_set_value_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR_TEXT);
14af8: 4895 ldr r0, [pc, #596] ; (14d50 <basic_init+0x2d0>)
14afa: 6a03 ldr r3, [r0, #32]
14afc: f013 0302 ands.w r3, r3, #2
14b00: bf14 ite ne
14b02: 2107 movne r1, #7
14b04: 211c moveq r1, #28
14b06: 2b00 cmp r3, #0
14b08: bf15 itete ne
14b0a: 240f movne r4, #15
14b0c: 243a moveq r4, #58 ; 0x3a
14b0e: 2308 movne r3, #8
14b10: 231d moveq r3, #29
14b12: f04f 0200 mov.w r2, #0
14b16: f363 0204 bfi r2, r3, #0, #5
14b1a: f364 124a bfi r2, r4, #5, #6
14b1e: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar)
14b22: 2179 movs r1, #121 ; 0x79
14b24: 6800 ldr r0, [r0, #0]
14b26: 4b8d ldr r3, [pc, #564] ; (14d5c <basic_init+0x2dc>)
14b28: 4798 blx r3
lv_style_set_text_font(&styles->scr, LV_STATE_DEFAULT, theme.font_normal);
14b2a: 4c89 ldr r4, [pc, #548] ; (14d50 <basic_init+0x2d0>)
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_SEL_COLOR, text_sel_color, lv_color_t, _color, nonscalar)
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_OPA, text_opa, lv_opa_t, _opa, scalar)
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar)
14b2c: 6962 ldr r2, [r4, #20]
14b2e: f248 018e movw r1, #32910 ; 0x808e
14b32: 6820 ldr r0, [r4, #0]
14b34: 4d8a ldr r5, [pc, #552] ; (14d60 <basic_init+0x2e0>)
14b36: 47a8 blx r5
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar)
14b38: 6962 ldr r2, [r4, #20]
14b3a: 217e movs r1, #126 ; 0x7e
14b3c: 6820 ldr r0, [r4, #0]
14b3e: 47a8 blx r5
style_init_reset(&styles->bg);
14b40: 6820 ldr r0, [r4, #0]
14b42: 3004 adds r0, #4
14b44: 4b83 ldr r3, [pc, #524] ; (14d54 <basic_init+0x2d4>)
14b46: 4798 blx r3
lv_style_set_radius(&styles->bg, LV_STATE_DEFAULT, LV_DPX(8));
14b48: 6824 ldr r4, [r4, #0]
14b4a: 3404 adds r4, #4
14b4c: 2000 movs r0, #0
14b4e: 4b85 ldr r3, [pc, #532] ; (14d64 <basic_init+0x2e4>)
14b50: 4798 blx r3
14b52: 300a adds r0, #10
14b54: 00c0 lsls r0, r0, #3
14b56: f5b0 7fa0 cmp.w r0, #320 ; 0x140
14b5a: f280 8646 bge.w 157ea <basic_init+0xd6a>
14b5e: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
14b60: 2101 movs r1, #1
14b62: 4620 mov r0, r4
14b64: 4b80 ldr r3, [pc, #512] ; (14d68 <basic_init+0x2e8>)
14b66: 4798 blx r3
lv_style_set_bg_opa(&styles->bg, LV_STATE_DEFAULT, LV_OPA_COVER);
14b68: 4c79 ldr r4, [pc, #484] ; (14d50 <basic_init+0x2d0>)
14b6a: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
14b6c: 22ff movs r2, #255 ; 0xff
14b6e: 212c movs r1, #44 ; 0x2c
14b70: 3004 adds r0, #4
14b72: 4b79 ldr r3, [pc, #484] ; (14d58 <basic_init+0x2d8>)
14b74: 4798 blx r3
lv_style_set_bg_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG);
14b76: 6820 ldr r0, [r4, #0]
14b78: 3004 adds r0, #4
14b7a: 6a23 ldr r3, [r4, #32]
14b7c: f013 0f02 tst.w r3, #2
14b80: f040 8641 bne.w 15806 <basic_init+0xd86>
14b84: 230b movs r3, #11
14b86: 2118 movs r1, #24
14b88: 240e movs r4, #14
14b8a: f04f 0200 mov.w r2, #0
14b8e: f364 0204 bfi r2, r4, #0, #5
14b92: f361 124a bfi r2, r1, #5, #6
14b96: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
14b9a: 2129 movs r1, #41 ; 0x29
14b9c: 4b6f ldr r3, [pc, #444] ; (14d5c <basic_init+0x2dc>)
14b9e: 4798 blx r3
lv_style_set_border_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_BORDER);
14ba0: 4b6b ldr r3, [pc, #428] ; (14d50 <basic_init+0x2d0>)
14ba2: 6818 ldr r0, [r3, #0]
14ba4: 6a1b ldr r3, [r3, #32]
14ba6: f013 0302 ands.w r3, r3, #2
14baa: bf14 ite ne
14bac: 211a movne r1, #26
14bae: 2110 moveq r1, #16
14bb0: 2b00 cmp r3, #0
14bb2: bf15 itete ne
14bb4: 2437 movne r4, #55 ; 0x37
14bb6: 2422 moveq r4, #34 ; 0x22
14bb8: 231c movne r3, #28
14bba: 2312 moveq r3, #18
14bbc: f04f 0200 mov.w r2, #0
14bc0: f363 0204 bfi r2, r3, #0, #5
14bc4: f364 124a bfi r2, r4, #5, #6
14bc8: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar)
14bcc: 2139 movs r1, #57 ; 0x39
14bce: 3004 adds r0, #4
14bd0: 4d62 ldr r5, [pc, #392] ; (14d5c <basic_init+0x2dc>)
14bd2: 47a8 blx r5
lv_style_set_border_color(&styles->bg, LV_STATE_FOCUSED, theme.color_primary);
14bd4: 4c5e ldr r4, [pc, #376] ; (14d50 <basic_init+0x2d0>)
14bd6: 6820 ldr r0, [r4, #0]
14bd8: 89a2 ldrh r2, [r4, #12]
14bda: f240 2139 movw r1, #569 ; 0x239
14bde: 3004 adds r0, #4
14be0: 47a8 blx r5
lv_style_set_border_color(&styles->bg, LV_STATE_EDITED, theme.color_secondary);
14be2: 6820 ldr r0, [r4, #0]
14be4: 89e2 ldrh r2, [r4, #14]
14be6: f240 4139 movw r1, #1081 ; 0x439
14bea: 3004 adds r0, #4
14bec: 47a8 blx r5
lv_style_set_border_width(&styles->bg, LV_STATE_DEFAULT, BORDER_WIDTH);
14bee: 6824 ldr r4, [r4, #0]
14bf0: 3404 adds r4, #4
14bf2: 2000 movs r0, #0
14bf4: 4b5b ldr r3, [pc, #364] ; (14d64 <basic_init+0x2e4>)
14bf6: 4798 blx r3
14bf8: 3028 adds r0, #40 ; 0x28
14bfa: 0040 lsls r0, r0, #1
14bfc: f5b0 7fa0 cmp.w r0, #320 ; 0x140
14c00: f280 8606 bge.w 15810 <basic_init+0xd90>
14c04: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar)
14c06: 2130 movs r1, #48 ; 0x30
14c08: 4620 mov r0, r4
14c0a: 4d57 ldr r5, [pc, #348] ; (14d68 <basic_init+0x2e8>)
14c0c: 47a8 blx r5
lv_style_set_border_post(&styles->bg, LV_STATE_DEFAULT, true);
14c0e: 4c50 ldr r4, [pc, #320] ; (14d50 <basic_init+0x2d0>)
14c10: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar)
14c12: 2201 movs r2, #1
14c14: 2133 movs r1, #51 ; 0x33
14c16: 3004 adds r0, #4
14c18: 47a8 blx r5
lv_style_set_text_font(&styles->bg, LV_STATE_DEFAULT, theme.font_normal);
14c1a: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar)
14c1c: 6962 ldr r2, [r4, #20]
14c1e: f248 018e movw r1, #32910 ; 0x808e
14c22: 3004 adds r0, #4
14c24: 4b4e ldr r3, [pc, #312] ; (14d60 <basic_init+0x2e0>)
14c26: 4798 blx r3
lv_style_set_text_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT);
14c28: 6820 ldr r0, [r4, #0]
14c2a: 3004 adds r0, #4
14c2c: 6a23 ldr r3, [r4, #32]
14c2e: f013 0f02 tst.w r3, #2
14c32: f040 85fb bne.w 1582c <basic_init+0xdac>
14c36: 231f movs r3, #31
14c38: 213f movs r1, #63 ; 0x3f
14c3a: 461c mov r4, r3
14c3c: f04f 0200 mov.w r2, #0
14c40: f364 0204 bfi r2, r4, #0, #5
14c44: f361 124a bfi r2, r1, #5, #6
14c48: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
14c4c: f248 0189 movw r1, #32905 ; 0x8089
14c50: 4b42 ldr r3, [pc, #264] ; (14d5c <basic_init+0x2dc>)
14c52: 4798 blx r3
lv_style_set_value_font(&styles->bg, LV_STATE_DEFAULT, theme.font_normal);
14c54: 4c3e ldr r4, [pc, #248] ; (14d50 <basic_init+0x2d0>)
14c56: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar)
14c58: 6962 ldr r2, [r4, #20]
14c5a: 217e movs r1, #126 ; 0x7e
14c5c: 3004 adds r0, #4
14c5e: 4b40 ldr r3, [pc, #256] ; (14d60 <basic_init+0x2e0>)
14c60: 4798 blx r3
lv_style_set_value_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT);
14c62: 6820 ldr r0, [r4, #0]
14c64: 3004 adds r0, #4
14c66: 6a23 ldr r3, [r4, #32]
14c68: f013 0f02 tst.w r3, #2
14c6c: f040 85e3 bne.w 15836 <basic_init+0xdb6>
14c70: 231f movs r3, #31
14c72: 213f movs r1, #63 ; 0x3f
14c74: 461c mov r4, r3
14c76: f04f 0200 mov.w r2, #0
14c7a: f364 0204 bfi r2, r4, #0, #5
14c7e: f361 124a bfi r2, r1, #5, #6
14c82: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar)
14c86: 2179 movs r1, #121 ; 0x79
14c88: 4b34 ldr r3, [pc, #208] ; (14d5c <basic_init+0x2dc>)
14c8a: 4798 blx r3
lv_style_set_image_recolor(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT);
14c8c: 4b30 ldr r3, [pc, #192] ; (14d50 <basic_init+0x2d0>)
14c8e: 6818 ldr r0, [r3, #0]
14c90: 3004 adds r0, #4
14c92: 6a1b ldr r3, [r3, #32]
14c94: f013 0f02 tst.w r3, #2
14c98: f040 85d2 bne.w 15840 <basic_init+0xdc0>
14c9c: 231f movs r3, #31
14c9e: 213f movs r1, #63 ; 0x3f
14ca0: 461c mov r4, r3
14ca2: f04f 0200 mov.w r2, #0
14ca6: f364 0204 bfi r2, r4, #0, #5
14caa: f361 124a bfi r2, r1, #5, #6
14cae: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_DASH_GAP, line_dash_gap, lv_style_int_t, _int, scalar)
_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)
14cb2: f248 01a9 movw r1, #32937 ; 0x80a9
14cb6: 4b29 ldr r3, [pc, #164] ; (14d5c <basic_init+0x2dc>)
14cb8: 4798 blx r3
lv_style_set_line_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT);
14cba: 4b25 ldr r3, [pc, #148] ; (14d50 <basic_init+0x2d0>)
14cbc: 6818 ldr r0, [r3, #0]
14cbe: 3004 adds r0, #4
14cc0: 6a1b ldr r3, [r3, #32]
14cc2: f013 0f02 tst.w r3, #2
14cc6: f040 85c0 bne.w 1584a <basic_init+0xdca>
14cca: 231f movs r3, #31
14ccc: 213f movs r1, #63 ; 0x3f
14cce: 461c mov r4, r3
14cd0: f04f 0200 mov.w r2, #0
14cd4: f364 0204 bfi r2, r4, #0, #5
14cd8: f361 124a bfi r2, r1, #5, #6
14cdc: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar)
14ce0: 2199 movs r1, #153 ; 0x99
14ce2: 4b1e ldr r3, [pc, #120] ; (14d5c <basic_init+0x2dc>)
14ce4: 4798 blx r3
lv_style_set_line_width(&styles->bg, LV_STATE_DEFAULT, 1);
14ce6: 4c1a ldr r4, [pc, #104] ; (14d50 <basic_init+0x2d0>)
14ce8: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar)
14cea: 2201 movs r2, #1
14cec: 2190 movs r1, #144 ; 0x90
14cee: 3004 adds r0, #4
14cf0: 4b1d ldr r3, [pc, #116] ; (14d68 <basic_init+0x2e8>)
14cf2: 4798 blx r3
lv_style_set_pad_left(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH);
14cf4: 6825 ldr r5, [r4, #0]
14cf6: 3504 adds r5, #4
14cf8: 2000 movs r0, #0
14cfa: 4b1c ldr r3, [pc, #112] ; (14d6c <basic_init+0x2ec>)
14cfc: 4798 blx r3
14cfe: 2801 cmp r0, #1
14d00: f240 85a8 bls.w 15854 <basic_init+0xdd4>
14d04: 2000 movs r0, #0
14d06: 4b17 ldr r3, [pc, #92] ; (14d64 <basic_init+0x2e4>)
14d08: 4798 blx r3
14d0a: ebc0 1000 rsb r0, r0, r0, lsl #4
14d0e: 0040 lsls r0, r0, #1
14d10: 3050 adds r0, #80 ; 0x50
14d12: f5b0 7fa0 cmp.w r0, #320 ; 0x140
14d16: f280 85b8 bge.w 1588a <basic_init+0xe0a>
14d1a: 2401 movs r4, #1
14d1c: 2000 movs r0, #0
14d1e: 4b11 ldr r3, [pc, #68] ; (14d64 <basic_init+0x2e4>)
14d20: 4798 blx r3
14d22: 3028 adds r0, #40 ; 0x28
14d24: 0040 lsls r0, r0, #1
14d26: f5b0 7fa0 cmp.w r0, #320 ; 0x140
14d2a: f280 85be bge.w 158aa <basic_init+0xe2a>
14d2e: 2201 movs r2, #1
14d30: 4422 add r2, r4
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
14d32: b212 sxth r2, r2
14d34: 2112 movs r1, #18
14d36: 4628 mov r0, r5
14d38: 4b0b ldr r3, [pc, #44] ; (14d68 <basic_init+0x2e8>)
14d3a: 4798 blx r3
lv_style_set_pad_right(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH);
14d3c: 4b04 ldr r3, [pc, #16] ; (14d50 <basic_init+0x2d0>)
14d3e: 681d ldr r5, [r3, #0]
14d40: 3504 adds r5, #4
14d42: 2000 movs r0, #0
14d44: 4b09 ldr r3, [pc, #36] ; (14d6c <basic_init+0x2ec>)
14d46: 4798 blx r3
14d48: 2801 cmp r0, #1
14d4a: f240 85bc bls.w 158c6 <basic_init+0xe46>
14d4e: e00f b.n 14d70 <basic_init+0x2f0>
14d50: 20006bd8 .word 0x20006bd8
14d54: 00014a61 .word 0x00014a61
14d58: 00006b69 .word 0x00006b69
14d5c: 00006a25 .word 0x00006a25
14d60: 00006c99 .word 0x00006c99
14d64: 00010f3d .word 0x00010f3d
14d68: 000068e1 .word 0x000068e1
14d6c: 00010f59 .word 0x00010f59
14d70: 2000 movs r0, #0
14d72: 4bb1 ldr r3, [pc, #708] ; (15038 <basic_init+0x5b8>)
14d74: 4798 blx r3
14d76: ebc0 1000 rsb r0, r0, r0, lsl #4
14d7a: 0040 lsls r0, r0, #1
14d7c: 3050 adds r0, #80 ; 0x50
14d7e: f5b0 7fa0 cmp.w r0, #320 ; 0x140
14d82: f280 85bb bge.w 158fc <basic_init+0xe7c>
14d86: 2401 movs r4, #1
14d88: 2000 movs r0, #0
14d8a: 4bab ldr r3, [pc, #684] ; (15038 <basic_init+0x5b8>)
14d8c: 4798 blx r3
14d8e: 3028 adds r0, #40 ; 0x28
14d90: 0040 lsls r0, r0, #1
14d92: f5b0 7fa0 cmp.w r0, #320 ; 0x140
14d96: f280 85c1 bge.w 1591c <basic_init+0xe9c>
14d9a: 2201 movs r2, #1
14d9c: 4422 add r2, r4
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
14d9e: b212 sxth r2, r2
14da0: 2113 movs r1, #19
14da2: 4628 mov r0, r5
14da4: 4ba5 ldr r3, [pc, #660] ; (1503c <basic_init+0x5bc>)
14da6: 4798 blx r3
lv_style_set_pad_top(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH);
14da8: 4ba5 ldr r3, [pc, #660] ; (15040 <basic_init+0x5c0>)
14daa: 681d ldr r5, [r3, #0]
14dac: 3504 adds r5, #4
14dae: 2000 movs r0, #0
14db0: 4ba4 ldr r3, [pc, #656] ; (15044 <basic_init+0x5c4>)
14db2: 4798 blx r3
14db4: 2801 cmp r0, #1
14db6: f240 85bf bls.w 15938 <basic_init+0xeb8>
14dba: 2000 movs r0, #0
14dbc: 4b9e ldr r3, [pc, #632] ; (15038 <basic_init+0x5b8>)
14dbe: 4798 blx r3
14dc0: ebc0 1000 rsb r0, r0, r0, lsl #4
14dc4: 0040 lsls r0, r0, #1
14dc6: 3050 adds r0, #80 ; 0x50
14dc8: f5b0 7fa0 cmp.w r0, #320 ; 0x140
14dcc: f280 85cf bge.w 1596e <basic_init+0xeee>
14dd0: 2401 movs r4, #1
14dd2: 2000 movs r0, #0
14dd4: 4b98 ldr r3, [pc, #608] ; (15038 <basic_init+0x5b8>)
14dd6: 4798 blx r3
14dd8: 3028 adds r0, #40 ; 0x28
14dda: 0040 lsls r0, r0, #1
14ddc: f5b0 7fa0 cmp.w r0, #320 ; 0x140
14de0: f280 85d5 bge.w 1598e <basic_init+0xf0e>
14de4: 2201 movs r2, #1
14de6: 4422 add r2, r4
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
14de8: b212 sxth r2, r2
14dea: 2110 movs r1, #16
14dec: 4628 mov r0, r5
14dee: 4b93 ldr r3, [pc, #588] ; (1503c <basic_init+0x5bc>)
14df0: 4798 blx r3
lv_style_set_pad_bottom(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH);
14df2: 4b93 ldr r3, [pc, #588] ; (15040 <basic_init+0x5c0>)
14df4: 681d ldr r5, [r3, #0]
14df6: 3504 adds r5, #4
14df8: 2000 movs r0, #0
14dfa: 4b92 ldr r3, [pc, #584] ; (15044 <basic_init+0x5c4>)
14dfc: 4798 blx r3
14dfe: 2801 cmp r0, #1
14e00: f240 85d3 bls.w 159aa <basic_init+0xf2a>
14e04: 2000 movs r0, #0
14e06: 4b8c ldr r3, [pc, #560] ; (15038 <basic_init+0x5b8>)
14e08: 4798 blx r3
14e0a: ebc0 1000 rsb r0, r0, r0, lsl #4
14e0e: 0040 lsls r0, r0, #1
14e10: 3050 adds r0, #80 ; 0x50
14e12: f5b0 7fa0 cmp.w r0, #320 ; 0x140
14e16: f280 85f4 bge.w 15a02 <basic_init+0xf82>
14e1a: 2401 movs r4, #1
14e1c: 2000 movs r0, #0
14e1e: 4b86 ldr r3, [pc, #536] ; (15038 <basic_init+0x5b8>)
14e20: 4798 blx r3
14e22: 3028 adds r0, #40 ; 0x28
14e24: 0040 lsls r0, r0, #1
14e26: f5b0 7fa0 cmp.w r0, #320 ; 0x140
14e2a: f280 85fa bge.w 15a22 <basic_init+0xfa2>
14e2e: 2201 movs r2, #1
14e30: 4422 add r2, r4
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
14e32: b212 sxth r2, r2
14e34: 2111 movs r1, #17
14e36: 4628 mov r0, r5
14e38: 4b80 ldr r3, [pc, #512] ; (1503c <basic_init+0x5bc>)
14e3a: 4798 blx r3
lv_style_set_pad_inner(&styles->bg, LV_STATE_DEFAULT, PAD_DEF);
14e3c: 4b80 ldr r3, [pc, #512] ; (15040 <basic_init+0x5c0>)
14e3e: 681c ldr r4, [r3, #0]
14e40: 3404 adds r4, #4
14e42: 2000 movs r0, #0
14e44: 4b7f ldr r3, [pc, #508] ; (15044 <basic_init+0x5c4>)
14e46: 4798 blx r3
14e48: 2801 cmp r0, #1
14e4a: f240 85f8 bls.w 15a3e <basic_init+0xfbe>
14e4e: 2000 movs r0, #0
14e50: 4b79 ldr r3, [pc, #484] ; (15038 <basic_init+0x5b8>)
14e52: 4798 blx r3
14e54: ebc0 1000 rsb r0, r0, r0, lsl #4
14e58: 0040 lsls r0, r0, #1
14e5a: 3050 adds r0, #80 ; 0x50
14e5c: f5b0 7fa0 cmp.w r0, #320 ; 0x140
14e60: f280 8608 bge.w 15a74 <basic_init+0xff4>
14e64: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar)
14e66: 2114 movs r1, #20
14e68: 4620 mov r0, r4
14e6a: 4d74 ldr r5, [pc, #464] ; (1503c <basic_init+0x5bc>)
14e6c: 47a8 blx r5
lv_style_set_transition_time(&styles->bg, LV_STATE_DEFAULT, TRANSITION_TIME);
14e6e: 4c74 ldr r4, [pc, #464] ; (15040 <basic_init+0x5c0>)
14e70: 6820 ldr r0, [r4, #0]
_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)
14e72: 2296 movs r2, #150 ; 0x96
14e74: 21b0 movs r1, #176 ; 0xb0
14e76: 3004 adds r0, #4
14e78: 47a8 blx r5
lv_style_set_transition_prop_6(&styles->bg, LV_STATE_DEFAULT, LV_STYLE_BORDER_COLOR);
14e7a: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_1, transition_prop_1, lv_style_int_t, _int, scalar)
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_2, transition_prop_2, lv_style_int_t, _int, scalar)
_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)
14e7c: 2239 movs r2, #57 ; 0x39
14e7e: 21b7 movs r1, #183 ; 0xb7
14e80: 3004 adds r0, #4
14e82: 47a8 blx r5
style_init_reset(&styles->bg_sec);
14e84: 6820 ldr r0, [r4, #0]
14e86: 300c adds r0, #12
14e88: 4b6f ldr r3, [pc, #444] ; (15048 <basic_init+0x5c8>)
14e8a: 4798 blx r3
lv_style_copy(&styles->bg_sec, &styles->bg);
14e8c: 6820 ldr r0, [r4, #0]
14e8e: 1d01 adds r1, r0, #4
14e90: 300c adds r0, #12
14e92: 4b6e ldr r3, [pc, #440] ; (1504c <basic_init+0x5cc>)
14e94: 4798 blx r3
lv_style_set_bg_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC);
14e96: 6820 ldr r0, [r4, #0]
14e98: 6a23 ldr r3, [r4, #32]
14e9a: f013 0302 ands.w r3, r3, #2
14e9e: bf14 ite ne
14ea0: 211a movne r1, #26
14ea2: 2108 moveq r1, #8
14ea4: 2b00 cmp r3, #0
14ea6: bf15 itete ne
14ea8: 2435 movne r4, #53 ; 0x35
14eaa: 2412 moveq r4, #18
14eac: 231b movne r3, #27
14eae: 2309 moveq r3, #9
14eb0: f04f 0200 mov.w r2, #0
14eb4: f363 0204 bfi r2, r3, #0, #5
14eb8: f364 124a bfi r2, r4, #5, #6
14ebc: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
14ec0: 2129 movs r1, #41 ; 0x29
14ec2: 300c adds r0, #12
14ec4: 4b62 ldr r3, [pc, #392] ; (15050 <basic_init+0x5d0>)
14ec6: 4798 blx r3
lv_style_set_border_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_BORDER);
14ec8: 4b5d ldr r3, [pc, #372] ; (15040 <basic_init+0x5c0>)
14eca: 6818 ldr r0, [r3, #0]
14ecc: 300c adds r0, #12
14ece: 6a1b ldr r3, [r3, #32]
14ed0: f013 0f02 tst.w r3, #2
14ed4: f040 85de bne.w 15a94 <basic_init+0x1014>
14ed8: 2308 movs r3, #8
14eda: 2110 movs r1, #16
14edc: 461c mov r4, r3
14ede: f04f 0200 mov.w r2, #0
14ee2: f364 0204 bfi r2, r4, #0, #5
14ee6: f361 124a bfi r2, r1, #5, #6
14eea: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar)
14eee: 2139 movs r1, #57 ; 0x39
14ef0: 4b57 ldr r3, [pc, #348] ; (15050 <basic_init+0x5d0>)
14ef2: 4798 blx r3
lv_style_set_text_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT);
14ef4: 4b52 ldr r3, [pc, #328] ; (15040 <basic_init+0x5c0>)
14ef6: 6818 ldr r0, [r3, #0]
14ef8: 6a1b ldr r3, [r3, #32]
14efa: f013 0302 ands.w r3, r3, #2
14efe: bf14 ite ne
14f00: 2106 movne r1, #6
14f02: 2114 moveq r1, #20
14f04: 2b00 cmp r3, #0
14f06: bf15 itete ne
14f08: 2410 movne r4, #16
14f0a: 242a moveq r4, #42 ; 0x2a
14f0c: 2309 movne r3, #9
14f0e: 2315 moveq r3, #21
14f10: f04f 0200 mov.w r2, #0
14f14: f363 0204 bfi r2, r3, #0, #5
14f18: f364 124a bfi r2, r4, #5, #6
14f1c: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
14f20: f248 0189 movw r1, #32905 ; 0x8089
14f24: 300c adds r0, #12
14f26: 4b4a ldr r3, [pc, #296] ; (15050 <basic_init+0x5d0>)
14f28: 4798 blx r3
lv_style_set_value_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT);
14f2a: 4b45 ldr r3, [pc, #276] ; (15040 <basic_init+0x5c0>)
14f2c: 6818 ldr r0, [r3, #0]
14f2e: 6a1b ldr r3, [r3, #32]
14f30: f013 0302 ands.w r3, r3, #2
14f34: bf14 ite ne
14f36: 2106 movne r1, #6
14f38: 2114 moveq r1, #20
14f3a: 2b00 cmp r3, #0
14f3c: bf15 itete ne
14f3e: 2410 movne r4, #16
14f40: 242a moveq r4, #42 ; 0x2a
14f42: 2309 movne r3, #9
14f44: 2315 moveq r3, #21
14f46: f04f 0200 mov.w r2, #0
14f4a: f363 0204 bfi r2, r3, #0, #5
14f4e: f364 124a bfi r2, r4, #5, #6
14f52: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar)
14f56: 2179 movs r1, #121 ; 0x79
14f58: 300c adds r0, #12
14f5a: 4b3d ldr r3, [pc, #244] ; (15050 <basic_init+0x5d0>)
14f5c: 4798 blx r3
lv_style_set_image_recolor(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT);
14f5e: 4b38 ldr r3, [pc, #224] ; (15040 <basic_init+0x5c0>)
14f60: 6818 ldr r0, [r3, #0]
14f62: 6a1b ldr r3, [r3, #32]
14f64: f013 0302 ands.w r3, r3, #2
14f68: bf14 ite ne
14f6a: 2106 movne r1, #6
14f6c: 2114 moveq r1, #20
14f6e: 2b00 cmp r3, #0
14f70: bf15 itete ne
14f72: 2410 movne r4, #16
14f74: 242a moveq r4, #42 ; 0x2a
14f76: 2309 movne r3, #9
14f78: 2315 moveq r3, #21
14f7a: f04f 0200 mov.w r2, #0
14f7e: f363 0204 bfi r2, r3, #0, #5
14f82: f364 124a bfi r2, r4, #5, #6
14f86: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar)
14f8a: f248 01a9 movw r1, #32937 ; 0x80a9
14f8e: 300c adds r0, #12
14f90: 4b2f ldr r3, [pc, #188] ; (15050 <basic_init+0x5d0>)
14f92: 4798 blx r3
lv_style_set_line_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT);
14f94: 4b2a ldr r3, [pc, #168] ; (15040 <basic_init+0x5c0>)
14f96: 6818 ldr r0, [r3, #0]
14f98: 6a1b ldr r3, [r3, #32]
14f9a: f013 0302 ands.w r3, r3, #2
14f9e: bf14 ite ne
14fa0: 2106 movne r1, #6
14fa2: 2114 moveq r1, #20
14fa4: 2b00 cmp r3, #0
14fa6: bf15 itete ne
14fa8: 2410 movne r4, #16
14faa: 242a moveq r4, #42 ; 0x2a
14fac: 2309 movne r3, #9
14fae: 2315 moveq r3, #21
14fb0: f04f 0200 mov.w r2, #0
14fb4: f363 0204 bfi r2, r3, #0, #5
14fb8: f364 124a bfi r2, r4, #5, #6
14fbc: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar)
14fc0: 2199 movs r1, #153 ; 0x99
14fc2: 300c adds r0, #12
14fc4: 4b22 ldr r3, [pc, #136] ; (15050 <basic_init+0x5d0>)
14fc6: 4798 blx r3
style_init_reset(&styles->bg_click);
14fc8: 4c1d ldr r4, [pc, #116] ; (15040 <basic_init+0x5c0>)
14fca: 6820 ldr r0, [r4, #0]
14fcc: 3008 adds r0, #8
14fce: 4b1e ldr r3, [pc, #120] ; (15048 <basic_init+0x5c8>)
14fd0: 4798 blx r3
lv_style_set_bg_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_PR);
14fd2: 6820 ldr r0, [r4, #0]
14fd4: 3008 adds r0, #8
14fd6: 6a23 ldr r3, [r4, #32]
14fd8: f013 0f02 tst.w r3, #2
14fdc: f040 855f bne.w 15a9e <basic_init+0x101e>
14fe0: 2309 movs r3, #9
14fe2: 2113 movs r1, #19
14fe4: 240a movs r4, #10
14fe6: f04f 0200 mov.w r2, #0
14fea: f364 0204 bfi r2, r4, #0, #5
14fee: f361 124a bfi r2, r1, #5, #6
14ff2: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
14ff6: f241 0129 movw r1, #4137 ; 0x1029
14ffa: 4d15 ldr r5, [pc, #84] ; (15050 <basic_init+0x5d0>)
14ffc: 47a8 blx r5
lv_style_set_bg_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_CHK);
14ffe: 4c10 ldr r4, [pc, #64] ; (15040 <basic_init+0x5c0>)
15000: 6820 ldr r0, [r4, #0]
15002: 89a2 ldrh r2, [r4, #12]
15004: f240 1129 movw r1, #297 ; 0x129
15008: 3008 adds r0, #8
1500a: 47a8 blx r5
lv_style_set_bg_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_PR_CHK);
1500c: 6826 ldr r6, [r4, #0]
1500e: 3608 adds r6, #8
15010: 2133 movs r1, #51 ; 0x33
15012: 89a0 ldrh r0, [r4, #12]
15014: 4b0f ldr r3, [pc, #60] ; (15054 <basic_init+0x5d4>)
15016: 4798 blx r3
15018: 4602 mov r2, r0
1501a: f241 1129 movw r1, #4393 ; 0x1129
1501e: 4630 mov r0, r6
15020: 47a8 blx r5
lv_style_set_bg_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_DIS);
15022: 6820 ldr r0, [r4, #0]
15024: 3008 adds r0, #8
15026: 6a23 ldr r3, [r4, #32]
15028: f013 0f02 tst.w r3, #2
1502c: f040 853c bne.w 15aa8 <basic_init+0x1028>
15030: 230b movs r3, #11
15032: 2118 movs r1, #24
15034: 240e movs r4, #14
15036: e00f b.n 15058 <basic_init+0x5d8>
15038: 00010f3d .word 0x00010f3d
1503c: 000068e1 .word 0x000068e1
15040: 20006bd8 .word 0x20006bd8
15044: 00010f59 .word 0x00010f59
15048: 00014a61 .word 0x00014a61
1504c: 000067b9 .word 0x000067b9
15050: 00006a25 .word 0x00006a25
15054: 00011c03 .word 0x00011c03
15058: f04f 0200 mov.w r2, #0
1505c: f364 0204 bfi r2, r4, #0, #5
15060: f361 124a bfi r2, r1, #5, #6
15064: f363 22cf bfi r2, r3, #11, #5
15068: f242 0129 movw r1, #8233 ; 0x2029
1506c: 4ebb ldr r6, [pc, #748] ; (1535c <basic_init+0x8dc>)
1506e: 47b0 blx r6
lv_style_set_border_width(&styles->bg_click, LV_STATE_CHECKED, 0);
15070: 4cbb ldr r4, [pc, #748] ; (15360 <basic_init+0x8e0>)
15072: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar)
15074: 2200 movs r2, #0
15076: f44f 7198 mov.w r1, #304 ; 0x130
1507a: 3008 adds r0, #8
1507c: 4bb9 ldr r3, [pc, #740] ; (15364 <basic_init+0x8e4>)
1507e: 4798 blx r3
lv_style_set_border_color(&styles->bg_click, LV_STATE_FOCUSED | LV_STATE_PRESSED, lv_color_darken(theme.color_primary,
15080: 6825 ldr r5, [r4, #0]
15082: 3508 adds r5, #8
15084: 2133 movs r1, #51 ; 0x33
15086: 89a0 ldrh r0, [r4, #12]
15088: 4bb7 ldr r3, [pc, #732] ; (15368 <basic_init+0x8e8>)
1508a: 4798 blx r3
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar)
1508c: 4602 mov r2, r0
1508e: f241 2139 movw r1, #4665 ; 0x1239
15092: 4628 mov r0, r5
15094: 47b0 blx r6
lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_BORDER_PR);
15096: 6820 ldr r0, [r4, #0]
15098: 3008 adds r0, #8
1509a: 6a23 ldr r3, [r4, #32]
1509c: f013 0f02 tst.w r3, #2
150a0: f040 8507 bne.w 15ab2 <basic_init+0x1032>
150a4: 230b movs r3, #11
150a6: 2119 movs r1, #25
150a8: 240d movs r4, #13
150aa: f04f 0200 mov.w r2, #0
150ae: f364 0204 bfi r2, r4, #0, #5
150b2: f361 124a bfi r2, r1, #5, #6
150b6: f363 22cf bfi r2, r3, #11, #5
150ba: f241 0139 movw r1, #4153 ; 0x1039
150be: 4ba7 ldr r3, [pc, #668] ; (1535c <basic_init+0x8dc>)
150c0: 4798 blx r3
lv_style_set_border_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_BORDER_CHK);
150c2: 4ba7 ldr r3, [pc, #668] ; (15360 <basic_init+0x8e0>)
150c4: 6818 ldr r0, [r3, #0]
150c6: 6a1b ldr r3, [r3, #32]
150c8: f013 0302 ands.w r3, r3, #2
150cc: bf14 ite ne
150ce: 2107 movne r1, #7
150d0: 210b moveq r1, #11
150d2: 2b00 cmp r3, #0
150d4: bf15 itete ne
150d6: 240f movne r4, #15
150d8: 2419 moveq r4, #25
150da: 2308 movne r3, #8
150dc: 230d moveq r3, #13
150de: f04f 0200 mov.w r2, #0
150e2: f363 0204 bfi r2, r3, #0, #5
150e6: f364 124a bfi r2, r4, #5, #6
150ea: f361 22cf bfi r2, r1, #11, #5
150ee: f240 1139 movw r1, #313 ; 0x139
150f2: 3008 adds r0, #8
150f4: 4b99 ldr r3, [pc, #612] ; (1535c <basic_init+0x8dc>)
150f6: 4798 blx r3
lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_BORDER_CHK_PR);
150f8: 4b99 ldr r3, [pc, #612] ; (15360 <basic_init+0x8e0>)
150fa: 6818 ldr r0, [r3, #0]
150fc: 6a1b ldr r3, [r3, #32]
150fe: f013 0302 ands.w r3, r3, #2
15102: bf14 ite ne
15104: 2107 movne r1, #7
15106: 210b moveq r1, #11
15108: 2b00 cmp r3, #0
1510a: bf15 itete ne
1510c: 240f movne r4, #15
1510e: 2419 moveq r4, #25
15110: 2308 movne r3, #8
15112: 230d moveq r3, #13
15114: f04f 0200 mov.w r2, #0
15118: f363 0204 bfi r2, r3, #0, #5
1511c: f364 124a bfi r2, r4, #5, #6
15120: f361 22cf bfi r2, r1, #11, #5
15124: f241 1139 movw r1, #4409 ; 0x1139
15128: 3008 adds r0, #8
1512a: 4b8c ldr r3, [pc, #560] ; (1535c <basic_init+0x8dc>)
1512c: 4798 blx r3
lv_style_set_border_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_BORDER_DIS);
1512e: 4b8c ldr r3, [pc, #560] ; (15360 <basic_init+0x8e0>)
15130: 6818 ldr r0, [r3, #0]
15132: 6a1b ldr r3, [r3, #32]
15134: f013 0302 ands.w r3, r3, #2
15138: bf14 ite ne
1513a: 211a movne r1, #26
1513c: 210b moveq r1, #11
1513e: 2b00 cmp r3, #0
15140: bf15 itete ne
15142: 2437 movne r4, #55 ; 0x37
15144: 2419 moveq r4, #25
15146: 231c movne r3, #28
15148: 230d moveq r3, #13
1514a: f04f 0200 mov.w r2, #0
1514e: f363 0204 bfi r2, r3, #0, #5
15152: f364 124a bfi r2, r4, #5, #6
15156: f361 22cf bfi r2, r1, #11, #5
1515a: f242 0139 movw r1, #8249 ; 0x2039
1515e: 3008 adds r0, #8
15160: 4b7e ldr r3, [pc, #504] ; (1535c <basic_init+0x8dc>)
15162: 4798 blx r3
lv_style_set_text_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_TEXT_PR);
15164: 4b7e ldr r3, [pc, #504] ; (15360 <basic_init+0x8e0>)
15166: 6818 ldr r0, [r3, #0]
15168: 3008 adds r0, #8
1516a: 6a1b ldr r3, [r3, #32]
1516c: f013 0f02 tst.w r3, #2
15170: f040 84a4 bne.w 15abc <basic_init+0x103c>
15174: 231f movs r3, #31
15176: 213f movs r1, #63 ; 0x3f
15178: 461c mov r4, r3
1517a: f04f 0200 mov.w r2, #0
1517e: f364 0204 bfi r2, r4, #0, #5
15182: f361 124a bfi r2, r1, #5, #6
15186: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
1518a: f249 0189 movw r1, #37001 ; 0x9089
1518e: 4d73 ldr r5, [pc, #460] ; (1535c <basic_init+0x8dc>)
15190: 47a8 blx r5
lv_style_set_text_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK);
15192: 4c73 ldr r4, [pc, #460] ; (15360 <basic_init+0x8e0>)
15194: 6820 ldr r0, [r4, #0]
15196: f04f 32ff mov.w r2, #4294967295
1519a: f248 1189 movw r1, #33161 ; 0x8189
1519e: 3008 adds r0, #8
151a0: 47a8 blx r5
lv_style_set_text_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_TEXT_CHK_PR);
151a2: 6820 ldr r0, [r4, #0]
151a4: f04f 32ff mov.w r2, #4294967295
151a8: f249 1189 movw r1, #37257 ; 0x9189
151ac: 3008 adds r0, #8
151ae: 47a8 blx r5
lv_style_set_text_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS);
151b0: 6820 ldr r0, [r4, #0]
151b2: 6a23 ldr r3, [r4, #32]
151b4: f013 0302 ands.w r3, r3, #2
151b8: bf14 ite ne
151ba: 212a movne r1, #42 ; 0x2a
151bc: 2126 moveq r1, #38 ; 0x26
151be: 2b00 cmp r3, #0
151c0: bf14 ite ne
151c2: 2315 movne r3, #21
151c4: 2313 moveq r3, #19
151c6: f04f 0200 mov.w r2, #0
151ca: f363 0204 bfi r2, r3, #0, #5
151ce: f361 124a bfi r2, r1, #5, #6
151d2: f363 22cf bfi r2, r3, #11, #5
151d6: f24a 0189 movw r1, #41097 ; 0xa089
151da: 3008 adds r0, #8
151dc: 47a8 blx r5
lv_style_set_image_recolor(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_TEXT_PR);
151de: 6820 ldr r0, [r4, #0]
151e0: 3008 adds r0, #8
151e2: 6a23 ldr r3, [r4, #32]
151e4: f013 0f02 tst.w r3, #2
151e8: f040 846d bne.w 15ac6 <basic_init+0x1046>
151ec: 231f movs r3, #31
151ee: 213f movs r1, #63 ; 0x3f
151f0: 461c mov r4, r3
151f2: f04f 0200 mov.w r2, #0
151f6: f364 0204 bfi r2, r4, #0, #5
151fa: f361 124a bfi r2, r1, #5, #6
151fe: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar)
15202: f249 01a9 movw r1, #37033 ; 0x90a9
15206: 4d55 ldr r5, [pc, #340] ; (1535c <basic_init+0x8dc>)
15208: 47a8 blx r5
lv_style_set_image_recolor(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK);
1520a: 4c55 ldr r4, [pc, #340] ; (15360 <basic_init+0x8e0>)
1520c: 6820 ldr r0, [r4, #0]
1520e: f04f 32ff mov.w r2, #4294967295
15212: f248 11a9 movw r1, #33193 ; 0x81a9
15216: 3008 adds r0, #8
15218: 47a8 blx r5
lv_style_set_image_recolor(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_TEXT_CHK_PR);
1521a: 6820 ldr r0, [r4, #0]
1521c: f04f 32ff mov.w r2, #4294967295
15220: f249 11a9 movw r1, #37289 ; 0x91a9
15224: 3008 adds r0, #8
15226: 47a8 blx r5
lv_style_set_image_recolor(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS);
15228: 6820 ldr r0, [r4, #0]
1522a: 6a23 ldr r3, [r4, #32]
1522c: f013 0302 ands.w r3, r3, #2
15230: bf14 ite ne
15232: 212a movne r1, #42 ; 0x2a
15234: 2126 moveq r1, #38 ; 0x26
15236: 2b00 cmp r3, #0
15238: bf14 ite ne
1523a: 2315 movne r3, #21
1523c: 2313 moveq r3, #19
1523e: f04f 0200 mov.w r2, #0
15242: f363 0204 bfi r2, r3, #0, #5
15246: f361 124a bfi r2, r1, #5, #6
1524a: f363 22cf bfi r2, r3, #11, #5
1524e: f24a 01a9 movw r1, #41129 ; 0xa0a9
15252: 3008 adds r0, #8
15254: 47a8 blx r5
lv_style_set_transition_prop_5(&styles->bg_click, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR);
15256: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar)
15258: 2229 movs r2, #41 ; 0x29
1525a: 21b6 movs r1, #182 ; 0xb6
1525c: 3008 adds r0, #8
1525e: 4d41 ldr r5, [pc, #260] ; (15364 <basic_init+0x8e4>)
15260: 47a8 blx r5
style_init_reset(&styles->btn);
15262: 6820 ldr r0, [r4, #0]
15264: 3010 adds r0, #16
15266: 4b41 ldr r3, [pc, #260] ; (1536c <basic_init+0x8ec>)
15268: 4798 blx r3
lv_style_set_radius(&styles->btn, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
1526a: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
1526c: f647 72ff movw r2, #32767 ; 0x7fff
15270: 2101 movs r1, #1
15272: 3010 adds r0, #16
15274: 47a8 blx r5
lv_style_set_bg_opa(&styles->btn, LV_STATE_DEFAULT, LV_OPA_COVER);
15276: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
15278: 22ff movs r2, #255 ; 0xff
1527a: 212c movs r1, #44 ; 0x2c
1527c: 3010 adds r0, #16
1527e: 4b3c ldr r3, [pc, #240] ; (15370 <basic_init+0x8f0>)
15280: 4798 blx r3
lv_style_set_bg_color(&styles->btn, LV_STATE_DEFAULT, COLOR_BTN);
15282: 6820 ldr r0, [r4, #0]
15284: 3010 adds r0, #16
15286: 6a23 ldr r3, [r4, #32]
15288: f013 0f02 tst.w r3, #2
1528c: f040 8420 bne.w 15ad0 <basic_init+0x1050>
15290: 230b movs r3, #11
15292: 2118 movs r1, #24
15294: 240e movs r4, #14
15296: f04f 0200 mov.w r2, #0
1529a: f364 0204 bfi r2, r4, #0, #5
1529e: f361 124a bfi r2, r1, #5, #6
152a2: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
152a6: 2129 movs r1, #41 ; 0x29
152a8: 4b2c ldr r3, [pc, #176] ; (1535c <basic_init+0x8dc>)
152aa: 4798 blx r3
lv_style_set_bg_color(&styles->btn, LV_STATE_PRESSED, COLOR_BTN_PR);
152ac: 4b2c ldr r3, [pc, #176] ; (15360 <basic_init+0x8e0>)
152ae: 6818 ldr r0, [r3, #0]
152b0: 3010 adds r0, #16
152b2: 6a1b ldr r3, [r3, #32]
152b4: f013 0f02 tst.w r3, #2
152b8: f000 840f beq.w 15ada <basic_init+0x105a>
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)));
152bc: 4928 ldr r1, [pc, #160] ; (15360 <basic_init+0x8e0>)
152be: 7b4b ldrb r3, [r1, #13]
152c0: 08db lsrs r3, r3, #3
152c2: eb03 0383 add.w r3, r3, r3, lsl #2
152c6: eb03 0383 add.w r3, r3, r3, lsl #2
152ca: f641 35da movw r5, #7130 ; 0x1bda
152ce: 442b add r3, r5
152d0: eb03 2203 add.w r2, r3, r3, lsl #8
152d4: eb03 13c2 add.w r3, r3, r2, lsl #7
152d8: f3c3 53c4 ubfx r3, r3, #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)));
152dc: 898a ldrh r2, [r1, #12]
152de: f3c2 1245 ubfx r2, r2, #5, #6
152e2: eb02 0282 add.w r2, r2, r2, lsl #2
152e6: eb02 0282 add.w r2, r2, r2, lsl #2
152ea: f502 5262 add.w r2, r2, #14464 ; 0x3880
152ee: 321a adds r2, #26
152f0: eb02 2402 add.w r4, r2, r2, lsl #8
152f4: eb02 12c4 add.w r2, r2, r4, lsl #7
152f8: f3c2 54c5 ubfx r4, r2, #23, #6
LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix)));
152fc: 7b09 ldrb r1, [r1, #12]
152fe: f001 011f and.w r1, r1, #31
15302: eb01 0181 add.w r1, r1, r1, lsl #2
15306: eb01 0181 add.w r1, r1, r1, lsl #2
1530a: 4429 add r1, r5
1530c: eb01 2201 add.w r2, r1, r1, lsl #8
15310: eb01 11c2 add.w r1, r1, r2, lsl #7
15314: f3c1 51c4 ubfx r1, r1, #23, #5
15318: f04f 0200 mov.w r2, #0
1531c: f361 0204 bfi r2, r1, #0, #5
15320: f364 124a bfi r2, r4, #5, #6
15324: f363 22cf bfi r2, r3, #11, #5
15328: f241 0129 movw r1, #4137 ; 0x1029
1532c: 4d0b ldr r5, [pc, #44] ; (1535c <basic_init+0x8dc>)
1532e: 47a8 blx r5
lv_style_set_bg_color(&styles->btn, LV_STATE_CHECKED, COLOR_BTN_CHK);
15330: 4c0b ldr r4, [pc, #44] ; (15360 <basic_init+0x8e0>)
15332: 6820 ldr r0, [r4, #0]
15334: 89a2 ldrh r2, [r4, #12]
15336: f240 1129 movw r1, #297 ; 0x129
1533a: 3010 adds r0, #16
1533c: 47a8 blx r5
lv_style_set_bg_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, COLOR_BTN_CHK_PR);
1533e: 6826 ldr r6, [r4, #0]
15340: 3610 adds r6, #16
15342: 214c movs r1, #76 ; 0x4c
15344: 89a0 ldrh r0, [r4, #12]
15346: 4b08 ldr r3, [pc, #32] ; (15368 <basic_init+0x8e8>)
15348: 4798 blx r3
1534a: 4602 mov r2, r0
1534c: f241 1129 movw r1, #4393 ; 0x1129
15350: 4630 mov r0, r6
15352: 47a8 blx r5
lv_style_set_bg_color(&styles->btn, LV_STATE_DISABLED, COLOR_BTN);
15354: 6820 ldr r0, [r4, #0]
15356: 3010 adds r0, #16
15358: 6a23 ldr r3, [r4, #32]
1535a: e00b b.n 15374 <basic_init+0x8f4>
1535c: 00006a25 .word 0x00006a25
15360: 20006bd8 .word 0x20006bd8
15364: 000068e1 .word 0x000068e1
15368: 00011c03 .word 0x00011c03
1536c: 00014a61 .word 0x00014a61
15370: 00006b69 .word 0x00006b69
15374: f013 0f02 tst.w r3, #2
15378: f040 83d9 bne.w 15b2e <basic_init+0x10ae>
1537c: 230b movs r3, #11
1537e: 2118 movs r1, #24
15380: 240e movs r4, #14
15382: f04f 0200 mov.w r2, #0
15386: f364 0204 bfi r2, r4, #0, #5
1538a: f361 124a bfi r2, r1, #5, #6
1538e: f363 22cf bfi r2, r3, #11, #5
15392: f242 0129 movw r1, #8233 ; 0x2029
15396: 4bc6 ldr r3, [pc, #792] ; (156b0 <basic_init+0xc30>)
15398: 4798 blx r3
lv_style_set_bg_color(&styles->btn, LV_STATE_DISABLED | LV_STATE_CHECKED, COLOR_BTN_DIS);
1539a: 4bc6 ldr r3, [pc, #792] ; (156b4 <basic_init+0xc34>)
1539c: 6818 ldr r0, [r3, #0]
1539e: 6a1b ldr r3, [r3, #32]
153a0: f013 0302 ands.w r3, r3, #2
153a4: bf14 ite ne
153a6: 2133 movne r1, #51 ; 0x33
153a8: 2122 moveq r1, #34 ; 0x22
153aa: 2b00 cmp r3, #0
153ac: bf14 ite ne
153ae: 2319 movne r3, #25
153b0: 2311 moveq r3, #17
153b2: f04f 0200 mov.w r2, #0
153b6: f363 0204 bfi r2, r3, #0, #5
153ba: f361 124a bfi r2, r1, #5, #6
153be: f363 22cf bfi r2, r3, #11, #5
153c2: f242 1129 movw r1, #8489 ; 0x2129
153c6: 3010 adds r0, #16
153c8: 4db9 ldr r5, [pc, #740] ; (156b0 <basic_init+0xc30>)
153ca: 47a8 blx r5
lv_style_set_border_color(&styles->btn, LV_STATE_DEFAULT, COLOR_BTN_BORDER);
153cc: 4cb9 ldr r4, [pc, #740] ; (156b4 <basic_init+0xc34>)
153ce: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar)
153d0: 89a2 ldrh r2, [r4, #12]
153d2: 2139 movs r1, #57 ; 0x39
153d4: 3010 adds r0, #16
153d6: 47a8 blx r5
lv_style_set_border_color(&styles->btn, LV_STATE_PRESSED, COLOR_BTN_BORDER_PR);
153d8: 6820 ldr r0, [r4, #0]
153da: 89a2 ldrh r2, [r4, #12]
153dc: f241 0139 movw r1, #4153 ; 0x1039
153e0: 3010 adds r0, #16
153e2: 47a8 blx r5
lv_style_set_border_color(&styles->btn, LV_STATE_DISABLED, COLOR_BTN_BORDER_INA);
153e4: 6820 ldr r0, [r4, #0]
153e6: 6a23 ldr r3, [r4, #32]
153e8: f013 0302 ands.w r3, r3, #2
153ec: bf14 ite ne
153ee: 2122 movne r1, #34 ; 0x22
153f0: 2110 moveq r1, #16
153f2: 2b00 cmp r3, #0
153f4: bf14 ite ne
153f6: 2311 movne r3, #17
153f8: 2308 moveq r3, #8
153fa: f04f 0200 mov.w r2, #0
153fe: f363 0204 bfi r2, r3, #0, #5
15402: f361 124a bfi r2, r1, #5, #6
15406: f363 22cf bfi r2, r3, #11, #5
1540a: f242 0139 movw r1, #8249 ; 0x2039
1540e: 3010 adds r0, #16
15410: 47a8 blx r5
lv_style_set_border_width(&styles->btn, LV_STATE_DEFAULT, BORDER_WIDTH);
15412: 6824 ldr r4, [r4, #0]
15414: 3410 adds r4, #16
15416: 2000 movs r0, #0
15418: 4ba7 ldr r3, [pc, #668] ; (156b8 <basic_init+0xc38>)
1541a: 4798 blx r3
1541c: 3028 adds r0, #40 ; 0x28
1541e: 0040 lsls r0, r0, #1
15420: f5b0 7fa0 cmp.w r0, #320 ; 0x140
15424: f280 8387 bge.w 15b36 <basic_init+0x10b6>
15428: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar)
1542a: 2130 movs r1, #48 ; 0x30
1542c: 4620 mov r0, r4
1542e: 4ba3 ldr r3, [pc, #652] ; (156bc <basic_init+0xc3c>)
15430: 4798 blx r3
lv_style_set_border_opa(&styles->btn, LV_STATE_CHECKED, LV_OPA_TRANSP);
15432: 4ca0 ldr r4, [pc, #640] ; (156b4 <basic_init+0xc34>)
15434: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar)
15436: 2200 movs r2, #0
15438: f44f 719e mov.w r1, #316 ; 0x13c
1543c: 3010 adds r0, #16
1543e: 4ba0 ldr r3, [pc, #640] ; (156c0 <basic_init+0xc40>)
15440: 4798 blx r3
lv_style_set_text_color(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff));
15442: 6820 ldr r0, [r4, #0]
15444: 3010 adds r0, #16
15446: 6a23 ldr r3, [r4, #32]
15448: f013 0f02 tst.w r3, #2
1544c: f040 8380 bne.w 15b50 <basic_init+0x10d0>
15450: 231f movs r3, #31
15452: 213f movs r1, #63 ; 0x3f
15454: 461c mov r4, r3
15456: f04f 0200 mov.w r2, #0
1545a: f364 0204 bfi r2, r4, #0, #5
1545e: f361 124a bfi r2, r1, #5, #6
15462: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
15466: f248 0189 movw r1, #32905 ; 0x8089
1546a: 4b91 ldr r3, [pc, #580] ; (156b0 <basic_init+0xc30>)
1546c: 4798 blx r3
lv_style_set_text_color(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff));
1546e: 4b91 ldr r3, [pc, #580] ; (156b4 <basic_init+0xc34>)
15470: 6818 ldr r0, [r3, #0]
15472: 3010 adds r0, #16
15474: 6a1b ldr r3, [r3, #32]
15476: f013 0f02 tst.w r3, #2
1547a: f040 836d bne.w 15b58 <basic_init+0x10d8>
1547e: 231f movs r3, #31
15480: 213f movs r1, #63 ; 0x3f
15482: 461c mov r4, r3
15484: f04f 0200 mov.w r2, #0
15488: f364 0204 bfi r2, r4, #0, #5
1548c: f361 124a bfi r2, r1, #5, #6
15490: f363 22cf bfi r2, r3, #11, #5
15494: f249 0189 movw r1, #37001 ; 0x9089
15498: 4d85 ldr r5, [pc, #532] ; (156b0 <basic_init+0xc30>)
1549a: 47a8 blx r5
lv_style_set_text_color(&styles->btn, LV_STATE_CHECKED, lv_color_hex(0xffffff));
1549c: 4c85 ldr r4, [pc, #532] ; (156b4 <basic_init+0xc34>)
1549e: 6820 ldr r0, [r4, #0]
154a0: f04f 32ff mov.w r2, #4294967295
154a4: f248 1189 movw r1, #33161 ; 0x8189
154a8: 3010 adds r0, #16
154aa: 47a8 blx r5
lv_style_set_text_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff));
154ac: 6820 ldr r0, [r4, #0]
154ae: f04f 32ff mov.w r2, #4294967295
154b2: f249 1189 movw r1, #37257 ; 0x9189
154b6: 3010 adds r0, #16
154b8: 47a8 blx r5
lv_style_set_text_color(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888));
154ba: 6820 ldr r0, [r4, #0]
154bc: 2311 movs r3, #17
154be: f04f 0200 mov.w r2, #0
154c2: f363 0204 bfi r2, r3, #0, #5
154c6: 2122 movs r1, #34 ; 0x22
154c8: f361 124a bfi r2, r1, #5, #6
154cc: f363 22cf bfi r2, r3, #11, #5
154d0: f24a 0189 movw r1, #41097 ; 0xa089
154d4: 3010 adds r0, #16
154d6: 47a8 blx r5
lv_style_set_image_recolor(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff));
154d8: 6820 ldr r0, [r4, #0]
154da: 3010 adds r0, #16
154dc: 6a23 ldr r3, [r4, #32]
154de: f013 0f02 tst.w r3, #2
154e2: f040 833d bne.w 15b60 <basic_init+0x10e0>
154e6: 231f movs r3, #31
154e8: 213f movs r1, #63 ; 0x3f
154ea: 461c mov r4, r3
154ec: f04f 0200 mov.w r2, #0
154f0: f364 0204 bfi r2, r4, #0, #5
154f4: f361 124a bfi r2, r1, #5, #6
154f8: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar)
154fc: f248 01a9 movw r1, #32937 ; 0x80a9
15500: 4b6b ldr r3, [pc, #428] ; (156b0 <basic_init+0xc30>)
15502: 4798 blx r3
lv_style_set_image_recolor(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff));
15504: 4b6b ldr r3, [pc, #428] ; (156b4 <basic_init+0xc34>)
15506: 6818 ldr r0, [r3, #0]
15508: 3010 adds r0, #16
1550a: 6a1b ldr r3, [r3, #32]
1550c: f013 0f02 tst.w r3, #2
15510: f040 832a bne.w 15b68 <basic_init+0x10e8>
15514: 231f movs r3, #31
15516: 213f movs r1, #63 ; 0x3f
15518: 461c mov r4, r3
1551a: f04f 0200 mov.w r2, #0
1551e: f364 0204 bfi r2, r4, #0, #5
15522: f361 124a bfi r2, r1, #5, #6
15526: f363 22cf bfi r2, r3, #11, #5
1552a: f249 01a9 movw r1, #37033 ; 0x90a9
1552e: 4d60 ldr r5, [pc, #384] ; (156b0 <basic_init+0xc30>)
15530: 47a8 blx r5
lv_style_set_image_recolor(&styles->btn, LV_STATE_PRESSED, lv_color_hex(0xffffff));
15532: 4c60 ldr r4, [pc, #384] ; (156b4 <basic_init+0xc34>)
15534: 6820 ldr r0, [r4, #0]
15536: f04f 32ff mov.w r2, #4294967295
1553a: f249 01a9 movw r1, #37033 ; 0x90a9
1553e: 3010 adds r0, #16
15540: 47a8 blx r5
lv_style_set_image_recolor(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff));
15542: 6820 ldr r0, [r4, #0]
15544: f04f 32ff mov.w r2, #4294967295
15548: f249 11a9 movw r1, #37289 ; 0x91a9
1554c: 3010 adds r0, #16
1554e: 47a8 blx r5
lv_style_set_image_recolor(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888));
15550: 6820 ldr r0, [r4, #0]
15552: 2311 movs r3, #17
15554: f04f 0200 mov.w r2, #0
15558: f363 0204 bfi r2, r3, #0, #5
1555c: 2122 movs r1, #34 ; 0x22
1555e: f361 124a bfi r2, r1, #5, #6
15562: f363 22cf bfi r2, r3, #11, #5
15566: f24a 01a9 movw r1, #41129 ; 0xa0a9
1556a: 3010 adds r0, #16
1556c: 47a8 blx r5
lv_style_set_value_color(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff));
1556e: 6820 ldr r0, [r4, #0]
15570: 3010 adds r0, #16
15572: 6a23 ldr r3, [r4, #32]
15574: f013 0f02 tst.w r3, #2
15578: f040 82fa bne.w 15b70 <basic_init+0x10f0>
1557c: 231f movs r3, #31
1557e: 213f movs r1, #63 ; 0x3f
15580: 461c mov r4, r3
15582: f04f 0200 mov.w r2, #0
15586: f364 0204 bfi r2, r4, #0, #5
1558a: f361 124a bfi r2, r1, #5, #6
1558e: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar)
15592: 2179 movs r1, #121 ; 0x79
15594: 4b46 ldr r3, [pc, #280] ; (156b0 <basic_init+0xc30>)
15596: 4798 blx r3
lv_style_set_value_color(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff));
15598: 4b46 ldr r3, [pc, #280] ; (156b4 <basic_init+0xc34>)
1559a: 6818 ldr r0, [r3, #0]
1559c: 3010 adds r0, #16
1559e: 6a1b ldr r3, [r3, #32]
155a0: f013 0f02 tst.w r3, #2
155a4: f040 82e8 bne.w 15b78 <basic_init+0x10f8>
155a8: 231f movs r3, #31
155aa: 213f movs r1, #63 ; 0x3f
155ac: 461c mov r4, r3
155ae: f04f 0200 mov.w r2, #0
155b2: f364 0204 bfi r2, r4, #0, #5
155b6: f361 124a bfi r2, r1, #5, #6
155ba: f363 22cf bfi r2, r3, #11, #5
155be: f241 0179 movw r1, #4217 ; 0x1079
155c2: 4d3b ldr r5, [pc, #236] ; (156b0 <basic_init+0xc30>)
155c4: 47a8 blx r5
lv_style_set_value_color(&styles->btn, LV_STATE_CHECKED, lv_color_hex(0xffffff));
155c6: 4c3b ldr r4, [pc, #236] ; (156b4 <basic_init+0xc34>)
155c8: 6820 ldr r0, [r4, #0]
155ca: f04f 32ff mov.w r2, #4294967295
155ce: f240 1179 movw r1, #377 ; 0x179
155d2: 3010 adds r0, #16
155d4: 47a8 blx r5
lv_style_set_value_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff));
155d6: 6820 ldr r0, [r4, #0]
155d8: f04f 32ff mov.w r2, #4294967295
155dc: f241 1179 movw r1, #4473 ; 0x1179
155e0: 3010 adds r0, #16
155e2: 47a8 blx r5
lv_style_set_value_color(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888));
155e4: 6820 ldr r0, [r4, #0]
155e6: 2311 movs r3, #17
155e8: f04f 0200 mov.w r2, #0
155ec: f363 0204 bfi r2, r3, #0, #5
155f0: 2122 movs r1, #34 ; 0x22
155f2: f361 124a bfi r2, r1, #5, #6
155f6: f363 22cf bfi r2, r3, #11, #5
155fa: f242 0179 movw r1, #8313 ; 0x2079
155fe: 3010 adds r0, #16
15600: 47a8 blx r5
lv_style_set_pad_left(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40));
15602: 6824 ldr r4, [r4, #0]
15604: 3410 adds r4, #16
15606: 2000 movs r0, #0
15608: 4b2b ldr r3, [pc, #172] ; (156b8 <basic_init+0xc38>)
1560a: 4798 blx r3
1560c: eb00 0080 add.w r0, r0, r0, lsl #2
15610: 00c0 lsls r0, r0, #3
15612: 3050 adds r0, #80 ; 0x50
15614: f5b0 7fa0 cmp.w r0, #320 ; 0x140
15618: f280 82b2 bge.w 15b80 <basic_init+0x1100>
1561c: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
1561e: 2112 movs r1, #18
15620: 4620 mov r0, r4
15622: 4b26 ldr r3, [pc, #152] ; (156bc <basic_init+0xc3c>)
15624: 4798 blx r3
lv_style_set_pad_right(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40));
15626: 4b23 ldr r3, [pc, #140] ; (156b4 <basic_init+0xc34>)
15628: 681c ldr r4, [r3, #0]
1562a: 3410 adds r4, #16
1562c: 2000 movs r0, #0
1562e: 4b22 ldr r3, [pc, #136] ; (156b8 <basic_init+0xc38>)
15630: 4798 blx r3
15632: eb00 0080 add.w r0, r0, r0, lsl #2
15636: 00c0 lsls r0, r0, #3
15638: 3050 adds r0, #80 ; 0x50
1563a: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1563e: f280 82ae bge.w 15b9e <basic_init+0x111e>
15642: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
15644: 2113 movs r1, #19
15646: 4620 mov r0, r4
15648: 4b1c ldr r3, [pc, #112] ; (156bc <basic_init+0xc3c>)
1564a: 4798 blx r3
lv_style_set_pad_top(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15));
1564c: 4b19 ldr r3, [pc, #100] ; (156b4 <basic_init+0xc34>)
1564e: 681c ldr r4, [r3, #0]
15650: 3410 adds r4, #16
15652: 2000 movs r0, #0
15654: 4b18 ldr r3, [pc, #96] ; (156b8 <basic_init+0xc38>)
15656: 4798 blx r3
15658: ebc0 1000 rsb r0, r0, r0, lsl #4
1565c: 3050 adds r0, #80 ; 0x50
1565e: f5b0 7fa0 cmp.w r0, #320 ; 0x140
15662: f280 82ab bge.w 15bbc <basic_init+0x113c>
15666: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
15668: 2110 movs r1, #16
1566a: 4620 mov r0, r4
1566c: 4b13 ldr r3, [pc, #76] ; (156bc <basic_init+0xc3c>)
1566e: 4798 blx r3
lv_style_set_pad_bottom(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15));
15670: 4b10 ldr r3, [pc, #64] ; (156b4 <basic_init+0xc34>)
15672: 681c ldr r4, [r3, #0]
15674: 3410 adds r4, #16
15676: 2000 movs r0, #0
15678: 4b0f ldr r3, [pc, #60] ; (156b8 <basic_init+0xc38>)
1567a: 4798 blx r3
1567c: ebc0 1000 rsb r0, r0, r0, lsl #4
15680: 3050 adds r0, #80 ; 0x50
15682: f5b0 7fa0 cmp.w r0, #320 ; 0x140
15686: f280 82a7 bge.w 15bd8 <basic_init+0x1158>
1568a: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
1568c: 2111 movs r1, #17
1568e: 4620 mov r0, r4
15690: 4b0a ldr r3, [pc, #40] ; (156bc <basic_init+0xc3c>)
15692: 4798 blx r3
lv_style_set_pad_inner(&styles->btn, LV_STATE_DEFAULT, LV_DPX(20));
15694: 4b07 ldr r3, [pc, #28] ; (156b4 <basic_init+0xc34>)
15696: 681c ldr r4, [r3, #0]
15698: 3410 adds r4, #16
1569a: 2000 movs r0, #0
1569c: 4b06 ldr r3, [pc, #24] ; (156b8 <basic_init+0xc38>)
1569e: 4798 blx r3
156a0: eb00 0080 add.w r0, r0, r0, lsl #2
156a4: 0080 lsls r0, r0, #2
156a6: 3050 adds r0, #80 ; 0x50
156a8: f5b0 7fa0 cmp.w r0, #320 ; 0x140
156ac: e00a b.n 156c4 <basic_init+0xc44>
156ae: bf00 nop
156b0: 00006a25 .word 0x00006a25
156b4: 20006bd8 .word 0x20006bd8
156b8: 00010f3d .word 0x00010f3d
156bc: 000068e1 .word 0x000068e1
156c0: 00006b69 .word 0x00006b69
156c4: f280 8296 bge.w 15bf4 <basic_init+0x1174>
156c8: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar)
156ca: 2114 movs r1, #20
156cc: 4620 mov r0, r4
156ce: 4dbd ldr r5, [pc, #756] ; (159c4 <basic_init+0xf44>)
156d0: 47a8 blx r5
lv_style_set_outline_width(&styles->btn, LV_STATE_DEFAULT, 3);
156d2: 4cbd ldr r4, [pc, #756] ; (159c8 <basic_init+0xf48>)
156d4: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar)
156d6: 2203 movs r2, #3
156d8: 2140 movs r1, #64 ; 0x40
156da: 3010 adds r0, #16
156dc: 47a8 blx r5
lv_style_set_outline_opa(&styles->btn, LV_STATE_DEFAULT, LV_OPA_0);
156de: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar)
156e0: 2200 movs r2, #0
156e2: 214c movs r1, #76 ; 0x4c
156e4: 3010 adds r0, #16
156e6: 4eb9 ldr r6, [pc, #740] ; (159cc <basic_init+0xf4c>)
156e8: 47b0 blx r6
lv_style_set_outline_opa(&styles->btn, LV_STATE_FOCUSED, LV_OPA_50);
156ea: 6820 ldr r0, [r4, #0]
156ec: 227f movs r2, #127 ; 0x7f
156ee: f44f 7113 mov.w r1, #588 ; 0x24c
156f2: 3010 adds r0, #16
156f4: 47b0 blx r6
lv_style_set_outline_color(&styles->btn, LV_STATE_DEFAULT, theme.color_primary);
156f6: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar)
156f8: 89a2 ldrh r2, [r4, #12]
156fa: 2149 movs r1, #73 ; 0x49
156fc: 3010 adds r0, #16
156fe: 4eb4 ldr r6, [pc, #720] ; (159d0 <basic_init+0xf50>)
15700: 47b0 blx r6
lv_style_set_outline_color(&styles->btn, LV_STATE_EDITED, theme.color_secondary);
15702: 6820 ldr r0, [r4, #0]
15704: 89e2 ldrh r2, [r4, #14]
15706: f240 4149 movw r1, #1097 ; 0x449
1570a: 3010 adds r0, #16
1570c: 47b0 blx r6
lv_style_set_transition_time(&styles->btn, LV_STATE_DEFAULT, TRANSITION_TIME);
1570e: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar)
15710: 2296 movs r2, #150 ; 0x96
15712: 21b0 movs r1, #176 ; 0xb0
15714: 3010 adds r0, #16
15716: 47a8 blx r5
lv_style_set_transition_prop_4(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_BORDER_OPA);
15718: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_4, transition_prop_4, lv_style_int_t, _int, scalar)
1571a: 223c movs r2, #60 ; 0x3c
1571c: 21b5 movs r1, #181 ; 0xb5
1571e: 3010 adds r0, #16
15720: 47a8 blx r5
lv_style_set_transition_prop_5(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR);
15722: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar)
15724: 2229 movs r2, #41 ; 0x29
15726: 21b6 movs r1, #182 ; 0xb6
15728: 3010 adds r0, #16
1572a: 47a8 blx r5
lv_style_set_transition_prop_6(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA);
1572c: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar)
1572e: 224c movs r2, #76 ; 0x4c
15730: 21b7 movs r1, #183 ; 0xb7
15732: 3010 adds r0, #16
15734: 47a8 blx r5
lv_style_set_transition_delay(&styles->btn, LV_STATE_DEFAULT, TRANSITION_TIME);
15736: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_DELAY, transition_delay, lv_style_int_t, _int, scalar)
15738: 2296 movs r2, #150 ; 0x96
1573a: 21b1 movs r1, #177 ; 0xb1
1573c: 3010 adds r0, #16
1573e: 47a8 blx r5
lv_style_set_transition_delay(&styles->btn, LV_STATE_PRESSED, 0);
15740: 6820 ldr r0, [r4, #0]
15742: 2200 movs r2, #0
15744: f241 01b1 movw r1, #4273 ; 0x10b1
15748: 3010 adds r0, #16
1574a: 47a8 blx r5
style_init_reset(&styles->pad_inner);
1574c: 6820 ldr r0, [r4, #0]
1574e: 3014 adds r0, #20
15750: 4ba0 ldr r3, [pc, #640] ; (159d4 <basic_init+0xf54>)
15752: 4798 blx r3
lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT,
15754: 6824 ldr r4, [r4, #0]
15756: 3414 adds r4, #20
lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40));
15758: 2000 movs r0, #0
1575a: 4b9f ldr r3, [pc, #636] ; (159d8 <basic_init+0xf58>)
1575c: 4798 blx r3
lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT,
1575e: 2832 cmp r0, #50 ; 0x32
15760: f200 8266 bhi.w 15c30 <basic_init+0x11b0>
lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40));
15764: 2000 movs r0, #0
15766: 4b9d ldr r3, [pc, #628] ; (159dc <basic_init+0xf5c>)
15768: 4798 blx r3
1576a: eb00 0080 add.w r0, r0, r0, lsl #2
1576e: 0080 lsls r0, r0, #2
15770: 3050 adds r0, #80 ; 0x50
lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT,
15772: f5b0 7fa0 cmp.w r0, #320 ; 0x140
15776: f280 824c bge.w 15c12 <basic_init+0x1192>
1577a: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar)
1577c: 2114 movs r1, #20
1577e: 4620 mov r0, r4
15780: 4b90 ldr r3, [pc, #576] ; (159c4 <basic_init+0xf44>)
15782: 4798 blx r3
style_init_reset(&styles->pad_small);
15784: 4b90 ldr r3, [pc, #576] ; (159c8 <basic_init+0xf48>)
15786: 6818 ldr r0, [r3, #0]
15788: 3018 adds r0, #24
1578a: 4b92 ldr r3, [pc, #584] ; (159d4 <basic_init+0xf54>)
1578c: 4798 blx r3
lv_style_int_t pad_small_value = lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(10) : LV_DPX(20);
1578e: 2000 movs r0, #0
15790: 4b91 ldr r3, [pc, #580] ; (159d8 <basic_init+0xf58>)
15792: 4798 blx r3
15794: 2832 cmp r0, #50 ; 0x32
15796: f200 8275 bhi.w 15c84 <basic_init+0x1204>
1579a: 2000 movs r0, #0
1579c: 4b8f ldr r3, [pc, #572] ; (159dc <basic_init+0xf5c>)
1579e: 4798 blx r3
157a0: eb00 0080 add.w r0, r0, r0, lsl #2
157a4: 0040 lsls r0, r0, #1
157a6: 3050 adds r0, #80 ; 0x50
157a8: f5b0 7fa0 cmp.w r0, #320 ; 0x140
157ac: f280 825b bge.w 15c66 <basic_init+0x11e6>
157b0: 2401 movs r4, #1
lv_style_set_pad_left(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value);
157b2: 4e85 ldr r6, [pc, #532] ; (159c8 <basic_init+0xf48>)
157b4: 6830 ldr r0, [r6, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
157b6: 4622 mov r2, r4
157b8: 2112 movs r1, #18
157ba: 3018 adds r0, #24
157bc: 4d81 ldr r5, [pc, #516] ; (159c4 <basic_init+0xf44>)
157be: 47a8 blx r5
lv_style_set_pad_right(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value);
157c0: 6830 ldr r0, [r6, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
157c2: 4622 mov r2, r4
157c4: 2113 movs r1, #19
157c6: 3018 adds r0, #24
157c8: 47a8 blx r5
lv_style_set_pad_top(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value);
157ca: 6830 ldr r0, [r6, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
157cc: 4622 mov r2, r4
157ce: 2110 movs r1, #16
157d0: 3018 adds r0, #24
157d2: 47a8 blx r5
lv_style_set_pad_bottom(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value);
157d4: 6830 ldr r0, [r6, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
157d6: 4622 mov r2, r4
157d8: 2111 movs r1, #17
157da: 3018 adds r0, #24
157dc: 47a8 blx r5
lv_style_set_pad_inner(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value);
157de: 6830 ldr r0, [r6, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar)
157e0: 4622 mov r2, r4
157e2: 2114 movs r1, #20
157e4: 3018 adds r0, #24
157e6: 47a8 blx r5
157e8: bd70 pop {r4, r5, r6, pc}
lv_style_set_radius(&styles->bg, LV_STATE_DEFAULT, LV_DPX(8));
157ea: 2000 movs r0, #0
157ec: 4b7b ldr r3, [pc, #492] ; (159dc <basic_init+0xf5c>)
157ee: 4798 blx r3
157f0: 300a adds r0, #10
157f2: 00c0 lsls r0, r0, #3
157f4: 4b7a ldr r3, [pc, #488] ; (159e0 <basic_init+0xf60>)
157f6: fb83 2300 smull r2, r3, r3, r0
157fa: 17c2 asrs r2, r0, #31
157fc: ebc2 12a3 rsb r2, r2, r3, asr #6
15800: b212 sxth r2, r2
15802: f7ff b9ad b.w 14b60 <basic_init+0xe0>
15806: 231f movs r3, #31
15808: 213f movs r1, #63 ; 0x3f
1580a: 461c mov r4, r3
1580c: f7ff b9bd b.w 14b8a <basic_init+0x10a>
lv_style_set_border_width(&styles->bg, LV_STATE_DEFAULT, BORDER_WIDTH);
15810: 2000 movs r0, #0
15812: 4b72 ldr r3, [pc, #456] ; (159dc <basic_init+0xf5c>)
15814: 4798 blx r3
15816: 3028 adds r0, #40 ; 0x28
15818: 0040 lsls r0, r0, #1
1581a: 4b71 ldr r3, [pc, #452] ; (159e0 <basic_init+0xf60>)
1581c: fb83 2300 smull r2, r3, r3, r0
15820: 17c2 asrs r2, r0, #31
15822: ebc2 12a3 rsb r2, r2, r3, asr #6
15826: b212 sxth r2, r2
15828: f7ff b9ed b.w 14c06 <basic_init+0x186>
1582c: 2307 movs r3, #7
1582e: 210f movs r1, #15
15830: 2408 movs r4, #8
15832: f7ff ba03 b.w 14c3c <basic_init+0x1bc>
15836: 2307 movs r3, #7
15838: 210f movs r1, #15
1583a: 2408 movs r4, #8
1583c: f7ff ba1b b.w 14c76 <basic_init+0x1f6>
15840: 2307 movs r3, #7
15842: 210f movs r1, #15
15844: 2408 movs r4, #8
15846: f7ff ba2c b.w 14ca2 <basic_init+0x222>
1584a: 2307 movs r3, #7
1584c: 210f movs r1, #15
1584e: 2408 movs r4, #8
15850: f7ff ba3e b.w 14cd0 <basic_init+0x250>
lv_style_set_pad_left(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH);
15854: 2000 movs r0, #0
15856: 4b61 ldr r3, [pc, #388] ; (159dc <basic_init+0xf5c>)
15858: 4798 blx r3
1585a: ebc0 1000 rsb r0, r0, r0, lsl #4
1585e: 3050 adds r0, #80 ; 0x50
15860: f5b0 7fa0 cmp.w r0, #320 ; 0x140
15864: da02 bge.n 1586c <basic_init+0xdec>
15866: 2401 movs r4, #1
15868: f7ff ba58 b.w 14d1c <basic_init+0x29c>
1586c: 2000 movs r0, #0
1586e: 4b5b ldr r3, [pc, #364] ; (159dc <basic_init+0xf5c>)
15870: 4798 blx r3
15872: ebc0 1000 rsb r0, r0, r0, lsl #4
15876: 3050 adds r0, #80 ; 0x50
15878: 4a59 ldr r2, [pc, #356] ; (159e0 <basic_init+0xf60>)
1587a: fb82 3200 smull r3, r2, r2, r0
1587e: 17c4 asrs r4, r0, #31
15880: ebc4 14a2 rsb r4, r4, r2, asr #6
15884: b2a4 uxth r4, r4
15886: f7ff ba49 b.w 14d1c <basic_init+0x29c>
1588a: 2000 movs r0, #0
1588c: 4b53 ldr r3, [pc, #332] ; (159dc <basic_init+0xf5c>)
1588e: 4798 blx r3
15890: ebc0 1000 rsb r0, r0, r0, lsl #4
15894: 0040 lsls r0, r0, #1
15896: 3050 adds r0, #80 ; 0x50
15898: 4a51 ldr r2, [pc, #324] ; (159e0 <basic_init+0xf60>)
1589a: fb82 3200 smull r3, r2, r2, r0
1589e: 17c4 asrs r4, r0, #31
158a0: ebc4 14a2 rsb r4, r4, r2, asr #6
158a4: b2a4 uxth r4, r4
158a6: f7ff ba39 b.w 14d1c <basic_init+0x29c>
158aa: 2000 movs r0, #0
158ac: 4b4b ldr r3, [pc, #300] ; (159dc <basic_init+0xf5c>)
158ae: 4798 blx r3
158b0: 3028 adds r0, #40 ; 0x28
158b2: 0040 lsls r0, r0, #1
158b4: 4b4a ldr r3, [pc, #296] ; (159e0 <basic_init+0xf60>)
158b6: fb83 2300 smull r2, r3, r3, r0
158ba: 17c2 asrs r2, r0, #31
158bc: ebc2 12a3 rsb r2, r2, r3, asr #6
158c0: b292 uxth r2, r2
158c2: f7ff ba35 b.w 14d30 <basic_init+0x2b0>
lv_style_set_pad_right(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH);
158c6: 2000 movs r0, #0
158c8: 4b44 ldr r3, [pc, #272] ; (159dc <basic_init+0xf5c>)
158ca: 4798 blx r3
158cc: ebc0 1000 rsb r0, r0, r0, lsl #4
158d0: 3050 adds r0, #80 ; 0x50
158d2: f5b0 7fa0 cmp.w r0, #320 ; 0x140
158d6: da02 bge.n 158de <basic_init+0xe5e>
158d8: 2401 movs r4, #1
158da: f7ff ba55 b.w 14d88 <basic_init+0x308>
158de: 2000 movs r0, #0
158e0: 4b3e ldr r3, [pc, #248] ; (159dc <basic_init+0xf5c>)
158e2: 4798 blx r3
158e4: ebc0 1000 rsb r0, r0, r0, lsl #4
158e8: 3050 adds r0, #80 ; 0x50
158ea: 4a3d ldr r2, [pc, #244] ; (159e0 <basic_init+0xf60>)
158ec: fb82 3200 smull r3, r2, r2, r0
158f0: 17c4 asrs r4, r0, #31
158f2: ebc4 14a2 rsb r4, r4, r2, asr #6
158f6: b2a4 uxth r4, r4
158f8: f7ff ba46 b.w 14d88 <basic_init+0x308>
158fc: 2000 movs r0, #0
158fe: 4b37 ldr r3, [pc, #220] ; (159dc <basic_init+0xf5c>)
15900: 4798 blx r3
15902: ebc0 1000 rsb r0, r0, r0, lsl #4
15906: 0040 lsls r0, r0, #1
15908: 3050 adds r0, #80 ; 0x50
1590a: 4a35 ldr r2, [pc, #212] ; (159e0 <basic_init+0xf60>)
1590c: fb82 3200 smull r3, r2, r2, r0
15910: 17c4 asrs r4, r0, #31
15912: ebc4 14a2 rsb r4, r4, r2, asr #6
15916: b2a4 uxth r4, r4
15918: f7ff ba36 b.w 14d88 <basic_init+0x308>
1591c: 2000 movs r0, #0
1591e: 4b2f ldr r3, [pc, #188] ; (159dc <basic_init+0xf5c>)
15920: 4798 blx r3
15922: 3028 adds r0, #40 ; 0x28
15924: 0040 lsls r0, r0, #1
15926: 4b2e ldr r3, [pc, #184] ; (159e0 <basic_init+0xf60>)
15928: fb83 2300 smull r2, r3, r3, r0
1592c: 17c2 asrs r2, r0, #31
1592e: ebc2 12a3 rsb r2, r2, r3, asr #6
15932: b292 uxth r2, r2
15934: f7ff ba32 b.w 14d9c <basic_init+0x31c>
lv_style_set_pad_top(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH);
15938: 2000 movs r0, #0
1593a: 4b28 ldr r3, [pc, #160] ; (159dc <basic_init+0xf5c>)
1593c: 4798 blx r3
1593e: ebc0 1000 rsb r0, r0, r0, lsl #4
15942: 3050 adds r0, #80 ; 0x50
15944: f5b0 7fa0 cmp.w r0, #320 ; 0x140
15948: da02 bge.n 15950 <basic_init+0xed0>
1594a: 2401 movs r4, #1
1594c: f7ff ba41 b.w 14dd2 <basic_init+0x352>
15950: 2000 movs r0, #0
15952: 4b22 ldr r3, [pc, #136] ; (159dc <basic_init+0xf5c>)
15954: 4798 blx r3
15956: ebc0 1000 rsb r0, r0, r0, lsl #4
1595a: 3050 adds r0, #80 ; 0x50
1595c: 4a20 ldr r2, [pc, #128] ; (159e0 <basic_init+0xf60>)
1595e: fb82 3200 smull r3, r2, r2, r0
15962: 17c4 asrs r4, r0, #31
15964: ebc4 14a2 rsb r4, r4, r2, asr #6
15968: b2a4 uxth r4, r4
1596a: f7ff ba32 b.w 14dd2 <basic_init+0x352>
1596e: 2000 movs r0, #0
15970: 4b1a ldr r3, [pc, #104] ; (159dc <basic_init+0xf5c>)
15972: 4798 blx r3
15974: ebc0 1000 rsb r0, r0, r0, lsl #4
15978: 0040 lsls r0, r0, #1
1597a: 3050 adds r0, #80 ; 0x50
1597c: 4a18 ldr r2, [pc, #96] ; (159e0 <basic_init+0xf60>)
1597e: fb82 3200 smull r3, r2, r2, r0
15982: 17c4 asrs r4, r0, #31
15984: ebc4 14a2 rsb r4, r4, r2, asr #6
15988: b2a4 uxth r4, r4
1598a: f7ff ba22 b.w 14dd2 <basic_init+0x352>
1598e: 2000 movs r0, #0
15990: 4b12 ldr r3, [pc, #72] ; (159dc <basic_init+0xf5c>)
15992: 4798 blx r3
15994: 3028 adds r0, #40 ; 0x28
15996: 0040 lsls r0, r0, #1
15998: 4b11 ldr r3, [pc, #68] ; (159e0 <basic_init+0xf60>)
1599a: fb83 2300 smull r2, r3, r3, r0
1599e: 17c2 asrs r2, r0, #31
159a0: ebc2 12a3 rsb r2, r2, r3, asr #6
159a4: b292 uxth r2, r2
159a6: f7ff ba1e b.w 14de6 <basic_init+0x366>
lv_style_set_pad_bottom(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH);
159aa: 2000 movs r0, #0
159ac: 4b0b ldr r3, [pc, #44] ; (159dc <basic_init+0xf5c>)
159ae: 4798 blx r3
159b0: ebc0 1000 rsb r0, r0, r0, lsl #4
159b4: 3050 adds r0, #80 ; 0x50
159b6: f5b0 7fa0 cmp.w r0, #320 ; 0x140
159ba: da13 bge.n 159e4 <basic_init+0xf64>
159bc: 2401 movs r4, #1
159be: f7ff ba2d b.w 14e1c <basic_init+0x39c>
159c2: bf00 nop
159c4: 000068e1 .word 0x000068e1
159c8: 20006bd8 .word 0x20006bd8
159cc: 00006b69 .word 0x00006b69
159d0: 00006a25 .word 0x00006a25
159d4: 00014a61 .word 0x00014a61
159d8: 00010f59 .word 0x00010f59
159dc: 00010f3d .word 0x00010f3d
159e0: 66666667 .word 0x66666667
159e4: 2000 movs r0, #0
159e6: 4bb5 ldr r3, [pc, #724] ; (15cbc <basic_init+0x123c>)
159e8: 4798 blx r3
159ea: ebc0 1000 rsb r0, r0, r0, lsl #4
159ee: 3050 adds r0, #80 ; 0x50
159f0: 4ab3 ldr r2, [pc, #716] ; (15cc0 <basic_init+0x1240>)
159f2: fb82 3200 smull r3, r2, r2, r0
159f6: 17c4 asrs r4, r0, #31
159f8: ebc4 14a2 rsb r4, r4, r2, asr #6
159fc: b2a4 uxth r4, r4
159fe: f7ff ba0d b.w 14e1c <basic_init+0x39c>
15a02: 2000 movs r0, #0
15a04: 4bad ldr r3, [pc, #692] ; (15cbc <basic_init+0x123c>)
15a06: 4798 blx r3
15a08: ebc0 1000 rsb r0, r0, r0, lsl #4
15a0c: 0040 lsls r0, r0, #1
15a0e: 3050 adds r0, #80 ; 0x50
15a10: 4aab ldr r2, [pc, #684] ; (15cc0 <basic_init+0x1240>)
15a12: fb82 3200 smull r3, r2, r2, r0
15a16: 17c4 asrs r4, r0, #31
15a18: ebc4 14a2 rsb r4, r4, r2, asr #6
15a1c: b2a4 uxth r4, r4
15a1e: f7ff b9fd b.w 14e1c <basic_init+0x39c>
15a22: 2000 movs r0, #0
15a24: 4ba5 ldr r3, [pc, #660] ; (15cbc <basic_init+0x123c>)
15a26: 4798 blx r3
15a28: 3028 adds r0, #40 ; 0x28
15a2a: 0040 lsls r0, r0, #1
15a2c: 4ba4 ldr r3, [pc, #656] ; (15cc0 <basic_init+0x1240>)
15a2e: fb83 2300 smull r2, r3, r3, r0
15a32: 17c2 asrs r2, r0, #31
15a34: ebc2 12a3 rsb r2, r2, r3, asr #6
15a38: b292 uxth r2, r2
15a3a: f7ff b9f9 b.w 14e30 <basic_init+0x3b0>
lv_style_set_pad_inner(&styles->bg, LV_STATE_DEFAULT, PAD_DEF);
15a3e: 2000 movs r0, #0
15a40: 4b9e ldr r3, [pc, #632] ; (15cbc <basic_init+0x123c>)
15a42: 4798 blx r3
15a44: ebc0 1000 rsb r0, r0, r0, lsl #4
15a48: 3050 adds r0, #80 ; 0x50
15a4a: f5b0 7fa0 cmp.w r0, #320 ; 0x140
15a4e: da02 bge.n 15a56 <basic_init+0xfd6>
15a50: 2201 movs r2, #1
15a52: f7ff ba08 b.w 14e66 <basic_init+0x3e6>
15a56: 2000 movs r0, #0
15a58: 4b98 ldr r3, [pc, #608] ; (15cbc <basic_init+0x123c>)
15a5a: 4798 blx r3
15a5c: ebc0 1000 rsb r0, r0, r0, lsl #4
15a60: 3050 adds r0, #80 ; 0x50
15a62: 4b97 ldr r3, [pc, #604] ; (15cc0 <basic_init+0x1240>)
15a64: fb83 2300 smull r2, r3, r3, r0
15a68: 17c2 asrs r2, r0, #31
15a6a: ebc2 12a3 rsb r2, r2, r3, asr #6
15a6e: b212 sxth r2, r2
15a70: f7ff b9f9 b.w 14e66 <basic_init+0x3e6>
15a74: 2000 movs r0, #0
15a76: 4b91 ldr r3, [pc, #580] ; (15cbc <basic_init+0x123c>)
15a78: 4798 blx r3
15a7a: ebc0 1000 rsb r0, r0, r0, lsl #4
15a7e: 0040 lsls r0, r0, #1
15a80: 3050 adds r0, #80 ; 0x50
15a82: 4b8f ldr r3, [pc, #572] ; (15cc0 <basic_init+0x1240>)
15a84: fb83 2300 smull r2, r3, r3, r0
15a88: 17c2 asrs r2, r0, #31
15a8a: ebc2 12a3 rsb r2, r2, r3, asr #6
15a8e: b212 sxth r2, r2
15a90: f7ff b9e9 b.w 14e66 <basic_init+0x3e6>
15a94: 231b movs r3, #27
15a96: 2139 movs r1, #57 ; 0x39
15a98: 241d movs r4, #29
15a9a: f7ff ba20 b.w 14ede <basic_init+0x45e>
15a9e: 231d movs r3, #29
15aa0: 213b movs r1, #59 ; 0x3b
15aa2: 461c mov r4, r3
15aa4: f7ff ba9f b.w 14fe6 <basic_init+0x566>
15aa8: 231f movs r3, #31
15aaa: 213f movs r1, #63 ; 0x3f
15aac: 461c mov r4, r3
15aae: f7ff bad3 b.w 15058 <basic_init+0x5d8>
15ab2: 2319 movs r3, #25
15ab4: 2133 movs r1, #51 ; 0x33
15ab6: 461c mov r4, r3
15ab8: f7ff baf7 b.w 150aa <basic_init+0x62a>
15abc: 2307 movs r3, #7
15abe: 210f movs r1, #15
15ac0: 2408 movs r4, #8
15ac2: f7ff bb5a b.w 1517a <basic_init+0x6fa>
15ac6: 2307 movs r3, #7
15ac8: 210f movs r1, #15
15aca: 2408 movs r4, #8
15acc: f7ff bb91 b.w 151f2 <basic_init+0x772>
15ad0: 231f movs r3, #31
15ad2: 213f movs r1, #63 ; 0x3f
15ad4: 461c mov r4, r3
15ad6: f7ff bbde b.w 15296 <basic_init+0x816>
LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix)));
15ada: 4d7a ldr r5, [pc, #488] ; (15cc4 <basic_init+0x1244>)
15adc: 7b6b ldrb r3, [r5, #13]
15ade: 08db lsrs r3, r3, #3
15ae0: 214c movs r1, #76 ; 0x4c
15ae2: fb01 f303 mul.w r3, r1, r3
15ae6: f203 73b1 addw r3, r3, #1969 ; 0x7b1
15aea: eb03 2203 add.w r2, r3, r3, lsl #8
15aee: eb03 13c2 add.w r3, r3, r2, lsl #7
15af2: f3c3 53c4 ubfx r3, r3, #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)));
15af6: 89ac ldrh r4, [r5, #12]
15af8: f3c4 1445 ubfx r4, r4, #5, #6
15afc: f241 02c8 movw r2, #4296 ; 0x10c8
15b00: fb01 2404 mla r4, r1, r4, r2
15b04: eb04 2204 add.w r2, r4, r4, lsl #8
15b08: eb04 14c2 add.w r4, r4, r2, lsl #7
15b0c: f3c4 54c5 ubfx r4, r4, #23, #6
LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix)));
15b10: 7b2a ldrb r2, [r5, #12]
15b12: f002 021f and.w r2, r2, #31
15b16: fb01 f102 mul.w r1, r1, r2
15b1a: f601 11ca addw r1, r1, #2506 ; 0x9ca
15b1e: eb01 2201 add.w r2, r1, r1, lsl #8
15b22: eb01 11c2 add.w r1, r1, r2, lsl #7
15b26: f3c1 51c4 ubfx r1, r1, #23, #5
15b2a: f7ff bbf5 b.w 15318 <basic_init+0x898>
15b2e: 231f movs r3, #31
15b30: 213f movs r1, #63 ; 0x3f
15b32: 461c mov r4, r3
15b34: e425 b.n 15382 <basic_init+0x902>
lv_style_set_border_width(&styles->btn, LV_STATE_DEFAULT, BORDER_WIDTH);
15b36: 2000 movs r0, #0
15b38: 4b60 ldr r3, [pc, #384] ; (15cbc <basic_init+0x123c>)
15b3a: 4798 blx r3
15b3c: 3028 adds r0, #40 ; 0x28
15b3e: 0040 lsls r0, r0, #1
15b40: 4b5f ldr r3, [pc, #380] ; (15cc0 <basic_init+0x1240>)
15b42: fb83 2300 smull r2, r3, r3, r0
15b46: 17c2 asrs r2, r0, #31
15b48: ebc2 12a3 rsb r2, r2, r3, asr #6
15b4c: b212 sxth r2, r2
15b4e: e46c b.n 1542a <basic_init+0x9aa>
15b50: 2306 movs r3, #6
15b52: 2110 movs r1, #16
15b54: 2409 movs r4, #9
15b56: e47e b.n 15456 <basic_init+0x9d6>
15b58: 2306 movs r3, #6
15b5a: 2110 movs r1, #16
15b5c: 2409 movs r4, #9
15b5e: e491 b.n 15484 <basic_init+0xa04>
15b60: 2306 movs r3, #6
15b62: 2110 movs r1, #16
15b64: 2409 movs r4, #9
15b66: e4c1 b.n 154ec <basic_init+0xa6c>
15b68: 2306 movs r3, #6
15b6a: 2110 movs r1, #16
15b6c: 2409 movs r4, #9
15b6e: e4d4 b.n 1551a <basic_init+0xa9a>
15b70: 2306 movs r3, #6
15b72: 2110 movs r1, #16
15b74: 2409 movs r4, #9
15b76: e504 b.n 15582 <basic_init+0xb02>
15b78: 2306 movs r3, #6
15b7a: 2110 movs r1, #16
15b7c: 2409 movs r4, #9
15b7e: e516 b.n 155ae <basic_init+0xb2e>
lv_style_set_pad_left(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40));
15b80: 2000 movs r0, #0
15b82: 4b4e ldr r3, [pc, #312] ; (15cbc <basic_init+0x123c>)
15b84: 4798 blx r3
15b86: eb00 0080 add.w r0, r0, r0, lsl #2
15b8a: 00c0 lsls r0, r0, #3
15b8c: 3050 adds r0, #80 ; 0x50
15b8e: 4b4c ldr r3, [pc, #304] ; (15cc0 <basic_init+0x1240>)
15b90: fb83 2300 smull r2, r3, r3, r0
15b94: 17c2 asrs r2, r0, #31
15b96: ebc2 12a3 rsb r2, r2, r3, asr #6
15b9a: b212 sxth r2, r2
15b9c: e53f b.n 1561e <basic_init+0xb9e>
lv_style_set_pad_right(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40));
15b9e: 2000 movs r0, #0
15ba0: 4b46 ldr r3, [pc, #280] ; (15cbc <basic_init+0x123c>)
15ba2: 4798 blx r3
15ba4: eb00 0080 add.w r0, r0, r0, lsl #2
15ba8: 00c0 lsls r0, r0, #3
15baa: 3050 adds r0, #80 ; 0x50
15bac: 4b44 ldr r3, [pc, #272] ; (15cc0 <basic_init+0x1240>)
15bae: fb83 2300 smull r2, r3, r3, r0
15bb2: 17c2 asrs r2, r0, #31
15bb4: ebc2 12a3 rsb r2, r2, r3, asr #6
15bb8: b212 sxth r2, r2
15bba: e543 b.n 15644 <basic_init+0xbc4>
lv_style_set_pad_top(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15));
15bbc: 2000 movs r0, #0
15bbe: 4b3f ldr r3, [pc, #252] ; (15cbc <basic_init+0x123c>)
15bc0: 4798 blx r3
15bc2: ebc0 1000 rsb r0, r0, r0, lsl #4
15bc6: 3050 adds r0, #80 ; 0x50
15bc8: 4b3d ldr r3, [pc, #244] ; (15cc0 <basic_init+0x1240>)
15bca: fb83 2300 smull r2, r3, r3, r0
15bce: 17c2 asrs r2, r0, #31
15bd0: ebc2 12a3 rsb r2, r2, r3, asr #6
15bd4: b212 sxth r2, r2
15bd6: e547 b.n 15668 <basic_init+0xbe8>
lv_style_set_pad_bottom(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15));
15bd8: 2000 movs r0, #0
15bda: 4b38 ldr r3, [pc, #224] ; (15cbc <basic_init+0x123c>)
15bdc: 4798 blx r3
15bde: ebc0 1000 rsb r0, r0, r0, lsl #4
15be2: 3050 adds r0, #80 ; 0x50
15be4: 4b36 ldr r3, [pc, #216] ; (15cc0 <basic_init+0x1240>)
15be6: fb83 2300 smull r2, r3, r3, r0
15bea: 17c2 asrs r2, r0, #31
15bec: ebc2 12a3 rsb r2, r2, r3, asr #6
15bf0: b212 sxth r2, r2
15bf2: e54b b.n 1568c <basic_init+0xc0c>
lv_style_set_pad_inner(&styles->btn, LV_STATE_DEFAULT, LV_DPX(20));
15bf4: 2000 movs r0, #0
15bf6: 4b31 ldr r3, [pc, #196] ; (15cbc <basic_init+0x123c>)
15bf8: 4798 blx r3
15bfa: eb00 0080 add.w r0, r0, r0, lsl #2
15bfe: 0080 lsls r0, r0, #2
15c00: 3050 adds r0, #80 ; 0x50
15c02: 4b2f ldr r3, [pc, #188] ; (15cc0 <basic_init+0x1240>)
15c04: fb83 2300 smull r2, r3, r3, r0
15c08: 17c2 asrs r2, r0, #31
15c0a: ebc2 12a3 rsb r2, r2, r3, asr #6
15c0e: b212 sxth r2, r2
15c10: e55b b.n 156ca <basic_init+0xc4a>
lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40));
15c12: 2000 movs r0, #0
15c14: 4b29 ldr r3, [pc, #164] ; (15cbc <basic_init+0x123c>)
15c16: 4798 blx r3
15c18: eb00 0080 add.w r0, r0, r0, lsl #2
15c1c: 0080 lsls r0, r0, #2
15c1e: 3050 adds r0, #80 ; 0x50
15c20: 4b27 ldr r3, [pc, #156] ; (15cc0 <basic_init+0x1240>)
15c22: fb83 2300 smull r2, r3, r3, r0
15c26: 17c2 asrs r2, r0, #31
15c28: ebc2 12a3 rsb r2, r2, r3, asr #6
lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT,
15c2c: b212 sxth r2, r2
15c2e: e5a5 b.n 1577c <basic_init+0xcfc>
lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40));
15c30: 2000 movs r0, #0
15c32: 4b22 ldr r3, [pc, #136] ; (15cbc <basic_init+0x123c>)
15c34: 4798 blx r3
15c36: eb00 0080 add.w r0, r0, r0, lsl #2
15c3a: 00c0 lsls r0, r0, #3
15c3c: 3050 adds r0, #80 ; 0x50
lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT,
15c3e: f5b0 7fa0 cmp.w r0, #320 ; 0x140
15c42: da01 bge.n 15c48 <basic_init+0x11c8>
15c44: 2201 movs r2, #1
15c46: e599 b.n 1577c <basic_init+0xcfc>
lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40));
15c48: 2000 movs r0, #0
15c4a: 4b1c ldr r3, [pc, #112] ; (15cbc <basic_init+0x123c>)
15c4c: 4798 blx r3
15c4e: eb00 0080 add.w r0, r0, r0, lsl #2
15c52: 00c0 lsls r0, r0, #3
15c54: 3050 adds r0, #80 ; 0x50
15c56: 4b1a ldr r3, [pc, #104] ; (15cc0 <basic_init+0x1240>)
15c58: fb83 2300 smull r2, r3, r3, r0
15c5c: 17c2 asrs r2, r0, #31
15c5e: ebc2 12a3 rsb r2, r2, r3, asr #6
lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT,
15c62: b212 sxth r2, r2
15c64: e58a b.n 1577c <basic_init+0xcfc>
lv_style_int_t pad_small_value = lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(10) : LV_DPX(20);
15c66: 2000 movs r0, #0
15c68: 4b14 ldr r3, [pc, #80] ; (15cbc <basic_init+0x123c>)
15c6a: 4798 blx r3
15c6c: eb00 0080 add.w r0, r0, r0, lsl #2
15c70: 0040 lsls r0, r0, #1
15c72: 3050 adds r0, #80 ; 0x50
15c74: 4b12 ldr r3, [pc, #72] ; (15cc0 <basic_init+0x1240>)
15c76: fb83 2300 smull r2, r3, r3, r0
15c7a: 17c4 asrs r4, r0, #31
15c7c: ebc4 14a3 rsb r4, r4, r3, asr #6
15c80: b224 sxth r4, r4
15c82: e596 b.n 157b2 <basic_init+0xd32>
15c84: 2000 movs r0, #0
15c86: 4b0d ldr r3, [pc, #52] ; (15cbc <basic_init+0x123c>)
15c88: 4798 blx r3
15c8a: eb00 0080 add.w r0, r0, r0, lsl #2
15c8e: 0080 lsls r0, r0, #2
15c90: 3050 adds r0, #80 ; 0x50
15c92: f5b0 7fa0 cmp.w r0, #320 ; 0x140
15c96: da01 bge.n 15c9c <basic_init+0x121c>
15c98: 2401 movs r4, #1
15c9a: e58a b.n 157b2 <basic_init+0xd32>
15c9c: 2000 movs r0, #0
15c9e: 4b07 ldr r3, [pc, #28] ; (15cbc <basic_init+0x123c>)
15ca0: 4798 blx r3
15ca2: eb00 0080 add.w r0, r0, r0, lsl #2
15ca6: 0080 lsls r0, r0, #2
15ca8: 3050 adds r0, #80 ; 0x50
15caa: 4b05 ldr r3, [pc, #20] ; (15cc0 <basic_init+0x1240>)
15cac: fb83 2300 smull r2, r3, r3, r0
15cb0: 17c4 asrs r4, r0, #31
15cb2: ebc4 14a3 rsb r4, r4, r3, asr #6
15cb6: b224 sxth r4, r4
15cb8: e57b b.n 157b2 <basic_init+0xd32>
15cba: bf00 nop
15cbc: 00010f3d .word 0x00010f3d
15cc0: 66666667 .word 0x66666667
15cc4: 20006bd8 .word 0x20006bd8
00015cc8 <bar_init>:
{
15cc8: b5f8 push {r3, r4, r5, r6, r7, lr}
style_init_reset(&styles->bar_bg);
15cca: 4c54 ldr r4, [pc, #336] ; (15e1c <bar_init+0x154>)
15ccc: 6820 ldr r0, [r4, #0]
15cce: 3024 adds r0, #36 ; 0x24
15cd0: 4b53 ldr r3, [pc, #332] ; (15e20 <bar_init+0x158>)
15cd2: 4798 blx r3
lv_style_set_radius(&styles->bar_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
15cd4: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
15cd6: f647 72ff movw r2, #32767 ; 0x7fff
15cda: 2101 movs r1, #1
15cdc: 3024 adds r0, #36 ; 0x24
15cde: 4b51 ldr r3, [pc, #324] ; (15e24 <bar_init+0x15c>)
15ce0: 4798 blx r3
lv_style_set_bg_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_COVER);
15ce2: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
15ce4: 22ff movs r2, #255 ; 0xff
15ce6: 212c movs r1, #44 ; 0x2c
15ce8: 3024 adds r0, #36 ; 0x24
15cea: 4b4f ldr r3, [pc, #316] ; (15e28 <bar_init+0x160>)
15cec: 4798 blx r3
lv_style_set_bg_color(&styles->bar_bg, LV_STATE_DEFAULT, COLOR_BG_SEC);
15cee: 6820 ldr r0, [r4, #0]
15cf0: 6a23 ldr r3, [r4, #32]
15cf2: f013 0302 ands.w r3, r3, #2
15cf6: bf14 ite ne
15cf8: 211a movne r1, #26
15cfa: 2108 moveq r1, #8
15cfc: 2b00 cmp r3, #0
15cfe: bf15 itete ne
15d00: 2435 movne r4, #53 ; 0x35
15d02: 2412 moveq r4, #18
15d04: 231b movne r3, #27
15d06: 2309 moveq r3, #9
15d08: f04f 0200 mov.w r2, #0
15d0c: f363 0204 bfi r2, r3, #0, #5
15d10: f364 124a bfi r2, r4, #5, #6
15d14: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
15d18: 2129 movs r1, #41 ; 0x29
15d1a: 3024 adds r0, #36 ; 0x24
15d1c: 4b43 ldr r3, [pc, #268] ; (15e2c <bar_init+0x164>)
15d1e: 4798 blx r3
lv_style_set_value_color(&styles->bar_bg, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE);
15d20: 4b3e ldr r3, [pc, #248] ; (15e1c <bar_init+0x154>)
15d22: 6818 ldr r0, [r3, #0]
15d24: 3024 adds r0, #36 ; 0x24
15d26: 6a1b ldr r3, [r3, #32]
15d28: f013 0f02 tst.w r3, #2
15d2c: d16d bne.n 15e0a <bar_init+0x142>
15d2e: 231f movs r3, #31
15d30: 213f movs r1, #63 ; 0x3f
15d32: 461c mov r4, r3
15d34: f04f 0200 mov.w r2, #0
15d38: f364 0204 bfi r2, r4, #0, #5
15d3c: f361 124a bfi r2, r1, #5, #6
15d40: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar)
15d44: 2179 movs r1, #121 ; 0x79
15d46: 4d39 ldr r5, [pc, #228] ; (15e2c <bar_init+0x164>)
15d48: 47a8 blx r5
lv_style_set_outline_color(&styles->bar_bg, LV_STATE_DEFAULT, theme.color_primary);
15d4a: 4c34 ldr r4, [pc, #208] ; (15e1c <bar_init+0x154>)
15d4c: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar)
15d4e: 89a2 ldrh r2, [r4, #12]
15d50: 2149 movs r1, #73 ; 0x49
15d52: 3024 adds r0, #36 ; 0x24
15d54: 47a8 blx r5
lv_style_set_outline_color(&styles->bar_bg, LV_STATE_EDITED, theme.color_secondary);
15d56: 6820 ldr r0, [r4, #0]
15d58: 89e2 ldrh r2, [r4, #14]
15d5a: f240 4149 movw r1, #1097 ; 0x449
15d5e: 3024 adds r0, #36 ; 0x24
15d60: 47a8 blx r5
lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_TRANSP);
15d62: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar)
15d64: 2200 movs r2, #0
15d66: 214c movs r1, #76 ; 0x4c
15d68: 3024 adds r0, #36 ; 0x24
15d6a: 4f2f ldr r7, [pc, #188] ; (15e28 <bar_init+0x160>)
15d6c: 47b8 blx r7
lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_FOCUSED, LV_OPA_50);
15d6e: 6820 ldr r0, [r4, #0]
15d70: 227f movs r2, #127 ; 0x7f
15d72: f44f 7113 mov.w r1, #588 ; 0x24c
15d76: 3024 adds r0, #36 ; 0x24
15d78: 47b8 blx r7
lv_style_set_outline_width(&styles->bar_bg, LV_STATE_DEFAULT, 3);
15d7a: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar)
15d7c: 2203 movs r2, #3
15d7e: 2140 movs r1, #64 ; 0x40
15d80: 3024 adds r0, #36 ; 0x24
15d82: 4e28 ldr r6, [pc, #160] ; (15e24 <bar_init+0x15c>)
15d84: 47b0 blx r6
lv_style_set_transition_time(&styles->bar_bg, LV_STATE_DEFAULT, TRANSITION_TIME);
15d86: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar)
15d88: 2296 movs r2, #150 ; 0x96
15d8a: 21b0 movs r1, #176 ; 0xb0
15d8c: 3024 adds r0, #36 ; 0x24
15d8e: 47b0 blx r6
lv_style_set_transition_prop_6(&styles->bar_bg, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA);
15d90: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar)
15d92: 224c movs r2, #76 ; 0x4c
15d94: 21b7 movs r1, #183 ; 0xb7
15d96: 3024 adds r0, #36 ; 0x24
15d98: 47b0 blx r6
style_init_reset(&styles->bar_indic);
15d9a: 6820 ldr r0, [r4, #0]
15d9c: 3028 adds r0, #40 ; 0x28
15d9e: 4b20 ldr r3, [pc, #128] ; (15e20 <bar_init+0x158>)
15da0: 4798 blx r3
lv_style_set_bg_opa(&styles->bar_indic, LV_STATE_DEFAULT, LV_OPA_COVER);
15da2: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
15da4: 22ff movs r2, #255 ; 0xff
15da6: 212c movs r1, #44 ; 0x2c
15da8: 3028 adds r0, #40 ; 0x28
15daa: 47b8 blx r7
lv_style_set_radius(&styles->bar_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
15dac: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
15dae: f647 72ff movw r2, #32767 ; 0x7fff
15db2: 2101 movs r1, #1
15db4: 3028 adds r0, #40 ; 0x28
15db6: 47b0 blx r6
lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DEFAULT, theme.color_primary);
15db8: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
15dba: 89a2 ldrh r2, [r4, #12]
15dbc: 2129 movs r1, #41 ; 0x29
15dbe: 3028 adds r0, #40 ; 0x28
15dc0: 47a8 blx r5
lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DISABLED, lv_color_hex3(0x888));
15dc2: 6820 ldr r0, [r4, #0]
15dc4: 2311 movs r3, #17
15dc6: f04f 0200 mov.w r2, #0
15dca: f363 0204 bfi r2, r3, #0, #5
15dce: 2122 movs r1, #34 ; 0x22
15dd0: f361 124a bfi r2, r1, #5, #6
15dd4: f363 22cf bfi r2, r3, #11, #5
15dd8: f242 0129 movw r1, #8233 ; 0x2029
15ddc: 3028 adds r0, #40 ; 0x28
15dde: 47a8 blx r5
lv_style_set_value_color(&styles->bar_indic, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x41404f) : LV_COLOR_WHITE);
15de0: 6820 ldr r0, [r4, #0]
15de2: 3028 adds r0, #40 ; 0x28
15de4: 6a23 ldr r3, [r4, #32]
15de6: f013 0f02 tst.w r3, #2
15dea: d112 bne.n 15e12 <bar_init+0x14a>
15dec: 231f movs r3, #31
15dee: 213f movs r1, #63 ; 0x3f
15df0: 461c mov r4, r3
15df2: f04f 0200 mov.w r2, #0
15df6: f364 0204 bfi r2, r4, #0, #5
15dfa: f361 124a bfi r2, r1, #5, #6
15dfe: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar)
15e02: 2179 movs r1, #121 ; 0x79
15e04: 4b09 ldr r3, [pc, #36] ; (15e2c <bar_init+0x164>)
15e06: 4798 blx r3
15e08: bdf8 pop {r3, r4, r5, r6, r7, pc}
15e0a: 2306 movs r3, #6
15e0c: 2110 movs r1, #16
15e0e: 2409 movs r4, #9
15e10: e790 b.n 15d34 <bar_init+0x6c>
15e12: 2308 movs r3, #8
15e14: 2110 movs r1, #16
15e16: 2409 movs r4, #9
15e18: e7eb b.n 15df2 <bar_init+0x12a>
15e1a: bf00 nop
15e1c: 20006bd8 .word 0x20006bd8
15e20: 00014a61 .word 0x00014a61
15e24: 000068e1 .word 0x000068e1
15e28: 00006b69 .word 0x00006b69
15e2c: 00006a25 .word 0x00006a25
00015e30 <slider_init>:
{
15e30: b510 push {r4, lr}
style_init_reset(&styles->slider_knob);
15e32: 4ca0 ldr r4, [pc, #640] ; (160b4 <slider_init+0x284>)
15e34: 6820 ldr r0, [r4, #0]
15e36: 3090 adds r0, #144 ; 0x90
15e38: 4b9f ldr r3, [pc, #636] ; (160b8 <slider_init+0x288>)
15e3a: 4798 blx r3
lv_style_set_bg_opa(&styles->slider_knob, LV_STATE_DEFAULT, LV_OPA_COVER);
15e3c: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
15e3e: 22ff movs r2, #255 ; 0xff
15e40: 212c movs r1, #44 ; 0x2c
15e42: 3090 adds r0, #144 ; 0x90
15e44: 4b9d ldr r3, [pc, #628] ; (160bc <slider_init+0x28c>)
15e46: 4798 blx r3
lv_style_set_bg_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? theme.color_primary : LV_COLOR_WHITE);
15e48: 6820 ldr r0, [r4, #0]
15e4a: 3090 adds r0, #144 ; 0x90
15e4c: 6a23 ldr r3, [r4, #32]
15e4e: f013 0f02 tst.w r3, #2
15e52: bf19 ittee ne
15e54: 4623 movne r3, r4
15e56: 899a ldrhne r2, [r3, #12]
15e58: 4b99 ldreq r3, [pc, #612] ; (160c0 <slider_init+0x290>)
15e5a: 881a ldrheq r2, [r3, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
15e5c: 2129 movs r1, #41 ; 0x29
15e5e: 4b99 ldr r3, [pc, #612] ; (160c4 <slider_init+0x294>)
15e60: 4798 blx r3
lv_style_set_value_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE);
15e62: 4b94 ldr r3, [pc, #592] ; (160b4 <slider_init+0x284>)
15e64: 6818 ldr r0, [r3, #0]
15e66: 3090 adds r0, #144 ; 0x90
15e68: 6a1b ldr r3, [r3, #32]
15e6a: f013 0f02 tst.w r3, #2
15e6e: f040 80a9 bne.w 15fc4 <slider_init+0x194>
15e72: 231f movs r3, #31
15e74: 213f movs r1, #63 ; 0x3f
15e76: 461c mov r4, r3
15e78: f04f 0200 mov.w r2, #0
15e7c: f364 0204 bfi r2, r4, #0, #5
15e80: f361 124a bfi r2, r1, #5, #6
15e84: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar)
15e88: 2179 movs r1, #121 ; 0x79
15e8a: 4b8e ldr r3, [pc, #568] ; (160c4 <slider_init+0x294>)
15e8c: 4798 blx r3
lv_style_set_radius(&styles->slider_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
15e8e: 4c89 ldr r4, [pc, #548] ; (160b4 <slider_init+0x284>)
15e90: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
15e92: f647 72ff movw r2, #32767 ; 0x7fff
15e96: 2101 movs r1, #1
15e98: 3090 adds r0, #144 ; 0x90
15e9a: 4b8b ldr r3, [pc, #556] ; (160c8 <slider_init+0x298>)
15e9c: 4798 blx r3
lv_style_set_pad_left(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
15e9e: 6824 ldr r4, [r4, #0]
15ea0: 3490 adds r4, #144 ; 0x90
15ea2: 2000 movs r0, #0
15ea4: 4b89 ldr r3, [pc, #548] ; (160cc <slider_init+0x29c>)
15ea6: 4798 blx r3
15ea8: ebc0 00c0 rsb r0, r0, r0, lsl #3
15eac: 3050 adds r0, #80 ; 0x50
15eae: f5b0 7fa0 cmp.w r0, #320 ; 0x140
15eb2: f280 808b bge.w 15fcc <slider_init+0x19c>
15eb6: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
15eb8: 2112 movs r1, #18
15eba: 4620 mov r0, r4
15ebc: 4b82 ldr r3, [pc, #520] ; (160c8 <slider_init+0x298>)
15ebe: 4798 blx r3
lv_style_set_pad_right(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
15ec0: 4b7c ldr r3, [pc, #496] ; (160b4 <slider_init+0x284>)
15ec2: 681c ldr r4, [r3, #0]
15ec4: 3490 adds r4, #144 ; 0x90
15ec6: 2000 movs r0, #0
15ec8: 4b80 ldr r3, [pc, #512] ; (160cc <slider_init+0x29c>)
15eca: 4798 blx r3
15ecc: ebc0 00c0 rsb r0, r0, r0, lsl #3
15ed0: 3050 adds r0, #80 ; 0x50
15ed2: f5b0 7fa0 cmp.w r0, #320 ; 0x140
15ed6: f280 8087 bge.w 15fe8 <slider_init+0x1b8>
15eda: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
15edc: 2113 movs r1, #19
15ede: 4620 mov r0, r4
15ee0: 4b79 ldr r3, [pc, #484] ; (160c8 <slider_init+0x298>)
15ee2: 4798 blx r3
lv_style_set_pad_top(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
15ee4: 4b73 ldr r3, [pc, #460] ; (160b4 <slider_init+0x284>)
15ee6: 681c ldr r4, [r3, #0]
15ee8: 3490 adds r4, #144 ; 0x90
15eea: 2000 movs r0, #0
15eec: 4b77 ldr r3, [pc, #476] ; (160cc <slider_init+0x29c>)
15eee: 4798 blx r3
15ef0: ebc0 00c0 rsb r0, r0, r0, lsl #3
15ef4: 3050 adds r0, #80 ; 0x50
15ef6: f5b0 7fa0 cmp.w r0, #320 ; 0x140
15efa: f280 8083 bge.w 16004 <slider_init+0x1d4>
15efe: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
15f00: 2110 movs r1, #16
15f02: 4620 mov r0, r4
15f04: 4b70 ldr r3, [pc, #448] ; (160c8 <slider_init+0x298>)
15f06: 4798 blx r3
lv_style_set_pad_bottom(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
15f08: 4b6a ldr r3, [pc, #424] ; (160b4 <slider_init+0x284>)
15f0a: 681c ldr r4, [r3, #0]
15f0c: 3490 adds r4, #144 ; 0x90
15f0e: 2000 movs r0, #0
15f10: 4b6e ldr r3, [pc, #440] ; (160cc <slider_init+0x29c>)
15f12: 4798 blx r3
15f14: ebc0 00c0 rsb r0, r0, r0, lsl #3
15f18: 3050 adds r0, #80 ; 0x50
15f1a: f5b0 7fa0 cmp.w r0, #320 ; 0x140
15f1e: da7f bge.n 16020 <slider_init+0x1f0>
15f20: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
15f22: 2111 movs r1, #17
15f24: 4620 mov r0, r4
15f26: 4b68 ldr r3, [pc, #416] ; (160c8 <slider_init+0x298>)
15f28: 4798 blx r3
style_init_reset(&styles->slider_bg);
15f2a: 4c62 ldr r4, [pc, #392] ; (160b4 <slider_init+0x284>)
15f2c: 6820 ldr r0, [r4, #0]
15f2e: 3094 adds r0, #148 ; 0x94
15f30: 4b61 ldr r3, [pc, #388] ; (160b8 <slider_init+0x288>)
15f32: 4798 blx r3
lv_style_set_margin_left(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
15f34: 6824 ldr r4, [r4, #0]
15f36: 3494 adds r4, #148 ; 0x94
15f38: 2000 movs r0, #0
15f3a: 4b64 ldr r3, [pc, #400] ; (160cc <slider_init+0x29c>)
15f3c: 4798 blx r3
15f3e: eb00 0080 add.w r0, r0, r0, lsl #2
15f42: 0040 lsls r0, r0, #1
15f44: 3050 adds r0, #80 ; 0x50
15f46: f5b0 7fa0 cmp.w r0, #320 ; 0x140
15f4a: da77 bge.n 1603c <slider_init+0x20c>
15f4c: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_LEFT, margin_left, lv_style_int_t, _int, scalar)
15f4e: 2117 movs r1, #23
15f50: 4620 mov r0, r4
15f52: 4b5d ldr r3, [pc, #372] ; (160c8 <slider_init+0x298>)
15f54: 4798 blx r3
lv_style_set_margin_right(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
15f56: 4b57 ldr r3, [pc, #348] ; (160b4 <slider_init+0x284>)
15f58: 681c ldr r4, [r3, #0]
15f5a: 3494 adds r4, #148 ; 0x94
15f5c: 2000 movs r0, #0
15f5e: 4b5b ldr r3, [pc, #364] ; (160cc <slider_init+0x29c>)
15f60: 4798 blx r3
15f62: eb00 0080 add.w r0, r0, r0, lsl #2
15f66: 0040 lsls r0, r0, #1
15f68: 3050 adds r0, #80 ; 0x50
15f6a: f5b0 7fa0 cmp.w r0, #320 ; 0x140
15f6e: da74 bge.n 1605a <slider_init+0x22a>
15f70: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_RIGHT, margin_right, lv_style_int_t, _int, scalar)
15f72: 2118 movs r1, #24
15f74: 4620 mov r0, r4
15f76: 4b54 ldr r3, [pc, #336] ; (160c8 <slider_init+0x298>)
15f78: 4798 blx r3
lv_style_set_margin_top(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
15f7a: 4b4e ldr r3, [pc, #312] ; (160b4 <slider_init+0x284>)
15f7c: 681c ldr r4, [r3, #0]
15f7e: 3494 adds r4, #148 ; 0x94
15f80: 2000 movs r0, #0
15f82: 4b52 ldr r3, [pc, #328] ; (160cc <slider_init+0x29c>)
15f84: 4798 blx r3
15f86: eb00 0080 add.w r0, r0, r0, lsl #2
15f8a: 0040 lsls r0, r0, #1
15f8c: 3050 adds r0, #80 ; 0x50
15f8e: f5b0 7fa0 cmp.w r0, #320 ; 0x140
15f92: da71 bge.n 16078 <slider_init+0x248>
15f94: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_TOP, margin_top, lv_style_int_t, _int, scalar)
15f96: 2115 movs r1, #21
15f98: 4620 mov r0, r4
15f9a: 4b4b ldr r3, [pc, #300] ; (160c8 <slider_init+0x298>)
15f9c: 4798 blx r3
lv_style_set_margin_bottom(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
15f9e: 4b45 ldr r3, [pc, #276] ; (160b4 <slider_init+0x284>)
15fa0: 681c ldr r4, [r3, #0]
15fa2: 3494 adds r4, #148 ; 0x94
15fa4: 2000 movs r0, #0
15fa6: 4b49 ldr r3, [pc, #292] ; (160cc <slider_init+0x29c>)
15fa8: 4798 blx r3
15faa: eb00 0080 add.w r0, r0, r0, lsl #2
15fae: 0040 lsls r0, r0, #1
15fb0: 3050 adds r0, #80 ; 0x50
15fb2: f5b0 7fa0 cmp.w r0, #320 ; 0x140
15fb6: da6e bge.n 16096 <slider_init+0x266>
15fb8: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_BOTTOM, margin_bottom, lv_style_int_t, _int, scalar)
15fba: 2116 movs r1, #22
15fbc: 4620 mov r0, r4
15fbe: 4b42 ldr r3, [pc, #264] ; (160c8 <slider_init+0x298>)
15fc0: 4798 blx r3
15fc2: bd10 pop {r4, pc}
15fc4: 2306 movs r3, #6
15fc6: 2110 movs r1, #16
15fc8: 2409 movs r4, #9
15fca: e755 b.n 15e78 <slider_init+0x48>
lv_style_set_pad_left(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
15fcc: 2000 movs r0, #0
15fce: 4b3f ldr r3, [pc, #252] ; (160cc <slider_init+0x29c>)
15fd0: 4798 blx r3
15fd2: ebc0 00c0 rsb r0, r0, r0, lsl #3
15fd6: 3050 adds r0, #80 ; 0x50
15fd8: 4b3d ldr r3, [pc, #244] ; (160d0 <slider_init+0x2a0>)
15fda: fb83 2300 smull r2, r3, r3, r0
15fde: 17c2 asrs r2, r0, #31
15fe0: ebc2 12a3 rsb r2, r2, r3, asr #6
15fe4: b212 sxth r2, r2
15fe6: e767 b.n 15eb8 <slider_init+0x88>
lv_style_set_pad_right(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
15fe8: 2000 movs r0, #0
15fea: 4b38 ldr r3, [pc, #224] ; (160cc <slider_init+0x29c>)
15fec: 4798 blx r3
15fee: ebc0 00c0 rsb r0, r0, r0, lsl #3
15ff2: 3050 adds r0, #80 ; 0x50
15ff4: 4b36 ldr r3, [pc, #216] ; (160d0 <slider_init+0x2a0>)
15ff6: fb83 2300 smull r2, r3, r3, r0
15ffa: 17c2 asrs r2, r0, #31
15ffc: ebc2 12a3 rsb r2, r2, r3, asr #6
16000: b212 sxth r2, r2
16002: e76b b.n 15edc <slider_init+0xac>
lv_style_set_pad_top(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
16004: 2000 movs r0, #0
16006: 4b31 ldr r3, [pc, #196] ; (160cc <slider_init+0x29c>)
16008: 4798 blx r3
1600a: ebc0 00c0 rsb r0, r0, r0, lsl #3
1600e: 3050 adds r0, #80 ; 0x50
16010: 4b2f ldr r3, [pc, #188] ; (160d0 <slider_init+0x2a0>)
16012: fb83 2300 smull r2, r3, r3, r0
16016: 17c2 asrs r2, r0, #31
16018: ebc2 12a3 rsb r2, r2, r3, asr #6
1601c: b212 sxth r2, r2
1601e: e76f b.n 15f00 <slider_init+0xd0>
lv_style_set_pad_bottom(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
16020: 2000 movs r0, #0
16022: 4b2a ldr r3, [pc, #168] ; (160cc <slider_init+0x29c>)
16024: 4798 blx r3
16026: ebc0 00c0 rsb r0, r0, r0, lsl #3
1602a: 3050 adds r0, #80 ; 0x50
1602c: 4b28 ldr r3, [pc, #160] ; (160d0 <slider_init+0x2a0>)
1602e: fb83 2300 smull r2, r3, r3, r0
16032: 17c2 asrs r2, r0, #31
16034: ebc2 12a3 rsb r2, r2, r3, asr #6
16038: b212 sxth r2, r2
1603a: e772 b.n 15f22 <slider_init+0xf2>
lv_style_set_margin_left(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
1603c: 2000 movs r0, #0
1603e: 4b23 ldr r3, [pc, #140] ; (160cc <slider_init+0x29c>)
16040: 4798 blx r3
16042: eb00 0080 add.w r0, r0, r0, lsl #2
16046: 0040 lsls r0, r0, #1
16048: 3050 adds r0, #80 ; 0x50
1604a: 4b21 ldr r3, [pc, #132] ; (160d0 <slider_init+0x2a0>)
1604c: fb83 2300 smull r2, r3, r3, r0
16050: 17c2 asrs r2, r0, #31
16052: ebc2 12a3 rsb r2, r2, r3, asr #6
16056: b212 sxth r2, r2
16058: e779 b.n 15f4e <slider_init+0x11e>
lv_style_set_margin_right(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
1605a: 2000 movs r0, #0
1605c: 4b1b ldr r3, [pc, #108] ; (160cc <slider_init+0x29c>)
1605e: 4798 blx r3
16060: eb00 0080 add.w r0, r0, r0, lsl #2
16064: 0040 lsls r0, r0, #1
16066: 3050 adds r0, #80 ; 0x50
16068: 4b19 ldr r3, [pc, #100] ; (160d0 <slider_init+0x2a0>)
1606a: fb83 2300 smull r2, r3, r3, r0
1606e: 17c2 asrs r2, r0, #31
16070: ebc2 12a3 rsb r2, r2, r3, asr #6
16074: b212 sxth r2, r2
16076: e77c b.n 15f72 <slider_init+0x142>
lv_style_set_margin_top(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
16078: 2000 movs r0, #0
1607a: 4b14 ldr r3, [pc, #80] ; (160cc <slider_init+0x29c>)
1607c: 4798 blx r3
1607e: eb00 0080 add.w r0, r0, r0, lsl #2
16082: 0040 lsls r0, r0, #1
16084: 3050 adds r0, #80 ; 0x50
16086: 4b12 ldr r3, [pc, #72] ; (160d0 <slider_init+0x2a0>)
16088: fb83 2300 smull r2, r3, r3, r0
1608c: 17c2 asrs r2, r0, #31
1608e: ebc2 12a3 rsb r2, r2, r3, asr #6
16092: b212 sxth r2, r2
16094: e77f b.n 15f96 <slider_init+0x166>
lv_style_set_margin_bottom(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
16096: 2000 movs r0, #0
16098: 4b0c ldr r3, [pc, #48] ; (160cc <slider_init+0x29c>)
1609a: 4798 blx r3
1609c: eb00 0080 add.w r0, r0, r0, lsl #2
160a0: 0040 lsls r0, r0, #1
160a2: 3050 adds r0, #80 ; 0x50
160a4: 4b0a ldr r3, [pc, #40] ; (160d0 <slider_init+0x2a0>)
160a6: fb83 2300 smull r2, r3, r3, r0
160aa: 17c2 asrs r2, r0, #31
160ac: ebc2 12a3 rsb r2, r2, r3, asr #6
160b0: b212 sxth r2, r2
160b2: e782 b.n 15fba <slider_init+0x18a>
160b4: 20006bd8 .word 0x20006bd8
160b8: 00014a61 .word 0x00014a61
160bc: 00006b69 .word 0x00006b69
160c0: 00029584 .word 0x00029584
160c4: 00006a25 .word 0x00006a25
160c8: 000068e1 .word 0x000068e1
160cc: 00010f3d .word 0x00010f3d
160d0: 66666667 .word 0x66666667
000160d4 <switch_init>:
{
160d4: b510 push {r4, lr}
style_init_reset(&styles->sw_knob);
160d6: 4c48 ldr r4, [pc, #288] ; (161f8 <switch_init+0x124>)
160d8: 6820 ldr r0, [r4, #0]
160da: 309c adds r0, #156 ; 0x9c
160dc: 4b47 ldr r3, [pc, #284] ; (161fc <switch_init+0x128>)
160de: 4798 blx r3
lv_style_set_bg_opa(&styles->sw_knob, LV_STATE_DEFAULT, LV_OPA_COVER);
160e0: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
160e2: 22ff movs r2, #255 ; 0xff
160e4: 212c movs r1, #44 ; 0x2c
160e6: 309c adds r0, #156 ; 0x9c
160e8: 4b45 ldr r3, [pc, #276] ; (16200 <switch_init+0x12c>)
160ea: 4798 blx r3
lv_style_set_bg_color(&styles->sw_knob, LV_STATE_DEFAULT, LV_COLOR_WHITE);
160ec: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
160ee: 4b45 ldr r3, [pc, #276] ; (16204 <switch_init+0x130>)
160f0: 881a ldrh r2, [r3, #0]
160f2: 2129 movs r1, #41 ; 0x29
160f4: 309c adds r0, #156 ; 0x9c
160f6: 4b44 ldr r3, [pc, #272] ; (16208 <switch_init+0x134>)
160f8: 4798 blx r3
lv_style_set_radius(&styles->sw_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
160fa: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
160fc: f647 72ff movw r2, #32767 ; 0x7fff
16100: 2101 movs r1, #1
16102: 309c adds r0, #156 ; 0x9c
16104: 4b41 ldr r3, [pc, #260] ; (1620c <switch_init+0x138>)
16106: 4798 blx r3
lv_style_set_pad_top(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4));
16108: 6824 ldr r4, [r4, #0]
1610a: 349c adds r4, #156 ; 0x9c
1610c: 2000 movs r0, #0
1610e: 4b40 ldr r3, [pc, #256] ; (16210 <switch_init+0x13c>)
16110: 4798 blx r3
16112: 3014 adds r0, #20
16114: 0080 lsls r0, r0, #2
16116: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1611a: da39 bge.n 16190 <switch_init+0xbc>
1611c: f04f 32ff mov.w r2, #4294967295
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
16120: 2110 movs r1, #16
16122: 4620 mov r0, r4
16124: 4b39 ldr r3, [pc, #228] ; (1620c <switch_init+0x138>)
16126: 4798 blx r3
lv_style_set_pad_bottom(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4));
16128: 4b33 ldr r3, [pc, #204] ; (161f8 <switch_init+0x124>)
1612a: 681c ldr r4, [r3, #0]
1612c: 349c adds r4, #156 ; 0x9c
1612e: 2000 movs r0, #0
16130: 4b37 ldr r3, [pc, #220] ; (16210 <switch_init+0x13c>)
16132: 4798 blx r3
16134: 3014 adds r0, #20
16136: 0080 lsls r0, r0, #2
16138: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1613c: da35 bge.n 161aa <switch_init+0xd6>
1613e: f04f 32ff mov.w r2, #4294967295
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
16142: 2111 movs r1, #17
16144: 4620 mov r0, r4
16146: 4b31 ldr r3, [pc, #196] ; (1620c <switch_init+0x138>)
16148: 4798 blx r3
lv_style_set_pad_left(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4));
1614a: 4b2b ldr r3, [pc, #172] ; (161f8 <switch_init+0x124>)
1614c: 681c ldr r4, [r3, #0]
1614e: 349c adds r4, #156 ; 0x9c
16150: 2000 movs r0, #0
16152: 4b2f ldr r3, [pc, #188] ; (16210 <switch_init+0x13c>)
16154: 4798 blx r3
16156: 3014 adds r0, #20
16158: 0080 lsls r0, r0, #2
1615a: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1615e: da31 bge.n 161c4 <switch_init+0xf0>
16160: f04f 32ff mov.w r2, #4294967295
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
16164: 2112 movs r1, #18
16166: 4620 mov r0, r4
16168: 4b28 ldr r3, [pc, #160] ; (1620c <switch_init+0x138>)
1616a: 4798 blx r3
lv_style_set_pad_right(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4));
1616c: 4b22 ldr r3, [pc, #136] ; (161f8 <switch_init+0x124>)
1616e: 681c ldr r4, [r3, #0]
16170: 349c adds r4, #156 ; 0x9c
16172: 2000 movs r0, #0
16174: 4b26 ldr r3, [pc, #152] ; (16210 <switch_init+0x13c>)
16176: 4798 blx r3
16178: 3014 adds r0, #20
1617a: 0080 lsls r0, r0, #2
1617c: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16180: da2d bge.n 161de <switch_init+0x10a>
16182: f04f 32ff mov.w r2, #4294967295
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
16186: 2113 movs r1, #19
16188: 4620 mov r0, r4
1618a: 4b20 ldr r3, [pc, #128] ; (1620c <switch_init+0x138>)
1618c: 4798 blx r3
1618e: bd10 pop {r4, pc}
lv_style_set_pad_top(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4));
16190: 2000 movs r0, #0
16192: 4b1f ldr r3, [pc, #124] ; (16210 <switch_init+0x13c>)
16194: 4798 blx r3
16196: 3014 adds r0, #20
16198: 0080 lsls r0, r0, #2
1619a: 4b1e ldr r3, [pc, #120] ; (16214 <switch_init+0x140>)
1619c: fb83 2300 smull r2, r3, r3, r0
161a0: 17c2 asrs r2, r0, #31
161a2: eba2 12a3 sub.w r2, r2, r3, asr #6
161a6: b212 sxth r2, r2
161a8: e7ba b.n 16120 <switch_init+0x4c>
lv_style_set_pad_bottom(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4));
161aa: 2000 movs r0, #0
161ac: 4b18 ldr r3, [pc, #96] ; (16210 <switch_init+0x13c>)
161ae: 4798 blx r3
161b0: 3014 adds r0, #20
161b2: 0080 lsls r0, r0, #2
161b4: 4b17 ldr r3, [pc, #92] ; (16214 <switch_init+0x140>)
161b6: fb83 2300 smull r2, r3, r3, r0
161ba: 17c2 asrs r2, r0, #31
161bc: eba2 12a3 sub.w r2, r2, r3, asr #6
161c0: b212 sxth r2, r2
161c2: e7be b.n 16142 <switch_init+0x6e>
lv_style_set_pad_left(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4));
161c4: 2000 movs r0, #0
161c6: 4b12 ldr r3, [pc, #72] ; (16210 <switch_init+0x13c>)
161c8: 4798 blx r3
161ca: 3014 adds r0, #20
161cc: 0080 lsls r0, r0, #2
161ce: 4b11 ldr r3, [pc, #68] ; (16214 <switch_init+0x140>)
161d0: fb83 2300 smull r2, r3, r3, r0
161d4: 17c2 asrs r2, r0, #31
161d6: eba2 12a3 sub.w r2, r2, r3, asr #6
161da: b212 sxth r2, r2
161dc: e7c2 b.n 16164 <switch_init+0x90>
lv_style_set_pad_right(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4));
161de: 2000 movs r0, #0
161e0: 4b0b ldr r3, [pc, #44] ; (16210 <switch_init+0x13c>)
161e2: 4798 blx r3
161e4: 3014 adds r0, #20
161e6: 0080 lsls r0, r0, #2
161e8: 4b0a ldr r3, [pc, #40] ; (16214 <switch_init+0x140>)
161ea: fb83 2300 smull r2, r3, r3, r0
161ee: 17c2 asrs r2, r0, #31
161f0: eba2 12a3 sub.w r2, r2, r3, asr #6
161f4: b212 sxth r2, r2
161f6: e7c6 b.n 16186 <switch_init+0xb2>
161f8: 20006bd8 .word 0x20006bd8
161fc: 00014a61 .word 0x00014a61
16200: 00006b69 .word 0x00006b69
16204: 00029584 .word 0x00029584
16208: 00006a25 .word 0x00006a25
1620c: 000068e1 .word 0x000068e1
16210: 00010f3d .word 0x00010f3d
16214: 66666667 .word 0x66666667
00016218 <linemeter_init>:
{
16218: b538 push {r3, r4, r5, lr}
style_init_reset(&styles->lmeter);
1621a: 4c88 ldr r4, [pc, #544] ; (1643c <linemeter_init+0x224>)
1621c: 6820 ldr r0, [r4, #0]
1621e: 3070 adds r0, #112 ; 0x70
16220: 4b87 ldr r3, [pc, #540] ; (16440 <linemeter_init+0x228>)
16222: 4798 blx r3
lv_style_set_radius(&styles->lmeter, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
16224: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
16226: f647 72ff movw r2, #32767 ; 0x7fff
1622a: 2101 movs r1, #1
1622c: 3070 adds r0, #112 ; 0x70
1622e: 4b85 ldr r3, [pc, #532] ; (16444 <linemeter_init+0x22c>)
16230: 4798 blx r3
lv_style_set_pad_left(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20));
16232: 6824 ldr r4, [r4, #0]
16234: 3470 adds r4, #112 ; 0x70
16236: 2000 movs r0, #0
16238: 4b83 ldr r3, [pc, #524] ; (16448 <linemeter_init+0x230>)
1623a: 4798 blx r3
1623c: eb00 0080 add.w r0, r0, r0, lsl #2
16240: 0080 lsls r0, r0, #2
16242: 3050 adds r0, #80 ; 0x50
16244: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16248: f280 808e bge.w 16368 <linemeter_init+0x150>
1624c: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
1624e: 2112 movs r1, #18
16250: 4620 mov r0, r4
16252: 4b7c ldr r3, [pc, #496] ; (16444 <linemeter_init+0x22c>)
16254: 4798 blx r3
lv_style_set_pad_right(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20));
16256: 4b79 ldr r3, [pc, #484] ; (1643c <linemeter_init+0x224>)
16258: 681c ldr r4, [r3, #0]
1625a: 3470 adds r4, #112 ; 0x70
1625c: 2000 movs r0, #0
1625e: 4b7a ldr r3, [pc, #488] ; (16448 <linemeter_init+0x230>)
16260: 4798 blx r3
16262: eb00 0080 add.w r0, r0, r0, lsl #2
16266: 0080 lsls r0, r0, #2
16268: 3050 adds r0, #80 ; 0x50
1626a: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1626e: f280 808a bge.w 16386 <linemeter_init+0x16e>
16272: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
16274: 2113 movs r1, #19
16276: 4620 mov r0, r4
16278: 4b72 ldr r3, [pc, #456] ; (16444 <linemeter_init+0x22c>)
1627a: 4798 blx r3
lv_style_set_pad_top(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20));
1627c: 4b6f ldr r3, [pc, #444] ; (1643c <linemeter_init+0x224>)
1627e: 681c ldr r4, [r3, #0]
16280: 3470 adds r4, #112 ; 0x70
16282: 2000 movs r0, #0
16284: 4b70 ldr r3, [pc, #448] ; (16448 <linemeter_init+0x230>)
16286: 4798 blx r3
16288: eb00 0080 add.w r0, r0, r0, lsl #2
1628c: 0080 lsls r0, r0, #2
1628e: 3050 adds r0, #80 ; 0x50
16290: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16294: f280 8086 bge.w 163a4 <linemeter_init+0x18c>
16298: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
1629a: 2110 movs r1, #16
1629c: 4620 mov r0, r4
1629e: 4b69 ldr r3, [pc, #420] ; (16444 <linemeter_init+0x22c>)
162a0: 4798 blx r3
lv_style_set_pad_inner(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(30));
162a2: 4b66 ldr r3, [pc, #408] ; (1643c <linemeter_init+0x224>)
162a4: 681c ldr r4, [r3, #0]
162a6: 3470 adds r4, #112 ; 0x70
162a8: 2000 movs r0, #0
162aa: 4b67 ldr r3, [pc, #412] ; (16448 <linemeter_init+0x230>)
162ac: 4798 blx r3
162ae: ebc0 1000 rsb r0, r0, r0, lsl #4
162b2: 0040 lsls r0, r0, #1
162b4: 3050 adds r0, #80 ; 0x50
162b6: f5b0 7fa0 cmp.w r0, #320 ; 0x140
162ba: f280 8082 bge.w 163c2 <linemeter_init+0x1aa>
162be: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar)
162c0: 2114 movs r1, #20
162c2: 4620 mov r0, r4
162c4: 4b5f ldr r3, [pc, #380] ; (16444 <linemeter_init+0x22c>)
162c6: 4798 blx r3
lv_style_set_scale_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(25));
162c8: 4b5c ldr r3, [pc, #368] ; (1643c <linemeter_init+0x224>)
162ca: 681c ldr r4, [r3, #0]
162cc: 3470 adds r4, #112 ; 0x70
162ce: 2000 movs r0, #0
162d0: 4b5d ldr r3, [pc, #372] ; (16448 <linemeter_init+0x230>)
162d2: 4798 blx r3
162d4: eb00 0080 add.w r0, r0, r0, lsl #2
162d8: eb00 0080 add.w r0, r0, r0, lsl #2
162dc: 3050 adds r0, #80 ; 0x50
162de: f5b0 7fa0 cmp.w r0, #320 ; 0x140
162e2: da7d bge.n 163e0 <linemeter_init+0x1c8>
162e4: 2201 movs r2, #1
_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)
162e6: 21c0 movs r1, #192 ; 0xc0
162e8: 4620 mov r0, r4
162ea: 4b56 ldr r3, [pc, #344] ; (16444 <linemeter_init+0x22c>)
162ec: 4798 blx r3
lv_style_set_line_color(&styles->lmeter, LV_STATE_DEFAULT, theme.color_primary);
162ee: 4c53 ldr r4, [pc, #332] ; (1643c <linemeter_init+0x224>)
162f0: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar)
162f2: 89a2 ldrh r2, [r4, #12]
162f4: 2199 movs r1, #153 ; 0x99
162f6: 3070 adds r0, #112 ; 0x70
162f8: 4d54 ldr r5, [pc, #336] ; (1644c <linemeter_init+0x234>)
162fa: 47a8 blx r5
lv_style_set_scale_grad_color(&styles->lmeter, LV_STATE_DEFAULT, theme.color_primary);
162fc: 6820 ldr r0, [r4, #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)
162fe: 89a2 ldrh r2, [r4, #12]
16300: 21c9 movs r1, #201 ; 0xc9
16302: 3070 adds r0, #112 ; 0x70
16304: 47a8 blx r5
lv_style_set_scale_end_color(&styles->lmeter, LV_STATE_DEFAULT, lv_color_hex3(0x888));
16306: 6820 ldr r0, [r4, #0]
16308: 2311 movs r3, #17
1630a: f04f 0200 mov.w r2, #0
1630e: f363 0204 bfi r2, r3, #0, #5
16312: 2122 movs r1, #34 ; 0x22
16314: f361 124a bfi r2, r1, #5, #6
16318: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar)
1631c: 21ca movs r1, #202 ; 0xca
1631e: 3070 adds r0, #112 ; 0x70
16320: 47a8 blx r5
lv_style_set_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(10));
16322: 6824 ldr r4, [r4, #0]
16324: 3470 adds r4, #112 ; 0x70
16326: 2000 movs r0, #0
16328: 4b47 ldr r3, [pc, #284] ; (16448 <linemeter_init+0x230>)
1632a: 4798 blx r3
1632c: eb00 0080 add.w r0, r0, r0, lsl #2
16330: 0040 lsls r0, r0, #1
16332: 3050 adds r0, #80 ; 0x50
16334: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16338: da62 bge.n 16400 <linemeter_init+0x1e8>
1633a: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar)
1633c: 2190 movs r1, #144 ; 0x90
1633e: 4620 mov r0, r4
16340: 4b40 ldr r3, [pc, #256] ; (16444 <linemeter_init+0x22c>)
16342: 4798 blx r3
lv_style_set_scale_end_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(7));
16344: 4b3d ldr r3, [pc, #244] ; (1643c <linemeter_init+0x224>)
16346: 681c ldr r4, [r3, #0]
16348: 3470 adds r4, #112 ; 0x70
1634a: 2000 movs r0, #0
1634c: 4b3e ldr r3, [pc, #248] ; (16448 <linemeter_init+0x230>)
1634e: 4798 blx r3
16350: ebc0 00c0 rsb r0, r0, r0, lsl #3
16354: 3050 adds r0, #80 ; 0x50
16356: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1635a: da60 bge.n 1641e <linemeter_init+0x206>
1635c: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar)
1635e: 21c3 movs r1, #195 ; 0xc3
16360: 4620 mov r0, r4
16362: 4b38 ldr r3, [pc, #224] ; (16444 <linemeter_init+0x22c>)
16364: 4798 blx r3
16366: bd38 pop {r3, r4, r5, pc}
lv_style_set_pad_left(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20));
16368: 2000 movs r0, #0
1636a: 4b37 ldr r3, [pc, #220] ; (16448 <linemeter_init+0x230>)
1636c: 4798 blx r3
1636e: eb00 0080 add.w r0, r0, r0, lsl #2
16372: 0080 lsls r0, r0, #2
16374: 3050 adds r0, #80 ; 0x50
16376: 4b36 ldr r3, [pc, #216] ; (16450 <linemeter_init+0x238>)
16378: fb83 2300 smull r2, r3, r3, r0
1637c: 17c2 asrs r2, r0, #31
1637e: ebc2 12a3 rsb r2, r2, r3, asr #6
16382: b212 sxth r2, r2
16384: e763 b.n 1624e <linemeter_init+0x36>
lv_style_set_pad_right(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20));
16386: 2000 movs r0, #0
16388: 4b2f ldr r3, [pc, #188] ; (16448 <linemeter_init+0x230>)
1638a: 4798 blx r3
1638c: eb00 0080 add.w r0, r0, r0, lsl #2
16390: 0080 lsls r0, r0, #2
16392: 3050 adds r0, #80 ; 0x50
16394: 4b2e ldr r3, [pc, #184] ; (16450 <linemeter_init+0x238>)
16396: fb83 2300 smull r2, r3, r3, r0
1639a: 17c2 asrs r2, r0, #31
1639c: ebc2 12a3 rsb r2, r2, r3, asr #6
163a0: b212 sxth r2, r2
163a2: e767 b.n 16274 <linemeter_init+0x5c>
lv_style_set_pad_top(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20));
163a4: 2000 movs r0, #0
163a6: 4b28 ldr r3, [pc, #160] ; (16448 <linemeter_init+0x230>)
163a8: 4798 blx r3
163aa: eb00 0080 add.w r0, r0, r0, lsl #2
163ae: 0080 lsls r0, r0, #2
163b0: 3050 adds r0, #80 ; 0x50
163b2: 4b27 ldr r3, [pc, #156] ; (16450 <linemeter_init+0x238>)
163b4: fb83 2300 smull r2, r3, r3, r0
163b8: 17c2 asrs r2, r0, #31
163ba: ebc2 12a3 rsb r2, r2, r3, asr #6
163be: b212 sxth r2, r2
163c0: e76b b.n 1629a <linemeter_init+0x82>
lv_style_set_pad_inner(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(30));
163c2: 2000 movs r0, #0
163c4: 4b20 ldr r3, [pc, #128] ; (16448 <linemeter_init+0x230>)
163c6: 4798 blx r3
163c8: ebc0 1000 rsb r0, r0, r0, lsl #4
163cc: 0040 lsls r0, r0, #1
163ce: 3050 adds r0, #80 ; 0x50
163d0: 4b1f ldr r3, [pc, #124] ; (16450 <linemeter_init+0x238>)
163d2: fb83 2300 smull r2, r3, r3, r0
163d6: 17c2 asrs r2, r0, #31
163d8: ebc2 12a3 rsb r2, r2, r3, asr #6
163dc: b212 sxth r2, r2
163de: e76f b.n 162c0 <linemeter_init+0xa8>
lv_style_set_scale_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(25));
163e0: 2000 movs r0, #0
163e2: 4b19 ldr r3, [pc, #100] ; (16448 <linemeter_init+0x230>)
163e4: 4798 blx r3
163e6: eb00 0080 add.w r0, r0, r0, lsl #2
163ea: eb00 0080 add.w r0, r0, r0, lsl #2
163ee: 3050 adds r0, #80 ; 0x50
163f0: 4b17 ldr r3, [pc, #92] ; (16450 <linemeter_init+0x238>)
163f2: fb83 2300 smull r2, r3, r3, r0
163f6: 17c2 asrs r2, r0, #31
163f8: ebc2 12a3 rsb r2, r2, r3, asr #6
163fc: b212 sxth r2, r2
163fe: e772 b.n 162e6 <linemeter_init+0xce>
lv_style_set_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(10));
16400: 2000 movs r0, #0
16402: 4b11 ldr r3, [pc, #68] ; (16448 <linemeter_init+0x230>)
16404: 4798 blx r3
16406: eb00 0080 add.w r0, r0, r0, lsl #2
1640a: 0040 lsls r0, r0, #1
1640c: 3050 adds r0, #80 ; 0x50
1640e: 4b10 ldr r3, [pc, #64] ; (16450 <linemeter_init+0x238>)
16410: fb83 2300 smull r2, r3, r3, r0
16414: 17c2 asrs r2, r0, #31
16416: ebc2 12a3 rsb r2, r2, r3, asr #6
1641a: b212 sxth r2, r2
1641c: e78e b.n 1633c <linemeter_init+0x124>
lv_style_set_scale_end_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(7));
1641e: 2000 movs r0, #0
16420: 4b09 ldr r3, [pc, #36] ; (16448 <linemeter_init+0x230>)
16422: 4798 blx r3
16424: ebc0 00c0 rsb r0, r0, r0, lsl #3
16428: 3050 adds r0, #80 ; 0x50
1642a: 4b09 ldr r3, [pc, #36] ; (16450 <linemeter_init+0x238>)
1642c: fb83 2300 smull r2, r3, r3, r0
16430: 17c2 asrs r2, r0, #31
16432: ebc2 12a3 rsb r2, r2, r3, asr #6
16436: b212 sxth r2, r2
16438: e791 b.n 1635e <linemeter_init+0x146>
1643a: bf00 nop
1643c: 20006bd8 .word 0x20006bd8
16440: 00014a61 .word 0x00014a61
16444: 000068e1 .word 0x000068e1
16448: 00010f3d .word 0x00010f3d
1644c: 00006a25 .word 0x00006a25
16450: 66666667 .word 0x66666667
00016454 <gauge_init>:
{
16454: b5f8 push {r3, r4, r5, r6, r7, lr}
style_init_reset(&styles->gauge_main);
16456: 4cc0 ldr r4, [pc, #768] ; (16758 <gauge_init+0x304>)
16458: 6820 ldr r0, [r4, #0]
1645a: 305c adds r0, #92 ; 0x5c
1645c: 4bbf ldr r3, [pc, #764] ; (1675c <gauge_init+0x308>)
1645e: 4798 blx r3
lv_style_set_line_color(&styles->gauge_main, LV_STATE_DEFAULT, lv_color_hex3(0x888));
16460: 6820 ldr r0, [r4, #0]
16462: 2511 movs r5, #17
16464: f04f 0200 mov.w r2, #0
16468: f365 0204 bfi r2, r5, #0, #5
1646c: 2722 movs r7, #34 ; 0x22
1646e: f367 124a bfi r2, r7, #5, #6
16472: f365 22cf bfi r2, r5, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar)
16476: 2199 movs r1, #153 ; 0x99
16478: 305c adds r0, #92 ; 0x5c
1647a: 4eb9 ldr r6, [pc, #740] ; (16760 <gauge_init+0x30c>)
1647c: 47b0 blx r6
lv_style_set_scale_grad_color(&styles->gauge_main, LV_STATE_DEFAULT, lv_color_hex3(0x888));
1647e: 6820 ldr r0, [r4, #0]
16480: f04f 0200 mov.w r2, #0
16484: f365 0204 bfi r2, r5, #0, #5
16488: f367 124a bfi r2, r7, #5, #6
1648c: f365 22cf bfi r2, r5, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_GRAD_COLOR, scale_grad_color, lv_color_t, _color, nonscalar)
16490: 21c9 movs r1, #201 ; 0xc9
16492: 305c adds r0, #92 ; 0x5c
16494: 47b0 blx r6
lv_style_set_scale_end_color(&styles->gauge_main, LV_STATE_DEFAULT, theme.color_primary);
16496: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar)
16498: 89a2 ldrh r2, [r4, #12]
1649a: 21ca movs r1, #202 ; 0xca
1649c: 305c adds r0, #92 ; 0x5c
1649e: 47b0 blx r6
lv_style_set_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(5));
164a0: 6824 ldr r4, [r4, #0]
164a2: 345c adds r4, #92 ; 0x5c
164a4: 2000 movs r0, #0
164a6: 4baf ldr r3, [pc, #700] ; (16764 <gauge_init+0x310>)
164a8: 4798 blx r3
164aa: eb00 0080 add.w r0, r0, r0, lsl #2
164ae: 3050 adds r0, #80 ; 0x50
164b0: f5b0 7fa0 cmp.w r0, #320 ; 0x140
164b4: f280 8168 bge.w 16788 <gauge_init+0x334>
164b8: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar)
164ba: 2190 movs r1, #144 ; 0x90
164bc: 4620 mov r0, r4
164be: 4baa ldr r3, [pc, #680] ; (16768 <gauge_init+0x314>)
164c0: 4798 blx r3
lv_style_set_scale_end_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(4));
164c2: 4ba5 ldr r3, [pc, #660] ; (16758 <gauge_init+0x304>)
164c4: 681c ldr r4, [r3, #0]
164c6: 345c adds r4, #92 ; 0x5c
164c8: 2000 movs r0, #0
164ca: 4ba6 ldr r3, [pc, #664] ; (16764 <gauge_init+0x310>)
164cc: 4798 blx r3
164ce: 3014 adds r0, #20
164d0: 0080 lsls r0, r0, #2
164d2: f5b0 7fa0 cmp.w r0, #320 ; 0x140
164d6: f280 8165 bge.w 167a4 <gauge_init+0x350>
164da: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar)
164dc: 21c3 movs r1, #195 ; 0xc3
164de: 4620 mov r0, r4
164e0: 4ba1 ldr r3, [pc, #644] ; (16768 <gauge_init+0x314>)
164e2: 4798 blx r3
lv_style_set_scale_end_border_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(8));
164e4: 4b9c ldr r3, [pc, #624] ; (16758 <gauge_init+0x304>)
164e6: 681c ldr r4, [r3, #0]
164e8: 345c adds r4, #92 ; 0x5c
164ea: 2000 movs r0, #0
164ec: 4b9d ldr r3, [pc, #628] ; (16764 <gauge_init+0x310>)
164ee: 4798 blx r3
164f0: 300a adds r0, #10
164f2: 00c0 lsls r0, r0, #3
164f4: f5b0 7fa0 cmp.w r0, #320 ; 0x140
164f8: f280 8161 bge.w 167be <gauge_init+0x36a>
164fc: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_BORDER_WIDTH, scale_end_border_width, lv_style_int_t, _int, scalar)
164fe: 21c2 movs r1, #194 ; 0xc2
16500: 4620 mov r0, r4
16502: 4b99 ldr r3, [pc, #612] ; (16768 <gauge_init+0x314>)
16504: 4798 blx r3
lv_style_set_pad_left(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20));
16506: 4b94 ldr r3, [pc, #592] ; (16758 <gauge_init+0x304>)
16508: 681c ldr r4, [r3, #0]
1650a: 345c adds r4, #92 ; 0x5c
1650c: 2000 movs r0, #0
1650e: 4b95 ldr r3, [pc, #596] ; (16764 <gauge_init+0x310>)
16510: 4798 blx r3
16512: eb00 0080 add.w r0, r0, r0, lsl #2
16516: 0080 lsls r0, r0, #2
16518: 3050 adds r0, #80 ; 0x50
1651a: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1651e: f280 815b bge.w 167d8 <gauge_init+0x384>
16522: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
16524: 2112 movs r1, #18
16526: 4620 mov r0, r4
16528: 4b8f ldr r3, [pc, #572] ; (16768 <gauge_init+0x314>)
1652a: 4798 blx r3
lv_style_set_pad_right(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20));
1652c: 4b8a ldr r3, [pc, #552] ; (16758 <gauge_init+0x304>)
1652e: 681c ldr r4, [r3, #0]
16530: 345c adds r4, #92 ; 0x5c
16532: 2000 movs r0, #0
16534: 4b8b ldr r3, [pc, #556] ; (16764 <gauge_init+0x310>)
16536: 4798 blx r3
16538: eb00 0080 add.w r0, r0, r0, lsl #2
1653c: 0080 lsls r0, r0, #2
1653e: 3050 adds r0, #80 ; 0x50
16540: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16544: f280 8157 bge.w 167f6 <gauge_init+0x3a2>
16548: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
1654a: 2113 movs r1, #19
1654c: 4620 mov r0, r4
1654e: 4b86 ldr r3, [pc, #536] ; (16768 <gauge_init+0x314>)
16550: 4798 blx r3
lv_style_set_pad_top(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20));
16552: 4b81 ldr r3, [pc, #516] ; (16758 <gauge_init+0x304>)
16554: 681c ldr r4, [r3, #0]
16556: 345c adds r4, #92 ; 0x5c
16558: 2000 movs r0, #0
1655a: 4b82 ldr r3, [pc, #520] ; (16764 <gauge_init+0x310>)
1655c: 4798 blx r3
1655e: eb00 0080 add.w r0, r0, r0, lsl #2
16562: 0080 lsls r0, r0, #2
16564: 3050 adds r0, #80 ; 0x50
16566: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1656a: f280 8153 bge.w 16814 <gauge_init+0x3c0>
1656e: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
16570: 2110 movs r1, #16
16572: 4620 mov r0, r4
16574: 4b7c ldr r3, [pc, #496] ; (16768 <gauge_init+0x314>)
16576: 4798 blx r3
lv_style_set_pad_inner(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20));
16578: 4b77 ldr r3, [pc, #476] ; (16758 <gauge_init+0x304>)
1657a: 681c ldr r4, [r3, #0]
1657c: 345c adds r4, #92 ; 0x5c
1657e: 2000 movs r0, #0
16580: 4b78 ldr r3, [pc, #480] ; (16764 <gauge_init+0x310>)
16582: 4798 blx r3
16584: eb00 0080 add.w r0, r0, r0, lsl #2
16588: 0080 lsls r0, r0, #2
1658a: 3050 adds r0, #80 ; 0x50
1658c: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16590: f280 814f bge.w 16832 <gauge_init+0x3de>
16594: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar)
16596: 2114 movs r1, #20
16598: 4620 mov r0, r4
1659a: 4b73 ldr r3, [pc, #460] ; (16768 <gauge_init+0x314>)
1659c: 4798 blx r3
lv_style_set_scale_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(15));
1659e: 4b6e ldr r3, [pc, #440] ; (16758 <gauge_init+0x304>)
165a0: 681c ldr r4, [r3, #0]
165a2: 345c adds r4, #92 ; 0x5c
165a4: 2000 movs r0, #0
165a6: 4b6f ldr r3, [pc, #444] ; (16764 <gauge_init+0x310>)
165a8: 4798 blx r3
165aa: ebc0 1000 rsb r0, r0, r0, lsl #4
165ae: 3050 adds r0, #80 ; 0x50
165b0: f5b0 7fa0 cmp.w r0, #320 ; 0x140
165b4: f280 814c bge.w 16850 <gauge_init+0x3fc>
165b8: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar)
165ba: 21c0 movs r1, #192 ; 0xc0
165bc: 4620 mov r0, r4
165be: 4d6a ldr r5, [pc, #424] ; (16768 <gauge_init+0x314>)
165c0: 47a8 blx r5
lv_style_set_radius(&styles->gauge_main, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
165c2: 4c65 ldr r4, [pc, #404] ; (16758 <gauge_init+0x304>)
165c4: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
165c6: f647 72ff movw r2, #32767 ; 0x7fff
165ca: 2101 movs r1, #1
165cc: 305c adds r0, #92 ; 0x5c
165ce: 47a8 blx r5
style_init_reset(&styles->gauge_strong);
165d0: 6820 ldr r0, [r4, #0]
165d2: 3060 adds r0, #96 ; 0x60
165d4: 4b61 ldr r3, [pc, #388] ; (1675c <gauge_init+0x308>)
165d6: 4798 blx r3
lv_style_set_line_color(&styles->gauge_strong, LV_STATE_DEFAULT, lv_color_hex3(0x888));
165d8: 6820 ldr r0, [r4, #0]
165da: 2511 movs r5, #17
165dc: f04f 0200 mov.w r2, #0
165e0: f365 0204 bfi r2, r5, #0, #5
165e4: 2722 movs r7, #34 ; 0x22
165e6: f367 124a bfi r2, r7, #5, #6
165ea: f365 22cf bfi r2, r5, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar)
165ee: 2199 movs r1, #153 ; 0x99
165f0: 3060 adds r0, #96 ; 0x60
165f2: 4e5b ldr r6, [pc, #364] ; (16760 <gauge_init+0x30c>)
165f4: 47b0 blx r6
lv_style_set_scale_grad_color(&styles->gauge_strong, LV_STATE_DEFAULT, lv_color_hex3(0x888));
165f6: 6820 ldr r0, [r4, #0]
165f8: f04f 0200 mov.w r2, #0
165fc: f365 0204 bfi r2, r5, #0, #5
16600: f367 124a bfi r2, r7, #5, #6
16604: f365 22cf bfi r2, r5, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_GRAD_COLOR, scale_grad_color, lv_color_t, _color, nonscalar)
16608: 21c9 movs r1, #201 ; 0xc9
1660a: 3060 adds r0, #96 ; 0x60
1660c: 47b0 blx r6
lv_style_set_scale_end_color(&styles->gauge_strong, LV_STATE_DEFAULT, theme.color_primary);
1660e: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar)
16610: 89a2 ldrh r2, [r4, #12]
16612: 21ca movs r1, #202 ; 0xca
16614: 3060 adds r0, #96 ; 0x60
16616: 47b0 blx r6
lv_style_set_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8));
16618: 6824 ldr r4, [r4, #0]
1661a: 3460 adds r4, #96 ; 0x60
1661c: 2000 movs r0, #0
1661e: 4b51 ldr r3, [pc, #324] ; (16764 <gauge_init+0x310>)
16620: 4798 blx r3
16622: 300a adds r0, #10
16624: 00c0 lsls r0, r0, #3
16626: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1662a: f280 811f bge.w 1686c <gauge_init+0x418>
1662e: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar)
16630: 2190 movs r1, #144 ; 0x90
16632: 4620 mov r0, r4
16634: 4b4c ldr r3, [pc, #304] ; (16768 <gauge_init+0x314>)
16636: 4798 blx r3
lv_style_set_scale_end_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8));
16638: 4b47 ldr r3, [pc, #284] ; (16758 <gauge_init+0x304>)
1663a: 681c ldr r4, [r3, #0]
1663c: 3460 adds r4, #96 ; 0x60
1663e: 2000 movs r0, #0
16640: 4b48 ldr r3, [pc, #288] ; (16764 <gauge_init+0x310>)
16642: 4798 blx r3
16644: 300a adds r0, #10
16646: 00c0 lsls r0, r0, #3
16648: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1664c: f280 811b bge.w 16886 <gauge_init+0x432>
16650: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar)
16652: 21c3 movs r1, #195 ; 0xc3
16654: 4620 mov r0, r4
16656: 4b44 ldr r3, [pc, #272] ; (16768 <gauge_init+0x314>)
16658: 4798 blx r3
lv_style_set_scale_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(25));
1665a: 4b3f ldr r3, [pc, #252] ; (16758 <gauge_init+0x304>)
1665c: 681c ldr r4, [r3, #0]
1665e: 3460 adds r4, #96 ; 0x60
16660: 2000 movs r0, #0
16662: 4b40 ldr r3, [pc, #256] ; (16764 <gauge_init+0x310>)
16664: 4798 blx r3
16666: eb00 0080 add.w r0, r0, r0, lsl #2
1666a: eb00 0080 add.w r0, r0, r0, lsl #2
1666e: 3050 adds r0, #80 ; 0x50
16670: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16674: f280 8114 bge.w 168a0 <gauge_init+0x44c>
16678: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar)
1667a: 21c0 movs r1, #192 ; 0xc0
1667c: 4620 mov r0, r4
1667e: 4b3a ldr r3, [pc, #232] ; (16768 <gauge_init+0x314>)
16680: 4798 blx r3
style_init_reset(&styles->gauge_needle);
16682: 4c35 ldr r4, [pc, #212] ; (16758 <gauge_init+0x304>)
16684: 6820 ldr r0, [r4, #0]
16686: 3064 adds r0, #100 ; 0x64
16688: 4b34 ldr r3, [pc, #208] ; (1675c <gauge_init+0x308>)
1668a: 4798 blx r3
lv_style_set_line_color(&styles->gauge_needle, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE);
1668c: 6820 ldr r0, [r4, #0]
1668e: 3064 adds r0, #100 ; 0x64
16690: 6a23 ldr r3, [r4, #32]
16692: f013 0f02 tst.w r3, #2
16696: f040 8113 bne.w 168c0 <gauge_init+0x46c>
1669a: 231f movs r3, #31
1669c: 213f movs r1, #63 ; 0x3f
1669e: 461c mov r4, r3
166a0: f04f 0200 mov.w r2, #0
166a4: f364 0204 bfi r2, r4, #0, #5
166a8: f361 124a bfi r2, r1, #5, #6
166ac: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar)
166b0: 2199 movs r1, #153 ; 0x99
166b2: 4b2b ldr r3, [pc, #172] ; (16760 <gauge_init+0x30c>)
166b4: 4798 blx r3
lv_style_set_line_width(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(8));
166b6: 4b28 ldr r3, [pc, #160] ; (16758 <gauge_init+0x304>)
166b8: 681c ldr r4, [r3, #0]
166ba: 3464 adds r4, #100 ; 0x64
166bc: 2000 movs r0, #0
166be: 4b29 ldr r3, [pc, #164] ; (16764 <gauge_init+0x310>)
166c0: 4798 blx r3
166c2: 300a adds r0, #10
166c4: 00c0 lsls r0, r0, #3
166c6: f5b0 7fa0 cmp.w r0, #320 ; 0x140
166ca: f280 80fd bge.w 168c8 <gauge_init+0x474>
166ce: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar)
166d0: 2190 movs r1, #144 ; 0x90
166d2: 4620 mov r0, r4
166d4: 4b24 ldr r3, [pc, #144] ; (16768 <gauge_init+0x314>)
166d6: 4798 blx r3
lv_style_set_bg_opa(&styles->gauge_needle, LV_STATE_DEFAULT, LV_OPA_COVER);
166d8: 4c1f ldr r4, [pc, #124] ; (16758 <gauge_init+0x304>)
166da: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
166dc: 22ff movs r2, #255 ; 0xff
166de: 212c movs r1, #44 ; 0x2c
166e0: 3064 adds r0, #100 ; 0x64
166e2: 4b22 ldr r3, [pc, #136] ; (1676c <gauge_init+0x318>)
166e4: 4798 blx r3
lv_style_set_bg_color(&styles->gauge_needle, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE);
166e6: 6820 ldr r0, [r4, #0]
166e8: 3064 adds r0, #100 ; 0x64
166ea: 6a23 ldr r3, [r4, #32]
166ec: f013 0f02 tst.w r3, #2
166f0: f040 80f7 bne.w 168e2 <gauge_init+0x48e>
166f4: 231f movs r3, #31
166f6: 213f movs r1, #63 ; 0x3f
166f8: 461c mov r4, r3
166fa: f04f 0200 mov.w r2, #0
166fe: f364 0204 bfi r2, r4, #0, #5
16702: f361 124a bfi r2, r1, #5, #6
16706: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
1670a: 2129 movs r1, #41 ; 0x29
1670c: 4b14 ldr r3, [pc, #80] ; (16760 <gauge_init+0x30c>)
1670e: 4798 blx r3
lv_style_set_radius(&styles->gauge_needle, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
16710: 4c11 ldr r4, [pc, #68] ; (16758 <gauge_init+0x304>)
16712: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
16714: f647 72ff movw r2, #32767 ; 0x7fff
16718: 2101 movs r1, #1
1671a: 3064 adds r0, #100 ; 0x64
1671c: 4b12 ldr r3, [pc, #72] ; (16768 <gauge_init+0x314>)
1671e: 4798 blx r3
lv_style_set_size(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(30));
16720: 6824 ldr r4, [r4, #0]
16722: 3464 adds r4, #100 ; 0x64
16724: 2000 movs r0, #0
16726: 4b0f ldr r3, [pc, #60] ; (16764 <gauge_init+0x310>)
16728: 4798 blx r3
1672a: ebc0 1000 rsb r0, r0, r0, lsl #4
1672e: 0040 lsls r0, r0, #1
16730: 3050 adds r0, #80 ; 0x50
16732: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16736: f280 80d8 bge.w 168ea <gauge_init+0x496>
1673a: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar)
1673c: 2103 movs r1, #3
1673e: 4620 mov r0, r4
16740: 4b09 ldr r3, [pc, #36] ; (16768 <gauge_init+0x314>)
16742: 4798 blx r3
lv_style_set_pad_inner(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(10));
16744: 4b04 ldr r3, [pc, #16] ; (16758 <gauge_init+0x304>)
16746: 681c ldr r4, [r3, #0]
16748: 3464 adds r4, #100 ; 0x64
1674a: 2000 movs r0, #0
1674c: 4b05 ldr r3, [pc, #20] ; (16764 <gauge_init+0x310>)
1674e: 4798 blx r3
16750: eb00 0080 add.w r0, r0, r0, lsl #2
16754: e00c b.n 16770 <gauge_init+0x31c>
16756: bf00 nop
16758: 20006bd8 .word 0x20006bd8
1675c: 00014a61 .word 0x00014a61
16760: 00006a25 .word 0x00006a25
16764: 00010f3d .word 0x00010f3d
16768: 000068e1 .word 0x000068e1
1676c: 00006b69 .word 0x00006b69
16770: 0040 lsls r0, r0, #1
16772: 3050 adds r0, #80 ; 0x50
16774: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16778: f280 80c6 bge.w 16908 <gauge_init+0x4b4>
1677c: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar)
1677e: 2114 movs r1, #20
16780: 4620 mov r0, r4
16782: 4b69 ldr r3, [pc, #420] ; (16928 <gauge_init+0x4d4>)
16784: 4798 blx r3
16786: bdf8 pop {r3, r4, r5, r6, r7, pc}
lv_style_set_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(5));
16788: 2000 movs r0, #0
1678a: 4b68 ldr r3, [pc, #416] ; (1692c <gauge_init+0x4d8>)
1678c: 4798 blx r3
1678e: eb00 0080 add.w r0, r0, r0, lsl #2
16792: 3050 adds r0, #80 ; 0x50
16794: 4b66 ldr r3, [pc, #408] ; (16930 <gauge_init+0x4dc>)
16796: fb83 2300 smull r2, r3, r3, r0
1679a: 17c2 asrs r2, r0, #31
1679c: ebc2 12a3 rsb r2, r2, r3, asr #6
167a0: b212 sxth r2, r2
167a2: e68a b.n 164ba <gauge_init+0x66>
lv_style_set_scale_end_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(4));
167a4: 2000 movs r0, #0
167a6: 4b61 ldr r3, [pc, #388] ; (1692c <gauge_init+0x4d8>)
167a8: 4798 blx r3
167aa: 3014 adds r0, #20
167ac: 0080 lsls r0, r0, #2
167ae: 4b60 ldr r3, [pc, #384] ; (16930 <gauge_init+0x4dc>)
167b0: fb83 2300 smull r2, r3, r3, r0
167b4: 17c2 asrs r2, r0, #31
167b6: ebc2 12a3 rsb r2, r2, r3, asr #6
167ba: b212 sxth r2, r2
167bc: e68e b.n 164dc <gauge_init+0x88>
lv_style_set_scale_end_border_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(8));
167be: 2000 movs r0, #0
167c0: 4b5a ldr r3, [pc, #360] ; (1692c <gauge_init+0x4d8>)
167c2: 4798 blx r3
167c4: 300a adds r0, #10
167c6: 00c0 lsls r0, r0, #3
167c8: 4b59 ldr r3, [pc, #356] ; (16930 <gauge_init+0x4dc>)
167ca: fb83 2300 smull r2, r3, r3, r0
167ce: 17c2 asrs r2, r0, #31
167d0: ebc2 12a3 rsb r2, r2, r3, asr #6
167d4: b212 sxth r2, r2
167d6: e692 b.n 164fe <gauge_init+0xaa>
lv_style_set_pad_left(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20));
167d8: 2000 movs r0, #0
167da: 4b54 ldr r3, [pc, #336] ; (1692c <gauge_init+0x4d8>)
167dc: 4798 blx r3
167de: eb00 0080 add.w r0, r0, r0, lsl #2
167e2: 0080 lsls r0, r0, #2
167e4: 3050 adds r0, #80 ; 0x50
167e6: 4b52 ldr r3, [pc, #328] ; (16930 <gauge_init+0x4dc>)
167e8: fb83 2300 smull r2, r3, r3, r0
167ec: 17c2 asrs r2, r0, #31
167ee: ebc2 12a3 rsb r2, r2, r3, asr #6
167f2: b212 sxth r2, r2
167f4: e696 b.n 16524 <gauge_init+0xd0>
lv_style_set_pad_right(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20));
167f6: 2000 movs r0, #0
167f8: 4b4c ldr r3, [pc, #304] ; (1692c <gauge_init+0x4d8>)
167fa: 4798 blx r3
167fc: eb00 0080 add.w r0, r0, r0, lsl #2
16800: 0080 lsls r0, r0, #2
16802: 3050 adds r0, #80 ; 0x50
16804: 4b4a ldr r3, [pc, #296] ; (16930 <gauge_init+0x4dc>)
16806: fb83 2300 smull r2, r3, r3, r0
1680a: 17c2 asrs r2, r0, #31
1680c: ebc2 12a3 rsb r2, r2, r3, asr #6
16810: b212 sxth r2, r2
16812: e69a b.n 1654a <gauge_init+0xf6>
lv_style_set_pad_top(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20));
16814: 2000 movs r0, #0
16816: 4b45 ldr r3, [pc, #276] ; (1692c <gauge_init+0x4d8>)
16818: 4798 blx r3
1681a: eb00 0080 add.w r0, r0, r0, lsl #2
1681e: 0080 lsls r0, r0, #2
16820: 3050 adds r0, #80 ; 0x50
16822: 4b43 ldr r3, [pc, #268] ; (16930 <gauge_init+0x4dc>)
16824: fb83 2300 smull r2, r3, r3, r0
16828: 17c2 asrs r2, r0, #31
1682a: ebc2 12a3 rsb r2, r2, r3, asr #6
1682e: b212 sxth r2, r2
16830: e69e b.n 16570 <gauge_init+0x11c>
lv_style_set_pad_inner(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20));
16832: 2000 movs r0, #0
16834: 4b3d ldr r3, [pc, #244] ; (1692c <gauge_init+0x4d8>)
16836: 4798 blx r3
16838: eb00 0080 add.w r0, r0, r0, lsl #2
1683c: 0080 lsls r0, r0, #2
1683e: 3050 adds r0, #80 ; 0x50
16840: 4b3b ldr r3, [pc, #236] ; (16930 <gauge_init+0x4dc>)
16842: fb83 2300 smull r2, r3, r3, r0
16846: 17c2 asrs r2, r0, #31
16848: ebc2 12a3 rsb r2, r2, r3, asr #6
1684c: b212 sxth r2, r2
1684e: e6a2 b.n 16596 <gauge_init+0x142>
lv_style_set_scale_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(15));
16850: 2000 movs r0, #0
16852: 4b36 ldr r3, [pc, #216] ; (1692c <gauge_init+0x4d8>)
16854: 4798 blx r3
16856: ebc0 1000 rsb r0, r0, r0, lsl #4
1685a: 3050 adds r0, #80 ; 0x50
1685c: 4b34 ldr r3, [pc, #208] ; (16930 <gauge_init+0x4dc>)
1685e: fb83 2300 smull r2, r3, r3, r0
16862: 17c2 asrs r2, r0, #31
16864: ebc2 12a3 rsb r2, r2, r3, asr #6
16868: b212 sxth r2, r2
1686a: e6a6 b.n 165ba <gauge_init+0x166>
lv_style_set_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8));
1686c: 2000 movs r0, #0
1686e: 4b2f ldr r3, [pc, #188] ; (1692c <gauge_init+0x4d8>)
16870: 4798 blx r3
16872: 300a adds r0, #10
16874: 00c0 lsls r0, r0, #3
16876: 4b2e ldr r3, [pc, #184] ; (16930 <gauge_init+0x4dc>)
16878: fb83 2300 smull r2, r3, r3, r0
1687c: 17c2 asrs r2, r0, #31
1687e: ebc2 12a3 rsb r2, r2, r3, asr #6
16882: b212 sxth r2, r2
16884: e6d4 b.n 16630 <gauge_init+0x1dc>
lv_style_set_scale_end_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8));
16886: 2000 movs r0, #0
16888: 4b28 ldr r3, [pc, #160] ; (1692c <gauge_init+0x4d8>)
1688a: 4798 blx r3
1688c: 300a adds r0, #10
1688e: 00c0 lsls r0, r0, #3
16890: 4b27 ldr r3, [pc, #156] ; (16930 <gauge_init+0x4dc>)
16892: fb83 2300 smull r2, r3, r3, r0
16896: 17c2 asrs r2, r0, #31
16898: ebc2 12a3 rsb r2, r2, r3, asr #6
1689c: b212 sxth r2, r2
1689e: e6d8 b.n 16652 <gauge_init+0x1fe>
lv_style_set_scale_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(25));
168a0: 2000 movs r0, #0
168a2: 4b22 ldr r3, [pc, #136] ; (1692c <gauge_init+0x4d8>)
168a4: 4798 blx r3
168a6: eb00 0080 add.w r0, r0, r0, lsl #2
168aa: eb00 0080 add.w r0, r0, r0, lsl #2
168ae: 3050 adds r0, #80 ; 0x50
168b0: 4b1f ldr r3, [pc, #124] ; (16930 <gauge_init+0x4dc>)
168b2: fb83 2300 smull r2, r3, r3, r0
168b6: 17c2 asrs r2, r0, #31
168b8: ebc2 12a3 rsb r2, r2, r3, asr #6
168bc: b212 sxth r2, r2
168be: e6dc b.n 1667a <gauge_init+0x226>
168c0: 2308 movs r3, #8
168c2: 2112 movs r1, #18
168c4: 240b movs r4, #11
168c6: e6eb b.n 166a0 <gauge_init+0x24c>
lv_style_set_line_width(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(8));
168c8: 2000 movs r0, #0
168ca: 4b18 ldr r3, [pc, #96] ; (1692c <gauge_init+0x4d8>)
168cc: 4798 blx r3
168ce: 300a adds r0, #10
168d0: 00c0 lsls r0, r0, #3
168d2: 4b17 ldr r3, [pc, #92] ; (16930 <gauge_init+0x4dc>)
168d4: fb83 2300 smull r2, r3, r3, r0
168d8: 17c2 asrs r2, r0, #31
168da: ebc2 12a3 rsb r2, r2, r3, asr #6
168de: b212 sxth r2, r2
168e0: e6f6 b.n 166d0 <gauge_init+0x27c>
168e2: 2308 movs r3, #8
168e4: 2112 movs r1, #18
168e6: 240b movs r4, #11
168e8: e707 b.n 166fa <gauge_init+0x2a6>
lv_style_set_size(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(30));
168ea: 2000 movs r0, #0
168ec: 4b0f ldr r3, [pc, #60] ; (1692c <gauge_init+0x4d8>)
168ee: 4798 blx r3
168f0: ebc0 1000 rsb r0, r0, r0, lsl #4
168f4: 0040 lsls r0, r0, #1
168f6: 3050 adds r0, #80 ; 0x50
168f8: 4b0d ldr r3, [pc, #52] ; (16930 <gauge_init+0x4dc>)
168fa: fb83 2300 smull r2, r3, r3, r0
168fe: 17c2 asrs r2, r0, #31
16900: ebc2 12a3 rsb r2, r2, r3, asr #6
16904: b212 sxth r2, r2
16906: e719 b.n 1673c <gauge_init+0x2e8>
lv_style_set_pad_inner(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(10));
16908: 2000 movs r0, #0
1690a: 4b08 ldr r3, [pc, #32] ; (1692c <gauge_init+0x4d8>)
1690c: 4798 blx r3
1690e: eb00 0080 add.w r0, r0, r0, lsl #2
16912: 0040 lsls r0, r0, #1
16914: 3050 adds r0, #80 ; 0x50
16916: 4b06 ldr r3, [pc, #24] ; (16930 <gauge_init+0x4dc>)
16918: fb83 2300 smull r2, r3, r3, r0
1691c: 17c2 asrs r2, r0, #31
1691e: ebc2 12a3 rsb r2, r2, r3, asr #6
16922: b212 sxth r2, r2
16924: e72b b.n 1677e <gauge_init+0x32a>
16926: bf00 nop
16928: 000068e1 .word 0x000068e1
1692c: 00010f3d .word 0x00010f3d
16930: 66666667 .word 0x66666667
00016934 <arc_init>:
{
16934: b538 push {r3, r4, r5, lr}
style_init_reset(&styles->arc_indic);
16936: 4c3d ldr r4, [pc, #244] ; (16a2c <arc_init+0xf8>)
16938: 6820 ldr r0, [r4, #0]
1693a: 301c adds r0, #28
1693c: 4b3c ldr r3, [pc, #240] ; (16a30 <arc_init+0xfc>)
1693e: 4798 blx r3
lv_style_set_line_color(&styles->arc_indic, LV_STATE_DEFAULT, theme.color_primary);
16940: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar)
16942: 89a2 ldrh r2, [r4, #12]
16944: 2199 movs r1, #153 ; 0x99
16946: 301c adds r0, #28
16948: 4b3a ldr r3, [pc, #232] ; (16a34 <arc_init+0x100>)
1694a: 4798 blx r3
lv_style_set_line_width(&styles->arc_indic, LV_STATE_DEFAULT, LV_DPX(25));
1694c: 6824 ldr r4, [r4, #0]
1694e: 341c adds r4, #28
16950: 2000 movs r0, #0
16952: 4b39 ldr r3, [pc, #228] ; (16a38 <arc_init+0x104>)
16954: 4798 blx r3
16956: eb00 0080 add.w r0, r0, r0, lsl #2
1695a: eb00 0080 add.w r0, r0, r0, lsl #2
1695e: 3050 adds r0, #80 ; 0x50
16960: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16964: da41 bge.n 169ea <arc_init+0xb6>
16966: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar)
16968: 2190 movs r1, #144 ; 0x90
1696a: 4620 mov r0, r4
1696c: 4d33 ldr r5, [pc, #204] ; (16a3c <arc_init+0x108>)
1696e: 47a8 blx r5
lv_style_set_line_rounded(&styles->arc_indic, LV_STATE_DEFAULT, true);
16970: 4c2e ldr r4, [pc, #184] ; (16a2c <arc_init+0xf8>)
16972: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_ROUNDED, line_rounded, bool, _int, scalar)
16974: 2201 movs r2, #1
16976: 2194 movs r1, #148 ; 0x94
16978: 301c adds r0, #28
1697a: 47a8 blx r5
style_init_reset(&styles->arc_bg);
1697c: 6820 ldr r0, [r4, #0]
1697e: 3020 adds r0, #32
16980: 4b2b ldr r3, [pc, #172] ; (16a30 <arc_init+0xfc>)
16982: 4798 blx r3
lv_style_set_line_color(&styles->arc_bg, LV_STATE_DEFAULT, COLOR_BG_SEC);
16984: 6820 ldr r0, [r4, #0]
16986: 6a23 ldr r3, [r4, #32]
16988: f013 0302 ands.w r3, r3, #2
1698c: bf14 ite ne
1698e: 211a movne r1, #26
16990: 2108 moveq r1, #8
16992: 2b00 cmp r3, #0
16994: bf15 itete ne
16996: 2435 movne r4, #53 ; 0x35
16998: 2412 moveq r4, #18
1699a: 231b movne r3, #27
1699c: 2309 moveq r3, #9
1699e: f04f 0200 mov.w r2, #0
169a2: f363 0204 bfi r2, r3, #0, #5
169a6: f364 124a bfi r2, r4, #5, #6
169aa: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar)
169ae: 2199 movs r1, #153 ; 0x99
169b0: 3020 adds r0, #32
169b2: 4b20 ldr r3, [pc, #128] ; (16a34 <arc_init+0x100>)
169b4: 4798 blx r3
lv_style_set_line_width(&styles->arc_bg, LV_STATE_DEFAULT, LV_DPX(25));
169b6: 4b1d ldr r3, [pc, #116] ; (16a2c <arc_init+0xf8>)
169b8: 681c ldr r4, [r3, #0]
169ba: 3420 adds r4, #32
169bc: 2000 movs r0, #0
169be: 4b1e ldr r3, [pc, #120] ; (16a38 <arc_init+0x104>)
169c0: 4798 blx r3
169c2: eb00 0080 add.w r0, r0, r0, lsl #2
169c6: eb00 0080 add.w r0, r0, r0, lsl #2
169ca: 3050 adds r0, #80 ; 0x50
169cc: f5b0 7fa0 cmp.w r0, #320 ; 0x140
169d0: da1b bge.n 16a0a <arc_init+0xd6>
169d2: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar)
169d4: 2190 movs r1, #144 ; 0x90
169d6: 4620 mov r0, r4
169d8: 4c18 ldr r4, [pc, #96] ; (16a3c <arc_init+0x108>)
169da: 47a0 blx r4
lv_style_set_line_rounded(&styles->arc_bg, LV_STATE_DEFAULT, true);
169dc: 4b13 ldr r3, [pc, #76] ; (16a2c <arc_init+0xf8>)
169de: 6818 ldr r0, [r3, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_ROUNDED, line_rounded, bool, _int, scalar)
169e0: 2201 movs r2, #1
169e2: 2194 movs r1, #148 ; 0x94
169e4: 3020 adds r0, #32
169e6: 47a0 blx r4
169e8: bd38 pop {r3, r4, r5, pc}
lv_style_set_line_width(&styles->arc_indic, LV_STATE_DEFAULT, LV_DPX(25));
169ea: 2000 movs r0, #0
169ec: 4b12 ldr r3, [pc, #72] ; (16a38 <arc_init+0x104>)
169ee: 4798 blx r3
169f0: eb00 0080 add.w r0, r0, r0, lsl #2
169f4: eb00 0080 add.w r0, r0, r0, lsl #2
169f8: 3050 adds r0, #80 ; 0x50
169fa: 4b11 ldr r3, [pc, #68] ; (16a40 <arc_init+0x10c>)
169fc: fb83 2300 smull r2, r3, r3, r0
16a00: 17c2 asrs r2, r0, #31
16a02: ebc2 12a3 rsb r2, r2, r3, asr #6
16a06: b212 sxth r2, r2
16a08: e7ae b.n 16968 <arc_init+0x34>
lv_style_set_line_width(&styles->arc_bg, LV_STATE_DEFAULT, LV_DPX(25));
16a0a: 2000 movs r0, #0
16a0c: 4b0a ldr r3, [pc, #40] ; (16a38 <arc_init+0x104>)
16a0e: 4798 blx r3
16a10: eb00 0080 add.w r0, r0, r0, lsl #2
16a14: eb00 0080 add.w r0, r0, r0, lsl #2
16a18: 3050 adds r0, #80 ; 0x50
16a1a: 4b09 ldr r3, [pc, #36] ; (16a40 <arc_init+0x10c>)
16a1c: fb83 2300 smull r2, r3, r3, r0
16a20: 17c2 asrs r2, r0, #31
16a22: ebc2 12a3 rsb r2, r2, r3, asr #6
16a26: b212 sxth r2, r2
16a28: e7d4 b.n 169d4 <arc_init+0xa0>
16a2a: bf00 nop
16a2c: 20006bd8 .word 0x20006bd8
16a30: 00014a61 .word 0x00014a61
16a34: 00006a25 .word 0x00006a25
16a38: 00010f3d .word 0x00010f3d
16a3c: 000068e1 .word 0x000068e1
16a40: 66666667 .word 0x66666667
00016a44 <led_init>:
{
16a44: b5f8 push {r3, r4, r5, r6, r7, lr}
style_init_reset(&styles->led);
16a46: 4c38 ldr r4, [pc, #224] ; (16b28 <led_init+0xe4>)
16a48: 6820 ldr r0, [r4, #0]
16a4a: 306c adds r0, #108 ; 0x6c
16a4c: 4b37 ldr r3, [pc, #220] ; (16b2c <led_init+0xe8>)
16a4e: 4798 blx r3
lv_style_set_bg_opa(&styles->led, LV_STATE_DEFAULT, LV_OPA_COVER);
16a50: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
16a52: 22ff movs r2, #255 ; 0xff
16a54: 212c movs r1, #44 ; 0x2c
16a56: 306c adds r0, #108 ; 0x6c
16a58: 4d35 ldr r5, [pc, #212] ; (16b30 <led_init+0xec>)
16a5a: 47a8 blx r5
lv_style_set_bg_color(&styles->led, LV_STATE_DEFAULT, theme.color_primary);
16a5c: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
16a5e: 89a2 ldrh r2, [r4, #12]
16a60: 2129 movs r1, #41 ; 0x29
16a62: 306c adds r0, #108 ; 0x6c
16a64: 4f33 ldr r7, [pc, #204] ; (16b34 <led_init+0xf0>)
16a66: 47b8 blx r7
lv_style_set_border_width(&styles->led, LV_STATE_DEFAULT, 2);
16a68: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar)
16a6a: 2202 movs r2, #2
16a6c: 2130 movs r1, #48 ; 0x30
16a6e: 306c adds r0, #108 ; 0x6c
16a70: 4e31 ldr r6, [pc, #196] ; (16b38 <led_init+0xf4>)
16a72: 47b0 blx r6
lv_style_set_border_opa(&styles->led, LV_STATE_DEFAULT, LV_OPA_50);
16a74: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar)
16a76: 227f movs r2, #127 ; 0x7f
16a78: 213c movs r1, #60 ; 0x3c
16a7a: 306c adds r0, #108 ; 0x6c
16a7c: 47a8 blx r5
lv_style_set_border_color(&styles->led, LV_STATE_DEFAULT, lv_color_lighten(theme.color_primary, LV_OPA_30));
16a7e: 6825 ldr r5, [r4, #0]
16a80: 356c adds r5, #108 ; 0x6c
16a82: 214c movs r1, #76 ; 0x4c
16a84: 89a0 ldrh r0, [r4, #12]
16a86: 4b2d ldr r3, [pc, #180] ; (16b3c <led_init+0xf8>)
16a88: 4798 blx r3
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar)
16a8a: 4602 mov r2, r0
16a8c: 2139 movs r1, #57 ; 0x39
16a8e: 4628 mov r0, r5
16a90: 47b8 blx r7
lv_style_set_radius(&styles->led, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
16a92: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
16a94: f647 72ff movw r2, #32767 ; 0x7fff
16a98: 2101 movs r1, #1
16a9a: 306c adds r0, #108 ; 0x6c
16a9c: 47b0 blx r6
lv_style_set_shadow_width(&styles->led, LV_STATE_DEFAULT, LV_DPX(15));
16a9e: 6824 ldr r4, [r4, #0]
16aa0: 346c adds r4, #108 ; 0x6c
16aa2: 2000 movs r0, #0
16aa4: 4b26 ldr r3, [pc, #152] ; (16b40 <led_init+0xfc>)
16aa6: 4798 blx r3
16aa8: ebc0 1000 rsb r0, r0, r0, lsl #4
16aac: 3050 adds r0, #80 ; 0x50
16aae: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16ab2: da1c bge.n 16aee <led_init+0xaa>
16ab4: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar)
16ab6: 2150 movs r1, #80 ; 0x50
16ab8: 4620 mov r0, r4
16aba: 4b1f ldr r3, [pc, #124] ; (16b38 <led_init+0xf4>)
16abc: 4798 blx r3
lv_style_set_shadow_color(&styles->led, LV_STATE_DEFAULT, theme.color_primary);
16abe: 4c1a ldr r4, [pc, #104] ; (16b28 <led_init+0xe4>)
16ac0: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar)
16ac2: 89a2 ldrh r2, [r4, #12]
16ac4: 2159 movs r1, #89 ; 0x59
16ac6: 306c adds r0, #108 ; 0x6c
16ac8: 4b1a ldr r3, [pc, #104] ; (16b34 <led_init+0xf0>)
16aca: 4798 blx r3
lv_style_set_shadow_spread(&styles->led, LV_STATE_DEFAULT, LV_DPX(5));
16acc: 6824 ldr r4, [r4, #0]
16ace: 346c adds r4, #108 ; 0x6c
16ad0: 2000 movs r0, #0
16ad2: 4b1b ldr r3, [pc, #108] ; (16b40 <led_init+0xfc>)
16ad4: 4798 blx r3
16ad6: eb00 0080 add.w r0, r0, r0, lsl #2
16ada: 3050 adds r0, #80 ; 0x50
16adc: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16ae0: da13 bge.n 16b0a <led_init+0xc6>
16ae2: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar)
16ae4: 2153 movs r1, #83 ; 0x53
16ae6: 4620 mov r0, r4
16ae8: 4b13 ldr r3, [pc, #76] ; (16b38 <led_init+0xf4>)
16aea: 4798 blx r3
16aec: bdf8 pop {r3, r4, r5, r6, r7, pc}
lv_style_set_shadow_width(&styles->led, LV_STATE_DEFAULT, LV_DPX(15));
16aee: 2000 movs r0, #0
16af0: 4b13 ldr r3, [pc, #76] ; (16b40 <led_init+0xfc>)
16af2: 4798 blx r3
16af4: ebc0 1000 rsb r0, r0, r0, lsl #4
16af8: 3050 adds r0, #80 ; 0x50
16afa: 4b12 ldr r3, [pc, #72] ; (16b44 <led_init+0x100>)
16afc: fb83 2300 smull r2, r3, r3, r0
16b00: 17c2 asrs r2, r0, #31
16b02: ebc2 12a3 rsb r2, r2, r3, asr #6
16b06: b212 sxth r2, r2
16b08: e7d5 b.n 16ab6 <led_init+0x72>
lv_style_set_shadow_spread(&styles->led, LV_STATE_DEFAULT, LV_DPX(5));
16b0a: 2000 movs r0, #0
16b0c: 4b0c ldr r3, [pc, #48] ; (16b40 <led_init+0xfc>)
16b0e: 4798 blx r3
16b10: eb00 0080 add.w r0, r0, r0, lsl #2
16b14: 3050 adds r0, #80 ; 0x50
16b16: 4b0b ldr r3, [pc, #44] ; (16b44 <led_init+0x100>)
16b18: fb83 2300 smull r2, r3, r3, r0
16b1c: 17c2 asrs r2, r0, #31
16b1e: ebc2 12a3 rsb r2, r2, r3, asr #6
16b22: b212 sxth r2, r2
16b24: e7de b.n 16ae4 <led_init+0xa0>
16b26: bf00 nop
16b28: 20006bd8 .word 0x20006bd8
16b2c: 00014a61 .word 0x00014a61
16b30: 00006b69 .word 0x00006b69
16b34: 00006a25 .word 0x00006a25
16b38: 000068e1 .word 0x000068e1
16b3c: 00011ba7 .word 0x00011ba7
16b40: 00010f3d .word 0x00010f3d
16b44: 66666667 .word 0x66666667
00016b48 <lv_theme_material_init>:
{
16b48: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
16b4c: 4680 mov r8, r0
16b4e: 460f mov r7, r1
16b50: 4615 mov r5, r2
16b52: 461e mov r6, r3
if(!inited) {
16b54: 4bb2 ldr r3, [pc, #712] ; (16e20 <lv_theme_material_init+0x2d8>)
16b56: 791b ldrb r3, [r3, #4]
16b58: 2b00 cmp r3, #0
16b5a: f001 8369 beq.w 18230 <lv_theme_material_init+0x16e8>
theme.color_primary = color_primary;
16b5e: 4cb0 ldr r4, [pc, #704] ; (16e20 <lv_theme_material_init+0x2d8>)
16b60: f8a4 800c strh.w r8, [r4, #12]
theme.color_secondary = color_secondary;
16b64: 81e7 strh r7, [r4, #14]
theme.font_small = font_small;
16b66: 6126 str r6, [r4, #16]
theme.font_normal = font_normal;
16b68: 9b06 ldr r3, [sp, #24]
16b6a: 6163 str r3, [r4, #20]
theme.font_subtitle = font_subtitle;
16b6c: 9b07 ldr r3, [sp, #28]
16b6e: 61a3 str r3, [r4, #24]
theme.font_title = font_title;
16b70: 9b08 ldr r3, [sp, #32]
16b72: 61e3 str r3, [r4, #28]
theme.flags = flags;
16b74: 6225 str r5, [r4, #32]
basic_init();
16b76: 4bab ldr r3, [pc, #684] ; (16e24 <lv_theme_material_init+0x2dc>)
16b78: 4798 blx r3
bar_init();
16b7a: 4bab ldr r3, [pc, #684] ; (16e28 <lv_theme_material_init+0x2e0>)
16b7c: 4798 blx r3
led_init();
16b7e: 4bab ldr r3, [pc, #684] ; (16e2c <lv_theme_material_init+0x2e4>)
16b80: 4798 blx r3
slider_init();
16b82: 4bab ldr r3, [pc, #684] ; (16e30 <lv_theme_material_init+0x2e8>)
16b84: 4798 blx r3
switch_init();
16b86: 4bab ldr r3, [pc, #684] ; (16e34 <lv_theme_material_init+0x2ec>)
16b88: 4798 blx r3
linemeter_init();
16b8a: 4bab ldr r3, [pc, #684] ; (16e38 <lv_theme_material_init+0x2f0>)
16b8c: 4798 blx r3
gauge_init();
16b8e: 4bab ldr r3, [pc, #684] ; (16e3c <lv_theme_material_init+0x2f4>)
16b90: 4798 blx r3
arc_init();
16b92: 4bab ldr r3, [pc, #684] ; (16e40 <lv_theme_material_init+0x2f8>)
16b94: 4798 blx r3
style_init_reset(&styles->chart_bg);
16b96: 6820 ldr r0, [r4, #0]
16b98: 3040 adds r0, #64 ; 0x40
16b9a: 4baa ldr r3, [pc, #680] ; (16e44 <lv_theme_material_init+0x2fc>)
16b9c: 4798 blx r3
lv_style_set_text_color(&styles->chart_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd));
16b9e: 6820 ldr r0, [r4, #0]
16ba0: 3040 adds r0, #64 ; 0x40
16ba2: 6a23 ldr r3, [r4, #32]
16ba4: f013 0f02 tst.w r3, #2
16ba8: f041 834b bne.w 18242 <lv_theme_material_init+0x16fa>
16bac: 2314 movs r3, #20
16bae: 212b movs r1, #43 ; 0x2b
16bb0: 2417 movs r4, #23
16bb2: f04f 0200 mov.w r2, #0
16bb6: f364 0204 bfi r2, r4, #0, #5
16bba: f361 124a bfi r2, r1, #5, #6
16bbe: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
16bc2: f248 0189 movw r1, #32905 ; 0x8089
16bc6: 4ba0 ldr r3, [pc, #640] ; (16e48 <lv_theme_material_init+0x300>)
16bc8: 4798 blx r3
style_init_reset(&styles->chart_series_bg);
16bca: 4c95 ldr r4, [pc, #596] ; (16e20 <lv_theme_material_init+0x2d8>)
16bcc: 6820 ldr r0, [r4, #0]
16bce: 3044 adds r0, #68 ; 0x44
16bd0: 4b9c ldr r3, [pc, #624] ; (16e44 <lv_theme_material_init+0x2fc>)
16bd2: 4798 blx r3
lv_style_set_line_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(1));
16bd4: 6824 ldr r4, [r4, #0]
16bd6: 3444 adds r4, #68 ; 0x44
16bd8: 2000 movs r0, #0
16bda: 4b9c ldr r3, [pc, #624] ; (16e4c <lv_theme_material_init+0x304>)
16bdc: 4798 blx r3
16bde: 3050 adds r0, #80 ; 0x50
16be0: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16be4: f281 8332 bge.w 1824c <lv_theme_material_init+0x1704>
16be8: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar)
16bea: 2190 movs r1, #144 ; 0x90
16bec: 4620 mov r0, r4
16bee: 4b98 ldr r3, [pc, #608] ; (16e50 <lv_theme_material_init+0x308>)
16bf0: 4798 blx r3
lv_style_set_line_dash_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10));
16bf2: 4b8b ldr r3, [pc, #556] ; (16e20 <lv_theme_material_init+0x2d8>)
16bf4: 681c ldr r4, [r3, #0]
16bf6: 3444 adds r4, #68 ; 0x44
16bf8: 2000 movs r0, #0
16bfa: 4b94 ldr r3, [pc, #592] ; (16e4c <lv_theme_material_init+0x304>)
16bfc: 4798 blx r3
16bfe: eb00 0080 add.w r0, r0, r0, lsl #2
16c02: 0040 lsls r0, r0, #1
16c04: 3050 adds r0, #80 ; 0x50
16c06: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16c0a: f281 832c bge.w 18266 <lv_theme_material_init+0x171e>
16c0e: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_DASH_WIDTH, line_dash_width, lv_style_int_t, _int, scalar)
16c10: 2192 movs r1, #146 ; 0x92
16c12: 4620 mov r0, r4
16c14: 4b8e ldr r3, [pc, #568] ; (16e50 <lv_theme_material_init+0x308>)
16c16: 4798 blx r3
lv_style_set_line_dash_gap(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10));
16c18: 4b81 ldr r3, [pc, #516] ; (16e20 <lv_theme_material_init+0x2d8>)
16c1a: 681c ldr r4, [r3, #0]
16c1c: 3444 adds r4, #68 ; 0x44
16c1e: 2000 movs r0, #0
16c20: 4b8a ldr r3, [pc, #552] ; (16e4c <lv_theme_material_init+0x304>)
16c22: 4798 blx r3
16c24: eb00 0080 add.w r0, r0, r0, lsl #2
16c28: 0040 lsls r0, r0, #1
16c2a: 3050 adds r0, #80 ; 0x50
16c2c: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16c30: f281 8329 bge.w 18286 <lv_theme_material_init+0x173e>
16c34: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_DASH_GAP, line_dash_gap, lv_style_int_t, _int, scalar)
16c36: 2193 movs r1, #147 ; 0x93
16c38: 4620 mov r0, r4
16c3a: 4b85 ldr r3, [pc, #532] ; (16e50 <lv_theme_material_init+0x308>)
16c3c: 4798 blx r3
lv_style_set_line_color(&styles->chart_series_bg, LV_STATE_DEFAULT, COLOR_BG_BORDER);
16c3e: 4b78 ldr r3, [pc, #480] ; (16e20 <lv_theme_material_init+0x2d8>)
16c40: 6818 ldr r0, [r3, #0]
16c42: 6a1b ldr r3, [r3, #32]
16c44: f013 0302 ands.w r3, r3, #2
16c48: bf14 ite ne
16c4a: 211a movne r1, #26
16c4c: 2110 moveq r1, #16
16c4e: 2b00 cmp r3, #0
16c50: bf15 itete ne
16c52: 2437 movne r4, #55 ; 0x37
16c54: 2422 moveq r4, #34 ; 0x22
16c56: 231c movne r3, #28
16c58: 2312 moveq r3, #18
16c5a: f04f 0200 mov.w r2, #0
16c5e: f363 0204 bfi r2, r3, #0, #5
16c62: f364 124a bfi r2, r4, #5, #6
16c66: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar)
16c6a: 2199 movs r1, #153 ; 0x99
16c6c: 3044 adds r0, #68 ; 0x44
16c6e: 4b76 ldr r3, [pc, #472] ; (16e48 <lv_theme_material_init+0x300>)
16c70: 4798 blx r3
style_init_reset(&styles->chart_series);
16c72: 4c6b ldr r4, [pc, #428] ; (16e20 <lv_theme_material_init+0x2d8>)
16c74: 6820 ldr r0, [r4, #0]
16c76: 3048 adds r0, #72 ; 0x48
16c78: 4b72 ldr r3, [pc, #456] ; (16e44 <lv_theme_material_init+0x2fc>)
16c7a: 4798 blx r3
lv_style_set_line_width(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(3));
16c7c: 6824 ldr r4, [r4, #0]
16c7e: 3448 adds r4, #72 ; 0x48
16c80: 2000 movs r0, #0
16c82: 4b72 ldr r3, [pc, #456] ; (16e4c <lv_theme_material_init+0x304>)
16c84: 4798 blx r3
16c86: eb00 0040 add.w r0, r0, r0, lsl #1
16c8a: 3050 adds r0, #80 ; 0x50
16c8c: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16c90: f281 8309 bge.w 182a6 <lv_theme_material_init+0x175e>
16c94: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar)
16c96: 2190 movs r1, #144 ; 0x90
16c98: 4620 mov r0, r4
16c9a: 4b6d ldr r3, [pc, #436] ; (16e50 <lv_theme_material_init+0x308>)
16c9c: 4798 blx r3
lv_style_set_size(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(4));
16c9e: 4b60 ldr r3, [pc, #384] ; (16e20 <lv_theme_material_init+0x2d8>)
16ca0: 681c ldr r4, [r3, #0]
16ca2: 3448 adds r4, #72 ; 0x48
16ca4: 2000 movs r0, #0
16ca6: 4b69 ldr r3, [pc, #420] ; (16e4c <lv_theme_material_init+0x304>)
16ca8: 4798 blx r3
16caa: 3014 adds r0, #20
16cac: 0080 lsls r0, r0, #2
16cae: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16cb2: f281 8307 bge.w 182c4 <lv_theme_material_init+0x177c>
16cb6: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar)
16cb8: 2103 movs r1, #3
16cba: 4620 mov r0, r4
16cbc: 4b64 ldr r3, [pc, #400] ; (16e50 <lv_theme_material_init+0x308>)
16cbe: 4798 blx r3
lv_style_set_pad_inner(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(2)); /*Space between columns*/
16cc0: 4b57 ldr r3, [pc, #348] ; (16e20 <lv_theme_material_init+0x2d8>)
16cc2: 681c ldr r4, [r3, #0]
16cc4: 3448 adds r4, #72 ; 0x48
16cc6: 2000 movs r0, #0
16cc8: 4b60 ldr r3, [pc, #384] ; (16e4c <lv_theme_material_init+0x304>)
16cca: 4798 blx r3
16ccc: 3028 adds r0, #40 ; 0x28
16cce: 0040 lsls r0, r0, #1
16cd0: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16cd4: f281 8304 bge.w 182e0 <lv_theme_material_init+0x1798>
16cd8: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar)
16cda: 2114 movs r1, #20
16cdc: 4620 mov r0, r4
16cde: 4b5c ldr r3, [pc, #368] ; (16e50 <lv_theme_material_init+0x308>)
16ce0: 4798 blx r3
lv_style_set_radius(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(1));
16ce2: 4b4f ldr r3, [pc, #316] ; (16e20 <lv_theme_material_init+0x2d8>)
16ce4: 681c ldr r4, [r3, #0]
16ce6: 3448 adds r4, #72 ; 0x48
16ce8: 2000 movs r0, #0
16cea: 4b58 ldr r3, [pc, #352] ; (16e4c <lv_theme_material_init+0x304>)
16cec: 4798 blx r3
16cee: 3050 adds r0, #80 ; 0x50
16cf0: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16cf4: f281 8302 bge.w 182fc <lv_theme_material_init+0x17b4>
16cf8: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
16cfa: 2101 movs r1, #1
16cfc: 4620 mov r0, r4
16cfe: 4b54 ldr r3, [pc, #336] ; (16e50 <lv_theme_material_init+0x308>)
16d00: 4798 blx r3
style_init_reset(&styles->calendar_header);
16d02: 4c47 ldr r4, [pc, #284] ; (16e20 <lv_theme_material_init+0x2d8>)
16d04: 6820 ldr r0, [r4, #0]
16d06: 3030 adds r0, #48 ; 0x30
16d08: 4b4e ldr r3, [pc, #312] ; (16e44 <lv_theme_material_init+0x2fc>)
16d0a: 4798 blx r3
lv_style_set_pad_top(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF);
16d0c: 6824 ldr r4, [r4, #0]
16d0e: 3430 adds r4, #48 ; 0x30
16d10: 2000 movs r0, #0
16d12: 4b50 ldr r3, [pc, #320] ; (16e54 <lv_theme_material_init+0x30c>)
16d14: 4798 blx r3
16d16: 2801 cmp r0, #1
16d18: f241 82fd bls.w 18316 <lv_theme_material_init+0x17ce>
16d1c: 2000 movs r0, #0
16d1e: 4b4b ldr r3, [pc, #300] ; (16e4c <lv_theme_material_init+0x304>)
16d20: 4798 blx r3
16d22: ebc0 1000 rsb r0, r0, r0, lsl #4
16d26: 0040 lsls r0, r0, #1
16d28: 3050 adds r0, #80 ; 0x50
16d2a: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16d2e: f281 830d bge.w 1834c <lv_theme_material_init+0x1804>
16d32: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
16d34: 2110 movs r1, #16
16d36: 4620 mov r0, r4
16d38: 4b45 ldr r3, [pc, #276] ; (16e50 <lv_theme_material_init+0x308>)
16d3a: 4798 blx r3
lv_style_set_pad_left(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF);
16d3c: 4b38 ldr r3, [pc, #224] ; (16e20 <lv_theme_material_init+0x2d8>)
16d3e: 681c ldr r4, [r3, #0]
16d40: 3430 adds r4, #48 ; 0x30
16d42: 2000 movs r0, #0
16d44: 4b43 ldr r3, [pc, #268] ; (16e54 <lv_theme_material_init+0x30c>)
16d46: 4798 blx r3
16d48: 2801 cmp r0, #1
16d4a: f241 830f bls.w 1836c <lv_theme_material_init+0x1824>
16d4e: 2000 movs r0, #0
16d50: 4b3e ldr r3, [pc, #248] ; (16e4c <lv_theme_material_init+0x304>)
16d52: 4798 blx r3
16d54: ebc0 1000 rsb r0, r0, r0, lsl #4
16d58: 0040 lsls r0, r0, #1
16d5a: 3050 adds r0, #80 ; 0x50
16d5c: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16d60: f281 8336 bge.w 183d0 <lv_theme_material_init+0x1888>
16d64: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
16d66: 2112 movs r1, #18
16d68: 4620 mov r0, r4
16d6a: 4b39 ldr r3, [pc, #228] ; (16e50 <lv_theme_material_init+0x308>)
16d6c: 4798 blx r3
lv_style_set_pad_right(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF);
16d6e: 4b2c ldr r3, [pc, #176] ; (16e20 <lv_theme_material_init+0x2d8>)
16d70: 681c ldr r4, [r3, #0]
16d72: 3430 adds r4, #48 ; 0x30
16d74: 2000 movs r0, #0
16d76: 4b37 ldr r3, [pc, #220] ; (16e54 <lv_theme_material_init+0x30c>)
16d78: 4798 blx r3
16d7a: 2801 cmp r0, #1
16d7c: f241 8338 bls.w 183f0 <lv_theme_material_init+0x18a8>
16d80: 2000 movs r0, #0
16d82: 4b32 ldr r3, [pc, #200] ; (16e4c <lv_theme_material_init+0x304>)
16d84: 4798 blx r3
16d86: ebc0 1000 rsb r0, r0, r0, lsl #4
16d8a: 0040 lsls r0, r0, #1
16d8c: 3050 adds r0, #80 ; 0x50
16d8e: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16d92: f281 8348 bge.w 18426 <lv_theme_material_init+0x18de>
16d96: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
16d98: 2113 movs r1, #19
16d9a: 4620 mov r0, r4
16d9c: 4b2c ldr r3, [pc, #176] ; (16e50 <lv_theme_material_init+0x308>)
16d9e: 4798 blx r3
lv_style_set_pad_bottom(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF);
16da0: 4b1f ldr r3, [pc, #124] ; (16e20 <lv_theme_material_init+0x2d8>)
16da2: 681c ldr r4, [r3, #0]
16da4: 3430 adds r4, #48 ; 0x30
16da6: 2000 movs r0, #0
16da8: 4b2a ldr r3, [pc, #168] ; (16e54 <lv_theme_material_init+0x30c>)
16daa: 4798 blx r3
16dac: 2801 cmp r0, #1
16dae: f241 834a bls.w 18446 <lv_theme_material_init+0x18fe>
16db2: 2000 movs r0, #0
16db4: 4b25 ldr r3, [pc, #148] ; (16e4c <lv_theme_material_init+0x304>)
16db6: 4798 blx r3
16db8: ebc0 1000 rsb r0, r0, r0, lsl #4
16dbc: 0040 lsls r0, r0, #1
16dbe: 3050 adds r0, #80 ; 0x50
16dc0: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16dc4: f281 835a bge.w 1847c <lv_theme_material_init+0x1934>
16dc8: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
16dca: 2111 movs r1, #17
16dcc: 4620 mov r0, r4
16dce: 4b20 ldr r3, [pc, #128] ; (16e50 <lv_theme_material_init+0x308>)
16dd0: 4798 blx r3
lv_style_set_text_color(&styles->calendar_header, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x888888) : LV_COLOR_WHITE);
16dd2: 4b13 ldr r3, [pc, #76] ; (16e20 <lv_theme_material_init+0x2d8>)
16dd4: 6818 ldr r0, [r3, #0]
16dd6: 6a1b ldr r3, [r3, #32]
16dd8: f013 0302 ands.w r3, r3, #2
16ddc: bf14 ite ne
16dde: 2122 movne r1, #34 ; 0x22
16de0: 213f moveq r1, #63 ; 0x3f
16de2: 2b00 cmp r3, #0
16de4: bf14 ite ne
16de6: 2311 movne r3, #17
16de8: 231f moveq r3, #31
16dea: f04f 0200 mov.w r2, #0
16dee: f363 0204 bfi r2, r3, #0, #5
16df2: f361 124a bfi r2, r1, #5, #6
16df6: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
16dfa: f249 0189 movw r1, #37001 ; 0x9089
16dfe: 3030 adds r0, #48 ; 0x30
16e00: 4b11 ldr r3, [pc, #68] ; (16e48 <lv_theme_material_init+0x300>)
16e02: 4798 blx r3
style_init_reset(&styles->calendar_daynames);
16e04: 4c06 ldr r4, [pc, #24] ; (16e20 <lv_theme_material_init+0x2d8>)
16e06: 6820 ldr r0, [r4, #0]
16e08: 3034 adds r0, #52 ; 0x34
16e0a: 4b0e ldr r3, [pc, #56] ; (16e44 <lv_theme_material_init+0x2fc>)
16e0c: 4798 blx r3
lv_style_set_text_color(&styles->calendar_daynames, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex3(0xeee));
16e0e: 6820 ldr r0, [r4, #0]
16e10: 3034 adds r0, #52 ; 0x34
16e12: 6a23 ldr r3, [r4, #32]
16e14: f013 0f02 tst.w r3, #2
16e18: f041 8340 bne.w 1849c <lv_theme_material_init+0x1954>
16e1c: e01c b.n 16e58 <lv_theme_material_init+0x310>
16e1e: bf00 nop
16e20: 20006bd8 .word 0x20006bd8
16e24: 00014a81 .word 0x00014a81
16e28: 00015cc9 .word 0x00015cc9
16e2c: 00016a45 .word 0x00016a45
16e30: 00015e31 .word 0x00015e31
16e34: 000160d5 .word 0x000160d5
16e38: 00016219 .word 0x00016219
16e3c: 00016455 .word 0x00016455
16e40: 00016935 .word 0x00016935
16e44: 00014a61 .word 0x00014a61
16e48: 00006a25 .word 0x00006a25
16e4c: 00010f3d .word 0x00010f3d
16e50: 000068e1 .word 0x000068e1
16e54: 00010f59 .word 0x00010f59
16e58: 231d movs r3, #29
16e5a: 213b movs r1, #59 ; 0x3b
16e5c: 461c mov r4, r3
16e5e: f04f 0200 mov.w r2, #0
16e62: f364 0204 bfi r2, r4, #0, #5
16e66: f361 124a bfi r2, r1, #5, #6
16e6a: f363 22cf bfi r2, r3, #11, #5
16e6e: f248 0189 movw r1, #32905 ; 0x8089
16e72: 4bb8 ldr r3, [pc, #736] ; (17154 <lv_theme_material_init+0x60c>)
16e74: 4798 blx r3
lv_style_set_pad_left(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF);
16e76: 4bb8 ldr r3, [pc, #736] ; (17158 <lv_theme_material_init+0x610>)
16e78: 681c ldr r4, [r3, #0]
16e7a: 3434 adds r4, #52 ; 0x34
16e7c: 2000 movs r0, #0
16e7e: 4bb7 ldr r3, [pc, #732] ; (1715c <lv_theme_material_init+0x614>)
16e80: 4798 blx r3
16e82: 2801 cmp r0, #1
16e84: f241 830f bls.w 184a6 <lv_theme_material_init+0x195e>
16e88: 2000 movs r0, #0
16e8a: 4bb5 ldr r3, [pc, #724] ; (17160 <lv_theme_material_init+0x618>)
16e8c: 4798 blx r3
16e8e: ebc0 1000 rsb r0, r0, r0, lsl #4
16e92: 0040 lsls r0, r0, #1
16e94: 3050 adds r0, #80 ; 0x50
16e96: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16e9a: f281 831f bge.w 184dc <lv_theme_material_init+0x1994>
16e9e: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
16ea0: 2112 movs r1, #18
16ea2: 4620 mov r0, r4
16ea4: 4baf ldr r3, [pc, #700] ; (17164 <lv_theme_material_init+0x61c>)
16ea6: 4798 blx r3
lv_style_set_pad_right(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF);
16ea8: 4bab ldr r3, [pc, #684] ; (17158 <lv_theme_material_init+0x610>)
16eaa: 681c ldr r4, [r3, #0]
16eac: 3434 adds r4, #52 ; 0x34
16eae: 2000 movs r0, #0
16eb0: 4baa ldr r3, [pc, #680] ; (1715c <lv_theme_material_init+0x614>)
16eb2: 4798 blx r3
16eb4: 2801 cmp r0, #1
16eb6: f241 8321 bls.w 184fc <lv_theme_material_init+0x19b4>
16eba: 2000 movs r0, #0
16ebc: 4ba8 ldr r3, [pc, #672] ; (17160 <lv_theme_material_init+0x618>)
16ebe: 4798 blx r3
16ec0: ebc0 1000 rsb r0, r0, r0, lsl #4
16ec4: 0040 lsls r0, r0, #1
16ec6: 3050 adds r0, #80 ; 0x50
16ec8: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16ecc: f281 8331 bge.w 18532 <lv_theme_material_init+0x19ea>
16ed0: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
16ed2: 2113 movs r1, #19
16ed4: 4620 mov r0, r4
16ed6: 4ba3 ldr r3, [pc, #652] ; (17164 <lv_theme_material_init+0x61c>)
16ed8: 4798 blx r3
lv_style_set_pad_bottom(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF);
16eda: 4b9f ldr r3, [pc, #636] ; (17158 <lv_theme_material_init+0x610>)
16edc: 681c ldr r4, [r3, #0]
16ede: 3434 adds r4, #52 ; 0x34
16ee0: 2000 movs r0, #0
16ee2: 4b9e ldr r3, [pc, #632] ; (1715c <lv_theme_material_init+0x614>)
16ee4: 4798 blx r3
16ee6: 2801 cmp r0, #1
16ee8: f241 8333 bls.w 18552 <lv_theme_material_init+0x1a0a>
16eec: 2000 movs r0, #0
16eee: 4b9c ldr r3, [pc, #624] ; (17160 <lv_theme_material_init+0x618>)
16ef0: 4798 blx r3
16ef2: ebc0 1000 rsb r0, r0, r0, lsl #4
16ef6: 0040 lsls r0, r0, #1
16ef8: 3050 adds r0, #80 ; 0x50
16efa: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16efe: f281 8343 bge.w 18588 <lv_theme_material_init+0x1a40>
16f02: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
16f04: 2111 movs r1, #17
16f06: 4620 mov r0, r4
16f08: 4b96 ldr r3, [pc, #600] ; (17164 <lv_theme_material_init+0x61c>)
16f0a: 4798 blx r3
style_init_reset(&styles->calendar_date_nums);
16f0c: 4c92 ldr r4, [pc, #584] ; (17158 <lv_theme_material_init+0x610>)
16f0e: 6820 ldr r0, [r4, #0]
16f10: 302c adds r0, #44 ; 0x2c
16f12: 4b95 ldr r3, [pc, #596] ; (17168 <lv_theme_material_init+0x620>)
16f14: 4798 blx r3
lv_style_set_radius(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(4));
16f16: 6824 ldr r4, [r4, #0]
16f18: 342c adds r4, #44 ; 0x2c
16f1a: 2000 movs r0, #0
16f1c: 4b90 ldr r3, [pc, #576] ; (17160 <lv_theme_material_init+0x618>)
16f1e: 4798 blx r3
16f20: 3014 adds r0, #20
16f22: 0080 lsls r0, r0, #2
16f24: f5b0 7fa0 cmp.w r0, #320 ; 0x140
16f28: f281 833e bge.w 185a8 <lv_theme_material_init+0x1a60>
16f2c: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
16f2e: 2101 movs r1, #1
16f30: 4620 mov r0, r4
16f32: 4b8c ldr r3, [pc, #560] ; (17164 <lv_theme_material_init+0x61c>)
16f34: 4798 blx r3
lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE);
16f36: 4b88 ldr r3, [pc, #544] ; (17158 <lv_theme_material_init+0x610>)
16f38: 6818 ldr r0, [r3, #0]
16f3a: 302c adds r0, #44 ; 0x2c
16f3c: 6a1b ldr r3, [r3, #32]
16f3e: f013 0f02 tst.w r3, #2
16f42: f041 833f bne.w 185c4 <lv_theme_material_init+0x1a7c>
16f46: 231f movs r3, #31
16f48: 213f movs r1, #63 ; 0x3f
16f4a: 461c mov r4, r3
16f4c: f04f 0200 mov.w r2, #0
16f50: f364 0204 bfi r2, r4, #0, #5
16f54: f361 124a bfi r2, r1, #5, #6
16f58: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
16f5c: f248 1189 movw r1, #33161 ; 0x8189
16f60: 4b7c ldr r3, [pc, #496] ; (17154 <lv_theme_material_init+0x60c>)
16f62: 4798 blx r3
lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? LV_OPA_20 : LV_OPA_40);
16f64: 4b7c ldr r3, [pc, #496] ; (17158 <lv_theme_material_init+0x610>)
16f66: 6818 ldr r0, [r3, #0]
16f68: 6a1b ldr r3, [r3, #32]
16f6a: f013 0f02 tst.w r3, #2
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
16f6e: bf14 ite ne
16f70: 2233 movne r2, #51 ; 0x33
16f72: 2266 moveq r2, #102 ; 0x66
16f74: f44f 7196 mov.w r1, #300 ; 0x12c
16f78: 302c adds r0, #44 ; 0x2c
16f7a: 4d7c ldr r5, [pc, #496] ; (1716c <lv_theme_material_init+0x624>)
16f7c: 47a8 blx r5
lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_PRESSED, LV_OPA_20);
16f7e: 4c76 ldr r4, [pc, #472] ; (17158 <lv_theme_material_init+0x610>)
16f80: 6820 ldr r0, [r4, #0]
16f82: 2233 movs r2, #51 ; 0x33
16f84: f241 012c movw r1, #4140 ; 0x102c
16f88: 302c adds r0, #44 ; 0x2c
16f8a: 47a8 blx r5
lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_FOCUSED, LV_OPA_COVER);
16f8c: 6820 ldr r0, [r4, #0]
16f8e: 22ff movs r2, #255 ; 0xff
16f90: f44f 710b mov.w r1, #556 ; 0x22c
16f94: 302c adds r0, #44 ; 0x2c
16f96: 47a8 blx r5
lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_FOCUSED, LV_COLOR_WHITE);
16f98: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
16f9a: 4b75 ldr r3, [pc, #468] ; (17170 <lv_theme_material_init+0x628>)
16f9c: 881a ldrh r2, [r3, #0]
16f9e: f248 2189 movw r1, #33417 ; 0x8289
16fa2: 302c adds r0, #44 ; 0x2c
16fa4: 4d6b ldr r5, [pc, #428] ; (17154 <lv_theme_material_init+0x60c>)
16fa6: 47a8 blx r5
lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_FOCUSED, theme.color_primary);
16fa8: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
16faa: 89a2 ldrh r2, [r4, #12]
16fac: f240 2129 movw r1, #553 ; 0x229
16fb0: 302c adds r0, #44 ; 0x2c
16fb2: 47a8 blx r5
lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x666666) : LV_COLOR_WHITE);
16fb4: 6820 ldr r0, [r4, #0]
16fb6: 6a23 ldr r3, [r4, #32]
16fb8: f013 0302 ands.w r3, r3, #2
16fbc: bf14 ite ne
16fbe: 2119 movne r1, #25
16fc0: 213f moveq r1, #63 ; 0x3f
16fc2: 2b00 cmp r3, #0
16fc4: bf14 ite ne
16fc6: 230c movne r3, #12
16fc8: 231f moveq r3, #31
16fca: f04f 0200 mov.w r2, #0
16fce: f363 0204 bfi r2, r3, #0, #5
16fd2: f361 124a bfi r2, r1, #5, #6
16fd6: f363 22cf bfi r2, r3, #11, #5
16fda: 2129 movs r1, #41 ; 0x29
16fdc: 302c adds r0, #44 ; 0x2c
16fde: 47a8 blx r5
lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_CHECKED, theme.color_primary);
16fe0: 6820 ldr r0, [r4, #0]
16fe2: 89a2 ldrh r2, [r4, #12]
16fe4: f240 1129 movw r1, #297 ; 0x129
16fe8: 302c adds r0, #44 ; 0x2c
16fea: 47a8 blx r5
lv_style_set_border_width(&styles->calendar_date_nums, LV_STATE_CHECKED, 2);
16fec: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar)
16fee: 2202 movs r2, #2
16ff0: f44f 7198 mov.w r1, #304 ; 0x130
16ff4: 302c adds r0, #44 ; 0x2c
16ff6: 4e5b ldr r6, [pc, #364] ; (17164 <lv_theme_material_init+0x61c>)
16ff8: 47b0 blx r6
lv_style_set_border_side(&styles->calendar_date_nums, LV_STATE_CHECKED, LV_BORDER_SIDE_LEFT);
16ffa: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar)
16ffc: 2204 movs r2, #4
16ffe: f240 1131 movw r1, #305 ; 0x131
17002: 302c adds r0, #44 ; 0x2c
17004: 47b0 blx r6
lv_style_set_border_color(&styles->calendar_date_nums, LV_STATE_CHECKED, theme.color_primary);
17006: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar)
17008: 89a2 ldrh r2, [r4, #12]
1700a: f240 1139 movw r1, #313 ; 0x139
1700e: 302c adds r0, #44 ; 0x2c
17010: 47a8 blx r5
lv_style_set_pad_inner(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(3));
17012: 6824 ldr r4, [r4, #0]
17014: 342c adds r4, #44 ; 0x2c
17016: 2000 movs r0, #0
17018: 4b51 ldr r3, [pc, #324] ; (17160 <lv_theme_material_init+0x618>)
1701a: 4798 blx r3
1701c: eb00 0040 add.w r0, r0, r0, lsl #1
17020: 3050 adds r0, #80 ; 0x50
17022: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17026: f281 82d2 bge.w 185ce <lv_theme_material_init+0x1a86>
1702a: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar)
1702c: 2114 movs r1, #20
1702e: 4620 mov r0, r4
17030: 4b4c ldr r3, [pc, #304] ; (17164 <lv_theme_material_init+0x61c>)
17032: 4798 blx r3
lv_style_set_pad_left(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF);
17034: 4b48 ldr r3, [pc, #288] ; (17158 <lv_theme_material_init+0x610>)
17036: 681c ldr r4, [r3, #0]
17038: 342c adds r4, #44 ; 0x2c
1703a: 2000 movs r0, #0
1703c: 4b47 ldr r3, [pc, #284] ; (1715c <lv_theme_material_init+0x614>)
1703e: 4798 blx r3
17040: 2801 cmp r0, #1
17042: f241 82d3 bls.w 185ec <lv_theme_material_init+0x1aa4>
17046: 2000 movs r0, #0
17048: 4b45 ldr r3, [pc, #276] ; (17160 <lv_theme_material_init+0x618>)
1704a: 4798 blx r3
1704c: ebc0 1000 rsb r0, r0, r0, lsl #4
17050: 0040 lsls r0, r0, #1
17052: 3050 adds r0, #80 ; 0x50
17054: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17058: f281 82e3 bge.w 18622 <lv_theme_material_init+0x1ada>
1705c: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
1705e: 2112 movs r1, #18
17060: 4620 mov r0, r4
17062: 4b40 ldr r3, [pc, #256] ; (17164 <lv_theme_material_init+0x61c>)
17064: 4798 blx r3
lv_style_set_pad_right(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF);
17066: 4b3c ldr r3, [pc, #240] ; (17158 <lv_theme_material_init+0x610>)
17068: 681c ldr r4, [r3, #0]
1706a: 342c adds r4, #44 ; 0x2c
1706c: 2000 movs r0, #0
1706e: 4b3b ldr r3, [pc, #236] ; (1715c <lv_theme_material_init+0x614>)
17070: 4798 blx r3
17072: 2801 cmp r0, #1
17074: f241 82e5 bls.w 18642 <lv_theme_material_init+0x1afa>
17078: 2000 movs r0, #0
1707a: 4b39 ldr r3, [pc, #228] ; (17160 <lv_theme_material_init+0x618>)
1707c: 4798 blx r3
1707e: ebc0 1000 rsb r0, r0, r0, lsl #4
17082: 0040 lsls r0, r0, #1
17084: 3050 adds r0, #80 ; 0x50
17086: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1708a: f281 82f5 bge.w 18678 <lv_theme_material_init+0x1b30>
1708e: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
17090: 2113 movs r1, #19
17092: 4620 mov r0, r4
17094: 4b33 ldr r3, [pc, #204] ; (17164 <lv_theme_material_init+0x61c>)
17096: 4798 blx r3
lv_style_set_pad_bottom(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF);
17098: 4b2f ldr r3, [pc, #188] ; (17158 <lv_theme_material_init+0x610>)
1709a: 681c ldr r4, [r3, #0]
1709c: 342c adds r4, #44 ; 0x2c
1709e: 2000 movs r0, #0
170a0: 4b2e ldr r3, [pc, #184] ; (1715c <lv_theme_material_init+0x614>)
170a2: 4798 blx r3
170a4: 2801 cmp r0, #1
170a6: f241 82f7 bls.w 18698 <lv_theme_material_init+0x1b50>
170aa: 2000 movs r0, #0
170ac: 4b2c ldr r3, [pc, #176] ; (17160 <lv_theme_material_init+0x618>)
170ae: 4798 blx r3
170b0: ebc0 1000 rsb r0, r0, r0, lsl #4
170b4: 0040 lsls r0, r0, #1
170b6: 3050 adds r0, #80 ; 0x50
170b8: f5b0 7fa0 cmp.w r0, #320 ; 0x140
170bc: f281 8307 bge.w 186ce <lv_theme_material_init+0x1b86>
170c0: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
170c2: 2111 movs r1, #17
170c4: 4620 mov r0, r4
170c6: 4b27 ldr r3, [pc, #156] ; (17164 <lv_theme_material_init+0x61c>)
170c8: 4798 blx r3
style_init_reset(&styles->cpicker_bg);
170ca: 4c23 ldr r4, [pc, #140] ; (17158 <lv_theme_material_init+0x610>)
170cc: 6820 ldr r0, [r4, #0]
170ce: 3038 adds r0, #56 ; 0x38
170d0: 4b25 ldr r3, [pc, #148] ; (17168 <lv_theme_material_init+0x620>)
170d2: 4798 blx r3
lv_style_set_scale_width(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(30));
170d4: 6824 ldr r4, [r4, #0]
170d6: 3438 adds r4, #56 ; 0x38
170d8: 2000 movs r0, #0
170da: 4b21 ldr r3, [pc, #132] ; (17160 <lv_theme_material_init+0x618>)
170dc: 4798 blx r3
170de: ebc0 1000 rsb r0, r0, r0, lsl #4
170e2: 0040 lsls r0, r0, #1
170e4: 3050 adds r0, #80 ; 0x50
170e6: f5b0 7fa0 cmp.w r0, #320 ; 0x140
170ea: f281 8305 bge.w 186f8 <lv_theme_material_init+0x1bb0>
170ee: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar)
170f0: 21c0 movs r1, #192 ; 0xc0
170f2: 4620 mov r0, r4
170f4: 4b1b ldr r3, [pc, #108] ; (17164 <lv_theme_material_init+0x61c>)
170f6: 4798 blx r3
lv_style_set_bg_opa(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_OPA_COVER);
170f8: 4c17 ldr r4, [pc, #92] ; (17158 <lv_theme_material_init+0x610>)
170fa: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
170fc: 22ff movs r2, #255 ; 0xff
170fe: 212c movs r1, #44 ; 0x2c
17100: 3038 adds r0, #56 ; 0x38
17102: 4b1a ldr r3, [pc, #104] ; (1716c <lv_theme_material_init+0x624>)
17104: 4798 blx r3
lv_style_set_bg_color(&styles->cpicker_bg, LV_STATE_DEFAULT, COLOR_SCR);
17106: 6820 ldr r0, [r4, #0]
17108: 6a23 ldr r3, [r4, #32]
1710a: f013 0302 ands.w r3, r3, #2
1710e: bf14 ite ne
17110: 211d movne r1, #29
17112: 2108 moveq r1, #8
17114: 2b00 cmp r3, #0
17116: bf15 itete ne
17118: 243b movne r4, #59 ; 0x3b
1711a: 2412 moveq r4, #18
1711c: 231e movne r3, #30
1711e: 230b moveq r3, #11
17120: f04f 0200 mov.w r2, #0
17124: f363 0204 bfi r2, r3, #0, #5
17128: f364 124a bfi r2, r4, #5, #6
1712c: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
17130: 2129 movs r1, #41 ; 0x29
17132: 3038 adds r0, #56 ; 0x38
17134: 4b07 ldr r3, [pc, #28] ; (17154 <lv_theme_material_init+0x60c>)
17136: 4798 blx r3
lv_style_set_pad_inner(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(20));
17138: 4b07 ldr r3, [pc, #28] ; (17158 <lv_theme_material_init+0x610>)
1713a: 681c ldr r4, [r3, #0]
1713c: 3438 adds r4, #56 ; 0x38
1713e: 2000 movs r0, #0
17140: 4b07 ldr r3, [pc, #28] ; (17160 <lv_theme_material_init+0x618>)
17142: 4798 blx r3
17144: eb00 0080 add.w r0, r0, r0, lsl #2
17148: 0080 lsls r0, r0, #2
1714a: 3050 adds r0, #80 ; 0x50
1714c: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17150: e010 b.n 17174 <lv_theme_material_init+0x62c>
17152: bf00 nop
17154: 00006a25 .word 0x00006a25
17158: 20006bd8 .word 0x20006bd8
1715c: 00010f59 .word 0x00010f59
17160: 00010f3d .word 0x00010f3d
17164: 000068e1 .word 0x000068e1
17168: 00014a61 .word 0x00014a61
1716c: 00006b69 .word 0x00006b69
17170: 00029584 .word 0x00029584
17174: f281 82d0 bge.w 18718 <lv_theme_material_init+0x1bd0>
17178: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar)
1717a: 2114 movs r1, #20
1717c: 4620 mov r0, r4
1717e: 4eb6 ldr r6, [pc, #728] ; (17458 <lv_theme_material_init+0x910>)
17180: 47b0 blx r6
lv_style_set_radius(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
17182: 4cb6 ldr r4, [pc, #728] ; (1745c <lv_theme_material_init+0x914>)
17184: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
17186: f647 72ff movw r2, #32767 ; 0x7fff
1718a: 2101 movs r1, #1
1718c: 3038 adds r0, #56 ; 0x38
1718e: 47b0 blx r6
style_init_reset(&styles->cpicker_indic);
17190: 6820 ldr r0, [r4, #0]
17192: 303c adds r0, #60 ; 0x3c
17194: 4bb2 ldr r3, [pc, #712] ; (17460 <lv_theme_material_init+0x918>)
17196: 4798 blx r3
lv_style_set_radius(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
17198: 6820 ldr r0, [r4, #0]
1719a: f647 72ff movw r2, #32767 ; 0x7fff
1719e: 2101 movs r1, #1
171a0: 303c adds r0, #60 ; 0x3c
171a2: 47b0 blx r6
lv_style_set_bg_color(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_COLOR_WHITE);
171a4: 6820 ldr r0, [r4, #0]
171a6: 4faf ldr r7, [pc, #700] ; (17464 <lv_theme_material_init+0x91c>)
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
171a8: 883a ldrh r2, [r7, #0]
171aa: 2129 movs r1, #41 ; 0x29
171ac: 303c adds r0, #60 ; 0x3c
171ae: 4dae ldr r5, [pc, #696] ; (17468 <lv_theme_material_init+0x920>)
171b0: 47a8 blx r5
lv_style_set_bg_opa(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_OPA_COVER);
171b2: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
171b4: 22ff movs r2, #255 ; 0xff
171b6: 212c movs r1, #44 ; 0x2c
171b8: 303c adds r0, #60 ; 0x3c
171ba: 4bac ldr r3, [pc, #688] ; (1746c <lv_theme_material_init+0x924>)
171bc: 4798 blx r3
lv_style_set_border_width(&styles->cpicker_indic, LV_STATE_DEFAULT, 2);
171be: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar)
171c0: 2202 movs r2, #2
171c2: 2130 movs r1, #48 ; 0x30
171c4: 303c adds r0, #60 ; 0x3c
171c6: 47b0 blx r6
lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_COLOR_GRAY);
171c8: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar)
171ca: 88ba ldrh r2, [r7, #4]
171cc: 2139 movs r1, #57 ; 0x39
171ce: 303c adds r0, #60 ; 0x3c
171d0: 47a8 blx r5
lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_FOCUSED, theme.color_primary);
171d2: 6820 ldr r0, [r4, #0]
171d4: 89a2 ldrh r2, [r4, #12]
171d6: f240 2139 movw r1, #569 ; 0x239
171da: 303c adds r0, #60 ; 0x3c
171dc: 47a8 blx r5
lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_EDITED, theme.color_secondary);
171de: 6820 ldr r0, [r4, #0]
171e0: 89e2 ldrh r2, [r4, #14]
171e2: f240 4139 movw r1, #1081 ; 0x439
171e6: 303c adds r0, #60 ; 0x3c
171e8: 47a8 blx r5
lv_style_set_pad_left(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13));
171ea: 6824 ldr r4, [r4, #0]
171ec: 343c adds r4, #60 ; 0x3c
171ee: 2000 movs r0, #0
171f0: 4b9f ldr r3, [pc, #636] ; (17470 <lv_theme_material_init+0x928>)
171f2: 4798 blx r3
171f4: eb00 0340 add.w r3, r0, r0, lsl #1
171f8: eb00 0083 add.w r0, r0, r3, lsl #2
171fc: 3050 adds r0, #80 ; 0x50
171fe: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17202: f281 8299 bge.w 18738 <lv_theme_material_init+0x1bf0>
17206: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
17208: 2112 movs r1, #18
1720a: 4620 mov r0, r4
1720c: 4b92 ldr r3, [pc, #584] ; (17458 <lv_theme_material_init+0x910>)
1720e: 4798 blx r3
lv_style_set_pad_right(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13));
17210: 4b92 ldr r3, [pc, #584] ; (1745c <lv_theme_material_init+0x914>)
17212: 681c ldr r4, [r3, #0]
17214: 343c adds r4, #60 ; 0x3c
17216: 2000 movs r0, #0
17218: 4b95 ldr r3, [pc, #596] ; (17470 <lv_theme_material_init+0x928>)
1721a: 4798 blx r3
1721c: eb00 0340 add.w r3, r0, r0, lsl #1
17220: eb00 0083 add.w r0, r0, r3, lsl #2
17224: 3050 adds r0, #80 ; 0x50
17226: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1722a: f281 8296 bge.w 1875a <lv_theme_material_init+0x1c12>
1722e: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
17230: 2113 movs r1, #19
17232: 4620 mov r0, r4
17234: 4b88 ldr r3, [pc, #544] ; (17458 <lv_theme_material_init+0x910>)
17236: 4798 blx r3
lv_style_set_pad_top(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13));
17238: 4b88 ldr r3, [pc, #544] ; (1745c <lv_theme_material_init+0x914>)
1723a: 681c ldr r4, [r3, #0]
1723c: 343c adds r4, #60 ; 0x3c
1723e: 2000 movs r0, #0
17240: 4b8b ldr r3, [pc, #556] ; (17470 <lv_theme_material_init+0x928>)
17242: 4798 blx r3
17244: eb00 0340 add.w r3, r0, r0, lsl #1
17248: eb00 0083 add.w r0, r0, r3, lsl #2
1724c: 3050 adds r0, #80 ; 0x50
1724e: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17252: f281 8293 bge.w 1877c <lv_theme_material_init+0x1c34>
17256: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
17258: 2110 movs r1, #16
1725a: 4620 mov r0, r4
1725c: 4b7e ldr r3, [pc, #504] ; (17458 <lv_theme_material_init+0x910>)
1725e: 4798 blx r3
lv_style_set_pad_bottom(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13));
17260: 4b7e ldr r3, [pc, #504] ; (1745c <lv_theme_material_init+0x914>)
17262: 681c ldr r4, [r3, #0]
17264: 343c adds r4, #60 ; 0x3c
17266: 2000 movs r0, #0
17268: 4b81 ldr r3, [pc, #516] ; (17470 <lv_theme_material_init+0x928>)
1726a: 4798 blx r3
1726c: eb00 0340 add.w r3, r0, r0, lsl #1
17270: eb00 0083 add.w r0, r0, r3, lsl #2
17274: 3050 adds r0, #80 ; 0x50
17276: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1727a: f281 8290 bge.w 1879e <lv_theme_material_init+0x1c56>
1727e: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
17280: 2111 movs r1, #17
17282: 4620 mov r0, r4
17284: 4b74 ldr r3, [pc, #464] ; (17458 <lv_theme_material_init+0x910>)
17286: 4798 blx r3
style_init_reset(&styles->cb_bg);
17288: 4c74 ldr r4, [pc, #464] ; (1745c <lv_theme_material_init+0x914>)
1728a: 6820 ldr r0, [r4, #0]
1728c: 304c adds r0, #76 ; 0x4c
1728e: 4b74 ldr r3, [pc, #464] ; (17460 <lv_theme_material_init+0x918>)
17290: 4798 blx r3
lv_style_set_radius(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(4));
17292: 6824 ldr r4, [r4, #0]
17294: 344c adds r4, #76 ; 0x4c
17296: 2000 movs r0, #0
17298: 4b75 ldr r3, [pc, #468] ; (17470 <lv_theme_material_init+0x928>)
1729a: 4798 blx r3
1729c: 3014 adds r0, #20
1729e: 0080 lsls r0, r0, #2
172a0: f5b0 7fa0 cmp.w r0, #320 ; 0x140
172a4: f281 828c bge.w 187c0 <lv_theme_material_init+0x1c78>
172a8: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
172aa: 2101 movs r1, #1
172ac: 4620 mov r0, r4
172ae: 4b6a ldr r3, [pc, #424] ; (17458 <lv_theme_material_init+0x910>)
172b0: 4798 blx r3
lv_style_set_pad_inner(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10));
172b2: 4b6a ldr r3, [pc, #424] ; (1745c <lv_theme_material_init+0x914>)
172b4: 681c ldr r4, [r3, #0]
172b6: 344c adds r4, #76 ; 0x4c
172b8: 2000 movs r0, #0
172ba: 4b6d ldr r3, [pc, #436] ; (17470 <lv_theme_material_init+0x928>)
172bc: 4798 blx r3
172be: eb00 0080 add.w r0, r0, r0, lsl #2
172c2: 0040 lsls r0, r0, #1
172c4: 3050 adds r0, #80 ; 0x50
172c6: f5b0 7fa0 cmp.w r0, #320 ; 0x140
172ca: f281 8287 bge.w 187dc <lv_theme_material_init+0x1c94>
172ce: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar)
172d0: 2114 movs r1, #20
172d2: 4620 mov r0, r4
172d4: 4b60 ldr r3, [pc, #384] ; (17458 <lv_theme_material_init+0x910>)
172d6: 4798 blx r3
lv_style_set_outline_color(&styles->cb_bg, LV_STATE_DEFAULT, theme.color_primary);
172d8: 4c60 ldr r4, [pc, #384] ; (1745c <lv_theme_material_init+0x914>)
172da: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar)
172dc: 89a2 ldrh r2, [r4, #12]
172de: 2149 movs r1, #73 ; 0x49
172e0: 304c adds r0, #76 ; 0x4c
172e2: 4b61 ldr r3, [pc, #388] ; (17468 <lv_theme_material_init+0x920>)
172e4: 4798 blx r3
lv_style_set_outline_opa(&styles->cb_bg, LV_STATE_DEFAULT, LV_OPA_TRANSP);
172e6: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar)
172e8: 2200 movs r2, #0
172ea: 214c movs r1, #76 ; 0x4c
172ec: 4408 add r0, r1
172ee: 4d5f ldr r5, [pc, #380] ; (1746c <lv_theme_material_init+0x924>)
172f0: 47a8 blx r5
lv_style_set_outline_opa(&styles->cb_bg, LV_STATE_FOCUSED, LV_OPA_50);
172f2: 6820 ldr r0, [r4, #0]
172f4: 227f movs r2, #127 ; 0x7f
172f6: f44f 7113 mov.w r1, #588 ; 0x24c
172fa: 304c adds r0, #76 ; 0x4c
172fc: 47a8 blx r5
lv_style_set_outline_width(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(3));
172fe: 6824 ldr r4, [r4, #0]
17300: 344c adds r4, #76 ; 0x4c
17302: 2000 movs r0, #0
17304: 4b5a ldr r3, [pc, #360] ; (17470 <lv_theme_material_init+0x928>)
17306: 4798 blx r3
17308: eb00 0040 add.w r0, r0, r0, lsl #1
1730c: 3050 adds r0, #80 ; 0x50
1730e: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17312: f281 8273 bge.w 187fc <lv_theme_material_init+0x1cb4>
17316: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar)
17318: 2140 movs r1, #64 ; 0x40
1731a: 4620 mov r0, r4
1731c: 4b4e ldr r3, [pc, #312] ; (17458 <lv_theme_material_init+0x910>)
1731e: 4798 blx r3
lv_style_set_outline_pad(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10));
17320: 4b4e ldr r3, [pc, #312] ; (1745c <lv_theme_material_init+0x914>)
17322: 681c ldr r4, [r3, #0]
17324: 344c adds r4, #76 ; 0x4c
17326: 2000 movs r0, #0
17328: 4b51 ldr r3, [pc, #324] ; (17470 <lv_theme_material_init+0x928>)
1732a: 4798 blx r3
1732c: eb00 0080 add.w r0, r0, r0, lsl #2
17330: 0040 lsls r0, r0, #1
17332: 3050 adds r0, #80 ; 0x50
17334: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17338: f281 826f bge.w 1881a <lv_theme_material_init+0x1cd2>
1733c: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar)
1733e: 2141 movs r1, #65 ; 0x41
17340: 4620 mov r0, r4
17342: 4d45 ldr r5, [pc, #276] ; (17458 <lv_theme_material_init+0x910>)
17344: 47a8 blx r5
lv_style_set_transition_time(&styles->cb_bg, LV_STATE_DEFAULT, TRANSITION_TIME);
17346: 4c45 ldr r4, [pc, #276] ; (1745c <lv_theme_material_init+0x914>)
17348: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar)
1734a: 2296 movs r2, #150 ; 0x96
1734c: 21b0 movs r1, #176 ; 0xb0
1734e: 304c adds r0, #76 ; 0x4c
17350: 47a8 blx r5
lv_style_set_transition_prop_6(&styles->cb_bg, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA);
17352: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar)
17354: 224c movs r2, #76 ; 0x4c
17356: 21b7 movs r1, #183 ; 0xb7
17358: 4410 add r0, r2
1735a: 47a8 blx r5
style_init_reset(&styles->cb_bullet);
1735c: 6820 ldr r0, [r4, #0]
1735e: 3050 adds r0, #80 ; 0x50
17360: 4b3f ldr r3, [pc, #252] ; (17460 <lv_theme_material_init+0x918>)
17362: 4798 blx r3
lv_style_set_outline_opa(&styles->cb_bullet, LV_STATE_FOCUSED, LV_OPA_TRANSP);
17364: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar)
17366: 2200 movs r2, #0
17368: f44f 7113 mov.w r1, #588 ; 0x24c
1736c: 3050 adds r0, #80 ; 0x50
1736e: 4b3f ldr r3, [pc, #252] ; (1746c <lv_theme_material_init+0x924>)
17370: 4798 blx r3
lv_style_set_radius(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(4));
17372: 6824 ldr r4, [r4, #0]
17374: 3450 adds r4, #80 ; 0x50
17376: 2000 movs r0, #0
17378: 4b3d ldr r3, [pc, #244] ; (17470 <lv_theme_material_init+0x928>)
1737a: 4798 blx r3
1737c: 3014 adds r0, #20
1737e: 0080 lsls r0, r0, #2
17380: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17384: f281 8259 bge.w 1883a <lv_theme_material_init+0x1cf2>
17388: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
1738a: 2101 movs r1, #1
1738c: 4620 mov r0, r4
1738e: 4b32 ldr r3, [pc, #200] ; (17458 <lv_theme_material_init+0x910>)
17390: 4798 blx r3
lv_style_set_pattern_image(&styles->cb_bullet, LV_STATE_CHECKED, LV_SYMBOL_OK);
17392: 4c32 ldr r4, [pc, #200] ; (1745c <lv_theme_material_init+0x914>)
17394: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_IMAGE, pattern_image, const void *, _ptr, scalar)
17396: 4a37 ldr r2, [pc, #220] ; (17474 <lv_theme_material_init+0x92c>)
17398: f44f 71b7 mov.w r1, #366 ; 0x16e
1739c: 3050 adds r0, #80 ; 0x50
1739e: 4d36 ldr r5, [pc, #216] ; (17478 <lv_theme_material_init+0x930>)
173a0: 47a8 blx r5
lv_style_set_pattern_recolor(&styles->cb_bullet, LV_STATE_CHECKED, LV_COLOR_WHITE);
173a2: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar)
173a4: 4b2f ldr r3, [pc, #188] ; (17464 <lv_theme_material_init+0x91c>)
173a6: 881a ldrh r2, [r3, #0]
173a8: f240 1169 movw r1, #361 ; 0x169
173ac: 3050 adds r0, #80 ; 0x50
173ae: 4b2e ldr r3, [pc, #184] ; (17468 <lv_theme_material_init+0x920>)
173b0: 4798 blx r3
lv_style_set_text_font(&styles->cb_bullet, LV_STATE_CHECKED, theme.font_small);
173b2: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar)
173b4: 6922 ldr r2, [r4, #16]
173b6: f248 118e movw r1, #33166 ; 0x818e
173ba: 3050 adds r0, #80 ; 0x50
173bc: 47a8 blx r5
lv_style_set_pad_left(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3));
173be: 6824 ldr r4, [r4, #0]
173c0: 3450 adds r4, #80 ; 0x50
173c2: 2000 movs r0, #0
173c4: 4b2a ldr r3, [pc, #168] ; (17470 <lv_theme_material_init+0x928>)
173c6: 4798 blx r3
173c8: eb00 0040 add.w r0, r0, r0, lsl #1
173cc: 3050 adds r0, #80 ; 0x50
173ce: f5b0 7fa0 cmp.w r0, #320 ; 0x140
173d2: f281 8240 bge.w 18856 <lv_theme_material_init+0x1d0e>
173d6: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
173d8: 2112 movs r1, #18
173da: 4620 mov r0, r4
173dc: 4b1e ldr r3, [pc, #120] ; (17458 <lv_theme_material_init+0x910>)
173de: 4798 blx r3
lv_style_set_pad_right(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3));
173e0: 4b1e ldr r3, [pc, #120] ; (1745c <lv_theme_material_init+0x914>)
173e2: 681c ldr r4, [r3, #0]
173e4: 3450 adds r4, #80 ; 0x50
173e6: 2000 movs r0, #0
173e8: 4b21 ldr r3, [pc, #132] ; (17470 <lv_theme_material_init+0x928>)
173ea: 4798 blx r3
173ec: eb00 0040 add.w r0, r0, r0, lsl #1
173f0: 3050 adds r0, #80 ; 0x50
173f2: f5b0 7fa0 cmp.w r0, #320 ; 0x140
173f6: f281 823d bge.w 18874 <lv_theme_material_init+0x1d2c>
173fa: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
173fc: 2113 movs r1, #19
173fe: 4620 mov r0, r4
17400: 4b15 ldr r3, [pc, #84] ; (17458 <lv_theme_material_init+0x910>)
17402: 4798 blx r3
lv_style_set_pad_top(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3));
17404: 4b15 ldr r3, [pc, #84] ; (1745c <lv_theme_material_init+0x914>)
17406: 681c ldr r4, [r3, #0]
17408: 3450 adds r4, #80 ; 0x50
1740a: 2000 movs r0, #0
1740c: 4b18 ldr r3, [pc, #96] ; (17470 <lv_theme_material_init+0x928>)
1740e: 4798 blx r3
17410: eb00 0040 add.w r0, r0, r0, lsl #1
17414: 3050 adds r0, #80 ; 0x50
17416: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1741a: f281 823a bge.w 18892 <lv_theme_material_init+0x1d4a>
1741e: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
17420: 2110 movs r1, #16
17422: 4620 mov r0, r4
17424: 4b0c ldr r3, [pc, #48] ; (17458 <lv_theme_material_init+0x910>)
17426: 4798 blx r3
lv_style_set_pad_bottom(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3));
17428: 4b0c ldr r3, [pc, #48] ; (1745c <lv_theme_material_init+0x914>)
1742a: 681c ldr r4, [r3, #0]
1742c: 3450 adds r4, #80 ; 0x50
1742e: 2000 movs r0, #0
17430: 4b0f ldr r3, [pc, #60] ; (17470 <lv_theme_material_init+0x928>)
17432: 4798 blx r3
17434: eb00 0040 add.w r0, r0, r0, lsl #1
17438: 3050 adds r0, #80 ; 0x50
1743a: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1743e: f281 8237 bge.w 188b0 <lv_theme_material_init+0x1d68>
17442: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
17444: 2111 movs r1, #17
17446: 4620 mov r0, r4
17448: 4d03 ldr r5, [pc, #12] ; (17458 <lv_theme_material_init+0x910>)
1744a: 47a8 blx r5
style_init_reset(&styles->kb_bg);
1744c: 4c03 ldr r4, [pc, #12] ; (1745c <lv_theme_material_init+0x914>)
1744e: 6820 ldr r0, [r4, #0]
17450: 3068 adds r0, #104 ; 0x68
17452: 4b03 ldr r3, [pc, #12] ; (17460 <lv_theme_material_init+0x918>)
17454: 4798 blx r3
17456: e011 b.n 1747c <lv_theme_material_init+0x934>
17458: 000068e1 .word 0x000068e1
1745c: 20006bd8 .word 0x20006bd8
17460: 00014a61 .word 0x00014a61
17464: 00029584 .word 0x00029584
17468: 00006a25 .word 0x00006a25
1746c: 00006b69 .word 0x00006b69
17470: 00010f3d .word 0x00010f3d
17474: 0002958c .word 0x0002958c
17478: 00006c99 .word 0x00006c99
lv_style_set_radius(&styles->kb_bg, LV_STATE_DEFAULT, 0);
1747c: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
1747e: 2200 movs r2, #0
17480: 2101 movs r1, #1
17482: 3068 adds r0, #104 ; 0x68
17484: 47a8 blx r5
lv_style_set_border_width(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(4));
17486: 6824 ldr r4, [r4, #0]
17488: 3468 adds r4, #104 ; 0x68
1748a: 2000 movs r0, #0
1748c: 4bb5 ldr r3, [pc, #724] ; (17764 <lv_theme_material_init+0xc1c>)
1748e: 4798 blx r3
17490: 3014 adds r0, #20
17492: 0080 lsls r0, r0, #2
17494: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17498: f281 8219 bge.w 188ce <lv_theme_material_init+0x1d86>
1749c: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar)
1749e: 2130 movs r1, #48 ; 0x30
174a0: 4620 mov r0, r4
174a2: 4db1 ldr r5, [pc, #708] ; (17768 <lv_theme_material_init+0xc20>)
174a4: 47a8 blx r5
lv_style_set_border_side(&styles->kb_bg, LV_STATE_DEFAULT, LV_BORDER_SIDE_TOP);
174a6: 4cb1 ldr r4, [pc, #708] ; (1776c <lv_theme_material_init+0xc24>)
174a8: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar)
174aa: 2202 movs r2, #2
174ac: 2131 movs r1, #49 ; 0x31
174ae: 3068 adds r0, #104 ; 0x68
174b0: 47a8 blx r5
lv_style_set_border_color(&styles->kb_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT : LV_COLOR_BLACK);
174b2: 6820 ldr r0, [r4, #0]
174b4: 3068 adds r0, #104 ; 0x68
174b6: 6a23 ldr r3, [r4, #32]
174b8: f013 0f02 tst.w r3, #2
174bc: f041 8215 bne.w 188ea <lv_theme_material_init+0x1da2>
174c0: 2300 movs r3, #0
174c2: 4619 mov r1, r3
174c4: 461c mov r4, r3
174c6: f04f 0200 mov.w r2, #0
174ca: f364 0204 bfi r2, r4, #0, #5
174ce: f361 124a bfi r2, r1, #5, #6
174d2: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar)
174d6: 2139 movs r1, #57 ; 0x39
174d8: 4da5 ldr r5, [pc, #660] ; (17770 <lv_theme_material_init+0xc28>)
174da: 47a8 blx r5
lv_style_set_border_color(&styles->kb_bg, LV_STATE_EDITED, theme.color_secondary);
174dc: 4ca3 ldr r4, [pc, #652] ; (1776c <lv_theme_material_init+0xc24>)
174de: 6820 ldr r0, [r4, #0]
174e0: 89e2 ldrh r2, [r4, #14]
174e2: f240 4139 movw r1, #1081 ; 0x439
174e6: 3068 adds r0, #104 ; 0x68
174e8: 47a8 blx r5
lv_style_set_pad_left(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5));
174ea: 6824 ldr r4, [r4, #0]
174ec: 3468 adds r4, #104 ; 0x68
174ee: 2000 movs r0, #0
174f0: 4b9c ldr r3, [pc, #624] ; (17764 <lv_theme_material_init+0xc1c>)
174f2: 4798 blx r3
174f4: eb00 0080 add.w r0, r0, r0, lsl #2
174f8: 3050 adds r0, #80 ; 0x50
174fa: f5b0 7fa0 cmp.w r0, #320 ; 0x140
174fe: f281 81f9 bge.w 188f4 <lv_theme_material_init+0x1dac>
17502: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
17504: 2112 movs r1, #18
17506: 4620 mov r0, r4
17508: 4b97 ldr r3, [pc, #604] ; (17768 <lv_theme_material_init+0xc20>)
1750a: 4798 blx r3
lv_style_set_pad_right(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5));
1750c: 4b97 ldr r3, [pc, #604] ; (1776c <lv_theme_material_init+0xc24>)
1750e: 681c ldr r4, [r3, #0]
17510: 3468 adds r4, #104 ; 0x68
17512: 2000 movs r0, #0
17514: 4b93 ldr r3, [pc, #588] ; (17764 <lv_theme_material_init+0xc1c>)
17516: 4798 blx r3
17518: eb00 0080 add.w r0, r0, r0, lsl #2
1751c: 3050 adds r0, #80 ; 0x50
1751e: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17522: f281 81f6 bge.w 18912 <lv_theme_material_init+0x1dca>
17526: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
17528: 2113 movs r1, #19
1752a: 4620 mov r0, r4
1752c: 4b8e ldr r3, [pc, #568] ; (17768 <lv_theme_material_init+0xc20>)
1752e: 4798 blx r3
lv_style_set_pad_top(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5));
17530: 4b8e ldr r3, [pc, #568] ; (1776c <lv_theme_material_init+0xc24>)
17532: 681c ldr r4, [r3, #0]
17534: 3468 adds r4, #104 ; 0x68
17536: 2000 movs r0, #0
17538: 4b8a ldr r3, [pc, #552] ; (17764 <lv_theme_material_init+0xc1c>)
1753a: 4798 blx r3
1753c: eb00 0080 add.w r0, r0, r0, lsl #2
17540: 3050 adds r0, #80 ; 0x50
17542: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17546: f281 81f3 bge.w 18930 <lv_theme_material_init+0x1de8>
1754a: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
1754c: 2110 movs r1, #16
1754e: 4620 mov r0, r4
17550: 4b85 ldr r3, [pc, #532] ; (17768 <lv_theme_material_init+0xc20>)
17552: 4798 blx r3
lv_style_set_pad_bottom(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5));
17554: 4b85 ldr r3, [pc, #532] ; (1776c <lv_theme_material_init+0xc24>)
17556: 681c ldr r4, [r3, #0]
17558: 3468 adds r4, #104 ; 0x68
1755a: 2000 movs r0, #0
1755c: 4b81 ldr r3, [pc, #516] ; (17764 <lv_theme_material_init+0xc1c>)
1755e: 4798 blx r3
17560: eb00 0080 add.w r0, r0, r0, lsl #2
17564: 3050 adds r0, #80 ; 0x50
17566: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1756a: f281 81f0 bge.w 1894e <lv_theme_material_init+0x1e06>
1756e: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
17570: 2111 movs r1, #17
17572: 4620 mov r0, r4
17574: 4b7c ldr r3, [pc, #496] ; (17768 <lv_theme_material_init+0xc20>)
17576: 4798 blx r3
lv_style_set_pad_inner(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(3));
17578: 4b7c ldr r3, [pc, #496] ; (1776c <lv_theme_material_init+0xc24>)
1757a: 681c ldr r4, [r3, #0]
1757c: 3468 adds r4, #104 ; 0x68
1757e: 2000 movs r0, #0
17580: 4b78 ldr r3, [pc, #480] ; (17764 <lv_theme_material_init+0xc1c>)
17582: 4798 blx r3
17584: eb00 0040 add.w r0, r0, r0, lsl #1
17588: 3050 adds r0, #80 ; 0x50
1758a: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1758e: f281 81ed bge.w 1896c <lv_theme_material_init+0x1e24>
17592: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar)
17594: 2114 movs r1, #20
17596: 4620 mov r0, r4
17598: 4b73 ldr r3, [pc, #460] ; (17768 <lv_theme_material_init+0xc20>)
1759a: 4798 blx r3
style_init_reset(&styles->mbox_bg);
1759c: 4c73 ldr r4, [pc, #460] ; (1776c <lv_theme_material_init+0xc24>)
1759e: 6820 ldr r0, [r4, #0]
175a0: 307c adds r0, #124 ; 0x7c
175a2: 4b74 ldr r3, [pc, #464] ; (17774 <lv_theme_material_init+0xc2c>)
175a4: 4798 blx r3
lv_style_set_shadow_width(&styles->mbox_bg, LV_STATE_DEFAULT, LV_DPX(50));
175a6: 6824 ldr r4, [r4, #0]
175a8: 347c adds r4, #124 ; 0x7c
175aa: 2000 movs r0, #0
175ac: 4b6d ldr r3, [pc, #436] ; (17764 <lv_theme_material_init+0xc1c>)
175ae: 4798 blx r3
175b0: 2332 movs r3, #50 ; 0x32
175b2: fb03 f000 mul.w r0, r3, r0
175b6: 3050 adds r0, #80 ; 0x50
175b8: f5b0 7fa0 cmp.w r0, #320 ; 0x140
175bc: f281 81e5 bge.w 1898a <lv_theme_material_init+0x1e42>
175c0: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar)
175c2: 2150 movs r1, #80 ; 0x50
175c4: 4620 mov r0, r4
175c6: 4b68 ldr r3, [pc, #416] ; (17768 <lv_theme_material_init+0xc20>)
175c8: 4798 blx r3
lv_style_set_shadow_color(&styles->mbox_bg, LV_STATE_DEFAULT, IS_LIGHT ? LV_COLOR_SILVER : lv_color_hex3(0x999));
175ca: 4b68 ldr r3, [pc, #416] ; (1776c <lv_theme_material_init+0xc24>)
175cc: 6818 ldr r0, [r3, #0]
175ce: 6a1b ldr r3, [r3, #32]
175d0: f013 0302 ands.w r3, r3, #2
175d4: bf0c ite eq
175d6: 2126 moveq r1, #38 ; 0x26
175d8: 2130 movne r1, #48 ; 0x30
175da: 2b00 cmp r3, #0
175dc: bf0c ite eq
175de: 2313 moveq r3, #19
175e0: 2318 movne r3, #24
175e2: f04f 0200 mov.w r2, #0
175e6: f363 0204 bfi r2, r3, #0, #5
175ea: f361 124a bfi r2, r1, #5, #6
175ee: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar)
175f2: 2159 movs r1, #89 ; 0x59
175f4: 307c adds r0, #124 ; 0x7c
175f6: 4b5e ldr r3, [pc, #376] ; (17770 <lv_theme_material_init+0xc28>)
175f8: 4798 blx r3
style_init_reset(&styles->sb);
175fa: 4c5c ldr r4, [pc, #368] ; (1776c <lv_theme_material_init+0xc24>)
175fc: 6820 ldr r0, [r4, #0]
175fe: 3080 adds r0, #128 ; 0x80
17600: 4b5c ldr r3, [pc, #368] ; (17774 <lv_theme_material_init+0xc2c>)
17602: 4798 blx r3
lv_style_set_bg_opa(&styles->sb, LV_STATE_DEFAULT, LV_OPA_COVER);
17604: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
17606: 22ff movs r2, #255 ; 0xff
17608: 212c movs r1, #44 ; 0x2c
1760a: 3080 adds r0, #128 ; 0x80
1760c: 4b5a ldr r3, [pc, #360] ; (17778 <lv_theme_material_init+0xc30>)
1760e: 4798 blx r3
lv_style_set_bg_color(&styles->sb, LV_STATE_DEFAULT, (IS_LIGHT ? lv_color_hex(0xcccfd1) : lv_color_hex(0x777f85)));
17610: 6820 ldr r0, [r4, #0]
17612: 6a23 ldr r3, [r4, #32]
17614: f013 0302 ands.w r3, r3, #2
17618: bf14 ite ne
1761a: 2119 movne r1, #25
1761c: 210e moveq r1, #14
1761e: 2b00 cmp r3, #0
17620: bf15 itete ne
17622: 2433 movne r4, #51 ; 0x33
17624: 241f moveq r4, #31
17626: 231a movne r3, #26
17628: 2310 moveq r3, #16
1762a: f04f 0200 mov.w r2, #0
1762e: f363 0204 bfi r2, r3, #0, #5
17632: f364 124a bfi r2, r4, #5, #6
17636: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
1763a: 2129 movs r1, #41 ; 0x29
1763c: 3080 adds r0, #128 ; 0x80
1763e: 4b4c ldr r3, [pc, #304] ; (17770 <lv_theme_material_init+0xc28>)
17640: 4798 blx r3
lv_style_set_radius(&styles->sb, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
17642: 4c4a ldr r4, [pc, #296] ; (1776c <lv_theme_material_init+0xc24>)
17644: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
17646: f647 72ff movw r2, #32767 ; 0x7fff
1764a: 2101 movs r1, #1
1764c: 3080 adds r0, #128 ; 0x80
1764e: 4b46 ldr r3, [pc, #280] ; (17768 <lv_theme_material_init+0xc20>)
17650: 4798 blx r3
lv_style_set_size(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7));
17652: 6824 ldr r4, [r4, #0]
17654: 3480 adds r4, #128 ; 0x80
17656: 2000 movs r0, #0
17658: 4b42 ldr r3, [pc, #264] ; (17764 <lv_theme_material_init+0xc1c>)
1765a: 4798 blx r3
1765c: ebc0 00c0 rsb r0, r0, r0, lsl #3
17660: 3050 adds r0, #80 ; 0x50
17662: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17666: f281 81a0 bge.w 189aa <lv_theme_material_init+0x1e62>
1766a: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar)
1766c: 2103 movs r1, #3
1766e: 4620 mov r0, r4
17670: 4b3d ldr r3, [pc, #244] ; (17768 <lv_theme_material_init+0xc20>)
17672: 4798 blx r3
lv_style_set_pad_right(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7));
17674: 4b3d ldr r3, [pc, #244] ; (1776c <lv_theme_material_init+0xc24>)
17676: 681c ldr r4, [r3, #0]
17678: 3480 adds r4, #128 ; 0x80
1767a: 2000 movs r0, #0
1767c: 4b39 ldr r3, [pc, #228] ; (17764 <lv_theme_material_init+0xc1c>)
1767e: 4798 blx r3
17680: ebc0 00c0 rsb r0, r0, r0, lsl #3
17684: 3050 adds r0, #80 ; 0x50
17686: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1768a: f281 819d bge.w 189c8 <lv_theme_material_init+0x1e80>
1768e: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
17690: 2113 movs r1, #19
17692: 4620 mov r0, r4
17694: 4b34 ldr r3, [pc, #208] ; (17768 <lv_theme_material_init+0xc20>)
17696: 4798 blx r3
lv_style_set_pad_bottom(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7));
17698: 4b34 ldr r3, [pc, #208] ; (1776c <lv_theme_material_init+0xc24>)
1769a: 681c ldr r4, [r3, #0]
1769c: 3480 adds r4, #128 ; 0x80
1769e: 2000 movs r0, #0
176a0: 4b30 ldr r3, [pc, #192] ; (17764 <lv_theme_material_init+0xc1c>)
176a2: 4798 blx r3
176a4: ebc0 00c0 rsb r0, r0, r0, lsl #3
176a8: 3050 adds r0, #80 ; 0x50
176aa: f5b0 7fa0 cmp.w r0, #320 ; 0x140
176ae: f281 819a bge.w 189e6 <lv_theme_material_init+0x1e9e>
176b2: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
176b4: 2111 movs r1, #17
176b6: 4620 mov r0, r4
176b8: 4b2b ldr r3, [pc, #172] ; (17768 <lv_theme_material_init+0xc20>)
176ba: 4798 blx r3
style_init_reset(&styles->edge_flash);
176bc: 4c2b ldr r4, [pc, #172] ; (1776c <lv_theme_material_init+0xc24>)
176be: 6820 ldr r0, [r4, #0]
176c0: 3084 adds r0, #132 ; 0x84
176c2: 4d2c ldr r5, [pc, #176] ; (17774 <lv_theme_material_init+0xc2c>)
176c4: 47a8 blx r5
lv_style_set_bg_opa(&styles->edge_flash, LV_STATE_DEFAULT, LV_OPA_COVER);
176c6: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
176c8: 22ff movs r2, #255 ; 0xff
176ca: 212c movs r1, #44 ; 0x2c
176cc: 3084 adds r0, #132 ; 0x84
176ce: 4b2a ldr r3, [pc, #168] ; (17778 <lv_theme_material_init+0xc30>)
176d0: 4798 blx r3
lv_style_set_bg_color(&styles->edge_flash, LV_STATE_DEFAULT, lv_color_hex3(0x888));
176d2: 6820 ldr r0, [r4, #0]
176d4: 2311 movs r3, #17
176d6: f04f 0200 mov.w r2, #0
176da: f363 0204 bfi r2, r3, #0, #5
176de: 2122 movs r1, #34 ; 0x22
176e0: f361 124a bfi r2, r1, #5, #6
176e4: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
176e8: 2129 movs r1, #41 ; 0x29
176ea: 3084 adds r0, #132 ; 0x84
176ec: 4b20 ldr r3, [pc, #128] ; (17770 <lv_theme_material_init+0xc28>)
176ee: 4798 blx r3
style_init_reset(&styles->ta_cursor);
176f0: 6820 ldr r0, [r4, #0]
176f2: 30b4 adds r0, #180 ; 0xb4
176f4: 47a8 blx r5
lv_style_set_border_color(&styles->ta_cursor, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT);
176f6: 6820 ldr r0, [r4, #0]
176f8: 6a23 ldr r3, [r4, #32]
176fa: f013 0302 ands.w r3, r3, #2
176fe: bf14 ite ne
17700: 2106 movne r1, #6
17702: 2114 moveq r1, #20
17704: 2b00 cmp r3, #0
17706: bf15 itete ne
17708: 2410 movne r4, #16
1770a: 242a moveq r4, #42 ; 0x2a
1770c: 2309 movne r3, #9
1770e: 2315 moveq r3, #21
17710: f04f 0200 mov.w r2, #0
17714: f363 0204 bfi r2, r3, #0, #5
17718: f364 124a bfi r2, r4, #5, #6
1771c: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar)
17720: 2139 movs r1, #57 ; 0x39
17722: 30b4 adds r0, #180 ; 0xb4
17724: 4b12 ldr r3, [pc, #72] ; (17770 <lv_theme_material_init+0xc28>)
17726: 4798 blx r3
lv_style_set_border_width(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(2));
17728: 4b10 ldr r3, [pc, #64] ; (1776c <lv_theme_material_init+0xc24>)
1772a: 681c ldr r4, [r3, #0]
1772c: 34b4 adds r4, #180 ; 0xb4
1772e: 2000 movs r0, #0
17730: 4b0c ldr r3, [pc, #48] ; (17764 <lv_theme_material_init+0xc1c>)
17732: 4798 blx r3
17734: 3028 adds r0, #40 ; 0x28
17736: 0040 lsls r0, r0, #1
17738: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1773c: f281 8162 bge.w 18a04 <lv_theme_material_init+0x1ebc>
17740: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar)
17742: 2130 movs r1, #48 ; 0x30
17744: 4620 mov r0, r4
17746: 4b08 ldr r3, [pc, #32] ; (17768 <lv_theme_material_init+0xc20>)
17748: 4798 blx r3
lv_style_set_pad_left(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(1));
1774a: 4b08 ldr r3, [pc, #32] ; (1776c <lv_theme_material_init+0xc24>)
1774c: 681c ldr r4, [r3, #0]
1774e: 34b4 adds r4, #180 ; 0xb4
17750: 2000 movs r0, #0
17752: 4b04 ldr r3, [pc, #16] ; (17764 <lv_theme_material_init+0xc1c>)
17754: 4798 blx r3
17756: 3050 adds r0, #80 ; 0x50
17758: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1775c: f281 8164 bge.w 18a28 <lv_theme_material_init+0x1ee0>
17760: 2201 movs r2, #1
17762: e00b b.n 1777c <lv_theme_material_init+0xc34>
17764: 00010f3d .word 0x00010f3d
17768: 000068e1 .word 0x000068e1
1776c: 20006bd8 .word 0x20006bd8
17770: 00006a25 .word 0x00006a25
17774: 00014a61 .word 0x00014a61
17778: 00006b69 .word 0x00006b69
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
1777c: 2112 movs r1, #18
1777e: 4620 mov r0, r4
17780: 4dba ldr r5, [pc, #744] ; (17a6c <lv_theme_material_init+0xf24>)
17782: 47a8 blx r5
lv_style_set_border_side(&styles->ta_cursor, LV_STATE_DEFAULT, LV_BORDER_SIDE_LEFT);
17784: 4cba ldr r4, [pc, #744] ; (17a70 <lv_theme_material_init+0xf28>)
17786: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar)
17788: 2204 movs r2, #4
1778a: 2131 movs r1, #49 ; 0x31
1778c: 30b4 adds r0, #180 ; 0xb4
1778e: 47a8 blx r5
style_init_reset(&styles->ta_placeholder);
17790: 6820 ldr r0, [r4, #0]
17792: 30b8 adds r0, #184 ; 0xb8
17794: 4bb7 ldr r3, [pc, #732] ; (17a74 <lv_theme_material_init+0xf2c>)
17796: 4798 blx r3
lv_style_set_text_color(&styles->ta_placeholder, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd));
17798: 6820 ldr r0, [r4, #0]
1779a: 30b8 adds r0, #184 ; 0xb8
1779c: 6a23 ldr r3, [r4, #32]
1779e: f013 0f02 tst.w r3, #2
177a2: f041 814e bne.w 18a42 <lv_theme_material_init+0x1efa>
177a6: 2314 movs r3, #20
177a8: 212b movs r1, #43 ; 0x2b
177aa: 2417 movs r4, #23
177ac: f04f 0200 mov.w r2, #0
177b0: f364 0204 bfi r2, r4, #0, #5
177b4: f361 124a bfi r2, r1, #5, #6
177b8: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
177bc: f248 0189 movw r1, #32905 ; 0x8089
177c0: 4dad ldr r5, [pc, #692] ; (17a78 <lv_theme_material_init+0xf30>)
177c2: 47a8 blx r5
style_init_reset(&styles->spinbox_cursor);
177c4: 4caa ldr r4, [pc, #680] ; (17a70 <lv_theme_material_init+0xf28>)
177c6: 6820 ldr r0, [r4, #0]
177c8: 3098 adds r0, #152 ; 0x98
177ca: 4baa ldr r3, [pc, #680] ; (17a74 <lv_theme_material_init+0xf2c>)
177cc: 4798 blx r3
lv_style_set_bg_opa(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_OPA_COVER);
177ce: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
177d0: 22ff movs r2, #255 ; 0xff
177d2: 212c movs r1, #44 ; 0x2c
177d4: 3098 adds r0, #152 ; 0x98
177d6: 4ba9 ldr r3, [pc, #676] ; (17a7c <lv_theme_material_init+0xf34>)
177d8: 4798 blx r3
lv_style_set_bg_color(&styles->spinbox_cursor, LV_STATE_DEFAULT, theme.color_primary);
177da: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
177dc: 89a2 ldrh r2, [r4, #12]
177de: 2129 movs r1, #41 ; 0x29
177e0: 3098 adds r0, #152 ; 0x98
177e2: 47a8 blx r5
lv_style_set_text_color(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_COLOR_WHITE);
177e4: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
177e6: 4ba6 ldr r3, [pc, #664] ; (17a80 <lv_theme_material_init+0xf38>)
177e8: 881a ldrh r2, [r3, #0]
177ea: f248 0189 movw r1, #32905 ; 0x8089
177ee: 3098 adds r0, #152 ; 0x98
177f0: 47a8 blx r5
lv_style_set_pad_top(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100));
177f2: 6824 ldr r4, [r4, #0]
177f4: 3498 adds r4, #152 ; 0x98
177f6: 2000 movs r0, #0
177f8: 4ba2 ldr r3, [pc, #648] ; (17a84 <lv_theme_material_init+0xf3c>)
177fa: 4798 blx r3
177fc: 2364 movs r3, #100 ; 0x64
177fe: fb03 f000 mul.w r0, r3, r0
17802: 3050 adds r0, #80 ; 0x50
17804: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17808: f281 8120 bge.w 18a4c <lv_theme_material_init+0x1f04>
1780c: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
1780e: 2110 movs r1, #16
17810: 4620 mov r0, r4
17812: 4b96 ldr r3, [pc, #600] ; (17a6c <lv_theme_material_init+0xf24>)
17814: 4798 blx r3
lv_style_set_pad_bottom(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100));
17816: 4b96 ldr r3, [pc, #600] ; (17a70 <lv_theme_material_init+0xf28>)
17818: 681c ldr r4, [r3, #0]
1781a: 3498 adds r4, #152 ; 0x98
1781c: 2000 movs r0, #0
1781e: 4b99 ldr r3, [pc, #612] ; (17a84 <lv_theme_material_init+0xf3c>)
17820: 4798 blx r3
17822: 2364 movs r3, #100 ; 0x64
17824: fb03 f000 mul.w r0, r3, r0
17828: 3050 adds r0, #80 ; 0x50
1782a: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1782e: f281 811d bge.w 18a6c <lv_theme_material_init+0x1f24>
17832: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
17834: 2111 movs r1, #17
17836: 4620 mov r0, r4
17838: 4d8c ldr r5, [pc, #560] ; (17a6c <lv_theme_material_init+0xf24>)
1783a: 47a8 blx r5
style_init_reset(&styles->list_bg);
1783c: 4c8c ldr r4, [pc, #560] ; (17a70 <lv_theme_material_init+0xf28>)
1783e: 6820 ldr r0, [r4, #0]
17840: 3074 adds r0, #116 ; 0x74
17842: 4e8c ldr r6, [pc, #560] ; (17a74 <lv_theme_material_init+0xf2c>)
17844: 47b0 blx r6
lv_style_set_clip_corner(&styles->list_bg, LV_STATE_DEFAULT, true);
17846: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar)
17848: 2201 movs r2, #1
1784a: 2102 movs r1, #2
1784c: 3074 adds r0, #116 ; 0x74
1784e: 47a8 blx r5
lv_style_set_pad_left(&styles->list_bg, LV_STATE_DEFAULT, 0);
17850: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
17852: 2200 movs r2, #0
17854: 2112 movs r1, #18
17856: 3074 adds r0, #116 ; 0x74
17858: 47a8 blx r5
lv_style_set_pad_right(&styles->list_bg, LV_STATE_DEFAULT, 0);
1785a: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
1785c: 2200 movs r2, #0
1785e: 2113 movs r1, #19
17860: 3074 adds r0, #116 ; 0x74
17862: 47a8 blx r5
lv_style_set_pad_top(&styles->list_bg, LV_STATE_DEFAULT, 0);
17864: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
17866: 2200 movs r2, #0
17868: 2110 movs r1, #16
1786a: 3074 adds r0, #116 ; 0x74
1786c: 47a8 blx r5
lv_style_set_pad_bottom(&styles->list_bg, LV_STATE_DEFAULT, 0);
1786e: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
17870: 2200 movs r2, #0
17872: 2111 movs r1, #17
17874: 3074 adds r0, #116 ; 0x74
17876: 47a8 blx r5
lv_style_set_pad_inner(&styles->list_bg, LV_STATE_DEFAULT, 0);
17878: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar)
1787a: 2200 movs r2, #0
1787c: 2114 movs r1, #20
1787e: 3074 adds r0, #116 ; 0x74
17880: 47a8 blx r5
style_init_reset(&styles->list_btn);
17882: 6820 ldr r0, [r4, #0]
17884: 3078 adds r0, #120 ; 0x78
17886: 47b0 blx r6
lv_style_set_bg_opa(&styles->list_btn, LV_STATE_DEFAULT, LV_OPA_COVER);
17888: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
1788a: 22ff movs r2, #255 ; 0xff
1788c: 212c movs r1, #44 ; 0x2c
1788e: 3078 adds r0, #120 ; 0x78
17890: 4b7a ldr r3, [pc, #488] ; (17a7c <lv_theme_material_init+0xf34>)
17892: 4798 blx r3
lv_style_set_bg_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG);
17894: 6820 ldr r0, [r4, #0]
17896: 3078 adds r0, #120 ; 0x78
17898: 6a23 ldr r3, [r4, #32]
1789a: f013 0f02 tst.w r3, #2
1789e: f041 80f5 bne.w 18a8c <lv_theme_material_init+0x1f44>
178a2: 230b movs r3, #11
178a4: 2118 movs r1, #24
178a6: 240e movs r4, #14
178a8: f04f 0200 mov.w r2, #0
178ac: f364 0204 bfi r2, r4, #0, #5
178b0: f361 124a bfi r2, r1, #5, #6
178b4: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
178b8: 2129 movs r1, #41 ; 0x29
178ba: 4b6f ldr r3, [pc, #444] ; (17a78 <lv_theme_material_init+0xf30>)
178bc: 4798 blx r3
lv_style_set_bg_color(&styles->list_btn, LV_STATE_PRESSED, COLOR_BG_PR);
178be: 4b6c ldr r3, [pc, #432] ; (17a70 <lv_theme_material_init+0xf28>)
178c0: 6818 ldr r0, [r3, #0]
178c2: 3078 adds r0, #120 ; 0x78
178c4: 6a1b ldr r3, [r3, #32]
178c6: f013 0f02 tst.w r3, #2
178ca: f041 80e4 bne.w 18a96 <lv_theme_material_init+0x1f4e>
178ce: 2309 movs r3, #9
178d0: 2113 movs r1, #19
178d2: 240a movs r4, #10
178d4: f04f 0200 mov.w r2, #0
178d8: f364 0204 bfi r2, r4, #0, #5
178dc: f361 124a bfi r2, r1, #5, #6
178e0: f363 22cf bfi r2, r3, #11, #5
178e4: f241 0129 movw r1, #4137 ; 0x1029
178e8: 4b63 ldr r3, [pc, #396] ; (17a78 <lv_theme_material_init+0xf30>)
178ea: 4798 blx r3
lv_style_set_bg_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_DIS);
178ec: 4b60 ldr r3, [pc, #384] ; (17a70 <lv_theme_material_init+0xf28>)
178ee: 6818 ldr r0, [r3, #0]
178f0: 3078 adds r0, #120 ; 0x78
178f2: 6a1b ldr r3, [r3, #32]
178f4: f013 0f02 tst.w r3, #2
178f8: f041 80d2 bne.w 18aa0 <lv_theme_material_init+0x1f58>
178fc: 230b movs r3, #11
178fe: 2118 movs r1, #24
17900: 240e movs r4, #14
17902: f04f 0200 mov.w r2, #0
17906: f364 0204 bfi r2, r4, #0, #5
1790a: f361 124a bfi r2, r1, #5, #6
1790e: f363 22cf bfi r2, r3, #11, #5
17912: f242 0129 movw r1, #8233 ; 0x2029
17916: 4d58 ldr r5, [pc, #352] ; (17a78 <lv_theme_material_init+0xf30>)
17918: 47a8 blx r5
lv_style_set_bg_color(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_CHK);
1791a: 4c55 ldr r4, [pc, #340] ; (17a70 <lv_theme_material_init+0xf28>)
1791c: 6820 ldr r0, [r4, #0]
1791e: 89a2 ldrh r2, [r4, #12]
17920: f240 1129 movw r1, #297 ; 0x129
17924: 3078 adds r0, #120 ; 0x78
17926: 47a8 blx r5
lv_style_set_bg_color(&styles->list_btn, LV_STATE_CHECKED | LV_STATE_PRESSED, COLOR_BG_PR_CHK);
17928: 6826 ldr r6, [r4, #0]
1792a: 3678 adds r6, #120 ; 0x78
1792c: 2133 movs r1, #51 ; 0x33
1792e: 89a0 ldrh r0, [r4, #12]
17930: 4b55 ldr r3, [pc, #340] ; (17a88 <lv_theme_material_init+0xf40>)
17932: 4798 blx r3
17934: 4602 mov r2, r0
17936: f241 1129 movw r1, #4393 ; 0x1129
1793a: 4630 mov r0, r6
1793c: 47a8 blx r5
lv_style_set_text_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT);
1793e: 6820 ldr r0, [r4, #0]
17940: 3078 adds r0, #120 ; 0x78
17942: 6a23 ldr r3, [r4, #32]
17944: f013 0f02 tst.w r3, #2
17948: f041 80af bne.w 18aaa <lv_theme_material_init+0x1f62>
1794c: 231f movs r3, #31
1794e: 213f movs r1, #63 ; 0x3f
17950: 461c mov r4, r3
17952: f04f 0200 mov.w r2, #0
17956: f364 0204 bfi r2, r4, #0, #5
1795a: f361 124a bfi r2, r1, #5, #6
1795e: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
17962: f248 0189 movw r1, #32905 ; 0x8089
17966: 4d44 ldr r5, [pc, #272] ; (17a78 <lv_theme_material_init+0xf30>)
17968: 47a8 blx r5
lv_style_set_text_color(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK);
1796a: 4c41 ldr r4, [pc, #260] ; (17a70 <lv_theme_material_init+0xf28>)
1796c: 6820 ldr r0, [r4, #0]
1796e: f04f 32ff mov.w r2, #4294967295
17972: f248 1189 movw r1, #33161 ; 0x8189
17976: 3078 adds r0, #120 ; 0x78
17978: 47a8 blx r5
lv_style_set_text_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS);
1797a: 6820 ldr r0, [r4, #0]
1797c: 6a23 ldr r3, [r4, #32]
1797e: f013 0302 ands.w r3, r3, #2
17982: bf14 ite ne
17984: 212a movne r1, #42 ; 0x2a
17986: 2126 moveq r1, #38 ; 0x26
17988: 2b00 cmp r3, #0
1798a: bf14 ite ne
1798c: 2315 movne r3, #21
1798e: 2313 moveq r3, #19
17990: f04f 0200 mov.w r2, #0
17994: f363 0204 bfi r2, r3, #0, #5
17998: f361 124a bfi r2, r1, #5, #6
1799c: f363 22cf bfi r2, r3, #11, #5
179a0: f24a 0189 movw r1, #41097 ; 0xa089
179a4: 3078 adds r0, #120 ; 0x78
179a6: 47a8 blx r5
lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT);
179a8: 6820 ldr r0, [r4, #0]
179aa: 3078 adds r0, #120 ; 0x78
179ac: 6a23 ldr r3, [r4, #32]
179ae: f013 0f02 tst.w r3, #2
179b2: f041 807f bne.w 18ab4 <lv_theme_material_init+0x1f6c>
179b6: 231f movs r3, #31
179b8: 213f movs r1, #63 ; 0x3f
179ba: 461c mov r4, r3
179bc: f04f 0200 mov.w r2, #0
179c0: f364 0204 bfi r2, r4, #0, #5
179c4: f361 124a bfi r2, r1, #5, #6
179c8: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar)
179cc: f248 01a9 movw r1, #32937 ; 0x80a9
179d0: 4d29 ldr r5, [pc, #164] ; (17a78 <lv_theme_material_init+0xf30>)
179d2: 47a8 blx r5
lv_style_set_image_recolor(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK);
179d4: 4c26 ldr r4, [pc, #152] ; (17a70 <lv_theme_material_init+0xf28>)
179d6: 6820 ldr r0, [r4, #0]
179d8: f04f 32ff mov.w r2, #4294967295
179dc: f248 11a9 movw r1, #33193 ; 0x81a9
179e0: 3078 adds r0, #120 ; 0x78
179e2: 47a8 blx r5
lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS);
179e4: 6820 ldr r0, [r4, #0]
179e6: 6a23 ldr r3, [r4, #32]
179e8: f013 0302 ands.w r3, r3, #2
179ec: bf14 ite ne
179ee: 212a movne r1, #42 ; 0x2a
179f0: 2126 moveq r1, #38 ; 0x26
179f2: 2b00 cmp r3, #0
179f4: bf14 ite ne
179f6: 2315 movne r3, #21
179f8: 2313 moveq r3, #19
179fa: f04f 0200 mov.w r2, #0
179fe: f363 0204 bfi r2, r3, #0, #5
17a02: f361 124a bfi r2, r1, #5, #6
17a06: f363 22cf bfi r2, r3, #11, #5
17a0a: f24a 01a9 movw r1, #41129 ; 0xa0a9
17a0e: 3078 adds r0, #120 ; 0x78
17a10: 47a8 blx r5
lv_style_set_border_side(&styles->list_btn, LV_STATE_DEFAULT, LV_BORDER_SIDE_BOTTOM);
17a12: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar)
17a14: 2201 movs r2, #1
17a16: 2131 movs r1, #49 ; 0x31
17a18: 3078 adds r0, #120 ; 0x78
17a1a: 4b14 ldr r3, [pc, #80] ; (17a6c <lv_theme_material_init+0xf24>)
17a1c: 4798 blx r3
lv_style_set_border_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_BORDER);
17a1e: 6820 ldr r0, [r4, #0]
17a20: 6a23 ldr r3, [r4, #32]
17a22: f013 0302 ands.w r3, r3, #2
17a26: bf14 ite ne
17a28: 211a movne r1, #26
17a2a: 2110 moveq r1, #16
17a2c: 2b00 cmp r3, #0
17a2e: bf15 itete ne
17a30: 2437 movne r4, #55 ; 0x37
17a32: 2422 moveq r4, #34 ; 0x22
17a34: 231c movne r3, #28
17a36: 2312 moveq r3, #18
17a38: f04f 0200 mov.w r2, #0
17a3c: f363 0204 bfi r2, r3, #0, #5
17a40: f364 124a bfi r2, r4, #5, #6
17a44: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar)
17a48: 2139 movs r1, #57 ; 0x39
17a4a: 3078 adds r0, #120 ; 0x78
17a4c: 47a8 blx r5
lv_style_set_border_color(&styles->list_btn, LV_STATE_FOCUSED, theme.color_primary);
17a4e: 4c08 ldr r4, [pc, #32] ; (17a70 <lv_theme_material_init+0xf28>)
17a50: 6820 ldr r0, [r4, #0]
17a52: 89a2 ldrh r2, [r4, #12]
17a54: f240 2139 movw r1, #569 ; 0x239
17a58: 3078 adds r0, #120 ; 0x78
17a5a: 47a8 blx r5
lv_style_set_border_width(&styles->list_btn, LV_STATE_DEFAULT, 1);
17a5c: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar)
17a5e: 2201 movs r2, #1
17a60: 2130 movs r1, #48 ; 0x30
17a62: 3078 adds r0, #120 ; 0x78
17a64: 4b01 ldr r3, [pc, #4] ; (17a6c <lv_theme_material_init+0xf24>)
17a66: 4798 blx r3
17a68: e010 b.n 17a8c <lv_theme_material_init+0xf44>
17a6a: bf00 nop
17a6c: 000068e1 .word 0x000068e1
17a70: 20006bd8 .word 0x20006bd8
17a74: 00014a61 .word 0x00014a61
17a78: 00006a25 .word 0x00006a25
17a7c: 00006b69 .word 0x00006b69
17a80: 00029584 .word 0x00029584
17a84: 00010f3d .word 0x00010f3d
17a88: 00011c03 .word 0x00011c03
lv_style_set_pad_left(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF);
17a8c: 6824 ldr r4, [r4, #0]
17a8e: 3478 adds r4, #120 ; 0x78
17a90: 2000 movs r0, #0
17a92: 4bba ldr r3, [pc, #744] ; (17d7c <lv_theme_material_init+0x1234>)
17a94: 4798 blx r3
17a96: 2801 cmp r0, #1
17a98: f241 8011 bls.w 18abe <lv_theme_material_init+0x1f76>
17a9c: 2000 movs r0, #0
17a9e: 4bb8 ldr r3, [pc, #736] ; (17d80 <lv_theme_material_init+0x1238>)
17aa0: 4798 blx r3
17aa2: ebc0 1000 rsb r0, r0, r0, lsl #4
17aa6: 0040 lsls r0, r0, #1
17aa8: 3050 adds r0, #80 ; 0x50
17aaa: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17aae: f281 8021 bge.w 18af4 <lv_theme_material_init+0x1fac>
17ab2: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
17ab4: 2112 movs r1, #18
17ab6: 4620 mov r0, r4
17ab8: 4bb2 ldr r3, [pc, #712] ; (17d84 <lv_theme_material_init+0x123c>)
17aba: 4798 blx r3
lv_style_set_pad_right(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF);
17abc: 4bb2 ldr r3, [pc, #712] ; (17d88 <lv_theme_material_init+0x1240>)
17abe: 681c ldr r4, [r3, #0]
17ac0: 3478 adds r4, #120 ; 0x78
17ac2: 2000 movs r0, #0
17ac4: 4bad ldr r3, [pc, #692] ; (17d7c <lv_theme_material_init+0x1234>)
17ac6: 4798 blx r3
17ac8: 2801 cmp r0, #1
17aca: f241 8023 bls.w 18b14 <lv_theme_material_init+0x1fcc>
17ace: 2000 movs r0, #0
17ad0: 4bab ldr r3, [pc, #684] ; (17d80 <lv_theme_material_init+0x1238>)
17ad2: 4798 blx r3
17ad4: ebc0 1000 rsb r0, r0, r0, lsl #4
17ad8: 0040 lsls r0, r0, #1
17ada: 3050 adds r0, #80 ; 0x50
17adc: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17ae0: f281 8033 bge.w 18b4a <lv_theme_material_init+0x2002>
17ae4: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
17ae6: 2113 movs r1, #19
17ae8: 4620 mov r0, r4
17aea: 4ba6 ldr r3, [pc, #664] ; (17d84 <lv_theme_material_init+0x123c>)
17aec: 4798 blx r3
lv_style_set_pad_top(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF);
17aee: 4ba6 ldr r3, [pc, #664] ; (17d88 <lv_theme_material_init+0x1240>)
17af0: 681c ldr r4, [r3, #0]
17af2: 3478 adds r4, #120 ; 0x78
17af4: 2000 movs r0, #0
17af6: 4ba1 ldr r3, [pc, #644] ; (17d7c <lv_theme_material_init+0x1234>)
17af8: 4798 blx r3
17afa: 2801 cmp r0, #1
17afc: f241 8035 bls.w 18b6a <lv_theme_material_init+0x2022>
17b00: 2000 movs r0, #0
17b02: 4b9f ldr r3, [pc, #636] ; (17d80 <lv_theme_material_init+0x1238>)
17b04: 4798 blx r3
17b06: ebc0 1000 rsb r0, r0, r0, lsl #4
17b0a: 0040 lsls r0, r0, #1
17b0c: 3050 adds r0, #80 ; 0x50
17b0e: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17b12: f281 8045 bge.w 18ba0 <lv_theme_material_init+0x2058>
17b16: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
17b18: 2110 movs r1, #16
17b1a: 4620 mov r0, r4
17b1c: 4b99 ldr r3, [pc, #612] ; (17d84 <lv_theme_material_init+0x123c>)
17b1e: 4798 blx r3
lv_style_set_pad_bottom(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF);
17b20: 4b99 ldr r3, [pc, #612] ; (17d88 <lv_theme_material_init+0x1240>)
17b22: 681c ldr r4, [r3, #0]
17b24: 3478 adds r4, #120 ; 0x78
17b26: 2000 movs r0, #0
17b28: 4b94 ldr r3, [pc, #592] ; (17d7c <lv_theme_material_init+0x1234>)
17b2a: 4798 blx r3
17b2c: 2801 cmp r0, #1
17b2e: f241 8047 bls.w 18bc0 <lv_theme_material_init+0x2078>
17b32: 2000 movs r0, #0
17b34: 4b92 ldr r3, [pc, #584] ; (17d80 <lv_theme_material_init+0x1238>)
17b36: 4798 blx r3
17b38: ebc0 1000 rsb r0, r0, r0, lsl #4
17b3c: 0040 lsls r0, r0, #1
17b3e: 3050 adds r0, #80 ; 0x50
17b40: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17b44: f281 8057 bge.w 18bf6 <lv_theme_material_init+0x20ae>
17b48: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
17b4a: 2111 movs r1, #17
17b4c: 4620 mov r0, r4
17b4e: 4b8d ldr r3, [pc, #564] ; (17d84 <lv_theme_material_init+0x123c>)
17b50: 4798 blx r3
lv_style_set_pad_inner(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF);
17b52: 4b8d ldr r3, [pc, #564] ; (17d88 <lv_theme_material_init+0x1240>)
17b54: 681c ldr r4, [r3, #0]
17b56: 3478 adds r4, #120 ; 0x78
17b58: 2000 movs r0, #0
17b5a: 4b88 ldr r3, [pc, #544] ; (17d7c <lv_theme_material_init+0x1234>)
17b5c: 4798 blx r3
17b5e: 2801 cmp r0, #1
17b60: f241 8059 bls.w 18c16 <lv_theme_material_init+0x20ce>
17b64: 2000 movs r0, #0
17b66: 4b86 ldr r3, [pc, #536] ; (17d80 <lv_theme_material_init+0x1238>)
17b68: 4798 blx r3
17b6a: ebc0 1000 rsb r0, r0, r0, lsl #4
17b6e: 0040 lsls r0, r0, #1
17b70: 3050 adds r0, #80 ; 0x50
17b72: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17b76: f281 8069 bge.w 18c4c <lv_theme_material_init+0x2104>
17b7a: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar)
17b7c: 2114 movs r1, #20
17b7e: 4620 mov r0, r4
17b80: 4b80 ldr r3, [pc, #512] ; (17d84 <lv_theme_material_init+0x123c>)
17b82: 4798 blx r3
lv_style_set_transform_width(&styles->list_btn, LV_STATE_DEFAULT, - PAD_DEF);
17b84: 4b80 ldr r3, [pc, #512] ; (17d88 <lv_theme_material_init+0x1240>)
17b86: 681c ldr r4, [r3, #0]
17b88: 3478 adds r4, #120 ; 0x78
17b8a: 2000 movs r0, #0
17b8c: 4b7b ldr r3, [pc, #492] ; (17d7c <lv_theme_material_init+0x1234>)
17b8e: 4798 blx r3
17b90: 2801 cmp r0, #1
17b92: f241 806b bls.w 18c6c <lv_theme_material_init+0x2124>
17b96: 2000 movs r0, #0
17b98: 4b79 ldr r3, [pc, #484] ; (17d80 <lv_theme_material_init+0x1238>)
17b9a: 4798 blx r3
17b9c: ebc0 1000 rsb r0, r0, r0, lsl #4
17ba0: 0040 lsls r0, r0, #1
17ba2: 3050 adds r0, #80 ; 0x50
17ba4: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17ba8: f281 807c bge.w 18ca4 <lv_theme_material_init+0x215c>
17bac: f04f 32ff mov.w r2, #4294967295
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar)
17bb0: 2104 movs r1, #4
17bb2: 4620 mov r0, r4
17bb4: 4d73 ldr r5, [pc, #460] ; (17d84 <lv_theme_material_init+0x123c>)
17bb6: 47a8 blx r5
lv_style_set_transform_width(&styles->list_btn, LV_STATE_PRESSED, 0);
17bb8: 4c73 ldr r4, [pc, #460] ; (17d88 <lv_theme_material_init+0x1240>)
17bba: 6820 ldr r0, [r4, #0]
17bbc: 2200 movs r2, #0
17bbe: f241 0104 movw r1, #4100 ; 0x1004
17bc2: 3078 adds r0, #120 ; 0x78
17bc4: 47a8 blx r5
lv_style_set_transform_width(&styles->list_btn, LV_STATE_CHECKED, 0);
17bc6: 6820 ldr r0, [r4, #0]
17bc8: 2200 movs r2, #0
17bca: f44f 7182 mov.w r1, #260 ; 0x104
17bce: 3078 adds r0, #120 ; 0x78
17bd0: 47a8 blx r5
lv_style_set_transform_width(&styles->list_btn, LV_STATE_DISABLED, 0);
17bd2: 6820 ldr r0, [r4, #0]
17bd4: 2200 movs r2, #0
17bd6: f242 0104 movw r1, #8196 ; 0x2004
17bda: 3078 adds r0, #120 ; 0x78
17bdc: 47a8 blx r5
lv_style_set_transition_time(&styles->list_btn, LV_STATE_DEFAULT, TRANSITION_TIME);
17bde: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar)
17be0: 2296 movs r2, #150 ; 0x96
17be2: 21b0 movs r1, #176 ; 0xb0
17be4: 3078 adds r0, #120 ; 0x78
17be6: 47a8 blx r5
lv_style_set_transition_prop_6(&styles->list_btn, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR);
17be8: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar)
17bea: 2229 movs r2, #41 ; 0x29
17bec: 21b7 movs r1, #183 ; 0xb7
17bee: 3078 adds r0, #120 ; 0x78
17bf0: 47a8 blx r5
lv_style_set_transition_prop_5(&styles->list_btn, LV_STATE_DEFAULT, LV_STYLE_TRANSFORM_WIDTH);
17bf2: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar)
17bf4: 2204 movs r2, #4
17bf6: 21b6 movs r1, #182 ; 0xb6
17bf8: 3078 adds r0, #120 ; 0x78
17bfa: 47a8 blx r5
style_init_reset(&styles->ddlist_page);
17bfc: 6820 ldr r0, [r4, #0]
17bfe: 3054 adds r0, #84 ; 0x54
17c00: 4b62 ldr r3, [pc, #392] ; (17d8c <lv_theme_material_init+0x1244>)
17c02: 4798 blx r3
lv_style_set_text_line_space(&styles->ddlist_page, LV_STATE_DEFAULT, LV_DPX(20));
17c04: 6824 ldr r4, [r4, #0]
17c06: 3454 adds r4, #84 ; 0x54
17c08: 2000 movs r0, #0
17c0a: 4b5d ldr r3, [pc, #372] ; (17d80 <lv_theme_material_init+0x1238>)
17c0c: 4798 blx r3
17c0e: eb00 0080 add.w r0, r0, r0, lsl #2
17c12: 0080 lsls r0, r0, #2
17c14: 3050 adds r0, #80 ; 0x50
17c16: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17c1a: f281 8053 bge.w 18cc4 <lv_theme_material_init+0x217c>
17c1e: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar)
17c20: f248 0181 movw r1, #32897 ; 0x8081
17c24: 4620 mov r0, r4
17c26: 4d57 ldr r5, [pc, #348] ; (17d84 <lv_theme_material_init+0x123c>)
17c28: 47a8 blx r5
lv_style_set_clip_corner(&styles->ddlist_page, LV_STATE_DEFAULT, true);
17c2a: 4c57 ldr r4, [pc, #348] ; (17d88 <lv_theme_material_init+0x1240>)
17c2c: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar)
17c2e: 2201 movs r2, #1
17c30: 2102 movs r1, #2
17c32: 3054 adds r0, #84 ; 0x54
17c34: 47a8 blx r5
style_init_reset(&styles->ddlist_sel);
17c36: 6820 ldr r0, [r4, #0]
17c38: 3058 adds r0, #88 ; 0x58
17c3a: 4b54 ldr r3, [pc, #336] ; (17d8c <lv_theme_material_init+0x1244>)
17c3c: 4798 blx r3
lv_style_set_bg_opa(&styles->ddlist_sel, LV_STATE_DEFAULT, LV_OPA_COVER);
17c3e: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
17c40: 22ff movs r2, #255 ; 0xff
17c42: 212c movs r1, #44 ; 0x2c
17c44: 3058 adds r0, #88 ; 0x58
17c46: 4b52 ldr r3, [pc, #328] ; (17d90 <lv_theme_material_init+0x1248>)
17c48: 4798 blx r3
lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_DEFAULT, theme.color_primary);
17c4a: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
17c4c: 89a2 ldrh r2, [r4, #12]
17c4e: 2129 movs r1, #41 ; 0x29
17c50: 3058 adds r0, #88 ; 0x58
17c52: 4d50 ldr r5, [pc, #320] ; (17d94 <lv_theme_material_init+0x124c>)
17c54: 47a8 blx r5
lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex3(0xfff) : lv_color_hex3(0xfff));
17c56: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
17c58: f04f 32ff mov.w r2, #4294967295
17c5c: f248 0189 movw r1, #32905 ; 0x8089
17c60: 3058 adds r0, #88 ; 0x58
17c62: 47a8 blx r5
lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_PR);
17c64: 6820 ldr r0, [r4, #0]
17c66: 3058 adds r0, #88 ; 0x58
17c68: 6a23 ldr r3, [r4, #32]
17c6a: f013 0f02 tst.w r3, #2
17c6e: f041 8039 bne.w 18ce4 <lv_theme_material_init+0x219c>
17c72: 2309 movs r3, #9
17c74: 2113 movs r1, #19
17c76: 240a movs r4, #10
17c78: f04f 0200 mov.w r2, #0
17c7c: f364 0204 bfi r2, r4, #0, #5
17c80: f361 124a bfi r2, r1, #5, #6
17c84: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
17c88: f241 0129 movw r1, #4137 ; 0x1029
17c8c: 4b41 ldr r3, [pc, #260] ; (17d94 <lv_theme_material_init+0x124c>)
17c8e: 4798 blx r3
lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_TEXT_PR);
17c90: 4b3d ldr r3, [pc, #244] ; (17d88 <lv_theme_material_init+0x1240>)
17c92: 6818 ldr r0, [r3, #0]
17c94: 3058 adds r0, #88 ; 0x58
17c96: 6a1b ldr r3, [r3, #32]
17c98: f013 0f02 tst.w r3, #2
17c9c: f041 8027 bne.w 18cee <lv_theme_material_init+0x21a6>
17ca0: 231f movs r3, #31
17ca2: 213f movs r1, #63 ; 0x3f
17ca4: 461c mov r4, r3
17ca6: f04f 0200 mov.w r2, #0
17caa: f364 0204 bfi r2, r4, #0, #5
17cae: f361 124a bfi r2, r1, #5, #6
17cb2: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
17cb6: f249 0189 movw r1, #37001 ; 0x9089
17cba: 4b36 ldr r3, [pc, #216] ; (17d94 <lv_theme_material_init+0x124c>)
17cbc: 4798 blx r3
style_init_reset(&styles->roller_bg);
17cbe: 4c32 ldr r4, [pc, #200] ; (17d88 <lv_theme_material_init+0x1240>)
17cc0: 6820 ldr r0, [r4, #0]
17cc2: 3088 adds r0, #136 ; 0x88
17cc4: 4b31 ldr r3, [pc, #196] ; (17d8c <lv_theme_material_init+0x1244>)
17cc6: 4798 blx r3
lv_style_set_text_line_space(&styles->roller_bg, LV_STATE_DEFAULT, LV_DPX(25));
17cc8: 6824 ldr r4, [r4, #0]
17cca: 3488 adds r4, #136 ; 0x88
17ccc: 2000 movs r0, #0
17cce: 4b2c ldr r3, [pc, #176] ; (17d80 <lv_theme_material_init+0x1238>)
17cd0: 4798 blx r3
17cd2: eb00 0080 add.w r0, r0, r0, lsl #2
17cd6: eb00 0080 add.w r0, r0, r0, lsl #2
17cda: 3050 adds r0, #80 ; 0x50
17cdc: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17ce0: f281 800a bge.w 18cf8 <lv_theme_material_init+0x21b0>
17ce4: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar)
17ce6: f248 0181 movw r1, #32897 ; 0x8081
17cea: 4620 mov r0, r4
17cec: 4b25 ldr r3, [pc, #148] ; (17d84 <lv_theme_material_init+0x123c>)
17cee: 4798 blx r3
style_init_reset(&styles->roller_sel);
17cf0: 4c25 ldr r4, [pc, #148] ; (17d88 <lv_theme_material_init+0x1240>)
17cf2: 6820 ldr r0, [r4, #0]
17cf4: 308c adds r0, #140 ; 0x8c
17cf6: 4e25 ldr r6, [pc, #148] ; (17d8c <lv_theme_material_init+0x1244>)
17cf8: 47b0 blx r6
lv_style_set_bg_opa(&styles->roller_sel, LV_STATE_DEFAULT, LV_OPA_COVER);
17cfa: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
17cfc: 22ff movs r2, #255 ; 0xff
17cfe: 212c movs r1, #44 ; 0x2c
17d00: 308c adds r0, #140 ; 0x8c
17d02: 4d23 ldr r5, [pc, #140] ; (17d90 <lv_theme_material_init+0x1248>)
17d04: 47a8 blx r5
lv_style_set_bg_color(&styles->roller_sel, LV_STATE_DEFAULT, theme.color_primary);
17d06: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
17d08: 89a2 ldrh r2, [r4, #12]
17d0a: 2129 movs r1, #41 ; 0x29
17d0c: 308c adds r0, #140 ; 0x8c
17d0e: 4f21 ldr r7, [pc, #132] ; (17d94 <lv_theme_material_init+0x124c>)
17d10: 47b8 blx r7
lv_style_set_text_color(&styles->roller_sel, LV_STATE_DEFAULT, LV_COLOR_WHITE);
17d12: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
17d14: 4b20 ldr r3, [pc, #128] ; (17d98 <lv_theme_material_init+0x1250>)
17d16: 881a ldrh r2, [r3, #0]
17d18: f248 0189 movw r1, #32905 ; 0x8089
17d1c: 308c adds r0, #140 ; 0x8c
17d1e: 47b8 blx r7
style_init_reset(&styles->tabview_btns_bg);
17d20: 6820 ldr r0, [r4, #0]
17d22: 30a8 adds r0, #168 ; 0xa8
17d24: 47b0 blx r6
lv_style_set_bg_opa(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_OPA_COVER);
17d26: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
17d28: 22ff movs r2, #255 ; 0xff
17d2a: 212c movs r1, #44 ; 0x2c
17d2c: 30a8 adds r0, #168 ; 0xa8
17d2e: 47a8 blx r5
lv_style_set_bg_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_BG);
17d30: 6820 ldr r0, [r4, #0]
17d32: 30a8 adds r0, #168 ; 0xa8
17d34: 6a23 ldr r3, [r4, #32]
17d36: f013 0f02 tst.w r3, #2
17d3a: f040 87ee bne.w 18d1a <lv_theme_material_init+0x21d2>
17d3e: 230b movs r3, #11
17d40: 2118 movs r1, #24
17d42: 240e movs r4, #14
17d44: f04f 0200 mov.w r2, #0
17d48: f364 0204 bfi r2, r4, #0, #5
17d4c: f361 124a bfi r2, r1, #5, #6
17d50: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
17d54: 2129 movs r1, #41 ; 0x29
17d56: 4b0f ldr r3, [pc, #60] ; (17d94 <lv_theme_material_init+0x124c>)
17d58: 4798 blx r3
lv_style_set_border_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT,
17d5a: 4b0b ldr r3, [pc, #44] ; (17d88 <lv_theme_material_init+0x1240>)
17d5c: 6818 ldr r0, [r3, #0]
IS_LIGHT ? lv_color_hex(0xe4eaf0) : lv_color_hex(0x3b3e42));
17d5e: 6a1b ldr r3, [r3, #32]
lv_style_set_border_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT,
17d60: f013 0302 ands.w r3, r3, #2
17d64: bf14 ite ne
17d66: 211c movne r1, #28
17d68: 2107 moveq r1, #7
17d6a: 2b00 cmp r3, #0
17d6c: bf15 itete ne
17d6e: 243a movne r4, #58 ; 0x3a
17d70: 240f moveq r4, #15
17d72: 231e movne r3, #30
17d74: 2308 moveq r3, #8
17d76: f04f 0200 mov.w r2, #0
17d7a: e00f b.n 17d9c <lv_theme_material_init+0x1254>
17d7c: 00010f59 .word 0x00010f59
17d80: 00010f3d .word 0x00010f3d
17d84: 000068e1 .word 0x000068e1
17d88: 20006bd8 .word 0x20006bd8
17d8c: 00014a61 .word 0x00014a61
17d90: 00006b69 .word 0x00006b69
17d94: 00006a25 .word 0x00006a25
17d98: 00029584 .word 0x00029584
17d9c: f363 0204 bfi r2, r3, #0, #5
17da0: f364 124a bfi r2, r4, #5, #6
17da4: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar)
17da8: 2139 movs r1, #57 ; 0x39
17daa: 30a8 adds r0, #168 ; 0xa8
17dac: 4bb6 ldr r3, [pc, #728] ; (18088 <lv_theme_material_init+0x1540>)
17dae: 4798 blx r3
lv_style_set_border_width(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(5));
17db0: 4bb6 ldr r3, [pc, #728] ; (1808c <lv_theme_material_init+0x1544>)
17db2: 681c ldr r4, [r3, #0]
17db4: 34a8 adds r4, #168 ; 0xa8
17db6: 2000 movs r0, #0
17db8: 4bb5 ldr r3, [pc, #724] ; (18090 <lv_theme_material_init+0x1548>)
17dba: 4798 blx r3
17dbc: eb00 0080 add.w r0, r0, r0, lsl #2
17dc0: 3050 adds r0, #80 ; 0x50
17dc2: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17dc6: f280 87ad bge.w 18d24 <lv_theme_material_init+0x21dc>
17dca: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar)
17dcc: 2130 movs r1, #48 ; 0x30
17dce: 4620 mov r0, r4
17dd0: 4db0 ldr r5, [pc, #704] ; (18094 <lv_theme_material_init+0x154c>)
17dd2: 47a8 blx r5
lv_style_set_border_side(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_BORDER_SIDE_BOTTOM);
17dd4: 4cad ldr r4, [pc, #692] ; (1808c <lv_theme_material_init+0x1544>)
17dd6: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar)
17dd8: 2201 movs r2, #1
17dda: 2131 movs r1, #49 ; 0x31
17ddc: 30a8 adds r0, #168 ; 0xa8
17dde: 47a8 blx r5
lv_style_set_text_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_SCR_TEXT);
17de0: 6820 ldr r0, [r4, #0]
17de2: 6a23 ldr r3, [r4, #32]
17de4: f013 0302 ands.w r3, r3, #2
17de8: bf14 ite ne
17dea: 2107 movne r1, #7
17dec: 211c moveq r1, #28
17dee: 2b00 cmp r3, #0
17df0: bf15 itete ne
17df2: 240f movne r4, #15
17df4: 243a moveq r4, #58 ; 0x3a
17df6: 2308 movne r3, #8
17df8: 231d moveq r3, #29
17dfa: f04f 0200 mov.w r2, #0
17dfe: f363 0204 bfi r2, r3, #0, #5
17e02: f364 124a bfi r2, r4, #5, #6
17e06: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
17e0a: f248 0189 movw r1, #32905 ; 0x8089
17e0e: 30a8 adds r0, #168 ; 0xa8
17e10: 4d9d ldr r5, [pc, #628] ; (18088 <lv_theme_material_init+0x1540>)
17e12: 47a8 blx r5
lv_style_set_text_font(&styles->tabview_btns_bg, LV_STATE_DEFAULT, theme.font_normal);
17e14: 4c9d ldr r4, [pc, #628] ; (1808c <lv_theme_material_init+0x1544>)
17e16: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar)
17e18: 6962 ldr r2, [r4, #20]
17e1a: f248 018e movw r1, #32910 ; 0x808e
17e1e: 30a8 adds r0, #168 ; 0xa8
17e20: 4b9d ldr r3, [pc, #628] ; (18098 <lv_theme_material_init+0x1550>)
17e22: 4798 blx r3
lv_style_set_image_recolor(&styles->tabview_btns_bg, LV_STATE_DEFAULT, lv_color_hex(0x979a9f));
17e24: 6820 ldr r0, [r4, #0]
17e26: f04f 0200 mov.w r2, #0
17e2a: 2313 movs r3, #19
17e2c: f363 0204 bfi r2, r3, #0, #5
17e30: 2326 movs r3, #38 ; 0x26
17e32: f363 124a bfi r2, r3, #5, #6
17e36: 2312 movs r3, #18
17e38: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar)
17e3c: f248 01a9 movw r1, #32937 ; 0x80a9
17e40: 30a8 adds r0, #168 ; 0xa8
17e42: 47a8 blx r5
lv_style_set_pad_top(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7));
17e44: 6824 ldr r4, [r4, #0]
17e46: 34a8 adds r4, #168 ; 0xa8
17e48: 2000 movs r0, #0
17e4a: 4b91 ldr r3, [pc, #580] ; (18090 <lv_theme_material_init+0x1548>)
17e4c: 4798 blx r3
17e4e: ebc0 00c0 rsb r0, r0, r0, lsl #3
17e52: 3050 adds r0, #80 ; 0x50
17e54: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17e58: f280 8773 bge.w 18d42 <lv_theme_material_init+0x21fa>
17e5c: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
17e5e: 2110 movs r1, #16
17e60: 4620 mov r0, r4
17e62: 4b8c ldr r3, [pc, #560] ; (18094 <lv_theme_material_init+0x154c>)
17e64: 4798 blx r3
lv_style_set_pad_left(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7));
17e66: 4b89 ldr r3, [pc, #548] ; (1808c <lv_theme_material_init+0x1544>)
17e68: 681c ldr r4, [r3, #0]
17e6a: 34a8 adds r4, #168 ; 0xa8
17e6c: 2000 movs r0, #0
17e6e: 4b88 ldr r3, [pc, #544] ; (18090 <lv_theme_material_init+0x1548>)
17e70: 4798 blx r3
17e72: ebc0 00c0 rsb r0, r0, r0, lsl #3
17e76: 3050 adds r0, #80 ; 0x50
17e78: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17e7c: f280 8774 bge.w 18d68 <lv_theme_material_init+0x2220>
17e80: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
17e82: 2112 movs r1, #18
17e84: 4620 mov r0, r4
17e86: 4b83 ldr r3, [pc, #524] ; (18094 <lv_theme_material_init+0x154c>)
17e88: 4798 blx r3
lv_style_set_pad_right(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7));
17e8a: 4b80 ldr r3, [pc, #512] ; (1808c <lv_theme_material_init+0x1544>)
17e8c: 681c ldr r4, [r3, #0]
17e8e: 34a8 adds r4, #168 ; 0xa8
17e90: 2000 movs r0, #0
17e92: 4b7f ldr r3, [pc, #508] ; (18090 <lv_theme_material_init+0x1548>)
17e94: 4798 blx r3
17e96: ebc0 00c0 rsb r0, r0, r0, lsl #3
17e9a: 3050 adds r0, #80 ; 0x50
17e9c: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17ea0: f280 8771 bge.w 18d86 <lv_theme_material_init+0x223e>
17ea4: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
17ea6: 2113 movs r1, #19
17ea8: 4620 mov r0, r4
17eaa: 4b7a ldr r3, [pc, #488] ; (18094 <lv_theme_material_init+0x154c>)
17eac: 4798 blx r3
style_init_reset(&styles->tabview_btns);
17eae: 4c77 ldr r4, [pc, #476] ; (1808c <lv_theme_material_init+0x1544>)
17eb0: 6820 ldr r0, [r4, #0]
17eb2: 30a4 adds r0, #164 ; 0xa4
17eb4: 4b79 ldr r3, [pc, #484] ; (1809c <lv_theme_material_init+0x1554>)
17eb6: 4798 blx r3
lv_style_set_bg_opa(&styles->tabview_btns, LV_STATE_PRESSED, LV_OPA_50);
17eb8: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
17eba: 227f movs r2, #127 ; 0x7f
17ebc: f241 012c movw r1, #4140 ; 0x102c
17ec0: 30a4 adds r0, #164 ; 0xa4
17ec2: 4b77 ldr r3, [pc, #476] ; (180a0 <lv_theme_material_init+0x1558>)
17ec4: 4798 blx r3
lv_style_set_bg_color(&styles->tabview_btns, LV_STATE_PRESSED, lv_color_hex3(0x888));
17ec6: 6820 ldr r0, [r4, #0]
17ec8: 2311 movs r3, #17
17eca: f04f 0200 mov.w r2, #0
17ece: f363 0204 bfi r2, r3, #0, #5
17ed2: 2122 movs r1, #34 ; 0x22
17ed4: f361 124a bfi r2, r1, #5, #6
17ed8: f363 22cf bfi r2, r3, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
17edc: f241 0129 movw r1, #4137 ; 0x1029
17ee0: 30a4 adds r0, #164 ; 0xa4
17ee2: 4b69 ldr r3, [pc, #420] ; (18088 <lv_theme_material_init+0x1540>)
17ee4: 4798 blx r3
lv_style_set_text_color(&styles->tabview_btns, LV_STATE_CHECKED, COLOR_SCR_TEXT);
17ee6: 6820 ldr r0, [r4, #0]
17ee8: 6a23 ldr r3, [r4, #32]
17eea: f013 0302 ands.w r3, r3, #2
17eee: bf14 ite ne
17ef0: 2107 movne r1, #7
17ef2: 211c moveq r1, #28
17ef4: 2b00 cmp r3, #0
17ef6: bf15 itete ne
17ef8: 240f movne r4, #15
17efa: 243a moveq r4, #58 ; 0x3a
17efc: 2308 movne r3, #8
17efe: 231d moveq r3, #29
17f00: f04f 0200 mov.w r2, #0
17f04: f363 0204 bfi r2, r3, #0, #5
17f08: f364 124a bfi r2, r4, #5, #6
17f0c: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
17f10: f248 1189 movw r1, #33161 ; 0x8189
17f14: 30a4 adds r0, #164 ; 0xa4
17f16: 4b5c ldr r3, [pc, #368] ; (18088 <lv_theme_material_init+0x1540>)
17f18: 4798 blx r3
lv_style_set_pad_top(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20));
17f1a: 4b5c ldr r3, [pc, #368] ; (1808c <lv_theme_material_init+0x1544>)
17f1c: 681c ldr r4, [r3, #0]
17f1e: 34a4 adds r4, #164 ; 0xa4
17f20: 2000 movs r0, #0
17f22: 4b5b ldr r3, [pc, #364] ; (18090 <lv_theme_material_init+0x1548>)
17f24: 4798 blx r3
17f26: eb00 0080 add.w r0, r0, r0, lsl #2
17f2a: 0080 lsls r0, r0, #2
17f2c: 3050 adds r0, #80 ; 0x50
17f2e: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17f32: f280 8737 bge.w 18da4 <lv_theme_material_init+0x225c>
17f36: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
17f38: 2110 movs r1, #16
17f3a: 4620 mov r0, r4
17f3c: 4b55 ldr r3, [pc, #340] ; (18094 <lv_theme_material_init+0x154c>)
17f3e: 4798 blx r3
lv_style_set_pad_bottom(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20));
17f40: 4b52 ldr r3, [pc, #328] ; (1808c <lv_theme_material_init+0x1544>)
17f42: 681c ldr r4, [r3, #0]
17f44: 34a4 adds r4, #164 ; 0xa4
17f46: 2000 movs r0, #0
17f48: 4b51 ldr r3, [pc, #324] ; (18090 <lv_theme_material_init+0x1548>)
17f4a: 4798 blx r3
17f4c: eb00 0080 add.w r0, r0, r0, lsl #2
17f50: 0080 lsls r0, r0, #2
17f52: 3050 adds r0, #80 ; 0x50
17f54: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17f58: f280 8734 bge.w 18dc4 <lv_theme_material_init+0x227c>
17f5c: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
17f5e: 2111 movs r1, #17
17f60: 4620 mov r0, r4
17f62: 4b4c ldr r3, [pc, #304] ; (18094 <lv_theme_material_init+0x154c>)
17f64: 4798 blx r3
lv_style_set_text_color(&styles->tabview_btns, LV_STATE_FOCUSED, theme.color_primary);
17f66: 4c49 ldr r4, [pc, #292] ; (1808c <lv_theme_material_init+0x1544>)
17f68: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
17f6a: 89a2 ldrh r2, [r4, #12]
17f6c: f248 2189 movw r1, #33417 ; 0x8289
17f70: 30a4 adds r0, #164 ; 0xa4
17f72: 4d45 ldr r5, [pc, #276] ; (18088 <lv_theme_material_init+0x1540>)
17f74: 47a8 blx r5
lv_style_set_text_color(&styles->tabview_btns, LV_STATE_EDITED, theme.color_secondary);
17f76: 6820 ldr r0, [r4, #0]
17f78: 89e2 ldrh r2, [r4, #14]
17f7a: f248 4189 movw r1, #33929 ; 0x8489
17f7e: 30a4 adds r0, #164 ; 0xa4
17f80: 47a8 blx r5
style_init_reset(&styles->tabview_indic);
17f82: 6820 ldr r0, [r4, #0]
17f84: 30ac adds r0, #172 ; 0xac
17f86: 4b45 ldr r3, [pc, #276] ; (1809c <lv_theme_material_init+0x1554>)
17f88: 4798 blx r3
lv_style_set_bg_opa(&styles->tabview_indic, LV_STATE_DEFAULT, LV_OPA_COVER);
17f8a: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
17f8c: 22ff movs r2, #255 ; 0xff
17f8e: 212c movs r1, #44 ; 0x2c
17f90: 30ac adds r0, #172 ; 0xac
17f92: 4b43 ldr r3, [pc, #268] ; (180a0 <lv_theme_material_init+0x1558>)
17f94: 4798 blx r3
lv_style_set_bg_color(&styles->tabview_indic, LV_STATE_DEFAULT, theme.color_primary);
17f96: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
17f98: 89a2 ldrh r2, [r4, #12]
17f9a: 2129 movs r1, #41 ; 0x29
17f9c: 30ac adds r0, #172 ; 0xac
17f9e: 47a8 blx r5
lv_style_set_bg_color(&styles->tabview_indic, LV_STATE_EDITED, theme.color_secondary);
17fa0: 6820 ldr r0, [r4, #0]
17fa2: 89e2 ldrh r2, [r4, #14]
17fa4: f240 4129 movw r1, #1065 ; 0x429
17fa8: 30ac adds r0, #172 ; 0xac
17faa: 47a8 blx r5
lv_style_set_size(&styles->tabview_indic, LV_STATE_DEFAULT, LV_DPX(5));
17fac: 6824 ldr r4, [r4, #0]
17fae: 34ac adds r4, #172 ; 0xac
17fb0: 2000 movs r0, #0
17fb2: 4b37 ldr r3, [pc, #220] ; (18090 <lv_theme_material_init+0x1548>)
17fb4: 4798 blx r3
17fb6: eb00 0080 add.w r0, r0, r0, lsl #2
17fba: 3050 adds r0, #80 ; 0x50
17fbc: f5b0 7fa0 cmp.w r0, #320 ; 0x140
17fc0: f280 8710 bge.w 18de4 <lv_theme_material_init+0x229c>
17fc4: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar)
17fc6: 2103 movs r1, #3
17fc8: 4620 mov r0, r4
17fca: 4d32 ldr r5, [pc, #200] ; (18094 <lv_theme_material_init+0x154c>)
17fcc: 47a8 blx r5
lv_style_set_radius(&styles->tabview_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
17fce: 4c2f ldr r4, [pc, #188] ; (1808c <lv_theme_material_init+0x1544>)
17fd0: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
17fd2: f647 72ff movw r2, #32767 ; 0x7fff
17fd6: 2101 movs r1, #1
17fd8: 30ac adds r0, #172 ; 0xac
17fda: 47a8 blx r5
style_init_reset(&styles->tabview_page_scrl);
17fdc: 6820 ldr r0, [r4, #0]
17fde: 30b0 adds r0, #176 ; 0xb0
17fe0: 4b2e ldr r3, [pc, #184] ; (1809c <lv_theme_material_init+0x1554>)
17fe2: 4798 blx r3
lv_style_set_pad_top(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF);
17fe4: 6824 ldr r4, [r4, #0]
17fe6: 34b0 adds r4, #176 ; 0xb0
17fe8: 2000 movs r0, #0
17fea: 4b2e ldr r3, [pc, #184] ; (180a4 <lv_theme_material_init+0x155c>)
17fec: 4798 blx r3
17fee: 2801 cmp r0, #1
17ff0: f240 8707 bls.w 18e02 <lv_theme_material_init+0x22ba>
17ff4: 2000 movs r0, #0
17ff6: 4b26 ldr r3, [pc, #152] ; (18090 <lv_theme_material_init+0x1548>)
17ff8: 4798 blx r3
17ffa: ebc0 1000 rsb r0, r0, r0, lsl #4
17ffe: 0040 lsls r0, r0, #1
18000: 3050 adds r0, #80 ; 0x50
18002: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18006: f280 8717 bge.w 18e38 <lv_theme_material_init+0x22f0>
1800a: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
1800c: 2110 movs r1, #16
1800e: 4620 mov r0, r4
18010: 4b20 ldr r3, [pc, #128] ; (18094 <lv_theme_material_init+0x154c>)
18012: 4798 blx r3
lv_style_set_pad_bottom(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF);
18014: 4b1d ldr r3, [pc, #116] ; (1808c <lv_theme_material_init+0x1544>)
18016: 681c ldr r4, [r3, #0]
18018: 34b0 adds r4, #176 ; 0xb0
1801a: 2000 movs r0, #0
1801c: 4b21 ldr r3, [pc, #132] ; (180a4 <lv_theme_material_init+0x155c>)
1801e: 4798 blx r3
18020: 2801 cmp r0, #1
18022: f240 8719 bls.w 18e58 <lv_theme_material_init+0x2310>
18026: 2000 movs r0, #0
18028: 4b19 ldr r3, [pc, #100] ; (18090 <lv_theme_material_init+0x1548>)
1802a: 4798 blx r3
1802c: ebc0 1000 rsb r0, r0, r0, lsl #4
18030: 0040 lsls r0, r0, #1
18032: 3050 adds r0, #80 ; 0x50
18034: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18038: f280 8729 bge.w 18e8e <lv_theme_material_init+0x2346>
1803c: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
1803e: 2111 movs r1, #17
18040: 4620 mov r0, r4
18042: 4b14 ldr r3, [pc, #80] ; (18094 <lv_theme_material_init+0x154c>)
18044: 4798 blx r3
lv_style_set_pad_left(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF);
18046: 4b11 ldr r3, [pc, #68] ; (1808c <lv_theme_material_init+0x1544>)
18048: 681c ldr r4, [r3, #0]
1804a: 34b0 adds r4, #176 ; 0xb0
1804c: 2000 movs r0, #0
1804e: 4b15 ldr r3, [pc, #84] ; (180a4 <lv_theme_material_init+0x155c>)
18050: 4798 blx r3
18052: 2801 cmp r0, #1
18054: f240 872b bls.w 18eae <lv_theme_material_init+0x2366>
18058: 2000 movs r0, #0
1805a: 4b0d ldr r3, [pc, #52] ; (18090 <lv_theme_material_init+0x1548>)
1805c: 4798 blx r3
1805e: ebc0 1000 rsb r0, r0, r0, lsl #4
18062: 0040 lsls r0, r0, #1
18064: 3050 adds r0, #80 ; 0x50
18066: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1806a: f280 873b bge.w 18ee4 <lv_theme_material_init+0x239c>
1806e: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
18070: 2112 movs r1, #18
18072: 4620 mov r0, r4
18074: 4b07 ldr r3, [pc, #28] ; (18094 <lv_theme_material_init+0x154c>)
18076: 4798 blx r3
lv_style_set_pad_right(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF);
18078: 4b04 ldr r3, [pc, #16] ; (1808c <lv_theme_material_init+0x1544>)
1807a: 681c ldr r4, [r3, #0]
1807c: 34b0 adds r4, #176 ; 0xb0
1807e: 2000 movs r0, #0
18080: 4b08 ldr r3, [pc, #32] ; (180a4 <lv_theme_material_init+0x155c>)
18082: 4798 blx r3
18084: 2801 cmp r0, #1
18086: e00f b.n 180a8 <lv_theme_material_init+0x1560>
18088: 00006a25 .word 0x00006a25
1808c: 20006bd8 .word 0x20006bd8
18090: 00010f3d .word 0x00010f3d
18094: 000068e1 .word 0x000068e1
18098: 00006c99 .word 0x00006c99
1809c: 00014a61 .word 0x00014a61
180a0: 00006b69 .word 0x00006b69
180a4: 00010f59 .word 0x00010f59
180a8: f240 872c bls.w 18f04 <lv_theme_material_init+0x23bc>
180ac: 2000 movs r0, #0
180ae: 4bbd ldr r3, [pc, #756] ; (183a4 <lv_theme_material_init+0x185c>)
180b0: 4798 blx r3
180b2: ebc0 1000 rsb r0, r0, r0, lsl #4
180b6: 0040 lsls r0, r0, #1
180b8: 3050 adds r0, #80 ; 0x50
180ba: f5b0 7fa0 cmp.w r0, #320 ; 0x140
180be: f280 873c bge.w 18f3a <lv_theme_material_init+0x23f2>
180c2: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
180c4: 2113 movs r1, #19
180c6: 4620 mov r0, r4
180c8: 4bb7 ldr r3, [pc, #732] ; (183a8 <lv_theme_material_init+0x1860>)
180ca: 4798 blx r3
lv_style_set_pad_inner(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF);
180cc: 4bb7 ldr r3, [pc, #732] ; (183ac <lv_theme_material_init+0x1864>)
180ce: 681c ldr r4, [r3, #0]
180d0: 34b0 adds r4, #176 ; 0xb0
180d2: 2000 movs r0, #0
180d4: 4bb6 ldr r3, [pc, #728] ; (183b0 <lv_theme_material_init+0x1868>)
180d6: 4798 blx r3
180d8: 2801 cmp r0, #1
180da: f240 873e bls.w 18f5a <lv_theme_material_init+0x2412>
180de: 2000 movs r0, #0
180e0: 4bb0 ldr r3, [pc, #704] ; (183a4 <lv_theme_material_init+0x185c>)
180e2: 4798 blx r3
180e4: ebc0 1000 rsb r0, r0, r0, lsl #4
180e8: 0040 lsls r0, r0, #1
180ea: 3050 adds r0, #80 ; 0x50
180ec: f5b0 7fa0 cmp.w r0, #320 ; 0x140
180f0: f280 874e bge.w 18f90 <lv_theme_material_init+0x2448>
180f4: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar)
180f6: 2114 movs r1, #20
180f8: 4620 mov r0, r4
180fa: 4bab ldr r3, [pc, #684] ; (183a8 <lv_theme_material_init+0x1860>)
180fc: 4798 blx r3
style_init_reset(&styles->table_cell);
180fe: 4cab ldr r4, [pc, #684] ; (183ac <lv_theme_material_init+0x1864>)
18100: 6820 ldr r0, [r4, #0]
18102: 30a0 adds r0, #160 ; 0xa0
18104: 4bab ldr r3, [pc, #684] ; (183b4 <lv_theme_material_init+0x186c>)
18106: 4798 blx r3
lv_style_set_border_color(&styles->table_cell, LV_STATE_DEFAULT, COLOR_BG_BORDER);
18108: 6820 ldr r0, [r4, #0]
1810a: 6a23 ldr r3, [r4, #32]
1810c: f013 0302 ands.w r3, r3, #2
18110: bf14 ite ne
18112: 211a movne r1, #26
18114: 2110 moveq r1, #16
18116: 2b00 cmp r3, #0
18118: bf15 itete ne
1811a: 2437 movne r4, #55 ; 0x37
1811c: 2422 moveq r4, #34 ; 0x22
1811e: 231c movne r3, #28
18120: 2312 moveq r3, #18
18122: f04f 0200 mov.w r2, #0
18126: f363 0204 bfi r2, r3, #0, #5
1812a: f364 124a bfi r2, r4, #5, #6
1812e: f361 22cf bfi r2, r1, #11, #5
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar)
18132: 2139 movs r1, #57 ; 0x39
18134: 30a0 adds r0, #160 ; 0xa0
18136: 4ba0 ldr r3, [pc, #640] ; (183b8 <lv_theme_material_init+0x1870>)
18138: 4798 blx r3
lv_style_set_border_width(&styles->table_cell, LV_STATE_DEFAULT, 1);
1813a: 4c9c ldr r4, [pc, #624] ; (183ac <lv_theme_material_init+0x1864>)
1813c: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar)
1813e: 2201 movs r2, #1
18140: 2130 movs r1, #48 ; 0x30
18142: 30a0 adds r0, #160 ; 0xa0
18144: 4d98 ldr r5, [pc, #608] ; (183a8 <lv_theme_material_init+0x1860>)
18146: 47a8 blx r5
lv_style_set_border_side(&styles->table_cell, LV_STATE_DEFAULT, LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM);
18148: 6820 ldr r0, [r4, #0]
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar)
1814a: 2203 movs r2, #3
1814c: 2131 movs r1, #49 ; 0x31
1814e: 30a0 adds r0, #160 ; 0xa0
18150: 47a8 blx r5
lv_style_set_pad_left(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF);
18152: 6824 ldr r4, [r4, #0]
18154: 34a0 adds r4, #160 ; 0xa0
18156: 2000 movs r0, #0
18158: 4b95 ldr r3, [pc, #596] ; (183b0 <lv_theme_material_init+0x1868>)
1815a: 4798 blx r3
1815c: 2801 cmp r0, #1
1815e: f240 8727 bls.w 18fb0 <lv_theme_material_init+0x2468>
18162: 2000 movs r0, #0
18164: 4b8f ldr r3, [pc, #572] ; (183a4 <lv_theme_material_init+0x185c>)
18166: 4798 blx r3
18168: ebc0 1000 rsb r0, r0, r0, lsl #4
1816c: 0040 lsls r0, r0, #1
1816e: 3050 adds r0, #80 ; 0x50
18170: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18174: f280 8737 bge.w 18fe6 <lv_theme_material_init+0x249e>
18178: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
1817a: 2112 movs r1, #18
1817c: 4620 mov r0, r4
1817e: 4b8a ldr r3, [pc, #552] ; (183a8 <lv_theme_material_init+0x1860>)
18180: 4798 blx r3
lv_style_set_pad_right(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF);
18182: 4b8a ldr r3, [pc, #552] ; (183ac <lv_theme_material_init+0x1864>)
18184: 681c ldr r4, [r3, #0]
18186: 34a0 adds r4, #160 ; 0xa0
18188: 2000 movs r0, #0
1818a: 4b89 ldr r3, [pc, #548] ; (183b0 <lv_theme_material_init+0x1868>)
1818c: 4798 blx r3
1818e: 2801 cmp r0, #1
18190: f240 8739 bls.w 19006 <lv_theme_material_init+0x24be>
18194: 2000 movs r0, #0
18196: 4b83 ldr r3, [pc, #524] ; (183a4 <lv_theme_material_init+0x185c>)
18198: 4798 blx r3
1819a: ebc0 1000 rsb r0, r0, r0, lsl #4
1819e: 0040 lsls r0, r0, #1
181a0: 3050 adds r0, #80 ; 0x50
181a2: f5b0 7fa0 cmp.w r0, #320 ; 0x140
181a6: f280 8749 bge.w 1903c <lv_theme_material_init+0x24f4>
181aa: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
181ac: 2113 movs r1, #19
181ae: 4620 mov r0, r4
181b0: 4b7d ldr r3, [pc, #500] ; (183a8 <lv_theme_material_init+0x1860>)
181b2: 4798 blx r3
lv_style_set_pad_top(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF);
181b4: 4b7d ldr r3, [pc, #500] ; (183ac <lv_theme_material_init+0x1864>)
181b6: 681c ldr r4, [r3, #0]
181b8: 34a0 adds r4, #160 ; 0xa0
181ba: 2000 movs r0, #0
181bc: 4b7c ldr r3, [pc, #496] ; (183b0 <lv_theme_material_init+0x1868>)
181be: 4798 blx r3
181c0: 2801 cmp r0, #1
181c2: f240 874b bls.w 1905c <lv_theme_material_init+0x2514>
181c6: 2000 movs r0, #0
181c8: 4b76 ldr r3, [pc, #472] ; (183a4 <lv_theme_material_init+0x185c>)
181ca: 4798 blx r3
181cc: ebc0 1000 rsb r0, r0, r0, lsl #4
181d0: 0040 lsls r0, r0, #1
181d2: 3050 adds r0, #80 ; 0x50
181d4: f5b0 7fa0 cmp.w r0, #320 ; 0x140
181d8: f280 8760 bge.w 1909c <lv_theme_material_init+0x2554>
181dc: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
181de: 2110 movs r1, #16
181e0: 4620 mov r0, r4
181e2: 4b71 ldr r3, [pc, #452] ; (183a8 <lv_theme_material_init+0x1860>)
181e4: 4798 blx r3
lv_style_set_pad_bottom(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF);
181e6: 4b71 ldr r3, [pc, #452] ; (183ac <lv_theme_material_init+0x1864>)
181e8: 681c ldr r4, [r3, #0]
181ea: 34a0 adds r4, #160 ; 0xa0
181ec: 2000 movs r0, #0
181ee: 4b70 ldr r3, [pc, #448] ; (183b0 <lv_theme_material_init+0x1868>)
181f0: 4798 blx r3
181f2: 2801 cmp r0, #1
181f4: f240 8762 bls.w 190bc <lv_theme_material_init+0x2574>
181f8: 2000 movs r0, #0
181fa: 4b6a ldr r3, [pc, #424] ; (183a4 <lv_theme_material_init+0x185c>)
181fc: 4798 blx r3
181fe: ebc0 1000 rsb r0, r0, r0, lsl #4
18202: 0040 lsls r0, r0, #1
18204: 3050 adds r0, #80 ; 0x50
18206: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1820a: f280 8772 bge.w 190f2 <lv_theme_material_init+0x25aa>
1820e: 2201 movs r2, #1
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
18210: 2111 movs r1, #17
18212: 4620 mov r0, r4
18214: 4b64 ldr r3, [pc, #400] ; (183a8 <lv_theme_material_init+0x1860>)
18216: 4798 blx r3
theme.apply_xcb = theme_apply;
18218: 4c64 ldr r4, [pc, #400] ; (183ac <lv_theme_material_init+0x1864>)
1821a: 4b68 ldr r3, [pc, #416] ; (183bc <lv_theme_material_init+0x1874>)
1821c: 60a3 str r3, [r4, #8]
inited = true;
1821e: 2301 movs r3, #1
18220: 7123 strb r3, [r4, #4]
lv_obj_report_style_mod(NULL);
18222: 2000 movs r0, #0
18224: 4b66 ldr r3, [pc, #408] ; (183c0 <lv_theme_material_init+0x1878>)
18226: 4798 blx r3
}
18228: f104 0008 add.w r0, r4, #8
1822c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
LV_GC_ROOT(_lv_theme_material_styles) = lv_mem_alloc(sizeof(theme_styles_t));
18230: 20bc movs r0, #188 ; 0xbc
18232: 4b64 ldr r3, [pc, #400] ; (183c4 <lv_theme_material_init+0x187c>)
18234: 4798 blx r3
18236: 4b64 ldr r3, [pc, #400] ; (183c8 <lv_theme_material_init+0x1880>)
18238: 6018 str r0, [r3, #0]
styles = (theme_styles_t *)LV_GC_ROOT(_lv_theme_material_styles);
1823a: 4b5c ldr r3, [pc, #368] ; (183ac <lv_theme_material_init+0x1864>)
1823c: 6018 str r0, [r3, #0]
1823e: f7fe bc8e b.w 16b5e <lv_theme_material_init+0x16>
lv_style_set_text_color(&styles->chart_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd));
18242: 2315 movs r3, #21
18244: 212a movs r1, #42 ; 0x2a
18246: 461c mov r4, r3
18248: f7fe bcb3 b.w 16bb2 <lv_theme_material_init+0x6a>
lv_style_set_line_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(1));
1824c: 2000 movs r0, #0
1824e: 4b55 ldr r3, [pc, #340] ; (183a4 <lv_theme_material_init+0x185c>)
18250: 4798 blx r3
18252: 3050 adds r0, #80 ; 0x50
18254: 4b5d ldr r3, [pc, #372] ; (183cc <lv_theme_material_init+0x1884>)
18256: fb83 2300 smull r2, r3, r3, r0
1825a: 17c2 asrs r2, r0, #31
1825c: ebc2 12a3 rsb r2, r2, r3, asr #6
18260: b212 sxth r2, r2
18262: f7fe bcc2 b.w 16bea <lv_theme_material_init+0xa2>
lv_style_set_line_dash_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10));
18266: 2000 movs r0, #0
18268: 4b4e ldr r3, [pc, #312] ; (183a4 <lv_theme_material_init+0x185c>)
1826a: 4798 blx r3
1826c: eb00 0080 add.w r0, r0, r0, lsl #2
18270: 0040 lsls r0, r0, #1
18272: 3050 adds r0, #80 ; 0x50
18274: 4b55 ldr r3, [pc, #340] ; (183cc <lv_theme_material_init+0x1884>)
18276: fb83 2300 smull r2, r3, r3, r0
1827a: 17c2 asrs r2, r0, #31
1827c: ebc2 12a3 rsb r2, r2, r3, asr #6
18280: b212 sxth r2, r2
18282: f7fe bcc5 b.w 16c10 <lv_theme_material_init+0xc8>
lv_style_set_line_dash_gap(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10));
18286: 2000 movs r0, #0
18288: 4b46 ldr r3, [pc, #280] ; (183a4 <lv_theme_material_init+0x185c>)
1828a: 4798 blx r3
1828c: eb00 0080 add.w r0, r0, r0, lsl #2
18290: 0040 lsls r0, r0, #1
18292: 3050 adds r0, #80 ; 0x50
18294: 4b4d ldr r3, [pc, #308] ; (183cc <lv_theme_material_init+0x1884>)
18296: fb83 2300 smull r2, r3, r3, r0
1829a: 17c2 asrs r2, r0, #31
1829c: ebc2 12a3 rsb r2, r2, r3, asr #6
182a0: b212 sxth r2, r2
182a2: f7fe bcc8 b.w 16c36 <lv_theme_material_init+0xee>
lv_style_set_line_width(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(3));
182a6: 2000 movs r0, #0
182a8: 4b3e ldr r3, [pc, #248] ; (183a4 <lv_theme_material_init+0x185c>)
182aa: 4798 blx r3
182ac: eb00 0040 add.w r0, r0, r0, lsl #1
182b0: 3050 adds r0, #80 ; 0x50
182b2: 4b46 ldr r3, [pc, #280] ; (183cc <lv_theme_material_init+0x1884>)
182b4: fb83 2300 smull r2, r3, r3, r0
182b8: 17c2 asrs r2, r0, #31
182ba: ebc2 12a3 rsb r2, r2, r3, asr #6
182be: b212 sxth r2, r2
182c0: f7fe bce9 b.w 16c96 <lv_theme_material_init+0x14e>
lv_style_set_size(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(4));
182c4: 2000 movs r0, #0
182c6: 4b37 ldr r3, [pc, #220] ; (183a4 <lv_theme_material_init+0x185c>)
182c8: 4798 blx r3
182ca: 3014 adds r0, #20
182cc: 0080 lsls r0, r0, #2
182ce: 4b3f ldr r3, [pc, #252] ; (183cc <lv_theme_material_init+0x1884>)
182d0: fb83 2300 smull r2, r3, r3, r0
182d4: 17c2 asrs r2, r0, #31
182d6: ebc2 12a3 rsb r2, r2, r3, asr #6
182da: b212 sxth r2, r2
182dc: f7fe bcec b.w 16cb8 <lv_theme_material_init+0x170>
lv_style_set_pad_inner(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(2)); /*Space between columns*/
182e0: 2000 movs r0, #0
182e2: 4b30 ldr r3, [pc, #192] ; (183a4 <lv_theme_material_init+0x185c>)
182e4: 4798 blx r3
182e6: 3028 adds r0, #40 ; 0x28
182e8: 0040 lsls r0, r0, #1
182ea: 4b38 ldr r3, [pc, #224] ; (183cc <lv_theme_material_init+0x1884>)
182ec: fb83 2300 smull r2, r3, r3, r0
182f0: 17c2 asrs r2, r0, #31
182f2: ebc2 12a3 rsb r2, r2, r3, asr #6
182f6: b212 sxth r2, r2
182f8: f7fe bcef b.w 16cda <lv_theme_material_init+0x192>
lv_style_set_radius(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(1));
182fc: 2000 movs r0, #0
182fe: 4b29 ldr r3, [pc, #164] ; (183a4 <lv_theme_material_init+0x185c>)
18300: 4798 blx r3
18302: 3050 adds r0, #80 ; 0x50
18304: 4b31 ldr r3, [pc, #196] ; (183cc <lv_theme_material_init+0x1884>)
18306: fb83 2300 smull r2, r3, r3, r0
1830a: 17c2 asrs r2, r0, #31
1830c: ebc2 12a3 rsb r2, r2, r3, asr #6
18310: b212 sxth r2, r2
18312: f7fe bcf2 b.w 16cfa <lv_theme_material_init+0x1b2>
lv_style_set_pad_top(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF);
18316: 2000 movs r0, #0
18318: 4b22 ldr r3, [pc, #136] ; (183a4 <lv_theme_material_init+0x185c>)
1831a: 4798 blx r3
1831c: ebc0 1000 rsb r0, r0, r0, lsl #4
18320: 3050 adds r0, #80 ; 0x50
18322: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18326: da02 bge.n 1832e <lv_theme_material_init+0x17e6>
18328: 2201 movs r2, #1
1832a: f7fe bd03 b.w 16d34 <lv_theme_material_init+0x1ec>
1832e: 2000 movs r0, #0
18330: 4b1c ldr r3, [pc, #112] ; (183a4 <lv_theme_material_init+0x185c>)
18332: 4798 blx r3
18334: ebc0 1000 rsb r0, r0, r0, lsl #4
18338: 3050 adds r0, #80 ; 0x50
1833a: 4b24 ldr r3, [pc, #144] ; (183cc <lv_theme_material_init+0x1884>)
1833c: fb83 2300 smull r2, r3, r3, r0
18340: 17c2 asrs r2, r0, #31
18342: ebc2 12a3 rsb r2, r2, r3, asr #6
18346: b212 sxth r2, r2
18348: f7fe bcf4 b.w 16d34 <lv_theme_material_init+0x1ec>
1834c: 2000 movs r0, #0
1834e: 4b15 ldr r3, [pc, #84] ; (183a4 <lv_theme_material_init+0x185c>)
18350: 4798 blx r3
18352: ebc0 1000 rsb r0, r0, r0, lsl #4
18356: 0040 lsls r0, r0, #1
18358: 3050 adds r0, #80 ; 0x50
1835a: 4b1c ldr r3, [pc, #112] ; (183cc <lv_theme_material_init+0x1884>)
1835c: fb83 2300 smull r2, r3, r3, r0
18360: 17c2 asrs r2, r0, #31
18362: ebc2 12a3 rsb r2, r2, r3, asr #6
18366: b212 sxth r2, r2
18368: f7fe bce4 b.w 16d34 <lv_theme_material_init+0x1ec>
lv_style_set_pad_left(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF);
1836c: 2000 movs r0, #0
1836e: 4b0d ldr r3, [pc, #52] ; (183a4 <lv_theme_material_init+0x185c>)
18370: 4798 blx r3
18372: ebc0 1000 rsb r0, r0, r0, lsl #4
18376: 3050 adds r0, #80 ; 0x50
18378: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1837c: da02 bge.n 18384 <lv_theme_material_init+0x183c>
1837e: 2201 movs r2, #1
18380: f7fe bcf1 b.w 16d66 <lv_theme_material_init+0x21e>
18384: 2000 movs r0, #0
18386: 4b07 ldr r3, [pc, #28] ; (183a4 <lv_theme_material_init+0x185c>)
18388: 4798 blx r3
1838a: ebc0 1000 rsb r0, r0, r0, lsl #4
1838e: 3050 adds r0, #80 ; 0x50
18390: 4b0e ldr r3, [pc, #56] ; (183cc <lv_theme_material_init+0x1884>)
18392: fb83 2300 smull r2, r3, r3, r0
18396: 17c2 asrs r2, r0, #31
18398: ebc2 12a3 rsb r2, r2, r3, asr #6
1839c: b212 sxth r2, r2
1839e: f7fe bce2 b.w 16d66 <lv_theme_material_init+0x21e>
183a2: bf00 nop
183a4: 00010f3d .word 0x00010f3d
183a8: 000068e1 .word 0x000068e1
183ac: 20006bd8 .word 0x20006bd8
183b0: 00010f59 .word 0x00010f59
183b4: 00014a61 .word 0x00014a61
183b8: 00006a25 .word 0x00006a25
183bc: 000141f9 .word 0x000141f9
183c0: 00003c55 .word 0x00003c55
183c4: 000123dd .word 0x000123dd
183c8: 20006d48 .word 0x20006d48
183cc: 66666667 .word 0x66666667
183d0: 2000 movs r0, #0
183d2: 4bc7 ldr r3, [pc, #796] ; (186f0 <lv_theme_material_init+0x1ba8>)
183d4: 4798 blx r3
183d6: ebc0 1000 rsb r0, r0, r0, lsl #4
183da: 0040 lsls r0, r0, #1
183dc: 3050 adds r0, #80 ; 0x50
183de: 4bc5 ldr r3, [pc, #788] ; (186f4 <lv_theme_material_init+0x1bac>)
183e0: fb83 2300 smull r2, r3, r3, r0
183e4: 17c2 asrs r2, r0, #31
183e6: ebc2 12a3 rsb r2, r2, r3, asr #6
183ea: b212 sxth r2, r2
183ec: f7fe bcbb b.w 16d66 <lv_theme_material_init+0x21e>
lv_style_set_pad_right(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF);
183f0: 2000 movs r0, #0
183f2: 4bbf ldr r3, [pc, #764] ; (186f0 <lv_theme_material_init+0x1ba8>)
183f4: 4798 blx r3
183f6: ebc0 1000 rsb r0, r0, r0, lsl #4
183fa: 3050 adds r0, #80 ; 0x50
183fc: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18400: da02 bge.n 18408 <lv_theme_material_init+0x18c0>
18402: 2201 movs r2, #1
18404: f7fe bcc8 b.w 16d98 <lv_theme_material_init+0x250>
18408: 2000 movs r0, #0
1840a: 4bb9 ldr r3, [pc, #740] ; (186f0 <lv_theme_material_init+0x1ba8>)
1840c: 4798 blx r3
1840e: ebc0 1000 rsb r0, r0, r0, lsl #4
18412: 3050 adds r0, #80 ; 0x50
18414: 4bb7 ldr r3, [pc, #732] ; (186f4 <lv_theme_material_init+0x1bac>)
18416: fb83 2300 smull r2, r3, r3, r0
1841a: 17c2 asrs r2, r0, #31
1841c: ebc2 12a3 rsb r2, r2, r3, asr #6
18420: b212 sxth r2, r2
18422: f7fe bcb9 b.w 16d98 <lv_theme_material_init+0x250>
18426: 2000 movs r0, #0
18428: 4bb1 ldr r3, [pc, #708] ; (186f0 <lv_theme_material_init+0x1ba8>)
1842a: 4798 blx r3
1842c: ebc0 1000 rsb r0, r0, r0, lsl #4
18430: 0040 lsls r0, r0, #1
18432: 3050 adds r0, #80 ; 0x50
18434: 4baf ldr r3, [pc, #700] ; (186f4 <lv_theme_material_init+0x1bac>)
18436: fb83 2300 smull r2, r3, r3, r0
1843a: 17c2 asrs r2, r0, #31
1843c: ebc2 12a3 rsb r2, r2, r3, asr #6
18440: b212 sxth r2, r2
18442: f7fe bca9 b.w 16d98 <lv_theme_material_init+0x250>
lv_style_set_pad_bottom(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF);
18446: 2000 movs r0, #0
18448: 4ba9 ldr r3, [pc, #676] ; (186f0 <lv_theme_material_init+0x1ba8>)
1844a: 4798 blx r3
1844c: ebc0 1000 rsb r0, r0, r0, lsl #4
18450: 3050 adds r0, #80 ; 0x50
18452: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18456: da02 bge.n 1845e <lv_theme_material_init+0x1916>
18458: 2201 movs r2, #1
1845a: f7fe bcb6 b.w 16dca <lv_theme_material_init+0x282>
1845e: 2000 movs r0, #0
18460: 4ba3 ldr r3, [pc, #652] ; (186f0 <lv_theme_material_init+0x1ba8>)
18462: 4798 blx r3
18464: ebc0 1000 rsb r0, r0, r0, lsl #4
18468: 3050 adds r0, #80 ; 0x50
1846a: 4ba2 ldr r3, [pc, #648] ; (186f4 <lv_theme_material_init+0x1bac>)
1846c: fb83 2300 smull r2, r3, r3, r0
18470: 17c2 asrs r2, r0, #31
18472: ebc2 12a3 rsb r2, r2, r3, asr #6
18476: b212 sxth r2, r2
18478: f7fe bca7 b.w 16dca <lv_theme_material_init+0x282>
1847c: 2000 movs r0, #0
1847e: 4b9c ldr r3, [pc, #624] ; (186f0 <lv_theme_material_init+0x1ba8>)
18480: 4798 blx r3
18482: ebc0 1000 rsb r0, r0, r0, lsl #4
18486: 0040 lsls r0, r0, #1
18488: 3050 adds r0, #80 ; 0x50
1848a: 4b9a ldr r3, [pc, #616] ; (186f4 <lv_theme_material_init+0x1bac>)
1848c: fb83 2300 smull r2, r3, r3, r0
18490: 17c2 asrs r2, r0, #31
18492: ebc2 12a3 rsb r2, r2, r3, asr #6
18496: b212 sxth r2, r2
18498: f7fe bc97 b.w 16dca <lv_theme_material_init+0x282>
lv_style_set_text_color(&styles->calendar_daynames, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex3(0xeee));
1849c: 2306 movs r3, #6
1849e: 2110 movs r1, #16
184a0: 2409 movs r4, #9
184a2: f7fe bcdc b.w 16e5e <lv_theme_material_init+0x316>
lv_style_set_pad_left(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF);
184a6: 2000 movs r0, #0
184a8: 4b91 ldr r3, [pc, #580] ; (186f0 <lv_theme_material_init+0x1ba8>)
184aa: 4798 blx r3
184ac: ebc0 1000 rsb r0, r0, r0, lsl #4
184b0: 3050 adds r0, #80 ; 0x50
184b2: f5b0 7fa0 cmp.w r0, #320 ; 0x140
184b6: da02 bge.n 184be <lv_theme_material_init+0x1976>
184b8: 2201 movs r2, #1
184ba: f7fe bcf1 b.w 16ea0 <lv_theme_material_init+0x358>
184be: 2000 movs r0, #0
184c0: 4b8b ldr r3, [pc, #556] ; (186f0 <lv_theme_material_init+0x1ba8>)
184c2: 4798 blx r3
184c4: ebc0 1000 rsb r0, r0, r0, lsl #4
184c8: 3050 adds r0, #80 ; 0x50
184ca: 4b8a ldr r3, [pc, #552] ; (186f4 <lv_theme_material_init+0x1bac>)
184cc: fb83 2300 smull r2, r3, r3, r0
184d0: 17c2 asrs r2, r0, #31
184d2: ebc2 12a3 rsb r2, r2, r3, asr #6
184d6: b212 sxth r2, r2
184d8: f7fe bce2 b.w 16ea0 <lv_theme_material_init+0x358>
184dc: 2000 movs r0, #0
184de: 4b84 ldr r3, [pc, #528] ; (186f0 <lv_theme_material_init+0x1ba8>)
184e0: 4798 blx r3
184e2: ebc0 1000 rsb r0, r0, r0, lsl #4
184e6: 0040 lsls r0, r0, #1
184e8: 3050 adds r0, #80 ; 0x50
184ea: 4b82 ldr r3, [pc, #520] ; (186f4 <lv_theme_material_init+0x1bac>)
184ec: fb83 2300 smull r2, r3, r3, r0
184f0: 17c2 asrs r2, r0, #31
184f2: ebc2 12a3 rsb r2, r2, r3, asr #6
184f6: b212 sxth r2, r2
184f8: f7fe bcd2 b.w 16ea0 <lv_theme_material_init+0x358>
lv_style_set_pad_right(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF);
184fc: 2000 movs r0, #0
184fe: 4b7c ldr r3, [pc, #496] ; (186f0 <lv_theme_material_init+0x1ba8>)
18500: 4798 blx r3
18502: ebc0 1000 rsb r0, r0, r0, lsl #4
18506: 3050 adds r0, #80 ; 0x50
18508: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1850c: da02 bge.n 18514 <lv_theme_material_init+0x19cc>
1850e: 2201 movs r2, #1
18510: f7fe bcdf b.w 16ed2 <lv_theme_material_init+0x38a>
18514: 2000 movs r0, #0
18516: 4b76 ldr r3, [pc, #472] ; (186f0 <lv_theme_material_init+0x1ba8>)
18518: 4798 blx r3
1851a: ebc0 1000 rsb r0, r0, r0, lsl #4
1851e: 3050 adds r0, #80 ; 0x50
18520: 4b74 ldr r3, [pc, #464] ; (186f4 <lv_theme_material_init+0x1bac>)
18522: fb83 2300 smull r2, r3, r3, r0
18526: 17c2 asrs r2, r0, #31
18528: ebc2 12a3 rsb r2, r2, r3, asr #6
1852c: b212 sxth r2, r2
1852e: f7fe bcd0 b.w 16ed2 <lv_theme_material_init+0x38a>
18532: 2000 movs r0, #0
18534: 4b6e ldr r3, [pc, #440] ; (186f0 <lv_theme_material_init+0x1ba8>)
18536: 4798 blx r3
18538: ebc0 1000 rsb r0, r0, r0, lsl #4
1853c: 0040 lsls r0, r0, #1
1853e: 3050 adds r0, #80 ; 0x50
18540: 4b6c ldr r3, [pc, #432] ; (186f4 <lv_theme_material_init+0x1bac>)
18542: fb83 2300 smull r2, r3, r3, r0
18546: 17c2 asrs r2, r0, #31
18548: ebc2 12a3 rsb r2, r2, r3, asr #6
1854c: b212 sxth r2, r2
1854e: f7fe bcc0 b.w 16ed2 <lv_theme_material_init+0x38a>
lv_style_set_pad_bottom(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF);
18552: 2000 movs r0, #0
18554: 4b66 ldr r3, [pc, #408] ; (186f0 <lv_theme_material_init+0x1ba8>)
18556: 4798 blx r3
18558: ebc0 1000 rsb r0, r0, r0, lsl #4
1855c: 3050 adds r0, #80 ; 0x50
1855e: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18562: da02 bge.n 1856a <lv_theme_material_init+0x1a22>
18564: 2201 movs r2, #1
18566: f7fe bccd b.w 16f04 <lv_theme_material_init+0x3bc>
1856a: 2000 movs r0, #0
1856c: 4b60 ldr r3, [pc, #384] ; (186f0 <lv_theme_material_init+0x1ba8>)
1856e: 4798 blx r3
18570: ebc0 1000 rsb r0, r0, r0, lsl #4
18574: 3050 adds r0, #80 ; 0x50
18576: 4b5f ldr r3, [pc, #380] ; (186f4 <lv_theme_material_init+0x1bac>)
18578: fb83 2300 smull r2, r3, r3, r0
1857c: 17c2 asrs r2, r0, #31
1857e: ebc2 12a3 rsb r2, r2, r3, asr #6
18582: b212 sxth r2, r2
18584: f7fe bcbe b.w 16f04 <lv_theme_material_init+0x3bc>
18588: 2000 movs r0, #0
1858a: 4b59 ldr r3, [pc, #356] ; (186f0 <lv_theme_material_init+0x1ba8>)
1858c: 4798 blx r3
1858e: ebc0 1000 rsb r0, r0, r0, lsl #4
18592: 0040 lsls r0, r0, #1
18594: 3050 adds r0, #80 ; 0x50
18596: 4b57 ldr r3, [pc, #348] ; (186f4 <lv_theme_material_init+0x1bac>)
18598: fb83 2300 smull r2, r3, r3, r0
1859c: 17c2 asrs r2, r0, #31
1859e: ebc2 12a3 rsb r2, r2, r3, asr #6
185a2: b212 sxth r2, r2
185a4: f7fe bcae b.w 16f04 <lv_theme_material_init+0x3bc>
lv_style_set_radius(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(4));
185a8: 2000 movs r0, #0
185aa: 4b51 ldr r3, [pc, #324] ; (186f0 <lv_theme_material_init+0x1ba8>)
185ac: 4798 blx r3
185ae: 3014 adds r0, #20
185b0: 0080 lsls r0, r0, #2
185b2: 4b50 ldr r3, [pc, #320] ; (186f4 <lv_theme_material_init+0x1bac>)
185b4: fb83 2300 smull r2, r3, r3, r0
185b8: 17c2 asrs r2, r0, #31
185ba: ebc2 12a3 rsb r2, r2, r3, asr #6
185be: b212 sxth r2, r2
185c0: f7fe bcb5 b.w 16f2e <lv_theme_material_init+0x3e6>
lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE);
185c4: 2306 movs r3, #6
185c6: 2110 movs r1, #16
185c8: 2409 movs r4, #9
185ca: f7fe bcbf b.w 16f4c <lv_theme_material_init+0x404>
lv_style_set_pad_inner(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(3));
185ce: 2000 movs r0, #0
185d0: 4b47 ldr r3, [pc, #284] ; (186f0 <lv_theme_material_init+0x1ba8>)
185d2: 4798 blx r3
185d4: eb00 0040 add.w r0, r0, r0, lsl #1
185d8: 3050 adds r0, #80 ; 0x50
185da: 4b46 ldr r3, [pc, #280] ; (186f4 <lv_theme_material_init+0x1bac>)
185dc: fb83 2300 smull r2, r3, r3, r0
185e0: 17c2 asrs r2, r0, #31
185e2: ebc2 12a3 rsb r2, r2, r3, asr #6
185e6: b212 sxth r2, r2
185e8: f7fe bd20 b.w 1702c <lv_theme_material_init+0x4e4>
lv_style_set_pad_left(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF);
185ec: 2000 movs r0, #0
185ee: 4b40 ldr r3, [pc, #256] ; (186f0 <lv_theme_material_init+0x1ba8>)
185f0: 4798 blx r3
185f2: ebc0 1000 rsb r0, r0, r0, lsl #4
185f6: 3050 adds r0, #80 ; 0x50
185f8: f5b0 7fa0 cmp.w r0, #320 ; 0x140
185fc: da02 bge.n 18604 <lv_theme_material_init+0x1abc>
185fe: 2201 movs r2, #1
18600: f7fe bd2d b.w 1705e <lv_theme_material_init+0x516>
18604: 2000 movs r0, #0
18606: 4b3a ldr r3, [pc, #232] ; (186f0 <lv_theme_material_init+0x1ba8>)
18608: 4798 blx r3
1860a: ebc0 1000 rsb r0, r0, r0, lsl #4
1860e: 3050 adds r0, #80 ; 0x50
18610: 4b38 ldr r3, [pc, #224] ; (186f4 <lv_theme_material_init+0x1bac>)
18612: fb83 2300 smull r2, r3, r3, r0
18616: 17c2 asrs r2, r0, #31
18618: ebc2 12a3 rsb r2, r2, r3, asr #6
1861c: b212 sxth r2, r2
1861e: f7fe bd1e b.w 1705e <lv_theme_material_init+0x516>
18622: 2000 movs r0, #0
18624: 4b32 ldr r3, [pc, #200] ; (186f0 <lv_theme_material_init+0x1ba8>)
18626: 4798 blx r3
18628: ebc0 1000 rsb r0, r0, r0, lsl #4
1862c: 0040 lsls r0, r0, #1
1862e: 3050 adds r0, #80 ; 0x50
18630: 4b30 ldr r3, [pc, #192] ; (186f4 <lv_theme_material_init+0x1bac>)
18632: fb83 2300 smull r2, r3, r3, r0
18636: 17c2 asrs r2, r0, #31
18638: ebc2 12a3 rsb r2, r2, r3, asr #6
1863c: b212 sxth r2, r2
1863e: f7fe bd0e b.w 1705e <lv_theme_material_init+0x516>
lv_style_set_pad_right(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF);
18642: 2000 movs r0, #0
18644: 4b2a ldr r3, [pc, #168] ; (186f0 <lv_theme_material_init+0x1ba8>)
18646: 4798 blx r3
18648: ebc0 1000 rsb r0, r0, r0, lsl #4
1864c: 3050 adds r0, #80 ; 0x50
1864e: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18652: da02 bge.n 1865a <lv_theme_material_init+0x1b12>
18654: 2201 movs r2, #1
18656: f7fe bd1b b.w 17090 <lv_theme_material_init+0x548>
1865a: 2000 movs r0, #0
1865c: 4b24 ldr r3, [pc, #144] ; (186f0 <lv_theme_material_init+0x1ba8>)
1865e: 4798 blx r3
18660: ebc0 1000 rsb r0, r0, r0, lsl #4
18664: 3050 adds r0, #80 ; 0x50
18666: 4b23 ldr r3, [pc, #140] ; (186f4 <lv_theme_material_init+0x1bac>)
18668: fb83 2300 smull r2, r3, r3, r0
1866c: 17c2 asrs r2, r0, #31
1866e: ebc2 12a3 rsb r2, r2, r3, asr #6
18672: b212 sxth r2, r2
18674: f7fe bd0c b.w 17090 <lv_theme_material_init+0x548>
18678: 2000 movs r0, #0
1867a: 4b1d ldr r3, [pc, #116] ; (186f0 <lv_theme_material_init+0x1ba8>)
1867c: 4798 blx r3
1867e: ebc0 1000 rsb r0, r0, r0, lsl #4
18682: 0040 lsls r0, r0, #1
18684: 3050 adds r0, #80 ; 0x50
18686: 4b1b ldr r3, [pc, #108] ; (186f4 <lv_theme_material_init+0x1bac>)
18688: fb83 2300 smull r2, r3, r3, r0
1868c: 17c2 asrs r2, r0, #31
1868e: ebc2 12a3 rsb r2, r2, r3, asr #6
18692: b212 sxth r2, r2
18694: f7fe bcfc b.w 17090 <lv_theme_material_init+0x548>
lv_style_set_pad_bottom(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF);
18698: 2000 movs r0, #0
1869a: 4b15 ldr r3, [pc, #84] ; (186f0 <lv_theme_material_init+0x1ba8>)
1869c: 4798 blx r3
1869e: ebc0 1000 rsb r0, r0, r0, lsl #4
186a2: 3050 adds r0, #80 ; 0x50
186a4: f5b0 7fa0 cmp.w r0, #320 ; 0x140
186a8: da02 bge.n 186b0 <lv_theme_material_init+0x1b68>
186aa: 2201 movs r2, #1
186ac: f7fe bd09 b.w 170c2 <lv_theme_material_init+0x57a>
186b0: 2000 movs r0, #0
186b2: 4b0f ldr r3, [pc, #60] ; (186f0 <lv_theme_material_init+0x1ba8>)
186b4: 4798 blx r3
186b6: ebc0 1000 rsb r0, r0, r0, lsl #4
186ba: 3050 adds r0, #80 ; 0x50
186bc: 4b0d ldr r3, [pc, #52] ; (186f4 <lv_theme_material_init+0x1bac>)
186be: fb83 2300 smull r2, r3, r3, r0
186c2: 17c2 asrs r2, r0, #31
186c4: ebc2 12a3 rsb r2, r2, r3, asr #6
186c8: b212 sxth r2, r2
186ca: f7fe bcfa b.w 170c2 <lv_theme_material_init+0x57a>
186ce: 2000 movs r0, #0
186d0: 4b07 ldr r3, [pc, #28] ; (186f0 <lv_theme_material_init+0x1ba8>)
186d2: 4798 blx r3
186d4: ebc0 1000 rsb r0, r0, r0, lsl #4
186d8: 0040 lsls r0, r0, #1
186da: 3050 adds r0, #80 ; 0x50
186dc: 4b05 ldr r3, [pc, #20] ; (186f4 <lv_theme_material_init+0x1bac>)
186de: fb83 2300 smull r2, r3, r3, r0
186e2: 17c2 asrs r2, r0, #31
186e4: ebc2 12a3 rsb r2, r2, r3, asr #6
186e8: b212 sxth r2, r2
186ea: f7fe bcea b.w 170c2 <lv_theme_material_init+0x57a>
186ee: bf00 nop
186f0: 00010f3d .word 0x00010f3d
186f4: 66666667 .word 0x66666667
lv_style_set_scale_width(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(30));
186f8: 2000 movs r0, #0
186fa: 4bc9 ldr r3, [pc, #804] ; (18a20 <lv_theme_material_init+0x1ed8>)
186fc: 4798 blx r3
186fe: ebc0 1000 rsb r0, r0, r0, lsl #4
18702: 0040 lsls r0, r0, #1
18704: 3050 adds r0, #80 ; 0x50
18706: 4bc7 ldr r3, [pc, #796] ; (18a24 <lv_theme_material_init+0x1edc>)
18708: fb83 2300 smull r2, r3, r3, r0
1870c: 17c2 asrs r2, r0, #31
1870e: ebc2 12a3 rsb r2, r2, r3, asr #6
18712: b212 sxth r2, r2
18714: f7fe bcec b.w 170f0 <lv_theme_material_init+0x5a8>
lv_style_set_pad_inner(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(20));
18718: 2000 movs r0, #0
1871a: 4bc1 ldr r3, [pc, #772] ; (18a20 <lv_theme_material_init+0x1ed8>)
1871c: 4798 blx r3
1871e: eb00 0080 add.w r0, r0, r0, lsl #2
18722: 0080 lsls r0, r0, #2
18724: 3050 adds r0, #80 ; 0x50
18726: 4bbf ldr r3, [pc, #764] ; (18a24 <lv_theme_material_init+0x1edc>)
18728: fb83 2300 smull r2, r3, r3, r0
1872c: 17c2 asrs r2, r0, #31
1872e: ebc2 12a3 rsb r2, r2, r3, asr #6
18732: b212 sxth r2, r2
18734: f7fe bd21 b.w 1717a <lv_theme_material_init+0x632>
lv_style_set_pad_left(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13));
18738: 2000 movs r0, #0
1873a: 4bb9 ldr r3, [pc, #740] ; (18a20 <lv_theme_material_init+0x1ed8>)
1873c: 4798 blx r3
1873e: eb00 0240 add.w r2, r0, r0, lsl #1
18742: eb00 0082 add.w r0, r0, r2, lsl #2
18746: 3050 adds r0, #80 ; 0x50
18748: 4bb6 ldr r3, [pc, #728] ; (18a24 <lv_theme_material_init+0x1edc>)
1874a: fb83 2300 smull r2, r3, r3, r0
1874e: 17c2 asrs r2, r0, #31
18750: ebc2 12a3 rsb r2, r2, r3, asr #6
18754: b212 sxth r2, r2
18756: f7fe bd57 b.w 17208 <lv_theme_material_init+0x6c0>
lv_style_set_pad_right(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13));
1875a: 2000 movs r0, #0
1875c: 4bb0 ldr r3, [pc, #704] ; (18a20 <lv_theme_material_init+0x1ed8>)
1875e: 4798 blx r3
18760: eb00 0240 add.w r2, r0, r0, lsl #1
18764: eb00 0082 add.w r0, r0, r2, lsl #2
18768: 3050 adds r0, #80 ; 0x50
1876a: 4bae ldr r3, [pc, #696] ; (18a24 <lv_theme_material_init+0x1edc>)
1876c: fb83 2300 smull r2, r3, r3, r0
18770: 17c2 asrs r2, r0, #31
18772: ebc2 12a3 rsb r2, r2, r3, asr #6
18776: b212 sxth r2, r2
18778: f7fe bd5a b.w 17230 <lv_theme_material_init+0x6e8>
lv_style_set_pad_top(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13));
1877c: 2000 movs r0, #0
1877e: 4ba8 ldr r3, [pc, #672] ; (18a20 <lv_theme_material_init+0x1ed8>)
18780: 4798 blx r3
18782: eb00 0240 add.w r2, r0, r0, lsl #1
18786: eb00 0082 add.w r0, r0, r2, lsl #2
1878a: 3050 adds r0, #80 ; 0x50
1878c: 4ba5 ldr r3, [pc, #660] ; (18a24 <lv_theme_material_init+0x1edc>)
1878e: fb83 2300 smull r2, r3, r3, r0
18792: 17c2 asrs r2, r0, #31
18794: ebc2 12a3 rsb r2, r2, r3, asr #6
18798: b212 sxth r2, r2
1879a: f7fe bd5d b.w 17258 <lv_theme_material_init+0x710>
lv_style_set_pad_bottom(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13));
1879e: 2000 movs r0, #0
187a0: 4b9f ldr r3, [pc, #636] ; (18a20 <lv_theme_material_init+0x1ed8>)
187a2: 4798 blx r3
187a4: eb00 0240 add.w r2, r0, r0, lsl #1
187a8: eb00 0082 add.w r0, r0, r2, lsl #2
187ac: 3050 adds r0, #80 ; 0x50
187ae: 4b9d ldr r3, [pc, #628] ; (18a24 <lv_theme_material_init+0x1edc>)
187b0: fb83 2300 smull r2, r3, r3, r0
187b4: 17c2 asrs r2, r0, #31
187b6: ebc2 12a3 rsb r2, r2, r3, asr #6
187ba: b212 sxth r2, r2
187bc: f7fe bd60 b.w 17280 <lv_theme_material_init+0x738>
lv_style_set_radius(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(4));
187c0: 2000 movs r0, #0
187c2: 4b97 ldr r3, [pc, #604] ; (18a20 <lv_theme_material_init+0x1ed8>)
187c4: 4798 blx r3
187c6: 3014 adds r0, #20
187c8: 0080 lsls r0, r0, #2
187ca: 4b96 ldr r3, [pc, #600] ; (18a24 <lv_theme_material_init+0x1edc>)
187cc: fb83 2300 smull r2, r3, r3, r0
187d0: 17c2 asrs r2, r0, #31
187d2: ebc2 12a3 rsb r2, r2, r3, asr #6
187d6: b212 sxth r2, r2
187d8: f7fe bd67 b.w 172aa <lv_theme_material_init+0x762>
lv_style_set_pad_inner(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10));
187dc: 2000 movs r0, #0
187de: 4b90 ldr r3, [pc, #576] ; (18a20 <lv_theme_material_init+0x1ed8>)
187e0: 4798 blx r3
187e2: eb00 0080 add.w r0, r0, r0, lsl #2
187e6: 0040 lsls r0, r0, #1
187e8: 3050 adds r0, #80 ; 0x50
187ea: 4b8e ldr r3, [pc, #568] ; (18a24 <lv_theme_material_init+0x1edc>)
187ec: fb83 2300 smull r2, r3, r3, r0
187f0: 17c2 asrs r2, r0, #31
187f2: ebc2 12a3 rsb r2, r2, r3, asr #6
187f6: b212 sxth r2, r2
187f8: f7fe bd6a b.w 172d0 <lv_theme_material_init+0x788>
lv_style_set_outline_width(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(3));
187fc: 2000 movs r0, #0
187fe: 4b88 ldr r3, [pc, #544] ; (18a20 <lv_theme_material_init+0x1ed8>)
18800: 4798 blx r3
18802: eb00 0040 add.w r0, r0, r0, lsl #1
18806: 3050 adds r0, #80 ; 0x50
18808: 4b86 ldr r3, [pc, #536] ; (18a24 <lv_theme_material_init+0x1edc>)
1880a: fb83 2300 smull r2, r3, r3, r0
1880e: 17c2 asrs r2, r0, #31
18810: ebc2 12a3 rsb r2, r2, r3, asr #6
18814: b212 sxth r2, r2
18816: f7fe bd7f b.w 17318 <lv_theme_material_init+0x7d0>
lv_style_set_outline_pad(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10));
1881a: 2000 movs r0, #0
1881c: 4b80 ldr r3, [pc, #512] ; (18a20 <lv_theme_material_init+0x1ed8>)
1881e: 4798 blx r3
18820: eb00 0080 add.w r0, r0, r0, lsl #2
18824: 0040 lsls r0, r0, #1
18826: 3050 adds r0, #80 ; 0x50
18828: 4b7e ldr r3, [pc, #504] ; (18a24 <lv_theme_material_init+0x1edc>)
1882a: fb83 2300 smull r2, r3, r3, r0
1882e: 17c2 asrs r2, r0, #31
18830: ebc2 12a3 rsb r2, r2, r3, asr #6
18834: b212 sxth r2, r2
18836: f7fe bd82 b.w 1733e <lv_theme_material_init+0x7f6>
lv_style_set_radius(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(4));
1883a: 2000 movs r0, #0
1883c: 4b78 ldr r3, [pc, #480] ; (18a20 <lv_theme_material_init+0x1ed8>)
1883e: 4798 blx r3
18840: 3014 adds r0, #20
18842: 0080 lsls r0, r0, #2
18844: 4b77 ldr r3, [pc, #476] ; (18a24 <lv_theme_material_init+0x1edc>)
18846: fb83 2300 smull r2, r3, r3, r0
1884a: 17c2 asrs r2, r0, #31
1884c: ebc2 12a3 rsb r2, r2, r3, asr #6
18850: b212 sxth r2, r2
18852: f7fe bd9a b.w 1738a <lv_theme_material_init+0x842>
lv_style_set_pad_left(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3));
18856: 2000 movs r0, #0
18858: 4b71 ldr r3, [pc, #452] ; (18a20 <lv_theme_material_init+0x1ed8>)
1885a: 4798 blx r3
1885c: eb00 0040 add.w r0, r0, r0, lsl #1
18860: 3050 adds r0, #80 ; 0x50
18862: 4b70 ldr r3, [pc, #448] ; (18a24 <lv_theme_material_init+0x1edc>)
18864: fb83 2300 smull r2, r3, r3, r0
18868: 17c2 asrs r2, r0, #31
1886a: ebc2 12a3 rsb r2, r2, r3, asr #6
1886e: b212 sxth r2, r2
18870: f7fe bdb2 b.w 173d8 <lv_theme_material_init+0x890>
lv_style_set_pad_right(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3));
18874: 2000 movs r0, #0
18876: 4b6a ldr r3, [pc, #424] ; (18a20 <lv_theme_material_init+0x1ed8>)
18878: 4798 blx r3
1887a: eb00 0040 add.w r0, r0, r0, lsl #1
1887e: 3050 adds r0, #80 ; 0x50
18880: 4b68 ldr r3, [pc, #416] ; (18a24 <lv_theme_material_init+0x1edc>)
18882: fb83 2300 smull r2, r3, r3, r0
18886: 17c2 asrs r2, r0, #31
18888: ebc2 12a3 rsb r2, r2, r3, asr #6
1888c: b212 sxth r2, r2
1888e: f7fe bdb5 b.w 173fc <lv_theme_material_init+0x8b4>
lv_style_set_pad_top(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3));
18892: 2000 movs r0, #0
18894: 4b62 ldr r3, [pc, #392] ; (18a20 <lv_theme_material_init+0x1ed8>)
18896: 4798 blx r3
18898: eb00 0040 add.w r0, r0, r0, lsl #1
1889c: 3050 adds r0, #80 ; 0x50
1889e: 4b61 ldr r3, [pc, #388] ; (18a24 <lv_theme_material_init+0x1edc>)
188a0: fb83 2300 smull r2, r3, r3, r0
188a4: 17c2 asrs r2, r0, #31
188a6: ebc2 12a3 rsb r2, r2, r3, asr #6
188aa: b212 sxth r2, r2
188ac: f7fe bdb8 b.w 17420 <lv_theme_material_init+0x8d8>
lv_style_set_pad_bottom(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3));
188b0: 2000 movs r0, #0
188b2: 4b5b ldr r3, [pc, #364] ; (18a20 <lv_theme_material_init+0x1ed8>)
188b4: 4798 blx r3
188b6: eb00 0040 add.w r0, r0, r0, lsl #1
188ba: 3050 adds r0, #80 ; 0x50
188bc: 4b59 ldr r3, [pc, #356] ; (18a24 <lv_theme_material_init+0x1edc>)
188be: fb83 2300 smull r2, r3, r3, r0
188c2: 17c2 asrs r2, r0, #31
188c4: ebc2 12a3 rsb r2, r2, r3, asr #6
188c8: b212 sxth r2, r2
188ca: f7fe bdbb b.w 17444 <lv_theme_material_init+0x8fc>
lv_style_set_border_width(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(4));
188ce: 2000 movs r0, #0
188d0: 4b53 ldr r3, [pc, #332] ; (18a20 <lv_theme_material_init+0x1ed8>)
188d2: 4798 blx r3
188d4: 3014 adds r0, #20
188d6: 0080 lsls r0, r0, #2
188d8: 4b52 ldr r3, [pc, #328] ; (18a24 <lv_theme_material_init+0x1edc>)
188da: fb83 2300 smull r2, r3, r3, r0
188de: 17c2 asrs r2, r0, #31
188e0: ebc2 12a3 rsb r2, r2, r3, asr #6
188e4: b212 sxth r2, r2
188e6: f7fe bdda b.w 1749e <lv_theme_material_init+0x956>
lv_style_set_border_color(&styles->kb_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT : LV_COLOR_BLACK);
188ea: 2307 movs r3, #7
188ec: 210f movs r1, #15
188ee: 2408 movs r4, #8
188f0: f7fe bde9 b.w 174c6 <lv_theme_material_init+0x97e>
lv_style_set_pad_left(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5));
188f4: 2000 movs r0, #0
188f6: 4b4a ldr r3, [pc, #296] ; (18a20 <lv_theme_material_init+0x1ed8>)
188f8: 4798 blx r3
188fa: eb00 0080 add.w r0, r0, r0, lsl #2
188fe: 3050 adds r0, #80 ; 0x50
18900: 4b48 ldr r3, [pc, #288] ; (18a24 <lv_theme_material_init+0x1edc>)
18902: fb83 2300 smull r2, r3, r3, r0
18906: 17c2 asrs r2, r0, #31
18908: ebc2 12a3 rsb r2, r2, r3, asr #6
1890c: b212 sxth r2, r2
1890e: f7fe bdf9 b.w 17504 <lv_theme_material_init+0x9bc>
lv_style_set_pad_right(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5));
18912: 2000 movs r0, #0
18914: 4b42 ldr r3, [pc, #264] ; (18a20 <lv_theme_material_init+0x1ed8>)
18916: 4798 blx r3
18918: eb00 0080 add.w r0, r0, r0, lsl #2
1891c: 3050 adds r0, #80 ; 0x50
1891e: 4b41 ldr r3, [pc, #260] ; (18a24 <lv_theme_material_init+0x1edc>)
18920: fb83 2300 smull r2, r3, r3, r0
18924: 17c2 asrs r2, r0, #31
18926: ebc2 12a3 rsb r2, r2, r3, asr #6
1892a: b212 sxth r2, r2
1892c: f7fe bdfc b.w 17528 <lv_theme_material_init+0x9e0>
lv_style_set_pad_top(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5));
18930: 2000 movs r0, #0
18932: 4b3b ldr r3, [pc, #236] ; (18a20 <lv_theme_material_init+0x1ed8>)
18934: 4798 blx r3
18936: eb00 0080 add.w r0, r0, r0, lsl #2
1893a: 3050 adds r0, #80 ; 0x50
1893c: 4b39 ldr r3, [pc, #228] ; (18a24 <lv_theme_material_init+0x1edc>)
1893e: fb83 2300 smull r2, r3, r3, r0
18942: 17c2 asrs r2, r0, #31
18944: ebc2 12a3 rsb r2, r2, r3, asr #6
18948: b212 sxth r2, r2
1894a: f7fe bdff b.w 1754c <lv_theme_material_init+0xa04>
lv_style_set_pad_bottom(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5));
1894e: 2000 movs r0, #0
18950: 4b33 ldr r3, [pc, #204] ; (18a20 <lv_theme_material_init+0x1ed8>)
18952: 4798 blx r3
18954: eb00 0080 add.w r0, r0, r0, lsl #2
18958: 3050 adds r0, #80 ; 0x50
1895a: 4b32 ldr r3, [pc, #200] ; (18a24 <lv_theme_material_init+0x1edc>)
1895c: fb83 2300 smull r2, r3, r3, r0
18960: 17c2 asrs r2, r0, #31
18962: ebc2 12a3 rsb r2, r2, r3, asr #6
18966: b212 sxth r2, r2
18968: f7fe be02 b.w 17570 <lv_theme_material_init+0xa28>
lv_style_set_pad_inner(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(3));
1896c: 2000 movs r0, #0
1896e: 4b2c ldr r3, [pc, #176] ; (18a20 <lv_theme_material_init+0x1ed8>)
18970: 4798 blx r3
18972: eb00 0040 add.w r0, r0, r0, lsl #1
18976: 3050 adds r0, #80 ; 0x50
18978: 4b2a ldr r3, [pc, #168] ; (18a24 <lv_theme_material_init+0x1edc>)
1897a: fb83 2300 smull r2, r3, r3, r0
1897e: 17c2 asrs r2, r0, #31
18980: ebc2 12a3 rsb r2, r2, r3, asr #6
18984: b212 sxth r2, r2
18986: f7fe be05 b.w 17594 <lv_theme_material_init+0xa4c>
lv_style_set_shadow_width(&styles->mbox_bg, LV_STATE_DEFAULT, LV_DPX(50));
1898a: 2000 movs r0, #0
1898c: 4b24 ldr r3, [pc, #144] ; (18a20 <lv_theme_material_init+0x1ed8>)
1898e: 4798 blx r3
18990: 2232 movs r2, #50 ; 0x32
18992: fb02 f000 mul.w r0, r2, r0
18996: 3050 adds r0, #80 ; 0x50
18998: 4b22 ldr r3, [pc, #136] ; (18a24 <lv_theme_material_init+0x1edc>)
1899a: fb83 2300 smull r2, r3, r3, r0
1899e: 17c2 asrs r2, r0, #31
189a0: ebc2 12a3 rsb r2, r2, r3, asr #6
189a4: b212 sxth r2, r2
189a6: f7fe be0c b.w 175c2 <lv_theme_material_init+0xa7a>
lv_style_set_size(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7));
189aa: 2000 movs r0, #0
189ac: 4b1c ldr r3, [pc, #112] ; (18a20 <lv_theme_material_init+0x1ed8>)
189ae: 4798 blx r3
189b0: ebc0 00c0 rsb r0, r0, r0, lsl #3
189b4: 3050 adds r0, #80 ; 0x50
189b6: 4b1b ldr r3, [pc, #108] ; (18a24 <lv_theme_material_init+0x1edc>)
189b8: fb83 2300 smull r2, r3, r3, r0
189bc: 17c2 asrs r2, r0, #31
189be: ebc2 12a3 rsb r2, r2, r3, asr #6
189c2: b212 sxth r2, r2
189c4: f7fe be52 b.w 1766c <lv_theme_material_init+0xb24>
lv_style_set_pad_right(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7));
189c8: 2000 movs r0, #0
189ca: 4b15 ldr r3, [pc, #84] ; (18a20 <lv_theme_material_init+0x1ed8>)
189cc: 4798 blx r3
189ce: ebc0 00c0 rsb r0, r0, r0, lsl #3
189d2: 3050 adds r0, #80 ; 0x50
189d4: 4b13 ldr r3, [pc, #76] ; (18a24 <lv_theme_material_init+0x1edc>)
189d6: fb83 2300 smull r2, r3, r3, r0
189da: 17c2 asrs r2, r0, #31
189dc: ebc2 12a3 rsb r2, r2, r3, asr #6
189e0: b212 sxth r2, r2
189e2: f7fe be55 b.w 17690 <lv_theme_material_init+0xb48>
lv_style_set_pad_bottom(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7));
189e6: 2000 movs r0, #0
189e8: 4b0d ldr r3, [pc, #52] ; (18a20 <lv_theme_material_init+0x1ed8>)
189ea: 4798 blx r3
189ec: ebc0 00c0 rsb r0, r0, r0, lsl #3
189f0: 3050 adds r0, #80 ; 0x50
189f2: 4b0c ldr r3, [pc, #48] ; (18a24 <lv_theme_material_init+0x1edc>)
189f4: fb83 2300 smull r2, r3, r3, r0
189f8: 17c2 asrs r2, r0, #31
189fa: ebc2 12a3 rsb r2, r2, r3, asr #6
189fe: b212 sxth r2, r2
18a00: f7fe be58 b.w 176b4 <lv_theme_material_init+0xb6c>
lv_style_set_border_width(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(2));
18a04: 2000 movs r0, #0
18a06: 4b06 ldr r3, [pc, #24] ; (18a20 <lv_theme_material_init+0x1ed8>)
18a08: 4798 blx r3
18a0a: 3028 adds r0, #40 ; 0x28
18a0c: 0040 lsls r0, r0, #1
18a0e: 4b05 ldr r3, [pc, #20] ; (18a24 <lv_theme_material_init+0x1edc>)
18a10: fb83 2300 smull r2, r3, r3, r0
18a14: 17c2 asrs r2, r0, #31
18a16: ebc2 12a3 rsb r2, r2, r3, asr #6
18a1a: b212 sxth r2, r2
18a1c: f7fe be91 b.w 17742 <lv_theme_material_init+0xbfa>
18a20: 00010f3d .word 0x00010f3d
18a24: 66666667 .word 0x66666667
lv_style_set_pad_left(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(1));
18a28: 2000 movs r0, #0
18a2a: 4bcd ldr r3, [pc, #820] ; (18d60 <lv_theme_material_init+0x2218>)
18a2c: 4798 blx r3
18a2e: 3050 adds r0, #80 ; 0x50
18a30: 4bcc ldr r3, [pc, #816] ; (18d64 <lv_theme_material_init+0x221c>)
18a32: fb83 2300 smull r2, r3, r3, r0
18a36: 17c2 asrs r2, r0, #31
18a38: ebc2 12a3 rsb r2, r2, r3, asr #6
18a3c: b212 sxth r2, r2
18a3e: f7fe be9d b.w 1777c <lv_theme_material_init+0xc34>
lv_style_set_text_color(&styles->ta_placeholder, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd));
18a42: 2315 movs r3, #21
18a44: 212a movs r1, #42 ; 0x2a
18a46: 461c mov r4, r3
18a48: f7fe beb0 b.w 177ac <lv_theme_material_init+0xc64>
lv_style_set_pad_top(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100));
18a4c: 2000 movs r0, #0
18a4e: 4bc4 ldr r3, [pc, #784] ; (18d60 <lv_theme_material_init+0x2218>)
18a50: 4798 blx r3
18a52: 2264 movs r2, #100 ; 0x64
18a54: fb02 f000 mul.w r0, r2, r0
18a58: 3050 adds r0, #80 ; 0x50
18a5a: 4bc2 ldr r3, [pc, #776] ; (18d64 <lv_theme_material_init+0x221c>)
18a5c: fb83 2300 smull r2, r3, r3, r0
18a60: 17c2 asrs r2, r0, #31
18a62: ebc2 12a3 rsb r2, r2, r3, asr #6
18a66: b212 sxth r2, r2
18a68: f7fe bed1 b.w 1780e <lv_theme_material_init+0xcc6>
lv_style_set_pad_bottom(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100));
18a6c: 2000 movs r0, #0
18a6e: 4bbc ldr r3, [pc, #752] ; (18d60 <lv_theme_material_init+0x2218>)
18a70: 4798 blx r3
18a72: 2264 movs r2, #100 ; 0x64
18a74: fb02 f000 mul.w r0, r2, r0
18a78: 3050 adds r0, #80 ; 0x50
18a7a: 4bba ldr r3, [pc, #744] ; (18d64 <lv_theme_material_init+0x221c>)
18a7c: fb83 2300 smull r2, r3, r3, r0
18a80: 17c2 asrs r2, r0, #31
18a82: ebc2 12a3 rsb r2, r2, r3, asr #6
18a86: b212 sxth r2, r2
18a88: f7fe bed4 b.w 17834 <lv_theme_material_init+0xcec>
lv_style_set_bg_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG);
18a8c: 231f movs r3, #31
18a8e: 213f movs r1, #63 ; 0x3f
18a90: 461c mov r4, r3
18a92: f7fe bf09 b.w 178a8 <lv_theme_material_init+0xd60>
lv_style_set_bg_color(&styles->list_btn, LV_STATE_PRESSED, COLOR_BG_PR);
18a96: 231d movs r3, #29
18a98: 213b movs r1, #59 ; 0x3b
18a9a: 461c mov r4, r3
18a9c: f7fe bf1a b.w 178d4 <lv_theme_material_init+0xd8c>
lv_style_set_bg_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_DIS);
18aa0: 231f movs r3, #31
18aa2: 213f movs r1, #63 ; 0x3f
18aa4: 461c mov r4, r3
18aa6: f7fe bf2c b.w 17902 <lv_theme_material_init+0xdba>
lv_style_set_text_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT);
18aaa: 2307 movs r3, #7
18aac: 210f movs r1, #15
18aae: 2408 movs r4, #8
18ab0: f7fe bf4f b.w 17952 <lv_theme_material_init+0xe0a>
lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT);
18ab4: 2307 movs r3, #7
18ab6: 210f movs r1, #15
18ab8: 2408 movs r4, #8
18aba: f7fe bf7f b.w 179bc <lv_theme_material_init+0xe74>
lv_style_set_pad_left(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF);
18abe: 2000 movs r0, #0
18ac0: 4ba7 ldr r3, [pc, #668] ; (18d60 <lv_theme_material_init+0x2218>)
18ac2: 4798 blx r3
18ac4: ebc0 1000 rsb r0, r0, r0, lsl #4
18ac8: 3050 adds r0, #80 ; 0x50
18aca: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18ace: da02 bge.n 18ad6 <lv_theme_material_init+0x1f8e>
18ad0: 2201 movs r2, #1
18ad2: f7fe bfef b.w 17ab4 <lv_theme_material_init+0xf6c>
18ad6: 2000 movs r0, #0
18ad8: 4ba1 ldr r3, [pc, #644] ; (18d60 <lv_theme_material_init+0x2218>)
18ada: 4798 blx r3
18adc: ebc0 1000 rsb r0, r0, r0, lsl #4
18ae0: 3050 adds r0, #80 ; 0x50
18ae2: 4ba0 ldr r3, [pc, #640] ; (18d64 <lv_theme_material_init+0x221c>)
18ae4: fb83 2300 smull r2, r3, r3, r0
18ae8: 17c2 asrs r2, r0, #31
18aea: ebc2 12a3 rsb r2, r2, r3, asr #6
18aee: b212 sxth r2, r2
18af0: f7fe bfe0 b.w 17ab4 <lv_theme_material_init+0xf6c>
18af4: 2000 movs r0, #0
18af6: 4b9a ldr r3, [pc, #616] ; (18d60 <lv_theme_material_init+0x2218>)
18af8: 4798 blx r3
18afa: ebc0 1000 rsb r0, r0, r0, lsl #4
18afe: 0040 lsls r0, r0, #1
18b00: 3050 adds r0, #80 ; 0x50
18b02: 4b98 ldr r3, [pc, #608] ; (18d64 <lv_theme_material_init+0x221c>)
18b04: fb83 2300 smull r2, r3, r3, r0
18b08: 17c2 asrs r2, r0, #31
18b0a: ebc2 12a3 rsb r2, r2, r3, asr #6
18b0e: b212 sxth r2, r2
18b10: f7fe bfd0 b.w 17ab4 <lv_theme_material_init+0xf6c>
lv_style_set_pad_right(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF);
18b14: 2000 movs r0, #0
18b16: 4b92 ldr r3, [pc, #584] ; (18d60 <lv_theme_material_init+0x2218>)
18b18: 4798 blx r3
18b1a: ebc0 1000 rsb r0, r0, r0, lsl #4
18b1e: 3050 adds r0, #80 ; 0x50
18b20: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18b24: da02 bge.n 18b2c <lv_theme_material_init+0x1fe4>
18b26: 2201 movs r2, #1
18b28: f7fe bfdd b.w 17ae6 <lv_theme_material_init+0xf9e>
18b2c: 2000 movs r0, #0
18b2e: 4b8c ldr r3, [pc, #560] ; (18d60 <lv_theme_material_init+0x2218>)
18b30: 4798 blx r3
18b32: ebc0 1000 rsb r0, r0, r0, lsl #4
18b36: 3050 adds r0, #80 ; 0x50
18b38: 4b8a ldr r3, [pc, #552] ; (18d64 <lv_theme_material_init+0x221c>)
18b3a: fb83 2300 smull r2, r3, r3, r0
18b3e: 17c2 asrs r2, r0, #31
18b40: ebc2 12a3 rsb r2, r2, r3, asr #6
18b44: b212 sxth r2, r2
18b46: f7fe bfce b.w 17ae6 <lv_theme_material_init+0xf9e>
18b4a: 2000 movs r0, #0
18b4c: 4b84 ldr r3, [pc, #528] ; (18d60 <lv_theme_material_init+0x2218>)
18b4e: 4798 blx r3
18b50: ebc0 1000 rsb r0, r0, r0, lsl #4
18b54: 0040 lsls r0, r0, #1
18b56: 3050 adds r0, #80 ; 0x50
18b58: 4b82 ldr r3, [pc, #520] ; (18d64 <lv_theme_material_init+0x221c>)
18b5a: fb83 2300 smull r2, r3, r3, r0
18b5e: 17c2 asrs r2, r0, #31
18b60: ebc2 12a3 rsb r2, r2, r3, asr #6
18b64: b212 sxth r2, r2
18b66: f7fe bfbe b.w 17ae6 <lv_theme_material_init+0xf9e>
lv_style_set_pad_top(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF);
18b6a: 2000 movs r0, #0
18b6c: 4b7c ldr r3, [pc, #496] ; (18d60 <lv_theme_material_init+0x2218>)
18b6e: 4798 blx r3
18b70: ebc0 1000 rsb r0, r0, r0, lsl #4
18b74: 3050 adds r0, #80 ; 0x50
18b76: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18b7a: da02 bge.n 18b82 <lv_theme_material_init+0x203a>
18b7c: 2201 movs r2, #1
18b7e: f7fe bfcb b.w 17b18 <lv_theme_material_init+0xfd0>
18b82: 2000 movs r0, #0
18b84: 4b76 ldr r3, [pc, #472] ; (18d60 <lv_theme_material_init+0x2218>)
18b86: 4798 blx r3
18b88: ebc0 1000 rsb r0, r0, r0, lsl #4
18b8c: 3050 adds r0, #80 ; 0x50
18b8e: 4b75 ldr r3, [pc, #468] ; (18d64 <lv_theme_material_init+0x221c>)
18b90: fb83 2300 smull r2, r3, r3, r0
18b94: 17c2 asrs r2, r0, #31
18b96: ebc2 12a3 rsb r2, r2, r3, asr #6
18b9a: b212 sxth r2, r2
18b9c: f7fe bfbc b.w 17b18 <lv_theme_material_init+0xfd0>
18ba0: 2000 movs r0, #0
18ba2: 4b6f ldr r3, [pc, #444] ; (18d60 <lv_theme_material_init+0x2218>)
18ba4: 4798 blx r3
18ba6: ebc0 1000 rsb r0, r0, r0, lsl #4
18baa: 0040 lsls r0, r0, #1
18bac: 3050 adds r0, #80 ; 0x50
18bae: 4b6d ldr r3, [pc, #436] ; (18d64 <lv_theme_material_init+0x221c>)
18bb0: fb83 2300 smull r2, r3, r3, r0
18bb4: 17c2 asrs r2, r0, #31
18bb6: ebc2 12a3 rsb r2, r2, r3, asr #6
18bba: b212 sxth r2, r2
18bbc: f7fe bfac b.w 17b18 <lv_theme_material_init+0xfd0>
lv_style_set_pad_bottom(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF);
18bc0: 2000 movs r0, #0
18bc2: 4b67 ldr r3, [pc, #412] ; (18d60 <lv_theme_material_init+0x2218>)
18bc4: 4798 blx r3
18bc6: ebc0 1000 rsb r0, r0, r0, lsl #4
18bca: 3050 adds r0, #80 ; 0x50
18bcc: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18bd0: da02 bge.n 18bd8 <lv_theme_material_init+0x2090>
18bd2: 2201 movs r2, #1
18bd4: f7fe bfb9 b.w 17b4a <lv_theme_material_init+0x1002>
18bd8: 2000 movs r0, #0
18bda: 4b61 ldr r3, [pc, #388] ; (18d60 <lv_theme_material_init+0x2218>)
18bdc: 4798 blx r3
18bde: ebc0 1000 rsb r0, r0, r0, lsl #4
18be2: 3050 adds r0, #80 ; 0x50
18be4: 4b5f ldr r3, [pc, #380] ; (18d64 <lv_theme_material_init+0x221c>)
18be6: fb83 2300 smull r2, r3, r3, r0
18bea: 17c2 asrs r2, r0, #31
18bec: ebc2 12a3 rsb r2, r2, r3, asr #6
18bf0: b212 sxth r2, r2
18bf2: f7fe bfaa b.w 17b4a <lv_theme_material_init+0x1002>
18bf6: 2000 movs r0, #0
18bf8: 4b59 ldr r3, [pc, #356] ; (18d60 <lv_theme_material_init+0x2218>)
18bfa: 4798 blx r3
18bfc: ebc0 1000 rsb r0, r0, r0, lsl #4
18c00: 0040 lsls r0, r0, #1
18c02: 3050 adds r0, #80 ; 0x50
18c04: 4b57 ldr r3, [pc, #348] ; (18d64 <lv_theme_material_init+0x221c>)
18c06: fb83 2300 smull r2, r3, r3, r0
18c0a: 17c2 asrs r2, r0, #31
18c0c: ebc2 12a3 rsb r2, r2, r3, asr #6
18c10: b212 sxth r2, r2
18c12: f7fe bf9a b.w 17b4a <lv_theme_material_init+0x1002>
lv_style_set_pad_inner(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF);
18c16: 2000 movs r0, #0
18c18: 4b51 ldr r3, [pc, #324] ; (18d60 <lv_theme_material_init+0x2218>)
18c1a: 4798 blx r3
18c1c: ebc0 1000 rsb r0, r0, r0, lsl #4
18c20: 3050 adds r0, #80 ; 0x50
18c22: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18c26: da02 bge.n 18c2e <lv_theme_material_init+0x20e6>
18c28: 2201 movs r2, #1
18c2a: f7fe bfa7 b.w 17b7c <lv_theme_material_init+0x1034>
18c2e: 2000 movs r0, #0
18c30: 4b4b ldr r3, [pc, #300] ; (18d60 <lv_theme_material_init+0x2218>)
18c32: 4798 blx r3
18c34: ebc0 1000 rsb r0, r0, r0, lsl #4
18c38: 3050 adds r0, #80 ; 0x50
18c3a: 4b4a ldr r3, [pc, #296] ; (18d64 <lv_theme_material_init+0x221c>)
18c3c: fb83 2300 smull r2, r3, r3, r0
18c40: 17c2 asrs r2, r0, #31
18c42: ebc2 12a3 rsb r2, r2, r3, asr #6
18c46: b212 sxth r2, r2
18c48: f7fe bf98 b.w 17b7c <lv_theme_material_init+0x1034>
18c4c: 2000 movs r0, #0
18c4e: 4b44 ldr r3, [pc, #272] ; (18d60 <lv_theme_material_init+0x2218>)
18c50: 4798 blx r3
18c52: ebc0 1000 rsb r0, r0, r0, lsl #4
18c56: 0040 lsls r0, r0, #1
18c58: 3050 adds r0, #80 ; 0x50
18c5a: 4b42 ldr r3, [pc, #264] ; (18d64 <lv_theme_material_init+0x221c>)
18c5c: fb83 2300 smull r2, r3, r3, r0
18c60: 17c2 asrs r2, r0, #31
18c62: ebc2 12a3 rsb r2, r2, r3, asr #6
18c66: b212 sxth r2, r2
18c68: f7fe bf88 b.w 17b7c <lv_theme_material_init+0x1034>
lv_style_set_transform_width(&styles->list_btn, LV_STATE_DEFAULT, - PAD_DEF);
18c6c: 2000 movs r0, #0
18c6e: 4b3c ldr r3, [pc, #240] ; (18d60 <lv_theme_material_init+0x2218>)
18c70: 4798 blx r3
18c72: ebc0 1000 rsb r0, r0, r0, lsl #4
18c76: 3050 adds r0, #80 ; 0x50
18c78: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18c7c: da03 bge.n 18c86 <lv_theme_material_init+0x213e>
18c7e: f04f 32ff mov.w r2, #4294967295
18c82: f7fe bf95 b.w 17bb0 <lv_theme_material_init+0x1068>
18c86: 2000 movs r0, #0
18c88: 4b35 ldr r3, [pc, #212] ; (18d60 <lv_theme_material_init+0x2218>)
18c8a: 4798 blx r3
18c8c: ebc0 1000 rsb r0, r0, r0, lsl #4
18c90: 3050 adds r0, #80 ; 0x50
18c92: 4b34 ldr r3, [pc, #208] ; (18d64 <lv_theme_material_init+0x221c>)
18c94: fb83 2300 smull r2, r3, r3, r0
18c98: 17c2 asrs r2, r0, #31
18c9a: eba2 12a3 sub.w r2, r2, r3, asr #6
18c9e: b212 sxth r2, r2
18ca0: f7fe bf86 b.w 17bb0 <lv_theme_material_init+0x1068>
18ca4: 2000 movs r0, #0
18ca6: 4b2e ldr r3, [pc, #184] ; (18d60 <lv_theme_material_init+0x2218>)
18ca8: 4798 blx r3
18caa: ebc0 1000 rsb r0, r0, r0, lsl #4
18cae: 0040 lsls r0, r0, #1
18cb0: 3050 adds r0, #80 ; 0x50
18cb2: 4b2c ldr r3, [pc, #176] ; (18d64 <lv_theme_material_init+0x221c>)
18cb4: fb83 2300 smull r2, r3, r3, r0
18cb8: 17c2 asrs r2, r0, #31
18cba: eba2 12a3 sub.w r2, r2, r3, asr #6
18cbe: b212 sxth r2, r2
18cc0: f7fe bf76 b.w 17bb0 <lv_theme_material_init+0x1068>
lv_style_set_text_line_space(&styles->ddlist_page, LV_STATE_DEFAULT, LV_DPX(20));
18cc4: 2000 movs r0, #0
18cc6: 4b26 ldr r3, [pc, #152] ; (18d60 <lv_theme_material_init+0x2218>)
18cc8: 4798 blx r3
18cca: eb00 0080 add.w r0, r0, r0, lsl #2
18cce: 0080 lsls r0, r0, #2
18cd0: 3050 adds r0, #80 ; 0x50
18cd2: 4b24 ldr r3, [pc, #144] ; (18d64 <lv_theme_material_init+0x221c>)
18cd4: fb83 2300 smull r2, r3, r3, r0
18cd8: 17c2 asrs r2, r0, #31
18cda: ebc2 12a3 rsb r2, r2, r3, asr #6
18cde: b212 sxth r2, r2
18ce0: f7fe bf9e b.w 17c20 <lv_theme_material_init+0x10d8>
lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_PR);
18ce4: 231d movs r3, #29
18ce6: 213b movs r1, #59 ; 0x3b
18ce8: 461c mov r4, r3
18cea: f7fe bfc5 b.w 17c78 <lv_theme_material_init+0x1130>
lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_TEXT_PR);
18cee: 2307 movs r3, #7
18cf0: 210f movs r1, #15
18cf2: 2408 movs r4, #8
18cf4: f7fe bfd7 b.w 17ca6 <lv_theme_material_init+0x115e>
lv_style_set_text_line_space(&styles->roller_bg, LV_STATE_DEFAULT, LV_DPX(25));
18cf8: 2000 movs r0, #0
18cfa: 4b19 ldr r3, [pc, #100] ; (18d60 <lv_theme_material_init+0x2218>)
18cfc: 4798 blx r3
18cfe: eb00 0080 add.w r0, r0, r0, lsl #2
18d02: eb00 0080 add.w r0, r0, r0, lsl #2
18d06: 3050 adds r0, #80 ; 0x50
18d08: 4b16 ldr r3, [pc, #88] ; (18d64 <lv_theme_material_init+0x221c>)
18d0a: fb83 2300 smull r2, r3, r3, r0
18d0e: 17c2 asrs r2, r0, #31
18d10: ebc2 12a3 rsb r2, r2, r3, asr #6
18d14: b212 sxth r2, r2
18d16: f7fe bfe6 b.w 17ce6 <lv_theme_material_init+0x119e>
lv_style_set_bg_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_BG);
18d1a: 231f movs r3, #31
18d1c: 213f movs r1, #63 ; 0x3f
18d1e: 461c mov r4, r3
18d20: f7ff b810 b.w 17d44 <lv_theme_material_init+0x11fc>
lv_style_set_border_width(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(5));
18d24: 2000 movs r0, #0
18d26: 4b0e ldr r3, [pc, #56] ; (18d60 <lv_theme_material_init+0x2218>)
18d28: 4798 blx r3
18d2a: eb00 0080 add.w r0, r0, r0, lsl #2
18d2e: 3050 adds r0, #80 ; 0x50
18d30: 4b0c ldr r3, [pc, #48] ; (18d64 <lv_theme_material_init+0x221c>)
18d32: fb83 2300 smull r2, r3, r3, r0
18d36: 17c2 asrs r2, r0, #31
18d38: ebc2 12a3 rsb r2, r2, r3, asr #6
18d3c: b212 sxth r2, r2
18d3e: f7ff b845 b.w 17dcc <lv_theme_material_init+0x1284>
lv_style_set_pad_top(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7));
18d42: 2000 movs r0, #0
18d44: 4b06 ldr r3, [pc, #24] ; (18d60 <lv_theme_material_init+0x2218>)
18d46: 4798 blx r3
18d48: ebc0 00c0 rsb r0, r0, r0, lsl #3
18d4c: 3050 adds r0, #80 ; 0x50
18d4e: 4b05 ldr r3, [pc, #20] ; (18d64 <lv_theme_material_init+0x221c>)
18d50: fb83 2300 smull r2, r3, r3, r0
18d54: 17c2 asrs r2, r0, #31
18d56: ebc2 12a3 rsb r2, r2, r3, asr #6
18d5a: b212 sxth r2, r2
18d5c: f7ff b87f b.w 17e5e <lv_theme_material_init+0x1316>
18d60: 00010f3d .word 0x00010f3d
18d64: 66666667 .word 0x66666667
lv_style_set_pad_left(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7));
18d68: 2000 movs r0, #0
18d6a: 4bca ldr r3, [pc, #808] ; (19094 <lv_theme_material_init+0x254c>)
18d6c: 4798 blx r3
18d6e: ebc0 00c0 rsb r0, r0, r0, lsl #3
18d72: 3050 adds r0, #80 ; 0x50
18d74: 4bc8 ldr r3, [pc, #800] ; (19098 <lv_theme_material_init+0x2550>)
18d76: fb83 2300 smull r2, r3, r3, r0
18d7a: 17c2 asrs r2, r0, #31
18d7c: ebc2 12a3 rsb r2, r2, r3, asr #6
18d80: b212 sxth r2, r2
18d82: f7ff b87e b.w 17e82 <lv_theme_material_init+0x133a>
lv_style_set_pad_right(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7));
18d86: 2000 movs r0, #0
18d88: 4bc2 ldr r3, [pc, #776] ; (19094 <lv_theme_material_init+0x254c>)
18d8a: 4798 blx r3
18d8c: ebc0 00c0 rsb r0, r0, r0, lsl #3
18d90: 3050 adds r0, #80 ; 0x50
18d92: 4bc1 ldr r3, [pc, #772] ; (19098 <lv_theme_material_init+0x2550>)
18d94: fb83 2300 smull r2, r3, r3, r0
18d98: 17c2 asrs r2, r0, #31
18d9a: ebc2 12a3 rsb r2, r2, r3, asr #6
18d9e: b212 sxth r2, r2
18da0: f7ff b881 b.w 17ea6 <lv_theme_material_init+0x135e>
lv_style_set_pad_top(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20));
18da4: 2000 movs r0, #0
18da6: 4bbb ldr r3, [pc, #748] ; (19094 <lv_theme_material_init+0x254c>)
18da8: 4798 blx r3
18daa: eb00 0080 add.w r0, r0, r0, lsl #2
18dae: 0080 lsls r0, r0, #2
18db0: 3050 adds r0, #80 ; 0x50
18db2: 4bb9 ldr r3, [pc, #740] ; (19098 <lv_theme_material_init+0x2550>)
18db4: fb83 2300 smull r2, r3, r3, r0
18db8: 17c2 asrs r2, r0, #31
18dba: ebc2 12a3 rsb r2, r2, r3, asr #6
18dbe: b212 sxth r2, r2
18dc0: f7ff b8ba b.w 17f38 <lv_theme_material_init+0x13f0>
lv_style_set_pad_bottom(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20));
18dc4: 2000 movs r0, #0
18dc6: 4bb3 ldr r3, [pc, #716] ; (19094 <lv_theme_material_init+0x254c>)
18dc8: 4798 blx r3
18dca: eb00 0080 add.w r0, r0, r0, lsl #2
18dce: 0080 lsls r0, r0, #2
18dd0: 3050 adds r0, #80 ; 0x50
18dd2: 4bb1 ldr r3, [pc, #708] ; (19098 <lv_theme_material_init+0x2550>)
18dd4: fb83 2300 smull r2, r3, r3, r0
18dd8: 17c2 asrs r2, r0, #31
18dda: ebc2 12a3 rsb r2, r2, r3, asr #6
18dde: b212 sxth r2, r2
18de0: f7ff b8bd b.w 17f5e <lv_theme_material_init+0x1416>
lv_style_set_size(&styles->tabview_indic, LV_STATE_DEFAULT, LV_DPX(5));
18de4: 2000 movs r0, #0
18de6: 4bab ldr r3, [pc, #684] ; (19094 <lv_theme_material_init+0x254c>)
18de8: 4798 blx r3
18dea: eb00 0080 add.w r0, r0, r0, lsl #2
18dee: 3050 adds r0, #80 ; 0x50
18df0: 4ba9 ldr r3, [pc, #676] ; (19098 <lv_theme_material_init+0x2550>)
18df2: fb83 2300 smull r2, r3, r3, r0
18df6: 17c2 asrs r2, r0, #31
18df8: ebc2 12a3 rsb r2, r2, r3, asr #6
18dfc: b212 sxth r2, r2
18dfe: f7ff b8e2 b.w 17fc6 <lv_theme_material_init+0x147e>
lv_style_set_pad_top(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF);
18e02: 2000 movs r0, #0
18e04: 4ba3 ldr r3, [pc, #652] ; (19094 <lv_theme_material_init+0x254c>)
18e06: 4798 blx r3
18e08: ebc0 1000 rsb r0, r0, r0, lsl #4
18e0c: 3050 adds r0, #80 ; 0x50
18e0e: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18e12: da02 bge.n 18e1a <lv_theme_material_init+0x22d2>
18e14: 2201 movs r2, #1
18e16: f7ff b8f9 b.w 1800c <lv_theme_material_init+0x14c4>
18e1a: 2000 movs r0, #0
18e1c: 4b9d ldr r3, [pc, #628] ; (19094 <lv_theme_material_init+0x254c>)
18e1e: 4798 blx r3
18e20: ebc0 1000 rsb r0, r0, r0, lsl #4
18e24: 3050 adds r0, #80 ; 0x50
18e26: 4b9c ldr r3, [pc, #624] ; (19098 <lv_theme_material_init+0x2550>)
18e28: fb83 2300 smull r2, r3, r3, r0
18e2c: 17c2 asrs r2, r0, #31
18e2e: ebc2 12a3 rsb r2, r2, r3, asr #6
18e32: b212 sxth r2, r2
18e34: f7ff b8ea b.w 1800c <lv_theme_material_init+0x14c4>
18e38: 2000 movs r0, #0
18e3a: 4b96 ldr r3, [pc, #600] ; (19094 <lv_theme_material_init+0x254c>)
18e3c: 4798 blx r3
18e3e: ebc0 1000 rsb r0, r0, r0, lsl #4
18e42: 0040 lsls r0, r0, #1
18e44: 3050 adds r0, #80 ; 0x50
18e46: 4b94 ldr r3, [pc, #592] ; (19098 <lv_theme_material_init+0x2550>)
18e48: fb83 2300 smull r2, r3, r3, r0
18e4c: 17c2 asrs r2, r0, #31
18e4e: ebc2 12a3 rsb r2, r2, r3, asr #6
18e52: b212 sxth r2, r2
18e54: f7ff b8da b.w 1800c <lv_theme_material_init+0x14c4>
lv_style_set_pad_bottom(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF);
18e58: 2000 movs r0, #0
18e5a: 4b8e ldr r3, [pc, #568] ; (19094 <lv_theme_material_init+0x254c>)
18e5c: 4798 blx r3
18e5e: ebc0 1000 rsb r0, r0, r0, lsl #4
18e62: 3050 adds r0, #80 ; 0x50
18e64: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18e68: da02 bge.n 18e70 <lv_theme_material_init+0x2328>
18e6a: 2201 movs r2, #1
18e6c: f7ff b8e7 b.w 1803e <lv_theme_material_init+0x14f6>
18e70: 2000 movs r0, #0
18e72: 4b88 ldr r3, [pc, #544] ; (19094 <lv_theme_material_init+0x254c>)
18e74: 4798 blx r3
18e76: ebc0 1000 rsb r0, r0, r0, lsl #4
18e7a: 3050 adds r0, #80 ; 0x50
18e7c: 4b86 ldr r3, [pc, #536] ; (19098 <lv_theme_material_init+0x2550>)
18e7e: fb83 2300 smull r2, r3, r3, r0
18e82: 17c2 asrs r2, r0, #31
18e84: ebc2 12a3 rsb r2, r2, r3, asr #6
18e88: b212 sxth r2, r2
18e8a: f7ff b8d8 b.w 1803e <lv_theme_material_init+0x14f6>
18e8e: 2000 movs r0, #0
18e90: 4b80 ldr r3, [pc, #512] ; (19094 <lv_theme_material_init+0x254c>)
18e92: 4798 blx r3
18e94: ebc0 1000 rsb r0, r0, r0, lsl #4
18e98: 0040 lsls r0, r0, #1
18e9a: 3050 adds r0, #80 ; 0x50
18e9c: 4b7e ldr r3, [pc, #504] ; (19098 <lv_theme_material_init+0x2550>)
18e9e: fb83 2300 smull r2, r3, r3, r0
18ea2: 17c2 asrs r2, r0, #31
18ea4: ebc2 12a3 rsb r2, r2, r3, asr #6
18ea8: b212 sxth r2, r2
18eaa: f7ff b8c8 b.w 1803e <lv_theme_material_init+0x14f6>
lv_style_set_pad_left(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF);
18eae: 2000 movs r0, #0
18eb0: 4b78 ldr r3, [pc, #480] ; (19094 <lv_theme_material_init+0x254c>)
18eb2: 4798 blx r3
18eb4: ebc0 1000 rsb r0, r0, r0, lsl #4
18eb8: 3050 adds r0, #80 ; 0x50
18eba: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18ebe: da02 bge.n 18ec6 <lv_theme_material_init+0x237e>
18ec0: 2201 movs r2, #1
18ec2: f7ff b8d5 b.w 18070 <lv_theme_material_init+0x1528>
18ec6: 2000 movs r0, #0
18ec8: 4b72 ldr r3, [pc, #456] ; (19094 <lv_theme_material_init+0x254c>)
18eca: 4798 blx r3
18ecc: ebc0 1000 rsb r0, r0, r0, lsl #4
18ed0: 3050 adds r0, #80 ; 0x50
18ed2: 4b71 ldr r3, [pc, #452] ; (19098 <lv_theme_material_init+0x2550>)
18ed4: fb83 2300 smull r2, r3, r3, r0
18ed8: 17c2 asrs r2, r0, #31
18eda: ebc2 12a3 rsb r2, r2, r3, asr #6
18ede: b212 sxth r2, r2
18ee0: f7ff b8c6 b.w 18070 <lv_theme_material_init+0x1528>
18ee4: 2000 movs r0, #0
18ee6: 4b6b ldr r3, [pc, #428] ; (19094 <lv_theme_material_init+0x254c>)
18ee8: 4798 blx r3
18eea: ebc0 1000 rsb r0, r0, r0, lsl #4
18eee: 0040 lsls r0, r0, #1
18ef0: 3050 adds r0, #80 ; 0x50
18ef2: 4b69 ldr r3, [pc, #420] ; (19098 <lv_theme_material_init+0x2550>)
18ef4: fb83 2300 smull r2, r3, r3, r0
18ef8: 17c2 asrs r2, r0, #31
18efa: ebc2 12a3 rsb r2, r2, r3, asr #6
18efe: b212 sxth r2, r2
18f00: f7ff b8b6 b.w 18070 <lv_theme_material_init+0x1528>
lv_style_set_pad_right(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF);
18f04: 2000 movs r0, #0
18f06: 4b63 ldr r3, [pc, #396] ; (19094 <lv_theme_material_init+0x254c>)
18f08: 4798 blx r3
18f0a: ebc0 1000 rsb r0, r0, r0, lsl #4
18f0e: 3050 adds r0, #80 ; 0x50
18f10: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18f14: da02 bge.n 18f1c <lv_theme_material_init+0x23d4>
18f16: 2201 movs r2, #1
18f18: f7ff b8d4 b.w 180c4 <lv_theme_material_init+0x157c>
18f1c: 2000 movs r0, #0
18f1e: 4b5d ldr r3, [pc, #372] ; (19094 <lv_theme_material_init+0x254c>)
18f20: 4798 blx r3
18f22: ebc0 1000 rsb r0, r0, r0, lsl #4
18f26: 3050 adds r0, #80 ; 0x50
18f28: 4b5b ldr r3, [pc, #364] ; (19098 <lv_theme_material_init+0x2550>)
18f2a: fb83 2300 smull r2, r3, r3, r0
18f2e: 17c2 asrs r2, r0, #31
18f30: ebc2 12a3 rsb r2, r2, r3, asr #6
18f34: b212 sxth r2, r2
18f36: f7ff b8c5 b.w 180c4 <lv_theme_material_init+0x157c>
18f3a: 2000 movs r0, #0
18f3c: 4b55 ldr r3, [pc, #340] ; (19094 <lv_theme_material_init+0x254c>)
18f3e: 4798 blx r3
18f40: ebc0 1000 rsb r0, r0, r0, lsl #4
18f44: 0040 lsls r0, r0, #1
18f46: 3050 adds r0, #80 ; 0x50
18f48: 4b53 ldr r3, [pc, #332] ; (19098 <lv_theme_material_init+0x2550>)
18f4a: fb83 2300 smull r2, r3, r3, r0
18f4e: 17c2 asrs r2, r0, #31
18f50: ebc2 12a3 rsb r2, r2, r3, asr #6
18f54: b212 sxth r2, r2
18f56: f7ff b8b5 b.w 180c4 <lv_theme_material_init+0x157c>
lv_style_set_pad_inner(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF);
18f5a: 2000 movs r0, #0
18f5c: 4b4d ldr r3, [pc, #308] ; (19094 <lv_theme_material_init+0x254c>)
18f5e: 4798 blx r3
18f60: ebc0 1000 rsb r0, r0, r0, lsl #4
18f64: 3050 adds r0, #80 ; 0x50
18f66: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18f6a: da02 bge.n 18f72 <lv_theme_material_init+0x242a>
18f6c: 2201 movs r2, #1
18f6e: f7ff b8c2 b.w 180f6 <lv_theme_material_init+0x15ae>
18f72: 2000 movs r0, #0
18f74: 4b47 ldr r3, [pc, #284] ; (19094 <lv_theme_material_init+0x254c>)
18f76: 4798 blx r3
18f78: ebc0 1000 rsb r0, r0, r0, lsl #4
18f7c: 3050 adds r0, #80 ; 0x50
18f7e: 4b46 ldr r3, [pc, #280] ; (19098 <lv_theme_material_init+0x2550>)
18f80: fb83 2300 smull r2, r3, r3, r0
18f84: 17c2 asrs r2, r0, #31
18f86: ebc2 12a3 rsb r2, r2, r3, asr #6
18f8a: b212 sxth r2, r2
18f8c: f7ff b8b3 b.w 180f6 <lv_theme_material_init+0x15ae>
18f90: 2000 movs r0, #0
18f92: 4b40 ldr r3, [pc, #256] ; (19094 <lv_theme_material_init+0x254c>)
18f94: 4798 blx r3
18f96: ebc0 1000 rsb r0, r0, r0, lsl #4
18f9a: 0040 lsls r0, r0, #1
18f9c: 3050 adds r0, #80 ; 0x50
18f9e: 4b3e ldr r3, [pc, #248] ; (19098 <lv_theme_material_init+0x2550>)
18fa0: fb83 2300 smull r2, r3, r3, r0
18fa4: 17c2 asrs r2, r0, #31
18fa6: ebc2 12a3 rsb r2, r2, r3, asr #6
18faa: b212 sxth r2, r2
18fac: f7ff b8a3 b.w 180f6 <lv_theme_material_init+0x15ae>
lv_style_set_pad_left(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF);
18fb0: 2000 movs r0, #0
18fb2: 4b38 ldr r3, [pc, #224] ; (19094 <lv_theme_material_init+0x254c>)
18fb4: 4798 blx r3
18fb6: ebc0 1000 rsb r0, r0, r0, lsl #4
18fba: 3050 adds r0, #80 ; 0x50
18fbc: f5b0 7fa0 cmp.w r0, #320 ; 0x140
18fc0: da02 bge.n 18fc8 <lv_theme_material_init+0x2480>
18fc2: 2201 movs r2, #1
18fc4: f7ff b8d9 b.w 1817a <lv_theme_material_init+0x1632>
18fc8: 2000 movs r0, #0
18fca: 4b32 ldr r3, [pc, #200] ; (19094 <lv_theme_material_init+0x254c>)
18fcc: 4798 blx r3
18fce: ebc0 1000 rsb r0, r0, r0, lsl #4
18fd2: 3050 adds r0, #80 ; 0x50
18fd4: 4b30 ldr r3, [pc, #192] ; (19098 <lv_theme_material_init+0x2550>)
18fd6: fb83 2300 smull r2, r3, r3, r0
18fda: 17c2 asrs r2, r0, #31
18fdc: ebc2 12a3 rsb r2, r2, r3, asr #6
18fe0: b212 sxth r2, r2
18fe2: f7ff b8ca b.w 1817a <lv_theme_material_init+0x1632>
18fe6: 2000 movs r0, #0
18fe8: 4b2a ldr r3, [pc, #168] ; (19094 <lv_theme_material_init+0x254c>)
18fea: 4798 blx r3
18fec: ebc0 1000 rsb r0, r0, r0, lsl #4
18ff0: 0040 lsls r0, r0, #1
18ff2: 3050 adds r0, #80 ; 0x50
18ff4: 4b28 ldr r3, [pc, #160] ; (19098 <lv_theme_material_init+0x2550>)
18ff6: fb83 2300 smull r2, r3, r3, r0
18ffa: 17c2 asrs r2, r0, #31
18ffc: ebc2 12a3 rsb r2, r2, r3, asr #6
19000: b212 sxth r2, r2
19002: f7ff b8ba b.w 1817a <lv_theme_material_init+0x1632>
lv_style_set_pad_right(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF);
19006: 2000 movs r0, #0
19008: 4b22 ldr r3, [pc, #136] ; (19094 <lv_theme_material_init+0x254c>)
1900a: 4798 blx r3
1900c: ebc0 1000 rsb r0, r0, r0, lsl #4
19010: 3050 adds r0, #80 ; 0x50
19012: f5b0 7fa0 cmp.w r0, #320 ; 0x140
19016: da02 bge.n 1901e <lv_theme_material_init+0x24d6>
19018: 2201 movs r2, #1
1901a: f7ff b8c7 b.w 181ac <lv_theme_material_init+0x1664>
1901e: 2000 movs r0, #0
19020: 4b1c ldr r3, [pc, #112] ; (19094 <lv_theme_material_init+0x254c>)
19022: 4798 blx r3
19024: ebc0 1000 rsb r0, r0, r0, lsl #4
19028: 3050 adds r0, #80 ; 0x50
1902a: 4b1b ldr r3, [pc, #108] ; (19098 <lv_theme_material_init+0x2550>)
1902c: fb83 2300 smull r2, r3, r3, r0
19030: 17c2 asrs r2, r0, #31
19032: ebc2 12a3 rsb r2, r2, r3, asr #6
19036: b212 sxth r2, r2
19038: f7ff b8b8 b.w 181ac <lv_theme_material_init+0x1664>
1903c: 2000 movs r0, #0
1903e: 4b15 ldr r3, [pc, #84] ; (19094 <lv_theme_material_init+0x254c>)
19040: 4798 blx r3
19042: ebc0 1000 rsb r0, r0, r0, lsl #4
19046: 0040 lsls r0, r0, #1
19048: 3050 adds r0, #80 ; 0x50
1904a: 4b13 ldr r3, [pc, #76] ; (19098 <lv_theme_material_init+0x2550>)
1904c: fb83 2300 smull r2, r3, r3, r0
19050: 17c2 asrs r2, r0, #31
19052: ebc2 12a3 rsb r2, r2, r3, asr #6
19056: b212 sxth r2, r2
19058: f7ff b8a8 b.w 181ac <lv_theme_material_init+0x1664>
lv_style_set_pad_top(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF);
1905c: 2000 movs r0, #0
1905e: 4b0d ldr r3, [pc, #52] ; (19094 <lv_theme_material_init+0x254c>)
19060: 4798 blx r3
19062: ebc0 1000 rsb r0, r0, r0, lsl #4
19066: 3050 adds r0, #80 ; 0x50
19068: f5b0 7fa0 cmp.w r0, #320 ; 0x140
1906c: da02 bge.n 19074 <lv_theme_material_init+0x252c>
1906e: 2201 movs r2, #1
19070: f7ff b8b5 b.w 181de <lv_theme_material_init+0x1696>
19074: 2000 movs r0, #0
19076: 4b07 ldr r3, [pc, #28] ; (19094 <lv_theme_material_init+0x254c>)
19078: 4798 blx r3
1907a: ebc0 1000 rsb r0, r0, r0, lsl #4
1907e: 3050 adds r0, #80 ; 0x50
19080: 4b05 ldr r3, [pc, #20] ; (19098 <lv_theme_material_init+0x2550>)
19082: fb83 2300 smull r2, r3, r3, r0
19086: 17c2 asrs r2, r0, #31
19088: ebc2 12a3 rsb r2, r2, r3, asr #6
1908c: b212 sxth r2, r2
1908e: f7ff b8a6 b.w 181de <lv_theme_material_init+0x1696>
19092: bf00 nop
19094: 00010f3d .word 0x00010f3d
19098: 66666667 .word 0x66666667
1909c: 2000 movs r0, #0
1909e: 4b1d ldr r3, [pc, #116] ; (19114 <lv_theme_material_init+0x25cc>)
190a0: 4798 blx r3
190a2: ebc0 1000 rsb r0, r0, r0, lsl #4
190a6: 0040 lsls r0, r0, #1
190a8: 3050 adds r0, #80 ; 0x50
190aa: 4b1b ldr r3, [pc, #108] ; (19118 <lv_theme_material_init+0x25d0>)
190ac: fb83 2300 smull r2, r3, r3, r0
190b0: 17c2 asrs r2, r0, #31
190b2: ebc2 12a3 rsb r2, r2, r3, asr #6
190b6: b212 sxth r2, r2
190b8: f7ff b891 b.w 181de <lv_theme_material_init+0x1696>
lv_style_set_pad_bottom(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF);
190bc: 2000 movs r0, #0
190be: 4b15 ldr r3, [pc, #84] ; (19114 <lv_theme_material_init+0x25cc>)
190c0: 4798 blx r3
190c2: ebc0 1000 rsb r0, r0, r0, lsl #4
190c6: 3050 adds r0, #80 ; 0x50
190c8: f5b0 7fa0 cmp.w r0, #320 ; 0x140
190cc: da02 bge.n 190d4 <lv_theme_material_init+0x258c>
190ce: 2201 movs r2, #1
190d0: f7ff b89e b.w 18210 <lv_theme_material_init+0x16c8>
190d4: 2000 movs r0, #0
190d6: 4b0f ldr r3, [pc, #60] ; (19114 <lv_theme_material_init+0x25cc>)
190d8: 4798 blx r3
190da: ebc0 1000 rsb r0, r0, r0, lsl #4
190de: 3050 adds r0, #80 ; 0x50
190e0: 4b0d ldr r3, [pc, #52] ; (19118 <lv_theme_material_init+0x25d0>)
190e2: fb83 2300 smull r2, r3, r3, r0
190e6: 17c2 asrs r2, r0, #31
190e8: ebc2 12a3 rsb r2, r2, r3, asr #6
190ec: b212 sxth r2, r2
190ee: f7ff b88f b.w 18210 <lv_theme_material_init+0x16c8>
190f2: 2000 movs r0, #0
190f4: 4b07 ldr r3, [pc, #28] ; (19114 <lv_theme_material_init+0x25cc>)
190f6: 4798 blx r3
190f8: ebc0 1000 rsb r0, r0, r0, lsl #4
190fc: 0040 lsls r0, r0, #1
190fe: 3050 adds r0, #80 ; 0x50
19100: 4b05 ldr r3, [pc, #20] ; (19118 <lv_theme_material_init+0x25d0>)
19102: fb83 2300 smull r2, r3, r3, r0
19106: 17c2 asrs r2, r0, #31
19108: ebc2 12a3 rsb r2, r2, r3, asr #6
1910c: b212 sxth r2, r2
1910e: f7ff b87f b.w 18210 <lv_theme_material_init+0x16c8>
19112: bf00 nop
19114: 00010f3d .word 0x00010f3d
19118: 66666667 .word 0x66666667
0001911c <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)
{
1911c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
19120: b0a4 sub sp, #144 ; 0x90
19122: 4607 mov r7, r0
19124: 460e mov r6, r1
19126: 4614 mov r4, r2
lv_img_ext_t * ext = lv_obj_get_ext_attr(img);
19128: 4bb5 ldr r3, [pc, #724] ; (19400 <lv_img_design+0x2e4>)
1912a: 4798 blx r3
1912c: 4605 mov r5, r0
if(mode == LV_DESIGN_COVER_CHK) {
1912e: 2c02 cmp r4, #2
19130: d00d beq.n 1914e <lv_img_design+0x32>
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;
}
else if(mode == LV_DESIGN_DRAW_MAIN) {
19132: 2c00 cmp r4, #0
19134: f040 81fa bne.w 1952c <lv_img_design+0x410>
if(ext->h == 0 || ext->w == 0) return true;
19138: f9b0 300a ldrsh.w r3, [r0, #10]
1913c: 2b00 cmp r3, #0
1913e: f000 81f3 beq.w 19528 <lv_img_design+0x40c>
19142: f9b0 3008 ldrsh.w r3, [r0, #8]
19146: 2b00 cmp r3, #0
19148: d173 bne.n 19232 <lv_img_design+0x116>
1914a: 2001 movs r0, #1
1914c: e1f1 b.n 19532 <lv_img_design+0x416>
_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)
1914e: 2202 movs r2, #2
19150: 2100 movs r1, #0
19152: 4638 mov r0, r7
19154: 4bab ldr r3, [pc, #684] ; (19404 <lv_img_design+0x2e8>)
19156: 4798 blx r3
if(lv_obj_get_style_clip_corner(img, LV_IMG_PART_MAIN)) return LV_DESIGN_RES_MASKED;
19158: b108 cbz r0, 1915e <lv_img_design+0x42>
1915a: 2003 movs r0, #3
1915c: e1e9 b.n 19532 <lv_img_design+0x416>
if(ext->src_type == LV_IMG_SRC_UNKNOWN || ext->src_type == LV_IMG_SRC_SYMBOL) return LV_DESIGN_RES_NOT_COVER;
1915e: 7d2a ldrb r2, [r5, #20]
19160: f002 0303 and.w r3, r2, #3
19164: 3b02 subs r3, #2
19166: b2db uxtb r3, r3
19168: 2b01 cmp r3, #1
1916a: f240 820f bls.w 1958c <lv_img_design+0x470>
if(ext->cf != LV_IMG_CF_TRUE_COLOR && ext->cf != LV_IMG_CF_RAW) return LV_DESIGN_RES_NOT_COVER;
1916e: f002 02f8 and.w r2, r2, #248 ; 0xf8
19172: 2a20 cmp r2, #32
19174: d003 beq.n 1917e <lv_img_design+0x62>
19176: 2a08 cmp r2, #8
19178: d001 beq.n 1917e <lv_img_design+0x62>
1917a: 2002 movs r0, #2
1917c: e1d9 b.n 19532 <lv_img_design+0x416>
_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)
1917e: 2206 movs r2, #6
19180: 2100 movs r1, #0
19182: 4638 mov r0, r7
19184: 4b9f ldr r3, [pc, #636] ; (19404 <lv_img_design+0x2e8>)
19186: 4798 blx r3
angle_final += ext->angle;
19188: 89ab ldrh r3, [r5, #12]
if(angle_final == 0) return LV_DESIGN_RES_NOT_COVER;
1918a: 42c3 cmn r3, r0
1918c: d101 bne.n 19192 <lv_img_design+0x76>
1918e: 2002 movs r0, #2
19190: e1cf b.n 19532 <lv_img_design+0x416>
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ZOOM, transform_zoom, lv_style_int_t, _int, scalar)
19192: 2207 movs r2, #7
19194: 2100 movs r1, #0
19196: 4638 mov r0, r7
19198: 4b9a ldr r3, [pc, #616] ; (19404 <lv_img_design+0x2e8>)
1919a: 4798 blx r3
zoom_final = (zoom_final * ext->zoom) >> 8;
1919c: 8a6b ldrh r3, [r5, #18]
1919e: fb00 f303 mul.w r3, r0, r3
191a2: 121b asrs r3, r3, #8
if(zoom_final != LV_IMG_ZOOM_NONE) {
191a4: f5b3 7f80 cmp.w r3, #256 ; 0x100
191a8: d008 beq.n 191bc <lv_img_design+0xa0>
if(_lv_area_is_in(clip_area, &img->coords, 0) == false) return LV_DESIGN_RES_NOT_COVER;
191aa: 2200 movs r2, #0
191ac: f107 0110 add.w r1, r7, #16
191b0: 4630 mov r0, r6
191b2: 4b95 ldr r3, [pc, #596] ; (19408 <lv_img_design+0x2ec>)
191b4: 4798 blx r3
191b6: bb88 cbnz r0, 1921c <lv_img_design+0x100>
191b8: 2002 movs r0, #2
191ba: e1ba b.n 19532 <lv_img_design+0x416>
_lv_img_buf_get_transformed_area(&a, lv_obj_get_width(img), lv_obj_get_height(img), 0, zoom_final, &ext->pivot);
191bc: 4638 mov r0, r7
191be: 4b93 ldr r3, [pc, #588] ; (1940c <lv_img_design+0x2f0>)
191c0: 4798 blx r3
191c2: 4604 mov r4, r0
191c4: 4638 mov r0, r7
191c6: 4b92 ldr r3, [pc, #584] ; (19410 <lv_img_design+0x2f4>)
191c8: 4798 blx r3
191ca: 350e adds r5, #14
191cc: 9501 str r5, [sp, #4]
191ce: f44f 7380 mov.w r3, #256 ; 0x100
191d2: 9300 str r3, [sp, #0]
191d4: 2300 movs r3, #0
191d6: 4602 mov r2, r0
191d8: 4621 mov r1, r4
191da: a80f add r0, sp, #60 ; 0x3c
191dc: 4c8d ldr r4, [pc, #564] ; (19414 <lv_img_design+0x2f8>)
191de: 47a0 blx r4
a.x1 += img->coords.x1;
191e0: 8a3a ldrh r2, [r7, #16]
191e2: f8bd 303c ldrh.w r3, [sp, #60] ; 0x3c
191e6: 4413 add r3, r2
191e8: f8ad 303c strh.w r3, [sp, #60] ; 0x3c
a.y1 += img->coords.y1;
191ec: 8a7b ldrh r3, [r7, #18]
191ee: f8bd 103e ldrh.w r1, [sp, #62] ; 0x3e
191f2: 4419 add r1, r3
191f4: f8ad 103e strh.w r1, [sp, #62] ; 0x3e
a.x2 += img->coords.x1;
191f8: f8bd 1040 ldrh.w r1, [sp, #64] ; 0x40
191fc: 440a add r2, r1
191fe: f8ad 2040 strh.w r2, [sp, #64] ; 0x40
a.y2 += img->coords.y1;
19202: f8bd 2042 ldrh.w r2, [sp, #66] ; 0x42
19206: 4413 add r3, r2
19208: f8ad 3042 strh.w r3, [sp, #66] ; 0x42
if(_lv_area_is_in(clip_area, &a, 0) == false) return LV_DESIGN_RES_NOT_COVER;
1920c: 2200 movs r2, #0
1920e: a90f add r1, sp, #60 ; 0x3c
19210: 4630 mov r0, r6
19212: 4b7d ldr r3, [pc, #500] ; (19408 <lv_img_design+0x2ec>)
19214: 4798 blx r3
19216: b908 cbnz r0, 1921c <lv_img_design+0x100>
19218: 2002 movs r0, #2
1921a: e18a b.n 19532 <lv_img_design+0x416>
_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)
1921c: f248 02ac movw r2, #32940 ; 0x80ac
19220: 2100 movs r1, #0
19222: 4638 mov r0, r7
19224: 4b7c ldr r3, [pc, #496] ; (19418 <lv_img_design+0x2fc>)
19226: 4798 blx r3
return LV_DESIGN_RES_COVER;
19228: 28ff cmp r0, #255 ; 0xff
1922a: bf14 ite ne
1922c: 2002 movne r0, #2
1922e: 2001 moveq r0, #1
19230: e17f b.n 19532 <lv_img_design+0x416>
lv_area_t img_coords;
lv_obj_get_coords(img, &img_coords);
19232: a902 add r1, sp, #8
19234: 4638 mov r0, r7
19236: 4b79 ldr r3, [pc, #484] ; (1941c <lv_img_design+0x300>)
19238: 4798 blx r3
lv_draw_rect_dsc_t bg_dsc;
lv_draw_rect_dsc_init(&bg_dsc);
1923a: a80f add r0, sp, #60 ; 0x3c
1923c: 4b78 ldr r3, [pc, #480] ; (19420 <lv_img_design+0x304>)
1923e: 4798 blx r3
lv_obj_init_draw_rect_dsc(img, LV_IMG_PART_MAIN, &bg_dsc);
19240: aa0f add r2, sp, #60 ; 0x3c
19242: 2100 movs r1, #0
19244: 4638 mov r0, r7
19246: 4b77 ldr r3, [pc, #476] ; (19424 <lv_img_design+0x308>)
19248: 4798 blx r3
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar)
1924a: 2233 movs r2, #51 ; 0x33
1924c: 2100 movs r1, #0
1924e: 4638 mov r0, r7
19250: 4b6c ldr r3, [pc, #432] ; (19404 <lv_img_design+0x2e8>)
19252: 4798 blx r3
/*If the border is drawn later disable loading its properties*/
if(lv_obj_get_style_border_post(img, LV_OBJ_PART_MAIN)) {
19254: b110 cbz r0, 1925c <lv_img_design+0x140>
bg_dsc.border_opa = LV_OPA_TRANSP;
19256: 2300 movs r3, #0
19258: f88d 3050 strb.w r3, [sp, #80] ; 0x50
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ZOOM, transform_zoom, lv_style_int_t, _int, scalar)
1925c: 2207 movs r2, #7
1925e: 2100 movs r1, #0
19260: 4638 mov r0, r7
19262: 4b68 ldr r3, [pc, #416] ; (19404 <lv_img_design+0x2e8>)
19264: 4798 blx r3
}
int32_t zoom_final = lv_obj_get_style_transform_zoom(img, LV_IMG_PART_MAIN);
zoom_final = (zoom_final * ext->zoom) >> 8;
19266: 8a6b ldrh r3, [r5, #18]
19268: fb00 f003 mul.w r0, r0, r3
if(zoom_final == 0) return LV_DESIGN_RES_OK;
1926c: 1204 asrs r4, r0, #8
1926e: d101 bne.n 19274 <lv_img_design+0x158>
19270: 2000 movs r0, #0
19272: e15e b.n 19532 <lv_img_design+0x416>
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ANGLE, transform_angle, lv_style_int_t, _int, scalar)
19274: 2206 movs r2, #6
19276: 2100 movs r1, #0
19278: 4638 mov r0, r7
1927a: f8df 8188 ldr.w r8, [pc, #392] ; 19404 <lv_img_design+0x2e8>
1927e: 47c0 blx r8
int32_t angle_final = lv_obj_get_style_transform_angle(img, LV_IMG_PART_MAIN);
angle_final += ext->angle;
19280: f8b5 900c ldrh.w r9, [r5, #12]
19284: 4481 add r9, r0
lv_area_t bg_coords;
_lv_img_buf_get_transformed_area(&bg_coords, lv_area_get_width(&img_coords), lv_area_get_height(&img_coords),
19286: b2a4 uxth r4, r4
* @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);
19288: f8bd 200e ldrh.w r2, [sp, #14]
1928c: 3201 adds r2, #1
1928e: f8bd 300a ldrh.w r3, [sp, #10]
19292: 1ad2 subs r2, r2, r3
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
19294: f8bd 100c ldrh.w r1, [sp, #12]
19298: 3101 adds r1, #1
1929a: f8bd 3008 ldrh.w r3, [sp, #8]
1929e: 1ac9 subs r1, r1, r3
192a0: f105 030e add.w r3, r5, #14
192a4: 9301 str r3, [sp, #4]
192a6: 9400 str r4, [sp, #0]
192a8: fa0f f389 sxth.w r3, r9
192ac: b212 sxth r2, r2
192ae: b209 sxth r1, r1
192b0: a804 add r0, sp, #16
192b2: f8df a160 ldr.w sl, [pc, #352] ; 19414 <lv_img_design+0x2f8>
192b6: 47d0 blx sl
angle_final, zoom_final, &ext->pivot);
bg_coords.x1 += img_coords.x1;
192b8: f8bd 2008 ldrh.w r2, [sp, #8]
192bc: f8bd 3010 ldrh.w r3, [sp, #16]
192c0: 4413 add r3, r2
192c2: f8ad 3010 strh.w r3, [sp, #16]
bg_coords.y1 += img_coords.y1;
192c6: f8bd 300a ldrh.w r3, [sp, #10]
192ca: f8bd 1012 ldrh.w r1, [sp, #18]
192ce: 4419 add r1, r3
192d0: f8ad 1012 strh.w r1, [sp, #18]
bg_coords.x2 += img_coords.x1;
192d4: f8bd 1014 ldrh.w r1, [sp, #20]
192d8: 440a add r2, r1
192da: f8ad 2014 strh.w r2, [sp, #20]
bg_coords.y2 += img_coords.y1;
192de: f8bd 2016 ldrh.w r2, [sp, #22]
192e2: 4413 add r3, r2
192e4: f8ad 3016 strh.w r3, [sp, #22]
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
192e8: 2212 movs r2, #18
192ea: 2100 movs r1, #0
192ec: 4638 mov r0, r7
192ee: 47c0 blx r8
bg_coords.x1 -= lv_obj_get_style_pad_left(img, LV_IMG_PART_MAIN);
192f0: f8bd 3010 ldrh.w r3, [sp, #16]
192f4: 1a18 subs r0, r3, r0
192f6: f8ad 0010 strh.w r0, [sp, #16]
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
192fa: 2213 movs r2, #19
192fc: 2100 movs r1, #0
192fe: 4638 mov r0, r7
19300: 47c0 blx r8
bg_coords.x2 += lv_obj_get_style_pad_right(img, LV_IMG_PART_MAIN);
19302: f8bd 3014 ldrh.w r3, [sp, #20]
19306: 4418 add r0, r3
19308: f8ad 0014 strh.w r0, [sp, #20]
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
1930c: 2210 movs r2, #16
1930e: 2100 movs r1, #0
19310: 4638 mov r0, r7
19312: 47c0 blx r8
bg_coords.y1 -= lv_obj_get_style_pad_top(img, LV_IMG_PART_MAIN);
19314: f8bd 3012 ldrh.w r3, [sp, #18]
19318: 1a18 subs r0, r3, r0
1931a: f8ad 0012 strh.w r0, [sp, #18]
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
1931e: 2211 movs r2, #17
19320: 2100 movs r1, #0
19322: 4638 mov r0, r7
19324: 47c0 blx r8
bg_coords.y2 += lv_obj_get_style_pad_bottom(img, LV_IMG_PART_MAIN);
19326: f8bd 3016 ldrh.w r3, [sp, #22]
1932a: 4418 add r0, r3
1932c: f8ad 0016 strh.w r0, [sp, #22]
lv_draw_rect(&bg_coords, clip_area, &bg_dsc);
19330: aa0f add r2, sp, #60 ; 0x3c
19332: 4631 mov r1, r6
19334: a804 add r0, sp, #16
19336: 4b3c ldr r3, [pc, #240] ; (19428 <lv_img_design+0x30c>)
19338: 4798 blx r3
_LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar)
1933a: 2202 movs r2, #2
1933c: 2100 movs r1, #0
1933e: 4638 mov r0, r7
19340: 47c0 blx r8
if(lv_obj_get_style_clip_corner(img, LV_OBJ_PART_MAIN)) {
19342: b9c8 cbnz r0, 19378 <lv_img_design+0x25c>
lv_draw_mask_radius_init(mp, &bg_coords, r, false);
/*Add the mask and use `img+8` as custom id. Don't use `obj` directly because it might be used by the user*/
lv_draw_mask_add(mp, img + 8);
}
if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_VARIABLE) {
19344: 7d2b ldrb r3, [r5, #20]
19346: f003 0303 and.w r3, r3, #3
1934a: 2b01 cmp r3, #1
1934c: d92a bls.n 193a4 <lv_img_design+0x288>
for(; cords_tmp.x1 <= img_coords.x2; cords_tmp.x1 += ext->w, cords_tmp.x2 += ext->w) {
lv_draw_img(&cords_tmp, clip_area, ext->src, &img_dsc);
}
}
}
else if(ext->src_type == LV_IMG_SRC_SYMBOL) {
1934e: 2b02 cmp r3, #2
19350: f000 80d1 beq.w 194f6 <lv_img_design+0x3da>
label_dsc.color = lv_obj_get_style_image_recolor(img, LV_IMG_PART_MAIN);
lv_draw_label(&img_coords, clip_area, &label_dsc, ext->src, NULL);
}
else {
/*Trigger the error handler of image drawer*/
LV_LOG_WARN("lv_img_design: image source type is unknown");
19354: 4b35 ldr r3, [pc, #212] ; (1942c <lv_img_design+0x310>)
19356: 9300 str r3, [sp, #0]
19358: 4b35 ldr r3, [pc, #212] ; (19430 <lv_img_design+0x314>)
1935a: f240 22bb movw r2, #699 ; 0x2bb
1935e: 4935 ldr r1, [pc, #212] ; (19434 <lv_img_design+0x318>)
19360: 2002 movs r0, #2
19362: 4c35 ldr r4, [pc, #212] ; (19438 <lv_img_design+0x31c>)
19364: 47a0 blx r4
lv_draw_img(&img->coords, clip_area, NULL, NULL);
19366: 2300 movs r3, #0
19368: 461a mov r2, r3
1936a: 4631 mov r1, r6
1936c: f107 0010 add.w r0, r7, #16
19370: 4c32 ldr r4, [pc, #200] ; (1943c <lv_img_design+0x320>)
19372: 47a0 blx r4
lv_obj_init_draw_rect_dsc(img, LV_OBJ_PART_MAIN, &draw_dsc);
lv_draw_rect(&img->coords, clip_area, &draw_dsc);
}
}
return LV_DESIGN_RES_OK;
19374: 2000 movs r0, #0
19376: e0dc b.n 19532 <lv_img_design+0x416>
lv_draw_mask_radius_param_t * mp = _lv_mem_buf_get(sizeof(lv_draw_mask_radius_param_t));
19378: 201c movs r0, #28
1937a: 4b31 ldr r3, [pc, #196] ; (19440 <lv_img_design+0x324>)
1937c: 4798 blx r3
1937e: 4680 mov r8, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar)
19380: 2201 movs r2, #1
19382: 2100 movs r1, #0
19384: 4638 mov r0, r7
19386: 4b1f ldr r3, [pc, #124] ; (19404 <lv_img_design+0x2e8>)
19388: 4798 blx r3
lv_draw_mask_radius_init(mp, &bg_coords, r, false);
1938a: 2300 movs r3, #0
1938c: 4602 mov r2, r0
1938e: a904 add r1, sp, #16
19390: 4640 mov r0, r8
19392: f8df a0bc ldr.w sl, [pc, #188] ; 19450 <lv_img_design+0x334>
19396: 47d0 blx sl
lv_draw_mask_add(mp, img + 8);
19398: f507 7118 add.w r1, r7, #608 ; 0x260
1939c: 4640 mov r0, r8
1939e: 4b29 ldr r3, [pc, #164] ; (19444 <lv_img_design+0x328>)
193a0: 4798 blx r3
193a2: e7cf b.n 19344 <lv_img_design+0x228>
img_coords.x1 += ext->offset.x;
193a4: f8bd 2008 ldrh.w r2, [sp, #8]
193a8: 88ab ldrh r3, [r5, #4]
193aa: 441a add r2, r3
193ac: b292 uxth r2, r2
193ae: b210 sxth r0, r2
193b0: f8ad 0008 strh.w r0, [sp, #8]
img_coords.y1 += ext->offset.y;
193b4: f8bd 300a ldrh.w r3, [sp, #10]
193b8: 88e9 ldrh r1, [r5, #6]
193ba: 440b add r3, r1
193bc: b29b uxth r3, r3
193be: b219 sxth r1, r3
193c0: f8ad 100a strh.w r1, [sp, #10]
if(img_coords.x1 > img->coords.x1) img_coords.x1 -= ext->w;
193c4: f9b7 e010 ldrsh.w lr, [r7, #16]
193c8: 4586 cmp lr, r0
193ca: da03 bge.n 193d4 <lv_img_design+0x2b8>
193cc: 8928 ldrh r0, [r5, #8]
193ce: 1a12 subs r2, r2, r0
193d0: f8ad 2008 strh.w r2, [sp, #8]
if(img_coords.y1 > img->coords.y1) img_coords.y1 -= ext->h;
193d4: f9b7 2012 ldrsh.w r2, [r7, #18]
193d8: 428a cmp r2, r1
193da: da03 bge.n 193e4 <lv_img_design+0x2c8>
193dc: 896a ldrh r2, [r5, #10]
193de: 1a9b subs r3, r3, r2
193e0: f8ad 300a strh.w r3, [sp, #10]
lv_draw_img_dsc_init(&img_dsc);
193e4: a808 add r0, sp, #32
193e6: 4b18 ldr r3, [pc, #96] ; (19448 <lv_img_design+0x32c>)
193e8: 4798 blx r3
lv_obj_init_draw_img_dsc(img, LV_IMG_PART_MAIN, &img_dsc);
193ea: aa08 add r2, sp, #32
193ec: 2100 movs r1, #0
193ee: 4638 mov r0, r7
193f0: 4b16 ldr r3, [pc, #88] ; (1944c <lv_img_design+0x330>)
193f2: 4798 blx r3
img_dsc.zoom = zoom_final;
193f4: f8ad 4028 strh.w r4, [sp, #40] ; 0x28
if(img_dsc.zoom == 0) return LV_DESIGN_RES_OK;
193f8: bb64 cbnz r4, 19454 <lv_img_design+0x338>
193fa: 2000 movs r0, #0
193fc: e099 b.n 19532 <lv_img_design+0x416>
193fe: bf00 nop
19400: 00004d9d .word 0x00004d9d
19404: 000044d5 .word 0x000044d5
19408: 0001176d .word 0x0001176d
1940c: 00002f5d .word 0x00002f5d
19410: 00002fad .word 0x00002fad
19414: 0000ec65 .word 0x0000ec65
19418: 0000460d .word 0x0000460d
1941c: 00002e41 .word 0x00002e41
19420: 0000c269 .word 0x0000c269
19424: 000050c5 .word 0x000050c5
19428: 0000c331 .word 0x0000c331
1942c: 000250e0 .word 0x000250e0
19430: 00029590 .word 0x00029590
19434: 000296b8 .word 0x000296b8
19438: 0001225d .word 0x0001225d
1943c: 000096e9 .word 0x000096e9
19440: 0001293d .word 0x0001293d
19444: 0000bdc1 .word 0x0000bdc1
19448: 00009645 .word 0x00009645
1944c: 00005769 .word 0x00005769
19450: 0000c02d .word 0x0000c02d
img_dsc.angle = angle_final;
19454: f8ad 9022 strh.w r9, [sp, #34] ; 0x22
img_dsc.pivot.x = ext->pivot.x;
19458: 89eb ldrh r3, [r5, #14]
1945a: f8ad 3024 strh.w r3, [sp, #36] ; 0x24
img_dsc.pivot.y = ext->pivot.y;
1945e: 8a2b ldrh r3, [r5, #16]
19460: f8ad 3026 strh.w r3, [sp, #38] ; 0x26
img_dsc.antialias = ext->antialias;
19464: 7d6a ldrb r2, [r5, #21]
19466: f89d 302f ldrb.w r3, [sp, #47] ; 0x2f
1946a: f362 0300 bfi r3, r2, #0, #1
1946e: f88d 302f strb.w r3, [sp, #47] ; 0x2f
cords_tmp.y1 = img_coords.y1;
19472: f9bd 300a ldrsh.w r3, [sp, #10]
19476: f8ad 301a strh.w r3, [sp, #26]
cords_tmp.y2 = img_coords.y1 + ext->h - 1;
1947a: 1e5a subs r2, r3, #1
1947c: 8969 ldrh r1, [r5, #10]
1947e: 440a add r2, r1
19480: f8ad 201e strh.w r2, [sp, #30]
for(; cords_tmp.y1 <= img_coords.y2; cords_tmp.y1 += ext->h, cords_tmp.y2 += ext->h) {
19484: f9bd 200e ldrsh.w r2, [sp, #14]
19488: 429a cmp r2, r3
1948a: f6ff af73 blt.w 19374 <lv_img_design+0x258>
lv_draw_img(&cords_tmp, clip_area, ext->src, &img_dsc);
1948e: 4c40 ldr r4, [pc, #256] ; (19590 <lv_img_design+0x474>)
cords_tmp.x1 = img_coords.x1;
19490: f9bd 3008 ldrsh.w r3, [sp, #8]
19494: f8ad 3018 strh.w r3, [sp, #24]
cords_tmp.x2 = img_coords.x1 + ext->w - 1;
19498: 1e5a subs r2, r3, #1
1949a: 8929 ldrh r1, [r5, #8]
1949c: 440a add r2, r1
1949e: f8ad 201c strh.w r2, [sp, #28]
for(; cords_tmp.x1 <= img_coords.x2; cords_tmp.x1 += ext->w, cords_tmp.x2 += ext->w) {
194a2: f9bd 200c ldrsh.w r2, [sp, #12]
194a6: 429a cmp r2, r3
194a8: db14 blt.n 194d4 <lv_img_design+0x3b8>
lv_draw_img(&cords_tmp, clip_area, ext->src, &img_dsc);
194aa: ab08 add r3, sp, #32
194ac: 682a ldr r2, [r5, #0]
194ae: 4631 mov r1, r6
194b0: a806 add r0, sp, #24
194b2: 47a0 blx r4
for(; cords_tmp.x1 <= img_coords.x2; cords_tmp.x1 += ext->w, cords_tmp.x2 += ext->w) {
194b4: 892a ldrh r2, [r5, #8]
194b6: f8bd 3018 ldrh.w r3, [sp, #24]
194ba: 4413 add r3, r2
194bc: b21b sxth r3, r3
194be: f8ad 3018 strh.w r3, [sp, #24]
194c2: f8bd 101c ldrh.w r1, [sp, #28]
194c6: 440a add r2, r1
194c8: f8ad 201c strh.w r2, [sp, #28]
194cc: f9bd 200c ldrsh.w r2, [sp, #12]
194d0: 429a cmp r2, r3
194d2: daea bge.n 194aa <lv_img_design+0x38e>
for(; cords_tmp.y1 <= img_coords.y2; cords_tmp.y1 += ext->h, cords_tmp.y2 += ext->h) {
194d4: 896a ldrh r2, [r5, #10]
194d6: f8bd 301a ldrh.w r3, [sp, #26]
194da: 4413 add r3, r2
194dc: b21b sxth r3, r3
194de: f8ad 301a strh.w r3, [sp, #26]
194e2: f8bd 101e ldrh.w r1, [sp, #30]
194e6: 440a add r2, r1
194e8: f8ad 201e strh.w r2, [sp, #30]
194ec: f9bd 200e ldrsh.w r2, [sp, #14]
194f0: 429a cmp r2, r3
194f2: dacd bge.n 19490 <lv_img_design+0x374>
194f4: e73e b.n 19374 <lv_img_design+0x258>
lv_draw_label_dsc_init(&label_dsc);
194f6: a808 add r0, sp, #32
194f8: 4b26 ldr r3, [pc, #152] ; (19594 <lv_img_design+0x478>)
194fa: 4798 blx r3
lv_obj_init_draw_label_dsc(img, LV_IMG_PART_MAIN, &label_dsc);
194fc: aa08 add r2, sp, #32
194fe: 2100 movs r1, #0
19500: 4638 mov r0, r7
19502: 4b25 ldr r3, [pc, #148] ; (19598 <lv_img_design+0x47c>)
19504: 4798 blx r3
_LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar)
19506: f248 02a9 movw r2, #32937 ; 0x80a9
1950a: 2100 movs r1, #0
1950c: 4638 mov r0, r7
1950e: 4b23 ldr r3, [pc, #140] ; (1959c <lv_img_design+0x480>)
19510: 4798 blx r3
label_dsc.color = lv_obj_get_style_image_recolor(img, LV_IMG_PART_MAIN);
19512: f8ad 0020 strh.w r0, [sp, #32]
lv_draw_label(&img_coords, clip_area, &label_dsc, ext->src, NULL);
19516: 682b ldr r3, [r5, #0]
19518: 2200 movs r2, #0
1951a: 9200 str r2, [sp, #0]
1951c: aa08 add r2, sp, #32
1951e: 4631 mov r1, r6
19520: a802 add r0, sp, #8
19522: 4c1f ldr r4, [pc, #124] ; (195a0 <lv_img_design+0x484>)
19524: 47a0 blx r4
19526: e725 b.n 19374 <lv_img_design+0x258>
if(ext->h == 0 || ext->w == 0) return true;
19528: 2001 movs r0, #1
1952a: e002 b.n 19532 <lv_img_design+0x416>
else if(mode == LV_DESIGN_DRAW_POST) {
1952c: 2c01 cmp r4, #1
1952e: d003 beq.n 19538 <lv_img_design+0x41c>
return LV_DESIGN_RES_OK;
19530: 2000 movs r0, #0
}
19532: b024 add sp, #144 ; 0x90
19534: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
_LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar)
19538: 2202 movs r2, #2
1953a: 2100 movs r1, #0
1953c: 4638 mov r0, r7
1953e: 4b19 ldr r3, [pc, #100] ; (195a4 <lv_img_design+0x488>)
19540: 4798 blx r3
if(lv_obj_get_style_clip_corner(img, LV_OBJ_PART_MAIN)) {
19542: b950 cbnz r0, 1955a <lv_img_design+0x43e>
lv_draw_rect_dsc_init(&draw_dsc);
19544: a80f add r0, sp, #60 ; 0x3c
19546: 4b18 ldr r3, [pc, #96] ; (195a8 <lv_img_design+0x48c>)
19548: 4798 blx r3
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar)
1954a: 2233 movs r2, #51 ; 0x33
1954c: 2100 movs r1, #0
1954e: 4638 mov r0, r7
19550: 4b14 ldr r3, [pc, #80] ; (195a4 <lv_img_design+0x488>)
19552: 4798 blx r3
if(lv_obj_get_style_border_post(img, LV_OBJ_PART_MAIN)) {
19554: b940 cbnz r0, 19568 <lv_img_design+0x44c>
return LV_DESIGN_RES_OK;
19556: 2000 movs r0, #0
19558: e7eb b.n 19532 <lv_img_design+0x416>
lv_draw_mask_radius_param_t * param = lv_draw_mask_remove_custom(img + 8);
1955a: f507 7018 add.w r0, r7, #608 ; 0x260
1955e: 4b13 ldr r3, [pc, #76] ; (195ac <lv_img_design+0x490>)
19560: 4798 blx r3
_lv_mem_buf_release(param);
19562: 4b13 ldr r3, [pc, #76] ; (195b0 <lv_img_design+0x494>)
19564: 4798 blx r3
19566: e7ed b.n 19544 <lv_img_design+0x428>
draw_dsc.bg_opa = LV_OPA_TRANSP;
19568: 2100 movs r1, #0
1956a: f88d 1048 strb.w r1, [sp, #72] ; 0x48
draw_dsc.pattern_opa = LV_OPA_TRANSP;
1956e: f88d 1072 strb.w r1, [sp, #114] ; 0x72
draw_dsc.shadow_opa = LV_OPA_TRANSP;
19572: f88d 1064 strb.w r1, [sp, #100] ; 0x64
lv_obj_init_draw_rect_dsc(img, LV_OBJ_PART_MAIN, &draw_dsc);
19576: aa0f add r2, sp, #60 ; 0x3c
19578: 4638 mov r0, r7
1957a: 4b0e ldr r3, [pc, #56] ; (195b4 <lv_img_design+0x498>)
1957c: 4798 blx r3
lv_draw_rect(&img->coords, clip_area, &draw_dsc);
1957e: aa0f add r2, sp, #60 ; 0x3c
19580: 4631 mov r1, r6
19582: f107 0010 add.w r0, r7, #16
19586: 4b0c ldr r3, [pc, #48] ; (195b8 <lv_img_design+0x49c>)
19588: 4798 blx r3
1958a: e7e4 b.n 19556 <lv_img_design+0x43a>
if(ext->src_type == LV_IMG_SRC_UNKNOWN || ext->src_type == LV_IMG_SRC_SYMBOL) return LV_DESIGN_RES_NOT_COVER;
1958c: 2002 movs r0, #2
1958e: e7d0 b.n 19532 <lv_img_design+0x416>
19590: 000096e9 .word 0x000096e9
19594: 000099cd .word 0x000099cd
19598: 000056b1 .word 0x000056b1
1959c: 00004581 .word 0x00004581
195a0: 00009a25 .word 0x00009a25
195a4: 000044d5 .word 0x000044d5
195a8: 0000c269 .word 0x0000c269
195ac: 0000be91 .word 0x0000be91
195b0: 00012571 .word 0x00012571
195b4: 000050c5 .word 0x000050c5
195b8: 0000c331 .word 0x0000c331
000195bc <lv_img_get_auto_size>:
{
195bc: b530 push {r4, r5, lr}
195be: b083 sub sp, #12
195c0: 4604 mov r4, r0
LV_ASSERT_OBJ(img, LV_OBJX_NAME);
195c2: 4b0c ldr r3, [pc, #48] ; (195f4 <lv_img_get_auto_size+0x38>)
195c4: 4798 blx r3
195c6: b968 cbnz r0, 195e4 <lv_img_get_auto_size+0x28>
195c8: 4b0b ldr r3, [pc, #44] ; (195f8 <lv_img_get_auto_size+0x3c>)
195ca: 9300 str r3, [sp, #0]
195cc: f44f 72e7 mov.w r2, #462 ; 0x1ce
195d0: 490a ldr r1, [pc, #40] ; (195fc <lv_img_get_auto_size+0x40>)
195d2: 2003 movs r0, #3
195d4: 4d0a ldr r5, [pc, #40] ; (19600 <lv_img_get_auto_size+0x44>)
195d6: 47a8 blx r5
195d8: 4622 mov r2, r4
195da: 2300 movs r3, #0
195dc: 4809 ldr r0, [pc, #36] ; (19604 <lv_img_get_auto_size+0x48>)
195de: 490a ldr r1, [pc, #40] ; (19608 <lv_img_get_auto_size+0x4c>)
195e0: 4788 blx r1
195e2: e7fe b.n 195e2 <lv_img_get_auto_size+0x26>
lv_img_ext_t * ext = lv_obj_get_ext_attr(img);
195e4: 4620 mov r0, r4
195e6: 4b09 ldr r3, [pc, #36] ; (1960c <lv_img_get_auto_size+0x50>)
195e8: 4798 blx r3
return ext->auto_size == 0 ? false : true;
195ea: 7d00 ldrb r0, [r0, #20]
}
195ec: f3c0 0080 ubfx r0, r0, #2, #1
195f0: b003 add sp, #12
195f2: bd30 pop {r4, r5, pc}
195f4: 000022b1 .word 0x000022b1
195f8: 00029608 .word 0x00029608
195fc: 000296b8 .word 0x000296b8
19600: 0001225d .word 0x0001225d
19604: 0002483c .word 0x0002483c
19608: 000022b9 .word 0x000022b9
1960c: 00004d9d .word 0x00004d9d
00019610 <lv_img_set_src>:
{
19610: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
19614: b086 sub sp, #24
19616: 4605 mov r5, r0
19618: 460e mov r6, r1
LV_ASSERT_OBJ(img, LV_OBJX_NAME);
1961a: 4b7c ldr r3, [pc, #496] ; (1980c <lv_img_set_src+0x1fc>)
1961c: 4798 blx r3
1961e: b960 cbnz r0, 1963a <lv_img_set_src+0x2a>
19620: 4b7b ldr r3, [pc, #492] ; (19810 <lv_img_set_src+0x200>)
19622: 9300 str r3, [sp, #0]
19624: 228f movs r2, #143 ; 0x8f
19626: 497b ldr r1, [pc, #492] ; (19814 <lv_img_set_src+0x204>)
19628: 2003 movs r0, #3
1962a: 4c7b ldr r4, [pc, #492] ; (19818 <lv_img_set_src+0x208>)
1962c: 47a0 blx r4
1962e: 462a mov r2, r5
19630: 2300 movs r3, #0
19632: 487a ldr r0, [pc, #488] ; (1981c <lv_img_set_src+0x20c>)
19634: 497a ldr r1, [pc, #488] ; (19820 <lv_img_set_src+0x210>)
19636: 4788 blx r1
19638: e7fe b.n 19638 <lv_img_set_src+0x28>
lv_img_src_t src_type = lv_img_src_get_type(src_img);
1963a: 4630 mov r0, r6
1963c: 4b79 ldr r3, [pc, #484] ; (19824 <lv_img_set_src+0x214>)
1963e: 4798 blx r3
19640: 4607 mov r7, r0
lv_img_ext_t * ext = lv_obj_get_ext_attr(img);
19642: 4628 mov r0, r5
19644: 4b78 ldr r3, [pc, #480] ; (19828 <lv_img_set_src+0x218>)
19646: 4798 blx r3
19648: 4604 mov r4, r0
switch(src_type) {
1964a: 2f02 cmp r7, #2
1964c: d83a bhi.n 196c4 <lv_img_set_src+0xb4>
if(src_type == LV_IMG_SRC_UNKNOWN) {
1964e: 2f03 cmp r7, #3
19650: d042 beq.n 196d8 <lv_img_set_src+0xc8>
lv_img_decoder_get_info(src_img, &header);
19652: a905 add r1, sp, #20
19654: 4630 mov r0, r6
19656: 4b75 ldr r3, [pc, #468] ; (1982c <lv_img_set_src+0x21c>)
19658: 4798 blx r3
if(src_type == LV_IMG_SRC_VARIABLE) {
1965a: 2f00 cmp r7, #0
1965c: d055 beq.n 1970a <lv_img_set_src+0xfa>
else if(src_type == LV_IMG_SRC_FILE || src_type == LV_IMG_SRC_SYMBOL) {
1965e: 1e7b subs r3, r7, #1
19660: b2db uxtb r3, r3
19662: 2b01 cmp r3, #1
19664: d966 bls.n 19734 <lv_img_set_src+0x124>
if(src_type == LV_IMG_SRC_SYMBOL) {
19666: 2f02 cmp r7, #2
19668: f000 8099 beq.w 1979e <lv_img_set_src+0x18e>
ext->src_type = src_type;
1966c: 7d21 ldrb r1, [r4, #20]
1966e: f367 0101 bfi r1, r7, #0, #2
ext->w = header.w;
19672: 9a05 ldr r2, [sp, #20]
19674: f3c2 228a ubfx r2, r2, #10, #11
19678: 8122 strh r2, [r4, #8]
ext->h = header.h;
1967a: f8bd 3016 ldrh.w r3, [sp, #22]
1967e: f3c3 134a ubfx r3, r3, #5, #11
19682: 8163 strh r3, [r4, #10]
ext->cf = header.cf;
19684: f89d 0014 ldrb.w r0, [sp, #20]
19688: f360 01c7 bfi r1, r0, #3, #5
1968c: 7521 strb r1, [r4, #20]
ext->pivot.x = header.w / 2;
1968e: f3c2 0249 ubfx r2, r2, #1, #10
19692: 81e2 strh r2, [r4, #14]
ext->pivot.y = header.h / 2;
19694: f3c3 0349 ubfx r3, r3, #1, #10
19698: 8223 strh r3, [r4, #16]
if(lv_img_get_auto_size(img) != false) {
1969a: 4628 mov r0, r5
1969c: 4b64 ldr r3, [pc, #400] ; (19830 <lv_img_set_src+0x220>)
1969e: 4798 blx r3
196a0: 2800 cmp r0, #0
196a2: f040 80aa bne.w 197fa <lv_img_set_src+0x1ea>
if(ext->angle || ext->zoom != LV_IMG_ZOOM_NONE) lv_obj_refresh_ext_draw_pad(img);
196a6: 89a3 ldrh r3, [r4, #12]
196a8: b91b cbnz r3, 196b2 <lv_img_set_src+0xa2>
196aa: 8a63 ldrh r3, [r4, #18]
196ac: f5b3 7f80 cmp.w r3, #256 ; 0x100
196b0: d002 beq.n 196b8 <lv_img_set_src+0xa8>
196b2: 4628 mov r0, r5
196b4: 4b5f ldr r3, [pc, #380] ; (19834 <lv_img_set_src+0x224>)
196b6: 4798 blx r3
lv_obj_invalidate(img);
196b8: 4628 mov r0, r5
196ba: 4b5f ldr r3, [pc, #380] ; (19838 <lv_img_set_src+0x228>)
196bc: 4798 blx r3
}
196be: b006 add sp, #24
196c0: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
LV_LOG_WARN("lv_img_set_src: unknown type");
196c4: 4b5d ldr r3, [pc, #372] ; (1983c <lv_img_set_src+0x22c>)
196c6: 9300 str r3, [sp, #0]
196c8: 4b51 ldr r3, [pc, #324] ; (19810 <lv_img_set_src+0x200>)
196ca: 22a0 movs r2, #160 ; 0xa0
196cc: 4951 ldr r1, [pc, #324] ; (19814 <lv_img_set_src+0x204>)
196ce: 2002 movs r0, #2
196d0: f8df 8144 ldr.w r8, [pc, #324] ; 19818 <lv_img_set_src+0x208>
196d4: 47c0 blx r8
196d6: e7ba b.n 1964e <lv_img_set_src+0x3e>
LV_LOG_WARN("lv_img_set_src: unknown image type");
196d8: 4b59 ldr r3, [pc, #356] ; (19840 <lv_img_set_src+0x230>)
196da: 9300 str r3, [sp, #0]
196dc: 4b4c ldr r3, [pc, #304] ; (19810 <lv_img_set_src+0x200>)
196de: 22a6 movs r2, #166 ; 0xa6
196e0: 494c ldr r1, [pc, #304] ; (19814 <lv_img_set_src+0x204>)
196e2: 2002 movs r0, #2
196e4: 4d4c ldr r5, [pc, #304] ; (19818 <lv_img_set_src+0x208>)
196e6: 47a8 blx r5
if(ext->src_type == LV_IMG_SRC_SYMBOL || ext->src_type == LV_IMG_SRC_FILE) {
196e8: 7d23 ldrb r3, [r4, #20]
196ea: f003 0303 and.w r3, r3, #3
196ee: 3b01 subs r3, #1
196f0: b2db uxtb r3, r3
196f2: 2b01 cmp r3, #1
196f4: d802 bhi.n 196fc <lv_img_set_src+0xec>
lv_mem_free(ext->src);
196f6: 6820 ldr r0, [r4, #0]
196f8: 4b52 ldr r3, [pc, #328] ; (19844 <lv_img_set_src+0x234>)
196fa: 4798 blx r3
ext->src = NULL;
196fc: 2300 movs r3, #0
196fe: 6023 str r3, [r4, #0]
ext->src_type = LV_IMG_SRC_UNKNOWN;
19700: 7d23 ldrb r3, [r4, #20]
19702: f043 0303 orr.w r3, r3, #3
19706: 7523 strb r3, [r4, #20]
return;
19708: e7d9 b.n 196be <lv_img_set_src+0xae>
LV_LOG_INFO("lv_img_set_src: `LV_IMG_SRC_VARIABLE` type found");
1970a: 4b4f ldr r3, [pc, #316] ; (19848 <lv_img_set_src+0x238>)
1970c: 9300 str r3, [sp, #0]
1970e: 4b40 ldr r3, [pc, #256] ; (19810 <lv_img_set_src+0x200>)
19710: 22b4 movs r2, #180 ; 0xb4
19712: 4940 ldr r1, [pc, #256] ; (19814 <lv_img_set_src+0x204>)
19714: 2001 movs r0, #1
19716: f8df 8100 ldr.w r8, [pc, #256] ; 19818 <lv_img_set_src+0x208>
1971a: 47c0 blx r8
if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_SYMBOL) {
1971c: 7d23 ldrb r3, [r4, #20]
1971e: f003 0303 and.w r3, r3, #3
19722: 3b01 subs r3, #1
19724: b2db uxtb r3, r3
19726: 2b01 cmp r3, #1
19728: d802 bhi.n 19730 <lv_img_set_src+0x120>
lv_mem_free(ext->src);
1972a: 6820 ldr r0, [r4, #0]
1972c: 4b45 ldr r3, [pc, #276] ; (19844 <lv_img_set_src+0x234>)
1972e: 4798 blx r3
ext->src = src_img;
19730: 6026 str r6, [r4, #0]
19732: e79b b.n 1966c <lv_img_set_src+0x5c>
if(ext->src != src_img) {
19734: f8d4 8000 ldr.w r8, [r4]
19738: 4546 cmp r6, r8
1973a: d094 beq.n 19666 <lv_img_set_src+0x56>
if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_SYMBOL) {
1973c: 7d23 ldrb r3, [r4, #20]
1973e: f003 0303 and.w r3, r3, #3
19742: 3b01 subs r3, #1
19744: b2db uxtb r3, r3
const void * old_src = NULL;
19746: 2b02 cmp r3, #2
19748: bf28 it cs
1974a: f04f 0800 movcs.w r8, #0
char * new_str = lv_mem_alloc(strlen(src_img) + 1);
1974e: 4630 mov r0, r6
19750: 4b3e ldr r3, [pc, #248] ; (1984c <lv_img_set_src+0x23c>)
19752: 4798 blx r3
19754: 3001 adds r0, #1
19756: 4b3e ldr r3, [pc, #248] ; (19850 <lv_img_set_src+0x240>)
19758: 4798 blx r3
1975a: 4681 mov r9, r0
LV_ASSERT_MEM(new_str);
1975c: 4b2b ldr r3, [pc, #172] ; (1980c <lv_img_set_src+0x1fc>)
1975e: 4798 blx r3
19760: b960 cbnz r0, 1977c <lv_img_set_src+0x16c>
19762: 4b2b ldr r3, [pc, #172] ; (19810 <lv_img_set_src+0x200>)
19764: 9300 str r3, [sp, #0]
19766: 22c7 movs r2, #199 ; 0xc7
19768: 492a ldr r1, [pc, #168] ; (19814 <lv_img_set_src+0x204>)
1976a: 2003 movs r0, #3
1976c: 4c2a ldr r4, [pc, #168] ; (19818 <lv_img_set_src+0x208>)
1976e: 47a0 blx r4
19770: 464a mov r2, r9
19772: 2300 movs r3, #0
19774: 4837 ldr r0, [pc, #220] ; (19854 <lv_img_set_src+0x244>)
19776: 492a ldr r1, [pc, #168] ; (19820 <lv_img_set_src+0x210>)
19778: 4788 blx r1
1977a: e7fe b.n 1977a <lv_img_set_src+0x16a>
if(new_str == NULL) return;
1977c: f1b9 0f00 cmp.w r9, #0
19780: d09d beq.n 196be <lv_img_set_src+0xae>
strcpy(new_str, src_img);
19782: 4631 mov r1, r6
19784: 4648 mov r0, r9
19786: 4b34 ldr r3, [pc, #208] ; (19858 <lv_img_set_src+0x248>)
19788: 4798 blx r3
ext->src = new_str;
1978a: f8c4 9000 str.w r9, [r4]
if(old_src) lv_mem_free(old_src);
1978e: f1b8 0f00 cmp.w r8, #0
19792: f43f af68 beq.w 19666 <lv_img_set_src+0x56>
19796: 4640 mov r0, r8
19798: 4b2a ldr r3, [pc, #168] ; (19844 <lv_img_set_src+0x234>)
1979a: 4798 blx r3
1979c: e763 b.n 19666 <lv_img_set_src+0x56>
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar)
1979e: f248 028e movw r2, #32910 ; 0x808e
197a2: 2100 movs r1, #0
197a4: 4628 mov r0, r5
197a6: 4b2d ldr r3, [pc, #180] ; (1985c <lv_img_set_src+0x24c>)
197a8: 4798 blx r3
197aa: 4681 mov r9, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar)
197ac: f248 0280 movw r2, #32896 ; 0x8080
197b0: 2100 movs r1, #0
197b2: 4628 mov r0, r5
197b4: f8df 80b0 ldr.w r8, [pc, #176] ; 19868 <lv_img_set_src+0x258>
197b8: 47c0 blx r8
197ba: 4682 mov sl, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar)
197bc: f248 0281 movw r2, #32897 ; 0x8081
197c0: 2100 movs r1, #0
197c2: 4628 mov r0, r5
197c4: 47c0 blx r8
_lv_txt_get_size(&size, src_img, font, letter_space, line_space,
197c6: 2300 movs r3, #0
197c8: 9302 str r3, [sp, #8]
197ca: f647 4318 movw r3, #31768 ; 0x7c18
197ce: 9301 str r3, [sp, #4]
197d0: 9000 str r0, [sp, #0]
197d2: 4653 mov r3, sl
197d4: 464a mov r2, r9
197d6: 4631 mov r1, r6
197d8: a804 add r0, sp, #16
197da: 4e21 ldr r6, [pc, #132] ; (19860 <lv_img_set_src+0x250>)
197dc: 47b0 blx r6
header.w = size.x;
197de: 9b05 ldr r3, [sp, #20]
197e0: f8bd 2010 ldrh.w r2, [sp, #16]
197e4: f362 2394 bfi r3, r2, #10, #11
197e8: 9305 str r3, [sp, #20]
header.h = size.y;
197ea: 0c1b lsrs r3, r3, #16
197ec: f8bd 2012 ldrh.w r2, [sp, #18]
197f0: f362 134f bfi r3, r2, #5, #11
197f4: f8ad 3016 strh.w r3, [sp, #22]
197f8: e738 b.n 1966c <lv_img_set_src+0x5c>
lv_obj_set_size(img, ext->w, ext->h);
197fa: f9b4 200a ldrsh.w r2, [r4, #10]
197fe: f9b4 1008 ldrsh.w r1, [r4, #8]
19802: 4628 mov r0, r5
19804: 4b17 ldr r3, [pc, #92] ; (19864 <lv_img_set_src+0x254>)
19806: 4798 blx r3
19808: e74d b.n 196a6 <lv_img_set_src+0x96>
1980a: bf00 nop
1980c: 000022b1 .word 0x000022b1
19810: 00029620 .word 0x00029620
19814: 000296b8 .word 0x000296b8
19818: 0001225d .word 0x0001225d
1981c: 0002483c .word 0x0002483c
19820: 000022b9 .word 0x000022b9
19824: 00009969 .word 0x00009969
19828: 00004d9d .word 0x00004d9d
1982c: 0000fded .word 0x0000fded
19830: 000195bd .word 0x000195bd
19834: 00002c2d .word 0x00002c2d
19838: 00003321 .word 0x00003321
1983c: 000296e4 .word 0x000296e4
19840: 00029704 .word 0x00029704
19844: 000124c5 .word 0x000124c5
19848: 00029728 .word 0x00029728
1984c: 0001b51f .word 0x0001b51f
19850: 000123dd .word 0x000123dd
19854: 00023fd8 .word 0x00023fd8
19858: 0001b50f .word 0x0001b50f
1985c: 000046a1 .word 0x000046a1
19860: 0001407d .word 0x0001407d
19864: 000042a1 .word 0x000042a1
19868: 000044d5 .word 0x000044d5
0001986c <lv_img_create>:
{
1986c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
19870: b082 sub sp, #8
19872: 4680 mov r8, r0
19874: 460f mov r7, r1
lv_obj_t * img = lv_obj_create(par, copy);
19876: 4b58 ldr r3, [pc, #352] ; (199d8 <lv_img_create+0x16c>)
19878: 4798 blx r3
1987a: 4605 mov r5, r0
LV_ASSERT_MEM(img);
1987c: 4b57 ldr r3, [pc, #348] ; (199dc <lv_img_create+0x170>)
1987e: 4798 blx r3
19880: b1d0 cbz r0, 198b8 <lv_img_create+0x4c>
if(img == NULL) return NULL;
19882: 2d00 cmp r5, #0
19884: f000 8086 beq.w 19994 <lv_img_create+0x128>
if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(img);
19888: 4b55 ldr r3, [pc, #340] ; (199e0 <lv_img_create+0x174>)
1988a: 681b ldr r3, [r3, #0]
1988c: b30b cbz r3, 198d2 <lv_img_create+0x66>
lv_img_ext_t * ext = lv_obj_allocate_ext_attr(img, sizeof(lv_img_ext_t));
1988e: 2118 movs r1, #24
19890: 4628 mov r0, r5
19892: 4b54 ldr r3, [pc, #336] ; (199e4 <lv_img_create+0x178>)
19894: 4798 blx r3
19896: 4604 mov r4, r0
LV_ASSERT_MEM(ext);
19898: 4b50 ldr r3, [pc, #320] ; (199dc <lv_img_create+0x170>)
1989a: 4798 blx r3
1989c: b9f8 cbnz r0, 198de <lv_img_create+0x72>
1989e: 4b52 ldr r3, [pc, #328] ; (199e8 <lv_img_create+0x17c>)
198a0: 9300 str r3, [sp, #0]
198a2: 2249 movs r2, #73 ; 0x49
198a4: 4951 ldr r1, [pc, #324] ; (199ec <lv_img_create+0x180>)
198a6: 2003 movs r0, #3
198a8: 4d51 ldr r5, [pc, #324] ; (199f0 <lv_img_create+0x184>)
198aa: 47a8 blx r5
198ac: 4622 mov r2, r4
198ae: 2300 movs r3, #0
198b0: 4850 ldr r0, [pc, #320] ; (199f4 <lv_img_create+0x188>)
198b2: 4951 ldr r1, [pc, #324] ; (199f8 <lv_img_create+0x18c>)
198b4: 4788 blx r1
198b6: e7fe b.n 198b6 <lv_img_create+0x4a>
LV_ASSERT_MEM(img);
198b8: 4b4b ldr r3, [pc, #300] ; (199e8 <lv_img_create+0x17c>)
198ba: 9300 str r3, [sp, #0]
198bc: 2242 movs r2, #66 ; 0x42
198be: 494b ldr r1, [pc, #300] ; (199ec <lv_img_create+0x180>)
198c0: 2003 movs r0, #3
198c2: 4c4b ldr r4, [pc, #300] ; (199f0 <lv_img_create+0x184>)
198c4: 47a0 blx r4
198c6: 462a mov r2, r5
198c8: 2300 movs r3, #0
198ca: 484a ldr r0, [pc, #296] ; (199f4 <lv_img_create+0x188>)
198cc: 494a ldr r1, [pc, #296] ; (199f8 <lv_img_create+0x18c>)
198ce: 4788 blx r1
198d0: e7fe b.n 198d0 <lv_img_create+0x64>
if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(img);
198d2: 4628 mov r0, r5
198d4: 4b49 ldr r3, [pc, #292] ; (199fc <lv_img_create+0x190>)
198d6: 4798 blx r3
198d8: 4b41 ldr r3, [pc, #260] ; (199e0 <lv_img_create+0x174>)
198da: 6018 str r0, [r3, #0]
198dc: e7d7 b.n 1988e <lv_img_create+0x22>
if(ext == NULL) {
198de: 2c00 cmp r4, #0
198e0: d05c beq.n 1999c <lv_img_create+0x130>
ext->src = NULL;
198e2: 2600 movs r6, #0
198e4: 6026 str r6, [r4, #0]
ext->src_type = LV_IMG_SRC_UNKNOWN;
198e6: 7d23 ldrb r3, [r4, #20]
ext->cf = LV_IMG_CF_UNKNOWN;
198e8: f043 0303 orr.w r3, r3, #3
198ec: f366 03c7 bfi r3, r6, #3, #5
198f0: 7523 strb r3, [r4, #20]
ext->w = lv_obj_get_width(img);
198f2: 4628 mov r0, r5
198f4: 4b42 ldr r3, [pc, #264] ; (19a00 <lv_img_create+0x194>)
198f6: 4798 blx r3
198f8: 8120 strh r0, [r4, #8]
ext->h = lv_obj_get_height(img);
198fa: 4628 mov r0, r5
198fc: 4b41 ldr r3, [pc, #260] ; (19a04 <lv_img_create+0x198>)
198fe: 4798 blx r3
19900: 8160 strh r0, [r4, #10]
ext->angle = 0;
19902: 81a6 strh r6, [r4, #12]
ext->zoom = LV_IMG_ZOOM_NONE;
19904: f44f 7380 mov.w r3, #256 ; 0x100
19908: 8263 strh r3, [r4, #18]
ext->antialias = LV_ANTIALIAS ? 1 : 0;
1990a: 7d63 ldrb r3, [r4, #21]
1990c: f043 0301 orr.w r3, r3, #1
19910: 7563 strb r3, [r4, #21]
ext->auto_size = 1;
19912: 7d23 ldrb r3, [r4, #20]
19914: f043 0304 orr.w r3, r3, #4
19918: 7523 strb r3, [r4, #20]
ext->offset.x = 0;
1991a: 80a6 strh r6, [r4, #4]
ext->offset.y = 0;
1991c: 80e6 strh r6, [r4, #6]
ext->pivot.x = 0;
1991e: 81e6 strh r6, [r4, #14]
ext->pivot.y = 0;
19920: 8226 strh r6, [r4, #16]
lv_obj_set_signal_cb(img, lv_img_signal);
19922: 4939 ldr r1, [pc, #228] ; (19a08 <lv_img_create+0x19c>)
19924: 4628 mov r0, r5
19926: 4b39 ldr r3, [pc, #228] ; (19a0c <lv_img_create+0x1a0>)
19928: 4798 blx r3
lv_obj_set_design_cb(img, lv_img_design);
1992a: 4939 ldr r1, [pc, #228] ; (19a10 <lv_img_create+0x1a4>)
1992c: 4628 mov r0, r5
1992e: 4b39 ldr r3, [pc, #228] ; (19a14 <lv_img_create+0x1a8>)
19930: 4798 blx r3
if(copy == NULL) {
19932: 2f00 cmp r7, #0
19934: d037 beq.n 199a6 <lv_img_create+0x13a>
lv_img_ext_t * copy_ext = lv_obj_get_ext_attr(copy);
19936: 4638 mov r0, r7
19938: 4b37 ldr r3, [pc, #220] ; (19a18 <lv_img_create+0x1ac>)
1993a: 4798 blx r3
ext->auto_size = copy_ext->auto_size;
1993c: 7d03 ldrb r3, [r0, #20]
1993e: f3c3 0380 ubfx r3, r3, #2, #1
19942: 7d22 ldrb r2, [r4, #20]
19944: f363 0282 bfi r2, r3, #2, #1
19948: 7522 strb r2, [r4, #20]
ext->zoom = copy_ext->zoom;
1994a: 8a43 ldrh r3, [r0, #18]
1994c: 8263 strh r3, [r4, #18]
ext->angle = copy_ext->angle;
1994e: 8983 ldrh r3, [r0, #12]
19950: 81a3 strh r3, [r4, #12]
ext->antialias = copy_ext->antialias;
19952: 7d42 ldrb r2, [r0, #21]
19954: 7d63 ldrb r3, [r4, #21]
19956: f362 0300 bfi r3, r2, #0, #1
1995a: 7563 strb r3, [r4, #21]
ext->offset.x = copy_ext->offset.x;
1995c: f9b0 3004 ldrsh.w r3, [r0, #4]
19960: 80a3 strh r3, [r4, #4]
ext->offset.y = copy_ext->offset.y;
19962: f9b0 3006 ldrsh.w r3, [r0, #6]
19966: 80e3 strh r3, [r4, #6]
ext->pivot.x = copy_ext->pivot.x;
19968: f9b0 300e ldrsh.w r3, [r0, #14]
1996c: 81e3 strh r3, [r4, #14]
ext->pivot.y = copy_ext->pivot.y;
1996e: f9b0 3010 ldrsh.w r3, [r0, #16]
19972: 8223 strh r3, [r4, #16]
lv_img_set_src(img, copy_ext->src);
19974: 6801 ldr r1, [r0, #0]
19976: 4628 mov r0, r5
19978: 4b28 ldr r3, [pc, #160] ; (19a1c <lv_img_create+0x1b0>)
1997a: 4798 blx r3
lv_obj_refresh_style(img, LV_STYLE_PROP_ALL);
1997c: 21ff movs r1, #255 ; 0xff
1997e: 4628 mov r0, r5
19980: 4b27 ldr r3, [pc, #156] ; (19a20 <lv_img_create+0x1b4>)
19982: 4798 blx r3
LV_LOG_INFO("image created");
19984: 4b27 ldr r3, [pc, #156] ; (19a24 <lv_img_create+0x1b8>)
19986: 9300 str r3, [sp, #0]
19988: 4b17 ldr r3, [pc, #92] ; (199e8 <lv_img_create+0x17c>)
1998a: 227f movs r2, #127 ; 0x7f
1998c: 4917 ldr r1, [pc, #92] ; (199ec <lv_img_create+0x180>)
1998e: 2001 movs r0, #1
19990: 4c17 ldr r4, [pc, #92] ; (199f0 <lv_img_create+0x184>)
19992: 47a0 blx r4
}
19994: 4628 mov r0, r5
19996: b002 add sp, #8
19998: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
lv_obj_del(img);
1999c: 4628 mov r0, r5
1999e: 4b22 ldr r3, [pc, #136] ; (19a28 <lv_img_create+0x1bc>)
199a0: 4798 blx r3
return NULL;
199a2: 2500 movs r5, #0
199a4: e7f6 b.n 19994 <lv_img_create+0x128>
lv_theme_apply(img, LV_THEME_IMAGE);
199a6: 210f movs r1, #15
199a8: 4628 mov r0, r5
199aa: 4b20 ldr r3, [pc, #128] ; (19a2c <lv_img_create+0x1c0>)
199ac: 4798 blx r3
lv_obj_set_click(img, false);
199ae: 4631 mov r1, r6
199b0: 4628 mov r0, r5
199b2: 4b1f ldr r3, [pc, #124] ; (19a30 <lv_img_create+0x1c4>)
199b4: 4798 blx r3
lv_obj_set_adv_hittest(img, true); /*Images have fast hit-testing*/
199b6: 2101 movs r1, #1
199b8: 4628 mov r0, r5
199ba: 4b1e ldr r3, [pc, #120] ; (19a34 <lv_img_create+0x1c8>)
199bc: 4798 blx r3
if(par != NULL) {
199be: f1b8 0f00 cmp.w r8, #0
199c2: d004 beq.n 199ce <lv_img_create+0x162>
ext->auto_size = 1;
199c4: 7d23 ldrb r3, [r4, #20]
199c6: f043 0304 orr.w r3, r3, #4
199ca: 7523 strb r3, [r4, #20]
199cc: e7da b.n 19984 <lv_img_create+0x118>
ext->auto_size = 0;
199ce: 7d23 ldrb r3, [r4, #20]
199d0: f36f 0382 bfc r3, #2, #1
199d4: 7523 strb r3, [r4, #20]
199d6: e7d5 b.n 19984 <lv_img_create+0x118>
199d8: 00003e25 .word 0x00003e25
199dc: 000022b1 .word 0x000022b1
199e0: 20006bfc .word 0x20006bfc
199e4: 00002bd1 .word 0x00002bd1
199e8: 00029630 .word 0x00029630
199ec: 000296b8 .word 0x000296b8
199f0: 0001225d .word 0x0001225d
199f4: 00023fd8 .word 0x00023fd8
199f8: 000022b9 .word 0x000022b9
199fc: 00004d55 .word 0x00004d55
19a00: 00002f5d .word 0x00002f5d
19a04: 00002fad .word 0x00002fad
19a08: 00019a39 .word 0x00019a39
19a0c: 00002b2d .word 0x00002b2d
19a10: 0001911d .word 0x0001911d
19a14: 00002b89 .word 0x00002b89
19a18: 00004d9d .word 0x00004d9d
19a1c: 00019611 .word 0x00019611
19a20: 00003a99 .word 0x00003a99
19a24: 0002975c .word 0x0002975c
19a28: 00004f65 .word 0x00004f65
19a2c: 000141e9 .word 0x000141e9
19a30: 000029a1 .word 0x000029a1
19a34: 0000294d .word 0x0000294d
00019a38 <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)
{
19a38: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
19a3c: b085 sub sp, #20
19a3e: 4607 mov r7, r0
19a40: 4615 mov r5, r2
lv_res_t res;
if(sign == LV_SIGNAL_GET_STYLE) {
19a42: 2908 cmp r1, #8
19a44: d021 beq.n 19a8a <lv_img_signal+0x52>
19a46: 460c mov r4, r1
if(info->result != NULL) return LV_RES_OK;
else return ancestor_signal(img, sign, param);
}
/* Include the ancient signal function */
res = ancestor_signal(img, sign, param);
19a48: 4b88 ldr r3, [pc, #544] ; (19c6c <lv_img_signal+0x234>)
19a4a: 681b ldr r3, [r3, #0]
19a4c: 4798 blx r3
19a4e: 4606 mov r6, r0
if(res != LV_RES_OK) return res;
19a50: 2801 cmp r0, #1
19a52: d121 bne.n 19a98 <lv_img_signal+0x60>
if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME);
19a54: 2c07 cmp r4, #7
19a56: d02d beq.n 19ab4 <lv_img_signal+0x7c>
lv_img_ext_t * ext = lv_obj_get_ext_attr(img);
19a58: 4638 mov r0, r7
19a5a: 4b85 ldr r3, [pc, #532] ; (19c70 <lv_img_signal+0x238>)
19a5c: 4798 blx r3
19a5e: 4680 mov r8, r0
if(sign == LV_SIGNAL_CLEANUP) {
19a60: bb74 cbnz r4, 19ac0 <lv_img_signal+0x88>
if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_SYMBOL) {
19a62: 7d03 ldrb r3, [r0, #20]
19a64: f003 0303 and.w r3, r3, #3
19a68: 3b01 subs r3, #1
19a6a: b2db uxtb r3, r3
19a6c: 2b01 cmp r3, #1
19a6e: d813 bhi.n 19a98 <lv_img_signal+0x60>
lv_mem_free(ext->src);
19a70: 6800 ldr r0, [r0, #0]
19a72: 4b80 ldr r3, [pc, #512] ; (19c74 <lv_img_signal+0x23c>)
19a74: 4798 blx r3
ext->src = NULL;
19a76: 2300 movs r3, #0
19a78: f8c8 3000 str.w r3, [r8]
ext->src_type = LV_IMG_SRC_UNKNOWN;
19a7c: f898 3014 ldrb.w r3, [r8, #20]
19a80: f043 0303 orr.w r3, r3, #3
19a84: f888 3014 strb.w r3, [r8, #20]
19a88: e006 b.n 19a98 <lv_img_signal+0x60>
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) {
19a8a: 7813 ldrb r3, [r2, #0]
19a8c: b943 cbnz r3, 19aa0 <lv_img_signal+0x68>
case LV_IMG_PART_MAIN:
style_dsc_p = &img->style_list;
19a8e: f100 0328 add.w r3, r0, #40 ; 0x28
info->result = lv_img_get_style(img, info->part);
19a92: 606b str r3, [r5, #4]
if(info->result != NULL) return LV_RES_OK;
19a94: 2601 movs r6, #1
19a96: b12b cbz r3, 19aa4 <lv_img_signal+0x6c>
}
19a98: 4630 mov r0, r6
19a9a: b005 add sp, #20
19a9c: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
break;
default:
style_dsc_p = NULL;
19aa0: 2300 movs r3, #0
19aa2: e7f6 b.n 19a92 <lv_img_signal+0x5a>
else return ancestor_signal(img, sign, param);
19aa4: 4b71 ldr r3, [pc, #452] ; (19c6c <lv_img_signal+0x234>)
19aa6: 681b ldr r3, [r3, #0]
19aa8: 462a mov r2, r5
19aaa: 2108 movs r1, #8
19aac: 4638 mov r0, r7
19aae: 4798 blx r3
19ab0: 4606 mov r6, r0
19ab2: e7f1 b.n 19a98 <lv_img_signal+0x60>
if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME);
19ab4: 4970 ldr r1, [pc, #448] ; (19c78 <lv_img_signal+0x240>)
19ab6: 4628 mov r0, r5
19ab8: 4b70 ldr r3, [pc, #448] ; (19c7c <lv_img_signal+0x244>)
19aba: 4798 blx r3
19abc: 4606 mov r6, r0
19abe: e7eb b.n 19a98 <lv_img_signal+0x60>
else if(sign == LV_SIGNAL_STYLE_CHG) {
19ac0: 2c04 cmp r4, #4
19ac2: d053 beq.n 19b6c <lv_img_signal+0x134>
else if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) {
19ac4: 2c06 cmp r4, #6
19ac6: d05b beq.n 19b80 <lv_img_signal+0x148>
else if(sign == LV_SIGNAL_HIT_TEST) {
19ac8: 2c0a cmp r4, #10
19aca: d1e5 bne.n 19a98 <lv_img_signal+0x60>
if(ext->zoom != 256 && ext->angle == 0) {
19acc: 8a43 ldrh r3, [r0, #18]
19ace: f5b3 7f80 cmp.w r3, #256 ; 0x100
19ad2: f000 80c5 beq.w 19c60 <lv_img_signal+0x228>
19ad6: 8982 ldrh r2, [r0, #12]
19ad8: 2a00 cmp r2, #0
19ada: f040 80c1 bne.w 19c60 <lv_img_signal+0x228>
19ade: 8aba ldrh r2, [r7, #20]
19ae0: 3201 adds r2, #1
19ae2: 8a39 ldrh r1, [r7, #16]
19ae4: 1a52 subs r2, r2, r1
lv_coord_t scaled_width = (origin_width * ext->zoom + 255) / 256;
19ae6: b212 sxth r2, r2
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
19ae8: 8af9 ldrh r1, [r7, #22]
19aea: 3101 adds r1, #1
19aec: 8a78 ldrh r0, [r7, #18]
19aee: 1a09 subs r1, r1, r0
lv_coord_t scaled_height = (origin_height * ext->zoom + 255) / 256;
19af0: b209 sxth r1, r1
lv_coord_t scaled_width = (origin_width * ext->zoom + 255) / 256;
19af2: fb03 f002 mul.w r0, r3, r2
19af6: 30ff adds r0, #255 ; 0xff
19af8: bf48 it mi
19afa: 30ff addmi r0, #255 ; 0xff
lv_coord_t width_offset = (origin_width - scaled_width) / 2;
19afc: f340 200f sbfx r0, r0, #8, #16
19b00: 1a12 subs r2, r2, r0
19b02: eb02 72d2 add.w r2, r2, r2, lsr #31
19b06: 1054 asrs r4, r2, #1
lv_coord_t scaled_height = (origin_height * ext->zoom + 255) / 256;
19b08: fb01 f303 mul.w r3, r1, r3
19b0c: 33ff adds r3, #255 ; 0xff
19b0e: bf48 it mi
19b10: 33ff addmi r3, #255 ; 0xff
lv_coord_t height_offset = (origin_height - scaled_height) / 2;
19b12: f343 230f sbfx r3, r3, #8, #16
19b16: 1acb subs r3, r1, r3
19b18: eb03 73d3 add.w r3, r3, r3, lsr #31
19b1c: 1058 asrs r0, r3, #1
19b1e: f107 030f add.w r3, r7, #15
19b22: 3717 adds r7, #23
* @param src pointer to the source buffer
* @param len number of byte to 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;
19b24: aa02 add r2, sp, #8
const uint8_t * s8 = (const uint8_t *)src;
while(len) {
*d8 = *s8;
19b26: f813 1f01 ldrb.w r1, [r3, #1]!
19b2a: f802 1b01 strb.w r1, [r2], #1
while(len) {
19b2e: 42bb cmp r3, r7
19b30: d1f9 bne.n 19b26 <lv_img_signal+0xee>
coords.x1 += width_offset;
19b32: b2a2 uxth r2, r4
19b34: f8bd 3008 ldrh.w r3, [sp, #8]
19b38: 4413 add r3, r2
19b3a: f8ad 3008 strh.w r3, [sp, #8]
coords.x2 -= width_offset;
19b3e: f8bd 300c ldrh.w r3, [sp, #12]
19b42: 1a9a subs r2, r3, r2
19b44: f8ad 200c strh.w r2, [sp, #12]
coords.y1 += height_offset;
19b48: b283 uxth r3, r0
19b4a: f8bd 200a ldrh.w r2, [sp, #10]
19b4e: 441a add r2, r3
19b50: f8ad 200a strh.w r2, [sp, #10]
coords.y2 -= height_offset;
19b54: f8bd 200e ldrh.w r2, [sp, #14]
19b58: 1ad3 subs r3, r2, r3
19b5a: f8ad 300e strh.w r3, [sp, #14]
info->result = _lv_area_is_point_on(&coords, info->point, 0);
19b5e: 2200 movs r2, #0
19b60: 6829 ldr r1, [r5, #0]
19b62: a802 add r0, sp, #8
19b64: 4b46 ldr r3, [pc, #280] ; (19c80 <lv_img_signal+0x248>)
19b66: 4798 blx r3
19b68: 7128 strb r0, [r5, #4]
if(ext->zoom != 256 && ext->angle == 0) {
19b6a: e795 b.n 19a98 <lv_img_signal+0x60>
if(ext->src_type == LV_IMG_SRC_SYMBOL) {
19b6c: 7d03 ldrb r3, [r0, #20]
19b6e: f003 0303 and.w r3, r3, #3
19b72: 2b02 cmp r3, #2
19b74: d190 bne.n 19a98 <lv_img_signal+0x60>
lv_img_set_src(img, ext->src);
19b76: 6801 ldr r1, [r0, #0]
19b78: 4638 mov r0, r7
19b7a: 4b42 ldr r3, [pc, #264] ; (19c84 <lv_img_signal+0x24c>)
19b7c: 4798 blx r3
19b7e: e78b b.n 19a98 <lv_img_signal+0x60>
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ZOOM, transform_zoom, lv_style_int_t, _int, scalar)
19b80: 2207 movs r2, #7
19b82: 2100 movs r1, #0
19b84: 4638 mov r0, r7
19b86: 4d40 ldr r5, [pc, #256] ; (19c88 <lv_img_signal+0x250>)
19b88: 47a8 blx r5
transf_zoom = (transf_zoom * ext->zoom) >> 8;
19b8a: f8b8 3012 ldrh.w r3, [r8, #18]
19b8e: fb00 f303 mul.w r3, r0, r3
19b92: 121c asrs r4, r3, #8
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ANGLE, transform_angle, lv_style_int_t, _int, scalar)
19b94: 2206 movs r2, #6
19b96: 2100 movs r1, #0
19b98: 4638 mov r0, r7
19b9a: 47a8 blx r5
transf_angle += ext->angle;
19b9c: f8b8 300c ldrh.w r3, [r8, #12]
19ba0: 4403 add r3, r0
19ba2: b21b sxth r3, r3
if(transf_angle || transf_zoom != LV_IMG_ZOOM_NONE) {
19ba4: b91b cbnz r3, 19bae <lv_img_signal+0x176>
19ba6: b222 sxth r2, r4
19ba8: f5b2 7f80 cmp.w r2, #256 ; 0x100
19bac: d031 beq.n 19c12 <lv_img_signal+0x1da>
_lv_img_buf_get_transformed_area(&a, ext->w, ext->h, transf_angle, transf_zoom, &ext->pivot);
19bae: f9b8 200a ldrsh.w r2, [r8, #10]
19bb2: f9b8 1008 ldrsh.w r1, [r8, #8]
19bb6: f108 000e add.w r0, r8, #14
19bba: 9001 str r0, [sp, #4]
19bbc: b2a4 uxth r4, r4
19bbe: 9400 str r4, [sp, #0]
19bc0: a802 add r0, sp, #8
19bc2: 4c32 ldr r4, [pc, #200] ; (19c8c <lv_img_signal+0x254>)
19bc4: 47a0 blx r4
img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori - a.x1);
19bc6: f9b7 1032 ldrsh.w r1, [r7, #50] ; 0x32
19bca: f9bd 3008 ldrsh.w r3, [sp, #8]
19bce: 1acb subs r3, r1, r3
19bd0: 428b cmp r3, r1
19bd2: bfb8 it lt
19bd4: 460b movlt r3, r1
img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori - a.y1);
19bd6: b21b sxth r3, r3
19bd8: f9bd 200a ldrsh.w r2, [sp, #10]
19bdc: 1a8a subs r2, r1, r2
19bde: 4293 cmp r3, r2
19be0: bfb8 it lt
19be2: 4613 movlt r3, r2
19be4: b21b sxth r3, r3
19be6: 867b strh r3, [r7, #50] ; 0x32
img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori + a.x2 - ext->w);
19be8: f9bd 200c ldrsh.w r2, [sp, #12]
19bec: 440a add r2, r1
19bee: f9b8 0008 ldrsh.w r0, [r8, #8]
19bf2: 1a12 subs r2, r2, r0
19bf4: 4293 cmp r3, r2
19bf6: bfb8 it lt
19bf8: 4613 movlt r3, r2
19bfa: b21b sxth r3, r3
19bfc: 867b strh r3, [r7, #50] ; 0x32
img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori + a.y2 - ext->h);
19bfe: f9bd 200e ldrsh.w r2, [sp, #14]
19c02: 440a add r2, r1
19c04: f9b8 100a ldrsh.w r1, [r8, #10]
19c08: 1a52 subs r2, r2, r1
19c0a: 4293 cmp r3, r2
19c0c: bfb8 it lt
19c0e: 4613 movlt r3, r2
19c10: 867b strh r3, [r7, #50] ; 0x32
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
19c12: 2212 movs r2, #18
19c14: 2100 movs r1, #0
19c16: 4638 mov r0, r7
19c18: f8df 806c ldr.w r8, [pc, #108] ; 19c88 <lv_img_signal+0x250>
19c1c: 47c0 blx r8
19c1e: 4681 mov r9, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
19c20: 2213 movs r2, #19
19c22: 2100 movs r1, #0
19c24: 4638 mov r0, r7
19c26: 47c0 blx r8
19c28: 4604 mov r4, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
19c2a: 2210 movs r2, #16
19c2c: 2100 movs r1, #0
19c2e: 4638 mov r0, r7
19c30: 47c0 blx r8
19c32: 4605 mov r5, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
19c34: 2211 movs r2, #17
19c36: 2100 movs r1, #0
19c38: 4638 mov r0, r7
19c3a: 47c0 blx r8
img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, right);
19c3c: 454c cmp r4, r9
19c3e: bfb8 it lt
19c40: 464c movlt r4, r9
19c42: f9b7 3032 ldrsh.w r3, [r7, #50] ; 0x32
19c46: b222 sxth r2, r4
img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, top);
19c48: 4293 cmp r3, r2
19c4a: bfb8 it lt
19c4c: 4613 movlt r3, r2
19c4e: 42ab cmp r3, r5
19c50: bfb8 it lt
19c52: 462b movlt r3, r5
img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, bottom);
19c54: b21b sxth r3, r3
19c56: 4298 cmp r0, r3
19c58: bfb8 it lt
19c5a: 4618 movlt r0, r3
19c5c: 8678 strh r0, [r7, #50] ; 0x32
19c5e: e71b b.n 19a98 <lv_img_signal+0x60>
info->result = lv_obj_is_point_on_coords(img, info->point);
19c60: 6829 ldr r1, [r5, #0]
19c62: 4638 mov r0, r7
19c64: 4b0a ldr r3, [pc, #40] ; (19c90 <lv_img_signal+0x258>)
19c66: 4798 blx r3
19c68: 7128 strb r0, [r5, #4]
19c6a: e715 b.n 19a98 <lv_img_signal+0x60>
19c6c: 20006bfc .word 0x20006bfc
19c70: 00004d9d .word 0x00004d9d
19c74: 000124c5 .word 0x000124c5
19c78: 0002976c .word 0x0002976c
19c7c: 00005095 .word 0x00005095
19c80: 000115b9 .word 0x000115b9
19c84: 00019611 .word 0x00019611
19c88: 000044d5 .word 0x000044d5
19c8c: 0000ec65 .word 0x0000ec65
19c90: 00005055 .word 0x00005055
00019c94 <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)
{
19c94: b510 push {r4, lr}
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
19c96: 4b09 ldr r3, [pc, #36] ; (19cbc <lv_label_dot_tmp_free+0x28>)
19c98: 4798 blx r3
19c9a: 4604 mov r4, r0
if(ext->dot_tmp_alloc && ext->dot.tmp_ptr) {
19c9c: 7c43 ldrb r3, [r0, #17]
19c9e: f013 0f01 tst.w r3, #1
19ca2: d003 beq.n 19cac <lv_label_dot_tmp_free+0x18>
19ca4: 6840 ldr r0, [r0, #4]
19ca6: b108 cbz r0, 19cac <lv_label_dot_tmp_free+0x18>
lv_mem_free(ext->dot.tmp_ptr);
19ca8: 4b05 ldr r3, [pc, #20] ; (19cc0 <lv_label_dot_tmp_free+0x2c>)
19caa: 4798 blx r3
}
ext->dot_tmp_alloc = false;
19cac: 7c63 ldrb r3, [r4, #17]
19cae: f36f 0300 bfc r3, #0, #1
19cb2: 7463 strb r3, [r4, #17]
ext->dot.tmp_ptr = NULL;
19cb4: 2300 movs r3, #0
19cb6: 6063 str r3, [r4, #4]
19cb8: bd10 pop {r4, pc}
19cba: bf00 nop
19cbc: 00004d9d .word 0x00004d9d
19cc0: 000124c5 .word 0x000124c5
00019cc4 <lv_label_revert_dots>:
{
19cc4: b5f8 push {r3, r4, r5, r6, r7, lr}
19cc6: 4607 mov r7, r0
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
19cc8: 4b1e ldr r3, [pc, #120] ; (19d44 <lv_label_revert_dots+0x80>)
19cca: 4798 blx r3
if(ext->long_mode != LV_LABEL_LONG_DOT) return;
19ccc: 7c03 ldrb r3, [r0, #16]
19cce: f003 0307 and.w r3, r3, #7
19cd2: 2b02 cmp r3, #2
19cd4: d000 beq.n 19cd8 <lv_label_revert_dots+0x14>
19cd6: bdf8 pop {r3, r4, r5, r6, r7, pc}
19cd8: 4604 mov r4, r0
if(ext->dot_end == LV_LABEL_DOT_END_INV) return;
19cda: 8901 ldrh r1, [r0, #8]
19cdc: f64f 73ff movw r3, #65535 ; 0xffff
19ce0: 4299 cmp r1, r3
19ce2: d0f8 beq.n 19cd6 <lv_label_revert_dots+0x12>
uint32_t byte_i = _lv_txt_encoded_get_byte_id(ext->text, letter_i);
19ce4: 4b18 ldr r3, [pc, #96] ; (19d48 <lv_label_revert_dots+0x84>)
19ce6: 681b ldr r3, [r3, #0]
19ce8: 3903 subs r1, #3
19cea: 6800 ldr r0, [r0, #0]
19cec: 4798 blx r3
19cee: 4606 mov r6, r0
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
19cf0: 4638 mov r0, r7
19cf2: 4b14 ldr r3, [pc, #80] ; (19d44 <lv_label_revert_dots+0x80>)
19cf4: 4798 blx r3
if(ext->dot_tmp_alloc) {
19cf6: 7c43 ldrb r3, [r0, #17]
19cf8: f013 0f01 tst.w r3, #1
return ext->dot.tmp_ptr;
19cfc: bf14 ite ne
19cfe: 6840 ldrne r0, [r0, #4]
return ext->dot.tmp;
19d00: 3004 addeq r0, #4
while(ext->text[byte_i + i] != '\0') {
19d02: 6823 ldr r3, [r4, #0]
19d04: eb03 0e06 add.w lr, r3, r6
19d08: 5d9b ldrb r3, [r3, r6]
19d0a: b1c3 cbz r3, 19d3e <lv_label_revert_dots+0x7a>
19d0c: 2500 movs r5, #0
19d0e: 462b mov r3, r5
ext->text[byte_i + i] = dot_tmp[i];
19d10: 5d42 ldrb r2, [r0, r5]
19d12: f88e 2000 strb.w r2, [lr]
i++;
19d16: 3301 adds r3, #1
19d18: b2db uxtb r3, r3
while(ext->text[byte_i + i] != '\0') {
19d1a: 461d mov r5, r3
19d1c: 18f2 adds r2, r6, r3
19d1e: 6821 ldr r1, [r4, #0]
19d20: eb01 0e02 add.w lr, r1, r2
19d24: 5c8a ldrb r2, [r1, r2]
19d26: 2a00 cmp r2, #0
19d28: d1f2 bne.n 19d10 <lv_label_revert_dots+0x4c>
ext->text[byte_i + i] = dot_tmp[i];
19d2a: 5d43 ldrb r3, [r0, r5]
19d2c: f88e 3000 strb.w r3, [lr]
lv_label_dot_tmp_free(label);
19d30: 4638 mov r0, r7
19d32: 4b06 ldr r3, [pc, #24] ; (19d4c <lv_label_revert_dots+0x88>)
19d34: 4798 blx r3
ext->dot_end = LV_LABEL_DOT_END_INV;
19d36: f64f 73ff movw r3, #65535 ; 0xffff
19d3a: 8123 strh r3, [r4, #8]
19d3c: e7cb b.n 19cd6 <lv_label_revert_dots+0x12>
while(ext->text[byte_i + i] != '\0') {
19d3e: 2500 movs r5, #0
19d40: e7f3 b.n 19d2a <lv_label_revert_dots+0x66>
19d42: bf00 nop
19d44: 00004d9d .word 0x00004d9d
19d48: 2000005c .word 0x2000005c
19d4c: 00019c95 .word 0x00019c95
00019d50 <lv_label_set_offset_y>:
{
19d50: b538 push {r3, r4, r5, lr}
19d52: 4604 mov r4, r0
19d54: 460d mov r5, r1
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
19d56: 4b03 ldr r3, [pc, #12] ; (19d64 <lv_label_set_offset_y+0x14>)
19d58: 4798 blx r3
ext->offset.y = y;
19d5a: 81c5 strh r5, [r0, #14]
lv_obj_invalidate(label);
19d5c: 4620 mov r0, r4
19d5e: 4b02 ldr r3, [pc, #8] ; (19d68 <lv_label_set_offset_y+0x18>)
19d60: 4798 blx r3
19d62: bd38 pop {r3, r4, r5, pc}
19d64: 00004d9d .word 0x00004d9d
19d68: 00003321 .word 0x00003321
00019d6c <lv_label_set_offset_x>:
{
19d6c: b538 push {r3, r4, r5, lr}
19d6e: 4604 mov r4, r0
19d70: 460d mov r5, r1
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
19d72: 4b03 ldr r3, [pc, #12] ; (19d80 <lv_label_set_offset_x+0x14>)
19d74: 4798 blx r3
ext->offset.x = x;
19d76: 8185 strh r5, [r0, #12]
lv_obj_invalidate(label);
19d78: 4620 mov r0, r4
19d7a: 4b02 ldr r3, [pc, #8] ; (19d84 <lv_label_set_offset_x+0x18>)
19d7c: 4798 blx r3
19d7e: bd38 pop {r3, r4, r5, pc}
19d80: 00004d9d .word 0x00004d9d
19d84: 00003321 .word 0x00003321
00019d88 <get_txt_coords>:
}
static void get_txt_coords(const lv_obj_t * label, lv_area_t * area)
{
19d88: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
19d8c: 4606 mov r6, r0
19d8e: 460c mov r4, r1
lv_obj_get_coords(label, area);
19d90: 4b12 ldr r3, [pc, #72] ; (19ddc <get_txt_coords+0x54>)
19d92: 4798 blx r3
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
19d94: 2212 movs r2, #18
19d96: 2100 movs r1, #0
19d98: 4630 mov r0, r6
19d9a: 4d11 ldr r5, [pc, #68] ; (19de0 <get_txt_coords+0x58>)
19d9c: 47a8 blx r5
19d9e: 4680 mov r8, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
19da0: 2213 movs r2, #19
19da2: 2100 movs r1, #0
19da4: 4630 mov r0, r6
19da6: 47a8 blx r5
19da8: 4681 mov r9, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
19daa: 2210 movs r2, #16
19dac: 2100 movs r1, #0
19dae: 4630 mov r0, r6
19db0: 47a8 blx r5
19db2: 4607 mov r7, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
19db4: 2211 movs r2, #17
19db6: 2100 movs r1, #0
19db8: 4630 mov r0, r6
19dba: 47a8 blx r5
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;
19dbc: 8823 ldrh r3, [r4, #0]
19dbe: 4498 add r8, r3
19dc0: f8a4 8000 strh.w r8, [r4]
area->x2 -= right;
19dc4: 88a3 ldrh r3, [r4, #4]
19dc6: eba3 0309 sub.w r3, r3, r9
19dca: 80a3 strh r3, [r4, #4]
area->y1 += top;
19dcc: 8863 ldrh r3, [r4, #2]
19dce: 441f add r7, r3
19dd0: 8067 strh r7, [r4, #2]
area->y2 -= bottom;
19dd2: 88e3 ldrh r3, [r4, #6]
19dd4: 1a18 subs r0, r3, r0
19dd6: 80e0 strh r0, [r4, #6]
19dd8: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
19ddc: 00002e41 .word 0x00002e41
19de0: 000044d5 .word 0x000044d5
00019de4 <lv_label_set_dot_tmp>:
{
19de4: b5f0 push {r4, r5, r6, r7, lr}
19de6: b083 sub sp, #12
19de8: 4606 mov r6, r0
19dea: 460f mov r7, r1
19dec: 4615 mov r5, r2
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
19dee: 4b18 ldr r3, [pc, #96] ; (19e50 <lv_label_set_dot_tmp+0x6c>)
19df0: 4798 blx r3
19df2: 4604 mov r4, r0
lv_label_dot_tmp_free(label); /* Deallocate any existing space */
19df4: 4630 mov r0, r6
19df6: 4b17 ldr r3, [pc, #92] ; (19e54 <lv_label_set_dot_tmp+0x70>)
19df8: 4798 blx r3
if(len > sizeof(char *)) {
19dfa: 2d04 cmp r5, #4
19dfc: d91c bls.n 19e38 <lv_label_set_dot_tmp+0x54>
ext->dot.tmp_ptr = lv_mem_alloc(len + 1);
19dfe: 1c68 adds r0, r5, #1
19e00: 4b15 ldr r3, [pc, #84] ; (19e58 <lv_label_set_dot_tmp+0x74>)
19e02: 4798 blx r3
19e04: 6060 str r0, [r4, #4]
if(ext->dot.tmp_ptr == NULL) {
19e06: b160 cbz r0, 19e22 <lv_label_set_dot_tmp+0x3e>
_lv_memcpy(ext->dot.tmp_ptr, data, len);
19e08: 462a mov r2, r5
19e0a: 4639 mov r1, r7
19e0c: 4b13 ldr r3, [pc, #76] ; (19e5c <lv_label_set_dot_tmp+0x78>)
19e0e: 4798 blx r3
ext->dot.tmp_ptr[len] = '\0';
19e10: 6863 ldr r3, [r4, #4]
19e12: 2200 movs r2, #0
19e14: 555a strb r2, [r3, r5]
ext->dot_tmp_alloc = true;
19e16: 7c63 ldrb r3, [r4, #17]
19e18: f043 0301 orr.w r3, r3, #1
19e1c: 7463 strb r3, [r4, #17]
return true;
19e1e: 2001 movs r0, #1
19e20: e014 b.n 19e4c <lv_label_set_dot_tmp+0x68>
LV_LOG_ERROR("Failed to allocate memory for dot_tmp_ptr");
19e22: 4b0f ldr r3, [pc, #60] ; (19e60 <lv_label_set_dot_tmp+0x7c>)
19e24: 9300 str r3, [sp, #0]
19e26: 4b0f ldr r3, [pc, #60] ; (19e64 <lv_label_set_dot_tmp+0x80>)
19e28: f240 52b5 movw r2, #1461 ; 0x5b5
19e2c: 490e ldr r1, [pc, #56] ; (19e68 <lv_label_set_dot_tmp+0x84>)
19e2e: 2003 movs r0, #3
19e30: 4c0e ldr r4, [pc, #56] ; (19e6c <lv_label_set_dot_tmp+0x88>)
19e32: 47a0 blx r4
return false;
19e34: 2000 movs r0, #0
19e36: e009 b.n 19e4c <lv_label_set_dot_tmp+0x68>
ext->dot_tmp_alloc = false;
19e38: 7c63 ldrb r3, [r4, #17]
19e3a: f36f 0300 bfc r3, #0, #1
19e3e: 7463 strb r3, [r4, #17]
_lv_memcpy(ext->dot.tmp, data, len);
19e40: 462a mov r2, r5
19e42: 4639 mov r1, r7
19e44: 1d20 adds r0, r4, #4
19e46: 4b05 ldr r3, [pc, #20] ; (19e5c <lv_label_set_dot_tmp+0x78>)
19e48: 4798 blx r3
return true;
19e4a: 2001 movs r0, #1
}
19e4c: b003 add sp, #12
19e4e: bdf0 pop {r4, r5, r6, r7, pc}
19e50: 00004d9d .word 0x00004d9d
19e54: 00019c95 .word 0x00019c95
19e58: 000123dd .word 0x000123dd
19e5c: 00012655 .word 0x00012655
19e60: 000299c4 .word 0x000299c4
19e64: 00029774 .word 0x00029774
19e68: 00029994 .word 0x00029994
19e6c: 0001225d .word 0x0001225d
00019e70 <lv_label_set_align>:
{
19e70: b530 push {r4, r5, lr}
19e72: b083 sub sp, #12
19e74: 4604 mov r4, r0
19e76: 460d mov r5, r1
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
19e78: 4b10 ldr r3, [pc, #64] ; (19ebc <lv_label_set_align+0x4c>)
19e7a: 4798 blx r3
19e7c: b968 cbnz r0, 19e9a <lv_label_set_align+0x2a>
19e7e: 4b10 ldr r3, [pc, #64] ; (19ec0 <lv_label_set_align+0x50>)
19e80: 9300 str r3, [sp, #0]
19e82: f44f 72c4 mov.w r2, #392 ; 0x188
19e86: 490f ldr r1, [pc, #60] ; (19ec4 <lv_label_set_align+0x54>)
19e88: 2003 movs r0, #3
19e8a: 4d0f ldr r5, [pc, #60] ; (19ec8 <lv_label_set_align+0x58>)
19e8c: 47a8 blx r5
19e8e: 4622 mov r2, r4
19e90: 2300 movs r3, #0
19e92: 480e ldr r0, [pc, #56] ; (19ecc <lv_label_set_align+0x5c>)
19e94: 490e ldr r1, [pc, #56] ; (19ed0 <lv_label_set_align+0x60>)
19e96: 4788 blx r1
19e98: e7fe b.n 19e98 <lv_label_set_align+0x28>
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
19e9a: 4620 mov r0, r4
19e9c: 4b0d ldr r3, [pc, #52] ; (19ed4 <lv_label_set_align+0x64>)
19e9e: 4798 blx r3
if(ext->align == align) return;
19ea0: 7c03 ldrb r3, [r0, #16]
19ea2: f3c3 1301 ubfx r3, r3, #4, #2
19ea6: 42ab cmp r3, r5
19ea8: d006 beq.n 19eb8 <lv_label_set_align+0x48>
ext->align = align;
19eaa: 7c03 ldrb r3, [r0, #16]
19eac: f365 1305 bfi r3, r5, #4, #2
19eb0: 7403 strb r3, [r0, #16]
lv_obj_invalidate(label); /*Enough to invalidate because alignment is only drawing related
19eb2: 4620 mov r0, r4
19eb4: 4b08 ldr r3, [pc, #32] ; (19ed8 <lv_label_set_align+0x68>)
19eb6: 4798 blx r3
}
19eb8: b003 add sp, #12
19eba: bd30 pop {r4, r5, pc}
19ebc: 000022b1 .word 0x000022b1
19ec0: 0002978c .word 0x0002978c
19ec4: 00029994 .word 0x00029994
19ec8: 0001225d .word 0x0001225d
19ecc: 0002483c .word 0x0002483c
19ed0: 000022b9 .word 0x000022b9
19ed4: 00004d9d .word 0x00004d9d
19ed8: 00003321 .word 0x00003321
00019edc <lv_label_get_text>:
{
19edc: b530 push {r4, r5, lr}
19ede: b083 sub sp, #12
19ee0: 4604 mov r4, r0
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
19ee2: 4b0b ldr r3, [pc, #44] ; (19f10 <lv_label_get_text+0x34>)
19ee4: 4798 blx r3
19ee6: b968 cbnz r0, 19f04 <lv_label_get_text+0x28>
19ee8: 4b0a ldr r3, [pc, #40] ; (19f14 <lv_label_get_text+0x38>)
19eea: 9300 str r3, [sp, #0]
19eec: f44f 72f2 mov.w r2, #484 ; 0x1e4
19ef0: 4909 ldr r1, [pc, #36] ; (19f18 <lv_label_get_text+0x3c>)
19ef2: 2003 movs r0, #3
19ef4: 4d09 ldr r5, [pc, #36] ; (19f1c <lv_label_get_text+0x40>)
19ef6: 47a8 blx r5
19ef8: 4622 mov r2, r4
19efa: 2300 movs r3, #0
19efc: 4808 ldr r0, [pc, #32] ; (19f20 <lv_label_get_text+0x44>)
19efe: 4909 ldr r1, [pc, #36] ; (19f24 <lv_label_get_text+0x48>)
19f00: 4788 blx r1
19f02: e7fe b.n 19f02 <lv_label_get_text+0x26>
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
19f04: 4620 mov r0, r4
19f06: 4b08 ldr r3, [pc, #32] ; (19f28 <lv_label_get_text+0x4c>)
19f08: 4798 blx r3
}
19f0a: 6800 ldr r0, [r0, #0]
19f0c: b003 add sp, #12
19f0e: bd30 pop {r4, r5, pc}
19f10: 000022b1 .word 0x000022b1
19f14: 000297d8 .word 0x000297d8
19f18: 00029994 .word 0x00029994
19f1c: 0001225d .word 0x0001225d
19f20: 0002483c .word 0x0002483c
19f24: 000022b9 .word 0x000022b9
19f28: 00004d9d .word 0x00004d9d
00019f2c <lv_label_get_long_mode>:
{
19f2c: b530 push {r4, r5, lr}
19f2e: b083 sub sp, #12
19f30: 4604 mov r4, r0
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
19f32: 4b0c ldr r3, [pc, #48] ; (19f64 <lv_label_get_long_mode+0x38>)
19f34: 4798 blx r3
19f36: b968 cbnz r0, 19f54 <lv_label_get_long_mode+0x28>
19f38: 4b0b ldr r3, [pc, #44] ; (19f68 <lv_label_get_long_mode+0x3c>)
19f3a: 9300 str r3, [sp, #0]
19f3c: f44f 72f9 mov.w r2, #498 ; 0x1f2
19f40: 490a ldr r1, [pc, #40] ; (19f6c <lv_label_get_long_mode+0x40>)
19f42: 2003 movs r0, #3
19f44: 4d0a ldr r5, [pc, #40] ; (19f70 <lv_label_get_long_mode+0x44>)
19f46: 47a8 blx r5
19f48: 4622 mov r2, r4
19f4a: 2300 movs r3, #0
19f4c: 4809 ldr r0, [pc, #36] ; (19f74 <lv_label_get_long_mode+0x48>)
19f4e: 490a ldr r1, [pc, #40] ; (19f78 <lv_label_get_long_mode+0x4c>)
19f50: 4788 blx r1
19f52: e7fe b.n 19f52 <lv_label_get_long_mode+0x26>
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
19f54: 4620 mov r0, r4
19f56: 4b09 ldr r3, [pc, #36] ; (19f7c <lv_label_get_long_mode+0x50>)
19f58: 4798 blx r3
return ext->long_mode;
19f5a: 7c00 ldrb r0, [r0, #16]
}
19f5c: f000 0007 and.w r0, r0, #7
19f60: b003 add sp, #12
19f62: bd30 pop {r4, r5, pc}
19f64: 000022b1 .word 0x000022b1
19f68: 000297ec .word 0x000297ec
19f6c: 00029994 .word 0x00029994
19f70: 0001225d .word 0x0001225d
19f74: 0002483c .word 0x0002483c
19f78: 000022b9 .word 0x000022b9
19f7c: 00004d9d .word 0x00004d9d
00019f80 <lv_label_get_align>:
{
19f80: b530 push {r4, r5, lr}
19f82: b083 sub sp, #12
19f84: 4604 mov r4, r0
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
19f86: 4b0e ldr r3, [pc, #56] ; (19fc0 <lv_label_get_align+0x40>)
19f88: 4798 blx r3
19f8a: b968 cbnz r0, 19fa8 <lv_label_get_align+0x28>
19f8c: 4b0d ldr r3, [pc, #52] ; (19fc4 <lv_label_get_align+0x44>)
19f8e: 9300 str r3, [sp, #0]
19f90: f240 12ff movw r2, #511 ; 0x1ff
19f94: 490c ldr r1, [pc, #48] ; (19fc8 <lv_label_get_align+0x48>)
19f96: 2003 movs r0, #3
19f98: 4d0c ldr r5, [pc, #48] ; (19fcc <lv_label_get_align+0x4c>)
19f9a: 47a8 blx r5
19f9c: 4622 mov r2, r4
19f9e: 2300 movs r3, #0
19fa0: 480b ldr r0, [pc, #44] ; (19fd0 <lv_label_get_align+0x50>)
19fa2: 490c ldr r1, [pc, #48] ; (19fd4 <lv_label_get_align+0x54>)
19fa4: 4788 blx r1
19fa6: e7fe b.n 19fa6 <lv_label_get_align+0x26>
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
19fa8: 4620 mov r0, r4
19faa: 4b0b ldr r3, [pc, #44] ; (19fd8 <lv_label_get_align+0x58>)
19fac: 4798 blx r3
lv_label_align_t align = ext->align;
19fae: 7c00 ldrb r0, [r0, #16]
19fb0: f3c0 1001 ubfx r0, r0, #4, #2
align = LV_LABEL_ALIGN_LEFT;
19fb4: 2803 cmp r0, #3
}
19fb6: bf08 it eq
19fb8: 2000 moveq r0, #0
19fba: b003 add sp, #12
19fbc: bd30 pop {r4, r5, pc}
19fbe: bf00 nop
19fc0: 000022b1 .word 0x000022b1
19fc4: 00029804 .word 0x00029804
19fc8: 00029994 .word 0x00029994
19fcc: 0001225d .word 0x0001225d
19fd0: 0002483c .word 0x0002483c
19fd4: 000022b9 .word 0x000022b9
19fd8: 00004d9d .word 0x00004d9d
00019fdc <lv_label_get_recolor>:
{
19fdc: b530 push {r4, r5, lr}
19fde: b083 sub sp, #12
19fe0: 4604 mov r4, r0
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
19fe2: 4b0c ldr r3, [pc, #48] ; (1a014 <lv_label_get_recolor+0x38>)
19fe4: 4798 blx r3
19fe6: b968 cbnz r0, 1a004 <lv_label_get_recolor+0x28>
19fe8: 4b0b ldr r3, [pc, #44] ; (1a018 <lv_label_get_recolor+0x3c>)
19fea: 9300 str r3, [sp, #0]
19fec: f240 221b movw r2, #539 ; 0x21b
19ff0: 490a ldr r1, [pc, #40] ; (1a01c <lv_label_get_recolor+0x40>)
19ff2: 2003 movs r0, #3
19ff4: 4d0a ldr r5, [pc, #40] ; (1a020 <lv_label_get_recolor+0x44>)
19ff6: 47a8 blx r5
19ff8: 4622 mov r2, r4
19ffa: 2300 movs r3, #0
19ffc: 4809 ldr r0, [pc, #36] ; (1a024 <lv_label_get_recolor+0x48>)
19ffe: 490a ldr r1, [pc, #40] ; (1a028 <lv_label_get_recolor+0x4c>)
1a000: 4788 blx r1
1a002: e7fe b.n 1a002 <lv_label_get_recolor+0x26>
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
1a004: 4620 mov r0, r4
1a006: 4b09 ldr r3, [pc, #36] ; (1a02c <lv_label_get_recolor+0x50>)
1a008: 4798 blx r3
return ext->recolor == 0 ? false : true;
1a00a: 7c00 ldrb r0, [r0, #16]
}
1a00c: f3c0 1080 ubfx r0, r0, #6, #1
1a010: b003 add sp, #12
1a012: bd30 pop {r4, r5, pc}
1a014: 000022b1 .word 0x000022b1
1a018: 00029818 .word 0x00029818
1a01c: 00029994 .word 0x00029994
1a020: 0001225d .word 0x0001225d
1a024: 0002483c .word 0x0002483c
1a028: 000022b9 .word 0x000022b9
1a02c: 00004d9d .word 0x00004d9d
0001a030 <lv_label_get_letter_on>:
{
1a030: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
1a034: b08f sub sp, #60 ; 0x3c
1a036: 4605 mov r5, r0
1a038: 9105 str r1, [sp, #20]
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
1a03a: 4b9e ldr r3, [pc, #632] ; (1a2b4 <lv_label_get_letter_on+0x284>)
1a03c: 4798 blx r3
1a03e: b968 cbnz r0, 1a05c <lv_label_get_letter_on+0x2c>
1a040: 4b9d ldr r3, [pc, #628] ; (1a2b8 <lv_label_get_letter_on+0x288>)
1a042: 9300 str r3, [sp, #0]
1a044: f240 22a5 movw r2, #677 ; 0x2a5
1a048: 499c ldr r1, [pc, #624] ; (1a2bc <lv_label_get_letter_on+0x28c>)
1a04a: 2003 movs r0, #3
1a04c: 4c9c ldr r4, [pc, #624] ; (1a2c0 <lv_label_get_letter_on+0x290>)
1a04e: 47a0 blx r4
1a050: 462a mov r2, r5
1a052: 2300 movs r3, #0
1a054: 489b ldr r0, [pc, #620] ; (1a2c4 <lv_label_get_letter_on+0x294>)
1a056: 499c ldr r1, [pc, #624] ; (1a2c8 <lv_label_get_letter_on+0x298>)
1a058: 4788 blx r1
1a05a: e7fe b.n 1a05a <lv_label_get_letter_on+0x2a>
LV_ASSERT_NULL(pos);
1a05c: 9e05 ldr r6, [sp, #20]
1a05e: 4630 mov r0, r6
1a060: 4b94 ldr r3, [pc, #592] ; (1a2b4 <lv_label_get_letter_on+0x284>)
1a062: 4798 blx r3
1a064: b968 cbnz r0, 1a082 <lv_label_get_letter_on+0x52>
1a066: 4b94 ldr r3, [pc, #592] ; (1a2b8 <lv_label_get_letter_on+0x288>)
1a068: 9300 str r3, [sp, #0]
1a06a: f240 22a6 movw r2, #678 ; 0x2a6
1a06e: 4993 ldr r1, [pc, #588] ; (1a2bc <lv_label_get_letter_on+0x28c>)
1a070: 2003 movs r0, #3
1a072: 4c93 ldr r4, [pc, #588] ; (1a2c0 <lv_label_get_letter_on+0x290>)
1a074: 47a0 blx r4
1a076: 4632 mov r2, r6
1a078: 2300 movs r3, #0
1a07a: 4892 ldr r0, [pc, #584] ; (1a2c4 <lv_label_get_letter_on+0x294>)
1a07c: 4992 ldr r1, [pc, #584] ; (1a2c8 <lv_label_get_letter_on+0x298>)
1a07e: 4788 blx r1
1a080: e7fe b.n 1a080 <lv_label_get_letter_on+0x50>
get_txt_coords(label, &txt_coords);
1a082: a90c add r1, sp, #48 ; 0x30
1a084: 4628 mov r0, r5
1a086: 4b91 ldr r3, [pc, #580] ; (1a2cc <lv_label_get_letter_on+0x29c>)
1a088: 4798 blx r3
const char * txt = lv_label_get_text(label);
1a08a: 4628 mov r0, r5
1a08c: 4b90 ldr r3, [pc, #576] ; (1a2d0 <lv_label_get_letter_on+0x2a0>)
1a08e: 4798 blx r3
1a090: 4607 mov r7, r0
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
1a092: 4628 mov r0, r5
1a094: 4b8f ldr r3, [pc, #572] ; (1a2d4 <lv_label_get_letter_on+0x2a4>)
1a096: 4798 blx r3
1a098: 4606 mov r6, r0
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
1a09a: f8bd 3034 ldrh.w r3, [sp, #52] ; 0x34
1a09e: 3301 adds r3, #1
1a0a0: f8bd 2030 ldrh.w r2, [sp, #48] ; 0x30
1a0a4: 1a9b subs r3, r3, r2
1a0a6: b21b sxth r3, r3
1a0a8: 9306 str r3, [sp, #24]
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar)
1a0aa: f248 028e movw r2, #32910 ; 0x808e
1a0ae: 2100 movs r1, #0
1a0b0: 4628 mov r0, r5
1a0b2: 4b89 ldr r3, [pc, #548] ; (1a2d8 <lv_label_get_letter_on+0x2a8>)
1a0b4: 4798 blx r3
1a0b6: 4681 mov r9, r0
1a0b8: 9003 str r0, [sp, #12]
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar)
1a0ba: f248 0281 movw r2, #32897 ; 0x8081
1a0be: 2100 movs r1, #0
1a0c0: 4628 mov r0, r5
1a0c2: f8df 8230 ldr.w r8, [pc, #560] ; 1a2f4 <lv_label_get_letter_on+0x2c4>
1a0c6: 47c0 blx r8
1a0c8: 4604 mov r4, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar)
1a0ca: f248 0280 movw r2, #32896 ; 0x8080
1a0ce: 2100 movs r1, #0
1a0d0: 4628 mov r0, r5
1a0d2: 47c0 blx r8
1a0d4: 9004 str r0, [sp, #16]
* @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;
1a0d6: f9b9 b008 ldrsh.w fp, [r9, #8]
if(ext->recolor != 0) flag |= LV_TXT_FLAG_RECOLOR;
1a0da: 7c33 ldrb r3, [r6, #16]
lv_txt_flag_t flag = LV_TXT_FLAG_NONE;
1a0dc: f3c3 1680 ubfx r6, r3, #6, #1
if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND;
1a0e0: f013 0f80 tst.w r3, #128 ; 0x80
1a0e4: bf18 it ne
1a0e6: f046 0602 orrne.w r6, r6, #2
if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT;
1a0ea: f013 0f07 tst.w r3, #7
1a0ee: bf08 it eq
1a0f0: f046 0610 orreq.w r6, r6, #16
lv_label_align_t align = lv_label_get_align(label);
1a0f4: 4628 mov r0, r5
1a0f6: 4b79 ldr r3, [pc, #484] ; (1a2dc <lv_label_get_letter_on+0x2ac>)
1a0f8: 4798 blx r3
1a0fa: 4682 mov sl, r0
if(align == LV_LABEL_ALIGN_CENTER) flag |= LV_TXT_FLAG_CENTER;
1a0fc: 2801 cmp r0, #1
1a0fe: d137 bne.n 1a170 <lv_label_get_letter_on+0x140>
1a100: f046 0604 orr.w r6, r6, #4
while(txt[line_start] != '\0') {
1a104: 783b ldrb r3, [r7, #0]
1a106: 2b00 cmp r3, #0
1a108: d13a bne.n 1a180 <lv_label_get_letter_on+0x150>
1a10a: 46b8 mov r8, r7
1a10c: 2500 movs r5, #0
1a10e: 462c mov r4, r5
line_w = _lv_txt_get_width(bidi_txt, new_line_start - line_start, font, letter_space, flag);
1a110: 1b61 subs r1, r4, r5
1a112: 9600 str r6, [sp, #0]
1a114: 9b04 ldr r3, [sp, #16]
1a116: 9a03 ldr r2, [sp, #12]
1a118: b289 uxth r1, r1
1a11a: 4640 mov r0, r8
1a11c: f8df 91d8 ldr.w r9, [pc, #472] ; 1a2f8 <lv_label_get_letter_on+0x2c8>
1a120: 47c8 blx r9
1a122: f8bd 3034 ldrh.w r3, [sp, #52] ; 0x34
1a126: 3301 adds r3, #1
1a128: f8bd 2030 ldrh.w r2, [sp, #48] ; 0x30
1a12c: 1a9b subs r3, r3, r2
x += lv_area_get_width(&txt_coords) / 2 - line_w / 2;
1a12e: b21b sxth r3, r3
1a130: eb03 73d3 add.w r3, r3, r3, lsr #31
1a134: eb00 70d0 add.w r0, r0, r0, lsr #31
1a138: ea4f 0960 mov.w r9, r0, asr #1
1a13c: ebc9 0363 rsb r3, r9, r3, asr #1
1a140: fa0f f983 sxth.w r9, r3
lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT;
1a144: 2300 movs r3, #0
1a146: f88d 302f strb.w r3, [sp, #47] ; 0x2f
uint32_t i = 0;
1a14a: 930a str r3, [sp, #40] ; 0x28
if(new_line_start > 0) {
1a14c: 2c00 cmp r4, #0
1a14e: f040 80a1 bne.w 1a294 <lv_label_get_letter_on+0x264>
logical_pos = _lv_txt_encoded_get_char_id(bidi_txt, i);
1a152: 4e63 ldr r6, [pc, #396] ; (1a2e0 <lv_label_get_letter_on+0x2b0>)
1a154: 6833 ldr r3, [r6, #0]
1a156: 990a ldr r1, [sp, #40] ; 0x28
1a158: 4640 mov r0, r8
1a15a: 4798 blx r3
1a15c: 4604 mov r4, r0
return logical_pos + _lv_txt_encoded_get_char_id(txt, line_start);
1a15e: 6833 ldr r3, [r6, #0]
1a160: 4629 mov r1, r5
1a162: 4638 mov r0, r7
1a164: 4798 blx r3
1a166: 4420 add r0, r4
1a168: b280 uxth r0, r0
}
1a16a: b00f add sp, #60 ; 0x3c
1a16c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
if(align == LV_LABEL_ALIGN_RIGHT) flag |= LV_TXT_FLAG_RIGHT;
1a170: 2802 cmp r0, #2
1a172: f040 8096 bne.w 1a2a2 <lv_label_get_letter_on+0x272>
1a176: f046 0608 orr.w r6, r6, #8
while(txt[line_start] != '\0') {
1a17a: 783b ldrb r3, [r7, #0]
1a17c: 2b00 cmp r3, #0
1a17e: d048 beq.n 1a212 <lv_label_get_letter_on+0x1e2>
{
1a180: 46b8 mov r8, r7
1a182: f04f 0900 mov.w r9, #0
1a186: 464d mov r5, r9
y += letter_height + line_space;
1a188: eb0b 0304 add.w r3, fp, r4
1a18c: 9307 str r3, [sp, #28]
1a18e: e009 b.n 1a1a4 <lv_label_get_letter_on+0x174>
1a190: 9b07 ldr r3, [sp, #28]
1a192: 4499 add r9, r3
1a194: fa0f f989 sxth.w r9, r9
while(txt[line_start] != '\0') {
1a198: eb07 0800 add.w r8, r7, r0
new_line_start += _lv_txt_get_next_line(&txt[line_start], font, letter_space, max_w, flag);
1a19c: 4605 mov r5, r0
while(txt[line_start] != '\0') {
1a19e: 5c3b ldrb r3, [r7, r0]
1a1a0: 2b00 cmp r3, #0
1a1a2: d034 beq.n 1a20e <lv_label_get_letter_on+0x1de>
new_line_start += _lv_txt_get_next_line(&txt[line_start], font, letter_space, max_w, flag);
1a1a4: 9600 str r6, [sp, #0]
1a1a6: 9b06 ldr r3, [sp, #24]
1a1a8: 9a04 ldr r2, [sp, #16]
1a1aa: 9903 ldr r1, [sp, #12]
1a1ac: 4640 mov r0, r8
1a1ae: 4c4d ldr r4, [pc, #308] ; (1a2e4 <lv_label_get_letter_on+0x2b4>)
1a1b0: 47a0 blx r4
1a1b2: 4428 add r0, r5
if(pos->y <= y + letter_height) {
1a1b4: 9b05 ldr r3, [sp, #20]
1a1b6: f9b3 2002 ldrsh.w r2, [r3, #2]
1a1ba: eb09 030b add.w r3, r9, fp
1a1be: 429a cmp r2, r3
1a1c0: dce6 bgt.n 1a190 <lv_label_get_letter_on+0x160>
1a1c2: 4604 mov r4, r0
uint32_t tmp = new_line_start;
1a1c4: a90e add r1, sp, #56 ; 0x38
1a1c6: f841 0d14 str.w r0, [r1, #-20]!
letter = _lv_txt_encoded_prev(txt, &tmp);
1a1ca: 4b47 ldr r3, [pc, #284] ; (1a2e8 <lv_label_get_letter_on+0x2b8>)
1a1cc: 681b ldr r3, [r3, #0]
1a1ce: 4638 mov r0, r7
1a1d0: 4798 blx r3
if(letter != '\n' && txt[new_line_start] == '\0') new_line_start++;
1a1d2: 280a cmp r0, #10
1a1d4: d002 beq.n 1a1dc <lv_label_get_letter_on+0x1ac>
1a1d6: 5d3b ldrb r3, [r7, r4]
1a1d8: b903 cbnz r3, 1a1dc <lv_label_get_letter_on+0x1ac>
1a1da: 3401 adds r4, #1
if(align == LV_LABEL_ALIGN_CENTER) {
1a1dc: f1ba 0f01 cmp.w sl, #1
1a1e0: d096 beq.n 1a110 <lv_label_get_letter_on+0xe0>
else if(align == LV_LABEL_ALIGN_RIGHT) {
1a1e2: f1ba 0f02 cmp.w sl, #2
1a1e6: d118 bne.n 1a21a <lv_label_get_letter_on+0x1ea>
line_w = _lv_txt_get_width(bidi_txt, new_line_start - line_start, font, letter_space, flag);
1a1e8: 1b61 subs r1, r4, r5
1a1ea: 9600 str r6, [sp, #0]
1a1ec: 9b04 ldr r3, [sp, #16]
1a1ee: 9a03 ldr r2, [sp, #12]
1a1f0: b289 uxth r1, r1
1a1f2: 4640 mov r0, r8
1a1f4: f8df 9100 ldr.w r9, [pc, #256] ; 1a2f8 <lv_label_get_letter_on+0x2c8>
1a1f8: 47c8 blx r9
1a1fa: f8bd 3034 ldrh.w r3, [sp, #52] ; 0x34
1a1fe: 3301 adds r3, #1
1a200: f8bd 2030 ldrh.w r2, [sp, #48] ; 0x30
1a204: 1a9b subs r3, r3, r2
x += lv_area_get_width(&txt_coords) - line_w;
1a206: 1a1b subs r3, r3, r0
1a208: fa0f f983 sxth.w r9, r3
1a20c: e79a b.n 1a144 <lv_label_get_letter_on+0x114>
1a20e: 4604 mov r4, r0
1a210: e7e4 b.n 1a1dc <lv_label_get_letter_on+0x1ac>
while(txt[line_start] != '\0') {
1a212: 46b8 mov r8, r7
1a214: 2500 movs r5, #0
1a216: 462c mov r4, r5
1a218: e7e6 b.n 1a1e8 <lv_label_get_letter_on+0x1b8>
lv_coord_t x = 0;
1a21a: f04f 0900 mov.w r9, #0
1a21e: e791 b.n 1a144 <lv_label_get_letter_on+0x114>
x += lv_font_get_glyph_width(font, letter, letter_next);
1a220: 9a07 ldr r2, [sp, #28]
1a222: 9906 ldr r1, [sp, #24]
1a224: 9803 ldr r0, [sp, #12]
1a226: 4b31 ldr r3, [pc, #196] ; (1a2ec <lv_label_get_letter_on+0x2bc>)
1a228: 4798 blx r3
1a22a: eb00 0309 add.w r3, r0, r9
1a22e: b29b uxth r3, r3
if(pos->x < x || i + line_start == new_line_start || txt[i + line_start] == '\0') {
1a230: 9a05 ldr r2, [sp, #20]
1a232: f9b2 1000 ldrsh.w r1, [r2]
1a236: b21a sxth r2, r3
1a238: 4291 cmp r1, r2
1a23a: db28 blt.n 1a28e <lv_label_get_letter_on+0x25e>
1a23c: 9a0a ldr r2, [sp, #40] ; 0x28
1a23e: 1951 adds r1, r2, r5
1a240: 42a1 cmp r1, r4
1a242: d024 beq.n 1a28e <lv_label_get_letter_on+0x25e>
1a244: 5c79 ldrb r1, [r7, r1]
1a246: b311 cbz r1, 1a28e <lv_label_get_letter_on+0x25e>
x += letter_space;
1a248: 9904 ldr r1, [sp, #16]
1a24a: 440b add r3, r1
1a24c: fa0f f983 sxth.w r9, r3
i_act = i;
1a250: 4693 mov fp, r2
while(i + line_start < new_line_start) {
1a252: 9b0a ldr r3, [sp, #40] ; 0x28
1a254: 442b add r3, r5
1a256: 42a3 cmp r3, r4
1a258: f4bf af7b bcs.w 1a152 <lv_label_get_letter_on+0x122>
uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i);
1a25c: f8da 3000 ldr.w r3, [sl]
1a260: a90a add r1, sp, #40 ; 0x28
1a262: 4640 mov r0, r8
1a264: 4798 blx r3
1a266: 9006 str r0, [sp, #24]
uint32_t letter_next = _lv_txt_encoded_next(&bidi_txt[i], NULL);
1a268: f8da 3000 ldr.w r3, [sl]
1a26c: 2100 movs r1, #0
1a26e: 980a ldr r0, [sp, #40] ; 0x28
1a270: 4440 add r0, r8
1a272: 4798 blx r3
1a274: 9007 str r0, [sp, #28]
if((flag & LV_TXT_FLAG_RECOLOR) != 0) {
1a276: 2e00 cmp r6, #0
1a278: d0d2 beq.n 1a220 <lv_label_get_letter_on+0x1f0>
if(_lv_txt_is_cmd(&cmd_state, bidi_txt[i]) != false) {
1a27a: 9b0a ldr r3, [sp, #40] ; 0x28
1a27c: f818 1003 ldrb.w r1, [r8, r3]
1a280: f10d 002f add.w r0, sp, #47 ; 0x2f
1a284: 4b1a ldr r3, [pc, #104] ; (1a2f0 <lv_label_get_letter_on+0x2c0>)
1a286: 4798 blx r3
1a288: 2800 cmp r0, #0
1a28a: d1e2 bne.n 1a252 <lv_label_get_letter_on+0x222>
1a28c: e7c8 b.n 1a220 <lv_label_get_letter_on+0x1f0>
i = i_act;
1a28e: f8cd b028 str.w fp, [sp, #40] ; 0x28
break;
1a292: e75e b.n 1a152 <lv_label_get_letter_on+0x122>
1a294: f04f 0b00 mov.w fp, #0
uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i);
1a298: f8df a060 ldr.w sl, [pc, #96] ; 1a2fc <lv_label_get_letter_on+0x2cc>
if((flag & LV_TXT_FLAG_RECOLOR) != 0) {
1a29c: f006 0601 and.w r6, r6, #1
1a2a0: e7d7 b.n 1a252 <lv_label_get_letter_on+0x222>
while(txt[line_start] != '\0') {
1a2a2: 783b ldrb r3, [r7, #0]
1a2a4: 2b00 cmp r3, #0
1a2a6: f47f af6b bne.w 1a180 <lv_label_get_letter_on+0x150>
1a2aa: 46b8 mov r8, r7
1a2ac: 2500 movs r5, #0
1a2ae: 462c mov r4, r5
lv_coord_t x = 0;
1a2b0: 46a9 mov r9, r5
1a2b2: e747 b.n 1a144 <lv_label_get_letter_on+0x114>
1a2b4: 000022b1 .word 0x000022b1
1a2b8: 00029860 .word 0x00029860
1a2bc: 00029994 .word 0x00029994
1a2c0: 0001225d .word 0x0001225d
1a2c4: 0002483c .word 0x0002483c
1a2c8: 000022b9 .word 0x000022b9
1a2cc: 00019d89 .word 0x00019d89
1a2d0: 00019edd .word 0x00019edd
1a2d4: 00004d9d .word 0x00004d9d
1a2d8: 000046a1 .word 0x000046a1
1a2dc: 00019f81 .word 0x00019f81
1a2e0: 20000064 .word 0x20000064
1a2e4: 00013db1 .word 0x00013db1
1a2e8: 20000068 .word 0x20000068
1a2ec: 00010061 .word 0x00010061
1a2f0: 00013d69 .word 0x00013d69
1a2f4: 000044d5 .word 0x000044d5
1a2f8: 00013fdd .word 0x00013fdd
1a2fc: 20000058 .word 0x20000058
0001a300 <lv_label_refr_text>:
{
1a300: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
1a304: b099 sub sp, #100 ; 0x64
1a306: 4604 mov r4, r0
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
1a308: 4baf ldr r3, [pc, #700] ; (1a5c8 <lv_label_refr_text+0x2c8>)
1a30a: 4798 blx r3
if(ext->text == NULL) return;
1a30c: 6803 ldr r3, [r0, #0]
1a30e: 2b00 cmp r3, #0
1a310: d048 beq.n 1a3a4 <lv_label_refr_text+0xa4>
1a312: 4605 mov r5, r0
get_txt_coords(label, &txt_coords);
1a314: a916 add r1, sp, #88 ; 0x58
1a316: 4620 mov r0, r4
1a318: 4bac ldr r3, [pc, #688] ; (1a5cc <lv_label_refr_text+0x2cc>)
1a31a: 4798 blx r3
1a31c: f8bd 605c ldrh.w r6, [sp, #92] ; 0x5c
1a320: 3601 adds r6, #1
1a322: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58
1a326: 1af6 subs r6, r6, r3
1a328: b236 sxth r6, r6
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar)
1a32a: f248 028e movw r2, #32910 ; 0x808e
1a32e: 2100 movs r1, #0
1a330: 4620 mov r0, r4
1a332: 4ba7 ldr r3, [pc, #668] ; (1a5d0 <lv_label_refr_text+0x2d0>)
1a334: 4798 blx r3
1a336: 4680 mov r8, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar)
1a338: f248 0281 movw r2, #32897 ; 0x8081
1a33c: 2100 movs r1, #0
1a33e: 4620 mov r0, r4
1a340: 4fa4 ldr r7, [pc, #656] ; (1a5d4 <lv_label_refr_text+0x2d4>)
1a342: 47b8 blx r7
1a344: 4681 mov r9, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar)
1a346: f248 0280 movw r2, #32896 ; 0x8080
1a34a: 2100 movs r1, #0
1a34c: 4620 mov r0, r4
1a34e: 47b8 blx r7
1a350: 4607 mov r7, r0
if(ext->recolor != 0) flag |= LV_TXT_FLAG_RECOLOR;
1a352: 7c2b ldrb r3, [r5, #16]
lv_txt_flag_t flag = LV_TXT_FLAG_NONE;
1a354: f3c3 1280 ubfx r2, r3, #6, #1
if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND;
1a358: f013 0f80 tst.w r3, #128 ; 0x80
1a35c: bf18 it ne
1a35e: f042 0202 orrne.w r2, r2, #2
if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT;
1a362: f013 0f07 tst.w r3, #7
1a366: bf08 it eq
1a368: f042 0210 orreq.w r2, r2, #16
_lv_txt_get_size(&size, ext->text, font, letter_space, line_space, max_w, flag);
1a36c: 6829 ldr r1, [r5, #0]
1a36e: 9202 str r2, [sp, #8]
1a370: 9601 str r6, [sp, #4]
1a372: f8cd 9000 str.w r9, [sp]
1a376: 4603 mov r3, r0
1a378: 4642 mov r2, r8
1a37a: a815 add r0, sp, #84 ; 0x54
1a37c: 4e96 ldr r6, [pc, #600] ; (1a5d8 <lv_label_refr_text+0x2d8>)
1a37e: 47b0 blx r6
if(ext->long_mode == LV_LABEL_LONG_EXPAND) {
1a380: 7c2b ldrb r3, [r5, #16]
1a382: f013 0307 ands.w r3, r3, #7
1a386: d010 beq.n 1a3aa <lv_label_refr_text+0xaa>
else if(ext->long_mode == LV_LABEL_LONG_SROLL) {
1a388: 2b03 cmp r3, #3
1a38a: d034 beq.n 1a3f6 <lv_label_refr_text+0xf6>
else if(ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) {
1a38c: 2b04 cmp r3, #4
1a38e: f000 80d7 beq.w 1a540 <lv_label_refr_text+0x240>
else if(ext->long_mode == LV_LABEL_LONG_DOT) {
1a392: 2b02 cmp r3, #2
1a394: f000 816d beq.w 1a672 <lv_label_refr_text+0x372>
else if(ext->long_mode == LV_LABEL_LONG_BREAK) {
1a398: 2b01 cmp r3, #1
1a39a: f000 81fe beq.w 1a79a <lv_label_refr_text+0x49a>
lv_obj_invalidate(label);
1a39e: 4620 mov r0, r4
1a3a0: 4b8e ldr r3, [pc, #568] ; (1a5dc <lv_label_refr_text+0x2dc>)
1a3a2: 4798 blx r3
}
1a3a4: b019 add sp, #100 ; 0x64
1a3a6: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar)
1a3aa: 2212 movs r2, #18
1a3ac: 2100 movs r1, #0
1a3ae: 4620 mov r0, r4
1a3b0: 4e88 ldr r6, [pc, #544] ; (1a5d4 <lv_label_refr_text+0x2d4>)
1a3b2: 47b0 blx r6
1a3b4: 4605 mov r5, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar)
1a3b6: 2213 movs r2, #19
1a3b8: 2100 movs r1, #0
1a3ba: 4620 mov r0, r4
1a3bc: 47b0 blx r6
size.x += lv_obj_get_style_pad_left(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_right(label, LV_LABEL_PART_MAIN);
1a3be: 4428 add r0, r5
1a3c0: f8bd 5054 ldrh.w r5, [sp, #84] ; 0x54
1a3c4: 4428 add r0, r5
1a3c6: f8ad 0054 strh.w r0, [sp, #84] ; 0x54
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
1a3ca: 2210 movs r2, #16
1a3cc: 2100 movs r1, #0
1a3ce: 4620 mov r0, r4
1a3d0: 47b0 blx r6
1a3d2: 4605 mov r5, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
1a3d4: 2211 movs r2, #17
1a3d6: 2100 movs r1, #0
1a3d8: 4620 mov r0, r4
1a3da: 47b0 blx r6
size.y += lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN);
1a3dc: 182a adds r2, r5, r0
1a3de: f8bd 0056 ldrh.w r0, [sp, #86] ; 0x56
1a3e2: 4402 add r2, r0
1a3e4: b212 sxth r2, r2
1a3e6: f8ad 2056 strh.w r2, [sp, #86] ; 0x56
lv_obj_set_size(label, size.x, size.y);
1a3ea: f9bd 1054 ldrsh.w r1, [sp, #84] ; 0x54
1a3ee: 4620 mov r0, r4
1a3f0: 4b7b ldr r3, [pc, #492] ; (1a5e0 <lv_label_refr_text+0x2e0>)
1a3f2: 4798 blx r3
1a3f4: e7d3 b.n 1a39e <lv_label_refr_text+0x9e>
lv_anim_init(&a);
1a3f6: a805 add r0, sp, #20
1a3f8: 4b7a ldr r3, [pc, #488] ; (1a5e4 <lv_label_refr_text+0x2e4>)
1a3fa: 4798 blx r3
* @param a pointer to an initialized `lv_anim_t` variable
* @param var pointer to a variable to animate
*/
static inline void lv_anim_set_var(lv_anim_t * a, void * var)
{
a->var = var;
1a3fc: 9405 str r4, [sp, #20]
* @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;
1a3fe: f64f 73ff movw r3, #65535 ; 0xffff
1a402: f8ad 3048 strh.w r3, [sp, #72] ; 0x48
lv_anim_set_playback_delay(&a, (((lv_font_get_glyph_width(font, ' ', ' ') + letter_space) * 1000) /
1a406: 2220 movs r2, #32
1a408: 4611 mov r1, r2
1a40a: 4640 mov r0, r8
1a40c: 4b76 ldr r3, [pc, #472] ; (1a5e8 <lv_label_refr_text+0x2e8>)
1a40e: 4798 blx r3
1a410: 4438 add r0, r7
1a412: f44f 737a mov.w r3, #1000 ; 0x3e8
1a416: fb03 f300 mul.w r3, r3, r0
ext->anim_speed) *
1a41a: 8968 ldrh r0, [r5, #10]
lv_anim_set_playback_delay(&a, (((lv_font_get_glyph_width(font, ' ', ' ') + letter_space) * 1000) /
1a41c: fb93 f3f0 sdiv r3, r3, r0
1a420: eb03 0343 add.w r3, r3, r3, lsl #1
a->playback_delay = delay;
1a424: b29b uxth r3, r3
1a426: 930f str r3, [sp, #60] ; 0x3c
* @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;
1a428: 9311 str r3, [sp, #68] ; 0x44
if(size.x > lv_area_get_width(&txt_coords)) {
1a42a: f9bd 2054 ldrsh.w r2, [sp, #84] ; 0x54
1a42e: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c
1a432: 3301 adds r3, #1
1a434: f8bd 1058 ldrh.w r1, [sp, #88] ; 0x58
1a438: 1a5b subs r3, r3, r1
1a43a: b29b uxth r3, r3
1a43c: b219 sxth r1, r3
1a43e: 428a cmp r2, r1
1a440: dd37 ble.n 1a4b2 <lv_label_refr_text+0x1b2>
lv_anim_set_values(&a, 0, lv_area_get_width(&txt_coords) - size.x);
1a442: 1a9b subs r3, r3, r2
1a444: b21a sxth r2, r3
a->start = start;
1a446: 2100 movs r1, #0
1a448: 910b str r1, [sp, #44] ; 0x2c
a->end = end;
1a44a: 920c str r2, [sp, #48] ; 0x30
a->exec_cb = exec_cb;
1a44c: 4e67 ldr r6, [pc, #412] ; (1a5ec <lv_label_refr_text+0x2ec>)
1a44e: 9606 str r6, [sp, #24]
lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end));
1a450: 8968 ldrh r0, [r5, #10]
1a452: 4b67 ldr r3, [pc, #412] ; (1a5f0 <lv_label_refr_text+0x2f0>)
1a454: 4798 blx r3
a->time = duration;
1a456: 900d str r0, [sp, #52] ; 0x34
1a458: 9010 str r0, [sp, #64] ; 0x40
lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x);
1a45a: 4631 mov r1, r6
1a45c: 4620 mov r0, r4
1a45e: 4b65 ldr r3, [pc, #404] ; (1a5f4 <lv_label_refr_text+0x2f4>)
1a460: 4798 blx r3
if(anim_cur) {
1a462: b318 cbz r0, 1a4ac <lv_label_refr_text+0x1ac>
act_time = anim_cur->act_time;
1a464: 6a42 ldr r2, [r0, #36] ; 0x24
playback_now = anim_cur->playback_now;
1a466: f890 303c ldrb.w r3, [r0, #60] ; 0x3c
1a46a: f003 0301 and.w r3, r3, #1
if(act_time < a.time) {
1a46e: 990d ldr r1, [sp, #52] ; 0x34
1a470: 428a cmp r2, r1
1a472: da11 bge.n 1a498 <lv_label_refr_text+0x198>
a.act_time = act_time; /*To keep the old position*/
1a474: 920e str r2, [sp, #56] ; 0x38
a.early_apply = 0;
1a476: f89d 204a ldrb.w r2, [sp, #74] ; 0x4a
1a47a: f36f 0200 bfc r2, #0, #1
1a47e: f88d 204a strb.w r2, [sp, #74] ; 0x4a
if(playback_now) {
1a482: b14b cbz r3, 1a498 <lv_label_refr_text+0x198>
a.playback_now = 1;
1a484: f89d 3050 ldrb.w r3, [sp, #80] ; 0x50
1a488: f043 0301 orr.w r3, r3, #1
1a48c: f88d 3050 strb.w r3, [sp, #80] ; 0x50
tmp = a.start;
1a490: 9b0b ldr r3, [sp, #44] ; 0x2c
a.start = a.end;
1a492: 9a0c ldr r2, [sp, #48] ; 0x30
1a494: 920b str r2, [sp, #44] ; 0x2c
a.end = tmp;
1a496: 930c str r3, [sp, #48] ; 0x30
lv_anim_start(&a);
1a498: a805 add r0, sp, #20
1a49a: 4b57 ldr r3, [pc, #348] ; (1a5f8 <lv_label_refr_text+0x2f8>)
1a49c: 4798 blx r3
lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y);
1a49e: 4957 ldr r1, [pc, #348] ; (1a5fc <lv_label_refr_text+0x2fc>)
1a4a0: 4620 mov r0, r4
1a4a2: 4b57 ldr r3, [pc, #348] ; (1a600 <lv_label_refr_text+0x300>)
1a4a4: 4798 blx r3
ext->offset.y = 0;
1a4a6: 2300 movs r3, #0
1a4a8: 81eb strh r3, [r5, #14]
1a4aa: e778 b.n 1a39e <lv_label_refr_text+0x9e>
bool playback_now = false;
1a4ac: 2300 movs r3, #0
int32_t act_time = 0;
1a4ae: 461a mov r2, r3
1a4b0: e7dd b.n 1a46e <lv_label_refr_text+0x16e>
lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x);
1a4b2: 494e ldr r1, [pc, #312] ; (1a5ec <lv_label_refr_text+0x2ec>)
1a4b4: 4620 mov r0, r4
1a4b6: 4b52 ldr r3, [pc, #328] ; (1a600 <lv_label_refr_text+0x300>)
1a4b8: 4798 blx r3
ext->offset.x = 0;
1a4ba: 2300 movs r3, #0
1a4bc: 81ab strh r3, [r5, #12]
if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) {
1a4be: f9bd 2056 ldrsh.w r2, [sp, #86] ; 0x56
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
1a4c2: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e
1a4c6: 3301 adds r3, #1
1a4c8: f8bd 105a ldrh.w r1, [sp, #90] ; 0x5a
1a4cc: 1a5b subs r3, r3, r1
1a4ce: b29b uxth r3, r3
1a4d0: b219 sxth r1, r3
1a4d2: 428a cmp r2, r1
1a4d4: dde3 ble.n 1a49e <lv_label_refr_text+0x19e>
lv_anim_set_values(&a, 0, lv_area_get_height(&txt_coords) - size.y - (lv_font_get_line_height(font)));
1a4d6: 1a9a subs r2, r3, r2
1a4d8: f8b8 3008 ldrh.w r3, [r8, #8]
1a4dc: 1ad2 subs r2, r2, r3
1a4de: b212 sxth r2, r2
a->start = start;
1a4e0: 2100 movs r1, #0
1a4e2: 910b str r1, [sp, #44] ; 0x2c
a->end = end;
1a4e4: 920c str r2, [sp, #48] ; 0x30
a->exec_cb = exec_cb;
1a4e6: 4e45 ldr r6, [pc, #276] ; (1a5fc <lv_label_refr_text+0x2fc>)
1a4e8: 9606 str r6, [sp, #24]
lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end));
1a4ea: 8968 ldrh r0, [r5, #10]
1a4ec: 4b40 ldr r3, [pc, #256] ; (1a5f0 <lv_label_refr_text+0x2f0>)
1a4ee: 4798 blx r3
a->time = duration;
1a4f0: 900d str r0, [sp, #52] ; 0x34
1a4f2: 9010 str r0, [sp, #64] ; 0x40
lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y);
1a4f4: 4631 mov r1, r6
1a4f6: 4620 mov r0, r4
1a4f8: 4b3e ldr r3, [pc, #248] ; (1a5f4 <lv_label_refr_text+0x2f4>)
1a4fa: 4798 blx r3
if(anim_cur) {
1a4fc: b1e8 cbz r0, 1a53a <lv_label_refr_text+0x23a>
act_time = anim_cur->act_time;
1a4fe: 6a42 ldr r2, [r0, #36] ; 0x24
playback_now = anim_cur->playback_now;
1a500: f890 303c ldrb.w r3, [r0, #60] ; 0x3c
1a504: f003 0301 and.w r3, r3, #1
if(act_time < a.time) {
1a508: 990d ldr r1, [sp, #52] ; 0x34
1a50a: 428a cmp r2, r1
1a50c: da11 bge.n 1a532 <lv_label_refr_text+0x232>
a.act_time = act_time; /*To keep the old position*/
1a50e: 920e str r2, [sp, #56] ; 0x38
a.early_apply = 0;
1a510: f89d 204a ldrb.w r2, [sp, #74] ; 0x4a
1a514: f36f 0200 bfc r2, #0, #1
1a518: f88d 204a strb.w r2, [sp, #74] ; 0x4a
if(playback_now) {
1a51c: b14b cbz r3, 1a532 <lv_label_refr_text+0x232>
a.playback_now = 1;
1a51e: f89d 3050 ldrb.w r3, [sp, #80] ; 0x50
1a522: f043 0301 orr.w r3, r3, #1
1a526: f88d 3050 strb.w r3, [sp, #80] ; 0x50
tmp = a.start;
1a52a: 9b0b ldr r3, [sp, #44] ; 0x2c
a.start = a.end;
1a52c: 9a0c ldr r2, [sp, #48] ; 0x30
1a52e: 920b str r2, [sp, #44] ; 0x2c
a.end = tmp;
1a530: 930c str r3, [sp, #48] ; 0x30
lv_anim_start(&a);
1a532: a805 add r0, sp, #20
1a534: 4b30 ldr r3, [pc, #192] ; (1a5f8 <lv_label_refr_text+0x2f8>)
1a536: 4798 blx r3
if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) {
1a538: e731 b.n 1a39e <lv_label_refr_text+0x9e>
bool playback_now = false;
1a53a: 2300 movs r3, #0
int32_t act_time = 0;
1a53c: 461a mov r2, r3
1a53e: e7e3 b.n 1a508 <lv_label_refr_text+0x208>
lv_anim_init(&a);
1a540: a805 add r0, sp, #20
1a542: 4b28 ldr r3, [pc, #160] ; (1a5e4 <lv_label_refr_text+0x2e4>)
1a544: 4798 blx r3
a->var = var;
1a546: 9405 str r4, [sp, #20]
a->repeat_cnt = cnt;
1a548: f64f 73ff movw r3, #65535 ; 0xffff
1a54c: f8ad 3048 strh.w r3, [sp, #72] ; 0x48
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
1a550: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c
1a554: 3301 adds r3, #1
1a556: f8bd 2058 ldrh.w r2, [sp, #88] ; 0x58
1a55a: 1a9b subs r3, r3, r2
if(size.x > lv_area_get_width(&txt_coords)) {
1a55c: f9bd 2054 ldrsh.w r2, [sp, #84] ; 0x54
1a560: b21b sxth r3, r3
1a562: 429a cmp r2, r3
1a564: dd50 ble.n 1a608 <lv_label_refr_text+0x308>
lv_anim_set_values(&a, 0, -size.x - lv_font_get_glyph_width(font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT);
1a566: 2220 movs r2, #32
1a568: 4611 mov r1, r2
1a56a: 4640 mov r0, r8
1a56c: 4b1e ldr r3, [pc, #120] ; (1a5e8 <lv_label_refr_text+0x2e8>)
1a56e: 4798 blx r3
1a570: ebc0 3380 rsb r3, r0, r0, lsl #14
1a574: eb00 0283 add.w r2, r0, r3, lsl #2
1a578: f8bd 3054 ldrh.w r3, [sp, #84] ; 0x54
1a57c: 1ad2 subs r2, r2, r3
1a57e: b212 sxth r2, r2
a->start = start;
1a580: 2100 movs r1, #0
1a582: 910b str r1, [sp, #44] ; 0x2c
a->end = end;
1a584: 920c str r2, [sp, #48] ; 0x30
a->exec_cb = exec_cb;
1a586: 4e19 ldr r6, [pc, #100] ; (1a5ec <lv_label_refr_text+0x2ec>)
1a588: 9606 str r6, [sp, #24]
lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end));
1a58a: 8968 ldrh r0, [r5, #10]
1a58c: 4b18 ldr r3, [pc, #96] ; (1a5f0 <lv_label_refr_text+0x2f0>)
1a58e: 4798 blx r3
a->time = duration;
1a590: 900d str r0, [sp, #52] ; 0x34
lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x);
1a592: 4631 mov r1, r6
1a594: 4620 mov r0, r4
1a596: 4b17 ldr r3, [pc, #92] ; (1a5f4 <lv_label_refr_text+0x2f4>)
1a598: 4798 blx r3
int32_t act_time = anim_cur ? anim_cur->act_time : 0;
1a59a: 2800 cmp r0, #0
1a59c: d032 beq.n 1a604 <lv_label_refr_text+0x304>
1a59e: 6a43 ldr r3, [r0, #36] ; 0x24
if(act_time < a.time) {
1a5a0: 9a0d ldr r2, [sp, #52] ; 0x34
1a5a2: 4293 cmp r3, r2
1a5a4: da06 bge.n 1a5b4 <lv_label_refr_text+0x2b4>
a.act_time = act_time; /*To keep the old position*/
1a5a6: 930e str r3, [sp, #56] ; 0x38
a.early_apply = 0;
1a5a8: f89d 304a ldrb.w r3, [sp, #74] ; 0x4a
1a5ac: f36f 0300 bfc r3, #0, #1
1a5b0: f88d 304a strb.w r3, [sp, #74] ; 0x4a
lv_anim_start(&a);
1a5b4: a805 add r0, sp, #20
1a5b6: 4b10 ldr r3, [pc, #64] ; (1a5f8 <lv_label_refr_text+0x2f8>)
1a5b8: 4798 blx r3
lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y);
1a5ba: 4910 ldr r1, [pc, #64] ; (1a5fc <lv_label_refr_text+0x2fc>)
1a5bc: 4620 mov r0, r4
1a5be: 4b10 ldr r3, [pc, #64] ; (1a600 <lv_label_refr_text+0x300>)
1a5c0: 4798 blx r3
ext->offset.y = 0;
1a5c2: 2300 movs r3, #0
1a5c4: 81eb strh r3, [r5, #14]
1a5c6: e6ea b.n 1a39e <lv_label_refr_text+0x9e>
1a5c8: 00004d9d .word 0x00004d9d
1a5cc: 00019d89 .word 0x00019d89
1a5d0: 000046a1 .word 0x000046a1
1a5d4: 000044d5 .word 0x000044d5
1a5d8: 0001407d .word 0x0001407d
1a5dc: 00003321 .word 0x00003321
1a5e0: 000042a1 .word 0x000042a1
1a5e4: 000112e5 .word 0x000112e5
1a5e8: 00010061 .word 0x00010061
1a5ec: 00019d6d .word 0x00019d6d
1a5f0: 00011491 .word 0x00011491
1a5f4: 00011455 .word 0x00011455
1a5f8: 000113a1 .word 0x000113a1
1a5fc: 00019d51 .word 0x00019d51
1a600: 00011329 .word 0x00011329
int32_t act_time = anim_cur ? anim_cur->act_time : 0;
1a604: 2300 movs r3, #0
1a606: e7cb b.n 1a5a0 <lv_label_refr_text+0x2a0>
lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x);
1a608: 496e ldr r1, [pc, #440] ; (1a7c4 <lv_label_refr_text+0x4c4>)
1a60a: 4620 mov r0, r4
1a60c: 4b6e ldr r3, [pc, #440] ; (1a7c8 <lv_label_refr_text+0x4c8>)
1a60e: 4798 blx r3
ext->offset.x = 0;
1a610: 2300 movs r3, #0
1a612: 81ab strh r3, [r5, #12]
if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) {
1a614: f9bd 2056 ldrsh.w r2, [sp, #86] ; 0x56
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
1a618: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e
1a61c: 3301 adds r3, #1
1a61e: f8bd 105a ldrh.w r1, [sp, #90] ; 0x5a
1a622: 1a5b subs r3, r3, r1
1a624: b21b sxth r3, r3
1a626: 429a cmp r2, r3
1a628: ddc7 ble.n 1a5ba <lv_label_refr_text+0x2ba>
lv_anim_set_values(&a, 0, -size.y - (lv_font_get_line_height(font)));
1a62a: f8b8 3008 ldrh.w r3, [r8, #8]
1a62e: 441a add r2, r3
1a630: 4252 negs r2, r2
1a632: b212 sxth r2, r2
a->start = start;
1a634: 2100 movs r1, #0
1a636: 910b str r1, [sp, #44] ; 0x2c
a->end = end;
1a638: 920c str r2, [sp, #48] ; 0x30
a->exec_cb = exec_cb;
1a63a: 4e64 ldr r6, [pc, #400] ; (1a7cc <lv_label_refr_text+0x4cc>)
1a63c: 9606 str r6, [sp, #24]
lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end));
1a63e: 8968 ldrh r0, [r5, #10]
1a640: 4b63 ldr r3, [pc, #396] ; (1a7d0 <lv_label_refr_text+0x4d0>)
1a642: 4798 blx r3
a->time = duration;
1a644: 900d str r0, [sp, #52] ; 0x34
lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y);
1a646: 4631 mov r1, r6
1a648: 4620 mov r0, r4
1a64a: 4b62 ldr r3, [pc, #392] ; (1a7d4 <lv_label_refr_text+0x4d4>)
1a64c: 4798 blx r3
int32_t act_time = anim_cur ? anim_cur->act_time : 0;
1a64e: b170 cbz r0, 1a66e <lv_label_refr_text+0x36e>
1a650: 6a43 ldr r3, [r0, #36] ; 0x24
if(act_time < a.time) {
1a652: 9a0d ldr r2, [sp, #52] ; 0x34
1a654: 4293 cmp r3, r2
1a656: da06 bge.n 1a666 <lv_label_refr_text+0x366>
a.act_time = act_time; /*To keep the old position*/
1a658: 930e str r3, [sp, #56] ; 0x38
a.early_apply = 0;
1a65a: f89d 304a ldrb.w r3, [sp, #74] ; 0x4a
1a65e: f36f 0300 bfc r3, #0, #1
1a662: f88d 304a strb.w r3, [sp, #74] ; 0x4a
lv_anim_start(&a);
1a666: a805 add r0, sp, #20
1a668: 4b5b ldr r3, [pc, #364] ; (1a7d8 <lv_label_refr_text+0x4d8>)
1a66a: 4798 blx r3
if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) {
1a66c: e697 b.n 1a39e <lv_label_refr_text+0x9e>
int32_t act_time = anim_cur ? anim_cur->act_time : 0;
1a66e: 2300 movs r3, #0
1a670: e7ef b.n 1a652 <lv_label_refr_text+0x352>
1a672: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e
1a676: 3301 adds r3, #1
1a678: f8bd 205a ldrh.w r2, [sp, #90] ; 0x5a
1a67c: 1a9b subs r3, r3, r2
if(size.y <= lv_area_get_height(&txt_coords)) { /*No dots are required, the text is short enough*/
1a67e: f9bd 2056 ldrsh.w r2, [sp, #86] ; 0x56
1a682: b21b sxth r3, r3
1a684: 429a cmp r2, r3
1a686: dc03 bgt.n 1a690 <lv_label_refr_text+0x390>
ext->dot_end = LV_LABEL_DOT_END_INV;
1a688: f64f 73ff movw r3, #65535 ; 0xffff
1a68c: 812b strh r3, [r5, #8]
1a68e: e686 b.n 1a39e <lv_label_refr_text+0x9e>
else if(_lv_txt_get_encoded_length(ext->text) <= LV_LABEL_DOT_NUM) { /*Don't turn to dots all the characters*/
1a690: 4b52 ldr r3, [pc, #328] ; (1a7dc <lv_label_refr_text+0x4dc>)
1a692: 681b ldr r3, [r3, #0]
1a694: 6828 ldr r0, [r5, #0]
1a696: 4798 blx r3
1a698: 2803 cmp r0, #3
1a69a: d803 bhi.n 1a6a4 <lv_label_refr_text+0x3a4>
ext->dot_end = LV_LABEL_DOT_END_INV;
1a69c: f64f 73ff movw r3, #65535 ; 0xffff
1a6a0: 812b strh r3, [r5, #8]
1a6a2: e67c b.n 1a39e <lv_label_refr_text+0x9e>
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
1a6a4: f8bd 605c ldrh.w r6, [sp, #92] ; 0x5c
1a6a8: 3601 adds r6, #1
1a6aa: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58
1a6ae: 1af6 subs r6, r6, r3
1a6b0: b2b6 uxth r6, r6
(lv_font_get_glyph_width(font, '.', '.') + letter_space) *
1a6b2: 222e movs r2, #46 ; 0x2e
1a6b4: 4611 mov r1, r2
1a6b6: 4640 mov r0, r8
1a6b8: 4b49 ldr r3, [pc, #292] ; (1a7e0 <lv_label_refr_text+0x4e0>)
1a6ba: 4798 blx r3
1a6bc: 4438 add r0, r7
p.x = lv_area_get_width(&txt_coords) -
1a6be: ebc0 3380 rsb r3, r0, r0, lsl #14
1a6c2: eb00 0083 add.w r0, r0, r3, lsl #2
1a6c6: 4430 add r0, r6
1a6c8: f8ad 0010 strh.w r0, [sp, #16]
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
1a6cc: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e
1a6d0: 3301 adds r3, #1
1a6d2: f8bd 205a ldrh.w r2, [sp, #90] ; 0x5a
1a6d6: 1a9b subs r3, r3, r2
1a6d8: b29b uxth r3, r3
p.y -= p.y %
1a6da: b218 sxth r0, r3
(lv_font_get_line_height(font) + line_space); /*Round down to the last line*/
1a6dc: f9b8 2008 ldrsh.w r2, [r8, #8]
1a6e0: 444a add r2, r9
p.y -= p.y %
1a6e2: fb90 f1f2 sdiv r1, r0, r2
1a6e6: fb02 0211 mls r2, r2, r1, r0
1a6ea: 1a9b subs r3, r3, r2
p.y -= line_space; /*Trim the last line space*/
1a6ec: eba3 0909 sub.w r9, r3, r9
1a6f0: f8ad 9012 strh.w r9, [sp, #18]
uint32_t letter_id = lv_label_get_letter_on(label, &p);
1a6f4: a904 add r1, sp, #16
1a6f6: 4620 mov r0, r4
1a6f8: 4b3a ldr r3, [pc, #232] ; (1a7e4 <lv_label_refr_text+0x4e4>)
1a6fa: 4798 blx r3
1a6fc: 4680 mov r8, r0
1a6fe: 4607 mov r7, r0
size_t txt_len = strlen(ext->text);
1a700: 682e ldr r6, [r5, #0]
1a702: 4630 mov r0, r6
1a704: 4b38 ldr r3, [pc, #224] ; (1a7e8 <lv_label_refr_text+0x4e8>)
1a706: 4798 blx r3
1a708: 4681 mov r9, r0
uint32_t byte_id = _lv_txt_encoded_get_byte_id(ext->text, letter_id);
1a70a: 4b38 ldr r3, [pc, #224] ; (1a7ec <lv_label_refr_text+0x4ec>)
1a70c: 681b ldr r3, [r3, #0]
1a70e: 4641 mov r1, r8
1a710: 4630 mov r0, r6
1a712: 4798 blx r3
1a714: 4606 mov r6, r0
1a716: 9005 str r0, [sp, #20]
while(byte_id + LV_LABEL_DOT_NUM > txt_len) {
1a718: f100 0803 add.w r8, r0, #3
1a71c: 45c1 cmp r9, r8
1a71e: d20e bcs.n 1a73e <lv_label_refr_text+0x43e>
byte_id -= _lv_txt_encoded_size(&ext->text[byte_id]);
1a720: f8df a0dc ldr.w sl, [pc, #220] ; 1a800 <lv_label_refr_text+0x500>
1a724: 6828 ldr r0, [r5, #0]
1a726: 4430 add r0, r6
1a728: f8da 3000 ldr.w r3, [sl]
1a72c: 4798 blx r3
1a72e: 9e05 ldr r6, [sp, #20]
1a730: 1a36 subs r6, r6, r0
1a732: 9605 str r6, [sp, #20]
letter_id--;
1a734: 3f01 subs r7, #1
while(byte_id + LV_LABEL_DOT_NUM > txt_len) {
1a736: f106 0803 add.w r8, r6, #3
1a73a: 45c1 cmp r9, r8
1a73c: d3f2 bcc.n 1a724 <lv_label_refr_text+0x424>
int32_t act_time = anim_cur ? anim_cur->act_time : 0;
1a73e: f04f 0a04 mov.w sl, #4
1a742: f04f 0900 mov.w r9, #0
len += _lv_txt_encoded_size(&ext->text[byte_id]);
1a746: f8df b0b8 ldr.w fp, [pc, #184] ; 1a800 <lv_label_refr_text+0x500>
1a74a: 6828 ldr r0, [r5, #0]
1a74c: 9b05 ldr r3, [sp, #20]
1a74e: 4418 add r0, r3
1a750: f8db 3000 ldr.w r3, [fp]
1a754: 4798 blx r3
1a756: 4481 add r9, r0
1a758: fa5f f989 uxtb.w r9, r9
_lv_txt_encoded_next(ext->text, &byte_id);
1a75c: a905 add r1, sp, #20
1a75e: 6828 ldr r0, [r5, #0]
1a760: 4b23 ldr r3, [pc, #140] ; (1a7f0 <lv_label_refr_text+0x4f0>)
1a762: 681b ldr r3, [r3, #0]
1a764: 4798 blx r3
for(i = 0; i <= LV_LABEL_DOT_NUM; i++) {
1a766: f1ba 0a01 subs.w sl, sl, #1
1a76a: d1ee bne.n 1a74a <lv_label_refr_text+0x44a>
if(lv_label_set_dot_tmp(label, &ext->text[byte_id_ori], len)) {
1a76c: 6829 ldr r1, [r5, #0]
1a76e: 464a mov r2, r9
1a770: 4431 add r1, r6
1a772: 4620 mov r0, r4
1a774: 4b1f ldr r3, [pc, #124] ; (1a7f4 <lv_label_refr_text+0x4f4>)
1a776: 4798 blx r3
1a778: 2800 cmp r0, #0
1a77a: f43f ae10 beq.w 1a39e <lv_label_refr_text+0x9e>
1a77e: 1cf1 adds r1, r6, #3
ext->text[byte_id_ori + i] = '.';
1a780: 222e movs r2, #46 ; 0x2e
1a782: 682b ldr r3, [r5, #0]
1a784: 559a strb r2, [r3, r6]
1a786: 3601 adds r6, #1
for(i = 0; i < LV_LABEL_DOT_NUM; i++) {
1a788: 428e cmp r6, r1
1a78a: d1fa bne.n 1a782 <lv_label_refr_text+0x482>
ext->text[byte_id_ori + LV_LABEL_DOT_NUM] = '\0';
1a78c: 682b ldr r3, [r5, #0]
1a78e: 2200 movs r2, #0
1a790: f803 2008 strb.w r2, [r3, r8]
ext->dot_end = letter_id + LV_LABEL_DOT_NUM;
1a794: 3703 adds r7, #3
1a796: 812f strh r7, [r5, #8]
1a798: e601 b.n 1a39e <lv_label_refr_text+0x9e>
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar)
1a79a: 2210 movs r2, #16
1a79c: 2100 movs r1, #0
1a79e: 4620 mov r0, r4
1a7a0: 4e15 ldr r6, [pc, #84] ; (1a7f8 <lv_label_refr_text+0x4f8>)
1a7a2: 47b0 blx r6
1a7a4: 4605 mov r5, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar)
1a7a6: 2211 movs r2, #17
1a7a8: 2100 movs r1, #0
1a7aa: 4620 mov r0, r4
1a7ac: 47b0 blx r6
size.y += lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN);
1a7ae: 1829 adds r1, r5, r0
1a7b0: f8bd 0056 ldrh.w r0, [sp, #86] ; 0x56
1a7b4: 4401 add r1, r0
1a7b6: b209 sxth r1, r1
1a7b8: f8ad 1056 strh.w r1, [sp, #86] ; 0x56
lv_obj_set_height(label, size.y);
1a7bc: 4620 mov r0, r4
1a7be: 4b0f ldr r3, [pc, #60] ; (1a7fc <lv_label_refr_text+0x4fc>)
1a7c0: 4798 blx r3
1a7c2: e5ec b.n 1a39e <lv_label_refr_text+0x9e>
1a7c4: 00019d6d .word 0x00019d6d
1a7c8: 00011329 .word 0x00011329
1a7cc: 00019d51 .word 0x00019d51
1a7d0: 00011491 .word 0x00011491
1a7d4: 00011455 .word 0x00011455
1a7d8: 000113a1 .word 0x000113a1
1a7dc: 20000060 .word 0x20000060
1a7e0: 00010061 .word 0x00010061
1a7e4: 0001a031 .word 0x0001a031
1a7e8: 0001b51f .word 0x0001b51f
1a7ec: 2000005c .word 0x2000005c
1a7f0: 20000058 .word 0x20000058
1a7f4: 00019de5 .word 0x00019de5
1a7f8: 000044d5 .word 0x000044d5
1a7fc: 000043b5 .word 0x000043b5
1a800: 20000054 .word 0x20000054
0001a804 <lv_label_set_text>:
{
1a804: b5f0 push {r4, r5, r6, r7, lr}
1a806: b083 sub sp, #12
1a808: 4606 mov r6, r0
1a80a: 460d mov r5, r1
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
1a80c: 4b40 ldr r3, [pc, #256] ; (1a910 <lv_label_set_text+0x10c>)
1a80e: 4798 blx r3
1a810: b960 cbnz r0, 1a82c <lv_label_set_text+0x28>
1a812: 4b40 ldr r3, [pc, #256] ; (1a914 <lv_label_set_text+0x110>)
1a814: 9300 str r3, [sp, #0]
1a816: 22b8 movs r2, #184 ; 0xb8
1a818: 493f ldr r1, [pc, #252] ; (1a918 <lv_label_set_text+0x114>)
1a81a: 2003 movs r0, #3
1a81c: 4c3f ldr r4, [pc, #252] ; (1a91c <lv_label_set_text+0x118>)
1a81e: 47a0 blx r4
1a820: 4632 mov r2, r6
1a822: 2300 movs r3, #0
1a824: 483e ldr r0, [pc, #248] ; (1a920 <lv_label_set_text+0x11c>)
1a826: 493f ldr r1, [pc, #252] ; (1a924 <lv_label_set_text+0x120>)
1a828: 4788 blx r1
1a82a: e7fe b.n 1a82a <lv_label_set_text+0x26>
lv_obj_invalidate(label);
1a82c: 4630 mov r0, r6
1a82e: 4b3e ldr r3, [pc, #248] ; (1a928 <lv_label_set_text+0x124>)
1a830: 4798 blx r3
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
1a832: 4630 mov r0, r6
1a834: 4b3d ldr r3, [pc, #244] ; (1a92c <lv_label_set_text+0x128>)
1a836: 4798 blx r3
1a838: 4604 mov r4, r0
if(text == NULL) {
1a83a: b305 cbz r5, 1a87e <lv_label_set_text+0x7a>
LV_ASSERT_STR(text);
1a83c: 4628 mov r0, r5
1a83e: 4b34 ldr r3, [pc, #208] ; (1a910 <lv_label_set_text+0x10c>)
1a840: 4798 blx r3
1a842: b308 cbz r0, 1a888 <lv_label_set_text+0x84>
if(ext->text == text && ext->static_txt == 0) {
1a844: 6827 ldr r7, [r4, #0]
1a846: 42bd cmp r5, r7
1a848: d02b beq.n 1a8a2 <lv_label_set_text+0x9e>
if(ext->text != NULL && ext->static_txt == 0) {
1a84a: b11f cbz r7, 1a854 <lv_label_set_text+0x50>
1a84c: 7c23 ldrb r3, [r4, #16]
1a84e: f013 0f08 tst.w r3, #8
1a852: d049 beq.n 1a8e8 <lv_label_set_text+0xe4>
size_t len = strlen(text) + 1;
1a854: 4628 mov r0, r5
1a856: 4b36 ldr r3, [pc, #216] ; (1a930 <lv_label_set_text+0x12c>)
1a858: 4798 blx r3
ext->text = lv_mem_alloc(len);
1a85a: 3001 adds r0, #1
1a85c: 4b35 ldr r3, [pc, #212] ; (1a934 <lv_label_set_text+0x130>)
1a85e: 4798 blx r3
1a860: 6020 str r0, [r4, #0]
LV_ASSERT_MEM(ext->text);
1a862: 4b2b ldr r3, [pc, #172] ; (1a910 <lv_label_set_text+0x10c>)
1a864: 4798 blx r3
1a866: 2800 cmp r0, #0
1a868: d044 beq.n 1a8f4 <lv_label_set_text+0xf0>
if(ext->text == NULL) return;
1a86a: 6820 ldr r0, [r4, #0]
1a86c: b150 cbz r0, 1a884 <lv_label_set_text+0x80>
strcpy(ext->text, text);
1a86e: 4629 mov r1, r5
1a870: 4b31 ldr r3, [pc, #196] ; (1a938 <lv_label_set_text+0x134>)
1a872: 4798 blx r3
ext->static_txt = 0;
1a874: 7c23 ldrb r3, [r4, #16]
1a876: f36f 03c3 bfc r3, #3, #1
1a87a: 7423 strb r3, [r4, #16]
1a87c: e030 b.n 1a8e0 <lv_label_set_text+0xdc>
lv_label_refr_text(label);
1a87e: 4630 mov r0, r6
1a880: 4b2e ldr r3, [pc, #184] ; (1a93c <lv_label_set_text+0x138>)
1a882: 4798 blx r3
}
1a884: b003 add sp, #12
1a886: bdf0 pop {r4, r5, r6, r7, pc}
LV_ASSERT_STR(text);
1a888: 4b22 ldr r3, [pc, #136] ; (1a914 <lv_label_set_text+0x110>)
1a88a: 9300 str r3, [sp, #0]
1a88c: 22c4 movs r2, #196 ; 0xc4
1a88e: 4922 ldr r1, [pc, #136] ; (1a918 <lv_label_set_text+0x114>)
1a890: 2003 movs r0, #3
1a892: 4c22 ldr r4, [pc, #136] ; (1a91c <lv_label_set_text+0x118>)
1a894: 47a0 blx r4
1a896: 462a mov r2, r5
1a898: 2300 movs r3, #0
1a89a: 4821 ldr r0, [pc, #132] ; (1a920 <lv_label_set_text+0x11c>)
1a89c: 4921 ldr r1, [pc, #132] ; (1a924 <lv_label_set_text+0x120>)
1a89e: 4788 blx r1
1a8a0: e7fe b.n 1a8a0 <lv_label_set_text+0x9c>
if(ext->text == text && ext->static_txt == 0) {
1a8a2: 7c23 ldrb r3, [r4, #16]
1a8a4: f013 0f08 tst.w r3, #8
1a8a8: d1d4 bne.n 1a854 <lv_label_set_text+0x50>
ext->text = lv_mem_realloc(ext->text, strlen(ext->text) + 1);
1a8aa: 4638 mov r0, r7
1a8ac: 4b20 ldr r3, [pc, #128] ; (1a930 <lv_label_set_text+0x12c>)
1a8ae: 4798 blx r3
1a8b0: 1c41 adds r1, r0, #1
1a8b2: 4638 mov r0, r7
1a8b4: 4b22 ldr r3, [pc, #136] ; (1a940 <lv_label_set_text+0x13c>)
1a8b6: 4798 blx r3
1a8b8: 6020 str r0, [r4, #0]
LV_ASSERT_MEM(ext->text);
1a8ba: 4b15 ldr r3, [pc, #84] ; (1a910 <lv_label_set_text+0x10c>)
1a8bc: 4798 blx r3
1a8be: b960 cbnz r0, 1a8da <lv_label_set_text+0xd6>
1a8c0: 4b14 ldr r3, [pc, #80] ; (1a914 <lv_label_set_text+0x110>)
1a8c2: 9300 str r3, [sp, #0]
1a8c4: 22d5 movs r2, #213 ; 0xd5
1a8c6: 4914 ldr r1, [pc, #80] ; (1a918 <lv_label_set_text+0x114>)
1a8c8: 2003 movs r0, #3
1a8ca: 4d14 ldr r5, [pc, #80] ; (1a91c <lv_label_set_text+0x118>)
1a8cc: 47a8 blx r5
1a8ce: 6822 ldr r2, [r4, #0]
1a8d0: 2300 movs r3, #0
1a8d2: 481c ldr r0, [pc, #112] ; (1a944 <lv_label_set_text+0x140>)
1a8d4: 4913 ldr r1, [pc, #76] ; (1a924 <lv_label_set_text+0x120>)
1a8d6: 4788 blx r1
1a8d8: e7fe b.n 1a8d8 <lv_label_set_text+0xd4>
if(ext->text == NULL) return;
1a8da: 6823 ldr r3, [r4, #0]
1a8dc: 2b00 cmp r3, #0
1a8de: d0d1 beq.n 1a884 <lv_label_set_text+0x80>
lv_label_refr_text(label);
1a8e0: 4630 mov r0, r6
1a8e2: 4b16 ldr r3, [pc, #88] ; (1a93c <lv_label_set_text+0x138>)
1a8e4: 4798 blx r3
1a8e6: e7cd b.n 1a884 <lv_label_set_text+0x80>
lv_mem_free(ext->text);
1a8e8: 4638 mov r0, r7
1a8ea: 4b17 ldr r3, [pc, #92] ; (1a948 <lv_label_set_text+0x144>)
1a8ec: 4798 blx r3
ext->text = NULL;
1a8ee: 2300 movs r3, #0
1a8f0: 6023 str r3, [r4, #0]
1a8f2: e7af b.n 1a854 <lv_label_set_text+0x50>
LV_ASSERT_MEM(ext->text);
1a8f4: 4b07 ldr r3, [pc, #28] ; (1a914 <lv_label_set_text+0x110>)
1a8f6: 9300 str r3, [sp, #0]
1a8f8: 22ee movs r2, #238 ; 0xee
1a8fa: 4907 ldr r1, [pc, #28] ; (1a918 <lv_label_set_text+0x114>)
1a8fc: 2003 movs r0, #3
1a8fe: 4d07 ldr r5, [pc, #28] ; (1a91c <lv_label_set_text+0x118>)
1a900: 47a8 blx r5
1a902: 6822 ldr r2, [r4, #0]
1a904: 2300 movs r3, #0
1a906: 480f ldr r0, [pc, #60] ; (1a944 <lv_label_set_text+0x140>)
1a908: 4906 ldr r1, [pc, #24] ; (1a924 <lv_label_set_text+0x120>)
1a90a: 4788 blx r1
1a90c: e7fe b.n 1a90c <lv_label_set_text+0x108>
1a90e: bf00 nop
1a910: 000022b1 .word 0x000022b1
1a914: 00029878 .word 0x00029878
1a918: 00029994 .word 0x00029994
1a91c: 0001225d .word 0x0001225d
1a920: 0002483c .word 0x0002483c
1a924: 000022b9 .word 0x000022b9
1a928: 00003321 .word 0x00003321
1a92c: 00004d9d .word 0x00004d9d
1a930: 0001b51f .word 0x0001b51f
1a934: 000123dd .word 0x000123dd
1a938: 0001b50f .word 0x0001b50f
1a93c: 0001a301 .word 0x0001a301
1a940: 00012899 .word 0x00012899
1a944: 00023fd8 .word 0x00023fd8
1a948: 000124c5 .word 0x000124c5
0001a94c <lv_label_set_text_static>:
{
1a94c: b570 push {r4, r5, r6, lr}
1a94e: b082 sub sp, #8
1a950: 4605 mov r5, r0
1a952: 460e mov r6, r1
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
1a954: 4b14 ldr r3, [pc, #80] ; (1a9a8 <lv_label_set_text_static+0x5c>)
1a956: 4798 blx r3
1a958: b968 cbnz r0, 1a976 <lv_label_set_text_static+0x2a>
1a95a: 4b14 ldr r3, [pc, #80] ; (1a9ac <lv_label_set_text_static+0x60>)
1a95c: 9300 str r3, [sp, #0]
1a95e: f44f 72a6 mov.w r2, #332 ; 0x14c
1a962: 4913 ldr r1, [pc, #76] ; (1a9b0 <lv_label_set_text_static+0x64>)
1a964: 2003 movs r0, #3
1a966: 4c13 ldr r4, [pc, #76] ; (1a9b4 <lv_label_set_text_static+0x68>)
1a968: 47a0 blx r4
1a96a: 462a mov r2, r5
1a96c: 2300 movs r3, #0
1a96e: 4812 ldr r0, [pc, #72] ; (1a9b8 <lv_label_set_text_static+0x6c>)
1a970: 4912 ldr r1, [pc, #72] ; (1a9bc <lv_label_set_text_static+0x70>)
1a972: 4788 blx r1
1a974: e7fe b.n 1a974 <lv_label_set_text_static+0x28>
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
1a976: 4628 mov r0, r5
1a978: 4b11 ldr r3, [pc, #68] ; (1a9c0 <lv_label_set_text_static+0x74>)
1a97a: 4798 blx r3
1a97c: 4604 mov r4, r0
if(ext->static_txt == 0 && ext->text != NULL) {
1a97e: 7c03 ldrb r3, [r0, #16]
1a980: f013 0f08 tst.w r3, #8
1a984: d105 bne.n 1a992 <lv_label_set_text_static+0x46>
1a986: 6800 ldr r0, [r0, #0]
1a988: b118 cbz r0, 1a992 <lv_label_set_text_static+0x46>
lv_mem_free(ext->text);
1a98a: 4b0e ldr r3, [pc, #56] ; (1a9c4 <lv_label_set_text_static+0x78>)
1a98c: 4798 blx r3
ext->text = NULL;
1a98e: 2300 movs r3, #0
1a990: 6023 str r3, [r4, #0]
if(text != NULL) {
1a992: b126 cbz r6, 1a99e <lv_label_set_text_static+0x52>
ext->static_txt = 1;
1a994: 7c23 ldrb r3, [r4, #16]
1a996: f043 0308 orr.w r3, r3, #8
1a99a: 7423 strb r3, [r4, #16]
ext->text = (char *)text;
1a99c: 6026 str r6, [r4, #0]
lv_label_refr_text(label);
1a99e: 4628 mov r0, r5
1a9a0: 4b09 ldr r3, [pc, #36] ; (1a9c8 <lv_label_set_text_static+0x7c>)
1a9a2: 4798 blx r3
}
1a9a4: b002 add sp, #8
1a9a6: bd70 pop {r4, r5, r6, pc}
1a9a8: 000022b1 .word 0x000022b1
1a9ac: 000298a4 .word 0x000298a4
1a9b0: 00029994 .word 0x00029994
1a9b4: 0001225d .word 0x0001225d
1a9b8: 0002483c .word 0x0002483c
1a9bc: 000022b9 .word 0x000022b9
1a9c0: 00004d9d .word 0x00004d9d
1a9c4: 000124c5 .word 0x000124c5
1a9c8: 0001a301 .word 0x0001a301
0001a9cc <lv_label_set_long_mode>:
{
1a9cc: b5f0 push {r4, r5, r6, r7, lr}
1a9ce: b083 sub sp, #12
1a9d0: 4605 mov r5, r0
1a9d2: 460f mov r7, r1
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
1a9d4: 4b22 ldr r3, [pc, #136] ; (1aa60 <lv_label_set_long_mode+0x94>)
1a9d6: 4798 blx r3
1a9d8: b968 cbnz r0, 1a9f6 <lv_label_set_long_mode+0x2a>
1a9da: 4b22 ldr r3, [pc, #136] ; (1aa64 <lv_label_set_long_mode+0x98>)
1a9dc: 9300 str r3, [sp, #0]
1a9de: f240 1265 movw r2, #357 ; 0x165
1a9e2: 4921 ldr r1, [pc, #132] ; (1aa68 <lv_label_set_long_mode+0x9c>)
1a9e4: 2003 movs r0, #3
1a9e6: 4c21 ldr r4, [pc, #132] ; (1aa6c <lv_label_set_long_mode+0xa0>)
1a9e8: 47a0 blx r4
1a9ea: 462a mov r2, r5
1a9ec: 2300 movs r3, #0
1a9ee: 4820 ldr r0, [pc, #128] ; (1aa70 <lv_label_set_long_mode+0xa4>)
1a9f0: 4920 ldr r1, [pc, #128] ; (1aa74 <lv_label_set_long_mode+0xa8>)
1a9f2: 4788 blx r1
1a9f4: e7fe b.n 1a9f4 <lv_label_set_long_mode+0x28>
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
1a9f6: 4628 mov r0, r5
1a9f8: 4b1f ldr r3, [pc, #124] ; (1aa78 <lv_label_set_long_mode+0xac>)
1a9fa: 4798 blx r3
1a9fc: 4604 mov r4, r0
lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_x);
1a9fe: 491f ldr r1, [pc, #124] ; (1aa7c <lv_label_set_long_mode+0xb0>)
1aa00: 4628 mov r0, r5
1aa02: 4e1f ldr r6, [pc, #124] ; (1aa80 <lv_label_set_long_mode+0xb4>)
1aa04: 47b0 blx r6
lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_y);
1aa06: 491f ldr r1, [pc, #124] ; (1aa84 <lv_label_set_long_mode+0xb8>)
1aa08: 4628 mov r0, r5
1aa0a: 47b0 blx r6
lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x);
1aa0c: 491e ldr r1, [pc, #120] ; (1aa88 <lv_label_set_long_mode+0xbc>)
1aa0e: 4628 mov r0, r5
1aa10: 47b0 blx r6
lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y);
1aa12: 491e ldr r1, [pc, #120] ; (1aa8c <lv_label_set_long_mode+0xc0>)
1aa14: 4628 mov r0, r5
1aa16: 47b0 blx r6
ext->offset.x = 0;
1aa18: 2300 movs r3, #0
1aa1a: 81a3 strh r3, [r4, #12]
ext->offset.y = 0;
1aa1c: 81e3 strh r3, [r4, #14]
if(long_mode == LV_LABEL_LONG_SROLL || long_mode == LV_LABEL_LONG_SROLL_CIRC || long_mode == LV_LABEL_LONG_CROP)
1aa1e: 1efb subs r3, r7, #3
1aa20: b2db uxtb r3, r3
1aa22: 2b02 cmp r3, #2
ext->expand = 1;
1aa24: 7c23 ldrb r3, [r4, #16]
1aa26: bf94 ite ls
1aa28: f043 0380 orrls.w r3, r3, #128 ; 0x80
ext->expand = 0;
1aa2c: f36f 13c7 bfchi r3, #7, #1
1aa30: 7423 strb r3, [r4, #16]
if(ext->long_mode == LV_LABEL_LONG_DOT && ext->dot_end != LV_LABEL_DOT_END_INV) {
1aa32: 7c23 ldrb r3, [r4, #16]
1aa34: f003 0307 and.w r3, r3, #7
1aa38: 2b02 cmp r3, #2
1aa3a: d008 beq.n 1aa4e <lv_label_set_long_mode+0x82>
ext->long_mode = long_mode;
1aa3c: 7c23 ldrb r3, [r4, #16]
1aa3e: f367 0302 bfi r3, r7, #0, #3
1aa42: 7423 strb r3, [r4, #16]
lv_label_refr_text(label);
1aa44: 4628 mov r0, r5
1aa46: 4b12 ldr r3, [pc, #72] ; (1aa90 <lv_label_set_long_mode+0xc4>)
1aa48: 4798 blx r3
}
1aa4a: b003 add sp, #12
1aa4c: bdf0 pop {r4, r5, r6, r7, pc}
if(ext->long_mode == LV_LABEL_LONG_DOT && ext->dot_end != LV_LABEL_DOT_END_INV) {
1aa4e: 8922 ldrh r2, [r4, #8]
1aa50: f64f 73ff movw r3, #65535 ; 0xffff
1aa54: 429a cmp r2, r3
1aa56: d0f1 beq.n 1aa3c <lv_label_set_long_mode+0x70>
lv_label_revert_dots(label);
1aa58: 4628 mov r0, r5
1aa5a: 4b0e ldr r3, [pc, #56] ; (1aa94 <lv_label_set_long_mode+0xc8>)
1aa5c: 4798 blx r3
1aa5e: e7ed b.n 1aa3c <lv_label_set_long_mode+0x70>
1aa60: 000022b1 .word 0x000022b1
1aa64: 000298c0 .word 0x000298c0
1aa68: 00029994 .word 0x00029994
1aa6c: 0001225d .word 0x0001225d
1aa70: 0002483c .word 0x0002483c
1aa74: 000022b9 .word 0x000022b9
1aa78: 00004d9d .word 0x00004d9d
1aa7c: 00003529 .word 0x00003529
1aa80: 00011329 .word 0x00011329
1aa84: 00003589 .word 0x00003589
1aa88: 00019d6d .word 0x00019d6d
1aa8c: 00019d51 .word 0x00019d51
1aa90: 0001a301 .word 0x0001a301
1aa94: 00019cc5 .word 0x00019cc5
0001aa98 <lv_label_set_recolor>:
{
1aa98: b530 push {r4, r5, lr}
1aa9a: b083 sub sp, #12
1aa9c: 4604 mov r4, r0
1aa9e: 460d mov r5, r1
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
1aaa0: 4b10 ldr r3, [pc, #64] ; (1aae4 <lv_label_set_recolor+0x4c>)
1aaa2: 4798 blx r3
1aaa4: b968 cbnz r0, 1aac2 <lv_label_set_recolor+0x2a>
1aaa6: 4b10 ldr r3, [pc, #64] ; (1aae8 <lv_label_set_recolor+0x50>)
1aaa8: 9300 str r3, [sp, #0]
1aaaa: f44f 72cd mov.w r2, #410 ; 0x19a
1aaae: 490f ldr r1, [pc, #60] ; (1aaec <lv_label_set_recolor+0x54>)
1aab0: 2003 movs r0, #3
1aab2: 4d0f ldr r5, [pc, #60] ; (1aaf0 <lv_label_set_recolor+0x58>)
1aab4: 47a8 blx r5
1aab6: 4622 mov r2, r4
1aab8: 2300 movs r3, #0
1aaba: 480e ldr r0, [pc, #56] ; (1aaf4 <lv_label_set_recolor+0x5c>)
1aabc: 490e ldr r1, [pc, #56] ; (1aaf8 <lv_label_set_recolor+0x60>)
1aabe: 4788 blx r1
1aac0: e7fe b.n 1aac0 <lv_label_set_recolor+0x28>
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
1aac2: 4620 mov r0, r4
1aac4: 4b0d ldr r3, [pc, #52] ; (1aafc <lv_label_set_recolor+0x64>)
1aac6: 4798 blx r3
if(ext->recolor == en) return;
1aac8: 7c03 ldrb r3, [r0, #16]
1aaca: f3c3 1380 ubfx r3, r3, #6, #1
1aace: 42ab cmp r3, r5
1aad0: d006 beq.n 1aae0 <lv_label_set_recolor+0x48>
ext->recolor = en == false ? 0 : 1;
1aad2: 7c03 ldrb r3, [r0, #16]
1aad4: f365 1386 bfi r3, r5, #6, #1
1aad8: 7403 strb r3, [r0, #16]
lv_label_refr_text(label); /*Refresh the text because the potential colo codes in text needs to
1aada: 4620 mov r0, r4
1aadc: 4b08 ldr r3, [pc, #32] ; (1ab00 <lv_label_set_recolor+0x68>)
1aade: 4798 blx r3
}
1aae0: b003 add sp, #12
1aae2: bd30 pop {r4, r5, pc}
1aae4: 000022b1 .word 0x000022b1
1aae8: 000298d8 .word 0x000298d8
1aaec: 00029994 .word 0x00029994
1aaf0: 0001225d .word 0x0001225d
1aaf4: 0002483c .word 0x0002483c
1aaf8: 000022b9 .word 0x000022b9
1aafc: 00004d9d .word 0x00004d9d
1ab00: 0001a301 .word 0x0001a301
0001ab04 <lv_label_create>:
{
1ab04: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
1ab08: b082 sub sp, #8
1ab0a: 460f mov r7, r1
lv_obj_t * new_label = lv_obj_create(par, copy);
1ab0c: 4b79 ldr r3, [pc, #484] ; (1acf4 <lv_label_create+0x1f0>)
1ab0e: 4798 blx r3
1ab10: 4604 mov r4, r0
LV_ASSERT_MEM(new_label);
1ab12: 4b79 ldr r3, [pc, #484] ; (1acf8 <lv_label_create+0x1f4>)
1ab14: 4798 blx r3
1ab16: b1e8 cbz r0, 1ab54 <lv_label_create+0x50>
if(new_label == NULL) return NULL;
1ab18: 2c00 cmp r4, #0
1ab1a: f000 809a beq.w 1ac52 <lv_label_create+0x14e>
if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(new_label);
1ab1e: 4b77 ldr r3, [pc, #476] ; (1acfc <lv_label_create+0x1f8>)
1ab20: 681b ldr r3, [r3, #0]
1ab22: b323 cbz r3, 1ab6e <lv_label_create+0x6a>
lv_obj_allocate_ext_attr(new_label, sizeof(lv_label_ext_t));
1ab24: 2114 movs r1, #20
1ab26: 4620 mov r0, r4
1ab28: 4b75 ldr r3, [pc, #468] ; (1ad00 <lv_label_create+0x1fc>)
1ab2a: 4798 blx r3
lv_label_ext_t * ext = lv_obj_get_ext_attr(new_label);
1ab2c: 4620 mov r0, r4
1ab2e: 4b75 ldr r3, [pc, #468] ; (1ad04 <lv_label_create+0x200>)
1ab30: 4798 blx r3
1ab32: 4605 mov r5, r0
LV_ASSERT_MEM(ext);
1ab34: 4b70 ldr r3, [pc, #448] ; (1acf8 <lv_label_create+0x1f4>)
1ab36: 4798 blx r3
1ab38: b9f8 cbnz r0, 1ab7a <lv_label_create+0x76>
1ab3a: 4b73 ldr r3, [pc, #460] ; (1ad08 <lv_label_create+0x204>)
1ab3c: 9300 str r3, [sp, #0]
1ab3e: 225d movs r2, #93 ; 0x5d
1ab40: 4972 ldr r1, [pc, #456] ; (1ad0c <lv_label_create+0x208>)
1ab42: 2003 movs r0, #3
1ab44: 4c72 ldr r4, [pc, #456] ; (1ad10 <lv_label_create+0x20c>)
1ab46: 47a0 blx r4
1ab48: 462a mov r2, r5
1ab4a: 2300 movs r3, #0
1ab4c: 4871 ldr r0, [pc, #452] ; (1ad14 <lv_label_create+0x210>)
1ab4e: 4972 ldr r1, [pc, #456] ; (1ad18 <lv_label_create+0x214>)
1ab50: 4788 blx r1
1ab52: e7fe b.n 1ab52 <lv_label_create+0x4e>
LV_ASSERT_MEM(new_label);
1ab54: 4b6c ldr r3, [pc, #432] ; (1ad08 <lv_label_create+0x204>)
1ab56: 9300 str r3, [sp, #0]
1ab58: 2254 movs r2, #84 ; 0x54
1ab5a: 496c ldr r1, [pc, #432] ; (1ad0c <lv_label_create+0x208>)
1ab5c: 2003 movs r0, #3
1ab5e: 4d6c ldr r5, [pc, #432] ; (1ad10 <lv_label_create+0x20c>)
1ab60: 47a8 blx r5
1ab62: 4622 mov r2, r4
1ab64: 2300 movs r3, #0
1ab66: 486b ldr r0, [pc, #428] ; (1ad14 <lv_label_create+0x210>)
1ab68: 496b ldr r1, [pc, #428] ; (1ad18 <lv_label_create+0x214>)
1ab6a: 4788 blx r1
1ab6c: e7fe b.n 1ab6c <lv_label_create+0x68>
if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(new_label);
1ab6e: 4620 mov r0, r4
1ab70: 4b6a ldr r3, [pc, #424] ; (1ad1c <lv_label_create+0x218>)
1ab72: 4798 blx r3
1ab74: 4b61 ldr r3, [pc, #388] ; (1acfc <lv_label_create+0x1f8>)
1ab76: 6018 str r0, [r3, #0]
1ab78: e7d4 b.n 1ab24 <lv_label_create+0x20>
if(ext == NULL) {
1ab7a: 2d00 cmp r5, #0
1ab7c: d06d beq.n 1ac5a <lv_label_create+0x156>
ext->text = NULL;
1ab7e: 2300 movs r3, #0
1ab80: 602b str r3, [r5, #0]
ext->static_txt = 0;
1ab82: 7c2a ldrb r2, [r5, #16]
ext->align = LV_LABEL_ALIGN_AUTO;
1ab84: f002 02b7 and.w r2, r2, #183 ; 0xb7
ext->dot_end = LV_LABEL_DOT_END_INV;
1ab88: f64f 71ff movw r1, #65535 ; 0xffff
1ab8c: 8129 strh r1, [r5, #8]
ext->long_mode = LV_LABEL_LONG_EXPAND;
1ab8e: f042 0230 orr.w r2, r2, #48 ; 0x30
1ab92: f363 0202 bfi r2, r3, #0, #3
1ab96: 742a strb r2, [r5, #16]
ext->anim_speed = LV_LABEL_DEF_SCROLL_SPEED;
1ab98: 2219 movs r2, #25
1ab9a: 816a strh r2, [r5, #10]
ext->offset.x = 0;
1ab9c: 81ab strh r3, [r5, #12]
ext->offset.y = 0;
1ab9e: 81eb strh r3, [r5, #14]
ext->dot.tmp_ptr = NULL;
1aba0: 606b str r3, [r5, #4]
ext->dot_tmp_alloc = 0;
1aba2: 7c6a ldrb r2, [r5, #17]
1aba4: f363 0200 bfi r2, r3, #0, #1
1aba8: 746a strb r2, [r5, #17]
lv_obj_set_design_cb(new_label, lv_label_design);
1abaa: 495d ldr r1, [pc, #372] ; (1ad20 <lv_label_create+0x21c>)
1abac: 4620 mov r0, r4
1abae: 4b5d ldr r3, [pc, #372] ; (1ad24 <lv_label_create+0x220>)
1abb0: 4798 blx r3
lv_obj_set_signal_cb(new_label, lv_label_signal);
1abb2: 495d ldr r1, [pc, #372] ; (1ad28 <lv_label_create+0x224>)
1abb4: 4620 mov r0, r4
1abb6: 4b5d ldr r3, [pc, #372] ; (1ad2c <lv_label_create+0x228>)
1abb8: 4798 blx r3
if(copy == NULL) {
1abba: 2f00 cmp r7, #0
1abbc: d052 beq.n 1ac64 <lv_label_create+0x160>
lv_label_ext_t * copy_ext = lv_obj_get_ext_attr(copy);
1abbe: 4638 mov r0, r7
1abc0: 4b50 ldr r3, [pc, #320] ; (1ad04 <lv_label_create+0x200>)
1abc2: 4798 blx r3
1abc4: 4606 mov r6, r0
lv_label_set_long_mode(new_label, lv_label_get_long_mode(copy));
1abc6: 4638 mov r0, r7
1abc8: 4b59 ldr r3, [pc, #356] ; (1ad30 <lv_label_create+0x22c>)
1abca: 4798 blx r3
1abcc: 4601 mov r1, r0
1abce: 4620 mov r0, r4
1abd0: 4b58 ldr r3, [pc, #352] ; (1ad34 <lv_label_create+0x230>)
1abd2: 4798 blx r3
lv_label_set_recolor(new_label, lv_label_get_recolor(copy));
1abd4: 4638 mov r0, r7
1abd6: 4b58 ldr r3, [pc, #352] ; (1ad38 <lv_label_create+0x234>)
1abd8: 4798 blx r3
1abda: 4601 mov r1, r0
1abdc: 4620 mov r0, r4
1abde: 4b57 ldr r3, [pc, #348] ; (1ad3c <lv_label_create+0x238>)
1abe0: 4798 blx r3
lv_label_set_align(new_label, lv_label_get_align(copy));
1abe2: 4638 mov r0, r7
1abe4: 4b56 ldr r3, [pc, #344] ; (1ad40 <lv_label_create+0x23c>)
1abe6: 4798 blx r3
1abe8: 4601 mov r1, r0
1abea: 4620 mov r0, r4
1abec: 4b55 ldr r3, [pc, #340] ; (1ad44 <lv_label_create+0x240>)
1abee: 4798 blx r3
if(copy_ext->static_txt == 0)
1abf0: 7c33 ldrb r3, [r6, #16]
1abf2: f013 0f08 tst.w r3, #8
1abf6: d146 bne.n 1ac86 <lv_label_create+0x182>
lv_label_set_text(new_label, lv_label_get_text(copy));
1abf8: 4638 mov r0, r7
1abfa: 4b53 ldr r3, [pc, #332] ; (1ad48 <lv_label_create+0x244>)
1abfc: 4798 blx r3
1abfe: 4601 mov r1, r0
1ac00: 4620 mov r0, r4
1ac02: 4b52 ldr r3, [pc, #328] ; (1ad4c <lv_label_create+0x248>)
1ac04: 4798 blx r3
if(copy_ext->long_mode == LV_LABEL_LONG_DOT) {
1ac06: 7c33 ldrb r3, [r6, #16]
1ac08: f003 0307 and.w r3, r3, #7
1ac0c: 2b02 cmp r3, #2
1ac0e: d042 beq.n 1ac96 <lv_label_create+0x192>
if(copy_ext->dot_tmp_alloc && copy_ext->dot.tmp_ptr) {
1ac10: 7c73 ldrb r3, [r6, #17]
1ac12: f013 0f01 tst.w r3, #1
1ac16: d064 beq.n 1ace2 <lv_label_create+0x1de>
1ac18: 6870 ldr r0, [r6, #4]
1ac1a: 2800 cmp r0, #0
1ac1c: d061 beq.n 1ace2 <lv_label_create+0x1de>
uint16_t len = (uint16_t)strlen(copy_ext->dot.tmp_ptr);
1ac1e: 4b4c ldr r3, [pc, #304] ; (1ad50 <lv_label_create+0x24c>)
1ac20: 4798 blx r3
lv_label_set_dot_tmp(new_label, ext->dot.tmp_ptr, len);
1ac22: b282 uxth r2, r0
1ac24: 6869 ldr r1, [r5, #4]
1ac26: 4620 mov r0, r4
1ac28: 4b4a ldr r3, [pc, #296] ; (1ad54 <lv_label_create+0x250>)
1ac2a: 4798 blx r3
ext->dot_tmp_alloc = copy_ext->dot_tmp_alloc;
1ac2c: 7c72 ldrb r2, [r6, #17]
1ac2e: 7c6b ldrb r3, [r5, #17]
1ac30: f362 0300 bfi r3, r2, #0, #1
1ac34: 746b strb r3, [r5, #17]
ext->dot_end = copy_ext->dot_end;
1ac36: 8933 ldrh r3, [r6, #8]
1ac38: 812b strh r3, [r5, #8]
lv_obj_refresh_style(new_label, LV_STYLE_PROP_ALL);
1ac3a: 21ff movs r1, #255 ; 0xff
1ac3c: 4620 mov r0, r4
1ac3e: 4b46 ldr r3, [pc, #280] ; (1ad58 <lv_label_create+0x254>)
1ac40: 4798 blx r3
LV_LOG_INFO("label created");
1ac42: 4b46 ldr r3, [pc, #280] ; (1ad5c <lv_label_create+0x258>)
1ac44: 9300 str r3, [sp, #0]
1ac46: 4b30 ldr r3, [pc, #192] ; (1ad08 <lv_label_create+0x204>)
1ac48: 22a8 movs r2, #168 ; 0xa8
1ac4a: 4930 ldr r1, [pc, #192] ; (1ad0c <lv_label_create+0x208>)
1ac4c: 2001 movs r0, #1
1ac4e: 4d30 ldr r5, [pc, #192] ; (1ad10 <lv_label_create+0x20c>)
1ac50: 47a8 blx r5
}
1ac52: 4620 mov r0, r4
1ac54: b002 add sp, #8
1ac56: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
lv_obj_del(new_label);
1ac5a: 4620 mov r0, r4
1ac5c: 4b40 ldr r3, [pc, #256] ; (1ad60 <lv_label_create+0x25c>)
1ac5e: 4798 blx r3
return NULL;
1ac60: 2400 movs r4, #0
1ac62: e7f6 b.n 1ac52 <lv_label_create+0x14e>
lv_theme_apply(new_label, LV_THEME_LABEL);
1ac64: 2112 movs r1, #18
1ac66: 4620 mov r0, r4
1ac68: 4b3e ldr r3, [pc, #248] ; (1ad64 <lv_label_create+0x260>)
1ac6a: 4798 blx r3
lv_obj_set_click(new_label, false);
1ac6c: 2100 movs r1, #0
1ac6e: 4620 mov r0, r4
1ac70: 4b3d ldr r3, [pc, #244] ; (1ad68 <lv_label_create+0x264>)
1ac72: 4798 blx r3
lv_label_set_long_mode(new_label, LV_LABEL_LONG_EXPAND);
1ac74: 2100 movs r1, #0
1ac76: 4620 mov r0, r4
1ac78: 4b2e ldr r3, [pc, #184] ; (1ad34 <lv_label_create+0x230>)
1ac7a: 4798 blx r3
lv_label_set_text(new_label, "Text");
1ac7c: 493b ldr r1, [pc, #236] ; (1ad6c <lv_label_create+0x268>)
1ac7e: 4620 mov r0, r4
1ac80: 4b32 ldr r3, [pc, #200] ; (1ad4c <lv_label_create+0x248>)
1ac82: 4798 blx r3
1ac84: e7dd b.n 1ac42 <lv_label_create+0x13e>
lv_label_set_text_static(new_label, lv_label_get_text(copy));
1ac86: 4638 mov r0, r7
1ac88: 4b2f ldr r3, [pc, #188] ; (1ad48 <lv_label_create+0x244>)
1ac8a: 4798 blx r3
1ac8c: 4601 mov r1, r0
1ac8e: 4620 mov r0, r4
1ac90: 4b37 ldr r3, [pc, #220] ; (1ad70 <lv_label_create+0x26c>)
1ac92: 4798 blx r3
1ac94: e7b7 b.n 1ac06 <lv_label_create+0x102>
ext->text = lv_mem_realloc(ext->text, _lv_mem_get_size(copy_ext->text));
1ac96: 682f ldr r7, [r5, #0]
1ac98: 6830 ldr r0, [r6, #0]
1ac9a: 4b36 ldr r3, [pc, #216] ; (1ad74 <lv_label_create+0x270>)
1ac9c: 4798 blx r3
1ac9e: 4601 mov r1, r0
1aca0: 4638 mov r0, r7
1aca2: 4b35 ldr r3, [pc, #212] ; (1ad78 <lv_label_create+0x274>)
1aca4: 4798 blx r3
1aca6: 6028 str r0, [r5, #0]
LV_ASSERT_MEM(ext->text);
1aca8: 4b13 ldr r3, [pc, #76] ; (1acf8 <lv_label_create+0x1f4>)
1acaa: 4798 blx r3
1acac: b960 cbnz r0, 1acc8 <lv_label_create+0x1c4>
1acae: 4b16 ldr r3, [pc, #88] ; (1ad08 <lv_label_create+0x204>)
1acb0: 9300 str r3, [sp, #0]
1acb2: 2295 movs r2, #149 ; 0x95
1acb4: 4915 ldr r1, [pc, #84] ; (1ad0c <lv_label_create+0x208>)
1acb6: 2003 movs r0, #3
1acb8: 4c15 ldr r4, [pc, #84] ; (1ad10 <lv_label_create+0x20c>)
1acba: 47a0 blx r4
1acbc: 682a ldr r2, [r5, #0]
1acbe: 2300 movs r3, #0
1acc0: 4814 ldr r0, [pc, #80] ; (1ad14 <lv_label_create+0x210>)
1acc2: 4915 ldr r1, [pc, #84] ; (1ad18 <lv_label_create+0x214>)
1acc4: 4788 blx r1
1acc6: e7fe b.n 1acc6 <lv_label_create+0x1c2>
if(ext->text == NULL) return NULL;
1acc8: 682f ldr r7, [r5, #0]
1acca: b187 cbz r7, 1acee <lv_label_create+0x1ea>
_lv_memcpy(ext->text, copy_ext->text, _lv_mem_get_size(copy_ext->text));
1accc: f8d6 8000 ldr.w r8, [r6]
1acd0: 4640 mov r0, r8
1acd2: 4b28 ldr r3, [pc, #160] ; (1ad74 <lv_label_create+0x270>)
1acd4: 4798 blx r3
1acd6: 4602 mov r2, r0
1acd8: 4641 mov r1, r8
1acda: 4638 mov r0, r7
1acdc: 4b27 ldr r3, [pc, #156] ; (1ad7c <lv_label_create+0x278>)
1acde: 4798 blx r3
1ace0: e796 b.n 1ac10 <lv_label_create+0x10c>
_lv_memcpy(ext->dot.tmp, copy_ext->dot.tmp, sizeof(ext->dot.tmp));
1ace2: 2204 movs r2, #4
1ace4: 18b1 adds r1, r6, r2
1ace6: 18a8 adds r0, r5, r2
1ace8: 4b24 ldr r3, [pc, #144] ; (1ad7c <lv_label_create+0x278>)
1acea: 4798 blx r3
1acec: e79e b.n 1ac2c <lv_label_create+0x128>
if(ext->text == NULL) return NULL;
1acee: 2400 movs r4, #0
1acf0: e7af b.n 1ac52 <lv_label_create+0x14e>
1acf2: bf00 nop
1acf4: 00003e25 .word 0x00003e25
1acf8: 000022b1 .word 0x000022b1
1acfc: 20006c00 .word 0x20006c00
1ad00: 00002bd1 .word 0x00002bd1
1ad04: 00004d9d .word 0x00004d9d
1ad08: 000298f0 .word 0x000298f0
1ad0c: 00029994 .word 0x00029994
1ad10: 0001225d .word 0x0001225d
1ad14: 00023fd8 .word 0x00023fd8
1ad18: 000022b9 .word 0x000022b9
1ad1c: 00004d55 .word 0x00004d55
1ad20: 0001af01 .word 0x0001af01
1ad24: 00002b89 .word 0x00002b89
1ad28: 0001ad81 .word 0x0001ad81
1ad2c: 00002b2d .word 0x00002b2d
1ad30: 00019f2d .word 0x00019f2d
1ad34: 0001a9cd .word 0x0001a9cd
1ad38: 00019fdd .word 0x00019fdd
1ad3c: 0001aa99 .word 0x0001aa99
1ad40: 00019f81 .word 0x00019f81
1ad44: 00019e71 .word 0x00019e71
1ad48: 00019edd .word 0x00019edd
1ad4c: 0001a805 .word 0x0001a805
1ad50: 0001b51f .word 0x0001b51f
1ad54: 00019de5 .word 0x00019de5
1ad58: 00003a99 .word 0x00003a99
1ad5c: 000299f8 .word 0x000299f8
1ad60: 00004f65 .word 0x00004f65
1ad64: 000141e9 .word 0x000141e9
1ad68: 000029a1 .word 0x000029a1
1ad6c: 000299f0 .word 0x000299f0
1ad70: 0001a94d .word 0x0001a94d
1ad74: 00012551 .word 0x00012551
1ad78: 00012899 .word 0x00012899
1ad7c: 00012655 .word 0x00012655
0001ad80 <lv_label_signal>:
{
1ad80: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
1ad84: 4607 mov r7, r0
1ad86: 4615 mov r5, r2
if(sign == LV_SIGNAL_GET_STYLE) {
1ad88: 2908 cmp r1, #8
1ad8a: d015 beq.n 1adb8 <lv_label_signal+0x38>
1ad8c: 460c mov r4, r1
res = ancestor_signal(label, sign, param);
1ad8e: 4b30 ldr r3, [pc, #192] ; (1ae50 <lv_label_signal+0xd0>)
1ad90: 681b ldr r3, [r3, #0]
1ad92: 4798 blx r3
1ad94: 4606 mov r6, r0
if(res != LV_RES_OK) return res;
1ad96: 2801 cmp r0, #1
1ad98: d115 bne.n 1adc6 <lv_label_signal+0x46>
if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME);
1ad9a: 2c07 cmp r4, #7
1ad9c: d020 beq.n 1ade0 <lv_label_signal+0x60>
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
1ad9e: 4638 mov r0, r7
1ada0: 4b2c ldr r3, [pc, #176] ; (1ae54 <lv_label_signal+0xd4>)
1ada2: 4798 blx r3
1ada4: 4680 mov r8, r0
if(sign == LV_SIGNAL_CLEANUP) {
1ada6: bb44 cbnz r4, 1adfa <lv_label_signal+0x7a>
if(ext->static_txt == 0) {
1ada8: 7c03 ldrb r3, [r0, #16]
1adaa: f013 0f08 tst.w r3, #8
1adae: d01d beq.n 1adec <lv_label_signal+0x6c>
lv_label_dot_tmp_free(label);
1adb0: 4638 mov r0, r7
1adb2: 4b29 ldr r3, [pc, #164] ; (1ae58 <lv_label_signal+0xd8>)
1adb4: 4798 blx r3
1adb6: e006 b.n 1adc6 <lv_label_signal+0x46>
switch(type) {
1adb8: 7813 ldrb r3, [r2, #0]
1adba: b93b cbnz r3, 1adcc <lv_label_signal+0x4c>
style_dsc_p = &label->style_list;
1adbc: f100 0328 add.w r3, r0, #40 ; 0x28
info->result = lv_label_get_style(label, info->part);
1adc0: 606b str r3, [r5, #4]
if(info->result != NULL) return LV_RES_OK;
1adc2: 2601 movs r6, #1
1adc4: b123 cbz r3, 1add0 <lv_label_signal+0x50>
}
1adc6: 4630 mov r0, r6
1adc8: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
style_dsc_p = NULL;
1adcc: 2300 movs r3, #0
1adce: e7f7 b.n 1adc0 <lv_label_signal+0x40>
else return ancestor_signal(label, sign, param);
1add0: 4b1f ldr r3, [pc, #124] ; (1ae50 <lv_label_signal+0xd0>)
1add2: 681b ldr r3, [r3, #0]
1add4: 462a mov r2, r5
1add6: 2108 movs r1, #8
1add8: 4638 mov r0, r7
1adda: 4798 blx r3
1addc: 4606 mov r6, r0
1adde: e7f2 b.n 1adc6 <lv_label_signal+0x46>
if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME);
1ade0: 491e ldr r1, [pc, #120] ; (1ae5c <lv_label_signal+0xdc>)
1ade2: 4628 mov r0, r5
1ade4: 4b1e ldr r3, [pc, #120] ; (1ae60 <lv_label_signal+0xe0>)
1ade6: 4798 blx r3
1ade8: 4606 mov r6, r0
1adea: e7ec b.n 1adc6 <lv_label_signal+0x46>
lv_mem_free(ext->text);
1adec: 6800 ldr r0, [r0, #0]
1adee: 4b1d ldr r3, [pc, #116] ; (1ae64 <lv_label_signal+0xe4>)
1adf0: 4798 blx r3
ext->text = NULL;
1adf2: 2300 movs r3, #0
1adf4: f8c8 3000 str.w r3, [r8]
1adf8: e7da b.n 1adb0 <lv_label_signal+0x30>
else if(sign == LV_SIGNAL_STYLE_CHG) {
1adfa: 2c04 cmp r4, #4
1adfc: d014 beq.n 1ae28 <lv_label_signal+0xa8>
else if(sign == LV_SIGNAL_COORD_CHG) {
1adfe: 2c02 cmp r4, #2
1ae00: d1e1 bne.n 1adc6 <lv_label_signal+0x46>
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
1ae02: 88aa ldrh r2, [r5, #4]
1ae04: 3201 adds r2, #1
1ae06: 882b ldrh r3, [r5, #0]
1ae08: 1ad2 subs r2, r2, r3
1ae0a: 8abb ldrh r3, [r7, #20]
1ae0c: 3301 adds r3, #1
1ae0e: 8a39 ldrh r1, [r7, #16]
1ae10: 1a5b subs r3, r3, r1
if(lv_area_get_width(&label->coords) != lv_area_get_width(param) ||
1ae12: b292 uxth r2, r2
1ae14: b29b uxth r3, r3
1ae16: 429a cmp r2, r3
1ae18: d00d beq.n 1ae36 <lv_label_signal+0xb6>
lv_label_revert_dots(label);
1ae1a: 4638 mov r0, r7
1ae1c: 4b12 ldr r3, [pc, #72] ; (1ae68 <lv_label_signal+0xe8>)
1ae1e: 4798 blx r3
lv_label_refr_text(label);
1ae20: 4638 mov r0, r7
1ae22: 4b12 ldr r3, [pc, #72] ; (1ae6c <lv_label_signal+0xec>)
1ae24: 4798 blx r3
1ae26: e7ce b.n 1adc6 <lv_label_signal+0x46>
lv_label_revert_dots(label);
1ae28: 4638 mov r0, r7
1ae2a: 4b0f ldr r3, [pc, #60] ; (1ae68 <lv_label_signal+0xe8>)
1ae2c: 4798 blx r3
lv_label_refr_text(label);
1ae2e: 4638 mov r0, r7
1ae30: 4b0e ldr r3, [pc, #56] ; (1ae6c <lv_label_signal+0xec>)
1ae32: 4798 blx r3
1ae34: e7c7 b.n 1adc6 <lv_label_signal+0x46>
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
1ae36: 88ea ldrh r2, [r5, #6]
1ae38: 3201 adds r2, #1
1ae3a: 886b ldrh r3, [r5, #2]
1ae3c: 1ad2 subs r2, r2, r3
1ae3e: 8afb ldrh r3, [r7, #22]
1ae40: 3301 adds r3, #1
1ae42: 8a79 ldrh r1, [r7, #18]
1ae44: 1a5b subs r3, r3, r1
if(lv_area_get_width(&label->coords) != lv_area_get_width(param) ||
1ae46: b292 uxth r2, r2
1ae48: b29b uxth r3, r3
1ae4a: 429a cmp r2, r3
1ae4c: d1e5 bne.n 1ae1a <lv_label_signal+0x9a>
1ae4e: e7ba b.n 1adc6 <lv_label_signal+0x46>
1ae50: 20006c00 .word 0x20006c00
1ae54: 00004d9d .word 0x00004d9d
1ae58: 00019c95 .word 0x00019c95
1ae5c: 00029a08 .word 0x00029a08
1ae60: 00005095 .word 0x00005095
1ae64: 000124c5 .word 0x000124c5
1ae68: 00019cc5 .word 0x00019cc5
1ae6c: 0001a301 .word 0x0001a301
0001ae70 <lv_label_get_text_sel_start>:
{
1ae70: b530 push {r4, r5, lr}
1ae72: b083 sub sp, #12
1ae74: 4604 mov r4, r0
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
1ae76: 4b0a ldr r3, [pc, #40] ; (1aea0 <lv_label_get_text_sel_start+0x30>)
1ae78: 4798 blx r3
1ae7a: b118 cbz r0, 1ae84 <lv_label_get_text_sel_start+0x14>
}
1ae7c: f64f 70ff movw r0, #65535 ; 0xffff
1ae80: b003 add sp, #12
1ae82: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
1ae84: 4b07 ldr r3, [pc, #28] ; (1aea4 <lv_label_get_text_sel_start+0x34>)
1ae86: 9300 str r3, [sp, #0]
1ae88: f240 321d movw r2, #797 ; 0x31d
1ae8c: 4906 ldr r1, [pc, #24] ; (1aea8 <lv_label_get_text_sel_start+0x38>)
1ae8e: 2003 movs r0, #3
1ae90: 4d06 ldr r5, [pc, #24] ; (1aeac <lv_label_get_text_sel_start+0x3c>)
1ae92: 47a8 blx r5
1ae94: 4622 mov r2, r4
1ae96: 2300 movs r3, #0
1ae98: 4805 ldr r0, [pc, #20] ; (1aeb0 <lv_label_get_text_sel_start+0x40>)
1ae9a: 4906 ldr r1, [pc, #24] ; (1aeb4 <lv_label_get_text_sel_start+0x44>)
1ae9c: 4788 blx r1
1ae9e: e7fe b.n 1ae9e <lv_label_get_text_sel_start+0x2e>
1aea0: 000022b1 .word 0x000022b1
1aea4: 00029918 .word 0x00029918
1aea8: 00029994 .word 0x00029994
1aeac: 0001225d .word 0x0001225d
1aeb0: 0002483c .word 0x0002483c
1aeb4: 000022b9 .word 0x000022b9
0001aeb8 <lv_label_get_text_sel_end>:
{
1aeb8: b530 push {r4, r5, lr}
1aeba: b083 sub sp, #12
1aebc: 4604 mov r4, r0
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
1aebe: 4b0a ldr r3, [pc, #40] ; (1aee8 <lv_label_get_text_sel_end+0x30>)
1aec0: 4798 blx r3
1aec2: b118 cbz r0, 1aecc <lv_label_get_text_sel_end+0x14>
}
1aec4: f64f 70ff movw r0, #65535 ; 0xffff
1aec8: b003 add sp, #12
1aeca: bd30 pop {r4, r5, pc}
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
1aecc: 4b07 ldr r3, [pc, #28] ; (1aeec <lv_label_get_text_sel_end+0x34>)
1aece: 9300 str r3, [sp, #0]
1aed0: f44f 724c mov.w r2, #816 ; 0x330
1aed4: 4906 ldr r1, [pc, #24] ; (1aef0 <lv_label_get_text_sel_end+0x38>)
1aed6: 2003 movs r0, #3
1aed8: 4d06 ldr r5, [pc, #24] ; (1aef4 <lv_label_get_text_sel_end+0x3c>)
1aeda: 47a8 blx r5
1aedc: 4622 mov r2, r4
1aede: 2300 movs r3, #0
1aee0: 4805 ldr r0, [pc, #20] ; (1aef8 <lv_label_get_text_sel_end+0x40>)
1aee2: 4906 ldr r1, [pc, #24] ; (1aefc <lv_label_get_text_sel_end+0x44>)
1aee4: 4788 blx r1
1aee6: e7fe b.n 1aee6 <lv_label_get_text_sel_end+0x2e>
1aee8: 000022b1 .word 0x000022b1
1aeec: 00029934 .word 0x00029934
1aef0: 00029994 .word 0x00029994
1aef4: 0001225d .word 0x0001225d
1aef8: 0002483c .word 0x0002483c
1aefc: 000022b9 .word 0x000022b9
0001af00 <lv_label_design>:
if(mode == LV_DESIGN_COVER_CHK)
1af00: 2a02 cmp r2, #2
1af02: f000 811e beq.w 1b142 <lv_label_design+0x242>
else if(mode == LV_DESIGN_DRAW_MAIN) {
1af06: b10a cbz r2, 1af0c <lv_label_design+0xc>
return LV_DESIGN_RES_OK;
1af08: 2000 movs r0, #0
1af0a: 4770 bx lr
{
1af0c: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
1af10: b0a9 sub sp, #164 ; 0xa4
1af12: 460f mov r7, r1
1af14: 4605 mov r5, r0
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
1af16: 4b8c ldr r3, [pc, #560] ; (1b148 <lv_label_design+0x248>)
1af18: 4798 blx r3
1af1a: 4680 mov r8, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar)
1af1c: 2204 movs r2, #4
1af1e: 2100 movs r1, #0
1af20: 4628 mov r0, r5
1af22: 4c8a ldr r4, [pc, #552] ; (1b14c <lv_label_design+0x24c>)
1af24: 47a0 blx r4
1af26: 4681 mov r9, r0
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar)
1af28: 2205 movs r2, #5
1af2a: 2100 movs r1, #0
1af2c: 4628 mov r0, r5
1af2e: 47a0 blx r4
1af30: f105 030f add.w r3, r5, #15
1af34: f105 0617 add.w r6, r5, #23
uint8_t * d8 = (uint8_t *)dst;
1af38: aa06 add r2, sp, #24
*d8 = *s8;
1af3a: f813 4f01 ldrb.w r4, [r3, #1]!
1af3e: f802 4b01 strb.w r4, [r2], #1
while(len) {
1af42: 42b3 cmp r3, r6
1af44: d1f9 bne.n 1af3a <lv_label_design+0x3a>
bg_coords.x1 -= w;
1af46: fa1f f989 uxth.w r9, r9
1af4a: f8bd 3018 ldrh.w r3, [sp, #24]
1af4e: eba3 0309 sub.w r3, r3, r9
1af52: f8ad 3018 strh.w r3, [sp, #24]
bg_coords.x2 += w;
1af56: f8bd 301c ldrh.w r3, [sp, #28]
1af5a: 4499 add r9, r3
1af5c: f8ad 901c strh.w r9, [sp, #28]
bg_coords.y1 -= h;
1af60: b280 uxth r0, r0
1af62: f8bd 301a ldrh.w r3, [sp, #26]
1af66: 1a1b subs r3, r3, r0
1af68: f8ad 301a strh.w r3, [sp, #26]
bg_coords.y2 += h;
1af6c: f8bd 301e ldrh.w r3, [sp, #30]
1af70: 4418 add r0, r3
1af72: f8ad 001e strh.w r0, [sp, #30]
lv_draw_rect_dsc_init(&draw_rect_dsc);
1af76: a813 add r0, sp, #76 ; 0x4c
1af78: 4b75 ldr r3, [pc, #468] ; (1b150 <lv_label_design+0x250>)
1af7a: 4798 blx r3
lv_obj_init_draw_rect_dsc(label, LV_LABEL_PART_MAIN, &draw_rect_dsc);
1af7c: aa13 add r2, sp, #76 ; 0x4c
1af7e: 2100 movs r1, #0
1af80: 4628 mov r0, r5
1af82: 4b74 ldr r3, [pc, #464] ; (1b154 <lv_label_design+0x254>)
1af84: 4798 blx r3
lv_draw_rect(&bg_coords, clip_area, &draw_rect_dsc);
1af86: aa13 add r2, sp, #76 ; 0x4c
1af88: 4639 mov r1, r7
1af8a: a806 add r0, sp, #24
1af8c: 4b72 ldr r3, [pc, #456] ; (1b158 <lv_label_design+0x258>)
1af8e: 4798 blx r3
get_txt_coords(label, &txt_coords);
1af90: a908 add r1, sp, #32
1af92: 4628 mov r0, r5
1af94: 4b71 ldr r3, [pc, #452] ; (1b15c <lv_label_design+0x25c>)
1af96: 4798 blx r3
bool is_common = _lv_area_intersect(&txt_clip, clip_area, &txt_coords);
1af98: aa08 add r2, sp, #32
1af9a: 4639 mov r1, r7
1af9c: a80a add r0, sp, #40 ; 0x28
1af9e: 4b70 ldr r3, [pc, #448] ; (1b160 <lv_label_design+0x260>)
1afa0: 4798 blx r3
if(!is_common) return LV_DESIGN_RES_OK;
1afa2: b910 cbnz r0, 1afaa <lv_label_design+0xaa>
}
1afa4: b029 add sp, #164 ; 0xa4
1afa6: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
lv_label_align_t align = lv_label_get_align(label);
1afaa: 4628 mov r0, r5
1afac: 4b6d ldr r3, [pc, #436] ; (1b164 <lv_label_design+0x264>)
1afae: 4798 blx r3
if(ext->recolor != 0) flag |= LV_TXT_FLAG_RECOLOR;
1afb0: f898 3010 ldrb.w r3, [r8, #16]
lv_txt_flag_t flag = LV_TXT_FLAG_NONE;
1afb4: f3c3 1480 ubfx r4, r3, #6, #1
if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND;
1afb8: f013 0f80 tst.w r3, #128 ; 0x80
1afbc: bf18 it ne
1afbe: f044 0402 orrne.w r4, r4, #2
if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT;
1afc2: f013 0f07 tst.w r3, #7
1afc6: bf08 it eq
1afc8: f044 0410 orreq.w r4, r4, #16
if(align == LV_LABEL_ALIGN_CENTER) flag |= LV_TXT_FLAG_CENTER;
1afcc: 2801 cmp r0, #1
1afce: d038 beq.n 1b042 <lv_label_design+0x142>
if(align == LV_LABEL_ALIGN_RIGHT) flag |= LV_TXT_FLAG_RIGHT;
1afd0: 2802 cmp r0, #2
1afd2: bf08 it eq
1afd4: f044 0408 orreq.w r4, r4, #8
lv_draw_label_dsc_init(&label_draw_dsc);
1afd8: a80c add r0, sp, #48 ; 0x30
1afda: 4b63 ldr r3, [pc, #396] ; (1b168 <lv_label_design+0x268>)
1afdc: 4798 blx r3
label_draw_dsc.sel_start = lv_label_get_text_sel_start(label);
1afde: 4628 mov r0, r5
1afe0: 4b62 ldr r3, [pc, #392] ; (1b16c <lv_label_design+0x26c>)
1afe2: 4798 blx r3
1afe4: f8ad 003e strh.w r0, [sp, #62] ; 0x3e
label_draw_dsc.sel_end = lv_label_get_text_sel_end(label);
1afe8: 4628 mov r0, r5
1afea: 4b61 ldr r3, [pc, #388] ; (1b170 <lv_label_design+0x270>)
1afec: 4798 blx r3
1afee: f8ad 0040 strh.w r0, [sp, #64] ; 0x40
label_draw_dsc.ofs_x = ext->offset.x;
1aff2: f9b8 300c ldrsh.w r3, [r8, #12]
1aff6: f8ad 3042 strh.w r3, [sp, #66] ; 0x42
label_draw_dsc.ofs_y = ext->offset.y;
1affa: f9b8 300e ldrsh.w r3, [r8, #14]
1affe: f8ad 3044 strh.w r3, [sp, #68] ; 0x44
label_draw_dsc.flag = flag;
1b002: f88d 4047 strb.w r4, [sp, #71] ; 0x47
lv_obj_init_draw_label_dsc(label, LV_LABEL_PART_MAIN, &label_draw_dsc);
1b006: aa0c add r2, sp, #48 ; 0x30
1b008: 2100 movs r1, #0
1b00a: 4628 mov r0, r5
1b00c: 4b59 ldr r3, [pc, #356] ; (1b174 <lv_label_design+0x274>)
1b00e: 4798 blx r3
if((ext->long_mode == LV_LABEL_LONG_SROLL || ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) &&
1b010: f898 2010 ldrb.w r2, [r8, #16]
1b014: f002 0307 and.w r3, r2, #7
1b018: 3b03 subs r3, #3
1b01a: b2db uxtb r3, r3
1b01c: 2b01 cmp r3, #1
1b01e: d913 bls.n 1b048 <lv_label_design+0x148>
lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint);
1b020: f8d8 3000 ldr.w r3, [r8]
1b024: 2200 movs r2, #0
1b026: 9200 str r2, [sp, #0]
1b028: aa0c add r2, sp, #48 ; 0x30
1b02a: a90a add r1, sp, #40 ; 0x28
1b02c: a808 add r0, sp, #32
1b02e: 4d52 ldr r5, [pc, #328] ; (1b178 <lv_label_design+0x278>)
1b030: 47a8 blx r5
if(ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) {
1b032: f898 3010 ldrb.w r3, [r8, #16]
1b036: f003 0307 and.w r3, r3, #7
1b03a: 2b04 cmp r3, #4
1b03c: d02b beq.n 1b096 <lv_label_design+0x196>
return LV_DESIGN_RES_OK;
1b03e: 2000 movs r0, #0
1b040: e7b0 b.n 1afa4 <lv_label_design+0xa4>
if(align == LV_LABEL_ALIGN_CENTER) flag |= LV_TXT_FLAG_CENTER;
1b042: f044 0404 orr.w r4, r4, #4
1b046: e7c7 b.n 1afd8 <lv_label_design+0xd8>
(ext->align == LV_LABEL_ALIGN_CENTER || ext->align == LV_LABEL_ALIGN_RIGHT)) {
1b048: f002 0230 and.w r2, r2, #48 ; 0x30
if((ext->long_mode == LV_LABEL_LONG_SROLL || ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) &&
1b04c: 2a10 cmp r2, #16
1b04e: d001 beq.n 1b054 <lv_label_design+0x154>
(ext->align == LV_LABEL_ALIGN_CENTER || ext->align == LV_LABEL_ALIGN_RIGHT)) {
1b050: 2a20 cmp r2, #32
1b052: d1e5 bne.n 1b020 <lv_label_design+0x120>
_lv_txt_get_size(&size, ext->text, label_draw_dsc.font, label_draw_dsc.letter_space, label_draw_dsc.line_space,
1b054: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c
1b058: f8d8 1000 ldr.w r1, [r8]
1b05c: 9402 str r4, [sp, #8]
1b05e: f647 4218 movw r2, #31768 ; 0x7c18
1b062: 9201 str r2, [sp, #4]
1b064: f9bd 203a ldrsh.w r2, [sp, #58] ; 0x3a
1b068: 9200 str r2, [sp, #0]
1b06a: 9a0d ldr r2, [sp, #52] ; 0x34
1b06c: a805 add r0, sp, #20
1b06e: 4d43 ldr r5, [pc, #268] ; (1b17c <lv_label_design+0x27c>)
1b070: 47a8 blx r5
return (lv_coord_t)(area_p->x2 - area_p->x1 + 1);
1b072: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24
1b076: 3301 adds r3, #1
1b078: f8bd 2020 ldrh.w r2, [sp, #32]
1b07c: 1a9b subs r3, r3, r2
if(size.x > lv_area_get_width(&txt_coords)) {
1b07e: f9bd 2014 ldrsh.w r2, [sp, #20]
1b082: b21b sxth r3, r3
1b084: 429a cmp r2, r3
1b086: ddcb ble.n 1b020 <lv_label_design+0x120>
label_draw_dsc.flag &= ~LV_TXT_FLAG_CENTER;
1b088: f89d 3047 ldrb.w r3, [sp, #71] ; 0x47
1b08c: f023 030c bic.w r3, r3, #12
1b090: f88d 3047 strb.w r3, [sp, #71] ; 0x47
1b094: e7c4 b.n 1b020 <lv_label_design+0x120>
_lv_txt_get_size(&size, ext->text, label_draw_dsc.font, label_draw_dsc.letter_space, label_draw_dsc.line_space,
1b096: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c
1b09a: f8d8 1000 ldr.w r1, [r8]
1b09e: 9402 str r4, [sp, #8]
1b0a0: f647 4218 movw r2, #31768 ; 0x7c18
1b0a4: 9201 str r2, [sp, #4]
1b0a6: f9bd 203a ldrsh.w r2, [sp, #58] ; 0x3a
1b0aa: 9200 str r2, [sp, #0]
1b0ac: 9a0d ldr r2, [sp, #52] ; 0x34
1b0ae: a805 add r0, sp, #20
1b0b0: 4c32 ldr r4, [pc, #200] ; (1b17c <lv_label_design+0x27c>)
1b0b2: 47a0 blx r4
if(size.x > lv_area_get_width(&txt_coords)) {
1b0b4: f9bd 2014 ldrsh.w r2, [sp, #20]
1b0b8: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24
1b0bc: 3301 adds r3, #1
1b0be: f8bd 1020 ldrh.w r1, [sp, #32]
1b0c2: 1a5b subs r3, r3, r1
1b0c4: b21b sxth r3, r3
1b0c6: 429a cmp r2, r3
1b0c8: dc20 bgt.n 1b10c <lv_label_design+0x20c>
if(size.y > lv_area_get_height(&txt_coords)) {
1b0ca: f9bd 2016 ldrsh.w r2, [sp, #22]
return (lv_coord_t)(area_p->y2 - area_p->y1 + 1);
1b0ce: f8bd 3026 ldrh.w r3, [sp, #38] ; 0x26
1b0d2: 3301 adds r3, #1
1b0d4: f8bd 1022 ldrh.w r1, [sp, #34] ; 0x22
1b0d8: 1a5b subs r3, r3, r1
1b0da: b21b sxth r3, r3
1b0dc: 429a cmp r2, r3
1b0de: ddae ble.n 1b03e <lv_label_design+0x13e>
label_draw_dsc.ofs_x = ext->offset.x;
1b0e0: f9b8 300c ldrsh.w r3, [r8, #12]
1b0e4: f8ad 3042 strh.w r3, [sp, #66] ; 0x42
1b0e8: 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);
1b0ea: 891b ldrh r3, [r3, #8]
1b0ec: 4413 add r3, r2
1b0ee: f8b8 200e ldrh.w r2, [r8, #14]
1b0f2: 4413 add r3, r2
1b0f4: f8ad 3044 strh.w r3, [sp, #68] ; 0x44
lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint);
1b0f8: f8d8 3000 ldr.w r3, [r8]
1b0fc: 2200 movs r2, #0
1b0fe: 9200 str r2, [sp, #0]
1b100: aa0c add r2, sp, #48 ; 0x30
1b102: a90a add r1, sp, #40 ; 0x28
1b104: a808 add r0, sp, #32
1b106: 4c1c ldr r4, [pc, #112] ; (1b178 <lv_label_design+0x278>)
1b108: 47a0 blx r4
1b10a: e798 b.n 1b03e <lv_label_design+0x13e>
label_draw_dsc.ofs_x = ext->offset.x + size.x +
1b10c: f8b8 400c ldrh.w r4, [r8, #12]
1b110: 4422 add r2, r4
1b112: b294 uxth r4, r2
lv_font_get_glyph_width(label_draw_dsc.font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT;
1b114: 2220 movs r2, #32
1b116: 4611 mov r1, r2
1b118: 980d ldr r0, [sp, #52] ; 0x34
1b11a: 4b19 ldr r3, [pc, #100] ; (1b180 <lv_label_design+0x280>)
1b11c: 4798 blx r3
1b11e: eb00 0040 add.w r0, r0, r0, lsl #1
label_draw_dsc.ofs_x = ext->offset.x + size.x +
1b122: 4404 add r4, r0
1b124: f8ad 4042 strh.w r4, [sp, #66] ; 0x42
label_draw_dsc.ofs_y = ext->offset.y;
1b128: f9b8 300e ldrsh.w r3, [r8, #14]
1b12c: f8ad 3044 strh.w r3, [sp, #68] ; 0x44
lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint);
1b130: f8d8 3000 ldr.w r3, [r8]
1b134: 2200 movs r2, #0
1b136: 9200 str r2, [sp, #0]
1b138: aa0c add r2, sp, #48 ; 0x30
1b13a: a90a add r1, sp, #40 ; 0x28
1b13c: a808 add r0, sp, #32
1b13e: 47a8 blx r5
1b140: e7c3 b.n 1b0ca <lv_label_design+0x1ca>
return LV_DESIGN_RES_NOT_COVER;
1b142: 2002 movs r0, #2
1b144: 4770 bx lr
1b146: bf00 nop
1b148: 00004d9d .word 0x00004d9d
1b14c: 000044d5 .word 0x000044d5
1b150: 0000c269 .word 0x0000c269
1b154: 000050c5 .word 0x000050c5
1b158: 0000c331 .word 0x0000c331
1b15c: 00019d89 .word 0x00019d89
1b160: 00011519 .word 0x00011519
1b164: 00019f81 .word 0x00019f81
1b168: 000099cd .word 0x000099cd
1b16c: 0001ae71 .word 0x0001ae71
1b170: 0001aeb9 .word 0x0001aeb9
1b174: 000056b1 .word 0x000056b1
1b178: 00009a25 .word 0x00009a25
1b17c: 0001407d .word 0x0001407d
1b180: 00010061 .word 0x00010061
0001b184 <__aeabi_uldivmod>:
1b184: b953 cbnz r3, 1b19c <__aeabi_uldivmod+0x18>
1b186: b94a cbnz r2, 1b19c <__aeabi_uldivmod+0x18>
1b188: 2900 cmp r1, #0
1b18a: bf08 it eq
1b18c: 2800 cmpeq r0, #0
1b18e: bf1c itt ne
1b190: f04f 31ff movne.w r1, #4294967295
1b194: f04f 30ff movne.w r0, #4294967295
1b198: f000 b97a b.w 1b490 <__aeabi_idiv0>
1b19c: f1ad 0c08 sub.w ip, sp, #8
1b1a0: e96d ce04 strd ip, lr, [sp, #-16]!
1b1a4: f000 f806 bl 1b1b4 <__udivmoddi4>
1b1a8: f8dd e004 ldr.w lr, [sp, #4]
1b1ac: e9dd 2302 ldrd r2, r3, [sp, #8]
1b1b0: b004 add sp, #16
1b1b2: 4770 bx lr
0001b1b4 <__udivmoddi4>:
1b1b4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
1b1b8: 468c mov ip, r1
1b1ba: 460d mov r5, r1
1b1bc: 4604 mov r4, r0
1b1be: 9e08 ldr r6, [sp, #32]
1b1c0: 2b00 cmp r3, #0
1b1c2: d151 bne.n 1b268 <__udivmoddi4+0xb4>
1b1c4: 428a cmp r2, r1
1b1c6: 4617 mov r7, r2
1b1c8: d96d bls.n 1b2a6 <__udivmoddi4+0xf2>
1b1ca: fab2 fe82 clz lr, r2
1b1ce: f1be 0f00 cmp.w lr, #0
1b1d2: d00b beq.n 1b1ec <__udivmoddi4+0x38>
1b1d4: f1ce 0c20 rsb ip, lr, #32
1b1d8: fa01 f50e lsl.w r5, r1, lr
1b1dc: fa20 fc0c lsr.w ip, r0, ip
1b1e0: fa02 f70e lsl.w r7, r2, lr
1b1e4: ea4c 0c05 orr.w ip, ip, r5
1b1e8: fa00 f40e lsl.w r4, r0, lr
1b1ec: ea4f 4a17 mov.w sl, r7, lsr #16
1b1f0: 0c25 lsrs r5, r4, #16
1b1f2: fbbc f8fa udiv r8, ip, sl
1b1f6: fa1f f987 uxth.w r9, r7
1b1fa: fb0a cc18 mls ip, sl, r8, ip
1b1fe: ea45 450c orr.w r5, r5, ip, lsl #16
1b202: fb08 f309 mul.w r3, r8, r9
1b206: 42ab cmp r3, r5
1b208: d90a bls.n 1b220 <__udivmoddi4+0x6c>
1b20a: 19ed adds r5, r5, r7
1b20c: f108 32ff add.w r2, r8, #4294967295
1b210: f080 8123 bcs.w 1b45a <__udivmoddi4+0x2a6>
1b214: 42ab cmp r3, r5
1b216: f240 8120 bls.w 1b45a <__udivmoddi4+0x2a6>
1b21a: f1a8 0802 sub.w r8, r8, #2
1b21e: 443d add r5, r7
1b220: 1aed subs r5, r5, r3
1b222: b2a4 uxth r4, r4
1b224: fbb5 f0fa udiv r0, r5, sl
1b228: fb0a 5510 mls r5, sl, r0, r5
1b22c: ea44 4405 orr.w r4, r4, r5, lsl #16
1b230: fb00 f909 mul.w r9, r0, r9
1b234: 45a1 cmp r9, r4
1b236: d909 bls.n 1b24c <__udivmoddi4+0x98>
1b238: 19e4 adds r4, r4, r7
1b23a: f100 33ff add.w r3, r0, #4294967295
1b23e: f080 810a bcs.w 1b456 <__udivmoddi4+0x2a2>
1b242: 45a1 cmp r9, r4
1b244: f240 8107 bls.w 1b456 <__udivmoddi4+0x2a2>
1b248: 3802 subs r0, #2
1b24a: 443c add r4, r7
1b24c: eba4 0409 sub.w r4, r4, r9
1b250: ea40 4008 orr.w r0, r0, r8, lsl #16
1b254: 2100 movs r1, #0
1b256: 2e00 cmp r6, #0
1b258: d061 beq.n 1b31e <__udivmoddi4+0x16a>
1b25a: fa24 f40e lsr.w r4, r4, lr
1b25e: 2300 movs r3, #0
1b260: 6034 str r4, [r6, #0]
1b262: 6073 str r3, [r6, #4]
1b264: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
1b268: 428b cmp r3, r1
1b26a: d907 bls.n 1b27c <__udivmoddi4+0xc8>
1b26c: 2e00 cmp r6, #0
1b26e: d054 beq.n 1b31a <__udivmoddi4+0x166>
1b270: 2100 movs r1, #0
1b272: e886 0021 stmia.w r6, {r0, r5}
1b276: 4608 mov r0, r1
1b278: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
1b27c: fab3 f183 clz r1, r3
1b280: 2900 cmp r1, #0
1b282: f040 808e bne.w 1b3a2 <__udivmoddi4+0x1ee>
1b286: 42ab cmp r3, r5
1b288: d302 bcc.n 1b290 <__udivmoddi4+0xdc>
1b28a: 4282 cmp r2, r0
1b28c: f200 80fa bhi.w 1b484 <__udivmoddi4+0x2d0>
1b290: 1a84 subs r4, r0, r2
1b292: eb65 0503 sbc.w r5, r5, r3
1b296: 2001 movs r0, #1
1b298: 46ac mov ip, r5
1b29a: 2e00 cmp r6, #0
1b29c: d03f beq.n 1b31e <__udivmoddi4+0x16a>
1b29e: e886 1010 stmia.w r6, {r4, ip}
1b2a2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
1b2a6: b912 cbnz r2, 1b2ae <__udivmoddi4+0xfa>
1b2a8: 2701 movs r7, #1
1b2aa: fbb7 f7f2 udiv r7, r7, r2
1b2ae: fab7 fe87 clz lr, r7
1b2b2: f1be 0f00 cmp.w lr, #0
1b2b6: d134 bne.n 1b322 <__udivmoddi4+0x16e>
1b2b8: 1beb subs r3, r5, r7
1b2ba: 0c3a lsrs r2, r7, #16
1b2bc: fa1f fc87 uxth.w ip, r7
1b2c0: 2101 movs r1, #1
1b2c2: fbb3 f8f2 udiv r8, r3, r2
1b2c6: 0c25 lsrs r5, r4, #16
1b2c8: fb02 3318 mls r3, r2, r8, r3
1b2cc: ea45 4503 orr.w r5, r5, r3, lsl #16
1b2d0: fb0c f308 mul.w r3, ip, r8
1b2d4: 42ab cmp r3, r5
1b2d6: d907 bls.n 1b2e8 <__udivmoddi4+0x134>
1b2d8: 19ed adds r5, r5, r7
1b2da: f108 30ff add.w r0, r8, #4294967295
1b2de: d202 bcs.n 1b2e6 <__udivmoddi4+0x132>
1b2e0: 42ab cmp r3, r5
1b2e2: f200 80d1 bhi.w 1b488 <__udivmoddi4+0x2d4>
1b2e6: 4680 mov r8, r0
1b2e8: 1aed subs r5, r5, r3
1b2ea: b2a3 uxth r3, r4
1b2ec: fbb5 f0f2 udiv r0, r5, r2
1b2f0: fb02 5510 mls r5, r2, r0, r5
1b2f4: ea43 4405 orr.w r4, r3, r5, lsl #16
1b2f8: fb0c fc00 mul.w ip, ip, r0
1b2fc: 45a4 cmp ip, r4
1b2fe: d907 bls.n 1b310 <__udivmoddi4+0x15c>
1b300: 19e4 adds r4, r4, r7
1b302: f100 33ff add.w r3, r0, #4294967295
1b306: d202 bcs.n 1b30e <__udivmoddi4+0x15a>
1b308: 45a4 cmp ip, r4
1b30a: f200 80b8 bhi.w 1b47e <__udivmoddi4+0x2ca>
1b30e: 4618 mov r0, r3
1b310: eba4 040c sub.w r4, r4, ip
1b314: ea40 4008 orr.w r0, r0, r8, lsl #16
1b318: e79d b.n 1b256 <__udivmoddi4+0xa2>
1b31a: 4631 mov r1, r6
1b31c: 4630 mov r0, r6
1b31e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
1b322: f1ce 0420 rsb r4, lr, #32
1b326: fa05 f30e lsl.w r3, r5, lr
1b32a: fa07 f70e lsl.w r7, r7, lr
1b32e: fa20 f804 lsr.w r8, r0, r4
1b332: 0c3a lsrs r2, r7, #16
1b334: fa25 f404 lsr.w r4, r5, r4
1b338: ea48 0803 orr.w r8, r8, r3
1b33c: fbb4 f1f2 udiv r1, r4, r2
1b340: ea4f 4518 mov.w r5, r8, lsr #16
1b344: fb02 4411 mls r4, r2, r1, r4
1b348: fa1f fc87 uxth.w ip, r7
1b34c: ea45 4504 orr.w r5, r5, r4, lsl #16
1b350: fb01 f30c mul.w r3, r1, ip
1b354: 42ab cmp r3, r5
1b356: fa00 f40e lsl.w r4, r0, lr
1b35a: d909 bls.n 1b370 <__udivmoddi4+0x1bc>
1b35c: 19ed adds r5, r5, r7
1b35e: f101 30ff add.w r0, r1, #4294967295
1b362: f080 808a bcs.w 1b47a <__udivmoddi4+0x2c6>
1b366: 42ab cmp r3, r5
1b368: f240 8087 bls.w 1b47a <__udivmoddi4+0x2c6>
1b36c: 3902 subs r1, #2
1b36e: 443d add r5, r7
1b370: 1aeb subs r3, r5, r3
1b372: fa1f f588 uxth.w r5, r8
1b376: fbb3 f0f2 udiv r0, r3, r2
1b37a: fb02 3310 mls r3, r2, r0, r3
1b37e: ea45 4503 orr.w r5, r5, r3, lsl #16
1b382: fb00 f30c mul.w r3, r0, ip
1b386: 42ab cmp r3, r5
1b388: d907 bls.n 1b39a <__udivmoddi4+0x1e6>
1b38a: 19ed adds r5, r5, r7
1b38c: f100 38ff add.w r8, r0, #4294967295
1b390: d26f bcs.n 1b472 <__udivmoddi4+0x2be>
1b392: 42ab cmp r3, r5
1b394: d96d bls.n 1b472 <__udivmoddi4+0x2be>
1b396: 3802 subs r0, #2
1b398: 443d add r5, r7
1b39a: 1aeb subs r3, r5, r3
1b39c: ea40 4101 orr.w r1, r0, r1, lsl #16
1b3a0: e78f b.n 1b2c2 <__udivmoddi4+0x10e>
1b3a2: f1c1 0720 rsb r7, r1, #32
1b3a6: fa22 f807 lsr.w r8, r2, r7
1b3aa: 408b lsls r3, r1
1b3ac: fa05 f401 lsl.w r4, r5, r1
1b3b0: ea48 0303 orr.w r3, r8, r3
1b3b4: fa20 fe07 lsr.w lr, r0, r7
1b3b8: ea4f 4c13 mov.w ip, r3, lsr #16
1b3bc: 40fd lsrs r5, r7
1b3be: ea4e 0e04 orr.w lr, lr, r4
1b3c2: fbb5 f9fc udiv r9, r5, ip
1b3c6: ea4f 441e mov.w r4, lr, lsr #16
1b3ca: fb0c 5519 mls r5, ip, r9, r5
1b3ce: fa1f f883 uxth.w r8, r3
1b3d2: ea44 4505 orr.w r5, r4, r5, lsl #16
1b3d6: fb09 f408 mul.w r4, r9, r8
1b3da: 42ac cmp r4, r5
1b3dc: fa02 f201 lsl.w r2, r2, r1
1b3e0: fa00 fa01 lsl.w sl, r0, r1
1b3e4: d908 bls.n 1b3f8 <__udivmoddi4+0x244>
1b3e6: 18ed adds r5, r5, r3
1b3e8: f109 30ff add.w r0, r9, #4294967295
1b3ec: d243 bcs.n 1b476 <__udivmoddi4+0x2c2>
1b3ee: 42ac cmp r4, r5
1b3f0: d941 bls.n 1b476 <__udivmoddi4+0x2c2>
1b3f2: f1a9 0902 sub.w r9, r9, #2
1b3f6: 441d add r5, r3
1b3f8: 1b2d subs r5, r5, r4
1b3fa: fa1f fe8e uxth.w lr, lr
1b3fe: fbb5 f0fc udiv r0, r5, ip
1b402: fb0c 5510 mls r5, ip, r0, r5
1b406: ea4e 4405 orr.w r4, lr, r5, lsl #16
1b40a: fb00 f808 mul.w r8, r0, r8
1b40e: 45a0 cmp r8, r4
1b410: d907 bls.n 1b422 <__udivmoddi4+0x26e>
1b412: 18e4 adds r4, r4, r3
1b414: f100 35ff add.w r5, r0, #4294967295
1b418: d229 bcs.n 1b46e <__udivmoddi4+0x2ba>
1b41a: 45a0 cmp r8, r4
1b41c: d927 bls.n 1b46e <__udivmoddi4+0x2ba>
1b41e: 3802 subs r0, #2
1b420: 441c add r4, r3
1b422: ea40 4009 orr.w r0, r0, r9, lsl #16
1b426: eba4 0408 sub.w r4, r4, r8
1b42a: fba0 8902 umull r8, r9, r0, r2
1b42e: 454c cmp r4, r9
1b430: 46c6 mov lr, r8
1b432: 464d mov r5, r9
1b434: d315 bcc.n 1b462 <__udivmoddi4+0x2ae>
1b436: d012 beq.n 1b45e <__udivmoddi4+0x2aa>
1b438: b156 cbz r6, 1b450 <__udivmoddi4+0x29c>
1b43a: ebba 030e subs.w r3, sl, lr
1b43e: eb64 0405 sbc.w r4, r4, r5
1b442: fa04 f707 lsl.w r7, r4, r7
1b446: 40cb lsrs r3, r1
1b448: 431f orrs r7, r3
1b44a: 40cc lsrs r4, r1
1b44c: 6037 str r7, [r6, #0]
1b44e: 6074 str r4, [r6, #4]
1b450: 2100 movs r1, #0
1b452: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
1b456: 4618 mov r0, r3
1b458: e6f8 b.n 1b24c <__udivmoddi4+0x98>
1b45a: 4690 mov r8, r2
1b45c: e6e0 b.n 1b220 <__udivmoddi4+0x6c>
1b45e: 45c2 cmp sl, r8
1b460: d2ea bcs.n 1b438 <__udivmoddi4+0x284>
1b462: ebb8 0e02 subs.w lr, r8, r2
1b466: eb69 0503 sbc.w r5, r9, r3
1b46a: 3801 subs r0, #1
1b46c: e7e4 b.n 1b438 <__udivmoddi4+0x284>
1b46e: 4628 mov r0, r5
1b470: e7d7 b.n 1b422 <__udivmoddi4+0x26e>
1b472: 4640 mov r0, r8
1b474: e791 b.n 1b39a <__udivmoddi4+0x1e6>
1b476: 4681 mov r9, r0
1b478: e7be b.n 1b3f8 <__udivmoddi4+0x244>
1b47a: 4601 mov r1, r0
1b47c: e778 b.n 1b370 <__udivmoddi4+0x1bc>
1b47e: 3802 subs r0, #2
1b480: 443c add r4, r7
1b482: e745 b.n 1b310 <__udivmoddi4+0x15c>
1b484: 4608 mov r0, r1
1b486: e708 b.n 1b29a <__udivmoddi4+0xe6>
1b488: f1a8 0802 sub.w r8, r8, #2
1b48c: 443d add r5, r7
1b48e: e72b b.n 1b2e8 <__udivmoddi4+0x134>
0001b490 <__aeabi_idiv0>:
1b490: 4770 bx lr
1b492: bf00 nop
0001b494 <__libc_init_array>:
1b494: b570 push {r4, r5, r6, lr}
1b496: 4e0d ldr r6, [pc, #52] ; (1b4cc <__libc_init_array+0x38>)
1b498: 4c0d ldr r4, [pc, #52] ; (1b4d0 <__libc_init_array+0x3c>)
1b49a: 1ba4 subs r4, r4, r6
1b49c: 10a4 asrs r4, r4, #2
1b49e: 2500 movs r5, #0
1b4a0: 42a5 cmp r5, r4
1b4a2: d109 bne.n 1b4b8 <__libc_init_array+0x24>
1b4a4: 4e0b ldr r6, [pc, #44] ; (1b4d4 <__libc_init_array+0x40>)
1b4a6: 4c0c ldr r4, [pc, #48] ; (1b4d8 <__libc_init_array+0x44>)
1b4a8: f00e fab4 bl 29a14 <_init>
1b4ac: 1ba4 subs r4, r4, r6
1b4ae: 10a4 asrs r4, r4, #2
1b4b0: 2500 movs r5, #0
1b4b2: 42a5 cmp r5, r4
1b4b4: d105 bne.n 1b4c2 <__libc_init_array+0x2e>
1b4b6: bd70 pop {r4, r5, r6, pc}
1b4b8: f856 3025 ldr.w r3, [r6, r5, lsl #2]
1b4bc: 4798 blx r3
1b4be: 3501 adds r5, #1
1b4c0: e7ee b.n 1b4a0 <__libc_init_array+0xc>
1b4c2: f856 3025 ldr.w r3, [r6, r5, lsl #2]
1b4c6: 4798 blx r3
1b4c8: 3501 adds r5, #1
1b4ca: e7f2 b.n 1b4b2 <__libc_init_array+0x1e>
1b4cc: 00029a20 .word 0x00029a20
1b4d0: 00029a20 .word 0x00029a20
1b4d4: 00029a20 .word 0x00029a20
1b4d8: 00029a24 .word 0x00029a24
0001b4dc <memcmp>:
1b4dc: b510 push {r4, lr}
1b4de: 3901 subs r1, #1
1b4e0: 4402 add r2, r0
1b4e2: 4290 cmp r0, r2
1b4e4: d101 bne.n 1b4ea <memcmp+0xe>
1b4e6: 2000 movs r0, #0
1b4e8: bd10 pop {r4, pc}
1b4ea: f810 3b01 ldrb.w r3, [r0], #1
1b4ee: f811 4f01 ldrb.w r4, [r1, #1]!
1b4f2: 42a3 cmp r3, r4
1b4f4: d0f5 beq.n 1b4e2 <memcmp+0x6>
1b4f6: 1b18 subs r0, r3, r4
1b4f8: bd10 pop {r4, pc}
0001b4fa <strcmp>:
1b4fa: f810 2b01 ldrb.w r2, [r0], #1
1b4fe: f811 3b01 ldrb.w r3, [r1], #1
1b502: 2a01 cmp r2, #1
1b504: bf28 it cs
1b506: 429a cmpcs r2, r3
1b508: d0f7 beq.n 1b4fa <strcmp>
1b50a: 1ad0 subs r0, r2, r3
1b50c: 4770 bx lr
0001b50e <strcpy>:
1b50e: 4603 mov r3, r0
1b510: f811 2b01 ldrb.w r2, [r1], #1
1b514: f803 2b01 strb.w r2, [r3], #1
1b518: 2a00 cmp r2, #0
1b51a: d1f9 bne.n 1b510 <strcpy+0x2>
1b51c: 4770 bx lr
0001b51e <strlen>:
1b51e: 4603 mov r3, r0
1b520: f813 2b01 ldrb.w r2, [r3], #1
1b524: 2a00 cmp r2, #0
1b526: d1fb bne.n 1b520 <strlen+0x2>
1b528: 1a18 subs r0, r3, r0
1b52a: 3801 subs r0, #1
1b52c: 4770 bx lr
1b52e: 0000 movs r0, r0
1b530: 682f2e2e .word 0x682f2e2e
1b534: 702f6c70 .word 0x702f6c70
1b538: 2f74726f .word 0x2f74726f
1b53c: 5f6c7068 .word 0x5f6c7068
1b540: 6f697067 .word 0x6f697067
1b544: 7361625f .word 0x7361625f
1b548: 00682e65 .word 0x00682e65
1b54c: 682f2e2e .word 0x682f2e2e
1b550: 732f6c61 .word 0x732f6c61
1b554: 682f6372 .word 0x682f6372
1b558: 695f6c61 .word 0x695f6c61
1b55c: 00632e6f .word 0x00632e6f
1b560: 682f2e2e .word 0x682f2e2e
1b564: 732f6c61 .word 0x732f6c61
1b568: 682f6372 .word 0x682f6372
1b56c: 745f6c61 .word 0x745f6c61
1b570: 72656d69 .word 0x72656d69
1b574: 0000632e .word 0x0000632e
1b578: 682f2e2e .word 0x682f2e2e
1b57c: 732f6c61 .word 0x732f6c61
1b580: 682f6372 .word 0x682f6372
1b584: 755f6c61 .word 0x755f6c61
1b588: 74726173 .word 0x74726173
1b58c: 7973615f .word 0x7973615f
1b590: 632e636e .word 0x632e636e
1b594: 00000000 .word 0x00000000
1b598: 682f2e2e .word 0x682f2e2e
1b59c: 752f6c61 .word 0x752f6c61
1b5a0: 736c6974 .word 0x736c6974
1b5a4: 6372732f .word 0x6372732f
1b5a8: 6974752f .word 0x6974752f
1b5ac: 6c5f736c .word 0x6c5f736c
1b5b0: 2e747369 .word 0x2e747369
1b5b4: 00000063 .word 0x00000063
1b5b8: 682f2e2e .word 0x682f2e2e
1b5bc: 752f6c61 .word 0x752f6c61
1b5c0: 736c6974 .word 0x736c6974
1b5c4: 6372732f .word 0x6372732f
1b5c8: 6974752f .word 0x6974752f
1b5cc: 725f736c .word 0x725f736c
1b5d0: 62676e69 .word 0x62676e69
1b5d4: 65666675 .word 0x65666675
1b5d8: 00632e72 .word 0x00632e72
1b5dc: 40003000 .word 0x40003000
1b5e0: 40003400 .word 0x40003400
1b5e4: 41012000 .word 0x41012000
1b5e8: 41014000 .word 0x41014000
1b5ec: 43000000 .word 0x43000000
1b5f0: 43000400 .word 0x43000400
1b5f4: 43000800 .word 0x43000800
1b5f8: 43000c00 .word 0x43000c00
0001b5fc <_i2cms>:
1b5fc: 00000003 00200014 00000100 000000ff ...... .........
1b60c: 00d70000 07270400 682f2e2e 732f6c70 ......'.../hpl/s
1b61c: 6f637265 70682f6d 65735f6c 6d6f6372 ercom/hpl_sercom
1b62c: 0000632e 40003800 40003c00 4101a000 .c...8.@.<.@...A
1b63c: 4101c000 42001400 42001800 43001400 ...A...B...B...C
1b64c: 43001800 ...C
0001b650 <_tcs>:
1b650: 006b0000 00000308 00000000 00003a97 ..k..........:..
1b660: 00000000 682f2e2e 742f6c70 70682f63 ....../hpl/tc/hp
1b670: 63745f6c 0000632e l_tc.c..
0001b678 <hornet>:
1b678: 1662e40a 0000855b 0001b684 ..b.[.......
0001b684 <hornet_map>:
1b684: ff07060b ffac882c ff871f25 ff895139 ....,...%...9Q..
1b694: ffdcc46d ffc88348 ffc65632 ff46434d m...H...2V..MCF.
1b6a4: ff480a16 ffbca25c ffc22d38 ff8b6c67 ..H.\...8-..gl..
1b6b4: ff48272d ff893622 ffc76d41 ffc38576 -'H."6..Am..v...
1b6c4: ffc6a49a ffa53520 ff692621 ffa95139 .... 5..!&i.9Q..
1b6d4: ffe8e2a9 ff26242e ffe96e40 ffe98843 .....$&.@n..C...
1b6e4: ffaea64b ff873848 ffc5c4c9 ffa86e33 K...H8......3n..
1b6f4: ff69646a ffe45640 ff69342e ff280917 jdi.@V...4i...(.
1b704: ffa8554e ffe7a996 ff838383 ff67101b NU............g.
1b714: ff9e8880 ffc76e60 ffe7a65f ffe99647 ....`n.._...G...
1b724: ffe68779 ffa9202e ff694527 ff8a4335 y.... ..'Ei.5C..
1b734: ffa76f64 ff493329 ffc0b5af ff89575f do..)3I....._W..
1b744: ffc75543 ffa9462d ff9f9789 ffab603f CU..-F......?`..
1b754: ff882c1d ffc97948 ff27151b ffc69482 .,..Hy....'.....
1b764: ff69282f ffe6b669 ffdfd484 ff48151b /(i.i.........H.
1b774: ffc89364 ffe66e5b ffc14715 ffe4c4bc d...[n...G......
1b784: ff98371e ffc66343 ffe1e4e8 ff73542a .7..Cc......*Ts.
1b794: ff673a3e ffb7532b ff872b32 ffe68a60 >:g.+S..2+..`...
1b7a4: ff19141e ffd68448 ff38373f ffea9964 ....H...?78.d...
1b7b4: ffd69881 ff875f47 ff592621 ff37161a ....G_..!&Y...7.
1b7c4: ffe65550 ff886e77 ffd8a894 ffa97a73 PU..wn......sz..
1b7d4: ff571922 ffeba872 fff6f3de ffa3a59e ".W.r...........
1b7e4: ffe03d49 ff671c24 ffa28c94 ffa86254 I=..$.g.....Tb..
1b7f4: ffecc483 ffd76e48 ffa9473f ffa93a38 ....Hn..?G..8:..
1b804: ffd5d4d6 ffa77937 ffe76254 ff595861 ....7y..Tb..aXY.
1b814: ff884648 ffd6b4a7 ffb0999a ff9b5036 HF..........6P..
1b824: ff782620 ff392328 ffb3b5b4 ffe77a45 &x.(#9.....Ez..
1b834: ffe8b596 ff593331 ffd87a46 ffc19aa2 ....13Y.Fz......
1b844: ff160c16 ffb1887e ff886263 ff797679 ....~...cb..yvy.
1b854: ff762930 ffc13d43 ff973c30 ff79362d 0)v.C=..0<..-6y.
1b864: ff67474c ff994530 ffbfb560 fff7975f LGg.0E..`..._...
1b874: ffd7624b ffc9875c ff952d18 ffe87959 Kb..\....-..Yy..
1b884: ffc04945 ff94968f ff9c9729 ffebddae EI......).......
1b894: ffc0aa64 ffe99a78 fff3ead1 ffc56232 d...x.......2b..
1b8a4: ffd8343e ff685a61 ffda9842 fff1643e >4..aZh.B...>d..
1b8b4: ff928678 ffd8b859 ffc67a62 ffe4dcdd x...Y...bz......
1b8c4: ff867c7c ff574a54 ffdaa94f ffd58a7b ||..TJW.O...{...
1b8d4: ffafa9a4 ffd9a57b ffd6cdcd ff766b6f ....{.......okv.
1b8e4: ffecd27c fff7b894 ffa99931 ff84766c |.......1...lv..
1b8f4: ffe1cb82 ffd85019 fff5b57b ffb96d49 .....P..{...Im..
1b904: ffbb7947 ffac2b34 ffd7895e ffa48654 Gy..4+..^...T...
1b914: ff972129 ff570c18 ffc3aaaf ffede6bf )!....W.........
1b924: ffacac64 ff370815 fff9a55c ff7b4432 d.....7.\...2D{.
1b934: ffc1bcbf fff69b7e ff78575a ffb76e5f ....~...ZWx._n..
1b944: ff99614b ffb97a64 ff771a22 ff994747 Ka..dz..".w.GG..
1b954: ff986266 fff68745 fff6a996 ff77121c fb..E.........w.
1b964: fff7964c ffd8544a fffbc7b6 ff783a40 L...JT......@:x.
1b974: fffa875f fff5a67a ffae8b97 ff78484a _...z.......JHx.
1b984: fff8d7bb fffbfaf8 fff2c89a ffeeebeb ................
1b994: fffb6e49 ffb7624f fffb6459 ffd97965 In..Ob..Yd..ey..
1b9a4: ff883930 ff973747 ff483942 ff291825 09..G7..B9H.%.).
1b9b4: ffe4da9b ff481725 ffd79d99 ff381825 ....%.H.....%.8.
1b9c4: fff75652 ff995249 ffe5bcb4 ff5a373e RV..IR......>7Z.
1b9d4: ff98944c ffd99566 fffcd2d4 ffb7584e L...f.......NX..
1b9e4: ff97595d ffc3343f ffdc494b ff95786b ]Y..?4..KI..kx..
1b9f4: ffb9613b ff982931 fff97a43 ffd03c46 ;a..1)..Cz..F<..
1ba04: fffb785b ff997b7b ffa63c23 ffc79d8b [x..{{..#<......
1ba14: ffdadbdf ff885350 ff9f9b96 ffeab97a ....PS......z...
1ba24: ffb7553a ff572a2f ffd7aba7 ffd9babb :U../*W.........
1ba34: ff382938 ff8e8b89 ffdbbb69 ffecd7a1 8)8.....i.......
1ba44: fff8b8ab ff966f68 ffab6c51 ffd86f5d ....ho..Ql..]o..
1ba54: fffb6e5b ff997077 ffd56331 ffd14848 [n..wp..1c..HH..
1ba64: fffc5a44 ffdccc73 ff4b4b54 ffc38c7a DZ..s...TKK.z...
1ba74: ffc6ac9f ff2b2c37 ffcbcbcf ff6b6b6f ....7,+.....okk.
1ba84: 70707070 70707070 70707070 70704870 pppppppppppppHpp
1ba94: 48487070 36363648 e90c69cb 7744442d ppHHH666.i..-DDw
1baa4: 771212e9 133179c8 c8763113 133179c8 ...w.y1..1v..y1.
1bab4: e2e23131 407e40e2 40e2e2e2 25c531e2 11...@~@...@.1.%
1bac4: 30c785a2 0d76b35e 46464646 404040dd ...0^.v.FFFF.@@@
1bad4: d1135e5f 5f762bb3 c876765f 9ca240c8 _^...+v__vv..@..
1bae4: e714c156 bd0439bd 9c263ae7 140404a7 V....9...:&.....
1baf4: 7be0bce7 8047efef f3bc3d80 569c4733 ...{..G..=..3G.V
1bb04: 5c56c1c1 9ce79cee 56ef39f9 9c86f93a ..V\.....9.V:...
1bb14: 0e0ec785 9ccc55c7 c156e74b 9f35a2c2 .....U..K.V...5.
1bb24: 9f9f9f9f 339f9f9f 67672033 20677979 .......33 ggyyg
1bb34: dc132020 1e126717 7070704e 70707070 ...g..Nppppppp
1bb44: 70707070 70487070 48487070 36364848 ppppppHpppHHHH66
1bb54: 694e0c36 2b2b2d69 744e1e2b 3179c877 6.Nii-+++.Ntw.y1
1bb64: 7631315e 3179c8c8 e2313113 3440e2e2 ^11v..y1.11...@4
1bb74: e2313140 9f9fd731 c72825c5 76b35e30 @11.1....%(.0^.v
1bb84: 4634340d 40407e46 13b37640 2b2bb3d1 .44FF~@@@v....++
1bb94: 40765f5f 6e407676 86c1869c f9e73904 __v@vv@n.....9..
1bba4: 559c3955 ee9c869c f4bc5c14 4783ef7b U9.U.....\..{..G
1bbb4: bc625e80 044720f3 c1c1c186 c28304f9 .^b.. G.........
1bbc4: 9c39f9e7 a7f9ccc1 35354b9c a75cd535 ..9......K555.\.
1bbd4: 565c55ef 3cd5efc1 7d7d7d7d 05050505 .U\V...<}}}}....
1bbe4: c59f9fa0 33333333 dc333333 77136e17 ....3333333..n.w
1bbf4: 7070740d 70707070 70707070 36487070 .tppppppppppppH6
1bc04: 48707048 cb364848 4e4ecb36 bb1e1e0c HppHHH6.6.NN....
1bc14: 4ec82bb3 2bc87777 79797979 79c8c876 .+.Nww.+yyyyv..y
1bc24: 31131331 40e2e231 1331e240 13c5af33 1..11..@@.1.3...
1bc34: 28f3e831 b35ee8f3 34340d76 7e7e4646 1..(..^.v.44FF~~
1bc44: b3764040 2bb3d113 76315f2b 40767640 @@v....++_1v@vv@
1bc54: 86a79c6e e7393a56 f955553a 9c86e726 n...V:9.:UU.&...
1bc64: b59c83ee 83efbce0 7cb35e4b 6e13f3e0 ........K^.|...n
1bc74: c1c186e7 a73a3ac1 550455e7 0483c19c .....::..U.U....
1bc84: 67a2e73a 5c55a2a0 5c9e14a7 2683c156 :..g..U\...\V..&
1bc94: 3c3c3cd5 7d7d3c3c 9f350505 9fdcdc9f .<<<<<}}..5.....
1bca4: 3113c5c5 33336e0e 700d0d34 70707070 ...1.n334..ppppp
1bcb4: 70707070 48707070 70704836 36484848 pppppppH6HppHHH6
1bcc4: 1e6936cb bb790c0c c82bbbbb c877744e .6i...y...+.Ntw.
1bcd4: 2b2bc8c8 76c8c8c8 13133179 31313131 ..++...vy1..1111
1bce4: c53176e2 7613c5af 25e83176 b3e841f3 .v1....vv1.%.A..
1bcf4: 340d76b3 34343434 5f114040 b3d1d1b3 .v.44444@@._....
1bd04: 3131762b 76767676 c2e7f340 04a7c1c0 +v11vvvv@.......
1bd14: 55553a04 86e72604 9ccc8d3a c2bce0b8 .:UU.&..:.......
1bd24: b35e4bcc d13de07c c1a7396e 8383c1c1 .K^.|.=.n9......
1bd34: 042639a7 14c19c55 9f4b9ee7 99853564 .9&.U.....K.d5..
1bd44: 9e14a75c 83c186e7 7d3cd526 7d3c3c3c \.......&.<}<<<}
1bd54: a005057d 33dc9f9f 13dcc5dc 0d794579 }......3....yEy.
1bd64: 0d74680d 70707070 70707070 70707070 .ht.pppppppppppp
1bd74: 70704836 36484870 cfcbcbcb 2b1e6912 6HpppHH6.....i.+
1bd84: 2b6dbbbb 7774122b 762b2bc8 c8c8c876 ..m++.tw.++vv...
1bd94: 13317976 13313113 9f133131 407933af vy1..11.11...3y@
1bda4: 790d7676 5ee8e8e8 0d76b3b3 34343434 vv.y...^..v.4444
1bdb4: 11407e34 1313b35f 31767967 76767631 4~@._...gyv11vvv
1bdc4: 390e7676 c1c156ef 39cc043a 39260426 vv.9.V..:..9&.&9
1bdd4: cc8def86 bce0b89c 5e4bcc5c 3dbc7c64 ........\.K^d|.=
1bde4: a7550ed1 a7c1c1c1 26e7a7cc 569c55ee ..U........&.U.V
1bdf4: 35475583 2149f1b0 14143a9c c186e79e .UG5..I!.:......
1be04: 3cd52683 7d7d7d7d 3505057d dc9fa035 .&.<}}}}}..55...
1be14: 13133333 0d767979 12743379 70707068 33..yyv.y3t.hppp
1be24: 70707070 70707070 70704848 36484870 ppppppppHHpppHH6
1be34: cbcbcb36 c80c3636 d344bb2b 7412bb79 6...66..+.D.y..t
1be44: 792bc877 76797979 3179c8c8 13131313 w.+yyyyv..y1....
1be54: af9f1331 763113dc e6344040 3131e22c 1.....1v@@4.,.11
1be64: 7679b35e 34340d0d 40403434 13b35f11 ^.yv..4444@@._..
1be74: 76b31313 7679315f 417676c8 c1c11439 ...v_1yv.vvA9...
1be84: 1404ccc1 26ee4be7 8d83a755 f4b89c3a .....K.&U...:...
1be94: 4bcce7bc bc7cb35e 260e133d c1c1c183 ...K^.|.=..&....
1bea4: e7a79c83 e755e726 0e4befa7 a2f2f5dc ....&.U...K.....
1beb4: 143acc5c ef55e714 d52683c1 a27d7d3c \.:...U...&.<}}.
1bec4: 05057d7d 9f356e35 311333dc 40767979 }}..5n5..3.1yyv@
1bed4: c87d3334 70701268 70707070 70704870 43}.h.pppppppHpp
1bee4: 70707070 48487070 cbcbcb36 773636cb ppppppHH6....66w
1bef4: 44bb2b76 1ee91ebb 2bc87774 31317979 v+.D....tw.+yy11
1bf04: 79c8c879 e8e81331 c5b19fe8 31313131 y..y1.......1111
1bf14: 647e0d40 5e406fc1 b35e5e5e 34340d76 @.~d.o@^^^^.v.44
1bf24: 40343434 b35f4040 5e131313 31313176 444@@@_....^v111
1bf34: 76767631 56ef3941 f914c1c1 397b5ca7 1vvvA9.V.....\{9
1bf44: 83a72626 273a9c8d 3a39e0f4 b9b3804b &&....:'..9:K...
1bf54: c5133dbc c1c18355 869c83c1 55e7269c .=..U........&.U
1bf64: c75c3ae7 33e633dc 3a145cd5 bde714cc .:\..3.3.\.:....
1bf74: 26ef865c 7d7d3c3c 05057d7d 35491735 \..&<<}}}}..5.I5
1bf84: 1333dc9f 0d0d7979 c513680d 7074680d ..3.yy...h...htp
1bf94: 48487070 70364870 70483670 48707070 ppHHpH6pp6HppppH
1bfa4: cbcbcb48 cbcbcbcb bb2b7677 771e6d44 H.......wv+.Dm.w
1bfb4: 77771277 3179792b c8c87931 e8131379 w.ww+yy11y..y...
1bfc4: d78e8ec5 31e2e231 024040e2 40a6c1be ....1..1.@@....@
1bfd4: 5e5e5e5e 340d76b3 0d346834 5f404040 ^^^^.v.44h4.@@@_
1bfe4: 1313135e 31315e5e 795e3131 5c264176 ^...^^1111^yvA&\
1bff4: a7c1c186 7b9ca7f9 83264b55 3a048da7 .......{UK&....:
1c004: bdf4f44b 5e807b3a 5b3de030 c18699af K...:{.^0.=[....
1c014: 9c14c1c1 554b9c86 4be75555 662ce89f ......KUUU.K..,f
1c024: 145c4b33 e714cc3a efcc9ebd 7d3c7d85 3K\.:........}<}
1c034: 057d7d7d 6e176e05 33dc9f35 0d767913 }}}..n.n5..3.yv.
1c044: 79680d0d 74687413 70707070 48367070 ..hy.thtpppppp6H
1c054: 36367070 48707048 cbcb3648 69cbcbcb pp66HppHH6.....i
1c064: bb1e6936 bb44d344 777777c8 792b2b77 6i..D.D..wwww++y
1c074: c8c87979 e8137979 e8257d8e 40403113 yy..yy...}%..1@@
1c084: 4040e2e2 60c1fe68 5e5e3176 0d76b35e ..@@h..`v1^^^.v.
1c094: bb72680d 11e27eb2 13135e5f 315ee813 .hr..~.._^....^1
1c0a4: 5ee85e31 aa877931 c1c1869e 3aa7f9a7 1^.^1y.........:
1c0b4: 4b4b267b ee26a783 f4f44b3a 307b9cad {&KK..&.:K....{0
1c0c4: 17e0e85e 83c210b1 a7c1c156 4b9c869c ^.......V......K
1c0d4: 477b5555 6613dc0e 5c4bdc24 cc3a9ccc UU{G...f$.K\..:.
1c0e4: 5cbdade7 7d7dd55c 7d7d7d7d 49173505 ...\\.}}}}}}.5.I
1c0f4: dc9f9f35 76797913 340d0d0d 68687468 5....yyv...4hthh
1c104: 70707068 70707070 48703670 70484836 hpppppppp6pH6HHp
1c114: cbcb4848 cbcbcbcb 69cbcbcb 2b44d32d HH.........i-.D+
1c124: 770dc8ab 2b2b7777 c8c8792b 9f137979 ...www+++y..yy..
1c134: d7418e8e 344031e8 40e2e27e 5642e534 ..A..1@4~..@4.BV
1c144: 5e5fd156 76b35e5e 2eb20d0d 7e7766c1 V._^^^.v.....fw~
1c154: 135e31e2 5ee81313 13133131 6e311313 .1^....^11....1n
1c164: c156e7aa 863a86c1 4b4b7bcc 39a7cc4b ..V...:..{KKK..9
1c174: e04bf939 7be77bc6 27dc5e30 5510fc85 9.K..{.{0^.'...U
1c184: c1c1569c 9c86f9a7 bcad4b4b 67dce80e .V......KK.....g
1c194: d50eb4ac 9c9c3a5c 85ade7cc 7dd59e9e ....\:.........}
1c1a4: 7d7d7d7d 4935057d dc9f3535 79791333 }}}}}.5I55..3.yy
1c1b4: 0d0d4076 6868340d 70707474 70707070 v@...4hhttpppppp
1c1c4: 70487070 4836cf48 cb484870 cb15cbcb ppHpH.6HpHH.....
1c1d4: 0ccbcbcb 44d32d0c 7979ab2b 2b77c840 .....-.D+.yy@.w+
1c1e4: 7931792b 8edc7979 4141258e 7e1131d7 +y1yyy...%AA.1.~
1c1f4: 11117e34 c3e10240 4053c1c3 b35e5e5e 4~..@.....S@^^^.
1c204: 340d0d76 42c142bb 5e3134f1 13131313 v..4.B.B.41^....
1c214: 13135e5e dcc535e8 569c4b27 3a86c1c1 ^^...5..'K.V...:
1c224: 7b7bcca7 a73a4b4b 4bee2639 e7bcc6e0 ..{{KK:.9&.K....
1c234: 8ac5b97b 5b715255 c156ee47 86f9a7c1 {...URq[G.V.....
1c244: bc7b4b3a 1313e85d 0ed11ab4 9c3ae7d5 :K{.].........:.
1c254: ad5ccc9c a2555585 7d7d7d7d 05057d7d ..\..UU.}}}}}}..
1c264: 9f9f3505 793113dc 76767979 76767676 .5....1yyyvvvvvv
1c274: 70120d0d 48707070 70707070 36cfcf70 ...ppppHppppp..6
1c284: 36487036 69cbcbcb e9cb6969 6d4477c8 6pH6...iii...wDm
1c294: 132bd344 c80d795e dc13792b 8eaf1313 D.+.^y..+y......
1c2a4: 2541c525 11e2e841 117e347e 94684011 %.A%A...~4~..@h.
1c2b4: 10c1c3c3 5e5e5e40 460d76b3 c172b240 ....@^^^.v.F@.r.
1c2c4: c894c1c1 131313e2 135e5e5e dc3939e8 ........^^^..99.
1c2d4: 9c47dcdc 56c1c156 27cca7f9 9c277bb8 ..G.V..V...'.{'.
1c2e4: 394b39a7 bcc6e07b d5f37b55 20b13755 .9K9{...U{..U7.
1c2f4: 86396ed1 f9a7c1c1 bc27efa7 e813e87f .n9.......'.....
1c304: 13ac6679 f9e7856e 5c3a5c5c d5d585bd yf..n...\\:\....
1c314: 7d7d7dd5 05050505 35350505 1313dc35 .}}}......555...
1c324: 79797979 79797979 c8797979 70707070 yyyyyyyyyyy.pppp
1c334: 70707048 cbcf3600 48483636 cbcbcb36 Hppp.6..66HH6...
1c344: cb696969 bb77c877 ababb3bb 0d763113 iii.w.w......1v.
1c354: 13792bc8 9fb19fc5 41d7e813 e245e841 .+y........AA.E.
1c364: 7e347e11 68401111 c1c3c32e 5e31c896 .~4~..@h......1^
1c374: 0d76b35e 5940460d c1c1c194 2079d160 ^.v..F@Y....`.y
1c384: 5eb3b3d1 9f9895e8 47313113 c1c1869c ...^.....11G....
1c394: cca73a56 17b8bc27 b839a79c d0f4b8aa V:..'.....9.....
1c3a4: 21b69ebc 205bb195 395dd1d1 a7c1c1a7 ...!..[ ..]9....
1c3b4: 273aa7f9 1313dc3d be1a79e8 e7ad47e8 ..:'=....y...G..
1c3c4: 3a5ce79c a285bd5c 7da24bd5 a005057d ..\:\....K.}}...
1c3d4: 350505a0 13130e6e 79767979 31797979 ...5n...yyvyyyy1
1c3e4: 5e5e315e 70707079 70704848 36004870 ^1^^ypppHHpppH.6
1c3f4: 48cb36cf cbcbcb48 69696915 c8c869cb .6.HH....iii.i..
1c404: b3b32b1e 4076b32b 79797940 138e8e13 .+..+.v@@yyy....
1c414: 31317979 31314531 3440e2e2 40e2117e yy111E11..@4~..@
1c424: c3c360c8 31d1c3c1 7679b313 46460d0d .`.....1..yv..FF
1c434: c1e47734 53c3c1c1 b3b31379 9fd59f5e 4w.....Sy...^...
1c444: 31311313 c1a70447 a73a56c1 b8e04bcc ..11G....V:..K..
1c454: 55a7e7b5 e0b5bce0 babaadf4 b320c54c ...U........L. .
1c464: 5db3d1b3 c1c18326 cc830486 13134127 ...]&.......'A..
1c474: e4d81313 adad5db4 e7e79c9e 85bd5c3a .....]......:\..
1c484: a285d5a2 a0057d7d a0a0a0a0 13339f9f ....}}........3.
1c494: 0d2b7913 31797976 795e3131 70707979 .y+.vyy111^yyypp
1c4a4: 70483648 480ce969 cb363670 cbcb4836 H6Hpi..Hp66.6H..
1c4b4: 696915cb 794ecb69 abab6d77 40312b67 ..iii.Nywm..g+1@
1c4c4: 13131376 13af8e33 79797979 e2317979 v...3...yyyyyy1.
1c4d4: 4011e2e2 e2117e34 8f42e57e 53c1c342 ...@4~..~.B.B..S
1c4e4: b37913e2 460d0d76 72a44034 c1c156c1 ..y.v..F4@.r.V..
1c4f4: b37971c1 13d75eb3 795e135e a7046e76 .qy..^..^.^yvn..
1c504: f956c1c1 e04b1414 14e7b8b5 bce06226 ..V...K.....&b..
1c514: babaadbc 5e807cad b3d1b364 c1cc265d .....|.^d...]&..
1c524: cc0486c1 31e8273a 24791331 ad47d860 ....:'.11.y$`.G.
1c534: e79c9e85 bd5c9ce7 85d5a285 7d7d7da2 ......\......}}}
1c544: a0a0057d 9f9fa0a0 79133333 760d0d0d }.......33.y...v
1c554: 5e793179 7079795e 36364870 0c0c7000 y1y^^yyppH66.p..
1c564: 367070cb cb484836 6969cbcb 4ecb6969 .pp66HH...iiii.N
1c574: bb1ee9c8 79b32b64 c5d71376 13c57d8e ....d+.yv....}..
1c584: 76767679 76797979 11e2e240 117e347e yvvvyyyv@...~4~.
1c594: c3e57ee2 c1c3e4e4 79137610 0d0d7679 .~.......v.yyv..
1c5a4: 5f403434 c3c16602 37c1c1c1 5e5eb3c8 44@_.f.....7..^^
1c5b4: 315e5e5e ee6e7676 56c1c114 4b14ccf9 ^^^1vvn....V...K
1c5c4: 39b5b5e0 bc414b3a adf0babd 80dabcbd ...9:KA.........
1c5d4: 20b3645e 3a2641b3 0486c156 13179c9c ^d. .A&:V.......
1c5e4: c8135e79 adc56aac 9c398585 5c9ce7e7 y^...j....9....\
1c5f4: 4bd585bd 3c7dd5ad 7d7d3c3c a0a07d7d ...K..}<<<}}}}..
1c604: 3333339f 0d2b6733 79790d0d b3b35e79 .3333g+...yyy^..
1c614: 36367070 36000070 7048360c 48487070 pp66p..6.6HpppHH
1c624: 69cbcbcb cb696969 abe9cbcb 1364642b ...iiii.....+dd.
1c634: c5133179 13c57d0f 76767913 79797976 y1...}...yvvvyyy
1c644: 11404076 7e347e40 f17ee211 c36060c1 v@@.@~4~..~..``.
1c654: 137696c1 0d767979 11403446 6077e211 ..v.yyv.F4@...w`
1c664: 565642c3 5e0d6fc1 5e795e5e 5d40765e .BVV.o.^^^y^^v@]
1c674: c1c1cc39 14ccf956 b5bce026 8ed59c26 9...V...&...&...
1c684: e0f0d699 dae07be0 b3645e80 2741b320 .....{...^d. .A'
1c694: 86c186f9 49040404 31137913 f35ae4e5 .......I.y.1..Z.
1c6a4: 558555bd 9c9ee75c d5bdbd9c 9595b685 .U.U\...........
1c6b4: 216c2121 52525252 b13ce395 13339fa0 !!l!RRRR..<...3.
1c6c4: 0d34c879 b3797676 700036b3 70487048 y.4.vvy..6.pHpHp
1c6d4: 36363670 48707070 15cbcb48 69696969 p666pppHH...iiii
1c6e4: e90c69cb 206413bb c5137920 d7c58e0f .i....d y......
1c6f4: 76311313 79797676 11404079 347e4011 ..1vvvyyy@@..@~4
1c704: 02e21134 fe60c15a d856c1c3 76797931 4...Z.`...V.1yyv
1c714: 40340d0d 11315f11 8fe4c12f 66c156c3 ..4@._1./....V.f
1c724: 765e5e0d 0d765e5e 56cc3941 3af956c1 .^^v^^v.A9.V.V.:
1c734: e0f426cc 219ebdb5 bc9eba65 e0bcc6c6 .&.....!e.......
1c744: 195e75da d7b32064 c1860427 ee048d86 .u^.d ..'.......
1c754: 1379136e f542e179 85555547 9e9ee755 n.y.y.B.GUU.U...
1c764: 99993a3a d2baf06c 3c4c9521 7d7d3c3c ::..l...!.L<<<}}
1c774: 4c3c7d7d fbce5252 c879139f 0d34340d }}<LRR....y..44.
1c784: 48697976 44480000 3648000c 70704836 vyiH..HD..H66Hpp
1c794: cbcb4848 69696969 4e126915 d1642be9 HH..iiii.i.N.+d.
1c7a4: af132041 41d7c50f 3113e8c5 79767679 A .....A...1yvvy
1c7b4: e2767979 7e1111e2 e2113434 96c16602 yyv....~44...f..
1c7c4: c1c1c31a 79137671 340d0d76 315f5f40 ....qv.yv..4@__1
1c7d4: 562e3480 568f6060 5e406fc1 76767676 .4.V``.V.o@^vvvv
1c7e4: 3a55410d f956c186 e026ccf9 ba997bbc .AU:..V...&..{..
1c7f4: 7bbc0f65 bcc6c6e0 5e75dae0 b3206419 e..{......u^.d .
1c804: a70427d7 8d8d86c1 79670e26 6094c813 .'......&.gy...`
1c814: 55394b5b e75c554b c0a78399 2121f0ba [K9UKU\.......!!
1c824: 7d7d3cd5 a0a0a005 339f9fa0 4c7df233 .<}}.......33.}L
1c834: 337d5252 74c8c876 70c87468 48007048 RR}3v..tht.pHp.H
1c844: 7048e91e 70483636 cb484870 6969cbcb ..Hp66HppHH...ii
1c854: 69690c69 b31ee969 b1c5c5c5 d713c593 i.iii...........
1c864: e8c54141 76763113 e2797979 11e2e2e2 AA...1vvyyy.....
1c874: 1134347e c19434e2 c1421afe 1376acc1 ~44..4....B...v.
1c884: 0dc87979 31114034 64e25e31 60968f42 yy..4@.11^.dB..`
1c894: 71c1c1c3 76767634 55e80d76 56c1a73a ...q4vvvv..U:..V
1c8a4: 55cc04f9 babaadbc e020afb6 c6c6deb8 ...U...... .....
1c8b4: 7550f4bc 2064195f 8d17e8b3 8da75683 ..Pu_.d .....V..
1c8c4: 130e4b92 60643167 39bdc56a c29e5555 .K..g1d`j..9UU..
1c8d4: a7a7c0ba a285b6c2 35057da2 9f9f9f35 .........}.55...
1c8e4: dcc59f9f 33333333 523cb19f c82bf2e3 ....3333..<R..+.
1c8f4: 74597477 00000070 3669cb00 70364870 wtYtp.....i6pH6p
1c904: 48487070 e91e69cb 690c6969 791e0c69 ppHH.i..ii.ii..y
1c914: 9325c5d7 e8d7c58e c541c5d7 3131e8d7 ..%.......A...11
1c924: 79797979 e2e2e276 34347e11 2e34e240 yyyyv....~44@.4.
1c934: 601afe56 d1c3c1c1 c8797979 e240340d V..`....yyy..4@.
1c944: 5e5e3131 96c1e140 c1c36060 763471c1 11^^@...``...q4v
1c954: e8c8c876 c1a7f926 cc04f956 b6baf0c2 v...&...V.......
1c964: 5e207f7b c6deb8f4 d0f4bcc6 64195f80 {. ^........._.d
1c974: 1713b3b3 a756cc8d 7d4b278d f5761333 ......V..'K}3.v.
1c984: bd41e642 c0f0e739 9899c2c0 d5ad5c14 B.A.9........\..
1c994: 3505a2a2 dc9fa035 9fa0359f 791313dc ...55....5.....y
1c9a4: c5331367 b15237a0 74770d2b 70700012 g.3..7R.+.wt..pp
1c9b4: 36700c70 00004836 48707070 e9776948 p.p66H..pppHHiw.
1c9c4: 690c0c0c 77e90c69 4c252013 c5d7138e ...ii..w. %L....
1c9d4: c5c5d7e8 41e8e8dc 79797913 e2407679 .......A.yyyyv@.
1c9e4: 347ee2e2 68e24034 1afec3ac c1c156fe ..~44@.h.....V..
1c9f4: 79797953 400d0dc8 e83131e2 ac0d315e Syyy...@.11.^1..
1ca04: 606096c3 53c1c1c3 c8c87646 14f94b5e ..``...SFv..^K..
1ca14: 9c3a5656 bcb6c0a7 b362e0bc b5b562b3 VV:.......b..b..
1ca24: f4bcc6f4 195ff7d0 13b3b319 863a926b ......_.....k.:.
1ca34: 26278da7 c81367a0 f3e1e494 bac0ef9e ..'&.g..........
1ca44: 559e5c99 859c149c 05a2a2a2 9f9fa035 .\.U........5...
1ca54: 8e359f9f 13dc9fa0 79767979 fbaf3313 ..5.....yyvy.3..
1ca64: 462b0f52 70364677 48364844 70703670 R.+FwF6pDH6Hp6pp
1ca74: 70707000 69776970 69e91e69 e94ee90c .ppppiwii..i..N.
1ca84: 4caf672b 1313c58e d7d7d7e8 0edce8dc +g.L............
1ca94: 797979dc 40767979 40e2e2e2 e2407e0d .yyyyyv@...@.~@.
1caa4: fec3ac68 c1421a1a b37665c1 0d0dc879 h.....B..ev.y...
1cab4: 3131e240 e2315e5e 6060c3e5 c1566060 @.11^^1...````V.
1cac4: 2b46b4c1 044b31c8 a75656cc e0e7ccc0 ..F+.1K..VV.....
1cad4: 62e0def4 b862b3b3 e0c6f4b5 5ff7d0f4 ...b..b........_
1cae4: 64641919 f99216b3 278da786 5e67c54b ..dd.......'K.g^
1caf4: f1fefe64 5cc0c0bd 55e75555 9c140455 d......\UU.UU...
1cb04: 85d5a24b 9f9f3549 a09f9f9f c5a08e35 K...I5......5...
1cb14: 79797913 3367c840 b1520faf e976462b .yyy@.g3..R.+Fv.
1cb24: 0036cb48 70707036 36707070 e9e97036 H.6.6pppppp66p..
1cb34: 2dbb6d15 4e0ce92d 93af79c8 31c5c525 .m.--..N.y..%..1
1cb44: 13131379 dce8d7d7 797931e8 76797979 y........1yyyyyv
1cb54: e2e2e2e2 e27e7e40 c31a34e2 601a1afe ....@~~..4.....`
1cb64: d1c3c1c1 0d0d7979 31e2400d 315e5e31 ....yy...@.11^^1
1cb74: c35a0d5e e4606096 6442c156 4b5ec80d ^.Z..``.V.Bd..^K
1cb84: c156149c 2604e783 e0def4f4 6bb3b3b9 ..V....&.......k
1cb94: c6c6de7b f7d0f4e0 b31919c9 925db364 {...........d.].
1cba4: 8d8686f9 67136b27 6ae4f576 e799ba71 ....'k.gv..jq...
1cbb4: 39554b55 14e75555 85a2853a 0e35a2ad UKU9UU..:.....5.
1cbc4: dc9f9f35 358e9f9f 7913c59f 0d0d7931 5......5...y1y..
1cbd4: fbb1c579 2b2bafea 3600cbcb 70703670 y.....++...6p6pp
1cbe4: 70707070 69483648 6d1e0ccb 77e9e90c ppppH6Hi...m...w
1cbf4: 935bc82b 13d733c5 13137976 e8d7d713 +.[..3..vy......
1cc04: 79793113 79797979 e2e2e276 31794031 .1yyyyyyv...1@y1
1cc14: fe77e2e2 1a1afec3 c1c1c31a 407940be ..w..........@y@
1cc24: e240340d 5e803131 bb5e315e 60968f60 .4@.11.^^1^.`..`
1cc34: c156e460 130d7760 568683bd 8d269c56 `.V.`w.....VV.&.
1cc44: c4f4f427 20b3b9e0 c6deb517 c6f4e0f8 '...... ........
1cc54: 64bb19f7 f6b3b3b3 86a70427 311617ee ...d....'......1
1cc64: 606679b3 4badb166 554b3939 e75555e7 .yf`f..K99KU.UU.
1cc74: 4b55cc14 35a2ad85 dca00535 8e35dcdc ..UK...55.....5.
1cc84: dc9f358e 76131313 c5793434 5b524cb1 .5.....v44y..LR[
1cc94: 703600c8 70703636 70707070 48707048 ..6p66ppppppHppH
1cca4: 6de9cb48 c8771e2d 0ff279b3 132067d1 H..m-.w..y...g .
1ccb4: 5e76c879 13131313 79793113 79137979 y.v^.....1yyyy.y
1ccc4: 31e27979 6edc3131 0de2e245 1afec3fe yy.111.nE.......
1ccd4: c1e41a1a 31798fc1 7e340d76 5e313111 ......y1v.4~.11^
1cce4: 13315e5e 96c35179 8f606060 772ec1c1 ^^1.yQ..```....w
1ccf4: ccefba37 27f95686 f4f42692 b3b9e0c4 7....V.'.&......
1cd04: dec43020 f4e0d0c6 bb19dac6 b3b313b3 0..............
1cd14: 86042741 62170486 acb4f213 bc415afe A'.....b.....ZA.
1cd24: 4b39394b 5555e755 55cccc39 47ad5555 K99KU.UU9..UUU.G
1cd34: 8e7d8e35 35dcdc9f 35358e8e 203131c5 5.}....5..55.11
1cd44: 68347613 ea0fc579 6970b3fb 70700036 .v4hy.....pi6.pp
1cd54: 70707070 707036cf 0c693648 77771e0c pppp.6ppH6i...ww
1cd64: 0faf792b 79677967 0dc82b79 79797976 +y..gygyy+..vyyy
1cd74: 79797979 13dc1379 e2797931 b80e3131 yyyyy...1yy.11..
1cd84: e2e24041 fec3fe0d fe1a1a1a 53c1c1c1 A@.............S
1cd94: 34407640 31e24034 31315e5e acbbe85e @v@44@.1^^11^...
1cda4: 6060968f c1c14260 39852ce6 f956a73a ..```B...,.9:.V.
1cdb4: e0272627 62e0c4f4 50b3b3b3 f4d0c6f4 '&'....b...P....
1cdc4: 1950f4f4 d7d7b3bb 041730d1 170486a7 ..P......0......
1cdd4: 24e30f3d 41f51a60 26264bbc 55394b4b =..$`..A.K&&KK9U
1cde4: 14cc3955 85559e39 7d053547 dcdc3505 U9..9.U.G5.}.5..
1cdf4: 8e35359f 7979c535 7613c513 afb37468 .55.5.yy...vht..
1ce04: 70f2ea37 70003636 70707070 70cbcf48 7..p66.pppppH..p
1ce14: cb694870 771e1e0c 0ff2c82b 79792b67 pHi....w+...g+yy
1ce24: c8791313 c80d0d77 79797979 e8dc6779 ..y.w...yyyyyg..
1ce34: 79313113 b8353131 e2407687 c3ac68e2 .11y115..v@..h..
1ce44: fe1a1afe c1c1421a 40764096 e240340d .....B...@v@.4@.
1ce54: 31315e31 b3135e31 6096c30b c3e4e460 1^111^.....``...
1ce64: 5daec1c1 56a7f939 272727f9 e0def4e0 ...]9..V.'''....
1ce74: 1919b362 50c6f480 d0c6f4f4 6e1319c9 b......P.......n
1ce84: 17e8d10e f986a704 5b52b6aa d8ac6066 ..........R[f`..
1ce94: 264b475d 554b4b26 cc395555 e70404a7 ]GK&&KKUUU9.....
1cea4: 0505a285 dc35057d 8e8e9fdc 79139f8e ....}.5........y
1ceb4: c5c51376 c8687613 fb52b120 70700070 v....vh. .R.p.pp
1cec4: 70007070 70483836 e9484870 7777e90c pp.p68HppHH...ww
1ced4: fb5bab2b 2b2bc803 79202079 0d0d77c8 +.[...++y y.w..
1cee4: 31317976 13677979 31313131 6ee8e279 vy11yyg.1111y..n
1cef4: 40403145 2e34e2e2 fe1afec3 c1fe1afe E1@@..4.........
1cf04: 7e2cc1c1 34340d40 315ee240 135e3131 ..,~@.44@.^111^.
1cf14: 8f2e2b13 e4606096 42c1c360 a7f926d8 .+...``.`..B.&..
1cf24: 2717f956 bce0e027 19b3c6bc c6d07619 V..''........v..
1cf34: c6f4f450 5db35ec6 13d1e817 86a78d6b P....^.]....k...
1cf44: dc85ba83 6afefe2b 4b4b6e67 4b4b2626 ....+..jgnKK&&KK
1cf54: 39555555 f99ca7cc 05a28504 35057d7d UUU9........}}.5
1cf64: 8e9fdcdc 13dca08e d779c879 0d13c5c5 ........y.y.....
1cf74: 375b2b74 000000e3 cf480070 690c3636 t+[7....p.H.66.i
1cf84: 36367070 77e9e90c 37b02b2b 77c8c8d1 pp66...w++.7...w
1cf94: 201379c8 0d77c879 1331790d 79797931 .y. y.w..y1.1yyy
1cfa4: 31131379 31e27931 40313131 34e2e240 y..11y.1111@@..4
1cfb4: 1afec32e 1afe1afe 96c1c142 3440400d ........B....@@4
1cfc4: 31114034 5e313131 72132013 60609642 4@.1111^. .rB.``
1cfd4: 56e4e460 9861fec1 173a56a7 b8de2717 `..V..a..V:..'..
1cfe4: 5ec6e0b8 7519bbbb f4c6f7d0 41f7c6c6 ...^...u.......A
1cff4: d1d77c6b a7ee4920 164b1456 1ae4b4e2 k|.. I..V.K.....
1d004: 4b6e3166 4b26264b 5555554b 3a863a39 f1nKK&&KKUUU9:.:
1d014: 054b04f9 057d7d7d c5e8dc0e 9fc5a09f ..K.}}}.........
1d024: 76c86705 d7c5c513 79777479 0000102c .g.v....ytwy,...
1d034: 00707000 36361e0c cb707070 e90ccb0c .pp...66ppp.....
1d044: 37d82b79 0d2b2b5b 13792b77 0dc87913 y+.7[++.w+y..y..
1d054: 79790d0d 79793131 1313e831 e2793131 ..yy11yy1...11y.
1d064: 454531e2 e2117e76 fec36a34 1a1a1a1a .1EEv~..4j......
1d074: c156fe1a 40342cc1 117e3434 315fe25f ..V..,4@44~._._1
1d084: 4cafc513 fee42eb4 60e46060 57c1c1e4 ...L....``.`...W
1d094: 3a868609 b8271727 c6e0deaa bbbbbbb3 ...:'.'.........
1d0a4: 628075c9 f8c6c6f4 d7b9c4de 9c92f220 .u.b........ ...
1d0b4: 173a5686 60be768b 6e31e11a 26264b4b .V:..v.`..1nKK&&
1d0c4: 55554b26 863a3955 d5e7f93a 7d7d7d05 &KUUU9:.:....}}}
1d0d4: e8e89f05 c5c5dce8 c8793c8d 5e1331c8 .........<y..1.^
1d0e4: 74747679 00e3d119 cf007000 1e6d70e9 yvtt.....p...pm.
1d0f4: 70707070 0c69e936 37d8642b 0d2b2b5b pppp6.i.+d.7[++.
1d104: 79c8c8c8 c87913b3 c80d0d0d 79797979 ...y..y.....yyyy
1d114: 130e0e13 79313131 e831e2e2 11404031 ....111y..1.1@@.
1d124: c39434e2 1a1a1afe 8f1afe1a 46e4c1c1 .4.............F
1d134: 34344040 5e315f40 4c37afe8 c372130f @@44@_1^..7L..r.
1d144: 6060601a c14260e4 56cc81c1 b8b5273a .```.`B....V:'..
1d154: e0f4e0aa bbbb5ec6 5ec97474 c6c6c6b9 .....^..tt.^....
1d164: 50b527c4 9c845bd7 f956a79c ac768b27 .'.P.[....V.'.v.
1d174: 45b4acfe 4b4b4b5d 554b2626 9c555555 ...E]KKK&&KUUUU.
1d184: 55e73aa7 7da27d49 e89f357d 131333dc .:.UI}.}}5...3..
1d194: 79338d05 76760dc8 4674740d 6f644674 ..3y..vv.ttFtFdo
1d1a4: 00707070 cf1e6900 4870700c 69e93670 ppp..i...ppHp6.i
1d1b4: 37d1b3ab 772b2bb1 79c8760d 79202079 ...7.++w.v.yy y
1d1c4: 0d0d0dc8 797979c8 13359f79 79313131 .....yyyy.5.111y
1d1d4: 31e2e276 7e7e4031 94345f11 1a1afec3 v..11@~~._4.....
1d1e4: fefefe1a c1c1c3fe 34400224 e8314034 ........$.@44@1.
1d1f4: 0f4c4caf 775e13c5 60fe60fe 60e4e460 .LL...^w.`.``..`
1d204: 5742c1c3 b5273a56 f4f4b5b8 bb5ec6f4 ..BWV:'.......^.
1d214: 743874bb c6f83019 b592dec6 043cd7b9 .t8t.0........<.
1d224: 56149295 b41d27f9 d12eace4 4b4b5ddc ...V.'.......]KK
1d234: 4b26264b 55555555 559ca79c 7d7d05a2 K&&KUUUU...U..}}
1d244: dc8e7d7d 6733dce8 79f2a067 400dc879 }}....3gg..yy..@
1d254: 68680d76 d8467474 00707010 48003648 v.hhttF..pp.H6.H
1d264: 707036e9 cf360c48 37d12b0c 77b31393 .6ppH.6..+.7...w
1d274: c80d7777 c5d71379 0d0d0d31 3179760d ww..y...1....vy1
1d284: 13dc1379 79793179 e2407679 0d40e2e2 y...y1yyyv@...@.
1d294: 34e2117e 1afec3e6 1a1a1a1a c1601afe ~..4..........`.
1d2a4: 7ebbc3c1 c5314040 c58e4c93 b3132033 ...~@@1..L..3 ..
1d2b4: acc3e10d e4606060 c1c1e4e4 171494fe ....```.........
1d2c4: c6de17de 5ec6c4c6 387474bb f880bb38 .......^.tt88...
1d2d4: 8ddec6c6 65fb7c27 148a4171 b927f956 ....'|.eqA..V.'.
1d2e4: 94ace4be 4b5d4131 26264b4b 55554b4b ....1A]KKK&&KKUU
1d2f4: 9ccc0455 7d49494b 0e05057d 13dc13e8 U...KII}}.......
1d304: 79676767 c8c87979 76131331 7459b246 gggyyy..1..vF.Yt
1d314: 7070fcb4 44bb3600 70367070 69e97070 ..pp.6.Dpp6ppp.i
1d324: 0f64ab0c 2b205b4c 77777777 411379c8 ..d.L[ +wwww.y.A
1d334: 0d76130e 31790d0d 79797931 79797979 ..v...y11yyyyyyy
1d344: 40767931 40e2e2e2 5f117e7e 60c35a02 1yv@...@~~._.Z.`
1d354: 1a1a1aac 1afefe1a 94c1c142 0f3331b2 ........B....13.
1d364: 13e8b137 13131313 e4ab76b3 6060fe1a 7........v....``
1d374: 4260e460 7ae6c1c1 de17de27 f4c4c6c6 `.`B...z'.......
1d384: 7474bb80 5ebb3838 dec6c6d0 5221268d ..tt88.^.....&!R
1d394: 8ae8d1af 273a56cc ac60ac30 5ddc31be .....V:'0.`..1.]
1d3a4: 264b4b4b 554b4b26 f9e75555 49a2d5e7 KKK&&KKUUU.....I
1d3b4: 8e35057d 131313dc 67677913 c8797967 }.5......ygggyy.
1d3c4: afafc579 596876d7 70fcb474 70007070 y....vhYt..ppp.p
1d3d4: 703638e9 36704870 af2b1e69 b320c5ce .86ppHp6i.+... .
1d3e4: 777777c8 1379c877 7613c50e 79400d0d .wwww.y....v..@y
1d3f4: 79793131 79767979 76793179 e2e2e240 11yyyyvyy1yv@...
1d404: 117e7e40 c3e17ee2 1a1aac60 1a1a1a1a @~~..~..`.......
1d414: c156fe1a 37c572c1 313113af 13135e31 ..V..r.7..111^..
1d424: 465eb35e 60ace494 e4e46060 c1c1c360 ^.^F...```..`...
1d434: 17de178c c4c6c6de 7419b9f4 74383874 ...........tt88t
1d444: c6c61d5e b6c2eede 5eb35e41 3a86cc49 ^.......A^.^I..:
1d454: ace4c527 dc452c1a 4b4b4b5d 4b4b2626 '....,E.]KKK&&KK
1d464: e755554b 49a255e7 35350549 1313dc35 KUU..U.II.555...
1d474: 79797913 79797979 7d255ec8 4613af8e .yyyyyyy.^%}...F
1d484: fcd85959 36000070 cf3669bb e9367070 YY..p..6.i6.pp6.
1d494: d1abe936 b320afce 77777777 7976c877 6..... .wwwww.vy
1d4a4: 13d7d713 400d0d76 79793179 76c87976 ....v..@y1yyvy.v
1d4b4: 79797979 e2e24076 7e7e40e2 727ee240 yyyyv@...@~~@.~r
1d4c4: 1aac6042 1a1a1a1a e41a1a1a e542c1c1 B`............B.
1d4d4: 11e25f31 135e5f11 b3b35e13 2e42b440 1_..._^..^..@.B.
1d4e4: 606060fe c16060e4 deb060c1 c6c6de17 .```.``..`......
1d4f4: 1950f4c4 38387474 c6f7b374 9ec2adf4 ..P.tt88t.......
1d504: b35e8016 863a495e 42be053a e8d8ac6a ..^.^I:.:..Bj...
1d514: 4b4b5d41 4b26264b 554b4b4b a24b5555 A]KKK&&KKKKUUUK.
1d524: 35350549 13e89f8e 79793113 79797979 I.55.....1yyyyyy
1d534: a233c82b 138e8e7d d8595946 707070a6 +.3.}...FYY..ppp
1d544: 361e6900 70707070 ab1e0ccd 1320b137 .i.6pppp....7. .
1d554: 77c877c8 b3b3c877 13137979 0d0dc831 .w.ww...yy..1...
1d564: 7979790d 76767979 79797976 e2407979 .yyyyyvvvyyyyy@.
1d574: 7e40e2e2 7ee2117e 1ae442e5 1a1a1aac ..@~~..~.B......
1d584: fe1a1a1a c1c1e41a 4011342e 5e5f1111 .........4.@.._^
1d594: 79b3135e 60193179 6060ac1a 60e46060 ^..yy1.`..````.`
1d5a4: 32c1c142 c6deb506 50f4c6c6 38747476 B..2.......Pvtt8
1d5b4: 80b37438 9e99adc6 5ef78b27 f96e5eb3 8t......'..^.^n.
1d5c4: a6a03aa7 132e6ae4 4b5d0edc 26264b4b .:...j....]KKK&&
1d5d4: 4b4b4b4b 47855555 35350549 139f3535 KKKKUU.GI.5555..
1d5e4: 76791313 79797976 05797679 af8e8ed5 ..yvvyyyyvy.....
1d5f4: 7454685e e970a6b4 703644bb cf707036 ^hTt..p..D6p6pp.
1d604: bb6d4836 d164fb53 c8ab772b b379c8c8 6Hm.S.d.+w....y.
1d614: 5e792b79 77c8795e 2b760d0d 79797979 y+y^^y.w..v+yyyy
1d624: 79767679 40797979 40e2e2e2 e2117e7e yvvyyyy@...@~~..
1d634: e460ab11 acacac1a 1a1a1a1a e41a1a1a ..`.............
1d644: 025ac1c1 5f11115f b313b331 465e7679 ..Z._.._1...yv^F
1d654: fe2ee466 60606060 c1566060 b5b54dc1 f...``````V..M..
1d664: f4c6c6c6 74bb5ec6 64bb3838 7b99add7 .....^.t88.d...{
1d674: f78b2626 5d5eb35e a3f9a704 666a1a60 &&..^.^]....`.jf
1d684: 0e0e4131 264b4b47 4b4b4b26 4b55554b 1A..GKK&&KKKKUUK
1d694: 353549a2 dc35350e 79311313 79797676 .I55.55...1yvvyy
1d6a4: 33767979 258e8ed5 59597413 0065f574 yyv3...%.tYYt.e.
1d6b4: bbbb0c48 707070cf 2a0c0ccf ab4d104d H....ppp...*M.M.
1d6c4: c8ab77ab 7979c8c8 2bc8c879 c82b7979 .w....yyy..+yy+.
1d6d4: c80d7777 79792bc8 76767979 76797979 ww...+yyyyvvyyyv
1d6e4: e2e24040 117e7e40 ac77115f acacfe42 @@..@~~._.w.B...
1d6f4: acacacac 1a1a1a1a c1c142fe 5fe2a4f5 .........B....._
1d704: 135e315f 797679b3 6ae47240 6060601a _1^..yvy@r.j.```
1d714: 60fe6060 33acc1c1 c6c6c6b5 bb80f4f4 ``.`...3........
1d724: 77383874 bcbde3d8 8b2627c4 5eb35e80 t88w.....'&..^.^
1d734: 8da7ee5d 1a6a4271 0e414553 4b4b470e ]...qBj.SEA..GKK
1d744: 4b4b2626 85554b4b 35354947 0e0e0e0e &&KKKKU.GI55....
1d754: 793113dc 2b797676 2b2b2b2b 8e9fc520 ..1yvvy+++++ ...
1d764: 74590dc5 65f53859 70000048 7036e969 ..YtY8.eH..pi.6p
1d774: d3367070 ab5337ab 2bab77ab c8c82b79 pp6..7S..w.+y+..
1d784: 77770dc8 c82b792b 0d770dc8 7979c8c8 ..ww+y+...w...yy
1d794: 76797979 79797979 40404076 7e7e40e2 yyyvyyyyv@@@.@~~
1d7a4: 34e25f11 acfe4294 acacacac 1aacacac ._.4.B..........
1d7b4: 42fe1a1a 7ee5c1c1 5e315f5f 7679b35e ...B...~__1^^.yv
1d7c4: febb5f76 60962eac 60606060 c1c142fe v_.....`````.B..
1d7d4: c6f4168c b9c4f4c6 38387419 6b26e3e5 .........t88..&k
1d7e4: 2727c4c4 b35e808b 148df65e 9442a609 ..''..^.^.....B.
1d7f4: 0ee85b1a 4b47350e 2626264b 554b4b4b .[...5GKK&&&KKKU
1d804: 35354785 9f0e0e0e 31e8dc9f 79797679 .G55.......1yvyy
1d814: c8c8c879 13c8c8c8 747479dc f538a959 y........yttY.8.
1d824: 0c44446f 48700070 0c693670 03e32cab oDD.p.pHp6i..,..
1d834: 2b7777ab c82b3333 7777770d 79792bab .ww+33+..www.+yy
1d844: 0d0dc82b 7976c80d 79797976 79797976 +.....vyvyyyvyyy
1d854: 40407679 7e40e240 11e2117e fe42e134 yv@@@.@~~...4.B.
1d864: acacacac acacacac 1a1a1a1a 42c1c3fe ...............B
1d874: 5e311164 79b35e5e 465e7676 1a941a57 d.1^^^.yvv^FW...
1d884: 60606060 c160fe60 f43342c1 c4f4c6c6 `````.`..B3.....
1d894: 3874c98b 35d5102f 27c4c61d b35e8b27 ..t8/..5...''.^.
1d8a4: 92f65eb3 fefe71cc 8713ac57 49350e0e .^...q..W.....5I
1d8b4: 26264b4b 554b4b26 0e4b5555 dcdc410e KK&&&KKUUUK..A..
1d8c4: 33dcdcdc 79767613 c82b7913 7777c8c8 ...3.vvy.y+...ww
1d8d4: 1274c80d bb3b5459 0c36bebe 7036e944 ..t.YT;...6.D.6p
1d8e4: 69707070 2cced144 2b1e77ab c86705a0 pppiD..,.w.+..g.
1d8f4: 1e1277c8 792bab77 0dc82b79 79c80d0d .w..w.+yy+.....y
1d904: 79767979 79767676 40767979 40e24040 yyvyvvvyyyv@@@.@
1d914: e2117e7e 427240e2 acacac60 acacacac ~~...@rB`.......
1d924: 1aacacac c3feac1a 11b38fc1 b35e5e5e ............^^^.
1d934: 5e767679 941ae146 6060feac fefefefe yvv^F.....``....
1d944: 5ac1c142 c6c6c6b9 745ec4c4 c553a6b4 B..Z......^t..S.
1d954: c4c68013 5e8b2717 f65eb3b3 42bef992 .....'.^..^....B
1d964: 13a694ac 35350e41 264b476e 4b4b2626 ....A.55nGK&&&KK
1d974: 4b55554b 45e8e80e 13131345 76763113 KUUK...EE....1vv
1d984: 2b791379 77c8c8c8 54597474 543b0854 y.y+...wttYTT.;T
1d994: 00b46f64 36367000 70707070 cefbbf69 do...p66ppppi...
1d9a4: 771eabd1 ab670533 127777ab 2b77771e ...w3.g..ww..ww+
1d9b4: c8797979 760d0d0d 79797979 76767676 yyy....vyyyyvvvv
1d9c4: 76797979 e2e24040 e27e7e40 72d73131 yyyv@@..@~~.11.r
1d9d4: acace460 acacacac acacacac ac1a1aac `...............
1d9e4: 8fc1c3fe 5e5ee2b3 767679b3 fe2f405e ......^^.yvv^@/.
1d9f4: fe1a6a94 fefefefe c1c1fefe c6c65ee4 .j...........^..
1da04: 80dedec6 bbb4a6b4 c65e1964 8b2717c4 ........d.^...'.
1da14: 5eb3b35e a6842630 66ac9442 350e0e45 ^..^0&..B..fE..5
1da24: 4b476e35 4b262626 5555554b 45e86e4b 5nGK&&&KKUUUKn.E
1da34: 13311345 76791313 31137976 77c82b79 E.1...yvvy.1y+.w
1da44: 74597474 12595974 646fb459 00007036 ttYttYY.Y.od6p..
1da54: 70707000 d2bf4469 1e1e64b1 ab2b67ab .pppiD...d...g+.
1da64: 777777ab c8771e12 7979792b 0d0d4076 .www..w.+yyyv@..
1da74: 79797976 76767679 79797676 e2404076 vyyyyvvvvvyyv@@.
1da84: 407e4011 4c8ec531 ace46a4d acacac2e .@~@1..LMj......
1da94: acacacac acacacac c3feacac 5fb38fc1 ..............._
1daa4: 7679b313 bf765e5f ac94941a fefe1afe ..yv_^v.........
1dab4: 421afefe 50e1c1c1 b5dec6c6 38b4a647 ...B...P....G..8
1dac4: c9191938 2717c650 5eb35e16 a326305e 8...P..'.^.^^0&.
1dad4: 1ae660fe 350e8753 a2493535 2626264b .`..S..555I.K&&&
1dae4: 55554b4b dc0e4b55 313145e8 79317979 KKUUUK...E11yy1y
1daf4: 13797676 2b791313 c8127777 74591279 vvy...y+ww..y.Yt
1db04: bebe7412 cbe9e9bb 70707070 53d36970 .t......pppppi.S
1db14: 1eabd1ea 7777771e 7777abab 77771277 .....www..www.ww
1db24: 13792bc8 40763113 7979c80d 76797979 .+y..1v@..yyyyyv
1db34: 797676c8 40407679 76e2e211 8e4c7d13 .vvyyv@@...v.}L.
1db44: 42e60de8 2e2e2eac acacac2e acacacac ...B............
1db54: acacacac 42c1c3fe 795e76d8 5f5e5f76 .......B.v^yv_^_
1db64: 94942ebb fe1a1aac fefefefe fec156fe .............V..
1db74: dec6c65e 745bba9e 19193838 17c6f719 ^.....[t88......
1db84: b35e1627 17305e5e e6ace471 0e0eaf1a '.^.^^0.q.......
1db94: 49053535 264b4749 854b4b26 35475555 55.IIGK&&KK.UUG5
1dba4: 45dc0e0e 79793113 76c8c879 13137979 ...E.1yyy..vyy..
1dbb4: 7474c879 54747479 10193ba9 697038f5 y.ttyttT.;...8pi
1dbc4: 367036cd 44e90ce9 1eab2c10 77777712 .6p6...D.,...www
1dbd4: 77777777 771e7777 792bc877 31e8d713 wwwwww.ww.+y...1
1dbe4: 79c84076 79797979 7676c876 40767679 v@.yyyyyv.vvyvv@
1dbf4: d71331e2 dc8e3c8e 0b7ee231 2e2e1a42 .1...<..1.~.B...
1dc04: 2e2e2e2e acac2e2e acacacac c31aacac ................
1dc14: 762cc3c1 5e5f76b3 9494745f 1a1a6a57 ..,v.v_^_t..Wj..
1dc24: 1a1a1a1a c1e41afe c4d053c1 5e7bc0ad .........S....{^
1dc34: 19383874 f85f1919 5e1627b5 415e5e5e t88..._..'.^^^^A
1dc44: 9442945d 6e0e9457 0535350e 4b474949 ].B.W..n.55.IIGK
1dc54: 4b4b2626 a24b554b 0e35356e 1313dc0e &&KKKUK.n55.....
1dc64: 0dc87979 1379c80d 74c83113 12747474 yy....y..1.tttt.
1dc74: b4385454 00546410 00707000 d30ce969 TT8..dT..pp.i...
1dc84: 44bf10f5 7777771e c8777777 7777c82b ...D.wwwwww.+.ww
1dc94: 2bc87777 d7c51379 7676795e 79797979 ww.+y...^yvvyyyy
1dca4: 76c87679 79767676 0fdc3131 3113b14c yv.vvvvy11..L..1
1dcb4: 7e404031 2efefebf 2e2e2e2e 2e2e2e2e 1@@~............
1dcc4: acacacac acacacac c1c1e4ac 5e790d53 ............S.y^
1dcd4: 6a465f5e 1a6a576a 1a1a1a1a 1a1a1a1a ^_FjjWj.........
1dce4: 80fec1c1 2755baad 38387480 c9191919 ......U'.t88....
1dcf4: 1627deda 5e805e5e 60fe4141 5d6694e6 ..'.^^.^AA.`..f]
1dd04: 35350e6e 49494905 4b26264b a24b4b4b n.55.IIIK&&KKKK.
1dd14: 3535356e dc0e0e35 767913e8 c8c8c80d n5555.....yv....
1dd24: c879792b 74122bc8 64767454 a974be66 +yy..+.tTtvdf.t.
1dd34: 70000000 6d360070 44e110bf c8771ee9 ...pp.6m...D..w.
1dd44: c8c8c8c8 c8b31379 c8777777 d7137979 ....y...www.yy..
1dd54: 767913c5 79797976 76767979 31797976 ..yvvyyyyyvvvyy1
1dd64: 4c8e3313 40e2330f 4040e240 606a7440 .3.L.3.@@.@@@tj`
1dd74: 2e2e2e2e 2e2e2e2e 2e6a6a2e acac6aac .........jj..j..
1dd84: 96ac2eac 0d37c1c3 46315e31 6a576a94 ......7.1^1F.jWj
1dd94: 1a1a1a1a 1a1a1a1a c1c1e4ac 27bcb671 ............q..'
1dda4: 3846b926 19194638 27c45f46 808080c4 &.F88F..F_.'....
1ddb4: e4b106e8 716a321a 35350e6b 49494905 .....2jqk.55.III
1ddc4: 4b4ba26e 4947474b 0e0e0e0e 0e0e0e0e n.KKKGGI........
1ddd4: 13e89f0e c80dc879 c8c8c877 74c87974 ....y...w...ty.t
1dde4: b3c85959 54b4a6b4 700069a9 cf703636 YY.....T.i.p66p.
1ddf4: bf6fe144 2b774ed3 b379b3b3 13d713b3 D.o..Nw+..y.....
1de04: 0d7777c8 b3b379c8 79e8c5e8 79797640 .ww..y.....y@vyy
1de14: 76797979 13797676 7d4c8e33 7ee231c5 yyyvvvy.3.L}.1.~
1de24: 40e2407e ed344040 a6942ee4 2e2e2e2e ~@.@@@4.........
1de34: 6a6a6a2e 6a6a6a6a 2e2e2e6a c18fac2e .jjjjjjjj.......
1de44: 5f11b365 57941a19 1aacac94 1a1a1a1a e.._...W........
1de54: c11a1a1a c4411ac1 c916928a c9463838 ......A.....88F.
1de64: 1dc94619 8030c4de 6645e830 ac322e42 .F....0.0.EfB.2.
1de74: 350e17b1 49050535 496e3549 0e6e4949 ...55..II5nIIIn.
1de84: 4545e841 e8e84545 dc0edcdc c87913e8 A.EEEE........y.
1de94: 77c8c8c8 77677777 c874592b bb6fbed1 ...wwwgw+Yt...o.
1dea4: 700c4f08 70cb0ccb e16f780c 2b1e2dd3 .O.p...p.xo..-.+
1deb4: d1b3b3b3 d720d1d1 0d77c813 135e76c8 ...... ...w..v^.
1dec4: e8d71313 79764079 79767979 13797676 ....y@vyyyvyvvy.
1ded4: c5fb37af 40e23113 e2400d0d 7e404040 .7...1.@..@.@@@~
1dee4: 94ac6072 a6a69494 6a6a2e2e 6a6a6a6a r`........jjjjjj
1def4: 6a6a6a6a 2e2e2e2e 538fc196 326a5146 jjjj.......SFQj2
1df04: acac9457 acacacac 6a1a1aac 20c3c142 W..........jB..
1df14: 6b9227c4 467474c9 191919c9 7cc41d5f .'.k.ttF...._..|
1df24: 13303030 6694e41a 0e1735a6 05050535 000....f.5..5...
1df34: 35354949 0e353535 45e8dc41 31313131 II55555.A..E1111
1df44: e8133131 3113e8e8 c82b7679 2b7477c8 11.....1yv+..wt+
1df54: 7459c8c8 b4eb7119 364fa954 6de96970 ..Yt.q..T.O6pi.m
1df64: a6ae0c36 770c2dae d1b3b32b d7201320 6....-.w+... . .
1df74: 77c813d7 13c8c8c8 e813e8d7 764076e8 ...w.........v@v
1df84: 76797979 33797979 13b137fb 4040e231 yyyvyyy3.7..1.@@
1df94: 400d0d40 404040e2 1a1aab40 94949494 @..@.@@@@.......
1dfa4: 949494a6 6a949494 946a6a6a 2e2e2e6a .......jjjj.j...
1dfb4: e4ac2e2e 94fefec3 6a6a9457 acacacac ........W.jj....
1dfc4: acacacac c1c11a6a 8d271d5a 74745f17 ....j...Z.'.._tt
1dfd4: 46c9c946 b95f7619 30b9b962 32fee45b F..F.v_.b..0[..2
1dfe4: 496e9494 0505350e 35494905 0e0e0e35 ..nI.5...II55...
1dff4: dcdc410e 313145e8 31793131 13133131 .A...E1111y111..
1e004: 13133131 74c87979 54591238 10ead174 11..yy.t8.YTt...
1e014: a94fa9bb 0ccf7070 240c69e9 69e92feb ..O.pp...i.$./.i
1e024: b32bc81e 201313d1 7713c520 c82b7977 ..+.... ..wwy+.
1e034: d7c5d7b3 4076e8d7 76797976 b1136779 ......v@vyyvyg..
1e044: 13330f4c e2404079 7e0d40e2 4040e240 L.3.y@@..@.~@.@@
1e054: e6344040 94949460 94949494 94949494 @@4.`...........
1e064: 94949494 a6949494 a62e2e2e 6060ac6a ............j.``
1e074: acfe6060 6a6a6a6a 6a6a6a6a 426a6a6a ``..jjjjjjjjjjjB
1e084: b5e8fec1 745e1792 c9c94674 76761946 ......^ttF..F.vv
1e094: 7c7c7c80 ace4be06 17716a5a 05350e6e .|||....Zjq.n.5.
1e0a4: 49050505 0e0e0e35 0edc0e0e e8dc410e ...I5........A..
1e0b4: 76313145 79797979 dc133179 2b870edc E11vyyyyy1.....+
1e0c4: 5974c874 eb2c5954 3ba9cdb4 3670703b t.tYTY,....;;pp6
1e0d4: d3cb0ccf 6db4d210 c81e0ccf 13d1b32b .......m....+...
1e0e4: 13d72020 797977c8 c513792b 79e84141 ...wyy+y..AA.y
1e0f4: 79797640 37af1379 3113c5fb 40767679 @vyyy..7...1yvv@
1e104: 7e40e2e2 40e2407e 7e404040 942e600b ..@~~@.@@@@~.`..
1e114: 94949494 94949494 94949494 94949494 ................
1e124: a6a6a694 949494a6 2eacac6a 6a6a6a6a ........j...jjjj
1e134: 6a6a6a6a 946a6a6a 5bc1c31a 7517926b jjjjjjj....[k..u
1e144: c9467446 761919c9 41305e76 602ee87c FtF....vv^0A|..`
1e154: b1ac2494 35353517 35050505 0e0e3505 .$...555...5.5..
1e164: dc87870e 41410e0e e8e84141 76793131 ......AAAA..11yv
1e174: 13767676 dcb56edc 74797779 a6bb5459 vvv..n..ywytYT..
1e184: 3ba9386f 70703b3b 69cbcf36 2f6fa678 o8.;;;pp6..ix.o/
1e194: e90c69e9 b32bc877 2020d1d1 7977c813 .i..w.+... ..wy
1e1a4: 137979b3 d74141d7 31764031 4cfb3313 .yy..AA.1@v1.3.L
1e1b4: 797913b1 40767979 40e24040 e2e2407e ..yyyyv@@@.@~@..
1e1c4: 40404040 ac1aab40 94949494 94949494 @@@@@...........
1e1d4: 94949494 94949494 94949494 94949494 ................
1e1e4: 94949494 6a6a6a94 6a6a6a6a 6a6a6a6a .....jjjjjjjjjjj
1e1f4: c1e46a94 17264166 46461980 c9c9c9c9 .j..fA&...FF....
1e204: 5e5e7676 96c57c06 2e3266fe 0e0e178e vv^^.|...f2.....
1e214: 35050535 0e353535 dcdc870e 0e0e0edc 5..5555.........
1e224: 350e4141 dc9f0e35 76767913 6eb5e879 AA.55....yvvy..n
1e234: c8777933 71385412 543b2feb 0c3b3bcd 3yw..T8q./;T.;;.
1e244: 0070cb0c 51a6892d 0c690cd3 2bc81ee9 ..p.-..Q..i....+
1e254: 13b3b32b 0d792020 7979b3c8 41d7e8b3 +... y...yy...A
1e264: 67795e30 0f4cb133 76791333 76797979 0^yg3.L.3.yvyyyv
1e274: e2404040 e2404040 4040e2e2 e634e240 @@@.@@@...@@@.4.
1e284: 949494fe 94949494 57575757 94575757 ........WWWWWWW.
1e294: 94949494 94949494 94949494 94949494 ................
1e2a4: 94949494 6a6a6a6a fe576a6a 263396c1 ....jjjjjjW...3&
1e2b4: c9c9f727 c9c9c946 31767676 7180e831 '...F...vvv11..q
1e2c4: 5732ace4 0e6e0ea6 0505350e 35353535 ..2W..n..5..5555
1e2d4: dcdc870e 0e0edcdc 6b5d4141 a2a2a26e ........AA]kn...
1e2e4: 13dc35a2 6b5d7979 742b7913 b4595438 .5..yy]k.y+t8TY.
1e2f4: 3bb3e3eb 3b3bcd54 48700c44 a60bec48 ...;T.;;D.pHH...
1e304: cf36ecae 771e0c69 2b2b2bc8 b32013b3 ..6.i..w.+++.. .
1e314: 79790d0d e8137979 20c54130 af3737af ..yyyy..0A. .77.
1e324: 76767913 79797676 40e24076 e21140e2 .yvvvvyyv@.@.@..
1e334: 40e23131 40404040 9494600b 94949494 11.@@@@@.`......
1e344: 57575757 57575757 94945757 94949494 WWWWWWWWWW......
1e354: 94949494 94949494 94579494 94949494 ..........W.....
1e364: 57949494 f1c3c3ac 5fb92727 c9c9c95f ...W....''.__...
1e374: 317676c9 31e8e85e 2494e4a6 0e0e6f6a .vv1^..1...$jo..
1e384: 35350e0e 35353535 dcdc0e0e 0edcdcdc ..555555........
1e394: de0e410e d5a2496b a2d58585 5de8e835 .A..kI......5..]
1e3a4: c8c82b79 bb597474 79f26510 08080854 y+..ttY..e.yT...
1e3b4: 70706908 e12d7036 0cd3aea6 1e69cbcf .ipp6p-.......i.
1e3c4: c8c87777 13b3b3c8 c877c8b3 79797979 ww........w.yyyy
1e3d4: 8e25c513 20b14c93 76797967 79767676 ..%..L. gyyvvvvy
1e3e4: 40407679 e240e240 e23131e2 e2404040 yv@@@.@..11.@@@.
1e3f4: ac1a64e2 57949457 57575757 57575757 .d..W..WWWWWWWWW
1e404: 57575757 94949494 94949494 57575757 WWWW........WWWW
1e414: 57575757 57575757 94949457 c1e49457 WWWWWWWWW...W...
1e424: b94b355a 5f5f7575 5e76c95f 31dc35dc Z5K.uu___.v^.5.1
1e434: 5796965b 0e712e24 350e0e0e 35353535 [..W$.q....55555
1e444: dc0e3535 dcdcdcdc 6b410e0e a2490e6b 55........Akk.I.
1e454: 858585d5 dc35a2d5 c8767913 77c8c877 ......5..yv.w..w
1e464: b371eb53 0808a946 36cb0808 2d707048 S.q.F......6Hpp-
1e474: d872a651 69cb0c64 bb771ee9 b32bc8c8 Q.r.d..i..w...+.
1e484: 77c879b3 7979c877 93c51379 13c585b6 .y.ww.yyy.......
1e494: 79797979 76404076 40767979 e2404040 yyyyv@@vyyv@@@@.
1e4a4: 3131e2e2 e2404040 e64031e2 575757fe ..11@@@..1@..WWW
1e4b4: 57575757 575757e6 57575757 57575757 WWWW.WWWWWWWWWWW
1e4c4: 57575757 57575757 57575757 57575757 WWWWWWWWWWWWWWWW
1e4d4: 57575757 96575757 4b1bacc1 80b975b9 WWWWWWW....K.u..
1e4e4: 5e5f5e5e e87dd533 1ae47131 afac3232 ^^_^3.}.1q..22..
1e4f4: 0e0e0e35 3535350e 0e353535 dcdcdcdc 5....555555.....
1e504: 414141dc 490e0e5d 8585d5a2 9f8e7dd5 .AAA]..I.....}..
1e514: 5e13c5dc 7720c879 d1e365e5 54125976 ...^y. w.e..vY.T
1e524: 693b0808 48480069 ae659069 69e9d1e5 ..;ii.HHi.e....i
1e534: 1e1e0c69 c8c8bb77 c8c82b2b 2bc87777 i...w...++..ww.+
1e544: 933320b3 13258521 79797979 40407679 . 3.!.%.yyyyyv@@
1e554: 76797976 40404040 31e2e2e2 40404031 vyyv@@@@...11@@@
1e564: e23131e2 5794fed8 57e65757 e6e6e6e6 .11....WWW.W....
1e574: e6e6e6e6 57e6e6e6 57e6e6e6 57575757 .......W...WWWWW
1e584: 57575757 57575757 57575757 57575757 WWWWWWWWWWWWWWWW
1e594: b08fc31a 62757c4b 5e5e8062 dc923c13 ....K|ubb.^^.<..
1e5a4: e4a631e8 a666242e 0e0e35c5 35350e0e .1...$f..5....55
1e5b4: 35353535 dcdcdc0e 4141e8e8 0e0e4187 5555......AA.A..
1e5c4: d5d5a249 dc25a2d5 9f9fdcd7 13c85e33 I.....%.....3^..
1e5d4: b4eb6f64 795477b3 3b080819 690c6969 do...wTy...;ii.i
1e5e4: fcf56948 0c440cae 0c0c6969 bb77771e Hi....D.ii...ww.
1e5f4: c82bc8ab c8777777 4cafd1b3 41f32537 ..+.www....L7%.A
1e604: 7679795e 40767676 79797676 40404076 ^yyvvvv@vvyyv@@@
1e614: 4040e240 4040e2e2 3131e240 ac2ec831 @.@@..@@@.111...
1e624: e6e657e6 e6e6e6e6 e6e6e6e6 e6e6e6e6 .W..............
1e634: e6e6e6e6 e6e6e6e6 e6e6e6e6 575757e6 .............WWW
1e644: 57575757 57575757 c1426ae6 753d4924 WWWWWWWW.jB.$I=u
1e654: 5e7ce062 dc05dc31 fed13113 94249496 b.|^1....1....$.
1e664: 0e35dc66 350e0e0e 35353535 dcdc0e35 f.5....555555...
1e674: 41e8e8dc 41dcdcdc a2a2490e dc8ea2a2 ...A...A.I......
1e684: 9fdc1313 c813c59f 53eb7120 3838b377 ........ q.Sw.88
1e694: 0808c8b3 6944cb3b 4d693648 692d7152 ....;.DiH6iMRq-i
1e6a4: 44e96969 771ee96d c8ab7777 c87777c8 ii.Dm..www...ww.
1e6b4: 4cb1d179 301320b1 7979e841 76767679 y..L. .0A.yyyvvv
1e6c4: 79767640 e2e27679 40404040 40e2e240 @vvyyv..@@@@@..@
1e6d4: 31e24040 e1403131 e6e657fe e6e6e6e6 @@.111@..W......
1e6e4: e6e6e6e6 3281e6e6 e6323232 e6e6e6e6 .......2222.....
1e6f4: e6e6e6e6 e6e6e6e6 e6e6e6e6 57575757 ............WWWW
1e704: e457e657 3d3510c1 7f7f6280 3113e830 W.W...5=.b..0..1
1e714: 53313131 2432fee4 0e877194 0e0e0e0e 111S..2$.q......
1e724: 35353535 dc0e3535 e8e8e8dc e8e8dcdc 555555..........
1e734: a2490e41 9f35a2a2 dc1313e8 13c59f9f A.I...5.........
1e744: 10ebb1c8 547459bb 0838b377 6969a554 .....YtTw.8.T.ii
1e754: 0ccb69cb ca66521b e9690c0c 6d6dbfbf .i...Rf...i...mm
1e764: 7777bb77 c877c877 4cfb5b2b 767967af w.www.w.+[.L.gyv
1e774: 31307ce8 76767979 76764076 40767979 .|01yyvvv@vvyyv@
1e784: 4040e2e2 e2e24040 e24040e2 e23131e2 ..@@@@...@@..11.
1e794: 322eac2b e6e6e6e6 e6e6e6e6 578181e6 +..2...........W
1e7a4: e6575757 32323232 e6e6e632 e6e6e6e6 WWW.22222.......
1e7b4: e6e6e6e6 57e6e6e6 e6e65757 35acc196 .......WWW.....5
1e7c4: 7f62807f 31e86e6b e2313131 32ac6094 ..b.kn.1111..`.2
1e7d4: 0eb16a24 0e0e0e0e 3535350e 0e353535 $j.......555555.
1e7e4: 45e8dcdc e8dcdce8 490edce8 9f35a2a2 ...E.......I..5.
1e7f4: 131333dc 209f9fdc 6565d179 a554775b .3..... y.ee[wT.
1e804: 59797754 0054a508 cb36e90c a6711b43 TwyY..T...6.C.q.
1e814: 690c0c78 44e5440c 77bb77e9 2b777777 x..i.D.D.w.wwww+
1e824: 0fe32c64 c879d15b 41415e0d 76797913 d,..[.y..^AA.yyv
1e834: 76407676 76797979 e2e2e240 40407e40 vv@vyyyv@...@~@@
1e844: 404040e2 31314040 fee17e31 323232e6 .@@@@@111~...222
1e854: 81323232 e6e68181 9778781c 81e6e68c 222......xx.....
1e864: 81818181 81818181 81818181 e6e6e681 ................
1e874: 575757e6 96c31ae6 7c807f9f 4517276b .WWW.......|k'.E
1e884: 31313131 94fefeb3 c52e3224 0e870e0e 1111....$2......
1e894: 350e0e0e 0e353535 e8dcdc0e e8dce845 ...5555.....E...
1e8a4: 0edce845 0e7da249 1313e8dc c59fdc13 E...I.}.........
1e8b4: ebe3d1b3 5474772c 54547438 3ba53b54 ....,wtT8tTTT;.;
1e8c4: 69704870 ae0c2a6d 0c44e165 bfe969cb pHpim*..e.D..i..
1e8d4: bb1ee944 2b7777bb 53e3b103 797967d1 D....ww+...S.gyy
1e8e4: 30790dc8 76791341 40767676 79797676 ..y0A.yvvvv@vvyy
1e8f4: 76407679 7e7e40e2 40e2e240 e2404011 yv@v.@~~@..@.@@.
1e904: 64e23131 32322eac 81818132 e6818181 11.d..222.......
1e914: a91f0091 9078543b 818181e6 81818181 ....;Tx.........
1e924: 81818181 81818181 e6e6e681 c32ee6e6 ................
1e934: 807fafe4 6e27177c 31313145 1ae4f1e2 ....|.'nE111....
1e944: 94662466 870e0ee8 0e0e0e0e 35353535 f$f.........5555
1e954: e8dc0e0e dce84545 dce845e8 35a2350e ....EE...E...5.5
1e964: 1333e8dc 9f331313 3f3713c5 54597453 ..3...3...7?StYT
1e974: 3820d174 543b5408 36000054 48cb6d44 t. 8.T;TT..6Dm.H
1e984: 2fa6102d 0c69690c 1ee94444 64ab1e1e -../.ii.DD.....d
1e994: 5be3fbd1 79797967 400dc879 791341e8 ...[gyyyy..@.A.y
1e9a4: 76797676 79767676 40767979 7e40e276 vvyvvvvyyyv@v.@~
1e9b4: e2e2407e 40404040 31e231e2 e6fe2440 ~@..@@@@.1.1@$..
1e9c4: 81813232 81818181 367036ed a93bcd4f 22.......6p6O.;.
1e9d4: e681784f 81818181 81818181 81818181 Ox..............
1e9e4: e6818181 94e6e6e6 6bb14242 17b85d30 ........BB.k0]..
1e9f4: 3131805d 60667e31 942432ac 0e0ee871 ].111~f`.2$.q...
1ea04: 0e0e8787 0e350e0e dc0e0e0e 454545e8 ......5......EEE
1ea14: 4545e8e8 35350edc 13dcdc35 33133113 ..EE..555....1.3
1ea24: 3ffbc59f 7459bb37 b3d12b77 3b543854 ...?7.Ytw+..T8T;
1ea34: 70703808 69367070 eb0b6936 69690cbe .8pppp6i6i....ii
1ea44: 0c0c6d0c 64441e1e d1fb37b0 792b2b2b .m....Dd.7..+++y
1ea54: 0dc82b79 13d75e0d 79767679 76767676 y+...^..yvvyvvvv
1ea64: 40767979 40e27640 e2e24040 404040e2 yyv@@v.@@@...@@@
1ea74: e2e2e240 ac03e231 81328194 81818181 @...1.....2.....
1ea84: 70362281 4f4f361f ec1f4f4f 81ed81ed ."6p.6OOOO......
1ea94: edededed 81818181 81818181 e6e6e681 ................
1eaa4: 71c3e457 1717416e 31807f17 1a793131 W..qnA.....111y.
1eab4: 24246afe 0edc2c94 41410e0e 0e0e0e0e .j$$.,....AA....
1eac4: 410e0e0e 454545dc 4545e845 0e41e845 ...A.EEEE.EEE.A.
1ead4: dc9f0e0e 13131313 3ffb9f33 38382be3 ........3..?.+88
1eae4: 202b2b5b 54191212 7077083b 6dcb0070 [++ ...T;.wpp..m
1eaf4: 69cb360c cf723f24 690c0c69 d864e90c .6.i$?r.i..i..d.
1eb04: 03b1e32c 2bc8c82b c82b7979 13790d0d ,...+..+yy+...y.
1eb14: 76767931 76767676 76767976 e2e24076 1yvvvvvvvyvvv@..
1eb24: e24040e2 40e23131 e2e24040 7e31e2e2 .@@.11.@@@....1~
1eb34: 81e61a8c 81818181 709081ed 361f7070 ...........ppp.6
1eb44: 36363636 81ed6970 edededed edededed 6666pi..........
1eb54: 818181ed e6818181 c36057e6 6e5d5d37 .........W`.7]]n
1eb64: 067f476e b4e23131 24661a60 87339432 nG..11..`.f$2.3.
1eb74: 41870e0e 0e0e0e41 0e0e0e0e e845e8dc ...AA.........E.
1eb84: 45e84545 41e84531 dc0e0e0e 131313dc EE.E1E.A........
1eb94: 3ffb3313 747403fc 2b77d1b3 74775474 .3.?..tt..w+tTwt
1eba4: 773b3b54 0c007070 3636366d 2e6f2d70 T;;wpp..m666p-o.
1ebb4: 690ccd78 d8d30c69 032ce30f c8c877c8 x..ii.....,..w..
1ebc4: 2b797979 0d0d0dc8 76797979 76767676 yyy+....yyyvvvvv
1ebd4: 79797676 31e27676 e2e23131 e2456e45 vvyyvv.111..EnE.
1ebe4: e24040e2 31e23131 946aabe2 eded81ed .@@.11.1..j.....
1ebf4: 7381eded 1f707070 1f1f1f1f ec007070 ...sppp.....pp..
1ec04: ededed81 edededed edededed 81818181 ................
1ec14: 96e632e6 5d0e10c3 6e475d06 7e313106 .2.....].]Gn.11~
1ec24: 24ace4be e866328c 87410e0e 0e414187 ...$.2f...A..AA.
1ec34: 0e0e0e0e e8dcdc0e e8e845e8 e8453145 .........E..E1E.
1ec44: 0e0e0e41 1313dc5d 3fb11313 7477b065 A...]......?e.wt
1ec54: 2bd1f22b 38593877 cd543b12 70707038 +..+w8Y8.;T.8ppp
1ec64: 70704870 d3693670 6978a6a6 bfd30c69 pHppp6i...xii...
1ec74: 64d8e3fb c8c877c8 797979c8 0dc8c82b ...d.w...yyy+...
1ec84: 79760d0d 76767976 79767676 31317931 ..vyvyvvvvvy1y11
1ec94: 31313131 456b2745 e2e23131 31313131 1111E'kE11..1111
1eca4: 90343131 eded811a edededed 70007073 114.........sp.p
1ecb4: 701f7070 70707070 ed819100 edededed pp.ppppp........
1ecc4: edededed 8181eded e6e68181 87fcc360 ............`...
1ecd4: 475d3130 3131806e 6afeac76 be578c24 01]Gn.11v..j$.W.
1ece4: 410e0e45 41418787 0e0e0e0e 410e0e0e E..A..AA.......A
1ecf4: 454545e8 31311345 5d0edce8 13135dde .EEEE.11...].]..
1ed04: ebf27913 192b2cd2 d15b2b74 74d17777 .y...,+.t+[.ww.t
1ed14: 54545454 707054cd 70000070 44697070 TTTT.Tppp..pppiD
1ed24: a6a6d3e9 bfd36978 bfe566be 77771ebb ....xi...f....ww
1ed34: 79792bc8 0dc87979 760d0d0d 79797679 .+yyyy.....vyvyy
1ed44: 76404076 31313179 45453131 06271745 v@@vy11111EEE.'.
1ed54: 31313145 313131e2 e2e23131 ed6a5777 E111.11111..wWj.
1ed64: edededed 004822ed 70707070 70707070 ....."H.pppppppp
1ed74: 97707070 222222ed eded2222 81ededed ppp.."""""......
1ed84: 97e68181 a6c372e9 30314531 3180416e .....r..1E10nA.1
1ed94: 1a60d8e2 94242457 0e0ee853 41414141 ..`.W$$.S...AAAA
1eda4: 0e0e0e41 0e0e0e0e 1345e8dc 31134513 A.........E..E.1
1edb4: 41e84531 13dcde6b ea337931 2bb30fd2 1E.Ak...1y3....+
1edc4: b37477c8 2b77bb2b 54545474 704ecdcd .wt.+.w+tTTT..Np
1edd4: 70697070 69487070 2d0ce92d aee12e5a ppipppHi-..-Z...
1ede4: 78bf24be 1e1e1ebb 7979c877 c8797979 .$.x....w.yyyyy.
1edf4: 0d0d0dc8 76767676 76407676 31317976 ....vvvvvv@vvy11
1ee04: 87414531 87174145 31314545 31313131 1EA.EA..EE111111
1ee14: e2313131 1aae40e2 ededed32 cbededed 111..@..2.......
1ee24: 70707000 70707070 00707070 9090edec .pppppppppp.....
1ee34: 22222290 ededed22 ca8181ed 6059081f ."""".........Y`
1ee44: 3131402e 31068745 60be4031 24e1321a .@11E..11@.`.2.$
1ee54: 41875b94 8787410e 0e0e4187 0e0e410e .[.A.A...A...A..
1ee64: 1345dc0e 31131313 45453131 e85dde41 ..E....111EEA.].
1ee74: 52333113 b3330fd2 7477192b 382bbb38 .13R..3.+.wt8.+8
1ee84: 54543838 1e543bcd 0c007048 36366944 88TT.;T.Hp..Di66
1ee94: 69cbcf36 a6e1e9cf 44ae6feb 1e1ebbe9 6..i.....o.D....
1eea4: 2bc8771e 7979b379 0d0d0dc8 7679760d .w.+y.yy.....vyv
1eeb4: 40767676 13133176 6e17e813 450645e8 vvv@v1.....n.E.E
1eec4: 3145e845 31e23131 e2e2e231 b330e2e2 E.E111.11.....0.
1eed4: ededaced edededed 7070004a 70707070 ........J.pppppp
1eee4: 70700000 22ff7070 90909090 22222290 ..pppp."....."""
1eef4: 9181eded 5954a900 31402e96 31313131 ......TY..@11111
1ef04: ac763131 e124acfe 87135732 87414141 11v...$.2W..AAA.
1ef14: 0e418787 4141410e 45e8410e 13131313 ..A..AAA.A.E....
1ef24: 31313131 dc0e4145 e33313dc 33330fd2 1111EA....3...33
1ef34: 772b2bb3 b3777777 541212bb 54cdcd54 .++wwww....TT..T
1ef44: 707048cd 0c446900 3636cb69 72446936 .Hpp.iD.i.666iDr
1ef54: a6106610 bf72f5be c8772bbb 7979792b .f....r..+w.+yyy
1ef64: 0d0dc8c8 13790d0d 20136713 afaf9f5b ......y..g. [...
1ef74: aa17dc9f 31454587 3106f631 e2e2e231 .....EE11..11...
1ef84: e2e231e2 e8e2e2e2 5757e5f3 22eded22 .1........WW".."
1ef94: 700063ed 00000000 00000000 07007000 .c.p.........p..
1efa4: 73737322 22909073 73ed2222 3ba97070 "ssss..""".spp.;
1efb4: 40a69659 31313131 d8e24531 e1941afe Y..@11111E......
1efc4: 45be32e1 41414141 41878787 41410e41 .2.EAAAA...AA.AA
1efd4: e8dc4141 13131313 31313113 dce83131 AA.......11111..
1efe4: 52c5e8dc 3313b1d2 2b2bb333 c8c87777 ...R...33.++ww..
1eff4: 12e87974 cdcd5454 0069e9cd 36007070 ty..TT....i.pp.6
1f004: cb6d0cd3 aed36936 e5ae53a6 a6102472 ..m.6i...S..r$..
1f014: 0fe3e310 afb1b1b1 5bf2f2af 0faff2f2 ...........[....
1f024: 0f0f0f93 c5afb10f aa6ee833 3145450e ........3.n..EE1
1f034: 3106f645 40403131 e2e2e240 e2e2e2e2 E..111@@@.......
1f044: ae413031 ed2281ac 48902222 00000000 10A..."."".H....
1f054: 00000000 00707070 73737315 90737373 ....ppp..ssssss.
1f064: ed222290 1f7000ec 6660593b 31313140 .""...p.;Y`f@111
1f074: 11454531 321afe24 535724e1 41418745 1EE.$..2.$WSE.AA
1f084: 87878741 87414141 dc414141 134545e8 A...AAA.AAA..EE.
1f094: 31131313 13313131 529fdce8 b3790fd2 ...1111....R..y.
1f0a4: 2bb33333 2b7777c8 796bc82b cdcd5454 33.+.ww++.kyTT..
1f0b4: 36e94ecd 70707000 2d2d3600 aed3cb2d .N.6.ppp.6---...
1f0c4: e5ae24a6 44e9e9ab 715372bf cecee337 .$.....D.rSq7...
1f0d4: 37e3cece 0ffbfb37 9f8e930f 79796733 ...77.......3gyy
1f0e4: 27e87979 1313135d e2314531 40403131 yy.']...1E1.11@@
1f0f4: e2e24040 e2e2e2e2 5de24040 8c2e222c @@......@@.],"..
1f104: ed902222 000000ca 00000000 00000000 ""..............
1f114: 731c7000 73737373 ed907373 70700089 .p.sssssss....pp
1f124: e4123b1f 31314071 45313131 acfe6a40 .;..q@11111E@j..
1f134: 9424e124 4187455b 06874141 dc878787 $.$.[E.AAA......
1f144: dcdc87e8 4545e8dc 87454545 31313145 ......EEEEE.E111
1f154: 52c51331 79130fd2 b32020b3 7777bb2b 1..R...y. .+.ww
1f164: dcdcb3b3 cd544e12 cfe9cdcd 70707048 .....NT.....Hppp
1f174: cb007070 782d2d69 bf782466 6dd3bbe5 pp..i--xf$x....m
1f184: 1ee92de9 d12b1e1e d1202020 79797967 .-....+. .gyyy
1f194: e8c51379 40767679 e8797976 313113e8 y...yvv@vyy...11
1f1a4: 40403131 40e231e2 e2404040 e2e2e231 11@@.1.@@@@.1...
1f1b4: 9fe240e2 e6bf854c 90909094 00707390 .@..L........sp.
...
1f1cc: 63000000 73739773 73737373 7000eced ...cs.ssssss...p
1f1dc: bb081f70 31e22c42 45313131 1a1ad131 p...B,.1111E1...
1f1ec: 24e1e194 e8061357 87414187 e8870606 ...$W....AA.....
1f1fc: dcdce8e8 4545dc41 5d454545 76314516 ....A.EEEEE].E1v
1f20c: e3137676 79130fd2 1313b379 7777bb79 vv.....yy...y.ww
1f21c: 7979b3bb 544e4e1e cd0ccdcd 48487069 ..yy.NNT....ipHH
1f22c: 48707070 782d3648 d3786671 bb444444 pppHH6-xqfx.DDD.
1f23c: 6d6d2d44 bb1ee9e9 79b379c8 0d0dc879 D-mm.....y.yy...
1f24c: dc13760d 79793113 79797976 31313179 .v...1yyvyyyy111
1f25c: 40403131 e2e24040 e2e2e240 40e23131 11@@@@..@...11.@
1f26c: 3cdc31e2 870e354c 73e69478 fa907390 .1.<L5..x..s.s..
...
1f288: 97977307 73737397 70707390 081f7070 .s...sss.spppp..
1f298: 3167420b 31313131 fee1e245 e1dbe61a .Bg11111E.......
1f2a8: 06315a32 8787dce8 06060606 e8e8e8e8 2Z1.............
1f2b8: e8dc4141 f6454545 7631f6de e3797676 AA..EEE...1vvvy.
1f2c8: 7979b1eb b3b37979 7777c8b3 772b7777 ..yyyy....wwww+w
1f2d8: 77384e1e cfcdcd54 48700c69 70707048 .N8wT...i.pHHppp
1f2e8: d3cb692d d3aee3db 6444440c d36dd364 -i.......DDdd.m.
1f2f8: 77e9e96d b32b2b2b 0dc82b79 e8790dc8 m..w+++.y+....y.
1f308: 79e8e8d7 76767676 79797979 40e27679 ...yvvvvyyyyyv.@
1f318: e2404040 314531e2 40e23131 953c3340 @@@..1E111.@@3<.
1f328: 0e87dc7d 6a897e45 737373ed 0000ec73 }...E~.j.ssss...
...
1f340: ff974a00 73979797 00639073 1f707070 .J.....ss.c.ppp.
1f350: 401a9408 31313131 94764531 e124ac1a ...@11111Ev...$.
1f360: 31e157e1 87e8e806 e8e806dc e8e8e830 .W.1........0...
1f370: 4141dce8 41e845e8 7945dede e3794076 ..AA.E.A..Eyv@y.
1f380: 7679b1eb 792b2b76 7477c82b 77777777 ..yvv++y+.wtwwww
1f390: 1ee93877 cfcfe964 700c0ccf 48704848 w8..d......pHHpH
1f3a0: ec6d0c70 780b1089 bf446969 bb6d44bf p.m....xiiD..Dm.
1f3b0: e9e96dab 2b2b64bb c82b7979 790dc8c8 .m...d++yy+....y
1f3c0: 138741e8 76767979 76767676 76767679 .A..yyvvvvvvyvvv
1f3d0: 407e7e40 874531e2 e2e2e231 4c527d13 @~~@.1E.1....}RL
1f3e0: 0e87139f 6811e213 73226aff 15737373 .......h.j"ssss.
...
1f3f8: 97ec0000 9797ff1c 4a907373 70707000 ........ss.J.ppp
1f408: 53e44e1f 313113e2 d1311331 8c6a1a6a .N.S..111.1.j.j.
1f418: b49424e1 e8e8e831 e80687dc e8e8e8e8 .$..1...........
1f428: dce84545 4545e8dc 3141de16 e3790d79 EE....EE..A1y.y.
1f438: 76762ceb 7777c8c8 74777777 77777774 .,vv..wwwwwttwww
1f448: e91ebb74 cf0c64e9 690ccfcf 48483648 t....d.....iH6HH
1f458: 0c364848 782424ca d369692d 44e9d3bf HH6..$$x-ii....D
1f468: e91e64d1 2b2b77e9 2b2bb32b 0d0dc8c8 .d...w+++.++....
1f478: 13414131 76767979 76764076 79797676 1AA.yyvvv@vvvvyy
1f488: 7e7e4079 4545e240 1331e231 3595527d y@~~@.EE1.1.}R.5
1f498: 8745e213 4040e231 94736811 97739773 ..E.1.@@.hs.s.s.
1f4a8: 00001597 00000000 ec000000 971c1c97 ................
1f4b8: 73739797 707000cb e4e17070 31313176 ..ss..pppp..v111
1f4c8: e2453131 e6ac1af5 9424e1db e8453ed1 11E.......$..>E.
1f4d8: e887dce8 06e845e8 4545e8e8 45e8dce8 .....E....EE...E
1f4e8: 13f6de87 37797679 0d0db0fc 7774740d ....yvy7.....ttw
1f4f8: 74777777 77777474 bbbb77bb 69e90c38 wwwtttww.w..8..i
1f508: 0ccfcfcf 483648cf cbcb48cb 89579169 .....H6H.H..i.W.
1f518: 69690c2d e944bf44 1ebb6444 771e1e1e -.iiD.D.Dd.....w
1f528: 79792b77 0dc8c82b 4141e876 76797913 w+yy+...v.AA.yyv
1f538: 76404040 79797676 40763131 e2e24040 @@@vvvyy11v@@@..
1f548: 7d333140 13a09552 31e23131 404040e2 @13}R...11.1.@@@
1f558: 12114011 ff735722 4a979797 00000000 .@.."Ws....J....
1f568: 00000000 1c1c97ec 739797ff 70704897 ...........s.Hpp
1f578: 60cf7070 31134066 45313131 acace640 pp.`f@.1111E@...
1f588: 32e1db24 4545e2e6 87dce8e8 4545e806 $..2..EE......EE
1f598: 45e8e8e8 e8e8e845 13e80645 e3677631 ...EE...E...1vg.
1f5a8: 7774b0fc 74747477 77777777 38747474 ..twwtttwwwwttt8
1f5b8: bb772b77 cde9bbab cfcfcf69 366969cf w+w.....i....ii6
1f5c8: 6d69cbcb e61c6969 6969ec91 d1e5780c ..imii....ii.x..
1f5d8: 1e6d6dab 1e1e6464 792b771e c8c82b2b .mm.dd...w+y++..
1f5e8: 5d30790d 76791341 40404076 79767676 .y0]A.yvv@@@vvvy
1f5f8: 79313179 31404040 523c9f13 e2319f4c y11y@@@1..<RL.1.
1f608: 40313131 e2404040 40401131 57221211 111@@@@.1.@@.."W
1f618: 1cff1c73 00156397 70000000 1c1c4a00 s....c.....p.J..
1f628: 97ff1c1c 70489773 90007070 31312b42 ....s.Hppp..B+11
1f638: 31313131 ac6ab331 e1dbe16a 45112457 11111.j.j...W$.E
1f648: dce84545 45e80687 e8e84545 e8e81345 EE.....EEE..E...
1f658: 313113e8 e367765e c80d5bfc 770dc8c8 ..11^vg..[.....w
1f668: 77777777 77747777 bb2b7777 1ebb6477 wwwwwwtwww+.wd..
1f678: cfcfcd0c cb69cfcf 43ec6948 97eccb2a ......i.Hi.C*...
1f688: 69d378ed e5bf6969 e9bbc55b 1e64d1bb .x.iii..[.....d.
1f698: 2b771ee9 c8797979 415ec80d 761341f3 ..w+yyy...^A.A.v
1f6a8: 40404076 79764040 79793131 c5794040 v@@@@@vy11yy@@y.
1f6b8: 7d95957d 404079dc 313131e2 e2404040 }..}.y@@.111@@@.
1f6c8: 40114545 12114040 1c975773 1c1c1c1c EE.@@@..sW......
1f6d8: 0048ec91 1c910000 1c1c1c89 701c971c ..H............p
1f6e8: 91007070 317e5a42 31313131 1af5e231 pp..BZ~111111...
1f6f8: dbdb57ac e2f1948c e8454531 e88741e8 .W......1EE..A..
1f708: 45453145 133145e8 31311313 e3207631 E1EE.E1...111v .
1f718: c846b0fc c8c8c8c8 77c8c8c8 38777777 ..F........wwww8
1f728: 77bb2b77 bbbb7477 cf69e913 d3694fcf w+.wwt....i..Oi.
1f738: 430c0c48 eccb694d 0c2d9097 d32d780c H..CMi....-..x-.
1f748: 2025d8e5 abd1bb1e 77e94ee9 79797979 ..% .....N.wyyyy
1f758: 5e760dc8 1341f37c 40407676 76404040 ..v^|.A.vv@@@@@v
1f768: 79767979 950f3313 878e4c52 407e7e45 yyvy.3..RL..E~~@
1f778: 31e24040 407e40e2 404031e2 40404040 @@.1.@~@.1@@@@@@
1f788: e6ff12e2 891c1c73 631c1c89 89074afa ....s......c.J..
1f798: 1c898989 1c971c1c 07700070 31741a1a ........p.p...t1
1f7a8: 31313131 66403131 db24acac d16a24db 111111@f..$..$j.
1f7b8: 45313131 e8d7e8e8 314545e8 3145e831 111E.....EE11.E1
1f7c8: 795e5e5e fc5b7676 7446d852 c8c84674 ^^^yvv[.R.FttF..
1f7d8: c8c8c8c8 77777777 772bbb74 77747777 ....wwwwt.+wwwtw
1f7e8: cf1edcdc 694fcfcf 2d690cd3 cbcb2d4d ......Oi..i-M-..
1f7f8: d3e197ec bfae0c69 af2f642d bb1e6425 ....i...-d/.%d..
1f808: 1ee9e91e 13797977 760d7913 7cf37c5e ....wyy..y.v^|.|
1f818: 40767913 400d0d0d 5b137640 ce6c520f .yv@...@@v.[.Rl.
1f828: 871333b1 7e7ee287 76404040 7e4040e2 .3....~~@@@v.@@~
1f838: 7e404040 40404040 68e24040 89738191 @@@~@@@@@@.h..s.
1f848: 63891c1c 63636363 1c898963 1c1c1c1c ...cccccc.......
1f858: 89cbcb97 117860e6 31313131 b3313131 .....`x.1111111.
1f868: 8c6a6a6a 9432dbdb 31313179 d7e8e845 jjj...2.y111E...
1f878: 454545e8 5e313131 5e5e5e31 655b7679 .EEE111^1^^^yv[e
1f888: 46c820e3 77747474 77c8c8c8 bb747477 . .Ftttw...wwtt.
1f898: bb7774bb 74771e77 64bb0e79 36cfcf0c .tw.w.wty..d...6
1f8a8: 36486969 48cbd32a 241c6948 786d6978 iiH6*..HHi.$ximx
1f8b8: e5bf0cd3 6dd8255b e90ce9e9 dc79771e ....[%.m.....wy.
1f8c8: 0d79e85d 3d415ec8 4076e85d 400d0d40 ].y..^A=].v@@..@
1f8d8: 52fbf279 5b935265 e8407e79 40403187 y..ReR.[y~@..1@@
1f8e8: 4040407e 7e404040 40407e7e 4040407e ~@@@@@@~~~@@~@@@
1f8f8: 40404040 73d33411 07fa6373 2d2dcaca @@@@.4.ssc....--
1f908: ca2d2d2d 6363faca 739773ff 3497fe22 ---...cc.s.s"..4
1f918: 31313131 e2313131 946aacb4 57dbdbdb 1111111...j....W
1f928: 313111e6 e8453131 45e8e8e8 31313145 ..1111E....EE111
1f938: 5e313131 65f27979 7676b337 747474c8 111^yy.e7.vv.ttt
1f948: 74747474 38383838 7438bbbb c8c87477 tttt8888..8twt..
1f958: 0c1e2b77 cfcfbb44 480c0c36 48cb0c69 w+..D...6..Hi..H
1f968: 89cb4848 0c6991e6 440c6978 c55b5be5 HH....i.xi.D.[[.
1f978: e90c0cbb 33ab1ee9 7979416b 7ce87679 .......3kAyyyv.|
1f988: 79e8f33d af337979 ce52cefb 76315b0f =..yyy3...R..[1v
1f998: e27e7e40 4040e213 407e7e40 40404040 @~~...@@@~~@@@@@
1f9a8: 407e7e7e 7e7e7e7e 40404040 597e11e2 ~~~@~~~~@@@@..~Y
1f9b8: 7438d369 68684646 02020202 744646dd i.8tFFhh.....FFt
1f9c8: fffacae9 68901a22 3131e2e2 45313131 ...."..h..11111E
1f9d8: acac5a40 e1dbf132 3111e194 45313131 @Z..2......1111E
1f9e8: e8e8e8e8 3131315e 5e313131 65b179b3 ....^111111^.y.e
1f9f8: c8c87671 7446c8c8 38747474 77773838 qv....Ftttt888ww
1fa08: 38777738 87c8771e 0ce91e2b 0c44690c 8ww8.w..+....iD.
1fa18: 2d69cbcb 6948480c 70704848 ae5a5aca ..i-.HHiHHpp.ZZ.
1fa28: 0c69780c 5b5be544 1e6dd1c5 1377771e .xi.D.[[..m..ww.
1fa38: 79135d6b 41e83179 93287f3d e3e3fb0f k].yy1.A=.(.....
1fa48: 13f2fbe3 40407679 347e4076 7e40407e ....yv@@v@~4~@@~
1fa58: 7e7e7e7e 407e4040 7e7e7e40 7e7e7e40 ~~~~@@~@@~~~@~~~
1fa68: 40407e7e 12120de2 1246dd46 cfcdcd54 ~~@@....F.F.T...
1fa78: 4f4fcfcf 5954cd4f c95fdd46 341c8938 ..OOO.TYF._.8..4
1fa88: 31e240e2 31313131 6a6a7631 dbf1246a .@.111111vjjj$..
1fa98: e2b46a8c 31313131 e8e8e8e8 3131315e .j..1111....^111
1faa8: 79313131 65fb1379 c8c8c82c 46c8c8c8 111yy..e,......F
1fab8: 74774646 77383874 381e381e 0e771e38 FFwtt88w.8.88.w.
1fac8: 0ce91e0e 6969690c cbcbcb69 480c69bb .....iiii....i.H
1fad8: 70700ccb edca6970 69ca9065 d1d1440c ..pppi..e..i.D..
1fae8: bbc525d8 13b32bbb 67131616 28252067 .%...+.....gg %(
1faf8: f0f0b6ad af7d4c21 0d0d79d1 7979760d ....!L}..y...vyy
1fb08: 0d407676 40400d34 7e7e7e7e 4040407e vv@.4.@@~~~~~@@@
1fb18: 7e404040 7e7e7e7e 407e7e7e dd7468e2 @@@~~~~~~~~@.ht.
1fb28: cf4e74dd cfcfcfcf 3636cfcf a9a9a936 .tN.......666...
1fb38: 544fa9a9 745fc974 e2e23412 31313131 ..OTt._t.4..1111
1fb48: acd8e231 f1db946a b39424db 31313131 1...j....$..1111
1fb58: e8e83131 31315ee8 79313131 fc371376 11...^11111yv.7.
1fb68: c8c876f2 77c8c8c8 77467774 38383874 .v.....wtwFwt888
1fb78: 38383838 13383838 e96d2bb5 69690c0c 8888888..+m...ii
1fb88: cbcbcbcf 69cb44cb 701ebbe9 36697070 .....D.i...pppi6
1fb98: 5a5af16d b0a02ce1 28c7b4e5 5bb4e55b m.ZZ.,.....([..[
1fba8: 8e8e6b6e 214c4c93 28adb6b6 1341f37f nk...LL!...(..A.
1fbb8: 0d0d0d40 76760d0d 40767679 400d340d @.....vvyvv@.4.@
1fbc8: 7e7e7e40 4040407e 40404040 7e7e4040 @~~~~@@@@@@@@@~~
1fbd8: 7e7e7e7e 744e117e 5454cd12 cfcfcdcd ~~~~~.Nt..TT....
1fbe8: 4f4f4fcf a9a9a91f 3b3ba9a9 12543b3b .OOO......;;;;T.
1fbf8: 34195e76 3131e2e2 5a403131 f1e66a6a v^.4..1111@Zjj..
1fc08: 6632dbdb 5f313176 5e313131 31315ee8 ..2fv11_111^.^11
1fc18: 76765f31 10e32076 c8c8765b 77c8c8c8 1_vvv ..[v.....w
1fc28: 74747474 12387474 4e38384e 7738384e tttttt8.N88NN88w
1fc38: 441e336e 440c0ce9 cbcbcbe9 48e936cb n3.D...D.....6.H
1fc48: 44e96948 36707070 cbd3d348 4c3c5378 Hi.Dppp6H...xS<L
1fc58: f0e3be71 713721f0 8e8e6e8e c7930f0f q....!7q.n......
1fc68: 7c7c4125 41f3f37c 0d0d7613 400d0d0d %A|||..A.v.....@
1fc78: 76767976 0d347e40 7e7e4040 407e7e7e vyvv@~4.@@~~~~~@
1fc88: 40404040 40404040 7e7e7e7e 40407e7e @@@@@@@@~~~~~~@@
1fc98: 54cdcf4f cdcdcd4e 4f4fcfcf a9a9a9a9 O..TN.....OO....
1fca8: 08a9a9a9 54543b08 5e461259 31317e76 .....;TTY.F^v~11
1fcb8: 76313131 246a6a6a 94dbdbf1 5f311124 111vjjj$....$.1_
1fcc8: 31315f5f 5e5e135e 76765f31 37105b76 __11^.^^1_vvv[.7
1fcd8: c82b76d1 c8c8c8c8 38747477 38387438 .v+.....wtt88t88
1fce8: 54545412 38384e54 bbe9132b d30c0c6d .TTTTN88+...m...
1fcf8: cbcf6d44 0c36cbcb cb697070 70704838 Dm....6.ppi.8Hpp
1fd08: 36367070 03abcb48 5bbfaebf afafaf8e pp66H......[....
1fd18: ab2b2bd1 41d720b3 5e315ed7 f37c41e8 .++.. .A.^1^.A|.
1fd28: 4031d741 0d0d0d0d 76767640 340d4076 A.1@....@vvvv@.4
1fd38: 7e404034 7e7e4040 40404040 e2404040 4@@~@@~~@@@@@@@.
1fd48: 7e7e7e40 407e7e7e cd4f0d40 cd541254 @~~~~~~@@.O.T.T.
1fd58: 4fcfcfcd a9a9a9a9 a9a9a9a9 543b0808 ...O..........;T
1fd68: 74685954 314074c9 e2313131 6a94acd8 TYht.t@1111....j
1fd78: e1dbf1db 3111b46a 5f5f5f5f 5e135e31 ....j..1____1^.^
1fd88: 76767631 0ffcaf76 c8767679 19c8c8c8 1vvvv...yvv.....
1fd98: 74747477 38747474 54545412 38545454 wtttttt8.TTTTTT8
1fda8: 0ce91e1e 69690c6d cb690c0c 36cbcbcb ....m.ii..i....6
1fdb8: 4870700c 00cbe9cb 69697070 2d0c6948 .ppH....ppiiHi.-
1fdc8: 1ebf6d2d bb1e64b3 77c86464 205ec877 -m...d..dd.ww.^
1fdd8: 0dc8b313 d731760d e8417c7c 0d0d4076 .....v1.||A.v@..
1fde8: 7640400d 0d407676 40403434 7e404040 .@@vvv@.44@@@@@~
1fdf8: 7e40407e 407e7e7e 7e404040 7e7e7e7e ~@@~~~~@@@@~~~~~
1fe08: 34117e40 1e4e4ecf cfcdcd4e a9a9a94f @~.4.NN.N...O...
1fe18: a9a9a9a9 080808a9 68595454 e26838dd ........TTYh.8h.
1fe28: 313131e2 6a6ae140 dbf1f157 5fb36a24 .111@.jjW...$j._
1fe38: 5f5f5f31 5e5e315f 7676315e b1fcb176 1____1^^^1vvv...
1fe48: 76797679 464619c8 38747474 38747438 yvyv..FFttt88tt8
1fe58: 54545412 54545454 0c0ce94e 6969690c .TTTTTTTN....iii
1fe68: cf0c6969 cbcbcbcb 70704436 360c7070 ii......6Dpppp.6
1fe78: 2d707000 0cd3cb0c 780ccb69 6d6dd1bb .pp-....i..x..mm
1fe88: c8771e44 2bc8c8c8 7477c82b 760d3468 D.w....++.wth4.v
1fe98: 417c4131 0d7631d7 400d0d0d 40404040 1A|A.1v....@@@@@
1fea8: 4034340d 40407e40 40407e7e 7e7e7e7e .44@@~@@~~@@~~~~
1feb8: 40404040 7e7e7e7e e240407e 674e0d31 @@@@~~~~~@@.1.Ng
1fec8: cdcd3867 a9a94fcf a9a9a9a9 0808a9a9 g8...O..........
1fed8: 68545408 e2685446 313131e2 94944031 .TThFTh..1111@..
1fee8: f1f1246a 769432db 5f5f5f5f 5e315f5f j$...2.v______1^
1fef8: 765e5e5e 5b10fb5e 795e7976 7446c879 ^^^v^..[vy^yy.Ft
1ff08: 74747474 38381238 54545412 5454cd54 tttt8.88.TTTT.TT
1ff18: 0c0c4e4e 690c6969 440c6969 cbcb360c NN..ii.iii.D.6..
1ff28: 00bbcbcb 0c000000 70707036 d3cb0c2d ........6ppp-...
1ff38: 0c69692d 4441bb0c 1e1e6de9 77c82b1e -ii...AD.m...+.w
1ff48: 12772bc8 34681212 41e8760d 31e84141 .+w...h4.v.AAA.1
1ff58: 0d0d0d76 40404040 34343440 7e7e7e7e v...@@@@@444~~~~
1ff68: 7e7e7e7e 7e7e7e7e 40407e7e 7e347e7e ~~~~~~~~~~@@~~4~
1ff78: 31407e34 dc314545 544e2b17 a94fcdcd 4~@1EE1..+NT..O.
1ff88: a9a9a9a9 08a9a9a9 b2540808 e23454b2 ..........T..T4.
1ff98: 31e2e2e2 6ad1e231 f1db6a57 5a32dbf1 ...11..jWj....2Z
1ffa8: 5f5f5fdd 5f5f5f5f 5f5e5e31 20e3e313 ._______1^^_...
1ffb8: 79797676 c8c87679 74747446 12123838 vvyyyv..Fttt88..
1ffc8: 12545459 cdcdcd54 0c4e54cd 0ce96969 YTT.T....TN.ii..
1ffd8: cb696969 cbcbcbcb 446936cb 00000070 iii......6iDp...
1ffe8: 4870360c 360c2d70 6969e96d f3200c69 .6pHp-.6m.iii. .
1fff8: e90ce9d1 64bb1e1e c8b3771e 12121212 .......d.w......
20008: 310d0d34 d7414141 0d407913 400d0d0d 4..1AAA..y@....@
20018: 34340d40 347e7e34 34347e34 407e7e7e @.444~~44~44~~~@
20028: 34347e7e 3434347e e27e347e 87e84145 ~~44~444~4~.EA..
20038: 12e933b5 4fcdcd54 a9a9a9a9 a9a9a9a9 .3..T..O........
20048: 23540808 11111254 e2e21111 e1403131 ..T#T.......11@.
20058: f157946a 94dbdbf1 5f317ef5 5f5f5f5f j.W......~1_____
20068: 315e315f 5e37fcc5 76767676 19c87676 _1^1..7^vvvvvv..
20078: 747477c8 59383838 38545959 cdcdcd54 .wtt888YYYT8T...
20088: cd54cdcd 0c696969 69696969 690c6969 ..T.iii.iiiiii.i
20098: 0c48cbcb 00704844 48360c00 cbcb4848 ..H.DHp...6HHH..
200a8: 696dd3cb 44693669 e964c520 1ee91ee9 ..mii6iD .d.....
200b8: 2babab2b 121274b3 0d776812 4141e879 +..+.t...hw.y.AA
200c8: 7631e8d7 0d0d0d40 340d400d 0d0d3434 ..1v@....@.444..
200d8: 34343434 7e0d7e34 347e407e 34343434 44444~.~~@~44444
200e8: 407e7e34 0e5d06e2 4ee25db5 cdcd5454 4~~@..]..].NTT..
200f8: a9a94f4f a9a9a9a9 a5a50808 11e2676d OO..........mg..
20108: 11111111 4031e2e2 246a5757 dbdbf10b ......1@WWj$....
20118: 5f11d86a 765f5f5f 315f5f76 790feab1 j..____vv__1...y
20128: 76767676 19c81976 74747419 59123838 vvvvv....ttt88.Y
20138: 54545959 cdcdcd54 cdcdcdcd cf6969cd YYTTT........ii.
20148: 696969cf 0c696969 48cb3669 4870440c .iiiiii.i6.H.DpH
20158: 48cb7070 48cbcb48 4444cb70 6d36690c pp.HH..Hp.DD.i6m
20168: d7d16d2d e91e6dbb 2bdc671e 1277c8bb -m...m...g.+..w.
20178: 74121212 e879760d 13e8d7d7 40404079 ...t.vy.....y@@@
20188: 7e407e7e 407e3434 3434347e 407e7e34 ~~@~44~@~4444~~@
20198: 1268347e 347e3468 407e3434 5d41e831 ~4h.h4~444~@1.A]
201a8: e2316bb5 cd54cd34 4f4f4fcd a9a9a9a9 .k1.4.T..OOO....
201b8: 080808a9 13051843 11111111 e2e21111 ....C...........
201c8: 94e66a64 dbf10bdb 5f19948c 765f5f5f dj.........____v
201d8: 31767676 76af65fb 76767676 1919c876 vvv1.e.vvvvvv...
201e8: 74741919 12383838 54545454 cdcdcdcd ..tt888.TTTT....
201f8: cdcdcdcd 0c0c0ccd 690c69cb 69cbcbcf .........i.i...i
20208: cbcb0c0c 00d30c48 48484870 cb6d69cb ....H...pHHH.im.
20218: 6dcb4848 cbcb690c 4469d36d 1e1ed120 HH.m.i..m.iD ...
20228: 336e2be9 1e777777 12121212 0d0d0d68 .+n3www.....h...
20238: e8e81379 0d7931e8 12541268 54545459 y....1y.h.T.YTTT
20248: 7e343468 4040347e dd466812 68546846 h44~~4@@.hF.FhTh
20258: 4034347e 5df34131 e2e86b6b cdcd4040 ~44@1A.]kk..@@..
20268: 4f4fcdcd a9a94f3b 08080808 9a187a6d ..OO;O......mz..
20278: 111131a0 e2111111 e66af57e f10b0b57 .1......~.j.W...
20288: 346624db 5f5f5f5f 5e407676 7633fce3 .$f4____vv@^..3v
20298: 76767676 c80dc876 7419c876 12383838 vvvvv...v..t888.
202a8: cd545454 cd3b3b3b cdcdcdcd e90ccdcd TTT.;;;.........
202b8: cbcbcb0c 0c69cbcb 36692d2d 2d0c4836 ......i.--i66H.-
202c8: 48487070 2ab02dcb 703636cb 36363648 ppHH.-.*.66pH666
202d8: 690c0c69 bbd1ab0c 33dc1ee9 1e771e77 i..i.......3w.w.
202e8: 124e4e12 0d341212 13790d0d 68c813e8 .NN...4...y....h
202f8: a1a1dd46 a1d9d9d9 6802dda1 407e6812 F..........h.h~@
20308: 75a15959 d95858df 7e7e1259 f3f306e2 YY.u.XX.Y.~~....
20318: 31e85d5d 547e4040 4fcdcdcd 4f3b3b4f ]].1@@~T...OO;;O
20328: 3b08a53b 7ad43b54 e2dc9a18 11111111 ;..;T;.z........
20338: 94e67ee2 72723257 e1e60bf1 765f5fa4 .~..W2rr.....__v
20348: 20407676 7613e310 0d0d7676 0d0d7676 vv@ ...vvv..vv..
20358: 77c87676 12121274 cd545454 4f4f3bcd vv.wt...TTT..;OO
20368: cdcdcd3b e9cdcd0c cfcb2d6d cbcb6969 ;.......m-..ii..
20378: 6969cbcb 69483636 48484869 011b6936 ..ii66HiiHHH6i..
20388: 3636cb2d 36487048 0c69cb36 646d0c0c -.66HpH66.i...md
20398: 2b774e77 1e1e1eab 4e4e121e 68121212 wNw+......NN...h
203a8: 400d0d0d a168120d df5858df dfdfdfdf ...@..h..XX.....
203b8: 58585858 5902d958 2323a5a9 df75a1a4 XXXXX..Y..##..u.
203c8: 6868d9df f3f34511 3131e841 12407e40 ..hh.E..A.11@~@.
203d8: cdcd5459 3b543b4f 54a53b3b 43a5543b YT..O;T;;;.T;T.C
203e8: 619a187a 1111e231 6a2b1111 72db5732 z..a1.....+j2W.r
203f8: 940bf172 765fddd8 af407676 76760f65 r....._vvv@.e.vv
20408: 0d767676 0d464646 46c8760d 59123874 vvv.FFF..v.Ft8.Y
20418: 54545454 4f4f3bcd cd4f4f4f cdcd0ccd TTTT.;OOOOO.....
20428: cf6d0c0c cbcb0c0c 696969cb 483636cb ..m......iii.66H
20438: 48486936 8a43cb48 36cb6943 69707048 6iHHH.C.Ci.6Hppi
20448: d3690c0c e90c44d3 4e4e77bb 1e1e2b1e ..i..D...wNN.+..
20458: 12121e1e 12124e4e 0d343474 f7a15412 ....NN..t44..T..
20468: dfdff7da d9757575 a1a1a1d9 58dfd90a ....uuu........X
20478: a90802d9 a102b723 a1d9dfdf 6e413159 ....#.......Y1An
20488: 40e23141 68407e40 cd546859 54544fcd A1.@@~@hYhT..OTT
20498: 54cdcdcd 59cdcd54 187ad459 11e2dc01 ...TT..YY.z.....
204a8: 727e1111 7257326a dbf1722f 7611c86a ..~rj2Wr/r..j..v
204b8: 0f764076 7640f265 76767676 4646460d v@v.e.@vvvvv.FFF
204c8: 0d190d46 12387474 54545454 4f4fcdcd F...tt8.TTTT..OO
204d8: cf4f4fa9 cd0ccdcd 69cbcfcd cbcb69cb .OO........i.i..
204e8: cbcb6969 48483669 48cbcb48 050ccb48 ii..i6HHH..HH...
204f8: cbcb6961 cb704848 0c0ce9d3 0c446dd3 ai..HHp......mD.
20508: 4e771ee9 1e64bb0c 381e1e1e 12544e12 ..wN..d....8.NT.
20518: 0d777774 dadf744e 5f7575df a1a1a1a1 tww.Nt...uu_....
20528: 0202a4a1 29a40202 df58d9a1 b2a5a9b2 .......)..X.....
20538: d9dfa102 3d13b2a1 4040310e 0d407e7e .......=.1@@~~@.
20548: 54590254 59a9cdcd cdcd5459 cd545954 T.YT...YYT..TYT.
20558: a877b254 e21b8218 02111111 323294ed T.w...........22
20568: 0b722fe5 11469424 e35edd40 76dd1310 ./r.$.F.@.^....v
20578: 76767640 46464676 0d464646 12387446 @vvvvFFFFFF.Ft8.
20588: 54545454 4fcdcdcd 4f4fa9a9 cfcdcdcf TTTT...O..OO....
20598: cbcfcfcf 6969cb36 cbcbcbcb cb696969 ....6.ii....iii.
205a8: 48cb4848 43cb4848 cbcb6da0 70484836 HH.HHH.C.m..6HHp
205b8: e9e9d369 446d0c69 77e90c0c ab2b4e4e i...i.mD...wNN+.
205c8: 77771e1e 54121e1e c8771212 d9da46cd ..ww...T..w..F..
205d8: 59b246dd a5a5a559 a5a5a5a5 23a5a5a5 .F.YY..........#
205e8: a1a4b723 a5a1dfd9 a1a4b208 79b2a1d9 #..............y
205f8: 7e40455d 0d403434 54b20254 a94fcd54 ]E@~44@.T..TT.O.
20608: cd5459b2 54595454 025954cd 1b82a8e5 .YT.TTYT.TY.....
20618: 1111e231 32325777 0b2fe5db a45a320b 1...wW22../..2Z.
20628: 655b4040 40dd7637 7676760d 46460d76 @@[e7v.@.vvvv.FF
20638: 74747474 38747474 54545459 4fcdcdcd ttttttt8YTTT...O
20648: 4f1fa94f 4fcfcf4f cbcb4f4f 69cbcb36 O..OO..OOO..6..i
20658: cbcbcbcb 0c0c0c69 48367036 69484870 ....i...6p6HpHHi
20668: cb366d43 70484848 1e697070 e90c69e9 Cm6.HHHpppi..i..
20678: e90c0ce9 2b1e4e77 ab7777bb 121e1e77 ....wN.+.ww.w...
20688: 7712124e ddf7464e 545959b2 a9a90808 N..wNF...YYT....
20698: a9a9a9a9 a50808a9 23a5a5a5 d92902b7 ...........#..).
206a8: 23a546df 02a1d929 7e403112 68407e34 .F.#)....1@~4~@h
206b8: 2302dd3b 1fcd5454 5459b254 59545454 ;..#TT..T.YTTTTY
206c8: 59545459 824dddb2 e2e2311b ed6aae7e YTTY..M..1..~.j.
206d8: 2fe57232 b494720b 650f7602 dddd40af 2r./.r...v.e.@..
206e8: 0dc9c946 b2684646 687474b2 12126868 F...FFh..tthhh..
206f8: 54545412 cfcdcdcd 1f1fa94f cfcf4f4f .TTT....O...OO..
20708: 36cbcf1f 69cb3636 696969cb 696969cb ...666.i.iii.iii
20718: 48484836 70004848 4848cb36 70484848 6HHHHH.p6.HHHHHp
20728: cf707070 e90c0c44 0ccd0cd3 1e387738 ppp.D.......8w8.
20738: 771e1e77 77777764 744e1212 4675121e w..wdwww..Nt..uF
20748: a9085459 59a508a9 020202b2 08a559b2 YT.....Y.....Y..
20758: 08a9a9a9 23a5a5a5 d9d929b7 a10259b2 .......#.)...Y..
20768: 7e68b2a4 4f683434 2302a13b 3b5454a5 ..h~44hO;..#.TT;
20778: 59b2b21f 54545454 5454b259 a102b754 ...YTTTTY.TTT...
20788: 11316143 572268e2 e5e58ced 94727272 Ca1..h"W....rrr.
20798: fcea25d1 dd407e13 464646dd 80d7e876 .%...~@..FFFv...
207a8: b2685f5e 59595968 54545459 cfcdcdcd ^_h.hYYYYTTT....
207b8: 1fa94f4f cf4f1f1f cbcf1fcf 36363636 OO....O.....6666
207c8: 6969cb36 3636cbcb 48484848 00484848 6.ii..66HHHHHHH.
207d8: 48707000 70704848 1f1f7070 0ccf0c36 .ppHHHpppp..6...
207e8: cde9bf6d 381e4e0c 1e4e4e4e ab772b2b m....N.8NNN.++w.
207f8: 54121277 465f4e68 081fa954 58dfa1b2 w..ThN_FT......X
20808: 58585858 58585858 02a1d958 a5a9a9a5 XXXXXXXXX.......
20818: 02232323 b2a1d9a4 a9235459 1fa95454 ###.....YT#.TT..
20828: 2302d959 54a5a5a5 59b23ba9 543b5454 Y..#...T.;.YTT;T
20838: 59b25954 b723543b 79775fdd 571e11e2 TY.Y;T#.._wy...W
20848: bf51eded 517272e5 f0d6afe6 40dd3425 ..Q..rrQ....%4.@
20858: 5e466846 e0e0e062 b9c6c6f4 59595968 FhF^b.......hYYY
20868: 54545459 cfcdcdcd 4f4f4fcf 4f1f1f1f YTTT.....OOO...O
20878: cb1fcbcf cbcb3636 69cbcb36 36cbcb69 ....66..6..ii..6
20888: 48484848 48484848 00000000 70707000 HHHHHHHH.....ppp
20898: 1f707070 cf363636 cd44d30c 4e4e0ccd ppp.666...D...NN
208a8: 4e544e12 bbbbab1e 121e742b 68545454 .NTN....+t..TTTh
208b8: dd54a9a9 dff7f775 a1a1d975 a1a1a1a1 ..T.u...u.......
208c8: 88d90a0a 02d95858 a508a908 a4b72323 ....XX......##..
208d8: 02a429a1 b25423b2 23b2d9d9 a5a5a5a5 .)...#T....#....
208e8: b2b21f54 0854a559 5959a5a5 a5a554b2 T...Y.T...YY.T..
208f8: 75ddb7b7 787e3446 2f8c8c57 4d72e5bf ...uF4~xW../..rM
20908: 216f5a8c 345e3d7c 625e0234 3d3df4f4 .Zo!|=^44.^b..==
20918: 5062623d 5959da50 54545459 4fcdcdcd =bbPP.YYYTTT...O
20928: cf4f4f4f 1f1f364f 7036cf1f cb363648 OOO.O6....6pH66.
20938: cb36cbcb 36cb6969 48483636 70707048 ..6.ii.666HHHppp
20948: 00007048 70000000 70707070 cf361f1f Hp.....ppppp..6.
20958: 0c6d0c0c cd5454cd 544e4e54 77777712 ..m..TT.TNNT.www
20968: 771277c8 3b545974 df5f54a9 a1d975df .w.wtYT;.T_..u..
20978: 29a1a1a1 a1a12929 2929a1a1 d9a1a129 ...)))....)))...
20988: b2dddf58 a5a5a523 a5080808 a1ddb259 X...#.......Y...
20998: a523a4d9 a5a5a5a5 02a5a9a5 54a523b2 ..#..........#.T
209a8: 23a5a508 08b2b7b2 b7b723a5 08ddf7dd ...#.....#......
209b8: 908c3273 72bfbfbf 20e132e5 465e80d7 s2.....r.2. ..^F
209c8: f4625fb7 3d3d62c6 50626262 c950da50 ._b..b==bbbPP.P.
209d8: 54545454 cfcdcdcd cf4f4f4f 1f364fcf TTTT....OOO..O6.
209e8: 701f1f1f 36363670 363636cb cbcbcbcb ...pp666.666....
209f8: 48363636 48704848 7070fafd 00000000 666HHHpH..pp....
20a08: 70707000 4f1f1f1f cdcd0c0c 4e5454cd .ppp...O.....TTN
20a18: 5454cd54 2b2b7454 74127777 12741277 T.TTTt++ww.tw.t.
20a28: 75df46a9 dda1a1d9 02dda1dd 02020202 .F.u............
20a38: a402b702 a12929a4 d90aa1a1 a1d9d9d9 .....)).........
20a48: dddddda1 a1a1a1a1 a5a52302 a5a5a5a5 .........#......
20a58: 02a9a5a5 a5a52302 a5540823 b259b2a5 .....#..#.T...Y.
20a68: 23230859 daddb7b7 908c2274 bfbfab0b Y.##....t"......
20a78: e5e6ae2f 23027640 f4f43002 62626262 /...@v.#.0..bbbb
20a88: 50b95062 dff75050 545454a1 4fcdcdcd bP.PPP...TTT...O
20a98: 4f4f4f4f 3636364f 1f1f1f1f 36cb1f70 OOOOO666....p..6
20aa8: 36363636 36cbcb36 36cbcb36 48484848 66666..66..6HHHH
20ab8: 0063fafd 00000070 70700000 1f1f1f70 ..c.p.....ppp...
20ac8: cdcdcf4f 5454cdcd 3b545454 2b12543b O.....TTTTT;;T.+
20ad8: 74c8b3b3 74121277 7575a174 a1a1a15f ...tw..tt.uu_...
20ae8: 23b202dd 080808a5 a5a50808 b7b723a5 ...#.........#..
20af8: a402b7b7 a1a1dda4 a1a1a1a1 b7b7a429 ............)...
20b08: a5a5a523 a5a5a5a5 021fa5a5 a52323a4 #............##.
20b18: a50823a5 b223a5a5 a9b2a423 b7b72323 .#....#.#...##..
20b28: 9081d3a4 bfbbae9b e6aeaebf 0223b274 ............t.#.
20b38: 62f46280 b9505062 6262b9b9 a175f750 .b.bbPP...bbP.u.
20b48: 543bb2dd 3bcdcdcd 364f4f4f 36363636 ..;T...;OOO66666
20b58: 1f1f1f36 36367070 69364848 36363669 6...pp66HH6ii666
20b68: cbcb3636 48484836 fdfa0715 70707000 66..6HHH.....ppp
20b78: 70000070 1f1f7070 cdcdcfa9 54cd4ee9 p..ppp.......N.T
20b88: cd545454 123b3b3b b3d1c877 1274c879 TTT.;;;.w...y.t.
20b98: 5f75d946 a15fdda1 0808a5b2 08080808 F.u_.._.........
20ba8: a5080808 a5a5a5a5 232323a5 b7b72323 .........#####..
20bb8: 23b7b7b7 a5a5a523 a5a5a5a5 a5a5a5a5 ...##...........
20bc8: b2a9a5a5 2323b2a1 0823a5a5 a5a5a5a5 ......##..#.....
20bd8: a123b2b2 23230868 ed63a5b7 bbbf9797 ..#.h.##..c.....
20be8: 72bfbfbf 305f6832 b97c6262 f7f7b9b9 ...r2h_0bb|.....
20bf8: b950b9f7 02dd5f80 3b23b2b2 cdcd3b3b ..P.._....#;;;..
20c08: 4f4f4f4f 36363636 1f701f36 4870701f OOOO66666.p..ppH
20c18: 48483648 36483636 cbcb3636 cbcbcbcb H6HH66H666......
20c28: fd630715 70700015 00007000 1f707070 ..c...pp.p..ppp.
20c38: 4fcfa91f cdcde9cd 54544e54 54545454 ...O....TNTTTTTT
20c48: 2b771e54 771379b3 a15f7546 dda1dda1 T.w+.y.wFu_.....
20c58: 08080823 08080808 08080808 08080808 #...............
20c68: 08080808 a5a5a508 a5a5a5a5 a5a5a5a5 ................
20c78: a5a5a5a5 a5a5a5a5 02a9a5a5 232302d9 ..............##
20c88: 59a508a5 a5a5a5a9 b2b223a5 a5a1a123 ...Y.....#..#...
20c98: 733b23a5 44979773 78bfbf44 f4f79090 .#;ss..DD..x....
20ca8: f7b9b962 daf7f7f7 75f7dada b2b234c9 b..........u.4..
20cb8: a5b2b2b2 3b3b3b08 4f4f4f4f 3636364f .....;;;OOOOO666
20cc8: 701f3636 70483670 48487070 48484848 66.pp6HpppHHHHHH
20cd8: cbcbcb36 1e0ccbcb 4a63faec 00000048 6.........cJH...
20ce8: 70000070 70707000 4f4f4fcf cde94e4f p..p.ppp.OOOON..
20cf8: 4e4e5454 54545454 12125454 2b2bbb77 TTNNTTTTTT..w.++
20d08: a1d97546 a1a1a1a1 0808a5b2 08a9a908 Fu..............
20d18: 0808a908 08080808 08080808 a508a508 ................
20d28: a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 ................
20d38: dd08a9a5 2323a4df 23a5a523 a5a508b2 ......###..#....
20d48: b7a5a5a5 a1b7b702 2da502d9 891c9722 ...........-"...
20d58: 7844441e f772ed44 f7f7f7b9 dadab9f7 .DDxD.r.........
20d68: a4a1d9df 59686868 23235959 3b3b3b08 ....hhhYYY##.;;;
20d78: 4f4f4f3b 36363636 70363636 70367070 ;OOO6666666ppp6p
20d88: 70707070 48484870 69cb3648 3e0c6969 pppppHHHH6.iii.>
20d98: 4a6391ab 00000048 00000000 70700000 ..cJH.........pp
20da8: cf4fcfcf cd4ecd4f 545454cd cd54544e ..O.O.N..TTTNTT.
20db8: 4e54543b 12771212 46a1df68 cd545459 ;TTN..w.h..FYTT.
20dc8: 232354cd a9a9a9a5 a9a9a9a9 080808a9 .T##............
20dd8: 08080808 08080808 a5a5a508 a5a5a5a5 ................
20de8: a5a5a5a5 08a5a5a5 d9b2a9a9 2323a4df ..............##
20df8: a5a52323 a5a90223 a5a5a5a5 b202b7a5 ##..#...........
20e08: a4d9ddb7 89897391 4444e978 44ed4444 .....s..x.DDDD.D
20e18: f7f7b975 5f75dff7 b702a4a1 59b2b2b7 u.....u_.......Y
20e28: 54a55459 3b3ba93b 4f4fcdcd 1f4f3636 YT.T;.;;..OO66O.
20e38: 1f363636 701f1f70 48707070 70707070 666.p..ppppHpppp
20e48: cb364848 79690c69 ec89aef6 00000048 HH6.i.iy....H...
20e58: 00000000 70000000 cd1fcd1f 4ecdcdcd .......p.......N
20e68: 5454cdcd 54545454 54543b54 12124e54 ..TTTTTTT;TTTN..
20e78: a968d959 1f1f1f1f 701f1f1f a9a5a5a9 Y.h........p....
20e88: a9a9a9a9 a9a9a9a9 0808a908 08080808 ................
20e98: a5080808 a5a5a5a5 a9a908a5 08a9a9a9 ................
20ea8: dfd90254 2323a4d9 a5a52323 08a423a5 T.....####...#..
20eb8: a5a5a508 b7a5a5a5 02b7b2b2 89971c59 ............Y...
20ec8: 6de96d89 2278d344 dd02dd74 a1a1a1a1 .m.mD.x"t.......
20ed8: a4a4dda1 b2020202 54a55459 3ba90854 ........YT.TT..;
20ee8: 4f3bcd3b 36361f4f 3636361f 361f1f70 ;.;OO.66.666p..6
20ef8: 70707036 70707070 36cb3670 770c69cb 6pppppppp6.6.i.w
20f08: ec91338b 00000048 00007000 70000000 .3..H....p.....p
20f18: 364fcf70 4e4fcdcd 54cd3b38 544e4e54 p.O6..ON8;.TTNNT
20f28: 54545454 12545454 1f3bdd54 1f1f1f1f TTTTTTT.T.;.....
20f38: 1f1f1f1f 0870701f a9a9a9a5 a9a9a9a9 .....pp.........
20f48: a9a9a9a9 08080808 08080808 08a50808 ................
20f58: b2a5a9a9 d9a1a1dd d95858d9 2323a4a1 .........XX...##
20f68: a5232323 a4a5a5a5 a5a5a959 a5a5a5a5 ###.....Y.......
20f78: b2b223a5 89970cb7 e9e97889 89e9d36d .#.......x..m...
20f88: dfda021c 2323b2a1 23b7b7b7 54232323 ......##...####T
20f98: 3b545454 3ba93b3b 4f3b3b3b 1f1f1f4f TTT;;;.;;;;OO...
20fa8: 361f1f36 3670701f 48707036 70707070 6..6.pp66ppHpppp
20fb8: cb707048 6d69cf69 6944f606 00007036 Hpp.i.im..Di6p..
20fc8: 00700000 00000000 36cd7000 cdcdcd1f ..p......p.6....
20fd8: 4ecd4ee9 545454cd 54545454 54545454 .N.N.TTTTTTTTTTT
20fe8: 1f3b5954 1f1f1fa9 1f1f1f1f 1f1f1f1f TY;.............
20ff8: a9a5a970 a9a9a9a9 a9a9a9a9 0808a9a9 p...............
21008: 08080808 a9080808 d9a10208 58585858 ............XXXX
21018: d9d9dfdf 2323a4a1 a5232323 a508a5a5 ......#####.....
21028: a51f0202 a5a5a5a5 23a5a5a5 97fae546 ...........#F...
21038: e9788989 e96de9e9 2308911c a1d9a102 ..x...m....#....
21048: a523b2a4 080808a5 cd54543b a93b3b3b ..#.....;TT.;;;.
21058: 1f4f3b3b 4fa91f1f 1f70704f 70707070 ;;O....OOpp.pppp
21068: 70707036 70707070 70363670 d30c6936 6pppppppp66p6i..
21078: 69798b67 007048cb 00000000 00000000 g.yi.Hp.........
21088: 4f700000 cdcd4f1f 543bcd1e 545438e9 ..pO.O....;T.8TT
21098: 5454544e 54545454 a9545459 1f1f1fa9 NTTTTTTTYTT.....
210a8: 1f1f1f1f 1f1f1f1f a9701f1f a9a9a9a5 ..........p.....
210b8: a9a9a9a9 a9a9a9a9 0808a9a9 08a90808 ................
210c8: d9d9d9dd d9dfdfdf a1d9d9d9 23b702a1 ...............#
210d8: a5232323 08a5a5a5 a9a10223 a5a5a508 ###.....#.......
210e8: a5a5a5a5 6389e644 2d898989 6de90c0c ....D..c...-...m
210f8: 0a1effe9 b7b2dda1 020202b2 02a4a402 ................
21108: 3ba559b2 3ba9a908 543ba9a9 d9a1ddb2 .Y.;...;..;T....
21118: 4f298888 70701f70 48707070 70707070 ..)Op.pppppHpppp
21128: cb487070 78693636 0c3e06e5 7048cb69 ppH.66ix..>.i.Hp
...
21140: 70700000 4f4f7070 cdcd1e4e bbbb4e4e ..ppppOON...NN..
21150: 54544e54 54545454 08545454 1f1f1fa9 TNTTTTTTTTT.....
21160: 1f1f1f1f 1f1f1f1f 1f1f1f1f a908a91f ................
21170: a9a9a9a9 a9a9a9a9 a9a9a9a9 591f08a9 ...............Y
21180: d9a1a1d9 dfdfdfdf a1d9d9d9 23b70229 ............)..#
21190: a5232323 a5a5a5a5 a1b22308 08a5a9b2 ###......#......
211a0: 54a5a5a5 69bfe651 918991ff 2d0c0c0c ...TQ..i.......-
211b0: 741c6d2d 58585888 0a0a8858 b202dda1 -m.t.XXXX.......
211c0: 88d9ddb2 d90ad9d9 88d9d9d9 88888888 ................
211d0: 88888888 701f7029 70707070 70707070 ....)p.ppppppppp
211e0: 70487070 892d6936 0ce2c889 4848cb69 ppHp6i-.....i.HH
211f0: 00000070 00000000 70000000 36707070 p..........pppp6
21200: 3b381ecd 381eab1e 54543864 54545454 ..8;...8d8TTTTTT
21210: cd545454 1f1fa9a9 1f1f1f1f 1f1f1f1f TTT.............
21220: 1f1f1f1f 081f1f1f a9a91f08 a9a9a9a9 ................
21230: a9a9a9a9 591f08a9 dfd9d958 d9d9df58 .......YX...X...
21240: a1a1d9d9 232302a4 a5232323 a5a5a5a5 ......#####.....
21250: b22308a5 08a9a1dd 44a508a5 08388ced ..#........D..8.
21260: 89911cca 0c0c0c91 63d30c2d d9a12923 ........-..c#)..
21270: 888888d9 58585858 59b229d9 d9d9a102 ....XXXX.).Y....
21280: 880a0ad9 0a0a0ad9 0a0a0a0a 704f0a0a ..............Op
21290: 70707070 70707070 48707070 89cacb48 pppppppppppHH...
212a0: 4e0d2d91 4836cbcb 00007070 00000000 .-.N..6Hpp......
212b0: 00000000 36707000 cd38cd1f bb1e7977 .....pp6..8.wy..
212c0: 54abbb1e 54545454 3b545454 a9a9083b ...TTTTTTTT;;...
212d0: 1f1f1f1f a9a91f1f 1f1f1f1f 1f1f1f1f ................
212e0: a9a90800 a9a9a9a9 a9a9a9a9 08a9a9a9 ................
212f0: 0854dd88 d9465908 a1a1a1d9 b723b7a4 ..T..YF.......#.
21300: a5232323 a5a5a5a5 2308a5a5 b2d902b2 ###........#....
21310: 5154081f a508bfed 918963a9 0ccdca63 ..TQ.....c..c...
21320: 910c2d0c a4a4b791 0a0aa1a1 dfd9d90a .-..............
21330: 5858dfdf 6859ddd9 a1a1a129 0a0a0a0a ..XX..Yh).......
21340: a1a10a0a cfdda1a1 70703670 70707070 ........p6pppppp
21350: 70707070 6391ec48 cdcd69ca 4836cbcb ppppH..c.i....6H
21360: 00007048 00000000 00000000 70700000 Hp............pp
21370: 4f4fcd4f 54c80e4e 641e1e1e 54545438 O.OON..T...d8TTT
21380: 54545454 a9083b3b 1f1f1fa9 1f1f1f1f TTTT;;..........
21390: 1f1fa9a9 1f1f1f1f 08a9cd1f a9a9a9a9 ................
213a0: a9a9a9a9 1fa9a9a9 1f00a502 1f1f1f1f ................
213b0: a1d9dda9 2323b702 a5a5a523 a5a5a5a5 ......###.......
213c0: 08a5a5a5 a1b2b223 e6d3540a 08084e90 ....#....T...N..
213d0: 91ffcb08 690c6391 0c2d0c0c a4b72d63 .....c.i..-.c-..
213e0: a1a12929 a1a1a1a1 88d9d9d9 d958dfd9 ))............X.
213f0: a42959b2 a1a129a4 dda1a1a1 6846dddd .Y)..)........Fh
21400: 7036703b 70707070 70707070 07910769 ;p6pppppppppi...
21410: 36484815 48483648 00707048 00000000 .HH6H6HHHpp.....
21420: 00000000 70007000 cdcd7070 12dc33cd .....p.ppp...3..
21430: 4e4e4e12 5454bbab 54545454 08543b54 .NNN..TTTTTTT;T.
21440: 1f1fa9a9 1f1f1f1f 1fa91fa9 1f1f1f1f ................
21450: 12131e1f a9a9a9a9 a9a9a9a9 1fa9a9a9 ................
21460: a9000808 a9a9a9a9 021f1fa9 2323b2a1 ..............##
21470: a5a5a523 a5a5a5a5 08a5a5a5 b2b22308 #............#..
21480: e69380a4 08080878 1c4a0808 69916391 ....x.....J..c.i
21490: 0c0c0c69 a5cf632d a40223a5 29a12929 i...-c...#..)).)
214a0: a1a1a1a1 d9df88d9 cd0258df 54545968 .........X..hYTT
214b0: 59595454 59595959 1f70cd54 70707070 TTYYYYYYT.p.pppp
214c0: cb707070 ec91fa4a 48707048 48484848 ppp.J...HppHHHHH
214d0: 70704848 00000000 00000000 00000000 HHpp............
214e0: 36367000 77791e4f 54e94e77 54ab1e54 .p66O.ywwN.TT..T
214f0: 54545454 54545454 1fa9a908 1f1f1f1f TTTTTTTT........
21500: a9a9a91f 1f1f1f1f 67331e1f a9084f79 ..........3gyO..
21510: 1fa9a9a9 a9a9a9a9 1f1fa91f 1f1f1f1f ................
21520: a9a9a91f 23dddd1f a5a52323 08a508a5 .......###......
21530: a5a5a5a5 b2230808 ceea5bb2 08a9a95e ......#..[..^...
21540: 63a90808 ca639163 0c0c6969 a963ca0c ...cc.c.ii....c.
21550: a5a508a5 a4a4b2a5 dda1dddd dfd9a1dd ................
21560: dfd9d9df b212cd68 595959b2 cdcd5454 ....h....YYYTT..
21570: 70cfcdcd 70707070 4acb7070 cbec0707 ...ppppppp.J....
21580: 70707048 48484870 48484848 00000070 HppppHHHHHHHp...
21590: 00000000 001f0000 4f700000 541ecd4f ..........pOO..T
215a0: 4e4e774e 3838544e 54545454 54595454 NwNNNT88TTTTTTYT
215b0: a9a90854 1f1f1f1f a9a91f1f 1f1f1fa9 T...............
215c0: 1379121f a9123113 a9a9a9a9 a9a91f1f ..y..1..........
215d0: 1fa91fa9 1f1f1f1f a91f1f1f a1a91fa9 ................
215e0: a5a5a5b2 08080808 08080808 23080808 ...............#
215f0: 5ba66619 08290aa1 3608a91f 639191ff .f.[..)....6...c
21600: 0cec690c fa91ec2d a5a5a508 a5080808 .i..-...........
21610: 020202b2 4646dddd d9dfd9a1 cf54d9d9 ......FF......T.
21620: 595454cd 59595959 cd545959 70707070 .TTYYYYYYYT.pppp
21630: ca154870 70cb4a07 70700000 48487070 pH...J.p..ppppHH
21640: 48484848 00007070 00000000 70000000 HHHHpp.........p
21650: 70000070 4ecf3b36 381e543b 1e544e4e p..p6;.N;T.8NNT.
21660: 54545454 59545454 08a53b59 a91f1fa9 TTTTTTTYY;......
21670: a9a91f1f 1fa9a9a9 0d34121f 79131379 ..........4.y..y
21680: a9a908a9 1f1f1fa9 a91fa9a9 1f1f1f1f ................
21690: 1f1f1f1f 1fa91f1f a5a5a454 08080808 ........T.......
216a0: 08080808 cd08a508 7453a6f1 0aa12902 ..........St.)..
216b0: 1f1f23a1 6391ff4a ec696991 63ec2d0c .#..J..c.ii..-.c
216c0: a5a508ca 3ba5a5a5 b2543b3b dd466802 .......;;;T..hF.
216d0: d9dd5968 a1d9d9df cdcfcfcf cdcdcdcd hY..............
216e0: 545454cd 7070704f 07ca1548 7070154a .TTTOpppH...J.pp
216f0: 70700070 70707070 48484848 00707070 p.ppppppHHHHppp.
...
2170c: 4f1f7000 38cd3b4e 544e5438 544e5454 .p.ON;.88TNTTTNT
2171c: 54545454 a9595959 1fa9a908 a91f1f1f TTTTYYY.........
2172c: 1fa9a9a9 686868a9 13790d34 08081279 .....hhh4.y.y...
2173c: 1fa9a9a9 1f1f1f1f 1f1f1fa9 1f1f1f1f ................
2174c: 1f1f1f1f b7b21fa9 080808a5 08080808 ................
2175c: 44080808 596466e6 a1a40223 a4290a0a ...D.fdY#.....).
2176c: 63fffaa9 69690763 0c0cecec 08086963 ...cc.ii....ci..
2177c: 08080808 3b3b3b3b 6868593b 5468dd68 ....;;;;;Yhhh.hT
2178c: a1d9d946 cdcb68d9 cdcdcdcd cdcdcd54 F....h......T...
2179c: 36704f54 4a07caec 70704815 70007070 TOp6...J.Hpppp.p
217ac: 70707070 70704848 70707070 00000000 ppppHHpppppp....
217bc: 70000000 0000701f 70707000 cd3b544f ...p.p...pppOT;.
217cc: 4e4e3838 4e4e5454 54545459 12595959 88NNTTNNYTTTYYY.
217dc: 1f1fa959 a9a91f1f a91f1f1f 68686854 Y...........Thhh
217ec: 76343468 08797979 a9a9a908 1f1f1f1f h44vyyy.........
217fc: 1f1fa91f 1f1f1f1f 1f1f1f1f 3b1fa91f ...............;
2180c: 0808a502 08080808 5154083b 23597294 ........;.TQ.rY#
2181c: 02b223b2 a1a1a1a4 ffec0229 69ec631c .#......)....c.i
2182c: ececec69 a5a963ca 3b3b3b08 3b3b3b3b i....c...;;;;;;;
2183c: 54cdcd3b 46686868 d9745468 cfa1a1a1 ;..ThhhFhTt.....
2184c: cdcdcdcf cdcdcdcd 1536cdcd cbec4aca ..........6..J..
2185c: 70707070 70707070 70707000 70707070 pppppppp.ppppppp
2186c: 70704870 00000070 00000000 001f7000 pHppp........p..
2187c: a9700000 1f1f7070 381e38cd 3854544e ..p.pp...8.8NTT8
2188c: 5454541e 12595959 3b591212 1f1f1fa9 .TTTYYY...Y;....
2189c: 593ba91f 68b26868 34346868 310d0d0d ..;Yhh.hhh44...1
218ac: a9a9a912 1f1fa9a9 1f081f1f 1f1f1f1f ................
218bc: 1f1f1f1f a9a91f1f 0823021f 3b080808 ..........#....;
218cc: e6783b3b a508e9ed 2323b259 a1a102b2 ;;x.....Y.##....
218dc: a5292929 699163ec ececec69 1ffa07ec )))..c.ii.......
218ec: 3b3b0808 3b3b3b4f cdcd3b3b 686854cd ..;;O;;;;;...Thh
218fc: cd6868b2 d9a1a168 cfcfcf54 cdcdcdcd .hh.h...T.......
2190c: 36cdcdcd 704815ec 70707070 70707070 ...6..Hppppppppp
2191c: 70707070 70707070 70484870 00000070 pppppppppHHpp...
2192c: 00000000 00707000 00000000 1f70701f .....pp......pp.
2193c: 1e38cd1f 5454381e 5412bb12 59595959 ..8..8TT...TYYYY
2194c: 59121259 59595959 0d741259 6868680d Y..YYYYYY.t..hhh
2195c: 34346868 0d343434 a9a97931 1fa9a9a9 hh44444.1y......
2196c: a91f1f1f 1f1f1fa9 1f1f1f1f a9a91f1f ................
2197c: b259364f 08080808 94e1e908 3b083bae O6Y..........;.;
2198c: 23b223a5 a4b259a5 29292929 ca697002 .#.#.Y..)))).pi.
2199c: ecec6969 4a91ecec 08a94fa9 4f4f3b3b ii.....J.O..;;OO
219ac: 3bcf4f4f 54cdcdcd 6868b2b2 a1ddcd54 OO.;...T..hhT...
219bc: cfcb46d9 cfcdcfcf cfcdcfcf 70707070 .F..........pppp
219cc: 70707070 70364848 70707070 70707070 ppppHH6ppppppppp
219dc: 70484870 00007070 00000000 00000000 pHHppp..........
219ec: 00000000 70707070 383b1f1f 544e3838 ....pppp..;888NT
219fc: 12771254 59595959 59681259 b2595959 T.w.YYYYY.hYYYY.
21a0c: 683468b2 0dc82bc8 34686868 34343434 .h4h.+..hhh44444
21a1c: 3b131340 a9a9a9a9 1f1f1f1f 1f1f081f @..;............
21a2c: 1f1f1f1f a91f1f1f 0d1e4f4f 083b3bb2 ........OO...;;.
21a3c: 90e6ae08 083b08e9 59a5a53b b723a523 ......;.;..Y#.#.
21a4c: 2929a4b2 cba92929 ec6969cf 63ececec ..))))...ii....c
21a5c: a94fa9ec 4f4f4f4f cf4f4f4f cdcdcfcf ..O.OOOOOOO.....
21a6c: 59b259cd 546868b2 cfa14654 cfcfcfcf .Y.Y.hhTTF......
21a7c: cdcfcfcf 7070001f 70707070 36363636 ......pppppp6666
21a8c: 00707048 70700070 70487070 00007070 Hpp.p.ppppHppp..
...
21aa8: 701f7000 a91f7070 5454543b 38121254 .p.ppp..;TTTT..8
21ab8: 12125959 68126812 34685959 0d0d6868 YY...h.hYYh4hh..
21ac8: c8c87468 68340dc8 34343434 e8314034 ht....4h44444@1.
21ad8: a9a9a912 1f1f1fa9 1f08701f 1f1f1f1f .........p......
21ae8: 4fa9a91f 161e4f4f 0854b245 78e6ed6d ...OOO..E.T.m..x
21af8: 083b3b3b a5a53ba9 a5082359 2902b723 ;;;..;..Y#..#..)
21b08: 1fa5b729 151569cb ecececec a9a936fa )....i.......6..
21b18: 4f4f4fa9 4f4f4f4f cfcfcfcf 54cdcd4f .OOOOOOO....O..T
21b28: 36540259 54484848 cfcfcfcd cfcfcfcf Y.T6HHHT........
21b38: 707070cf 48707070 4e4f3636 0070704f .ppppppH66ONOpp.
21b48: 00000000 70707000 00000000 00000000 .....ppp........
21b58: 00000000 00007070 00000000 3b707070 ....pp......ppp;
21b68: 543ba9a9 59545454 59591259 68686868 ..;TTTTYY.YYhhhh
21b78: 0db2b268 c8683476 6868680d 34c80d0d h...v4h..hhh...4
21b88: 34340234 31403434 a9a9c813 1f1fa91f 4.4444@1........
21b98: a91f1f1f 1f1f1fa9 a9a9a9a9 06774fa9 .............Ow.
21ba8: 4e23e8b5 0c51e697 3b3bcd08 a53ba93b ..#N..Q...;;;.;.
21bb8: a52323a5 b702b2a5 00000008 15360000 .##...........6.
21bc8: ecec1569 4f1ffafa a9a9a9a9 4f4f4f4f i......O....OOOO
21bd8: cfcf4f4f cf4fcfcf 483659cd 48cbcb36 OO....O..Y6H6..H
21be8: cfcb4f36 cfcfcfcf 700036cf 36707070 6O.......6.pppp6
21bf8: 404f3636 70703640 00000000 70000000 66O@@6pp.......p
21c08: 00000070 00000000 00000000 00000000 p...............
21c18: 70000000 70700070 3b08a9a9 59125454 ...pp.pp...;TT.Y
21c28: 77123812 68746812 b2b26868 3476130d .8.w.hthhh....v4
21c38: b268c876 0d346868 34023434 40343434 v.h.hh4.44.4444@
21c48: 3b797979 1f1f1fa9 701f1f1f a91fa9a9 yyy;.......p....
21c58: 1fa9a9a9 31c8cd1f bf79f687 a9d3edbe .......1..y.....
21c68: 3bcdcd3b 3ba9083b 23a5a5a5 08022308 ;..;;..;...#.#..
...
21c80: 70700000 1f15cb70 a9a9a9a9 4fa9a9a9 ..ppp..........O
21c90: 4f4f4f4f cfcfcf4f 481f59cf 48483636 OOOOO....Y.H66HH
21ca0: cf4f3648 4f4fcfcf 7070cf4f 70707070 H6O...OOO.pppppp
21cb0: 344f4f36 7036129d 00000070 00000000 6OO4..6pp.......
21cc0: 00000070 70007070 00007070 70700000 p...pp.ppp....pp
21cd0: 00000000 70007070 4f1f1f70 3838593b ....pp.pp..O;Y88
21ce0: 12771212 74127477 68686868 340d68b2 ..w.wt.thhhh.h.4
21cf0: 68767634 0d68b2b2 3434340d 34343434 4vvh..h..4444444
21d00: af79400d 1f1f08b4 1f1f1f1f 1fa91f1f .@y.............
21d10: 701fa9a9 79311e4f e35b7976 a94fbf5a ...pO.1yvy[.Z.O.
21d20: cdcd3b3b 4f3b3bcd a508a53b 0023b2a5 ;;...;;O;.....#.
...
21d38: 70000000 701fa91f a94f1f4f a9a9a9a9 ...p...pO.O.....
21d48: 4f4f4f4f cb364f4f 481f594f 48483636 OOOOOO6.OY.H66HH
21d58: 363b4848 364fcfcf 0048cb36 70707070 HH;6..O66.H.pppp
21d68: 124fcf36 364fe29d 00000070 70000000 6.O...O6p......p
21d78: 00000000 48707000 70707048 00000070 .....ppHHpppp...
...
21d90: 1f1f7070 383854a9 77123838 59747412 pp...T8888.w.ttY
21da0: 68681268 59b26868 3468b2b2 68686834 h.hhhh.Y..h44hhh
21db0: 340dc8c8 34020234 fc37f279 a9543765 ...44..4y.7.e7T.
21dc0: 1f1fa91f a91f1fa9 4f1f1fa9 7913791e ...........O.y.y
21dd0: 65fbd176 3b081e0f cd3b4fa9 4f4fcdcd v..e...;.O;...OO
21de0: a53b3b4f 00a559a5 00000000 00000000 O;;..Y..........
21df0: 00000000 4f1f1f1f 1f361f1f 3636361f .......O..6..666
21e00: 4f4f3636 364f3636 48a95436 48484836 66OO66O66T.H6HHH
21e10: 1fcf4848 36364f36 0036cb36 70707070 HH..6O666.6.pppp
21e20: 4ecf3670 36129d3e 70007036 00000000 p6.N>..66p.p....
21e30: 70000070 48487070 48484848 00004848 p..pppHHHHHHHH..
...
21e48: 1f707000 7454a91f 12383874 74741274 .pp...Ttt88.t.tt
21e58: 68b25959 68686868 b2686868 686868b2 YY.hhhhhhhh..hhh
21e68: c8790d68 2c2b3434 fbfc2ee3 c831795b h.y.44+,....[y1.
21e78: a91f1fa9 a91f1fa9 1e4f1f1f 79314513 ..........O..E1y
21e88: e3657167 4f740dd1 3b4fa908 4fcfcdcd gqe...tO..O;...O
21e98: 3b4f4f4f 00a9233b 00000000 00000000 OOO;;#..........
21ea8: 00000000 701f1f70 3670a91f 361f1f1f ....p..p..p6...6
21eb8: 36363636 364f4f36 70083b36 48484848 66666OO66;.pHHHH
21ec8: 1f364848 36364f36 00363636 70707070 HH6.6O66666.pppp
21ed8: 3b4f361f cde29d40 00004836 70007000 .6O;@...6H...p.p
21ee8: 70707000 48484848 15484848 00fd1515 .pppHHHHHHH.....
21ef8: 00007070 70000000 70707070 54a9361f pp.....ppppp.6.T
21f08: 74747412 68121212 68595974 68686868 .ttt...htYYhhhhh
21f18: 68686868 68b26868 0d343468 fce32c79 hhhhhh.hh44.y,..
21f28: 76d153e3 79764040 1fa97745 1f1f1f1f .S.v@@vyEw......
21f38: 13c84ea9 133113e8 f2fcfcaf 0d0d0dc8 .N....1.........
21f48: a9a9a93b cfcdcd4f a9a94f4f 00a9543b ;...O...OO..;T..
...
21f60: 48151500 1f007070 1fa9701f 36361f1f ...Hpp...p....66
21f70: 36361f1f 36363636 703b3b36 48484848 ..6666666;;pHHHH
21f80: a9364848 36364f1f 70363636 70707000 HH6..O66666p.ppp
21f90: 4f363670 123e3e12 00703636 00000000 p66O.>>.66p.....
21fa0: 48487070 15484848 fd151515 07074a4a ppHHHHH.....JJ..
...
21fb8: 1f700000 4f361f1f 7412543b 12681274 ..p...6O;T.tt.h.
21fc8: 5959340d 740d6868 68687434 b2686868 .4YYhh.t4thhhhh.
21fd8: c8346868 71fcfc53 34340dd1 76767676 hh4.S..q..44vvvv
21fe8: 31453131 4e541277 e8e86777 af313113 11E1w.TNwg...11.
21ff8: 79716510 0d0d0d0d a9a94e0d cfcf4fa9 .eqy.....N...O..
22008: a94f4fcf 001fa5a9 00000000 00000000 .OO.............
22018: cb150000 70707048 1f1f7000 1f1f70a9 ....Hppp.p...p..
22028: 1f36361f 36363636 703b4f36 48484870 .66.66666O;ppHHH
22038: 1f364848 36363648 70483636 70707070 HH6.H66666Hppppp
22048: 36367070 343e403b 7048364f 00000000 pp66;@>4O6Hp....
22058: 48484870 15151548 07074afd 4a4a0707 pHHHH....J....JJ
22068: 000000fd 00000000 70700000 361f1f1f ..........pp...6
22078: 12543b4f 68127474 b268130d 0d68b2b2 O;T.tt.h..h...h.
22088: 34346874 68686868 712b6868 79b46ffc th44hhhhhh+q.o.y
22098: 340d0d0d 76797634 31313176 13e8e813 ...44vyvv111....
220a8: 1313e845 37333113 76d13765 0d0dc876 E....137e7.vv...
220b8: 4f74770d cf4fa9a9 a94fcfcf 007008a9 .wtO..O...O...p.
...
220d0: 15480000 70707015 70007070 1f70a91f ..H..ppppp.p..p.
220e0: 361f1f1f 36363636 703b3636 70007070 ...6666666;ppp.p
220f0: 36484848 48484870 00704836 70707070 HHH6pHHH6Hp.pppp
22100: 36707070 e23e1236 704836cd 48707070 ppp66.>..6HppppH
22110: 48484848 4afd1515 4a070707 1515fd4a HHHH...J...JJ...
22120: 00004848 00000000 00000000 1f363670 HH..........p66.
22130: 543b4f36 12747459 68c80d74 68b25959 6O;TYtt.t..hYY.h
22140: 68686868 68686834 fc53c8b2 68345b10 hhhh4hhh..S..[4h
22150: 0dc8c834 79763434 31313176 13131331 4...44vyv1111...
22160: 13131313 650f1331 76795b10 c80dc876 ....1..e.[yvv...
22170: 7474770d 4f3b1f4e 4f4fcfcf 0070a93b .wttN.;O..OO;.p.
...
22188: 15000000 700015cb 70707070 a91f0070 .......pppppp...
22198: 36363670 36363636 704f3648 70701f70 p6666666H6Opp.pp
221a8: 48487070 36364870 70707048 70707070 ppHHpH66Hppppppp
221b8: 36707070 e240cf36 483636cd 48484870 ppp66.@..66HpHHH
221c8: 15484848 07074afd 15fd4a4a 48481515 HHH..J..JJ....HH
221d8: 00484848 00000000 00000000 1f700000 HHH...........p.
221e8: cd363670 59595454 74127459 68685912 p66.TTYYYt.t.Yhh
221f8: 68686868 b2683468 711053c8 34767664 hhhhh4h..S.qdvv4
22208: 0d0d3468 0d34340d 13137676 13133131 h4...44.vv..11..
22218: 31131313 eafcaf13 797979b1 c8c8c876 ...1.....yyyv...
22228: 74770dc8 1fcf7474 3bcdcd3b 00001f3b ..wttt..;..;;...
...
22244: 00481515 70707070 00707070 36701f1f ..H.ppppppp...p6
22254: 48363636 70a94f36 70701f70 70707070 666H6O.pp.pppppp
22264: 48707070 70007070 70707070 70707070 pppHpp.ppppppppp
22274: 34cd3636 483636cd 48484848 4afd1548 66.4.66HHHHHH..J
22284: fd4a074a 48151515 48484848 00707048 J.J....HHHHHHpp.
22294: 00000000 70000000 70000000 4f367070 .......p...ppp6O
222a4: 5454cdcd 12125959 68685974 0d686868 ..TTYY..tYhhhhh.
222b4: 77b26868 2b241053 0d346868 34683434 hh.wS.$+hh4.44h4
222c4: 34343434 31404034 31313113 13131313 44444@@1.111....
222d4: 0f65e35b 79797967 c8c8c82b 777777c8 [.e.gyyy+....www
222e4: 74383874 4f4f7070 0000701f 00000000 t88tppOO.p......
...
222fc: 48151548 70707000 70707070 00707070 H..H.pppppppppp.
2230c: 361f7070 701fa936 70707070 70707070 pp.66..ppppppppp
2231c: 70707070 70707070 70707070 70707070 pppppppppppppppp
2232c: cf364870 48cbcbcf 15484848 074afd15 pH6....HHHH...J.
2233c: 1515fd4a 48484815 70484848 00000070 J....HHHHHHpp...
...
22354: 70000070 4f487070 121254cf 12125959 p..pppHO.T..YY..
22364: 68595974 68343434 f1746868 b2c85310 tYYh444hhht..S..
22374: 68686868 34343468 34686868 400d3434 hhhhh444hhh444.@
22384: 31311331 33313131 33e365fb 76797979 1.111113.e.3yyyv
22394: c8c8c876 797977c8 38387477 00000038 v....wyywt888...
...
223b4: 15154800 70700000 70707070 70707070 .H....pppppppppp
223c4: 70000070 70707070 70707070 70707070 p..ppppppppppppp
223d4: 70707070 70707070 70707070 70707070 pppppppppppppppp
223e4: 36487070 cbcbcb36 fd151515 fd4a074a ppH66.......J.J.
223f4: 48481515 48484848 00707048 00000000 ..HHHHHHHpp.....
...
2240c: 70000000 36707070 0d12cdcd 59595968 ...pppp6....hYYY
2241c: 59595959 34686868 66e56868 34682bbe YYYYhhh4hh.f.+h4
2242c: 68686868 34686868 34686834 34343434 hhhhhhh44hh44444
2243c: 31317634 b1133131 79f210fc 76767979 4v1111.....yyyvv
2244c: c8c8c8c8 45c877c8 381e74c8 00006938 .....w.E.t.88i..
2245c: 00707070 00000000 00000000 00000000 ppp.............
2246c: 15150000 70000015 70707070 70707070 .......ppppppppp
2247c: 70707070 70707070 70707070 70707070 pppppppppppppppp
2248c: 70707070 70707070 70707070 70707070 pppppppppppppppp
2249c: 48487070 cbcbcbcb 074aec15 15fd4a07 ppHH......J..J..
224ac: 48484848 00704848 00000000 00000000 HHHHHHp.........
...
224c8: 70707070 4554cd4f 59595976 59595959 ppppO.TEvYYYYYYY
224d8: 68685959 66be2b68 0d6868e5 68683434 YYhhh+.f.hh.44hh
224e8: 68686868 34686868 34460d34 76763434 hhhhhhh44.F444vv
224f8: e3f27940 7967b1fc c8767679 c8c8c8c8 @y....gyyvv.....
22508: 77777777 381e1e77 00483838 70707000 wwwww..888H..ppp
...
22524: 15700000 00004815 70707070 70707070 ..p..H..pppppppp
22534: 70707070 701f7070 70707070 70707070 pppppp.ppppppppp
22544: 70707070 70707070 70707070 70707070 pppppppppppppppp
22554: 48484848 15cb4848 ca91074a 4815694a HHHHHH..J...Ji.H
22564: 70484848 00000000 00000000 00000000 HHHp............
...
22580: 70700000 ab4f3636 59126887 59595959 ..pp66O..h.YYYYY
22590: 68685959 dba6f174 6868b274 68340d0d YYhht...t.hh..4h
225a0: 68686868 34686868 0d0d3434 40343446 hhhhhhh444..F44@
225b0: e3372c79 764067b1 c8c8c876 77c8c8c8 y,7..g@vv......w
225c0: 77777777 1e1e1e1e 000c3838 70000000 wwww....88.....p
...
225dc: 48000000 00701515 70707000 70707070 ...H..p..ppppppp
225ec: 70707070 70707070 70707070 70707070 pppppppppppppppp
225fc: 70707070 70707070 70707070 70707070 pppppppppppppppp
2260c: 48484848 ca15cbcb eccafa91 4815e969 HHHH........i..H
2261c: 00004848 00000000 00000000 00000000 HH..............
...
22634: 70000000 70007070 0c363636 121277dc ...ppp.p666..w..
22644: 59595959 68595959 646666d1 68686868 YYYYYYYh.ffdhhhh
22654: 68680d68 68686868 34686868 46346834 h.hhhhhhhhh44h4F
22664: 2b34460d f27171f1 76767679 c8c8c876 .F4+.qq.yvvvv...
22674: 7777c8c8 77777777 381e1e1e cb384e38 ..wwwwww...88N8.
22684: 00000000 00000070 00000000 00000000 ....p...........
22694: 00000000 00151515 70700000 70707070 ..........pppppp
226a4: 70707070 70707070 70707070 70707070 pppppppppppppppp
226b4: 70707070 70707070 4f367070 48707070 pppppppppp6OpppH
226c4: 48cb4848 6307fd48 15154a91 48e9e9cb HH.HH..c.J.....H
226d4: 00007048 00000000 00000000 00000000 Hp..............
...
226ec: 00007000 70707070 36cfcf1f 4e6979ab .p..pppp...6.yiN
226fc: 54545454 12595959 74f16553 68686868 TTTTYYY.Se.thhhh
2270c: 68686868 68686868 34686868 6868340d hhhhhhhhhhh4.4hh
2271c: b02b4634 0d67f153 4076400d c80d0d0d 4F+.S.g..@v@....
2272c: 7777c8c8 1e1e7777 381e1e1e e94ee938 ..wwww.....88.N.
2273c: 00000048 00007000 00000000 00000000 H....p..........
2274c: 00000000 1548fd00 70000000 70707070 ......H....ppppp
2275c: 70707070 70707070 70707070 70707070 pppppppppppppppp
2276c: 70707070 70707070 594f7070 4848703b ppppppppppOY;pHH
2277c: 48cbcb48 9163faec 15cb154a 691e69cb H..H..c.J....i.i
2278c: 00007048 00000000 00000000 00000000 Hp..............
...
227a4: 00707000 70700000 4f367070 cf691e0c .pp...pppp6O..i.
227b4: 54cdcdcf bb545954 682b5a66 68686868 ...TTYT.fZ+hhhhh
227c4: 68686834 34686868 68686834 340d0d68 4hhhhhh44hhhh..4
227d4: b0640d68 34462bb0 0d0d0d34 0d0d0d0d h.d..+F44.......
227e4: 7777c8c8 1e1e1e77 381e1e1e 4ee9e9e9 ..www......8...N
227f4: 0000000c 00700000 00000000 00000000 ......p.........
22804: 00000000 15fd4800 70000048 70707070 .....H..H..ppppp
22814: 70707070 70707070 70707070 70707070 pppppppppppppppp
22824: 70707070 70707070 59367070 48483659 pppppppppp6YY6HH
22834: ec4848cb 4a631c63 cbcb1515 124ecbcb .HH.c.cJ......N.
22844: 00007036 00000000 00000000 00000000 6p..............
...
2285c: 70700000 70707070 36367070 cfcfcf36 ..pppppppp666...
2286c: 59cdcfcf 2f545459 59597294 68686812 ...YYTT/.rYY.hhh
2287c: 68346868 34686868 6874460d 0d466868 hh4hhhh4.FthhhF.
2288c: 2b2bc80d 46464646 0d343446 0d0d0d0d ..++FFFFF44.....
2289c: 7777c80d 1e1e7777 e91e3838 4ee9e9e9 ..wwww..88.....N
228ac: 0000cb4e 70000000 00000000 00000000 N......p........
228bc: 00000000 15150000 00007015 70707070 .........p..pppp
228cc: 70707070 70707070 70707070 70707070 pppppppppppppppp
228dc: 48707070 70707048 cf487070 cb483654 pppHHpppppH.T6H.
228ec: 631548cb 154a6397 484815cb 12693648 .H.c.cJ...HHH6i.
228fc: 0070703b 00000000 00000000 00000000 ;pp.............
...
22914: 70700000 70707070 4f707070 3636364f ..pppppppppOO666
22924: 544fcf4f 0b545968 59a5bf94 74681259 O.OThYT....YY.ht
22934: 34686868 6868400d 74460d68 74686868 hhh4.@hhh.Fthhht
22944: 74460d0d 46746868 46746874 0d0d3434 ..FthhtFthtF44..
22954: c80dc80d 1e1e7779 e9e9381e 4ee9e9e9 ....yw...8.....N
22964: 00480c0c 00000000 00000070 00000000 ..H.....p.......
22974: 00000000 fd000000 00001548 70707000 ........H....ppp
22984: 70707070 70707070 70707070 70707070 pppppppppppppppp
22994: 361f7070 70363636 36707070 15cb36cf pp.6666pppp6.6..
229a4: 73071548 48154a1c 48484848 4e484848 H..s.J.HHHHHHHHN
229b4: 00703612 00000000 00000000 00000000 .6p.............
...
229cc: 70700000 70707070 70707070 36364f4f ..ppppppppppOO66
229dc: cfcf3636 24387454 54541e94 12595959 66..Tt8$..TTYYY.
229ec: 68687474 6831f640 68686868 74686874 tthh@.1hhhhhthht
229fc: 68747474 68687468 74686868 0d464646 ttthhthhhhhtFFF.
22a0c: 79c80d0d 387731f6 e9e9e938 0c0ce9e9 ...y.1w88.......
22a1c: 0069cdcd 00000000 00007000 00000000 ..i......p......
...
22a34: 001548fd 70700000 70707070 70707070 .H....pppppppppp
22a44: 70707070 70707070 36367070 4f543636 pppppppppp6666TO
22a54: 48707070 15cb3636 73ff4acb 48481507 pppH66...J.s..HH
22a64: 48484848 cb484848 70704f12 00000000 HHHHHHH..Opp....
...
22a84: 70000000 70707070 701f1f70 36361f70 ...pppppp..pp.66
22a94: cf363636 5a4ecdcf cd3b38e6 5959593b 666...NZ.8;.;YYY
22aa4: 68747412 3487f634 68686834 74747468 .tth4..44hhhhttt
22ab4: 74747474 68687474 74746868 46467468 tttttthhhhtthtFF
22ac4: 31c8c80d 1ec8f616 e9e9e91e cd0ce9e9 ...1............
22ad4: cbcdcdcd 00000000 00000000 00000000 ................
22ae4: 70700000 00000070 4848fd48 48000000 ..ppp...H.HH...H
22af4: 70707070 70707070 70707070 70707070 pppppppppppppppp
22b04: 36367070 59684f36 48484836 cb15cb36 pp666OhY6HHH6...
22b14: 63736315 48154815 48484848 48484848 .csc.H.HHHHHHHHH
22b24: 7070cdcd 00000000 00000000 00000000 ..pp............
...
22b40: 361f1f70 36361f1f 1f1f1f1f cf363636 p..6..66....666.
22b50: 32e9cfcf cd54e932 59543b3b 74746859 ...22.T.;;TYYhtt
22b60: 34877968 68686868 74746868 68686868 hy.4hhhhhhtthhhh
22b70: 68686874 74746868 74747468 79c80d74 thhhhhtthtttt..y
22b80: 7479165d e9e9e91e cd0c0c0c cdcdcdcd ].yt............
22b90: 00000048 00000000 70000000 36363636 H..........p6666
22ba0: 00363636 48151500 00000000 70707048 666....H....Hppp
22bb0: 70707070 70707070 70707070 36484870 pppppppppppppHH6
22bc0: 34684f36 4848484f 15151548 4aff73ca 6Oh4OHHHH....s.J
22bd0: 48481548 70704848 48487070 0048cd36 H.HHHHppppHH6.H.
...
22bf8: 361f1f00 36363636 36363636 36363636 ...6666666666666
22c08: e66dcfcb 59544e5a 543b3b54 74125959 ..m.ZNTYT;;TYY.t
22c18: 34406874 68686868 68686868 68686868 th@4hhhhhhhhhhhh
22c28: 68121268 74741212 74686874 c80d7474 h..h..ttthhttt..
22c38: 77e816f6 0ce9e91e cd0c0c0c cfcdcdcd ...w............
22c48: 00007069 00000000 cb000000 36cbcfcf ip.............6
22c58: 48703636 48fd0070 00000015 70704800 66pHp..H.....Hpp
22c68: 70707070 70707070 70707070 36487070 ppppppppppppppH6
22c78: 7e593636 48363654 fdcb1548 15fa901c 66Y~T66HH.......
22c88: 48481515 70704848 70707070 00363648 ..HHHHppppppH66.
...
22cb0: 1f1f0000 3636361f 36363636 36363636 .....66666666666
22cc0: 576d4f36 54cf4e24 3b3b5974 12595954 6OmW$N.TtY;;TYY.
22cd0: 68747474 68686868 12686812 12747474 ttthhhhh.hh.ttt.
22ce0: 12121274 74121212 12127474 c8747412 t......ttt...tt.
22cf0: c8871606 0ce9381e cdcdcd0c cfcfcfcd .....8..........
22d00: 0000cbcf 00000000 36000000 36cbcfcf ...........6...6
22d10: 48363636 fd707048 00004848 70700000 666HHpp.HH....pp
22d20: 70707070 70487070 48707070 48487048 ppppppHppppHHpHH
22d30: 7e543636 cb36cf68 071515cb 484aff73 66T~h.6.....s.JH
22d40: 48484815 70707048 70707070 70707070 .HHHHppppppppppp
...
22d68: 1f000000 361f1f1f 36363636 36363636 .......666666666
22d78: 57e93636 cfcd548c cd5454cf 59543b4f 66.W.T...TT.O;TY
22d88: 74747459 12686868 12686812 38743812 Yttthhh..hh..8t8
22d98: 12121212 12121212 12383812 74741212 .........88...tt
22da8: c8f61613 0ce9381e cfcdcdcd cfcfcfcf .....8..........
22db8: 0048cfcf 00000000 70000000 cbcbcfcf ..H........p....
22dc8: 483636cb 48704848 007048fd 70000000 .66HHHpH.Hp....p
22dd8: 70707070 70707070 70707070 48484870 pppppppppppppHHH
22de8: 343b3636 cbcbcd68 1cfd4815 1515fa22 66;4h....H.."...
22df8: 48484815 70707048 70707070 00707070 .HHHHpppppppppp.
...
22e24: 1f36361f 3636361f 36363636 e60c3636 .66..666666666..
22e34: cdcfcded cfcfcfcf 3b4f4fcf 38121254 .........OO;T..8
22e44: 12121238 12686812 12121212 12121212 8....hh.........
22e54: 12121212 12125959 12121212 c8f6f60d ....YY..........
22e64: 0ce93838 cfcfcdcd cfcfcfcf 70cfcfcf 88.............p
...
22e7c: cbcbcfcb 363636cb 70484848 004815fd .....666HHHp..H.
22e8c: 00000000 70707070 70707070 70707070 ....pppppppppppp
22e9c: 48487070 68cf3648 cbcb5402 7307cbcb ppHHH6.h.T.....s
22eac: 1548fdff 70484848 70707070 70707070 ..H.HHHppppppppp
22ebc: 00707070 00000000 00000000 00000000 ppp.............
...
22edc: 36363600 1f36361f 36361f1f edcd3636 .666.66...6666..
22eec: cf4f0c32 cfcfcfcf 3b4f54cf 12593b3b 2.O......TO;;;Y.
22efc: 12121212 12681212 12121259 12123838 ......h.Y...88..
22f0c: 59121212 59595912 59595959 77310d12 ...Y.YYYYYYY..1w
22f1c: 0ce94e12 cfcfcfcd cfcfcfcf 36cfcfcf .N.............6
...
22f34: cbcfcf70 36363636 48484848 4848fd70 p...6666HHHHp.HH
22f44: 00000000 70707000 48707070 70707070 .....ppppppHpppp
22f54: 48707070 59364848 69695402 226315cb pppHHH6Y.Tii..c"
22f64: 151515fa 70484848 70707070 70707070 ....HHHppppppppp
22f74: 70707070 00000000 00000000 00000000 pppp............
...
22f94: 1f1f0000 1f361f1f 1f1f1f36 9bcf3636 ......6.6...66..
22fa4: cf366d57 cfcfcfcf 3636cfcf 593b4f36 Wm6.......666O;Y
22fb4: 59121212 59125959 12121212 12121212 ...YYY.Y........
22fc4: 59121212 54595959 54545454 4e125454 ...YYYYTTTTTTT.N
22fd4: cd0c4e4e cfcfcfcf cfcfcfcf cb3636cb NN...........66.
22fe4: 00000048 00000000 cbcfcb00 483636cb H............66H
22ff4: 48484848 48fd4870 00000048 70700000 HHHHpH.HH.....pp
23004: 70707070 70707048 70707070 cd484848 ppppHpppppppHHH.
23014: 69695968 7397eccb 4815484a 70704848 hYii...sJH.HHHpp
23024: 70707070 70707070 70707070 00000070 ppppppppppppp...
...
2304c: 1f000000 1f1f1f1f 361f1f1f 891f361f ...........6.6..
2305c: cb1f7857 cdcfcbcf 54cfcfcf 3b3b4fcd Wx.........T.O;;
2306c: 59121259 59595959 59126812 59595959 Y..YYYYY.h.YYYYY
2307c: 54595959 54545454 54545454 54545454 YYYTTTTTTTTTTTTT
2308c: cdcdcd54 cfcfcfcf cbcbcbcf 363636cb T............666
2309c: 00007036 00000000 cbcf7000 703636cb 6p.......p...66p
230ac: 48487070 15157048 00007048 70000000 ppHHHp..Hp.....p
230bc: 70707070 70707070 70707070 36484870 pppppppppppppHH6
230cc: 15695454 6373cacb 48484815 70484848 TTi...sc.HHHHHHp
230dc: 70707070 70707070 00000070 00000000 ppppppppp.......
...
23108: 70707070 1f707070 2d1f361f 364f9781 ppppppp..6.-..O6
23118: cd4f3636 cf69cfcd 4f4f4fcd 125959cd 66O...i..OOO.YY.
23128: 59595959 59121259 54545959 54545454 YYYYY..YYYTTTTTT
23138: 54545454 54545454 cdcd5454 cfcdcdcd TTTTTTTTTT......
23148: 4f4fcfcf 36363636 36363636 00003636 ..OO6666666666..
23158: 00000000 cb360000 483636cb 48707048 ......6..66HHppH
23168: fd704848 00004848 00000000 70707070 HHp.HH......pppp
23178: 70707070 70707070 48487070 cbcbcf36 ppppppppppHH6...
23188: ca736315 48481548 70707048 70707070 .cs.H.HHHppppppp
23198: 70707070 00000070 00000000 00000000 ppppp...........
...
231c0: 70707000 70707070 cf1f1f70 1f692273 .pppppppp...s"i.
231d0: 36363636 cd69cf4f 36cf4e0c 5954cf36 6666O.i..N.66.TY
231e0: 54595959 54545459 54545454 54544e54 YYYTYTTTTTTTTNTT
231f0: 54545454 54545454 3bcdcd3b 4f4f3b3b TTTTTTTT;..;;;OO
23200: 364f4f4f 36363636 36363636 00703636 OOO66666666666p.
23210: 00000000 36000000 483636cb 48484848 .......6.66HHHHH
23220: 48484848 0048484a 00000000 70707000 HHHHJHH......ppp
23230: 70707070 70707070 48707070 cbcbcb48 pppppppppppHH...
23240: fd1c1cec 48481548 70707070 70707070 ....H.HHpppppppp
23250: 00707070 00000070 00000000 00000000 ppp.p...........
...
23278: 70700000 70707070 1f707070 7091ed91 ..ppppppppp....p
23288: 36361f70 0ccdcf36 cd2b2b0c cdcf4fcf p.666....++..O..
23298: 54545454 54545454 54545454 54545454 TTTTTTTTTTTTTTTT
232a8: 54545454 3b54cd54 4fa9a9a9 1f1fa91f TTTTT.T;...O....
232b8: 1f1f701f 361f1f1f 36361f1f 00701f36 .p.....6..666.p.
232c8: 00000000 70000000 48363636 48704848 .......p666HHHpH
232d8: 70484848 4848fd48 00000000 70480000 HHHpH.HH......Hp
232e8: 70707048 70707070 48707070 cbcb4848 HppppppppppHHH..
232f8: 15631c4a 48484848 70707070 70707070 J.c.HHHHpppppppp
23308: 00000000 70007000 00000000 00000000 .....p.p........
...
23330: 70000000 70707070 70707070 361cff69 ...pppppppppi..6
23340: 36707070 cdcd3636 1e6eab0c 4f3636cf ppp666....n..66O
23350: 545454cf 54545454 54545454 54545454 .TTTTTTTTTTTTTTT
23360: 3b3b3b3b a93b3b3b 701f1f1f 70707070 ;;;;;;;....ppppp
23370: 70707070 701f1f70 70707070 70707070 ppppp..ppppppppp
...
23388: 36367070 48484870 48487070 4815fd70 pp66pHHHppHHp..H
23398: 00000070 70000000 70707070 70707070 p......ppppppppp
233a8: 48707070 48cb4848 48071c4a 70484848 pppHHH.HJ..HHHHp
233b8: 00000070 00007000 00000000 00007000 p....p.......p..
...
233ec: 70707070 70707070 4affca70 70707070 ppppppppp..Jpppp
233fc: cf363636 0e6ee9cd 3636cf0c 54544f36 666...n...666OTT
2340c: 3bcdcd54 cdcdcdcd 3b54cd3b 3b3b3b3b T..;....;.T;;;;;
2341c: 1f3b3b3b 7070701f 70707070 00007000 ;;;..ppppppp.p..
2342c: 70700000 70707070 00707070 00000000 ..ppppppppp.....
2343c: 00000000 48707000 70484848 48484848 .....ppHHHHpHHHH
2344c: 48fd0048 00000048 70000000 70707070 H..HH......ppppp
2345c: 70700070 48707070 48484848 484a634a p.pppppHHHHHJcJH
2346c: 70704848 00000070 00007070 00000070 HHppp...pp..p...
2347c: 00707000 00000000 00000000 00000000 .pp.............
...
234a4: 70707000 70707070 91633670 70707036 .pppppppp6c.6ppp
234b4: 36367070 b5670ccf 36cdcdab 3b4f3636 pp66..g....666O;
234c4: 3b3b3bcd 3b3b3b3b 4f3b3b3b 1f1fa94f .;;;;;;;;;;OO...
234d4: 701fa9a9 70707070 00707070 00000000 ...pppppppp.....
234e4: 00000000 00707000 00700000 00000000 .....pp...p.....
234f4: 00000000 70700000 70704870 70487070 ......pppHppppHp
23504: 4a707048 00004848 00000000 00707000 HppJHH.......pp.
23514: 00000000 70707000 48484848 48fd634a .....pppHHHHJc.H
23524: 70704848 00007070 00000000 00000000 HHpppp..........
23534: 70700000 00000070 00000000 00000000 ..ppp...........
...
2355c: 70700000 70707070 63ec7000 707070ec ..pppppp.p.c.ppp
2356c: 36707070 6e4e4f36 cf690c87 4f1f7036 ppp66ONn..i.6p.O
2357c: 3b3b3b3b a9080808 70a9a91f 1f707070 ;;;;.......pppp.
2358c: 7070701f 00707070 00000070 00000000 .pppppp.p.......
...
235b0: 70000000 70707070 70707070 48007070 ...ppppppppppp.H
235c0: 007070fd 00000000 00700000 00000000 .pp.......p.....
235d0: 70700000 48484848 4815fa4a 00704848 ..ppHHHHJ..HHHp.
235e0: 00007000 00000000 00000000 70700000 .p............pp
235f0: 00007036 00000000 00000000 00000000 6p..............
...
23614: 70000000 00707070 4a700000 000036fa ...pppp...pJ.6..
23624: 70700000 2a363670 4f4f1e6e 70707036 ..ppp66*n.OO6ppp
23634: 1f4f4f1f 1f1fa91f 70700070 70707070 .OO.....p.pppppp
23644: 70707070 00707070 00000000 00000000 ppppppp.........
23654: 00000000 00007000 00000000 00000000 .....p..........
...
2366c: 70707000 70707070 00707070 00701515 .pppppppppp...p.
...
23688: 70700000 48484848 48154a4a 00704848 ..ppHHHHJJ.HHHp.
...
236a4: 70700000 00704f36 00000000 00000000 ..pp6Op.........
...
236d0: 00007070 70000000 00704a4a 70000000 pp.....pJJp....p
236e0: 36367070 4f4fab67 70703636 1f1f7070 pp66g.OO66pppp..
236f0: 00707070 70707000 70707070 70707070 ppp..ppppppppppp
23700: 70707070 00000000 00000000 00000000 pppp............
23710: 00700000 00000000 00000000 00000000 ..p.............
23720: 00000000 70000000 00007070 00000000 .......ppp......
23730: 70481500 00000000 00000000 00000000 ..Hp............
23740: 70000000 48484848 48484afd 00007048 ...pHHHH.JHHHp..
...
2375c: 70000000 00363b70 00000000 00000000 ...pp;6.........
...
23788: 00707000 00000000 70154a70 00000000 .pp.....pJ.p....
23798: 70707000 36364e4f 70703636 70707070 .pppON6666pppppp
237a8: 70707070 00000070 70707000 70707070 ppppp....ppppppp
237b8: 00707070 00000000 00000000 00000000 ppp.............
...
237e8: 00150000 00000000 00000000 00000000 ................
237f8: 70000000 48484870 4848fdfd 00007048 ...ppHHH..HHHp..
...
23814: 70000000 703b4f70 00000000 00000000 ...ppO;p........
...
23848: cb4a4800 00000000 70700000 36707070 .HJ.......ppppp6
23858: 7070701f 70707070 70707070 00007070 .ppppppppppppp..
23868: 00000000 70000000 00000000 00000000 .......p........
...
238a0: 48700000 00000000 00000000 00000000 ..pH............
238b0: 00000000 48484870 4848fdfd 00007048 ....pHHH..HHHp..
...
238d0: 364f1f70 00000070 00000000 00000000 p.O6p...........
...
23900: fd480000 00000048 00000000 70707070 ..H.H.......pppp
23910: 70707070 70000070 70707070 00707070 ppppp..pppppppp.
...
2396c: 48487070 48481515 00000070 00000000 ppHH..HHp.......
...
23988: 4f4f7000 00000070 00000000 00000000 .pOOp...........
...
239b8: 48000000 00004848 00000000 70000000 ...HHH.........p
239c8: 70707070 00000070 70707000 00000070 ppppp....pppp...
...
23a24: 48487000 48481515 00000070 00000000 .pHH..HHp.......
...
23a40: 4f1f0000 0000001f 00000000 00000000 ...O............
...
23a70: 70000000 70484848 00000000 00000000 ...pHHHp........
23a80: 70000000 00000000 70000000 00000070 ...p.......pp...
...
23adc: 48700000 48481515 00000070 00000000 ..pH..HHp.......
...
23af8: 36700000 00007036 00000000 00000000 ..p66p..........
...
23b2c: 48484870 00000000 00000000 00000000 pHHH............
...
23b94: 70000000 70481548 00000070 00000000 ...pH.Hpp.......
...
23bb0: 70000000 00007036 00000000 00000000 ...p6p..........
...
23be0: 6c6c6548 6f57206f 00646c72 Hello World.
00023bec <__func__.9536>:
23bec: 645f766c 67756265 6568635f 735f6b63 lv_debug_check_s
23bfc: 00007274 tr..
00023c00 <hex.9544>:
23c00: 33323130 37363534 42413938 46454443 0123456789ABCDEF
23c10: 00000000 ....
00023c14 <__func__.9554>:
23c14: 645f766c 67756265 676f6c5f 7272655f lv_debug_log_err
23c24: 0000726f 742f2e2e 64726968 74726170 or..../thirdpart
23c34: 766c2f79 732f6c67 6c2f6372 6f635f76 y/lvgl/src/lv_co
23c44: 6c2f6572 65645f76 2e677562 00000063 re/lv_debug.c...
23c54: 645f766c 67756265 6568635f 735f6b63 lv_debug_check_s
23c64: 203a7274 6f6e2061 53412d6e 20494943 tr: a non-ASCII
23c74: 72616863 73616820 70657220 65746165 char has repeate
23c84: 6f6d2064 74206572 206e6168 445f564c d more than LV_D
23c94: 47554245 5254535f 58414d5f 5045525f EBUG_STR_MAX_REP
23ca4: 20544145 656d6974 00002973 645f766c EAT times)..lv_d
23cb4: 67756265 6568635f 735f6b63 203a7274 ebug_check_str:
23cc4: 61766e69 2064696c 72616863 206e6920 invalid char in
23cd4: 20656874 69727473 2820676e 3031203c the string (< 10
23ce4: 6c617620 00296575 645f766c 67756265 value).lv_debug
23cf4: 6568635f 735f6b63 203a7274 69727473 _check_str: stri
23d04: 6920676e 6f6c2073 7265676e 61687420 ng is longer tha
23d14: 564c206e 4245445f 535f4755 4d5f5254 n LV_DEBUG_STR_M
23d24: 4c5f5841 54474e45 00000048 AX_LENGTH...
00023d30 <__func__.9507>:
23d30: 645f766c 5f707369 5f746567 5f726373 lv_disp_get_scr_
23d40: 00746361 act.
00023d44 <__func__.9515>:
23d44: 645f766c 5f707369 5f746567 6579616c lv_disp_get_laye
23d54: 6f745f72 00000070 r_top...
00023d5c <__func__.9519>:
23d5c: 645f766c 5f707369 5f746567 6579616c lv_disp_get_laye
23d6c: 79735f72 00000073 r_sys...
00023d74 <__func__.9524>:
23d74: 645f766c 5f707369 69737361 735f6e67 lv_disp_assign_s
23d84: 65657263 0000006e creen...
00023d8c <__func__.9529>:
23d8c: 645f766c 5f707369 5f746567 63616e69 lv_disp_get_inac
23d9c: 65766974 6d69745f 00000065 tive_time...
00023da8 <__func__.9539>:
23da8: 645f766c 5f707369 67697274 7463615f lv_disp_trig_act
23db8: 74697669 00000079 ivity...
00023dc0 <__func__.9543>:
23dc0: 5f766c5f 70736964 7465675f 6665725f _lv_disp_get_ref
23dd0: 61745f72 00006b73 742f2e2e 64726968 r_task..../third
23de0: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l
23df0: 6f635f76 6c2f6572 69645f76 632e7073 v_core/lv_disp.c
23e00: 00000000 735f766c 615f7263 203a7463 ....lv_scr_act:
23e10: 64206f6e 6c707369 72207961 73696765 no display regis
23e20: 65726574 6f742064 74656720 73746920 tered to get its
23e30: 74636120 6373202e 6e656572 00000000 act. screen....
23e40: 6c5f766c 72657961 706f745f 6f6e203a lv_layer_top: no
23e50: 73696420 79616c70 67657220 65747369 display registe
23e60: 20646572 67206f74 69207465 74207374 red to get its t
23e70: 6c20706f 72657961 00000000 6c5f766c op layer....lv_l
23e80: 72657961 7379735f 6f6e203a 73696420 ayer_sys: no dis
23e90: 79616c70 67657220 65747369 20646572 play registered
23ea0: 67206f74 69207465 73207374 202e7379 to get its sys.
23eb0: 6579616c 00000072 645f766c 5f707369 layer...lv_disp_
23ec0: 69737361 735f6e67 65657263 74203a6e assign_screen: t
23ed0: 74207972 7361206f 6e676973 6e206120 ry to assign a n
23ee0: 732d6e6f 65657263 626f206e 7463656a on-screen object
23ef0: 00000000 645f766c 5f707369 5f746567 ....lv_disp_get_
23f00: 63616e69 65766974 6d69745f 6e203a65 inactive_time: n
23f10: 6964206f 616c7073 65722079 74736967 o display regist
23f20: 64657265 00000000 645f766c 5f707369 ered....lv_disp_
23f30: 67697274 7463615f 74697669 6e203a79 trig_activity: n
23f40: 6964206f 616c7073 65722079 74736967 o display regist
23f50: 64657265 00000000 645f766c 5f707369 ered....lv_disp_
23f60: 5f746567 72666572 7361745f 6e203a6b get_refr_task: n
23f70: 6964206f 616c7073 65722079 74736967 o display regist
23f80: 64657265 00000000 ered....
00023f88 <__func__.9740>:
23f88: 675f766c 70756f72 6572635f 00657461 lv_group_create.
00023f98 <__func__.9754>:
23f98: 675f766c 70756f72 6464615f 6a626f5f lv_group_add_obj
23fa8: 00000000 742f2e2e 64726968 74726170 ....../thirdpart
23fb8: 766c2f79 732f6c67 6c2f6372 6f635f76 y/lvgl/src/lv_co
23fc8: 6c2f6572 72675f76 2e70756f 00000063 re/lv_group.c...
23fd8: 2074754f 6d20666f 726f6d65 00000079 Out of memory...
23fe8: 675f766c 70756f72 6464615f 6a626f5f lv_group_add_obj
23ff8: 6874203a 626f2065 7463656a 20736920 : the object is
24008: 65726c61 20796461 65646461 6f742064 already added to
24018: 69687420 72672073 0070756f 675f766c this group.lv_g
24028: 70756f72 6464615f 6a626f5f 7361203a roup_add_obj: as
24038: 6e676973 6a626f20 20746365 61206f74 sign object to a
24048: 746f206e 20726568 756f7267 00000070 n other group...
00024058 <__func__.9914>:
24058: 695f766c 0074696e lv_init.
00024060 <__func__.9921>:
24060: 645f766c 696e6965 00000074 lv_deinit...
0002406c <__func__.9946>:
2406c: 6f5f766c 645f6a62 615f6c65 636e7973 lv_obj_del_async
2407c: 00000000 ....
00024080 <__func__.10139>:
24080: 6f5f766c 735f6a62 615f7465 5f6f7475 lv_obj_set_auto_
24090: 6c616572 006e6769 realign.
00024098 <__func__.10148>:
24098: 6f5f766c 735f6a62 655f7465 635f7478 lv_obj_set_ext_c
240a8: 6b63696c 6572615f 00000061 lick_area...
000240b4 <__func__.10276>:
240b4: 6f5f766c 735f6a62 615f7465 685f7664 lv_obj_set_adv_h
240c4: 65747469 00007473 ittest..
000240cc <__func__.10282>:
240cc: 6f5f766c 735f6a62 635f7465 6b63696c lv_obj_set_click
240dc: 00000000 ....
000240e0 <__func__.10288>:
240e0: 6f5f766c 735f6a62 745f7465 0000706f lv_obj_set_top..
000240f0 <__func__.10294>:
240f0: 6f5f766c 735f6a62 645f7465 00676172 lv_obj_set_drag.
00024100 <__func__.10300>:
24100: 6f5f766c 735f6a62 645f7465 5f676172 lv_obj_set_drag_
24110: 00726964 dir.
00024114 <__func__.10306>:
24114: 6f5f766c 735f6a62 645f7465 5f676172 lv_obj_set_drag_
24124: 6f726874 00000077 throw...
0002412c <__func__.10312>:
2412c: 6f5f766c 735f6a62 645f7465 5f676172 lv_obj_set_drag_
2413c: 65726170 0000746e parent..
00024144 <__func__.10322>:
24144: 6f5f766c 735f6a62 705f7465 6e657261 lv_obj_set_paren
24154: 76655f74 00746e65 t_event.
0002415c <__func__.10333>:
2415c: 6f5f766c 615f6a62 705f6464 65746f72 lv_obj_add_prote
2416c: 00007463 ct..
00024170 <__func__.10339>:
24170: 6f5f766c 635f6a62 7261656c 6f72705f lv_obj_clear_pro
24180: 74636574 00000000 tect....
00024188 <__func__.10390>:
24188: 6f5f766c 735f6a62 655f7465 746e6576 lv_obj_set_event
24198: 0062635f _cb.
0002419c <__func__.10406>:
2419c: 655f766c 746e6576 6e65735f 75665f64 lv_event_send_fu
241ac: 0000636e nc..
000241b0 <__func__.10397>:
241b0: 655f766c 746e6576 6e65735f 00000064 lv_event_send...
000241c0 <__func__.10419>:
241c0: 6f5f766c 735f6a62 735f7465 616e6769 lv_obj_set_signa
241d0: 62635f6c 00000000 l_cb....
000241d8 <__func__.10431>:
241d8: 6f5f766c 735f6a62 645f7465 67697365 lv_obj_set_desig
241e8: 62635f6e 00000000 n_cb....
000241f0 <__func__.10437>:
241f0: 6f5f766c 615f6a62 636f6c6c 5f657461 lv_obj_allocate_
24200: 5f747865 72747461 00000000 ext_attr....
0002420c <__func__.10443>:
2420c: 6f5f766c 725f6a62 65726665 655f6873 lv_obj_refresh_e
2421c: 645f7478 5f776172 00646170 xt_draw_pad.
00024228 <__func__.10471>:
24228: 6f5f766c 675f6a62 705f7465 6e657261 lv_obj_get_paren
24238: 00000074 t...
0002423c <__func__.10448>:
2423c: 6f5f766c 675f6a62 735f7465 65657263 lv_obj_get_scree
2424c: 0000006e n...
00024250 <__func__.10457>:
24250: 6f5f766c 675f6a62 645f7465 00707369 lv_obj_get_disp.
00024260 <__func__.10477>:
24260: 6f5f766c 675f6a62 635f7465 646c6968 lv_obj_get_child
24270: 00000000 ....
00024274 <__func__.10328>:
24274: 6f5f766c 735f6a62 625f7465 5f657361 lv_obj_set_base_
24284: 00726964 dir.
00024288 <__func__.10484>:
24288: 6f5f766c 675f6a62 635f7465 646c6968 lv_obj_get_child
24298: 6361625f 0000006b _back...
000242a0 <__func__.10490>:
242a0: 6f5f766c 635f6a62 746e756f 6968635f lv_obj_count_chi
242b0: 6572646c 0000006e ldren...
000242b8 <__func__.10500>:
242b8: 6f5f766c 635f6a62 746e756f 6968635f lv_obj_count_chi
242c8: 6572646c 65725f6e 73727563 00657669 ldren_recursive.
000242d8 <__func__.10511>:
242d8: 6f5f766c 675f6a62 635f7465 64726f6f lv_obj_get_coord
242e8: 00000073 s...
000242ec <__func__.10524>:
242ec: 6f5f766c 675f6a62 785f7465 00000000 lv_obj_get_x....
000242fc <__func__.10531>:
242fc: 6f5f766c 675f6a62 795f7465 00000000 lv_obj_get_y....
0002430c <__func__.10538>:
2430c: 6f5f766c 675f6a62 775f7465 68746469 lv_obj_get_width
2431c: 00000000 ....
00024320 <__func__.10543>:
24320: 6f5f766c 675f6a62 685f7465 68676965 lv_obj_get_heigh
24330: 00000074 t...
00024334 <__func__.10588>:
24334: 6f5f766c 675f6a62 615f7465 5f6f7475 lv_obj_get_auto_
24344: 6c616572 006e6769 realign.
0002434c <__func__.10593>:
2434c: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c
2435c: 6b63696c 6461705f 66656c5f 00000074 lick_pad_left...
0002436c <__func__.10598>:
2436c: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c
2437c: 6b63696c 6461705f 6769725f 00007468 lick_pad_right..
0002438c <__func__.10603>:
2438c: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c
2439c: 6b63696c 6461705f 706f745f 00000000 lick_pad_top....
000243ac <__func__.10608>:
243ac: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c
243bc: 6b63696c 6461705f 746f625f 006d6f74 lick_pad_bottom.
000243cc <__func__.10613>:
243cc: 6f5f766c 675f6a62 655f7465 645f7478 lv_obj_get_ext_d
243dc: 5f776172 00646170 raw_pad.
000243e4 <__func__.10162>:
243e4: 6f5f766c 635f6a62 6e61656c 7974735f lv_obj_clean_sty
243f4: 6c5f656c 00747369 le_list.
000243fc <__func__.10700>:
243fc: 6f5f766c 675f6a62 6c5f7465 6c61636f lv_obj_get_local
2440c: 7974735f 0000656c _style..
00024414 <__func__.10200>:
24414: 6f5f766c 725f6a62 766f6d65 74735f65 lv_obj_remove_st
24424: 5f656c79 61636f6c 72705f6c 0000706f yle_local_prop..
00024434 <__func__.10706>:
24434: 6f5f766c 675f6a62 685f7465 65646469 lv_obj_get_hidde
24444: 0000006e n...
00024448 <__func__.9962>:
24448: 6f5f766c 695f6a62 6c61766e 74616469 lv_obj_invalidat
24458: 72615f65 00006165 e_area..
00024460 <__func__.9977>:
24460: 6f5f766c 695f6a62 6c61766e 74616469 lv_obj_invalidat
24470: 00000065 e...
00024474 <__func__.9995>:
24474: 6f5f766c 6d5f6a62 5f65766f 65726f66 lv_obj_move_fore
24484: 756f7267 0000646e ground..
0002448c <__func__.10001>:
2448c: 6f5f766c 6d5f6a62 5f65766f 6b636162 lv_obj_move_back
2449c: 756f7267 0000646e ground..
000244a4 <__func__.10009>:
244a4: 6f5f766c 735f6a62 705f7465 0000736f lv_obj_set_pos..
000244b4 <__func__.10018>:
244b4: 6f5f766c 735f6a62 785f7465 00000000 lv_obj_set_x....
000244c4 <__func__.10024>:
244c4: 6f5f766c 735f6a62 795f7465 00000000 lv_obj_set_y....
000244d4 <__func__.10082>:
244d4: 6f5f766c 615f6a62 6e67696c 00000000 lv_obj_align....
000244e4 <__func__.10096>:
244e4: 6f5f766c 615f6a62 6e67696c 69726f5f lv_obj_align_ori
244f4: 00006f67 go..
000244f8 <__func__.10133>:
244f8: 6f5f766c 725f6a62 696c6165 00006e67 lv_obj_realign..
00024508 <__func__.10207>:
24508: 6f5f766c 725f6a62 65726665 735f6873 lv_obj_refresh_s
24518: 656c7974 00000000 tyle....
00024520 <__func__.10156>:
24520: 6f5f766c 615f6a62 735f6464 656c7974 lv_obj_add_style
24530: 00000000 ....
00024534 <__func__.10269>:
24534: 6f5f766c 735f6a62 685f7465 65646469 lv_obj_set_hidde
24544: 0000006e n...
00024548 <__func__.10711>:
24548: 6f5f766c 675f6a62 615f7465 685f7664 lv_obj_get_adv_h
24558: 65747469 00007473 ittest..
00024560 <__func__.10716>:
24560: 6f5f766c 675f6a62 635f7465 6b63696c lv_obj_get_click
24570: 00000000 ....
00024574 <__func__.10721>:
24574: 6f5f766c 675f6a62 745f7465 0000706f lv_obj_get_top..
00024584 <__func__.10726>:
24584: 6f5f766c 675f6a62 645f7465 00676172 lv_obj_get_drag.
00024594 <__func__.10731>:
24594: 6f5f766c 675f6a62 645f7465 5f676172 lv_obj_get_drag_
245a4: 00726964 dir.
000245a8 <__func__.10736>:
245a8: 6f5f766c 675f6a62 645f7465 5f676172 lv_obj_get_drag_
245b8: 6f726874 00000077 throw...
000245c0 <__func__.10747>:
245c0: 6f5f766c 675f6a62 705f7465 6e657261 lv_obj_get_paren
245d0: 76655f74 00746e65 t_event.
000245d8 <__func__.10752>:
245d8: 6f5f766c 675f6a62 625f7465 5f657361 lv_obj_get_base_
245e8: 00726964 dir.
000245ec <__func__.9928>:
245ec: 6f5f766c 635f6a62 74616572 00000065 lv_obj_create...
000245fc <__func__.9985>:
245fc: 6f5f766c 735f6a62 705f7465 6e657261 lv_obj_set_paren
2460c: 00000074 t...
00024610 <__func__.10031>:
24610: 6f5f766c 735f6a62 735f7465 00657a69 lv_obj_set_size.
00024620 <__func__.10043>:
24620: 6f5f766c 735f6a62 775f7465 68746469 lv_obj_set_width
24630: 00000000 ....
00024634 <__func__.10049>:
24634: 6f5f766c 735f6a62 685f7465 68676965 lv_obj_set_heigh
24644: 00000074 t...
00024648 <__func__.10757>:
24648: 6f5f766c 675f6a62 705f7465 65746f72 lv_obj_get_prote
24658: 00007463 ct..
0002465c <__func__.10763>:
2465c: 6f5f766c 695f6a62 72705f73 6365746f lv_obj_is_protec
2466c: 00646574 ted.
00024670 <__func__.10769>:
24670: 6f5f766c 675f6a62 735f7465 65746174 lv_obj_get_state
24680: 00000000 ....
00024684 <__func__.10548>:
24684: 6f5f766c 675f6a62 775f7465 68746469 lv_obj_get_width
24694: 7469665f 00000000 _fit....
0002469c <__func__.10555>:
2469c: 6f5f766c 675f6a62 685f7465 68676965 lv_obj_get_heigh
246ac: 69665f74 00000074 t_fit...
000246b4 <__func__.10517>:
246b4: 6f5f766c 675f6a62 695f7465 72656e6e lv_obj_get_inner
246c4: 6f6f635f 00736472 0000ffff _coords.....
000246d0 <__func__.10345>:
246d0: 6f5f766c 735f6a62 735f7465 65746174 lv_obj_set_state
246e0: 00000000 ....
000246e4 <__func__.11002>:
246e4: 6e617274 72635f73 65746165 00000000 trans_create....
000246f4 <__func__.10368>:
246f4: 6f5f766c 615f6a62 735f6464 65746174 lv_obj_add_state
24704: 00000000 ....
00024708 <__func__.10375>:
24708: 6f5f766c 635f6a62 7261656c 6174735f lv_obj_clear_sta
24718: 00006574 te..
0002471c <__func__.10775>:
2471c: 6f5f766c 675f6a62 735f7465 616e6769 lv_obj_get_signa
2472c: 62635f6c 00000000 l_cb....
00024734 <__func__.10780>:
24734: 6f5f766c 675f6a62 645f7465 67697365 lv_obj_get_desig
24744: 62635f6e 00000000 n_cb....
0002474c <__func__.10785>:
2474c: 6f5f766c 675f6a62 655f7465 746e6576 lv_obj_get_event
2475c: 0062635f _cb.
00024760 <__func__.10790>:
24760: 6f5f766c 675f6a62 655f7465 615f7478 lv_obj_get_ext_a
24770: 00727474 ttr.
00024774 <__func__.10796>:
24774: 6f5f766c 675f6a62 745f7465 00657079 lv_obj_get_type.
00024784 <__func__.10811>:
24784: 6f5f766c 675f6a62 675f7465 70756f72 lv_obj_get_group
24794: 00000000 ....
00024798 <__func__.9935>:
24798: 6f5f766c 645f6a62 00006c65 lv_obj_del..
000247a4 <__func__.10901>:
247a4: 6f5f766c 645f6a62 615f6c65 636e7973 lv_obj_del_async
247b4: 0062635f _cb.
000247b8 <__func__.9951>:
247b8: 6f5f766c 635f6a62 6e61656c 00000000 lv_obj_clean....
000247c8 <__func__.10816>:
247c8: 6f5f766c 695f6a62 6f665f73 65737563 lv_obj_is_focuse
247d8: 00000064 742f2e2e 64726968 74726170 d...../thirdpart
247e8: 766c2f79 732f6c67 6c2f6372 6f635f76 y/lvgl/src/lv_co
247f8: 6c2f6572 626f5f76 00632e6a 695f766c re/lv_obj.c.lv_i
24808: 3a74696e 726c6120 79646165 696e6920 nit: already ini
24818: 00646574 695f766c 2074696e 64616572 ted.lv_init read
24828: 00000079 645f766c 696e6965 6f642074 y...lv_deinit do
24838: 0000656e 4c4c554e 696f7020 7265746e ne..NULL pointer
24848: 00000000 735f766c 675f7263 645f7465 ....lv_scr_get_d
24858: 3a707369 72637320 206e6565 20746f6e isp: screen not
24868: 6e756f66 00000064 6f5f766c 735f6a62 found...lv_obj_s
24878: 625f7465 5f657361 3a726964 766e6920 et_base_dir: inv
24888: 64696c61 73616220 69642065 00000072 alid base dir...
24898: 6f5f766c 635f6a62 6e61656c 7974735f lv_obj_clean_sty
248a8: 6c5f656c 3a747369 6e616320 66207427 le_list: can't f
248b8: 20646e69 6c797473 69772065 60206874 ind style with `
248c8: 74726170 00000060 6f5f766c 735f6a62 part`...lv_obj_s
248d8: 705f7465 203a736f 20746f6e 6e616863 et_pos: not chan
248e8: 676e6967 736f7020 6f697469 666f206e ging position of
248f8: 72637320 206e6565 656a626f 00007463 screen object..
24908: 6f5f766c 615f6a62 735f6464 656c7974 lv_obj_add_style
24918: 6163203a 2074276e 646e6966 79747320 : can't find sty
24928: 7720656c 20687469 70797460 00006065 le with `type`..
24938: 6f5f766c 635f6a62 74616572 6e203a65 lv_obj_create: n
24948: 6420746f 6c707369 63207961 74616572 ot display creat
24958: 74206465 6f73206f 72616620 6f4e202e ed to so far. No
24968: 616c7020 74206563 7361206f 6e676973 place to assign
24978: 65687420 77656e20 72637320 006e6565 the new screen.
24988: 656a624f 63207463 74616572 65722065 Object create re
24998: 00796461 276e6143 65732074 68742074 ady.Can't set th
249a8: 61702065 746e6572 20666f20 63732061 e parent of a sc
249b8: 6e656572 00000000 276e6143 65732074 reen....Can't se
249c8: 61702074 746e6572 203d3d20 4c4c554e t parent == NULL
249d8: 206f7420 6f206e61 63656a62 00000074 to an object...
249e8: 6f5f766c 00006a62 lv_obj..
000249f0 <__func__.9738>:
249f0: 725f766c 5f726665 61657261 00000000 lv_refr_area....
24a00: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv
24a10: 732f6c67 6c2f6372 6f635f76 6c2f6572 gl/src/lv_core/l
24a20: 65725f76 632e7266 00000000 276e6143 v_refr.c....Can'
24a30: 65732074 44562074 65682042 74686769 t set VDB height
24a40: 69737520 7420676e 72206568 646e756f using the round
24a50: 6e756620 6f697463 28202e6e 6e6f7257 function. (Wron
24a60: 6f722067 5f646e75 6f206263 6f742072 g round_cb or to
24a70: 616d7320 56206c6c 00294244 small VDB).
00024a7c <__func__.9549>:
24a7c: 5f766c5f 6c797473 696c5f65 725f7473 _lv_style_list_r
24a8c: 766f6d65 74735f65 00656c79 emove_style.
00024a98 <__func__.9532>:
24a98: 5f766c5f 6c797473 696c5f65 615f7473 _lv_style_list_a
24aa8: 735f6464 656c7974 00000000 dd_style....
00024ab4 <__func__.9777>:
24ab4: 5f746567 6f6c6c61 6f6c5f63 5f6c6163 get_alloc_local_
24ac4: 6c797473 00000065 style...
00024acc <__func__.9583>:
24acc: 5f766c5f 6c797473 65735f65 6e695f74 _lv_style_set_in
24adc: 00000074 t...
00024ae0 <__func__.9597>:
24ae0: 5f766c5f 6c797473 65735f65 6f635f74 _lv_style_set_co
24af0: 00726f6c lor.
00024af4 <__func__.9611>:
24af4: 5f766c5f 6c797473 65735f65 706f5f74 _lv_style_set_op
24b04: 00000061 a...
00024b08 <__func__.9625>:
24b08: 5f766c5f 6c797473 65735f65 74705f74 _lv_style_set_pt
24b18: 00000072 r...
00024b1c <__func__.9673>:
24b1c: 5f766c5f 6c797473 696c5f65 615f7473 _lv_style_list_a
24b2c: 745f6464 736e6172 7974735f 0000656c dd_trans_style..
24b3c: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv
24b4c: 732f6c67 6c2f6372 6f635f76 6c2f6572 gl/src/lv_core/l
24b5c: 74735f76 2e656c79 00000063 735f766c v_style.c...lv_s
24b6c: 656c7974 73696c5f 65725f74 65766f6d tyle_list_remove
24b7c: 7974735f 203a656c 6c756f63 74276e64 _style: couldn't
24b8c: 61657220 636f6c6c 20657461 73616c63 reallocate clas
24b9c: 696c2073 00007473 735f766c 656c7974 s list..lv_style
24bac: 73696c5f 64615f74 74735f64 3a656c79 _list_add_style:
24bbc: 756f6320 276e646c 64612074 68742064 couldn't add th
24bcc: 6c632065 00737361 5f746567 61636f6c e class.get_loca
24bdc: 74735f6c 3a656c79 756f6320 276e646c l_style: couldn'
24bec: 72632074 65746165 636f6c20 73206c61 t create local s
24bfc: 656c7974 00000000 735f766c 656c7974 tyle....lv_style
24c0c: 73696c5f 64615f74 72745f64 5f736e61 _list_add_trans_
24c1c: 6c797473 63203a65 646c756f 2074276e style: couldn't
24c2c: 61657263 74206574 736e6172 6f697469 create transitio
24c3c: 7473206e 00656c79 n style.
00024c44 <__func__.9728>:
24c44: 6c6c6966 656c625f 6465646e 00000000 fill_blended....
00024c54 <__func__.9860>:
24c54: 5f70616d 6e656c62 00646564 742f2e2e map_blended.../t
24c64: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s
24c74: 6c2f6372 72645f76 6c2f7761 72645f76 rc/lv_draw/lv_dr
24c84: 625f7761 646e656c 0000632e 6c6c6966 aw_blend.c..fill
24c94: 656c625f 6465646e 6e75203a 70707573 _blended: unsupp
24ca4: 6574726f 6c622064 20646e65 65646f6d orted blend mode
24cb4: 00000000 0000ffff ........
00024cbc <__func__.9554>:
24cbc: 645f766c 5f776172 00676d69 lv_draw_img.
00024cc8 <__func__.9618>:
24cc8: 695f766c 645f676d 5f776172 65726f63 lv_img_draw_core
24cd8: 00000000 742f2e2e 64726968 74726170 ....../thirdpart
24ce8: 766c2f79 732f6c67 6c2f6372 72645f76 y/lvgl/src/lv_dr
24cf8: 6c2f7761 72645f76 695f7761 632e676d aw/lv_draw_img.c
24d08: 00000000 67616d49 72642065 203a7761 ....Image draw:
24d18: 20637273 4e207369 004c4c55 640a6f4e src is NULL.No.d
24d28: 00617461 67616d49 72642065 65207761 ata.Image draw e
24d38: 726f7272 00000000 67616d49 72642065 rror....Image dr
24d48: 63207761 74276e61 61657220 68742064 aw can't read th
24d58: 696c2065 0000656e e line..
00024d60 <_lv_bpp1_opa_table>:
24d60: 0000ff00 ....
00024d64 <_lv_bpp2_opa_table>:
24d64: ffaa5500 .U..
00024d68 <_lv_bpp4_opa_table>:
24d68: 33221100 77665544 bbaa9988 ffeeddcc .."3DUfw........
00024d78 <_lv_bpp8_opa_table>:
24d78: 03020100 07060504 0b0a0908 0f0e0d0c ................
24d88: 13121110 17161514 1b1a1918 1f1e1d1c ................
24d98: 23222120 27262524 2b2a2928 2f2e2d2c !"#$%&'()*+,-./
24da8: 33323130 37363534 3b3a3938 3f3e3d3c 0123456789:;<=>?
24db8: 43424140 47464544 4b4a4948 4f4e4d4c @ABCDEFGHIJKLMNO
24dc8: 53525150 57565554 5b5a5958 5f5e5d5c PQRSTUVWXYZ[\]^_
24dd8: 63626160 67666564 6b6a6968 6f6e6d6c `abcdefghijklmno
24de8: 73727170 77767574 7b7a7978 7f7e7d7c pqrstuvwxyz{|}~.
24df8: 83828180 87868584 8b8a8988 8f8e8d8c ................
24e08: 93929190 97969594 9b9a9998 9f9e9d9c ................
24e18: a3a2a1a0 a7a6a5a4 abaaa9a8 afaeadac ................
24e28: b3b2b1b0 b7b6b5b4 bbbab9b8 bfbebdbc ................
24e38: c3c2c1c0 c7c6c5c4 cbcac9c8 cfcecdcc ................
24e48: d3d2d1d0 d7d6d5d4 dbdad9d8 dfdedddc ................
24e58: e3e2e1e0 e7e6e5e4 ebeae9e8 efeeedec ................
24e68: f3f2f1f0 f7f6f5f4 fbfaf9f8 fffefdfc ................
00024e78 <__func__.9614>:
24e78: 645f766c 5f776172 7474656c 00007265 lv_draw_letter..
00024e88 <__func__.9696>:
24e88: 77617264 74656c5f 5f726574 70627573 draw_letter_subp
24e98: 00000078 x...
00024e9c <__func__.9641>:
24e9c: 77617264 74656c5f 5f726574 6d726f6e draw_letter_norm
24eac: 00006c61 al..
00024eb0 <_lv_bpp3_opa_table>:
24eb0: 6d492400 ffdbb692 742f2e2e 64726968 .$Im....../third
24ec0: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l
24ed0: 72645f76 6c2f7761 72645f76 6c5f7761 v_draw/lv_draw_l
24ee0: 6c656261 0000632e 645f766c 5f776172 abel.c..lv_draw_
24ef0: 7474656c 203a7265 746e6f66 20736920 letter: font is
24f00: 4c4c554e 00000000 645f766c 5f776172 NULL....lv_draw_
24f10: 7474656c 203a7265 70796c67 73642068 letter: glyph ds
24f20: 6e202e63 6620746f 646e756f 00000000 c. not found....
24f30: 645f766c 5f776172 7474656c 203a7265 lv_draw_letter:
24f40: 72616863 65746361 20732772 6d746962 character's bitm
24f50: 6e207061 6620746f 646e756f 00000000 ap not found....
24f60: 645f766c 5f776172 7474656c 203a7265 lv_draw_letter:
24f70: 61766e69 2064696c 20707062 20746f6e invalid bpp not
24f80: 6e756f66 00000064 645f766c 5f776172 found...lv_draw_
24f90: 7474656c 203a7265 61766e69 2064696c letter: invalid
24fa0: 00707062 bpp.
00024fa4 <wcorr.10369>:
24fa4: 81808080 83828281 87868584 8d8c8a89 ................
24fb4: 9593918f 9e9b9997 a7a5a2a0 b2afadaa ................
24fc4: 000000b5 ....
00024fc8 <__func__.9580>:
24fc8: 645f766c 5f776172 6b73616d 6464615f lv_draw_mask_add
24fd8: 00000000 ....
00024fdc <__func__.9645>:
24fdc: 645f766c 5f776172 6b73616d 676e615f lv_draw_mask_ang
24fec: 695f656c 0074696e 742f2e2e 64726968 le_init.../third
24ffc: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l
2500c: 72645f76 6c2f7761 72645f76 6d5f7761 v_draw/lv_draw_m
2501c: 2e6b7361 00000063 6d5f766c 5f6b7361 ask.c...lv_mask_
2502c: 3a646461 206f6e20 63616c70 6f742065 add: no place to
2503c: 64646120 65687420 73616d20 0000006b add the mask...
2504c: 78656e55 74636570 73206465 74726174 Unexpected start
2505c: 676e615f 0000656c 78656e55 74636570 _angle..Unexpect
2506c: 65206465 615f646e 656c676e 00000000 ed end_angle....
2507c: 0000ffff ....
00025080 <__func__.9886>:
25080: 77617264 7461705f 6e726574 00000000 draw_pattern....
25090: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv
250a0: 732f6c67 6c2f6372 72645f76 6c2f7761 gl/src/lv_draw/l
250b0: 72645f76 725f7761 2e746365 00000063 v_draw_rect.c...
250c0: 77617264 676d695f 6163203a 2074276e draw_img: can't
250d0: 20746567 67616d69 6e692065 00006f66 get image info..
250e0: 695f766c 645f676d 67697365 69203a6e lv_img_design: i
250f0: 6567616d 756f7320 20656372 65707974 mage source type
25100: 20736920 6e6b6e75 006e776f 33221100 is unknown..."3
25110: 77665544 bbaa9988 ffeeddcc DUfw........
0002511c <__func__.7156>:
2511c: 695f766c 625f676d 735f6675 705f7465 lv_img_buf_set_p
2512c: 74656c61 00006574 alette..
00025134 <__func__.9528>:
25134: 5f766c5f 5f676d69 68636163 706f5f65 _lv_img_cache_op
25144: 00006e65 en..
00025148 <__func__.9548>:
25148: 695f766c 635f676d 65686361 7465735f lv_img_cache_set
25158: 7a69735f 00000065 742f2e2e 64726968 _size...../third
25168: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l
25178: 72645f76 6c2f7761 6d695f76 61635f67 v_draw/lv_img_ca
25188: 2e656863 00000063 695f766c 635f676d che.c...lv_img_c
25198: 65686361 65706f5f 74203a6e 63206568 ache_open: the c
251a8: 65686361 7a697320 73692065 00003020 ache size is 0..
251b8: 67616d69 72642065 203a7761 68636163 image draw: cach
251c8: 696d2065 202c7373 736f6c63 6e612065 e miss, close an
251d8: 65722064 20657375 65206e61 7972746e d reuse an entry
251e8: 00000000 67616d69 72642065 203a7761 ....image draw:
251f8: 68636163 696d2065 202c7373 68636163 cache miss, cach
25208: 74206465 6e61206f 706d6520 65207974 ed to an empty e
25218: 7972746e 00000000 67616d49 72642065 ntry....Image dr
25228: 63207761 6f6e6e61 706f2074 74206e65 aw cannot open t
25238: 69206568 6567616d 73657220 6372756f he image resourc
25248: 00000065 e...
0002524c <__func__.9619>:
2524c: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b
2525c: 746c6975 5f6e695f 6f666e69 00000000 uilt_in_info....
0002526c <__func__.9626>:
2526c: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b
2527c: 746c6975 5f6e695f 6e65706f 00000000 uilt_in_open....
0002528c <__func__.9673>:
2528c: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b
2529c: 746c6975 5f6e695f 656e696c 7572745f uilt_in_line_tru
252ac: 6f635f65 00726f6c 33221100 77665544 e_color..."3DUfw
252bc: bbaa9988 ffeeddcc ........
000252c4 <__func__.9656>:
252c4: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b
252d4: 746c6975 5f6e695f 64616572 6e696c5f uilt_in_read_lin
252e4: 00000065 e...
000252e8 <__func__.9588>:
252e8: 695f766c 645f676d 646f6365 635f7265 lv_img_decoder_c
252f8: 74616572 00000065 reate...
00025300 <__func__.9550>:
25300: 5f766c5f 5f676d69 6f636564 5f726564 _lv_img_decoder_
25310: 74696e69 00000000 742f2e2e 64726968 init....../third
25320: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l
25330: 72645f76 6c2f7761 6d695f76 65645f67 v_draw/lv_img_de
25340: 65646f63 00632e72 67616d49 65672065 coder.c.Image ge
25350: 6e692074 67206f66 72207465 20646165 t info get read
25360: 656c6966 61656820 00726564 67616d49 file header.Imag
25370: 65672065 6e692074 66206f66 646e756f e get info found
25380: 6b6e7520 6e776f6e 63727320 70797420 unknown src typ
25390: 00000065 006e6962 6c697542 6e692d74 e...bin.Built-in
253a0: 616d6920 64206567 646f6365 63207265 image decoder c
253b0: 74276e61 65706f20 6874206e 69662065 an't open the fi
253c0: 0000656c 5f676d69 6f636564 5f726564 le..img_decoder_
253d0: 6c697562 6e695f74 65706f5f 6f203a6e built_in_open: o
253e0: 6f207475 656d2066 79726f6d 00000000 ut of memory....
253f0: 67616d49 65642065 65646f63 706f2072 Image decoder op
25400: 203a6e65 6e6b6e75 206e776f 6f6c6f63 en: unknown colo
25410: 6f662072 74616d72 00000000 6c697542 r format....Buil
25420: 6e692d74 616d6920 64206567 646f6365 t-in image decod
25430: 73207265 206b6565 6c696166 00006465 er seek failed..
25440: 6c697542 6e692d74 616d6920 64206567 Built-in image d
25450: 646f6365 72207265 20646165 6c696166 ecoder read fail
25460: 00006465 6c697542 6e692d74 616d6920 ed..Built-in ima
25470: 64206567 646f6365 72207265 20646165 ge decoder read
25480: 20746f6e 70707573 7374726f 65687420 not supports the
25490: 6c6f6320 6620726f 616d726f 00000074 color format...
254a0: 695f766c 645f676d 646f6365 695f7265 lv_img_decoder_i
254b0: 3a74696e 74756f20 20666f20 6f6d656d nit: out of memo
254c0: 00007972 ry..
000254c4 <__func__.9652>:
254c4: 665f766c 5f746e6f 5f746567 6d746962 lv_font_get_bitm
254d4: 665f7061 745f746d 00007478 742f2e2e ap_fmt_txt..../t
254e4: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s
254f4: 6c2f6372 6f665f76 6c2f746e 6f665f76 rc/lv_font/lv_fo
25504: 665f746e 745f746d 632e7478 00000000 nt_fmt_txt.c....
00025514 <kern_classes>:
25514: 00025524 00026170 000260d4 0000313d $U..pa...`..=1..
00025524 <kern_class_values>:
25524: 00000100 00000000 00000100 00000003 ................
25534: 00000200 00000000 00000000 00000000 ................
25544: 00010000 00000000 00000000 00000000 ................
25554: 000c0100 0000fa07 f1f20000 04060c02 ................
25564: 010d02f6 0008030b 00000000 00000000 ................
25574: 020f0000 000000fe 00000000 00000000 ................
25584: f8000500 00000000 0504fb00 00fd0000 ................
25594: fd0003fe fbfffd00 00000000 fd0000fd ................
255a4: fd0000fc 0000fb00 00000000 fd000000 ................
255b4: 00fc00fd 00e100f9 0500fb00 fb000008 ................
255c4: 05080303 000005fc 000000f1 00000000 ................
255d4: 00000000 000000f7 00000000 00000000 ................
255e4: f9000000 f600f3fd 000000fe 000a0100 ................
255f4: 01fffef8 0000fc00 0000edfe 00000000 ................
25604: 00000000 0afeec00 00000000 00000000 ................
25614: 00000000 000000f6 00000000 08000000 ................
25624: 00000300 000000fb 00000000 00000000 ................
25634: 00000000 020a0000 00000001 00000000 ................
...
25664: 000000f7 00000000 00000000 00000000 ................
25674: 00000000 02000000 fd080305 fd050000 ................
25684: 0702ddf8 00fd0105 00080009 00e80008 ................
25694: 080008fd 000305fd 00fd0100 0014fc00 ................
256a4: 00080014 0804030b f7000000 00000000 ................
256b4: 0200fe01 02fbfdfb 0000fd00 0000f600 ................
...
256cc: 0000ef00 00000000 00000000 00000000 ................
256dc: 00f20100 000000f0 1900fe00 0303fdfd ................
256ec: 03fd00fe 00f20000 00000000 00000000 ................
256fc: 00e70000 00000003 00000000 00000000 ................
2570c: 0f00f000 00f70000 e7ef0008 0008fbef ................
2571c: 0300ef00 00fc00fa 00000000 00000000 ................
2572c: 07000000 0000e108 00000000 00000000 ................
2573c: 000c0000 00000002 02020000 ff00fbfd ................
2574c: 0000fdff 000000fe 00fe00fb fa00fbfa ................
2575c: 00fbf8f8 00fb00fb fe000000 00030000 ................
2576c: 0100fd02 03000000 000000fe ff0303fe ................
2577c: fb000000 0000ff00 01000000 00fe0300 ................
2578c: 00fc00fd 0800fe00 00fd0000 00000000 ................
2579c: fefe01ff 00fd0000 000000fd 00000000 ................
257ac: ffff0000 00fdfd00 00000000 fe000001 ................
257bc: fdfdfd00 00000000 00000000 0000fe00 ................
257cc: fdfe0000 f800fc00 0005f8fe 0503fb00 ................
257dc: fffa0007 f4ff00fd f202fe03 01000003 ................
257ec: fef200f3 f300feea 00070500 00000003 ................
257fc: fb000100 00f800fd 00fd0000 00fd0000 ................
2580c: 00000000 ff00ffff 000000fd 00000000 ................
2581c: fe00fdfd 0000fefd 000000fd 00000000 ................
2582c: 00000000 fd00fefe fb00fe00 fd000003 ................
2583c: 00030301 00000000 0000fe00 02000000 ................
2584c: 00fd0000 00fdfefd 00000000 00020000 ................
2585c: 000000fe 00fcfd00 fe0800fb 0000f801 ................
2586c: f5f3f307 fe0003fb fb00fbef fb04fb00 ................
2587c: 00f900f0 02ff0100 000300fe f300f6f8 ................
2588c: f8fafbfa fbfff9fd 010002f9 0000fd00 ................
2589c: 03000200 00000000 00000000 fd000000 ................
258ac: ff00ff00 fafc00fd f800fffa 00000000 ................
258bc: 00fe0000 01000000 000000fe 00000003 ................
258cc: 00000000 00000c00 00000000 00000002 ................
258dc: 000000fd 00000000 00000000 000300fb ................
...
258f8: 000000fe 000000fb 00f8f300 f3fc0000 ................
25908: 03fd0000 0000f900 00000000 00000000 ................
25918: fb0000fc 00000000 00000000 00000000 ................
25928: 00fb0003 03000000 fbfb0200 fdfdfd00 ................
25938: 00000000 00f80000 fdfc00fd f8fafa00 ................
25948: 00fb00fe 000000f8 00001400 fd000001 ................
25958: f5000300 00000000 08fbe800 00f5fe08 ................
25968: f300fc03 ee03fdff 040003fd f8f7fcf7 ................
25978: f10000f5 00000f00 000000ff f9fdffff ................
25988: 00e8fff8 00000000 00000000 00000001 ................
...
259a4: ff00fd00 0000fcfd 00fd00fb 00000000 ................
...
259bc: 00ff0000 050000fb fa0003ff f9fffe03 ................
259cc: fdfd00fd fcfc00fe fffe0000 00fdfcfe ................
259dc: 0300fd00 00fa00fe 00fb0000 fcfc00fc ................
259ec: 00000003 00000000 0003fb00 fdfe00fc ................
259fc: fefefef8 fffdfeff 00000000 fefefd00 ................
25a0c: 00000000 fe00fe03 fe000000 fdfefefd ................
25a1c: 0a0200fe 00f900ff fd0005fe 0004fdf5 ................
25a2c: 03fcf400 fe0002fc fc00f8fe fc000001 ................
25a3c: 03000000 00fbfb03 fdfcfdfc 01fc00fd ................
25a4c: 0008fcfb 00000000 00000000 00000003 ................
...
25a70: 000000fc 00000000 00000000 00000000 ................
...
25a9c: 000000fe 00000000 00000000 00000000 ................
...
25ab8: fdfe0000 00000000 00000000 00000000 ................
25ac8: fd0000fc fdfd0000 00000000 000000fd ................
25ad8: 0000ff00 fe000000 00000000 00fb00fc ................
25ae8: 00f80000 0105fa02 0000f4fe f600fdfa ................
25af8: 0000f9fa f6f6fdf5 00f900f4 00fd1102 ................
25b08: fdfffdfa f7fbf9fc 00fdfaf6 0100fe00 ................
25b18: feee0000 f7fa0608 00f80100 05fdfef3 ................
25b28: 0001fde8 f3fdef00 0000edfd 010f00ee ................
25b38: 0000fe00 feff0000 ef00fef6 00000000 ................
25b48: 00fe00f8 00f4f9ff f8fcff00 00fe00fd ................
25b58: f4000000 fef8f8fd fcfdfafc f8fefb00 ................
25b68: fbfd00fc 0100fbfd 00f8fe00 00fb0005 ................
25b78: 03000000 0afb0200 fdfdfd00 00000000 ................
25b88: 00f80000 fdfc00fd f8fafa00 02fb00fe ................
25b98: 0000000a 00001400 fd000001 00000300 ................
25ba8: 00000000 00ff0000 00000000 0000fbfe ................
25bb8: ff000000 fd000000 fb0000fd fb0000fd ................
25bc8: 00ff0400 00000000 00000100 05040000 ................
25bd8: f800fe02 f80800fc 0afbfbf8 feea0305 ................
25be8: fd00fd05 00f7fd03 fefd03fd 0000fef8 ................
25bf8: f9000508 07fdf200 fd01f6fd 0afdf8f8 ................
25c08: 00fc0003 080200f9 faf6f7fa ed010008 ................
25c18: fefc03fe f7fa00fa 00fefcfc fdfbfa00 ................
25c28: fd060800 fcf200f2 fff1f700 f9f8fcf8 ................
25c38: fd000007 00fefb00 0400fbfd 000003f8 ................
25c48: fafd00f2 faf8fefc f800faf8 f8fbfafd ................
25c58: 010000fd f800fc0c fbfd00fd f6f9f9fa ................
25c68: 0005fbfd fdf300fc f7f80502 fd08f8fb ................
25c78: 05fbe801 00f7fcfa fdfdf5f8 f8fbfdfe ................
25c88: 080000ff 00effe07 f606faf1 f5f7fbef ................
25c98: 0005f8f3 fd000000 fd030000 05fb0205 ................
25ca8: fff80000 0100ff00 0000fe01 00000000 ................
25cb8: 000000fd 01080200 0000fd00 fefe0000 ................
25cc8: 000000fd 00000201 00020000 000a00fe ................
25cd8: fd010105 00000500 00000200 00000000 ................
25ce8: 00000000 07000800 00000000 00000000 ................
25cf8: 00000000 00f10000 080004fd 03190000 ................
25d08: 0303fbfb 00f301fe 00f10c00 00000000 ................
25d18: 00000000 0aef0000 00000024 00000000 ........$.......
25d28: 00000000 0000f100 00000000 00000000 ................
...
25d48: fb0000fc 000000fe 00000000 00000000 ................
...
25d60: 00f900fe 00000100 fefb2103 03f90708 .........!......
25d70: 03030000 000000fd 00000000 00000000 ................
25d80: 000007df 00000000 00000000 00000000 ................
25d90: f9000000 f9000000 00000000 0000fffa ................
25da0: fd00fa00 0000f400 00000000 00000000 ................
25db0: 0000ef00 00010000 00000000 0000fd00 ................
25dc0: 00fc00fb 000000f9 00fd03fc fafdf900 ................
25dd0: 00f90000 00f400fd eb0000fd f7fdf6fb ................
25de0: 00ef0000 0000fff9 00000000 fbfc0000 ................
25df0: 0000fcfe 00fa0000 05fd03fa fefafe00 ................
25e00: fd00fbfc f902feff 000000ff 00fcfee9 ................
25e10: f4fe00fa fe0000fe 000000fe fe000200 ................
25e20: 0004fefc 00000000 00000000 00000000 ................
...
25e4c: 00030000 00000000 fe00fa00 fb000000 ................
25e5c: 00000003 00fbfdf9 fd00f900 0000f400 ................
25e6c: 00e70000 00f3f7fb fe00ef00 000000fc ................
25e7c: 00000000 fffcfd00 000001fc 0800fd04 ................
25e8c: f8fdfd0d 06040d03 030b03f9 00070607 ................
...
25ea4: 0c100000 fe00fdfb 00140b14 00030000 ................
25eb4: 00000900 000000fc 00000000 00fe0000 ................
25ec4: 00000000 04000000 00000000 f6fefdea ................
25ed4: ef0000f3 00000000 00000000 00000000 ................
25ee4: 00000000 0000fc00 00000000 fe000000 ................
...
25efc: 00000004 fefdea00 0000f3f6 000000f6 ................
...
25f1c: 000000fe fd0003fa f8030502 03feff00 ................
25f2c: 00000200 00fa0000 00fbfefe 1000f6fe ................
25f3c: fefa00fd 00fcfe00 fdfbf9fd fc000000 ................
...
25f54: 0000fe00 00000000 00040000 ea000000 ................
25f64: f3f6fefd 00ef0000 00000000 00000d00 ................
...
25f7c: fdf800fc fdfe08fe 01fe01f6 0601f9fe ................
25f8c: 02010201 00fdf6fa f5f9fbf6 fbfc00f6 ................
25f9c: fefefdfd fe00fefd 040004ff 000800fe ................
...
25fb4: fe000000 0000fdfd 00ff00f9 000000fc ................
...
25fcc: 000000f1 00000000 00000000 fd00fdfd ................
25fdc: 00000000 fc0000fe fc0003fd f900fefb ................
25fec: fdfefafe 0000fc00 00000000 00000000 ................
25ffc: 0800ef00 00fb0000 fd000000 0000fd00 ................
2600c: fe0000ff 0000fa00 f8f8fd0b ff030302 ................
2601c: 020402f9 fe080208 f60000f9 f9f80000 ................
2602c: 00fb0000 fc00fcfd fe00fc00 f8fe0004 ................
2603c: 000009fd 00fb00fe 00fa0300 0002fd03 ................
2604c: fe00f800 03fd00ff 000000fe 00fafdf6 ................
2605c: f40000f8 00fd0900 000200fb f8fd00fd ................
2606c: 0003fd00 fe000000 fd030000 fd000001 ................
2607c: 00fd00fe 00000000 00000000 00000000 ................
2608c: 00000000 000600f0 0000fe00 00010000 ................
2609c: 0000fdfd 06000500 00000000 01f1f000 ................
260ac: f604080b 09000b02 00000500 00000000 ................
260bc: 00000000 00000e00 00000000 00000000 ................
...
000260d4 <kern_right_class_mapping>:
260d4: 02010000 05040300 08070602 0a090a09 ................
260e4: 0e0d0c0b 0c11100f 15141312 00000015 ................
260f4: 19181716 19191917 1a191917 19191919 ................
26104: 19171917 1d1c1b03 201f1e1d 00232221 ........... !"#.
26114: 26250024 00272727 29282627 2a2a2626 $.%&'''.'&()&&**
26124: 2a272a27 2e2d2c2b 302e2f2e 09230000 '*'*+,-../.0..#.
26134: 00000931 00000000 00000000 00000000 1...............
...
00026170 <kern_left_class_mapping>:
26170: 02010000 05040300 08070602 0a090a09 ................
26180: 0d000c0b 11100f0e 140c1312 00000014 ................
26190: 18171615 1b1a1619 1e1d1d1c 1d1d201f ............. ..
261a0: 23222116 251e2403 28272625 002b2a29 .!"#.$.%%&'()*+.
261b0: 2e2d002c 3231302f 34342d33 2d2d3035 ,.-./0123-4450--
261c0: 37362e2e 3a333938 3c3a3b3a 09000029 ..67893::;:<)...
261d0: 0000093d 00000000 00000000 00000000 =...............
...
0002620c <cmaps>:
2620c: 00000020 0001005f 00000000 00000000 ..._...........
2621c: 00000000 000000b0 0060f7f3 00026234 ..........`.4b..
2622c: 00000000 0002003b ....;...
00026234 <unicode_list_1>:
26234: 1f720000 ef58ef51 ef5cef5b ef61ef5d ..r.Q.X.[.\.].a.
26244: ef65ef63 ef6cef69 ef76ef71 ef78ef77 c.e.i.l.q.v.w.x.
26254: ef98ef8e ef9cef9b efa1ef9d efa3efa2 ................
26264: efb7efa4 efbeefb8 efc1efc0 efc7efc4 ................
26274: efc9efc8 efe3efcb f014efe5 f017f015 ................
26284: f03af037 f06cf043 f0abf074 f190f13b 7.:.C.l.t...;...
26294: f192f191 f194f193 f1e3f1d7 f254f23d ............=.T.
262a4: f712f4aa 0000f7f2 ........
000262ac <glyph_dsc>:
...
262b4: 04500000 00000000 04500000 00010c03 ..P.......P.....
262c4: 06400012 07010505 0b40001f 00000c0b ..@.......@.....
262d4: 09f00061 fe00100a 0d8000b1 00000c0d a...............
262e4: 0b0000ff ff000d0b 03600147 07010502 ........G.`.....
262f4: 0560014c fd010f04 0570016a fd000f04 L.`.....j.p.....
26304: 06600188 05000707 095001a1 02010808 ..`.......P.....
26314: 03a001c1 fe000503 062001c9 03000306 .......... .....
26324: 03a001d2 00000303 05a001d7 feff1008 ................
26334: 0ab00217 00000c0a 05f00253 00000c05 ........S.......
26344: 09300271 00000c09 092002a7 00000c09 q.0....... .....
26354: 0ab002dd 00000c0b 0930031f 00000c09 ..........0.....
26364: 09e00355 00000c0a 09900391 00000c09 U...............
26374: 0a5003c7 00000c0a 09e00403 00000c0a ..P.............
26384: 03a0043f 00000903 03a0044d fd000c03 ?.......M.......
26394: 0950045f 02010808 0950047f 03010608 _.P.......P.....
263a4: 09500497 02010808 093004b7 00000c09 ..P.......0.....
263b4: 109004ed fd000f10 0bb00565 00ff0c0d ........e.......
263c4: 0c2005b3 00010c0b 0b9005f5 00000c0b .. .............
263d4: 0d300637 00010c0c 0ac0067f 00010c09 7.0.............
263e4: 0a3006b5 00010c09 0c6006eb 00000c0c ..0.......`.....
263f4: 0d000733 00010c0b 04f00775 00010c03 3.......u.......
26404: 08300787 00ff0c08 0b8007b7 00010c0b ..0.............
26414: 098007f9 00010c09 0f40082f 00010c0d ......../.@.....
26424: 0d00087d 00010c0b 0d7008bf 00000c0d }.........p.....
26434: 0b90090d 00010c0a 0d700949 fd000f0e ........I.p.....
26444: 0ba009b2 00010c0a 09f009ee 00000c0a ................
26454: 09600a2a 00000c0a 0ca00a66 00010c0b *.`.....f.......
26464: 0b600aa8 00ff0c0d 12000af6 00000c12 ..`.............
26474: 0ac00b62 00000c0b 0a600ba4 00ff0c0c b.........`.....
26484: 0a800bec 00000c0b 05500c2e fd010f05 ..........P.....
26494: 05a00c54 feff1008 05500c94 fd000f04 T.........P.....
264a4: 09500cb2 02010708 08000cce fe000208 ..P.............
264b4: 09a00cd6 0a010205 09900cdb 00000909 ................
264c4: 0af00d04 00010c0a 09200d40 00000909 ........@. .....
264d4: 0af00d69 00000c0a 09d00da5 0000090a i...............
264e4: 05a00dd2 00000c07 0b100dfc fd000c0a ................
264f4: 0ae00e38 00010c09 04700e6e 00010c03 8.......n.p.....
26504: 04900e80 fdfe0f06 09e00ead 00010c09 ................
26514: 04700ee3 00010c02 10f00eef 0001090f ..p.............
26524: 0ae00f33 00010909 0a300f5c 0000090a 3.......\.0.....
26534: 0af00f89 fd010c0a 0af00fc5 fd000c0a ................
26544: 06901001 00010906 0800101c 00000908 ................
26554: 06a01040 00000b07 0ad01067 00010909 @.......g.......
26564: 08f01090 00ff090a 0e6010bd 0000090f ..........`.....
26574: 08d01101 00000909 08f0112a fdff0c0a ........*.......
26584: 08501166 00000908 05a0118a fd000f06 f.P.............
26594: 04d011b7 fd010f03 05a011ce fd000f05 ................
265a4: 095011f4 04000509 06b0120b 06000606 ..P.............
265b4: 0500121d 03010403 10001223 fe001110 ........#.......
265c4: 100012ab 00000c10 1000130b ff000e10 ................
265d4: 1000137b 00000c10 0b0013db 00000c0b {...............
265e4: 1000141d fe001010 1000149d fe001010 ................
265f4: 1200151d ff000e12 1000159b fe001010 ................
26604: 1200161b 00000c12 10001687 fe001010 ................
26614: 08001707 ff000e08 0c00173f ff000e0c ........?.......
26624: 12001793 fe001012 10001823 00000c10 ........#.......
26634: 0e001883 fe02100a 0e0018d3 fd00120e ................
26644: 0e001951 ff000f0e 0e0019ba ff000e0e Q...............
26654: 0e001a1c fe02100a 0e001a6c ffff0e10 ........l.......
26664: 0a001adc ff000e0a 0a001b22 ff000e0a ........".......
26674: 0e001b68 ff000e0e 0e001bca 0400040e h...............
26684: 12001be6 00000c12 14001c52 fe001014 ........R.......
26694: 12001cf2 feff1014 10001d92 fe001010 ................
266a4: 0e001e12 01000a0e 0e001e58 01000a0e ........X.......
266b4: 14001e9e ff000e14 10001f2a 00000c10 ........*.......
266c4: 10001f8a fe001010 1000200a feff1111 ......... ......
266d4: 0e00209b ff000e0f 0e002104 fe00100e . .......!......
266e4: 0e002174 ff000e0e 0a0021d6 feff100c t!.......!......
266f4: 0e002236 fe00100e 0e0022a6 fe00100e 6"......."......
26704: 12002316 00000c12 10002382 fdff1212 .#.......#......
26714: 0c002424 fe00100c 14002484 ff000f14 $$.......$......
26724: 1400251a 01000a14 1400257e 01000a14 .%......~%......
26734: 140025e2 01000a14 14002646 01000a14 .%......F&......
26744: 140026aa 01000a14 1400270e ff000e15 .&.......'......
26754: 0e0027a1 fe01100c 0e002801 fe00100e .'.......(......
26764: 10002871 fdff1111 14002902 00000c14 q(.......)......
26774: 0c00297a fe00100c 102029da 01000b11 z).......) .....
00026784 <gylph_bitmap>:
26784: aff00bbf 089ee00a c0078cd0 bf100000 ................
26794: 1ff5e01a e4f3513f f2403e0f 00100872 ....?Q...>@.r...
267a4: e003c005 007a0000 0900005c 01a00780 ......z.\.......
267b4: ffffffff 733e03fd 0030833c 00c500f2 ......>s<.0.....
267c4: 0e100f00 f0020030 9f00f200 ffffffff ....0...........
267d4: 36c33841 890030e3 00005c00 a007700a A8.6.0...\...p..
267e4: 79000000 00000000 00000079 20e9ff5c ...y....y...\..
267f4: 9ebcfc06 79b00e90 800f1000 0d000079 .......y....y...
26804: 000079f5 50fdef03 cf060000 000040fe .y.....P.....@..
26814: 00f15e79 f3057900 07790007 bce92ff1 y^...y....y../..
26824: ae03a0af 0000d7ff 00007900 00790000 .........y....y.
26834: 80de0300 00d00500 01500ce4 004c00e3 ..........P...L.
26844: 00a9005a c004a006 4c00004e 500d5a00 Z.......N..L.Z.P
26854: 1ce40000 0000a058 e173ce03 0000e93c ....X.....s.<...
26864: 400ed600 7c0000a8 d003c003 3c202e00 ...@...|...... <
26874: 0b003d00 09e20070 00d00680 00a0dd04 .=..p...........
26884: 00b1ef09 3ce40900 d90000a0 00007d00 .......<.....}..
26894: a01cc00c ae3f0000 010000c1 0000c0df ......?.........
268a4: 708feb03 00db0018 3ff0657f ea8f0040 ...p.....e.?@...
268b4: 0000f703 f90b70cf 40bfcf66 30eadf08 .....p..f..@...0
268c4: 000000a5 f5000000 72e4e4f5 f205da00 ...........r....
268d4: 700fc00b 205f403f 007f106f 205f106f ...p?@_ o...o._
268e4: 700f403f f205c00b 303fda00 f106b00c ?@.p......?0....
268f4: e900f601 ad00bc00 ad00ae00 e900bc00 ................
26904: f106f601 303fb00c 06004a00 2ba0a474 ......?0.J..t..+
26914: 7f00e5ff 6b7b20fb a004008d 00130000 ..... {k........
26924: 10050000 500f0000 500f0000 511f0100 .......P...P...Q
26934: ffffef10 744f34f3 500f0040 500f0000 .....4Ot@..P...P
26944: fd520900 0fc5a00b 10110100 04f3ff1f ..R.............
26954: 12034044 00901efc 00f10500 00b00a00 D@..............
26964: 00600f00 00105f00 0000ab00 0000f600 ..`.._..........
26974: 0000f105 0000b00a 0000600f 0000104f .........`..O...
26984: 000000ac 040000f6 0a0000f1 0e0000c0 ................
26994: 4f000060 00000010 00c5ef08 cfa8cf00 `..O............
269a4: 00f50770 c00df20a 1ff80100 dc000080 p...............
269b4: 0000603f 00603fbd 801fbd00 0ddc0000 ?`...?`.........
269c4: f80100c0 0a00f507 a8cf00f2 080070cf .............p..
269d4: ef00c5ef f37a36ff 05305f00 305f00f3 .....6z.._0..._0
269e4: 5f00f305 00f30530 f305305f 05305f00 ..._0..._0..._0.
269f4: fdbe04f3 98fd0770 002890cf 0000bf00 ....p.....(.....
26a04: 00f20700 00af0000 804f0000 c03f0000 ..........O...?.
26a14: c13e0000 c12e0000 d12e0000 f82e0000 ..>.............
26a24: ff467777 6ffaffff 02ffffff b09f7777 wwF....o....ww..
26a34: e10c0000 f3090000 f6050000 df000000 ................
26a44: 040010e9 0000fd59 00f40600 643f0000 ....Y.........?d
26a54: f3080040 fb8cc9bf d7ff7c00 01000000 @........|......
26a64: 000000eb 0010be00 506f0000 2f000000 ..........oP.../
26a74: 00000090 0000d00c 01f30800 f80300d5 ................
26a84: 00602f00 f72322ed ffff6f21 5581ffff ./`.."#.!o.....U
26a94: 52f95655 2f000000 00000060 0500f602 UV.R.../`.......
26aa4: 00ffffff 7077777f 0000e008 0000ad00 .....wwp........
26ab4: 10c20b00 ffdf0000 550430fb 0020ff68 .........0.Uh. .
26ac4: 00f80400 920f0000 f6050050 fd8ad98f ........P.......
26ad4: e9ef5b10 ce050010 9f0060fc 05708bc8 .[.......`....p.
26ae4: 000000f8 0000d00c 00801f00 682f0000 ............../h
26af4: 3f10faef d08f64ee 0600f12f 00c00ef4 ...?.d../.......
26b04: f109f602 01f30600 b09f86de d8ef1900 ................
26b14: ffff8f00 77f7e8ff 008ffc77 90554f00 .......ww....OU.
26b24: 00e00b00 00f80200 109f0000 b00f0000 ................
26b34: f4060000 dd000000 3f000000 0a000070 ...........?p...
26b44: 010000f1 000000f9 00d7ff5c af76fc06 ........\.....v.
26b54: 00d00ca0 c00df109 07f20700 c05e11f7 ..............^.
26b64: feffbf00 54f90910 802fd07e 4ff60400 .......T~./....O
26b74: f8000050 0500a01f 76fb09f6 6c00d0af P..........v...l
26b84: 0010d8ff 0080fd8e fc68f80c 00505f00 ..........h.._P.
26b94: 008f703f 7fc00e00 f01f0030 cf13d41f ?p......0.......
26ba4: ffef04f1 0200f0a9 00f00a31 a00e0000 ........1.......
26bb4: 9f000000 8da70930 df0700f7 1e0040eb ....0........@..
26bc4: 1003fc92 00000000 1efc1203 fc921e90 ................
26bd4: 00001003 01000000 a8d01fe9 00a0300e .............0..
26be4: 00420000 03f37d01 bf10e89f ee0000b5 ..B..}..........
26bf4: 17000081 0000b4df 00d2af04 ef820100 ................
26c04: 45f3ffff 00515555 01000000 ef101111 ...EUUQ.........
26c14: 34f3ffff 50404444 ef000000 06000092 ...4DD@P........
26c24: 0000b5cf 00e29f03 02f36c00 bf20e99e .........l.... .
26c34: 930000c6 04000000 0770fdbe a0bf77fc ..........p..w..
26c44: cf000027 09000000 010000f0 010000ea '...............
26c54: 000010dd 000010ce 0000603f 00003001 ........?`...0..
26c64: 00000100 00f50600 405f0000 17000000 .........._@....
26c74: 00b5fdce fb050000 c27d2353 406e0000 ........S#}...n@
26c84: 8e000000 01f40210 493ffaae 1e900ab0 ..........?I....
26c94: 40ef5be6 8f300fe3 40af0010 d9001f98 .[.@..0....@....
26ca4: 403f0000 e8003f6a 401f0000 d9001f5c ..?@j?.....@\...
26cb4: 403f0000 8f300f6a 40af0010 1e900a98 ..?@j.0....@....
26cc4: a6de5ad6 01f303f2 ee16faaf 406e0050 .Z..........P.n@
26cd4: 00000000 fb060000 00752353 17000000 ........S#u.....
26ce4: 00a3fdce 02000000 000000fd f49f0000 ................
26cf4: 00000000 00b09e0f f2060000 0000207f ............. ..
26d04: f801dc00 4f000000 00e00b60 00f00b00 .......O`.......
26d14: 0100604f ed1111fa ff8f0000 00f3ffff O`..............
26d24: 4444c40e f406a04f af000000 0000cd10 ..DDO...........
26d34: 5ff80200 40ebffff 5755f805 405f40df ..._...@..UW.@_@
26d44: 05fa0100 0f0000f4 11515fa0 ff05f43a ........._Q.:...
26d54: 00faffff 5944745f 00f405fa 5ff20800 ...._tDY......._
26d64: 5f000040 0000f445 855ff209 05fb6a55 @.._E....._.Uj..
26d74: d7ffffff 8d020000 0400b4fe f99db8ff ................
26d84: 0020fd02 20bf5008 0f000000 000000a0 .. ..P. ........
26d94: 0000f602 602f0000 00000000 000000fa ....../`........
26da4: 00f20b00 2f000000 850000d2 89fb5f00 ......./....._..
26db4: 290080df 5f40ebdf 30eaffff 77975f00 ...)..@_...0._.w
26dc4: 5f00f89e af000040 00405f60 5fe00d00 ..._@...`_@...._
26dd4: 06000040 00405ff4 5ff60300 03000040 @...._@...._@...
26de4: 00405ff6 5ff40600 0d000040 00405fe0 ._@...._@...._@.
26df4: 5f60af00 f89e7797 ffff5f00 5f0030ea ..`_.w..._...0._
26e04: 95ffffff 747777f9 0000405f 0000f405 .....wwt_@......
26e14: 11515f00 ffff0511 745fe0ff f4054444 ._Q......._tDD..
26e24: 5f000000 05000040 000000f4 7777975f ..._@......._.ww
26e34: ffffff65 ffff5ffd 77f995ff 405f7477 e...._.....wwt_@
26e44: f4050000 5f000000 05000040 102222f5 ......._@...."".
26e54: feffff5f 5555f805 00405f40 00f40500 _.....UU@_@.....
26e64: 405f0000 f4050000 00000000 b5fe8d01 .._@............
26e74: fb4f0000 02b0df89 060020fd 00f20b60 ..O...... ..`...
26e84: 0f000000 000000a0 00602f00 2f000000 ........./`..../
26e94: 09000060 00a00ff0 0bf00900 090000f2 `...............
26ea4: 20fd02f0 00f00a00 df89fb4f 8d0200c0 ... ....O.......
26eb4: 5f00c6fe 4f000040 0000f455 405ff504 ..._@..OU....._@
26ec4: 554f0000 040000f4 22525ff5 ff555f22 ..OU....._R""_U.
26ed4: f5ffffff 5555855f 00f4558f 5ff50400 ...._.UU.U....._
26ee4: 4f000040 0000f455 405ff504 554f0000 @..OU....._@..OU
26ef4: 040000f4 f4455ff5 5ff4455f 455ff445 ....._E._E._E._E
26f04: f4455ff4 00f4455f 00faffff 00fa7777 ._E._E......ww..
26f14: 00fa0000 00fa0000 00fa0000 00fa0000 ................
26f24: 00fa0000 00fa0000 07f90000 0df60320 ............ ...
26f34: 01f18ee9 5f30fbae eb020040 0100f405 ......0_@.......
26f44: 405f00ec 0510de01 20ce00f4 bf405f00 .._@....... ._@.
26f54: f4050030 0000909f 40efcf5f 91ff0500 0......._..@....
26f64: 5f0010ee 00fc03a0 0600f405 405f00f8 ..._.........._@
26f74: 05f50900 0c0000f4 00405ff2 00f40500 ........._@.....
26f84: 405f0000 f4050000 5f000000 05000040 .._@......._@...
26f94: 000000f4 0000405f 0000f405 00405f00 ...._@......._@.
26fa4: 00f40500 975f0000 ff257777 5ff5ffff ......_.ww%...._
26fb4: 00000040 00fc951e f9080000 0000f55f @..........._...
26fc4: fd95ff02 ae0000e0 705f5ff9 955f3f00 .........__p.?_.
26fd4: 0b108ff3 315ff9c0 0ff304e9 f207f395 ......_1........
26fe4: 5ff900db 20ef0d30 00f3950f f900905f ..._0.. ...._...
26ff4: 7100305f f3950f00 00000000 00505ff9 _0.q........._P.
27004: ff554f00 f5040020 0000fd5f f9fa554f .OU. ..._...OU..
27014: 5ff50400 4f00f54a f20df455 405ff504 ..._J..OU....._@
27024: 554fd02f 946f00f4 00405ff5 f455afaf /.OU..o.._@...U.
27034: f5df0000 0200405f 00f455ff 00f50600 ...._@...U......
27044: b5fe8d01 ff040000 00fa9eb8 0020fd02 .............. .
27054: bf00f908 0a000020 00a00ff2 723f0000 .... .........?r
27064: 000000f6 602ff900 0f000000 0000fa90 ....../`........
27074: 0bf70300 000000f2 d22f20af 908f0000 ......... /.....
27084: 89fb4f00 0000a0ef 50ebdf28 ffff5f00 .O......(..P._..
27094: 975f00d7 5fc0bf78 f6070040 0000405f .._.x.._@..._@..
270a4: 00405ffa 405ffa00 5ff80300 f16e2362 ._@..._@..._b#n.
270b4: fdffff5f 54855f30 405f0020 5f000000 _...0_.T ._@..._
270c4: 00000040 0000405f 8d010000 0000b5fe @..._@..........
270d4: 89fb4e00 0200a0ef 080020fd f20a00f9 .N....... ......
270e4: af000000 00a00f20 703f0000 0000602f .... .....?p/`..
270f4: 2f900f00 00000060 901f900f 2f000000 .../`........../
27104: 00f10b70 20af0000 0010fc03 0000f907 p...... ........
27114: df78fa6f 030000b0 00c5ffae 00000000 o.x.............
27124: b015d43e 02000000 0080ffbf 01000000 >...............
27134: ff5f0031 5f00d7ff c0bf7897 0700405f 1._...._.x.._@..
27144: 00405ff6 405ffa00 5ffa0000 f8030040 ._@..._@..._@...
27154: 6e23525f ffff5fe1 855f30fc 5f00f955 _R#n._...0_.U.._
27164: 407f0040 0c00405f 00405fe0 5c00f902 @..@_@..._@....\
27174: 0720d9ef 90af87fc 0100c00e 00800f10 .. .............
27184: f50d0000 03000000 0050eaef feae0500 ..........P.....
27194: 00000040 0000f14e 08f30500 f2080000 @...N...........
271a4: bf77fa2f ff9d02a0 ffff00c7 67f5ffff /.w............g
271b4: 7277fb78 00f70100 f7010000 01000000 x.wr............
271c4: 000000f7 0000f701 00f70100 f7010000 ................
271d4: 01000000 000000f7 0000f701 00f70100 ................
271e4: f7010000 306f0000 168f0000 080000f3 ......o0........
271f4: 00306ff1 f3168f00 f1080000 0000306f .o0.........o0..
27204: 00f3168f 6ff10800 8f000030 0000f405 .......o0.......
27214: 703ff009 00cd0000 5f0020de a8ff0480 ..?p..... ._....
27224: 0300d0bf 0081fdbe 0000e00c 6f306f00 .............o0o
27234: 0c000050 00fb00c0 00f60300 0000f209 P...............
27244: 2f0000ae 901f0080 00ce0000 0000f207 .../............
27254: db00f605 0e000000 00504fc0 3b8f0000 .........OP....;
27264: 000000e0 00f8fb02 0b000000 000010ff ................
27274: b04f0000 405f0000 00df0000 0ff50200 ..O..._@........
27284: ff020090 f0070040 0700e00b 0c0090fe ....@...........
27294: 00f306b0 00e0aa0c f801601f f3541f00 .........`....T.
272a4: 00106f00 107f00cd 00cc00f8 cb207f00 .o............ .
272b4: f701ad00 712f0000 265f00f6 0d0000f2 ....../q.._&....
272c4: 0f00f1c6 0000d07b 00c0fd08 0080df0b ....{...........
272d4: 70ff0300 30ff0600 ef000000 fe010020 ...p...0.... ...
272e4: 903f0000 00cd0000 7f00408f 10de0030 ..?......@..0...
272f4: 0300802f 00d00cfa f3fb0700 0c000000 /...............
27304: 000000f8 00c0ef01 7fbf0000 6f000070 ............p..o
27314: 0020af60 ed01b02f 00f10c00 f607f804 `. ./...........
27324: f3090000 0000e00c f703f207 901f0000 ................
27334: 0010af00 1f00109e 00f602a0 0bf30800 ................
27344: 000000d0 00404fec fb5f0000 00000000 .....O@..._.....
27354: 0000f20c f0090000 00000000 0000f009 ................
27364: f0090000 00000000 0000f009 ffffff3f ............?...
27374: 777701fd 0090bf77 c01e0000 0c000000 ..www...........
27384: 000000f2 0000f508 00f90400 ec010000 ................
27394: 00000000 000020cf 00508f00 904f0000 ..... ....P...O.
273a4: 1e000000 777777f8 ffffff05 ff5ff0ff .....www......_.
273b4: 5f50f705 00f30530 f305305f 05305f00 ..P_0..._0..._0.
273c4: 305f00f3 5f00f305 00f30530 f705305f .._0..._0..._0..
273d4: 00ff5f50 0000007e 0000401f 0000900c P_..~....@......
273e4: 0000e007 0000f402 0000c900 00007e00 .............~..
273f4: 00402f00 00900c00 00e00700 00f30200 ./@.............
27404: 00d90000 007e0000 302f0000 900d0000 ......~.../0....
27414: e0070000 ea35fabf ea00ea00 ea00ea00 ......5.........
27424: ea00ea00 ea00ea00 ea00ea00 ea35ea00 ..............5.
27434: 2f00fabf 9d000080 f30000e0 d00600d5 .../............
27444: 600c007b 103f201f 009a800b ffffe004 {..`. ?.........
27454: 1111ffff f6071111 01e70300 0080fd9e ................
27464: 90af87ce af000002 06000000 ffbe02f2 ................
27474: 42ec20ff 502ff227 ec207f00 02f27f42 . .B'./P.. .B...
27484: 206ffbbf 0000008f 00008f00 008f0000 ..o ............
27494: 8f000000 00b3fe2b ef78ec8f 00a08f30 ....+.....x.0...
274a4: 208fc01e 8ff10700 f3050000 0700208f ... ......... ..
274b4: 00a08ff1 ec8fd01e 8e30ef78 00b3fe2b ........x.0.+...
274c4: c4ef3a00 7cd84f00 00d00df4 00f61307 .:...O.|........
274d4: 304f0000 f6030000 0d000000 100600d0 ..O0............
274e4: f47cd74f c4ef3a00 00000000 0000f701 O.|..:..........
274f4: 00f70100 f7010000 a3ff3b00 87fd04f7 .........;......
27504: d00ef7ce 3ff70b00 f7030060 0100304f .......?`...O0..
27514: 00503ff7 c00ef703 04f70a00 f7be65fc .?P..........e..
27524: b2ff3b00 fe3b00f7 fc0400a2 0e20ee67 .;....;.....g. .
27534: a01e00c0 0700503f ffff4ff0 723ff1ff ....?P...O....?r
27544: 0e202222 000200c0 af87fd04 ef3a0050 "" .........P.:.
27554: 5d0000d6 b52f00fc 00f30470 a0ffff0c ...]../.p.......
27564: 0053f748 0500305f 5f0000f3 f3050030 H.S._0....._0...
27574: 305f0000 00f30500 00305f00 b2ff3b00 .._0....._0..;..
27584: 87fe04e9 d10ef9cf 3ff90a00 f9010060 ...........?`...
27594: 0000404f 00603ff9 d00ef901 04f90900 O@...?`.........
275a4: f8cf87fd b3ff3b00 000000f7 e909f405 .....;..........
275b4: 01b0af77 00d8ff7c 0000008f 0000f008 w...|...........
275c4: 00008f00 bff20800 fb8f10ea f808fd89 ................
275d4: 8ff40600 781f0010 f80000f0 0f00008f .......x........
275e4: 0000f088 00008ff8 00f0880f 1a9ef800 ................
275f4: f00800f2 8ff0088f 088ff008 f0088ff0 ................
27604: 00e20700 0000f309 f1070000 00f10700 ................
27614: 0700f107 f10700f1 00f10700 0700f107 ................
27624: f10700f1 18f00800 fc3ec06e 00008f20 ........n.>. ...
27634: 00f00800 008f0000 f0080000 8fd11d00 ................
27644: 08e21d00 00e21df0 00f32d8f 70fffe08 .........-.....p
27654: bfe28f00 01f20830 008f10ee f008fb03 ....0...........
27664: 8ff70700 8f8f8f8f 8f8f8f8f 8e8f8f8f ................
27674: 3b91fe3c ff08a2fe c6cf9f96 708fd08f <..;...........p
27684: 00c09f00 00f1585f 0100f605 00008ff7 ...._X..........
27694: 0f00404f 0400f088 f80000f4 4f00008f O@.............O
276a4: 880f0040 f40400f0 8ff80000 404f0000 @.............O@
276b4: 8e800f00 08a1fe3b d08fa6ff 6f00808f ....;..........o
276c4: 0100f148 00008ff7 00f0880f 008ff800 H...............
276d4: f0880f00 8ff80000 800f0000 c4ef3b00 .............;..
276e4: 87fd0400 d00e60cf 3ff10b00 f5030060 .....`.....?`...
276f4: 0100304f 00603ff7 d00ef503 04f10b00 O0...?`.........
27704: 60cf77fd c4ef3b00 fe3b8e00 fb8f00b3 .w.`.;....;.....
27714: 8f30df57 c00d0090 0700108f 00008ff1 W.0.............
27724: 208ff305 8ff10700 d01e00a0 ef78ec8f ... ..........x.
27734: fe2b8f30 008f00b3 8f000000 00000000 0.+.............
27744: 0000008f ff3b0000 fd04f7a2 0ef7de87 ......;.........
27754: f70b00d0 0300603f 00304ff7 603ff701 ....?`...O0...?`
27764: 0ef70300 f70b00d0 ce77fd04 ff3b00f7 ..........w...;.
27774: 0000f7a3 00f70100 f7010000 01000000 ................
27784: f02b8ef7 8f90ed8f 208f00a0 00008f00 ..+........ ....
27794: 8f00008f 008f0000 00008f00 91fdae02 ................
277a4: d069d71e 0000304f 0010b42f 60fdef06 ..i.O0../......`
277b4: f55b0100 f7000001 f36ba75f 40ecdf19 ..[....._.k....@
277c4: 0000f305 cf00305f 8f04faff f3053075 ...._0......u0..
277d4: 305f0000 00f30500 00305f00 0000f404 .._0....._0.....
277e4: 0080c61f ae10fc5d 5a2f0000 f50200e0 ....]...../Z....
277f4: 2f0000ae 0200e05a 0000aef5 00f0592f .../Z......./Y..
27804: 306ff504 ee51af00 02f5bf76 503ffbbe ..o0..Q.v.....?P
27814: 0000c00d 00f206cb f900f502 00e00900 ................
27824: 800f009e 6f602f00 c00c0010 050000cb ...../`o........
27834: 0000f4f6 00d0ef00 708f0000 0000bb00 ...........p....
27844: 4f00109f 0e00f116 c00900f6 fc05600f ...O.........`..
27854: 00f600b0 5fab00ac 05105f10 f7500ff1 ......._._....P.
27864: 0f00b00a c009f076 ac0000f5 8f4f00ba ....v.........O.
27874: ff040000 a0ef0040 e00e0000 00f40800 ....@...........
27884: 00704f00 308f209f cd00505f 0200902e .Op.. .0_P......
27894: 0000d0ff 0000f60a 00e1fd04 c00deb01 ................
278a4: 3f10be00 00406f80 c00d407f 06cb0000 ...?.o@..@......
278b4: f40200f3 0900ea00 108f00d0 1f00701f .............p..
278c4: 00107f70 00d9e00a f2f90300 cf000000 p...............
278d4: 000000b0 0000406f 0000ad00 00f5791c ....o@.......y..
278e4: 70ee1a00 ff4f0000 5515f9ff 0000f45b ...p..O....U[...
278f4: 0100804f 0b0000ec 8f0000e1 f7040040 O...........@...
27904: e51e0000 ff5f5355 2c00fcff 61af00f5 ....US_....,...a
27914: 0000cc00 db0000db 00db0000 1f00ea02 ................
27924: fa0500f4 00db0000 0000db00 cc0000db ................
27934: 61af0000 5ff52c00 155ff115 f1155ff1 ...a.,._.._.._..
27944: 5ff1155f 155ff115 f1155ff1 80be105f _.._.._.._.._...
27954: 0140af03 701f00f6 1f00f701 00f90070 ..@....p....p...
27964: fb00fb0a 01701f20 701f00f7 af03f601 .... .p....p....
27974: 0090be40 00000000 00e43d00 f5860cb5 @........=......
27984: 03f0201e 000290ef 02001000 400d90ce . .............@
27994: 0e003b89 0d0e003b ce028940 f8080090 .;..;...@.......
279a4: 00f7e7ef 00000000 00000000 00000000 ................
279b4: 00dc4900 16000000 00ffffbf ff8d0300 .I..............
279c4: 00ffffff ffffcf00 00ffffff ffffff00 ................
279d4: 00ffc7ff eaffff00 00ff0051 0083ff00 ........Q.......
279e4: 00ff0000 0000ff00 00ff0000 0000ff00 ................
279f4: 00ff0000 0000ff00 00ff0000 0000ff00 ................
27a04: 00ffff2b 0000ff00 2bffffdf 0000ffff +..........+....
27a14: dffdffdf 0000ffff dfb2ff2b 0000fdff ........+.......
27a24: 2b000000 0000b2ff d0000000 ffffff0f ...+............
27a34: ff0df0ff 8888c8ff f0ffff8c 0000800f ................
27a44: f00ff008 0000800f ff0ff008 000080ff ................
27a54: f0ffff08 ccccec0f f00ff0ce ccccec0f ................
27a64: ff0ff0ce 000080ff f0ffff08 0000800f ................
27a74: f00ff008 0000800f ff0ff008 8888c8ff ................
27a84: d0ffff8c ffffff0f df0df0ff ffff73ff .............s..
27a94: fffdffff ffffa5ff ffffffff ffffa5ff ................
27aa4: dfffffff ffff73ff 00fdffff 00000000 .....s..........
27ab4: df000000 ffff73ff fffdffff ffffa5ff .....s..........
27ac4: ffffffff ffffa5ff dfffffff ffff73ff .............s..
27ad4: 00fdffff 00000000 df000000 ffff73ff .............s..
27ae4: fffdffff ffffa5ff ffffffff ffffa5ff ................
27af4: dfffffff ffff73ff 00fdffff 00000000 .....s..........
27b04: 00b10a00 00000000 00fcbf00 00000000 ................
27b14: 00fbff0b 00000000 1bc0ffbf 0b0000a0 ................
27b24: cf00fcff bf0000fb bf00c0ff ff0bb0ff ................
27b34: 0c0000fc ffbffbff 000000c0 fbffffcf ................
27b44: 00000000 b0ffff0c 00000000 00fbbf00 ................
27b54: 00000000 00b00b00 03000000 03000000 ................
27b64: 0010fc08 fcfff81c f5ff1c10 ff2cfcff ..............,.
27b74: ffff05f5 0500f5ff 00f5ffff fdff1d00 ................
27b84: ff1c0010 1c10fcff fcfff9ff 05f5ff1c ................
27b94: f5dffcff d1ff0500 040000a4 000000a1 ................
27ba4: 0000e04f 10020000 1003f16f d05f0000 O.......o....._.
27bb4: d13ff16f f1ff0300 fd5ff16f 40ff0d00 o.?.....o._....@
27bc4: ff09f16f 00f74f70 cf00f16f 00f09fe0 o...pO..o.......
27bd4: 5f00f16f 00c0bff3 2f00f16f 00c0bff5 o.._....o../....
27be4: 1f00e04f 00e0aff6 4f000000 00f46ff4 O..........O.o..
27bf4: af000000 10fe0ff0 ff050000 d3ff06a0 ................
27c04: ff7f0000 ff9f0020 f4ffbeda ff060000 .... ...........
27c14: 30fdffff 17000000 0050cabd 00000000 ...0......P.....
27c24: 0000b88b 00000000 0000ffff 06300000 ..............0.
27c34: 0360ffff dffd0400 effdffff ffff0d40 ..`.........@...
27c44: ffffffff ffff4fd0 ffff9ff9 ffff08f4 .....O..........
27c54: ffff0220 f9ff0080 ff9f0000 f9ff0000 ...............
27c64: ff9f0000 ffff0800 ffff0220 ffff4f80 ........ ....O..
27c74: ffff9ff9 ffff0df4 ffffffff dffe04d0 ................
27c84: dffdffff 06300040 0360ffff 00000000 ....@.0...`.....
27c94: 0000ffff 00000000 0000b88b 00000000 ................
27ca4: 3f30dd03 000000f3 f5ff6f00 0000f44f ..0?.....o..O...
27cb4: 99ff0900 00f4bfff f6bf0100 f4ff6f22 ............"o..
27cc4: fe2d0000 ef53ff35 ff0400f4 f8ff8fc1 ..-.5.S.........
27cd4: 7f40fe2d ffff1afa f7afa1ff ffdf82cf -.@.............
27ce4: 28fdffff ff0e14fc ffffffff 0f0041e0 ...(.........A..
27cf4: ffffffff 0000f0ff 00f9ff0f 00f0ff8f ................
27d04: f8ff0f00 f0ff8f00 ff0f0000 ff8f00f8 ................
27d14: 0e0000f0 6f00f6ff 0000e0ff fddf0000 .......o........
27d24: 00000000 ffff0000 00000000 ffff0000 ................
27d34: 00000000 ffff0000 00000000 ffff0000 ................
27d44: 00000000 ffff0000 00000000 ffffff4f ............O...
27d54: 0000f4ff ffffff0b 0000b0ff ffffbf00 ................
27d64: 000000fb ffff0b00 000000b0 fbbf0000 ................
27d74: df000000 b11bfcff fffdffcf 2cc2ffff ...............,
27d84: ffffffff ffffffff ffffffff ffffffff ................
27d94: dfffe0f0 ffffffff 00fdffff ffffef04 ................
27da4: 0040feff ffff1e00 e1ffffff b0af0000 ..@.............
27db4: 0b000000 ff0500fa 00000010 1e50ff01 ..............P.
27dc4: 000000f6 e16f0000 0000b0af 0b000000 ......o.........
27dd4: fffffffa ff080080 ffffffff 1f00f1ff ................
27de4: ffffffff ffffffff ffffffff ffffffff ................
27df4: ffffffff ffffffff ffffffff ff8fffff ................
27e04: ffffffff 00f8ffff dabd0600 00ff0250 ............P...
27e14: ffffef05 00ff42fe 7ba7ff7f 05fff9ff .....B.....{....
27e24: 0000c1ff 0effff2c 020000fc 5fffdf22 ....,.......".._
27e34: 0f0000f2 8fffffff 0f0000b0 00ffffff ................
...
27e50: ff000000 00f0ffff fff80b00 00f0ffff ................
27e60: fff42f00 002022fd ffe0cf00 0000c2ff ./..." .........
27e70: ff40ff2c 6ab7ff9f ff00f7ff ffffdf24 ,.@....j....$...
27e80: ff0050fe dbac0520 00000060 00000000 .P.. ...`.......
27e90: 008d0000 00ff0800 dfff8f00 ffffffff ................
27ea0: ffffffff ffffffff ffffffff dfffffff ................
27eb0: 00ffffff 00ff8f00 00ff0800 008d0000 ................
...
27ecc: 0000008d 00ff0800 8f000000 cf0000ff ................
27edc: 01ffffff ffffff50 fff706ff 00ffffff ....P...........
27eec: ffffffbe ffae00ff 05ffffff ffffdff8 ................
27efc: 006002ff 00ff9f00 09000000 000000ff ..`.............
27f0c: 009e0000 00000000 00000000 00000000 ................
27f1c: 00100600 00000000 d21f0000 00000000 ................
27f2c: 0300008d 000010ee 0a00ff08 00b02fb1 ............./..
27f3c: 00ff8f00 f407fc05 ffffffdf 605f5002 .............P_`
27f4c: fffffff9 0df706ff ffffbdc0 ae00ffff ................
27f5c: ff9ff009 00ffffff 8ff009ae ffffffff ................
27f6c: c00df706 ffffdfad 5f5002ff 0000e960 ..........P_`...
27f7c: 0500ff8f 00f406fc 00ff0800 b02fb10a ............../.
27f8c: 8d000000 ee020000 00000010 1f000000 ................
27f9c: 000000d2 00000000 8f001006 ffffffff ................
27fac: fff8ffff fffffffc ffffffff ffff2f20 ............ /..
27fbc: fcffffff ffff0c00 ffffffee feff2f20 ............ /..
27fcc: ffffef22 e2fffffc ffff2e00 20fe4efe "............N.
27fdc: ffff0200 00c202e2 ffff0000 00000020 ............ ...
27fec: ffff0000 00000000 ffff0000 ffffffff ................
27ffc: 8fffffff ffffffff 00f8ffff 00000000 ................
2800c: 010030ff 0040ffcc 40ffff2d ffffef03 .0....@.-..@....
2801c: ffff3f40 ffff44ff ff9fffff ffffffff @?...D..........
2802c: ffffffff ffffffff ffffafff ff45ffff ..............E.
2803c: 40ffffff ffffff4f ffef0340 2e0040ff ...@O...@....@..
2804c: 0030ffff 0000cc01 00000000 00000000 ..0.............
2805c: 918f0000 00000000 70ffff00 00000000 ...........p....
2806c: 40fdffff ff000000 10faffff ffff0000 ...@............
2807c: 00f7ffff ffffff00 00d5ffff ffffffff ................
2808c: ffb2ffff ffffffff fffffdff ffffffff ................
2809c: fffffffd b2ffffff ffffffff ff00d5ff ................
280ac: f7ffffff ffff0000 0010faff fdffff00 ................
280bc: 00000040 0070ffff 8e000000 000000a1 @.....p.........
...
280dc: 00f8ff8f fff8ff8f ff00ffff ffffffff ................
280ec: ffff00ff ffffffff ffffff00 00ffffff ................
280fc: ffffffff ff00ffff ffffffff ffff00ff ................
2810c: ffffffff ffffff00 00ffffff ffffffff ................
2811c: ff00ffff ffffffff ffff00ff ffffffff ................
2812c: ffffff00 00ffffff 7fffffff 7f00f7ff ................
2813c: ff8ff7ff ffffffff fffffff8 ffffffff ................
2814c: ffffffff ffffffff ffffffff ffffffff ................
2815c: ffffffff ffffffff ffffffff ffffffff ................
2816c: ffffffff ffffffff ffffffff ffffffff ................
2817c: ffffffff ffffffff ffffffff ffffffff ................
2818c: ffffffff ffffffff ffffffff ffff8fff ................
2819c: f8ffffff 00000000 0010cc00 d2ffff03 ................
281ac: ffff0400 ff0430fe 04f4ffff ffffffff .....0..........
281bc: ffffff54 fffff9ff ffffffff ffffffff T...............
281cc: ffffffff fffffff9 ffff44ff ff04f3ff .........D......
281dc: 0430feff 00d2ffff 10ccff04 00ff0300 ..0.............
281ec: 00000000 2d000000 000000d2 ef010000 .......-........
281fc: 000010fe ff1d0000 0000d1ff ffcf0000 ................
2820c: 0000fcff ffff0b00 00b0ffff ffffaf00 ................
2821c: 00faffff ffffff09 90ffffff ffffff0f ................
2822c: f0ffffff ffffff08 80ffffff 00000000 ................
2823c: 00000000 ffffff0c c0ffffff ffffff0f ................
2824c: f0ffffff ffffff0f f0ffffff ffffff0c ................
2825c: c0ffffff 1a000000 01000040 0000f0df ........@.......
2826c: 00a0ff1d 00fadf01 a0ff1d00 fadf0100 ................
2827c: ff0c0000 0d0000a0 000080ff 00f8df01 ................
2828c: ff1d0000 01000080 0000f8df 80ff1d00 ................
2829c: df010000 000000f0 a104501b 0f000000 .........P......
282ac: 000010fd 00d1ff0a fdaf0000 0a000010 ................
282bc: 0000d1ff 10fdaf00 ff0a0000 080000c0 ................
282cc: 0000d0ff 0010fd8f 00d1ff08 10fd8f00 ................
282dc: d1ff0800 fd0f0000 05000010 000000b1 ................
282ec: ff040000 00000040 80ff0800 00000000 ....@...........
282fc: 0080ff08 08000000 000080ff ff080000 ................
2830c: 48000080 c8ff8c88 ffff8488 ffffffff ...H............
2831c: ffffffff ffffffff ff8c8848 008488c8 ........H.......
2832c: 80ff0800 00000000 0080ff08 08000000 ................
2833c: 000080ff ff080000 00000080 40ff0400 ...............@
2834c: 44140000 44444444 ffffef41 feffffff ...DDDDDA.......
2835c: ffffffff 7bffffff bbbbbbbb 0000b7bb .......{........
2836c: daffad05 00000050 88fcdf04 0040fdcf ....P.........@.
2837c: 40fe7f00 f7ef0400 f4ff0700 4f809e00 ...@...........O
2838c: ff4f70ff f8af00c0 dff4ff0c ff9a80ff .pO.............
2839c: fdff08fe ef80ffdf ff08feff c0ff4ffd .............O..
283ac: 0cf8ff8f ff07f4ff 80ee08f4 0070ff4f ............O.p.
283bc: 0040fe7f 00f8ef04 fcdf0400 40fdcf88 ..@............@
283cc: 05000000 50daffad 208c0000 00000000 .......P... ....
283dc: 00000000 0000e4df 00000000 ff1b0000 ................
283ec: fddf4980 000000a5 ffff7f00 d4ff8cd8 .I..............
283fc: 04000000 0000f8ef 0070ff4e ff1c0000 ........N.p.....
2840c: ff04e869 e30400f7 fffe9f00 40ffcf80 i..............@
2841c: 0570ff0d 8fe0ffff ff0dd0ff ff2d00f7 ..p...........-.
2842c: d0ff8fe0 00fcff04 cff8af00 7f0030ff .............0..
2843c: 060040ff 00f7ffff f4ff0800 ff3e0000 .@............>.
2844c: 000000a0 82c8ff4d 00f7bf01 5a000000 ....M..........Z
2845c: 0810fcdf 0000a0ff 00000000 fd4e0000 ..............N.
...
28474: 0000c802 d22d0000 00000000 00000000 ......-.........
28484: 0000fbbf 00000000 ffff0500 00000050 ............P...
28494: 0d000000 00d0ffff 00000000 ffff7f00 ................
284a4: 000000f7 ff010000 10ff8dd8 00000000 ................
284b4: 0aa0ff0a 0000a0ff ff3f0000 f3ff0bb0 ..........?.....
284c4: 00000000 0cc0ffcf 0000fcff ffff0500 ................
284d4: ffff0dd0 0e000050 9ff9ffff 00e0ffff ....P...........
284e4: ffff8f00 ffff2ee2 ff0200f8 0990ffff ................
284f4: 10ffffff ffffff0a ffff3ee3 ff0fa0ff .........>......
28504: ffffffff f0ffffff ffffff08 ffffffff ................
28514: 000080ff 00000000 00000000 00000000 ................
28524: 000000d8 00000000 ffff80ff ff070070 ............p...
28534: fffff8ff ff6f00f6 8e78fdff e8ff15ff ......o...x.....
28544: 0200e2ff 20fe4fe5 000020fe 00f3ff13 .....O. . ......
28554: 00000052 0031ff3f 02000052 205ef4ef R...?.1.R.....^
28564: 8e7820fe e8ff51ff ffffe2ff ff6f00f6 . x..Q........o.
28574: fffffdff ff070070 0000f8ff 00000000 ....p...........
28584: 000080ff 00000000 000000d8 00000000 ................
...
2859c: 01000000 000010dd ff1d0000 000000d1 ................
285ac: fdffdf01 1d000010 d1ff99ff f9df0100 ................
285bc: 10fd9f00 0090ff1d bfd1ff09 000000f9 ................
285cc: 905ffb9f 09000000 000000f5 00000000 .._.............
285dc: 00000000 5f000000 00000090 f9bff509 ......._........
285ec: 9f000000 90ff1dfb d1ff0900 00f9df01 ................
285fc: 0010fd9f ff99ff1d 010000d1 10fdffdf ................
2860c: 1d000000 0000d1ff dd010000 00000010 ................
...
2862c: 00d11d00 00000000 df010000 ffef10fd ................
2863c: 00d0ffff d1ffff1d ffffffaf cfcf00f0 ................
2864c: 0000fcfc 00f00f00 b6f11f6b 0f000000 ........k.......
2865c: 0f0000f0 000000f0 00f00f00 00f00f00 ................
2866c: 0f000000 0f0000f0 000000f0 b6f11f6b ............k...
2867c: 00f00f00 cfcf0000 0f00fcfc faffffff ................
2868c: d1ffff1d ffff0d00 df01feff 000010fd ................
2869c: 00000000 00d11d00 00000000 00000000 ................
286ac: ff8f0000 0000e2ff ffff0000 0020feff .............. .
286bc: ffff0000 ffffffff fffff8ff ffffffff ................
286cc: ffffffff ffffffff ffffffff ffffffff ................
286dc: ffffffff ffffffff ffffffff ffffffff ................
286ec: ffffffff ffffffff ffffffff ffffffff ................
286fc: ffffffff ffffffff ff8fffff ffffffff ................
2870c: 0000f8ff 00b00b00 00000000 00fbbf00 ................
2871c: 00000000 b0ffff0b 00000000 fbffffbf ................
2872c: 0b000000 ffffffff 4f0000b0 ffffffff ...........O....
2873c: 000000f4 00ffff00 00000000 00ffff00 ................
2874c: 00000000 00ffff00 00000000 00ffff00 ................
2875c: 00000000 00ffff00 ffdf0000 0ffddff0 ................
2876c: fffffdff 9f0000f9 ffffffff ffffffff ................
2877c: ffffffff f0ffffff ffdfffe0 ffffffff ................
2878c: 0000fdff 00000000 00000000 00000000 ................
2879c: 0062ea0a 00000000 f0ffff02 00000000 ..b.............
287ac: ffff9f00 00000000 ffff0f00 000000d0 ................
287bc: ffff0200 000000fb ef030000 000070ff .............p..
287cc: 04000000 0000f2ff 00000000 0000fbbf ................
287dc: 00000000 0030ff6f 00000200 0090ff4f ....o.0.....O...
287ec: 00f38f02 00d0ff6f e4ffff0a 00d1ffbf ....o...........
287fc: ffffef00 00d1ffff ffff0a00 0090ffff ................
2880c: ff6f0000 0030fbff ff020000 000072db ..o...0......r..
2881c: 08000000 000080ee ff086106 2d0080ff .........a.....-
2882c: 33efd0ff ff2e00fe 3ff30ef3 f3ff2ee0 ...3.......?....
2883c: ffff8f00 00f3ff6e ffff8e00 0000f3ff ....n...........
2884c: ffef0200 000000f3 ffff2e00 08000030 ............0...
2885c: ffffffef ff080030 ffeff6ff 33ef0030 ....0.......0..3
2886c: ffef02fe 3ff30e30 ffef02e0 f8ff8f30 ....0..?....0...
2887c: fddf0200 00e88e00 10660000 ffdf0000 ..........f.....
2888c: 00200dff ffffff00 0000e20f 0fffffff .. .............
2889c: fff0dffd 0020ffff fffff0ff ffffffff ...... .........
288ac: fffffff0 f0ffffff ffffffff fff0ffff ................
288bc: ffffffff fffff0ff ffffffff fffffff0 ................
288cc: f0ffffff ffffffff fff0ffff ffffffff ................
288dc: ffdff0ff fffdffff 000000f9 ffff0000 ................
288ec: 00ffffff ffffdf00 0000fdff ffffff8f ................
288fc: ff00c2ff ffffffff 00ff20fe ff010000 ......... ......
2890c: 0000ffe2 fcff0000 000000ff ffffff00 ................
2891c: 00000000 ffffffff ffffffff ffffffff ................
2892c: ffffffff 11fbffff ffffffbf 1f00f1ff ................
2893c: ffffffff ff1f00f1 fbffffff ffffbf11 ................
2894c: ffffffff 8fffffff ffffffff df00f8ff ................
2895c: 0000fdff fcffff01 ff030000 0000f7ff ................
2896c: f2ffff06 ff080000 0000d0ff ffffff0a ................
2897c: ff0cd0ff a0ffffff ffffff0e ff0d20ff ............. ..
2898c: 00f8ffff ff0a0000 000000e0 0050ff0e ..............P.
2899c: fc2f0000 00000000 0000f35f a09f0000 ../....._.......
289ac: 00000000 000010df 00d70000 04000000 ................
289bc: 000040ee 99ffdf00 0000fdff ff99ffff .@..............
289cc: ff0000ff ffffffff ffff0000 00000090 ................
289dc: 0dffff00 200dffff ff0fffff ffe20fff ....... ........
289ec: ffff0fff fffffd0f 20ffff0f 0fffff00 ........... ....
289fc: ffffffff ff0fffff ffffffff ffff0fff ................
28a0c: ffdfffff ffffff0f 0f0000ff ffffffff ................
28a1c: ff0f0000 00ffffff ffff0d00 0000fdff ................
28a2c: 0000cc00 02000000 000030ff ffbf0100 .........0......
28a3c: 000020fc ffffff1e 9f0000e1 f8ffffff . ..............
28a4c: ffef0000 00fdffff ffffff00 0100ffff ................
28a5c: ffffffff ff0300ff ffffffff ffff0830 ............0...
28a6c: 80ffffff ffffff1e cfe1ffff ffffffff ................
28a7c: ffcffcff ffffffff 000000fc 00000000 ................
28a8c: ff0e0000 000000e0 40ee0400 ff8f0000 ...........@....
28a9c: ffffffff fff8ffff ffffffff ffffffff ................
28aac: 0ff000ff 000ff000 f000ffff 0ff0000f ................
28abc: ffffff00 ffffffff ffffffff 888008f8 ................
28acc: ff8f8008 8008f8ff 8f800888 ffffffff ................
28adc: ffffffff 00ffffff 000000f0 ffff000f ................
28aec: 0000f000 ff000f00 ffffffff ffffffff ................
28afc: ffff8fff ffffffff 0000f8ff 00000000 ................
...
28b14: 70af0300 00000000 ffcf0400 000000f0 ...p............
28b24: ffdf0600 0000a0ff ffef1700 0030ffff ..............0.
28b34: ffff1800 00fcffff ffff2a00 f4ffffff .........*......
28b44: ffff0800 ffffffff ff0f00d0 ffffffff ................
28b54: 080060ff ffffffff 0000feff 00000000 .`..............
28b64: 00f7ffff 00000000 f1ffff00 00000000 ................
28b74: ffff0000 00000080 ff000000 000010ff ................
28b84: 00000000 0000faff 00000000 00f2ff00 ................
28b94: 00000000 808f0000 00000000 00000000 ................
28ba4: 00000000 f0ffffdf ffff00d2 20fef0ff ...............
28bb4: f0ffffff ffffe2ff fdfff0ff f2ffffff ................
28bc4: ffff0000 ffffffff ffffffff ffffffff ................
28bd4: ffffffff ffffffff ffffffff ffffffff ................
28be4: ffffffff ffffffff ffffffff ffffffff ................
28bf4: ffffffff ffffffff ffffffff ffdfffff ................
28c04: fdffffff 00000000 00000000 00000000 ................
28c14: feef9c04 000040c9 ffef0700 feffffff .....@..........
28c24: df040070 8aa8fcff 40fdffcf 00d5ff6f p..........@o...
28c34: 5d000000 f6cff6ff 00000000 fc6f0000 ...]..........o.
28c44: 5a00301a 00a5fddf 0000a103 ffffff4d .0.Z........M...
28c54: 0000d4ff feff0500 ffef8aa8 01000050 ............P...
28c64: 000070df 0010fd07 00120000 21000000 .p.............!
28c74: 00000000 e44e0000 00000000 00000000 ......N.........
28c84: 0000feef 00000000 feef0000 00000000 ................
28c94: 00000000 0000e44e ff8f0000 ffffffff ....N...........
28ca4: 80ffffff ffffffff ffffffff 00fff0ff ................
28cb4: 00000000 fd0f0000 ffff0fff ffffffff ................
28cc4: 0fffff0f ffffffff ff00ffff ffff0fff ................
28cd4: ffffffff 0fffff00 ffffffff ff0fffff ................
28ce4: 000000ff 00000000 fffffd0f ffffffff ................
28cf4: f0ffffff ffffff8f ffffffff ff8f80ff ................
28d04: ffffffff 80ffffff ffffffff ffffffff ................
28d14: 00fff0ff 00000000 fd0f0000 ffff0fff ................
28d24: 00f0ffff 0fffff0f ffffffff ff0000f0 ................
28d34: ffff0fff 00f0ffff 0fffff00 ffffffff ................
28d44: ff0f00f0 000000ff 00000000 fffffd0f ................
28d54: ffffffff f0ffffff ffffff8f ffffffff ................
28d64: ff8f80ff ffffffff 80ffffff ffffffff ................
28d74: ffffffff 00fff0ff 00000000 fd0f0000 ................
28d84: ffff0fff 000000ff 0fffff0f 00ffffff ................
28d94: ff000000 ffff0fff 000000ff 0fffff00 ................
28da4: 00ffffff ff0f0000 000000ff 00000000 ................
28db4: fffffd0f ffffffff f0ffffff ffffff8f ................
28dc4: ffffffff ff8f80ff ffffffff 80ffffff ................
28dd4: ffffffff ffffffff 00fff0ff 00000000 ................
28de4: fd0f0000 f0ff0fff 00000000 0fffff0f ................
28df4: 0000f0ff ff000000 f0ff0fff 00000000 ................
28e04: 0fffff00 0000f0ff ff0f0000 000000ff ................
28e14: 00000000 fffffd0f ffffffff f0ffffff ................
28e24: ffffff8f ffffffff ff8f80ff ffffffff ................
28e34: 80ffffff ffffffff ffffffff 00fff0ff ................
28e44: 00000000 fd0f0000 000000ff 00000000 ................
28e54: 00ffff0f 00000000 ff000000 000000ff ................
28e64: 00000000 00ffff00 00000000 ff0f0000 ................
28e74: 000000ff 00000000 fffffd0f ffffffff ................
28e84: f0ffffff ffffff8f ffffffff 000080ff ................
28e94: 01000000 00000000 00000000 10fd0700 ................
28ea4: 00000000 cf010000 0000f5ff 00000000 ................
28eb4: fe29b900 00000010 3f000000 00000210 ..)........?....
28ec4: df030000 00900a80 70030000 77ffdf00 ...........p...w
28ed4: 555555f7 0fd38f55 dfccfdff cdccccdc .UUUU...........
28ee4: fe8fb0ff 00aa0010 404d0000 00104600 ..........M@.F..
28ef4: 3302f201 00000010 09000000 00f9cfb1 ...3............
28f04: 00000000 ff0a0000 000090ff 00000000 ................
28f14: f9bf0000 00000000 00000000 00002201 ............."..
28f24: df180000 020092fd ffeffbef faff0d30 ............0...
28f34: 4fe0ff2e ff03faff fafa9ff5 cffa4f35 ...O........5O..
28f44: 0b3d8ac0 03fbeffd fffe8f12 ff06b0ff ..=.............
28f54: d1ffffff efffff08 9f1011fd 59d1dfff ...............Y
28f64: affd0b3b 1d38fad7 faff5ffb 0df7df01 ;.....8.._......
28f74: ff1dfaff fcef03f1 0050ffdf a3fedf18 ..........P.....
28f84: 7f000000 0000f7ff ffffffef effeffff ................
28f94: ffffffff 0000feff 00000000 ffff0f00 ................
28fa4: f0ffffff ffffff0f 0ff0ffff f9999ff9 ................
28fb4: f80ff09f 8ff8888f 8ff80ff0 f08ff888 ................
28fc4: 888ff80f 0ff08ff8 f8888ff8 f80ff08f ................
28fd4: 8ff8888f 8ff80ff0 f08ff888 999ff90f ................
28fe4: 0ff09ff9 ffffffff ff08f0ff ffffffff ................
28ff4: 00000080 7f000000 000000a0 8f000000 ................
29004: 0000b0ff 0d000000 00a0ffff 8a000000 ................
29014: 00ffff1d 8f000000 70ff1dfa 8f000000 ...........p....
29024: 801dfaff 8f000000 00faffff 8f000000 ................
29034: 80ffffff 8f000000 80ffffff 8f000000 ................
29044: 80ffffff 8f000000 80ffffff 6f000000 ...............o
29054: 80ffffff 0b000000 80ffffff 00000000 ................
29064: 80ffffdf 00000000 80ffff0e 00000000 ................
29074: 60dbde00 00000000 00000000 00000000 ...`............
29084: 00000000 ffffff1b e4ffffff ffdf0100 ................
29094: ffffffff 1d00feff effaffff ffffaffe ................
290a4: ffffdf01 0ae22ea0 ff1dffff 02e2ffff ................
290b4: ffff2e20 ffffffcf ef0220fe ffcfffff ........ ......
290c4: 20feffff ffffef02 ffffff1d 2e2002e2 ... .......... .
290d4: df01ffff 2ea0ffff ffff0ae2 ffff1d00 ................
290e4: affeeffa 0100ffff ffffffdf feffffff ................
290f4: ff1b0000 ffffffff 0800e4ff e4ffffff ................
29104: ffff8f00 f808feff ff400b0f 0b0ff88f ..........@.....
29114: f8ffff40 ff400b0f ffffffff ffffffff @.....@.........
29124: ffffffff ffffffff ffffffff ffffffff ................
29134: ffffffff ffffffff ffffffff ffffffff ................
29144: ffffffff ffffffff ffffffff ffefffff ................
29154: feffffff ffffff4e 0000e4ff 00000000 ....N...........
29164: 00000100 00000000 00e00300 00001000 ................
29174: 10ef0200 0000bf00 f17f0000 00f1cf00 ................
29184: ff070000 77ffcf11 bf777777 ffffcff1 .......wwww.....
29194: ffffffff ffff17ff ffffffff ff07e0ff ................
291a4: 000000f1 06000000 000010ff 00000000 ................
291b4: 0000a005 00000000 ........
000291bc <__func__.9667>:
291bc: 645f766c 5f707369 5f767264 69676572 lv_disp_drv_regi
291cc: 72657473 00000000 742f2e2e 64726968 ster....../third
291dc: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l
291ec: 61685f76 766c2f6c 6c61685f 7369645f v_hal/lv_hal_dis
291fc: 00632e70 p.c.
00029200 <lv_anim_path_def>:
29200: 00011081 00000000 ........
00029208 <__func__.9543>:
29208: 615f766c 5f6d696e 72617473 00000074 lv_anim_start...
29218: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv
29228: 732f6c67 6c2f6372 696d5f76 6c2f6373 gl/src/lv_misc/l
29238: 6e615f76 632e6d69 00000000 v_anim.c....
00029244 <__func__.9631>:
29244: 665f766c 72645f73 65725f76 74736967 lv_fs_drv_regist
29254: 00007265 er..
00029258 <__func__.9538>:
29258: 665f766c 706f5f73 00006e65 lv_fs_open..
00029264 <__func__.9602>:
29264: 665f766c 69645f73 706f5f72 00006e65 lv_fs_dir_open..
29274: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv
29284: 732f6c67 6c2f6372 696d5f76 6c2f6373 gl/src/lv_misc/l
29294: 73665f76 0000632e v_fs.c..
0002929c <sin0_90_table>:
2929c: 023c0000 06b30478 0b2808ee 0f990d61 ..<.x.....(.a...
292ac: 140611d0 186c163a 1ccb1a9d 21211ef7 ....:.l.......!!
292bc: 256c2348 29ac278e 2ddf2bc7 32032ff3 H#l%.'.).+.-./.2
292cc: 36183410 3a1c381c 3e0e3c17 41ec3fff .4.6.8.:.<.>.?.A
292dc: 45b643d4 496a4793 4d084b3c 508d4ecd .C.E.GjI<K.M.N.P
292ec: 53f95246 574b55a5 5a8258ea 5d9c5c13 FR.S.UKW.X.Z.\.]
292fc: 609a5f1f 6379620d 663964dd 68d9678d ._.`.byc.d9f.g.h
2930c: 6b596a1d 6db76c8c 6ff36ed9 720c7104 .jYk.l.m.n.o.q.r
2931c: 7401730b 75d274ee 777f76ad 79067847 .s.t.t.u.v.wGx.y
2932c: 7a6779bb 7ba27b0a 7cb77c32 7da57d33 .ygz.{.{2|.|3}.}
2933c: 7e6c7e0d 7f0b7ec0 7f827f4b 7fd27faf .~l~.~..K.......
2934c: 7ffa7feb 00007fff ........
00029354 <__func__.7222>:
29354: 6d5f766c 615f6d65 636f6c6c 00000000 lv_mem_alloc....
00029364 <__func__.7297>:
29364: 5f766c5f 5f6d656d 5f667562 656c6572 _lv_mem_buf_rele
29374: 00657361 ase.
00029378 <__func__.7240>:
29378: 6d5f766c 725f6d65 6c6c6165 0000636f lv_mem_realloc..
00029388 <__func__.7283>:
29388: 5f766c5f 5f6d656d 5f667562 00746567 _lv_mem_buf_get.
29398: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv
293a8: 732f6c67 6c2f6372 696d5f76 6c2f6373 gl/src/lv_misc/l
293b8: 656d5f76 00632e6d 6c756f43 74276e64 v_mem.c.Couldn't
293c8: 6c6c6120 7461636f 656d2065 79726f6d allocate memory
293d8: 00000000 6d5f766c 625f6d65 725f6675 ....lv_mem_buf_r
293e8: 61656c65 203a6573 73692070 746f6e20 elease: p is not
293f8: 6b206120 6e776f6e 66756220 00726566 a known buffer.
29408: 6d5f766c 625f6d65 675f6675 203a7465 lv_mem_buf_get:
29418: 2074754f 6d20666f 726f6d65 63202c79 Out of memory, c
29428: 74276e61 6c6c6120 7461636f 20612065 an't allocate a
29438: 2077656e 66756220 20726566 636e6928 new buffer (inc
29448: 73616572 6f792065 4c207275 454d5f56 rease your LV_ME
29458: 49535f4d 682f455a 20706165 657a6973 M_SIZE/heap size
29468: 00000029 6d5f766c 625f6d65 675f6675 )...lv_mem_buf_g
29478: 203a7465 66206f6e 20656572 66667562 et: no free buff
29488: 202e7265 72636e49 65736165 5f564c20 er. Increase LV_
29498: 57415244 4655425f 58414d5f 4d554e5f DRAW_BUF_MAX_NUM
294a8: 0000002e ....
000294ac <__func__.9561>:
294ac: 745f766c 5f6b7361 61657263 625f6574 lv_task_create_b
294bc: 63697361 00000000 asic....
000294c4 <__func__.9574>:
294c4: 745f766c 5f6b7361 61657263 00006574 lv_task_create..
294d4: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv
294e4: 732f6c67 6c2f6372 696d5f76 6c2f6373 gl/src/lv_misc/l
294f4: 61745f76 632e6b73 00000000 v_task.c....
00029500 <__func__.6088>:
29500: 5f766c5f 5f747874 5f746567 657a6973 _lv_txt_get_size
29510: 00000000 3b2e2c20 005f2d3a 742f2e2e .... ,.;:-_.../t
29520: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s
29530: 6c2f6372 696d5f76 6c2f6373 78745f76 rc/lv_misc/lv_tx
29540: 00632e74 745f766c 675f7478 735f7465 t.c.lv_txt_get_s
29550: 3a657a69 746e6920 72656765 65766f20 ize: integer ove
29560: 6f6c6672 68772077 20656c69 636c6163 rflow while calc
29570: 74616c75 20676e69 74786574 69656820 ulating text hei
29580: 00746867 0000ffff 00008410 008c80ef ght.............
00029590 <__func__.9965>:
29590: 695f766c 645f676d 67697365 0000006e lv_img_design...
000295a0 <__func__.9838>:
295a0: 695f766c 735f676d 615f7465 5f6f7475 lv_img_set_auto_
295b0: 657a6973 00000000 size....
000295b8 <__func__.9845>:
295b8: 695f766c 735f676d 6f5f7465 65736666 lv_img_set_offse
295c8: 00785f74 t_x.
000295cc <__func__.9852>:
295cc: 695f766c 735f676d 6f5f7465 65736666 lv_img_set_offse
295dc: 00795f74 t_y.
000295e0 <__func__.9888>:
295e0: 695f766c 675f676d 735f7465 00006372 lv_img_get_src..
000295f0 <__func__.9894>:
295f0: 695f766c 675f676d 665f7465 5f656c69 lv_img_get_file_
29600: 656d616e 00000000 name....
00029608 <__func__.9900>:
29608: 695f766c 675f676d 615f7465 5f6f7475 lv_img_get_auto_
29618: 657a6973 00000000 size....
00029620 <__func__.9817>:
29620: 695f766c 735f676d 735f7465 00006372 lv_img_set_src..
00029630 <__func__.9808>:
29630: 695f766c 635f676d 74616572 00000065 lv_img_create...
00029640 <__func__.9906>:
29640: 695f766c 675f676d 6f5f7465 65736666 lv_img_get_offse
29650: 00785f74 t_x.
00029654 <__func__.9912>:
29654: 695f766c 675f676d 6f5f7465 65736666 lv_img_get_offse
29664: 00795f74 t_y.
00029668 <__func__.9919>:
29668: 695f766c 675f676d 705f7465 746f7669 lv_img_get_pivot
29678: 00000000 ....
0002967c <__func__.9925>:
2967c: 695f766c 675f676d 615f7465 656c676e lv_img_get_angle
2968c: 00000000 ....
00029690 <__func__.9931>:
29690: 695f766c 675f676d 7a5f7465 006d6f6f lv_img_get_zoom.
000296a0 <__func__.9937>:
296a0: 695f766c 675f676d 615f7465 6169746e lv_img_get_antia
296b0: 7361696c 00000000 742f2e2e 64726968 lias....../third
296c0: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l
296d0: 69775f76 74656764 766c2f73 676d695f v_widgets/lv_img
296e0: 0000632e 695f766c 735f676d 735f7465 .c..lv_img_set_s
296f0: 203a6372 6e6b6e75 206e776f 65707974 rc: unknown type
29700: 00000000 695f766c 735f676d 735f7465 ....lv_img_set_s
29710: 203a6372 6e6b6e75 206e776f 67616d69 rc: unknown imag
29720: 79742065 00006570 695f766c 735f676d e type..lv_img_s
29730: 735f7465 203a6372 564c6020 474d495f et_src: `LV_IMG
29740: 4352535f 5241565f 4c424149 74206045 _SRC_VARIABLE` t
29750: 20657079 6e756f66 00000064 67616d69 ype found...imag
29760: 72632065 65746165 00000064 695f766c e created...lv_i
29770: 0000676d mg..
00029774 <__func__.10208>:
29774: 6c5f766c 6c656261 7465735f 746f645f lv_label_set_dot
29784: 706d745f 00000000 _tmp....
0002978c <__func__.9902>:
2978c: 6c5f766c 6c656261 7465735f 696c615f lv_label_set_ali
2979c: 00006e67 gn..
000297a0 <__func__.9923>:
297a0: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex
297b0: 65735f74 74735f6c 00747261 t_sel_start.
000297bc <__func__.9929>:
297bc: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex
297cc: 65735f74 6e655f6c 00000064 t_sel_end...
000297d8 <__func__.9934>:
297d8: 6c5f766c 6c656261 7465675f 7865745f lv_label_get_tex
297e8: 00000074 t...
000297ec <__func__.9940>:
297ec: 6c5f766c 6c656261 7465675f 6e6f6c5f lv_label_get_lon
297fc: 6f6d5f67 00006564 g_mode..
00029804 <__func__.9946>:
29804: 6c5f766c 6c656261 7465675f 696c615f lv_label_get_ali
29814: 00006e67 gn..
00029818 <__func__.9953>:
29818: 6c5f766c 6c656261 7465675f 6365725f lv_label_get_rec
29828: 726f6c6f 00000000 olor....
00029830 <__func__.9959>:
29830: 6c5f766c 6c656261 7465675f 696e615f lv_label_get_ani
29840: 70735f6d 00646565 m_speed.
00029848 <__func__.9967>:
29848: 6c5f766c 6c656261 7465675f 74656c5f lv_label_get_let
29858: 5f726574 00736f70 ter_pos.
00029860 <__func__.9996>:
29860: 6c5f766c 6c656261 7465675f 74656c5f lv_label_get_let
29870: 5f726574 00006e6f ter_on..
00029878 <__func__.9865>:
29878: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex
29888: 00000074 t...
0002988c <__func__.9876>:
2988c: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex
2989c: 6d665f74 00000074 t_fmt...
000298a4 <__func__.9888>:
298a4: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex
298b4: 74735f74 63697461 00000000 t_static....
000298c0 <__func__.9895>:
298c0: 6c5f766c 6c656261 7465735f 6e6f6c5f lv_label_set_lon
298d0: 6f6d5f67 00006564 g_mode..
000298d8 <__func__.9909>:
298d8: 6c5f766c 6c656261 7465735f 6365725f lv_label_set_rec
298e8: 726f6c6f 00000000 olor....
000298f0 <__func__.9854>:
298f0: 6c5f766c 6c656261 6572635f 00657461 lv_label_create.
00029900 <__func__.9916>:
29900: 6c5f766c 6c656261 7465735f 696e615f lv_label_set_ani
29910: 70735f6d 00646565 m_speed.
00029918 <__func__.10033>:
29918: 6c5f766c 6c656261 7465675f 7865745f lv_label_get_tex
29928: 65735f74 74735f6c 00747261 t_sel_start.
00029934 <__func__.10038>:
29934: 6c5f766c 6c656261 7465675f 7865745f lv_label_get_tex
29944: 65735f74 6e655f6c 00000064 t_sel_end...
00029950 <__func__.10044>:
29950: 6c5f766c 6c656261 5f73695f 72616863 lv_label_is_char
29960: 646e755f 705f7265 0000736f _under_pos..
0002996c <__func__.10089>:
2996c: 6c5f766c 6c656261 736e695f 7865745f lv_label_ins_tex
2997c: 00000074 t...
00029980 <__func__.10102>:
29980: 6c5f766c 6c656261 7475635f 7865745f lv_label_cut_tex
29990: 00000074 742f2e2e 64726968 74726170 t...../thirdpart
299a0: 766c2f79 732f6c67 6c2f6372 69775f76 y/lvgl/src/lv_wi
299b0: 74656764 766c2f73 62616c5f 632e6c65 dgets/lv_label.c
299c0: 00000000 6c696146 74206465 6c61206f ....Failed to al
299d0: 61636f6c 6d206574 726f6d65 6f662079 locate memory fo
299e0: 6f642072 6d745f74 74705f70 00000072 r dot_tmp_ptr...
299f0: 74786554 00000000 6562616c 7263206c Text....label cr
29a00: 65746165 00000064 6c5f766c 6c656261 eated...lv_label
29a10: 00000000 ....
00029a14 <_init>:
29a14: b5f8 push {r3, r4, r5, r6, r7, lr}
29a16: bf00 nop
29a18: bcf8 pop {r3, r4, r5, r6, r7}
29a1a: bc08 pop {r3}
29a1c: 469e mov lr, r3
29a1e: 4770 bx lr
00029a20 <__init_array_start>:
29a20: 00000289 .word 0x00000289
00029a24 <_fini>:
29a24: b5f8 push {r3, r4, r5, r6, r7, lr}
29a26: bf00 nop
29a28: bcf8 pop {r3, r4, r5, r6, r7}
29a2a: bc08 pop {r3}
29a2c: 469e mov lr, r3
29a2e: 4770 bx lr
00029a30 <__fini_array_start>:
29a30: 00000265 .word 0x00000265