e54_gfx_learning.elf: file format elf32-littlearm Sections: Idx Name Size VMA LMA File off Algn 0 .text 00029a1c 00000000 00000000 00010000 2**3 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .ARM.exidx 00000008 00029a1c 00029a1c 00039a1c 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 2 .relocate 00000074 20000000 00029a24 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 00029aa0 00040078 2**3 ALLOC 6 .stack 00010004 20006e04 0003082c 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 0009d60e 00000000 00000000 000400fb 2**0 CONTENTS, READONLY, DEBUGGING 10 .debug_abbrev 0000c8d3 00000000 00000000 000dd709 2**0 CONTENTS, READONLY, DEBUGGING 11 .debug_loc 0004d8a1 00000000 00000000 000e9fdc 2**0 CONTENTS, READONLY, DEBUGGING 12 .debug_aranges 00002000 00000000 00000000 0013787d 2**0 CONTENTS, READONLY, DEBUGGING 13 .debug_ranges 00003f18 00000000 00000000 0013987d 2**0 CONTENTS, READONLY, DEBUGGING 14 .debug_macro 0003f994 00000000 00000000 0013d795 2**0 CONTENTS, READONLY, DEBUGGING 15 .debug_line 0003ad40 00000000 00000000 0017d129 2**0 CONTENTS, READONLY, DEBUGGING 16 .debug_str 0012aff9 00000000 00000000 001b7e69 2**0 CONTENTS, READONLY, DEBUGGING 17 .debug_frame 000064d8 00000000 00000000 002e2e64 2**2 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 : /********************** * 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: 59 1c 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 Y...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 b5 1e 00 00 c9 1e 00 00 dd 1e 00 00 u............... 124: f1 1e 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 79 21 00 00 75 0f 00 00 u...u...y!..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: 00029a24 .word 0x00029a24 00000288 : 288: 4b0c ldr r3, [pc, #48] ; (2bc ) 28a: b143 cbz r3, 29e 28c: 480c ldr r0, [pc, #48] ; (2c0 ) 28e: 490d ldr r1, [pc, #52] ; (2c4 ) 290: b510 push {r4, lr} 292: f3af 8000 nop.w 296: 480c ldr r0, [pc, #48] ; (2c8 ) 298: 6803 ldr r3, [r0, #0] 29a: b923 cbnz r3, 2a6 29c: bd10 pop {r4, pc} 29e: 480a ldr r0, [pc, #40] ; (2c8 ) 2a0: 6803 ldr r3, [r0, #0] 2a2: b933 cbnz r3, 2b2 2a4: 4770 bx lr 2a6: 4b09 ldr r3, [pc, #36] ; (2cc ) 2a8: 2b00 cmp r3, #0 2aa: d0f7 beq.n 29c 2ac: e8bd 4010 ldmia.w sp!, {r4, lr} 2b0: 4718 bx r3 2b2: 4b06 ldr r3, [pc, #24] ; (2cc ) 2b4: 2b00 cmp r3, #0 2b6: d0f5 beq.n 2a4 2b8: 4718 bx r3 2ba: bf00 nop 2bc: 00000000 .word 0x00000000 2c0: 00029a24 .word 0x00029a24 2c4: 2000007c .word 0x2000007c 2c8: 00029a24 .word 0x00029a24 2cc: 00000000 .word 0x00000000 000002d0 : /********************** * 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 ) 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 ) 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 ) 302: 781b ldrb r3, [r3, #0] 304: b923 cbnz r3, 310 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 ) 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 ) 314: 4880 ldr r0, [pc, #512] ; (518 ) 316: 4b81 ldr r3, [pc, #516] ; (51c ) 318: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 31a: 4c7b ldr r4, [pc, #492] ; (508 ) 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 ) 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 ) 32a: 781b ldrb r3, [r3, #0] 32c: b923 cbnz r3, 338 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 ) 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 ) 33c: 4876 ldr r0, [pc, #472] ; (518 ) 33e: 4b77 ldr r3, [pc, #476] ; (51c ) 340: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 342: 4c71 ldr r4, [pc, #452] ; (508 ) 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 ) 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 ) 352: 781b ldrb r3, [r3, #0] 354: b923 cbnz r3, 360 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 ) 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 ) 364: 486c ldr r0, [pc, #432] ; (518 ) 366: 4b6d ldr r3, [pc, #436] ; (51c ) 368: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 36a: 4c67 ldr r4, [pc, #412] ; (508 ) 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 ) 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 ) 37c: 781b ldrb r3, [r3, #0] 37e: b923 cbnz r3, 38a 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 ) 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 ) 38e: 4862 ldr r0, [pc, #392] ; (518 ) 390: 4b62 ldr r3, [pc, #392] ; (51c ) 392: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 394: 4b5c ldr r3, [pc, #368] ; (508 ) 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 ) 39e: 781b ldrb r3, [r3, #0] 3a0: b12b cbz r3, 3ae ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 3a2: 2220 movs r2, #32 3a4: 4b58 ldr r3, [pc, #352] ; (508 ) 3a6: 619a str r2, [r3, #24] cmd_mode = false; 3a8: 2200 movs r2, #0 3aa: 4b59 ldr r3, [pc, #356] ; (510 ) 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: 222f movs r2, #47 ; 0x2f 3b0: 4958 ldr r1, [pc, #352] ; (514 ) 3b2: 4859 ldr r0, [pc, #356] ; (518 ) 3b4: 4b59 ldr r3, [pc, #356] ; (51c ) 3b6: 4798 blx r3 3b8: 4b53 ldr r3, [pc, #332] ; (508 ) 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 ) 3c2: 781b ldrb r3, [r3, #0] 3c4: b12b cbz r3, 3d2 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 3c6: 2220 movs r2, #32 3c8: 4b4f ldr r3, [pc, #316] ; (508 ) 3ca: 619a str r2, [r3, #24] cmd_mode = false; 3cc: 2200 movs r2, #0 3ce: 4b50 ldr r3, [pc, #320] ; (510 ) 3d0: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 3d2: 2203 movs r2, #3 3d4: 494f ldr r1, [pc, #316] ; (514 ) 3d6: 4850 ldr r0, [pc, #320] ; (518 ) 3d8: 4b50 ldr r3, [pc, #320] ; (51c ) 3da: 4798 blx r3 3dc: 4b4a ldr r3, [pc, #296] ; (508 ) 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 ) 3e6: 781b ldrb r3, [r3, #0] 3e8: b12b cbz r3, 3f6 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 3ea: 2220 movs r2, #32 3ec: 4b46 ldr r3, [pc, #280] ; (508 ) 3ee: 619a str r2, [r3, #24] cmd_mode = false; 3f0: 2200 movs r2, #0 3f2: 4b47 ldr r3, [pc, #284] ; (510 ) 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 ) 3fa: 4847 ldr r0, [pc, #284] ; (518 ) 3fc: 4b47 ldr r3, [pc, #284] ; (51c ) 3fe: 4798 blx r3 400: 4b41 ldr r3, [pc, #260] ; (508 ) 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 ) 40a: 781b ldrb r3, [r3, #0] 40c: b92b cbnz r3, 41a 40e: 2220 movs r2, #32 410: 4b3d ldr r3, [pc, #244] ; (508 ) 412: 615a str r2, [r3, #20] cmd_mode = true; 414: 2201 movs r2, #1 416: 4b3e ldr r3, [pc, #248] ; (510 ) 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 ) 41e: 483e ldr r0, [pc, #248] ; (518 ) 420: 4b3e ldr r3, [pc, #248] ; (51c ) 422: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 424: 4b38 ldr r3, [pc, #224] ; (508 ) 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 ) 42e: 781b ldrb r3, [r3, #0] 430: b12b cbz r3, 43e ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 432: 2220 movs r2, #32 434: 4b34 ldr r3, [pc, #208] ; (508 ) 436: 619a str r2, [r3, #24] cmd_mode = false; 438: 2200 movs r2, #0 43a: 4b35 ldr r3, [pc, #212] ; (510 ) 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 ) 442: 4835 ldr r0, [pc, #212] ; (518 ) 444: 4b35 ldr r3, [pc, #212] ; (51c ) 446: 4798 blx r3 448: 4c2f ldr r4, [pc, #188] ; (508 ) 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 ) 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 ) 458: 781b ldrb r3, [r3, #0] 45a: b923 cbnz r3, 466 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 ) 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 ) 46a: 482b ldr r0, [pc, #172] ; (518 ) 46c: 4b2b ldr r3, [pc, #172] ; (51c ) 46e: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 470: 4b25 ldr r3, [pc, #148] ; (508 ) 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 ) 47a: 781b ldrb r3, [r3, #0] 47c: b12b cbz r3, 48a ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 47e: 2220 movs r2, #32 480: 4b21 ldr r3, [pc, #132] ; (508 ) 482: 619a str r2, [r3, #24] cmd_mode = false; 484: 2200 movs r2, #0 486: 4b22 ldr r3, [pc, #136] ; (510 ) 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 ) 48e: 4822 ldr r0, [pc, #136] ; (518 ) 490: 4b22 ldr r3, [pc, #136] ; (51c ) 492: 4798 blx r3 494: 4c1c ldr r4, [pc, #112] ; (508 ) 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 ) 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 ) 4a4: 781b ldrb r3, [r3, #0] 4a6: b923 cbnz r3, 4b2 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 ) 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 ) 4b6: 4818 ldr r0, [pc, #96] ; (518 ) 4b8: 4b18 ldr r3, [pc, #96] ; (51c ) 4ba: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 4bc: 4c12 ldr r4, [pc, #72] ; (508 ) 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 ) 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 ) 4cc: 781b ldrb r3, [r3, #0] 4ce: b923 cbnz r3, 4da 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 ) 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 ) 4de: 480e ldr r0, [pc, #56] ; (518 ) 4e0: 4b0e ldr r3, [pc, #56] ; (51c ) 4e2: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 4e4: 4b08 ldr r3, [pc, #32] ; (508 ) 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 ) 4ee: 781b ldrb r3, [r3, #0] 4f0: b12b cbz r3, 4fe ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 4f2: 2220 movs r2, #32 4f4: 4b04 ldr r3, [pc, #16] ; (508 ) 4f6: 619a str r2, [r3, #24] cmd_mode = false; 4f8: 2200 movs r2, #0 4fa: 4b05 ldr r3, [pc, #20] ; (510 ) 4fc: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 4fe: 2201 movs r2, #1 500: 4904 ldr r1, [pc, #16] ; (514 ) 502: 4805 ldr r0, [pc, #20] ; (518 ) 504: e00e b.n 524 506: bf00 nop 508: 41008000 .word 0x41008000 50c: 00001509 .word 0x00001509 510: 20000000 .word 0x20000000 514: 1c03c3f7 .word 0x1c03c3f7 518: 41008080 .word 0x41008080 51c: 00001041 .word 0x00001041 520: 000014e9 .word 0x000014e9 524: 4b8a ldr r3, [pc, #552] ; (750 ) 526: 4798 blx r3 528: 4b8a ldr r3, [pc, #552] ; (754 ) 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 ) 532: 781b ldrb r3, [r3, #0] 534: b12b cbz r3, 542 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 536: 2220 movs r2, #32 538: 4b86 ldr r3, [pc, #536] ; (754 ) 53a: 619a str r2, [r3, #24] cmd_mode = false; 53c: 2200 movs r2, #0 53e: 4b86 ldr r3, [pc, #536] ; (758 ) 540: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 542: 22cc movs r2, #204 ; 0xcc 544: 4985 ldr r1, [pc, #532] ; (75c ) 546: 4886 ldr r0, [pc, #536] ; (760 ) 548: 4b81 ldr r3, [pc, #516] ; (750 ) 54a: 4798 blx r3 54c: 4b81 ldr r3, [pc, #516] ; (754 ) 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 ) 556: 781b ldrb r3, [r3, #0] 558: b12b cbz r3, 566 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 55a: 2220 movs r2, #32 55c: 4b7d ldr r3, [pc, #500] ; (754 ) 55e: 619a str r2, [r3, #24] cmd_mode = false; 560: 2200 movs r2, #0 562: 4b7d ldr r3, [pc, #500] ; (758 ) 564: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 566: 22cc movs r2, #204 ; 0xcc 568: 497c ldr r1, [pc, #496] ; (75c ) 56a: 487d ldr r0, [pc, #500] ; (760 ) 56c: 4b78 ldr r3, [pc, #480] ; (750 ) 56e: 4798 blx r3 570: 4b78 ldr r3, [pc, #480] ; (754 ) 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 ) 57a: 781b ldrb r3, [r3, #0] 57c: b92b cbnz r3, 58a 57e: 2220 movs r2, #32 580: 4b74 ldr r3, [pc, #464] ; (754 ) 582: 615a str r2, [r3, #20] cmd_mode = true; 584: 2201 movs r2, #1 586: 4b74 ldr r3, [pc, #464] ; (758 ) 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 ) 58e: 4874 ldr r0, [pc, #464] ; (760 ) 590: 4b6f ldr r3, [pc, #444] ; (750 ) 592: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 594: 4b6f ldr r3, [pc, #444] ; (754 ) 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 ) 59e: 781b ldrb r3, [r3, #0] 5a0: b12b cbz r3, 5ae ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 5a2: 2220 movs r2, #32 5a4: 4b6b ldr r3, [pc, #428] ; (754 ) 5a6: 619a str r2, [r3, #24] cmd_mode = false; 5a8: 2200 movs r2, #0 5aa: 4b6b ldr r3, [pc, #428] ; (758 ) 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 ) 5b2: 486b ldr r0, [pc, #428] ; (760 ) 5b4: 4b66 ldr r3, [pc, #408] ; (750 ) 5b6: 4798 blx r3 5b8: 4b66 ldr r3, [pc, #408] ; (754 ) 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 ) 5c2: 781b ldrb r3, [r3, #0] 5c4: b12b cbz r3, 5d2 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 5c6: 2220 movs r2, #32 5c8: 4b62 ldr r3, [pc, #392] ; (754 ) 5ca: 619a str r2, [r3, #24] cmd_mode = false; 5cc: 2200 movs r2, #0 5ce: 4b62 ldr r3, [pc, #392] ; (758 ) 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 ) 5d6: 4862 ldr r0, [pc, #392] ; (760 ) 5d8: 4b5d ldr r3, [pc, #372] ; (750 ) 5da: 4798 blx r3 5dc: 4c5d ldr r4, [pc, #372] ; (754 ) 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 ) 5e4: 4798 blx r3 5e6: 4b60 ldr r3, [pc, #384] ; (768 ) 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 ) 5f4: 781b ldrb r3, [r3, #0] 5f6: b123 cbz r3, 602 ((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 ) 600: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 602: 4956 ldr r1, [pc, #344] ; (75c ) 604: 4856 ldr r0, [pc, #344] ; (760 ) 606: 4b52 ldr r3, [pc, #328] ; (750 ) 608: 4798 blx r3 60a: 4c52 ldr r4, [pc, #328] ; (754 ) 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 ) 612: 4798 blx r3 614: 4b54 ldr r3, [pc, #336] ; (768 ) 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 ) 620: 781b ldrb r3, [r3, #0] 622: b123 cbz r3, 62e ((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 ) 62c: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 62e: 494b ldr r1, [pc, #300] ; (75c ) 630: 484b ldr r0, [pc, #300] ; (760 ) 632: 4b47 ldr r3, [pc, #284] ; (750 ) 634: 4798 blx r3 636: 4c47 ldr r4, [pc, #284] ; (754 ) 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 ) 63e: 4798 blx r3 640: 4b4a ldr r3, [pc, #296] ; (76c ) 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 ) 64e: 781b ldrb r3, [r3, #0] 650: b123 cbz r3, 65c ((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 ) 65a: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 65c: 493f ldr r1, [pc, #252] ; (75c ) 65e: 4840 ldr r0, [pc, #256] ; (760 ) 660: 4b3b ldr r3, [pc, #236] ; (750 ) 662: 4798 blx r3 664: 4c3b ldr r4, [pc, #236] ; (754 ) 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 ) 66c: 4798 blx r3 66e: 4b3f ldr r3, [pc, #252] ; (76c ) 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 ) 67a: 781b ldrb r3, [r3, #0] 67c: b123 cbz r3, 688 ((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 ) 686: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 688: 4934 ldr r1, [pc, #208] ; (75c ) 68a: 4835 ldr r0, [pc, #212] ; (760 ) 68c: 4b30 ldr r3, [pc, #192] ; (750 ) 68e: 4798 blx r3 690: 4b30 ldr r3, [pc, #192] ; (754 ) 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 ) 69a: 781b ldrb r3, [r3, #0] 69c: b12b cbz r3, 6aa ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 69e: 2220 movs r2, #32 6a0: 4b2c ldr r3, [pc, #176] ; (754 ) 6a2: 619a str r2, [r3, #24] cmd_mode = false; 6a4: 2200 movs r2, #0 6a6: 4b2c ldr r3, [pc, #176] ; (758 ) 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 ) 6ae: 482c ldr r0, [pc, #176] ; (760 ) 6b0: 4b27 ldr r3, [pc, #156] ; (750 ) 6b2: 4798 blx r3 6b4: 4b27 ldr r3, [pc, #156] ; (754 ) 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 ) 6be: 781b ldrb r3, [r3, #0] 6c0: b92b cbnz r3, 6ce 6c2: 2220 movs r2, #32 6c4: 4b23 ldr r3, [pc, #140] ; (754 ) 6c6: 615a str r2, [r3, #20] cmd_mode = true; 6c8: 2201 movs r2, #1 6ca: 4b23 ldr r3, [pc, #140] ; (758 ) 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 ) 6d2: 4823 ldr r0, [pc, #140] ; (760 ) 6d4: 4b1e ldr r3, [pc, #120] ; (750 ) 6d6: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 6d8: 4b1e ldr r3, [pc, #120] ; (754 ) 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 ) 6e2: 781b ldrb r3, [r3, #0] 6e4: b12b cbz r3, 6f2 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 6e6: 2220 movs r2, #32 6e8: 4b1a ldr r3, [pc, #104] ; (754 ) 6ea: 619a str r2, [r3, #24] cmd_mode = false; 6ec: 2200 movs r2, #0 6ee: 4b1a ldr r3, [pc, #104] ; (758 ) 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 ) 6f6: 481a ldr r0, [pc, #104] ; (760 ) 6f8: 4b15 ldr r3, [pc, #84] ; (750 ) 6fa: 4798 blx r3 6fc: 4b15 ldr r3, [pc, #84] ; (754 ) 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 ) 706: 781b ldrb r3, [r3, #0] 708: b92b cbnz r3, 716 70a: 2220 movs r2, #32 70c: 4b11 ldr r3, [pc, #68] ; (754 ) 70e: 615a str r2, [r3, #20] cmd_mode = true; 710: 2201 movs r2, #1 712: 4b11 ldr r3, [pc, #68] ; (758 ) 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 ) 71a: 4811 ldr r0, [pc, #68] ; (760 ) 71c: 4b0c ldr r3, [pc, #48] ; (750 ) 71e: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 720: 4b0c ldr r3, [pc, #48] ; (754 ) 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 ) 72a: 781b ldrb r3, [r3, #0] 72c: b12b cbz r3, 73a ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 72e: 2220 movs r2, #32 730: 4b08 ldr r3, [pc, #32] ; (754 ) 732: 619a str r2, [r3, #24] cmd_mode = false; 734: 2200 movs r2, #0 736: 4b08 ldr r3, [pc, #32] ; (758 ) 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 ) 73e: 4808 ldr r0, [pc, #32] ; (760 ) 740: 4b03 ldr r3, [pc, #12] ; (750 ) 742: 4798 blx r3 744: 4b03 ldr r3, [pc, #12] ; (754 ) 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 74e: bf00 nop 750: 00001041 .word 0x00001041 754: 41008000 .word 0x41008000 758: 20000000 .word 0x20000000 75c: 1c03c3f7 .word 0x1c03c3f7 760: 41008080 .word 0x41008080 764: 00010ec9 .word 0x00010ec9 768: 00010ed5 .word 0x00010ed5 76c: 00010efd .word 0x00010efd if(cmd_mode == false) { 770: 4b8a ldr r3, [pc, #552] ; (99c ) 772: 781b ldrb r3, [r3, #0] 774: b92b cbnz r3, 782 776: 2220 movs r2, #32 778: 4b89 ldr r3, [pc, #548] ; (9a0 ) 77a: 615a str r2, [r3, #20] cmd_mode = true; 77c: 2201 movs r2, #1 77e: 4b87 ldr r3, [pc, #540] ; (99c ) 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 ) 786: 4888 ldr r0, [pc, #544] ; (9a8 ) 788: 4b88 ldr r3, [pc, #544] ; (9ac ) 78a: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 78c: 4b84 ldr r3, [pc, #528] ; (9a0 ) 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 ) 796: 781b ldrb r3, [r3, #0] 798: b12b cbz r3, 7a6 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 79a: 2220 movs r2, #32 79c: 4b80 ldr r3, [pc, #512] ; (9a0 ) 79e: 619a str r2, [r3, #24] cmd_mode = false; 7a0: 2200 movs r2, #0 7a2: 4b7e ldr r3, [pc, #504] ; (99c ) 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 ) 7aa: 487f ldr r0, [pc, #508] ; (9a8 ) 7ac: 4b7f ldr r3, [pc, #508] ; (9ac ) 7ae: 4798 blx r3 7b0: 4b7b ldr r3, [pc, #492] ; (9a0 ) 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 ) 7ba: 781b ldrb r3, [r3, #0] 7bc: b12b cbz r3, 7ca ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 7be: 2220 movs r2, #32 7c0: 4b77 ldr r3, [pc, #476] ; (9a0 ) 7c2: 619a str r2, [r3, #24] cmd_mode = false; 7c4: 2200 movs r2, #0 7c6: 4b75 ldr r3, [pc, #468] ; (99c ) 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 ) 7ce: 4876 ldr r0, [pc, #472] ; (9a8 ) 7d0: 4b76 ldr r3, [pc, #472] ; (9ac ) 7d2: 4798 blx r3 7d4: 4b72 ldr r3, [pc, #456] ; (9a0 ) 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 ) 7de: 781b ldrb r3, [r3, #0] 7e0: b12b cbz r3, 7ee ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 7e2: 2220 movs r2, #32 7e4: 4b6e ldr r3, [pc, #440] ; (9a0 ) 7e6: 619a str r2, [r3, #24] cmd_mode = false; 7e8: 2200 movs r2, #0 7ea: 4b6c ldr r3, [pc, #432] ; (99c ) 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 ) 7f2: 486d ldr r0, [pc, #436] ; (9a8 ) 7f4: 4b6d ldr r3, [pc, #436] ; (9ac ) 7f6: 4798 blx r3 7f8: 4b69 ldr r3, [pc, #420] ; (9a0 ) 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 ) 802: 781b ldrb r3, [r3, #0] 804: b12b cbz r3, 812 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 806: 2220 movs r2, #32 808: 4b65 ldr r3, [pc, #404] ; (9a0 ) 80a: 619a str r2, [r3, #24] cmd_mode = false; 80c: 2200 movs r2, #0 80e: 4b63 ldr r3, [pc, #396] ; (99c ) 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 ) 816: 4864 ldr r0, [pc, #400] ; (9a8 ) 818: 4b64 ldr r3, [pc, #400] ; (9ac ) 81a: 4798 blx r3 81c: 4b60 ldr r3, [pc, #384] ; (9a0 ) 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 ) 826: 781b ldrb r3, [r3, #0] 828: b12b cbz r3, 836 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 82a: 2220 movs r2, #32 82c: 4b5c ldr r3, [pc, #368] ; (9a0 ) 82e: 619a str r2, [r3, #24] cmd_mode = false; 830: 2200 movs r2, #0 832: 4b5a ldr r3, [pc, #360] ; (99c ) 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 ) 83a: 485b ldr r0, [pc, #364] ; (9a8 ) 83c: 4b5b ldr r3, [pc, #364] ; (9ac ) 83e: 4798 blx r3 840: 4b57 ldr r3, [pc, #348] ; (9a0 ) 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 ) 84a: 781b ldrb r3, [r3, #0] 84c: b12b cbz r3, 85a ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 84e: 2220 movs r2, #32 850: 4b53 ldr r3, [pc, #332] ; (9a0 ) 852: 619a str r2, [r3, #24] cmd_mode = false; 854: 2200 movs r2, #0 856: 4b51 ldr r3, [pc, #324] ; (99c ) 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 ) 85e: 4852 ldr r0, [pc, #328] ; (9a8 ) 860: 4b52 ldr r3, [pc, #328] ; (9ac ) 862: 4798 blx r3 864: 4b4e ldr r3, [pc, #312] ; (9a0 ) 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 ) 86e: 781b ldrb r3, [r3, #0] 870: b12b cbz r3, 87e ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 872: 2220 movs r2, #32 874: 4b4a ldr r3, [pc, #296] ; (9a0 ) 876: 619a str r2, [r3, #24] cmd_mode = false; 878: 2200 movs r2, #0 87a: 4b48 ldr r3, [pc, #288] ; (99c ) 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 ) 882: 4849 ldr r0, [pc, #292] ; (9a8 ) 884: 4b49 ldr r3, [pc, #292] ; (9ac ) 886: 4798 blx r3 888: 4b45 ldr r3, [pc, #276] ; (9a0 ) 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 ) 892: 781b ldrb r3, [r3, #0] 894: b12b cbz r3, 8a2 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 896: 2220 movs r2, #32 898: 4b41 ldr r3, [pc, #260] ; (9a0 ) 89a: 619a str r2, [r3, #24] cmd_mode = false; 89c: 2200 movs r2, #0 89e: 4b3f ldr r3, [pc, #252] ; (99c ) 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 ) 8a6: 4840 ldr r0, [pc, #256] ; (9a8 ) 8a8: 4b40 ldr r3, [pc, #256] ; (9ac ) 8aa: 4798 blx r3 8ac: 4b3c ldr r3, [pc, #240] ; (9a0 ) 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 ) 8b6: 781b ldrb r3, [r3, #0] 8b8: b92b cbnz r3, 8c6 8ba: 2220 movs r2, #32 8bc: 4b38 ldr r3, [pc, #224] ; (9a0 ) 8be: 615a str r2, [r3, #20] cmd_mode = true; 8c0: 2201 movs r2, #1 8c2: 4b36 ldr r3, [pc, #216] ; (99c ) 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 ) 8ca: 4837 ldr r0, [pc, #220] ; (9a8 ) 8cc: 4b37 ldr r3, [pc, #220] ; (9ac ) 8ce: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 8d0: 4b33 ldr r3, [pc, #204] ; (9a0 ) 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 ) 8da: 781b ldrb r3, [r3, #0] 8dc: b12b cbz r3, 8ea ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 8de: 2220 movs r2, #32 8e0: 4b2f ldr r3, [pc, #188] ; (9a0 ) 8e2: 619a str r2, [r3, #24] cmd_mode = false; 8e4: 2200 movs r2, #0 8e6: 4b2d ldr r3, [pc, #180] ; (99c ) 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 ) 8ee: 482e ldr r0, [pc, #184] ; (9a8 ) 8f0: 4b2e ldr r3, [pc, #184] ; (9ac ) 8f2: 4798 blx r3 8f4: 4b2a ldr r3, [pc, #168] ; (9a0 ) 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 ) 8fe: 781b ldrb r3, [r3, #0] 900: b12b cbz r3, 90e ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 902: 2220 movs r2, #32 904: 4b26 ldr r3, [pc, #152] ; (9a0 ) 906: 619a str r2, [r3, #24] cmd_mode = false; 908: 2200 movs r2, #0 90a: 4b24 ldr r3, [pc, #144] ; (99c ) 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 ) 912: 4825 ldr r0, [pc, #148] ; (9a8 ) 914: 4b25 ldr r3, [pc, #148] ; (9ac ) 916: 4798 blx r3 918: 4b21 ldr r3, [pc, #132] ; (9a0 ) 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 ) 922: 781b ldrb r3, [r3, #0] 924: b12b cbz r3, 932 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 926: 2220 movs r2, #32 928: 4b1d ldr r3, [pc, #116] ; (9a0 ) 92a: 619a str r2, [r3, #24] cmd_mode = false; 92c: 2200 movs r2, #0 92e: 4b1b ldr r3, [pc, #108] ; (99c ) 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 ) 936: 481c ldr r0, [pc, #112] ; (9a8 ) 938: 4b1c ldr r3, [pc, #112] ; (9ac ) 93a: 4798 blx r3 93c: 4b18 ldr r3, [pc, #96] ; (9a0 ) 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 ) 946: 781b ldrb r3, [r3, #0] 948: b12b cbz r3, 956 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 94a: 2220 movs r2, #32 94c: 4b14 ldr r3, [pc, #80] ; (9a0 ) 94e: 619a str r2, [r3, #24] cmd_mode = false; 950: 2200 movs r2, #0 952: 4b12 ldr r3, [pc, #72] ; (99c ) 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 ) 95a: 4813 ldr r0, [pc, #76] ; (9a8 ) 95c: 4b13 ldr r3, [pc, #76] ; (9ac ) 95e: 4798 blx r3 960: 4b0f ldr r3, [pc, #60] ; (9a0 ) 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 ) 96a: 781b ldrb r3, [r3, #0] 96c: b12b cbz r3, 97a ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 96e: 2220 movs r2, #32 970: 4b0b ldr r3, [pc, #44] ; (9a0 ) 972: 619a str r2, [r3, #24] cmd_mode = false; 974: 2200 movs r2, #0 976: 4b09 ldr r3, [pc, #36] ; (99c ) 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 ) 97e: 480a ldr r0, [pc, #40] ; (9a8 ) 980: 4b0a ldr r3, [pc, #40] ; (9ac ) 982: 4798 blx r3 984: 4b06 ldr r3, [pc, #24] ; (9a0 ) 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 ) 98e: 781b ldrb r3, [r3, #0] 990: b18b cbz r3, 9b6 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 992: 2220 movs r2, #32 994: 4b02 ldr r3, [pc, #8] ; (9a0 ) 996: 619a str r2, [r3, #24] 998: e00a b.n 9b0 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 ) 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 ) 9ba: 488b ldr r0, [pc, #556] ; (be8 ) 9bc: 4b8b ldr r3, [pc, #556] ; (bec ) 9be: 4798 blx r3 9c0: 4b8b ldr r3, [pc, #556] ; (bf0 ) 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 ) 9ca: 781b ldrb r3, [r3, #0] 9cc: b12b cbz r3, 9da ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 9ce: 2220 movs r2, #32 9d0: 4b87 ldr r3, [pc, #540] ; (bf0 ) 9d2: 619a str r2, [r3, #24] cmd_mode = false; 9d4: 2200 movs r2, #0 9d6: 4b82 ldr r3, [pc, #520] ; (be0 ) 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 ) 9de: 4882 ldr r0, [pc, #520] ; (be8 ) 9e0: 4b82 ldr r3, [pc, #520] ; (bec ) 9e2: 4798 blx r3 9e4: 4b82 ldr r3, [pc, #520] ; (bf0 ) 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 ) 9ee: 781b ldrb r3, [r3, #0] 9f0: b92b cbnz r3, 9fe 9f2: 2220 movs r2, #32 9f4: 4b7e ldr r3, [pc, #504] ; (bf0 ) 9f6: 615a str r2, [r3, #20] cmd_mode = true; 9f8: 2201 movs r2, #1 9fa: 4b79 ldr r3, [pc, #484] ; (be0 ) 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 ) a02: 4879 ldr r0, [pc, #484] ; (be8 ) a04: 4b79 ldr r3, [pc, #484] ; (bec ) a06: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; a08: 4b79 ldr r3, [pc, #484] ; (bf0 ) 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 ) a12: 781b ldrb r3, [r3, #0] a14: b12b cbz r3, a22 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; a16: 2220 movs r2, #32 a18: 4b75 ldr r3, [pc, #468] ; (bf0 ) a1a: 619a str r2, [r3, #24] cmd_mode = false; a1c: 2200 movs r2, #0 a1e: 4b70 ldr r3, [pc, #448] ; (be0 ) 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 ) a26: 4870 ldr r0, [pc, #448] ; (be8 ) a28: 4b70 ldr r3, [pc, #448] ; (bec ) a2a: 4798 blx r3 a2c: 4b70 ldr r3, [pc, #448] ; (bf0 ) 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 ) a36: 781b ldrb r3, [r3, #0] a38: b12b cbz r3, a46 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; a3a: 2220 movs r2, #32 a3c: 4b6c ldr r3, [pc, #432] ; (bf0 ) a3e: 619a str r2, [r3, #24] cmd_mode = false; a40: 2200 movs r2, #0 a42: 4b67 ldr r3, [pc, #412] ; (be0 ) 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 ) a4a: 4867 ldr r0, [pc, #412] ; (be8 ) a4c: 4b67 ldr r3, [pc, #412] ; (bec ) a4e: 4798 blx r3 a50: 4b67 ldr r3, [pc, #412] ; (bf0 ) 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 ) a5a: 781b ldrb r3, [r3, #0] a5c: b12b cbz r3, a6a ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; a5e: 2220 movs r2, #32 a60: 4b63 ldr r3, [pc, #396] ; (bf0 ) a62: 619a str r2, [r3, #24] cmd_mode = false; a64: 2200 movs r2, #0 a66: 4b5e ldr r3, [pc, #376] ; (be0 ) 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 ) a6e: 485e ldr r0, [pc, #376] ; (be8 ) a70: 4b5e ldr r3, [pc, #376] ; (bec ) a72: 4798 blx r3 a74: 4b5e ldr r3, [pc, #376] ; (bf0 ) 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 ) a7e: 781b ldrb r3, [r3, #0] a80: b12b cbz r3, a8e ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; a82: 2220 movs r2, #32 a84: 4b5a ldr r3, [pc, #360] ; (bf0 ) a86: 619a str r2, [r3, #24] cmd_mode = false; a88: 2200 movs r2, #0 a8a: 4b55 ldr r3, [pc, #340] ; (be0 ) 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 ) a92: 4855 ldr r0, [pc, #340] ; (be8 ) a94: 4b55 ldr r3, [pc, #340] ; (bec ) a96: 4798 blx r3 a98: 4b55 ldr r3, [pc, #340] ; (bf0 ) 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 ) aa2: 781b ldrb r3, [r3, #0] aa4: b92b cbnz r3, ab2 aa6: 2220 movs r2, #32 aa8: 4b51 ldr r3, [pc, #324] ; (bf0 ) aaa: 615a str r2, [r3, #20] cmd_mode = true; aac: 2201 movs r2, #1 aae: 4b4c ldr r3, [pc, #304] ; (be0 ) 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 ) ab6: 484c ldr r0, [pc, #304] ; (be8 ) ab8: 4b4c ldr r3, [pc, #304] ; (bec ) aba: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; abc: 4b4c ldr r3, [pc, #304] ; (bf0 ) 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 ) ac6: 781b ldrb r3, [r3, #0] ac8: b12b cbz r3, ad6 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; aca: 2220 movs r2, #32 acc: 4b48 ldr r3, [pc, #288] ; (bf0 ) ace: 619a str r2, [r3, #24] cmd_mode = false; ad0: 2200 movs r2, #0 ad2: 4b43 ldr r3, [pc, #268] ; (be0 ) 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 ) ada: 4843 ldr r0, [pc, #268] ; (be8 ) adc: 4b43 ldr r3, [pc, #268] ; (bec ) ade: 4798 blx r3 ae0: 4b43 ldr r3, [pc, #268] ; (bf0 ) 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 ) aea: 781b ldrb r3, [r3, #0] aec: b12b cbz r3, afa ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; aee: 2220 movs r2, #32 af0: 4b3f ldr r3, [pc, #252] ; (bf0 ) af2: 619a str r2, [r3, #24] cmd_mode = false; af4: 2200 movs r2, #0 af6: 4b3a ldr r3, [pc, #232] ; (be0 ) 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 ) afe: 483a ldr r0, [pc, #232] ; (be8 ) b00: 4b3a ldr r3, [pc, #232] ; (bec ) b02: 4798 blx r3 b04: 4b3a ldr r3, [pc, #232] ; (bf0 ) 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 ) b0e: 781b ldrb r3, [r3, #0] b10: b12b cbz r3, b1e ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; b12: 2220 movs r2, #32 b14: 4b36 ldr r3, [pc, #216] ; (bf0 ) b16: 619a str r2, [r3, #24] cmd_mode = false; b18: 2200 movs r2, #0 b1a: 4b31 ldr r3, [pc, #196] ; (be0 ) 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 ) b22: 4831 ldr r0, [pc, #196] ; (be8 ) b24: 4b31 ldr r3, [pc, #196] ; (bec ) b26: 4798 blx r3 b28: 4b31 ldr r3, [pc, #196] ; (bf0 ) 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 ) b32: 781b ldrb r3, [r3, #0] b34: b12b cbz r3, b42 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; b36: 2220 movs r2, #32 b38: 4b2d ldr r3, [pc, #180] ; (bf0 ) b3a: 619a str r2, [r3, #24] cmd_mode = false; b3c: 2200 movs r2, #0 b3e: 4b28 ldr r3, [pc, #160] ; (be0 ) 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 ) b46: 4828 ldr r0, [pc, #160] ; (be8 ) b48: 4b28 ldr r3, [pc, #160] ; (bec ) b4a: 4798 blx r3 b4c: 4b28 ldr r3, [pc, #160] ; (bf0 ) 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 ) b56: 781b ldrb r3, [r3, #0] b58: b92b cbnz r3, b66 b5a: 2220 movs r2, #32 b5c: 4b24 ldr r3, [pc, #144] ; (bf0 ) b5e: 615a str r2, [r3, #20] cmd_mode = true; b60: 2201 movs r2, #1 b62: 4b1f ldr r3, [pc, #124] ; (be0 ) 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 ) b6a: 481f ldr r0, [pc, #124] ; (be8 ) b6c: 4b1f ldr r3, [pc, #124] ; (bec ) b6e: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; b70: 4b1f ldr r3, [pc, #124] ; (bf0 ) 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 ) b7a: 781b ldrb r3, [r3, #0] b7c: b92b cbnz r3, b8a b7e: 2220 movs r2, #32 b80: 4b1b ldr r3, [pc, #108] ; (bf0 ) b82: 615a str r2, [r3, #20] cmd_mode = true; b84: 2201 movs r2, #1 b86: 4b16 ldr r3, [pc, #88] ; (be0 ) 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 ) b8e: 4816 ldr r0, [pc, #88] ; (be8 ) b90: 4b16 ldr r3, [pc, #88] ; (bec ) b92: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; b94: 4b16 ldr r3, [pc, #88] ; (bf0 ) 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 ) b9e: 781b ldrb r3, [r3, #0] ba0: b12b cbz r3, bae ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; ba2: 2220 movs r2, #32 ba4: 4b12 ldr r3, [pc, #72] ; (bf0 ) ba6: 619a str r2, [r3, #24] cmd_mode = false; ba8: 2200 movs r2, #0 baa: 4b0d ldr r3, [pc, #52] ; (be0 ) 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 ) bb2: 480d ldr r0, [pc, #52] ; (be8 ) bb4: 4b0d ldr r3, [pc, #52] ; (bec ) bb6: 4798 blx r3 bb8: 4b0d ldr r3, [pc, #52] ; (bf0 ) 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 ) bc2: 781b ldrb r3, [r3, #0] bc4: b12b cbz r3, bd2 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; bc6: 2220 movs r2, #32 bc8: 4b09 ldr r3, [pc, #36] ; (bf0 ) bca: 619a str r2, [r3, #24] cmd_mode = false; bcc: 2200 movs r2, #0 bce: 4b04 ldr r3, [pc, #16] ; (be0 ) 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 ) bd6: 4804 ldr r0, [pc, #16] ; (be8 ) bd8: 4b04 ldr r3, [pc, #16] ; (bec ) bda: 4798 blx r3 bdc: e00a b.n bf4 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 ) 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 ) bfe: 781b ldrb r3, [r3, #0] c00: b12b cbz r3, c0e ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; c02: 2220 movs r2, #32 c04: 4b22 ldr r3, [pc, #136] ; (c90 ) c06: 619a str r2, [r3, #24] cmd_mode = false; c08: 2200 movs r2, #0 c0a: 4b22 ldr r3, [pc, #136] ; (c94 ) 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 ) c12: 4822 ldr r0, [pc, #136] ; (c9c ) c14: 4b22 ldr r3, [pc, #136] ; (ca0 ) c16: 4798 blx r3 c18: 4b1d ldr r3, [pc, #116] ; (c90 ) 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 ) c22: 781b ldrb r3, [r3, #0] c24: b12b cbz r3, c32 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; c26: 2220 movs r2, #32 c28: 4b19 ldr r3, [pc, #100] ; (c90 ) c2a: 619a str r2, [r3, #24] cmd_mode = false; c2c: 2200 movs r2, #0 c2e: 4b19 ldr r3, [pc, #100] ; (c94 ) 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 ) c36: 4819 ldr r0, [pc, #100] ; (c9c ) c38: 4b19 ldr r3, [pc, #100] ; (ca0 ) c3a: 4798 blx r3 c3c: 4b14 ldr r3, [pc, #80] ; (c90 ) 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 ) c46: 781b ldrb r3, [r3, #0] c48: b12b cbz r3, c56 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; c4a: 2220 movs r2, #32 c4c: 4b10 ldr r3, [pc, #64] ; (c90 ) c4e: 619a str r2, [r3, #24] cmd_mode = false; c50: 2200 movs r2, #0 c52: 4b10 ldr r3, [pc, #64] ; (c94 ) 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 ) c5a: 4810 ldr r0, [pc, #64] ; (c9c ) c5c: 4b10 ldr r3, [pc, #64] ; (ca0 ) c5e: 4798 blx r3 c60: 4b0b ldr r3, [pc, #44] ; (c90 ) 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 ) c6a: 781b ldrb r3, [r3, #0] c6c: b12b cbz r3, c7a ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; c6e: 2220 movs r2, #32 c70: 4b07 ldr r3, [pc, #28] ; (c90 ) c72: 619a str r2, [r3, #24] cmd_mode = false; c74: 2200 movs r2, #0 c76: 4b07 ldr r3, [pc, #28] ; (c94 ) 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 ) c7e: 4807 ldr r0, [pc, #28] ; (c9c ) c80: 4b07 ldr r3, [pc, #28] ; (ca0 ) c82: 4798 blx r3 c84: 4b02 ldr r3, [pc, #8] ; (c90 ) 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 : { 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 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 if(area->x1 > SSD1963_HOR_RES - 1) return; cbe: f9b1 4000 ldrsh.w r4, [r1] cc2: 4b04 ldr r3, [pc, #16] ; (cd4 ) cc4: 4798 blx r3 cc6: 4b04 ldr r3, [pc, #16] ; (cd8 ) cc8: 4798 blx r3 cca: 3801 subs r0, #1 ccc: 4284 cmp r4, r0 cce: dd05 ble.n cdc cd0: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} cd4: 00010ec9 .word 0x00010ec9 cd8: 00010ed5 .word 0x00010ed5 if(area->y1 > SSD1963_VER_RES - 1) return; cdc: f9ba 4002 ldrsh.w r4, [sl, #2] ce0: 4b94 ldr r3, [pc, #592] ; (f34 ) ce2: 4798 blx r3 ce4: 4b94 ldr r3, [pc, #592] ; (f38 ) ce6: 4798 blx r3 ce8: 3801 subs r0, #1 cea: 4284 cmp r4, r0 cec: dcf0 bgt.n cd0 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 ) d06: 4798 blx r3 d08: 4b8c ldr r3, [pc, #560] ; (f3c ) d0a: 4798 blx r3 d0c: 3801 subs r0, #1 d0e: 4287 cmp r7, r0 d10: f300 810a bgt.w f28 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 ) d1e: 4798 blx r3 d20: 4b85 ldr r3, [pc, #532] ; (f38 ) d22: 4798 blx r3 d24: 3801 subs r0, #1 d26: 4580 cmp r8, r0 d28: f300 8118 bgt.w f5c 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 ) d34: 615a str r2, [r3, #20] if(cmd_mode == false) { d36: 4b83 ldr r3, [pc, #524] ; (f44 ) d38: 781b ldrb r3, [r3, #0] d3a: b92b cbnz r3, d48 d3c: 2220 movs r2, #32 d3e: 4b80 ldr r3, [pc, #512] ; (f40 ) d40: 615a str r2, [r3, #20] cmd_mode = true; d42: 2201 movs r2, #1 d44: 4b7f ldr r3, [pc, #508] ; (f44 ) 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 ) d4c: 487f ldr r0, [pc, #508] ; (f4c ) d4e: 4b80 ldr r3, [pc, #512] ; (f50 ) d50: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; d52: 4b7b ldr r3, [pc, #492] ; (f40 ) 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 ) d60: 781b ldrb r3, [r3, #0] d62: b12b cbz r3, d70 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; d64: 2120 movs r1, #32 d66: 4b76 ldr r3, [pc, #472] ; (f40 ) d68: 6199 str r1, [r3, #24] cmd_mode = false; d6a: 2100 movs r1, #0 d6c: 4b75 ldr r3, [pc, #468] ; (f44 ) d6e: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); d70: 4975 ldr r1, [pc, #468] ; (f48 ) d72: 4876 ldr r0, [pc, #472] ; (f4c ) d74: 4b76 ldr r3, [pc, #472] ; (f50 ) d76: 4798 blx r3 d78: 4b71 ldr r3, [pc, #452] ; (f40 ) 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 ) d82: 781b ldrb r3, [r3, #0] d84: b12b cbz r3, d92 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; d86: 2220 movs r2, #32 d88: 4b6d ldr r3, [pc, #436] ; (f40 ) d8a: 619a str r2, [r3, #24] cmd_mode = false; d8c: 2200 movs r2, #0 d8e: 4b6d ldr r3, [pc, #436] ; (f44 ) 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 ) d96: 486d ldr r0, [pc, #436] ; (f4c ) d98: 4b6d ldr r3, [pc, #436] ; (f50 ) d9a: 4798 blx r3 d9c: 4b68 ldr r3, [pc, #416] ; (f40 ) 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 ) daa: 781b ldrb r3, [r3, #0] dac: b12b cbz r3, dba ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; dae: 2120 movs r1, #32 db0: 4b63 ldr r3, [pc, #396] ; (f40 ) db2: 6199 str r1, [r3, #24] cmd_mode = false; db4: 2100 movs r1, #0 db6: 4b63 ldr r3, [pc, #396] ; (f44 ) db8: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); dba: 4963 ldr r1, [pc, #396] ; (f48 ) dbc: 4863 ldr r0, [pc, #396] ; (f4c ) dbe: 4b64 ldr r3, [pc, #400] ; (f50 ) dc0: 4798 blx r3 dc2: 4b5f ldr r3, [pc, #380] ; (f40 ) 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 ) dce: 781b ldrb r3, [r3, #0] dd0: b12b cbz r3, dde ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; dd2: 2120 movs r1, #32 dd4: 4b5a ldr r3, [pc, #360] ; (f40 ) dd6: 6199 str r1, [r3, #24] cmd_mode = false; dd8: 2100 movs r1, #0 dda: 4b5a ldr r3, [pc, #360] ; (f44 ) ddc: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); dde: 495a ldr r1, [pc, #360] ; (f48 ) de0: 485a ldr r0, [pc, #360] ; (f4c ) de2: 4b5b ldr r3, [pc, #364] ; (f50 ) de4: 4798 blx r3 de6: 4b56 ldr r3, [pc, #344] ; (f40 ) 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 ) df0: 781b ldrb r3, [r3, #0] df2: b92b cbnz r3, e00 df4: 2220 movs r2, #32 df6: 4b52 ldr r3, [pc, #328] ; (f40 ) df8: 615a str r2, [r3, #20] cmd_mode = true; dfa: 2201 movs r2, #1 dfc: 4b51 ldr r3, [pc, #324] ; (f44 ) 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 ) e04: 4851 ldr r0, [pc, #324] ; (f4c ) e06: 4b52 ldr r3, [pc, #328] ; (f50 ) e08: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; e0a: 4b4d ldr r3, [pc, #308] ; (f40 ) 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 ) e18: 781b ldrb r3, [r3, #0] e1a: b12b cbz r3, e28 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; e1c: 2120 movs r1, #32 e1e: 4b48 ldr r3, [pc, #288] ; (f40 ) e20: 6199 str r1, [r3, #24] cmd_mode = false; e22: 2100 movs r1, #0 e24: 4b47 ldr r3, [pc, #284] ; (f44 ) e26: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); e28: 4947 ldr r1, [pc, #284] ; (f48 ) e2a: 4848 ldr r0, [pc, #288] ; (f4c ) e2c: 4b48 ldr r3, [pc, #288] ; (f50 ) e2e: 4798 blx r3 e30: 4b43 ldr r3, [pc, #268] ; (f40 ) 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 ) e3a: 781b ldrb r3, [r3, #0] e3c: b12b cbz r3, e4a ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; e3e: 2220 movs r2, #32 e40: 4b3f ldr r3, [pc, #252] ; (f40 ) e42: 619a str r2, [r3, #24] cmd_mode = false; e44: 2200 movs r2, #0 e46: 4b3f ldr r3, [pc, #252] ; (f44 ) 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 ) e4e: 483f ldr r0, [pc, #252] ; (f4c ) e50: 4b3f ldr r3, [pc, #252] ; (f50 ) e52: 4798 blx r3 e54: 4b3a ldr r3, [pc, #232] ; (f40 ) 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 ) e62: 781b ldrb r3, [r3, #0] e64: b12b cbz r3, e72 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; e66: 2120 movs r1, #32 e68: 4b35 ldr r3, [pc, #212] ; (f40 ) e6a: 6199 str r1, [r3, #24] cmd_mode = false; e6c: 2100 movs r1, #0 e6e: 4b35 ldr r3, [pc, #212] ; (f44 ) e70: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); e72: 4935 ldr r1, [pc, #212] ; (f48 ) e74: 4835 ldr r0, [pc, #212] ; (f4c ) e76: 4b36 ldr r3, [pc, #216] ; (f50 ) e78: 4798 blx r3 e7a: 4b31 ldr r3, [pc, #196] ; (f40 ) 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 ) e88: 781b ldrb r3, [r3, #0] e8a: b12b cbz r3, e98 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; e8c: 2120 movs r1, #32 e8e: 4b2c ldr r3, [pc, #176] ; (f40 ) e90: 6199 str r1, [r3, #24] cmd_mode = false; e92: 2100 movs r1, #0 e94: 4b2b ldr r3, [pc, #172] ; (f44 ) e96: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); e98: 492b ldr r1, [pc, #172] ; (f48 ) e9a: 482c ldr r0, [pc, #176] ; (f4c ) e9c: 4b2c ldr r3, [pc, #176] ; (f50 ) e9e: 4798 blx r3 ea0: 4b27 ldr r3, [pc, #156] ; (f40 ) 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 ) eaa: 781b ldrb r3, [r3, #0] eac: b92b cbnz r3, eba eae: 2220 movs r2, #32 eb0: 4b23 ldr r3, [pc, #140] ; (f40 ) eb2: 615a str r2, [r3, #20] cmd_mode = true; eb4: 2201 movs r2, #1 eb6: 4b23 ldr r3, [pc, #140] ; (f44 ) 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 ) ebe: 4823 ldr r0, [pc, #140] ; (f4c ) ec0: 4b23 ldr r3, [pc, #140] ; (f50 ) 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 ) 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 ) eda: 7812 ldrb r2, [r2, #0] edc: b12a cbz r2, eea ede: 2120 movs r1, #32 ee0: 4a17 ldr r2, [pc, #92] ; (f40 ) ee2: 6191 str r1, [r2, #24] cmd_mode = false; ee4: 2100 movs r1, #0 ee6: 4a17 ldr r2, [pc, #92] ; (f44 ) 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 ) 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 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 f02: f8df a054 ldr.w sl, [pc, #84] ; f58 f06: 4633 mov r3, r6 f08: 462a mov r2, r5 f0a: 4659 mov r1, fp f0c: 480f ldr r0, [pc, #60] ; (f4c ) 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 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; f1a: 2240 movs r2, #64 ; 0x40 f1c: 4b08 ldr r3, [pc, #32] ; (f40 ) f1e: 619a str r2, [r3, #24] lv_disp_flush_ready(disp_drv); f20: 4648 mov r0, r9 f22: 4b0c ldr r3, [pc, #48] ; (f54 ) f24: 4798 blx r3 f26: e6d3 b.n cd0 int32_t act_x2 = area->x2 > SSD1963_HOR_RES - 1 ? SSD1963_HOR_RES - 1 : area->x2; f28: 4b02 ldr r3, [pc, #8] ; (f34 ) f2a: 4798 blx r3 f2c: 4b03 ldr r3, [pc, #12] ; (f3c ) f2e: 4798 blx r3 f30: 1e47 subs r7, r0, #1 f32: e6f1 b.n d18 f34: 00010ec9 .word 0x00010ec9 f38: 00010efd .word 0x00010efd f3c: 00010ed5 .word 0x00010ed5 f40: 41008000 .word 0x41008000 f44: 20000000 .word 0x20000000 f48: 1c03c3f7 .word 0x1c03c3f7 f4c: 41008080 .word 0x41008080 f50: 00001041 .word 0x00001041 f54: 00010f95 .word 0x00010f95 f58: 00001061 .word 0x00001061 int32_t act_y2 = area->y2 > SSD1963_VER_RES - 1 ? SSD1963_VER_RES - 1 : area->y2; f5c: 4b03 ldr r3, [pc, #12] ; (f6c ) f5e: 4798 blx r3 f60: 4b03 ldr r3, [pc, #12] ; (f70 ) f62: 4798 blx r3 f64: f100 38ff add.w r8, r0, #4294967295 f68: e6e2 b.n d30 f6a: bf00 nop f6c: 00010ec9 .word 0x00010ec9 f70: 00010efd .word 0x00010efd 00000f74 : /** * \brief Default interrupt handler for unused IRQs. */ void Dummy_Handler(void) { f74: e7fe b.n f74 ... 00000f78 : { f78: b508 push {r3, lr} if (pSrc != pDest) { f7a: 4b1c ldr r3, [pc, #112] ; (fec ) f7c: 4a1c ldr r2, [pc, #112] ; (ff0 ) f7e: 429a cmp r2, r3 f80: d010 beq.n fa4 for (; pDest < &_erelocate;) { f82: 4b1c ldr r3, [pc, #112] ; (ff4 ) f84: 4a19 ldr r2, [pc, #100] ; (fec ) f86: 429a cmp r2, r3 f88: d20c bcs.n fa4 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 ) *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 for (pDest = &_szero; pDest < &_ezero;) { fa4: 4b14 ldr r3, [pc, #80] ; (ff8 ) fa6: 4a15 ldr r2, [pc, #84] ; (ffc ) fa8: 429a cmp r2, r3 faa: d20a bcs.n fc2 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 SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); fc2: 4b0f ldr r3, [pc, #60] ; (1000 ) fc4: 4a0f ldr r2, [pc, #60] ; (1004 ) 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 ) fe2: 4798 blx r3 main(); fe4: 4b09 ldr r3, [pc, #36] ; (100c ) fe6: 4798 blx r3 fe8: e7fe b.n fe8 fea: bf00 nop fec: 20000000 .word 0x20000000 ff0: 00029a24 .word 0x00029a24 ff4: 20000074 .word 0x20000074 ff8: 20006e04 .word 0x20006e04 ffc: 20000078 .word 0x20000078 1000: e000ed00 .word 0xe000ed00 1004: 00000000 .word 0x00000000 1008: 0001b47d .word 0x0001b47d 100c: 00002199 .word 0x00002199 00001010 : 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 : { 1040: b538 push {r3, r4, r5, lr} ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 1042: 4c05 ldr r4, [pc, #20] ; (1058 ) 1044: 2540 movs r5, #64 ; 0x40 1046: 6165 str r5, [r4, #20] p_gpio_set_port_data(group, mask, (uint32_t)data); 1048: 4b04 ldr r3, [pc, #16] ; (105c ) 104a: 4798 blx r3 104c: 2380 movs r3, #128 ; 0x80 104e: 6163 str r3, [r4, #20] ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 1050: 61a3 str r3, [r4, #24] 1052: 61a5 str r5, [r4, #24] 1054: bd38 pop {r3, r4, r5, pc} 1056: bf00 nop 1058: 41008000 .word 0x41008000 105c: 00001011 .word 0x00001011 00001060 : for(int ind = 0; ind < len; ind++) 1060: b18b cbz r3, 1086 { 1062: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 1066: 460f mov r7, r1 1068: 4606 mov r6, r0 106a: 4614 mov r4, r2 106c: eb02 0543 add.w r5, r2, r3, lsl #1 p_gpio_parallel_write(group, mask, data[ind]); 1070: f8df 8014 ldr.w r8, [pc, #20] ; 1088 1074: f834 2b02 ldrh.w r2, [r4], #2 1078: 4639 mov r1, r7 107a: 4630 mov r0, r6 107c: 47c0 blx r8 for(int ind = 0; ind < len; ind++) 107e: 42ac cmp r4, r5 1080: d1f8 bne.n 1074 1082: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 1086: 4770 bx lr 1088: 00001041 .word 0x00001041 0000108c : void p_gpio_set_port_group_config(enum gpio_port port, const uint32_t mask, p_port_config* config) { 108c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 1090: b083 sub sp, #12 1092: 468b mov fp, r1 1094: 9200 str r2, [sp, #0] for(uint8_t i = 0; i < 32; i++) { if(mask & (1UL << i)) { uint32_t _gpio_pin = GPIO(port, i); 1096: 0140 lsls r0, r0, #5 1098: b2c3 uxtb r3, r0 109a: 9301 str r3, [sp, #4] 109c: 2600 movs r6, #0 ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 109e: f8df 9194 ldr.w r9, [pc, #404] ; 1234 10a2: e065 b.n 1170 ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 10a4: eb09 13c7 add.w r3, r9, r7, lsl #7 10a8: 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)); 10aa: b2aa uxth r2, r5 10ac: 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; 10b0: 629a str r2, [r3, #40] ; 0x28 hri_port_write_WRCONFIG_reg( PORT, port, PORT_WRCONFIG_HWSEL | PORT_WRCONFIG_WRPINCFG | ((mask & 0xffff0000) >> 16)); 10b2: 0c2a lsrs r2, r5, #16 hri_port_write_WRCONFIG_reg( 10b4: f042 4240 orr.w r2, r2, #3221225472 ; 0xc0000000 10b8: 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) { 10ba: 9b00 ldr r3, [sp, #0] 10bc: 781b ldrb r3, [r3, #0] 10be: 2b01 cmp r3, #1 10c0: d077 beq.n 11b2 10c2: b323 cbz r3, 110e 10c4: 2b02 cmp r3, #2 10c6: f000 8084 beq.w 11d2 hri_port_set_PINCFG_PULLEN_bit(PORT, port, pin); hri_port_clear_OUT_reg(PORT, port, 1U << pin); break; default: ASSERT(false); 10ca: 2289 movs r2, #137 ; 0x89 10cc: 4957 ldr r1, [pc, #348] ; (122c ) 10ce: 2000 movs r0, #0 10d0: 4b57 ldr r3, [pc, #348] ; (1230 ) 10d2: 4798 blx r3 10d4: e024 b.n 1120 ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 10d6: eb09 12c7 add.w r2, r9, r7, lsl #7 10da: 6055 str r5, [r2, #4] hri_port_write_WRCONFIG_reg(PORT, port, PORT_WRCONFIG_WRPINCFG | PORT_WRCONFIG_INEN | (mask & 0xffff)); 10dc: b2ab uxth r3, r5 10de: f043 4380 orr.w r3, r3, #1073741824 ; 0x40000000 10e2: f443 3300 orr.w r3, r3, #131072 ; 0x20000 ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; 10e6: 6293 str r3, [r2, #40] ; 0x28 | ((mask & 0xffff0000) >> 16)); 10e8: 0c2b lsrs r3, r5, #16 hri_port_write_WRCONFIG_reg(PORT, 10ea: f043 4340 orr.w r3, r3, #3221225472 ; 0xc0000000 10ee: f443 3300 orr.w r3, r3, #131072 ; 0x20000 10f2: 6293 str r3, [r2, #40] ; 0x28 10f4: e7e1 b.n 10ba ((Port *)hw)->Group[submodule_index].DIRSET.reg = mask; 10f6: eb09 13c7 add.w r3, r9, r7, lsl #7 10fa: 609d str r5, [r3, #8] hri_port_write_WRCONFIG_reg(PORT, port, PORT_WRCONFIG_WRPINCFG | (mask & 0xffff)); 10fc: b2aa uxth r2, r5 10fe: f042 4280 orr.w r2, r2, #1073741824 ; 0x40000000 ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; 1102: 629a str r2, [r3, #40] ; 0x28 PORT, port, PORT_WRCONFIG_HWSEL | PORT_WRCONFIG_WRPINCFG | ((mask & 0xffff0000) >> 16)); 1104: 0c2a lsrs r2, r5, #16 hri_port_write_WRCONFIG_reg( 1106: f042 4240 orr.w r2, r2, #3221225472 ; 0xc0000000 110a: 629a str r2, [r3, #40] ; 0x28 110c: e7d5 b.n 10ba ((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN; 110e: eb09 13c7 add.w r3, r9, r7, lsl #7 1112: 4443 add r3, r8 1114: f893 2040 ldrb.w r2, [r3, #64] ; 0x40 1118: f002 02fb and.w r2, r2, #251 ; 0xfb 111c: 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); 1120: 9b00 ldr r3, [sp, #0] 1122: 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); 1124: 0964 lsrs r4, r4, #5 uint8_t pin = GPIO_PIN(gpio); if (function == GPIO_PIN_FUNCTION_OFF) { 1126: f1b2 3fff cmp.w r2, #4294967295 112a: d062 beq.n 11f2 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 112c: b2e4 uxtb r4, r4 112e: eb09 11c4 add.w r1, r9, r4, lsl #7 1132: 4441 add r1, r8 1134: f891 3040 ldrb.w r3, [r1, #64] ; 0x40 tmp &= ~PORT_PINCFG_PMUXEN; 1138: f003 03fe and.w r3, r3, #254 ; 0xfe tmp |= value << PORT_PINCFG_PMUXEN_Pos; 113c: f043 0301 orr.w r3, r3, #1 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 1140: 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) { 1144: f01a 0f01 tst.w sl, #1 1148: d15e bne.n 1208 tmp = ((Port *)hw)->Group[submodule_index].PMUX[index].reg; 114a: eb09 14c4 add.w r4, r9, r4, lsl #7 114e: eb04 0858 add.w r8, r4, r8, lsr #1 1152: f898 3030 ldrb.w r3, [r8, #48] ; 0x30 tmp &= ~PORT_PMUX_PMUXE_Msk; 1156: f003 03f0 and.w r3, r3, #240 ; 0xf0 tmp |= PORT_PMUX_PMUXE(data); 115a: f002 020f and.w r2, r2, #15 115e: 431a orrs r2, r3 ((Port *)hw)->Group[submodule_index].PMUX[index].reg = tmp; 1160: f888 2030 strb.w r2, [r8, #48] ; 0x30 ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 1164: eb09 17c7 add.w r7, r9, r7, lsl #7 1168: 617d str r5, [r7, #20] 116a: 3601 adds r6, #1 for(uint8_t i = 0; i < 32; i++) 116c: 2e20 cmp r6, #32 116e: d059 beq.n 1224 1170: b2f4 uxtb r4, r6 if(mask & (1UL << i)) 1172: fa2b f306 lsr.w r3, fp, r6 1176: f013 0f01 tst.w r3, #1 117a: d0f6 beq.n 116a uint32_t _gpio_pin = GPIO(port, i); 117c: f004 041f and.w r4, r4, #31 1180: 9b01 ldr r3, [sp, #4] 1182: 441c add r4, r3 gpio_set_pin_direction(_gpio_pin, config->direction); 1184: 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); 1188: ea4f 175a mov.w r7, sl, lsr #5 118c: f00a 081f and.w r8, sl, #31 1190: 2501 movs r5, #1 1192: fa05 f508 lsl.w r5, r5, r8 switch (direction) { 1196: 9b00 ldr r3, [sp, #0] 1198: 785b ldrb r3, [r3, #1] 119a: 2b01 cmp r3, #1 119c: d09b beq.n 10d6 119e: 2b00 cmp r3, #0 11a0: d080 beq.n 10a4 11a2: 2b02 cmp r3, #2 11a4: d0a7 beq.n 10f6 ASSERT(false); 11a6: 2246 movs r2, #70 ; 0x46 11a8: 4920 ldr r1, [pc, #128] ; (122c ) 11aa: 2000 movs r0, #0 11ac: 4b20 ldr r3, [pc, #128] ; (1230 ) 11ae: 4798 blx r3 11b0: e783 b.n 10ba hri_port_clear_DIR_reg(PORT, port, 1U << pin); 11b2: 2301 movs r3, #1 11b4: fa03 f308 lsl.w r3, r3, r8 ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 11b8: eb09 12c7 add.w r2, r9, r7, lsl #7 11bc: 6053 str r3, [r2, #4] ((Port *)hw)->Group[submodule_index].PINCFG[index].reg |= PORT_PINCFG_PULLEN; 11be: eb02 0008 add.w r0, r2, r8 11c2: f890 1040 ldrb.w r1, [r0, #64] ; 0x40 11c6: f041 0104 orr.w r1, r1, #4 11ca: f880 1040 strb.w r1, [r0, #64] ; 0x40 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 11ce: 6193 str r3, [r2, #24] 11d0: e7a6 b.n 1120 hri_port_clear_DIR_reg(PORT, port, 1U << pin); 11d2: 2301 movs r3, #1 11d4: fa03 f308 lsl.w r3, r3, r8 ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 11d8: eb09 12c7 add.w r2, r9, r7, lsl #7 11dc: 6053 str r3, [r2, #4] ((Port *)hw)->Group[submodule_index].PINCFG[index].reg |= PORT_PINCFG_PULLEN; 11de: eb02 0008 add.w r0, r2, r8 11e2: f890 1040 ldrb.w r1, [r0, #64] ; 0x40 11e6: f041 0104 orr.w r1, r1, #4 11ea: f880 1040 strb.w r1, [r0, #64] ; 0x40 ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 11ee: 6153 str r3, [r2, #20] 11f0: e796 b.n 1120 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 11f2: b2e4 uxtb r4, r4 11f4: eb09 14c4 add.w r4, r9, r4, lsl #7 11f8: 44a0 add r8, r4 11fa: f898 3040 ldrb.w r3, [r8, #64] ; 0x40 tmp &= ~PORT_PINCFG_PMUXEN; 11fe: f003 03fe and.w r3, r3, #254 ; 0xfe ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 1202: f888 3040 strb.w r3, [r8, #64] ; 0x40 1206: e7ad b.n 1164 tmp = ((Port *)hw)->Group[submodule_index].PMUX[index].reg; 1208: eb09 14c4 add.w r4, r9, r4, lsl #7 120c: eb04 0858 add.w r8, r4, r8, lsr #1 1210: f898 3030 ldrb.w r3, [r8, #48] ; 0x30 tmp &= ~PORT_PMUX_PMUXO_Msk; 1214: f003 030f and.w r3, r3, #15 tmp |= PORT_PMUX_PMUXO(data); 1218: ea43 1202 orr.w r2, r3, r2, lsl #4 121c: b2d2 uxtb r2, r2 ((Port *)hw)->Group[submodule_index].PMUX[index].reg = tmp; 121e: f888 2030 strb.w r2, [r8, #48] ; 0x30 1222: e79f b.n 1164 gpio_set_pin_level(_gpio_pin, 0); } } } 1224: b003 add sp, #12 1226: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 122a: bf00 nop 122c: 0001b518 .word 0x0001b518 1230: 000019bd .word 0x000019bd 1234: 41008000 .word 0x41008000 00001238 : { 1238: b570 push {r4, r5, r6, lr} 123a: b082 sub sp, #8 memset(&data_config, 0, sizeof(data_config)); 123c: 2300 movs r3, #0 123e: 9300 str r3, [sp, #0] data_config.direction = GPIO_DIRECTION_OUT; 1240: 2302 movs r3, #2 1242: f88d 3001 strb.w r3, [sp, #1] data_config.function = GPIO_PIN_FUNCTION_OFF; 1246: f04f 33ff mov.w r3, #4294967295 124a: 9301 str r3, [sp, #4] p_gpio_set_port_group_config(SSD1963_TFT_DATA_PORT, SSD1963_TFT_DATA_MASK, &data_config); 124c: 466a mov r2, sp 124e: 493f ldr r1, [pc, #252] ; (134c ) 1250: 2001 movs r0, #1 1252: 4b3f ldr r3, [pc, #252] ; (1350 ) 1254: 4798 blx r3 ((Port *)hw)->Group[submodule_index].DIRSET.reg = mask; 1256: 4b3f ldr r3, [pc, #252] ; (1354 ) 1258: 2640 movs r6, #64 ; 0x40 125a: 609e str r6, [r3, #8] ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; 125c: 4a3e ldr r2, [pc, #248] ; (1358 ) 125e: 629a str r2, [r3, #40] ; 0x28 1260: f04f 4240 mov.w r2, #3221225472 ; 0xc0000000 1264: 629a str r2, [r3, #40] ; 0x28 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN; 1266: f893 1046 ldrb.w r1, [r3, #70] ; 0x46 126a: f001 01fb and.w r1, r1, #251 ; 0xfb 126e: f883 1046 strb.w r1, [r3, #70] ; 0x46 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 1272: f893 1046 ldrb.w r1, [r3, #70] ; 0x46 tmp &= ~PORT_PINCFG_PMUXEN; 1276: f001 01fe and.w r1, r1, #254 ; 0xfe ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 127a: f883 1046 strb.w r1, [r3, #70] ; 0x46 ((Port *)hw)->Group[submodule_index].DIRSET.reg = mask; 127e: 2510 movs r5, #16 1280: 609d str r5, [r3, #8] ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; 1282: 4936 ldr r1, [pc, #216] ; (135c ) 1284: 6299 str r1, [r3, #40] ; 0x28 1286: 629a str r2, [r3, #40] ; 0x28 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN; 1288: f893 1044 ldrb.w r1, [r3, #68] ; 0x44 128c: f001 01fb and.w r1, r1, #251 ; 0xfb 1290: f883 1044 strb.w r1, [r3, #68] ; 0x44 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 1294: f893 1044 ldrb.w r1, [r3, #68] ; 0x44 tmp &= ~PORT_PINCFG_PMUXEN; 1298: f001 01fe and.w r1, r1, #254 ; 0xfe ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 129c: f883 1044 strb.w r1, [r3, #68] ; 0x44 ((Port *)hw)->Group[submodule_index].DIRSET.reg = mask; 12a0: 2408 movs r4, #8 12a2: 609c str r4, [r3, #8] ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; 12a4: 492e ldr r1, [pc, #184] ; (1360 ) 12a6: 6299 str r1, [r3, #40] ; 0x28 12a8: 629a str r2, [r3, #40] ; 0x28 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN; 12aa: f893 1043 ldrb.w r1, [r3, #67] ; 0x43 12ae: f001 01fb and.w r1, r1, #251 ; 0xfb 12b2: f883 1043 strb.w r1, [r3, #67] ; 0x43 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 12b6: f893 1043 ldrb.w r1, [r3, #67] ; 0x43 tmp &= ~PORT_PINCFG_PMUXEN; 12ba: f001 01fe and.w r1, r1, #254 ; 0xfe ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 12be: f883 1043 strb.w r1, [r3, #67] ; 0x43 ((Port *)hw)->Group[submodule_index].DIRSET.reg = mask; 12c2: 2120 movs r1, #32 12c4: 6099 str r1, [r3, #8] ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; 12c6: f101 4180 add.w r1, r1, #1073741824 ; 0x40000000 12ca: 6299 str r1, [r3, #40] ; 0x28 12cc: 629a str r2, [r3, #40] ; 0x28 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN; 12ce: f893 1045 ldrb.w r1, [r3, #69] ; 0x45 12d2: f001 01fb and.w r1, r1, #251 ; 0xfb 12d6: f883 1045 strb.w r1, [r3, #69] ; 0x45 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 12da: f893 1045 ldrb.w r1, [r3, #69] ; 0x45 tmp &= ~PORT_PINCFG_PMUXEN; 12de: f001 01fe and.w r1, r1, #254 ; 0xfe ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 12e2: f883 1045 strb.w r1, [r3, #69] ; 0x45 ((Port *)hw)->Group[submodule_index].DIRSET.reg = mask; 12e6: 2080 movs r0, #128 ; 0x80 12e8: 6098 str r0, [r3, #8] ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; 12ea: 491e ldr r1, [pc, #120] ; (1364 ) 12ec: 6299 str r1, [r3, #40] ; 0x28 12ee: 629a str r2, [r3, #40] ; 0x28 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN; 12f0: f893 2047 ldrb.w r2, [r3, #71] ; 0x47 12f4: f002 02fb and.w r2, r2, #251 ; 0xfb 12f8: f883 2047 strb.w r2, [r3, #71] ; 0x47 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 12fc: f893 2047 ldrb.w r2, [r3, #71] ; 0x47 tmp &= ~PORT_PINCFG_PMUXEN; 1300: f002 02fe and.w r2, r2, #254 ; 0xfe ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 1304: f883 2047 strb.w r2, [r3, #71] ; 0x47 ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 1308: f44f 7280 mov.w r2, #256 ; 0x100 130c: f8c3 2184 str.w r2, [r3, #388] ; 0x184 ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; 1310: f501 3100 add.w r1, r1, #131072 ; 0x20000 1314: 3180 adds r1, #128 ; 0x80 1316: f8c3 11a8 str.w r1, [r3, #424] ; 0x1a8 131a: 4913 ldr r1, [pc, #76] ; (1368 ) 131c: f8c3 11a8 str.w r1, [r3, #424] ; 0x1a8 ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 1320: f8c3 2184 str.w r2, [r3, #388] ; 0x184 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg |= PORT_PINCFG_PULLEN; 1324: f893 11c8 ldrb.w r1, [r3, #456] ; 0x1c8 1328: f041 0104 orr.w r1, r1, #4 132c: f883 11c8 strb.w r1, [r3, #456] ; 0x1c8 ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 1330: f8c3 2194 str.w r2, [r3, #404] ; 0x194 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 1334: f893 21c8 ldrb.w r2, [r3, #456] ; 0x1c8 tmp &= ~PORT_PINCFG_PMUXEN; 1338: f002 02fe and.w r2, r2, #254 ; 0xfe ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 133c: f883 21c8 strb.w r2, [r3, #456] ; 0x1c8 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 1340: 619e str r6, [r3, #24] 1342: 619d str r5, [r3, #24] 1344: 619c str r4, [r3, #24] 1346: 6198 str r0, [r3, #24] } 1348: b002 add sp, #8 134a: bd70 pop {r4, r5, r6, pc} 134c: 1c03c3f7 .word 0x1c03c3f7 1350: 0000108d .word 0x0000108d 1354: 41008000 .word 0x41008000 1358: 40000040 .word 0x40000040 135c: 40000010 .word 0x40000010 1360: 40000008 .word 0x40000008 1364: 40000080 .word 0x40000080 1368: c0020000 .word 0xc0020000 0000136c : #include "p_i2c.h" struct i2c_m_sync_desc p_i2c_master; void p_i2c_init(void) { 136c: 4770 bx lr ... 00001370 : 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) { 1370: b508 push {r3, lr} sys_time++; 1372: 4906 ldr r1, [pc, #24] ; (138c ) 1374: e9d1 2300 ldrd r2, r3, [r1] 1378: 3201 adds r2, #1 137a: f143 0300 adc.w r3, r3, #0 137e: e9c1 2300 strd r2, r3, [r1] lv_tick_inc(1); 1382: 2001 movs r0, #1 1384: 4b02 ldr r3, [pc, #8] ; (1390 ) 1386: 4798 blx r3 1388: bd08 pop {r3, pc} 138a: bf00 nop 138c: 20000098 .word 0x20000098 1390: 0001102d .word 0x0001102d 00001394 : //timer_add_task(&p_tcc_inst, &TIMER_0_task2); timer_start(&p_tcc_inst); } void p_tcc_init(void) { 1394: b510 push {r4, lr} delay_init(SysTick); 1396: 4811 ldr r0, [pc, #68] ; (13dc ) 1398: 4b11 ldr r3, [pc, #68] ; (13e0 ) 139a: 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; 139c: 4a11 ldr r2, [pc, #68] ; (13e4 ) 139e: 6953 ldr r3, [r2, #20] 13a0: f443 4380 orr.w r3, r3, #16384 ; 0x4000 13a4: 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; 13a6: 2240 movs r2, #64 ; 0x40 13a8: 4b0f ldr r3, [pc, #60] ; (13e8 ) 13aa: 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()); 13ae: 4b0f ldr r3, [pc, #60] ; (13ec ) 13b0: 4798 blx r3 13b2: 4c0f ldr r4, [pc, #60] ; (13f0 ) 13b4: 4602 mov r2, r0 13b6: 490f ldr r1, [pc, #60] ; (13f4 ) 13b8: 4620 mov r0, r4 13ba: 4b0f ldr r3, [pc, #60] ; (13f8 ) 13bc: 4798 blx r3 TIMER_0_task1.interval = 1; 13be: 490f ldr r1, [pc, #60] ; (13fc ) 13c0: 2301 movs r3, #1 13c2: 610b str r3, [r1, #16] TIMER_0_task1.cb = TIMER_0_task1_cb; 13c4: 4a0e ldr r2, [pc, #56] ; (1400 ) 13c6: 614a str r2, [r1, #20] TIMER_0_task1.mode = TIMER_TASK_REPEAT; 13c8: 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); 13ca: 3108 adds r1, #8 13cc: 4620 mov r0, r4 13ce: 4b0d ldr r3, [pc, #52] ; (1404 ) 13d0: 4798 blx r3 //timer_add_task(&p_tcc_inst, &TIMER_0_task2); timer_start(&p_tcc_inst); 13d2: 4620 mov r0, r4 13d4: 4b0c ldr r3, [pc, #48] ; (1408 ) 13d6: 4798 blx r3 13d8: bd10 pop {r4, pc} 13da: bf00 nop 13dc: e000e010 .word 0xe000e010 13e0: 000014d5 .word 0x000014d5 13e4: 40000800 .word 0x40000800 13e8: 40001c00 .word 0x40001c00 13ec: 00002133 .word 0x00002133 13f0: 20006c04 .word 0x20006c04 13f4: 40003800 .word 0x40003800 13f8: 00001631 .word 0x00001631 13fc: 20000098 .word 0x20000098 1400: 00001371 .word 0x00001371 1404: 000016a9 .word 0x000016a9 1408: 0000166d .word 0x0000166d 0000140c : 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) { 140c: b530 push {r4, r5, lr} 140e: b083 sub sp, #12 1410: 4b1f ldr r3, [pc, #124] ; (1490 ) 1412: 2240 movs r2, #64 ; 0x40 1414: f8c3 20dc str.w r2, [r3, #220] ; 0xdc 1418: 2243 movs r2, #67 ; 0x43 141a: 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; 141e: 4a1d ldr r2, [pc, #116] ; (1494 ) 1420: 6993 ldr r3, [r2, #24] 1422: f443 7300 orr.w r3, r3, #512 ; 0x200 1426: 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); 1428: 4c1b ldr r4, [pc, #108] ; (1498 ) 142a: 2300 movs r3, #0 142c: 9300 str r3, [sp, #0] 142e: 2310 movs r3, #16 1430: 4a1a ldr r2, [pc, #104] ; (149c ) 1432: 491b ldr r1, [pc, #108] ; (14a0 ) 1434: 4620 mov r0, r4 1436: 4d1b ldr r5, [pc, #108] ; (14a4 ) 1438: 47a8 blx r5 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 143a: 4b1b ldr r3, [pc, #108] ; (14a8 ) 143c: f893 20d8 ldrb.w r2, [r3, #216] ; 0xd8 tmp &= ~PORT_PINCFG_PMUXEN; 1440: f002 02fe and.w r2, r2, #254 ; 0xfe tmp |= value << PORT_PINCFG_PMUXEN_Pos; 1444: f042 0201 orr.w r2, r2, #1 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 1448: f883 20d8 strb.w r2, [r3, #216] ; 0xd8 tmp = ((Port *)hw)->Group[submodule_index].PMUX[index].reg; 144c: f893 20bc ldrb.w r2, [r3, #188] ; 0xbc tmp &= ~PORT_PMUX_PMUXE_Msk; 1450: f002 02f0 and.w r2, r2, #240 ; 0xf0 tmp |= PORT_PMUX_PMUXE(data); 1454: f042 0203 orr.w r2, r2, #3 ((Port *)hw)->Group[submodule_index].PMUX[index].reg = tmp; 1458: f883 20bc strb.w r2, [r3, #188] ; 0xbc tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 145c: f893 20d9 ldrb.w r2, [r3, #217] ; 0xd9 tmp &= ~PORT_PINCFG_PMUXEN; 1460: f002 02fe and.w r2, r2, #254 ; 0xfe tmp |= value << PORT_PINCFG_PMUXEN_Pos; 1464: f042 0201 orr.w r2, r2, #1 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 1468: f883 20d9 strb.w r2, [r3, #217] ; 0xd9 tmp = ((Port *)hw)->Group[submodule_index].PMUX[index].reg; 146c: f893 20bc ldrb.w r2, [r3, #188] ; 0xbc tmp &= ~PORT_PMUX_PMUXO_Msk; 1470: f002 020f and.w r2, r2, #15 tmp |= PORT_PMUX_PMUXO(data); 1474: f042 0230 orr.w r2, r2, #48 ; 0x30 ((Port *)hw)->Group[submodule_index].PMUX[index].reg = tmp; 1478: 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); 147c: 4620 mov r0, r4 147e: 4b0b ldr r3, [pc, #44] ; (14ac ) 1480: 4798 blx r3 io_write(&p_usart_debug_inst.io, example_USART_0, 12); 1482: 220c movs r2, #12 1484: 490a ldr r1, [pc, #40] ; (14b0 ) 1486: 4620 mov r0, r4 1488: 4b0a ldr r3, [pc, #40] ; (14b4 ) 148a: 4798 blx r3 } 148c: b003 add sp, #12 148e: bd30 pop {r4, r5, pc} 1490: 40001c00 .word 0x40001c00 1494: 40000800 .word 0x40000800 1498: 20006c20 .word 0x20006c20 149c: 200000b4 .word 0x200000b4 14a0: 41012000 .word 0x41012000 14a4: 00001901 .word 0x00001901 14a8: 41008000 .word 0x41008000 14ac: 00001991 .word 0x00001991 14b0: 20000004 .word 0x20000004 14b4: 00001529 .word 0x00001529 000014b8 : __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); 14b8: f3ef 8310 mrs r3, PRIMASK /** * \brief Disable interrupts, enter critical section */ void atomic_enter_critical(hal_atomic_t volatile *atomic) { *atomic = __get_PRIMASK(); 14bc: 6003 str r3, [r0, #0] __ASM volatile ("cpsid i" : : : "memory"); 14be: 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"); 14c0: f3bf 8f5f dmb sy 14c4: 4770 bx lr 000014c6 : 14c6: f3bf 8f5f dmb sy * \brief Exit atomic section */ void atomic_leave_critical(hal_atomic_t volatile *atomic) { __DMB(); __set_PRIMASK(*atomic); 14ca: 6803 ldr r3, [r0, #0] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); 14cc: f383 8810 msr PRIMASK, r3 14d0: 4770 bx lr ... 000014d4 : /** * \brief Initialize Delay driver */ void delay_init(void *const hw) { 14d4: b508 push {r3, lr} _delay_init(hardware = hw); 14d6: 4b02 ldr r3, [pc, #8] ; (14e0 ) 14d8: 6018 str r0, [r3, #0] 14da: 4b02 ldr r3, [pc, #8] ; (14e4 ) 14dc: 4798 blx r3 14de: bd08 pop {r3, pc} 14e0: 200000c4 .word 0x200000c4 14e4: 00001b71 .word 0x00001b71 000014e8 : /** * \brief Perform delay in us */ void delay_us(const uint16_t us) { 14e8: b510 push {r4, lr} _delay_cycles(hardware, _get_cycles_for_us(us)); 14ea: 4b04 ldr r3, [pc, #16] ; (14fc ) 14ec: 681c ldr r4, [r3, #0] 14ee: 4b04 ldr r3, [pc, #16] ; (1500 ) 14f0: 4798 blx r3 14f2: 4601 mov r1, r0 14f4: 4620 mov r0, r4 14f6: 4b03 ldr r3, [pc, #12] ; (1504 ) 14f8: 4798 blx r3 14fa: bd10 pop {r4, pc} 14fc: 200000c4 .word 0x200000c4 1500: 00001b39 .word 0x00001b39 1504: 00001b79 .word 0x00001b79 00001508 : /** * \brief Perform delay in ms */ void delay_ms(const uint16_t ms) { 1508: b510 push {r4, lr} _delay_cycles(hardware, _get_cycles_for_ms(ms)); 150a: 4b04 ldr r3, [pc, #16] ; (151c ) 150c: 681c ldr r4, [r3, #0] 150e: 4b04 ldr r3, [pc, #16] ; (1520 ) 1510: 4798 blx r3 1512: 4601 mov r1, r0 1514: 4620 mov r0, r4 1516: 4b03 ldr r3, [pc, #12] ; (1524 ) 1518: 4798 blx r3 151a: bd10 pop {r4, pc} 151c: 200000c4 .word 0x200000c4 1520: 00001b51 .word 0x00001b51 1524: 00001b79 .word 0x00001b79 00001528 : /** * \brief I/O write interface */ int32_t io_write(struct io_descriptor *const io_descr, const uint8_t *const buf, const uint16_t length) { 1528: b570 push {r4, r5, r6, lr} 152a: 460d mov r5, r1 152c: 4616 mov r6, r2 ASSERT(io_descr && buf); 152e: 4604 mov r4, r0 1530: b160 cbz r0, 154c 1532: 1c08 adds r0, r1, #0 1534: bf18 it ne 1536: 2001 movne r0, #1 1538: 2234 movs r2, #52 ; 0x34 153a: 4905 ldr r1, [pc, #20] ; (1550 ) 153c: 4b05 ldr r3, [pc, #20] ; (1554 ) 153e: 4798 blx r3 return io_descr->write(io_descr, buf, length); 1540: 6823 ldr r3, [r4, #0] 1542: 4632 mov r2, r6 1544: 4629 mov r1, r5 1546: 4620 mov r0, r4 1548: 4798 blx r3 } 154a: bd70 pop {r4, r5, r6, pc} 154c: 2000 movs r0, #0 154e: e7f3 b.n 1538 1550: 0001b534 .word 0x0001b534 1554: 000019bd .word 0x000019bd 00001558 : * \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) { 1558: b5f8 push {r3, r4, r5, r6, r7, lr} 155a: 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; 155c: 6807 ldr r7, [r0, #0] struct timer_task *it, *prev = NULL, *head = (struct timer_task *)list_get_head(list); if (!head) { 155e: b12f cbz r7, 156c 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) 1560: 688d ldr r5, [r1, #8] 1562: 463c mov r4, r7 1564: 2600 movs r6, #0 time_left = it->interval - (0xFFFFFFFF - it->time_label) - time; 1566: f1c2 0e01 rsb lr, r2, #1 156a: e00b b.n 1584 list_insert_as_head(list, new_task); 156c: 4b0e ldr r3, [pc, #56] ; (15a8 ) 156e: 4798 blx r3 return; 1570: bdf8 pop {r3, r4, r5, r6, r7, pc} time_left = it->interval - (0xFFFFFFFF - it->time_label) - time; 1572: 4473 add r3, lr 1574: 68a0 ldr r0, [r4, #8] 1576: 4403 add r3, r0 if (time_left >= new_task->interval) 1578: 42ab cmp r3, r5 157a: d20a bcs.n 1592 * \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; 157c: 6823 ldr r3, [r4, #0] 157e: 4626 mov r6, r4 for (it = head; it; it = (struct timer_task *)list_get_next_element(it)) { 1580: b153 cbz r3, 1598 1582: 461c mov r4, r3 if (it->time_label <= time) { 1584: 6863 ldr r3, [r4, #4] 1586: 4293 cmp r3, r2 1588: d8f3 bhi.n 1572 time_left = it->interval - (time - it->time_label); 158a: 68a0 ldr r0, [r4, #8] 158c: 4403 add r3, r0 158e: 1a9b subs r3, r3, r2 1590: e7f2 b.n 1578 break; prev = it; } if (it == head) { 1592: 42a7 cmp r7, r4 1594: d004 beq.n 15a0 1596: 4634 mov r4, r6 list_insert_as_head(list, new_task); } else { list_insert_after(prev, new_task); 1598: 4620 mov r0, r4 159a: 4b04 ldr r3, [pc, #16] ; (15ac ) 159c: 4798 blx r3 159e: bdf8 pop {r3, r4, r5, r6, r7, pc} list_insert_as_head(list, new_task); 15a0: 4660 mov r0, ip 15a2: 4b01 ldr r3, [pc, #4] ; (15a8 ) 15a4: 4798 blx r3 15a6: bdf8 pop {r3, r4, r5, r6, r7, pc} 15a8: 000019e5 .word 0x000019e5 15ac: 00001a11 .word 0x00001a11 000015b0 : /** * \internal Process interrupts */ static void timer_process_counted(struct _timer_device *device) { 15b0: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} return (void *)list->head; 15b4: 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; 15b6: 6907 ldr r7, [r0, #16] 15b8: 3701 adds r7, #1 15ba: 6107 str r7, [r0, #16] if ((timer->flags & TIMER_FLAG_QUEUE_IS_TAKEN) || (timer->flags & TIMER_FLAG_INTERRUPT_TRIGERRED)) { 15bc: 7e03 ldrb r3, [r0, #24] 15be: f013 0f01 tst.w r3, #1 15c2: d113 bne.n 15ec 15c4: 7e03 ldrb r3, [r0, #24] 15c6: f013 0f02 tst.w r3, #2 15ca: d10f bne.n 15ec timer->flags |= TIMER_FLAG_INTERRUPT_TRIGERRED; return; } while (it && ((time - it->time_label) >= it->interval)) { 15cc: b354 cbz r4, 1624 15ce: 6863 ldr r3, [r4, #4] 15d0: 1afb subs r3, r7, r3 15d2: 68a2 ldr r2, [r4, #8] 15d4: 4293 cmp r3, r2 15d6: d307 bcc.n 15e8 15d8: 4606 mov r6, r0 struct timer_task *tmp = it; list_remove_head(&timer->tasks); 15da: f100 0814 add.w r8, r0, #20 15de: f8df 9048 ldr.w r9, [pc, #72] ; 1628 if (TIMER_TASK_REPEAT == tmp->mode) { tmp->time_label = time; timer_add_timer_task(&timer->tasks, tmp, time); 15e2: f8df a048 ldr.w sl, [pc, #72] ; 162c 15e6: e012 b.n 160e 15e8: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} timer->flags |= TIMER_FLAG_INTERRUPT_TRIGERRED; 15ec: 7e03 ldrb r3, [r0, #24] 15ee: f043 0302 orr.w r3, r3, #2 15f2: 7603 strb r3, [r0, #24] return; 15f4: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 15f8: 6975 ldr r5, [r6, #20] } it = (struct timer_task *)list_get_head(&timer->tasks); tmp->cb(tmp); 15fa: 68e3 ldr r3, [r4, #12] 15fc: 4620 mov r0, r4 15fe: 4798 blx r3 while (it && ((time - it->time_label) >= it->interval)) { 1600: b185 cbz r5, 1624 it = (struct timer_task *)list_get_head(&timer->tasks); 1602: 462c mov r4, r5 while (it && ((time - it->time_label) >= it->interval)) { 1604: 686b ldr r3, [r5, #4] 1606: 1afb subs r3, r7, r3 1608: 68aa ldr r2, [r5, #8] 160a: 4293 cmp r3, r2 160c: d30a bcc.n 1624 list_remove_head(&timer->tasks); 160e: 4640 mov r0, r8 1610: 47c8 blx r9 if (TIMER_TASK_REPEAT == tmp->mode) { 1612: 7c23 ldrb r3, [r4, #16] 1614: 2b01 cmp r3, #1 1616: d1ef bne.n 15f8 tmp->time_label = time; 1618: 6067 str r7, [r4, #4] timer_add_timer_task(&timer->tasks, tmp, time); 161a: 463a mov r2, r7 161c: 4621 mov r1, r4 161e: 4640 mov r0, r8 1620: 47d0 blx sl 1622: e7e9 b.n 15f8 1624: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 1628: 00001a19 .word 0x00001a19 162c: 00001559 .word 0x00001559 00001630 : { 1630: b538 push {r3, r4, r5, lr} 1632: 460d mov r5, r1 ASSERT(descr && hw); 1634: 4604 mov r4, r0 1636: b178 cbz r0, 1658 1638: 1c08 adds r0, r1, #0 163a: bf18 it ne 163c: 2001 movne r0, #1 163e: 223b movs r2, #59 ; 0x3b 1640: 4906 ldr r1, [pc, #24] ; (165c ) 1642: 4b07 ldr r3, [pc, #28] ; (1660 ) 1644: 4798 blx r3 _timer_init(&descr->device, hw); 1646: 4629 mov r1, r5 1648: 4620 mov r0, r4 164a: 4b06 ldr r3, [pc, #24] ; (1664 ) 164c: 4798 blx r3 descr->time = 0; 164e: 2000 movs r0, #0 1650: 6120 str r0, [r4, #16] descr->device.timer_cb.period_expired = timer_process_counted; 1652: 4b05 ldr r3, [pc, #20] ; (1668 ) 1654: 6023 str r3, [r4, #0] } 1656: bd38 pop {r3, r4, r5, pc} 1658: 2000 movs r0, #0 165a: e7f0 b.n 163e 165c: 0001b548 .word 0x0001b548 1660: 000019bd .word 0x000019bd 1664: 00001f65 .word 0x00001f65 1668: 000015b1 .word 0x000015b1 0000166c : { 166c: b510 push {r4, lr} ASSERT(descr); 166e: 4604 mov r4, r0 1670: 2253 movs r2, #83 ; 0x53 1672: 4909 ldr r1, [pc, #36] ; (1698 ) 1674: 3000 adds r0, #0 1676: bf18 it ne 1678: 2001 movne r0, #1 167a: 4b08 ldr r3, [pc, #32] ; (169c ) 167c: 4798 blx r3 if (_timer_is_started(&descr->device)) { 167e: 4620 mov r0, r4 1680: 4b07 ldr r3, [pc, #28] ; (16a0 ) 1682: 4798 blx r3 1684: b920 cbnz r0, 1690 _timer_start(&descr->device); 1686: 4620 mov r0, r4 1688: 4b06 ldr r3, [pc, #24] ; (16a4 ) 168a: 4798 blx r3 return ERR_NONE; 168c: 2000 movs r0, #0 168e: bd10 pop {r4, pc} return ERR_DENIED; 1690: f06f 0010 mvn.w r0, #16 } 1694: bd10 pop {r4, pc} 1696: bf00 nop 1698: 0001b548 .word 0x0001b548 169c: 000019bd .word 0x000019bd 16a0: 00002121 .word 0x00002121 16a4: 0000210d .word 0x0000210d 000016a8 : { 16a8: b570 push {r4, r5, r6, lr} 16aa: b082 sub sp, #8 16ac: 460d mov r5, r1 ASSERT(descr && task); 16ae: 4604 mov r4, r0 16b0: b318 cbz r0, 16fa 16b2: 1c08 adds r0, r1, #0 16b4: bf18 it ne 16b6: 2001 movne r0, #1 16b8: 227a movs r2, #122 ; 0x7a 16ba: 491e ldr r1, [pc, #120] ; (1734 ) 16bc: 4b1e ldr r3, [pc, #120] ; (1738 ) 16be: 4798 blx r3 descr->flags |= TIMER_FLAG_QUEUE_IS_TAKEN; 16c0: 7e23 ldrb r3, [r4, #24] 16c2: f043 0301 orr.w r3, r3, #1 16c6: 7623 strb r3, [r4, #24] if (is_list_element(&descr->tasks, task)) { 16c8: f104 0614 add.w r6, r4, #20 16cc: 4629 mov r1, r5 16ce: 4630 mov r0, r6 16d0: 4b1a ldr r3, [pc, #104] ; (173c ) 16d2: 4798 blx r3 16d4: b998 cbnz r0, 16fe task->time_label = descr->time; 16d6: 6923 ldr r3, [r4, #16] 16d8: 606b str r3, [r5, #4] timer_add_timer_task(&descr->tasks, task, descr->time); 16da: 6922 ldr r2, [r4, #16] 16dc: 4629 mov r1, r5 16de: 4630 mov r0, r6 16e0: 4b17 ldr r3, [pc, #92] ; (1740 ) 16e2: 4798 blx r3 descr->flags &= ~TIMER_FLAG_QUEUE_IS_TAKEN; 16e4: 7e23 ldrb r3, [r4, #24] 16e6: f003 03fe and.w r3, r3, #254 ; 0xfe 16ea: 7623 strb r3, [r4, #24] if (descr->flags & TIMER_FLAG_INTERRUPT_TRIGERRED) { 16ec: 7e23 ldrb r3, [r4, #24] 16ee: f013 0f02 tst.w r3, #2 16f2: d110 bne.n 1716 return ERR_NONE; 16f4: 2000 movs r0, #0 } 16f6: b002 add sp, #8 16f8: bd70 pop {r4, r5, r6, pc} 16fa: 2000 movs r0, #0 16fc: e7dc b.n 16b8 descr->flags &= ~TIMER_FLAG_QUEUE_IS_TAKEN; 16fe: 7e23 ldrb r3, [r4, #24] 1700: f003 03fe and.w r3, r3, #254 ; 0xfe 1704: 7623 strb r3, [r4, #24] ASSERT(false); 1706: 227f movs r2, #127 ; 0x7f 1708: 490a ldr r1, [pc, #40] ; (1734 ) 170a: 2000 movs r0, #0 170c: 4b0a ldr r3, [pc, #40] ; (1738 ) 170e: 4798 blx r3 return ERR_ALREADY_INITIALIZED; 1710: f06f 0011 mvn.w r0, #17 1714: e7ef b.n 16f6 CRITICAL_SECTION_ENTER() 1716: a801 add r0, sp, #4 1718: 4b0a ldr r3, [pc, #40] ; (1744 ) 171a: 4798 blx r3 descr->flags &= ~TIMER_FLAG_INTERRUPT_TRIGERRED; 171c: 7e23 ldrb r3, [r4, #24] 171e: f003 03fd and.w r3, r3, #253 ; 0xfd 1722: 7623 strb r3, [r4, #24] _timer_set_irq(&descr->device); 1724: 4620 mov r0, r4 1726: 4b08 ldr r3, [pc, #32] ; (1748 ) 1728: 4798 blx r3 CRITICAL_SECTION_LEAVE() 172a: a801 add r0, sp, #4 172c: 4b07 ldr r3, [pc, #28] ; (174c ) 172e: 4798 blx r3 return ERR_NONE; 1730: 2000 movs r0, #0 1732: e7e0 b.n 16f6 1734: 0001b548 .word 0x0001b548 1738: 000019bd .word 0x000019bd 173c: 000019c3 .word 0x000019c3 1740: 00001559 .word 0x00001559 1744: 000014b9 .word 0x000014b9 1748: 00002139 .word 0x00002139 174c: 000014c7 .word 0x000014c7 00001750 : * \brief Process completion of data sending * * \param[in] device The pointer to device structure */ static void usart_transmission_complete(struct _usart_async_device *device) { 1750: b508 push {r3, lr} struct usart_async_descriptor *descr = CONTAINER_OF(device, struct usart_async_descriptor, device); descr->stat = 0; 1752: 2300 movs r3, #0 1754: 6283 str r3, [r0, #40] ; 0x28 if (descr->usart_cb.tx_done) { 1756: 69c3 ldr r3, [r0, #28] 1758: b11b cbz r3, 1762 175a: f1a0 0208 sub.w r2, r0, #8 descr->usart_cb.tx_done(descr); 175e: 4610 mov r0, r2 1760: 4798 blx r3 1762: bd08 pop {r3, pc} 00001764 : * \brief Process error interrupt * * \param[in] device The pointer to device structure */ static void usart_error(struct _usart_async_device *device) { 1764: b508 push {r3, lr} struct usart_async_descriptor *descr = CONTAINER_OF(device, struct usart_async_descriptor, device); descr->stat = 0; 1766: 2300 movs r3, #0 1768: 6283 str r3, [r0, #40] ; 0x28 if (descr->usart_cb.error) { 176a: 6a43 ldr r3, [r0, #36] ; 0x24 176c: b11b cbz r3, 1776 176e: f1a0 0208 sub.w r2, r0, #8 descr->usart_cb.error(descr); 1772: 4610 mov r0, r2 1774: 4798 blx r3 1776: bd08 pop {r3, pc} 00001778 : { 1778: b538 push {r3, r4, r5, lr} 177a: 4604 mov r4, r0 struct usart_async_descriptor *descr = CONTAINER_OF(device, struct usart_async_descriptor, device); 177c: f1a0 0508 sub.w r5, r0, #8 ringbuffer_put(&descr->rx, data); 1780: 302c adds r0, #44 ; 0x2c 1782: 4b03 ldr r3, [pc, #12] ; (1790 ) 1784: 4798 blx r3 if (descr->usart_cb.rx_done) { 1786: 6a23 ldr r3, [r4, #32] 1788: b10b cbz r3, 178e descr->usart_cb.rx_done(descr); 178a: 4628 mov r0, r5 178c: 4798 blx r3 178e: bd38 pop {r3, r4, r5, pc} 1790: 00001ab9 .word 0x00001ab9 00001794 : { 1794: b570 push {r4, r5, r6, lr} 1796: 460e mov r6, r1 1798: 4615 mov r5, r2 ASSERT(descr && buf && length); 179a: 4604 mov r4, r0 179c: b1e0 cbz r0, 17d8 179e: b1e9 cbz r1, 17dc 17a0: 1c10 adds r0, r2, #0 17a2: bf18 it ne 17a4: 2001 movne r0, #1 17a6: f240 123b movw r2, #315 ; 0x13b 17aa: 490f ldr r1, [pc, #60] ; (17e8 ) 17ac: 4b0f ldr r3, [pc, #60] ; (17ec ) 17ae: 4798 blx r3 if (descr->tx_por != descr->tx_buffer_length) { 17b0: f8b4 2044 ldrh.w r2, [r4, #68] ; 0x44 17b4: f8b4 304c ldrh.w r3, [r4, #76] ; 0x4c 17b8: 429a cmp r2, r3 17ba: d111 bne.n 17e0 descr->tx_buffer = (uint8_t *)buf; 17bc: 64a6 str r6, [r4, #72] ; 0x48 descr->tx_buffer_length = length; 17be: f8a4 504c strh.w r5, [r4, #76] ; 0x4c descr->tx_por = 0; 17c2: 2300 movs r3, #0 17c4: f8a4 3044 strh.w r3, [r4, #68] ; 0x44 descr->stat = USART_ASYNC_STATUS_BUSY; 17c8: 2301 movs r3, #1 17ca: 6323 str r3, [r4, #48] ; 0x30 _usart_async_enable_byte_sent_irq(&descr->device); 17cc: f104 0008 add.w r0, r4, #8 17d0: 4b07 ldr r3, [pc, #28] ; (17f0 ) 17d2: 4798 blx r3 return (int32_t)length; 17d4: 4628 mov r0, r5 17d6: bd70 pop {r4, r5, r6, pc} ASSERT(descr && buf && length); 17d8: 2000 movs r0, #0 17da: e7e4 b.n 17a6 17dc: 2000 movs r0, #0 17de: e7e2 b.n 17a6 return ERR_NO_RESOURCE; 17e0: f06f 001b mvn.w r0, #27 } 17e4: bd70 pop {r4, r5, r6, pc} 17e6: bf00 nop 17e8: 0001b560 .word 0x0001b560 17ec: 000019bd .word 0x000019bd 17f0: 00001ea3 .word 0x00001ea3 000017f4 : { 17f4: b510 push {r4, lr} 17f6: 4604 mov r4, r0 if (descr->tx_por != descr->tx_buffer_length) { 17f8: 8f83 ldrh r3, [r0, #60] ; 0x3c 17fa: f8b0 2044 ldrh.w r2, [r0, #68] ; 0x44 17fe: 429a cmp r2, r3 1800: d009 beq.n 1816 _usart_async_write_byte(&descr->device, descr->tx_buffer[descr->tx_por++]); 1802: 6c02 ldr r2, [r0, #64] ; 0x40 1804: 1c59 adds r1, r3, #1 1806: 8781 strh r1, [r0, #60] ; 0x3c 1808: 5cd1 ldrb r1, [r2, r3] 180a: 4b04 ldr r3, [pc, #16] ; (181c ) 180c: 4798 blx r3 _usart_async_enable_byte_sent_irq(&descr->device); 180e: 4620 mov r0, r4 1810: 4b03 ldr r3, [pc, #12] ; (1820 ) 1812: 4798 blx r3 1814: bd10 pop {r4, pc} _usart_async_enable_tx_done_irq(&descr->device); 1816: 4b03 ldr r3, [pc, #12] ; (1824 ) 1818: 4798 blx r3 181a: bd10 pop {r4, pc} 181c: 00001e9d .word 0x00001e9d 1820: 00001ea3 .word 0x00001ea3 1824: 00001eab .word 0x00001eab 00001828 : { 1828: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 182c: b082 sub sp, #8 182e: 460f mov r7, r1 1830: 4690 mov r8, r2 ASSERT(descr && buf && length); 1832: 4606 mov r6, r0 1834: b1a0 cbz r0, 1860 1836: b199 cbz r1, 1860 1838: 2a00 cmp r2, #0 183a: d12d bne.n 1898 183c: f44f 72ac mov.w r2, #344 ; 0x158 1840: 4929 ldr r1, [pc, #164] ; (18e8 ) 1842: 2000 movs r0, #0 1844: 4b29 ldr r3, [pc, #164] ; (18ec ) 1846: 4798 blx r3 CRITICAL_SECTION_ENTER() 1848: a801 add r0, sp, #4 184a: 4b29 ldr r3, [pc, #164] ; (18f0 ) 184c: 4798 blx r3 num = ringbuffer_num(&descr->rx); 184e: f106 0034 add.w r0, r6, #52 ; 0x34 1852: 4b28 ldr r3, [pc, #160] ; (18f4 ) 1854: 4798 blx r3 CRITICAL_SECTION_LEAVE() 1856: a801 add r0, sp, #4 1858: 4b27 ldr r3, [pc, #156] ; (18f8 ) 185a: 4798 blx r3 uint16_t was_read = 0; 185c: 2500 movs r5, #0 return (int32_t)was_read; 185e: e03e b.n 18de ASSERT(descr && buf && length); 1860: f44f 72ac mov.w r2, #344 ; 0x158 1864: 4920 ldr r1, [pc, #128] ; (18e8 ) 1866: 2000 movs r0, #0 1868: 4b20 ldr r3, [pc, #128] ; (18ec ) 186a: 4798 blx r3 CRITICAL_SECTION_ENTER() 186c: a801 add r0, sp, #4 186e: 4b20 ldr r3, [pc, #128] ; (18f0 ) 1870: 4798 blx r3 num = ringbuffer_num(&descr->rx); 1872: f106 0a34 add.w sl, r6, #52 ; 0x34 1876: 4650 mov r0, sl 1878: 4b1e ldr r3, [pc, #120] ; (18f4 ) 187a: 4798 blx r3 187c: 4681 mov r9, r0 CRITICAL_SECTION_LEAVE() 187e: a801 add r0, sp, #4 1880: 4b1d ldr r3, [pc, #116] ; (18f8 ) 1882: 4798 blx r3 while ((was_read < num) && (was_read < length)) { 1884: f1b9 0f00 cmp.w r9, #0 1888: d004 beq.n 1894 188a: f1b8 0f00 cmp.w r8, #0 188e: d119 bne.n 18c4 uint16_t was_read = 0; 1890: 2500 movs r5, #0 1892: e024 b.n 18de 1894: 2500 movs r5, #0 1896: e022 b.n 18de ASSERT(descr && buf && length); 1898: f44f 72ac mov.w r2, #344 ; 0x158 189c: 4912 ldr r1, [pc, #72] ; (18e8 ) 189e: 2001 movs r0, #1 18a0: 4b12 ldr r3, [pc, #72] ; (18ec ) 18a2: 4798 blx r3 CRITICAL_SECTION_ENTER() 18a4: a801 add r0, sp, #4 18a6: 4b12 ldr r3, [pc, #72] ; (18f0 ) 18a8: 4798 blx r3 num = ringbuffer_num(&descr->rx); 18aa: f106 0a34 add.w sl, r6, #52 ; 0x34 18ae: 4650 mov r0, sl 18b0: 4b10 ldr r3, [pc, #64] ; (18f4 ) 18b2: 4798 blx r3 18b4: 4681 mov r9, r0 CRITICAL_SECTION_LEAVE() 18b6: a801 add r0, sp, #4 18b8: 4b0f ldr r3, [pc, #60] ; (18f8 ) 18ba: 4798 blx r3 uint16_t was_read = 0; 18bc: 2500 movs r5, #0 while ((was_read < num) && (was_read < length)) { 18be: f1b9 0f00 cmp.w r9, #0 18c2: d00c beq.n 18de { 18c4: 2400 movs r4, #0 ringbuffer_get(&descr->rx, &buf[was_read++]); 18c6: 4e0d ldr r6, [pc, #52] ; (18fc ) 18c8: 1c60 adds r0, r4, #1 18ca: b285 uxth r5, r0 18cc: 1939 adds r1, r7, r4 18ce: 4650 mov r0, sl 18d0: 47b0 blx r6 18d2: 3401 adds r4, #1 while ((was_read < num) && (was_read < length)) { 18d4: 454c cmp r4, r9 18d6: d202 bcs.n 18de 18d8: b2a3 uxth r3, r4 18da: 4598 cmp r8, r3 18dc: d8f4 bhi.n 18c8 } 18de: 4628 mov r0, r5 18e0: b002 add sp, #8 18e2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 18e6: bf00 nop 18e8: 0001b560 .word 0x0001b560 18ec: 000019bd .word 0x000019bd 18f0: 000014b9 .word 0x000014b9 18f4: 00001af9 .word 0x00001af9 18f8: 000014c7 .word 0x000014c7 18fc: 00001a75 .word 0x00001a75 00001900 : { 1900: b5f8 push {r3, r4, r5, r6, r7, lr} 1902: 460d mov r5, r1 1904: 4616 mov r6, r2 1906: 461f mov r7, r3 ASSERT(descr && hw && rx_buffer && rx_buffer_length); 1908: 4604 mov r4, r0 190a: b320 cbz r0, 1956 190c: b329 cbz r1, 195a 190e: b332 cbz r2, 195e 1910: 1c18 adds r0, r3, #0 1912: bf18 it ne 1914: 2001 movne r0, #1 1916: 223a movs r2, #58 ; 0x3a 1918: 4913 ldr r1, [pc, #76] ; (1968 ) 191a: 4b14 ldr r3, [pc, #80] ; (196c ) 191c: 4798 blx r3 if (ERR_NONE != ringbuffer_init(&descr->rx, rx_buffer, rx_buffer_length)) { 191e: 463a mov r2, r7 1920: 4631 mov r1, r6 1922: f104 0034 add.w r0, r4, #52 ; 0x34 1926: 4b12 ldr r3, [pc, #72] ; (1970 ) 1928: 4798 blx r3 192a: b9d0 cbnz r0, 1962 init_status = _usart_async_init(&descr->device, hw); 192c: 4629 mov r1, r5 192e: f104 0008 add.w r0, r4, #8 1932: 4b10 ldr r3, [pc, #64] ; (1974 ) 1934: 4798 blx r3 if (init_status) { 1936: 4603 mov r3, r0 1938: b958 cbnz r0, 1952 descr->io.read = usart_async_read; 193a: 4a0f ldr r2, [pc, #60] ; (1978 ) 193c: 6062 str r2, [r4, #4] descr->io.write = usart_async_write; 193e: 4a0f ldr r2, [pc, #60] ; (197c ) 1940: 6022 str r2, [r4, #0] descr->device.usart_cb.tx_byte_sent = usart_process_byte_sent; 1942: 4a0f ldr r2, [pc, #60] ; (1980 ) 1944: 60a2 str r2, [r4, #8] descr->device.usart_cb.rx_done_cb = usart_fill_rx_buffer; 1946: 4a0f ldr r2, [pc, #60] ; (1984 ) 1948: 60e2 str r2, [r4, #12] descr->device.usart_cb.tx_done_cb = usart_transmission_complete; 194a: 4a0f ldr r2, [pc, #60] ; (1988 ) 194c: 6122 str r2, [r4, #16] descr->device.usart_cb.error_cb = usart_error; 194e: 4a0f ldr r2, [pc, #60] ; (198c ) 1950: 6162 str r2, [r4, #20] } 1952: 4618 mov r0, r3 1954: bdf8 pop {r3, r4, r5, r6, r7, pc} ASSERT(descr && hw && rx_buffer && rx_buffer_length); 1956: 2000 movs r0, #0 1958: e7dd b.n 1916 195a: 2000 movs r0, #0 195c: e7db b.n 1916 195e: 2000 movs r0, #0 1960: e7d9 b.n 1916 return ERR_INVALID_ARG; 1962: f06f 030c mvn.w r3, #12 1966: e7f4 b.n 1952 1968: 0001b560 .word 0x0001b560 196c: 000019bd .word 0x000019bd 1970: 00001a25 .word 0x00001a25 1974: 00001e05 .word 0x00001e05 1978: 00001829 .word 0x00001829 197c: 00001795 .word 0x00001795 1980: 000017f5 .word 0x000017f5 1984: 00001779 .word 0x00001779 1988: 00001751 .word 0x00001751 198c: 00001765 .word 0x00001765 00001990 : { 1990: b510 push {r4, lr} ASSERT(descr); 1992: 4604 mov r4, r0 1994: 2261 movs r2, #97 ; 0x61 1996: 4906 ldr r1, [pc, #24] ; (19b0 ) 1998: 3000 adds r0, #0 199a: bf18 it ne 199c: 2001 movne r0, #1 199e: 4b05 ldr r3, [pc, #20] ; (19b4 ) 19a0: 4798 blx r3 _usart_async_enable(&descr->device); 19a2: f104 0008 add.w r0, r4, #8 19a6: 4b04 ldr r3, [pc, #16] ; (19b8 ) 19a8: 4798 blx r3 } 19aa: 2000 movs r0, #0 19ac: bd10 pop {r4, pc} 19ae: bf00 nop 19b0: 0001b560 .word 0x0001b560 19b4: 000019bd .word 0x000019bd 19b8: 00001e89 .word 0x00001e89 000019bc : /** * \brief Assert function */ void assert(const bool condition, const char *const file, const int line) { if (!(condition)) { 19bc: b900 cbnz r0, 19c0 __asm("BKPT #0"); 19be: be00 bkpt 0x0000 19c0: 4770 bx lr 000019c2 : * \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) { 19c2: 6803 ldr r3, [r0, #0] 19c4: b14b cbz r3, 19da if (it == element) { 19c6: 428b cmp r3, r1 19c8: d009 beq.n 19de for (it = list->head; it; it = it->next) { 19ca: 681b ldr r3, [r3, #0] 19cc: b11b cbz r3, 19d6 if (it == element) { 19ce: 4299 cmp r1, r3 19d0: d1fb bne.n 19ca return true; 19d2: 2001 movs r0, #1 } } return false; } 19d4: 4770 bx lr return false; 19d6: 2000 movs r0, #0 19d8: 4770 bx lr 19da: 2000 movs r0, #0 19dc: 4770 bx lr return true; 19de: 2001 movs r0, #1 19e0: 4770 bx lr ... 000019e4 : /** * \brief Insert an element as list head */ void list_insert_as_head(struct list_descriptor *const list, void *const element) { 19e4: b538 push {r3, r4, r5, lr} 19e6: 4604 mov r4, r0 19e8: 460d mov r5, r1 ASSERT(!is_list_element(list, element)); 19ea: 4b06 ldr r3, [pc, #24] ; (1a04 ) 19ec: 4798 blx r3 19ee: f080 0001 eor.w r0, r0, #1 19f2: 2239 movs r2, #57 ; 0x39 19f4: 4904 ldr r1, [pc, #16] ; (1a08 ) 19f6: b2c0 uxtb r0, r0 19f8: 4b04 ldr r3, [pc, #16] ; (1a0c ) 19fa: 4798 blx r3 ((struct list_element *)element)->next = list->head; 19fc: 6823 ldr r3, [r4, #0] 19fe: 602b str r3, [r5, #0] list->head = (struct list_element *)element; 1a00: 6025 str r5, [r4, #0] 1a02: bd38 pop {r3, r4, r5, pc} 1a04: 000019c3 .word 0x000019c3 1a08: 0001b580 .word 0x0001b580 1a0c: 000019bd .word 0x000019bd 00001a10 : /** * \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; 1a10: 6803 ldr r3, [r0, #0] 1a12: 600b str r3, [r1, #0] ((struct list_element *)after)->next = (struct list_element *)element; 1a14: 6001 str r1, [r0, #0] 1a16: 4770 bx lr 00001a18 : /** * \brief Removes list head */ void *list_remove_head(struct list_descriptor *const list) { if (list->head) { 1a18: 6803 ldr r3, [r0, #0] 1a1a: b10b cbz r3, 1a20 struct list_element *tmp = list->head; list->head = list->head->next; 1a1c: 681a ldr r2, [r3, #0] 1a1e: 6002 str r2, [r0, #0] return (void *)tmp; } return NULL; } 1a20: 4618 mov r0, r3 1a22: 4770 bx lr 00001a24 : /** * \brief Ringbuffer init */ int32_t ringbuffer_init(struct ringbuffer *const rb, void *buf, uint32_t size) { 1a24: b570 push {r4, r5, r6, lr} 1a26: 460e mov r6, r1 1a28: 4615 mov r5, r2 ASSERT(rb && buf && size); 1a2a: 4604 mov r4, r0 1a2c: b178 cbz r0, 1a4e 1a2e: b181 cbz r1, 1a52 1a30: b1a2 cbz r2, 1a5c 1a32: 2001 movs r0, #1 1a34: 2228 movs r2, #40 ; 0x28 1a36: 490d ldr r1, [pc, #52] ; (1a6c ) 1a38: 4b0d ldr r3, [pc, #52] ; (1a70 ) 1a3a: 4798 blx r3 /* * buf size must be aligned to power of 2 */ if ((size & (size - 1)) != 0) { 1a3c: 1e6b subs r3, r5, #1 1a3e: 421d tst r5, r3 1a40: d109 bne.n 1a56 return ERR_INVALID_ARG; } /* size - 1 is faster in calculation */ rb->size = size - 1; 1a42: 6063 str r3, [r4, #4] rb->read_index = 0; 1a44: 2000 movs r0, #0 1a46: 60a0 str r0, [r4, #8] rb->write_index = rb->read_index; 1a48: 60e0 str r0, [r4, #12] rb->buf = (uint8_t *)buf; 1a4a: 6026 str r6, [r4, #0] return ERR_NONE; 1a4c: bd70 pop {r4, r5, r6, pc} ASSERT(rb && buf && size); 1a4e: 2000 movs r0, #0 1a50: e7f0 b.n 1a34 1a52: 2000 movs r0, #0 1a54: e7ee b.n 1a34 return ERR_INVALID_ARG; 1a56: f06f 000c mvn.w r0, #12 1a5a: bd70 pop {r4, r5, r6, pc} ASSERT(rb && buf && size); 1a5c: 2228 movs r2, #40 ; 0x28 1a5e: 4903 ldr r1, [pc, #12] ; (1a6c ) 1a60: 2000 movs r0, #0 1a62: 4b03 ldr r3, [pc, #12] ; (1a70 ) 1a64: 4798 blx r3 if ((size & (size - 1)) != 0) { 1a66: 1e6b subs r3, r5, #1 1a68: e7eb b.n 1a42 1a6a: bf00 nop 1a6c: 0001b5a0 .word 0x0001b5a0 1a70: 000019bd .word 0x000019bd 00001a74 : /** * \brief Get one byte from ringbuffer * */ int32_t ringbuffer_get(struct ringbuffer *const rb, uint8_t *data) { 1a74: b538 push {r3, r4, r5, lr} 1a76: 460d mov r5, r1 ASSERT(rb && data); 1a78: 4604 mov r4, r0 1a7a: b1a0 cbz r0, 1aa6 1a7c: 1c08 adds r0, r1, #0 1a7e: bf18 it ne 1a80: 2001 movne r0, #1 1a82: 2240 movs r2, #64 ; 0x40 1a84: 490a ldr r1, [pc, #40] ; (1ab0 ) 1a86: 4b0b ldr r3, [pc, #44] ; (1ab4 ) 1a88: 4798 blx r3 if (rb->write_index != rb->read_index) { 1a8a: 68a3 ldr r3, [r4, #8] 1a8c: 68e2 ldr r2, [r4, #12] 1a8e: 429a cmp r2, r3 1a90: d00b beq.n 1aaa *data = rb->buf[rb->read_index & rb->size]; 1a92: 6862 ldr r2, [r4, #4] 1a94: 4013 ands r3, r2 1a96: 6822 ldr r2, [r4, #0] 1a98: 5cd3 ldrb r3, [r2, r3] 1a9a: 702b strb r3, [r5, #0] rb->read_index++; 1a9c: 68a3 ldr r3, [r4, #8] 1a9e: 3301 adds r3, #1 1aa0: 60a3 str r3, [r4, #8] return ERR_NONE; 1aa2: 2000 movs r0, #0 1aa4: bd38 pop {r3, r4, r5, pc} 1aa6: 2000 movs r0, #0 1aa8: e7eb b.n 1a82 } return ERR_NOT_FOUND; 1aaa: f06f 0009 mvn.w r0, #9 } 1aae: bd38 pop {r3, r4, r5, pc} 1ab0: 0001b5a0 .word 0x0001b5a0 1ab4: 000019bd .word 0x000019bd 00001ab8 : /** * \brief Put one byte to ringbuffer * */ int32_t ringbuffer_put(struct ringbuffer *const rb, uint8_t data) { 1ab8: b538 push {r3, r4, r5, lr} 1aba: 460d mov r5, r1 ASSERT(rb); 1abc: 4604 mov r4, r0 1abe: 2251 movs r2, #81 ; 0x51 1ac0: 490b ldr r1, [pc, #44] ; (1af0 ) 1ac2: 3000 adds r0, #0 1ac4: bf18 it ne 1ac6: 2001 movne r0, #1 1ac8: 4b0a ldr r3, [pc, #40] ; (1af4 ) 1aca: 4798 blx r3 rb->buf[rb->write_index & rb->size] = data; 1acc: 68e3 ldr r3, [r4, #12] 1ace: 6862 ldr r2, [r4, #4] 1ad0: 4013 ands r3, r2 1ad2: 6822 ldr r2, [r4, #0] 1ad4: 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) { 1ad6: 68e3 ldr r3, [r4, #12] 1ad8: 6861 ldr r1, [r4, #4] 1ada: 68a2 ldr r2, [r4, #8] 1adc: 1a9a subs r2, r3, r2 1ade: 428a cmp r2, r1 rb->read_index = rb->write_index - rb->size; 1ae0: bf84 itt hi 1ae2: 1a59 subhi r1, r3, r1 1ae4: 60a1 strhi r1, [r4, #8] } rb->write_index++; 1ae6: 3301 adds r3, #1 1ae8: 60e3 str r3, [r4, #12] return ERR_NONE; } 1aea: 2000 movs r0, #0 1aec: bd38 pop {r3, r4, r5, pc} 1aee: bf00 nop 1af0: 0001b5a0 .word 0x0001b5a0 1af4: 000019bd .word 0x000019bd 00001af8 : /** * \brief Return the element number of ringbuffer */ uint32_t ringbuffer_num(const struct ringbuffer *const rb) { 1af8: b510 push {r4, lr} ASSERT(rb); 1afa: 4604 mov r4, r0 1afc: 2267 movs r2, #103 ; 0x67 1afe: 4905 ldr r1, [pc, #20] ; (1b14 ) 1b00: 3000 adds r0, #0 1b02: bf18 it ne 1b04: 2001 movne r0, #1 1b06: 4b04 ldr r3, [pc, #16] ; (1b18 ) 1b08: 4798 blx r3 return rb->write_index - rb->read_index; 1b0a: 68e0 ldr r0, [r4, #12] 1b0c: 68a3 ldr r3, [r4, #8] } 1b0e: 1ac0 subs r0, r0, r3 1b10: bd10 pop {r4, pc} 1b12: bf00 nop 1b14: 0001b5a0 .word 0x0001b5a0 1b18: 000019bd .word 0x000019bd 00001b1c <_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)); 1b1c: 0943 lsrs r3, r0, #5 1b1e: f000 001f and.w r0, r0, #31 1b22: 2201 movs r2, #1 1b24: fa02 f000 lsl.w r0, r2, r0 1b28: 3340 adds r3, #64 ; 0x40 1b2a: 4a02 ldr r2, [pc, #8] ; (1b34 <_irq_set+0x18>) 1b2c: f842 0023 str.w r0, [r2, r3, lsl #2] 1b30: 4770 bx lr 1b32: bf00 nop 1b34: e000e100 .word 0xe000e100 00001b38 <_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; 1b38: ebc0 00c0 rsb r0, r0, r0, lsl #3 1b3c: eb00 1000 add.w r0, r0, r0, lsl #4 1b40: 3002 adds r0, #2 1b42: 4b02 ldr r3, [pc, #8] ; (1b4c <_get_cycles_for_us+0x14>) 1b44: 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); } 1b48: 0840 lsrs r0, r0, #1 1b4a: 4770 bx lr 1b4c: aaaaaaab .word 0xaaaaaaab 00001b50 <_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; 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: 4b04 ldr r3, [pc, #16] ; (1b6c <_get_cycles_for_ms+0x1c>) 1b5c: fba3 3000 umull r3, r0, r3, r0 1b60: 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); } 1b62: f44f 737a mov.w r3, #1000 ; 0x3e8 1b66: fb03 f000 mul.w r0, r3, r0 1b6a: 4770 bx lr 1b6c: aaaaaaab .word 0xaaaaaaab 00001b70 <_delay_init>: /** * \brief Initialize delay functionality */ void _delay_init(void *const hw) { 1b70: 4770 bx lr 1b72: 0000 movs r0, r0 1b74: 0000 movs r0, r0 ... 00001b78 <_delay_cycles>: __asm(".align 3 \n" "__delay:\n" "subs r1, r1, #1\n" "bhi __delay\n"); #elif defined __GNUC__ __asm(".syntax unified\n" 1b78: 3901 subs r1, #1 1b7a: d8fd bhi.n 1b78 <_delay_cycles> 1b7c: 4770 bx lr 1b7e: bf00 nop 00001b80 <_init_chip>: /** * \brief Initialize the hardware abstraction layer */ void _init_chip(void) { 1b80: 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); 1b82: 4a09 ldr r2, [pc, #36] ; (1ba8 <_init_chip+0x28>) 1b84: 8813 ldrh r3, [r2, #0] 1b86: b29b uxth r3, r3 1b88: f443 63a0 orr.w r3, r3, #1280 ; 0x500 1b8c: 8013 strh r3, [r2, #0] hri_nvmctrl_set_CTRLA_RWS_bf(NVMCTRL, CONF_NVM_WAIT_STATE); _osc32kctrl_init_sources(); 1b8e: 4b07 ldr r3, [pc, #28] ; (1bac <_init_chip+0x2c>) 1b90: 4798 blx r3 _oscctrl_init_sources(); 1b92: 4b07 ldr r3, [pc, #28] ; (1bb0 <_init_chip+0x30>) 1b94: 4798 blx r3 _mclk_init(); 1b96: 4b07 ldr r3, [pc, #28] ; (1bb4 <_init_chip+0x34>) 1b98: 4798 blx r3 #if _GCLK_INIT_1ST _gclk_init_generators_by_fref(_GCLK_INIT_1ST); #endif _oscctrl_init_referenced_generators(); 1b9a: 4b07 ldr r3, [pc, #28] ; (1bb8 <_init_chip+0x38>) 1b9c: 4798 blx r3 _gclk_init_generators_by_fref(_GCLK_INIT_LAST); 1b9e: f640 70ff movw r0, #4095 ; 0xfff 1ba2: 4b06 ldr r3, [pc, #24] ; (1bbc <_init_chip+0x3c>) 1ba4: 4798 blx r3 1ba6: bd08 pop {r3, pc} 1ba8: 41004000 .word 0x41004000 1bac: 00001bf1 .word 0x00001bf1 1bb0: 00001c11 .word 0x00001c11 1bb4: 00001be5 .word 0x00001be5 1bb8: 00001c15 .word 0x00001c15 1bbc: 00001bc1 .word 0x00001bc1 00001bc0 <_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)) { 1bc0: f010 0f01 tst.w r0, #1 1bc4: d008 beq.n 1bd8 <_gclk_init_generators_by_fref+0x18> ((Gclk *)hw)->GENCTRL[index].reg = data; 1bc6: 4a05 ldr r2, [pc, #20] ; (1bdc <_gclk_init_generators_by_fref+0x1c>) 1bc8: 4b05 ldr r3, [pc, #20] ; (1be0 <_gclk_init_generators_by_fref+0x20>) 1bca: 621a str r2, [r3, #32] while (((Gclk *)hw)->SYNCBUSY.reg & reg) { 1bcc: 4619 mov r1, r3 1bce: f643 72fd movw r2, #16381 ; 0x3ffd 1bd2: 684b ldr r3, [r1, #4] 1bd4: 4213 tst r3, r2 1bd6: d1fc bne.n 1bd2 <_gclk_init_generators_by_fref+0x12> 1bd8: 4770 bx lr 1bda: bf00 nop 1bdc: 00010107 .word 0x00010107 1be0: 40001c00 .word 0x40001c00 00001be4 <_mclk_init>: ((Mclk *)hw)->CPUDIV.reg = data; 1be4: 2201 movs r2, #1 1be6: 4b01 ldr r3, [pc, #4] ; (1bec <_mclk_init+0x8>) 1be8: 715a strb r2, [r3, #5] 1bea: 4770 bx lr 1bec: 40000800 .word 0x40000800 00001bf0 <_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; 1bf0: 4b06 ldr r3, [pc, #24] ; (1c0c <_osc32kctrl_init_sources+0x1c>) 1bf2: f242 328e movw r2, #9102 ; 0x238e 1bf6: 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; 1bf8: 2200 movs r2, #0 1bfa: 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; 1bfc: 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; 1bfe: 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) 1c00: 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; 1c04: 61da str r2, [r3, #28] ((Osc32kctrl *)hw)->RTCCTRL.reg = data; 1c06: 2201 movs r2, #1 1c08: 741a strb r2, [r3, #16] 1c0a: 4770 bx lr 1c0c: 40001400 .word 0x40001400 00001c10 <_oscctrl_init_sources>: /** * \brief Initialize clock sources */ void _oscctrl_init_sources(void) { 1c10: 4770 bx lr ... 00001c14 <_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; 1c14: 4a0e ldr r2, [pc, #56] ; (1c50 <_oscctrl_init_referenced_generators+0x3c>) 1c16: 4b0f ldr r3, [pc, #60] ; (1c54 <_oscctrl_init_referenced_generators+0x40>) 1c18: 635a str r2, [r3, #52] ; 0x34 while (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSYNCBUSY.reg & reg) { 1c1a: 461a mov r2, r3 1c1c: 6bd3 ldr r3, [r2, #60] ; 0x3c 1c1e: f013 0f06 tst.w r3, #6 1c22: d1fb bne.n 1c1c <_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; 1c24: 4b0b ldr r3, [pc, #44] ; (1c54 <_oscctrl_init_referenced_generators+0x40>) 1c26: f44f 6202 mov.w r2, #2080 ; 0x820 1c2a: 639a str r2, [r3, #56] ; 0x38 ((Oscctrl *)hw)->Dpll[submodule_index].DPLLCTRLA.reg = data; 1c2c: 2202 movs r2, #2 1c2e: f883 2030 strb.w r2, [r3, #48] ; 0x30 while (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSYNCBUSY.reg & reg) { 1c32: 461a mov r2, r3 1c34: 6bd3 ldr r3, [r2, #60] ; 0x3c 1c36: f013 0f02 tst.w r3, #2 1c3a: d1fb bne.n 1c34 <_oscctrl_init_referenced_generators+0x20> return (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSTATUS.reg & OSCCTRL_DPLLSTATUS_LOCK) 1c3c: 4b05 ldr r3, [pc, #20] ; (1c54 <_oscctrl_init_referenced_generators+0x40>) 1c3e: 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))) 1c40: f012 0f01 tst.w r2, #1 1c44: d103 bne.n 1c4e <_oscctrl_init_referenced_generators+0x3a> return (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSTATUS.reg & OSCCTRL_DPLLSTATUS_CLKRDY) 1c46: 6c1a ldr r2, [r3, #64] ; 0x40 1c48: f012 0f02 tst.w r2, #2 1c4c: d0f7 beq.n 1c3e <_oscctrl_init_referenced_generators+0x2a> 1c4e: 4770 bx lr 1c50: 00010e4d .word 0x00010e4d 1c54: 40001000 .word 0x40001000 00001c58 : /** * \internal RAMECC interrupt handler */ void RAMECC_Handler(void) { 1c58: b500 push {lr} 1c5a: 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; 1c5c: 4b0d ldr r3, [pc, #52] ; (1c94 ) 1c5e: 789b ldrb r3, [r3, #2] 1c60: b2db uxtb r3, r3 struct _ramecc_device *dev = (struct _ramecc_device *)&device; volatile uint32_t int_mask = hri_ramecc_read_INTFLAG_reg(RAMECC); 1c62: 9301 str r3, [sp, #4] if (int_mask & RAMECC_INTFLAG_DUALE && dev->ramecc_cb.dual_bit_err) { 1c64: 9b01 ldr r3, [sp, #4] 1c66: f013 0f02 tst.w r3, #2 1c6a: d006 beq.n 1c7a 1c6c: 4b0a ldr r3, [pc, #40] ; (1c98 ) 1c6e: 681b ldr r3, [r3, #0] 1c70: b11b cbz r3, 1c7a return tmp; } static inline hri_ramecc_erraddr_reg_t hri_ramecc_read_ERRADDR_reg(const void *const hw) { return ((Ramecc *)hw)->ERRADDR.reg; 1c72: 4a08 ldr r2, [pc, #32] ; (1c94 ) 1c74: 6850 ldr r0, [r2, #4] dev->ramecc_cb.dual_bit_err((uint32_t)hri_ramecc_read_ERRADDR_reg(RAMECC)); 1c76: 4798 blx r3 1c78: e009 b.n 1c8e } else if (int_mask & RAMECC_INTFLAG_SINGLEE && dev->ramecc_cb.single_bit_err) { 1c7a: 9b01 ldr r3, [sp, #4] 1c7c: f013 0f01 tst.w r3, #1 1c80: d005 beq.n 1c8e 1c82: 4b05 ldr r3, [pc, #20] ; (1c98 ) 1c84: 685b ldr r3, [r3, #4] 1c86: b113 cbz r3, 1c8e 1c88: 4a02 ldr r2, [pc, #8] ; (1c94 ) 1c8a: 6850 ldr r0, [r2, #4] dev->ramecc_cb.single_bit_err((uint32_t)hri_ramecc_read_ERRADDR_reg(RAMECC)); 1c8c: 4798 blx r3 } else { return; } } 1c8e: b003 add sp, #12 1c90: f85d fb04 ldr.w pc, [sp], #4 1c94: 41020000 .word 0x41020000 1c98: 20006c70 .word 0x20006c70 00001c9c <_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) { 1c9c: b470 push {r4, r5, r6} 1c9e: b089 sub sp, #36 ; 0x24 1ca0: 4606 mov r6, r0 Sercom *const sercom_modules[] = SERCOM_INSTS; 1ca2: 466c mov r4, sp 1ca4: 4d0d ldr r5, [pc, #52] ; (1cdc <_sercom_get_hardware_index+0x40>) 1ca6: cd0f ldmia r5!, {r0, r1, r2, r3} 1ca8: c40f stmia r4!, {r0, r1, r2, r3} 1caa: e895 000f ldmia.w r5, {r0, r1, r2, r3} 1cae: 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]) { 1cb2: 9b00 ldr r3, [sp, #0] 1cb4: 42b3 cmp r3, r6 1cb6: d00d beq.n 1cd4 <_sercom_get_hardware_index+0x38> 1cb8: 4631 mov r1, r6 1cba: ab01 add r3, sp, #4 for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { 1cbc: 2001 movs r0, #1 if ((uint32_t)hw == (uint32_t)sercom_modules[i]) { 1cbe: f853 2b04 ldr.w r2, [r3], #4 1cc2: 428a cmp r2, r1 1cc4: d007 beq.n 1cd6 <_sercom_get_hardware_index+0x3a> for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { 1cc6: 3001 adds r0, #1 1cc8: 2808 cmp r0, #8 1cca: d1f8 bne.n 1cbe <_sercom_get_hardware_index+0x22> return i; } } return 0; 1ccc: 2000 movs r0, #0 } 1cce: b009 add sp, #36 ; 0x24 1cd0: bc70 pop {r4, r5, r6} 1cd2: 4770 bx lr for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { 1cd4: 2000 movs r0, #0 return i; 1cd6: b2c0 uxtb r0, r0 1cd8: e7f9 b.n 1cce <_sercom_get_hardware_index+0x32> 1cda: bf00 nop 1cdc: 0001b5c4 .word 0x0001b5c4 00001ce0 <_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) { 1ce0: b510 push {r4, lr} void *hw = device->hw; 1ce2: 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; 1ce4: 7e23 ldrb r3, [r4, #24] if (hri_sercomusart_get_interrupt_DRE_bit(hw) && hri_sercomusart_get_INTEN_DRE_bit(hw)) { 1ce6: f013 0f01 tst.w r3, #1 1cea: d003 beq.n 1cf4 <_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; 1cec: 7da3 ldrb r3, [r4, #22] 1cee: f013 0f01 tst.w r3, #1 1cf2: d112 bne.n 1d1a <_sercom_usart_interrupt_handler+0x3a> return (((Sercom *)hw)->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_TXC) >> SERCOM_USART_INTFLAG_TXC_Pos; 1cf4: 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)) { 1cf6: f013 0f02 tst.w r3, #2 1cfa: d003 beq.n 1d04 <_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; 1cfc: 7da3 ldrb r3, [r4, #22] 1cfe: f013 0f02 tst.w r3, #2 1d02: d10f bne.n 1d24 <_sercom_usart_interrupt_handler+0x44> return (((Sercom *)hw)->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_RXC) >> SERCOM_USART_INTFLAG_RXC_Pos; 1d04: 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)) { 1d06: f013 0f04 tst.w r3, #4 1d0a: d015 beq.n 1d38 <_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; 1d0c: 8b63 ldrh r3, [r4, #26] if (hri_sercomusart_read_STATUS_reg(hw) 1d0e: f003 0337 and.w r3, r3, #55 ; 0x37 1d12: b163 cbz r3, 1d2e <_sercom_usart_interrupt_handler+0x4e> ((Sercom *)hw)->USART.STATUS.reg = mask; 1d14: 23ff movs r3, #255 ; 0xff 1d16: 8363 strh r3, [r4, #26] 1d18: bd10 pop {r4, pc} ((Sercom *)hw)->USART.INTENCLR.reg = SERCOM_USART_INTENSET_DRE; 1d1a: 2301 movs r3, #1 1d1c: 7523 strb r3, [r4, #20] device->usart_cb.tx_byte_sent(device); 1d1e: 6803 ldr r3, [r0, #0] 1d20: 4798 blx r3 1d22: bd10 pop {r4, pc} ((Sercom *)hw)->USART.INTENCLR.reg = SERCOM_USART_INTENSET_TXC; 1d24: 2302 movs r3, #2 1d26: 7523 strb r3, [r4, #20] device->usart_cb.tx_done_cb(device); 1d28: 6883 ldr r3, [r0, #8] 1d2a: 4798 blx r3 1d2c: bd10 pop {r4, pc} return ((Sercom *)hw)->USART.DATA.reg; 1d2e: 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)); 1d30: 6843 ldr r3, [r0, #4] 1d32: b2c9 uxtb r1, r1 1d34: 4798 blx r3 1d36: bd10 pop {r4, pc} return (((Sercom *)hw)->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_ERROR) >> SERCOM_USART_INTFLAG_ERROR_Pos; 1d38: 7e23 ldrb r3, [r4, #24] } else if (hri_sercomusart_get_interrupt_ERROR_bit(hw)) { 1d3a: 09db lsrs r3, r3, #7 1d3c: d100 bne.n 1d40 <_sercom_usart_interrupt_handler+0x60> 1d3e: bd10 pop {r4, pc} ((Sercom *)hw)->USART.INTFLAG.reg = SERCOM_USART_INTFLAG_ERROR; 1d40: 2380 movs r3, #128 ; 0x80 1d42: 7623 strb r3, [r4, #24] uint32_t status; hri_sercomusart_clear_interrupt_ERROR_bit(hw); device->usart_cb.error_cb(device); 1d44: 68c3 ldr r3, [r0, #12] 1d46: 4798 blx r3 return ((Sercom *)hw)->USART.STATUS.reg; 1d48: 8b63 ldrh r3, [r4, #26] 1d4a: b29b uxth r3, r3 ((Sercom *)hw)->USART.STATUS.reg = mask; 1d4c: 8363 strh r3, [r4, #26] 1d4e: e7f6 b.n 1d3e <_sercom_usart_interrupt_handler+0x5e> 00001d50 <_sercom_get_irq_num>: /** * \brief Retrieve IRQ number for the given hardware instance */ static uint8_t _sercom_get_irq_num(const void *const hw) { 1d50: b508 push {r3, lr} return SERCOM0_0_IRQn + (_sercom_get_hardware_index(hw) << 2); 1d52: 4b03 ldr r3, [pc, #12] ; (1d60 <_sercom_get_irq_num+0x10>) 1d54: 4798 blx r3 1d56: 0080 lsls r0, r0, #2 1d58: 302e adds r0, #46 ; 0x2e } 1d5a: f000 00fe and.w r0, r0, #254 ; 0xfe 1d5e: bd08 pop {r3, pc} 1d60: 00001c9d .word 0x00001c9d 00001d64 <_usart_init>: { 1d64: b510 push {r4, lr} 1d66: 4604 mov r4, r0 uint8_t sercom_offset = _sercom_get_hardware_index(hw); 1d68: 4b21 ldr r3, [pc, #132] ; (1df0 <_usart_init+0x8c>) 1d6a: 4798 blx r3 if (_usarts[i].number == sercom_offset) { 1d6c: 2802 cmp r0, #2 1d6e: d005 beq.n 1d7c <_usart_init+0x18> ASSERT(false); 1d70: f240 226b movw r2, #619 ; 0x26b 1d74: 491f ldr r1, [pc, #124] ; (1df4 <_usart_init+0x90>) 1d76: 2000 movs r0, #0 1d78: 4b1f ldr r3, [pc, #124] ; (1df8 <_usart_init+0x94>) 1d7a: 4798 blx r3 return ((Sercom *)hw)->USART.SYNCBUSY.reg & reg; 1d7c: 69e3 ldr r3, [r4, #28] if (!hri_sercomusart_is_syncing(hw, SERCOM_USART_SYNCBUSY_SWRST)) { 1d7e: f013 0f01 tst.w r3, #1 1d82: d119 bne.n 1db8 <_usart_init+0x54> while (((Sercom *)hw)->USART.SYNCBUSY.reg & reg) { 1d84: 69e3 ldr r3, [r4, #28] 1d86: f013 0f03 tst.w r3, #3 1d8a: d1fb bne.n 1d84 <_usart_init+0x20> tmp = ((Sercom *)hw)->USART.CTRLA.reg; 1d8c: 6823 ldr r3, [r4, #0] if (hri_sercomusart_get_CTRLA_reg(hw, SERCOM_USART_CTRLA_ENABLE)) { 1d8e: f013 0f02 tst.w r3, #2 1d92: d00b beq.n 1dac <_usart_init+0x48> ((Sercom *)hw)->USART.CTRLA.reg &= ~SERCOM_USART_CTRLA_ENABLE; 1d94: 6823 ldr r3, [r4, #0] 1d96: f023 0302 bic.w r3, r3, #2 1d9a: 6023 str r3, [r4, #0] 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+0x38> 1da4: 69e3 ldr r3, [r4, #28] 1da6: f013 0f02 tst.w r3, #2 1daa: d1fb bne.n 1da4 <_usart_init+0x40> ((Sercom *)hw)->USART.CTRLA.reg = data; 1dac: 2305 movs r3, #5 1dae: 6023 str r3, [r4, #0] while (((Sercom *)hw)->USART.SYNCBUSY.reg & reg) { 1db0: 69e3 ldr r3, [r4, #28] 1db2: f013 0f03 tst.w r3, #3 1db6: d1fb bne.n 1db0 <_usart_init+0x4c> 1db8: 69e3 ldr r3, [r4, #28] 1dba: f013 0f01 tst.w r3, #1 1dbe: d1fb bne.n 1db8 <_usart_init+0x54> ((Sercom *)hw)->USART.CTRLA.reg = data; 1dc0: 4b0e ldr r3, [pc, #56] ; (1dfc <_usart_init+0x98>) 1dc2: 6023 str r3, [r4, #0] while (((Sercom *)hw)->USART.SYNCBUSY.reg & reg) { 1dc4: 69e3 ldr r3, [r4, #28] 1dc6: f013 0f03 tst.w r3, #3 1dca: d1fb bne.n 1dc4 <_usart_init+0x60> ((Sercom *)hw)->USART.CTRLB.reg = data; 1dcc: f44f 3340 mov.w r3, #196608 ; 0x30000 1dd0: 6063 str r3, [r4, #4] while (((Sercom *)hw)->USART.SYNCBUSY.reg & reg) { 1dd2: 69e3 ldr r3, [r4, #28] 1dd4: f013 0f1f tst.w r3, #31 1dd8: d1fb bne.n 1dd2 <_usart_init+0x6e> ((Sercom *)hw)->USART.CTRLC.reg = data; 1dda: 4b09 ldr r3, [pc, #36] ; (1e00 <_usart_init+0x9c>) 1ddc: 60a3 str r3, [r4, #8] ((Sercom *)hw)->USART.BAUD.reg = data; 1dde: f64f 4311 movw r3, #64529 ; 0xfc11 1de2: 81a3 strh r3, [r4, #12] ((Sercom *)hw)->USART.RXPL.reg = data; 1de4: 2000 movs r0, #0 1de6: 73a0 strb r0, [r4, #14] ((Sercom *)hw)->USART.DBGCTRL.reg = data; 1de8: f884 0030 strb.w r0, [r4, #48] ; 0x30 } 1dec: bd10 pop {r4, pc} 1dee: bf00 nop 1df0: 00001c9d .word 0x00001c9d 1df4: 0001b5fc .word 0x0001b5fc 1df8: 000019bd .word 0x000019bd 1dfc: 40100004 .word 0x40100004 1e00: 00700002 .word 0x00700002 00001e04 <_usart_async_init>: { 1e04: b570 push {r4, r5, r6, lr} 1e06: 460d mov r5, r1 ASSERT(device); 1e08: 4606 mov r6, r0 1e0a: 22cb movs r2, #203 ; 0xcb 1e0c: 4918 ldr r1, [pc, #96] ; (1e70 <_usart_async_init+0x6c>) 1e0e: 3000 adds r0, #0 1e10: bf18 it ne 1e12: 2001 movne r0, #1 1e14: 4b17 ldr r3, [pc, #92] ; (1e74 <_usart_async_init+0x70>) 1e16: 4798 blx r3 init_status = _usart_init(hw); 1e18: 4628 mov r0, r5 1e1a: 4b17 ldr r3, [pc, #92] ; (1e78 <_usart_async_init+0x74>) 1e1c: 4798 blx r3 if (init_status) { 1e1e: 4604 mov r4, r0 1e20: b108 cbz r0, 1e26 <_usart_async_init+0x22> } 1e22: 4620 mov r0, r4 1e24: bd70 pop {r4, r5, r6, pc} device->hw = hw; 1e26: 61b5 str r5, [r6, #24] if (hw == SERCOM2) { 1e28: 4b14 ldr r3, [pc, #80] ; (1e7c <_usart_async_init+0x78>) 1e2a: 429d cmp r5, r3 _sercom2_dev = (struct _usart_async_device *)dev; 1e2c: bf04 itt eq 1e2e: 4b14 ldreq r3, [pc, #80] ; (1e80 <_usart_async_init+0x7c>) 1e30: 601e streq r6, [r3, #0] uint8_t irq = _sercom_get_irq_num(hw); 1e32: 4628 mov r0, r5 1e34: 4b13 ldr r3, [pc, #76] ; (1e84 <_usart_async_init+0x80>) 1e36: 4798 blx r3 1e38: 1d01 adds r1, r0, #4 1e3a: b2c9 uxtb r1, r1 NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 1e3c: 2501 movs r5, #1 1e3e: f000 021f and.w r2, r0, #31 1e42: fa05 f202 lsl.w r2, r5, r2 1e46: 0943 lsrs r3, r0, #5 1e48: 009b lsls r3, r3, #2 1e4a: f103 4360 add.w r3, r3, #3758096384 ; 0xe0000000 1e4e: f503 4361 add.w r3, r3, #57600 ; 0xe100 1e52: f8c3 2080 str.w r2, [r3, #128] ; 0x80 __ASM volatile ("dsb 0xF":::"memory"); 1e56: f3bf 8f4f dsb sy __ASM volatile ("isb 0xF":::"memory"); 1e5a: 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)); 1e5e: f8c3 2180 str.w r2, [r3, #384] ; 0x180 NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 1e62: 601a str r2, [r3, #0] irq++; 1e64: 3001 adds r0, #1 1e66: b2c0 uxtb r0, r0 for (uint32_t i = 0; i < 4; i++) { 1e68: 4281 cmp r1, r0 1e6a: d1e8 bne.n 1e3e <_usart_async_init+0x3a> 1e6c: e7d9 b.n 1e22 <_usart_async_init+0x1e> 1e6e: bf00 nop 1e70: 0001b5fc .word 0x0001b5fc 1e74: 000019bd .word 0x000019bd 1e78: 00001d65 .word 0x00001d65 1e7c: 41012000 .word 0x41012000 1e80: 200000c8 .word 0x200000c8 1e84: 00001d51 .word 0x00001d51 00001e88 <_usart_async_enable>: hri_sercomusart_set_CTRLA_ENABLE_bit(device->hw); 1e88: 6982 ldr r2, [r0, #24] ((Sercom *)hw)->USART.CTRLA.reg |= SERCOM_USART_CTRLA_ENABLE; 1e8a: 6813 ldr r3, [r2, #0] 1e8c: f043 0302 orr.w r3, r3, #2 1e90: 6013 str r3, [r2, #0] while (((Sercom *)hw)->USART.SYNCBUSY.reg & reg) { 1e92: 69d3 ldr r3, [r2, #28] 1e94: f013 0f03 tst.w r3, #3 1e98: d1fb bne.n 1e92 <_usart_async_enable+0xa> } 1e9a: 4770 bx lr 00001e9c <_usart_async_write_byte>: hri_sercomusart_write_DATA_reg(device->hw, data); 1e9c: 6983 ldr r3, [r0, #24] ((Sercom *)hw)->USART.DATA.reg = data; 1e9e: 6299 str r1, [r3, #40] ; 0x28 1ea0: 4770 bx lr 00001ea2 <_usart_async_enable_byte_sent_irq>: hri_sercomusart_set_INTEN_DRE_bit(device->hw); 1ea2: 6983 ldr r3, [r0, #24] ((Sercom *)hw)->USART.INTENSET.reg = SERCOM_USART_INTENSET_DRE; 1ea4: 2201 movs r2, #1 1ea6: 759a strb r2, [r3, #22] 1ea8: 4770 bx lr 00001eaa <_usart_async_enable_tx_done_irq>: hri_sercomusart_set_INTEN_TXC_bit(device->hw); 1eaa: 6983 ldr r3, [r0, #24] ((Sercom *)hw)->USART.INTENSET.reg = SERCOM_USART_INTENSET_TXC; 1eac: 2202 movs r2, #2 1eae: 759a strb r2, [r3, #22] 1eb0: 4770 bx lr ... 00001eb4 : /** * \internal Sercom interrupt handler */ void SERCOM2_0_Handler(void) { 1eb4: b508 push {r3, lr} _sercom_usart_interrupt_handler(_sercom2_dev); 1eb6: 4b02 ldr r3, [pc, #8] ; (1ec0 ) 1eb8: 6818 ldr r0, [r3, #0] 1eba: 4b02 ldr r3, [pc, #8] ; (1ec4 ) 1ebc: 4798 blx r3 1ebe: bd08 pop {r3, pc} 1ec0: 200000c8 .word 0x200000c8 1ec4: 00001ce1 .word 0x00001ce1 00001ec8 : } /** * \internal Sercom interrupt handler */ void SERCOM2_1_Handler(void) { 1ec8: b508 push {r3, lr} _sercom_usart_interrupt_handler(_sercom2_dev); 1eca: 4b02 ldr r3, [pc, #8] ; (1ed4 ) 1ecc: 6818 ldr r0, [r3, #0] 1ece: 4b02 ldr r3, [pc, #8] ; (1ed8 ) 1ed0: 4798 blx r3 1ed2: bd08 pop {r3, pc} 1ed4: 200000c8 .word 0x200000c8 1ed8: 00001ce1 .word 0x00001ce1 00001edc : } /** * \internal Sercom interrupt handler */ void SERCOM2_2_Handler(void) { 1edc: b508 push {r3, lr} _sercom_usart_interrupt_handler(_sercom2_dev); 1ede: 4b02 ldr r3, [pc, #8] ; (1ee8 ) 1ee0: 6818 ldr r0, [r3, #0] 1ee2: 4b02 ldr r3, [pc, #8] ; (1eec ) 1ee4: 4798 blx r3 1ee6: bd08 pop {r3, pc} 1ee8: 200000c8 .word 0x200000c8 1eec: 00001ce1 .word 0x00001ce1 00001ef0 : } /** * \internal Sercom interrupt handler */ void SERCOM2_3_Handler(void) { 1ef0: b508 push {r3, lr} _sercom_usart_interrupt_handler(_sercom2_dev); 1ef2: 4b02 ldr r3, [pc, #8] ; (1efc ) 1ef4: 6818 ldr r0, [r3, #0] 1ef6: 4b02 ldr r3, [pc, #8] ; (1f00 ) 1ef8: 4798 blx r3 1efa: bd08 pop {r3, pc} 1efc: 200000c8 .word 0x200000c8 1f00: 00001ce1 .word 0x00001ce1 00001f04 : * \param[in] hw The pointer to hardware instance * * \return The index of TC configuration */ static int8_t get_tc_index(const void *const hw) { 1f04: b570 push {r4, r5, r6, lr} 1f06: b088 sub sp, #32 1f08: 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; 1f0a: 466c mov r4, sp 1f0c: 4d12 ldr r5, [pc, #72] ; (1f58 ) 1f0e: cd0f ldmia r5!, {r0, r1, r2, r3} 1f10: c40f stmia r4!, {r0, r1, r2, r3} 1f12: e895 000f ldmia.w r5, {r0, r1, r2, r3} 1f16: 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]) { 1f1a: 9b00 ldr r3, [sp, #0] 1f1c: 42b3 cmp r3, r6 1f1e: d00b beq.n 1f38 1f20: 4630 mov r0, r6 1f22: aa01 add r2, sp, #4 for (uint32_t i = 0; i < TC_INST_NUM; i++) { 1f24: 2301 movs r3, #1 if ((uint32_t)hw == (uint32_t)tc_modules[i]) { 1f26: f852 1b04 ldr.w r1, [r2], #4 1f2a: 4281 cmp r1, r0 1f2c: d005 beq.n 1f3a for (uint32_t i = 0; i < TC_INST_NUM; i++) { 1f2e: 3301 adds r3, #1 1f30: 2b08 cmp r3, #8 1f32: d1f8 bne.n 1f26 return i; 1f34: 2000 movs r0, #0 1f36: e00b b.n 1f50 for (uint32_t i = 0; i < TC_INST_NUM; i++) { 1f38: 2300 movs r3, #0 if (_tcs[i].number == index) { 1f3a: f013 0fff tst.w r3, #255 ; 0xff 1f3e: d009 beq.n 1f54 ASSERT(false); 1f40: f44f 729e mov.w r2, #316 ; 0x13c 1f44: 4905 ldr r1, [pc, #20] ; (1f5c ) 1f46: 2000 movs r0, #0 1f48: 4b05 ldr r3, [pc, #20] ; (1f60 ) 1f4a: 4798 blx r3 return -1; 1f4c: f04f 30ff mov.w r0, #4294967295 } 1f50: b008 add sp, #32 1f52: bd70 pop {r4, r5, r6, pc} return i; 1f54: 2000 movs r0, #0 1f56: e7fb b.n 1f50 1f58: 0001b618 .word 0x0001b618 1f5c: 0001b64c .word 0x0001b64c 1f60: 000019bd .word 0x000019bd 00001f64 <_timer_init>: { 1f64: b570 push {r4, r5, r6, lr} 1f66: 4606 mov r6, r0 1f68: 460c mov r4, r1 int8_t i = get_tc_index(hw); 1f6a: 4608 mov r0, r1 1f6c: 4b60 ldr r3, [pc, #384] ; (20f0 <_timer_init+0x18c>) 1f6e: 4798 blx r3 1f70: 4605 mov r5, r0 device->hw = hw; 1f72: 60f4 str r4, [r6, #12] ASSERT(ARRAY_SIZE(_tcs)); 1f74: 228d movs r2, #141 ; 0x8d 1f76: 495f ldr r1, [pc, #380] ; (20f4 <_timer_init+0x190>) 1f78: 2001 movs r0, #1 1f7a: 4b5f ldr r3, [pc, #380] ; (20f8 <_timer_init+0x194>) 1f7c: 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; 1f7e: 6923 ldr r3, [r4, #16] if (!hri_tc_is_syncing(hw, TC_SYNCBUSY_SWRST)) { 1f80: f013 0f01 tst.w r3, #1 1f84: d119 bne.n 1fba <_timer_init+0x56> while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 1f86: 6923 ldr r3, [r4, #16] 1f88: f013 0f03 tst.w r3, #3 1f8c: d1fb bne.n 1f86 <_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; 1f8e: 6823 ldr r3, [r4, #0] if (hri_tc_get_CTRLA_reg(hw, TC_CTRLA_ENABLE)) { 1f90: f013 0f02 tst.w r3, #2 1f94: d00b beq.n 1fae <_timer_init+0x4a> ((Tc *)hw)->COUNT16.CTRLA.reg &= ~TC_CTRLA_ENABLE; 1f96: 6823 ldr r3, [r4, #0] 1f98: f023 0302 bic.w r3, r3, #2 1f9c: 6023 str r3, [r4, #0] 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+0x3a> 1fa6: 6923 ldr r3, [r4, #16] 1fa8: f013 0f02 tst.w r3, #2 1fac: d1fb bne.n 1fa6 <_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; 1fae: 2301 movs r3, #1 1fb0: 6023 str r3, [r4, #0] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 1fb2: 6923 ldr r3, [r4, #16] 1fb4: f013 0f03 tst.w r3, #3 1fb8: d1fb bne.n 1fb2 <_timer_init+0x4e> 1fba: 6923 ldr r3, [r4, #16] 1fbc: f013 0f01 tst.w r3, #1 1fc0: d1fb bne.n 1fba <_timer_init+0x56> hri_tc_write_CTRLA_reg(hw, _tcs[i].ctrl_a); 1fc2: eb05 0385 add.w r3, r5, r5, lsl #2 1fc6: 4a4d ldr r2, [pc, #308] ; (20fc <_timer_init+0x198>) 1fc8: eb02 0383 add.w r3, r2, r3, lsl #2 1fcc: 6a5a ldr r2, [r3, #36] ; 0x24 ((Tc *)hw)->COUNT16.CTRLA.reg = data; 1fce: 6022 str r2, [r4, #0] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 1fd0: 6923 ldr r3, [r4, #16] 1fd2: f013 0f03 tst.w r3, #3 1fd6: d1fb bne.n 1fd0 <_timer_init+0x6c> hri_tc_write_DBGCTRL_reg(hw, _tcs[i].dbg_ctrl); 1fd8: eb05 0385 add.w r3, r5, r5, lsl #2 1fdc: 4947 ldr r1, [pc, #284] ; (20fc <_timer_init+0x198>) 1fde: eb01 0383 add.w r3, r1, r3, lsl #2 1fe2: 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; 1fe6: 73e1 strb r1, [r4, #15] hri_tc_write_EVCTRL_reg(hw, _tcs[i].event_ctrl); 1fe8: 8d1b ldrh r3, [r3, #40] ; 0x28 ((Tc *)hw)->COUNT16.EVCTRL.reg = data; 1fea: 80e3 strh r3, [r4, #6] ((Tc *)hw)->COUNT16.WAVE.reg = data; 1fec: 2301 movs r3, #1 1fee: 7323 strb r3, [r4, #12] if ((_tcs[i].ctrl_a & TC_CTRLA_MODE_Msk) == TC_CTRLA_MODE_COUNT32) { 1ff0: f002 020c and.w r2, r2, #12 1ff4: 2a08 cmp r2, #8 1ff6: d048 beq.n 208a <_timer_init+0x126> } else if ((_tcs[i].ctrl_a & TC_CTRLA_MODE_Msk) == TC_CTRLA_MODE_COUNT16) { 1ff8: 2a00 cmp r2, #0 1ffa: d158 bne.n 20ae <_timer_init+0x14a> hri_tccount16_write_CC_reg(hw, 0, (uint16_t)_tcs[i].cc0); 1ffc: eb05 0385 add.w r3, r5, r5, lsl #2 2000: 4a3e ldr r2, [pc, #248] ; (20fc <_timer_init+0x198>) 2002: eb02 0383 add.w r3, r2, r3, lsl #2 2006: 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; 2008: 83a3 strh r3, [r4, #28] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 200a: 6923 ldr r3, [r4, #16] 200c: f013 0fc0 tst.w r3, #192 ; 0xc0 2010: d1fb bne.n 200a <_timer_init+0xa6> ((Tc *)hw)->COUNT16.CC[index].reg = data; 2012: 2300 movs r3, #0 2014: 83e3 strh r3, [r4, #30] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 2016: 6923 ldr r3, [r4, #16] 2018: f013 0fc0 tst.w r3, #192 ; 0xc0 201c: d1fb bne.n 2016 <_timer_init+0xb2> ((Tc *)hw)->COUNT16.INTENSET.reg = TC_INTENSET_OVF; 201e: 2301 movs r3, #1 2020: 7263 strb r3, [r4, #9] if (hw == TC0) { 2022: 4b37 ldr r3, [pc, #220] ; (2100 <_timer_init+0x19c>) 2024: 429c cmp r4, r3 _tc0_dev = (struct _timer_device *)dev; 2026: bf04 itt eq 2028: 4b36 ldreq r3, [pc, #216] ; (2104 <_timer_init+0x1a0>) 202a: 601e streq r6, [r3, #0] NVIC_DisableIRQ(_tcs[i].irq); 202c: eb05 0385 add.w r3, r5, r5, lsl #2 2030: 4a32 ldr r2, [pc, #200] ; (20fc <_timer_init+0x198>) 2032: eb02 0383 add.w r3, r2, r3, lsl #2 2036: f9b3 3022 ldrsh.w r3, [r3, #34] ; 0x22 if ((int32_t)(IRQn) >= 0) 203a: 2b00 cmp r3, #0 203c: db23 blt.n 2086 <_timer_init+0x122> NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 203e: 095a lsrs r2, r3, #5 2040: f003 031f and.w r3, r3, #31 2044: 2101 movs r1, #1 2046: fa01 f303 lsl.w r3, r1, r3 204a: 3220 adds r2, #32 204c: 492e ldr r1, [pc, #184] ; (2108 <_timer_init+0x1a4>) 204e: f841 3022 str.w r3, [r1, r2, lsl #2] __ASM volatile ("dsb 0xF":::"memory"); 2052: f3bf 8f4f dsb sy __ASM volatile ("isb 0xF":::"memory"); 2056: f3bf 8f6f isb sy NVIC_ClearPendingIRQ(_tcs[i].irq); 205a: eb05 0585 add.w r5, r5, r5, lsl #2 205e: 4b27 ldr r3, [pc, #156] ; (20fc <_timer_init+0x198>) 2060: eb03 0585 add.w r5, r3, r5, lsl #2 2064: f9b5 3022 ldrsh.w r3, [r5, #34] ; 0x22 if ((int32_t)(IRQn) >= 0) 2068: 2b00 cmp r3, #0 206a: db0c blt.n 2086 <_timer_init+0x122> NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 206c: 0959 lsrs r1, r3, #5 206e: f003 031f and.w r3, r3, #31 2072: 2201 movs r2, #1 2074: fa02 f303 lsl.w r3, r2, r3 2078: 4a23 ldr r2, [pc, #140] ; (2108 <_timer_init+0x1a4>) 207a: f101 0060 add.w r0, r1, #96 ; 0x60 207e: f842 3020 str.w r3, [r2, r0, lsl #2] NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 2082: f842 3021 str.w r3, [r2, r1, lsl #2] } 2086: 2000 movs r0, #0 2088: bd70 pop {r4, r5, r6, pc} hri_tccount32_write_CC_reg(hw, 0, _tcs[i].cc0); 208a: eb05 0385 add.w r3, r5, r5, lsl #2 208e: 4a1b ldr r2, [pc, #108] ; (20fc <_timer_init+0x198>) 2090: eb02 0383 add.w r3, r2, r3, lsl #2 2094: 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; 2096: 61e3 str r3, [r4, #28] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 2098: 6923 ldr r3, [r4, #16] 209a: f013 0fc0 tst.w r3, #192 ; 0xc0 209e: d1fb bne.n 2098 <_timer_init+0x134> ((Tc *)hw)->COUNT32.CC[index].reg = data; 20a0: 2300 movs r3, #0 20a2: 6223 str r3, [r4, #32] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 20a4: 6923 ldr r3, [r4, #16] 20a6: f013 0fc0 tst.w r3, #192 ; 0xc0 20aa: d1fb bne.n 20a4 <_timer_init+0x140> 20ac: e7b7 b.n 201e <_timer_init+0xba> } else if ((_tcs[i].ctrl_a & TC_CTRLA_MODE_Msk) == TC_CTRLA_MODE_COUNT8) { 20ae: 2a04 cmp r2, #4 20b0: d1b5 bne.n 201e <_timer_init+0xba> hri_tccount8_write_CC_reg(hw, 0, (uint8_t)_tcs[i].cc0); 20b2: eb05 0385 add.w r3, r5, r5, lsl #2 20b6: 4a11 ldr r2, [pc, #68] ; (20fc <_timer_init+0x198>) 20b8: eb02 0383 add.w r3, r2, r3, lsl #2 20bc: f893 302c ldrb.w r3, [r3, #44] ; 0x2c ((Tc *)hw)->COUNT8.CC[index].reg = data; 20c0: 7723 strb r3, [r4, #28] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 20c2: 6923 ldr r3, [r4, #16] 20c4: f013 0fc0 tst.w r3, #192 ; 0xc0 20c8: d1fb bne.n 20c2 <_timer_init+0x15e> ((Tc *)hw)->COUNT8.CC[index].reg = data; 20ca: 2300 movs r3, #0 20cc: 7763 strb r3, [r4, #29] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 20ce: 6923 ldr r3, [r4, #16] 20d0: f013 0fc0 tst.w r3, #192 ; 0xc0 20d4: d1fb bne.n 20ce <_timer_init+0x16a> hri_tccount8_write_PER_reg(hw, _tcs[i].per); 20d6: eb05 0385 add.w r3, r5, r5, lsl #2 20da: 4a08 ldr r2, [pc, #32] ; (20fc <_timer_init+0x198>) 20dc: eb02 0383 add.w r3, r2, r3, lsl #2 20e0: f893 302b ldrb.w r3, [r3, #43] ; 0x2b ((Tc *)hw)->COUNT8.PER.reg = data; 20e4: 76e3 strb r3, [r4, #27] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 20e6: 6923 ldr r3, [r4, #16] 20e8: f013 0f20 tst.w r3, #32 20ec: d1fb bne.n 20e6 <_timer_init+0x182> 20ee: e796 b.n 201e <_timer_init+0xba> 20f0: 00001f05 .word 0x00001f05 20f4: 0001b64c .word 0x0001b64c 20f8: 000019bd .word 0x000019bd 20fc: 0001b618 .word 0x0001b618 2100: 40003800 .word 0x40003800 2104: 200000cc .word 0x200000cc 2108: e000e100 .word 0xe000e100 0000210c <_timer_start>: hri_tc_set_CTRLA_ENABLE_bit(device->hw); 210c: 68c2 ldr r2, [r0, #12] ((Tc *)hw)->COUNT16.CTRLA.reg |= TC_CTRLA_ENABLE; 210e: 6813 ldr r3, [r2, #0] 2110: f043 0302 orr.w r3, r3, #2 2114: 6013 str r3, [r2, #0] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 2116: 6913 ldr r3, [r2, #16] 2118: f013 0f03 tst.w r3, #3 211c: d1fb bne.n 2116 <_timer_start+0xa> } 211e: 4770 bx lr 00002120 <_timer_is_started>: return hri_tc_get_CTRLA_ENABLE_bit(device->hw); 2120: 68c2 ldr r2, [r0, #12] 2122: 6913 ldr r3, [r2, #16] 2124: f013 0f03 tst.w r3, #3 2128: d1fb bne.n 2122 <_timer_is_started+0x2> tmp = ((Tc *)hw)->COUNT16.CTRLA.reg; 212a: 6810 ldr r0, [r2, #0] } 212c: f3c0 0040 ubfx r0, r0, #1, #1 2130: 4770 bx lr 00002132 <_tc_get_timer>: } 2132: 2000 movs r0, #0 2134: 4770 bx lr ... 00002138 <_timer_set_irq>: { 2138: b510 push {r4, lr} int8_t i = get_tc_index(hw); 213a: 68c0 ldr r0, [r0, #12] 213c: 4b09 ldr r3, [pc, #36] ; (2164 <_timer_set_irq+0x2c>) 213e: 4798 blx r3 2140: 4604 mov r4, r0 ASSERT(ARRAY_SIZE(_tcs)); 2142: f240 120f movw r2, #271 ; 0x10f 2146: 4908 ldr r1, [pc, #32] ; (2168 <_timer_set_irq+0x30>) 2148: 2001 movs r0, #1 214a: 4b08 ldr r3, [pc, #32] ; (216c <_timer_set_irq+0x34>) 214c: 4798 blx r3 _irq_set(_tcs[i].irq); 214e: eb04 0484 add.w r4, r4, r4, lsl #2 2152: 4b07 ldr r3, [pc, #28] ; (2170 <_timer_set_irq+0x38>) 2154: eb03 0484 add.w r4, r3, r4, lsl #2 2158: f894 0022 ldrb.w r0, [r4, #34] ; 0x22 215c: 4b05 ldr r3, [pc, #20] ; (2174 <_timer_set_irq+0x3c>) 215e: 4798 blx r3 2160: bd10 pop {r4, pc} 2162: bf00 nop 2164: 00001f05 .word 0x00001f05 2168: 0001b64c .word 0x0001b64c 216c: 000019bd .word 0x000019bd 2170: 0001b618 .word 0x0001b618 2174: 00001b1d .word 0x00001b1d 00002178 : { 2178: b508 push {r3, lr} tc_interrupt_handler(_tc0_dev); 217a: 4b06 ldr r3, [pc, #24] ; (2194 ) 217c: 6818 ldr r0, [r3, #0] void *const hw = device->hw; 217e: 68c3 ldr r3, [r0, #12] return (((Tc *)hw)->COUNT16.INTFLAG.reg & TC_INTFLAG_OVF) >> TC_INTFLAG_OVF_Pos; 2180: 7a9a ldrb r2, [r3, #10] if (hri_tc_get_interrupt_OVF_bit(hw)) { 2182: f012 0f01 tst.w r2, #1 2186: d100 bne.n 218a 2188: bd08 pop {r3, pc} ((Tc *)hw)->COUNT16.INTFLAG.reg = TC_INTFLAG_OVF; 218a: 2201 movs r2, #1 218c: 729a strb r2, [r3, #10] device->timer_cb.period_expired(device); 218e: 6803 ldr r3, [r0, #0] 2190: 4798 blx r3 } 2192: e7f9 b.n 2188 2194: 200000cc .word 0x200000cc 00002198
: #include "oracle.h" int main(void) { 2198: b508 push {r3, lr} oracle_init(); 219a: 4b02 ldr r3, [pc, #8] ; (21a4 ) 219c: 4798 blx r3 for(;;) { oracle_service(); 219e: 4c02 ldr r4, [pc, #8] ; (21a8 ) 21a0: 47a0 blx r4 21a2: e7fd b.n 21a0 21a4: 000021ad .word 0x000021ad 21a8: 00002281 .word 0x00002281 000021ac : 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) { 21ac: b530 push {r4, r5, lr} 21ae: b08d sub sp, #52 ; 0x34 * Currently the following initialization functions are supported: * - System clock initialization */ static inline void init_mcu(void) { _init_chip(); 21b0: 4b1e ldr r3, [pc, #120] ; (222c ) 21b2: 4798 blx r3 // init mcu init_mcu(); // uart init p_usart_init(); 21b4: 4b1e ldr r3, [pc, #120] ; (2230 ) 21b6: 4798 blx r3 // i2c init p_i2c_init(); 21b8: 4b1e ldr r3, [pc, #120] ; (2234 ) 21ba: 4798 blx r3 // gpio init p_gpio_init(); 21bc: 4b1e ldr r3, [pc, #120] ; (2238 ) 21be: 4798 blx r3 // time init p_tcc_init(); 21c0: 4b1e ldr r3, [pc, #120] ; (223c ) 21c2: 4798 blx r3 // devices init lv_init(); 21c4: 4b1e ldr r3, [pc, #120] ; (2240 ) 21c6: 4798 blx r3 ssd1963_init(); 21c8: 4b1e ldr r3, [pc, #120] ; (2244 ) 21ca: 4798 blx r3 lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX * 10); /*Initialize the display buffer*/ 21cc: 4c1e ldr r4, [pc, #120] ; (2248 ) 21ce: f44f 5396 mov.w r3, #4800 ; 0x12c0 21d2: 2200 movs r2, #0 21d4: 491d ldr r1, [pc, #116] ; (224c ) 21d6: 4620 mov r0, r4 21d8: 4d1d ldr r5, [pc, #116] ; (2250 ) 21da: 47a8 blx r5 lv_disp_drv_t disp_drv; /*Descriptor of a display driver*/ lv_disp_drv_init(&disp_drv); /*Basic initialization*/ 21dc: a801 add r0, sp, #4 21de: 4b1d ldr r3, [pc, #116] ; (2254 ) 21e0: 4798 blx r3 disp_drv.flush_cb = ssd1963_flush; /*Set your driver function*/ 21e2: 4b1d ldr r3, [pc, #116] ; (2258 ) 21e4: 9304 str r3, [sp, #16] disp_drv.buffer = &disp_buf; /*Assign the buffer to the display*/ 21e6: 9402 str r4, [sp, #8] lv_disp_drv_register(&disp_drv); /*Finally register the driver*/ 21e8: a801 add r0, sp, #4 21ea: 4b1c ldr r3, [pc, #112] ; (225c ) 21ec: 4798 blx r3 lv_obj_t* scr = lv_disp_get_scr_act(NULL); 21ee: 2000 movs r0, #0 21f0: 4b1b ldr r3, [pc, #108] ; (2260 ) 21f2: 4798 blx r3 21f4: 4605 mov r5, r0 lv_obj_t* hornet_image = lv_img_create(scr, NULL); 21f6: 2100 movs r1, #0 21f8: 4b1a ldr r3, [pc, #104] ; (2264 ) 21fa: 4798 blx r3 21fc: 4604 mov r4, r0 lv_img_set_src(hornet_image, &hornet); 21fe: 491a ldr r1, [pc, #104] ; (2268 ) 2200: 4b1a ldr r3, [pc, #104] ; (226c ) 2202: 4798 blx r3 lv_obj_set_pos(hornet_image, 0, 0); 2204: 2200 movs r2, #0 2206: 4611 mov r1, r2 2208: 4620 mov r0, r4 220a: 4c19 ldr r4, [pc, #100] ; (2270 ) 220c: 47a0 blx r4 lv_obj_t* random_text = lv_label_create(scr, NULL); 220e: 2100 movs r1, #0 2210: 4628 mov r0, r5 2212: 4b18 ldr r3, [pc, #96] ; (2274 ) 2214: 4798 blx r3 2216: 4605 mov r5, r0 lv_obj_set_pos(random_text, 90, 35); 2218: 2223 movs r2, #35 ; 0x23 221a: 215a movs r1, #90 ; 0x5a 221c: 47a0 blx r4 lv_label_set_text(random_text, "Hello World"); 221e: 4916 ldr r1, [pc, #88] ; (2278 ) 2220: 4628 mov r0, r5 2222: 4b16 ldr r3, [pc, #88] ; (227c ) 2224: 4798 blx r3 } 2226: b00d add sp, #52 ; 0x34 2228: bd30 pop {r4, r5, pc} 222a: bf00 nop 222c: 00001b81 .word 0x00001b81 2230: 0000140d .word 0x0000140d 2234: 0000136d .word 0x0000136d 2238: 00001239 .word 0x00001239 223c: 00001395 .word 0x00001395 2240: 00002851 .word 0x00002851 2244: 000002d1 .word 0x000002d1 2248: 20002650 .word 0x20002650 224c: 200000d0 .word 0x200000d0 2250: 00010d59 .word 0x00010d59 2254: 00010cf9 .word 0x00010cf9 2258: 00000ca5 .word 0x00000ca5 225c: 00010d79 .word 0x00010d79 2260: 00002335 .word 0x00002335 2264: 00019855 .word 0x00019855 2268: 0001b660 .word 0x0001b660 226c: 000195f9 .word 0x000195f9 2270: 00003425 .word 0x00003425 2274: 0001aaed .word 0x0001aaed 2278: 00023bc8 .word 0x00023bc8 227c: 0001a7ed .word 0x0001a7ed 00002280 : void oracle_service(void) { 2280: b508 push {r3, lr} delay_ms(1); 2282: 2001 movs r0, #1 2284: 4b02 ldr r3, [pc, #8] ; (2290 ) 2286: 4798 blx r3 lv_task_handler(); 2288: 4b02 ldr r3, [pc, #8] ; (2294 ) 228a: 4798 blx r3 228c: bd08 pop {r3, pc} 228e: bf00 nop 2290: 00001509 .word 0x00001509 2294: 000137b5 .word 0x000137b5 00002298 : bool lv_debug_check_null(const void * p) { if(p) return true; return false; } 2298: 3000 adds r0, #0 229a: bf18 it ne 229c: 2001 movne r0, #1 229e: 4770 bx lr 000022a0 : 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) { 22a0: b5f0 push {r4, r5, r6, r7, lr} 22a2: b0c3 sub sp, #268 ; 0x10c 22a4: 4605 mov r5, r0 22a6: 4614 mov r4, r2 static const char hex[] = "0123456789ABCDEF"; size_t msg_len = strlen(msg); 22a8: 4b1c ldr r3, [pc, #112] ; (231c ) 22aa: 4798 blx r3 uint32_t value_len = sizeof(unsigned long int); if(msg_len < 230) { 22ac: 28e5 cmp r0, #229 ; 0xe5 22ae: d82c bhi.n 230a 22b0: 4606 mov r6, r0 char buf[255]; char * bufp = buf; /*Add the function name*/ _lv_memcpy(bufp, msg, msg_len); 22b2: af02 add r7, sp, #8 22b4: 4602 mov r2, r0 22b6: 4629 mov r1, r5 22b8: 4638 mov r0, r7 22ba: 4b19 ldr r3, [pc, #100] ; (2320 ) 22bc: 4798 blx r3 bufp += msg_len; 22be: 19bd adds r5, r7, r6 /*Add value in hey*/ *bufp = ' '; 22c0: 2320 movs r3, #32 22c2: 55bb strb r3, [r7, r6] bufp ++; *bufp = '('; 22c4: 2328 movs r3, #40 ; 0x28 22c6: 706b strb r3, [r5, #1] bufp ++; *bufp = '0'; 22c8: 2330 movs r3, #48 ; 0x30 22ca: 70ab strb r3, [r5, #2] bufp ++; *bufp = 'x'; 22cc: 2378 movs r3, #120 ; 0x78 22ce: 70eb strb r3, [r5, #3] bufp ++; 22d0: 1d29 adds r1, r5, #4 22d2: 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]; 22d4: 4813 ldr r0, [pc, #76] ; (2324 ) uint8_t x = (unsigned long int)((unsigned long int)value >> (i * 4)) & 0xF; 22d6: fa24 f302 lsr.w r3, r4, r2 *bufp = hex[x]; 22da: f003 030f and.w r3, r3, #15 22de: 4403 add r3, r0 22e0: 7d1b ldrb r3, [r3, #20] 22e2: f801 3b01 strb.w r3, [r1], #1 22e6: 3a04 subs r2, #4 for(i = value_len * 2 - 1; i >= 0; i--) { 22e8: f112 0f04 cmn.w r2, #4 22ec: d1f3 bne.n 22d6 bufp++; } *bufp = ')'; 22ee: 2329 movs r3, #41 ; 0x29 22f0: 732b strb r3, [r5, #12] bufp ++; *bufp = '\0'; 22f2: 2300 movs r3, #0 22f4: 736b strb r3, [r5, #13] LV_LOG_ERROR(buf); 22f6: ab02 add r3, sp, #8 22f8: 9300 str r3, [sp, #0] 22fa: 4b0b ldr r3, [pc, #44] ; (2328 ) 22fc: 22bc movs r2, #188 ; 0xbc 22fe: 490b ldr r1, [pc, #44] ; (232c ) 2300: 2003 movs r0, #3 2302: 4c0b ldr r4, [pc, #44] ; (2330 ) 2304: 47a0 blx r4 } else { LV_LOG_ERROR(msg); } } 2306: b043 add sp, #268 ; 0x10c 2308: bdf0 pop {r4, r5, r6, r7, pc} LV_LOG_ERROR(msg); 230a: 9500 str r5, [sp, #0] 230c: 4b06 ldr r3, [pc, #24] ; (2328 ) 230e: 22bf movs r2, #191 ; 0xbf 2310: 4906 ldr r1, [pc, #24] ; (232c ) 2312: 2003 movs r0, #3 2314: 4c06 ldr r4, [pc, #24] ; (2330 ) 2316: 47a0 blx r4 } 2318: e7f5 b.n 2306 231a: bf00 nop 231c: 0001b507 .word 0x0001b507 2320: 0001263d .word 0x0001263d 2324: 00023bd4 .word 0x00023bd4 2328: 00023bfc .word 0x00023bfc 232c: 00023c10 .word 0x00023c10 2330: 00012245 .word 0x00012245 00002334 : * 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(); 2334: b108 cbz r0, 233a if(!disp) { LV_LOG_WARN("lv_scr_act: no display registered to get its act. screen"); return NULL; } return disp->act_scr; 2336: 6bc0 ldr r0, [r0, #60] ; 0x3c 2338: 4770 bx lr { 233a: b510 push {r4, lr} 233c: b082 sub sp, #8 if(!disp) disp = lv_disp_get_default(); 233e: 4b08 ldr r3, [pc, #32] ; (2360 ) 2340: 4798 blx r3 if(!disp) { 2342: b110 cbz r0, 234a return disp->act_scr; 2344: 6bc0 ldr r0, [r0, #60] ; 0x3c } 2346: b002 add sp, #8 2348: bd10 pop {r4, pc} LV_LOG_WARN("lv_scr_act: no display registered to get its act. screen"); 234a: 4b06 ldr r3, [pc, #24] ; (2364 ) 234c: 9300 str r3, [sp, #0] 234e: 4b06 ldr r3, [pc, #24] ; (2368 ) 2350: 222e movs r2, #46 ; 0x2e 2352: 4906 ldr r1, [pc, #24] ; (236c ) 2354: 2002 movs r0, #2 2356: 4c06 ldr r4, [pc, #24] ; (2370 ) 2358: 47a0 blx r4 return NULL; 235a: 2000 movs r0, #0 235c: e7f3 b.n 2346 235e: bf00 nop 2360: 00010ec9 .word 0x00010ec9 2364: 00023dec .word 0x00023dec 2368: 00023d18 .word 0x00023d18 236c: 00023dc0 .word 0x00023dc0 2370: 00012245 .word 0x00012245 00002374 : * @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(); 2374: b108 cbz r0, 237a if(!disp) { LV_LOG_WARN("lv_layer_top: no display registered to get its top layer"); return NULL; } return disp->top_layer; 2376: 6c00 ldr r0, [r0, #64] ; 0x40 2378: 4770 bx lr { 237a: b510 push {r4, lr} 237c: b082 sub sp, #8 if(!disp) disp = lv_disp_get_default(); 237e: 4b08 ldr r3, [pc, #32] ; (23a0 ) 2380: 4798 blx r3 if(!disp) { 2382: b110 cbz r0, 238a return disp->top_layer; 2384: 6c00 ldr r0, [r0, #64] ; 0x40 } 2386: b002 add sp, #8 2388: bd10 pop {r4, pc} LV_LOG_WARN("lv_layer_top: no display registered to get its top layer"); 238a: 4b06 ldr r3, [pc, #24] ; (23a4 ) 238c: 9300 str r3, [sp, #0] 238e: 4b06 ldr r3, [pc, #24] ; (23a8 ) 2390: 224b movs r2, #75 ; 0x4b 2392: 4906 ldr r1, [pc, #24] ; (23ac ) 2394: 2002 movs r0, #2 2396: 4c06 ldr r4, [pc, #24] ; (23b0 ) 2398: 47a0 blx r4 return NULL; 239a: 2000 movs r0, #0 239c: e7f3 b.n 2386 239e: bf00 nop 23a0: 00010ec9 .word 0x00010ec9 23a4: 00023e28 .word 0x00023e28 23a8: 00023d2c .word 0x00023d2c 23ac: 00023dc0 .word 0x00023dc0 23b0: 00012245 .word 0x00012245 000023b4 : * @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(); 23b4: b108 cbz r0, 23ba if(!disp) { LV_LOG_WARN("lv_layer_sys: no display registered to get its sys. layer"); return NULL; } return disp->sys_layer; 23b6: 6c40 ldr r0, [r0, #68] ; 0x44 23b8: 4770 bx lr { 23ba: b510 push {r4, lr} 23bc: b082 sub sp, #8 if(!disp) disp = lv_disp_get_default(); 23be: 4b08 ldr r3, [pc, #32] ; (23e0 ) 23c0: 4798 blx r3 if(!disp) { 23c2: b110 cbz r0, 23ca return disp->sys_layer; 23c4: 6c40 ldr r0, [r0, #68] ; 0x44 } 23c6: b002 add sp, #8 23c8: bd10 pop {r4, pc} LV_LOG_WARN("lv_layer_sys: no display registered to get its sys. layer"); 23ca: 4b06 ldr r3, [pc, #24] ; (23e4 ) 23cc: 9300 str r3, [sp, #0] 23ce: 4b06 ldr r3, [pc, #24] ; (23e8 ) 23d0: 225c movs r2, #92 ; 0x5c 23d2: 4906 ldr r1, [pc, #24] ; (23ec ) 23d4: 2002 movs r0, #2 23d6: 4c06 ldr r4, [pc, #24] ; (23f0 ) 23d8: 47a0 blx r4 return NULL; 23da: 2000 movs r0, #0 23dc: e7f3 b.n 23c6 23de: bf00 nop 23e0: 00010ec9 .word 0x00010ec9 23e4: 00023e64 .word 0x00023e64 23e8: 00023d44 .word 0x00023d44 23ec: 00023dc0 .word 0x00023dc0 23f0: 00012245 .word 0x00012245 000023f4 : 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) { 23f4: b1a0 cbz r0, 2420 { 23f6: b538 push {r3, r4, r5, lr} 23f8: 4603 mov r3, r0 while(i != NULL) { 23fa: 2400 movs r4, #0 if(i->top != 0) last_top = i; i = lv_obj_get_parent(i); 23fc: 4d09 ldr r5, [pc, #36] ; (2424 ) if(i->top != 0) last_top = i; 23fe: f893 2034 ldrb.w r2, [r3, #52] ; 0x34 2402: f002 0220 and.w r2, r2, #32 2406: 2a00 cmp r2, #0 2408: bf18 it ne 240a: 461c movne r4, r3 i = lv_obj_get_parent(i); 240c: 4618 mov r0, r3 240e: 47a8 blx r5 while(i != NULL) { 2410: 4603 mov r3, r0 2412: 2800 cmp r0, #0 2414: d1f3 bne.n 23fe } if(last_top != NULL) { 2416: b114 cbz r4, 241e /*Move the last_top object to the foreground*/ lv_obj_move_foreground(last_top); 2418: 4620 mov r0, r4 241a: 4b03 ldr r3, [pc, #12] ; (2428 ) 241c: 4798 blx r3 241e: bd38 pop {r3, r4, r5, pc} 2420: 4770 bx lr 2422: bf00 nop 2424: 00002c65 .word 0x00002c65 2428: 0000339d .word 0x0000339d 0000242c : { 242c: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} if(group->frozen) return; 2430: 7d03 ldrb r3, [r0, #20] 2432: f013 0f01 tst.w r3, #1 2436: d12a bne.n 248e 2438: 4617 mov r7, r2 243a: 468a mov sl, r1 243c: 4606 mov r6, r0 lv_obj_t ** obj_next = group->obj_focus; 243e: 68c4 ldr r4, [r0, #12] bool can_begin = true; 2440: f04f 0901 mov.w r9, #1 lv_obj_t ** obj_sentinel = NULL; 2444: 2500 movs r5, #0 if(!lv_obj_get_hidden(*obj_next)) break; 2446: f8df 80c4 ldr.w r8, [pc, #196] ; 250c can_begin = false; 244a: 46ab mov fp, r5 244c: e04a b.n 24e4 if(group->wrap || obj_sentinel == NULL) { 244e: 7d33 ldrb r3, [r6, #20] 2450: f013 0f10 tst.w r3, #16 2454: d100 bne.n 2458 2456: b9d5 cbnz r5, 248e if(!can_begin) return; 2458: f1b9 0f00 cmp.w r9, #0 245c: d017 beq.n 248e obj_next = begin(&group->obj_ll); 245e: 4630 mov r0, r6 2460: 47d0 blx sl 2462: 4604 mov r4, r0 if(obj_sentinel == NULL) { 2464: 2d00 cmp r5, #0 2466: d035 beq.n 24d4 can_begin = false; 2468: 46d9 mov r9, fp 246a: e046 b.n 24fa if(obj_next == group->obj_focus) return; /*There's only one visible object and it's already focused*/ 246c: 68f3 ldr r3, [r6, #12] 246e: 42a3 cmp r3, r4 2470: d00d beq.n 248e if(group->obj_focus) { 2472: b193 cbz r3, 249a (*group->obj_focus)->signal_cb(*group->obj_focus, LV_SIGNAL_DEFOCUS, NULL); 2474: 6818 ldr r0, [r3, #0] 2476: 69c3 ldr r3, [r0, #28] 2478: 2200 movs r2, #0 247a: 2117 movs r1, #23 247c: 4798 blx r3 lv_res_t res = lv_event_send(*group->obj_focus, LV_EVENT_DEFOCUSED, NULL); 247e: 68f3 ldr r3, [r6, #12] 2480: 2200 movs r2, #0 2482: 210e movs r1, #14 2484: 6818 ldr r0, [r3, #0] 2486: 4b1e ldr r3, [pc, #120] ; (2500 ) 2488: 4798 blx r3 if(res != LV_RES_OK) return; 248a: 2801 cmp r0, #1 248c: d001 beq.n 2492 248e: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} lv_obj_invalidate(*group->obj_focus); 2492: 68f3 ldr r3, [r6, #12] 2494: 6818 ldr r0, [r3, #0] 2496: 4b1b ldr r3, [pc, #108] ; (2504 ) 2498: 4798 blx r3 group->obj_focus = obj_next; 249a: 60f4 str r4, [r6, #12] (*group->obj_focus)->signal_cb(*group->obj_focus, LV_SIGNAL_FOCUS, NULL); 249c: 6820 ldr r0, [r4, #0] 249e: 69c3 ldr r3, [r0, #28] 24a0: 2200 movs r2, #0 24a2: 2116 movs r1, #22 24a4: 4798 blx r3 lv_res_t res = lv_event_send(*group->obj_focus, LV_EVENT_FOCUSED, NULL); 24a6: 68f3 ldr r3, [r6, #12] 24a8: 2200 movs r2, #0 24aa: 210d movs r1, #13 24ac: 6818 ldr r0, [r3, #0] 24ae: 4b14 ldr r3, [pc, #80] ; (2500 ) 24b0: 4798 blx r3 if(res != LV_RES_OK) return; 24b2: 2801 cmp r0, #1 24b4: d1eb bne.n 248e obj_to_foreground(*group->obj_focus); 24b6: 68f3 ldr r3, [r6, #12] 24b8: 6818 ldr r0, [r3, #0] 24ba: 4b13 ldr r3, [pc, #76] ; (2508 ) 24bc: 4798 blx r3 lv_obj_invalidate(*group->obj_focus); 24be: 68f3 ldr r3, [r6, #12] 24c0: 6818 ldr r0, [r3, #0] 24c2: 4b10 ldr r3, [pc, #64] ; (2504 ) 24c4: 4798 blx r3 if(group->focus_cb) group->focus_cb(group); 24c6: 6933 ldr r3, [r6, #16] 24c8: 2b00 cmp r3, #0 24ca: d0e0 beq.n 248e 24cc: 4630 mov r0, r6 24ce: 4798 blx r3 24d0: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} if(obj_sentinel == NULL) return; /*Group is empty*/ 24d4: 2800 cmp r0, #0 24d6: d0da beq.n 248e obj_next = begin(&group->obj_ll); 24d8: 4605 mov r5, r0 can_begin = false; 24da: 46d9 mov r9, fp if(!lv_obj_get_hidden(*obj_next)) break; 24dc: 6820 ldr r0, [r4, #0] 24de: 47c0 blx r8 24e0: 2800 cmp r0, #0 24e2: d0c3 beq.n 246c if(obj_next == NULL) { 24e4: 2c00 cmp r4, #0 24e6: d0b2 beq.n 244e 24e8: 2d00 cmp r5, #0 24ea: bf08 it eq 24ec: 4625 moveq r5, r4 obj_next = move(&group->obj_ll, obj_next); 24ee: 4621 mov r1, r4 24f0: 4630 mov r0, r6 24f2: 47b8 blx r7 24f4: 4604 mov r4, r0 if(obj_next == obj_sentinel) return; 24f6: 42a8 cmp r0, r5 24f8: d0c9 beq.n 248e if(obj_next == NULL) continue; 24fa: 2c00 cmp r4, #0 24fc: d1ee bne.n 24dc 24fe: e7f1 b.n 24e4 2500: 00002ab5 .word 0x00002ab5 2504: 00003309 .word 0x00003309 2508: 000023f5 .word 0x000023f5 250c: 0000318d .word 0x0000318d 00002510 <_lv_group_init>: { 2510: b508 push {r3, lr} _lv_ll_init(&LV_GC_ROOT(_lv_group_ll), sizeof(lv_group_t)); 2512: 2118 movs r1, #24 2514: 4801 ldr r0, [pc, #4] ; (251c <_lv_group_init+0xc>) 2516: 4b02 ldr r3, [pc, #8] ; (2520 <_lv_group_init+0x10>) 2518: 4798 blx r3 251a: bd08 pop {r3, pc} 251c: 20006dec .word 0x20006dec 2520: 00011ee1 .word 0x00011ee1 00002524 : { 2524: b508 push {r3, lr} focus_next_core(group, _lv_ll_get_head, _lv_ll_get_next); 2526: 4a02 ldr r2, [pc, #8] ; (2530 ) 2528: 4902 ldr r1, [pc, #8] ; (2534 ) 252a: 4b03 ldr r3, [pc, #12] ; (2538 ) 252c: 4798 blx r3 252e: bd08 pop {r3, pc} 2530: 00011fa5 .word 0x00011fa5 2534: 00011f91 .word 0x00011f91 2538: 0000242d .word 0x0000242d 0000253c : { 253c: b508 push {r3, lr} focus_next_core(group, _lv_ll_get_tail, _lv_ll_get_prev); 253e: 4a02 ldr r2, [pc, #8] ; (2548 ) 2540: 4902 ldr r1, [pc, #8] ; (254c ) 2542: 4b03 ldr r3, [pc, #12] ; (2550 ) 2544: 4798 blx r3 2546: bd08 pop {r3, pc} 2548: 00011fd1 .word 0x00011fd1 254c: 00011f9b .word 0x00011f9b 2550: 0000242d .word 0x0000242d 00002554 : { 2554: b538 push {r3, r4, r5, lr} 2556: 4604 mov r4, r0 uint8_t temp_wrap = g->wrap; 2558: 7d03 ldrb r3, [r0, #20] 255a: f3c3 1500 ubfx r5, r3, #4, #1 g->wrap = 1; 255e: f043 0310 orr.w r3, r3, #16 2562: 7503 strb r3, [r0, #20] if(g->refocus_policy == LV_GROUP_REFOCUS_POLICY_NEXT) 2564: f013 0f08 tst.w r3, #8 lv_group_focus_next(g); 2568: bf0c ite eq 256a: 4b04 ldreq r3, [pc, #16] ; (257c ) lv_group_focus_prev(g); 256c: 4b04 ldrne r3, [pc, #16] ; (2580 ) 256e: 4798 blx r3 g->wrap = temp_wrap; 2570: 7d23 ldrb r3, [r4, #20] 2572: f365 1304 bfi r3, r5, #4, #1 2576: 7523 strb r3, [r4, #20] 2578: bd38 pop {r3, r4, r5, pc} 257a: bf00 nop 257c: 00002525 .word 0x00002525 2580: 0000253d .word 0x0000253d 00002584 : if(group == NULL) return; 2584: 2800 cmp r0, #0 2586: d04f beq.n 2628 { 2588: b5f0 push {r4, r5, r6, r7, lr} 258a: b083 sub sp, #12 258c: 4605 mov r5, r0 258e: 460c mov r4, r1 _LV_LL_READ(group->obj_ll, obj_i) { 2590: 4607 mov r7, r0 2592: 4b26 ldr r3, [pc, #152] ; (262c ) 2594: 4798 blx r3 2596: 4601 mov r1, r0 2598: b1a0 cbz r0, 25c4 if((*obj_i) == obj) { 259a: 6803 ldr r3, [r0, #0] 259c: 429c cmp r4, r3 259e: d007 beq.n 25b0 _LV_LL_READ(group->obj_ll, obj_i) { 25a0: 4e23 ldr r6, [pc, #140] ; (2630 ) 25a2: 4638 mov r0, r7 25a4: 47b0 blx r6 25a6: 4601 mov r1, r0 25a8: b160 cbz r0, 25c4 if((*obj_i) == obj) { 25aa: 680b ldr r3, [r1, #0] 25ac: 42a3 cmp r3, r4 25ae: d1f8 bne.n 25a2 LV_LOG_INFO("lv_group_add_obj: the object is already added to this group"); 25b0: 4b20 ldr r3, [pc, #128] ; (2634 ) 25b2: 9300 str r3, [sp, #0] 25b4: 4b20 ldr r3, [pc, #128] ; (2638 ) 25b6: 2275 movs r2, #117 ; 0x75 25b8: 4920 ldr r1, [pc, #128] ; (263c ) 25ba: 2001 movs r0, #1 25bc: 4c20 ldr r4, [pc, #128] ; (2640 ) 25be: 47a0 blx r4 } 25c0: b003 add sp, #12 25c2: bdf0 pop {r4, r5, r6, r7, pc} if(obj->group_p) { 25c4: 6ba3 ldr r3, [r4, #56] ; 0x38 25c6: b173 cbz r3, 25e6 if(lv_obj_is_focused(obj)) { 25c8: 4620 mov r0, r4 25ca: 4b1e ldr r3, [pc, #120] ; (2644 ) 25cc: 4798 blx r3 25ce: b150 cbz r0, 25e6 lv_group_refocus(obj->group_p); 25d0: 6ba0 ldr r0, [r4, #56] ; 0x38 25d2: 4b1d ldr r3, [pc, #116] ; (2648 ) 25d4: 4798 blx r3 LV_LOG_INFO("lv_group_add_obj: assign object to an other group"); 25d6: 4b1d ldr r3, [pc, #116] ; (264c ) 25d8: 9300 str r3, [sp, #0] 25da: 4b17 ldr r3, [pc, #92] ; (2638 ) 25dc: 227f movs r2, #127 ; 0x7f 25de: 4917 ldr r1, [pc, #92] ; (263c ) 25e0: 2001 movs r0, #1 25e2: 4e17 ldr r6, [pc, #92] ; (2640 ) 25e4: 47b0 blx r6 obj->group_p = group; 25e6: 63a5 str r5, [r4, #56] ; 0x38 lv_obj_t ** next = _lv_ll_ins_tail(&group->obj_ll); 25e8: 4628 mov r0, r5 25ea: 4b19 ldr r3, [pc, #100] ; (2650 ) 25ec: 4798 blx r3 25ee: 4606 mov r6, r0 LV_ASSERT_MEM(next); 25f0: 4b18 ldr r3, [pc, #96] ; (2654 ) 25f2: 4798 blx r3 25f4: b158 cbz r0, 260e if(next == NULL) return; 25f6: 2e00 cmp r6, #0 25f8: d0e2 beq.n 25c0 *next = obj; 25fa: 6034 str r4, [r6, #0] if(_lv_ll_get_head(&group->obj_ll) == next) { 25fc: 4628 mov r0, r5 25fe: 4b0b ldr r3, [pc, #44] ; (262c ) 2600: 4798 blx r3 2602: 4286 cmp r6, r0 2604: d1dc bne.n 25c0 lv_group_refocus(group); 2606: 4628 mov r0, r5 2608: 4b0f ldr r3, [pc, #60] ; (2648 ) 260a: 4798 blx r3 260c: e7d8 b.n 25c0 LV_ASSERT_MEM(next); 260e: 4b0a ldr r3, [pc, #40] ; (2638 ) 2610: 9300 str r3, [sp, #0] 2612: 2285 movs r2, #133 ; 0x85 2614: 4909 ldr r1, [pc, #36] ; (263c ) 2616: 2003 movs r0, #3 2618: 4c09 ldr r4, [pc, #36] ; (2640 ) 261a: 47a0 blx r4 261c: 4632 mov r2, r6 261e: 2300 movs r3, #0 2620: 480d ldr r0, [pc, #52] ; (2658 ) 2622: 490e ldr r1, [pc, #56] ; (265c ) 2624: 4788 blx r1 2626: e7fe b.n 2626 2628: 4770 bx lr 262a: bf00 nop 262c: 00011f91 .word 0x00011f91 2630: 00011fa5 .word 0x00011fa5 2634: 00023fd0 .word 0x00023fd0 2638: 00023f80 .word 0x00023f80 263c: 00023f94 .word 0x00023f94 2640: 00012245 .word 0x00012245 2644: 00004fe1 .word 0x00004fe1 2648: 00002555 .word 0x00002555 264c: 0002400c .word 0x0002400c 2650: 00011f45 .word 0x00011f45 2654: 00002299 .word 0x00002299 2658: 00023fc0 .word 0x00023fc0 265c: 000022a1 .word 0x000022a1 00002660 : { 2660: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} lv_group_t * g = obj->group_p; 2664: f8d0 8038 ldr.w r8, [r0, #56] ; 0x38 if(g == NULL) return; 2668: f1b8 0f00 cmp.w r8, #0 266c: d051 beq.n 2712 if(g->obj_focus == NULL) return; /*Just to be sure (Not possible if there is at least one object in the group)*/ 266e: f8d8 300c ldr.w r3, [r8, #12] 2672: 2b00 cmp r3, #0 2674: d04d beq.n 2712 2676: 4605 mov r5, r0 if(*g->obj_focus == obj) { 2678: 681b ldr r3, [r3, #0] 267a: 4298 cmp r0, r3 267c: d01e beq.n 26bc _LV_LL_READ(g->obj_ll, i) { 267e: 4646 mov r6, r8 2680: 4640 mov r0, r8 2682: 4b25 ldr r3, [pc, #148] ; (2718 ) 2684: 4798 blx r3 2686: 4604 mov r4, r0 2688: 2800 cmp r0, #0 268a: d042 beq.n 2712 if(*i == obj) { 268c: 6803 ldr r3, [r0, #0] 268e: 429d cmp r5, r3 2690: d009 beq.n 26a6 _LV_LL_READ(g->obj_ll, i) { 2692: 4f22 ldr r7, [pc, #136] ; (271c ) 2694: 4621 mov r1, r4 2696: 4630 mov r0, r6 2698: 47b8 blx r7 269a: 4604 mov r4, r0 269c: 2800 cmp r0, #0 269e: d038 beq.n 2712 if(*i == obj) { 26a0: 6823 ldr r3, [r4, #0] 26a2: 429d cmp r5, r3 26a4: d1f6 bne.n 2694 _lv_ll_remove(&g->obj_ll, i); 26a6: 4621 mov r1, r4 26a8: 4640 mov r0, r8 26aa: 4b1d ldr r3, [pc, #116] ; (2720 ) 26ac: 4798 blx r3 lv_mem_free(i); 26ae: 4620 mov r0, r4 26b0: 4b1c ldr r3, [pc, #112] ; (2724 ) 26b2: 4798 blx r3 obj->group_p = NULL; 26b4: 2300 movs r3, #0 26b6: 63ab str r3, [r5, #56] ; 0x38 break; 26b8: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(g->frozen) g->frozen = 0; 26bc: f898 3014 ldrb.w r3, [r8, #20] 26c0: f013 0f01 tst.w r3, #1 26c4: d005 beq.n 26d2 26c6: f898 3014 ldrb.w r3, [r8, #20] 26ca: f36f 0300 bfc r3, #0, #1 26ce: 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) { 26d2: 4640 mov r0, r8 26d4: 4b10 ldr r3, [pc, #64] ; (2718 ) 26d6: 4798 blx r3 26d8: f8d8 300c ldr.w r3, [r8, #12] 26dc: 4283 cmp r3, r0 26de: d00b beq.n 26f8 lv_group_refocus(g); 26e0: 4640 mov r0, r8 26e2: 4b11 ldr r3, [pc, #68] ; (2728 ) 26e4: 4798 blx r3 if(*g->obj_focus == obj) { 26e6: f8d8 300c ldr.w r3, [r8, #12] 26ea: 681b ldr r3, [r3, #0] 26ec: 429d cmp r5, r3 g->obj_focus = NULL; 26ee: bf04 itt eq 26f0: 2300 moveq r3, #0 26f2: f8c8 300c streq.w r3, [r8, #12] 26f6: e7c2 b.n 267e if(_lv_ll_get_head(&g->obj_ll) == g->obj_focus && _lv_ll_get_tail(&g->obj_ll) == g->obj_focus) { 26f8: 4640 mov r0, r8 26fa: 4b0c ldr r3, [pc, #48] ; (272c ) 26fc: 4798 blx r3 26fe: f8d8 300c ldr.w r3, [r8, #12] 2702: 4298 cmp r0, r3 2704: d1ec bne.n 26e0 (*g->obj_focus)->signal_cb(*g->obj_focus, LV_SIGNAL_DEFOCUS, NULL); 2706: 6800 ldr r0, [r0, #0] 2708: 69c3 ldr r3, [r0, #28] 270a: 2200 movs r2, #0 270c: 2117 movs r1, #23 270e: 4798 blx r3 2710: e7e9 b.n 26e6 2712: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 2716: bf00 nop 2718: 00011f91 .word 0x00011f91 271c: 00011fa5 .word 0x00011fa5 2720: 0001207d .word 0x0001207d 2724: 000124ad .word 0x000124ad 2728: 00002555 .word 0x00002555 272c: 00011f9b .word 0x00011f9b 00002730 : if(!group) return NULL; 2730: b118 cbz r0, 273a if(group->obj_focus == NULL) return NULL; 2732: 68c3 ldr r3, [r0, #12] 2734: b11b cbz r3, 273e return *group->obj_focus; 2736: 6818 ldr r0, [r3, #0] 2738: 4770 bx lr if(!group) return NULL; 273a: 2000 movs r0, #0 273c: 4770 bx lr if(group->obj_focus == NULL) return NULL; 273e: 2000 movs r0, #0 } 2740: 4770 bx lr 00002742 : if(!group) return false; 2742: b118 cbz r0, 274c return group->editing ? true : false; 2744: 7d00 ldrb r0, [r0, #20] 2746: f3c0 0040 ubfx r0, r0, #1, #1 274a: 4770 bx lr if(!group) return false; 274c: 2000 movs r0, #0 } 274e: 4770 bx lr 00002750 : * right now */ lv_indev_t * lv_indev_get_act(void) { return indev_act; } 2750: 4b01 ldr r3, [pc, #4] ; (2758 ) 2752: 6858 ldr r0, [r3, #4] 2754: 4770 bx lr 2756: bf00 nop 2758: 20002674 .word 0x20002674 0000275c : * 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) { 275c: b5f8 push {r3, r4, r5, r6, r7, lr} if(indev) { 275e: b1b0 cbz r0, 278e 2760: 4603 mov r3, r0 indev->proc.reset_query = 1; 2762: f890 2050 ldrb.w r2, [r0, #80] ; 0x50 2766: f042 0202 orr.w r2, r2, #2 276a: f880 2050 strb.w r2, [r0, #80] ; 0x50 if(indev_act == indev) indev_obj_act = NULL; 276e: 4a18 ldr r2, [pc, #96] ; (27d0 ) 2770: 6852 ldr r2, [r2, #4] 2772: 4290 cmp r0, r2 2774: d004 beq.n 2780 if(obj == NULL || indev->proc.types.pointer.last_pressed == obj) { 2776: b139 cbz r1, 2788 2778: 6bda ldr r2, [r3, #60] ; 0x3c 277a: 4291 cmp r1, r2 277c: d004 beq.n 2788 277e: bdf8 pop {r3, r4, r5, r6, r7, pc} if(indev_act == indev) indev_obj_act = NULL; 2780: 2000 movs r0, #0 2782: 4a13 ldr r2, [pc, #76] ; (27d0 ) 2784: 6010 str r0, [r2, #0] 2786: e7f6 b.n 2776 indev->proc.types.pointer.last_pressed = NULL; 2788: 2200 movs r2, #0 278a: 63da str r2, [r3, #60] ; 0x3c 278c: bdf8 pop {r3, r4, r5, r6, r7, pc} 278e: 460c mov r4, r1 } } else { lv_indev_t * i = lv_indev_get_next(NULL); 2790: 2000 movs r0, #0 2792: 4b10 ldr r3, [pc, #64] ; (27d4 ) 2794: 4798 blx r3 while(i) { 2796: 4603 mov r3, r0 2798: 2800 cmp r0, #0 279a: d0f0 beq.n 277e i->proc.reset_query = 1; if(indev_act == i) indev_obj_act = NULL; 279c: 4d0c ldr r5, [pc, #48] ; (27d0 ) 279e: 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); 27a0: 4e0c ldr r6, [pc, #48] ; (27d4 ) 27a2: e005 b.n 27b0 i->proc.types.pointer.last_pressed = NULL; 27a4: 63df str r7, [r3, #60] ; 0x3c i = lv_indev_get_next(i); 27a6: 4618 mov r0, r3 27a8: 47b0 blx r6 while(i) { 27aa: 4603 mov r3, r0 27ac: 2800 cmp r0, #0 27ae: d0e6 beq.n 277e i->proc.reset_query = 1; 27b0: f893 2050 ldrb.w r2, [r3, #80] ; 0x50 27b4: f042 0202 orr.w r2, r2, #2 27b8: f883 2050 strb.w r2, [r3, #80] ; 0x50 if(indev_act == i) indev_obj_act = NULL; 27bc: 686a ldr r2, [r5, #4] 27be: 429a cmp r2, r3 27c0: bf08 it eq 27c2: 602f streq r7, [r5, #0] if(obj == NULL || i->proc.types.pointer.last_pressed == obj) { 27c4: 2c00 cmp r4, #0 27c6: d0ed beq.n 27a4 27c8: 6bda ldr r2, [r3, #60] ; 0x3c 27ca: 4294 cmp r4, r2 27cc: d1eb bne.n 27a6 27ce: e7e9 b.n 27a4 27d0: 20002674 .word 0x20002674 27d4: 00011009 .word 0x00011009 000027d8 <_lv_indev_init>: { 27d8: b508 push {r3, lr} lv_indev_reset(NULL, NULL); /*Reset all input devices*/ 27da: 2100 movs r1, #0 27dc: 4608 mov r0, r1 27de: 4b01 ldr r3, [pc, #4] ; (27e4 <_lv_indev_init+0xc>) 27e0: 4798 blx r3 27e2: bd08 pop {r3, pc} 27e4: 0000275d .word 0x0000275d 000027e8 : * @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; } 27e8: 4b01 ldr r3, [pc, #4] ; (27f0 ) 27ea: 6818 ldr r0, [r3, #0] 27ec: 4770 bx lr 27ee: bf00 nop 27f0: 20002674 .word 0x20002674 000027f4 : * @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) { 27f4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 27f8: 4689 mov r9, r1 27fa: 4690 mov r8, r2 lv_obj_t * i; _LV_LL_READ(obj->child_ll, i) { 27fc: f100 0a04 add.w sl, r0, #4 2800: 4650 mov r0, sl 2802: 4b11 ldr r3, [pc, #68] ; (2848 ) 2804: 4798 blx r3 2806: b1e0 cbz r0, 2842 2808: 4604 mov r4, r0 i->coords.x1 += x_diff; 280a: fa1f f689 uxth.w r6, r9 i->coords.y1 += y_diff; 280e: fa1f f588 uxth.w r5, r8 _LV_LL_READ(obj->child_ll, i) { 2812: 4f0e ldr r7, [pc, #56] ; (284c ) i->coords.x1 += x_diff; 2814: 8a23 ldrh r3, [r4, #16] 2816: 4433 add r3, r6 2818: 8223 strh r3, [r4, #16] i->coords.y1 += y_diff; 281a: 8a63 ldrh r3, [r4, #18] 281c: 442b add r3, r5 281e: 8263 strh r3, [r4, #18] i->coords.x2 += x_diff; 2820: 8aa3 ldrh r3, [r4, #20] 2822: 4433 add r3, r6 2824: 82a3 strh r3, [r4, #20] i->coords.y2 += y_diff; 2826: 8ae3 ldrh r3, [r4, #22] 2828: 442b add r3, r5 282a: 82e3 strh r3, [r4, #22] refresh_children_position(i, x_diff, y_diff); 282c: 4642 mov r2, r8 282e: 4649 mov r1, r9 2830: 4620 mov r0, r4 2832: f7ff ffdf bl 27f4 _LV_LL_READ(obj->child_ll, i) { 2836: 4621 mov r1, r4 2838: 4650 mov r0, sl 283a: 47b8 blx r7 283c: 4604 mov r4, r0 283e: 2800 cmp r0, #0 2840: d1e8 bne.n 2814 2842: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 2846: bf00 nop 2848: 00011f91 .word 0x00011f91 284c: 00011fa5 .word 0x00011fa5 00002850 : { 2850: b530 push {r4, r5, lr} 2852: b085 sub sp, #20 if(lv_initialized) { 2854: 4b21 ldr r3, [pc, #132] ; (28dc ) 2856: 781b ldrb r3, [r3, #0] 2858: 2b00 cmp r3, #0 285a: d136 bne.n 28ca _lv_mem_init(); 285c: 4b20 ldr r3, [pc, #128] ; (28e0 ) 285e: 4798 blx r3 _lv_task_core_init(); 2860: 4b20 ldr r3, [pc, #128] ; (28e4 ) 2862: 4798 blx r3 _lv_fs_init(); 2864: 4b20 ldr r3, [pc, #128] ; (28e8 ) 2866: 4798 blx r3 _lv_anim_core_init(); 2868: 4b20 ldr r3, [pc, #128] ; (28ec ) 286a: 4798 blx r3 _lv_group_init(); 286c: 4b20 ldr r3, [pc, #128] ; (28f0 ) 286e: 4798 blx r3 _lv_ll_init(&LV_GC_ROOT(_lv_obj_style_trans_ll), sizeof(lv_style_trans_t)); 2870: 2110 movs r1, #16 2872: 4820 ldr r0, [pc, #128] ; (28f4 ) 2874: 4c20 ldr r4, [pc, #128] ; (28f8 ) 2876: 47a0 blx r4 lv_theme_t * th = LV_THEME_DEFAULT_INIT(LV_THEME_DEFAULT_COLOR_PRIMARY, LV_THEME_DEFAULT_COLOR_SECONDARY, 2878: 4b20 ldr r3, [pc, #128] ; (28fc ) 287a: 9302 str r3, [sp, #8] 287c: 9301 str r3, [sp, #4] 287e: 9300 str r3, [sp, #0] 2880: 2202 movs r2, #2 2882: f04f 011f mov.w r1, #31 2886: f64f 0000 movw r0, #63488 ; 0xf800 288a: 4d1d ldr r5, [pc, #116] ; (2900 ) 288c: 47a8 blx r5 lv_theme_set_act(th); 288e: 4b1d ldr r3, [pc, #116] ; (2904 ) 2890: 4798 blx r3 _lv_refr_init(); 2892: 4b1d ldr r3, [pc, #116] ; (2908 ) 2894: 4798 blx r3 _lv_ll_init(&LV_GC_ROOT(_lv_disp_ll), sizeof(lv_disp_t)); 2896: f44f 71b8 mov.w r1, #368 ; 0x170 289a: 481c ldr r0, [pc, #112] ; (290c ) 289c: 47a0 blx r4 _lv_ll_init(&LV_GC_ROOT(_lv_indev_ll), sizeof(lv_indev_t)); 289e: 2160 movs r1, #96 ; 0x60 28a0: 481b ldr r0, [pc, #108] ; (2910 ) 28a2: 47a0 blx r4 _lv_indev_init(); 28a4: 4b1b ldr r3, [pc, #108] ; (2914 ) 28a6: 4798 blx r3 _lv_img_decoder_init(); 28a8: 4b1b ldr r3, [pc, #108] ; (2918 ) 28aa: 4798 blx r3 lv_img_cache_set_size(LV_IMG_CACHE_DEF_SIZE); 28ac: 2001 movs r0, #1 28ae: 4b1b ldr r3, [pc, #108] ; (291c ) 28b0: 4798 blx r3 lv_initialized = true; 28b2: 2001 movs r0, #1 28b4: 4b09 ldr r3, [pc, #36] ; (28dc ) 28b6: 7018 strb r0, [r3, #0] LV_LOG_INFO("lv_init ready"); 28b8: 4b19 ldr r3, [pc, #100] ; (2920 ) 28ba: 9300 str r3, [sp, #0] 28bc: 4b19 ldr r3, [pc, #100] ; (2924 ) 28be: 22a2 movs r2, #162 ; 0xa2 28c0: 4919 ldr r1, [pc, #100] ; (2928 ) 28c2: 4c1a ldr r4, [pc, #104] ; (292c ) 28c4: 47a0 blx r4 } 28c6: b005 add sp, #20 28c8: bd30 pop {r4, r5, pc} LV_LOG_WARN("lv_init: already inited"); 28ca: 4b19 ldr r3, [pc, #100] ; (2930 ) 28cc: 9300 str r3, [sp, #0] 28ce: 4b15 ldr r3, [pc, #84] ; (2924 ) 28d0: 2278 movs r2, #120 ; 0x78 28d2: 4915 ldr r1, [pc, #84] ; (2928 ) 28d4: 2002 movs r0, #2 28d6: 4c15 ldr r4, [pc, #84] ; (292c ) 28d8: 47a0 blx r4 return; 28da: e7f4 b.n 28c6 28dc: 2000267c .word 0x2000267c 28e0: 000123a5 .word 0x000123a5 28e4: 000135d5 .word 0x000135d5 28e8: 00011c61 .word 0x00011c61 28ec: 00011285 .word 0x00011285 28f0: 00002511 .word 0x00002511 28f4: 20006d3c .word 0x20006d3c 28f8: 00011ee1 .word 0x00011ee1 28fc: 20000010 .word 0x20000010 2900: 00016b31 .word 0x00016b31 2904: 000141b9 .word 0x000141b9 2908: 00005e3d .word 0x00005e3d 290c: 20006c98 .word 0x20006c98 2910: 20006c8c .word 0x20006c8c 2914: 000027d9 .word 0x000027d9 2918: 0000ffa9 .word 0x0000ffa9 291c: 0000f415 .word 0x0000f415 2920: 00024804 .word 0x00024804 2924: 00024040 .word 0x00024040 2928: 000247c4 .word 0x000247c4 292c: 00012245 .word 0x00012245 2930: 000247ec .word 0x000247ec 00002934 : { 2934: b530 push {r4, r5, lr} 2936: b083 sub sp, #12 2938: 4604 mov r4, r0 293a: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 293c: 4b0c ldr r3, [pc, #48] ; (2970 ) 293e: 4798 blx r3 2940: b138 cbz r0, 2952 obj->adv_hittest = en == false ? 0 : 1; 2942: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 2946: f365 13c7 bfi r3, r5, #7, #1 294a: f884 3034 strb.w r3, [r4, #52] ; 0x34 } 294e: b003 add sp, #12 2950: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2952: 4b08 ldr r3, [pc, #32] ; (2974 ) 2954: 9300 str r3, [sp, #0] 2956: f240 5294 movw r2, #1428 ; 0x594 295a: 4907 ldr r1, [pc, #28] ; (2978 ) 295c: 2003 movs r0, #3 295e: 4d07 ldr r5, [pc, #28] ; (297c ) 2960: 47a8 blx r5 2962: 4622 mov r2, r4 2964: 2300 movs r3, #0 2966: 4806 ldr r0, [pc, #24] ; (2980 ) 2968: 4906 ldr r1, [pc, #24] ; (2984 ) 296a: 4788 blx r1 296c: e7fe b.n 296c 296e: bf00 nop 2970: 00002299 .word 0x00002299 2974: 0002409c .word 0x0002409c 2978: 000247c4 .word 0x000247c4 297c: 00012245 .word 0x00012245 2980: 00024824 .word 0x00024824 2984: 000022a1 .word 0x000022a1 00002988 : { 2988: b530 push {r4, r5, lr} 298a: b083 sub sp, #12 298c: 4604 mov r4, r0 298e: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2990: 4b0c ldr r3, [pc, #48] ; (29c4 ) 2992: 4798 blx r3 2994: b138 cbz r0, 29a6 obj->click = (en == true ? 1 : 0); 2996: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 299a: f365 0300 bfi r3, r5, #0, #1 299e: f884 3034 strb.w r3, [r4, #52] ; 0x34 } 29a2: b003 add sp, #12 29a4: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 29a6: 4b08 ldr r3, [pc, #32] ; (29c8 ) 29a8: 9300 str r3, [sp, #0] 29aa: f44f 62b4 mov.w r2, #1440 ; 0x5a0 29ae: 4907 ldr r1, [pc, #28] ; (29cc ) 29b0: 2003 movs r0, #3 29b2: 4d07 ldr r5, [pc, #28] ; (29d0 ) 29b4: 47a8 blx r5 29b6: 4622 mov r2, r4 29b8: 2300 movs r3, #0 29ba: 4806 ldr r0, [pc, #24] ; (29d4 ) 29bc: 4906 ldr r1, [pc, #24] ; (29d8 ) 29be: 4788 blx r1 29c0: e7fe b.n 29c0 29c2: bf00 nop 29c4: 00002299 .word 0x00002299 29c8: 000240b4 .word 0x000240b4 29cc: 000247c4 .word 0x000247c4 29d0: 00012245 .word 0x00012245 29d4: 00024824 .word 0x00024824 29d8: 000022a1 .word 0x000022a1 000029dc : { 29dc: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 29e0: b086 sub sp, #24 29e2: 4607 mov r7, r0 29e4: 4615 mov r5, r2 29e6: 461e mov r6, r3 if(obj != NULL) { 29e8: 460c mov r4, r1 29ea: b121 cbz r1, 29f6 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 29ec: 4608 mov r0, r1 29ee: 4b28 ldr r3, [pc, #160] ; (2a90 ) 29f0: 4798 blx r3 29f2: 2800 cmp r0, #0 29f4: d033 beq.n 2a5e event_temp_data.obj = obj; 29f6: 9403 str r4, [sp, #12] event_temp_data.deleted = false; 29f8: 2300 movs r3, #0 29fa: f88d 3010 strb.w r3, [sp, #16] event_temp_data.prev = NULL; 29fe: 9305 str r3, [sp, #20] if(event_temp_data_head) { 2a00: 4b24 ldr r3, [pc, #144] ; (2a94 ) 2a02: 685b ldr r3, [r3, #4] 2a04: b103 cbz r3, 2a08 event_temp_data.prev = event_temp_data_head; 2a06: 9305 str r3, [sp, #20] event_temp_data_head = &event_temp_data; 2a08: 4b22 ldr r3, [pc, #136] ; (2a94 ) 2a0a: aa03 add r2, sp, #12 2a0c: 605a str r2, [r3, #4] const void * event_act_data_save = event_act_data; 2a0e: f8d3 8008 ldr.w r8, [r3, #8] event_act_data = data; 2a12: 609e str r6, [r3, #8] lv_indev_t * indev_act = lv_indev_get_act(); 2a14: 4b20 ldr r3, [pc, #128] ; (2a98 ) 2a16: 4798 blx r3 if(indev_act) { 2a18: b118 cbz r0, 2a22 if(indev_act->driver.feedback_cb) indev_act->driver.feedback_cb(&indev_act->driver, event); 2a1a: 6883 ldr r3, [r0, #8] 2a1c: b10b cbz r3, 2a22 2a1e: 4629 mov r1, r5 2a20: 4798 blx r3 if(event_xcb) event_xcb(obj, event); 2a22: b117 cbz r7, 2a2a 2a24: 4629 mov r1, r5 2a26: 4620 mov r0, r4 2a28: 47b8 blx r7 event_act_data = event_act_data_save; 2a2a: 4b1a ldr r3, [pc, #104] ; (2a94 ) 2a2c: f8c3 8008 str.w r8, [r3, #8] event_temp_data_head = event_temp_data_head->prev; 2a30: 685a ldr r2, [r3, #4] 2a32: 6892 ldr r2, [r2, #8] 2a34: 605a str r2, [r3, #4] if(event_temp_data.deleted) { 2a36: f89d 3010 ldrb.w r3, [sp, #16] 2a3a: b9f3 cbnz r3, 2a7a if(obj) { 2a3c: b30c cbz r4, 2a82 if(obj->parent_event && obj->parent) { 2a3e: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 2a42: f013 0f40 tst.w r3, #64 ; 0x40 2a46: d01e beq.n 2a86 2a48: 6820 ldr r0, [r4, #0] 2a4a: b1f0 cbz r0, 2a8a lv_res_t res = lv_event_send(obj->parent, event, data); 2a4c: 4632 mov r2, r6 2a4e: 4629 mov r1, r5 2a50: 4b12 ldr r3, [pc, #72] ; (2a9c ) 2a52: 4798 blx r3 return LV_RES_INV; 2a54: 2801 cmp r0, #1 2a56: bf14 ite ne 2a58: 2000 movne r0, #0 2a5a: 2001 moveq r0, #1 2a5c: e00e b.n 2a7c LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2a5e: 4b10 ldr r3, [pc, #64] ; (2aa0 ) 2a60: 9300 str r3, [sp, #0] 2a62: f44f 62db mov.w r2, #1752 ; 0x6d8 2a66: 490f ldr r1, [pc, #60] ; (2aa4 ) 2a68: 2003 movs r0, #3 2a6a: 4d0f ldr r5, [pc, #60] ; (2aa8 ) 2a6c: 47a8 blx r5 2a6e: 4622 mov r2, r4 2a70: 2300 movs r3, #0 2a72: 480e ldr r0, [pc, #56] ; (2aac ) 2a74: 490e ldr r1, [pc, #56] ; (2ab0 ) 2a76: 4788 blx r1 2a78: e7fe b.n 2a78 return LV_RES_INV; 2a7a: 2000 movs r0, #0 } 2a7c: b006 add sp, #24 2a7e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} return LV_RES_OK; 2a82: 2001 movs r0, #1 2a84: e7fa b.n 2a7c 2a86: 2001 movs r0, #1 2a88: e7f8 b.n 2a7c 2a8a: 2001 movs r0, #1 2a8c: e7f6 b.n 2a7c 2a8e: bf00 nop 2a90: 00002299 .word 0x00002299 2a94: 2000267c .word 0x2000267c 2a98: 00002751 .word 0x00002751 2a9c: 00002ab5 .word 0x00002ab5 2aa0: 00024184 .word 0x00024184 2aa4: 000247c4 .word 0x000247c4 2aa8: 00012245 .word 0x00012245 2aac: 00024824 .word 0x00024824 2ab0: 000022a1 .word 0x000022a1 00002ab4 : if(obj == NULL) return LV_RES_OK; 2ab4: b1e8 cbz r0, 2af2 { 2ab6: b570 push {r4, r5, r6, lr} 2ab8: b082 sub sp, #8 2aba: 4604 mov r4, r0 2abc: 4616 mov r6, r2 2abe: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2ac0: 4b0d ldr r3, [pc, #52] ; (2af8 ) 2ac2: 4798 blx r3 2ac4: b968 cbnz r0, 2ae2 2ac6: 4b0d ldr r3, [pc, #52] ; (2afc ) 2ac8: 9300 str r3, [sp, #0] 2aca: f240 62c4 movw r2, #1732 ; 0x6c4 2ace: 490c ldr r1, [pc, #48] ; (2b00 ) 2ad0: 2003 movs r0, #3 2ad2: 4d0c ldr r5, [pc, #48] ; (2b04 ) 2ad4: 47a8 blx r5 2ad6: 4622 mov r2, r4 2ad8: 2300 movs r3, #0 2ada: 480b ldr r0, [pc, #44] ; (2b08 ) 2adc: 490b ldr r1, [pc, #44] ; (2b0c ) 2ade: 4788 blx r1 2ae0: e7fe b.n 2ae0 res = lv_event_send_func(obj->event_cb, obj, event, data); 2ae2: 4633 mov r3, r6 2ae4: 462a mov r2, r5 2ae6: 4621 mov r1, r4 2ae8: 69a0 ldr r0, [r4, #24] 2aea: 4c09 ldr r4, [pc, #36] ; (2b10 ) 2aec: 47a0 blx r4 } 2aee: b002 add sp, #8 2af0: bd70 pop {r4, r5, r6, pc} if(obj == NULL) return LV_RES_OK; 2af2: 2001 movs r0, #1 2af4: 4770 bx lr 2af6: bf00 nop 2af8: 00002299 .word 0x00002299 2afc: 00024198 .word 0x00024198 2b00: 000247c4 .word 0x000247c4 2b04: 00012245 .word 0x00012245 2b08: 00024824 .word 0x00024824 2b0c: 000022a1 .word 0x000022a1 2b10: 000029dd .word 0x000029dd 00002b14 : { 2b14: b530 push {r4, r5, lr} 2b16: b083 sub sp, #12 2b18: 4604 mov r4, r0 2b1a: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2b1c: 4b09 ldr r3, [pc, #36] ; (2b44 ) 2b1e: 4798 blx r3 2b20: b110 cbz r0, 2b28 obj->signal_cb = signal_cb; 2b22: 61e5 str r5, [r4, #28] } 2b24: b003 add sp, #12 2b26: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2b28: 4b07 ldr r3, [pc, #28] ; (2b48 ) 2b2a: 9300 str r3, [sp, #0] 2b2c: f240 721b movw r2, #1819 ; 0x71b 2b30: 4906 ldr r1, [pc, #24] ; (2b4c ) 2b32: 2003 movs r0, #3 2b34: 4d06 ldr r5, [pc, #24] ; (2b50 ) 2b36: 47a8 blx r5 2b38: 4622 mov r2, r4 2b3a: 2300 movs r3, #0 2b3c: 4805 ldr r0, [pc, #20] ; (2b54 ) 2b3e: 4906 ldr r1, [pc, #24] ; (2b58 ) 2b40: 4788 blx r1 2b42: e7fe b.n 2b42 2b44: 00002299 .word 0x00002299 2b48: 000241a8 .word 0x000241a8 2b4c: 000247c4 .word 0x000247c4 2b50: 00012245 .word 0x00012245 2b54: 00024824 .word 0x00024824 2b58: 000022a1 .word 0x000022a1 00002b5c : if(obj == NULL) return LV_RES_OK; 2b5c: b120 cbz r0, 2b68 { 2b5e: b510 push {r4, lr} if(obj->signal_cb) res = obj->signal_cb(obj, signal, param); 2b60: 69c4 ldr r4, [r0, #28] 2b62: b11c cbz r4, 2b6c 2b64: 47a0 blx r4 2b66: bd10 pop {r4, pc} if(obj == NULL) return LV_RES_OK; 2b68: 2001 movs r0, #1 2b6a: 4770 bx lr lv_res_t res = LV_RES_OK; 2b6c: 2001 movs r0, #1 } 2b6e: bd10 pop {r4, pc} 00002b70 : { 2b70: b530 push {r4, r5, lr} 2b72: b083 sub sp, #12 2b74: 4604 mov r4, r0 2b76: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2b78: 4b09 ldr r3, [pc, #36] ; (2ba0 ) 2b7a: 4798 blx r3 2b7c: b110 cbz r0, 2b84 obj->design_cb = design_cb; 2b7e: 6225 str r5, [r4, #32] } 2b80: b003 add sp, #12 2b82: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2b84: 4b07 ldr r3, [pc, #28] ; (2ba4 ) 2b86: 9300 str r3, [sp, #0] 2b88: f240 7237 movw r2, #1847 ; 0x737 2b8c: 4906 ldr r1, [pc, #24] ; (2ba8 ) 2b8e: 2003 movs r0, #3 2b90: 4d06 ldr r5, [pc, #24] ; (2bac ) 2b92: 47a8 blx r5 2b94: 4622 mov r2, r4 2b96: 2300 movs r3, #0 2b98: 4805 ldr r0, [pc, #20] ; (2bb0 ) 2b9a: 4906 ldr r1, [pc, #24] ; (2bb4 ) 2b9c: 4788 blx r1 2b9e: e7fe b.n 2b9e 2ba0: 00002299 .word 0x00002299 2ba4: 000241c0 .word 0x000241c0 2ba8: 000247c4 .word 0x000247c4 2bac: 00012245 .word 0x00012245 2bb0: 00024824 .word 0x00024824 2bb4: 000022a1 .word 0x000022a1 00002bb8 : { 2bb8: b530 push {r4, r5, lr} 2bba: b083 sub sp, #12 2bbc: 4604 mov r4, r0 2bbe: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2bc0: 4b0d ldr r3, [pc, #52] ; (2bf8 ) 2bc2: 4798 blx r3 2bc4: b968 cbnz r0, 2be2 2bc6: 4b0d ldr r3, [pc, #52] ; (2bfc ) 2bc8: 9300 str r3, [sp, #0] 2bca: f240 7249 movw r2, #1865 ; 0x749 2bce: 490c ldr r1, [pc, #48] ; (2c00 ) 2bd0: 2003 movs r0, #3 2bd2: 4d0c ldr r5, [pc, #48] ; (2c04 ) 2bd4: 47a8 blx r5 2bd6: 4622 mov r2, r4 2bd8: 2300 movs r3, #0 2bda: 480b ldr r0, [pc, #44] ; (2c08 ) 2bdc: 490b ldr r1, [pc, #44] ; (2c0c ) 2bde: 4788 blx r1 2be0: e7fe b.n 2be0 void * new_ext = lv_mem_realloc(obj->ext_attr, ext_size); 2be2: 4629 mov r1, r5 2be4: 6a60 ldr r0, [r4, #36] ; 0x24 2be6: 4b0a ldr r3, [pc, #40] ; (2c10 ) 2be8: 4798 blx r3 if(new_ext == NULL) return NULL; 2bea: 4603 mov r3, r0 2bec: b100 cbz r0, 2bf0 obj->ext_attr = new_ext; 2bee: 6260 str r0, [r4, #36] ; 0x24 } 2bf0: 4618 mov r0, r3 2bf2: b003 add sp, #12 2bf4: bd30 pop {r4, r5, pc} 2bf6: bf00 nop 2bf8: 00002299 .word 0x00002299 2bfc: 000241d8 .word 0x000241d8 2c00: 000247c4 .word 0x000247c4 2c04: 00012245 .word 0x00012245 2c08: 00024824 .word 0x00024824 2c0c: 000022a1 .word 0x000022a1 2c10: 00012881 .word 0x00012881 00002c14 : { 2c14: b530 push {r4, r5, lr} 2c16: b083 sub sp, #12 2c18: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2c1a: 4b0c ldr r3, [pc, #48] ; (2c4c ) 2c1c: 4798 blx r3 2c1e: b968 cbnz r0, 2c3c 2c20: 4b0b ldr r3, [pc, #44] ; (2c50 ) 2c22: 9300 str r3, [sp, #0] 2c24: f240 7259 movw r2, #1881 ; 0x759 2c28: 490a ldr r1, [pc, #40] ; (2c54 ) 2c2a: 2003 movs r0, #3 2c2c: 4d0a ldr r5, [pc, #40] ; (2c58 ) 2c2e: 47a8 blx r5 2c30: 4622 mov r2, r4 2c32: 2300 movs r3, #0 2c34: 4809 ldr r0, [pc, #36] ; (2c5c ) 2c36: 490a ldr r1, [pc, #40] ; (2c60 ) 2c38: 4788 blx r1 2c3a: e7fe b.n 2c3a obj->ext_draw_pad = 0; 2c3c: 2200 movs r2, #0 2c3e: 8662 strh r2, [r4, #50] ; 0x32 obj->signal_cb(obj, LV_SIGNAL_REFR_EXT_DRAW_PAD, NULL); 2c40: 69e3 ldr r3, [r4, #28] 2c42: 2106 movs r1, #6 2c44: 4620 mov r0, r4 2c46: 4798 blx r3 } 2c48: b003 add sp, #12 2c4a: bd30 pop {r4, r5, pc} 2c4c: 00002299 .word 0x00002299 2c50: 000241f4 .word 0x000241f4 2c54: 000247c4 .word 0x000247c4 2c58: 00012245 .word 0x00012245 2c5c: 00024824 .word 0x00024824 2c60: 000022a1 .word 0x000022a1 00002c64 : { 2c64: b530 push {r4, r5, lr} 2c66: b083 sub sp, #12 2c68: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2c6a: 4b0a ldr r3, [pc, #40] ; (2c94 ) 2c6c: 4798 blx r3 2c6e: b110 cbz r0, 2c76 } 2c70: 6820 ldr r0, [r4, #0] 2c72: b003 add sp, #12 2c74: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2c76: 4b08 ldr r3, [pc, #32] ; (2c98 ) 2c78: 9300 str r3, [sp, #0] 2c7a: f240 729f movw r2, #1951 ; 0x79f 2c7e: 4907 ldr r1, [pc, #28] ; (2c9c ) 2c80: 2003 movs r0, #3 2c82: 4d07 ldr r5, [pc, #28] ; (2ca0 ) 2c84: 47a8 blx r5 2c86: 4622 mov r2, r4 2c88: 2300 movs r3, #0 2c8a: 4806 ldr r0, [pc, #24] ; (2ca4 ) 2c8c: 4906 ldr r1, [pc, #24] ; (2ca8 ) 2c8e: 4788 blx r1 2c90: e7fe b.n 2c90 2c92: bf00 nop 2c94: 00002299 .word 0x00002299 2c98: 00024210 .word 0x00024210 2c9c: 000247c4 .word 0x000247c4 2ca0: 00012245 .word 0x00012245 2ca4: 00024824 .word 0x00024824 2ca8: 000022a1 .word 0x000022a1 00002cac : { 2cac: b530 push {r4, r5, lr} 2cae: b083 sub sp, #12 2cb0: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2cb2: 4b0e ldr r3, [pc, #56] ; (2cec ) 2cb4: 4798 blx r3 2cb6: b108 cbz r0, 2cbc par = lv_obj_get_parent(act_p); 2cb8: 4d0d ldr r5, [pc, #52] ; (2cf0 ) 2cba: e00e b.n 2cda LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2cbc: 4b0d ldr r3, [pc, #52] ; (2cf4 ) 2cbe: 9300 str r3, [sp, #0] 2cc0: f240 726b movw r2, #1899 ; 0x76b 2cc4: 490c ldr r1, [pc, #48] ; (2cf8 ) 2cc6: 2003 movs r0, #3 2cc8: 4d0c ldr r5, [pc, #48] ; (2cfc ) 2cca: 47a8 blx r5 2ccc: 4622 mov r2, r4 2cce: 2300 movs r3, #0 2cd0: 480b ldr r0, [pc, #44] ; (2d00 ) 2cd2: 490c ldr r1, [pc, #48] ; (2d04 ) 2cd4: 4788 blx r1 2cd6: e7fe b.n 2cd6 par = lv_obj_get_parent(act_p); 2cd8: 461c mov r4, r3 2cda: 4620 mov r0, r4 2cdc: 47a8 blx r5 } while(par != NULL); 2cde: 4603 mov r3, r0 2ce0: 2800 cmp r0, #0 2ce2: d1f9 bne.n 2cd8 } 2ce4: 4620 mov r0, r4 2ce6: b003 add sp, #12 2ce8: bd30 pop {r4, r5, pc} 2cea: bf00 nop 2cec: 00002299 .word 0x00002299 2cf0: 00002c65 .word 0x00002c65 2cf4: 00024224 .word 0x00024224 2cf8: 000247c4 .word 0x000247c4 2cfc: 00012245 .word 0x00012245 2d00: 00024824 .word 0x00024824 2d04: 000022a1 .word 0x000022a1 00002d08 : { 2d08: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 2d0c: b083 sub sp, #12 2d0e: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2d10: 4b22 ldr r3, [pc, #136] ; (2d9c ) 2d12: 4798 blx r3 2d14: b180 cbz r0, 2d38 if(obj->parent == NULL) 2d16: 6823 ldr r3, [r4, #0] 2d18: b11b cbz r3, 2d22 scr = lv_obj_get_screen(obj); /*get the screen of `obj`*/ 2d1a: 4620 mov r0, r4 2d1c: 4b20 ldr r3, [pc, #128] ; (2da0 ) 2d1e: 4798 blx r3 2d20: 4604 mov r4, r0 _LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) { 2d22: 4820 ldr r0, [pc, #128] ; (2da4 ) 2d24: 4b20 ldr r3, [pc, #128] ; (2da8 ) 2d26: 4798 blx r3 2d28: 4605 mov r5, r0 2d2a: b360 cbz r0, 2d86 _LV_LL_READ(d->scr_ll, s) { 2d2c: f8df 9078 ldr.w r9, [pc, #120] ; 2da8 2d30: 4e1e ldr r6, [pc, #120] ; (2dac ) _LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) { 2d32: f8df 8070 ldr.w r8, [pc, #112] ; 2da4 2d36: e012 b.n 2d5e LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2d38: 4b1d ldr r3, [pc, #116] ; (2db0 ) 2d3a: 9300 str r3, [sp, #0] 2d3c: f240 727f movw r2, #1919 ; 0x77f 2d40: 491c ldr r1, [pc, #112] ; (2db4 ) 2d42: 2003 movs r0, #3 2d44: 4d1c ldr r5, [pc, #112] ; (2db8 ) 2d46: 47a8 blx r5 2d48: 4622 mov r2, r4 2d4a: 2300 movs r3, #0 2d4c: 481b ldr r0, [pc, #108] ; (2dbc ) 2d4e: 491c ldr r1, [pc, #112] ; (2dc0 ) 2d50: 4788 blx r1 2d52: e7fe b.n 2d52 _LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) { 2d54: 4629 mov r1, r5 2d56: 4640 mov r0, r8 2d58: 47b0 blx r6 2d5a: 4605 mov r5, r0 2d5c: b198 cbz r0, 2d86 _LV_LL_READ(d->scr_ll, s) { 2d5e: f105 0730 add.w r7, r5, #48 ; 0x30 2d62: 4638 mov r0, r7 2d64: 47c8 blx r9 2d66: 4601 mov r1, r0 2d68: 2800 cmp r0, #0 2d6a: d0f3 beq.n 2d54 if(s == scr) return d; 2d6c: 4284 cmp r4, r0 2d6e: d006 beq.n 2d7e _LV_LL_READ(d->scr_ll, s) { 2d70: 4638 mov r0, r7 2d72: 47b0 blx r6 2d74: 4601 mov r1, r0 2d76: 2800 cmp r0, #0 2d78: d0ec beq.n 2d54 if(s == scr) return d; 2d7a: 428c cmp r4, r1 2d7c: d1f8 bne.n 2d70 } 2d7e: 4628 mov r0, r5 2d80: b003 add sp, #12 2d82: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} LV_LOG_WARN("lv_scr_get_disp: screen not found") 2d86: 4b0f ldr r3, [pc, #60] ; (2dc4 ) 2d88: 9300 str r3, [sp, #0] 2d8a: 4b09 ldr r3, [pc, #36] ; (2db0 ) 2d8c: f44f 62f2 mov.w r2, #1936 ; 0x790 2d90: 4908 ldr r1, [pc, #32] ; (2db4 ) 2d92: 2002 movs r0, #2 2d94: 4c08 ldr r4, [pc, #32] ; (2db8 ) 2d96: 47a0 blx r4 return NULL; 2d98: 2500 movs r5, #0 2d9a: e7f0 b.n 2d7e 2d9c: 00002299 .word 0x00002299 2da0: 00002cad .word 0x00002cad 2da4: 20006c98 .word 0x20006c98 2da8: 00011f91 .word 0x00011f91 2dac: 00011fa5 .word 0x00011fa5 2db0: 00024238 .word 0x00024238 2db4: 000247c4 .word 0x000247c4 2db8: 00012245 .word 0x00012245 2dbc: 00024824 .word 0x00024824 2dc0: 000022a1 .word 0x000022a1 2dc4: 00024834 .word 0x00024834 00002dc8 : { 2dc8: b530 push {r4, r5, lr} 2dca: b083 sub sp, #12 2dcc: 4604 mov r4, r0 2dce: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2dd0: 4b0d ldr r3, [pc, #52] ; (2e08 ) 2dd2: 4798 blx r3 2dd4: b130 cbz r0, 2de4 if(child == NULL) { 2dd6: b19d cbz r5, 2e00 result = _lv_ll_get_next(&obj->child_ll, child); 2dd8: 4629 mov r1, r5 2dda: 1d20 adds r0, r4, #4 2ddc: 4b0b ldr r3, [pc, #44] ; (2e0c ) 2dde: 4798 blx r3 } 2de0: b003 add sp, #12 2de2: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2de4: 4b0a ldr r3, [pc, #40] ; (2e10 ) 2de6: 9300 str r3, [sp, #0] 2de8: f240 72ad movw r2, #1965 ; 0x7ad 2dec: 4909 ldr r1, [pc, #36] ; (2e14 ) 2dee: 2003 movs r0, #3 2df0: 4d09 ldr r5, [pc, #36] ; (2e18 ) 2df2: 47a8 blx r5 2df4: 4622 mov r2, r4 2df6: 2300 movs r3, #0 2df8: 4808 ldr r0, [pc, #32] ; (2e1c ) 2dfa: 4909 ldr r1, [pc, #36] ; (2e20 ) 2dfc: 4788 blx r1 2dfe: e7fe b.n 2dfe result = _lv_ll_get_head(&obj->child_ll); 2e00: 1d20 adds r0, r4, #4 2e02: 4b08 ldr r3, [pc, #32] ; (2e24 ) 2e04: 4798 blx r3 2e06: e7eb b.n 2de0 2e08: 00002299 .word 0x00002299 2e0c: 00011fa5 .word 0x00011fa5 2e10: 00024248 .word 0x00024248 2e14: 000247c4 .word 0x000247c4 2e18: 00012245 .word 0x00012245 2e1c: 00024824 .word 0x00024824 2e20: 000022a1 .word 0x000022a1 2e24: 00011f91 .word 0x00011f91 00002e28 : { 2e28: b530 push {r4, r5, lr} 2e2a: b083 sub sp, #12 2e2c: 4605 mov r5, r0 2e2e: 460c mov r4, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2e30: 4b0e ldr r3, [pc, #56] ; (2e6c ) 2e32: 4798 blx r3 2e34: b160 cbz r0, 2e50 2e36: f105 020f add.w r2, r5, #15 2e3a: 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; 2e3e: 4623 mov r3, r4 const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; 2e40: f812 1f01 ldrb.w r1, [r2, #1]! 2e44: f803 1b01 strb.w r1, [r3], #1 while(len) { 2e48: 4283 cmp r3, r0 2e4a: d1f9 bne.n 2e40 } 2e4c: b003 add sp, #12 2e4e: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2e50: 4b07 ldr r3, [pc, #28] ; (2e70 ) 2e52: 9300 str r3, [sp, #0] 2e54: f640 0201 movw r2, #2049 ; 0x801 2e58: 4906 ldr r1, [pc, #24] ; (2e74 ) 2e5a: 2003 movs r0, #3 2e5c: 4c06 ldr r4, [pc, #24] ; (2e78 ) 2e5e: 47a0 blx r4 2e60: 462a mov r2, r5 2e62: 2300 movs r3, #0 2e64: 4805 ldr r0, [pc, #20] ; (2e7c ) 2e66: 4906 ldr r1, [pc, #24] ; (2e80 ) 2e68: 4788 blx r1 2e6a: e7fe b.n 2e6a 2e6c: 00002299 .word 0x00002299 2e70: 000242c0 .word 0x000242c0 2e74: 000247c4 .word 0x000247c4 2e78: 00012245 .word 0x00012245 2e7c: 00024824 .word 0x00024824 2e80: 000022a1 .word 0x000022a1 00002e84 : { 2e84: b530 push {r4, r5, lr} 2e86: b083 sub sp, #12 2e88: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2e8a: 4b0f ldr r3, [pc, #60] ; (2ec8 ) 2e8c: 4798 blx r3 2e8e: b968 cbnz r0, 2eac 2e90: 4b0e ldr r3, [pc, #56] ; (2ecc ) 2e92: 9300 str r3, [sp, #0] 2e94: f640 0222 movw r2, #2082 ; 0x822 2e98: 490d ldr r1, [pc, #52] ; (2ed0 ) 2e9a: 2003 movs r0, #3 2e9c: 4d0d ldr r5, [pc, #52] ; (2ed4 ) 2e9e: 47a8 blx r5 2ea0: 4622 mov r2, r4 2ea2: 2300 movs r3, #0 2ea4: 480c ldr r0, [pc, #48] ; (2ed8 ) 2ea6: 490d ldr r1, [pc, #52] ; (2edc ) 2ea8: 4788 blx r1 2eaa: e7fe b.n 2eaa lv_obj_t * parent = lv_obj_get_parent(obj); 2eac: 4620 mov r0, r4 2eae: 4b0c ldr r3, [pc, #48] ; (2ee0 ) 2eb0: 4798 blx r3 if(parent) { 2eb2: 4603 mov r3, r0 2eb4: b128 cbz r0, 2ec2 rel_x = obj->coords.x1 - parent->coords.x1; 2eb6: 8a20 ldrh r0, [r4, #16] 2eb8: 8a1b ldrh r3, [r3, #16] 2eba: 1ac0 subs r0, r0, r3 2ebc: b200 sxth r0, r0 } 2ebe: b003 add sp, #12 2ec0: bd30 pop {r4, r5, pc} rel_x = obj->coords.x1; 2ec2: f9b4 0010 ldrsh.w r0, [r4, #16] 2ec6: e7fa b.n 2ebe 2ec8: 00002299 .word 0x00002299 2ecc: 000242d4 .word 0x000242d4 2ed0: 000247c4 .word 0x000247c4 2ed4: 00012245 .word 0x00012245 2ed8: 00024824 .word 0x00024824 2edc: 000022a1 .word 0x000022a1 2ee0: 00002c65 .word 0x00002c65 00002ee4 : { 2ee4: b530 push {r4, r5, lr} 2ee6: b083 sub sp, #12 2ee8: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2eea: 4b0f ldr r3, [pc, #60] ; (2f28 ) 2eec: 4798 blx r3 2eee: b968 cbnz r0, 2f0c 2ef0: 4b0e ldr r3, [pc, #56] ; (2f2c ) 2ef2: 9300 str r3, [sp, #0] 2ef4: f640 0236 movw r2, #2102 ; 0x836 2ef8: 490d ldr r1, [pc, #52] ; (2f30 ) 2efa: 2003 movs r0, #3 2efc: 4d0d ldr r5, [pc, #52] ; (2f34 ) 2efe: 47a8 blx r5 2f00: 4622 mov r2, r4 2f02: 2300 movs r3, #0 2f04: 480c ldr r0, [pc, #48] ; (2f38 ) 2f06: 490d ldr r1, [pc, #52] ; (2f3c ) 2f08: 4788 blx r1 2f0a: e7fe b.n 2f0a lv_obj_t * parent = lv_obj_get_parent(obj); 2f0c: 4620 mov r0, r4 2f0e: 4b0c ldr r3, [pc, #48] ; (2f40 ) 2f10: 4798 blx r3 if(parent) { 2f12: 4603 mov r3, r0 2f14: b128 cbz r0, 2f22 rel_y = obj->coords.y1 - parent->coords.y1; 2f16: 8a60 ldrh r0, [r4, #18] 2f18: 8a5b ldrh r3, [r3, #18] 2f1a: 1ac0 subs r0, r0, r3 2f1c: b200 sxth r0, r0 } 2f1e: b003 add sp, #12 2f20: bd30 pop {r4, r5, pc} rel_y = obj->coords.y1; 2f22: f9b4 0012 ldrsh.w r0, [r4, #18] 2f26: e7fa b.n 2f1e 2f28: 00002299 .word 0x00002299 2f2c: 000242e4 .word 0x000242e4 2f30: 000247c4 .word 0x000247c4 2f34: 00012245 .word 0x00012245 2f38: 00024824 .word 0x00024824 2f3c: 000022a1 .word 0x000022a1 2f40: 00002c65 .word 0x00002c65 00002f44 : { 2f44: b530 push {r4, r5, lr} 2f46: b083 sub sp, #12 2f48: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2f4a: 4b0c ldr r3, [pc, #48] ; (2f7c ) 2f4c: 4798 blx r3 2f4e: b130 cbz r0, 2f5e * @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); 2f50: 8aa0 ldrh r0, [r4, #20] 2f52: 3001 adds r0, #1 2f54: 8a23 ldrh r3, [r4, #16] 2f56: 1ac0 subs r0, r0, r3 } 2f58: b200 sxth r0, r0 2f5a: b003 add sp, #12 2f5c: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2f5e: 4b08 ldr r3, [pc, #32] ; (2f80 ) 2f60: 9300 str r3, [sp, #0] 2f62: f640 024a movw r2, #2122 ; 0x84a 2f66: 4907 ldr r1, [pc, #28] ; (2f84 ) 2f68: 2003 movs r0, #3 2f6a: 4d07 ldr r5, [pc, #28] ; (2f88 ) 2f6c: 47a8 blx r5 2f6e: 4622 mov r2, r4 2f70: 2300 movs r3, #0 2f72: 4806 ldr r0, [pc, #24] ; (2f8c ) 2f74: 4906 ldr r1, [pc, #24] ; (2f90 ) 2f76: 4788 blx r1 2f78: e7fe b.n 2f78 2f7a: bf00 nop 2f7c: 00002299 .word 0x00002299 2f80: 000242f4 .word 0x000242f4 2f84: 000247c4 .word 0x000247c4 2f88: 00012245 .word 0x00012245 2f8c: 00024824 .word 0x00024824 2f90: 000022a1 .word 0x000022a1 00002f94 : { 2f94: b530 push {r4, r5, lr} 2f96: b083 sub sp, #12 2f98: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2f9a: 4b0c ldr r3, [pc, #48] ; (2fcc ) 2f9c: 4798 blx r3 2f9e: b130 cbz r0, 2fae * @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); 2fa0: 8ae0 ldrh r0, [r4, #22] 2fa2: 3001 adds r0, #1 2fa4: 8a63 ldrh r3, [r4, #18] 2fa6: 1ac0 subs r0, r0, r3 } 2fa8: b200 sxth r0, r0 2faa: b003 add sp, #12 2fac: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2fae: 4b08 ldr r3, [pc, #32] ; (2fd0 ) 2fb0: 9300 str r3, [sp, #0] 2fb2: f640 0256 movw r2, #2134 ; 0x856 2fb6: 4907 ldr r1, [pc, #28] ; (2fd4 ) 2fb8: 2003 movs r0, #3 2fba: 4d07 ldr r5, [pc, #28] ; (2fd8 ) 2fbc: 47a8 blx r5 2fbe: 4622 mov r2, r4 2fc0: 2300 movs r3, #0 2fc2: 4806 ldr r0, [pc, #24] ; (2fdc ) 2fc4: 4906 ldr r1, [pc, #24] ; (2fe0 ) 2fc6: 4788 blx r1 2fc8: e7fe b.n 2fc8 2fca: bf00 nop 2fcc: 00002299 .word 0x00002299 2fd0: 00024308 .word 0x00024308 2fd4: 000247c4 .word 0x000247c4 2fd8: 00012245 .word 0x00012245 2fdc: 00024824 .word 0x00024824 2fe0: 000022a1 .word 0x000022a1 00002fe4 : if(part == LV_OBJ_PART_MAIN) return &((lv_obj_t *)obj)->style_list; 2fe4: b909 cbnz r1, 2fea 2fe6: 3028 adds r0, #40 ; 0x28 2fe8: 4770 bx lr { 2fea: b500 push {lr} 2fec: b083 sub sp, #12 info.part = part; 2fee: f88d 1000 strb.w r1, [sp] info.result = NULL; 2ff2: 2300 movs r3, #0 2ff4: 9301 str r3, [sp, #4] res = lv_signal_send((lv_obj_t *)obj, LV_SIGNAL_GET_STYLE, &info); 2ff6: 466a mov r2, sp 2ff8: 2108 movs r1, #8 2ffa: 4b04 ldr r3, [pc, #16] ; (300c ) 2ffc: 4798 blx r3 if(res != LV_RES_OK) return NULL; 2ffe: 2801 cmp r0, #1 return info.result; 3000: bf0c ite eq 3002: 9801 ldreq r0, [sp, #4] if(res != LV_RES_OK) return NULL; 3004: 2000 movne r0, #0 } 3006: b003 add sp, #12 3008: f85d fb04 ldr.w pc, [sp], #4 300c: 00002b5d .word 0x00002b5d 00003010 : * @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) { 3010: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} 3014: 4680 mov r8, r0 3016: 468a mov sl, r1 3018: 4693 mov fp, r2 301a: 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)); 301c: 481c ldr r0, [pc, #112] ; (3090 ) 301e: 4b1d ldr r3, [pc, #116] ; (3094 ) 3020: 4798 blx r3 while(tr != NULL) { 3022: 2800 cmp r0, #0 3024: d031 beq.n 308a 3026: 4605 mov r5, r0 if(tr == tr_limit) break; 3028: 42b0 cmp r0, r6 302a: d02e beq.n 308a /*'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); 302c: f8df 9060 ldr.w r9, [pc, #96] ; 3090 3030: 4f19 ldr r7, [pc, #100] ; (3098 ) 3032: e009 b.n 3048 if(tr->obj == obj && (part == tr->part || part == 0xFF) && (prop == tr->prop || prop == 0xFF)) { 3034: 88ab ldrh r3, [r5, #4] 3036: 455b cmp r3, fp 3038: d014 beq.n 3064 303a: f1bb 0fff cmp.w fp, #255 ; 0xff 303e: d011 beq.n 3064 while(tr != NULL) { 3040: b31c cbz r4, 308a 3042: 4625 mov r5, r4 if(tr == tr_limit) break; 3044: 42a6 cmp r6, r4 3046: d020 beq.n 308a tr_prev = _lv_ll_get_prev(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr); 3048: 4629 mov r1, r5 304a: 4648 mov r0, r9 304c: 47b8 blx r7 304e: 4604 mov r4, r0 if(tr->obj == obj && (part == tr->part || part == 0xFF) && (prop == tr->prop || prop == 0xFF)) { 3050: 6828 ldr r0, [r5, #0] 3052: 4540 cmp r0, r8 3054: d1f4 bne.n 3040 3056: 79a9 ldrb r1, [r5, #6] 3058: 4551 cmp r1, sl 305a: d0eb beq.n 3034 305c: f1ba 0fff cmp.w sl, #255 ; 0xff 3060: d1ee bne.n 3040 3062: e7e7 b.n 3034 /* 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); 3064: 4b0d ldr r3, [pc, #52] ; (309c ) 3066: 4798 blx r3 lv_style_t * style_trans = _lv_style_list_get_transition_style(list); 3068: 4b0d ldr r3, [pc, #52] ; (30a0 ) 306a: 4798 blx r3 lv_style_remove_prop(style_trans, tr->prop); 306c: 88a9 ldrh r1, [r5, #4] 306e: 4b0d ldr r3, [pc, #52] ; (30a4 ) 3070: 4798 blx r3 lv_anim_del(tr, NULL); 3072: 2100 movs r1, #0 3074: 4628 mov r0, r5 3076: 4b0c ldr r3, [pc, #48] ; (30a8 ) 3078: 4798 blx r3 _lv_ll_remove(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr); 307a: 4629 mov r1, r5 307c: 4648 mov r0, r9 307e: 4b0b ldr r3, [pc, #44] ; (30ac ) 3080: 4798 blx r3 lv_mem_free(tr); 3082: 4628 mov r0, r5 3084: 4b0a ldr r3, [pc, #40] ; (30b0 ) 3086: 4798 blx r3 3088: e7da b.n 3040 308a: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} 308e: bf00 nop 3090: 20006d3c .word 0x20006d3c 3094: 00011f9b .word 0x00011f9b 3098: 00011fd1 .word 0x00011fd1 309c: 00002fe5 .word 0x00002fe5 30a0: 000070cf .word 0x000070cf 30a4: 000067d5 .word 0x000067d5 30a8: 00011311 .word 0x00011311 30ac: 0001207d .word 0x0001207d 30b0: 000124ad .word 0x000124ad 000030b4 : { 30b4: b530 push {r4, r5, lr} 30b6: b083 sub sp, #12 30b8: 4604 mov r4, r0 30ba: 460d mov r5, r1 lv_style_list_t * style_dsc = lv_obj_get_style_list(obj, part); 30bc: 4b0b ldr r3, [pc, #44] ; (30ec ) 30be: 4798 blx r3 if(style_dsc == NULL) { 30c0: b148 cbz r0, 30d6 _lv_style_list_reset(style_dsc); 30c2: 4b0b ldr r3, [pc, #44] ; (30f0 ) 30c4: 4798 blx r3 trans_del(obj, part, 0xFF, NULL); 30c6: 2300 movs r3, #0 30c8: 22ff movs r2, #255 ; 0xff 30ca: 4629 mov r1, r5 30cc: 4620 mov r0, r4 30ce: 4c09 ldr r4, [pc, #36] ; (30f4 ) 30d0: 47a0 blx r4 } 30d2: b003 add sp, #12 30d4: bd30 pop {r4, r5, pc} LV_LOG_WARN("lv_obj_clean_style_list: can't find style with `part`"); 30d6: 4b08 ldr r3, [pc, #32] ; (30f8 ) 30d8: 9300 str r3, [sp, #0] 30da: 4b08 ldr r3, [pc, #32] ; (30fc ) 30dc: f240 4292 movw r2, #1170 ; 0x492 30e0: 4907 ldr r1, [pc, #28] ; (3100 ) 30e2: 2002 movs r0, #2 30e4: 4c07 ldr r4, [pc, #28] ; (3104 ) 30e6: 47a0 blx r4 return; 30e8: e7f3 b.n 30d2 30ea: bf00 nop 30ec: 00002fe5 .word 0x00002fe5 30f0: 000070e1 .word 0x000070e1 30f4: 00003011 .word 0x00003011 30f8: 00024880 .word 0x00024880 30fc: 000243cc .word 0x000243cc 3100: 000247c4 .word 0x000247c4 3104: 00012245 .word 0x00012245 00003108 : tr->prop = prop_tmp; } static void trans_anim_ready_cb(lv_anim_t * a) { 3108: b5f8 push {r3, r4, r5, r6, r7, lr} lv_style_trans_t * tr = a->var; 310a: 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) { 310c: 4817 ldr r0, [pc, #92] ; (316c ) 310e: 4b18 ldr r3, [pc, #96] ; (3170 ) 3110: 4798 blx r3 3112: b308 cbz r0, 3158 3114: 4601 mov r1, r0 3116: 2700 movs r7, #0 3118: 4e14 ldr r6, [pc, #80] ; (316c ) 311a: 4d16 ldr r5, [pc, #88] ; (3174 ) 311c: e003 b.n 3126 311e: 4630 mov r0, r6 3120: 47a8 blx r5 3122: 4601 mov r1, r0 3124: b178 cbz r0, 3146 if(tr_i != tr && tr_i->obj == tr->obj && tr_i->part == tr->part && tr_i->prop == tr->prop) { 3126: 428c cmp r4, r1 3128: d0f9 beq.n 311e 312a: 680a ldr r2, [r1, #0] 312c: 6823 ldr r3, [r4, #0] 312e: 429a cmp r2, r3 3130: d1f5 bne.n 311e 3132: 684b ldr r3, [r1, #4] 3134: f023 427f bic.w r2, r3, #4278190080 ; 0xff000000 3138: 6863 ldr r3, [r4, #4] 313a: f023 437f bic.w r3, r3, #4278190080 ; 0xff000000 running = true; 313e: 429a cmp r2, r3 3140: bf08 it eq 3142: 2701 moveq r7, #1 3144: e7eb b.n 311e } } if(!running) { 3146: b13f cbz r7, 3158 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); 3148: 4621 mov r1, r4 314a: 4808 ldr r0, [pc, #32] ; (316c ) 314c: 4b0a ldr r3, [pc, #40] ; (3178 ) 314e: 4798 blx r3 lv_mem_free(tr); 3150: 4620 mov r0, r4 3152: 4b0a ldr r3, [pc, #40] ; (317c ) 3154: 4798 blx r3 3156: bdf8 pop {r3, r4, r5, r6, r7, pc} lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part); 3158: 79a1 ldrb r1, [r4, #6] 315a: 6820 ldr r0, [r4, #0] 315c: 4b08 ldr r3, [pc, #32] ; (3180 ) 315e: 4798 blx r3 lv_style_t * style_trans = _lv_style_list_get_transition_style(list); 3160: 4b08 ldr r3, [pc, #32] ; (3184 ) 3162: 4798 blx r3 lv_style_remove_prop(style_trans, tr->prop); 3164: 88a1 ldrh r1, [r4, #4] 3166: 4b08 ldr r3, [pc, #32] ; (3188 ) 3168: 4798 blx r3 316a: e7ed b.n 3148 316c: 20006d3c .word 0x20006d3c 3170: 00011f91 .word 0x00011f91 3174: 00011fa5 .word 0x00011fa5 3178: 0001207d .word 0x0001207d 317c: 000124ad .word 0x000124ad 3180: 00002fe5 .word 0x00002fe5 3184: 000070cf .word 0x000070cf 3188: 000067d5 .word 0x000067d5 0000318c : { 318c: b530 push {r4, r5, lr} 318e: b083 sub sp, #12 3190: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3192: 4b0b ldr r3, [pc, #44] ; (31c0 ) 3194: 4798 blx r3 3196: b128 cbz r0, 31a4 return obj->hidden == 0 ? false : true; 3198: f894 0034 ldrb.w r0, [r4, #52] ; 0x34 } 319c: f3c0 1000 ubfx r0, r0, #4, #1 31a0: b003 add sp, #12 31a2: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 31a4: 4b07 ldr r3, [pc, #28] ; (31c4 ) 31a6: 9300 str r3, [sp, #0] 31a8: f640 2241 movw r2, #2625 ; 0xa41 31ac: 4906 ldr r1, [pc, #24] ; (31c8 ) 31ae: 2003 movs r0, #3 31b0: 4d06 ldr r5, [pc, #24] ; (31cc ) 31b2: 47a8 blx r5 31b4: 4622 mov r2, r4 31b6: 2300 movs r3, #0 31b8: 4805 ldr r0, [pc, #20] ; (31d0 ) 31ba: 4906 ldr r1, [pc, #24] ; (31d4 ) 31bc: 4788 blx r1 31be: e7fe b.n 31be 31c0: 00002299 .word 0x00002299 31c4: 0002441c .word 0x0002441c 31c8: 000247c4 .word 0x000247c4 31cc: 00012245 .word 0x00012245 31d0: 00024824 .word 0x00024824 31d4: 000022a1 .word 0x000022a1 000031d8 : { 31d8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 31dc: b086 sub sp, #24 31de: 4604 mov r4, r0 31e0: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 31e2: 4b3a ldr r3, [pc, #232] ; (32cc ) 31e4: 4798 blx r3 31e6: b968 cbnz r0, 3204 31e8: 4b39 ldr r3, [pc, #228] ; (32d0 ) 31ea: 9300 str r3, [sp, #0] 31ec: f44f 72f0 mov.w r2, #480 ; 0x1e0 31f0: 4938 ldr r1, [pc, #224] ; (32d4 ) 31f2: 2003 movs r0, #3 31f4: 4d38 ldr r5, [pc, #224] ; (32d8 ) 31f6: 47a8 blx r5 31f8: 4622 mov r2, r4 31fa: 2300 movs r3, #0 31fc: 4837 ldr r0, [pc, #220] ; (32dc ) 31fe: 4938 ldr r1, [pc, #224] ; (32e0 ) 3200: 4788 blx r1 3202: e7fe b.n 3202 if(lv_obj_get_hidden(obj)) return; 3204: 4620 mov r0, r4 3206: 4b37 ldr r3, [pc, #220] ; (32e4 ) 3208: 4798 blx r3 320a: b110 cbz r0, 3212 } 320c: b006 add sp, #24 320e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} lv_obj_t * obj_scr = lv_obj_get_screen(obj); 3212: 4620 mov r0, r4 3214: 4b34 ldr r3, [pc, #208] ; (32e8 ) 3216: 4798 blx r3 3218: 4607 mov r7, r0 lv_disp_t * disp = lv_obj_get_disp(obj_scr); 321a: 4b34 ldr r3, [pc, #208] ; (32ec ) 321c: 4798 blx r3 321e: 4605 mov r5, r0 if(obj_scr == lv_disp_get_scr_act(disp) || obj_scr == lv_disp_get_layer_top(disp) || 3220: 4b33 ldr r3, [pc, #204] ; (32f0 ) 3222: 4798 blx r3 3224: 4287 cmp r7, r0 3226: d009 beq.n 323c 3228: 4628 mov r0, r5 322a: 4b32 ldr r3, [pc, #200] ; (32f4 ) 322c: 4798 blx r3 322e: 4287 cmp r7, r0 3230: d004 beq.n 323c obj_scr == lv_disp_get_layer_sys(disp)) { 3232: 4628 mov r0, r5 3234: 4b30 ldr r3, [pc, #192] ; (32f8 ) 3236: 4798 blx r3 if(obj_scr == lv_disp_get_scr_act(disp) || obj_scr == lv_disp_get_layer_top(disp) || 3238: 4287 cmp r7, r0 323a: d1e7 bne.n 320c lv_coord_t ext_size = obj->ext_draw_pad; 323c: f9b4 3032 ldrsh.w r3, [r4, #50] ; 0x32 3240: f104 020f add.w r2, r4, #15 3244: f104 0017 add.w r0, r4, #23 uint8_t * d8 = (uint8_t *)dst; 3248: a902 add r1, sp, #8 *d8 = *s8; 324a: f812 7f01 ldrb.w r7, [r2, #1]! 324e: f801 7b01 strb.w r7, [r1], #1 while(len) { 3252: 4282 cmp r2, r0 3254: d1f9 bne.n 324a obj_coords.x1 -= ext_size; 3256: b29b uxth r3, r3 3258: f8bd 2008 ldrh.w r2, [sp, #8] 325c: 1ad2 subs r2, r2, r3 325e: f8ad 2008 strh.w r2, [sp, #8] obj_coords.y1 -= ext_size; 3262: f8bd 200a ldrh.w r2, [sp, #10] 3266: 1ad2 subs r2, r2, r3 3268: f8ad 200a strh.w r2, [sp, #10] obj_coords.x2 += ext_size; 326c: f8bd 200c ldrh.w r2, [sp, #12] 3270: 441a add r2, r3 3272: f8ad 200c strh.w r2, [sp, #12] obj_coords.y2 += ext_size; 3276: f8bd 200e ldrh.w r2, [sp, #14] 327a: 4413 add r3, r2 327c: f8ad 300e strh.w r3, [sp, #14] is_common = _lv_area_intersect(&area_trunc, area, &obj_coords); 3280: aa02 add r2, sp, #8 3282: 4631 mov r1, r6 3284: a804 add r0, sp, #16 3286: 4b1d ldr r3, [pc, #116] ; (32fc ) 3288: 4798 blx r3 if(is_common == false) return; /*The area is not on the object*/ 328a: 2800 cmp r0, #0 328c: d0be beq.n 320c lv_obj_t * par = lv_obj_get_parent(obj); 328e: 4620 mov r0, r4 3290: 4b1b ldr r3, [pc, #108] ; (3300 ) 3292: 4798 blx r3 while(par != NULL) { 3294: 4604 mov r4, r0 3296: b198 cbz r0, 32c0 is_common = _lv_area_intersect(&area_trunc, &area_trunc, &par->coords); 3298: f8df 8060 ldr.w r8, [pc, #96] ; 32fc if(lv_obj_get_hidden(par)) return; /*If the parent is hidden then the child is hidden and won't be drawn*/ 329c: 4f11 ldr r7, [pc, #68] ; (32e4 ) par = lv_obj_get_parent(par); 329e: 4e18 ldr r6, [pc, #96] ; (3300 ) is_common = _lv_area_intersect(&area_trunc, &area_trunc, &par->coords); 32a0: f104 0210 add.w r2, r4, #16 32a4: a904 add r1, sp, #16 32a6: 4608 mov r0, r1 32a8: 47c0 blx r8 if(is_common == false) break; /*If no common parts with parent break;*/ 32aa: 2800 cmp r0, #0 32ac: d0ae beq.n 320c if(lv_obj_get_hidden(par)) return; /*If the parent is hidden then the child is hidden and won't be drawn*/ 32ae: 4620 mov r0, r4 32b0: 47b8 blx r7 32b2: 2800 cmp r0, #0 32b4: d1aa bne.n 320c par = lv_obj_get_parent(par); 32b6: 4620 mov r0, r4 32b8: 47b0 blx r6 while(par != NULL) { 32ba: 4604 mov r4, r0 32bc: 2800 cmp r0, #0 32be: d1ef bne.n 32a0 if(is_common) _lv_inv_area(disp, &area_trunc); 32c0: a904 add r1, sp, #16 32c2: 4628 mov r0, r5 32c4: 4b0f ldr r3, [pc, #60] ; (3304 ) 32c6: 4798 blx r3 32c8: e7a0 b.n 320c 32ca: bf00 nop 32cc: 00002299 .word 0x00002299 32d0: 00024430 .word 0x00024430 32d4: 000247c4 .word 0x000247c4 32d8: 00012245 .word 0x00012245 32dc: 00024824 .word 0x00024824 32e0: 000022a1 .word 0x000022a1 32e4: 0000318d .word 0x0000318d 32e8: 00002cad .word 0x00002cad 32ec: 00002d09 .word 0x00002d09 32f0: 00002335 .word 0x00002335 32f4: 00002375 .word 0x00002375 32f8: 000023b5 .word 0x000023b5 32fc: 00011501 .word 0x00011501 3300: 00002c65 .word 0x00002c65 3304: 00005e41 .word 0x00005e41 00003308 : { 3308: b530 push {r4, r5, lr} 330a: b085 sub sp, #20 330c: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 330e: 4b1c ldr r3, [pc, #112] ; (3380 ) 3310: 4798 blx r3 3312: b338 cbz r0, 3364 lv_coord_t ext_size = obj->ext_draw_pad; 3314: f9b4 3032 ldrsh.w r3, [r4, #50] ; 0x32 3318: f104 020f add.w r2, r4, #15 331c: f104 0517 add.w r5, r4, #23 uint8_t * d8 = (uint8_t *)dst; 3320: a902 add r1, sp, #8 *d8 = *s8; 3322: f812 0f01 ldrb.w r0, [r2, #1]! 3326: f801 0b01 strb.w r0, [r1], #1 while(len) { 332a: 42aa cmp r2, r5 332c: d1f9 bne.n 3322 obj_coords.x1 -= ext_size; 332e: b29b uxth r3, r3 3330: f8bd 2008 ldrh.w r2, [sp, #8] 3334: 1ad2 subs r2, r2, r3 3336: f8ad 2008 strh.w r2, [sp, #8] obj_coords.y1 -= ext_size; 333a: f8bd 200a ldrh.w r2, [sp, #10] 333e: 1ad2 subs r2, r2, r3 3340: f8ad 200a strh.w r2, [sp, #10] obj_coords.x2 += ext_size; 3344: f8bd 200c ldrh.w r2, [sp, #12] 3348: 441a add r2, r3 334a: f8ad 200c strh.w r2, [sp, #12] obj_coords.y2 += ext_size; 334e: f8bd 200e ldrh.w r2, [sp, #14] 3352: 4413 add r3, r2 3354: f8ad 300e strh.w r3, [sp, #14] lv_obj_invalidate_area(obj, &obj_coords); 3358: a902 add r1, sp, #8 335a: 4620 mov r0, r4 335c: 4b09 ldr r3, [pc, #36] ; (3384 ) 335e: 4798 blx r3 } 3360: b005 add sp, #20 3362: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3364: 4b08 ldr r3, [pc, #32] ; (3388 ) 3366: 9300 str r3, [sp, #0] 3368: f240 220d movw r2, #525 ; 0x20d 336c: 4907 ldr r1, [pc, #28] ; (338c ) 336e: 2003 movs r0, #3 3370: 4d07 ldr r5, [pc, #28] ; (3390 ) 3372: 47a8 blx r5 3374: 4622 mov r2, r4 3376: 2300 movs r3, #0 3378: 4806 ldr r0, [pc, #24] ; (3394 ) 337a: 4907 ldr r1, [pc, #28] ; (3398 ) 337c: 4788 blx r1 337e: e7fe b.n 337e 3380: 00002299 .word 0x00002299 3384: 000031d9 .word 0x000031d9 3388: 00024448 .word 0x00024448 338c: 000247c4 .word 0x000247c4 3390: 00012245 .word 0x00012245 3394: 00024824 .word 0x00024824 3398: 000022a1 .word 0x000022a1 0000339c : { 339c: b5f0 push {r4, r5, r6, r7, lr} 339e: b083 sub sp, #12 33a0: 4605 mov r5, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 33a2: 4b16 ldr r3, [pc, #88] ; (33fc ) 33a4: 4798 blx r3 33a6: b968 cbnz r0, 33c4 33a8: 4b15 ldr r3, [pc, #84] ; (3400 ) 33aa: 9300 str r3, [sp, #0] 33ac: f240 2262 movw r2, #610 ; 0x262 33b0: 4914 ldr r1, [pc, #80] ; (3404 ) 33b2: 2003 movs r0, #3 33b4: 4c14 ldr r4, [pc, #80] ; (3408 ) 33b6: 47a0 blx r4 33b8: 462a mov r2, r5 33ba: 2300 movs r3, #0 33bc: 4813 ldr r0, [pc, #76] ; (340c ) 33be: 4914 ldr r1, [pc, #80] ; (3410 ) 33c0: 4788 blx r1 33c2: e7fe b.n 33c2 lv_obj_t * parent = lv_obj_get_parent(obj); 33c4: 4628 mov r0, r5 33c6: 4b13 ldr r3, [pc, #76] ; (3414 ) 33c8: 4798 blx r3 33ca: 4604 mov r4, r0 if(_lv_ll_get_head(&parent->child_ll) == obj) return; 33cc: 1d06 adds r6, r0, #4 33ce: 4630 mov r0, r6 33d0: 4b11 ldr r3, [pc, #68] ; (3418 ) 33d2: 4798 blx r3 33d4: 4285 cmp r5, r0 33d6: d00f beq.n 33f8 lv_obj_invalidate(parent); 33d8: 4620 mov r0, r4 33da: 4f10 ldr r7, [pc, #64] ; (341c ) 33dc: 47b8 blx r7 _lv_ll_chg_list(&parent->child_ll, &parent->child_ll, obj, true); 33de: 2301 movs r3, #1 33e0: 462a mov r2, r5 33e2: 4631 mov r1, r6 33e4: 4630 mov r0, r6 33e6: 4e0e ldr r6, [pc, #56] ; (3420 ) 33e8: 47b0 blx r6 parent->signal_cb(parent, LV_SIGNAL_CHILD_CHG, obj); 33ea: 69e3 ldr r3, [r4, #28] 33ec: 462a mov r2, r5 33ee: 2101 movs r1, #1 33f0: 4620 mov r0, r4 33f2: 4798 blx r3 lv_obj_invalidate(parent); 33f4: 4620 mov r0, r4 33f6: 47b8 blx r7 } 33f8: b003 add sp, #12 33fa: bdf0 pop {r4, r5, r6, r7, pc} 33fc: 00002299 .word 0x00002299 3400: 0002445c .word 0x0002445c 3404: 000247c4 .word 0x000247c4 3408: 00012245 .word 0x00012245 340c: 00024824 .word 0x00024824 3410: 000022a1 .word 0x000022a1 3414: 00002c65 .word 0x00002c65 3418: 00011f91 .word 0x00011f91 341c: 00003309 .word 0x00003309 3420: 00012109 .word 0x00012109 00003424 : { 3424: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 3428: b084 sub sp, #16 342a: 4604 mov r4, r0 342c: 468a mov sl, r1 342e: 4617 mov r7, r2 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3430: 4b2d ldr r3, [pc, #180] ; (34e8 ) 3432: 4798 blx r3 3434: 2800 cmp r0, #0 3436: d03e beq.n 34b6 lv_obj_t * par = obj->parent; 3438: 6826 ldr r6, [r4, #0] if(par == NULL) { 343a: 2e00 cmp r6, #0 343c: d049 beq.n 34d2 diff.x = x - obj->coords.x1; 343e: 8a33 ldrh r3, [r6, #16] 3440: 8a22 ldrh r2, [r4, #16] 3442: 1a9b subs r3, r3, r2 3444: 4453 add r3, sl 3446: fa1f fa83 uxth.w sl, r3 344a: fa0f f88a sxth.w r8, sl diff.y = y - obj->coords.y1; 344e: 8a75 ldrh r5, [r6, #18] 3450: 8a63 ldrh r3, [r4, #18] 3452: 1aed subs r5, r5, r3 3454: 443d add r5, r7 3456: b2ad uxth r5, r5 3458: fa0f f985 sxth.w r9, r5 if(diff.x == 0 && diff.y == 0) return; 345c: f1b8 0f00 cmp.w r8, #0 3460: d102 bne.n 3468 3462: f1b9 0f00 cmp.w r9, #0 3466: d023 beq.n 34b0 lv_obj_invalidate(obj); 3468: 4620 mov r0, r4 346a: 4f20 ldr r7, [pc, #128] ; (34ec ) 346c: 47b8 blx r7 lv_obj_get_coords(obj, &ori); 346e: a902 add r1, sp, #8 3470: 4620 mov r0, r4 3472: 4b1f ldr r3, [pc, #124] ; (34f0 ) 3474: 4798 blx r3 obj->coords.x1 += diff.x; 3476: 8a23 ldrh r3, [r4, #16] 3478: 4453 add r3, sl 347a: 8223 strh r3, [r4, #16] obj->coords.y1 += diff.y; 347c: 8a63 ldrh r3, [r4, #18] 347e: 442b add r3, r5 3480: 8263 strh r3, [r4, #18] obj->coords.x2 += diff.x; 3482: 8aa3 ldrh r3, [r4, #20] 3484: 4453 add r3, sl 3486: 82a3 strh r3, [r4, #20] obj->coords.y2 += diff.y; 3488: 8ae3 ldrh r3, [r4, #22] 348a: 441d add r5, r3 348c: 82e5 strh r5, [r4, #22] refresh_children_position(obj, diff.x, diff.y); 348e: 464a mov r2, r9 3490: 4641 mov r1, r8 3492: 4620 mov r0, r4 3494: 4b17 ldr r3, [pc, #92] ; (34f4 ) 3496: 4798 blx r3 obj->signal_cb(obj, LV_SIGNAL_COORD_CHG, &ori); 3498: 69e3 ldr r3, [r4, #28] 349a: aa02 add r2, sp, #8 349c: 2102 movs r1, #2 349e: 4620 mov r0, r4 34a0: 4798 blx r3 par->signal_cb(par, LV_SIGNAL_CHILD_CHG, obj); 34a2: 69f3 ldr r3, [r6, #28] 34a4: 4622 mov r2, r4 34a6: 2101 movs r1, #1 34a8: 4630 mov r0, r6 34aa: 4798 blx r3 lv_obj_invalidate(obj); 34ac: 4620 mov r0, r4 34ae: 47b8 blx r7 } 34b0: b004 add sp, #16 34b2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 34b6: 4b10 ldr r3, [pc, #64] ; (34f8 ) 34b8: 9300 str r3, [sp, #0] 34ba: f240 2296 movw r2, #662 ; 0x296 34be: 490f ldr r1, [pc, #60] ; (34fc ) 34c0: 2003 movs r0, #3 34c2: 4d0f ldr r5, [pc, #60] ; (3500 ) 34c4: 47a8 blx r5 34c6: 4622 mov r2, r4 34c8: 2300 movs r3, #0 34ca: 480e ldr r0, [pc, #56] ; (3504 ) 34cc: 490e ldr r1, [pc, #56] ; (3508 ) 34ce: 4788 blx r1 34d0: e7fe b.n 34d0 LV_LOG_WARN("lv_obj_set_pos: not changing position of screen object"); 34d2: 4b0e ldr r3, [pc, #56] ; (350c ) 34d4: 9300 str r3, [sp, #0] 34d6: 4b08 ldr r3, [pc, #32] ; (34f8 ) 34d8: f44f 7227 mov.w r2, #668 ; 0x29c 34dc: 4907 ldr r1, [pc, #28] ; (34fc ) 34de: 2002 movs r0, #2 34e0: 4c07 ldr r4, [pc, #28] ; (3500 ) 34e2: 47a0 blx r4 return; 34e4: e7e4 b.n 34b0 34e6: bf00 nop 34e8: 00002299 .word 0x00002299 34ec: 00003309 .word 0x00003309 34f0: 00002e29 .word 0x00002e29 34f4: 000027f5 .word 0x000027f5 34f8: 0002448c .word 0x0002448c 34fc: 000247c4 .word 0x000247c4 3500: 00012245 .word 0x00012245 3504: 00024824 .word 0x00024824 3508: 000022a1 .word 0x000022a1 350c: 000248b8 .word 0x000248b8 00003510 : { 3510: b530 push {r4, r5, lr} 3512: b083 sub sp, #12 3514: 4604 mov r4, r0 3516: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3518: 4b0d ldr r3, [pc, #52] ; (3550 ) 351a: 4798 blx r3 351c: b968 cbnz r0, 353a 351e: 4b0d ldr r3, [pc, #52] ; (3554 ) 3520: 9300 str r3, [sp, #0] 3522: f44f 7233 mov.w r2, #716 ; 0x2cc 3526: 490c ldr r1, [pc, #48] ; (3558 ) 3528: 2003 movs r0, #3 352a: 4d0c ldr r5, [pc, #48] ; (355c ) 352c: 47a8 blx r5 352e: 4622 mov r2, r4 3530: 2300 movs r3, #0 3532: 480b ldr r0, [pc, #44] ; (3560 ) 3534: 490b ldr r1, [pc, #44] ; (3564 ) 3536: 4788 blx r1 3538: e7fe b.n 3538 lv_obj_set_pos(obj, x, lv_obj_get_y(obj)); 353a: 4620 mov r0, r4 353c: 4b0a ldr r3, [pc, #40] ; (3568 ) 353e: 4798 blx r3 3540: 4602 mov r2, r0 3542: 4629 mov r1, r5 3544: 4620 mov r0, r4 3546: 4b09 ldr r3, [pc, #36] ; (356c ) 3548: 4798 blx r3 } 354a: b003 add sp, #12 354c: bd30 pop {r4, r5, pc} 354e: bf00 nop 3550: 00002299 .word 0x00002299 3554: 0002449c .word 0x0002449c 3558: 000247c4 .word 0x000247c4 355c: 00012245 .word 0x00012245 3560: 00024824 .word 0x00024824 3564: 000022a1 .word 0x000022a1 3568: 00002ee5 .word 0x00002ee5 356c: 00003425 .word 0x00003425 00003570 : { 3570: b530 push {r4, r5, lr} 3572: b083 sub sp, #12 3574: 4604 mov r4, r0 3576: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3578: 4b0d ldr r3, [pc, #52] ; (35b0 ) 357a: 4798 blx r3 357c: b968 cbnz r0, 359a 357e: 4b0d ldr r3, [pc, #52] ; (35b4 ) 3580: 9300 str r3, [sp, #0] 3582: f44f 7236 mov.w r2, #728 ; 0x2d8 3586: 490c ldr r1, [pc, #48] ; (35b8 ) 3588: 2003 movs r0, #3 358a: 4d0c ldr r5, [pc, #48] ; (35bc ) 358c: 47a8 blx r5 358e: 4622 mov r2, r4 3590: 2300 movs r3, #0 3592: 480b ldr r0, [pc, #44] ; (35c0 ) 3594: 490b ldr r1, [pc, #44] ; (35c4 ) 3596: 4788 blx r1 3598: e7fe b.n 3598 lv_obj_set_pos(obj, lv_obj_get_x(obj), y); 359a: 4620 mov r0, r4 359c: 4b0a ldr r3, [pc, #40] ; (35c8 ) 359e: 4798 blx r3 35a0: 462a mov r2, r5 35a2: 4601 mov r1, r0 35a4: 4620 mov r0, r4 35a6: 4b09 ldr r3, [pc, #36] ; (35cc ) 35a8: 4798 blx r3 } 35aa: b003 add sp, #12 35ac: bd30 pop {r4, r5, pc} 35ae: bf00 nop 35b0: 00002299 .word 0x00002299 35b4: 000244ac .word 0x000244ac 35b8: 000247c4 .word 0x000247c4 35bc: 00012245 .word 0x00012245 35c0: 00024824 .word 0x00024824 35c4: 000022a1 .word 0x000022a1 35c8: 00002e85 .word 0x00002e85 35cc: 00003425 .word 0x00003425 000035d0 : { 35d0: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 35d4: b085 sub sp, #20 35d6: 4604 mov r4, r0 35d8: 460d mov r5, r1 35da: 4690 mov r8, r2 35dc: 461f mov r7, r3 35de: f9bd 6030 ldrsh.w r6, [sp, #48] ; 0x30 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 35e2: 4b2c ldr r3, [pc, #176] ; (3694 ) 35e4: 4798 blx r3 35e6: b968 cbnz r0, 3604 35e8: 4b2b ldr r3, [pc, #172] ; (3698 ) 35ea: 9300 str r3, [sp, #0] 35ec: f240 326d movw r2, #877 ; 0x36d 35f0: 492a ldr r1, [pc, #168] ; (369c ) 35f2: 2003 movs r0, #3 35f4: 4d2a ldr r5, [pc, #168] ; (36a0 ) 35f6: 47a8 blx r5 35f8: 4622 mov r2, r4 35fa: 2300 movs r3, #0 35fc: 4829 ldr r0, [pc, #164] ; (36a4 ) 35fe: 492a ldr r1, [pc, #168] ; (36a8 ) 3600: 4788 blx r1 3602: e7fe b.n 3602 if(base == NULL) base = lv_obj_get_parent(obj); 3604: b18d cbz r5, 362a LV_ASSERT_OBJ(base, LV_OBJX_NAME); 3606: 4628 mov r0, r5 3608: 4b22 ldr r3, [pc, #136] ; (3694 ) 360a: 4798 blx r3 360c: b990 cbnz r0, 3634 360e: 4b22 ldr r3, [pc, #136] ; (3698 ) 3610: 9300 str r3, [sp, #0] 3612: f240 3271 movw r2, #881 ; 0x371 3616: 4921 ldr r1, [pc, #132] ; (369c ) 3618: 2003 movs r0, #3 361a: 4c21 ldr r4, [pc, #132] ; (36a0 ) 361c: 47a0 blx r4 361e: 462a mov r2, r5 3620: 2300 movs r3, #0 3622: 4820 ldr r0, [pc, #128] ; (36a4 ) 3624: 4920 ldr r1, [pc, #128] ; (36a8 ) 3626: 4788 blx r1 3628: e7fe b.n 3628 if(base == NULL) base = lv_obj_get_parent(obj); 362a: 4620 mov r0, r4 362c: 4b1f ldr r3, [pc, #124] ; (36ac ) 362e: 4798 blx r3 3630: 4605 mov r5, r0 3632: e7e8 b.n 3606 _lv_area_align(&base->coords, &obj->coords, align, &new_pos); 3634: ab03 add r3, sp, #12 3636: 4642 mov r2, r8 3638: f104 0110 add.w r1, r4, #16 363c: f105 0010 add.w r0, r5, #16 3640: f8df 9070 ldr.w r9, [pc, #112] ; 36b4 3644: 47c8 blx r9 lv_obj_t * par = lv_obj_get_parent(obj); 3646: 4620 mov r0, r4 3648: 4b18 ldr r3, [pc, #96] ; (36ac ) 364a: 4798 blx r3 lv_coord_t par_abs_y = par->coords.y1; 364c: f9b0 3012 ldrsh.w r3, [r0, #18] new_pos.y += y_ofs; 3650: f8bd 200e ldrh.w r2, [sp, #14] 3654: 4432 add r2, r6 new_pos.x += x_ofs; 3656: f8bd 100c ldrh.w r1, [sp, #12] 365a: 4439 add r1, r7 new_pos.x -= par_abs_x; 365c: 8a00 ldrh r0, [r0, #16] 365e: 1a09 subs r1, r1, r0 3660: b209 sxth r1, r1 3662: f8ad 100c strh.w r1, [sp, #12] new_pos.y -= par_abs_y; 3666: 1ad2 subs r2, r2, r3 3668: b212 sxth r2, r2 366a: f8ad 200e strh.w r2, [sp, #14] lv_obj_set_pos(obj, new_pos.x, new_pos.y); 366e: 4620 mov r0, r4 3670: 4b0f ldr r3, [pc, #60] ; (36b0 ) 3672: 4798 blx r3 obj->realign.align = align; 3674: f884 8048 strb.w r8, [r4, #72] ; 0x48 obj->realign.xofs = x_ofs; 3678: f8a4 7044 strh.w r7, [r4, #68] ; 0x44 obj->realign.yofs = y_ofs; 367c: f8a4 6046 strh.w r6, [r4, #70] ; 0x46 obj->realign.base = base; 3680: 6425 str r5, [r4, #64] ; 0x40 obj->realign.origo_align = 0; 3682: f894 3049 ldrb.w r3, [r4, #73] ; 0x49 3686: f36f 0341 bfc r3, #1, #1 368a: f884 3049 strb.w r3, [r4, #73] ; 0x49 } 368e: b005 add sp, #20 3690: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} 3694: 00002299 .word 0x00002299 3698: 000244bc .word 0x000244bc 369c: 000247c4 .word 0x000247c4 36a0: 00012245 .word 0x00012245 36a4: 00024824 .word 0x00024824 36a8: 000022a1 .word 0x000022a1 36ac: 00002c65 .word 0x00002c65 36b0: 00003425 .word 0x00003425 36b4: 0001180d .word 0x0001180d 000036b8 : { 36b8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 36bc: b085 sub sp, #20 36be: 4681 mov r9, r0 36c0: 460e mov r6, r1 36c2: 4692 mov sl, r2 36c4: 9303 str r3, [sp, #12] 36c6: f9bd b038 ldrsh.w fp, [sp, #56] ; 0x38 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 36ca: 4ba3 ldr r3, [pc, #652] ; (3958 ) 36cc: 4798 blx r3 36ce: b968 cbnz r0, 36ec 36d0: 4ba2 ldr r3, [pc, #648] ; (395c ) 36d2: 9300 str r3, [sp, #0] 36d4: f240 3295 movw r2, #917 ; 0x395 36d8: 49a1 ldr r1, [pc, #644] ; (3960 ) 36da: 2003 movs r0, #3 36dc: 4ca1 ldr r4, [pc, #644] ; (3964 ) 36de: 47a0 blx r4 36e0: 464a mov r2, r9 36e2: 2300 movs r3, #0 36e4: 48a0 ldr r0, [pc, #640] ; (3968 ) 36e6: 49a1 ldr r1, [pc, #644] ; (396c ) 36e8: 4788 blx r1 36ea: e7fe b.n 36ea lv_coord_t new_x = lv_obj_get_x(obj); 36ec: 4648 mov r0, r9 36ee: 4ba0 ldr r3, [pc, #640] ; (3970 ) 36f0: 4798 blx r3 36f2: 4605 mov r5, r0 lv_coord_t new_y = lv_obj_get_y(obj); 36f4: 4648 mov r0, r9 36f6: 4b9f ldr r3, [pc, #636] ; (3974 ) 36f8: 4798 blx r3 36fa: 4604 mov r4, r0 lv_coord_t obj_w_half = lv_obj_get_width(obj) / 2; 36fc: 4648 mov r0, r9 36fe: 4b9e ldr r3, [pc, #632] ; (3978 ) 3700: 4798 blx r3 3702: eb00 70d0 add.w r0, r0, r0, lsr #31 3706: f340 084f sbfx r8, r0, #1, #16 lv_coord_t obj_h_half = lv_obj_get_height(obj) / 2; 370a: 4648 mov r0, r9 370c: 4b9b ldr r3, [pc, #620] ; (397c ) 370e: 4798 blx r3 3710: eb00 70d0 add.w r0, r0, r0, lsr #31 3714: f340 074f sbfx r7, r0, #1, #16 if(base == NULL) { 3718: b1ee cbz r6, 3756 LV_ASSERT_OBJ(base, LV_OBJX_NAME); 371a: 4630 mov r0, r6 371c: 4b8e ldr r3, [pc, #568] ; (3958 ) 371e: 4798 blx r3 3720: b1f0 cbz r0, 3760 switch(align) { 3722: f1ba 0f14 cmp.w sl, #20 3726: d839 bhi.n 379c 3728: e8df f01a tbh [pc, sl, lsl #1] 372c: 005c0028 .word 0x005c0028 3730: 006d0062 .word 0x006d0062 3734: 007f0076 .word 0x007f0076 3738: 0099008d .word 0x0099008d 373c: 00b400a5 .word 0x00b400a5 3740: 00c500ba .word 0x00c500ba 3744: 00d700ce .word 0x00d700ce 3748: 00f100e5 .word 0x00f100e5 374c: 010300f7 .word 0x010300f7 3750: 012e010c .word 0x012e010c 3754: 013d .short 0x013d base = lv_obj_get_parent(obj); 3756: 4648 mov r0, r9 3758: 4b89 ldr r3, [pc, #548] ; (3980 ) 375a: 4798 blx r3 375c: 4606 mov r6, r0 375e: e7dc b.n 371a LV_ASSERT_OBJ(base, LV_OBJX_NAME); 3760: 4b7e ldr r3, [pc, #504] ; (395c ) 3762: 9300 str r3, [sp, #0] 3764: f240 32a1 movw r2, #929 ; 0x3a1 3768: 497d ldr r1, [pc, #500] ; (3960 ) 376a: 2003 movs r0, #3 376c: 4c7d ldr r4, [pc, #500] ; (3964 ) 376e: 47a0 blx r4 3770: 4632 mov r2, r6 3772: 2300 movs r3, #0 3774: 487c ldr r0, [pc, #496] ; (3968 ) 3776: 497d ldr r1, [pc, #500] ; (396c ) 3778: 4788 blx r1 377a: e7fe b.n 377a new_x = lv_obj_get_width(base) / 2 - obj_w_half; 377c: 4630 mov r0, r6 377e: 4b7e ldr r3, [pc, #504] ; (3978 ) 3780: 4798 blx r3 3782: eb00 70d0 add.w r0, r0, r0, lsr #31 3786: ebc8 0560 rsb r5, r8, r0, asr #1 378a: b22d sxth r5, r5 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 378c: 4630 mov r0, r6 378e: 4b7b ldr r3, [pc, #492] ; (397c ) 3790: 4798 blx r3 3792: eb00 70d0 add.w r0, r0, r0, lsr #31 3796: ebc7 0460 rsb r4, r7, r0, asr #1 379a: b224 sxth r4, r4 lv_obj_t * par = lv_obj_get_parent(obj); 379c: 4648 mov r0, r9 379e: 4b78 ldr r3, [pc, #480] ; (3980 ) 37a0: 4798 blx r3 new_x += x_ofs + base_abs_x; 37a2: 8a31 ldrh r1, [r6, #16] 37a4: 9f03 ldr r7, [sp, #12] 37a6: 4439 add r1, r7 37a8: 4429 add r1, r5 new_x -= par_abs_x; 37aa: 8a03 ldrh r3, [r0, #16] 37ac: 1ac9 subs r1, r1, r3 new_y += y_ofs + base_abs_y; 37ae: 8a72 ldrh r2, [r6, #18] 37b0: 445a add r2, fp 37b2: 4422 add r2, r4 new_y -= par_abs_y; 37b4: 8a43 ldrh r3, [r0, #18] 37b6: 1ad2 subs r2, r2, r3 lv_obj_set_pos(obj, new_x, new_y); 37b8: b212 sxth r2, r2 37ba: b209 sxth r1, r1 37bc: 4648 mov r0, r9 37be: 4b71 ldr r3, [pc, #452] ; (3984 ) 37c0: 4798 blx r3 obj->realign.align = align; 37c2: f889 a048 strb.w sl, [r9, #72] ; 0x48 obj->realign.xofs = x_ofs; 37c6: f8a9 7044 strh.w r7, [r9, #68] ; 0x44 obj->realign.yofs = y_ofs; 37ca: f8a9 b046 strh.w fp, [r9, #70] ; 0x46 obj->realign.base = base; 37ce: f8c9 6040 str.w r6, [r9, #64] ; 0x40 obj->realign.origo_align = 1; 37d2: f899 3049 ldrb.w r3, [r9, #73] ; 0x49 37d6: f043 0302 orr.w r3, r3, #2 37da: f889 3049 strb.w r3, [r9, #73] ; 0x49 } 37de: b005 add sp, #20 37e0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} new_x = -obj_w_half; 37e4: f1c8 0500 rsb r5, r8, #0 37e8: b22d sxth r5, r5 new_y = -obj_h_half; 37ea: 427c negs r4, r7 37ec: b224 sxth r4, r4 break; 37ee: e7d5 b.n 379c new_x = lv_obj_get_width(base) / 2 - obj_w_half; 37f0: 4630 mov r0, r6 37f2: 4b61 ldr r3, [pc, #388] ; (3978 ) 37f4: 4798 blx r3 37f6: eb00 70d0 add.w r0, r0, r0, lsr #31 37fa: ebc8 0560 rsb r5, r8, r0, asr #1 37fe: b22d sxth r5, r5 new_y = -obj_h_half; 3800: 427c negs r4, r7 3802: b224 sxth r4, r4 break; 3804: e7ca b.n 379c new_x = lv_obj_get_width(base) - obj_w_half; 3806: 4630 mov r0, r6 3808: 4b5b ldr r3, [pc, #364] ; (3978 ) 380a: 4798 blx r3 380c: eba0 0008 sub.w r0, r0, r8 3810: b205 sxth r5, r0 new_y = -obj_h_half; 3812: 427c negs r4, r7 3814: b224 sxth r4, r4 break; 3816: e7c1 b.n 379c new_x = -obj_w_half; 3818: f1c8 0500 rsb r5, r8, #0 381c: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 381e: 4630 mov r0, r6 3820: 4b56 ldr r3, [pc, #344] ; (397c ) 3822: 4798 blx r3 3824: 1bc0 subs r0, r0, r7 3826: b204 sxth r4, r0 break; 3828: e7b8 b.n 379c new_x = lv_obj_get_width(base) / 2 - obj_w_half; 382a: 4630 mov r0, r6 382c: 4b52 ldr r3, [pc, #328] ; (3978 ) 382e: 4798 blx r3 3830: eb00 70d0 add.w r0, r0, r0, lsr #31 3834: ebc8 0560 rsb r5, r8, r0, asr #1 3838: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 383a: 4630 mov r0, r6 383c: 4b4f ldr r3, [pc, #316] ; (397c ) 383e: 4798 blx r3 3840: 1bc0 subs r0, r0, r7 3842: b204 sxth r4, r0 break; 3844: e7aa b.n 379c new_x = lv_obj_get_width(base) - obj_w_half; 3846: 4630 mov r0, r6 3848: 4b4b ldr r3, [pc, #300] ; (3978 ) 384a: 4798 blx r3 384c: eba0 0008 sub.w r0, r0, r8 3850: b205 sxth r5, r0 new_y = lv_obj_get_height(base) - obj_h_half; 3852: 4630 mov r0, r6 3854: 4b49 ldr r3, [pc, #292] ; (397c ) 3856: 4798 blx r3 3858: 1bc0 subs r0, r0, r7 385a: b204 sxth r4, r0 break; 385c: e79e b.n 379c new_x = -obj_w_half; 385e: f1c8 0500 rsb r5, r8, #0 3862: b22d sxth r5, r5 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 3864: 4630 mov r0, r6 3866: 4b45 ldr r3, [pc, #276] ; (397c ) 3868: 4798 blx r3 386a: eb00 70d0 add.w r0, r0, r0, lsr #31 386e: ebc7 0460 rsb r4, r7, r0, asr #1 3872: b224 sxth r4, r4 break; 3874: e792 b.n 379c new_x = lv_obj_get_width(base) - obj_w_half; 3876: 4630 mov r0, r6 3878: 4b3f ldr r3, [pc, #252] ; (3978 ) 387a: 4798 blx r3 387c: eba0 0008 sub.w r0, r0, r8 3880: b205 sxth r5, r0 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 3882: 4630 mov r0, r6 3884: 4b3d ldr r3, [pc, #244] ; (397c ) 3886: 4798 blx r3 3888: eb00 70d0 add.w r0, r0, r0, lsr #31 388c: ebc7 0460 rsb r4, r7, r0, asr #1 3890: b224 sxth r4, r4 break; 3892: e783 b.n 379c new_x = -obj_w_half; 3894: f1c8 0500 rsb r5, r8, #0 3898: b22d sxth r5, r5 new_y = -obj_h_half; 389a: 427c negs r4, r7 389c: b224 sxth r4, r4 break; 389e: e77d b.n 379c new_x = lv_obj_get_width(base) / 2 - obj_w_half; 38a0: 4630 mov r0, r6 38a2: 4b35 ldr r3, [pc, #212] ; (3978 ) 38a4: 4798 blx r3 38a6: eb00 70d0 add.w r0, r0, r0, lsr #31 38aa: ebc8 0560 rsb r5, r8, r0, asr #1 38ae: b22d sxth r5, r5 new_y = -obj_h_half; 38b0: 427c negs r4, r7 38b2: b224 sxth r4, r4 break; 38b4: e772 b.n 379c new_x = lv_obj_get_width(base) - obj_w_half; 38b6: 4630 mov r0, r6 38b8: 4b2f ldr r3, [pc, #188] ; (3978 ) 38ba: 4798 blx r3 38bc: eba0 0008 sub.w r0, r0, r8 38c0: b205 sxth r5, r0 new_y = -obj_h_half; 38c2: 427c negs r4, r7 38c4: b224 sxth r4, r4 break; 38c6: e769 b.n 379c new_x = -obj_w_half; 38c8: f1c8 0500 rsb r5, r8, #0 38cc: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 38ce: 4630 mov r0, r6 38d0: 4b2a ldr r3, [pc, #168] ; (397c ) 38d2: 4798 blx r3 38d4: 1bc0 subs r0, r0, r7 38d6: b204 sxth r4, r0 break; 38d8: e760 b.n 379c new_x = lv_obj_get_width(base) / 2 - obj_w_half; 38da: 4630 mov r0, r6 38dc: 4b26 ldr r3, [pc, #152] ; (3978 ) 38de: 4798 blx r3 38e0: eb00 70d0 add.w r0, r0, r0, lsr #31 38e4: ebc8 0560 rsb r5, r8, r0, asr #1 38e8: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 38ea: 4630 mov r0, r6 38ec: 4b23 ldr r3, [pc, #140] ; (397c ) 38ee: 4798 blx r3 38f0: 1bc0 subs r0, r0, r7 38f2: b204 sxth r4, r0 break; 38f4: e752 b.n 379c new_x = lv_obj_get_width(base) - obj_w_half; 38f6: 4630 mov r0, r6 38f8: 4b1f ldr r3, [pc, #124] ; (3978 ) 38fa: 4798 blx r3 38fc: eba0 0008 sub.w r0, r0, r8 3900: b205 sxth r5, r0 new_y = lv_obj_get_height(base) - obj_h_half; 3902: 4630 mov r0, r6 3904: 4b1d ldr r3, [pc, #116] ; (397c ) 3906: 4798 blx r3 3908: 1bc0 subs r0, r0, r7 390a: b204 sxth r4, r0 break; 390c: e746 b.n 379c new_x = -obj_w_half; 390e: f1c8 0500 rsb r5, r8, #0 3912: b22d sxth r5, r5 new_y = -obj_h_half; 3914: 427c negs r4, r7 3916: b224 sxth r4, r4 break; 3918: e740 b.n 379c new_x = -obj_w_half; 391a: f1c8 0500 rsb r5, r8, #0 391e: b22d sxth r5, r5 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 3920: 4630 mov r0, r6 3922: 4b16 ldr r3, [pc, #88] ; (397c ) 3924: 4798 blx r3 3926: eb00 70d0 add.w r0, r0, r0, lsr #31 392a: ebc7 0460 rsb r4, r7, r0, asr #1 392e: b224 sxth r4, r4 break; 3930: e734 b.n 379c new_x = -obj_w_half; 3932: f1c8 0500 rsb r5, r8, #0 3936: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 3938: 4630 mov r0, r6 393a: 4b10 ldr r3, [pc, #64] ; (397c ) 393c: 4798 blx r3 393e: 1bc0 subs r0, r0, r7 3940: b204 sxth r4, r0 break; 3942: e72b b.n 379c new_x = lv_obj_get_width(base) - obj_w_half; 3944: 4630 mov r0, r6 3946: 4b0c ldr r3, [pc, #48] ; (3978 ) 3948: 4798 blx r3 394a: eba0 0008 sub.w r0, r0, r8 394e: b205 sxth r5, r0 new_y = -obj_h_half; 3950: 427c negs r4, r7 3952: b224 sxth r4, r4 break; 3954: e722 b.n 379c 3956: bf00 nop 3958: 00002299 .word 0x00002299 395c: 000244cc .word 0x000244cc 3960: 000247c4 .word 0x000247c4 3964: 00012245 .word 0x00012245 3968: 00024824 .word 0x00024824 396c: 000022a1 .word 0x000022a1 3970: 00002e85 .word 0x00002e85 3974: 00002ee5 .word 0x00002ee5 3978: 00002f45 .word 0x00002f45 397c: 00002f95 .word 0x00002f95 3980: 00002c65 .word 0x00002c65 3984: 00003425 .word 0x00003425 new_x = lv_obj_get_width(base) - obj_w_half; 3988: 4630 mov r0, r6 398a: 4b0d ldr r3, [pc, #52] ; (39c0 ) 398c: 4798 blx r3 398e: eba0 0008 sub.w r0, r0, r8 3992: b205 sxth r5, r0 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 3994: 4630 mov r0, r6 3996: 4b0b ldr r3, [pc, #44] ; (39c4 ) 3998: 4798 blx r3 399a: eb00 70d0 add.w r0, r0, r0, lsr #31 399e: ebc7 0460 rsb r4, r7, r0, asr #1 39a2: b224 sxth r4, r4 break; 39a4: e6fa b.n 379c new_x = lv_obj_get_width(base) - obj_w_half; 39a6: 4630 mov r0, r6 39a8: 4b05 ldr r3, [pc, #20] ; (39c0 ) 39aa: 4798 blx r3 39ac: eba0 0008 sub.w r0, r0, r8 39b0: b205 sxth r5, r0 new_y = lv_obj_get_height(base) - obj_h_half; 39b2: 4630 mov r0, r6 39b4: 4b03 ldr r3, [pc, #12] ; (39c4 ) 39b6: 4798 blx r3 39b8: 1bc0 subs r0, r0, r7 39ba: b204 sxth r4, r0 break; 39bc: e6ee b.n 379c 39be: bf00 nop 39c0: 00002f45 .word 0x00002f45 39c4: 00002f95 .word 0x00002f95 000039c8 : { 39c8: b530 push {r4, r5, lr} 39ca: b083 sub sp, #12 39cc: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 39ce: 4b12 ldr r3, [pc, #72] ; (3a18 ) 39d0: 4798 blx r3 39d2: b190 cbz r0, 39fa if(obj->realign.origo_align) 39d4: f894 3049 ldrb.w r3, [r4, #73] ; 0x49 39d8: f013 0f02 tst.w r3, #2 lv_obj_align_origo(obj, obj->realign.base, obj->realign.align, obj->realign.xofs, obj->realign.yofs); 39dc: f9b4 3044 ldrsh.w r3, [r4, #68] ; 0x44 39e0: f894 2048 ldrb.w r2, [r4, #72] ; 0x48 39e4: f9b4 1046 ldrsh.w r1, [r4, #70] ; 0x46 39e8: 9100 str r1, [sp, #0] 39ea: 6c21 ldr r1, [r4, #64] ; 0x40 39ec: 4620 mov r0, r4 39ee: bf14 ite ne 39f0: 4c0a ldrne r4, [pc, #40] ; (3a1c ) lv_obj_align(obj, obj->realign.base, obj->realign.align, obj->realign.xofs, obj->realign.yofs); 39f2: 4c0b ldreq r4, [pc, #44] ; (3a20 ) 39f4: 47a0 blx r4 } 39f6: b003 add sp, #12 39f8: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 39fa: 4b0a ldr r3, [pc, #40] ; (3a24 ) 39fc: 9300 str r3, [sp, #0] 39fe: f240 422a movw r2, #1066 ; 0x42a 3a02: 4909 ldr r1, [pc, #36] ; (3a28 ) 3a04: 2003 movs r0, #3 3a06: 4d09 ldr r5, [pc, #36] ; (3a2c ) 3a08: 47a8 blx r5 3a0a: 4622 mov r2, r4 3a0c: 2300 movs r3, #0 3a0e: 4808 ldr r0, [pc, #32] ; (3a30 ) 3a10: 4908 ldr r1, [pc, #32] ; (3a34 ) 3a12: 4788 blx r1 3a14: e7fe b.n 3a14 3a16: bf00 nop 3a18: 00002299 .word 0x00002299 3a1c: 000036b9 .word 0x000036b9 3a20: 000035d1 .word 0x000035d1 3a24: 000244e0 .word 0x000244e0 3a28: 000247c4 .word 0x000247c4 3a2c: 00012245 .word 0x00012245 3a30: 00024824 .word 0x00024824 3a34: 000022a1 .word 0x000022a1 00003a38 : { 3a38: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 3a3c: 4606 mov r6, r0 lv_obj_t * child = lv_obj_get_child(obj, NULL); 3a3e: 2100 movs r1, #0 3a40: 4b0d ldr r3, [pc, #52] ; (3a78 ) 3a42: 4798 blx r3 while(child != NULL) { 3a44: b1b0 cbz r0, 3a74 3a46: 4604 mov r4, r0 lv_obj_invalidate(child); 3a48: 4d0c ldr r5, [pc, #48] ; (3a7c ) child->signal_cb(child, LV_SIGNAL_STYLE_CHG, NULL); 3a4a: f04f 0800 mov.w r8, #0 child = lv_obj_get_child(obj, child); 3a4e: 4f0a ldr r7, [pc, #40] ; (3a78 ) lv_obj_invalidate(child); 3a50: 4620 mov r0, r4 3a52: 47a8 blx r5 child->signal_cb(child, LV_SIGNAL_STYLE_CHG, NULL); 3a54: 69e3 ldr r3, [r4, #28] 3a56: 4642 mov r2, r8 3a58: 2104 movs r1, #4 3a5a: 4620 mov r0, r4 3a5c: 4798 blx r3 lv_obj_invalidate(child); 3a5e: 4620 mov r0, r4 3a60: 47a8 blx r5 refresh_children_style(child); /*Check children too*/ 3a62: 4620 mov r0, r4 3a64: f7ff ffe8 bl 3a38 child = lv_obj_get_child(obj, child); 3a68: 4621 mov r1, r4 3a6a: 4630 mov r0, r6 3a6c: 47b8 blx r7 while(child != NULL) { 3a6e: 4604 mov r4, r0 3a70: 2800 cmp r0, #0 3a72: d1ed bne.n 3a50 3a74: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 3a78: 00002dc9 .word 0x00002dc9 3a7c: 00003309 .word 0x00003309 00003a80 : { 3a80: b530 push {r4, r5, lr} 3a82: b083 sub sp, #12 3a84: 4605 mov r5, r0 3a86: 460c mov r4, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3a88: 4b36 ldr r3, [pc, #216] ; (3b64 ) 3a8a: 4798 blx r3 3a8c: b198 cbz r0, 3ab6 switch(prop) { 3a8e: 2c71 cmp r4, #113 ; 0x71 3a90: d846 bhi.n 3b20 3a92: 2c70 cmp r4, #112 ; 0x70 3a94: d223 bcs.n 3ade 3a96: 2c41 cmp r4, #65 ; 0x41 3a98: d81b bhi.n 3ad2 3a9a: 2c40 cmp r4, #64 ; 0x40 3a9c: d21f bcs.n 3ade 3a9e: 2c02 cmp r4, #2 3aa0: d305 bcc.n 3aae 3aa2: 2c07 cmp r4, #7 3aa4: d91b bls.n 3ade 3aa6: f1a4 0310 sub.w r3, r4, #16 3aaa: 2b08 cmp r3, #8 3aac: d917 bls.n 3ade lv_obj_invalidate(obj); 3aae: 4628 mov r0, r5 3ab0: 4b2d ldr r3, [pc, #180] ; (3b68 ) 3ab2: 4798 blx r3 } 3ab4: e02f b.n 3b16 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3ab6: 4b2d ldr r3, [pc, #180] ; (3b6c ) 3ab8: 9300 str r3, [sp, #0] 3aba: f240 521d movw r2, #1309 ; 0x51d 3abe: 492c ldr r1, [pc, #176] ; (3b70 ) 3ac0: 2003 movs r0, #3 3ac2: 4c2c ldr r4, [pc, #176] ; (3b74 ) 3ac4: 47a0 blx r4 3ac6: 462a mov r2, r5 3ac8: 2300 movs r3, #0 3aca: 482b ldr r0, [pc, #172] ; (3b78 ) 3acc: 492b ldr r1, [pc, #172] ; (3b7c ) 3ace: 4788 blx r1 3ad0: e7fe b.n 3ad0 switch(prop) { 3ad2: 2c53 cmp r4, #83 ; 0x53 3ad4: d821 bhi.n 3b1a 3ad6: 2c50 cmp r4, #80 ; 0x50 3ad8: d201 bcs.n 3ade 3ada: 2c4c cmp r4, #76 ; 0x4c 3adc: d1e7 bne.n 3aae lv_obj_invalidate(obj); 3ade: 4628 mov r0, r5 3ae0: 4b21 ldr r3, [pc, #132] ; (3b68 ) 3ae2: 4798 blx r3 obj->signal_cb(obj, LV_SIGNAL_STYLE_CHG, NULL); 3ae4: 69eb ldr r3, [r5, #28] 3ae6: 2200 movs r2, #0 3ae8: 2104 movs r1, #4 3aea: 4628 mov r0, r5 3aec: 4798 blx r3 switch(prop) { 3aee: 2c15 cmp r4, #21 3af0: d309 bcc.n 3b06 3af2: 2c18 cmp r4, #24 3af4: d901 bls.n 3afa 3af6: 2cff cmp r4, #255 ; 0xff 3af8: d105 bne.n 3b06 if(obj->parent) obj->parent->signal_cb(obj->parent, LV_SIGNAL_CHILD_CHG, NULL); 3afa: 6828 ldr r0, [r5, #0] 3afc: b118 cbz r0, 3b06 3afe: 69c3 ldr r3, [r0, #28] 3b00: 2200 movs r2, #0 3b02: 2101 movs r1, #1 3b04: 4798 blx r3 lv_obj_invalidate(obj); 3b06: 4628 mov r0, r5 3b08: 4b17 ldr r3, [pc, #92] ; (3b68 ) 3b0a: 4798 blx r3 if(prop == LV_STYLE_PROP_ALL || (prop & LV_STYLE_INHERIT_MASK)) refresh_children_style(obj); 3b0c: 2cff cmp r4, #255 ; 0xff 3b0e: d024 beq.n 3b5a 3b10: f414 4f00 tst.w r4, #32768 ; 0x8000 3b14: d121 bne.n 3b5a } 3b16: b003 add sp, #12 3b18: bd30 pop {r4, r5, pc} switch(prop) { 3b1a: 2c5c cmp r4, #92 ; 0x5c 3b1c: d1c7 bne.n 3aae 3b1e: e7de b.n 3ade 3b20: 2c7f cmp r4, #127 ; 0x7f 3b22: d90c bls.n 3b3e 3b24: f248 0381 movw r3, #32897 ; 0x8081 3b28: 429c cmp r4, r3 3b2a: d811 bhi.n 3b50 3b2c: f248 0380 movw r3, #32896 ; 0x8080 3b30: 429c cmp r4, r3 3b32: d2d4 bcs.n 3ade 3b34: 2c90 cmp r4, #144 ; 0x90 3b36: d0d2 beq.n 3ade 3b38: 2cff cmp r4, #255 ; 0xff 3b3a: d1b8 bne.n 3aae 3b3c: e7cf b.n 3ade 3b3e: 2c7e cmp r4, #126 ; 0x7e 3b40: d2cd bcs.n 3ade 3b42: 2c73 cmp r4, #115 ; 0x73 3b44: d3b3 bcc.n 3aae 3b46: 2c75 cmp r4, #117 ; 0x75 3b48: d9c9 bls.n 3ade 3b4a: 2c7c cmp r4, #124 ; 0x7c 3b4c: d1af bne.n 3aae 3b4e: e7c6 b.n 3ade 3b50: f248 038e movw r3, #32910 ; 0x808e 3b54: 429c cmp r4, r3 3b56: d1aa bne.n 3aae 3b58: e7c1 b.n 3ade if(prop == LV_STYLE_PROP_ALL || (prop & LV_STYLE_INHERIT_MASK)) refresh_children_style(obj); 3b5a: 4628 mov r0, r5 3b5c: 4b08 ldr r3, [pc, #32] ; (3b80 ) 3b5e: 4798 blx r3 3b60: e7d9 b.n 3b16 3b62: bf00 nop 3b64: 00002299 .word 0x00002299 3b68: 00003309 .word 0x00003309 3b6c: 000244f0 .word 0x000244f0 3b70: 000247c4 .word 0x000247c4 3b74: 00012245 .word 0x00012245 3b78: 00024824 .word 0x00024824 3b7c: 000022a1 .word 0x000022a1 3b80: 00003a39 .word 0x00003a39 00003b84 : { 3b84: b510 push {r4, lr} 3b86: 4604 mov r4, r0 lv_obj_clean_style_list(obj, part); 3b88: 4b03 ldr r3, [pc, #12] ; (3b98 ) 3b8a: 4798 blx r3 lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 3b8c: 21ff movs r1, #255 ; 0xff 3b8e: 4620 mov r0, r4 3b90: 4b02 ldr r3, [pc, #8] ; (3b9c ) 3b92: 4798 blx r3 3b94: bd10 pop {r4, pc} 3b96: bf00 nop 3b98: 000030b5 .word 0x000030b5 3b9c: 00003a81 .word 0x00003a81 00003ba0 : { 3ba0: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 3ba4: 4604 mov r4, r0 3ba6: 460f mov r7, r1 3ba8: 2600 movs r6, #0 lv_style_list_t * dsc = lv_obj_get_style_list(obj, part_sub); 3baa: f8df 8088 ldr.w r8, [pc, #136] ; 3c34 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; 3bae: 4635 mov r5, r6 lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 3bb0: f8df 9084 ldr.w r9, [pc, #132] ; 3c38 3bb4: e005 b.n 3bc2 3bb6: 21ff movs r1, #255 ; 0xff 3bb8: 4638 mov r0, r7 3bba: 47c8 blx r9 3bbc: 3601 adds r6, #1 for(part_sub = 0; part_sub != _LV_OBJ_PART_REAL_LAST; part_sub++) { 3bbe: 2e40 cmp r6, #64 ; 0x40 3bc0: d022 beq.n 3c08 lv_style_list_t * dsc = lv_obj_get_style_list(obj, part_sub); 3bc2: b2f1 uxtb r1, r6 3bc4: 4638 mov r0, r7 3bc6: 47c0 blx r8 if(dsc == NULL) break; 3bc8: 4686 mov lr, r0 3bca: b1e8 cbz r0, 3c08 for(ci = 0; ci < dsc->style_cnt; ci++) { 3bcc: 7901 ldrb r1, [r0, #4] 3bce: 2900 cmp r1, #0 3bd0: d0f4 beq.n 3bbc if(list->has_trans && list->skip_trans) id++; 3bd2: f890 c005 ldrb.w ip, [r0, #5] 3bd6: f00c 0c06 and.w ip, ip, #6 3bda: 2300 movs r3, #0 3bdc: b2da uxtb r2, r3 3bde: f1bc 0f06 cmp.w ip, #6 3be2: bf04 itt eq 3be4: 3201 addeq r2, #1 3be6: b2d2 uxtbeq r2, r2 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 3be8: 428a cmp r2, r1 return list->style_list[id]; 3bea: bf3a itte cc 3bec: f8de 0000 ldrcc.w r0, [lr] 3bf0: f850 2022 ldrcc.w r2, [r0, r2, lsl #2] if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 3bf4: 462a movcs r2, r5 if(class == style || style == NULL) { 3bf6: 4294 cmp r4, r2 3bf8: d0dd beq.n 3bb6 3bfa: 2c00 cmp r4, #0 3bfc: d0db beq.n 3bb6 3bfe: 3301 adds r3, #1 for(ci = 0; ci < dsc->style_cnt; ci++) { 3c00: b2da uxtb r2, r3 3c02: 428a cmp r2, r1 3c04: d3ea bcc.n 3bdc 3c06: e7d9 b.n 3bbc lv_obj_t * child = lv_obj_get_child(obj, NULL); 3c08: 2100 movs r1, #0 3c0a: 4638 mov r0, r7 3c0c: 4b08 ldr r3, [pc, #32] ; (3c30 ) 3c0e: 4798 blx r3 while(child) { 3c10: 4605 mov r5, r0 3c12: b150 cbz r0, 3c2a child = lv_obj_get_child(obj, child); 3c14: 4e06 ldr r6, [pc, #24] ; (3c30 ) report_style_mod_core(style, child); 3c16: 4629 mov r1, r5 3c18: 4620 mov r0, r4 3c1a: f7ff ffc1 bl 3ba0 child = lv_obj_get_child(obj, child); 3c1e: 4629 mov r1, r5 3c20: 4638 mov r0, r7 3c22: 47b0 blx r6 while(child) { 3c24: 4605 mov r5, r0 3c26: 2800 cmp r0, #0 3c28: d1f5 bne.n 3c16 3c2a: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 3c2e: bf00 nop 3c30: 00002dc9 .word 0x00002dc9 3c34: 00002fe5 .word 0x00002fe5 3c38: 00003a81 .word 0x00003a81 00003c3c : { 3c3c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 3c40: 4680 mov r8, r0 lv_disp_t * d = lv_disp_get_next(NULL); 3c42: 2000 movs r0, #0 3c44: 4b0f ldr r3, [pc, #60] ; (3c84 ) 3c46: 4798 blx r3 while(d) { 3c48: b1c8 cbz r0, 3c7e 3c4a: 4681 mov r9, r0 _LV_LL_READ(d->scr_ll, i) { 3c4c: f8df a040 ldr.w sl, [pc, #64] ; 3c90 report_style_mod_core(style, i); 3c50: 4f0d ldr r7, [pc, #52] ; (3c88 ) _LV_LL_READ(d->scr_ll, i) { 3c52: 4e0e ldr r6, [pc, #56] ; (3c8c ) 3c54: f109 0530 add.w r5, r9, #48 ; 0x30 3c58: 4628 mov r0, r5 3c5a: 47d0 blx sl 3c5c: 4604 mov r4, r0 3c5e: b140 cbz r0, 3c72 report_style_mod_core(style, i); 3c60: 4621 mov r1, r4 3c62: 4640 mov r0, r8 3c64: 47b8 blx r7 _LV_LL_READ(d->scr_ll, i) { 3c66: 4621 mov r1, r4 3c68: 4628 mov r0, r5 3c6a: 47b0 blx r6 3c6c: 4604 mov r4, r0 3c6e: 2800 cmp r0, #0 3c70: d1f6 bne.n 3c60 d = lv_disp_get_next(d); 3c72: 4648 mov r0, r9 3c74: 4b03 ldr r3, [pc, #12] ; (3c84 ) 3c76: 4798 blx r3 while(d) { 3c78: 4681 mov r9, r0 3c7a: 2800 cmp r0, #0 3c7c: d1ea bne.n 3c54 3c7e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 3c82: bf00 nop 3c84: 00010fa1 .word 0x00010fa1 3c88: 00003ba1 .word 0x00003ba1 3c8c: 00011fa5 .word 0x00011fa5 3c90: 00011f91 .word 0x00011f91 00003c94 : { 3c94: b5f8 push {r3, r4, r5, r6, r7, lr} 3c96: 4604 mov r4, r0 3c98: 460d mov r5, r1 lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part); 3c9a: 7981 ldrb r1, [r0, #6] 3c9c: 6800 ldr r0, [r0, #0] 3c9e: 4b42 ldr r3, [pc, #264] ; (3da8 ) 3ca0: 4798 blx r3 lv_style_t * style = _lv_style_list_get_transition_style(list); 3ca2: 4b42 ldr r3, [pc, #264] ; (3dac ) 3ca4: 4798 blx r3 if((tr->prop & 0xF) < LV_STYLE_ID_COLOR) { /*Value*/ 3ca6: 88a1 ldrh r1, [r4, #4] 3ca8: f001 030f and.w r3, r1, #15 3cac: 2b08 cmp r3, #8 3cae: dc19 bgt.n 3ce4 if(v == 0) x = tr->start_value._int; 3cb0: b945 cbnz r5, 3cc4 3cb2: f9b4 2008 ldrsh.w r2, [r4, #8] _lv_style_set_int(style, tr->prop, x); 3cb6: 4b3e ldr r3, [pc, #248] ; (3db0 ) 3cb8: 4798 blx r3 lv_obj_refresh_style(tr->obj, tr->prop); 3cba: 88a1 ldrh r1, [r4, #4] 3cbc: 6820 ldr r0, [r4, #0] 3cbe: 4b3d ldr r3, [pc, #244] ; (3db4 ) 3cc0: 4798 blx r3 3cc2: bdf8 pop {r3, r4, r5, r6, r7, pc} else if(v == 255) x = tr->end_value._int; 3cc4: 2dff cmp r5, #255 ; 0xff 3cc6: d00a beq.n 3cde else x = tr->start_value._int + ((int32_t)((int32_t)(tr->end_value._int - tr->start_value._int) * v) >> 8); 3cc8: f9b4 2008 ldrsh.w r2, [r4, #8] 3ccc: f9b4 300c ldrsh.w r3, [r4, #12] 3cd0: 1a9b subs r3, r3, r2 3cd2: fb05 f503 mul.w r5, r5, r3 3cd6: eb02 2225 add.w r2, r2, r5, asr #8 3cda: b212 sxth r2, r2 3cdc: e7eb b.n 3cb6 else if(v == 255) x = tr->end_value._int; 3cde: f9b4 200c ldrsh.w r2, [r4, #12] 3ce2: e7e8 b.n 3cb6 else if((tr->prop & 0xF) < LV_STYLE_ID_OPA) { /*Color*/ 3ce4: 2b0b cmp r3, #11 3ce6: dc43 bgt.n 3d70 if(v <= 0) x = tr->start_value._color; 3ce8: 2d00 cmp r5, #0 3cea: dd05 ble.n 3cf8 else if(v >= 255) x = tr->end_value._color; 3cec: 2dfe cmp r5, #254 ; 0xfe 3cee: dd05 ble.n 3cfc 3cf0: 89a2 ldrh r2, [r4, #12] _lv_style_set_color(style, tr->prop, x); 3cf2: 4b31 ldr r3, [pc, #196] ; (3db8 ) 3cf4: 4798 blx r3 3cf6: e7e0 b.n 3cba if(v <= 0) x = tr->start_value._color; 3cf8: 8922 ldrh r2, [r4, #8] 3cfa: e7fa b.n 3cf2 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))); 3cfc: b2ed uxtb r5, r5 3cfe: f1c5 02ff rsb r2, r5, #255 ; 0xff 3d02: 7b63 ldrb r3, [r4, #13] 3d04: 08db lsrs r3, r3, #3 3d06: 7a66 ldrb r6, [r4, #9] 3d08: 08f6 lsrs r6, r6, #3 3d0a: fb02 f606 mul.w r6, r2, r6 3d0e: fb05 6303 mla r3, r5, r3, r6 3d12: eb03 2703 add.w r7, r3, r3, lsl #8 3d16: eb03 13c7 add.w r3, r3, r7, lsl #7 3d1a: 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))); 3d1e: 89a3 ldrh r3, [r4, #12] 3d20: f3c3 1345 ubfx r3, r3, #5, #6 3d24: 8926 ldrh r6, [r4, #8] 3d26: f3c6 1645 ubfx r6, r6, #5, #6 3d2a: fb02 f606 mul.w r6, r2, r6 3d2e: fb05 6303 mla r3, r5, r3, r6 3d32: eb03 2603 add.w r6, r3, r3, lsl #8 3d36: eb03 13c6 add.w r3, r3, r6, lsl #7 3d3a: 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))); 3d3e: 7b23 ldrb r3, [r4, #12] 3d40: f003 031f and.w r3, r3, #31 3d44: f894 e008 ldrb.w lr, [r4, #8] 3d48: f00e 0e1f and.w lr, lr, #31 3d4c: fb02 f20e mul.w r2, r2, lr 3d50: fb05 2503 mla r5, r5, r3, r2 3d54: eb05 2305 add.w r3, r5, r5, lsl #8 3d58: eb05 15c3 add.w r5, r5, r3, lsl #7 3d5c: 0ded lsrs r5, r5, #23 3d5e: f04f 0200 mov.w r2, #0 3d62: f365 0204 bfi r2, r5, #0, #5 3d66: f366 124a bfi r2, r6, #5, #6 3d6a: f367 22cf bfi r2, r7, #11, #5 3d6e: e7c0 b.n 3cf2 else if((tr->prop & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/ 3d70: 2b0d cmp r3, #13 3d72: dc12 bgt.n 3d9a if(v <= 0) x = tr->start_value._opa; 3d74: 2d00 cmp r5, #0 3d76: dd05 ble.n 3d84 else if(v >= 255) x = tr->end_value._opa; 3d78: 2dfe cmp r5, #254 ; 0xfe 3d7a: dd05 ble.n 3d88 3d7c: 7b22 ldrb r2, [r4, #12] _lv_style_set_opa(style, tr->prop, x); 3d7e: 4b0f ldr r3, [pc, #60] ; (3dbc ) 3d80: 4798 blx r3 3d82: e79a b.n 3cba if(v <= 0) x = tr->start_value._opa; 3d84: 7a22 ldrb r2, [r4, #8] 3d86: e7fa b.n 3d7e else x = tr->start_value._opa + (((tr->end_value._opa - tr->start_value._opa) * v) >> 8); 3d88: 7a22 ldrb r2, [r4, #8] 3d8a: 7b23 ldrb r3, [r4, #12] 3d8c: 1a9b subs r3, r3, r2 3d8e: fb05 f503 mul.w r5, r5, r3 3d92: eb02 2225 add.w r2, r2, r5, asr #8 3d96: b2d2 uxtb r2, r2 3d98: e7f1 b.n 3d7e if(v < 128) x = tr->start_value._ptr; 3d9a: 2d7f cmp r5, #127 ; 0x7f 3d9c: bfd4 ite le 3d9e: 68a2 ldrle r2, [r4, #8] else x = tr->end_value._ptr; 3da0: 68e2 ldrgt r2, [r4, #12] _lv_style_set_ptr(style, tr->prop, x); 3da2: 4b07 ldr r3, [pc, #28] ; (3dc0 ) 3da4: 4798 blx r3 3da6: e788 b.n 3cba 3da8: 00002fe5 .word 0x00002fe5 3dac: 000070cf .word 0x000070cf 3db0: 000068c9 .word 0x000068c9 3db4: 00003a81 .word 0x00003a81 3db8: 00006a0d .word 0x00006a0d 3dbc: 00006b51 .word 0x00006b51 3dc0: 00006c81 .word 0x00006c81 00003dc4 : { 3dc4: b530 push {r4, r5, lr} 3dc6: b083 sub sp, #12 3dc8: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3dca: 4b0a ldr r3, [pc, #40] ; (3df4 ) 3dcc: 4798 blx r3 3dce: b110 cbz r0, 3dd6 } 3dd0: 2000 movs r0, #0 3dd2: b003 add sp, #12 3dd4: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3dd6: 4b08 ldr r3, [pc, #32] ; (3df8 ) 3dd8: 9300 str r3, [sp, #0] 3dda: f640 22b1 movw r2, #2737 ; 0xab1 3dde: 4907 ldr r1, [pc, #28] ; (3dfc ) 3de0: 2003 movs r0, #3 3de2: 4d07 ldr r5, [pc, #28] ; (3e00 ) 3de4: 47a8 blx r5 3de6: 4622 mov r2, r4 3de8: 2300 movs r3, #0 3dea: 4806 ldr r0, [pc, #24] ; (3e04 ) 3dec: 4906 ldr r1, [pc, #24] ; (3e08 ) 3dee: 4788 blx r1 3df0: e7fe b.n 3df0 3df2: bf00 nop 3df4: 00002299 .word 0x00002299 3df8: 000245c0 .word 0x000245c0 3dfc: 000247c4 .word 0x000247c4 3e00: 00012245 .word 0x00012245 3e04: 00024824 .word 0x00024824 3e08: 000022a1 .word 0x000022a1 00003e0c : { 3e0c: b5f0 push {r4, r5, r6, r7, lr} 3e0e: b083 sub sp, #12 3e10: 460d mov r5, r1 if(parent == NULL) { 3e12: 4606 mov r6, r0 3e14: b188 cbz r0, 3e3a LV_ASSERT_OBJ(parent, LV_OBJX_NAME); 3e16: 4b9d ldr r3, [pc, #628] ; (408c ) 3e18: 4798 blx r3 3e1a: 2800 cmp r0, #0 3e1c: f040 8164 bne.w 40e8 3e20: 4b9b ldr r3, [pc, #620] ; (4090 ) 3e22: 9300 str r3, [sp, #0] 3e24: 22ed movs r2, #237 ; 0xed 3e26: 499b ldr r1, [pc, #620] ; (4094 ) 3e28: 2003 movs r0, #3 3e2a: 4c9b ldr r4, [pc, #620] ; (4098 ) 3e2c: 47a0 blx r4 3e2e: 4632 mov r2, r6 3e30: 2300 movs r3, #0 3e32: 489a ldr r0, [pc, #616] ; (409c ) 3e34: 499a ldr r1, [pc, #616] ; (40a0 ) 3e36: 4788 blx r1 3e38: e7fe b.n 3e38 lv_disp_t * disp = lv_disp_get_default(); 3e3a: 4b9a ldr r3, [pc, #616] ; (40a4 ) 3e3c: 4798 blx r3 if(!disp) { 3e3e: b948 cbnz r0, 3e54 LV_LOG_WARN("lv_obj_create: not display created to so far. No place to assign the new screen"); 3e40: 4b99 ldr r3, [pc, #612] ; (40a8 ) 3e42: 9300 str r3, [sp, #0] 3e44: 4b92 ldr r3, [pc, #584] ; (4090 ) 3e46: 22cf movs r2, #207 ; 0xcf 3e48: 4992 ldr r1, [pc, #584] ; (4094 ) 3e4a: 2002 movs r0, #2 3e4c: 4c92 ldr r4, [pc, #584] ; (4098 ) 3e4e: 47a0 blx r4 return NULL; 3e50: 4634 mov r4, r6 3e52: e1f5 b.n 4240 new_obj = _lv_ll_ins_head(&disp->scr_ll); 3e54: 3030 adds r0, #48 ; 0x30 3e56: 4b95 ldr r3, [pc, #596] ; (40ac ) 3e58: 4798 blx r3 3e5a: 4604 mov r4, r0 LV_ASSERT_MEM(new_obj); 3e5c: 4b8b ldr r3, [pc, #556] ; (408c ) 3e5e: 4798 blx r3 3e60: b960 cbnz r0, 3e7c 3e62: 4b8b ldr r3, [pc, #556] ; (4090 ) 3e64: 9300 str r3, [sp, #0] 3e66: 22d4 movs r2, #212 ; 0xd4 3e68: 498a ldr r1, [pc, #552] ; (4094 ) 3e6a: 2003 movs r0, #3 3e6c: 4d8a ldr r5, [pc, #552] ; (4098 ) 3e6e: 47a8 blx r5 3e70: 4622 mov r2, r4 3e72: 2300 movs r3, #0 3e74: 488e ldr r0, [pc, #568] ; (40b0 ) 3e76: 498a ldr r1, [pc, #552] ; (40a0 ) 3e78: 4788 blx r1 3e7a: e7fe b.n 3e7a if(new_obj == NULL) return NULL; 3e7c: 2c00 cmp r4, #0 3e7e: f000 81df beq.w 4240 _lv_memset_00(new_obj, sizeof(lv_obj_t)); 3e82: 214c movs r1, #76 ; 0x4c 3e84: 4620 mov r0, r4 3e86: 4b8b ldr r3, [pc, #556] ; (40b4 ) 3e88: 4798 blx r3 new_obj->base_dir = LV_BIDI_DIR_LTR; 3e8a: f894 3035 ldrb.w r3, [r4, #53] ; 0x35 3e8e: f36f 1305 bfc r3, #4, #2 3e92: f884 3035 strb.w r3, [r4, #53] ; 0x35 new_obj->signal_cb = lv_obj_signal; 3e96: 4b88 ldr r3, [pc, #544] ; (40b8 ) 3e98: 61e3 str r3, [r4, #28] new_obj->design_cb = lv_obj_design; 3e9a: 4b88 ldr r3, [pc, #544] ; (40bc ) 3e9c: 6223 str r3, [r4, #32] new_obj->event_cb = NULL; 3e9e: 2700 movs r7, #0 3ea0: 61a7 str r7, [r4, #24] new_obj->coords.x1 = 0; 3ea2: 8227 strh r7, [r4, #16] new_obj->coords.y1 = 0; 3ea4: 8267 strh r7, [r4, #18] new_obj->coords.x2 = lv_disp_get_hor_res(NULL) - 1; 3ea6: 4638 mov r0, r7 3ea8: 4b85 ldr r3, [pc, #532] ; (40c0 ) 3eaa: 4798 blx r3 3eac: 3801 subs r0, #1 3eae: 82a0 strh r0, [r4, #20] new_obj->coords.y2 = lv_disp_get_ver_res(NULL) - 1; 3eb0: 4638 mov r0, r7 3eb2: 4b84 ldr r3, [pc, #528] ; (40c4 ) 3eb4: 4798 blx r3 3eb6: 3801 subs r0, #1 3eb8: 82e0 strh r0, [r4, #22] _lv_ll_init(&(new_obj->child_ll), sizeof(lv_obj_t)); 3eba: 214c movs r1, #76 ; 0x4c 3ebc: 1d20 adds r0, r4, #4 3ebe: 4b82 ldr r3, [pc, #520] ; (40c8 ) 3ec0: 4798 blx r3 new_obj->ext_draw_pad = 0; 3ec2: 2300 movs r3, #0 3ec4: 8663 strh r3, [r4, #50] ; 0x32 new_obj->ext_click_pad_hor = 0; 3ec6: f884 3030 strb.w r3, [r4, #48] ; 0x30 new_obj->ext_click_pad_ver = 0; 3eca: f884 3031 strb.w r3, [r4, #49] ; 0x31 new_obj->realign.align = LV_ALIGN_CENTER; 3ece: f884 3048 strb.w r3, [r4, #72] ; 0x48 new_obj->realign.xofs = 0; 3ed2: f8a4 3044 strh.w r3, [r4, #68] ; 0x44 new_obj->realign.yofs = 0; 3ed6: f8a4 3046 strh.w r3, [r4, #70] ; 0x46 new_obj->realign.base = NULL; 3eda: 6423 str r3, [r4, #64] ; 0x40 new_obj->realign.auto_realign = 0; 3edc: f894 2049 ldrb.w r2, [r4, #73] ; 0x49 3ee0: f363 0200 bfi r2, r3, #0, #1 3ee4: f884 2049 strb.w r2, [r4, #73] ; 0x49 new_obj->group_p = NULL; 3ee8: 63a3 str r3, [r4, #56] ; 0x38 new_obj->adv_hittest = 0; 3eea: f894 2034 ldrb.w r2, [r4, #52] ; 0x34 new_obj->click = 1; 3eee: f002 027f and.w r2, r2, #127 ; 0x7f new_obj->drag = 0; 3ef2: f042 0201 orr.w r2, r2, #1 new_obj->drag_dir = LV_DRAG_DIR_BOTH; 3ef6: f894 1035 ldrb.w r1, [r4, #53] ; 0x35 3efa: 2003 movs r0, #3 3efc: f360 0143 bfi r1, r0, #1, #3 new_obj->protect = LV_PROTECT_NONE; 3f00: f884 303c strb.w r3, [r4, #60] ; 0x3c new_obj->parent_event = 0; 3f04: f002 02c1 and.w r2, r2, #193 ; 0xc1 3f08: f363 1286 bfi r2, r3, #6, #1 3f0c: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->gesture_parent = 1; 3f10: f041 0101 orr.w r1, r1, #1 3f14: f884 1035 strb.w r1, [r4, #53] ; 0x35 new_obj->state = LV_STATE_DEFAULT; 3f18: f884 303d strb.w r3, [r4, #61] ; 0x3d new_obj->ext_attr = NULL; 3f1c: 6263 str r3, [r4, #36] ; 0x24 lv_style_list_init(&new_obj->style_list); 3f1e: f104 0728 add.w r7, r4, #40 ; 0x28 3f22: 4638 mov r0, r7 3f24: 4b69 ldr r3, [pc, #420] ; (40cc ) 3f26: 4798 blx r3 if(copy == NULL) { 3f28: 2d00 cmp r5, #0 3f2a: f000 816c beq.w 4206 lv_style_list_copy(&new_obj->style_list, ©->style_list); 3f2e: f105 0128 add.w r1, r5, #40 ; 0x28 3f32: 4638 mov r0, r7 3f34: 4b66 ldr r3, [pc, #408] ; (40d0 ) 3f36: 4798 blx r3 3f38: f105 020f add.w r2, r5, #15 3f3c: f104 0118 add.w r1, r4, #24 uint8_t * d8 = (uint8_t *)dst; 3f40: f104 0310 add.w r3, r4, #16 *d8 = *s8; 3f44: f812 0f01 ldrb.w r0, [r2, #1]! 3f48: f803 0b01 strb.w r0, [r3], #1 while(len) { 3f4c: 428b cmp r3, r1 3f4e: d1f9 bne.n 3f44 new_obj->ext_draw_pad = copy->ext_draw_pad; 3f50: f9b5 3032 ldrsh.w r3, [r5, #50] ; 0x32 3f54: 8663 strh r3, [r4, #50] ; 0x32 new_obj->ext_click_pad_hor = copy->ext_click_pad_hor; 3f56: f895 3030 ldrb.w r3, [r5, #48] ; 0x30 3f5a: f884 3030 strb.w r3, [r4, #48] ; 0x30 new_obj->ext_click_pad_ver = copy->ext_click_pad_ver; 3f5e: f895 3031 ldrb.w r3, [r5, #49] ; 0x31 3f62: f884 3031 strb.w r3, [r4, #49] ; 0x31 new_obj->realign.align = copy->realign.align; 3f66: f895 3048 ldrb.w r3, [r5, #72] ; 0x48 3f6a: f884 3048 strb.w r3, [r4, #72] ; 0x48 new_obj->realign.xofs = copy->realign.xofs; 3f6e: f9b5 3044 ldrsh.w r3, [r5, #68] ; 0x44 3f72: f8a4 3044 strh.w r3, [r4, #68] ; 0x44 new_obj->realign.yofs = copy->realign.yofs; 3f76: f9b5 3046 ldrsh.w r3, [r5, #70] ; 0x46 3f7a: f8a4 3046 strh.w r3, [r4, #70] ; 0x46 new_obj->realign.base = copy->realign.base; 3f7e: 6c2b ldr r3, [r5, #64] ; 0x40 3f80: 6423 str r3, [r4, #64] ; 0x40 new_obj->realign.auto_realign = copy->realign.auto_realign; 3f82: f895 2049 ldrb.w r2, [r5, #73] ; 0x49 3f86: f894 3049 ldrb.w r3, [r4, #73] ; 0x49 3f8a: f362 0300 bfi r3, r2, #0, #1 3f8e: f884 3049 strb.w r3, [r4, #73] ; 0x49 new_obj->event_cb = copy->event_cb; 3f92: 69ab ldr r3, [r5, #24] 3f94: 61a3 str r3, [r4, #24] new_obj->adv_hittest = copy->adv_hittest; 3f96: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 3f9a: 09db lsrs r3, r3, #7 3f9c: f894 2034 ldrb.w r2, [r4, #52] ; 0x34 3fa0: f363 12c7 bfi r2, r3, #7, #1 3fa4: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->click = copy->click; 3fa8: f895 2034 ldrb.w r2, [r5, #52] ; 0x34 3fac: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 3fb0: f362 0300 bfi r3, r2, #0, #1 3fb4: f884 3034 strb.w r3, [r4, #52] ; 0x34 new_obj->drag = copy->drag; 3fb8: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 3fbc: f3c3 0340 ubfx r3, r3, #1, #1 3fc0: f894 2034 ldrb.w r2, [r4, #52] ; 0x34 3fc4: f363 0241 bfi r2, r3, #1, #1 3fc8: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->drag_dir = copy->drag_dir; 3fcc: f895 3035 ldrb.w r3, [r5, #53] ; 0x35 3fd0: f3c3 0342 ubfx r3, r3, #1, #3 3fd4: f894 2035 ldrb.w r2, [r4, #53] ; 0x35 3fd8: f363 0243 bfi r2, r3, #1, #3 3fdc: f884 2035 strb.w r2, [r4, #53] ; 0x35 new_obj->drag_throw = copy->drag_throw; 3fe0: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 3fe4: f3c3 0380 ubfx r3, r3, #2, #1 3fe8: f894 2034 ldrb.w r2, [r4, #52] ; 0x34 3fec: f363 0282 bfi r2, r3, #2, #1 3ff0: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->drag_parent = copy->drag_parent; 3ff4: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 3ff8: f3c3 03c0 ubfx r3, r3, #3, #1 3ffc: b2d2 uxtb r2, r2 3ffe: f363 02c3 bfi r2, r3, #3, #1 4002: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->hidden = copy->hidden; 4006: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 400a: f3c3 1300 ubfx r3, r3, #4, #1 400e: b2d2 uxtb r2, r2 4010: f363 1204 bfi r2, r3, #4, #1 4014: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->top = copy->top; 4018: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 401c: f3c3 1340 ubfx r3, r3, #5, #1 4020: b2d2 uxtb r2, r2 4022: f363 1245 bfi r2, r3, #5, #1 4026: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->parent_event = copy->parent_event; 402a: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 402e: f3c3 1380 ubfx r3, r3, #6, #1 4032: b2d2 uxtb r2, r2 4034: f363 1286 bfi r2, r3, #6, #1 4038: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->protect = copy->protect; 403c: f895 303c ldrb.w r3, [r5, #60] ; 0x3c 4040: f884 303c strb.w r3, [r4, #60] ; 0x3c new_obj->gesture_parent = copy->gesture_parent; 4044: f895 2035 ldrb.w r2, [r5, #53] ; 0x35 4048: f894 3035 ldrb.w r3, [r4, #53] ; 0x35 404c: f362 0300 bfi r3, r2, #0, #1 4050: f884 3035 strb.w r3, [r4, #53] ; 0x35 if(copy->group_p != NULL) { 4054: 6ba8 ldr r0, [r5, #56] ; 0x38 4056: b110 cbz r0, 405e lv_group_add_obj(copy->group_p, new_obj); 4058: 4621 mov r1, r4 405a: 4b1e ldr r3, [pc, #120] ; (40d4 ) 405c: 4798 blx r3 if(lv_obj_get_parent(copy) != NULL && parent != NULL) { 405e: 4628 mov r0, r5 4060: 4b1d ldr r3, [pc, #116] ; (40d8 ) 4062: 4798 blx r3 4064: 2800 cmp r0, #0 4066: f000 80d9 beq.w 421c 406a: 2e00 cmp r6, #0 406c: f000 80df beq.w 422e lv_obj_set_pos(new_obj, lv_obj_get_x(copy), lv_obj_get_y(copy)); 4070: 4628 mov r0, r5 4072: 4b1a ldr r3, [pc, #104] ; (40dc ) 4074: 4798 blx r3 4076: 4607 mov r7, r0 4078: 4628 mov r0, r5 407a: 4b19 ldr r3, [pc, #100] ; (40e0 ) 407c: 4798 blx r3 407e: 4602 mov r2, r0 4080: 4639 mov r1, r7 4082: 4620 mov r0, r4 4084: 4b17 ldr r3, [pc, #92] ; (40e4 ) 4086: 4798 blx r3 4088: e0c9 b.n 421e 408a: bf00 nop 408c: 00002299 .word 0x00002299 4090: 000245d4 .word 0x000245d4 4094: 000247c4 .word 0x000247c4 4098: 00012245 .word 0x00012245 409c: 00024824 .word 0x00024824 40a0: 000022a1 .word 0x000022a1 40a4: 00010ec9 .word 0x00010ec9 40a8: 00024920 .word 0x00024920 40ac: 00011ef9 .word 0x00011ef9 40b0: 00023fc0 .word 0x00023fc0 40b4: 00012b1f .word 0x00012b1f 40b8: 000059ed .word 0x000059ed 40bc: 00005411 .word 0x00005411 40c0: 00010ed5 .word 0x00010ed5 40c4: 00010efd .word 0x00010efd 40c8: 00011ee1 .word 0x00011ee1 40cc: 000064d1 .word 0x000064d1 40d0: 00007151 .word 0x00007151 40d4: 00002585 .word 0x00002585 40d8: 00002c65 .word 0x00002c65 40dc: 00002e85 .word 0x00002e85 40e0: 00002ee5 .word 0x00002ee5 40e4: 00003425 .word 0x00003425 new_obj = _lv_ll_ins_head(&parent->child_ll); 40e8: 1d30 adds r0, r6, #4 40ea: 4b57 ldr r3, [pc, #348] ; (4248 ) 40ec: 4798 blx r3 40ee: 4604 mov r4, r0 LV_ASSERT_MEM(new_obj); 40f0: 4b56 ldr r3, [pc, #344] ; (424c ) 40f2: 4798 blx r3 40f4: 2800 cmp r0, #0 40f6: d047 beq.n 4188 if(new_obj == NULL) return NULL; 40f8: 2c00 cmp r4, #0 40fa: f000 80a1 beq.w 4240 _lv_memset_00(new_obj, sizeof(lv_obj_t)); 40fe: 214c movs r1, #76 ; 0x4c 4100: 4620 mov r0, r4 4102: 4b53 ldr r3, [pc, #332] ; (4250 ) 4104: 4798 blx r3 new_obj->parent = parent; 4106: 6026 str r6, [r4, #0] new_obj->base_dir = LV_BIDI_DIR_LTR; 4108: f894 3035 ldrb.w r3, [r4, #53] ; 0x35 410c: f36f 1305 bfc r3, #4, #2 4110: f884 3035 strb.w r3, [r4, #53] ; 0x35 new_obj->signal_cb = lv_obj_signal; 4114: 4b4f ldr r3, [pc, #316] ; (4254 ) 4116: 61e3 str r3, [r4, #28] new_obj->design_cb = lv_obj_design; 4118: 4b4f ldr r3, [pc, #316] ; (4258 ) 411a: 6223 str r3, [r4, #32] new_obj->event_cb = NULL; 411c: 2000 movs r0, #0 411e: 61a0 str r0, [r4, #24] new_obj->coords.y1 = parent->coords.y1; 4120: f9b6 3012 ldrsh.w r3, [r6, #18] 4124: 8263 strh r3, [r4, #18] new_obj->coords.y2 = parent->coords.y1 + LV_OBJ_DEF_HEIGHT; 4126: 8a77 ldrh r7, [r6, #18] 4128: 4b4c ldr r3, [pc, #304] ; (425c ) 412a: 4798 blx r3 412c: 2332 movs r3, #50 ; 0x32 412e: fb03 f300 mul.w r3, r3, r0 4132: 3350 adds r3, #80 ; 0x50 4134: f5b3 7fa0 cmp.w r3, #320 ; 0x140 4138: da33 bge.n 41a2 413a: 2301 movs r3, #1 413c: 443b add r3, r7 413e: 82e3 strh r3, [r4, #22] if(lv_obj_get_base_dir(new_obj) == LV_BIDI_DIR_RTL) { 4140: 4620 mov r0, r4 4142: 4b47 ldr r3, [pc, #284] ; (4260 ) 4144: 4798 blx r3 4146: 2801 cmp r0, #1 4148: d03a beq.n 41c0 new_obj->coords.x1 = parent->coords.x1; 414a: f9b6 3010 ldrsh.w r3, [r6, #16] 414e: 8223 strh r3, [r4, #16] new_obj->coords.x2 = parent->coords.x1 + LV_OBJ_DEF_WIDTH; 4150: 8a37 ldrh r7, [r6, #16] 4152: 2000 movs r0, #0 4154: 4b41 ldr r3, [pc, #260] ; (425c ) 4156: 4798 blx r3 4158: 2364 movs r3, #100 ; 0x64 415a: fb03 f300 mul.w r3, r3, r0 415e: 3350 adds r3, #80 ; 0x50 4160: f5b3 7fa0 cmp.w r3, #320 ; 0x140 4164: db4d blt.n 4202 4166: 2000 movs r0, #0 4168: 4b3c ldr r3, [pc, #240] ; (425c ) 416a: 4798 blx r3 416c: 2364 movs r3, #100 ; 0x64 416e: fb03 f300 mul.w r3, r3, r0 4172: 3350 adds r3, #80 ; 0x50 4174: 4a3b ldr r2, [pc, #236] ; (4264 ) 4176: fb82 1203 smull r1, r2, r2, r3 417a: 17db asrs r3, r3, #31 417c: ebc3 13a2 rsb r3, r3, r2, asr #6 4180: b29b uxth r3, r3 4182: 443b add r3, r7 4184: 82a3 strh r3, [r4, #20] 4186: e698 b.n 3eba LV_ASSERT_MEM(new_obj); 4188: 4b37 ldr r3, [pc, #220] ; (4268 ) 418a: 9300 str r3, [sp, #0] 418c: 22f0 movs r2, #240 ; 0xf0 418e: 4937 ldr r1, [pc, #220] ; (426c ) 4190: 2003 movs r0, #3 4192: 4d37 ldr r5, [pc, #220] ; (4270 ) 4194: 47a8 blx r5 4196: 4622 mov r2, r4 4198: 2300 movs r3, #0 419a: 4836 ldr r0, [pc, #216] ; (4274 ) 419c: 4936 ldr r1, [pc, #216] ; (4278 ) 419e: 4788 blx r1 41a0: e7fe b.n 41a0 new_obj->coords.y2 = parent->coords.y1 + LV_OBJ_DEF_HEIGHT; 41a2: 2000 movs r0, #0 41a4: 4b2d ldr r3, [pc, #180] ; (425c ) 41a6: 4798 blx r3 41a8: 2332 movs r3, #50 ; 0x32 41aa: fb03 f300 mul.w r3, r3, r0 41ae: 3350 adds r3, #80 ; 0x50 41b0: 4a2c ldr r2, [pc, #176] ; (4264 ) 41b2: fb82 1203 smull r1, r2, r2, r3 41b6: 17db asrs r3, r3, #31 41b8: ebc3 13a2 rsb r3, r3, r2, asr #6 41bc: b29b uxth r3, r3 41be: e7bd b.n 413c new_obj->coords.x2 = parent->coords.x2; 41c0: f9b6 3014 ldrsh.w r3, [r6, #20] 41c4: 82a3 strh r3, [r4, #20] new_obj->coords.x1 = parent->coords.x2 - LV_OBJ_DEF_WIDTH; 41c6: 8ab7 ldrh r7, [r6, #20] 41c8: 2000 movs r0, #0 41ca: 4b24 ldr r3, [pc, #144] ; (425c ) 41cc: 4798 blx r3 41ce: 2364 movs r3, #100 ; 0x64 41d0: fb03 f300 mul.w r3, r3, r0 41d4: 3350 adds r3, #80 ; 0x50 41d6: f5b3 7fa0 cmp.w r3, #320 ; 0x140 41da: db10 blt.n 41fe 41dc: 2000 movs r0, #0 41de: 4b1f ldr r3, [pc, #124] ; (425c ) 41e0: 4798 blx r3 41e2: 2364 movs r3, #100 ; 0x64 41e4: fb03 f300 mul.w r3, r3, r0 41e8: 3350 adds r3, #80 ; 0x50 41ea: 4a1e ldr r2, [pc, #120] ; (4264 ) 41ec: fb82 1203 smull r1, r2, r2, r3 41f0: 17db asrs r3, r3, #31 41f2: ebc3 13a2 rsb r3, r3, r2, asr #6 41f6: b29b uxth r3, r3 41f8: 1afb subs r3, r7, r3 41fa: 8223 strh r3, [r4, #16] 41fc: e65d b.n 3eba 41fe: 2301 movs r3, #1 4200: e7fa b.n 41f8 new_obj->coords.x2 = parent->coords.x1 + LV_OBJ_DEF_WIDTH; 4202: 2301 movs r3, #1 4204: e7bd b.n 4182 if(parent != NULL) lv_theme_apply(new_obj, LV_THEME_OBJ); 4206: b126 cbz r6, 4212 4208: 2102 movs r1, #2 420a: 4620 mov r0, r4 420c: 4b1b ldr r3, [pc, #108] ; (427c ) 420e: 4798 blx r3 4210: e005 b.n 421e else lv_theme_apply(new_obj, LV_THEME_SCR); 4212: 2101 movs r1, #1 4214: 4620 mov r0, r4 4216: 4b19 ldr r3, [pc, #100] ; (427c ) 4218: 4798 blx r3 421a: e008 b.n 422e if(parent != NULL) { 421c: b13e cbz r6, 422e parent->signal_cb(parent, LV_SIGNAL_CHILD_CHG, new_obj); 421e: 69f3 ldr r3, [r6, #28] 4220: 4622 mov r2, r4 4222: 2101 movs r1, #1 4224: 4630 mov r0, r6 4226: 4798 blx r3 lv_obj_invalidate(new_obj); 4228: 4620 mov r0, r4 422a: 4b15 ldr r3, [pc, #84] ; (4280 ) 422c: 4798 blx r3 LV_LOG_INFO("Object create ready"); 422e: 4b15 ldr r3, [pc, #84] ; (4284 ) 4230: 9300 str r3, [sp, #0] 4232: 4b0d ldr r3, [pc, #52] ; (4268 ) 4234: f240 1287 movw r2, #391 ; 0x187 4238: 490c ldr r1, [pc, #48] ; (426c ) 423a: 2001 movs r0, #1 423c: 4d0c ldr r5, [pc, #48] ; (4270 ) 423e: 47a8 blx r5 } 4240: 4620 mov r0, r4 4242: b003 add sp, #12 4244: bdf0 pop {r4, r5, r6, r7, pc} 4246: bf00 nop 4248: 00011ef9 .word 0x00011ef9 424c: 00002299 .word 0x00002299 4250: 00012b1f .word 0x00012b1f 4254: 000059ed .word 0x000059ed 4258: 00005411 .word 0x00005411 425c: 00010f25 .word 0x00010f25 4260: 00003dc5 .word 0x00003dc5 4264: 66666667 .word 0x66666667 4268: 000245d4 .word 0x000245d4 426c: 000247c4 .word 0x000247c4 4270: 00012245 .word 0x00012245 4274: 00023fc0 .word 0x00023fc0 4278: 000022a1 .word 0x000022a1 427c: 000141d1 .word 0x000141d1 4280: 00003309 .word 0x00003309 4284: 00024970 .word 0x00024970 00004288 : { 4288: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 428c: b084 sub sp, #16 428e: 4604 mov r4, r0 4290: 460d mov r5, r1 4292: 4616 mov r6, r2 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4294: 4b32 ldr r3, [pc, #200] ; (4360 ) 4296: 4798 blx r3 4298: b968 cbnz r0, 42b6 429a: 4b32 ldr r3, [pc, #200] ; (4364 ) 429c: 9300 str r3, [sp, #0] 429e: f240 22e5 movw r2, #741 ; 0x2e5 42a2: 4931 ldr r1, [pc, #196] ; (4368 ) 42a4: 2003 movs r0, #3 42a6: 4d31 ldr r5, [pc, #196] ; (436c ) 42a8: 47a8 blx r5 42aa: 4622 mov r2, r4 42ac: 2300 movs r3, #0 42ae: 4830 ldr r0, [pc, #192] ; (4370 ) 42b0: 4930 ldr r1, [pc, #192] ; (4374 ) 42b2: 4788 blx r1 42b4: e7fe b.n 42b4 if(lv_obj_get_width(obj) == w && lv_obj_get_height(obj) == h) { 42b6: 4620 mov r0, r4 42b8: 4b2f ldr r3, [pc, #188] ; (4378 ) 42ba: 4798 blx r3 42bc: 42a8 cmp r0, r5 42be: d03f beq.n 4340 lv_obj_invalidate(obj); 42c0: 4620 mov r0, r4 42c2: 4b2e ldr r3, [pc, #184] ; (437c ) 42c4: 4798 blx r3 lv_obj_get_coords(obj, &ori); 42c6: a902 add r1, sp, #8 42c8: 4620 mov r0, r4 42ca: 4b2d ldr r3, [pc, #180] ; (4380 ) 42cc: 4798 blx r3 obj->coords.y2 = obj->coords.y1 + h - 1; 42ce: 1e73 subs r3, r6, #1 42d0: 8a62 ldrh r2, [r4, #18] 42d2: 4413 add r3, r2 42d4: 82e3 strh r3, [r4, #22] if(lv_obj_get_base_dir(obj) == LV_BIDI_DIR_RTL) { 42d6: 4620 mov r0, r4 42d8: 4b2a ldr r3, [pc, #168] ; (4384 ) 42da: 4798 blx r3 42dc: 2801 cmp r0, #1 42de: d035 beq.n 434c obj->coords.x2 = obj->coords.x1 + w - 1; 42e0: 1e6b subs r3, r5, #1 42e2: 8a22 ldrh r2, [r4, #16] 42e4: 4413 add r3, r2 42e6: 82a3 strh r3, [r4, #20] obj->signal_cb(obj, LV_SIGNAL_COORD_CHG, &ori); 42e8: 69e3 ldr r3, [r4, #28] 42ea: aa02 add r2, sp, #8 42ec: 2102 movs r1, #2 42ee: 4620 mov r0, r4 42f0: 4798 blx r3 lv_obj_t * par = lv_obj_get_parent(obj); 42f2: 4620 mov r0, r4 42f4: 4b24 ldr r3, [pc, #144] ; (4388 ) 42f6: 4798 blx r3 if(par != NULL) par->signal_cb(par, LV_SIGNAL_CHILD_CHG, obj); 42f8: b118 cbz r0, 4302 42fa: 69c5 ldr r5, [r0, #28] 42fc: 4622 mov r2, r4 42fe: 2101 movs r1, #1 4300: 47a8 blx r5 _LV_LL_READ(obj->child_ll, i) { 4302: 1d26 adds r6, r4, #4 4304: 4630 mov r0, r6 4306: 4b21 ldr r3, [pc, #132] ; (438c ) 4308: 4798 blx r3 430a: 4605 mov r5, r0 430c: b168 cbz r0, 432a i->signal_cb(i, LV_SIGNAL_PARENT_SIZE_CHG, &ori); 430e: f04f 0803 mov.w r8, #3 _LV_LL_READ(obj->child_ll, i) { 4312: 4f1f ldr r7, [pc, #124] ; (4390 ) i->signal_cb(i, LV_SIGNAL_PARENT_SIZE_CHG, &ori); 4314: 69eb ldr r3, [r5, #28] 4316: aa02 add r2, sp, #8 4318: 4641 mov r1, r8 431a: 4628 mov r0, r5 431c: 4798 blx r3 _LV_LL_READ(obj->child_ll, i) { 431e: 4629 mov r1, r5 4320: 4630 mov r0, r6 4322: 47b8 blx r7 4324: 4605 mov r5, r0 4326: 2800 cmp r0, #0 4328: d1f4 bne.n 4314 lv_obj_invalidate(obj); 432a: 4620 mov r0, r4 432c: 4b13 ldr r3, [pc, #76] ; (437c ) 432e: 4798 blx r3 if(obj->realign.auto_realign) lv_obj_realign(obj); 4330: f894 3049 ldrb.w r3, [r4, #73] ; 0x49 4334: f013 0f01 tst.w r3, #1 4338: d10e bne.n 4358 } 433a: b004 add sp, #16 433c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(lv_obj_get_width(obj) == w && lv_obj_get_height(obj) == h) { 4340: 4620 mov r0, r4 4342: 4b14 ldr r3, [pc, #80] ; (4394 ) 4344: 4798 blx r3 4346: 42b0 cmp r0, r6 4348: d1ba bne.n 42c0 434a: e7f6 b.n 433a obj->coords.x1 = obj->coords.x2 - w + 1; 434c: f1c5 0301 rsb r3, r5, #1 4350: 8aa2 ldrh r2, [r4, #20] 4352: 4413 add r3, r2 4354: 8223 strh r3, [r4, #16] 4356: e7c7 b.n 42e8 if(obj->realign.auto_realign) lv_obj_realign(obj); 4358: 4620 mov r0, r4 435a: 4b0f ldr r3, [pc, #60] ; (4398 ) 435c: 4798 blx r3 435e: e7ec b.n 433a 4360: 00002299 .word 0x00002299 4364: 000245f8 .word 0x000245f8 4368: 000247c4 .word 0x000247c4 436c: 00012245 .word 0x00012245 4370: 00024824 .word 0x00024824 4374: 000022a1 .word 0x000022a1 4378: 00002f45 .word 0x00002f45 437c: 00003309 .word 0x00003309 4380: 00002e29 .word 0x00002e29 4384: 00003dc5 .word 0x00003dc5 4388: 00002c65 .word 0x00002c65 438c: 00011f91 .word 0x00011f91 4390: 00011fa5 .word 0x00011fa5 4394: 00002f95 .word 0x00002f95 4398: 000039c9 .word 0x000039c9 0000439c : { 439c: b530 push {r4, r5, lr} 439e: b083 sub sp, #12 43a0: 4604 mov r4, r0 43a2: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 43a4: 4b0d ldr r3, [pc, #52] ; (43dc ) 43a6: 4798 blx r3 43a8: b968 cbnz r0, 43c6 43aa: 4b0d ldr r3, [pc, #52] ; (43e0 ) 43ac: 9300 str r3, [sp, #0] 43ae: f240 3227 movw r2, #807 ; 0x327 43b2: 490c ldr r1, [pc, #48] ; (43e4 ) 43b4: 2003 movs r0, #3 43b6: 4d0c ldr r5, [pc, #48] ; (43e8 ) 43b8: 47a8 blx r5 43ba: 4622 mov r2, r4 43bc: 2300 movs r3, #0 43be: 480b ldr r0, [pc, #44] ; (43ec ) 43c0: 490b ldr r1, [pc, #44] ; (43f0 ) 43c2: 4788 blx r1 43c4: e7fe b.n 43c4 lv_obj_set_size(obj, lv_obj_get_width(obj), h); 43c6: 4620 mov r0, r4 43c8: 4b0a ldr r3, [pc, #40] ; (43f4 ) 43ca: 4798 blx r3 43cc: 462a mov r2, r5 43ce: 4601 mov r1, r0 43d0: 4620 mov r0, r4 43d2: 4b09 ldr r3, [pc, #36] ; (43f8 ) 43d4: 4798 blx r3 } 43d6: b003 add sp, #12 43d8: bd30 pop {r4, r5, pc} 43da: bf00 nop 43dc: 00002299 .word 0x00002299 43e0: 0002461c .word 0x0002461c 43e4: 000247c4 .word 0x000247c4 43e8: 00012245 .word 0x00012245 43ec: 00024824 .word 0x00024824 43f0: 000022a1 .word 0x000022a1 43f4: 00002f45 .word 0x00002f45 43f8: 00004289 .word 0x00004289 000043fc : { 43fc: b530 push {r4, r5, lr} 43fe: b083 sub sp, #12 4400: 4604 mov r4, r0 4402: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4404: 4b0c ldr r3, [pc, #48] ; (4438 ) 4406: 4798 blx r3 4408: b138 cbz r0, 441a return (obj->protect & prot) == 0 ? false : true; 440a: f894 303c ldrb.w r3, [r4, #60] ; 0x3c 440e: 421d tst r5, r3 } 4410: bf14 ite ne 4412: 2001 movne r0, #1 4414: 2000 moveq r0, #0 4416: b003 add sp, #12 4418: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 441a: 4b08 ldr r3, [pc, #32] ; (443c ) 441c: 9300 str r3, [sp, #0] 441e: f640 22d7 movw r2, #2775 ; 0xad7 4422: 4907 ldr r1, [pc, #28] ; (4440 ) 4424: 2003 movs r0, #3 4426: 4d07 ldr r5, [pc, #28] ; (4444 ) 4428: 47a8 blx r5 442a: 4622 mov r2, r4 442c: 2300 movs r3, #0 442e: 4806 ldr r0, [pc, #24] ; (4448 ) 4430: 4906 ldr r1, [pc, #24] ; (444c ) 4432: 4788 blx r1 4434: e7fe b.n 4434 4436: bf00 nop 4438: 00002299 .word 0x00002299 443c: 00024644 .word 0x00024644 4440: 000247c4 .word 0x000247c4 4444: 00012245 .word 0x00012245 4448: 00024824 .word 0x00024824 444c: 000022a1 .word 0x000022a1 00004450 : { 4450: b530 push {r4, r5, lr} 4452: b085 sub sp, #20 4454: 4604 mov r4, r0 4456: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4458: 4b11 ldr r3, [pc, #68] ; (44a0 ) 445a: 4798 blx r3 445c: b128 cbz r0, 446a if(part < _LV_OBJ_PART_REAL_LAST) return ((lv_obj_t *)obj)->state; 445e: 2d3f cmp r5, #63 ; 0x3f 4460: d811 bhi.n 4486 4462: f894 003d ldrb.w r0, [r4, #61] ; 0x3d } 4466: b005 add sp, #20 4468: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 446a: 4b0e ldr r3, [pc, #56] ; (44a4 ) 446c: 9300 str r3, [sp, #0] 446e: f640 22de movw r2, #2782 ; 0xade 4472: 490d ldr r1, [pc, #52] ; (44a8 ) 4474: 2003 movs r0, #3 4476: 4d0d ldr r5, [pc, #52] ; (44ac ) 4478: 47a8 blx r5 447a: 4622 mov r2, r4 447c: 2300 movs r3, #0 447e: 480c ldr r0, [pc, #48] ; (44b0 ) 4480: 490c ldr r1, [pc, #48] ; (44b4 ) 4482: 4788 blx r1 4484: e7fe b.n 4484 info.part = part; 4486: f88d 500c strb.w r5, [sp, #12] info.result = LV_STATE_DEFAULT; 448a: 2300 movs r3, #0 448c: f88d 300d strb.w r3, [sp, #13] lv_signal_send((lv_obj_t *)obj, LV_SIGNAL_GET_STATE_DSC, &info); 4490: aa03 add r2, sp, #12 4492: 2109 movs r1, #9 4494: 4620 mov r0, r4 4496: 4b08 ldr r3, [pc, #32] ; (44b8 ) 4498: 4798 blx r3 return info.result; 449a: f89d 000d ldrb.w r0, [sp, #13] 449e: e7e2 b.n 4466 44a0: 00002299 .word 0x00002299 44a4: 00024658 .word 0x00024658 44a8: 000247c4 .word 0x000247c4 44ac: 00012245 .word 0x00012245 44b0: 00024824 .word 0x00024824 44b4: 000022a1 .word 0x000022a1 44b8: 00002b5d .word 0x00002b5d 000044bc <_lv_obj_get_style_int>: { 44bc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 44c0: b085 sub sp, #20 44c2: 4617 mov r7, r2 while(parent) { 44c4: b360 cbz r0, 4520 <_lv_obj_get_style_int+0x64> 44c6: 460d mov r5, r1 44c8: ea4f 2b12 mov.w fp, r2, lsr #8 44cc: 4606 mov r6, r0 lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 44ce: f8df a08c ldr.w sl, [pc, #140] ; 455c <_lv_obj_get_style_int+0xa0> lv_state_t state = lv_obj_get_state(parent, part); 44d2: f8df 908c ldr.w r9, [pc, #140] ; 4560 <_lv_obj_get_style_int+0xa4> res = _lv_style_list_get_int(dsc, prop, &value_act); 44d6: f8df 808c ldr.w r8, [pc, #140] ; 4564 <_lv_obj_get_style_int+0xa8> 44da: e006 b.n 44ea <_lv_obj_get_style_int+0x2e> if(res == LV_RES_OK) return value_act; 44dc: f9bd 000e ldrsh.w r0, [sp, #14] } 44e0: b005 add sp, #20 44e2: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 44e6: 2500 movs r5, #0 while(parent) { 44e8: b1de cbz r6, 4522 <_lv_obj_get_style_int+0x66> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 44ea: 4629 mov r1, r5 44ec: 4630 mov r0, r6 44ee: 47d0 blx sl 44f0: 9001 str r0, [sp, #4] lv_state_t state = lv_obj_get_state(parent, part); 44f2: 4629 mov r1, r5 44f4: 4630 mov r0, r6 44f6: 47c8 blx r9 prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 44f8: eb07 2000 add.w r0, r7, r0, lsl #8 44fc: b284 uxth r4, r0 res = _lv_style_list_get_int(dsc, prop, &value_act); 44fe: f10d 020e add.w r2, sp, #14 4502: 4621 mov r1, r4 4504: 9801 ldr r0, [sp, #4] 4506: 47c0 blx r8 if(res == LV_RES_OK) return value_act; 4508: 2801 cmp r0, #1 450a: d0e7 beq.n 44dc <_lv_obj_get_style_int+0x20> if(attr.bits.inherit == 0) break; 450c: f01b 0f80 tst.w fp, #128 ; 0x80 4510: d007 beq.n 4522 <_lv_obj_get_style_int+0x66> if(part != LV_OBJ_PART_MAIN) { 4512: 2d00 cmp r5, #0 4514: d1e7 bne.n 44e6 <_lv_obj_get_style_int+0x2a> parent = lv_obj_get_parent(parent); 4516: 4630 mov r0, r6 4518: 4b0f ldr r3, [pc, #60] ; (4558 <_lv_obj_get_style_int+0x9c>) 451a: 4798 blx r3 451c: 4606 mov r6, r0 451e: e7e2 b.n 44e6 <_lv_obj_get_style_int+0x2a> while(parent) { 4520: 4614 mov r4, r2 prop = prop & (~LV_STYLE_STATE_MASK); 4522: f424 44fe bic.w r4, r4, #32512 ; 0x7f00 switch(prop) { 4526: b2a4 uxth r4, r4 4528: 2c22 cmp r4, #34 ; 0x22 452a: d00f beq.n 454c <_lv_obj_get_style_int+0x90> 452c: d806 bhi.n 453c <_lv_obj_get_style_int+0x80> 452e: 2c03 cmp r4, #3 4530: d00a beq.n 4548 <_lv_obj_get_style_int+0x8c> 4532: 2c07 cmp r4, #7 4534: d10c bne.n 4550 <_lv_obj_get_style_int+0x94> return LV_IMG_ZOOM_NONE; 4536: f44f 7080 mov.w r0, #256 ; 0x100 453a: e7d1 b.n 44e0 <_lv_obj_get_style_int+0x24> switch(prop) { 453c: 2c31 cmp r4, #49 ; 0x31 453e: d009 beq.n 4554 <_lv_obj_get_style_int+0x98> 4540: 2cc0 cmp r4, #192 ; 0xc0 4542: d105 bne.n 4550 <_lv_obj_get_style_int+0x94> return LV_DPI / 8; 4544: 2010 movs r0, #16 4546: e7cb b.n 44e0 <_lv_obj_get_style_int+0x24> return LV_DPI / 20; 4548: 2006 movs r0, #6 454a: e7c9 b.n 44e0 <_lv_obj_get_style_int+0x24> return 255; 454c: 20ff movs r0, #255 ; 0xff 454e: e7c7 b.n 44e0 <_lv_obj_get_style_int+0x24> return 0; 4550: 2000 movs r0, #0 4552: e7c5 b.n 44e0 <_lv_obj_get_style_int+0x24> return LV_BORDER_SIDE_FULL; 4554: 200f movs r0, #15 4556: e7c3 b.n 44e0 <_lv_obj_get_style_int+0x24> 4558: 00002c65 .word 0x00002c65 455c: 00002fe5 .word 0x00002fe5 4560: 00004451 .word 0x00004451 4564: 000072cd .word 0x000072cd 00004568 <_lv_obj_get_style_color>: { 4568: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 456c: b085 sub sp, #20 456e: 4617 mov r7, r2 while(parent) { 4570: b348 cbz r0, 45c6 <_lv_obj_get_style_color+0x5e> 4572: 460d mov r5, r1 4574: ea4f 2b12 mov.w fp, r2, lsr #8 4578: 4606 mov r6, r0 lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 457a: f8df a06c ldr.w sl, [pc, #108] ; 45e8 <_lv_obj_get_style_color+0x80> lv_state_t state = lv_obj_get_state(parent, part); 457e: f8df 906c ldr.w r9, [pc, #108] ; 45ec <_lv_obj_get_style_color+0x84> res = _lv_style_list_get_color(dsc, prop, &value_act); 4582: f8df 806c ldr.w r8, [pc, #108] ; 45f0 <_lv_obj_get_style_color+0x88> 4586: e004 b.n 4592 <_lv_obj_get_style_color+0x2a> if(res == LV_RES_OK) return value_act; 4588: f8bd 000c ldrh.w r0, [sp, #12] 458c: e025 b.n 45da <_lv_obj_get_style_color+0x72> 458e: 2500 movs r5, #0 while(parent) { 4590: b1d6 cbz r6, 45c8 <_lv_obj_get_style_color+0x60> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 4592: 4629 mov r1, r5 4594: 4630 mov r0, r6 4596: 47d0 blx sl 4598: 9001 str r0, [sp, #4] lv_state_t state = lv_obj_get_state(parent, part); 459a: 4629 mov r1, r5 459c: 4630 mov r0, r6 459e: 47c8 blx r9 prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 45a0: eb07 2000 add.w r0, r7, r0, lsl #8 45a4: b284 uxth r4, r0 res = _lv_style_list_get_color(dsc, prop, &value_act); 45a6: aa03 add r2, sp, #12 45a8: 4621 mov r1, r4 45aa: 9801 ldr r0, [sp, #4] 45ac: 47c0 blx r8 if(res == LV_RES_OK) return value_act; 45ae: 2801 cmp r0, #1 45b0: d0ea beq.n 4588 <_lv_obj_get_style_color+0x20> if(attr.bits.inherit == 0) break; 45b2: f01b 0f80 tst.w fp, #128 ; 0x80 45b6: d007 beq.n 45c8 <_lv_obj_get_style_color+0x60> if(part != LV_OBJ_PART_MAIN) { 45b8: 2d00 cmp r5, #0 45ba: d1e8 bne.n 458e <_lv_obj_get_style_color+0x26> parent = lv_obj_get_parent(parent); 45bc: 4630 mov r0, r6 45be: 4b08 ldr r3, [pc, #32] ; (45e0 <_lv_obj_get_style_color+0x78>) 45c0: 4798 blx r3 45c2: 4606 mov r6, r0 45c4: e7e3 b.n 458e <_lv_obj_get_style_color+0x26> while(parent) { 45c6: 4614 mov r4, r2 prop = prop & (~LV_STYLE_STATE_MASK); 45c8: f424 44fe bic.w r4, r4, #32512 ; 0x7f00 switch(prop) { 45cc: 3c29 subs r4, #41 ; 0x29 45ce: 2c01 cmp r4, #1 return LV_COLOR_WHITE; 45d0: bf9a itte ls 45d2: 4b04 ldrls r3, [pc, #16] ; (45e4 <_lv_obj_get_style_color+0x7c>) 45d4: f8b3 0674 ldrhls.w r0, [r3, #1652] ; 0x674 return LV_COLOR_BLACK; 45d8: 2000 movhi r0, #0 } 45da: b005 add sp, #20 45dc: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 45e0: 00002c65 .word 0x00002c65 45e4: 00024040 .word 0x00024040 45e8: 00002fe5 .word 0x00002fe5 45ec: 00004451 .word 0x00004451 45f0: 00007391 .word 0x00007391 000045f4 <_lv_obj_get_style_opa>: { 45f4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 45f8: b085 sub sp, #20 45fa: 4617 mov r7, r2 while(parent) { 45fc: b350 cbz r0, 4654 <_lv_obj_get_style_opa+0x60> 45fe: 460d mov r5, r1 4600: ea4f 2b12 mov.w fp, r2, lsr #8 4604: 4606 mov r6, r0 lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 4606: f8df a074 ldr.w sl, [pc, #116] ; 467c <_lv_obj_get_style_opa+0x88> lv_state_t state = lv_obj_get_state(parent, part); 460a: f8df 9074 ldr.w r9, [pc, #116] ; 4680 <_lv_obj_get_style_opa+0x8c> res = _lv_style_list_get_opa(dsc, prop, &value_act); 460e: f8df 8074 ldr.w r8, [pc, #116] ; 4684 <_lv_obj_get_style_opa+0x90> 4612: e004 b.n 461e <_lv_obj_get_style_opa+0x2a> if(res == LV_RES_OK) return value_act; 4614: f89d 000f ldrb.w r0, [sp, #15] 4618: e029 b.n 466e <_lv_obj_get_style_opa+0x7a> 461a: 2500 movs r5, #0 while(parent) { 461c: b1de cbz r6, 4656 <_lv_obj_get_style_opa+0x62> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 461e: 4629 mov r1, r5 4620: 4630 mov r0, r6 4622: 47d0 blx sl 4624: 9001 str r0, [sp, #4] lv_state_t state = lv_obj_get_state(parent, part); 4626: 4629 mov r1, r5 4628: 4630 mov r0, r6 462a: 47c8 blx r9 prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 462c: eb07 2000 add.w r0, r7, r0, lsl #8 4630: b284 uxth r4, r0 res = _lv_style_list_get_opa(dsc, prop, &value_act); 4632: f10d 020f add.w r2, sp, #15 4636: 4621 mov r1, r4 4638: 9801 ldr r0, [sp, #4] 463a: 47c0 blx r8 if(res == LV_RES_OK) return value_act; 463c: 2801 cmp r0, #1 463e: d0e9 beq.n 4614 <_lv_obj_get_style_opa+0x20> if(attr.bits.inherit == 0) break; 4640: f01b 0f80 tst.w fp, #128 ; 0x80 4644: d007 beq.n 4656 <_lv_obj_get_style_opa+0x62> if(part != LV_OBJ_PART_MAIN) { 4646: 2d00 cmp r5, #0 4648: d1e7 bne.n 461a <_lv_obj_get_style_opa+0x26> parent = lv_obj_get_parent(parent); 464a: 4630 mov r0, r6 464c: 4b0a ldr r3, [pc, #40] ; (4678 <_lv_obj_get_style_opa+0x84>) 464e: 4798 blx r3 4650: 4606 mov r6, r0 4652: e7e2 b.n 461a <_lv_obj_get_style_opa+0x26> while(parent) { 4654: 4614 mov r4, r2 prop = prop & (~LV_STYLE_STATE_MASK); 4656: f424 44fe bic.w r4, r4, #32512 ; 0x7f00 switch(prop) { 465a: b2a4 uxth r4, r4 465c: 2c6d cmp r4, #109 ; 0x6d 465e: d009 beq.n 4674 <_lv_obj_get_style_opa+0x80> 4660: f248 03ad movw r3, #32941 ; 0x80ad 4664: 429c cmp r4, r3 4666: d005 beq.n 4674 <_lv_obj_get_style_opa+0x80> 4668: 2c2c cmp r4, #44 ; 0x2c 466a: d003 beq.n 4674 <_lv_obj_get_style_opa+0x80> return LV_OPA_COVER; 466c: 20ff movs r0, #255 ; 0xff } 466e: b005 add sp, #20 4670: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} return LV_OPA_TRANSP; 4674: 2000 movs r0, #0 4676: e7fa b.n 466e <_lv_obj_get_style_opa+0x7a> 4678: 00002c65 .word 0x00002c65 467c: 00002fe5 .word 0x00002fe5 4680: 00004451 .word 0x00004451 4684: 00007455 .word 0x00007455 00004688 <_lv_obj_get_style_ptr>: { 4688: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 468c: b085 sub sp, #20 468e: 4617 mov r7, r2 while(parent) { 4690: b350 cbz r0, 46e8 <_lv_obj_get_style_ptr+0x60> 4692: 460d mov r5, r1 4694: ea4f 2b12 mov.w fp, r2, lsr #8 4698: 4606 mov r6, r0 lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 469a: f8df a080 ldr.w sl, [pc, #128] ; 471c <_lv_obj_get_style_ptr+0x94> lv_state_t state = lv_obj_get_state(parent, part); 469e: f8df 9080 ldr.w r9, [pc, #128] ; 4720 <_lv_obj_get_style_ptr+0x98> res = _lv_style_list_get_ptr(dsc, prop, &value_act); 46a2: f8df 8080 ldr.w r8, [pc, #128] ; 4724 <_lv_obj_get_style_ptr+0x9c> 46a6: e005 b.n 46b4 <_lv_obj_get_style_ptr+0x2c> if(res == LV_RES_OK) return value_act; 46a8: 9803 ldr r0, [sp, #12] } 46aa: b005 add sp, #20 46ac: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 46b0: 2500 movs r5, #0 while(parent) { 46b2: b1d6 cbz r6, 46ea <_lv_obj_get_style_ptr+0x62> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 46b4: 4629 mov r1, r5 46b6: 4630 mov r0, r6 46b8: 47d0 blx sl 46ba: 9001 str r0, [sp, #4] lv_state_t state = lv_obj_get_state(parent, part); 46bc: 4629 mov r1, r5 46be: 4630 mov r0, r6 46c0: 47c8 blx r9 prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 46c2: eb07 2000 add.w r0, r7, r0, lsl #8 46c6: b284 uxth r4, r0 res = _lv_style_list_get_ptr(dsc, prop, &value_act); 46c8: aa03 add r2, sp, #12 46ca: 4621 mov r1, r4 46cc: 9801 ldr r0, [sp, #4] 46ce: 47c0 blx r8 if(res == LV_RES_OK) return value_act; 46d0: 2801 cmp r0, #1 46d2: d0e9 beq.n 46a8 <_lv_obj_get_style_ptr+0x20> if(attr.bits.inherit == 0) break; 46d4: f01b 0f80 tst.w fp, #128 ; 0x80 46d8: d007 beq.n 46ea <_lv_obj_get_style_ptr+0x62> if(part != LV_OBJ_PART_MAIN) { 46da: 2d00 cmp r5, #0 46dc: d1e8 bne.n 46b0 <_lv_obj_get_style_ptr+0x28> parent = lv_obj_get_parent(parent); 46de: 4630 mov r0, r6 46e0: 4b0b ldr r3, [pc, #44] ; (4710 <_lv_obj_get_style_ptr+0x88>) 46e2: 4798 blx r3 46e4: 4606 mov r6, r0 46e6: e7e3 b.n 46b0 <_lv_obj_get_style_ptr+0x28> while(parent) { 46e8: 4614 mov r4, r2 prop = prop & (~LV_STYLE_STATE_MASK); 46ea: f424 44fe bic.w r4, r4, #32512 ; 0x7f00 switch(prop) { 46ee: b2a4 uxth r4, r4 46f0: 2cbe cmp r4, #190 ; 0xbe 46f2: d00a beq.n 470a <_lv_obj_get_style_ptr+0x82> 46f4: f248 038e movw r3, #32910 ; 0x808e 46f8: 429c cmp r4, r3 46fa: d003 beq.n 4704 <_lv_obj_get_style_ptr+0x7c> 46fc: 2c7e cmp r4, #126 ; 0x7e 46fe: d001 beq.n 4704 <_lv_obj_get_style_ptr+0x7c> return NULL; 4700: 2000 movs r0, #0 4702: e7d2 b.n 46aa <_lv_obj_get_style_ptr+0x22> return lv_theme_get_font_normal(); 4704: 4b03 ldr r3, [pc, #12] ; (4714 <_lv_obj_get_style_ptr+0x8c>) 4706: 4798 blx r3 4708: e7cf b.n 46aa <_lv_obj_get_style_ptr+0x22> return &lv_anim_path_def; 470a: 4803 ldr r0, [pc, #12] ; (4718 <_lv_obj_get_style_ptr+0x90>) 470c: e7cd b.n 46aa <_lv_obj_get_style_ptr+0x22> 470e: bf00 nop 4710: 00002c65 .word 0x00002c65 4714: 000141c5 .word 0x000141c5 4718: 000291e8 .word 0x000291e8 471c: 00002fe5 .word 0x00002fe5 4720: 00004451 .word 0x00004451 4724: 00007519 .word 0x00007519 00004728 : { 4728: b570 push {r4, r5, r6, lr} lv_style_trans_t * tr = a->var; 472a: 6804 ldr r4, [r0, #0] lv_style_property_t prop_tmp = tr->prop; 472c: 88a5 ldrh r5, [r4, #4] if((prop_tmp & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/ 472e: f005 030f and.w r3, r5, #15 4732: 2b08 cmp r3, #8 4734: dd13 ble.n 475e else if((prop_tmp & 0xF) < LV_STYLE_ID_OPA) { /*Color*/ 4736: 2b0b cmp r3, #11 4738: dd18 ble.n 476c else if((prop_tmp & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/ 473a: 2b0d cmp r3, #13 473c: dd1d ble.n 477a tr->start_value._ptr = _lv_obj_get_style_ptr(tr->obj, tr->part, prop_tmp); 473e: 462a mov r2, r5 4740: 79a1 ldrb r1, [r4, #6] 4742: 6820 ldr r0, [r4, #0] 4744: 4b10 ldr r3, [pc, #64] ; (4788 ) 4746: 4798 blx r3 4748: 60a0 str r0, [r4, #8] tr->prop = 0; 474a: 2300 movs r3, #0 474c: 80a3 strh r3, [r4, #4] trans_del(tr->obj, tr->part, prop_tmp, tr); 474e: 4623 mov r3, r4 4750: 462a mov r2, r5 4752: 79a1 ldrb r1, [r4, #6] 4754: 6820 ldr r0, [r4, #0] 4756: 4e0d ldr r6, [pc, #52] ; (478c ) 4758: 47b0 blx r6 tr->prop = prop_tmp; 475a: 80a5 strh r5, [r4, #4] 475c: bd70 pop {r4, r5, r6, pc} tr->start_value._int = _lv_obj_get_style_int(tr->obj, tr->part, prop_tmp); 475e: 462a mov r2, r5 4760: 79a1 ldrb r1, [r4, #6] 4762: 6820 ldr r0, [r4, #0] 4764: 4b0a ldr r3, [pc, #40] ; (4790 ) 4766: 4798 blx r3 4768: 8120 strh r0, [r4, #8] 476a: e7ee b.n 474a tr->start_value._color = _lv_obj_get_style_color(tr->obj, tr->part, prop_tmp); 476c: 462a mov r2, r5 476e: 79a1 ldrb r1, [r4, #6] 4770: 6820 ldr r0, [r4, #0] 4772: 4b08 ldr r3, [pc, #32] ; (4794 ) 4774: 4798 blx r3 4776: 8120 strh r0, [r4, #8] 4778: e7e7 b.n 474a tr->start_value._opa = _lv_obj_get_style_opa(tr->obj, tr->part, prop_tmp); 477a: 462a mov r2, r5 477c: 79a1 ldrb r1, [r4, #6] 477e: 6820 ldr r0, [r4, #0] 4780: 4b05 ldr r3, [pc, #20] ; (4798 ) 4782: 4798 blx r3 4784: 7220 strb r0, [r4, #8] 4786: e7e0 b.n 474a 4788: 00004689 .word 0x00004689 478c: 00003011 .word 0x00003011 4790: 000044bd .word 0x000044bd 4794: 00004569 .word 0x00004569 4798: 000045f5 .word 0x000045f5 0000479c : if(obj->state == new_state) return; 479c: f890 303d ldrb.w r3, [r0, #61] ; 0x3d 47a0: 428b cmp r3, r1 47a2: f000 8252 beq.w 4c4a { 47a6: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 47aa: b0a1 sub sp, #132 ; 0x84 47ac: 4689 mov r9, r1 47ae: 4682 mov sl, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 47b0: 4bab ldr r3, [pc, #684] ; (4a60 ) 47b2: 4798 blx r3 47b4: b140 cbz r0, 47c8 lv_state_t prev_state = obj->state; 47b6: f89a b03d ldrb.w fp, [sl, #61] ; 0x3d obj->state = new_state; 47ba: f88a 903d strb.w r9, [sl, #61] ; 0x3d 47be: 2300 movs r3, #0 47c0: 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) 47c2: 4da8 ldr r5, [pc, #672] ; (4a64 ) lv_style_t * style_trans = _lv_style_list_get_transition_style(style_list); 47c4: 46d8 mov r8, fp 47c6: e1d2 b.n 4b6e LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 47c8: 4ba7 ldr r3, [pc, #668] ; (4a68 ) 47ca: 9300 str r3, [sp, #0] 47cc: f240 6237 movw r2, #1591 ; 0x637 47d0: 49a6 ldr r1, [pc, #664] ; (4a6c ) 47d2: 2003 movs r0, #3 47d4: 4ca6 ldr r4, [pc, #664] ; (4a70 ) 47d6: 47a0 blx r4 47d8: 4652 mov r2, sl 47da: 2300 movs r3, #0 47dc: 48a5 ldr r0, [pc, #660] ; (4a74 ) 47de: 49a6 ldr r1, [pc, #664] ; (4a78 ) 47e0: 4788 blx r1 47e2: e7fe b.n 47e2 style_list->skip_trans = 1; 47e4: 7973 ldrb r3, [r6, #5] 47e6: f043 0304 orr.w r3, r3, #4 47ea: 7173 strb r3, [r6, #5] obj->state = prev_state; 47ec: f88a 803d strb.w r8, [sl, #61] ; 0x3d lv_style_int_t int1 = _lv_obj_get_style_int(obj, part, prop); 47f0: 4622 mov r2, r4 47f2: f8dd b00c ldr.w fp, [sp, #12] 47f6: 4659 mov r1, fp 47f8: 4650 mov r0, sl 47fa: 47a8 blx r5 47fc: 4607 mov r7, r0 obj->state = new_state; 47fe: f88a 903d strb.w r9, [sl, #61] ; 0x3d lv_style_int_t int2 = _lv_obj_get_style_int(obj, part, prop); 4802: 4622 mov r2, r4 4804: f8cd b00c str.w fp, [sp, #12] 4808: 4659 mov r1, fp 480a: 4650 mov r0, sl 480c: 47a8 blx r5 480e: 4683 mov fp, r0 style_list->skip_trans = 0; 4810: 7973 ldrb r3, [r6, #5] 4812: f36f 0382 bfc r3, #2, #1 4816: 7173 strb r3, [r6, #5] if(int1 == int2) return NULL; 4818: 4287 cmp r7, r0 481a: d04a beq.n 48b2 obj->state = prev_state; 481c: f88a 803d strb.w r8, [sl, #61] ; 0x3d int1 = _lv_obj_get_style_int(obj, part, prop); 4820: 4622 mov r2, r4 4822: 9903 ldr r1, [sp, #12] 4824: 4650 mov r0, sl 4826: 47a8 blx r5 4828: 4606 mov r6, r0 obj->state = new_state; 482a: f88a 903d strb.w r9, [sl, #61] ; 0x3d _lv_style_set_int(style_trans, prop, int1); /*Be sure `trans_style` has a valid value */ 482e: 4602 mov r2, r0 4830: 4621 mov r1, r4 4832: 9804 ldr r0, [sp, #16] 4834: 4b91 ldr r3, [pc, #580] ; (4a7c ) 4836: 4798 blx r3 if(prop == LV_STYLE_RADIUS) { 4838: 2c01 cmp r4, #1 483a: f000 8094 beq.w 4966 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 483e: 4890 ldr r0, [pc, #576] ; (4a80 ) 4840: 4b90 ldr r3, [pc, #576] ; (4a84 ) 4842: 4798 blx r3 4844: 4607 mov r7, r0 LV_ASSERT_MEM(tr); 4846: 4b86 ldr r3, [pc, #536] ; (4a60 ) 4848: 4798 blx r3 484a: 2800 cmp r0, #0 484c: f000 80a2 beq.w 4994 if(tr == NULL) return NULL; 4850: 2f00 cmp r7, #0 4852: d02e beq.n 48b2 tr->start_value._int = int1; 4854: 813e strh r6, [r7, #8] tr->end_value._int = int2; 4856: f8a7 b00c strh.w fp, [r7, #12] tr->obj = obj; 485a: f8c7 a000 str.w sl, [r7] tr->prop = props[i]; 485e: 80bc strh r4, [r7, #4] tr->part = part; 4860: f89d 300c ldrb.w r3, [sp, #12] 4864: 71bb strb r3, [r7, #6] lv_anim_init(&a); 4866: a810 add r0, sp, #64 ; 0x40 4868: 4b87 ldr r3, [pc, #540] ; (4a88 ) 486a: 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; 486c: 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; 486e: 4b87 ldr r3, [pc, #540] ; (4a8c ) 4870: 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; 4872: 4b87 ldr r3, [pc, #540] ; (4a90 ) 4874: 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; 4876: 4b87 ldr r3, [pc, #540] ; (4a94 ) 4878: 9313 str r3, [sp, #76] ; 0x4c a->start = start; 487a: 2300 movs r3, #0 487c: 9316 str r3, [sp, #88] ; 0x58 a->end = end; 487e: 23ff movs r3, #255 ; 0xff 4880: 9317 str r3, [sp, #92] ; 0x5c a->time = duration; 4882: 9b0a ldr r3, [sp, #40] ; 0x28 4884: 9318 str r3, [sp, #96] ; 0x60 a->act_time = (int32_t)(-delay); 4886: 9b09 ldr r3, [sp, #36] ; 0x24 4888: 425b negs r3, r3 488a: 9319 str r3, [sp, #100] ; 0x64 488c: 9a08 ldr r2, [sp, #32] 488e: 1e53 subs r3, r2, #1 4890: 1dd0 adds r0, r2, #7 uint8_t * d8 = (uint8_t *)dst; 4892: aa14 add r2, sp, #80 ; 0x50 *d8 = *s8; 4894: f813 1f01 ldrb.w r1, [r3, #1]! 4898: f802 1b01 strb.w r1, [r2], #1 while(len) { 489c: 4283 cmp r3, r0 489e: d1f9 bne.n 4894 a.early_apply = 0; 48a0: f89d 3076 ldrb.w r3, [sp, #118] ; 0x76 48a4: f36f 0300 bfc r3, #0, #1 48a8: f88d 3076 strb.w r3, [sp, #118] ; 0x76 lv_anim_start(&a); 48ac: a810 add r0, sp, #64 ; 0x40 48ae: 4b7a ldr r3, [pc, #488] ; (4a98 ) 48b0: 4798 blx r3 for(i = 0; i < LV_STYLE_TRANS_NUM_MAX; i++) { 48b2: 9b05 ldr r3, [sp, #20] 48b4: aa10 add r2, sp, #64 ; 0x40 48b6: 4293 cmp r3, r2 48b8: f000 8154 beq.w 4b64 if(props[i] != 0) { 48bc: 9b05 ldr r3, [sp, #20] 48be: f833 4b02 ldrh.w r4, [r3], #2 48c2: 9305 str r3, [sp, #20] 48c4: 2c00 cmp r4, #0 48c6: d0f4 beq.n 48b2 _lv_style_list_add_trans_style(style_list); 48c8: 9807 ldr r0, [sp, #28] 48ca: 4b74 ldr r3, [pc, #464] ; (4a9c ) 48cc: 4798 blx r3 lv_style_list_t * style_list = lv_obj_get_style_list(obj, part); 48ce: 9903 ldr r1, [sp, #12] 48d0: 4650 mov r0, sl 48d2: 4b73 ldr r3, [pc, #460] ; (4aa0 ) 48d4: 4798 blx r3 48d6: 4606 mov r6, r0 lv_style_t * style_trans = _lv_style_list_get_transition_style(style_list); 48d8: 4b72 ldr r3, [pc, #456] ; (4aa4 ) 48da: 4798 blx r3 48dc: 9004 str r0, [sp, #16] if((prop & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/ 48de: f004 030f and.w r3, r4, #15 48e2: 2b08 cmp r3, #8 48e4: f77f af7e ble.w 47e4 else if((prop & 0xF) < LV_STYLE_ID_OPA) { /*Color*/ 48e8: 2b0b cmp r3, #11 48ea: dd61 ble.n 49b0 else if((prop & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/ 48ec: 2b0d cmp r3, #13 48ee: f300 80e9 bgt.w 4ac4 style_list->skip_trans = 1; 48f2: 7973 ldrb r3, [r6, #5] 48f4: f043 0304 orr.w r3, r3, #4 48f8: 7173 strb r3, [r6, #5] obj->state = prev_state; 48fa: f88a 803d strb.w r8, [sl, #61] ; 0x3d lv_opa_t o1 = _lv_obj_get_style_opa(obj, part, prop); 48fe: 4622 mov r2, r4 4900: f8dd b00c ldr.w fp, [sp, #12] 4904: 4659 mov r1, fp 4906: 4650 mov r0, sl 4908: 4f67 ldr r7, [pc, #412] ; (4aa8 ) 490a: 47b8 blx r7 490c: 900b str r0, [sp, #44] ; 0x2c obj->state = new_state; 490e: f88a 903d strb.w r9, [sl, #61] ; 0x3d lv_opa_t o2 = _lv_obj_get_style_opa(obj, part, prop); 4912: 4622 mov r2, r4 4914: f8cd b00c str.w fp, [sp, #12] 4918: 4659 mov r1, fp 491a: 4650 mov r0, sl 491c: 47b8 blx r7 491e: 4683 mov fp, r0 style_list->skip_trans = 0; 4920: 7973 ldrb r3, [r6, #5] 4922: f36f 0382 bfc r3, #2, #1 4926: 7173 strb r3, [r6, #5] if(o1 == o2) return NULL; 4928: 9b0b ldr r3, [sp, #44] ; 0x2c 492a: 4283 cmp r3, r0 492c: d0c1 beq.n 48b2 obj->state = prev_state; 492e: f88a 803d strb.w r8, [sl, #61] ; 0x3d o1 = _lv_obj_get_style_opa(obj, part, prop); 4932: 4622 mov r2, r4 4934: 9903 ldr r1, [sp, #12] 4936: 4650 mov r0, sl 4938: 47b8 blx r7 493a: 4606 mov r6, r0 obj->state = new_state; 493c: f88a 903d strb.w r9, [sl, #61] ; 0x3d _lv_style_set_opa(style_trans, prop, o1); /*Be sure `trans_style` has a valid value */ 4940: 4602 mov r2, r0 4942: 4621 mov r1, r4 4944: 9804 ldr r0, [sp, #16] 4946: 4b59 ldr r3, [pc, #356] ; (4aac ) 4948: 4798 blx r3 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 494a: 484d ldr r0, [pc, #308] ; (4a80 ) 494c: 4b4d ldr r3, [pc, #308] ; (4a84 ) 494e: 4798 blx r3 4950: 4607 mov r7, r0 LV_ASSERT_MEM(tr); 4952: 4b43 ldr r3, [pc, #268] ; (4a60 ) 4954: 4798 blx r3 4956: 2800 cmp r0, #0 4958: d074 beq.n 4a44 if(tr == NULL) return NULL; 495a: 2f00 cmp r7, #0 495c: d0a9 beq.n 48b2 tr->start_value._opa = o1; 495e: 723e strb r6, [r7, #8] tr->end_value._opa = o2; 4960: f887 b00c strb.w fp, [r7, #12] 4964: e779 b.n 485a if(int1 == LV_RADIUS_CIRCLE || int2 == LV_RADIUS_CIRCLE) { 4966: f647 73ff movw r3, #32767 ; 0x7fff 496a: 429e cmp r6, r3 496c: f000 814c beq.w 4c08 4970: 459b cmp fp, r3 4972: f47f af64 bne.w 483e lv_coord_t whalf = lv_obj_get_width(obj) / 2; 4976: 4650 mov r0, sl 4978: f8df b144 ldr.w fp, [pc, #324] ; 4ac0 497c: 47d8 blx fp 497e: eb00 70d0 add.w r0, r0, r0, lsr #31 4982: f340 074f sbfx r7, r0, #1, #16 lv_coord_t hhalf = lv_obj_get_width(obj) / 2; 4986: 4650 mov r0, sl 4988: 47d8 blx fp 498a: eb00 70d0 add.w r0, r0, r0, lsr #31 498e: f340 034f sbfx r3, r0, #1, #16 4992: e151 b.n 4c38 LV_ASSERT_MEM(tr); 4994: 4b46 ldr r3, [pc, #280] ; (4ab0 ) 4996: 9300 str r3, [sp, #0] 4998: f640 62b2 movw r2, #3762 ; 0xeb2 499c: 4933 ldr r1, [pc, #204] ; (4a6c ) 499e: 2003 movs r0, #3 49a0: 4c33 ldr r4, [pc, #204] ; (4a70 ) 49a2: 47a0 blx r4 49a4: 463a mov r2, r7 49a6: 2300 movs r3, #0 49a8: 4842 ldr r0, [pc, #264] ; (4ab4 ) 49aa: 4933 ldr r1, [pc, #204] ; (4a78 ) 49ac: 4788 blx r1 49ae: e7fe b.n 49ae style_list->skip_trans = 1; 49b0: 7973 ldrb r3, [r6, #5] 49b2: f043 0304 orr.w r3, r3, #4 49b6: 7173 strb r3, [r6, #5] obj->state = prev_state; 49b8: f88a 803d strb.w r8, [sl, #61] ; 0x3d lv_color_t c1 = _lv_obj_get_style_color(obj, part, prop); 49bc: 4622 mov r2, r4 49be: 9903 ldr r1, [sp, #12] 49c0: 4650 mov r0, sl 49c2: 4f3d ldr r7, [pc, #244] ; (4ab8 ) 49c4: 47b8 blx r7 49c6: 4683 mov fp, r0 obj->state = new_state; 49c8: f88a 903d strb.w r9, [sl, #61] ; 0x3d lv_color_t c2 = _lv_obj_get_style_color(obj, part, prop); 49cc: 4622 mov r2, r4 49ce: 9903 ldr r1, [sp, #12] 49d0: 4650 mov r0, sl 49d2: 47b8 blx r7 49d4: f8ad 002c strh.w r0, [sp, #44] ; 0x2c style_list->skip_trans = 0; 49d8: 7973 ldrb r3, [r6, #5] 49da: f36f 0382 bfc r3, #2, #1 49de: 7173 strb r3, [r6, #5] if(c1.full == c2.full) return NULL; 49e0: fa1f fb8b uxth.w fp, fp 49e4: b283 uxth r3, r0 49e6: 459b cmp fp, r3 49e8: f43f af63 beq.w 48b2 obj->state = prev_state; 49ec: f88a 803d strb.w r8, [sl, #61] ; 0x3d c1 = _lv_obj_get_style_color(obj, part, prop); 49f0: 4622 mov r2, r4 49f2: 9903 ldr r1, [sp, #12] 49f4: 4650 mov r0, sl 49f6: 47b8 blx r7 49f8: 4683 mov fp, r0 obj->state = new_state; 49fa: f88a 903d strb.w r9, [sl, #61] ; 0x3d _lv_style_set_color(style_trans, prop, c1); /*Be sure `trans_style` has a valid value */ 49fe: 4602 mov r2, r0 4a00: 4621 mov r1, r4 4a02: 9804 ldr r0, [sp, #16] 4a04: 4b2d ldr r3, [pc, #180] ; (4abc ) 4a06: 4798 blx r3 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 4a08: 481d ldr r0, [pc, #116] ; (4a80 ) 4a0a: 4b1e ldr r3, [pc, #120] ; (4a84 ) 4a0c: 4798 blx r3 4a0e: 4607 mov r7, r0 LV_ASSERT_MEM(tr); 4a10: 4b13 ldr r3, [pc, #76] ; (4a60 ) 4a12: 4798 blx r3 4a14: b140 cbz r0, 4a28 if(tr == NULL) return NULL; 4a16: 2f00 cmp r7, #0 4a18: f43f af4b beq.w 48b2 tr->start_value._color = c1; 4a1c: f8a7 b008 strh.w fp, [r7, #8] tr->end_value._color = c2; 4a20: f8bd 302c ldrh.w r3, [sp, #44] ; 0x2c 4a24: 81bb strh r3, [r7, #12] 4a26: e718 b.n 485a LV_ASSERT_MEM(tr); 4a28: 4b21 ldr r3, [pc, #132] ; (4ab0 ) 4a2a: 9300 str r3, [sp, #0] 4a2c: f640 62c6 movw r2, #3782 ; 0xec6 4a30: 490e ldr r1, [pc, #56] ; (4a6c ) 4a32: 2003 movs r0, #3 4a34: 4c0e ldr r4, [pc, #56] ; (4a70 ) 4a36: 47a0 blx r4 4a38: 463a mov r2, r7 4a3a: 2300 movs r3, #0 4a3c: 481d ldr r0, [pc, #116] ; (4ab4 ) 4a3e: 490e ldr r1, [pc, #56] ; (4a78 ) 4a40: 4788 blx r1 4a42: e7fe b.n 4a42 LV_ASSERT_MEM(tr); 4a44: 4b1a ldr r3, [pc, #104] ; (4ab0 ) 4a46: 9300 str r3, [sp, #0] 4a48: f640 62db movw r2, #3803 ; 0xedb 4a4c: 4907 ldr r1, [pc, #28] ; (4a6c ) 4a4e: 2003 movs r0, #3 4a50: 4c07 ldr r4, [pc, #28] ; (4a70 ) 4a52: 47a0 blx r4 4a54: 463a mov r2, r7 4a56: 2300 movs r3, #0 4a58: 4816 ldr r0, [pc, #88] ; (4ab4 ) 4a5a: 4907 ldr r1, [pc, #28] ; (4a78 ) 4a5c: 4788 blx r1 4a5e: e7fe b.n 4a5e 4a60: 00002299 .word 0x00002299 4a64: 000044bd .word 0x000044bd 4a68: 000246b8 .word 0x000246b8 4a6c: 000247c4 .word 0x000247c4 4a70: 00012245 .word 0x00012245 4a74: 00024824 .word 0x00024824 4a78: 000022a1 .word 0x000022a1 4a7c: 000068c9 .word 0x000068c9 4a80: 20006d3c .word 0x20006d3c 4a84: 00011ef9 .word 0x00011ef9 4a88: 000112cd .word 0x000112cd 4a8c: 00003c95 .word 0x00003c95 4a90: 00004729 .word 0x00004729 4a94: 00003109 .word 0x00003109 4a98: 00011389 .word 0x00011389 4a9c: 0000721d .word 0x0000721d 4aa0: 00002fe5 .word 0x00002fe5 4aa4: 000070cf .word 0x000070cf 4aa8: 000045f5 .word 0x000045f5 4aac: 00006b51 .word 0x00006b51 4ab0: 000246cc .word 0x000246cc 4ab4: 00023fc0 .word 0x00023fc0 4ab8: 00004569 .word 0x00004569 4abc: 00006a0d .word 0x00006a0d 4ac0: 00002f45 .word 0x00002f45 obj->state = prev_state; 4ac4: f88a 803d strb.w r8, [sl, #61] ; 0x3d style_list->skip_trans = 1; 4ac8: 7973 ldrb r3, [r6, #5] 4aca: f043 0304 orr.w r3, r3, #4 4ace: 7173 strb r3, [r6, #5] const void * p1 = _lv_obj_get_style_ptr(obj, part, prop); 4ad0: 4622 mov r2, r4 4ad2: f8dd b00c ldr.w fp, [sp, #12] 4ad6: 4659 mov r1, fp 4ad8: 4650 mov r0, sl 4ada: 4f5c ldr r7, [pc, #368] ; (4c4c ) 4adc: 47b8 blx r7 4ade: 900c str r0, [sp, #48] ; 0x30 obj->state = new_state; 4ae0: f88a 903d strb.w r9, [sl, #61] ; 0x3d const void * p2 = _lv_obj_get_style_ptr(obj, part, prop); 4ae4: 4622 mov r2, r4 4ae6: f8cd b00c str.w fp, [sp, #12] 4aea: 4659 mov r1, fp 4aec: 4650 mov r0, sl 4aee: 47b8 blx r7 4af0: 4683 mov fp, r0 4af2: a920 add r1, sp, #128 ; 0x80 4af4: f841 0d40 str.w r0, [r1, #-64]! style_list->skip_trans = 0; 4af8: 7973 ldrb r3, [r6, #5] 4afa: f36f 0382 bfc r3, #2, #1 4afe: 7173 strb r3, [r6, #5] if(memcmp(&p1, &p2, sizeof(const void *)) == 0) return NULL; 4b00: 2204 movs r2, #4 4b02: a80c add r0, sp, #48 ; 0x30 4b04: 4b52 ldr r3, [pc, #328] ; (4c50 ) 4b06: 4798 blx r3 4b08: 2800 cmp r0, #0 4b0a: f43f aed2 beq.w 48b2 obj->state = prev_state; 4b0e: f88a 803d strb.w r8, [sl, #61] ; 0x3d p1 = _lv_obj_get_style_ptr(obj, part, prop); 4b12: 4622 mov r2, r4 4b14: 9903 ldr r1, [sp, #12] 4b16: 4650 mov r0, sl 4b18: 47b8 blx r7 4b1a: 4606 mov r6, r0 4b1c: 900c str r0, [sp, #48] ; 0x30 obj->state = new_state; 4b1e: f88a 903d strb.w r9, [sl, #61] ; 0x3d _lv_style_set_ptr(style_trans, prop, p1); /*Be sure `trans_style` has a valid value */ 4b22: 4602 mov r2, r0 4b24: 4621 mov r1, r4 4b26: 9804 ldr r0, [sp, #16] 4b28: 4b4a ldr r3, [pc, #296] ; (4c54 ) 4b2a: 4798 blx r3 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 4b2c: 484a ldr r0, [pc, #296] ; (4c58 ) 4b2e: 4b4b ldr r3, [pc, #300] ; (4c5c ) 4b30: 4798 blx r3 4b32: 4607 mov r7, r0 LV_ASSERT_MEM(tr); 4b34: 4b4a ldr r3, [pc, #296] ; (4c60 ) 4b36: 4798 blx r3 4b38: b130 cbz r0, 4b48 if(tr == NULL) return NULL; 4b3a: 2f00 cmp r7, #0 4b3c: f43f aeb9 beq.w 48b2 tr->start_value._ptr = p1; 4b40: 60be str r6, [r7, #8] tr->end_value._ptr = p2; 4b42: f8c7 b00c str.w fp, [r7, #12] 4b46: e688 b.n 485a LV_ASSERT_MEM(tr); 4b48: 4b46 ldr r3, [pc, #280] ; (4c64 ) 4b4a: 9300 str r3, [sp, #0] 4b4c: f640 62ef movw r2, #3823 ; 0xeef 4b50: 4945 ldr r1, [pc, #276] ; (4c68 ) 4b52: 2003 movs r0, #3 4b54: 4c45 ldr r4, [pc, #276] ; (4c6c ) 4b56: 47a0 blx r4 4b58: 463a mov r2, r7 4b5a: 2300 movs r3, #0 4b5c: 4844 ldr r0, [pc, #272] ; (4c70 ) 4b5e: 4945 ldr r1, [pc, #276] ; (4c74 ) 4b60: 4788 blx r1 4b62: e7fe b.n 4b62 4b64: 9b06 ldr r3, [sp, #24] 4b66: 3301 adds r3, #1 4b68: 9306 str r3, [sp, #24] for(part = 0; part < _LV_OBJ_PART_REAL_LAST; part++) { 4b6a: 2b40 cmp r3, #64 ; 0x40 4b6c: d045 beq.n 4bfa 4b6e: f89d 3018 ldrb.w r3, [sp, #24] 4b72: 9303 str r3, [sp, #12] lv_style_list_t * style_list = lv_obj_get_style_list(obj, part); 4b74: 4619 mov r1, r3 4b76: 4650 mov r0, sl 4b78: 4b3f ldr r3, [pc, #252] ; (4c78 ) 4b7a: 4798 blx r3 if(style_list == NULL) break; /*No more style lists*/ 4b7c: 9007 str r0, [sp, #28] 4b7e: 2800 cmp r0, #0 4b80: d03b beq.n 4bfa if(style_list->ignore_trans) continue; 4b82: 7943 ldrb r3, [r0, #5] 4b84: f013 0f08 tst.w r3, #8 4b88: d1ec bne.n 4b64 4b8a: 22b0 movs r2, #176 ; 0xb0 4b8c: 9c03 ldr r4, [sp, #12] 4b8e: 4621 mov r1, r4 4b90: 4650 mov r0, sl 4b92: 47a8 blx r5 4b94: 900a str r0, [sp, #40] ; 0x28 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_DELAY, transition_delay, lv_style_int_t, _int, scalar) 4b96: 22b1 movs r2, #177 ; 0xb1 4b98: 4621 mov r1, r4 4b9a: 4650 mov r0, sl 4b9c: 47a8 blx r5 4b9e: 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) 4ba0: 22be movs r2, #190 ; 0xbe 4ba2: 4621 mov r1, r4 4ba4: 4650 mov r0, sl 4ba6: 4b29 ldr r3, [pc, #164] ; (4c4c ) 4ba8: 4798 blx r3 4baa: 9008 str r0, [sp, #32] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_1, transition_prop_1, lv_style_int_t, _int, scalar) 4bac: 22b2 movs r2, #178 ; 0xb2 4bae: 4621 mov r1, r4 4bb0: 4650 mov r0, sl 4bb2: 47a8 blx r5 props[0] = lv_obj_get_style_transition_prop_1(obj, part); 4bb4: 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) 4bb8: 22b3 movs r2, #179 ; 0xb3 4bba: 4621 mov r1, r4 4bbc: 4650 mov r0, sl 4bbe: 47a8 blx r5 props[1] = lv_obj_get_style_transition_prop_2(obj, part); 4bc0: 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) 4bc4: 22b4 movs r2, #180 ; 0xb4 4bc6: 4621 mov r1, r4 4bc8: 4650 mov r0, sl 4bca: 47a8 blx r5 props[2] = lv_obj_get_style_transition_prop_3(obj, part); 4bcc: 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) 4bd0: 22b5 movs r2, #181 ; 0xb5 4bd2: 4621 mov r1, r4 4bd4: 4650 mov r0, sl 4bd6: 47a8 blx r5 props[3] = lv_obj_get_style_transition_prop_4(obj, part); 4bd8: 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) 4bdc: 22b6 movs r2, #182 ; 0xb6 4bde: 4621 mov r1, r4 4be0: 4650 mov r0, sl 4be2: 47a8 blx r5 props[4] = lv_obj_get_style_transition_prop_5(obj, part); 4be4: 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) 4be8: 22b7 movs r2, #183 ; 0xb7 4bea: 4621 mov r1, r4 4bec: 4650 mov r0, sl 4bee: 47a8 blx r5 props[5] = lv_obj_get_style_transition_prop_6(obj, part); 4bf0: f8ad 003e strh.w r0, [sp, #62] ; 0x3e 4bf4: ab0d add r3, sp, #52 ; 0x34 4bf6: 9305 str r3, [sp, #20] 4bf8: e660 b.n 48bc lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 4bfa: 21ff movs r1, #255 ; 0xff 4bfc: 4650 mov r0, sl 4bfe: 4b1f ldr r3, [pc, #124] ; (4c7c ) 4c00: 4798 blx r3 } 4c02: b021 add sp, #132 ; 0x84 4c04: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} lv_coord_t whalf = lv_obj_get_width(obj) / 2; 4c08: 4650 mov r0, sl 4c0a: 4e1d ldr r6, [pc, #116] ; (4c80 ) 4c0c: 47b0 blx r6 4c0e: eb00 70d0 add.w r0, r0, r0, lsr #31 4c12: f340 074f sbfx r7, r0, #1, #16 lv_coord_t hhalf = lv_obj_get_width(obj) / 2; 4c16: 4650 mov r0, sl 4c18: 47b0 blx r6 4c1a: eb00 70d0 add.w r0, r0, r0, lsr #31 4c1e: f340 034f sbfx r3, r0, #1, #16 if(int1 == LV_RADIUS_CIRCLE) int1 = LV_MATH_MIN(whalf + 1, hhalf + 1); 4c22: 1c5e adds r6, r3, #1 4c24: 1c7a adds r2, r7, #1 4c26: 4296 cmp r6, r2 4c28: bfa8 it ge 4c2a: 4616 movge r6, r2 4c2c: b236 sxth r6, r6 if(int2 == LV_RADIUS_CIRCLE) int2 = LV_MATH_MIN(whalf + 1, hhalf + 1); 4c2e: f647 72ff movw r2, #32767 ; 0x7fff 4c32: 4593 cmp fp, r2 4c34: f47f ae03 bne.w 483e 4c38: f103 0b01 add.w fp, r3, #1 4c3c: 3701 adds r7, #1 4c3e: 45bb cmp fp, r7 4c40: bfa8 it ge 4c42: 46bb movge fp, r7 4c44: fa0f fb8b sxth.w fp, fp 4c48: e5f9 b.n 483e 4c4a: 4770 bx lr 4c4c: 00004689 .word 0x00004689 4c50: 0001b4c5 .word 0x0001b4c5 4c54: 00006c81 .word 0x00006c81 4c58: 20006d3c .word 0x20006d3c 4c5c: 00011ef9 .word 0x00011ef9 4c60: 00002299 .word 0x00002299 4c64: 000246cc .word 0x000246cc 4c68: 000247c4 .word 0x000247c4 4c6c: 00012245 .word 0x00012245 4c70: 00023fc0 .word 0x00023fc0 4c74: 000022a1 .word 0x000022a1 4c78: 00002fe5 .word 0x00002fe5 4c7c: 00003a81 .word 0x00003a81 4c80: 00002f45 .word 0x00002f45 00004c84 : { 4c84: b530 push {r4, r5, lr} 4c86: b083 sub sp, #12 4c88: 4605 mov r5, r0 4c8a: 460c mov r4, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4c8c: 4b0d ldr r3, [pc, #52] ; (4cc4 ) 4c8e: 4798 blx r3 4c90: b150 cbz r0, 4ca8 lv_state_t new_state = obj->state | state; 4c92: f895 303d ldrb.w r3, [r5, #61] ; 0x3d 4c96: ea43 0104 orr.w r1, r3, r4 if(obj->state != new_state) { 4c9a: 428b cmp r3, r1 4c9c: d002 beq.n 4ca4 lv_obj_set_state(obj, new_state); 4c9e: 4628 mov r0, r5 4ca0: 4b09 ldr r3, [pc, #36] ; (4cc8 ) 4ca2: 4798 blx r3 } 4ca4: b003 add sp, #12 4ca6: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4ca8: 4b08 ldr r3, [pc, #32] ; (4ccc ) 4caa: 9300 str r3, [sp, #0] 4cac: f240 627e movw r2, #1662 ; 0x67e 4cb0: 4907 ldr r1, [pc, #28] ; (4cd0 ) 4cb2: 2003 movs r0, #3 4cb4: 4c07 ldr r4, [pc, #28] ; (4cd4 ) 4cb6: 47a0 blx r4 4cb8: 462a mov r2, r5 4cba: 2300 movs r3, #0 4cbc: 4806 ldr r0, [pc, #24] ; (4cd8 ) 4cbe: 4907 ldr r1, [pc, #28] ; (4cdc ) 4cc0: 4788 blx r1 4cc2: e7fe b.n 4cc2 4cc4: 00002299 .word 0x00002299 4cc8: 0000479d .word 0x0000479d 4ccc: 000246dc .word 0x000246dc 4cd0: 000247c4 .word 0x000247c4 4cd4: 00012245 .word 0x00012245 4cd8: 00024824 .word 0x00024824 4cdc: 000022a1 .word 0x000022a1 00004ce0 : { 4ce0: b530 push {r4, r5, lr} 4ce2: b083 sub sp, #12 4ce4: 4605 mov r5, r0 4ce6: 460c mov r4, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4ce8: 4b0d ldr r3, [pc, #52] ; (4d20 ) 4cea: 4798 blx r3 4cec: b150 cbz r0, 4d04 lv_state_t new_state = obj->state & (~state); 4cee: f895 303d ldrb.w r3, [r5, #61] ; 0x3d 4cf2: ea23 0104 bic.w r1, r3, r4 if(obj->state != new_state) { 4cf6: 428b cmp r3, r1 4cf8: d002 beq.n 4d00 lv_obj_set_state(obj, new_state); 4cfa: 4628 mov r0, r5 4cfc: 4b09 ldr r3, [pc, #36] ; (4d24 ) 4cfe: 4798 blx r3 } 4d00: b003 add sp, #12 4d02: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4d04: 4b08 ldr r3, [pc, #32] ; (4d28 ) 4d06: 9300 str r3, [sp, #0] 4d08: f240 628f movw r2, #1679 ; 0x68f 4d0c: 4907 ldr r1, [pc, #28] ; (4d2c ) 4d0e: 2003 movs r0, #3 4d10: 4c07 ldr r4, [pc, #28] ; (4d30 ) 4d12: 47a0 blx r4 4d14: 462a mov r2, r5 4d16: 2300 movs r3, #0 4d18: 4806 ldr r0, [pc, #24] ; (4d34 ) 4d1a: 4907 ldr r1, [pc, #28] ; (4d38 ) 4d1c: 4788 blx r1 4d1e: e7fe b.n 4d1e 4d20: 00002299 .word 0x00002299 4d24: 0000479d .word 0x0000479d 4d28: 000246f0 .word 0x000246f0 4d2c: 000247c4 .word 0x000247c4 4d30: 00012245 .word 0x00012245 4d34: 00024824 .word 0x00024824 4d38: 000022a1 .word 0x000022a1 00004d3c : { 4d3c: b530 push {r4, r5, lr} 4d3e: b083 sub sp, #12 4d40: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4d42: 4b0a ldr r3, [pc, #40] ; (4d6c ) 4d44: 4798 blx r3 4d46: b110 cbz r0, 4d4e } 4d48: 69e0 ldr r0, [r4, #28] 4d4a: b003 add sp, #12 4d4c: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4d4e: 4b08 ldr r3, [pc, #32] ; (4d70 ) 4d50: 9300 str r3, [sp, #0] 4d52: f640 22f5 movw r2, #2805 ; 0xaf5 4d56: 4907 ldr r1, [pc, #28] ; (4d74 ) 4d58: 2003 movs r0, #3 4d5a: 4d07 ldr r5, [pc, #28] ; (4d78 ) 4d5c: 47a8 blx r5 4d5e: 4622 mov r2, r4 4d60: 2300 movs r3, #0 4d62: 4806 ldr r0, [pc, #24] ; (4d7c ) 4d64: 4906 ldr r1, [pc, #24] ; (4d80 ) 4d66: 4788 blx r1 4d68: e7fe b.n 4d68 4d6a: bf00 nop 4d6c: 00002299 .word 0x00002299 4d70: 00024704 .word 0x00024704 4d74: 000247c4 .word 0x000247c4 4d78: 00012245 .word 0x00012245 4d7c: 00024824 .word 0x00024824 4d80: 000022a1 .word 0x000022a1 00004d84 : { 4d84: b530 push {r4, r5, lr} 4d86: b083 sub sp, #12 4d88: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4d8a: 4b0a ldr r3, [pc, #40] ; (4db4 ) 4d8c: 4798 blx r3 4d8e: b110 cbz r0, 4d96 } 4d90: 6a60 ldr r0, [r4, #36] ; 0x24 4d92: b003 add sp, #12 4d94: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4d96: 4b08 ldr r3, [pc, #32] ; (4db8 ) 4d98: 9300 str r3, [sp, #0] 4d9a: f640 321e movw r2, #2846 ; 0xb1e 4d9e: 4907 ldr r1, [pc, #28] ; (4dbc ) 4da0: 2003 movs r0, #3 4da2: 4d07 ldr r5, [pc, #28] ; (4dc0 ) 4da4: 47a8 blx r5 4da6: 4622 mov r2, r4 4da8: 2300 movs r3, #0 4daa: 4806 ldr r0, [pc, #24] ; (4dc4 ) 4dac: 4906 ldr r1, [pc, #24] ; (4dc8 ) 4dae: 4788 blx r1 4db0: e7fe b.n 4db0 4db2: bf00 nop 4db4: 00002299 .word 0x00002299 4db8: 00024748 .word 0x00024748 4dbc: 000247c4 .word 0x000247c4 4dc0: 00012245 .word 0x00012245 4dc4: 00024824 .word 0x00024824 4dc8: 000022a1 .word 0x000022a1 00004dcc : { 4dcc: b530 push {r4, r5, lr} 4dce: b083 sub sp, #12 4dd0: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4dd2: 4b0a ldr r3, [pc, #40] ; (4dfc ) 4dd4: 4798 blx r3 4dd6: b110 cbz r0, 4dde } 4dd8: 6ba0 ldr r0, [r4, #56] ; 0x38 4dda: b003 add sp, #12 4ddc: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4dde: 4b08 ldr r3, [pc, #32] ; (4e00 ) 4de0: 9300 str r3, [sp, #0] 4de2: f640 326f movw r2, #2927 ; 0xb6f 4de6: 4907 ldr r1, [pc, #28] ; (4e04 ) 4de8: 2003 movs r0, #3 4dea: 4d07 ldr r5, [pc, #28] ; (4e08 ) 4dec: 47a8 blx r5 4dee: 4622 mov r2, r4 4df0: 2300 movs r3, #0 4df2: 4806 ldr r0, [pc, #24] ; (4e0c ) 4df4: 4906 ldr r1, [pc, #24] ; (4e10 ) 4df6: 4788 blx r1 4df8: e7fe b.n 4df8 4dfa: bf00 nop 4dfc: 00002299 .word 0x00002299 4e00: 0002476c .word 0x0002476c 4e04: 000247c4 .word 0x000247c4 4e08: 00012245 .word 0x00012245 4e0c: 00024824 .word 0x00024824 4e10: 000022a1 .word 0x000022a1 00004e14 : { 4e14: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 4e18: 4605 mov r5, r0 lv_event_send(obj, LV_EVENT_DELETE, NULL); 4e1a: 2200 movs r2, #0 4e1c: 2115 movs r1, #21 4e1e: 4b3c ldr r3, [pc, #240] ; (4f10 ) 4e20: 4798 blx r3 lv_group_t * group = lv_obj_get_group(obj); 4e22: 4628 mov r0, r5 4e24: 4b3b ldr r3, [pc, #236] ; (4f14 ) 4e26: 4798 blx r3 if(group) lv_group_remove_obj(obj); 4e28: 4607 mov r7, r0 4e2a: b110 cbz r0, 4e32 4e2c: 4628 mov r0, r5 4e2e: 4b3a ldr r3, [pc, #232] ; (4f18 ) 4e30: 4798 blx r3 lv_anim_del(obj, NULL); 4e32: 2100 movs r1, #0 4e34: 4628 mov r0, r5 4e36: 4b39 ldr r3, [pc, #228] ; (4f1c ) 4e38: 4798 blx r3 trans_del(obj, 0xFF, 0xFF, NULL); 4e3a: 2300 movs r3, #0 4e3c: 22ff movs r2, #255 ; 0xff 4e3e: 4611 mov r1, r2 4e40: 4628 mov r0, r5 4e42: 4c37 ldr r4, [pc, #220] ; (4f20 ) 4e44: 47a0 blx r4 i = _lv_ll_get_head(&(obj->child_ll)); 4e46: f105 0804 add.w r8, r5, #4 4e4a: 4640 mov r0, r8 4e4c: 4b35 ldr r3, [pc, #212] ; (4f24 ) 4e4e: 4798 blx r3 while(i != NULL) { 4e50: 4604 mov r4, r0 4e52: b158 cbz r0, 4e6c i_next = _lv_ll_get_next(&(obj->child_ll), i); 4e54: f8df 90e8 ldr.w r9, [pc, #232] ; 4f40 4e58: 4621 mov r1, r4 4e5a: 4640 mov r0, r8 4e5c: 47c8 blx r9 4e5e: 4606 mov r6, r0 obj_del_core(i); 4e60: 4620 mov r0, r4 4e62: f7ff ffd7 bl 4e14 i = i_next; 4e66: 4634 mov r4, r6 while(i != NULL) { 4e68: 2e00 cmp r6, #0 4e6a: d1f5 bne.n 4e58 #endif static void lv_event_mark_deleted(lv_obj_t * obj) { lv_event_temp_data_t * t = event_temp_data_head; 4e6c: 4b2e ldr r3, [pc, #184] ; (4f28 ) 4e6e: 685b ldr r3, [r3, #4] while(t) { 4e70: b13b cbz r3, 4e82 if(t->obj == obj) t->deleted = true; 4e72: 2101 movs r1, #1 4e74: 681a ldr r2, [r3, #0] 4e76: 4295 cmp r5, r2 4e78: bf08 it eq 4e7a: 7119 strbeq r1, [r3, #4] t = t->prev; 4e7c: 689b ldr r3, [r3, #8] while(t) { 4e7e: 2b00 cmp r3, #0 4e80: d1f8 bne.n 4e74 lv_indev_t * indev = lv_indev_get_next(NULL); 4e82: 2000 movs r0, #0 4e84: 4b29 ldr r3, [pc, #164] ; (4f2c ) 4e86: 4798 blx r3 while(indev) { 4e88: 4604 mov r4, r0 4e8a: b310 cbz r0, 4ed2 lv_indev_reset(indev, obj); 4e8c: f8df 80b4 ldr.w r8, [pc, #180] ; 4f44 if(indev->group == group && obj == lv_indev_get_obj_act()) { 4e90: f8df 90b4 ldr.w r9, [pc, #180] ; 4f48 indev = lv_indev_get_next(indev); 4e94: 4e25 ldr r6, [pc, #148] ; (4f2c ) 4e96: e00e b.n 4eb6 lv_indev_reset(indev, obj); 4e98: 4629 mov r1, r5 4e9a: 4620 mov r0, r4 4e9c: 47c0 blx r8 if(indev->proc.types.pointer.last_pressed == obj) { 4e9e: 6be3 ldr r3, [r4, #60] ; 0x3c 4ea0: 429d cmp r5, r3 indev->proc.types.pointer.last_pressed = NULL; 4ea2: bf04 itt eq 4ea4: 2300 moveq r3, #0 4ea6: 63e3 streq r3, [r4, #60] ; 0x3c if(indev->group == group && obj == lv_indev_get_obj_act()) { 4ea8: 6da3 ldr r3, [r4, #88] ; 0x58 4eaa: 429f cmp r7, r3 4eac: d00a beq.n 4ec4 indev = lv_indev_get_next(indev); 4eae: 4620 mov r0, r4 4eb0: 47b0 blx r6 while(indev) { 4eb2: 4604 mov r4, r0 4eb4: b168 cbz r0, 4ed2 if(indev->proc.types.pointer.act_obj == obj || indev->proc.types.pointer.last_obj == obj) { 4eb6: 6b63 ldr r3, [r4, #52] ; 0x34 4eb8: 429d cmp r5, r3 4eba: d0ed beq.n 4e98 4ebc: 6ba3 ldr r3, [r4, #56] ; 0x38 4ebe: 429d cmp r5, r3 4ec0: d1ed bne.n 4e9e 4ec2: e7e9 b.n 4e98 if(indev->group == group && obj == lv_indev_get_obj_act()) { 4ec4: 47c8 blx r9 4ec6: 4285 cmp r5, r0 4ec8: d1f1 bne.n 4eae lv_indev_reset(indev, obj); 4eca: 4629 mov r1, r5 4ecc: 4620 mov r0, r4 4ece: 47c0 blx r8 4ed0: e7ed b.n 4eae obj->signal_cb(obj, LV_SIGNAL_CLEANUP, NULL); 4ed2: 69eb ldr r3, [r5, #28] 4ed4: 2200 movs r2, #0 4ed6: 4611 mov r1, r2 4ed8: 4628 mov r0, r5 4eda: 4798 blx r3 lv_obj_t * par = lv_obj_get_parent(obj); 4edc: 4628 mov r0, r5 4ede: 4b14 ldr r3, [pc, #80] ; (4f30 ) 4ee0: 4798 blx r3 if(par == NULL) { /*It is a screen*/ 4ee2: b160 cbz r0, 4efe _lv_ll_remove(&(par->child_ll), obj); 4ee4: 4629 mov r1, r5 4ee6: 3004 adds r0, #4 4ee8: 4b12 ldr r3, [pc, #72] ; (4f34 ) 4eea: 4798 blx r3 if(obj->ext_attr != NULL) lv_mem_free(obj->ext_attr); 4eec: 6a68 ldr r0, [r5, #36] ; 0x24 4eee: b108 cbz r0, 4ef4 4ef0: 4b11 ldr r3, [pc, #68] ; (4f38 ) 4ef2: 4798 blx r3 lv_mem_free(obj); /*Free the object itself*/ 4ef4: 4628 mov r0, r5 4ef6: 4b10 ldr r3, [pc, #64] ; (4f38 ) 4ef8: 4798 blx r3 4efa: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} lv_disp_t * d = lv_obj_get_disp(obj); 4efe: 4628 mov r0, r5 4f00: 4b0e ldr r3, [pc, #56] ; (4f3c ) 4f02: 4798 blx r3 _lv_ll_remove(&d->scr_ll, obj); 4f04: 4629 mov r1, r5 4f06: 3030 adds r0, #48 ; 0x30 4f08: 4b0a ldr r3, [pc, #40] ; (4f34 ) 4f0a: 4798 blx r3 4f0c: e7ee b.n 4eec 4f0e: bf00 nop 4f10: 00002ab5 .word 0x00002ab5 4f14: 00004dcd .word 0x00004dcd 4f18: 00002661 .word 0x00002661 4f1c: 00011311 .word 0x00011311 4f20: 00003011 .word 0x00003011 4f24: 00011f91 .word 0x00011f91 4f28: 2000267c .word 0x2000267c 4f2c: 00011009 .word 0x00011009 4f30: 00002c65 .word 0x00002c65 4f34: 0001207d .word 0x0001207d 4f38: 000124ad .word 0x000124ad 4f3c: 00002d09 .word 0x00002d09 4f40: 00011fa5 .word 0x00011fa5 4f44: 0000275d .word 0x0000275d 4f48: 000027e9 .word 0x000027e9 00004f4c : { 4f4c: b570 push {r4, r5, r6, lr} 4f4e: b082 sub sp, #8 4f50: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4f52: 4b19 ldr r3, [pc, #100] ; (4fb8 ) 4f54: 4798 blx r3 4f56: b968 cbnz r0, 4f74 4f58: 4b18 ldr r3, [pc, #96] ; (4fbc ) 4f5a: 9300 str r3, [sp, #0] 4f5c: f240 1293 movw r2, #403 ; 0x193 4f60: 4917 ldr r1, [pc, #92] ; (4fc0 ) 4f62: 2003 movs r0, #3 4f64: 4d17 ldr r5, [pc, #92] ; (4fc4 ) 4f66: 47a8 blx r5 4f68: 4622 mov r2, r4 4f6a: 2300 movs r3, #0 4f6c: 4816 ldr r0, [pc, #88] ; (4fc8 ) 4f6e: 4917 ldr r1, [pc, #92] ; (4fcc ) 4f70: 4788 blx r1 4f72: e7fe b.n 4f72 lv_obj_invalidate(obj); 4f74: 4620 mov r0, r4 4f76: 4b16 ldr r3, [pc, #88] ; (4fd0 ) 4f78: 4798 blx r3 lv_obj_t * par = lv_obj_get_parent(obj); 4f7a: 4620 mov r0, r4 4f7c: 4b15 ldr r3, [pc, #84] ; (4fd4 ) 4f7e: 4798 blx r3 if(par == NULL) { 4f80: 4605 mov r5, r0 4f82: b140 cbz r0, 4f96 obj_del_core(obj); 4f84: 4620 mov r0, r4 4f86: 4b14 ldr r3, [pc, #80] ; (4fd8 ) 4f88: 4798 blx r3 par->signal_cb(par, LV_SIGNAL_CHILD_CHG, NULL); 4f8a: 69eb ldr r3, [r5, #28] 4f8c: 2200 movs r2, #0 4f8e: 2101 movs r1, #1 4f90: 4628 mov r0, r5 4f92: 4798 blx r3 4f94: e00c b.n 4fb0 disp = lv_obj_get_disp(obj); 4f96: 4620 mov r0, r4 4f98: 4b10 ldr r3, [pc, #64] ; (4fdc ) 4f9a: 4798 blx r3 if(!disp) return LV_RES_INV; /*Shouldn't happen*/ 4f9c: 4605 mov r5, r0 4f9e: b138 cbz r0, 4fb0 if(disp->act_scr == obj) act_scr_del = true; 4fa0: 6bc6 ldr r6, [r0, #60] ; 0x3c obj_del_core(obj); 4fa2: 4620 mov r0, r4 4fa4: 4b0c ldr r3, [pc, #48] ; (4fd8 ) 4fa6: 4798 blx r3 if(act_scr_del) { 4fa8: 42b4 cmp r4, r6 4faa: d101 bne.n 4fb0 disp->act_scr = NULL; 4fac: 2300 movs r3, #0 4fae: 63eb str r3, [r5, #60] ; 0x3c } 4fb0: 2000 movs r0, #0 4fb2: b002 add sp, #8 4fb4: bd70 pop {r4, r5, r6, pc} 4fb6: bf00 nop 4fb8: 00002299 .word 0x00002299 4fbc: 00024780 .word 0x00024780 4fc0: 000247c4 .word 0x000247c4 4fc4: 00012245 .word 0x00012245 4fc8: 00024824 .word 0x00024824 4fcc: 000022a1 .word 0x000022a1 4fd0: 00003309 .word 0x00003309 4fd4: 00002c65 .word 0x00002c65 4fd8: 00004e15 .word 0x00004e15 4fdc: 00002d09 .word 0x00002d09 00004fe0 : { 4fe0: b530 push {r4, r5, lr} 4fe2: b083 sub sp, #12 4fe4: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4fe6: 4b0e ldr r3, [pc, #56] ; (5020 ) 4fe8: 4798 blx r3 4fea: b148 cbz r0, 5000 if(obj->group_p) { 4fec: 6ba0 ldr r0, [r4, #56] ; 0x38 4fee: b1a8 cbz r0, 501c if(lv_group_get_focused(obj->group_p) == obj) return true; 4ff0: 4b0c ldr r3, [pc, #48] ; (5024 ) 4ff2: 4798 blx r3 4ff4: 4284 cmp r4, r0 4ff6: bf14 ite ne 4ff8: 2000 movne r0, #0 4ffa: 2001 moveq r0, #1 } 4ffc: b003 add sp, #12 4ffe: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 5000: 4b09 ldr r3, [pc, #36] ; (5028 ) 5002: 9300 str r3, [sp, #0] 5004: f44f 6238 mov.w r2, #2944 ; 0xb80 5008: 4908 ldr r1, [pc, #32] ; (502c ) 500a: 2003 movs r0, #3 500c: 4d08 ldr r5, [pc, #32] ; (5030 ) 500e: 47a8 blx r5 5010: 4622 mov r2, r4 5012: 2300 movs r3, #0 5014: 4807 ldr r0, [pc, #28] ; (5034 ) 5016: 4908 ldr r1, [pc, #32] ; (5038 ) 5018: 4788 blx r1 501a: e7fe b.n 501a return false; 501c: 2000 movs r0, #0 501e: e7ed b.n 4ffc 5020: 00002299 .word 0x00002299 5024: 00002731 .word 0x00002731 5028: 000247b0 .word 0x000247b0 502c: 000247c4 .word 0x000247c4 5030: 00012245 .word 0x00012245 5034: 00024824 .word 0x00024824 5038: 000022a1 .word 0x000022a1 0000503c : { 503c: b500 push {lr} 503e: b083 sub sp, #12 ext_area.x1 = obj->coords.x1 - obj->ext_click_pad_hor; 5040: f890 3030 ldrb.w r3, [r0, #48] ; 0x30 5044: 8a02 ldrh r2, [r0, #16] 5046: 1ad2 subs r2, r2, r3 5048: f8ad 2000 strh.w r2, [sp] ext_area.x2 = obj->coords.x2 + obj->ext_click_pad_hor; 504c: 8a82 ldrh r2, [r0, #20] 504e: 4413 add r3, r2 5050: f8ad 3004 strh.w r3, [sp, #4] ext_area.y1 = obj->coords.y1 - obj->ext_click_pad_ver; 5054: f890 3031 ldrb.w r3, [r0, #49] ; 0x31 5058: 8a42 ldrh r2, [r0, #18] 505a: 1ad2 subs r2, r2, r3 505c: f8ad 2002 strh.w r2, [sp, #2] ext_area.y2 = obj->coords.y2 + obj->ext_click_pad_ver; 5060: 8ac2 ldrh r2, [r0, #22] 5062: 4413 add r3, r2 5064: f8ad 3006 strh.w r3, [sp, #6] if(!_lv_area_is_point_on(&ext_area, point, 0)) { 5068: 2200 movs r2, #0 506a: 4668 mov r0, sp 506c: 4b02 ldr r3, [pc, #8] ; (5078 ) 506e: 4798 blx r3 } 5070: b003 add sp, #12 5072: f85d fb04 ldr.w pc, [sp], #4 5076: bf00 nop 5078: 000115a1 .word 0x000115a1 0000507c : if(buf->type[i] == NULL) break; 507c: 6803 ldr r3, [r0, #0] 507e: b17b cbz r3, 50a0 { 5080: b410 push {r4} 5082: 1d02 adds r2, r0, #4 for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/ 5084: 2301 movs r3, #1 if(buf->type[i] == NULL) break; 5086: f852 4b04 ldr.w r4, [r2], #4 508a: b11c cbz r4, 5094 for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/ 508c: 3301 adds r3, #1 508e: b2db uxtb r3, r3 5090: 2b07 cmp r3, #7 5092: d1f8 bne.n 5086 buf->type[i] = name; 5094: f840 1023 str.w r1, [r0, r3, lsl #2] } 5098: 2001 movs r0, #1 509a: f85d 4b04 ldr.w r4, [sp], #4 509e: 4770 bx lr for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/ 50a0: 2300 movs r3, #0 buf->type[i] = name; 50a2: f840 1023 str.w r1, [r0, r3, lsl #2] } 50a6: 2001 movs r0, #1 50a8: 4770 bx lr ... 000050ac : { 50ac: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 50b0: 4605 mov r5, r0 50b2: 460e mov r6, r1 50b4: 4614 mov r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 50b6: 2201 movs r2, #1 50b8: 4ba8 ldr r3, [pc, #672] ; (535c ) 50ba: 4798 blx r3 draw_dsc->radius = lv_obj_get_style_radius(obj, part); 50bc: 8020 strh r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 50be: f248 020c movw r2, #32780 ; 0x800c 50c2: 4631 mov r1, r6 50c4: 4628 mov r0, r5 50c6: 4ba6 ldr r3, [pc, #664] ; (5360 ) 50c8: 4798 blx r3 if(opa_scale <= LV_OPA_MIN) { 50ca: 2805 cmp r0, #5 50cc: d942 bls.n 5154 50ce: 4607 mov r7, r0 if(draw_dsc->bg_opa != LV_OPA_TRANSP) { 50d0: 7b23 ldrb r3, [r4, #12] 50d2: 2b00 cmp r3, #0 50d4: d149 bne.n 516a if(draw_dsc->border_opa != LV_OPA_TRANSP) { 50d6: 7d23 ldrb r3, [r4, #20] 50d8: 2b00 cmp r3, #0 50da: d176 bne.n 51ca if(draw_dsc->outline_opa != LV_OPA_TRANSP) { 50dc: 7f23 ldrb r3, [r4, #28] 50de: 2b00 cmp r3, #0 50e0: f040 8098 bne.w 5214 if(draw_dsc->pattern_opa != LV_OPA_TRANSP) { 50e4: f894 3036 ldrb.w r3, [r4, #54] ; 0x36 50e8: 2b00 cmp r3, #0 50ea: f040 80b8 bne.w 525e if(draw_dsc->shadow_opa > LV_OPA_MIN) { 50ee: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 50f2: 2b05 cmp r3, #5 50f4: f200 8101 bhi.w 52fa if(draw_dsc->value_opa > LV_OPA_MIN) { 50f8: f894 3044 ldrb.w r3, [r4, #68] ; 0x44 50fc: 2b05 cmp r3, #5 50fe: f200 8137 bhi.w 5370 if(opa_scale < LV_OPA_MAX) { 5102: 2ff9 cmp r7, #249 ; 0xf9 5104: d824 bhi.n 5150 draw_dsc->bg_opa = (uint16_t)((uint16_t)draw_dsc->bg_opa * opa_scale) >> 8; 5106: b2bf uxth r7, r7 5108: 7b23 ldrb r3, [r4, #12] 510a: fb13 f307 smulbb r3, r3, r7 510e: f3c3 2307 ubfx r3, r3, #8, #8 5112: 7323 strb r3, [r4, #12] draw_dsc->border_opa = (uint16_t)((uint16_t)draw_dsc->border_opa * opa_scale) >> 8; 5114: 7d23 ldrb r3, [r4, #20] 5116: fb13 f307 smulbb r3, r3, r7 511a: f3c3 2307 ubfx r3, r3, #8, #8 511e: 7523 strb r3, [r4, #20] draw_dsc->shadow_opa = (uint16_t)((uint16_t)draw_dsc->shadow_opa * opa_scale) >> 8; 5120: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 5124: fb13 f307 smulbb r3, r3, r7 5128: f3c3 2307 ubfx r3, r3, #8, #8 512c: f884 3028 strb.w r3, [r4, #40] ; 0x28 draw_dsc->pattern_opa = (uint16_t)((uint16_t)draw_dsc->pattern_opa * opa_scale) >> 8; 5130: f894 3036 ldrb.w r3, [r4, #54] ; 0x36 5134: fb13 f307 smulbb r3, r3, r7 5138: f3c3 2307 ubfx r3, r3, #8, #8 513c: f884 3036 strb.w r3, [r4, #54] ; 0x36 draw_dsc->value_opa = (uint16_t)((uint16_t)draw_dsc->value_opa * opa_scale) >> 8; 5140: f894 3044 ldrb.w r3, [r4, #68] ; 0x44 5144: fb13 f707 smulbb r7, r3, r7 5148: f3c7 2707 ubfx r7, r7, #8, #8 514c: f884 7044 strb.w r7, [r4, #68] ; 0x44 5150: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} draw_dsc->bg_opa = LV_OPA_TRANSP; 5154: 2300 movs r3, #0 5156: 7323 strb r3, [r4, #12] draw_dsc->border_opa = LV_OPA_TRANSP; 5158: 7523 strb r3, [r4, #20] draw_dsc->shadow_opa = LV_OPA_TRANSP; 515a: f884 3028 strb.w r3, [r4, #40] ; 0x28 draw_dsc->pattern_opa = LV_OPA_TRANSP; 515e: f884 3036 strb.w r3, [r4, #54] ; 0x36 draw_dsc->value_opa = LV_OPA_TRANSP; 5162: f884 3044 strb.w r3, [r4, #68] ; 0x44 return; 5166: 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) 516a: 222c movs r2, #44 ; 0x2c 516c: 4631 mov r1, r6 516e: 4628 mov r0, r5 5170: 4b7b ldr r3, [pc, #492] ; (5360 ) 5172: 4798 blx r3 draw_dsc->bg_opa = lv_obj_get_style_bg_opa(obj, part); 5174: 7320 strb r0, [r4, #12] if(draw_dsc->bg_opa > LV_OPA_MIN) { 5176: 2805 cmp r0, #5 5178: d9ad bls.n 50d6 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 517a: 2229 movs r2, #41 ; 0x29 517c: 4631 mov r1, r6 517e: 4628 mov r0, r5 5180: 4b78 ldr r3, [pc, #480] ; (5364 ) 5182: 4798 blx r3 draw_dsc->bg_color = lv_obj_get_style_bg_color(obj, part); 5184: 8060 strh r0, [r4, #2] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_DIR, bg_grad_dir, lv_grad_dir_t, _int, scalar) 5186: 2223 movs r2, #35 ; 0x23 5188: 4631 mov r1, r6 518a: 4628 mov r0, r5 518c: 4b73 ldr r3, [pc, #460] ; (535c ) 518e: 4798 blx r3 5190: b2c0 uxtb r0, r0 draw_dsc->bg_grad_dir = lv_obj_get_style_bg_grad_dir(obj, part); 5192: 71a0 strb r0, [r4, #6] if(draw_dsc->bg_grad_dir != LV_GRAD_DIR_NONE) { 5194: b930 cbnz r0, 51a4 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_BLEND_MODE, bg_blend_mode, lv_blend_mode_t, _int, scalar) 5196: 2220 movs r2, #32 5198: 4631 mov r1, r6 519a: 4628 mov r0, r5 519c: 4b6f ldr r3, [pc, #444] ; (535c ) 519e: 4798 blx r3 51a0: 7360 strb r0, [r4, #13] 51a2: e798 b.n 50d6 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_COLOR, bg_grad_color, lv_color_t, _color, nonscalar) 51a4: 222a movs r2, #42 ; 0x2a 51a6: 4631 mov r1, r6 51a8: 4628 mov r0, r5 51aa: 4b6e ldr r3, [pc, #440] ; (5364 ) 51ac: 4798 blx r3 draw_dsc->bg_grad_color = lv_obj_get_style_bg_grad_color(obj, part); 51ae: 80a0 strh r0, [r4, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_MAIN_STOP, bg_main_stop, lv_style_int_t, _int, scalar) 51b0: 2221 movs r2, #33 ; 0x21 51b2: 4631 mov r1, r6 51b4: 4628 mov r0, r5 51b6: f8df 81a4 ldr.w r8, [pc, #420] ; 535c 51ba: 47c0 blx r8 draw_dsc->bg_main_color_stop = lv_obj_get_style_bg_main_stop(obj, part); 51bc: 8120 strh r0, [r4, #8] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_STOP, bg_grad_stop, lv_style_int_t, _int, scalar) 51be: 2222 movs r2, #34 ; 0x22 51c0: 4631 mov r1, r6 51c2: 4628 mov r0, r5 51c4: 47c0 blx r8 draw_dsc->bg_grad_color_stop = lv_obj_get_style_bg_grad_stop(obj, part); 51c6: 8160 strh r0, [r4, #10] 51c8: e7e5 b.n 5196 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 51ca: 2230 movs r2, #48 ; 0x30 51cc: 4631 mov r1, r6 51ce: 4628 mov r0, r5 51d0: 4b62 ldr r3, [pc, #392] ; (535c ) 51d2: 4798 blx r3 draw_dsc->border_width = lv_obj_get_style_border_width(obj, part); 51d4: 8220 strh r0, [r4, #16] if(draw_dsc->border_width) { 51d6: 2800 cmp r0, #0 51d8: d080 beq.n 50dc _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar) 51da: 223c movs r2, #60 ; 0x3c 51dc: 4631 mov r1, r6 51de: 4628 mov r0, r5 51e0: 4b5f ldr r3, [pc, #380] ; (5360 ) 51e2: 4798 blx r3 draw_dsc->border_opa = lv_obj_get_style_border_opa(obj, part); 51e4: 7520 strb r0, [r4, #20] if(draw_dsc->border_opa > LV_OPA_MIN) { 51e6: 2805 cmp r0, #5 51e8: d806 bhi.n 51f8 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_BLEND_MODE, border_blend_mode, lv_blend_mode_t, _int, scalar) 51ea: 2232 movs r2, #50 ; 0x32 51ec: 4631 mov r1, r6 51ee: 4628 mov r0, r5 51f0: 4b5a ldr r3, [pc, #360] ; (535c ) 51f2: 4798 blx r3 51f4: 7560 strb r0, [r4, #21] 51f6: e771 b.n 50dc _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 51f8: 2231 movs r2, #49 ; 0x31 51fa: 4631 mov r1, r6 51fc: 4628 mov r0, r5 51fe: 4b57 ldr r3, [pc, #348] ; (535c ) 5200: 4798 blx r3 draw_dsc->border_side = lv_obj_get_style_border_side(obj, part); 5202: b2c0 uxtb r0, r0 5204: 8260 strh r0, [r4, #18] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 5206: 2239 movs r2, #57 ; 0x39 5208: 4631 mov r1, r6 520a: 4628 mov r0, r5 520c: 4b55 ldr r3, [pc, #340] ; (5364 ) 520e: 4798 blx r3 draw_dsc->border_color = lv_obj_get_style_border_color(obj, part); 5210: 81e0 strh r0, [r4, #14] 5212: e7ea b.n 51ea _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 5214: 2240 movs r2, #64 ; 0x40 5216: 4631 mov r1, r6 5218: 4628 mov r0, r5 521a: 4b50 ldr r3, [pc, #320] ; (535c ) 521c: 4798 blx r3 draw_dsc->outline_width = lv_obj_get_style_outline_width(obj, part); 521e: 8320 strh r0, [r4, #24] if(draw_dsc->outline_width) { 5220: 2800 cmp r0, #0 5222: f43f af5f beq.w 50e4 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 5226: 224c movs r2, #76 ; 0x4c 5228: 4631 mov r1, r6 522a: 4628 mov r0, r5 522c: 4b4c ldr r3, [pc, #304] ; (5360 ) 522e: 4798 blx r3 draw_dsc->outline_opa = lv_obj_get_style_outline_opa(obj, part); 5230: 7720 strb r0, [r4, #28] if(draw_dsc->outline_opa > LV_OPA_MIN) { 5232: 2805 cmp r0, #5 5234: d806 bhi.n 5244 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_BLEND_MODE, outline_blend_mode, lv_blend_mode_t, _int, scalar) 5236: 2242 movs r2, #66 ; 0x42 5238: 4631 mov r1, r6 523a: 4628 mov r0, r5 523c: 4b47 ldr r3, [pc, #284] ; (535c ) 523e: 4798 blx r3 5240: 7760 strb r0, [r4, #29] 5242: e74f b.n 50e4 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar) 5244: 2241 movs r2, #65 ; 0x41 5246: 4631 mov r1, r6 5248: 4628 mov r0, r5 524a: 4b44 ldr r3, [pc, #272] ; (535c ) 524c: 4798 blx r3 draw_dsc->outline_pad = lv_obj_get_style_outline_pad(obj, part); 524e: 8360 strh r0, [r4, #26] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 5250: 2249 movs r2, #73 ; 0x49 5252: 4631 mov r1, r6 5254: 4628 mov r0, r5 5256: 4b43 ldr r3, [pc, #268] ; (5364 ) 5258: 4798 blx r3 draw_dsc->outline_color = lv_obj_get_style_outline_color(obj, part); 525a: 82e0 strh r0, [r4, #22] 525c: e7eb b.n 5236 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_IMAGE, pattern_image, const void *, _ptr, scalar) 525e: 226e movs r2, #110 ; 0x6e 5260: 4631 mov r1, r6 5262: 4628 mov r0, r5 5264: 4b40 ldr r3, [pc, #256] ; (5368 ) 5266: 4798 blx r3 draw_dsc->pattern_image = lv_obj_get_style_pattern_image(obj, part); 5268: 62e0 str r0, [r4, #44] ; 0x2c if(draw_dsc->pattern_image) { 526a: 2800 cmp r0, #0 526c: f43f af3f beq.w 50ee _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_OPA, pattern_opa, lv_opa_t, _opa, scalar) 5270: 226c movs r2, #108 ; 0x6c 5272: 4631 mov r1, r6 5274: 4628 mov r0, r5 5276: 4b3a ldr r3, [pc, #232] ; (5360 ) 5278: 4798 blx r3 draw_dsc->pattern_opa = lv_obj_get_style_pattern_opa(obj, part); 527a: f884 0036 strb.w r0, [r4, #54] ; 0x36 if(draw_dsc->pattern_opa > LV_OPA_MIN) { 527e: 2805 cmp r0, #5 5280: f67f af35 bls.w 50ee _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR_OPA, pattern_recolor_opa, lv_opa_t, _opa, scalar) 5284: 226d movs r2, #109 ; 0x6d 5286: 4631 mov r1, r6 5288: 4628 mov r0, r5 528a: 4b35 ldr r3, [pc, #212] ; (5360 ) 528c: 4798 blx r3 draw_dsc->pattern_recolor_opa = lv_obj_get_style_pattern_recolor_opa(obj, part); 528e: f884 0037 strb.w r0, [r4, #55] ; 0x37 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_REPEAT, pattern_repeat, bool, _int, scalar) 5292: 2261 movs r2, #97 ; 0x61 5294: 4631 mov r1, r6 5296: 4628 mov r0, r5 5298: 4b30 ldr r3, [pc, #192] ; (535c ) 529a: 4798 blx r3 529c: 3000 adds r0, #0 529e: bf18 it ne 52a0: 2001 movne r0, #1 draw_dsc->pattern_repeat = lv_obj_get_style_pattern_repeat(obj, part); 52a2: f894 3038 ldrb.w r3, [r4, #56] ; 0x38 52a6: f360 0300 bfi r3, r0, #0, #1 52aa: f884 3038 strb.w r3, [r4, #56] ; 0x38 if(lv_img_src_get_type(draw_dsc->pattern_image) == LV_IMG_SRC_SYMBOL) { 52ae: 6ae0 ldr r0, [r4, #44] ; 0x2c 52b0: 4b2e ldr r3, [pc, #184] ; (536c ) 52b2: 4798 blx r3 52b4: 2802 cmp r0, #2 52b6: d00b beq.n 52d0 else if(draw_dsc->pattern_recolor_opa > LV_OPA_MIN) { 52b8: f894 3037 ldrb.w r3, [r4, #55] ; 0x37 52bc: 2b05 cmp r3, #5 52be: d815 bhi.n 52ec _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_BLEND_MODE, pattern_blend_mode, lv_blend_mode_t, _int, scalar) 52c0: 2260 movs r2, #96 ; 0x60 52c2: 4631 mov r1, r6 52c4: 4628 mov r0, r5 52c6: 4b25 ldr r3, [pc, #148] ; (535c ) 52c8: 4798 blx r3 52ca: f884 0039 strb.w r0, [r4, #57] ; 0x39 52ce: e70e b.n 50ee _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 52d0: 2269 movs r2, #105 ; 0x69 52d2: 4631 mov r1, r6 52d4: 4628 mov r0, r5 52d6: 4b23 ldr r3, [pc, #140] ; (5364 ) 52d8: 4798 blx r3 draw_dsc->pattern_recolor = lv_obj_get_style_pattern_recolor(obj, part); 52da: 86a0 strh r0, [r4, #52] ; 0x34 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 52dc: f248 028e movw r2, #32910 ; 0x808e 52e0: 4631 mov r1, r6 52e2: 4628 mov r0, r5 52e4: 4b20 ldr r3, [pc, #128] ; (5368 ) 52e6: 4798 blx r3 draw_dsc->pattern_font = lv_obj_get_style_text_font(obj, part); 52e8: 6320 str r0, [r4, #48] ; 0x30 52ea: e7e9 b.n 52c0 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 52ec: 2269 movs r2, #105 ; 0x69 52ee: 4631 mov r1, r6 52f0: 4628 mov r0, r5 52f2: 4b1c ldr r3, [pc, #112] ; (5364 ) 52f4: 4798 blx r3 draw_dsc->pattern_recolor = lv_obj_get_style_pattern_recolor(obj, part); 52f6: 86a0 strh r0, [r4, #52] ; 0x34 52f8: e7e2 b.n 52c0 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 52fa: 2250 movs r2, #80 ; 0x50 52fc: 4631 mov r1, r6 52fe: 4628 mov r0, r5 5300: 4b16 ldr r3, [pc, #88] ; (535c ) 5302: 4798 blx r3 draw_dsc->shadow_width = lv_obj_get_style_shadow_width(obj, part); 5304: 8420 strh r0, [r4, #32] if(draw_dsc->shadow_width) { 5306: 2800 cmp r0, #0 5308: f43f aef6 beq.w 50f8 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OPA, shadow_opa, lv_opa_t, _opa, scalar) 530c: 225c movs r2, #92 ; 0x5c 530e: 4631 mov r1, r6 5310: 4628 mov r0, r5 5312: 4b13 ldr r3, [pc, #76] ; (5360 ) 5314: 4798 blx r3 draw_dsc->shadow_opa = lv_obj_get_style_shadow_opa(obj, part); 5316: f884 0028 strb.w r0, [r4, #40] ; 0x28 if(draw_dsc->shadow_opa > LV_OPA_MIN) { 531a: 2805 cmp r0, #5 531c: f67f aeec bls.w 50f8 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_X, shadow_ofs_x, lv_style_int_t, _int, scalar) 5320: 2251 movs r2, #81 ; 0x51 5322: 4631 mov r1, r6 5324: 4628 mov r0, r5 5326: f8df 8034 ldr.w r8, [pc, #52] ; 535c 532a: 47c0 blx r8 draw_dsc->shadow_ofs_x = lv_obj_get_style_shadow_ofs_x(obj, part); 532c: 8460 strh r0, [r4, #34] ; 0x22 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_Y, shadow_ofs_y, lv_style_int_t, _int, scalar) 532e: 2252 movs r2, #82 ; 0x52 5330: 4631 mov r1, r6 5332: 4628 mov r0, r5 5334: 47c0 blx r8 draw_dsc->shadow_ofs_y = lv_obj_get_style_shadow_ofs_y(obj, part); 5336: 84a0 strh r0, [r4, #36] ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar) 5338: 2253 movs r2, #83 ; 0x53 533a: 4631 mov r1, r6 533c: 4628 mov r0, r5 533e: 47c0 blx r8 draw_dsc->shadow_spread = lv_obj_get_style_shadow_spread(obj, part); 5340: 84e0 strh r0, [r4, #38] ; 0x26 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar) 5342: 2259 movs r2, #89 ; 0x59 5344: 4631 mov r1, r6 5346: 4628 mov r0, r5 5348: 4b06 ldr r3, [pc, #24] ; (5364 ) 534a: 4798 blx r3 draw_dsc->shadow_color = lv_obj_get_style_shadow_color(obj, part); 534c: 83e0 strh r0, [r4, #30] _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_BLEND_MODE, shadow_blend_mode, lv_blend_mode_t, _int, scalar) 534e: 2254 movs r2, #84 ; 0x54 5350: 4631 mov r1, r6 5352: 4628 mov r0, r5 5354: 47c0 blx r8 5356: f884 0029 strb.w r0, [r4, #41] ; 0x29 535a: e6cd b.n 50f8 535c: 000044bd .word 0x000044bd 5360: 000045f5 .word 0x000045f5 5364: 00004569 .word 0x00004569 5368: 00004689 .word 0x00004689 536c: 00009951 .word 0x00009951 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_STR, value_str, const char *, _ptr, scalar) 5370: 227f movs r2, #127 ; 0x7f 5372: 4631 mov r1, r6 5374: 4628 mov r0, r5 5376: 4b22 ldr r3, [pc, #136] ; (5400 ) 5378: 4798 blx r3 draw_dsc->value_str = lv_obj_get_style_value_str(obj, part); 537a: 63e0 str r0, [r4, #60] ; 0x3c if(draw_dsc->value_str) { 537c: 2800 cmp r0, #0 537e: f43f aec0 beq.w 5102 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OPA, value_opa, lv_opa_t, _opa, scalar) 5382: 227c movs r2, #124 ; 0x7c 5384: 4631 mov r1, r6 5386: 4628 mov r0, r5 5388: 4b1e ldr r3, [pc, #120] ; (5404 ) 538a: 4798 blx r3 draw_dsc->value_opa = lv_obj_get_style_value_opa(obj, part); 538c: f884 0044 strb.w r0, [r4, #68] ; 0x44 if(draw_dsc->value_opa > LV_OPA_MIN) { 5390: 2805 cmp r0, #5 5392: f67f aeb6 bls.w 5102 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_X, value_ofs_x, lv_style_int_t, _int, scalar) 5396: 2273 movs r2, #115 ; 0x73 5398: 4631 mov r1, r6 539a: 4628 mov r0, r5 539c: f8df 806c ldr.w r8, [pc, #108] ; 540c 53a0: 47c0 blx r8 draw_dsc->value_ofs_x = lv_obj_get_style_value_ofs_x(obj, part); 53a2: 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) 53a6: 2274 movs r2, #116 ; 0x74 53a8: 4631 mov r1, r6 53aa: 4628 mov r0, r5 53ac: 47c0 blx r8 draw_dsc->value_ofs_y = lv_obj_get_style_value_ofs_y(obj, part); 53ae: f8a4 004a strh.w r0, [r4, #74] ; 0x4a _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 53b2: 2279 movs r2, #121 ; 0x79 53b4: 4631 mov r1, r6 53b6: 4628 mov r0, r5 53b8: 4b13 ldr r3, [pc, #76] ; (5408 ) 53ba: 4798 blx r3 draw_dsc->value_color = lv_obj_get_style_value_color(obj, part); 53bc: f8a4 0046 strh.w r0, [r4, #70] ; 0x46 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 53c0: 227e movs r2, #126 ; 0x7e 53c2: 4631 mov r1, r6 53c4: 4628 mov r0, r5 53c6: 4b0e ldr r3, [pc, #56] ; (5400 ) 53c8: 4798 blx r3 draw_dsc->value_font = lv_obj_get_style_value_font(obj, part); 53ca: 6420 str r0, [r4, #64] ; 0x40 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LETTER_SPACE, value_letter_space, lv_style_int_t, _int, scalar) 53cc: 2270 movs r2, #112 ; 0x70 53ce: 4631 mov r1, r6 53d0: 4628 mov r0, r5 53d2: 47c0 blx r8 draw_dsc->value_letter_space = lv_obj_get_style_value_letter_space(obj, part); 53d4: 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) 53d8: 2271 movs r2, #113 ; 0x71 53da: 4631 mov r1, r6 53dc: 4628 mov r0, r5 53de: 47c0 blx r8 draw_dsc->value_line_space = lv_obj_get_style_value_line_space(obj, part); 53e0: f8a4 004e strh.w r0, [r4, #78] ; 0x4e _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_ALIGN, value_align, lv_align_t, _int, scalar) 53e4: 2275 movs r2, #117 ; 0x75 53e6: 4631 mov r1, r6 53e8: 4628 mov r0, r5 53ea: 47c0 blx r8 53ec: 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) 53f0: 2272 movs r2, #114 ; 0x72 53f2: 4631 mov r1, r6 53f4: 4628 mov r0, r5 53f6: 47c0 blx r8 53f8: f884 0051 strb.w r0, [r4, #81] ; 0x51 53fc: e681 b.n 5102 53fe: bf00 nop 5400: 00004689 .word 0x00004689 5404: 000045f5 .word 0x000045f5 5408: 00004569 .word 0x00004569 540c: 000044bd .word 0x000044bd 00005410 : { 5410: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 5414: b098 sub sp, #96 ; 0x60 5416: 4604 mov r4, r0 5418: 460e mov r6, r1 if(mode == LV_DESIGN_COVER_CHK) { 541a: 2a02 cmp r2, #2 541c: d008 beq.n 5430 else if(mode == LV_DESIGN_DRAW_MAIN) { 541e: 2a00 cmp r2, #0 5420: d06c beq.n 54fc else if(mode == LV_DESIGN_DRAW_POST) { 5422: 2a01 cmp r2, #1 5424: f000 80cc beq.w 55c0 return LV_DESIGN_RES_OK; 5428: 2000 movs r0, #0 } 542a: b018 add sp, #96 ; 0x60 542c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 5430: 2100 movs r1, #0 5432: 4b8e ldr r3, [pc, #568] ; (566c ) 5434: 4798 blx r3 if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) return LV_DESIGN_RES_MASKED; 5436: b108 cbz r0, 543c 5438: 2003 movs r0, #3 543a: e7f6 b.n 542a _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 543c: 2201 movs r2, #1 543e: 2100 movs r1, #0 5440: 4620 mov r0, r4 5442: 4d8a ldr r5, [pc, #552] ; (566c ) 5444: 47a8 blx r5 5446: 4607 mov r7, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 5448: 2204 movs r2, #4 544a: 2100 movs r1, #0 544c: 4620 mov r0, r4 544e: 47a8 blx r5 5450: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 5452: 2205 movs r2, #5 5454: 2100 movs r1, #0 5456: 4620 mov r0, r4 5458: 47a8 blx r5 545a: f104 030f add.w r3, r4, #15 545e: f104 0517 add.w r5, r4, #23 uint8_t * d8 = (uint8_t *)dst; 5462: aa03 add r2, sp, #12 *d8 = *s8; 5464: f813 1f01 ldrb.w r1, [r3, #1]! 5468: f802 1b01 strb.w r1, [r2], #1 while(len) { 546c: 429d cmp r5, r3 546e: d1f9 bne.n 5464 coords.x1 -= w; 5470: fa1f f888 uxth.w r8, r8 5474: f8bd 300c ldrh.w r3, [sp, #12] 5478: eba3 0308 sub.w r3, r3, r8 547c: f8ad 300c strh.w r3, [sp, #12] coords.x2 += w; 5480: f8bd 3010 ldrh.w r3, [sp, #16] 5484: 4498 add r8, r3 5486: f8ad 8010 strh.w r8, [sp, #16] coords.y1 -= h; 548a: b280 uxth r0, r0 548c: f8bd 300e ldrh.w r3, [sp, #14] 5490: 1a1b subs r3, r3, r0 5492: f8ad 300e strh.w r3, [sp, #14] coords.y2 += h; 5496: f8bd 3012 ldrh.w r3, [sp, #18] 549a: 4418 add r0, r3 549c: f8ad 0012 strh.w r0, [sp, #18] if(_lv_area_is_in(clip_area, &coords, r) == false) return LV_DESIGN_RES_NOT_COVER; 54a0: 463a mov r2, r7 54a2: a903 add r1, sp, #12 54a4: 4630 mov r0, r6 54a6: 4b72 ldr r3, [pc, #456] ; (5670 ) 54a8: 4798 blx r3 54aa: b908 cbnz r0, 54b0 54ac: 2002 movs r0, #2 54ae: e7bc b.n 542a _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 54b0: 222c movs r2, #44 ; 0x2c 54b2: 2100 movs r1, #0 54b4: 4620 mov r0, r4 54b6: 4b6f ldr r3, [pc, #444] ; (5674 ) 54b8: 4798 blx r3 if(lv_obj_get_style_bg_opa(obj, LV_OBJ_PART_MAIN) < LV_OPA_MAX) return LV_DESIGN_RES_NOT_COVER; 54ba: 28f9 cmp r0, #249 ; 0xf9 54bc: d801 bhi.n 54c2 54be: 2002 movs r0, #2 54c0: e7b3 b.n 542a _LV_OBJ_STYLE_SET_GET_DECLARE(BG_BLEND_MODE, bg_blend_mode, lv_blend_mode_t, _int, scalar) 54c2: 2220 movs r2, #32 54c4: 2100 movs r1, #0 54c6: 4620 mov r0, r4 54c8: 4b68 ldr r3, [pc, #416] ; (566c ) 54ca: 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; 54cc: b2c0 uxtb r0, r0 54ce: b108 cbz r0, 54d4 54d0: 2002 movs r0, #2 54d2: e7aa b.n 542a _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_BLEND_MODE, border_blend_mode, lv_blend_mode_t, _int, scalar) 54d4: 2232 movs r2, #50 ; 0x32 54d6: 2100 movs r1, #0 54d8: 4620 mov r0, r4 54da: 4b64 ldr r3, [pc, #400] ; (566c ) 54dc: 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; 54de: b2c0 uxtb r0, r0 54e0: b108 cbz r0, 54e6 54e2: 2002 movs r0, #2 54e4: e7a1 b.n 542a _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 54e6: f248 020c movw r2, #32780 ; 0x800c 54ea: 2100 movs r1, #0 54ec: 4620 mov r0, r4 54ee: 4b61 ldr r3, [pc, #388] ; (5674 ) 54f0: 4798 blx r3 return LV_DESIGN_RES_COVER; 54f2: 28fa cmp r0, #250 ; 0xfa 54f4: bf34 ite cc 54f6: 2002 movcc r0, #2 54f8: 2001 movcs r0, #1 54fa: e796 b.n 542a lv_draw_rect_dsc_init(&draw_dsc); 54fc: a803 add r0, sp, #12 54fe: 4b5e ldr r3, [pc, #376] ; (5678 ) 5500: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 5502: 2233 movs r2, #51 ; 0x33 5504: 2100 movs r1, #0 5506: 4620 mov r0, r4 5508: 4b58 ldr r3, [pc, #352] ; (566c ) 550a: 4798 blx r3 if(lv_obj_get_style_border_post(obj, LV_OBJ_PART_MAIN)) { 550c: b110 cbz r0, 5514 draw_dsc.border_opa = LV_OPA_TRANSP; 550e: 2300 movs r3, #0 5510: f88d 3020 strb.w r3, [sp, #32] lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc); 5514: aa03 add r2, sp, #12 5516: 2100 movs r1, #0 5518: 4620 mov r0, r4 551a: 4b58 ldr r3, [pc, #352] ; (567c ) 551c: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 551e: 2204 movs r2, #4 5520: 2100 movs r1, #0 5522: 4620 mov r0, r4 5524: 4d51 ldr r5, [pc, #324] ; (566c ) 5526: 47a8 blx r5 5528: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 552a: 2205 movs r2, #5 552c: 2100 movs r1, #0 552e: 4620 mov r0, r4 5530: 47a8 blx r5 lv_area_copy(&coords, &obj->coords); 5532: f104 0710 add.w r7, r4, #16 5536: f104 030f add.w r3, r4, #15 553a: f104 0517 add.w r5, r4, #23 uint8_t * d8 = (uint8_t *)dst; 553e: aa01 add r2, sp, #4 *d8 = *s8; 5540: f813 1f01 ldrb.w r1, [r3, #1]! 5544: f802 1b01 strb.w r1, [r2], #1 while(len) { 5548: 42ab cmp r3, r5 554a: d1f9 bne.n 5540 coords.x1 -= w; 554c: fa1f f888 uxth.w r8, r8 5550: f8bd 3004 ldrh.w r3, [sp, #4] 5554: eba3 0308 sub.w r3, r3, r8 5558: f8ad 3004 strh.w r3, [sp, #4] coords.x2 += w; 555c: f8bd 3008 ldrh.w r3, [sp, #8] 5560: 4498 add r8, r3 5562: f8ad 8008 strh.w r8, [sp, #8] coords.y1 -= h; 5566: b280 uxth r0, r0 5568: f8bd 3006 ldrh.w r3, [sp, #6] 556c: 1a1b subs r3, r3, r0 556e: f8ad 3006 strh.w r3, [sp, #6] coords.y2 += h; 5572: f8bd 300a ldrh.w r3, [sp, #10] 5576: 4418 add r0, r3 5578: f8ad 000a strh.w r0, [sp, #10] lv_draw_rect(&coords, clip_area, &draw_dsc); 557c: aa03 add r2, sp, #12 557e: 4631 mov r1, r6 5580: a801 add r0, sp, #4 5582: 4b3f ldr r3, [pc, #252] ; (5680 ) 5584: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 5586: 2202 movs r2, #2 5588: 2100 movs r1, #0 558a: 4620 mov r0, r4 558c: 4b37 ldr r3, [pc, #220] ; (566c ) 558e: 4798 blx r3 if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) { 5590: b908 cbnz r0, 5596 return LV_DESIGN_RES_OK; 5592: 2000 movs r0, #0 5594: e749 b.n 542a lv_draw_mask_radius_param_t * mp = _lv_mem_buf_get(sizeof(lv_draw_mask_radius_param_t)); 5596: 201c movs r0, #28 5598: 4b3a ldr r3, [pc, #232] ; (5684 ) 559a: 4798 blx r3 559c: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 559e: 2201 movs r2, #1 55a0: 2100 movs r1, #0 55a2: 4620 mov r0, r4 55a4: 4b31 ldr r3, [pc, #196] ; (566c ) 55a6: 4798 blx r3 lv_draw_mask_radius_init(mp, &obj->coords, r, false); 55a8: 2300 movs r3, #0 55aa: 4602 mov r2, r0 55ac: 4639 mov r1, r7 55ae: 4628 mov r0, r5 55b0: 4e35 ldr r6, [pc, #212] ; (5688 ) 55b2: 47b0 blx r6 lv_draw_mask_add(mp, obj + 8); 55b4: f504 7118 add.w r1, r4, #608 ; 0x260 55b8: 4628 mov r0, r5 55ba: 4b34 ldr r3, [pc, #208] ; (568c ) 55bc: 4798 blx r3 55be: e7e8 b.n 5592 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 55c0: 2202 movs r2, #2 55c2: 2100 movs r1, #0 55c4: 4b29 ldr r3, [pc, #164] ; (566c ) 55c6: 4798 blx r3 if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) { 55c8: b938 cbnz r0, 55da _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 55ca: 2233 movs r2, #51 ; 0x33 55cc: 2100 movs r1, #0 55ce: 4620 mov r0, r4 55d0: 4b26 ldr r3, [pc, #152] ; (566c ) 55d2: 4798 blx r3 if(lv_obj_get_style_border_post(obj, LV_OBJ_PART_MAIN)) { 55d4: b940 cbnz r0, 55e8 return LV_DESIGN_RES_OK; 55d6: 2000 movs r0, #0 55d8: e727 b.n 542a lv_draw_mask_radius_param_t * param = lv_draw_mask_remove_custom(obj + 8); 55da: f504 7018 add.w r0, r4, #608 ; 0x260 55de: 4b2c ldr r3, [pc, #176] ; (5690 ) 55e0: 4798 blx r3 _lv_mem_buf_release(param); 55e2: 4b2c ldr r3, [pc, #176] ; (5694 ) 55e4: 4798 blx r3 55e6: e7f0 b.n 55ca lv_draw_rect_dsc_init(&draw_dsc); 55e8: a803 add r0, sp, #12 55ea: 4b23 ldr r3, [pc, #140] ; (5678 ) 55ec: 4798 blx r3 draw_dsc.bg_opa = LV_OPA_TRANSP; 55ee: 2700 movs r7, #0 55f0: f88d 7018 strb.w r7, [sp, #24] draw_dsc.pattern_opa = LV_OPA_TRANSP; 55f4: f88d 7042 strb.w r7, [sp, #66] ; 0x42 draw_dsc.shadow_opa = LV_OPA_TRANSP; 55f8: f88d 7034 strb.w r7, [sp, #52] ; 0x34 lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc); 55fc: aa03 add r2, sp, #12 55fe: 4639 mov r1, r7 5600: 4620 mov r0, r4 5602: 4b1e ldr r3, [pc, #120] ; (567c ) 5604: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 5606: 2204 movs r2, #4 5608: 4639 mov r1, r7 560a: 4620 mov r0, r4 560c: 4d17 ldr r5, [pc, #92] ; (566c ) 560e: 47a8 blx r5 5610: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 5612: 2205 movs r2, #5 5614: 4639 mov r1, r7 5616: 4620 mov r0, r4 5618: 47a8 blx r5 561a: f104 030f add.w r3, r4, #15 561e: 3417 adds r4, #23 uint8_t * d8 = (uint8_t *)dst; 5620: aa01 add r2, sp, #4 *d8 = *s8; 5622: f813 1f01 ldrb.w r1, [r3, #1]! 5626: f802 1b01 strb.w r1, [r2], #1 while(len) { 562a: 42a3 cmp r3, r4 562c: d1f9 bne.n 5622 coords.x1 -= w; 562e: fa1f f388 uxth.w r3, r8 5632: f8bd 2004 ldrh.w r2, [sp, #4] 5636: 1ad2 subs r2, r2, r3 5638: f8ad 2004 strh.w r2, [sp, #4] coords.x2 += w; 563c: f8bd 2008 ldrh.w r2, [sp, #8] 5640: 4413 add r3, r2 5642: f8ad 3008 strh.w r3, [sp, #8] coords.y1 -= h; 5646: b280 uxth r0, r0 5648: f8bd 3006 ldrh.w r3, [sp, #6] 564c: 1a1b subs r3, r3, r0 564e: f8ad 3006 strh.w r3, [sp, #6] coords.y2 += h; 5652: f8bd 300a ldrh.w r3, [sp, #10] 5656: 4418 add r0, r3 5658: f8ad 000a strh.w r0, [sp, #10] lv_draw_rect(&coords, clip_area, &draw_dsc); 565c: aa03 add r2, sp, #12 565e: 4631 mov r1, r6 5660: a801 add r0, sp, #4 5662: 4b07 ldr r3, [pc, #28] ; (5680 ) 5664: 4798 blx r3 return LV_DESIGN_RES_OK; 5666: 2000 movs r0, #0 5668: e6df b.n 542a 566a: bf00 nop 566c: 000044bd .word 0x000044bd 5670: 00011755 .word 0x00011755 5674: 000045f5 .word 0x000045f5 5678: 0000c251 .word 0x0000c251 567c: 000050ad .word 0x000050ad 5680: 0000c319 .word 0x0000c319 5684: 00012925 .word 0x00012925 5688: 0000c015 .word 0x0000c015 568c: 0000bda9 .word 0x0000bda9 5690: 0000be79 .word 0x0000be79 5694: 00012559 .word 0x00012559 00005698 : { 5698: b5f8 push {r3, r4, r5, r6, r7, lr} 569a: 4605 mov r5, r0 569c: 460e mov r6, r1 569e: 4614 mov r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_OPA, text_opa, lv_opa_t, _opa, scalar) 56a0: f248 028c movw r2, #32908 ; 0x808c 56a4: 4b26 ldr r3, [pc, #152] ; (5740 ) 56a6: 4798 blx r3 draw_dsc->opa = lv_obj_get_style_text_opa(obj, part); 56a8: 7220 strb r0, [r4, #8] if(draw_dsc->opa <= LV_OPA_MIN) return; 56aa: 2805 cmp r0, #5 56ac: d800 bhi.n 56b0 56ae: bdf8 pop {r3, r4, r5, r6, r7, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 56b0: f248 020c movw r2, #32780 ; 0x800c 56b4: 4631 mov r1, r6 56b6: 4628 mov r0, r5 56b8: 4b21 ldr r3, [pc, #132] ; (5740 ) 56ba: 4798 blx r3 if(opa_scale < LV_OPA_MAX) { 56bc: 28f9 cmp r0, #249 ; 0xf9 56be: d805 bhi.n 56cc draw_dsc->opa = (uint16_t)((uint16_t)draw_dsc->opa * opa_scale) >> 8; 56c0: 7a23 ldrb r3, [r4, #8] 56c2: fb13 f000 smulbb r0, r3, r0 56c6: f3c0 2007 ubfx r0, r0, #8, #8 56ca: 7220 strb r0, [r4, #8] if(draw_dsc->opa <= LV_OPA_MIN) return; 56cc: 7a23 ldrb r3, [r4, #8] 56ce: 2b05 cmp r3, #5 56d0: d9ed bls.n 56ae _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 56d2: f248 0289 movw r2, #32905 ; 0x8089 56d6: 4631 mov r1, r6 56d8: 4628 mov r0, r5 56da: 4b1a ldr r3, [pc, #104] ; (5744 ) 56dc: 4798 blx r3 draw_dsc->color = lv_obj_get_style_text_color(obj, part); 56de: 8020 strh r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 56e0: f248 0280 movw r2, #32896 ; 0x8080 56e4: 4631 mov r1, r6 56e6: 4628 mov r0, r5 56e8: 4f17 ldr r7, [pc, #92] ; (5748 ) 56ea: 47b8 blx r7 draw_dsc->letter_space = lv_obj_get_style_text_letter_space(obj, part); 56ec: 81a0 strh r0, [r4, #12] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 56ee: f248 0281 movw r2, #32897 ; 0x8081 56f2: 4631 mov r1, r6 56f4: 4628 mov r0, r5 56f6: 47b8 blx r7 draw_dsc->line_space = lv_obj_get_style_text_line_space(obj, part); 56f8: 8160 strh r0, [r4, #10] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_DECOR, text_decor, lv_text_decor_t, _int, scalar) 56fa: f248 0282 movw r2, #32898 ; 0x8082 56fe: 4631 mov r1, r6 5700: 4628 mov r0, r5 5702: 47b8 blx r7 5704: 7620 strb r0, [r4, #24] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_BLEND_MODE, text_blend_mode, lv_blend_mode_t, _int, scalar) 5706: f248 0283 movw r2, #32899 ; 0x8083 570a: 4631 mov r1, r6 570c: 4628 mov r0, r5 570e: 47b8 blx r7 5710: 7660 strb r0, [r4, #25] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 5712: f248 028e movw r2, #32910 ; 0x808e 5716: 4631 mov r1, r6 5718: 4628 mov r0, r5 571a: 4b0c ldr r3, [pc, #48] ; (574c ) 571c: 4798 blx r3 draw_dsc->font = lv_obj_get_style_text_font(obj, part); 571e: 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) { 5720: 89e2 ldrh r2, [r4, #14] 5722: f64f 73ff movw r3, #65535 ; 0xffff 5726: 429a cmp r2, r3 5728: d0c1 beq.n 56ae 572a: 8a22 ldrh r2, [r4, #16] 572c: 429a cmp r2, r3 572e: d0be beq.n 56ae _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_SEL_COLOR, text_sel_color, lv_color_t, _color, nonscalar) 5730: f248 028a movw r2, #32906 ; 0x808a 5734: 4631 mov r1, r6 5736: 4628 mov r0, r5 5738: 4b02 ldr r3, [pc, #8] ; (5744 ) 573a: 4798 blx r3 draw_dsc->color = lv_obj_get_style_text_sel_color(obj, part); 573c: 8020 strh r0, [r4, #0] 573e: e7b6 b.n 56ae 5740: 000045f5 .word 0x000045f5 5744: 00004569 .word 0x00004569 5748: 000044bd .word 0x000044bd 574c: 00004689 .word 0x00004689 00005750 : { 5750: b570 push {r4, r5, r6, lr} 5752: 4605 mov r5, r0 5754: 460e mov r6, r1 5756: 4614 mov r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_OPA, image_opa, lv_opa_t, _opa, scalar) 5758: f248 02ac movw r2, #32940 ; 0x80ac 575c: 4b21 ldr r3, [pc, #132] ; (57e4 ) 575e: 4798 blx r3 draw_dsc->opa = lv_obj_get_style_image_opa(obj, part); 5760: 7020 strb r0, [r4, #0] if(draw_dsc->opa <= LV_OPA_MIN) return; 5762: 2805 cmp r0, #5 5764: d800 bhi.n 5768 5766: bd70 pop {r4, r5, r6, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 5768: f248 020c movw r2, #32780 ; 0x800c 576c: 4631 mov r1, r6 576e: 4628 mov r0, r5 5770: 4b1c ldr r3, [pc, #112] ; (57e4 ) 5772: 4798 blx r3 if(opa_scale < LV_OPA_MAX) { 5774: 28f9 cmp r0, #249 ; 0xf9 5776: d805 bhi.n 5784 draw_dsc->opa = (uint16_t)((uint16_t)draw_dsc->opa * opa_scale) >> 8; 5778: 7823 ldrb r3, [r4, #0] 577a: fb13 f000 smulbb r0, r3, r0 577e: f3c0 2007 ubfx r0, r0, #8, #8 5782: 7020 strb r0, [r4, #0] if(draw_dsc->opa <= LV_OPA_MIN) return; 5784: 7823 ldrb r3, [r4, #0] 5786: 2b05 cmp r3, #5 5788: d9ed bls.n 5766 draw_dsc->angle = 0; 578a: 2300 movs r3, #0 578c: 8063 strh r3, [r4, #2] draw_dsc->zoom = LV_IMG_ZOOM_NONE; 578e: f44f 7380 mov.w r3, #256 ; 0x100 5792: 8123 strh r3, [r4, #8] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 5794: 8aab ldrh r3, [r5, #20] 5796: 3301 adds r3, #1 5798: 8a2a ldrh r2, [r5, #16] 579a: 1a9b subs r3, r3, r2 draw_dsc->pivot.x = lv_area_get_width(&obj->coords) / 2; 579c: b21b sxth r3, r3 579e: eb03 73d3 add.w r3, r3, r3, lsr #31 57a2: 105b asrs r3, r3, #1 57a4: 80a3 strh r3, [r4, #4] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 57a6: 8aeb ldrh r3, [r5, #22] 57a8: 3301 adds r3, #1 57aa: 8a6a ldrh r2, [r5, #18] 57ac: 1a9b subs r3, r3, r2 draw_dsc->pivot.y = lv_area_get_height(&obj->coords) / 2; 57ae: b21b sxth r3, r3 57b0: eb03 73d3 add.w r3, r3, r3, lsr #31 57b4: 105b asrs r3, r3, #1 57b6: 80e3 strh r3, [r4, #6] _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR_OPA, image_recolor_opa, lv_opa_t, _opa, scalar) 57b8: f248 02ad movw r2, #32941 ; 0x80ad 57bc: 4631 mov r1, r6 57be: 4628 mov r0, r5 57c0: 4b08 ldr r3, [pc, #32] ; (57e4 ) 57c2: 4798 blx r3 draw_dsc->recolor_opa = lv_obj_get_style_image_recolor_opa(obj, part); 57c4: 72a0 strb r0, [r4, #10] _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 57c6: f248 02a9 movw r2, #32937 ; 0x80a9 57ca: 4631 mov r1, r6 57cc: 4628 mov r0, r5 57ce: 4b06 ldr r3, [pc, #24] ; (57e8 ) 57d0: 4798 blx r3 draw_dsc->recolor = lv_obj_get_style_image_recolor(obj, part); 57d2: 81a0 strh r0, [r4, #12] _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_BLEND_MODE, image_blend_mode, lv_blend_mode_t, _int, scalar) 57d4: f248 02a0 movw r2, #32928 ; 0x80a0 57d8: 4631 mov r1, r6 57da: 4628 mov r0, r5 57dc: 4b03 ldr r3, [pc, #12] ; (57ec ) 57de: 4798 blx r3 57e0: 73a0 strb r0, [r4, #14] 57e2: e7c0 b.n 5766 57e4: 000045f5 .word 0x000045f5 57e8: 00004569 .word 0x00004569 57ec: 000044bd .word 0x000044bd 000057f0 : { 57f0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 57f4: b089 sub sp, #36 ; 0x24 57f6: 4604 mov r4, r0 57f8: 460e mov r6, r1 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 57fa: 2250 movs r2, #80 ; 0x50 57fc: 4b76 ldr r3, [pc, #472] ; (59d8 ) 57fe: 4798 blx r3 if(sh_width) { 5800: 4607 mov r7, r0 5802: bb68 cbnz r0, 5860 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_STR, value_str, const char *, _ptr, scalar) 5804: 227f movs r2, #127 ; 0x7f 5806: 4631 mov r1, r6 5808: 4620 mov r0, r4 580a: 4b74 ldr r3, [pc, #464] ; (59dc ) 580c: 4798 blx r3 if(value_str) { 580e: 4680 mov r8, r0 5810: b130 cbz r0, 5820 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OPA, value_opa, lv_opa_t, _opa, scalar) 5812: 227c movs r2, #124 ; 0x7c 5814: 4631 mov r1, r6 5816: 4620 mov r0, r4 5818: 4b71 ldr r3, [pc, #452] ; (59e0 ) 581a: 4798 blx r3 if(value_opa > LV_OPA_MIN) { 581c: 2805 cmp r0, #5 581e: d84c bhi.n 58ba _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 5820: 2240 movs r2, #64 ; 0x40 5822: 4631 mov r1, r6 5824: 4620 mov r0, r4 5826: 4b6c ldr r3, [pc, #432] ; (59d8 ) 5828: 4798 blx r3 if(outline_width) { 582a: 4605 mov r5, r0 582c: 2800 cmp r0, #0 582e: f040 80bf bne.w 59b0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 5832: 2204 movs r2, #4 5834: 4631 mov r1, r6 5836: 4620 mov r0, r4 5838: f8df 819c ldr.w r8, [pc, #412] ; 59d8 583c: 47c0 blx r8 583e: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 5840: 2205 movs r2, #5 5842: 4631 mov r1, r6 5844: 4620 mov r0, r4 5846: 47c0 blx r8 lv_coord_t wh = LV_MATH_MAX(w, h); 5848: 42a8 cmp r0, r5 584a: bfb8 it lt 584c: 4628 movlt r0, r5 584e: b200 sxth r0, r0 if(wh > 0) s += wh; 5850: 2800 cmp r0, #0 5852: bfc4 itt gt 5854: 19c0 addgt r0, r0, r7 5856: b207 sxthgt r7, r0 } 5858: 4638 mov r0, r7 585a: b009 add sp, #36 ; 0x24 585c: 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) 5860: 225c movs r2, #92 ; 0x5c 5862: 4631 mov r1, r6 5864: 4620 mov r0, r4 5866: 4b5e ldr r3, [pc, #376] ; (59e0 ) 5868: 4798 blx r3 if(sh_opa > LV_OPA_MIN) { 586a: 2805 cmp r0, #5 586c: d801 bhi.n 5872 lv_coord_t s = 0; 586e: 2700 movs r7, #0 5870: e7c8 b.n 5804 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar) 5872: 2253 movs r2, #83 ; 0x53 5874: 4631 mov r1, r6 5876: 4620 mov r0, r4 5878: 4d57 ldr r5, [pc, #348] ; (59d8 ) 587a: 47a8 blx r5 sh_width = sh_width / 2; /*THe blur adds only half width*/ 587c: eb07 77d7 add.w r7, r7, r7, lsr #31 sh_width++; 5880: eb00 0767 add.w r7, r0, r7, asr #1 sh_width += lv_obj_get_style_shadow_spread(obj, part); 5884: 3701 adds r7, #1 5886: b2bf uxth r7, r7 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_X, shadow_ofs_x, lv_style_int_t, _int, scalar) 5888: 2251 movs r2, #81 ; 0x51 588a: 4631 mov r1, r6 588c: 4620 mov r0, r4 588e: 47a8 blx r5 5890: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_Y, shadow_ofs_y, lv_style_int_t, _int, scalar) 5892: 2252 movs r2, #82 ; 0x52 5894: 4631 mov r1, r6 5896: 4620 mov r0, r4 5898: 47a8 blx r5 sh_width += LV_MATH_MAX(LV_MATH_ABS(sh_ofs_x), LV_MATH_ABS(sh_ofs_y)); 589a: 2800 cmp r0, #0 589c: bfb8 it lt 589e: 4240 neglt r0, r0 58a0: f1b8 0f00 cmp.w r8, #0 58a4: bfb8 it lt 58a6: f1c8 0800 rsblt r8, r8, #0 58aa: 4540 cmp r0, r8 58ac: bfac ite ge 58ae: 183f addge r7, r7, r0 58b0: 4447 addlt r7, r8 s = LV_MATH_MAX(s, sh_width); 58b2: b238 sxth r0, r7 58b4: ea20 77e0 bic.w r7, r0, r0, asr #31 58b8: e7a4 b.n 5804 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LETTER_SPACE, value_letter_space, lv_style_int_t, _int, scalar) 58ba: 2270 movs r2, #112 ; 0x70 58bc: 4631 mov r1, r6 58be: 4620 mov r0, r4 58c0: 4d45 ldr r5, [pc, #276] ; (59d8 ) 58c2: 47a8 blx r5 58c4: 4682 mov sl, r0 58c6: 2270 movs r2, #112 ; 0x70 58c8: 4631 mov r1, r6 58ca: 4620 mov r0, r4 58cc: 47a8 blx r5 58ce: 4683 mov fp, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 58d0: 227e movs r2, #126 ; 0x7e 58d2: 4631 mov r1, r6 58d4: 4620 mov r0, r4 58d6: 4b41 ldr r3, [pc, #260] ; (59dc ) 58d8: 4798 blx r3 _lv_txt_get_size(&txt_size, value_str, font, letter_space, line_space, LV_COORD_MAX, LV_TXT_FLAG_NONE); 58da: f04f 0900 mov.w r9, #0 58de: f8cd 9008 str.w r9, [sp, #8] 58e2: f647 4318 movw r3, #31768 ; 0x7c18 58e6: 9301 str r3, [sp, #4] 58e8: f8cd b000 str.w fp, [sp] 58ec: 4653 mov r3, sl 58ee: 4602 mov r2, r0 58f0: 4641 mov r1, r8 58f2: a804 add r0, sp, #16 58f4: f8df 80ec ldr.w r8, [pc, #236] ; 59e4 58f8: 47c0 blx r8 value_area.x1 = 0; 58fa: f8ad 9018 strh.w r9, [sp, #24] value_area.y1 = 0; 58fe: f8ad 901a strh.w r9, [sp, #26] value_area.x2 = txt_size.x - 1; 5902: f8bd 3010 ldrh.w r3, [sp, #16] 5906: 3b01 subs r3, #1 5908: f8ad 301c strh.w r3, [sp, #28] value_area.y2 = txt_size.y - 1; 590c: f8bd 3012 ldrh.w r3, [sp, #18] 5910: 3b01 subs r3, #1 5912: f8ad 301e strh.w r3, [sp, #30] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_ALIGN, value_align, lv_align_t, _int, scalar) 5916: 2275 movs r2, #117 ; 0x75 5918: 4631 mov r1, r6 591a: 4620 mov r0, r4 591c: 47a8 blx r5 591e: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_X, value_ofs_x, lv_style_int_t, _int, scalar) 5920: 2273 movs r2, #115 ; 0x73 5922: 4631 mov r1, r6 5924: 4620 mov r0, r4 5926: 47a8 blx r5 5928: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_Y, value_ofs_y, lv_style_int_t, _int, scalar) 592a: 2274 movs r2, #116 ; 0x74 592c: 4631 mov r1, r6 592e: 4620 mov r0, r4 5930: 47a8 blx r5 5932: 4605 mov r5, r0 _lv_area_align(&obj->coords, &value_area, align, &p_align); 5934: ab05 add r3, sp, #20 5936: fa5f f289 uxtb.w r2, r9 593a: a906 add r1, sp, #24 593c: f104 0010 add.w r0, r4, #16 5940: f8df 90a4 ldr.w r9, [pc, #164] ; 59e8 5944: 47c8 blx r9 value_area.x1 += p_align.x + xofs; 5946: f8bd 3014 ldrh.w r3, [sp, #20] 594a: 4443 add r3, r8 594c: b29b uxth r3, r3 value_area.y1 += p_align.y + yofs; 594e: f8bd 2016 ldrh.w r2, [sp, #22] 5952: 442a add r2, r5 5954: b292 uxth r2, r2 s = LV_MATH_MAX(s, obj->coords.x1 - value_area.x1); 5956: f9b4 0010 ldrsh.w r0, [r4, #16] value_area.x1 += p_align.x + xofs; 595a: f8bd 1018 ldrh.w r1, [sp, #24] 595e: 4419 add r1, r3 s = LV_MATH_MAX(s, obj->coords.x1 - value_area.x1); 5960: b209 sxth r1, r1 5962: 1a40 subs r0, r0, r1 5964: 42b8 cmp r0, r7 5966: bfb8 it lt 5968: 4638 movlt r0, r7 s = LV_MATH_MAX(s, obj->coords.y1 - value_area.y1); 596a: f9b4 1012 ldrsh.w r1, [r4, #18] value_area.y1 += p_align.y + yofs; 596e: f8bd 701a ldrh.w r7, [sp, #26] 5972: 4417 add r7, r2 s = LV_MATH_MAX(s, obj->coords.y1 - value_area.y1); 5974: b23f sxth r7, r7 5976: 1bcf subs r7, r1, r7 5978: b200 sxth r0, r0 597a: 4287 cmp r7, r0 597c: bfb8 it lt 597e: 4607 movlt r7, r0 value_area.x2 += p_align.x + xofs; 5980: f8bd 001c ldrh.w r0, [sp, #28] 5984: 4403 add r3, r0 s = LV_MATH_MAX(s, value_area.x2 - obj->coords.x2); 5986: b21b sxth r3, r3 5988: f9b4 0014 ldrsh.w r0, [r4, #20] 598c: 1a18 subs r0, r3, r0 598e: b23b sxth r3, r7 5990: 4283 cmp r3, r0 5992: bfb8 it lt 5994: 4603 movlt r3, r0 value_area.y2 += p_align.y + yofs; 5996: f8bd 001e ldrh.w r0, [sp, #30] 599a: 4410 add r0, r2 s = LV_MATH_MAX(s, value_area.y2 - obj->coords.y2); 599c: b200 sxth r0, r0 599e: f9b4 7016 ldrsh.w r7, [r4, #22] 59a2: 1bc7 subs r7, r0, r7 59a4: b218 sxth r0, r3 59a6: 42b8 cmp r0, r7 59a8: bfb8 it lt 59aa: 4638 movlt r0, r7 59ac: b207 sxth r7, r0 59ae: e737 b.n 5820 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 59b0: 224c movs r2, #76 ; 0x4c 59b2: 4631 mov r1, r6 59b4: 4620 mov r0, r4 59b6: 4b0a ldr r3, [pc, #40] ; (59e0 ) 59b8: 4798 blx r3 if(outline_opa > LV_OPA_MIN) { 59ba: 2805 cmp r0, #5 59bc: f67f af39 bls.w 5832 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar) 59c0: 2241 movs r2, #65 ; 0x41 59c2: 4631 mov r1, r6 59c4: 4620 mov r0, r4 59c6: 4b04 ldr r3, [pc, #16] ; (59d8 ) 59c8: 4798 blx r3 s = LV_MATH_MAX(s, outline_pad + outline_width); 59ca: 4428 add r0, r5 59cc: 42b8 cmp r0, r7 59ce: bfb8 it lt 59d0: 4638 movlt r0, r7 59d2: b207 sxth r7, r0 59d4: e72d b.n 5832 59d6: bf00 nop 59d8: 000044bd .word 0x000044bd 59dc: 00004689 .word 0x00004689 59e0: 000045f5 .word 0x000045f5 59e4: 00014065 .word 0x00014065 59e8: 0001180d .word 0x0001180d 000059ec : if(sign == LV_SIGNAL_GET_STYLE) { 59ec: 2908 cmp r1, #8 59ee: d01a beq.n 5a26 { 59f0: b510 push {r4, lr} 59f2: 4604 mov r4, r0 else if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 59f4: 2907 cmp r1, #7 59f6: d020 beq.n 5a3a if(sign == LV_SIGNAL_CHILD_CHG) { 59f8: 2901 cmp r1, #1 59fa: d023 beq.n 5a44 else if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) { 59fc: 2906 cmp r1, #6 59fe: d027 beq.n 5a50 else if(sign == LV_SIGNAL_PARENT_SIZE_CHG) { 5a00: 2903 cmp r1, #3 5a02: d030 beq.n 5a66 else if(sign == LV_SIGNAL_STYLE_CHG) { 5a04: 2904 cmp r1, #4 5a06: d039 beq.n 5a7c else if(sign == LV_SIGNAL_PRESSED) { 5a08: 290b cmp r1, #11 5a0a: d03b beq.n 5a84 else if(sign == LV_SIGNAL_RELEASED || sign == LV_SIGNAL_PRESS_LOST) { 5a0c: f1a1 030d sub.w r3, r1, #13 5a10: b2db uxtb r3, r3 5a12: 2b01 cmp r3, #1 5a14: d93b bls.n 5a8e else if(sign == LV_SIGNAL_FOCUS) { 5a16: 2916 cmp r1, #22 5a18: d03e beq.n 5a98 else if(sign == LV_SIGNAL_DEFOCUS) { 5a1a: 2917 cmp r1, #23 5a1c: d051 beq.n 5ac2 else if(sign == LV_SIGNAL_CLEANUP) { 5a1e: 2900 cmp r1, #0 5a20: d054 beq.n 5acc lv_res_t res = LV_RES_OK; 5a22: 2001 movs r0, #1 } 5a24: bd10 pop {r4, pc} if(info->part == LV_OBJ_PART_MAIN) info->result = &obj->style_list; 5a26: 7813 ldrb r3, [r2, #0] 5a28: b91b cbnz r3, 5a32 5a2a: 3028 adds r0, #40 ; 0x28 5a2c: 6050 str r0, [r2, #4] return LV_RES_OK; 5a2e: 2001 movs r0, #1 5a30: 4770 bx lr else info->result = NULL; 5a32: 2300 movs r3, #0 5a34: 6053 str r3, [r2, #4] return LV_RES_OK; 5a36: 2001 movs r0, #1 5a38: 4770 bx lr else if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 5a3a: 4926 ldr r1, [pc, #152] ; (5ad4 ) 5a3c: 4610 mov r0, r2 5a3e: 4b26 ldr r3, [pc, #152] ; (5ad8 ) 5a40: 4798 blx r3 5a42: bd10 pop {r4, pc} if(lv_obj_is_protected(obj, LV_PROTECT_CHILD_CHG) != false) res = LV_RES_INV; 5a44: 4b25 ldr r3, [pc, #148] ; (5adc ) 5a46: 4798 blx r3 5a48: f080 0001 eor.w r0, r0, #1 return LV_RES_OK; 5a4c: b2c0 uxtb r0, r0 5a4e: bd10 pop {r4, pc} lv_coord_t d = lv_obj_get_draw_rect_ext_pad_size(obj, LV_OBJ_PART_MAIN); 5a50: 2100 movs r1, #0 5a52: 4b23 ldr r3, [pc, #140] ; (5ae0 ) 5a54: 4798 blx r3 obj->ext_draw_pad = LV_MATH_MAX(obj->ext_draw_pad, d); 5a56: f9b4 3032 ldrsh.w r3, [r4, #50] ; 0x32 5a5a: 4298 cmp r0, r3 5a5c: bfb8 it lt 5a5e: 4618 movlt r0, r3 5a60: 8660 strh r0, [r4, #50] ; 0x32 lv_res_t res = LV_RES_OK; 5a62: 2001 movs r0, #1 5a64: bd10 pop {r4, pc} if(obj->realign.auto_realign) { 5a66: f890 3049 ldrb.w r3, [r0, #73] ; 0x49 5a6a: f013 0f01 tst.w r3, #1 5a6e: d101 bne.n 5a74 lv_res_t res = LV_RES_OK; 5a70: 2001 movs r0, #1 5a72: bd10 pop {r4, pc} lv_obj_realign(obj); 5a74: 4b1b ldr r3, [pc, #108] ; (5ae4 ) 5a76: 4798 blx r3 lv_res_t res = LV_RES_OK; 5a78: 2001 movs r0, #1 5a7a: bd10 pop {r4, pc} lv_obj_refresh_ext_draw_pad(obj); 5a7c: 4b1a ldr r3, [pc, #104] ; (5ae8 ) 5a7e: 4798 blx r3 lv_res_t res = LV_RES_OK; 5a80: 2001 movs r0, #1 5a82: bd10 pop {r4, pc} lv_obj_add_state(obj, LV_STATE_PRESSED); 5a84: 2110 movs r1, #16 5a86: 4b19 ldr r3, [pc, #100] ; (5aec ) 5a88: 4798 blx r3 lv_res_t res = LV_RES_OK; 5a8a: 2001 movs r0, #1 5a8c: bd10 pop {r4, pc} lv_obj_clear_state(obj, LV_STATE_PRESSED); 5a8e: 2110 movs r1, #16 5a90: 4b17 ldr r3, [pc, #92] ; (5af0 ) 5a92: 4798 blx r3 lv_res_t res = LV_RES_OK; 5a94: 2001 movs r0, #1 5a96: bd10 pop {r4, pc} if(lv_group_get_editing(lv_obj_get_group(obj))) { 5a98: 4b16 ldr r3, [pc, #88] ; (5af4 ) 5a9a: 4798 blx r3 5a9c: 4b16 ldr r3, [pc, #88] ; (5af8 ) 5a9e: 4798 blx r3 5aa0: b128 cbz r0, 5aae lv_obj_add_state(obj, state); 5aa2: 2106 movs r1, #6 5aa4: 4620 mov r0, r4 5aa6: 4b11 ldr r3, [pc, #68] ; (5aec ) 5aa8: 4798 blx r3 lv_res_t res = LV_RES_OK; 5aaa: 2001 movs r0, #1 5aac: bd10 pop {r4, pc} lv_obj_add_state(obj, LV_STATE_FOCUSED); 5aae: 2102 movs r1, #2 5ab0: 4620 mov r0, r4 5ab2: 4b0e ldr r3, [pc, #56] ; (5aec ) 5ab4: 4798 blx r3 lv_obj_clear_state(obj, LV_STATE_EDITED); 5ab6: 2104 movs r1, #4 5ab8: 4620 mov r0, r4 5aba: 4b0d ldr r3, [pc, #52] ; (5af0 ) 5abc: 4798 blx r3 lv_res_t res = LV_RES_OK; 5abe: 2001 movs r0, #1 5ac0: bd10 pop {r4, pc} lv_obj_clear_state(obj, LV_STATE_FOCUSED | LV_STATE_EDITED); 5ac2: 2106 movs r1, #6 5ac4: 4b0a ldr r3, [pc, #40] ; (5af0 ) 5ac6: 4798 blx r3 lv_res_t res = LV_RES_OK; 5ac8: 2001 movs r0, #1 5aca: bd10 pop {r4, pc} lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 5acc: 4b0b ldr r3, [pc, #44] ; (5afc ) 5ace: 4798 blx r3 lv_res_t res = LV_RES_OK; 5ad0: 2001 movs r0, #1 5ad2: bd10 pop {r4, pc} 5ad4: 000249d0 .word 0x000249d0 5ad8: 0000507d .word 0x0000507d 5adc: 000043fd .word 0x000043fd 5ae0: 000057f1 .word 0x000057f1 5ae4: 000039c9 .word 0x000039c9 5ae8: 00002c15 .word 0x00002c15 5aec: 00004c85 .word 0x00004c85 5af0: 00004ce1 .word 0x00004ce1 5af4: 00004dcd .word 0x00004dcd 5af8: 00002743 .word 0x00002743 5afc: 000030b5 .word 0x000030b5 00005b00 : * @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) { 5b00: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 5b04: 4605 mov r5, r0 5b06: 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) { 5b08: 2200 movs r2, #0 5b0a: 3110 adds r1, #16 5b0c: 4b1f ldr r3, [pc, #124] ; (5b8c ) 5b0e: 4798 blx r3 5b10: b350 cbz r0, 5b68 5b12: f898 3034 ldrb.w r3, [r8, #52] ; 0x34 5b16: f013 0f10 tst.w r3, #16 5b1a: d127 bne.n 5b6c lv_design_res_t design_res = obj->design_cb ? obj->design_cb(obj, area_p, 5b1c: f8d8 3020 ldr.w r3, [r8, #32] 5b20: b343 cbz r3, 5b74 5b22: 2202 movs r2, #2 5b24: 4629 mov r1, r5 5b26: 4640 mov r0, r8 5b28: 4798 blx r3 5b2a: 4681 mov r9, r0 LV_DESIGN_COVER_CHK) : LV_DESIGN_RES_NOT_COVER; if(design_res == LV_DESIGN_RES_MASKED) return NULL; 5b2c: 2803 cmp r0, #3 5b2e: d01f beq.n 5b70 lv_obj_t * i; _LV_LL_READ(obj->child_ll, i) { 5b30: f108 0604 add.w r6, r8, #4 5b34: 4630 mov r0, r6 5b36: 4b16 ldr r3, [pc, #88] ; (5b90 ) 5b38: 4798 blx r3 5b3a: 4604 mov r4, r0 5b3c: b160 cbz r0, 5b58 5b3e: 4f15 ldr r7, [pc, #84] ; (5b94 ) found_p = lv_refr_get_top_obj(area_p, i); 5b40: 4621 mov r1, r4 5b42: 4628 mov r0, r5 5b44: f7ff ffdc bl 5b00 /*If a children is ok then break*/ if(found_p != NULL) { 5b48: 4603 mov r3, r0 5b4a: b950 cbnz r0, 5b62 _LV_LL_READ(obj->child_ll, i) { 5b4c: 4621 mov r1, r4 5b4e: 4630 mov r0, r6 5b50: 47b8 blx r7 5b52: 4604 mov r4, r0 5b54: 2800 cmp r0, #0 5b56: d1f3 bne.n 5b40 } /*If no better children use this object*/ if(found_p == NULL) { if(design_res == LV_DESIGN_RES_COVER) { found_p = obj; 5b58: f1b9 0f01 cmp.w r9, #1 5b5c: bf0c ite eq 5b5e: 4643 moveq r3, r8 5b60: 2300 movne r3, #0 } } } return found_p; } 5b62: 4618 mov r0, r3 5b64: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} lv_obj_t * found_p = NULL; 5b68: 2300 movs r3, #0 5b6a: e7fa b.n 5b62 5b6c: 2300 movs r3, #0 5b6e: e7f8 b.n 5b62 if(design_res == LV_DESIGN_RES_MASKED) return NULL; 5b70: 2300 movs r3, #0 5b72: e7f6 b.n 5b62 _LV_LL_READ(obj->child_ll, i) { 5b74: f108 0604 add.w r6, r8, #4 5b78: 4630 mov r0, r6 5b7a: 4b05 ldr r3, [pc, #20] ; (5b90 ) 5b7c: 4798 blx r3 5b7e: 4604 mov r4, r0 lv_design_res_t design_res = obj->design_cb ? obj->design_cb(obj, area_p, 5b80: f04f 0902 mov.w r9, #2 _LV_LL_READ(obj->child_ll, i) { 5b84: 2800 cmp r0, #0 5b86: d1da bne.n 5b3e 5b88: 4603 mov r3, r0 5b8a: e7ea b.n 5b62 5b8c: 00011755 .word 0x00011755 5b90: 00011f91 .word 0x00011f91 5b94: 00011fa5 .word 0x00011fa5 00005b98 : * @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; 5b98: f890 3034 ldrb.w r3, [r0, #52] ; 0x34 5b9c: f013 0f10 tst.w r3, #16 5ba0: d000 beq.n 5ba4 5ba2: 4770 bx lr { 5ba4: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 5ba8: b08b sub sp, #44 ; 0x2c 5baa: 460e mov r6, r1 5bac: 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; 5bae: f9b0 4032 ldrsh.w r4, [r0, #50] ; 0x32 lv_obj_get_coords(obj, &obj_area); 5bb2: a904 add r1, sp, #16 5bb4: 4b35 ldr r3, [pc, #212] ; (5c8c ) 5bb6: 4798 blx r3 obj_area.x1 -= ext_size; 5bb8: b2a3 uxth r3, r4 5bba: f8bd 2010 ldrh.w r2, [sp, #16] 5bbe: 1ad2 subs r2, r2, r3 5bc0: f8ad 2010 strh.w r2, [sp, #16] obj_area.y1 -= ext_size; 5bc4: f8bd 2012 ldrh.w r2, [sp, #18] 5bc8: 1ad2 subs r2, r2, r3 5bca: f8ad 2012 strh.w r2, [sp, #18] obj_area.x2 += ext_size; 5bce: f8bd 2014 ldrh.w r2, [sp, #20] 5bd2: 441a add r2, r3 5bd4: f8ad 2014 strh.w r2, [sp, #20] obj_area.y2 += ext_size; 5bd8: f8bd 2016 ldrh.w r2, [sp, #22] 5bdc: 4413 add r3, r2 5bde: f8ad 3016 strh.w r3, [sp, #22] union_ok = _lv_area_intersect(&obj_ext_mask, mask_ori_p, &obj_area); 5be2: aa04 add r2, sp, #16 5be4: 4631 mov r1, r6 5be6: a806 add r0, sp, #24 5be8: 4b29 ldr r3, [pc, #164] ; (5c90 ) 5bea: 4798 blx r3 /*Draw the parent and its children only if they ore on 'mask_parent'*/ if(union_ok != false) { 5bec: b1a8 cbz r0, 5c1a /* Redraw the object */ if(obj->design_cb) obj->design_cb(obj, &obj_ext_mask, LV_DESIGN_DRAW_MAIN); 5bee: 6a2b ldr r3, [r5, #32] 5bf0: b11b cbz r3, 5bfa 5bf2: 2200 movs r2, #0 5bf4: a906 add r1, sp, #24 5bf6: 4628 mov r0, r5 5bf8: 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); 5bfa: a904 add r1, sp, #16 5bfc: 4628 mov r0, r5 5bfe: 4b23 ldr r3, [pc, #140] ; (5c8c ) 5c00: 4798 blx r3 union_ok = _lv_area_intersect(&obj_mask, mask_ori_p, &obj_area); 5c02: aa04 add r2, sp, #16 5c04: 4631 mov r1, r6 5c06: a808 add r0, sp, #32 5c08: 4b21 ldr r3, [pc, #132] ; (5c90 ) 5c0a: 4798 blx r3 if(union_ok != false) { 5c0c: b940 cbnz r0, 5c20 } } } /* 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); 5c0e: 6a2b ldr r3, [r5, #32] 5c10: b11b cbz r3, 5c1a 5c12: 2201 movs r2, #1 5c14: a906 add r1, sp, #24 5c16: 4628 mov r0, r5 5c18: 4798 blx r3 } } 5c1a: b00b add sp, #44 ; 0x2c 5c1c: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} _LV_LL_READ_BACK(obj->child_ll, child_p) { 5c20: f105 0804 add.w r8, r5, #4 5c24: 4640 mov r0, r8 5c26: 4b1b ldr r3, [pc, #108] ; (5c94 ) 5c28: 4798 blx r3 5c2a: 4604 mov r4, r0 5c2c: 2800 cmp r0, #0 5c2e: d0ee beq.n 5c0e lv_obj_get_coords(child_p, &child_area); 5c30: f8df 9058 ldr.w r9, [pc, #88] ; 5c8c union_ok = _lv_area_intersect(&mask_child, &obj_mask, &child_area); 5c34: 4e16 ldr r6, [pc, #88] ; (5c90 ) _LV_LL_READ_BACK(obj->child_ll, child_p) { 5c36: 4f18 ldr r7, [pc, #96] ; (5c98 ) 5c38: e005 b.n 5c46 5c3a: 4621 mov r1, r4 5c3c: 4640 mov r0, r8 5c3e: 47b8 blx r7 5c40: 4604 mov r4, r0 5c42: 2800 cmp r0, #0 5c44: d0e3 beq.n 5c0e lv_obj_get_coords(child_p, &child_area); 5c46: a902 add r1, sp, #8 5c48: 4620 mov r0, r4 5c4a: 47c8 blx r9 child_area.x1 -= ext_size; 5c4c: 8e63 ldrh r3, [r4, #50] ; 0x32 5c4e: f8bd 2008 ldrh.w r2, [sp, #8] 5c52: 1ad2 subs r2, r2, r3 5c54: f8ad 2008 strh.w r2, [sp, #8] child_area.y1 -= ext_size; 5c58: f8bd 200a ldrh.w r2, [sp, #10] 5c5c: 1ad2 subs r2, r2, r3 5c5e: f8ad 200a strh.w r2, [sp, #10] child_area.x2 += ext_size; 5c62: f8bd 200c ldrh.w r2, [sp, #12] 5c66: 441a add r2, r3 5c68: f8ad 200c strh.w r2, [sp, #12] child_area.y2 += ext_size; 5c6c: f8bd 200e ldrh.w r2, [sp, #14] 5c70: 4413 add r3, r2 5c72: f8ad 300e strh.w r3, [sp, #14] union_ok = _lv_area_intersect(&mask_child, &obj_mask, &child_area); 5c76: aa02 add r2, sp, #8 5c78: a908 add r1, sp, #32 5c7a: 4668 mov r0, sp 5c7c: 47b0 blx r6 if(union_ok) { 5c7e: 2800 cmp r0, #0 5c80: d0db beq.n 5c3a lv_refr_obj(child_p, &mask_child); 5c82: 4669 mov r1, sp 5c84: 4620 mov r0, r4 5c86: f7ff ff87 bl 5b98 5c8a: e7d6 b.n 5c3a 5c8c: 00002e29 .word 0x00002e29 5c90: 00011501 .word 0x00011501 5c94: 00011f9b .word 0x00011f9b 5c98: 00011fd1 .word 0x00011fd1 00005c9c : { 5c9c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 5ca0: 460f mov r7, r1 if(top_p == NULL) top_p = lv_disp_get_scr_act(disp_refr); 5ca2: 4604 mov r4, r0 5ca4: b170 cbz r0, 5cc4 lv_refr_obj(top_p, mask_p); 5ca6: 4639 mov r1, r7 5ca8: 4620 mov r0, r4 5caa: 4b1a ldr r3, [pc, #104] ; (5d14 ) 5cac: 4798 blx r3 par = lv_obj_get_parent(top_p); 5cae: 4620 mov r0, r4 5cb0: 4b19 ldr r3, [pc, #100] ; (5d18 ) 5cb2: 4798 blx r3 while(par != NULL) { 5cb4: 4681 mov r9, r0 5cb6: b160 cbz r0, 5cd2 lv_obj_t * i = _lv_ll_get_prev(&(par->child_ll), border_p); 5cb8: 4e18 ldr r6, [pc, #96] ; (5d1c ) lv_refr_obj(i, mask_p); 5cba: f8df 8058 ldr.w r8, [pc, #88] ; 5d14 par = lv_obj_get_parent(par); 5cbe: f8df a058 ldr.w sl, [pc, #88] ; 5d18 5cc2: e00e b.n 5ce2 if(top_p == NULL) top_p = lv_disp_get_scr_act(disp_refr); 5cc4: 4b16 ldr r3, [pc, #88] ; (5d20 ) 5cc6: 6818 ldr r0, [r3, #0] 5cc8: 4b16 ldr r3, [pc, #88] ; (5d24 ) 5cca: 4798 blx r3 if(top_p == NULL) return; /*Shouldn't happen*/ 5ccc: 4604 mov r4, r0 5cce: 2800 cmp r0, #0 5cd0: d1e9 bne.n 5ca6 5cd2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} par = lv_obj_get_parent(par); 5cd6: 4648 mov r0, r9 5cd8: 47d0 blx sl 5cda: 464c mov r4, r9 while(par != NULL) { 5cdc: 4681 mov r9, r0 5cde: 2800 cmp r0, #0 5ce0: d0f7 beq.n 5cd2 lv_obj_t * i = _lv_ll_get_prev(&(par->child_ll), border_p); 5ce2: f109 0504 add.w r5, r9, #4 5ce6: 4621 mov r1, r4 5ce8: 4628 mov r0, r5 5cea: 47b0 blx r6 while(i != NULL) { 5cec: 4604 mov r4, r0 5cee: b140 cbz r0, 5d02 lv_refr_obj(i, mask_p); 5cf0: 4639 mov r1, r7 5cf2: 4620 mov r0, r4 5cf4: 47c0 blx r8 i = _lv_ll_get_prev(&(par->child_ll), i); 5cf6: 4621 mov r1, r4 5cf8: 4628 mov r0, r5 5cfa: 47b0 blx r6 while(i != NULL) { 5cfc: 4604 mov r4, r0 5cfe: 2800 cmp r0, #0 5d00: d1f6 bne.n 5cf0 if(par->design_cb) par->design_cb(par, mask_p, LV_DESIGN_DRAW_POST); 5d02: f8d9 3020 ldr.w r3, [r9, #32] 5d06: 2b00 cmp r3, #0 5d08: d0e5 beq.n 5cd6 5d0a: 2201 movs r2, #1 5d0c: 4639 mov r1, r7 5d0e: 4648 mov r0, r9 5d10: 4798 blx r3 5d12: e7e0 b.n 5cd6 5d14: 00005b99 .word 0x00005b99 5d18: 00002c65 .word 0x00002c65 5d1c: 00011fd1 .word 0x00011fd1 5d20: 20002688 .word 0x20002688 5d24: 00002335 .word 0x00002335 00005d28 : /** * Flush the content of the VDB */ static void lv_refr_vdb_flush(void) { 5d28: b538 push {r3, r4, r5, lr} lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 5d2a: 4d1a ldr r5, [pc, #104] ; (5d94 ) 5d2c: 6828 ldr r0, [r5, #0] 5d2e: 4b1a ldr r3, [pc, #104] ; (5d98 ) 5d30: 4798 blx r3 5d32: 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)) { 5d34: 6828 ldr r0, [r5, #0] 5d36: 4b19 ldr r3, [pc, #100] ; (5d9c ) 5d38: 4798 blx r3 5d3a: b978 cbnz r0, 5d5c while(vdb->flushing) { if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); } } vdb->flushing = 1; 5d3c: 2301 movs r3, #1 5d3e: 61a3 str r3, [r4, #24] if(disp_refr->driver.buffer->last_area && disp_refr->driver.buffer->last_part) vdb->flushing_last = 1; 5d40: 4b14 ldr r3, [pc, #80] ; (5d94 ) 5d42: 6818 ldr r0, [r3, #0] 5d44: 6843 ldr r3, [r0, #4] 5d46: 6a1a ldr r2, [r3, #32] 5d48: f012 0f01 tst.w r2, #1 5d4c: d010 beq.n 5d70 5d4e: 6a1b ldr r3, [r3, #32] 5d50: f013 0f02 tst.w r3, #2 5d54: d00c beq.n 5d70 5d56: 2301 movs r3, #1 5d58: 61e3 str r3, [r4, #28] 5d5a: e00b b.n 5d74 if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 5d5c: 4d0d ldr r5, [pc, #52] ; (5d94 ) 5d5e: 6828 ldr r0, [r5, #0] while(vdb->flushing) { 5d60: 69a3 ldr r3, [r4, #24] 5d62: 2b00 cmp r3, #0 5d64: d0ea beq.n 5d3c if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 5d66: 69c3 ldr r3, [r0, #28] 5d68: 2b00 cmp r3, #0 5d6a: d0f9 beq.n 5d60 5d6c: 4798 blx r3 5d6e: e7f6 b.n 5d5e else vdb->flushing_last = 0; 5d70: 2300 movs r3, #0 5d72: 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); 5d74: 68c3 ldr r3, [r0, #12] 5d76: b11b cbz r3, 5d80 5d78: 68a2 ldr r2, [r4, #8] 5d7a: f104 0110 add.w r1, r4, #16 5d7e: 4798 blx r3 if(vdb->buf1 && vdb->buf2) { 5d80: 6823 ldr r3, [r4, #0] 5d82: b133 cbz r3, 5d92 5d84: 6862 ldr r2, [r4, #4] 5d86: b122 cbz r2, 5d92 if(vdb->buf_act == vdb->buf1) 5d88: 68a1 ldr r1, [r4, #8] vdb->buf_act = vdb->buf2; 5d8a: 428b cmp r3, r1 5d8c: bf08 it eq 5d8e: 4613 moveq r3, r2 5d90: 60a3 str r3, [r4, #8] 5d92: bd38 pop {r3, r4, r5, pc} 5d94: 20002688 .word 0x20002688 5d98: 00010fc5 .word 0x00010fc5 5d9c: 00010fc9 .word 0x00010fc9 00005da0 : { 5da0: b570 push {r4, r5, r6, lr} 5da2: b082 sub sp, #8 5da4: 4606 mov r6, r0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 5da6: 4d1a ldr r5, [pc, #104] ; (5e10 ) 5da8: 6828 ldr r0, [r5, #0] 5daa: 4b1a ldr r3, [pc, #104] ; (5e14 ) 5dac: 4798 blx r3 5dae: 4604 mov r4, r0 if(lv_disp_is_double_buf(disp_refr) == false) { 5db0: 6828 ldr r0, [r5, #0] 5db2: 4b19 ldr r3, [pc, #100] ; (5e18 ) 5db4: 4798 blx r3 5db6: b938 cbnz r0, 5dc8 if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 5db8: 6828 ldr r0, [r5, #0] while(vdb->flushing) { 5dba: 69a3 ldr r3, [r4, #24] 5dbc: b123 cbz r3, 5dc8 if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 5dbe: 69c3 ldr r3, [r0, #28] 5dc0: 2b00 cmp r3, #0 5dc2: d0fa beq.n 5dba 5dc4: 4798 blx r3 5dc6: e7f7 b.n 5db8 _lv_area_intersect(&start_mask, area_p, &vdb->area); 5dc8: f104 0210 add.w r2, r4, #16 5dcc: 4631 mov r1, r6 5dce: 4668 mov r0, sp 5dd0: 4b12 ldr r3, [pc, #72] ; (5e1c ) 5dd2: 4798 blx r3 top_p = lv_refr_get_top_obj(&start_mask, lv_disp_get_scr_act(disp_refr)); 5dd4: 4c0e ldr r4, [pc, #56] ; (5e10 ) 5dd6: 6820 ldr r0, [r4, #0] 5dd8: 4b11 ldr r3, [pc, #68] ; (5e20 ) 5dda: 4798 blx r3 5ddc: 4601 mov r1, r0 5dde: 4668 mov r0, sp 5de0: 4b10 ldr r3, [pc, #64] ; (5e24 ) 5de2: 4798 blx r3 lv_refr_obj_and_children(top_p, &start_mask); 5de4: 4669 mov r1, sp 5de6: 4d10 ldr r5, [pc, #64] ; (5e28 ) 5de8: 47a8 blx r5 lv_refr_obj_and_children(lv_disp_get_layer_top(disp_refr), &start_mask); 5dea: 6820 ldr r0, [r4, #0] 5dec: 4b0f ldr r3, [pc, #60] ; (5e2c ) 5dee: 4798 blx r3 5df0: 4669 mov r1, sp 5df2: 47a8 blx r5 lv_refr_obj_and_children(lv_disp_get_layer_sys(disp_refr), &start_mask); 5df4: 6820 ldr r0, [r4, #0] 5df6: 4b0e ldr r3, [pc, #56] ; (5e30 ) 5df8: 4798 blx r3 5dfa: 4669 mov r1, sp 5dfc: 47a8 blx r5 if(lv_disp_is_true_double_buf(disp_refr) == false) { 5dfe: 6820 ldr r0, [r4, #0] 5e00: 4b0c ldr r3, [pc, #48] ; (5e34 ) 5e02: 4798 blx r3 5e04: b108 cbz r0, 5e0a } 5e06: b002 add sp, #8 5e08: bd70 pop {r4, r5, r6, pc} lv_refr_vdb_flush(); 5e0a: 4b0b ldr r3, [pc, #44] ; (5e38 ) 5e0c: 4798 blx r3 } 5e0e: e7fa b.n 5e06 5e10: 20002688 .word 0x20002688 5e14: 00010fc5 .word 0x00010fc5 5e18: 00010fc9 .word 0x00010fc9 5e1c: 00011501 .word 0x00011501 5e20: 00002335 .word 0x00002335 5e24: 00005b01 .word 0x00005b01 5e28: 00005c9d .word 0x00005c9d 5e2c: 00002375 .word 0x00002375 5e30: 000023b5 .word 0x000023b5 5e34: 00010fdd .word 0x00010fdd 5e38: 00005d29 .word 0x00005d29 00005e3c <_lv_refr_init>: { 5e3c: 4770 bx lr ... 00005e40 <_lv_inv_area>: { 5e40: b5f0 push {r4, r5, r6, r7, lr} 5e42: b085 sub sp, #20 5e44: 460c mov r4, r1 if(!disp) disp = lv_disp_get_default(); 5e46: 4605 mov r5, r0 5e48: 2800 cmp r0, #0 5e4a: d054 beq.n 5ef6 <_lv_inv_area+0xb6> if(area_p == NULL) { 5e4c: 2c00 cmp r4, #0 5e4e: d057 beq.n 5f00 <_lv_inv_area+0xc0> scr_area.x1 = 0; 5e50: 2300 movs r3, #0 5e52: f8ad 3008 strh.w r3, [sp, #8] scr_area.y1 = 0; 5e56: f8ad 300a strh.w r3, [sp, #10] scr_area.x2 = lv_disp_get_hor_res(disp) - 1; 5e5a: 4628 mov r0, r5 5e5c: 4b36 ldr r3, [pc, #216] ; (5f38 <_lv_inv_area+0xf8>) 5e5e: 4798 blx r3 5e60: 3801 subs r0, #1 5e62: f8ad 000c strh.w r0, [sp, #12] scr_area.y2 = lv_disp_get_ver_res(disp) - 1; 5e66: 4628 mov r0, r5 5e68: 4b34 ldr r3, [pc, #208] ; (5f3c <_lv_inv_area+0xfc>) 5e6a: 4798 blx r3 5e6c: 3801 subs r0, #1 5e6e: f8ad 000e strh.w r0, [sp, #14] suc = _lv_area_intersect(&com_area, area_p, &scr_area); 5e72: aa02 add r2, sp, #8 5e74: 4621 mov r1, r4 5e76: 4668 mov r0, sp 5e78: 4b31 ldr r3, [pc, #196] ; (5f40 <_lv_inv_area+0x100>) 5e7a: 4798 blx r3 if(suc != false) { 5e7c: 2800 cmp r0, #0 5e7e: d045 beq.n 5f0c <_lv_inv_area+0xcc> if(disp->driver.rounder_cb) disp->driver.rounder_cb(&disp->driver, &com_area); 5e80: 692b ldr r3, [r5, #16] 5e82: b113 cbz r3, 5e8a <_lv_inv_area+0x4a> 5e84: 4669 mov r1, sp 5e86: 4628 mov r0, r5 5e88: 4798 blx r3 for(i = 0; i < disp->inv_p; i++) { 5e8a: f8b5 3168 ldrh.w r3, [r5, #360] ; 0x168 5e8e: f3c3 0309 ubfx r3, r3, #0, #10 5e92: b19b cbz r3, 5ebc <_lv_inv_area+0x7c> 5e94: 2100 movs r1, #0 5e96: 460c mov r4, r1 if(_lv_area_is_in(&com_area, &disp->inv_areas[i], 0) != false) return; 5e98: 460f mov r7, r1 5e9a: 4e2a ldr r6, [pc, #168] ; (5f44 <_lv_inv_area+0x104>) 5e9c: 3109 adds r1, #9 5e9e: 463a mov r2, r7 5ea0: eb05 01c1 add.w r1, r5, r1, lsl #3 5ea4: 4668 mov r0, sp 5ea6: 47b0 blx r6 5ea8: bb80 cbnz r0, 5f0c <_lv_inv_area+0xcc> for(i = 0; i < disp->inv_p; i++) { 5eaa: 3401 adds r4, #1 5eac: b2a4 uxth r4, r4 5eae: 4621 mov r1, r4 5eb0: f8b5 3168 ldrh.w r3, [r5, #360] ; 0x168 5eb4: f3c3 0309 ubfx r3, r3, #0, #10 5eb8: 429c cmp r4, r3 5eba: dbef blt.n 5e9c <_lv_inv_area+0x5c> if(disp->inv_p < LV_INV_BUF_SIZE) { 5ebc: 2b1f cmp r3, #31 5ebe: dc27 bgt.n 5f10 <_lv_inv_area+0xd0> lv_area_copy(&disp->inv_areas[disp->inv_p], &com_area); 5ec0: 3309 adds r3, #9 5ec2: eb05 03c3 add.w r3, r5, r3, lsl #3 5ec6: f10d 32ff add.w r2, sp, #4294967295 5eca: f103 0008 add.w r0, r3, #8 *d8 = *s8; 5ece: f812 1f01 ldrb.w r1, [r2, #1]! 5ed2: f803 1b01 strb.w r1, [r3], #1 while(len) { 5ed6: 4283 cmp r3, r0 5ed8: d1f9 bne.n 5ece <_lv_inv_area+0x8e> disp->inv_p++; 5eda: f8b5 3168 ldrh.w r3, [r5, #360] ; 0x168 5ede: f3c3 0209 ubfx r2, r3, #0, #10 5ee2: 3201 adds r2, #1 5ee4: f362 0309 bfi r3, r2, #0, #10 5ee8: f8a5 3168 strh.w r3, [r5, #360] ; 0x168 lv_task_set_prio(disp->refr_task, LV_REFR_TASK_PRIO); 5eec: 2103 movs r1, #3 5eee: 6ae8 ldr r0, [r5, #44] ; 0x2c 5ef0: 4b15 ldr r3, [pc, #84] ; (5f48 <_lv_inv_area+0x108>) 5ef2: 4798 blx r3 5ef4: e00a b.n 5f0c <_lv_inv_area+0xcc> if(!disp) disp = lv_disp_get_default(); 5ef6: 4b15 ldr r3, [pc, #84] ; (5f4c <_lv_inv_area+0x10c>) 5ef8: 4798 blx r3 if(!disp) return; 5efa: 4605 mov r5, r0 5efc: b130 cbz r0, 5f0c <_lv_inv_area+0xcc> 5efe: e7a5 b.n 5e4c <_lv_inv_area+0xc> disp->inv_p = 0; 5f00: f8b5 3168 ldrh.w r3, [r5, #360] ; 0x168 5f04: f36f 0309 bfc r3, #0, #10 5f08: f8a5 3168 strh.w r3, [r5, #360] ; 0x168 } 5f0c: b005 add sp, #20 5f0e: bdf0 pop {r4, r5, r6, r7, pc} disp->inv_p = 0; 5f10: f8b5 3168 ldrh.w r3, [r5, #360] ; 0x168 5f14: f36f 0309 bfc r3, #0, #10 5f18: f8a5 3168 strh.w r3, [r5, #360] ; 0x168 5f1c: f10d 0207 add.w r2, sp, #7 5f20: f105 0050 add.w r0, r5, #80 ; 0x50 uint8_t * d8 = (uint8_t *)dst; 5f24: f105 0348 add.w r3, r5, #72 ; 0x48 *d8 = *s8; 5f28: f812 1f01 ldrb.w r1, [r2, #1]! 5f2c: f803 1b01 strb.w r1, [r3], #1 while(len) { 5f30: 4283 cmp r3, r0 5f32: d1f9 bne.n 5f28 <_lv_inv_area+0xe8> 5f34: e7d1 b.n 5eda <_lv_inv_area+0x9a> 5f36: bf00 nop 5f38: 00010ed5 .word 0x00010ed5 5f3c: 00010efd .word 0x00010efd 5f40: 00011501 .word 0x00011501 5f44: 00011755 .word 0x00011755 5f48: 00013941 .word 0x00013941 5f4c: 00010ec9 .word 0x00010ec9 00005f50 <_lv_refr_get_disp_refreshing>: } 5f50: 4b01 ldr r3, [pc, #4] ; (5f58 <_lv_refr_get_disp_refreshing+0x8>) 5f52: 6818 ldr r0, [r3, #0] 5f54: 4770 bx lr 5f56: bf00 nop 5f58: 20002688 .word 0x20002688 00005f5c <_lv_disp_refr_task>: { 5f5c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 5f60: b08d sub sp, #52 ; 0x34 5f62: 4605 mov r5, r0 uint32_t start = lv_tick_get(); 5f64: 4bb7 ldr r3, [pc, #732] ; (6244 <_lv_disp_refr_task+0x2e8>) 5f66: 4798 blx r3 5f68: 9009 str r0, [sp, #36] ; 0x24 disp_refr = task->user_data; 5f6a: 4cb7 ldr r4, [pc, #732] ; (6248 <_lv_disp_refr_task+0x2ec>) 5f6c: 68eb ldr r3, [r5, #12] 5f6e: 6023 str r3, [r4, #0] lv_task_set_prio(task, LV_TASK_PRIO_OFF); 5f70: 2100 movs r1, #0 5f72: 4628 mov r0, r5 5f74: 4bb5 ldr r3, [pc, #724] ; (624c <_lv_disp_refr_task+0x2f0>) 5f76: 4798 blx r3 if(disp_refr->act_scr == NULL) { 5f78: 6820 ldr r0, [r4, #0] 5f7a: 6bc3 ldr r3, [r0, #60] ; 0x3c 5f7c: b17b cbz r3, 5f9e <_lv_disp_refr_task+0x42> for(join_in = 0; join_in < disp_refr->inv_p; join_in++) { 5f7e: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 5f82: f3c3 0309 ubfx r3, r3, #0, #10 5f86: 2b00 cmp r3, #0 5f88: f000 8278 beq.w 647c <_lv_disp_refr_task+0x520> 5f8c: f04f 0848 mov.w r8, #72 ; 0x48 5f90: 2700 movs r7, #0 for(join_from = 0; join_from < disp_refr->inv_p; join_from++) { 5f92: 4dad ldr r5, [pc, #692] ; (6248 <_lv_disp_refr_task+0x2ec>) if(_lv_area_is_on(&disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]) == false) { 5f94: f8df a2e4 ldr.w sl, [pc, #740] ; 627c <_lv_disp_refr_task+0x320> if(lv_area_get_size(&joined_area) < (lv_area_get_size(&disp_refr->inv_areas[join_in]) + 5f98: f8df b2c8 ldr.w fp, [pc, #712] ; 6264 <_lv_disp_refr_task+0x308> 5f9c: e04d b.n 603a <_lv_disp_refr_task+0xde> disp_refr->inv_p = 0; 5f9e: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 5fa2: f36f 0309 bfc r3, #0, #10 5fa6: f8a0 3168 strh.w r3, [r0, #360] ; 0x168 return; 5faa: e262 b.n 6472 <_lv_disp_refr_task+0x516> disp_refr->inv_area_joined[join_from] = 1; 5fac: 4426 add r6, r4 5fae: 2301 movs r3, #1 5fb0: f886 3148 strb.w r3, [r6, #328] ; 0x148 for(join_from = 0; join_from < disp_refr->inv_p; join_from++) { 5fb4: 3401 adds r4, #1 5fb6: 6828 ldr r0, [r5, #0] 5fb8: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 5fbc: f3c3 0309 ubfx r3, r3, #0, #10 5fc0: 429c cmp r4, r3 5fc2: d230 bcs.n 6026 <_lv_disp_refr_task+0xca> if(disp_refr->inv_area_joined[join_from] != 0 || join_in == join_from) { 5fc4: 1903 adds r3, r0, r4 5fc6: f893 3148 ldrb.w r3, [r3, #328] ; 0x148 5fca: 2b00 cmp r3, #0 5fcc: d1f2 bne.n 5fb4 <_lv_disp_refr_task+0x58> 5fce: 42a7 cmp r7, r4 5fd0: d0f0 beq.n 5fb4 <_lv_disp_refr_task+0x58> 5fd2: f104 0609 add.w r6, r4, #9 5fd6: 00f6 lsls r6, r6, #3 if(_lv_area_is_on(&disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]) == false) { 5fd8: 1981 adds r1, r0, r6 5fda: 4440 add r0, r8 5fdc: 47d0 blx sl 5fde: 2800 cmp r0, #0 5fe0: d0e8 beq.n 5fb4 <_lv_disp_refr_task+0x58> _lv_area_join(&joined_area, &disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]); 5fe2: 6829 ldr r1, [r5, #0] 5fe4: 198a adds r2, r1, r6 5fe6: 4441 add r1, r8 5fe8: a80a add r0, sp, #40 ; 0x28 5fea: 4b99 ldr r3, [pc, #612] ; (6250 <_lv_disp_refr_task+0x2f4>) 5fec: 4798 blx r3 if(lv_area_get_size(&joined_area) < (lv_area_get_size(&disp_refr->inv_areas[join_in]) + 5fee: a80a add r0, sp, #40 ; 0x28 5ff0: 47d8 blx fp 5ff2: 9003 str r0, [sp, #12] 5ff4: 6828 ldr r0, [r5, #0] 5ff6: 4440 add r0, r8 5ff8: 47d8 blx fp 5ffa: 4681 mov r9, r0 lv_area_get_size(&disp_refr->inv_areas[join_from]))) { 5ffc: 6828 ldr r0, [r5, #0] 5ffe: 4430 add r0, r6 6000: 47d8 blx fp if(lv_area_get_size(&joined_area) < (lv_area_get_size(&disp_refr->inv_areas[join_in]) + 6002: 4448 add r0, r9 6004: 9b03 ldr r3, [sp, #12] 6006: 4283 cmp r3, r0 6008: d2d4 bcs.n 5fb4 <_lv_disp_refr_task+0x58> lv_area_copy(&disp_refr->inv_areas[join_in], &joined_area); 600a: 682e ldr r6, [r5, #0] 600c: eb06 0308 add.w r3, r6, r8 6010: f10d 0227 add.w r2, sp, #39 ; 0x27 6014: f103 0008 add.w r0, r3, #8 *d8 = *s8; 6018: f812 1f01 ldrb.w r1, [r2, #1]! 601c: f803 1b01 strb.w r1, [r3], #1 while(len) { 6020: 4283 cmp r3, r0 6022: d1f9 bne.n 6018 <_lv_disp_refr_task+0xbc> 6024: e7c2 b.n 5fac <_lv_disp_refr_task+0x50> for(join_in = 0; join_in < disp_refr->inv_p; join_in++) { 6026: 3701 adds r7, #1 6028: 6828 ldr r0, [r5, #0] 602a: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 602e: f3c3 0309 ubfx r3, r3, #0, #10 6032: f108 0808 add.w r8, r8, #8 6036: 429f cmp r7, r3 6038: d20e bcs.n 6058 <_lv_disp_refr_task+0xfc> if(disp_refr->inv_area_joined[join_in] != 0) continue; 603a: 4438 add r0, r7 603c: f890 3148 ldrb.w r3, [r0, #328] ; 0x148 6040: 2b00 cmp r3, #0 6042: d1f0 bne.n 6026 <_lv_disp_refr_task+0xca> for(join_from = 0; join_from < disp_refr->inv_p; join_from++) { 6044: 6828 ldr r0, [r5, #0] 6046: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 604a: f3c3 0309 ubfx r3, r3, #0, #10 604e: 2b00 cmp r3, #0 6050: f000 81fa beq.w 6448 <_lv_disp_refr_task+0x4ec> 6054: 2400 movs r4, #0 6056: e7b5 b.n 5fc4 <_lv_disp_refr_task+0x68> px_num = 0; 6058: 2100 movs r1, #0 605a: 4a7b ldr r2, [pc, #492] ; (6248 <_lv_disp_refr_task+0x2ec>) 605c: 6051 str r1, [r2, #4] if(disp_refr->inv_p == 0) return; 605e: 2b00 cmp r3, #0 6060: f000 81fa beq.w 6458 <_lv_disp_refr_task+0x4fc> for(i = disp_refr->inv_p - 1; i >= 0; i--) { 6064: 1e5a subs r2, r3, #1 6066: 4611 mov r1, r2 6068: 9207 str r2, [sp, #28] 606a: d432 bmi.n 60d2 <_lv_disp_refr_task+0x176> if(disp_refr->inv_area_joined[i] == 0) { 606c: 1882 adds r2, r0, r2 606e: f892 2148 ldrb.w r2, [r2, #328] ; 0x148 6072: b17a cbz r2, 6094 <_lv_disp_refr_task+0x138> 6074: f203 1347 addw r3, r3, #327 ; 0x147 6078: 4403 add r3, r0 607a: 460a mov r2, r1 for(i = disp_refr->inv_p - 1; i >= 0; i--) { 607c: 3a01 subs r2, #1 607e: f1b2 3fff cmp.w r2, #4294967295 6082: d005 beq.n 6090 <_lv_disp_refr_task+0x134> if(disp_refr->inv_area_joined[i] == 0) { 6084: f813 1d01 ldrb.w r1, [r3, #-1]! 6088: 2900 cmp r1, #0 608a: d1f7 bne.n 607c <_lv_disp_refr_task+0x120> 608c: 9207 str r2, [sp, #28] 608e: e001 b.n 6094 <_lv_disp_refr_task+0x138> int32_t last_i = 0; 6090: 2300 movs r3, #0 6092: 9307 str r3, [sp, #28] disp_refr->driver.buffer->last_area = 0; 6094: 6842 ldr r2, [r0, #4] 6096: f892 3020 ldrb.w r3, [r2, #32] 609a: f36f 0300 bfc r3, #0, #1 609e: f882 3020 strb.w r3, [r2, #32] disp_refr->driver.buffer->last_part = 0; 60a2: 6842 ldr r2, [r0, #4] 60a4: f892 3020 ldrb.w r3, [r2, #32] 60a8: f36f 0341 bfc r3, #1, #1 60ac: f882 3020 strb.w r3, [r2, #32] for(i = 0; i < disp_refr->inv_p; i++) { 60b0: 4b65 ldr r3, [pc, #404] ; (6248 <_lv_disp_refr_task+0x2ec>) 60b2: 681c ldr r4, [r3, #0] 60b4: f8b4 3168 ldrh.w r3, [r4, #360] ; 0x168 60b8: f3c3 0309 ubfx r3, r3, #0, #10 60bc: 2b00 cmp r3, #0 60be: f000 81cb beq.w 6458 <_lv_disp_refr_task+0x4fc> 60c2: 2348 movs r3, #72 ; 0x48 60c4: 9306 str r3, [sp, #24] 60c6: f04f 0a00 mov.w sl, #0 if(disp_refr->driver.monitor_cb) px_num += lv_area_get_size(&disp_refr->inv_areas[i]); 60ca: f8df b17c ldr.w fp, [pc, #380] ; 6248 <_lv_disp_refr_task+0x2ec> 60ce: 4627 mov r7, r4 60d0: e045 b.n 615e <_lv_disp_refr_task+0x202> int32_t last_i = 0; 60d2: 2300 movs r3, #0 60d4: 9307 str r3, [sp, #28] 60d6: e7dd b.n 6094 <_lv_disp_refr_task+0x138> if(i == last_i) disp_refr->driver.buffer->last_area = 1; 60d8: 687a ldr r2, [r7, #4] 60da: f892 3020 ldrb.w r3, [r2, #32] 60de: f043 0301 orr.w r3, r3, #1 60e2: f882 3020 strb.w r3, [r2, #32] 60e6: e043 b.n 6170 <_lv_disp_refr_task+0x214> lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 60e8: f8db 0000 ldr.w r0, [fp] 60ec: 4b59 ldr r3, [pc, #356] ; (6254 <_lv_disp_refr_task+0x2f8>) 60ee: 4798 blx r3 60f0: 4604 mov r4, r0 vdb->area.x1 = 0; 60f2: 2500 movs r5, #0 60f4: 8205 strh r5, [r0, #16] vdb->area.x2 = lv_disp_get_hor_res(disp_refr) - 1; 60f6: f8db 0000 ldr.w r0, [fp] 60fa: 4b57 ldr r3, [pc, #348] ; (6258 <_lv_disp_refr_task+0x2fc>) 60fc: 4798 blx r3 60fe: 3801 subs r0, #1 6100: 82a0 strh r0, [r4, #20] vdb->area.y1 = 0; 6102: 8265 strh r5, [r4, #18] vdb->area.y2 = lv_disp_get_ver_res(disp_refr) - 1; 6104: f8db 0000 ldr.w r0, [fp] 6108: 4b54 ldr r3, [pc, #336] ; (625c <_lv_disp_refr_task+0x300>) 610a: 4798 blx r3 610c: 3801 subs r0, #1 610e: 82e0 strh r0, [r4, #22] disp_refr->driver.buffer->last_part = 1; 6110: f8db 3000 ldr.w r3, [fp] 6114: 685a ldr r2, [r3, #4] 6116: f892 3020 ldrb.w r3, [r2, #32] 611a: f043 0302 orr.w r3, r3, #2 611e: f882 3020 strb.w r3, [r2, #32] lv_refr_area_part(area_p); 6122: 9803 ldr r0, [sp, #12] 6124: 4b4e ldr r3, [pc, #312] ; (6260 <_lv_disp_refr_task+0x304>) 6126: 4798 blx r3 if(disp_refr->driver.monitor_cb) px_num += lv_area_get_size(&disp_refr->inv_areas[i]); 6128: f8db 0000 ldr.w r0, [fp] 612c: 6983 ldr r3, [r0, #24] 612e: b143 cbz r3, 6142 <_lv_disp_refr_task+0x1e6> 6130: 9b06 ldr r3, [sp, #24] 6132: 4418 add r0, r3 6134: 4b4b ldr r3, [pc, #300] ; (6264 <_lv_disp_refr_task+0x308>) 6136: 4798 blx r3 6138: f8db 3004 ldr.w r3, [fp, #4] 613c: 4403 add r3, r0 613e: f8cb 3004 str.w r3, [fp, #4] for(i = 0; i < disp_refr->inv_p; i++) { 6142: f10a 0a01 add.w sl, sl, #1 6146: f8db 7000 ldr.w r7, [fp] 614a: 9b06 ldr r3, [sp, #24] 614c: 3308 adds r3, #8 614e: 9306 str r3, [sp, #24] 6150: f8b7 3168 ldrh.w r3, [r7, #360] ; 0x168 6154: f3c3 0309 ubfx r3, r3, #0, #10 6158: 459a cmp sl, r3 615a: f280 817d bge.w 6458 <_lv_disp_refr_task+0x4fc> if(disp_refr->inv_area_joined[i] == 0) { 615e: eb07 030a add.w r3, r7, sl 6162: f893 3148 ldrb.w r3, [r3, #328] ; 0x148 6166: 2b00 cmp r3, #0 6168: d1eb bne.n 6142 <_lv_disp_refr_task+0x1e6> if(i == last_i) disp_refr->driver.buffer->last_area = 1; 616a: 9b07 ldr r3, [sp, #28] 616c: 4553 cmp r3, sl 616e: d0b3 beq.n 60d8 <_lv_disp_refr_task+0x17c> disp_refr->driver.buffer->last_part = 0; 6170: 687a ldr r2, [r7, #4] 6172: f892 3020 ldrb.w r3, [r2, #32] 6176: f36f 0341 bfc r3, #1, #1 617a: f882 3020 strb.w r3, [r2, #32] lv_refr_area(&disp_refr->inv_areas[i]); 617e: 9b06 ldr r3, [sp, #24] 6180: 18fb adds r3, r7, r3 6182: 9303 str r3, [sp, #12] if(lv_disp_is_true_double_buf(disp_refr)) { 6184: 4638 mov r0, r7 6186: 4b38 ldr r3, [pc, #224] ; (6268 <_lv_disp_refr_task+0x30c>) 6188: 4798 blx r3 618a: 2800 cmp r0, #0 618c: d1ac bne.n 60e8 <_lv_disp_refr_task+0x18c> lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 618e: f8db 0000 ldr.w r0, [fp] 6192: 4b30 ldr r3, [pc, #192] ; (6254 <_lv_disp_refr_task+0x2f8>) 6194: 4798 blx r3 6196: 4606 mov r6, r0 6198: eb07 07ca add.w r7, r7, sl, lsl #3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 619c: f8b7 404c ldrh.w r4, [r7, #76] ; 0x4c 61a0: 3401 adds r4, #1 61a2: f8b7 3048 ldrh.w r3, [r7, #72] ; 0x48 61a6: 1ae4 subs r4, r4, r3 61a8: b224 sxth r4, r4 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 61aa: f9b7 504e ldrsh.w r5, [r7, #78] ; 0x4e 61ae: f105 0801 add.w r8, r5, #1 61b2: f8b7 304a ldrh.w r3, [r7, #74] ; 0x4a 61b6: eba8 0803 sub.w r8, r8, r3 61ba: 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; 61be: f8db 0000 ldr.w r0, [fp] 61c2: 4b26 ldr r3, [pc, #152] ; (625c <_lv_disp_refr_task+0x300>) 61c4: 4798 blx r3 lv_coord_t y2 = 61c6: 4285 cmp r5, r0 61c8: da34 bge.n 6234 <_lv_disp_refr_task+0x2d8> 61ca: f9b7 904e ldrsh.w r9, [r7, #78] ; 0x4e int32_t max_row = (uint32_t)vdb->size / w; 61ce: 68f3 ldr r3, [r6, #12] 61d0: fbb3 f3f4 udiv r3, r3, r4 61d4: 4598 cmp r8, r3 61d6: bfa8 it ge 61d8: 4698 movge r8, r3 if(disp_refr->driver.rounder_cb) { 61da: f8db 3000 ldr.w r3, [fp] 61de: 691b ldr r3, [r3, #16] 61e0: 2b00 cmp r3, #0 61e2: d052 beq.n 628a <_lv_disp_refr_task+0x32e> tmp.x1 = 0; 61e4: 2300 movs r3, #0 61e6: f8ad 3028 strh.w r3, [sp, #40] ; 0x28 tmp.x2 = 0; 61ea: f8ad 302c strh.w r3, [sp, #44] ; 0x2c tmp.y1 = 0; 61ee: f8ad 302a strh.w r3, [sp, #42] ; 0x2a lv_coord_t h_tmp = max_row; 61f2: fa0f f588 sxth.w r5, r8 61f6: 1e6c subs r4, r5, #1 61f8: b224 sxth r4, r4 tmp.y2 = h_tmp - 1; 61fa: f8ad 402e strh.w r4, [sp, #46] ; 0x2e disp_refr->driver.rounder_cb(&disp_refr->driver, &tmp); 61fe: f8db 0000 ldr.w r0, [fp] 6202: 6903 ldr r3, [r0, #16] 6204: a90a add r1, sp, #40 ; 0x28 6206: 4798 blx r3 6208: f9bd 102e ldrsh.w r1, [sp, #46] ; 0x2e 620c: 1c4b adds r3, r1, #1 620e: f8bd 202a ldrh.w r2, [sp, #42] ; 0x2a 6212: 1a9b subs r3, r3, r2 if(lv_area_get_height(&tmp) <= max_row) break; 6214: b21b sxth r3, r3 6216: 4598 cmp r8, r3 6218: da32 bge.n 6280 <_lv_disp_refr_task+0x324> h_tmp--; 621a: 4625 mov r5, r4 } while(h_tmp > 0); 621c: 2c00 cmp r4, #0 621e: dcea bgt.n 61f6 <_lv_disp_refr_task+0x29a> LV_LOG_WARN("Can't set VDB height using the round function. (Wrong round_cb or to " 6220: 4b12 ldr r3, [pc, #72] ; (626c <_lv_disp_refr_task+0x310>) 6222: 9300 str r3, [sp, #0] 6224: 4b12 ldr r3, [pc, #72] ; (6270 <_lv_disp_refr_task+0x314>) 6226: f240 129f movw r2, #415 ; 0x19f 622a: 4912 ldr r1, [pc, #72] ; (6274 <_lv_disp_refr_task+0x318>) 622c: 2002 movs r0, #2 622e: 4c12 ldr r4, [pc, #72] ; (6278 <_lv_disp_refr_task+0x31c>) 6230: 47a0 blx r4 6232: e779 b.n 6128 <_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; 6234: f8db 0000 ldr.w r0, [fp] 6238: 4b08 ldr r3, [pc, #32] ; (625c <_lv_disp_refr_task+0x300>) 623a: 4798 blx r3 623c: 3801 subs r0, #1 lv_coord_t y2 = 623e: fa0f f980 sxth.w r9, r0 6242: e7c4 b.n 61ce <_lv_disp_refr_task+0x272> 6244: 00011041 .word 0x00011041 6248: 20002688 .word 0x20002688 624c: 00013941 .word 0x00013941 6250: 00011557 .word 0x00011557 6254: 00010fc5 .word 0x00010fc5 6258: 00010ed5 .word 0x00010ed5 625c: 00010efd .word 0x00010efd 6260: 00005da1 .word 0x00005da1 6264: 000114e5 .word 0x000114e5 6268: 00010fdd .word 0x00010fdd 626c: 00024a14 .word 0x00024a14 6270: 000249d8 .word 0x000249d8 6274: 000249e8 .word 0x000249e8 6278: 00012245 .word 0x00012245 627c: 00011711 .word 0x00011711 if(h_tmp <= 0) { 6280: 2d00 cmp r5, #0 max_row = tmp.y2 + 1; 6282: bfc8 it gt 6284: f101 0801 addgt.w r8, r1, #1 if(h_tmp <= 0) { 6288: ddca ble.n 6220 <_lv_disp_refr_task+0x2c4> for(row = area_p->y1; row + max_row - 1 <= y2; row += max_row) { 628a: f9b7 404a ldrsh.w r4, [r7, #74] ; 0x4a 628e: f8cd 9010 str.w r9, [sp, #16] 6292: eb04 0308 add.w r3, r4, r8 6296: 3b01 subs r3, #1 6298: 454b cmp r3, r9 629a: dc4b bgt.n 6334 <_lv_disp_refr_task+0x3d8> vdb->area.y2 = row + max_row - 1; 629c: fa1f f388 uxth.w r3, r8 62a0: 9305 str r3, [sp, #20] 62a2: 3b01 subs r3, #1 62a4: f8cd a020 str.w sl, [sp, #32] 62a8: 469a mov sl, r3 62aa: e00d b.n 62c8 <_lv_disp_refr_task+0x36c> if(y2 == row_last) disp_refr->driver.buffer->last_part = 1; 62ac: 45a9 cmp r9, r5 62ae: d01c beq.n 62ea <_lv_disp_refr_task+0x38e> lv_refr_area_part(area_p); 62b0: 9803 ldr r0, [sp, #12] 62b2: 4b78 ldr r3, [pc, #480] ; (6494 <_lv_disp_refr_task+0x538>) 62b4: 4798 blx r3 62b6: 9b05 ldr r3, [sp, #20] 62b8: 441c add r4, r3 62ba: b224 sxth r4, r4 for(row = area_p->y1; row + max_row - 1 <= y2; row += max_row) { 62bc: eb04 0308 add.w r3, r4, r8 62c0: 3b01 subs r3, #1 62c2: 9a04 ldr r2, [sp, #16] 62c4: 4293 cmp r3, r2 62c6: dc1a bgt.n 62fe <_lv_disp_refr_task+0x3a2> vdb->area.x1 = area_p->x1; 62c8: f9b7 3048 ldrsh.w r3, [r7, #72] ; 0x48 62cc: 8233 strh r3, [r6, #16] vdb->area.x2 = area_p->x2; 62ce: f9b7 304c ldrsh.w r3, [r7, #76] ; 0x4c 62d2: 82b3 strh r3, [r6, #20] vdb->area.y1 = row; 62d4: 8274 strh r4, [r6, #18] 62d6: b2a4 uxth r4, r4 62d8: eb04 050a add.w r5, r4, sl 62dc: b22d sxth r5, r5 vdb->area.y2 = row + max_row - 1; 62de: 82f5 strh r5, [r6, #22] if(vdb->area.y2 > y2) vdb->area.y2 = y2; 62e0: 45a9 cmp r9, r5 62e2: dae3 bge.n 62ac <_lv_disp_refr_task+0x350> 62e4: f8a6 9016 strh.w r9, [r6, #22] row_last = vdb->area.y2; 62e8: 464d mov r5, r9 if(y2 == row_last) disp_refr->driver.buffer->last_part = 1; 62ea: f8db 3000 ldr.w r3, [fp] 62ee: 685a ldr r2, [r3, #4] 62f0: f892 3020 ldrb.w r3, [r2, #32] 62f4: f043 0302 orr.w r3, r3, #2 62f8: f882 3020 strb.w r3, [r2, #32] 62fc: e7d8 b.n 62b0 <_lv_disp_refr_task+0x354> 62fe: f8dd a020 ldr.w sl, [sp, #32] if(y2 != row_last) { 6302: 45a9 cmp r9, r5 6304: f43f af10 beq.w 6128 <_lv_disp_refr_task+0x1cc> vdb->area.x1 = area_p->x1; 6308: f9b7 3048 ldrsh.w r3, [r7, #72] ; 0x48 630c: 8233 strh r3, [r6, #16] vdb->area.x2 = area_p->x2; 630e: f9b7 304c ldrsh.w r3, [r7, #76] ; 0x4c 6312: 82b3 strh r3, [r6, #20] vdb->area.y1 = row; 6314: 8274 strh r4, [r6, #18] vdb->area.y2 = y2; 6316: f8a6 9016 strh.w r9, [r6, #22] disp_refr->driver.buffer->last_part = 1; 631a: f8db 3000 ldr.w r3, [fp] 631e: 685a ldr r2, [r3, #4] 6320: f892 3020 ldrb.w r3, [r2, #32] 6324: f043 0302 orr.w r3, r3, #2 6328: f882 3020 strb.w r3, [r2, #32] lv_refr_area_part(area_p); 632c: 9803 ldr r0, [sp, #12] 632e: 4b59 ldr r3, [pc, #356] ; (6494 <_lv_disp_refr_task+0x538>) 6330: 4798 blx r3 6332: e6f9 b.n 6128 <_lv_disp_refr_task+0x1cc> lv_coord_t row_last = 0; 6334: 2500 movs r5, #0 6336: e7e4 b.n 6302 <_lv_disp_refr_task+0x3a6> if(lv_disp_is_true_double_buf(disp_refr) && disp_refr->driver.set_px_cb == NULL) { 6338: 4b57 ldr r3, [pc, #348] ; (6498 <_lv_disp_refr_task+0x53c>) 633a: 4798 blx r3 633c: b118 cbz r0, 6346 <_lv_disp_refr_task+0x3ea> 633e: 4b57 ldr r3, [pc, #348] ; (649c <_lv_disp_refr_task+0x540>) 6340: 6818 ldr r0, [r3, #0] 6342: 6943 ldr r3, [r0, #20] 6344: b1eb cbz r3, 6382 <_lv_disp_refr_task+0x426> _lv_memset_00(disp_refr->inv_areas, sizeof(disp_refr->inv_areas)); 6346: 4c55 ldr r4, [pc, #340] ; (649c <_lv_disp_refr_task+0x540>) 6348: 6820 ldr r0, [r4, #0] 634a: f44f 7180 mov.w r1, #256 ; 0x100 634e: 3048 adds r0, #72 ; 0x48 6350: 4d53 ldr r5, [pc, #332] ; (64a0 <_lv_disp_refr_task+0x544>) 6352: 47a8 blx r5 _lv_memset_00(disp_refr->inv_area_joined, sizeof(disp_refr->inv_area_joined)); 6354: 6820 ldr r0, [r4, #0] 6356: 2120 movs r1, #32 6358: f500 70a4 add.w r0, r0, #328 ; 0x148 635c: 47a8 blx r5 disp_refr->inv_p = 0; 635e: 6823 ldr r3, [r4, #0] 6360: f8b3 2168 ldrh.w r2, [r3, #360] ; 0x168 6364: f36f 0209 bfc r2, #0, #10 6368: f8a3 2168 strh.w r2, [r3, #360] ; 0x168 elaps = lv_tick_elaps(start); 636c: 9809 ldr r0, [sp, #36] ; 0x24 636e: 4b4d ldr r3, [pc, #308] ; (64a4 <_lv_disp_refr_task+0x548>) 6370: 4798 blx r3 6372: 4601 mov r1, r0 if(disp_refr->driver.monitor_cb) { 6374: 6820 ldr r0, [r4, #0] 6376: 6983 ldr r3, [r0, #24] 6378: 2b00 cmp r3, #0 637a: d076 beq.n 646a <_lv_disp_refr_task+0x50e> disp_refr->driver.monitor_cb(&disp_refr->driver, elaps, px_num); 637c: 6862 ldr r2, [r4, #4] 637e: 4798 blx r3 6380: e073 b.n 646a <_lv_disp_refr_task+0x50e> lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 6382: 4b49 ldr r3, [pc, #292] ; (64a8 <_lv_disp_refr_task+0x54c>) 6384: 4798 blx r3 6386: 4604 mov r4, r0 lv_refr_vdb_flush(); 6388: 4b48 ldr r3, [pc, #288] ; (64ac <_lv_disp_refr_task+0x550>) 638a: 4798 blx r3 while(vdb->flushing) 638c: 69a3 ldr r3, [r4, #24] 638e: 2b00 cmp r3, #0 6390: d1fc bne.n 638c <_lv_disp_refr_task+0x430> uint8_t * buf_act = (uint8_t *)vdb->buf_act; 6392: 68a3 ldr r3, [r4, #8] 6394: 9303 str r3, [sp, #12] uint8_t * buf_ina = (uint8_t *)vdb->buf_act == vdb->buf1 ? vdb->buf2 : vdb->buf1; 6396: f8d4 a000 ldr.w sl, [r4] 639a: 4553 cmp r3, sl 639c: bf08 it eq 639e: f8d4 a004 ldreq.w sl, [r4, #4] lv_coord_t hres = lv_disp_get_hor_res(disp_refr); 63a2: 4c3e ldr r4, [pc, #248] ; (649c <_lv_disp_refr_task+0x540>) 63a4: 6820 ldr r0, [r4, #0] 63a6: 4b42 ldr r3, [pc, #264] ; (64b0 <_lv_disp_refr_task+0x554>) 63a8: 4798 blx r3 63aa: 9004 str r0, [sp, #16] for(a = 0; a < disp_refr->inv_p; a++) { 63ac: 6823 ldr r3, [r4, #0] 63ae: f8b3 2168 ldrh.w r2, [r3, #360] ; 0x168 63b2: f3c2 0209 ubfx r2, r2, #0, #10 63b6: 2a00 cmp r2, #0 63b8: d0c5 beq.n 6346 <_lv_disp_refr_task+0x3ea> start_offs += hres * sizeof(lv_color_t); 63ba: 0045 lsls r5, r0, #1 63bc: 2200 movs r2, #0 63be: 4690 mov r8, r2 for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 63c0: 46a1 mov r9, r4 63c2: e00c b.n 63de <_lv_disp_refr_task+0x482> for(a = 0; a < disp_refr->inv_p; a++) { 63c4: f108 0801 add.w r8, r8, #1 63c8: fa1f f888 uxth.w r8, r8 63cc: 4642 mov r2, r8 63ce: f8d9 3000 ldr.w r3, [r9] 63d2: f8b3 1168 ldrh.w r1, [r3, #360] ; 0x168 63d6: f3c1 0109 ubfx r1, r1, #0, #10 63da: 4588 cmp r8, r1 63dc: dab3 bge.n 6346 <_lv_disp_refr_task+0x3ea> if(disp_refr->inv_area_joined[a] == 0) { 63de: 1899 adds r1, r3, r2 63e0: f891 1148 ldrb.w r1, [r1, #328] ; 0x148 63e4: 2900 cmp r1, #0 63e6: d1ed bne.n 63c4 <_lv_disp_refr_task+0x468> 63e8: 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); 63ec: f9b3 704a ldrsh.w r7, [r3, #74] ; 0x4a 63f0: f9b3 1048 ldrsh.w r1, [r3, #72] ; 0x48 63f4: 9804 ldr r0, [sp, #16] 63f6: fb07 1600 mla r6, r7, r0, r1 uint32_t start_offs = 63fa: 0076 lsls r6, r6, #1 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 63fc: f8b3 304c ldrh.w r3, [r3, #76] ; 0x4c 6400: 3301 adds r3, #1 6402: 1a5b subs r3, r3, r1 uint32_t line_length = lv_area_get_width(&disp_refr->inv_areas[a]) * sizeof(lv_color_t); 6404: b21b sxth r3, r3 6406: 005b lsls r3, r3, #1 6408: 9305 str r3, [sp, #20] for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 640a: f8d9 3000 ldr.w r3, [r9] 640e: eb03 03c2 add.w r3, r3, r2, lsl #3 6412: f9b3 304e ldrsh.w r3, [r3, #78] ; 0x4e 6416: 42bb cmp r3, r7 6418: dbd4 blt.n 63c4 <_lv_disp_refr_task+0x468> 641a: 9b03 ldr r3, [sp, #12] 641c: eb03 0b06 add.w fp, r3, r6 6420: 4456 add r6, sl 6422: 3209 adds r2, #9 6424: 00d4 lsls r4, r2, #3 _lv_memcpy(buf_act + start_offs, buf_ina + start_offs, line_length); 6426: 9a05 ldr r2, [sp, #20] 6428: 4631 mov r1, r6 642a: 4658 mov r0, fp 642c: 4b21 ldr r3, [pc, #132] ; (64b4 <_lv_disp_refr_task+0x558>) 642e: 4798 blx r3 6430: 3701 adds r7, #1 6432: b23f sxth r7, r7 6434: 44ab add fp, r5 6436: 442e add r6, r5 for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 6438: f8d9 3000 ldr.w r3, [r9] 643c: 4423 add r3, r4 643e: f9b3 3006 ldrsh.w r3, [r3, #6] 6442: 42bb cmp r3, r7 6444: daef bge.n 6426 <_lv_disp_refr_task+0x4ca> 6446: e7bd b.n 63c4 <_lv_disp_refr_task+0x468> px_num = 0; 6448: 2200 movs r2, #0 644a: 4b14 ldr r3, [pc, #80] ; (649c <_lv_disp_refr_task+0x540>) 644c: 605a str r2, [r3, #4] if(disp_refr->inv_p == 0) return; 644e: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 6452: f3c3 0309 ubfx r3, r3, #0, #10 6456: b97b cbnz r3, 6478 <_lv_disp_refr_task+0x51c> if(disp_refr->inv_p != 0) { 6458: 4b10 ldr r3, [pc, #64] ; (649c <_lv_disp_refr_task+0x540>) 645a: 6818 ldr r0, [r3, #0] 645c: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 6460: f3c3 0309 ubfx r3, r3, #0, #10 6464: 2b00 cmp r3, #0 6466: f47f af67 bne.w 6338 <_lv_disp_refr_task+0x3dc> _lv_mem_buf_free_all(); 646a: 4b13 ldr r3, [pc, #76] ; (64b8 <_lv_disp_refr_task+0x55c>) 646c: 4798 blx r3 _lv_font_clean_up_fmt_txt(); 646e: 4b13 ldr r3, [pc, #76] ; (64bc <_lv_disp_refr_task+0x560>) 6470: 4798 blx r3 } 6472: b00d add sp, #52 ; 0x34 6474: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} int32_t last_i = 0; 6478: 9207 str r2, [sp, #28] 647a: e60b b.n 6094 <_lv_disp_refr_task+0x138> px_num = 0; 647c: 2200 movs r2, #0 647e: 4b07 ldr r3, [pc, #28] ; (649c <_lv_disp_refr_task+0x540>) 6480: 605a str r2, [r3, #4] if(disp_refr->inv_p == 0) return; 6482: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 6486: f3c3 0309 ubfx r3, r3, #0, #10 648a: 2b00 cmp r3, #0 648c: d0ed beq.n 646a <_lv_disp_refr_task+0x50e> int32_t last_i = 0; 648e: 9207 str r2, [sp, #28] 6490: e600 b.n 6094 <_lv_disp_refr_task+0x138> 6492: bf00 nop 6494: 00005da1 .word 0x00005da1 6498: 00010fdd .word 0x00010fdd 649c: 20002688 .word 0x20002688 64a0: 00012b1f .word 0x00012b1f 64a4: 00011059 .word 0x00011059 64a8: 00010fc5 .word 0x00010fc5 64ac: 00005d29 .word 0x00005d29 64b0: 00010ed5 .word 0x00010ed5 64b4: 0001263d .word 0x0001263d 64b8: 000125e1 .word 0x000125e1 64bc: 00010cdd .word 0x00010cdd 000064c0 : /** * Initialize a style * @param style pointer to a style to initialize */ void lv_style_init(lv_style_t * style) { 64c0: b508 push {r3, lr} _lv_memset_00(style, sizeof(lv_style_t)); 64c2: 2104 movs r1, #4 64c4: 4b01 ldr r3, [pc, #4] ; (64cc ) 64c6: 4798 blx r3 64c8: bd08 pop {r3, pc} 64ca: bf00 nop 64cc: 00012b1f .word 0x00012b1f 000064d0 : /** * Initialize a style list * @param list a style list to initialize */ void lv_style_list_init(lv_style_list_t * list) { 64d0: b508 push {r3, lr} _lv_memset_00(list, sizeof(lv_style_list_t)); 64d2: 2108 movs r1, #8 64d4: 4b01 ldr r3, [pc, #4] ; (64dc ) 64d6: 4798 blx r3 64d8: bd08 pop {r3, pc} 64da: bf00 nop 64dc: 00012b1f .word 0x00012b1f 000064e0 <_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) { 64e0: b570 push {r4, r5, r6, lr} 64e2: b082 sub sp, #8 LV_ASSERT_STYLE_LIST(list); LV_ASSERT_STYLE(style); if(list->style_cnt == 0) return; 64e4: 7906 ldrb r6, [r0, #4] 64e6: 2e00 cmp r6, #0 64e8: d055 beq.n 6596 <_lv_style_list_remove_style+0xb6> 64ea: 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) { 64ec: 6800 ldr r0, [r0, #0] 64ee: 6803 ldr r3, [r0, #0] 64f0: 4299 cmp r1, r3 64f2: d00a beq.n 650a <_lv_style_list_remove_style+0x2a> 64f4: 4603 mov r3, r0 64f6: 1e75 subs r5, r6, #1 64f8: b2ed uxtb r5, r5 64fa: eb00 0585 add.w r5, r0, r5, lsl #2 for(i = 0; i < list->style_cnt; i++) { 64fe: 429d cmp r5, r3 6500: d049 beq.n 6596 <_lv_style_list_remove_style+0xb6> if(list->style_list[i] == style) { 6502: f853 2f04 ldr.w r2, [r3, #4]! 6506: 428a cmp r2, r1 6508: d1f9 bne.n 64fe <_lv_style_list_remove_style+0x1e> 650a: 460d mov r5, r1 break; } } if(found == false) return; if(list->style_cnt == 1) { 650c: 2e01 cmp r6, #1 650e: d00e beq.n 652e <_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)); 6510: 1e71 subs r1, r6, #1 6512: 0089 lsls r1, r1, #2 6514: 4b21 ldr r3, [pc, #132] ; (659c <_lv_style_list_remove_style+0xbc>) 6516: 4798 blx r3 6518: 4606 mov r6, r0 LV_ASSERT_MEM(new_classes); 651a: 4b21 ldr r3, [pc, #132] ; (65a0 <_lv_style_list_remove_style+0xc0>) 651c: 4798 blx r3 651e: b180 cbz r0, 6542 <_lv_style_list_remove_style+0x62> if(new_classes == NULL) { 6520: b1ee cbz r6, 655e <_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++) { 6522: 7921 ldrb r1, [r4, #4] 6524: 2900 cmp r1, #0 6526: d033 beq.n 6590 <_lv_style_list_remove_style+0xb0> 6528: 2200 movs r2, #0 652a: 4613 mov r3, r2 652c: e026 b.n 657c <_lv_style_list_remove_style+0x9c> lv_mem_free(list->style_list); 652e: 4b1d ldr r3, [pc, #116] ; (65a4 <_lv_style_list_remove_style+0xc4>) 6530: 4798 blx r3 list->style_list = NULL; 6532: 2300 movs r3, #0 6534: 6023 str r3, [r4, #0] list->style_cnt = 0; 6536: 7123 strb r3, [r4, #4] list->has_local = 0; 6538: 7962 ldrb r2, [r4, #5] 653a: f363 0200 bfi r2, r3, #0, #1 653e: 7162 strb r2, [r4, #5] return; 6540: e029 b.n 6596 <_lv_style_list_remove_style+0xb6> LV_ASSERT_MEM(new_classes); 6542: 4b19 ldr r3, [pc, #100] ; (65a8 <_lv_style_list_remove_style+0xc8>) 6544: 9300 str r3, [sp, #0] 6546: f44f 7282 mov.w r2, #260 ; 0x104 654a: 4918 ldr r1, [pc, #96] ; (65ac <_lv_style_list_remove_style+0xcc>) 654c: 2003 movs r0, #3 654e: 4c18 ldr r4, [pc, #96] ; (65b0 <_lv_style_list_remove_style+0xd0>) 6550: 47a0 blx r4 6552: 4632 mov r2, r6 6554: 2300 movs r3, #0 6556: 4817 ldr r0, [pc, #92] ; (65b4 <_lv_style_list_remove_style+0xd4>) 6558: 4917 ldr r1, [pc, #92] ; (65b8 <_lv_style_list_remove_style+0xd8>) 655a: 4788 blx r1 655c: e7fe b.n 655c <_lv_style_list_remove_style+0x7c> LV_LOG_WARN("lv_style_list_remove_style: couldn't reallocate class list"); 655e: 4b17 ldr r3, [pc, #92] ; (65bc <_lv_style_list_remove_style+0xdc>) 6560: 9300 str r3, [sp, #0] 6562: 4b11 ldr r3, [pc, #68] ; (65a8 <_lv_style_list_remove_style+0xc8>) 6564: f44f 7283 mov.w r2, #262 ; 0x106 6568: 4910 ldr r1, [pc, #64] ; (65ac <_lv_style_list_remove_style+0xcc>) 656a: 2002 movs r0, #2 656c: 4c10 ldr r4, [pc, #64] ; (65b0 <_lv_style_list_remove_style+0xd0>) 656e: 47a0 blx r4 return; 6570: e011 b.n 6596 <_lv_style_list_remove_style+0xb6> for(i = 0, j = 0; i < list->style_cnt; i++) { 6572: 3301 adds r3, #1 6574: b2db uxtb r3, r3 6576: 7921 ldrb r1, [r4, #4] 6578: 4299 cmp r1, r3 657a: d909 bls.n 6590 <_lv_style_list_remove_style+0xb0> if(list->style_list[i] == style) continue; 657c: 6821 ldr r1, [r4, #0] 657e: f851 1023 ldr.w r1, [r1, r3, lsl #2] 6582: 428d cmp r5, r1 6584: d0f5 beq.n 6572 <_lv_style_list_remove_style+0x92> new_classes[j] = list->style_list[i]; 6586: f846 1022 str.w r1, [r6, r2, lsl #2] j++; 658a: 3201 adds r2, #1 658c: b2d2 uxtb r2, r2 658e: e7f0 b.n 6572 <_lv_style_list_remove_style+0x92> } list->style_cnt--; 6590: 3901 subs r1, #1 6592: 7121 strb r1, [r4, #4] list->style_list = new_classes; 6594: 6026 str r6, [r4, #0] } 6596: b002 add sp, #8 6598: bd70 pop {r4, r5, r6, pc} 659a: bf00 nop 659c: 00012881 .word 0x00012881 65a0: 00002299 .word 0x00002299 65a4: 000124ad .word 0x000124ad 65a8: 00024a64 .word 0x00024a64 65ac: 00024b24 .word 0x00024b24 65b0: 00012245 .word 0x00012245 65b4: 00023fc0 .word 0x00023fc0 65b8: 000022a1 .word 0x000022a1 65bc: 00024b50 .word 0x00024b50 000065c0 <_lv_style_list_add_style>: if(list == NULL) return; 65c0: 2800 cmp r0, #0 65c2: d051 beq.n 6668 <_lv_style_list_add_style+0xa8> { 65c4: b570 push {r4, r5, r6, lr} 65c6: b082 sub sp, #8 65c8: 4604 mov r4, r0 65ca: 460e mov r6, r1 _lv_style_list_remove_style(list, style); 65cc: 4b27 ldr r3, [pc, #156] ; (666c <_lv_style_list_add_style+0xac>) 65ce: 4798 blx r3 if(list->style_cnt == 0) new_classes = lv_mem_alloc(sizeof(lv_style_t *)); 65d0: 7923 ldrb r3, [r4, #4] 65d2: bb63 cbnz r3, 662e <_lv_style_list_add_style+0x6e> 65d4: 2004 movs r0, #4 65d6: 4b26 ldr r3, [pc, #152] ; (6670 <_lv_style_list_add_style+0xb0>) 65d8: 4798 blx r3 65da: 4605 mov r5, r0 LV_ASSERT_MEM(new_classes); 65dc: 4628 mov r0, r5 65de: 4b25 ldr r3, [pc, #148] ; (6674 <_lv_style_list_add_style+0xb4>) 65e0: 4798 blx r3 65e2: b358 cbz r0, 663c <_lv_style_list_add_style+0x7c> if(new_classes == NULL) { 65e4: 2d00 cmp r5, #0 65e6: d036 beq.n 6656 <_lv_style_list_add_style+0x96> if(list->has_trans) first_style++; 65e8: 7963 ldrb r3, [r4, #5] uint8_t first_style = 0; 65ea: f3c3 0040 ubfx r0, r3, #1, #1 if(list->has_local) first_style++; 65ee: f013 0f01 tst.w r3, #1 65f2: bf18 it ne 65f4: 3001 addne r0, #1 for(i = list->style_cnt; i > first_style; i--) { 65f6: 7923 ldrb r3, [r4, #4] 65f8: 4298 cmp r0, r3 65fa: d210 bcs.n 661e <_lv_style_list_add_style+0x5e> 65fc: eb05 0183 add.w r1, r5, r3, lsl #2 6600: f103 4280 add.w r2, r3, #1073741824 ; 0x40000000 6604: 3a01 subs r2, #1 6606: 3b01 subs r3, #1 6608: 1a1b subs r3, r3, r0 660a: b2db uxtb r3, r3 660c: 1ad3 subs r3, r2, r3 660e: eb05 0383 add.w r3, r5, r3, lsl #2 new_classes[i] = new_classes[i - 1]; 6612: f851 2c04 ldr.w r2, [r1, #-4] 6616: f841 2904 str.w r2, [r1], #-4 for(i = list->style_cnt; i > first_style; i--) { 661a: 4299 cmp r1, r3 661c: d1f9 bne.n 6612 <_lv_style_list_add_style+0x52> new_classes[first_style] = style; 661e: f845 6020 str.w r6, [r5, r0, lsl #2] list->style_cnt++; 6622: 7923 ldrb r3, [r4, #4] 6624: 3301 adds r3, #1 6626: 7123 strb r3, [r4, #4] list->style_list = new_classes; 6628: 6025 str r5, [r4, #0] } 662a: b002 add sp, #8 662c: bd70 pop {r4, r5, r6, pc} else new_classes = lv_mem_realloc(list->style_list, sizeof(lv_style_t *) * (list->style_cnt + 1)); 662e: 3301 adds r3, #1 6630: 0099 lsls r1, r3, #2 6632: 6820 ldr r0, [r4, #0] 6634: 4b10 ldr r3, [pc, #64] ; (6678 <_lv_style_list_add_style+0xb8>) 6636: 4798 blx r3 6638: 4605 mov r5, r0 663a: e7cf b.n 65dc <_lv_style_list_add_style+0x1c> LV_ASSERT_MEM(new_classes); 663c: 4b0f ldr r3, [pc, #60] ; (667c <_lv_style_list_add_style+0xbc>) 663e: 9300 str r3, [sp, #0] 6640: 22d0 movs r2, #208 ; 0xd0 6642: 490f ldr r1, [pc, #60] ; (6680 <_lv_style_list_add_style+0xc0>) 6644: 2003 movs r0, #3 6646: 4c0f ldr r4, [pc, #60] ; (6684 <_lv_style_list_add_style+0xc4>) 6648: 47a0 blx r4 664a: 462a mov r2, r5 664c: 2300 movs r3, #0 664e: 480e ldr r0, [pc, #56] ; (6688 <_lv_style_list_add_style+0xc8>) 6650: 490e ldr r1, [pc, #56] ; (668c <_lv_style_list_add_style+0xcc>) 6652: 4788 blx r1 6654: e7fe b.n 6654 <_lv_style_list_add_style+0x94> LV_LOG_WARN("lv_style_list_add_style: couldn't add the class"); 6656: 4b0e ldr r3, [pc, #56] ; (6690 <_lv_style_list_add_style+0xd0>) 6658: 9300 str r3, [sp, #0] 665a: 4b08 ldr r3, [pc, #32] ; (667c <_lv_style_list_add_style+0xbc>) 665c: 22d2 movs r2, #210 ; 0xd2 665e: 4908 ldr r1, [pc, #32] ; (6680 <_lv_style_list_add_style+0xc0>) 6660: 2002 movs r0, #2 6662: 4c08 ldr r4, [pc, #32] ; (6684 <_lv_style_list_add_style+0xc4>) 6664: 47a0 blx r4 return; 6666: e7e0 b.n 662a <_lv_style_list_add_style+0x6a> 6668: 4770 bx lr 666a: bf00 nop 666c: 000064e1 .word 0x000064e1 6670: 000123c5 .word 0x000123c5 6674: 00002299 .word 0x00002299 6678: 00012881 .word 0x00012881 667c: 00024a80 .word 0x00024a80 6680: 00024b24 .word 0x00024b24 6684: 00012245 .word 0x00012245 6688: 00023fc0 .word 0x00023fc0 668c: 000022a1 .word 0x000022a1 6690: 00024b8c .word 0x00024b8c 00006694 : * 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) { 6694: b530 push {r4, r5, lr} 6696: b083 sub sp, #12 LV_ASSERT_STYLE_LIST(list); if(list->has_local) return lv_style_list_get_style(list, 0); 6698: 7943 ldrb r3, [r0, #5] 669a: f013 0f01 tst.w r3, #1 669e: d010 beq.n 66c2 if(list->has_trans && list->skip_trans) id++; 66a0: f003 0306 and.w r3, r3, #6 66a4: 2b06 cmp r3, #6 66a6: bf14 ite ne 66a8: 2300 movne r3, #0 66aa: 2301 moveq r3, #1 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 66ac: 7902 ldrb r2, [r0, #4] 66ae: 2a00 cmp r2, #0 66b0: d034 beq.n 671c 66b2: 429a cmp r2, r3 66b4: d934 bls.n 6720 return list->style_list[id]; 66b6: 6802 ldr r2, [r0, #0] 66b8: 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; } 66bc: 4620 mov r0, r4 66be: b003 add sp, #12 66c0: bd30 pop {r4, r5, pc} 66c2: 4605 mov r5, r0 lv_style_t * local_style = lv_mem_alloc(sizeof(lv_style_t)); 66c4: 2004 movs r0, #4 66c6: 4b17 ldr r3, [pc, #92] ; (6724 ) 66c8: 4798 blx r3 66ca: 4604 mov r4, r0 LV_ASSERT_MEM(local_style); 66cc: 4b16 ldr r3, [pc, #88] ; (6728 ) 66ce: 4798 blx r3 66d0: b160 cbz r0, 66ec if(local_style == NULL) { 66d2: b1cc cbz r4, 6708 lv_style_init(local_style); 66d4: 4620 mov r0, r4 66d6: 4b15 ldr r3, [pc, #84] ; (672c ) 66d8: 4798 blx r3 _lv_style_list_add_style(list, local_style); 66da: 4621 mov r1, r4 66dc: 4628 mov r0, r5 66de: 4b14 ldr r3, [pc, #80] ; (6730 ) 66e0: 4798 blx r3 list->has_local = 1; 66e2: 796b ldrb r3, [r5, #5] 66e4: f043 0301 orr.w r3, r3, #1 66e8: 716b strb r3, [r5, #5] return local_style; 66ea: e7e7 b.n 66bc LV_ASSERT_MEM(local_style); 66ec: 4b11 ldr r3, [pc, #68] ; (6734 ) 66ee: 9300 str r3, [sp, #0] 66f0: f240 4235 movw r2, #1077 ; 0x435 66f4: 4910 ldr r1, [pc, #64] ; (6738 ) 66f6: 2003 movs r0, #3 66f8: 4d10 ldr r5, [pc, #64] ; (673c ) 66fa: 47a8 blx r5 66fc: 4622 mov r2, r4 66fe: 2300 movs r3, #0 6700: 480f ldr r0, [pc, #60] ; (6740 ) 6702: 4910 ldr r1, [pc, #64] ; (6744 ) 6704: 4788 blx r1 6706: e7fe b.n 6706 LV_LOG_WARN("get_local_style: couldn't create local style"); 6708: 4b0f ldr r3, [pc, #60] ; (6748 ) 670a: 9300 str r3, [sp, #0] 670c: 4b09 ldr r3, [pc, #36] ; (6734 ) 670e: f240 4237 movw r2, #1079 ; 0x437 6712: 4909 ldr r1, [pc, #36] ; (6738 ) 6714: 2002 movs r0, #2 6716: 4d09 ldr r5, [pc, #36] ; (673c ) 6718: 47a8 blx r5 return NULL; 671a: e7cf b.n 66bc if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 671c: 2400 movs r4, #0 671e: e7cd b.n 66bc 6720: 2400 movs r4, #0 6722: e7cb b.n 66bc 6724: 000123c5 .word 0x000123c5 6728: 00002299 .word 0x00002299 672c: 000064c1 .word 0x000064c1 6730: 000065c1 .word 0x000065c1 6734: 00024a9c .word 0x00024a9c 6738: 00024b24 .word 0x00024b24 673c: 00012245 .word 0x00012245 6740: 00023fc0 .word 0x00023fc0 6744: 000022a1 .word 0x000022a1 6748: 00024bbc .word 0x00024bbc 0000674c : { 674c: b510 push {r4, lr} 674e: 4604 mov r4, r0 lv_mem_free(style->map); 6750: 6800 ldr r0, [r0, #0] 6752: 4b02 ldr r3, [pc, #8] ; (675c ) 6754: 4798 blx r3 style->map = NULL; 6756: 2300 movs r3, #0 6758: 6023 str r3, [r4, #0] 675a: bd10 pop {r4, pc} 675c: 000124ad .word 0x000124ad 00006760 <_lv_style_get_mem_size>: if(style->map == NULL) return 0; 6760: 6802 ldr r2, [r0, #0] 6762: b1d2 cbz r2, 679a <_lv_style_get_mem_size+0x3a> while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6764: 7813 ldrb r3, [r2, #0] 6766: 2bff cmp r3, #255 ; 0xff 6768: d013 beq.n 6792 <_lv_style_get_mem_size+0x32> 676a: 2000 movs r0, #0 676c: e006 b.n 677c <_lv_style_get_mem_size+0x1c> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 676e: 2b0b cmp r3, #11 6770: dc0a bgt.n 6788 <_lv_style_get_mem_size+0x28> 6772: 3002 adds r0, #2 i += sizeof(lv_style_property_t); 6774: 3002 adds r0, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6776: 5c13 ldrb r3, [r2, r0] 6778: 2bff cmp r3, #255 ; 0xff 677a: d00b beq.n 6794 <_lv_style_get_mem_size+0x34> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 677c: f003 030f and.w r3, r3, #15 6780: 2b08 cmp r3, #8 6782: dcf4 bgt.n 676e <_lv_style_get_mem_size+0xe> 6784: 3002 adds r0, #2 6786: e7f5 b.n 6774 <_lv_style_get_mem_size+0x14> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6788: 2b0d cmp r3, #13 678a: bfd4 ite le 678c: 3001 addle r0, #1 else i += sizeof(const void *); 678e: 3004 addgt r0, #4 6790: e7f0 b.n 6774 <_lv_style_get_mem_size+0x14> while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6792: 2000 movs r0, #0 return i + sizeof(lv_style_property_t); 6794: 3002 adds r0, #2 6796: b280 uxth r0, r0 6798: 4770 bx lr if(style->map == NULL) return 0; 679a: 2000 movs r0, #0 } 679c: 4770 bx lr ... 000067a0 : if(style_src == NULL) return; 67a0: b181 cbz r1, 67c4 { 67a2: b570 push {r4, r5, r6, lr} 67a4: 460c mov r4, r1 if(style_src->map == NULL) return; 67a6: 680a ldr r2, [r1, #0] 67a8: b15a cbz r2, 67c2 67aa: 4605 mov r5, r0 uint16_t size = _lv_style_get_mem_size(style_src); 67ac: 4608 mov r0, r1 67ae: 4b06 ldr r3, [pc, #24] ; (67c8 ) 67b0: 4798 blx r3 67b2: 4606 mov r6, r0 style_dest->map = lv_mem_alloc(size); 67b4: 4b05 ldr r3, [pc, #20] ; (67cc ) 67b6: 4798 blx r3 67b8: 6028 str r0, [r5, #0] _lv_memcpy(style_dest->map, style_src->map, size); 67ba: 4632 mov r2, r6 67bc: 6821 ldr r1, [r4, #0] 67be: 4b04 ldr r3, [pc, #16] ; (67d0 ) 67c0: 4798 blx r3 67c2: bd70 pop {r4, r5, r6, pc} 67c4: 4770 bx lr 67c6: bf00 nop 67c8: 00006761 .word 0x00006761 67cc: 000123c5 .word 0x000123c5 67d0: 0001263d .word 0x0001263d 000067d4 : if(style == NULL) return false; 67d4: 2800 cmp r0, #0 67d6: d06b beq.n 68b0 { 67d8: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 67dc: 4607 mov r7, r0 if(style->map == NULL) return -1; 67de: 6800 ldr r0, [r0, #0] 67e0: 2800 cmp r0, #0 67e2: d06a beq.n 68ba uint8_t id_to_find = prop & 0xFF; 67e4: b2cd uxtb r5, r1 attr.full = (prop >> 8) & 0xFF; 67e6: 0a0e lsrs r6, r1, #8 67e8: 46b4 mov ip, r6 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 67ea: 7803 ldrb r3, [r0, #0] 67ec: 2bff cmp r3, #255 ; 0xff 67ee: d03b beq.n 6868 67f0: f04f 3eff mov.w lr, #4294967295 67f4: 46f0 mov r8, lr 67f6: 2200 movs r2, #0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 67f8: f3cc 0c06 ubfx ip, ip, #0, #7 67fc: e027 b.n 684e attr_i.full = style->map[i + 1]; 67fe: 1884 adds r4, r0, r2 6800: 7864 ldrb r4, [r4, #1] if(attr_i.bits.state == attr.bits.state) { 6802: ea86 0904 eor.w r9, r6, r4 6806: f019 0f7f tst.w r9, #127 ; 0x7f 680a: d00b beq.n 6824 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 680c: f004 047f and.w r4, r4, #127 ; 0x7f 6810: ea34 090c bics.w r9, r4, ip 6814: d11d bne.n 6852 if(attr_i.bits.state > weight) { 6816: 4544 cmp r4, r8 weight = attr_i.bits.state; 6818: bfc4 itt gt 681a: fa0f f884 sxthgt.w r8, r4 id_guess = i; 681e: fa0f fe82 sxthgt.w lr, r2 6822: e016 b.n 6852 return i; 6824: 4696 mov lr, r2 if(id >= 0) { 6826: f1be 0f00 cmp.w lr, #0 682a: db43 blt.n 68b4 attr_found.full = *(style->map + id + 1); 682c: 4674 mov r4, lr 682e: 4470 add r0, lr if(attr_found.bits.state == attr_goal.bits.state) { 6830: 7843 ldrb r3, [r0, #1] 6832: 405e eors r6, r3 6834: f016 0f7f tst.w r6, #127 ; 0x7f 6838: d019 beq.n 686e return false; 683a: 2000 movs r0, #0 683c: 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); 6840: 2b0b cmp r3, #11 6842: dc0c bgt.n 685e 6844: 3202 adds r2, #2 i += sizeof(lv_style_property_t); 6846: 3202 adds r2, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6848: 5c83 ldrb r3, [r0, r2] 684a: 2bff cmp r3, #255 ; 0xff 684c: d0eb beq.n 6826 if(style->map[i] == id_to_find) { 684e: 429d cmp r5, r3 6850: d0d5 beq.n 67fe if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6852: f003 030f and.w r3, r3, #15 6856: 2b08 cmp r3, #8 6858: dcf2 bgt.n 6840 685a: 3202 adds r2, #2 685c: e7f3 b.n 6846 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 685e: 2b0d cmp r3, #13 6860: bfd4 ite le 6862: 3201 addle r2, #1 else i += sizeof(const void *); 6864: 3204 addgt r2, #4 6866: e7ee b.n 6846 int16_t id_guess = -1; 6868: f04f 3eff mov.w lr, #4294967295 686c: e7db b.n 6826 686e: 460d mov r5, r1 uint32_t map_size = _lv_style_get_mem_size(style); 6870: 4638 mov r0, r7 6872: 4b13 ldr r3, [pc, #76] ; (68c0 ) 6874: 4798 blx r3 if((prop & 0xF) < LV_STYLE_ID_COLOR) prop_size += sizeof(lv_style_int_t); 6876: f005 010f and.w r1, r5, #15 else if((prop & 0xF) < LV_STYLE_ID_OPA) prop_size += sizeof(lv_color_t); 687a: 290b cmp r1, #11 687c: dd04 ble.n 6888 else prop_size += sizeof(const void *); 687e: 290e cmp r1, #14 6880: bfb4 ite lt 6882: 2103 movlt r1, #3 6884: 2106 movge r1, #6 6886: e000 b.n 688a else if((prop & 0xF) < LV_STYLE_ID_OPA) prop_size += sizeof(lv_color_t); 6888: 2104 movs r1, #4 for(i = id; i < map_size - prop_size; i++) { 688a: 460d mov r5, r1 688c: 1a41 subs r1, r0, r1 688e: 428c cmp r4, r1 6890: d207 bcs.n 68a2 6892: 4623 mov r3, r4 style->map[i] = style->map[i + prop_size]; 6894: 683a ldr r2, [r7, #0] 6896: 1954 adds r4, r2, r5 6898: 5ce4 ldrb r4, [r4, r3] 689a: 54d4 strb r4, [r2, r3] for(i = id; i < map_size - prop_size; i++) { 689c: 3301 adds r3, #1 689e: 428b cmp r3, r1 68a0: d1f8 bne.n 6894 style->map = lv_mem_realloc(style->map, map_size - prop_size); 68a2: 6838 ldr r0, [r7, #0] 68a4: 4b07 ldr r3, [pc, #28] ; (68c4 ) 68a6: 4798 blx r3 68a8: 6038 str r0, [r7, #0] return true; 68aa: 2001 movs r0, #1 68ac: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} if(style == NULL) return false; 68b0: 2000 movs r0, #0 68b2: 4770 bx lr return false; 68b4: 2000 movs r0, #0 68b6: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 68ba: 2000 movs r0, #0 } 68bc: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 68c0: 00006761 .word 0x00006761 68c4: 00012881 .word 0x00012881 000068c8 <_lv_style_set_int>: { 68c8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 68cc: b086 sub sp, #24 68ce: f8ad 100e strh.w r1, [sp, #14] 68d2: f8ad 200c strh.w r2, [sp, #12] if(style->map == NULL) return -1; 68d6: 6804 ldr r4, [r0, #0] 68d8: 2c00 cmp r4, #0 68da: d048 beq.n 696e <_lv_style_set_int+0xa6> uint8_t id_to_find = prop & 0xFF; 68dc: b2cf uxtb r7, r1 attr.full = (prop >> 8) & 0xFF; 68de: 0a0d lsrs r5, r1, #8 68e0: 46ae mov lr, r5 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 68e2: 7823 ldrb r3, [r4, #0] 68e4: 2bff cmp r3, #255 ; 0xff 68e6: d02c beq.n 6942 <_lv_style_set_int+0x7a> 68e8: f04f 31ff mov.w r1, #4294967295 68ec: 4688 mov r8, r1 68ee: 2200 movs r2, #0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 68f0: f3ce 0e06 ubfx lr, lr, #0, #7 68f4: e018 b.n 6928 <_lv_style_set_int+0x60> attr_i.full = style->map[i + 1]; 68f6: 18a6 adds r6, r4, r2 68f8: 7876 ldrb r6, [r6, #1] if(attr_i.bits.state == attr.bits.state) { 68fa: ea85 0c06 eor.w ip, r5, r6 68fe: f01c 0f7f tst.w ip, #127 ; 0x7f 6902: d021 beq.n 6948 <_lv_style_set_int+0x80> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6904: f006 067f and.w r6, r6, #127 ; 0x7f 6908: ea36 0c0e bics.w ip, r6, lr 690c: d10e bne.n 692c <_lv_style_set_int+0x64> if(attr_i.bits.state > weight) { 690e: 4546 cmp r6, r8 weight = attr_i.bits.state; 6910: bfc4 itt gt 6912: fa0f f886 sxthgt.w r8, r6 id_guess = i; 6916: b211 sxthgt r1, r2 6918: e008 b.n 692c <_lv_style_set_int+0x64> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 691a: 2b0b cmp r3, #11 691c: dc0c bgt.n 6938 <_lv_style_set_int+0x70> 691e: 3202 adds r2, #2 i += sizeof(lv_style_property_t); 6920: 3202 adds r2, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6922: 5ca3 ldrb r3, [r4, r2] 6924: 2bff cmp r3, #255 ; 0xff 6926: d00e beq.n 6946 <_lv_style_set_int+0x7e> if(style->map[i] == id_to_find) { 6928: 429f cmp r7, r3 692a: d0e4 beq.n 68f6 <_lv_style_set_int+0x2e> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 692c: f003 030f and.w r3, r3, #15 6930: 2b08 cmp r3, #8 6932: dcf2 bgt.n 691a <_lv_style_set_int+0x52> 6934: 3202 adds r2, #2 6936: e7f3 b.n 6920 <_lv_style_set_int+0x58> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6938: 2b0d cmp r3, #13 693a: bfd4 ite le 693c: 3201 addle r2, #1 else i += sizeof(const void *); 693e: 3204 addgt r2, #4 6940: e7ee b.n 6920 <_lv_style_set_int+0x58> int16_t id_guess = -1; 6942: f04f 31ff mov.w r1, #4294967295 return id_guess; 6946: 460a mov r2, r1 if(id >= 0) { 6948: 2a00 cmp r2, #0 694a: db10 blt.n 696e <_lv_style_set_int+0xa6> attr_found.full = *(style->map + id + 1); 694c: 18a3 adds r3, r4, r2 if(attr_found.bits.state == attr_goal.bits.state) { 694e: 785b ldrb r3, [r3, #1] 6950: 405d eors r5, r3 6952: f015 0f7f tst.w r5, #127 ; 0x7f 6956: d10a bne.n 696e <_lv_style_set_int+0xa6> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &value, sizeof(lv_style_int_t)); 6958: 3202 adds r2, #2 695a: 18a3 adds r3, r4, r2 *d8 = *s8; 695c: f89d 100c ldrb.w r1, [sp, #12] 6960: 54a1 strb r1, [r4, r2] 6962: f89d 200d ldrb.w r2, [sp, #13] 6966: 705a strb r2, [r3, #1] } 6968: b006 add sp, #24 696a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 696e: 4606 mov r6, r0 lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 6970: 23ff movs r3, #255 ; 0xff 6972: f8ad 3016 strh.w r3, [sp, #22] uint16_t size = _lv_style_get_mem_size(style); 6976: 4b1d ldr r3, [pc, #116] ; (69ec <_lv_style_set_int+0x124>) 6978: 4798 blx r3 if(size == 0) size += end_mark_size; 697a: 2800 cmp r0, #0 697c: bf08 it eq 697e: 2002 moveq r0, #2 size += sizeof(lv_style_property_t) + sizeof(lv_style_int_t); 6980: 1d05 adds r5, r0, #4 style->map = lv_mem_realloc(style->map, size); 6982: b2ad uxth r5, r5 6984: 4629 mov r1, r5 6986: 4620 mov r0, r4 6988: 4b19 ldr r3, [pc, #100] ; (69f0 <_lv_style_set_int+0x128>) 698a: 4798 blx r3 698c: 6030 str r0, [r6, #0] LV_ASSERT_MEM(style->map); 698e: 4b19 ldr r3, [pc, #100] ; (69f4 <_lv_style_set_int+0x12c>) 6990: 4798 blx r3 6992: b1e8 cbz r0, 69d0 <_lv_style_set_int+0x108> if(style == NULL) return; 6994: 2e00 cmp r6, #0 6996: d0e7 beq.n 6968 <_lv_style_set_int+0xa0> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 6998: 1fab subs r3, r5, #6 699a: 6832 ldr r2, [r6, #0] 699c: 18d1 adds r1, r2, r3 699e: f89d 000e ldrb.w r0, [sp, #14] 69a2: 54d0 strb r0, [r2, r3] 69a4: f89d 300f ldrb.w r3, [sp, #15] 69a8: 704b strb r3, [r1, #1] 69aa: 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)); 69ac: 6832 ldr r2, [r6, #0] 69ae: 18d1 adds r1, r2, r3 69b0: f89d 000c ldrb.w r0, [sp, #12] 69b4: 54d0 strb r0, [r2, r3] 69b6: f89d 300d ldrb.w r3, [sp, #13] 69ba: 704b strb r3, [r1, #1] 69bc: 3d02 subs r5, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 69be: 6833 ldr r3, [r6, #0] 69c0: 195a adds r2, r3, r5 69c2: f89d 1016 ldrb.w r1, [sp, #22] 69c6: 5559 strb r1, [r3, r5] 69c8: f89d 3017 ldrb.w r3, [sp, #23] 69cc: 7053 strb r3, [r2, #1] 69ce: e7cb b.n 6968 <_lv_style_set_int+0xa0> LV_ASSERT_MEM(style->map); 69d0: 4b09 ldr r3, [pc, #36] ; (69f8 <_lv_style_set_int+0x130>) 69d2: 9300 str r3, [sp, #0] 69d4: f44f 72c3 mov.w r2, #390 ; 0x186 69d8: 4908 ldr r1, [pc, #32] ; (69fc <_lv_style_set_int+0x134>) 69da: 2003 movs r0, #3 69dc: 4c08 ldr r4, [pc, #32] ; (6a00 <_lv_style_set_int+0x138>) 69de: 47a0 blx r4 69e0: 6832 ldr r2, [r6, #0] 69e2: 2300 movs r3, #0 69e4: 4807 ldr r0, [pc, #28] ; (6a04 <_lv_style_set_int+0x13c>) 69e6: 4908 ldr r1, [pc, #32] ; (6a08 <_lv_style_set_int+0x140>) 69e8: 4788 blx r1 69ea: e7fe b.n 69ea <_lv_style_set_int+0x122> 69ec: 00006761 .word 0x00006761 69f0: 00012881 .word 0x00012881 69f4: 00002299 .word 0x00002299 69f8: 00024ab4 .word 0x00024ab4 69fc: 00024b24 .word 0x00024b24 6a00: 00012245 .word 0x00012245 6a04: 00023fc0 .word 0x00023fc0 6a08: 000022a1 .word 0x000022a1 00006a0c <_lv_style_set_color>: { 6a0c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 6a10: b086 sub sp, #24 6a12: f8ad 200c strh.w r2, [sp, #12] 6a16: f8ad 100e strh.w r1, [sp, #14] if(style->map == NULL) return -1; 6a1a: 6804 ldr r4, [r0, #0] 6a1c: 2c00 cmp r4, #0 6a1e: d048 beq.n 6ab2 <_lv_style_set_color+0xa6> uint8_t id_to_find = prop & 0xFF; 6a20: b2cf uxtb r7, r1 attr.full = (prop >> 8) & 0xFF; 6a22: 0a0d lsrs r5, r1, #8 6a24: 46ae mov lr, r5 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6a26: 7823 ldrb r3, [r4, #0] 6a28: 2bff cmp r3, #255 ; 0xff 6a2a: d02c beq.n 6a86 <_lv_style_set_color+0x7a> 6a2c: f04f 31ff mov.w r1, #4294967295 6a30: 4688 mov r8, r1 6a32: 2200 movs r2, #0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6a34: f3ce 0e06 ubfx lr, lr, #0, #7 6a38: e018 b.n 6a6c <_lv_style_set_color+0x60> attr_i.full = style->map[i + 1]; 6a3a: 18a6 adds r6, r4, r2 6a3c: 7876 ldrb r6, [r6, #1] if(attr_i.bits.state == attr.bits.state) { 6a3e: ea85 0c06 eor.w ip, r5, r6 6a42: f01c 0f7f tst.w ip, #127 ; 0x7f 6a46: d021 beq.n 6a8c <_lv_style_set_color+0x80> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6a48: f006 067f and.w r6, r6, #127 ; 0x7f 6a4c: ea36 0c0e bics.w ip, r6, lr 6a50: d10e bne.n 6a70 <_lv_style_set_color+0x64> if(attr_i.bits.state > weight) { 6a52: 4546 cmp r6, r8 weight = attr_i.bits.state; 6a54: bfc4 itt gt 6a56: fa0f f886 sxthgt.w r8, r6 id_guess = i; 6a5a: b211 sxthgt r1, r2 6a5c: e008 b.n 6a70 <_lv_style_set_color+0x64> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 6a5e: 2b0b cmp r3, #11 6a60: dc0c bgt.n 6a7c <_lv_style_set_color+0x70> 6a62: 3202 adds r2, #2 i += sizeof(lv_style_property_t); 6a64: 3202 adds r2, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6a66: 5ca3 ldrb r3, [r4, r2] 6a68: 2bff cmp r3, #255 ; 0xff 6a6a: d00e beq.n 6a8a <_lv_style_set_color+0x7e> if(style->map[i] == id_to_find) { 6a6c: 429f cmp r7, r3 6a6e: d0e4 beq.n 6a3a <_lv_style_set_color+0x2e> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6a70: f003 030f and.w r3, r3, #15 6a74: 2b08 cmp r3, #8 6a76: dcf2 bgt.n 6a5e <_lv_style_set_color+0x52> 6a78: 3202 adds r2, #2 6a7a: e7f3 b.n 6a64 <_lv_style_set_color+0x58> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6a7c: 2b0d cmp r3, #13 6a7e: bfd4 ite le 6a80: 3201 addle r2, #1 else i += sizeof(const void *); 6a82: 3204 addgt r2, #4 6a84: e7ee b.n 6a64 <_lv_style_set_color+0x58> int16_t id_guess = -1; 6a86: f04f 31ff mov.w r1, #4294967295 return id_guess; 6a8a: 460a mov r2, r1 if(id >= 0) { 6a8c: 2a00 cmp r2, #0 6a8e: db10 blt.n 6ab2 <_lv_style_set_color+0xa6> attr_found.full = *(style->map + id + 1); 6a90: 18a3 adds r3, r4, r2 if(attr_found.bits.state == attr_goal.bits.state) { 6a92: 785b ldrb r3, [r3, #1] 6a94: 405d eors r5, r3 6a96: f015 0f7f tst.w r5, #127 ; 0x7f 6a9a: d10a bne.n 6ab2 <_lv_style_set_color+0xa6> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &color, sizeof(lv_color_t)); 6a9c: 3202 adds r2, #2 6a9e: 18a3 adds r3, r4, r2 6aa0: f89d 100c ldrb.w r1, [sp, #12] 6aa4: 54a1 strb r1, [r4, r2] 6aa6: f89d 200d ldrb.w r2, [sp, #13] 6aaa: 705a strb r2, [r3, #1] } 6aac: b006 add sp, #24 6aae: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 6ab2: 4606 mov r6, r0 lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 6ab4: 23ff movs r3, #255 ; 0xff 6ab6: f8ad 3016 strh.w r3, [sp, #22] uint16_t size = _lv_style_get_mem_size(style); 6aba: 4b1d ldr r3, [pc, #116] ; (6b30 <_lv_style_set_color+0x124>) 6abc: 4798 blx r3 if(size == 0) size += end_mark_size; 6abe: 2800 cmp r0, #0 6ac0: bf08 it eq 6ac2: 2002 moveq r0, #2 size += sizeof(lv_style_property_t) + sizeof(lv_color_t); 6ac4: 1d05 adds r5, r0, #4 style->map = lv_mem_realloc(style->map, size); 6ac6: b2ad uxth r5, r5 6ac8: 4629 mov r1, r5 6aca: 4620 mov r0, r4 6acc: 4b19 ldr r3, [pc, #100] ; (6b34 <_lv_style_set_color+0x128>) 6ace: 4798 blx r3 6ad0: 6030 str r0, [r6, #0] LV_ASSERT_MEM(style->map); 6ad2: 4b19 ldr r3, [pc, #100] ; (6b38 <_lv_style_set_color+0x12c>) 6ad4: 4798 blx r3 6ad6: b1e8 cbz r0, 6b14 <_lv_style_set_color+0x108> if(style == NULL) return; 6ad8: 2e00 cmp r6, #0 6ada: d0e7 beq.n 6aac <_lv_style_set_color+0xa0> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 6adc: 1fab subs r3, r5, #6 6ade: 6832 ldr r2, [r6, #0] 6ae0: 18d1 adds r1, r2, r3 6ae2: f89d 000e ldrb.w r0, [sp, #14] 6ae6: 54d0 strb r0, [r2, r3] 6ae8: f89d 300f ldrb.w r3, [sp, #15] 6aec: 704b strb r3, [r1, #1] 6aee: 1f2b subs r3, r5, #4 _lv_memcpy_small(style->map + size - sizeof(lv_color_t) - end_mark_size, &color, sizeof(lv_color_t)); 6af0: 6832 ldr r2, [r6, #0] 6af2: 18d1 adds r1, r2, r3 6af4: f89d 000c ldrb.w r0, [sp, #12] 6af8: 54d0 strb r0, [r2, r3] 6afa: f89d 300d ldrb.w r3, [sp, #13] 6afe: 704b strb r3, [r1, #1] 6b00: 3d02 subs r5, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 6b02: 6833 ldr r3, [r6, #0] 6b04: 195a adds r2, r3, r5 6b06: f89d 1016 ldrb.w r1, [sp, #22] 6b0a: 5559 strb r1, [r3, r5] 6b0c: f89d 3017 ldrb.w r3, [sp, #23] 6b10: 7053 strb r3, [r2, #1] 6b12: e7cb b.n 6aac <_lv_style_set_color+0xa0> LV_ASSERT_MEM(style->map); 6b14: 4b09 ldr r3, [pc, #36] ; (6b3c <_lv_style_set_color+0x130>) 6b16: 9300 str r3, [sp, #0] 6b18: f240 12b5 movw r2, #437 ; 0x1b5 6b1c: 4908 ldr r1, [pc, #32] ; (6b40 <_lv_style_set_color+0x134>) 6b1e: 2003 movs r0, #3 6b20: 4c08 ldr r4, [pc, #32] ; (6b44 <_lv_style_set_color+0x138>) 6b22: 47a0 blx r4 6b24: 6832 ldr r2, [r6, #0] 6b26: 2300 movs r3, #0 6b28: 4807 ldr r0, [pc, #28] ; (6b48 <_lv_style_set_color+0x13c>) 6b2a: 4908 ldr r1, [pc, #32] ; (6b4c <_lv_style_set_color+0x140>) 6b2c: 4788 blx r1 6b2e: e7fe b.n 6b2e <_lv_style_set_color+0x122> 6b30: 00006761 .word 0x00006761 6b34: 00012881 .word 0x00012881 6b38: 00002299 .word 0x00002299 6b3c: 00024ac8 .word 0x00024ac8 6b40: 00024b24 .word 0x00024b24 6b44: 00012245 .word 0x00012245 6b48: 00023fc0 .word 0x00023fc0 6b4c: 000022a1 .word 0x000022a1 00006b50 <_lv_style_set_opa>: { 6b50: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 6b54: b087 sub sp, #28 6b56: f8ad 100e strh.w r1, [sp, #14] if(style->map == NULL) return -1; 6b5a: 6804 ldr r4, [r0, #0] 6b5c: 2c00 cmp r4, #0 6b5e: d043 beq.n 6be8 <_lv_style_set_opa+0x98> uint8_t id_to_find = prop & 0xFF; 6b60: fa5f fe81 uxtb.w lr, r1 attr.full = (prop >> 8) & 0xFF; 6b64: 0a0d lsrs r5, r1, #8 6b66: 46ac mov ip, r5 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6b68: 7823 ldrb r3, [r4, #0] 6b6a: 2bff cmp r3, #255 ; 0xff 6b6c: d02c beq.n 6bc8 <_lv_style_set_opa+0x78> 6b6e: f04f 37ff mov.w r7, #4294967295 6b72: 46b8 mov r8, r7 6b74: 2100 movs r1, #0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6b76: f3cc 0c06 ubfx ip, ip, #0, #7 6b7a: e018 b.n 6bae <_lv_style_set_opa+0x5e> attr_i.full = style->map[i + 1]; 6b7c: 1866 adds r6, r4, r1 6b7e: 7876 ldrb r6, [r6, #1] if(attr_i.bits.state == attr.bits.state) { 6b80: ea85 0906 eor.w r9, r5, r6 6b84: f019 0f7f tst.w r9, #127 ; 0x7f 6b88: d021 beq.n 6bce <_lv_style_set_opa+0x7e> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6b8a: f006 067f and.w r6, r6, #127 ; 0x7f 6b8e: ea36 090c bics.w r9, r6, ip 6b92: d10e bne.n 6bb2 <_lv_style_set_opa+0x62> if(attr_i.bits.state > weight) { 6b94: 4546 cmp r6, r8 weight = attr_i.bits.state; 6b96: bfc4 itt gt 6b98: fa0f f886 sxthgt.w r8, r6 id_guess = i; 6b9c: b20f sxthgt r7, r1 6b9e: e008 b.n 6bb2 <_lv_style_set_opa+0x62> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 6ba0: 2b0b cmp r3, #11 6ba2: dc0c bgt.n 6bbe <_lv_style_set_opa+0x6e> 6ba4: 3102 adds r1, #2 i += sizeof(lv_style_property_t); 6ba6: 3102 adds r1, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6ba8: 5c63 ldrb r3, [r4, r1] 6baa: 2bff cmp r3, #255 ; 0xff 6bac: d00e beq.n 6bcc <_lv_style_set_opa+0x7c> if(style->map[i] == id_to_find) { 6bae: 459e cmp lr, r3 6bb0: d0e4 beq.n 6b7c <_lv_style_set_opa+0x2c> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6bb2: f003 030f and.w r3, r3, #15 6bb6: 2b08 cmp r3, #8 6bb8: dcf2 bgt.n 6ba0 <_lv_style_set_opa+0x50> 6bba: 3102 adds r1, #2 6bbc: e7f3 b.n 6ba6 <_lv_style_set_opa+0x56> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6bbe: 2b0d cmp r3, #13 6bc0: bfd4 ite le 6bc2: 3101 addle r1, #1 else i += sizeof(const void *); 6bc4: 3104 addgt r1, #4 6bc6: e7ee b.n 6ba6 <_lv_style_set_opa+0x56> int16_t id_guess = -1; 6bc8: f04f 37ff mov.w r7, #4294967295 return id_guess; 6bcc: 4639 mov r1, r7 if(id >= 0) { 6bce: 2900 cmp r1, #0 6bd0: db0a blt.n 6be8 <_lv_style_set_opa+0x98> attr_found.full = *(style->map + id + 1); 6bd2: 1863 adds r3, r4, r1 if(attr_found.bits.state == attr_goal.bits.state) { 6bd4: 785b ldrb r3, [r3, #1] 6bd6: 405d eors r5, r3 6bd8: f015 0f7f tst.w r5, #127 ; 0x7f 6bdc: d104 bne.n 6be8 <_lv_style_set_opa+0x98> 6bde: 4421 add r1, r4 6be0: 708a strb r2, [r1, #2] } 6be2: b007 add sp, #28 6be4: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} 6be8: 4617 mov r7, r2 6bea: 4606 mov r6, r0 lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 6bec: 23ff movs r3, #255 ; 0xff 6bee: f8ad 3016 strh.w r3, [sp, #22] uint16_t size = _lv_style_get_mem_size(style); 6bf2: 4b1b ldr r3, [pc, #108] ; (6c60 <_lv_style_set_opa+0x110>) 6bf4: 4798 blx r3 if(size == 0) size += end_mark_size; 6bf6: 2800 cmp r0, #0 6bf8: bf08 it eq 6bfa: 2002 moveq r0, #2 size += sizeof(lv_style_property_t) + sizeof(lv_opa_t); 6bfc: 1cc5 adds r5, r0, #3 style->map = lv_mem_realloc(style->map, size); 6bfe: b2ad uxth r5, r5 6c00: 4629 mov r1, r5 6c02: 4620 mov r0, r4 6c04: 4b17 ldr r3, [pc, #92] ; (6c64 <_lv_style_set_opa+0x114>) 6c06: 4798 blx r3 6c08: 6030 str r0, [r6, #0] LV_ASSERT_MEM(style->map); 6c0a: 4b17 ldr r3, [pc, #92] ; (6c68 <_lv_style_set_opa+0x118>) 6c0c: 4798 blx r3 6c0e: b1c0 cbz r0, 6c42 <_lv_style_set_opa+0xf2> if(style == NULL) return; 6c10: 2e00 cmp r6, #0 6c12: d0e6 beq.n 6be2 <_lv_style_set_opa+0x92> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 6c14: 1f6b subs r3, r5, #5 6c16: 6832 ldr r2, [r6, #0] 6c18: 18d1 adds r1, r2, r3 6c1a: f89d 000e ldrb.w r0, [sp, #14] 6c1e: 54d0 strb r0, [r2, r3] 6c20: f89d 300f ldrb.w r3, [sp, #15] 6c24: 704b strb r3, [r1, #1] 6c26: 6833 ldr r3, [r6, #0] 6c28: 442b add r3, r5 6c2a: 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)); 6c2e: 3d02 subs r5, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 6c30: 6833 ldr r3, [r6, #0] 6c32: 195a adds r2, r3, r5 6c34: f89d 1016 ldrb.w r1, [sp, #22] 6c38: 5559 strb r1, [r3, r5] 6c3a: f89d 3017 ldrb.w r3, [sp, #23] 6c3e: 7053 strb r3, [r2, #1] 6c40: e7cf b.n 6be2 <_lv_style_set_opa+0x92> LV_ASSERT_MEM(style->map); 6c42: 4b0a ldr r3, [pc, #40] ; (6c6c <_lv_style_set_opa+0x11c>) 6c44: 9300 str r3, [sp, #0] 6c46: f44f 72f2 mov.w r2, #484 ; 0x1e4 6c4a: 4909 ldr r1, [pc, #36] ; (6c70 <_lv_style_set_opa+0x120>) 6c4c: 2003 movs r0, #3 6c4e: 4c09 ldr r4, [pc, #36] ; (6c74 <_lv_style_set_opa+0x124>) 6c50: 47a0 blx r4 6c52: 6832 ldr r2, [r6, #0] 6c54: 2300 movs r3, #0 6c56: 4808 ldr r0, [pc, #32] ; (6c78 <_lv_style_set_opa+0x128>) 6c58: 4908 ldr r1, [pc, #32] ; (6c7c <_lv_style_set_opa+0x12c>) 6c5a: 4788 blx r1 6c5c: e7fe b.n 6c5c <_lv_style_set_opa+0x10c> 6c5e: bf00 nop 6c60: 00006761 .word 0x00006761 6c64: 00012881 .word 0x00012881 6c68: 00002299 .word 0x00002299 6c6c: 00024adc .word 0x00024adc 6c70: 00024b24 .word 0x00024b24 6c74: 00012245 .word 0x00012245 6c78: 00023fc0 .word 0x00023fc0 6c7c: 000022a1 .word 0x000022a1 00006c80 <_lv_style_set_ptr>: { 6c80: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 6c84: b086 sub sp, #24 6c86: 9202 str r2, [sp, #8] 6c88: f8ad 100e strh.w r1, [sp, #14] if(style->map == NULL) return -1; 6c8c: 6804 ldr r4, [r0, #0] 6c8e: 2c00 cmp r4, #0 6c90: d04e beq.n 6d30 <_lv_style_set_ptr+0xb0> uint8_t id_to_find = prop & 0xFF; 6c92: b2cf uxtb r7, r1 attr.full = (prop >> 8) & 0xFF; 6c94: 0a0d lsrs r5, r1, #8 6c96: 46ae mov lr, r5 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6c98: 7823 ldrb r3, [r4, #0] 6c9a: 2bff cmp r3, #255 ; 0xff 6c9c: d02c beq.n 6cf8 <_lv_style_set_ptr+0x78> 6c9e: f04f 31ff mov.w r1, #4294967295 6ca2: 4688 mov r8, r1 6ca4: 2200 movs r2, #0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6ca6: f3ce 0e06 ubfx lr, lr, #0, #7 6caa: e018 b.n 6cde <_lv_style_set_ptr+0x5e> attr_i.full = style->map[i + 1]; 6cac: 18a6 adds r6, r4, r2 6cae: 7876 ldrb r6, [r6, #1] if(attr_i.bits.state == attr.bits.state) { 6cb0: ea85 0c06 eor.w ip, r5, r6 6cb4: f01c 0f7f tst.w ip, #127 ; 0x7f 6cb8: d021 beq.n 6cfe <_lv_style_set_ptr+0x7e> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6cba: f006 067f and.w r6, r6, #127 ; 0x7f 6cbe: ea36 0c0e bics.w ip, r6, lr 6cc2: d10e bne.n 6ce2 <_lv_style_set_ptr+0x62> if(attr_i.bits.state > weight) { 6cc4: 4546 cmp r6, r8 weight = attr_i.bits.state; 6cc6: bfc4 itt gt 6cc8: fa0f f886 sxthgt.w r8, r6 id_guess = i; 6ccc: b211 sxthgt r1, r2 6cce: e008 b.n 6ce2 <_lv_style_set_ptr+0x62> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 6cd0: 2b0b cmp r3, #11 6cd2: dc0c bgt.n 6cee <_lv_style_set_ptr+0x6e> 6cd4: 3202 adds r2, #2 i += sizeof(lv_style_property_t); 6cd6: 3202 adds r2, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6cd8: 5ca3 ldrb r3, [r4, r2] 6cda: 2bff cmp r3, #255 ; 0xff 6cdc: d00e beq.n 6cfc <_lv_style_set_ptr+0x7c> if(style->map[i] == id_to_find) { 6cde: 429f cmp r7, r3 6ce0: d0e4 beq.n 6cac <_lv_style_set_ptr+0x2c> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6ce2: f003 030f and.w r3, r3, #15 6ce6: 2b08 cmp r3, #8 6ce8: dcf2 bgt.n 6cd0 <_lv_style_set_ptr+0x50> 6cea: 3202 adds r2, #2 6cec: e7f3 b.n 6cd6 <_lv_style_set_ptr+0x56> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6cee: 2b0d cmp r3, #13 6cf0: bfd4 ite le 6cf2: 3201 addle r2, #1 else i += sizeof(const void *); 6cf4: 3204 addgt r2, #4 6cf6: e7ee b.n 6cd6 <_lv_style_set_ptr+0x56> int16_t id_guess = -1; 6cf8: f04f 31ff mov.w r1, #4294967295 return id_guess; 6cfc: 460a mov r2, r1 if(id >= 0) { 6cfe: 2a00 cmp r2, #0 6d00: db16 blt.n 6d30 <_lv_style_set_ptr+0xb0> attr_found.full = *(style->map + id + 1); 6d02: 18a3 adds r3, r4, r2 if(attr_found.bits.state == attr_goal.bits.state) { 6d04: 785b ldrb r3, [r3, #1] 6d06: 405d eors r5, r3 6d08: f015 0f7f tst.w r5, #127 ; 0x7f 6d0c: d110 bne.n 6d30 <_lv_style_set_ptr+0xb0> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &p, sizeof(const void *)); 6d0e: 3202 adds r2, #2 6d10: 18a3 adds r3, r4, r2 6d12: f89d 1008 ldrb.w r1, [sp, #8] 6d16: 54a1 strb r1, [r4, r2] 6d18: f89d 2009 ldrb.w r2, [sp, #9] 6d1c: 705a strb r2, [r3, #1] 6d1e: f89d 200a ldrb.w r2, [sp, #10] 6d22: 709a strb r2, [r3, #2] 6d24: f89d 200b ldrb.w r2, [sp, #11] 6d28: 70da strb r2, [r3, #3] } 6d2a: b006 add sp, #24 6d2c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 6d30: 4606 mov r6, r0 lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 6d32: 23ff movs r3, #255 ; 0xff 6d34: f8ad 3016 strh.w r3, [sp, #22] uint16_t size = _lv_style_get_mem_size(style); 6d38: 4b20 ldr r3, [pc, #128] ; (6dbc <_lv_style_set_ptr+0x13c>) 6d3a: 4798 blx r3 if(size == 0) size += end_mark_size; 6d3c: 2800 cmp r0, #0 6d3e: bf08 it eq 6d40: 2002 moveq r0, #2 size += sizeof(lv_style_property_t) + sizeof(const void *); 6d42: 1d85 adds r5, r0, #6 style->map = lv_mem_realloc(style->map, size); 6d44: b2ad uxth r5, r5 6d46: 4629 mov r1, r5 6d48: 4620 mov r0, r4 6d4a: 4b1d ldr r3, [pc, #116] ; (6dc0 <_lv_style_set_ptr+0x140>) 6d4c: 4798 blx r3 6d4e: 6030 str r0, [r6, #0] LV_ASSERT_MEM(style->map); 6d50: 4b1c ldr r3, [pc, #112] ; (6dc4 <_lv_style_set_ptr+0x144>) 6d52: 4798 blx r3 6d54: b320 cbz r0, 6da0 <_lv_style_set_ptr+0x120> if(style == NULL) return; 6d56: 2e00 cmp r6, #0 6d58: d0e7 beq.n 6d2a <_lv_style_set_ptr+0xaa> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 6d5a: f1a5 0308 sub.w r3, r5, #8 6d5e: 6832 ldr r2, [r6, #0] 6d60: 18d1 adds r1, r2, r3 6d62: f89d 000e ldrb.w r0, [sp, #14] 6d66: 54d0 strb r0, [r2, r3] 6d68: f89d 300f ldrb.w r3, [sp, #15] 6d6c: 704b strb r3, [r1, #1] 6d6e: 1faa subs r2, r5, #6 _lv_memcpy_small(style->map + size - sizeof(const void *) - end_mark_size, &p, sizeof(const void *)); 6d70: 6831 ldr r1, [r6, #0] 6d72: 188b adds r3, r1, r2 6d74: f89d 0008 ldrb.w r0, [sp, #8] 6d78: 5488 strb r0, [r1, r2] 6d7a: f89d 2009 ldrb.w r2, [sp, #9] 6d7e: 705a strb r2, [r3, #1] 6d80: f89d 200a ldrb.w r2, [sp, #10] 6d84: 709a strb r2, [r3, #2] 6d86: f89d 200b ldrb.w r2, [sp, #11] 6d8a: 70da strb r2, [r3, #3] 6d8c: 3d02 subs r5, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 6d8e: 6833 ldr r3, [r6, #0] 6d90: 195a adds r2, r3, r5 6d92: f89d 1016 ldrb.w r1, [sp, #22] 6d96: 5559 strb r1, [r3, r5] 6d98: f89d 3017 ldrb.w r3, [sp, #23] 6d9c: 7053 strb r3, [r2, #1] 6d9e: e7c4 b.n 6d2a <_lv_style_set_ptr+0xaa> LV_ASSERT_MEM(style->map); 6da0: 4b09 ldr r3, [pc, #36] ; (6dc8 <_lv_style_set_ptr+0x148>) 6da2: 9300 str r3, [sp, #0] 6da4: f240 2213 movw r2, #531 ; 0x213 6da8: 4908 ldr r1, [pc, #32] ; (6dcc <_lv_style_set_ptr+0x14c>) 6daa: 2003 movs r0, #3 6dac: 4c08 ldr r4, [pc, #32] ; (6dd0 <_lv_style_set_ptr+0x150>) 6dae: 47a0 blx r4 6db0: 6832 ldr r2, [r6, #0] 6db2: 2300 movs r3, #0 6db4: 4807 ldr r0, [pc, #28] ; (6dd4 <_lv_style_set_ptr+0x154>) 6db6: 4908 ldr r1, [pc, #32] ; (6dd8 <_lv_style_set_ptr+0x158>) 6db8: 4788 blx r1 6dba: e7fe b.n 6dba <_lv_style_set_ptr+0x13a> 6dbc: 00006761 .word 0x00006761 6dc0: 00012881 .word 0x00012881 6dc4: 00002299 .word 0x00002299 6dc8: 00024af0 .word 0x00024af0 6dcc: 00024b24 .word 0x00024b24 6dd0: 00012245 .word 0x00012245 6dd4: 00023fc0 .word 0x00023fc0 6dd8: 000022a1 .word 0x000022a1 00006ddc <_lv_style_get_int>: if(style == NULL) return -1; 6ddc: 2800 cmp r0, #0 6dde: d04d beq.n 6e7c <_lv_style_get_int+0xa0> { 6de0: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 6de4: 4684 mov ip, r0 if(style->map == NULL) return -1; 6de6: 6804 ldr r4, [r0, #0] 6de8: 2c00 cmp r4, #0 6dea: d04a beq.n 6e82 <_lv_style_get_int+0xa6> uint8_t id_to_find = prop & 0xFF; 6dec: b2ce uxtb r6, r1 attr.full = (prop >> 8) & 0xFF; 6dee: 0a09 lsrs r1, r1, #8 6df0: 468e mov lr, r1 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6df2: 7823 ldrb r3, [r4, #0] 6df4: 2bff cmp r3, #255 ; 0xff 6df6: d03e beq.n 6e76 <_lv_style_get_int+0x9a> 6df8: f04f 37ff mov.w r7, #4294967295 6dfc: 46b8 mov r8, r7 6dfe: 2000 movs r0, #0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6e00: f3ce 0e06 ubfx lr, lr, #0, #7 6e04: e02a b.n 6e5c <_lv_style_get_int+0x80> attr_i.full = style->map[i + 1]; 6e06: 1825 adds r5, r4, r0 6e08: 786d ldrb r5, [r5, #1] if(attr_i.bits.state == attr.bits.state) { 6e0a: ea81 0905 eor.w r9, r1, r5 6e0e: f019 0f7f tst.w r9, #127 ; 0x7f 6e12: d00a beq.n 6e2a <_lv_style_get_int+0x4e> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6e14: f005 057f and.w r5, r5, #127 ; 0x7f 6e18: ea35 090e bics.w r9, r5, lr 6e1c: d120 bne.n 6e60 <_lv_style_get_int+0x84> if(attr_i.bits.state > weight) { 6e1e: 4545 cmp r5, r8 weight = attr_i.bits.state; 6e20: bfc4 itt gt 6e22: fa0f f885 sxthgt.w r8, r5 id_guess = i; 6e26: b207 sxthgt r7, r0 6e28: e01a b.n 6e60 <_lv_style_get_int+0x84> return i; 6e2a: 4607 mov r7, r0 if(id < 0) { 6e2c: 2f00 cmp r7, #0 6e2e: db2c blt.n 6e8a <_lv_style_get_int+0xae> _lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(lv_style_int_t)); 6e30: 1cbb adds r3, r7, #2 6e32: 18e0 adds r0, r4, r3 6e34: 5ce3 ldrb r3, [r4, r3] 6e36: 7013 strb r3, [r2, #0] 6e38: 7843 ldrb r3, [r0, #1] 6e3a: 7053 strb r3, [r2, #1] attr_act.full = style->map[id + 1]; 6e3c: f8dc 0000 ldr.w r0, [ip] 6e40: 4407 add r7, r0 6e42: 7878 ldrb r0, [r7, #1] return attr_act.bits.state & attr_goal.bits.state; 6e44: f3c1 0106 ubfx r1, r1, #0, #7 6e48: 4008 ands r0, r1 6e4a: 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); 6e4e: 2b0b cmp r3, #11 6e50: dc0c bgt.n 6e6c <_lv_style_get_int+0x90> 6e52: 3002 adds r0, #2 i += sizeof(lv_style_property_t); 6e54: 3002 adds r0, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6e56: 5c23 ldrb r3, [r4, r0] 6e58: 2bff cmp r3, #255 ; 0xff 6e5a: d0e7 beq.n 6e2c <_lv_style_get_int+0x50> if(style->map[i] == id_to_find) { 6e5c: 429e cmp r6, r3 6e5e: d0d2 beq.n 6e06 <_lv_style_get_int+0x2a> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6e60: f003 030f and.w r3, r3, #15 6e64: 2b08 cmp r3, #8 6e66: dcf2 bgt.n 6e4e <_lv_style_get_int+0x72> 6e68: 3002 adds r0, #2 6e6a: e7f3 b.n 6e54 <_lv_style_get_int+0x78> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6e6c: 2b0d cmp r3, #13 6e6e: bfd4 ite le 6e70: 3001 addle r0, #1 else i += sizeof(const void *); 6e72: 3004 addgt r0, #4 6e74: e7ee b.n 6e54 <_lv_style_get_int+0x78> int16_t id_guess = -1; 6e76: f04f 37ff mov.w r7, #4294967295 6e7a: e7d7 b.n 6e2c <_lv_style_get_int+0x50> if(style == NULL) return -1; 6e7c: f04f 30ff mov.w r0, #4294967295 6e80: 4770 bx lr if(style->map == NULL) return -1; 6e82: f04f 30ff mov.w r0, #4294967295 6e86: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} return -1; 6e8a: f04f 30ff mov.w r0, #4294967295 } 6e8e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} 00006e92 <_lv_style_get_opa>: if(style == NULL) return -1; 6e92: 2800 cmp r0, #0 6e94: d04a beq.n 6f2c <_lv_style_get_opa+0x9a> { 6e96: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 6e9a: 4686 mov lr, r0 if(style->map == NULL) return -1; 6e9c: 6804 ldr r4, [r0, #0] 6e9e: 2c00 cmp r4, #0 6ea0: d047 beq.n 6f32 <_lv_style_get_opa+0xa0> uint8_t id_to_find = prop & 0xFF; 6ea2: b2ce uxtb r6, r1 attr.full = (prop >> 8) & 0xFF; 6ea4: 0a09 lsrs r1, r1, #8 6ea6: 468c mov ip, r1 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6ea8: 7823 ldrb r3, [r4, #0] 6eaa: 2bff cmp r3, #255 ; 0xff 6eac: d03b beq.n 6f26 <_lv_style_get_opa+0x94> 6eae: f04f 37ff mov.w r7, #4294967295 6eb2: 46b8 mov r8, r7 6eb4: 2000 movs r0, #0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6eb6: f3cc 0c06 ubfx ip, ip, #0, #7 6eba: e027 b.n 6f0c <_lv_style_get_opa+0x7a> attr_i.full = style->map[i + 1]; 6ebc: 1825 adds r5, r4, r0 6ebe: 786d ldrb r5, [r5, #1] if(attr_i.bits.state == attr.bits.state) { 6ec0: ea81 0905 eor.w r9, r1, r5 6ec4: f019 0f7f tst.w r9, #127 ; 0x7f 6ec8: d00a beq.n 6ee0 <_lv_style_get_opa+0x4e> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6eca: f005 057f and.w r5, r5, #127 ; 0x7f 6ece: ea35 090c bics.w r9, r5, ip 6ed2: d11d bne.n 6f10 <_lv_style_get_opa+0x7e> if(attr_i.bits.state > weight) { 6ed4: 4545 cmp r5, r8 weight = attr_i.bits.state; 6ed6: bfc4 itt gt 6ed8: fa0f f885 sxthgt.w r8, r5 id_guess = i; 6edc: b207 sxthgt r7, r0 6ede: e017 b.n 6f10 <_lv_style_get_opa+0x7e> return i; 6ee0: 4607 mov r7, r0 if(id < 0) { 6ee2: 2f00 cmp r7, #0 6ee4: db29 blt.n 6f3a <_lv_style_get_opa+0xa8> 6ee6: 443c add r4, r7 6ee8: 78a3 ldrb r3, [r4, #2] 6eea: 7013 strb r3, [r2, #0] attr_act.full = style->map[id + 1]; 6eec: f8de 0000 ldr.w r0, [lr] 6ef0: 4407 add r7, r0 6ef2: 7878 ldrb r0, [r7, #1] return attr_act.bits.state & attr_goal.bits.state; 6ef4: f3c1 0106 ubfx r1, r1, #0, #7 6ef8: 4008 ands r0, r1 6efa: 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); 6efe: 2b0b cmp r3, #11 6f00: dc0c bgt.n 6f1c <_lv_style_get_opa+0x8a> 6f02: 3002 adds r0, #2 i += sizeof(lv_style_property_t); 6f04: 3002 adds r0, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6f06: 5c23 ldrb r3, [r4, r0] 6f08: 2bff cmp r3, #255 ; 0xff 6f0a: d0ea beq.n 6ee2 <_lv_style_get_opa+0x50> if(style->map[i] == id_to_find) { 6f0c: 429e cmp r6, r3 6f0e: d0d5 beq.n 6ebc <_lv_style_get_opa+0x2a> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6f10: f003 030f and.w r3, r3, #15 6f14: 2b08 cmp r3, #8 6f16: dcf2 bgt.n 6efe <_lv_style_get_opa+0x6c> 6f18: 3002 adds r0, #2 6f1a: e7f3 b.n 6f04 <_lv_style_get_opa+0x72> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6f1c: 2b0d cmp r3, #13 6f1e: bfd4 ite le 6f20: 3001 addle r0, #1 else i += sizeof(const void *); 6f22: 3004 addgt r0, #4 6f24: e7ee b.n 6f04 <_lv_style_get_opa+0x72> int16_t id_guess = -1; 6f26: f04f 37ff mov.w r7, #4294967295 6f2a: e7da b.n 6ee2 <_lv_style_get_opa+0x50> if(style == NULL) return -1; 6f2c: f04f 30ff mov.w r0, #4294967295 6f30: 4770 bx lr if(style->map == NULL) return -1; 6f32: f04f 30ff mov.w r0, #4294967295 6f36: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} return -1; 6f3a: f04f 30ff mov.w r0, #4294967295 } 6f3e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} 00006f42 <_lv_style_get_color>: if(style == NULL) return -1; 6f42: 2800 cmp r0, #0 6f44: d04d beq.n 6fe2 <_lv_style_get_color+0xa0> { 6f46: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 6f4a: 4684 mov ip, r0 if(style->map == NULL) return -1; 6f4c: 6804 ldr r4, [r0, #0] 6f4e: 2c00 cmp r4, #0 6f50: d04a beq.n 6fe8 <_lv_style_get_color+0xa6> uint8_t id_to_find = prop & 0xFF; 6f52: b2ce uxtb r6, r1 attr.full = (prop >> 8) & 0xFF; 6f54: 0a09 lsrs r1, r1, #8 6f56: 468e mov lr, r1 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6f58: 7823 ldrb r3, [r4, #0] 6f5a: 2bff cmp r3, #255 ; 0xff 6f5c: d03e beq.n 6fdc <_lv_style_get_color+0x9a> 6f5e: f04f 37ff mov.w r7, #4294967295 6f62: 46b8 mov r8, r7 6f64: 2000 movs r0, #0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6f66: f3ce 0e06 ubfx lr, lr, #0, #7 6f6a: e02a b.n 6fc2 <_lv_style_get_color+0x80> attr_i.full = style->map[i + 1]; 6f6c: 1825 adds r5, r4, r0 6f6e: 786d ldrb r5, [r5, #1] if(attr_i.bits.state == attr.bits.state) { 6f70: ea81 0905 eor.w r9, r1, r5 6f74: f019 0f7f tst.w r9, #127 ; 0x7f 6f78: d00a beq.n 6f90 <_lv_style_get_color+0x4e> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6f7a: f005 057f and.w r5, r5, #127 ; 0x7f 6f7e: ea35 090e bics.w r9, r5, lr 6f82: d120 bne.n 6fc6 <_lv_style_get_color+0x84> if(attr_i.bits.state > weight) { 6f84: 4545 cmp r5, r8 weight = attr_i.bits.state; 6f86: bfc4 itt gt 6f88: fa0f f885 sxthgt.w r8, r5 id_guess = i; 6f8c: b207 sxthgt r7, r0 6f8e: e01a b.n 6fc6 <_lv_style_get_color+0x84> return i; 6f90: 4607 mov r7, r0 if(id < 0) { 6f92: 2f00 cmp r7, #0 6f94: db2c blt.n 6ff0 <_lv_style_get_color+0xae> _lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(lv_color_t)); 6f96: 1cbb adds r3, r7, #2 6f98: 18e0 adds r0, r4, r3 6f9a: 5ce3 ldrb r3, [r4, r3] 6f9c: 7013 strb r3, [r2, #0] 6f9e: 7843 ldrb r3, [r0, #1] 6fa0: 7053 strb r3, [r2, #1] attr_act.full = style->map[id + 1]; 6fa2: f8dc 0000 ldr.w r0, [ip] 6fa6: 4407 add r7, r0 6fa8: 7878 ldrb r0, [r7, #1] return attr_act.bits.state & attr_goal.bits.state; 6faa: f3c1 0106 ubfx r1, r1, #0, #7 6fae: 4008 ands r0, r1 6fb0: 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); 6fb4: 2b0b cmp r3, #11 6fb6: dc0c bgt.n 6fd2 <_lv_style_get_color+0x90> 6fb8: 3002 adds r0, #2 i += sizeof(lv_style_property_t); 6fba: 3002 adds r0, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6fbc: 5c23 ldrb r3, [r4, r0] 6fbe: 2bff cmp r3, #255 ; 0xff 6fc0: d0e7 beq.n 6f92 <_lv_style_get_color+0x50> if(style->map[i] == id_to_find) { 6fc2: 429e cmp r6, r3 6fc4: d0d2 beq.n 6f6c <_lv_style_get_color+0x2a> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6fc6: f003 030f and.w r3, r3, #15 6fca: 2b08 cmp r3, #8 6fcc: dcf2 bgt.n 6fb4 <_lv_style_get_color+0x72> 6fce: 3002 adds r0, #2 6fd0: e7f3 b.n 6fba <_lv_style_get_color+0x78> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6fd2: 2b0d cmp r3, #13 6fd4: bfd4 ite le 6fd6: 3001 addle r0, #1 else i += sizeof(const void *); 6fd8: 3004 addgt r0, #4 6fda: e7ee b.n 6fba <_lv_style_get_color+0x78> int16_t id_guess = -1; 6fdc: f04f 37ff mov.w r7, #4294967295 6fe0: e7d7 b.n 6f92 <_lv_style_get_color+0x50> if(style == NULL) return -1; 6fe2: f04f 30ff mov.w r0, #4294967295 6fe6: 4770 bx lr if(style->map == NULL) return -1; 6fe8: f04f 30ff mov.w r0, #4294967295 6fec: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} return -1; 6ff0: f04f 30ff mov.w r0, #4294967295 } 6ff4: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} 00006ff8 <_lv_style_get_ptr>: if(style == NULL) return -1; 6ff8: 2800 cmp r0, #0 6ffa: d050 beq.n 709e <_lv_style_get_ptr+0xa6> { 6ffc: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 7000: 4607 mov r7, r0 if(style->map == NULL) return -1; 7002: 6804 ldr r4, [r0, #0] 7004: 2c00 cmp r4, #0 7006: d04d beq.n 70a4 <_lv_style_get_ptr+0xac> uint8_t id_to_find = prop & 0xFF; 7008: b2ce uxtb r6, r1 attr.full = (prop >> 8) & 0xFF; 700a: 0a09 lsrs r1, r1, #8 700c: 468c mov ip, r1 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 700e: 7823 ldrb r3, [r4, #0] 7010: 2bff cmp r3, #255 ; 0xff 7012: d02d beq.n 7070 <_lv_style_get_ptr+0x78> 7014: f04f 3eff mov.w lr, #4294967295 7018: 46f0 mov r8, lr 701a: 2000 movs r0, #0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 701c: f3cc 0c06 ubfx ip, ip, #0, #7 7020: e019 b.n 7056 <_lv_style_get_ptr+0x5e> attr_i.full = style->map[i + 1]; 7022: 1825 adds r5, r4, r0 7024: 786d ldrb r5, [r5, #1] if(attr_i.bits.state == attr.bits.state) { 7026: ea81 0905 eor.w r9, r1, r5 702a: f019 0f7f tst.w r9, #127 ; 0x7f 702e: d022 beq.n 7076 <_lv_style_get_ptr+0x7e> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 7030: f005 057f and.w r5, r5, #127 ; 0x7f 7034: ea35 090c bics.w r9, r5, ip 7038: d10f bne.n 705a <_lv_style_get_ptr+0x62> if(attr_i.bits.state > weight) { 703a: 4545 cmp r5, r8 weight = attr_i.bits.state; 703c: bfc4 itt gt 703e: fa0f f885 sxthgt.w r8, r5 id_guess = i; 7042: fa0f fe80 sxthgt.w lr, r0 7046: e008 b.n 705a <_lv_style_get_ptr+0x62> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 7048: 2b0b cmp r3, #11 704a: dc0c bgt.n 7066 <_lv_style_get_ptr+0x6e> 704c: 3002 adds r0, #2 i += sizeof(lv_style_property_t); 704e: 3002 adds r0, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 7050: 5c23 ldrb r3, [r4, r0] 7052: 2bff cmp r3, #255 ; 0xff 7054: d00e beq.n 7074 <_lv_style_get_ptr+0x7c> if(style->map[i] == id_to_find) { 7056: 429e cmp r6, r3 7058: d0e3 beq.n 7022 <_lv_style_get_ptr+0x2a> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 705a: f003 030f and.w r3, r3, #15 705e: 2b08 cmp r3, #8 7060: dcf2 bgt.n 7048 <_lv_style_get_ptr+0x50> 7062: 3002 adds r0, #2 7064: e7f3 b.n 704e <_lv_style_get_ptr+0x56> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 7066: 2b0d cmp r3, #13 7068: bfd4 ite le 706a: 3001 addle r0, #1 else i += sizeof(const void *); 706c: 3004 addgt r0, #4 706e: e7ee b.n 704e <_lv_style_get_ptr+0x56> int16_t id_guess = -1; 7070: f04f 3eff mov.w lr, #4294967295 return id_guess; 7074: 4670 mov r0, lr if(id < 0) { 7076: 2800 cmp r0, #0 7078: db18 blt.n 70ac <_lv_style_get_ptr+0xb4> _lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(const void *)); 707a: 4605 mov r5, r0 707c: 3001 adds r0, #1 707e: 1823 adds r3, r4, r0 7080: 1d14 adds r4, r2, #4 7082: f813 0f01 ldrb.w r0, [r3, #1]! 7086: f802 0b01 strb.w r0, [r2], #1 while(len) { 708a: 4294 cmp r4, r2 708c: d1f9 bne.n 7082 <_lv_style_get_ptr+0x8a> attr_act.full = style->map[id + 1]; 708e: 683b ldr r3, [r7, #0] 7090: 442b add r3, r5 7092: 7858 ldrb r0, [r3, #1] return attr_act.bits.state & attr_goal.bits.state; 7094: f3c1 0106 ubfx r1, r1, #0, #7 7098: 4008 ands r0, r1 709a: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} if(style == NULL) return -1; 709e: f04f 30ff mov.w r0, #4294967295 70a2: 4770 bx lr if(style->map == NULL) return -1; 70a4: f04f 30ff mov.w r0, #4294967295 70a8: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} return -1; 70ac: f04f 30ff mov.w r0, #4294967295 } 70b0: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} 000070b4 : if(!list->has_local) return NULL; 70b4: 7943 ldrb r3, [r0, #5] 70b6: f013 0f01 tst.w r3, #1 70ba: d006 beq.n 70ca if(list->has_trans) return list->style_list[1]; 70bc: f013 0f02 tst.w r3, #2 70c0: 6803 ldr r3, [r0, #0] 70c2: bf14 ite ne 70c4: 6858 ldrne r0, [r3, #4] else return list->style_list[0]; 70c6: 6818 ldreq r0, [r3, #0] 70c8: 4770 bx lr if(!list->has_local) return NULL; 70ca: 2000 movs r0, #0 } 70cc: 4770 bx lr 000070ce <_lv_style_list_get_transition_style>: if(!list->has_trans) return NULL; 70ce: 7943 ldrb r3, [r0, #5] 70d0: f013 0f02 tst.w r3, #2 return list->style_list[0]; 70d4: bf1a itte ne 70d6: 6803 ldrne r3, [r0, #0] 70d8: 6818 ldrne r0, [r3, #0] if(!list->has_trans) return NULL; 70da: 2000 moveq r0, #0 } 70dc: 4770 bx lr ... 000070e0 <_lv_style_list_reset>: if(list == NULL) return; 70e0: 2800 cmp r0, #0 70e2: d02c beq.n 713e <_lv_style_list_reset+0x5e> { 70e4: b538 push {r3, r4, r5, lr} 70e6: 4604 mov r4, r0 if(list->has_local) { 70e8: 7943 ldrb r3, [r0, #5] 70ea: f013 0f01 tst.w r3, #1 70ee: d008 beq.n 7102 <_lv_style_list_reset+0x22> lv_style_t * local = lv_style_list_get_local_style(list); 70f0: 4b13 ldr r3, [pc, #76] ; (7140 <_lv_style_list_reset+0x60>) 70f2: 4798 blx r3 if(local) { 70f4: 4605 mov r5, r0 70f6: b120 cbz r0, 7102 <_lv_style_list_reset+0x22> lv_style_reset(local); 70f8: 4b12 ldr r3, [pc, #72] ; (7144 <_lv_style_list_reset+0x64>) 70fa: 4798 blx r3 lv_mem_free(local); 70fc: 4628 mov r0, r5 70fe: 4b12 ldr r3, [pc, #72] ; (7148 <_lv_style_list_reset+0x68>) 7100: 4798 blx r3 if(list->has_trans) { 7102: 7963 ldrb r3, [r4, #5] 7104: f013 0f02 tst.w r3, #2 7108: d009 beq.n 711e <_lv_style_list_reset+0x3e> lv_style_t * trans = _lv_style_list_get_transition_style(list); 710a: 4620 mov r0, r4 710c: 4b0f ldr r3, [pc, #60] ; (714c <_lv_style_list_reset+0x6c>) 710e: 4798 blx r3 if(trans) { 7110: 4605 mov r5, r0 7112: b120 cbz r0, 711e <_lv_style_list_reset+0x3e> lv_style_reset(trans); 7114: 4b0b ldr r3, [pc, #44] ; (7144 <_lv_style_list_reset+0x64>) 7116: 4798 blx r3 lv_mem_free(trans); 7118: 4628 mov r0, r5 711a: 4b0b ldr r3, [pc, #44] ; (7148 <_lv_style_list_reset+0x68>) 711c: 4798 blx r3 if(list->style_cnt > 0) lv_mem_free(list->style_list); 711e: 7923 ldrb r3, [r4, #4] 7120: b94b cbnz r3, 7136 <_lv_style_list_reset+0x56> list->style_list = NULL; 7122: 2200 movs r2, #0 7124: 6022 str r2, [r4, #0] list->style_cnt = 0; 7126: 7122 strb r2, [r4, #4] list->has_local = 0; 7128: 7963 ldrb r3, [r4, #5] list->skip_trans = 0; 712a: f003 03fc and.w r3, r3, #252 ; 0xfc 712e: f362 0382 bfi r3, r2, #2, #1 7132: 7163 strb r3, [r4, #5] 7134: bd38 pop {r3, r4, r5, pc} if(list->style_cnt > 0) lv_mem_free(list->style_list); 7136: 6820 ldr r0, [r4, #0] 7138: 4b03 ldr r3, [pc, #12] ; (7148 <_lv_style_list_reset+0x68>) 713a: 4798 blx r3 713c: e7f1 b.n 7122 <_lv_style_list_reset+0x42> 713e: 4770 bx lr 7140: 000070b5 .word 0x000070b5 7144: 0000674d .word 0x0000674d 7148: 000124ad .word 0x000124ad 714c: 000070cf .word 0x000070cf 00007150 : { 7150: b570 push {r4, r5, r6, lr} 7152: 4605 mov r5, r0 7154: 460c mov r4, r1 _lv_style_list_reset(list_dest); 7156: 4b2c ldr r3, [pc, #176] ; (7208 ) 7158: 4798 blx r3 if(list_src->style_list == NULL) return; 715a: 6823 ldr r3, [r4, #0] 715c: 2b00 cmp r3, #0 715e: d041 beq.n 71e4 if(list_src->has_local == 0) { 7160: 7963 ldrb r3, [r4, #5] 7162: f013 0f01 tst.w r3, #1 7166: d120 bne.n 71aa if(list_src->has_trans) { 7168: f013 0f02 tst.w r3, #2 716c: d010 beq.n 7190 list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 1) * sizeof(lv_style_t *)); 716e: 7920 ldrb r0, [r4, #4] 7170: 3801 subs r0, #1 7172: 0080 lsls r0, r0, #2 7174: 4b25 ldr r3, [pc, #148] ; (720c ) 7176: 4798 blx r3 7178: 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 *)); 717a: 7922 ldrb r2, [r4, #4] 717c: 3a01 subs r2, #1 717e: 6821 ldr r1, [r4, #0] 7180: 0092 lsls r2, r2, #2 7182: 3104 adds r1, #4 7184: 4b22 ldr r3, [pc, #136] ; (7210 ) 7186: 4798 blx r3 list_dest->style_cnt = list_src->style_cnt - 1; 7188: 7923 ldrb r3, [r4, #4] 718a: 3b01 subs r3, #1 718c: 712b strb r3, [r5, #4] 718e: bd70 pop {r4, r5, r6, pc} list_dest->style_list = lv_mem_alloc(list_src->style_cnt * sizeof(lv_style_t *)); 7190: 7920 ldrb r0, [r4, #4] 7192: 0080 lsls r0, r0, #2 7194: 4b1d ldr r3, [pc, #116] ; (720c ) 7196: 4798 blx r3 7198: 6028 str r0, [r5, #0] _lv_memcpy(list_dest->style_list, list_src->style_list, list_src->style_cnt * sizeof(lv_style_t *)); 719a: 7922 ldrb r2, [r4, #4] 719c: 0092 lsls r2, r2, #2 719e: 6821 ldr r1, [r4, #0] 71a0: 4b1b ldr r3, [pc, #108] ; (7210 ) 71a2: 4798 blx r3 list_dest->style_cnt = list_src->style_cnt; 71a4: 7923 ldrb r3, [r4, #4] 71a6: 712b strb r3, [r5, #4] 71a8: bd70 pop {r4, r5, r6, pc} if(list_src->has_trans) { 71aa: f013 0f02 tst.w r3, #2 71ae: d01a beq.n 71e6 list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 2) * sizeof(lv_style_t *)); 71b0: 7920 ldrb r0, [r4, #4] 71b2: 3802 subs r0, #2 71b4: 0080 lsls r0, r0, #2 71b6: 4b15 ldr r3, [pc, #84] ; (720c ) 71b8: 4798 blx r3 71ba: 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 *)); 71bc: 7922 ldrb r2, [r4, #4] 71be: 3a02 subs r2, #2 71c0: 6821 ldr r1, [r4, #0] 71c2: 0092 lsls r2, r2, #2 71c4: 3108 adds r1, #8 71c6: 4b12 ldr r3, [pc, #72] ; (7210 ) 71c8: 4798 blx r3 list_dest->style_cnt = list_src->style_cnt - 2; 71ca: 7923 ldrb r3, [r4, #4] 71cc: 3b02 subs r3, #2 71ce: 712b strb r3, [r5, #4] lv_style_t * local_style = get_alloc_local_style(list_dest); 71d0: 4628 mov r0, r5 71d2: 4d10 ldr r5, [pc, #64] ; (7214 ) 71d4: 47a8 blx r5 71d6: 4606 mov r6, r0 lv_style_copy(local_style, get_alloc_local_style((lv_style_list_t *)list_src)); 71d8: 4620 mov r0, r4 71da: 47a8 blx r5 71dc: 4601 mov r1, r0 71de: 4630 mov r0, r6 71e0: 4b0d ldr r3, [pc, #52] ; (7218 ) 71e2: 4798 blx r3 71e4: bd70 pop {r4, r5, r6, pc} list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 1) * sizeof(lv_style_t *)); 71e6: 7920 ldrb r0, [r4, #4] 71e8: 3801 subs r0, #1 71ea: 0080 lsls r0, r0, #2 71ec: 4b07 ldr r3, [pc, #28] ; (720c ) 71ee: 4798 blx r3 71f0: 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 *)); 71f2: 7922 ldrb r2, [r4, #4] 71f4: 3a01 subs r2, #1 71f6: 6821 ldr r1, [r4, #0] 71f8: 0092 lsls r2, r2, #2 71fa: 3104 adds r1, #4 71fc: 4b04 ldr r3, [pc, #16] ; (7210 ) 71fe: 4798 blx r3 list_dest->style_cnt = list_src->style_cnt - 1; 7200: 7923 ldrb r3, [r4, #4] 7202: 3b01 subs r3, #1 7204: 712b strb r3, [r5, #4] 7206: e7e3 b.n 71d0 7208: 000070e1 .word 0x000070e1 720c: 000123c5 .word 0x000123c5 7210: 0001263d .word 0x0001263d 7214: 00006695 .word 0x00006695 7218: 000067a1 .word 0x000067a1 0000721c <_lv_style_list_add_trans_style>: { 721c: b530 push {r4, r5, lr} 721e: b083 sub sp, #12 7220: 4604 mov r4, r0 if(list->has_trans) return _lv_style_list_get_transition_style(list); 7222: 7943 ldrb r3, [r0, #5] 7224: f013 0f02 tst.w r3, #2 7228: d005 beq.n 7236 <_lv_style_list_add_trans_style+0x1a> 722a: 4b1d ldr r3, [pc, #116] ; (72a0 <_lv_style_list_add_trans_style+0x84>) 722c: 4798 blx r3 722e: 4605 mov r5, r0 } 7230: 4628 mov r0, r5 7232: b003 add sp, #12 7234: bd30 pop {r4, r5, pc} lv_style_t * trans_style = lv_mem_alloc(sizeof(lv_style_t)); 7236: 2004 movs r0, #4 7238: 4b1a ldr r3, [pc, #104] ; (72a4 <_lv_style_list_add_trans_style+0x88>) 723a: 4798 blx r3 723c: 4605 mov r5, r0 LV_ASSERT_MEM(trans_style); 723e: 4b1a ldr r3, [pc, #104] ; (72a8 <_lv_style_list_add_trans_style+0x8c>) 7240: 4798 blx r3 7242: b1a8 cbz r0, 7270 <_lv_style_list_add_trans_style+0x54> if(trans_style == NULL) { 7244: b315 cbz r5, 728c <_lv_style_list_add_trans_style+0x70> lv_style_init(trans_style); 7246: 4628 mov r0, r5 7248: 4b18 ldr r3, [pc, #96] ; (72ac <_lv_style_list_add_trans_style+0x90>) 724a: 4798 blx r3 _lv_style_list_add_style(list, trans_style); 724c: 4629 mov r1, r5 724e: 4620 mov r0, r4 7250: 4b17 ldr r3, [pc, #92] ; (72b0 <_lv_style_list_add_trans_style+0x94>) 7252: 4798 blx r3 list->has_trans = 1; 7254: 7963 ldrb r3, [r4, #5] 7256: f043 0302 orr.w r3, r3, #2 725a: 7163 strb r3, [r4, #5] if(list->has_local) { 725c: f013 0f01 tst.w r3, #1 7260: d0e6 beq.n 7230 <_lv_style_list_add_trans_style+0x14> lv_style_t * tmp = list->style_list[0]; 7262: 6823 ldr r3, [r4, #0] 7264: 681a ldr r2, [r3, #0] list->style_list[0] = list->style_list[1]; 7266: 6859 ldr r1, [r3, #4] 7268: 6019 str r1, [r3, #0] list->style_list[1] = tmp; 726a: 6823 ldr r3, [r4, #0] 726c: 605a str r2, [r3, #4] 726e: e7df b.n 7230 <_lv_style_list_add_trans_style+0x14> LV_ASSERT_MEM(trans_style); 7270: 4b10 ldr r3, [pc, #64] ; (72b4 <_lv_style_list_add_trans_style+0x98>) 7272: 9300 str r3, [sp, #0] 7274: f240 22cd movw r2, #717 ; 0x2cd 7278: 490f ldr r1, [pc, #60] ; (72b8 <_lv_style_list_add_trans_style+0x9c>) 727a: 2003 movs r0, #3 727c: 4c0f ldr r4, [pc, #60] ; (72bc <_lv_style_list_add_trans_style+0xa0>) 727e: 47a0 blx r4 7280: 462a mov r2, r5 7282: 2300 movs r3, #0 7284: 480e ldr r0, [pc, #56] ; (72c0 <_lv_style_list_add_trans_style+0xa4>) 7286: 490f ldr r1, [pc, #60] ; (72c4 <_lv_style_list_add_trans_style+0xa8>) 7288: 4788 blx r1 728a: e7fe b.n 728a <_lv_style_list_add_trans_style+0x6e> LV_LOG_WARN("lv_style_list_add_trans_style: couldn't create transition style"); 728c: 4b0e ldr r3, [pc, #56] ; (72c8 <_lv_style_list_add_trans_style+0xac>) 728e: 9300 str r3, [sp, #0] 7290: 4b08 ldr r3, [pc, #32] ; (72b4 <_lv_style_list_add_trans_style+0x98>) 7292: f240 22cf movw r2, #719 ; 0x2cf 7296: 4908 ldr r1, [pc, #32] ; (72b8 <_lv_style_list_add_trans_style+0x9c>) 7298: 2002 movs r0, #2 729a: 4c08 ldr r4, [pc, #32] ; (72bc <_lv_style_list_add_trans_style+0xa0>) 729c: 47a0 blx r4 return NULL; 729e: e7c7 b.n 7230 <_lv_style_list_add_trans_style+0x14> 72a0: 000070cf .word 0x000070cf 72a4: 000123c5 .word 0x000123c5 72a8: 00002299 .word 0x00002299 72ac: 000064c1 .word 0x000064c1 72b0: 000065c1 .word 0x000065c1 72b4: 00024b04 .word 0x00024b04 72b8: 00024b24 .word 0x00024b24 72bc: 00012245 .word 0x00012245 72c0: 00023fc0 .word 0x00023fc0 72c4: 000022a1 .word 0x000022a1 72c8: 00024bec .word 0x00024bec 000072cc <_lv_style_list_get_int>: if(list == NULL) return LV_RES_INV; 72cc: 2800 cmp r0, #0 72ce: d059 beq.n 7384 <_lv_style_list_get_int+0xb8> { 72d0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 72d4: b083 sub sp, #12 72d6: 4605 mov r5, r0 if(list->style_list == NULL) return LV_RES_INV; 72d8: 6803 ldr r3, [r0, #0] 72da: 2b00 cmp r3, #0 72dc: d054 beq.n 7388 <_lv_style_list_get_int+0xbc> int16_t weight_goal = attr.full; 72de: ea4f 2811 mov.w r8, r1, lsr #8 lv_style_int_t value_act = 0; 72e2: 2300 movs r3, #0 72e4: f8ad 3006 strh.w r3, [sp, #6] for(ci = 0; ci < list->style_cnt; ci++) { 72e8: 7900 ldrb r0, [r0, #4] 72ea: 2800 cmp r0, #0 72ec: d042 beq.n 7374 <_lv_style_list_get_int+0xa8> 72ee: 4693 mov fp, r2 72f0: 4689 mov r9, r1 72f2: 461c mov r4, r3 72f4: f04f 36ff mov.w r6, #4294967295 72f8: 469a mov sl, r3 int16_t weight_act = _lv_style_get_int(class, prop, &value_act); 72fa: 4f24 ldr r7, [pc, #144] ; (738c <_lv_style_list_get_int+0xc0>) 72fc: e01c b.n 7338 <_lv_style_list_get_int+0x6c> 72fe: 4650 mov r0, sl 7300: f10d 0206 add.w r2, sp, #6 7304: 4649 mov r1, r9 7306: 47b8 blx r7 if(weight_act == weight_goal) { 7308: 4580 cmp r8, r0 730a: d027 beq.n 735c <_lv_style_list_get_int+0x90> else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 730c: 796b ldrb r3, [r5, #5] 730e: f013 0f02 tst.w r3, #2 7312: d005 beq.n 7320 <_lv_style_list_get_int+0x54> 7314: 2800 cmp r0, #0 7316: db03 blt.n 7320 <_lv_style_list_get_int+0x54> 7318: b914 cbnz r4, 7320 <_lv_style_list_get_int+0x54> 731a: f013 0f04 tst.w r3, #4 731e: d023 beq.n 7368 <_lv_style_list_get_int+0x9c> else if(weight_act > weight) { 7320: 42b0 cmp r0, r6 7322: dd04 ble.n 732e <_lv_style_list_get_int+0x62> *res = value_act; 7324: f8bd 3006 ldrh.w r3, [sp, #6] 7328: f8ab 3000 strh.w r3, [fp] weight = weight_act; 732c: 4606 mov r6, r0 732e: 3401 adds r4, #1 7330: b224 sxth r4, r4 for(ci = 0; ci < list->style_cnt; ci++) { 7332: 7928 ldrb r0, [r5, #4] 7334: 4284 cmp r4, r0 7336: da1f bge.n 7378 <_lv_style_list_get_int+0xac> lv_style_t * class = lv_style_list_get_style(list, ci); 7338: b2e2 uxtb r2, r4 if(list->has_trans && list->skip_trans) id++; 733a: 796b ldrb r3, [r5, #5] 733c: f003 0306 and.w r3, r3, #6 7340: 2b06 cmp r3, #6 7342: bf04 itt eq 7344: 3201 addeq r2, #1 7346: b2d2 uxtbeq r2, r2 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 7348: 2800 cmp r0, #0 734a: d0d8 beq.n 72fe <_lv_style_list_get_int+0x32> 734c: 4282 cmp r2, r0 734e: d203 bcs.n 7358 <_lv_style_list_get_int+0x8c> return list->style_list[id]; 7350: 682b ldr r3, [r5, #0] 7352: f853 0022 ldr.w r0, [r3, r2, lsl #2] 7356: e7d3 b.n 7300 <_lv_style_list_get_int+0x34> if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 7358: 4650 mov r0, sl 735a: e7d1 b.n 7300 <_lv_style_list_get_int+0x34> *res = value_act; 735c: f8bd 3006 ldrh.w r3, [sp, #6] 7360: f8ab 3000 strh.w r3, [fp] return LV_RES_OK; 7364: 2001 movs r0, #1 7366: e00a b.n 737e <_lv_style_list_get_int+0xb2> *res = value_act; 7368: f8bd 3006 ldrh.w r3, [sp, #6] 736c: f8ab 3000 strh.w r3, [fp] return LV_RES_OK; 7370: 2001 movs r0, #1 7372: e004 b.n 737e <_lv_style_list_get_int+0xb2> int16_t weight = -1; 7374: f04f 36ff mov.w r6, #4294967295 if(weight >= 0) return LV_RES_OK; 7378: 43f0 mvns r0, r6 if(list == NULL) return LV_RES_INV; 737a: f3c0 30c0 ubfx r0, r0, #15, #1 } 737e: b003 add sp, #12 7380: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(list == NULL) return LV_RES_INV; 7384: 2000 movs r0, #0 7386: 4770 bx lr if(list->style_list == NULL) return LV_RES_INV; 7388: 2000 movs r0, #0 738a: e7f8 b.n 737e <_lv_style_list_get_int+0xb2> 738c: 00006ddd .word 0x00006ddd 00007390 <_lv_style_list_get_color>: if(list == NULL) return LV_RES_INV; 7390: 2800 cmp r0, #0 7392: d058 beq.n 7446 <_lv_style_list_get_color+0xb6> { 7394: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 7398: b083 sub sp, #12 739a: 4605 mov r5, r0 if(list->style_list == NULL) return LV_RES_INV; 739c: 6803 ldr r3, [r0, #0] 739e: 2b00 cmp r3, #0 73a0: d053 beq.n 744a <_lv_style_list_get_color+0xba> int16_t weight_goal = attr.full; 73a2: ea4f 2811 mov.w r8, r1, lsr #8 lv_color_t value_act = { 0 }; 73a6: 2300 movs r3, #0 73a8: f8ad 3004 strh.w r3, [sp, #4] for(ci = 0; ci < list->style_cnt; ci++) { 73ac: 7900 ldrb r0, [r0, #4] 73ae: 2800 cmp r0, #0 73b0: d041 beq.n 7436 <_lv_style_list_get_color+0xa6> 73b2: 4693 mov fp, r2 73b4: 4689 mov r9, r1 73b6: 461c mov r4, r3 73b8: f04f 36ff mov.w r6, #4294967295 73bc: 469a mov sl, r3 int16_t weight_act = _lv_style_get_color(class, prop, &value_act); 73be: 4f24 ldr r7, [pc, #144] ; (7450 <_lv_style_list_get_color+0xc0>) 73c0: e01b b.n 73fa <_lv_style_list_get_color+0x6a> 73c2: 4650 mov r0, sl 73c4: aa01 add r2, sp, #4 73c6: 4649 mov r1, r9 73c8: 47b8 blx r7 if(weight_act == weight_goal) { 73ca: 4580 cmp r8, r0 73cc: d027 beq.n 741e <_lv_style_list_get_color+0x8e> else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 73ce: 796b ldrb r3, [r5, #5] 73d0: f013 0f02 tst.w r3, #2 73d4: d005 beq.n 73e2 <_lv_style_list_get_color+0x52> 73d6: 2800 cmp r0, #0 73d8: db03 blt.n 73e2 <_lv_style_list_get_color+0x52> 73da: b914 cbnz r4, 73e2 <_lv_style_list_get_color+0x52> 73dc: f013 0f04 tst.w r3, #4 73e0: d023 beq.n 742a <_lv_style_list_get_color+0x9a> else if(weight_act > weight) { 73e2: 42b0 cmp r0, r6 73e4: dd04 ble.n 73f0 <_lv_style_list_get_color+0x60> *res = value_act; 73e6: f8bd 3004 ldrh.w r3, [sp, #4] 73ea: f8ab 3000 strh.w r3, [fp] weight = weight_act; 73ee: 4606 mov r6, r0 73f0: 3401 adds r4, #1 73f2: b224 sxth r4, r4 for(ci = 0; ci < list->style_cnt; ci++) { 73f4: 7928 ldrb r0, [r5, #4] 73f6: 4284 cmp r4, r0 73f8: da1f bge.n 743a <_lv_style_list_get_color+0xaa> lv_style_t * class = lv_style_list_get_style(list, ci); 73fa: b2e2 uxtb r2, r4 if(list->has_trans && list->skip_trans) id++; 73fc: 796b ldrb r3, [r5, #5] 73fe: f003 0306 and.w r3, r3, #6 7402: 2b06 cmp r3, #6 7404: bf04 itt eq 7406: 3201 addeq r2, #1 7408: b2d2 uxtbeq r2, r2 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 740a: 2800 cmp r0, #0 740c: d0d9 beq.n 73c2 <_lv_style_list_get_color+0x32> 740e: 4282 cmp r2, r0 7410: d203 bcs.n 741a <_lv_style_list_get_color+0x8a> return list->style_list[id]; 7412: 682b ldr r3, [r5, #0] 7414: f853 0022 ldr.w r0, [r3, r2, lsl #2] 7418: e7d4 b.n 73c4 <_lv_style_list_get_color+0x34> if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 741a: 4650 mov r0, sl 741c: e7d2 b.n 73c4 <_lv_style_list_get_color+0x34> *res = value_act; 741e: f8bd 3004 ldrh.w r3, [sp, #4] 7422: f8ab 3000 strh.w r3, [fp] return LV_RES_OK; 7426: 2001 movs r0, #1 7428: e00a b.n 7440 <_lv_style_list_get_color+0xb0> *res = value_act; 742a: f8bd 3004 ldrh.w r3, [sp, #4] 742e: f8ab 3000 strh.w r3, [fp] return LV_RES_OK; 7432: 2001 movs r0, #1 7434: e004 b.n 7440 <_lv_style_list_get_color+0xb0> int16_t weight = -1; 7436: f04f 36ff mov.w r6, #4294967295 if(weight >= 0) return LV_RES_OK; 743a: 43f0 mvns r0, r6 if(list == NULL) return LV_RES_INV; 743c: f3c0 30c0 ubfx r0, r0, #15, #1 } 7440: b003 add sp, #12 7442: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(list == NULL) return LV_RES_INV; 7446: 2000 movs r0, #0 7448: 4770 bx lr if(list->style_list == NULL) return LV_RES_INV; 744a: 2000 movs r0, #0 744c: e7f8 b.n 7440 <_lv_style_list_get_color+0xb0> 744e: bf00 nop 7450: 00006f43 .word 0x00006f43 00007454 <_lv_style_list_get_opa>: if(list == NULL) return LV_RES_INV; 7454: 2800 cmp r0, #0 7456: d059 beq.n 750c <_lv_style_list_get_opa+0xb8> { 7458: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 745c: b083 sub sp, #12 745e: 4605 mov r5, r0 if(list->style_list == NULL) return LV_RES_INV; 7460: 6803 ldr r3, [r0, #0] 7462: 2b00 cmp r3, #0 7464: d054 beq.n 7510 <_lv_style_list_get_opa+0xbc> int16_t weight_goal = attr.full; 7466: ea4f 2811 mov.w r8, r1, lsr #8 lv_opa_t value_act = LV_OPA_TRANSP; 746a: 2300 movs r3, #0 746c: f88d 3007 strb.w r3, [sp, #7] for(ci = 0; ci < list->style_cnt; ci++) { 7470: 7900 ldrb r0, [r0, #4] 7472: 2800 cmp r0, #0 7474: d042 beq.n 74fc <_lv_style_list_get_opa+0xa8> 7476: 4693 mov fp, r2 7478: 4689 mov r9, r1 747a: 461c mov r4, r3 747c: f04f 36ff mov.w r6, #4294967295 7480: 469a mov sl, r3 int16_t weight_act = _lv_style_get_opa(class, prop, &value_act); 7482: 4f24 ldr r7, [pc, #144] ; (7514 <_lv_style_list_get_opa+0xc0>) 7484: e01c b.n 74c0 <_lv_style_list_get_opa+0x6c> 7486: 4650 mov r0, sl 7488: f10d 0207 add.w r2, sp, #7 748c: 4649 mov r1, r9 748e: 47b8 blx r7 if(weight_act == weight_goal) { 7490: 4580 cmp r8, r0 7492: d027 beq.n 74e4 <_lv_style_list_get_opa+0x90> else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 7494: 796b ldrb r3, [r5, #5] 7496: f013 0f02 tst.w r3, #2 749a: d005 beq.n 74a8 <_lv_style_list_get_opa+0x54> 749c: 2800 cmp r0, #0 749e: db03 blt.n 74a8 <_lv_style_list_get_opa+0x54> 74a0: b914 cbnz r4, 74a8 <_lv_style_list_get_opa+0x54> 74a2: f013 0f04 tst.w r3, #4 74a6: d023 beq.n 74f0 <_lv_style_list_get_opa+0x9c> else if(weight_act > weight) { 74a8: 42b0 cmp r0, r6 74aa: dd04 ble.n 74b6 <_lv_style_list_get_opa+0x62> *res = value_act; 74ac: f89d 3007 ldrb.w r3, [sp, #7] 74b0: f88b 3000 strb.w r3, [fp] weight = weight_act; 74b4: 4606 mov r6, r0 74b6: 3401 adds r4, #1 74b8: b224 sxth r4, r4 for(ci = 0; ci < list->style_cnt; ci++) { 74ba: 7928 ldrb r0, [r5, #4] 74bc: 4284 cmp r4, r0 74be: da1f bge.n 7500 <_lv_style_list_get_opa+0xac> lv_style_t * class = lv_style_list_get_style(list, ci); 74c0: b2e2 uxtb r2, r4 if(list->has_trans && list->skip_trans) id++; 74c2: 796b ldrb r3, [r5, #5] 74c4: f003 0306 and.w r3, r3, #6 74c8: 2b06 cmp r3, #6 74ca: bf04 itt eq 74cc: 3201 addeq r2, #1 74ce: b2d2 uxtbeq r2, r2 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 74d0: 2800 cmp r0, #0 74d2: d0d8 beq.n 7486 <_lv_style_list_get_opa+0x32> 74d4: 4282 cmp r2, r0 74d6: d203 bcs.n 74e0 <_lv_style_list_get_opa+0x8c> return list->style_list[id]; 74d8: 682b ldr r3, [r5, #0] 74da: f853 0022 ldr.w r0, [r3, r2, lsl #2] 74de: e7d3 b.n 7488 <_lv_style_list_get_opa+0x34> if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 74e0: 4650 mov r0, sl 74e2: e7d1 b.n 7488 <_lv_style_list_get_opa+0x34> *res = value_act; 74e4: f89d 3007 ldrb.w r3, [sp, #7] 74e8: f88b 3000 strb.w r3, [fp] return LV_RES_OK; 74ec: 2001 movs r0, #1 74ee: e00a b.n 7506 <_lv_style_list_get_opa+0xb2> *res = value_act; 74f0: f89d 3007 ldrb.w r3, [sp, #7] 74f4: f88b 3000 strb.w r3, [fp] return LV_RES_OK; 74f8: 2001 movs r0, #1 74fa: e004 b.n 7506 <_lv_style_list_get_opa+0xb2> int16_t weight = -1; 74fc: f04f 36ff mov.w r6, #4294967295 if(weight >= 0) return LV_RES_OK; 7500: 43f0 mvns r0, r6 if(list == NULL) return LV_RES_INV; 7502: f3c0 30c0 ubfx r0, r0, #15, #1 } 7506: b003 add sp, #12 7508: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(list == NULL) return LV_RES_INV; 750c: 2000 movs r0, #0 750e: 4770 bx lr if(list->style_list == NULL) return LV_RES_INV; 7510: 2000 movs r0, #0 7512: e7f8 b.n 7506 <_lv_style_list_get_opa+0xb2> 7514: 00006e93 .word 0x00006e93 00007518 <_lv_style_list_get_ptr>: if(list == NULL) return LV_RES_INV; 7518: 2800 cmp r0, #0 751a: d052 beq.n 75c2 <_lv_style_list_get_ptr+0xaa> { 751c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 7520: b083 sub sp, #12 7522: 4605 mov r5, r0 if(list->style_list == NULL) return LV_RES_INV; 7524: 6803 ldr r3, [r0, #0] 7526: 2b00 cmp r3, #0 7528: d04d beq.n 75c6 <_lv_style_list_get_ptr+0xae> int16_t weight_goal = attr.full; 752a: ea4f 2811 mov.w r8, r1, lsr #8 for(ci = 0; ci < list->style_cnt; ci++) { 752e: 7900 ldrb r0, [r0, #4] 7530: 2800 cmp r0, #0 7532: d03e beq.n 75b2 <_lv_style_list_get_ptr+0x9a> 7534: 4693 mov fp, r2 7536: 4689 mov r9, r1 7538: 2400 movs r4, #0 753a: f04f 36ff mov.w r6, #4294967295 753e: 46a2 mov sl, r4 int16_t weight_act = _lv_style_get_ptr(class, prop, &value_act); 7540: 4f22 ldr r7, [pc, #136] ; (75cc <_lv_style_list_get_ptr+0xb4>) 7542: e01a b.n 757a <_lv_style_list_get_ptr+0x62> 7544: 4650 mov r0, sl 7546: aa01 add r2, sp, #4 7548: 4649 mov r1, r9 754a: 47b8 blx r7 if(weight_act == weight_goal) { 754c: 4580 cmp r8, r0 754e: d026 beq.n 759e <_lv_style_list_get_ptr+0x86> else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 7550: 796b ldrb r3, [r5, #5] 7552: f013 0f02 tst.w r3, #2 7556: d005 beq.n 7564 <_lv_style_list_get_ptr+0x4c> 7558: 2800 cmp r0, #0 755a: db03 blt.n 7564 <_lv_style_list_get_ptr+0x4c> 755c: b914 cbnz r4, 7564 <_lv_style_list_get_ptr+0x4c> 755e: f013 0f04 tst.w r3, #4 7562: d021 beq.n 75a8 <_lv_style_list_get_ptr+0x90> else if(weight_act > weight) { 7564: 42b0 cmp r0, r6 7566: dd03 ble.n 7570 <_lv_style_list_get_ptr+0x58> *res = value_act; 7568: 9b01 ldr r3, [sp, #4] 756a: f8cb 3000 str.w r3, [fp] weight = weight_act; 756e: 4606 mov r6, r0 7570: 3401 adds r4, #1 7572: b224 sxth r4, r4 for(ci = 0; ci < list->style_cnt; ci++) { 7574: 7928 ldrb r0, [r5, #4] 7576: 4284 cmp r4, r0 7578: da1d bge.n 75b6 <_lv_style_list_get_ptr+0x9e> lv_style_t * class = lv_style_list_get_style(list, ci); 757a: b2e2 uxtb r2, r4 if(list->has_trans && list->skip_trans) id++; 757c: 796b ldrb r3, [r5, #5] 757e: f003 0306 and.w r3, r3, #6 7582: 2b06 cmp r3, #6 7584: bf04 itt eq 7586: 3201 addeq r2, #1 7588: b2d2 uxtbeq r2, r2 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 758a: 2800 cmp r0, #0 758c: d0da beq.n 7544 <_lv_style_list_get_ptr+0x2c> 758e: 4282 cmp r2, r0 7590: d203 bcs.n 759a <_lv_style_list_get_ptr+0x82> return list->style_list[id]; 7592: 682b ldr r3, [r5, #0] 7594: f853 0022 ldr.w r0, [r3, r2, lsl #2] 7598: e7d5 b.n 7546 <_lv_style_list_get_ptr+0x2e> if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 759a: 4650 mov r0, sl 759c: e7d3 b.n 7546 <_lv_style_list_get_ptr+0x2e> *res = value_act; 759e: 9b01 ldr r3, [sp, #4] 75a0: f8cb 3000 str.w r3, [fp] return LV_RES_OK; 75a4: 2001 movs r0, #1 75a6: e009 b.n 75bc <_lv_style_list_get_ptr+0xa4> *res = value_act; 75a8: 9b01 ldr r3, [sp, #4] 75aa: f8cb 3000 str.w r3, [fp] return LV_RES_OK; 75ae: 2001 movs r0, #1 75b0: e004 b.n 75bc <_lv_style_list_get_ptr+0xa4> int16_t weight = -1; 75b2: f04f 36ff mov.w r6, #4294967295 if(weight >= 0) return LV_RES_OK; 75b6: 43f0 mvns r0, r6 if(list == NULL) return LV_RES_INV; 75b8: f3c0 30c0 ubfx r0, r0, #15, #1 } 75bc: b003 add sp, #12 75be: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(list == NULL) return LV_RES_INV; 75c2: 2000 movs r0, #0 75c4: 4770 bx lr if(list->style_list == NULL) return LV_RES_INV; 75c6: 2000 movs r0, #0 75c8: e7f8 b.n 75bc <_lv_style_list_get_ptr+0xa4> 75ca: bf00 nop 75cc: 00006ff9 .word 0x00006ff9 000075d0 : } } } static inline lv_color_t color_blend_true_color_additive(lv_color_t fg, lv_color_t bg, lv_opa_t opa) { 75d0: b5f0 push {r4, r5, r6, r7, lr} 75d2: f001 0e1f and.w lr, r1, #31 75d6: f3c1 1645 ubfx r6, r1, #5, #6 75da: f3c1 21c4 ubfx r1, r1, #11, #5 if(opa <= LV_OPA_MIN) return bg; 75de: 2a05 cmp r2, #5 75e0: d93f bls.n 7662 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; 75e2: f3c0 24c4 ubfx r4, r0, #11, #5 75e6: 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); 75e8: 2c1f cmp r4, #31 75ea: bf28 it cs 75ec: 241f movcs r4, #31 75ee: 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; 75f2: f3c0 1345 ubfx r3, r0, #5, #6 75f6: 4433 add r3, r6 fg.ch.green = LV_MATH_MIN(tmp, 63); 75f8: 2b3f cmp r3, #63 ; 0x3f 75fa: bf28 it cs 75fc: 233f movcs r3, #63 ; 0x3f 75fe: 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; 7602: f000 001f and.w r0, r0, #31 7606: 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); 7608: 281f cmp r0, #31 760a: bf28 it cs 760c: 201f movcs r0, #31 760e: 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; 7612: 2aff cmp r2, #255 ; 0xff 7614: d02e beq.n 7674 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))); 7616: 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))); 761a: fb07 f00e mul.w r0, r7, lr 761e: fb02 0003 mla r0, r2, r3, r0 7622: eb00 2300 add.w r3, r0, r0, lsl #8 7626: eb00 10c3 add.w r0, r0, r3, lsl #7 762a: 0dc3 lsrs r3, r0, #23 762c: f04f 0000 mov.w r0, #0 7630: 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))); 7634: fb07 f306 mul.w r3, r7, r6 7638: fb02 3305 mla r3, r2, r5, r3 763c: eb03 2503 add.w r5, r3, r3, lsl #8 7640: eb03 13c5 add.w r3, r3, r5, lsl #7 7644: 0ddb lsrs r3, r3, #23 7646: 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))); 764a: fb07 f101 mul.w r1, r7, r1 764e: fb02 1204 mla r2, r2, r4, r1 7652: eb02 2302 add.w r3, r2, r2, lsl #8 7656: eb02 12c3 add.w r2, r2, r3, lsl #7 765a: 0dd2 lsrs r2, r2, #23 765c: f362 20cf bfi r0, r2, #11, #5 return lv_color_mix(fg, bg, opa); } 7660: bdf0 pop {r4, r5, r6, r7, pc} if(opa <= LV_OPA_MIN) return bg; 7662: f04f 0000 mov.w r0, #0 7666: f36e 0004 bfi r0, lr, #0, #5 766a: f366 104a bfi r0, r6, #5, #6 766e: f361 20cf bfi r0, r1, #11, #5 7672: bdf0 pop {r4, r5, r6, r7, pc} if(opa == LV_OPA_COVER) return fg; 7674: f04f 0000 mov.w r0, #0 7678: f363 0004 bfi r0, r3, #0, #5 767c: f365 104a bfi r0, r5, #5, #6 7680: f364 20cf bfi r0, r4, #11, #5 7684: bdf0 pop {r4, r5, r6, r7, pc} 00007686 : static inline lv_color_t color_blend_true_color_subtractive(lv_color_t fg, lv_color_t bg, lv_opa_t opa) { 7686: b5f0 push {r4, r5, r6, r7, lr} 7688: f001 0e1f and.w lr, r1, #31 768c: f3c1 1645 ubfx r6, r1, #5, #6 7690: f3c1 21c4 ubfx r1, r1, #11, #5 if(opa <= LV_OPA_MIN) return bg; 7694: 2a05 cmp r2, #5 7696: d93d bls.n 7714 int32_t tmp; tmp = bg.ch.red - fg.ch.red; 7698: f3c0 24c4 ubfx r4, r0, #11, #5 769c: 1b0c subs r4, r1, r4 fg.ch.red = LV_MATH_MAX(tmp, 0); 769e: ea24 74e4 bic.w r4, r4, r4, asr #31 76a2: f004 041f and.w r4, r4, #31 #if LV_COLOR_16_SWAP == 0 tmp = bg.ch.green - fg.ch.green; 76a6: f3c0 1345 ubfx r3, r0, #5, #6 76aa: 1af3 subs r3, r6, r3 fg.ch.green = LV_MATH_MAX(tmp, 0); 76ac: ea23 73e3 bic.w r3, r3, r3, asr #31 76b0: 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; 76b4: f000 001f and.w r0, r0, #31 76b8: ebae 0000 sub.w r0, lr, r0 fg.ch.blue = LV_MATH_MAX(tmp, 0); 76bc: ea20 70e0 bic.w r0, r0, r0, asr #31 76c0: f000 031f and.w r3, r0, #31 if(opa == LV_OPA_COVER) return fg; 76c4: 2aff cmp r2, #255 ; 0xff 76c6: d02e beq.n 7726 76c8: 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))); 76cc: fb07 f00e mul.w r0, r7, lr 76d0: fb02 0003 mla r0, r2, r3, r0 76d4: eb00 2300 add.w r3, r0, r0, lsl #8 76d8: eb00 10c3 add.w r0, r0, r3, lsl #7 76dc: 0dc3 lsrs r3, r0, #23 76de: f04f 0000 mov.w r0, #0 76e2: 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))); 76e6: fb07 f306 mul.w r3, r7, r6 76ea: fb02 3305 mla r3, r2, r5, r3 76ee: eb03 2503 add.w r5, r3, r3, lsl #8 76f2: eb03 13c5 add.w r3, r3, r5, lsl #7 76f6: 0ddb lsrs r3, r3, #23 76f8: 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))); 76fc: fb07 f101 mul.w r1, r7, r1 7700: fb02 1204 mla r2, r2, r4, r1 7704: eb02 2302 add.w r3, r2, r2, lsl #8 7708: eb02 12c3 add.w r2, r2, r3, lsl #7 770c: 0dd2 lsrs r2, r2, #23 770e: f362 20cf bfi r0, r2, #11, #5 return lv_color_mix(fg, bg, opa); } 7712: bdf0 pop {r4, r5, r6, r7, pc} if(opa <= LV_OPA_MIN) return bg; 7714: f04f 0000 mov.w r0, #0 7718: f36e 0004 bfi r0, lr, #0, #5 771c: f366 104a bfi r0, r6, #5, #6 7720: f361 20cf bfi r0, r1, #11, #5 7724: bdf0 pop {r4, r5, r6, r7, pc} if(opa == LV_OPA_COVER) return fg; 7726: f04f 0000 mov.w r0, #0 772a: f363 0004 bfi r0, r3, #0, #5 772e: f365 104a bfi r0, r5, #5, #6 7732: f364 20cf bfi r0, r4, #11, #5 7736: bdf0 pop {r4, r5, r6, r7, pc} 00007738 <_lv_blend_fill>: { 7738: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 773c: b093 sub sp, #76 ; 0x4c 773e: f89d 4070 ldrb.w r4, [sp, #112] ; 0x70 7742: f89d b074 ldrb.w fp, [sp, #116] ; 0x74 7746: f89d 9078 ldrb.w r9, [sp, #120] ; 0x78 if(opa < LV_OPA_MIN) return; 774a: f1bb 0f04 cmp.w fp, #4 774e: d900 bls.n 7752 <_lv_blend_fill+0x1a> if(mask_res == LV_DRAW_MASK_RES_TRANSP) return; 7750: b914 cbnz r4, 7758 <_lv_blend_fill+0x20> } 7752: b013 add sp, #76 ; 0x4c 7754: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 7758: 9308 str r3, [sp, #32] 775a: f8ad 2024 strh.w r2, [sp, #36] ; 0x24 775e: 460e mov r6, r1 7760: 4605 mov r5, r0 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 7762: 4bba ldr r3, [pc, #744] ; (7a4c <_lv_blend_fill+0x314>) 7764: 4798 blx r3 7766: 4680 mov r8, r0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 7768: 4bb9 ldr r3, [pc, #740] ; (7a50 <_lv_blend_fill+0x318>) 776a: 4798 blx r3 776c: 4607 mov r7, r0 lv_color_t * disp_buf = vdb->buf_act; 776e: 6882 ldr r2, [r0, #8] 7770: 9206 str r2, [sp, #24] is_common = _lv_area_intersect(&draw_area, clip_area, fill_area); 7772: 4632 mov r2, r6 7774: 4629 mov r1, r5 7776: a810 add r0, sp, #64 ; 0x40 7778: 4bb6 ldr r3, [pc, #728] ; (7a54 <_lv_blend_fill+0x31c>) 777a: 4798 blx r3 if(!is_common) return; 777c: 2800 cmp r0, #0 777e: d0e8 beq.n 7752 <_lv_blend_fill+0x1a> draw_area.x1 -= disp_area->x1; 7780: 8a3a ldrh r2, [r7, #16] 7782: f8bd 3040 ldrh.w r3, [sp, #64] ; 0x40 7786: 1a9b subs r3, r3, r2 7788: b299 uxth r1, r3 778a: 460d mov r5, r1 778c: 910a str r1, [sp, #40] ; 0x28 778e: b208 sxth r0, r1 7790: 900b str r0, [sp, #44] ; 0x2c 7792: f8ad 0040 strh.w r0, [sp, #64] ; 0x40 draw_area.y1 -= disp_area->y1; 7796: 8a7b ldrh r3, [r7, #18] 7798: f8bd 1042 ldrh.w r1, [sp, #66] ; 0x42 779c: 1ac9 subs r1, r1, r3 779e: fa0f fc81 sxth.w ip, r1 77a2: f8ad c042 strh.w ip, [sp, #66] ; 0x42 draw_area.x2 -= disp_area->x1; 77a6: f8bd 0044 ldrh.w r0, [sp, #68] ; 0x44 77aa: 1a80 subs r0, r0, r2 77ac: b280 uxth r0, r0 77ae: f8ad 0044 strh.w r0, [sp, #68] ; 0x44 draw_area.y2 -= disp_area->y1; 77b2: f8bd e046 ldrh.w lr, [sp, #70] ; 0x46 77b6: ebae 0e03 sub.w lr, lr, r3 77ba: fa0f fe8e sxth.w lr, lr 77be: f8ad e046 strh.w lr, [sp, #70] ; 0x46 if(mask && disp->driver.antialiasing == 0) 77c2: 9a08 ldr r2, [sp, #32] 77c4: b1aa cbz r2, 77f2 <_lv_blend_fill+0xba> 77c6: f898 3008 ldrb.w r3, [r8, #8] 77ca: f013 0f01 tst.w r3, #1 77ce: d110 bne.n 77f2 <_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); 77d0: 1c41 adds r1, r0, #1 77d2: 1b49 subs r1, r1, r5 77d4: b209 sxth r1, r1 for(i = 0; i < mask_w; i++) mask[i] = mask[i] > 128 ? LV_OPA_COVER : LV_OPA_TRANSP; 77d6: 2900 cmp r1, #0 77d8: dd0b ble.n 77f2 <_lv_blend_fill+0xba> 77da: 4613 mov r3, r2 77dc: 4411 add r1, r2 77de: 781a ldrb r2, [r3, #0] 77e0: 2a80 cmp r2, #128 ; 0x80 77e2: f04f 32ff mov.w r2, #4294967295 77e6: bf98 it ls 77e8: 2200 movls r2, #0 77ea: f803 2b01 strb.w r2, [r3], #1 77ee: 428b cmp r3, r1 77f0: d1f5 bne.n 77de <_lv_blend_fill+0xa6> if(disp->driver.set_px_cb) { 77f2: f8d8 3014 ldr.w r3, [r8, #20] 77f6: 2b00 cmp r3, #0 77f8: d077 beq.n 78ea <_lv_blend_fill+0x1b2> 77fa: f8bd 8024 ldrh.w r8, [sp, #36] ; 0x24 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 77fe: 4b93 ldr r3, [pc, #588] ; (7a4c <_lv_blend_fill+0x314>) 7800: 4798 blx r3 7802: 4605 mov r5, r0 7804: 8abb ldrh r3, [r7, #20] 7806: 3301 adds r3, #1 7808: 8a3a ldrh r2, [r7, #16] 780a: 1a9b subs r3, r3, r2 780c: b21b sxth r3, r3 780e: 9307 str r3, [sp, #28] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 7810: 2c01 cmp r4, #1 7812: d03e beq.n 7892 <_lv_blend_fill+0x15a> const lv_opa_t * mask_tmp = mask - draw_area->x1; 7814: f9bd 2040 ldrsh.w r2, [sp, #64] ; 0x40 7818: 9b08 ldr r3, [sp, #32] 781a: 1a9f subs r7, r3, r2 781c: f8bd 3044 ldrh.w r3, [sp, #68] ; 0x44 7820: 3301 adds r3, #1 7822: 1a9b subs r3, r3, r2 7824: b21b sxth r3, r3 7826: 9308 str r3, [sp, #32] for(y = draw_area->y1; y <= draw_area->y2; y++) { 7828: f9bd a042 ldrsh.w sl, [sp, #66] ; 0x42 782c: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46 7830: 459a cmp sl, r3 7832: dc8e bgt.n 7752 <_lv_blend_fill+0x1a> for(x = draw_area->x1; x <= draw_area->x2; x++) { 7834: f9bd 6040 ldrsh.w r6, [sp, #64] ; 0x40 7838: 4634 mov r4, r6 783a: f9bd 3044 ldrsh.w r3, [sp, #68] ; 0x44 783e: 429e cmp r6, r3 7840: dc1e bgt.n 7880 <_lv_blend_fill+0x148> 7842: 443e add r6, r7 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, 7844: fa0f f98a sxth.w r9, sl 7848: 9605 str r6, [sp, #20] 784a: 464b mov r3, r9 784c: 46b9 mov r9, r7 784e: 461f mov r7, r3 (uint32_t)((uint32_t)opa * mask_tmp[x]) >> 8); 7850: 9a05 ldr r2, [sp, #20] 7852: f812 3b01 ldrb.w r3, [r2], #1 7856: 9205 str r2, [sp, #20] 7858: fb03 f30b mul.w r3, r3, fp disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, 785c: f3c3 2307 ubfx r3, r3, #8, #8 7860: 9302 str r3, [sp, #8] 7862: f8ad 8004 strh.w r8, [sp, #4] 7866: 9700 str r7, [sp, #0] 7868: b223 sxth r3, r4 786a: 9a07 ldr r2, [sp, #28] 786c: 9906 ldr r1, [sp, #24] 786e: 4628 mov r0, r5 7870: 696e ldr r6, [r5, #20] 7872: 47b0 blx r6 for(x = draw_area->x1; x <= draw_area->x2; x++) { 7874: 3401 adds r4, #1 7876: f9bd 3044 ldrsh.w r3, [sp, #68] ; 0x44 787a: 429c cmp r4, r3 787c: dde8 ble.n 7850 <_lv_blend_fill+0x118> 787e: 464f mov r7, r9 7880: 9b08 ldr r3, [sp, #32] 7882: 441f add r7, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 7884: f10a 0a01 add.w sl, sl, #1 7888: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46 788c: 459a cmp sl, r3 788e: ddd1 ble.n 7834 <_lv_blend_fill+0xfc> 7890: e75f b.n 7752 <_lv_blend_fill+0x1a> for(y = draw_area->y1; y <= draw_area->y2; y++) { 7892: f9bd 9042 ldrsh.w r9, [sp, #66] ; 0x42 7896: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46 789a: 4599 cmp r9, r3 789c: f73f af59 bgt.w 7752 <_lv_blend_fill+0x1a> 78a0: f8dd a01c ldr.w sl, [sp, #28] 78a4: 465e mov r6, fp 78a6: f8dd b018 ldr.w fp, [sp, #24] for(x = draw_area->x1; x <= draw_area->x2; x++) { 78aa: f9bd 4040 ldrsh.w r4, [sp, #64] ; 0x40 78ae: f9bd 3044 ldrsh.w r3, [sp, #68] ; 0x44 78b2: 429c cmp r4, r3 78b4: dc12 bgt.n 78dc <_lv_blend_fill+0x1a4> disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, opa); 78b6: fa0f f789 sxth.w r7, r9 78ba: 9705 str r7, [sp, #20] 78bc: 9602 str r6, [sp, #8] 78be: f8ad 8004 strh.w r8, [sp, #4] 78c2: 9b05 ldr r3, [sp, #20] 78c4: 9300 str r3, [sp, #0] 78c6: b223 sxth r3, r4 78c8: 4652 mov r2, sl 78ca: 4659 mov r1, fp 78cc: 4628 mov r0, r5 78ce: 696f ldr r7, [r5, #20] 78d0: 47b8 blx r7 for(x = draw_area->x1; x <= draw_area->x2; x++) { 78d2: 3401 adds r4, #1 78d4: f9bd 3044 ldrsh.w r3, [sp, #68] ; 0x44 78d8: 429c cmp r4, r3 78da: ddef ble.n 78bc <_lv_blend_fill+0x184> for(y = draw_area->y1; y <= draw_area->y2; y++) { 78dc: f109 0901 add.w r9, r9, #1 78e0: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46 78e4: 4599 cmp r9, r3 78e6: dde0 ble.n 78aa <_lv_blend_fill+0x172> 78e8: e733 b.n 7752 <_lv_blend_fill+0x1a> else if(mode == LV_BLEND_MODE_NORMAL) { 78ea: f1b9 0f00 cmp.w r9, #0 78ee: f040 83a0 bne.w 8032 <_lv_blend_fill+0x8fa> 78f2: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 78f6: f8ad 301c strh.w r3, [sp, #28] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 78fa: 4b54 ldr r3, [pc, #336] ; (7a4c <_lv_blend_fill+0x314>) 78fc: 4798 blx r3 78fe: 4606 mov r6, r0 7900: 8abb ldrh r3, [r7, #20] 7902: 3301 adds r3, #1 7904: 8a3f ldrh r7, [r7, #16] 7906: 1bdf subs r7, r3, r7 7908: b23f sxth r7, r7 790a: f9bd 2040 ldrsh.w r2, [sp, #64] ; 0x40 790e: f8bd 3044 ldrh.w r3, [sp, #68] ; 0x44 7912: 3301 adds r3, #1 7914: 1a9b subs r3, r3, r2 7916: b21b sxth r3, r3 7918: 930b str r3, [sp, #44] ; 0x2c int32_t draw_area_w = lv_area_get_width(draw_area); 791a: 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); 791c: f9bd 0046 ldrsh.w r0, [sp, #70] ; 0x46 7920: f9bd 3042 ldrsh.w r3, [sp, #66] ; 0x42 7924: 1c41 adds r1, r0, #1 7926: 1ac9 subs r1, r1, r3 int32_t draw_area_h = lv_area_get_height(draw_area); 7928: b209 sxth r1, r1 792a: 910c str r1, [sp, #48] ; 0x30 lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1; 792c: 930a str r3, [sp, #40] ; 0x28 792e: fb03 2207 mla r2, r3, r7, r2 7932: 9906 ldr r1, [sp, #24] 7934: eb01 0142 add.w r1, r1, r2, lsl #1 7938: 9105 str r1, [sp, #20] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 793a: 2c01 cmp r4, #1 793c: d029 beq.n 7992 <_lv_blend_fill+0x25a> if(opa > LV_OPA_MAX) { 793e: f1bb 0ffa cmp.w fp, #250 ; 0xfa 7942: f200 8108 bhi.w 7b56 <_lv_blend_fill+0x41e> for(y = draw_area->y1; y <= draw_area->y2; y++) { 7946: 4283 cmp r3, r0 7948: f73f af03 bgt.w 7752 <_lv_blend_fill+0x1a> last_dest_color.full = disp_buf_first[0].full; 794c: 9b06 ldr r3, [sp, #24] 794e: f833 3012 ldrh.w r3, [r3, r2, lsl #1] 7952: f8bd 6024 ldrh.w r6, [sp, #36] ; 0x24 7956: 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))); 795a: f3c6 1245 ubfx r2, r6, #5, #6 795e: 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))); 7960: f006 021f and.w r2, r6, #31 7964: 4614 mov r4, r2 disp_buf_first += disp_w; 7966: 007a lsls r2, r7, #1 7968: 920c str r2, [sp, #48] ; 0x30 796a: 9a0b ldr r2, [sp, #44] ; 0x2c 796c: 9908 ldr r1, [sp, #32] 796e: 3901 subs r1, #1 7970: 9106 str r1, [sp, #24] 7972: 0052 lsls r2, r2, #1 7974: 920e str r2, [sp, #56] ; 0x38 7976: 4619 mov r1, r3 7978: f04f 0e00 mov.w lr, #0 797c: 4672 mov r2, lr if(opa_tmp == LV_OPA_COVER) last_res_color = color; 797e: b2b6 uxth r6, r6 7980: 9608 str r6, [sp, #32] if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 7982: f8cd b024 str.w fp, [sp, #36] ; 0x24 7986: 950d str r5, [sp, #52] ; 0x34 7988: 46a1 mov r9, r4 798a: f8cd b01c str.w fp, [sp, #28] 798e: 4683 mov fp, r0 7990: e345 b.n 801e <_lv_blend_fill+0x8e6> if(opa > LV_OPA_MAX) { 7992: f1bb 0ffa cmp.w fp, #250 ; 0xfa 7996: d925 bls.n 79e4 <_lv_blend_fill+0x2ac> if(disp->driver.gpu_fill_cb && lv_area_get_size(draw_area) > GPU_SIZE_LIMIT) { 7998: 6a73 ldr r3, [r6, #36] ; 0x24 799a: b123 cbz r3, 79a6 <_lv_blend_fill+0x26e> 799c: a810 add r0, sp, #64 ; 0x40 799e: 4b2e ldr r3, [pc, #184] ; (7a58 <_lv_blend_fill+0x320>) 79a0: 4798 blx r3 79a2: 28f0 cmp r0, #240 ; 0xf0 79a4: d813 bhi.n 79ce <_lv_blend_fill+0x296> for(y = 0; y < draw_area_h; y++) { 79a6: 9b0c ldr r3, [sp, #48] ; 0x30 79a8: 2b00 cmp r3, #0 79aa: f77f aed2 ble.w 7752 <_lv_blend_fill+0x1a> disp_buf_first += disp_w; 79ae: 007f lsls r7, r7, #1 79b0: 2400 movs r4, #0 lv_color_fill(disp_buf_first, color, draw_area_w); 79b2: 4d2a ldr r5, [pc, #168] ; (7a5c <_lv_blend_fill+0x324>) 79b4: f8dd 8030 ldr.w r8, [sp, #48] ; 0x30 79b8: 9e05 ldr r6, [sp, #20] 79ba: 9a0b ldr r2, [sp, #44] ; 0x2c 79bc: f8bd 101c ldrh.w r1, [sp, #28] 79c0: 4630 mov r0, r6 79c2: 47a8 blx r5 disp_buf_first += disp_w; 79c4: 443e add r6, r7 for(y = 0; y < draw_area_h; y++) { 79c6: 3401 adds r4, #1 79c8: 45a0 cmp r8, r4 79ca: d1f6 bne.n 79ba <_lv_blend_fill+0x282> 79cc: e6c1 b.n 7752 <_lv_blend_fill+0x1a> disp->driver.gpu_fill_cb(&disp->driver, disp_buf, disp_w, draw_area, color); 79ce: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 79d2: f8ad 3000 strh.w r3, [sp] 79d6: 6a74 ldr r4, [r6, #36] ; 0x24 79d8: ab10 add r3, sp, #64 ; 0x40 79da: 463a mov r2, r7 79dc: 9906 ldr r1, [sp, #24] 79de: 4630 mov r0, r6 79e0: 47a0 blx r4 79e2: e6b6 b.n 7752 <_lv_blend_fill+0x1a> if(disp->driver.gpu_blend_cb && lv_area_get_size(draw_area) > GPU_SIZE_LIMIT) { 79e4: 6a33 ldr r3, [r6, #32] 79e6: 2b00 cmp r3, #0 79e8: d03c beq.n 7a64 <_lv_blend_fill+0x32c> 79ea: a810 add r0, sp, #64 ; 0x40 79ec: 4b1a ldr r3, [pc, #104] ; (7a58 <_lv_blend_fill+0x320>) 79ee: 4798 blx r3 79f0: 28f0 cmp r0, #240 ; 0xf0 79f2: d937 bls.n 7a64 <_lv_blend_fill+0x32c> for(x = 0; x < draw_area_w ; x++) blend_buf[x].full = color.full; 79f4: 990b ldr r1, [sp, #44] ; 0x2c 79f6: 2900 cmp r1, #0 79f8: dd0c ble.n 7a14 <_lv_blend_fill+0x2dc> 79fa: f8bd 8024 ldrh.w r8, [sp, #36] ; 0x24 79fe: 4a18 ldr r2, [pc, #96] ; (7a60 <_lv_blend_fill+0x328>) 7a00: 1e93 subs r3, r2, #2 7a02: f101 4100 add.w r1, r1, #2147483648 ; 0x80000000 7a06: 3901 subs r1, #1 7a08: eb02 0241 add.w r2, r2, r1, lsl #1 7a0c: f823 8f02 strh.w r8, [r3, #2]! 7a10: 429a cmp r2, r3 7a12: d1fb bne.n 7a0c <_lv_blend_fill+0x2d4> for(y = draw_area->y1; y <= draw_area->y2; y++) { 7a14: f9bd 5042 ldrsh.w r5, [sp, #66] ; 0x42 7a18: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46 7a1c: 429d cmp r5, r3 7a1e: f73f ae98 bgt.w 7752 <_lv_blend_fill+0x1a> disp_buf_first += disp_w; 7a22: ea4f 0847 mov.w r8, r7, lsl #1 disp->driver.gpu_blend_cb(&disp->driver, disp_buf_first, blend_buf, draw_area_w, opa); 7a26: f8df a038 ldr.w sl, [pc, #56] ; 7a60 <_lv_blend_fill+0x328> 7a2a: f8dd 9014 ldr.w r9, [sp, #20] 7a2e: 465c mov r4, fp 7a30: 9400 str r4, [sp, #0] 7a32: 9b0b ldr r3, [sp, #44] ; 0x2c 7a34: 4652 mov r2, sl 7a36: 4649 mov r1, r9 7a38: 4630 mov r0, r6 7a3a: 6a37 ldr r7, [r6, #32] 7a3c: 47b8 blx r7 disp_buf_first += disp_w; 7a3e: 44c1 add r9, r8 for(y = draw_area->y1; y <= draw_area->y2; y++) { 7a40: 3501 adds r5, #1 7a42: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46 7a46: 429d cmp r5, r3 7a48: ddf2 ble.n 7a30 <_lv_blend_fill+0x2f8> 7a4a: e682 b.n 7752 <_lv_blend_fill+0x1a> 7a4c: 00005f51 .word 0x00005f51 7a50: 00010fc5 .word 0x00010fc5 7a54: 00011501 .word 0x00011501 7a58: 000114e5 .word 0x000114e5 7a5c: 00011b23 .word 0x00011b23 7a60: 20002690 .word 0x20002690 lv_color_t last_dest_color = LV_COLOR_BLACK; 7a64: f04f 0e00 mov.w lr, #0 7a68: f8bd 2024 ldrh.w r2, [sp, #36] ; 0x24 7a6c: f002 091f and.w r9, r2, #31 7a70: f3c2 1845 ubfx r8, r2, #5, #6 7a74: 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))); 7a78: fb0b f30c mul.w r3, fp, ip 7a7c: eb03 2103 add.w r1, r3, r3, lsl #8 7a80: eb03 13c1 add.w r3, r3, r1, lsl #7 7a84: 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))); 7a88: fb0b f308 mul.w r3, fp, r8 7a8c: eb03 2403 add.w r4, r3, r3, lsl #8 7a90: eb03 13c4 add.w r3, r3, r4, lsl #7 7a94: 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))); 7a98: fb0b f309 mul.w r3, fp, r9 7a9c: eb03 2203 add.w r2, r3, r3, lsl #8 7aa0: eb03 13c2 add.w r3, r3, r2, lsl #7 7aa4: 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; 7aa8: fa1f f38b uxth.w r3, fp 7aac: fb0c fc03 mul.w ip, ip, r3 out[1] = (uint16_t) LV_COLOR_GET_G(c) * mix; 7ab0: fb08 f803 mul.w r8, r8, r3 out[2] = (uint16_t) LV_COLOR_GET_B(c) * mix; 7ab4: fb09 f903 mul.w r9, r9, r3 lv_opa_t opa_inv = 255 - opa; 7ab8: ea6f 030b mvn.w r3, fp 7abc: b2db uxtb r3, r3 for(y = 0; y < draw_area_h; y++) { 7abe: 980c ldr r0, [sp, #48] ; 0x30 7ac0: 2800 cmp r0, #0 7ac2: f77f ae46 ble.w 7752 <_lv_blend_fill+0x1a> disp_buf_first += disp_w; 7ac6: 0078 lsls r0, r7, #1 7ac8: 9007 str r0, [sp, #28] 7aca: 980b ldr r0, [sp, #44] ; 0x2c 7acc: 0040 lsls r0, r0, #1 7ace: 9008 str r0, [sp, #32] 7ad0: 2000 movs r0, #0 7ad2: 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); 7ad4: b29f uxth r7, r3 7ad6: e036 b.n 7b46 <_lv_blend_fill+0x40e> disp_buf_first[x] = last_res_color; 7ad8: 7830 ldrb r0, [r6, #0] 7ada: f362 0004 bfi r0, r2, #0, #5 7ade: 7030 strb r0, [r6, #0] 7ae0: 8830 ldrh r0, [r6, #0] 7ae2: f364 104a bfi r0, r4, #5, #6 7ae6: 8030 strh r0, [r6, #0] 7ae8: 0a00 lsrs r0, r0, #8 7aea: f361 00c7 bfi r0, r1, #3, #5 7aee: 7070 strb r0, [r6, #1] 7af0: 3302 adds r3, #2 for(x = 0; x < draw_area_w; x++) { 7af2: 459b cmp fp, r3 7af4: d01c beq.n 7b30 <_lv_blend_fill+0x3f8> if(last_dest_color.full != disp_buf_first[x].full) { 7af6: 461e mov r6, r3 7af8: fa1f f08e uxth.w r0, lr 7afc: f8b3 a000 ldrh.w sl, [r3] 7b00: 4550 cmp r0, sl 7b02: d0e9 beq.n 7ad8 <_lv_blend_fill+0x3a0> last_dest_color = disp_buf_first[x]; 7b04: f8b3 e000 ldrh.w lr, [r3] 7b08: 7859 ldrb r1, [r3, #1] 7b0a: 08c9 lsrs r1, r1, #3 7b0c: fb01 c107 mla r1, r1, r7, ip 7b10: 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); 7b14: f3ce 1445 ubfx r4, lr, #5, #6 7b18: fb04 8407 mla r4, r4, r7, r8 7b1c: 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); 7b20: 781a ldrb r2, [r3, #0] 7b22: f002 021f and.w r2, r2, #31 7b26: fb02 9207 mla r2, r2, r7, r9 7b2a: f3c2 2204 ubfx r2, r2, #8, #5 7b2e: e7d3 b.n 7ad8 <_lv_blend_fill+0x3a0> disp_buf_first += disp_w; 7b30: 9b05 ldr r3, [sp, #20] 7b32: 9807 ldr r0, [sp, #28] 7b34: 4403 add r3, r0 7b36: 9305 str r3, [sp, #20] for(y = 0; y < draw_area_h; y++) { 7b38: 9b06 ldr r3, [sp, #24] 7b3a: 3301 adds r3, #1 7b3c: 9306 str r3, [sp, #24] 7b3e: 980c ldr r0, [sp, #48] ; 0x30 7b40: 4298 cmp r0, r3 7b42: f43f ae06 beq.w 7752 <_lv_blend_fill+0x1a> for(x = 0; x < draw_area_w; x++) { 7b46: 2d00 cmp r5, #0 7b48: ddf2 ble.n 7b30 <_lv_blend_fill+0x3f8> 7b4a: 9805 ldr r0, [sp, #20] 7b4c: 4603 mov r3, r0 7b4e: 9e08 ldr r6, [sp, #32] 7b50: eb00 0b06 add.w fp, r0, r6 7b54: e7cf b.n 7af6 <_lv_blend_fill+0x3be> for(y = 0; y < draw_area_h; y++) { 7b56: 9b0c ldr r3, [sp, #48] ; 0x30 7b58: 2b00 cmp r3, #0 7b5a: f77f adfa ble.w 7752 <_lv_blend_fill+0x1a> int32_t x_end4 = draw_area_w - 4; 7b5e: 9b0b ldr r3, [sp, #44] ; 0x2c 7b60: 3b04 subs r3, #4 7b62: 930d str r3, [sp, #52] ; 0x34 disp_buf_first += disp_w; 7b64: 007b lsls r3, r7, #1 7b66: 930f str r3, [sp, #60] ; 0x3c 7b68: 2300 movs r3, #0 7b6a: 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))); 7b6c: f8bd 201c ldrh.w r2, [sp, #28] 7b70: 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))); 7b74: 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))); 7b78: f3c2 0304 ubfx r3, r2, #0, #5 7b7c: 9306 str r3, [sp, #24] 7b7e: e1de b.n 7f3e <_lv_blend_fill+0x806> FILL_NORMAL_MASK_PX(x, color) 7b80: f8bd 301c ldrh.w r3, [sp, #28] 7b84: 803b strh r3, [r7, #0] 7b86: 4643 mov r3, r8 for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 7b88: 3101 adds r1, #1 7b8a: 428d cmp r5, r1 7b8c: f000 834c beq.w 8228 <_lv_blend_fill+0xaf0> 7b90: 3702 adds r7, #2 7b92: f018 0f03 tst.w r8, #3 7b96: f000 8355 beq.w 8244 <_lv_blend_fill+0xb0c> FILL_NORMAL_MASK_PX(x, color) 7b9a: f818 3b01 ldrb.w r3, [r8], #1 7b9e: 2b00 cmp r3, #0 7ba0: d0f1 beq.n 7b86 <_lv_blend_fill+0x44e> 7ba2: 2bff cmp r3, #255 ; 0xff 7ba4: d0ec beq.n 7b80 <_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))); 7ba6: f1c3 09ff rsb r9, r3, #255 ; 0xff 7baa: 787a ldrb r2, [r7, #1] 7bac: 08d2 lsrs r2, r2, #3 7bae: fb09 f202 mul.w r2, r9, r2 7bb2: fb03 220c mla r2, r3, ip, r2 7bb6: eb02 2002 add.w r0, r2, r2, lsl #8 7bba: eb02 12c0 add.w r2, r2, r0, lsl #7 7bbe: 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))); 7bc2: 8838 ldrh r0, [r7, #0] 7bc4: f3c0 1045 ubfx r0, r0, #5, #6 7bc8: fb09 f000 mul.w r0, r9, r0 7bcc: fb03 000e mla r0, r3, lr, r0 7bd0: eb00 2600 add.w r6, r0, r0, lsl #8 7bd4: eb00 10c6 add.w r0, r0, r6, lsl #7 7bd8: 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))); 7bdc: 783e ldrb r6, [r7, #0] 7bde: f006 0a1f and.w sl, r6, #31 7be2: fb09 f90a mul.w r9, r9, sl 7be6: fb03 9304 mla r3, r3, r4, r9 7bea: eb03 2903 add.w r9, r3, r3, lsl #8 7bee: eb03 13c9 add.w r3, r3, r9, lsl #7 7bf2: 0ddb lsrs r3, r3, #23 7bf4: f363 0604 bfi r6, r3, #0, #5 7bf8: 703e strb r6, [r7, #0] 7bfa: 883b ldrh r3, [r7, #0] 7bfc: f360 134a bfi r3, r0, #5, #6 7c00: 803b strh r3, [r7, #0] 7c02: 0a1b lsrs r3, r3, #8 7c04: f362 03c7 bfi r3, r2, #3, #5 7c08: 707b strb r3, [r7, #1] 7c0a: e7bc b.n 7b86 <_lv_blend_fill+0x44e> disp_buf_first[x] = color; 7c0c: f8bd 401c ldrh.w r4, [sp, #28] 7c10: f820 4c06 strh.w r4, [r0, #-6] disp_buf_first[x + 1] = color; 7c14: f820 4c04 strh.w r4, [r0, #-4] disp_buf_first[x + 2] = color; 7c18: f820 4c02 strh.w r4, [r0, #-2] disp_buf_first[x + 3] = color; 7c1c: 8004 strh r4, [r0, #0] for(; x <= x_end4; x += 4) { 7c1e: 3104 adds r1, #4 7c20: 3304 adds r3, #4 7c22: 3008 adds r0, #8 7c24: 428f cmp r7, r1 7c26: f2c0 8129 blt.w 7e7c <_lv_blend_fill+0x744> 7c2a: 461a mov r2, r3 if(*mask32) { 7c2c: f853 4c04 ldr.w r4, [r3, #-4] 7c30: 2c00 cmp r4, #0 7c32: d0f4 beq.n 7c1e <_lv_blend_fill+0x4e6> if((*mask32) == 0xFFFFFFFF) { 7c34: f1b4 3fff cmp.w r4, #4294967295 7c38: d0e8 beq.n 7c0c <_lv_blend_fill+0x4d4> FILL_NORMAL_MASK_PX(x, color) 7c3a: f813 8c04 ldrb.w r8, [r3, #-4] 7c3e: f1b8 0f00 cmp.w r8, #0 7c42: d03f beq.n 7cc4 <_lv_blend_fill+0x58c> 7c44: f1b8 0fff cmp.w r8, #255 ; 0xff 7c48: f000 8105 beq.w 7e56 <_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))); 7c4c: f1c8 06ff rsb r6, r8, #255 ; 0xff 7c50: f810 4c05 ldrb.w r4, [r0, #-5] 7c54: 08e4 lsrs r4, r4, #3 7c56: fb06 f404 mul.w r4, r6, r4 7c5a: fb08 440c mla r4, r8, ip, r4 7c5e: eb04 2504 add.w r5, r4, r4, lsl #8 7c62: eb04 14c5 add.w r4, r4, r5, lsl #7 7c66: f3c4 54c4 ubfx r4, r4, #23, #5 7c6a: 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))); 7c6c: f830 5c06 ldrh.w r5, [r0, #-6] 7c70: f3c5 1545 ubfx r5, r5, #5, #6 7c74: fb06 f505 mul.w r5, r6, r5 7c78: fb08 550e mla r5, r8, lr, r5 7c7c: eb05 2905 add.w r9, r5, r5, lsl #8 7c80: eb05 15c9 add.w r5, r5, r9, lsl #7 7c84: 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))); 7c88: f810 9c06 ldrb.w r9, [r0, #-6] 7c8c: f009 0b1f and.w fp, r9, #31 7c90: fb06 f60b mul.w r6, r6, fp 7c94: 9c06 ldr r4, [sp, #24] 7c96: fb08 6804 mla r8, r8, r4, r6 7c9a: eb08 2608 add.w r6, r8, r8, lsl #8 7c9e: eb08 16c6 add.w r6, r8, r6, lsl #7 7ca2: 0df6 lsrs r6, r6, #23 7ca4: f366 0904 bfi r9, r6, #0, #5 7ca8: f800 9c06 strb.w r9, [r0, #-6] 7cac: f830 6c06 ldrh.w r6, [r0, #-6] 7cb0: f365 164a bfi r6, r5, #5, #6 7cb4: f820 6c06 strh.w r6, [r0, #-6] 7cb8: 0a36 lsrs r6, r6, #8 7cba: 9c09 ldr r4, [sp, #36] ; 0x24 7cbc: f364 06c7 bfi r6, r4, #3, #5 7cc0: f800 6c05 strb.w r6, [r0, #-5] FILL_NORMAL_MASK_PX(x + 1, color) 7cc4: f812 8c03 ldrb.w r8, [r2, #-3] 7cc8: f1b8 0f00 cmp.w r8, #0 7ccc: d03f beq.n 7d4e <_lv_blend_fill+0x616> 7cce: f1b8 0fff cmp.w r8, #255 ; 0xff 7cd2: f000 80c5 beq.w 7e60 <_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))); 7cd6: f1c8 06ff rsb r6, r8, #255 ; 0xff 7cda: f810 4c03 ldrb.w r4, [r0, #-3] 7cde: 08e4 lsrs r4, r4, #3 7ce0: fb06 f404 mul.w r4, r6, r4 7ce4: fb08 440c mla r4, r8, ip, r4 7ce8: eb04 2504 add.w r5, r4, r4, lsl #8 7cec: eb04 14c5 add.w r4, r4, r5, lsl #7 7cf0: f3c4 54c4 ubfx r4, r4, #23, #5 7cf4: 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))); 7cf6: f830 5c04 ldrh.w r5, [r0, #-4] 7cfa: f3c5 1545 ubfx r5, r5, #5, #6 7cfe: fb06 f505 mul.w r5, r6, r5 7d02: fb08 550e mla r5, r8, lr, r5 7d06: eb05 2905 add.w r9, r5, r5, lsl #8 7d0a: eb05 15c9 add.w r5, r5, r9, lsl #7 7d0e: 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))); 7d12: f810 9c04 ldrb.w r9, [r0, #-4] 7d16: f009 0b1f and.w fp, r9, #31 7d1a: fb06 f60b mul.w r6, r6, fp 7d1e: 9c06 ldr r4, [sp, #24] 7d20: fb08 6804 mla r8, r8, r4, r6 7d24: eb08 2608 add.w r6, r8, r8, lsl #8 7d28: eb08 16c6 add.w r6, r8, r6, lsl #7 7d2c: 0df6 lsrs r6, r6, #23 7d2e: f366 0904 bfi r9, r6, #0, #5 7d32: f800 9c04 strb.w r9, [r0, #-4] 7d36: f830 6c04 ldrh.w r6, [r0, #-4] 7d3a: f365 164a bfi r6, r5, #5, #6 7d3e: f820 6c04 strh.w r6, [r0, #-4] 7d42: 0a36 lsrs r6, r6, #8 7d44: 9c09 ldr r4, [sp, #36] ; 0x24 7d46: f364 06c7 bfi r6, r4, #3, #5 7d4a: f800 6c03 strb.w r6, [r0, #-3] FILL_NORMAL_MASK_PX(x + 2, color) 7d4e: f812 8c02 ldrb.w r8, [r2, #-2] 7d52: f1b8 0f00 cmp.w r8, #0 7d56: d03f beq.n 7dd8 <_lv_blend_fill+0x6a0> 7d58: f1b8 0fff cmp.w r8, #255 ; 0xff 7d5c: f000 8085 beq.w 7e6a <_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))); 7d60: f1c8 06ff rsb r6, r8, #255 ; 0xff 7d64: f810 4c01 ldrb.w r4, [r0, #-1] 7d68: 08e4 lsrs r4, r4, #3 7d6a: fb06 f404 mul.w r4, r6, r4 7d6e: fb08 440c mla r4, r8, ip, r4 7d72: eb04 2504 add.w r5, r4, r4, lsl #8 7d76: eb04 14c5 add.w r4, r4, r5, lsl #7 7d7a: f3c4 54c4 ubfx r4, r4, #23, #5 7d7e: 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))); 7d80: f830 5c02 ldrh.w r5, [r0, #-2] 7d84: f3c5 1545 ubfx r5, r5, #5, #6 7d88: fb06 f505 mul.w r5, r6, r5 7d8c: fb08 550e mla r5, r8, lr, r5 7d90: eb05 2905 add.w r9, r5, r5, lsl #8 7d94: eb05 15c9 add.w r5, r5, r9, lsl #7 7d98: 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))); 7d9c: f810 9c02 ldrb.w r9, [r0, #-2] 7da0: f009 0b1f and.w fp, r9, #31 7da4: fb06 f60b mul.w r6, r6, fp 7da8: 9c06 ldr r4, [sp, #24] 7daa: fb08 6804 mla r8, r8, r4, r6 7dae: eb08 2608 add.w r6, r8, r8, lsl #8 7db2: eb08 16c6 add.w r6, r8, r6, lsl #7 7db6: 0df6 lsrs r6, r6, #23 7db8: f366 0904 bfi r9, r6, #0, #5 7dbc: f800 9c02 strb.w r9, [r0, #-2] 7dc0: f830 6c02 ldrh.w r6, [r0, #-2] 7dc4: f365 164a bfi r6, r5, #5, #6 7dc8: f820 6c02 strh.w r6, [r0, #-2] 7dcc: 0a36 lsrs r6, r6, #8 7dce: 9c09 ldr r4, [sp, #36] ; 0x24 7dd0: f364 06c7 bfi r6, r4, #3, #5 7dd4: f800 6c01 strb.w r6, [r0, #-1] FILL_NORMAL_MASK_PX(x + 3, color) 7dd8: f812 8c01 ldrb.w r8, [r2, #-1] 7ddc: f1b8 0f00 cmp.w r8, #0 7de0: f43f af1d beq.w 7c1e <_lv_blend_fill+0x4e6> 7de4: f1b8 0fff cmp.w r8, #255 ; 0xff 7de8: d044 beq.n 7e74 <_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))); 7dea: f1c8 06ff rsb r6, r8, #255 ; 0xff 7dee: 7844 ldrb r4, [r0, #1] 7df0: 08e4 lsrs r4, r4, #3 7df2: fb06 f404 mul.w r4, r6, r4 7df6: fb08 440c mla r4, r8, ip, r4 7dfa: eb04 2504 add.w r5, r4, r4, lsl #8 7dfe: eb04 14c5 add.w r4, r4, r5, lsl #7 7e02: 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))); 7e06: 8805 ldrh r5, [r0, #0] 7e08: f3c5 1545 ubfx r5, r5, #5, #6 7e0c: fb06 f505 mul.w r5, r6, r5 7e10: fb08 550e mla r5, r8, lr, r5 7e14: eb05 2905 add.w r9, r5, r5, lsl #8 7e18: eb05 15c9 add.w r5, r5, r9, lsl #7 7e1c: 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))); 7e20: f890 9000 ldrb.w r9, [r0] 7e24: f009 0a1f and.w sl, r9, #31 7e28: fb06 f60a mul.w r6, r6, sl 7e2c: 9c06 ldr r4, [sp, #24] 7e2e: fb08 6804 mla r8, r8, r4, r6 7e32: eb08 2608 add.w r6, r8, r8, lsl #8 7e36: eb08 16c6 add.w r6, r8, r6, lsl #7 7e3a: 0df6 lsrs r6, r6, #23 7e3c: f366 0904 bfi r9, r6, #0, #5 7e40: f880 9000 strb.w r9, [r0] 7e44: 8806 ldrh r6, [r0, #0] 7e46: f365 164a bfi r6, r5, #5, #6 7e4a: 8006 strh r6, [r0, #0] 7e4c: 0a36 lsrs r6, r6, #8 7e4e: f36b 06c7 bfi r6, fp, #3, #5 7e52: 7046 strb r6, [r0, #1] 7e54: e6e3 b.n 7c1e <_lv_blend_fill+0x4e6> FILL_NORMAL_MASK_PX(x, color) 7e56: f8bd 401c ldrh.w r4, [sp, #28] 7e5a: f820 4c06 strh.w r4, [r0, #-6] 7e5e: e731 b.n 7cc4 <_lv_blend_fill+0x58c> FILL_NORMAL_MASK_PX(x + 1, color) 7e60: f8bd 401c ldrh.w r4, [sp, #28] 7e64: f820 4c04 strh.w r4, [r0, #-4] 7e68: e771 b.n 7d4e <_lv_blend_fill+0x616> FILL_NORMAL_MASK_PX(x + 2, color) 7e6a: f8bd 401c ldrh.w r4, [sp, #28] 7e6e: f820 4c02 strh.w r4, [r0, #-2] 7e72: e7b1 b.n 7dd8 <_lv_blend_fill+0x6a0> FILL_NORMAL_MASK_PX(x + 3, color) 7e74: f8bd 401c ldrh.w r4, [sp, #28] 7e78: 8004 strh r4, [r0, #0] 7e7a: e6d0 b.n 7c1e <_lv_blend_fill+0x4e6> 7e7c: 9d0e ldr r5, [sp, #56] ; 0x38 for(; x < draw_area_w ; x++) { 7e7e: 428d cmp r5, r1 7e80: dd4e ble.n 7f20 <_lv_blend_fill+0x7e8> 7e82: 1e54 subs r4, r2, #1 7e84: 9b05 ldr r3, [sp, #20] 7e86: eb03 0841 add.w r8, r3, r1, lsl #1 7e8a: 9e06 ldr r6, [sp, #24] 7e8c: e008 b.n 7ea0 <_lv_blend_fill+0x768> FILL_NORMAL_MASK_PX(x, color) 7e8e: f8bd 301c ldrh.w r3, [sp, #28] 7e92: f8a8 3000 strh.w r3, [r8] for(; x < draw_area_w ; x++) { 7e96: 3101 adds r1, #1 7e98: f108 0802 add.w r8, r8, #2 7e9c: 428d cmp r5, r1 7e9e: dd3f ble.n 7f20 <_lv_blend_fill+0x7e8> FILL_NORMAL_MASK_PX(x, color) 7ea0: f814 3f01 ldrb.w r3, [r4, #1]! 7ea4: 2b00 cmp r3, #0 7ea6: d0f6 beq.n 7e96 <_lv_blend_fill+0x75e> 7ea8: 2bff cmp r3, #255 ; 0xff 7eaa: d0f0 beq.n 7e8e <_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))); 7eac: f1c3 09ff rsb r9, r3, #255 ; 0xff 7eb0: f898 2001 ldrb.w r2, [r8, #1] 7eb4: 08d2 lsrs r2, r2, #3 7eb6: fb09 f202 mul.w r2, r9, r2 7eba: fb03 220c mla r2, r3, ip, r2 7ebe: eb02 2002 add.w r0, r2, r2, lsl #8 7ec2: eb02 12c0 add.w r2, r2, r0, lsl #7 7ec6: 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))); 7eca: f8b8 0000 ldrh.w r0, [r8] 7ece: f3c0 1045 ubfx r0, r0, #5, #6 7ed2: fb09 f000 mul.w r0, r9, r0 7ed6: fb03 000e mla r0, r3, lr, r0 7eda: eb00 2700 add.w r7, r0, r0, lsl #8 7ede: eb00 10c7 add.w r0, r0, r7, lsl #7 7ee2: 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))); 7ee6: f898 7000 ldrb.w r7, [r8] 7eea: f007 0a1f and.w sl, r7, #31 7eee: fb09 f90a mul.w r9, r9, sl 7ef2: fb03 9306 mla r3, r3, r6, r9 7ef6: eb03 2903 add.w r9, r3, r3, lsl #8 7efa: eb03 13c9 add.w r3, r3, r9, lsl #7 7efe: 0ddb lsrs r3, r3, #23 7f00: f363 0704 bfi r7, r3, #0, #5 7f04: f888 7000 strb.w r7, [r8] 7f08: f8b8 3000 ldrh.w r3, [r8] 7f0c: f360 134a bfi r3, r0, #5, #6 7f10: f8a8 3000 strh.w r3, [r8] 7f14: 0a1b lsrs r3, r3, #8 7f16: f362 03c7 bfi r3, r2, #3, #5 7f1a: f888 3001 strb.w r3, [r8, #1] 7f1e: e7ba b.n 7e96 <_lv_blend_fill+0x75e> disp_buf_first += disp_w; 7f20: 9b05 ldr r3, [sp, #20] 7f22: 9a0f ldr r2, [sp, #60] ; 0x3c 7f24: 4413 add r3, r2 7f26: 9305 str r3, [sp, #20] 7f28: 9b08 ldr r3, [sp, #32] 7f2a: 9a0b ldr r2, [sp, #44] ; 0x2c 7f2c: 4413 add r3, r2 7f2e: 9308 str r3, [sp, #32] for(y = 0; y < draw_area_h; y++) { 7f30: 9b0a ldr r3, [sp, #40] ; 0x28 7f32: 3301 adds r3, #1 7f34: 930a str r3, [sp, #40] ; 0x28 7f36: 9a0c ldr r2, [sp, #48] ; 0x30 7f38: 429a cmp r2, r3 7f3a: f43f ac0a beq.w 7752 <_lv_blend_fill+0x1a> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 7f3e: 2d00 cmp r5, #0 7f40: f340 8170 ble.w 8224 <_lv_blend_fill+0xaec> 7f44: 9a08 ldr r2, [sp, #32] 7f46: f012 0f03 tst.w r2, #3 7f4a: f000 8179 beq.w 8240 <_lv_blend_fill+0xb08> 7f4e: 9f05 ldr r7, [sp, #20] 7f50: 4690 mov r8, r2 7f52: 2100 movs r1, #0 7f54: 9c06 ldr r4, [sp, #24] 7f56: e620 b.n 7b9a <_lv_blend_fill+0x462> if(*mask_tmp_x != last_mask || last_dest_color.full != disp_buf_first[x].full) { 7f58: 2aff cmp r2, #255 ; 0xff 7f5a: d002 beq.n 7f62 <_lv_blend_fill+0x82a> if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 7f5c: f8dd e024 ldr.w lr, [sp, #36] ; 0x24 7f60: e004 b.n 7f6c <_lv_blend_fill+0x834> 7f62: f8dd e024 ldr.w lr, [sp, #36] ; 0x24 if(*mask_tmp_x != last_mask || last_dest_color.full != disp_buf_first[x].full) { 7f66: 882a ldrh r2, [r5, #0] 7f68: 429a cmp r2, r3 7f6a: d032 beq.n 7fd2 <_lv_blend_fill+0x89a> if(opa_tmp == LV_OPA_COVER) last_res_color = color; 7f6c: f1be 0fff cmp.w lr, #255 ; 0xff 7f70: d042 beq.n 7ff8 <_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))); 7f72: f1ce 04ff rsb r4, lr, #255 ; 0xff 7f76: 786b ldrb r3, [r5, #1] 7f78: 08db lsrs r3, r3, #3 7f7a: fb0e f20c mul.w r2, lr, ip 7f7e: fb04 2303 mla r3, r4, r3, r2 7f82: eb03 2203 add.w r2, r3, r3, lsl #8 7f86: eb03 13c2 add.w r3, r3, r2, lsl #7 7f8a: 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))); 7f8e: 882a ldrh r2, [r5, #0] 7f90: f3c2 1245 ubfx r2, r2, #5, #6 7f94: fb0b f10e mul.w r1, fp, lr 7f98: fb04 1202 mla r2, r4, r2, r1 7f9c: eb02 2102 add.w r1, r2, r2, lsl #8 7fa0: eb02 12c1 add.w r2, r2, r1, lsl #7 7fa4: 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))); 7fa8: 7829 ldrb r1, [r5, #0] 7faa: f001 011f and.w r1, r1, #31 7fae: fb09 f60e mul.w r6, r9, lr 7fb2: fb04 6101 mla r1, r4, r1, r6 7fb6: eb01 2601 add.w r6, r1, r1, lsl #8 7fba: eb01 11c6 add.w r1, r1, r6, lsl #7 7fbe: 0dc9 lsrs r1, r1, #23 7fc0: f361 0a04 bfi sl, r1, #0, #5 7fc4: f362 1a4a bfi sl, r2, #5, #6 7fc8: f363 2acf bfi sl, r3, #11, #5 7fcc: fa1f f18a uxth.w r1, sl last_dest_color.full = disp_buf_first[x].full; 7fd0: 882b ldrh r3, [r5, #0] disp_buf_first[x] = last_res_color; 7fd2: 8029 strh r1, [r5, #0] 7fd4: 4602 mov r2, r0 7fd6: 3502 adds r5, #2 for(x = 0; x < draw_area_w; x++) { 7fd8: 45a8 cmp r8, r5 7fda: d00f beq.n 7ffc <_lv_blend_fill+0x8c4> if(*mask_tmp_x) { 7fdc: f817 0f01 ldrb.w r0, [r7, #1]! 7fe0: 2800 cmp r0, #0 7fe2: d0f8 beq.n 7fd6 <_lv_blend_fill+0x89e> if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 7fe4: 4290 cmp r0, r2 7fe6: d0be beq.n 7f66 <_lv_blend_fill+0x82e> 7fe8: 28ff cmp r0, #255 ; 0xff 7fea: d0b5 beq.n 7f58 <_lv_blend_fill+0x820> (uint32_t)((uint32_t)(*mask_tmp_x) * opa) >> 8; 7fec: 9b07 ldr r3, [sp, #28] 7fee: fb03 fe00 mul.w lr, r3, r0 if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 7ff2: f3ce 2e07 ubfx lr, lr, #8, #8 7ff6: e7b9 b.n 7f6c <_lv_blend_fill+0x834> if(opa_tmp == LV_OPA_COVER) last_res_color = color; 7ff8: 9908 ldr r1, [sp, #32] 7ffa: e7e9 b.n 7fd0 <_lv_blend_fill+0x898> disp_buf_first += disp_w; 7ffc: 9805 ldr r0, [sp, #20] 7ffe: 9c0c ldr r4, [sp, #48] ; 0x30 8000: 4420 add r0, r4 8002: 9005 str r0, [sp, #20] for(y = draw_area->y1; y <= draw_area->y2; y++) { 8004: 980a ldr r0, [sp, #40] ; 0x28 8006: 3001 adds r0, #1 8008: 4604 mov r4, r0 800a: 900a str r0, [sp, #40] ; 0x28 800c: 9806 ldr r0, [sp, #24] 800e: 9d0b ldr r5, [sp, #44] ; 0x2c 8010: 4428 add r0, r5 8012: 9006 str r0, [sp, #24] 8014: f9bd 0046 ldrsh.w r0, [sp, #70] ; 0x46 8018: 4284 cmp r4, r0 801a: f73f ab9a bgt.w 7752 <_lv_blend_fill+0x1a> for(x = 0; x < draw_area_w; x++) { 801e: 980d ldr r0, [sp, #52] ; 0x34 8020: 2800 cmp r0, #0 8022: ddeb ble.n 7ffc <_lv_blend_fill+0x8c4> 8024: 9805 ldr r0, [sp, #20] 8026: 4605 mov r5, r0 8028: 9c0e ldr r4, [sp, #56] ; 0x38 802a: eb00 0804 add.w r8, r0, r4 802e: 9f06 ldr r7, [sp, #24] 8030: e7d4 b.n 7fdc <_lv_blend_fill+0x8a4> 8032: f8bd 5024 ldrh.w r5, [sp, #36] ; 0x24 switch(mode) { 8036: f1b9 0f01 cmp.w r9, #1 803a: d040 beq.n 80be <_lv_blend_fill+0x986> 803c: f1b9 0f02 cmp.w r9, #2 8040: d132 bne.n 80a8 <_lv_blend_fill+0x970> blend_fp = color_blend_true_color_subtractive; 8042: 4b83 ldr r3, [pc, #524] ; (8250 <_lv_blend_fill+0xb18>) 8044: 9305 str r3, [sp, #20] 8046: f8bd 2024 ldrh.w r2, [sp, #36] ; 0x24 804a: f002 081f and.w r8, r2, #31 804e: f3c2 1645 ubfx r6, r2, #5, #6 8052: f3c2 23c4 ubfx r3, r2, #11, #5 8056: 4699 mov r9, r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 8058: 8aba ldrh r2, [r7, #20] 805a: 3201 adds r2, #1 805c: 8a3b ldrh r3, [r7, #16] 805e: 1ad3 subs r3, r2, r3 8060: b21f sxth r7, r3 lv_color_t * disp_buf_tmp = disp_buf + disp_w * draw_area->y1; 8062: f8cd c024 str.w ip, [sp, #36] ; 0x24 8066: fb0c f307 mul.w r3, ip, r7 806a: 9a06 ldr r2, [sp, #24] 806c: eb02 0243 add.w r2, r2, r3, lsl #1 8070: 9207 str r2, [sp, #28] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 8072: 2c01 cmp r4, #1 8074: d026 beq.n 80c4 <_lv_blend_fill+0x98c> 8076: 3001 adds r0, #1 8078: 9a0a ldr r2, [sp, #40] ; 0x28 807a: 1a80 subs r0, r0, r2 807c: b202 sxth r2, r0 807e: 920c str r2, [sp, #48] ; 0x30 const lv_opa_t * mask_tmp = mask - draw_area->x1; 8080: 9a08 ldr r2, [sp, #32] 8082: 990b ldr r1, [sp, #44] ; 0x2c 8084: 1a52 subs r2, r2, r1 8086: 9208 str r2, [sp, #32] last_dest_color.full = disp_buf_tmp[0].full; 8088: 9a06 ldr r2, [sp, #24] 808a: f832 2013 ldrh.w r2, [r2, r3, lsl #1] for(y = draw_area->y1; y <= draw_area->y2; y++) { 808e: 45f4 cmp ip, lr 8090: f73f ab5f bgt.w 7752 <_lv_blend_fill+0x1a> disp_buf_tmp += disp_w; 8094: 007b lsls r3, r7, #1 8096: 930b str r3, [sp, #44] ; 0x2c 8098: 4610 mov r0, r2 809a: 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; 809c: f8cd b018 str.w fp, [sp, #24] 80a0: f8cd b028 str.w fp, [sp, #40] ; 0x28 80a4: 46cb mov fp, r9 80a6: e0b0 b.n 820a <_lv_blend_fill+0xad2> LV_LOG_WARN("fill_blended: unsupported blend mode"); 80a8: 4b6a ldr r3, [pc, #424] ; (8254 <_lv_blend_fill+0xb1c>) 80aa: 9300 str r3, [sp, #0] 80ac: 4b6a ldr r3, [pc, #424] ; (8258 <_lv_blend_fill+0xb20>) 80ae: f44f 7204 mov.w r2, #528 ; 0x210 80b2: 496a ldr r1, [pc, #424] ; (825c <_lv_blend_fill+0xb24>) 80b4: 2002 movs r0, #2 80b6: 4c6a ldr r4, [pc, #424] ; (8260 <_lv_blend_fill+0xb28>) 80b8: 47a0 blx r4 80ba: f7ff bb4a b.w 7752 <_lv_blend_fill+0x1a> blend_fp = color_blend_true_color_additive; 80be: 4b69 ldr r3, [pc, #420] ; (8264 <_lv_blend_fill+0xb2c>) 80c0: 9305 str r3, [sp, #20] 80c2: e7c0 b.n 8046 <_lv_blend_fill+0x90e> lv_color_t last_dest_color = LV_COLOR_BLACK; 80c4: 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))); 80c8: fb0b f309 mul.w r3, fp, r9 80cc: eb03 2003 add.w r0, r3, r3, lsl #8 80d0: eb03 13c0 add.w r3, r3, r0, lsl #7 80d4: 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))); 80d8: fb0b f306 mul.w r3, fp, r6 80dc: eb03 2203 add.w r2, r3, r3, lsl #8 80e0: eb03 13c2 add.w r3, r3, r2, lsl #7 80e4: 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))); 80e8: fb0b f308 mul.w r3, fp, r8 80ec: eb03 2103 add.w r1, r3, r3, lsl #8 80f0: eb03 13c1 add.w r3, r3, r1, lsl #7 80f4: f3c3 53c4 ubfx r3, r3, #23, #5 for(y = draw_area->y1; y <= draw_area->y2; y++) { 80f8: 45f4 cmp ip, lr 80fa: f73f ab2a bgt.w 7752 <_lv_blend_fill+0x1a> disp_buf_tmp += disp_w; 80fe: 0079 lsls r1, r7, #1 8100: 9108 str r1, [sp, #32] 8102: f8cd b018 str.w fp, [sp, #24] 8106: 46cb mov fp, r9 8108: e03a b.n 8180 <_lv_blend_fill+0xa48> disp_buf_tmp[x] = last_res_color; 810a: 7821 ldrb r1, [r4, #0] 810c: f363 0104 bfi r1, r3, #0, #5 8110: 7021 strb r1, [r4, #0] 8112: 8821 ldrh r1, [r4, #0] 8114: f362 114a bfi r1, r2, #5, #6 8118: 8021 strh r1, [r4, #0] 811a: 0a09 lsrs r1, r1, #8 811c: f360 01c7 bfi r1, r0, #3, #5 8120: 7061 strb r1, [r4, #1] for(x = draw_area->x1; x <= draw_area->x2; x++) { 8122: f109 0901 add.w r9, r9, #1 8126: 3702 adds r7, #2 8128: f9bd 1044 ldrsh.w r1, [sp, #68] ; 0x44 812c: 4589 cmp r9, r1 812e: dc1a bgt.n 8166 <_lv_blend_fill+0xa2e> if(last_dest_color.full != disp_buf_tmp[x].full) { 8130: 463c mov r4, r7 8132: fa1f f18a uxth.w r1, sl 8136: f8b7 e000 ldrh.w lr, [r7] 813a: 4571 cmp r1, lr 813c: d0e5 beq.n 810a <_lv_blend_fill+0x9d2> last_dest_color = disp_buf_tmp[x]; 813e: f8b7 a000 ldrh.w sl, [r7] last_res_color = blend_fp(color, disp_buf_tmp[x], opa); 8142: f368 0504 bfi r5, r8, #0, #5 8146: f366 154a bfi r5, r6, #5, #6 814a: f36b 25cf bfi r5, fp, #11, #5 814e: 9a06 ldr r2, [sp, #24] 8150: 4651 mov r1, sl 8152: 4628 mov r0, r5 8154: 9b05 ldr r3, [sp, #20] 8156: 4798 blx r3 8158: f000 031f and.w r3, r0, #31 815c: f3c0 1245 ubfx r2, r0, #5, #6 8160: f3c0 20c4 ubfx r0, r0, #11, #5 8164: e7d1 b.n 810a <_lv_blend_fill+0x9d2> disp_buf_tmp += disp_w; 8166: 9907 ldr r1, [sp, #28] 8168: 9c08 ldr r4, [sp, #32] 816a: 4421 add r1, r4 816c: 9107 str r1, [sp, #28] for(y = draw_area->y1; y <= draw_area->y2; y++) { 816e: 9909 ldr r1, [sp, #36] ; 0x24 8170: 3101 adds r1, #1 8172: 460c mov r4, r1 8174: 9109 str r1, [sp, #36] ; 0x24 8176: f9bd 1046 ldrsh.w r1, [sp, #70] ; 0x46 817a: 428c cmp r4, r1 817c: f73f aae9 bgt.w 7752 <_lv_blend_fill+0x1a> for(x = draw_area->x1; x <= draw_area->x2; x++) { 8180: f9bd 7040 ldrsh.w r7, [sp, #64] ; 0x40 8184: 46b9 mov r9, r7 8186: f9bd 1044 ldrsh.w r1, [sp, #68] ; 0x44 818a: 428f cmp r7, r1 818c: dceb bgt.n 8166 <_lv_blend_fill+0xa2e> 818e: 9907 ldr r1, [sp, #28] 8190: eb01 0747 add.w r7, r1, r7, lsl #1 8194: e7cc b.n 8130 <_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; 8196: 2bf9 cmp r3, #249 ; 0xf9 8198: bf9d ittte ls 819a: 9a0a ldrls r2, [sp, #40] ; 0x28 819c: 4353 mulls r3, r2 819e: f3c3 2207 ubfxls r2, r3, #8, #8 81a2: 9a06 ldrhi r2, [sp, #24] last_res_color = blend_fp(color, disp_buf_tmp[x], opa_tmp); 81a4: f368 0504 bfi r5, r8, #0, #5 81a8: f366 154a bfi r5, r6, #5, #6 81ac: f36b 25cf bfi r5, fp, #11, #5 81b0: 8821 ldrh r1, [r4, #0] 81b2: 4628 mov r0, r5 81b4: 9b05 ldr r3, [sp, #20] 81b6: 4798 blx r3 81b8: b280 uxth r0, r0 last_mask = mask_tmp[x]; 81ba: f89a 1000 ldrb.w r1, [sl] last_dest_color.full = disp_buf_tmp[x].full; 81be: 8822 ldrh r2, [r4, #0] disp_buf_tmp[x] = last_res_color; 81c0: 8020 strh r0, [r4, #0] for(x = draw_area->x1; x <= draw_area->x2; x++) { 81c2: f109 0901 add.w r9, r9, #1 81c6: 3701 adds r7, #1 81c8: 3402 adds r4, #2 81ca: f9bd 3044 ldrsh.w r3, [sp, #68] ; 0x44 81ce: 4599 cmp r9, r3 81d0: dc0a bgt.n 81e8 <_lv_blend_fill+0xab0> 81d2: 46ba mov sl, r7 if(mask_tmp[x] == 0) continue; 81d4: 783b ldrb r3, [r7, #0] 81d6: 2b00 cmp r3, #0 81d8: d0f3 beq.n 81c2 <_lv_blend_fill+0xa8a> if(mask_tmp[x] != last_mask || last_dest_color.full != disp_buf_tmp[x].full) { 81da: 428b cmp r3, r1 81dc: d1db bne.n 8196 <_lv_blend_fill+0xa5e> 81de: f8b4 e000 ldrh.w lr, [r4] 81e2: 4596 cmp lr, r2 81e4: d1d7 bne.n 8196 <_lv_blend_fill+0xa5e> 81e6: e7eb b.n 81c0 <_lv_blend_fill+0xa88> disp_buf_tmp += disp_w; 81e8: 9b07 ldr r3, [sp, #28] 81ea: 9c0b ldr r4, [sp, #44] ; 0x2c 81ec: 4423 add r3, r4 81ee: 9307 str r3, [sp, #28] 81f0: 9b08 ldr r3, [sp, #32] 81f2: 9c0c ldr r4, [sp, #48] ; 0x30 81f4: 4423 add r3, r4 81f6: 9308 str r3, [sp, #32] for(y = draw_area->y1; y <= draw_area->y2; y++) { 81f8: 9b09 ldr r3, [sp, #36] ; 0x24 81fa: 3301 adds r3, #1 81fc: 461c mov r4, r3 81fe: 9309 str r3, [sp, #36] ; 0x24 8200: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46 8204: 429c cmp r4, r3 8206: f73f aaa4 bgt.w 7752 <_lv_blend_fill+0x1a> for(x = draw_area->x1; x <= draw_area->x2; x++) { 820a: f9bd 4040 ldrsh.w r4, [sp, #64] ; 0x40 820e: 46a1 mov r9, r4 8210: f9bd 3044 ldrsh.w r3, [sp, #68] ; 0x44 8214: 429c cmp r4, r3 8216: dce7 bgt.n 81e8 <_lv_blend_fill+0xab0> 8218: 9b08 ldr r3, [sp, #32] 821a: 191f adds r7, r3, r4 821c: 9b07 ldr r3, [sp, #28] 821e: eb03 0444 add.w r4, r3, r4, lsl #1 8222: e7d6 b.n 81d2 <_lv_blend_fill+0xa9a> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 8224: 9b08 ldr r3, [sp, #32] 8226: 2100 movs r1, #0 for(; x <= x_end4; x += 4) { 8228: 9a0d ldr r2, [sp, #52] ; 0x34 822a: 428a cmp r2, r1 822c: f6ff ae78 blt.w 7f20 <_lv_blend_fill+0x7e8> 8230: 3304 adds r3, #4 8232: 1cc8 adds r0, r1, #3 8234: 9a05 ldr r2, [sp, #20] 8236: eb02 0040 add.w r0, r2, r0, lsl #1 823a: 950e str r5, [sp, #56] ; 0x38 823c: 9f0d ldr r7, [sp, #52] ; 0x34 823e: e4f4 b.n 7c2a <_lv_blend_fill+0x4f2> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 8240: 9b08 ldr r3, [sp, #32] 8242: 2100 movs r1, #0 for(; x <= x_end4; x += 4) { 8244: 9a0d ldr r2, [sp, #52] ; 0x34 8246: 428a cmp r2, r1 8248: daf2 bge.n 8230 <_lv_blend_fill+0xaf8> 824a: 461a mov r2, r3 824c: e619 b.n 7e82 <_lv_blend_fill+0x74a> 824e: bf00 nop 8250: 00007687 .word 0x00007687 8254: 00024c78 .word 0x00024c78 8258: 00024c2c .word 0x00024c2c 825c: 00024c48 .word 0x00024c48 8260: 00012245 .word 0x00012245 8264: 000075d1 .word 0x000075d1 00008268 <_lv_blend_map>: { 8268: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 826c: b091 sub sp, #68 ; 0x44 826e: f89d 4068 ldrb.w r4, [sp, #104] ; 0x68 8272: f89d a06c ldrb.w sl, [sp, #108] ; 0x6c 8276: f89d 5070 ldrb.w r5, [sp, #112] ; 0x70 if(opa < LV_OPA_MIN) return; 827a: f1ba 0f04 cmp.w sl, #4 827e: d900 bls.n 8282 <_lv_blend_map+0x1a> if(mask_res == LV_DRAW_MASK_RES_TRANSP) return; 8280: b914 cbnz r4, 8288 <_lv_blend_map+0x20> } 8282: b011 add sp, #68 ; 0x44 8284: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 8288: 9304 str r3, [sp, #16] 828a: 9207 str r2, [sp, #28] 828c: 460f mov r7, r1 828e: 4601 mov r1, r0 is_common = _lv_area_intersect(&draw_area, clip_area, map_area); 8290: 463a mov r2, r7 8292: a80e add r0, sp, #56 ; 0x38 8294: 4bbc ldr r3, [pc, #752] ; (8588 <_lv_blend_map+0x320>) 8296: 4798 blx r3 if(!is_common) return; 8298: 2800 cmp r0, #0 829a: d0f2 beq.n 8282 <_lv_blend_map+0x1a> lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 829c: 4bbb ldr r3, [pc, #748] ; (858c <_lv_blend_map+0x324>) 829e: 4798 blx r3 82a0: 4680 mov r8, r0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 82a2: 4bbb ldr r3, [pc, #748] ; (8590 <_lv_blend_map+0x328>) 82a4: 4798 blx r3 82a6: 4606 mov r6, r0 lv_color_t * disp_buf = vdb->buf_act; 82a8: 6883 ldr r3, [r0, #8] 82aa: 9305 str r3, [sp, #20] draw_area.x1 -= disp_area->x1; 82ac: 8a02 ldrh r2, [r0, #16] 82ae: f8bd 3038 ldrh.w r3, [sp, #56] ; 0x38 82b2: 1a9b subs r3, r3, r2 82b4: b29b uxth r3, r3 82b6: 9306 str r3, [sp, #24] 82b8: f9bd c018 ldrsh.w ip, [sp, #24] 82bc: f8ad c038 strh.w ip, [sp, #56] ; 0x38 draw_area.y1 -= disp_area->y1; 82c0: 8a43 ldrh r3, [r0, #18] 82c2: f8bd b03a ldrh.w fp, [sp, #58] ; 0x3a 82c6: ebab 0b03 sub.w fp, fp, r3 82ca: fa1f fb8b uxth.w fp, fp 82ce: fa0f fe8b sxth.w lr, fp 82d2: f8ad e03a strh.w lr, [sp, #58] ; 0x3a draw_area.x2 -= disp_area->x1; 82d6: f8bd 103c ldrh.w r1, [sp, #60] ; 0x3c 82da: 1a89 subs r1, r1, r2 82dc: b289 uxth r1, r1 82de: f8ad 103c strh.w r1, [sp, #60] ; 0x3c draw_area.y2 -= disp_area->y1; 82e2: f8bd 003e ldrh.w r0, [sp, #62] ; 0x3e 82e6: 1ac0 subs r0, r0, r3 82e8: b280 uxth r0, r0 82ea: b202 sxth r2, r0 82ec: 9208 str r2, [sp, #32] 82ee: f8ad 203e strh.w r2, [sp, #62] ; 0x3e if(mask && disp->driver.antialiasing == 0) 82f2: 9a04 ldr r2, [sp, #16] 82f4: b1d2 cbz r2, 832c <_lv_blend_map+0xc4> 82f6: f898 3008 ldrb.w r3, [r8, #8] 82fa: f013 0f01 tst.w r3, #1 82fe: d115 bne.n 832c <_lv_blend_map+0xc4> 8300: f101 0901 add.w r9, r1, #1 8304: 9b06 ldr r3, [sp, #24] 8306: eba9 0903 sub.w r9, r9, r3 830a: fa0f f989 sxth.w r9, r9 for(i = 0; i < mask_w; i++) mask[i] = mask[i] > 128 ? LV_OPA_COVER : LV_OPA_TRANSP; 830e: f1b9 0f00 cmp.w r9, #0 8312: dd0b ble.n 832c <_lv_blend_map+0xc4> 8314: 4613 mov r3, r2 8316: 4491 add r9, r2 8318: 781a ldrb r2, [r3, #0] 831a: 2a80 cmp r2, #128 ; 0x80 831c: f04f 32ff mov.w r2, #4294967295 8320: bf98 it ls 8322: 2200 movls r2, #0 8324: f803 2b01 strb.w r2, [r3], #1 8328: 454b cmp r3, r9 832a: d1f5 bne.n 8318 <_lv_blend_map+0xb0> if(disp->driver.set_px_cb) { 832c: f8d8 3014 ldr.w r3, [r8, #20] 8330: 2b00 cmp r3, #0 8332: f000 80a9 beq.w 8488 <_lv_blend_map+0x220> lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 8336: 4b95 ldr r3, [pc, #596] ; (858c <_lv_blend_map+0x324>) 8338: 4798 blx r3 833a: 4605 mov r5, r0 833c: f9b6 0010 ldrsh.w r0, [r6, #16] 8340: 8ab3 ldrh r3, [r6, #20] 8342: 3301 adds r3, #1 8344: 1a1b subs r3, r3, r0 8346: b21b sxth r3, r3 8348: 9306 str r3, [sp, #24] 834a: f9bd 1038 ldrsh.w r1, [sp, #56] ; 0x38 834e: f9b7 2000 ldrsh.w r2, [r7] 8352: f8b7 9004 ldrh.w r9, [r7, #4] 8356: f109 0901 add.w r9, r9, #1 835a: eba9 0902 sub.w r9, r9, r2 835e: 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)); 8362: f9bd e03a ldrsh.w lr, [sp, #58] ; 0x3a 8366: f9b7 3002 ldrsh.w r3, [r7, #2] 836a: f9b6 6012 ldrsh.w r6, [r6, #18] 836e: 1b9b subs r3, r3, r6 8370: ebae 0303 sub.w r3, lr, r3 map_buf_tmp += (draw_area->x1 - (map_area->x1 - disp_area->x1)); 8374: 1a12 subs r2, r2, r0 8376: 1a8a subs r2, r1, r2 map_buf_tmp -= draw_area->x1; 8378: fb09 2303 mla r3, r9, r3, r2 837c: ea4f 0b41 mov.w fp, r1, lsl #1 8380: ebcb 0b43 rsb fp, fp, r3, lsl #1 8384: 9b07 ldr r3, [sp, #28] 8386: 445b add r3, fp 8388: 469b mov fp, r3 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 838a: 2c01 cmp r4, #1 838c: d046 beq.n 841c <_lv_blend_map+0x1b4> const lv_opa_t * mask_tmp = mask - draw_area->x1; 838e: 9b04 ldr r3, [sp, #16] 8390: 1a5b subs r3, r3, r1 8392: 9307 str r3, [sp, #28] for(y = draw_area->y1; y <= draw_area->y2; y++) { 8394: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e 8398: 459e cmp lr, r3 839a: f73f af72 bgt.w 8282 <_lv_blend_map+0x1a> 839e: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c map_buf_tmp += map_w; 83a2: ea4f 0249 mov.w r2, r9, lsl #1 83a6: 9208 str r2, [sp, #32] 83a8: 3301 adds r3, #1 83aa: 1a59 subs r1, r3, r1 mask_tmp += draw_area_w; 83ac: b20b sxth r3, r1 83ae: 9309 str r3, [sp, #36] ; 0x24 83b0: 46f1 mov r9, lr for(x = draw_area->x1; x <= draw_area->x2; x++) { 83b2: f9bd 6038 ldrsh.w r6, [sp, #56] ; 0x38 83b6: 4634 mov r4, r6 83b8: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 83bc: 429e cmp r6, r3 83be: dc20 bgt.n 8402 <_lv_blend_map+0x19a> 83c0: 9b07 ldr r3, [sp, #28] 83c2: eb03 0806 add.w r8, r3, r6 83c6: 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], 83ca: fa0f f789 sxth.w r7, r9 83ce: 9604 str r6, [sp, #16] (uint32_t)((uint32_t)opa * mask_tmp[x]) >> 8); 83d0: f818 3b01 ldrb.w r3, [r8], #1 83d4: 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], 83d8: f3c3 2307 ubfx r3, r3, #8, #8 83dc: 9302 str r3, [sp, #8] 83de: 9a04 ldr r2, [sp, #16] 83e0: f832 3b02 ldrh.w r3, [r2], #2 83e4: 9204 str r2, [sp, #16] 83e6: f8ad 3004 strh.w r3, [sp, #4] 83ea: 9700 str r7, [sp, #0] 83ec: b223 sxth r3, r4 83ee: 9a06 ldr r2, [sp, #24] 83f0: 9905 ldr r1, [sp, #20] 83f2: 4628 mov r0, r5 83f4: 696e ldr r6, [r5, #20] 83f6: 47b0 blx r6 for(x = draw_area->x1; x <= draw_area->x2; x++) { 83f8: 3401 adds r4, #1 83fa: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 83fe: 429c cmp r4, r3 8400: dde6 ble.n 83d0 <_lv_blend_map+0x168> 8402: 9b07 ldr r3, [sp, #28] 8404: 9a09 ldr r2, [sp, #36] ; 0x24 8406: 4413 add r3, r2 8408: 9307 str r3, [sp, #28] map_buf_tmp += map_w; 840a: 9b08 ldr r3, [sp, #32] 840c: 449b add fp, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 840e: f109 0901 add.w r9, r9, #1 8412: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e 8416: 4599 cmp r9, r3 8418: ddcb ble.n 83b2 <_lv_blend_map+0x14a> 841a: e732 b.n 8282 <_lv_blend_map+0x1a> for(y = draw_area->y1; y <= draw_area->y2; y++) { 841c: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e 8420: 4573 cmp r3, lr 8422: f6ff af2e blt.w 8282 <_lv_blend_map+0x1a> map_buf_tmp += map_w; 8426: ea4f 0949 mov.w r9, r9, lsl #1 842a: 46f0 mov r8, lr for(x = draw_area->x1; x <= draw_area->x2; x++) { 842c: f9bd 7038 ldrsh.w r7, [sp, #56] ; 0x38 8430: 463c mov r4, r7 8432: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 8436: 429f cmp r7, r3 8438: dc1e bgt.n 8478 <_lv_blend_map+0x210> 843a: 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); 843e: fa0f f688 sxth.w r6, r8 8442: 9704 str r7, [sp, #16] 8444: 4633 mov r3, r6 8446: 4656 mov r6, sl 8448: 46ca mov sl, r9 844a: 4699 mov r9, r3 844c: 9602 str r6, [sp, #8] 844e: 9a04 ldr r2, [sp, #16] 8450: f832 3b02 ldrh.w r3, [r2], #2 8454: 9204 str r2, [sp, #16] 8456: f8ad 3004 strh.w r3, [sp, #4] 845a: f8cd 9000 str.w r9, [sp] 845e: b223 sxth r3, r4 8460: 9a06 ldr r2, [sp, #24] 8462: 9905 ldr r1, [sp, #20] 8464: 4628 mov r0, r5 8466: 696f ldr r7, [r5, #20] 8468: 47b8 blx r7 for(x = draw_area->x1; x <= draw_area->x2; x++) { 846a: 3401 adds r4, #1 846c: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 8470: 429c cmp r4, r3 8472: ddeb ble.n 844c <_lv_blend_map+0x1e4> 8474: 46d1 mov r9, sl 8476: 46b2 mov sl, r6 map_buf_tmp += map_w; 8478: 44cb add fp, r9 for(y = draw_area->y1; y <= draw_area->y2; y++) { 847a: f108 0801 add.w r8, r8, #1 847e: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e 8482: 4598 cmp r8, r3 8484: ddd2 ble.n 842c <_lv_blend_map+0x1c4> 8486: e6fc b.n 8282 <_lv_blend_map+0x1a> else if(mode == LV_BLEND_MODE_NORMAL) { 8488: 2d00 cmp r5, #0 848a: f040 8399 bne.w 8bc0 <_lv_blend_map+0x958> 848e: f9b6 3010 ldrsh.w r3, [r6, #16] 8492: f8b6 8014 ldrh.w r8, [r6, #20] 8496: f108 0801 add.w r8, r8, #1 849a: eba8 0803 sub.w r8, r8, r3 849e: fa0f f888 sxth.w r8, r8 84a2: 3101 adds r1, #1 84a4: 9a06 ldr r2, [sp, #24] 84a6: 1a89 subs r1, r1, r2 84a8: b20a sxth r2, r1 84aa: 9209 str r2, [sp, #36] ; 0x24 int32_t draw_area_w = lv_area_get_width(draw_area); 84ac: 4615 mov r5, r2 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 84ae: 3001 adds r0, #1 84b0: eba0 0b0b sub.w fp, r0, fp int32_t draw_area_h = lv_area_get_height(draw_area); 84b4: fa0f f28b sxth.w r2, fp 84b8: 9208 str r2, [sp, #32] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 84ba: f9b7 1000 ldrsh.w r1, [r7] 84be: f8b7 9004 ldrh.w r9, [r7, #4] 84c2: f109 0901 add.w r9, r9, #1 84c6: eba9 0901 sub.w r9, r9, r1 84ca: fa0f f989 sxth.w r9, r9 lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1; 84ce: fb0e c208 mla r2, lr, r8, ip 84d2: 9805 ldr r0, [sp, #20] 84d4: eb00 0242 add.w r2, r0, r2, lsl #1 84d8: 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)); 84da: f9b7 2002 ldrsh.w r2, [r7, #2] 84de: f9b6 0012 ldrsh.w r0, [r6, #18] 84e2: 1a12 subs r2, r2, r0 84e4: ebae 0e02 sub.w lr, lr, r2 map_buf_first += (draw_area->x1 - (map_area->x1 - disp_area->x1)); 84e8: 1acb subs r3, r1, r3 84ea: ebac 0303 sub.w r3, ip, r3 84ee: fb09 330e mla r3, r9, lr, r3 84f2: 9a07 ldr r2, [sp, #28] 84f4: eb02 0343 add.w r3, r2, r3, lsl #1 84f8: 9306 str r3, [sp, #24] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 84fa: 4b24 ldr r3, [pc, #144] ; (858c <_lv_blend_map+0x324>) 84fc: 4798 blx r3 84fe: 4606 mov r6, r0 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 8500: 2c01 cmp r4, #1 8502: d01b beq.n 853c <_lv_blend_map+0x2d4> if(opa > LV_OPA_MAX) { 8504: f1ba 0ffa cmp.w sl, #250 ; 0xfa 8508: f200 80c5 bhi.w 8696 <_lv_blend_map+0x42e> for(y = 0; y < draw_area_h; y++) { 850c: 9b08 ldr r3, [sp, #32] 850e: 2b00 cmp r3, #0 8510: f77f aeb7 ble.w 8282 <_lv_blend_map+0x1a> disp_buf_first += disp_w; 8514: ea4f 0348 mov.w r3, r8, lsl #1 8518: 930a str r3, [sp, #40] ; 0x28 map_buf_first += map_w; 851a: ea4f 0349 mov.w r3, r9, lsl #1 851e: 930b str r3, [sp, #44] ; 0x2c 8520: 9b09 ldr r3, [sp, #36] ; 0x24 8522: 9a04 ldr r2, [sp, #16] 8524: 3a01 subs r2, #1 8526: 9204 str r2, [sp, #16] 8528: 005b lsls r3, r3, #1 852a: 930d str r3, [sp, #52] ; 0x34 852c: f04f 0b00 mov.w fp, #0 lv_opa_t opa_tmp = mask[x] >= LV_OPA_MAX ? opa : ((opa * mask[x]) >> 8); 8530: f8cd a01c str.w sl, [sp, #28] 8534: 950c str r5, [sp, #48] ; 0x30 8536: f8dd 9018 ldr.w r9, [sp, #24] 853a: e336 b.n 8baa <_lv_blend_map+0x942> if(disp->driver.gpu_blend_cb && (lv_area_get_size(draw_area) > GPU_SIZE_LIMIT)) { 853c: 6a03 ldr r3, [r0, #32] 853e: b35b cbz r3, 8598 <_lv_blend_map+0x330> 8540: a80e add r0, sp, #56 ; 0x38 8542: 4b14 ldr r3, [pc, #80] ; (8594 <_lv_blend_map+0x32c>) 8544: 4798 blx r3 8546: 28f0 cmp r0, #240 ; 0xf0 8548: d926 bls.n 8598 <_lv_blend_map+0x330> for(y = draw_area->y1; y <= draw_area->y2; y++) { 854a: f9bd 503a ldrsh.w r5, [sp, #58] ; 0x3a 854e: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e 8552: 429d cmp r5, r3 8554: f73f ae95 bgt.w 8282 <_lv_blend_map+0x1a> disp_buf_first += disp_w; 8558: ea4f 0848 mov.w r8, r8, lsl #1 map_buf_first += map_w; 855c: ea4f 0949 mov.w r9, r9, lsl #1 8560: f8dd b014 ldr.w fp, [sp, #20] 8564: 9f06 ldr r7, [sp, #24] disp->driver.gpu_blend_cb(&disp->driver, disp_buf_first, map_buf_first, draw_area_w, opa); 8566: f8cd a000 str.w sl, [sp] 856a: 9b09 ldr r3, [sp, #36] ; 0x24 856c: 463a mov r2, r7 856e: 4659 mov r1, fp 8570: 4630 mov r0, r6 8572: 6a34 ldr r4, [r6, #32] 8574: 47a0 blx r4 disp_buf_first += disp_w; 8576: 44c3 add fp, r8 map_buf_first += map_w; 8578: 444f add r7, r9 for(y = draw_area->y1; y <= draw_area->y2; y++) { 857a: 3501 adds r5, #1 857c: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e 8580: 429d cmp r5, r3 8582: ddf0 ble.n 8566 <_lv_blend_map+0x2fe> 8584: e67d b.n 8282 <_lv_blend_map+0x1a> 8586: bf00 nop 8588: 00011501 .word 0x00011501 858c: 00005f51 .word 0x00005f51 8590: 00010fc5 .word 0x00010fc5 8594: 000114e5 .word 0x000114e5 if(opa > LV_OPA_MAX) { 8598: f1ba 0ffa cmp.w sl, #250 ; 0xfa 859c: d810 bhi.n 85c0 <_lv_blend_map+0x358> for(y = 0; y < draw_area_h; y++) { 859e: 9b08 ldr r3, [sp, #32] 85a0: 2b00 cmp r3, #0 85a2: f77f ae6e ble.w 8282 <_lv_blend_map+0x1a> disp_buf_first += disp_w; 85a6: ea4f 0348 mov.w r3, r8, lsl #1 85aa: 9304 str r3, [sp, #16] map_buf_first += map_w; 85ac: ea4f 0949 mov.w r9, r9, lsl #1 85b0: 9b09 ldr r3, [sp, #36] ; 0x24 85b2: ea4f 0b43 mov.w fp, r3, lsl #1 85b6: 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))); 85ba: f1ca 0eff rsb lr, sl, #255 ; 0xff 85be: e026 b.n 860e <_lv_blend_map+0x3a6> for(y = 0; y < draw_area_h; y++) { 85c0: 9b08 ldr r3, [sp, #32] 85c2: 2b00 cmp r3, #0 85c4: f77f ae5d ble.w 8282 <_lv_blend_map+0x1a> _lv_memcpy(disp_buf_first, map_buf_first, draw_area_w * sizeof(lv_color_t)); 85c8: 9a09 ldr r2, [sp, #36] ; 0x24 85ca: 0056 lsls r6, r2, #1 disp_buf_first += disp_w; 85cc: ea4f 0848 mov.w r8, r8, lsl #1 map_buf_first += map_w; 85d0: ea4f 0949 mov.w r9, r9, lsl #1 85d4: 2400 movs r4, #0 _lv_memcpy(disp_buf_first, map_buf_first, draw_area_w * sizeof(lv_color_t)); 85d6: 4d66 ldr r5, [pc, #408] ; (8770 <_lv_blend_map+0x508>) 85d8: 469b mov fp, r3 85da: 9f05 ldr r7, [sp, #20] 85dc: f8dd a018 ldr.w sl, [sp, #24] 85e0: 4632 mov r2, r6 85e2: 4651 mov r1, sl 85e4: 4638 mov r0, r7 85e6: 47a8 blx r5 disp_buf_first += disp_w; 85e8: 4447 add r7, r8 map_buf_first += map_w; 85ea: 44ca add sl, r9 for(y = 0; y < draw_area_h; y++) { 85ec: 3401 adds r4, #1 85ee: 45a3 cmp fp, r4 85f0: d1f6 bne.n 85e0 <_lv_blend_map+0x378> 85f2: e646 b.n 8282 <_lv_blend_map+0x1a> disp_buf_first += disp_w; 85f4: 9b05 ldr r3, [sp, #20] 85f6: 9a04 ldr r2, [sp, #16] 85f8: 4413 add r3, r2 85fa: 9305 str r3, [sp, #20] map_buf_first += map_w; 85fc: 9b06 ldr r3, [sp, #24] 85fe: 444b add r3, r9 8600: 9306 str r3, [sp, #24] for(y = 0; y < draw_area_h; y++) { 8602: f108 0801 add.w r8, r8, #1 8606: 9b08 ldr r3, [sp, #32] 8608: 4543 cmp r3, r8 860a: f43f ae3a beq.w 8282 <_lv_blend_map+0x1a> for(x = 0; x < draw_area_w; x++) { 860e: 2d00 cmp r5, #0 8610: ddf0 ble.n 85f4 <_lv_blend_map+0x38c> 8612: 9b06 ldr r3, [sp, #24] 8614: 461f mov r7, r3 8616: 9c05 ldr r4, [sp, #20] 8618: eb03 0c0b add.w ip, r3, fp 861c: 787b ldrb r3, [r7, #1] 861e: 08db lsrs r3, r3, #3 8620: 7862 ldrb r2, [r4, #1] 8622: 08d2 lsrs r2, r2, #3 8624: fb0e f202 mul.w r2, lr, r2 8628: fb0a 2303 mla r3, sl, r3, r2 862c: eb03 2203 add.w r2, r3, r3, lsl #8 8630: eb03 13c2 add.w r3, r3, r2, lsl #7 8634: 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))); 8638: 883a ldrh r2, [r7, #0] 863a: f3c2 1245 ubfx r2, r2, #5, #6 863e: 8821 ldrh r1, [r4, #0] 8640: f3c1 1145 ubfx r1, r1, #5, #6 8644: fb0e f101 mul.w r1, lr, r1 8648: fb0a 1202 mla r2, sl, r2, r1 864c: eb02 2102 add.w r1, r2, r2, lsl #8 8650: eb02 12c1 add.w r2, r2, r1, lsl #7 8654: 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))); 8658: f817 1b02 ldrb.w r1, [r7], #2 865c: f001 011f and.w r1, r1, #31 8660: 7820 ldrb r0, [r4, #0] 8662: f000 061f and.w r6, r0, #31 8666: fb0e f606 mul.w r6, lr, r6 866a: fb0a 6101 mla r1, sl, r1, r6 866e: eb01 2601 add.w r6, r1, r1, lsl #8 8672: eb01 11c6 add.w r1, r1, r6, lsl #7 8676: 0dc9 lsrs r1, r1, #23 disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa); 8678: f361 0004 bfi r0, r1, #0, #5 867c: 7020 strb r0, [r4, #0] 867e: 8821 ldrh r1, [r4, #0] 8680: f362 114a bfi r1, r2, #5, #6 8684: 8021 strh r1, [r4, #0] 8686: 0a09 lsrs r1, r1, #8 8688: f363 01c7 bfi r1, r3, #3, #5 868c: 7061 strb r1, [r4, #1] 868e: 3402 adds r4, #2 for(x = 0; x < draw_area_w; x++) { 8690: 45bc cmp ip, r7 8692: d1c3 bne.n 861c <_lv_blend_map+0x3b4> 8694: e7ae b.n 85f4 <_lv_blend_map+0x38c> int32_t x_end4 = draw_area_w - 4; 8696: 9b09 ldr r3, [sp, #36] ; 0x24 8698: 3b04 subs r3, #4 869a: 930a str r3, [sp, #40] ; 0x28 for(y = 0; y < draw_area_h; y++) { 869c: 9b08 ldr r3, [sp, #32] 869e: 2b00 cmp r3, #0 86a0: f77f adef ble.w 8282 <_lv_blend_map+0x1a> disp_buf_first += disp_w; 86a4: ea4f 0348 mov.w r3, r8, lsl #1 86a8: 930c str r3, [sp, #48] ; 0x30 map_buf_first += map_w; 86aa: ea4f 0349 mov.w r3, r9, lsl #1 86ae: 930d str r3, [sp, #52] ; 0x34 86b0: 2300 movs r3, #0 86b2: 9307 str r3, [sp, #28] 86b4: e365 b.n 8d82 <_lv_blend_map+0xb1a> MAP_NORMAL_MASK_PX(x) 86b6: f8b8 3000 ldrh.w r3, [r8] 86ba: f8ae 3000 strh.w r3, [lr] 86be: 4663 mov r3, ip for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 86c0: 3101 adds r1, #1 86c2: 428d cmp r5, r1 86c4: f000 8347 beq.w 8d56 <_lv_blend_map+0xaee> 86c8: f108 0802 add.w r8, r8, #2 86cc: f10e 0e02 add.w lr, lr, #2 86d0: f01c 0f03 tst.w ip, #3 86d4: f000 832d beq.w 8d32 <_lv_blend_map+0xaca> MAP_NORMAL_MASK_PX(x) 86d8: f81c 4b01 ldrb.w r4, [ip], #1 86dc: 2c00 cmp r4, #0 86de: d0ee beq.n 86be <_lv_blend_map+0x456> 86e0: 2cff cmp r4, #255 ; 0xff 86e2: d0e8 beq.n 86b6 <_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))); 86e4: f1c4 06ff rsb r6, r4, #255 ; 0xff 86e8: f898 3001 ldrb.w r3, [r8, #1] 86ec: 08db lsrs r3, r3, #3 86ee: f89e 2001 ldrb.w r2, [lr, #1] 86f2: 08d2 lsrs r2, r2, #3 86f4: fb06 f202 mul.w r2, r6, r2 86f8: fb04 2303 mla r3, r4, r3, r2 86fc: eb03 2203 add.w r2, r3, r3, lsl #8 8700: eb03 13c2 add.w r3, r3, r2, lsl #7 8704: 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))); 8708: f8b8 0000 ldrh.w r0, [r8] 870c: f3c0 1045 ubfx r0, r0, #5, #6 8710: f8be 2000 ldrh.w r2, [lr] 8714: f3c2 1245 ubfx r2, r2, #5, #6 8718: fb06 f202 mul.w r2, r6, r2 871c: fb04 2000 mla r0, r4, r0, r2 8720: eb00 2200 add.w r2, r0, r0, lsl #8 8724: eb00 10c2 add.w r0, r0, r2, lsl #7 8728: 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))); 872c: f898 2000 ldrb.w r2, [r8] 8730: f002 021f and.w r2, r2, #31 8734: f89e 7000 ldrb.w r7, [lr] 8738: f007 091f and.w r9, r7, #31 873c: fb06 f609 mul.w r6, r6, r9 8740: fb04 6202 mla r2, r4, r2, r6 8744: eb02 2402 add.w r4, r2, r2, lsl #8 8748: eb02 12c4 add.w r2, r2, r4, lsl #7 874c: 0dd2 lsrs r2, r2, #23 874e: 463c mov r4, r7 8750: f362 0404 bfi r4, r2, #0, #5 8754: f88e 4000 strb.w r4, [lr] 8758: f8be 2000 ldrh.w r2, [lr] 875c: f360 124a bfi r2, r0, #5, #6 8760: f8ae 2000 strh.w r2, [lr] 8764: 0a12 lsrs r2, r2, #8 8766: f363 02c7 bfi r2, r3, #3, #5 876a: f88e 2001 strb.w r2, [lr, #1] 876e: e7a6 b.n 86be <_lv_blend_map+0x456> 8770: 0001263d .word 0x0001263d disp_buf_first[x] = map_buf_first[x]; 8774: f834 5c06 ldrh.w r5, [r4, #-6] 8778: f820 5c06 strh.w r5, [r0, #-6] disp_buf_first[x + 1] = map_buf_first[x + 1]; 877c: f834 5c04 ldrh.w r5, [r4, #-4] 8780: f820 5c04 strh.w r5, [r0, #-4] disp_buf_first[x + 2] = map_buf_first[x + 2]; 8784: f834 5c02 ldrh.w r5, [r4, #-2] 8788: f820 5c02 strh.w r5, [r0, #-2] disp_buf_first[x + 3] = map_buf_first[x + 3]; 878c: 8825 ldrh r5, [r4, #0] 878e: 8005 strh r5, [r0, #0] for(; x < x_end4; x += 4) { 8790: 3104 adds r1, #4 8792: 3304 adds r3, #4 8794: 3408 adds r4, #8 8796: 3008 adds r0, #8 8798: 458e cmp lr, r1 879a: f340 8147 ble.w 8a2c <_lv_blend_map+0x7c4> 879e: 461a mov r2, r3 if(*mask32) { 87a0: f853 5c04 ldr.w r5, [r3, #-4] 87a4: 2d00 cmp r5, #0 87a6: d0f3 beq.n 8790 <_lv_blend_map+0x528> if((*mask32) == 0xFFFFFFFF) { 87a8: f1b5 3fff cmp.w r5, #4294967295 87ac: d0e2 beq.n 8774 <_lv_blend_map+0x50c> MAP_NORMAL_MASK_PX(x) 87ae: f813 cc04 ldrb.w ip, [r3, #-4] 87b2: f1bc 0f00 cmp.w ip, #0 87b6: d047 beq.n 8848 <_lv_blend_map+0x5e0> 87b8: f1bc 0fff cmp.w ip, #255 ; 0xff 87bc: f000 8124 beq.w 8a08 <_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))); 87c0: f1cc 09ff rsb r9, ip, #255 ; 0xff 87c4: f814 5c05 ldrb.w r5, [r4, #-5] 87c8: 08ed lsrs r5, r5, #3 87ca: f810 6c05 ldrb.w r6, [r0, #-5] 87ce: 08f6 lsrs r6, r6, #3 87d0: fb09 f606 mul.w r6, r9, r6 87d4: fb0c 6505 mla r5, ip, r5, r6 87d8: eb05 2605 add.w r6, r5, r5, lsl #8 87dc: eb05 15c6 add.w r5, r5, r6, lsl #7 87e0: 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))); 87e4: f834 6c06 ldrh.w r6, [r4, #-6] 87e8: f3c6 1645 ubfx r6, r6, #5, #6 87ec: f830 7c06 ldrh.w r7, [r0, #-6] 87f0: f3c7 1745 ubfx r7, r7, #5, #6 87f4: fb09 f707 mul.w r7, r9, r7 87f8: fb0c 7606 mla r6, ip, r6, r7 87fc: eb06 2706 add.w r7, r6, r6, lsl #8 8800: eb06 16c7 add.w r6, r6, r7, lsl #7 8804: 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))); 8808: f814 7c06 ldrb.w r7, [r4, #-6] 880c: f007 071f and.w r7, r7, #31 8810: f810 8c06 ldrb.w r8, [r0, #-6] 8814: f008 0b1f and.w fp, r8, #31 8818: fb09 f90b mul.w r9, r9, fp 881c: fb0c 9707 mla r7, ip, r7, r9 8820: eb07 2c07 add.w ip, r7, r7, lsl #8 8824: eb07 17cc add.w r7, r7, ip, lsl #7 8828: 0dff lsrs r7, r7, #23 882a: f367 0804 bfi r8, r7, #0, #5 882e: f800 8c06 strb.w r8, [r0, #-6] 8832: f830 7c06 ldrh.w r7, [r0, #-6] 8836: f366 174a bfi r7, r6, #5, #6 883a: f820 7c06 strh.w r7, [r0, #-6] 883e: 0a3f lsrs r7, r7, #8 8840: f365 07c7 bfi r7, r5, #3, #5 8844: f800 7c05 strb.w r7, [r0, #-5] MAP_NORMAL_MASK_PX(x + 1) 8848: f812 cc03 ldrb.w ip, [r2, #-3] 884c: f1bc 0f00 cmp.w ip, #0 8850: d047 beq.n 88e2 <_lv_blend_map+0x67a> 8852: f1bc 0fff cmp.w ip, #255 ; 0xff 8856: f000 80dc beq.w 8a12 <_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))); 885a: f1cc 09ff rsb r9, ip, #255 ; 0xff 885e: f814 5c03 ldrb.w r5, [r4, #-3] 8862: 08ed lsrs r5, r5, #3 8864: f810 6c03 ldrb.w r6, [r0, #-3] 8868: 08f6 lsrs r6, r6, #3 886a: fb09 f606 mul.w r6, r9, r6 886e: fb0c 6505 mla r5, ip, r5, r6 8872: eb05 2605 add.w r6, r5, r5, lsl #8 8876: eb05 15c6 add.w r5, r5, r6, lsl #7 887a: 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))); 887e: f834 6c04 ldrh.w r6, [r4, #-4] 8882: f3c6 1645 ubfx r6, r6, #5, #6 8886: f830 7c04 ldrh.w r7, [r0, #-4] 888a: f3c7 1745 ubfx r7, r7, #5, #6 888e: fb09 f707 mul.w r7, r9, r7 8892: fb0c 7606 mla r6, ip, r6, r7 8896: eb06 2706 add.w r7, r6, r6, lsl #8 889a: eb06 16c7 add.w r6, r6, r7, lsl #7 889e: 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))); 88a2: f814 7c04 ldrb.w r7, [r4, #-4] 88a6: f007 071f and.w r7, r7, #31 88aa: f810 8c04 ldrb.w r8, [r0, #-4] 88ae: f008 0b1f and.w fp, r8, #31 88b2: fb09 f90b mul.w r9, r9, fp 88b6: fb0c 9707 mla r7, ip, r7, r9 88ba: eb07 2c07 add.w ip, r7, r7, lsl #8 88be: eb07 17cc add.w r7, r7, ip, lsl #7 88c2: 0dff lsrs r7, r7, #23 88c4: f367 0804 bfi r8, r7, #0, #5 88c8: f800 8c04 strb.w r8, [r0, #-4] 88cc: f830 7c04 ldrh.w r7, [r0, #-4] 88d0: f366 174a bfi r7, r6, #5, #6 88d4: f820 7c04 strh.w r7, [r0, #-4] 88d8: 0a3f lsrs r7, r7, #8 88da: f365 07c7 bfi r7, r5, #3, #5 88de: f800 7c03 strb.w r7, [r0, #-3] MAP_NORMAL_MASK_PX(x + 2) 88e2: f812 cc02 ldrb.w ip, [r2, #-2] 88e6: f1bc 0f00 cmp.w ip, #0 88ea: d047 beq.n 897c <_lv_blend_map+0x714> 88ec: f1bc 0fff cmp.w ip, #255 ; 0xff 88f0: f000 8094 beq.w 8a1c <_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))); 88f4: f1cc 09ff rsb r9, ip, #255 ; 0xff 88f8: f814 5c01 ldrb.w r5, [r4, #-1] 88fc: 08ed lsrs r5, r5, #3 88fe: f810 6c01 ldrb.w r6, [r0, #-1] 8902: 08f6 lsrs r6, r6, #3 8904: fb09 f606 mul.w r6, r9, r6 8908: fb0c 6505 mla r5, ip, r5, r6 890c: eb05 2605 add.w r6, r5, r5, lsl #8 8910: eb05 15c6 add.w r5, r5, r6, lsl #7 8914: 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))); 8918: f834 6c02 ldrh.w r6, [r4, #-2] 891c: f3c6 1645 ubfx r6, r6, #5, #6 8920: f830 7c02 ldrh.w r7, [r0, #-2] 8924: f3c7 1745 ubfx r7, r7, #5, #6 8928: fb09 f707 mul.w r7, r9, r7 892c: fb0c 7606 mla r6, ip, r6, r7 8930: eb06 2706 add.w r7, r6, r6, lsl #8 8934: eb06 16c7 add.w r6, r6, r7, lsl #7 8938: 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))); 893c: f814 7c02 ldrb.w r7, [r4, #-2] 8940: f007 071f and.w r7, r7, #31 8944: f810 8c02 ldrb.w r8, [r0, #-2] 8948: f008 0b1f and.w fp, r8, #31 894c: fb09 f90b mul.w r9, r9, fp 8950: fb0c 9707 mla r7, ip, r7, r9 8954: eb07 2c07 add.w ip, r7, r7, lsl #8 8958: eb07 17cc add.w r7, r7, ip, lsl #7 895c: 0dff lsrs r7, r7, #23 895e: f367 0804 bfi r8, r7, #0, #5 8962: f800 8c02 strb.w r8, [r0, #-2] 8966: f830 7c02 ldrh.w r7, [r0, #-2] 896a: f366 174a bfi r7, r6, #5, #6 896e: f820 7c02 strh.w r7, [r0, #-2] 8972: 0a3f lsrs r7, r7, #8 8974: f365 07c7 bfi r7, r5, #3, #5 8978: f800 7c01 strb.w r7, [r0, #-1] MAP_NORMAL_MASK_PX(x + 3) 897c: f812 8c01 ldrb.w r8, [r2, #-1] 8980: f1b8 0f00 cmp.w r8, #0 8984: f43f af04 beq.w 8790 <_lv_blend_map+0x528> 8988: f1b8 0fff cmp.w r8, #255 ; 0xff 898c: d04b beq.n 8a26 <_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))); 898e: f1c8 09ff rsb r9, r8, #255 ; 0xff 8992: 7865 ldrb r5, [r4, #1] 8994: 08ed lsrs r5, r5, #3 8996: 7846 ldrb r6, [r0, #1] 8998: 08f6 lsrs r6, r6, #3 899a: fb09 f606 mul.w r6, r9, r6 899e: fb08 6505 mla r5, r8, r5, r6 89a2: eb05 2605 add.w r6, r5, r5, lsl #8 89a6: eb05 15c6 add.w r5, r5, r6, lsl #7 89aa: 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))); 89ae: 8826 ldrh r6, [r4, #0] 89b0: f3c6 1645 ubfx r6, r6, #5, #6 89b4: 8807 ldrh r7, [r0, #0] 89b6: f3c7 1745 ubfx r7, r7, #5, #6 89ba: fb09 f707 mul.w r7, r9, r7 89be: fb08 7606 mla r6, r8, r6, r7 89c2: eb06 2706 add.w r7, r6, r6, lsl #8 89c6: eb06 16c7 add.w r6, r6, r7, lsl #7 89ca: 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))); 89ce: 7827 ldrb r7, [r4, #0] 89d0: f007 071f and.w r7, r7, #31 89d4: f890 c000 ldrb.w ip, [r0] 89d8: f00c 0a1f and.w sl, ip, #31 89dc: fb09 f90a mul.w r9, r9, sl 89e0: fb08 9707 mla r7, r8, r7, r9 89e4: eb07 2807 add.w r8, r7, r7, lsl #8 89e8: eb07 17c8 add.w r7, r7, r8, lsl #7 89ec: 0dff lsrs r7, r7, #23 89ee: f367 0c04 bfi ip, r7, #0, #5 89f2: f880 c000 strb.w ip, [r0] 89f6: 8807 ldrh r7, [r0, #0] 89f8: f366 174a bfi r7, r6, #5, #6 89fc: 8007 strh r7, [r0, #0] 89fe: 0a3f lsrs r7, r7, #8 8a00: f365 07c7 bfi r7, r5, #3, #5 8a04: 7047 strb r7, [r0, #1] 8a06: e6c3 b.n 8790 <_lv_blend_map+0x528> MAP_NORMAL_MASK_PX(x) 8a08: f834 5c06 ldrh.w r5, [r4, #-6] 8a0c: f820 5c06 strh.w r5, [r0, #-6] 8a10: e71a b.n 8848 <_lv_blend_map+0x5e0> MAP_NORMAL_MASK_PX(x + 1) 8a12: f834 5c04 ldrh.w r5, [r4, #-4] 8a16: f820 5c04 strh.w r5, [r0, #-4] 8a1a: e762 b.n 88e2 <_lv_blend_map+0x67a> MAP_NORMAL_MASK_PX(x + 2) 8a1c: f834 5c02 ldrh.w r5, [r4, #-2] 8a20: f820 5c02 strh.w r5, [r0, #-2] 8a24: e7aa b.n 897c <_lv_blend_map+0x714> MAP_NORMAL_MASK_PX(x + 3) 8a26: 8825 ldrh r5, [r4, #0] 8a28: 8005 strh r5, [r0, #0] 8a2a: e6b1 b.n 8790 <_lv_blend_map+0x528> 8a2c: 9d0b ldr r5, [sp, #44] ; 0x2c for(; x < draw_area_w ; x++) { 8a2e: 428d cmp r5, r1 8a30: f340 8194 ble.w 8d5c <_lv_blend_map+0xaf4> 8a34: 1e56 subs r6, r2, #1 8a36: ea4f 0c41 mov.w ip, r1, lsl #1 8a3a: 9b06 ldr r3, [sp, #24] 8a3c: eb03 080c add.w r8, r3, ip 8a40: 9b05 ldr r3, [sp, #20] 8a42: 449c add ip, r3 8a44: e00b b.n 8a5e <_lv_blend_map+0x7f6> MAP_NORMAL_MASK_PX(x) 8a46: f8b8 3000 ldrh.w r3, [r8] 8a4a: f8ac 3000 strh.w r3, [ip] for(; x < draw_area_w ; x++) { 8a4e: 3101 adds r1, #1 8a50: f108 0802 add.w r8, r8, #2 8a54: f10c 0c02 add.w ip, ip, #2 8a58: 428d cmp r5, r1 8a5a: f340 817f ble.w 8d5c <_lv_blend_map+0xaf4> MAP_NORMAL_MASK_PX(x) 8a5e: f816 4f01 ldrb.w r4, [r6, #1]! 8a62: 2c00 cmp r4, #0 8a64: d0f3 beq.n 8a4e <_lv_blend_map+0x7e6> 8a66: 2cff cmp r4, #255 ; 0xff 8a68: d0ed beq.n 8a46 <_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))); 8a6a: f1c4 07ff rsb r7, r4, #255 ; 0xff 8a6e: f898 3001 ldrb.w r3, [r8, #1] 8a72: 08db lsrs r3, r3, #3 8a74: f89c 2001 ldrb.w r2, [ip, #1] 8a78: 08d2 lsrs r2, r2, #3 8a7a: fb07 f202 mul.w r2, r7, r2 8a7e: fb04 2303 mla r3, r4, r3, r2 8a82: eb03 2203 add.w r2, r3, r3, lsl #8 8a86: eb03 13c2 add.w r3, r3, r2, lsl #7 8a8a: 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))); 8a8e: f8b8 0000 ldrh.w r0, [r8] 8a92: f3c0 1045 ubfx r0, r0, #5, #6 8a96: f8bc 2000 ldrh.w r2, [ip] 8a9a: f3c2 1245 ubfx r2, r2, #5, #6 8a9e: fb07 f202 mul.w r2, r7, r2 8aa2: fb04 2000 mla r0, r4, r0, r2 8aa6: eb00 2200 add.w r2, r0, r0, lsl #8 8aaa: eb00 10c2 add.w r0, r0, r2, lsl #7 8aae: 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))); 8ab2: f898 2000 ldrb.w r2, [r8] 8ab6: f002 021f and.w r2, r2, #31 8aba: f89c e000 ldrb.w lr, [ip] 8abe: f00e 091f and.w r9, lr, #31 8ac2: fb07 f709 mul.w r7, r7, r9 8ac6: fb04 7202 mla r2, r4, r2, r7 8aca: eb02 2402 add.w r4, r2, r2, lsl #8 8ace: eb02 12c4 add.w r2, r2, r4, lsl #7 8ad2: 0dd2 lsrs r2, r2, #23 8ad4: 4674 mov r4, lr 8ad6: f362 0404 bfi r4, r2, #0, #5 8ada: f88c 4000 strb.w r4, [ip] 8ade: f8bc 2000 ldrh.w r2, [ip] 8ae2: f360 124a bfi r2, r0, #5, #6 8ae6: f8ac 2000 strh.w r2, [ip] 8aea: 0a12 lsrs r2, r2, #8 8aec: f363 02c7 bfi r2, r3, #3, #5 8af0: f88c 2001 strb.w r2, [ip, #1] 8af4: e7ab b.n 8a4e <_lv_blend_map+0x7e6> 8af6: 3702 adds r7, #2 8af8: 3602 adds r6, #2 for(x = 0; x < draw_area_w; x++) { 8afa: 4547 cmp r7, r8 8afc: d045 beq.n 8b8a <_lv_blend_map+0x922> if(mask[x]) { 8afe: f81c 1f01 ldrb.w r1, [ip, #1]! 8b02: 2900 cmp r1, #0 8b04: d0f7 beq.n 8af6 <_lv_blend_map+0x88e> lv_opa_t opa_tmp = mask[x] >= LV_OPA_MAX ? opa : ((opa * mask[x]) >> 8); 8b06: 29f9 cmp r1, #249 ; 0xf9 8b08: bf9a itte ls 8b0a: fb01 f10a mulls.w r1, r1, sl 8b0e: f3c1 2407 ubfxls r4, r1, #8, #8 8b12: 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))); 8b14: f1c4 05ff rsb r5, r4, #255 ; 0xff 8b18: 787b ldrb r3, [r7, #1] 8b1a: 08db lsrs r3, r3, #3 8b1c: 7872 ldrb r2, [r6, #1] 8b1e: 08d2 lsrs r2, r2, #3 8b20: fb05 f202 mul.w r2, r5, r2 8b24: fb04 2303 mla r3, r4, r3, r2 8b28: eb03 2203 add.w r2, r3, r3, lsl #8 8b2c: eb03 13c2 add.w r3, r3, r2, lsl #7 8b30: 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))); 8b34: 883a ldrh r2, [r7, #0] 8b36: f3c2 1245 ubfx r2, r2, #5, #6 8b3a: 8831 ldrh r1, [r6, #0] 8b3c: f3c1 1145 ubfx r1, r1, #5, #6 8b40: fb05 f101 mul.w r1, r5, r1 8b44: fb04 1202 mla r2, r4, r2, r1 8b48: eb02 2102 add.w r1, r2, r2, lsl #8 8b4c: eb02 12c1 add.w r2, r2, r1, lsl #7 8b50: 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))); 8b54: 7839 ldrb r1, [r7, #0] 8b56: f001 011f and.w r1, r1, #31 8b5a: 7830 ldrb r0, [r6, #0] 8b5c: f000 0e1f and.w lr, r0, #31 8b60: fb05 f50e mul.w r5, r5, lr 8b64: fb04 5101 mla r1, r4, r1, r5 8b68: eb01 2401 add.w r4, r1, r1, lsl #8 8b6c: eb01 11c4 add.w r1, r1, r4, lsl #7 8b70: 0dc9 lsrs r1, r1, #23 disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa_tmp); 8b72: f361 0004 bfi r0, r1, #0, #5 8b76: 7030 strb r0, [r6, #0] 8b78: 8831 ldrh r1, [r6, #0] 8b7a: f362 114a bfi r1, r2, #5, #6 8b7e: 8031 strh r1, [r6, #0] 8b80: 0a09 lsrs r1, r1, #8 8b82: f363 01c7 bfi r1, r3, #3, #5 8b86: 7071 strb r1, [r6, #1] 8b88: e7b5 b.n 8af6 <_lv_blend_map+0x88e> disp_buf_first += disp_w; 8b8a: 9b05 ldr r3, [sp, #20] 8b8c: 9a0a ldr r2, [sp, #40] ; 0x28 8b8e: 4413 add r3, r2 8b90: 9305 str r3, [sp, #20] map_buf_first += map_w; 8b92: 9b0b ldr r3, [sp, #44] ; 0x2c 8b94: 4499 add r9, r3 for(y = 0; y < draw_area_h; y++) { 8b96: f10b 0b01 add.w fp, fp, #1 8b9a: 9b04 ldr r3, [sp, #16] 8b9c: 9a09 ldr r2, [sp, #36] ; 0x24 8b9e: 4413 add r3, r2 8ba0: 9304 str r3, [sp, #16] 8ba2: 9b08 ldr r3, [sp, #32] 8ba4: 455b cmp r3, fp 8ba6: f43f ab6c beq.w 8282 <_lv_blend_map+0x1a> for(x = 0; x < draw_area_w; x++) { 8baa: 9b0c ldr r3, [sp, #48] ; 0x30 8bac: 2b00 cmp r3, #0 8bae: ddec ble.n 8b8a <_lv_blend_map+0x922> 8bb0: 464f mov r7, r9 8bb2: 9e05 ldr r6, [sp, #20] 8bb4: 9b0d ldr r3, [sp, #52] ; 0x34 8bb6: eb09 0803 add.w r8, r9, r3 8bba: f8dd c010 ldr.w ip, [sp, #16] 8bbe: e79e b.n 8afe <_lv_blend_map+0x896> switch(mode) { 8bc0: 2d01 cmp r5, #1 8bc2: d049 beq.n 8c58 <_lv_blend_map+0x9f0> 8bc4: 2d02 cmp r5, #2 8bc6: d13c bne.n 8c42 <_lv_blend_map+0x9da> blend_fp = color_blend_true_color_subtractive; 8bc8: f8df 81e0 ldr.w r8, [pc, #480] ; 8dac <_lv_blend_map+0xb44> 8bcc: f9b6 3010 ldrsh.w r3, [r6, #16] 8bd0: 9309 str r3, [sp, #36] ; 0x24 8bd2: 8ab0 ldrh r0, [r6, #20] 8bd4: 3001 adds r0, #1 8bd6: 1ac0 subs r0, r0, r3 8bd8: b200 sxth r0, r0 8bda: f9b7 2000 ldrsh.w r2, [r7] 8bde: 88bb ldrh r3, [r7, #4] 8be0: 3301 adds r3, #1 8be2: 1a9b subs r3, r3, r2 8be4: b21d sxth r5, r3 lv_color_t * disp_buf_tmp = disp_buf + disp_w * draw_area->y1; 8be6: 46f1 mov r9, lr 8be8: fb0e fb00 mul.w fp, lr, r0 8bec: 9b05 ldr r3, [sp, #20] 8bee: 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)); 8bf2: f9b7 3002 ldrsh.w r3, [r7, #2] 8bf6: f9b6 6012 ldrsh.w r6, [r6, #18] 8bfa: 1b9f subs r7, r3, r6 8bfc: ebae 0707 sub.w r7, lr, r7 8c00: fb05 f707 mul.w r7, r5, r7 8c04: 9b07 ldr r3, [sp, #28] 8c06: eb03 0747 add.w r7, r3, r7, lsl #1 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 8c0a: 2c01 cmp r4, #1 8c0c: d027 beq.n 8c5e <_lv_blend_map+0x9f6> const lv_opa_t * mask_tmp = mask - draw_area->x1; 8c0e: 9b04 ldr r3, [sp, #16] 8c10: eba3 030c sub.w r3, r3, ip 8c14: 461a mov r2, r3 map_buf_tmp -= draw_area->x1; 8c16: eba7 034c sub.w r3, r7, ip, lsl #1 8c1a: 9304 str r3, [sp, #16] for(y = draw_area->y1; y <= draw_area->y2; y++) { 8c1c: 9b08 ldr r3, [sp, #32] 8c1e: 459e cmp lr, r3 8c20: f73f ab2f bgt.w 8282 <_lv_blend_map+0x1a> disp_buf_tmp += disp_w; 8c24: 0043 lsls r3, r0, #1 8c26: 9307 str r3, [sp, #28] map_buf_tmp += map_w; 8c28: 006b lsls r3, r5, #1 8c2a: 9308 str r3, [sp, #32] lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : ((opa * mask_tmp[x]) >> 8); 8c2c: f8cd a014 str.w sl, [sp, #20] 8c30: 1c4b adds r3, r1, #1 8c32: 9906 ldr r1, [sp, #24] 8c34: 1a5b subs r3, r3, r1 mask_tmp += draw_area_w; 8c36: b21b sxth r3, r3 8c38: 9309 str r3, [sp, #36] ; 0x24 8c3a: f8cd a018 str.w sl, [sp, #24] 8c3e: 4692 mov sl, r2 8c40: e066 b.n 8d10 <_lv_blend_map+0xaa8> LV_LOG_WARN("fill_blended: unsupported blend mode"); 8c42: 4b56 ldr r3, [pc, #344] ; (8d9c <_lv_blend_map+0xb34>) 8c44: 9300 str r3, [sp, #0] 8c46: 4b56 ldr r3, [pc, #344] ; (8da0 <_lv_blend_map+0xb38>) 8c48: f240 3253 movw r2, #851 ; 0x353 8c4c: 4955 ldr r1, [pc, #340] ; (8da4 <_lv_blend_map+0xb3c>) 8c4e: 2002 movs r0, #2 8c50: 4c55 ldr r4, [pc, #340] ; (8da8 <_lv_blend_map+0xb40>) 8c52: 47a0 blx r4 8c54: f7ff bb15 b.w 8282 <_lv_blend_map+0x1a> blend_fp = color_blend_true_color_additive; 8c58: f8df 8154 ldr.w r8, [pc, #340] ; 8db0 <_lv_blend_map+0xb48> 8c5c: e7b6 b.n 8bcc <_lv_blend_map+0x964> map_buf_tmp -= draw_area->x1; 8c5e: 9b09 ldr r3, [sp, #36] ; 0x24 8c60: 1a9b subs r3, r3, r2 8c62: eb07 0743 add.w r7, r7, r3, lsl #1 for(y = draw_area->y1; y <= draw_area->y2; y++) { 8c66: 9b08 ldr r3, [sp, #32] 8c68: 459e cmp lr, r3 8c6a: f73f ab0a bgt.w 8282 <_lv_blend_map+0x1a> disp_buf_tmp += disp_w; 8c6e: 0043 lsls r3, r0, #1 8c70: 9304 str r3, [sp, #16] map_buf_tmp += map_w; 8c72: 006b lsls r3, r5, #1 8c74: 9305 str r3, [sp, #20] 8c76: 463b mov r3, r7 8c78: 4647 mov r7, r8 8c7a: 4698 mov r8, r3 for(x = draw_area->x1; x <= draw_area->x2; x++) { 8c7c: f9bd 3038 ldrsh.w r3, [sp, #56] ; 0x38 8c80: 461c mov r4, r3 8c82: f9bd 203c ldrsh.w r2, [sp, #60] ; 0x3c 8c86: 4293 cmp r3, r2 8c88: dc10 bgt.n 8cac <_lv_blend_map+0xa44> 8c8a: 005b lsls r3, r3, #1 8c8c: eb0b 0503 add.w r5, fp, r3 8c90: eb08 0603 add.w r6, r8, r3 disp_buf_tmp[x] = blend_fp(map_buf_tmp[x], disp_buf_tmp[x], opa); 8c94: 4652 mov r2, sl 8c96: 8829 ldrh r1, [r5, #0] 8c98: f836 0b02 ldrh.w r0, [r6], #2 8c9c: 47b8 blx r7 8c9e: f825 0b02 strh.w r0, [r5], #2 for(x = draw_area->x1; x <= draw_area->x2; x++) { 8ca2: 3401 adds r4, #1 8ca4: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 8ca8: 429c cmp r4, r3 8caa: ddf3 ble.n 8c94 <_lv_blend_map+0xa2c> disp_buf_tmp += disp_w; 8cac: 9b04 ldr r3, [sp, #16] 8cae: 449b add fp, r3 map_buf_tmp += map_w; 8cb0: 9b05 ldr r3, [sp, #20] 8cb2: 4498 add r8, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 8cb4: f109 0901 add.w r9, r9, #1 8cb8: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e 8cbc: 4599 cmp r9, r3 8cbe: dddd ble.n 8c7c <_lv_blend_map+0xa14> 8cc0: f7ff badf b.w 8282 <_lv_blend_map+0x1a> for(x = draw_area->x1; x <= draw_area->x2; x++) { 8cc4: 3501 adds r5, #1 8cc6: 3602 adds r6, #2 8cc8: 3402 adds r4, #2 8cca: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 8cce: 429d cmp r5, r3 8cd0: dc0f bgt.n 8cf2 <_lv_blend_map+0xa8a> if(mask_tmp[x] == 0) continue; 8cd2: f817 3b01 ldrb.w r3, [r7], #1 8cd6: 2b00 cmp r3, #0 8cd8: d0f4 beq.n 8cc4 <_lv_blend_map+0xa5c> lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : ((opa * mask_tmp[x]) >> 8); 8cda: 2bf9 cmp r3, #249 ; 0xf9 8cdc: bf9d ittte ls 8cde: 9a06 ldrls r2, [sp, #24] 8ce0: 4353 mulls r3, r2 8ce2: f3c3 2207 ubfxls r2, r3, #8, #8 8ce6: 9a05 ldrhi r2, [sp, #20] disp_buf_tmp[x] = blend_fp(map_buf_tmp[x], disp_buf_tmp[x], opa_tmp); 8ce8: 8831 ldrh r1, [r6, #0] 8cea: 8820 ldrh r0, [r4, #0] 8cec: 47c0 blx r8 8cee: 8030 strh r0, [r6, #0] 8cf0: e7e8 b.n 8cc4 <_lv_blend_map+0xa5c> disp_buf_tmp += disp_w; 8cf2: 9b07 ldr r3, [sp, #28] 8cf4: 449b add fp, r3 8cf6: 9b09 ldr r3, [sp, #36] ; 0x24 8cf8: 449a add sl, r3 map_buf_tmp += map_w; 8cfa: 9b04 ldr r3, [sp, #16] 8cfc: 9a08 ldr r2, [sp, #32] 8cfe: 4413 add r3, r2 8d00: 9304 str r3, [sp, #16] for(y = draw_area->y1; y <= draw_area->y2; y++) { 8d02: f109 0901 add.w r9, r9, #1 8d06: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e 8d0a: 4599 cmp r9, r3 8d0c: f73f aab9 bgt.w 8282 <_lv_blend_map+0x1a> for(x = draw_area->x1; x <= draw_area->x2; x++) { 8d10: f9bd 3038 ldrsh.w r3, [sp, #56] ; 0x38 8d14: 461d mov r5, r3 8d16: f9bd 203c ldrsh.w r2, [sp, #60] ; 0x3c 8d1a: 4293 cmp r3, r2 8d1c: dce9 bgt.n 8cf2 <_lv_blend_map+0xa8a> 8d1e: eb0a 0703 add.w r7, sl, r3 8d22: 005b lsls r3, r3, #1 8d24: eb0b 0603 add.w r6, fp, r3 8d28: 9a04 ldr r2, [sp, #16] 8d2a: 18d4 adds r4, r2, r3 8d2c: e7d1 b.n 8cd2 <_lv_blend_map+0xa6a> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 8d2e: 9b04 ldr r3, [sp, #16] 8d30: 2100 movs r1, #0 for(; x < x_end4; x += 4) { 8d32: 9a0a ldr r2, [sp, #40] ; 0x28 8d34: 428a cmp r2, r1 8d36: dd0a ble.n 8d4e <_lv_blend_map+0xae6> 8d38: 3304 adds r3, #4 8d3a: 1cc8 adds r0, r1, #3 8d3c: 0040 lsls r0, r0, #1 8d3e: 9a06 ldr r2, [sp, #24] 8d40: 1814 adds r4, r2, r0 8d42: 9a05 ldr r2, [sp, #20] 8d44: 4410 add r0, r2 8d46: 950b str r5, [sp, #44] ; 0x2c 8d48: f8dd e028 ldr.w lr, [sp, #40] ; 0x28 8d4c: e527 b.n 879e <_lv_blend_map+0x536> 8d4e: 461a mov r2, r3 8d50: e670 b.n 8a34 <_lv_blend_map+0x7cc> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 8d52: 9b04 ldr r3, [sp, #16] 8d54: 2100 movs r1, #0 for(; x < x_end4; x += 4) { 8d56: 9a0a ldr r2, [sp, #40] ; 0x28 8d58: 4291 cmp r1, r2 8d5a: dbed blt.n 8d38 <_lv_blend_map+0xad0> disp_buf_first += disp_w; 8d5c: 9b05 ldr r3, [sp, #20] 8d5e: 9a0c ldr r2, [sp, #48] ; 0x30 8d60: 4413 add r3, r2 8d62: 9305 str r3, [sp, #20] 8d64: 9b04 ldr r3, [sp, #16] 8d66: 9a09 ldr r2, [sp, #36] ; 0x24 8d68: 4413 add r3, r2 8d6a: 9304 str r3, [sp, #16] map_buf_first += map_w; 8d6c: 9b06 ldr r3, [sp, #24] 8d6e: 9a0d ldr r2, [sp, #52] ; 0x34 8d70: 4413 add r3, r2 8d72: 9306 str r3, [sp, #24] for(y = 0; y < draw_area_h; y++) { 8d74: 9b07 ldr r3, [sp, #28] 8d76: 3301 adds r3, #1 8d78: 9307 str r3, [sp, #28] 8d7a: 9a08 ldr r2, [sp, #32] 8d7c: 429a cmp r2, r3 8d7e: f43f aa80 beq.w 8282 <_lv_blend_map+0x1a> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 8d82: 2d00 cmp r5, #0 8d84: dde5 ble.n 8d52 <_lv_blend_map+0xaea> 8d86: 9a04 ldr r2, [sp, #16] 8d88: f012 0f03 tst.w r2, #3 8d8c: d0cf beq.n 8d2e <_lv_blend_map+0xac6> 8d8e: f8dd 8018 ldr.w r8, [sp, #24] 8d92: f8dd e014 ldr.w lr, [sp, #20] 8d96: 4694 mov ip, r2 8d98: 2100 movs r1, #0 8d9a: e49d b.n 86d8 <_lv_blend_map+0x470> 8d9c: 00024c78 .word 0x00024c78 8da0: 00024c3c .word 0x00024c3c 8da4: 00024c48 .word 0x00024c48 8da8: 00012245 .word 0x00012245 8dac: 00007687 .word 0x00007687 8db0: 000075d1 .word 0x000075d1 00008db4 : * @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) { 8db4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 8db8: b0bd sub sp, #244 ; 0xf4 8dba: 901b str r0, [sp, #108] ; 0x6c 8dbc: 9123 str r1, [sp, #140] ; 0x8c 8dbe: 4617 mov r7, r2 8dc0: 9308 str r3, [sp, #32] 8dc2: f89d 3118 ldrb.w r3, [sp, #280] ; 0x118 8dc6: 930a str r3, [sp, #40] ; 0x28 8dc8: f89d 311c ldrb.w r3, [sp, #284] ; 0x11c 8dcc: 9306 str r3, [sp, #24] 8dce: 1e4b subs r3, r1, #1 8dd0: 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; 8dd2: aa3a add r2, sp, #232 ; 0xe8 const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; 8dd4: f813 1f01 ldrb.w r1, [r3, #1]! 8dd8: f802 1b01 strb.w r1, [r2], #1 while(len) { 8ddc: 4283 cmp r3, r0 8dde: d1f9 bne.n 8dd4 /* 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(); 8de0: 4ba3 ldr r3, [pc, #652] ; (9070 ) 8de2: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 8de4: 4ba3 ldr r3, [pc, #652] ; (9074 ) 8de6: 4798 blx r3 8de8: 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; 8dea: 8a01 ldrh r1, [r0, #16] 8dec: f8bd 30e8 ldrh.w r3, [sp, #232] ; 0xe8 8df0: 1a5b subs r3, r3, r1 8df2: f8ad 30e8 strh.w r3, [sp, #232] ; 0xe8 draw_area.y1 -= disp_area->y1; 8df6: 8a42 ldrh r2, [r0, #18] 8df8: f8bd 30ea ldrh.w r3, [sp, #234] ; 0xea 8dfc: 1a9b subs r3, r3, r2 8dfe: f8ad 30ea strh.w r3, [sp, #234] ; 0xea draw_area.x2 -= disp_area->x1; 8e02: f8bd 30ec ldrh.w r3, [sp, #236] ; 0xec 8e06: 1a5b subs r3, r3, r1 8e08: f8ad 30ec strh.w r3, [sp, #236] ; 0xec draw_area.y2 -= disp_area->y1; 8e0c: f8bd 30ee ldrh.w r3, [sp, #238] ; 0xee 8e10: 1a9b subs r3, r3, r2 8e12: f8ad 30ee strh.w r3, [sp, #238] ; 0xee uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 8e16: 4b98 ldr r3, [pc, #608] ; (9078 ) 8e18: 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 && 8e1a: 9019 str r0, [sp, #100] ; 0x64 8e1c: b930 cbnz r0, 8e2c 8e1e: 9a08 ldr r2, [sp, #32] 8e20: 8853 ldrh r3, [r2, #2] 8e22: b91b cbnz r3, 8e2c 8e24: 8913 ldrh r3, [r2, #8] 8e26: f5b3 7f80 cmp.w r3, #256 ; 0x100 8e2a: d071 beq.n 8f10 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); 8e2c: 9b06 ldr r3, [sp, #24] 8e2e: 2b00 cmp r3, #0 8e30: bf14 ite ne 8e32: f04f 0b03 movne.w fp, #3 8e36: f04f 0b02 moveq.w fp, #2 8e3a: 991b ldr r1, [sp, #108] ; 0x6c 8e3c: 460b mov r3, r1 8e3e: f9b1 2000 ldrsh.w r2, [r1] 8e42: 888d ldrh r5, [r1, #4] 8e44: 3501 adds r5, #1 8e46: 1aad subs r5, r5, r2 8e48: 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; 8e4a: f9bd 00ea ldrsh.w r0, [sp, #234] ; 0xea 8e4e: 9e18 ldr r6, [sp, #96] ; 0x60 8e50: f9b6 1012 ldrsh.w r1, [r6, #18] 8e54: 46d8 mov r8, fp map_buf_tmp += (draw_area.x1 - (map_area->x1 - disp_area->x1)) * px_size_byte; 8e56: f9bd 40e8 ldrsh.w r4, [sp, #232] ; 0xe8 8e5a: f9b6 6010 ldrsh.w r6, [r6, #16] map_buf_tmp += map_w * (draw_area.y1 - (map_area->y1 - disp_area->y1)) * px_size_byte; 8e5e: f9b3 3002 ldrsh.w r3, [r3, #2] 8e62: 1a5b subs r3, r3, r1 8e64: 1ac3 subs r3, r0, r3 map_buf_tmp += (draw_area.x1 - (map_area->x1 - disp_area->x1)) * px_size_byte; 8e66: 1b92 subs r2, r2, r6 8e68: 1aa2 subs r2, r4, r2 8e6a: fb05 2303 mla r3, r5, r3, r2 8e6e: fb03 730b mla r3, r3, fp, r7 8e72: 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; 8e74: b2a4 uxth r4, r4 8e76: 19a2 adds r2, r4, r6 8e78: b292 uxth r2, r2 8e7a: f8ad 2098 strh.w r2, [sp, #152] ; 0x98 8e7e: f8bd 30ec ldrh.w r3, [sp, #236] ; 0xec 8e82: 3301 adds r3, #1 8e84: 1b1b subs r3, r3, r4 8e86: b29b uxth r3, r3 8e88: b21c sxth r4, r3 8e8a: 9416 str r4, [sp, #88] ; 0x58 blend_area.x2 = blend_area.x1 + lv_area_get_width(&draw_area) - 1; 8e8c: 3b01 subs r3, #1 8e8e: 4413 add r3, r2 8e90: f8ad 309c strh.w r3, [sp, #156] ; 0x9c blend_area.y1 = disp_area->y1 + draw_area.y1; 8e94: b280 uxth r0, r0 8e96: 1843 adds r3, r0, r1 8e98: b21b sxth r3, r3 8e9a: f8ad 309a strh.w r3, [sp, #154] ; 0x9a blend_area.y2 = blend_area.y1; 8e9e: f8ad 309e strh.w r3, [sp, #158] ; 0x9e return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 8ea2: f8bd 60ee ldrh.w r6, [sp, #238] ; 0xee 8ea6: 3601 adds r6, #1 8ea8: 1a36 subs r6, r6, r0 8eaa: 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; 8eac: 9908 ldr r1, [sp, #32] 8eae: 884b ldrh r3, [r1, #2] 8eb0: 2b00 cmp r3, #0 8eb2: f040 8353 bne.w 955c 8eb6: 890b ldrh r3, [r1, #8] 8eb8: f5b3 7280 subs.w r2, r3, #256 ; 0x100 8ebc: bf18 it ne 8ebe: 2201 movne r2, #1 8ec0: 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) { 8ec2: 9a19 ldr r2, [sp, #100] ; 0x64 8ec4: 2a00 cmp r2, #0 8ec6: f040 8370 bne.w 95aa 8eca: f5b3 7f80 cmp.w r3, #256 ; 0x100 8ece: f040 8349 bne.w 9564 8ed2: 9b0a ldr r3, [sp, #40] ; 0x28 8ed4: b923 cbnz r3, 8ee0 8ed6: 7a8b ldrb r3, [r1, #10] 8ed8: b913 cbnz r3, 8ee0 8eda: 9b06 ldr r3, [sp, #24] 8edc: 2b00 cmp r3, #0 8ede: d131 bne.n 8f44 _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); 8ee0: a83a add r0, sp, #232 ; 0xe8 8ee2: 4b66 ldr r3, [pc, #408] ; (907c ) 8ee4: 4798 blx r3 8ee6: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0 8eea: f240 80ac bls.w 9046 lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 8eee: f44f 7070 mov.w r0, #960 ; 0x3c0 8ef2: 4c63 ldr r4, [pc, #396] ; (9080 ) 8ef4: 47a0 blx r4 8ef6: 901a str r0, [sp, #104] ; 0x68 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 8ef8: f44f 70f0 mov.w r0, #480 ; 0x1e0 8efc: 47a0 blx r4 8efe: 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)); 8f00: 2148 movs r1, #72 ; 0x48 8f02: a828 add r0, sp, #160 ; 0xa0 8f04: 4b5f ldr r3, [pc, #380] ; (9084 ) 8f06: 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); 8f08: f44f 73f0 mov.w r3, #480 ; 0x1e0 8f0c: 931c str r3, [sp, #112] ; 0x70 8f0e: e0e4 b.n 90da if(other_mask_cnt == 0 && draw_dsc->angle == 0 && draw_dsc->zoom == LV_IMG_ZOOM_NONE && 8f10: 9b0a ldr r3, [sp, #40] ; 0x28 8f12: 2b00 cmp r3, #0 8f14: d18a bne.n 8e2c chroma_key == false && alpha_byte == false && draw_dsc->recolor_opa == LV_OPA_TRANSP) { 8f16: 9b06 ldr r3, [sp, #24] 8f18: b98b cbnz r3, 8f3e 8f1a: 7a93 ldrb r3, [r2, #10] 8f1c: b113 cbz r3, 8f24 uint8_t px_size_byte = alpha_byte ? LV_IMG_PX_SIZE_ALPHA_BYTE : sizeof(lv_color_t); 8f1e: f04f 0b02 mov.w fp, #2 8f22: e78a b.n 8e3a _lv_blend_map(clip_area, map_area, (lv_color_t *)map_p, NULL, LV_DRAW_MASK_RES_FULL_COVER, draw_dsc->opa, 8f24: 7b93 ldrb r3, [r2, #14] 8f26: 9302 str r3, [sp, #8] 8f28: 7813 ldrb r3, [r2, #0] 8f2a: 9301 str r3, [sp, #4] 8f2c: 2301 movs r3, #1 8f2e: 9300 str r3, [sp, #0] 8f30: 2300 movs r3, #0 8f32: 463a mov r2, r7 8f34: 991b ldr r1, [sp, #108] ; 0x6c 8f36: 9823 ldr r0, [sp, #140] ; 0x8c 8f38: 4c53 ldr r4, [pc, #332] ; (9088 ) 8f3a: 47a0 blx r4 8f3c: e30b b.n 9556 uint8_t px_size_byte = alpha_byte ? LV_IMG_PX_SIZE_ALPHA_BYTE : sizeof(lv_color_t); 8f3e: f04f 0b03 mov.w fp, #3 8f42: e77a b.n 8e3a 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); 8f44: a83a add r0, sp, #232 ; 0xe8 8f46: 4b4d ldr r3, [pc, #308] ; (907c ) 8f48: 4798 blx r3 8f4a: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0 8f4e: d814 bhi.n 8f7a 8f50: a83a add r0, sp, #232 ; 0xe8 8f52: 4b4a ldr r3, [pc, #296] ; (907c ) 8f54: 4798 blx r3 8f56: 4681 mov r9, r0 lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 8f58: ea4f 0049 mov.w r0, r9, lsl #1 8f5c: 4c48 ldr r4, [pc, #288] ; (9080 ) 8f5e: 47a0 blx r4 8f60: 4682 mov sl, r0 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 8f62: 4648 mov r0, r9 8f64: 47a0 blx r4 8f66: 4604 mov r4, r0 for(y = 0; y < draw_area_h; y++) { 8f68: 9605 str r6, [sp, #20] 8f6a: 2e00 cmp r6, #0 8f6c: dd4f ble.n 900e map_buf_tmp += map_w * px_size_byte; 8f6e: fb08 f805 mul.w r8, r8, r5 8f72: 2500 movs r5, #0 8f74: 46ac mov ip, r5 8f76: 9e14 ldr r6, [sp, #80] ; 0x50 8f78: e025 b.n 8fc6 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); 8f7a: f44f 79f0 mov.w r9, #480 ; 0x1e0 8f7e: e7eb b.n 8f58 8f80: 445b add r3, fp 8f82: 3702 adds r7, #2 for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 8f84: 4596 cmp lr, r2 8f86: d00a beq.n 8f9e lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; 8f88: 7899 ldrb r1, [r3, #2] mask_buf[px_i] = px_opa; 8f8a: f802 1b01 strb.w r1, [r2], #1 if(px_opa) { 8f8e: 2900 cmp r1, #0 8f90: d0f6 beq.n 8f80 map2[px_i].full = map_px[0] + (map_px[1] << 8); 8f92: 7858 ldrb r0, [r3, #1] 8f94: 7819 ldrb r1, [r3, #0] 8f96: eb01 2100 add.w r1, r1, r0, lsl #8 8f9a: 8039 strh r1, [r7, #0] 8f9c: e7f0 b.n 8f80 map_buf_tmp += map_w * px_size_byte; 8f9e: 4446 add r6, r8 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 8fa0: f8bd 30ec ldrh.w r3, [sp, #236] ; 0xec 8fa4: 3301 adds r3, #1 8fa6: f8bd 20e8 ldrh.w r2, [sp, #232] ; 0xe8 8faa: 1a9b subs r3, r3, r2 if(px_i + lv_area_get_width(&draw_area) < mask_buf_size) { 8fac: fa0c f383 sxtah r3, ip, r3 8fb0: 4599 cmp r9, r3 8fb2: d914 bls.n 8fde blend_area.y2 ++; 8fb4: f8bd 309e ldrh.w r3, [sp, #158] ; 0x9e 8fb8: 3301 adds r3, #1 8fba: f8ad 309e strh.w r3, [sp, #158] ; 0x9e for(y = 0; y < draw_area_h; y++) { 8fbe: 3501 adds r5, #1 8fc0: 9b05 ldr r3, [sp, #20] 8fc2: 429d cmp r5, r3 8fc4: d023 beq.n 900e for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 8fc6: 9b16 ldr r3, [sp, #88] ; 0x58 8fc8: 2b00 cmp r3, #0 8fca: dde8 ble.n 8f9e 8fcc: eb04 020c add.w r2, r4, ip 8fd0: eb0a 074c add.w r7, sl, ip, lsl #1 8fd4: 449c add ip, r3 8fd6: eb04 0e0c add.w lr, r4, ip 8fda: 4633 mov r3, r6 8fdc: e7d4 b.n 8f88 _lv_blend_map(clip_area, &blend_area, map2, mask_buf, LV_DRAW_MASK_RES_CHANGED, draw_dsc->opa, draw_dsc->blend_mode); 8fde: 9a08 ldr r2, [sp, #32] 8fe0: 7b93 ldrb r3, [r2, #14] 8fe2: 9302 str r3, [sp, #8] 8fe4: 7813 ldrb r3, [r2, #0] 8fe6: 9301 str r3, [sp, #4] 8fe8: 2302 movs r3, #2 8fea: 9300 str r3, [sp, #0] 8fec: 4623 mov r3, r4 8fee: 4652 mov r2, sl 8ff0: a926 add r1, sp, #152 ; 0x98 8ff2: 9823 ldr r0, [sp, #140] ; 0x8c 8ff4: 4f24 ldr r7, [pc, #144] ; (9088 ) 8ff6: 47b8 blx r7 blend_area.y1 = blend_area.y2 + 1; 8ff8: f8bd 309e ldrh.w r3, [sp, #158] ; 0x9e 8ffc: 3301 adds r3, #1 8ffe: b21b sxth r3, r3 9000: f8ad 309a strh.w r3, [sp, #154] ; 0x9a blend_area.y2 = blend_area.y1; 9004: f8ad 309e strh.w r3, [sp, #158] ; 0x9e px_i = 0; 9008: f04f 0c00 mov.w ip, #0 900c: e7d7 b.n 8fbe if(blend_area.y1 != blend_area.y2) { 900e: f9bd 309e ldrsh.w r3, [sp, #158] ; 0x9e 9012: f9bd 209a ldrsh.w r2, [sp, #154] ; 0x9a 9016: 429a cmp r2, r3 9018: d00f beq.n 903a blend_area.y2--; 901a: 3b01 subs r3, #1 901c: 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); 9020: 9a08 ldr r2, [sp, #32] 9022: 7b93 ldrb r3, [r2, #14] 9024: 9302 str r3, [sp, #8] 9026: 7813 ldrb r3, [r2, #0] 9028: 9301 str r3, [sp, #4] 902a: 2302 movs r3, #2 902c: 9300 str r3, [sp, #0] 902e: 4623 mov r3, r4 9030: 4652 mov r2, sl 9032: a926 add r1, sp, #152 ; 0x98 9034: 9823 ldr r0, [sp, #140] ; 0x8c 9036: 4d14 ldr r5, [pc, #80] ; (9088 ) 9038: 47a8 blx r5 _lv_mem_buf_release(mask_buf); 903a: 4620 mov r0, r4 903c: 4c13 ldr r4, [pc, #76] ; (908c ) 903e: 47a0 blx r4 _lv_mem_buf_release(map2); 9040: 4650 mov r0, sl 9042: 47a0 blx r4 if(other_mask_cnt == 0 && !transform && !chroma_key && draw_dsc->recolor_opa == LV_OPA_TRANSP && alpha_byte) { 9044: e287 b.n 9556 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); 9046: a83a add r0, sp, #232 ; 0xe8 9048: 4b0c ldr r3, [pc, #48] ; (907c ) 904a: 4798 blx r3 904c: 901c str r0, [sp, #112] ; 0x70 lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 904e: 9b1c ldr r3, [sp, #112] ; 0x70 9050: 0058 lsls r0, r3, #1 9052: 4c0b ldr r4, [pc, #44] ; (9080 ) 9054: 47a0 blx r4 9056: 901a str r0, [sp, #104] ; 0x68 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 9058: 981c ldr r0, [sp, #112] ; 0x70 905a: 47a0 blx r4 905c: 9017 str r0, [sp, #92] ; 0x5c _lv_memset_00(&trans_dsc, sizeof(lv_img_transform_dsc_t)); 905e: 2148 movs r1, #72 ; 0x48 9060: a828 add r0, sp, #160 ; 0xa0 9062: 4b08 ldr r3, [pc, #32] ; (9084 ) 9064: 4798 blx r3 if(transform) { 9066: 9b05 ldr r3, [sp, #20] 9068: 2b00 cmp r3, #0 906a: d036 beq.n 90da 906c: e291 b.n 9592 906e: bf00 nop 9070: 00005f51 .word 0x00005f51 9074: 00010fc5 .word 0x00010fc5 9078: 0000bead .word 0x0000bead 907c: 000114e5 .word 0x000114e5 9080: 00012925 .word 0x00012925 9084: 00012b1f .word 0x00012b1f 9088: 00008269 .word 0x00008269 908c: 00012559 .word 0x00012559 lv_img_cf_t cf = LV_IMG_CF_TRUE_COLOR; if(alpha_byte) cf = LV_IMG_CF_TRUE_COLOR_ALPHA; 9090: 2205 movs r2, #5 else if(chroma_key) cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED; trans_dsc.cfg.angle = draw_dsc->angle; 9092: 9808 ldr r0, [sp, #32] 9094: 8843 ldrh r3, [r0, #2] 9096: f8ad 30ac strh.w r3, [sp, #172] ; 0xac trans_dsc.cfg.zoom = draw_dsc->zoom; 909a: 8903 ldrh r3, [r0, #8] 909c: f8ad 30ae strh.w r3, [sp, #174] ; 0xae trans_dsc.cfg.src = map_p; 90a0: 9728 str r7, [sp, #160] ; 0xa0 trans_dsc.cfg.src_w = map_w; 90a2: f8ad 50a4 strh.w r5, [sp, #164] ; 0xa4 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 90a6: 991b ldr r1, [sp, #108] ; 0x6c 90a8: 88cb ldrh r3, [r1, #6] 90aa: 3301 adds r3, #1 90ac: 8849 ldrh r1, [r1, #2] 90ae: 1a5b subs r3, r3, r1 trans_dsc.cfg.src_h = lv_area_get_height(map_area);; 90b0: f8ad 30a6 strh.w r3, [sp, #166] ; 0xa6 trans_dsc.cfg.cf = cf; 90b4: f88d 20b2 strb.w r2, [sp, #178] ; 0xb2 trans_dsc.cfg.pivot_x = draw_dsc->pivot.x; 90b8: 8883 ldrh r3, [r0, #4] 90ba: f8ad 30a8 strh.w r3, [sp, #168] ; 0xa8 trans_dsc.cfg.pivot_y = draw_dsc->pivot.y; 90be: 88c3 ldrh r3, [r0, #6] 90c0: f8ad 30aa strh.w r3, [sp, #170] ; 0xaa trans_dsc.cfg.color = draw_dsc->recolor; 90c4: 8983 ldrh r3, [r0, #12] 90c6: f8ad 30b0 strh.w r3, [sp, #176] ; 0xb0 trans_dsc.cfg.antialias = draw_dsc->antialias; 90ca: 7bc3 ldrb r3, [r0, #15] 90cc: f3c3 0300 ubfx r3, r3, #0, #1 90d0: f88d 30b3 strb.w r3, [sp, #179] ; 0xb3 _lv_img_buf_transform_init(&trans_dsc); 90d4: a828 add r0, sp, #160 ; 0xa0 90d6: 4b93 ldr r3, [pc, #588] ; (9324 ) 90d8: 4798 blx r3 } #endif uint16_t recolor_premult[3] = {0}; lv_opa_t recolor_opa_inv = 255 - draw_dsc->recolor_opa; 90da: 9808 ldr r0, [sp, #32] 90dc: 7a83 ldrb r3, [r0, #10] 90de: 43da mvns r2, r3 90e0: b2d2 uxtb r2, r2 90e2: 9212 str r2, [sp, #72] ; 0x48 if(draw_dsc->recolor_opa != 0) { 90e4: b303 cbz r3, 9128 out[0] = (uint16_t) LV_COLOR_GET_R(c) * mix; 90e6: b29b uxth r3, r3 90e8: 7b42 ldrb r2, [r0, #13] 90ea: 08d2 lsrs r2, r2, #3 90ec: fb02 f203 mul.w r2, r2, r3 90f0: 9210 str r2, [sp, #64] ; 0x40 out[1] = (uint16_t) LV_COLOR_GET_G(c) * mix; 90f2: 8982 ldrh r2, [r0, #12] 90f4: f3c2 1245 ubfx r2, r2, #5, #6 90f8: fb02 f203 mul.w r2, r2, r3 90fc: 9211 str r2, [sp, #68] ; 0x44 out[2] = (uint16_t) LV_COLOR_GET_B(c) * mix; 90fe: 7b02 ldrb r2, [r0, #12] 9100: f002 021f and.w r2, r2, #31 9104: fb02 f303 mul.w r3, r2, r3 9108: 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 || 910a: 9b06 ldr r3, [sp, #24] 910c: b98b cbnz r3, 9132 910e: 9b0a ldr r3, [sp, #40] ; 0x28 9110: bb53 cbnz r3, 9168 9112: 9a08 ldr r2, [sp, #32] 9114: 8853 ldrh r3, [r2, #2] 9116: bb53 cbnz r3, 916e 9118: 8913 ldrh r3, [r2, #8] 911a: f5b3 7f80 cmp.w r3, #256 ; 0x100 911e: bf14 ite ne 9120: 2302 movne r3, #2 9122: 2301 moveq r3, #1 9124: 931d str r3, [sp, #116] ; 0x74 9126: e006 b.n 9136 uint16_t recolor_premult[3] = {0}; 9128: 2300 movs r3, #0 912a: 9313 str r3, [sp, #76] ; 0x4c 912c: 9311 str r3, [sp, #68] ; 0x44 912e: 9310 str r3, [sp, #64] ; 0x40 9130: e7eb b.n 910a mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 9132: 2302 movs r3, #2 9134: 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) { 9136: 9b19 ldr r3, [sp, #100] ; 0x64 9138: b9e3 cbnz r3, 9174 } int32_t x; int32_t y; #if LV_USE_IMG_TRANSFORM int32_t rot_y = disp_area->y1 + draw_area.y1 - map_area->y1; 913a: 9b18 ldr r3, [sp, #96] ; 0x60 913c: f9b3 3012 ldrsh.w r3, [r3, #18] 9140: f9bd 20ea ldrsh.w r2, [sp, #234] ; 0xea 9144: 4413 add r3, r2 9146: 9a1b ldr r2, [sp, #108] ; 0x6c 9148: f9b2 2002 ldrsh.w r2, [r2, #2] 914c: 1a9b subs r3, r3, r2 914e: 9322 str r3, [sp, #136] ; 0x88 #endif for(y = 0; y < draw_area_h; y++) { 9150: 961f str r6, [sp, #124] ; 0x7c 9152: 2e00 cmp r6, #0 9154: f340 81e4 ble.w 9520 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; 9158: fb08 f305 mul.w r3, r8, r5 915c: 931e str r3, [sp, #120] ; 0x78 915e: 2300 movs r3, #0 9160: 930e str r3, [sp, #56] ; 0x38 9162: 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); 9164: 46d1 mov r9, sl 9166: e154 b.n 9412 mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 9168: 2302 movs r3, #2 916a: 931d str r3, [sp, #116] ; 0x74 916c: e7e3 b.n 9136 916e: 2302 movs r3, #2 9170: 931d str r3, [sp, #116] ; 0x74 9172: e7e0 b.n 9136 _lv_memset_ff(mask_buf, mask_buf_size); 9174: 991c ldr r1, [sp, #112] ; 0x70 9176: 9817 ldr r0, [sp, #92] ; 0x5c 9178: 4b6b ldr r3, [pc, #428] ; (9328 ) 917a: 4798 blx r3 917c: e7dd b.n 913a int32_t xt = x - dsc->cfg.pivot_x; 917e: 9b0c ldr r3, [sp, #48] ; 0x30 9180: 442b add r3, r5 9182: b21b sxth r3, r3 9184: f9bd 20a8 ldrsh.w r2, [sp, #168] ; 0xa8 9188: 1a9b subs r3, r3, r2 int32_t yt = y - dsc->cfg.pivot_y; 918a: f9bd 20aa ldrsh.w r2, [sp, #170] ; 0xaa 918e: 990d ldr r1, [sp, #52] ; 0x34 9190: 1a8a subs r2, r1, r2 if(dsc->cfg.zoom == LV_IMG_ZOOM_NONE) { 9192: f8bd 10ae ldrh.w r1, [sp, #174] ; 0xae 9196: f5b1 7f80 cmp.w r1, #256 ; 0x100 919a: d056 beq.n 924a else if(dsc->cfg.angle == 0) { 919c: f9bd 10ac ldrsh.w r1, [sp, #172] ; 0xac 91a0: 2900 cmp r1, #0 91a2: d165 bne.n 9270 xt *= dsc->tmp.zoom_inv; 91a4: f8bd 10d6 ldrh.w r1, [sp, #214] ; 0xd6 xs = xt + dsc->tmp.pivot_x_256; 91a8: 9c31 ldr r4, [sp, #196] ; 0xc4 91aa: fb01 4303 mla r3, r1, r3, r4 91ae: 9309 str r3, [sp, #36] ; 0x24 ys = yt + dsc->tmp.pivot_y_256; 91b0: 9b32 ldr r3, [sp, #200] ; 0xc8 91b2: fb01 3302 mla r3, r1, r2, r3 91b6: 930b str r3, [sp, #44] ; 0x2c int32_t xs_int = xs >> 8; 91b8: 9b09 ldr r3, [sp, #36] ; 0x24 91ba: 121f asrs r7, r3, #8 if(xs_int >= dsc->cfg.src_w) return false; 91bc: f9bd 30a4 ldrsh.w r3, [sp, #164] ; 0xa4 91c0: 429f cmp r7, r3 91c2: f280 80ab bge.w 931c else if(xs_int < 0) return false; 91c6: 2f00 cmp r7, #0 91c8: f2c0 80a8 blt.w 931c int32_t ys_int = ys >> 8; 91cc: 9a0b ldr r2, [sp, #44] ; 0x2c 91ce: 1212 asrs r2, r2, #8 91d0: 4610 mov r0, r2 91d2: 9215 str r2, [sp, #84] ; 0x54 if(ys_int >= dsc->cfg.src_h) return false; 91d4: f9bd 20a6 ldrsh.w r2, [sp, #166] ; 0xa6 91d8: 4290 cmp r0, r2 91da: f280 809f bge.w 931c else if(ys_int < 0) return false; 91de: 2800 cmp r0, #0 91e0: f2c0 809c blt.w 931c if(dsc->tmp.native_color) { 91e4: f89d 20d4 ldrb.w r2, [sp, #212] ; 0xd4 91e8: f012 0f04 tst.w r2, #4 91ec: d06a beq.n 92c4 const uint8_t * src_u8 = (const uint8_t *)dsc->cfg.src; 91ee: 9928 ldr r1, [sp, #160] ; 0xa0 if(dsc->tmp.has_alpha == 0) { 91f0: f012 0f02 tst.w r2, #2 91f4: d155 bne.n 92a2 pxi = dsc->cfg.src_w * ys_int * px_size + xs_int * px_size; 91f6: fb03 7300 mla r3, r3, r0, r7 91fa: 005a lsls r2, r3, #1 _lv_memcpy_small(&dsc->res.color, &src_u8[pxi], px_size); 91fc: 1888 adds r0, r1, r2 *d8 = *s8; 91fe: f811 3013 ldrb.w r3, [r1, r3, lsl #1] 9202: f88d 30b4 strb.w r3, [sp, #180] ; 0xb4 9206: 7843 ldrb r3, [r0, #1] 9208: f88d 30b5 strb.w r3, [sp, #181] ; 0xb5 px_size = LV_COLOR_SIZE >> 3; 920c: 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) { 920e: f89d 30d4 ldrb.w r3, [sp, #212] ; 0xd4 9212: f013 0f01 tst.w r3, #1 9216: d00d beq.n 9234 lv_color_t ct = LV_COLOR_TRANSP; 9218: 9b20 ldr r3, [sp, #128] ; 0x80 921a: f36f 0304 bfc r3, #0, #5 921e: f443 63fc orr.w r3, r3, #2016 ; 0x7e0 9222: f36f 23cf bfc r3, #11, #5 9226: f8ad 3080 strh.w r3, [sp, #128] ; 0x80 if(dsc->res.color.full == ct.full) return false; 922a: f8bd 00b4 ldrh.w r0, [sp, #180] ; 0xb4 922e: b29b uxth r3, r3 9230: 4298 cmp r0, r3 9232: d073 beq.n 931c } if(dsc->cfg.antialias == false) return true; 9234: f89d 30b3 ldrb.w r3, [sp, #179] ; 0xb3 9238: 2b00 cmp r3, #0 923a: d159 bne.n 92f0 mask_buf[px_i] = trans_dsc.res.opa; 923c: f89d 30b6 ldrb.w r3, [sp, #182] ; 0xb6 9240: f88a 3000 strb.w r3, [sl] c.full = trans_dsc.res.color.full; 9244: f8bd 30b4 ldrh.w r3, [sp, #180] ; 0xb4 9248: e086 b.n 9358 xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_x_256; 924a: 9834 ldr r0, [sp, #208] ; 0xd0 924c: 9933 ldr r1, [sp, #204] ; 0xcc 924e: fb00 f403 mul.w r4, r0, r3 9252: fb01 4712 mls r7, r1, r2, r4 9256: 9c31 ldr r4, [sp, #196] ; 0xc4 9258: eb04 14e7 add.w r4, r4, r7, asr #7 925c: 9409 str r4, [sp, #36] ; 0x24 ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_y_256; 925e: fb00 f202 mul.w r2, r0, r2 9262: fb01 2303 mla r3, r1, r3, r2 9266: 9a32 ldr r2, [sp, #200] ; 0xc8 9268: eb02 13e3 add.w r3, r2, r3, asr #7 926c: 930b str r3, [sp, #44] ; 0x2c 926e: e7a3 b.n 91b8 xt *= dsc->tmp.zoom_inv; 9270: f8bd 10d6 ldrh.w r1, [sp, #214] ; 0xd6 9274: fb01 f303 mul.w r3, r1, r3 yt *= dsc->tmp.zoom_inv; 9278: fb01 f202 mul.w r2, r1, r2 xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_x_256; 927c: 9934 ldr r1, [sp, #208] ; 0xd0 927e: 9833 ldr r0, [sp, #204] ; 0xcc 9280: fb01 f403 mul.w r4, r1, r3 9284: fb00 4712 mls r7, r0, r2, r4 9288: 9c31 ldr r4, [sp, #196] ; 0xc4 928a: eb04 34e7 add.w r4, r4, r7, asr #15 928e: 9409 str r4, [sp, #36] ; 0x24 ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_y_256; 9290: fb01 f202 mul.w r2, r1, r2 9294: fb00 2303 mla r3, r0, r3, r2 9298: 9a32 ldr r2, [sp, #200] ; 0xc8 929a: eb02 33e3 add.w r3, r2, r3, asr #15 929e: 930b str r3, [sp, #44] ; 0x2c 92a0: e78a b.n 91b8 pxi = dsc->cfg.src_w * ys_int * px_size + xs_int * px_size; 92a2: 9a15 ldr r2, [sp, #84] ; 0x54 92a4: fb03 7302 mla r3, r3, r2, r7 92a8: eb03 0243 add.w r2, r3, r3, lsl #1 _lv_memcpy_small(&dsc->res.color, &src_u8[pxi], px_size - 1); 92ac: 188b adds r3, r1, r2 92ae: 5c89 ldrb r1, [r1, r2] 92b0: f88d 10b4 strb.w r1, [sp, #180] ; 0xb4 92b4: 7859 ldrb r1, [r3, #1] 92b6: f88d 10b5 strb.w r1, [sp, #181] ; 0xb5 dsc->res.opa = src_u8[pxi + px_size - 1]; 92ba: 789b ldrb r3, [r3, #2] 92bc: f88d 30b6 strb.w r3, [sp, #182] ; 0xb6 px_size = LV_IMG_PX_SIZE_ALPHA_BYTE; 92c0: 2103 movs r1, #3 92c2: e7a4 b.n 920e dsc->res.color = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, xs_int, ys_int, dsc->cfg.color); 92c4: b239 sxth r1, r7 92c6: f9bd 2054 ldrsh.w r2, [sp, #84] ; 0x54 92ca: f8bd 30b0 ldrh.w r3, [sp, #176] ; 0xb0 92ce: 9225 str r2, [sp, #148] ; 0x94 92d0: 9124 str r1, [sp, #144] ; 0x90 92d2: a82e add r0, sp, #184 ; 0xb8 92d4: 4c15 ldr r4, [pc, #84] ; (932c ) 92d6: 47a0 blx r4 92d8: 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); 92dc: 9a25 ldr r2, [sp, #148] ; 0x94 92de: 9924 ldr r1, [sp, #144] ; 0x90 92e0: a82e add r0, sp, #184 ; 0xb8 92e2: 4b13 ldr r3, [pc, #76] ; (9330 ) 92e4: 4798 blx r3 92e6: f88d 00b6 strb.w r0, [sp, #182] ; 0xb6 pxi = 0; /*unused*/ 92ea: 2200 movs r2, #0 px_size = 0; /*unused*/ 92ec: 4611 mov r1, r2 92ee: e78e b.n 920e dsc->tmp.xs = xs; 92f0: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 92f4: f8ad 30d8 strh.w r3, [sp, #216] ; 0xd8 dsc->tmp.ys = ys; 92f8: f8bd 302c ldrh.w r3, [sp, #44] ; 0x2c 92fc: f8ad 30da strh.w r3, [sp, #218] ; 0xda dsc->tmp.xs_int = xs_int; 9300: f8ad 70dc strh.w r7, [sp, #220] ; 0xdc dsc->tmp.ys_int = ys_int; 9304: f8bd 3054 ldrh.w r3, [sp, #84] ; 0x54 9308: f8ad 30de strh.w r3, [sp, #222] ; 0xde dsc->tmp.pxi = pxi; 930c: 9238 str r2, [sp, #224] ; 0xe0 dsc->tmp.px_size = px_size; 930e: f88d 10e4 strb.w r1, [sp, #228] ; 0xe4 bool ret; ret = _lv_img_buf_transform_anti_alias(dsc); 9312: a828 add r0, sp, #160 ; 0xa0 9314: 4b07 ldr r3, [pc, #28] ; (9334 ) 9316: 4798 blx r3 if(ret == false) { 9318: 2800 cmp r0, #0 931a: d18f bne.n 923c mask_buf[px_i] = LV_OPA_TRANSP; 931c: 2300 movs r3, #0 931e: f88a 3000 strb.w r3, [sl] continue; 9322: e03d b.n 93a0 9324: 0000eb35 .word 0x0000eb35 9328: 00012bd5 .word 0x00012bd5 932c: 0000e901 .word 0x0000e901 9330: 0000ea31 .word 0x0000ea31 9334: 0000ede5 .word 0x0000ede5 9338: 000007e0 .word 0x000007e0 mask_buf[px_i] = 0xFF; 933c: 23ff movs r3, #255 ; 0xff 933e: f88a 3000 strb.w r3, [sl] c.full = map_px[0] + (map_px[1] << 8); 9342: 7872 ldrb r2, [r6, #1] 9344: 7833 ldrb r3, [r6, #0] 9346: eb03 2302 add.w r3, r3, r2, lsl #8 934a: b29b uxth r3, r3 if(chroma_key) { 934c: 9a0a ldr r2, [sp, #40] ; 0x28 934e: b11a cbz r2, 9358 if(c.full == chroma_keyed_color.full) { 9350: f83f 201c ldrh.w r2, [pc, #-28] ; 9338 9354: 429a cmp r2, r3 9356: d036 beq.n 93c6 if(draw_dsc->recolor_opa != 0) { 9358: 9a08 ldr r2, [sp, #32] 935a: 7a92 ldrb r2, [r2, #10] 935c: b1ea cbz r2, 939a LV_COLOR_SET_R(ret, (uint16_t)((uint16_t) premult_c1[0] + LV_COLOR_GET_R(c2) * mix) >> 8); 935e: f8bd 2048 ldrh.w r2, [sp, #72] ; 0x48 9362: 0ad9 lsrs r1, r3, #11 9364: 9810 ldr r0, [sp, #64] ; 0x40 9366: fb01 0102 mla r1, r1, r2, r0 936a: 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); 936e: f3c3 1045 ubfx r0, r3, #5, #6 9372: 9c11 ldr r4, [sp, #68] ; 0x44 9374: fb00 4002 mla r0, r0, r2, r4 9378: 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); 937c: f003 031f and.w r3, r3, #31 9380: 9c13 ldr r4, [sp, #76] ; 0x4c 9382: fb03 4302 mla r3, r3, r2, r4 9386: f3c3 2307 ubfx r3, r3, #8, #8 938a: f363 0904 bfi r9, r3, #0, #5 938e: f360 194a bfi r9, r0, #5, #6 9392: f361 29cf bfi r9, r1, #11, #5 9396: fa1f f389 uxth.w r3, r9 map2[px_i].full = c.full; 939a: 9a07 ldr r2, [sp, #28] 939c: f822 3015 strh.w r3, [r2, r5, lsl #1] for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 93a0: 3501 adds r5, #1 93a2: 445e add r6, fp 93a4: f10a 0a01 add.w sl, sl, #1 93a8: 4545 cmp r5, r8 93aa: d010 beq.n 93ce if(transform) { 93ac: 9b05 ldr r3, [sp, #20] 93ae: 2b00 cmp r3, #0 93b0: f47f aee5 bne.w 917e if(alpha_byte) { 93b4: 9b06 ldr r3, [sp, #24] 93b6: 2b00 cmp r3, #0 93b8: d0c0 beq.n 933c lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; 93ba: 78b3 ldrb r3, [r6, #2] mask_buf[px_i] = px_opa; 93bc: f88a 3000 strb.w r3, [sl] if(px_opa == 0) { 93c0: 2b00 cmp r3, #0 93c2: d0ed beq.n 93a0 93c4: e7bd b.n 9342 mask_buf[px_i] = LV_OPA_TRANSP; 93c6: 2300 movs r3, #0 93c8: f88a 3000 strb.w r3, [sl] continue; 93cc: e7e8 b.n 93a0 93ce: 9b16 ldr r3, [sp, #88] ; 0x58 93d0: 9a0f ldr r2, [sp, #60] ; 0x3c 93d2: 189c adds r4, r3, r2 if(other_mask_cnt) { 93d4: 9b19 ldr r3, [sp, #100] ; 0x64 93d6: 2b00 cmp r3, #0 93d8: d13e bne.n 9458 map_buf_tmp += map_w * px_size_byte; 93da: 9b14 ldr r3, [sp, #80] ; 0x50 93dc: 9a1e ldr r2, [sp, #120] ; 0x78 93de: 4413 add r3, r2 93e0: 9314 str r3, [sp, #80] ; 0x50 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 93e2: f8bd 30ec ldrh.w r3, [sp, #236] ; 0xec 93e6: 3301 adds r3, #1 93e8: f8bd 20e8 ldrh.w r2, [sp, #232] ; 0xe8 93ec: 1a9b subs r3, r3, r2 if(px_i + lv_area_get_width(&draw_area) < mask_buf_size) { 93ee: fa04 f383 sxtah r3, r4, r3 93f2: 9a1c ldr r2, [sp, #112] ; 0x70 93f4: 429a cmp r2, r3 93f6: d95c bls.n 94b2 blend_area.y2 ++; 93f8: f8bd 309e ldrh.w r3, [sp, #158] ; 0x9e 93fc: 3301 adds r3, #1 93fe: f8ad 309e strh.w r3, [sp, #158] ; 0x9e 9402: 940f str r4, [sp, #60] ; 0x3c for(y = 0; y < draw_area_h; y++) { 9404: 9b0e ldr r3, [sp, #56] ; 0x38 9406: 3301 adds r3, #1 9408: 930e str r3, [sp, #56] ; 0x38 940a: 9a1f ldr r2, [sp, #124] ; 0x7c 940c: 4293 cmp r3, r2 940e: f000 8087 beq.w 9520 int32_t rot_x = disp_area->x1 + draw_area.x1 - map_area->x1; 9412: 9b18 ldr r3, [sp, #96] ; 0x60 9414: f9b3 3010 ldrsh.w r3, [r3, #16] 9418: f9bd 20e8 ldrsh.w r2, [sp, #232] ; 0xe8 941c: 4413 add r3, r2 941e: 9a1b ldr r2, [sp, #108] ; 0x6c 9420: f9b2 2000 ldrsh.w r2, [r2] 9424: 1a9b subs r3, r3, r2 9426: 930c str r3, [sp, #48] ; 0x30 for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 9428: 9b16 ldr r3, [sp, #88] ; 0x58 942a: 4698 mov r8, r3 942c: 2b00 cmp r3, #0 942e: dd11 ble.n 9454 9430: 9b17 ldr r3, [sp, #92] ; 0x5c 9432: 4619 mov r1, r3 9434: 9a0f ldr r2, [sp, #60] ; 0x3c 9436: eb01 0a02 add.w sl, r1, r2 943a: 9b1a ldr r3, [sp, #104] ; 0x68 943c: 4619 mov r1, r3 943e: eb01 0342 add.w r3, r1, r2, lsl #1 9442: 9307 str r3, [sp, #28] 9444: 9e14 ldr r6, [sp, #80] ; 0x50 9446: 2500 movs r5, #0 int32_t yt = y - dsc->cfg.pivot_y; 9448: 9b22 ldr r3, [sp, #136] ; 0x88 944a: 9a0e ldr r2, [sp, #56] ; 0x38 944c: 4413 add r3, r2 944e: b21b sxth r3, r3 9450: 930d str r3, [sp, #52] ; 0x34 9452: e7ab b.n 93ac 9454: 9c0f ldr r4, [sp, #60] ; 0x3c 9456: e7bd b.n 93d4 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, 9458: 9b0f ldr r3, [sp, #60] ; 0x3c 945a: 9a17 ldr r2, [sp, #92] ; 0x5c 945c: 4413 add r3, r2 945e: 461e mov r6, r3 9460: f8bd 10e8 ldrh.w r1, [sp, #232] ; 0xe8 9464: f8bd 30ec ldrh.w r3, [sp, #236] ; 0xec 9468: 3301 adds r3, #1 946a: 1a5b subs r3, r3, r1 946c: f8bd 20ea ldrh.w r2, [sp, #234] ; 0xea 9470: 9d18 ldr r5, [sp, #96] ; 0x60 9472: 8a68 ldrh r0, [r5, #18] 9474: 4402 add r2, r0 9476: 980e ldr r0, [sp, #56] ; 0x38 9478: 4402 add r2, r0 947a: 8a28 ldrh r0, [r5, #16] 947c: 4401 add r1, r0 947e: b21b sxth r3, r3 9480: b212 sxth r2, r2 9482: b209 sxth r1, r1 9484: 4630 mov r0, r6 9486: 4d4e ldr r5, [pc, #312] ; (95c0 ) 9488: 47a8 blx r5 if(mask_res_sub == LV_DRAW_MASK_RES_TRANSP) { 948a: b128 cbz r0, 9498 mask_res = LV_DRAW_MASK_RES_CHANGED; 948c: 2802 cmp r0, #2 948e: 9a1d ldr r2, [sp, #116] ; 0x74 9490: bf08 it eq 9492: 4602 moveq r2, r0 9494: 921d str r2, [sp, #116] ; 0x74 9496: e7a0 b.n 93da 9498: f8bd 10ec ldrh.w r1, [sp, #236] ; 0xec 949c: 3101 adds r1, #1 949e: f8bd 30e8 ldrh.w r3, [sp, #232] ; 0xe8 94a2: 1ac9 subs r1, r1, r3 _lv_memset_00(mask_buf + px_i_start, lv_area_get_width(&draw_area)); 94a4: b209 sxth r1, r1 94a6: 4630 mov r0, r6 94a8: 4b46 ldr r3, [pc, #280] ; (95c4 ) 94aa: 4798 blx r3 mask_res = LV_DRAW_MASK_RES_CHANGED; 94ac: 2302 movs r3, #2 94ae: 931d str r3, [sp, #116] ; 0x74 94b0: e793 b.n 93da } else { _lv_blend_map(clip_area, &blend_area, map2, mask_buf, mask_res, draw_dsc->opa, draw_dsc->blend_mode); 94b2: 9d08 ldr r5, [sp, #32] 94b4: 7bab ldrb r3, [r5, #14] 94b6: 9302 str r3, [sp, #8] 94b8: 782b ldrb r3, [r5, #0] 94ba: 9301 str r3, [sp, #4] 94bc: 9b1d ldr r3, [sp, #116] ; 0x74 94be: 9300 str r3, [sp, #0] 94c0: 9b17 ldr r3, [sp, #92] ; 0x5c 94c2: 9a1a ldr r2, [sp, #104] ; 0x68 94c4: a926 add r1, sp, #152 ; 0x98 94c6: 9823 ldr r0, [sp, #140] ; 0x8c 94c8: 4c3f ldr r4, [pc, #252] ; (95c8 ) 94ca: 47a0 blx r4 blend_area.y1 = blend_area.y2 + 1; 94cc: f8bd 309e ldrh.w r3, [sp, #158] ; 0x9e 94d0: 3301 adds r3, #1 94d2: b21b sxth r3, r3 94d4: f8ad 309a strh.w r3, [sp, #154] ; 0x9a blend_area.y2 = blend_area.y1; 94d8: f8ad 309e strh.w r3, [sp, #158] ; 0x9e px_i = 0; mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 94dc: 9b06 ldr r3, [sp, #24] 94de: b95b cbnz r3, 94f8 94e0: 9b0a ldr r3, [sp, #40] ; 0x28 94e2: b983 cbnz r3, 9506 94e4: 886b ldrh r3, [r5, #2] 94e6: b98b cbnz r3, 950c 94e8: 892b ldrh r3, [r5, #8] 94ea: f5b3 7f80 cmp.w r3, #256 ; 0x100 94ee: bf14 ite ne 94f0: 2302 movne r3, #2 94f2: 2301 moveq r3, #1 94f4: 931d str r3, [sp, #116] ; 0x74 94f6: e001 b.n 94fc 94f8: 2302 movs r3, #2 94fa: 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) { 94fc: 9b19 ldr r3, [sp, #100] ; 0x64 94fe: b943 cbnz r3, 9512 px_i = 0; 9500: 2300 movs r3, #0 9502: 930f str r3, [sp, #60] ; 0x3c 9504: e77e b.n 9404 mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 9506: 2302 movs r3, #2 9508: 931d str r3, [sp, #116] ; 0x74 950a: e7f7 b.n 94fc 950c: 2302 movs r3, #2 950e: 931d str r3, [sp, #116] ; 0x74 9510: e7f4 b.n 94fc _lv_memset_ff(mask_buf, mask_buf_size); 9512: 991c ldr r1, [sp, #112] ; 0x70 9514: 9817 ldr r0, [sp, #92] ; 0x5c 9516: 4b2d ldr r3, [pc, #180] ; (95cc ) 9518: 4798 blx r3 px_i = 0; 951a: 2300 movs r3, #0 951c: 930f str r3, [sp, #60] ; 0x3c 951e: e771 b.n 9404 } } } /*Flush the last part*/ if(blend_area.y1 != blend_area.y2) { 9520: f9bd 309e ldrsh.w r3, [sp, #158] ; 0x9e 9524: f9bd 209a ldrsh.w r2, [sp, #154] ; 0x9a 9528: 429a cmp r2, r3 952a: d00f beq.n 954c blend_area.y2--; 952c: 3b01 subs r3, #1 952e: 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); 9532: 9a08 ldr r2, [sp, #32] 9534: 7b93 ldrb r3, [r2, #14] 9536: 9302 str r3, [sp, #8] 9538: 7813 ldrb r3, [r2, #0] 953a: 9301 str r3, [sp, #4] 953c: 9b1d ldr r3, [sp, #116] ; 0x74 953e: 9300 str r3, [sp, #0] 9540: 9b17 ldr r3, [sp, #92] ; 0x5c 9542: 9a1a ldr r2, [sp, #104] ; 0x68 9544: a926 add r1, sp, #152 ; 0x98 9546: 9823 ldr r0, [sp, #140] ; 0x8c 9548: 4c1f ldr r4, [pc, #124] ; (95c8 ) 954a: 47a0 blx r4 } _lv_mem_buf_release(mask_buf); 954c: 9817 ldr r0, [sp, #92] ; 0x5c 954e: 4c20 ldr r4, [pc, #128] ; (95d0 ) 9550: 47a0 blx r4 _lv_mem_buf_release(map2); 9552: 981a ldr r0, [sp, #104] ; 0x68 9554: 47a0 blx r4 } } } 9556: b03d add sp, #244 ; 0xf4 9558: 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) { 955c: 9b19 ldr r3, [sp, #100] ; 0x64 955e: bb13 cbnz r3, 95a6 9560: 2301 movs r3, #1 9562: 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); 9564: a83a add r0, sp, #232 ; 0xe8 9566: 4b1b ldr r3, [pc, #108] ; (95d4 ) 9568: 4798 blx r3 956a: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0 956e: f67f ad6a bls.w 9046 lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 9572: f44f 7070 mov.w r0, #960 ; 0x3c0 9576: 4c18 ldr r4, [pc, #96] ; (95d8 ) 9578: 47a0 blx r4 957a: 901a str r0, [sp, #104] ; 0x68 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 957c: f44f 70f0 mov.w r0, #480 ; 0x1e0 9580: 47a0 blx r4 9582: 9017 str r0, [sp, #92] ; 0x5c _lv_memset_00(&trans_dsc, sizeof(lv_img_transform_dsc_t)); 9584: 2148 movs r1, #72 ; 0x48 9586: a828 add r0, sp, #160 ; 0xa0 9588: 4b0e ldr r3, [pc, #56] ; (95c4 ) 958a: 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); 958c: f44f 73f0 mov.w r3, #480 ; 0x1e0 9590: 931c str r3, [sp, #112] ; 0x70 if(alpha_byte) cf = LV_IMG_CF_TRUE_COLOR_ALPHA; 9592: 9b06 ldr r3, [sp, #24] 9594: 2b00 cmp r3, #0 9596: f47f ad7b bne.w 9090 else if(chroma_key) cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED; 959a: 9b0a ldr r3, [sp, #40] ; 0x28 959c: 2b00 cmp r3, #0 959e: bf0c ite eq 95a0: 2204 moveq r2, #4 95a2: 2206 movne r2, #6 95a4: e575 b.n 9092 if(other_mask_cnt == 0 && !transform && !chroma_key && draw_dsc->recolor_opa == LV_OPA_TRANSP && alpha_byte) { 95a6: 2301 movs r3, #1 95a8: 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); 95aa: a83a add r0, sp, #232 ; 0xe8 95ac: 4b09 ldr r3, [pc, #36] ; (95d4 ) 95ae: 4798 blx r3 95b0: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0 95b4: f67f ad47 bls.w 9046 95b8: f44f 73f0 mov.w r3, #480 ; 0x1e0 95bc: 931c str r3, [sp, #112] ; 0x70 95be: e546 b.n 904e 95c0: 0000be05 .word 0x0000be05 95c4: 00012b1f .word 0x00012b1f 95c8: 00008269 .word 0x00008269 95cc: 00012bd5 .word 0x00012bd5 95d0: 00012559 .word 0x00012559 95d4: 000114e5 .word 0x000114e5 95d8: 00012925 .word 0x00012925 000095dc : static void show_error(const lv_area_t * coords, const lv_area_t * clip_area, const char * msg) { 95dc: b570 push {r4, r5, r6, lr} 95de: b09e sub sp, #120 ; 0x78 95e0: 4604 mov r4, r0 95e2: 460d mov r5, r1 95e4: 4616 mov r6, r2 lv_draw_rect_dsc_t rect_dsc; lv_draw_rect_dsc_init(&rect_dsc); 95e6: a809 add r0, sp, #36 ; 0x24 95e8: 4b0b ldr r3, [pc, #44] ; (9618 ) 95ea: 4798 blx r3 rect_dsc.bg_color = LV_COLOR_WHITE; 95ec: 4b0b ldr r3, [pc, #44] ; (961c ) 95ee: 881b ldrh r3, [r3, #0] 95f0: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 lv_draw_rect(coords, clip_area, &rect_dsc); 95f4: aa09 add r2, sp, #36 ; 0x24 95f6: 4629 mov r1, r5 95f8: 4620 mov r0, r4 95fa: 4b09 ldr r3, [pc, #36] ; (9620 ) 95fc: 4798 blx r3 lv_draw_label_dsc_t label_dsc; lv_draw_label_dsc_init(&label_dsc); 95fe: a802 add r0, sp, #8 9600: 4b08 ldr r3, [pc, #32] ; (9624 ) 9602: 4798 blx r3 lv_draw_label(coords, clip_area, &label_dsc, msg, NULL); 9604: 2300 movs r3, #0 9606: 9300 str r3, [sp, #0] 9608: 4633 mov r3, r6 960a: aa02 add r2, sp, #8 960c: 4629 mov r1, r5 960e: 4620 mov r0, r4 9610: 4c05 ldr r4, [pc, #20] ; (9628 ) 9612: 47a0 blx r4 } 9614: b01e add sp, #120 ; 0x78 9616: bd70 pop {r4, r5, r6, pc} 9618: 0000c251 .word 0x0000c251 961c: 00024ca0 .word 0x00024ca0 9620: 0000c319 .word 0x0000c319 9624: 000099b5 .word 0x000099b5 9628: 00009a0d .word 0x00009a0d 0000962c : { 962c: b510 push {r4, lr} 962e: 4604 mov r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_img_dsc_t)); 9630: 2110 movs r1, #16 9632: 4b0c ldr r3, [pc, #48] ; (9664 ) 9634: 4798 blx r3 dsc->recolor = LV_COLOR_BLACK; 9636: 7b23 ldrb r3, [r4, #12] 9638: f36f 0304 bfc r3, #0, #5 963c: 7323 strb r3, [r4, #12] 963e: 89a3 ldrh r3, [r4, #12] 9640: f36f 134a bfc r3, #5, #6 9644: 81a3 strh r3, [r4, #12] 9646: 0a1b lsrs r3, r3, #8 9648: f36f 03c7 bfc r3, #3, #5 964c: 7363 strb r3, [r4, #13] dsc->opa = LV_OPA_COVER; 964e: 23ff movs r3, #255 ; 0xff 9650: 7023 strb r3, [r4, #0] dsc->zoom = LV_IMG_ZOOM_NONE; 9652: f44f 7380 mov.w r3, #256 ; 0x100 9656: 8123 strh r3, [r4, #8] dsc->antialias = LV_ANTIALIAS; 9658: 7be3 ldrb r3, [r4, #15] 965a: f043 0301 orr.w r3, r3, #1 965e: 73e3 strb r3, [r4, #15] 9660: bd10 pop {r4, pc} 9662: bf00 nop 9664: 00012b1f .word 0x00012b1f 00009668 : switch(cf) { 9668: 3804 subs r0, #4 966a: 280a cmp r0, #10 966c: d813 bhi.n 9696 966e: e8df f000 tbb [pc, r0] 9672: 0806 .short 0x0806 9674: 0e0c0a06 .word 0x0e0c0a06 9678: 0e0c0a10 .word 0x0e0c0a10 967c: 10 .byte 0x10 967d: 00 .byte 0x00 px_size = LV_COLOR_SIZE; 967e: 2010 movs r0, #16 9680: 4770 bx lr px_size = LV_IMG_PX_SIZE_ALPHA_BYTE << 3; 9682: 2018 movs r0, #24 break; 9684: 4770 bx lr px_size = 1; 9686: 2001 movs r0, #1 break; 9688: 4770 bx lr px_size = 2; 968a: 2002 movs r0, #2 break; 968c: 4770 bx lr px_size = 4; 968e: 2004 movs r0, #4 break; 9690: 4770 bx lr px_size = 8; 9692: 2008 movs r0, #8 break; 9694: 4770 bx lr px_size = 0; 9696: 2000 movs r0, #0 } 9698: 4770 bx lr 0000969a : switch(cf) { 969a: 2803 cmp r0, #3 969c: d005 beq.n 96aa 969e: d302 bcc.n 96a6 96a0: 3806 subs r0, #6 96a2: 2804 cmp r0, #4 96a4: d901 bls.n 96aa is_chroma_keyed = false; 96a6: 2000 movs r0, #0 96a8: 4770 bx lr is_chroma_keyed = true; 96aa: 2001 movs r0, #1 } 96ac: 4770 bx lr 000096ae : switch(cf) { 96ae: 3802 subs r0, #2 96b0: 280c cmp r0, #12 96b2: d808 bhi.n 96c6 96b4: e8df f000 tbb [pc, r0] 96b8: 09070709 .word 0x09070709 96bc: 09090907 .word 0x09090907 96c0: 09090909 .word 0x09090909 96c4: 09 .byte 0x09 96c5: 00 .byte 0x00 has_alpha = false; 96c6: 2000 movs r0, #0 96c8: 4770 bx lr has_alpha = true; 96ca: 2001 movs r0, #1 } 96cc: 4770 bx lr ... 000096d0 : { 96d0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 96d4: b08f sub sp, #60 ; 0x3c 96d6: 4605 mov r5, r0 96d8: 460e mov r6, r1 if(src == NULL) { 96da: b13a cbz r2, 96ec 96dc: 461c mov r4, r3 96de: 4610 mov r0, r2 if(dsc->opa <= LV_OPA_MIN) return; 96e0: 781b ldrb r3, [r3, #0] 96e2: 2b05 cmp r3, #5 96e4: d810 bhi.n 9708 } 96e6: b00f add sp, #60 ; 0x3c 96e8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} LV_LOG_WARN("Image draw: src is NULL"); 96ec: 4b84 ldr r3, [pc, #528] ; (9900 ) 96ee: 9300 str r3, [sp, #0] 96f0: 4b84 ldr r3, [pc, #528] ; (9904 ) 96f2: 224d movs r2, #77 ; 0x4d 96f4: 4984 ldr r1, [pc, #528] ; (9908 ) 96f6: 2002 movs r0, #2 96f8: 4c84 ldr r4, [pc, #528] ; (990c ) 96fa: 47a0 blx r4 show_error(coords, mask, "No\ndata"); 96fc: 4a84 ldr r2, [pc, #528] ; (9910 ) 96fe: 4631 mov r1, r6 9700: 4628 mov r0, r5 9702: 4b84 ldr r3, [pc, #528] ; (9914 ) 9704: 4798 blx r3 return; 9706: e7ee b.n 96e6 lv_img_cache_entry_t * cdsc = _lv_img_cache_open(src, draw_dsc->recolor); 9708: 89a1 ldrh r1, [r4, #12] 970a: 4b83 ldr r3, [pc, #524] ; (9918 ) 970c: 4798 blx r3 if(cdsc == NULL) return LV_RES_INV; 970e: 4607 mov r7, r0 9710: 2800 cmp r0, #0 9712: f000 80b5 beq.w 9880 bool chroma_keyed = lv_img_cf_is_chroma_keyed(cdsc->dec_dsc.header.cf); 9716: f890 900c ldrb.w r9, [r0, #12] 971a: f009 091f and.w r9, r9, #31 971e: 4648 mov r0, r9 9720: 4b7e ldr r3, [pc, #504] ; (991c ) 9722: 4798 blx r3 9724: 4680 mov r8, r0 bool alpha_byte = lv_img_cf_has_alpha(cdsc->dec_dsc.header.cf); 9726: 4648 mov r0, r9 9728: 4b7d ldr r3, [pc, #500] ; (9920 ) 972a: 4798 blx r3 972c: 4681 mov r9, r0 if(cdsc->dec_dsc.error_msg != NULL) { 972e: 69bb ldr r3, [r7, #24] 9730: b16b cbz r3, 974e LV_LOG_WARN("Image draw error"); 9732: 4b7c ldr r3, [pc, #496] ; (9924 ) 9734: 9300 str r3, [sp, #0] 9736: 4b7c ldr r3, [pc, #496] ; (9928 ) 9738: 22f7 movs r2, #247 ; 0xf7 973a: 4973 ldr r1, [pc, #460] ; (9908 ) 973c: 2002 movs r0, #2 973e: 4c73 ldr r4, [pc, #460] ; (990c ) 9740: 47a0 blx r4 show_error(coords, clip_area, cdsc->dec_dsc.error_msg); 9742: 69ba ldr r2, [r7, #24] 9744: 4631 mov r1, r6 9746: 4628 mov r0, r5 9748: 4b72 ldr r3, [pc, #456] ; (9914 ) 974a: 4798 blx r3 974c: e7cb b.n 96e6 else if(cdsc->dec_dsc.img_data) { 974e: 693b ldr r3, [r7, #16] 9750: 2b00 cmp r3, #0 9752: d049 beq.n 97e8 9754: 1e6b subs r3, r5, #1 9756: 1de8 adds r0, r5, #7 9758: aa0a add r2, sp, #40 ; 0x28 975a: f813 1f01 ldrb.w r1, [r3, #1]! 975e: f802 1b01 strb.w r1, [r2], #1 while(len) { 9762: 4298 cmp r0, r3 9764: d1f9 bne.n 975a if(draw_dsc->angle || draw_dsc->zoom != LV_IMG_ZOOM_NONE) { 9766: 8863 ldrh r3, [r4, #2] 9768: b91b cbnz r3, 9772 976a: 8922 ldrh r2, [r4, #8] 976c: f5b2 7f80 cmp.w r2, #256 ; 0x100 9770: d028 beq.n 97c4 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 9772: 88ea ldrh r2, [r5, #6] 9774: 3201 adds r2, #1 9776: 8869 ldrh r1, [r5, #2] 9778: 1a52 subs r2, r2, r1 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 977a: 88a9 ldrh r1, [r5, #4] 977c: 3101 adds r1, #1 977e: 8828 ldrh r0, [r5, #0] 9780: 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); 9782: 1d20 adds r0, r4, #4 9784: 9001 str r0, [sp, #4] 9786: 8920 ldrh r0, [r4, #8] 9788: 9000 str r0, [sp, #0] 978a: b21b sxth r3, r3 978c: b212 sxth r2, r2 978e: b209 sxth r1, r1 9790: a80a add r0, sp, #40 ; 0x28 9792: f8df a1b8 ldr.w sl, [pc, #440] ; 994c 9796: 47d0 blx sl map_area_rot.x1 += coords->x1; 9798: 882a ldrh r2, [r5, #0] 979a: f8bd 3028 ldrh.w r3, [sp, #40] ; 0x28 979e: 4413 add r3, r2 97a0: f8ad 3028 strh.w r3, [sp, #40] ; 0x28 map_area_rot.y1 += coords->y1; 97a4: 886b ldrh r3, [r5, #2] 97a6: f8bd 102a ldrh.w r1, [sp, #42] ; 0x2a 97aa: 4419 add r1, r3 97ac: f8ad 102a strh.w r1, [sp, #42] ; 0x2a map_area_rot.x2 += coords->x1; 97b0: f8bd 102c ldrh.w r1, [sp, #44] ; 0x2c 97b4: 440a add r2, r1 97b6: f8ad 202c strh.w r2, [sp, #44] ; 0x2c map_area_rot.y2 += coords->y1; 97ba: f8bd 202e ldrh.w r2, [sp, #46] ; 0x2e 97be: 4413 add r3, r2 97c0: f8ad 302e strh.w r3, [sp, #46] ; 0x2e union_ok = _lv_area_intersect(&mask_com, clip_area, &map_area_rot); 97c4: aa0a add r2, sp, #40 ; 0x28 97c6: 4631 mov r1, r6 97c8: a80c add r0, sp, #48 ; 0x30 97ca: 4b58 ldr r3, [pc, #352] ; (992c ) 97cc: 4798 blx r3 if(union_ok == false) { 97ce: 2800 cmp r0, #0 97d0: d089 beq.n 96e6 lv_draw_map(coords, &mask_com, cdsc->dec_dsc.img_data, draw_dsc, chroma_keyed, alpha_byte); 97d2: 693a ldr r2, [r7, #16] 97d4: f8cd 9004 str.w r9, [sp, #4] 97d8: f8cd 8000 str.w r8, [sp] 97dc: 4623 mov r3, r4 97de: a90c add r1, sp, #48 ; 0x30 97e0: 4628 mov r0, r5 97e2: 4c53 ldr r4, [pc, #332] ; (9930 ) 97e4: 47a0 blx r4 97e6: e77e b.n 96e6 union_ok = _lv_area_intersect(&mask_com, clip_area, coords); 97e8: 462a mov r2, r5 97ea: 4631 mov r1, r6 97ec: a808 add r0, sp, #32 97ee: 4b4f ldr r3, [pc, #316] ; (992c ) 97f0: 4798 blx r3 if(union_ok == false) { 97f2: 2800 cmp r0, #0 97f4: f43f af77 beq.w 96e6 97f8: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 97fc: 3301 adds r3, #1 97fe: f8bd 2020 ldrh.w r2, [sp, #32] 9802: 1a9b subs r3, r3, r2 9804: b21b sxth r3, r3 9806: 9303 str r3, [sp, #12] uint8_t * buf = _lv_mem_buf_get(lv_area_get_width(&mask_com) * 9808: eb03 0043 add.w r0, r3, r3, lsl #1 980c: 4b49 ldr r3, [pc, #292] ; (9934 ) 980e: 4798 blx r3 9810: 9002 str r0, [sp, #8] 9812: f10d 021f add.w r2, sp, #31 uint8_t * d8 = (uint8_t *)dst; 9816: ab0a add r3, sp, #40 ; 0x28 while(len) { 9818: a80c add r0, sp, #48 ; 0x30 *d8 = *s8; 981a: f812 1f01 ldrb.w r1, [r2, #1]! 981e: f803 1b01 strb.w r1, [r3], #1 while(len) { 9822: 4283 cmp r3, r0 9824: d1f9 bne.n 981a lv_area_set_height(&line, 1); 9826: 2101 movs r1, #1 9828: a80a add r0, sp, #40 ; 0x28 982a: 4b43 ldr r3, [pc, #268] ; (9938 ) 982c: 4798 blx r3 int32_t x = mask_com.x1 - coords->x1; 982e: f9bd 3020 ldrsh.w r3, [sp, #32] 9832: f9b5 2000 ldrsh.w r2, [r5] int32_t y = mask_com.y1 - coords->y1; 9836: f9bd a022 ldrsh.w sl, [sp, #34] ; 0x22 983a: f9b5 1002 ldrsh.w r1, [r5, #2] 983e: ebaa 0101 sub.w r1, sl, r1 9842: 4608 mov r0, r1 for(row = mask_com.y1; row <= mask_com.y2; row++) { 9844: f9bd 1026 ldrsh.w r1, [sp, #38] ; 0x26 9848: 458a cmp sl, r1 984a: dc55 bgt.n 98f8 union_ok = _lv_area_intersect(&mask_line, clip_area, &line); 984c: f8df b0dc ldr.w fp, [pc, #220] ; 992c read_res = lv_img_decoder_read_line(&cdsc->dec_dsc, x, y, width, buf); 9850: 1a9b subs r3, r3, r2 9852: b21b sxth r3, r3 9854: 9305 str r3, [sp, #20] 9856: 9507 str r5, [sp, #28] 9858: 9406 str r4, [sp, #24] 985a: 4644 mov r4, r8 985c: 4680 mov r8, r0 985e: e023 b.n 98a8 9860: 9d07 ldr r5, [sp, #28] lv_img_decoder_close(&cdsc->dec_dsc); 9862: 9804 ldr r0, [sp, #16] 9864: 4b35 ldr r3, [pc, #212] ; (993c ) 9866: 4798 blx r3 LV_LOG_WARN("Image draw can't read the line"); 9868: 4b35 ldr r3, [pc, #212] ; (9940 ) 986a: 9300 str r3, [sp, #0] 986c: 4b2e ldr r3, [pc, #184] ; (9928 ) 986e: f44f 729a mov.w r2, #308 ; 0x134 9872: 4925 ldr r1, [pc, #148] ; (9908 ) 9874: 2002 movs r0, #2 9876: 4c25 ldr r4, [pc, #148] ; (990c ) 9878: 47a0 blx r4 _lv_mem_buf_release(buf); 987a: 9802 ldr r0, [sp, #8] 987c: 4b31 ldr r3, [pc, #196] ; (9944 ) 987e: 4798 blx r3 LV_LOG_WARN("Image draw error"); 9880: 4b28 ldr r3, [pc, #160] ; (9924 ) 9882: 9300 str r3, [sp, #0] 9884: 4b1f ldr r3, [pc, #124] ; (9904 ) 9886: 2258 movs r2, #88 ; 0x58 9888: 491f ldr r1, [pc, #124] ; (9908 ) 988a: 2002 movs r0, #2 988c: 4c1f ldr r4, [pc, #124] ; (990c ) 988e: 47a0 blx r4 show_error(coords, mask, "No\ndata"); 9890: 4a1f ldr r2, [pc, #124] ; (9910 ) 9892: 4631 mov r1, r6 9894: 4628 mov r0, r5 9896: 4b1f ldr r3, [pc, #124] ; (9914 ) 9898: 4798 blx r3 return; 989a: e724 b.n 96e6 for(row = mask_com.y1; row <= mask_com.y2; row++) { 989c: f10a 0a01 add.w sl, sl, #1 98a0: f9bd 3026 ldrsh.w r3, [sp, #38] ; 0x26 98a4: 459a cmp sl, r3 98a6: dc27 bgt.n 98f8 union_ok = _lv_area_intersect(&mask_line, clip_area, &line); 98a8: aa0a add r2, sp, #40 ; 0x28 98aa: 4631 mov r1, r6 98ac: a80c add r0, sp, #48 ; 0x30 98ae: 47d8 blx fp if(union_ok == false) continue; 98b0: 2800 cmp r0, #0 98b2: d0f3 beq.n 989c read_res = lv_img_decoder_read_line(&cdsc->dec_dsc, x, y, width, buf); 98b4: 9704 str r7, [sp, #16] 98b6: 9b02 ldr r3, [sp, #8] 98b8: 9300 str r3, [sp, #0] 98ba: 9b03 ldr r3, [sp, #12] 98bc: fa0f f288 sxth.w r2, r8 98c0: 9905 ldr r1, [sp, #20] 98c2: 4638 mov r0, r7 98c4: 4d20 ldr r5, [pc, #128] ; (9948 ) 98c6: 47a8 blx r5 if(read_res != LV_RES_OK) { 98c8: 2801 cmp r0, #1 98ca: d1c9 bne.n 9860 lv_draw_map(&line, &mask_line, buf, draw_dsc, chroma_keyed, alpha_byte); 98cc: f8cd 9004 str.w r9, [sp, #4] 98d0: 9400 str r4, [sp, #0] 98d2: 9b06 ldr r3, [sp, #24] 98d4: 9a02 ldr r2, [sp, #8] 98d6: a90c add r1, sp, #48 ; 0x30 98d8: a80a add r0, sp, #40 ; 0x28 98da: 4d15 ldr r5, [pc, #84] ; (9930 ) 98dc: 47a8 blx r5 line.y1++; 98de: f8bd 302a ldrh.w r3, [sp, #42] ; 0x2a 98e2: 3301 adds r3, #1 98e4: f8ad 302a strh.w r3, [sp, #42] ; 0x2a line.y2++; 98e8: f8bd 302e ldrh.w r3, [sp, #46] ; 0x2e 98ec: 3301 adds r3, #1 98ee: f8ad 302e strh.w r3, [sp, #46] ; 0x2e y++; 98f2: f108 0801 add.w r8, r8, #1 98f6: e7d1 b.n 989c _lv_mem_buf_release(buf); 98f8: 9802 ldr r0, [sp, #8] 98fa: 4b12 ldr r3, [pc, #72] ; (9944 ) 98fc: 4798 blx r3 98fe: e6f2 b.n 96e6 9900: 00024cf4 .word 0x00024cf4 9904: 00024ca4 .word 0x00024ca4 9908: 00024cc4 .word 0x00024cc4 990c: 00012245 .word 0x00012245 9910: 00024d0c .word 0x00024d0c 9914: 000095dd .word 0x000095dd 9918: 0000f1e9 .word 0x0000f1e9 991c: 0000969b .word 0x0000969b 9920: 000096af .word 0x000096af 9924: 00024d14 .word 0x00024d14 9928: 00024cb0 .word 0x00024cb0 992c: 00011501 .word 0x00011501 9930: 00008db5 .word 0x00008db5 9934: 00012925 .word 0x00012925 9938: 000114db .word 0x000114db 993c: 0000ff1d .word 0x0000ff1d 9940: 00024d28 .word 0x00024d28 9944: 00012559 .word 0x00012559 9948: 0000fef9 .word 0x0000fef9 994c: 0000ec4d .word 0x0000ec4d 00009950 : if(src == NULL) return img_src_type; 9950: b158 cbz r0, 996a if(u8_p[0] >= 0x20 && u8_p[0] <= 0x7F) { 9952: 7802 ldrb r2, [r0, #0] 9954: f1a2 0320 sub.w r3, r2, #32 9958: b2db uxtb r3, r3 995a: 2b5f cmp r3, #95 ; 0x5f 995c: d907 bls.n 996e else if(u8_p[0] >= 0x80) { 995e: b252 sxtb r2, r2 img_src_type = LV_IMG_SRC_VARIABLE; /*`lv_img_dsc_t` is design to the first byte < 0x20*/ 9960: 2a00 cmp r2, #0 9962: bfb4 ite lt 9964: 2002 movlt r0, #2 9966: 2000 movge r0, #0 9968: 4770 bx lr if(src == NULL) return img_src_type; 996a: 2003 movs r0, #3 996c: 4770 bx lr img_src_type = LV_IMG_SRC_FILE; /*If it's an ASCII character then it's file name*/ 996e: 2001 movs r0, #1 } 9970: 4770 bx lr 00009972 : */ static uint8_t hex_char_to_num(char hex) { uint8_t result = 0; if(hex >= '0' && hex <= '9') { 9972: f1a0 0330 sub.w r3, r0, #48 ; 0x30 9976: b2db uxtb r3, r3 9978: 2b09 cmp r3, #9 997a: d917 bls.n 99ac result = hex - '0'; } else { if(hex >= 'a') hex -= 'a' - 'A'; /*Convert to upper case*/ 997c: 2860 cmp r0, #96 ; 0x60 997e: bf84 itt hi 9980: 3820 subhi r0, #32 9982: b2c0 uxtbhi r0, r0 switch(hex) { 9984: 3841 subs r0, #65 ; 0x41 9986: 2805 cmp r0, #5 9988: d80e bhi.n 99a8 998a: e8df f000 tbb [pc, r0] 998e: 0311 .short 0x0311 9990: 0b090705 .word 0x0b090705 case 'A': result = 10; break; case 'B': result = 11; 9994: 200b movs r0, #11 9996: 4770 bx lr break; case 'C': result = 12; 9998: 200c movs r0, #12 break; 999a: 4770 bx lr case 'D': result = 13; 999c: 200d movs r0, #13 break; 999e: 4770 bx lr case 'E': result = 14; 99a0: 200e movs r0, #14 break; 99a2: 4770 bx lr case 'F': result = 15; 99a4: 200f movs r0, #15 break; 99a6: 4770 bx lr default: result = 0; 99a8: 2000 movs r0, #0 break; 99aa: 4770 bx lr result = hex - '0'; 99ac: 4618 mov r0, r3 99ae: 4770 bx lr result = 10; 99b0: 200a movs r0, #10 } } return result; } 99b2: 4770 bx lr 000099b4 : { 99b4: b510 push {r4, lr} 99b6: 4604 mov r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_label_dsc_t)); 99b8: 211c movs r1, #28 99ba: 4b12 ldr r3, [pc, #72] ; (9a04 ) 99bc: 4798 blx r3 dsc->opa = LV_OPA_COVER; 99be: 23ff movs r3, #255 ; 0xff 99c0: 7223 strb r3, [r4, #8] dsc->color = LV_COLOR_BLACK; 99c2: 7823 ldrb r3, [r4, #0] 99c4: f36f 0304 bfc r3, #0, #5 99c8: 7023 strb r3, [r4, #0] 99ca: 8823 ldrh r3, [r4, #0] 99cc: f36f 134a bfc r3, #5, #6 99d0: 8023 strh r3, [r4, #0] 99d2: 0a1b lsrs r3, r3, #8 99d4: f36f 03c7 bfc r3, #3, #5 99d8: 7063 strb r3, [r4, #1] dsc->font = LV_THEME_DEFAULT_FONT_NORMAL; 99da: 4b0b ldr r3, [pc, #44] ; (9a08 ) 99dc: 6063 str r3, [r4, #4] dsc->sel_start = LV_DRAW_LABEL_NO_TXT_SEL; 99de: f64f 73ff movw r3, #65535 ; 0xffff 99e2: 81e3 strh r3, [r4, #14] dsc->sel_end = LV_DRAW_LABEL_NO_TXT_SEL; 99e4: 8223 strh r3, [r4, #16] dsc->sel_color = LV_COLOR_BLUE; 99e6: 78a3 ldrb r3, [r4, #2] 99e8: f043 031f orr.w r3, r3, #31 99ec: 70a3 strb r3, [r4, #2] 99ee: 8863 ldrh r3, [r4, #2] 99f0: f36f 134a bfc r3, #5, #6 99f4: 8063 strh r3, [r4, #2] 99f6: 0a1b lsrs r3, r3, #8 99f8: f36f 03c7 bfc r3, #3, #5 99fc: 70e3 strb r3, [r4, #3] dsc->bidi_dir = LV_BIDI_DIR_LTR; 99fe: 2300 movs r3, #0 9a00: 75a3 strb r3, [r4, #22] 9a02: bd10 pop {r4, pc} 9a04: 00012b1f .word 0x00012b1f 9a08: 20000010 .word 0x20000010 00009a0c : { 9a0c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 9a10: b0d9 sub sp, #356 ; 0x164 9a12: 9c62 ldr r4, [sp, #392] ; 0x188 if(dsc->opa <= LV_OPA_MIN) return; 9a14: 7a15 ldrb r5, [r2, #8] 9a16: 2d05 cmp r5, #5 9a18: d901 bls.n 9a1e if(txt[0] == '\0') return; 9a1a: 781d ldrb r5, [r3, #0] 9a1c: b915 cbnz r5, 9a24 } 9a1e: b059 add sp, #356 ; 0x164 9a20: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 9a24: 930a str r3, [sp, #40] ; 0x28 9a26: 4693 mov fp, r2 9a28: 460a mov r2, r1 9a2a: 910d str r1, [sp, #52] ; 0x34 9a2c: 4605 mov r5, r0 9a2e: 9013 str r0, [sp, #76] ; 0x4c const lv_font_t * font = dsc->font; 9a30: f8db 3004 ldr.w r3, [fp, #4] 9a34: 9305 str r3, [sp, #20] bool clip_ok = _lv_area_intersect(&clipped_area, coords, mask); 9a36: 4601 mov r1, r0 9a38: a856 add r0, sp, #344 ; 0x158 9a3a: 4baa ldr r3, [pc, #680] ; (9ce4 ) 9a3c: 4798 blx r3 if(!clip_ok) return; 9a3e: 2800 cmp r0, #0 9a40: d0ed beq.n 9a1e if((dsc->flag & LV_TXT_FLAG_EXPAND) == 0) { 9a42: f89b 2017 ldrb.w r2, [fp, #23] 9a46: f012 0f02 tst.w r2, #2 9a4a: d121 bne.n 9a90 9a4c: 88ab ldrh r3, [r5, #4] 9a4e: 3301 adds r3, #1 9a50: 882a ldrh r2, [r5, #0] 9a52: 1a9b subs r3, r3, r2 w = lv_area_get_width(coords); 9a54: b21b sxth r3, r3 int32_t line_height_font = lv_font_get_line_height(font); 9a56: 9a05 ldr r2, [sp, #20] 9a58: f9b2 a008 ldrsh.w sl, [r2, #8] int32_t line_height = line_height_font + dsc->line_space; 9a5c: f9bb 900a ldrsh.w r9, [fp, #10] 9a60: 44d1 add r9, sl pos.x = coords->x1; 9a62: 9913 ldr r1, [sp, #76] ; 0x4c 9a64: f9b1 2000 ldrsh.w r2, [r1] 9a68: 921f str r2, [sp, #124] ; 0x7c pos.y = coords->y1; 9a6a: f9b1 0002 ldrsh.w r0, [r1, #2] x_ofs = dsc->ofs_x; 9a6e: f9bb 2012 ldrsh.w r2, [fp, #18] 9a72: 921a str r2, [sp, #104] ; 0x68 y_ofs = dsc->ofs_y; 9a74: f9bb 1014 ldrsh.w r1, [fp, #20] pos.y += y_ofs; 9a78: 1842 adds r2, r0, r1 9a7a: b292 uxth r2, r2 9a7c: b215 sxth r5, r2 if(hint && y_ofs == 0 && coords->y1 < 0) { 9a7e: 2c00 cmp r4, #0 9a80: d04a beq.n 9b18 9a82: 2900 cmp r1, #0 9a84: d14b bne.n 9b1e 9a86: 2800 cmp r0, #0 9a88: db14 blt.n 9ab4 pos.y += y_ofs; 9a8a: 950e str r5, [sp, #56] ; 0x38 uint32_t line_start = 0; 9a8c: 2600 movs r6, #0 9a8e: e029 b.n 9ae4 _lv_txt_get_size(&p, txt, dsc->font, dsc->letter_space, dsc->line_space, LV_COORD_MAX, 9a90: f9bb 300c ldrsh.w r3, [fp, #12] 9a94: 9202 str r2, [sp, #8] 9a96: f647 4218 movw r2, #31768 ; 0x7c18 9a9a: 9201 str r2, [sp, #4] 9a9c: f9bb 200a ldrsh.w r2, [fp, #10] 9aa0: 9200 str r2, [sp, #0] 9aa2: f8db 2004 ldr.w r2, [fp, #4] 9aa6: 990a ldr r1, [sp, #40] ; 0x28 9aa8: a83a add r0, sp, #232 ; 0xe8 9aaa: 4d8f ldr r5, [pc, #572] ; (9ce8 ) 9aac: 47a8 blx r5 w = p.x; 9aae: f9bd 30e8 ldrsh.w r3, [sp, #232] ; 0xe8 9ab2: e7d0 b.n 9a56 if(LV_MATH_ABS(hint->coord_y - coords->y1) > LV_LABEL_HINT_UPDATE_TH - 2 * line_height) { 9ab4: 68a1 ldr r1, [r4, #8] 9ab6: 1a08 subs r0, r1, r0 9ab8: ea80 71e0 eor.w r1, r0, r0, asr #31 9abc: eba1 71e0 sub.w r1, r1, r0, asr #31 9ac0: f5c9 7000 rsb r0, r9, #512 ; 0x200 9ac4: ebb1 0f40 cmp.w r1, r0, lsl #1 9ac8: dd05 ble.n 9ad6 hint->line_start = -1; 9aca: f04f 32ff mov.w r2, #4294967295 9ace: 6022 str r2, [r4, #0] pos.y += y_ofs; 9ad0: 950e str r5, [sp, #56] ; 0x38 uint32_t line_start = 0; 9ad2: 2600 movs r6, #0 9ad4: e006 b.n 9ae4 last_line_start = hint->line_start; 9ad6: 6826 ldr r6, [r4, #0] if(hint && last_line_start >= 0) { 9ad8: 2e00 cmp r6, #0 9ada: db23 blt.n 9b24 pos.y += hint->y; 9adc: 6861 ldr r1, [r4, #4] 9ade: 440a add r2, r1 9ae0: b212 sxth r2, r2 9ae2: 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); 9ae4: b21b sxth r3, r3 9ae6: 4619 mov r1, r3 9ae8: 9310 str r3, [sp, #64] ; 0x40 9aea: f9bb 200c ldrsh.w r2, [fp, #12] 9aee: f89b 3017 ldrb.w r3, [fp, #23] 9af2: 9300 str r3, [sp, #0] 9af4: 460b mov r3, r1 9af6: 9905 ldr r1, [sp, #20] 9af8: 980a ldr r0, [sp, #40] ; 0x28 9afa: 4430 add r0, r6 9afc: 4d7b ldr r5, [pc, #492] ; (9cec ) 9afe: 47a8 blx r5 9b00: 1983 adds r3, r0, r6 line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 9b02: 462f mov r7, r5 if(hint && pos.y >= -LV_LABEL_HINT_UPDATE_TH && hint->line_start < 0) { 9b04: f8df 81f8 ldr.w r8, [pc, #504] ; 9d00 9b08: 4631 mov r1, r6 9b0a: f8cd 9018 str.w r9, [sp, #24] 9b0e: 46d1 mov r9, sl 9b10: 9d0e ldr r5, [sp, #56] ; 0x38 9b12: 4626 mov r6, r4 9b14: 461c mov r4, r3 while(pos.y + line_height_font < mask->y1) { 9b16: e00f b.n 9b38 pos.y += y_ofs; 9b18: 950e str r5, [sp, #56] ; 0x38 uint32_t line_start = 0; 9b1a: 2600 movs r6, #0 9b1c: e7e2 b.n 9ae4 pos.y += y_ofs; 9b1e: 950e str r5, [sp, #56] ; 0x38 uint32_t line_start = 0; 9b20: 2600 movs r6, #0 9b22: e7df b.n 9ae4 pos.y += y_ofs; 9b24: 950e str r5, [sp, #56] ; 0x38 uint32_t line_start = 0; 9b26: 2600 movs r6, #0 9b28: e7dc b.n 9ae4 9b2a: 4621 mov r1, r4 if(txt[line_start] == '\0') return; 9b2c: f89a 3000 ldrb.w r3, [sl] 9b30: 2b00 cmp r3, #0 9b32: f43f af74 beq.w 9a1e line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 9b36: 4604 mov r4, r0 while(pos.y + line_height_font < mask->y1) { 9b38: eb05 0309 add.w r3, r5, r9 9b3c: 9a0d ldr r2, [sp, #52] ; 0x34 9b3e: f9b2 2002 ldrsh.w r2, [r2, #2] 9b42: 4293 cmp r3, r2 9b44: da20 bge.n 9b88 line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 9b46: 9b0a ldr r3, [sp, #40] ; 0x28 9b48: eb03 0a04 add.w sl, r3, r4 9b4c: f9bb 200c ldrsh.w r2, [fp, #12] 9b50: f89b 3017 ldrb.w r3, [fp, #23] 9b54: 9300 str r3, [sp, #0] 9b56: 9b10 ldr r3, [sp, #64] ; 0x40 9b58: 9905 ldr r1, [sp, #20] 9b5a: 4650 mov r0, sl 9b5c: 47b8 blx r7 9b5e: 4420 add r0, r4 9b60: 9b06 ldr r3, [sp, #24] 9b62: 441d add r5, r3 9b64: b22d sxth r5, r5 if(hint && pos.y >= -LV_LABEL_HINT_UPDATE_TH && hint->line_start < 0) { 9b66: 2e00 cmp r6, #0 9b68: d0df beq.n 9b2a 9b6a: 4545 cmp r5, r8 9b6c: dbdd blt.n 9b2a 9b6e: 6833 ldr r3, [r6, #0] 9b70: 2b00 cmp r3, #0 9b72: dada bge.n 9b2a hint->line_start = line_start; 9b74: 6034 str r4, [r6, #0] hint->y = pos.y - coords->y1; 9b76: 9a13 ldr r2, [sp, #76] ; 0x4c 9b78: f9b2 3002 ldrsh.w r3, [r2, #2] 9b7c: 1aeb subs r3, r5, r3 9b7e: 6073 str r3, [r6, #4] hint->coord_y = coords->y1; 9b80: f9b2 3002 ldrsh.w r3, [r2, #2] 9b84: 60b3 str r3, [r6, #8] 9b86: e7d0 b.n 9b2a 9b88: 460e mov r6, r1 9b8a: 9407 str r4, [sp, #28] 9b8c: f8dd 9018 ldr.w r9, [sp, #24] 9b90: 950e str r5, [sp, #56] ; 0x38 if(dsc->flag & LV_TXT_FLAG_CENTER) { 9b92: f89b 2017 ldrb.w r2, [fp, #23] 9b96: f012 0f04 tst.w r2, #4 9b9a: d12f bne.n 9bfc else if(dsc->flag & LV_TXT_FLAG_RIGHT) { 9b9c: f012 0f08 tst.w r2, #8 9ba0: d145 bne.n 9c2e lv_opa_t opa = dsc->opa; 9ba2: f89b 3008 ldrb.w r3, [fp, #8] 9ba6: 930b str r3, [sp, #44] ; 0x2c uint16_t sel_start = dsc->sel_start; 9ba8: f8bb 700e ldrh.w r7, [fp, #14] uint16_t sel_end = dsc->sel_end; 9bac: f8bb 3010 ldrh.w r3, [fp, #16] 9bb0: 4619 mov r1, r3 9bb2: 9308 str r3, [sp, #32] if(sel_start > sel_end) { 9bb4: 429f cmp r7, r3 9bb6: d902 bls.n 9bbe 9bb8: 463b mov r3, r7 sel_start = sel_end; 9bba: 460f mov r7, r1 sel_end = tmp; 9bbc: 9308 str r3, [sp, #32] if((dsc->decor & LV_TEXT_DECOR_UNDERLINE) || (dsc->decor & LV_TEXT_DECOR_STRIKETHROUGH)) { 9bbe: f89b 3018 ldrb.w r3, [fp, #24] 9bc2: f013 0f03 tst.w r3, #3 9bc6: d149 bne.n 9c5c lv_draw_rect_dsc_init(&draw_dsc_sel); 9bc8: a83d add r0, sp, #244 ; 0xf4 9bca: 4b49 ldr r3, [pc, #292] ; (9cf0 ) 9bcc: 4798 blx r3 draw_dsc_sel.bg_color = dsc->sel_color; 9bce: f8bb 3002 ldrh.w r3, [fp, #2] 9bd2: f8ad 30f6 strh.w r3, [sp, #246] ; 0xf6 9bd6: 9b0b ldr r3, [sp, #44] ; 0x2c 9bd8: 2bfa cmp r3, #250 ; 0xfa 9bda: bf88 it hi 9bdc: 23ff movhi r3, #255 ; 0xff 9bde: 9316 str r3, [sp, #88] ; 0x58 9be0: fa1f f389 uxth.w r3, r9 9be4: 9317 str r3, [sp, #92] ; 0x5c 9be6: f8bd 3038 ldrh.w r3, [sp, #56] ; 0x38 9bea: 9311 str r3, [sp, #68] ; 0x44 while(txt[line_start] != '\0') { 9bec: 9d1f ldr r5, [sp, #124] ; 0x7c uint16_t par_start = 0; 9bee: 2300 movs r3, #0 9bf0: 9319 str r3, [sp, #100] ; 0x64 9bf2: 46ba mov sl, r7 9bf4: 46d8 mov r8, fp 9bf6: 46b3 mov fp, r6 while(txt[line_start] != '\0') { 9bf8: f000 bdd3 b.w a7a2 line_width = _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 9bfc: f9bb 300c ldrsh.w r3, [fp, #12] 9c00: 1ba1 subs r1, r4, r6 9c02: 9200 str r2, [sp, #0] 9c04: 9a05 ldr r2, [sp, #20] 9c06: b289 uxth r1, r1 9c08: 980a ldr r0, [sp, #40] ; 0x28 9c0a: 4430 add r0, r6 9c0c: 4c39 ldr r4, [pc, #228] ; (9cf4 ) 9c0e: 47a0 blx r4 9c10: 9a13 ldr r2, [sp, #76] ; 0x4c 9c12: 8893 ldrh r3, [r2, #4] 9c14: 3301 adds r3, #1 9c16: 8812 ldrh r2, [r2, #0] 9c18: 1a9b subs r3, r3, r2 pos.x += (lv_area_get_width(coords) - line_width) / 2; 9c1a: b21b sxth r3, r3 9c1c: 1a18 subs r0, r3, r0 9c1e: eb00 70d0 add.w r0, r0, r0, lsr #31 9c22: 9b1f ldr r3, [sp, #124] ; 0x7c 9c24: eb03 0360 add.w r3, r3, r0, asr #1 9c28: b21b sxth r3, r3 9c2a: 931f str r3, [sp, #124] ; 0x7c 9c2c: e7b9 b.n 9ba2 line_width = _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 9c2e: f9bb 300c ldrsh.w r3, [fp, #12] 9c32: 9907 ldr r1, [sp, #28] 9c34: 1b89 subs r1, r1, r6 9c36: 9200 str r2, [sp, #0] 9c38: 9a05 ldr r2, [sp, #20] 9c3a: b289 uxth r1, r1 9c3c: 980a ldr r0, [sp, #40] ; 0x28 9c3e: 4430 add r0, r6 9c40: 4c2c ldr r4, [pc, #176] ; (9cf4 ) 9c42: 47a0 blx r4 9c44: 9a13 ldr r2, [sp, #76] ; 0x4c 9c46: 8893 ldrh r3, [r2, #4] 9c48: 3301 adds r3, #1 9c4a: 8812 ldrh r2, [r2, #0] 9c4c: 1a9b subs r3, r3, r2 pos.x += lv_area_get_width(coords) - line_width; 9c4e: b21b sxth r3, r3 9c50: 1a1b subs r3, r3, r0 9c52: 9a1f ldr r2, [sp, #124] ; 0x7c 9c54: 4413 add r3, r2 9c56: b21b sxth r3, r3 9c58: 931f str r3, [sp, #124] ; 0x7c 9c5a: e7a2 b.n 9ba2 lv_draw_line_dsc_init(&line_dsc); 9c5c: a853 add r0, sp, #332 ; 0x14c 9c5e: 4b26 ldr r3, [pc, #152] ; (9cf8 ) 9c60: 4798 blx r3 line_dsc.color = dsc->color; 9c62: f8bb 3000 ldrh.w r3, [fp] 9c66: f8ad 314c strh.w r3, [sp, #332] ; 0x14c line_dsc.width = (dsc->font->line_height + 5) / 10; /*+5 for rounding*/ 9c6a: f8db 3004 ldr.w r3, [fp, #4] 9c6e: f9b3 3008 ldrsh.w r3, [r3, #8] 9c72: 3305 adds r3, #5 9c74: 4a21 ldr r2, [pc, #132] ; (9cfc ) 9c76: fb82 1203 smull r1, r2, r2, r3 9c7a: 17db asrs r3, r3, #31 9c7c: ebc3 03a2 rsb r3, r3, r2, asr #2 9c80: f8ad 314e strh.w r3, [sp, #334] ; 0x14e line_dsc.opa = dsc->opa; 9c84: f89b 3008 ldrb.w r3, [fp, #8] 9c88: f88d 3154 strb.w r3, [sp, #340] ; 0x154 line_dsc.blend_mode = dsc->blend_mode; 9c8c: f89d 3155 ldrb.w r3, [sp, #341] ; 0x155 9c90: f89b 2019 ldrb.w r2, [fp, #25] 9c94: f362 0301 bfi r3, r2, #0, #2 9c98: f88d 3155 strb.w r3, [sp, #341] ; 0x155 9c9c: e794 b.n 9bc8 uint16_t logical_char_pos = 0; 9c9e: 2500 movs r5, #0 9ca0: e0aa b.n 9df8 9ca2: 2500 movs r5, #0 9ca4: e0a8 b.n 9df8 if(cmd_state == CMD_STATE_WAIT) { /*Start char*/ 9ca6: 9b06 ldr r3, [sp, #24] 9ca8: b92b cbnz r3, 9cb6 par_start = i; 9caa: f8bd 3148 ldrh.w r3, [sp, #328] ; 0x148 9cae: 9319 str r3, [sp, #100] ; 0x64 cmd_state = CMD_STATE_PAR; 9cb0: 2301 movs r3, #1 9cb2: 9306 str r3, [sp, #24] continue; 9cb4: e08a b.n 9dcc else if(cmd_state == CMD_STATE_PAR) { /*Other start char in parameter escaped cmd. char */ 9cb6: 9b06 ldr r3, [sp, #24] 9cb8: 2b01 cmp r3, #1 9cba: f000 85f1 beq.w a8a0 else if(cmd_state == CMD_STATE_IN) { /*Command end */ 9cbe: 2b02 cmp r3, #2 9cc0: f000 8533 beq.w a72a lv_color_t color = dsc->color; 9cc4: f8b8 6000 ldrh.w r6, [r8] 9cc8: e0b5 b.n 9e36 if(letter == ' ') { 9cca: 2c20 cmp r4, #32 9ccc: d17e bne.n 9dcc if(i - par_start == LABEL_RECOLOR_PAR_LENGTH + 1) { 9cce: 9b52 ldr r3, [sp, #328] ; 0x148 9cd0: 9a19 ldr r2, [sp, #100] ; 0x64 9cd2: 1a9b subs r3, r3, r2 9cd4: 2b07 cmp r3, #7 9cd6: d015 beq.n 9d04 recolor.full = dsc->color.full; 9cd8: f8b8 3000 ldrh.w r3, [r8] 9cdc: 930c str r3, [sp, #48] ; 0x30 cmd_state = CMD_STATE_IN; /*After the parameter the text is in the command*/ 9cde: 2302 movs r3, #2 9ce0: 9306 str r3, [sp, #24] 9ce2: e073 b.n 9dcc 9ce4: 00011501 .word 0x00011501 9ce8: 00014065 .word 0x00014065 9cec: 00013d99 .word 0x00013d99 9cf0: 0000c251 .word 0x0000c251 9cf4: 00013fc5 .word 0x00013fc5 9cf8: 0000a8c9 .word 0x0000a8c9 9cfc: 66666667 .word 0x66666667 9d00: fffffc00 .word 0xfffffc00 _lv_memcpy_small(buf, &bidi_txt[par_start], LABEL_RECOLOR_PAR_LENGTH); 9d04: 9b09 ldr r3, [sp, #36] ; 0x24 9d06: 1898 adds r0, r3, r2 9d08: 1e43 subs r3, r0, #1 9d0a: 3005 adds r0, #5 uint8_t * d8 = (uint8_t *)dst; 9d0c: aa3a add r2, sp, #232 ; 0xe8 *d8 = *s8; 9d0e: f813 1f01 ldrb.w r1, [r3, #1]! 9d12: f802 1b01 strb.w r1, [r2], #1 while(len) { 9d16: 4283 cmp r3, r0 9d18: d1f9 bne.n 9d0e r = (hex_char_to_num(buf[0]) << 4) + hex_char_to_num(buf[1]); 9d1a: f89d 00e8 ldrb.w r0, [sp, #232] ; 0xe8 9d1e: 4c8c ldr r4, [pc, #560] ; (9f50 ) 9d20: 47a0 blx r4 9d22: 4605 mov r5, r0 9d24: f89d 00e9 ldrb.w r0, [sp, #233] ; 0xe9 9d28: 47a0 blx r4 9d2a: eb00 1505 add.w r5, r0, r5, lsl #4 g = (hex_char_to_num(buf[2]) << 4) + hex_char_to_num(buf[3]); 9d2e: f89d 00ea ldrb.w r0, [sp, #234] ; 0xea 9d32: 47a0 blx r4 9d34: 4606 mov r6, r0 9d36: f89d 00eb ldrb.w r0, [sp, #235] ; 0xeb 9d3a: 47a0 blx r4 9d3c: eb00 1606 add.w r6, r0, r6, lsl #4 b = (hex_char_to_num(buf[4]) << 4) + hex_char_to_num(buf[5]); 9d40: f89d 00ec ldrb.w r0, [sp, #236] ; 0xec 9d44: 47a0 blx r4 9d46: 4607 mov r7, r0 9d48: f89d 00ed ldrb.w r0, [sp, #237] ; 0xed 9d4c: 47a0 blx r4 9d4e: 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); 9d52: f3c3 03c4 ubfx r3, r3, #3, #5 9d56: 9a2e ldr r2, [sp, #184] ; 0xb8 9d58: f363 0204 bfi r2, r3, #0, #5 9d5c: 4613 mov r3, r2 9d5e: f3c6 0685 ubfx r6, r6, #2, #6 9d62: f366 134a bfi r3, r6, #5, #6 9d66: f3c5 05c4 ubfx r5, r5, #3, #5 9d6a: f365 23cf bfi r3, r5, #11, #5 9d6e: f8ad 30b8 strh.w r3, [sp, #184] ; 0xb8 9d72: b29b uxth r3, r3 9d74: 930c str r3, [sp, #48] ; 0x30 cmd_state = CMD_STATE_IN; /*After the parameter the text is in the command*/ 9d76: 2302 movs r3, #2 9d78: 9306 str r3, [sp, #24] 9d7a: e027 b.n 9dcc sel_coords.x1 = pos.x; 9d7c: f8ad a0e8 strh.w sl, [sp, #232] ; 0xe8 sel_coords.y1 = pos.y; 9d80: 9a0e ldr r2, [sp, #56] ; 0x38 9d82: f8ad 20ea strh.w r2, [sp, #234] ; 0xea sel_coords.x2 = pos.x + letter_w + dsc->letter_space - 1; 9d86: f8b8 300c ldrh.w r3, [r8, #12] 9d8a: 3b01 subs r3, #1 9d8c: 4453 add r3, sl 9d8e: 4403 add r3, r0 9d90: f8ad 30ec strh.w r3, [sp, #236] ; 0xec sel_coords.y2 = pos.y + line_height - 1; 9d94: 9b17 ldr r3, [sp, #92] ; 0x5c 9d96: 3b01 subs r3, #1 9d98: 4413 add r3, r2 9d9a: f8ad 30ee strh.w r3, [sp, #238] ; 0xee lv_draw_rect(&sel_coords, mask, &draw_dsc_sel); 9d9e: aa3d add r2, sp, #244 ; 0xf4 9da0: 990d ldr r1, [sp, #52] ; 0x34 9da2: a83a add r0, sp, #232 ; 0xe8 9da4: 4b6b ldr r3, [pc, #428] ; (9f54 ) 9da6: 4798 blx r3 9da8: e056 b.n 9e58 LV_LOG_WARN("lv_draw_letter: font is NULL"); 9daa: 4b6b ldr r3, [pc, #428] ; (9f58 ) 9dac: 9300 str r3, [sp, #0] 9dae: 4b6b ldr r3, [pc, #428] ; (9f5c ) 9db0: f240 1297 movw r2, #407 ; 0x197 9db4: 496a ldr r1, [pc, #424] ; (9f60 ) 9db6: 2002 movs r0, #2 9db8: 4c6a ldr r4, [pc, #424] ; (9f64 ) 9dba: 47a0 blx r4 if(letter_w > 0) { 9dbc: 2f00 cmp r7, #0 9dbe: dd05 ble.n 9dcc pos.x += letter_w + dsc->letter_space; 9dc0: f8b8 300c ldrh.w r3, [r8, #12] 9dc4: 4453 add r3, sl 9dc6: 443b add r3, r7 9dc8: fa0f fa83 sxth.w sl, r3 while(i < line_end - line_start) { 9dcc: 9952 ldr r1, [sp, #328] ; 0x148 9dce: 9b07 ldr r3, [sp, #28] 9dd0: eba3 030b sub.w r3, r3, fp 9dd4: 428b cmp r3, r1 9dd6: f240 84ac bls.w a732 if(sel_start != 0xFFFF && sel_end != 0xFFFF) { 9dda: f64f 73ff movw r3, #65535 ; 0xffff 9dde: 4599 cmp r9, r3 9de0: f43f af5d beq.w 9c9e 9de4: 9a08 ldr r2, [sp, #32] 9de6: 429a cmp r2, r3 9de8: f43f af5b beq.w 9ca2 logical_char_pos = _lv_txt_encoded_get_char_id(txt, line_start + i); 9dec: 4459 add r1, fp 9dee: 980a ldr r0, [sp, #40] ; 0x28 9df0: 4b5d ldr r3, [pc, #372] ; (9f68 ) 9df2: 681b ldr r3, [r3, #0] 9df4: 4798 blx r3 9df6: b285 uxth r5, r0 uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i); 9df8: 4e5c ldr r6, [pc, #368] ; (9f6c ) 9dfa: 6833 ldr r3, [r6, #0] 9dfc: a952 add r1, sp, #328 ; 0x148 9dfe: 9f09 ldr r7, [sp, #36] ; 0x24 9e00: 4638 mov r0, r7 9e02: 4798 blx r3 9e04: 4604 mov r4, r0 uint32_t letter_next = _lv_txt_encoded_next(&bidi_txt[i], NULL); 9e06: 6833 ldr r3, [r6, #0] 9e08: 2100 movs r1, #0 9e0a: 9852 ldr r0, [sp, #328] ; 0x148 9e0c: 4438 add r0, r7 9e0e: 4798 blx r3 if((dsc->flag & LV_TXT_FLAG_RECOLOR) != 0) { 9e10: f898 3017 ldrb.w r3, [r8, #23] 9e14: f013 0f01 tst.w r3, #1 9e18: d006 beq.n 9e28 if(letter == (uint32_t)LV_TXT_COLOR_CMD[0]) { 9e1a: 2c23 cmp r4, #35 ; 0x23 9e1c: f43f af43 beq.w 9ca6 if(cmd_state == CMD_STATE_PAR) { 9e20: 9b06 ldr r3, [sp, #24] 9e22: 2b01 cmp r3, #1 9e24: f43f af51 beq.w 9cca lv_color_t color = dsc->color; 9e28: f8b8 6000 ldrh.w r6, [r8] if(cmd_state == CMD_STATE_IN) color = recolor; 9e2c: 9b0c ldr r3, [sp, #48] ; 0x30 9e2e: 9a06 ldr r2, [sp, #24] 9e30: 2a02 cmp r2, #2 9e32: bf08 it eq 9e34: 461e moveq r6, r3 letter_w = lv_font_get_glyph_width(font, letter, letter_next); 9e36: 4602 mov r2, r0 9e38: 4621 mov r1, r4 9e3a: 9805 ldr r0, [sp, #20] 9e3c: 4b4c ldr r3, [pc, #304] ; (9f70 ) 9e3e: 4798 blx r3 9e40: 4607 mov r7, r0 if(sel_start != 0xFFFF && sel_end != 0xFFFF) { 9e42: f64f 73ff movw r3, #65535 ; 0xffff 9e46: 4599 cmp r9, r3 9e48: d006 beq.n 9e58 9e4a: 9908 ldr r1, [sp, #32] 9e4c: 4299 cmp r1, r3 9e4e: d003 beq.n 9e58 if(logical_char_pos >= sel_start && logical_char_pos < sel_end) { 9e50: 45a9 cmp r9, r5 9e52: d801 bhi.n 9e58 9e54: 42a9 cmp r1, r5 9e56: d891 bhi.n 9d7c if(opa < LV_OPA_MIN) return; 9e58: 9b0b ldr r3, [sp, #44] ; 0x2c 9e5a: 2b04 cmp r3, #4 9e5c: d9ae bls.n 9dbc if(font_p == NULL) { 9e5e: 9b05 ldr r3, [sp, #20] 9e60: 2b00 cmp r3, #0 9e62: d0a2 beq.n 9daa lv_draw_letter(&pos, mask, font, letter, color, opa, dsc->blend_mode); 9e64: f898 3019 ldrb.w r3, [r8, #25] 9e68: 930f str r3, [sp, #60] ; 0x3c bool g_ret = lv_font_get_glyph_dsc(font_p, &g, letter, '\0'); 9e6a: 2300 movs r3, #0 9e6c: 4622 mov r2, r4 9e6e: a93a add r1, sp, #232 ; 0xe8 9e70: 9805 ldr r0, [sp, #20] 9e72: 4d40 ldr r5, [pc, #256] ; (9f74 ) 9e74: 47a8 blx r5 if(g_ret == false) { 9e76: b958 cbnz r0, 9e90 if(letter >= 0x20) { 9e78: 2c1f cmp r4, #31 9e7a: d99f bls.n 9dbc LV_LOG_WARN("lv_draw_letter: glyph dsc. not found"); 9e7c: 4b3e ldr r3, [pc, #248] ; (9f78 ) 9e7e: 9300 str r3, [sp, #0] 9e80: 4b36 ldr r3, [pc, #216] ; (9f5c ) 9e82: f240 12a1 movw r2, #417 ; 0x1a1 9e86: 4936 ldr r1, [pc, #216] ; (9f60 ) 9e88: 2002 movs r0, #2 9e8a: 4c36 ldr r4, [pc, #216] ; (9f64 ) 9e8c: 47a0 blx r4 9e8e: e795 b.n 9dbc if((g.box_h == 0) && (g.box_w == 0)) return; 9e90: f8bd 20ec ldrh.w r2, [sp, #236] ; 0xec 9e94: b91a cbnz r2, 9e9e 9e96: f8bd 30ea ldrh.w r3, [sp, #234] ; 0xea 9e9a: 2b00 cmp r3, #0 9e9c: d08e beq.n 9dbc int32_t pos_x = pos_p->x + g.ofs_x; 9e9e: f9bd 50ee ldrsh.w r5, [sp, #238] ; 0xee 9ea2: 4455 add r5, sl if(pos_x + g.box_w < clip_area->x1 || 9ea4: f8bd 30ea ldrh.w r3, [sp, #234] ; 0xea 9ea8: 442b add r3, r5 9eaa: 980d ldr r0, [sp, #52] ; 0x34 9eac: f9b0 1000 ldrsh.w r1, [r0] 9eb0: 428b cmp r3, r1 9eb2: db83 blt.n 9dbc pos_x > clip_area->x2 || 9eb4: f9b0 3004 ldrsh.w r3, [r0, #4] if(pos_x + g.box_w < clip_area->x1 || 9eb8: 429d cmp r5, r3 9eba: f73f af7f bgt.w 9dbc int32_t pos_y = pos_p->y + (font_p->line_height - font_p->base_line) - g.box_h - g.ofs_y; 9ebe: 9b05 ldr r3, [sp, #20] 9ec0: f9b3 1008 ldrsh.w r1, [r3, #8] 9ec4: f9b3 300a ldrsh.w r3, [r3, #10] 9ec8: 1acb subs r3, r1, r3 9eca: 990e ldr r1, [sp, #56] ; 0x38 9ecc: 440b add r3, r1 9ece: 1a99 subs r1, r3, r2 9ed0: f9bd 30f0 ldrsh.w r3, [sp, #240] ; 0xf0 9ed4: 1acb subs r3, r1, r3 pos_y + g.box_h < clip_area->y1 || 9ed6: 9315 str r3, [sp, #84] ; 0x54 9ed8: 441a add r2, r3 9eda: f9b0 3002 ldrsh.w r3, [r0, #2] pos_x > clip_area->x2 || 9ede: 429a cmp r2, r3 9ee0: f6ff af6c blt.w 9dbc pos_y > clip_area->y2) { 9ee4: f9b0 3006 ldrsh.w r3, [r0, #6] pos_y + g.box_h < clip_area->y1 || 9ee8: 9915 ldr r1, [sp, #84] ; 0x54 9eea: 4299 cmp r1, r3 9eec: f73f af66 bgt.w 9dbc const uint8_t * map_p = lv_font_get_glyph_bitmap(font_p, letter); 9ef0: 4621 mov r1, r4 9ef2: 9805 ldr r0, [sp, #20] 9ef4: 4b21 ldr r3, [pc, #132] ; (9f7c ) 9ef6: 4798 blx r3 if(map_p == NULL) { 9ef8: 4686 mov lr, r0 9efa: b1f0 cbz r0, 9f3a if(font_p->subpx) { 9efc: 9b05 ldr r3, [sp, #20] 9efe: 7b1b ldrb r3, [r3, #12] 9f00: f013 0f03 tst.w r3, #3 9f04: f000 825e beq.w a3c4 draw_letter_subpx(pos_x, pos_y, &g, clip_area, map_p, color, opa, blend_mode); 9f08: b22b sxth r3, r5 9f0a: 9318 str r3, [sp, #96] ; 0x60 9f0c: f9bd 3054 ldrsh.w r3, [sp, #84] ; 0x54 9f10: 931d str r3, [sp, #116] ; 0x74 uint32_t bpp = g->bpp; 9f12: f89d 30f2 ldrb.w r3, [sp, #242] ; 0xf2 9f16: 9312 str r3, [sp, #72] ; 0x48 if(bpp == 3) bpp = 4; 9f18: 2b03 cmp r3, #3 9f1a: f000 80ff beq.w a11c switch(bpp) { 9f1e: 3b01 subs r3, #1 9f20: 2b07 cmp r3, #7 9f22: f200 8102 bhi.w a12a 9f26: e8df f013 tbh [pc, r3, lsl #1] 9f2a: 010a .short 0x010a 9f2c: 0100002d .word 0x0100002d 9f30: 010000fb .word 0x010000fb 9f34: 01000100 .word 0x01000100 9f38: 0111 .short 0x0111 LV_LOG_WARN("lv_draw_letter: character's bitmap not found"); 9f3a: 4b11 ldr r3, [pc, #68] ; (9f80 ) 9f3c: 9300 str r3, [sp, #0] 9f3e: 4b07 ldr r3, [pc, #28] ; (9f5c ) 9f40: f240 12b7 movw r2, #439 ; 0x1b7 9f44: 4906 ldr r1, [pc, #24] ; (9f60 ) 9f46: 2002 movs r0, #2 9f48: 4c06 ldr r4, [pc, #24] ; (9f64 ) 9f4a: 47a0 blx r4 9f4c: e736 b.n 9dbc 9f4e: bf00 nop 9f50: 00009973 .word 0x00009973 9f54: 0000c319 .word 0x0000c319 9f58: 00024ed0 .word 0x00024ed0 9f5c: 00024e60 .word 0x00024e60 9f60: 00024ea0 .word 0x00024ea0 9f64: 00012245 .word 0x00012245 9f68: 20000064 .word 0x20000064 9f6c: 20000058 .word 0x20000058 9f70: 00010049 .word 0x00010049 9f74: 00010041 .word 0x00010041 9f78: 00024ef0 .word 0x00024ef0 9f7c: 00010039 .word 0x00010039 9f80: 00024f18 .word 0x00024f18 bitmask_init = 0xC0; 9f84: 23c0 movs r3, #192 ; 0xc0 9f86: 931b str r3, [sp, #108] ; 0x6c bpp_opa_table = _lv_bpp2_opa_table; 9f88: 4bac ldr r3, [pc, #688] ; (a23c ) 9f8a: 9320 str r3, [sp, #128] ; 0x80 int32_t box_w = g->box_w; 9f8c: f8bd 30ea ldrh.w r3, [sp, #234] ; 0xea 9f90: 931e str r3, [sp, #120] ; 0x78 int32_t box_h = g->box_h; 9f92: f8bd 10ec ldrh.w r1, [sp, #236] ; 0xec int32_t width_bit = box_w * bpp; /*Letter width in bits*/ 9f96: 9a12 ldr r2, [sp, #72] ; 0x48 9f98: fb02 f203 mul.w r2, r2, r3 int32_t col_start = pos_x >= clip_area->x1 ? 0 : (clip_area->x1 - pos_x) * 3; 9f9c: 9b0d ldr r3, [sp, #52] ; 0x34 9f9e: f9b3 3000 ldrsh.w r3, [r3] 9fa2: 9c18 ldr r4, [sp, #96] ; 0x60 9fa4: 429c cmp r4, r3 9fa6: bfba itte lt 9fa8: 1b1b sublt r3, r3, r4 9faa: eb03 0343 addlt.w r3, r3, r3, lsl #1 9fae: 2300 movge r3, #0 9fb0: 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; 9fb2: 9b0d ldr r3, [sp, #52] ; 0x34 9fb4: f9b3 3004 ldrsh.w r3, [r3, #4] 9fb8: 981e ldr r0, [sp, #120] ; 0x78 9fba: 4604 mov r4, r0 9fbc: 48a0 ldr r0, [pc, #640] ; (a240 ) 9fbe: fb80 4004 smull r4, r0, r0, r4 9fc2: 9c18 ldr r4, [sp, #96] ; 0x60 9fc4: 4420 add r0, r4 9fc6: 4298 cmp r0, r3 9fc8: bfc3 ittte gt 9fca: 1b1b subgt r3, r3, r4 9fcc: 3301 addgt r3, #1 9fce: eb03 0343 addgt.w r3, r3, r3, lsl #1 9fd2: 9b1e ldrle r3, [sp, #120] ; 0x78 9fd4: 9314 str r3, [sp, #80] ; 0x50 int32_t row_start = pos_y >= clip_area->y1 ? 0 : clip_area->y1 - pos_y; 9fd6: 9b0d ldr r3, [sp, #52] ; 0x34 9fd8: f9b3 3002 ldrsh.w r3, [r3, #2] 9fdc: 9c1d ldr r4, [sp, #116] ; 0x74 9fde: 429c cmp r4, r3 9fe0: bfb4 ite lt 9fe2: 1b1b sublt r3, r3, r4 9fe4: 2300 movge r3, #0 9fe6: 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; 9fe8: 9b0d ldr r3, [sp, #52] ; 0x34 9fea: f9b3 3006 ldrsh.w r3, [r3, #6] 9fee: 9c1d ldr r4, [sp, #116] ; 0x74 9ff0: 1908 adds r0, r1, r4 9ff2: 4298 cmp r0, r3 9ff4: f340 80b1 ble.w a15a 9ff8: 1b1b subs r3, r3, r4 9ffa: 3301 adds r3, #1 9ffc: 9328 str r3, [sp, #160] ; 0xa0 9ffe: f006 031f and.w r3, r6, #31 a002: 9322 str r3, [sp, #136] ; 0x88 a004: f3c6 1345 ubfx r3, r6, #5, #6 a008: 9324 str r3, [sp, #144] ; 0x90 a00a: f3c6 23c4 ubfx r3, r6, #11, #5 a00e: 9323 str r3, [sp, #140] ; 0x8c int32_t bit_ofs = (row_start * width_bit) + (col_start * bpp); a010: 9b12 ldr r3, [sp, #72] ; 0x48 a012: 4618 mov r0, r3 a014: 9b27 ldr r3, [sp, #156] ; 0x9c a016: fb00 f303 mul.w r3, r0, r3 a01a: 9825 ldr r0, [sp, #148] ; 0x94 a01c: fb00 3202 mla r2, r0, r2, r3 map_p += bit_ofs >> 3; a020: eb0e 06e2 add.w r6, lr, r2, asr #3 a024: 9631 str r6, [sp, #196] ; 0xc4 col_bit = bit_ofs & 0x7; /* "& 0x7" equals to "% 8" just faster */ a026: 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; a02a: 981e ldr r0, [sp, #120] ; 0x78 a02c: fb01 f100 mul.w r1, r1, r0 a030: f5b1 7ff0 cmp.w r1, #480 ; 0x1e0 a034: bfa8 it ge a036: f44f 71f0 movge.w r1, #480 ; 0x1e0 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); a03a: 9129 str r1, [sp, #164] ; 0xa4 a03c: 4608 mov r0, r1 a03e: 4c81 ldr r4, [pc, #516] ; (a244 ) a040: 47a0 blx r4 a042: 9021 str r0, [sp, #132] ; 0x84 lv_color_t * color_buf = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); a044: 9929 ldr r1, [sp, #164] ; 0xa4 a046: 0048 lsls r0, r1, #1 a048: 47a0 blx r4 a04a: 9030 str r0, [sp, #192] ; 0xc0 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); a04c: 4b7e ldr r3, [pc, #504] ; (a248 ) a04e: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); a050: 4b7e ldr r3, [pc, #504] ; (a24c ) a052: 4798 blx r3 a054: f9b0 4010 ldrsh.w r4, [r0, #16] a058: 8a83 ldrh r3, [r0, #20] a05a: 3301 adds r3, #1 a05c: 1b1b subs r3, r3, r4 int32_t vdb_width = lv_area_get_width(&vdb->area); a05e: b219 sxth r1, r3 a060: 9126 str r1, [sp, #152] ; 0x98 lv_color_t * vdb_buf_tmp = vdb->buf_act; a062: 6881 ldr r1, [r0, #8] vdb_buf_tmp += (row_start * vdb_width) + col_start / 3; a064: 9b27 ldr r3, [sp, #156] ; 0x9c a066: 4a76 ldr r2, [pc, #472] ; (a240 ) a068: fb82 e203 smull lr, r2, r2, r3 a06c: eba2 72e3 sub.w r2, r2, r3, asr #31 vdb_buf_tmp += ((pos_y - vdb->area.y1) * vdb_width) + pos_x - vdb->area.x1; a070: f9b0 3012 ldrsh.w r3, [r0, #18] a074: 981d ldr r0, [sp, #116] ; 0x74 a076: 1ac3 subs r3, r0, r3 a078: 9826 ldr r0, [sp, #152] ; 0x98 a07a: 4686 mov lr, r0 a07c: 9818 ldr r0, [sp, #96] ; 0x60 a07e: fb0e 0303 mla r3, lr, r3, r0 a082: 1b1b subs r3, r3, r4 vdb_buf_tmp += (row_start * vdb_width) + col_start / 3; a084: 9c25 ldr r4, [sp, #148] ; 0x94 a086: fb0e 2004 mla r0, lr, r4, r2 a08a: 4403 add r3, r0 a08c: eb01 0143 add.w r1, r1, r3, lsl #1 a090: 9118 str r1, [sp, #96] ; 0x60 map_area.x1 = col_start / 3 + pos_x; a092: b2ad uxth r5, r5 a094: 442a add r2, r5 a096: f8ad 20e0 strh.w r2, [sp, #224] ; 0xe0 map_area.x2 = col_end / 3 + pos_x - 1; a09a: 9a14 ldr r2, [sp, #80] ; 0x50 a09c: 4696 mov lr, r2 a09e: 4968 ldr r1, [pc, #416] ; (a240 ) a0a0: fb81 e30e smull lr, r3, r1, lr a0a4: eba3 73e2 sub.w r3, r3, r2, asr #31 a0a8: 3d01 subs r5, #1 a0aa: 442b add r3, r5 a0ac: f8ad 30e4 strh.w r3, [sp, #228] ; 0xe4 map_area.y1 = row_start + pos_y; a0b0: 9d15 ldr r5, [sp, #84] ; 0x54 a0b2: 4425 add r5, r4 a0b4: b22b sxth r3, r5 a0b6: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2 map_area.y2 = map_area.y1; a0ba: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); a0be: 4b64 ldr r3, [pc, #400] ; (a250 ) a0c0: 4798 blx r3 a0c2: 902a str r0, [sp, #168] ; 0xa8 for(row = row_start ; row < row_end; row++) { a0c4: 9d28 ldr r5, [sp, #160] ; 0xa0 a0c6: 42ac cmp r4, r5 a0c8: f280 8161 bge.w a38e if((int32_t) mask_p + (col_end - col_start) < mask_buf_size) { a0cc: 9914 ldr r1, [sp, #80] ; 0x50 a0ce: 9a27 ldr r2, [sp, #156] ; 0x9c a0d0: 1a8c subs r4, r1, r2 a0d2: 942b str r4, [sp, #172] ; 0xac col_bit += ((box_w - col_end) + col_start) * bpp; a0d4: 9d1e ldr r5, [sp, #120] ; 0x78 a0d6: 1a6b subs r3, r5, r1 a0d8: 4413 add r3, r2 a0da: 9912 ldr r1, [sp, #72] ; 0x48 a0dc: fb01 f303 mul.w r3, r1, r3 a0e0: 932c str r3, [sp, #176] ; 0xb0 vdb_buf_tmp += vdb_width - (col_end - col_start) / 3; a0e2: 4a57 ldr r2, [pc, #348] ; (a240 ) a0e4: fb82 2304 smull r2, r3, r2, r4 a0e8: ebc3 73e4 rsb r3, r3, r4, asr #31 a0ec: 9826 ldr r0, [sp, #152] ; 0x98 a0ee: 4403 add r3, r0 a0f0: 005b lsls r3, r3, #1 a0f2: 932d str r3, [sp, #180] ; 0xb4 a0f4: 2300 movs r3, #0 a0f6: 9326 str r3, [sp, #152] ; 0x98 col_bit = 0; a0f8: 9315 str r3, [sp, #84] ; 0x54 a0fa: f8cd b0c8 str.w fp, [sp, #200] ; 0xc8 a0fe: f8cd 90cc str.w r9, [sp, #204] ; 0xcc a102: 9734 str r7, [sp, #208] ; 0xd0 a104: f8dd 9060 ldr.w r9, [sp, #96] ; 0x60 a108: f8dd b0c4 ldr.w fp, [sp, #196] ; 0xc4 a10c: f8cd a0c4 str.w sl, [sp, #196] ; 0xc4 a110: f8dd a0c0 ldr.w sl, [sp, #192] ; 0xc0 a114: f8cd 80d4 str.w r8, [sp, #212] ; 0xd4 a118: 4688 mov r8, r1 a11a: e0ea b.n a2f2 if(bpp == 3) bpp = 4; a11c: 2304 movs r3, #4 a11e: 9312 str r3, [sp, #72] ; 0x48 bitmask_init = 0xF0; a120: 23f0 movs r3, #240 ; 0xf0 a122: 931b str r3, [sp, #108] ; 0x6c bpp_opa_table = _lv_bpp4_opa_table; a124: 4b4b ldr r3, [pc, #300] ; (a254 ) a126: 9320 str r3, [sp, #128] ; 0x80 a128: e730 b.n 9f8c LV_LOG_WARN("lv_draw_letter: invalid bpp not found"); a12a: 4b4b ldr r3, [pc, #300] ; (a258 ) a12c: 9300 str r3, [sp, #0] a12e: 4b4b ldr r3, [pc, #300] ; (a25c ) a130: f240 227a movw r2, #634 ; 0x27a a134: 494a ldr r1, [pc, #296] ; (a260 ) a136: 2002 movs r0, #2 a138: 4c4a ldr r4, [pc, #296] ; (a264 ) a13a: 47a0 blx r4 a13c: e63e b.n 9dbc uint32_t bpp = g->bpp; a13e: 2301 movs r3, #1 a140: 9312 str r3, [sp, #72] ; 0x48 bitmask_init = 0x80; a142: 2380 movs r3, #128 ; 0x80 a144: 931b str r3, [sp, #108] ; 0x6c bpp_opa_table = _lv_bpp1_opa_table; a146: 4b48 ldr r3, [pc, #288] ; (a268 ) a148: 9320 str r3, [sp, #128] ; 0x80 a14a: e71f b.n 9f8c uint32_t bpp = g->bpp; a14c: 2308 movs r3, #8 a14e: 9312 str r3, [sp, #72] ; 0x48 bitmask_init = 0xFF; a150: 23ff movs r3, #255 ; 0xff a152: 931b str r3, [sp, #108] ; 0x6c bpp_opa_table = _lv_bpp8_opa_table; a154: 4b45 ldr r3, [pc, #276] ; (a26c ) a156: 9320 str r3, [sp, #128] ; 0x80 a158: e718 b.n 9f8c int32_t row_end = pos_y + box_h <= clip_area->y2 ? box_h : clip_area->y2 - pos_y + 1; a15a: 9128 str r1, [sp, #160] ; 0xa0 a15c: e74f b.n 9ffe px_opa = bpp == 8 ? letter_px : bpp_opa_table[letter_px]; a15e: f1b8 0f08 cmp.w r8, #8 a162: d004 beq.n a16e a164: b2db uxtb r3, r3 a166: 9a20 ldr r2, [sp, #128] ; 0x80 a168: 5cd2 ldrb r2, [r2, r3] a16a: e000 b.n a16e px_opa = 0; a16c: 9a15 ldr r2, [sp, #84] ; 0x54 font_rgb[subpx_cnt] = px_opa; a16e: ab58 add r3, sp, #352 ; 0x160 a170: 440b add r3, r1 a172: f803 2c84 strb.w r2, [r3, #-132] subpx_cnt ++; a176: 3101 adds r1, #1 if(subpx_cnt == 3) { a178: 2903 cmp r1, #3 a17a: d028 beq.n a1ce if(col_bit < (int32_t) (8 - bpp)) { a17c: 45b4 cmp ip, r6 a17e: f340 8094 ble.w a2aa col_bit += bpp; a182: 9b12 ldr r3, [sp, #72] ; 0x48 a184: 4443 add r3, r8 a186: 461e mov r6, r3 bitmask = bitmask >> bpp; a188: fa2e fe08 lsr.w lr, lr, r8 for(col = col_start; col < col_end; col++) { a18c: 3501 adds r5, #1 a18e: 9b14 ldr r3, [sp, #80] ; 0x50 a190: 42ab cmp r3, r5 a192: f000 8090 beq.w a2b6 letter_px = (*map_p & bitmask) >> (8 - col_bit - bpp); a196: 9612 str r6, [sp, #72] ; 0x48 a198: f89b 3000 ldrb.w r3, [fp] a19c: ea03 020e and.w r2, r3, lr a1a0: ebac 0306 sub.w r3, ip, r6 a1a4: fa22 f303 lsr.w r3, r2, r3 if(letter_px != 0) { a1a8: f013 02ff ands.w r2, r3, #255 ; 0xff a1ac: d0de beq.n a16c if(opa == LV_OPA_COVER) { a1ae: 9816 ldr r0, [sp, #88] ; 0x58 a1b0: 28ff cmp r0, #255 ; 0xff a1b2: d0d4 beq.n a15e px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8 a1b4: f1b8 0f08 cmp.w r8, #8 a1b8: bf0f iteee eq a1ba: b2da uxtbeq r2, r3 : (uint32_t)((uint32_t)bpp_opa_table[letter_px] * opa) >> 8; a1bc: b2db uxtbne r3, r3 a1be: 9a20 ldrne r2, [sp, #128] ; 0x80 a1c0: 5cd2 ldrbne r2, [r2, r3] a1c2: 9b16 ldr r3, [sp, #88] ; 0x58 a1c4: fb03 f202 mul.w r2, r3, r2 px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8 a1c8: f3c2 2207 ubfx r2, r2, #8, #8 a1cc: e7cf b.n a16e res_color.ch.red = (uint32_t)((uint16_t)txt_rgb[0] * font_rgb[0] + (bg_rgb[0] * (255 - font_rgb[0]))) >> 8; a1ce: 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}; a1d2: 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; a1d6: 08db lsrs r3, r3, #3 a1d8: f1c1 00ff rsb r0, r1, #255 ; 0xff a1dc: 9a23 ldr r2, [sp, #140] ; 0x8c a1de: fb01 f202 mul.w r2, r1, r2 a1e2: fb00 2303 mla r3, r0, r3, r2 a1e6: f3c3 2304 ubfx r3, r3, #8, #5 a1ea: 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; a1ec: f89d 30de ldrb.w r3, [sp, #222] ; 0xde a1f0: 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}; a1f2: 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; a1f6: f002 021f and.w r2, r2, #31 a1fa: f1c3 00ff rsb r0, r3, #255 ; 0xff a1fe: 9b22 ldr r3, [sp, #136] ; 0x88 a200: 9c18 ldr r4, [sp, #96] ; 0x60 a202: fb04 f303 mul.w r3, r4, r3 a206: fb00 3202 mla r2, r0, r2, r3 a20a: f3c2 2304 ubfx r3, r2, #8, #5 a20e: 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; a210: 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}; a214: 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; a218: f3c3 1445 ubfx r4, r3, #5, #6 a21c: f1c0 03ff rsb r3, r0, #255 ; 0xff a220: 9a24 ldr r2, [sp, #144] ; 0x90 a222: fb00 f202 mul.w r2, r0, r2 a226: fb03 2304 mla r3, r3, r4, r2 a22a: 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; a22e: b9f9 cbnz r1, a270 a230: b9f0 cbnz r0, a270 a232: 9a18 ldr r2, [sp, #96] ; 0x60 a234: b9e2 cbnz r2, a270 a236: 9a21 ldr r2, [sp, #132] ; 0x84 a238: 55d1 strb r1, [r2, r7] a23a: e01d b.n a278 a23c: 00024d4c .word 0x00024d4c a240: 55555556 .word 0x55555556 a244: 00012925 .word 0x00012925 a248: 00005f51 .word 0x00005f51 a24c: 00010fc5 .word 0x00010fc5 a250: 0000bead .word 0x0000bead a254: 00024d50 .word 0x00024d50 a258: 00024f48 .word 0x00024f48 a25c: 00024e70 .word 0x00024e70 a260: 00024ea0 .word 0x00024ea0 a264: 00012245 .word 0x00012245 a268: 00024d48 .word 0x00024d48 a26c: 00024d60 .word 0x00024d60 else mask_buf[mask_p] = LV_OPA_COVER; a270: 9a21 ldr r2, [sp, #132] ; 0x84 a272: f04f 31ff mov.w r1, #4294967295 a276: 55d1 strb r1, [r2, r7] color_buf[mask_p] = res_color; a278: eb09 0047 add.w r0, r9, r7, lsl #1 a27c: f819 1017 ldrb.w r1, [r9, r7, lsl #1] a280: 9a1e ldr r2, [sp, #120] ; 0x78 a282: f362 0104 bfi r1, r2, #0, #5 a286: f809 1017 strb.w r1, [r9, r7, lsl #1] a28a: f839 2017 ldrh.w r2, [r9, r7, lsl #1] a28e: f363 124a bfi r2, r3, #5, #6 a292: f829 2017 strh.w r2, [r9, r7, lsl #1] a296: 0a12 lsrs r2, r2, #8 a298: 9b1d ldr r3, [sp, #116] ; 0x74 a29a: f363 02c7 bfi r2, r3, #3, #5 a29e: 7042 strb r2, [r0, #1] mask_p++; a2a0: 3701 adds r7, #1 vdb_buf_tmp++; a2a2: f10a 0a02 add.w sl, sl, #2 subpx_cnt = 0; a2a6: 2100 movs r1, #0 a2a8: e768 b.n a17c map_p++; a2aa: f10b 0b01 add.w fp, fp, #1 bitmask = bitmask_init; a2ae: f8dd e06c ldr.w lr, [sp, #108] ; 0x6c col_bit = 0; a2b2: 9e15 ldr r6, [sp, #84] ; 0x54 a2b4: e76a b.n a18c a2b6: 4653 mov r3, sl a2b8: 46ca mov sl, r9 a2ba: 4699 mov r9, r3 if(other_mask_cnt) { a2bc: 9b2a ldr r3, [sp, #168] ; 0xa8 a2be: bb4b cbnz r3, a314 if((int32_t) mask_p + (col_end - col_start) < mask_buf_size) { a2c0: 9b2b ldr r3, [sp, #172] ; 0xac a2c2: 443b add r3, r7 a2c4: 9a29 ldr r2, [sp, #164] ; 0xa4 a2c6: 429a cmp r2, r3 a2c8: dd41 ble.n a34e map_area.y2 ++; a2ca: f8bd 30e6 ldrh.w r3, [sp, #230] ; 0xe6 a2ce: 3301 adds r3, #1 a2d0: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6 a2d4: 9726 str r7, [sp, #152] ; 0x98 col_bit += ((box_w - col_end) + col_start) * bpp; a2d6: 9b2c ldr r3, [sp, #176] ; 0xb0 a2d8: 441e add r6, r3 map_p += (col_bit >> 3); a2da: eb0b 0be6 add.w fp, fp, r6, asr #3 col_bit = col_bit & 0x7; a2de: f006 0607 and.w r6, r6, #7 vdb_buf_tmp += vdb_width - (col_end - col_start) / 3; a2e2: 9b2d ldr r3, [sp, #180] ; 0xb4 a2e4: 4499 add r9, r3 for(row = row_start ; row < row_end; row++) { a2e6: 9b25 ldr r3, [sp, #148] ; 0x94 a2e8: 3301 adds r3, #1 a2ea: 9325 str r3, [sp, #148] ; 0x94 a2ec: 9a28 ldr r2, [sp, #160] ; 0xa0 a2ee: 4293 cmp r3, r2 a2f0: da44 bge.n a37c bitmask = bitmask_init >> col_bit; a2f2: 9b1b ldr r3, [sp, #108] ; 0x6c a2f4: fa23 fe06 lsr.w lr, r3, r6 for(col = col_start; col < col_end; col++) { a2f8: 9d27 ldr r5, [sp, #156] ; 0x9c a2fa: 9a14 ldr r2, [sp, #80] ; 0x50 a2fc: 4295 cmp r5, r2 a2fe: da07 bge.n a310 a300: 9f26 ldr r7, [sp, #152] ; 0x98 a302: 2100 movs r1, #0 a304: f1c8 0c08 rsb ip, r8, #8 else mask_buf[mask_p] = LV_OPA_COVER; a308: 464b mov r3, r9 a30a: 46d1 mov r9, sl a30c: 469a mov sl, r3 a30e: e742 b.n a196 for(col = col_start; col < col_end; col++) { a310: 9f26 ldr r7, [sp, #152] ; 0x98 a312: e7d3 b.n a2bc lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf + mask_p_start, map_area.x1, map_area.y2, a314: 9b26 ldr r3, [sp, #152] ; 0x98 a316: 9a21 ldr r2, [sp, #132] ; 0x84 a318: 4413 add r3, r2 a31a: 461c mov r4, r3 a31c: f9bd 10e0 ldrsh.w r1, [sp, #224] ; 0xe0 a320: f8bd 30e4 ldrh.w r3, [sp, #228] ; 0xe4 a324: 3301 adds r3, #1 a326: 1a5b subs r3, r3, r1 a328: b21b sxth r3, r3 a32a: f9bd 20e6 ldrsh.w r2, [sp, #230] ; 0xe6 a32e: 4620 mov r0, r4 a330: 4dab ldr r5, [pc, #684] ; (a5e0 ) a332: 47a8 blx r5 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { a334: 2800 cmp r0, #0 a336: d1c3 bne.n a2c0 a338: f8bd 10e4 ldrh.w r1, [sp, #228] ; 0xe4 a33c: 3101 adds r1, #1 a33e: f8bd 30e0 ldrh.w r3, [sp, #224] ; 0xe0 a342: 1ac9 subs r1, r1, r3 _lv_memset_00(mask_buf + mask_p_start, lv_area_get_width(&map_area)); a344: b209 sxth r1, r1 a346: 4620 mov r0, r4 a348: 4ba6 ldr r3, [pc, #664] ; (a5e4 ) a34a: 4798 blx r3 a34c: e7b8 b.n a2c0 _lv_blend_map(clip_area, &map_area, color_buf, mask_buf, LV_DRAW_MASK_RES_CHANGED, opa, blend_mode); a34e: 9b0f ldr r3, [sp, #60] ; 0x3c a350: 9302 str r3, [sp, #8] a352: 9b16 ldr r3, [sp, #88] ; 0x58 a354: 9301 str r3, [sp, #4] a356: 2302 movs r3, #2 a358: 9300 str r3, [sp, #0] a35a: 9b21 ldr r3, [sp, #132] ; 0x84 a35c: 4652 mov r2, sl a35e: a938 add r1, sp, #224 ; 0xe0 a360: 980d ldr r0, [sp, #52] ; 0x34 a362: 4ca1 ldr r4, [pc, #644] ; (a5e8 ) a364: 47a0 blx r4 map_area.y1 = map_area.y2 + 1; a366: f8bd 30e6 ldrh.w r3, [sp, #230] ; 0xe6 a36a: 3301 adds r3, #1 a36c: b21b sxth r3, r3 a36e: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2 map_area.y2 = map_area.y1; a372: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6 mask_p = 0; a376: 2300 movs r3, #0 a378: 9326 str r3, [sp, #152] ; 0x98 a37a: e7ac b.n a2d6 a37c: f8dd b0c8 ldr.w fp, [sp, #200] ; 0xc8 a380: f8dd 90cc ldr.w r9, [sp, #204] ; 0xcc a384: 9f34 ldr r7, [sp, #208] ; 0xd0 a386: f8dd a0c4 ldr.w sl, [sp, #196] ; 0xc4 a38a: f8dd 80d4 ldr.w r8, [sp, #212] ; 0xd4 if(map_area.y1 != map_area.y2) { a38e: f9bd 30e6 ldrsh.w r3, [sp, #230] ; 0xe6 a392: f9bd 20e2 ldrsh.w r2, [sp, #226] ; 0xe2 a396: 429a cmp r2, r3 a398: d00e beq.n a3b8 map_area.y2--; a39a: 3b01 subs r3, #1 a39c: 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); a3a0: 9b0f ldr r3, [sp, #60] ; 0x3c a3a2: 9302 str r3, [sp, #8] a3a4: 9b16 ldr r3, [sp, #88] ; 0x58 a3a6: 9301 str r3, [sp, #4] a3a8: 2302 movs r3, #2 a3aa: 9300 str r3, [sp, #0] a3ac: 9b21 ldr r3, [sp, #132] ; 0x84 a3ae: 9a30 ldr r2, [sp, #192] ; 0xc0 a3b0: a938 add r1, sp, #224 ; 0xe0 a3b2: 980d ldr r0, [sp, #52] ; 0x34 a3b4: 4c8c ldr r4, [pc, #560] ; (a5e8 ) a3b6: 47a0 blx r4 _lv_mem_buf_release(mask_buf); a3b8: 9821 ldr r0, [sp, #132] ; 0x84 a3ba: 4c8c ldr r4, [pc, #560] ; (a5ec ) a3bc: 47a0 blx r4 _lv_mem_buf_release(color_buf); a3be: 9830 ldr r0, [sp, #192] ; 0xc0 a3c0: 47a0 blx r4 a3c2: e4fb b.n 9dbc draw_letter_normal(pos_x, pos_y, &g, clip_area, map_p, color, opa, blend_mode); a3c4: b22c sxth r4, r5 a3c6: f9bd 0054 ldrsh.w r0, [sp, #84] ; 0x54 a3ca: f8ad 608c strh.w r6, [sp, #140] ; 0x8c uint32_t bpp = g->bpp; a3ce: f89d 30f2 ldrb.w r3, [sp, #242] ; 0xf2 a3d2: 9320 str r3, [sp, #128] ; 0x80 if(bpp == 3) bpp = 4; a3d4: 2b03 cmp r3, #3 a3d6: f000 80c1 beq.w a55c switch(bpp) { a3da: 3b01 subs r3, #1 a3dc: 2b07 cmp r3, #7 a3de: f200 80c5 bhi.w a56c a3e2: e8df f013 tbh [pc, r3, lsl #1] a3e6: 00cd .short 0x00cd a3e8: 00c30008 .word 0x00c30008 a3ec: 00c300bd .word 0x00c300bd a3f0: 00c300c3 .word 0x00c300c3 a3f4: 00d5 .short 0x00d5 shades = 4; a3f6: 2304 movs r3, #4 bitmask_init = 0xC0; a3f8: 22c0 movs r2, #192 ; 0xc0 a3fa: 9212 str r2, [sp, #72] ; 0x48 bpp_opa_table_p = _lv_bpp2_opa_table; a3fc: 4a7c ldr r2, [pc, #496] ; (a5f0 ) a3fe: 9222 str r2, [sp, #136] ; 0x88 if(opa < LV_OPA_MAX) { a400: 9916 ldr r1, [sp, #88] ; 0x58 a402: 29f9 cmp r1, #249 ; 0xf9 a404: d82b bhi.n a45e if(prev_opa != opa || prev_bpp != bpp) { a406: 4a7b ldr r2, [pc, #492] ; (a5f4 ) a408: f892 2100 ldrb.w r2, [r2, #256] ; 0x100 a40c: 428a cmp r2, r1 a40e: f000 80c8 beq.w a5a2 for(i = 0; i < shades; i++) { a412: b1d3 cbz r3, a44a a414: 9e22 ldr r6, [sp, #136] ; 0x88 a416: 1e72 subs r2, r6, #1 a418: 4976 ldr r1, [pc, #472] ; (a5f4 ) a41a: 3901 subs r1, #1 a41c: 3b01 subs r3, #1 a41e: 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); a422: 9b16 ldr r3, [sp, #88] ; 0x58 a424: 461e mov r6, r3 a426: f8cd b050 str.w fp, [sp, #80] ; 0x50 a42a: 469b mov fp, r3 a42c: f812 3f01 ldrb.w r3, [r2, #1]! a430: 2bff cmp r3, #255 ; 0xff a432: bf1a itte ne a434: fb0b f303 mulne.w r3, fp, r3 a438: f3c3 2307 ubfxne r3, r3, #8, #8 a43c: 4633 moveq r3, r6 a43e: f801 3f01 strb.w r3, [r1, #1]! for(i = 0; i < shades; i++) { a442: 4594 cmp ip, r2 a444: d1f2 bne.n a42c a446: f8dd b050 ldr.w fp, [sp, #80] ; 0x50 prev_opa = opa; a44a: 4b6a ldr r3, [pc, #424] ; (a5f4 ) a44c: f89d 2058 ldrb.w r2, [sp, #88] ; 0x58 a450: f883 2100 strb.w r2, [r3, #256] ; 0x100 prev_bpp = bpp; a454: 9a20 ldr r2, [sp, #128] ; 0x80 a456: f8c3 2104 str.w r2, [r3, #260] ; 0x104 bpp_opa_table_p = opa_table; a45a: 9b1c ldr r3, [sp, #112] ; 0x70 a45c: 9322 str r3, [sp, #136] ; 0x88 int32_t box_w = g->box_w; a45e: f8bd 30ea ldrh.w r3, [sp, #234] ; 0xea a462: 9324 str r3, [sp, #144] ; 0x90 int32_t box_h = g->box_h; a464: f8bd 20ec ldrh.w r2, [sp, #236] ; 0xec int32_t width_bit = box_w * bpp; /*Letter width in bits*/ a468: 9920 ldr r1, [sp, #128] ; 0x80 a46a: fb01 fc03 mul.w ip, r1, r3 int32_t col_start = pos_x >= clip_area->x1 ? 0 : clip_area->x1 - pos_x; a46e: 9b0d ldr r3, [sp, #52] ; 0x34 a470: f9b3 3000 ldrsh.w r3, [r3] a474: 429c cmp r4, r3 a476: bfb4 ite lt a478: 1b1b sublt r3, r3, r4 a47a: 2300 movge r3, #0 a47c: 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; a47e: 9b0d ldr r3, [sp, #52] ; 0x34 a480: f9b3 3004 ldrsh.w r3, [r3, #4] a484: 9924 ldr r1, [sp, #144] ; 0x90 a486: 4421 add r1, r4 a488: 4299 cmp r1, r3 a48a: bfc6 itte gt a48c: 1b1b subgt r3, r3, r4 a48e: 3301 addgt r3, #1 a490: 9b24 ldrle r3, [sp, #144] ; 0x90 a492: 9325 str r3, [sp, #148] ; 0x94 int32_t row_start = pos_y >= clip_area->y1 ? 0 : clip_area->y1 - pos_y; a494: 9b0d ldr r3, [sp, #52] ; 0x34 a496: f9b3 3002 ldrsh.w r3, [r3, #2] a49a: 4298 cmp r0, r3 a49c: bfb4 ite lt a49e: 1a1b sublt r3, r3, r0 a4a0: 2300 movge r3, #0 a4a2: 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; a4a4: 9b0d ldr r3, [sp, #52] ; 0x34 a4a6: f9b3 3006 ldrsh.w r3, [r3, #6] a4aa: 1811 adds r1, r2, r0 a4ac: 4299 cmp r1, r3 a4ae: bfc3 ittte gt a4b0: 1a1b subgt r3, r3, r0 a4b2: 3301 addgt r3, #1 a4b4: 931b strgt r3, [sp, #108] ; 0x6c a4b6: 921b strle r2, [sp, #108] ; 0x6c uint32_t bit_ofs = (row_start * width_bit) + (col_start * bpp); a4b8: 9b14 ldr r3, [sp, #80] ; 0x50 a4ba: 9321 str r3, [sp, #132] ; 0x84 a4bc: 9920 ldr r1, [sp, #128] ; 0x80 a4be: fb03 f401 mul.w r4, r3, r1 a4c2: 9826 ldr r0, [sp, #152] ; 0x98 a4c4: fb00 440c mla r4, r0, ip, r4 map_p += bit_ofs >> 3; a4c8: eb0e 06d4 add.w r6, lr, r4, lsr #3 col_bit = bit_ofs & 0x7; /* "& 0x7" equals to "% 8" just faster */ a4cc: 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; a4d0: 9924 ldr r1, [sp, #144] ; 0x90 a4d2: fb02 fe01 mul.w lr, r2, r1 a4d6: 4672 mov r2, lr a4d8: f5be 7ff0 cmp.w lr, #480 ; 0x1e0 a4dc: bfa8 it ge a4de: f44f 72f0 movge.w r2, #480 ; 0x1e0 a4e2: 921d str r2, [sp, #116] ; 0x74 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); a4e4: 4610 mov r0, r2 a4e6: 4b44 ldr r3, [pc, #272] ; (a5f8 ) a4e8: 4798 blx r3 a4ea: 9018 str r0, [sp, #96] ; 0x60 fill_area.x1 = col_start + pos_x; a4ec: b2ad uxth r5, r5 a4ee: 9b14 ldr r3, [sp, #80] ; 0x50 a4f0: 18eb adds r3, r5, r3 a4f2: f8ad 30e0 strh.w r3, [sp, #224] ; 0xe0 fill_area.x2 = col_end + pos_x - 1; a4f6: 3d01 subs r5, #1 a4f8: 9a25 ldr r2, [sp, #148] ; 0x94 a4fa: 18ab adds r3, r5, r2 a4fc: f8ad 30e4 strh.w r3, [sp, #228] ; 0xe4 fill_area.y1 = row_start + pos_y; a500: 9d15 ldr r5, [sp, #84] ; 0x54 a502: 9826 ldr r0, [sp, #152] ; 0x98 a504: 4405 add r5, r0 a506: b22b sxth r3, r5 a508: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2 fill_area.y2 = fill_area.y1; a50c: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); a510: 4b3a ldr r3, [pc, #232] ; (a5fc ) a512: 4798 blx r3 a514: 901e str r0, [sp, #120] ; 0x78 uint32_t col_bit_max = 8 - bpp; a516: 9920 ldr r1, [sp, #128] ; 0x80 a518: f1c1 0508 rsb r5, r1, #8 uint32_t col_bit_row_ofs = (box_w + col_start - col_end) * bpp; a51c: 9a24 ldr r2, [sp, #144] ; 0x90 a51e: 9b14 ldr r3, [sp, #80] ; 0x50 a520: 18d3 adds r3, r2, r3 a522: 9a25 ldr r2, [sp, #148] ; 0x94 a524: 1a9b subs r3, r3, r2 a526: fb01 f303 mul.w r3, r1, r3 a52a: 9320 str r3, [sp, #128] ; 0x80 for(row = row_start ; row < row_end; row++) { a52c: 9826 ldr r0, [sp, #152] ; 0x98 a52e: 9b1b ldr r3, [sp, #108] ; 0x6c a530: 4298 cmp r0, r3 a532: f280 80df bge.w a6f4 a536: f04f 0e00 mov.w lr, #0 mask_buf[mask_p] = 0; a53a: f8cd b090 str.w fp, [sp, #144] ; 0x90 a53e: f8cd 9098 str.w r9, [sp, #152] ; 0x98 a542: 9727 str r7, [sp, #156] ; 0x9c a544: 460f mov r7, r1 a546: 9515 str r5, [sp, #84] ; 0x54 a548: f8cd a0a0 str.w sl, [sp, #160] ; 0xa0 a54c: f8dd a094 ldr.w sl, [sp, #148] ; 0x94 a550: 4681 mov r9, r0 a552: f8cd 8094 str.w r8, [sp, #148] ; 0x94 a556: f8dd 8088 ldr.w r8, [sp, #136] ; 0x88 a55a: e07a b.n a652 if(bpp == 3) bpp = 4; a55c: 2304 movs r3, #4 a55e: 9320 str r3, [sp, #128] ; 0x80 shades = 16; a560: 2310 movs r3, #16 bitmask_init = 0xF0; a562: 22f0 movs r2, #240 ; 0xf0 a564: 9212 str r2, [sp, #72] ; 0x48 bpp_opa_table_p = _lv_bpp4_opa_table; a566: 4a26 ldr r2, [pc, #152] ; (a600 ) a568: 9222 str r2, [sp, #136] ; 0x88 a56a: e749 b.n a400 LV_LOG_WARN("lv_draw_letter: invalid bpp"); a56c: 4b25 ldr r3, [pc, #148] ; (a604 ) a56e: 9300 str r3, [sp, #0] a570: 4b25 ldr r3, [pc, #148] ; (a608 ) a572: f240 12e5 movw r2, #485 ; 0x1e5 a576: 4925 ldr r1, [pc, #148] ; (a60c ) a578: 2002 movs r0, #2 a57a: 4c25 ldr r4, [pc, #148] ; (a610 ) a57c: 47a0 blx r4 a57e: e41d b.n 9dbc uint32_t bpp = g->bpp; a580: 2301 movs r3, #1 a582: 9320 str r3, [sp, #128] ; 0x80 shades = 2; a584: 2302 movs r3, #2 bitmask_init = 0x80; a586: 2280 movs r2, #128 ; 0x80 a588: 9212 str r2, [sp, #72] ; 0x48 bpp_opa_table_p = _lv_bpp1_opa_table; a58a: 4a22 ldr r2, [pc, #136] ; (a614 ) a58c: 9222 str r2, [sp, #136] ; 0x88 a58e: e737 b.n a400 uint32_t bpp = g->bpp; a590: 2308 movs r3, #8 a592: 9320 str r3, [sp, #128] ; 0x80 shades = 256; a594: f44f 7380 mov.w r3, #256 ; 0x100 bitmask_init = 0xFF; a598: 22ff movs r2, #255 ; 0xff a59a: 9212 str r2, [sp, #72] ; 0x48 bpp_opa_table_p = _lv_bpp8_opa_table; a59c: 4a1e ldr r2, [pc, #120] ; (a618 ) a59e: 9222 str r2, [sp, #136] ; 0x88 a5a0: e72e b.n a400 if(prev_opa != opa || prev_bpp != bpp) { a5a2: 4a14 ldr r2, [pc, #80] ; (a5f4 ) a5a4: f8d2 2104 ldr.w r2, [r2, #260] ; 0x104 a5a8: 9920 ldr r1, [sp, #128] ; 0x80 a5aa: 4291 cmp r1, r2 a5ac: f47f af31 bne.w a412 a5b0: e74b b.n a44a map_p++; a5b2: 3601 adds r6, #1 bitmask = bitmask_init; a5b4: 9812 ldr r0, [sp, #72] ; 0x48 col_bit = 0; a5b6: 2400 movs r4, #0 a5b8: 3101 adds r1, #1 for(col = col_start; col < col_end; col++) { a5ba: 458c cmp ip, r1 a5bc: d02e beq.n a61c letter_px = (*map_p & bitmask) >> (col_bit_max - col_bit); a5be: 7833 ldrb r3, [r6, #0] a5c0: 4003 ands r3, r0 a5c2: 1b2a subs r2, r5, r4 a5c4: 40d3 lsrs r3, r2 if(letter_px) { a5c6: f013 0fff tst.w r3, #255 ; 0xff mask_buf[mask_p] = bpp_opa_table_p[letter_px]; a5ca: bf1a itte ne a5cc: b2db uxtbne r3, r3 a5ce: f818 3003 ldrbne.w r3, [r8, r3] mask_buf[mask_p] = 0; a5d2: 2300 moveq r3, #0 a5d4: 700b strb r3, [r1, #0] if(col_bit < col_bit_max) { a5d6: 42a5 cmp r5, r4 a5d8: d9eb bls.n a5b2 col_bit += bpp; a5da: 443c add r4, r7 bitmask = bitmask >> bpp; a5dc: 40f8 lsrs r0, r7 a5de: e7eb b.n a5b8 a5e0: 0000be05 .word 0x0000be05 a5e4: 00012b1f .word 0x00012b1f a5e8: 00008269 .word 0x00008269 a5ec: 00012559 .word 0x00012559 a5f0: 00024d4c .word 0x00024d4c a5f4: 20002a50 .word 0x20002a50 a5f8: 00012925 .word 0x00012925 a5fc: 0000bead .word 0x0000bead a600: 00024d50 .word 0x00024d50 a604: 00024f70 .word 0x00024f70 a608: 00024e84 .word 0x00024e84 a60c: 00024ea0 .word 0x00024ea0 a610: 00012245 .word 0x00012245 a614: 00024d48 .word 0x00024d48 a618: 00024d60 .word 0x00024d60 a61c: 9515 str r5, [sp, #84] ; 0x54 if(other_mask_cnt) { a61e: 9b1e ldr r3, [sp, #120] ; 0x78 a620: bb53 cbnz r3, a678 if((uint32_t) mask_p + (col_end - col_start) < mask_buf_size) { a622: 9b14 ldr r3, [sp, #80] ; 0x50 a624: ebaa 0303 sub.w r3, sl, r3 a628: 445b add r3, fp a62a: 9a1d ldr r2, [sp, #116] ; 0x74 a62c: 429a cmp r2, r3 a62e: d93f bls.n a6b0 fill_area.y2 ++; a630: f8bd 30e6 ldrh.w r3, [sp, #230] ; 0xe6 a634: 3301 adds r3, #1 a636: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6 a63a: 46de mov lr, fp col_bit += col_bit_row_ofs; a63c: 9b20 ldr r3, [sp, #128] ; 0x80 a63e: 441c add r4, r3 map_p += (col_bit >> 3); a640: eb06 06d4 add.w r6, r6, r4, lsr #3 col_bit = col_bit & 0x7; a644: f004 0407 and.w r4, r4, #7 for(row = row_start ; row < row_end; row++) { a648: f109 0901 add.w r9, r9, #1 a64c: 9b1b ldr r3, [sp, #108] ; 0x6c a64e: 4599 cmp r9, r3 a650: da47 bge.n a6e2 bitmask = bitmask_init >> col_bit; a652: 9b12 ldr r3, [sp, #72] ; 0x48 a654: fa23 f004 lsr.w r0, r3, r4 for(col = col_start; col < col_end; col++) { a658: 9b14 ldr r3, [sp, #80] ; 0x50 a65a: 4553 cmp r3, sl a65c: da0a bge.n a674 a65e: 9a18 ldr r2, [sp, #96] ; 0x60 a660: eb02 010e add.w r1, r2, lr a664: 9b21 ldr r3, [sp, #132] ; 0x84 a666: ebaa 0b03 sub.w fp, sl, r3 a66a: 44f3 add fp, lr a66c: eb02 0c0b add.w ip, r2, fp a670: 9d15 ldr r5, [sp, #84] ; 0x54 a672: e7a4 b.n a5be a674: 46f3 mov fp, lr a676: e7d2 b.n a61e lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf + mask_p_start, fill_area.x1, fill_area.y2, a678: 9b18 ldr r3, [sp, #96] ; 0x60 a67a: 4473 add r3, lr a67c: 4618 mov r0, r3 a67e: 9322 str r3, [sp, #136] ; 0x88 a680: f9bd 10e0 ldrsh.w r1, [sp, #224] ; 0xe0 a684: f8bd 30e4 ldrh.w r3, [sp, #228] ; 0xe4 a688: 3301 adds r3, #1 a68a: 1a5b subs r3, r3, r1 a68c: b21b sxth r3, r3 a68e: f9bd 20e6 ldrsh.w r2, [sp, #230] ; 0xe6 a692: 4d85 ldr r5, [pc, #532] ; (a8a8 ) a694: 47a8 blx r5 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { a696: 2800 cmp r0, #0 a698: d1c3 bne.n a622 a69a: f8bd 10e4 ldrh.w r1, [sp, #228] ; 0xe4 a69e: 3101 adds r1, #1 a6a0: f8bd 30e0 ldrh.w r3, [sp, #224] ; 0xe0 a6a4: 1ac9 subs r1, r1, r3 _lv_memset_00(mask_buf + mask_p_start, lv_area_get_width(&fill_area)); a6a6: b209 sxth r1, r1 a6a8: 9822 ldr r0, [sp, #136] ; 0x88 a6aa: 4b80 ldr r3, [pc, #512] ; (a8ac ) a6ac: 4798 blx r3 a6ae: e7b8 b.n a622 _lv_blend_fill(clip_area, &fill_area, a6b0: 9b0f ldr r3, [sp, #60] ; 0x3c a6b2: 9302 str r3, [sp, #8] a6b4: 23ff movs r3, #255 ; 0xff a6b6: 9301 str r3, [sp, #4] a6b8: 2302 movs r3, #2 a6ba: 9300 str r3, [sp, #0] a6bc: 9b18 ldr r3, [sp, #96] ; 0x60 a6be: f8bd 208c ldrh.w r2, [sp, #140] ; 0x8c a6c2: a938 add r1, sp, #224 ; 0xe0 a6c4: 980d ldr r0, [sp, #52] ; 0x34 a6c6: f8df b1e8 ldr.w fp, [pc, #488] ; a8b0 a6ca: 47d8 blx fp fill_area.y1 = fill_area.y2 + 1; a6cc: f8bd 30e6 ldrh.w r3, [sp, #230] ; 0xe6 a6d0: 3301 adds r3, #1 a6d2: b21b sxth r3, r3 a6d4: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2 fill_area.y2 = fill_area.y1; a6d8: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6 mask_p = 0; a6dc: f04f 0e00 mov.w lr, #0 a6e0: e7ac b.n a63c a6e2: f8dd b090 ldr.w fp, [sp, #144] ; 0x90 a6e6: f8dd 9098 ldr.w r9, [sp, #152] ; 0x98 a6ea: 9f27 ldr r7, [sp, #156] ; 0x9c a6ec: f8dd a0a0 ldr.w sl, [sp, #160] ; 0xa0 a6f0: f8dd 8094 ldr.w r8, [sp, #148] ; 0x94 if(fill_area.y1 != fill_area.y2) { a6f4: f9bd 30e6 ldrsh.w r3, [sp, #230] ; 0xe6 a6f8: f9bd 20e2 ldrsh.w r2, [sp, #226] ; 0xe2 a6fc: 429a cmp r2, r3 a6fe: d00f beq.n a720 fill_area.y2--; a700: 3b01 subs r3, #1 a702: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6 _lv_blend_fill(clip_area, &fill_area, a706: 9b0f ldr r3, [sp, #60] ; 0x3c a708: 9302 str r3, [sp, #8] a70a: 23ff movs r3, #255 ; 0xff a70c: 9301 str r3, [sp, #4] a70e: 2302 movs r3, #2 a710: 9300 str r3, [sp, #0] a712: 9b18 ldr r3, [sp, #96] ; 0x60 a714: f8bd 208c ldrh.w r2, [sp, #140] ; 0x8c a718: a938 add r1, sp, #224 ; 0xe0 a71a: 980d ldr r0, [sp, #52] ; 0x34 a71c: 4c64 ldr r4, [pc, #400] ; (a8b0 ) a71e: 47a0 blx r4 _lv_mem_buf_release(mask_buf); a720: 9818 ldr r0, [sp, #96] ; 0x60 a722: 4b64 ldr r3, [pc, #400] ; (a8b4 ) a724: 4798 blx r3 a726: f7ff bb49 b.w 9dbc cmd_state = CMD_STATE_WAIT; a72a: 2300 movs r3, #0 a72c: 9306 str r3, [sp, #24] a72e: f7ff bb4d b.w 9dcc a732: 4653 mov r3, sl a734: 46ca mov sl, r9 a736: 4699 mov r9, r3 if(dsc->decor & LV_TEXT_DECOR_STRIKETHROUGH) { a738: f898 3018 ldrb.w r3, [r8, #24] a73c: f013 0f02 tst.w r3, #2 a740: d146 bne.n a7d0 if(dsc->decor & LV_TEXT_DECOR_UNDERLINE) { a742: f898 3018 ldrb.w r3, [r8, #24] a746: f013 0f01 tst.w r3, #1 a74a: d162 bne.n a812 line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); a74c: 9a0a ldr r2, [sp, #40] ; 0x28 a74e: 9d07 ldr r5, [sp, #28] a750: 1956 adds r6, r2, r5 a752: f9b8 200c ldrsh.w r2, [r8, #12] a756: f898 3017 ldrb.w r3, [r8, #23] a75a: 9300 str r3, [sp, #0] a75c: 9b10 ldr r3, [sp, #64] ; 0x40 a75e: 9905 ldr r1, [sp, #20] a760: 4630 mov r0, r6 a762: 4c55 ldr r4, [pc, #340] ; (a8b8 ) a764: 47a0 blx r4 a766: 1944 adds r4, r0, r5 pos.x = coords->x1; a768: 9b13 ldr r3, [sp, #76] ; 0x4c a76a: f9b3 5000 ldrsh.w r5, [r3] if(dsc->flag & LV_TXT_FLAG_CENTER) { a76e: f898 2017 ldrb.w r2, [r8, #23] a772: f012 0f04 tst.w r2, #4 a776: d16c bne.n a852 else if(dsc->flag & LV_TXT_FLAG_RIGHT) { a778: f012 0f08 tst.w r2, #8 a77c: d17e bne.n a87c a77e: 9b0e ldr r3, [sp, #56] ; 0x38 a780: 9917 ldr r1, [sp, #92] ; 0x5c a782: 440b add r3, r1 a784: b21b sxth r3, r3 a786: 9a11 ldr r2, [sp, #68] ; 0x44 a788: 440a add r2, r1 a78a: b292 uxth r2, r2 a78c: 9211 str r2, [sp, #68] ; 0x44 line_start = line_end; a78e: f8dd b01c ldr.w fp, [sp, #28] pos.y += line_height; a792: 930e str r3, [sp, #56] ; 0x38 if(pos.y > mask->y2) return; a794: 9a0d ldr r2, [sp, #52] ; 0x34 a796: f9b2 2006 ldrsh.w r2, [r2, #6] a79a: 429a cmp r2, r3 a79c: f6ff a93f blt.w 9a1e line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); a7a0: 9407 str r4, [sp, #28] while(txt[line_start] != '\0') { a7a2: 9a0a ldr r2, [sp, #40] ; 0x28 a7a4: 4613 mov r3, r2 a7a6: 445b add r3, fp a7a8: 9309 str r3, [sp, #36] ; 0x24 a7aa: f812 300b ldrb.w r3, [r2, fp] a7ae: 2b00 cmp r3, #0 a7b0: f43f a935 beq.w 9a1e pos.x += x_ofs; a7b4: 9b1a ldr r3, [sp, #104] ; 0x68 a7b6: 441d add r5, r3 a7b8: fa0f f985 sxth.w r9, r5 i = 0; a7bc: 2300 movs r3, #0 a7be: 9352 str r3, [sp, #328] ; 0x148 cmd_state = CMD_STATE_WAIT; a7c0: 9306 str r3, [sp, #24] bpp_opa_table_p = opa_table; a7c2: 4b3e ldr r3, [pc, #248] ; (a8bc ) a7c4: 931c str r3, [sp, #112] ; 0x70 a7c6: 464b mov r3, r9 a7c8: 46d1 mov r9, sl a7ca: 469a mov sl, r3 while(i < line_end - line_start) { a7cc: f7ff bafe b.w 9dcc p1.x = pos_x_start; a7d0: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c a7d4: f8ad 30e0 strh.w r3, [sp, #224] ; 0xe0 p1.y = pos.y + (dsc->font->line_height / 2) + line_dsc.width / 2; a7d8: f8d8 3004 ldr.w r3, [r8, #4] a7dc: f9b3 3008 ldrsh.w r3, [r3, #8] a7e0: eb03 72d3 add.w r2, r3, r3, lsr #31 a7e4: f9bd 314e ldrsh.w r3, [sp, #334] ; 0x14e a7e8: eb03 73d3 add.w r3, r3, r3, lsr #31 a7ec: 105b asrs r3, r3, #1 a7ee: eb03 0362 add.w r3, r3, r2, asr #1 a7f2: 9a11 ldr r2, [sp, #68] ; 0x44 a7f4: 4413 add r3, r2 a7f6: b21b sxth r3, r3 a7f8: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2 p2.x = pos.x; a7fc: f8ad 90e8 strh.w r9, [sp, #232] ; 0xe8 p2.y = p1.y; a800: f8ad 30ea strh.w r3, [sp, #234] ; 0xea lv_draw_line(&p1, &p2, mask, &line_dsc); a804: ab53 add r3, sp, #332 ; 0x14c a806: 9a0d ldr r2, [sp, #52] ; 0x34 a808: a93a add r1, sp, #232 ; 0xe8 a80a: a838 add r0, sp, #224 ; 0xe0 a80c: 4c2c ldr r4, [pc, #176] ; (a8c0 ) a80e: 47a0 blx r4 a810: e797 b.n a742 p1.x = pos_x_start; a812: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c a816: 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; a81a: f8d8 2004 ldr.w r2, [r8, #4] a81e: f9bd 314e ldrsh.w r3, [sp, #334] ; 0x14e a822: eb03 73d3 add.w r3, r3, r3, lsr #31 a826: 105b asrs r3, r3, #1 a828: 3301 adds r3, #1 a82a: 8911 ldrh r1, [r2, #8] a82c: 440b add r3, r1 a82e: 8952 ldrh r2, [r2, #10] a830: 1a9b subs r3, r3, r2 a832: 9a11 ldr r2, [sp, #68] ; 0x44 a834: 4413 add r3, r2 a836: b21b sxth r3, r3 a838: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2 p2.x = pos.x; a83c: f8ad 90e8 strh.w r9, [sp, #232] ; 0xe8 p2.y = p1.y; a840: f8ad 30ea strh.w r3, [sp, #234] ; 0xea lv_draw_line(&p1, &p2, mask, &line_dsc); a844: ab53 add r3, sp, #332 ; 0x14c a846: 9a0d ldr r2, [sp, #52] ; 0x34 a848: a93a add r1, sp, #232 ; 0xe8 a84a: a838 add r0, sp, #224 ; 0xe0 a84c: 4c1c ldr r4, [pc, #112] ; (a8c0 ) a84e: 47a0 blx r4 a850: e77c b.n a74c _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); a852: f9b8 300c ldrsh.w r3, [r8, #12] a856: 9200 str r2, [sp, #0] a858: 9a05 ldr r2, [sp, #20] a85a: 4601 mov r1, r0 a85c: 4630 mov r0, r6 a85e: 4e19 ldr r6, [pc, #100] ; (a8c4 ) a860: 47b0 blx r6 a862: 9a13 ldr r2, [sp, #76] ; 0x4c a864: 8893 ldrh r3, [r2, #4] a866: 3301 adds r3, #1 a868: 8812 ldrh r2, [r2, #0] a86a: 1a9b subs r3, r3, r2 pos.x += (lv_area_get_width(coords) - line_width) / 2; a86c: b21b sxth r3, r3 a86e: 1a18 subs r0, r3, r0 a870: eb00 70d0 add.w r0, r0, r0, lsr #31 a874: eb05 0560 add.w r5, r5, r0, asr #1 a878: b22d sxth r5, r5 a87a: e780 b.n a77e _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); a87c: f9b8 300c ldrsh.w r3, [r8, #12] a880: 9200 str r2, [sp, #0] a882: 9a05 ldr r2, [sp, #20] a884: 4601 mov r1, r0 a886: 4630 mov r0, r6 a888: 4e0e ldr r6, [pc, #56] ; (a8c4 ) a88a: 47b0 blx r6 a88c: 9a13 ldr r2, [sp, #76] ; 0x4c a88e: 8893 ldrh r3, [r2, #4] a890: 3301 adds r3, #1 a892: 8812 ldrh r2, [r2, #0] a894: 1a9b subs r3, r3, r2 pos.x += lv_area_get_width(coords) - line_width; a896: b21b sxth r3, r3 a898: 1a18 subs r0, r3, r0 a89a: 4405 add r5, r0 a89c: b22d sxth r5, r5 a89e: e76e b.n a77e cmd_state = CMD_STATE_WAIT; a8a0: 2300 movs r3, #0 a8a2: 9306 str r3, [sp, #24] a8a4: f7ff ba0e b.w 9cc4 a8a8: 0000be05 .word 0x0000be05 a8ac: 00012b1f .word 0x00012b1f a8b0: 00007739 .word 0x00007739 a8b4: 00012559 .word 0x00012559 a8b8: 00013d99 .word 0x00013d99 a8bc: 20002a50 .word 0x20002a50 a8c0: 0000a8f9 .word 0x0000a8f9 a8c4: 00013fc5 .word 0x00013fc5 0000a8c8 : /********************** * GLOBAL FUNCTIONS **********************/ LV_ATTRIBUTE_FAST_MEM void lv_draw_line_dsc_init(lv_draw_line_dsc_t * dsc) { a8c8: b510 push {r4, lr} a8ca: 4604 mov r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_line_dsc_t)); a8cc: 210a movs r1, #10 a8ce: 4b09 ldr r3, [pc, #36] ; (a8f4 ) a8d0: 4798 blx r3 dsc->width = 1; a8d2: 2301 movs r3, #1 a8d4: 8063 strh r3, [r4, #2] dsc->opa = LV_OPA_COVER; a8d6: 23ff movs r3, #255 ; 0xff a8d8: 7223 strb r3, [r4, #8] dsc->color = LV_COLOR_BLACK; a8da: 7823 ldrb r3, [r4, #0] a8dc: f36f 0304 bfc r3, #0, #5 a8e0: 7023 strb r3, [r4, #0] a8e2: 8823 ldrh r3, [r4, #0] a8e4: f36f 134a bfc r3, #5, #6 a8e8: 8023 strh r3, [r4, #0] a8ea: 0a1b lsrs r3, r3, #8 a8ec: f36f 03c7 bfc r3, #3, #5 a8f0: 7063 strb r3, [r4, #1] a8f2: bd10 pop {r4, pc} a8f4: 00012b1f .word 0x00012b1f 0000a8f8 : * @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) { a8f8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} a8fc: b0cb sub sp, #300 ; 0x12c if(dsc->width == 0) return; a8fe: f9b3 5002 ldrsh.w r5, [r3, #2] a902: 2d00 cmp r5, #0 a904: f000 8418 beq.w b138 if(dsc->opa <= LV_OPA_MIN) return; a908: 7a1c ldrb r4, [r3, #8] a90a: 2c05 cmp r4, #5 a90c: f240 8414 bls.w b138 if(point1->x == point2->x && point1->y == point2->y) return; a910: f9b0 6000 ldrsh.w r6, [r0] a914: f9b1 7000 ldrsh.w r7, [r1] a918: 42be cmp r6, r7 a91a: f000 8130 beq.w ab7e a91e: 461c mov r4, r3 a920: 4696 mov lr, r2 a922: 9208 str r2, [sp, #32] a924: 9107 str r1, [sp, #28] a926: 9006 str r0, [sp, #24] lv_area_t clip_line; clip_line.x1 = LV_MATH_MIN(point1->x, point2->x) - dsc->width / 2; a928: eb05 75d5 add.w r5, r5, r5, lsr #31 a92c: f3c5 054f ubfx r5, r5, #1, #16 a930: 42be cmp r6, r7 a932: bfd4 ite le a934: ebc5 0306 rsble r3, r5, r6 a938: ebc5 0307 rsbgt r3, r5, r7 a93c: f8ad 3120 strh.w r3, [sp, #288] ; 0x120 clip_line.x2 = LV_MATH_MAX(point1->x, point2->x) + dsc->width / 2; a940: 42be cmp r6, r7 a942: bfac ite ge a944: 19ab addge r3, r5, r6 a946: 19eb addlt r3, r5, r7 a948: f8ad 3124 strh.w r3, [sp, #292] ; 0x124 clip_line.y1 = LV_MATH_MIN(point1->y, point2->y) - dsc->width / 2; a94c: 460f mov r7, r1 a94e: f9b1 2002 ldrsh.w r2, [r1, #2] a952: 4606 mov r6, r0 a954: f9b0 3002 ldrsh.w r3, [r0, #2] a958: 429a cmp r2, r3 a95a: bfd4 ite le a95c: ebc5 0102 rsble r1, r5, r2 a960: ebc5 0103 rsbgt r1, r5, r3 a964: f8ad 1122 strh.w r1, [sp, #290] ; 0x122 clip_line.y2 = LV_MATH_MAX(point1->y, point2->y) + dsc->width / 2; a968: 429a cmp r2, r3 a96a: bfac ite ge a96c: 18ad addge r5, r5, r2 a96e: 18ed addlt r5, r5, r3 a970: f8ad 5126 strh.w r5, [sp, #294] ; 0x126 bool is_common; is_common = _lv_area_intersect(&clip_line, &clip_line, clip); a974: 4672 mov r2, lr a976: a948 add r1, sp, #288 ; 0x120 a978: 4608 mov r0, r1 a97a: 4bab ldr r3, [pc, #684] ; (ac28 ) a97c: 4798 blx r3 if(!is_common) return; a97e: 2800 cmp r0, #0 a980: f000 83da beq.w b138 if(point1->y == point2->y) draw_line_hor(point1, point2, &clip_line, dsc); a984: f9b6 6002 ldrsh.w r6, [r6, #2] a988: f9b7 5002 ldrsh.w r5, [r7, #2] a98c: 42ae cmp r6, r5 a98e: f000 80fe beq.w ab8e else if(point1->x == point2->x) draw_line_ver(point1, point2, &clip_line, dsc); a992: 9b06 ldr r3, [sp, #24] a994: f9b3 3000 ldrsh.w r3, [r3] a998: 461a mov r2, r3 a99a: 9305 str r3, [sp, #20] a99c: 9b07 ldr r3, [sp, #28] a99e: f9b3 a000 ldrsh.w sl, [r3] a9a2: 4552 cmp r2, sl a9a4: f000 8201 beq.w adaa 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) { a9a8: 42ae cmp r6, r5 a9aa: db06 blt.n a9ba a9ac: 4633 mov r3, r6 p2.y = point2->y; p1.x = point1->x; p2.x = point2->x; } else { p1.y = point2->y; a9ae: 462e mov r6, r5 p2.y = point1->y; a9b0: 461d mov r5, r3 if(point1->y < point2->y) { a9b2: 9b05 ldr r3, [sp, #20] p1.x = point2->x; a9b4: f8cd a014 str.w sl, [sp, #20] p2.x = point1->x; a9b8: 469a mov sl, r3 } int32_t xdiff = p2.x - p1.x; a9ba: 9b05 ldr r3, [sp, #20] a9bc: ebaa 0303 sub.w r3, sl, r3 a9c0: 9309 str r3, [sp, #36] ; 0x24 int32_t ydiff = p2.y - p1.y; a9c2: 1baa subs r2, r5, r6 a9c4: 920a str r2, [sp, #40] ; 0x28 bool flat = LV_MATH_ABS(xdiff) > LV_MATH_ABS(ydiff) ? true : false; a9c6: 2b00 cmp r3, #0 a9c8: bfb8 it lt a9ca: 425b neglt r3, r3 a9cc: 469b mov fp, r3 a9ce: 2a00 cmp r2, #0 a9d0: bfb8 it lt a9d2: 4252 neglt r2, r2 a9d4: 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; a9d6: 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); a9da: 4293 cmp r3, r2 a9dc: bfc7 ittee gt a9de: 0153 lslgt r3, r2, #5 a9e0: fb93 f3fb sdivgt r3, r3, fp else wcorr_i = (LV_MATH_ABS(xdiff) << 5) / LV_MATH_ABS(ydiff); a9e4: ea4f 134b movle.w r3, fp, lsl #5 a9e8: fb93 f3f2 sdivle r3, r3, r2 w = (w * wcorr[wcorr_i] + 63) >> 7; /*+ 63 for rounding*/ a9ec: 4a8f ldr r2, [pc, #572] ; (ac2c ) a9ee: 5cd3 ldrb r3, [r2, r3] a9f0: fb09 f903 mul.w r9, r9, r3 a9f4: f109 093f add.w r9, r9, #63 ; 0x3f a9f8: ea4f 13e9 mov.w r3, r9, asr #7 a9fc: 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; a9fe: b29b uxth r3, r3 aa00: 9805 ldr r0, [sp, #20] aa02: 4582 cmp sl, r0 aa04: bfd4 ite le aa06: ebc3 020a rsble r2, r3, sl aa0a: ebc3 0200 rsbgt r2, r3, r0 aa0e: f8ad 2038 strh.w r2, [sp, #56] ; 0x38 draw_area.x2 = LV_MATH_MAX(p1.x, p2.x) + w; aa12: 4582 cmp sl, r0 aa14: bfac ite ge aa16: eb03 020a addge.w r2, r3, sl aa1a: 181a addlt r2, r3, r0 aa1c: f8ad 203c strh.w r2, [sp, #60] ; 0x3c draw_area.y1 = LV_MATH_MIN(p1.y, p2.y) - w; aa20: 42b5 cmp r5, r6 aa22: bfd4 ite le aa24: ebc3 0205 rsble r2, r3, r5 aa28: ebc3 0206 rsbgt r2, r3, r6 aa2c: f8ad 203a strh.w r2, [sp, #58] ; 0x3a draw_area.y2 = LV_MATH_MAX(p1.y, p2.y) + w; aa30: 42b5 cmp r5, r6 aa32: bfac ite ge aa34: 195b addge r3, r3, r5 aa36: 199b addlt r3, r3, r6 aa38: 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); aa3c: aa48 add r2, sp, #288 ; 0x120 aa3e: a90e add r1, sp, #56 ; 0x38 aa40: 4608 mov r0, r1 aa42: 4b79 ldr r3, [pc, #484] ; (ac28 ) aa44: 4798 blx r3 if(is_common == false) return; aa46: 2800 cmp r0, #0 aa48: f000 8372 beq.w b130 int32_t w_half0 = w >> 1; aa4c: ea4f 2929 mov.w r9, r9, asr #8 int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ aa50: f007 0301 and.w r3, r7, #1 aa54: 444b add r3, r9 aa56: 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) { aa58: 45c3 cmp fp, r8 aa5a: f340 82b6 ble.w afca if(xdiff > 0) { aa5e: 9a09 ldr r2, [sp, #36] ; 0x24 aa60: 2a00 cmp r2, #0 aa62: f340 828e ble.w af82 lv_draw_mask_line_points_init(&mask_left_param, p1.x, p1.y - w_half0, p2.x, p2.y - w_half0, aa66: fa1f fb86 uxth.w fp, r6 aa6a: fa1f f389 uxth.w r3, r9 aa6e: fa1f f985 uxth.w r9, r5 aa72: ebab 0203 sub.w r2, fp, r3 aa76: 2100 movs r1, #0 aa78: 9101 str r1, [sp, #4] aa7a: eba9 0303 sub.w r3, r9, r3 aa7e: b21b sxth r3, r3 aa80: 9300 str r3, [sp, #0] aa82: 4653 mov r3, sl aa84: b212 sxth r2, r2 aa86: 9905 ldr r1, [sp, #20] aa88: a812 add r0, sp, #72 ; 0x48 aa8a: 4f69 ldr r7, [pc, #420] ; (ac30 ) aa8c: 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, aa8e: f8bd 802c ldrh.w r8, [sp, #44] ; 0x2c aa92: eb0b 0208 add.w r2, fp, r8 aa96: 2301 movs r3, #1 aa98: 9301 str r3, [sp, #4] aa9a: 44c1 add r9, r8 aa9c: fa0f f389 sxth.w r3, r9 aaa0: 9300 str r3, [sp, #0] aaa2: 4653 mov r3, sl aaa4: b212 sxth r2, r2 aaa6: 9905 ldr r1, [sp, #20] aaa8: a81d add r0, sp, #116 ; 0x74 aaaa: 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); aaac: 2100 movs r1, #0 aaae: a812 add r0, sp, #72 ; 0x48 aab0: f8df 819c ldr.w r8, [pc, #412] ; ac50 aab4: 47c0 blx r8 aab6: 900b str r0, [sp, #44] ; 0x2c int16_t mask_right_id = lv_draw_mask_add(&mask_right_param, NULL); aab8: 2100 movs r1, #0 aaba: a81d add r0, sp, #116 ; 0x74 aabc: 47c0 blx r8 aabe: 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) { aac0: 7a63 ldrb r3, [r4, #9] aac2: f013 0f10 tst.w r3, #16 aac6: f000 82a4 beq.w b012 int16_t mask_bottom_id = LV_MASK_ID_INV; aaca: f04f 33ff mov.w r3, #4294967295 aace: 930d str r3, [sp, #52] ; 0x34 int16_t mask_top_id = LV_MASK_ID_INV; aad0: 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(); aad2: 4b58 ldr r3, [pc, #352] ; (ac34 ) aad4: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); aad6: 4b58 ldr r3, [pc, #352] ; (ac38 ) aad8: 4798 blx r3 aada: 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; aadc: 8a06 ldrh r6, [r0, #16] aade: f8bd 5038 ldrh.w r5, [sp, #56] ; 0x38 aae2: 1bad subs r5, r5, r6 aae4: b2aa uxth r2, r5 aae6: f8ad 2038 strh.w r2, [sp, #56] ; 0x38 draw_area.y1 -= disp_area->y1; aaea: 8a40 ldrh r0, [r0, #18] aaec: f8bd 103a ldrh.w r1, [sp, #58] ; 0x3a aaf0: 1a09 subs r1, r1, r0 aaf2: f8ad 103a strh.w r1, [sp, #58] ; 0x3a draw_area.x2 -= disp_area->x1; aaf6: f8bd 303c ldrh.w r3, [sp, #60] ; 0x3c aafa: 1b9b subs r3, r3, r6 aafc: b29b uxth r3, r3 aafe: f8ad 303c strh.w r3, [sp, #60] ; 0x3c draw_area.y2 -= disp_area->y1; ab02: f8bd 103e ldrh.w r1, [sp, #62] ; 0x3e ab06: 1a09 subs r1, r1, r0 ab08: f8ad 103e strh.w r1, [sp, #62] ; 0x3e ab0c: 1c5d adds r5, r3, #1 ab0e: 1aad subs r5, r5, r2 ab10: 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); ab12: a80e add r0, sp, #56 ; 0x38 ab14: 4b49 ldr r3, [pc, #292] ; (ac3c ) ab16: 4798 blx r3 ab18: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0 ab1c: f0c0 82a2 bcc.w b064 ab20: f44f 7bf0 mov.w fp, #480 ; 0x1e0 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); ab24: 4658 mov r0, fp ab26: 4b46 ldr r3, [pc, #280] ; (ac40 ) ab28: 4798 blx r3 ab2a: 4681 mov r9, r0 lv_area_t fill_area; fill_area.x1 = draw_area.x1 + disp_area->x1; ab2c: f8ba 3010 ldrh.w r3, [sl, #16] ab30: f8bd 2038 ldrh.w r2, [sp, #56] ; 0x38 ab34: 441a add r2, r3 ab36: b212 sxth r2, r2 ab38: 9205 str r2, [sp, #20] ab3a: f8ad 2040 strh.w r2, [sp, #64] ; 0x40 fill_area.x2 = draw_area.x2 + disp_area->x1; ab3e: f8bd 203c ldrh.w r2, [sp, #60] ; 0x3c ab42: 4413 add r3, r2 ab44: f8ad 3044 strh.w r3, [sp, #68] ; 0x44 fill_area.y1 = draw_area.y1 + disp_area->y1; ab48: f8bd 303a ldrh.w r3, [sp, #58] ; 0x3a ab4c: f8ba 2012 ldrh.w r2, [sl, #18] ab50: 4413 add r3, r2 ab52: b21b sxth r3, r3 ab54: f8ad 3042 strh.w r3, [sp, #66] ; 0x42 fill_area.y2 = fill_area.y1; ab58: 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); ab5c: 4659 mov r1, fp ab5e: 4b39 ldr r3, [pc, #228] ; (ac44 ) ab60: 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++) { ab62: f9ba 2012 ldrsh.w r2, [sl, #18] ab66: f9bd 603a ldrsh.w r6, [sp, #58] ; 0x3a ab6a: 4416 add r6, r2 ab6c: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e ab70: 4413 add r3, r2 ab72: 429e cmp r6, r3 ab74: f300 82b9 bgt.w b0ea ab78: 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, ab7a: 9409 str r4, [sp, #36] ; 0x24 ab7c: e2a0 b.n b0c0 if(point1->x == point2->x && point1->y == point2->y) return; ab7e: f9b0 e002 ldrsh.w lr, [r0, #2] ab82: f9b1 4002 ldrsh.w r4, [r1, #2] ab86: 45a6 cmp lr, r4 ab88: f47f aec9 bne.w a91e ab8c: e2d4 b.n b138 lv_opa_t opa = dsc->opa; ab8e: f894 9008 ldrb.w r9, [r4, #8] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); ab92: 4b28 ldr r3, [pc, #160] ; (ac34 ) ab94: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); ab96: 4b28 ldr r3, [pc, #160] ; (ac38 ) ab98: 4798 blx r3 ab9a: 4607 mov r7, r0 int32_t w = dsc->width - 1; ab9c: f9b4 3002 ldrsh.w r3, [r4, #2] aba0: 3b01 subs r3, #1 int32_t w_half0 = w >> 1; aba2: 105e asrs r6, r3, #1 int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ aba4: f003 0301 and.w r3, r3, #1 aba8: 199d adds r5, r3, r6 bool dashed = dsc->dash_gap && dsc->dash_width ? true : false; abaa: f9b4 3006 ldrsh.w r3, [r4, #6] abae: 2b00 cmp r3, #0 abb0: d035 beq.n ac1e abb2: f9b4 8004 ldrsh.w r8, [r4, #4] abb6: f118 0800 adds.w r8, r8, #0 abba: bf18 it ne abbc: f04f 0801 movne.w r8, #1 if(lv_draw_mask_get_cnt()) simple_mode = false; abc0: 4b21 ldr r3, [pc, #132] ; (ac48 ) abc2: 4798 blx r3 abc4: bb70 cbnz r0, ac24 else if(dashed) simple_mode = false; abc6: f088 0201 eor.w r2, r8, #1 draw_area.x1 = LV_MATH_MIN(point1->x, point2->x); abca: 9b07 ldr r3, [sp, #28] abcc: f9b3 3000 ldrsh.w r3, [r3] abd0: 9906 ldr r1, [sp, #24] abd2: f9b1 1000 ldrsh.w r1, [r1] abd6: 4618 mov r0, r3 abd8: 428b cmp r3, r1 abda: bfa8 it ge abdc: 4608 movge r0, r1 abde: f8ad 00a0 strh.w r0, [sp, #160] ; 0xa0 draw_area.x2 = LV_MATH_MAX(point1->x, point2->x) - 1; abe2: 428b cmp r3, r1 abe4: bfb8 it lt abe6: 460b movlt r3, r1 abe8: 3b01 subs r3, #1 abea: f8ad 30a4 strh.w r3, [sp, #164] ; 0xa4 draw_area.y1 = point1->y - w_half1; abee: 9906 ldr r1, [sp, #24] abf0: 884b ldrh r3, [r1, #2] abf2: 1b5d subs r5, r3, r5 abf4: f8ad 50a2 strh.w r5, [sp, #162] ; 0xa2 draw_area.y2 = point1->y + w_half0; abf8: 4433 add r3, r6 abfa: f8ad 30a6 strh.w r3, [sp, #166] ; 0xa6 if(simple_mode) { abfe: b34a cbz r2, ac54 dsc->blend_mode); ac00: 7a63 ldrb r3, [r4, #9] _lv_blend_fill(clip, &draw_area, ac02: f003 0303 and.w r3, r3, #3 ac06: 9302 str r3, [sp, #8] ac08: f8cd 9004 str.w r9, [sp, #4] ac0c: 2301 movs r3, #1 ac0e: 9300 str r3, [sp, #0] ac10: 2300 movs r3, #0 ac12: 8822 ldrh r2, [r4, #0] ac14: a928 add r1, sp, #160 ; 0xa0 ac16: a848 add r0, sp, #288 ; 0x120 ac18: 4d0c ldr r5, [pc, #48] ; (ac4c ) ac1a: 47a8 blx r5 ac1c: e288 b.n b130 bool dashed = dsc->dash_gap && dsc->dash_width ? true : false; ac1e: f04f 0800 mov.w r8, #0 ac22: e7cd b.n abc0 if(lv_draw_mask_get_cnt()) simple_mode = false; ac24: 2200 movs r2, #0 ac26: e7d0 b.n abca ac28: 00011501 .word 0x00011501 ac2c: 00024f8c .word 0x00024f8c ac30: 0000bed1 .word 0x0000bed1 ac34: 00005f51 .word 0x00005f51 ac38: 00010fc5 .word 0x00010fc5 ac3c: 000114e5 .word 0x000114e5 ac40: 00012925 .word 0x00012925 ac44: 00012bd5 .word 0x00012bd5 ac48: 0000bead .word 0x0000bead ac4c: 00007739 .word 0x00007739 ac50: 0000bda9 .word 0x0000bda9 is_common = _lv_area_intersect(&draw_area, clip, &draw_area); ac54: aa28 add r2, sp, #160 ; 0xa0 ac56: a948 add r1, sp, #288 ; 0x120 ac58: 4610 mov r0, r2 ac5a: 4ba1 ldr r3, [pc, #644] ; (aee0 ) ac5c: 4798 blx r3 if(!is_common) return; ac5e: 2800 cmp r0, #0 ac60: f000 8266 beq.w b130 draw_area.x1 -= disp_area->x1; ac64: f9bd e0a0 ldrsh.w lr, [sp, #160] ; 0xa0 ac68: f9b7 1010 ldrsh.w r1, [r7, #16] ac6c: b28b uxth r3, r1 ac6e: ebae 0203 sub.w r2, lr, r3 ac72: b292 uxth r2, r2 ac74: fa0f fc82 sxth.w ip, r2 ac78: f8ad c0a0 strh.w ip, [sp, #160] ; 0xa0 draw_area.y1 -= disp_area->y1; ac7c: f9bd 00a2 ldrsh.w r0, [sp, #162] ; 0xa2 ac80: f8b7 9012 ldrh.w r9, [r7, #18] ac84: eba0 0509 sub.w r5, r0, r9 ac88: f8ad 50a2 strh.w r5, [sp, #162] ; 0xa2 draw_area.x2 -= disp_area->x1; ac8c: f9bd 60a4 ldrsh.w r6, [sp, #164] ; 0xa4 ac90: 1af3 subs r3, r6, r3 ac92: b29b uxth r3, r3 ac94: f8ad 30a4 strh.w r3, [sp, #164] ; 0xa4 draw_area.y2 -= disp_area->y1; ac98: f8bd 50a6 ldrh.w r5, [sp, #166] ; 0xa6 ac9c: eba5 0509 sub.w r5, r5, r9 aca0: f8ad 50a6 strh.w r5, [sp, #166] ; 0xa6 aca4: 3301 adds r3, #1 aca6: 1a9a subs r2, r3, r2 aca8: b215 sxth r5, r2 fill_area.x1 = draw_area.x1 + disp_area->x1; acaa: f8ad e0cc strh.w lr, [sp, #204] ; 0xcc fill_area.x2 = draw_area.x2 + disp_area->x1; acae: f8ad 60d0 strh.w r6, [sp, #208] ; 0xd0 fill_area.y1 = draw_area.y1 + disp_area->y1; acb2: f8ad 00ce strh.w r0, [sp, #206] ; 0xce fill_area.y2 = fill_area.y1; acb6: f8ad 00d2 strh.w r0, [sp, #210] ; 0xd2 if(dashed) { acba: f1b8 0f00 cmp.w r8, #0 acbe: d01c beq.n acfa dash_start = (vdb->area.x1 + draw_area.x1) % (dsc->dash_gap + dsc->dash_width); acc0: 4461 add r1, ip acc2: f9b4 2006 ldrsh.w r2, [r4, #6] acc6: f9b4 3004 ldrsh.w r3, [r4, #4] acca: 441a add r2, r3 accc: fb91 f3f2 sdiv r3, r1, r2 acd0: fb02 1113 mls r1, r2, r3, r1 acd4: b20b sxth r3, r1 acd6: 930a str r3, [sp, #40] ; 0x28 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); acd8: 9509 str r5, [sp, #36] ; 0x24 acda: 4628 mov r0, r5 acdc: 4b81 ldr r3, [pc, #516] ; (aee4 ) acde: 4798 blx r3 ace0: 4682 mov sl, r0 for(h = draw_area.y1; h <= draw_area.y2; h++) { ace2: f9bd 60a2 ldrsh.w r6, [sp, #162] ; 0xa2 ace6: f9bd 30a6 ldrsh.w r3, [sp, #166] ; 0xa6 acea: 42b3 cmp r3, r6 acec: db59 blt.n ada2 _lv_memset_ff(mask_buf, draw_area_w); acee: f8df 9210 ldr.w r9, [pc, #528] ; af00 _lv_blend_fill(clip, &fill_area, acf2: f8df b208 ldr.w fp, [pc, #520] ; aefc acf6: 9505 str r5, [sp, #20] acf8: e035 b.n ad66 if(dashed) { acfa: 2100 movs r1, #0 acfc: e7ea b.n acd4 else if(dash_cnt >= dsc->dash_gap + dsc->dash_width) { acfe: f9b4 e006 ldrsh.w lr, [r4, #6] ad02: 4473 add r3, lr ad04: 429a cmp r2, r3 mask_buf[i] = 0x00; ad06: bfba itte lt ad08: f80a 1000 strblt.w r1, [sl, r0] ad0c: 4613 movlt r3, r2 dash_cnt = 0; ad0e: 460b movge r3, r1 for(i = 0; i < draw_area_w; i++, dash_cnt++) { ad10: 3001 adds r0, #1 ad12: b200 sxth r0, r0 ad14: 3301 adds r3, #1 ad16: b21a sxth r2, r3 ad18: 4285 cmp r5, r0 ad1a: dd07 ble.n ad2c if(dash_cnt <= dsc->dash_width) { ad1c: f9b4 3004 ldrsh.w r3, [r4, #4] ad20: 4293 cmp r3, r2 ad22: dbec blt.n acfe i += diff; ad24: 4418 add r0, r3 ad26: 1a80 subs r0, r0, r2 ad28: b200 sxth r0, r0 ad2a: e7f1 b.n ad10 ad2c: 9505 str r5, [sp, #20] mask_res = LV_DRAW_MASK_RES_CHANGED; ad2e: 2002 movs r0, #2 dsc->blend_mode); ad30: 7a63 ldrb r3, [r4, #9] _lv_blend_fill(clip, &fill_area, ad32: f003 0303 and.w r3, r3, #3 ad36: 9302 str r3, [sp, #8] ad38: 7a23 ldrb r3, [r4, #8] ad3a: 9301 str r3, [sp, #4] ad3c: 9000 str r0, [sp, #0] ad3e: 4653 mov r3, sl ad40: 8822 ldrh r2, [r4, #0] ad42: a933 add r1, sp, #204 ; 0xcc ad44: a848 add r0, sp, #288 ; 0x120 ad46: 47d8 blx fp fill_area.y1++; ad48: f8bd 30ce ldrh.w r3, [sp, #206] ; 0xce ad4c: 3301 adds r3, #1 ad4e: f8ad 30ce strh.w r3, [sp, #206] ; 0xce fill_area.y2++; ad52: f8bd 30d2 ldrh.w r3, [sp, #210] ; 0xd2 ad56: 3301 adds r3, #1 ad58: f8ad 30d2 strh.w r3, [sp, #210] ; 0xd2 for(h = draw_area.y1; h <= draw_area.y2; h++) { ad5c: 3601 adds r6, #1 ad5e: f9bd 30a6 ldrsh.w r3, [sp, #166] ; 0xa6 ad62: 429e cmp r6, r3 ad64: dc1d bgt.n ada2 _lv_memset_ff(mask_buf, draw_area_w); ad66: 9909 ldr r1, [sp, #36] ; 0x24 ad68: 4650 mov r0, sl ad6a: 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); ad6c: 8a7a ldrh r2, [r7, #18] ad6e: 4432 add r2, r6 ad70: 8a39 ldrh r1, [r7, #16] ad72: f8bd 30a0 ldrh.w r3, [sp, #160] ; 0xa0 ad76: 4419 add r1, r3 ad78: 9b05 ldr r3, [sp, #20] ad7a: b212 sxth r2, r2 ad7c: b209 sxth r1, r1 ad7e: 4650 mov r0, sl ad80: 4d59 ldr r5, [pc, #356] ; (aee8 ) ad82: 47a8 blx r5 if(dashed) { ad84: f1b8 0f00 cmp.w r8, #0 ad88: d0d2 beq.n ad30 if(mask_res != LV_DRAW_MASK_RES_TRANSP) { ad8a: 2800 cmp r0, #0 ad8c: d0d0 beq.n ad30 for(i = 0; i < draw_area_w; i++, dash_cnt++) { ad8e: 9b05 ldr r3, [sp, #20] ad90: 2b00 cmp r3, #0 ad92: dd04 ble.n ad9e ad94: 9a0a ldr r2, [sp, #40] ; 0x28 ad96: 2000 movs r0, #0 dash_cnt = 0; ad98: 4601 mov r1, r0 ad9a: 461d mov r5, r3 ad9c: e7be b.n ad1c mask_res = LV_DRAW_MASK_RES_CHANGED; ad9e: 2002 movs r0, #2 ada0: e7c6 b.n ad30 _lv_mem_buf_release(mask_buf); ada2: 4650 mov r0, sl ada4: 4b51 ldr r3, [pc, #324] ; (aeec ) ada6: 4798 blx r3 ada8: e1c2 b.n b130 lv_opa_t opa = dsc->opa; adaa: f894 9008 ldrb.w r9, [r4, #8] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); adae: 4b50 ldr r3, [pc, #320] ; (aef0 ) adb0: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); adb2: 4b50 ldr r3, [pc, #320] ; (aef4 ) adb4: 4798 blx r3 adb6: 4680 mov r8, r0 int32_t w = dsc->width - 1; adb8: f9b4 5002 ldrsh.w r5, [r4, #2] adbc: 3d01 subs r5, #1 int32_t w_half0 = w >> 1; adbe: 106f asrs r7, r5, #1 int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ adc0: f005 0501 and.w r5, r5, #1 adc4: 443d add r5, r7 bool dashed = dsc->dash_gap && dsc->dash_width ? true : false; adc6: f9b4 3006 ldrsh.w r3, [r4, #6] adca: b12b cbz r3, add8 adcc: f9b4 6004 ldrsh.w r6, [r4, #4] add0: 3600 adds r6, #0 add2: bf18 it ne add4: 2601 movne r6, #1 add6: e000 b.n adda add8: 2600 movs r6, #0 if(lv_draw_mask_get_cnt()) simple_mode = false; adda: 4b47 ldr r3, [pc, #284] ; (aef8 ) addc: 4798 blx r3 adde: b910 cbnz r0, ade6 else if(dashed) simple_mode = false; ade0: f086 0201 eor.w r2, r6, #1 ade4: e000 b.n ade8 if(lv_draw_mask_get_cnt()) simple_mode = false; ade6: 2200 movs r2, #0 draw_area.x1 = point1->x - w_half1; ade8: 9906 ldr r1, [sp, #24] adea: 880b ldrh r3, [r1, #0] adec: 1b5d subs r5, r3, r5 adee: f8ad 50a0 strh.w r5, [sp, #160] ; 0xa0 draw_area.x2 = point1->x + w_half0; adf2: 441f add r7, r3 adf4: f8ad 70a4 strh.w r7, [sp, #164] ; 0xa4 draw_area.y1 = LV_MATH_MIN(point1->y, point2->y); adf8: 9b07 ldr r3, [sp, #28] adfa: f9b3 3002 ldrsh.w r3, [r3, #2] adfe: f9b1 1002 ldrsh.w r1, [r1, #2] ae02: 4618 mov r0, r3 ae04: 428b cmp r3, r1 ae06: bfa8 it ge ae08: 4608 movge r0, r1 ae0a: f8ad 00a2 strh.w r0, [sp, #162] ; 0xa2 draw_area.y2 = LV_MATH_MAX(point1->y, point2->y) - 1; ae0e: 428b cmp r3, r1 ae10: bfb8 it lt ae12: 460b movlt r3, r1 ae14: 3b01 subs r3, #1 ae16: f8ad 30a6 strh.w r3, [sp, #166] ; 0xa6 if(simple_mode) { ae1a: b172 cbz r2, ae3a dsc->blend_mode); ae1c: 7a63 ldrb r3, [r4, #9] _lv_blend_fill(clip, &draw_area, ae1e: f003 0303 and.w r3, r3, #3 ae22: 9302 str r3, [sp, #8] ae24: f8cd 9004 str.w r9, [sp, #4] ae28: 2301 movs r3, #1 ae2a: 9300 str r3, [sp, #0] ae2c: 2300 movs r3, #0 ae2e: 8822 ldrh r2, [r4, #0] ae30: a928 add r1, sp, #160 ; 0xa0 ae32: a848 add r0, sp, #288 ; 0x120 ae34: 4d31 ldr r5, [pc, #196] ; (aefc ) ae36: 47a8 blx r5 ae38: e17a b.n b130 is_common = _lv_area_intersect(&draw_area, clip, &draw_area); ae3a: aa28 add r2, sp, #160 ; 0xa0 ae3c: a948 add r1, sp, #288 ; 0x120 ae3e: 4610 mov r0, r2 ae40: 4b27 ldr r3, [pc, #156] ; (aee0 ) ae42: 4798 blx r3 if(!is_common) return; ae44: 2800 cmp r0, #0 ae46: f000 8173 beq.w b130 draw_area.x1 -= vdb->area.x1; ae4a: f9bd 00a0 ldrsh.w r0, [sp, #160] ; 0xa0 ae4e: f8b8 3010 ldrh.w r3, [r8, #16] ae52: 1ac5 subs r5, r0, r3 ae54: b2ad uxth r5, r5 ae56: f8ad 50a0 strh.w r5, [sp, #160] ; 0xa0 draw_area.y1 -= vdb->area.y1; ae5a: f9bd 20a2 ldrsh.w r2, [sp, #162] ; 0xa2 ae5e: f8b8 7012 ldrh.w r7, [r8, #18] ae62: 1bd1 subs r1, r2, r7 ae64: f8ad 10a2 strh.w r1, [sp, #162] ; 0xa2 draw_area.x2 -= vdb->area.x1; ae68: f9bd 10a4 ldrsh.w r1, [sp, #164] ; 0xa4 ae6c: 1acb subs r3, r1, r3 ae6e: b29b uxth r3, r3 ae70: f8ad 30a4 strh.w r3, [sp, #164] ; 0xa4 draw_area.y2 -= vdb->area.y1; ae74: f8bd e0a6 ldrh.w lr, [sp, #166] ; 0xa6 ae78: ebae 0707 sub.w r7, lr, r7 ae7c: f8ad 70a6 strh.w r7, [sp, #166] ; 0xa6 ae80: 3301 adds r3, #1 ae82: 1b5b subs r3, r3, r5 ae84: b21b sxth r3, r3 ae86: 9309 str r3, [sp, #36] ; 0x24 fill_area.x1 = draw_area.x1 + disp_area->x1; ae88: f8ad 00cc strh.w r0, [sp, #204] ; 0xcc fill_area.x2 = draw_area.x2 + disp_area->x1; ae8c: f8ad 10d0 strh.w r1, [sp, #208] ; 0xd0 fill_area.y1 = draw_area.y1 + disp_area->y1; ae90: f8ad 20ce strh.w r2, [sp, #206] ; 0xce fill_area.y2 = fill_area.y1; ae94: f8ad 20d2 strh.w r2, [sp, #210] ; 0xd2 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); ae98: 930a str r3, [sp, #40] ; 0x28 ae9a: 4618 mov r0, r3 ae9c: 4b11 ldr r3, [pc, #68] ; (aee4 ) ae9e: 4798 blx r3 aea0: 9005 str r0, [sp, #20] if(dashed) { aea2: b176 cbz r6, aec2 dash_start = (vdb->area.x1 + draw_area.x1) % (dsc->dash_gap + dsc->dash_width); aea4: f9b8 2010 ldrsh.w r2, [r8, #16] aea8: f9bd 70a0 ldrsh.w r7, [sp, #160] ; 0xa0 aeac: 443a add r2, r7 aeae: f9b4 3006 ldrsh.w r3, [r4, #6] aeb2: f9b4 7004 ldrsh.w r7, [r4, #4] aeb6: 443b add r3, r7 aeb8: fb92 f7f3 sdiv r7, r2, r3 aebc: fb03 2717 mls r7, r3, r7, r2 aec0: e000 b.n aec4 if(dashed) { aec2: 2700 movs r7, #0 aec4: b23f sxth r7, r7 for(h = draw_area.y1; h <= draw_area.y2; h++) { aec6: f9bd 50a2 ldrsh.w r5, [sp, #162] ; 0xa2 aeca: f9bd 30a6 ldrsh.w r3, [sp, #166] ; 0xa6 aece: 429d cmp r5, r3 aed0: dc53 bgt.n af7a _lv_memset_ff(mask_buf, draw_area_w); aed2: f8df 902c ldr.w r9, [pc, #44] ; af00 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); aed6: f8df a010 ldr.w sl, [pc, #16] ; aee8 _lv_blend_fill(clip, &fill_area, aeda: f8df b020 ldr.w fp, [pc, #32] ; aefc aede: e02c b.n af3a aee0: 00011501 .word 0x00011501 aee4: 00012925 .word 0x00012925 aee8: 0000be05 .word 0x0000be05 aeec: 00012559 .word 0x00012559 aef0: 00005f51 .word 0x00005f51 aef4: 00010fc5 .word 0x00010fc5 aef8: 0000bead .word 0x0000bead aefc: 00007739 .word 0x00007739 af00: 00012bd5 .word 0x00012bd5 dash_cnt ++; af04: 3701 adds r7, #1 af06: b23f sxth r7, r7 _lv_blend_fill(clip, &fill_area, af08: 2300 movs r3, #0 af0a: 9302 str r3, [sp, #8] af0c: 7a23 ldrb r3, [r4, #8] af0e: 9301 str r3, [sp, #4] af10: 9000 str r0, [sp, #0] af12: 9b05 ldr r3, [sp, #20] af14: 8822 ldrh r2, [r4, #0] af16: a933 add r1, sp, #204 ; 0xcc af18: a848 add r0, sp, #288 ; 0x120 af1a: 47d8 blx fp fill_area.y1++; af1c: f8bd 30ce ldrh.w r3, [sp, #206] ; 0xce af20: 3301 adds r3, #1 af22: f8ad 30ce strh.w r3, [sp, #206] ; 0xce fill_area.y2++; af26: f8bd 30d2 ldrh.w r3, [sp, #210] ; 0xd2 af2a: 3301 adds r3, #1 af2c: f8ad 30d2 strh.w r3, [sp, #210] ; 0xd2 for(h = draw_area.y1; h <= draw_area.y2; h++) { af30: 3501 adds r5, #1 af32: f9bd 30a6 ldrsh.w r3, [sp, #166] ; 0xa6 af36: 429d cmp r5, r3 af38: dc1f bgt.n af7a _lv_memset_ff(mask_buf, draw_area_w); af3a: 990a ldr r1, [sp, #40] ; 0x28 af3c: 9805 ldr r0, [sp, #20] af3e: 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); af40: f8b8 2012 ldrh.w r2, [r8, #18] af44: 442a add r2, r5 af46: f8b8 1010 ldrh.w r1, [r8, #16] af4a: f8bd 30a0 ldrh.w r3, [sp, #160] ; 0xa0 af4e: 4419 add r1, r3 af50: 9b09 ldr r3, [sp, #36] ; 0x24 af52: b212 sxth r2, r2 af54: b209 sxth r1, r1 af56: 9805 ldr r0, [sp, #20] af58: 47d0 blx sl if(dashed) { af5a: 2e00 cmp r6, #0 af5c: d0d4 beq.n af08 if(mask_res != LV_DRAW_MASK_RES_TRANSP) { af5e: 2800 cmp r0, #0 af60: d0d0 beq.n af04 if(dash_cnt > dsc->dash_width) { af62: f9b4 2004 ldrsh.w r2, [r4, #4] mask_res = LV_DRAW_MASK_RES_TRANSP; af66: 42ba cmp r2, r7 af68: bfb8 it lt af6a: 2000 movlt r0, #0 if(dash_cnt >= dsc->dash_gap + dsc->dash_width) { af6c: f9b4 3006 ldrsh.w r3, [r4, #6] af70: 4413 add r3, r2 dash_cnt = 0; af72: 429f cmp r7, r3 af74: bfa8 it ge af76: 2700 movge r7, #0 af78: e7c4 b.n af04 _lv_mem_buf_release(mask_buf); af7a: 9805 ldr r0, [sp, #20] af7c: 4b97 ldr r3, [pc, #604] ; (b1dc ) af7e: 4798 blx r3 af80: e0d6 b.n b130 lv_draw_mask_line_points_init(&mask_left_param, p1.x, p1.y + w_half1, p2.x, p2.y + w_half1, af82: fa1f fb86 uxth.w fp, r6 af86: f8bd 802c ldrh.w r8, [sp, #44] ; 0x2c af8a: b2a9 uxth r1, r5 af8c: eb0b 0208 add.w r2, fp, r8 af90: 2300 movs r3, #0 af92: 9301 str r3, [sp, #4] af94: 460f mov r7, r1 af96: 4488 add r8, r1 af98: fa0f f388 sxth.w r3, r8 af9c: 9300 str r3, [sp, #0] af9e: 4653 mov r3, sl afa0: b212 sxth r2, r2 afa2: 9905 ldr r1, [sp, #20] afa4: a812 add r0, sp, #72 ; 0x48 afa6: f8df 8238 ldr.w r8, [pc, #568] ; b1e0 afaa: 47c0 blx r8 lv_draw_mask_line_points_init(&mask_right_param, p1.x, p1.y - w_half0, p2.x, p2.y - w_half0, afac: fa1f f389 uxth.w r3, r9 afb0: ebab 0203 sub.w r2, fp, r3 afb4: 2101 movs r1, #1 afb6: 9101 str r1, [sp, #4] afb8: 1afb subs r3, r7, r3 afba: b21b sxth r3, r3 afbc: 9300 str r3, [sp, #0] afbe: 4653 mov r3, sl afc0: b212 sxth r2, r2 afc2: 9905 ldr r1, [sp, #20] afc4: a81d add r0, sp, #116 ; 0x74 afc6: 47c0 blx r8 afc8: e570 b.n aaac lv_draw_mask_line_points_init(&mask_left_param, p1.x + w_half1, p1.y, p2.x + w_half1, p2.y, afca: f8bd b014 ldrh.w fp, [sp, #20] afce: f8bd 802c ldrh.w r8, [sp, #44] ; 0x2c afd2: fa1f f38a uxth.w r3, sl afd6: 461f mov r7, r3 afd8: 4443 add r3, r8 afda: 44d8 add r8, fp afdc: 2200 movs r2, #0 afde: 9201 str r2, [sp, #4] afe0: 9500 str r5, [sp, #0] afe2: b21b sxth r3, r3 afe4: 4632 mov r2, r6 afe6: fa0f f188 sxth.w r1, r8 afea: a812 add r0, sp, #72 ; 0x48 afec: f8df 81f0 ldr.w r8, [pc, #496] ; b1e0 aff0: 47c0 blx r8 lv_draw_mask_line_points_init(&mask_right_param, p1.x - w_half0, p1.y, p2.x - w_half0, p2.y, aff2: fa1f f989 uxth.w r9, r9 aff6: eba7 0309 sub.w r3, r7, r9 affa: ebab 0909 sub.w r9, fp, r9 affe: 2201 movs r2, #1 b000: 9201 str r2, [sp, #4] b002: 9500 str r5, [sp, #0] b004: b21b sxth r3, r3 b006: 4632 mov r2, r6 b008: fa0f f189 sxth.w r1, r9 b00c: a81d add r0, sp, #116 ; 0x74 b00e: 47c0 blx r8 b010: e54c b.n aaac 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); b012: f8bd 8028 ldrh.w r8, [sp, #40] ; 0x28 b016: f8bd 9024 ldrh.w r9, [sp, #36] ; 0x24 b01a: 9905 ldr r1, [sp, #20] b01c: eba1 0308 sub.w r3, r1, r8 b020: 2203 movs r2, #3 b022: 9201 str r2, [sp, #4] b024: eb09 0206 add.w r2, r9, r6 b028: b212 sxth r2, r2 b02a: 9200 str r2, [sp, #0] b02c: b21b sxth r3, r3 b02e: 4632 mov r2, r6 b030: a828 add r0, sp, #160 ; 0xa0 b032: 4e6b ldr r6, [pc, #428] ; (b1e0 ) b034: 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); b036: ebaa 0308 sub.w r3, sl, r8 b03a: 2202 movs r2, #2 b03c: 9201 str r2, [sp, #4] b03e: eb09 0205 add.w r2, r9, r5 b042: b212 sxth r2, r2 b044: 9200 str r2, [sp, #0] b046: b21b sxth r3, r3 b048: 462a mov r2, r5 b04a: 4651 mov r1, sl b04c: a833 add r0, sp, #204 ; 0xcc b04e: 47b0 blx r6 mask_top_id = lv_draw_mask_add(&mask_top_param, NULL); b050: 2100 movs r1, #0 b052: a828 add r0, sp, #160 ; 0xa0 b054: 4d63 ldr r5, [pc, #396] ; (b1e4 ) b056: 47a8 blx r5 b058: 900a str r0, [sp, #40] ; 0x28 mask_bottom_id = lv_draw_mask_add(&mask_bottom_param, NULL); b05a: 2100 movs r1, #0 b05c: a833 add r0, sp, #204 ; 0xcc b05e: 47a8 blx r5 b060: 900d str r0, [sp, #52] ; 0x34 b062: e536 b.n aad2 size_t mask_buf_size = LV_MATH_MIN(lv_area_get_size(&draw_area), LV_HOR_RES_MAX); b064: a80e add r0, sp, #56 ; 0x38 b066: 4b60 ldr r3, [pc, #384] ; (b1e8 ) b068: 4798 blx r3 b06a: 4683 mov fp, r0 b06c: e55a b.n ab24 _lv_memset_00(&mask_buf[mask_p], draw_area_w); b06e: 4629 mov r1, r5 b070: 4640 mov r0, r8 b072: 4b5e ldr r3, [pc, #376] ; (b1ec ) b074: 4798 blx r3 b076: e02d b.n b0d4 dsc->color, mask_buf, LV_DRAW_MASK_RES_CHANGED, dsc->opa, dsc->blend_mode); b078: 9a09 ldr r2, [sp, #36] ; 0x24 b07a: 7a53 ldrb r3, [r2, #9] _lv_blend_fill(&fill_area, clip, b07c: f003 0303 and.w r3, r3, #3 b080: 9302 str r3, [sp, #8] b082: 7a13 ldrb r3, [r2, #8] b084: 9301 str r3, [sp, #4] b086: 2302 movs r3, #2 b088: 9300 str r3, [sp, #0] b08a: 464b mov r3, r9 b08c: 8812 ldrh r2, [r2, #0] b08e: a948 add r1, sp, #288 ; 0x120 b090: a810 add r0, sp, #64 ; 0x40 b092: 4c57 ldr r4, [pc, #348] ; (b1f0 ) b094: 47a0 blx r4 fill_area.y1 = fill_area.y2 + 1; b096: f8bd 3046 ldrh.w r3, [sp, #70] ; 0x46 b09a: 3301 adds r3, #1 b09c: b21b sxth r3, r3 b09e: f8ad 3042 strh.w r3, [sp, #66] ; 0x42 fill_area.y2 = fill_area.y1; b0a2: f8ad 3046 strh.w r3, [sp, #70] ; 0x46 mask_p = 0; _lv_memset_ff(mask_buf, mask_buf_size); b0a6: 4659 mov r1, fp b0a8: 4648 mov r0, r9 b0aa: 4b52 ldr r3, [pc, #328] ; (b1f4 ) b0ac: 4798 blx r3 mask_p = 0; b0ae: 2700 movs r7, #0 for(h = draw_area.y1 + disp_area->y1; h <= draw_area.y2 + disp_area->y1; h++) { b0b0: 3601 adds r6, #1 b0b2: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e b0b6: f9ba 2012 ldrsh.w r2, [sl, #18] b0ba: 4413 add r3, r2 b0bc: 429e cmp r6, r3 b0be: dc13 bgt.n b0e8 lv_draw_mask_res_t mask_res = lv_draw_mask_apply(&mask_buf[mask_p], x, h, draw_area_w); b0c0: eb09 0807 add.w r8, r9, r7 b0c4: 462b mov r3, r5 b0c6: b232 sxth r2, r6 b0c8: 9905 ldr r1, [sp, #20] b0ca: 4640 mov r0, r8 b0cc: 4c4a ldr r4, [pc, #296] ; (b1f8 ) b0ce: 47a0 blx r4 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { b0d0: 2800 cmp r0, #0 b0d2: d0cc beq.n b06e mask_p += draw_area_w; b0d4: 442f add r7, r5 if((uint32_t) mask_p + draw_area_w < mask_buf_size) { b0d6: 19eb adds r3, r5, r7 b0d8: 459b cmp fp, r3 b0da: d9cd bls.n b078 fill_area.y2 ++; b0dc: f8bd 3046 ldrh.w r3, [sp, #70] ; 0x46 b0e0: 3301 adds r3, #1 b0e2: f8ad 3046 strh.w r3, [sp, #70] ; 0x46 b0e6: e7e3 b.n b0b0 b0e8: 9c09 ldr r4, [sp, #36] ; 0x24 } } /*Flush the last part*/ if(fill_area.y1 != fill_area.y2) { b0ea: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46 b0ee: f9bd 2042 ldrsh.w r2, [sp, #66] ; 0x42 b0f2: 429a cmp r2, r3 b0f4: d010 beq.n b118 fill_area.y2--; b0f6: 3b01 subs r3, #1 b0f8: 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); b0fc: 7a63 ldrb r3, [r4, #9] _lv_blend_fill(&fill_area, clip, b0fe: f003 0303 and.w r3, r3, #3 b102: 9302 str r3, [sp, #8] b104: 7a23 ldrb r3, [r4, #8] b106: 9301 str r3, [sp, #4] b108: 2302 movs r3, #2 b10a: 9300 str r3, [sp, #0] b10c: 464b mov r3, r9 b10e: 8822 ldrh r2, [r4, #0] b110: a948 add r1, sp, #288 ; 0x120 b112: a810 add r0, sp, #64 ; 0x40 b114: 4d36 ldr r5, [pc, #216] ; (b1f0 ) b116: 47a8 blx r5 } _lv_mem_buf_release(mask_buf); b118: 4648 mov r0, r9 b11a: 4b30 ldr r3, [pc, #192] ; (b1dc ) b11c: 4798 blx r3 lv_draw_mask_remove_id(mask_left_id); b11e: 980b ldr r0, [sp, #44] ; 0x2c b120: 4d36 ldr r5, [pc, #216] ; (b1fc ) b122: 47a8 blx r5 lv_draw_mask_remove_id(mask_right_id); b124: 980c ldr r0, [sp, #48] ; 0x30 b126: 47a8 blx r5 lv_draw_mask_remove_id(mask_top_id); b128: 980a ldr r0, [sp, #40] ; 0x28 b12a: 47a8 blx r5 lv_draw_mask_remove_id(mask_bottom_id); b12c: 980d ldr r0, [sp, #52] ; 0x34 b12e: 47a8 blx r5 if(dsc->round_end || dsc->round_start) { b130: 7a63 ldrb r3, [r4, #9] b132: f013 0f0c tst.w r3, #12 b136: d102 bne.n b13e } b138: b04b add sp, #300 ; 0x12c b13a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} lv_draw_rect_dsc_init(&cir_dsc); b13e: a833 add r0, sp, #204 ; 0xcc b140: 4b2f ldr r3, [pc, #188] ; (b200 ) b142: 4798 blx r3 cir_dsc.bg_color = dsc->color; b144: 8823 ldrh r3, [r4, #0] b146: f8ad 30ce strh.w r3, [sp, #206] ; 0xce cir_dsc.radius = LV_RADIUS_CIRCLE; b14a: f647 73ff movw r3, #32767 ; 0x7fff b14e: f8ad 30cc strh.w r3, [sp, #204] ; 0xcc cir_dsc.bg_opa = dsc->opa; b152: 7a23 ldrb r3, [r4, #8] b154: f88d 30d8 strb.w r3, [sp, #216] ; 0xd8 int32_t r = (dsc->width >> 1); b158: f9b4 3002 ldrsh.w r3, [r4, #2] b15c: 105e asrs r6, r3, #1 int32_t r_corr = (dsc->width & 1) ? 0 : 1; b15e: f083 0301 eor.w r3, r3, #1 b162: f003 0501 and.w r5, r3, #1 if(dsc->round_start) { b166: 7a63 ldrb r3, [r4, #9] b168: f013 0f04 tst.w r3, #4 b16c: d11c bne.n b1a8 if(dsc->round_end) { b16e: 7a63 ldrb r3, [r4, #9] b170: f013 0f08 tst.w r3, #8 b174: d0e0 beq.n b138 cir_area.x1 = point2->x - r; b176: 9907 ldr r1, [sp, #28] b178: 880a ldrh r2, [r1, #0] b17a: b2b6 uxth r6, r6 b17c: 1b93 subs r3, r2, r6 b17e: f8ad 30a0 strh.w r3, [sp, #160] ; 0xa0 cir_area.y1 = point2->y - r; b182: 8849 ldrh r1, [r1, #2] b184: 1b8b subs r3, r1, r6 b186: f8ad 30a2 strh.w r3, [sp, #162] ; 0xa2 cir_area.x2 = point2->x + r - r_corr; b18a: b2ab uxth r3, r5 b18c: 4432 add r2, r6 b18e: 1ad2 subs r2, r2, r3 b190: f8ad 20a4 strh.w r2, [sp, #164] ; 0xa4 cir_area.y2 = point2->y + r - r_corr ; b194: 440e add r6, r1 b196: 1af3 subs r3, r6, r3 b198: f8ad 30a6 strh.w r3, [sp, #166] ; 0xa6 lv_draw_rect(&cir_area, clip, &cir_dsc); b19c: aa33 add r2, sp, #204 ; 0xcc b19e: 9908 ldr r1, [sp, #32] b1a0: a828 add r0, sp, #160 ; 0xa0 b1a2: 4b18 ldr r3, [pc, #96] ; (b204 ) b1a4: 4798 blx r3 b1a6: e7c7 b.n b138 cir_area.x1 = point1->x - r; b1a8: 9806 ldr r0, [sp, #24] b1aa: 8802 ldrh r2, [r0, #0] b1ac: b2b3 uxth r3, r6 b1ae: 1ad1 subs r1, r2, r3 b1b0: f8ad 10a0 strh.w r1, [sp, #160] ; 0xa0 cir_area.y1 = point1->y - r; b1b4: 8840 ldrh r0, [r0, #2] b1b6: 1ac1 subs r1, r0, r3 b1b8: f8ad 10a2 strh.w r1, [sp, #162] ; 0xa2 cir_area.x2 = point1->x + r - r_corr; b1bc: b2a9 uxth r1, r5 b1be: 441a add r2, r3 b1c0: 1a52 subs r2, r2, r1 b1c2: f8ad 20a4 strh.w r2, [sp, #164] ; 0xa4 cir_area.y2 = point1->y + r - r_corr ; b1c6: 4403 add r3, r0 b1c8: 1a5b subs r3, r3, r1 b1ca: f8ad 30a6 strh.w r3, [sp, #166] ; 0xa6 lv_draw_rect(&cir_area, clip, &cir_dsc); b1ce: aa33 add r2, sp, #204 ; 0xcc b1d0: 9908 ldr r1, [sp, #32] b1d2: a828 add r0, sp, #160 ; 0xa0 b1d4: 4b0b ldr r3, [pc, #44] ; (b204 ) b1d6: 4798 blx r3 b1d8: e7c9 b.n b16e b1da: bf00 nop b1dc: 00012559 .word 0x00012559 b1e0: 0000bed1 .word 0x0000bed1 b1e4: 0000bda9 .word 0x0000bda9 b1e8: 000114e5 .word 0x000114e5 b1ec: 00012b1f .word 0x00012b1f b1f0: 00007739 .word 0x00007739 b1f4: 00012bd5 .word 0x00012bd5 b1f8: 0000be05 .word 0x0000be05 b1fc: 0000be55 .word 0x0000be55 b200: 0000c251 .word 0x0000c251 b204: 0000c319 .word 0x0000c319 0000b208 : **********************/ 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) { b208: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} b20c: 9c06 ldr r4, [sp, #24] /*Make to points relative to the vertex*/ abs_y -= p->origo.y; b20e: 8aa5 ldrh r5, [r4, #20] b210: 1b52 subs r2, r2, r5 b212: b212 sxth r2, r2 abs_x -= p->origo.x; b214: 8a65 ldrh r5, [r4, #18] b216: 1b4d subs r5, r1, r5 b218: b22d sxth r5, r5 /*Handle special cases*/ if(p->steep == 0) { b21a: 6a21 ldr r1, [r4, #32] b21c: 2900 cmp r1, #0 b21e: d14b bne.n b2b8 /*Horizontal*/ if(p->flat) { b220: f894 1028 ldrb.w r1, [r4, #40] ; 0x28 b224: f011 0f01 tst.w r1, #1 b228: d016 beq.n b258 /*Non sense: Can't be on the right/left of a horizontal line*/ if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT || b22a: 7c23 ldrb r3, [r4, #16] b22c: f003 0303 and.w r3, r3, #3 b230: 2b01 cmp r3, #1 b232: f240 81db bls.w b5ec 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; b236: 2b02 cmp r3, #2 b238: d004 beq.n b244 else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_BOTTOM && abs_y > 0) return LV_DRAW_MASK_RES_FULL_COVER; b23a: 2b03 cmp r3, #3 b23c: d006 beq.n b24c else { return LV_DRAW_MASK_RES_TRANSP; b23e: 2000 movs r0, #0 b240: 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; b244: 3201 adds r2, #1 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b246: 0fd0 lsrs r0, r2, #31 b248: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} b24c: 2a00 cmp r2, #0 b24e: bfd4 ite le b250: 2000 movle r0, #0 b252: 2001 movgt r0, #1 b254: 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 || b258: 7c22 ldrb r2, [r4, #16] b25a: f002 0203 and.w r2, r2, #3 b25e: 1e91 subs r1, r2, #2 b260: b2c9 uxtb r1, r1 b262: 2901 cmp r1, #1 b264: f240 81c5 bls.w b5f2 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; b268: 2a01 cmp r2, #1 b26a: d00c beq.n b286 else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) { b26c: b9b2 cbnz r2, b29c if(abs_x + len < 0) return LV_DRAW_MASK_RES_FULL_COVER; b26e: 18e9 adds r1, r5, r3 b270: f100 81c2 bmi.w b5f8 else { int32_t k = - abs_x; b274: 426d negs r5, r5 if(k < 0) return LV_DRAW_MASK_RES_TRANSP; b276: 2d00 cmp r5, #0 b278: f2c0 81c1 blt.w b5fe if(k >= 0 && k < len) _lv_memset_00(&mask_buf[k], len - k); b27c: 42ab cmp r3, r5 b27e: dc07 bgt.n b290 return LV_DRAW_MASK_RES_CHANGED; b280: 2002 movs r0, #2 b282: 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; b286: 2d00 cmp r5, #0 b288: dd08 ble.n b29c b28a: 2001 movs r0, #1 b28c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(k >= 0 && k < len) _lv_memset_00(&mask_buf[k], len - k); b290: 4428 add r0, r5 b292: 4bcd ldr r3, [pc, #820] ; (b5c8 ) b294: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b296: 2002 movs r0, #2 b298: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} } } else { if(abs_x + len < 0) return LV_DRAW_MASK_RES_TRANSP; b29c: 42dd cmn r5, r3 b29e: f100 81b1 bmi.w b604 else { int32_t k = - abs_x; b2a2: 4269 negs r1, r5 b2a4: ea21 71e1 bic.w r1, r1, r1, asr #31 if(k < 0) k = 0; if(k >= len) return LV_DRAW_MASK_RES_TRANSP; b2a8: 428b cmp r3, r1 b2aa: f340 81ae ble.w b60a else if(k >= 0 && k < len) _lv_memset_00(&mask_buf[0], k); b2ae: 4bc6 ldr r3, [pc, #792] ; (b5c8 ) b2b0: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b2b2: 2002 movs r0, #2 b2b4: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} } } } lv_draw_mask_res_t res; if(p->flat) { b2b8: f894 6028 ldrb.w r6, [r4, #40] ; 0x28 b2bc: f016 0f01 tst.w r6, #1 b2c0: d10f bne.n b2e2 { 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; b2c2: 69a7 ldr r7, [r4, #24] b2c4: fb02 f107 mul.w r1, r2, r7 b2c8: 1289 asrs r1, r1, #10 if(p->xy_steep > 0) x_at_y++; b2ca: 2f00 cmp r7, #0 b2cc: bfcc ite gt b2ce: f101 0e01 addgt.w lr, r1, #1 x_at_y = (int32_t)((int32_t)p->xy_steep * abs_y) >> 10; b2d2: 468e movle lr, r1 if(x_at_y < abs_x) { b2d4: 4575 cmp r5, lr b2d6: f340 8098 ble.w b40a p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b2da: f3c6 0040 ubfx r0, r6, #1, #1 b2de: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} y_at_x = (int32_t)((int32_t)p->yx_steep * abs_x) >> 10; b2e2: 69e1 ldr r1, [r4, #28] b2e4: fb05 f701 mul.w r7, r5, r1 b2e8: 12bf asrs r7, r7, #10 if(p->yx_steep > 0) { b2ea: 2900 cmp r1, #0 b2ec: dd06 ble.n b2fc if(y_at_x > abs_y) { b2ee: 4297 cmp r7, r2 b2f0: f340 81b8 ble.w b664 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b2f4: f3c6 0040 ubfx r0, r6, #1, #1 b2f8: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(y_at_x < abs_y) { b2fc: 4297 cmp r7, r2 b2fe: f280 81ed bge.w b6dc p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b302: f3c6 0040 ubfx r0, r6, #1, #1 b306: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(p->inv) { b30a: f086 0002 eor.w r0, r6, #2 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b30e: f3c0 0040 ubfx r0, r0, #1, #1 b312: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(p->inv) { b316: f086 0002 eor.w r0, r6, #2 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b31a: f3c0 0040 ubfx r0, r0, #1, #1 b31e: 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; b322: 2500 movs r5, #0 b324: e1d4 b.n b6d0 b326: 46f4 mov ip, lr mask_buf[k] = mask_mix(mask_buf[k], m); b328: f888 c000 strb.w ip, [r8] px_h -= p->spx; b32c: 6a63 ldr r3, [r4, #36] ; 0x24 b32e: 1ad2 subs r2, r2, r3 k++; b330: 3501 adds r5, #1 b332: 3601 adds r6, #1 if(k >= len) break; b334: 42bd cmp r5, r7 b336: da49 bge.n b3cc while(px_h > p->spx) { b338: 6a63 ldr r3, [r4, #36] ; 0x24 b33a: 429a cmp r2, r3 b33c: dd1d ble.n b37a if(k >= 0 && k < len) { b33e: 2d00 cmp r5, #0 b340: dbf4 blt.n b32c b342: 42bd cmp r5, r7 b344: daf2 bge.n b32c m = px_h - (p->spx >> 1); b346: eba2 0363 sub.w r3, r2, r3, asr #1 b34a: b2db uxtb r3, r3 if(p->inv) m = 255 - m; b34c: f894 c028 ldrb.w ip, [r4, #40] ; 0x28 b350: f01c 0f02 tst.w ip, #2 b354: bf1c itt ne b356: 43db mvnne r3, r3 b358: b2db uxtbne r3, r3 b35a: 46b0 mov r8, r6 mask_buf[k] = mask_mix(mask_buf[k], m); b35c: f896 c000 ldrb.w ip, [r6] if(mask_new >= LV_OPA_MAX) return mask_act; b360: 2bf9 cmp r3, #249 ; 0xf9 b362: d8e1 bhi.n b328 if(mask_new <= LV_OPA_MIN) return 0; b364: 2b05 cmp r3, #5 b366: d9de bls.n b326 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b368: fb03 f30c mul.w r3, r3, ip b36c: eb03 2c03 add.w ip, r3, r3, lsl #8 b370: eb03 13cc add.w r3, r3, ip, lsl #7 b374: f3c3 5cc7 ubfx ip, r3, #23, #8 b378: e7d6 b.n b328 if(k < len && k >= 0) { b37a: 42bd cmp r5, r7 b37c: da26 bge.n b3cc b37e: 2d00 cmp r5, #0 b380: db24 blt.n b3cc int32_t x_inters = (px_h * p->xy_steep) >> 10; b382: 69a3 ldr r3, [r4, #24] b384: fb03 f302 mul.w r3, r3, r2 b388: 129b asrs r3, r3, #10 m = (x_inters * px_h) >> 9; b38a: fb02 f203 mul.w r2, r2, r3 b38e: f3c2 2247 ubfx r2, r2, #9, #8 if(p->yx_steep < 0) m = 255 - m; b392: 69e3 ldr r3, [r4, #28] b394: 2b00 cmp r3, #0 b396: bfbc itt lt b398: 43d2 mvnlt r2, r2 b39a: b2d2 uxtblt r2, r2 if(p->inv) m = 255 - m; b39c: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 b3a0: f013 0f02 tst.w r3, #2 b3a4: bf1c itt ne b3a6: 43d2 mvnne r2, r2 b3a8: b2d2 uxtbne r2, r2 mask_buf[k] = mask_mix(mask_buf[k], m); b3aa: 1946 adds r6, r0, r5 b3ac: 5d43 ldrb r3, [r0, r5] if(mask_new >= LV_OPA_MAX) return mask_act; b3ae: 2af9 cmp r2, #249 ; 0xf9 b3b0: d80b bhi.n b3ca if(mask_new <= LV_OPA_MIN) return 0; b3b2: 2a05 cmp r2, #5 b3b4: d908 bls.n b3c8 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b3b6: fb02 f203 mul.w r2, r2, r3 b3ba: eb02 2302 add.w r3, r2, r2, lsl #8 b3be: eb02 12c3 add.w r2, r2, r3, lsl #7 b3c2: f3c2 53c7 ubfx r3, r2, #23, #8 b3c6: e000 b.n b3ca if(mask_new <= LV_OPA_MIN) return 0; b3c8: 2300 movs r3, #0 mask_buf[k] = mask_mix(mask_buf[k], m); b3ca: 7033 strb r3, [r6, #0] if(p->inv) { b3cc: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 b3d0: f013 0f02 tst.w r3, #2 b3d4: d00a beq.n b3ec if(k > len) { b3d6: 428f cmp r7, r1 b3d8: f2c0 811a blt.w b610 if(k >= 0) { b3dc: 2900 cmp r1, #0 b3de: f2c0 811a blt.w b616 _lv_memset_00(&mask_buf[0], k); b3e2: 4b79 ldr r3, [pc, #484] ; (b5c8 ) b3e4: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b3e6: 2002 movs r0, #2 b3e8: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(k < 0) { b3ec: 3501 adds r5, #1 b3ee: f100 8115 bmi.w b61c if(k <= len) { b3f2: 42bd cmp r5, r7 b3f4: dd02 ble.n b3fc return LV_DRAW_MASK_RES_CHANGED; b3f6: 2002 movs r0, #2 b3f8: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} _lv_memset_00(&mask_buf[k], len - k); b3fc: 1b79 subs r1, r7, r5 b3fe: 4428 add r0, r5 b400: 4b71 ldr r3, [pc, #452] ; (b5c8 ) b402: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b404: 2002 movs r0, #2 b406: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(x_at_y > abs_x + len) { b40a: eb05 0e03 add.w lr, r5, r3 b40e: 4571 cmp r1, lr b410: dd05 ble.n b41e if(p->inv) { b412: f086 0002 eor.w r0, r6, #2 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b416: f3c0 0040 ubfx r0, r0, #1, #1 b41a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} int32_t xs = ((abs_y << 8) * p->xy_steep) >> 10; b41e: 0211 lsls r1, r2, #8 b420: fb07 f101 mul.w r1, r7, r1 int32_t xsi = xs >> 8; b424: ea4f 48a1 mov.w r8, r1, asr #18 int32_t xsf = xs & 0xFF; b428: f3c1 2187 ubfx r1, r1, #10, #8 int32_t xe = (((abs_y + 1) << 8) * p->xy_steep) >> 10; b42c: 3201 adds r2, #1 b42e: 0212 lsls r2, r2, #8 b430: fb07 f202 mul.w r2, r7, r2 int32_t xei = xe >> 8; b434: ea4f 4ca2 mov.w ip, r2, asr #18 k = xsi - abs_x; b438: eba8 0e05 sub.w lr, r8, r5 if(xsi != xei && (p->xy_steep < 0 && xsf == 0)) { b43c: 45e0 cmp r8, ip b43e: d063 beq.n b508 b440: 2f00 cmp r7, #0 b442: db5b blt.n b4fc y_inters = ((255 - xsf) * p->yx_steep) >> 10; b444: f1c1 01ff rsb r1, r1, #255 ; 0xff b448: 69e2 ldr r2, [r4, #28] b44a: fb02 f201 mul.w r2, r2, r1 b44e: 1295 asrs r5, r2, #10 if(k >= 0 && k < len) { b450: f1be 0f00 cmp.w lr, #0 b454: db1c blt.n b490 b456: 4573 cmp r3, lr b458: dd1a ble.n b490 m = 255 - ((y_inters * (255 - xsf)) >> 9); b45a: fb05 f101 mul.w r1, r5, r1 b45e: f3c1 2247 ubfx r2, r1, #9, #8 if(p->inv) m = 255 - m; b462: f016 0f02 tst.w r6, #2 m = 255 - ((y_inters * (255 - xsf)) >> 9); b466: bf04 itt eq b468: 43d2 mvneq r2, r2 b46a: b2d2 uxtbeq r2, r2 mask_buf[k] = mask_mix(mask_buf[k], m); b46c: eb00 060e add.w r6, r0, lr b470: f810 100e ldrb.w r1, [r0, lr] if(mask_new >= LV_OPA_MAX) return mask_act; b474: 2af9 cmp r2, #249 ; 0xf9 b476: d80a bhi.n b48e if(mask_new <= LV_OPA_MIN) return 0; b478: 2a05 cmp r2, #5 b47a: f240 80a1 bls.w b5c0 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b47e: fb02 f201 mul.w r2, r2, r1 b482: eb02 2102 add.w r1, r2, r2, lsl #8 b486: eb02 12c1 add.w r2, r2, r1, lsl #7 b48a: f3c2 51c7 ubfx r1, r2, #23, #8 mask_buf[k] = mask_mix(mask_buf[k], m); b48e: 7031 strb r1, [r6, #0] if(k >= 0 && k < len) { b490: f11e 0101 adds.w r1, lr, #1 b494: d420 bmi.n b4d8 b496: 428b cmp r3, r1 b498: dd1e ble.n b4d8 int32_t x_inters = ((255 - y_inters) * p->xy_steep) >> 10; b49a: f1c5 02ff rsb r2, r5, #255 ; 0xff b49e: 69a5 ldr r5, [r4, #24] b4a0: fb05 f502 mul.w r5, r5, r2 b4a4: 12ad asrs r5, r5, #10 m = ((255 - y_inters) * x_inters) >> 9; b4a6: fb02 f205 mul.w r2, r2, r5 b4aa: f3c2 2247 ubfx r2, r2, #9, #8 if(p->inv) m = 255 - m; b4ae: f894 5028 ldrb.w r5, [r4, #40] ; 0x28 b4b2: f015 0f02 tst.w r5, #2 b4b6: bf1c itt ne b4b8: 43d2 mvnne r2, r2 b4ba: b2d2 uxtbne r2, r2 mask_buf[k] = mask_mix(mask_buf[k], m); b4bc: 5c45 ldrb r5, [r0, r1] if(mask_new >= LV_OPA_MAX) return mask_act; b4be: 2af9 cmp r2, #249 ; 0xf9 b4c0: d809 bhi.n b4d6 if(mask_new <= LV_OPA_MIN) return 0; b4c2: 2a05 cmp r2, #5 b4c4: d97e bls.n b5c4 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b4c6: fb02 f205 mul.w r2, r2, r5 b4ca: eb02 2502 add.w r5, r2, r2, lsl #8 b4ce: eb02 12c5 add.w r2, r2, r5, lsl #7 b4d2: f3c2 55c7 ubfx r5, r2, #23, #8 mask_buf[k] = mask_mix(mask_buf[k], m); b4d6: 5445 strb r5, [r0, r1] if(p->inv) { b4d8: f894 2028 ldrb.w r2, [r4, #40] ; 0x28 b4dc: f012 0f02 tst.w r2, #2 b4e0: d074 beq.n b5cc if(k > len) return LV_DRAW_MASK_RES_TRANSP; b4e2: 4573 cmp r3, lr b4e4: f2c0 80b2 blt.w b64c if(k >= 0) _lv_memset_00(&mask_buf[0], k); b4e8: f1be 0f00 cmp.w lr, #0 b4ec: f2c0 80b1 blt.w b652 b4f0: 4671 mov r1, lr b4f2: 4b35 ldr r3, [pc, #212] ; (b5c8 ) b4f4: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b4f6: 2002 movs r0, #2 b4f8: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(xsi != xei && (p->xy_steep < 0 && xsf == 0)) { b4fc: 2900 cmp r1, #0 b4fe: f040 8100 bne.w b702 k--; b502: f10e 3eff add.w lr, lr, #4294967295 xsf = 0xFF; b506: 21ff movs r1, #255 ; 0xff if(k >= 0 && k < len) { b508: f1be 0f00 cmp.w lr, #0 b50c: db1e blt.n b54c b50e: 4573 cmp r3, lr b510: dd1c ble.n b54c int32_t xef = xe & 0xFF; b512: f3c2 2287 ubfx r2, r2, #10, #8 m = (xsf + xef) >> 1; b516: 440a add r2, r1 b518: f3c2 0247 ubfx r2, r2, #1, #8 if(p->inv) m = 255 - m; b51c: f016 0f02 tst.w r6, #2 b520: bf1c itt ne b522: 43d2 mvnne r2, r2 b524: b2d2 uxtbne r2, r2 mask_buf[k] = mask_mix(mask_buf[k], m); b526: eb00 060e add.w r6, r0, lr b52a: f810 100e ldrb.w r1, [r0, lr] if(mask_new >= LV_OPA_MAX) return mask_act; b52e: 2af9 cmp r2, #249 ; 0xf9 b530: d80b bhi.n b54a if(mask_new <= LV_OPA_MIN) return 0; b532: 2a05 cmp r2, #5 b534: d908 bls.n b548 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b536: fb02 f201 mul.w r2, r2, r1 b53a: eb02 2102 add.w r1, r2, r2, lsl #8 b53e: eb02 12c1 add.w r2, r2, r1, lsl #7 b542: f3c2 51c7 ubfx r1, r2, #23, #8 b546: e000 b.n b54a if(mask_new <= LV_OPA_MIN) return 0; b548: 2100 movs r1, #0 mask_buf[k] = mask_mix(mask_buf[k], m); b54a: 7031 strb r1, [r6, #0] if(p->inv) { b54c: f894 2028 ldrb.w r2, [r4, #40] ; 0x28 b550: f012 0f02 tst.w r2, #2 b554: d00a beq.n b56c k = xsi - abs_x; b556: ebac 0105 sub.w r1, ip, r5 if(k >= len) { b55a: 428b cmp r3, r1 b55c: dd61 ble.n b622 if(k >= 0) _lv_memset_00(&mask_buf[0], k); b55e: 2900 cmp r1, #0 b560: db62 blt.n b628 b562: 4b19 ldr r3, [pc, #100] ; (b5c8 ) b564: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b566: 2002 movs r0, #2 b568: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} k++; b56c: f10e 0201 add.w r2, lr, #1 b570: 429a cmp r2, r3 b572: bfa8 it ge b574: 461a movge r2, r3 if(k == 0) return LV_DRAW_MASK_RES_TRANSP; b576: 2a00 cmp r2, #0 b578: d059 beq.n b62e else if(k > 0) _lv_memset_00(&mask_buf[k], len - k); b57a: 2a00 cmp r2, #0 b57c: dd5a ble.n b634 b57e: 1a99 subs r1, r3, r2 b580: 4410 add r0, r2 b582: 4b11 ldr r3, [pc, #68] ; (b5c8 ) b584: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b586: 2002 movs r0, #2 b588: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(mask_new <= LV_OPA_MIN) return 0; b58c: 2500 movs r5, #0 b58e: e0dc b.n b74a b590: 2500 movs r5, #0 b592: e100 b.n b796 else if(k > 0) _lv_memset_00(&mask_buf[0], k); b594: 2900 cmp r1, #0 b596: dd50 ble.n b63a b598: 4b0b ldr r3, [pc, #44] ; (b5c8 ) b59a: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b59c: 2002 movs r0, #2 b59e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} k += 2; b5a2: f10e 0e01 add.w lr, lr, #1 if(k > len) return LV_DRAW_MASK_RES_FULL_COVER; b5a6: 4573 cmp r3, lr b5a8: db4a blt.n b640 if(k >= 0) _lv_memset_00(&mask_buf[k], len - k); b5aa: f1be 0f00 cmp.w lr, #0 b5ae: db4a blt.n b646 b5b0: eba3 010e sub.w r1, r3, lr b5b4: 4470 add r0, lr b5b6: 4b04 ldr r3, [pc, #16] ; (b5c8 ) b5b8: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b5ba: 2002 movs r0, #2 b5bc: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(mask_new <= LV_OPA_MIN) return 0; b5c0: 2100 movs r1, #0 b5c2: e764 b.n b48e b5c4: 2500 movs r5, #0 b5c6: e786 b.n b4d6 b5c8: 00012b1f .word 0x00012b1f k++; b5cc: f10e 0202 add.w r2, lr, #2 b5d0: 429a cmp r2, r3 b5d2: bfa8 it ge b5d4: 461a movge r2, r3 if(k == 0) return LV_DRAW_MASK_RES_TRANSP; b5d6: 2a00 cmp r2, #0 b5d8: d03e beq.n b658 else if(k > 0) _lv_memset_00(&mask_buf[k], len - k); b5da: 2a00 cmp r2, #0 b5dc: dd3f ble.n b65e b5de: 1a99 subs r1, r3, r2 b5e0: 4410 add r0, r2 b5e2: 4b73 ldr r3, [pc, #460] ; (b7b0 ) b5e4: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b5e6: 2002 movs r0, #2 b5e8: 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; b5ec: 2001 movs r0, #1 b5ee: 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; b5f2: 2001 movs r0, #1 b5f4: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(abs_x + len < 0) return LV_DRAW_MASK_RES_FULL_COVER; b5f8: 2001 movs r0, #1 b5fa: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(k < 0) return LV_DRAW_MASK_RES_TRANSP; b5fe: 2000 movs r0, #0 b600: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(abs_x + len < 0) return LV_DRAW_MASK_RES_TRANSP; b604: 2000 movs r0, #0 b606: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(k >= len) return LV_DRAW_MASK_RES_TRANSP; b60a: 2000 movs r0, #0 b60c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} return LV_DRAW_MASK_RES_TRANSP; b610: 2000 movs r0, #0 b612: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} return LV_DRAW_MASK_RES_CHANGED; b616: 2002 movs r0, #2 b618: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} return LV_DRAW_MASK_RES_TRANSP; b61c: 2000 movs r0, #0 b61e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 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_CHANGED; b628: 2002 movs r0, #2 b62a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(k == 0) return LV_DRAW_MASK_RES_TRANSP; b62e: 2000 movs r0, #0 b630: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} return LV_DRAW_MASK_RES_CHANGED; b634: 2002 movs r0, #2 b636: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} b63a: 2002 movs r0, #2 b63c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(k > len) return LV_DRAW_MASK_RES_FULL_COVER; b640: 2001 movs r0, #1 b642: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} return LV_DRAW_MASK_RES_CHANGED; b646: 2002 movs r0, #2 b648: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(k > len) return LV_DRAW_MASK_RES_TRANSP; b64c: 2000 movs r0, #0 b64e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} return LV_DRAW_MASK_RES_CHANGED; b652: 2002 movs r0, #2 b654: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(k == 0) return LV_DRAW_MASK_RES_TRANSP; b658: 2000 movs r0, #0 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} y_at_x = (int32_t)((int32_t)p->yx_steep * (abs_x + len)) >> 10; b664: 461f mov r7, r3 b666: 442b add r3, r5 b668: fb01 f103 mul.w r1, r1, r3 if(y_at_x < abs_y) { b66c: ebb2 2fa1 cmp.w r2, r1, asr #10 b670: f73f ae4b bgt.w b30a if(p->yx_steep > 0) xe = ((abs_y << 8) * p->xy_steep) >> 10; b674: 0212 lsls r2, r2, #8 b676: 69a3 ldr r3, [r4, #24] b678: fb03 f302 mul.w r3, r3, r2 b67c: 129b asrs r3, r3, #10 int32_t xei = xe >> 8; b67e: 1219 asrs r1, r3, #8 if(xef == 0) px_h = 255; b680: f013 03ff ands.w r3, r3, #255 ; 0xff b684: d039 beq.n b6fa else px_h = 255 - (((255 - xef) * p->spx) >> 8); b686: f1c3 03ff rsb r3, r3, #255 ; 0xff b68a: 6a62 ldr r2, [r4, #36] ; 0x24 b68c: fb02 f203 mul.w r2, r2, r3 b690: ea4f 2e22 mov.w lr, r2, asr #8 b694: f1ce 02ff rsb r2, lr, #255 ; 0xff if(k >= 0 && k < len) { b698: 1b49 subs r1, r1, r5 b69a: d41a bmi.n b6d2 b69c: 42b9 cmp r1, r7 b69e: da18 bge.n b6d2 m = 255 - (((255 - xef) * (255 - px_h)) >> 9); b6a0: fb0e f303 mul.w r3, lr, r3 b6a4: f3c3 2347 ubfx r3, r3, #9, #8 if(p->inv) m = 255 - m; b6a8: f016 0f02 tst.w r6, #2 m = 255 - (((255 - xef) * (255 - px_h)) >> 9); b6ac: bf04 itt eq b6ae: 43db mvneq r3, r3 b6b0: b2db uxtbeq r3, r3 mask_buf[k] = mask_mix(mask_buf[k], m); b6b2: 1846 adds r6, r0, r1 b6b4: 5c45 ldrb r5, [r0, r1] if(mask_new >= LV_OPA_MAX) return mask_act; b6b6: 2bf9 cmp r3, #249 ; 0xf9 b6b8: d80a bhi.n b6d0 if(mask_new <= LV_OPA_MIN) return 0; b6ba: 2b05 cmp r3, #5 b6bc: f67f ae31 bls.w b322 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b6c0: fb03 f305 mul.w r3, r3, r5 b6c4: eb03 2503 add.w r5, r3, r3, lsl #8 b6c8: eb03 13c5 add.w r3, r3, r5, lsl #7 b6cc: f3c3 55c7 ubfx r5, r3, #23, #8 mask_buf[k] = mask_mix(mask_buf[k], m); b6d0: 7035 strb r5, [r6, #0] k++; b6d2: 1c4d adds r5, r1, #1 b6d4: 1946 adds r6, r0, r5 if(mask_new <= LV_OPA_MIN) return 0; b6d6: f04f 0e00 mov.w lr, #0 b6da: e62d b.n b338 y_at_x = (int32_t)((int32_t)p->yx_steep * (abs_x + len)) >> 10; b6dc: 461f mov r7, r3 b6de: 442b add r3, r5 b6e0: fb01 f103 mul.w r1, r1, r3 if(y_at_x > abs_y) { b6e4: ebb2 2fa1 cmp.w r2, r1, asr #10 b6e8: f6ff ae15 blt.w b316 else xe = (((abs_y + 1) << 8) * p->xy_steep) >> 10; b6ec: 3201 adds r2, #1 b6ee: 0212 lsls r2, r2, #8 b6f0: 69a3 ldr r3, [r4, #24] b6f2: fb03 f302 mul.w r3, r3, r2 b6f6: 129b asrs r3, r3, #10 b6f8: e7c1 b.n b67e int32_t k = xei - abs_x; b6fa: 1b4d subs r5, r1, r5 b6fc: 4629 mov r1, r5 if(xef == 0) px_h = 255; b6fe: 22ff movs r2, #255 ; 0xff b700: e7e8 b.n b6d4 y_inters = (xsf * (-p->yx_steep)) >> 10; b702: 69e2 ldr r2, [r4, #28] b704: 4252 negs r2, r2 b706: fb01 f202 mul.w r2, r1, r2 b70a: 1292 asrs r2, r2, #10 if(k >= 0 && k < len) { b70c: f1be 0f00 cmp.w lr, #0 b710: db1c blt.n b74c b712: 4573 cmp r3, lr b714: dd1a ble.n b74c m = (y_inters * xsf) >> 9; b716: fb02 f101 mul.w r1, r2, r1 b71a: f3c1 2147 ubfx r1, r1, #9, #8 if(p->inv) m = 255 - m; b71e: f016 0f02 tst.w r6, #2 b722: bf1c itt ne b724: 43c9 mvnne r1, r1 b726: b2c9 uxtbne r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); b728: eb00 060e add.w r6, r0, lr b72c: f810 500e ldrb.w r5, [r0, lr] if(mask_new >= LV_OPA_MAX) return mask_act; b730: 29f9 cmp r1, #249 ; 0xf9 b732: d80a bhi.n b74a if(mask_new <= LV_OPA_MIN) return 0; b734: 2905 cmp r1, #5 b736: f67f af29 bls.w b58c return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b73a: fb01 f105 mul.w r1, r1, r5 b73e: eb01 2501 add.w r5, r1, r1, lsl #8 b742: eb01 11c5 add.w r1, r1, r5, lsl #7 b746: f3c1 55c7 ubfx r5, r1, #23, #8 mask_buf[k] = mask_mix(mask_buf[k], m); b74a: 7035 strb r5, [r6, #0] if(k >= 0 && k < len) { b74c: f1be 0101 subs.w r1, lr, #1 b750: d422 bmi.n b798 b752: 428b cmp r3, r1 b754: dd20 ble.n b798 int32_t x_inters = ((255 - y_inters) * (-p->xy_steep)) >> 10; b756: f1c2 02ff rsb r2, r2, #255 ; 0xff b75a: 69a5 ldr r5, [r4, #24] b75c: 426d negs r5, r5 b75e: fb02 f505 mul.w r5, r2, r5 b762: 12ad asrs r5, r5, #10 m = 255 - (((255 - y_inters) * x_inters) >> 9); b764: fb02 f205 mul.w r2, r2, r5 b768: f3c2 2247 ubfx r2, r2, #9, #8 if(p->inv) m = 255 - m; b76c: f894 5028 ldrb.w r5, [r4, #40] ; 0x28 b770: f015 0f02 tst.w r5, #2 m = 255 - (((255 - y_inters) * x_inters) >> 9); b774: bf04 itt eq b776: 43d2 mvneq r2, r2 b778: b2d2 uxtbeq r2, r2 mask_buf[k] = mask_mix(mask_buf[k], m); b77a: 5c45 ldrb r5, [r0, r1] if(mask_new >= LV_OPA_MAX) return mask_act; b77c: 2af9 cmp r2, #249 ; 0xf9 b77e: d80a bhi.n b796 if(mask_new <= LV_OPA_MIN) return 0; b780: 2a05 cmp r2, #5 b782: f67f af05 bls.w b590 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b786: fb02 f205 mul.w r2, r2, r5 b78a: eb02 2502 add.w r5, r2, r2, lsl #8 b78e: eb02 12c5 add.w r2, r2, r5, lsl #7 b792: f3c2 55c7 ubfx r5, r2, #23, #8 mask_buf[k] = mask_mix(mask_buf[k], m); b796: 5445 strb r5, [r0, r1] if(p->inv) { b798: f894 2028 ldrb.w r2, [r4, #40] ; 0x28 b79c: f012 0f02 tst.w r2, #2 b7a0: f43f aeff beq.w b5a2 if(k > len) k = len; b7a4: 428b cmp r3, r1 b7a6: f6bf aef5 bge.w b594 return LV_DRAW_MASK_RES_CHANGED; b7aa: 2002 movs r0, #2 b7ac: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} b7b0: 00012b1f .word 0x00012b1f 0000b7b4 : { b7b4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} b7b8: b08d sub sp, #52 ; 0x34 b7ba: 9d16 ldr r5, [sp, #88] ; 0x58 bool outer = p->cfg.outer; b7bc: 7cae ldrb r6, [r5, #18] b7be: f006 0601 and.w r6, r6, #1 int32_t radius = p->cfg.radius; b7c2: f9b5 8010 ldrsh.w r8, [r5, #16] b7c6: 1dec adds r4, r5, #7 b7c8: f105 090f add.w r9, r5, #15 uint8_t * d8 = (uint8_t *)dst; b7cc: f10d 0e28 add.w lr, sp, #40 ; 0x28 *d8 = *s8; b7d0: f814 7f01 ldrb.w r7, [r4, #1]! b7d4: f80e 7b01 strb.w r7, [lr], #1 while(len) { b7d8: 454c cmp r4, r9 b7da: d1f9 bne.n b7d0 if(outer == false) { b7dc: 2e00 cmp r6, #0 b7de: d13d bne.n b85c if(abs_y < rect.y1 || abs_y > rect.y2) { b7e0: f9bd 402a ldrsh.w r4, [sp, #42] ; 0x2a b7e4: 4294 cmp r4, r2 b7e6: f300 822b bgt.w bc40 b7ea: f9bd 402e ldrsh.w r4, [sp, #46] ; 0x2e b7ee: 4294 cmp r4, r2 b7f0: f2c0 822a blt.w bc48 b7f4: 469b mov fp, r3 b7f6: 460f mov r7, r1 b7f8: 9002 str r0, [sp, #8] if((abs_x >= rect.x1 + radius && abs_x + len <= rect.x2 - radius) || b7fa: f9bd 9028 ldrsh.w r9, [sp, #40] ; 0x28 b7fe: eb08 0309 add.w r3, r8, r9 b802: 4299 cmp r1, r3 b804: db06 blt.n b814 b806: 4459 add r1, fp b808: f9bd 302c ldrsh.w r3, [sp, #44] ; 0x2c b80c: eba3 0308 sub.w r3, r3, r8 b810: 4299 cmp r1, r3 b812: dd0b ble.n b82c (abs_y >= rect.y1 + radius && abs_y <= rect.y2 - radius)) { b814: f9bd 302a ldrsh.w r3, [sp, #42] ; 0x2a b818: eb03 0108 add.w r1, r3, r8 if((abs_x >= rect.x1 + radius && abs_x + len <= rect.x2 - radius) || b81c: 428a cmp r2, r1 b81e: db53 blt.n b8c8 (abs_y >= rect.y1 + radius && abs_y <= rect.y2 - radius)) { b820: f9bd 102e ldrsh.w r1, [sp, #46] ; 0x2e b824: eba1 0108 sub.w r1, r1, r8 b828: 428a cmp r2, r1 b82a: dc4d bgt.n b8c8 if(outer == false) { b82c: bb86 cbnz r6, b890 int32_t last = rect.x1 - abs_x; b82e: eba9 0407 sub.w r4, r9, r7 if(last > len) return LV_DRAW_MASK_RES_TRANSP; b832: 455c cmp r4, fp b834: f300 820c bgt.w bc50 if(last >= 0) { b838: 2c00 cmp r4, #0 b83a: db03 blt.n b844 _lv_memset_00(&mask_buf[0], last); b83c: 4621 mov r1, r4 b83e: 9802 ldr r0, [sp, #8] b840: 4b9f ldr r3, [pc, #636] ; (bac0 ) b842: 4798 blx r3 int32_t first = rect.x2 - abs_x + 1; b844: f9bd 002c ldrsh.w r0, [sp, #44] ; 0x2c b848: 1bc0 subs r0, r0, r7 b84a: 3001 adds r0, #1 if(first <= 0) return LV_DRAW_MASK_RES_TRANSP; b84c: 2800 cmp r0, #0 b84e: f340 8201 ble.w bc54 else if(first < len) { b852: 4583 cmp fp, r0 b854: dc0d bgt.n b872 if(last == 0 && first == len) return LV_DRAW_MASK_RES_FULL_COVER; b856: b1bc cbz r4, b888 else return LV_DRAW_MASK_RES_CHANGED; b858: 2002 movs r0, #2 b85a: e1f2 b.n bc42 if(abs_y < rect.y1 || abs_y > rect.y2) { b85c: f9bd 402a ldrsh.w r4, [sp, #42] ; 0x2a b860: 4294 cmp r4, r2 b862: f300 81f3 bgt.w bc4c b866: f9bd 402e ldrsh.w r4, [sp, #46] ; 0x2e b86a: 4294 cmp r4, r2 b86c: dac2 bge.n b7f4 return LV_DRAW_MASK_RES_FULL_COVER; b86e: 2001 movs r0, #1 b870: e1e7 b.n bc42 _lv_memset_00(&mask_buf[first], len - first); b872: ebab 0100 sub.w r1, fp, r0 b876: 9b02 ldr r3, [sp, #8] b878: 4403 add r3, r0 b87a: 4618 mov r0, r3 b87c: 4b90 ldr r3, [pc, #576] ; (bac0 ) b87e: 4798 blx r3 if(last == 0 && first == len) return LV_DRAW_MASK_RES_FULL_COVER; b880: 2c00 cmp r4, #0 b882: d1e9 bne.n b858 else return LV_DRAW_MASK_RES_CHANGED; b884: 2002 movs r0, #2 b886: e1dc b.n bc42 if(last == 0 && first == len) return LV_DRAW_MASK_RES_FULL_COVER; b888: 4583 cmp fp, r0 b88a: d1e5 bne.n b858 b88c: 2001 movs r0, #1 b88e: e1d8 b.n bc42 int32_t first = rect.x1 - abs_x; b890: eba9 0007 sub.w r0, r9, r7 b894: ea20 70e0 bic.w r0, r0, r0, asr #31 if(first <= len) { b898: 4558 cmp r0, fp b89a: dd01 ble.n b8a0 return LV_DRAW_MASK_RES_CHANGED; b89c: 2002 movs r0, #2 b89e: e1d0 b.n bc42 int32_t last = rect.x2 - abs_x - first + 1; b8a0: f9bd 102c ldrsh.w r1, [sp, #44] ; 0x2c b8a4: 1bc9 subs r1, r1, r7 b8a6: 1a09 subs r1, r1, r0 b8a8: 3101 adds r1, #1 if(first + last > len) last = len - first; b8aa: 1843 adds r3, r0, r1 b8ac: 459b cmp fp, r3 b8ae: bfb8 it lt b8b0: ebab 0100 sublt.w r1, fp, r0 if(last >= 0) { b8b4: 2900 cmp r1, #0 b8b6: f2c0 81cf blt.w bc58 _lv_memset_00(&mask_buf[first], last); b8ba: 9b02 ldr r3, [sp, #8] b8bc: 4403 add r3, r0 b8be: 4618 mov r0, r3 b8c0: 4b7f ldr r3, [pc, #508] ; (bac0 ) b8c2: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b8c4: 2002 movs r0, #2 b8c6: e1bc b.n bc42 b8c8: f9bd a02c ldrsh.w sl, [sp, #44] ; 0x2c return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b8cc: b29b uxth r3, r3 b8ce: f8bd 102e ldrh.w r1, [sp, #46] ; 0x2e b8d2: 3101 adds r1, #1 b8d4: 1ac9 subs r1, r1, r3 int32_t h = lv_area_get_height(&rect); b8d6: b209 sxth r1, r1 abs_y -= rect.y1; b8d8: 1ad2 subs r2, r2, r3 uint32_t r2 = p->cfg.radius * p->cfg.radius; b8da: fb08 f308 mul.w r3, r8, r8 b8de: 9301 str r3, [sp, #4] if(abs_y < radius || abs_y > h - radius - 1) { b8e0: b212 sxth r2, r2 b8e2: 4590 cmp r8, r2 b8e4: f300 81d1 bgt.w bc8a b8e8: eba1 0308 sub.w r3, r1, r8 b8ec: 3b01 subs r3, #1 b8ee: 429a cmp r2, r3 b8f0: f300 81b4 bgt.w bc5c return LV_DRAW_MASK_RES_CHANGED; b8f4: 2002 movs r0, #2 b8f6: e1a4 b.n bc42 x0.f = p->y_prev_x.f; b8f8: 8b6b ldrh r3, [r5, #26] b8fa: f8ad 301a strh.w r3, [sp, #26] x0.i = p->y_prev_x.i; b8fe: 8b2b ldrh r3, [r5, #24] b900: f8ad 3018 strh.w r3, [sp, #24] b904: e1d6 b.n bcb4 _lv_sqrt(r2 - ((y - 1) * (y - 1)), &x1, sqrt_mask); b906: 9a04 ldr r2, [sp, #16] b908: a907 add r1, sp, #28 b90a: 9b01 ldr r3, [sp, #4] b90c: fb00 3010 mls r0, r0, r0, r3 b910: 4b6c ldr r3, [pc, #432] ; (bac4 ) b912: 4798 blx r3 _lv_sqrt(r2 - (y * y), &x0, sqrt_mask); b914: 9a04 ldr r2, [sp, #16] b916: a906 add r1, sp, #24 b918: 9b01 ldr r3, [sp, #4] b91a: fb04 3014 mls r0, r4, r4, r3 b91e: 4b69 ldr r3, [pc, #420] ; (bac4 ) b920: 4798 blx r3 p->y_prev = y; b922: 616c str r4, [r5, #20] p->y_prev_x.f = x0.f; b924: f8bd 301a ldrh.w r3, [sp, #26] b928: 836b strh r3, [r5, #26] p->y_prev_x.i = x0.i; b92a: f8bd 3018 ldrh.w r3, [sp, #24] b92e: 832b strh r3, [r5, #24] b930: e1d1 b.n bcd6 if(x0.i == x1.i - 1 && x1.f == 0) { b932: f8bd 101e ldrh.w r1, [sp, #30] b936: 2900 cmp r1, #0 b938: f040 81d5 bne.w bce6 x1.i--; b93c: 3a01 subs r2, #1 b93e: f8ad 201c strh.w r2, [sp, #28] x1.f = 0xFF; b942: 22ff movs r2, #255 ; 0xff b944: f8ad 201e strh.w r2, [sp, #30] b948: e1cd b.n bce6 lv_opa_t m = (x0.f + x1.f) >> 1; b94a: f8bd 201a ldrh.w r2, [sp, #26] b94e: f8bd 101e ldrh.w r1, [sp, #30] b952: 440a add r2, r1 b954: f3c2 0247 ubfx r2, r2, #1, #8 if(outer) m = 255 - m; b958: b10e cbz r6, b95e b95a: 43d2 mvns r2, r2 b95c: b2d2 uxtb r2, r2 int32_t ofs = radius - x0.i - 1; b95e: eba8 0303 sub.w r3, r8, r3 b962: 3b01 subs r3, #1 if(kl >= 0 && kl < len) { b964: 18f9 adds r1, r7, r3 b966: d411 bmi.n b98c b968: 4559 cmp r1, fp b96a: da0f bge.n b98c mask_buf[kl] = mask_mix(mask_buf[kl], m); b96c: 9802 ldr r0, [sp, #8] b96e: 5c40 ldrb r0, [r0, r1] if(mask_new >= LV_OPA_MAX) return mask_act; b970: 2af9 cmp r2, #249 ; 0xf9 b972: d809 bhi.n b988 if(mask_new <= LV_OPA_MIN) return 0; b974: 2a05 cmp r2, #5 b976: d935 bls.n b9e4 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b978: fb02 f000 mul.w r0, r2, r0 b97c: eb00 2400 add.w r4, r0, r0, lsl #8 b980: eb00 10c4 add.w r0, r0, r4, lsl #7 b984: f3c0 50c7 ubfx r0, r0, #23, #8 mask_buf[kl] = mask_mix(mask_buf[kl], m); b988: 9c02 ldr r4, [sp, #8] b98a: 5460 strb r0, [r4, r1] int32_t kr = k + (w - ofs - 1); b98c: eba9 0303 sub.w r3, r9, r3 b990: 3b01 subs r3, #1 if(kr >= 0 && kr < len) { b992: 19df adds r7, r3, r7 b994: d411 bmi.n b9ba b996: 455f cmp r7, fp b998: da0f bge.n b9ba mask_buf[kr] = mask_mix(mask_buf[kr], m); b99a: 9b02 ldr r3, [sp, #8] b99c: 5ddb ldrb r3, [r3, r7] if(mask_new >= LV_OPA_MAX) return mask_act; b99e: 2af9 cmp r2, #249 ; 0xf9 b9a0: d809 bhi.n b9b6 if(mask_new <= LV_OPA_MIN) return 0; b9a2: 2a05 cmp r2, #5 b9a4: d920 bls.n b9e8 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b9a6: fb02 f203 mul.w r2, r2, r3 b9aa: eb02 2302 add.w r3, r2, r2, lsl #8 b9ae: eb02 12c3 add.w r2, r2, r3, lsl #7 b9b2: f3c2 53c7 ubfx r3, r2, #23, #8 mask_buf[kr] = mask_mix(mask_buf[kr], m); b9b6: 9a02 ldr r2, [sp, #8] b9b8: 55d3 strb r3, [r2, r7] if(outer == false) { b9ba: b1be cbz r6, b9ec kl++; b9bc: 1c48 adds r0, r1, #1 b9be: ea20 70e0 bic.w r0, r0, r0, asr #31 if(len_tmp + first > len) len_tmp = len - first; b9c2: 455f cmp r7, fp int32_t len_tmp = kr - first; b9c4: bfd4 ite le b9c6: 1a39 suble r1, r7, r0 if(len_tmp + first > len) len_tmp = len - first; b9c8: ebab 0100 subgt.w r1, fp, r0 if(first < len && len_tmp >= 0) { b9cc: 4558 cmp r0, fp b9ce: f280 8119 bge.w bc04 b9d2: 2900 cmp r1, #0 b9d4: f2c0 8116 blt.w bc04 _lv_memset_00(&mask_buf[first], len_tmp); b9d8: 9b02 ldr r3, [sp, #8] b9da: 4403 add r3, r0 b9dc: 4618 mov r0, r3 b9de: 4b38 ldr r3, [pc, #224] ; (bac0 ) b9e0: 4798 blx r3 b9e2: e10f b.n bc04 if(mask_new <= LV_OPA_MIN) return 0; b9e4: 2000 movs r0, #0 b9e6: e7cf b.n b988 b9e8: 2300 movs r3, #0 b9ea: e7e4 b.n b9b6 if(kl > len) { b9ec: 4559 cmp r1, fp b9ee: f300 8125 bgt.w bc3c if(kl >= 0) { b9f2: 2900 cmp r1, #0 b9f4: db02 blt.n b9fc _lv_memset_00(&mask_buf[0], kl); b9f6: 9802 ldr r0, [sp, #8] b9f8: 4b31 ldr r3, [pc, #196] ; (bac0 ) b9fa: 4798 blx r3 if(kr < 0) { b9fc: 3701 adds r7, #1 b9fe: f100 811d bmi.w bc3c if(kr <= len) { ba02: 455f cmp r7, fp ba04: f300 80fe bgt.w bc04 _lv_memset_00(&mask_buf[kr], len - kr); ba08: ebab 0107 sub.w r1, fp, r7 ba0c: 9b02 ldr r3, [sp, #8] ba0e: 443b add r3, r7 ba10: 4618 mov r0, r3 ba12: 4b2b ldr r3, [pc, #172] ; (bac0 ) ba14: 4798 blx r3 ba16: e0f5 b.n bc04 _lv_sqrt(r2 - (i * i), &y_next, sqrt_mask); ba18: 9a04 ldr r2, [sp, #16] ba1a: a909 add r1, sp, #36 ; 0x24 ba1c: 9b01 ldr r3, [sp, #4] ba1e: fb08 3018 mls r0, r8, r8, r3 ba22: 4b28 ldr r3, [pc, #160] ; (bac4 ) ba24: 4798 blx r3 m = 255 - (((255 - x0.f) * (255 - y_next.f)) >> 9); ba26: f8bd 1026 ldrh.w r1, [sp, #38] ; 0x26 ba2a: f8bd 301a ldrh.w r3, [sp, #26] ba2e: f1c3 02ff rsb r2, r3, #255 ; 0xff ba32: f1c1 03ff rsb r3, r1, #255 ; 0xff ba36: fb03 f302 mul.w r3, r3, r2 ba3a: f3c3 2347 ubfx r3, r3, #9, #8 if(outer) m = 255 - m; ba3e: b90e cbnz r6, ba44 m = 255 - (((255 - x0.f) * (255 - y_next.f)) >> 9); ba40: 43db mvns r3, r3 ba42: b2db uxtb r3, r3 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); ba44: 9803 ldr r0, [sp, #12] ba46: 4602 mov r2, r0 ba48: 2800 cmp r0, #0 ba4a: db11 blt.n ba70 ba4c: 4558 cmp r0, fp ba4e: da0f bge.n ba70 ba50: 9c02 ldr r4, [sp, #8] ba52: 1820 adds r0, r4, r0 ba54: 5ca2 ldrb r2, [r4, r2] if(mask_new >= LV_OPA_MAX) return mask_act; ba56: 2bf9 cmp r3, #249 ; 0xf9 ba58: d809 bhi.n ba6e if(mask_new <= LV_OPA_MIN) return 0; ba5a: 2b05 cmp r3, #5 ba5c: d929 bls.n bab2 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); ba5e: fb03 f202 mul.w r2, r3, r2 ba62: eb02 2402 add.w r4, r2, r2, lsl #8 ba66: eb02 12c4 add.w r2, r2, r4, lsl #7 ba6a: f3c2 52c7 ubfx r2, r2, #23, #8 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); ba6e: 7002 strb r2, [r0, #0] if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); ba70: f1ba 0f00 cmp.w sl, #0 ba74: db13 blt.n ba9e ba76: 45da cmp sl, fp ba78: da11 bge.n ba9e ba7a: 9c02 ldr r4, [sp, #8] ba7c: eb04 000a add.w r0, r4, sl ba80: f814 200a ldrb.w r2, [r4, sl] if(mask_new >= LV_OPA_MAX) return mask_act; ba84: 2bf9 cmp r3, #249 ; 0xf9 ba86: d809 bhi.n ba9c if(mask_new <= LV_OPA_MIN) return 0; ba88: 2b05 cmp r3, #5 ba8a: d914 bls.n bab6 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); ba8c: fb03 f302 mul.w r3, r3, r2 ba90: eb03 2203 add.w r2, r3, r3, lsl #8 ba94: eb03 13c2 add.w r3, r3, r2, lsl #7 ba98: f3c3 52c7 ubfx r2, r3, #23, #8 if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); ba9c: 7002 strb r2, [r0, #0] kl--; ba9e: 9b03 ldr r3, [sp, #12] baa0: 3b01 subs r3, #1 baa2: 9303 str r3, [sp, #12] kr++; baa4: f10a 0a01 add.w sl, sl, #1 y_prev.f = y_next.f; baa8: f8ad 1022 strh.w r1, [sp, #34] ; 0x22 i++; baac: f108 0801 add.w r8, r8, #1 bab0: e15e b.n bd70 if(mask_new <= LV_OPA_MIN) return 0; bab2: 2200 movs r2, #0 bab4: e7db b.n ba6e bab6: 2200 movs r2, #0 bab8: e7f0 b.n ba9c baba: 2700 movs r7, #0 babc: e039 b.n bb32 babe: bf00 nop bac0: 00012b1f .word 0x00012b1f bac4: 00012305 .word 0x00012305 bac8: 2700 movs r7, #0 if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); baca: f80e 7008 strb.w r7, [lr, r8] kl--; bace: 3801 subs r0, #1 kr++; bad0: 3401 adds r4, #1 for(; i <= x1.i; i++) { bad2: 3101 adds r1, #1 y_prev.f = y_next.f; bad4: 461a mov r2, r3 for(; i <= x1.i; i++) { bad6: 9d01 ldr r5, [sp, #4] bad8: 42a9 cmp r1, r5 bada: d840 bhi.n bb5e */ 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); badc: eb09 1712 add.w r7, r9, r2, lsr #4 sqrt_approx(&y_next, &y_prev, r2 - (i * i)); bae0: fb01 a311 mls r3, r1, r1, sl uint32_t raw2 = raw * raw; bae4: fb07 fc07 mul.w ip, r7, r7 int32_t d = x - raw2; bae8: ebcc 2303 rsb r3, ip, r3, lsl #8 d = (int32_t)d / (int32_t)(2 * raw) + raw; baec: ea4f 0c47 mov.w ip, r7, lsl #1 baf0: fb93 f3fc sdiv r3, r3, ip baf4: 441f add r7, r3 q->i = d >> 4; baf6: f3c7 1c0f ubfx ip, r7, #4, #16 q->f = (d & 0xF) << 4; bafa: 013f lsls r7, r7, #4 bafc: f007 03f0 and.w r3, r7, #240 ; 0xf0 m = (y_prev.f + y_next.f) >> 1; bb00: 441a add r2, r3 bb02: f3c2 0247 ubfx r2, r2, #1, #8 if(outer) m = 255 - m; bb06: b10e cbz r6, bb0c bb08: 43d2 mvns r2, r2 bb0a: b2d2 uxtb r2, r2 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); bb0c: 2800 cmp r0, #0 bb0e: db12 blt.n bb36 bb10: 4583 cmp fp, r0 bb12: dd10 ble.n bb36 bb14: 4680 mov r8, r0 bb16: f81e 7000 ldrb.w r7, [lr, r0] if(mask_new >= LV_OPA_MAX) return mask_act; bb1a: 2af9 cmp r2, #249 ; 0xf9 bb1c: d809 bhi.n bb32 if(mask_new <= LV_OPA_MIN) return 0; bb1e: 2a05 cmp r2, #5 bb20: d9cb bls.n baba return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); bb22: fb02 f507 mul.w r5, r2, r7 bb26: eb05 2705 add.w r7, r5, r5, lsl #8 bb2a: eb05 17c7 add.w r7, r5, r7, lsl #7 bb2e: f3c7 57c7 ubfx r7, r7, #23, #8 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); bb32: f80e 7008 strb.w r7, [lr, r8] if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); bb36: 2c00 cmp r4, #0 bb38: dbc9 blt.n bace bb3a: 45a3 cmp fp, r4 bb3c: ddc7 ble.n bace bb3e: 46a0 mov r8, r4 bb40: f81e 7004 ldrb.w r7, [lr, r4] if(mask_new >= LV_OPA_MAX) return mask_act; bb44: 2af9 cmp r2, #249 ; 0xf9 bb46: d8c0 bhi.n baca if(mask_new <= LV_OPA_MIN) return 0; bb48: 2a05 cmp r2, #5 bb4a: d9bd bls.n bac8 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); bb4c: fb02 f207 mul.w r2, r2, r7 bb50: eb02 2702 add.w r7, r2, r2, lsl #8 bb54: eb02 17c7 add.w r7, r2, r7, lsl #7 bb58: f3c7 57c7 ubfx r7, r7, #23, #8 bb5c: e7b5 b.n baca bb5e: f8dd 8010 ldr.w r8, [sp, #16] bb62: f8dd a014 ldr.w sl, [sp, #20] bb66: 43ea mvns r2, r5 bb68: 4442 add r2, r8 bb6a: 9903 ldr r1, [sp, #12] bb6c: 4411 add r1, r2 bb6e: 9103 str r1, [sp, #12] bb70: 3501 adds r5, #1 bb72: 44aa add sl, r5 bb74: ebaa 0a08 sub.w sl, sl, r8 bb78: f8ad 3022 strh.w r3, [sp, #34] ; 0x22 bb7c: f8ad c024 strh.w ip, [sp, #36] ; 0x24 bb80: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 if(y_prev.f) { bb84: f8bd 3022 ldrh.w r3, [sp, #34] ; 0x22 bb88: 2b00 cmp r3, #0 bb8a: d03a beq.n bc02 m = (y_prev.f * x1.f) >> 9; bb8c: f8bd 201e ldrh.w r2, [sp, #30] bb90: fb03 f302 mul.w r3, r3, r2 bb94: f3c3 2347 ubfx r3, r3, #9, #8 if(outer) m = 255 - m; bb98: b10e cbz r6, bb9e bb9a: 43db mvns r3, r3 bb9c: b2db uxtb r3, r3 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); bb9e: 9a03 ldr r2, [sp, #12] bba0: 2a00 cmp r2, #0 bba2: db12 blt.n bbca bba4: 4593 cmp fp, r2 bba6: dd10 ble.n bbca bba8: 9802 ldr r0, [sp, #8] bbaa: 4601 mov r1, r0 bbac: 4411 add r1, r2 bbae: 5c82 ldrb r2, [r0, r2] if(mask_new >= LV_OPA_MAX) return mask_act; bbb0: 2bf9 cmp r3, #249 ; 0xf9 bbb2: d809 bhi.n bbc8 if(mask_new <= LV_OPA_MIN) return 0; bbb4: 2b05 cmp r3, #5 bbb6: d927 bls.n bc08 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); bbb8: fb03 f202 mul.w r2, r3, r2 bbbc: eb02 2002 add.w r0, r2, r2, lsl #8 bbc0: eb02 12c0 add.w r2, r2, r0, lsl #7 bbc4: f3c2 52c7 ubfx r2, r2, #23, #8 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); bbc8: 700a strb r2, [r1, #0] if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); bbca: f1ba 0f00 cmp.w sl, #0 bbce: db13 blt.n bbf8 bbd0: 45d3 cmp fp, sl bbd2: dd11 ble.n bbf8 bbd4: 9802 ldr r0, [sp, #8] bbd6: eb00 010a add.w r1, r0, sl bbda: f810 200a ldrb.w r2, [r0, sl] if(mask_new >= LV_OPA_MAX) return mask_act; bbde: 2bf9 cmp r3, #249 ; 0xf9 bbe0: d809 bhi.n bbf6 if(mask_new <= LV_OPA_MIN) return 0; bbe2: 2b05 cmp r3, #5 bbe4: d912 bls.n bc0c return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); bbe6: fb03 f302 mul.w r3, r3, r2 bbea: eb03 2203 add.w r2, r3, r3, lsl #8 bbee: eb03 13c2 add.w r3, r3, r2, lsl #7 bbf2: f3c3 52c7 ubfx r2, r3, #23, #8 if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); bbf6: 700a strb r2, [r1, #0] kl--; bbf8: 9b03 ldr r3, [sp, #12] bbfa: 3b01 subs r3, #1 bbfc: 9303 str r3, [sp, #12] kr++; bbfe: f10a 0a01 add.w sl, sl, #1 if(outer == 0) { bc02: b12e cbz r6, bc10 return LV_DRAW_MASK_RES_CHANGED; bc04: 2002 movs r0, #2 bc06: e01c b.n bc42 if(mask_new <= LV_OPA_MIN) return 0; bc08: 2200 movs r2, #0 bc0a: e7dd b.n bbc8 bc0c: 2200 movs r2, #0 bc0e: e7f2 b.n bbf6 kl++; bc10: 9903 ldr r1, [sp, #12] bc12: 3101 adds r1, #1 if(kl > len) { bc14: 4559 cmp r1, fp bc16: dc11 bgt.n bc3c if(kl >= 0) _lv_memset_00(&mask_buf[0], kl); bc18: 2900 cmp r1, #0 bc1a: db02 blt.n bc22 bc1c: 9802 ldr r0, [sp, #8] bc1e: 4b60 ldr r3, [pc, #384] ; (bda0 ) bc20: 4798 blx r3 if(kr < 0) { bc22: f1ba 0f00 cmp.w sl, #0 bc26: db09 blt.n bc3c if(kr < len) _lv_memset_00(&mask_buf[kr], len - kr); bc28: 45da cmp sl, fp bc2a: daeb bge.n bc04 bc2c: ebab 010a sub.w r1, fp, sl bc30: 9b02 ldr r3, [sp, #8] bc32: 4453 add r3, sl bc34: 4618 mov r0, r3 bc36: 4b5a ldr r3, [pc, #360] ; (bda0 ) bc38: 4798 blx r3 bc3a: e7e3 b.n bc04 return LV_DRAW_MASK_RES_TRANSP; bc3c: 2000 movs r0, #0 bc3e: e000 b.n bc42 return LV_DRAW_MASK_RES_TRANSP; bc40: 2000 movs r0, #0 } bc42: b00d add sp, #52 ; 0x34 bc44: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} return LV_DRAW_MASK_RES_TRANSP; bc48: 2000 movs r0, #0 bc4a: e7fa b.n bc42 return LV_DRAW_MASK_RES_FULL_COVER; bc4c: 2001 movs r0, #1 bc4e: e7f8 b.n bc42 if(last > len) return LV_DRAW_MASK_RES_TRANSP; bc50: 2000 movs r0, #0 bc52: e7f6 b.n bc42 if(first <= 0) return LV_DRAW_MASK_RES_TRANSP; bc54: 2000 movs r0, #0 bc56: e7f4 b.n bc42 return LV_DRAW_MASK_RES_CHANGED; bc58: 2002 movs r0, #2 bc5a: e7f2 b.n bc42 if(radius <= 256) sqrt_mask = 0x800; bc5c: f5b8 7f80 cmp.w r8, #256 ; 0x100 bc60: bfd4 ite le bc62: f44f 6300 movle.w r3, #2048 ; 0x800 bc66: f44f 4300 movgt.w r3, #32768 ; 0x8000 bc6a: 9304 str r3, [sp, #16] y = radius - (h - abs_y) + 1; bc6c: 1a89 subs r1, r1, r2 bc6e: eba8 0001 sub.w r0, r8, r1 bc72: 1c44 adds r4, r0, #1 if((y - 1) == p->y_prev) { bc74: 696b ldr r3, [r5, #20] bc76: 4298 cmp r0, r3 bc78: f47f ae45 bne.w b906 x1.f = p->y_prev_x.f; bc7c: 8b6b ldrh r3, [r5, #26] bc7e: f8ad 301e strh.w r3, [sp, #30] x1.i = p->y_prev_x.i; bc82: 8b2b ldrh r3, [r5, #24] bc84: f8ad 301c strh.w r3, [sp, #28] bc88: e644 b.n b914 if(radius <= 256) sqrt_mask = 0x800; bc8a: f5b8 7f80 cmp.w r8, #256 ; 0x100 bc8e: bfd4 ite le bc90: f44f 6300 movle.w r3, #2048 ; 0x800 bc94: f44f 4300 movgt.w r3, #32768 ; 0x8000 bc98: 9304 str r3, [sp, #16] y = radius - abs_y; bc9a: eba8 0402 sub.w r4, r8, r2 if(y == p->y_prev) { bc9e: 696b ldr r3, [r5, #20] bca0: 429c cmp r4, r3 bca2: f43f ae29 beq.w b8f8 _lv_sqrt(r2 - (y * y), &x0, sqrt_mask); bca6: 9a04 ldr r2, [sp, #16] bca8: a906 add r1, sp, #24 bcaa: 9b01 ldr r3, [sp, #4] bcac: fb04 3014 mls r0, r4, r4, r3 bcb0: 4b3c ldr r3, [pc, #240] ; (bda4 ) bcb2: 4798 blx r3 _lv_sqrt(r2 - ((y - 1) * (y - 1)), &x1, sqrt_mask); bcb4: 1e63 subs r3, r4, #1 bcb6: 9a04 ldr r2, [sp, #16] bcb8: a907 add r1, sp, #28 bcba: 9303 str r3, [sp, #12] bcbc: 9801 ldr r0, [sp, #4] bcbe: fb03 0013 mls r0, r3, r3, r0 bcc2: 4b38 ldr r3, [pc, #224] ; (bda4 ) bcc4: 4798 blx r3 p->y_prev = y - 1; bcc6: 9b03 ldr r3, [sp, #12] bcc8: 616b str r3, [r5, #20] p->y_prev_x.f = x1.f; bcca: f8bd 301e ldrh.w r3, [sp, #30] bcce: 836b strh r3, [r5, #26] p->y_prev_x.i = x1.i; bcd0: f8bd 301c ldrh.w r3, [sp, #28] bcd4: 832b strh r3, [r5, #24] if(x0.i == x1.i - 1 && x1.f == 0) { bcd6: f8bd 3018 ldrh.w r3, [sp, #24] bcda: f8bd 201c ldrh.w r2, [sp, #28] bcde: 1e51 subs r1, r2, #1 bce0: 428b cmp r3, r1 bce2: f43f ae26 beq.w b932 int32_t k = rect.x1 - abs_x; /*First relevant coordinate on the of the mask*/ bce6: eba9 0707 sub.w r7, r9, r7 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); bcea: f10a 0a01 add.w sl, sl, #1 bcee: ebaa 0909 sub.w r9, sl, r9 int32_t w = lv_area_get_width(&rect); bcf2: fa0f f989 sxth.w r9, r9 if(x0.i == x1.i) { bcf6: f8bd 201c ldrh.w r2, [sp, #28] bcfa: 429a cmp r2, r3 bcfc: f43f ae25 beq.w b94a int32_t ofs = radius - (x0.i + 1); bd00: 3301 adds r3, #1 bd02: eba8 0803 sub.w r8, r8, r3 int32_t kl = k + ofs; bd06: eb07 0308 add.w r3, r7, r8 bd0a: 9303 str r3, [sp, #12] int32_t kr = k + (w - ofs - 1); bd0c: eba9 0808 sub.w r8, r9, r8 bd10: f108 3aff add.w sl, r8, #4294967295 bd14: 44ba add sl, r7 if(outer) { bd16: b186 cbz r6, bd3a int32_t first = kl + 1; bd18: 1c58 adds r0, r3, #1 bd1a: ea20 70e0 bic.w r0, r0, r0, asr #31 if(len_tmp + first > len) len_tmp = len - first; bd1e: 45da cmp sl, fp int32_t len_tmp = kr - first; bd20: bfd4 ite le bd22: ebaa 0100 suble.w r1, sl, r0 if(len_tmp + first > len) len_tmp = len - first; bd26: ebab 0100 subgt.w r1, fp, r0 if(first < len && len_tmp >= 0) { bd2a: 4558 cmp r0, fp bd2c: da05 bge.n bd3a bd2e: 2900 cmp r1, #0 bd30: db03 blt.n bd3a _lv_memset_00(&mask_buf[first], len_tmp); bd32: 9b02 ldr r3, [sp, #8] bd34: 4418 add r0, r3 bd36: 4b1a ldr r3, [pc, #104] ; (bda0 ) bd38: 4798 blx r3 uint32_t i = x0.i + 1; bd3a: f8bd 0018 ldrh.w r0, [sp, #24] bd3e: f100 0801 add.w r8, r0, #1 _lv_sqrt(r2 - (x0.i * x0.i), &y_prev, sqrt_mask); bd42: 9a04 ldr r2, [sp, #16] bd44: a908 add r1, sp, #32 bd46: 9b01 ldr r3, [sp, #4] bd48: fb00 3010 mls r0, r0, r0, r3 bd4c: 4b15 ldr r3, [pc, #84] ; (bda4 ) bd4e: 4798 blx r3 if(y_prev.f == 0) { bd50: f8bd 3022 ldrh.w r3, [sp, #34] ; 0x22 bd54: b93b cbnz r3, bd66 y_prev.i--; bd56: f8bd 3020 ldrh.w r3, [sp, #32] bd5a: 3b01 subs r3, #1 bd5c: f8ad 3020 strh.w r3, [sp, #32] y_prev.f = 0xFF; bd60: 23ff movs r3, #255 ; 0xff bd62: f8ad 3022 strh.w r3, [sp, #34] ; 0x22 if(y_prev.i >= y) { bd66: f8bd 3020 ldrh.w r3, [sp, #32] bd6a: 429c cmp r4, r3 bd6c: f77f ae54 ble.w ba18 for(; i <= x1.i; i++) { bd70: f8bd 501c ldrh.w r5, [sp, #28] bd74: 45a8 cmp r8, r5 bd76: f63f af05 bhi.w bb84 uint32_t raw = (ref->i << 4) + (ref->f >> 4); bd7a: f8bd 9020 ldrh.w r9, [sp, #32] bd7e: ea4f 1909 mov.w r9, r9, lsl #4 bd82: f8bd 2022 ldrh.w r2, [sp, #34] ; 0x22 bd86: 4641 mov r1, r8 bd88: 4654 mov r4, sl bd8a: 9803 ldr r0, [sp, #12] if(mask_new <= LV_OPA_MIN) return 0; bd8c: f8cd 8010 str.w r8, [sp, #16] bd90: f8cd a014 str.w sl, [sp, #20] bd94: f8dd a004 ldr.w sl, [sp, #4] bd98: 9501 str r5, [sp, #4] bd9a: f8dd e008 ldr.w lr, [sp, #8] bd9e: e69d b.n badc bda0: 00012b1f .word 0x00012b1f bda4: 00012305 .word 0x00012305 0000bda8 : { bda8: b510 push {r4, lr} bdaa: b082 sub sp, #8 if(LV_GC_ROOT(_lv_draw_mask_list[i]).param == NULL) break; bdac: 4b10 ldr r3, [pc, #64] ; (bdf0 ) bdae: 681b ldr r3, [r3, #0] bdb0: b19b cbz r3, bdda bdb2: 4a0f ldr r2, [pc, #60] ; (bdf0 ) for(i = 0; i < _LV_MASK_MAX_NUM; i++) { bdb4: 2301 movs r3, #1 if(LV_GC_ROOT(_lv_draw_mask_list[i]).param == NULL) break; bdb6: 6894 ldr r4, [r2, #8] bdb8: b184 cbz r4, bddc for(i = 0; i < _LV_MASK_MAX_NUM; i++) { bdba: 3301 adds r3, #1 bdbc: b2db uxtb r3, r3 bdbe: 3208 adds r2, #8 bdc0: 2b10 cmp r3, #16 bdc2: d1f8 bne.n bdb6 LV_LOG_WARN("lv_mask_add: no place to add the mask"); bdc4: 4b0b ldr r3, [pc, #44] ; (bdf4 ) bdc6: 9300 str r3, [sp, #0] bdc8: 4b0b ldr r3, [pc, #44] ; (bdf8 ) bdca: 2257 movs r2, #87 ; 0x57 bdcc: 490b ldr r1, [pc, #44] ; (bdfc ) bdce: 2002 movs r0, #2 bdd0: 4c0b ldr r4, [pc, #44] ; (be00 ) bdd2: 47a0 blx r4 return LV_MASK_ID_INV; bdd4: f04f 30ff mov.w r0, #4294967295 bdd8: e007 b.n bdea for(i = 0; i < _LV_MASK_MAX_NUM; i++) { bdda: 2300 movs r3, #0 LV_GC_ROOT(_lv_draw_mask_list[i]).param = param; bddc: 4a04 ldr r2, [pc, #16] ; (bdf0 ) bdde: f842 0033 str.w r0, [r2, r3, lsl #3] LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id = custom_id; bde2: eb02 02c3 add.w r2, r2, r3, lsl #3 bde6: 6051 str r1, [r2, #4] return i; bde8: b218 sxth r0, r3 } bdea: b002 add sp, #8 bdec: bd10 pop {r4, pc} bdee: bf00 nop bdf0: 20006d6c .word 0x20006d6c bdf4: 0002500c .word 0x0002500c bdf8: 00024fb0 .word 0x00024fb0 bdfc: 00024fdc .word 0x00024fdc be00: 00012245 .word 0x00012245 0000be04 : { be04: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} be08: b082 sub sp, #8 while(m->param) { be0a: 4c11 ldr r4, [pc, #68] ; (be50 ) be0c: 6824 ldr r4, [r4, #0] be0e: b1ec cbz r4, be4c be10: 469a mov sl, r3 be12: 4691 mov r9, r2 be14: 4688 mov r8, r1 be16: 4607 mov r7, r0 be18: 4e0d ldr r6, [pc, #52] ; (be50 ) be1a: 2500 movs r5, #0 res = dsc->cb(mask_buf, abs_x, abs_y, len, (void *)m->param); be1c: 9400 str r4, [sp, #0] be1e: 6824 ldr r4, [r4, #0] be20: 4653 mov r3, sl be22: 464a mov r2, r9 be24: 4641 mov r1, r8 be26: 4638 mov r0, r7 be28: 47a0 blx r4 if(res == LV_DRAW_MASK_RES_TRANSP) return LV_DRAW_MASK_RES_TRANSP; be2a: 4604 mov r4, r0 be2c: b150 cbz r0, be44 else if(res == LV_DRAW_MASK_RES_CHANGED) changed = true; be2e: 2802 cmp r0, #2 be30: bf08 it eq be32: 2501 moveq r5, #1 while(m->param) { be34: f856 4f08 ldr.w r4, [r6, #8]! be38: 2c00 cmp r4, #0 be3a: d1ef bne.n be1c return changed ? LV_DRAW_MASK_RES_CHANGED : LV_DRAW_MASK_RES_FULL_COVER; be3c: 2d00 cmp r5, #0 be3e: bf14 ite ne be40: 2402 movne r4, #2 be42: 2401 moveq r4, #1 } be44: 4620 mov r0, r4 be46: b002 add sp, #8 be48: 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; be4c: 2401 movs r4, #1 be4e: e7f9 b.n be44 be50: 20006d6c .word 0x20006d6c 0000be54 : if(id != LV_MASK_ID_INV) { be54: f1b0 3fff cmp.w r0, #4294967295 be58: d00a beq.n be70 p = LV_GC_ROOT(_lv_draw_mask_list[id]).param; be5a: 4b06 ldr r3, [pc, #24] ; (be74 ) be5c: f853 1030 ldr.w r1, [r3, r0, lsl #3] LV_GC_ROOT(_lv_draw_mask_list[id]).param = NULL; be60: 2200 movs r2, #0 be62: f843 2030 str.w r2, [r3, r0, lsl #3] LV_GC_ROOT(_lv_draw_mask_list[id]).custom_id = NULL; be66: eb03 03c0 add.w r3, r3, r0, lsl #3 be6a: 605a str r2, [r3, #4] } be6c: 4608 mov r0, r1 be6e: 4770 bx lr void * p = NULL; be70: 2100 movs r1, #0 return p; be72: e7fb b.n be6c be74: 20006d6c .word 0x20006d6c 0000be78 : { be78: b470 push {r4, r5, r6} be7a: 4b0b ldr r3, [pc, #44] ; (bea8 ) be7c: 1d1a adds r2, r3, #4 be7e: f103 0480 add.w r4, r3, #128 ; 0x80 void * p = NULL; be82: 2600 movs r6, #0 LV_GC_ROOT(_lv_draw_mask_list[i]).param = NULL; be84: 4635 mov r5, r6 be86: e003 b.n be90 be88: 3308 adds r3, #8 be8a: 3208 adds r2, #8 for(i = 0; i < _LV_MASK_MAX_NUM; i++) { be8c: 42a3 cmp r3, r4 be8e: d008 beq.n bea2 if(LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id == custom_id) { be90: 6859 ldr r1, [r3, #4] be92: 4281 cmp r1, r0 be94: d1f8 bne.n be88 p = LV_GC_ROOT(_lv_draw_mask_list[i]).param; be96: f852 6c04 ldr.w r6, [r2, #-4] LV_GC_ROOT(_lv_draw_mask_list[i]).param = NULL; be9a: f842 5c04 str.w r5, [r2, #-4] LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id = NULL; be9e: 605d str r5, [r3, #4] bea0: e7f2 b.n be88 } bea2: 4630 mov r0, r6 bea4: bc70 pop {r4, r5, r6} bea6: 4770 bx lr bea8: 20006d6c .word 0x20006d6c 0000beac : { beac: 2300 movs r3, #0 uint8_t cnt = 0; beae: 4618 mov r0, r3 if(LV_GC_ROOT(_lv_draw_mask_list[i]).param) cnt++; beb0: 4906 ldr r1, [pc, #24] ; (becc ) beb2: e002 b.n beba beb4: 3301 adds r3, #1 for(i = 0; i < _LV_MASK_MAX_NUM; i++) { beb6: 2b10 cmp r3, #16 beb8: d006 beq.n bec8 if(LV_GC_ROOT(_lv_draw_mask_list[i]).param) cnt++; beba: f851 2033 ldr.w r2, [r1, r3, lsl #3] bebe: 2a00 cmp r2, #0 bec0: d0f8 beq.n beb4 bec2: 3001 adds r0, #1 bec4: b2c0 uxtb r0, r0 bec6: e7f5 b.n beb4 } bec8: 4770 bx lr beca: bf00 nop becc: 20006d6c .word 0x20006d6c 0000bed0 : { bed0: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} bed4: 4604 mov r4, r0 bed6: 460f mov r7, r1 bed8: 4615 mov r5, r2 beda: 4698 mov r8, r3 bedc: f9bd 6018 ldrsh.w r6, [sp, #24] _lv_memset_00(param, sizeof(lv_draw_mask_line_param_t)); bee0: 212c movs r1, #44 ; 0x2c bee2: 4b4a ldr r3, [pc, #296] ; (c00c ) bee4: 4798 blx r3 if(p1y > p2y) { bee6: 42b5 cmp r5, r6 bee8: dd05 ble.n bef6 beea: 462b mov r3, r5 p1y = t; beec: 4635 mov r5, r6 p2y = p1y; beee: 461e mov r6, r3 if(p1y > p2y) { bef0: 463b mov r3, r7 p1x = t; bef2: 4647 mov r7, r8 p2x = p1x; bef4: 4698 mov r8, r3 param->cfg.p1.x = p1x; bef6: 8127 strh r7, [r4, #8] param->cfg.p1.y = p1y; bef8: 8165 strh r5, [r4, #10] param->cfg.p2.x = p2x; befa: f8a4 800c strh.w r8, [r4, #12] param->cfg.p2.y = p2y; befe: 81e6 strh r6, [r4, #14] param->cfg.side = side; bf00: 7c23 ldrb r3, [r4, #16] bf02: f89d 201c ldrb.w r2, [sp, #28] bf06: f362 0301 bfi r3, r2, #0, #2 bf0a: 7423 strb r3, [r4, #16] param->origo.x = p1x; bf0c: 8267 strh r7, [r4, #18] param->origo.y = p1y; bf0e: 82a5 strh r5, [r4, #20] param->flat = (LV_MATH_ABS(p2x - p1x) > LV_MATH_ABS(p2y - p1y)) ? 1 : 0; bf10: eba8 0707 sub.w r7, r8, r7 bf14: 1b75 subs r5, r6, r5 bf16: ea87 71e7 eor.w r1, r7, r7, asr #31 bf1a: eba1 71e7 sub.w r1, r1, r7, asr #31 bf1e: ea85 73e5 eor.w r3, r5, r5, asr #31 bf22: eba3 73e5 sub.w r3, r3, r5, asr #31 bf26: 4299 cmp r1, r3 bf28: bfd4 ite le bf2a: 2100 movle r1, #0 bf2c: 2101 movgt r1, #1 bf2e: f894 2028 ldrb.w r2, [r4, #40] ; 0x28 bf32: f361 0200 bfi r2, r1, #0, #1 bf36: f884 2028 strb.w r2, [r4, #40] ; 0x28 param->yx_steep = 0; bf3a: 2100 movs r1, #0 bf3c: 61e1 str r1, [r4, #28] param->xy_steep = 0; bf3e: 61a1 str r1, [r4, #24] param->dsc.cb = (lv_draw_mask_xcb_t)lv_draw_mask_line; bf40: 4b33 ldr r3, [pc, #204] ; (c010 ) bf42: 6023 str r3, [r4, #0] param->dsc.type = LV_DRAW_MASK_TYPE_LINE; bf44: 7121 strb r1, [r4, #4] if(param->flat) { bf46: f012 0f01 tst.w r2, #1 bf4a: d025 beq.n bf98 if(dx) { bf4c: b13f cbz r7, bf5e m = (1 << 20) / dx; /*m is multiplier to normalize y (upscaled by 1024)*/ bf4e: f44f 1380 mov.w r3, #1048576 ; 0x100000 bf52: fb93 f3f7 sdiv r3, r3, r7 param->yx_steep = (m * dy) >> 10; bf56: fb05 f303 mul.w r3, r5, r3 bf5a: 129b asrs r3, r3, #10 bf5c: 61e3 str r3, [r4, #28] if(dy) { bf5e: b13d cbz r5, bf70 m = (1 << 20) / dy; /*m is multiplier to normalize x (upscaled by 1024)*/ bf60: f44f 1680 mov.w r6, #1048576 ; 0x100000 bf64: fb96 f5f5 sdiv r5, r6, r5 param->xy_steep = (m * dx) >> 10; bf68: fb07 f705 mul.w r7, r7, r5 bf6c: 12bf asrs r7, r7, #10 bf6e: 61a7 str r7, [r4, #24] param->steep = param->yx_steep; bf70: 69e3 ldr r3, [r4, #28] bf72: 6223 str r3, [r4, #32] if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) param->inv = 0; bf74: 7c23 ldrb r3, [r4, #16] bf76: f013 0303 ands.w r3, r3, #3 bf7a: d122 bne.n bfc2 bf7c: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 bf80: f36f 0341 bfc r3, #1, #1 bf84: f884 3028 strb.w r3, [r4, #40] ; 0x28 param->spx = param->steep >> 2; bf88: 6a23 ldr r3, [r4, #32] bf8a: 109a asrs r2, r3, #2 if(param->steep < 0) param->spx = -param->spx; bf8c: 2b00 cmp r3, #0 bf8e: bfb8 it lt bf90: 4252 neglt r2, r2 bf92: 6262 str r2, [r4, #36] ; 0x24 bf94: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(dy) { bf98: b13d cbz r5, bfaa m = (1 << 20) / dy; /*m is multiplier to normalize x (upscaled by 1024)*/ bf9a: f44f 1380 mov.w r3, #1048576 ; 0x100000 bf9e: fb93 f3f5 sdiv r3, r3, r5 param->xy_steep = (m * dx) >> 10; bfa2: fb07 f303 mul.w r3, r7, r3 bfa6: 129b asrs r3, r3, #10 bfa8: 61a3 str r3, [r4, #24] if(dx) { bfaa: b13f cbz r7, bfbc m = (1 << 20) / dx; /*m is multiplier to normalize x (upscaled by 1024)*/ bfac: f44f 1880 mov.w r8, #1048576 ; 0x100000 bfb0: fb98 f7f7 sdiv r7, r8, r7 param->yx_steep = (m * dy) >> 10; bfb4: fb05 f507 mul.w r5, r5, r7 bfb8: 12ad asrs r5, r5, #10 bfba: 61e5 str r5, [r4, #28] param->steep = param->xy_steep; bfbc: 69a3 ldr r3, [r4, #24] bfbe: 6223 str r3, [r4, #32] bfc0: e7d8 b.n bf74 else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) param->inv = 1; bfc2: 2b01 cmp r3, #1 bfc4: d00f beq.n bfe6 else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP) { bfc6: 2b02 cmp r3, #2 bfc8: d014 beq.n bff4 else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_BOTTOM) { bfca: 2b03 cmp r3, #3 bfcc: d1dc bne.n bf88 if(param->steep > 0) param->inv = 0; bfce: 6a23 ldr r3, [r4, #32] bfd0: 2b00 cmp r3, #0 bfd2: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 bfd6: bfcc ite gt bfd8: f36f 0341 bfcgt r3, #1, #1 else param->inv = 1; bfdc: f043 0302 orrle.w r3, r3, #2 bfe0: f884 3028 strb.w r3, [r4, #40] ; 0x28 bfe4: e7d0 b.n bf88 else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) param->inv = 1; bfe6: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 bfea: f043 0302 orr.w r3, r3, #2 bfee: f884 3028 strb.w r3, [r4, #40] ; 0x28 bff2: e7c9 b.n bf88 if(param->steep > 0) param->inv = 1; bff4: 6a23 ldr r3, [r4, #32] bff6: 2b00 cmp r3, #0 bff8: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 bffc: bfcc ite gt bffe: f043 0302 orrgt.w r3, r3, #2 else param->inv = 0; c002: f36f 0341 bfcle r3, #1, #1 c006: f884 3028 strb.w r3, [r4, #40] ; 0x28 c00a: e7bd b.n bf88 c00c: 00012b1f .word 0x00012b1f c010: 0000b209 .word 0x0000b209 0000c014 : { c014: b470 push {r4, r5, r6} return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c016: 88cc ldrh r4, [r1, #6] c018: 3401 adds r4, #1 c01a: 884d ldrh r5, [r1, #2] c01c: 1b64 subs r4, r4, r5 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c01e: 888d ldrh r5, [r1, #4] c020: 3501 adds r5, #1 c022: 880e ldrh r6, [r1, #0] c024: 1bad subs r5, r5, r6 int32_t short_side = LV_MATH_MIN(w, h); c026: b224 sxth r4, r4 c028: b22d sxth r5, r5 c02a: 42ac cmp r4, r5 c02c: bfa8 it ge c02e: 462c movge r4, r5 if(radius > short_side >> 1) radius = short_side >> 1; c030: 1064 asrs r4, r4, #1 c032: 42a2 cmp r2, r4 c034: bfc8 it gt c036: b222 sxthgt r2, r4 c038: 3901 subs r1, #1 c03a: f100 0610 add.w r6, r0, #16 uint8_t * d8 = (uint8_t *)dst; c03e: f100 0408 add.w r4, r0, #8 *d8 = *s8; c042: f811 5f01 ldrb.w r5, [r1, #1]! c046: f804 5b01 strb.w r5, [r4], #1 while(len) { c04a: 42b4 cmp r4, r6 c04c: d1f9 bne.n c042 param->cfg.radius = radius; c04e: 8202 strh r2, [r0, #16] param->cfg.outer = inv ? 1 : 0; c050: 7c82 ldrb r2, [r0, #18] c052: f363 0200 bfi r2, r3, #0, #1 c056: 7482 strb r2, [r0, #18] param->dsc.cb = (lv_draw_mask_xcb_t)lv_draw_mask_radius; c058: 4b05 ldr r3, [pc, #20] ; (c070 ) c05a: 6003 str r3, [r0, #0] param->dsc.type = LV_DRAW_MASK_TYPE_RADIUS; c05c: 2302 movs r3, #2 c05e: 7103 strb r3, [r0, #4] param->y_prev = INT32_MIN; c060: f04f 4300 mov.w r3, #2147483648 ; 0x80000000 c064: 6143 str r3, [r0, #20] param->y_prev_x.f = 0; c066: 2300 movs r3, #0 c068: 8343 strh r3, [r0, #26] param->y_prev_x.i = 0; c06a: 8303 strh r3, [r0, #24] } c06c: bc70 pop {r4, r5, r6} c06e: 4770 bx lr c070: 0000b7b5 .word 0x0000b7b5 0000c074 : #endif } LV_ATTRIBUTE_FAST_MEM static void shadow_blur_corner(lv_coord_t size, lv_coord_t sw, uint16_t * sh_ups_buf) { c074: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} c078: b08b sub sp, #44 ; 0x2c c07a: 9006 str r0, [sp, #24] c07c: 4689 mov r9, r1 c07e: 9207 str r2, [sp, #28] int32_t s_left = sw >> 1; c080: ea4f 0b61 mov.w fp, r1, asr #1 c084: f8cd b008 str.w fp, [sp, #8] int32_t s_right = (sw >> 1); if((sw & 1) == 0) s_left--; c088: f011 0f01 tst.w r1, #1 c08c: bf06 itte eq c08e: f10b 33ff addeq.w r3, fp, #4294967295 c092: 9308 streq r3, [sp, #32] int32_t s_left = sw >> 1; c094: f8cd b020 strne.w fp, [sp, #32] /*Horizontal blur*/ uint16_t * sh_ups_blur_buf = _lv_mem_buf_get(size * sizeof(uint16_t)); c098: 9c06 ldr r4, [sp, #24] c09a: 0067 lsls r7, r4, #1 c09c: 4638 mov r0, r7 c09e: 4b69 ldr r3, [pc, #420] ; (c244 ) c0a0: 4798 blx r3 c0a2: 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++) { c0a4: 2c00 cmp r4, #0 c0a6: f340 80be ble.w c226 int32_t v = sh_ups_tmp_buf[size - 1] * sw; c0aa: 1eba subs r2, r7, #2 c0ac: 19c1 adds r1, r0, r7 c0ae: 9103 str r1, [sp, #12] c0b0: 9d07 ldr r5, [sp, #28] c0b2: f04f 0800 mov.w r8, #0 for(x = size - 1; x >= 0; x--) { c0b6: f104 3aff add.w sl, r4, #4294967295 c0ba: 9908 ldr r1, [sp, #32] c0bc: ebaa 0101 sub.w r1, sl, r1 c0c0: 9104 str r1, [sp, #16] c0c2: 4606 mov r6, r0 c0c4: f8cd b024 str.w fp, [sp, #36] ; 0x24 c0c8: 4693 mov fp, r2 int32_t v = sh_ups_tmp_buf[size - 1] * sw; c0ca: f8cd 9004 str.w r9, [sp, #4] c0ce: f835 300b ldrh.w r3, [r5, fp] c0d2: fb09 f303 mul.w r3, r9, r3 for(x = size - 1; x >= 0; x--) { c0d6: f1ba 0f00 cmp.w sl, #0 c0da: db1b blt.n c114 c0dc: 9a02 ldr r2, [sp, #8] c0de: eb02 010a add.w r1, r2, sl c0e2: 9a04 ldr r2, [sp, #16] c0e4: 3a01 subs r2, #1 c0e6: 9803 ldr r0, [sp, #12] c0e8: f04f 0e00 mov.w lr, #0 sh_ups_blur_buf[x] = v; c0ec: 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]; c0f0: 428c cmp r4, r1 c0f2: bfcc ite gt c0f4: f835 c011 ldrhgt.w ip, [r5, r1, lsl #1] c0f8: 46f4 movle ip, lr v -= right_val; c0fa: 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]; c0fe: 2a00 cmp r2, #0 c100: bfb4 ite lt c102: f8b5 c000 ldrhlt.w ip, [r5] else left_val = sh_ups_tmp_buf[x - s_left - 1]; c106: f835 c012 ldrhge.w ip, [r5, r2, lsl #1] v += left_val; c10a: 4463 add r3, ip c10c: 3901 subs r1, #1 c10e: 3a01 subs r2, #1 for(x = size - 1; x >= 0; x--) { c110: 42b0 cmp r0, r6 c112: d1eb bne.n c0ec } _lv_memcpy(sh_ups_tmp_buf, sh_ups_blur_buf, size * sizeof(uint16_t)); c114: 463a mov r2, r7 c116: 4631 mov r1, r6 c118: 4628 mov r0, r5 c11a: 4b4b ldr r3, [pc, #300] ; (c248 ) c11c: 4798 blx r3 sh_ups_tmp_buf += size; c11e: 443d add r5, r7 for(y = 0; y < size; y++) { c120: f108 0801 add.w r8, r8, #1 c124: 45a0 cmp r8, r4 c126: d1d0 bne.n c0ca c128: f8dd b024 ldr.w fp, [sp, #36] ; 0x24 } /*Vertical blur*/ uint32_t i; sh_ups_buf[0] = sh_ups_buf[0] / sw; c12c: 9a07 ldr r2, [sp, #28] c12e: 8813 ldrh r3, [r2, #0] c130: 9901 ldr r1, [sp, #4] c132: fb93 f3f1 sdiv r3, r3, r1 c136: 8013 strh r3, [r2, #0] for(i = 1; i < (uint32_t)size * size; i++) { c138: 9b06 ldr r3, [sp, #24] c13a: fb03 f503 mul.w r5, r3, r3 c13e: 2d01 cmp r5, #1 c140: d911 bls.n c166 c142: 9a07 ldr r2, [sp, #28] c144: 2101 movs r1, #1 c146: 9e01 ldr r6, [sp, #4] c148: 4610 mov r0, r2 if(sh_ups_buf[i] == sh_ups_buf[i - 1]) sh_ups_buf[i] = sh_ups_buf[i - 1]; c14a: f832 3f02 ldrh.w r3, [r2, #2]! c14e: 8800 ldrh r0, [r0, #0] c150: 4298 cmp r0, r3 else sh_ups_buf[i] = sh_ups_buf[i] / sw; c152: bf1c itt ne c154: fb93 f3f6 sdivne r3, r3, r6 c158: 8013 strhne r3, [r2, #0] for(i = 1; i < (uint32_t)size * size; i++) { c15a: 3101 adds r1, #1 c15c: 42a9 cmp r1, r5 c15e: d3f3 bcc.n c148 } for(x = 0; x < size; x++) { c160: 9b06 ldr r3, [sp, #24] c162: 2b00 cmp r3, #0 c164: dd59 ble.n c21a c166: 9e07 ldr r6, [sp, #28] c168: 9602 str r6, [sp, #8] c16a: 9908 ldr r1, [sp, #32] c16c: fb01 7207 mla r2, r1, r7, r7 c170: ea6f 030b mvn.w r3, fp c174: 1a5b subs r3, r3, r1 c176: 9d06 ldr r5, [sp, #24] c178: fb05 f303 mul.w r3, r5, r3 c17c: 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]; c17e: 1e6b subs r3, r5, #1 c180: fb05 f303 mul.w r3, r5, r3 c184: eb06 0343 add.w r3, r6, r3, lsl #1 c188: 9307 str r3, [sp, #28] c18a: f04f 0a00 mov.w sl, #0 c18e: 1e93 subs r3, r2, #2 c190: 9308 str r3, [sp, #32] if(y + s_left + 1 < size) bottom_val = sh_ups_buf[(y + s_left + 1) * size + x]; c192: f101 0901 add.w r9, r1, #1 sh_ups_tmp_buf = &sh_ups_buf[x]; c196: 9b02 ldr r3, [sp, #8] c198: 461e mov r6, r3 c19a: 3302 adds r3, #2 c19c: 461a mov r2, r3 c19e: 9302 str r3, [sp, #8] int32_t v = sh_ups_tmp_buf[0] * sw; c1a0: 8833 ldrh r3, [r6, #0] c1a2: 9901 ldr r1, [sp, #4] c1a4: fb01 f303 mul.w r3, r1, r3 c1a8: 9908 ldr r1, [sp, #32] c1aa: 188d adds r5, r1, r2 c1ac: 9a05 ldr r2, [sp, #20] c1ae: f1a2 0c02 sub.w ip, r2, #2 c1b2: 46e0 mov r8, ip c1b4: 46b6 mov lr, r6 c1b6: 2200 movs r2, #0 c1b8: f8cd c00c str.w ip, [sp, #12] c1bc: 9604 str r6, [sp, #16] c1be: 9e06 ldr r6, [sp, #24] c1c0: f8dd c01c ldr.w ip, [sp, #28] sh_ups_blur_buf[y] = v < 0 ? 0 : (v >> SHADOW_UPSACALE_SHIFT); c1c4: 2b00 cmp r3, #0 c1c6: bfac ite ge c1c8: 1199 asrge r1, r3, #6 c1ca: 2100 movlt r1, #0 c1cc: f828 1f02 strh.w r1, [r8, #2]! c1d0: 4611 mov r1, r2 if(y - s_right <= 0) top_val = sh_ups_tmp_buf[0]; c1d2: eba2 000b sub.w r0, r2, fp c1d6: 2800 cmp r0, #0 c1d8: bfd4 ite le c1da: f8be 0000 ldrhle.w r0, [lr] else top_val = sh_ups_buf[(y - s_right) * size + x]; c1de: f835 0016 ldrhgt.w r0, [r5, r6, lsl #1] v -= top_val; c1e2: 1a1b subs r3, r3, r0 if(y + s_left + 1 < size) bottom_val = sh_ups_buf[(y + s_left + 1) * size + x]; c1e4: 4449 add r1, r9 c1e6: 428c cmp r4, r1 c1e8: bfcc ite gt c1ea: 8829 ldrhgt r1, [r5, #0] else bottom_val = sh_ups_buf[(size - 1) * size + x]; c1ec: f83c 101a ldrhle.w r1, [ip, sl, lsl #1] v += bottom_val; c1f0: 440b add r3, r1 for(y = 0; y < size ; y++, sh_ups_tmp_buf += size) { c1f2: 3201 adds r2, #1 c1f4: 44be add lr, r7 c1f6: 443d add r5, r7 c1f8: 42a2 cmp r2, r4 c1fa: dbe3 blt.n c1c4 c1fc: f8dd c00c ldr.w ip, [sp, #12] c200: 9e04 ldr r6, [sp, #16] c202: 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]; c204: f83c 2f02 ldrh.w r2, [ip, #2]! c208: 8032 strh r2, [r6, #0] for(y = 0; y < size; y++, sh_ups_tmp_buf += size) { c20a: 3301 adds r3, #1 c20c: 443e add r6, r7 c20e: 42a3 cmp r3, r4 c210: dbf8 blt.n c204 for(x = 0; x < size; x++) { c212: f10a 0a01 add.w sl, sl, #1 c216: 45a2 cmp sl, r4 c218: dbbd blt.n c196 } } _lv_mem_buf_release(sh_ups_blur_buf); c21a: 9805 ldr r0, [sp, #20] c21c: 4b0b ldr r3, [pc, #44] ; (c24c ) c21e: 4798 blx r3 } c220: b00b add sp, #44 ; 0x2c c222: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} sh_ups_buf[0] = sh_ups_buf[0] / sw; c226: f8cd 9004 str.w r9, [sp, #4] c22a: 9a07 ldr r2, [sp, #28] c22c: 8813 ldrh r3, [r2, #0] c22e: fb93 f9f9 sdiv r9, r3, r9 c232: f8a2 9000 strh.w r9, [r2] for(i = 1; i < (uint32_t)size * size; i++) { c236: 9b06 ldr r3, [sp, #24] c238: fb03 f503 mul.w r5, r3, r3 c23c: 2d01 cmp r5, #1 c23e: d880 bhi.n c142 c240: e7eb b.n c21a c242: bf00 nop c244: 00012925 .word 0x00012925 c248: 0001263d .word 0x0001263d c24c: 00012559 .word 0x00012559 0000c250 : { c250: b510 push {r4, lr} c252: 4604 mov r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_rect_dsc_t)); c254: 2154 movs r1, #84 ; 0x54 c256: 4b2d ldr r3, [pc, #180] ; (c30c ) c258: 4798 blx r3 dsc->bg_color = LV_COLOR_WHITE; c25a: 4b2d ldr r3, [pc, #180] ; (c310 ) c25c: 881b ldrh r3, [r3, #0] c25e: 8063 strh r3, [r4, #2] dsc->bg_grad_color = LV_COLOR_BLACK; c260: 7923 ldrb r3, [r4, #4] c262: f36f 0304 bfc r3, #0, #5 c266: 7123 strb r3, [r4, #4] c268: 88a3 ldrh r3, [r4, #4] c26a: f36f 134a bfc r3, #5, #6 c26e: 80a3 strh r3, [r4, #4] c270: 0a1b lsrs r3, r3, #8 c272: f36f 03c7 bfc r3, #3, #5 c276: 7163 strb r3, [r4, #5] dsc->border_color = LV_COLOR_BLACK; c278: 7ba3 ldrb r3, [r4, #14] c27a: f36f 0304 bfc r3, #0, #5 c27e: 73a3 strb r3, [r4, #14] c280: 89e3 ldrh r3, [r4, #14] c282: f36f 134a bfc r3, #5, #6 c286: 81e3 strh r3, [r4, #14] c288: 0a1b lsrs r3, r3, #8 c28a: f36f 03c7 bfc r3, #3, #5 c28e: 73e3 strb r3, [r4, #15] dsc->pattern_recolor = LV_COLOR_BLACK; c290: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 c294: f36f 0304 bfc r3, #0, #5 c298: f884 3034 strb.w r3, [r4, #52] ; 0x34 c29c: 8ea3 ldrh r3, [r4, #52] ; 0x34 c29e: f36f 134a bfc r3, #5, #6 c2a2: 86a3 strh r3, [r4, #52] ; 0x34 c2a4: 0a1b lsrs r3, r3, #8 c2a6: f36f 03c7 bfc r3, #3, #5 c2aa: f884 3035 strb.w r3, [r4, #53] ; 0x35 dsc->value_color = LV_COLOR_BLACK; c2ae: f894 3046 ldrb.w r3, [r4, #70] ; 0x46 c2b2: f36f 0304 bfc r3, #0, #5 c2b6: f884 3046 strb.w r3, [r4, #70] ; 0x46 c2ba: f8b4 3046 ldrh.w r3, [r4, #70] ; 0x46 c2be: f36f 134a bfc r3, #5, #6 c2c2: f8a4 3046 strh.w r3, [r4, #70] ; 0x46 c2c6: 0a1b lsrs r3, r3, #8 c2c8: f36f 03c7 bfc r3, #3, #5 c2cc: f884 3047 strb.w r3, [r4, #71] ; 0x47 dsc->shadow_color = LV_COLOR_BLACK; c2d0: 7fa3 ldrb r3, [r4, #30] c2d2: f36f 0304 bfc r3, #0, #5 c2d6: 77a3 strb r3, [r4, #30] c2d8: 8be3 ldrh r3, [r4, #30] c2da: f36f 134a bfc r3, #5, #6 c2de: 83e3 strh r3, [r4, #30] c2e0: 0a1b lsrs r3, r3, #8 c2e2: f36f 03c7 bfc r3, #3, #5 c2e6: 77e3 strb r3, [r4, #31] dsc->bg_grad_color_stop = 0xFF; c2e8: 23ff movs r3, #255 ; 0xff c2ea: 8163 strh r3, [r4, #10] dsc->bg_opa = LV_OPA_COVER; c2ec: 7323 strb r3, [r4, #12] dsc->outline_opa = LV_OPA_COVER; c2ee: 7723 strb r3, [r4, #28] dsc->border_opa = LV_OPA_COVER; c2f0: 7523 strb r3, [r4, #20] dsc->pattern_opa = LV_OPA_COVER; c2f2: f884 3036 strb.w r3, [r4, #54] ; 0x36 dsc->pattern_font = LV_THEME_DEFAULT_FONT_NORMAL; c2f6: 4a07 ldr r2, [pc, #28] ; (c314 ) c2f8: 6322 str r2, [r4, #48] ; 0x30 dsc->value_opa = LV_OPA_COVER; c2fa: f884 3044 strb.w r3, [r4, #68] ; 0x44 dsc->value_font = LV_THEME_DEFAULT_FONT_NORMAL; c2fe: 6422 str r2, [r4, #64] ; 0x40 dsc->shadow_opa = LV_OPA_COVER; c300: f884 3028 strb.w r3, [r4, #40] ; 0x28 dsc->border_side = LV_BORDER_SIDE_FULL; c304: 230f movs r3, #15 c306: 8263 strh r3, [r4, #18] c308: bd10 pop {r4, pc} c30a: bf00 nop c30c: 00012b1f .word 0x00012b1f c310: 00025064 .word 0x00025064 c314: 20000010 .word 0x20000010 0000c318 : { c318: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} c31c: 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); c31e: 88c4 ldrh r4, [r0, #6] c320: 8845 ldrh r5, [r0, #2] c322: 1c63 adds r3, r4, #1 c324: 1b5b subs r3, r3, r5 if(lv_area_get_height(coords) < 1 || lv_area_get_width(coords) < 1) return; c326: b21b sxth r3, r3 c328: 2b00 cmp r3, #0 c32a: f341 800f ble.w d34c return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c32e: 8886 ldrh r6, [r0, #4] c330: f8b0 8000 ldrh.w r8, [r0] c334: 1c73 adds r3, r6, #1 c336: eba3 0308 sub.w r3, r3, r8 c33a: b21b sxth r3, r3 c33c: 2b00 cmp r3, #0 c33e: f341 8005 ble.w d34c c342: 4692 mov sl, r2 c344: 9104 str r1, [sp, #16] c346: 9006 str r0, [sp, #24] if(dsc->shadow_width == 0) return; c348: f9b2 7020 ldrsh.w r7, [r2, #32] c34c: 2f00 cmp r7, #0 c34e: f000 8719 beq.w d184 if(dsc->shadow_opa <= LV_OPA_MIN) return; c352: f892 3028 ldrb.w r3, [r2, #40] ; 0x28 c356: 9309 str r3, [sp, #36] ; 0x24 c358: 2b05 cmp r3, #5 c35a: f240 8713 bls.w d184 if(dsc->shadow_width == 1 && dsc->shadow_ofs_x == 0 && c35e: 6a13 ldr r3, [r2, #32] c360: 2b01 cmp r3, #1 c362: f000 80f6 beq.w c552 sh_rect_area.x1 = coords->x1 + dsc->shadow_ofs_x - dsc->shadow_spread; c366: f8ba 2022 ldrh.w r2, [sl, #34] ; 0x22 c36a: f8ba 3026 ldrh.w r3, [sl, #38] ; 0x26 c36e: 1ad1 subs r1, r2, r3 c370: 4488 add r8, r1 c372: fa1f f888 uxth.w r8, r8 c376: f8ad 8050 strh.w r8, [sp, #80] ; 0x50 sh_rect_area.x2 = coords->x2 + dsc->shadow_ofs_x + dsc->shadow_spread; c37a: 441a add r2, r3 c37c: 4416 add r6, r2 c37e: b2b6 uxth r6, r6 c380: f8ad 6054 strh.w r6, [sp, #84] ; 0x54 sh_rect_area.y1 = coords->y1 + dsc->shadow_ofs_y - dsc->shadow_spread; c384: f8ba 2024 ldrh.w r2, [sl, #36] ; 0x24 c388: 1ad1 subs r1, r2, r3 c38a: 440d add r5, r1 c38c: b2ad uxth r5, r5 c38e: f8ad 5052 strh.w r5, [sp, #82] ; 0x52 sh_rect_area.y2 = coords->y2 + dsc->shadow_ofs_y + dsc->shadow_spread; c392: 4413 add r3, r2 c394: 441c add r4, r3 c396: b2a4 uxth r4, r4 c398: f8ad 4056 strh.w r4, [sp, #86] ; 0x56 sh_area.x1 = sh_rect_area.x1 - sw / 2 - 1; c39c: eb07 73d7 add.w r3, r7, r7, lsr #31 c3a0: ea6f 0263 mvn.w r2, r3, asr #1 c3a4: b292 uxth r2, r2 c3a6: eb08 0102 add.w r1, r8, r2 c3aa: f8ad 1058 strh.w r1, [sp, #88] ; 0x58 sh_area.x2 = sh_rect_area.x2 + sw / 2 + 1; c3ae: 105b asrs r3, r3, #1 c3b0: 3301 adds r3, #1 c3b2: b29b uxth r3, r3 c3b4: 18f1 adds r1, r6, r3 c3b6: f8ad 105c strh.w r1, [sp, #92] ; 0x5c sh_area.y1 = sh_rect_area.y1 - sw / 2 - 1; c3ba: 442a add r2, r5 c3bc: f8ad 205a strh.w r2, [sp, #90] ; 0x5a sh_area.y2 = sh_rect_area.y2 + sw / 2 + 1; c3c0: 4423 add r3, r4 c3c2: f8ad 305e strh.w r3, [sp, #94] ; 0x5e if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; c3c6: 9b09 ldr r3, [sp, #36] ; 0x24 c3c8: 2bfb cmp r3, #251 ; 0xfb c3ca: bf28 it cs c3cc: 23ff movcs r3, #255 ; 0xff c3ce: 9309 str r3, [sp, #36] ; 0x24 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); c3d0: 4bbe ldr r3, [pc, #760] ; (c6cc ) c3d2: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); c3d4: 4bbe ldr r3, [pc, #760] ; (c6d0 ) c3d6: 4798 blx r3 c3d8: 4681 mov r9, r0 is_common = _lv_area_intersect(&draw_area, &sh_area, clip); c3da: 9a04 ldr r2, [sp, #16] c3dc: a916 add r1, sp, #88 ; 0x58 c3de: a818 add r0, sp, #96 ; 0x60 c3e0: 4bbc ldr r3, [pc, #752] ; (c6d4 ) c3e2: 4798 blx r3 if(is_common == false) return; c3e4: 2800 cmp r0, #0 c3e6: f000 86cd beq.w d184 draw_area.x1 -= disp_area->x1; c3ea: f8b9 1010 ldrh.w r1, [r9, #16] c3ee: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 c3f2: 1a5b subs r3, r3, r1 c3f4: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 draw_area.y1 -= disp_area->y1; c3f8: f8b9 2012 ldrh.w r2, [r9, #18] c3fc: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 c400: 1a9b subs r3, r3, r2 c402: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 draw_area.x2 -= disp_area->x1; c406: f8bd 3064 ldrh.w r3, [sp, #100] ; 0x64 c40a: 1a5b subs r3, r3, r1 c40c: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 draw_area.y2 -= disp_area->y1; c410: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 c414: 1a9b subs r3, r3, r2 c416: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 c41a: 9a06 ldr r2, [sp, #24] c41c: 1e53 subs r3, r2, #1 c41e: 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; c420: aa1a add r2, sp, #104 ; 0x68 const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; c422: f813 1f01 ldrb.w r1, [r3, #1]! c426: f802 1b01 strb.w r1, [r2], #1 while(len) { c42a: 4298 cmp r0, r3 c42c: d1f9 bne.n c422 bg_coords.x1 += 1; c42e: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 c432: 3301 adds r3, #1 c434: fa1f fe83 uxth.w lr, r3 c438: f8ad e068 strh.w lr, [sp, #104] ; 0x68 bg_coords.y1 += 1; c43c: f8bd 106a ldrh.w r1, [sp, #106] ; 0x6a c440: 3101 adds r1, #1 c442: b288 uxth r0, r1 c444: f8ad 006a strh.w r0, [sp, #106] ; 0x6a bg_coords.x2 -= 1; c448: f8bd 306c ldrh.w r3, [sp, #108] ; 0x6c c44c: 1e5a subs r2, r3, #1 c44e: f8ad 206c strh.w r2, [sp, #108] ; 0x6c bg_coords.y2 -= 1; c452: f8bd 106e ldrh.w r1, [sp, #110] ; 0x6e c456: 1e4a subs r2, r1, #1 c458: f8ad 206e strh.w r2, [sp, #110] ; 0x6e int32_t r_bg = dsc->radius; c45c: f9ba 2000 ldrsh.w r2, [sl] c460: eba3 030e sub.w r3, r3, lr c464: b21b sxth r3, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c466: 1a09 subs r1, r1, r0 c468: b209 sxth r1, r1 int32_t short_side = LV_MATH_MIN(lv_area_get_width(&bg_coords), lv_area_get_height(&bg_coords)); c46a: 428b cmp r3, r1 c46c: bfa8 it ge c46e: 460b movge r3, r1 if(r_bg > short_side >> 1) r_bg = short_side >> 1; c470: 105b asrs r3, r3, #1 c472: 4293 cmp r3, r2 c474: bfa8 it ge c476: 4613 movge r3, r2 c478: 930e str r3, [sp, #56] ; 0x38 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c47a: 3601 adds r6, #1 c47c: eba6 0608 sub.w r6, r6, r8 c480: b2b6 uxth r6, r6 c482: b233 sxth r3, r6 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c484: 3401 adds r4, #1 c486: 1b64 subs r4, r4, r5 c488: b2a4 uxth r4, r4 c48a: b225 sxth r5, r4 short_side = LV_MATH_MIN(lv_area_get_width(&sh_rect_area), lv_area_get_height(&sh_rect_area)); c48c: 429d cmp r5, r3 c48e: bfa8 it ge c490: 461d movge r5, r3 if(r_sh > short_side >> 1) r_sh = short_side >> 1; c492: 106d asrs r5, r5, #1 c494: 4295 cmp r5, r2 c496: bfa8 it ge c498: 4615 movge r5, r2 int32_t corner_size = sw + r_sh; c49a: eb07 0905 add.w r9, r7, r5 sh_buf = _lv_mem_buf_get(corner_size * corner_size * sizeof(uint16_t)); c49e: fb09 f009 mul.w r0, r9, r9 c4a2: 0040 lsls r0, r0, #1 c4a4: 4b8c ldr r3, [pc, #560] ; (c6d8 ) c4a6: 4798 blx r3 c4a8: 900a str r0, [sp, #40] ; 0x28 shadow_draw_corner_buf(&sh_rect_area, (uint16_t *)sh_buf, dsc->shadow_width, r_sh); c4aa: f9ba b020 ldrsh.w fp, [sl, #32] c4ae: b22a sxth r2, r5 int32_t size = sw_ori + r; c4b0: eb02 070b add.w r7, r2, fp c4b4: f10d 014f add.w r1, sp, #79 ; 0x4f uint8_t * d8 = (uint8_t *)dst; c4b8: ab22 add r3, sp, #136 ; 0x88 while(len) { c4ba: f10d 0e90 add.w lr, sp, #144 ; 0x90 *d8 = *s8; c4be: f811 0f01 ldrb.w r0, [r1, #1]! c4c2: f803 0b01 strb.w r0, [r3], #1 while(len) { c4c6: 4573 cmp r3, lr c4c8: d1f9 bne.n c4be sh_area.x2 = sw / 2 + r - 1 - ((sw & 1) ? 0 : 1); c4ca: eb0b 71db add.w r1, fp, fp, lsr #31 c4ce: f3c1 014f ubfx r1, r1, #1, #16 c4d2: 1e4b subs r3, r1, #1 c4d4: f01b 0001 ands.w r0, fp, #1 c4d8: 9010 str r0, [sp, #64] ; 0x40 c4da: bf0c ite eq c4dc: 2001 moveq r0, #1 c4de: 2000 movne r0, #0 c4e0: 1a1b subs r3, r3, r0 c4e2: 442b add r3, r5 c4e4: b29b uxth r3, r3 c4e6: f8ad 308c strh.w r3, [sp, #140] ; 0x8c sh_area.y1 = sw / 2 + 1; c4ea: 3101 adds r1, #1 c4ec: b289 uxth r1, r1 c4ee: f8ad 108a strh.w r1, [sp, #138] ; 0x8a sh_area.x1 = sh_area.x2 - lv_area_get_width(coords); c4f2: 1b9b subs r3, r3, r6 c4f4: f8ad 3088 strh.w r3, [sp, #136] ; 0x88 sh_area.y2 = sh_area.y1 + lv_area_get_height(coords); c4f8: 4421 add r1, r4 c4fa: f8ad 108e strh.w r1, [sp, #142] ; 0x8e lv_draw_mask_radius_init(&mask_param, &sh_area, r, false); c4fe: 2300 movs r3, #0 c500: a922 add r1, sp, #136 ; 0x88 c502: a829 add r0, sp, #164 ; 0xa4 c504: 4c75 ldr r4, [pc, #468] ; (c6dc ) c506: 47a0 blx r4 if(sw_ori == 1) sw = 1; c508: f1bb 0f01 cmp.w fp, #1 c50c: f002 81d8 beq.w e8c0 c510: ea4f 036b mov.w r3, fp, asr #1 c514: 930b str r3, [sp, #44] ; 0x2c lv_opa_t * mask_line = _lv_mem_buf_get(size); c516: 9707 str r7, [sp, #28] c518: 4638 mov r0, r7 c51a: 4b6f ldr r3, [pc, #444] ; (c6d8 ) c51c: 4798 blx r3 c51e: 900c str r0, [sp, #48] ; 0x30 for(y = 0; y < size; y++) { c520: 2f00 cmp r7, #0 c522: dd5c ble.n c5de _lv_memset_00(sh_ups_tmp_buf, size * sizeof(sh_ups_tmp_buf[0])); c524: 9b07 ldr r3, [sp, #28] c526: ea4f 0b43 mov.w fp, r3, lsl #1 c52a: f107 4300 add.w r3, r7, #2147483648 ; 0x80000000 c52e: 3b01 subs r3, #1 c530: 005b lsls r3, r3, #1 c532: 9c0a ldr r4, [sp, #40] ; 0x28 c534: 2500 movs r5, #0 _lv_memset_ff(mask_line, size); c536: f8df 81b8 ldr.w r8, [pc, #440] ; c6f0 lv_draw_mask_res_t mask_res = mask_param.dsc.cb(mask_line, 0, y, size, &mask_param); c53a: b23a sxth r2, r7 c53c: 9208 str r2, [sp, #32] _lv_memset_00(sh_ups_tmp_buf, size * sizeof(sh_ups_tmp_buf[0])); c53e: f8cd 9034 str.w r9, [sp, #52] ; 0x34 c542: 9705 str r7, [sp, #20] c544: 9e0c ldr r6, [sp, #48] ; 0x30 c546: 4699 mov r9, r3 c548: f8cd a03c str.w sl, [sp, #60] ; 0x3c c54c: f8dd a02c ldr.w sl, [sp, #44] ; 0x2c c550: e014 b.n c57c if(dsc->shadow_width == 1 && dsc->shadow_ofs_x == 0 && c552: f9b2 3024 ldrsh.w r3, [r2, #36] ; 0x24 c556: 2b00 cmp r3, #0 c558: f47f af05 bne.w c366 dsc->shadow_ofs_y == 0 && dsc->shadow_spread <= 0) { c55c: f9b2 3026 ldrsh.w r3, [r2, #38] ; 0x26 c560: 2b00 cmp r3, #0 c562: f73f af00 bgt.w c366 c566: f000 be0d b.w d184 _lv_memset_00(sh_ups_tmp_buf, size * sizeof(sh_ups_tmp_buf[0])); c56a: 4659 mov r1, fp c56c: 4620 mov r0, r4 c56e: 4b5c ldr r3, [pc, #368] ; (c6e0 ) c570: 4798 blx r3 sh_ups_tmp_buf += size; c572: 445c add r4, fp for(y = 0; y < size; y++) { c574: 3501 adds r5, #1 c576: 9b05 ldr r3, [sp, #20] c578: 42ab cmp r3, r5 c57a: dd2b ble.n c5d4 _lv_memset_ff(mask_line, size); c57c: 9907 ldr r1, [sp, #28] c57e: 4630 mov r0, r6 c580: 47c0 blx r8 lv_draw_mask_res_t mask_res = mask_param.dsc.cb(mask_line, 0, y, size, &mask_param); c582: ab29 add r3, sp, #164 ; 0xa4 c584: 9300 str r3, [sp, #0] c586: 9b08 ldr r3, [sp, #32] c588: b22a sxth r2, r5 c58a: 2100 movs r1, #0 c58c: 4630 mov r0, r6 c58e: 9f29 ldr r7, [sp, #164] ; 0xa4 c590: 47b8 blx r7 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { c592: 2800 cmp r0, #0 c594: d0e9 beq.n c56a sh_ups_tmp_buf[0] = (mask_line[0] << SHADOW_UPSACALE_SHIFT) / sw; c596: 46d6 mov lr, sl c598: 7833 ldrb r3, [r6, #0] c59a: 019b lsls r3, r3, #6 c59c: fb93 f3fa sdiv r3, r3, sl c5a0: 8023 strh r3, [r4, #0] for(i = 1; i < size; i++) { c5a2: 9b05 ldr r3, [sp, #20] c5a4: 2b01 cmp r3, #1 c5a6: dde4 ble.n c572 c5a8: 4631 mov r1, r6 c5aa: 4622 mov r2, r4 c5ac: eb04 0009 add.w r0, r4, r9 c5b0: 461f mov r7, r3 c5b2: 468c mov ip, r1 if(mask_line[i] == mask_line[i - 1]) sh_ups_tmp_buf[i] = sh_ups_tmp_buf[i - 1]; c5b4: f811 3f01 ldrb.w r3, [r1, #1]! c5b8: f89c c000 ldrb.w ip, [ip] c5bc: 459c cmp ip, r3 c5be: bf0e itee eq c5c0: 8813 ldrheq r3, [r2, #0] else sh_ups_tmp_buf[i] = (mask_line[i] << SHADOW_UPSACALE_SHIFT) / sw; c5c2: 019b lslne r3, r3, #6 c5c4: fb93 f3fe sdivne r3, r3, lr c5c8: 8053 strh r3, [r2, #2] c5ca: 3202 adds r2, #2 for(i = 1; i < size; i++) { c5cc: 4290 cmp r0, r2 c5ce: d1f0 bne.n c5b2 c5d0: 9705 str r7, [sp, #20] c5d2: e7ce b.n c572 c5d4: f8dd 9034 ldr.w r9, [sp, #52] ; 0x34 c5d8: 461f mov r7, r3 c5da: f8dd a03c ldr.w sl, [sp, #60] ; 0x3c _lv_mem_buf_release(mask_line); c5de: 980c ldr r0, [sp, #48] ; 0x30 c5e0: 4b40 ldr r3, [pc, #256] ; (c6e4 ) c5e2: 4798 blx r3 if(sw == 1) { c5e4: 9b0b ldr r3, [sp, #44] ; 0x2c c5e6: 2b01 cmp r3, #1 c5e8: f002 814d beq.w e886 shadow_blur_corner(size, sw, sh_buf); c5ec: b23c sxth r4, r7 c5ee: 9e0a ldr r6, [sp, #40] ; 0x28 c5f0: 4632 mov r2, r6 c5f2: 9d0b ldr r5, [sp, #44] ; 0x2c c5f4: 4629 mov r1, r5 c5f6: 4620 mov r0, r4 c5f8: 4b3b ldr r3, [pc, #236] ; (c6e8 ) c5fa: 4798 blx r3 sw += sw_ori & 1; c5fc: 9a10 ldr r2, [sp, #64] ; 0x40 c5fe: 442a add r2, r5 c600: b211 sxth r1, r2 if(sw > 1) { c602: 2901 cmp r1, #1 c604: dd22 ble.n c64c sh_buf[0] = (sh_buf[0] << SHADOW_UPSACALE_SHIFT) / sw; c606: 460d mov r5, r1 c608: 8833 ldrh r3, [r6, #0] c60a: 019b lsls r3, r3, #6 c60c: fb93 f3f1 sdiv r3, r3, r1 c610: 4632 mov r2, r6 c612: 8033 strh r3, [r6, #0] for(i = 1; i < (uint32_t) size * size; i++) { c614: 9807 ldr r0, [sp, #28] c616: fb00 f000 mul.w r0, r0, r0 c61a: 2801 cmp r0, #1 c61c: d912 bls.n c644 c61e: f100 4000 add.w r0, r0, #2147483648 ; 0x80000000 c622: 3801 subs r0, #1 c624: eb06 0040 add.w r0, r6, r0, lsl #1 c628: e001 b.n c62e c62a: 4282 cmp r2, r0 c62c: d00a beq.n c644 c62e: 4616 mov r6, r2 if(sh_buf[i] == sh_buf[i - 1]) sh_buf[i] = sh_buf[i - 1]; c630: f832 3f02 ldrh.w r3, [r2, #2]! c634: 8836 ldrh r6, [r6, #0] c636: 429e cmp r6, r3 c638: d0f7 beq.n c62a else sh_buf[i] = (sh_buf[i] << SHADOW_UPSACALE_SHIFT) / sw; c63a: 019b lsls r3, r3, #6 c63c: fb93 f3f5 sdiv r3, r3, r5 c640: 8013 strh r3, [r2, #0] c642: e7f2 b.n c62a shadow_blur_corner(size, sw, sh_buf); c644: 9a0a ldr r2, [sp, #40] ; 0x28 c646: 4620 mov r0, r4 c648: 4b27 ldr r3, [pc, #156] ; (c6e8 ) c64a: 4798 blx r3 for(x = 0; x < size * size; x++) { c64c: fb07 f707 mul.w r7, r7, r7 c650: b157 cbz r7, c668 c652: 990a ldr r1, [sp, #40] ; 0x28 c654: 460b mov r3, r1 c656: 1e4a subs r2, r1, #1 c658: eb01 0047 add.w r0, r1, r7, lsl #1 res_buf[x] = sh_buf[x]; c65c: f833 1b02 ldrh.w r1, [r3], #2 c660: f802 1f01 strb.w r1, [r2, #1]! for(x = 0; x < size * size; x++) { c664: 4283 cmp r3, r0 c666: d1f9 bne.n c65c lv_coord_t h_half = sh_area.y1 + lv_area_get_height(&sh_area) / 2; c668: f8bd 205a ldrh.w r2, [sp, #90] ; 0x5a c66c: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e c670: 3301 adds r3, #1 c672: 1a9b subs r3, r3, r2 c674: b21b sxth r3, r3 c676: eb03 73d3 add.w r3, r3, r3, lsr #31 c67a: eb02 0363 add.w r3, r2, r3, asr #1 c67e: b29b uxth r3, r3 c680: 930f str r3, [sp, #60] ; 0x3c c682: b21b sxth r3, r3 c684: 930c str r3, [sp, #48] ; 0x30 lv_coord_t w_half = sh_area.x1 + lv_area_get_width(&sh_area) / 2; c686: f8bd 2058 ldrh.w r2, [sp, #88] ; 0x58 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c68a: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c c68e: 3301 adds r3, #1 c690: 1a9b subs r3, r3, r2 c692: b21b sxth r3, r3 c694: eb03 73d3 add.w r3, r3, r3, lsr #31 c698: eb02 0363 add.w r3, r2, r3, asr #1 c69c: b29b uxth r3, r3 c69e: 9310 str r3, [sp, #64] ; 0x40 c6a0: b21b sxth r3, r3 c6a2: 930d str r3, [sp, #52] ; 0x34 if(lv_draw_mask_get_cnt() > 0) simple_mode = false; c6a4: 4b11 ldr r3, [pc, #68] ; (c6ec ) c6a6: 4798 blx r3 c6a8: bb20 cbnz r0, c6f4 else if(dsc->shadow_ofs_x != 0 || dsc->shadow_ofs_y != 0) simple_mode = false; c6aa: f9ba 3022 ldrsh.w r3, [sl, #34] ; 0x22 c6ae: 2b00 cmp r3, #0 c6b0: f040 81bc bne.w ca2c c6b4: f9ba 3024 ldrsh.w r3, [sl, #36] ; 0x24 c6b8: 2b00 cmp r3, #0 c6ba: f040 81ba bne.w ca32 else if(dsc->shadow_spread != 0) simple_mode = false; c6be: f9ba 3026 ldrsh.w r3, [sl, #38] ; 0x26 c6c2: fab3 f383 clz r3, r3 c6c6: 095b lsrs r3, r3, #5 c6c8: 9307 str r3, [sp, #28] c6ca: e015 b.n c6f8 c6cc: 00005f51 .word 0x00005f51 c6d0: 00010fc5 .word 0x00010fc5 c6d4: 00011501 .word 0x00011501 c6d8: 00012925 .word 0x00012925 c6dc: 0000c015 .word 0x0000c015 c6e0: 00012b1f .word 0x00012b1f c6e4: 00012559 .word 0x00012559 c6e8: 0000c075 .word 0x0000c075 c6ec: 0000bead .word 0x0000bead c6f0: 00012bd5 .word 0x00012bd5 if(lv_draw_mask_get_cnt() > 0) simple_mode = false; c6f4: 2300 movs r3, #0 c6f6: 9307 str r3, [sp, #28] c6f8: f8bd 005c ldrh.w r0, [sp, #92] ; 0x5c c6fc: 3001 adds r0, #1 c6fe: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 c702: 1ac0 subs r0, r0, r3 lv_opa_t * mask_buf = _lv_mem_buf_get(lv_area_get_width(&sh_area)); c704: b200 sxth r0, r0 c706: 4bc2 ldr r3, [pc, #776] ; (ca10 ) c708: 4798 blx r3 c70a: 9005 str r0, [sp, #20] lv_draw_mask_radius_init(&mask_rout_param, &bg_coords, r_bg, true); c70c: 2301 movs r3, #1 c70e: 9a0e ldr r2, [sp, #56] ; 0x38 c710: a91a add r1, sp, #104 ; 0x68 c712: a829 add r0, sp, #164 ; 0xa4 c714: 4cbf ldr r4, [pc, #764] ; (ca14 ) c716: 47a0 blx r4 int16_t mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); c718: 2100 movs r1, #0 c71a: a829 add r0, sp, #164 ; 0xa4 c71c: 4bbe ldr r3, [pc, #760] ; (ca18 ) c71e: 4798 blx r3 c720: 900e str r0, [sp, #56] ; 0x38 a.x2 = sh_area.x2; c722: f9bd 305c ldrsh.w r3, [sp, #92] ; 0x5c c726: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 a.x1 = a.x2 - corner_size + 1; c72a: fa1f fb89 uxth.w fp, r9 c72e: 3301 adds r3, #1 c730: eba3 030b sub.w r3, r3, fp c734: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 a.y1 = sh_area.y1; c738: f9bd 305a ldrsh.w r3, [sp, #90] ; 0x5a c73c: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 a.y2 = a.y1 + corner_size - 1; c740: 3b01 subs r3, #1 c742: 445b add r3, fp c744: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 bool has_com = _lv_area_intersect(&ca, &a, clip); c748: 9a04 ldr r2, [sp, #16] c74a: a91c add r1, sp, #112 ; 0x70 c74c: a81e add r0, sp, #120 ; 0x78 c74e: 4bb3 ldr r3, [pc, #716] ; (ca1c ) c750: 4798 blx r3 if(has_com) { c752: 2800 cmp r0, #0 c754: d072 beq.n c83c if(ca.y2 > h_half) ca.y2 = h_half; c756: f9bd 307e ldrsh.w r3, [sp, #126] ; 0x7e c75a: 990c ldr r1, [sp, #48] ; 0x30 c75c: 428b cmp r3, r1 c75e: bfc4 itt gt c760: 460b movgt r3, r1 c762: f8ad 307e strhgt.w r3, [sp, #126] ; 0x7e if(ca.x1 <= w_half) ca.x1 = w_half + 1; c766: f9bd 3078 ldrsh.w r3, [sp, #120] ; 0x78 c76a: 9a0d ldr r2, [sp, #52] ; 0x34 c76c: 4293 cmp r3, r2 c76e: dc03 bgt.n c778 c770: 9b10 ldr r3, [sp, #64] ; 0x40 c772: 3301 adds r3, #1 c774: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 c778: f9bd 2078 ldrsh.w r2, [sp, #120] ; 0x78 c77c: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c c780: 3301 adds r3, #1 c782: 1a9b subs r3, r3, r2 c784: b21b sxth r3, r3 c786: 9308 str r3, [sp, #32] if(w > 0) { c788: 2b00 cmp r3, #0 c78a: dd57 ble.n c83c return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c78c: f9bd 707e ldrsh.w r7, [sp, #126] ; 0x7e c790: f9bd 407a ldrsh.w r4, [sp, #122] ; 0x7a sh_buf_tmp += corner_size * (ca.y1 - a.y1); c794: f9bd 5072 ldrsh.w r5, [sp, #114] ; 0x72 c798: 1b65 subs r5, r4, r5 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); c79a: f9bd 3070 ldrsh.w r3, [sp, #112] ; 0x70 c79e: 1ad2 subs r2, r2, r3 sh_buf_tmp += corner_size * (ca.y1 - a.y1); c7a0: fb09 2505 mla r5, r9, r5, r2 c7a4: 9b0a ldr r3, [sp, #40] ; 0x28 c7a6: 441d add r5, r3 c7a8: f10d 0277 add.w r2, sp, #119 ; 0x77 uint8_t * d8 = (uint8_t *)dst; c7ac: ab22 add r3, sp, #136 ; 0x88 while(len) { c7ae: a824 add r0, sp, #144 ; 0x90 *d8 = *s8; c7b0: f812 1f01 ldrb.w r1, [r2, #1]! c7b4: f803 1b01 strb.w r1, [r3], #1 while(len) { c7b8: 4283 cmp r3, r0 c7ba: d1f9 bne.n c7b0 fa.y2 = fa.y1; c7bc: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a c7c0: f8ad 308e strh.w r3, [sp, #142] ; 0x8e c7c4: 3701 adds r7, #1 c7c6: 1b3f subs r7, r7, r4 for(y = 0; y < h; y++) { c7c8: b23f sxth r7, r7 c7ca: 2f00 cmp r7, #0 c7cc: dd36 ble.n c83c c7ce: 2600 movs r6, #0 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, c7d0: f8df 8254 ldr.w r8, [pc, #596] ; ca28 c7d4: f8cd b044 str.w fp, [sp, #68] ; 0x44 c7d8: 46bb mov fp, r7 c7da: 9b09 ldr r3, [sp, #36] ; 0x24 c7dc: 930b str r3, [sp, #44] ; 0x2c _lv_memcpy(mask_buf, sh_buf_tmp, w); c7de: 9a08 ldr r2, [sp, #32] c7e0: 4629 mov r1, r5 c7e2: 9f05 ldr r7, [sp, #20] c7e4: 4638 mov r0, r7 c7e6: 4c8e ldr r4, [pc, #568] ; (ca20 ) c7e8: 47a0 blx r4 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); c7ea: ac30 add r4, sp, #192 ; 0xc0 c7ec: 9b08 ldr r3, [sp, #32] c7ee: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a c7f2: f934 1d38 ldrsh.w r1, [r4, #-56]! c7f6: 9705 str r7, [sp, #20] c7f8: 4638 mov r0, r7 c7fa: 4f8a ldr r7, [pc, #552] ; (ca24 ) c7fc: 47b8 blx r7 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; c7fe: 2801 cmp r0, #1 c800: bf08 it eq c802: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, c804: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 c808: 9302 str r3, [sp, #8] c80a: 9a0b ldr r2, [sp, #44] ; 0x2c c80c: 9201 str r2, [sp, #4] c80e: 9000 str r0, [sp, #0] c810: 9b05 ldr r3, [sp, #20] c812: f8ba 201e ldrh.w r2, [sl, #30] c816: 4621 mov r1, r4 c818: 9804 ldr r0, [sp, #16] c81a: 47c0 blx r8 fa.y1++; c81c: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a c820: 3301 adds r3, #1 c822: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fa.y2++; c826: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e c82a: 3301 adds r3, #1 c82c: f8ad 308e strh.w r3, [sp, #142] ; 0x8e c830: 444d add r5, r9 for(y = 0; y < h; y++) { c832: 3601 adds r6, #1 c834: 455e cmp r6, fp c836: d1d2 bne.n c7de c838: f8dd b044 ldr.w fp, [sp, #68] ; 0x44 a.x2 = sh_area.x2; c83c: f9bd 305c ldrsh.w r3, [sp, #92] ; 0x5c c840: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 a.x1 = a.x2 - corner_size + 1; c844: 3301 adds r3, #1 c846: eba3 030b sub.w r3, r3, fp c84a: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 a.y1 = sh_area.y2 - corner_size + 1; c84e: f9bd 205e ldrsh.w r2, [sp, #94] ; 0x5e c852: 1c53 adds r3, r2, #1 c854: eba3 030b sub.w r3, r3, fp c858: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 a.y2 = sh_area.y2; c85c: f8ad 2076 strh.w r2, [sp, #118] ; 0x76 has_com = _lv_area_intersect(&ca, &a, clip); c860: 9a04 ldr r2, [sp, #16] c862: a91c add r1, sp, #112 ; 0x70 c864: a81e add r0, sp, #120 ; 0x78 c866: 4b6d ldr r3, [pc, #436] ; (ca1c ) c868: 4798 blx r3 if(has_com) { c86a: 2800 cmp r0, #0 c86c: d073 beq.n c956 if(ca.y1 <= h_half) ca.y1 = h_half + 1; c86e: f9bd 307a ldrsh.w r3, [sp, #122] ; 0x7a c872: 9a0c ldr r2, [sp, #48] ; 0x30 c874: 4293 cmp r3, r2 c876: dc03 bgt.n c880 c878: 9b0f ldr r3, [sp, #60] ; 0x3c c87a: 3301 adds r3, #1 c87c: f8ad 307a strh.w r3, [sp, #122] ; 0x7a if(ca.x1 <= w_half) ca.x1 = w_half + 1; c880: f9bd 3078 ldrsh.w r3, [sp, #120] ; 0x78 c884: 9a0d ldr r2, [sp, #52] ; 0x34 c886: 4293 cmp r3, r2 c888: dc03 bgt.n c892 c88a: 9b10 ldr r3, [sp, #64] ; 0x40 c88c: 3301 adds r3, #1 c88e: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c892: f9bd 2078 ldrsh.w r2, [sp, #120] ; 0x78 c896: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c c89a: 3301 adds r3, #1 c89c: 1a9b subs r3, r3, r2 c89e: b21b sxth r3, r3 c8a0: 9308 str r3, [sp, #32] if(w > 0) { c8a2: 2b00 cmp r3, #0 c8a4: dd57 ble.n c956 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c8a6: f9bd 407e ldrsh.w r4, [sp, #126] ; 0x7e c8aa: f9bd 607a ldrsh.w r6, [sp, #122] ; 0x7a sh_buf_tmp += corner_size * (a.y2 - ca.y2); c8ae: f9bd 5076 ldrsh.w r5, [sp, #118] ; 0x76 c8b2: 1b2d subs r5, r5, r4 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); c8b4: f9bd 3070 ldrsh.w r3, [sp, #112] ; 0x70 c8b8: 1ad2 subs r2, r2, r3 sh_buf_tmp += corner_size * (a.y2 - ca.y2); c8ba: fb09 2505 mla r5, r9, r5, r2 c8be: 9b0a ldr r3, [sp, #40] ; 0x28 c8c0: 441d add r5, r3 c8c2: f10d 0277 add.w r2, sp, #119 ; 0x77 uint8_t * d8 = (uint8_t *)dst; c8c6: ab22 add r3, sp, #136 ; 0x88 while(len) { c8c8: a824 add r0, sp, #144 ; 0x90 *d8 = *s8; c8ca: f812 1f01 ldrb.w r1, [r2, #1]! c8ce: f803 1b01 strb.w r1, [r3], #1 while(len) { c8d2: 4283 cmp r3, r0 c8d4: d1f9 bne.n c8ca fa.y1 = fa.y2; /*Fill from bottom to top*/ c8d6: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e c8da: f8ad 308a strh.w r3, [sp, #138] ; 0x8a c8de: 1c67 adds r7, r4, #1 c8e0: 1bbf subs r7, r7, r6 for(y = 0; y < h; y++) { c8e2: b23f sxth r7, r7 c8e4: 2f00 cmp r7, #0 c8e6: dd36 ble.n c956 c8e8: 2600 movs r6, #0 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, c8ea: f8df 813c ldr.w r8, [pc, #316] ; ca28 c8ee: f8cd b040 str.w fp, [sp, #64] ; 0x40 c8f2: 46bb mov fp, r7 c8f4: 9b09 ldr r3, [sp, #36] ; 0x24 c8f6: 930b str r3, [sp, #44] ; 0x2c _lv_memcpy(mask_buf, sh_buf_tmp, w); c8f8: 9a08 ldr r2, [sp, #32] c8fa: 4629 mov r1, r5 c8fc: 9f05 ldr r7, [sp, #20] c8fe: 4638 mov r0, r7 c900: 4c47 ldr r4, [pc, #284] ; (ca20 ) c902: 47a0 blx r4 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); c904: ac30 add r4, sp, #192 ; 0xc0 c906: 9b08 ldr r3, [sp, #32] c908: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a c90c: f934 1d38 ldrsh.w r1, [r4, #-56]! c910: 9705 str r7, [sp, #20] c912: 4638 mov r0, r7 c914: 4f43 ldr r7, [pc, #268] ; (ca24 ) c916: 47b8 blx r7 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; c918: 2801 cmp r0, #1 c91a: bf08 it eq c91c: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, c91e: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 c922: 9302 str r3, [sp, #8] c924: 9a0b ldr r2, [sp, #44] ; 0x2c c926: 9201 str r2, [sp, #4] c928: 9000 str r0, [sp, #0] c92a: 9b05 ldr r3, [sp, #20] c92c: f8ba 201e ldrh.w r2, [sl, #30] c930: 4621 mov r1, r4 c932: 9804 ldr r0, [sp, #16] c934: 47c0 blx r8 fa.y1--; c936: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a c93a: 3b01 subs r3, #1 c93c: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fa.y2--; c940: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e c944: 3b01 subs r3, #1 c946: f8ad 308e strh.w r3, [sp, #142] ; 0x8e c94a: 444d add r5, r9 for(y = 0; y < h; y++) { c94c: 3601 adds r6, #1 c94e: 455e cmp r6, fp c950: d1d2 bne.n c8f8 c952: f8dd b040 ldr.w fp, [sp, #64] ; 0x40 a.x2 = sh_area.x2; c956: f9bd 305c ldrsh.w r3, [sp, #92] ; 0x5c c95a: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 a.x1 = a.x2 - corner_size + 1; c95e: 3301 adds r3, #1 c960: eba3 030b sub.w r3, r3, fp c964: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 a.y1 = sh_area.y1 + corner_size; c968: f8bd 305a ldrh.w r3, [sp, #90] ; 0x5a c96c: 445b add r3, fp c96e: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 a.y2 = sh_area.y2 - corner_size; c972: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e c976: eba3 030b sub.w r3, r3, fp c97a: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 has_com = _lv_area_intersect(&ca, &a, clip); c97e: 9a04 ldr r2, [sp, #16] c980: a91c add r1, sp, #112 ; 0x70 c982: a81e add r0, sp, #120 ; 0x78 c984: 4b25 ldr r3, [pc, #148] ; (ca1c ) c986: 4798 blx r3 if(has_com) { c988: 2800 cmp r0, #0 c98a: f000 8085 beq.w ca98 if(simple_mode) ca.x1 = LV_MATH_MAX(ca.x1, coords->x2); c98e: 9b07 ldr r3, [sp, #28] c990: b14b cbz r3, c9a6 c992: 9b06 ldr r3, [sp, #24] c994: f9b3 3004 ldrsh.w r3, [r3, #4] c998: f9bd 2078 ldrsh.w r2, [sp, #120] ; 0x78 c99c: 4293 cmp r3, r2 c99e: bfb8 it lt c9a0: 4613 movlt r3, r2 c9a2: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c9a6: f9bd 3078 ldrsh.w r3, [sp, #120] ; 0x78 c9aa: f8bd 207c ldrh.w r2, [sp, #124] ; 0x7c c9ae: 3201 adds r2, #1 c9b0: 1ad2 subs r2, r2, r3 c9b2: fa0f f882 sxth.w r8, r2 if(w > 0) { c9b6: f1b8 0f00 cmp.w r8, #0 c9ba: dd6d ble.n ca98 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c9bc: f8bd 407e ldrh.w r4, [sp, #126] ; 0x7e c9c0: 3401 adds r4, #1 c9c2: f8bd 207a ldrh.w r2, [sp, #122] ; 0x7a c9c6: 1aa4 subs r4, r4, r2 c9c8: b224 sxth r4, r4 sh_buf_tmp = sh_buf + corner_size * (corner_size - 1); c9ca: f109 31ff add.w r1, r9, #4294967295 sh_buf_tmp += ca.x1 - a.x1; c9ce: f9bd 2070 ldrsh.w r2, [sp, #112] ; 0x70 c9d2: 1a9b subs r3, r3, r2 c9d4: fb09 3301 mla r3, r9, r1, r3 c9d8: 9a0a ldr r2, [sp, #40] ; 0x28 c9da: 18d3 adds r3, r2, r3 c9dc: 9308 str r3, [sp, #32] c9de: f10d 0277 add.w r2, sp, #119 ; 0x77 uint8_t * d8 = (uint8_t *)dst; c9e2: ab22 add r3, sp, #136 ; 0x88 while(len) { c9e4: a824 add r0, sp, #144 ; 0x90 *d8 = *s8; c9e6: f812 1f01 ldrb.w r1, [r2, #1]! c9ea: f803 1b01 strb.w r1, [r3], #1 while(len) { c9ee: 4283 cmp r3, r0 c9f0: d1f9 bne.n c9e6 fa.y2 = fa.y1; c9f2: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a c9f6: f8ad 308e strh.w r3, [sp, #142] ; 0x8e for(y = 0; y < h; y++) { c9fa: 4625 mov r5, r4 c9fc: 2c00 cmp r4, #0 c9fe: dd4b ble.n ca98 ca00: 2400 movs r4, #0 _lv_memcpy(mask_buf, sh_buf_tmp, w); ca02: 4f07 ldr r7, [pc, #28] ; (ca20 ) _lv_blend_fill(clip, &fa, ca04: f8cd 902c str.w r9, [sp, #44] ; 0x2c ca08: 46a9 mov r9, r5 ca0a: 9d07 ldr r5, [sp, #28] ca0c: e03a b.n ca84 ca0e: bf00 nop ca10: 00012925 .word 0x00012925 ca14: 0000c015 .word 0x0000c015 ca18: 0000bda9 .word 0x0000bda9 ca1c: 00011501 .word 0x00011501 ca20: 0001263d .word 0x0001263d ca24: 0000be05 .word 0x0000be05 ca28: 00007739 .word 0x00007739 else if(dsc->shadow_ofs_x != 0 || dsc->shadow_ofs_y != 0) simple_mode = false; ca2c: 2300 movs r3, #0 ca2e: 9307 str r3, [sp, #28] ca30: e662 b.n c6f8 ca32: 2300 movs r3, #0 ca34: 9307 str r3, [sp, #28] ca36: e65f b.n c6f8 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); ca38: 4643 mov r3, r8 ca3a: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a ca3e: f9bd 1088 ldrsh.w r1, [sp, #136] ; 0x88 ca42: 9805 ldr r0, [sp, #20] ca44: 4e23 ldr r6, [pc, #140] ; (cad4 ) ca46: 47b0 blx r6 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; ca48: 2801 cmp r0, #1 ca4a: bf08 it eq ca4c: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, ca4e: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 ca52: 9302 str r3, [sp, #8] ca54: f89a 3028 ldrb.w r3, [sl, #40] ; 0x28 ca58: 9301 str r3, [sp, #4] ca5a: 9000 str r0, [sp, #0] ca5c: 9b05 ldr r3, [sp, #20] ca5e: f8ba 201e ldrh.w r2, [sl, #30] ca62: a922 add r1, sp, #136 ; 0x88 ca64: 9804 ldr r0, [sp, #16] ca66: 4e1c ldr r6, [pc, #112] ; (cad8 ) ca68: 47b0 blx r6 fa.y1++; ca6a: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a ca6e: 3301 adds r3, #1 ca70: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fa.y2++; ca74: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e ca78: 3301 adds r3, #1 ca7a: f8ad 308e strh.w r3, [sp, #142] ; 0x8e for(y = 0; y < h; y++) { ca7e: 3401 adds r4, #1 ca80: 454c cmp r4, r9 ca82: d007 beq.n ca94 _lv_memcpy(mask_buf, sh_buf_tmp, w); ca84: 4642 mov r2, r8 ca86: 9908 ldr r1, [sp, #32] ca88: 9805 ldr r0, [sp, #20] ca8a: 47b8 blx r7 if(simple_mode) { ca8c: 2d00 cmp r5, #0 ca8e: d0d3 beq.n ca38 mask_res = LV_DRAW_MASK_RES_CHANGED; ca90: 2002 movs r0, #2 ca92: e7dc b.n ca4e ca94: f8dd 902c ldr.w r9, [sp, #44] ; 0x2c for(y = 0; y < corner_size; y++) { ca98: f1b9 0f00 cmp.w r9, #0 ca9c: dd1e ble.n cadc for(x = 0; x < corner_size / 2; x++) { ca9e: eb09 77d9 add.w r7, r9, r9, lsr #31 caa2: 107f asrs r7, r7, #1 caa4: 9d0a ldr r5, [sp, #40] ; 0x28 caa6: 2600 movs r6, #0 caa8: e00c b.n cac4 lv_opa_t tmp = sh_buf_tmp[x]; caaa: 7819 ldrb r1, [r3, #0] sh_buf_tmp[x] = sh_buf_tmp[corner_size - x - 1]; caac: f812 0c01 ldrb.w r0, [r2, #-1] cab0: f803 0b01 strb.w r0, [r3], #1 sh_buf_tmp[corner_size - x - 1] = tmp; cab4: f802 1d01 strb.w r1, [r2, #-1]! for(x = 0; x < corner_size / 2; x++) { cab8: 42a3 cmp r3, r4 caba: d1f6 bne.n caaa cabc: 444d add r5, r9 for(y = 0; y < corner_size; y++) { cabe: 3601 adds r6, #1 cac0: 45b1 cmp r9, r6 cac2: d00b beq.n cadc for(x = 0; x < corner_size / 2; x++) { cac4: 2f00 cmp r7, #0 cac6: ddf9 ble.n cabc cac8: 462b mov r3, r5 caca: eb05 0209 add.w r2, r5, r9 cace: 19ec adds r4, r5, r7 cad0: e7eb b.n caaa cad2: bf00 nop cad4: 0000be05 .word 0x0000be05 cad8: 00007739 .word 0x00007739 a.x1 = sh_area.x1; cadc: f9bd 3058 ldrsh.w r3, [sp, #88] ; 0x58 cae0: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 a.x2 = a.x1 + corner_size - 1; cae4: 3b01 subs r3, #1 cae6: 445b add r3, fp cae8: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 a.y1 = sh_area.y1; caec: f9bd 305a ldrsh.w r3, [sp, #90] ; 0x5a caf0: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 a.y2 = a.y1 + corner_size - 1; caf4: 3b01 subs r3, #1 caf6: 445b add r3, fp caf8: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 has_com = _lv_area_intersect(&ca, &a, clip); cafc: 9a04 ldr r2, [sp, #16] cafe: a91c add r1, sp, #112 ; 0x70 cb00: a81e add r0, sp, #120 ; 0x78 cb02: 4bae ldr r3, [pc, #696] ; (cdbc ) cb04: 4798 blx r3 if(has_com) { cb06: 2800 cmp r0, #0 cb08: d071 beq.n cbee if(ca.y2 > h_half) ca.y2 = h_half; cb0a: f9bd 307e ldrsh.w r3, [sp, #126] ; 0x7e cb0e: 990c ldr r1, [sp, #48] ; 0x30 cb10: 428b cmp r3, r1 cb12: bfc4 itt gt cb14: 460b movgt r3, r1 cb16: f8ad 307e strhgt.w r3, [sp, #126] ; 0x7e if(ca.x2 > w_half) ca.x2 = w_half; cb1a: f9bd 307c ldrsh.w r3, [sp, #124] ; 0x7c cb1e: 990d ldr r1, [sp, #52] ; 0x34 cb20: 428b cmp r3, r1 cb22: bfc4 itt gt cb24: 460b movgt r3, r1 cb26: f8ad 307c strhgt.w r3, [sp, #124] ; 0x7c return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); cb2a: f9bd 2078 ldrsh.w r2, [sp, #120] ; 0x78 cb2e: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c cb32: 3301 adds r3, #1 cb34: 1a9b subs r3, r3, r2 cb36: b21b sxth r3, r3 cb38: 9308 str r3, [sp, #32] if(w > 0) { cb3a: 2b00 cmp r3, #0 cb3c: dd57 ble.n cbee return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); cb3e: f9bd 707e ldrsh.w r7, [sp, #126] ; 0x7e cb42: f9bd 407a ldrsh.w r4, [sp, #122] ; 0x7a sh_buf_tmp += corner_size * (ca.y1 - a.y1); cb46: f9bd 5072 ldrsh.w r5, [sp, #114] ; 0x72 cb4a: 1b65 subs r5, r4, r5 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); cb4c: f9bd 3070 ldrsh.w r3, [sp, #112] ; 0x70 cb50: 1ad2 subs r2, r2, r3 sh_buf_tmp += corner_size * (ca.y1 - a.y1); cb52: fb09 2505 mla r5, r9, r5, r2 cb56: 9b0a ldr r3, [sp, #40] ; 0x28 cb58: 441d add r5, r3 cb5a: f10d 0277 add.w r2, sp, #119 ; 0x77 uint8_t * d8 = (uint8_t *)dst; cb5e: ab22 add r3, sp, #136 ; 0x88 while(len) { cb60: a824 add r0, sp, #144 ; 0x90 *d8 = *s8; cb62: f812 1f01 ldrb.w r1, [r2, #1]! cb66: f803 1b01 strb.w r1, [r3], #1 while(len) { cb6a: 4283 cmp r3, r0 cb6c: d1f9 bne.n cb62 fa.y2 = fa.y1; cb6e: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a cb72: f8ad 308e strh.w r3, [sp, #142] ; 0x8e cb76: 3701 adds r7, #1 cb78: 1b3f subs r7, r7, r4 for(y = 0; y < h; y++) { cb7a: b23f sxth r7, r7 cb7c: 2f00 cmp r7, #0 cb7e: dd36 ble.n cbee cb80: 2600 movs r6, #0 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, cb82: f8df 8244 ldr.w r8, [pc, #580] ; cdc8 cb86: f8cd b040 str.w fp, [sp, #64] ; 0x40 cb8a: 46bb mov fp, r7 cb8c: 9b09 ldr r3, [sp, #36] ; 0x24 cb8e: 930b str r3, [sp, #44] ; 0x2c _lv_memcpy(mask_buf, sh_buf_tmp, w); cb90: 9a08 ldr r2, [sp, #32] cb92: 4629 mov r1, r5 cb94: 9f05 ldr r7, [sp, #20] cb96: 4638 mov r0, r7 cb98: 4c89 ldr r4, [pc, #548] ; (cdc0 ) cb9a: 47a0 blx r4 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); cb9c: ac30 add r4, sp, #192 ; 0xc0 cb9e: 9b08 ldr r3, [sp, #32] cba0: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a cba4: f934 1d38 ldrsh.w r1, [r4, #-56]! cba8: 9705 str r7, [sp, #20] cbaa: 4638 mov r0, r7 cbac: 4f85 ldr r7, [pc, #532] ; (cdc4 ) cbae: 47b8 blx r7 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; cbb0: 2801 cmp r0, #1 cbb2: bf08 it eq cbb4: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, cbb6: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 cbba: 9302 str r3, [sp, #8] cbbc: 9a0b ldr r2, [sp, #44] ; 0x2c cbbe: 9201 str r2, [sp, #4] cbc0: 9000 str r0, [sp, #0] cbc2: 9b05 ldr r3, [sp, #20] cbc4: f8ba 201e ldrh.w r2, [sl, #30] cbc8: 4621 mov r1, r4 cbca: 9804 ldr r0, [sp, #16] cbcc: 47c0 blx r8 fa.y1++; cbce: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a cbd2: 3301 adds r3, #1 cbd4: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fa.y2++; cbd8: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e cbdc: 3301 adds r3, #1 cbde: f8ad 308e strh.w r3, [sp, #142] ; 0x8e cbe2: 444d add r5, r9 for(y = 0; y < h; y++) { cbe4: 3601 adds r6, #1 cbe6: 455e cmp r6, fp cbe8: d1d2 bne.n cb90 cbea: f8dd b040 ldr.w fp, [sp, #64] ; 0x40 a.x1 = sh_area.x1; cbee: f9bd 3058 ldrsh.w r3, [sp, #88] ; 0x58 cbf2: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 a.x2 = a.x1 + corner_size - 1; cbf6: 3b01 subs r3, #1 cbf8: 445b add r3, fp cbfa: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 a.y1 = sh_area.y2 - corner_size + 1; cbfe: f9bd 205e ldrsh.w r2, [sp, #94] ; 0x5e cc02: 1c53 adds r3, r2, #1 cc04: eba3 030b sub.w r3, r3, fp cc08: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 a.y2 = sh_area.y2; cc0c: f8ad 2076 strh.w r2, [sp, #118] ; 0x76 has_com = _lv_area_intersect(&ca, &a, clip); cc10: 9a04 ldr r2, [sp, #16] cc12: a91c add r1, sp, #112 ; 0x70 cc14: a81e add r0, sp, #120 ; 0x78 cc16: 4b69 ldr r3, [pc, #420] ; (cdbc ) cc18: 4798 blx r3 if(has_com) { cc1a: 2800 cmp r0, #0 cc1c: d072 beq.n cd04 if(ca.y1 <= h_half) ca.y1 = h_half + 1; cc1e: f9bd 307a ldrsh.w r3, [sp, #122] ; 0x7a cc22: 9a0c ldr r2, [sp, #48] ; 0x30 cc24: 4293 cmp r3, r2 cc26: dc03 bgt.n cc30 cc28: 9b0f ldr r3, [sp, #60] ; 0x3c cc2a: 3301 adds r3, #1 cc2c: f8ad 307a strh.w r3, [sp, #122] ; 0x7a if(ca.x2 > w_half) ca.x2 = w_half; cc30: f9bd 307c ldrsh.w r3, [sp, #124] ; 0x7c cc34: 990d ldr r1, [sp, #52] ; 0x34 cc36: 428b cmp r3, r1 cc38: bfc4 itt gt cc3a: 460b movgt r3, r1 cc3c: f8ad 307c strhgt.w r3, [sp, #124] ; 0x7c return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); cc40: f9bd 2078 ldrsh.w r2, [sp, #120] ; 0x78 cc44: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c cc48: 3301 adds r3, #1 cc4a: 1a9b subs r3, r3, r2 cc4c: b21b sxth r3, r3 cc4e: 9308 str r3, [sp, #32] if(w > 0) { cc50: 2b00 cmp r3, #0 cc52: dd57 ble.n cd04 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); cc54: f9bd 407e ldrsh.w r4, [sp, #126] ; 0x7e cc58: f9bd 607a ldrsh.w r6, [sp, #122] ; 0x7a sh_buf_tmp += corner_size * (a.y2 - ca.y2); cc5c: f9bd 5076 ldrsh.w r5, [sp, #118] ; 0x76 cc60: 1b2d subs r5, r5, r4 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); cc62: f9bd 3070 ldrsh.w r3, [sp, #112] ; 0x70 cc66: 1ad2 subs r2, r2, r3 sh_buf_tmp += corner_size * (a.y2 - ca.y2); cc68: fb09 2505 mla r5, r9, r5, r2 cc6c: 9b0a ldr r3, [sp, #40] ; 0x28 cc6e: 441d add r5, r3 cc70: f10d 0277 add.w r2, sp, #119 ; 0x77 uint8_t * d8 = (uint8_t *)dst; cc74: ab22 add r3, sp, #136 ; 0x88 while(len) { cc76: a824 add r0, sp, #144 ; 0x90 *d8 = *s8; cc78: f812 1f01 ldrb.w r1, [r2, #1]! cc7c: f803 1b01 strb.w r1, [r3], #1 while(len) { cc80: 4283 cmp r3, r0 cc82: d1f9 bne.n cc78 fa.y1 = fa.y2; /*Fill from bottom to top*/ cc84: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e cc88: f8ad 308a strh.w r3, [sp, #138] ; 0x8a cc8c: 1c67 adds r7, r4, #1 cc8e: 1bbf subs r7, r7, r6 for(y = 0; y < h; y++) { cc90: b23f sxth r7, r7 cc92: 2f00 cmp r7, #0 cc94: dd36 ble.n cd04 cc96: 2600 movs r6, #0 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, cc98: f8df 812c ldr.w r8, [pc, #300] ; cdc8 cc9c: f8cd b030 str.w fp, [sp, #48] ; 0x30 cca0: 46bb mov fp, r7 cca2: 9b09 ldr r3, [sp, #36] ; 0x24 cca4: 930b str r3, [sp, #44] ; 0x2c _lv_memcpy(mask_buf, sh_buf_tmp, w); cca6: 9a08 ldr r2, [sp, #32] cca8: 4629 mov r1, r5 ccaa: 9f05 ldr r7, [sp, #20] ccac: 4638 mov r0, r7 ccae: 4c44 ldr r4, [pc, #272] ; (cdc0 ) ccb0: 47a0 blx r4 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); ccb2: ac30 add r4, sp, #192 ; 0xc0 ccb4: 9b08 ldr r3, [sp, #32] ccb6: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a ccba: f934 1d38 ldrsh.w r1, [r4, #-56]! ccbe: 9705 str r7, [sp, #20] ccc0: 4638 mov r0, r7 ccc2: 4f40 ldr r7, [pc, #256] ; (cdc4 ) ccc4: 47b8 blx r7 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; ccc6: 2801 cmp r0, #1 ccc8: bf08 it eq ccca: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, cccc: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 ccd0: 9302 str r3, [sp, #8] ccd2: 9a0b ldr r2, [sp, #44] ; 0x2c ccd4: 9201 str r2, [sp, #4] ccd6: 9000 str r0, [sp, #0] ccd8: 9b05 ldr r3, [sp, #20] ccda: f8ba 201e ldrh.w r2, [sl, #30] ccde: 4621 mov r1, r4 cce0: 9804 ldr r0, [sp, #16] cce2: 47c0 blx r8 fa.y1--; cce4: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a cce8: 3b01 subs r3, #1 ccea: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fa.y2--; ccee: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e ccf2: 3b01 subs r3, #1 ccf4: f8ad 308e strh.w r3, [sp, #142] ; 0x8e ccf8: 444d add r5, r9 for(y = 0; y < h; y++) { ccfa: 3601 adds r6, #1 ccfc: 455e cmp r6, fp ccfe: d1d2 bne.n cca6 cd00: f8dd b030 ldr.w fp, [sp, #48] ; 0x30 a.x1 = sh_area.x1; cd04: f9bd 3058 ldrsh.w r3, [sp, #88] ; 0x58 cd08: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 a.x2 = a.x1 + corner_size - 1; cd0c: 3b01 subs r3, #1 cd0e: 445b add r3, fp cd10: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 a.y1 = sh_area.y1 + corner_size; cd14: f8bd 305a ldrh.w r3, [sp, #90] ; 0x5a cd18: 445b add r3, fp cd1a: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 a.y2 = sh_area.y2 - corner_size; cd1e: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e cd22: eba3 030b sub.w r3, r3, fp cd26: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 has_com = _lv_area_intersect(&ca, &a, clip); cd2a: 9a04 ldr r2, [sp, #16] cd2c: a91c add r1, sp, #112 ; 0x70 cd2e: a81e add r0, sp, #120 ; 0x78 cd30: 4b22 ldr r3, [pc, #136] ; (cdbc ) cd32: 4798 blx r3 if(has_com) { cd34: 2800 cmp r0, #0 cd36: d079 beq.n ce2c if(simple_mode) ca.x2 = LV_MATH_MIN(coords->x1, ca.x2); cd38: 9b07 ldr r3, [sp, #28] cd3a: b14b cbz r3, cd50 cd3c: f9bd 307c ldrsh.w r3, [sp, #124] ; 0x7c cd40: 9a06 ldr r2, [sp, #24] cd42: f9b2 2000 ldrsh.w r2, [r2] cd46: 4293 cmp r3, r2 cd48: bfa8 it ge cd4a: 4613 movge r3, r2 cd4c: f8ad 307c strh.w r3, [sp, #124] ; 0x7c return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); cd50: f9bd 3078 ldrsh.w r3, [sp, #120] ; 0x78 cd54: f8bd 807c ldrh.w r8, [sp, #124] ; 0x7c cd58: f108 0801 add.w r8, r8, #1 cd5c: eba8 0803 sub.w r8, r8, r3 cd60: fa0f f888 sxth.w r8, r8 if(w > 0) { cd64: f1b8 0f00 cmp.w r8, #0 cd68: dd60 ble.n ce2c return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); cd6a: f8bd 407e ldrh.w r4, [sp, #126] ; 0x7e cd6e: 3401 adds r4, #1 cd70: f8bd 207a ldrh.w r2, [sp, #122] ; 0x7a cd74: 1aa4 subs r4, r4, r2 cd76: b224 sxth r4, r4 sh_buf_tmp = sh_buf + corner_size * (corner_size - 1); cd78: f109 31ff add.w r1, r9, #4294967295 sh_buf_tmp += ca.x1 - a.x1; cd7c: f9bd 2070 ldrsh.w r2, [sp, #112] ; 0x70 cd80: 1a9b subs r3, r3, r2 cd82: fb09 3301 mla r3, r9, r1, r3 cd86: 9a0a ldr r2, [sp, #40] ; 0x28 cd88: 18d3 adds r3, r2, r3 cd8a: 9308 str r3, [sp, #32] cd8c: f10d 0277 add.w r2, sp, #119 ; 0x77 uint8_t * d8 = (uint8_t *)dst; cd90: ab22 add r3, sp, #136 ; 0x88 while(len) { cd92: a824 add r0, sp, #144 ; 0x90 *d8 = *s8; cd94: f812 1f01 ldrb.w r1, [r2, #1]! cd98: f803 1b01 strb.w r1, [r3], #1 while(len) { cd9c: 4283 cmp r3, r0 cd9e: d1f9 bne.n cd94 fa.y2 = fa.y1; cda0: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a cda4: f8ad 308e strh.w r3, [sp, #142] ; 0x8e for(y = 0; y < h; y++) { cda8: 4625 mov r5, r4 cdaa: 2c00 cmp r4, #0 cdac: dd3e ble.n ce2c cdae: 2400 movs r4, #0 _lv_memcpy(mask_buf, sh_buf_tmp, w); cdb0: 4f03 ldr r7, [pc, #12] ; (cdc0 ) _lv_blend_fill(clip, &fa, cdb2: f8cd 902c str.w r9, [sp, #44] ; 0x2c cdb6: 46a9 mov r9, r5 cdb8: 9d07 ldr r5, [sp, #28] cdba: e02d b.n ce18 cdbc: 00011501 .word 0x00011501 cdc0: 0001263d .word 0x0001263d cdc4: 0000be05 .word 0x0000be05 cdc8: 00007739 .word 0x00007739 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); cdcc: 4643 mov r3, r8 cdce: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a cdd2: f9bd 1088 ldrsh.w r1, [sp, #136] ; 0x88 cdd6: 9805 ldr r0, [sp, #20] cdd8: 4eaa ldr r6, [pc, #680] ; (d084 ) cdda: 47b0 blx r6 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; cddc: 2801 cmp r0, #1 cdde: bf08 it eq cde0: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, cde2: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 cde6: 9302 str r3, [sp, #8] cde8: f89a 3028 ldrb.w r3, [sl, #40] ; 0x28 cdec: 9301 str r3, [sp, #4] cdee: 9000 str r0, [sp, #0] cdf0: 9b05 ldr r3, [sp, #20] cdf2: f8ba 201e ldrh.w r2, [sl, #30] cdf6: a922 add r1, sp, #136 ; 0x88 cdf8: 9804 ldr r0, [sp, #16] cdfa: 4ea3 ldr r6, [pc, #652] ; (d088 ) cdfc: 47b0 blx r6 fa.y1++; cdfe: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a ce02: 3301 adds r3, #1 ce04: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fa.y2++; ce08: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e ce0c: 3301 adds r3, #1 ce0e: f8ad 308e strh.w r3, [sp, #142] ; 0x8e for(y = 0; y < h; y++) { ce12: 3401 adds r4, #1 ce14: 454c cmp r4, r9 ce16: d007 beq.n ce28 _lv_memcpy(mask_buf, sh_buf_tmp, w); ce18: 4642 mov r2, r8 ce1a: 9908 ldr r1, [sp, #32] ce1c: 9805 ldr r0, [sp, #20] ce1e: 47b8 blx r7 if(simple_mode) { ce20: 2d00 cmp r5, #0 ce22: d0d3 beq.n cdcc mask_res = LV_DRAW_MASK_RES_CHANGED; ce24: 2002 movs r0, #2 ce26: e7dc b.n cde2 ce28: f8dd 902c ldr.w r9, [sp, #44] ; 0x2c a.x1 = sh_area.x1 + corner_size; ce2c: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 ce30: 445b add r3, fp ce32: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 a.x2 = sh_area.x2 - corner_size; ce36: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c ce3a: eba3 030b sub.w r3, r3, fp ce3e: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 a.y1 = sh_area.y1; ce42: f9bd 305a ldrsh.w r3, [sp, #90] ; 0x5a ce46: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 a.y2 = sh_area.y1 + corner_size - 1; ce4a: 3b01 subs r3, #1 ce4c: 445b add r3, fp ce4e: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 has_com = _lv_area_intersect(&ca, &a, clip); ce52: 9a04 ldr r2, [sp, #16] ce54: a91c add r1, sp, #112 ; 0x70 ce56: a81e add r0, sp, #120 ; 0x78 ce58: 4b8c ldr r3, [pc, #560] ; (d08c ) ce5a: 4798 blx r3 if(has_com) { ce5c: 2800 cmp r0, #0 ce5e: d07d beq.n cf5c if(simple_mode) ca.y2 = LV_MATH_MIN(ca.y2, coords->y1); ce60: 9b07 ldr r3, [sp, #28] ce62: b14b cbz r3, ce78 ce64: 9b06 ldr r3, [sp, #24] ce66: f9b3 3002 ldrsh.w r3, [r3, #2] ce6a: f9bd 207e ldrsh.w r2, [sp, #126] ; 0x7e ce6e: 4293 cmp r3, r2 ce70: bfa8 it ge ce72: 4613 movge r3, r2 ce74: f8ad 307e strh.w r3, [sp, #126] ; 0x7e return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); ce78: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c ce7c: 3301 adds r3, #1 ce7e: f8bd 2078 ldrh.w r2, [sp, #120] ; 0x78 ce82: 1a9b subs r3, r3, r2 ce84: b21b sxth r3, r3 ce86: 9308 str r3, [sp, #32] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); ce88: f9bd 307a ldrsh.w r3, [sp, #122] ; 0x7a ce8c: f8bd 507e ldrh.w r5, [sp, #126] ; 0x7e ce90: 3501 adds r5, #1 ce92: 1aed subs r5, r5, r3 ce94: b22d sxth r5, r5 sh_buf_tmp = sh_buf + corner_size - 1; ce96: 46c8 mov r8, r9 sh_buf_tmp += corner_size * (ca.y1 - a.y1); ce98: f9bd 4072 ldrsh.w r4, [sp, #114] ; 0x72 ce9c: 1b1c subs r4, r3, r4 sh_buf_tmp = sh_buf + corner_size - 1; ce9e: f109 33ff add.w r3, r9, #4294967295 sh_buf_tmp += corner_size * (ca.y1 - a.y1); cea2: fb09 3404 mla r4, r9, r4, r3 cea6: 9b0a ldr r3, [sp, #40] ; 0x28 cea8: 441c add r4, r3 ceaa: f10d 0277 add.w r2, sp, #119 ; 0x77 uint8_t * d8 = (uint8_t *)dst; ceae: ab22 add r3, sp, #136 ; 0x88 while(len) { ceb0: a824 add r0, sp, #144 ; 0x90 *d8 = *s8; ceb2: f812 1f01 ldrb.w r1, [r2, #1]! ceb6: f803 1b01 strb.w r1, [r3], #1 while(len) { ceba: 4283 cmp r3, r0 cebc: d1f9 bne.n ceb2 fa.y2 = fa.y1; cebe: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a cec2: f8ad 308e strh.w r3, [sp, #142] ; 0x8e for(y = 0; y < h; y++) { cec6: 462b mov r3, r5 cec8: 2d00 cmp r5, #0 ceca: dd47 ble.n cf5c cecc: 2500 movs r5, #0 _lv_memset(mask_buf, opa_tmp, w); cece: 4f70 ldr r7, [pc, #448] ; (d090 ) _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, ced0: f8cd 902c str.w r9, [sp, #44] ; 0x2c ced4: f8dd 9024 ldr.w r9, [sp, #36] ; 0x24 ced8: f8cd b030 str.w fp, [sp, #48] ; 0x30 cedc: 469b mov fp, r3 cede: e02a b.n cf36 if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; cee0: f1b9 0fff cmp.w r9, #255 ; 0xff cee4: d12a bne.n cf3c lv_opa_t opa_tmp = sh_buf_tmp[0]; cee6: 4649 mov r1, r9 cee8: e02c b.n cf44 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); ceea: 9b08 ldr r3, [sp, #32] ceec: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a cef0: f9bd 1088 ldrsh.w r1, [sp, #136] ; 0x88 cef4: 9805 ldr r0, [sp, #20] cef6: 4e63 ldr r6, [pc, #396] ; (d084 ) cef8: 47b0 blx r6 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; cefa: 2801 cmp r0, #1 cefc: bf08 it eq cefe: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, cf00: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 cf04: 9302 str r3, [sp, #8] cf06: 23ff movs r3, #255 ; 0xff cf08: 9301 str r3, [sp, #4] cf0a: 9000 str r0, [sp, #0] cf0c: 9b05 ldr r3, [sp, #20] cf0e: f8ba 201e ldrh.w r2, [sl, #30] cf12: a922 add r1, sp, #136 ; 0x88 cf14: 9804 ldr r0, [sp, #16] cf16: 4e5c ldr r6, [pc, #368] ; (d088 ) cf18: 47b0 blx r6 fa.y1++; cf1a: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a cf1e: 3301 adds r3, #1 cf20: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fa.y2++; cf24: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e cf28: 3301 adds r3, #1 cf2a: f8ad 308e strh.w r3, [sp, #142] ; 0x8e sh_buf_tmp += corner_size; cf2e: 4444 add r4, r8 for(y = 0; y < h; y++) { cf30: 3501 adds r5, #1 cf32: 455d cmp r5, fp cf34: d00e beq.n cf54 lv_opa_t opa_tmp = sh_buf_tmp[0]; cf36: 7823 ldrb r3, [r4, #0] if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; cf38: 2bff cmp r3, #255 ; 0xff cf3a: d0d1 beq.n cee0 cf3c: fb03 f309 mul.w r3, r3, r9 cf40: f3c3 2107 ubfx r1, r3, #8, #8 _lv_memset(mask_buf, opa_tmp, w); cf44: 9a08 ldr r2, [sp, #32] cf46: 9805 ldr r0, [sp, #20] cf48: 47b8 blx r7 if(simple_mode) { cf4a: 9b07 ldr r3, [sp, #28] cf4c: 2b00 cmp r3, #0 cf4e: d0cc beq.n ceea mask_res = LV_DRAW_MASK_RES_CHANGED; cf50: 2002 movs r0, #2 cf52: e7d5 b.n cf00 cf54: f8dd 902c ldr.w r9, [sp, #44] ; 0x2c cf58: f8dd b030 ldr.w fp, [sp, #48] ; 0x30 a.x1 = sh_area.x1 + corner_size; cf5c: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 cf60: 445b add r3, fp cf62: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 a.x2 = sh_area.x2 - corner_size; cf66: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c cf6a: eba3 030b sub.w r3, r3, fp cf6e: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 a.y1 = sh_area.y2 - corner_size + 1; cf72: f9bd 205e ldrsh.w r2, [sp, #94] ; 0x5e cf76: 1c53 adds r3, r2, #1 cf78: eba3 030b sub.w r3, r3, fp cf7c: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 a.y2 = sh_area.y2; cf80: f8ad 2076 strh.w r2, [sp, #118] ; 0x76 has_com = _lv_area_intersect(&ca, &a, clip); cf84: 9a04 ldr r2, [sp, #16] cf86: a91c add r1, sp, #112 ; 0x70 cf88: a81e add r0, sp, #120 ; 0x78 cf8a: 4b40 ldr r3, [pc, #256] ; (d08c ) cf8c: 4798 blx r3 if(has_com) { cf8e: 2800 cmp r0, #0 cf90: f000 8082 beq.w d098 if(simple_mode) ca.y1 = LV_MATH_MAX(ca.y1, coords->y2); cf94: 9b07 ldr r3, [sp, #28] cf96: b14b cbz r3, cfac cf98: 9b06 ldr r3, [sp, #24] cf9a: f9b3 3006 ldrsh.w r3, [r3, #6] cf9e: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a cfa2: 4293 cmp r3, r2 cfa4: bfb8 it lt cfa6: 4613 movlt r3, r2 cfa8: f8ad 307a strh.w r3, [sp, #122] ; 0x7a return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); cfac: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c cfb0: 3301 adds r3, #1 cfb2: f8bd 2078 ldrh.w r2, [sp, #120] ; 0x78 cfb6: 1a9b subs r3, r3, r2 cfb8: b21b sxth r3, r3 cfba: 9308 str r3, [sp, #32] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); cfbc: f9bd 307e ldrsh.w r3, [sp, #126] ; 0x7e cfc0: 1c5d adds r5, r3, #1 cfc2: f8bd 207a ldrh.w r2, [sp, #122] ; 0x7a cfc6: 1aad subs r5, r5, r2 cfc8: b22d sxth r5, r5 sh_buf_tmp = sh_buf + corner_size - 1; cfca: 46c8 mov r8, r9 sh_buf_tmp += corner_size * (a.y2 - ca.y2); cfcc: f9bd 4076 ldrsh.w r4, [sp, #118] ; 0x76 cfd0: 1ae4 subs r4, r4, r3 sh_buf_tmp = sh_buf + corner_size - 1; cfd2: f109 33ff add.w r3, r9, #4294967295 sh_buf_tmp += corner_size * (a.y2 - ca.y2); cfd6: fb09 3404 mla r4, r9, r4, r3 cfda: 9b0a ldr r3, [sp, #40] ; 0x28 cfdc: 441c add r4, r3 cfde: f10d 0277 add.w r2, sp, #119 ; 0x77 uint8_t * d8 = (uint8_t *)dst; cfe2: ab22 add r3, sp, #136 ; 0x88 while(len) { cfe4: a824 add r0, sp, #144 ; 0x90 *d8 = *s8; cfe6: f812 1f01 ldrb.w r1, [r2, #1]! cfea: f803 1b01 strb.w r1, [r3], #1 while(len) { cfee: 4283 cmp r3, r0 cff0: d1f9 bne.n cfe6 fa.y1 = fa.y2; cff2: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e cff6: f8ad 308a strh.w r3, [sp, #138] ; 0x8a for(y = 0; y < h; y++) { cffa: 46a9 mov r9, r5 cffc: 2d00 cmp r5, #0 cffe: dd4b ble.n d098 d000: 2500 movs r5, #0 _lv_memset(mask_buf, opa_tmp, w); d002: 4f23 ldr r7, [pc, #140] ; (d090 ) _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, d004: f8cd b02c str.w fp, [sp, #44] ; 0x2c d008: f8dd b024 ldr.w fp, [sp, #36] ; 0x24 d00c: e02a b.n d064 if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; d00e: f1bb 0fff cmp.w fp, #255 ; 0xff d012: d12a bne.n d06a lv_opa_t opa_tmp = sh_buf_tmp[0]; d014: 4659 mov r1, fp d016: e02c b.n d072 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); d018: 9b08 ldr r3, [sp, #32] d01a: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a d01e: f9bd 1088 ldrsh.w r1, [sp, #136] ; 0x88 d022: 9805 ldr r0, [sp, #20] d024: 4e17 ldr r6, [pc, #92] ; (d084 ) d026: 47b0 blx r6 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; d028: 2801 cmp r0, #1 d02a: bf08 it eq d02c: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, d02e: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 d032: 9302 str r3, [sp, #8] d034: 23ff movs r3, #255 ; 0xff d036: 9301 str r3, [sp, #4] d038: 9000 str r0, [sp, #0] d03a: 9b05 ldr r3, [sp, #20] d03c: f8ba 201e ldrh.w r2, [sl, #30] d040: a922 add r1, sp, #136 ; 0x88 d042: 9804 ldr r0, [sp, #16] d044: 4e10 ldr r6, [pc, #64] ; (d088 ) d046: 47b0 blx r6 fa.y1--; d048: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a d04c: 3b01 subs r3, #1 d04e: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fa.y2--; d052: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e d056: 3b01 subs r3, #1 d058: f8ad 308e strh.w r3, [sp, #142] ; 0x8e sh_buf_tmp += corner_size; d05c: 4444 add r4, r8 for(y = 0; y < h; y++) { d05e: 3501 adds r5, #1 d060: 454d cmp r5, r9 d062: d017 beq.n d094 lv_opa_t opa_tmp = sh_buf_tmp[0]; d064: 7823 ldrb r3, [r4, #0] if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; d066: 2bff cmp r3, #255 ; 0xff d068: d0d1 beq.n d00e d06a: fb03 f30b mul.w r3, r3, fp d06e: f3c3 2107 ubfx r1, r3, #8, #8 _lv_memset(mask_buf, opa_tmp, w); d072: 9a08 ldr r2, [sp, #32] d074: 9805 ldr r0, [sp, #20] d076: 47b8 blx r7 if(simple_mode) { d078: 9b07 ldr r3, [sp, #28] d07a: 2b00 cmp r3, #0 d07c: d0cc beq.n d018 mask_res = LV_DRAW_MASK_RES_CHANGED; d07e: 2002 movs r0, #2 d080: e7d5 b.n d02e d082: bf00 nop d084: 0000be05 .word 0x0000be05 d088: 00007739 .word 0x00007739 d08c: 00011501 .word 0x00011501 d090: 00012a69 .word 0x00012a69 d094: f8dd b02c ldr.w fp, [sp, #44] ; 0x2c a.x1 = sh_area.x1 + corner_size; d098: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 d09c: 445b add r3, fp d09e: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 a.x2 = sh_area.x2 - corner_size; d0a2: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c d0a6: eba3 030b sub.w r3, r3, fp d0aa: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 a.y1 = sh_area.y1 + corner_size; d0ae: f8bd 305a ldrh.w r3, [sp, #90] ; 0x5a d0b2: 445b add r3, fp d0b4: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 a.y2 = sh_area.y2 - corner_size; d0b8: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e d0bc: eba3 0b0b sub.w fp, r3, fp d0c0: f8ad b076 strh.w fp, [sp, #118] ; 0x76 has_com = _lv_area_intersect(&ca, &a, clip); d0c4: 9a04 ldr r2, [sp, #16] d0c6: a91c add r1, sp, #112 ; 0x70 d0c8: a81e add r0, sp, #120 ; 0x78 d0ca: 4ba2 ldr r3, [pc, #648] ; (d354 ) d0cc: 4798 blx r3 if(has_com && simple_mode == false) { d0ce: 2800 cmp r0, #0 d0d0: d050 beq.n d174 d0d2: 9b07 ldr r3, [sp, #28] d0d4: 2b00 cmp r3, #0 d0d6: d14d bne.n d174 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); d0d8: f8bd 607c ldrh.w r6, [sp, #124] ; 0x7c d0dc: 3601 adds r6, #1 d0de: f8bd 3078 ldrh.w r3, [sp, #120] ; 0x78 d0e2: 1af6 subs r6, r6, r3 d0e4: b236 sxth r6, r6 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); d0e6: f8bd 407e ldrh.w r4, [sp, #126] ; 0x7e d0ea: 3401 adds r4, #1 d0ec: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a d0f0: 1ae4 subs r4, r4, r3 d0f2: b224 sxth r4, r4 d0f4: f10d 0277 add.w r2, sp, #119 ; 0x77 uint8_t * d8 = (uint8_t *)dst; d0f8: ab22 add r3, sp, #136 ; 0x88 while(len) { d0fa: a824 add r0, sp, #144 ; 0x90 *d8 = *s8; d0fc: f812 1f01 ldrb.w r1, [r2, #1]! d100: f803 1b01 strb.w r1, [r3], #1 while(len) { d104: 4283 cmp r3, r0 d106: d1f9 bne.n d0fc fa.y2 = fa.y1; d108: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a d10c: f8ad 308e strh.w r3, [sp, #142] ; 0x8e for(y = 0; y < h; y++) { d110: 46a3 mov fp, r4 d112: 2c00 cmp r4, #0 d114: dd2e ble.n d174 d116: 2500 movs r5, #0 _lv_memset(mask_buf, dsc->shadow_opa, w); d118: f8df 9254 ldr.w r9, [pc, #596] ; d370 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); d11c: f8df 8254 ldr.w r8, [pc, #596] ; d374 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, d120: 4f8d ldr r7, [pc, #564] ; (d358 ) _lv_memset(mask_buf, dsc->shadow_opa, w); d122: 4632 mov r2, r6 d124: f89a 1028 ldrb.w r1, [sl, #40] ; 0x28 d128: 9805 ldr r0, [sp, #20] d12a: 47c8 blx r9 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); d12c: ac30 add r4, sp, #192 ; 0xc0 d12e: 4633 mov r3, r6 d130: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a d134: f934 1d38 ldrsh.w r1, [r4, #-56]! d138: 9805 ldr r0, [sp, #20] d13a: 47c0 blx r8 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; d13c: 2801 cmp r0, #1 d13e: bf08 it eq d140: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, d142: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 d146: 9302 str r3, [sp, #8] d148: 23ff movs r3, #255 ; 0xff d14a: 9301 str r3, [sp, #4] d14c: 9000 str r0, [sp, #0] d14e: 9b05 ldr r3, [sp, #20] d150: f8ba 201e ldrh.w r2, [sl, #30] d154: 4621 mov r1, r4 d156: 9804 ldr r0, [sp, #16] d158: 47b8 blx r7 fa.y1++; d15a: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a d15e: 3301 adds r3, #1 d160: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fa.y2++; d164: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e d168: 3301 adds r3, #1 d16a: f8ad 308e strh.w r3, [sp, #142] ; 0x8e for(y = 0; y < h; y++) { d16e: 3501 adds r5, #1 d170: 455d cmp r5, fp d172: d1d6 bne.n d122 lv_draw_mask_remove_id(mask_rout_id); d174: 980e ldr r0, [sp, #56] ; 0x38 d176: 4b79 ldr r3, [pc, #484] ; (d35c ) d178: 4798 blx r3 _lv_mem_buf_release(mask_buf); d17a: 9805 ldr r0, [sp, #20] d17c: 4c78 ldr r4, [pc, #480] ; (d360 ) d17e: 47a0 blx r4 _lv_mem_buf_release(sh_buf); d180: 980a ldr r0, [sp, #40] ; 0x28 d182: 47a0 blx r4 if(dsc->bg_opa <= LV_OPA_MIN) return; d184: f89a 700c ldrb.w r7, [sl, #12] d188: 2f05 cmp r7, #5 d18a: d942 bls.n d212 d18c: 9a06 ldr r2, [sp, #24] d18e: 1e53 subs r3, r2, #1 d190: 1dd0 adds r0, r2, #7 d192: aa1a add r2, sp, #104 ; 0x68 *d8 = *s8; d194: f813 1f01 ldrb.w r1, [r3, #1]! d198: f802 1b01 strb.w r1, [r2], #1 while(len) { d19c: 4298 cmp r0, r3 d19e: d1f9 bne.n d194 if(dsc->border_width > 1 && dsc->border_opa >= LV_OPA_MAX && dsc->radius != 0) { d1a0: f9ba 3010 ldrsh.w r3, [sl, #16] d1a4: 2b01 cmp r3, #1 d1a6: dd24 ble.n d1f2 d1a8: f89a 3014 ldrb.w r3, [sl, #20] d1ac: 2bf9 cmp r3, #249 ; 0xf9 d1ae: d920 bls.n d1f2 d1b0: f9ba 3000 ldrsh.w r3, [sl] d1b4: b1eb cbz r3, d1f2 coords_bg.x1 += (dsc->border_side & LV_BORDER_SIDE_LEFT) ? 1 : 0; d1b6: f8ba 3012 ldrh.w r3, [sl, #18] d1ba: f3c3 0280 ubfx r2, r3, #2, #1 d1be: f8bd 1068 ldrh.w r1, [sp, #104] ; 0x68 d1c2: 440a add r2, r1 d1c4: f8ad 2068 strh.w r2, [sp, #104] ; 0x68 coords_bg.y1 += (dsc->border_side & LV_BORDER_SIDE_TOP) ? 1 : 0; d1c8: f3c3 0240 ubfx r2, r3, #1, #1 d1cc: f8bd 106a ldrh.w r1, [sp, #106] ; 0x6a d1d0: 440a add r2, r1 d1d2: f8ad 206a strh.w r2, [sp, #106] ; 0x6a coords_bg.x2 -= (dsc->border_side & LV_BORDER_SIDE_RIGHT) ? 1 : 0; d1d6: f3c3 01c0 ubfx r1, r3, #3, #1 d1da: f8bd 206c ldrh.w r2, [sp, #108] ; 0x6c d1de: 1a52 subs r2, r2, r1 d1e0: f8ad 206c strh.w r2, [sp, #108] ; 0x6c coords_bg.y2 -= (dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? 1 : 0; d1e4: f003 0301 and.w r3, r3, #1 d1e8: f8bd 206e ldrh.w r2, [sp, #110] ; 0x6e d1ec: 1ad3 subs r3, r2, r3 d1ee: f8ad 306e strh.w r3, [sp, #110] ; 0x6e if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; d1f2: 2ffb cmp r7, #251 ; 0xfb d1f4: bf28 it cs d1f6: 27ff movcs r7, #255 ; 0xff lv_disp_t * disp = _lv_refr_get_disp_refreshing(); d1f8: 4b5a ldr r3, [pc, #360] ; (d364 ) d1fa: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); d1fc: 4b5a ldr r3, [pc, #360] ; (d368 ) d1fe: 4798 blx r3 d200: 4680 mov r8, r0 is_common = _lv_area_intersect(&draw_area, &coords_bg, clip); d202: 9a04 ldr r2, [sp, #16] d204: a91a add r1, sp, #104 ; 0x68 d206: a81c add r0, sp, #112 ; 0x70 d208: 4b52 ldr r3, [pc, #328] ; (d354 ) d20a: 4798 blx r3 if(is_common == false) return; d20c: 2800 cmp r0, #0 d20e: f040 80b3 bne.w d378 _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; d212: f8da 002c ldr.w r0, [sl, #44] ; 0x2c d216: b120 cbz r0, d222 if(dsc->pattern_opa <= LV_OPA_MIN) return; d218: f89a 3036 ldrb.w r3, [sl, #54] ; 0x36 d21c: 2b05 cmp r3, #5 d21e: f200 83eb bhi.w d9f8 if(dsc->border_opa <= LV_OPA_MIN) return; d222: f89a 4014 ldrb.w r4, [sl, #20] d226: 2c05 cmp r4, #5 d228: d915 bls.n d256 if(dsc->border_width == 0) return; d22a: f9ba 3010 ldrsh.w r3, [sl, #16] d22e: b193 cbz r3, d256 if(dsc->border_side == LV_BORDER_SIDE_NONE) return; d230: f9ba 3012 ldrsh.w r3, [sl, #18] d234: b17b cbz r3, d256 if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; d236: 2cfb cmp r4, #251 ; 0xfb d238: bf28 it cs d23a: 24ff movcs r4, #255 ; 0xff lv_disp_t * disp = _lv_refr_get_disp_refreshing(); d23c: 4b49 ldr r3, [pc, #292] ; (d364 ) d23e: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); d240: 4b49 ldr r3, [pc, #292] ; (d368 ) d242: 4798 blx r3 d244: 4605 mov r5, r0 is_common = _lv_area_intersect(&draw_area, coords, clip); d246: 9a04 ldr r2, [sp, #16] d248: 9906 ldr r1, [sp, #24] d24a: a818 add r0, sp, #96 ; 0x60 d24c: 4b41 ldr r3, [pc, #260] ; (d354 ) d24e: 4798 blx r3 if(is_common == false) return; d250: 2800 cmp r0, #0 d252: f040 8546 bne.w dce2 } 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; d256: f8da 103c ldr.w r1, [sl, #60] ; 0x3c d25a: b121 cbz r1, d266 if(dsc->value_opa <= LV_OPA_MIN) return; d25c: f89a 3044 ldrb.w r3, [sl, #68] ; 0x44 d260: 2b05 cmp r3, #5 d262: f201 8053 bhi.w e30c if(dsc->outline_opa <= LV_OPA_MIN) return; d266: f89a b01c ldrb.w fp, [sl, #28] d26a: f1bb 0f05 cmp.w fp, #5 d26e: d96d bls.n d34c if(dsc->outline_width == 0) return; d270: f9ba 3018 ldrsh.w r3, [sl, #24] d274: 2b00 cmp r3, #0 d276: d069 beq.n d34c if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; d278: f1bb 0ffb cmp.w fp, #251 ; 0xfb d27c: bf28 it cs d27e: f04f 0bff movcs.w fp, #255 ; 0xff uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); d282: 4b3a ldr r3, [pc, #232] ; (d36c ) d284: 4798 blx r3 d286: 9009 str r0, [sp, #36] ; 0x24 d288: 9a06 ldr r2, [sp, #24] d28a: 1e53 subs r3, r2, #1 d28c: 1dd0 adds r0, r2, #7 uint8_t * d8 = (uint8_t *)dst; d28e: aa16 add r2, sp, #88 ; 0x58 *d8 = *s8; d290: f813 1f01 ldrb.w r1, [r3, #1]! d294: f802 1b01 strb.w r1, [r2], #1 while(len) { d298: 4283 cmp r3, r0 d29a: d1f9 bne.n d290 area_inner.x1 -= dsc->outline_pad; d29c: f8ba 501a ldrh.w r5, [sl, #26] d2a0: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 d2a4: 1b5b subs r3, r3, r5 d2a6: b29b uxth r3, r3 d2a8: 9306 str r3, [sp, #24] d2aa: f8ad 3058 strh.w r3, [sp, #88] ; 0x58 area_inner.y1 -= dsc->outline_pad; d2ae: f8bd 305a ldrh.w r3, [sp, #90] ; 0x5a d2b2: 1b5b subs r3, r3, r5 d2b4: b29b uxth r3, r3 d2b6: 9307 str r3, [sp, #28] d2b8: f8ad 305a strh.w r3, [sp, #90] ; 0x5a area_inner.x2 += dsc->outline_pad; d2bc: f8bd 605c ldrh.w r6, [sp, #92] ; 0x5c d2c0: 442e add r6, r5 d2c2: b2b6 uxth r6, r6 d2c4: f8ad 605c strh.w r6, [sp, #92] ; 0x5c area_inner.y2 += dsc->outline_pad; d2c8: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e d2cc: 441d add r5, r3 d2ce: b2ad uxth r5, r5 d2d0: f8ad 505e strh.w r5, [sp, #94] ; 0x5e int32_t rin = dsc->radius; d2d4: f9ba 3000 ldrsh.w r3, [sl] d2d8: 9308 str r3, [sp, #32] int32_t rout = rin + dsc->outline_width; d2da: f9ba 3018 ldrsh.w r3, [sl, #24] d2de: 9305 str r3, [sp, #20] d2e0: f10d 0257 add.w r2, sp, #87 ; 0x57 uint8_t * d8 = (uint8_t *)dst; d2e4: ab18 add r3, sp, #96 ; 0x60 while(len) { d2e6: a81a add r0, sp, #104 ; 0x68 *d8 = *s8; d2e8: f812 1f01 ldrb.w r1, [r2, #1]! d2ec: f803 1b01 strb.w r1, [r3], #1 while(len) { d2f0: 4283 cmp r3, r0 d2f2: d1f9 bne.n d2e8 area_outer.x1 -= dsc->outline_width; d2f4: f8bd 4014 ldrh.w r4, [sp, #20] d2f8: f8bd 9060 ldrh.w r9, [sp, #96] ; 0x60 d2fc: eba9 0904 sub.w r9, r9, r4 d300: fa1f f389 uxth.w r3, r9 d304: 930a str r3, [sp, #40] ; 0x28 d306: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 area_outer.x2 += dsc->outline_width; d30a: f8bd 7064 ldrh.w r7, [sp, #100] ; 0x64 d30e: 4427 add r7, r4 d310: b2bf uxth r7, r7 d312: f8ad 7064 strh.w r7, [sp, #100] ; 0x64 area_outer.y1 -= dsc->outline_width; d316: f8bd 8062 ldrh.w r8, [sp, #98] ; 0x62 d31a: eba8 0804 sub.w r8, r8, r4 d31e: fa1f f888 uxth.w r8, r8 d322: f8ad 8062 strh.w r8, [sp, #98] ; 0x62 area_outer.y2 += dsc->outline_width; d326: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 d32a: 441c add r4, r3 d32c: b2a4 uxth r4, r4 d32e: f8ad 4066 strh.w r4, [sp, #102] ; 0x66 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); d332: 4b0c ldr r3, [pc, #48] ; (d364 ) d334: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); d336: 4b0c ldr r3, [pc, #48] ; (d368 ) d338: 4798 blx r3 d33a: 4681 mov r9, r0 is_common = _lv_area_intersect(&draw_area, &area_outer, clip); d33c: 9a04 ldr r2, [sp, #16] d33e: a918 add r1, sp, #96 ; 0x60 d340: a81a add r0, sp, #104 ; 0x68 d342: 4b04 ldr r3, [pc, #16] ; (d354 ) d344: 4798 blx r3 if(is_common == false) return; d346: 2800 cmp r0, #0 d348: f041 8044 bne.w e3d4 } d34c: b031 add sp, #196 ; 0xc4 d34e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} d352: bf00 nop d354: 00011501 .word 0x00011501 d358: 00007739 .word 0x00007739 d35c: 0000be55 .word 0x0000be55 d360: 00012559 .word 0x00012559 d364: 00005f51 .word 0x00005f51 d368: 00010fc5 .word 0x00010fc5 d36c: 0000bead .word 0x0000bead d370: 00012a69 .word 0x00012a69 d374: 0000be05 .word 0x0000be05 draw_area.x1 -= disp_area->x1; d378: f8b8 1010 ldrh.w r1, [r8, #16] d37c: f8bd 3070 ldrh.w r3, [sp, #112] ; 0x70 d380: 1a5b subs r3, r3, r1 d382: b29a uxth r2, r3 d384: f8ad 2070 strh.w r2, [sp, #112] ; 0x70 draw_area.y1 -= disp_area->y1; d388: f8b8 0012 ldrh.w r0, [r8, #18] d38c: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 d390: 1a1b subs r3, r3, r0 d392: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 draw_area.x2 -= disp_area->x1; d396: f8bd 3074 ldrh.w r3, [sp, #116] ; 0x74 d39a: 1a5b subs r3, r3, r1 d39c: b29b uxth r3, r3 d39e: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 draw_area.y2 -= disp_area->y1; d3a2: f8bd 1076 ldrh.w r1, [sp, #118] ; 0x76 d3a6: 1a09 subs r1, r1, r0 d3a8: f8ad 1076 strh.w r1, [sp, #118] ; 0x76 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); d3ac: 3301 adds r3, #1 d3ae: 1a9b subs r3, r3, r2 d3b0: b21b sxth r3, r3 d3b2: 9309 str r3, [sp, #36] ; 0x24 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); d3b4: 930a str r3, [sp, #40] ; 0x28 d3b6: 4618 mov r0, r3 d3b8: 4b93 ldr r3, [pc, #588] ; (d608 ) d3ba: 4798 blx r3 d3bc: 9005 str r0, [sp, #20] uint16_t other_mask_cnt = lv_draw_mask_get_cnt(); d3be: 4b93 ldr r3, [pc, #588] ; (d60c ) d3c0: 4798 blx r3 d3c2: b283 uxth r3, r0 d3c4: 930b str r3, [sp, #44] ; 0x2c if(other_mask_cnt) simple_mode = false; d3c6: bb43 cbnz r3, d41a else if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) simple_mode = false; d3c8: f89a 3006 ldrb.w r3, [sl, #6] d3cc: 3b02 subs r3, #2 d3ce: bf18 it ne d3d0: 2301 movne r3, #1 d3d2: 9307 str r3, [sp, #28] d3d4: f8bd 506c ldrh.w r5, [sp, #108] ; 0x6c d3d8: 3501 adds r5, #1 d3da: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 d3de: 1aed subs r5, r5, r3 d3e0: b22d sxth r5, r5 int32_t coords_w = lv_area_get_width(&coords_bg); d3e2: 462c mov r4, r5 int32_t rout = dsc->radius; d3e4: f9ba 2000 ldrsh.w r2, [sl] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); d3e8: f8bd 306e ldrh.w r3, [sp, #110] ; 0x6e d3ec: 3301 adds r3, #1 d3ee: f8bd 606a ldrh.w r6, [sp, #106] ; 0x6a d3f2: 1b9b subs r3, r3, r6 int32_t coords_h = lv_area_get_height(&coords_bg); d3f4: b21e sxth r6, r3 int32_t short_side = LV_MATH_MIN(coords_w, coords_h); d3f6: 4633 mov r3, r6 d3f8: 42ae cmp r6, r5 d3fa: bfa8 it ge d3fc: 462b movge r3, r5 if(rout > short_side >> 1) rout = short_side >> 1; d3fe: 105e asrs r6, r3, #1 d400: 4296 cmp r6, r2 d402: bfa8 it ge d404: 4616 movge r6, r2 if(simple_mode && rout == 0 && (dsc->bg_grad_dir == LV_GRAD_DIR_NONE)) { d406: 9b07 ldr r3, [sp, #28] d408: b1db cbz r3, d442 d40a: b9d6 cbnz r6, d442 d40c: f89a 3006 ldrb.w r3, [sl, #6] d410: b133 cbz r3, d420 int16_t mask_rout_id = LV_MASK_ID_INV; d412: f04f 33ff mov.w r3, #4294967295 d416: 930e str r3, [sp, #56] ; 0x38 d418: e021 b.n d45e if(other_mask_cnt) simple_mode = false; d41a: 2300 movs r3, #0 d41c: 9307 str r3, [sp, #28] d41e: e7d9 b.n d3d4 _lv_blend_fill(clip, &coords_bg, d420: f89a 300d ldrb.w r3, [sl, #13] d424: 9302 str r3, [sp, #8] d426: 9701 str r7, [sp, #4] d428: 2301 movs r3, #1 d42a: 9300 str r3, [sp, #0] d42c: 2300 movs r3, #0 d42e: f8ba 2002 ldrh.w r2, [sl, #2] d432: a91a add r1, sp, #104 ; 0x68 d434: 9804 ldr r0, [sp, #16] d436: 4c76 ldr r4, [pc, #472] ; (d610 ) d438: 47a0 blx r4 int16_t mask_rout_id = LV_MASK_ID_INV; d43a: f04f 33ff mov.w r3, #4294967295 d43e: 930e str r3, [sp, #56] ; 0x38 d440: e276 b.n d930 if(rout > 0) { d442: 2e00 cmp r6, #0 d444: dd32 ble.n d4ac lv_draw_mask_radius_init(&mask_rout_param, &coords_bg, rout, false); d446: 2300 movs r3, #0 d448: 4632 mov r2, r6 d44a: a91a add r1, sp, #104 ; 0x68 d44c: a829 add r0, sp, #164 ; 0xa4 d44e: f8df 91d0 ldr.w r9, [pc, #464] ; d620 d452: 47c8 blx r9 mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); d454: 2100 movs r1, #0 d456: a829 add r0, sp, #164 ; 0xa4 d458: 4b6e ldr r3, [pc, #440] ; (d614 ) d45a: 4798 blx r3 d45c: 900e str r0, [sp, #56] ; 0x38 lv_color_t grad_color = dsc->bg_color; d45e: 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) { d462: f89a 3006 ldrb.w r3, [sl, #6] d466: 2b02 cmp r3, #2 d468: d024 beq.n d4b4 lv_color_t * grad_map = NULL; d46a: 2300 movs r3, #0 d46c: 930d str r3, [sp, #52] ; 0x34 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); d46e: f9bd 206c ldrsh.w r2, [sp, #108] ; 0x6c d472: f9bd 1068 ldrsh.w r1, [sp, #104] ; 0x68 d476: 1c53 adds r3, r2, #1 d478: 1a5b subs r3, r3, r1 if(lv_area_get_width(&coords_bg) - 2 * rout > SPLIT_LIMIT) split = true; d47a: b21b sxth r3, r3 d47c: eba3 0946 sub.w r9, r3, r6, lsl #1 fill_area.x1 = coords_bg.x1; d480: f8ad 1078 strh.w r1, [sp, #120] ; 0x78 fill_area.x2 = coords_bg.x2; d484: f8ad 207c strh.w r2, [sp, #124] ; 0x7c fill_area.y1 = disp_area->y1 + draw_area.y1; d488: f9bd 2072 ldrsh.w r2, [sp, #114] ; 0x72 d48c: f8b8 3012 ldrh.w r3, [r8, #18] d490: 4413 add r3, r2 d492: b21b sxth r3, r3 d494: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fill_area.y2 = fill_area.y1; d498: f8ad 307e strh.w r3, [sp, #126] ; 0x7e for(h = draw_area.y1; h <= draw_area.y2; h++) { d49c: 4615 mov r5, r2 d49e: f9bd 3076 ldrsh.w r3, [sp, #118] ; 0x76 d4a2: 429a cmp r2, r3 d4a4: f300 8237 bgt.w d916 _lv_blend_fill(clip, &fill_area2, d4a8: 9708 str r7, [sp, #32] d4aa: e0fa b.n d6a2 int16_t mask_rout_id = LV_MASK_ID_INV; d4ac: f04f 33ff mov.w r3, #4294967295 d4b0: 930e str r3, [sp, #56] ; 0x38 d4b2: e7d4 b.n d45e if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR && dsc->bg_color.full != dsc->bg_grad_color.full) { d4b4: f8ba 3004 ldrh.w r3, [sl, #4] d4b8: 459b cmp fp, r3 d4ba: f000 8089 beq.w d5d0 grad_map = _lv_mem_buf_get(coords_w * sizeof(lv_color_t)); d4be: 0068 lsls r0, r5, #1 d4c0: 4b51 ldr r3, [pc, #324] ; (d608 ) d4c2: 4798 blx r3 d4c4: 900d str r0, [sp, #52] ; 0x34 for(i = 0; i < coords_w; i++) { d4c6: 2d00 cmp r5, #0 d4c8: ddd1 ble.n d46e d4ca: f04f 0900 mov.w r9, #0 d4ce: 9608 str r6, [sp, #32] d4d0: 4606 mov r6, r0 d4d2: e01b b.n d50c if(i <= min) return dsc->bg_color; d4d4: f89a 3002 ldrb.w r3, [sl, #2] d4d8: f003 031f and.w r3, r3, #31 d4dc: f8ba 1002 ldrh.w r1, [sl, #2] d4e0: f3c1 1145 ubfx r1, r1, #5, #6 d4e4: f89a 2003 ldrb.w r2, [sl, #3] d4e8: 08d2 lsrs r2, r2, #3 grad_map[i] = grad_get(dsc, coords_w, i); d4ea: 7828 ldrb r0, [r5, #0] d4ec: f363 0004 bfi r0, r3, #0, #5 d4f0: 7028 strb r0, [r5, #0] d4f2: 882b ldrh r3, [r5, #0] d4f4: f361 134a bfi r3, r1, #5, #6 d4f8: 802b strh r3, [r5, #0] d4fa: 0a1b lsrs r3, r3, #8 d4fc: f362 03c7 bfi r3, r2, #3, #5 d500: 706b strb r3, [r5, #1] for(i = 0; i < coords_w; i++) { d502: f109 0901 add.w r9, r9, #1 d506: 3602 adds r6, #2 d508: 454c cmp r4, r9 d50a: d05f beq.n d5cc grad_map[i] = grad_get(dsc, coords_w, i); d50c: 4635 mov r5, r6 int32_t min = (dsc->bg_main_color_stop * s) >> 8; d50e: f9ba 0008 ldrsh.w r0, [sl, #8] d512: fb00 f304 mul.w r3, r0, r4 d516: 121b asrs r3, r3, #8 if(i <= min) return dsc->bg_color; d518: fa0f f189 sxth.w r1, r9 d51c: 428b cmp r3, r1 d51e: dad9 bge.n d4d4 int32_t max = (dsc->bg_grad_color_stop * s) >> 8; d520: f9ba 200a ldrsh.w r2, [sl, #10] d524: fb02 fe04 mul.w lr, r2, r4 if(i >= max) return dsc->bg_grad_color; d528: ebb1 2f2e cmp.w r1, lr, asr #8 d52c: da42 bge.n d5b4 int32_t d = dsc->bg_grad_color_stop - dsc->bg_main_color_stop; d52e: 1a12 subs r2, r2, r0 d = (s * d) >> 8; d530: fb04 f202 mul.w r2, r4, r2 i -= min; d534: eba9 0303 sub.w r3, r9, r3 lv_opa_t mix = (i * 255) / d; d538: b21b sxth r3, r3 d53a: ebc3 2303 rsb r3, r3, r3, lsl #8 d = (s * d) >> 8; d53e: 1212 asrs r2, r2, #8 lv_opa_t mix = (i * 255) / d; d540: fb93 f3f2 sdiv r3, r3, r2 d544: 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))); d546: f1c3 0eff rsb lr, r3, #255 ; 0xff d54a: f89a 2005 ldrb.w r2, [sl, #5] d54e: 08d2 lsrs r2, r2, #3 d550: f89a 1003 ldrb.w r1, [sl, #3] d554: 08c9 lsrs r1, r1, #3 d556: fb0e f101 mul.w r1, lr, r1 d55a: fb03 1202 mla r2, r3, r2, r1 d55e: eb02 2102 add.w r1, r2, r2, lsl #8 d562: eb02 12c1 add.w r2, r2, r1, lsl #7 d566: 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))); d56a: f8ba 1004 ldrh.w r1, [sl, #4] d56e: f3c1 1145 ubfx r1, r1, #5, #6 d572: f8ba 0002 ldrh.w r0, [sl, #2] d576: f3c0 1045 ubfx r0, r0, #5, #6 d57a: fb0e f000 mul.w r0, lr, r0 d57e: fb03 0101 mla r1, r3, r1, r0 d582: eb01 2001 add.w r0, r1, r1, lsl #8 d586: eb01 11c0 add.w r1, r1, r0, lsl #7 d58a: 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))); d58e: f89a 0004 ldrb.w r0, [sl, #4] d592: f000 001f and.w r0, r0, #31 d596: f89a c002 ldrb.w ip, [sl, #2] d59a: f00c 0c1f and.w ip, ip, #31 d59e: fb0e fe0c mul.w lr, lr, ip d5a2: fb03 e300 mla r3, r3, r0, lr d5a6: eb03 2003 add.w r0, r3, r3, lsl #8 d5aa: eb03 13c0 add.w r3, r3, r0, lsl #7 d5ae: f3c3 53c4 ubfx r3, r3, #23, #5 d5b2: e79a b.n d4ea if(i >= max) return dsc->bg_grad_color; d5b4: f89a 3004 ldrb.w r3, [sl, #4] d5b8: f003 031f and.w r3, r3, #31 d5bc: f8ba 1004 ldrh.w r1, [sl, #4] d5c0: f3c1 1145 ubfx r1, r1, #5, #6 d5c4: f89a 2005 ldrb.w r2, [sl, #5] d5c8: 08d2 lsrs r2, r2, #3 d5ca: e78e b.n d4ea d5cc: 9e08 ldr r6, [sp, #32] d5ce: e74e b.n d46e lv_color_t * grad_map = NULL; d5d0: 2300 movs r3, #0 d5d2: 930d str r3, [sp, #52] ; 0x34 d5d4: e74b b.n d46e _lv_memset_ff(mask_buf, draw_area_w); d5d6: 990a ldr r1, [sp, #40] ; 0x28 d5d8: 9f05 ldr r7, [sp, #20] d5da: 4638 mov r0, r7 d5dc: 4b0e ldr r3, [pc, #56] ; (d618 ) d5de: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); d5e0: f8b8 2012 ldrh.w r2, [r8, #18] d5e4: 442a add r2, r5 d5e6: f8b8 1010 ldrh.w r1, [r8, #16] d5ea: f8bd 3070 ldrh.w r3, [sp, #112] ; 0x70 d5ee: 4419 add r1, r3 d5f0: 9b09 ldr r3, [sp, #36] ; 0x24 d5f2: b212 sxth r2, r2 d5f4: b209 sxth r1, r1 d5f6: 4638 mov r0, r7 d5f8: 4f08 ldr r7, [pc, #32] ; (d61c ) d5fa: 47b8 blx r7 d5fc: 4607 mov r7, r0 if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) { d5fe: f89a 3006 ldrb.w r3, [sl, #6] d602: 2b01 cmp r3, #1 d604: d129 bne.n d65a d606: e07a b.n d6fe d608: 00012925 .word 0x00012925 d60c: 0000bead .word 0x0000bead d610: 00007739 .word 0x00007739 d614: 0000bda9 .word 0x0000bda9 d618: 00012bd5 .word 0x00012bd5 d61c: 0000be05 .word 0x0000be05 d620: 0000c015 .word 0x0000c015 _lv_memset_ff(mask_buf, draw_area_w); d624: 990a ldr r1, [sp, #40] ; 0x28 d626: 9f05 ldr r7, [sp, #20] d628: 4638 mov r0, r7 d62a: 4bb6 ldr r3, [pc, #728] ; (d904 ) d62c: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); d62e: f8b8 2012 ldrh.w r2, [r8, #18] d632: 442a add r2, r5 d634: f8b8 1010 ldrh.w r1, [r8, #16] d638: f8bd 3070 ldrh.w r3, [sp, #112] ; 0x70 d63c: 4419 add r1, r3 d63e: 9b09 ldr r3, [sp, #36] ; 0x24 d640: b212 sxth r2, r2 d642: b209 sxth r1, r1 d644: 4638 mov r0, r7 d646: 4fb0 ldr r7, [pc, #704] ; (d908 ) d648: 47b8 blx r7 d64a: 4607 mov r7, r0 if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) { d64c: f89a 3006 ldrb.w r3, [sl, #6] d650: 2b01 cmp r3, #1 d652: d054 beq.n d6fe if(simple_mode && split && d654: 9a07 ldr r2, [sp, #28] d656: 2a00 cmp r2, #0 d658: d13a bne.n d6d0 if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) { d65a: 2b02 cmp r3, #2 d65c: f000 8144 beq.w d8e8 else if(other_mask_cnt != 0 || !split) { d660: 9b0b ldr r3, [sp, #44] ; 0x2c d662: b913 cbnz r3, d66a d664: f1b9 0f32 cmp.w r9, #50 ; 0x32 d668: dc0b bgt.n d682 _lv_blend_fill(clip, &fill_area, d66a: f89a 300d ldrb.w r3, [sl, #13] d66e: 9302 str r3, [sp, #8] d670: 9b08 ldr r3, [sp, #32] d672: 9301 str r3, [sp, #4] d674: 9700 str r7, [sp, #0] d676: 9b05 ldr r3, [sp, #20] d678: 465a mov r2, fp d67a: a91e add r1, sp, #120 ; 0x78 d67c: 9804 ldr r0, [sp, #16] d67e: 4ca3 ldr r4, [pc, #652] ; (d90c ) d680: 47a0 blx r4 fill_area.y1++; d682: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a d686: 3301 adds r3, #1 d688: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fill_area.y2++; d68c: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e d690: 3301 adds r3, #1 d692: f8ad 307e strh.w r3, [sp, #126] ; 0x7e for(h = draw_area.y1; h <= draw_area.y2; h++) { d696: 3501 adds r5, #1 d698: f9bd 3076 ldrsh.w r3, [sp, #118] ; 0x76 d69c: 429d cmp r5, r3 d69e: f300 8139 bgt.w d914 int32_t y = h + vdb->area.y1; d6a2: f9b8 4012 ldrsh.w r4, [r8, #18] d6a6: 442c add r4, r5 if(y > coords_bg.y1 + rout + 1 && d6a8: f9bd 306a ldrsh.w r3, [sp, #106] ; 0x6a d6ac: 4433 add r3, r6 d6ae: 3301 adds r3, #1 d6b0: 429c cmp r4, r3 d6b2: ddb7 ble.n d624 y < coords_bg.y2 - rout - 1) { d6b4: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e d6b8: 1b9b subs r3, r3, r6 d6ba: 3b01 subs r3, #1 if(y > coords_bg.y1 + rout + 1 && d6bc: 429c cmp r4, r3 d6be: dab1 bge.n d624 if(simple_mode == false) { d6c0: 9b07 ldr r3, [sp, #28] d6c2: 2b00 cmp r3, #0 d6c4: d087 beq.n d5d6 if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) { d6c6: f89a 3006 ldrb.w r3, [sl, #6] d6ca: 2b01 cmp r3, #1 d6cc: d016 beq.n d6fc mask_res = LV_DRAW_MASK_RES_FULL_COVER; d6ce: 2701 movs r7, #1 if(simple_mode && split && d6d0: f1b9 0f32 cmp.w r9, #50 ; 0x32 d6d4: f300 8093 bgt.w d7fe if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) { d6d8: 2b02 cmp r3, #2 d6da: f000 8105 beq.w d8e8 else if(dsc->bg_grad_dir == LV_GRAD_DIR_VER) { d6de: 2b01 cmp r3, #1 d6e0: d1be bne.n d660 _lv_blend_fill(clip, &fill_area, d6e2: f89a 300d ldrb.w r3, [sl, #13] d6e6: 9302 str r3, [sp, #8] d6e8: 9b08 ldr r3, [sp, #32] d6ea: 9301 str r3, [sp, #4] d6ec: 9700 str r7, [sp, #0] d6ee: 9b05 ldr r3, [sp, #20] d6f0: 465a mov r2, fp d6f2: a91e add r1, sp, #120 ; 0x78 d6f4: 9804 ldr r0, [sp, #16] d6f6: 4c85 ldr r4, [pc, #532] ; (d90c ) d6f8: 47a0 blx r4 d6fa: e7c2 b.n d682 mask_res = LV_DRAW_MASK_RES_FULL_COVER; d6fc: 2701 movs r7, #1 if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) { d6fe: f8ba 2002 ldrh.w r2, [sl, #2] d702: f8ba 3004 ldrh.w r3, [sl, #4] d706: 429a cmp r2, r3 d708: d06f beq.n d7ea return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); d70a: f8bd 106a ldrh.w r1, [sp, #106] ; 0x6a grad_color = grad_get(dsc, lv_area_get_height(&coords_bg), y - coords_bg.y1); d70e: 1a62 subs r2, r4, r1 d710: b293 uxth r3, r2 d712: 461a mov r2, r3 d714: 930c str r3, [sp, #48] ; 0x30 int32_t min = (dsc->bg_main_color_stop * s) >> 8; d716: f9ba e008 ldrsh.w lr, [sl, #8] d71a: f8bd 306e ldrh.w r3, [sp, #110] ; 0x6e d71e: 3301 adds r3, #1 d720: 1a5b subs r3, r3, r1 d722: b21b sxth r3, r3 d724: fb03 f10e mul.w r1, r3, lr d728: 1209 asrs r1, r1, #8 if(i <= min) return dsc->bg_color; d72a: b210 sxth r0, r2 d72c: 4281 cmp r1, r0 d72e: da4b bge.n d7c8 int32_t max = (dsc->bg_grad_color_stop * s) >> 8; d730: f9ba c00a ldrsh.w ip, [sl, #10] d734: fb0c f203 mul.w r2, ip, r3 if(i >= max) return dsc->bg_grad_color; d738: ebb0 2f22 cmp.w r0, r2, asr #8 d73c: f280 80b0 bge.w d8a0 int32_t d = dsc->bg_grad_color_stop - dsc->bg_main_color_stop; d740: ebac 0e0e sub.w lr, ip, lr d = (s * d) >> 8; d744: fb03 f30e mul.w r3, r3, lr i -= min; d748: 9a0c ldr r2, [sp, #48] ; 0x30 d74a: 1a52 subs r2, r2, r1 lv_opa_t mix = (i * 255) / d; d74c: b212 sxth r2, r2 d74e: ebc2 2202 rsb r2, r2, r2, lsl #8 d = (s * d) >> 8; d752: 121b asrs r3, r3, #8 lv_opa_t mix = (i * 255) / d; d754: fb92 f3f3 sdiv r3, r2, r3 d758: 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))); d75a: f1c3 01ff rsb r1, r3, #255 ; 0xff d75e: f89a 2005 ldrb.w r2, [sl, #5] d762: 08d2 lsrs r2, r2, #3 d764: f89a 0003 ldrb.w r0, [sl, #3] d768: 08c0 lsrs r0, r0, #3 d76a: fb01 f000 mul.w r0, r1, r0 d76e: fb03 0202 mla r2, r3, r2, r0 d772: eb02 2002 add.w r0, r2, r2, lsl #8 d776: eb02 12c0 add.w r2, r2, r0, lsl #7 d77a: 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))); d77e: f8ba 0004 ldrh.w r0, [sl, #4] d782: f3c0 1045 ubfx r0, r0, #5, #6 d786: f8ba e002 ldrh.w lr, [sl, #2] d78a: f3ce 1e45 ubfx lr, lr, #5, #6 d78e: fb01 fe0e mul.w lr, r1, lr d792: fb03 e000 mla r0, r3, r0, lr d796: eb00 2e00 add.w lr, r0, r0, lsl #8 d79a: eb00 10ce add.w r0, r0, lr, lsl #7 d79e: 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))); d7a2: f89a e004 ldrb.w lr, [sl, #4] d7a6: f00e 0e1f and.w lr, lr, #31 d7aa: f89a c002 ldrb.w ip, [sl, #2] d7ae: f00c 0c1f and.w ip, ip, #31 d7b2: fb01 f10c mul.w r1, r1, ip d7b6: fb03 130e mla r3, r3, lr, r1 d7ba: eb03 2103 add.w r1, r3, r3, lsl #8 d7be: eb03 13c1 add.w r3, r3, r1, lsl #7 d7c2: f3c3 53c4 ubfx r3, r3, #23, #5 d7c6: e00a b.n d7de if(i <= min) return dsc->bg_color; d7c8: f89a 3002 ldrb.w r3, [sl, #2] d7cc: f003 031f and.w r3, r3, #31 d7d0: f8ba 0002 ldrh.w r0, [sl, #2] d7d4: f3c0 1045 ubfx r0, r0, #5, #6 d7d8: f89a 2003 ldrb.w r2, [sl, #3] d7dc: 08d2 lsrs r2, r2, #3 d7de: f363 0b04 bfi fp, r3, #0, #5 d7e2: f360 1b4a bfi fp, r0, #5, #6 d7e6: f362 2bcf bfi fp, r2, #11, #5 if(simple_mode && split && d7ea: 9b07 ldr r3, [sp, #28] d7ec: 2b00 cmp r3, #0 d7ee: f43f af78 beq.w d6e2 d7f2: f1b9 0f32 cmp.w r9, #50 ; 0x32 d7f6: bfc8 it gt d7f8: 2301 movgt r3, #1 d7fa: f77f af72 ble.w d6e2 (y < coords_bg.y1 + rout + 1 || d7fe: f9bd 206a ldrsh.w r2, [sp, #106] ; 0x6a d802: 4432 add r2, r6 d804: 3201 adds r2, #1 if(simple_mode && split && d806: 4294 cmp r4, r2 d808: db06 blt.n d818 y > coords_bg.y2 - rout - 1)) { d80a: f9bd 206e ldrsh.w r2, [sp, #110] ; 0x6e d80e: 1b92 subs r2, r2, r6 d810: 3a01 subs r2, #1 (y < coords_bg.y1 + rout + 1 || d812: 4294 cmp r4, r2 d814: f77f af60 ble.w d6d8 fill_area2.x1 = coords_bg.x1; d818: f9bd 3068 ldrsh.w r3, [sp, #104] ; 0x68 d81c: f8ad 3088 strh.w r3, [sp, #136] ; 0x88 fill_area2.x2 = coords_bg.x1 + rout - 1; d820: b2b2 uxth r2, r6 d822: 920c str r2, [sp, #48] ; 0x30 d824: 3b01 subs r3, #1 d826: 4413 add r3, r2 d828: f8ad 308c strh.w r3, [sp, #140] ; 0x8c fill_area2.y1 = fill_area.y1; d82c: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a d830: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fill_area2.y2 = fill_area.y2; d834: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e d838: f8ad 308e strh.w r3, [sp, #142] ; 0x8e _lv_blend_fill(clip, &fill_area2, d83c: f89a 300d ldrb.w r3, [sl, #13] d840: 9302 str r3, [sp, #8] d842: 9b08 ldr r3, [sp, #32] d844: 9301 str r3, [sp, #4] d846: 9700 str r7, [sp, #0] d848: 9b05 ldr r3, [sp, #20] d84a: 465a mov r2, fp d84c: a922 add r1, sp, #136 ; 0x88 d84e: 9804 ldr r0, [sp, #16] d850: 4c2e ldr r4, [pc, #184] ; (d90c ) d852: 47a0 blx r4 if(dsc->bg_grad_dir == LV_GRAD_DIR_VER) { d854: f89a 3006 ldrb.w r3, [sl, #6] d858: 2b01 cmp r3, #1 d85a: d02d beq.n d8b8 fill_area2.x1 = coords_bg.x2 - rout + 1; d85c: f9bd 306c ldrsh.w r3, [sp, #108] ; 0x6c d860: 1c5a adds r2, r3, #1 d862: 990c ldr r1, [sp, #48] ; 0x30 d864: 1a54 subs r4, r2, r1 d866: f8ad 4088 strh.w r4, [sp, #136] ; 0x88 fill_area2.x2 = coords_bg.x2; d86a: f8ad 308c strh.w r3, [sp, #140] ; 0x8c int32_t mask_ofs = (coords_bg.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); d86e: 1b9b subs r3, r3, r6 d870: 3301 adds r3, #1 d872: f9b8 2010 ldrsh.w r2, [r8, #16] d876: f9bd 1070 ldrsh.w r1, [sp, #112] ; 0x70 d87a: 440a add r2, r1 d87c: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, d87e: f89a 200d ldrb.w r2, [sl, #13] d882: 9202 str r2, [sp, #8] d884: 9a08 ldr r2, [sp, #32] d886: 9201 str r2, [sp, #4] d888: 9700 str r7, [sp, #0] d88a: 9a05 ldr r2, [sp, #20] d88c: 2b00 cmp r3, #0 d88e: bfa8 it ge d890: 18d2 addge r2, r2, r3 d892: 4613 mov r3, r2 d894: 465a mov r2, fp d896: a922 add r1, sp, #136 ; 0x88 d898: 9804 ldr r0, [sp, #16] d89a: 4c1c ldr r4, [pc, #112] ; (d90c ) d89c: 47a0 blx r4 d89e: e6f0 b.n d682 if(i >= max) return dsc->bg_grad_color; d8a0: f89a 3004 ldrb.w r3, [sl, #4] d8a4: f003 031f and.w r3, r3, #31 d8a8: f8ba 0004 ldrh.w r0, [sl, #4] d8ac: f3c0 1045 ubfx r0, r0, #5, #6 d8b0: f89a 2005 ldrb.w r2, [sl, #5] d8b4: 08d2 lsrs r2, r2, #3 d8b6: e792 b.n d7de fill_area2.x1 = coords_bg.x1 + rout; d8b8: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 d8bc: 9a0c ldr r2, [sp, #48] ; 0x30 d8be: 4413 add r3, r2 d8c0: f8ad 3088 strh.w r3, [sp, #136] ; 0x88 fill_area2.x2 = coords_bg.x2 - rout; d8c4: f8bd 306c ldrh.w r3, [sp, #108] ; 0x6c d8c8: 1a9b subs r3, r3, r2 d8ca: f8ad 308c strh.w r3, [sp, #140] ; 0x8c _lv_blend_fill(clip, &fill_area2, d8ce: f89a 300d ldrb.w r3, [sl, #13] d8d2: 9302 str r3, [sp, #8] d8d4: 9b08 ldr r3, [sp, #32] d8d6: 9301 str r3, [sp, #4] d8d8: 2301 movs r3, #1 d8da: 9300 str r3, [sp, #0] d8dc: 2300 movs r3, #0 d8de: 465a mov r2, fp d8e0: a922 add r1, sp, #136 ; 0x88 d8e2: 9804 ldr r0, [sp, #16] d8e4: 47a0 blx r4 d8e6: e7b9 b.n d85c _lv_blend_map(clip, &fill_area, grad_map, mask_buf, mask_res, opa, dsc->bg_blend_mode); d8e8: f89a 300d ldrb.w r3, [sl, #13] d8ec: 9302 str r3, [sp, #8] d8ee: 9b08 ldr r3, [sp, #32] d8f0: 9301 str r3, [sp, #4] d8f2: 9700 str r7, [sp, #0] d8f4: 9b05 ldr r3, [sp, #20] d8f6: 9a0d ldr r2, [sp, #52] ; 0x34 d8f8: a91e add r1, sp, #120 ; 0x78 d8fa: 9804 ldr r0, [sp, #16] d8fc: 4c04 ldr r4, [pc, #16] ; (d910 ) d8fe: 47a0 blx r4 d900: e6bf b.n d682 d902: bf00 nop d904: 00012bd5 .word 0x00012bd5 d908: 0000be05 .word 0x0000be05 d90c: 00007739 .word 0x00007739 d910: 00008269 .word 0x00008269 d914: 9f08 ldr r7, [sp, #32] if(dsc->bg_grad_dir == LV_GRAD_DIR_NONE && other_mask_cnt == 0 && split) { d916: f89a 3006 ldrb.w r3, [sl, #6] d91a: b923 cbnz r3, d926 d91c: 9b0b ldr r3, [sp, #44] ; 0x2c d91e: b913 cbnz r3, d926 d920: f1b9 0f32 cmp.w r9, #50 ; 0x32 d924: dc0b bgt.n d93e if(grad_map) _lv_mem_buf_release(grad_map); d926: 9b0d ldr r3, [sp, #52] ; 0x34 d928: b113 cbz r3, d930 d92a: 4618 mov r0, r3 d92c: 4bb3 ldr r3, [pc, #716] ; (dbfc ) d92e: 4798 blx r3 lv_draw_mask_remove_id(mask_rout_id); d930: 980e ldr r0, [sp, #56] ; 0x38 d932: 4bb3 ldr r3, [pc, #716] ; (dc00 ) d934: 4798 blx r3 _lv_mem_buf_release(mask_buf); d936: 9805 ldr r0, [sp, #20] d938: 4bb0 ldr r3, [pc, #704] ; (dbfc ) d93a: 4798 blx r3 d93c: e469 b.n d212 fill_area.x1 = coords_bg.x1 + rout; d93e: b2b6 uxth r6, r6 d940: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 d944: 4433 add r3, r6 d946: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area.x2 = coords_bg.x2 - rout; d94a: f8bd 306c ldrh.w r3, [sp, #108] ; 0x6c d94e: 1b9b subs r3, r3, r6 d950: f8ad 307c strh.w r3, [sp, #124] ; 0x7c fill_area.y1 = coords_bg.y1; d954: f9bd 306a ldrsh.w r3, [sp, #106] ; 0x6a d958: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fill_area.y2 = coords_bg.y1 + rout; d95c: 4433 add r3, r6 d95e: f8ad 307e strh.w r3, [sp, #126] ; 0x7e _lv_blend_fill(clip, &fill_area, d962: f89a 300d ldrb.w r3, [sl, #13] d966: 9302 str r3, [sp, #8] d968: 9701 str r7, [sp, #4] d96a: 2301 movs r3, #1 d96c: 9300 str r3, [sp, #0] d96e: 2300 movs r3, #0 d970: f8ba 2002 ldrh.w r2, [sl, #2] d974: a91e add r1, sp, #120 ; 0x78 d976: 9804 ldr r0, [sp, #16] d978: 4ca2 ldr r4, [pc, #648] ; (dc04 ) d97a: 47a0 blx r4 fill_area.y1 = coords_bg.y2 - rout; d97c: f9bd 106e ldrsh.w r1, [sp, #110] ; 0x6e d980: 1b8a subs r2, r1, r6 d982: b212 sxth r2, r2 d984: 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*/ d988: f9bd 307e ldrsh.w r3, [sp, #126] ; 0x7e d98c: 429a cmp r2, r3 d98e: bfdc itt le d990: 3301 addle r3, #1 d992: f8ad 307a strhle.w r3, [sp, #122] ; 0x7a fill_area.y2 = coords_bg.y2; d996: f8ad 107e strh.w r1, [sp, #126] ; 0x7e _lv_blend_fill(clip, &fill_area, d99a: f89a 300d ldrb.w r3, [sl, #13] d99e: 9302 str r3, [sp, #8] d9a0: 9701 str r7, [sp, #4] d9a2: 2501 movs r5, #1 d9a4: 9500 str r5, [sp, #0] d9a6: 2300 movs r3, #0 d9a8: f8ba 2002 ldrh.w r2, [sl, #2] d9ac: a91e add r1, sp, #120 ; 0x78 d9ae: f8dd 8010 ldr.w r8, [sp, #16] d9b2: 4640 mov r0, r8 d9b4: 4c93 ldr r4, [pc, #588] ; (dc04 ) d9b6: 47a0 blx r4 fill_area.x1 = coords_bg.x1; d9b8: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 d9bc: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area.x2 = coords_bg.x2; d9c0: f8bd 306c ldrh.w r3, [sp, #108] ; 0x6c d9c4: f8ad 307c strh.w r3, [sp, #124] ; 0x7c fill_area.y1 = coords_bg.y1 + rout + 1; d9c8: f8bd 306a ldrh.w r3, [sp, #106] ; 0x6a d9cc: 442b add r3, r5 d9ce: 4433 add r3, r6 d9d0: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fill_area.y2 = coords_bg.y2 - rout - 1; d9d4: f8bd 306e ldrh.w r3, [sp, #110] ; 0x6e d9d8: 3b01 subs r3, #1 d9da: 1b9e subs r6, r3, r6 d9dc: f8ad 607e strh.w r6, [sp, #126] ; 0x7e _lv_blend_fill(clip, &fill_area, d9e0: f89a 300d ldrb.w r3, [sl, #13] d9e4: 9302 str r3, [sp, #8] d9e6: 9701 str r7, [sp, #4] d9e8: 9500 str r5, [sp, #0] d9ea: 2300 movs r3, #0 d9ec: f8ba 2002 ldrh.w r2, [sl, #2] d9f0: a91e add r1, sp, #120 ; 0x78 d9f2: 4640 mov r0, r8 d9f4: 47a0 blx r4 d9f6: e796 b.n d926 lv_img_src_t src_type = lv_img_src_get_type(dsc->pattern_image); d9f8: 4b83 ldr r3, [pc, #524] ; (dc08 ) d9fa: 4798 blx r3 d9fc: 4605 mov r5, r0 if(src_type == LV_IMG_SRC_FILE || src_type == LV_IMG_SRC_VARIABLE) { d9fe: 2801 cmp r0, #1 da00: d912 bls.n da28 else if(src_type == LV_IMG_SRC_SYMBOL) { da02: 2802 cmp r0, #2 da04: d039 beq.n da7a LV_LOG_WARN("lv_img_design: image source type is unknown"); da06: 4b81 ldr r3, [pc, #516] ; (dc0c ) da08: 9300 str r3, [sp, #0] da0a: 4b81 ldr r3, [pc, #516] ; (dc10 ) da0c: f240 52ae movw r2, #1454 ; 0x5ae da10: 4980 ldr r1, [pc, #512] ; (dc14 ) da12: 2002 movs r0, #2 da14: 4c80 ldr r4, [pc, #512] ; (dc18 ) da16: 47a0 blx r4 lv_draw_img(coords, clip, NULL, NULL); da18: 2300 movs r3, #0 da1a: 461a mov r2, r3 da1c: 9904 ldr r1, [sp, #16] da1e: 9806 ldr r0, [sp, #24] da20: 4c7e ldr r4, [pc, #504] ; (dc1c ) da22: 47a0 blx r4 da24: f7ff bbfd b.w d222 lv_res_t res = lv_img_decoder_get_info(dsc->pattern_image, &header); da28: a929 add r1, sp, #164 ; 0xa4 da2a: f8da 002c ldr.w r0, [sl, #44] ; 0x2c da2e: 4b7c ldr r3, [pc, #496] ; (dc20 ) da30: 4798 blx r3 if(res != LV_RES_OK) { da32: 2801 cmp r0, #1 da34: d00a beq.n da4c LV_LOG_WARN("draw_img: can't get image info"); da36: 4b7b ldr r3, [pc, #492] ; (dc24 ) da38: 9300 str r3, [sp, #0] da3a: 4b75 ldr r3, [pc, #468] ; (dc10 ) da3c: f240 5294 movw r2, #1428 ; 0x594 da40: 4974 ldr r1, [pc, #464] ; (dc14 ) da42: 2002 movs r0, #2 da44: 4c74 ldr r4, [pc, #464] ; (dc18 ) da46: 47a0 blx r4 da48: f7ff bbeb b.w d222 img_w = header.w; da4c: 9b29 ldr r3, [sp, #164] ; 0xa4 da4e: f3c3 298a ubfx r9, r3, #10, #11 img_h = header.h; da52: f8bd 70a6 ldrh.w r7, [sp, #166] ; 0xa6 da56: f3c7 174a ubfx r7, r7, #5, #11 lv_draw_img_dsc_init(&img_dsc); da5a: a81e add r0, sp, #120 ; 0x78 da5c: 4b72 ldr r3, [pc, #456] ; (dc28 ) da5e: 4798 blx r3 img_dsc.opa = dsc->pattern_opa; da60: f89a 3036 ldrb.w r3, [sl, #54] ; 0x36 da64: f88d 3078 strb.w r3, [sp, #120] ; 0x78 img_dsc.recolor_opa = dsc->pattern_recolor_opa; da68: f89a 3037 ldrb.w r3, [sl, #55] ; 0x37 da6c: f88d 3082 strb.w r3, [sp, #130] ; 0x82 img_dsc.recolor = dsc->pattern_recolor; da70: f8ba 3034 ldrh.w r3, [sl, #52] ; 0x34 da74: f8ad 3084 strh.w r3, [sp, #132] ; 0x84 da78: e020 b.n dabc lv_draw_label_dsc_init(&label_dsc); da7a: a822 add r0, sp, #136 ; 0x88 da7c: 4b6b ldr r3, [pc, #428] ; (dc2c ) da7e: 4798 blx r3 label_dsc.color = dsc->pattern_recolor; da80: f8ba 3034 ldrh.w r3, [sl, #52] ; 0x34 da84: f8ad 3088 strh.w r3, [sp, #136] ; 0x88 label_dsc.font = dsc->pattern_font; da88: f8da 2030 ldr.w r2, [sl, #48] ; 0x30 da8c: 9223 str r2, [sp, #140] ; 0x8c label_dsc.opa = dsc->pattern_opa; da8e: f89a 3036 ldrb.w r3, [sl, #54] ; 0x36 da92: 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, da96: f9bd 3094 ldrsh.w r3, [sp, #148] ; 0x94 da9a: 2100 movs r1, #0 da9c: 9102 str r1, [sp, #8] da9e: f647 4118 movw r1, #31768 ; 0x7c18 daa2: 9101 str r1, [sp, #4] daa4: f9bd 1092 ldrsh.w r1, [sp, #146] ; 0x92 daa8: 9100 str r1, [sp, #0] daaa: f8da 102c ldr.w r1, [sl, #44] ; 0x2c daae: a829 add r0, sp, #164 ; 0xa4 dab0: 4c5f ldr r4, [pc, #380] ; (dc30 ) dab2: 47a0 blx r4 img_w = s.x; dab4: f9bd 90a4 ldrsh.w r9, [sp, #164] ; 0xa4 img_h = s.y; dab8: f9bd 70a6 ldrsh.w r7, [sp, #166] ; 0xa6 if(dsc->pattern_repeat) { dabc: f89a 3038 ldrb.w r3, [sl, #56] ; 0x38 dac0: f013 0f01 tst.w r3, #1 dac4: d13f bne.n db46 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); dac6: 9c06 ldr r4, [sp, #24] dac8: 8821 ldrh r1, [r4, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); daca: 8860 ldrh r0, [r4, #2] dacc: 88e2 ldrh r2, [r4, #6] dace: 3201 adds r2, #1 dad0: 1a12 subs r2, r2, r0 int32_t obj_h = lv_area_get_height(coords); dad2: b212 sxth r2, r2 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); dad4: 88a3 ldrh r3, [r4, #4] dad6: 3301 adds r3, #1 dad8: 1a5b subs r3, r3, r1 int32_t obj_w = lv_area_get_width(coords); dada: b21b sxth r3, r3 coords_tmp.x1 = coords->x1 + (obj_w - img_w) / 2; dadc: eba3 0309 sub.w r3, r3, r9 dae0: eb03 73d3 add.w r3, r3, r3, lsr #31 dae4: eb01 0363 add.w r3, r1, r3, asr #1 dae8: b29b uxth r3, r3 daea: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 coords_tmp.y1 = coords->y1 + (obj_h - img_h) / 2; daee: 1bd2 subs r2, r2, r7 daf0: eb02 71d2 add.w r1, r2, r2, lsr #31 daf4: eb00 0161 add.w r1, r0, r1, asr #1 daf8: b289 uxth r1, r1 dafa: f8ad 1072 strh.w r1, [sp, #114] ; 0x72 coords_tmp.x2 = coords_tmp.x1 + img_w - 1; dafe: f109 39ff add.w r9, r9, #4294967295 db02: 4499 add r9, r3 db04: f8ad 9074 strh.w r9, [sp, #116] ; 0x74 coords_tmp.y2 = coords_tmp.y1 + img_h - 1; db08: 1e7b subs r3, r7, #1 db0a: 440b add r3, r1 db0c: b29b uxth r3, r3 db0e: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 if(src_type == LV_IMG_SRC_SYMBOL) { db12: 2d02 cmp r5, #2 db14: f000 80bd beq.w dc92 if(_lv_area_is_in(&coords_tmp, coords, dsc->radius) == false) { db18: f9ba 2000 ldrsh.w r2, [sl] db1c: 9906 ldr r1, [sp, #24] db1e: a81c add r0, sp, #112 ; 0x70 db20: 4b44 ldr r3, [pc, #272] ; (dc34 ) db22: 4798 blx r3 int16_t radius_mask_id = LV_MASK_ID_INV; db24: f04f 34ff mov.w r4, #4294967295 if(_lv_area_is_in(&coords_tmp, coords, dsc->radius) == false) { db28: 2800 cmp r0, #0 db2a: f000 86d4 beq.w e8d6 else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc); db2e: ab1e add r3, sp, #120 ; 0x78 db30: f8da 202c ldr.w r2, [sl, #44] ; 0x2c db34: 9904 ldr r1, [sp, #16] db36: a81c add r0, sp, #112 ; 0x70 db38: 4d38 ldr r5, [pc, #224] ; (dc1c ) db3a: 47a8 blx r5 lv_draw_mask_remove_id(radius_mask_id); db3c: 4620 mov r0, r4 db3e: 4b30 ldr r3, [pc, #192] ; (dc00 ) db40: 4798 blx r3 db42: f7ff bb6e b.w d222 lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false); db46: 2300 movs r3, #0 db48: f9ba 2000 ldrsh.w r2, [sl] db4c: 9e06 ldr r6, [sp, #24] db4e: 4631 mov r1, r6 db50: a829 add r0, sp, #164 ; 0xa4 db52: 4c39 ldr r4, [pc, #228] ; (dc38 ) db54: 47a0 blx r4 int16_t radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL); db56: 2100 movs r1, #0 db58: a829 add r0, sp, #164 ; 0xa4 db5a: 4b38 ldr r3, [pc, #224] ; (dc3c ) db5c: 4798 blx r3 db5e: 9007 str r0, [sp, #28] db60: 88b3 ldrh r3, [r6, #4] db62: 3301 adds r3, #1 db64: 4634 mov r4, r6 db66: 8832 ldrh r2, [r6, #0] db68: 1a9b subs r3, r3, r2 int32_t ofs_x = (lv_area_get_width(coords) - (lv_area_get_width(coords) / img_w) * img_w) / 2; db6a: b21b sxth r3, r3 db6c: fb93 f2f9 sdiv r2, r3, r9 db70: fb09 3312 mls r3, r9, r2, r3 db74: eb03 73d3 add.w r3, r3, r3, lsr #31 db78: ea4f 0b63 mov.w fp, r3, asr #1 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); db7c: f9b6 1006 ldrsh.w r1, [r6, #6] db80: 8873 ldrh r3, [r6, #2] db82: 1c4a adds r2, r1, #1 db84: 1ad2 subs r2, r2, r3 int32_t ofs_y = (lv_area_get_height(coords) - (lv_area_get_height(coords) / img_h) * img_h) / 2; db86: b210 sxth r0, r2 db88: fb90 f2f7 sdiv r2, r0, r7 db8c: fb07 0212 mls r2, r7, r2, r0 db90: eb02 72d2 add.w r2, r2, r2, lsr #31 coords_tmp.y1 = coords->y1 - ofs_y; db94: eba3 0362 sub.w r3, r3, r2, asr #1 db98: b29b uxth r3, r3 db9a: b21a sxth r2, r3 db9c: f8ad 2072 strh.w r2, [sp, #114] ; 0x72 coords_tmp.y2 = coords_tmp.y1 + img_h - 1; dba0: b2bf uxth r7, r7 dba2: 1e78 subs r0, r7, #1 dba4: 4403 add r3, r0 dba6: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(; coords_tmp.y1 <= coords->y2; coords_tmp.y1 += img_h, coords_tmp.y2 += img_h) { dbaa: 4291 cmp r1, r2 dbac: db6c blt.n dc88 if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); dbae: f8df 8090 ldr.w r8, [pc, #144] ; dc40 else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc); dbb2: 4e1a ldr r6, [pc, #104] ; (dc1c ) dbb4: f8cd 9014 str.w r9, [sp, #20] dbb8: 46a1 mov r9, r4 dbba: e052 b.n dc62 if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); dbbc: 2300 movs r3, #0 dbbe: 9300 str r3, [sp, #0] dbc0: f8da 302c ldr.w r3, [sl, #44] ; 0x2c dbc4: aa22 add r2, sp, #136 ; 0x88 dbc6: 9904 ldr r1, [sp, #16] dbc8: a81c add r0, sp, #112 ; 0x70 dbca: 47c0 blx r8 for(; coords_tmp.x1 <= coords->x2; coords_tmp.x1 += img_w, coords_tmp.x2 += img_w) { dbcc: f8bd 3070 ldrh.w r3, [sp, #112] ; 0x70 dbd0: 4423 add r3, r4 dbd2: b21b sxth r3, r3 dbd4: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 dbd8: f8bd 2074 ldrh.w r2, [sp, #116] ; 0x74 dbdc: 4422 add r2, r4 dbde: f8ad 2074 strh.w r2, [sp, #116] ; 0x74 dbe2: f9b9 2004 ldrsh.w r2, [r9, #4] dbe6: 429a cmp r2, r3 dbe8: db2c blt.n dc44 if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); dbea: 2d02 cmp r5, #2 dbec: d0e6 beq.n dbbc else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc); dbee: ab1e add r3, sp, #120 ; 0x78 dbf0: f8da 202c ldr.w r2, [sl, #44] ; 0x2c dbf4: 9904 ldr r1, [sp, #16] dbf6: a81c add r0, sp, #112 ; 0x70 dbf8: 47b0 blx r6 dbfa: e7e7 b.n dbcc dbfc: 00012559 .word 0x00012559 dc00: 0000be55 .word 0x0000be55 dc04: 00007739 .word 0x00007739 dc08: 00009951 .word 0x00009951 dc0c: 000250c8 .word 0x000250c8 dc10: 00025068 .word 0x00025068 dc14: 00025078 .word 0x00025078 dc18: 00012245 .word 0x00012245 dc1c: 000096d1 .word 0x000096d1 dc20: 0000fdd5 .word 0x0000fdd5 dc24: 000250a8 .word 0x000250a8 dc28: 0000962d .word 0x0000962d dc2c: 000099b5 .word 0x000099b5 dc30: 00014065 .word 0x00014065 dc34: 00011755 .word 0x00011755 dc38: 0000c015 .word 0x0000c015 dc3c: 0000bda9 .word 0x0000bda9 dc40: 00009a0d .word 0x00009a0d for(; coords_tmp.y1 <= coords->y2; coords_tmp.y1 += img_h, coords_tmp.y2 += img_h) { dc44: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 dc48: 443b add r3, r7 dc4a: b21b sxth r3, r3 dc4c: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 dc50: f8bd 2076 ldrh.w r2, [sp, #118] ; 0x76 dc54: 443a add r2, r7 dc56: f8ad 2076 strh.w r2, [sp, #118] ; 0x76 dc5a: f9b9 2006 ldrsh.w r2, [r9, #6] dc5e: 429a cmp r2, r3 dc60: db12 blt.n dc88 coords_tmp.x1 = coords->x1 - ofs_x; dc62: f8b9 3000 ldrh.w r3, [r9] dc66: eba3 030b sub.w r3, r3, fp dc6a: b29b uxth r3, r3 dc6c: b21a sxth r2, r3 dc6e: f8ad 2070 strh.w r2, [sp, #112] ; 0x70 coords_tmp.x2 = coords_tmp.x1 + img_w - 1; dc72: f8bd 4014 ldrh.w r4, [sp, #20] dc76: 1e61 subs r1, r4, #1 dc78: 440b add r3, r1 dc7a: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 for(; coords_tmp.x1 <= coords->x2; coords_tmp.x1 += img_w, coords_tmp.x2 += img_w) { dc7e: f9b9 3004 ldrsh.w r3, [r9, #4] dc82: 4293 cmp r3, r2 dc84: dab1 bge.n dbea dc86: e7dd b.n dc44 lv_draw_mask_remove_id(radius_mask_id); dc88: 9807 ldr r0, [sp, #28] dc8a: 4b8a ldr r3, [pc, #552] ; (deb4 ) dc8c: 4798 blx r3 dc8e: f7ff bac8 b.w d222 coords_tmp.y1 += y_corr; dc92: f002 0201 and.w r2, r2, #1 dc96: 4411 add r1, r2 dc98: f8ad 1072 strh.w r1, [sp, #114] ; 0x72 coords_tmp.y2 += y_corr; dc9c: 4413 add r3, r2 dc9e: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 if(_lv_area_is_in(&coords_tmp, coords, dsc->radius) == false) { dca2: f9ba 2000 ldrsh.w r2, [sl] dca6: 4621 mov r1, r4 dca8: a81c add r0, sp, #112 ; 0x70 dcaa: 4b83 ldr r3, [pc, #524] ; (deb8 ) dcac: 4798 blx r3 dcae: b9a8 cbnz r0, dcdc lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false); dcb0: 2300 movs r3, #0 dcb2: f9ba 2000 ldrsh.w r2, [sl] dcb6: 9906 ldr r1, [sp, #24] dcb8: a829 add r0, sp, #164 ; 0xa4 dcba: 4c80 ldr r4, [pc, #512] ; (debc ) dcbc: 47a0 blx r4 radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL); dcbe: 2100 movs r1, #0 dcc0: a829 add r0, sp, #164 ; 0xa4 dcc2: 4b7f ldr r3, [pc, #508] ; (dec0 ) dcc4: 4798 blx r3 dcc6: 4604 mov r4, r0 if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); dcc8: 2300 movs r3, #0 dcca: 9300 str r3, [sp, #0] dccc: f8da 302c ldr.w r3, [sl, #44] ; 0x2c dcd0: aa22 add r2, sp, #136 ; 0x88 dcd2: 9904 ldr r1, [sp, #16] dcd4: a81c add r0, sp, #112 ; 0x70 dcd6: 4d7b ldr r5, [pc, #492] ; (dec4 ) dcd8: 47a8 blx r5 dcda: e72f b.n db3c int16_t radius_mask_id = LV_MASK_ID_INV; dcdc: f04f 34ff mov.w r4, #4294967295 dce0: e7f2 b.n dcc8 draw_area.x1 -= disp_area->x1; dce2: 8a29 ldrh r1, [r5, #16] dce4: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 dce8: 1a5b subs r3, r3, r1 dcea: b29a uxth r2, r3 dcec: f8ad 2060 strh.w r2, [sp, #96] ; 0x60 draw_area.y1 -= disp_area->y1; dcf0: 8a68 ldrh r0, [r5, #18] dcf2: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 dcf6: 1a1b subs r3, r3, r0 dcf8: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 draw_area.x2 -= disp_area->x1; dcfc: f8bd 3064 ldrh.w r3, [sp, #100] ; 0x64 dd00: 1a5b subs r3, r3, r1 dd02: b29b uxth r3, r3 dd04: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 draw_area.y2 -= disp_area->y1; dd08: f8bd 1066 ldrh.w r1, [sp, #102] ; 0x66 dd0c: 1a09 subs r1, r1, r0 dd0e: f8ad 1066 strh.w r1, [sp, #102] ; 0x66 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); dd12: 3301 adds r3, #1 dd14: 1a9b subs r3, r3, r2 dd16: b21b sxth r3, r3 dd18: 9308 str r3, [sp, #32] lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); dd1a: 9309 str r3, [sp, #36] ; 0x24 dd1c: 4618 mov r0, r3 dd1e: 4b6a ldr r3, [pc, #424] ; (dec8 ) dd20: 4798 blx r3 dd22: 4683 mov fp, r0 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); dd24: 4b69 ldr r3, [pc, #420] ; (decc ) dd26: 4798 blx r3 if(other_mask_cnt) simple_mode = false; dd28: b948 cbnz r0, dd3e else if(dsc->border_side != LV_BORDER_SIDE_FULL) simple_mode = false; dd2a: f9ba 8012 ldrsh.w r8, [sl, #18] dd2e: f1b8 0f0f cmp.w r8, #15 dd32: bf14 ite ne dd34: f04f 0800 movne.w r8, #0 dd38: f04f 0801 moveq.w r8, #1 dd3c: e001 b.n dd42 if(other_mask_cnt) simple_mode = false; dd3e: f04f 0800 mov.w r8, #0 int32_t rout = dsc->radius; dd42: f9ba 2000 ldrsh.w r2, [sl] dd46: 9e06 ldr r6, [sp, #24] dd48: 88b3 ldrh r3, [r6, #4] dd4a: 3301 adds r3, #1 dd4c: 8831 ldrh r1, [r6, #0] dd4e: 1a5b subs r3, r3, r1 int32_t coords_w = lv_area_get_width(coords); dd50: b219 sxth r1, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); dd52: 88f3 ldrh r3, [r6, #6] dd54: 3301 adds r3, #1 dd56: 8870 ldrh r0, [r6, #2] dd58: 1a1b subs r3, r3, r0 int32_t coords_h = lv_area_get_height(coords); dd5a: b21b sxth r3, r3 int32_t short_side = LV_MATH_MIN(coords_w, coords_h); dd5c: 428b cmp r3, r1 dd5e: bfa8 it ge dd60: 460b movge r3, r1 if(rout > short_side >> 1) rout = short_side >> 1; dd62: 105b asrs r3, r3, #1 dd64: 4293 cmp r3, r2 dd66: bfa8 it ge dd68: 4613 movge r3, r2 dd6a: 461a mov r2, r3 dd6c: 930a str r3, [sp, #40] ; 0x28 if(rout > 0) { dd6e: 2b00 cmp r3, #0 dd70: f340 8088 ble.w de84 lv_draw_mask_radius_init(&mask_rout_param, coords, rout, false); dd74: 2300 movs r3, #0 dd76: 4631 mov r1, r6 dd78: a822 add r0, sp, #136 ; 0x88 dd7a: 4e50 ldr r6, [pc, #320] ; (debc ) dd7c: 47b0 blx r6 mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); dd7e: 2100 movs r1, #0 dd80: a822 add r0, sp, #136 ; 0x88 dd82: 4b4f ldr r3, [pc, #316] ; (dec0 ) dd84: 4798 blx r3 dd86: 900e str r0, [sp, #56] ; 0x38 int32_t rin = rout - dsc->border_width; dd88: f9ba 6010 ldrsh.w r6, [sl, #16] dd8c: 9a06 ldr r2, [sp, #24] dd8e: 1e53 subs r3, r2, #1 dd90: 1dd0 adds r0, r2, #7 uint8_t * d8 = (uint8_t *)dst; dd92: aa1a add r2, sp, #104 ; 0x68 *d8 = *s8; dd94: f813 1f01 ldrb.w r1, [r3, #1]! dd98: f802 1b01 strb.w r1, [r2], #1 while(len) { dd9c: 4283 cmp r3, r0 dd9e: d1f9 bne.n dd94 area_small.x1 += ((dsc->border_side & LV_BORDER_SIDE_LEFT) ? dsc->border_width : - (dsc->border_width + rout)); dda0: f8bd 2068 ldrh.w r2, [sp, #104] ; 0x68 dda4: f8ba 3012 ldrh.w r3, [sl, #18] dda8: f013 0f04 tst.w r3, #4 ddac: d06e beq.n de8c ddae: b2b1 uxth r1, r6 ddb0: 440a add r2, r1 ddb2: 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)); ddb6: f8bd 206c ldrh.w r2, [sp, #108] ; 0x6c ddba: f013 0f08 tst.w r3, #8 ddbe: d06a beq.n de96 ddc0: b2b1 uxth r1, r6 ddc2: 1a52 subs r2, r2, r1 ddc4: 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)); ddc8: f8bd 206a ldrh.w r2, [sp, #106] ; 0x6a ddcc: f013 0f02 tst.w r3, #2 ddd0: d066 beq.n dea0 ddd2: b2b1 uxth r1, r6 ddd4: 440a add r2, r1 ddd6: 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)); ddda: f8bd 206e ldrh.w r2, [sp, #110] ; 0x6e ddde: f013 0f01 tst.w r3, #1 dde2: d062 beq.n deaa dde4: b2b3 uxth r3, r6 dde6: 1ad3 subs r3, r2, r3 dde8: f8ad 306e strh.w r3, [sp, #110] ; 0x6e lv_draw_mask_radius_init(&mask_rin_param, &area_small, rout - dsc->border_width, true); ddec: f8dd 9028 ldr.w r9, [sp, #40] ; 0x28 ddf0: fa1f f789 uxth.w r7, r9 ddf4: 1bba subs r2, r7, r6 ddf6: 2301 movs r3, #1 ddf8: b212 sxth r2, r2 ddfa: a91a add r1, sp, #104 ; 0x68 ddfc: a829 add r0, sp, #164 ; 0xa4 ddfe: 4e2f ldr r6, [pc, #188] ; (debc ) de00: 47b0 blx r6 int16_t mask_rin_id = lv_draw_mask_add(&mask_rin_param, NULL); de02: 2100 movs r1, #0 de04: a829 add r0, sp, #164 ; 0xa4 de06: 4b2e ldr r3, [pc, #184] ; (dec0 ) de08: 4798 blx r3 de0a: 900f str r0, [sp, #60] ; 0x3c int32_t corner_size = LV_MATH_MAX(rout, dsc->border_width - 1); de0c: f9ba 3010 ldrsh.w r3, [sl, #16] de10: 3b01 subs r3, #1 de12: 454b cmp r3, r9 de14: bfb8 it lt de16: 464b movlt r3, r9 de18: 4619 mov r1, r3 de1a: 930d str r3, [sp, #52] ; 0x34 lv_color_t color = dsc->border_color; de1c: f8ba 300e ldrh.w r3, [sl, #14] de20: f8ad 3014 strh.w r3, [sp, #20] lv_blend_mode_t blend_mode = dsc->border_blend_mode; de24: f89a 6015 ldrb.w r6, [sl, #21] if(simple_mode) { de28: f1b8 0f00 cmp.w r8, #0 de2c: f000 81bf beq.w e1ae int32_t upper_corner_end = coords->y1 - disp_area->y1 + corner_size; de30: f9b5 3012 ldrsh.w r3, [r5, #18] de34: 9806 ldr r0, [sp, #24] de36: f9b0 2002 ldrsh.w r2, [r0, #2] de3a: 1ad2 subs r2, r2, r3 de3c: 440a add r2, r1 upper_corner_end = LV_MATH_MIN(upper_corner_end, draw_area.y2); de3e: f9bd 1066 ldrsh.w r1, [sp, #102] ; 0x66 de42: 4291 cmp r1, r2 de44: bfa8 it ge de46: 4611 movge r1, r2 de48: 910b str r1, [sp, #44] ; 0x2c fill_area.x1 = coords->x1; de4a: 8802 ldrh r2, [r0, #0] de4c: f8ad 2070 strh.w r2, [sp, #112] ; 0x70 fill_area.x2 = coords->x2; de50: 8882 ldrh r2, [r0, #4] de52: f8ad 2074 strh.w r2, [sp, #116] ; 0x74 fill_area.y1 = disp_area->y1 + draw_area.y1; de56: f9bd 2062 ldrsh.w r2, [sp, #98] ; 0x62 de5a: 4413 add r3, r2 de5c: b21b sxth r3, r3 de5e: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2 = fill_area.y1; de62: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = draw_area.y1; h <= upper_corner_end; h++) { de66: 4690 mov r8, r2 de68: 9b0b ldr r3, [sp, #44] ; 0x2c de6a: 4293 cmp r3, r2 de6c: f2c0 80b3 blt.w dfd6 _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); de70: f8df 905c ldr.w r9, [pc, #92] ; ded0 de74: f8cd b01c str.w fp, [sp, #28] de78: 46b3 mov fp, r6 de7a: 4626 mov r6, r4 de7c: f8cd a030 str.w sl, [sp, #48] ; 0x30 de80: 4682 mov sl, r0 de82: e055 b.n df30 int16_t mask_rout_id = LV_MASK_ID_INV; de84: f04f 33ff mov.w r3, #4294967295 de88: 930e str r3, [sp, #56] ; 0x38 de8a: e77d b.n dd88 area_small.x1 += ((dsc->border_side & LV_BORDER_SIDE_LEFT) ? dsc->border_width : - (dsc->border_width + rout)); de8c: 990a ldr r1, [sp, #40] ; 0x28 de8e: 1871 adds r1, r6, r1 de90: 4249 negs r1, r1 de92: b289 uxth r1, r1 de94: e78c b.n ddb0 area_small.x2 -= ((dsc->border_side & LV_BORDER_SIDE_RIGHT) ? dsc->border_width : - (dsc->border_width + rout)); de96: 990a ldr r1, [sp, #40] ; 0x28 de98: 1871 adds r1, r6, r1 de9a: 4249 negs r1, r1 de9c: b289 uxth r1, r1 de9e: e790 b.n ddc2 area_small.y1 += ((dsc->border_side & LV_BORDER_SIDE_TOP) ? dsc->border_width : - (dsc->border_width + rout)); dea0: 990a ldr r1, [sp, #40] ; 0x28 dea2: 1871 adds r1, r6, r1 dea4: 4249 negs r1, r1 dea6: b289 uxth r1, r1 dea8: e794 b.n ddd4 area_small.y2 -= ((dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? dsc->border_width : - (dsc->border_width + rout)); deaa: 9b0a ldr r3, [sp, #40] ; 0x28 deac: 18f3 adds r3, r6, r3 deae: 425b negs r3, r3 deb0: b29b uxth r3, r3 deb2: e798 b.n dde6 deb4: 0000be55 .word 0x0000be55 deb8: 00011755 .word 0x00011755 debc: 0000c015 .word 0x0000c015 dec0: 0000bda9 .word 0x0000bda9 dec4: 00009a0d .word 0x00009a0d dec8: 00012925 .word 0x00012925 decc: 0000bead .word 0x0000bead ded0: 00007739 .word 0x00007739 fill_area2.x1 = coords->x2 - rout + 1; ded4: f9ba 3004 ldrsh.w r3, [sl, #4] ded8: 1c5a adds r2, r3, #1 deda: 1bd2 subs r2, r2, r7 dedc: f8ad 2078 strh.w r2, [sp, #120] ; 0x78 fill_area2.x2 = coords->x2; dee0: f8ad 307c strh.w r3, [sp, #124] ; 0x7c int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); dee4: 9a0a ldr r2, [sp, #40] ; 0x28 dee6: 1a9b subs r3, r3, r2 dee8: 3301 adds r3, #1 deea: f9b5 2010 ldrsh.w r2, [r5, #16] deee: f9bd 1060 ldrsh.w r1, [sp, #96] ; 0x60 def2: 440a add r2, r1 def4: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); def6: f8cd b008 str.w fp, [sp, #8] defa: 9601 str r6, [sp, #4] defc: 9400 str r4, [sp, #0] defe: 9a07 ldr r2, [sp, #28] df00: 2b00 cmp r3, #0 df02: bfa8 it ge df04: 18d2 addge r2, r2, r3 df06: 4613 mov r3, r2 df08: f8bd 2014 ldrh.w r2, [sp, #20] df0c: a91e add r1, sp, #120 ; 0x78 df0e: 9804 ldr r0, [sp, #16] df10: 47c8 blx r9 fill_area.y1++; df12: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 df16: 3301 adds r3, #1 df18: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2++; df1c: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 df20: 3301 adds r3, #1 df22: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = draw_area.y1; h <= upper_corner_end; h++) { df26: f108 0801 add.w r8, r8, #1 df2a: 9b0b ldr r3, [sp, #44] ; 0x2c df2c: 4543 cmp r3, r8 df2e: db4c blt.n dfca _lv_memset_ff(mask_buf, draw_area_w); df30: 9909 ldr r1, [sp, #36] ; 0x24 df32: 9c07 ldr r4, [sp, #28] df34: 4620 mov r0, r4 df36: 4bc7 ldr r3, [pc, #796] ; (e254 ) df38: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); df3a: 8a6a ldrh r2, [r5, #18] df3c: 4442 add r2, r8 df3e: 8a29 ldrh r1, [r5, #16] df40: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 df44: 4419 add r1, r3 df46: 9b08 ldr r3, [sp, #32] df48: b212 sxth r2, r2 df4a: b209 sxth r1, r1 df4c: 9407 str r4, [sp, #28] df4e: 4620 mov r0, r4 df50: 4cc1 ldr r4, [pc, #772] ; (e258 ) df52: 47a0 blx r4 df54: 4604 mov r4, r0 fill_area2.y1 = fill_area.y1; df56: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 df5a: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fill_area2.y2 = fill_area.y2; df5e: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 df62: f8ad 307e strh.w r3, [sp, #126] ; 0x7e fill_area2.x1 = coords->x1; df66: f9ba 3000 ldrsh.w r3, [sl] df6a: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = coords->x1 + rout - 1; df6e: 3b01 subs r3, #1 df70: 443b add r3, r7 df72: f8ad 307c strh.w r3, [sp, #124] ; 0x7c _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); df76: f8cd b008 str.w fp, [sp, #8] df7a: 9601 str r6, [sp, #4] df7c: 9000 str r0, [sp, #0] df7e: 9b07 ldr r3, [sp, #28] df80: f8bd 2014 ldrh.w r2, [sp, #20] df84: a91e add r1, sp, #120 ; 0x78 df86: 9804 ldr r0, [sp, #16] df88: 47c8 blx r9 if(fill_area2.y2 < coords->y1 + dsc->border_width) { df8a: f9bd 207e ldrsh.w r2, [sp, #126] ; 0x7e df8e: f9ba 3002 ldrsh.w r3, [sl, #2] df92: 990c ldr r1, [sp, #48] ; 0x30 df94: f9b1 1010 ldrsh.w r1, [r1, #16] df98: 440b add r3, r1 df9a: 429a cmp r2, r3 df9c: da9a bge.n ded4 fill_area2.x1 = coords->x1 + rout; df9e: f8ba 3000 ldrh.w r3, [sl] dfa2: 443b add r3, r7 dfa4: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = coords->x2 - rout; dfa8: f8ba 3004 ldrh.w r3, [sl, #4] dfac: 1bdb subs r3, r3, r7 dfae: 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); dfb2: f8cd b008 str.w fp, [sp, #8] dfb6: 9601 str r6, [sp, #4] dfb8: 2301 movs r3, #1 dfba: 9300 str r3, [sp, #0] dfbc: 2300 movs r3, #0 dfbe: f8bd 2014 ldrh.w r2, [sp, #20] dfc2: a91e add r1, sp, #120 ; 0x78 dfc4: 9804 ldr r0, [sp, #16] dfc6: 47c8 blx r9 dfc8: e784 b.n ded4 dfca: 4634 mov r4, r6 dfcc: 465e mov r6, fp dfce: f8dd b01c ldr.w fp, [sp, #28] dfd2: f8dd a030 ldr.w sl, [sp, #48] ; 0x30 int32_t lower_corner_end = coords->y2 - disp_area->y1 - corner_size; dfd6: f9b5 3012 ldrsh.w r3, [r5, #18] dfda: 9a06 ldr r2, [sp, #24] dfdc: f9b2 2006 ldrsh.w r2, [r2, #6] dfe0: 1ad2 subs r2, r2, r3 dfe2: 990d ldr r1, [sp, #52] ; 0x34 dfe4: 1a52 subs r2, r2, r1 lower_corner_end = LV_MATH_MAX(lower_corner_end, draw_area.y1); dfe6: f9bd 8062 ldrsh.w r8, [sp, #98] ; 0x62 dfea: 4590 cmp r8, r2 dfec: bfb8 it lt dfee: 4690 movlt r8, r2 if(lower_corner_end <= upper_corner_end) lower_corner_end = upper_corner_end + 1; dff0: 990b ldr r1, [sp, #44] ; 0x2c dff2: 4541 cmp r1, r8 dff4: bfa8 it ge dff6: f101 0801 addge.w r8, r1, #1 fill_area.y1 = disp_area->y1 + lower_corner_end; dffa: 4443 add r3, r8 dffc: b21b sxth r3, r3 dffe: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2 = fill_area.y1; e002: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = lower_corner_end; h <= draw_area.y2; h++) { e006: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66 e00a: 4598 cmp r8, r3 e00c: f300 808d bgt.w e12a _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); e010: f8df 9248 ldr.w r9, [pc, #584] ; e25c e014: f8cd b01c str.w fp, [sp, #28] e018: 46b3 mov fp, r6 e01a: 4626 mov r6, r4 e01c: f8cd a02c str.w sl, [sp, #44] ; 0x2c e020: f8dd a018 ldr.w sl, [sp, #24] e024: e02e b.n e084 fill_area2.x1 = coords->x2 - rout + 1; e026: f9ba 3004 ldrsh.w r3, [sl, #4] e02a: 1c5a adds r2, r3, #1 e02c: 1bd2 subs r2, r2, r7 e02e: f8ad 2078 strh.w r2, [sp, #120] ; 0x78 fill_area2.x2 = coords->x2; e032: f8ad 307c strh.w r3, [sp, #124] ; 0x7c int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); e036: 9a0a ldr r2, [sp, #40] ; 0x28 e038: 1a9b subs r3, r3, r2 e03a: 3301 adds r3, #1 e03c: f9b5 2010 ldrsh.w r2, [r5, #16] e040: f9bd 1060 ldrsh.w r1, [sp, #96] ; 0x60 e044: 440a add r2, r1 e046: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); e048: f8cd b008 str.w fp, [sp, #8] e04c: 9601 str r6, [sp, #4] e04e: 9400 str r4, [sp, #0] e050: 9a07 ldr r2, [sp, #28] e052: 2b00 cmp r3, #0 e054: bfa8 it ge e056: 18d2 addge r2, r2, r3 e058: 4613 mov r3, r2 e05a: f8bd 2014 ldrh.w r2, [sp, #20] e05e: a91e add r1, sp, #120 ; 0x78 e060: 9804 ldr r0, [sp, #16] e062: 47c8 blx r9 fill_area.y1++; e064: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 e068: 3301 adds r3, #1 e06a: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2++; e06e: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 e072: 3301 adds r3, #1 e074: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = lower_corner_end; h <= draw_area.y2; h++) { e078: f108 0801 add.w r8, r8, #1 e07c: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66 e080: 4598 cmp r8, r3 e082: dc4c bgt.n e11e _lv_memset_ff(mask_buf, draw_area_w); e084: 9909 ldr r1, [sp, #36] ; 0x24 e086: 9c07 ldr r4, [sp, #28] e088: 4620 mov r0, r4 e08a: 4b72 ldr r3, [pc, #456] ; (e254 ) e08c: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); e08e: 8a6a ldrh r2, [r5, #18] e090: 4442 add r2, r8 e092: 8a29 ldrh r1, [r5, #16] e094: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 e098: 4419 add r1, r3 e09a: 9b08 ldr r3, [sp, #32] e09c: b212 sxth r2, r2 e09e: b209 sxth r1, r1 e0a0: 9407 str r4, [sp, #28] e0a2: 4620 mov r0, r4 e0a4: 4c6c ldr r4, [pc, #432] ; (e258 ) e0a6: 47a0 blx r4 e0a8: 4604 mov r4, r0 fill_area2.x1 = coords->x1; e0aa: f9ba 3000 ldrsh.w r3, [sl] e0ae: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = coords->x1 + rout - 1; e0b2: 3b01 subs r3, #1 e0b4: 443b add r3, r7 e0b6: f8ad 307c strh.w r3, [sp, #124] ; 0x7c fill_area2.y1 = fill_area.y1; e0ba: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 e0be: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fill_area2.y2 = fill_area.y2; e0c2: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 e0c6: f8ad 307e strh.w r3, [sp, #126] ; 0x7e _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); e0ca: f8cd b008 str.w fp, [sp, #8] e0ce: 9601 str r6, [sp, #4] e0d0: 9000 str r0, [sp, #0] e0d2: 9b07 ldr r3, [sp, #28] e0d4: f8bd 2014 ldrh.w r2, [sp, #20] e0d8: a91e add r1, sp, #120 ; 0x78 e0da: 9804 ldr r0, [sp, #16] e0dc: 47c8 blx r9 if(fill_area2.y2 > coords->y2 - dsc->border_width) { e0de: f9bd 207e ldrsh.w r2, [sp, #126] ; 0x7e e0e2: f9ba 3006 ldrsh.w r3, [sl, #6] e0e6: 990b ldr r1, [sp, #44] ; 0x2c e0e8: f9b1 1010 ldrsh.w r1, [r1, #16] e0ec: 1a5b subs r3, r3, r1 e0ee: 429a cmp r2, r3 e0f0: dd99 ble.n e026 fill_area2.x1 = coords->x1 + rout; e0f2: f8ba 3000 ldrh.w r3, [sl] e0f6: 443b add r3, r7 e0f8: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = coords->x2 - rout; e0fc: f8ba 3004 ldrh.w r3, [sl, #4] e100: 1bdb subs r3, r3, r7 e102: 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); e106: f8cd b008 str.w fp, [sp, #8] e10a: 9601 str r6, [sp, #4] e10c: 2301 movs r3, #1 e10e: 9300 str r3, [sp, #0] e110: 2300 movs r3, #0 e112: f8bd 2014 ldrh.w r2, [sp, #20] e116: a91e add r1, sp, #120 ; 0x78 e118: 9804 ldr r0, [sp, #16] e11a: 47c8 blx r9 e11c: e783 b.n e026 e11e: 4634 mov r4, r6 e120: 465e mov r6, fp e122: f8dd b01c ldr.w fp, [sp, #28] e126: f8dd a02c ldr.w sl, [sp, #44] ; 0x2c fill_area.y1 = coords->y1 + corner_size + 1; e12a: f8bd 2034 ldrh.w r2, [sp, #52] ; 0x34 e12e: 9906 ldr r1, [sp, #24] e130: 884b ldrh r3, [r1, #2] e132: 3301 adds r3, #1 e134: 4413 add r3, r2 e136: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2 = coords->y2 - corner_size - 1; e13a: 88cb ldrh r3, [r1, #6] e13c: 3b01 subs r3, #1 e13e: 1a9b subs r3, r3, r2 e140: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 fill_area.x1 = coords->x1; e144: f9b1 3000 ldrsh.w r3, [r1] e148: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 fill_area.x2 = coords->x1 + dsc->border_width - 1; e14c: f8ba 2010 ldrh.w r2, [sl, #16] e150: 3a01 subs r2, #1 e152: 4413 add r3, r2 e154: 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); e158: 9602 str r6, [sp, #8] e15a: 9401 str r4, [sp, #4] e15c: 2701 movs r7, #1 e15e: 9700 str r7, [sp, #0] e160: 2300 movs r3, #0 e162: f8bd 9014 ldrh.w r9, [sp, #20] e166: 464a mov r2, r9 e168: a91c add r1, sp, #112 ; 0x70 e16a: f8dd 8010 ldr.w r8, [sp, #16] e16e: 4640 mov r0, r8 e170: 4d3a ldr r5, [pc, #232] ; (e25c ) e172: 47a8 blx r5 fill_area.x1 = coords->x2 - dsc->border_width + 1; e174: 9b06 ldr r3, [sp, #24] e176: f9b3 2004 ldrsh.w r2, [r3, #4] e17a: f8ba 3010 ldrh.w r3, [sl, #16] e17e: 1afb subs r3, r7, r3 e180: 4413 add r3, r2 e182: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 fill_area.x2 = coords->x2; e186: 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); e18a: 9602 str r6, [sp, #8] e18c: 9401 str r4, [sp, #4] e18e: 9700 str r7, [sp, #0] e190: 2300 movs r3, #0 e192: 464a mov r2, r9 e194: a91c add r1, sp, #112 ; 0x70 e196: 4640 mov r0, r8 e198: 47a8 blx r5 lv_draw_mask_remove_id(mask_rin_id); e19a: 980f ldr r0, [sp, #60] ; 0x3c e19c: 4c30 ldr r4, [pc, #192] ; (e260 ) e19e: 47a0 blx r4 lv_draw_mask_remove_id(mask_rout_id); e1a0: 980e ldr r0, [sp, #56] ; 0x38 e1a2: 47a0 blx r4 _lv_mem_buf_release(mask_buf); e1a4: 4658 mov r0, fp e1a6: 4b2f ldr r3, [pc, #188] ; (e264 ) e1a8: 4798 blx r3 e1aa: f7ff b854 b.w d256 fill_area.x1 = coords->x1; e1ae: 9a06 ldr r2, [sp, #24] e1b0: f9b2 1000 ldrsh.w r1, [r2] e1b4: f8ad 1070 strh.w r1, [sp, #112] ; 0x70 fill_area.x2 = coords->x2; e1b8: f9b2 2004 ldrsh.w r2, [r2, #4] e1bc: f8ad 2074 strh.w r2, [sp, #116] ; 0x74 fill_area.y1 = disp_area->y1 + draw_area.y1; e1c0: f9bd 0062 ldrsh.w r0, [sp, #98] ; 0x62 e1c4: 8a6b ldrh r3, [r5, #18] e1c6: 4403 add r3, r0 e1c8: b21b sxth r3, r3 e1ca: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2 = fill_area.y1; e1ce: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 if(dsc->border_side == LV_BORDER_SIDE_LEFT) fill_area.x2 = coords->x1 + corner_size; e1d2: f9ba 3012 ldrsh.w r3, [sl, #18] e1d6: 2b04 cmp r3, #4 e1d8: d029 beq.n e22e else if(dsc->border_side == LV_BORDER_SIDE_RIGHT) fill_area.x1 = coords->x2 - corner_size; e1da: 2b08 cmp r3, #8 e1dc: d044 beq.n e268 volatile bool top_only = false; e1de: 2200 movs r2, #0 e1e0: f88d 204e strb.w r2, [sp, #78] ; 0x4e volatile bool bottom_only = false; e1e4: f88d 204f strb.w r2, [sp, #79] ; 0x4f if(dsc->border_side == LV_BORDER_SIDE_TOP) top_only = true; e1e8: 2b02 cmp r3, #2 e1ea: d129 bne.n e240 e1ec: 2301 movs r3, #1 e1ee: f88d 304e strb.w r3, [sp, #78] ; 0x4e volatile bool normal = !top_only && !bottom_only ? true : false; e1f2: f89d 304e ldrb.w r3, [sp, #78] ; 0x4e e1f6: b91b cbnz r3, e200 e1f8: f89d 804f ldrb.w r8, [sp, #79] ; 0x4f e1fc: f088 0801 eor.w r8, r8, #1 e200: f008 0801 and.w r8, r8, #1 e204: f88d 8050 strb.w r8, [sp, #80] ; 0x50 for(h = draw_area.y1; h <= draw_area.y2; h++) { e208: 4607 mov r7, r0 e20a: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66 e20e: 4298 cmp r0, r3 e210: dcc3 bgt.n e19a _lv_memset_ff(mask_buf, draw_area_w); e212: f8df 8040 ldr.w r8, [pc, #64] ; e254 _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); e216: f8df 9044 ldr.w r9, [pc, #68] ; e25c e21a: 940a str r4, [sp, #40] ; 0x28 e21c: f8cd b01c str.w fp, [sp, #28] e220: f8dd b018 ldr.w fp, [sp, #24] e224: f8cd a02c str.w sl, [sp, #44] ; 0x2c e228: f8dd a034 ldr.w sl, [sp, #52] ; 0x34 e22c: e04e b.n e2cc if(dsc->border_side == LV_BORDER_SIDE_LEFT) fill_area.x2 = coords->x1 + corner_size; e22e: 9a0d ldr r2, [sp, #52] ; 0x34 e230: 4411 add r1, r2 e232: f8ad 1074 strh.w r1, [sp, #116] ; 0x74 volatile bool top_only = false; e236: 2200 movs r2, #0 e238: f88d 204e strb.w r2, [sp, #78] ; 0x4e volatile bool bottom_only = false; e23c: f88d 204f strb.w r2, [sp, #79] ; 0x4f if(dsc->border_side == LV_BORDER_SIDE_BOTTOM) bottom_only = true; e240: 2b01 cmp r3, #1 e242: d016 beq.n e272 if(dsc->border_side == (LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM)) { e244: 2b03 cmp r3, #3 e246: d1d4 bne.n e1f2 top_only = true; e248: 2301 movs r3, #1 e24a: f88d 304e strb.w r3, [sp, #78] ; 0x4e bottom_only = true; e24e: f88d 304f strb.w r3, [sp, #79] ; 0x4f e252: e7ce b.n e1f2 e254: 00012bd5 .word 0x00012bd5 e258: 0000be05 .word 0x0000be05 e25c: 00007739 .word 0x00007739 e260: 0000be55 .word 0x0000be55 e264: 00012559 .word 0x00012559 else if(dsc->border_side == LV_BORDER_SIDE_RIGHT) fill_area.x1 = coords->x2 - corner_size; e268: 990d ldr r1, [sp, #52] ; 0x34 e26a: 1a52 subs r2, r2, r1 e26c: f8ad 2070 strh.w r2, [sp, #112] ; 0x70 e270: e7e1 b.n e236 if(dsc->border_side == LV_BORDER_SIDE_BOTTOM) bottom_only = true; e272: f88d 304f strb.w r3, [sp, #79] ; 0x4f e276: e7bc b.n e1f2 _lv_memset_ff(mask_buf, draw_area_w); e278: 9909 ldr r1, [sp, #36] ; 0x24 e27a: 9c07 ldr r4, [sp, #28] e27c: 4620 mov r0, r4 e27e: 47c0 blx r8 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); e280: 8a6a ldrh r2, [r5, #18] e282: 443a add r2, r7 e284: 8a29 ldrh r1, [r5, #16] e286: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 e28a: 4419 add r1, r3 e28c: 9b08 ldr r3, [sp, #32] e28e: b212 sxth r2, r2 e290: b209 sxth r1, r1 e292: 9407 str r4, [sp, #28] e294: 4620 mov r0, r4 e296: 4c98 ldr r4, [pc, #608] ; (e4f8 ) e298: 47a0 blx r4 _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); e29a: 9602 str r6, [sp, #8] e29c: 9a0a ldr r2, [sp, #40] ; 0x28 e29e: 9201 str r2, [sp, #4] e2a0: 9000 str r0, [sp, #0] e2a2: 9b07 ldr r3, [sp, #28] e2a4: f8bd 2014 ldrh.w r2, [sp, #20] e2a8: a91c add r1, sp, #112 ; 0x70 e2aa: 9804 ldr r0, [sp, #16] e2ac: 47c8 blx r9 fill_area.y1++; e2ae: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 e2b2: 3301 adds r3, #1 e2b4: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2++; e2b8: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 e2bc: 3301 adds r3, #1 e2be: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = draw_area.y1; h <= draw_area.y2; h++) { e2c2: 3701 adds r7, #1 e2c4: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66 e2c8: 429f cmp r7, r3 e2ca: dc1a bgt.n e302 if(normal || e2cc: f89d 3050 ldrb.w r3, [sp, #80] ; 0x50 e2d0: 2b00 cmp r3, #0 e2d2: d1d1 bne.n e278 (top_only && fill_area.y1 <= coords->y1 + corner_size) || e2d4: f89d 304e ldrb.w r3, [sp, #78] ; 0x4e if(normal || e2d8: b133 cbz r3, e2e8 (top_only && fill_area.y1 <= coords->y1 + corner_size) || e2da: f9bd 2072 ldrsh.w r2, [sp, #114] ; 0x72 e2de: f9bb 3002 ldrsh.w r3, [fp, #2] e2e2: 4453 add r3, sl e2e4: 429a cmp r2, r3 e2e6: ddc7 ble.n e278 (bottom_only && fill_area.y1 >= coords->y2 - corner_size)) { e2e8: f89d 304f ldrb.w r3, [sp, #79] ; 0x4f (top_only && fill_area.y1 <= coords->y1 + corner_size) || e2ec: 2b00 cmp r3, #0 e2ee: d0de beq.n e2ae (bottom_only && fill_area.y1 >= coords->y2 - corner_size)) { e2f0: f9bd 2072 ldrsh.w r2, [sp, #114] ; 0x72 e2f4: f9bb 3006 ldrsh.w r3, [fp, #6] e2f8: eba3 030a sub.w r3, r3, sl e2fc: 429a cmp r2, r3 e2fe: dbd6 blt.n e2ae e300: e7ba b.n e278 e302: f8dd b01c ldr.w fp, [sp, #28] e306: f8dd a02c ldr.w sl, [sp, #44] ; 0x2c e30a: e746 b.n e19a 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, e30c: f9ba 304c ldrsh.w r3, [sl, #76] ; 0x4c e310: 2400 movs r4, #0 e312: 9402 str r4, [sp, #8] e314: f647 4218 movw r2, #31768 ; 0x7c18 e318: 9201 str r2, [sp, #4] e31a: f9ba 204e ldrsh.w r2, [sl, #78] ; 0x4e e31e: 9200 str r2, [sp, #0] e320: f8da 2040 ldr.w r2, [sl, #64] ; 0x40 e324: a81c add r0, sp, #112 ; 0x70 e326: 4d75 ldr r5, [pc, #468] ; (e4fc ) e328: 47a8 blx r5 LV_TXT_FLAG_NONE); lv_area_t value_area; value_area.x1 = 0; e32a: f8ad 4088 strh.w r4, [sp, #136] ; 0x88 value_area.y1 = 0; e32e: f8ad 408a strh.w r4, [sp, #138] ; 0x8a value_area.x2 = s.x - 1; e332: f8bd 3070 ldrh.w r3, [sp, #112] ; 0x70 e336: 3b01 subs r3, #1 e338: f8ad 308c strh.w r3, [sp, #140] ; 0x8c value_area.y2 = s.y - 1; e33c: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 e340: 3b01 subs r3, #1 e342: f8ad 308e strh.w r3, [sp, #142] ; 0x8e lv_point_t p_align; _lv_area_align(coords, &value_area, dsc->value_align, &p_align); e346: ab1e add r3, sp, #120 ; 0x78 e348: f89a 2050 ldrb.w r2, [sl, #80] ; 0x50 e34c: a922 add r1, sp, #136 ; 0x88 e34e: 9806 ldr r0, [sp, #24] e350: 4d6b ldr r5, [pc, #428] ; (e500 ) e352: 47a8 blx r5 value_area.x1 += p_align.x + dsc->value_ofs_x; e354: f8bd 2078 ldrh.w r2, [sp, #120] ; 0x78 e358: f8ba 3048 ldrh.w r3, [sl, #72] ; 0x48 e35c: 441a add r2, r3 e35e: b292 uxth r2, r2 e360: f8bd 3088 ldrh.w r3, [sp, #136] ; 0x88 e364: 4413 add r3, r2 e366: f8ad 3088 strh.w r3, [sp, #136] ; 0x88 value_area.y1 += p_align.y + dsc->value_ofs_y; e36a: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a e36e: f8ba 104a ldrh.w r1, [sl, #74] ; 0x4a e372: 440b add r3, r1 e374: b29b uxth r3, r3 e376: f8bd 108a ldrh.w r1, [sp, #138] ; 0x8a e37a: 4419 add r1, r3 e37c: f8ad 108a strh.w r1, [sp, #138] ; 0x8a value_area.x2 += p_align.x + dsc->value_ofs_x; e380: f8bd 108c ldrh.w r1, [sp, #140] ; 0x8c e384: 440a add r2, r1 e386: f8ad 208c strh.w r2, [sp, #140] ; 0x8c value_area.y2 += p_align.y + dsc->value_ofs_y; e38a: f8bd 208e ldrh.w r2, [sp, #142] ; 0x8e e38e: 4413 add r3, r2 e390: f8ad 308e strh.w r3, [sp, #142] ; 0x8e lv_draw_label_dsc_t label_dsc; lv_draw_label_dsc_init(&label_dsc); e394: a829 add r0, sp, #164 ; 0xa4 e396: 4b5b ldr r3, [pc, #364] ; (e504 ) e398: 4798 blx r3 label_dsc.font = dsc->value_font; e39a: f8da 3040 ldr.w r3, [sl, #64] ; 0x40 e39e: 932a str r3, [sp, #168] ; 0xa8 label_dsc.letter_space = dsc->value_letter_space; e3a0: f8ba 304c ldrh.w r3, [sl, #76] ; 0x4c e3a4: f8ad 30b0 strh.w r3, [sp, #176] ; 0xb0 label_dsc.line_space = dsc->value_line_space; e3a8: f8ba 304e ldrh.w r3, [sl, #78] ; 0x4e e3ac: f8ad 30ae strh.w r3, [sp, #174] ; 0xae label_dsc.color = dsc->value_color; e3b0: f8ba 3046 ldrh.w r3, [sl, #70] ; 0x46 e3b4: f8ad 30a4 strh.w r3, [sp, #164] ; 0xa4 label_dsc.opa = dsc->value_opa; e3b8: f89a 3044 ldrb.w r3, [sl, #68] ; 0x44 e3bc: f88d 30ac strb.w r3, [sp, #172] ; 0xac lv_draw_label(&value_area, clip, &label_dsc, dsc->value_str, NULL); e3c0: 9400 str r4, [sp, #0] e3c2: f8da 303c ldr.w r3, [sl, #60] ; 0x3c e3c6: aa29 add r2, sp, #164 ; 0xa4 e3c8: 9904 ldr r1, [sp, #16] e3ca: a822 add r0, sp, #136 ; 0x88 e3cc: 4c4e ldr r4, [pc, #312] ; (e508 ) e3ce: 47a0 blx r4 e3d0: f7fe bf49 b.w d266 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); e3d4: 1c72 adds r2, r6, #1 e3d6: 9b06 ldr r3, [sp, #24] e3d8: 1ad2 subs r2, r2, r3 int32_t inner_w = lv_area_get_width(&area_inner); e3da: b212 sxth r2, r2 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); e3dc: 1c6b adds r3, r5, #1 e3de: 9907 ldr r1, [sp, #28] e3e0: 1a5b subs r3, r3, r1 int32_t inner_h = lv_area_get_height(&area_inner); e3e2: b21b sxth r3, r3 int32_t short_side = LV_MATH_MIN(inner_w, inner_h); e3e4: 429a cmp r2, r3 e3e6: bfa8 it ge e3e8: 461a movge r2, r3 if(rin > short_side >> 1) rin = short_side >> 1; e3ea: 1052 asrs r2, r2, #1 e3ec: 9b08 ldr r3, [sp, #32] e3ee: 429a cmp r2, r3 e3f0: bfa8 it ge e3f2: 461a movge r2, r3 int32_t rout = rin + dsc->outline_width; e3f4: 9b05 ldr r3, [sp, #20] e3f6: 4413 add r3, r2 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); e3f8: 3701 adds r7, #1 e3fa: 990a ldr r1, [sp, #40] ; 0x28 e3fc: 1a79 subs r1, r7, r1 int32_t coords_out_w = lv_area_get_width(&area_outer); e3fe: b208 sxth r0, r1 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); e400: 1c61 adds r1, r4, #1 e402: eba1 0108 sub.w r1, r1, r8 int32_t coords_out_h = lv_area_get_height(&area_outer); e406: b209 sxth r1, r1 short_side = LV_MATH_MIN(coords_out_w, coords_out_h); e408: 4281 cmp r1, r0 e40a: bfa8 it ge e40c: 4601 movge r1, r0 if(rout > short_side >> 1) rout = short_side >> 1; e40e: 1049 asrs r1, r1, #1 e410: 4299 cmp r1, r3 e412: bfa8 it ge e414: 4619 movge r1, r3 e416: 460f mov r7, r1 e418: 9106 str r1, [sp, #24] draw_area.x1 -= disp_area->x1; e41a: f8b9 0010 ldrh.w r0, [r9, #16] e41e: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 e422: 1a1b subs r3, r3, r0 e424: b299 uxth r1, r3 e426: f8ad 1068 strh.w r1, [sp, #104] ; 0x68 draw_area.y1 -= disp_area->y1; e42a: f8b9 4012 ldrh.w r4, [r9, #18] e42e: f8bd 306a ldrh.w r3, [sp, #106] ; 0x6a e432: 1b1b subs r3, r3, r4 e434: f8ad 306a strh.w r3, [sp, #106] ; 0x6a draw_area.x2 -= disp_area->x1; e438: f8bd 306c ldrh.w r3, [sp, #108] ; 0x6c e43c: 1a1b subs r3, r3, r0 e43e: b29b uxth r3, r3 e440: f8ad 306c strh.w r3, [sp, #108] ; 0x6c draw_area.y2 -= disp_area->y1; e444: f8bd 006e ldrh.w r0, [sp, #110] ; 0x6e e448: 1b00 subs r0, r0, r4 e44a: f8ad 006e strh.w r0, [sp, #110] ; 0x6e return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); e44e: 3301 adds r3, #1 e450: 1a5b subs r3, r3, r1 e452: b21b sxth r3, r3 e454: 461e mov r6, r3 e456: 9307 str r3, [sp, #28] lv_draw_mask_radius_init(&mask_rin_param, &area_inner, rin, true); e458: 2301 movs r3, #1 e45a: a916 add r1, sp, #88 ; 0x58 e45c: a822 add r0, sp, #136 ; 0x88 e45e: 4d2b ldr r5, [pc, #172] ; (e50c ) e460: 47a8 blx r5 int16_t mask_rin_id = lv_draw_mask_add(&mask_rin_param, NULL); e462: 2100 movs r1, #0 e464: a822 add r0, sp, #136 ; 0x88 e466: 4c2a ldr r4, [pc, #168] ; (e510 ) e468: 47a0 blx r4 e46a: 900c str r0, [sp, #48] ; 0x30 lv_draw_mask_radius_init(&mask_rout_param, &area_outer, rout, false); e46c: 2300 movs r3, #0 e46e: b23a sxth r2, r7 e470: a918 add r1, sp, #96 ; 0x60 e472: a829 add r0, sp, #164 ; 0xa4 e474: 47a8 blx r5 int16_t mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); e476: 2100 movs r1, #0 e478: a829 add r0, sp, #164 ; 0xa4 e47a: 47a0 blx r4 e47c: 900d str r0, [sp, #52] ; 0x34 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); e47e: 9608 str r6, [sp, #32] e480: 4630 mov r0, r6 e482: 4b24 ldr r3, [pc, #144] ; (e514 ) e484: 4798 blx r3 e486: 900b str r0, [sp, #44] ; 0x2c int32_t corner_size = LV_MATH_MAX(rout, dsc->outline_width - 1); e488: f9ba 3018 ldrsh.w r3, [sl, #24] lv_color_t color = dsc->outline_color; e48c: f8ba 2016 ldrh.w r2, [sl, #22] e490: f8ad 2014 strh.w r2, [sp, #20] lv_blend_mode_t blend_mode = dsc->outline_blend_mode; e494: f89a 501d ldrb.w r5, [sl, #29] if(simple_mode) { e498: 9a09 ldr r2, [sp, #36] ; 0x24 e49a: 2a00 cmp r2, #0 e49c: f040 81a6 bne.w e7ec int32_t corner_size = LV_MATH_MAX(rout, dsc->outline_width - 1); e4a0: 3b01 subs r3, #1 e4a2: 42bb cmp r3, r7 e4a4: bfb8 it lt e4a6: 463b movlt r3, r7 e4a8: 4619 mov r1, r3 e4aa: 930e str r3, [sp, #56] ; 0x38 int32_t upper_corner_end = area_outer.y1 - disp_area->y1 + corner_size; e4ac: f9b9 3012 ldrsh.w r3, [r9, #18] e4b0: f9bd 2062 ldrsh.w r2, [sp, #98] ; 0x62 e4b4: 1ad2 subs r2, r2, r3 e4b6: 440a add r2, r1 e4b8: 4611 mov r1, r2 e4ba: 9209 str r2, [sp, #36] ; 0x24 fill_area.x1 = area_outer.x1; e4bc: f8bd 2060 ldrh.w r2, [sp, #96] ; 0x60 e4c0: f8ad 2070 strh.w r2, [sp, #112] ; 0x70 fill_area.x2 = area_outer.x2; e4c4: f8bd 2064 ldrh.w r2, [sp, #100] ; 0x64 e4c8: f8ad 2074 strh.w r2, [sp, #116] ; 0x74 fill_area.y1 = disp_area->y1 + draw_area.y1; e4cc: f9bd 206a ldrsh.w r2, [sp, #106] ; 0x6a e4d0: 4413 add r3, r2 e4d2: b21b sxth r3, r3 e4d4: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2 = fill_area.y1; e4d8: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = draw_area.y1; h <= upper_corner_end; h++) { e4dc: 4616 mov r6, r2 e4de: 4291 cmp r1, r2 e4e0: f2c0 809d blt.w e61e _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); e4e4: f8df 8030 ldr.w r8, [pc, #48] ; e518 e4e8: 462b mov r3, r5 e4ea: 465d mov r5, fp e4ec: f8cd a028 str.w sl, [sp, #40] ; 0x28 e4f0: 4682 mov sl, r0 e4f2: 469b mov fp, r3 e4f4: e03f b.n e576 e4f6: bf00 nop e4f8: 0000be05 .word 0x0000be05 e4fc: 00014065 .word 0x00014065 e500: 0001180d .word 0x0001180d e504: 000099b5 .word 0x000099b5 e508: 00009a0d .word 0x00009a0d e50c: 0000c015 .word 0x0000c015 e510: 0000bda9 .word 0x0000bda9 e514: 00012925 .word 0x00012925 e518: 00007739 .word 0x00007739 fill_area2.x1 = area_outer.x2 - rout + 1; e51c: f9bd 3064 ldrsh.w r3, [sp, #100] ; 0x64 e520: 1c5a adds r2, r3, #1 e522: 1b14 subs r4, r2, r4 e524: f8ad 4078 strh.w r4, [sp, #120] ; 0x78 fill_area2.x2 = area_outer.x2; e528: f8ad 307c strh.w r3, [sp, #124] ; 0x7c int32_t mask_ofs = (area_outer.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); e52c: 9a06 ldr r2, [sp, #24] e52e: 1a9b subs r3, r3, r2 e530: 3301 adds r3, #1 e532: f9b9 2010 ldrsh.w r2, [r9, #16] e536: f9bd 1068 ldrsh.w r1, [sp, #104] ; 0x68 e53a: 440a add r2, r1 e53c: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); e53e: f8cd b008 str.w fp, [sp, #8] e542: 9501 str r5, [sp, #4] e544: 9700 str r7, [sp, #0] e546: 2b00 cmp r3, #0 e548: bfac ite ge e54a: 4453 addge r3, sl e54c: f10a 0300 addlt.w r3, sl, #0 e550: f8bd 2014 ldrh.w r2, [sp, #20] e554: a91e add r1, sp, #120 ; 0x78 e556: 9804 ldr r0, [sp, #16] e558: 47c0 blx r8 fill_area.y1++; e55a: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 e55e: 3301 adds r3, #1 e560: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2++; e564: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 e568: 3301 adds r3, #1 e56a: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = draw_area.y1; h <= upper_corner_end; h++) { e56e: 3601 adds r6, #1 e570: 9b09 ldr r3, [sp, #36] ; 0x24 e572: 42b3 cmp r3, r6 e574: db4e blt.n e614 _lv_memset_ff(mask_buf, draw_area_w); e576: 9908 ldr r1, [sp, #32] e578: 4650 mov r0, sl e57a: 4bcc ldr r3, [pc, #816] ; (e8ac ) e57c: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); e57e: f8b9 2012 ldrh.w r2, [r9, #18] e582: 4432 add r2, r6 e584: f8b9 1010 ldrh.w r1, [r9, #16] e588: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 e58c: 4419 add r1, r3 e58e: 9b07 ldr r3, [sp, #28] e590: b212 sxth r2, r2 e592: b209 sxth r1, r1 e594: 4650 mov r0, sl e596: 4cc6 ldr r4, [pc, #792] ; (e8b0 ) e598: 47a0 blx r4 e59a: 4607 mov r7, r0 fill_area2.y1 = fill_area.y1; e59c: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 e5a0: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fill_area2.y2 = fill_area.y2; e5a4: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 e5a8: f8ad 307e strh.w r3, [sp, #126] ; 0x7e fill_area2.x1 = area_outer.x1; e5ac: f9bd 3060 ldrsh.w r3, [sp, #96] ; 0x60 e5b0: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = area_outer.x1 + rout - 1; e5b4: f8bd 4018 ldrh.w r4, [sp, #24] e5b8: 3b01 subs r3, #1 e5ba: 4423 add r3, r4 e5bc: f8ad 307c strh.w r3, [sp, #124] ; 0x7c _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); e5c0: f8cd b008 str.w fp, [sp, #8] e5c4: 9501 str r5, [sp, #4] e5c6: 9000 str r0, [sp, #0] e5c8: 4653 mov r3, sl e5ca: f8bd 2014 ldrh.w r2, [sp, #20] e5ce: a91e add r1, sp, #120 ; 0x78 e5d0: 9804 ldr r0, [sp, #16] e5d2: 47c0 blx r8 if(fill_area2.y2 < area_outer.y1 + dsc->outline_width) { e5d4: f9bd 207e ldrsh.w r2, [sp, #126] ; 0x7e e5d8: f9bd 3062 ldrsh.w r3, [sp, #98] ; 0x62 e5dc: 990a ldr r1, [sp, #40] ; 0x28 e5de: f9b1 1018 ldrsh.w r1, [r1, #24] e5e2: 440b add r3, r1 e5e4: 429a cmp r2, r3 e5e6: da99 bge.n e51c fill_area2.x1 = area_outer.x1 + rout; e5e8: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 e5ec: 4423 add r3, r4 e5ee: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = area_outer.x2 - rout; e5f2: f8bd 3064 ldrh.w r3, [sp, #100] ; 0x64 e5f6: 1b1b subs r3, r3, r4 e5f8: 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); e5fc: f8cd b008 str.w fp, [sp, #8] e600: 9501 str r5, [sp, #4] e602: 2301 movs r3, #1 e604: 9300 str r3, [sp, #0] e606: 2300 movs r3, #0 e608: f8bd 2014 ldrh.w r2, [sp, #20] e60c: a91e add r1, sp, #120 ; 0x78 e60e: 9804 ldr r0, [sp, #16] e610: 47c0 blx r8 e612: e783 b.n e51c e614: 465b mov r3, fp e616: 46ab mov fp, r5 e618: f8dd a028 ldr.w sl, [sp, #40] ; 0x28 e61c: 461d mov r5, r3 int32_t lower_corner_end = area_outer.y2 - disp_area->y1 - corner_size; e61e: f9b9 3012 ldrsh.w r3, [r9, #18] e622: f9bd 6066 ldrsh.w r6, [sp, #102] ; 0x66 e626: 1af6 subs r6, r6, r3 e628: 9a0e ldr r2, [sp, #56] ; 0x38 e62a: 1ab6 subs r6, r6, r2 if(lower_corner_end <= upper_corner_end) lower_corner_end = upper_corner_end + 1; e62c: 9909 ldr r1, [sp, #36] ; 0x24 e62e: 460a mov r2, r1 e630: 42b1 cmp r1, r6 e632: bfa4 itt ge e634: 3201 addge r2, #1 e636: 4616 movge r6, r2 fill_area.y1 = disp_area->y1 + lower_corner_end; e638: 4433 add r3, r6 e63a: b21b sxth r3, r3 e63c: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2 = fill_area.y1; e640: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = lower_corner_end; h <= draw_area.y2; h++) { e644: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e e648: 429e cmp r6, r3 e64a: f300 808c bgt.w e766 _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); e64e: f8df 8264 ldr.w r8, [pc, #612] ; e8b4 e652: 462b mov r3, r5 e654: 465d mov r5, fp e656: f8cd a024 str.w sl, [sp, #36] ; 0x24 e65a: f8dd a02c ldr.w sl, [sp, #44] ; 0x2c e65e: 469b mov fp, r3 e660: e02d b.n e6be fill_area2.x1 = area_outer.x2 - rout + 1; e662: f9bd 3064 ldrsh.w r3, [sp, #100] ; 0x64 e666: 1c5a adds r2, r3, #1 e668: 1b14 subs r4, r2, r4 e66a: f8ad 4078 strh.w r4, [sp, #120] ; 0x78 fill_area2.x2 = area_outer.x2; e66e: f8ad 307c strh.w r3, [sp, #124] ; 0x7c int32_t mask_ofs = (area_outer.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); e672: 9a06 ldr r2, [sp, #24] e674: 1a9b subs r3, r3, r2 e676: 3301 adds r3, #1 e678: f9b9 2010 ldrsh.w r2, [r9, #16] e67c: f9bd 1068 ldrsh.w r1, [sp, #104] ; 0x68 e680: 440a add r2, r1 e682: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); e684: f8cd b008 str.w fp, [sp, #8] e688: 9501 str r5, [sp, #4] e68a: 9700 str r7, [sp, #0] e68c: 2b00 cmp r3, #0 e68e: bfac ite ge e690: 4453 addge r3, sl e692: f10a 0300 addlt.w r3, sl, #0 e696: f8bd 2014 ldrh.w r2, [sp, #20] e69a: a91e add r1, sp, #120 ; 0x78 e69c: 9804 ldr r0, [sp, #16] e69e: 47c0 blx r8 fill_area.y1++; e6a0: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 e6a4: 3301 adds r3, #1 e6a6: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2++; e6aa: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 e6ae: 3301 adds r3, #1 e6b0: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = lower_corner_end; h <= draw_area.y2; h++) { e6b4: 3601 adds r6, #1 e6b6: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e e6ba: 429e cmp r6, r3 e6bc: dc4e bgt.n e75c _lv_memset_ff(mask_buf, draw_area_w); e6be: 9908 ldr r1, [sp, #32] e6c0: 4650 mov r0, sl e6c2: 4b7a ldr r3, [pc, #488] ; (e8ac ) e6c4: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); e6c6: f8b9 2012 ldrh.w r2, [r9, #18] e6ca: 4432 add r2, r6 e6cc: f8b9 1010 ldrh.w r1, [r9, #16] e6d0: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 e6d4: 4419 add r1, r3 e6d6: 9b07 ldr r3, [sp, #28] e6d8: b212 sxth r2, r2 e6da: b209 sxth r1, r1 e6dc: 4650 mov r0, sl e6de: 4c74 ldr r4, [pc, #464] ; (e8b0 ) e6e0: 47a0 blx r4 e6e2: 4607 mov r7, r0 fill_area2.x1 = area_outer.x1; e6e4: f9bd 3060 ldrsh.w r3, [sp, #96] ; 0x60 e6e8: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = area_outer.x1 + rout - 1; e6ec: f8bd 4018 ldrh.w r4, [sp, #24] e6f0: 3b01 subs r3, #1 e6f2: 4423 add r3, r4 e6f4: f8ad 307c strh.w r3, [sp, #124] ; 0x7c fill_area2.y1 = fill_area.y1; e6f8: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 e6fc: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fill_area2.y2 = fill_area.y2; e700: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 e704: f8ad 307e strh.w r3, [sp, #126] ; 0x7e _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); e708: f8cd b008 str.w fp, [sp, #8] e70c: 9501 str r5, [sp, #4] e70e: 9000 str r0, [sp, #0] e710: 4653 mov r3, sl e712: f8bd 2014 ldrh.w r2, [sp, #20] e716: a91e add r1, sp, #120 ; 0x78 e718: 9804 ldr r0, [sp, #16] e71a: 47c0 blx r8 if(fill_area2.y2 > area_outer.y2 - dsc->outline_width) { e71c: f9bd 207e ldrsh.w r2, [sp, #126] ; 0x7e e720: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66 e724: 9909 ldr r1, [sp, #36] ; 0x24 e726: f9b1 1018 ldrsh.w r1, [r1, #24] e72a: 1a5b subs r3, r3, r1 e72c: 429a cmp r2, r3 e72e: dd98 ble.n e662 fill_area2.x1 = area_outer.x1 + rout; e730: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 e734: 4423 add r3, r4 e736: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = area_outer.x2 - rout; e73a: f8bd 3064 ldrh.w r3, [sp, #100] ; 0x64 e73e: 1b1b subs r3, r3, r4 e740: 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); e744: f8cd b008 str.w fp, [sp, #8] e748: 9501 str r5, [sp, #4] e74a: 2301 movs r3, #1 e74c: 9300 str r3, [sp, #0] e74e: 2300 movs r3, #0 e750: f8bd 2014 ldrh.w r2, [sp, #20] e754: a91e add r1, sp, #120 ; 0x78 e756: 9804 ldr r0, [sp, #16] e758: 47c0 blx r8 e75a: e782 b.n e662 e75c: 465b mov r3, fp e75e: 46ab mov fp, r5 e760: f8dd a024 ldr.w sl, [sp, #36] ; 0x24 e764: 461d mov r5, r3 fill_area.y1 = area_outer.y1 + corner_size + 1; e766: f8bd 3038 ldrh.w r3, [sp, #56] ; 0x38 e76a: f8bd 2062 ldrh.w r2, [sp, #98] ; 0x62 e76e: 3201 adds r2, #1 e770: 441a add r2, r3 e772: f8ad 2072 strh.w r2, [sp, #114] ; 0x72 fill_area.y2 = area_outer.y2 - corner_size - 1; e776: f8bd 2066 ldrh.w r2, [sp, #102] ; 0x66 e77a: 3a01 subs r2, #1 e77c: 1ad3 subs r3, r2, r3 e77e: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 fill_area.x1 = area_outer.x1; e782: f9bd 3060 ldrsh.w r3, [sp, #96] ; 0x60 e786: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 fill_area.x2 = area_outer.x1 + dsc->outline_width - 1; e78a: 3b01 subs r3, #1 e78c: f8ba 2018 ldrh.w r2, [sl, #24] e790: 4413 add r3, r2 e792: 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); e796: 9502 str r5, [sp, #8] e798: f8cd b004 str.w fp, [sp, #4] e79c: 2601 movs r6, #1 e79e: 9600 str r6, [sp, #0] e7a0: 2300 movs r3, #0 e7a2: f8bd 8014 ldrh.w r8, [sp, #20] e7a6: 4642 mov r2, r8 e7a8: a91c add r1, sp, #112 ; 0x70 e7aa: 9f04 ldr r7, [sp, #16] e7ac: 4638 mov r0, r7 e7ae: 4c41 ldr r4, [pc, #260] ; (e8b4 ) e7b0: 47a0 blx r4 fill_area.x1 = area_outer.x2 - dsc->outline_width + 1; e7b2: f9bd 2064 ldrsh.w r2, [sp, #100] ; 0x64 e7b6: 1993 adds r3, r2, r6 e7b8: f8ba 1018 ldrh.w r1, [sl, #24] e7bc: 1a5b subs r3, r3, r1 e7be: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 fill_area.x2 = area_outer.x2; e7c2: 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); e7c6: 9502 str r5, [sp, #8] e7c8: f8cd b004 str.w fp, [sp, #4] e7cc: 9600 str r6, [sp, #0] e7ce: 2300 movs r3, #0 e7d0: 4642 mov r2, r8 e7d2: a91c add r1, sp, #112 ; 0x70 e7d4: 4638 mov r0, r7 e7d6: 47a0 blx r4 lv_draw_mask_remove_id(mask_rin_id); e7d8: 980c ldr r0, [sp, #48] ; 0x30 e7da: 4c37 ldr r4, [pc, #220] ; (e8b8 ) e7dc: 47a0 blx r4 lv_draw_mask_remove_id(mask_rout_id); e7de: 980d ldr r0, [sp, #52] ; 0x34 e7e0: 47a0 blx r4 _lv_mem_buf_release(mask_buf); e7e2: 980b ldr r0, [sp, #44] ; 0x2c e7e4: 4b35 ldr r3, [pc, #212] ; (e8bc ) e7e6: 4798 blx r3 e7e8: f7fe bdb0 b.w d34c fill_area.x1 = area_outer.x1; e7ec: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 e7f0: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 fill_area.x2 = area_outer.x2; e7f4: f8bd 3064 ldrh.w r3, [sp, #100] ; 0x64 e7f8: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 fill_area.y1 = disp_area->y1 + draw_area.y1; e7fc: f9bd 206a ldrsh.w r2, [sp, #106] ; 0x6a e800: f8b9 3012 ldrh.w r3, [r9, #18] e804: 4413 add r3, r2 e806: b21b sxth r3, r3 e808: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2 = fill_area.y1; e80c: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = draw_area.y1; h <= draw_area.y2; h++) { e810: 4614 mov r4, r2 e812: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e e816: 429a cmp r2, r3 e818: dcde bgt.n e7d8 _lv_memset_ff(mask_buf, draw_area_w); e81a: f8df 8090 ldr.w r8, [pc, #144] ; e8ac mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); e81e: 4f24 ldr r7, [pc, #144] ; (e8b0 ) _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); e820: 4e24 ldr r6, [pc, #144] ; (e8b4 ) e822: f8dd a02c ldr.w sl, [sp, #44] ; 0x2c e826: 462b mov r3, r5 e828: 465d mov r5, fp e82a: 469b mov fp, r3 _lv_memset_ff(mask_buf, draw_area_w); e82c: 9908 ldr r1, [sp, #32] e82e: 4650 mov r0, sl e830: 47c0 blx r8 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); e832: f8b9 2012 ldrh.w r2, [r9, #18] e836: 4422 add r2, r4 e838: f8b9 1010 ldrh.w r1, [r9, #16] e83c: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 e840: 4419 add r1, r3 e842: 9b07 ldr r3, [sp, #28] e844: b212 sxth r2, r2 e846: b209 sxth r1, r1 e848: 4650 mov r0, sl e84a: 47b8 blx r7 _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); e84c: f8cd b008 str.w fp, [sp, #8] e850: 9501 str r5, [sp, #4] e852: 9000 str r0, [sp, #0] e854: 4653 mov r3, sl e856: f8bd 2014 ldrh.w r2, [sp, #20] e85a: a91c add r1, sp, #112 ; 0x70 e85c: 9804 ldr r0, [sp, #16] e85e: 47b0 blx r6 fill_area.y1++; e860: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 e864: 3301 adds r3, #1 e866: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2++; e86a: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 e86e: 3301 adds r3, #1 e870: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = draw_area.y1; h <= draw_area.y2; h++) { e874: 3401 adds r4, #1 e876: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e e87a: 429c cmp r4, r3 e87c: ddd6 ble.n e82c e87e: e7ab b.n e7d8 _lv_mem_buf_release(mask_line); e880: 980c ldr r0, [sp, #48] ; 0x30 e882: 4b0e ldr r3, [pc, #56] ; (e8bc ) e884: 4798 blx r3 for(i = 0; i < size * size; i++) { e886: fb07 f707 mul.w r7, r7, r7 e88a: 2f00 cmp r7, #0 e88c: f43d aeec beq.w c668 e890: 980a ldr r0, [sp, #40] ; 0x28 e892: 4602 mov r2, r0 e894: 1e41 subs r1, r0, #1 e896: eb00 0047 add.w r0, r0, r7, lsl #1 res_buf[i] = (sh_buf[i] >> SHADOW_UPSACALE_SHIFT); e89a: f832 3b02 ldrh.w r3, [r2], #2 e89e: 099b lsrs r3, r3, #6 e8a0: f801 3f01 strb.w r3, [r1, #1]! for(i = 0; i < size * size; i++) { e8a4: 4290 cmp r0, r2 e8a6: d1f8 bne.n e89a e8a8: f7fd bede b.w c668 e8ac: 00012bd5 .word 0x00012bd5 e8b0: 0000be05 .word 0x0000be05 e8b4: 00007739 .word 0x00007739 e8b8: 0000be55 .word 0x0000be55 e8bc: 00012559 .word 0x00012559 lv_opa_t * mask_line = _lv_mem_buf_get(size); e8c0: 9707 str r7, [sp, #28] e8c2: 4638 mov r0, r7 e8c4: 4b0b ldr r3, [pc, #44] ; (e8f4 ) e8c6: 4798 blx r3 e8c8: 900c str r0, [sp, #48] ; 0x30 for(y = 0; y < size; y++) { e8ca: 2f00 cmp r7, #0 e8cc: ddd8 ble.n e880 e8ce: 2301 movs r3, #1 e8d0: 930b str r3, [sp, #44] ; 0x2c e8d2: f7fd be27 b.w c524 lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false); e8d6: 2300 movs r3, #0 e8d8: f9ba 2000 ldrsh.w r2, [sl] e8dc: 9906 ldr r1, [sp, #24] e8de: a829 add r0, sp, #164 ; 0xa4 e8e0: 4c05 ldr r4, [pc, #20] ; (e8f8 ) e8e2: 47a0 blx r4 radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL); e8e4: 2100 movs r1, #0 e8e6: a829 add r0, sp, #164 ; 0xa4 e8e8: 4b04 ldr r3, [pc, #16] ; (e8fc ) e8ea: 4798 blx r3 e8ec: 4604 mov r4, r0 e8ee: f7ff b91e b.w db2e e8f2: bf00 nop e8f4: 00012925 .word 0x00012925 e8f8: 0000c015 .word 0x0000c015 e8fc: 0000bda9 .word 0x0000bda9 0000e900 : * 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) { e900: b5f0 push {r4, r5, r6, r7, lr} e902: b083 sub sp, #12 lv_color_t p_color = LV_COLOR_BLACK; e904: f89d 4004 ldrb.w r4, [sp, #4] e908: f36f 0404 bfc r4, #0, #5 e90c: f88d 4004 strb.w r4, [sp, #4] e910: f8bd 4004 ldrh.w r4, [sp, #4] e914: f36f 144a bfc r4, #5, #6 e918: f8ad 4004 strh.w r4, [sp, #4] e91c: 0a24 lsrs r4, r4, #8 e91e: f36f 04c7 bfc r4, #3, #5 e922: f88d 4005 strb.w r4, [sp, #5] uint8_t * buf_u8 = (uint8_t *)dsc->data; e926: 6886 ldr r6, [r0, #8] if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED || e928: 7804 ldrb r4, [r0, #0] e92a: f004 041f and.w r4, r4, #31 e92e: 1f25 subs r5, r4, #4 e930: b2ed uxtb r5, r5 e932: 2d02 cmp r5, #2 e934: d90e bls.n e954 _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) { e936: 2c07 cmp r4, #7 e938: d028 beq.n e98c * 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) { e93a: 2c08 cmp r4, #8 e93c: d03b beq.n e9b6 * 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) { e93e: 2c09 cmp r4, #9 e940: d050 beq.n e9e4 * 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) { e942: 2c0a cmp r4, #10 e944: d066 beq.n ea14 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) { e946: 3c0b subs r4, #11 else if(dsc->header.cf == LV_IMG_CF_ALPHA_1BIT || dsc->header.cf == LV_IMG_CF_ALPHA_2BIT || e948: b2e4 uxtb r4, r4 e94a: 2c03 cmp r4, #3 p_color = color; e94c: bf98 it ls e94e: f8ad 3004 strhls.w r3, [sp, #4] e952: e017 b.n e984 e954: 4614 mov r4, r2 e956: 460f mov r7, r1 e958: 4605 mov r5, r0 uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf) >> 3; e95a: 7800 ldrb r0, [r0, #0] e95c: f000 001f and.w r0, r0, #31 e960: 4b32 ldr r3, [pc, #200] ; (ea2c ) e962: 4798 blx r3 uint32_t px = dsc->header.w * y * px_size + x * px_size; e964: 682b ldr r3, [r5, #0] e966: f3c3 238a ubfx r3, r3, #10, #11 e96a: fb04 7203 mla r2, r4, r3, r7 e96e: f3c0 00c7 ubfx r0, r0, #3, #8 e972: fb00 f202 mul.w r2, r0, r2 _lv_memcpy_small(&p_color, &buf_u8[px], sizeof(lv_color_t)); e976: 18b3 adds r3, r6, r2 *d8 = *s8; e978: 5cb2 ldrb r2, [r6, r2] e97a: f88d 2004 strb.w r2, [sp, #4] e97e: 785b ldrb r3, [r3, #1] e980: f88d 3005 strb.w r3, [sp, #5] } return p_color; } e984: f8bd 0004 ldrh.w r0, [sp, #4] e988: b003 add sp, #12 e98a: bdf0 pop {r4, r5, r6, r7, pc} p_color.full = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); e98c: f001 0307 and.w r3, r1, #7 e990: f1c3 0407 rsb r4, r3, #7 uint32_t px = ((dsc->header.w + 7) >> 3) * y + x; e994: 6803 ldr r3, [r0, #0] e996: f3c3 238a ubfx r3, r3, #10, #11 e99a: 3307 adds r3, #7 e99c: 10db asrs r3, r3, #3 p_color.full = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); e99e: fb02 6603 mla r6, r2, r3, r6 e9a2: eb06 01e1 add.w r1, r6, r1, asr #3 e9a6: 7a0b ldrb r3, [r1, #8] e9a8: 2201 movs r2, #1 e9aa: 40a2 lsls r2, r4 e9ac: 4013 ands r3, r2 e9ae: 4123 asrs r3, r4 e9b0: f8ad 3004 strh.w r3, [sp, #4] e9b4: e7e6 b.n e984 uint8_t bit = (x & 0x3) * 2; e9b6: f001 0403 and.w r4, r1, #3 p_color.full = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); e9ba: 0064 lsls r4, r4, #1 e9bc: f1c4 0406 rsb r4, r4, #6 uint32_t px = ((dsc->header.w + 3) >> 2) * y + x; e9c0: 6803 ldr r3, [r0, #0] e9c2: f3c3 238a ubfx r3, r3, #10, #11 e9c6: 3303 adds r3, #3 e9c8: 109b asrs r3, r3, #2 p_color.full = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); e9ca: fb02 6603 mla r6, r2, r3, r6 e9ce: eb06 01a1 add.w r1, r6, r1, asr #2 e9d2: 7c0b ldrb r3, [r1, #16] e9d4: 2203 movs r2, #3 e9d6: 40a2 lsls r2, r4 e9d8: 4013 ands r3, r2 e9da: fa43 f404 asr.w r4, r3, r4 e9de: f8ad 4004 strh.w r4, [sp, #4] e9e2: e7cf b.n e984 uint8_t bit = (x & 0x1) * 4; e9e4: f001 0401 and.w r4, r1, #1 p_color.full = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); e9e8: 00a4 lsls r4, r4, #2 e9ea: f1c4 0404 rsb r4, r4, #4 uint32_t px = ((dsc->header.w + 1) >> 1) * y + x; e9ee: 6803 ldr r3, [r0, #0] e9f0: f3c3 238a ubfx r3, r3, #10, #11 e9f4: 3301 adds r3, #1 e9f6: 105b asrs r3, r3, #1 p_color.full = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); e9f8: fb02 6603 mla r6, r2, r3, r6 e9fc: eb06 0161 add.w r1, r6, r1, asr #1 ea00: f891 3040 ldrb.w r3, [r1, #64] ; 0x40 ea04: 220f movs r2, #15 ea06: 40a2 lsls r2, r4 ea08: 4013 ands r3, r2 ea0a: fa43 f404 asr.w r4, r3, r4 ea0e: f8ad 4004 strh.w r4, [sp, #4] ea12: e7b7 b.n e984 uint32_t px = dsc->header.w * y + x; ea14: 6803 ldr r3, [r0, #0] ea16: f3c3 238a ubfx r3, r3, #10, #11 p_color.full = buf_u8[px]; ea1a: 4431 add r1, r6 ea1c: fb02 1103 mla r1, r2, r3, r1 ea20: f891 3400 ldrb.w r3, [r1, #1024] ; 0x400 ea24: f8ad 3004 strh.w r3, [sp, #4] ea28: e7ac b.n e984 ea2a: bf00 nop ea2c: 00009669 .word 0x00009669 0000ea30 : * @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) { ea30: b5f0 push {r4, r5, r6, r7, lr} ea32: b085 sub sp, #20 ea34: 4604 mov r4, r0 ea36: 460d mov r5, r1 ea38: 4617 mov r7, r2 uint8_t * buf_u8 = (uint8_t *)dsc->data; ea3a: 6886 ldr r6, [r0, #8] if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA) { ea3c: 7803 ldrb r3, [r0, #0] ea3e: f003 031f and.w r3, r3, #31 ea42: 2b05 cmp r3, #5 ea44: d00a beq.n ea5c 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) { ea46: 2b0b cmp r3, #11 ea48: d012 beq.n ea70 * 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) { ea4a: 2b0c cmp r3, #12 ea4c: d027 beq.n ea9e * 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) { ea4e: 2b0d cmp r3, #13 ea50: d049 beq.n eae6 * 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) { ea52: 2b0e cmp r3, #14 ea54: d064 beq.n eb20 uint32_t px = dsc->header.w * y + x; return buf_u8[px]; } return LV_OPA_COVER; ea56: 20ff movs r0, #255 ; 0xff } ea58: b005 add sp, #20 ea5a: 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; ea5c: 6802 ldr r2, [r0, #0] ea5e: f3c2 228a ubfx r2, r2, #10, #11 ea62: fb07 1502 mla r5, r7, r2, r1 return buf_u8[px + LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; ea66: eb05 0545 add.w r5, r5, r5, lsl #1 ea6a: 4435 add r5, r6 ea6c: 78a8 ldrb r0, [r5, #2] ea6e: e7f3 b.n ea58 uint8_t px_opa = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); ea70: f001 0307 and.w r3, r1, #7 ea74: f1c3 0107 rsb r1, r3, #7 uint32_t px = ((dsc->header.w + 7) >> 3) * y + x; ea78: 6802 ldr r2, [r0, #0] ea7a: f3c2 228a ubfx r2, r2, #10, #11 ea7e: 3207 adds r2, #7 ea80: 10d2 asrs r2, r2, #3 ea82: 10ed asrs r5, r5, #3 uint8_t px_opa = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); ea84: fb07 6202 mla r2, r7, r2, r6 ea88: 5d53 ldrb r3, [r2, r5] ea8a: 2201 movs r2, #1 ea8c: 408a lsls r2, r1 ea8e: 4013 ands r3, r2 ea90: 410b asrs r3, r1 return px_opa ? LV_OPA_TRANSP : LV_OPA_COVER; ea92: f013 0fff tst.w r3, #255 ; 0xff ea96: bf0c ite eq ea98: 20ff moveq r0, #255 ; 0xff ea9a: 2000 movne r0, #0 ea9c: e7dc b.n ea58 const uint8_t opa_table[4] = {0, 85, 170, 255}; /*Opacity mapping with bpp = 2*/ ea9e: 2300 movs r3, #0 eaa0: f88d 3000 strb.w r3, [sp] eaa4: 2355 movs r3, #85 ; 0x55 eaa6: f88d 3001 strb.w r3, [sp, #1] eaaa: 23aa movs r3, #170 ; 0xaa eaac: f88d 3002 strb.w r3, [sp, #2] eab0: 23ff movs r3, #255 ; 0xff eab2: f88d 3003 strb.w r3, [sp, #3] uint8_t bit = (x & 0x3) * 2; eab6: f001 0303 and.w r3, r1, #3 uint8_t px_opa = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); eaba: 005b lsls r3, r3, #1 eabc: f1c3 0106 rsb r1, r3, #6 uint32_t px = ((dsc->header.w + 3) >> 2) * y + x; eac0: 6802 ldr r2, [r0, #0] eac2: f3c2 228a ubfx r2, r2, #10, #11 eac6: 3203 adds r2, #3 eac8: 1092 asrs r2, r2, #2 eaca: 10ad asrs r5, r5, #2 uint8_t px_opa = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); eacc: fb07 6202 mla r2, r7, r2, r6 ead0: 5d53 ldrb r3, [r2, r5] ead2: 2203 movs r2, #3 ead4: 408a lsls r2, r1 ead6: 4013 ands r3, r2 ead8: 410b asrs r3, r1 return opa_table[px_opa]; eada: aa04 add r2, sp, #16 eadc: fa52 f383 uxtab r3, r2, r3 eae0: f813 0c10 ldrb.w r0, [r3, #-16] eae4: e7b8 b.n ea58 const uint8_t opa_table[16] = {0, 17, 34, 51, /*Opacity mapping with bpp = 4*/ eae6: 4b12 ldr r3, [pc, #72] ; (eb30 ) eae8: cb0f ldmia r3, {r0, r1, r2, r3} eaea: f10d 0e10 add.w lr, sp, #16 eaee: e90e 000f stmdb lr, {r0, r1, r2, r3} uint8_t bit = (x & 0x1) * 4; eaf2: f005 0301 and.w r3, r5, #1 uint8_t px_opa = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); eaf6: 009b lsls r3, r3, #2 eaf8: f1c3 0104 rsb r1, r3, #4 uint32_t px = ((dsc->header.w + 1) >> 1) * y + x; eafc: 6822 ldr r2, [r4, #0] eafe: f3c2 228a ubfx r2, r2, #10, #11 eb02: 3201 adds r2, #1 eb04: 1052 asrs r2, r2, #1 eb06: 106d asrs r5, r5, #1 uint8_t px_opa = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); eb08: fb07 6202 mla r2, r7, r2, r6 eb0c: 5d53 ldrb r3, [r2, r5] eb0e: 220f movs r2, #15 eb10: 408a lsls r2, r1 eb12: 4013 ands r3, r2 eb14: 410b asrs r3, r1 return opa_table[px_opa]; eb16: fa5e f383 uxtab r3, lr, r3 eb1a: f813 0c10 ldrb.w r0, [r3, #-16] eb1e: e79b b.n ea58 uint32_t px = dsc->header.w * y + x; eb20: 6802 ldr r2, [r0, #0] eb22: f3c2 228a ubfx r2, r2, #10, #11 return buf_u8[px]; eb26: fb07 6202 mla r2, r7, r2, r6 eb2a: 5c50 ldrb r0, [r2, r1] eb2c: e794 b.n ea58 eb2e: bf00 nop eb30: 000250f4 .word 0x000250f4 0000eb34 <_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) { eb34: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} eb38: 4604 mov r4, r0 dsc->tmp.pivot_x_256 = dsc->cfg.pivot_x * 256; eb3a: f9b0 3008 ldrsh.w r3, [r0, #8] eb3e: 021b lsls r3, r3, #8 eb40: 6243 str r3, [r0, #36] ; 0x24 dsc->tmp.pivot_y_256 = dsc->cfg.pivot_y * 256; eb42: f9b0 300a ldrsh.w r3, [r0, #10] eb46: 021b lsls r3, r3, #8 eb48: 6283 str r3, [r0, #40] ; 0x28 int32_t angle_low = dsc->cfg.angle / 10; eb4a: f9b0 000c ldrsh.w r0, [r0, #12] eb4e: f8df 80f4 ldr.w r8, [pc, #244] ; ec44 <_lv_img_buf_transform_init+0x110> eb52: fb88 2300 smull r2, r3, r8, r0 eb56: 17c5 asrs r5, r0, #31 eb58: ebc5 05a3 rsb r5, r5, r3, asr #2 eb5c: b22d sxth r5, r5 int32_t angle_hight = angle_low + 1; int32_t angle_rem = dsc->cfg.angle - (angle_low * 10); eb5e: f06f 0709 mvn.w r7, #9 eb62: fb07 0705 mla r7, r7, r5, r0 int32_t s1 = _lv_trigo_sin(-angle_low); eb66: fa1f fa85 uxth.w sl, r5 eb6a: f1ca 0000 rsb r0, sl, #0 eb6e: b200 sxth r0, r0 eb70: f8df 90d4 ldr.w r9, [pc, #212] ; ec48 <_lv_img_buf_transform_init+0x114> eb74: 47c8 blx r9 eb76: 4606 mov r6, r0 int32_t angle_hight = angle_low + 1; eb78: 3501 adds r5, #1 int32_t s2 = _lv_trigo_sin(-angle_hight); eb7a: b2ad uxth r5, r5 eb7c: 4268 negs r0, r5 eb7e: b200 sxth r0, r0 eb80: 47c8 blx r9 eb82: 4683 mov fp, r0 int32_t c1 = _lv_trigo_sin(-angle_low + 90); eb84: f1ca 005a rsb r0, sl, #90 ; 0x5a eb88: b200 sxth r0, r0 eb8a: 47c8 blx r9 eb8c: 4682 mov sl, r0 int32_t c2 = _lv_trigo_sin(-angle_hight + 90); eb8e: f1c5 055a rsb r5, r5, #90 ; 0x5a eb92: b228 sxth r0, r5 eb94: 47c8 blx r9 dsc->tmp.sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; eb96: f1c7 030a rsb r3, r7, #10 eb9a: fb07 fb0b mul.w fp, r7, fp eb9e: fb03 b606 mla r6, r3, r6, fp eba2: fb88 2b06 smull r2, fp, r8, r6 eba6: 17f6 asrs r6, r6, #31 eba8: ebc6 06ab rsb r6, r6, fp, asr #2 ebac: 62e6 str r6, [r4, #44] ; 0x2c dsc->tmp.cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10; ebae: fb07 f000 mul.w r0, r7, r0 ebb2: fb03 000a mla r0, r3, sl, r0 ebb6: fb88 3800 smull r3, r8, r8, r0 ebba: 17c0 asrs r0, r0, #31 ebbc: ebc0 00a8 rsb r0, r0, r8, asr #2 ebc0: 6320 str r0, [r4, #48] ; 0x30 dsc->tmp.chroma_keyed = lv_img_cf_is_chroma_keyed(dsc->cfg.cf) ? 1 : 0; ebc2: 7ca0 ldrb r0, [r4, #18] ebc4: 4b1d ldr r3, [pc, #116] ; (ec3c <_lv_img_buf_transform_init+0x108>) ebc6: 4798 blx r3 ebc8: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 ebcc: f360 0300 bfi r3, r0, #0, #1 ebd0: f884 3034 strb.w r3, [r4, #52] ; 0x34 dsc->tmp.has_alpha = lv_img_cf_has_alpha(dsc->cfg.cf) ? 1 : 0; ebd4: 7ca0 ldrb r0, [r4, #18] ebd6: 4b1a ldr r3, [pc, #104] ; (ec40 <_lv_img_buf_transform_init+0x10c>) ebd8: 4798 blx r3 ebda: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 ebde: f360 0341 bfi r3, r0, #1, #1 ebe2: 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 || ebe6: 7ca2 ldrb r2, [r4, #18] ebe8: 1f13 subs r3, r2, #4 ebea: b2db uxtb r3, r3 ebec: 2b02 cmp r3, #2 dsc->cfg.cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED) { dsc->tmp.native_color = 1; ebee: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 ebf2: bf94 ite ls ebf4: f043 0304 orrls.w r3, r3, #4 } else { dsc->tmp.native_color = 0; ebf8: f36f 0382 bfchi r3, #2, #1 ebfc: f884 3034 strb.w r3, [r4, #52] ; 0x34 } dsc->tmp.img_dsc.data = dsc->cfg.src; ec00: 6823 ldr r3, [r4, #0] ec02: 6223 str r3, [r4, #32] dsc->tmp.img_dsc.header.always_zero = 0; ec04: 7e23 ldrb r3, [r4, #24] dsc->tmp.img_dsc.header.cf = dsc->cfg.cf; ec06: f003 031f and.w r3, r3, #31 ec0a: f362 0304 bfi r3, r2, #0, #5 ec0e: 7623 strb r3, [r4, #24] dsc->tmp.img_dsc.header.w = dsc->cfg.src_w; ec10: 69a3 ldr r3, [r4, #24] ec12: 88a2 ldrh r2, [r4, #4] ec14: f362 2394 bfi r3, r2, #10, #11 ec18: 61a3 str r3, [r4, #24] dsc->tmp.img_dsc.header.h = dsc->cfg.src_h; ec1a: 0c1b lsrs r3, r3, #16 ec1c: 88e2 ldrh r2, [r4, #6] ec1e: f362 134f bfi r3, r2, #5, #11 ec22: 8363 strh r3, [r4, #26] dsc->tmp.zoom_inv = (256 * 256) / dsc->cfg.zoom; ec24: 89e2 ldrh r2, [r4, #14] ec26: f44f 3380 mov.w r3, #65536 ; 0x10000 ec2a: fb93 f3f2 sdiv r3, r3, r2 ec2e: 86e3 strh r3, [r4, #54] ; 0x36 dsc->res.opa = LV_OPA_COVER; ec30: 23ff movs r3, #255 ; 0xff ec32: 75a3 strb r3, [r4, #22] dsc->res.color = dsc->cfg.color; ec34: 8a23 ldrh r3, [r4, #16] ec36: 82a3 strh r3, [r4, #20] ec38: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} ec3c: 0000969b .word 0x0000969b ec40: 000096af .word 0x000096af ec44: 66666667 .word 0x66666667 ec48: 0001228d .word 0x0001228d 0000ec4c <_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) { ec4c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} ec50: b087 sub sp, #28 ec52: 9003 str r0, [sp, #12] ec54: 9104 str r1, [sp, #16] ec56: 9205 str r2, [sp, #20] ec58: f8bd 4040 ldrh.w r4, [sp, #64] ; 0x40 ec5c: 9401 str r4, [sp, #4] ec5e: f8dd b044 ldr.w fp, [sp, #68] ; 0x44 #if LV_USE_IMG_TRANSFORM int32_t angle_low = angle / 10; ec62: 4f5e ldr r7, [pc, #376] ; (eddc <_lv_img_buf_get_transformed_area+0x190>) ec64: fb87 6003 smull r6, r0, r7, r3 ec68: 17dd asrs r5, r3, #31 ec6a: ebc5 05a0 rsb r5, r5, r0, asr #2 ec6e: b22d sxth r5, r5 int32_t angle_hight = angle_low + 1; ec70: f105 0901 add.w r9, r5, #1 int32_t angle_rem = angle - (angle_low * 10); ec74: f06f 0609 mvn.w r6, #9 ec78: fb06 3605 mla r6, r6, r5, r3 int32_t s1 = _lv_trigo_sin(angle_low); ec7c: 4628 mov r0, r5 ec7e: f8df 8160 ldr.w r8, [pc, #352] ; ede0 <_lv_img_buf_get_transformed_area+0x194> ec82: 47c0 blx r8 ec84: 4604 mov r4, r0 int32_t s2 = _lv_trigo_sin(angle_hight); ec86: fa0f f089 sxth.w r0, r9 ec8a: 47c0 blx r8 ec8c: 4682 mov sl, r0 int32_t c1 = _lv_trigo_sin(angle_low + 90); ec8e: f105 005a add.w r0, r5, #90 ; 0x5a ec92: b200 sxth r0, r0 ec94: 47c0 blx r8 ec96: 4605 mov r5, r0 int32_t c2 = _lv_trigo_sin(angle_hight + 90); ec98: f109 005a add.w r0, r9, #90 ; 0x5a ec9c: b200 sxth r0, r0 ec9e: 47c0 blx r8 int32_t sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; eca0: f1c6 030a rsb r3, r6, #10 eca4: fb06 fa0a mul.w sl, r6, sl eca8: fb03 a404 mla r4, r3, r4, sl ecac: fb87 ea04 smull lr, sl, r7, r4 ecb0: 17e4 asrs r4, r4, #31 ecb2: ebc4 04aa rsb r4, r4, sl, asr #2 int32_t cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10; ecb6: fb06 f000 mul.w r0, r6, r0 ecba: fb03 0505 mla r5, r3, r5, r0 ecbe: fb87 3705 smull r3, r7, r7, r5 ecc2: 17ed asrs r5, r5, #31 ecc4: 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; ecc8: f9bb c000 ldrsh.w ip, [fp] a.y1 = ((-pivot->y) * zoom) >> 8; eccc: f9bb 8002 ldrsh.w r8, [fp, #2] a.x1 = ((-pivot->x) * zoom) >> 8; ecd0: f1cc 0300 rsb r3, ip, #0 ecd4: 9d01 ldr r5, [sp, #4] ecd6: 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; ecda: f343 230f sbfx r3, r3, #8, #16 ecde: fb03 fa07 mul.w sl, r3, r7 a.y1 = ((-pivot->y) * zoom) >> 8; ece2: f1c8 0200 rsb r2, r8, #0 ece6: fb05 f202 mul.w r2, r5, r2 lt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; ecea: f342 220f sbfx r2, r2, #8, #16 ecee: fb02 fe04 mul.w lr, r2, r4 ecf2: fa1f f68c uxth.w r6, ip ecf6: ebaa 0b0e sub.w fp, sl, lr ecfa: eb06 3beb add.w fp, r6, fp, asr #15 ecfe: fa0f fb8b sxth.w fp, fp lt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; ed02: fb03 f304 mul.w r3, r3, r4 ed06: fb02 f207 mul.w r2, r2, r7 ed0a: fa1f f088 uxth.w r0, r8 ed0e: 1899 adds r1, r3, r2 ed10: eb00 31e1 add.w r1, r0, r1, asr #15 ed14: b209 sxth r1, r1 ed16: 9102 str r1, [sp, #8] a.x2 = ((w - pivot->x) * zoom) >> 8; ed18: 9904 ldr r1, [sp, #16] ed1a: eba1 0c0c sub.w ip, r1, ip ed1e: fb05 fc0c mul.w ip, r5, ip xt = a.x2; yt = a.y1; rt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; ed22: f34c 2c0f sbfx ip, ip, #8, #16 ed26: fb0c f907 mul.w r9, ip, r7 ed2a: eba9 0e0e sub.w lr, r9, lr ed2e: eb06 3eee add.w lr, r6, lr, asr #15 ed32: fa0f fe8e sxth.w lr, lr rt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; ed36: fb0c fc04 mul.w ip, ip, r4 ed3a: 4462 add r2, ip ed3c: eb00 32e2 add.w r2, r0, r2, asr #15 ed40: b212 sxth r2, r2 a.y2 = ((h - pivot->y) * zoom) >> 8; ed42: 9905 ldr r1, [sp, #20] ed44: eba1 0808 sub.w r8, r1, r8 ed48: fb05 f808 mul.w r8, r5, r8 xt = a.x1; yt = a.y2; lb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; ed4c: f348 280f sbfx r8, r8, #8, #16 ed50: fb08 f404 mul.w r4, r8, r4 ed54: ebaa 0504 sub.w r5, sl, r4 ed58: eb06 35e5 add.w r5, r6, r5, asr #15 ed5c: b22d sxth r5, r5 lb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; ed5e: fb08 f707 mul.w r7, r8, r7 ed62: 443b add r3, r7 ed64: eb00 33e3 add.w r3, r0, r3, asr #15 ed68: b21b sxth r3, r3 xt = a.x2; yt = a.y2; rb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; ed6a: eba9 0404 sub.w r4, r9, r4 ed6e: eb06 36e4 add.w r6, r6, r4, asr #15 ed72: b236 sxth r6, r6 rb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; ed74: 44bc add ip, r7 ed76: eb00 30ec add.w r0, r0, ip, asr #15 ed7a: b200 sxth r0, r0 res->x1 = LV_MATH_MIN4(lb.x, lt.x, rb.x, rt.x); ed7c: 465c mov r4, fp ed7e: 45f3 cmp fp, lr ed80: bfa8 it ge ed82: 4674 movge r4, lr ed84: 42ac cmp r4, r5 ed86: bfa8 it ge ed88: 462c movge r4, r5 ed8a: 42b4 cmp r4, r6 ed8c: bfa8 it ge ed8e: 4634 movge r4, r6 ed90: 9903 ldr r1, [sp, #12] ed92: 460f mov r7, r1 ed94: 800c strh r4, [r1, #0] res->x2 = LV_MATH_MAX4(lb.x, lt.x, rb.x, rt.x); ed96: 45de cmp lr, fp ed98: bfb8 it lt ed9a: 46de movlt lr, fp ed9c: 4575 cmp r5, lr ed9e: bfb8 it lt eda0: 4675 movlt r5, lr eda2: 42ae cmp r6, r5 eda4: bfb8 it lt eda6: 462e movlt r6, r5 eda8: 808e strh r6, [r1, #4] res->y1 = LV_MATH_MIN4(lb.y, lt.y, rb.y, rt.y); edaa: 9902 ldr r1, [sp, #8] edac: 460c mov r4, r1 edae: 4291 cmp r1, r2 edb0: bfa8 it ge edb2: 4614 movge r4, r2 edb4: 429c cmp r4, r3 edb6: bfa8 it ge edb8: 461c movge r4, r3 edba: 4284 cmp r4, r0 edbc: bfa8 it ge edbe: 4604 movge r4, r0 edc0: 807c strh r4, [r7, #2] res->y2 = LV_MATH_MAX4(lb.y, lt.y, rb.y, rt.y); edc2: 4291 cmp r1, r2 edc4: bfb8 it lt edc6: 4611 movlt r1, r2 edc8: 428b cmp r3, r1 edca: bfb8 it lt edcc: 460b movlt r3, r1 edce: 4298 cmp r0, r3 edd0: bfb8 it lt edd2: 4618 movlt r0, r3 edd4: 80f8 strh r0, [r7, #6] res->x1 = 0; res->y1 = 0; res->x2 = w; res->y2 = h; #endif } edd6: b007 add sp, #28 edd8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} eddc: 66666667 .word 0x66666667 ede0: 0001228d .word 0x0001228d 0000ede4 <_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) { ede4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} ede8: b089 sub sp, #36 ; 0x24 edea: 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; edec: f9b0 5038 ldrsh.w r5, [r0, #56] ; 0x38 edf0: b2ea uxtb r2, r5 int ys_fract = dsc->tmp.ys & 0xff; edf2: f9b0 603a ldrsh.w r6, [r0, #58] ; 0x3a edf6: b2f3 uxtb r3, r6 int32_t xn; /*x neightboor*/ lv_opa_t xr; /*x mix ratio*/ if(xs_fract < 0x70) { edf8: 2a6f cmp r2, #111 ; 0x6f edfa: dc74 bgt.n eee6 <_lv_img_buf_transform_anti_alias+0x102> xn = - 1; if(dsc->tmp.xs_int + xn < 0) xn = 0; edfc: f9b0 103c ldrsh.w r1, [r0, #60] ; 0x3c ee00: 4249 negs r1, r1 ee02: 17c9 asrs r1, r1, #31 xr = xs_fract + 0x80; ee04: 3d80 subs r5, #128 ; 0x80 ee06: b2ed uxtb r5, r5 } int32_t yn; /*x neightboor*/ lv_opa_t yr; /*x mix ratio*/ if(ys_fract < 0x70) { ee08: 2b6f cmp r3, #111 ; 0x6f ee0a: dc7e bgt.n ef0a <_lv_img_buf_transform_anti_alias+0x126> yn = - 1; if(dsc->tmp.ys_int + yn < 0) yn = 0; ee0c: f9b4 b03e ldrsh.w fp, [r4, #62] ; 0x3e ee10: f1cb 0b00 rsb fp, fp, #0 ee14: ea4f 7beb mov.w fp, fp, asr #31 yr = ys_fract + 0x80; ee18: 3e80 subs r6, #128 ; 0x80 ee1a: b2f6 uxtb r6, r6 else { yn = 0; yr = 0xFF; } lv_color_t c00 = dsc->res.color; ee1c: f894 9014 ldrb.w r9, [r4, #20] ee20: f009 091f and.w r9, r9, #31 ee24: f8b4 8014 ldrh.w r8, [r4, #20] ee28: f3c8 1845 ubfx r8, r8, #5, #6 ee2c: 7d67 ldrb r7, [r4, #21] ee2e: 08ff lsrs r7, r7, #3 lv_color_t c01; lv_color_t c10; lv_color_t c11; lv_opa_t a00 = dsc->res.opa; ee30: 7da3 ldrb r3, [r4, #22] ee32: 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) { ee34: f894 c034 ldrb.w ip, [r4, #52] ; 0x34 ee38: f01c 0f04 tst.w ip, #4 ee3c: d07b beq.n ef36 <_lv_img_buf_transform_anti_alias+0x152> const uint8_t * src_u8 = dsc->cfg.src; ee3e: 6823 ldr r3, [r4, #0] _lv_memcpy_small(&c01, &src_u8[dsc->tmp.pxi + dsc->tmp.px_size * xn], sizeof(lv_color_t)); ee40: 6c20 ldr r0, [r4, #64] ; 0x40 ee42: f894 e044 ldrb.w lr, [r4, #68] ; 0x44 ee46: fb0e 0101 mla r1, lr, r1, r0 ee4a: 185a adds r2, r3, r1 ee4c: f813 a001 ldrb.w sl, [r3, r1] ee50: f88d a01c strb.w sl, [sp, #28] ee54: 7852 ldrb r2, [r2, #1] ee56: 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)); ee5a: f9b4 2004 ldrsh.w r2, [r4, #4] ee5e: fb0e f202 mul.w r2, lr, r2 ee62: fb0b fb02 mul.w fp, fp, r2 ee66: 4458 add r0, fp ee68: 181a adds r2, r3, r0 ee6a: f813 a000 ldrb.w sl, [r3, r0] ee6e: f88d a018 strb.w sl, [sp, #24] ee72: 7852 ldrb r2, [r2, #1] ee74: 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], ee78: eb01 020b add.w r2, r1, fp ee7c: eb03 0a02 add.w sl, r3, r2 ee80: f813 b002 ldrb.w fp, [r3, r2] ee84: f88d b014 strb.w fp, [sp, #20] ee88: f89a a001 ldrb.w sl, [sl, #1] ee8c: f88d a015 strb.w sl, [sp, #21] sizeof(lv_color_t)); if(dsc->tmp.has_alpha) { ee90: f01c 0f02 tst.w ip, #2 ee94: f000 8081 beq.w ef9a <_lv_img_buf_transform_anti_alias+0x1b6> ee98: f10e 3eff add.w lr, lr, #4294967295 a10 = src_u8[dsc->tmp.pxi + dsc->tmp.px_size * xn + dsc->tmp.px_size - 1]; ee9c: 4473 add r3, lr ee9e: 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]; eea2: 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]; eea6: 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; eea8: f1c5 03ff rsb r3, r5, #255 ; 0xff eeac: fb03 f10b mul.w r1, r3, fp eeb0: 9a00 ldr r2, [sp, #0] eeb2: fb05 1102 mla r1, r5, r2, r1 lv_opa_t a1 = (a01 * xr + (a11 * (255 - xr))) >> 8; eeb6: fb03 f300 mul.w r3, r3, r0 eeba: fb05 330a mla r3, r5, sl, r3 eebe: f3c3 2307 ubfx r3, r3, #8, #8 dsc->res.opa = (a0 * yr + (a1 * (255 - yr))) >> 8; eec2: f1c6 02ff rsb r2, r6, #255 ; 0xff eec6: f3c1 2107 ubfx r1, r1, #8, #8 eeca: fb06 fe01 mul.w lr, r6, r1 eece: fb02 e203 mla r2, r2, r3, lr eed2: 1212 asrs r2, r2, #8 eed4: 75a2 strb r2, [r4, #22] if(a0 <= LV_OPA_MIN && a1 <= LV_OPA_MIN) return false; eed6: 2905 cmp r1, #5 eed8: f200 80dc bhi.w f094 <_lv_img_buf_transform_anti_alias+0x2b0> eedc: 2b05 cmp r3, #5 eede: f240 817d bls.w f1dc <_lv_img_buf_transform_anti_alias+0x3f8> if(a0 <= LV_OPA_MIN) yr = LV_OPA_TRANSP; eee2: 2600 movs r6, #0 eee4: e0d9 b.n f09a <_lv_img_buf_transform_anti_alias+0x2b6> else if(xs_fract > 0x90) { eee6: 2a90 cmp r2, #144 ; 0x90 eee8: dd0c ble.n ef04 <_lv_img_buf_transform_anti_alias+0x120> if(dsc->tmp.xs_int + xn >= dsc->cfg.src_w) xn = 0; eeea: f9b0 103c ldrsh.w r1, [r0, #60] ; 0x3c eeee: 3101 adds r1, #1 eef0: f9b0 2004 ldrsh.w r2, [r0, #4] eef4: 4291 cmp r1, r2 eef6: bfac ite ge eef8: 2100 movge r1, #0 eefa: 2101 movlt r1, #1 xr = (0xFF - xs_fract) + 0x80; eefc: f1c5 057f rsb r5, r5, #127 ; 0x7f ef00: b2ed uxtb r5, r5 ef02: e781 b.n ee08 <_lv_img_buf_transform_anti_alias+0x24> xr = 0xFF; ef04: 25ff movs r5, #255 ; 0xff xn = 0; ef06: 2100 movs r1, #0 ef08: e77e b.n ee08 <_lv_img_buf_transform_anti_alias+0x24> else if(ys_fract > 0x90) { ef0a: 2b90 cmp r3, #144 ; 0x90 ef0c: dd0f ble.n ef2e <_lv_img_buf_transform_anti_alias+0x14a> if(dsc->tmp.ys_int + yn >= dsc->cfg.src_h) yn = 0; ef0e: f9b4 b03e ldrsh.w fp, [r4, #62] ; 0x3e ef12: f10b 0b01 add.w fp, fp, #1 ef16: f9b4 2006 ldrsh.w r2, [r4, #6] ef1a: 4593 cmp fp, r2 ef1c: bfac ite ge ef1e: f04f 0b00 movge.w fp, #0 ef22: f04f 0b01 movlt.w fp, #1 yr = (0xFF - ys_fract) + 0x80; ef26: f1c6 067f rsb r6, r6, #127 ; 0x7f ef2a: b2f6 uxtb r6, r6 ef2c: e776 b.n ee1c <_lv_img_buf_transform_anti_alias+0x38> yr = 0xFF; ef2e: 26ff movs r6, #255 ; 0xff yn = 0; ef30: f04f 0b00 mov.w fp, #0 ef34: e772 b.n ee1c <_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); ef36: f104 0318 add.w r3, r4, #24 ef3a: 4618 mov r0, r3 ef3c: b28b uxth r3, r1 ef3e: 8fa1 ldrh r1, [r4, #60] ; 0x3c ef40: 9302 str r3, [sp, #8] ef42: 4419 add r1, r3 ef44: 8a23 ldrh r3, [r4, #16] ef46: f9b4 203e ldrsh.w r2, [r4, #62] ; 0x3e ef4a: b209 sxth r1, r1 ef4c: 9001 str r0, [sp, #4] ef4e: f8df a294 ldr.w sl, [pc, #660] ; f1e4 <_lv_img_buf_transform_anti_alias+0x400> ef52: 47d0 blx sl ef54: 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); ef58: fa1f f18b uxth.w r1, fp ef5c: 8fe2 ldrh r2, [r4, #62] ; 0x3e ef5e: 9103 str r1, [sp, #12] ef60: 440a add r2, r1 ef62: 8a23 ldrh r3, [r4, #16] ef64: b212 sxth r2, r2 ef66: f9b4 103c ldrsh.w r1, [r4, #60] ; 0x3c ef6a: f8dd b004 ldr.w fp, [sp, #4] ef6e: 4658 mov r0, fp ef70: 47d0 blx sl ef72: 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); ef76: 8fe2 ldrh r2, [r4, #62] ; 0x3e ef78: 9903 ldr r1, [sp, #12] ef7a: 440a add r2, r1 ef7c: 8fa1 ldrh r1, [r4, #60] ; 0x3c ef7e: 9b02 ldr r3, [sp, #8] ef80: 4419 add r1, r3 ef82: 8a23 ldrh r3, [r4, #16] ef84: b212 sxth r2, r2 ef86: b209 sxth r1, r1 ef88: 4658 mov r0, fp ef8a: 47d0 blx sl ef8c: f8ad 0014 strh.w r0, [sp, #20] if(dsc->tmp.has_alpha) { ef90: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 ef94: f013 0f02 tst.w r3, #2 ef98: d152 bne.n f040 <_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; ef9a: 23ff movs r3, #255 ; 0xff ef9c: 75a3 strb r3, [r4, #22] xr0 = xr; ef9e: 462b mov r3, r5 } lv_color_t c0; if(xr0 == LV_OPA_TRANSP) c0 = c01; efa0: 2b00 cmp r3, #0 efa2: f040 808b bne.w f0bc <_lv_img_buf_transform_anti_alias+0x2d8> efa6: f89d 901c ldrb.w r9, [sp, #28] efaa: f009 091f and.w r9, r9, #31 efae: f8bd 801c ldrh.w r8, [sp, #28] efb2: f3c8 1845 ubfx r8, r8, #5, #6 efb6: f89d 701d ldrb.w r7, [sp, #29] efba: 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; efbc: 2d00 cmp r5, #0 efbe: f040 80ac bne.w f11a <_lv_img_buf_transform_anti_alias+0x336> efc2: f89d 5014 ldrb.w r5, [sp, #20] efc6: f005 051f and.w r5, r5, #31 efca: f8bd 3014 ldrh.w r3, [sp, #20] efce: f3c3 1345 ubfx r3, r3, #5, #6 efd2: f89d 1015 ldrb.w r1, [sp, #21] efd6: 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; efd8: 2e00 cmp r6, #0 efda: f000 80e3 beq.w f1a4 <_lv_img_buf_transform_anti_alias+0x3c0> else if(yr == LV_OPA_COVER) dsc->res.color = c0; efde: 2eff cmp r6, #255 ; 0xff efe0: f000 80ee beq.w f1c0 <_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))); efe4: 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))); efe8: fb02 f505 mul.w r5, r2, r5 efec: fb06 5509 mla r5, r6, r9, r5 eff0: eb05 2905 add.w r9, r5, r5, lsl #8 eff4: eb05 15c9 add.w r5, r5, r9, lsl #7 eff8: 0ded lsrs r5, r5, #23 else dsc->res.color = lv_color_mix(c0, c1, yr); effa: 7d20 ldrb r0, [r4, #20] effc: f365 0004 bfi r0, r5, #0, #5 f000: 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))); f002: fb02 f303 mul.w r3, r2, r3 f006: fb06 3808 mla r8, r6, r8, r3 f00a: eb08 2308 add.w r3, r8, r8, lsl #8 f00e: eb08 18c3 add.w r8, r8, r3, lsl #7 f012: ea4f 58d8 mov.w r8, r8, lsr #23 f016: 8aa3 ldrh r3, [r4, #20] f018: f368 134a bfi r3, r8, #5, #6 f01c: 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))); f01e: fb02 f101 mul.w r1, r2, r1 f022: fb06 1607 mla r6, r6, r7, r1 f026: eb06 2706 add.w r7, r6, r6, lsl #8 f02a: eb06 16c7 add.w r6, r6, r7, lsl #7 f02e: 0df6 lsrs r6, r6, #23 f030: 0a1b lsrs r3, r3, #8 f032: f366 03c7 bfi r3, r6, #3, #5 f036: 7563 strb r3, [r4, #21] return true; f038: 2001 movs r0, #1 } f03a: b009 add sp, #36 ; 0x24 f03c: 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); f040: 8fa1 ldrh r1, [r4, #60] ; 0x3c f042: 9b02 ldr r3, [sp, #8] f044: 4419 add r1, r3 f046: f9b4 203e ldrsh.w r2, [r4, #62] ; 0x3e f04a: b209 sxth r1, r1 f04c: f8dd a004 ldr.w sl, [sp, #4] f050: 4650 mov r0, sl f052: 4b63 ldr r3, [pc, #396] ; (f1e0 <_lv_img_buf_transform_anti_alias+0x3fc>) f054: 4798 blx r3 f056: 4683 mov fp, r0 a01 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int, dsc->tmp.ys_int + yn); f058: 8fe2 ldrh r2, [r4, #62] ; 0x3e f05a: 9903 ldr r1, [sp, #12] f05c: 440a add r2, r1 f05e: b212 sxth r2, r2 f060: f9b4 103c ldrsh.w r1, [r4, #60] ; 0x3c f064: f8cd a004 str.w sl, [sp, #4] f068: 4650 mov r0, sl f06a: 4b5d ldr r3, [pc, #372] ; (f1e0 <_lv_img_buf_transform_anti_alias+0x3fc>) f06c: 4798 blx r3 f06e: 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); f070: 8fe2 ldrh r2, [r4, #62] ; 0x3e f072: 9903 ldr r1, [sp, #12] f074: 440a add r2, r1 f076: 8fa1 ldrh r1, [r4, #60] ; 0x3c f078: 9b02 ldr r3, [sp, #8] f07a: 4419 add r1, r3 f07c: b212 sxth r2, r2 f07e: b209 sxth r1, r1 f080: 9801 ldr r0, [sp, #4] f082: 4b57 ldr r3, [pc, #348] ; (f1e0 <_lv_img_buf_transform_anti_alias+0x3fc>) f084: 4798 blx r3 if(dsc->tmp.has_alpha) { f086: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 f08a: f013 0f02 tst.w r3, #2 f08e: f47f af0b bne.w eea8 <_lv_img_buf_transform_anti_alias+0xc4> f092: e782 b.n ef9a <_lv_img_buf_transform_anti_alias+0x1b6> if(a1 <= LV_OPA_MIN) yr = LV_OPA_COVER; f094: 2b05 cmp r3, #5 f096: bf98 it ls f098: 26ff movls r6, #255 ; 0xff if(a00 <= LV_OPA_MIN) xr0 = LV_OPA_TRANSP; f09a: 9b00 ldr r3, [sp, #0] f09c: 2b05 cmp r3, #5 f09e: bf8c ite hi f0a0: 462b movhi r3, r5 f0a2: 2300 movls r3, #0 if(a10 <= LV_OPA_MIN) xr0 = LV_OPA_COVER; f0a4: f1bb 0f05 cmp.w fp, #5 f0a8: bf98 it ls f0aa: 23ff movls r3, #255 ; 0xff if(a01 <= LV_OPA_MIN) xr1 = LV_OPA_TRANSP; f0ac: f1ba 0f05 cmp.w sl, #5 f0b0: bf98 it ls f0b2: 2500 movls r5, #0 if(a11 <= LV_OPA_MIN) xr1 = LV_OPA_COVER; f0b4: 2805 cmp r0, #5 f0b6: bf98 it ls f0b8: 25ff movls r5, #255 ; 0xff f0ba: e771 b.n efa0 <_lv_img_buf_transform_anti_alias+0x1bc> else if(xr0 == LV_OPA_COVER) c0 = c00; f0bc: 2bff cmp r3, #255 ; 0xff f0be: f43f af7d beq.w efbc <_lv_img_buf_transform_anti_alias+0x1d8> f0c2: f1c3 01ff rsb r1, r3, #255 ; 0xff f0c6: f89d 201d ldrb.w r2, [sp, #29] f0ca: 08d2 lsrs r2, r2, #3 f0cc: fb03 f707 mul.w r7, r3, r7 f0d0: fb01 7702 mla r7, r1, r2, r7 f0d4: eb07 2207 add.w r2, r7, r7, lsl #8 f0d8: eb07 17c2 add.w r7, r7, r2, lsl #7 f0dc: 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))); f0e0: f8bd 201c ldrh.w r2, [sp, #28] f0e4: f3c2 1245 ubfx r2, r2, #5, #6 f0e8: fb03 f808 mul.w r8, r3, r8 f0ec: fb01 8802 mla r8, r1, r2, r8 f0f0: eb08 2208 add.w r2, r8, r8, lsl #8 f0f4: eb08 18c2 add.w r8, r8, r2, lsl #7 f0f8: 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))); f0fc: f89d 201c ldrb.w r2, [sp, #28] f100: f002 021f and.w r2, r2, #31 f104: fb03 f909 mul.w r9, r3, r9 f108: fb01 9902 mla r9, r1, r2, r9 f10c: eb09 2309 add.w r3, r9, r9, lsl #8 f110: eb09 19c3 add.w r9, r9, r3, lsl #7 f114: f3c9 59c4 ubfx r9, r9, #23, #5 f118: e750 b.n efbc <_lv_img_buf_transform_anti_alias+0x1d8> else if(xr1 == LV_OPA_COVER) c1 = c10; f11a: 2dff cmp r5, #255 ; 0xff f11c: d036 beq.n f18c <_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))); f11e: f1c5 00ff rsb r0, r5, #255 ; 0xff f122: f89d 1019 ldrb.w r1, [sp, #25] f126: 08c9 lsrs r1, r1, #3 f128: f89d 3015 ldrb.w r3, [sp, #21] f12c: 08db lsrs r3, r3, #3 f12e: fb00 f303 mul.w r3, r0, r3 f132: fb05 3101 mla r1, r5, r1, r3 f136: eb01 2301 add.w r3, r1, r1, lsl #8 f13a: eb01 11c3 add.w r1, r1, r3, lsl #7 f13e: 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))); f142: f8bd 3018 ldrh.w r3, [sp, #24] f146: f3c3 1345 ubfx r3, r3, #5, #6 f14a: f8bd 2014 ldrh.w r2, [sp, #20] f14e: f3c2 1245 ubfx r2, r2, #5, #6 f152: fb00 f202 mul.w r2, r0, r2 f156: fb05 2303 mla r3, r5, r3, r2 f15a: eb03 2203 add.w r2, r3, r3, lsl #8 f15e: eb03 13c2 add.w r3, r3, r2, lsl #7 f162: 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))); f166: f89d 2018 ldrb.w r2, [sp, #24] f16a: f002 021f and.w r2, r2, #31 f16e: f89d e014 ldrb.w lr, [sp, #20] f172: f00e 0e1f and.w lr, lr, #31 f176: fb00 f00e mul.w r0, r0, lr f17a: fb05 0502 mla r5, r5, r2, r0 f17e: eb05 2205 add.w r2, r5, r5, lsl #8 f182: eb05 15c2 add.w r5, r5, r2, lsl #7 f186: f3c5 55c4 ubfx r5, r5, #23, #5 f18a: e725 b.n efd8 <_lv_img_buf_transform_anti_alias+0x1f4> f18c: f89d 5018 ldrb.w r5, [sp, #24] f190: f005 051f and.w r5, r5, #31 f194: f8bd 3018 ldrh.w r3, [sp, #24] f198: f3c3 1345 ubfx r3, r3, #5, #6 f19c: f89d 1019 ldrb.w r1, [sp, #25] f1a0: 08c9 lsrs r1, r1, #3 f1a2: e719 b.n efd8 <_lv_img_buf_transform_anti_alias+0x1f4> if(yr == LV_OPA_TRANSP) dsc->res.color = c1; f1a4: 7d22 ldrb r2, [r4, #20] f1a6: f365 0204 bfi r2, r5, #0, #5 f1aa: 7522 strb r2, [r4, #20] f1ac: 8aa2 ldrh r2, [r4, #20] f1ae: f363 124a bfi r2, r3, #5, #6 f1b2: 82a2 strh r2, [r4, #20] f1b4: 0a12 lsrs r2, r2, #8 f1b6: f361 02c7 bfi r2, r1, #3, #5 f1ba: 7562 strb r2, [r4, #21] return true; f1bc: 2001 movs r0, #1 f1be: e73c b.n f03a <_lv_img_buf_transform_anti_alias+0x256> else if(yr == LV_OPA_COVER) dsc->res.color = c0; f1c0: 7d23 ldrb r3, [r4, #20] f1c2: f369 0304 bfi r3, r9, #0, #5 f1c6: 7523 strb r3, [r4, #20] f1c8: 8aa3 ldrh r3, [r4, #20] f1ca: f368 134a bfi r3, r8, #5, #6 f1ce: 82a3 strh r3, [r4, #20] f1d0: 0a1b lsrs r3, r3, #8 f1d2: f367 03c7 bfi r3, r7, #3, #5 f1d6: 7563 strb r3, [r4, #21] return true; f1d8: 2001 movs r0, #1 f1da: e72e b.n f03a <_lv_img_buf_transform_anti_alias+0x256> if(a0 <= LV_OPA_MIN && a1 <= LV_OPA_MIN) return false; f1dc: 2000 movs r0, #0 f1de: e72c b.n f03a <_lv_img_buf_transform_anti_alias+0x256> f1e0: 0000ea31 .word 0x0000ea31 f1e4: 0000e901 .word 0x0000e901 0000f1e8 <_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) { f1e8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} f1ec: b083 sub sp, #12 f1ee: 4688 mov r8, r1 if(entry_cnt == 0) { f1f0: 4b5d ldr r3, [pc, #372] ; (f368 <_lv_img_cache_open+0x180>) f1f2: 8819 ldrh r1, [r3, #0] f1f4: b1e1 cbz r1, f230 <_lv_img_cache_open+0x48> f1f6: 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); f1f8: 4b5c ldr r3, [pc, #368] ; (f36c <_lv_img_cache_open+0x184>) f1fa: 681e ldr r6, [r3, #0] f1fc: 4633 mov r3, r6 f1fe: 3901 subs r1, #1 f200: b289 uxth r1, r1 f202: 3101 adds r1, #1 f204: eb01 01c1 add.w r1, r1, r1, lsl #3 f208: 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) { f20c: 4858 ldr r0, [pc, #352] ; (f370 <_lv_img_cache_open+0x188>) f20e: 6a1a ldr r2, [r3, #32] f210: 4282 cmp r2, r0 cache[i].life -= LV_IMG_CACHE_AGING; f212: bfa4 itt ge f214: f102 32ff addge.w r2, r2, #4294967295 f218: 621a strge r2, [r3, #32] f21a: 3324 adds r3, #36 ; 0x24 for(i = 0; i < entry_cnt; i++) { f21c: 428b cmp r3, r1 f21e: d1f6 bne.n f20e <_lv_img_cache_open+0x26> f220: 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); f222: f8df 9180 ldr.w r9, [pc, #384] ; f3a4 <_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; f226: f8df b180 ldr.w fp, [pc, #384] ; f3a8 <_lv_img_cache_open+0x1c0> for(i = 0; i < entry_cnt; i++) { f22a: f8df a13c ldr.w sl, [pc, #316] ; f368 <_lv_img_cache_open+0x180> f22e: e011 b.n f254 <_lv_img_cache_open+0x6c> LV_LOG_WARN("lv_img_cache_open: the cache size is 0"); f230: 4b50 ldr r3, [pc, #320] ; (f374 <_lv_img_cache_open+0x18c>) f232: 9300 str r3, [sp, #0] f234: 4b50 ldr r3, [pc, #320] ; (f378 <_lv_img_cache_open+0x190>) f236: 2244 movs r2, #68 ; 0x44 f238: 4950 ldr r1, [pc, #320] ; (f37c <_lv_img_cache_open+0x194>) f23a: 2002 movs r0, #2 f23c: 4c50 ldr r4, [pc, #320] ; (f380 <_lv_img_cache_open+0x198>) f23e: 47a0 blx r4 return NULL; f240: 2500 movs r5, #0 f242: e025 b.n f290 <_lv_img_cache_open+0xa8> else if(src_type == LV_IMG_SRC_FILE) { f244: 2801 cmp r0, #1 f246: d027 beq.n f298 <_lv_img_cache_open+0xb0> for(i = 0; i < entry_cnt; i++) { f248: 3401 adds r4, #1 f24a: b2a4 uxth r4, r4 f24c: f8ba 3000 ldrh.w r3, [sl] f250: 42a3 cmp r3, r4 f252: d92a bls.n f2aa <_lv_img_cache_open+0xc2> lv_img_src_t src_type = lv_img_src_get_type(cache[i].dec_dsc.src); f254: eb04 05c4 add.w r5, r4, r4, lsl #3 f258: eb06 0585 add.w r5, r6, r5, lsl #2 f25c: 6868 ldr r0, [r5, #4] f25e: 47c8 blx r9 if(src_type == LV_IMG_SRC_VARIABLE) { f260: 2800 cmp r0, #0 f262: d1ef bne.n f244 <_lv_img_cache_open+0x5c> if(cache[i].dec_dsc.src == src && cache[i].dec_dsc.color.full == color.full) match = true; f264: 686b ldr r3, [r5, #4] f266: 42bb cmp r3, r7 f268: d1ee bne.n f248 <_lv_img_cache_open+0x60> f26a: 8928 ldrh r0, [r5, #8] f26c: fa1f f388 uxth.w r3, r8 f270: 4298 cmp r0, r3 f272: bf14 ite ne f274: 2000 movne r0, #0 f276: 2001 moveq r0, #1 } if(match) { f278: 2800 cmp r0, #0 f27a: d0e5 beq.n f248 <_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; f27c: 6a2b ldr r3, [r5, #32] f27e: 696a ldr r2, [r5, #20] f280: 4413 add r3, r2 if(cached_src->life > LV_IMG_CACHE_LIFE_LIMIT) cached_src->life = LV_IMG_CACHE_LIFE_LIMIT; f282: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 f286: dd0e ble.n f2a6 <_lv_img_cache_open+0xbe> f288: f44f 737a mov.w r3, #1000 ; 0x3e8 f28c: 622b str r3, [r5, #32] break; } } /*The image is not cached then cache it now*/ if(cached_src == NULL) { f28e: b165 cbz r5, f2aa <_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; } f290: 4628 mov r0, r5 f292: b003 add sp, #12 f294: 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; f298: 4639 mov r1, r7 f29a: 6868 ldr r0, [r5, #4] f29c: 47d8 blx fp f29e: fab0 f080 clz r0, r0 f2a2: 0940 lsrs r0, r0, #5 f2a4: e7e8 b.n f278 <_lv_img_cache_open+0x90> cached_src->life += cached_src->dec_dsc.time_to_open * LV_IMG_CACHE_LIFE_GAIN; f2a6: 622b str r3, [r5, #32] f2a8: e7f1 b.n f28e <_lv_img_cache_open+0xa6> for(i = 1; i < entry_cnt; i++) { f2aa: 4b2f ldr r3, [pc, #188] ; (f368 <_lv_img_cache_open+0x180>) f2ac: 881a ldrh r2, [r3, #0] f2ae: 2a01 cmp r2, #1 f2b0: d937 bls.n f322 <_lv_img_cache_open+0x13a> f2b2: f106 0324 add.w r3, r6, #36 ; 0x24 f2b6: 3a02 subs r2, #2 f2b8: b292 uxth r2, r2 f2ba: eb02 02c2 add.w r2, r2, r2, lsl #3 f2be: eb06 0282 add.w r2, r6, r2, lsl #2 f2c2: 3248 adds r2, #72 ; 0x48 f2c4: 4635 mov r5, r6 if(cache[i].life < cached_src->life) { f2c6: 6a18 ldr r0, [r3, #32] f2c8: 6a29 ldr r1, [r5, #32] cached_src = &cache[i]; f2ca: 4288 cmp r0, r1 f2cc: bfb8 it lt f2ce: 461d movlt r5, r3 f2d0: 3324 adds r3, #36 ; 0x24 for(i = 1; i < entry_cnt; i++) { f2d2: 4293 cmp r3, r2 f2d4: d1f7 bne.n f2c6 <_lv_img_cache_open+0xde> if(cached_src->dec_dsc.src) { f2d6: 686b ldr r3, [r5, #4] f2d8: b32b cbz r3, f326 <_lv_img_cache_open+0x13e> lv_img_decoder_close(&cached_src->dec_dsc); f2da: 4628 mov r0, r5 f2dc: 4b29 ldr r3, [pc, #164] ; (f384 <_lv_img_cache_open+0x19c>) f2de: 4798 blx r3 LV_LOG_INFO("image draw: cache miss, close and reuse an entry"); f2e0: 4b29 ldr r3, [pc, #164] ; (f388 <_lv_img_cache_open+0x1a0>) f2e2: 9300 str r3, [sp, #0] f2e4: 4b24 ldr r3, [pc, #144] ; (f378 <_lv_img_cache_open+0x190>) f2e6: 2277 movs r2, #119 ; 0x77 f2e8: 4924 ldr r1, [pc, #144] ; (f37c <_lv_img_cache_open+0x194>) f2ea: 2001 movs r0, #1 f2ec: 4c24 ldr r4, [pc, #144] ; (f380 <_lv_img_cache_open+0x198>) f2ee: 47a0 blx r4 t_start = lv_tick_get(); f2f0: 4b26 ldr r3, [pc, #152] ; (f38c <_lv_img_cache_open+0x1a4>) f2f2: 4798 blx r3 f2f4: 4604 mov r4, r0 cached_src->dec_dsc.time_to_open = 0; f2f6: 2300 movs r3, #0 f2f8: 616b str r3, [r5, #20] lv_res_t open_res = lv_img_decoder_open(&cached_src->dec_dsc, src, color); f2fa: 4642 mov r2, r8 f2fc: 4639 mov r1, r7 f2fe: 4628 mov r0, r5 f300: 4b23 ldr r3, [pc, #140] ; (f390 <_lv_img_cache_open+0x1a8>) f302: 4798 blx r3 if(open_res == LV_RES_INV) { f304: b1c0 cbz r0, f338 <_lv_img_cache_open+0x150> cached_src->life = 0; f306: 2300 movs r3, #0 f308: 622b str r3, [r5, #32] if(cached_src->dec_dsc.time_to_open == 0) { f30a: 696b ldr r3, [r5, #20] f30c: 2b00 cmp r3, #0 f30e: d1bf bne.n f290 <_lv_img_cache_open+0xa8> cached_src->dec_dsc.time_to_open = lv_tick_elaps(t_start); f310: 4620 mov r0, r4 f312: 4b20 ldr r3, [pc, #128] ; (f394 <_lv_img_cache_open+0x1ac>) f314: 4798 blx r3 f316: 6168 str r0, [r5, #20] if(cached_src->dec_dsc.time_to_open == 0) cached_src->dec_dsc.time_to_open = 1; f318: 2800 cmp r0, #0 f31a: d1b9 bne.n f290 <_lv_img_cache_open+0xa8> f31c: 2301 movs r3, #1 f31e: 616b str r3, [r5, #20] f320: e7b6 b.n f290 <_lv_img_cache_open+0xa8> for(i = 1; i < entry_cnt; i++) { f322: 4635 mov r5, r6 f324: e7d7 b.n f2d6 <_lv_img_cache_open+0xee> LV_LOG_INFO("image draw: cache miss, cached to an empty entry"); f326: 4b1c ldr r3, [pc, #112] ; (f398 <_lv_img_cache_open+0x1b0>) f328: 9300 str r3, [sp, #0] f32a: 4b13 ldr r3, [pc, #76] ; (f378 <_lv_img_cache_open+0x190>) f32c: 227a movs r2, #122 ; 0x7a f32e: 4913 ldr r1, [pc, #76] ; (f37c <_lv_img_cache_open+0x194>) f330: 2001 movs r0, #1 f332: 4c13 ldr r4, [pc, #76] ; (f380 <_lv_img_cache_open+0x198>) f334: 47a0 blx r4 f336: e7db b.n f2f0 <_lv_img_cache_open+0x108> LV_LOG_WARN("Image draw cannot open the image resource"); f338: 4b18 ldr r3, [pc, #96] ; (f39c <_lv_img_cache_open+0x1b4>) f33a: 9300 str r3, [sp, #0] f33c: 4b0e ldr r3, [pc, #56] ; (f378 <_lv_img_cache_open+0x190>) f33e: 2283 movs r2, #131 ; 0x83 f340: 490e ldr r1, [pc, #56] ; (f37c <_lv_img_cache_open+0x194>) f342: 2002 movs r0, #2 f344: 4c0e ldr r4, [pc, #56] ; (f380 <_lv_img_cache_open+0x198>) f346: 47a0 blx r4 lv_img_decoder_close(&cached_src->dec_dsc); f348: 4628 mov r0, r5 f34a: 4b0e ldr r3, [pc, #56] ; (f384 <_lv_img_cache_open+0x19c>) f34c: 4798 blx r3 _lv_memset_00(&cached_src->dec_dsc, sizeof(lv_img_decoder_dsc_t)); f34e: 2120 movs r1, #32 f350: 4628 mov r0, r5 f352: 4c13 ldr r4, [pc, #76] ; (f3a0 <_lv_img_cache_open+0x1b8>) f354: 47a0 blx r4 _lv_memset_00(cached_src, sizeof(lv_img_cache_entry_t)); f356: 2124 movs r1, #36 ; 0x24 f358: 4628 mov r0, r5 f35a: 47a0 blx r4 cached_src->life = INT32_MIN; /*Make the empty entry very "weak" to force its use */ f35c: f04f 4300 mov.w r3, #2147483648 ; 0x80000000 f360: 622b str r3, [r5, #32] return NULL; f362: 2500 movs r5, #0 f364: e794 b.n f290 <_lv_img_cache_open+0xa8> f366: bf00 nop f368: 20002b58 .word 0x20002b58 f36c: 20006d58 .word 0x20006d58 f370: 80000002 .word 0x80000002 f374: 00025178 .word 0x00025178 f378: 0002511c .word 0x0002511c f37c: 00025148 .word 0x00025148 f380: 00012245 .word 0x00012245 f384: 0000ff1d .word 0x0000ff1d f388: 000251a0 .word 0x000251a0 f38c: 00011041 .word 0x00011041 f390: 0000fe31 .word 0x0000fe31 f394: 00011059 .word 0x00011059 f398: 000251d4 .word 0x000251d4 f39c: 00025208 .word 0x00025208 f3a0: 00012b1f .word 0x00012b1f f3a4: 00009951 .word 0x00009951 f3a8: 0001b4e3 .word 0x0001b4e3 0000f3ac : * 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) { f3ac: 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); f3b0: 4b14 ldr r3, [pc, #80] ; (f404 ) f3b2: 681f ldr r7, [r3, #0] uint16_t i; for(i = 0; i < entry_cnt; i++) { f3b4: 4b14 ldr r3, [pc, #80] ; (f408 ) f3b6: 881b ldrh r3, [r3, #0] f3b8: b30b cbz r3, f3fe f3ba: 4606 mov r6, r0 f3bc: 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)); f3be: f8df 904c ldr.w r9, [pc, #76] ; f40c lv_img_decoder_close(&cache[i].dec_dsc); f3c2: f8df a04c ldr.w sl, [pc, #76] ; f410 for(i = 0; i < entry_cnt; i++) { f3c6: f8df 8040 ldr.w r8, [pc, #64] ; f408 f3ca: e00e b.n f3ea if(cache[i].dec_dsc.src != NULL) { f3cc: b10b cbz r3, f3d2 lv_img_decoder_close(&cache[i].dec_dsc); f3ce: 4628 mov r0, r5 f3d0: 47d0 blx sl _lv_memset_00(&cache[i].dec_dsc, sizeof(lv_img_decoder_dsc_t)); f3d2: 2120 movs r1, #32 f3d4: 4628 mov r0, r5 f3d6: 47c8 blx r9 _lv_memset_00(&cache[i], sizeof(lv_img_cache_entry_t)); f3d8: 2124 movs r1, #36 ; 0x24 f3da: 4628 mov r0, r5 f3dc: 47c8 blx r9 for(i = 0; i < entry_cnt; i++) { f3de: 3401 adds r4, #1 f3e0: b2a4 uxth r4, r4 f3e2: f8b8 3000 ldrh.w r3, [r8] f3e6: 42a3 cmp r3, r4 f3e8: d909 bls.n f3fe if(cache[i].dec_dsc.src == src || src == NULL) { f3ea: eb04 05c4 add.w r5, r4, r4, lsl #3 f3ee: eb07 0585 add.w r5, r7, r5, lsl #2 f3f2: 686b ldr r3, [r5, #4] f3f4: 42b3 cmp r3, r6 f3f6: d0e9 beq.n f3cc f3f8: 2e00 cmp r6, #0 f3fa: d1f0 bne.n f3de f3fc: e7e6 b.n f3cc f3fe: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} f402: bf00 nop f404: 20006d58 .word 0x20006d58 f408: 20002b58 .word 0x20002b58 f40c: 00012b1f .word 0x00012b1f f410: 0000ff1d .word 0x0000ff1d 0000f414 : { f414: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} f418: b082 sub sp, #8 f41a: 4604 mov r4, r0 if(LV_GC_ROOT(_lv_img_cache_array) != NULL) { f41c: 4b21 ldr r3, [pc, #132] ; (f4a4 ) f41e: 681b ldr r3, [r3, #0] f420: b133 cbz r3, f430 lv_img_cache_invalidate_src(NULL); f422: 2000 movs r0, #0 f424: 4b20 ldr r3, [pc, #128] ; (f4a8 ) f426: 4798 blx r3 lv_mem_free(LV_GC_ROOT(_lv_img_cache_array)); f428: 4b1e ldr r3, [pc, #120] ; (f4a4 ) f42a: 6818 ldr r0, [r3, #0] f42c: 4b1f ldr r3, [pc, #124] ; (f4ac ) f42e: 4798 blx r3 LV_GC_ROOT(_lv_img_cache_array) = lv_mem_alloc(sizeof(lv_img_cache_entry_t) * new_entry_cnt); f430: eb04 00c4 add.w r0, r4, r4, lsl #3 f434: 0080 lsls r0, r0, #2 f436: 4b1e ldr r3, [pc, #120] ; (f4b0 ) f438: 4798 blx r3 f43a: 4b1a ldr r3, [pc, #104] ; (f4a4 ) f43c: 6018 str r0, [r3, #0] LV_ASSERT_MEM(LV_GC_ROOT(_lv_img_cache_array)); f43e: 4b1d ldr r3, [pc, #116] ; (f4b4 ) f440: 4798 blx r3 f442: b1e8 cbz r0, f480 if(LV_GC_ROOT(_lv_img_cache_array) == NULL) { f444: 4b17 ldr r3, [pc, #92] ; (f4a4 ) f446: 681b ldr r3, [r3, #0] f448: b343 cbz r3, f49c entry_cnt = new_entry_cnt; f44a: 4b1b ldr r3, [pc, #108] ; (f4b8 ) f44c: 801c strh r4, [r3, #0] for(i = 0; i < entry_cnt; i++) { f44e: b1a4 cbz r4, f47a f450: 2400 movs r4, #0 _lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i].dec_dsc, sizeof(lv_img_decoder_dsc_t)); f452: 4f14 ldr r7, [pc, #80] ; (f4a4 ) f454: 4e19 ldr r6, [pc, #100] ; (f4bc ) for(i = 0; i < entry_cnt; i++) { f456: 4698 mov r8, r3 _lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i].dec_dsc, sizeof(lv_img_decoder_dsc_t)); f458: eb04 05c4 add.w r5, r4, r4, lsl #3 f45c: 00ad lsls r5, r5, #2 f45e: 6838 ldr r0, [r7, #0] f460: 2120 movs r1, #32 f462: 4428 add r0, r5 f464: 47b0 blx r6 _lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i], sizeof(lv_img_cache_entry_t)); f466: 6838 ldr r0, [r7, #0] f468: 2124 movs r1, #36 ; 0x24 f46a: 4428 add r0, r5 f46c: 47b0 blx r6 for(i = 0; i < entry_cnt; i++) { f46e: 3401 adds r4, #1 f470: b2a4 uxth r4, r4 f472: f8b8 3000 ldrh.w r3, [r8] f476: 42a3 cmp r3, r4 f478: d8ee bhi.n f458 } f47a: b002 add sp, #8 f47c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} LV_ASSERT_MEM(LV_GC_ROOT(_lv_img_cache_array)); f480: 4b0f ldr r3, [pc, #60] ; (f4c0 ) f482: 9300 str r3, [sp, #0] f484: 22a8 movs r2, #168 ; 0xa8 f486: 490f ldr r1, [pc, #60] ; (f4c4 ) f488: 2003 movs r0, #3 f48a: 4c0f ldr r4, [pc, #60] ; (f4c8 ) f48c: 47a0 blx r4 f48e: 4b05 ldr r3, [pc, #20] ; (f4a4 ) f490: 681a ldr r2, [r3, #0] f492: 2300 movs r3, #0 f494: 480d ldr r0, [pc, #52] ; (f4cc ) f496: 490e ldr r1, [pc, #56] ; (f4d0 ) f498: 4788 blx r1 f49a: e7fe b.n f49a entry_cnt = 0; f49c: 2200 movs r2, #0 f49e: 4b06 ldr r3, [pc, #24] ; (f4b8 ) f4a0: 801a strh r2, [r3, #0] return; f4a2: e7ea b.n f47a f4a4: 20006d58 .word 0x20006d58 f4a8: 0000f3ad .word 0x0000f3ad f4ac: 000124ad .word 0x000124ad f4b0: 000123c5 .word 0x000123c5 f4b4: 00002299 .word 0x00002299 f4b8: 20002b58 .word 0x20002b58 f4bc: 00012b1f .word 0x00012b1f f4c0: 00025130 .word 0x00025130 f4c4: 00025148 .word 0x00025148 f4c8: 00012245 .word 0x00012245 f4cc: 00023fc0 .word 0x00023fc0 f4d0: 000022a1 .word 0x000022a1 0000f4d4 : * @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) { f4d4: b530 push {r4, r5, lr} f4d6: b087 sub sp, #28 f4d8: 460c mov r4, r1 f4da: 4615 mov r5, r2 (void)decoder; /*Unused*/ lv_img_src_t src_type = lv_img_src_get_type(src); f4dc: 4608 mov r0, r1 f4de: 4b33 ldr r3, [pc, #204] ; (f5ac ) f4e0: 4798 blx r3 if(src_type == LV_IMG_SRC_VARIABLE) { f4e2: b9d8 cbnz r0, f51c lv_img_cf_t cf = ((lv_img_dsc_t *)src)->header.cf; f4e4: 7823 ldrb r3, [r4, #0] f4e6: f3c3 0304 ubfx r3, r3, #0, #5 if(cf < CF_BUILT_IN_FIRST || cf > CF_BUILT_IN_LAST) return LV_RES_INV; f4ea: 3b04 subs r3, #4 f4ec: b2db uxtb r3, r3 f4ee: 2b0a cmp r3, #10 f4f0: d859 bhi.n f5a6 header->w = ((lv_img_dsc_t *)src)->header.w; f4f2: 6823 ldr r3, [r4, #0] f4f4: f3c3 238a ubfx r3, r3, #10, #11 f4f8: 682a ldr r2, [r5, #0] f4fa: f363 2294 bfi r2, r3, #10, #11 f4fe: 602a str r2, [r5, #0] header->h = ((lv_img_dsc_t *)src)->header.h; f500: 8863 ldrh r3, [r4, #2] f502: f3c3 134a ubfx r3, r3, #5, #11 f506: 886a ldrh r2, [r5, #2] f508: f363 124f bfi r2, r3, #5, #11 f50c: 806a strh r2, [r5, #2] header->cf = ((lv_img_dsc_t *)src)->header.cf; f50e: 7822 ldrb r2, [r4, #0] f510: 782b ldrb r3, [r5, #0] f512: f362 0304 bfi r3, r2, #0, #5 f516: 702b strb r3, [r5, #0] } else { LV_LOG_WARN("Image get info found unknown src type"); return LV_RES_INV; } return LV_RES_OK; f518: 2001 movs r0, #1 f51a: e00d b.n f538 else if(src_type == LV_IMG_SRC_FILE) { f51c: 2801 cmp r0, #1 f51e: d00d beq.n f53c else if(src_type == LV_IMG_SRC_SYMBOL) { f520: 2802 cmp r0, #2 f522: d032 beq.n f58a LV_LOG_WARN("Image get info found unknown src type"); f524: 4b22 ldr r3, [pc, #136] ; (f5b0 ) f526: 9300 str r3, [sp, #0] f528: 4b22 ldr r3, [pc, #136] ; (f5b4 ) f52a: f44f 729a mov.w r2, #308 ; 0x134 f52e: 4922 ldr r1, [pc, #136] ; (f5b8 ) f530: 2002 movs r0, #2 f532: 4c22 ldr r4, [pc, #136] ; (f5bc ) f534: 47a0 blx r4 return LV_RES_INV; f536: 2000 movs r0, #0 } f538: b007 add sp, #28 f53a: bd30 pop {r4, r5, pc} res = lv_fs_open(&file, src, LV_FS_MODE_RD); f53c: 2202 movs r2, #2 f53e: 4621 mov r1, r4 f540: a804 add r0, sp, #16 f542: 4b1f ldr r3, [pc, #124] ; (f5c0 ) f544: 4798 blx r3 if(res == LV_FS_RES_OK) { f546: b138 cbz r0, f558 if(header->cf < CF_BUILT_IN_FIRST || header->cf > CF_BUILT_IN_LAST) return LV_RES_INV; f548: 782b ldrb r3, [r5, #0] f54a: 331c adds r3, #28 f54c: f003 031f and.w r3, r3, #31 f550: 2b0a cmp r3, #10 f552: d818 bhi.n f586 return LV_RES_OK; f554: 2001 movs r0, #1 f556: e7ef b.n f538 res = lv_fs_read(&file, header, sizeof(lv_img_header_t), &rn); f558: ab03 add r3, sp, #12 f55a: 2204 movs r2, #4 f55c: 4629 mov r1, r5 f55e: a804 add r0, sp, #16 f560: 4c18 ldr r4, [pc, #96] ; (f5c4 ) f562: 47a0 blx r4 f564: 4604 mov r4, r0 lv_fs_close(&file); f566: a804 add r0, sp, #16 f568: 4b17 ldr r3, [pc, #92] ; (f5c8 ) f56a: 4798 blx r3 if(res != LV_FS_RES_OK || rn != sizeof(lv_img_header_t)) { f56c: b914 cbnz r4, f574 f56e: 9b03 ldr r3, [sp, #12] f570: 2b04 cmp r3, #4 f572: d0e9 beq.n f548 LV_LOG_WARN("Image get info get read file header"); f574: 4b15 ldr r3, [pc, #84] ; (f5cc ) f576: 9300 str r3, [sp, #0] f578: 4b0e ldr r3, [pc, #56] ; (f5b4 ) f57a: f240 1221 movw r2, #289 ; 0x121 f57e: 490e ldr r1, [pc, #56] ; (f5b8 ) f580: 2002 movs r0, #2 f582: 4c0e ldr r4, [pc, #56] ; (f5bc ) f584: 47a0 blx r4 return LV_RES_INV; f586: 2000 movs r0, #0 f588: e7d6 b.n f538 header->w = 1; f58a: 682b ldr r3, [r5, #0] f58c: 2001 movs r0, #1 f58e: f360 2394 bfi r3, r0, #10, #11 f592: 602b str r3, [r5, #0] header->h = 1; f594: 0c1a lsrs r2, r3, #16 f596: f360 124f bfi r2, r0, #5, #11 f59a: 806a strh r2, [r5, #2] header->cf = LV_IMG_CF_ALPHA_1BIT; f59c: 220b movs r2, #11 f59e: f362 0304 bfi r3, r2, #0, #5 f5a2: 702b strb r3, [r5, #0] f5a4: e7c8 b.n f538 if(cf < CF_BUILT_IN_FIRST || cf > CF_BUILT_IN_LAST) return LV_RES_INV; f5a6: 2000 movs r0, #0 f5a8: e7c6 b.n f538 f5aa: bf00 nop f5ac: 00009951 .word 0x00009951 f5b0: 00025354 .word 0x00025354 f5b4: 00025234 .word 0x00025234 f5b8: 00025300 .word 0x00025300 f5bc: 00012245 .word 0x00012245 f5c0: 00011d35 .word 0x00011d35 f5c4: 00011ca5 .word 0x00011ca5 f5c8: 00011c75 .word 0x00011c75 f5cc: 00025330 .word 0x00025330 0000f5d0 : * 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) { f5d0: b538 push {r3, r4, r5, lr} (void)decoder; /*Unused*/ lv_img_decoder_built_in_data_t * user_data = dsc->user_data; f5d2: 69cc ldr r4, [r1, #28] if(user_data) { f5d4: b1a4 cbz r4, f600 f5d6: 460d mov r5, r1 #if LV_USE_FILESYSTEM if(user_data->f) { f5d8: 6820 ldr r0, [r4, #0] f5da: b120 cbz r0, f5e6 lv_fs_close(user_data->f); f5dc: 4b09 ldr r3, [pc, #36] ; (f604 ) f5de: 4798 blx r3 lv_mem_free(user_data->f); f5e0: 6820 ldr r0, [r4, #0] f5e2: 4b09 ldr r3, [pc, #36] ; (f608 ) f5e4: 4798 blx r3 } #endif if(user_data->palette) lv_mem_free(user_data->palette); f5e6: 6860 ldr r0, [r4, #4] f5e8: b108 cbz r0, f5ee f5ea: 4b07 ldr r3, [pc, #28] ; (f608 ) f5ec: 4798 blx r3 if(user_data->opa) lv_mem_free(user_data->opa); f5ee: 68a0 ldr r0, [r4, #8] f5f0: b108 cbz r0, f5f6 f5f2: 4b05 ldr r3, [pc, #20] ; (f608 ) f5f4: 4798 blx r3 lv_mem_free(user_data); f5f6: 4620 mov r0, r4 f5f8: 4b03 ldr r3, [pc, #12] ; (f608 ) f5fa: 4798 blx r3 dsc->user_data = NULL; f5fc: 2300 movs r3, #0 f5fe: 61eb str r3, [r5, #28] f600: bd38 pop {r3, r4, r5, pc} f602: bf00 nop f604: 00011c75 .word 0x00011c75 f608: 000124ad .word 0x000124ad 0000f60c : { f60c: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} f610: b085 sub sp, #20 f612: 4605 mov r5, r0 f614: 460c mov r4, r1 if(dsc->src_type == LV_IMG_SRC_FILE) { f616: 7a8b ldrb r3, [r1, #10] f618: 2b01 cmp r3, #1 f61a: d016 beq.n f64a else if(dsc->src_type == LV_IMG_SRC_VARIABLE) { f61c: 2b00 cmp r3, #0 f61e: f040 81aa bne.w f976 if(((lv_img_dsc_t *)dsc->src)->data == NULL) { f622: 684b ldr r3, [r1, #4] f624: 689b ldr r3, [r3, #8] f626: 2b00 cmp r3, #0 f628: f000 81a3 beq.w f972 lv_img_cf_t cf = dsc->header.cf; f62c: 7b08 ldrb r0, [r1, #12] f62e: 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) { f632: 1f03 subs r3, r0, #4 f634: b2db uxtb r3, r3 f636: 2b02 cmp r3, #2 f638: f200 8085 bhi.w f746 dsc->img_data = ((lv_img_dsc_t *)dsc->src)->data; f63c: 6863 ldr r3, [r4, #4] f63e: 689b ldr r3, [r3, #8] f640: 6123 str r3, [r4, #16] return LV_RES_OK; f642: 2001 movs r0, #1 } f644: b005 add sp, #20 f646: 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; f64a: 6848 ldr r0, [r1, #4] f64c: 4b96 ldr r3, [pc, #600] ; (f8a8 ) f64e: 4798 blx r3 f650: 4996 ldr r1, [pc, #600] ; (f8ac ) f652: 4b97 ldr r3, [pc, #604] ; (f8b0 ) f654: 4798 blx r3 f656: 2800 cmp r0, #0 f658: d12a bne.n f6b0 lv_fs_res_t res = lv_fs_open(&f, dsc->src, LV_FS_MODE_RD); f65a: 2202 movs r2, #2 f65c: 6861 ldr r1, [r4, #4] f65e: a802 add r0, sp, #8 f660: 4b94 ldr r3, [pc, #592] ; (f8b4 ) f662: 4798 blx r3 if(res != LV_FS_RES_OK) { f664: b9d8 cbnz r0, f69e if(dsc->user_data == NULL) { f666: 69e3 ldr r3, [r4, #28] f668: b323 cbz r3, f6b4 lv_img_decoder_built_in_data_t * user_data = dsc->user_data; f66a: 69e6 ldr r6, [r4, #28] user_data->f = lv_mem_alloc(sizeof(f)); f66c: 2008 movs r0, #8 f66e: 4b92 ldr r3, [pc, #584] ; (f8b8 ) f670: 4798 blx r3 f672: 6030 str r0, [r6, #0] LV_ASSERT_MEM(user_data->f); f674: 4b91 ldr r3, [pc, #580] ; (f8bc ) f676: 4798 blx r3 f678: 2800 cmp r0, #0 f67a: d040 beq.n f6fe if(user_data->f == NULL) { f67c: 6833 ldr r3, [r6, #0] f67e: 2b00 cmp r3, #0 f680: d14b bne.n f71a LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); f682: 4b8f ldr r3, [pc, #572] ; (f8c0 ) f684: 9300 str r3, [sp, #0] f686: 4b8f ldr r3, [pc, #572] ; (f8c4 ) f688: f240 125f movw r2, #351 ; 0x15f f68c: 498e ldr r1, [pc, #568] ; (f8c8 ) f68e: 2003 movs r0, #3 f690: 4e8e ldr r6, [pc, #568] ; (f8cc ) f692: 47b0 blx r6 lv_img_decoder_built_in_close(decoder, dsc); f694: 4621 mov r1, r4 f696: 4628 mov r0, r5 f698: 4b8d ldr r3, [pc, #564] ; (f8d0 ) f69a: 4798 blx r3 return LV_RES_INV; f69c: e008 b.n f6b0 LV_LOG_WARN("Built-in image decoder can't open the file"); f69e: 4b8d ldr r3, [pc, #564] ; (f8d4 ) f6a0: 9300 str r3, [sp, #0] f6a2: 4b88 ldr r3, [pc, #544] ; (f8c4 ) f6a4: f44f 72a6 mov.w r2, #332 ; 0x14c f6a8: 4987 ldr r1, [pc, #540] ; (f8c8 ) f6aa: 2002 movs r0, #2 f6ac: 4c87 ldr r4, [pc, #540] ; (f8cc ) f6ae: 47a0 blx r4 if(strcmp(lv_fs_get_ext(dsc->src), "bin")) return LV_RES_INV; f6b0: 2000 movs r0, #0 f6b2: e7c7 b.n f644 dsc->user_data = lv_mem_alloc(sizeof(lv_img_decoder_built_in_data_t)); f6b4: 200c movs r0, #12 f6b6: 4b80 ldr r3, [pc, #512] ; (f8b8 ) f6b8: 4798 blx r3 f6ba: 61e0 str r0, [r4, #28] LV_ASSERT_MEM(dsc->user_data); f6bc: 4b7f ldr r3, [pc, #508] ; (f8bc ) f6be: 4798 blx r3 f6c0: b968 cbnz r0, f6de f6c2: 4b80 ldr r3, [pc, #512] ; (f8c4 ) f6c4: 9300 str r3, [sp, #0] f6c6: f240 1253 movw r2, #339 ; 0x153 f6ca: 497f ldr r1, [pc, #508] ; (f8c8 ) f6cc: 2003 movs r0, #3 f6ce: 4d7f ldr r5, [pc, #508] ; (f8cc ) f6d0: 47a8 blx r5 f6d2: 69e2 ldr r2, [r4, #28] f6d4: 2300 movs r3, #0 f6d6: 4880 ldr r0, [pc, #512] ; (f8d8 ) f6d8: 4980 ldr r1, [pc, #512] ; (f8dc ) f6da: 4788 blx r1 f6dc: e7fe b.n f6dc if(dsc->user_data == NULL) { f6de: 69e0 ldr r0, [r4, #28] f6e0: b948 cbnz r0, f6f6 LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); f6e2: 4b77 ldr r3, [pc, #476] ; (f8c0 ) f6e4: 9300 str r3, [sp, #0] f6e6: 4b77 ldr r3, [pc, #476] ; (f8c4 ) f6e8: f240 1255 movw r2, #341 ; 0x155 f6ec: 4976 ldr r1, [pc, #472] ; (f8c8 ) f6ee: 2003 movs r0, #3 f6f0: 4c76 ldr r4, [pc, #472] ; (f8cc ) f6f2: 47a0 blx r4 return LV_RES_INV; f6f4: e7dc b.n f6b0 _lv_memset_00(dsc->user_data, sizeof(lv_img_decoder_built_in_data_t)); f6f6: 210c movs r1, #12 f6f8: 4b79 ldr r3, [pc, #484] ; (f8e0 ) f6fa: 4798 blx r3 f6fc: e7b5 b.n f66a LV_ASSERT_MEM(user_data->f); f6fe: 4b71 ldr r3, [pc, #452] ; (f8c4 ) f700: 9300 str r3, [sp, #0] f702: f240 125d movw r2, #349 ; 0x15d f706: 4970 ldr r1, [pc, #448] ; (f8c8 ) f708: 2003 movs r0, #3 f70a: 4c70 ldr r4, [pc, #448] ; (f8cc ) f70c: 47a0 blx r4 f70e: 6832 ldr r2, [r6, #0] f710: 2300 movs r3, #0 f712: 4871 ldr r0, [pc, #452] ; (f8d8 ) f714: 4971 ldr r1, [pc, #452] ; (f8dc ) f716: 4788 blx r1 f718: e7fe b.n f718 f71a: f10d 0207 add.w r2, sp, #7 f71e: f103 0108 add.w r1, r3, #8 f722: f812 0f01 ldrb.w r0, [r2, #1]! f726: f803 0b01 strb.w r0, [r3], #1 while(len) { f72a: 428b cmp r3, r1 f72c: d1f9 bne.n f722 lv_img_cf_t cf = dsc->header.cf; f72e: 7b20 ldrb r0, [r4, #12] f730: 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) { f734: 1f03 subs r3, r0, #4 f736: b2db uxtb r3, r3 f738: 2b02 cmp r3, #2 f73a: d804 bhi.n f746 if(dsc->src_type == LV_IMG_SRC_VARIABLE) { f73c: 7aa3 ldrb r3, [r4, #10] f73e: 2b00 cmp r3, #0 f740: f43f af7c beq.w f63c f744: e11f b.n f986 else if(cf == LV_IMG_CF_INDEXED_1BIT || cf == LV_IMG_CF_INDEXED_2BIT || cf == LV_IMG_CF_INDEXED_4BIT || f746: 1fc3 subs r3, r0, #7 f748: b2db uxtb r3, r3 f74a: 2b03 cmp r3, #3 f74c: d909 bls.n f762 else if(cf == LV_IMG_CF_ALPHA_1BIT || cf == LV_IMG_CF_ALPHA_2BIT || cf == LV_IMG_CF_ALPHA_4BIT || f74e: f1a0 030b sub.w r3, r0, #11 f752: b2db uxtb r3, r3 f754: 2b03 cmp r3, #3 f756: f200 80fd bhi.w f954 dsc->img_data = NULL; f75a: 2300 movs r3, #0 f75c: 6123 str r3, [r4, #16] return LV_RES_OK; /*Nothing to process*/ f75e: 2001 movs r0, #1 f760: e770 b.n f644 uint8_t px_size = lv_img_cf_get_px_size(cf); f762: 4b60 ldr r3, [pc, #384] ; (f8e4 ) f764: 4798 blx r3 f766: 4607 mov r7, r0 if(dsc->user_data == NULL) { f768: 69e3 ldr r3, [r4, #28] f76a: b1bb cbz r3, f79c lv_img_decoder_built_in_data_t * user_data = dsc->user_data; f76c: 69e6 ldr r6, [r4, #28] user_data->palette = lv_mem_alloc(palette_size * sizeof(lv_color_t)); f76e: 2002 movs r0, #2 f770: 40b8 lsls r0, r7 f772: 4b51 ldr r3, [pc, #324] ; (f8b8 ) f774: 4798 blx r3 f776: 6070 str r0, [r6, #4] LV_ASSERT_MEM(user_data->palette); f778: 4b50 ldr r3, [pc, #320] ; (f8bc ) f77a: 4798 blx r3 f77c: 2800 cmp r0, #0 f77e: d137 bne.n f7f0 f780: 4b50 ldr r3, [pc, #320] ; (f8c4 ) f782: 9300 str r3, [sp, #0] f784: f240 1297 movw r2, #407 ; 0x197 f788: 494f ldr r1, [pc, #316] ; (f8c8 ) f78a: 2003 movs r0, #3 f78c: 4c4f ldr r4, [pc, #316] ; (f8cc ) f78e: 47a0 blx r4 f790: 6872 ldr r2, [r6, #4] f792: 2300 movs r3, #0 f794: 4850 ldr r0, [pc, #320] ; (f8d8 ) f796: 4951 ldr r1, [pc, #324] ; (f8dc ) f798: 4788 blx r1 f79a: e7fe b.n f79a dsc->user_data = lv_mem_alloc(sizeof(lv_img_decoder_built_in_data_t)); f79c: 200c movs r0, #12 f79e: 4b46 ldr r3, [pc, #280] ; (f8b8 ) f7a0: 4798 blx r3 f7a2: 61e0 str r0, [r4, #28] LV_ASSERT_MEM(dsc->user_data); f7a4: 4b45 ldr r3, [pc, #276] ; (f8bc ) f7a6: 4798 blx r3 f7a8: b968 cbnz r0, f7c6 f7aa: 4b46 ldr r3, [pc, #280] ; (f8c4 ) f7ac: 9300 str r3, [sp, #0] f7ae: f44f 72c6 mov.w r2, #396 ; 0x18c f7b2: 4945 ldr r1, [pc, #276] ; (f8c8 ) f7b4: 2003 movs r0, #3 f7b6: 4d45 ldr r5, [pc, #276] ; (f8cc ) f7b8: 47a8 blx r5 f7ba: 69e2 ldr r2, [r4, #28] f7bc: 2300 movs r3, #0 f7be: 4846 ldr r0, [pc, #280] ; (f8d8 ) f7c0: 4946 ldr r1, [pc, #280] ; (f8dc ) f7c2: 4788 blx r1 f7c4: e7fe b.n f7c4 if(dsc->user_data == NULL) { f7c6: 69e0 ldr r0, [r4, #28] f7c8: b970 cbnz r0, f7e8 LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); f7ca: 4b3d ldr r3, [pc, #244] ; (f8c0 ) f7cc: 9300 str r3, [sp, #0] f7ce: 4b3d ldr r3, [pc, #244] ; (f8c4 ) f7d0: f44f 72c7 mov.w r2, #398 ; 0x18e f7d4: 493c ldr r1, [pc, #240] ; (f8c8 ) f7d6: 2003 movs r0, #3 f7d8: 4e3c ldr r6, [pc, #240] ; (f8cc ) f7da: 47b0 blx r6 lv_img_decoder_built_in_close(decoder, dsc); f7dc: 4621 mov r1, r4 f7de: 4628 mov r0, r5 f7e0: 4b3b ldr r3, [pc, #236] ; (f8d0 ) f7e2: 4798 blx r3 return LV_RES_INV; f7e4: 2000 movs r0, #0 f7e6: e72d b.n f644 _lv_memset_00(dsc->user_data, sizeof(lv_img_decoder_built_in_data_t)); f7e8: 210c movs r1, #12 f7ea: 4b3d ldr r3, [pc, #244] ; (f8e0 ) f7ec: 4798 blx r3 f7ee: e7bd b.n f76c uint32_t palette_size = 1 << px_size; f7f0: 2301 movs r3, #1 f7f2: fa03 f707 lsl.w r7, r3, r7 user_data->opa = lv_mem_alloc(palette_size * sizeof(lv_opa_t)); f7f6: 4638 mov r0, r7 f7f8: 4b2f ldr r3, [pc, #188] ; (f8b8 ) f7fa: 4798 blx r3 f7fc: 60b0 str r0, [r6, #8] LV_ASSERT_MEM(user_data->opa); f7fe: 4b2f ldr r3, [pc, #188] ; (f8bc ) f800: 4798 blx r3 f802: 2800 cmp r0, #0 f804: d032 beq.n f86c if(user_data->palette == NULL || user_data->opa == NULL) { f806: 6873 ldr r3, [r6, #4] f808: 2b00 cmp r3, #0 f80a: d03d beq.n f888 f80c: 68b3 ldr r3, [r6, #8] f80e: 2b00 cmp r3, #0 f810: d03a beq.n f888 if(dsc->src_type == LV_IMG_SRC_FILE) { f812: 7aa3 ldrb r3, [r4, #10] f814: 2b01 cmp r3, #1 f816: d067 beq.n f8e8 lv_color32_t * palette_p = (lv_color32_t *)((lv_img_dsc_t *)dsc->src)->data; f818: 6863 ldr r3, [r4, #4] f81a: 689a ldr r2, [r3, #8] for(i = 0; i < palette_size; i++) { f81c: 2f00 cmp r7, #0 f81e: f000 8095 beq.w f94c f822: 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); f824: 6870 ldr r0, [r6, #4] f826: 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); f82a: f892 e001 ldrb.w lr, [r2, #1] f82e: ea4f 0e9e mov.w lr, lr, lsr #2 f832: 7895 ldrb r5, [r2, #2] f834: 08ed lsrs r5, r5, #3 f836: 7811 ldrb r1, [r2, #0] f838: 08c9 lsrs r1, r1, #3 f83a: f810 8013 ldrb.w r8, [r0, r3, lsl #1] f83e: f361 0804 bfi r8, r1, #0, #5 f842: f800 8013 strb.w r8, [r0, r3, lsl #1] f846: f830 1013 ldrh.w r1, [r0, r3, lsl #1] f84a: f36e 114a bfi r1, lr, #5, #6 f84e: f820 1013 strh.w r1, [r0, r3, lsl #1] f852: 0a09 lsrs r1, r1, #8 f854: f365 01c7 bfi r1, r5, #3, #5 f858: f88c 1001 strb.w r1, [ip, #1] user_data->opa[i] = palette_p[i].ch.alpha; f85c: 78d0 ldrb r0, [r2, #3] f85e: 68b1 ldr r1, [r6, #8] f860: 54c8 strb r0, [r1, r3] for(i = 0; i < palette_size; i++) { f862: 3301 adds r3, #1 f864: 3204 adds r2, #4 f866: 429f cmp r7, r3 f868: d1dc bne.n f824 f86a: e06f b.n f94c LV_ASSERT_MEM(user_data->opa); f86c: 4b15 ldr r3, [pc, #84] ; (f8c4 ) f86e: 9300 str r3, [sp, #0] f870: f240 1299 movw r2, #409 ; 0x199 f874: 4914 ldr r1, [pc, #80] ; (f8c8 ) f876: 2003 movs r0, #3 f878: 4c14 ldr r4, [pc, #80] ; (f8cc ) f87a: 47a0 blx r4 f87c: 68b2 ldr r2, [r6, #8] f87e: 2300 movs r3, #0 f880: 4815 ldr r0, [pc, #84] ; (f8d8 ) f882: 4916 ldr r1, [pc, #88] ; (f8dc ) f884: 4788 blx r1 f886: e7fe b.n f886 LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); f888: 4b0d ldr r3, [pc, #52] ; (f8c0 ) f88a: 9300 str r3, [sp, #0] f88c: 4b0d ldr r3, [pc, #52] ; (f8c4 ) f88e: f240 129b movw r2, #411 ; 0x19b f892: 490d ldr r1, [pc, #52] ; (f8c8 ) f894: 2003 movs r0, #3 f896: 4e0d ldr r6, [pc, #52] ; (f8cc ) f898: 47b0 blx r6 lv_img_decoder_built_in_close(decoder, dsc); f89a: 4621 mov r1, r4 f89c: 4628 mov r0, r5 f89e: 4b0c ldr r3, [pc, #48] ; (f8d0 ) f8a0: 4798 blx r3 return LV_RES_INV; f8a2: 2000 movs r0, #0 f8a4: e6ce b.n f644 f8a6: bf00 nop f8a8: 00011e09 .word 0x00011e09 f8ac: 0002537c .word 0x0002537c f8b0: 0001b4e3 .word 0x0001b4e3 f8b4: 00011d35 .word 0x00011d35 f8b8: 000123c5 .word 0x000123c5 f8bc: 00002299 .word 0x00002299 f8c0: 000253ac .word 0x000253ac f8c4: 00025254 .word 0x00025254 f8c8: 00025300 .word 0x00025300 f8cc: 00012245 .word 0x00012245 f8d0: 0000f5d1 .word 0x0000f5d1 f8d4: 00025380 .word 0x00025380 f8d8: 00023fc0 .word 0x00023fc0 f8dc: 000022a1 .word 0x000022a1 f8e0: 00012b1f .word 0x00012b1f f8e4: 00009669 .word 0x00009669 lv_fs_seek(user_data->f, 4); /*Skip the header*/ f8e8: 2104 movs r1, #4 f8ea: 6830 ldr r0, [r6, #0] f8ec: 4b28 ldr r3, [pc, #160] ; (f990 ) f8ee: 4798 blx r3 for(i = 0; i < palette_size; i++) { f8f0: b367 cbz r7, f94c f8f2: 2500 movs r5, #0 lv_fs_read(user_data->f, &cur_color, sizeof(lv_color32_t), NULL); f8f4: 46a9 mov r9, r5 f8f6: f8df 80b0 ldr.w r8, [pc, #176] ; f9a8 f8fa: 464b mov r3, r9 f8fc: 2204 movs r2, #4 f8fe: a902 add r1, sp, #8 f900: 6830 ldr r0, [r6, #0] f902: 47c0 blx r8 user_data->palette[i] = lv_color_make(cur_color.ch.red, cur_color.ch.green, cur_color.ch.blue); f904: 6872 ldr r2, [r6, #4] f906: eb02 0e45 add.w lr, r2, r5, lsl #1 f90a: f89d 0009 ldrb.w r0, [sp, #9] f90e: 0880 lsrs r0, r0, #2 f910: f89d 100a ldrb.w r1, [sp, #10] f914: 08c9 lsrs r1, r1, #3 f916: f89d 3008 ldrb.w r3, [sp, #8] f91a: 08db lsrs r3, r3, #3 f91c: f812 c015 ldrb.w ip, [r2, r5, lsl #1] f920: f363 0c04 bfi ip, r3, #0, #5 f924: f802 c015 strb.w ip, [r2, r5, lsl #1] f928: f832 3015 ldrh.w r3, [r2, r5, lsl #1] f92c: f360 134a bfi r3, r0, #5, #6 f930: f822 3015 strh.w r3, [r2, r5, lsl #1] f934: 0a1b lsrs r3, r3, #8 f936: f361 03c7 bfi r3, r1, #3, #5 f93a: f88e 3001 strb.w r3, [lr, #1] user_data->opa[i] = cur_color.ch.alpha; f93e: f89d 200b ldrb.w r2, [sp, #11] f942: 68b3 ldr r3, [r6, #8] f944: 555a strb r2, [r3, r5] for(i = 0; i < palette_size; i++) { f946: 3501 adds r5, #1 f948: 42af cmp r7, r5 f94a: d1d6 bne.n f8fa dsc->img_data = NULL; f94c: 2300 movs r3, #0 f94e: 6123 str r3, [r4, #16] return LV_RES_OK; f950: 2001 movs r0, #1 f952: e677 b.n f644 lv_img_decoder_built_in_close(decoder, dsc); f954: 4621 mov r1, r4 f956: 4628 mov r0, r5 f958: 4b0e ldr r3, [pc, #56] ; (f994 ) f95a: 4798 blx r3 LV_LOG_WARN("Image decoder open: unknown color format") f95c: 4b0e ldr r3, [pc, #56] ; (f998 ) f95e: 9300 str r3, [sp, #0] f960: 4b0e ldr r3, [pc, #56] ; (f99c ) f962: f240 12d3 movw r2, #467 ; 0x1d3 f966: 490e ldr r1, [pc, #56] ; (f9a0 ) f968: 2002 movs r0, #2 f96a: 4c0e ldr r4, [pc, #56] ; (f9a4 ) f96c: 47a0 blx r4 return LV_RES_INV; f96e: 2000 movs r0, #0 f970: e668 b.n f644 return LV_RES_INV; f972: 2000 movs r0, #0 f974: e666 b.n f644 lv_img_cf_t cf = dsc->header.cf; f976: 7b08 ldrb r0, [r1, #12] f978: 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) { f97c: 1f03 subs r3, r0, #4 f97e: b2db uxtb r3, r3 f980: 2b02 cmp r3, #2 f982: f63f aee0 bhi.w f746 dsc->img_data = NULL; f986: 2300 movs r3, #0 f988: 6123 str r3, [r4, #16] return LV_RES_OK; f98a: 2001 movs r0, #1 f98c: e65a b.n f644 f98e: bf00 nop f990: 00011ce1 .word 0x00011ce1 f994: 0000f5d1 .word 0x0000f5d1 f998: 000253d8 .word 0x000253d8 f99c: 00025254 .word 0x00025254 f9a0: 00025300 .word 0x00025300 f9a4: 00012245 .word 0x00012245 f9a8: 00011ca5 .word 0x00011ca5 0000f9ac : { f9ac: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} f9b0: b08b sub sp, #44 ; 0x2c f9b2: 460d mov r5, r1 f9b4: 4614 mov r4, r2 f9b6: 469a mov sl, r3 f9b8: 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 || f9bc: 7b0b ldrb r3, [r1, #12] f9be: f003 031f and.w r3, r3, #31 f9c2: 1f1a subs r2, r3, #4 f9c4: b2d2 uxtb r2, r2 f9c6: 2a02 cmp r2, #2 f9c8: d845 bhi.n fa56 if(dsc->src_type == LV_IMG_SRC_FILE) { f9ca: 7a8b ldrb r3, [r1, #10] f9cc: 2b01 cmp r3, #1 f9ce: d003 beq.n f9d8 lv_res_t res = LV_RES_INV; f9d0: 2000 movs r0, #0 } f9d2: b00b add sp, #44 ; 0x2c f9d4: 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; f9d8: 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); f9dc: 7b08 ldrb r0, [r1, #12] f9de: f000 001f and.w r0, r0, #31 f9e2: 4b9e ldr r3, [pc, #632] ; (fc5c ) f9e4: 4798 blx r3 f9e6: 4607 mov r7, r0 uint32_t pos = ((y * dsc->header.w + x) * px_size) >> 3; f9e8: 68e9 ldr r1, [r5, #12] f9ea: f3c1 218a ubfx r1, r1, #10, #11 f9ee: fb0a 4101 mla r1, sl, r1, r4 f9f2: fb00 f101 mul.w r1, r0, r1 f9f6: 10c9 asrs r1, r1, #3 pos += 4; /*Skip the header*/ res = lv_fs_seek(user_data->f, pos); f9f8: 3104 adds r1, #4 f9fa: f8d8 0000 ldr.w r0, [r8] f9fe: 4b98 ldr r3, [pc, #608] ; (fc60 ) fa00: 4798 blx r3 if(res != LV_FS_RES_OK) { fa02: b9d8 cbnz r0, fa3c LV_LOG_WARN("Built-in image decoder seek failed"); return LV_RES_INV; } uint32_t btr = len * (px_size >> 3); fa04: f3c7 07c7 ubfx r7, r7, #3, #8 fa08: fb06 f607 mul.w r6, r6, r7 uint32_t br = 0; fa0c: ab0a add r3, sp, #40 ; 0x28 fa0e: 2200 movs r2, #0 fa10: f843 2d10 str.w r2, [r3, #-16]! lv_fs_read(user_data->f, buf, btr, &br); fa14: 4632 mov r2, r6 fa16: 9915 ldr r1, [sp, #84] ; 0x54 fa18: f8d8 0000 ldr.w r0, [r8] fa1c: 4c91 ldr r4, [pc, #580] ; (fc64 ) fa1e: 47a0 blx r4 if(res != LV_FS_RES_OK || btr != br) { fa20: 9b06 ldr r3, [sp, #24] fa22: 429e cmp r6, r3 fa24: d015 beq.n fa52 LV_LOG_WARN("Built-in image decoder read failed"); fa26: 4b90 ldr r3, [pc, #576] ; (fc68 ) fa28: 9300 str r3, [sp, #0] fa2a: 4b90 ldr r3, [pc, #576] ; (fc6c ) fa2c: f240 2235 movw r2, #565 ; 0x235 fa30: 498f ldr r1, [pc, #572] ; (fc70 ) fa32: 2002 movs r0, #2 fa34: 4c8f ldr r4, [pc, #572] ; (fc74 ) fa36: 47a0 blx r4 return LV_RES_INV; fa38: 2000 movs r0, #0 fa3a: e7ca b.n f9d2 LV_LOG_WARN("Built-in image decoder seek failed"); fa3c: 4b8e ldr r3, [pc, #568] ; (fc78 ) fa3e: 9300 str r3, [sp, #0] fa40: 4b8a ldr r3, [pc, #552] ; (fc6c ) fa42: f240 222e movw r2, #558 ; 0x22e fa46: 498a ldr r1, [pc, #552] ; (fc70 ) fa48: 2002 movs r0, #2 fa4a: 4c8a ldr r4, [pc, #552] ; (fc74 ) fa4c: 47a0 blx r4 return LV_RES_INV; fa4e: 2000 movs r0, #0 fa50: e7bf b.n f9d2 } return LV_RES_OK; fa52: 2001 movs r0, #1 fa54: e7bd b.n f9d2 dsc->header.cf == LV_IMG_CF_ALPHA_4BIT || dsc->header.cf == LV_IMG_CF_ALPHA_8BIT) { fa56: 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 || fa5a: b2d2 uxtb r2, r2 fa5c: 2a03 cmp r2, #3 fa5e: d90f bls.n fa80 dsc->header.cf == LV_IMG_CF_INDEXED_4BIT || dsc->header.cf == LV_IMG_CF_INDEXED_8BIT) { fa60: 3b07 subs r3, #7 else if(dsc->header.cf == LV_IMG_CF_INDEXED_1BIT || dsc->header.cf == LV_IMG_CF_INDEXED_2BIT || fa62: b2db uxtb r3, r3 fa64: 2b03 cmp r3, #3 fa66: f240 80df bls.w fc28 LV_LOG_WARN("Built-in image decoder read not supports the color format"); fa6a: 4b84 ldr r3, [pc, #528] ; (fc7c ) fa6c: 9300 str r3, [sp, #0] fa6e: 4b84 ldr r3, [pc, #528] ; (fc80 ) fa70: f44f 72fe mov.w r2, #508 ; 0x1fc fa74: 497e ldr r1, [pc, #504] ; (fc70 ) fa76: 2002 movs r0, #2 fa78: 4c7e ldr r4, [pc, #504] ; (fc74 ) fa7a: 47a0 blx r4 return LV_RES_INV; fa7c: 2000 movs r0, #0 fa7e: e7a8 b.n f9d2 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)*/ fa80: 2200 movs r2, #0 fa82: f88d 2010 strb.w r2, [sp, #16] fa86: 23ff movs r3, #255 ; 0xff fa88: f88d 3011 strb.w r3, [sp, #17] const lv_opa_t alpha2_opa_table[4] = {0, 85, 170, 255}; /*Opacity mapping with bpp = 2*/ fa8c: f88d 2014 strb.w r2, [sp, #20] fa90: 2255 movs r2, #85 ; 0x55 fa92: f88d 2015 strb.w r2, [sp, #21] fa96: 22aa movs r2, #170 ; 0xaa fa98: f88d 2016 strb.w r2, [sp, #22] fa9c: f88d 3017 strb.w r3, [sp, #23] const lv_opa_t alpha4_opa_table[16] = {0, 17, 34, 51, /*Opacity mapping with bpp = 4*/ faa0: 4b78 ldr r3, [pc, #480] ; (fc84 ) faa2: cb0f ldmia r3, {r0, r1, r2, r3} faa4: af0a add r7, sp, #40 ; 0x28 faa6: 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; faaa: 8929 ldrh r1, [r5, #8] lv_coord_t i; for(i = 0; i < len; i++) { faac: 2e00 cmp r6, #0 faae: dd0c ble.n faca #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; fab0: 0a08 lsrs r0, r1, #8 fab2: 9b15 ldr r3, [sp, #84] ; 0x54 fab4: 1e72 subs r2, r6, #1 fab6: b292 uxth r2, r2 fab8: 3201 adds r2, #1 faba: eb02 0242 add.w r2, r2, r2, lsl #1 fabe: 441a add r2, r3 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = bg_color.full & 0xFF; fac0: 7019 strb r1, [r3, #0] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + 1] = (bg_color.full >> 8) & 0xFF; fac2: 7058 strb r0, [r3, #1] fac4: 3303 adds r3, #3 for(i = 0; i < len; i++) { fac6: 429a cmp r2, r3 fac8: d1fa bne.n fac0 #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); faca: 7b28 ldrb r0, [r5, #12] facc: f000 001f and.w r0, r0, #31 fad0: 4b62 ldr r3, [pc, #392] ; (fc5c ) fad2: 4798 blx r3 fad4: 4680 mov r8, r0 uint16_t mask = (1 << px_size) - 1; /*E.g. px_size = 2; mask = 0x03*/ fad6: 2701 movs r7, #1 fad8: 4087 lsls r7, r0 fada: 3f01 subs r7, #1 fadc: b2bf uxth r7, r7 lv_coord_t w = 0; uint32_t ofs = 0; int8_t pos = 0; switch(dsc->header.cf) { fade: 7b2b ldrb r3, [r5, #12] fae0: f003 031f and.w r3, r3, #31 fae4: 3b0b subs r3, #11 fae6: 2b03 cmp r3, #3 fae8: f200 8083 bhi.w fbf2 faec: e8df f003 tbb [pc, r3] faf0: 76614c02 .word 0x76614c02 case LV_IMG_CF_ALPHA_1BIT: w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ faf4: 68eb ldr r3, [r5, #12] faf6: f3c3 238a ubfx r3, r3, #10, #11 fafa: 10da asrs r2, r3, #3 if(dsc->header.w & 0x7) w++; fafc: f013 0f07 tst.w r3, #7 w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ fb00: bf0c ite eq fb02: fa0f fb82 sxtheq.w fp, r2 if(dsc->header.w & 0x7) w++; fb06: f102 0b01 addne.w fp, r2, #1 ofs += w * y + (x >> 3); /*First pixel*/ fb0a: 10e3 asrs r3, r4, #3 fb0c: fb0a 3a0b mla sl, sl, fp, r3 pos = 7 - (x & 0x7); fb10: 43e4 mvns r4, r4 fb12: f004 0407 and.w r4, r4, #7 opa_table = alpha1_opa_table; fb16: 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; fb1a: 69eb ldr r3, [r5, #28] fb1c: 9303 str r3, [sp, #12] uint8_t * fs_buf = _lv_mem_buf_get(w); fb1e: 4658 mov r0, fp fb20: 4b59 ldr r3, [pc, #356] ; (fc88 ) fb22: 4798 blx r3 fb24: 9002 str r0, [sp, #8] #endif const uint8_t * data_tmp = NULL; if(dsc->src_type == LV_IMG_SRC_VARIABLE) { fb26: 7aab ldrb r3, [r5, #10] fb28: 2b00 cmp r3, #0 fb2a: d16b bne.n fc04 const lv_img_dsc_t * img_dsc = dsc->src; data_tmp = img_dsc->data + ofs; fb2c: 686b ldr r3, [r5, #4] fb2e: 689b ldr r3, [r3, #8] fb30: 449a add sl, r3 data_tmp = NULL; /*To avoid warnings*/ return LV_RES_INV; #endif } for(i = 0; i < len; i++) { fb32: 2e00 cmp r6, #0 fb34: dd23 ble.n fb7e fb36: 9a15 ldr r2, [sp, #84] ; 0x54 fb38: 1e71 subs r1, r6, #1 fb3a: b289 uxth r1, r1 fb3c: 3101 adds r1, #1 fb3e: eb01 0141 add.w r1, r1, r1, lsl #1 fb42: 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; fb44: f1c8 0008 rsb r0, r8, #8 fb48: b240 sxtb r0, r0 uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; fb4a: f89a 3000 ldrb.w r3, [sl] fb4e: fa07 f604 lsl.w r6, r7, r4 fb52: 4033 ands r3, r6 fb54: 4123 asrs r3, r4 dsc->header.cf == LV_IMG_CF_ALPHA_8BIT ? val_act : opa_table[val_act]; fb56: 7b2e ldrb r6, [r5, #12] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = fb58: f006 061f and.w r6, r6, #31 fb5c: 2e0e cmp r6, #14 uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; fb5e: b2db uxtb r3, r3 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = fb60: bf18 it ne fb62: f819 3003 ldrbne.w r3, [r9, r3] fb66: 7093 strb r3, [r2, #2] pos -= px_size; fb68: eba4 0408 sub.w r4, r4, r8 fb6c: b264 sxtb r4, r4 if(pos < 0) { fb6e: 2c00 cmp r4, #0 pos = 8 - px_size; fb70: bfbc itt lt fb72: 4604 movlt r4, r0 data_tmp++; fb74: f10a 0a01 addlt.w sl, sl, #1 fb78: 3203 adds r2, #3 for(i = 0; i < len; i++) { fb7a: 428a cmp r2, r1 fb7c: d1e5 bne.n fb4a } } #if LV_USE_FILESYSTEM _lv_mem_buf_release(fs_buf); fb7e: 9802 ldr r0, [sp, #8] fb80: 4b42 ldr r3, [pc, #264] ; (fc8c ) fb82: 4798 blx r3 res = lv_img_decoder_built_in_line_alpha(dsc, x, y, len, buf); fb84: 2001 movs r0, #1 fb86: e724 b.n f9d2 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ fb88: 68eb ldr r3, [r5, #12] fb8a: f3c3 238a ubfx r3, r3, #10, #11 fb8e: 109a asrs r2, r3, #2 if(dsc->header.w & 0x3) w++; fb90: f013 0f03 tst.w r3, #3 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ fb94: bf0c ite eq fb96: fa0f fb82 sxtheq.w fp, r2 if(dsc->header.w & 0x3) w++; fb9a: f102 0b01 addne.w fp, r2, #1 ofs += w * y + (x >> 2); /*First pixel*/ fb9e: 10a3 asrs r3, r4, #2 fba0: fb0a 3a0b mla sl, sl, fp, r3 pos = 6 - ((x & 0x3) * 2); fba4: 43e4 mvns r4, r4 fba6: f004 0403 and.w r4, r4, #3 fbaa: 0064 lsls r4, r4, #1 opa_table = alpha2_opa_table; fbac: f10d 0914 add.w r9, sp, #20 fbb0: e7b3 b.n fb1a w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ fbb2: 68eb ldr r3, [r5, #12] fbb4: f3c3 238a ubfx r3, r3, #10, #11 fbb8: 105a asrs r2, r3, #1 if(dsc->header.w & 0x1) w++; fbba: f013 0f01 tst.w r3, #1 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ fbbe: bf0c ite eq fbc0: fa0f fb82 sxtheq.w fp, r2 if(dsc->header.w & 0x1) w++; fbc4: f102 0b01 addne.w fp, r2, #1 ofs += w * y + (x >> 1); /*First pixel*/ fbc8: 1063 asrs r3, r4, #1 fbca: fb0a 3a0b mla sl, sl, fp, r3 pos = 4 - ((x & 0x1) * 4); fbce: f014 0f01 tst.w r4, #1 fbd2: d013 beq.n fbfc fbd4: 2400 movs r4, #0 opa_table = alpha4_opa_table; fbd6: f10d 0918 add.w r9, sp, #24 fbda: e79e b.n fb1a w = dsc->header.w; /*E.g. x = 7 -> w = 7 (bytes)*/ fbdc: 68eb ldr r3, [r5, #12] fbde: f3c3 238a ubfx r3, r3, #10, #11 fbe2: b29a uxth r2, r3 fbe4: fa0f fb83 sxth.w fp, r3 ofs += w * y + x; /*First pixel*/ fbe8: fb0a 4a02 mla sl, sl, r2, r4 pos = 0; fbec: 2400 movs r4, #0 const lv_opa_t * opa_table = NULL; fbee: 46a1 mov r9, r4 fbf0: e793 b.n fb1a int8_t pos = 0; fbf2: 2400 movs r4, #0 uint32_t ofs = 0; fbf4: 46a2 mov sl, r4 lv_coord_t w = 0; fbf6: 46a3 mov fp, r4 const lv_opa_t * opa_table = NULL; fbf8: 46a1 mov r9, r4 fbfa: e78e b.n fb1a pos = 4 - ((x & 0x1) * 4); fbfc: 2404 movs r4, #4 opa_table = alpha4_opa_table; fbfe: f10d 0918 add.w r9, sp, #24 fc02: e78a b.n fb1a lv_fs_seek(user_data->f, ofs + 4); /*+4 to skip the header*/ fc04: f10a 0104 add.w r1, sl, #4 fc08: 9b03 ldr r3, [sp, #12] fc0a: 6818 ldr r0, [r3, #0] fc0c: 4b14 ldr r3, [pc, #80] ; (fc60 ) fc0e: 4798 blx r3 lv_fs_read(user_data->f, fs_buf, w, NULL); fc10: 2300 movs r3, #0 fc12: 465a mov r2, fp fc14: f8dd b008 ldr.w fp, [sp, #8] fc18: 4659 mov r1, fp fc1a: 9803 ldr r0, [sp, #12] fc1c: 6800 ldr r0, [r0, #0] fc1e: f8df a044 ldr.w sl, [pc, #68] ; fc64 fc22: 47d0 blx sl data_tmp = fs_buf; fc24: 46da mov sl, fp fc26: e784 b.n fb32 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); fc28: 7b08 ldrb r0, [r1, #12] fc2a: f000 001f and.w r0, r0, #31 fc2e: 4b0b ldr r3, [pc, #44] ; (fc5c ) fc30: 4798 blx r3 fc32: 4681 mov r9, r0 uint16_t mask = (1 << px_size) - 1; /*E.g. px_size = 2; mask = 0x03*/ fc34: f04f 0801 mov.w r8, #1 fc38: fa08 f800 lsl.w r8, r8, r0 fc3c: f108 38ff add.w r8, r8, #4294967295 fc40: fa1f f888 uxth.w r8, r8 lv_coord_t w = 0; int8_t pos = 0; uint32_t ofs = 0; switch(dsc->header.cf) { fc44: 7b2b ldrb r3, [r5, #12] fc46: f003 031f and.w r3, r3, #31 fc4a: 3b07 subs r3, #7 fc4c: 2b03 cmp r3, #3 fc4e: f200 80a5 bhi.w fd9c fc52: e8df f003 tbb [pc, r3] fc56: 681d .short 0x681d fc58: 967e .short 0x967e fc5a: bf00 nop fc5c: 00009669 .word 0x00009669 fc60: 00011ce1 .word 0x00011ce1 fc64: 00011ca5 .word 0x00011ca5 fc68: 00025428 .word 0x00025428 fc6c: 00025274 .word 0x00025274 fc70: 00025300 .word 0x00025300 fc74: 00012245 .word 0x00012245 fc78: 00025404 .word 0x00025404 fc7c: 0002544c .word 0x0002544c fc80: 000252ac .word 0x000252ac fc84: 0002529c .word 0x0002529c fc88: 00012925 .word 0x00012925 fc8c: 00012559 .word 0x00012559 case LV_IMG_CF_INDEXED_1BIT: w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ fc90: 68eb ldr r3, [r5, #12] fc92: f3c3 238a ubfx r3, r3, #10, #11 fc96: ea4f 0be3 mov.w fp, r3, asr #3 if(dsc->header.w & 0x7) w++; fc9a: f013 0f07 tst.w r3, #7 w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ fc9e: bf0c ite eq fca0: fa0f fb8b sxtheq.w fp, fp if(dsc->header.w & 0x7) w++; fca4: f10b 0b01 addne.w fp, fp, #1 ofs += w * y + (x >> 3); /*First pixel*/ fca8: 10e3 asrs r3, r4, #3 fcaa: fb0a 3a0b mla sl, sl, fp, r3 ofs += 8; /*Skip the palette*/ fcae: f10a 0a08 add.w sl, sl, #8 pos = 7 - (x & 0x7); fcb2: 43e4 mvns r4, r4 fcb4: 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; fcb8: 69ef ldr r7, [r5, #28] #if LV_USE_FILESYSTEM uint8_t * fs_buf = _lv_mem_buf_get(w); fcba: 4658 mov r0, fp fcbc: 4b41 ldr r3, [pc, #260] ; (fdc4 ) fcbe: 4798 blx r3 fcc0: 9002 str r0, [sp, #8] #endif const uint8_t * data_tmp = NULL; if(dsc->src_type == LV_IMG_SRC_VARIABLE) { fcc2: 7aab ldrb r3, [r5, #10] fcc4: 2b00 cmp r3, #0 fcc6: d16e bne.n fda6 const lv_img_dsc_t * img_dsc = dsc->src; data_tmp = img_dsc->data + ofs; fcc8: 686b ldr r3, [r5, #4] fcca: 689b ldr r3, [r3, #8] fccc: 449a add sl, r3 return LV_RES_INV; #endif } lv_coord_t i; for(i = 0; i < len; i++) { fcce: 2e00 cmp r6, #0 fcd0: dd24 ble.n fd1c fcd2: 9a15 ldr r2, [sp, #84] ; 0x54 fcd4: 1e71 subs r1, r6, #1 fcd6: b289 uxth r1, r1 fcd8: 3101 adds r1, #1 fcda: eb01 0141 add.w r1, r1, r1, lsl #1 fcde: 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; fce0: f1c9 0508 rsb r5, r9, #8 fce4: b26d sxtb r5, r5 uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; fce6: f89a 3000 ldrb.w r3, [sl] fcea: fa08 f004 lsl.w r0, r8, r4 fcee: 4003 ands r3, r0 fcf0: 4123 asrs r3, r4 lv_color_t color = user_data->palette[val_act]; fcf2: b2db uxtb r3, r3 fcf4: 6878 ldr r0, [r7, #4] fcf6: f830 0013 ldrh.w r0, [r0, r3, lsl #1] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = color.full & 0xFF; fcfa: 7010 strb r0, [r2, #0] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + 1] = (color.full >> 8) & 0xFF; fcfc: 0a00 lsrs r0, r0, #8 fcfe: 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]; fd00: 68b8 ldr r0, [r7, #8] fd02: 5cc3 ldrb r3, [r0, r3] fd04: 7093 strb r3, [r2, #2] pos -= px_size; fd06: eba4 0409 sub.w r4, r4, r9 fd0a: b264 sxtb r4, r4 if(pos < 0) { fd0c: 2c00 cmp r4, #0 pos = 8 - px_size; fd0e: bfbc itt lt fd10: 462c movlt r4, r5 data_tmp++; fd12: f10a 0a01 addlt.w sl, sl, #1 fd16: 3203 adds r2, #3 for(i = 0; i < len; i++) { fd18: 428a cmp r2, r1 fd1a: d1e4 bne.n fce6 } } #if LV_USE_FILESYSTEM _lv_mem_buf_release(fs_buf); fd1c: 9802 ldr r0, [sp, #8] fd1e: 4b2a ldr r3, [pc, #168] ; (fdc8 ) fd20: 4798 blx r3 res = lv_img_decoder_built_in_line_indexed(dsc, x, y, len, buf); fd22: 2001 movs r0, #1 fd24: e655 b.n f9d2 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ fd26: 68eb ldr r3, [r5, #12] fd28: f3c3 238a ubfx r3, r3, #10, #11 fd2c: ea4f 0ba3 mov.w fp, r3, asr #2 if(dsc->header.w & 0x3) w++; fd30: f013 0f03 tst.w r3, #3 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ fd34: bf0c ite eq fd36: fa0f fb8b sxtheq.w fp, fp if(dsc->header.w & 0x3) w++; fd3a: f10b 0b01 addne.w fp, fp, #1 ofs += w * y + (x >> 2); /*First pixel*/ fd3e: 10a3 asrs r3, r4, #2 fd40: fb0a 3a0b mla sl, sl, fp, r3 ofs += 16; /*Skip the palette*/ fd44: f10a 0a10 add.w sl, sl, #16 pos = 6 - ((x & 0x3) * 2); fd48: 43e4 mvns r4, r4 fd4a: f004 0403 and.w r4, r4, #3 fd4e: 0064 lsls r4, r4, #1 fd50: e7b2 b.n fcb8 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ fd52: 68eb ldr r3, [r5, #12] fd54: f3c3 238a ubfx r3, r3, #10, #11 fd58: ea4f 0b63 mov.w fp, r3, asr #1 if(dsc->header.w & 0x1) w++; fd5c: f013 0f01 tst.w r3, #1 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ fd60: bf0c ite eq fd62: fa0f fb8b sxtheq.w fp, fp if(dsc->header.w & 0x1) w++; fd66: f10b 0b01 addne.w fp, fp, #1 ofs += w * y + (x >> 1); /*First pixel*/ fd6a: 1063 asrs r3, r4, #1 fd6c: fb0a 3a0b mla sl, sl, fp, r3 ofs += 64; /*Skip the palette*/ fd70: f10a 0a40 add.w sl, sl, #64 ; 0x40 pos = 4 - ((x & 0x1) * 4); fd74: f004 0401 and.w r4, r4, #1 fd78: 2c00 cmp r4, #0 fd7a: bf0c ite eq fd7c: 2404 moveq r4, #4 fd7e: 2400 movne r4, #0 fd80: e79a b.n fcb8 w = dsc->header.w; /*E.g. x = 7 -> w = 7 (bytes)*/ fd82: 68eb ldr r3, [r5, #12] fd84: f3c3 2b8a ubfx fp, r3, #10, #11 fd88: fa1f f38b uxth.w r3, fp fd8c: fa0f fb8b sxth.w fp, fp ofs += w * y + x; /*First pixel*/ fd90: fb0a 4a03 mla sl, sl, r3, r4 ofs += 1024; /*Skip the palette*/ fd94: f50a 6a80 add.w sl, sl, #1024 ; 0x400 pos = 0; fd98: 2400 movs r4, #0 fd9a: e78d b.n fcb8 uint32_t ofs = 0; fd9c: f04f 0a00 mov.w sl, #0 int8_t pos = 0; fda0: 4654 mov r4, sl lv_coord_t w = 0; fda2: 46d3 mov fp, sl fda4: e788 b.n fcb8 lv_fs_seek(user_data->f, ofs + 4); /*+4 to skip the header*/ fda6: f10a 0104 add.w r1, sl, #4 fdaa: 6838 ldr r0, [r7, #0] fdac: 4b07 ldr r3, [pc, #28] ; (fdcc ) fdae: 4798 blx r3 lv_fs_read(user_data->f, fs_buf, w, NULL); fdb0: 2300 movs r3, #0 fdb2: 465a mov r2, fp fdb4: f8dd a008 ldr.w sl, [sp, #8] fdb8: 4651 mov r1, sl fdba: 6838 ldr r0, [r7, #0] fdbc: 4d04 ldr r5, [pc, #16] ; (fdd0 ) fdbe: 47a8 blx r5 fdc0: e785 b.n fcce fdc2: bf00 nop fdc4: 00012925 .word 0x00012925 fdc8: 00012559 .word 0x00012559 fdcc: 00011ce1 .word 0x00011ce1 fdd0: 00011ca5 .word 0x00011ca5 0000fdd4 : { fdd4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} fdd8: 4681 mov r9, r0 fdda: 460e mov r6, r1 header->always_zero = 0; fddc: 780b ldrb r3, [r1, #0] fdde: f36f 1347 bfc r3, #5, #3 fde2: 700b strb r3, [r1, #0] _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { fde4: 480f ldr r0, [pc, #60] ; (fe24 ) fde6: 4b10 ldr r3, [pc, #64] ; (fe28 ) fde8: 4798 blx r3 fdea: b1c8 cbz r0, fe20 fdec: 4604 mov r4, r0 res = LV_RES_INV; fdee: f04f 0a00 mov.w sl, #0 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { fdf2: f8df 8030 ldr.w r8, [pc, #48] ; fe24 fdf6: 4f0d ldr r7, [pc, #52] ; (fe2c ) fdf8: e005 b.n fe06 res = LV_RES_INV; fdfa: 4655 mov r5, sl _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { fdfc: 4621 mov r1, r4 fdfe: 4640 mov r0, r8 fe00: 47b8 blx r7 fe02: 4604 mov r4, r0 fe04: b148 cbz r0, fe1a if(d->info_cb) { fe06: 6823 ldr r3, [r4, #0] fe08: 2b00 cmp r3, #0 fe0a: d0f6 beq.n fdfa res = d->info_cb(d, src, header); fe0c: 4632 mov r2, r6 fe0e: 4649 mov r1, r9 fe10: 4620 mov r0, r4 fe12: 4798 blx r3 fe14: 4605 mov r5, r0 if(res == LV_RES_OK) break; fe16: 2801 cmp r0, #1 fe18: d1f0 bne.n fdfc } fe1a: 4628 mov r0, r5 fe1c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} lv_res_t res = LV_RES_INV; fe20: 2500 movs r5, #0 fe22: e7fa b.n fe1a fe24: 20006ca4 .word 0x20006ca4 fe28: 00011f91 .word 0x00011f91 fe2c: 00011fa5 .word 0x00011fa5 0000fe30 : { fe30: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} fe34: 4682 mov sl, r0 fe36: 4688 mov r8, r1 dsc->color = color; fe38: 8102 strh r2, [r0, #8] dsc->src_type = lv_img_src_get_type(src); fe3a: 4608 mov r0, r1 fe3c: 4b26 ldr r3, [pc, #152] ; (fed8 ) fe3e: 4798 blx r3 fe40: f88a 000a strb.w r0, [sl, #10] dsc->user_data = NULL; fe44: 2300 movs r3, #0 fe46: f8ca 301c str.w r3, [sl, #28] if(dsc->src_type == LV_IMG_SRC_FILE) { fe4a: 2801 cmp r0, #1 fe4c: d00d beq.n fe6a dsc->src = src; fe4e: f8ca 8004 str.w r8, [sl, #4] _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { fe52: 4822 ldr r0, [pc, #136] ; (fedc ) fe54: 4b22 ldr r3, [pc, #136] ; (fee0 ) fe56: 4798 blx r3 fe58: 4604 mov r4, r0 fe5a: 2800 cmp r0, #0 fe5c: d036 beq.n fecc fe5e: 2500 movs r5, #0 res = d->info_cb(d, src, &dsc->header); fe60: f10a 090c add.w r9, sl, #12 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { fe64: 4f1d ldr r7, [pc, #116] ; (fedc ) fe66: 4e1f ldr r6, [pc, #124] ; (fee4 ) fe68: e010 b.n fe8c size_t fnlen = strlen(src); fe6a: 4640 mov r0, r8 fe6c: 4b1e ldr r3, [pc, #120] ; (fee8 ) fe6e: 4798 blx r3 dsc->src = lv_mem_alloc(fnlen + 1); fe70: 3001 adds r0, #1 fe72: 4b1e ldr r3, [pc, #120] ; (feec ) fe74: 4798 blx r3 fe76: f8ca 0004 str.w r0, [sl, #4] strcpy((char *)dsc->src, src); fe7a: 4641 mov r1, r8 fe7c: 4b1c ldr r3, [pc, #112] ; (fef0 ) fe7e: 4798 blx r3 fe80: e7e7 b.n fe52 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { fe82: 4621 mov r1, r4 fe84: 4638 mov r0, r7 fe86: 47b0 blx r6 fe88: 4604 mov r4, r0 fe8a: b1d8 cbz r0, fec4 if(d->info_cb == NULL || d->open_cb == NULL) continue; fe8c: 6823 ldr r3, [r4, #0] fe8e: 2b00 cmp r3, #0 fe90: d0f7 beq.n fe82 fe92: 6862 ldr r2, [r4, #4] fe94: 2a00 cmp r2, #0 fe96: d0f4 beq.n fe82 res = d->info_cb(d, src, &dsc->header); fe98: 464a mov r2, r9 fe9a: 4641 mov r1, r8 fe9c: 4620 mov r0, r4 fe9e: 4798 blx r3 fea0: 4605 mov r5, r0 if(res != LV_RES_OK) continue; fea2: 2801 cmp r0, #1 fea4: d1ed bne.n fe82 dsc->error_msg = NULL; fea6: 2300 movs r3, #0 fea8: f8ca 3018 str.w r3, [sl, #24] dsc->img_data = NULL; feac: f8ca 3010 str.w r3, [sl, #16] dsc->decoder = d; feb0: f8ca 4000 str.w r4, [sl] res = d->open_cb(d, dsc); feb4: 6863 ldr r3, [r4, #4] feb6: 4651 mov r1, sl feb8: 4620 mov r0, r4 feba: 4798 blx r3 febc: 4605 mov r5, r0 if(res == LV_RES_OK) break; febe: 2801 cmp r0, #1 fec0: d1df bne.n fe82 fec2: e000 b.n fec6 if(res == LV_RES_INV) { fec4: b11d cbz r5, fece } fec6: 4628 mov r0, r5 fec8: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} lv_res_t res = LV_RES_INV; fecc: 2500 movs r5, #0 _lv_memset_00(dsc, sizeof(lv_img_decoder_dsc_t)); fece: 2120 movs r1, #32 fed0: 4650 mov r0, sl fed2: 4b08 ldr r3, [pc, #32] ; (fef4 ) fed4: 4798 blx r3 fed6: e7f6 b.n fec6 fed8: 00009951 .word 0x00009951 fedc: 20006ca4 .word 0x20006ca4 fee0: 00011f91 .word 0x00011f91 fee4: 00011fa5 .word 0x00011fa5 fee8: 0001b507 .word 0x0001b507 feec: 000123c5 .word 0x000123c5 fef0: 0001b4f7 .word 0x0001b4f7 fef4: 00012b1f .word 0x00012b1f 0000fef8 : { fef8: b570 push {r4, r5, r6, lr} fefa: b082 sub sp, #8 if(dsc->decoder->read_line_cb) res = dsc->decoder->read_line_cb(dsc->decoder, dsc, x, y, len, buf); fefc: 6806 ldr r6, [r0, #0] fefe: 68b4 ldr r4, [r6, #8] ff00: b154 cbz r4, ff18 ff02: 461d mov r5, r3 ff04: 4613 mov r3, r2 ff06: 460a mov r2, r1 ff08: 4601 mov r1, r0 ff0a: 9806 ldr r0, [sp, #24] ff0c: 9001 str r0, [sp, #4] ff0e: 9500 str r5, [sp, #0] ff10: 4630 mov r0, r6 ff12: 47a0 blx r4 } ff14: b002 add sp, #8 ff16: bd70 pop {r4, r5, r6, pc} lv_res_t res = LV_RES_INV; ff18: 2000 movs r0, #0 ff1a: e7fb b.n ff14 0000ff1c : if(dsc->decoder) { ff1c: 6803 ldr r3, [r0, #0] ff1e: b183 cbz r3, ff42 { ff20: b510 push {r4, lr} ff22: 4604 mov r4, r0 if(dsc->decoder->close_cb) dsc->decoder->close_cb(dsc->decoder, dsc); ff24: 68da ldr r2, [r3, #12] ff26: b112 cbz r2, ff2e ff28: 4601 mov r1, r0 ff2a: 4618 mov r0, r3 ff2c: 4790 blx r2 if(dsc->src_type == LV_IMG_SRC_FILE) { ff2e: 7aa3 ldrb r3, [r4, #10] ff30: 2b01 cmp r3, #1 ff32: d000 beq.n ff36 ff34: bd10 pop {r4, pc} lv_mem_free(dsc->src); ff36: 6860 ldr r0, [r4, #4] ff38: 4b02 ldr r3, [pc, #8] ; (ff44 ) ff3a: 4798 blx r3 dsc->src = NULL; ff3c: 2300 movs r3, #0 ff3e: 6063 str r3, [r4, #4] } ff40: e7f8 b.n ff34 ff42: 4770 bx lr ff44: 000124ad .word 0x000124ad 0000ff48 : { ff48: b530 push {r4, r5, lr} ff4a: b083 sub sp, #12 decoder = _lv_ll_ins_head(&LV_GC_ROOT(_lv_img_defoder_ll)); ff4c: 480d ldr r0, [pc, #52] ; (ff84 ) ff4e: 4b0e ldr r3, [pc, #56] ; (ff88 ) ff50: 4798 blx r3 ff52: 4604 mov r4, r0 LV_ASSERT_MEM(decoder); ff54: 4b0d ldr r3, [pc, #52] ; (ff8c ) ff56: 4798 blx r3 ff58: b138 cbz r0, ff6a if(decoder == NULL) return NULL; ff5a: b11c cbz r4, ff64 _lv_memset_00(decoder, sizeof(lv_img_decoder_t)); ff5c: 2110 movs r1, #16 ff5e: 4620 mov r0, r4 ff60: 4b0b ldr r3, [pc, #44] ; (ff90 ) ff62: 4798 blx r3 } ff64: 4620 mov r0, r4 ff66: b003 add sp, #12 ff68: bd30 pop {r4, r5, pc} LV_ASSERT_MEM(decoder); ff6a: 4b0a ldr r3, [pc, #40] ; (ff94 ) ff6c: 9300 str r3, [sp, #0] ff6e: 22c9 movs r2, #201 ; 0xc9 ff70: 4909 ldr r1, [pc, #36] ; (ff98 ) ff72: 2003 movs r0, #3 ff74: 4d09 ldr r5, [pc, #36] ; (ff9c ) ff76: 47a8 blx r5 ff78: 4622 mov r2, r4 ff7a: 2300 movs r3, #0 ff7c: 4808 ldr r0, [pc, #32] ; (ffa0 ) ff7e: 4909 ldr r1, [pc, #36] ; (ffa4 ) ff80: 4788 blx r1 ff82: e7fe b.n ff82 ff84: 20006ca4 .word 0x20006ca4 ff88: 00011ef9 .word 0x00011ef9 ff8c: 00002299 .word 0x00002299 ff90: 00012b1f .word 0x00012b1f ff94: 000252d0 .word 0x000252d0 ff98: 00025300 .word 0x00025300 ff9c: 00012245 .word 0x00012245 ffa0: 00023fc0 .word 0x00023fc0 ffa4: 000022a1 .word 0x000022a1 0000ffa8 <_lv_img_decoder_init>: { ffa8: b510 push {r4, lr} ffaa: b082 sub sp, #8 _lv_ll_init(&LV_GC_ROOT(_lv_img_defoder_ll), sizeof(lv_img_decoder_t)); ffac: 2110 movs r1, #16 ffae: 4814 ldr r0, [pc, #80] ; (10000 ) ffb0: 4b14 ldr r3, [pc, #80] ; (10004 ) ffb2: 4798 blx r3 decoder = lv_img_decoder_create(); ffb4: 4b14 ldr r3, [pc, #80] ; (10008 ) ffb6: 4798 blx r3 if(decoder == NULL) { ffb8: b148 cbz r0, ffce <_lv_img_decoder_init+0x26> decoder->info_cb = info_cb; ffba: 4a14 ldr r2, [pc, #80] ; (1000c ) ffbc: 6002 str r2, [r0, #0] decoder->open_cb = open_cb; ffbe: 4a14 ldr r2, [pc, #80] ; (10010 ) ffc0: 6042 str r2, [r0, #4] decoder->read_line_cb = read_line_cb; ffc2: 4a14 ldr r2, [pc, #80] ; (10014 ) ffc4: 6082 str r2, [r0, #8] decoder->close_cb = close_cb; ffc6: 4a14 ldr r2, [pc, #80] ; (10018 ) ffc8: 60c2 str r2, [r0, #12] } ffca: b002 add sp, #8 ffcc: bd10 pop {r4, pc} LV_LOG_WARN("lv_img_decoder_init: out of memory"); ffce: 4b13 ldr r3, [pc, #76] ; (1001c ) ffd0: 9300 str r3, [sp, #0] ffd2: 4b13 ldr r3, [pc, #76] ; (10020 ) ffd4: 2247 movs r2, #71 ; 0x47 ffd6: 4913 ldr r1, [pc, #76] ; (10024 ) ffd8: 2002 movs r0, #2 ffda: 4c13 ldr r4, [pc, #76] ; (10028 ) ffdc: 47a0 blx r4 LV_ASSERT_MEM(decoder); ffde: 2000 movs r0, #0 ffe0: 4b12 ldr r3, [pc, #72] ; (1002c ) ffe2: 4798 blx r3 ffe4: 2800 cmp r0, #0 ffe6: d1f0 bne.n ffca <_lv_img_decoder_init+0x22> ffe8: 4b0d ldr r3, [pc, #52] ; (10020 ) ffea: 9300 str r3, [sp, #0] ffec: 2248 movs r2, #72 ; 0x48 ffee: 490d ldr r1, [pc, #52] ; (10024 ) fff0: 2003 movs r0, #3 fff2: 47a0 blx r4 fff4: 2200 movs r2, #0 fff6: 2300 movs r3, #0 fff8: 480d ldr r0, [pc, #52] ; (10030 ) fffa: 490e ldr r1, [pc, #56] ; (10034 ) fffc: 4788 blx r1 fffe: e7fe b.n fffe <_lv_img_decoder_init+0x56> 10000: 20006ca4 .word 0x20006ca4 10004: 00011ee1 .word 0x00011ee1 10008: 0000ff49 .word 0x0000ff49 1000c: 0000f4d5 .word 0x0000f4d5 10010: 0000f60d .word 0x0000f60d 10014: 0000f9ad .word 0x0000f9ad 10018: 0000f5d1 .word 0x0000f5d1 1001c: 00025488 .word 0x00025488 10020: 000252e8 .word 0x000252e8 10024: 00025300 .word 0x00025300 10028: 00012245 .word 0x00012245 1002c: 00002299 .word 0x00002299 10030: 00023fc0 .word 0x00023fc0 10034: 000022a1 .word 0x000022a1 00010038 : * @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) { 10038: b508 push {r3, lr} return font_p->get_glyph_bitmap(font_p, letter); 1003a: 6843 ldr r3, [r0, #4] 1003c: 4798 blx r3 } 1003e: bd08 pop {r3, pc} 00010040 : * @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) { 10040: b510 push {r4, lr} return font_p->get_glyph_dsc(font_p, dsc_out, letter, letter_next); 10042: 6804 ldr r4, [r0, #0] 10044: 47a0 blx r4 } 10046: bd10 pop {r4, pc} 00010048 : * @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) { 10048: b510 push {r4, lr} 1004a: b084 sub sp, #16 lv_font_glyph_dsc_t g; bool ret; ret = lv_font_get_glyph_dsc(font, &g, letter, letter_next); 1004c: 4613 mov r3, r2 1004e: 460a mov r2, r1 10050: a901 add r1, sp, #4 10052: 4c04 ldr r4, [pc, #16] ; (10064 ) 10054: 47a0 blx r4 if(ret) return g.adv_w; 10056: b118 cbz r0, 10060 10058: f8bd 0004 ldrh.w r0, [sp, #4] else return 0; } 1005c: b004 add sp, #16 1005e: bd10 pop {r4, pc} else return 0; 10060: 2000 movs r0, #0 10062: e7fb b.n 1005c 10064: 00010041 .word 0x00010041 00010068 : { 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]; 10068: 7803 ldrb r3, [r0, #0] 1006a: 780a ldrb r2, [r1, #0] 1006c: 4293 cmp r3, r2 1006e: bf11 iteee ne 10070: 1a98 subne r0, r3, r2 else return (int32_t) ref8_p[1] - element8_p[1]; 10072: 7840 ldrbeq r0, [r0, #1] 10074: 784b ldrbeq r3, [r1, #1] 10076: 1ac0 subeq r0, r0, r3 } 10078: 4770 bx lr 0001007a : { 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]; 1007a: 8803 ldrh r3, [r0, #0] 1007c: 880a ldrh r2, [r1, #0] 1007e: 4293 cmp r3, r2 10080: bf11 iteee ne 10082: 1a98 subne r0, r3, r2 else return (int32_t) ref16_p[1] - element16_p[1]; 10084: 8840 ldrheq r0, [r0, #2] 10086: 884b ldrheq r3, [r1, #2] 10088: 1ac0 subeq r0, r0, r3 } 1008a: 4770 bx lr 0001008c : * @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)); 1008c: 8800 ldrh r0, [r0, #0] 1008e: 880b ldrh r3, [r1, #0] } 10090: 1ac0 subs r0, r0, r3 10092: 4770 bx lr 00010094 : if(letter == '\0') return 0; 10094: 460b mov r3, r1 10096: 2900 cmp r1, #0 10098: d06c beq.n 10174 { 1009a: b5f0 push {r4, r5, r6, r7, lr} 1009c: b085 sub sp, #20 lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; 1009e: 6904 ldr r4, [r0, #16] if(letter == fdsc->last_letter) return fdsc->last_glyph_id; 100a0: 69a2 ldr r2, [r4, #24] 100a2: 4291 cmp r1, r2 100a4: d015 beq.n 100d2 for(i = 0; i < fdsc->cmap_num; i++) { 100a6: 8a67 ldrh r7, [r4, #18] 100a8: f3c7 0709 ubfx r7, r7, #0, #10 100ac: 2f00 cmp r7, #0 100ae: d05d beq.n 1016c uint32_t rcp = letter - fdsc->cmaps[i].range_start; 100b0: 68a1 ldr r1, [r4, #8] 100b2: 6808 ldr r0, [r1, #0] 100b4: 1a1a subs r2, r3, r0 100b6: 9203 str r2, [sp, #12] if(rcp > fdsc->cmaps[i].range_length) continue; 100b8: 8888 ldrh r0, [r1, #4] 100ba: 4282 cmp r2, r0 100bc: d80b bhi.n 100d6 uint32_t rcp = letter - fdsc->cmaps[i].range_start; 100be: 2600 movs r6, #0 100c0: 461d mov r5, r3 if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY) { 100c2: 7c8b ldrb r3, [r1, #18] 100c4: b9e3 cbnz r3, 10100 glyph_id = fdsc->cmaps[i].glyph_id_start + rcp; 100c6: 88c8 ldrh r0, [r1, #6] 100c8: 4410 add r0, r2 fdsc->last_letter = letter; 100ca: 61a5 str r5, [r4, #24] fdsc->last_glyph_id = glyph_id; 100cc: 61e0 str r0, [r4, #28] } 100ce: b005 add sp, #20 100d0: bdf0 pop {r4, r5, r6, r7, pc} if(letter == fdsc->last_letter) return fdsc->last_glyph_id; 100d2: 69e0 ldr r0, [r4, #28] 100d4: e7fb b.n 100ce if(rcp > fdsc->cmaps[i].range_length) continue; 100d6: 2500 movs r5, #0 for(i = 0; i < fdsc->cmap_num; i++) { 100d8: 3501 adds r5, #1 100da: b2ad uxth r5, r5 100dc: 42bd cmp r5, r7 100de: da45 bge.n 1016c uint32_t rcp = letter - fdsc->cmaps[i].range_start; 100e0: eb05 0085 add.w r0, r5, r5, lsl #2 100e4: 0082 lsls r2, r0, #2 100e6: 4616 mov r6, r2 100e8: eb01 0e02 add.w lr, r1, r2 100ec: f851 2020 ldr.w r2, [r1, r0, lsl #2] 100f0: 1a9a subs r2, r3, r2 100f2: 9203 str r2, [sp, #12] if(rcp > fdsc->cmaps[i].range_length) continue; 100f4: f8be 0004 ldrh.w r0, [lr, #4] 100f8: 4282 cmp r2, r0 100fa: d8ed bhi.n 100d8 uint32_t rcp = letter - fdsc->cmaps[i].range_start; 100fc: 4671 mov r1, lr 100fe: e7df b.n 100c0 else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL) { 10100: 2b01 cmp r3, #1 10102: d005 beq.n 10110 else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_SPARSE_TINY) { 10104: 2b02 cmp r3, #2 10106: d008 beq.n 1011a else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_SPARSE_FULL) { 10108: 2b03 cmp r3, #3 1010a: d018 beq.n 1013e uint32_t glyph_id = 0; 1010c: 2000 movs r0, #0 1010e: e7dc b.n 100ca glyph_id = fdsc->cmaps[i].glyph_id_start + gid_ofs_8[rcp]; 10110: 68cb ldr r3, [r1, #12] 10112: 5c9b ldrb r3, [r3, r2] 10114: 88c8 ldrh r0, [r1, #6] 10116: 4418 add r0, r3 10118: e7d7 b.n 100ca uint8_t * p = _lv_utils_bsearch(&rcp, fdsc->cmaps[i].unicode_list, fdsc->cmaps[i].list_length, 1011a: 8a0a ldrh r2, [r1, #16] 1011c: 6889 ldr r1, [r1, #8] 1011e: 4b16 ldr r3, [pc, #88] ; (10178 ) 10120: 9300 str r3, [sp, #0] 10122: 2302 movs r3, #2 10124: a803 add r0, sp, #12 10126: 4f15 ldr r7, [pc, #84] ; (1017c ) 10128: 47b8 blx r7 if(p) { 1012a: 4603 mov r3, r0 1012c: b1d0 cbz r0, 10164 lv_uintptr_t ofs = (lv_uintptr_t)(p - (uint8_t *) fdsc->cmaps[i].unicode_list); 1012e: 68a2 ldr r2, [r4, #8] 10130: 4416 add r6, r2 10132: 68b0 ldr r0, [r6, #8] 10134: 1a18 subs r0, r3, r0 glyph_id = fdsc->cmaps[i].glyph_id_start + ofs; 10136: 88f3 ldrh r3, [r6, #6] 10138: eb03 0050 add.w r0, r3, r0, lsr #1 1013c: e7c5 b.n 100ca uint8_t * p = _lv_utils_bsearch(&rcp, fdsc->cmaps[i].unicode_list, fdsc->cmaps[i].list_length, 1013e: 8a0a ldrh r2, [r1, #16] 10140: 6889 ldr r1, [r1, #8] 10142: 4b0d ldr r3, [pc, #52] ; (10178 ) 10144: 9300 str r3, [sp, #0] 10146: 2302 movs r3, #2 10148: a803 add r0, sp, #12 1014a: 4f0c ldr r7, [pc, #48] ; (1017c ) 1014c: 47b8 blx r7 if(p) { 1014e: b158 cbz r0, 10168 lv_uintptr_t ofs = (lv_uintptr_t)(p - (uint8_t *) fdsc->cmaps[i].unicode_list); 10150: 68a2 ldr r2, [r4, #8] 10152: 4416 add r6, r2 10154: 68b2 ldr r2, [r6, #8] 10156: 1a83 subs r3, r0, r2 ofs = ofs >> 1; /*The list stores `uint16_t` so the get the index divide by 2*/ 10158: 085b lsrs r3, r3, #1 glyph_id = fdsc->cmaps[i].glyph_id_start + gid_ofs_16[ofs]; 1015a: 68f2 ldr r2, [r6, #12] 1015c: 5cd3 ldrb r3, [r2, r3] 1015e: 88f0 ldrh r0, [r6, #6] 10160: 4418 add r0, r3 10162: e7b2 b.n 100ca uint32_t glyph_id = 0; 10164: 2000 movs r0, #0 10166: e7b0 b.n 100ca 10168: 2000 movs r0, #0 1016a: e7ae b.n 100ca fdsc->last_letter = letter; 1016c: 61a3 str r3, [r4, #24] fdsc->last_glyph_id = 0; 1016e: 2000 movs r0, #0 10170: 61e0 str r0, [r4, #28] return 0; 10172: e7ac b.n 100ce if(letter == '\0') return 0; 10174: 4608 mov r0, r1 10176: 4770 bx lr 10178: 0001008d .word 0x0001008d 1017c: 0001416d .word 0x0001416d 00010180 : { 10180: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 10184: b09f sub sp, #124 ; 0x7c if(unicode_letter == '\t') unicode_letter = ' '; 10186: 2909 cmp r1, #9 lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; 10188: 6905 ldr r5, [r0, #16] uint32_t gid = get_glyph_dsc_id(font, unicode_letter); 1018a: bf08 it eq 1018c: 2120 moveq r1, #32 1018e: 4ba0 ldr r3, [pc, #640] ; (10410 ) 10190: 4798 blx r3 if(!gid) return NULL; 10192: 2800 cmp r0, #0 10194: f000 84ea beq.w 10b6c 10198: 4680 mov r8, r0 const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[gid]; 1019a: 686f ldr r7, [r5, #4] 1019c: eb07 06c0 add.w r6, r7, r0, lsl #3 if(fdsc->bitmap_format == LV_FONT_FMT_TXT_PLAIN) { 101a0: 7d2b ldrb r3, [r5, #20] 101a2: f013 0f03 tst.w r3, #3 101a6: d10b bne.n 101c0 if(gdsc) return &fdsc->glyph_bitmap[gdsc->bitmap_index]; 101a8: 2e00 cmp r6, #0 101aa: f000 84e2 beq.w 10b72 101ae: f857 3030 ldr.w r3, [r7, r0, lsl #3] 101b2: f3c3 0313 ubfx r3, r3, #0, #20 101b6: 6828 ldr r0, [r5, #0] 101b8: 4418 add r0, r3 } 101ba: b01f add sp, #124 ; 0x7c 101bc: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} uint32_t gsize = gdsc->box_w * gdsc->box_h; 101c0: 7933 ldrb r3, [r6, #4] 101c2: 7974 ldrb r4, [r6, #5] 101c4: fb04 f403 mul.w r4, r4, r3 if(gsize == 0) return NULL; 101c8: 2c00 cmp r4, #0 101ca: f000 84d5 beq.w 10b78 switch(fdsc->bpp) { 101ce: 7ceb ldrb r3, [r5, #19] 101d0: f3c3 0383 ubfx r3, r3, #2, #4 101d4: 3b01 subs r3, #1 101d6: 2b03 cmp r3, #3 101d8: d805 bhi.n 101e6 101da: e8df f003 tbb [pc, r3] 101de: 7502 .short 0x7502 101e0: 7b78 .short 0x7b78 buf_size = (gsize + 7) >> 3; 101e2: 3407 adds r4, #7 101e4: 08e4 lsrs r4, r4, #3 if(_lv_mem_get_size(decompr_buf) < buf_size) { 101e6: 4b8b ldr r3, [pc, #556] ; (10414 ) 101e8: 6818 ldr r0, [r3, #0] 101ea: 4b8b ldr r3, [pc, #556] ; (10418 ) 101ec: 4798 blx r3 101ee: 4284 cmp r4, r0 101f0: d911 bls.n 10216 decompr_buf = lv_mem_realloc(decompr_buf, buf_size); 101f2: f8df 9220 ldr.w r9, [pc, #544] ; 10414 101f6: 4621 mov r1, r4 101f8: f8d9 0000 ldr.w r0, [r9] 101fc: 4b87 ldr r3, [pc, #540] ; (1041c ) 101fe: 4798 blx r3 10200: f8c9 0000 str.w r0, [r9] LV_ASSERT_MEM(decompr_buf); 10204: 4b86 ldr r3, [pc, #536] ; (10420 ) 10206: 4798 blx r3 10208: 2800 cmp r0, #0 1020a: d066 beq.n 102da if(decompr_buf == NULL) return NULL; 1020c: 4b81 ldr r3, [pc, #516] ; (10414 ) 1020e: 681b ldr r3, [r3, #0] 10210: 2b00 cmp r3, #0 10212: f000 84b4 beq.w 10b7e decompress(&fdsc->glyph_bitmap[gdsc->bitmap_index], decompr_buf, gdsc->box_w, gdsc->box_h, (uint8_t)fdsc->bpp); 10216: f857 1038 ldr.w r1, [r7, r8, lsl #3] 1021a: f3c1 0113 ubfx r1, r1, #0, #20 1021e: 682b ldr r3, [r5, #0] 10220: 4419 add r1, r3 10222: 4b7c ldr r3, [pc, #496] ; (10414 ) 10224: f8d3 9000 ldr.w r9, [r3] 10228: 7933 ldrb r3, [r6, #4] 1022a: 930c str r3, [sp, #48] ; 0x30 1022c: 469b mov fp, r3 1022e: b21a sxth r2, r3 10230: 4617 mov r7, r2 10232: 9218 str r2, [sp, #96] ; 0x60 10234: 7972 ldrb r2, [r6, #5] 10236: 9215 str r2, [sp, #84] ; 0x54 10238: 7cea ldrb r2, [r5, #19] 1023a: f3c2 0283 ubfx r2, r2, #2, #4 1023e: b2d3 uxtb r3, r2 10240: 930f str r3, [sp, #60] ; 0x3c if(bpp == 3) wr_size = 4; 10242: 2b03 cmp r3, #3 10244: bf14 ite ne 10246: 4618 movne r0, r3 10248: 2004 moveq r0, #4 1024a: 9008 str r0, [sp, #32] rle_in = in; 1024c: 4b71 ldr r3, [pc, #452] ; (10414 ) 1024e: 6059 str r1, [r3, #4] rle_bpp = bpp; 10250: 721a strb r2, [r3, #8] rle_state = RLE_STATE_SINGLE; 10252: 2200 movs r2, #0 10254: 725a strb r2, [r3, #9] rle_rdp = 0; 10256: 60da str r2, [r3, #12] rle_prev_v = 0; 10258: 741a strb r2, [r3, #16] rle_cnt = 0; 1025a: 745a strb r2, [r3, #17] uint8_t * line_buf1 = _lv_mem_buf_get(w); 1025c: 4658 mov r0, fp 1025e: 4c71 ldr r4, [pc, #452] ; (10424 ) 10260: 47a0 blx r4 10262: 9016 str r0, [sp, #88] ; 0x58 uint8_t * line_buf2 = _lv_mem_buf_get(w); 10264: 4658 mov r0, fp 10266: 47a0 blx r4 10268: 9017 str r0, [sp, #92] ; 0x5c for(i = 0; i < w; i++) { 1026a: 2f00 cmp r7, #0 1026c: f000 8251 beq.w 10712 10270: 4b68 ldr r3, [pc, #416] ; (10414 ) 10272: 7c19 ldrb r1, [r3, #16] 10274: 9103 str r1, [sp, #12] 10276: 7c5c ldrb r4, [r3, #17] ret = get_bits(rle_in, rle_rdp, rle_bpp); 10278: 685f ldr r7, [r3, #4] 1027a: 68dd ldr r5, [r3, #12] 1027c: f893 a008 ldrb.w sl, [r3, #8] bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 10280: 2201 movs r2, #1 10282: fa02 f20a lsl.w r2, r2, sl 10286: 1e51 subs r1, r2, #1 if(bit_pos + len >= 8) { 10288: 46d0 mov r8, sl 1028a: f1ca 0608 rsb r6, sl, #8 1028e: 960a str r6, [sp, #40] ; 0x28 10290: f1ca 0610 rsb r6, sl, #16 10294: 9609 str r6, [sp, #36] ; 0x24 10296: f893 c009 ldrb.w ip, [r3, #9] 1029a: 9816 ldr r0, [sp, #88] ; 0x58 1029c: f100 3eff add.w lr, r0, #4294967295 102a0: f10b 33ff add.w r3, fp, #4294967295 102a4: b29b uxth r3, r3 102a6: 930d str r3, [sp, #52] ; 0x34 102a8: eb00 0b03 add.w fp, r0, r3 102ac: 4676 mov r6, lr 102ae: 2300 movs r3, #0 102b0: 9305 str r3, [sp, #20] 102b2: 9307 str r3, [sp, #28] 102b4: 461a mov r2, r3 switch(len) { 102b6: f10a 3aff add.w sl, sl, #4294967295 rle_rdp += rle_bpp; 102ba: 2301 movs r3, #1 102bc: 9304 str r3, [sp, #16] bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 102be: b2cb uxtb r3, r1 102c0: 930b str r3, [sp, #44] ; 0x2c bit_mask = 0x3; 102c2: 9206 str r2, [sp, #24] 102c4: 4661 mov r1, ip 102c6: e034 b.n 10332 buf_size = (gsize + 3) >> 2; 102c8: 3403 adds r4, #3 102ca: 08a4 lsrs r4, r4, #2 break; 102cc: e78b b.n 101e6 buf_size = (gsize + 1) >> 1; 102ce: 3401 adds r4, #1 102d0: 0864 lsrs r4, r4, #1 break; 102d2: e788 b.n 101e6 buf_size = (gsize + 1) >> 1; 102d4: 3401 adds r4, #1 102d6: 0864 lsrs r4, r4, #1 break; 102d8: e785 b.n 101e6 LV_ASSERT_MEM(decompr_buf); 102da: 4b53 ldr r3, [pc, #332] ; (10428 ) 102dc: 9300 str r3, [sp, #0] 102de: 2272 movs r2, #114 ; 0x72 102e0: 4952 ldr r1, [pc, #328] ; (1042c ) 102e2: 2003 movs r0, #3 102e4: 4c52 ldr r4, [pc, #328] ; (10430 ) 102e6: 47a0 blx r4 102e8: f8d9 2000 ldr.w r2, [r9] 102ec: 2300 movs r3, #0 102ee: 4851 ldr r0, [pc, #324] ; (10434 ) 102f0: 4951 ldr r1, [pc, #324] ; (10438 ) 102f2: 4788 blx r1 102f4: e7fe b.n 102f4 bit_mask = 0x3; 102f6: 2003 movs r0, #3 uint32_t byte_pos = bit_pos >> 3; 102f8: 08eb lsrs r3, r5, #3 bit_pos = bit_pos & 0x7; 102fa: f005 0207 and.w r2, r5, #7 if(bit_pos + len >= 8) { 102fe: eb02 0c08 add.w ip, r2, r8 10302: f1bc 0f07 cmp.w ip, #7 10306: d835 bhi.n 10374 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 10308: f817 c003 ldrb.w ip, [r7, r3] 1030c: 9b0a ldr r3, [sp, #40] ; 0x28 1030e: 1a9a subs r2, r3, r2 10310: fa4c f302 asr.w r3, ip, r2 10314: 4003 ands r3, r0 if(rle_rdp != 0 && rle_prev_v == ret) { 10316: b115 cbz r5, 1031e 10318: 9a03 ldr r2, [sp, #12] 1031a: 4293 cmp r3, r2 1031c: d038 beq.n 10390 rle_rdp += rle_bpp; 1031e: 4445 add r5, r8 rle_prev_v = ret; 10320: 9303 str r3, [sp, #12] rle_rdp += rle_bpp; 10322: 2201 movs r2, #1 10324: 9804 ldr r0, [sp, #16] 10326: 9006 str r0, [sp, #24] out[i] = rle_next(); 10328: f806 3f01 strb.w r3, [r6, #1]! for(i = 0; i < w; i++) { 1032c: 455e cmp r6, fp 1032e: f000 814e beq.w 105ce if(rle_state == RLE_STATE_SINGLE) { 10332: bba1 cbnz r1, 1039e switch(len) { 10334: f1ba 0f07 cmp.w sl, #7 10338: d818 bhi.n 1036c 1033a: a301 add r3, pc, #4 ; (adr r3, 10340 ) 1033c: f853 f02a ldr.w pc, [r3, sl, lsl #2] 10340: 00010371 .word 0x00010371 10344: 000102f7 .word 0x000102f7 10348: 00010361 .word 0x00010361 1034c: 00010365 .word 0x00010365 10350: 0001036d .word 0x0001036d 10354: 0001036d .word 0x0001036d 10358: 0001036d .word 0x0001036d 1035c: 00010369 .word 0x00010369 bit_mask = 0x7; 10360: 2007 movs r0, #7 10362: e7c9 b.n 102f8 bit_mask = 0xF; 10364: 200f movs r0, #15 10366: e7c7 b.n 102f8 bit_mask = 0xFF; 10368: 20ff movs r0, #255 ; 0xff 1036a: e7c5 b.n 102f8 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 1036c: 980b ldr r0, [sp, #44] ; 0x2c 1036e: e7c3 b.n 102f8 bit_mask = 0x1; 10370: 2001 movs r0, #1 10372: e7c1 b.n 102f8 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 10374: f817 c003 ldrb.w ip, [r7, r3] 10378: 443b add r3, r7 1037a: 785b ldrb r3, [r3, #1] 1037c: eb03 230c add.w r3, r3, ip, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 10380: fa1f fc83 uxth.w ip, r3 10384: 9b09 ldr r3, [sp, #36] ; 0x24 10386: 1a9a subs r2, r3, r2 10388: fa4c f302 asr.w r3, ip, r2 1038c: 4003 ands r3, r0 1038e: e7c2 b.n 10316 if(rle_rdp != 0 && rle_prev_v == ret) { 10390: 2201 movs r2, #1 10392: 9205 str r2, [sp, #20] rle_cnt = 0; 10394: 2400 movs r4, #0 if(rle_rdp != 0 && rle_prev_v == ret) { 10396: 9a04 ldr r2, [sp, #16] 10398: 9207 str r2, [sp, #28] rle_state = RLE_STATE_REPEATE; 1039a: 4611 mov r1, r2 1039c: e7bf b.n 1031e else if(rle_state == RLE_STATE_REPEATE) { 1039e: 2901 cmp r1, #1 103a0: d004 beq.n 103ac else if(rle_state == RLE_STATE_COUNTER) { 103a2: 2902 cmp r1, #2 103a4: f000 80cd beq.w 10542 uint8_t ret = 0; 103a8: 2300 movs r3, #0 103aa: e7bd b.n 10328 uint32_t byte_pos = bit_pos >> 3; 103ac: 08eb lsrs r3, r5, #3 bit_pos = bit_pos & 0x7; 103ae: f005 0207 and.w r2, r5, #7 if(bit_pos + len >= 8) { 103b2: f102 0c01 add.w ip, r2, #1 103b6: f1bc 0f07 cmp.w ip, #7 103ba: d813 bhi.n 103e4 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 103bc: 5cfb ldrb r3, [r7, r3] 103be: 43d2 mvns r2, r2 103c0: 3208 adds r2, #8 103c2: 4113 asrs r3, r2 103c4: f003 0301 and.w r3, r3, #1 rle_cnt++; 103c8: 3401 adds r4, #1 103ca: b2e4 uxtb r4, r4 rle_rdp += 1; 103cc: 1c6a adds r2, r5, #1 if(v == 1) { 103ce: b9b3 cbnz r3, 103fe switch(len) { 103d0: f1ba 0f07 cmp.w sl, #7 103d4: f200 80a5 bhi.w 10522 103d8: e8df f00a tbb [pc, sl] 103dc: 9f9d84a5 .word 0x9f9d84a5 103e0: a1a3a3a3 .word 0xa1a3a3a3 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 103e4: f817 c003 ldrb.w ip, [r7, r3] 103e8: 443b add r3, r7 103ea: 785b ldrb r3, [r3, #1] 103ec: eb03 230c add.w r3, r3, ip, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 103f0: b29b uxth r3, r3 103f2: 43d2 mvns r2, r2 103f4: 3210 adds r2, #16 103f6: 4113 asrs r3, r2 103f8: f003 0301 and.w r3, r3, #1 103fc: e7e4 b.n 103c8 if(rle_cnt == 11) { 103fe: 2c0b cmp r4, #11 10400: d01c beq.n 1043c rle_rdp += 1; 10402: 4615 mov r5, r2 ret = rle_prev_v; 10404: 9b03 ldr r3, [sp, #12] if(rle_cnt == 11) { 10406: 2201 movs r2, #1 10408: 9205 str r2, [sp, #20] 1040a: 9a04 ldr r2, [sp, #16] 1040c: e78c b.n 10328 1040e: bf00 nop 10410: 00010095 .word 0x00010095 10414: 20002b5c .word 0x20002b5c 10418: 00012539 .word 0x00012539 1041c: 00012881 .word 0x00012881 10420: 00002299 .word 0x00002299 10424: 00012925 .word 0x00012925 10428: 000254ac .word 0x000254ac 1042c: 000254c8 .word 0x000254c8 10430: 00012245 .word 0x00012245 10434: 00023fc0 .word 0x00023fc0 10438: 000022a1 .word 0x000022a1 uint32_t byte_pos = bit_pos >> 3; 1043c: 08d3 lsrs r3, r2, #3 bit_pos = bit_pos & 0x7; 1043e: f002 0207 and.w r2, r2, #7 if(bit_pos + len >= 8) { 10442: 1d91 adds r1, r2, #6 10444: 2907 cmp r1, #7 10446: d813 bhi.n 10470 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 10448: 5cfc ldrb r4, [r7, r3] 1044a: f1c2 0202 rsb r2, r2, #2 1044e: fa44 f202 asr.w r2, r4, r2 10452: f002 043f and.w r4, r2, #63 ; 0x3f rle_rdp += 6; 10456: 3507 adds r5, #7 if(rle_cnt != 0) { 10458: 2c00 cmp r4, #0 1045a: f040 80ad bne.w 105b8 switch(len) { 1045e: f1ba 0f07 cmp.w sl, #7 10462: d826 bhi.n 104b2 10464: e8df f00a tbb [pc, sl] 10468: 211f1027 .word 0x211f1027 1046c: 23252525 .word 0x23252525 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 10470: 5cf9 ldrb r1, [r7, r3] 10472: 443b add r3, r7 10474: 785c ldrb r4, [r3, #1] 10476: eb04 2401 add.w r4, r4, r1, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 1047a: b2a4 uxth r4, r4 1047c: f1c2 020a rsb r2, r2, #10 10480: 4114 asrs r4, r2 10482: f004 043f and.w r4, r4, #63 ; 0x3f 10486: e7e6 b.n 10456 bit_mask = 0x3; 10488: 2003 movs r0, #3 uint32_t byte_pos = bit_pos >> 3; 1048a: 08ea lsrs r2, r5, #3 bit_pos = bit_pos & 0x7; 1048c: f005 0307 and.w r3, r5, #7 if(bit_pos + len >= 8) { 10490: eb03 0108 add.w r1, r3, r8 10494: 2907 cmp r1, #7 10496: d810 bhi.n 104ba return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 10498: 5cba ldrb r2, [r7, r2] 1049a: 990a ldr r1, [sp, #40] ; 0x28 1049c: 1acb subs r3, r1, r3 1049e: fa42 f303 asr.w r3, r2, r3 104a2: 4003 ands r3, r0 104a4: e014 b.n 104d0 bit_mask = 0x7; 104a6: 2007 movs r0, #7 104a8: e7ef b.n 1048a bit_mask = 0xF; 104aa: 200f movs r0, #15 104ac: e7ed b.n 1048a bit_mask = 0xFF; 104ae: 20ff movs r0, #255 ; 0xff 104b0: e7eb b.n 1048a bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 104b2: 980b ldr r0, [sp, #44] ; 0x2c 104b4: e7e9 b.n 1048a bit_mask = 0x1; 104b6: 2001 movs r0, #1 104b8: e7e7 b.n 1048a uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 104ba: 5cb9 ldrb r1, [r7, r2] 104bc: 443a add r2, r7 104be: 7852 ldrb r2, [r2, #1] 104c0: eb02 2201 add.w r2, r2, r1, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 104c4: b292 uxth r2, r2 104c6: 9909 ldr r1, [sp, #36] ; 0x24 104c8: 1acb subs r3, r1, r3 104ca: fa42 f303 asr.w r3, r2, r3 104ce: 4003 ands r3, r0 rle_rdp += rle_bpp; 104d0: 4445 add r5, r8 rle_prev_v = ret; 104d2: 9303 str r3, [sp, #12] rle_rdp += rle_bpp; 104d4: 2201 movs r2, #1 104d6: 9205 str r2, [sp, #20] 104d8: 9804 ldr r0, [sp, #16] 104da: 4602 mov r2, r0 104dc: 9007 str r0, [sp, #28] rle_state = RLE_STATE_SINGLE; 104de: 2100 movs r1, #0 rle_rdp += rle_bpp; 104e0: 9006 str r0, [sp, #24] 104e2: e721 b.n 10328 bit_mask = 0x3; 104e4: 2003 movs r0, #3 uint32_t byte_pos = bit_pos >> 3; 104e6: 08d1 lsrs r1, r2, #3 bit_pos = bit_pos & 0x7; 104e8: f002 0307 and.w r3, r2, #7 if(bit_pos + len >= 8) { 104ec: eb03 0508 add.w r5, r3, r8 104f0: 2d07 cmp r5, #7 104f2: d81a bhi.n 1052a return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 104f4: 5c79 ldrb r1, [r7, r1] 104f6: 9d0a ldr r5, [sp, #40] ; 0x28 104f8: 1aeb subs r3, r5, r3 104fa: fa41 f303 asr.w r3, r1, r3 104fe: 4003 ands r3, r0 rle_rdp += rle_bpp; 10500: eb02 0508 add.w r5, r2, r8 rle_prev_v = ret; 10504: 9303 str r3, [sp, #12] rle_rdp += rle_bpp; 10506: 2201 movs r2, #1 10508: 9205 str r2, [sp, #20] 1050a: 9804 ldr r0, [sp, #16] 1050c: 4602 mov r2, r0 1050e: 9007 str r0, [sp, #28] rle_state = RLE_STATE_SINGLE; 10510: 2100 movs r1, #0 rle_rdp += rle_bpp; 10512: 9006 str r0, [sp, #24] 10514: e708 b.n 10328 bit_mask = 0x7; 10516: 2007 movs r0, #7 10518: e7e5 b.n 104e6 bit_mask = 0xF; 1051a: 200f movs r0, #15 1051c: e7e3 b.n 104e6 bit_mask = 0xFF; 1051e: 20ff movs r0, #255 ; 0xff 10520: e7e1 b.n 104e6 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 10522: 980b ldr r0, [sp, #44] ; 0x2c 10524: e7df b.n 104e6 bit_mask = 0x1; 10526: 2001 movs r0, #1 10528: e7dd b.n 104e6 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 1052a: 5c7d ldrb r5, [r7, r1] 1052c: 4439 add r1, r7 1052e: 7849 ldrb r1, [r1, #1] 10530: eb01 2105 add.w r1, r1, r5, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 10534: b289 uxth r1, r1 10536: 9d09 ldr r5, [sp, #36] ; 0x24 10538: 1aeb subs r3, r5, r3 1053a: fa41 f303 asr.w r3, r1, r3 1053e: 4003 ands r3, r0 10540: e7de b.n 10500 rle_cnt--; 10542: 3c01 subs r4, #1 if(rle_cnt == 0) { 10544: f014 04ff ands.w r4, r4, #255 ; 0xff 10548: d13d bne.n 105c6 switch(len) { 1054a: f1ba 0f07 cmp.w sl, #7 1054e: d823 bhi.n 10598 10550: e8df f00a tbb [pc, sl] 10554: 1e1c0424 .word 0x1e1c0424 10558: 20222222 .word 0x20222222 bit_mask = 0x3; 1055c: 2003 movs r0, #3 uint32_t byte_pos = bit_pos >> 3; 1055e: 08ea lsrs r2, r5, #3 bit_pos = bit_pos & 0x7; 10560: f005 0307 and.w r3, r5, #7 if(bit_pos + len >= 8) { 10564: eb03 0108 add.w r1, r3, r8 10568: 2907 cmp r1, #7 1056a: d819 bhi.n 105a0 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 1056c: 5cba ldrb r2, [r7, r2] 1056e: 990a ldr r1, [sp, #40] ; 0x28 10570: 1acb subs r3, r1, r3 10572: fa42 f303 asr.w r3, r2, r3 10576: 4003 ands r3, r0 rle_rdp += rle_bpp; 10578: 4445 add r5, r8 rle_prev_v = ret; 1057a: 9303 str r3, [sp, #12] rle_rdp += rle_bpp; 1057c: 2201 movs r2, #1 1057e: 9205 str r2, [sp, #20] 10580: 9804 ldr r0, [sp, #16] 10582: 4602 mov r2, r0 10584: 9007 str r0, [sp, #28] rle_state = RLE_STATE_SINGLE; 10586: 2100 movs r1, #0 rle_rdp += rle_bpp; 10588: 9006 str r0, [sp, #24] 1058a: e6cd b.n 10328 bit_mask = 0x7; 1058c: 2007 movs r0, #7 1058e: e7e6 b.n 1055e bit_mask = 0xF; 10590: 200f movs r0, #15 10592: e7e4 b.n 1055e bit_mask = 0xFF; 10594: 20ff movs r0, #255 ; 0xff 10596: e7e2 b.n 1055e bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 10598: 980b ldr r0, [sp, #44] ; 0x2c 1059a: e7e0 b.n 1055e bit_mask = 0x1; 1059c: 2001 movs r0, #1 1059e: e7de b.n 1055e uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 105a0: 5cb9 ldrb r1, [r7, r2] 105a2: 443a add r2, r7 105a4: 7852 ldrb r2, [r2, #1] 105a6: eb02 2201 add.w r2, r2, r1, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 105aa: b292 uxth r2, r2 105ac: 9909 ldr r1, [sp, #36] ; 0x24 105ae: 1acb subs r3, r1, r3 105b0: fa42 f303 asr.w r3, r2, r3 105b4: 4003 ands r3, r0 105b6: e7df b.n 10578 ret = rle_prev_v; 105b8: 9b03 ldr r3, [sp, #12] if(rle_cnt != 0) { 105ba: 2201 movs r2, #1 105bc: 9205 str r2, [sp, #20] 105be: 9a04 ldr r2, [sp, #16] 105c0: 9207 str r2, [sp, #28] rle_state = RLE_STATE_COUNTER; 105c2: 2102 movs r1, #2 105c4: e6b0 b.n 10328 ret = rle_prev_v; 105c6: 9b03 ldr r3, [sp, #12] if(rle_cnt == 0) { 105c8: 2001 movs r0, #1 105ca: 9005 str r0, [sp, #20] 105cc: e6ac b.n 10328 105ce: 9806 ldr r0, [sp, #24] 105d0: 468c mov ip, r1 105d2: b9c8 cbnz r0, 10608 105d4: b10a cbz r2, 105da 105d6: 4b9f ldr r3, [pc, #636] ; (10854 ) 105d8: 60dd str r5, [r3, #12] 105da: 9b07 ldr r3, [sp, #28] 105dc: b113 cbz r3, 105e4 105de: 4b9d ldr r3, [pc, #628] ; (10854 ) 105e0: f883 c009 strb.w ip, [r3, #9] 105e4: 9b05 ldr r3, [sp, #20] 105e6: b10b cbz r3, 105ec 105e8: 4b9a ldr r3, [pc, #616] ; (10854 ) 105ea: 745c strb r4, [r3, #17] rle_rdp += rle_bpp; 105ec: 2000 movs r0, #0 if(len == 3) { 105ee: 9b0f ldr r3, [sp, #60] ; 0x3c 105f0: 9303 str r3, [sp, #12] len = 4; 105f2: 2704 movs r7, #4 val = 15; 105f4: f04f 0c0f mov.w ip, #15 val = 13; 105f8: f04f 080d mov.w r8, #13 val = 11; 105fc: f04f 0a0b mov.w sl, #11 val = 9; 10600: f04f 0b09 mov.w fp, #9 val = 4; 10604: 9704 str r7, [sp, #16] 10606: e028 b.n 1065a 10608: 4b92 ldr r3, [pc, #584] ; (10854 ) 1060a: f89d 100c ldrb.w r1, [sp, #12] 1060e: 7419 strb r1, [r3, #16] 10610: e7e0 b.n 105d4 switch(val) { 10612: 2907 cmp r1, #7 10614: d83d bhi.n 10692 10616: e8df f001 tbb [pc, r1] 1061a: 2704 .short 0x2704 1061c: 33302d2a .word 0x33302d2a 10620: 3936 .short 0x3936 len = 4; 10622: 463d mov r5, r7 val = 0; 10624: 2100 movs r1, #0 bit_pos = bit_pos & 0x7; 10626: f000 0207 and.w r2, r0, #7 1062a: f1c2 0208 rsb r2, r2, #8 bit_pos = 8 - bit_pos - len; 1062e: 1b52 subs r2, r2, r5 out[byte_pos] &= ((~bit_mask) << bit_pos); 10630: f3c0 04cf ubfx r4, r0, #3, #16 10634: f04f 33ff mov.w r3, #4294967295 10638: 40ab lsls r3, r5 1063a: f063 03ff orn r3, r3, #255 ; 0xff 1063e: 4093 lsls r3, r2 10640: f819 5004 ldrb.w r5, [r9, r4] 10644: 402b ands r3, r5 out[byte_pos] |= (val << bit_pos); 10646: fa01 f202 lsl.w r2, r1, r2 1064a: 4313 orrs r3, r2 1064c: f809 3004 strb.w r3, [r9, r4] wrp += wr_size; 10650: 9a08 ldr r2, [sp, #32] 10652: 4613 mov r3, r2 10654: 4410 add r0, r2 for(x = 0; x < w; x++) { 10656: 45b6 cmp lr, r6 10658: d01d beq.n 10696 bits_write(out, wrp, line_buf1[x], bpp); 1065a: f81e 1f01 ldrb.w r1, [lr, #1]! if(len == 3) { 1065e: 9b0f ldr r3, [sp, #60] ; 0x3c 10660: 2b03 cmp r3, #3 10662: d0d6 beq.n 10612 10664: 9d03 ldr r5, [sp, #12] 10666: e7de b.n 10626 len = 4; 10668: 463d mov r5, r7 val = 2; 1066a: 2102 movs r1, #2 1066c: e7db b.n 10626 len = 4; 1066e: 463d mov r5, r7 val = 4; 10670: 9904 ldr r1, [sp, #16] 10672: e7d8 b.n 10626 len = 4; 10674: 463d mov r5, r7 val = 6; 10676: 2106 movs r1, #6 10678: e7d5 b.n 10626 len = 4; 1067a: 463d mov r5, r7 val = 9; 1067c: 4659 mov r1, fp 1067e: e7d2 b.n 10626 len = 4; 10680: 463d mov r5, r7 val = 11; 10682: 4651 mov r1, sl 10684: e7cf b.n 10626 len = 4; 10686: 463d mov r5, r7 val = 13; 10688: 4641 mov r1, r8 1068a: e7cc b.n 10626 len = 4; 1068c: 463d mov r5, r7 val = 15; 1068e: 4661 mov r1, ip 10690: e7c9 b.n 10626 len = 4; 10692: 463d mov r5, r7 10694: e7c7 b.n 10626 10696: 9a0d ldr r2, [sp, #52] ; 0x34 10698: fb02 3303 mla r3, r2, r3, r3 1069c: 930e str r3, [sp, #56] ; 0x38 for(y = 1; y < h; y++) { 1069e: 9b15 ldr r3, [sp, #84] ; 0x54 106a0: 2b01 cmp r3, #1 106a2: f340 8255 ble.w 10b50 ret = get_bits(rle_in, rle_rdp, rle_bpp); 106a6: 4b6b ldr r3, [pc, #428] ; (10854 ) 106a8: f8d3 8004 ldr.w r8, [r3, #4] 106ac: 7a1a ldrb r2, [r3, #8] 106ae: 4610 mov r0, r2 106b0: 9219 str r2, [sp, #100] ; 0x64 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 106b2: 2201 movs r2, #1 106b4: fa02 f100 lsl.w r1, r2, r0 106b8: 3901 subs r1, #1 106ba: b2c9 uxtb r1, r1 106bc: 911b str r1, [sp, #108] ; 0x6c if(bit_pos + len >= 8) { 106be: 4601 mov r1, r0 106c0: 4682 mov sl, r0 106c2: 7c58 ldrb r0, [r3, #17] 106c4: 9007 str r0, [sp, #28] 106c6: f1c1 0108 rsb r1, r1, #8 106ca: 910b str r1, [sp, #44] ; 0x2c 106cc: f1ca 0110 rsb r1, sl, #16 106d0: 910d str r1, [sp, #52] ; 0x34 106d2: 7c19 ldrb r1, [r3, #16] 106d4: 9103 str r1, [sp, #12] 106d6: f8d3 c00c ldr.w ip, [r3, #12] 106da: f893 b009 ldrb.w fp, [r3, #9] 106de: 9908 ldr r1, [sp, #32] 106e0: 9112 str r1, [sp, #72] ; 0x48 106e2: 9b0c ldr r3, [sp, #48] ; 0x30 106e4: 3b01 subs r3, #1 106e6: b29b uxth r3, r3 106e8: fb01 f103 mul.w r1, r1, r3 106ec: 911a str r1, [sp, #104] ; 0x68 106ee: 2100 movs r1, #0 106f0: 910a str r1, [sp, #40] ; 0x28 106f2: 910c str r1, [sp, #48] ; 0x30 106f4: 9106 str r1, [sp, #24] 106f6: 9108 str r1, [sp, #32] 106f8: 9210 str r2, [sp, #64] ; 0x40 106fa: 9a17 ldr r2, [sp, #92] ; 0x5c 106fc: 18d3 adds r3, r2, r3 106fe: 931c str r3, [sp, #112] ; 0x70 rle_rdp += rle_bpp; 10700: 2301 movs r3, #1 10702: 9304 str r3, [sp, #16] if(len == 3) { 10704: 9a0f ldr r2, [sp, #60] ; 0x3c 10706: 9209 str r2, [sp, #36] ; 0x24 val = 4; 10708: 2204 movs r2, #4 1070a: 921d str r2, [sp, #116] ; 0x74 rle_rdp += rle_bpp; 1070c: 9305 str r3, [sp, #20] 1070e: 4666 mov r6, ip 10710: e1f5 b.n 10afe for(i = 0; i < w; i++) { 10712: 2300 movs r3, #0 10714: 930e str r3, [sp, #56] ; 0x38 10716: e7c2 b.n 1069e bit_mask = 0x3; 10718: f04f 0903 mov.w r9, #3 1071c: e00c b.n 10738 bit_mask = 0x7; 1071e: f04f 0907 mov.w r9, #7 10722: e009 b.n 10738 bit_mask = 0xF; 10724: f04f 090f mov.w r9, #15 10728: e006 b.n 10738 bit_mask = 0xFF; 1072a: 46e1 mov r9, ip 1072c: e004 b.n 10738 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 1072e: f8dd 9044 ldr.w r9, [sp, #68] ; 0x44 10732: e001 b.n 10738 bit_mask = 0x1; 10734: f8dd 9010 ldr.w r9, [sp, #16] uint32_t byte_pos = bit_pos >> 3; 10738: 08f3 lsrs r3, r6, #3 bit_pos = bit_pos & 0x7; 1073a: f006 0207 and.w r2, r6, #7 if(bit_pos + len >= 8) { 1073e: eb02 0b0a add.w fp, r2, sl 10742: f1bb 0f07 cmp.w fp, #7 10746: d831 bhi.n 107ac return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 10748: f818 3003 ldrb.w r3, [r8, r3] 1074c: 9d0b ldr r5, [sp, #44] ; 0x2c 1074e: 1aaa subs r2, r5, r2 10750: fa43 f202 asr.w r2, r3, r2 10754: ea02 0909 and.w r9, r2, r9 10758: fa5f f989 uxtb.w r9, r9 if(rle_rdp != 0 && rle_prev_v == ret) { 1075c: b116 cbz r6, 10764 1075e: 9b03 ldr r3, [sp, #12] 10760: 454b cmp r3, r9 10762: d033 beq.n 107cc rle_rdp += rle_bpp; 10764: 4456 add r6, sl rle_prev_v = ret; 10766: f8cd 900c str.w r9, [sp, #12] rle_rdp += rle_bpp; 1076a: 9b04 ldr r3, [sp, #16] 1076c: 9306 str r3, [sp, #24] 1076e: 9b05 ldr r3, [sp, #20] 10770: 9308 str r3, [sp, #32] out[i] = rle_next(); 10772: f804 9f01 strb.w r9, [r4, #1]! for(i = 0; i < w; i++) { 10776: 42a0 cmp r0, r4 10778: f000 815d beq.w 10a36 if(rle_state == RLE_STATE_SINGLE) { 1077c: bb69 cbnz r1, 107da switch(len) { 1077e: 9b07 ldr r3, [sp, #28] 10780: 461a mov r2, r3 10782: 2a07 cmp r2, #7 10784: d8d3 bhi.n 1072e 10786: a301 add r3, pc, #4 ; (adr r3, 1078c ) 10788: f853 f022 ldr.w pc, [r3, r2, lsl #2] 1078c: 00010735 .word 0x00010735 10790: 00010719 .word 0x00010719 10794: 0001071f .word 0x0001071f 10798: 00010725 .word 0x00010725 1079c: 0001072f .word 0x0001072f 107a0: 0001072f .word 0x0001072f 107a4: 0001072f .word 0x0001072f 107a8: 0001072b .word 0x0001072b uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 107ac: f818 b003 ldrb.w fp, [r8, r3] 107b0: 4443 add r3, r8 107b2: 785b ldrb r3, [r3, #1] 107b4: eb03 230b add.w r3, r3, fp, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 107b8: b29b uxth r3, r3 107ba: 9d0d ldr r5, [sp, #52] ; 0x34 107bc: 1aaa subs r2, r5, r2 107be: fa43 f202 asr.w r2, r3, r2 107c2: ea02 0209 and.w r2, r2, r9 107c6: fa5f f982 uxtb.w r9, r2 107ca: e7c7 b.n 1075c if(rle_rdp != 0 && rle_prev_v == ret) { 107cc: 9b04 ldr r3, [sp, #16] 107ce: 930a str r3, [sp, #40] ; 0x28 rle_cnt = 0; 107d0: 4677 mov r7, lr if(rle_rdp != 0 && rle_prev_v == ret) { 107d2: 9b05 ldr r3, [sp, #20] 107d4: 930c str r3, [sp, #48] ; 0x30 rle_state = RLE_STATE_REPEATE; 107d6: 4619 mov r1, r3 107d8: e7c4 b.n 10764 else if(rle_state == RLE_STATE_REPEATE) { 107da: 2901 cmp r1, #1 107dc: d004 beq.n 107e8 else if(rle_state == RLE_STATE_COUNTER) { 107de: 2902 cmp r1, #2 107e0: f000 80d7 beq.w 10992 uint8_t ret = 0; 107e4: 46f1 mov r9, lr 107e6: e7c4 b.n 10772 uint32_t byte_pos = bit_pos >> 3; 107e8: 08f3 lsrs r3, r6, #3 bit_pos = bit_pos & 0x7; 107ea: f006 0207 and.w r2, r6, #7 if(bit_pos + len >= 8) { 107ee: f102 0901 add.w r9, r2, #1 107f2: f1b9 0f07 cmp.w r9, #7 107f6: d815 bhi.n 10824 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 107f8: f818 3003 ldrb.w r3, [r8, r3] 107fc: 43d2 mvns r2, r2 107fe: 3208 adds r2, #8 10800: 4113 asrs r3, r2 10802: f003 0301 and.w r3, r3, #1 rle_cnt++; 10806: 1c7a adds r2, r7, #1 10808: b2d7 uxtb r7, r2 rle_rdp += 1; 1080a: 1c72 adds r2, r6, #1 if(v == 1) { 1080c: b9bb cbnz r3, 1083e switch(len) { 1080e: 9b07 ldr r3, [sp, #28] 10810: 4619 mov r1, r3 10812: 2907 cmp r1, #7 10814: f200 808e bhi.w 10934 10818: e8df f001 tbb [pc, r1] 1081c: 8886848e .word 0x8886848e 10820: 8a8c8c8c .word 0x8a8c8c8c uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 10824: f818 9003 ldrb.w r9, [r8, r3] 10828: 4443 add r3, r8 1082a: 785b ldrb r3, [r3, #1] 1082c: eb03 2309 add.w r3, r3, r9, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 10830: b29b uxth r3, r3 10832: 43d2 mvns r2, r2 10834: 3210 adds r2, #16 10836: 4113 asrs r3, r2 10838: f003 0301 and.w r3, r3, #1 1083c: e7e3 b.n 10806 if(rle_cnt == 11) { 1083e: 2f0b cmp r7, #11 10840: d00a beq.n 10858 rle_rdp += 1; 10842: 4616 mov r6, r2 ret = rle_prev_v; 10844: f8dd 900c ldr.w r9, [sp, #12] if(rle_cnt == 11) { 10848: 9b04 ldr r3, [sp, #16] 1084a: 930a str r3, [sp, #40] ; 0x28 1084c: 9b05 ldr r3, [sp, #20] 1084e: 9306 str r3, [sp, #24] 10850: e78f b.n 10772 10852: bf00 nop 10854: 20002b5c .word 0x20002b5c uint32_t byte_pos = bit_pos >> 3; 10858: 08d3 lsrs r3, r2, #3 bit_pos = bit_pos & 0x7; 1085a: f002 0207 and.w r2, r2, #7 if(bit_pos + len >= 8) { 1085e: 1d91 adds r1, r2, #6 10860: 2907 cmp r1, #7 10862: d815 bhi.n 10890 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 10864: f818 3003 ldrb.w r3, [r8, r3] 10868: f1c2 0202 rsb r2, r2, #2 1086c: fa43 f202 asr.w r2, r3, r2 10870: f002 073f and.w r7, r2, #63 ; 0x3f rle_rdp += 6; 10874: 3607 adds r6, #7 if(rle_cnt != 0) { 10876: 2f00 cmp r7, #0 10878: f040 80cf bne.w 10a1a switch(len) { 1087c: 9b07 ldr r3, [sp, #28] 1087e: 461a mov r2, r3 10880: 2a07 cmp r2, #7 10882: d839 bhi.n 108f8 10884: e8df f002 tbb [pc, r2] 10888: 3330123b .word 0x3330123b 1088c: 36383838 .word 0x36383838 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 10890: f818 1003 ldrb.w r1, [r8, r3] 10894: 4443 add r3, r8 10896: 785b ldrb r3, [r3, #1] 10898: eb03 2301 add.w r3, r3, r1, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 1089c: b29b uxth r3, r3 1089e: f1c2 020a rsb r2, r2, #10 108a2: fa43 f202 asr.w r2, r3, r2 108a6: f002 073f and.w r7, r2, #63 ; 0x3f 108aa: e7e3 b.n 10874 bit_mask = 0x3; 108ac: f04f 0903 mov.w r9, #3 uint32_t byte_pos = bit_pos >> 3; 108b0: 08f3 lsrs r3, r6, #3 bit_pos = bit_pos & 0x7; 108b2: f006 0207 and.w r2, r6, #7 if(bit_pos + len >= 8) { 108b6: eb02 010a add.w r1, r2, sl 108ba: 2907 cmp r1, #7 108bc: d822 bhi.n 10904 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 108be: f818 3003 ldrb.w r3, [r8, r3] 108c2: 990b ldr r1, [sp, #44] ; 0x2c 108c4: 1a8a subs r2, r1, r2 108c6: fa43 f202 asr.w r2, r3, r2 108ca: ea02 0209 and.w r2, r2, r9 108ce: fa5f f982 uxtb.w r9, r2 rle_rdp += rle_bpp; 108d2: 4456 add r6, sl rle_prev_v = ret; 108d4: f8cd 900c str.w r9, [sp, #12] rle_rdp += rle_bpp; 108d8: 9b04 ldr r3, [sp, #16] 108da: 930a str r3, [sp, #40] ; 0x28 108dc: 9b05 ldr r3, [sp, #20] 108de: 930c str r3, [sp, #48] ; 0x30 rle_state = RLE_STATE_SINGLE; 108e0: 4671 mov r1, lr rle_rdp += rle_bpp; 108e2: 9306 str r3, [sp, #24] 108e4: 9308 str r3, [sp, #32] 108e6: e744 b.n 10772 bit_mask = 0x7; 108e8: f04f 0907 mov.w r9, #7 108ec: e7e0 b.n 108b0 bit_mask = 0xF; 108ee: f04f 090f mov.w r9, #15 108f2: e7dd b.n 108b0 bit_mask = 0xFF; 108f4: 46e1 mov r9, ip 108f6: e7db b.n 108b0 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 108f8: f8dd 9044 ldr.w r9, [sp, #68] ; 0x44 108fc: e7d8 b.n 108b0 bit_mask = 0x1; 108fe: f8dd 9010 ldr.w r9, [sp, #16] 10902: e7d5 b.n 108b0 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 10904: f818 1003 ldrb.w r1, [r8, r3] 10908: 4443 add r3, r8 1090a: 785b ldrb r3, [r3, #1] 1090c: eb03 2301 add.w r3, r3, r1, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 10910: b29b uxth r3, r3 10912: 990d ldr r1, [sp, #52] ; 0x34 10914: 1a8a subs r2, r1, r2 10916: fa43 f202 asr.w r2, r3, r2 1091a: ea02 0209 and.w r2, r2, r9 1091e: fa5f f982 uxtb.w r9, r2 10922: e7d6 b.n 108d2 bit_mask = 0x3; 10924: 2603 movs r6, #3 10926: e008 b.n 1093a bit_mask = 0x7; 10928: 2607 movs r6, #7 1092a: e006 b.n 1093a bit_mask = 0xF; 1092c: 260f movs r6, #15 1092e: e004 b.n 1093a bit_mask = 0xFF; 10930: 4666 mov r6, ip 10932: e002 b.n 1093a bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 10934: 9e11 ldr r6, [sp, #68] ; 0x44 10936: e000 b.n 1093a bit_mask = 0x1; 10938: 9e04 ldr r6, [sp, #16] uint32_t byte_pos = bit_pos >> 3; 1093a: 08d3 lsrs r3, r2, #3 bit_pos = bit_pos & 0x7; 1093c: f002 0107 and.w r1, r2, #7 if(bit_pos + len >= 8) { 10940: eb01 090a add.w r9, r1, sl 10944: f1b9 0f07 cmp.w r9, #7 10948: d814 bhi.n 10974 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 1094a: f818 3003 ldrb.w r3, [r8, r3] 1094e: 9d0b ldr r5, [sp, #44] ; 0x2c 10950: 1a69 subs r1, r5, r1 10952: fa43 f101 asr.w r1, r3, r1 10956: 4031 ands r1, r6 10958: fa5f f981 uxtb.w r9, r1 rle_rdp += rle_bpp; 1095c: eb02 060a add.w r6, r2, sl rle_prev_v = ret; 10960: f8cd 900c str.w r9, [sp, #12] rle_rdp += rle_bpp; 10964: 9b04 ldr r3, [sp, #16] 10966: 930a str r3, [sp, #40] ; 0x28 10968: 9b05 ldr r3, [sp, #20] 1096a: 930c str r3, [sp, #48] ; 0x30 rle_state = RLE_STATE_SINGLE; 1096c: 4671 mov r1, lr rle_rdp += rle_bpp; 1096e: 9306 str r3, [sp, #24] 10970: 9308 str r3, [sp, #32] 10972: e6fe b.n 10772 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 10974: f818 9003 ldrb.w r9, [r8, r3] 10978: 4443 add r3, r8 1097a: 785b ldrb r3, [r3, #1] 1097c: eb03 2309 add.w r3, r3, r9, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 10980: b29b uxth r3, r3 10982: 9d0d ldr r5, [sp, #52] ; 0x34 10984: 1a69 subs r1, r5, r1 10986: fa43 f101 asr.w r1, r3, r1 1098a: 4031 ands r1, r6 1098c: fa5f f981 uxtb.w r9, r1 10990: e7e4 b.n 1095c rle_cnt--; 10992: 1e7b subs r3, r7, #1 if(rle_cnt == 0) { 10994: f013 07ff ands.w r7, r3, #255 ; 0xff 10998: d148 bne.n 10a2c switch(len) { 1099a: 9b07 ldr r3, [sp, #28] 1099c: 461a mov r2, r3 1099e: 2a07 cmp r2, #7 109a0: d80d bhi.n 109be 109a2: e8df f002 tbb [pc, r2] 109a6: 040e .short 0x040e 109a8: 0c0c0806 .word 0x0c0c0806 109ac: 0a0c .short 0x0a0c bit_mask = 0x3; 109ae: 2103 movs r1, #3 109b0: e008 b.n 109c4 bit_mask = 0x7; 109b2: 2107 movs r1, #7 109b4: e006 b.n 109c4 bit_mask = 0xF; 109b6: 210f movs r1, #15 109b8: e004 b.n 109c4 bit_mask = 0xFF; 109ba: 4661 mov r1, ip 109bc: e002 b.n 109c4 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 109be: 9911 ldr r1, [sp, #68] ; 0x44 109c0: e000 b.n 109c4 bit_mask = 0x1; 109c2: 9904 ldr r1, [sp, #16] uint32_t byte_pos = bit_pos >> 3; 109c4: 08f3 lsrs r3, r6, #3 bit_pos = bit_pos & 0x7; 109c6: f006 0207 and.w r2, r6, #7 if(bit_pos + len >= 8) { 109ca: eb02 090a add.w r9, r2, sl 109ce: f1b9 0f07 cmp.w r9, #7 109d2: d813 bhi.n 109fc return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 109d4: f818 3003 ldrb.w r3, [r8, r3] 109d8: 9d0b ldr r5, [sp, #44] ; 0x2c 109da: 1aaa subs r2, r5, r2 109dc: fa43 f202 asr.w r2, r3, r2 109e0: 400a ands r2, r1 109e2: fa5f f982 uxtb.w r9, r2 rle_rdp += rle_bpp; 109e6: 4456 add r6, sl rle_prev_v = ret; 109e8: f8cd 900c str.w r9, [sp, #12] rle_rdp += rle_bpp; 109ec: 9b04 ldr r3, [sp, #16] 109ee: 930a str r3, [sp, #40] ; 0x28 109f0: 9b05 ldr r3, [sp, #20] 109f2: 930c str r3, [sp, #48] ; 0x30 rle_state = RLE_STATE_SINGLE; 109f4: 4671 mov r1, lr rle_rdp += rle_bpp; 109f6: 9306 str r3, [sp, #24] 109f8: 9308 str r3, [sp, #32] 109fa: e6ba b.n 10772 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 109fc: f818 9003 ldrb.w r9, [r8, r3] 10a00: 4443 add r3, r8 10a02: 785b ldrb r3, [r3, #1] 10a04: eb03 2309 add.w r3, r3, r9, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 10a08: b29b uxth r3, r3 10a0a: 9d0d ldr r5, [sp, #52] ; 0x34 10a0c: 1aaa subs r2, r5, r2 10a0e: fa43 f202 asr.w r2, r3, r2 10a12: 400a ands r2, r1 10a14: fa5f f982 uxtb.w r9, r2 10a18: e7e5 b.n 109e6 ret = rle_prev_v; 10a1a: f8dd 900c ldr.w r9, [sp, #12] if(rle_cnt != 0) { 10a1e: 9b04 ldr r3, [sp, #16] 10a20: 930a str r3, [sp, #40] ; 0x28 10a22: 9b05 ldr r3, [sp, #20] 10a24: 930c str r3, [sp, #48] ; 0x30 rle_state = RLE_STATE_COUNTER; 10a26: 2102 movs r1, #2 if(rle_cnt != 0) { 10a28: 9306 str r3, [sp, #24] 10a2a: e6a2 b.n 10772 ret = rle_prev_v; 10a2c: f8dd 900c ldr.w r9, [sp, #12] if(rle_cnt == 0) { 10a30: 9b04 ldr r3, [sp, #16] 10a32: 930a str r3, [sp, #40] ; 0x28 10a34: e69d b.n 10772 10a36: f8dd 904c ldr.w r9, [sp, #76] ; 0x4c 10a3a: 9707 str r7, [sp, #28] 10a3c: 9f14 ldr r7, [sp, #80] ; 0x50 10a3e: 9b16 ldr r3, [sp, #88] ; 0x58 10a40: f103 3eff add.w lr, r3, #4294967295 for(i = 0; i < w; i++) { 10a44: 9d0e ldr r5, [sp, #56] ; 0x38 val = 2; 10a46: f8dd c03c ldr.w ip, [sp, #60] ; 0x3c 10a4a: 9611 str r6, [sp, #68] ; 0x44 10a4c: 9113 str r1, [sp, #76] ; 0x4c 10a4e: f8dd b048 ldr.w fp, [sp, #72] ; 0x48 10a52: e021 b.n 10a98 switch(val) { 10a54: 2a07 cmp r2, #7 10a56: d840 bhi.n 10ada 10a58: e8df f002 tbb [pc, r2] 10a5c: 302d2a04 .word 0x302d2a04 10a60: 3c393633 .word 0x3c393633 len = 4; 10a64: 2304 movs r3, #4 val = 0; 10a66: 2200 movs r2, #0 bit_pos = bit_pos & 0x7; 10a68: f005 0107 and.w r1, r5, #7 10a6c: f1c1 0108 rsb r1, r1, #8 bit_pos = 8 - bit_pos - len; 10a70: 1ac9 subs r1, r1, r3 out[byte_pos] &= ((~bit_mask) << bit_pos); 10a72: f3c5 00cf ubfx r0, r5, #3, #16 uint8_t bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 10a76: 2601 movs r6, #1 10a78: fa06 f303 lsl.w r3, r6, r3 out[byte_pos] &= ((~bit_mask) << bit_pos); 10a7c: 425b negs r3, r3 10a7e: f063 03ff orn r3, r3, #255 ; 0xff 10a82: 408b lsls r3, r1 10a84: f819 6000 ldrb.w r6, [r9, r0] 10a88: 4033 ands r3, r6 out[byte_pos] |= (val << bit_pos); 10a8a: 408a lsls r2, r1 10a8c: 4313 orrs r3, r2 10a8e: f809 3000 strb.w r3, [r9, r0] 10a92: 445d add r5, fp for(x = 0; x < w; x++) { 10a94: 42bc cmp r4, r7 10a96: d022 beq.n 10ade line_buf1[x] = line_buf2[x] ^ line_buf1[x]; 10a98: f817 2f01 ldrb.w r2, [r7, #1]! 10a9c: f89e 3001 ldrb.w r3, [lr, #1] 10aa0: 405a eors r2, r3 10aa2: f80e 2f01 strb.w r2, [lr, #1]! if(len == 3) { 10aa6: f1bc 0f03 cmp.w ip, #3 10aaa: d0d3 beq.n 10a54 10aac: 9b09 ldr r3, [sp, #36] ; 0x24 10aae: e7db b.n 10a68 len = 4; 10ab0: 2304 movs r3, #4 val = 2; 10ab2: 2202 movs r2, #2 10ab4: e7d8 b.n 10a68 len = 4; 10ab6: 2304 movs r3, #4 val = 4; 10ab8: 9a1d ldr r2, [sp, #116] ; 0x74 10aba: e7d5 b.n 10a68 len = 4; 10abc: 2304 movs r3, #4 val = 6; 10abe: 2206 movs r2, #6 10ac0: e7d2 b.n 10a68 len = 4; 10ac2: 2304 movs r3, #4 val = 9; 10ac4: 2209 movs r2, #9 10ac6: e7cf b.n 10a68 len = 4; 10ac8: 2304 movs r3, #4 val = 11; 10aca: 220b movs r2, #11 10acc: e7cc b.n 10a68 len = 4; 10ace: 2304 movs r3, #4 val = 13; 10ad0: 220d movs r2, #13 10ad2: e7c9 b.n 10a68 len = 4; 10ad4: 2304 movs r3, #4 val = 15; 10ad6: 220f movs r2, #15 10ad8: e7c6 b.n 10a68 len = 4; 10ada: 2304 movs r3, #4 10adc: e7c4 b.n 10a68 10ade: 9e11 ldr r6, [sp, #68] ; 0x44 10ae0: f8dd b04c ldr.w fp, [sp, #76] ; 0x4c 10ae4: 9b1a ldr r3, [sp, #104] ; 0x68 10ae6: 9a12 ldr r2, [sp, #72] ; 0x48 10ae8: 4413 add r3, r2 10aea: 9a0e ldr r2, [sp, #56] ; 0x38 10aec: 441a add r2, r3 10aee: 920e str r2, [sp, #56] ; 0x38 10af0: 9b10 ldr r3, [sp, #64] ; 0x40 10af2: 3301 adds r3, #1 10af4: b21b sxth r3, r3 10af6: 9310 str r3, [sp, #64] ; 0x40 for(y = 1; y < h; y++) { 10af8: 9a15 ldr r2, [sp, #84] ; 0x54 10afa: 429a cmp r2, r3 10afc: d015 beq.n 10b2a for(i = 0; i < w; i++) { 10afe: 9b18 ldr r3, [sp, #96] ; 0x60 10b00: 2b00 cmp r3, #0 10b02: d0f5 beq.n 10af0 10b04: 9b17 ldr r3, [sp, #92] ; 0x5c 10b06: 1e5f subs r7, r3, #1 10b08: 463c mov r4, r7 uint8_t ret = 0; 10b0a: f04f 0e00 mov.w lr, #0 switch(len) { 10b0e: 9b19 ldr r3, [sp, #100] ; 0x64 10b10: 1e5d subs r5, r3, #1 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 10b12: 9b1b ldr r3, [sp, #108] ; 0x6c 10b14: 9311 str r3, [sp, #68] ; 0x44 bit_mask = 0xFF; 10b16: f04f 0cff mov.w ip, #255 ; 0xff 10b1a: f8cd 904c str.w r9, [sp, #76] ; 0x4c 10b1e: 4659 mov r1, fp 10b20: 9714 str r7, [sp, #80] ; 0x50 10b22: 9f07 ldr r7, [sp, #28] 10b24: 9507 str r5, [sp, #28] 10b26: 981c ldr r0, [sp, #112] ; 0x70 10b28: e628 b.n 1077c 10b2a: 46b4 mov ip, r6 10b2c: 9b08 ldr r3, [sp, #32] 10b2e: b9c3 cbnz r3, 10b62 10b30: 9b06 ldr r3, [sp, #24] 10b32: b113 cbz r3, 10b3a 10b34: 4b13 ldr r3, [pc, #76] ; (10b84 ) 10b36: f8c3 c00c str.w ip, [r3, #12] 10b3a: 9b0c ldr r3, [sp, #48] ; 0x30 10b3c: b113 cbz r3, 10b44 10b3e: 4b11 ldr r3, [pc, #68] ; (10b84 ) 10b40: f883 b009 strb.w fp, [r3, #9] 10b44: 9b0a ldr r3, [sp, #40] ; 0x28 10b46: b11b cbz r3, 10b50 10b48: 4b0e ldr r3, [pc, #56] ; (10b84 ) 10b4a: f89d 201c ldrb.w r2, [sp, #28] 10b4e: 745a strb r2, [r3, #17] _lv_mem_buf_release(line_buf1); 10b50: 9816 ldr r0, [sp, #88] ; 0x58 10b52: 4c0d ldr r4, [pc, #52] ; (10b88 ) 10b54: 47a0 blx r4 _lv_mem_buf_release(line_buf2); 10b56: 9817 ldr r0, [sp, #92] ; 0x5c 10b58: 47a0 blx r4 return decompr_buf; 10b5a: 4b0a ldr r3, [pc, #40] ; (10b84 ) 10b5c: 6818 ldr r0, [r3, #0] 10b5e: f7ff bb2c b.w 101ba 10b62: 4b08 ldr r3, [pc, #32] ; (10b84 ) 10b64: f89d 200c ldrb.w r2, [sp, #12] 10b68: 741a strb r2, [r3, #16] 10b6a: e7e1 b.n 10b30 if(!gid) return NULL; 10b6c: 2000 movs r0, #0 10b6e: f7ff bb24 b.w 101ba return NULL; 10b72: 2000 movs r0, #0 10b74: f7ff bb21 b.w 101ba if(gsize == 0) return NULL; 10b78: 2000 movs r0, #0 10b7a: f7ff bb1e b.w 101ba if(decompr_buf == NULL) return NULL; 10b7e: 2000 movs r0, #0 10b80: f7ff bb1b b.w 101ba 10b84: 20002b5c .word 0x20002b5c 10b88: 00012559 .word 0x00012559 00010b8c : { 10b8c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 10b90: b084 sub sp, #16 10b92: 4607 mov r7, r0 10b94: 460c mov r4, r1 10b96: 4699 mov r9, r3 if(unicode_letter == '\t') { 10b98: 2a09 cmp r2, #9 is_tab = true; 10b9a: bf06 itte eq 10b9c: 2501 moveq r5, #1 unicode_letter = ' '; 10b9e: 2220 moveq r2, #32 bool is_tab = false; 10ba0: 2500 movne r5, #0 lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; 10ba2: 6906 ldr r6, [r0, #16] uint32_t gid = get_glyph_dsc_id(font, unicode_letter); 10ba4: 4611 mov r1, r2 10ba6: 4b49 ldr r3, [pc, #292] ; (10ccc ) 10ba8: 4798 blx r3 if(!gid) return false; 10baa: 4680 mov r8, r0 10bac: 2800 cmp r0, #0 10bae: f000 8086 beq.w 10cbe if(fdsc->kern_dsc) { 10bb2: 68f3 ldr r3, [r6, #12] 10bb4: 2b00 cmp r3, #0 10bb6: d07c beq.n 10cb2 uint32_t gid_next = get_glyph_dsc_id(font, unicode_letter_next); 10bb8: 4649 mov r1, r9 10bba: 4638 mov r0, r7 10bbc: 4b43 ldr r3, [pc, #268] ; (10ccc ) 10bbe: 4798 blx r3 if(gid_next) { 10bc0: 4603 mov r3, r0 10bc2: bb18 cbnz r0, 10c0c int8_t kvalue = 0; 10bc4: 2300 movs r3, #0 const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[gid]; 10bc6: 6870 ldr r0, [r6, #4] 10bc8: eb00 00c8 add.w r0, r0, r8, lsl #3 int32_t kv = ((int32_t)((int32_t)kvalue * fdsc->kern_scale) >> 4); 10bcc: 8a32 ldrh r2, [r6, #16] 10bce: fb03 f302 mul.w r3, r3, r2 10bd2: 111b asrs r3, r3, #4 uint32_t adv_w = gdsc->adv_w; 10bd4: 8842 ldrh r2, [r0, #2] 10bd6: f3c2 120b ubfx r2, r2, #4, #12 if(is_tab) adv_w *= 2; 10bda: b105 cbz r5, 10bde 10bdc: 0052 lsls r2, r2, #1 adv_w = (adv_w + (1 << 3)) >> 4; 10bde: 3308 adds r3, #8 10be0: 4413 add r3, r2 10be2: 091b lsrs r3, r3, #4 dsc_out->adv_w = adv_w; 10be4: 8023 strh r3, [r4, #0] dsc_out->box_h = gdsc->box_h; 10be6: 7943 ldrb r3, [r0, #5] 10be8: 80a3 strh r3, [r4, #4] dsc_out->box_w = gdsc->box_w; 10bea: 7902 ldrb r2, [r0, #4] 10bec: 8062 strh r2, [r4, #2] dsc_out->ofs_x = gdsc->ofs_x; 10bee: f990 3006 ldrsb.w r3, [r0, #6] 10bf2: 80e3 strh r3, [r4, #6] dsc_out->ofs_y = gdsc->ofs_y; 10bf4: f990 3007 ldrsb.w r3, [r0, #7] 10bf8: 8123 strh r3, [r4, #8] dsc_out->bpp = (uint8_t)fdsc->bpp; 10bfa: 7cf3 ldrb r3, [r6, #19] 10bfc: f3c3 0383 ubfx r3, r3, #2, #4 10c00: 72a3 strb r3, [r4, #10] if(is_tab) dsc_out->box_w = dsc_out->box_w * 2; 10c02: 2d00 cmp r5, #0 10c04: d060 beq.n 10cc8 10c06: 0052 lsls r2, r2, #1 10c08: 8062 strh r2, [r4, #2] 10c0a: e059 b.n 10cc0 lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; 10c0c: 693a ldr r2, [r7, #16] if(fdsc->kern_classes == 0) { 10c0e: 7cd1 ldrb r1, [r2, #19] 10c10: f011 0f40 tst.w r1, #64 ; 0x40 10c14: d13c bne.n 10c90 const lv_font_fmt_txt_kern_pair_t * kdsc = fdsc->kern_dsc; 10c16: 68d7 ldr r7, [r2, #12] if(kdsc->glyph_ids_size == 0) { 10c18: 7afa ldrb r2, [r7, #11] 10c1a: f012 0203 ands.w r2, r2, #3 10c1e: d003 beq.n 10c28 else if(kdsc->glyph_ids_size == 1) { 10c20: 2a01 cmp r2, #1 10c22: d01b beq.n 10c5c int8_t value = 0; 10c24: 2300 movs r3, #0 10c26: e7ce b.n 10bc6 const uint8_t * g_ids = kdsc->glyph_ids; 10c28: f8d7 9000 ldr.w r9, [r7] uint16_t g_id_both = (gid_right << 8) + gid_left; /*Create one number from the ids*/ 10c2c: eb08 2300 add.w r3, r8, r0, lsl #8 10c30: a804 add r0, sp, #16 10c32: 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); 10c36: 68ba ldr r2, [r7, #8] 10c38: 4b25 ldr r3, [pc, #148] ; (10cd0 ) 10c3a: 9300 str r3, [sp, #0] 10c3c: 2302 movs r3, #2 10c3e: f022 427f bic.w r2, r2, #4278190080 ; 0xff000000 10c42: 4649 mov r1, r9 10c44: f8df a090 ldr.w sl, [pc, #144] ; 10cd8 10c48: 47d0 blx sl if(kid_p) { 10c4a: b128 cbz r0, 10c58 lv_uintptr_t ofs = (lv_uintptr_t)(kid_p - g_ids); 10c4c: eba0 0309 sub.w r3, r0, r9 ofs = ofs >> 1; /*ofs is for pair, divide by 2 to refer as a single value*/ 10c50: 085b lsrs r3, r3, #1 value = kdsc->values[ofs]; 10c52: 687a ldr r2, [r7, #4] 10c54: 56d3 ldrsb r3, [r2, r3] 10c56: e7b6 b.n 10bc6 int8_t value = 0; 10c58: 2300 movs r3, #0 10c5a: e7b4 b.n 10bc6 const uint16_t * g_ids = kdsc->glyph_ids; 10c5c: 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*/ 10c60: eb08 2300 add.w r3, r8, r0, lsl #8 10c64: a804 add r0, sp, #16 10c66: 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); 10c6a: 68ba ldr r2, [r7, #8] 10c6c: 4b19 ldr r3, [pc, #100] ; (10cd4 ) 10c6e: 9300 str r3, [sp, #0] 10c70: 2304 movs r3, #4 10c72: f022 427f bic.w r2, r2, #4278190080 ; 0xff000000 10c76: 4649 mov r1, r9 10c78: f8df a05c ldr.w sl, [pc, #92] ; 10cd8 10c7c: 47d0 blx sl if(kid_p) { 10c7e: b128 cbz r0, 10c8c lv_uintptr_t ofs = (lv_uintptr_t)(kid_p - (const uint8_t *)g_ids); 10c80: eba0 0309 sub.w r3, r0, r9 ofs = ofs >> 4; /*ofs is 4 byte pairs, divide by 4 to refer as a single value*/ 10c84: 091b lsrs r3, r3, #4 value = kdsc->values[ofs]; 10c86: 687a ldr r2, [r7, #4] 10c88: 56d3 ldrsb r3, [r2, r3] 10c8a: e79c b.n 10bc6 int8_t value = 0; 10c8c: 2300 movs r3, #0 10c8e: e79a b.n 10bc6 const lv_font_fmt_txt_kern_classes_t * kdsc = fdsc->kern_dsc; 10c90: 68d1 ldr r1, [r2, #12] uint8_t left_class = kdsc->left_class_mapping[gid_left]; 10c92: 684a ldr r2, [r1, #4] 10c94: f812 2008 ldrb.w r2, [r2, r8] if(left_class > 0 && right_class > 0) { 10c98: b16a cbz r2, 10cb6 uint8_t right_class = kdsc->right_class_mapping[gid_right]; 10c9a: 6888 ldr r0, [r1, #8] 10c9c: 5cc3 ldrb r3, [r0, r3] if(left_class > 0 && right_class > 0) { 10c9e: b163 cbz r3, 10cba value = kdsc->class_pair_values[(left_class - 1) * kdsc->right_class_cnt + (right_class - 1)]; 10ca0: 3a01 subs r2, #1 10ca2: 7b48 ldrb r0, [r1, #13] 10ca4: 6809 ldr r1, [r1, #0] 10ca6: 440b add r3, r1 10ca8: fb00 3202 mla r2, r0, r2, r3 10cac: f912 3c01 ldrsb.w r3, [r2, #-1] 10cb0: e789 b.n 10bc6 int8_t kvalue = 0; 10cb2: 2300 movs r3, #0 10cb4: e787 b.n 10bc6 int8_t value = 0; 10cb6: 2300 movs r3, #0 10cb8: e785 b.n 10bc6 10cba: 2300 movs r3, #0 10cbc: e783 b.n 10bc6 if(!gid) return false; 10cbe: 2500 movs r5, #0 } 10cc0: 4628 mov r0, r5 10cc2: b004 add sp, #16 10cc4: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} return true; 10cc8: 2501 movs r5, #1 10cca: e7f9 b.n 10cc0 10ccc: 00010095 .word 0x00010095 10cd0: 00010069 .word 0x00010069 10cd4: 0001007b .word 0x0001007b 10cd8: 0001416d .word 0x0001416d 00010cdc <_lv_font_clean_up_fmt_txt>: { 10cdc: b508 push {r3, lr} if(decompr_buf) { 10cde: 4b04 ldr r3, [pc, #16] ; (10cf0 <_lv_font_clean_up_fmt_txt+0x14>) 10ce0: 6818 ldr r0, [r3, #0] 10ce2: b120 cbz r0, 10cee <_lv_font_clean_up_fmt_txt+0x12> lv_mem_free(decompr_buf); 10ce4: 4b03 ldr r3, [pc, #12] ; (10cf4 <_lv_font_clean_up_fmt_txt+0x18>) 10ce6: 4798 blx r3 decompr_buf = NULL; 10ce8: 2200 movs r2, #0 10cea: 4b01 ldr r3, [pc, #4] ; (10cf0 <_lv_font_clean_up_fmt_txt+0x14>) 10cec: 601a str r2, [r3, #0] 10cee: bd08 pop {r3, pc} 10cf0: 20002b5c .word 0x20002b5c 10cf4: 000124ad .word 0x000124ad 00010cf8 : * 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) { 10cf8: b510 push {r4, lr} 10cfa: 4604 mov r4, r0 _lv_memset_00(driver, sizeof(lv_disp_drv_t)); 10cfc: 212c movs r1, #44 ; 0x2c 10cfe: 4b15 ldr r3, [pc, #84] ; (10d54 ) 10d00: 4798 blx r3 driver->flush_cb = NULL; 10d02: 2300 movs r3, #0 10d04: 60e3 str r3, [r4, #12] driver->hor_res = LV_HOR_RES_MAX; 10d06: f44f 72f0 mov.w r2, #480 ; 0x1e0 10d0a: 8022 strh r2, [r4, #0] driver->ver_res = LV_VER_RES_MAX; 10d0c: f44f 7288 mov.w r2, #272 ; 0x110 10d10: 8062 strh r2, [r4, #2] driver->buffer = NULL; 10d12: 6063 str r3, [r4, #4] driver->rotated = 0; 10d14: 7a22 ldrb r2, [r4, #8] 10d16: f363 0241 bfi r2, r3, #1, #1 10d1a: 7222 strb r2, [r4, #8] driver->color_chroma_key = LV_COLOR_TRANSP; 10d1c: f894 2028 ldrb.w r2, [r4, #40] ; 0x28 10d20: f363 0204 bfi r2, r3, #0, #5 10d24: f884 2028 strb.w r2, [r4, #40] ; 0x28 10d28: 8d22 ldrh r2, [r4, #40] ; 0x28 10d2a: f442 62fc orr.w r2, r2, #2016 ; 0x7e0 10d2e: 8522 strh r2, [r4, #40] ; 0x28 10d30: 0a12 lsrs r2, r2, #8 10d32: f363 02c7 bfi r2, r3, #3, #5 10d36: f884 2029 strb.w r2, [r4, #41] ; 0x29 driver->dpi = LV_DPI; 10d3a: 8922 ldrh r2, [r4, #8] 10d3c: 2182 movs r1, #130 ; 0x82 10d3e: f361 028b bfi r2, r1, #2, #10 10d42: 8122 strh r2, [r4, #8] #if LV_ANTIALIAS driver->antialiasing = true; 10d44: f042 0201 orr.w r2, r2, #1 10d48: 7222 strb r2, [r4, #8] #if LV_COLOR_SCREEN_TRANSP driver->screen_transp = 1; #endif #if LV_USE_GPU driver->gpu_blend_cb = NULL; 10d4a: 6223 str r3, [r4, #32] driver->gpu_fill_cb = NULL; 10d4c: 6263 str r3, [r4, #36] ; 0x24 #if LV_USE_USER_DATA driver->user_data = NULL; #endif driver->set_px_cb = NULL; 10d4e: 6163 str r3, [r4, #20] 10d50: bd10 pop {r4, pc} 10d52: bf00 nop 10d54: 00012b1f .word 0x00012b1f 00010d58 : * 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) { 10d58: b5f8 push {r3, r4, r5, r6, r7, lr} 10d5a: 4604 mov r4, r0 10d5c: 460d mov r5, r1 10d5e: 4617 mov r7, r2 10d60: 461e mov r6, r3 _lv_memset_00(disp_buf, sizeof(lv_disp_buf_t)); 10d62: 2124 movs r1, #36 ; 0x24 10d64: 4b03 ldr r3, [pc, #12] ; (10d74 ) 10d66: 4798 blx r3 disp_buf->buf1 = buf1; 10d68: 6025 str r5, [r4, #0] disp_buf->buf2 = buf2; 10d6a: 6067 str r7, [r4, #4] disp_buf->buf_act = disp_buf->buf1; 10d6c: 60a5 str r5, [r4, #8] disp_buf->size = size_in_px_cnt; 10d6e: 60e6 str r6, [r4, #12] 10d70: bdf8 pop {r3, r4, r5, r6, r7, pc} 10d72: bf00 nop 10d74: 00012b1f .word 0x00012b1f 00010d78 : * 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) { 10d78: b5f0 push {r4, r5, r6, r7, lr} 10d7a: b083 sub sp, #12 10d7c: 4605 mov r5, r0 lv_disp_t * disp = _lv_ll_ins_head(&LV_GC_ROOT(_lv_disp_ll)); 10d7e: 483f ldr r0, [pc, #252] ; (10e7c ) 10d80: 4b3f ldr r3, [pc, #252] ; (10e80 ) 10d82: 4798 blx r3 if(!disp) { 10d84: 4604 mov r4, r0 10d86: 2800 cmp r0, #0 10d88: d054 beq.n 10e34 LV_ASSERT_MEM(disp); return NULL; } _lv_memset_00(disp, sizeof(lv_disp_t)); 10d8a: f44f 71b8 mov.w r1, #368 ; 0x170 10d8e: 4b3d ldr r3, [pc, #244] ; (10e84 ) 10d90: 4798 blx r3 _lv_memcpy(&disp->driver, driver, sizeof(lv_disp_drv_t)); 10d92: 222c movs r2, #44 ; 0x2c 10d94: 4629 mov r1, r5 10d96: 4620 mov r0, r4 10d98: 4b3b ldr r3, [pc, #236] ; (10e88 ) 10d9a: 4798 blx r3 _lv_ll_init(&disp->scr_ll, sizeof(lv_obj_t)); 10d9c: 214c movs r1, #76 ; 0x4c 10d9e: f104 0030 add.w r0, r4, #48 ; 0x30 10da2: 4b3a ldr r3, [pc, #232] ; (10e8c ) 10da4: 4798 blx r3 disp->last_activity_time = 0; 10da6: 2300 movs r3, #0 10da8: f8c4 316c str.w r3, [r4, #364] ; 0x16c if(disp_def == NULL) disp_def = disp; 10dac: 4b38 ldr r3, [pc, #224] ; (10e90 ) 10dae: 681b ldr r3, [r3, #0] 10db0: 2b00 cmp r3, #0 10db2: d050 beq.n 10e56 lv_disp_t * disp_def_tmp = disp_def; 10db4: 4b36 ldr r3, [pc, #216] ; (10e90 ) 10db6: 681f ldr r7, [r3, #0] disp_def = disp; /*Temporarily change the default screen to create the default screens on the 10db8: 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); 10dba: 4623 mov r3, r4 10dbc: 2203 movs r2, #3 10dbe: 211e movs r1, #30 10dc0: 4834 ldr r0, [pc, #208] ; (10e94 ) 10dc2: 4d35 ldr r5, [pc, #212] ; (10e98 ) 10dc4: 47a8 blx r5 10dc6: 62e0 str r0, [r4, #44] ; 0x2c LV_ASSERT_MEM(disp->refr_task); 10dc8: 4b34 ldr r3, [pc, #208] ; (10e9c ) 10dca: 4798 blx r3 10dcc: 2800 cmp r0, #0 10dce: d045 beq.n 10e5c if(disp->refr_task == NULL) return NULL; 10dd0: 6ae3 ldr r3, [r4, #44] ; 0x2c 10dd2: 2b00 cmp r3, #0 10dd4: d04f beq.n 10e76 disp->inv_p = 0; 10dd6: f8b4 3168 ldrh.w r3, [r4, #360] ; 0x168 10dda: f36f 0309 bfc r3, #0, #10 10dde: f8a4 3168 strh.w r3, [r4, #360] ; 0x168 disp->last_activity_time = 0; 10de2: 2500 movs r5, #0 10de4: f8c4 516c str.w r5, [r4, #364] ; 0x16c disp->act_scr = lv_obj_create(NULL, NULL); /*Create a default screen on the display*/ 10de8: 4629 mov r1, r5 10dea: 4628 mov r0, r5 10dec: 4e2c ldr r6, [pc, #176] ; (10ea0 ) 10dee: 47b0 blx r6 10df0: 63e0 str r0, [r4, #60] ; 0x3c disp->top_layer = lv_obj_create(NULL, NULL); /*Create top layer on the display*/ 10df2: 4629 mov r1, r5 10df4: 4628 mov r0, r5 10df6: 47b0 blx r6 10df8: 6420 str r0, [r4, #64] ; 0x40 disp->sys_layer = lv_obj_create(NULL, NULL); /*Create sys layer on the display*/ 10dfa: 4629 mov r1, r5 10dfc: 4628 mov r0, r5 10dfe: 47b0 blx r6 10e00: 6460 str r0, [r4, #68] ; 0x44 lv_obj_reset_style_list(disp->top_layer, LV_OBJ_PART_MAIN); 10e02: 4629 mov r1, r5 10e04: 6c20 ldr r0, [r4, #64] ; 0x40 10e06: 4e27 ldr r6, [pc, #156] ; (10ea4 ) 10e08: 47b0 blx r6 lv_obj_reset_style_list(disp->sys_layer, LV_OBJ_PART_MAIN); 10e0a: 4629 mov r1, r5 10e0c: 6c60 ldr r0, [r4, #68] ; 0x44 10e0e: 47b0 blx r6 lv_obj_set_click(disp->top_layer, false); 10e10: 4629 mov r1, r5 10e12: 6c20 ldr r0, [r4, #64] ; 0x40 10e14: 4e24 ldr r6, [pc, #144] ; (10ea8 ) 10e16: 47b0 blx r6 lv_obj_set_click(disp->sys_layer, false); 10e18: 4629 mov r1, r5 10e1a: 6c60 ldr r0, [r4, #68] ; 0x44 10e1c: 47b0 blx r6 lv_obj_invalidate(disp->act_scr); 10e1e: 6be0 ldr r0, [r4, #60] ; 0x3c 10e20: 4b22 ldr r3, [pc, #136] ; (10eac ) 10e22: 4798 blx r3 disp_def = disp_def_tmp; /*Revert the default display*/ 10e24: 4b1a ldr r3, [pc, #104] ; (10e90 ) 10e26: 601f str r7, [r3, #0] lv_task_ready(disp->refr_task); /*Be sure the screen will be refreshed immediately on start up*/ 10e28: 6ae0 ldr r0, [r4, #44] ; 0x2c 10e2a: 4b21 ldr r3, [pc, #132] ; (10eb0 ) 10e2c: 4798 blx r3 return disp; } 10e2e: 4620 mov r0, r4 10e30: b003 add sp, #12 10e32: bdf0 pop {r4, r5, r6, r7, pc} LV_ASSERT_MEM(disp); 10e34: 4b19 ldr r3, [pc, #100] ; (10e9c ) 10e36: 4798 blx r3 10e38: 2800 cmp r0, #0 10e3a: d1f8 bne.n 10e2e 10e3c: 4b1d ldr r3, [pc, #116] ; (10eb4 ) 10e3e: 9300 str r3, [sp, #0] 10e40: 227c movs r2, #124 ; 0x7c 10e42: 491d ldr r1, [pc, #116] ; (10eb8 ) 10e44: 2003 movs r0, #3 10e46: 4c1d ldr r4, [pc, #116] ; (10ebc ) 10e48: 47a0 blx r4 10e4a: 2200 movs r2, #0 10e4c: 2300 movs r3, #0 10e4e: 481c ldr r0, [pc, #112] ; (10ec0 ) 10e50: 491c ldr r1, [pc, #112] ; (10ec4 ) 10e52: 4788 blx r1 10e54: e7fe b.n 10e54 if(disp_def == NULL) disp_def = disp; 10e56: 4b0e ldr r3, [pc, #56] ; (10e90 ) 10e58: 601c str r4, [r3, #0] 10e5a: e7ab b.n 10db4 LV_ASSERT_MEM(disp->refr_task); 10e5c: 4b15 ldr r3, [pc, #84] ; (10eb4 ) 10e5e: 9300 str r3, [sp, #0] 10e60: 228d movs r2, #141 ; 0x8d 10e62: 4915 ldr r1, [pc, #84] ; (10eb8 ) 10e64: 2003 movs r0, #3 10e66: 4d15 ldr r5, [pc, #84] ; (10ebc ) 10e68: 47a8 blx r5 10e6a: 6ae2 ldr r2, [r4, #44] ; 0x2c 10e6c: 2300 movs r3, #0 10e6e: 4814 ldr r0, [pc, #80] ; (10ec0 ) 10e70: 4914 ldr r1, [pc, #80] ; (10ec4 ) 10e72: 4788 blx r1 10e74: e7fe b.n 10e74 if(disp->refr_task == NULL) return NULL; 10e76: 2400 movs r4, #0 10e78: e7d9 b.n 10e2e 10e7a: bf00 nop 10e7c: 20006c98 .word 0x20006c98 10e80: 00011ef9 .word 0x00011ef9 10e84: 00012b1f .word 0x00012b1f 10e88: 0001263d .word 0x0001263d 10e8c: 00011ee1 .word 0x00011ee1 10e90: 20002b70 .word 0x20002b70 10e94: 00005f5d .word 0x00005f5d 10e98: 000139cd .word 0x000139cd 10e9c: 00002299 .word 0x00002299 10ea0: 00003e0d .word 0x00003e0d 10ea4: 00003b85 .word 0x00003b85 10ea8: 00002989 .word 0x00002989 10eac: 00003309 .word 0x00003309 10eb0: 00013a3d .word 0x00013a3d 10eb4: 000291a4 .word 0x000291a4 10eb8: 000291bc .word 0x000291bc 10ebc: 00012245 .word 0x00012245 10ec0: 00023fc0 .word 0x00023fc0 10ec4: 000022a1 .word 0x000022a1 00010ec8 : * @return pointer to the default display */ lv_disp_t * lv_disp_get_default(void) { return disp_def; } 10ec8: 4b01 ldr r3, [pc, #4] ; (10ed0 ) 10eca: 6818 ldr r0, [r3, #0] 10ecc: 4770 bx lr 10ece: bf00 nop 10ed0: 20002b70 .word 0x20002b70 00010ed4 : * @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(); 10ed4: 4603 mov r3, r0 10ed6: b140 cbz r0, 10eea if(disp == NULL) return LV_HOR_RES_MAX; else return disp->driver.rotated == 0 ? disp->driver.hor_res : disp->driver.ver_res; 10ed8: 7a1a ldrb r2, [r3, #8] 10eda: f012 0f02 tst.w r2, #2 10ede: bf0c ite eq 10ee0: f9b3 0000 ldrsheq.w r0, [r3] 10ee4: f9b3 0002 ldrshne.w r0, [r3, #2] 10ee8: 4770 bx lr return disp_def; 10eea: 4b03 ldr r3, [pc, #12] ; (10ef8 ) 10eec: 681b ldr r3, [r3, #0] if(disp == NULL) 10eee: 2b00 cmp r3, #0 10ef0: d1f2 bne.n 10ed8 return LV_HOR_RES_MAX; 10ef2: f44f 70f0 mov.w r0, #480 ; 0x1e0 } 10ef6: 4770 bx lr 10ef8: 20002b70 .word 0x20002b70 00010efc : * @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(); 10efc: 4603 mov r3, r0 10efe: b140 cbz r0, 10f12 if(disp == NULL) return LV_VER_RES_MAX; else return disp->driver.rotated == 0 ? disp->driver.ver_res : disp->driver.hor_res; 10f00: 7a1a ldrb r2, [r3, #8] 10f02: f012 0f02 tst.w r2, #2 10f06: bf0c ite eq 10f08: f9b3 0002 ldrsheq.w r0, [r3, #2] 10f0c: f9b3 0000 ldrshne.w r0, [r3] 10f10: 4770 bx lr return disp_def; 10f12: 4b03 ldr r3, [pc, #12] ; (10f20 ) 10f14: 681b ldr r3, [r3, #0] if(disp == NULL) 10f16: 2b00 cmp r3, #0 10f18: d1f2 bne.n 10f00 return LV_VER_RES_MAX; 10f1a: f44f 7088 mov.w r0, #272 ; 0x110 } 10f1e: 4770 bx lr 10f20: 20002b70 .word 0x20002b70 00010f24 : * @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(); 10f24: 4603 mov r3, r0 10f26: b118 cbz r0, 10f30 if(disp == NULL) return LV_DPI; /*Do not return 0 because it might be a divider*/ return disp->driver.dpi; 10f28: 8918 ldrh r0, [r3, #8] 10f2a: f3c0 0089 ubfx r0, r0, #2, #10 10f2e: 4770 bx lr return disp_def; 10f30: 4b02 ldr r3, [pc, #8] ; (10f3c ) 10f32: 681b ldr r3, [r3, #0] if(disp == NULL) return LV_DPI; /*Do not return 0 because it might be a divider*/ 10f34: 2b00 cmp r3, #0 10f36: d1f7 bne.n 10f28 10f38: 2082 movs r0, #130 ; 0x82 } 10f3a: 4770 bx lr 10f3c: 20002b70 .word 0x20002b70 00010f40 : * 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) { 10f40: b538 push {r3, r4, r5, lr} if(disp == NULL) disp = lv_disp_get_default(); 10f42: 4605 mov r5, r0 10f44: b1a0 cbz r0, 10f70 uint32_t w; if(disp == NULL) w = LV_HOR_RES_MAX; else w = lv_disp_get_hor_res(disp); 10f46: 4628 mov r0, r5 10f48: 4b0f ldr r3, [pc, #60] ; (10f88 ) 10f4a: 4798 blx r3 10f4c: 4604 mov r4, r0 uint32_t dpi = lv_disp_get_dpi(disp); 10f4e: 4628 mov r0, r5 10f50: 4b0e ldr r3, [pc, #56] ; (10f8c ) 10f52: 4798 blx r3 w = w * 10 / dpi; 10f54: eb04 0484 add.w r4, r4, r4, lsl #2 10f58: 0064 lsls r4, r4, #1 10f5a: fbb4 f0f0 udiv r0, r4, r0 if(w < LV_DISP_SMALL_LIMIT) return LV_DISP_SIZE_SMALL; 10f5e: 281d cmp r0, #29 10f60: d90d bls.n 10f7e if(w < LV_DISP_MEDIUM_LIMIT) return LV_DISP_SIZE_MEDIUM; 10f62: 2831 cmp r0, #49 ; 0x31 10f64: d90d bls.n 10f82 if(w < LV_DISP_LARGE_LIMIT) return LV_DISP_SIZE_LARGE; else return LV_DISP_SIZE_EXTRA_LARGE; 10f66: 2846 cmp r0, #70 ; 0x46 10f68: bf34 ite cc 10f6a: 2002 movcc r0, #2 10f6c: 2003 movcs r0, #3 10f6e: bd38 pop {r3, r4, r5, pc} return disp_def; 10f70: 4b07 ldr r3, [pc, #28] ; (10f90 ) 10f72: 681d ldr r5, [r3, #0] 10f74: f44f 74f0 mov.w r4, #480 ; 0x1e0 if(disp == NULL) w = LV_HOR_RES_MAX; 10f78: 2d00 cmp r5, #0 10f7a: d0e8 beq.n 10f4e 10f7c: e7e3 b.n 10f46 if(w < LV_DISP_SMALL_LIMIT) return LV_DISP_SIZE_SMALL; 10f7e: 2000 movs r0, #0 10f80: bd38 pop {r3, r4, r5, pc} if(w < LV_DISP_MEDIUM_LIMIT) return LV_DISP_SIZE_MEDIUM; 10f82: 2001 movs r0, #1 } 10f84: bd38 pop {r3, r4, r5, pc} 10f86: bf00 nop 10f88: 00010ed5 .word 0x00010ed5 10f8c: 00010f25 .word 0x00010f25 10f90: 20002b70 .word 0x20002b70 00010f94 : 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; 10f94: 6842 ldr r2, [r0, #4] 10f96: 2300 movs r3, #0 10f98: 6193 str r3, [r2, #24] disp_drv->buffer->flushing_last = 0; 10f9a: 6842 ldr r2, [r0, #4] 10f9c: 61d3 str r3, [r2, #28] 10f9e: 4770 bx lr 00010fa0 : * 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) { 10fa0: b508 push {r3, lr} if(disp == NULL) 10fa2: b120 cbz r0, 10fae 10fa4: 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); 10fa6: 4804 ldr r0, [pc, #16] ; (10fb8 ) 10fa8: 4b04 ldr r3, [pc, #16] ; (10fbc ) 10faa: 4798 blx r3 } 10fac: bd08 pop {r3, pc} return _lv_ll_get_head(&LV_GC_ROOT(_lv_disp_ll)); 10fae: 4802 ldr r0, [pc, #8] ; (10fb8 ) 10fb0: 4b03 ldr r3, [pc, #12] ; (10fc0 ) 10fb2: 4798 blx r3 10fb4: bd08 pop {r3, pc} 10fb6: bf00 nop 10fb8: 20006c98 .word 0x20006c98 10fbc: 00011fa5 .word 0x00011fa5 10fc0: 00011f91 .word 0x00011f91 00010fc4 : * @return pointer to the internal buffers */ lv_disp_buf_t * lv_disp_get_buf(lv_disp_t * disp) { return disp->driver.buffer; } 10fc4: 6840 ldr r0, [r0, #4] 10fc6: 4770 bx lr 00010fc8 : * @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) 10fc8: 6843 ldr r3, [r0, #4] 10fca: 681a ldr r2, [r3, #0] 10fcc: b122 cbz r2, 10fd8 10fce: 6858 ldr r0, [r3, #4] 10fd0: 3000 adds r0, #0 10fd2: bf18 it ne 10fd4: 2001 movne r0, #1 10fd6: 4770 bx lr return true; else return false; 10fd8: 2000 movs r0, #0 } 10fda: 4770 bx lr 00010fdc : * `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) { 10fdc: b510 push {r4, lr} 10fde: 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) { 10fe0: 4b08 ldr r3, [pc, #32] ; (11004 ) 10fe2: 4798 blx r3 10fe4: 4603 mov r3, r0 10fe6: b158 cbz r0, 11000 uint32_t scr_size = disp->driver.hor_res * disp->driver.ver_res; 10fe8: f9b4 2000 ldrsh.w r2, [r4] 10fec: f9b4 3002 ldrsh.w r3, [r4, #2] 10ff0: fb03 f302 mul.w r3, r3, r2 if(lv_disp_is_double_buf(disp) && disp->driver.buffer->size == scr_size) { 10ff4: 6862 ldr r2, [r4, #4] 10ff6: 68d2 ldr r2, [r2, #12] 10ff8: 4293 cmp r3, r2 10ffa: bf14 ite ne 10ffc: 2300 movne r3, #0 10ffe: 2301 moveq r3, #1 return true; } else { return false; } } 11000: 4618 mov r0, r3 11002: bd10 pop {r4, pc} 11004: 00010fc9 .word 0x00010fc9 00011008 : * @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) { 11008: b508 push {r3, lr} if(indev == NULL) 1100a: b120 cbz r0, 11016 1100c: 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); 1100e: 4804 ldr r0, [pc, #16] ; (11020 ) 11010: 4b04 ldr r3, [pc, #16] ; (11024 ) 11012: 4798 blx r3 } 11014: bd08 pop {r3, pc} return _lv_ll_get_head(&LV_GC_ROOT(_lv_indev_ll)); 11016: 4802 ldr r0, [pc, #8] ; (11020 ) 11018: 4b03 ldr r3, [pc, #12] ; (11028 ) 1101a: 4798 blx r3 1101c: bd08 pop {r3, pc} 1101e: bf00 nop 11020: 20006c8c .word 0x20006c8c 11024: 00011fa5 .word 0x00011fa5 11028: 00011f91 .word 0x00011f91 0001102c : * 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; 1102c: 4b03 ldr r3, [pc, #12] ; (1103c ) 1102e: 2200 movs r2, #0 11030: 701a strb r2, [r3, #0] sys_time += tick_period; 11032: 685a ldr r2, [r3, #4] 11034: 4410 add r0, r2 11036: 6058 str r0, [r3, #4] 11038: 4770 bx lr 1103a: bf00 nop 1103c: 20002b74 .word 0x20002b74 00011040 : uint32_t lv_tick_get(void) { #if LV_TICK_CUSTOM == 0 uint32_t result; do { tick_irq_flag = 1; 11040: 4b04 ldr r3, [pc, #16] ; (11054 ) 11042: f04f 0101 mov.w r1, #1 11046: 7019 strb r1, [r3, #0] result = sys_time; } while(!tick_irq_flag); /*'lv_tick_inc()' clears this flag which can be in an interrupt. 11048: 781a ldrb r2, [r3, #0] 1104a: 2a00 cmp r2, #0 1104c: d0fb beq.n 11046 return result; #else return LV_TICK_CUSTOM_SYS_TIME_EXPR; #endif } 1104e: 4b01 ldr r3, [pc, #4] ; (11054 ) 11050: 6858 ldr r0, [r3, #4] 11052: 4770 bx lr 11054: 20002b74 .word 0x20002b74 00011058 : * 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) { 11058: b510 push {r4, lr} 1105a: 4604 mov r4, r0 uint32_t act_time = lv_tick_get(); 1105c: 4b01 ldr r3, [pc, #4] ; (11064 ) 1105e: 4798 blx r3 prev_tick = UINT32_MAX - prev_tick + 1; prev_tick += act_time; } return prev_tick; } 11060: 1b00 subs r0, r0, r4 11062: bd10 pop {r4, pc} 11064: 00011041 .word 0x00011041 00011068 : { LV_UNUSED(path); /*Calculate the current step*/ uint32_t step; if(a->time == a->act_time) { 11068: 6a0a ldr r2, [r1, #32] 1106a: 6a48 ldr r0, [r1, #36] ; 0x24 1106c: 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; 1106e: bf1a itte ne 11070: 0280 lslne r0, r0, #10 11072: fb90 f0f2 sdivne r0, r0, r2 11076: 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); 1107a: 698a ldr r2, [r1, #24] 1107c: 69cb ldr r3, [r1, #28] 1107e: 1a9b subs r3, r3, r2 11080: fb00 f003 mul.w r0, r0, r3 new_value = new_value >> LV_ANIM_RES_SHIFT; new_value += a->start; 11084: eb02 20a0 add.w r0, r2, r0, asr #10 return (lv_anim_value_t)new_value; } 11088: b200 sxth r0, r0 1108a: 4770 bx lr 0001108c : } return anim_list_changed; } static void anim_mark_list_change(void) { 1108c: b508 push {r3, lr} anim_list_changed = true; 1108e: 2201 movs r2, #1 11090: 4b08 ldr r3, [pc, #32] ; (110b4 ) 11092: 701a strb r2, [r3, #0] if(_lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)) == NULL) 11094: 4808 ldr r0, [pc, #32] ; (110b8 ) 11096: 4b09 ldr r3, [pc, #36] ; (110bc ) 11098: 4798 blx r3 1109a: b128 cbz r0, 110a8 lv_task_set_prio(_lv_anim_task, LV_TASK_PRIO_OFF); else lv_task_set_prio(_lv_anim_task, LV_ANIM_TASK_PRIO); 1109c: 2104 movs r1, #4 1109e: 4b05 ldr r3, [pc, #20] ; (110b4 ) 110a0: 6858 ldr r0, [r3, #4] 110a2: 4b07 ldr r3, [pc, #28] ; (110c0 ) 110a4: 4798 blx r3 110a6: bd08 pop {r3, pc} lv_task_set_prio(_lv_anim_task, LV_TASK_PRIO_OFF); 110a8: 2100 movs r1, #0 110aa: 4b02 ldr r3, [pc, #8] ; (110b4 ) 110ac: 6858 ldr r0, [r3, #4] 110ae: 4b04 ldr r3, [pc, #16] ; (110c0 ) 110b0: 4798 blx r3 110b2: bd08 pop {r3, pc} 110b4: 20002b7c .word 0x20002b7c 110b8: 20006d5c .word 0x20006d5c 110bc: 00011f91 .word 0x00011f91 110c0: 00013941 .word 0x00013941 000110c4 : { 110c4: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 110c8: b091 sub sp, #68 ; 0x44 _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { 110ca: 4863 ldr r0, [pc, #396] ; (11258 ) 110cc: 4b63 ldr r3, [pc, #396] ; (1125c ) 110ce: 4798 blx r3 110d0: b168 cbz r0, 110ee 110d2: 4601 mov r1, r0 110d4: 4d60 ldr r5, [pc, #384] ; (11258 ) 110d6: 4c62 ldr r4, [pc, #392] ; (11260 ) a->has_run = 0; 110d8: f891 303c ldrb.w r3, [r1, #60] ; 0x3c 110dc: f36f 0341 bfc r3, #1, #1 110e0: f881 303c strb.w r3, [r1, #60] ; 0x3c _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { 110e4: 4628 mov r0, r5 110e6: 47a0 blx r4 110e8: 4601 mov r1, r0 110ea: 2800 cmp r0, #0 110ec: d1f4 bne.n 110d8 uint32_t elaps = lv_tick_elaps(last_task_run); 110ee: 4b5d ldr r3, [pc, #372] ; (11264 ) 110f0: 6898 ldr r0, [r3, #8] 110f2: 4b5d ldr r3, [pc, #372] ; (11268 ) 110f4: 4798 blx r3 110f6: 4680 mov r8, r0 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); 110f8: 4857 ldr r0, [pc, #348] ; (11258 ) 110fa: 4b58 ldr r3, [pc, #352] ; (1125c ) 110fc: 4798 blx r3 while(a != NULL) { 110fe: 4604 mov r4, r0 11100: 2800 cmp r0, #0 11102: f000 8089 beq.w 11218 anim_list_changed = false; 11106: 4d57 ldr r5, [pc, #348] ; (11264 ) 11108: f04f 0700 mov.w r7, #0 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); 1110c: 4e52 ldr r6, [pc, #328] ; (11258 ) 1110e: f8df 914c ldr.w r9, [pc, #332] ; 1125c 11112: e01c b.n 1114e if(a->act_time <= 0 && new_act_time >= 0) { 11114: eb13 0308 adds.w r3, r3, r8 11118: f100 8085 bmi.w 11226 if(a->start_cb) a->start_cb(a); 1111c: 68a2 ldr r2, [r4, #8] 1111e: 2a00 cmp r2, #0 11120: f000 8088 beq.w 11234 11124: 4620 mov r0, r4 11126: 4790 blx r2 11128: e01e b.n 11168 else new_value = lv_anim_path_linear(&a->path, a); 1112a: 4621 mov r1, r4 1112c: f104 0010 add.w r0, r4, #16 11130: 4b4e ldr r3, [pc, #312] ; (1126c ) 11132: 4798 blx r3 11134: e028 b.n 11188 if(a->act_time >= a->time) { 11136: 6a62 ldr r2, [r4, #36] ; 0x24 11138: 6a23 ldr r3, [r4, #32] 1113a: 429a cmp r2, r3 1113c: da2b bge.n 11196 if(anim_list_changed) 1113e: 782b ldrb r3, [r5, #0] 11140: 2b00 cmp r3, #0 11142: d071 beq.n 11228 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); 11144: 4630 mov r0, r6 11146: 47c8 blx r9 11148: 4604 mov r4, r0 while(a != NULL) { 1114a: 2c00 cmp r4, #0 1114c: d064 beq.n 11218 anim_list_changed = false; 1114e: 702f strb r7, [r5, #0] if(!a->has_run) { 11150: f894 303c ldrb.w r3, [r4, #60] ; 0x3c 11154: f013 0f02 tst.w r3, #2 11158: d166 bne.n 11228 a->has_run = 1; /*The list readying might be reseted so need to know which anim has run already*/ 1115a: f043 0302 orr.w r3, r3, #2 1115e: f884 303c strb.w r3, [r4, #60] ; 0x3c int32_t new_act_time = a->act_time + elaps; 11162: 6a63 ldr r3, [r4, #36] ; 0x24 if(a->act_time <= 0 && new_act_time >= 0) { 11164: 2b00 cmp r3, #0 11166: ddd5 ble.n 11114 a->act_time += elaps; 11168: 6a63 ldr r3, [r4, #36] ; 0x24 1116a: 4443 add r3, r8 1116c: 6263 str r3, [r4, #36] ; 0x24 if(a->act_time >= 0) { 1116e: 2b00 cmp r3, #0 11170: dbe5 blt.n 1113e if(a->act_time > a->time) a->act_time = a->time; 11172: 6a22 ldr r2, [r4, #32] 11174: 429a cmp r2, r3 11176: bfb8 it lt 11178: 6262 strlt r2, [r4, #36] ; 0x24 if(a->path.cb) new_value = a->path.cb(&a->path, a); 1117a: 6923 ldr r3, [r4, #16] 1117c: 2b00 cmp r3, #0 1117e: d0d4 beq.n 1112a 11180: 4621 mov r1, r4 11182: f104 0010 add.w r0, r4, #16 11186: 4798 blx r3 if(a->exec_cb) a->exec_cb(a->var, new_value); 11188: 6863 ldr r3, [r4, #4] 1118a: 2b00 cmp r3, #0 1118c: d0d3 beq.n 11136 1118e: b201 sxth r1, r0 11190: 6820 ldr r0, [r4, #0] 11192: 4798 blx r3 11194: e7cf b.n 11136 if(a->playback_now == 0 && a->repeat_cnt > 0 && a->repeat_cnt != LV_ANIM_REPEAT_INFINITE) { 11196: f894 303c ldrb.w r3, [r4, #60] ; 0x3c 1119a: f013 0301 ands.w r3, r3, #1 1119e: d108 bne.n 111b2 111a0: 8ea2 ldrh r2, [r4, #52] ; 0x34 111a2: 2a00 cmp r2, #0 111a4: d048 beq.n 11238 111a6: f64f 71ff movw r1, #65535 ; 0xffff 111aa: 428a cmp r2, r1 111ac: d04b beq.n 11246 a->repeat_cnt--; 111ae: 3a01 subs r2, #1 111b0: 86a2 strh r2, [r4, #52] ; 0x34 if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) { 111b2: 8ea2 ldrh r2, [r4, #52] ; 0x34 111b4: b1ca cbz r2, 111ea a->act_time = -a->repeat_delay; /*Restart the animation*/ 111b6: 6b22 ldr r2, [r4, #48] ; 0x30 111b8: 4252 negs r2, r2 111ba: 6262 str r2, [r4, #36] ; 0x24 if(a->playback_time != 0) { 111bc: 6ae2 ldr r2, [r4, #44] ; 0x2c 111be: 2a00 cmp r2, #0 111c0: d0bd beq.n 1113e if(a->playback_now == 0) a->act_time = -a->playback_delay; 111c2: 2b00 cmp r3, #0 111c4: d03b beq.n 1123e a->playback_now = a->playback_now == 0 ? 1 : 0; 111c6: f083 0301 eor.w r3, r3, #1 111ca: f894 103c ldrb.w r1, [r4, #60] ; 0x3c 111ce: f363 0100 bfi r1, r3, #0, #1 111d2: f884 103c strb.w r1, [r4, #60] ; 0x3c tmp = a->start; 111d6: 69a3 ldr r3, [r4, #24] a->start = a->end; 111d8: 69e0 ldr r0, [r4, #28] 111da: 61a0 str r0, [r4, #24] a->end = tmp; 111dc: 61e3 str r3, [r4, #28] a->time = a->playback_now == 0 ? a->time_orig : a->playback_time; 111de: f011 0f01 tst.w r1, #1 111e2: bf08 it eq 111e4: 6ba2 ldreq r2, [r4, #56] ; 0x38 111e6: 6222 str r2, [r4, #32] 111e8: e7a9 b.n 1113e if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) { 111ea: 6ae2 ldr r2, [r4, #44] ; 0x2c 111ec: b102 cbz r2, 111f0 111ee: b333 cbz r3, 1123e _lv_memcpy(&a_tmp, a, sizeof(lv_anim_t)); 111f0: 2240 movs r2, #64 ; 0x40 111f2: 4621 mov r1, r4 111f4: 4668 mov r0, sp 111f6: 4b1e ldr r3, [pc, #120] ; (11270 ) 111f8: 4798 blx r3 _lv_ll_remove(&LV_GC_ROOT(_lv_anim_ll), a); 111fa: 4621 mov r1, r4 111fc: 4630 mov r0, r6 111fe: 4b1d ldr r3, [pc, #116] ; (11274 ) 11200: 4798 blx r3 lv_mem_free(a); 11202: 4620 mov r0, r4 11204: 4b1c ldr r3, [pc, #112] ; (11278 ) 11206: 4798 blx r3 anim_mark_list_change(); 11208: 4b1c ldr r3, [pc, #112] ; (1127c ) 1120a: 4798 blx r3 if(a_tmp.ready_cb != NULL) a_tmp.ready_cb(&a_tmp); 1120c: 9b03 ldr r3, [sp, #12] 1120e: 2b00 cmp r3, #0 11210: d095 beq.n 1113e 11212: 4668 mov r0, sp 11214: 4798 blx r3 11216: e792 b.n 1113e last_task_run = lv_tick_get(); 11218: 4b19 ldr r3, [pc, #100] ; (11280 ) 1121a: 4798 blx r3 1121c: 4b11 ldr r3, [pc, #68] ; (11264 ) 1121e: 6098 str r0, [r3, #8] } 11220: b011 add sp, #68 ; 0x44 11222: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} a->act_time += elaps; 11226: 6263 str r3, [r4, #36] ; 0x24 a = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); 11228: 4621 mov r1, r4 1122a: 4630 mov r0, r6 1122c: 4b0c ldr r3, [pc, #48] ; (11260 ) 1122e: 4798 blx r3 11230: 4604 mov r4, r0 11232: e78a b.n 1114a a->act_time += elaps; 11234: 6263 str r3, [r4, #36] ; 0x24 11236: e79c b.n 11172 if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) { 11238: 6ae2 ldr r2, [r4, #44] ; 0x2c 1123a: 2a00 cmp r2, #0 1123c: d0d8 beq.n 111f0 if(a->playback_now == 0) a->act_time = -a->playback_delay; 1123e: 6aa1 ldr r1, [r4, #40] ; 0x28 11240: 4249 negs r1, r1 11242: 6261 str r1, [r4, #36] ; 0x24 11244: e7bf b.n 111c6 a->act_time = -a->repeat_delay; /*Restart the animation*/ 11246: 6b22 ldr r2, [r4, #48] ; 0x30 11248: 4252 negs r2, r2 1124a: 6262 str r2, [r4, #36] ; 0x24 if(a->playback_time != 0) { 1124c: 6ae2 ldr r2, [r4, #44] ; 0x2c 1124e: 2a00 cmp r2, #0 11250: f43f af75 beq.w 1113e 11254: e7f3 b.n 1123e 11256: bf00 nop 11258: 20006d5c .word 0x20006d5c 1125c: 00011f91 .word 0x00011f91 11260: 00011fa5 .word 0x00011fa5 11264: 20002b7c .word 0x20002b7c 11268: 00011059 .word 0x00011059 1126c: 00011069 .word 0x00011069 11270: 0001263d .word 0x0001263d 11274: 0001207d .word 0x0001207d 11278: 000124ad .word 0x000124ad 1127c: 0001108d .word 0x0001108d 11280: 00011041 .word 0x00011041 00011284 <_lv_anim_core_init>: { 11284: b538 push {r3, r4, r5, lr} _lv_ll_init(&LV_GC_ROOT(_lv_anim_ll), sizeof(lv_anim_t)); 11286: 2140 movs r1, #64 ; 0x40 11288: 4809 ldr r0, [pc, #36] ; (112b0 <_lv_anim_core_init+0x2c>) 1128a: 4b0a ldr r3, [pc, #40] ; (112b4 <_lv_anim_core_init+0x30>) 1128c: 4798 blx r3 last_task_run = lv_tick_get(); 1128e: 4b0a ldr r3, [pc, #40] ; (112b8 <_lv_anim_core_init+0x34>) 11290: 4798 blx r3 11292: 4c0a ldr r4, [pc, #40] ; (112bc <_lv_anim_core_init+0x38>) 11294: 60a0 str r0, [r4, #8] _lv_anim_task = lv_task_create(anim_task, LV_DISP_DEF_REFR_PERIOD, LV_ANIM_TASK_PRIO, NULL); 11296: 2300 movs r3, #0 11298: 2204 movs r2, #4 1129a: 211e movs r1, #30 1129c: 4808 ldr r0, [pc, #32] ; (112c0 <_lv_anim_core_init+0x3c>) 1129e: 4d09 ldr r5, [pc, #36] ; (112c4 <_lv_anim_core_init+0x40>) 112a0: 47a8 blx r5 112a2: 6060 str r0, [r4, #4] anim_mark_list_change(); /*Turn off the animation task*/ 112a4: 4b08 ldr r3, [pc, #32] ; (112c8 <_lv_anim_core_init+0x44>) 112a6: 4798 blx r3 anim_list_changed = false; /*The list has not actaully changed*/ 112a8: 2300 movs r3, #0 112aa: 7023 strb r3, [r4, #0] 112ac: bd38 pop {r3, r4, r5, pc} 112ae: bf00 nop 112b0: 20006d5c .word 0x20006d5c 112b4: 00011ee1 .word 0x00011ee1 112b8: 00011041 .word 0x00011041 112bc: 20002b7c .word 0x20002b7c 112c0: 000110c5 .word 0x000110c5 112c4: 000139cd .word 0x000139cd 112c8: 0001108d .word 0x0001108d 000112cc : { 112cc: b510 push {r4, lr} 112ce: 4604 mov r4, r0 _lv_memset_00(a, sizeof(lv_anim_t)); 112d0: 2140 movs r1, #64 ; 0x40 112d2: 4b0d ldr r3, [pc, #52] ; (11308 ) 112d4: 4798 blx r3 a->time = 500; 112d6: f44f 73fa mov.w r3, #500 ; 0x1f4 112da: 6223 str r3, [r4, #32] a->start = 0; 112dc: 2300 movs r3, #0 112de: 61a3 str r3, [r4, #24] a->end = 100; 112e0: 2364 movs r3, #100 ; 0x64 112e2: 61e3 str r3, [r4, #28] { uint8_t * d8 = (uint8_t *)dst; const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; 112e4: 4b09 ldr r3, [pc, #36] ; (1130c ) 112e6: 781a ldrb r2, [r3, #0] 112e8: 7422 strb r2, [r4, #16] 112ea: 785a ldrb r2, [r3, #1] 112ec: 7462 strb r2, [r4, #17] 112ee: 789a ldrb r2, [r3, #2] 112f0: 74a2 strb r2, [r4, #18] 112f2: 78db ldrb r3, [r3, #3] 112f4: 74e3 strb r3, [r4, #19] a->repeat_cnt = 1; 112f6: 2301 movs r3, #1 112f8: 86a3 strh r3, [r4, #52] ; 0x34 a->early_apply = 1; 112fa: f894 3036 ldrb.w r3, [r4, #54] ; 0x36 112fe: f043 0301 orr.w r3, r3, #1 11302: f884 3036 strb.w r3, [r4, #54] ; 0x36 11306: bd10 pop {r4, pc} 11308: 00012b1f .word 0x00012b1f 1130c: 000291e8 .word 0x000291e8 00011310 : { 11310: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} 11314: 4607 mov r7, r0 11316: 4689 mov r9, r1 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); 11318: 4815 ldr r0, [pc, #84] ; (11370 ) 1131a: 4b16 ldr r3, [pc, #88] ; (11374 ) 1131c: 4798 blx r3 while(a != NULL) { 1131e: b310 cbz r0, 11366 11320: 4604 mov r4, r0 11322: f04f 0a00 mov.w sl, #0 a_next = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); 11326: f8df 8048 ldr.w r8, [pc, #72] ; 11370 1132a: 4e13 ldr r6, [pc, #76] ; (11378 ) _lv_ll_remove(&LV_GC_ROOT(_lv_anim_ll), a); 1132c: f8df b054 ldr.w fp, [pc, #84] ; 11384 11330: e00b b.n 1134a 11332: 4621 mov r1, r4 11334: 4640 mov r0, r8 11336: 47d8 blx fp lv_mem_free(a); 11338: 4620 mov r0, r4 1133a: 4b10 ldr r3, [pc, #64] ; (1137c ) 1133c: 4798 blx r3 anim_mark_list_change(); /*Read by `anim_task`. It need to know if a delete occurred in 1133e: 4b10 ldr r3, [pc, #64] ; (11380 ) 11340: 4798 blx r3 del = true; 11342: f04f 0a01 mov.w sl, #1 11346: 462c mov r4, r5 while(a != NULL) { 11348: b17d cbz r5, 1136a a_next = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); 1134a: 4621 mov r1, r4 1134c: 4640 mov r0, r8 1134e: 47b0 blx r6 11350: 4605 mov r5, r0 if(a->var == var && (a->exec_cb == exec_cb || exec_cb == NULL)) { 11352: 6823 ldr r3, [r4, #0] 11354: 42bb cmp r3, r7 11356: d1f6 bne.n 11346 11358: 6863 ldr r3, [r4, #4] 1135a: 454b cmp r3, r9 1135c: d0e9 beq.n 11332 1135e: f1b9 0f00 cmp.w r9, #0 11362: d1f0 bne.n 11346 11364: e7e5 b.n 11332 bool del = false; 11366: f04f 0a00 mov.w sl, #0 } 1136a: 4650 mov r0, sl 1136c: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} 11370: 20006d5c .word 0x20006d5c 11374: 00011f91 .word 0x00011f91 11378: 00011fa5 .word 0x00011fa5 1137c: 000124ad .word 0x000124ad 11380: 0001108d .word 0x0001108d 11384: 0001207d .word 0x0001207d 00011388 : { 11388: b530 push {r4, r5, lr} 1138a: b083 sub sp, #12 1138c: 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*/ 1138e: 6841 ldr r1, [r0, #4] 11390: b111 cbz r1, 11398 11392: 6800 ldr r0, [r0, #0] 11394: 4b1b ldr r3, [pc, #108] ; (11404 ) 11396: 4798 blx r3 if(_lv_ll_is_empty(&LV_GC_ROOT(_lv_anim_ll))) { 11398: 481b ldr r0, [pc, #108] ; (11408 ) 1139a: 4b1c ldr r3, [pc, #112] ; (1140c ) 1139c: 4798 blx r3 1139e: b9f0 cbnz r0, 113de lv_anim_t * new_anim = _lv_ll_ins_head(&LV_GC_ROOT(_lv_anim_ll)); 113a0: 4819 ldr r0, [pc, #100] ; (11408 ) 113a2: 4b1b ldr r3, [pc, #108] ; (11410 ) 113a4: 4798 blx r3 113a6: 4604 mov r4, r0 LV_ASSERT_MEM(new_anim); 113a8: 4b1a ldr r3, [pc, #104] ; (11414 ) 113aa: 4798 blx r3 113ac: b1e8 cbz r0, 113ea if(new_anim == NULL) return; 113ae: b1a4 cbz r4, 113da a->time_orig = a->time; 113b0: 6a2b ldr r3, [r5, #32] 113b2: 63ab str r3, [r5, #56] ; 0x38 _lv_memcpy(new_anim, a, sizeof(lv_anim_t)); 113b4: 2240 movs r2, #64 ; 0x40 113b6: 4629 mov r1, r5 113b8: 4620 mov r0, r4 113ba: 4b17 ldr r3, [pc, #92] ; (11418 ) 113bc: 4798 blx r3 if(new_anim->early_apply) { 113be: f894 3036 ldrb.w r3, [r4, #54] ; 0x36 113c2: f013 0f01 tst.w r3, #1 113c6: d006 beq.n 113d6 if(new_anim->exec_cb && new_anim->var) new_anim->exec_cb(new_anim->var, new_anim->start); 113c8: 6863 ldr r3, [r4, #4] 113ca: b123 cbz r3, 113d6 113cc: 6820 ldr r0, [r4, #0] 113ce: b110 cbz r0, 113d6 113d0: f9b4 1018 ldrsh.w r1, [r4, #24] 113d4: 4798 blx r3 anim_mark_list_change(); 113d6: 4b11 ldr r3, [pc, #68] ; (1141c ) 113d8: 4798 blx r3 } 113da: b003 add sp, #12 113dc: bd30 pop {r4, r5, pc} last_task_run = lv_tick_get() - 1; 113de: 4b10 ldr r3, [pc, #64] ; (11420 ) 113e0: 4798 blx r3 113e2: 3801 subs r0, #1 113e4: 4b0f ldr r3, [pc, #60] ; (11424 ) 113e6: 6098 str r0, [r3, #8] 113e8: e7da b.n 113a0 LV_ASSERT_MEM(new_anim); 113ea: 4b0f ldr r3, [pc, #60] ; (11428 ) 113ec: 9300 str r3, [sp, #0] 113ee: 226a movs r2, #106 ; 0x6a 113f0: 490e ldr r1, [pc, #56] ; (1142c ) 113f2: 2003 movs r0, #3 113f4: 4d0e ldr r5, [pc, #56] ; (11430 ) 113f6: 47a8 blx r5 113f8: 4622 mov r2, r4 113fa: 2300 movs r3, #0 113fc: 480d ldr r0, [pc, #52] ; (11434 ) 113fe: 490e ldr r1, [pc, #56] ; (11438 ) 11400: 4788 blx r1 11402: e7fe b.n 11402 11404: 00011311 .word 0x00011311 11408: 20006d5c .word 0x20006d5c 1140c: 0001222d .word 0x0001222d 11410: 00011ef9 .word 0x00011ef9 11414: 00002299 .word 0x00002299 11418: 0001263d .word 0x0001263d 1141c: 0001108d .word 0x0001108d 11420: 00011041 .word 0x00011041 11424: 20002b7c .word 0x20002b7c 11428: 000291f0 .word 0x000291f0 1142c: 00029200 .word 0x00029200 11430: 00012245 .word 0x00012245 11434: 00023fc0 .word 0x00023fc0 11438: 000022a1 .word 0x000022a1 0001143c : { 1143c: b5f8 push {r3, r4, r5, r6, r7, lr} 1143e: 4604 mov r4, r0 11440: 460f mov r7, r1 _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { 11442: 480a ldr r0, [pc, #40] ; (1146c ) 11444: 4b0a ldr r3, [pc, #40] ; (11470 ) 11446: 4798 blx r3 11448: 4601 mov r1, r0 1144a: b160 cbz r0, 11466 1144c: 4e07 ldr r6, [pc, #28] ; (1146c ) 1144e: 4d09 ldr r5, [pc, #36] ; (11474 ) 11450: e003 b.n 1145a 11452: 4630 mov r0, r6 11454: 47a8 blx r5 11456: 4601 mov r1, r0 11458: b128 cbz r0, 11466 if(a->var == var && a->exec_cb == exec_cb) { 1145a: 680b ldr r3, [r1, #0] 1145c: 42a3 cmp r3, r4 1145e: d1f8 bne.n 11452 11460: 684b ldr r3, [r1, #4] 11462: 42bb cmp r3, r7 11464: d1f5 bne.n 11452 } 11466: 4608 mov r0, r1 11468: bdf8 pop {r3, r4, r5, r6, r7, pc} 1146a: bf00 nop 1146c: 20006d5c .word 0x20006d5c 11470: 00011f91 .word 0x00011f91 11474: 00011fa5 .word 0x00011fa5 00011478 : int32_t d = LV_MATH_ABS((int32_t)start - end); 11478: 1a89 subs r1, r1, r2 1147a: 2900 cmp r1, #0 1147c: bfb8 it lt 1147e: 4249 neglt r1, r1 uint32_t time = (int32_t)((int32_t)(d * 1000) / speed); 11480: f44f 727a mov.w r2, #1000 ; 0x3e8 11484: fb02 f201 mul.w r2, r2, r1 11488: fb92 f0f0 sdiv r0, r2, r0 1148c: f64f 72ff movw r2, #65535 ; 0xffff 11490: 4290 cmp r0, r2 11492: bf28 it cs 11494: 4610 movcs r0, r2 time++; 11496: 2800 cmp r0, #0 11498: bf08 it eq 1149a: 2001 moveq r0, #1 } 1149c: b280 uxth r0, r0 1149e: 4770 bx lr 000114a0 : /********************** * STATIC FUNCTIONS **********************/ static bool lv_point_within_circle(const lv_area_t * area, const lv_point_t * p) { 114a0: b430 push {r4, r5} lv_coord_t r = (area->x2 - area->x1) / 2; 114a2: f9b0 5000 ldrsh.w r5, [r0] 114a6: f9b0 3004 ldrsh.w r3, [r0, #4] 114aa: 1b5b subs r3, r3, r5 114ac: eb03 73d3 add.w r3, r3, r3, lsr #31 114b0: 105b asrs r3, r3, #1 /* Circle center */ lv_coord_t cx = area->x1 + r; 114b2: 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; 114b4: 880a ldrh r2, [r1, #0] 114b6: 1b52 subs r2, r2, r5 114b8: 1b12 subs r2, r2, r4 lv_coord_t py = p->y - cy; 114ba: 8849 ldrh r1, [r1, #2] 114bc: 8840 ldrh r0, [r0, #2] 114be: 1a08 subs r0, r1, r0 114c0: 1b00 subs r0, r0, r4 int32_t r_sqrd = r * r; 114c2: fb13 f303 smulbb r3, r3, r3 int32_t dist = (px * px) + (py * py); 114c6: fb10 f000 smulbb r0, r0, r0 114ca: fb12 0202 smlabb r2, r2, r2, r0 if(dist <= r_sqrd) return true; else return false; } 114ce: 4293 cmp r3, r2 114d0: bfb4 ite lt 114d2: 2000 movlt r0, #0 114d4: 2001 movge r0, #1 114d6: bc30 pop {r4, r5} 114d8: 4770 bx lr 000114da : area_p->y2 = area_p->y1 + h - 1; 114da: 3901 subs r1, #1 114dc: 8843 ldrh r3, [r0, #2] 114de: 4419 add r1, r3 114e0: 80c1 strh r1, [r0, #6] 114e2: 4770 bx lr 000114e4 : size = (uint32_t)(area_p->x2 - area_p->x1 + 1) * (area_p->y2 - area_p->y1 + 1); 114e4: f9b0 2004 ldrsh.w r2, [r0, #4] 114e8: f9b0 3000 ldrsh.w r3, [r0] 114ec: 1ad2 subs r2, r2, r3 114ee: f9b0 3006 ldrsh.w r3, [r0, #6] 114f2: f9b0 0002 ldrsh.w r0, [r0, #2] 114f6: 1a18 subs r0, r3, r0 114f8: 3001 adds r0, #1 } 114fa: fb02 0000 mla r0, r2, r0, r0 114fe: 4770 bx lr 00011500 <_lv_area_intersect>: { 11500: b470 push {r4, r5, r6} res_p->x1 = LV_MATH_MAX(a1_p->x1, a2_p->x1); 11502: f9b2 5000 ldrsh.w r5, [r2] 11506: f9b1 3000 ldrsh.w r3, [r1] 1150a: 429d cmp r5, r3 1150c: bfb8 it lt 1150e: 461d movlt r5, r3 11510: 8005 strh r5, [r0, #0] res_p->y1 = LV_MATH_MAX(a1_p->y1, a2_p->y1); 11512: f9b2 3002 ldrsh.w r3, [r2, #2] 11516: f9b1 4002 ldrsh.w r4, [r1, #2] 1151a: 42a3 cmp r3, r4 1151c: bfb8 it lt 1151e: 4623 movlt r3, r4 11520: 8043 strh r3, [r0, #2] res_p->x2 = LV_MATH_MIN(a1_p->x2, a2_p->x2); 11522: f9b2 4004 ldrsh.w r4, [r2, #4] 11526: f9b1 6004 ldrsh.w r6, [r1, #4] 1152a: 42b4 cmp r4, r6 1152c: bfa8 it ge 1152e: 4634 movge r4, r6 11530: 8084 strh r4, [r0, #4] res_p->y2 = LV_MATH_MIN(a1_p->y2, a2_p->y2); 11532: f9b2 2006 ldrsh.w r2, [r2, #6] 11536: f9b1 1006 ldrsh.w r1, [r1, #6] 1153a: 428a cmp r2, r1 1153c: bfa8 it ge 1153e: 460a movge r2, r1 11540: 80c2 strh r2, [r0, #6] if((res_p->x1 > res_p->x2) || (res_p->y1 > res_p->y2)) { 11542: 42a5 cmp r5, r4 11544: dc05 bgt.n 11552 <_lv_area_intersect+0x52> 11546: 4293 cmp r3, r2 11548: bfcc ite gt 1154a: 2000 movgt r0, #0 1154c: 2001 movle r0, #1 } 1154e: bc70 pop {r4, r5, r6} 11550: 4770 bx lr union_ok = false; 11552: 2000 movs r0, #0 11554: e7fb b.n 1154e <_lv_area_intersect+0x4e> 00011556 <_lv_area_join>: { 11556: b410 push {r4} a_res_p->x1 = LV_MATH_MIN(a1_p->x1, a2_p->x1); 11558: f9b2 3000 ldrsh.w r3, [r2] 1155c: f9b1 4000 ldrsh.w r4, [r1] 11560: 42a3 cmp r3, r4 11562: bfa8 it ge 11564: 4623 movge r3, r4 11566: 8003 strh r3, [r0, #0] a_res_p->y1 = LV_MATH_MIN(a1_p->y1, a2_p->y1); 11568: f9b2 3002 ldrsh.w r3, [r2, #2] 1156c: f9b1 4002 ldrsh.w r4, [r1, #2] 11570: 42a3 cmp r3, r4 11572: bfa8 it ge 11574: 4623 movge r3, r4 11576: 8043 strh r3, [r0, #2] a_res_p->x2 = LV_MATH_MAX(a1_p->x2, a2_p->x2); 11578: f9b2 3004 ldrsh.w r3, [r2, #4] 1157c: f9b1 4004 ldrsh.w r4, [r1, #4] 11580: 42a3 cmp r3, r4 11582: bfb8 it lt 11584: 4623 movlt r3, r4 11586: 8083 strh r3, [r0, #4] a_res_p->y2 = LV_MATH_MAX(a1_p->y2, a2_p->y2); 11588: f9b2 3006 ldrsh.w r3, [r2, #6] 1158c: f9b1 2006 ldrsh.w r2, [r1, #6] 11590: 4293 cmp r3, r2 11592: bfb8 it lt 11594: 4613 movlt r3, r2 11596: 80c3 strh r3, [r0, #6] } 11598: f85d 4b04 ldr.w r4, [sp], #4 1159c: 4770 bx lr ... 000115a0 <_lv_area_is_point_on>: { 115a0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 115a4: 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))) { 115a6: f9b1 5000 ldrsh.w r5, [r1] 115aa: f9b0 e000 ldrsh.w lr, [r0] 115ae: 4575 cmp r5, lr 115b0: f2c0 809d blt.w 116ee <_lv_area_is_point_on+0x14e> 115b4: f9b0 8004 ldrsh.w r8, [r0, #4] 115b8: 4545 cmp r5, r8 115ba: f300 809c bgt.w 116f6 <_lv_area_is_point_on+0x156> 115be: f9b1 3002 ldrsh.w r3, [r1, #2] 115c2: f9b0 a002 ldrsh.w sl, [r0, #2] 115c6: 4553 cmp r3, sl 115c8: f2c0 8097 blt.w 116fa <_lv_area_is_point_on+0x15a> 115cc: f9b0 0006 ldrsh.w r0, [r0, #6] 115d0: 9001 str r0, [sp, #4] if(!is_on_rect) 115d2: 4283 cmp r3, r0 115d4: f300 8093 bgt.w 116fe <_lv_area_is_point_on+0x15e> if(radius <= 0) { 115d8: 2a00 cmp r2, #0 115da: f340 8092 ble.w 11702 <_lv_area_is_point_on+0x162> 115de: 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); 115e0: fa1f f988 uxth.w r9, r8 115e4: 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); 115e8: b287 uxth r7, r0 115ea: fa1f f58a uxth.w r5, sl corner_area.x1 = a_p->x1; 115ee: f8ad e008 strh.w lr, [sp, #8] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 115f2: f109 0301 add.w r3, r9, #1 115f6: 1b9b subs r3, r3, r6 lv_coord_t w = lv_area_get_width(a_p) / 2; 115f8: b21b sxth r3, r3 115fa: eb03 74d3 add.w r4, r3, r3, lsr #31 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 115fe: 1c7b adds r3, r7, #1 11600: 1b5b subs r3, r3, r5 lv_coord_t h = lv_area_get_height(a_p) / 2; 11602: b21b sxth r3, r3 11604: eb03 71d3 add.w r1, r3, r3, lsr #31 lv_coord_t max_radius = LV_MATH_MIN(w, h); 11608: 1064 asrs r4, r4, #1 1160a: 104b asrs r3, r1, #1 corner_area.x2 = a_p->x1 + radius; 1160c: 42a3 cmp r3, r4 1160e: bfa8 it ge 11610: 4623 movge r3, r4 11612: 4293 cmp r3, r2 11614: bfa8 it ge 11616: 4613 movge r3, r2 11618: b29c uxth r4, r3 1161a: 4426 add r6, r4 1161c: b2b6 uxth r6, r6 1161e: f8ad 600c strh.w r6, [sp, #12] corner_area.y1 = a_p->y1; 11622: f8ad a00a strh.w sl, [sp, #10] corner_area.y2 = a_p->y1 + radius; 11626: 4425 add r5, r4 11628: b2ad uxth r5, r5 1162a: fa0f fb85 sxth.w fp, r5 1162e: f8ad b00e strh.w fp, [sp, #14] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { 11632: 2200 movs r2, #0 11634: f8cd c000 str.w ip, [sp] 11638: 4661 mov r1, ip 1163a: a802 add r0, sp, #8 1163c: f7ff ffb0 bl 115a0 <_lv_area_is_point_on> 11640: b150 cbz r0, 11658 <_lv_area_is_point_on+0xb8> corner_area.x2 += radius; 11642: 4426 add r6, r4 11644: f8ad 600c strh.w r6, [sp, #12] corner_area.y2 += radius; 11648: 442c add r4, r5 1164a: f8ad 400e strh.w r4, [sp, #14] return lv_point_within_circle(&corner_area, p_p); 1164e: 9900 ldr r1, [sp, #0] 11650: a802 add r0, sp, #8 11652: 4b2e ldr r3, [pc, #184] ; (1170c <_lv_area_is_point_on+0x16c>) 11654: 4798 blx r3 11656: e04b b.n 116f0 <_lv_area_is_point_on+0x150> corner_area.y1 = a_p->y2 - radius; 11658: 1b3f subs r7, r7, r4 1165a: b2bf uxth r7, r7 1165c: f8ad 700a strh.w r7, [sp, #10] corner_area.y2 = a_p->y2; 11660: f8bd 3004 ldrh.w r3, [sp, #4] 11664: f8ad 300e strh.w r3, [sp, #14] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { 11668: 2200 movs r2, #0 1166a: 9900 ldr r1, [sp, #0] 1166c: a802 add r0, sp, #8 1166e: f7ff ff97 bl 115a0 <_lv_area_is_point_on> 11672: b150 cbz r0, 1168a <_lv_area_is_point_on+0xea> corner_area.x2 += radius; 11674: 4426 add r6, r4 11676: f8ad 600c strh.w r6, [sp, #12] corner_area.y1 -= radius; 1167a: 1b3c subs r4, r7, r4 1167c: f8ad 400a strh.w r4, [sp, #10] return lv_point_within_circle(&corner_area, p_p); 11680: 9900 ldr r1, [sp, #0] 11682: a802 add r0, sp, #8 11684: 4b21 ldr r3, [pc, #132] ; (1170c <_lv_area_is_point_on+0x16c>) 11686: 4798 blx r3 11688: e032 b.n 116f0 <_lv_area_is_point_on+0x150> corner_area.x1 = a_p->x2 - radius; 1168a: eba9 0904 sub.w r9, r9, r4 1168e: fa1f f989 uxth.w r9, r9 11692: f8ad 9008 strh.w r9, [sp, #8] corner_area.x2 = a_p->x2; 11696: f8ad 800c strh.w r8, [sp, #12] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { 1169a: 2200 movs r2, #0 1169c: 9e00 ldr r6, [sp, #0] 1169e: 4631 mov r1, r6 116a0: a802 add r0, sp, #8 116a2: f7ff ff7d bl 115a0 <_lv_area_is_point_on> 116a6: b158 cbz r0, 116c0 <_lv_area_is_point_on+0x120> corner_area.x1 -= radius; 116a8: eba9 0904 sub.w r9, r9, r4 116ac: f8ad 9008 strh.w r9, [sp, #8] corner_area.y1 -= radius; 116b0: 1b3c subs r4, r7, r4 116b2: f8ad 400a strh.w r4, [sp, #10] return lv_point_within_circle(&corner_area, p_p); 116b6: 4631 mov r1, r6 116b8: a802 add r0, sp, #8 116ba: 4b14 ldr r3, [pc, #80] ; (1170c <_lv_area_is_point_on+0x16c>) 116bc: 4798 blx r3 116be: e017 b.n 116f0 <_lv_area_is_point_on+0x150> corner_area.y1 = a_p->y1; 116c0: f8ad a00a strh.w sl, [sp, #10] corner_area.y2 = a_p->y1 + radius; 116c4: f8ad b00e strh.w fp, [sp, #14] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { 116c8: 2200 movs r2, #0 116ca: 9e00 ldr r6, [sp, #0] 116cc: 4631 mov r1, r6 116ce: a802 add r0, sp, #8 116d0: f7ff ff66 bl 115a0 <_lv_area_is_point_on> 116d4: b1b8 cbz r0, 11706 <_lv_area_is_point_on+0x166> corner_area.x1 -= radius; 116d6: eba9 0904 sub.w r9, r9, r4 116da: f8ad 9008 strh.w r9, [sp, #8] corner_area.y2 += radius; 116de: 442c add r4, r5 116e0: f8ad 400e strh.w r4, [sp, #14] return lv_point_within_circle(&corner_area, p_p); 116e4: 4631 mov r1, r6 116e6: a802 add r0, sp, #8 116e8: 4b08 ldr r3, [pc, #32] ; (1170c <_lv_area_is_point_on+0x16c>) 116ea: 4798 blx r3 116ec: e000 b.n 116f0 <_lv_area_is_point_on+0x150> return false; 116ee: 2000 movs r0, #0 } 116f0: b005 add sp, #20 116f2: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} return false; 116f6: 2000 movs r0, #0 116f8: e7fa b.n 116f0 <_lv_area_is_point_on+0x150> 116fa: 2000 movs r0, #0 116fc: e7f8 b.n 116f0 <_lv_area_is_point_on+0x150> 116fe: 2000 movs r0, #0 11700: e7f6 b.n 116f0 <_lv_area_is_point_on+0x150> return true; 11702: 2001 movs r0, #1 11704: e7f4 b.n 116f0 <_lv_area_is_point_on+0x150> return true; 11706: 2001 movs r0, #1 11708: e7f2 b.n 116f0 <_lv_area_is_point_on+0x150> 1170a: bf00 nop 1170c: 000114a1 .word 0x000114a1 00011710 <_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)) { 11710: f9b0 2000 ldrsh.w r2, [r0] 11714: f9b1 3004 ldrsh.w r3, [r1, #4] 11718: 429a cmp r2, r3 1171a: dc14 bgt.n 11746 <_lv_area_is_on+0x36> 1171c: f9b0 2004 ldrsh.w r2, [r0, #4] 11720: f9b1 3000 ldrsh.w r3, [r1] 11724: 429a cmp r2, r3 11726: db10 blt.n 1174a <_lv_area_is_on+0x3a> 11728: f9b0 2002 ldrsh.w r2, [r0, #2] 1172c: f9b1 3006 ldrsh.w r3, [r1, #6] 11730: 429a cmp r2, r3 11732: dc0c bgt.n 1174e <_lv_area_is_on+0x3e> 11734: f9b0 0006 ldrsh.w r0, [r0, #6] 11738: f9b1 3002 ldrsh.w r3, [r1, #2] 1173c: 4298 cmp r0, r3 1173e: bfb4 ite lt 11740: 2000 movlt r0, #0 11742: 2001 movge r0, #1 11744: 4770 bx lr return false; 11746: 2000 movs r0, #0 11748: 4770 bx lr 1174a: 2000 movs r0, #0 1174c: 4770 bx lr 1174e: 2000 movs r0, #0 } 11750: 4770 bx lr ... 00011754 <_lv_area_is_in>: { 11754: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 11758: b082 sub sp, #8 if(ain_p->x1 >= aholder_p->x1 && ain_p->y1 >= aholder_p->y1 && ain_p->x2 <= aholder_p->x2 && 1175a: f9b0 5000 ldrsh.w r5, [r0] 1175e: f9b1 3000 ldrsh.w r3, [r1] 11762: 42ab cmp r3, r5 11764: dc14 bgt.n 11790 <_lv_area_is_in+0x3c> 11766: f9b0 4002 ldrsh.w r4, [r0, #2] 1176a: f9b1 3002 ldrsh.w r3, [r1, #2] 1176e: 429c cmp r4, r3 11770: db14 blt.n 1179c <_lv_area_is_in+0x48> 11772: f9b0 4004 ldrsh.w r4, [r0, #4] 11776: f9b1 3004 ldrsh.w r3, [r1, #4] 1177a: 429c cmp r4, r3 1177c: dc10 bgt.n 117a0 <_lv_area_is_in+0x4c> 1177e: f9b0 3006 ldrsh.w r3, [r0, #6] 11782: f9b1 4006 ldrsh.w r4, [r1, #6] 11786: 42a3 cmp r3, r4 11788: bfcc ite gt 1178a: 2300 movgt r3, #0 1178c: 2301 movle r3, #1 1178e: e000 b.n 11792 <_lv_area_is_in+0x3e> bool is_in = false; 11790: 2300 movs r3, #0 if(radius == 0) return is_in; 11792: b93a cbnz r2, 117a4 <_lv_area_is_in+0x50> } 11794: 4618 mov r0, r3 11796: b002 add sp, #8 11798: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} bool is_in = false; 1179c: 2300 movs r3, #0 1179e: e7f8 b.n 11792 <_lv_area_is_in+0x3e> 117a0: 2300 movs r3, #0 117a2: e7f6 b.n 11792 <_lv_area_is_in+0x3e> 117a4: 4617 mov r7, r2 117a6: 460c mov r4, r1 117a8: 4606 mov r6, r0 p.x = ain_p->x1; 117aa: f8ad 5004 strh.w r5, [sp, #4] p.y = ain_p->y1; 117ae: 8843 ldrh r3, [r0, #2] 117b0: f8ad 3006 strh.w r3, [sp, #6] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; 117b4: a901 add r1, sp, #4 117b6: 4620 mov r0, r4 117b8: 4b13 ldr r3, [pc, #76] ; (11808 <_lv_area_is_in+0xb4>) 117ba: 4798 blx r3 117bc: 4603 mov r3, r0 117be: 2800 cmp r0, #0 117c0: d0e8 beq.n 11794 <_lv_area_is_in+0x40> p.x = ain_p->x2; 117c2: f9b6 8004 ldrsh.w r8, [r6, #4] 117c6: a902 add r1, sp, #8 117c8: f821 8d04 strh.w r8, [r1, #-4]! if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; 117cc: 463a mov r2, r7 117ce: 4620 mov r0, r4 117d0: 4b0d ldr r3, [pc, #52] ; (11808 <_lv_area_is_in+0xb4>) 117d2: 4798 blx r3 117d4: 4603 mov r3, r0 117d6: 2800 cmp r0, #0 117d8: d0dc beq.n 11794 <_lv_area_is_in+0x40> p.x = ain_p->x1; 117da: f8ad 5004 strh.w r5, [sp, #4] p.y = ain_p->y2; 117de: 88f3 ldrh r3, [r6, #6] 117e0: f8ad 3006 strh.w r3, [sp, #6] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; 117e4: 463a mov r2, r7 117e6: a901 add r1, sp, #4 117e8: 4620 mov r0, r4 117ea: 4b07 ldr r3, [pc, #28] ; (11808 <_lv_area_is_in+0xb4>) 117ec: 4798 blx r3 117ee: 4603 mov r3, r0 117f0: 2800 cmp r0, #0 117f2: d0cf beq.n 11794 <_lv_area_is_in+0x40> p.x = ain_p->x2; 117f4: a902 add r1, sp, #8 117f6: f821 8d04 strh.w r8, [r1, #-4]! if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; 117fa: 463a mov r2, r7 117fc: 4620 mov r0, r4 117fe: 4b02 ldr r3, [pc, #8] ; (11808 <_lv_area_is_in+0xb4>) 11800: 4798 blx r3 11802: 4603 mov r3, r0 11804: e7c6 b.n 11794 <_lv_area_is_in+0x40> 11806: bf00 nop 11808: 000115a1 .word 0x000115a1 0001180c <_lv_area_align>: { 1180c: b430 push {r4, r5} switch(align) { 1180e: 2a14 cmp r2, #20 11810: d83a bhi.n 11888 <_lv_area_align+0x7c> 11812: e8df f012 tbh [pc, r2, lsl #1] 11816: 0015 .short 0x0015 11818: 00470043 .word 0x00470043 1181c: 0067005c .word 0x0067005c 11820: 008d0072 .word 0x008d0072 11824: 00b3009e .word 0x00b3009e 11828: 00d600ce .word 0x00d600ce 1182c: 00fc00ee .word 0x00fc00ee 11830: 011c0104 .word 0x011c0104 11834: 0132012a .word 0x0132012a 11838: 0158014a .word 0x0158014a 1183c: 01780160 .word 0x01780160 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 11840: 8882 ldrh r2, [r0, #4] 11842: 3201 adds r2, #1 11844: 8804 ldrh r4, [r0, #0] 11846: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; 11848: b212 sxth r2, r2 1184a: eb02 74d2 add.w r4, r2, r2, lsr #31 1184e: 888a ldrh r2, [r1, #4] 11850: 3201 adds r2, #1 11852: 880d ldrh r5, [r1, #0] 11854: 1b52 subs r2, r2, r5 11856: b212 sxth r2, r2 11858: eb02 72d2 add.w r2, r2, r2, lsr #31 1185c: 1052 asrs r2, r2, #1 1185e: ebc2 0264 rsb r2, r2, r4, asr #1 11862: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 11864: 88c2 ldrh r2, [r0, #6] 11866: 3201 adds r2, #1 11868: 8844 ldrh r4, [r0, #2] 1186a: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; 1186c: b212 sxth r2, r2 1186e: eb02 74d2 add.w r4, r2, r2, lsr #31 11872: 88ca ldrh r2, [r1, #6] 11874: 3201 adds r2, #1 11876: 8849 ldrh r1, [r1, #2] 11878: 1a52 subs r2, r2, r1 1187a: b212 sxth r2, r2 1187c: eb02 72d2 add.w r2, r2, r2, lsr #31 11880: 1052 asrs r2, r2, #1 11882: ebc2 0264 rsb r2, r2, r4, asr #1 11886: 805a strh r2, [r3, #2] res->x += base->x1; 11888: 881a ldrh r2, [r3, #0] 1188a: 8801 ldrh r1, [r0, #0] 1188c: 440a add r2, r1 1188e: 801a strh r2, [r3, #0] res->y += base->y1; 11890: 885a ldrh r2, [r3, #2] 11892: 8841 ldrh r1, [r0, #2] 11894: 440a add r2, r1 11896: 805a strh r2, [r3, #2] } 11898: bc30 pop {r4, r5} 1189a: 4770 bx lr res->x = 0; 1189c: 2200 movs r2, #0 1189e: 801a strh r2, [r3, #0] res->y = 0; 118a0: 805a strh r2, [r3, #2] break; 118a2: e7f1 b.n 11888 <_lv_area_align+0x7c> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 118a4: 8882 ldrh r2, [r0, #4] 118a6: 3201 adds r2, #1 118a8: 8804 ldrh r4, [r0, #0] 118aa: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; 118ac: b212 sxth r2, r2 118ae: eb02 74d2 add.w r4, r2, r2, lsr #31 118b2: 888a ldrh r2, [r1, #4] 118b4: 3201 adds r2, #1 118b6: 8809 ldrh r1, [r1, #0] 118b8: 1a52 subs r2, r2, r1 118ba: b212 sxth r2, r2 118bc: eb02 72d2 add.w r2, r2, r2, lsr #31 118c0: 1052 asrs r2, r2, #1 118c2: ebc2 0264 rsb r2, r2, r4, asr #1 118c6: 801a strh r2, [r3, #0] res->y = 0; 118c8: 2200 movs r2, #0 118ca: 805a strh r2, [r3, #2] break; 118cc: e7dc b.n 11888 <_lv_area_align+0x7c> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); 118ce: 8882 ldrh r2, [r0, #4] 118d0: 888c ldrh r4, [r1, #4] 118d2: 1b12 subs r2, r2, r4 118d4: 8804 ldrh r4, [r0, #0] 118d6: 1b12 subs r2, r2, r4 118d8: 8809 ldrh r1, [r1, #0] 118da: 440a add r2, r1 118dc: 801a strh r2, [r3, #0] res->y = 0; 118de: 2200 movs r2, #0 118e0: 805a strh r2, [r3, #2] break; 118e2: e7d1 b.n 11888 <_lv_area_align+0x7c> res->x = 0; 118e4: 2200 movs r2, #0 118e6: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); 118e8: 88c2 ldrh r2, [r0, #6] 118ea: 88cc ldrh r4, [r1, #6] 118ec: 1b12 subs r2, r2, r4 118ee: 8844 ldrh r4, [r0, #2] 118f0: 1b12 subs r2, r2, r4 118f2: 8849 ldrh r1, [r1, #2] 118f4: 440a add r2, r1 118f6: 805a strh r2, [r3, #2] break; 118f8: e7c6 b.n 11888 <_lv_area_align+0x7c> 118fa: 8882 ldrh r2, [r0, #4] 118fc: 3201 adds r2, #1 118fe: 8804 ldrh r4, [r0, #0] 11900: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; 11902: b212 sxth r2, r2 11904: eb02 74d2 add.w r4, r2, r2, lsr #31 11908: 888a ldrh r2, [r1, #4] 1190a: 3201 adds r2, #1 1190c: 880d ldrh r5, [r1, #0] 1190e: 1b52 subs r2, r2, r5 11910: b212 sxth r2, r2 11912: eb02 72d2 add.w r2, r2, r2, lsr #31 11916: 1052 asrs r2, r2, #1 11918: ebc2 0264 rsb r2, r2, r4, asr #1 1191c: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); 1191e: 88c2 ldrh r2, [r0, #6] 11920: 88cc ldrh r4, [r1, #6] 11922: 1b12 subs r2, r2, r4 11924: 8844 ldrh r4, [r0, #2] 11926: 1b12 subs r2, r2, r4 11928: 8849 ldrh r1, [r1, #2] 1192a: 440a add r2, r1 1192c: 805a strh r2, [r3, #2] break; 1192e: e7ab b.n 11888 <_lv_area_align+0x7c> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); 11930: 8882 ldrh r2, [r0, #4] 11932: 888c ldrh r4, [r1, #4] 11934: 1b12 subs r2, r2, r4 11936: 8804 ldrh r4, [r0, #0] 11938: 1b12 subs r2, r2, r4 1193a: 880c ldrh r4, [r1, #0] 1193c: 4422 add r2, r4 1193e: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); 11940: 88c2 ldrh r2, [r0, #6] 11942: 88cc ldrh r4, [r1, #6] 11944: 1b12 subs r2, r2, r4 11946: 8844 ldrh r4, [r0, #2] 11948: 1b12 subs r2, r2, r4 1194a: 8849 ldrh r1, [r1, #2] 1194c: 440a add r2, r1 1194e: 805a strh r2, [r3, #2] break; 11950: e79a b.n 11888 <_lv_area_align+0x7c> res->x = 0; 11952: 2200 movs r2, #0 11954: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 11956: 88c2 ldrh r2, [r0, #6] 11958: 3201 adds r2, #1 1195a: 8844 ldrh r4, [r0, #2] 1195c: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; 1195e: b212 sxth r2, r2 11960: eb02 74d2 add.w r4, r2, r2, lsr #31 11964: 88ca ldrh r2, [r1, #6] 11966: 3201 adds r2, #1 11968: 8849 ldrh r1, [r1, #2] 1196a: 1a52 subs r2, r2, r1 1196c: b212 sxth r2, r2 1196e: eb02 72d2 add.w r2, r2, r2, lsr #31 11972: 1052 asrs r2, r2, #1 11974: ebc2 0264 rsb r2, r2, r4, asr #1 11978: 805a strh r2, [r3, #2] break; 1197a: e785 b.n 11888 <_lv_area_align+0x7c> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); 1197c: 8882 ldrh r2, [r0, #4] 1197e: 888c ldrh r4, [r1, #4] 11980: 1b12 subs r2, r2, r4 11982: 8804 ldrh r4, [r0, #0] 11984: 1b12 subs r2, r2, r4 11986: 880c ldrh r4, [r1, #0] 11988: 4422 add r2, r4 1198a: 801a strh r2, [r3, #0] 1198c: 88c2 ldrh r2, [r0, #6] 1198e: 3201 adds r2, #1 11990: 8844 ldrh r4, [r0, #2] 11992: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; 11994: b212 sxth r2, r2 11996: eb02 74d2 add.w r4, r2, r2, lsr #31 1199a: 88ca ldrh r2, [r1, #6] 1199c: 3201 adds r2, #1 1199e: 8849 ldrh r1, [r1, #2] 119a0: 1a52 subs r2, r2, r1 119a2: b212 sxth r2, r2 119a4: eb02 72d2 add.w r2, r2, r2, lsr #31 119a8: 1052 asrs r2, r2, #1 119aa: ebc2 0264 rsb r2, r2, r4, asr #1 119ae: 805a strh r2, [r3, #2] break; 119b0: e76a b.n 11888 <_lv_area_align+0x7c> res->x = 0; 119b2: 2200 movs r2, #0 119b4: 801a strh r2, [r3, #0] 119b6: 88ca ldrh r2, [r1, #6] 119b8: 8849 ldrh r1, [r1, #2] 119ba: 1a52 subs r2, r2, r1 res->y = -lv_area_get_height(to_align); 119bc: 43d2 mvns r2, r2 119be: 805a strh r2, [r3, #2] break; 119c0: e762 b.n 11888 <_lv_area_align+0x7c> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 119c2: 8882 ldrh r2, [r0, #4] 119c4: 3201 adds r2, #1 119c6: 8804 ldrh r4, [r0, #0] 119c8: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; 119ca: b212 sxth r2, r2 119cc: eb02 74d2 add.w r4, r2, r2, lsr #31 119d0: 888a ldrh r2, [r1, #4] 119d2: 3201 adds r2, #1 119d4: 880d ldrh r5, [r1, #0] 119d6: 1b52 subs r2, r2, r5 119d8: b212 sxth r2, r2 119da: eb02 72d2 add.w r2, r2, r2, lsr #31 119de: 1052 asrs r2, r2, #1 119e0: ebc2 0264 rsb r2, r2, r4, asr #1 119e4: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 119e6: 88ca ldrh r2, [r1, #6] 119e8: 8849 ldrh r1, [r1, #2] 119ea: 1a52 subs r2, r2, r1 res->y = -lv_area_get_height(to_align); 119ec: 43d2 mvns r2, r2 119ee: 805a strh r2, [r3, #2] break; 119f0: e74a b.n 11888 <_lv_area_align+0x7c> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); 119f2: 8882 ldrh r2, [r0, #4] 119f4: 888c ldrh r4, [r1, #4] 119f6: 1b12 subs r2, r2, r4 119f8: 8804 ldrh r4, [r0, #0] 119fa: 1b12 subs r2, r2, r4 119fc: 880c ldrh r4, [r1, #0] 119fe: 4422 add r2, r4 11a00: 801a strh r2, [r3, #0] 11a02: 88ca ldrh r2, [r1, #6] 11a04: 8849 ldrh r1, [r1, #2] 11a06: 1a52 subs r2, r2, r1 res->y = -lv_area_get_height(to_align); 11a08: 43d2 mvns r2, r2 11a0a: 805a strh r2, [r3, #2] break; 11a0c: e73c b.n 11888 <_lv_area_align+0x7c> res->x = 0; 11a0e: 2200 movs r2, #0 11a10: 801a strh r2, [r3, #0] 11a12: 88c2 ldrh r2, [r0, #6] 11a14: 3201 adds r2, #1 11a16: 8841 ldrh r1, [r0, #2] 11a18: 1a52 subs r2, r2, r1 res->y = lv_area_get_height(base); 11a1a: 805a strh r2, [r3, #2] break; 11a1c: e734 b.n 11888 <_lv_area_align+0x7c> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 11a1e: 8882 ldrh r2, [r0, #4] 11a20: 3201 adds r2, #1 11a22: 8804 ldrh r4, [r0, #0] 11a24: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; 11a26: b212 sxth r2, r2 11a28: eb02 74d2 add.w r4, r2, r2, lsr #31 11a2c: 888a ldrh r2, [r1, #4] 11a2e: 3201 adds r2, #1 11a30: 8809 ldrh r1, [r1, #0] 11a32: 1a52 subs r2, r2, r1 11a34: b212 sxth r2, r2 11a36: eb02 72d2 add.w r2, r2, r2, lsr #31 11a3a: 1052 asrs r2, r2, #1 11a3c: ebc2 0264 rsb r2, r2, r4, asr #1 11a40: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 11a42: 88c2 ldrh r2, [r0, #6] 11a44: 3201 adds r2, #1 11a46: 8841 ldrh r1, [r0, #2] 11a48: 1a52 subs r2, r2, r1 res->y = lv_area_get_height(base); 11a4a: 805a strh r2, [r3, #2] break; 11a4c: e71c b.n 11888 <_lv_area_align+0x7c> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); 11a4e: 8882 ldrh r2, [r0, #4] 11a50: 888c ldrh r4, [r1, #4] 11a52: 1b12 subs r2, r2, r4 11a54: 8804 ldrh r4, [r0, #0] 11a56: 1b12 subs r2, r2, r4 11a58: 8809 ldrh r1, [r1, #0] 11a5a: 440a add r2, r1 11a5c: 801a strh r2, [r3, #0] 11a5e: 88c2 ldrh r2, [r0, #6] 11a60: 3201 adds r2, #1 11a62: 8841 ldrh r1, [r0, #2] 11a64: 1a52 subs r2, r2, r1 res->y = lv_area_get_height(base); 11a66: 805a strh r2, [r3, #2] break; 11a68: e70e b.n 11888 <_lv_area_align+0x7c> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 11a6a: 888a ldrh r2, [r1, #4] 11a6c: 8809 ldrh r1, [r1, #0] 11a6e: 1a52 subs r2, r2, r1 res->x = -lv_area_get_width(to_align); 11a70: 43d2 mvns r2, r2 11a72: 801a strh r2, [r3, #0] res->y = 0; 11a74: 2200 movs r2, #0 11a76: 805a strh r2, [r3, #2] break; 11a78: e706 b.n 11888 <_lv_area_align+0x7c> 11a7a: 888a ldrh r2, [r1, #4] 11a7c: 880c ldrh r4, [r1, #0] 11a7e: 1b12 subs r2, r2, r4 res->x = -lv_area_get_width(to_align); 11a80: 43d2 mvns r2, r2 11a82: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 11a84: 88c2 ldrh r2, [r0, #6] 11a86: 3201 adds r2, #1 11a88: 8844 ldrh r4, [r0, #2] 11a8a: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; 11a8c: b212 sxth r2, r2 11a8e: eb02 74d2 add.w r4, r2, r2, lsr #31 11a92: 88ca ldrh r2, [r1, #6] 11a94: 3201 adds r2, #1 11a96: 8849 ldrh r1, [r1, #2] 11a98: 1a52 subs r2, r2, r1 11a9a: b212 sxth r2, r2 11a9c: eb02 72d2 add.w r2, r2, r2, lsr #31 11aa0: 1052 asrs r2, r2, #1 11aa2: ebc2 0264 rsb r2, r2, r4, asr #1 11aa6: 805a strh r2, [r3, #2] break; 11aa8: e6ee b.n 11888 <_lv_area_align+0x7c> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 11aaa: 888a ldrh r2, [r1, #4] 11aac: 880c ldrh r4, [r1, #0] 11aae: 1b12 subs r2, r2, r4 res->x = -lv_area_get_width(to_align); 11ab0: 43d2 mvns r2, r2 11ab2: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); 11ab4: 88c2 ldrh r2, [r0, #6] 11ab6: 88cc ldrh r4, [r1, #6] 11ab8: 1b12 subs r2, r2, r4 11aba: 8844 ldrh r4, [r0, #2] 11abc: 1b12 subs r2, r2, r4 11abe: 8849 ldrh r1, [r1, #2] 11ac0: 440a add r2, r1 11ac2: 805a strh r2, [r3, #2] break; 11ac4: e6e0 b.n 11888 <_lv_area_align+0x7c> 11ac6: 8882 ldrh r2, [r0, #4] 11ac8: 3201 adds r2, #1 11aca: 8801 ldrh r1, [r0, #0] 11acc: 1a52 subs r2, r2, r1 res->x = lv_area_get_width(base); 11ace: 801a strh r2, [r3, #0] res->y = 0; 11ad0: 2200 movs r2, #0 11ad2: 805a strh r2, [r3, #2] break; 11ad4: e6d8 b.n 11888 <_lv_area_align+0x7c> 11ad6: 8882 ldrh r2, [r0, #4] 11ad8: 3201 adds r2, #1 11ada: 8804 ldrh r4, [r0, #0] 11adc: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base); 11ade: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 11ae0: 88c2 ldrh r2, [r0, #6] 11ae2: 3201 adds r2, #1 11ae4: 8844 ldrh r4, [r0, #2] 11ae6: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; 11ae8: b212 sxth r2, r2 11aea: eb02 74d2 add.w r4, r2, r2, lsr #31 11aee: 88ca ldrh r2, [r1, #6] 11af0: 3201 adds r2, #1 11af2: 8849 ldrh r1, [r1, #2] 11af4: 1a52 subs r2, r2, r1 11af6: b212 sxth r2, r2 11af8: eb02 72d2 add.w r2, r2, r2, lsr #31 11afc: 1052 asrs r2, r2, #1 11afe: ebc2 0264 rsb r2, r2, r4, asr #1 11b02: 805a strh r2, [r3, #2] break; 11b04: e6c0 b.n 11888 <_lv_area_align+0x7c> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 11b06: 8882 ldrh r2, [r0, #4] 11b08: 3201 adds r2, #1 11b0a: 8804 ldrh r4, [r0, #0] 11b0c: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base); 11b0e: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); 11b10: 88c2 ldrh r2, [r0, #6] 11b12: 88cc ldrh r4, [r1, #6] 11b14: 1b12 subs r2, r2, r4 11b16: 8844 ldrh r4, [r0, #2] 11b18: 1b12 subs r2, r2, r4 11b1a: 8849 ldrh r1, [r1, #2] 11b1c: 440a add r2, r1 11b1e: 805a strh r2, [r3, #2] break; 11b20: e6b2 b.n 11888 <_lv_area_align+0x7c> 00011b22 : /********************** * STATIC FUNCTIONS **********************/ LV_ATTRIBUTE_FAST_MEM void lv_color_fill(lv_color_t * buf, lv_color_t color, uint32_t px_num) { 11b22: b430 push {r4, r5} 11b24: b28d uxth r5, r1 #if LV_COLOR_DEPTH == 16 uintptr_t buf_int = (uintptr_t) buf; if(buf_int & 0x3) { 11b26: f010 0f03 tst.w r0, #3 *buf = color; 11b2a: bf1c itt ne 11b2c: f820 1b02 strhne.w r1, [r0], #2 buf++; px_num--; 11b30: f102 32ff addne.w r2, r2, #4294967295 } uint32_t c32 = color.full + (color.full << 16); 11b34: eb05 4105 add.w r1, r5, r5, lsl #16 uint32_t * buf32 = (uint32_t *)buf; while(px_num > 16) { 11b38: 2a10 cmp r2, #16 11b3a: d921 bls.n 11b80 11b3c: f100 0320 add.w r3, r0, #32 11b40: 4614 mov r4, r2 *buf32 = c32; 11b42: f843 1c20 str.w r1, [r3, #-32] buf32++; *buf32 = c32; 11b46: f843 1c1c str.w r1, [r3, #-28] buf32++; *buf32 = c32; 11b4a: f843 1c18 str.w r1, [r3, #-24] buf32++; *buf32 = c32; 11b4e: f843 1c14 str.w r1, [r3, #-20] buf32++; *buf32 = c32; 11b52: f843 1c10 str.w r1, [r3, #-16] buf32++; *buf32 = c32; 11b56: f843 1c0c str.w r1, [r3, #-12] buf32++; *buf32 = c32; 11b5a: f843 1c08 str.w r1, [r3, #-8] buf32++; *buf32 = c32; 11b5e: f843 1c04 str.w r1, [r3, #-4] buf32++; px_num -= 16; 11b62: 3c10 subs r4, #16 11b64: 3320 adds r3, #32 while(px_num > 16) { 11b66: 2c10 cmp r4, #16 11b68: d8eb bhi.n 11b42 11b6a: f1a2 0311 sub.w r3, r2, #17 11b6e: 091b lsrs r3, r3, #4 11b70: 1c59 adds r1, r3, #1 11b72: 3a10 subs r2, #16 11b74: ebc3 7303 rsb r3, r3, r3, lsl #28 11b78: eb02 1203 add.w r2, r2, r3, lsl #4 buf32++; 11b7c: eb00 1041 add.w r0, r0, r1, lsl #5 } buf = (lv_color_t *)buf32; while(px_num) { 11b80: b11a cbz r2, 11b8a *buf = color; 11b82: f820 5b02 strh.w r5, [r0], #2 while(px_num) { 11b86: 3a01 subs r2, #1 11b88: d1fb bne.n 11b82 *buf = color; buf++; px_num --; } #endif } 11b8a: bc30 pop {r4, r5} 11b8c: 4770 bx lr 00011b8e : lv_color_t lv_color_lighten(lv_color_t c, lv_opa_t lvl) { 11b8e: 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))); 11b90: ebc1 1541 rsb r5, r1, r1, lsl #5 11b94: f1c1 04ff rsb r4, r1, #255 ; 0xff 11b98: f3c0 23c4 ubfx r3, r0, #11, #5 11b9c: fb04 5303 mla r3, r4, r3, r5 11ba0: eb03 2203 add.w r2, r3, r3, lsl #8 11ba4: eb03 13c2 add.w r3, r3, r2, lsl #7 11ba8: 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))); 11bac: f3c0 1345 ubfx r3, r0, #5, #6 11bb0: ebc1 1181 rsb r1, r1, r1, lsl #6 11bb4: fb04 1103 mla r1, r4, r3, r1 11bb8: eb01 2301 add.w r3, r1, r1, lsl #8 11bbc: eb01 11c3 add.w r1, r1, r3, lsl #7 11bc0: 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))); 11bc4: f000 001f and.w r0, r0, #31 11bc8: fb04 5000 mla r0, r4, r0, r5 11bcc: eb00 2300 add.w r3, r0, r0, lsl #8 11bd0: eb00 10c3 add.w r0, r0, r3, lsl #7 11bd4: 0dc3 lsrs r3, r0, #23 11bd6: f04f 0000 mov.w r0, #0 11bda: f363 0004 bfi r0, r3, #0, #5 11bde: f361 104a bfi r0, r1, #5, #6 11be2: f362 20cf bfi r0, r2, #11, #5 return lv_color_mix(LV_COLOR_WHITE, c, lvl); } 11be6: bc30 pop {r4, r5} 11be8: 4770 bx lr 00011bea : lv_color_t lv_color_darken(lv_color_t c, lv_opa_t lvl) { 11bea: 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))); 11bec: f1c1 01ff rsb r1, r1, #255 ; 0xff 11bf0: f3c0 23c4 ubfx r3, r0, #11, #5 11bf4: fb01 f303 mul.w r3, r1, r3 11bf8: eb03 2203 add.w r2, r3, r3, lsl #8 11bfc: eb03 13c2 add.w r3, r3, r2, lsl #7 11c00: 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))); 11c04: f3c0 1245 ubfx r2, r0, #5, #6 11c08: fb01 f202 mul.w r2, r1, r2 11c0c: eb02 2402 add.w r4, r2, r2, lsl #8 11c10: eb02 12c4 add.w r2, r2, r4, lsl #7 11c14: 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))); 11c18: f000 001f and.w r0, r0, #31 11c1c: fb01 f100 mul.w r1, r1, r0 11c20: eb01 2001 add.w r0, r1, r1, lsl #8 11c24: eb01 11c0 add.w r1, r1, r0, lsl #7 11c28: 0dc9 lsrs r1, r1, #23 11c2a: f04f 0000 mov.w r0, #0 11c2e: f361 0004 bfi r0, r1, #0, #5 11c32: f362 104a bfi r0, r2, #5, #6 11c36: f363 20cf bfi r0, r3, #11, #5 return lv_color_mix(LV_COLOR_BLACK, c, lvl); } 11c3a: f85d 4b04 ldr.w r4, [sp], #4 11c3e: 4770 bx lr 00011c40 : 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*/ 11c40: 1c42 adds r2, r0, #1 while(*path != '\0') { 11c42: 7843 ldrb r3, [r0, #1] 11c44: b91b cbnz r3, 11c4e 11c46: e008 b.n 11c5a 11c48: f812 3f01 ldrb.w r3, [r2, #1]! 11c4c: b12b cbz r3, 11c5a if(*path == ':' || *path == '\\' || *path == '/') { 11c4e: 2b3a cmp r3, #58 ; 0x3a 11c50: d0fa beq.n 11c48 11c52: 2b5c cmp r3, #92 ; 0x5c 11c54: d0f8 beq.n 11c48 11c56: 2b2f cmp r3, #47 ; 0x2f 11c58: d0f6 beq.n 11c48 break; } } return path; } 11c5a: 4610 mov r0, r2 11c5c: 4770 bx lr ... 00011c60 <_lv_fs_init>: { 11c60: b508 push {r3, lr} _lv_ll_init(&LV_GC_ROOT(_lv_drv_ll), sizeof(lv_fs_drv_t)); 11c62: 2144 movs r1, #68 ; 0x44 11c64: 4801 ldr r0, [pc, #4] ; (11c6c <_lv_fs_init+0xc>) 11c66: 4b02 ldr r3, [pc, #8] ; (11c70 <_lv_fs_init+0x10>) 11c68: 4798 blx r3 11c6a: bd08 pop {r3, pc} 11c6c: 20006d30 .word 0x20006d30 11c70: 00011ee1 .word 0x00011ee1 00011c74 : { 11c74: b538 push {r3, r4, r5, lr} if(file_p->drv == NULL) { 11c76: 6843 ldr r3, [r0, #4] 11c78: b173 cbz r3, 11c98 if(file_p->drv->close_cb == NULL) { 11c7a: 691a ldr r2, [r3, #16] 11c7c: b172 cbz r2, 11c9c 11c7e: 4604 mov r4, r0 lv_fs_res_t res = file_p->drv->close_cb(file_p->drv, file_p->file_d); 11c80: 6801 ldr r1, [r0, #0] 11c82: 4618 mov r0, r3 11c84: 4790 blx r2 11c86: 4605 mov r5, r0 lv_mem_free(file_p->file_d); /*Clean up*/ 11c88: 6820 ldr r0, [r4, #0] 11c8a: 4b05 ldr r3, [pc, #20] ; (11ca0 ) 11c8c: 4798 blx r3 file_p->file_d = NULL; 11c8e: 2300 movs r3, #0 11c90: 6023 str r3, [r4, #0] file_p->drv = NULL; 11c92: 6063 str r3, [r4, #4] } 11c94: 4628 mov r0, r5 11c96: bd38 pop {r3, r4, r5, pc} return LV_FS_RES_INV_PARAM; 11c98: 250b movs r5, #11 11c9a: e7fb b.n 11c94 return LV_FS_RES_NOT_IMP; 11c9c: 2509 movs r5, #9 11c9e: e7f9 b.n 11c94 11ca0: 000124ad .word 0x000124ad 00011ca4 : { 11ca4: b5f0 push {r4, r5, r6, r7, lr} 11ca6: b085 sub sp, #20 if(br != NULL) *br = 0; 11ca8: 461e mov r6, r3 11caa: b10b cbz r3, 11cb0 11cac: 2300 movs r3, #0 11cae: 6033 str r3, [r6, #0] if(file_p->drv == NULL) return LV_FS_RES_INV_PARAM; 11cb0: 6845 ldr r5, [r0, #4] 11cb2: b18d cbz r5, 11cd8 if(file_p->drv->read_cb == NULL) return LV_FS_RES_NOT_IMP; 11cb4: 69af ldr r7, [r5, #24] 11cb6: b18f cbz r7, 11cdc 11cb8: 4613 mov r3, r2 11cba: 460a mov r2, r1 11cbc: 4604 mov r4, r0 uint32_t br_tmp = 0; 11cbe: a804 add r0, sp, #16 11cc0: 2100 movs r1, #0 11cc2: 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); 11cc6: 6821 ldr r1, [r4, #0] 11cc8: 9000 str r0, [sp, #0] 11cca: 4628 mov r0, r5 11ccc: 47b8 blx r7 if(br != NULL) *br = br_tmp; 11cce: b10e cbz r6, 11cd4 11cd0: 9b03 ldr r3, [sp, #12] 11cd2: 6033 str r3, [r6, #0] } 11cd4: b005 add sp, #20 11cd6: bdf0 pop {r4, r5, r6, r7, pc} if(file_p->drv == NULL) return LV_FS_RES_INV_PARAM; 11cd8: 200b movs r0, #11 11cda: e7fb b.n 11cd4 if(file_p->drv->read_cb == NULL) return LV_FS_RES_NOT_IMP; 11cdc: 2009 movs r0, #9 11cde: e7f9 b.n 11cd4 00011ce0 : { 11ce0: b538 push {r3, r4, r5, lr} if(file_p->drv == NULL) { 11ce2: 6844 ldr r4, [r0, #4] 11ce4: b134 cbz r4, 11cf4 if(file_p->drv->seek_cb == NULL) { 11ce6: 6a25 ldr r5, [r4, #32] 11ce8: b135 cbz r5, 11cf8 11cea: 460a mov r2, r1 lv_fs_res_t res = file_p->drv->seek_cb(file_p->drv, file_p->file_d, pos); 11cec: 6801 ldr r1, [r0, #0] 11cee: 4620 mov r0, r4 11cf0: 47a8 blx r5 return res; 11cf2: bd38 pop {r3, r4, r5, pc} return LV_FS_RES_INV_PARAM; 11cf4: 200b movs r0, #11 11cf6: bd38 pop {r3, r4, r5, pc} return LV_FS_RES_NOT_IMP; 11cf8: 2009 movs r0, #9 } 11cfa: bd38 pop {r3, r4, r5, pc} 00011cfc : { 11cfc: b570 push {r4, r5, r6, lr} 11cfe: 4604 mov r4, r0 _LV_LL_READ(LV_GC_ROOT(_lv_drv_ll), drv) { 11d00: 4809 ldr r0, [pc, #36] ; (11d28 ) 11d02: 4b0a ldr r3, [pc, #40] ; (11d2c ) 11d04: 4798 blx r3 11d06: 4601 mov r1, r0 11d08: b158 cbz r0, 11d22 if(drv->letter == letter) { 11d0a: 7803 ldrb r3, [r0, #0] 11d0c: 42a3 cmp r3, r4 11d0e: d008 beq.n 11d22 _LV_LL_READ(LV_GC_ROOT(_lv_drv_ll), drv) { 11d10: 4e05 ldr r6, [pc, #20] ; (11d28 ) 11d12: 4d07 ldr r5, [pc, #28] ; (11d30 ) 11d14: 4630 mov r0, r6 11d16: 47a8 blx r5 11d18: 4601 mov r1, r0 11d1a: b110 cbz r0, 11d22 if(drv->letter == letter) { 11d1c: 780b ldrb r3, [r1, #0] 11d1e: 42a3 cmp r3, r4 11d20: d1f8 bne.n 11d14 } 11d22: 4608 mov r0, r1 11d24: bd70 pop {r4, r5, r6, pc} 11d26: bf00 nop 11d28: 20006d30 .word 0x20006d30 11d2c: 00011f91 .word 0x00011f91 11d30: 00011fa5 .word 0x00011fa5 00011d34 : { 11d34: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 11d38: b083 sub sp, #12 file_p->drv = NULL; 11d3a: 2300 movs r3, #0 11d3c: 6043 str r3, [r0, #4] file_p->file_d = NULL; 11d3e: 6003 str r3, [r0, #0] if(path == NULL) return LV_FS_RES_INV_PARAM; 11d40: 2900 cmp r1, #0 11d42: d045 beq.n 11dd0 11d44: 460d mov r5, r1 11d46: 4691 mov r9, r2 11d48: 4604 mov r4, r0 file_p->drv = lv_fs_get_drv(letter); 11d4a: 7808 ldrb r0, [r1, #0] 11d4c: 4b24 ldr r3, [pc, #144] ; (11de0 ) 11d4e: 4798 blx r3 11d50: 6060 str r0, [r4, #4] if(file_p->drv == NULL) { 11d52: b140 cbz r0, 11d66 if(file_p->drv->ready_cb != NULL) { 11d54: 6883 ldr r3, [r0, #8] 11d56: b153 cbz r3, 11d6e if(file_p->drv->ready_cb(file_p->drv) == false) { 11d58: 4798 blx r3 11d5a: b940 cbnz r0, 11d6e file_p->drv = NULL; 11d5c: 2300 movs r3, #0 11d5e: 6063 str r3, [r4, #4] file_p->file_d = NULL; 11d60: 6023 str r3, [r4, #0] return LV_FS_RES_HW_ERR; 11d62: 2501 movs r5, #1 11d64: e035 b.n 11dd2 file_p->file_d = NULL; 11d66: 2300 movs r3, #0 11d68: 6023 str r3, [r4, #0] return LV_FS_RES_NOT_EX; 11d6a: 2503 movs r5, #3 11d6c: e031 b.n 11dd2 file_p->file_d = lv_mem_alloc(file_p->drv->file_size); 11d6e: 6863 ldr r3, [r4, #4] 11d70: 8858 ldrh r0, [r3, #2] 11d72: 4b1c ldr r3, [pc, #112] ; (11de4 ) 11d74: 4798 blx r3 11d76: 6020 str r0, [r4, #0] LV_ASSERT_MEM(file_p->file_d); 11d78: 4b1b ldr r3, [pc, #108] ; (11de8 ) 11d7a: 4798 blx r3 11d7c: b128 cbz r0, 11d8a if(file_p->file_d == NULL) { 11d7e: 6826 ldr r6, [r4, #0] 11d80: b986 cbnz r6, 11da4 file_p->drv = NULL; 11d82: 2300 movs r3, #0 11d84: 6063 str r3, [r4, #4] return LV_FS_RES_OUT_OF_MEM; /* Out of memory */ 11d86: 250a movs r5, #10 11d88: e023 b.n 11dd2 LV_ASSERT_MEM(file_p->file_d); 11d8a: 4b18 ldr r3, [pc, #96] ; (11dec ) 11d8c: 9300 str r3, [sp, #0] 11d8e: 226f movs r2, #111 ; 0x6f 11d90: 4917 ldr r1, [pc, #92] ; (11df0 ) 11d92: 2003 movs r0, #3 11d94: 4d17 ldr r5, [pc, #92] ; (11df4 ) 11d96: 47a8 blx r5 11d98: 6822 ldr r2, [r4, #0] 11d9a: 2300 movs r3, #0 11d9c: 4816 ldr r0, [pc, #88] ; (11df8 ) 11d9e: 4917 ldr r1, [pc, #92] ; (11dfc ) 11da0: 4788 blx r1 11da2: e7fe b.n 11da2 if(file_p->drv->open_cb == NULL) { 11da4: f8d4 8004 ldr.w r8, [r4, #4] 11da8: f8d8 700c ldr.w r7, [r8, #12] 11dac: b1af cbz r7, 11dda const char * real_path = lv_fs_get_real_path(path); 11dae: 4628 mov r0, r5 11db0: 4b13 ldr r3, [pc, #76] ; (11e00 ) 11db2: 4798 blx r3 lv_fs_res_t res = file_p->drv->open_cb(file_p->drv, file_p->file_d, real_path, mode); 11db4: 464b mov r3, r9 11db6: 4602 mov r2, r0 11db8: 4631 mov r1, r6 11dba: 4640 mov r0, r8 11dbc: 47b8 blx r7 if(res != LV_FS_RES_OK) { 11dbe: 4605 mov r5, r0 11dc0: b138 cbz r0, 11dd2 lv_mem_free(file_p->file_d); 11dc2: 6820 ldr r0, [r4, #0] 11dc4: 4b0f ldr r3, [pc, #60] ; (11e04 ) 11dc6: 4798 blx r3 file_p->file_d = NULL; 11dc8: 2300 movs r3, #0 11dca: 6023 str r3, [r4, #0] file_p->drv = NULL; 11dcc: 6063 str r3, [r4, #4] 11dce: e000 b.n 11dd2 if(path == NULL) return LV_FS_RES_INV_PARAM; 11dd0: 250b movs r5, #11 } 11dd2: 4628 mov r0, r5 11dd4: b003 add sp, #12 11dd6: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} return LV_FS_RES_NOT_IMP; 11dda: 2509 movs r5, #9 11ddc: e7f9 b.n 11dd2 11dde: bf00 nop 11de0: 00011cfd .word 0x00011cfd 11de4: 000123c5 .word 0x000123c5 11de8: 00002299 .word 0x00002299 11dec: 00029240 .word 0x00029240 11df0: 0002925c .word 0x0002925c 11df4: 00012245 .word 0x00012245 11df8: 00023fc0 .word 0x00023fc0 11dfc: 000022a1 .word 0x000022a1 11e00: 00011c41 .word 0x00011c41 11e04: 000124ad .word 0x000124ad 00011e08 : { 11e08: b510 push {r4, lr} 11e0a: 4604 mov r4, r0 for(i = strlen(fn); i > 0; i--) { 11e0c: 4b12 ldr r3, [pc, #72] ; (11e58 ) 11e0e: 4798 blx r3 11e10: b1c8 cbz r0, 11e46 11e12: 4602 mov r2, r0 if(fn[i] == '.') { 11e14: 1821 adds r1, r4, r0 11e16: 5c23 ldrb r3, [r4, r0] 11e18: 2b2e cmp r3, #46 ; 0x2e 11e1a: d00f beq.n 11e3c else if(fn[i] == '/' || fn[i] == '\\') { 11e1c: 2b2f cmp r3, #47 ; 0x2f 11e1e: d014 beq.n 11e4a 11e20: 2b5c cmp r3, #92 ; 0x5c 11e22: d014 beq.n 11e4e for(i = strlen(fn); i > 0; i--) { 11e24: 3a01 subs r2, #1 11e26: d00c beq.n 11e42 if(fn[i] == '.') { 11e28: f811 3d01 ldrb.w r3, [r1, #-1]! 11e2c: 2b2e cmp r3, #46 ; 0x2e 11e2e: d005 beq.n 11e3c else if(fn[i] == '/' || fn[i] == '\\') { 11e30: 2b2f cmp r3, #47 ; 0x2f 11e32: d00e beq.n 11e52 11e34: 2b5c cmp r3, #92 ; 0x5c 11e36: d1f5 bne.n 11e24 return ""; /*No extension if a '\' or '/' found*/ 11e38: 4808 ldr r0, [pc, #32] ; (11e5c ) } 11e3a: bd10 pop {r4, pc} return &fn[i + 1]; 11e3c: 3201 adds r2, #1 11e3e: 18a0 adds r0, r4, r2 11e40: bd10 pop {r4, pc} return ""; /*Empty string if no '.' in the file name. */ 11e42: 4806 ldr r0, [pc, #24] ; (11e5c ) 11e44: bd10 pop {r4, pc} 11e46: 4805 ldr r0, [pc, #20] ; (11e5c ) 11e48: bd10 pop {r4, pc} return ""; /*No extension if a '\' or '/' found*/ 11e4a: 4804 ldr r0, [pc, #16] ; (11e5c ) 11e4c: bd10 pop {r4, pc} 11e4e: 4803 ldr r0, [pc, #12] ; (11e5c ) 11e50: bd10 pop {r4, pc} 11e52: 4802 ldr r0, [pc, #8] ; (11e5c ) 11e54: bd10 pop {r4, pc} 11e56: bf00 nop 11e58: 0001b507 .word 0x0001b507 11e5c: 00024eec .word 0x00024eec 00011e60 : * @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) { 11e60: b510 push {r4, lr} 11e62: b082 sub sp, #8 11e64: 9201 str r2, [sp, #4] if(act == NULL) return; /*Can't set the next node of `NULL`*/ 11e66: b181 cbz r1, 11e8a 11e68: 460c mov r4, r1 uint32_t node_p_size = sizeof(lv_ll_node_t *); if(next) 11e6a: b182 cbz r2, 11e8e _lv_memcpy_small(act + LL_NEXT_P_OFFSET(ll_p), &next, node_p_size); 11e6c: 6803 ldr r3, [r0, #0] 11e6e: 3304 adds r3, #4 11e70: 18ca adds r2, r1, r3 11e72: f89d 1004 ldrb.w r1, [sp, #4] 11e76: 54e1 strb r1, [r4, r3] 11e78: f89d 3005 ldrb.w r3, [sp, #5] 11e7c: 7053 strb r3, [r2, #1] 11e7e: f89d 3006 ldrb.w r3, [sp, #6] 11e82: 7093 strb r3, [r2, #2] 11e84: f89d 3007 ldrb.w r3, [sp, #7] 11e88: 70d3 strb r3, [r2, #3] else _lv_memset_00(act + LL_NEXT_P_OFFSET(ll_p), node_p_size); } 11e8a: b002 add sp, #8 11e8c: bd10 pop {r4, pc} _lv_memset_00(act + LL_NEXT_P_OFFSET(ll_p), node_p_size); 11e8e: 6800 ldr r0, [r0, #0] 11e90: 3004 adds r0, #4 11e92: 2104 movs r1, #4 11e94: 4420 add r0, r4 11e96: 4b01 ldr r3, [pc, #4] ; (11e9c ) 11e98: 4798 blx r3 11e9a: e7f6 b.n 11e8a 11e9c: 00012b1f .word 0x00012b1f 00011ea0 : { 11ea0: b500 push {lr} 11ea2: b083 sub sp, #12 11ea4: 9201 str r2, [sp, #4] if(act == NULL) return; /*Can't set the prev node of `NULL`*/ 11ea6: b181 cbz r1, 11eca 11ea8: 460a mov r2, r1 if(prev) 11eaa: 9b01 ldr r3, [sp, #4] 11eac: b183 cbz r3, 11ed0 _lv_memcpy_small(act + LL_PREV_P_OFFSET(ll_p), &prev, node_p_size); 11eae: 6801 ldr r1, [r0, #0] 11eb0: 1853 adds r3, r2, r1 11eb2: f89d 0004 ldrb.w r0, [sp, #4] 11eb6: 5450 strb r0, [r2, r1] 11eb8: f89d 2005 ldrb.w r2, [sp, #5] 11ebc: 705a strb r2, [r3, #1] 11ebe: f89d 2006 ldrb.w r2, [sp, #6] 11ec2: 709a strb r2, [r3, #2] 11ec4: f89d 2007 ldrb.w r2, [sp, #7] 11ec8: 70da strb r2, [r3, #3] } 11eca: b003 add sp, #12 11ecc: f85d fb04 ldr.w pc, [sp], #4 _lv_memset_00(act + LL_PREV_P_OFFSET(ll_p), node_p_size); 11ed0: 6800 ldr r0, [r0, #0] 11ed2: 2104 movs r1, #4 11ed4: 4410 add r0, r2 11ed6: 4b01 ldr r3, [pc, #4] ; (11edc ) 11ed8: 4798 blx r3 11eda: e7f6 b.n 11eca 11edc: 00012b1f .word 0x00012b1f 00011ee0 <_lv_ll_init>: ll_p->head = NULL; 11ee0: 2300 movs r3, #0 11ee2: 6043 str r3, [r0, #4] ll_p->tail = NULL; 11ee4: 6083 str r3, [r0, #8] if(node_size & 0x3) { 11ee6: f011 0f03 tst.w r1, #3 node_size = node_size & (~0x3); 11eea: bf1c itt ne 11eec: f021 0103 bicne.w r1, r1, #3 node_size += 4; 11ef0: 3104 addne r1, #4 ll_p->n_size = node_size; 11ef2: 6001 str r1, [r0, #0] 11ef4: 4770 bx lr ... 00011ef8 <_lv_ll_ins_head>: { 11ef8: b538 push {r3, r4, r5, lr} 11efa: 4604 mov r4, r0 n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); 11efc: 6800 ldr r0, [r0, #0] 11efe: 3008 adds r0, #8 11f00: 4b0d ldr r3, [pc, #52] ; (11f38 <_lv_ll_ins_head+0x40>) 11f02: 4798 blx r3 if(n_new != NULL) { 11f04: 4605 mov r5, r0 11f06: b190 cbz r0, 11f2e <_lv_ll_ins_head+0x36> node_set_prev(ll_p, n_new, NULL); /*No prev. before the new head*/ 11f08: 2200 movs r2, #0 11f0a: 4601 mov r1, r0 11f0c: 4620 mov r0, r4 11f0e: 4b0b ldr r3, [pc, #44] ; (11f3c <_lv_ll_ins_head+0x44>) 11f10: 4798 blx r3 node_set_next(ll_p, n_new, ll_p->head); /*After new comes the old head*/ 11f12: 6862 ldr r2, [r4, #4] 11f14: 4629 mov r1, r5 11f16: 4620 mov r0, r4 11f18: 4b09 ldr r3, [pc, #36] ; (11f40 <_lv_ll_ins_head+0x48>) 11f1a: 4798 blx r3 if(ll_p->head != NULL) { /*If there is old head then before it goes the new*/ 11f1c: 6861 ldr r1, [r4, #4] 11f1e: b119 cbz r1, 11f28 <_lv_ll_ins_head+0x30> node_set_prev(ll_p, ll_p->head, n_new); 11f20: 462a mov r2, r5 11f22: 4620 mov r0, r4 11f24: 4b05 ldr r3, [pc, #20] ; (11f3c <_lv_ll_ins_head+0x44>) 11f26: 4798 blx r3 ll_p->head = n_new; /*Set the new head in the dsc.*/ 11f28: 6065 str r5, [r4, #4] if(ll_p->tail == NULL) { /*If there is no tail (1. node) set the tail too*/ 11f2a: 68a3 ldr r3, [r4, #8] 11f2c: b10b cbz r3, 11f32 <_lv_ll_ins_head+0x3a> } 11f2e: 4628 mov r0, r5 11f30: bd38 pop {r3, r4, r5, pc} ll_p->tail = n_new; 11f32: 60a5 str r5, [r4, #8] 11f34: e7fb b.n 11f2e <_lv_ll_ins_head+0x36> 11f36: bf00 nop 11f38: 000123c5 .word 0x000123c5 11f3c: 00011ea1 .word 0x00011ea1 11f40: 00011e61 .word 0x00011e61 00011f44 <_lv_ll_ins_tail>: { 11f44: b538 push {r3, r4, r5, lr} 11f46: 4604 mov r4, r0 n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); 11f48: 6800 ldr r0, [r0, #0] 11f4a: 3008 adds r0, #8 11f4c: 4b0d ldr r3, [pc, #52] ; (11f84 <_lv_ll_ins_tail+0x40>) 11f4e: 4798 blx r3 if(n_new != NULL) { 11f50: 4605 mov r5, r0 11f52: b190 cbz r0, 11f7a <_lv_ll_ins_tail+0x36> node_set_next(ll_p, n_new, NULL); /*No next after the new tail*/ 11f54: 2200 movs r2, #0 11f56: 4601 mov r1, r0 11f58: 4620 mov r0, r4 11f5a: 4b0b ldr r3, [pc, #44] ; (11f88 <_lv_ll_ins_tail+0x44>) 11f5c: 4798 blx r3 node_set_prev(ll_p, n_new, ll_p->tail); /*The prev. before new is tho old tail*/ 11f5e: 68a2 ldr r2, [r4, #8] 11f60: 4629 mov r1, r5 11f62: 4620 mov r0, r4 11f64: 4b09 ldr r3, [pc, #36] ; (11f8c <_lv_ll_ins_tail+0x48>) 11f66: 4798 blx r3 if(ll_p->tail != NULL) { /*If there is old tail then the new comes after it*/ 11f68: 68a1 ldr r1, [r4, #8] 11f6a: b119 cbz r1, 11f74 <_lv_ll_ins_tail+0x30> node_set_next(ll_p, ll_p->tail, n_new); 11f6c: 462a mov r2, r5 11f6e: 4620 mov r0, r4 11f70: 4b05 ldr r3, [pc, #20] ; (11f88 <_lv_ll_ins_tail+0x44>) 11f72: 4798 blx r3 ll_p->tail = n_new; /*Set the new tail in the dsc.*/ 11f74: 60a5 str r5, [r4, #8] if(ll_p->head == NULL) { /*If there is no head (1. node) set the head too*/ 11f76: 6863 ldr r3, [r4, #4] 11f78: b10b cbz r3, 11f7e <_lv_ll_ins_tail+0x3a> } 11f7a: 4628 mov r0, r5 11f7c: bd38 pop {r3, r4, r5, pc} ll_p->head = n_new; 11f7e: 6065 str r5, [r4, #4] 11f80: e7fb b.n 11f7a <_lv_ll_ins_tail+0x36> 11f82: bf00 nop 11f84: 000123c5 .word 0x000123c5 11f88: 00011e61 .word 0x00011e61 11f8c: 00011ea1 .word 0x00011ea1 00011f90 <_lv_ll_get_head>: if(ll_p != NULL) { 11f90: b108 cbz r0, 11f96 <_lv_ll_get_head+0x6> head = ll_p->head; 11f92: 6840 ldr r0, [r0, #4] 11f94: 4770 bx lr void * head = NULL; 11f96: 2000 movs r0, #0 } 11f98: 4770 bx lr 00011f9a <_lv_ll_get_tail>: if(ll_p != NULL) { 11f9a: b108 cbz r0, 11fa0 <_lv_ll_get_tail+0x6> tail = ll_p->tail; 11f9c: 6880 ldr r0, [r0, #8] 11f9e: 4770 bx lr void * tail = NULL; 11fa0: 2000 movs r0, #0 } 11fa2: 4770 bx lr 00011fa4 <_lv_ll_get_next>: { 11fa4: b082 sub sp, #8 void * next = NULL; 11fa6: 2300 movs r3, #0 11fa8: 9301 str r3, [sp, #4] if(ll_p != NULL) { 11faa: b170 cbz r0, 11fca <_lv_ll_get_next+0x26> _lv_memcpy_small(&next, n_act_d + LL_NEXT_P_OFFSET(ll_p), sizeof(void *)); 11fac: 6803 ldr r3, [r0, #0] 11fae: 3304 adds r3, #4 11fb0: 18ca adds r2, r1, r3 11fb2: 5ccb ldrb r3, [r1, r3] 11fb4: f88d 3004 strb.w r3, [sp, #4] 11fb8: 7853 ldrb r3, [r2, #1] 11fba: f88d 3005 strb.w r3, [sp, #5] 11fbe: 7893 ldrb r3, [r2, #2] 11fc0: f88d 3006 strb.w r3, [sp, #6] 11fc4: 78d3 ldrb r3, [r2, #3] 11fc6: f88d 3007 strb.w r3, [sp, #7] } 11fca: 9801 ldr r0, [sp, #4] 11fcc: b002 add sp, #8 11fce: 4770 bx lr 00011fd0 <_lv_ll_get_prev>: { 11fd0: b082 sub sp, #8 void * prev = NULL; 11fd2: 2300 movs r3, #0 11fd4: 9301 str r3, [sp, #4] if(ll_p != NULL) { 11fd6: b168 cbz r0, 11ff4 <_lv_ll_get_prev+0x24> _lv_memcpy_small(&prev, n_act_d + LL_PREV_P_OFFSET(ll_p), sizeof(void *)); 11fd8: 6802 ldr r2, [r0, #0] 11fda: 188b adds r3, r1, r2 11fdc: 5c8a ldrb r2, [r1, r2] 11fde: f88d 2004 strb.w r2, [sp, #4] 11fe2: 785a ldrb r2, [r3, #1] 11fe4: f88d 2005 strb.w r2, [sp, #5] 11fe8: 789a ldrb r2, [r3, #2] 11fea: f88d 2006 strb.w r2, [sp, #6] 11fee: 78db ldrb r3, [r3, #3] 11ff0: f88d 3007 strb.w r3, [sp, #7] } 11ff4: 9801 ldr r0, [sp, #4] 11ff6: b002 add sp, #8 11ff8: 4770 bx lr ... 00011ffc <_lv_ll_ins_prev>: if(NULL == ll_p || NULL == n_act) return NULL; 11ffc: b360 cbz r0, 12058 <_lv_ll_ins_prev+0x5c> { 11ffe: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 12002: 4604 mov r4, r0 if(NULL == ll_p || NULL == n_act) return NULL; 12004: b351 cbz r1, 1205c <_lv_ll_ins_prev+0x60> 12006: 460d mov r5, r1 if(_lv_ll_get_head(ll_p) == n_act) { 12008: 6843 ldr r3, [r0, #4] 1200a: 4299 cmp r1, r3 1200c: d020 beq.n 12050 <_lv_ll_ins_prev+0x54> n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); 1200e: 6800 ldr r0, [r0, #0] 12010: 3008 adds r0, #8 12012: 4b15 ldr r3, [pc, #84] ; (12068 <_lv_ll_ins_prev+0x6c>) 12014: 4798 blx r3 if(n_new == NULL) return NULL; 12016: 4606 mov r6, r0 12018: b318 cbz r0, 12062 <_lv_ll_ins_prev+0x66> n_prev = _lv_ll_get_prev(ll_p, n_act); 1201a: 4629 mov r1, r5 1201c: 4620 mov r0, r4 1201e: 4b13 ldr r3, [pc, #76] ; (1206c <_lv_ll_ins_prev+0x70>) 12020: 4798 blx r3 12022: 4680 mov r8, r0 node_set_next(ll_p, n_prev, n_new); 12024: 4632 mov r2, r6 12026: 4601 mov r1, r0 12028: 4620 mov r0, r4 1202a: 4f11 ldr r7, [pc, #68] ; (12070 <_lv_ll_ins_prev+0x74>) 1202c: 47b8 blx r7 node_set_prev(ll_p, n_new, n_prev); 1202e: 4642 mov r2, r8 12030: 4631 mov r1, r6 12032: 4620 mov r0, r4 12034: f8df 8040 ldr.w r8, [pc, #64] ; 12078 <_lv_ll_ins_prev+0x7c> 12038: 47c0 blx r8 node_set_prev(ll_p, n_act, n_new); 1203a: 4632 mov r2, r6 1203c: 4629 mov r1, r5 1203e: 4620 mov r0, r4 12040: 47c0 blx r8 node_set_next(ll_p, n_new, n_act); 12042: 462a mov r2, r5 12044: 4631 mov r1, r6 12046: 4620 mov r0, r4 12048: 47b8 blx r7 n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); 1204a: 4630 mov r0, r6 1204c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} n_new = _lv_ll_ins_head(ll_p); 12050: 4b08 ldr r3, [pc, #32] ; (12074 <_lv_ll_ins_prev+0x78>) 12052: 4798 blx r3 12054: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(NULL == ll_p || NULL == n_act) return NULL; 12058: 2000 movs r0, #0 1205a: 4770 bx lr 1205c: 4608 mov r0, r1 1205e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} } 12062: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 12066: bf00 nop 12068: 000123c5 .word 0x000123c5 1206c: 00011fd1 .word 0x00011fd1 12070: 00011e61 .word 0x00011e61 12074: 00011ef9 .word 0x00011ef9 12078: 00011ea1 .word 0x00011ea1 0001207c <_lv_ll_remove>: { 1207c: b570 push {r4, r5, r6, lr} 1207e: 460d mov r5, r1 if(ll_p != NULL) { 12080: 4604 mov r4, r0 12082: b350 cbz r0, 120da <_lv_ll_remove+0x5e> if(_lv_ll_get_head(ll_p) == node_p) { 12084: 6843 ldr r3, [r0, #4] 12086: 4299 cmp r1, r3 12088: d029 beq.n 120de <_lv_ll_remove+0x62> else if(_lv_ll_get_tail(ll_p) == node_p) { 1208a: 6883 ldr r3, [r0, #8] 1208c: 4299 cmp r1, r3 1208e: d017 beq.n 120c0 <_lv_ll_remove+0x44> lv_ll_node_t * n_prev = _lv_ll_get_prev(ll_p, node_p); 12090: 4629 mov r1, r5 12092: 4620 mov r0, r4 12094: 4b18 ldr r3, [pc, #96] ; (120f8 <_lv_ll_remove+0x7c>) 12096: 4798 blx r3 12098: 4606 mov r6, r0 lv_ll_node_t * n_next = _lv_ll_get_next(ll_p, node_p); 1209a: 4629 mov r1, r5 1209c: 4620 mov r0, r4 1209e: 4b17 ldr r3, [pc, #92] ; (120fc <_lv_ll_remove+0x80>) 120a0: 4798 blx r3 120a2: 4605 mov r5, r0 node_set_next(ll_p, n_prev, n_next); 120a4: 4602 mov r2, r0 120a6: 4631 mov r1, r6 120a8: 4620 mov r0, r4 120aa: 4b15 ldr r3, [pc, #84] ; (12100 <_lv_ll_remove+0x84>) 120ac: 4798 blx r3 node_set_prev(ll_p, n_next, n_prev); 120ae: 4632 mov r2, r6 120b0: 4629 mov r1, r5 120b2: 4620 mov r0, r4 120b4: 4b13 ldr r3, [pc, #76] ; (12104 <_lv_ll_remove+0x88>) 120b6: 4798 blx r3 } 120b8: bd70 pop {r4, r5, r6, pc} ll_p->tail = NULL; 120ba: 2300 movs r3, #0 120bc: 60a3 str r3, [r4, #8] 120be: bd70 pop {r4, r5, r6, pc} ll_p->tail = _lv_ll_get_prev(ll_p, node_p); 120c0: 4b0d ldr r3, [pc, #52] ; (120f8 <_lv_ll_remove+0x7c>) 120c2: 4798 blx r3 120c4: 60a0 str r0, [r4, #8] if(ll_p->tail == NULL) { 120c6: b128 cbz r0, 120d4 <_lv_ll_remove+0x58> node_set_next(ll_p, ll_p->tail, NULL); 120c8: 2200 movs r2, #0 120ca: 4601 mov r1, r0 120cc: 4620 mov r0, r4 120ce: 4b0c ldr r3, [pc, #48] ; (12100 <_lv_ll_remove+0x84>) 120d0: 4798 blx r3 120d2: bd70 pop {r4, r5, r6, pc} ll_p->head = NULL; 120d4: 2300 movs r3, #0 120d6: 6063 str r3, [r4, #4] 120d8: bd70 pop {r4, r5, r6, pc} if(_lv_ll_get_head(ll_p) == node_p) { 120da: 2900 cmp r1, #0 120dc: d1d8 bne.n 12090 <_lv_ll_remove+0x14> ll_p->head = _lv_ll_get_next(ll_p, node_p); 120de: 4629 mov r1, r5 120e0: 4620 mov r0, r4 120e2: 4b06 ldr r3, [pc, #24] ; (120fc <_lv_ll_remove+0x80>) 120e4: 4798 blx r3 120e6: 6060 str r0, [r4, #4] if(ll_p->head == NULL) { 120e8: 2800 cmp r0, #0 120ea: d0e6 beq.n 120ba <_lv_ll_remove+0x3e> node_set_prev(ll_p, ll_p->head, NULL); 120ec: 2200 movs r2, #0 120ee: 4601 mov r1, r0 120f0: 4620 mov r0, r4 120f2: 4b04 ldr r3, [pc, #16] ; (12104 <_lv_ll_remove+0x88>) 120f4: 4798 blx r3 120f6: bd70 pop {r4, r5, r6, pc} 120f8: 00011fd1 .word 0x00011fd1 120fc: 00011fa5 .word 0x00011fa5 12100: 00011e61 .word 0x00011e61 12104: 00011ea1 .word 0x00011ea1 00012108 <_lv_ll_chg_list>: { 12108: b570 push {r4, r5, r6, lr} 1210a: 460c mov r4, r1 1210c: 4615 mov r5, r2 1210e: 461e mov r6, r3 _lv_ll_remove(ll_ori_p, node); 12110: 4611 mov r1, r2 12112: 4b17 ldr r3, [pc, #92] ; (12170 <_lv_ll_chg_list+0x68>) 12114: 4798 blx r3 if(head) { 12116: b1ae cbz r6, 12144 <_lv_ll_chg_list+0x3c> node_set_prev(ll_new_p, node, NULL); 12118: 2200 movs r2, #0 1211a: 4629 mov r1, r5 1211c: 4620 mov r0, r4 1211e: 4b15 ldr r3, [pc, #84] ; (12174 <_lv_ll_chg_list+0x6c>) 12120: 4798 blx r3 node_set_next(ll_new_p, node, ll_new_p->head); 12122: 6862 ldr r2, [r4, #4] 12124: 4629 mov r1, r5 12126: 4620 mov r0, r4 12128: 4b13 ldr r3, [pc, #76] ; (12178 <_lv_ll_chg_list+0x70>) 1212a: 4798 blx r3 if(ll_new_p->head != NULL) { /*If there is old head then before it goes the new*/ 1212c: 6861 ldr r1, [r4, #4] 1212e: b119 cbz r1, 12138 <_lv_ll_chg_list+0x30> node_set_prev(ll_new_p, ll_new_p->head, node); 12130: 462a mov r2, r5 12132: 4620 mov r0, r4 12134: 4b0f ldr r3, [pc, #60] ; (12174 <_lv_ll_chg_list+0x6c>) 12136: 4798 blx r3 ll_new_p->head = node; /*Set the new head in the dsc.*/ 12138: 6065 str r5, [r4, #4] if(ll_new_p->tail == NULL) { /*If there is no tail (first node) set the tail too*/ 1213a: 68a3 ldr r3, [r4, #8] 1213c: b103 cbz r3, 12140 <_lv_ll_chg_list+0x38> 1213e: bd70 pop {r4, r5, r6, pc} ll_new_p->tail = node; 12140: 60a5 str r5, [r4, #8] 12142: bd70 pop {r4, r5, r6, pc} node_set_prev(ll_new_p, node, ll_new_p->tail); 12144: 68a2 ldr r2, [r4, #8] 12146: 4629 mov r1, r5 12148: 4620 mov r0, r4 1214a: 4b0a ldr r3, [pc, #40] ; (12174 <_lv_ll_chg_list+0x6c>) 1214c: 4798 blx r3 node_set_next(ll_new_p, node, NULL); 1214e: 2200 movs r2, #0 12150: 4629 mov r1, r5 12152: 4620 mov r0, r4 12154: 4b08 ldr r3, [pc, #32] ; (12178 <_lv_ll_chg_list+0x70>) 12156: 4798 blx r3 if(ll_new_p->tail != NULL) { /*If there is old tail then after it goes the new*/ 12158: 68a1 ldr r1, [r4, #8] 1215a: b119 cbz r1, 12164 <_lv_ll_chg_list+0x5c> node_set_next(ll_new_p, ll_new_p->tail, node); 1215c: 462a mov r2, r5 1215e: 4620 mov r0, r4 12160: 4b05 ldr r3, [pc, #20] ; (12178 <_lv_ll_chg_list+0x70>) 12162: 4798 blx r3 ll_new_p->tail = node; /*Set the new tail in the dsc.*/ 12164: 60a5 str r5, [r4, #8] if(ll_new_p->head == NULL) { /*If there is no head (first node) set the head too*/ 12166: 6863 ldr r3, [r4, #4] 12168: 2b00 cmp r3, #0 1216a: d1e8 bne.n 1213e <_lv_ll_chg_list+0x36> ll_new_p->head = node; 1216c: 6065 str r5, [r4, #4] } 1216e: e7e6 b.n 1213e <_lv_ll_chg_list+0x36> 12170: 0001207d .word 0x0001207d 12174: 00011ea1 .word 0x00011ea1 12178: 00011e61 .word 0x00011e61 0001217c <_lv_ll_move_before>: if(n_act == n_after) return; /*Can't move before itself*/ 1217c: 4291 cmp r1, r2 1217e: d04c beq.n 1221a <_lv_ll_move_before+0x9e> { 12180: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 12184: 4617 mov r7, r2 12186: 460c mov r4, r1 12188: 4605 mov r5, r0 if(n_after != NULL) 1218a: b312 cbz r2, 121d2 <_lv_ll_move_before+0x56> n_before = _lv_ll_get_prev(ll_p, n_after); 1218c: 4611 mov r1, r2 1218e: 4b23 ldr r3, [pc, #140] ; (1221c <_lv_ll_move_before+0xa0>) 12190: 4798 blx r3 12192: 4606 mov r6, r0 if(n_act == n_before) return; /*Already before `n_after`*/ 12194: 4284 cmp r4, r0 12196: d01a beq.n 121ce <_lv_ll_move_before+0x52> _lv_ll_remove(ll_p, n_act); 12198: 4621 mov r1, r4 1219a: 4628 mov r0, r5 1219c: 4b20 ldr r3, [pc, #128] ; (12220 <_lv_ll_move_before+0xa4>) 1219e: 4798 blx r3 node_set_next(ll_p, n_before, n_act); 121a0: 4622 mov r2, r4 121a2: 4631 mov r1, r6 121a4: 4628 mov r0, r5 121a6: f8df 807c ldr.w r8, [pc, #124] ; 12224 <_lv_ll_move_before+0xa8> 121aa: 47c0 blx r8 node_set_prev(ll_p, n_act, n_before); 121ac: 4632 mov r2, r6 121ae: 4621 mov r1, r4 121b0: 4628 mov r0, r5 121b2: f8df 9074 ldr.w r9, [pc, #116] ; 12228 <_lv_ll_move_before+0xac> 121b6: 47c8 blx r9 node_set_prev(ll_p, n_after, n_act); 121b8: 4622 mov r2, r4 121ba: 4639 mov r1, r7 121bc: 4628 mov r0, r5 121be: 47c8 blx r9 node_set_next(ll_p, n_act, n_after); 121c0: 463a mov r2, r7 121c2: 4621 mov r1, r4 121c4: 4628 mov r0, r5 121c6: 47c0 blx r8 if(n_before == NULL) ll_p->head = n_act; 121c8: b306 cbz r6, 1220c <_lv_ll_move_before+0x90> 121ca: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 121ce: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} if(ll_p != NULL) { 121d2: b1f0 cbz r0, 12212 <_lv_ll_move_before+0x96> tail = ll_p->tail; 121d4: 6886 ldr r6, [r0, #8] if(n_act == n_before) return; /*Already before `n_after`*/ 121d6: 42b4 cmp r4, r6 121d8: d01d beq.n 12216 <_lv_ll_move_before+0x9a> _lv_ll_remove(ll_p, n_act); 121da: 4621 mov r1, r4 121dc: 4628 mov r0, r5 121de: 4b10 ldr r3, [pc, #64] ; (12220 <_lv_ll_move_before+0xa4>) 121e0: 4798 blx r3 node_set_next(ll_p, n_before, n_act); 121e2: 4622 mov r2, r4 121e4: 4631 mov r1, r6 121e6: 4628 mov r0, r5 121e8: 4f0e ldr r7, [pc, #56] ; (12224 <_lv_ll_move_before+0xa8>) 121ea: 47b8 blx r7 node_set_prev(ll_p, n_act, n_before); 121ec: 4632 mov r2, r6 121ee: 4621 mov r1, r4 121f0: 4628 mov r0, r5 121f2: f8df 8034 ldr.w r8, [pc, #52] ; 12228 <_lv_ll_move_before+0xac> 121f6: 47c0 blx r8 node_set_prev(ll_p, n_after, n_act); 121f8: 4622 mov r2, r4 121fa: 2100 movs r1, #0 121fc: 4628 mov r0, r5 121fe: 47c0 blx r8 node_set_next(ll_p, n_act, n_after); 12200: 2200 movs r2, #0 12202: 4621 mov r1, r4 12204: 4628 mov r0, r5 12206: 47b8 blx r7 if(n_after == NULL) ll_p->tail = n_act; 12208: 60ac str r4, [r5, #8] 1220a: e7dd b.n 121c8 <_lv_ll_move_before+0x4c> if(n_before == NULL) ll_p->head = n_act; 1220c: 606c str r4, [r5, #4] 1220e: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} void * tail = NULL; 12212: 4616 mov r6, r2 12214: e7df b.n 121d6 <_lv_ll_move_before+0x5a> 12216: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 1221a: 4770 bx lr 1221c: 00011fd1 .word 0x00011fd1 12220: 0001207d .word 0x0001207d 12224: 00011e61 .word 0x00011e61 12228: 00011ea1 .word 0x00011ea1 0001222c <_lv_ll_is_empty>: if(ll_p == NULL) return true; 1222c: b140 cbz r0, 12240 <_lv_ll_is_empty+0x14> if(ll_p->head == NULL && ll_p->tail == NULL) return true; 1222e: 6842 ldr r2, [r0, #4] 12230: b10a cbz r2, 12236 <_lv_ll_is_empty+0xa> return false; 12232: 2000 movs r0, #0 } 12234: 4770 bx lr if(ll_p->head == NULL && ll_p->tail == NULL) return true; 12236: 6880 ldr r0, [r0, #8] 12238: fab0 f080 clz r0, r0 1223c: 0940 lsrs r0, r0, #5 1223e: 4770 bx lr if(ll_p == NULL) return true; 12240: 2001 movs r0, #1 12242: 4770 bx lr 00012244 <_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, ...) { 12244: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 12248: b0c4 sub sp, #272 ; 0x110 if(level >= _LV_LOG_LEVEL_NUM) return; /*Invalid level*/ if(level >= LV_LOG_LEVEL) { 1224a: 1e44 subs r4, r0, #1 1224c: b2e4 uxtb r4, r4 1224e: 2c04 cmp r4, #4 12250: d815 bhi.n 1227e <_lv_log_add+0x3a> 12252: 461f mov r7, r3 12254: 4616 mov r6, r2 12256: 460d mov r5, r1 12258: 4680 mov r8, r0 va_list args; va_start(args, format); 1225a: ab4b add r3, sp, #300 ; 0x12c 1225c: 9303 str r3, [sp, #12] char buf[256]; lv_vsnprintf(buf, sizeof(buf), format, args); 1225e: 9a4a ldr r2, [sp, #296] ; 0x128 12260: f44f 7180 mov.w r1, #256 ; 0x100 12264: a804 add r0, sp, #16 12266: 4c07 ldr r4, [pc, #28] ; (12284 <_lv_log_add+0x40>) 12268: 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); 1226a: 4b07 ldr r3, [pc, #28] ; (12288 <_lv_log_add+0x44>) 1226c: 681c ldr r4, [r3, #0] 1226e: b134 cbz r4, 1227e <_lv_log_add+0x3a> 12270: ab04 add r3, sp, #16 12272: 9300 str r3, [sp, #0] 12274: 463b mov r3, r7 12276: 4632 mov r2, r6 12278: 4629 mov r1, r5 1227a: 4640 mov r0, r8 1227c: 47a0 blx r4 #endif } } 1227e: b044 add sp, #272 ; 0x110 12280: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 12284: 000135b5 .word 0x000135b5 12288: 20002b88 .word 0x20002b88 0001228c <_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; 1228c: 4b1b ldr r3, [pc, #108] ; (122fc <_lv_trigo_sin+0x70>) 1228e: fb83 2300 smull r2, r3, r3, r0 12292: 181a adds r2, r3, r0 12294: 17c3 asrs r3, r0, #31 12296: ebc3 2322 rsb r3, r3, r2, asr #8 1229a: f44f 72b4 mov.w r2, #360 ; 0x168 1229e: fb02 0013 mls r0, r2, r3, r0 122a2: b200 sxth r0, r0 if(angle < 0) angle = 360 + angle; 122a4: 2800 cmp r0, #0 122a6: bfbc itt lt 122a8: 1880 addlt r0, r0, r2 122aa: b200 sxthlt r0, r0 if(angle < 90) { 122ac: 2859 cmp r0, #89 ; 0x59 122ae: dd13 ble.n 122d8 <_lv_trigo_sin+0x4c> ret = sin0_90_table[angle]; } else if(angle >= 90 && angle < 180) { 122b0: b280 uxth r0, r0 122b2: f1a0 035a sub.w r3, r0, #90 ; 0x5a 122b6: b29b uxth r3, r3 122b8: 2b59 cmp r3, #89 ; 0x59 122ba: d911 bls.n 122e0 <_lv_trigo_sin+0x54> angle = 180 - angle; ret = sin0_90_table[angle]; } else if(angle >= 180 && angle < 270) { 122bc: f1a0 03b4 sub.w r3, r0, #180 ; 0xb4 122c0: b29b uxth r3, r3 122c2: 2b59 cmp r3, #89 ; 0x59 122c4: d913 bls.n 122ee <_lv_trigo_sin+0x62> angle = angle - 180; ret = -sin0_90_table[angle]; } else { /*angle >=270*/ angle = 360 - angle; 122c6: f5c0 70b4 rsb r0, r0, #360 ; 0x168 ret = -sin0_90_table[angle]; 122ca: b200 sxth r0, r0 122cc: 4b0c ldr r3, [pc, #48] ; (12300 <_lv_trigo_sin+0x74>) 122ce: f833 0010 ldrh.w r0, [r3, r0, lsl #1] 122d2: 4240 negs r0, r0 122d4: b200 sxth r0, r0 } return ret; } 122d6: 4770 bx lr ret = sin0_90_table[angle]; 122d8: 4b09 ldr r3, [pc, #36] ; (12300 <_lv_trigo_sin+0x74>) 122da: f933 0010 ldrsh.w r0, [r3, r0, lsl #1] 122de: 4770 bx lr angle = 180 - angle; 122e0: f1c0 00b4 rsb r0, r0, #180 ; 0xb4 ret = sin0_90_table[angle]; 122e4: b200 sxth r0, r0 122e6: 4b06 ldr r3, [pc, #24] ; (12300 <_lv_trigo_sin+0x74>) 122e8: f933 0010 ldrsh.w r0, [r3, r0, lsl #1] 122ec: 4770 bx lr ret = -sin0_90_table[angle]; 122ee: b21b sxth r3, r3 122f0: 4a03 ldr r2, [pc, #12] ; (12300 <_lv_trigo_sin+0x74>) 122f2: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 122f6: 4240 negs r0, r0 122f8: b200 sxth r0, r0 122fa: 4770 bx lr 122fc: b60b60b7 .word 0xb60b60b7 12300: 00029284 .word 0x00029284 00012304 <_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) { 12304: b430 push {r4, r5} x = x << 8; /*To get 4 bit precision. (sqrt(256) = 16 = 4 bit)*/ 12306: 0200 lsls r0, r0, #8 uint32_t root = 0; 12308: 2400 movs r4, #0 uint32_t trial; // http://ww1.microchip.com/...en/AppNotes/91040a.pdf do { trial = root + mask; 1230a: 1913 adds r3, r2, r4 if((uint32_t)trial * trial <= x) root = trial; 1230c: fb03 f503 mul.w r5, r3, r3 12310: 42a8 cmp r0, r5 12312: bf28 it cs 12314: 461c movcs r4, r3 mask = mask >> 1; } while(mask); 12316: 0852 lsrs r2, r2, #1 12318: d1f7 bne.n 1230a <_lv_sqrt+0x6> q->i = (uint32_t) root >> 4; 1231a: 0923 lsrs r3, r4, #4 1231c: 800b strh r3, [r1, #0] q->f = (uint32_t)(root & 0xf) << 4; 1231e: 0124 lsls r4, r4, #4 12320: b2e4 uxtb r4, r4 12322: 804c strh r4, [r1, #2] } 12324: bc30 pop {r4, r5} 12326: 4770 bx lr 00012328 : */ 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*/ 12328: 4603 mov r3, r0 1232a: b160 cbz r0, 12346 next_e = (lv_mem_ent_t *)work_mem; } else { /*Get the next entry */ uint8_t * data = &act_e->first_data; 1232c: 3004 adds r0, #4 next_e = (lv_mem_ent_t *)&data[act_e->header.s.d_size]; 1232e: 681b ldr r3, [r3, #0] 12330: eb00 0053 add.w r0, r0, r3, lsr #1 if(&next_e->first_data >= &work_mem[LV_MEM_SIZE]) next_e = NULL; 12334: 1d02 adds r2, r0, #4 12336: 4b05 ldr r3, [pc, #20] ; (1234c ) 12338: 681b ldr r3, [r3, #0] 1233a: f503 4380 add.w r3, r3, #16384 ; 0x4000 1233e: 429a cmp r2, r3 12340: bf28 it cs 12342: 2000 movcs r0, #0 } return next_e; } 12344: 4770 bx lr next_e = (lv_mem_ent_t *)work_mem; 12346: 4b01 ldr r3, [pc, #4] ; (1234c ) 12348: 6818 ldr r0, [r3, #0] 1234a: 4770 bx lr 1234c: 20002b8c .word 0x20002b8c 00012350 : size = size & (~0x7); size += 8; } #else /*Round the size up to 4*/ if(size & 0x3) { 12350: f011 0f03 tst.w r1, #3 size = size & (~0x3); 12354: bf1c itt ne 12356: f021 0103 bicne.w r1, r1, #3 size += 4; 1235a: 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)) { 1235c: 6803 ldr r3, [r0, #0] 1235e: f3c3 035e ubfx r3, r3, #1, #31 12362: 1d0a adds r2, r1, #4 12364: 4293 cmp r3, r2 12366: d017 beq.n 12398 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) { 12368: 4299 cmp r1, r3 1236a: d016 beq.n 1239a { 1236c: b410 push {r4} uint8_t * e_data = &e->first_data; 1236e: 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; 12370: 5c53 ldrb r3, [r2, r1] 12372: f36f 0300 bfc r3, #0, #1 12376: 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); 12378: 6803 ldr r3, [r0, #0] 1237a: f3c3 035e ubfx r3, r3, #1, #31 1237e: 3b04 subs r3, #4 12380: 1a5b subs r3, r3, r1 12382: 5854 ldr r4, [r2, r1] 12384: f363 045f bfi r4, r3, #1, #31 12388: 5054 str r4, [r2, r1] } /* Set the new size for the original entry */ e->header.s.d_size = (uint32_t)size; 1238a: 6803 ldr r3, [r0, #0] 1238c: f361 035f bfi r3, r1, #1, #31 12390: 6003 str r3, [r0, #0] } 12392: f85d 4b04 ldr.w r4, [sp], #4 12396: 4770 bx lr size = e->header.s.d_size; 12398: 4611 mov r1, r2 e->header.s.d_size = (uint32_t)size; 1239a: 6803 ldr r3, [r0, #0] 1239c: f361 035f bfi r3, r1, #1, #31 123a0: 6003 str r3, [r0, #0] 123a2: 4770 bx lr 000123a4 <_lv_mem_init>: work_mem = (uint8_t *)work_mem_int; 123a4: 4b06 ldr r3, [pc, #24] ; (123c0 <_lv_mem_init+0x1c>) 123a6: 1d1a adds r2, r3, #4 123a8: 601a str r2, [r3, #0] full->header.s.used = 0; 123aa: 791a ldrb r2, [r3, #4] 123ac: f36f 0200 bfc r2, #0, #1 123b0: 711a strb r2, [r3, #4] full->header.s.d_size = LV_MEM_SIZE - sizeof(lv_mem_header_t); 123b2: 685a ldr r2, [r3, #4] 123b4: f643 71fc movw r1, #16380 ; 0x3ffc 123b8: f361 025f bfi r2, r1, #1, #31 123bc: 605a str r2, [r3, #4] 123be: 4770 bx lr 123c0: 20002b8c .word 0x20002b8c 000123c4 : if(size == 0) { 123c4: 2800 cmp r0, #0 123c6: d02e beq.n 12426 { 123c8: b5f0 push {r4, r5, r6, r7, lr} 123ca: b083 sub sp, #12 123cc: 4605 mov r5, r0 if(size & 0x3) { 123ce: f010 0f03 tst.w r0, #3 size = size & (~0x3); 123d2: bf1c itt ne 123d4: f020 0503 bicne.w r5, r0, #3 size += 4; 123d8: 3504 addne r5, #4 lv_mem_ent_t * e = NULL; 123da: 2400 movs r4, #0 e = ent_get_next(e); 123dc: 4e13 ldr r6, [pc, #76] ; (1242c ) ent_trunc(e, size); 123de: 4f14 ldr r7, [pc, #80] ; (12430 ) 123e0: e008 b.n 123f4 123e2: 4629 mov r1, r5 123e4: 47b8 blx r7 e->header.s.used = 1; 123e6: 7823 ldrb r3, [r4, #0] 123e8: f043 0301 orr.w r3, r3, #1 123ec: 4620 mov r0, r4 123ee: f800 3b04 strb.w r3, [r0], #4 } while(e != NULL && alloc == NULL); 123f2: b9b0 cbnz r0, 12422 e = ent_get_next(e); 123f4: 4620 mov r0, r4 123f6: 47b0 blx r6 if(e != NULL) { 123f8: 4604 mov r4, r0 123fa: b148 cbz r0, 12410 if(e->header.s.used == 0 && e->header.s.d_size >= size) { 123fc: 7803 ldrb r3, [r0, #0] 123fe: f013 0f01 tst.w r3, #1 12402: d1f7 bne.n 123f4 12404: 6803 ldr r3, [r0, #0] 12406: f3c3 035e ubfx r3, r3, #1, #31 1240a: 429d cmp r5, r3 1240c: d9e9 bls.n 123e2 1240e: e7f1 b.n 123f4 if(alloc == NULL) LV_LOG_WARN("Couldn't allocate memory"); 12410: 4b08 ldr r3, [pc, #32] ; (12434 ) 12412: 9300 str r3, [sp, #0] 12414: 4b08 ldr r3, [pc, #32] ; (12438 ) 12416: 22d1 movs r2, #209 ; 0xd1 12418: 4908 ldr r1, [pc, #32] ; (1243c ) 1241a: 2002 movs r0, #2 1241c: 4c08 ldr r4, [pc, #32] ; (12440 ) 1241e: 47a0 blx r4 return alloc; 12420: 2000 movs r0, #0 } 12422: b003 add sp, #12 12424: bdf0 pop {r4, r5, r6, r7, pc} return &zero_mem; 12426: 4807 ldr r0, [pc, #28] ; (12444 ) 12428: 4770 bx lr 1242a: bf00 nop 1242c: 00012329 .word 0x00012329 12430: 00012351 .word 0x00012351 12434: 000293a8 .word 0x000293a8 12438: 0002933c .word 0x0002933c 1243c: 00029380 .word 0x00029380 12440: 00012245 .word 0x00012245 12444: 20006b90 .word 0x20006b90 00012448 : { 12448: b538 push {r3, r4, r5, lr} e_free = ent_get_next(NULL); 1244a: 2000 movs r0, #0 1244c: 4b16 ldr r3, [pc, #88] ; (124a8 ) 1244e: 4798 blx r3 12450: 4604 mov r4, r0 e_next = ent_get_next(e_free); 12452: 4d15 ldr r5, [pc, #84] ; (124a8 ) 12454: e01b b.n 1248e 12456: bd38 pop {r3, r4, r5, pc} 12458: 4620 mov r0, r4 1245a: 47a8 blx r5 while(e_next != NULL) { 1245c: 4601 mov r1, r0 1245e: b308 cbz r0, 124a4 if(e_next->header.s.used == 0) { 12460: 7803 ldrb r3, [r0, #0] 12462: f013 0f01 tst.w r3, #1 12466: d111 bne.n 1248c e_free->header.s.d_size += e_next->header.s.d_size + sizeof(e_next->header); 12468: 6823 ldr r3, [r4, #0] 1246a: f3c3 025e ubfx r2, r3, #1, #31 1246e: 3204 adds r2, #4 12470: 6808 ldr r0, [r1, #0] 12472: eb02 0250 add.w r2, r2, r0, lsr #1 12476: f362 035f bfi r3, r2, #1, #31 1247a: 6023 str r3, [r4, #0] e_next = ent_get_next(e_next); 1247c: 4608 mov r0, r1 1247e: 47a8 blx r5 while(e_next != NULL) { 12480: 4601 mov r1, r0 12482: b170 cbz r0, 124a2 if(e_next->header.s.used == 0) { 12484: 780b ldrb r3, [r1, #0] 12486: f013 0f01 tst.w r3, #1 1248a: d0ed beq.n 12468 { 1248c: 460c mov r4, r1 while(e_free != NULL) { 1248e: 2c00 cmp r4, #0 12490: d0e1 beq.n 12456 if(e_free->header.s.used != 0) { 12492: 7823 ldrb r3, [r4, #0] 12494: f013 0f01 tst.w r3, #1 12498: d0de beq.n 12458 e_free = ent_get_next(e_free); 1249a: 4620 mov r0, r4 1249c: 47a8 blx r5 1249e: 4604 mov r4, r0 124a0: e7f5 b.n 1248e 124a2: bd38 pop {r3, r4, r5, pc} 124a4: bd38 pop {r3, r4, r5, pc} 124a6: bf00 nop 124a8: 00012329 .word 0x00012329 000124ac : { 124ac: b538 push {r3, r4, r5, lr} if(data == &zero_mem) return; 124ae: 4b1e ldr r3, [pc, #120] ; (12528 ) 124b0: 4298 cmp r0, r3 124b2: d038 beq.n 12526 if(data == NULL) return; 124b4: 2800 cmp r0, #0 124b6: d036 beq.n 12526 124b8: 4604 mov r4, r0 e->header.s.used = 0; 124ba: f810 3c04 ldrb.w r3, [r0, #-4] 124be: f36f 0300 bfc r3, #0, #1 124c2: f800 3c04 strb.w r3, [r0, #-4] full_defrag_cnt++; 124c6: 4a19 ldr r2, [pc, #100] ; (1252c ) 124c8: f8b2 3d20 ldrh.w r3, [r2, #3360] ; 0xd20 124cc: 3301 adds r3, #1 124ce: b29b uxth r3, r3 124d0: f8a2 3d20 strh.w r3, [r2, #3360] ; 0xd20 if(full_defrag_cnt < LV_MEM_FULL_DEFRAG_CNT) { 124d4: 2b0f cmp r3, #15 124d6: d820 bhi.n 1251a e_next = ent_get_next(e); 124d8: 3804 subs r0, #4 124da: 4b15 ldr r3, [pc, #84] ; (12530 ) 124dc: 4798 blx r3 while(e_next != NULL) { 124de: 4601 mov r1, r0 124e0: b308 cbz r0, 12526 if(e_next->header.s.used == 0) { 124e2: 7803 ldrb r3, [r0, #0] 124e4: f013 0f01 tst.w r3, #1 124e8: d115 bne.n 12516 e_next = ent_get_next(e_next); 124ea: 4d11 ldr r5, [pc, #68] ; (12530 ) e->header.s.d_size += e_next->header.s.d_size + sizeof(e->header); 124ec: f854 3c04 ldr.w r3, [r4, #-4] 124f0: f3c3 025e ubfx r2, r3, #1, #31 124f4: 3204 adds r2, #4 124f6: 6808 ldr r0, [r1, #0] 124f8: eb02 0250 add.w r2, r2, r0, lsr #1 124fc: f362 035f bfi r3, r2, #1, #31 12500: f844 3c04 str.w r3, [r4, #-4] e_next = ent_get_next(e_next); 12504: 4608 mov r0, r1 12506: 47a8 blx r5 while(e_next != NULL) { 12508: 4601 mov r1, r0 1250a: b128 cbz r0, 12518 if(e_next->header.s.used == 0) { 1250c: 780b ldrb r3, [r1, #0] 1250e: f013 0f01 tst.w r3, #1 12512: d0eb beq.n 124ec 12514: bd38 pop {r3, r4, r5, pc} 12516: bd38 pop {r3, r4, r5, pc} 12518: bd38 pop {r3, r4, r5, pc} full_defrag_cnt = 0; 1251a: 2200 movs r2, #0 1251c: 4b03 ldr r3, [pc, #12] ; (1252c ) 1251e: f8a3 2d20 strh.w r2, [r3, #3360] ; 0xd20 lv_mem_defrag(); 12522: 4b04 ldr r3, [pc, #16] ; (12534 ) 12524: 4798 blx r3 12526: bd38 pop {r3, r4, r5, pc} 12528: 20006b90 .word 0x20006b90 1252c: 20005e74 .word 0x20005e74 12530: 00012329 .word 0x00012329 12534: 00012449 .word 0x00012449 00012538 <_lv_mem_get_size>: if(data == NULL) return 0; 12538: b138 cbz r0, 1254a <_lv_mem_get_size+0x12> if(data == &zero_mem) return 0; 1253a: 4a06 ldr r2, [pc, #24] ; (12554 <_lv_mem_get_size+0x1c>) 1253c: 4290 cmp r0, r2 1253e: d006 beq.n 1254e <_lv_mem_get_size+0x16> return e->header.s.d_size; 12540: f850 0c04 ldr.w r0, [r0, #-4] 12544: f3c0 005e ubfx r0, r0, #1, #31 12548: 4770 bx lr if(data == NULL) return 0; 1254a: 2000 movs r0, #0 1254c: 4770 bx lr if(data == &zero_mem) return 0; 1254e: 2000 movs r0, #0 } 12550: 4770 bx lr 12552: bf00 nop 12554: 20006b90 .word 0x20006b90 00012558 <_lv_mem_buf_release>: if(mem_buf_small[i].p == p) { 12558: 4b1b ldr r3, [pc, #108] ; (125c8 <_lv_mem_buf_release+0x70>) 1255a: 681b ldr r3, [r3, #0] 1255c: 4298 cmp r0, r3 1255e: d020 beq.n 125a2 <_lv_mem_buf_release+0x4a> 12560: 4b19 ldr r3, [pc, #100] ; (125c8 <_lv_mem_buf_release+0x70>) 12562: 689b ldr r3, [r3, #8] 12564: 4283 cmp r3, r0 12566: bf08 it eq 12568: 2201 moveq r2, #1 1256a: d01b beq.n 125a4 <_lv_mem_buf_release+0x4c> { 1256c: b510 push {r4, lr} 1256e: b082 sub sp, #8 if(LV_GC_ROOT(_lv_mem_buf[i]).p == p) { 12570: 4b16 ldr r3, [pc, #88] ; (125cc <_lv_mem_buf_release+0x74>) 12572: 681b ldr r3, [r3, #0] 12574: 4298 cmp r0, r3 12576: d01d beq.n 125b4 <_lv_mem_buf_release+0x5c> 12578: 2301 movs r3, #1 1257a: 4914 ldr r1, [pc, #80] ; (125cc <_lv_mem_buf_release+0x74>) 1257c: 461c mov r4, r3 1257e: f851 2033 ldr.w r2, [r1, r3, lsl #3] 12582: 4290 cmp r0, r2 12584: d017 beq.n 125b6 <_lv_mem_buf_release+0x5e> 12586: 3301 adds r3, #1 for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { 12588: 2b10 cmp r3, #16 1258a: d1f7 bne.n 1257c <_lv_mem_buf_release+0x24> LV_LOG_ERROR("lv_mem_buf_release: p is not a known buffer") 1258c: 4b10 ldr r3, [pc, #64] ; (125d0 <_lv_mem_buf_release+0x78>) 1258e: 9300 str r3, [sp, #0] 12590: 4b10 ldr r3, [pc, #64] ; (125d4 <_lv_mem_buf_release+0x7c>) 12592: f240 2232 movw r2, #562 ; 0x232 12596: 4910 ldr r1, [pc, #64] ; (125d8 <_lv_mem_buf_release+0x80>) 12598: 2003 movs r0, #3 1259a: 4c10 ldr r4, [pc, #64] ; (125dc <_lv_mem_buf_release+0x84>) 1259c: 47a0 blx r4 } 1259e: b002 add sp, #8 125a0: bd10 pop {r4, pc} if(mem_buf_small[i].p == p) { 125a2: 2200 movs r2, #0 mem_buf_small[i].used = 0; 125a4: 4b08 ldr r3, [pc, #32] ; (125c8 <_lv_mem_buf_release+0x70>) 125a6: eb03 03c2 add.w r3, r3, r2, lsl #3 125aa: 799a ldrb r2, [r3, #6] 125ac: f36f 0200 bfc r2, #0, #1 125b0: 719a strb r2, [r3, #6] return; 125b2: 4770 bx lr if(LV_GC_ROOT(_lv_mem_buf[i]).p == p) { 125b4: 2400 movs r4, #0 LV_GC_ROOT(_lv_mem_buf[i]).used = 0; 125b6: 4b05 ldr r3, [pc, #20] ; (125cc <_lv_mem_buf_release+0x74>) 125b8: eb03 04c4 add.w r4, r3, r4, lsl #3 125bc: 79a3 ldrb r3, [r4, #6] 125be: f36f 0300 bfc r3, #0, #1 125c2: 71a3 strb r3, [r4, #6] return; 125c4: e7eb b.n 1259e <_lv_mem_buf_release+0x46> 125c6: bf00 nop 125c8: 20000044 .word 0x20000044 125cc: 20006cb0 .word 0x20006cb0 125d0: 000293c4 .word 0x000293c4 125d4: 0002934c .word 0x0002934c 125d8: 00029380 .word 0x00029380 125dc: 00012245 .word 0x00012245 000125e0 <_lv_mem_buf_free_all>: { 125e0: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} mem_buf_small[i].used = 0; 125e4: 4b12 ldr r3, [pc, #72] ; (12630 <_lv_mem_buf_free_all+0x50>) 125e6: 799a ldrb r2, [r3, #6] 125e8: f36f 0200 bfc r2, #0, #1 125ec: 719a strb r2, [r3, #6] 125ee: 7b9a ldrb r2, [r3, #14] 125f0: f36f 0200 bfc r2, #0, #1 125f4: 739a strb r2, [r3, #14] 125f6: 4c0f ldr r4, [pc, #60] ; (12634 <_lv_mem_buf_free_all+0x54>) 125f8: 2500 movs r5, #0 lv_mem_free(LV_GC_ROOT(_lv_mem_buf[i]).p); 125fa: f8df 803c ldr.w r8, [pc, #60] ; 12638 <_lv_mem_buf_free_all+0x58> LV_GC_ROOT(_lv_mem_buf[i]).p = NULL; 125fe: 462e mov r6, r5 LV_GC_ROOT(_lv_mem_buf[i]).used = 0; 12600: 1f27 subs r7, r4, #4 12602: e003 b.n 1260c <_lv_mem_buf_free_all+0x2c> 12604: 3501 adds r5, #1 12606: 3408 adds r4, #8 for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { 12608: 2d10 cmp r5, #16 1260a: d00e beq.n 1262a <_lv_mem_buf_free_all+0x4a> if(LV_GC_ROOT(_lv_mem_buf[i]).p) { 1260c: f854 0c04 ldr.w r0, [r4, #-4] 12610: 2800 cmp r0, #0 12612: d0f7 beq.n 12604 <_lv_mem_buf_free_all+0x24> lv_mem_free(LV_GC_ROOT(_lv_mem_buf[i]).p); 12614: 47c0 blx r8 LV_GC_ROOT(_lv_mem_buf[i]).p = NULL; 12616: f844 6c04 str.w r6, [r4, #-4] LV_GC_ROOT(_lv_mem_buf[i]).used = 0; 1261a: eb07 03c5 add.w r3, r7, r5, lsl #3 1261e: 799a ldrb r2, [r3, #6] 12620: f366 0200 bfi r2, r6, #0, #1 12624: 719a strb r2, [r3, #6] LV_GC_ROOT(_lv_mem_buf[i]).size = 0; 12626: 8026 strh r6, [r4, #0] 12628: e7ec b.n 12604 <_lv_mem_buf_free_all+0x24> } 1262a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 1262e: bf00 nop 12630: 20000044 .word 0x20000044 12634: 20006cb4 .word 0x20006cb4 12638: 000124ad .word 0x000124ad 0001263c <_lv_memcpy>: { 1263c: b4f0 push {r4, r5, r6, r7} lv_uintptr_t d_align = (lv_uintptr_t)d8 & ALIGN_MASK; 1263e: f000 0303 and.w r3, r0, #3 lv_uintptr_t s_align = (lv_uintptr_t)s8 & ALIGN_MASK; 12642: f001 0403 and.w r4, r1, #3 if(s_align != d_align) { 12646: 42a3 cmp r3, r4 12648: f000 80a6 beq.w 12798 <_lv_memcpy+0x15c> while(len > 32) { 1264c: 2a20 cmp r2, #32 1264e: f240 80a1 bls.w 12794 <_lv_memcpy+0x158> 12652: f100 0420 add.w r4, r0, #32 12656: f101 0320 add.w r3, r1, #32 1265a: 4615 mov r5, r2 REPEAT8(COPY8); 1265c: f813 6c20 ldrb.w r6, [r3, #-32] 12660: f804 6c20 strb.w r6, [r4, #-32] 12664: f813 6c1f ldrb.w r6, [r3, #-31] 12668: f804 6c1f strb.w r6, [r4, #-31] 1266c: f813 6c1e ldrb.w r6, [r3, #-30] 12670: f804 6c1e strb.w r6, [r4, #-30] 12674: f813 6c1d ldrb.w r6, [r3, #-29] 12678: f804 6c1d strb.w r6, [r4, #-29] 1267c: f813 6c1c ldrb.w r6, [r3, #-28] 12680: f804 6c1c strb.w r6, [r4, #-28] 12684: f813 6c1b ldrb.w r6, [r3, #-27] 12688: f804 6c1b strb.w r6, [r4, #-27] 1268c: f813 6c1a ldrb.w r6, [r3, #-26] 12690: f804 6c1a strb.w r6, [r4, #-26] 12694: f813 6c19 ldrb.w r6, [r3, #-25] 12698: f804 6c19 strb.w r6, [r4, #-25] REPEAT8(COPY8); 1269c: f813 6c18 ldrb.w r6, [r3, #-24] 126a0: f804 6c18 strb.w r6, [r4, #-24] 126a4: f813 6c17 ldrb.w r6, [r3, #-23] 126a8: f804 6c17 strb.w r6, [r4, #-23] 126ac: f813 6c16 ldrb.w r6, [r3, #-22] 126b0: f804 6c16 strb.w r6, [r4, #-22] 126b4: f813 6c15 ldrb.w r6, [r3, #-21] 126b8: f804 6c15 strb.w r6, [r4, #-21] 126bc: f813 6c14 ldrb.w r6, [r3, #-20] 126c0: f804 6c14 strb.w r6, [r4, #-20] 126c4: f813 6c13 ldrb.w r6, [r3, #-19] 126c8: f804 6c13 strb.w r6, [r4, #-19] 126cc: f813 6c12 ldrb.w r6, [r3, #-18] 126d0: f804 6c12 strb.w r6, [r4, #-18] 126d4: f813 6c11 ldrb.w r6, [r3, #-17] 126d8: f804 6c11 strb.w r6, [r4, #-17] REPEAT8(COPY8); 126dc: f813 6c10 ldrb.w r6, [r3, #-16] 126e0: f804 6c10 strb.w r6, [r4, #-16] 126e4: f813 6c0f ldrb.w r6, [r3, #-15] 126e8: f804 6c0f strb.w r6, [r4, #-15] 126ec: f813 6c0e ldrb.w r6, [r3, #-14] 126f0: f804 6c0e strb.w r6, [r4, #-14] 126f4: f813 6c0d ldrb.w r6, [r3, #-13] 126f8: f804 6c0d strb.w r6, [r4, #-13] 126fc: f813 6c0c ldrb.w r6, [r3, #-12] 12700: f804 6c0c strb.w r6, [r4, #-12] 12704: f813 6c0b ldrb.w r6, [r3, #-11] 12708: f804 6c0b strb.w r6, [r4, #-11] 1270c: f813 6c0a ldrb.w r6, [r3, #-10] 12710: f804 6c0a strb.w r6, [r4, #-10] 12714: f813 6c09 ldrb.w r6, [r3, #-9] 12718: f804 6c09 strb.w r6, [r4, #-9] REPEAT8(COPY8); 1271c: f813 6c08 ldrb.w r6, [r3, #-8] 12720: f804 6c08 strb.w r6, [r4, #-8] 12724: f813 6c07 ldrb.w r6, [r3, #-7] 12728: f804 6c07 strb.w r6, [r4, #-7] 1272c: f813 6c06 ldrb.w r6, [r3, #-6] 12730: f804 6c06 strb.w r6, [r4, #-6] 12734: f813 6c05 ldrb.w r6, [r3, #-5] 12738: f804 6c05 strb.w r6, [r4, #-5] 1273c: f813 6c04 ldrb.w r6, [r3, #-4] 12740: f804 6c04 strb.w r6, [r4, #-4] 12744: f813 6c03 ldrb.w r6, [r3, #-3] 12748: f804 6c03 strb.w r6, [r4, #-3] 1274c: f813 6c02 ldrb.w r6, [r3, #-2] 12750: f804 6c02 strb.w r6, [r4, #-2] 12754: f813 6c01 ldrb.w r6, [r3, #-1] 12758: f804 6c01 strb.w r6, [r4, #-1] len -= 32; 1275c: 3d20 subs r5, #32 1275e: 3420 adds r4, #32 12760: 3320 adds r3, #32 while(len > 32) { 12762: 2d20 cmp r5, #32 12764: f63f af7a bhi.w 1265c <_lv_memcpy+0x20> 12768: f1a2 0521 sub.w r5, r2, #33 ; 0x21 1276c: f025 041f bic.w r4, r5, #31 12770: 3420 adds r4, #32 12772: 1903 adds r3, r0, r4 12774: 4421 add r1, r4 12776: 3a20 subs r2, #32 12778: f025 051f bic.w r5, r5, #31 1277c: 1b52 subs r2, r2, r5 while(len) { 1277e: b13a cbz r2, 12790 <_lv_memcpy+0x154> 12780: 3901 subs r1, #1 12782: 441a add r2, r3 COPY8 12784: f811 4f01 ldrb.w r4, [r1, #1]! 12788: f803 4b01 strb.w r4, [r3], #1 while(len) { 1278c: 429a cmp r2, r3 1278e: d1f9 bne.n 12784 <_lv_memcpy+0x148> } 12790: bcf0 pop {r4, r5, r6, r7} 12792: 4770 bx lr while(len > 32) { 12794: 4603 mov r3, r0 12796: e7f2 b.n 1277e <_lv_memcpy+0x142> if(d_align) { 12798: 2b00 cmp r3, #0 1279a: d15b bne.n 12854 <_lv_memcpy+0x218> uint8_t * d8 = dst; 1279c: 4605 mov r5, r0 while(len > 32) { 1279e: 2a20 cmp r2, #32 127a0: d934 bls.n 1280c <_lv_memcpy+0x1d0> 127a2: f105 0420 add.w r4, r5, #32 127a6: f101 0320 add.w r3, r1, #32 127aa: 4616 mov r6, r2 REPEAT8(COPY32) 127ac: f853 7c20 ldr.w r7, [r3, #-32] 127b0: f844 7c20 str.w r7, [r4, #-32] 127b4: f853 7c1c ldr.w r7, [r3, #-28] 127b8: f844 7c1c str.w r7, [r4, #-28] 127bc: f853 7c18 ldr.w r7, [r3, #-24] 127c0: f844 7c18 str.w r7, [r4, #-24] 127c4: f853 7c14 ldr.w r7, [r3, #-20] 127c8: f844 7c14 str.w r7, [r4, #-20] 127cc: f853 7c10 ldr.w r7, [r3, #-16] 127d0: f844 7c10 str.w r7, [r4, #-16] 127d4: f853 7c0c ldr.w r7, [r3, #-12] 127d8: f844 7c0c str.w r7, [r4, #-12] 127dc: f853 7c08 ldr.w r7, [r3, #-8] 127e0: f844 7c08 str.w r7, [r4, #-8] 127e4: f853 7c04 ldr.w r7, [r3, #-4] 127e8: f844 7c04 str.w r7, [r4, #-4] len -= 32; 127ec: 3e20 subs r6, #32 127ee: 3420 adds r4, #32 127f0: 3320 adds r3, #32 while(len > 32) { 127f2: 2e20 cmp r6, #32 127f4: d8da bhi.n 127ac <_lv_memcpy+0x170> 127f6: f1a2 0321 sub.w r3, r2, #33 ; 0x21 127fa: f023 041f bic.w r4, r3, #31 127fe: 3420 adds r4, #32 12800: 4425 add r5, r4 12802: 4421 add r1, r4 12804: 3a20 subs r2, #32 12806: f023 031f bic.w r3, r3, #31 1280a: 1ad2 subs r2, r2, r3 while(len > 4) { 1280c: 2a04 cmp r2, #4 1280e: d932 bls.n 12876 <_lv_memcpy+0x23a> 12810: 1f0e subs r6, r1, #4 12812: 462c mov r4, r5 12814: 4613 mov r3, r2 COPY32; 12816: f856 7f04 ldr.w r7, [r6, #4]! 1281a: f844 7b04 str.w r7, [r4], #4 len -= 4; 1281e: 3b04 subs r3, #4 while(len > 4) { 12820: 2b04 cmp r3, #4 12822: d8f8 bhi.n 12816 <_lv_memcpy+0x1da> 12824: 1f54 subs r4, r2, #5 12826: f024 0303 bic.w r3, r4, #3 1282a: 3304 adds r3, #4 1282c: 3a04 subs r2, #4 1282e: f024 0403 bic.w r4, r4, #3 12832: 1b12 subs r2, r2, r4 COPY32; 12834: 4419 add r1, r3 12836: 442b add r3, r5 while(len) { 12838: 2a00 cmp r2, #0 1283a: d0a9 beq.n 12790 <_lv_memcpy+0x154> 1283c: 3901 subs r1, #1 1283e: 441a add r2, r3 COPY8 12840: f811 4f01 ldrb.w r4, [r1, #1]! 12844: f803 4b01 strb.w r4, [r3], #1 while(len) { 12848: 4293 cmp r3, r2 1284a: d1f9 bne.n 12840 <_lv_memcpy+0x204> 1284c: e7a0 b.n 12790 <_lv_memcpy+0x154> COPY8; 1284e: 4629 mov r1, r5 12850: 461d mov r5, r3 12852: e7a4 b.n 1279e <_lv_memcpy+0x162> while(d_align && len) { 12854: f1c3 0304 rsb r3, r3, #4 12858: b17a cbz r2, 1287a <_lv_memcpy+0x23e> 1285a: 18c4 adds r4, r0, r3 1285c: 4603 mov r3, r0 COPY8; 1285e: f811 5b01 ldrb.w r5, [r1], #1 12862: f803 5b01 strb.w r5, [r3], #1 12866: 460d mov r5, r1 len--; 12868: 3a01 subs r2, #1 while(d_align && len) { 1286a: 42a3 cmp r3, r4 1286c: d0ef beq.n 1284e <_lv_memcpy+0x212> 1286e: 2a00 cmp r2, #0 12870: d1f5 bne.n 1285e <_lv_memcpy+0x222> while(len > 4) { 12872: 2200 movs r2, #0 12874: e7e0 b.n 12838 <_lv_memcpy+0x1fc> 12876: 462b mov r3, r5 12878: e7de b.n 12838 <_lv_memcpy+0x1fc> uint8_t * d8 = dst; 1287a: 4603 mov r3, r0 1287c: e7f9 b.n 12872 <_lv_memcpy+0x236> ... 00012880 : { 12880: b5f0 push {r4, r5, r6, r7, lr} 12882: b083 sub sp, #12 12884: 4604 mov r4, r0 12886: 460d mov r5, r1 if(new_size & 0x3) { 12888: f011 0f03 tst.w r1, #3 new_size = new_size & (~0x3); 1288c: bf1c itt ne 1288e: f021 0503 bicne.w r5, r1, #3 new_size += 4; 12892: 3504 addne r5, #4 if(data_p != NULL) { 12894: b138 cbz r0, 128a6 if(e->header.s.used == 0) { 12896: f810 3c04 ldrb.w r3, [r0, #-4] 1289a: f003 0301 and.w r3, r3, #1 data_p = NULL; 1289e: 2b00 cmp r3, #0 128a0: bf14 ite ne 128a2: 4604 movne r4, r0 128a4: 2400 moveq r4, #0 uint32_t old_size = _lv_mem_get_size(data_p); 128a6: 4620 mov r0, r4 128a8: 4b15 ldr r3, [pc, #84] ; (12900 ) 128aa: 4798 blx r3 128ac: 4606 mov r6, r0 if(old_size == new_size) return data_p; /*Also avoid reallocating the same memory*/ 128ae: 4285 cmp r5, r0 128b0: d024 beq.n 128fc if(new_size < old_size) { 128b2: d311 bcc.n 128d8 new_p = lv_mem_alloc(new_size); 128b4: 4628 mov r0, r5 128b6: 4b13 ldr r3, [pc, #76] ; (12904 ) 128b8: 4798 blx r3 if(new_p == NULL) { 128ba: 4607 mov r7, r0 128bc: b1a0 cbz r0, 128e8 if(data_p != NULL) { 128be: b184 cbz r4, 128e2 if(old_size != 0) { 128c0: b17e cbz r6, 128e2 _lv_memcpy(new_p, data_p, LV_MATH_MIN(new_size, old_size)); 128c2: 462a mov r2, r5 128c4: 42b5 cmp r5, r6 128c6: bf28 it cs 128c8: 4632 movcs r2, r6 128ca: 4621 mov r1, r4 128cc: 4b0e ldr r3, [pc, #56] ; (12908 ) 128ce: 4798 blx r3 lv_mem_free(data_p); 128d0: 4620 mov r0, r4 128d2: 4b0e ldr r3, [pc, #56] ; (1290c ) 128d4: 4798 blx r3 128d6: e004 b.n 128e2 ent_trunc(e, new_size); 128d8: 4629 mov r1, r5 128da: 1f20 subs r0, r4, #4 128dc: 4b0c ldr r3, [pc, #48] ; (12910 ) 128de: 4798 blx r3 return &e->first_data; 128e0: 4627 mov r7, r4 } 128e2: 4638 mov r0, r7 128e4: b003 add sp, #12 128e6: bdf0 pop {r4, r5, r6, r7, pc} LV_LOG_WARN("Couldn't allocate memory"); 128e8: 4b0a ldr r3, [pc, #40] ; (12914 ) 128ea: 9300 str r3, [sp, #0] 128ec: 4b0a ldr r3, [pc, #40] ; (12918 ) 128ee: f240 123f movw r2, #319 ; 0x13f 128f2: 490a ldr r1, [pc, #40] ; (1291c ) 128f4: 2002 movs r0, #2 128f6: 4c0a ldr r4, [pc, #40] ; (12920 ) 128f8: 47a0 blx r4 return NULL; 128fa: e7f2 b.n 128e2 if(old_size == new_size) return data_p; /*Also avoid reallocating the same memory*/ 128fc: 4627 mov r7, r4 128fe: e7f0 b.n 128e2 12900: 00012539 .word 0x00012539 12904: 000123c5 .word 0x000123c5 12908: 0001263d .word 0x0001263d 1290c: 000124ad .word 0x000124ad 12910: 00012351 .word 0x00012351 12914: 000293a8 .word 0x000293a8 12918: 00029360 .word 0x00029360 1291c: 00029380 .word 0x00029380 12920: 00012245 .word 0x00012245 00012924 <_lv_mem_buf_get>: if(size == 0) return NULL; 12924: 2800 cmp r0, #0 12926: f000 808d beq.w 12a44 <_lv_mem_buf_get+0x120> 1292a: 4601 mov r1, r0 if(size <= MEM_BUF_SMALL_SIZE) { 1292c: 2810 cmp r0, #16 1292e: d80b bhi.n 12948 <_lv_mem_buf_get+0x24> if(mem_buf_small[i].used == 0) { 12930: 4b45 ldr r3, [pc, #276] ; (12a48 <_lv_mem_buf_get+0x124>) 12932: 799b ldrb r3, [r3, #6] 12934: f013 0f01 tst.w r3, #1 12938: d00e beq.n 12958 <_lv_mem_buf_get+0x34> 1293a: 4b43 ldr r3, [pc, #268] ; (12a48 <_lv_mem_buf_get+0x124>) 1293c: 7b9b ldrb r3, [r3, #14] 1293e: f013 0f01 tst.w r3, #1 12942: bf08 it eq 12944: 2001 moveq r0, #1 12946: d008 beq.n 1295a <_lv_mem_buf_get+0x36> { 12948: b570 push {r4, r5, r6, lr} 1294a: b082 sub sp, #8 1294c: 4a3f ldr r2, [pc, #252] ; (12a4c <_lv_mem_buf_get+0x128>) if(mem_buf_small[i].used == 0) { 1294e: 2300 movs r3, #0 12950: 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) { 12954: 4614 mov r4, r2 12956: e019 b.n 1298c <_lv_mem_buf_get+0x68> if(mem_buf_small[i].used == 0) { 12958: 2000 movs r0, #0 mem_buf_small[i].used = 1; 1295a: 4a3b ldr r2, [pc, #236] ; (12a48 <_lv_mem_buf_get+0x124>) 1295c: eb02 01c0 add.w r1, r2, r0, lsl #3 12960: 798b ldrb r3, [r1, #6] 12962: f043 0301 orr.w r3, r3, #1 12966: 718b strb r3, [r1, #6] return mem_buf_small[i].p; 12968: f852 0030 ldr.w r0, [r2, r0, lsl #3] 1296c: 4770 bx lr LV_GC_ROOT(_lv_mem_buf[i]).used = 1; 1296e: 4a37 ldr r2, [pc, #220] ; (12a4c <_lv_mem_buf_get+0x128>) 12970: eb02 01c3 add.w r1, r2, r3, lsl #3 12974: 798b ldrb r3, [r1, #6] 12976: f043 0301 orr.w r3, r3, #1 1297a: 718b strb r3, [r1, #6] return LV_GC_ROOT(_lv_mem_buf[i]).p; 1297c: f852 0035 ldr.w r0, [r2, r5, lsl #3] 12980: e023 b.n 129ca <_lv_mem_buf_get+0xa6> i_guess = i; 12982: b25e sxtb r6, r3 12984: 3301 adds r3, #1 12986: 3208 adds r2, #8 for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { 12988: 2b10 cmp r3, #16 1298a: d013 beq.n 129b4 <_lv_mem_buf_get+0x90> if(LV_GC_ROOT(_lv_mem_buf[i]).used == 0 && LV_GC_ROOT(_lv_mem_buf[i]).size >= size) { 1298c: 461d mov r5, r3 1298e: eb04 00c3 add.w r0, r4, r3, lsl #3 12992: 7980 ldrb r0, [r0, #6] 12994: f010 0f01 tst.w r0, #1 12998: d1f4 bne.n 12984 <_lv_mem_buf_get+0x60> 1299a: 8890 ldrh r0, [r2, #4] 1299c: 4281 cmp r1, r0 1299e: d8f1 bhi.n 12984 <_lv_mem_buf_get+0x60> if(LV_GC_ROOT(_lv_mem_buf[i]).size == size) { 129a0: d0e5 beq.n 1296e <_lv_mem_buf_get+0x4a> else if(i_guess < 0) { 129a2: 2e00 cmp r6, #0 129a4: dbed blt.n 12982 <_lv_mem_buf_get+0x5e> else if(LV_GC_ROOT(_lv_mem_buf[i]).size < LV_GC_ROOT(_lv_mem_buf[i_guess]).size) { 129a6: eb04 05c6 add.w r5, r4, r6, lsl #3 129aa: 88ad ldrh r5, [r5, #4] 129ac: 4285 cmp r5, r0 i_guess = i; 129ae: bf88 it hi 129b0: b25e sxtbhi r6, r3 129b2: e7e7 b.n 12984 <_lv_mem_buf_get+0x60> if(i_guess >= 0) { 129b4: 2e00 cmp r6, #0 129b6: db0a blt.n 129ce <_lv_mem_buf_get+0xaa> LV_GC_ROOT(_lv_mem_buf[i_guess]).used = 1; 129b8: 4a24 ldr r2, [pc, #144] ; (12a4c <_lv_mem_buf_get+0x128>) 129ba: eb02 01c6 add.w r1, r2, r6, lsl #3 129be: 798b ldrb r3, [r1, #6] 129c0: f043 0301 orr.w r3, r3, #1 129c4: 718b strb r3, [r1, #6] return LV_GC_ROOT(_lv_mem_buf[i_guess]).p; 129c6: f852 0036 ldr.w r0, [r2, r6, lsl #3] } 129ca: b002 add sp, #8 129cc: bd70 pop {r4, r5, r6, pc} if(LV_GC_ROOT(_lv_mem_buf[i]).used == 0) { 129ce: 4b1f ldr r3, [pc, #124] ; (12a4c <_lv_mem_buf_get+0x128>) 129d0: 799b ldrb r3, [r3, #6] 129d2: f013 0f01 tst.w r3, #1 129d6: bf08 it eq 129d8: 2400 moveq r4, #0 129da: d016 beq.n 12a0a <_lv_mem_buf_get+0xe6> 129dc: 2301 movs r3, #1 129de: 481b ldr r0, [pc, #108] ; (12a4c <_lv_mem_buf_get+0x128>) 129e0: 461c mov r4, r3 129e2: eb00 02c3 add.w r2, r0, r3, lsl #3 129e6: 7992 ldrb r2, [r2, #6] 129e8: f012 0f01 tst.w r2, #1 129ec: d00d beq.n 12a0a <_lv_mem_buf_get+0xe6> 129ee: 3301 adds r3, #1 for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { 129f0: 2b10 cmp r3, #16 129f2: d1f5 bne.n 129e0 <_lv_mem_buf_get+0xbc> LV_LOG_ERROR("lv_mem_buf_get: no free buffer. Increase LV_DRAW_BUF_MAX_NUM."); 129f4: 4b16 ldr r3, [pc, #88] ; (12a50 <_lv_mem_buf_get+0x12c>) 129f6: 9300 str r3, [sp, #0] 129f8: 4b16 ldr r3, [pc, #88] ; (12a54 <_lv_mem_buf_get+0x130>) 129fa: f240 2216 movw r2, #534 ; 0x216 129fe: 4916 ldr r1, [pc, #88] ; (12a58 <_lv_mem_buf_get+0x134>) 12a00: 2003 movs r0, #3 12a02: 4c16 ldr r4, [pc, #88] ; (12a5c <_lv_mem_buf_get+0x138>) 12a04: 47a0 blx r4 return NULL; 12a06: 2000 movs r0, #0 12a08: e7df b.n 129ca <_lv_mem_buf_get+0xa6> LV_GC_ROOT(_lv_mem_buf[i]).used = 1; 12a0a: 4d10 ldr r5, [pc, #64] ; (12a4c <_lv_mem_buf_get+0x128>) 12a0c: eb05 03c4 add.w r3, r5, r4, lsl #3 12a10: 799a ldrb r2, [r3, #6] 12a12: f042 0201 orr.w r2, r2, #1 12a16: 719a strb r2, [r3, #6] LV_GC_ROOT(_lv_mem_buf[i]).size = size; 12a18: 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); 12a1a: f855 0034 ldr.w r0, [r5, r4, lsl #3] 12a1e: 4b10 ldr r3, [pc, #64] ; (12a60 <_lv_mem_buf_get+0x13c>) 12a20: 4798 blx r3 12a22: f845 0034 str.w r0, [r5, r4, lsl #3] if(LV_GC_ROOT(_lv_mem_buf[i]).p == NULL) { 12a26: b118 cbz r0, 12a30 <_lv_mem_buf_get+0x10c> return LV_GC_ROOT(_lv_mem_buf[i]).p; 12a28: 4b08 ldr r3, [pc, #32] ; (12a4c <_lv_mem_buf_get+0x128>) 12a2a: f853 0034 ldr.w r0, [r3, r4, lsl #3] 12a2e: e7cc b.n 129ca <_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)") 12a30: 4b0c ldr r3, [pc, #48] ; (12a64 <_lv_mem_buf_get+0x140>) 12a32: 9300 str r3, [sp, #0] 12a34: 4b07 ldr r3, [pc, #28] ; (12a54 <_lv_mem_buf_get+0x130>) 12a36: f44f 7204 mov.w r2, #528 ; 0x210 12a3a: 4907 ldr r1, [pc, #28] ; (12a58 <_lv_mem_buf_get+0x134>) 12a3c: 2003 movs r0, #3 12a3e: 4d07 ldr r5, [pc, #28] ; (12a5c <_lv_mem_buf_get+0x138>) 12a40: 47a8 blx r5 12a42: e7f1 b.n 12a28 <_lv_mem_buf_get+0x104> if(size == 0) return NULL; 12a44: 2000 movs r0, #0 12a46: 4770 bx lr 12a48: 20000044 .word 0x20000044 12a4c: 20006cb0 .word 0x20006cb0 12a50: 00029454 .word 0x00029454 12a54: 00029370 .word 0x00029370 12a58: 00029380 .word 0x00029380 12a5c: 00012245 .word 0x00012245 12a60: 00012881 .word 0x00012881 12a64: 000293f0 .word 0x000293f0 00012a68 <_lv_memset>: if(d_align) { 12a68: f010 0303 ands.w r3, r0, #3 12a6c: d013 beq.n 12a96 <_lv_memset+0x2e> while(d_align && len) { 12a6e: f1c3 0304 rsb r3, r3, #4 12a72: b13a cbz r2, 12a84 <_lv_memset+0x1c> 12a74: 4403 add r3, r0 *d8 = v; 12a76: f800 1b01 strb.w r1, [r0], #1 len--; 12a7a: 3a01 subs r2, #1 while(d_align && len) { 12a7c: 4298 cmp r0, r3 12a7e: d00a beq.n 12a96 <_lv_memset+0x2e> 12a80: 2a00 cmp r2, #0 12a82: d1f8 bne.n 12a76 <_lv_memset+0xe> while(len > 4) { 12a84: 2200 movs r2, #0 while(len) { 12a86: 2a00 cmp r2, #0 12a88: d048 beq.n 12b1c <_lv_memset+0xb4> 12a8a: 4402 add r2, r0 *d8 = v; 12a8c: f800 1b01 strb.w r1, [r0], #1 while(len) { 12a90: 4290 cmp r0, r2 12a92: d1fb bne.n 12a8c <_lv_memset+0x24> 12a94: 4770 bx lr { 12a96: b430 push {r4, r5} uint32_t v32 = v + (v << 8) + (v << 16) + (v << 24); 12a98: eb01 2401 add.w r4, r1, r1, lsl #8 12a9c: eb04 4401 add.w r4, r4, r1, lsl #16 12aa0: eb04 6401 add.w r4, r4, r1, lsl #24 while(len > 32) { 12aa4: 2a20 cmp r2, #32 12aa6: d920 bls.n 12aea <_lv_memset+0x82> 12aa8: f100 0320 add.w r3, r0, #32 12aac: 4615 mov r5, r2 SET32(v32); 12aae: f843 4c20 str.w r4, [r3, #-32] SET32(v32); 12ab2: f843 4c1c str.w r4, [r3, #-28] SET32(v32); 12ab6: f843 4c18 str.w r4, [r3, #-24] SET32(v32); 12aba: f843 4c14 str.w r4, [r3, #-20] SET32(v32); 12abe: f843 4c10 str.w r4, [r3, #-16] SET32(v32); 12ac2: f843 4c0c str.w r4, [r3, #-12] SET32(v32); 12ac6: f843 4c08 str.w r4, [r3, #-8] SET32(v32); 12aca: f843 4c04 str.w r4, [r3, #-4] len -= 32; 12ace: 3d20 subs r5, #32 12ad0: 3320 adds r3, #32 while(len > 32) { 12ad2: 2d20 cmp r5, #32 12ad4: d8eb bhi.n 12aae <_lv_memset+0x46> 12ad6: f1a2 0321 sub.w r3, r2, #33 ; 0x21 12ada: f023 051f bic.w r5, r3, #31 12ade: 3520 adds r5, #32 12ae0: 4428 add r0, r5 12ae2: 3a20 subs r2, #32 12ae4: f023 031f bic.w r3, r3, #31 12ae8: 1ad2 subs r2, r2, r3 while(len > 4) { 12aea: 2a04 cmp r2, #4 12aec: d90f bls.n 12b0e <_lv_memset+0xa6> 12aee: 4605 mov r5, r0 12af0: 4613 mov r3, r2 SET32(v32); 12af2: f845 4b04 str.w r4, [r5], #4 len -= 4; 12af6: 3b04 subs r3, #4 while(len > 4) { 12af8: 2b04 cmp r3, #4 12afa: d8fa bhi.n 12af2 <_lv_memset+0x8a> 12afc: 1f53 subs r3, r2, #5 12afe: f023 0403 bic.w r4, r3, #3 12b02: 3404 adds r4, #4 12b04: 3a04 subs r2, #4 12b06: f023 0303 bic.w r3, r3, #3 12b0a: 1ad2 subs r2, r2, r3 SET32(v32); 12b0c: 4420 add r0, r4 while(len) { 12b0e: b122 cbz r2, 12b1a <_lv_memset+0xb2> 12b10: 4402 add r2, r0 *d8 = v; 12b12: f800 1b01 strb.w r1, [r0], #1 while(len) { 12b16: 4290 cmp r0, r2 12b18: d1fb bne.n 12b12 <_lv_memset+0xaa> } 12b1a: bc30 pop {r4, r5} 12b1c: 4770 bx lr 00012b1e <_lv_memset_00>: if(d_align) { 12b1e: f010 0303 ands.w r3, r0, #3 12b22: d141 bne.n 12ba8 <_lv_memset_00+0x8a> { 12b24: b410 push {r4} while(len > 32) { 12b26: 2920 cmp r1, #32 12b28: d921 bls.n 12b6e <_lv_memset_00+0x50> 12b2a: f100 0320 add.w r3, r0, #32 12b2e: 460c mov r4, r1 SET32(0); 12b30: 2200 movs r2, #0 12b32: f843 2c20 str.w r2, [r3, #-32] SET32(0); 12b36: f843 2c1c str.w r2, [r3, #-28] SET32(0); 12b3a: f843 2c18 str.w r2, [r3, #-24] SET32(0); 12b3e: f843 2c14 str.w r2, [r3, #-20] SET32(0); 12b42: f843 2c10 str.w r2, [r3, #-16] SET32(0); 12b46: f843 2c0c str.w r2, [r3, #-12] SET32(0); 12b4a: f843 2c08 str.w r2, [r3, #-8] SET32(0); 12b4e: f843 2c04 str.w r2, [r3, #-4] len -= 32; 12b52: 3c20 subs r4, #32 12b54: 3320 adds r3, #32 while(len > 32) { 12b56: 2c20 cmp r4, #32 12b58: d8eb bhi.n 12b32 <_lv_memset_00+0x14> 12b5a: f1a1 0321 sub.w r3, r1, #33 ; 0x21 12b5e: f023 021f bic.w r2, r3, #31 12b62: 3220 adds r2, #32 12b64: 4410 add r0, r2 12b66: 3920 subs r1, #32 12b68: f023 031f bic.w r3, r3, #31 12b6c: 1ac9 subs r1, r1, r3 while(len > 4) { 12b6e: 2904 cmp r1, #4 12b70: d910 bls.n 12b94 <_lv_memset_00+0x76> 12b72: 4602 mov r2, r0 12b74: 460b mov r3, r1 SET32(0); 12b76: 2400 movs r4, #0 12b78: f842 4b04 str.w r4, [r2], #4 len -= 4; 12b7c: 3b04 subs r3, #4 while(len > 4) { 12b7e: 2b04 cmp r3, #4 12b80: d8fa bhi.n 12b78 <_lv_memset_00+0x5a> 12b82: 1f4b subs r3, r1, #5 12b84: f023 0203 bic.w r2, r3, #3 12b88: 3204 adds r2, #4 12b8a: 3904 subs r1, #4 12b8c: f023 0303 bic.w r3, r3, #3 12b90: 1ac9 subs r1, r1, r3 SET32(0); 12b92: 4410 add r0, r2 while(len) { 12b94: b129 cbz r1, 12ba2 <_lv_memset_00+0x84> 12b96: 4401 add r1, r0 *d8 = 0; 12b98: 2300 movs r3, #0 12b9a: f800 3b01 strb.w r3, [r0], #1 while(len) { 12b9e: 4288 cmp r0, r1 12ba0: d1fb bne.n 12b9a <_lv_memset_00+0x7c> } 12ba2: f85d 4b04 ldr.w r4, [sp], #4 12ba6: 4770 bx lr while(d_align && len) { 12ba8: f1c3 0304 rsb r3, r3, #4 12bac: b141 cbz r1, 12bc0 <_lv_memset_00+0xa2> 12bae: 4403 add r3, r0 *d8 = 0x00; 12bb0: 2200 movs r2, #0 12bb2: f800 2b01 strb.w r2, [r0], #1 len--; 12bb6: 3901 subs r1, #1 while(d_align && len) { 12bb8: 4298 cmp r0, r3 12bba: d0b3 beq.n 12b24 <_lv_memset_00+0x6> 12bbc: 2900 cmp r1, #0 12bbe: d1f8 bne.n 12bb2 <_lv_memset_00+0x94> while(len > 4) { 12bc0: 2100 movs r1, #0 while(len) { 12bc2: 2900 cmp r1, #0 12bc4: d0ef beq.n 12ba6 <_lv_memset_00+0x88> 12bc6: 4401 add r1, r0 *d8 = 0; 12bc8: 2300 movs r3, #0 12bca: f800 3b01 strb.w r3, [r0], #1 while(len) { 12bce: 4288 cmp r0, r1 12bd0: d1fb bne.n 12bca <_lv_memset_00+0xac> 12bd2: 4770 bx lr 00012bd4 <_lv_memset_ff>: if(d_align) { 12bd4: f010 0303 ands.w r3, r0, #3 12bd8: d143 bne.n 12c62 <_lv_memset_ff+0x8e> { 12bda: b410 push {r4} while(len > 32) { 12bdc: 2920 cmp r1, #32 12bde: d922 bls.n 12c26 <_lv_memset_ff+0x52> 12be0: f100 0320 add.w r3, r0, #32 12be4: 460c mov r4, r1 SET32(0xFFFFFFFF); 12be6: f04f 32ff mov.w r2, #4294967295 12bea: f843 2c20 str.w r2, [r3, #-32] SET32(0xFFFFFFFF); 12bee: f843 2c1c str.w r2, [r3, #-28] SET32(0xFFFFFFFF); 12bf2: f843 2c18 str.w r2, [r3, #-24] SET32(0xFFFFFFFF); 12bf6: f843 2c14 str.w r2, [r3, #-20] SET32(0xFFFFFFFF); 12bfa: f843 2c10 str.w r2, [r3, #-16] SET32(0xFFFFFFFF); 12bfe: f843 2c0c str.w r2, [r3, #-12] SET32(0xFFFFFFFF); 12c02: f843 2c08 str.w r2, [r3, #-8] SET32(0xFFFFFFFF); 12c06: f843 2c04 str.w r2, [r3, #-4] len -= 32; 12c0a: 3c20 subs r4, #32 12c0c: 3320 adds r3, #32 while(len > 32) { 12c0e: 2c20 cmp r4, #32 12c10: d8eb bhi.n 12bea <_lv_memset_ff+0x16> 12c12: f1a1 0321 sub.w r3, r1, #33 ; 0x21 12c16: f023 021f bic.w r2, r3, #31 12c1a: 3220 adds r2, #32 12c1c: 4410 add r0, r2 12c1e: 3920 subs r1, #32 12c20: f023 031f bic.w r3, r3, #31 12c24: 1ac9 subs r1, r1, r3 while(len > 4) { 12c26: 2904 cmp r1, #4 12c28: d911 bls.n 12c4e <_lv_memset_ff+0x7a> 12c2a: 4602 mov r2, r0 12c2c: 460b mov r3, r1 SET32(0xFFFFFFFF); 12c2e: f04f 34ff mov.w r4, #4294967295 12c32: f842 4b04 str.w r4, [r2], #4 len -= 4; 12c36: 3b04 subs r3, #4 while(len > 4) { 12c38: 2b04 cmp r3, #4 12c3a: d8fa bhi.n 12c32 <_lv_memset_ff+0x5e> 12c3c: 1f4b subs r3, r1, #5 12c3e: f023 0203 bic.w r2, r3, #3 12c42: 3204 adds r2, #4 12c44: 3904 subs r1, #4 12c46: f023 0303 bic.w r3, r3, #3 12c4a: 1ac9 subs r1, r1, r3 SET32(0xFFFFFFFF); 12c4c: 4410 add r0, r2 while(len) { 12c4e: b129 cbz r1, 12c5c <_lv_memset_ff+0x88> 12c50: 4401 add r1, r0 *d8 = 0xFF; 12c52: 23ff movs r3, #255 ; 0xff 12c54: f800 3b01 strb.w r3, [r0], #1 while(len) { 12c58: 4288 cmp r0, r1 12c5a: d1fb bne.n 12c54 <_lv_memset_ff+0x80> } 12c5c: f85d 4b04 ldr.w r4, [sp], #4 12c60: 4770 bx lr while(d_align && len) { 12c62: f1c3 0304 rsb r3, r3, #4 12c66: b141 cbz r1, 12c7a <_lv_memset_ff+0xa6> 12c68: 4403 add r3, r0 *d8 = 0xFF; 12c6a: 22ff movs r2, #255 ; 0xff 12c6c: f800 2b01 strb.w r2, [r0], #1 len--; 12c70: 3901 subs r1, #1 while(d_align && len) { 12c72: 4298 cmp r0, r3 12c74: d0b1 beq.n 12bda <_lv_memset_ff+0x6> 12c76: 2900 cmp r1, #0 12c78: d1f8 bne.n 12c6c <_lv_memset_ff+0x98> while(len > 4) { 12c7a: 2100 movs r1, #0 while(len) { 12c7c: 2900 cmp r1, #0 12c7e: d0ef beq.n 12c60 <_lv_memset_ff+0x8c> 12c80: 4401 add r1, r0 *d8 = 0xFF; 12c82: 23ff movs r3, #255 ; 0xff 12c84: f800 3b01 strb.w r3, [r0], #1 while(len) { 12c88: 4288 cmp r0, r1 12c8a: d1fb bne.n 12c84 <_lv_memset_ff+0xb0> 12c8c: 4770 bx lr 00012c8e <_out_buffer>: // internal buffer output static inline void _out_buffer(char character, void * buffer, size_t idx, size_t maxlen) { if(idx < maxlen) { 12c8e: 429a cmp r2, r3 ((char *)buffer)[idx] = character; 12c90: bf38 it cc 12c92: 5488 strbcc r0, [r1, r2] 12c94: 4770 bx lr 00012c96 <_out_null>: } // internal null output static inline void _out_null(char character, void * buffer, size_t idx, size_t maxlen) { 12c96: 4770 bx lr 00012c98 <_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) { 12c98: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 12c9c: b083 sub sp, #12 12c9e: 4607 mov r7, r0 12ca0: 9100 str r1, [sp, #0] 12ca2: 4693 mov fp, r2 12ca4: 4698 mov r8, r3 12ca6: f8dd 9030 ldr.w r9, [sp, #48] ; 0x30 12caa: 9c0d ldr r4, [sp, #52] ; 0x34 12cac: f89d 5038 ldrb.w r5, [sp, #56] ; 0x38 12cb0: 9910 ldr r1, [sp, #64] ; 0x40 12cb2: f8dd a044 ldr.w sl, [sp, #68] ; 0x44 12cb6: 9a12 ldr r2, [sp, #72] ; 0x48 // pad leading zeros if(!(flags & FLAGS_LEFT)) { 12cb8: f012 0302 ands.w r3, r2, #2 12cbc: 9301 str r3, [sp, #4] 12cbe: d135 bne.n 12d2c <_ntoa_format+0x94> if(width && (flags & FLAGS_ZEROPAD) && (negative || (flags & (FLAGS_PLUS | FLAGS_SPACE)))) { 12cc0: f1ba 0f00 cmp.w sl, #0 12cc4: d00e beq.n 12ce4 <_ntoa_format+0x4c> 12cc6: f012 0f01 tst.w r2, #1 12cca: f000 80b6 beq.w 12e3a <_ntoa_format+0x1a2> 12cce: b915 cbnz r5, 12cd6 <_ntoa_format+0x3e> 12cd0: f012 0f0c tst.w r2, #12 12cd4: d001 beq.n 12cda <_ntoa_format+0x42> width--; 12cd6: f10a 3aff add.w sl, sl, #4294967295 } while((len < prec) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12cda: 428c cmp r4, r1 12cdc: d213 bcs.n 12d06 <_ntoa_format+0x6e> 12cde: 2c1f cmp r4, #31 12ce0: d904 bls.n 12cec <_ntoa_format+0x54> 12ce2: e010 b.n 12d06 <_ntoa_format+0x6e> 12ce4: 428c cmp r4, r1 12ce6: d20b bcs.n 12d00 <_ntoa_format+0x68> 12ce8: 2c1f cmp r4, #31 12cea: d809 bhi.n 12d00 <_ntoa_format+0x68> 12cec: eb09 0304 add.w r3, r9, r4 buf[len++] = '0'; 12cf0: 2030 movs r0, #48 ; 0x30 12cf2: 3401 adds r4, #1 12cf4: f803 0b01 strb.w r0, [r3], #1 while((len < prec) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12cf8: 42a1 cmp r1, r4 12cfa: d901 bls.n 12d00 <_ntoa_format+0x68> 12cfc: 2c20 cmp r4, #32 12cfe: d1f8 bne.n 12cf2 <_ntoa_format+0x5a> } while((flags & FLAGS_ZEROPAD) && (len < width) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12d00: f012 0f01 tst.w r2, #1 12d04: d012 beq.n 12d2c <_ntoa_format+0x94> 12d06: 45a2 cmp sl, r4 12d08: d910 bls.n 12d2c <_ntoa_format+0x94> 12d0a: 2c1f cmp r4, #31 12d0c: d809 bhi.n 12d22 <_ntoa_format+0x8a> 12d0e: eb09 0304 add.w r3, r9, r4 buf[len++] = '0'; 12d12: 2030 movs r0, #48 ; 0x30 12d14: 3401 adds r4, #1 12d16: f803 0b01 strb.w r0, [r3], #1 while((flags & FLAGS_ZEROPAD) && (len < width) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12d1a: 4554 cmp r4, sl 12d1c: d005 beq.n 12d2a <_ntoa_format+0x92> 12d1e: 2c20 cmp r4, #32 12d20: d1f8 bne.n 12d14 <_ntoa_format+0x7c> } } // handle hash if(flags & FLAGS_HASH) { 12d22: f012 0f10 tst.w r2, #16 12d26: d104 bne.n 12d32 <_ntoa_format+0x9a> 12d28: e044 b.n 12db4 <_ntoa_format+0x11c> 12d2a: 46a2 mov sl, r4 12d2c: f012 0f10 tst.w r2, #16 12d30: d013 beq.n 12d5a <_ntoa_format+0xc2> if(!(flags & FLAGS_PRECISION) && len && ((len == prec) || (len == width))) { 12d32: f412 6f80 tst.w r2, #1024 ; 0x400 12d36: d104 bne.n 12d42 <_ntoa_format+0xaa> 12d38: b11c cbz r4, 12d42 <_ntoa_format+0xaa> 12d3a: 42a1 cmp r1, r4 12d3c: d01b beq.n 12d76 <_ntoa_format+0xde> 12d3e: 4554 cmp r4, sl 12d40: d019 beq.n 12d76 <_ntoa_format+0xde> len--; if(len && (base == 16U)) { len--; } } if((base == 16U) && !(flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12d42: 9b0f ldr r3, [sp, #60] ; 0x3c 12d44: 2b10 cmp r3, #16 12d46: d01e beq.n 12d86 <_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)) { 12d48: 9b0f ldr r3, [sp, #60] ; 0x3c 12d4a: 2b02 cmp r3, #2 12d4c: d027 beq.n 12d9e <_ntoa_format+0x106> buf[len++] = 'b'; } if(len < PRINTF_NTOA_BUFFER_SIZE) { 12d4e: 2c1f cmp r4, #31 12d50: d830 bhi.n 12db4 <_ntoa_format+0x11c> buf[len++] = '0'; 12d52: 2330 movs r3, #48 ; 0x30 12d54: f809 3004 strb.w r3, [r9, r4] 12d58: 3401 adds r4, #1 } } if(len < PRINTF_NTOA_BUFFER_SIZE) { 12d5a: 2c1f cmp r4, #31 12d5c: d82a bhi.n 12db4 <_ntoa_format+0x11c> if(negative) { 12d5e: bb2d cbnz r5, 12dac <_ntoa_format+0x114> buf[len++] = '-'; } else if(flags & FLAGS_PLUS) { 12d60: f012 0f04 tst.w r2, #4 12d64: d13a bne.n 12ddc <_ntoa_format+0x144> buf[len++] = '+'; // ignore the space if the '+' exists } else if(flags & FLAGS_SPACE) { 12d66: f012 0f08 tst.w r2, #8 12d6a: d023 beq.n 12db4 <_ntoa_format+0x11c> buf[len++] = ' '; 12d6c: 2320 movs r3, #32 12d6e: f809 3004 strb.w r3, [r9, r4] 12d72: 3401 adds r4, #1 12d74: e01e b.n 12db4 <_ntoa_format+0x11c> if(len && (base == 16U)) { 12d76: 1e63 subs r3, r4, #1 12d78: d00f beq.n 12d9a <_ntoa_format+0x102> 12d7a: 990f ldr r1, [sp, #60] ; 0x3c 12d7c: 2910 cmp r1, #16 12d7e: d001 beq.n 12d84 <_ntoa_format+0xec> len--; 12d80: 461c mov r4, r3 12d82: e7e1 b.n 12d48 <_ntoa_format+0xb0> len--; 12d84: 3c02 subs r4, #2 if((base == 16U) && !(flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12d86: f012 0f20 tst.w r2, #32 12d8a: d15d bne.n 12e48 <_ntoa_format+0x1b0> 12d8c: 2c1f cmp r4, #31 12d8e: d8de bhi.n 12d4e <_ntoa_format+0xb6> buf[len++] = 'x'; 12d90: 2378 movs r3, #120 ; 0x78 12d92: f809 3004 strb.w r3, [r9, r4] 12d96: 3401 adds r4, #1 12d98: e7d9 b.n 12d4e <_ntoa_format+0xb6> len--; 12d9a: 461c mov r4, r3 12d9c: e7d1 b.n 12d42 <_ntoa_format+0xaa> else if((base == 2U) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12d9e: 2c1f cmp r4, #31 12da0: d808 bhi.n 12db4 <_ntoa_format+0x11c> buf[len++] = 'b'; 12da2: 2362 movs r3, #98 ; 0x62 12da4: f809 3004 strb.w r3, [r9, r4] 12da8: 3401 adds r4, #1 12daa: e7d0 b.n 12d4e <_ntoa_format+0xb6> buf[len++] = '-'; 12dac: 232d movs r3, #45 ; 0x2d 12dae: f809 3004 strb.w r3, [r9, r4] 12db2: 3401 adds r4, #1 if(!(flags & FLAGS_LEFT) && !(flags & FLAGS_ZEROPAD)) { 12db4: f012 0f03 tst.w r2, #3 12db8: d115 bne.n 12de6 <_ntoa_format+0x14e> for(i = len; i < width; i++) { 12dba: 4554 cmp r4, sl 12dbc: bf28 it cs 12dbe: 465e movcs r6, fp 12dc0: d212 bcs.n 12de8 <_ntoa_format+0x150> 12dc2: eb0b 050a add.w r5, fp, sl 12dc6: 1b2d subs r5, r5, r4 12dc8: 465a mov r2, fp out(' ', buffer, idx++, maxlen); 12dca: 1c56 adds r6, r2, #1 12dcc: 4643 mov r3, r8 12dce: 9900 ldr r1, [sp, #0] 12dd0: 2020 movs r0, #32 12dd2: 47b8 blx r7 12dd4: 4632 mov r2, r6 for(i = len; i < width; i++) { 12dd6: 42ae cmp r6, r5 12dd8: d1f7 bne.n 12dca <_ntoa_format+0x132> 12dda: e005 b.n 12de8 <_ntoa_format+0x150> buf[len++] = '+'; // ignore the space if the '+' exists 12ddc: 232b movs r3, #43 ; 0x2b 12dde: f809 3004 strb.w r3, [r9, r4] 12de2: 3401 adds r4, #1 12de4: e7e6 b.n 12db4 <_ntoa_format+0x11c> if(!(flags & FLAGS_LEFT) && !(flags & FLAGS_ZEROPAD)) { 12de6: 465e mov r6, fp while(len) { 12de8: 4635 mov r5, r6 12dea: b15c cbz r4, 12e04 <_ntoa_format+0x16c> 12dec: 44a1 add r9, r4 12dee: 4434 add r4, r6 12df0: 4632 mov r2, r6 out(buf[--len], buffer, idx++, maxlen); 12df2: 1c55 adds r5, r2, #1 12df4: 4643 mov r3, r8 12df6: 9900 ldr r1, [sp, #0] 12df8: f819 0d01 ldrb.w r0, [r9, #-1]! 12dfc: 47b8 blx r7 12dfe: 462a mov r2, r5 while(len) { 12e00: 42ac cmp r4, r5 12e02: d1f6 bne.n 12df2 <_ntoa_format+0x15a> if(flags & FLAGS_LEFT) { 12e04: 9b01 ldr r3, [sp, #4] 12e06: b1a3 cbz r3, 12e32 <_ntoa_format+0x19a> while(idx - start_idx < width) { 12e08: eba5 030b sub.w r3, r5, fp 12e0c: 4553 cmp r3, sl 12e0e: d212 bcs.n 12e36 <_ntoa_format+0x19e> out(' ', buffer, idx++, maxlen); 12e10: 2620 movs r6, #32 12e12: 462a mov r2, r5 12e14: 9d00 ldr r5, [sp, #0] 12e16: 1c54 adds r4, r2, #1 12e18: 4643 mov r3, r8 12e1a: 4629 mov r1, r5 12e1c: 4630 mov r0, r6 12e1e: 47b8 blx r7 12e20: 4622 mov r2, r4 while(idx - start_idx < width) { 12e22: eba4 030b sub.w r3, r4, fp 12e26: 4553 cmp r3, sl 12e28: d3f5 bcc.n 12e16 <_ntoa_format+0x17e> } } return _out_rev(out, buffer, idx, maxlen, buf, len, width, flags); } 12e2a: 4620 mov r0, r4 12e2c: b003 add sp, #12 12e2e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(flags & FLAGS_LEFT) { 12e32: 462c mov r4, r5 12e34: e7f9 b.n 12e2a <_ntoa_format+0x192> while(idx - start_idx < width) { 12e36: 462c mov r4, r5 return _out_rev(out, buffer, idx, maxlen, buf, len, width, flags); 12e38: e7f7 b.n 12e2a <_ntoa_format+0x192> while((len < prec) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12e3a: 428c cmp r4, r1 12e3c: f4bf af76 bcs.w 12d2c <_ntoa_format+0x94> 12e40: 2c1f cmp r4, #31 12e42: f67f af53 bls.w 12cec <_ntoa_format+0x54> 12e46: e771 b.n 12d2c <_ntoa_format+0x94> else if((base == 16U) && (flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12e48: 2c1f cmp r4, #31 12e4a: d8b3 bhi.n 12db4 <_ntoa_format+0x11c> buf[len++] = 'X'; 12e4c: 2358 movs r3, #88 ; 0x58 12e4e: f809 3004 strb.w r3, [r9, r4] 12e52: 3401 adds r4, #1 12e54: e77b b.n 12d4e <_ntoa_format+0xb6> ... 00012e58 <_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) { 12e58: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 12e5c: b090 sub sp, #64 ; 0x40 12e5e: 9d16 ldr r5, [sp, #88] ; 0x58 12e60: 9e18 ldr r6, [sp, #96] ; 0x60 12e62: 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) { 12e66: b92d cbnz r5, 12e74 <_ntoa_long+0x1c> flags &= ~FLAGS_HASH; 12e68: f028 0410 bic.w r4, r8, #16 } // write if precision != 0 and value is != 0 if(!(flags & FLAGS_PRECISION) || value) { 12e6c: f418 6f80 tst.w r8, #1024 ; 0x400 12e70: d12f bne.n 12ed2 <_ntoa_long+0x7a> flags &= ~FLAGS_HASH; 12e72: 46a0 mov r8, r4 12e74: f018 0f20 tst.w r8, #32 12e78: 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; 12e7c: f04f 0700 mov.w r7, #0 12e80: bf14 ite ne 12e82: f04f 0c37 movne.w ip, #55 ; 0x37 12e86: f04f 0c57 moveq.w ip, #87 ; 0x57 const char digit = (char)(value % base); 12e8a: fbb5 f4f6 udiv r4, r5, r6 12e8e: fb06 5414 mls r4, r6, r4, r5 12e92: b2e4 uxtb r4, r4 buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; 12e94: 3701 adds r7, #1 12e96: 2c09 cmp r4, #9 12e98: bf94 ite ls 12e9a: 3430 addls r4, #48 ; 0x30 12e9c: 4464 addhi r4, ip 12e9e: b2e4 uxtb r4, r4 12ea0: f80e 4f01 strb.w r4, [lr, #1]! value /= base; 12ea4: fbb5 f5f6 udiv r5, r5, r6 } while(value && (len < PRINTF_NTOA_BUFFER_SIZE)); 12ea8: b10d cbz r5, 12eae <_ntoa_long+0x56> 12eaa: 2f20 cmp r7, #32 12eac: d1ed bne.n 12e8a <_ntoa_long+0x32> } return _ntoa_format(out, buffer, idx, maxlen, buf, len, negative, (unsigned int)base, prec, width, flags); 12eae: f8cd 8018 str.w r8, [sp, #24] 12eb2: 9c1a ldr r4, [sp, #104] ; 0x68 12eb4: 9405 str r4, [sp, #20] 12eb6: 9c19 ldr r4, [sp, #100] ; 0x64 12eb8: 9404 str r4, [sp, #16] 12eba: 9603 str r6, [sp, #12] 12ebc: f89d 405c ldrb.w r4, [sp, #92] ; 0x5c 12ec0: 9402 str r4, [sp, #8] 12ec2: 9701 str r7, [sp, #4] 12ec4: ac08 add r4, sp, #32 12ec6: 9400 str r4, [sp, #0] 12ec8: 4c03 ldr r4, [pc, #12] ; (12ed8 <_ntoa_long+0x80>) 12eca: 47a0 blx r4 } 12ecc: b010 add sp, #64 ; 0x40 12ece: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} flags &= ~FLAGS_HASH; 12ed2: 46a0 mov r8, r4 size_t len = 0U; 12ed4: 2700 movs r7, #0 12ed6: e7ea b.n 12eae <_ntoa_long+0x56> 12ed8: 00012c99 .word 0x00012c99 00012edc <_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) { 12edc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 12ee0: b095 sub sp, #84 ; 0x54 12ee2: 9008 str r0, [sp, #32] 12ee4: 9109 str r1, [sp, #36] ; 0x24 12ee6: 920a str r2, [sp, #40] ; 0x28 12ee8: 930b str r3, [sp, #44] ; 0x2c 12eea: e9dd 451e ldrd r4, r5, [sp, #120] ; 0x78 12eee: f8dd 9088 ldr.w r9, [sp, #136] ; 0x88 12ef2: 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) { 12ef6: ea54 0305 orrs.w r3, r4, r5 12efa: d107 bne.n 12f0c <_ntoa_long_long+0x30> flags &= ~FLAGS_HASH; 12efc: 9b26 ldr r3, [sp, #152] ; 0x98 12efe: f023 0310 bic.w r3, r3, #16 } // write if precision != 0 and value is != 0 if(!(flags & FLAGS_PRECISION) || value) { 12f02: 9a26 ldr r2, [sp, #152] ; 0x98 12f04: f412 6f80 tst.w r2, #1024 ; 0x400 12f08: d13e bne.n 12f88 <_ntoa_long_long+0xac> flags &= ~FLAGS_HASH; 12f0a: 9326 str r3, [sp, #152] ; 0x98 12f0c: 9b26 ldr r3, [sp, #152] ; 0x98 12f0e: f013 0f20 tst.w r3, #32 12f12: 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; 12f16: f04f 0600 mov.w r6, #0 const char digit = (char)(value % base); 12f1a: 4f1d ldr r7, [pc, #116] ; (12f90 <_ntoa_long_long+0xb4>) buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; 12f1c: bf14 ite ne 12f1e: f04f 0b37 movne.w fp, #55 ; 0x37 12f22: f04f 0b57 moveq.w fp, #87 ; 0x57 const char digit = (char)(value % base); 12f26: 464a mov r2, r9 12f28: 4643 mov r3, r8 12f2a: 4620 mov r0, r4 12f2c: 4629 mov r1, r5 12f2e: 47b8 blx r7 12f30: b2d2 uxtb r2, r2 buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; 12f32: 3601 adds r6, #1 12f34: 2a09 cmp r2, #9 12f36: bf94 ite ls 12f38: 3230 addls r2, #48 ; 0x30 12f3a: 445a addhi r2, fp 12f3c: b2d2 uxtb r2, r2 12f3e: f80a 2f01 strb.w r2, [sl, #1]! value /= base; 12f42: 464a mov r2, r9 12f44: 4643 mov r3, r8 12f46: 4620 mov r0, r4 12f48: 4629 mov r1, r5 12f4a: 47b8 blx r7 12f4c: 4604 mov r4, r0 12f4e: 460d mov r5, r1 } while(value && (len < PRINTF_NTOA_BUFFER_SIZE)); 12f50: ea54 0305 orrs.w r3, r4, r5 12f54: d001 beq.n 12f5a <_ntoa_long_long+0x7e> 12f56: 2e20 cmp r6, #32 12f58: d1e5 bne.n 12f26 <_ntoa_long_long+0x4a> } return _ntoa_format(out, buffer, idx, maxlen, buf, len, negative, (unsigned int)base, prec, width, flags); 12f5a: 9b26 ldr r3, [sp, #152] ; 0x98 12f5c: 9306 str r3, [sp, #24] 12f5e: 9b25 ldr r3, [sp, #148] ; 0x94 12f60: 9305 str r3, [sp, #20] 12f62: 9b24 ldr r3, [sp, #144] ; 0x90 12f64: 9304 str r3, [sp, #16] 12f66: f8cd 900c str.w r9, [sp, #12] 12f6a: f89d 3080 ldrb.w r3, [sp, #128] ; 0x80 12f6e: 9302 str r3, [sp, #8] 12f70: 9601 str r6, [sp, #4] 12f72: ab0c add r3, sp, #48 ; 0x30 12f74: 9300 str r3, [sp, #0] 12f76: 9b0b ldr r3, [sp, #44] ; 0x2c 12f78: 9a0a ldr r2, [sp, #40] ; 0x28 12f7a: 9909 ldr r1, [sp, #36] ; 0x24 12f7c: 9808 ldr r0, [sp, #32] 12f7e: 4c05 ldr r4, [pc, #20] ; (12f94 <_ntoa_long_long+0xb8>) 12f80: 47a0 blx r4 } 12f82: b015 add sp, #84 ; 0x54 12f84: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} flags &= ~FLAGS_HASH; 12f88: 9326 str r3, [sp, #152] ; 0x98 size_t len = 0U; 12f8a: 2600 movs r6, #0 12f8c: e7e5 b.n 12f5a <_ntoa_long_long+0x7e> 12f8e: bf00 nop 12f90: 0001b16d .word 0x0001b16d 12f94: 00012c99 .word 0x00012c99 00012f98 <_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) { 12f98: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 12f9c: b091 sub sp, #68 ; 0x44 12f9e: 920a str r2, [sp, #40] ; 0x28 12fa0: 461c mov r4, r3 12fa2: 9e1a ldr r6, [sp, #104] ; 0x68 unsigned int flags, width, precision, n; size_t idx = 0U; if(!buffer) { 12fa4: 910b str r1, [sp, #44] ; 0x2c // use null output function out = _out_null; 12fa6: 4b93 ldr r3, [pc, #588] ; (131f4 <_vsnprintf+0x25c>) 12fa8: 2900 cmp r1, #0 12faa: bf14 ite ne 12fac: 4681 movne r9, r0 12fae: 4699 moveq r9, r3 format++; break; } case '%' : out('%', buffer, idx++, maxlen); 12fb0: f04f 0b00 mov.w fp, #0 while(*format) { 12fb4: 7820 ldrb r0, [r4, #0] 12fb6: 2800 cmp r0, #0 12fb8: f000 826a beq.w 13490 <_vsnprintf+0x4f8> if(*format != '%') { 12fbc: 2825 cmp r0, #37 ; 0x25 12fbe: d008 beq.n 12fd2 <_vsnprintf+0x3a> out(*format, buffer, idx++, maxlen); 12fc0: f10b 0501 add.w r5, fp, #1 12fc4: 9b0a ldr r3, [sp, #40] ; 0x28 12fc6: 465a mov r2, fp 12fc8: 990b ldr r1, [sp, #44] ; 0x2c 12fca: 47c8 blx r9 format++; 12fcc: 3401 adds r4, #1 out(*format, buffer, idx++, maxlen); 12fce: 46ab mov fp, r5 continue; 12fd0: e7f0 b.n 12fb4 <_vsnprintf+0x1c> format++; 12fd2: 1c62 adds r2, r4, #1 flags = 0U; 12fd4: 2100 movs r1, #0 12fd6: e001 b.n 12fdc <_vsnprintf+0x44> flags |= FLAGS_ZEROPAD; 12fd8: f041 0101 orr.w r1, r1, #1 12fdc: 4614 mov r4, r2 12fde: 3201 adds r2, #1 switch(*format) { 12fe0: 7823 ldrb r3, [r4, #0] 12fe2: 3b20 subs r3, #32 12fe4: 2b10 cmp r3, #16 12fe6: d831 bhi.n 1304c <_vsnprintf+0xb4> 12fe8: a001 add r0, pc, #4 ; (adr r0, 12ff0 <_vsnprintf+0x58>) 12fea: f850 f023 ldr.w pc, [r0, r3, lsl #2] 12fee: bf00 nop 12ff0: 00013041 .word 0x00013041 12ff4: 0001304d .word 0x0001304d 12ff8: 0001304d .word 0x0001304d 12ffc: 00013047 .word 0x00013047 13000: 0001304d .word 0x0001304d 13004: 0001304d .word 0x0001304d 13008: 0001304d .word 0x0001304d 1300c: 0001304d .word 0x0001304d 13010: 0001304d .word 0x0001304d 13014: 0001304d .word 0x0001304d 13018: 0001304d .word 0x0001304d 1301c: 0001303b .word 0x0001303b 13020: 0001304d .word 0x0001304d 13024: 00013035 .word 0x00013035 13028: 0001304d .word 0x0001304d 1302c: 0001304d .word 0x0001304d 13030: 00012fd9 .word 0x00012fd9 flags |= FLAGS_LEFT; 13034: f041 0102 orr.w r1, r1, #2 break; 13038: e7d0 b.n 12fdc <_vsnprintf+0x44> flags |= FLAGS_PLUS; 1303a: f041 0104 orr.w r1, r1, #4 break; 1303e: e7cd b.n 12fdc <_vsnprintf+0x44> flags |= FLAGS_SPACE; 13040: f041 0108 orr.w r1, r1, #8 break; 13044: e7ca b.n 12fdc <_vsnprintf+0x44> flags |= FLAGS_HASH; 13046: f041 0110 orr.w r1, r1, #16 break; 1304a: e7c7 b.n 12fdc <_vsnprintf+0x44> if(_is_digit(*format)) { 1304c: 7823 ldrb r3, [r4, #0] return (ch >= '0') && (ch <= '9'); 1304e: f1a3 0230 sub.w r2, r3, #48 ; 0x30 if(_is_digit(*format)) { 13052: b2d2 uxtb r2, r2 13054: 2a09 cmp r2, #9 13056: d916 bls.n 13086 <_vsnprintf+0xee> else if(*format == '*') { 13058: 2b2a cmp r3, #42 ; 0x2a 1305a: d022 beq.n 130a2 <_vsnprintf+0x10a> width = 0U; 1305c: 2500 movs r5, #0 if(*format == '.') { 1305e: 7823 ldrb r3, [r4, #0] 13060: 2b2e cmp r3, #46 ; 0x2e 13062: d028 beq.n 130b6 <_vsnprintf+0x11e> precision = 0U; 13064: 2700 movs r7, #0 switch(*format) { 13066: 7823 ldrb r3, [r4, #0] 13068: 3b68 subs r3, #104 ; 0x68 1306a: 2b12 cmp r3, #18 1306c: d84f bhi.n 1310e <_vsnprintf+0x176> 1306e: e8df f003 tbb [pc, r3] 13072: 4eaa .short 0x4eaa 13074: 4e454eb8 .word 0x4e454eb8 13078: 4e4e4e4e .word 0x4e4e4e4e 1307c: 4eb44e4e .word 0x4eb44e4e 13080: 4e4e4e4e .word 0x4e4e4e4e 13084: bc .byte 0xbc 13085: 00 .byte 0x00 13086: 2500 movs r5, #0 i = i * 10U + (unsigned int)(*((*str)++) - '0'); 13088: eb05 0585 add.w r5, r5, r5, lsl #2 1308c: eb03 0545 add.w r5, r3, r5, lsl #1 13090: 3d30 subs r5, #48 ; 0x30 while(_is_digit(**str)) { 13092: f814 3f01 ldrb.w r3, [r4, #1]! return (ch >= '0') && (ch <= '9'); 13096: f1a3 0230 sub.w r2, r3, #48 ; 0x30 while(_is_digit(**str)) { 1309a: b2d2 uxtb r2, r2 1309c: 2a09 cmp r2, #9 1309e: d9f3 bls.n 13088 <_vsnprintf+0xf0> 130a0: e7dd b.n 1305e <_vsnprintf+0xc6> const int w = va_arg(va, int); 130a2: 1d33 adds r3, r6, #4 130a4: 6835 ldr r5, [r6, #0] if(w < 0) { 130a6: 2d00 cmp r5, #0 flags |= FLAGS_LEFT; // reverse padding 130a8: bfbc itt lt 130aa: f041 0102 orrlt.w r1, r1, #2 width = (unsigned int) - w; 130ae: 426d neglt r5, r5 format++; 130b0: 3401 adds r4, #1 const int w = va_arg(va, int); 130b2: 461e mov r6, r3 130b4: e7d3 b.n 1305e <_vsnprintf+0xc6> flags |= FLAGS_PRECISION; 130b6: f441 6180 orr.w r1, r1, #1024 ; 0x400 format++; 130ba: 1c60 adds r0, r4, #1 if(_is_digit(*format)) { 130bc: 7863 ldrb r3, [r4, #1] return (ch >= '0') && (ch <= '9'); 130be: f1a3 0230 sub.w r2, r3, #48 ; 0x30 if(_is_digit(*format)) { 130c2: b2d2 uxtb r2, r2 130c4: 2a09 cmp r2, #9 130c6: d904 bls.n 130d2 <_vsnprintf+0x13a> else if(*format == '*') { 130c8: 2b2a cmp r3, #42 ; 0x2a 130ca: d011 beq.n 130f0 <_vsnprintf+0x158> format++; 130cc: 4604 mov r4, r0 precision = 0U; 130ce: 2700 movs r7, #0 130d0: e7c9 b.n 13066 <_vsnprintf+0xce> 130d2: 2700 movs r7, #0 i = i * 10U + (unsigned int)(*((*str)++) - '0'); 130d4: eb07 0787 add.w r7, r7, r7, lsl #2 130d8: eb03 0747 add.w r7, r3, r7, lsl #1 130dc: 3f30 subs r7, #48 ; 0x30 while(_is_digit(**str)) { 130de: f810 3f01 ldrb.w r3, [r0, #1]! return (ch >= '0') && (ch <= '9'); 130e2: f1a3 0230 sub.w r2, r3, #48 ; 0x30 while(_is_digit(**str)) { 130e6: b2d2 uxtb r2, r2 130e8: 2a09 cmp r2, #9 130ea: d9f3 bls.n 130d4 <_vsnprintf+0x13c> i = i * 10U + (unsigned int)(*((*str)++) - '0'); 130ec: 4604 mov r4, r0 130ee: e7ba b.n 13066 <_vsnprintf+0xce> precision = prec > 0 ? (unsigned int)prec : 0U; 130f0: 6837 ldr r7, [r6, #0] 130f2: ea27 77e7 bic.w r7, r7, r7, asr #31 format++; 130f6: 3402 adds r4, #2 const int prec = (int)va_arg(va, int); 130f8: 3604 adds r6, #4 130fa: e7b4 b.n 13066 <_vsnprintf+0xce> if(*format == 'l') { 130fc: 7863 ldrb r3, [r4, #1] 130fe: 2b6c cmp r3, #108 ; 0x6c flags |= FLAGS_LONG; 13100: bf19 ittee ne 13102: f441 7180 orrne.w r1, r1, #256 ; 0x100 format++; 13106: 3401 addne r4, #1 flags |= FLAGS_LONG_LONG; 13108: f441 7140 orreq.w r1, r1, #768 ; 0x300 format++; 1310c: 3402 addeq r4, #2 switch(*format) { 1310e: 7820 ldrb r0, [r4, #0] 13110: f1a0 0325 sub.w r3, r0, #37 ; 0x25 13114: 2b53 cmp r3, #83 ; 0x53 13116: f200 81b2 bhi.w 1347e <_vsnprintf+0x4e6> 1311a: e8df f013 tbh [pc, r3, lsl #1] 1311e: 01a6 .short 0x01a6 13120: 01b001b0 .word 0x01b001b0 13124: 01b001b0 .word 0x01b001b0 13128: 01b001b0 .word 0x01b001b0 1312c: 01b001b0 .word 0x01b001b0 13130: 01b001b0 .word 0x01b001b0 13134: 01b001b0 .word 0x01b001b0 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: 01b0006d .word 0x01b0006d 13188: 01b001b0 .word 0x01b001b0 1318c: 01b001b0 .word 0x01b001b0 13190: 01b001b0 .word 0x01b001b0 13194: 01b001b0 .word 0x01b001b0 13198: 0114006d .word 0x0114006d 1319c: 01b0006d .word 0x01b0006d 131a0: 01b001b0 .word 0x01b001b0 131a4: 006d01b0 .word 0x006d01b0 131a8: 01b001b0 .word 0x01b001b0 131ac: 01b001b0 .word 0x01b001b0 131b0: 006d01b0 .word 0x006d01b0 131b4: 01b0018f .word 0x01b0018f 131b8: 013701b0 .word 0x013701b0 131bc: 006d01b0 .word 0x006d01b0 131c0: 01b001b0 .word 0x01b001b0 131c4: 006d .short 0x006d if(*format == 'h') { 131c6: 7863 ldrb r3, [r4, #1] 131c8: 2b68 cmp r3, #104 ; 0x68 flags |= FLAGS_SHORT; 131ca: bf19 ittee ne 131cc: f041 0180 orrne.w r1, r1, #128 ; 0x80 format++; 131d0: 3401 addne r4, #1 flags |= FLAGS_CHAR; 131d2: f041 01c0 orreq.w r1, r1, #192 ; 0xc0 format++; 131d6: 3402 addeq r4, #2 131d8: e799 b.n 1310e <_vsnprintf+0x176> flags |= (sizeof(ptrdiff_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG); 131da: f441 7180 orr.w r1, r1, #256 ; 0x100 format++; 131de: 3401 adds r4, #1 break; 131e0: e795 b.n 1310e <_vsnprintf+0x176> flags |= (sizeof(intmax_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG); 131e2: f441 7100 orr.w r1, r1, #512 ; 0x200 format++; 131e6: 3401 adds r4, #1 break; 131e8: e791 b.n 1310e <_vsnprintf+0x176> flags |= (sizeof(size_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG); 131ea: f441 7180 orr.w r1, r1, #256 ; 0x100 format++; 131ee: 3401 adds r4, #1 break; 131f0: e78d b.n 1310e <_vsnprintf+0x176> 131f2: bf00 nop 131f4: 00012c97 .word 0x00012c97 if(*format == 'x' || *format == 'X') { 131f8: 2878 cmp r0, #120 ; 0x78 131fa: f000 81d5 beq.w 135a8 <_vsnprintf+0x610> 131fe: 2858 cmp r0, #88 ; 0x58 13200: f000 8154 beq.w 134ac <_vsnprintf+0x514> else if(*format == 'o') { 13204: 286f cmp r0, #111 ; 0x6f 13206: f000 81d1 beq.w 135ac <_vsnprintf+0x614> else if(*format == 'b') { 1320a: 2862 cmp r0, #98 ; 0x62 1320c: f000 81d0 beq.w 135b0 <_vsnprintf+0x618> flags &= ~FLAGS_HASH; // no hash for dec format 13210: f021 0310 bic.w r3, r1, #16 if((*format != 'i') && (*format != 'd')) { 13214: 2869 cmp r0, #105 ; 0x69 13216: d126 bne.n 13266 <_vsnprintf+0x2ce> if(flags & FLAGS_PRECISION) { 13218: f411 6f80 tst.w r1, #1024 ; 0x400 1321c: f040 81c0 bne.w 135a0 <_vsnprintf+0x608> base = 10U; 13220: 220a movs r2, #10 if(flags & FLAGS_LONG_LONG) { 13222: f413 7f00 tst.w r3, #512 ; 0x200 13226: d124 bne.n 13272 <_vsnprintf+0x2da> else if(flags & FLAGS_LONG) { 13228: f413 7f80 tst.w r3, #256 ; 0x100 1322c: d144 bne.n 132b8 <_vsnprintf+0x320> const int value = (flags & FLAGS_CHAR) ? (char)va_arg(va, int) : (flags & FLAGS_SHORT) ? (short int)va_arg(va, 1322e: f013 0f40 tst.w r3, #64 ; 0x40 13232: d157 bne.n 132e4 <_vsnprintf+0x34c> int) : va_arg(va, int); 13234: f013 0f80 tst.w r3, #128 ; 0x80 13238: bf14 ite ne 1323a: f9b6 1000 ldrshne.w r1, [r6] 1323e: 6831 ldreq r1, [r6, #0] 13240: 3604 adds r6, #4 idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned int)(value > 0 ? value : 0 - value), value < 0, base, precision, 13242: 9305 str r3, [sp, #20] 13244: 9504 str r5, [sp, #16] 13246: 9703 str r7, [sp, #12] 13248: 9202 str r2, [sp, #8] 1324a: 0fcb lsrs r3, r1, #31 1324c: 9301 str r3, [sp, #4] 1324e: 2900 cmp r1, #0 13250: bfb8 it lt 13252: 4249 neglt r1, r1 13254: 9100 str r1, [sp, #0] 13256: 9b0a ldr r3, [sp, #40] ; 0x28 13258: 465a mov r2, fp 1325a: 990b ldr r1, [sp, #44] ; 0x2c 1325c: 4648 mov r0, r9 1325e: 4dac ldr r5, [pc, #688] ; (13510 <_vsnprintf+0x578>) 13260: 47a8 blx r5 13262: 4683 mov fp, r0 13264: e152 b.n 1350c <_vsnprintf+0x574> if((*format != 'i') && (*format != 'd')) { 13266: 2864 cmp r0, #100 ; 0x64 13268: f000 8156 beq.w 13518 <_vsnprintf+0x580> flags &= ~FLAGS_HASH; // no hash for dec format 1326c: 4619 mov r1, r3 base = 10U; 1326e: 220a movs r2, #10 13270: e11f b.n 134b2 <_vsnprintf+0x51a> const long long value = va_arg(va, long long); 13272: 1df1 adds r1, r6, #7 13274: f021 0107 bic.w r1, r1, #7 13278: f101 0608 add.w r6, r1, #8 1327c: 6808 ldr r0, [r1, #0] 1327e: 6849 ldr r1, [r1, #4] idx = _ntoa_long_long(out, buffer, idx, maxlen, (unsigned long long)(value > 0 ? value : 0 - value), value < 0, base, 13280: 9308 str r3, [sp, #32] 13282: 9507 str r5, [sp, #28] 13284: 9706 str r7, [sp, #24] 13286: 9204 str r2, [sp, #16] 13288: 2300 movs r3, #0 1328a: 9305 str r3, [sp, #20] 1328c: 0fcb lsrs r3, r1, #31 1328e: 9302 str r3, [sp, #8] 13290: 4602 mov r2, r0 13292: 460b mov r3, r1 13294: 2800 cmp r0, #0 13296: f173 0100 sbcs.w r1, r3, #0 1329a: db09 blt.n 132b0 <_vsnprintf+0x318> 1329c: e9cd 2300 strd r2, r3, [sp] 132a0: 9b0a ldr r3, [sp, #40] ; 0x28 132a2: 465a mov r2, fp 132a4: 990b ldr r1, [sp, #44] ; 0x2c 132a6: 4648 mov r0, r9 132a8: 4d9a ldr r5, [pc, #616] ; (13514 <_vsnprintf+0x57c>) 132aa: 47a8 blx r5 132ac: 4683 mov fp, r0 132ae: e12d b.n 1350c <_vsnprintf+0x574> 132b0: 4242 negs r2, r0 132b2: eb63 0343 sbc.w r3, r3, r3, lsl #1 132b6: e7f1 b.n 1329c <_vsnprintf+0x304> const long value = va_arg(va, long); 132b8: f106 0804 add.w r8, r6, #4 132bc: 6831 ldr r1, [r6, #0] idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)(value > 0 ? value : 0 - value), value < 0, base, precision, 132be: 9305 str r3, [sp, #20] 132c0: 9504 str r5, [sp, #16] 132c2: 9703 str r7, [sp, #12] 132c4: 9202 str r2, [sp, #8] 132c6: 0fcb lsrs r3, r1, #31 132c8: 9301 str r3, [sp, #4] 132ca: 2900 cmp r1, #0 132cc: bfb8 it lt 132ce: 4249 neglt r1, r1 132d0: 9100 str r1, [sp, #0] 132d2: 9b0a ldr r3, [sp, #40] ; 0x28 132d4: 465a mov r2, fp 132d6: 990b ldr r1, [sp, #44] ; 0x2c 132d8: 4648 mov r0, r9 132da: 4d8d ldr r5, [pc, #564] ; (13510 <_vsnprintf+0x578>) 132dc: 47a8 blx r5 132de: 4683 mov fp, r0 const long value = va_arg(va, long); 132e0: 4646 mov r6, r8 132e2: e113 b.n 1350c <_vsnprintf+0x574> 132e4: 7831 ldrb r1, [r6, #0] const int value = (flags & FLAGS_CHAR) ? (char)va_arg(va, int) : (flags & FLAGS_SHORT) ? (short int)va_arg(va, 132e6: 3604 adds r6, #4 132e8: e7ab b.n 13242 <_vsnprintf+0x2aa> idx = _ntoa_long_long(out, buffer, idx, maxlen, va_arg(va, unsigned long long), false, base, precision, width, flags); 132ea: 1df1 adds r1, r6, #7 132ec: f021 0107 bic.w r1, r1, #7 132f0: f101 0608 add.w r6, r1, #8 132f4: 9308 str r3, [sp, #32] 132f6: 9507 str r5, [sp, #28] 132f8: 9706 str r7, [sp, #24] 132fa: 2300 movs r3, #0 132fc: 9204 str r2, [sp, #16] 132fe: 9305 str r3, [sp, #20] 13300: 9302 str r3, [sp, #8] 13302: e9d1 2300 ldrd r2, r3, [r1] 13306: e9cd 2300 strd r2, r3, [sp] 1330a: 9b0a ldr r3, [sp, #40] ; 0x28 1330c: 465a mov r2, fp 1330e: 990b ldr r1, [sp, #44] ; 0x2c 13310: 4648 mov r0, r9 13312: 4d80 ldr r5, [pc, #512] ; (13514 <_vsnprintf+0x57c>) 13314: 47a8 blx r5 13316: 4683 mov fp, r0 13318: e0f8 b.n 1350c <_vsnprintf+0x574> idx = _ntoa_long(out, buffer, idx, maxlen, va_arg(va, unsigned long), false, base, precision, width, flags); 1331a: f106 0804 add.w r8, r6, #4 1331e: 9305 str r3, [sp, #20] 13320: 9504 str r5, [sp, #16] 13322: 9703 str r7, [sp, #12] 13324: 9202 str r2, [sp, #8] 13326: 2300 movs r3, #0 13328: 9301 str r3, [sp, #4] 1332a: 6833 ldr r3, [r6, #0] 1332c: 9300 str r3, [sp, #0] 1332e: 9b0a ldr r3, [sp, #40] ; 0x28 13330: 465a mov r2, fp 13332: 990b ldr r1, [sp, #44] ; 0x2c 13334: 4648 mov r0, r9 13336: 4d76 ldr r5, [pc, #472] ; (13510 <_vsnprintf+0x578>) 13338: 47a8 blx r5 1333a: 4683 mov fp, r0 1333c: 4646 mov r6, r8 1333e: e0e5 b.n 1350c <_vsnprintf+0x574> 13340: 7831 ldrb r1, [r6, #0] const unsigned int value = (flags & FLAGS_CHAR) ? (unsigned char)va_arg(va, 13342: 3604 adds r6, #4 13344: e0d4 b.n 134f0 <_vsnprintf+0x558> if(!(flags & FLAGS_LEFT)) { 13346: f011 0f02 tst.w r1, #2 1334a: f040 80ea bne.w 13522 <_vsnprintf+0x58a> while(l++ < width) { 1334e: 2d01 cmp r5, #1 13350: f240 8103 bls.w 1355a <_vsnprintf+0x5c2> 13354: f10b 37ff add.w r7, fp, #4294967295 13358: 442f add r7, r5 out(' ', buffer, idx++, maxlen); 1335a: f04f 0820 mov.w r8, #32 1335e: 465a mov r2, fp 13360: 1c55 adds r5, r2, #1 13362: 9b0a ldr r3, [sp, #40] ; 0x28 13364: 990b ldr r1, [sp, #44] ; 0x2c 13366: 4640 mov r0, r8 13368: 47c8 blx r9 1336a: 462a mov r2, r5 while(l++ < width) { 1336c: 42bd cmp r5, r7 1336e: d1f7 bne.n 13360 <_vsnprintf+0x3c8> out((char)va_arg(va, int), buffer, idx++, maxlen); 13370: 1d37 adds r7, r6, #4 13372: f105 0b01 add.w fp, r5, #1 13376: 9b0a ldr r3, [sp, #40] ; 0x28 13378: 462a mov r2, r5 1337a: 990b ldr r1, [sp, #44] ; 0x2c 1337c: 7830 ldrb r0, [r6, #0] 1337e: 47c8 blx r9 13380: 463e mov r6, r7 format++; 13382: 3401 adds r4, #1 break; 13384: e616 b.n 12fb4 <_vsnprintf+0x1c> out((char)va_arg(va, int), buffer, idx++, maxlen); 13386: 9e0c ldr r6, [sp, #48] ; 0x30 13388: 46bb mov fp, r7 1338a: e7fa b.n 13382 <_vsnprintf+0x3ea> const char * p = va_arg(va, char *); 1338c: 1d33 adds r3, r6, #4 1338e: 930e str r3, [sp, #56] ; 0x38 13390: 6833 ldr r3, [r6, #0] 13392: 461a mov r2, r3 13394: 930c str r3, [sp, #48] ; 0x30 unsigned int l = _strnlen_s(p, precision ? precision : (size_t) -1); 13396: 2f00 cmp r7, #0 13398: bf14 ite ne 1339a: 463b movne r3, r7 1339c: f04f 33ff moveq.w r3, #4294967295 for(s = str; *s && maxsize--; ++s); 133a0: 7810 ldrb r0, [r2, #0] 133a2: 2800 cmp r0, #0 133a4: f000 80db beq.w 1355e <_vsnprintf+0x5c6> 133a8: f812 6f01 ldrb.w r6, [r2, #1]! 133ac: b10e cbz r6, 133b2 <_vsnprintf+0x41a> 133ae: 3b01 subs r3, #1 133b0: d1fa bne.n 133a8 <_vsnprintf+0x410> return (unsigned int)(s - str); 133b2: 9b0c ldr r3, [sp, #48] ; 0x30 133b4: 1ad3 subs r3, r2, r3 133b6: 930d str r3, [sp, #52] ; 0x34 if(flags & FLAGS_PRECISION) { 133b8: f411 6a80 ands.w sl, r1, #1024 ; 0x400 133bc: d003 beq.n 133c6 <_vsnprintf+0x42e> l = (l < precision ? l : precision); 133be: 42bb cmp r3, r7 133c0: bf28 it cs 133c2: 463b movcs r3, r7 133c4: 930d str r3, [sp, #52] ; 0x34 if(!(flags & FLAGS_LEFT)) { 133c6: f011 0302 ands.w r3, r1, #2 133ca: 930f str r3, [sp, #60] ; 0x3c 133cc: f040 80ce bne.w 1356c <_vsnprintf+0x5d4> while(l++ < width) { 133d0: 990d ldr r1, [sp, #52] ; 0x34 133d2: 460b mov r3, r1 133d4: 3301 adds r3, #1 133d6: 428d cmp r5, r1 133d8: f240 80c3 bls.w 13562 <_vsnprintf+0x5ca> 133dc: eb05 080b add.w r8, r5, fp 133e0: eba8 0801 sub.w r8, r8, r1 out(' ', buffer, idx++, maxlen); 133e4: 465a mov r2, fp 133e6: 1c56 adds r6, r2, #1 133e8: 9b0a ldr r3, [sp, #40] ; 0x28 133ea: 990b ldr r1, [sp, #44] ; 0x2c 133ec: 2020 movs r0, #32 133ee: 47c8 blx r9 133f0: 4632 mov r2, r6 while(l++ < width) { 133f2: 4546 cmp r6, r8 133f4: d1f7 bne.n 133e6 <_vsnprintf+0x44e> 133f6: 1c6b adds r3, r5, #1 133f8: 930d str r3, [sp, #52] ; 0x34 while((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) { 133fa: 9b0c ldr r3, [sp, #48] ; 0x30 133fc: 7818 ldrb r0, [r3, #0] 133fe: 2800 cmp r0, #0 13400: f000 80b2 beq.w 13568 <_vsnprintf+0x5d0> 13404: f8dd 8030 ldr.w r8, [sp, #48] ; 0x30 13408: 4632 mov r2, r6 1340a: 4656 mov r6, sl 1340c: e009 b.n 13422 <_vsnprintf+0x48a> 1340e: 461f mov r7, r3 out(*(p++), buffer, idx++, maxlen); 13410: f102 0b01 add.w fp, r2, #1 13414: 9b0a ldr r3, [sp, #40] ; 0x28 13416: 990b ldr r1, [sp, #44] ; 0x2c 13418: 47c8 blx r9 while((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) { 1341a: f818 0f01 ldrb.w r0, [r8, #1]! 1341e: b130 cbz r0, 1342e <_vsnprintf+0x496> out(*(p++), buffer, idx++, maxlen); 13420: 465a mov r2, fp while((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) { 13422: 2e00 cmp r6, #0 13424: d0f4 beq.n 13410 <_vsnprintf+0x478> 13426: 1e7b subs r3, r7, #1 13428: 2f00 cmp r7, #0 1342a: d1f0 bne.n 1340e <_vsnprintf+0x476> 1342c: 4693 mov fp, r2 if(flags & FLAGS_LEFT) { 1342e: 9b0f ldr r3, [sp, #60] ; 0x3c 13430: 2b00 cmp r3, #0 13432: f040 809f bne.w 13574 <_vsnprintf+0x5dc> format++; 13436: 3401 adds r4, #1 const char * p = va_arg(va, char *); 13438: 9e0e ldr r6, [sp, #56] ; 0x38 break; 1343a: e5bb b.n 12fb4 <_vsnprintf+0x1c> idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)((uintptr_t)va_arg(va, void *)), false, 16U, precision, width, 1343c: 1d35 adds r5, r6, #4 flags |= FLAGS_ZEROPAD | FLAGS_UPPERCASE; 1343e: 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, 13442: 9105 str r1, [sp, #20] 13444: 2308 movs r3, #8 13446: 9304 str r3, [sp, #16] 13448: 9703 str r7, [sp, #12] 1344a: 2310 movs r3, #16 1344c: 9302 str r3, [sp, #8] 1344e: 2300 movs r3, #0 13450: 9301 str r3, [sp, #4] 13452: 6833 ldr r3, [r6, #0] 13454: 9300 str r3, [sp, #0] 13456: 9b0a ldr r3, [sp, #40] ; 0x28 13458: 465a mov r2, fp 1345a: 990b ldr r1, [sp, #44] ; 0x2c 1345c: 4648 mov r0, r9 1345e: 4e2c ldr r6, [pc, #176] ; (13510 <_vsnprintf+0x578>) 13460: 47b0 blx r6 13462: 4683 mov fp, r0 format++; 13464: 3401 adds r4, #1 idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)((uintptr_t)va_arg(va, void *)), false, 16U, precision, width, 13466: 462e mov r6, r5 break; 13468: e5a4 b.n 12fb4 <_vsnprintf+0x1c> out('%', buffer, idx++, maxlen); 1346a: f10b 0501 add.w r5, fp, #1 1346e: 9b0a ldr r3, [sp, #40] ; 0x28 13470: 465a mov r2, fp 13472: 990b ldr r1, [sp, #44] ; 0x2c 13474: 2025 movs r0, #37 ; 0x25 13476: 47c8 blx r9 format++; 13478: 3401 adds r4, #1 out('%', buffer, idx++, maxlen); 1347a: 46ab mov fp, r5 break; 1347c: e59a b.n 12fb4 <_vsnprintf+0x1c> default : out(*format, buffer, idx++, maxlen); 1347e: f10b 0501 add.w r5, fp, #1 13482: 9b0a ldr r3, [sp, #40] ; 0x28 13484: 465a mov r2, fp 13486: 990b ldr r1, [sp, #44] ; 0x2c 13488: 47c8 blx r9 format++; 1348a: 3401 adds r4, #1 out(*format, buffer, idx++, maxlen); 1348c: 46ab mov fp, r5 break; 1348e: e591 b.n 12fb4 <_vsnprintf+0x1c> } } // termination out((char)0, buffer, idx < maxlen ? idx : maxlen - 1U, maxlen); 13490: 9a0a ldr r2, [sp, #40] ; 0x28 13492: 4593 cmp fp, r2 13494: bf2c ite cs 13496: f102 32ff addcs.w r2, r2, #4294967295 1349a: 465a movcc r2, fp 1349c: 9b0a ldr r3, [sp, #40] ; 0x28 1349e: 990b ldr r1, [sp, #44] ; 0x2c 134a0: 2000 movs r0, #0 134a2: 47c8 blx r9 // return written chars without terminating \0 return (int)idx; } 134a4: 4658 mov r0, fp 134a6: b011 add sp, #68 ; 0x44 134a8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} flags |= FLAGS_UPPERCASE; 134ac: f041 0120 orr.w r1, r1, #32 base = 16U; 134b0: 2210 movs r2, #16 flags &= ~(FLAGS_PLUS | FLAGS_SPACE); 134b2: f021 030c bic.w r3, r1, #12 if(flags & FLAGS_PRECISION) { 134b6: f411 6f80 tst.w r1, #1024 ; 0x400 134ba: d007 beq.n 134cc <_vsnprintf+0x534> flags &= ~FLAGS_ZEROPAD; 134bc: f021 030d bic.w r3, r1, #13 if((*format == 'i') || (*format == 'd')) { 134c0: 2869 cmp r0, #105 ; 0x69 134c2: f43f aeae beq.w 13222 <_vsnprintf+0x28a> 134c6: 2864 cmp r0, #100 ; 0x64 134c8: f43f aeab beq.w 13222 <_vsnprintf+0x28a> if(flags & FLAGS_LONG_LONG) { 134cc: f413 7f00 tst.w r3, #512 ; 0x200 134d0: f47f af0b bne.w 132ea <_vsnprintf+0x352> else if(flags & FLAGS_LONG) { 134d4: f413 7f80 tst.w r3, #256 ; 0x100 134d8: f47f af1f bne.w 1331a <_vsnprintf+0x382> unsigned int) : (flags & FLAGS_SHORT) ? (unsigned short int)va_arg(va, unsigned int) : va_arg(va, unsigned int); 134dc: f013 0f40 tst.w r3, #64 ; 0x40 134e0: f47f af2e bne.w 13340 <_vsnprintf+0x3a8> 134e4: f013 0f80 tst.w r3, #128 ; 0x80 134e8: bf14 ite ne 134ea: 8831 ldrhne r1, [r6, #0] 134ec: 6831 ldreq r1, [r6, #0] 134ee: 3604 adds r6, #4 idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags); 134f0: 9305 str r3, [sp, #20] 134f2: 9504 str r5, [sp, #16] 134f4: 9703 str r7, [sp, #12] 134f6: 9202 str r2, [sp, #8] 134f8: 2300 movs r3, #0 134fa: 9301 str r3, [sp, #4] 134fc: 9100 str r1, [sp, #0] 134fe: 9b0a ldr r3, [sp, #40] ; 0x28 13500: 465a mov r2, fp 13502: 990b ldr r1, [sp, #44] ; 0x2c 13504: 4648 mov r0, r9 13506: 4d02 ldr r5, [pc, #8] ; (13510 <_vsnprintf+0x578>) 13508: 47a8 blx r5 1350a: 4683 mov fp, r0 format++; 1350c: 3401 adds r4, #1 break; 1350e: e551 b.n 12fb4 <_vsnprintf+0x1c> 13510: 00012e59 .word 0x00012e59 13514: 00012edd .word 0x00012edd if(flags & FLAGS_PRECISION) { 13518: f411 6f80 tst.w r1, #1024 ; 0x400 1351c: d13c bne.n 13598 <_vsnprintf+0x600> base = 10U; 1351e: 220a movs r2, #10 13520: e67f b.n 13222 <_vsnprintf+0x28a> out((char)va_arg(va, int), buffer, idx++, maxlen); 13522: 1d33 adds r3, r6, #4 13524: 930c str r3, [sp, #48] ; 0x30 13526: f10b 0701 add.w r7, fp, #1 1352a: 9b0a ldr r3, [sp, #40] ; 0x28 1352c: 465a mov r2, fp 1352e: 990b ldr r1, [sp, #44] ; 0x2c 13530: 7830 ldrb r0, [r6, #0] 13532: 47c8 blx r9 while(l++ < width) { 13534: 2d01 cmp r5, #1 13536: f67f af26 bls.w 13386 <_vsnprintf+0x3ee> 1353a: eb05 0a0b add.w sl, r5, fp out(' ', buffer, idx++, maxlen); 1353e: f04f 0820 mov.w r8, #32 13542: 463a mov r2, r7 13544: 1c56 adds r6, r2, #1 13546: 9b0a ldr r3, [sp, #40] ; 0x28 13548: 990b ldr r1, [sp, #44] ; 0x2c 1354a: 4640 mov r0, r8 1354c: 47c8 blx r9 1354e: 4632 mov r2, r6 while(l++ < width) { 13550: 45b2 cmp sl, r6 13552: d1f7 bne.n 13544 <_vsnprintf+0x5ac> 13554: 44ab add fp, r5 out((char)va_arg(va, int), buffer, idx++, maxlen); 13556: 9e0c ldr r6, [sp, #48] ; 0x30 13558: e713 b.n 13382 <_vsnprintf+0x3ea> while(l++ < width) { 1355a: 465d mov r5, fp 1355c: e708 b.n 13370 <_vsnprintf+0x3d8> for(s = str; *s && maxsize--; ++s); 1355e: 9a0c ldr r2, [sp, #48] ; 0x30 13560: e727 b.n 133b2 <_vsnprintf+0x41a> while(l++ < width) { 13562: 930d str r3, [sp, #52] ; 0x34 13564: 465e mov r6, fp 13566: e748 b.n 133fa <_vsnprintf+0x462> while((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) { 13568: 46b3 mov fp, r6 1356a: e764 b.n 13436 <_vsnprintf+0x49e> 1356c: 465e mov r6, fp 1356e: 2800 cmp r0, #0 13570: f47f af48 bne.w 13404 <_vsnprintf+0x46c> while(l++ < width) { 13574: 9a0d ldr r2, [sp, #52] ; 0x34 13576: 4295 cmp r5, r2 13578: f67f af5d bls.w 13436 <_vsnprintf+0x49e> 1357c: 445d add r5, fp 1357e: 1aad subs r5, r5, r2 13580: 465a mov r2, fp out(' ', buffer, idx++, maxlen); 13582: 2620 movs r6, #32 13584: f102 0b01 add.w fp, r2, #1 13588: 9b0a ldr r3, [sp, #40] ; 0x28 1358a: 990b ldr r1, [sp, #44] ; 0x2c 1358c: 4630 mov r0, r6 1358e: 47c8 blx r9 13590: 465a mov r2, fp while(l++ < width) { 13592: 45ab cmp fp, r5 13594: d1f6 bne.n 13584 <_vsnprintf+0x5ec> 13596: e74e b.n 13436 <_vsnprintf+0x49e> flags &= ~FLAGS_ZEROPAD; 13598: f021 0311 bic.w r3, r1, #17 base = 10U; 1359c: 220a movs r2, #10 1359e: e640 b.n 13222 <_vsnprintf+0x28a> flags &= ~FLAGS_ZEROPAD; 135a0: f021 0311 bic.w r3, r1, #17 base = 10U; 135a4: 220a movs r2, #10 135a6: e63c b.n 13222 <_vsnprintf+0x28a> base = 16U; 135a8: 2210 movs r2, #16 135aa: e782 b.n 134b2 <_vsnprintf+0x51a> base = 8U; 135ac: 2208 movs r2, #8 135ae: e780 b.n 134b2 <_vsnprintf+0x51a> base = 2U; 135b0: 2202 movs r2, #2 135b2: e77e b.n 134b2 <_vsnprintf+0x51a> 000135b4 : va_end(va); return ret; } int lv_vsnprintf(char * buffer, size_t count, const char * format, va_list va) { 135b4: b510 push {r4, lr} 135b6: b082 sub sp, #8 return _vsnprintf(_out_buffer, buffer, count, format, va); 135b8: 9300 str r3, [sp, #0] 135ba: 4613 mov r3, r2 135bc: 460a mov r2, r1 135be: 4601 mov r1, r0 135c0: 4802 ldr r0, [pc, #8] ; (135cc ) 135c2: 4c03 ldr r4, [pc, #12] ; (135d0 ) 135c4: 47a0 blx r4 } 135c6: b002 add sp, #8 135c8: bd10 pop {r4, pc} 135ca: bf00 nop 135cc: 00012c8f .word 0x00012c8f 135d0: 00012f99 .word 0x00012f99 000135d4 <_lv_task_core_init>: /** * Init the lv_task module */ void _lv_task_core_init(void) { 135d4: b508 push {r3, lr} _lv_ll_init(&LV_GC_ROOT(_lv_task_ll), sizeof(lv_task_t)); 135d6: 2118 movs r1, #24 135d8: 4804 ldr r0, [pc, #16] ; (135ec <_lv_task_core_init+0x18>) 135da: 4b05 ldr r3, [pc, #20] ; (135f0 <_lv_task_core_init+0x1c>) 135dc: 4798 blx r3 task_list_changed = false; 135de: 4b05 ldr r3, [pc, #20] ; (135f4 <_lv_task_core_init+0x20>) 135e0: 2200 movs r2, #0 135e2: 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; 135e4: 2201 movs r2, #1 135e6: 705a strb r2, [r3, #1] 135e8: bd08 pop {r3, pc} 135ea: bf00 nop 135ec: 20006c80 .word 0x20006c80 135f0: 00011ee1 .word 0x00011ee1 135f4: 20006bb8 .word 0x20006bb8 000135f8 : { 135f8: b5f0 push {r4, r5, r6, r7, lr} 135fa: b083 sub sp, #12 tmp = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); 135fc: 4837 ldr r0, [pc, #220] ; (136dc ) 135fe: 4b38 ldr r3, [pc, #224] ; (136e0 ) 13600: 4798 blx r3 if(NULL == tmp) { 13602: b310 cbz r0, 1364a 13604: 4604 mov r4, r0 tmp = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), tmp); 13606: 4e35 ldr r6, [pc, #212] ; (136dc ) 13608: 4d36 ldr r5, [pc, #216] ; (136e4 ) if(tmp->prio <= DEF_PRIO) { 1360a: 7d23 ldrb r3, [r4, #20] 1360c: f003 0307 and.w r3, r3, #7 13610: 2b03 cmp r3, #3 13612: dd30 ble.n 13676 tmp = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), tmp); 13614: 4621 mov r1, r4 13616: 4630 mov r0, r6 13618: 47a8 blx r5 } while(tmp != NULL); 1361a: 4604 mov r4, r0 1361c: 2800 cmp r0, #0 1361e: d1f4 bne.n 1360a new_task = _lv_ll_ins_tail(&LV_GC_ROOT(_lv_task_ll)); 13620: 482e ldr r0, [pc, #184] ; (136dc ) 13622: 4b31 ldr r3, [pc, #196] ; (136e8 ) 13624: 4798 blx r3 13626: 4605 mov r5, r0 LV_ASSERT_MEM(new_task); 13628: 4b30 ldr r3, [pc, #192] ; (136ec ) 1362a: 4798 blx r3 1362c: 2800 cmp r0, #0 1362e: d152 bne.n 136d6 13630: 4b2f ldr r3, [pc, #188] ; (136f0 ) 13632: 9300 str r3, [sp, #0] 13634: 22e5 movs r2, #229 ; 0xe5 13636: 492f ldr r1, [pc, #188] ; (136f4 ) 13638: 2003 movs r0, #3 1363a: 4c2f ldr r4, [pc, #188] ; (136f8 ) 1363c: 47a0 blx r4 1363e: 462a mov r2, r5 13640: 2300 movs r3, #0 13642: 482e ldr r0, [pc, #184] ; (136fc ) 13644: 492e ldr r1, [pc, #184] ; (13700 ) 13646: 4788 blx r1 13648: e7fe b.n 13648 new_task = _lv_ll_ins_head(&LV_GC_ROOT(_lv_task_ll)); 1364a: 4824 ldr r0, [pc, #144] ; (136dc ) 1364c: 4b2d ldr r3, [pc, #180] ; (13704 ) 1364e: 4798 blx r3 13650: 4605 mov r5, r0 LV_ASSERT_MEM(new_task); 13652: 4b26 ldr r3, [pc, #152] ; (136ec ) 13654: 4798 blx r3 13656: b960 cbnz r0, 13672 13658: 4b25 ldr r3, [pc, #148] ; (136f0 ) 1365a: 9300 str r3, [sp, #0] 1365c: 22d3 movs r2, #211 ; 0xd3 1365e: 4925 ldr r1, [pc, #148] ; (136f4 ) 13660: 2003 movs r0, #3 13662: 4c25 ldr r4, [pc, #148] ; (136f8 ) 13664: 47a0 blx r4 13666: 462a mov r2, r5 13668: 2300 movs r3, #0 1366a: 4824 ldr r0, [pc, #144] ; (136fc ) 1366c: 4924 ldr r1, [pc, #144] ; (13700 ) 1366e: 4788 blx r1 13670: e7fe b.n 13670 if(new_task == NULL) return NULL; 13672: b95d cbnz r5, 1368c 13674: e01f b.n 136b6 new_task = _lv_ll_ins_prev(&LV_GC_ROOT(_lv_task_ll), tmp); 13676: 4621 mov r1, r4 13678: 4818 ldr r0, [pc, #96] ; (136dc ) 1367a: 4b23 ldr r3, [pc, #140] ; (13708 ) 1367c: 4798 blx r3 1367e: 4605 mov r5, r0 LV_ASSERT_MEM(new_task); 13680: 4b1a ldr r3, [pc, #104] ; (136ec ) 13682: 4798 blx r3 13684: b1d0 cbz r0, 136bc if(new_task == NULL) return NULL; 13686: b1b5 cbz r5, 136b6 if(tmp == NULL) { 13688: 2c00 cmp r4, #0 1368a: d0c9 beq.n 13620 task_list_changed = true; 1368c: 4c1f ldr r4, [pc, #124] ; (1370c ) 1368e: 2601 movs r6, #1 13690: 7026 strb r6, [r4, #0] new_task->period = DEF_PERIOD; 13692: f44f 73fa mov.w r3, #500 ; 0x1f4 13696: 602b str r3, [r5, #0] new_task->task_cb = NULL; 13698: 2700 movs r7, #0 1369a: 60af str r7, [r5, #8] new_task->prio = DEF_PRIO; 1369c: 7d2b ldrb r3, [r5, #20] 1369e: 2203 movs r2, #3 136a0: f362 0302 bfi r3, r2, #0, #3 136a4: 752b strb r3, [r5, #20] new_task->repeat_count = -1; 136a6: f04f 33ff mov.w r3, #4294967295 136aa: 612b str r3, [r5, #16] new_task->last_run = lv_tick_get(); 136ac: 4b18 ldr r3, [pc, #96] ; (13710 ) 136ae: 4798 blx r3 136b0: 6068 str r0, [r5, #4] new_task->user_data = NULL; 136b2: 60ef str r7, [r5, #12] task_created = true; 136b4: 70a6 strb r6, [r4, #2] } 136b6: 4628 mov r0, r5 136b8: b003 add sp, #12 136ba: bdf0 pop {r4, r5, r6, r7, pc} LV_ASSERT_MEM(new_task); 136bc: 4b0c ldr r3, [pc, #48] ; (136f0 ) 136be: 9300 str r3, [sp, #0] 136c0: 22db movs r2, #219 ; 0xdb 136c2: 490c ldr r1, [pc, #48] ; (136f4 ) 136c4: 2003 movs r0, #3 136c6: 4c0c ldr r4, [pc, #48] ; (136f8 ) 136c8: 47a0 blx r4 136ca: 462a mov r2, r5 136cc: 2300 movs r3, #0 136ce: 480b ldr r0, [pc, #44] ; (136fc ) 136d0: 490b ldr r1, [pc, #44] ; (13700 ) 136d2: 4788 blx r1 136d4: e7fe b.n 136d4 if(new_task == NULL) return NULL; 136d6: 2d00 cmp r5, #0 136d8: d1d8 bne.n 1368c 136da: e7ec b.n 136b6 136dc: 20006c80 .word 0x20006c80 136e0: 00011f91 .word 0x00011f91 136e4: 00011fa5 .word 0x00011fa5 136e8: 00011f45 .word 0x00011f45 136ec: 00002299 .word 0x00002299 136f0: 00029494 .word 0x00029494 136f4: 000294bc .word 0x000294bc 136f8: 00012245 .word 0x00012245 136fc: 00023fc0 .word 0x00023fc0 13700: 000022a1 .word 0x000022a1 13704: 00011ef9 .word 0x00011ef9 13708: 00011ffd .word 0x00011ffd 1370c: 20006bb8 .word 0x20006bb8 13710: 00011041 .word 0x00011041 00013714 : { 13714: b510 push {r4, lr} 13716: 4604 mov r4, r0 _lv_ll_remove(&LV_GC_ROOT(_lv_task_ll), task); 13718: 4601 mov r1, r0 1371a: 4809 ldr r0, [pc, #36] ; (13740 ) 1371c: 4b09 ldr r3, [pc, #36] ; (13744 ) 1371e: 4798 blx r3 task_list_changed = true; 13720: 2201 movs r2, #1 13722: 4b09 ldr r3, [pc, #36] ; (13748 ) 13724: 701a strb r2, [r3, #0] lv_mem_free(task); 13726: 4620 mov r0, r4 13728: 4b08 ldr r3, [pc, #32] ; (1374c ) 1372a: 4798 blx r3 if(LV_GC_ROOT(_lv_task_act) == task) task_deleted = true; /*The active task was deleted*/ 1372c: 4b08 ldr r3, [pc, #32] ; (13750 ) 1372e: 681b ldr r3, [r3, #0] 13730: 429c cmp r4, r3 13732: d000 beq.n 13736 13734: bd10 pop {r4, pc} 13736: 2201 movs r2, #1 13738: 4b03 ldr r3, [pc, #12] ; (13748 ) 1373a: 70da strb r2, [r3, #3] } 1373c: e7fa b.n 13734 1373e: bf00 nop 13740: 20006c80 .word 0x20006c80 13744: 0001207d .word 0x0001207d 13748: 20006bb8 .word 0x20006bb8 1374c: 000124ad .word 0x000124ad 13750: 20006d4c .word 0x20006d4c 00013754 : * 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) { 13754: b510 push {r4, lr} 13756: 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); 13758: 6840 ldr r0, [r0, #4] 1375a: 4b12 ldr r3, [pc, #72] ; (137a4 ) 1375c: 4798 blx r3 if(elp >= task->period) 1375e: 6823 ldr r3, [r4, #0] 13760: 4298 cmp r0, r3 13762: d201 bcs.n 13768 bool exec = false; 13764: 2000 movs r0, #0 13766: bd10 pop {r4, pc} task->last_run = lv_tick_get(); 13768: 4b0f ldr r3, [pc, #60] ; (137a8 ) 1376a: 4798 blx r3 1376c: 6060 str r0, [r4, #4] task_deleted = false; 1376e: 4b0f ldr r3, [pc, #60] ; (137ac ) 13770: 2200 movs r2, #0 13772: 70da strb r2, [r3, #3] task_created = false; 13774: 709a strb r2, [r3, #2] if(task->task_cb) task->task_cb(task); 13776: 68a3 ldr r3, [r4, #8] 13778: b12b cbz r3, 13786 1377a: 4620 mov r0, r4 1377c: 4798 blx r3 if(task_deleted == false) { /*The task might be deleted by itself as well*/ 1377e: 4b0b ldr r3, [pc, #44] ; (137ac ) 13780: 78d8 ldrb r0, [r3, #3] 13782: b100 cbz r0, 13786 } 13784: bd10 pop {r4, pc} if(task->repeat_count > 0) { 13786: 6923 ldr r3, [r4, #16] 13788: 2b00 cmp r3, #0 task->repeat_count--; 1378a: bfc4 itt gt 1378c: f103 33ff addgt.w r3, r3, #4294967295 13790: 6123 strgt r3, [r4, #16] if(task->repeat_count == 0) { 13792: 6923 ldr r3, [r4, #16] 13794: b10b cbz r3, 1379a exec = true; 13796: 2001 movs r0, #1 13798: e7f4 b.n 13784 lv_task_del(task); 1379a: 4620 mov r0, r4 1379c: 4b04 ldr r3, [pc, #16] ; (137b0 ) 1379e: 4798 blx r3 exec = true; 137a0: 2001 movs r0, #1 137a2: bd10 pop {r4, pc} 137a4: 00011059 .word 0x00011059 137a8: 00011041 .word 0x00011041 137ac: 20006bb8 .word 0x20006bb8 137b0: 00013715 .word 0x00013715 000137b4 : { 137b4: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} if(already_running) return 1; 137b8: 4b58 ldr r3, [pc, #352] ; (1391c ) 137ba: 791b ldrb r3, [r3, #4] 137bc: 2b00 cmp r3, #0 137be: f040 80a9 bne.w 13914 already_running = true; 137c2: 4b56 ldr r3, [pc, #344] ; (1391c ) 137c4: 2201 movs r2, #1 137c6: 711a strb r2, [r3, #4] if(lv_task_run == false) { 137c8: 785b ldrb r3, [r3, #1] 137ca: b92b cbnz r3, 137d8 already_running = false; /*Release mutex*/ 137cc: 2200 movs r2, #0 137ce: 4b53 ldr r3, [pc, #332] ; (1391c ) 137d0: 711a strb r2, [r3, #4] return 1; 137d2: 2001 movs r0, #1 137d4: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} handler_start = lv_tick_get(); 137d8: 4b51 ldr r3, [pc, #324] ; (13920 ) 137da: 4798 blx r3 137dc: 4b4f ldr r3, [pc, #316] ; (1391c ) 137de: 6098 str r0, [r3, #8] lv_task_t * task_interrupter = NULL; 137e0: 2600 movs r6, #0 task_deleted = false; 137e2: 461d mov r5, r3 LV_GC_ROOT(_lv_task_act) = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); 137e4: f8df 814c ldr.w r8, [pc, #332] ; 13934 137e8: 4c4e ldr r4, [pc, #312] ; (13924 ) next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), LV_GC_ROOT(_lv_task_act)); 137ea: f8df 9150 ldr.w r9, [pc, #336] ; 1393c 137ee: e06d b.n 138cc LV_GC_ROOT(_lv_task_act) = next; 137f0: 6027 str r7, [r4, #0] task_interrupter = NULL; /*From this point only task after the interrupter comes, so 137f2: 2600 movs r6, #0 continue; /*Load the next task*/ 137f4: e009 b.n 1380a lv_task_exec(LV_GC_ROOT(_lv_task_act)); 137f6: 4b4c ldr r3, [pc, #304] ; (13928 ) 137f8: 4798 blx r3 if(task_created || task_deleted) { 137fa: 78ab ldrb r3, [r5, #2] 137fc: bb33 cbnz r3, 1384c 137fe: 78eb ldrb r3, [r5, #3] 13800: bb23 cbnz r3, 1384c if(task_list_changed) { 13802: 782b ldrb r3, [r5, #0] 13804: 2b00 cmp r3, #0 13806: d15f bne.n 138c8 LV_GC_ROOT(_lv_task_act) = next; /*Load the next task*/ 13808: 6027 str r7, [r4, #0] while(LV_GC_ROOT(_lv_task_act)) { 1380a: 6821 ldr r1, [r4, #0] 1380c: b1f1 cbz r1, 1384c next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), LV_GC_ROOT(_lv_task_act)); 1380e: 4640 mov r0, r8 13810: 47c8 blx r9 13812: 4607 mov r7, r0 if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio == LV_TASK_PRIO_OFF) { 13814: 6820 ldr r0, [r4, #0] 13816: 7d03 ldrb r3, [r0, #20] 13818: f013 0307 ands.w r3, r3, #7 1381c: d016 beq.n 1384c if(LV_GC_ROOT(_lv_task_act) == task_interrupter) { 1381e: 4286 cmp r6, r0 13820: d0e6 beq.n 137f0 if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio == LV_TASK_PRIO_HIGHEST) { 13822: 2b05 cmp r3, #5 13824: d0e7 beq.n 137f6 else if(task_interrupter) { 13826: 2e00 cmp r6, #0 13828: d042 beq.n 138b0 if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio > task_interrupter->prio) { 1382a: 7d02 ldrb r2, [r0, #20] 1382c: f002 0207 and.w r2, r2, #7 13830: 7d33 ldrb r3, [r6, #20] 13832: f003 0307 and.w r3, r3, #7 13836: 429a cmp r2, r3 13838: dddf ble.n 137fa if(lv_task_exec(LV_GC_ROOT(_lv_task_act))) { 1383a: 4b3b ldr r3, [pc, #236] ; (13928 ) 1383c: 4798 blx r3 1383e: 2800 cmp r0, #0 13840: d0db beq.n 137fa if(!task_created && !task_deleted) { 13842: 78ab ldrb r3, [r5, #2] 13844: b913 cbnz r3, 1384c 13846: 78eb ldrb r3, [r5, #3] 13848: 2b00 cmp r3, #0 1384a: d02f beq.n 138ac busy_time += lv_tick_elaps(handler_start); 1384c: 4c33 ldr r4, [pc, #204] ; (1391c ) 1384e: 68a0 ldr r0, [r4, #8] 13850: 4d36 ldr r5, [pc, #216] ; (1392c ) 13852: 47a8 blx r5 13854: 68e3 ldr r3, [r4, #12] 13856: 4403 add r3, r0 13858: 60e3 str r3, [r4, #12] uint32_t idle_period_time = lv_tick_elaps(idle_period_start); 1385a: 6920 ldr r0, [r4, #16] 1385c: 47a8 blx r5 if(idle_period_time >= IDLE_MEAS_PERIOD) { 1385e: f5b0 7ffa cmp.w r0, #500 ; 0x1f4 13862: d315 bcc.n 13890 idle_last = (uint32_t)((uint32_t)busy_time * 100) / IDLE_MEAS_PERIOD; /*Calculate the busy percentage*/ 13864: 68e2 ldr r2, [r4, #12] 13866: 2364 movs r3, #100 ; 0x64 13868: fb03 f302 mul.w r3, r3, r2 1386c: 4a30 ldr r2, [pc, #192] ; (13930 ) 1386e: fba2 2303 umull r2, r3, r2, r3 13872: f3c3 1347 ubfx r3, r3, #5, #8 idle_last = idle_last > 100 ? 0 : 100 - idle_last; /*But we need idle time*/ 13876: 2b64 cmp r3, #100 ; 0x64 13878: bf9a itte ls 1387a: f1c3 0364 rsbls r3, r3, #100 ; 0x64 1387e: b2db uxtbls r3, r3 13880: 2300 movhi r3, #0 13882: 4c26 ldr r4, [pc, #152] ; (1391c ) 13884: 7523 strb r3, [r4, #20] busy_time = 0; 13886: 2300 movs r3, #0 13888: 60e3 str r3, [r4, #12] idle_period_start = lv_tick_get(); 1388a: 4b25 ldr r3, [pc, #148] ; (13920 ) 1388c: 4798 blx r3 1388e: 6120 str r0, [r4, #16] time_till_next = LV_NO_TASK_READY; 13890: f04f 32ff mov.w r2, #4294967295 13894: 4b21 ldr r3, [pc, #132] ; (1391c ) 13896: 619a str r2, [r3, #24] next = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); 13898: 4826 ldr r0, [pc, #152] ; (13934 ) 1389a: 4b27 ldr r3, [pc, #156] ; (13938 ) 1389c: 4798 blx r3 while(next) { 1389e: 4604 mov r4, r0 138a0: 2800 cmp r0, #0 138a2: d031 beq.n 13908 uint32_t elp = lv_tick_elaps(task->last_run); 138a4: 4f21 ldr r7, [pc, #132] ; (1392c ) if(delay < time_till_next) 138a6: 4e1d ldr r6, [pc, #116] ; (1391c ) next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), next); /*Find the next task*/ 138a8: 4d22 ldr r5, [pc, #136] ; (13934 ) 138aa: e01d b.n 138e8 task_interrupter = LV_GC_ROOT(_lv_task_act); 138ac: 6826 ldr r6, [r4, #0] break; 138ae: e00d b.n 138cc if(lv_task_exec(LV_GC_ROOT(_lv_task_act))) { 138b0: 4b1d ldr r3, [pc, #116] ; (13928 ) 138b2: 4798 blx r3 138b4: 2800 cmp r0, #0 138b6: d0a0 beq.n 137fa if(!task_created && !task_deleted) { 138b8: 78ab ldrb r3, [r5, #2] 138ba: 2b00 cmp r3, #0 138bc: d1c6 bne.n 1384c 138be: 78eb ldrb r3, [r5, #3] 138c0: 2b00 cmp r3, #0 138c2: d1c3 bne.n 1384c task_interrupter = LV_GC_ROOT(_lv_task_act); /*Check all tasks again from the highest priority */ 138c4: 6826 ldr r6, [r4, #0] break; 138c6: e001 b.n 138cc task_list_changed = false; 138c8: 2600 movs r6, #0 138ca: 702e strb r6, [r5, #0] task_deleted = false; 138cc: 2300 movs r3, #0 138ce: 70eb strb r3, [r5, #3] task_created = false; 138d0: 70ab strb r3, [r5, #2] LV_GC_ROOT(_lv_task_act) = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); 138d2: 4640 mov r0, r8 138d4: 4b18 ldr r3, [pc, #96] ; (13938 ) 138d6: 4798 blx r3 138d8: 6020 str r0, [r4, #0] while(LV_GC_ROOT(_lv_task_act)) { 138da: e796 b.n 1380a next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), next); /*Find the next task*/ 138dc: 4621 mov r1, r4 138de: 4628 mov r0, r5 138e0: 4b16 ldr r3, [pc, #88] ; (1393c ) 138e2: 4798 blx r3 while(next) { 138e4: 4604 mov r4, r0 138e6: b178 cbz r0, 13908 if(next->prio != LV_TASK_PRIO_OFF) { 138e8: 7d23 ldrb r3, [r4, #20] 138ea: f013 0f07 tst.w r3, #7 138ee: d0f5 beq.n 138dc uint32_t elp = lv_tick_elaps(task->last_run); 138f0: 6860 ldr r0, [r4, #4] 138f2: 47b8 blx r7 if(elp >= task->period) 138f4: 6823 ldr r3, [r4, #0] 138f6: 4298 cmp r0, r3 return 0; return task->period - elp; 138f8: bf34 ite cc 138fa: 1a1b subcc r3, r3, r0 return 0; 138fc: 2300 movcs r3, #0 if(delay < time_till_next) 138fe: 69b2 ldr r2, [r6, #24] 13900: 429a cmp r2, r3 time_till_next = delay; 13902: bf88 it hi 13904: 61b3 strhi r3, [r6, #24] 13906: e7e9 b.n 138dc already_running = false; /*Release the mutex*/ 13908: 4b04 ldr r3, [pc, #16] ; (1391c ) 1390a: 2200 movs r2, #0 1390c: 711a strb r2, [r3, #4] return time_till_next; 1390e: 6998 ldr r0, [r3, #24] 13910: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} if(already_running) return 1; 13914: 2001 movs r0, #1 } 13916: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 1391a: bf00 nop 1391c: 20006bb8 .word 0x20006bb8 13920: 00011041 .word 0x00011041 13924: 20006d4c .word 0x20006d4c 13928: 00013755 .word 0x00013755 1392c: 00011059 .word 0x00011059 13930: 10624dd3 .word 0x10624dd3 13934: 20006c80 .word 0x20006c80 13938: 00011f91 .word 0x00011f91 1393c: 00011fa5 .word 0x00011fa5 00013940 : { 13940: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} if(task->prio == prio) return; 13944: 7d03 ldrb r3, [r0, #20] 13946: f003 0307 and.w r3, r3, #7 1394a: 428b cmp r3, r1 1394c: d031 beq.n 139b2 1394e: 460d mov r5, r1 13950: 4688 mov r8, r1 13952: 4681 mov r9, r0 _LV_LL_READ(LV_GC_ROOT(_lv_task_ll), i) { 13954: 4818 ldr r0, [pc, #96] ; (139b8 ) 13956: 4b19 ldr r3, [pc, #100] ; (139bc ) 13958: 4798 blx r3 1395a: 4604 mov r4, r0 1395c: b318 cbz r0, 139a6 if(i->prio <= prio) { 1395e: 7d03 ldrb r3, [r0, #20] 13960: f003 0307 and.w r3, r3, #7 13964: 429d cmp r5, r3 13966: da0b bge.n 13980 _LV_LL_READ(LV_GC_ROOT(_lv_task_ll), i) { 13968: 4f13 ldr r7, [pc, #76] ; (139b8 ) 1396a: 4e15 ldr r6, [pc, #84] ; (139c0 ) 1396c: 4621 mov r1, r4 1396e: 4638 mov r0, r7 13970: 47b0 blx r6 13972: 4604 mov r4, r0 13974: b1b8 cbz r0, 139a6 if(i->prio <= prio) { 13976: 7d23 ldrb r3, [r4, #20] 13978: f003 0307 and.w r3, r3, #7 1397c: 429d cmp r5, r3 1397e: dbf5 blt.n 1396c if(i != task) _lv_ll_move_before(&LV_GC_ROOT(_lv_task_ll), task, i); 13980: 45a1 cmp r9, r4 13982: d005 beq.n 13990 13984: 4622 mov r2, r4 13986: 4649 mov r1, r9 13988: 480b ldr r0, [pc, #44] ; (139b8 ) 1398a: 4b0e ldr r3, [pc, #56] ; (139c4 ) 1398c: 4798 blx r3 if(i == NULL) { 1398e: b154 cbz r4, 139a6 task_list_changed = true; 13990: 2201 movs r2, #1 13992: 4b0d ldr r3, [pc, #52] ; (139c8 ) 13994: 701a strb r2, [r3, #0] task->prio = prio; 13996: f899 3014 ldrb.w r3, [r9, #20] 1399a: f368 0302 bfi r3, r8, #0, #3 1399e: f889 3014 strb.w r3, [r9, #20] 139a2: 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); 139a6: 2200 movs r2, #0 139a8: 4649 mov r1, r9 139aa: 4803 ldr r0, [pc, #12] ; (139b8 ) 139ac: 4b05 ldr r3, [pc, #20] ; (139c4 ) 139ae: 4798 blx r3 139b0: e7ee b.n 13990 139b2: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 139b6: bf00 nop 139b8: 20006c80 .word 0x20006c80 139bc: 00011f91 .word 0x00011f91 139c0: 00011fa5 .word 0x00011fa5 139c4: 0001217d .word 0x0001217d 139c8: 20006bb8 .word 0x20006bb8 000139cc : { 139cc: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 139d0: b082 sub sp, #8 139d2: 4680 mov r8, r0 139d4: 460f mov r7, r1 139d6: 4616 mov r6, r2 139d8: 461d mov r5, r3 lv_task_t * new_task = lv_task_create_basic(); 139da: 4b10 ldr r3, [pc, #64] ; (13a1c ) 139dc: 4798 blx r3 139de: 4604 mov r4, r0 LV_ASSERT_MEM(new_task); 139e0: 4b0f ldr r3, [pc, #60] ; (13a20 ) 139e2: 4798 blx r3 139e4: b160 cbz r0, 13a00 if(new_task == NULL) return NULL; 139e6: b13c cbz r4, 139f8 task->task_cb = task_cb; 139e8: f8c4 8008 str.w r8, [r4, #8] task->period = period; 139ec: 6027 str r7, [r4, #0] lv_task_set_prio(new_task, prio); 139ee: 4631 mov r1, r6 139f0: 4620 mov r0, r4 139f2: 4b0c ldr r3, [pc, #48] ; (13a24 ) 139f4: 4798 blx r3 new_task->user_data = user_data; 139f6: 60e5 str r5, [r4, #12] } 139f8: 4620 mov r0, r4 139fa: b002 add sp, #8 139fc: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} LV_ASSERT_MEM(new_task); 13a00: 4b09 ldr r3, [pc, #36] ; (13a28 ) 13a02: 9300 str r3, [sp, #0] 13a04: f44f 7283 mov.w r2, #262 ; 0x106 13a08: 4908 ldr r1, [pc, #32] ; (13a2c ) 13a0a: 2003 movs r0, #3 13a0c: 4d08 ldr r5, [pc, #32] ; (13a30 ) 13a0e: 47a8 blx r5 13a10: 4622 mov r2, r4 13a12: 2300 movs r3, #0 13a14: 4807 ldr r0, [pc, #28] ; (13a34 ) 13a16: 4908 ldr r1, [pc, #32] ; (13a38 ) 13a18: 4788 blx r1 13a1a: e7fe b.n 13a1a 13a1c: 000135f9 .word 0x000135f9 13a20: 00002299 .word 0x00002299 13a24: 00013941 .word 0x00013941 13a28: 000294ac .word 0x000294ac 13a2c: 000294bc .word 0x000294bc 13a30: 00012245 .word 0x00012245 13a34: 00023fc0 .word 0x00023fc0 13a38: 000022a1 .word 0x000022a1 00013a3c : { 13a3c: b510 push {r4, lr} 13a3e: 4604 mov r4, r0 task->last_run = lv_tick_get() - task->period - 1; 13a40: 4b03 ldr r3, [pc, #12] ; (13a50 ) 13a42: 4798 blx r3 13a44: 6823 ldr r3, [r4, #0] 13a46: 43db mvns r3, r3 13a48: 4403 add r3, r0 13a4a: 6063 str r3, [r4, #4] 13a4c: bd10 pop {r4, pc} 13a4e: bf00 nop 13a50: 00011041 .word 0x00011041 00013a54 : * @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) 13a54: 7803 ldrb r3, [r0, #0] 13a56: f013 0f80 tst.w r3, #128 ; 0x80 13a5a: d101 bne.n 13a60 return 1; 13a5c: 2001 movs r0, #1 13a5e: 4770 bx lr else if((str[0] & 0xE0) == 0xC0) 13a60: f003 02e0 and.w r2, r3, #224 ; 0xe0 13a64: 2ac0 cmp r2, #192 ; 0xc0 13a66: d00a beq.n 13a7e return 2; else if((str[0] & 0xF0) == 0xE0) 13a68: f003 02f0 and.w r2, r3, #240 ; 0xf0 13a6c: 2ae0 cmp r2, #224 ; 0xe0 13a6e: d008 beq.n 13a82 return 3; else if((str[0] & 0xF8) == 0xF0) 13a70: f003 03f8 and.w r3, r3, #248 ; 0xf8 return 4; return 0; /*If the char was invalid tell it's 1 byte long*/ 13a74: 2bf0 cmp r3, #240 ; 0xf0 13a76: bf0c ite eq 13a78: 2004 moveq r0, #4 13a7a: 2000 movne r0, #0 13a7c: 4770 bx lr return 2; 13a7e: 2002 movs r0, #2 13a80: 4770 bx lr return 3; 13a82: 2003 movs r0, #3 } 13a84: 4770 bx lr 00013a86 : * @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; 13a86: 287f cmp r0, #127 ; 0x7f 13a88: d916 bls.n 13ab8 { 13a8a: b082 sub sp, #8 uint8_t bytes[4]; if(letter_uni < 0x0800) { 13a8c: f5b0 6f00 cmp.w r0, #2048 ; 0x800 13a90: d213 bcs.n 13aba bytes[0] = ((letter_uni >> 6) & 0x1F) | 0xC0; 13a92: f3c0 1384 ubfx r3, r0, #6, #5 13a96: f063 033f orn r3, r3, #63 ; 0x3f 13a9a: f88d 3004 strb.w r3, [sp, #4] bytes[1] = ((letter_uni >> 0) & 0x3F) | 0x80; 13a9e: f000 003f and.w r0, r0, #63 ; 0x3f 13aa2: f060 007f orn r0, r0, #127 ; 0x7f 13aa6: f88d 0005 strb.w r0, [sp, #5] bytes[2] = 0; 13aaa: 2300 movs r3, #0 13aac: f88d 3006 strb.w r3, [sp, #6] bytes[3] = 0; 13ab0: 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; 13ab4: 9801 ldr r0, [sp, #4] } 13ab6: b002 add sp, #8 13ab8: 4770 bx lr else if(letter_uni < 0x010000) { 13aba: f5b0 3f80 cmp.w r0, #65536 ; 0x10000 13abe: d215 bcs.n 13aec bytes[0] = ((letter_uni >> 12) & 0x0F) | 0xE0; 13ac0: f3c0 3303 ubfx r3, r0, #12, #4 13ac4: f063 031f orn r3, r3, #31 13ac8: f88d 3004 strb.w r3, [sp, #4] bytes[1] = ((letter_uni >> 6) & 0x3F) | 0x80; 13acc: f3c0 1385 ubfx r3, r0, #6, #6 13ad0: f063 037f orn r3, r3, #127 ; 0x7f 13ad4: f88d 3005 strb.w r3, [sp, #5] bytes[2] = ((letter_uni >> 0) & 0x3F) | 0x80; 13ad8: f000 003f and.w r0, r0, #63 ; 0x3f 13adc: f060 007f orn r0, r0, #127 ; 0x7f 13ae0: f88d 0006 strb.w r0, [sp, #6] bytes[3] = 0; 13ae4: 2300 movs r3, #0 13ae6: f88d 3007 strb.w r3, [sp, #7] 13aea: e7e3 b.n 13ab4 else if(letter_uni < 0x110000) { 13aec: f5b0 1f88 cmp.w r0, #1114112 ; 0x110000 13af0: d2e0 bcs.n 13ab4 bytes[0] = ((letter_uni >> 18) & 0x07) | 0xF0; 13af2: f3c0 4382 ubfx r3, r0, #18, #3 13af6: f063 030f orn r3, r3, #15 13afa: f88d 3004 strb.w r3, [sp, #4] bytes[1] = ((letter_uni >> 12) & 0x3F) | 0x80; 13afe: f3c0 3305 ubfx r3, r0, #12, #6 13b02: f063 037f orn r3, r3, #127 ; 0x7f 13b06: f88d 3005 strb.w r3, [sp, #5] bytes[2] = ((letter_uni >> 6) & 0x3F) | 0x80; 13b0a: f3c0 1385 ubfx r3, r0, #6, #6 13b0e: f063 037f orn r3, r3, #127 ; 0x7f 13b12: f88d 3006 strb.w r3, [sp, #6] bytes[3] = ((letter_uni >> 0) & 0x3F) | 0x80; 13b16: f000 003f and.w r0, r0, #63 ; 0x3f 13b1a: f060 007f orn r0, r0, #127 ; 0x7f 13b1e: f88d 0007 strb.w r0, [sp, #7] 13b22: e7c7 b.n 13ab4 00013b24 : * 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) { 13b24: b082 sub sp, #8 13b26: 9001 str r0, [sp, #4] /*Swap the bytes (UTF-8 is big endian, but the MCUs are little endian)*/ if((c & 0x80) != 0) { 13b28: f010 0f80 tst.w r0, #128 ; 0x80 13b2c: d017 beq.n 13b5e 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]); 13b2e: f89d 3004 ldrb.w r3, [sp, #4] 13b32: f89d 2005 ldrb.w r2, [sp, #5] 13b36: 0412 lsls r2, r2, #16 13b38: eb02 6203 add.w r2, r2, r3, lsl #24 13b3c: f89d 3006 ldrb.w r3, [sp, #6] 13b40: eb02 2203 add.w r2, r2, r3, lsl #8 13b44: f89d 3007 ldrb.w r3, [sp, #7] 13b48: 441a add r2, r3 13b4a: 2304 movs r3, #4 uint8_t i; for(i = 0; i < 4; i++) { if((swapped & 0xFF) == 0) 13b4c: f012 0fff tst.w r2, #255 ; 0xff swapped = (swapped >> 8); /*Ignore leading zeros (they were in the end originally)*/ 13b50: bf08 it eq 13b52: 0a12 lsreq r2, r2, #8 13b54: 3b01 subs r3, #1 for(i = 0; i < 4; i++) { 13b56: f013 03ff ands.w r3, r3, #255 ; 0xff 13b5a: d1f7 bne.n 13b4c } c = swapped; 13b5c: 9201 str r2, [sp, #4] } return c; } 13b5e: 9801 ldr r0, [sp, #4] 13b60: b002 add sp, #8 13b62: 4770 bx lr 00013b64 : * 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) { 13b64: b470 push {r4, r5, r6} 13b66: b083 sub sp, #12 * */ uint32_t result = 0; /*Dummy 'i' pointer is required*/ uint32_t i_tmp = 0; 13b68: 2300 movs r3, #0 13b6a: 9301 str r3, [sp, #4] if(i == NULL) i = &i_tmp; 13b6c: 460c mov r4, r1 13b6e: b151 cbz r1, 13b86 /*Normal ASCII*/ if((txt[*i] & 0x80) == 0) { 13b70: 6822 ldr r2, [r4, #0] 13b72: 5c83 ldrb r3, [r0, r2] 13b74: f013 0f80 tst.w r3, #128 ; 0x80 13b78: d107 bne.n 13b8a result = txt[*i]; 13b7a: 4618 mov r0, r3 (*i)++; 13b7c: 3201 adds r2, #1 13b7e: 6022 str r2, [r4, #0] else { (*i)++; /*Not UTF-8 char. Go the next.*/ } } return result; } 13b80: b003 add sp, #12 13b82: bc70 pop {r4, r5, r6} 13b84: 4770 bx lr if(i == NULL) i = &i_tmp; 13b86: ac01 add r4, sp, #4 13b88: e7f2 b.n 13b70 if((txt[*i] & 0xE0) == 0xC0) { 13b8a: f003 01e0 and.w r1, r3, #224 ; 0xe0 13b8e: 29c0 cmp r1, #192 ; 0xc0 13b90: d00b beq.n 13baa else if((txt[*i] & 0xF0) == 0xE0) { 13b92: f003 01f0 and.w r1, r3, #240 ; 0xf0 13b96: 29e0 cmp r1, #224 ; 0xe0 13b98: d019 beq.n 13bce else if((txt[*i] & 0xF8) == 0xF0) { 13b9a: f003 01f8 and.w r1, r3, #248 ; 0xf8 13b9e: 29f0 cmp r1, #240 ; 0xf0 13ba0: d033 beq.n 13c0a (*i)++; /*Not UTF-8 char. Go the next.*/ 13ba2: 3201 adds r2, #1 13ba4: 6022 str r2, [r4, #0] uint32_t result = 0; 13ba6: 2000 movs r0, #0 13ba8: e7ea b.n 13b80 (*i)++; 13baa: 1c51 adds r1, r2, #1 13bac: 6021 str r1, [r4, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 13bae: 5c40 ldrb r0, [r0, r1] 13bb0: f000 01c0 and.w r1, r0, #192 ; 0xc0 13bb4: 2980 cmp r1, #128 ; 0x80 13bb6: d001 beq.n 13bbc 13bb8: 2000 movs r0, #0 13bba: e7e1 b.n 13b80 result = (uint32_t)(txt[*i] & 0x1F) << 6; 13bbc: 019b lsls r3, r3, #6 13bbe: f403 63f8 and.w r3, r3, #1984 ; 0x7c0 result += (txt[*i] & 0x3F); 13bc2: f000 003f and.w r0, r0, #63 ; 0x3f 13bc6: 4418 add r0, r3 (*i)++; 13bc8: 3202 adds r2, #2 13bca: 6022 str r2, [r4, #0] 13bcc: e7d8 b.n 13b80 (*i)++; 13bce: 1c51 adds r1, r2, #1 13bd0: 6021 str r1, [r4, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 13bd2: 5c41 ldrb r1, [r0, r1] 13bd4: f001 05c0 and.w r5, r1, #192 ; 0xc0 13bd8: 2d80 cmp r5, #128 ; 0x80 13bda: d001 beq.n 13be0 13bdc: 2000 movs r0, #0 13bde: e7cf b.n 13b80 (*i)++; 13be0: 1c95 adds r5, r2, #2 13be2: 6025 str r5, [r4, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 13be4: 5d40 ldrb r0, [r0, r5] 13be6: f000 05c0 and.w r5, r0, #192 ; 0xc0 13bea: 2d80 cmp r5, #128 ; 0x80 13bec: d001 beq.n 13bf2 13bee: 2000 movs r0, #0 13bf0: e7c6 b.n 13b80 result = (uint32_t)(txt[*i] & 0x0F) << 12; 13bf2: 031b lsls r3, r3, #12 13bf4: b29b uxth r3, r3 result += (txt[*i] & 0x3F); 13bf6: f000 003f and.w r0, r0, #63 ; 0x3f 13bfa: 4403 add r3, r0 result += (uint32_t)(txt[*i] & 0x3F) << 6; 13bfc: 0188 lsls r0, r1, #6 13bfe: f400 607c and.w r0, r0, #4032 ; 0xfc0 result += (txt[*i] & 0x3F); 13c02: 4418 add r0, r3 (*i)++; 13c04: 3203 adds r2, #3 13c06: 6022 str r2, [r4, #0] 13c08: e7ba b.n 13b80 (*i)++; 13c0a: 1c51 adds r1, r2, #1 13c0c: 6021 str r1, [r4, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 13c0e: 5c41 ldrb r1, [r0, r1] 13c10: f001 05c0 and.w r5, r1, #192 ; 0xc0 13c14: 2d80 cmp r5, #128 ; 0x80 13c16: d001 beq.n 13c1c 13c18: 2000 movs r0, #0 13c1a: e7b1 b.n 13b80 (*i)++; 13c1c: 1c95 adds r5, r2, #2 13c1e: 6025 str r5, [r4, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 13c20: 5d45 ldrb r5, [r0, r5] 13c22: f005 06c0 and.w r6, r5, #192 ; 0xc0 13c26: 2e80 cmp r6, #128 ; 0x80 13c28: d001 beq.n 13c2e 13c2a: 2000 movs r0, #0 13c2c: e7a8 b.n 13b80 (*i)++; 13c2e: 1cd6 adds r6, r2, #3 13c30: 6026 str r6, [r4, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 13c32: 5d86 ldrb r6, [r0, r6] 13c34: f006 00c0 and.w r0, r6, #192 ; 0xc0 13c38: 2880 cmp r0, #128 ; 0x80 13c3a: d001 beq.n 13c40 13c3c: 2000 movs r0, #0 13c3e: e79f b.n 13b80 result = (uint32_t)(txt[*i] & 0x07) << 18; 13c40: 049b lsls r3, r3, #18 13c42: f403 13e0 and.w r3, r3, #1835008 ; 0x1c0000 result += (uint32_t)(txt[*i] & 0x3F) << 12; 13c46: 0309 lsls r1, r1, #12 13c48: f401 307c and.w r0, r1, #258048 ; 0x3f000 13c4c: 4303 orrs r3, r0 result += (uint32_t)(txt[*i] & 0x3F) << 6; 13c4e: 01a8 lsls r0, r5, #6 13c50: f400 607c and.w r0, r0, #4032 ; 0xfc0 result += txt[*i] & 0x3F; 13c54: f006 063f and.w r6, r6, #63 ; 0x3f 13c58: 4430 add r0, r6 13c5a: 4418 add r0, r3 (*i)++; 13c5c: 3204 adds r2, #4 13c5e: 6022 str r2, [r4, #0] 13c60: e78e b.n 13b80 ... 00013c64 : * @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) { 13c64: b5f0 push {r4, r5, r6, r7, lr} 13c66: b083 sub sp, #12 13c68: 4606 mov r6, r0 13c6a: 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)--; 13c6c: 680b ldr r3, [r1, #0] 13c6e: 3b01 subs r3, #1 13c70: 600b str r3, [r1, #0] 13c72: 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]); 13c74: 4f0e ldr r7, [pc, #56] ; (13cb0 ) 13c76: e005 b.n 13c84 if(c_size == 0) { if(*i != 0) (*i)--; 13c78: 3801 subs r0, #1 13c7a: 6028 str r0, [r5, #0] 13c7c: 1e63 subs r3, r4, #1 if(cnt >= 4) return 0; /*No UTF-8 char found before the initial*/ 13c7e: f013 04ff ands.w r4, r3, #255 ; 0xff 13c82: d008 beq.n 13c96 c_size = _lv_txt_encoded_size(&txt[*i]); 13c84: 6828 ldr r0, [r5, #0] 13c86: 4430 add r0, r6 13c88: 683b ldr r3, [r7, #0] 13c8a: 4798 blx r3 if(c_size == 0) { 13c8c: b928 cbnz r0, 13c9a if(*i != 0) 13c8e: 6828 ldr r0, [r5, #0] 13c90: 2800 cmp r0, #0 13c92: d1f1 bne.n 13c78 13c94: e009 b.n 13caa if(cnt >= 4) return 0; /*No UTF-8 char found before the initial*/ 13c96: 2000 movs r0, #0 13c98: e007 b.n 13caa return 0; } cnt++; } while(c_size == 0); uint32_t i_tmp = *i; 13c9a: 682b ldr r3, [r5, #0] 13c9c: a902 add r1, sp, #8 13c9e: f841 3d04 str.w r3, [r1, #-4]! uint32_t letter = _lv_txt_encoded_next(txt, &i_tmp); /*Character found, get it*/ 13ca2: 4b03 ldr r3, [pc, #12] ; (13cb0 ) 13ca4: 685b ldr r3, [r3, #4] 13ca6: 4630 mov r0, r6 13ca8: 4798 blx r3 return letter; } 13caa: b003 add sp, #12 13cac: bdf0 pop {r4, r5, r6, r7, pc} 13cae: bf00 nop 13cb0: 20000054 .word 0x20000054 00013cb4 : * @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) { 13cb4: 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++) { 13cb8: 460e mov r6, r1 13cba: b191 cbz r1, 13ce2 13cbc: 4607 mov r7, r0 13cbe: 2400 movs r4, #0 13cc0: 4625 mov r5, r4 uint8_t c_size = _lv_txt_encoded_size(&txt[byte_cnt]); 13cc2: f8df 8024 ldr.w r8, [pc, #36] ; 13ce8 13cc6: 1938 adds r0, r7, r4 13cc8: f8d8 3000 ldr.w r3, [r8] 13ccc: 4798 blx r3 byte_cnt += c_size > 0 ? c_size : 1; 13cce: 2800 cmp r0, #0 13cd0: bf08 it eq 13cd2: 2001 moveq r0, #1 13cd4: 4404 add r4, r0 for(i = 0; i < utf8_id; i++) { 13cd6: 3501 adds r5, #1 13cd8: 42ae cmp r6, r5 13cda: d1f4 bne.n 13cc6 } return byte_cnt; } 13cdc: 4620 mov r0, r4 13cde: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} uint32_t byte_cnt = 0; 13ce2: 460c mov r4, r1 return byte_cnt; 13ce4: e7fa b.n 13cdc 13ce6: bf00 nop 13ce8: 20000054 .word 0x20000054 00013cec : * @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) { 13cec: b5f0 push {r4, r5, r6, r7, lr} 13cee: b083 sub sp, #12 uint32_t i = 0; 13cf0: 2300 movs r3, #0 13cf2: 9301 str r3, [sp, #4] uint32_t char_cnt = 0; while(i < byte_id) { 13cf4: 460d mov r5, r1 13cf6: b169 cbz r1, 13d14 13cf8: 4606 mov r6, r0 13cfa: 461c mov r4, r3 _lv_txt_encoded_next(txt, &i); /*'i' points to the next letter so use the prev. value*/ 13cfc: 4f06 ldr r7, [pc, #24] ; (13d18 ) 13cfe: a901 add r1, sp, #4 13d00: 4630 mov r0, r6 13d02: 687b ldr r3, [r7, #4] 13d04: 4798 blx r3 char_cnt++; 13d06: 3401 adds r4, #1 while(i < byte_id) { 13d08: 9b01 ldr r3, [sp, #4] 13d0a: 42ab cmp r3, r5 13d0c: d3f7 bcc.n 13cfe } return char_cnt; } 13d0e: 4620 mov r0, r4 13d10: b003 add sp, #12 13d12: bdf0 pop {r4, r5, r6, r7, pc} uint32_t char_cnt = 0; 13d14: 460c mov r4, r1 return char_cnt; 13d16: e7fa b.n 13d0e 13d18: 20000054 .word 0x20000054 00013d1c : * 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) { 13d1c: b570 push {r4, r5, r6, lr} 13d1e: b082 sub sp, #8 uint32_t len = 0; uint32_t i = 0; 13d20: 2300 movs r3, #0 13d22: 9301 str r3, [sp, #4] while(txt[i] != '\0') { 13d24: 7803 ldrb r3, [r0, #0] 13d26: b173 cbz r3, 13d46 13d28: 4604 mov r4, r0 13d2a: 2500 movs r5, #0 _lv_txt_encoded_next(txt, &i); 13d2c: 4e07 ldr r6, [pc, #28] ; (13d4c ) 13d2e: a901 add r1, sp, #4 13d30: 4620 mov r0, r4 13d32: 6873 ldr r3, [r6, #4] 13d34: 4798 blx r3 len++; 13d36: 3501 adds r5, #1 while(txt[i] != '\0') { 13d38: 9b01 ldr r3, [sp, #4] 13d3a: 5ce3 ldrb r3, [r4, r3] 13d3c: 2b00 cmp r3, #0 13d3e: d1f6 bne.n 13d2e } return len; } 13d40: 4628 mov r0, r5 13d42: b002 add sp, #8 13d44: bd70 pop {r4, r5, r6, pc} uint32_t len = 0; 13d46: 2500 movs r5, #0 return len; 13d48: e7fa b.n 13d40 13d4a: bf00 nop 13d4c: 20000054 .word 0x20000054 00013d50 <_lv_txt_is_cmd>: if(c == (uint32_t)LV_TXT_COLOR_CMD[0]) { 13d50: 2923 cmp r1, #35 ; 0x23 13d52: d004 beq.n 13d5e <_lv_txt_is_cmd+0xe> if(*state == LV_TXT_CMD_STATE_PAR) { 13d54: 7803 ldrb r3, [r0, #0] 13d56: 2b01 cmp r3, #1 13d58: d015 beq.n 13d86 <_lv_txt_is_cmd+0x36> bool ret = false; 13d5a: 2000 movs r0, #0 13d5c: 4770 bx lr if(*state == LV_TXT_CMD_STATE_WAIT) { /*Start char*/ 13d5e: 7803 ldrb r3, [r0, #0] 13d60: b91b cbnz r3, 13d6a <_lv_txt_is_cmd+0x1a> *state = LV_TXT_CMD_STATE_PAR; 13d62: 2301 movs r3, #1 13d64: 7003 strb r3, [r0, #0] ret = true; 13d66: 4618 mov r0, r3 13d68: 4770 bx lr else if(*state == LV_TXT_CMD_STATE_PAR) { 13d6a: 2b01 cmp r3, #1 13d6c: d003 beq.n 13d76 <_lv_txt_is_cmd+0x26> else if(*state == LV_TXT_CMD_STATE_IN) { 13d6e: 2b02 cmp r3, #2 13d70: d005 beq.n 13d7e <_lv_txt_is_cmd+0x2e> bool ret = false; 13d72: 2000 movs r0, #0 } 13d74: 4770 bx lr *state = LV_TXT_CMD_STATE_WAIT; 13d76: 2300 movs r3, #0 13d78: 7003 strb r3, [r0, #0] bool ret = false; 13d7a: 4618 mov r0, r3 13d7c: 4770 bx lr *state = LV_TXT_CMD_STATE_WAIT; 13d7e: 2300 movs r3, #0 13d80: 7003 strb r3, [r0, #0] ret = true; 13d82: 2001 movs r0, #1 13d84: 4770 bx lr if(c == ' ') { 13d86: 2920 cmp r1, #32 13d88: d103 bne.n 13d92 <_lv_txt_is_cmd+0x42> *state = LV_TXT_CMD_STATE_IN; /*After the parameter the text is in the command*/ 13d8a: 2302 movs r3, #2 13d8c: 7003 strb r3, [r0, #0] ret = true; 13d8e: 2001 movs r0, #1 13d90: 4770 bx lr 13d92: 2001 movs r0, #1 13d94: 4770 bx lr ... 00013d98 <_lv_txt_get_next_line>: { 13d98: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 13d9c: b091 sub sp, #68 ; 0x44 13d9e: 9105 str r1, [sp, #20] 13da0: 9206 str r2, [sp, #24] 13da2: 9307 str r3, [sp, #28] 13da4: f89d 3068 ldrb.w r3, [sp, #104] ; 0x68 13da8: 9304 str r3, [sp, #16] if(txt == NULL) return 0; 13daa: 9008 str r0, [sp, #32] 13dac: 2800 cmp r0, #0 13dae: f000 80f0 beq.w 13f92 <_lv_txt_get_next_line+0x1fa> if(font == NULL) return 0; 13db2: 2900 cmp r1, #0 13db4: f000 80ef beq.w 13f96 <_lv_txt_get_next_line+0x1fe> if((flag & LV_TXT_FLAG_EXPAND) || (flag & LV_TXT_FLAG_FIT)) { 13db8: f013 0f12 tst.w r3, #18 13dbc: d017 beq.n 13dee <_lv_txt_get_next_line+0x56> for(i = 0; txt[i] != '\n' && txt[i] != '\r' && txt[i] != '\0'; i++) { 13dbe: 7803 ldrb r3, [r0, #0] 13dc0: 2b0a cmp r3, #10 13dc2: f000 80ea beq.w 13f9a <_lv_txt_get_next_line+0x202> 13dc6: 2b0d cmp r3, #13 13dc8: f000 80ed beq.w 13fa6 <_lv_txt_get_next_line+0x20e> 13dcc: 2b00 cmp r3, #0 13dce: f000 80ec beq.w 13faa <_lv_txt_get_next_line+0x212> 13dd2: 4601 mov r1, r0 13dd4: 2200 movs r2, #0 13dd6: 3201 adds r2, #1 13dd8: f811 3f01 ldrb.w r3, [r1, #1]! 13ddc: 2b0a cmp r3, #10 13dde: f000 80dd beq.w 13f9c <_lv_txt_get_next_line+0x204> 13de2: 2b0d cmp r3, #13 13de4: f000 80da beq.w 13f9c <_lv_txt_get_next_line+0x204> 13de8: 2b00 cmp r3, #0 13dea: d1f4 bne.n 13dd6 <_lv_txt_get_next_line+0x3e> 13dec: e0d7 b.n 13f9e <_lv_txt_get_next_line+0x206> 13dee: 9b04 ldr r3, [sp, #16] 13df0: f003 0302 and.w r3, r3, #2 13df4: 461a mov r2, r3 13df6: 930b str r3, [sp, #44] ; 0x2c if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX; 13df8: f647 4318 movw r3, #31768 ; 0x7c18 13dfc: 9907 ldr r1, [sp, #28] 13dfe: 2a00 cmp r2, #0 13e00: bf18 it ne 13e02: 4619 movne r1, r3 13e04: 9107 str r1, [sp, #28] lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; 13e06: 2300 movs r3, #0 13e08: f88d 303f strb.w r3, [sp, #63] ; 0x3f uint32_t i = 0; /* Iterating index into txt */ 13e0c: 930e str r3, [sp, #56] ; 0x38 letter = _lv_txt_encoded_next(txt, &i_next); 13e0e: f8df 91ac ldr.w r9, [pc, #428] ; 13fbc <_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++) { 13e12: f8df a1ac ldr.w sl, [pc, #428] ; 13fc0 <_lv_txt_get_next_line+0x228> while(txt[i] != '\0' && max_width > 0) { 13e16: e078 b.n 13f0a <_lv_txt_get_next_line+0x172> letter_w = lv_font_get_glyph_width(font, letter, letter_next); 13e18: 9a01 ldr r2, [sp, #4] 13e1a: 4621 mov r1, r4 13e1c: 9805 ldr r0, [sp, #20] 13e1e: 4b64 ldr r3, [pc, #400] ; (13fb0 <_lv_txt_get_next_line+0x218>) 13e20: 4798 blx r3 cur_w += letter_w; 13e22: 4405 add r5, r0 13e24: b2ad uxth r5, r5 if(letter_w > 0) { 13e26: b200 sxth r0, r0 13e28: 2800 cmp r0, #0 13e2a: dd02 ble.n 13e32 <_lv_txt_get_next_line+0x9a> cur_w += letter_space; 13e2c: 9b06 ldr r3, [sp, #24] 13e2e: 441d add r5, r3 13e30: b2ad uxth r5, r5 13e32: b22d sxth r5, r5 if(break_index == NO_BREAK_FOUND && (cur_w - letter_space) > max_width) { 13e34: f1b7 3fff cmp.w r7, #4294967295 13e38: d038 beq.n 13eac <_lv_txt_get_next_line+0x114> if(letter == '\n' || letter == '\r' || is_break_char(letter)) { 13e3a: f1a4 020a sub.w r2, r4, #10 13e3e: 2a16 cmp r2, #22 13e40: d83b bhi.n 13eba <_lv_txt_get_next_line+0x122> 13e42: 4b5c ldr r3, [pc, #368] ; (13fb4 <_lv_txt_get_next_line+0x21c>) 13e44: 40d3 lsrs r3, r2 13e46: f013 0f01 tst.w r3, #1 13e4a: d139 bne.n 13ec0 <_lv_txt_get_next_line+0x128> 13e4c: 2301 movs r3, #1 13e4e: 222c movs r2, #44 ; 0x2c if(letter == (uint32_t)LV_TXT_BREAK_CHARS[i]) { 13e50: 4294 cmp r4, r2 13e52: d035 beq.n 13ec0 <_lv_txt_get_next_line+0x128> for(i = 0; LV_TXT_BREAK_CHARS[i] != '\0'; i++) { 13e54: 3301 adds r3, #1 13e56: b2db uxtb r3, r3 13e58: f81a 2003 ldrb.w r2, [sl, r3] 13e5c: 2a00 cmp r2, #0 13e5e: d1f7 bne.n 13e50 <_lv_txt_get_next_line+0xb8> if(word_w_ptr != NULL && break_index == NO_BREAK_FOUND) *word_w_ptr = cur_w; 13e60: f1b7 3fff cmp.w r7, #4294967295 13e64: bf08 it eq 13e66: 46ab moveq fp, r5 i = i_next; 13e68: 9e0c ldr r6, [sp, #48] ; 0x30 i_next = i_next_next; 13e6a: 9b0d ldr r3, [sp, #52] ; 0x34 13e6c: 930c str r3, [sp, #48] ; 0x30 letter_next = _lv_txt_encoded_next(txt, &i_next_next); 13e6e: 9b03 ldr r3, [sp, #12] 13e70: 9302 str r3, [sp, #8] 13e72: 9c01 ldr r4, [sp, #4] while(txt[i] != '\0') { 13e74: f818 3006 ldrb.w r3, [r8, r6] 13e78: 2b00 cmp r3, #0 13e7a: d06e beq.n 13f5a <_lv_txt_get_next_line+0x1c2> letter_next = _lv_txt_encoded_next(txt, &i_next_next); 13e7c: f8d9 3004 ldr.w r3, [r9, #4] 13e80: a90d add r1, sp, #52 ; 0x34 13e82: 4640 mov r0, r8 13e84: 4798 blx r3 13e86: 9001 str r0, [sp, #4] word_len++; 13e88: 9b02 ldr r3, [sp, #8] 13e8a: 3301 adds r3, #1 13e8c: 9303 str r3, [sp, #12] if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 13e8e: 9b04 ldr r3, [sp, #16] 13e90: f013 0f01 tst.w r3, #1 13e94: d0c0 beq.n 13e18 <_lv_txt_get_next_line+0x80> if(_lv_txt_is_cmd(cmd_state, letter) != false) { 13e96: 4621 mov r1, r4 13e98: f10d 003f add.w r0, sp, #63 ; 0x3f 13e9c: 4b46 ldr r3, [pc, #280] ; (13fb8 <_lv_txt_get_next_line+0x220>) 13e9e: 4798 blx r3 13ea0: 2800 cmp r0, #0 13ea2: d0b9 beq.n 13e18 <_lv_txt_get_next_line+0x80> i = i_next; 13ea4: 9e0c ldr r6, [sp, #48] ; 0x30 i_next = i_next_next; 13ea6: 9b0d ldr r3, [sp, #52] ; 0x34 13ea8: 930c str r3, [sp, #48] ; 0x30 13eaa: e7e0 b.n 13e6e <_lv_txt_get_next_line+0xd6> if(break_index == NO_BREAK_FOUND && (cur_w - letter_space) > max_width) { 13eac: 9b06 ldr r3, [sp, #24] 13eae: 1aeb subs r3, r5, r3 13eb0: 9a09 ldr r2, [sp, #36] ; 0x24 13eb2: 4293 cmp r3, r2 13eb4: bfc8 it gt 13eb6: 4637 movgt r7, r6 13eb8: e7bf b.n 13e3a <_lv_txt_get_next_line+0xa2> if(letter == '\n' || letter == '\r' || is_break_char(letter)) { 13eba: 2301 movs r3, #1 13ebc: 222c movs r2, #44 ; 0x2c 13ebe: e7c7 b.n 13e50 <_lv_txt_get_next_line+0xb8> if(i == 0 && break_index == NO_BREAK_FOUND && word_w_ptr != NULL) *word_w_ptr = cur_w; 13ec0: 2e00 cmp r6, #0 13ec2: d14a bne.n 13f5a <_lv_txt_get_next_line+0x1c2> 13ec4: f1b7 3fff cmp.w r7, #4294967295 13ec8: d14a bne.n 13f60 <_lv_txt_get_next_line+0x1c8> 13eca: 46ab mov fp, r5 if(word_len == 0 || (letter == '\r' && letter_next == '\n')) i = i_next; 13ecc: 9b02 ldr r3, [sp, #8] 13ece: b123 cbz r3, 13eda <_lv_txt_get_next_line+0x142> 13ed0: 2c0d cmp r4, #13 13ed2: d103 bne.n 13edc <_lv_txt_get_next_line+0x144> 13ed4: 9b01 ldr r3, [sp, #4] 13ed6: 2b0a cmp r3, #10 13ed8: d100 bne.n 13edc <_lv_txt_get_next_line+0x144> 13eda: 9e0c ldr r6, [sp, #48] ; 0x30 return i; 13edc: b2b6 uxth r6, r6 max_width -= word_w; 13ede: 9b07 ldr r3, [sp, #28] 13ee0: eba3 0b0b sub.w fp, r3, fp 13ee4: fa0f f38b sxth.w r3, fp 13ee8: 9307 str r3, [sp, #28] if(advance == 0) { 13eea: 2e00 cmp r6, #0 13eec: d03a beq.n 13f64 <_lv_txt_get_next_line+0x1cc> i += advance; 13eee: 9f0e ldr r7, [sp, #56] ; 0x38 13ef0: 443e add r6, r7 13ef2: 960e str r6, [sp, #56] ; 0x38 if(txt[0] == '\n' || txt[0] == '\r') break; 13ef4: 9a08 ldr r2, [sp, #32] 13ef6: 7813 ldrb r3, [r2, #0] 13ef8: 2b0a cmp r3, #10 13efa: d03f beq.n 13f7c <_lv_txt_get_next_line+0x1e4> 13efc: 2b0d cmp r3, #13 13efe: d03d beq.n 13f7c <_lv_txt_get_next_line+0x1e4> if(txt[i] == '\n' || txt[i] == '\r') { 13f00: 5d93 ldrb r3, [r2, r6] 13f02: 2b0a cmp r3, #10 13f04: d038 beq.n 13f78 <_lv_txt_get_next_line+0x1e0> 13f06: 2b0d cmp r3, #13 13f08: d036 beq.n 13f78 <_lv_txt_get_next_line+0x1e0> while(txt[i] != '\0' && max_width > 0) { 13f0a: 9b0e ldr r3, [sp, #56] ; 0x38 13f0c: 930a str r3, [sp, #40] ; 0x28 13f0e: 9908 ldr r1, [sp, #32] 13f10: eb01 0803 add.w r8, r1, r3 13f14: 5ccb ldrb r3, [r1, r3] 13f16: 2b00 cmp r3, #0 13f18: d030 beq.n 13f7c <_lv_txt_get_next_line+0x1e4> 13f1a: 9b07 ldr r3, [sp, #28] 13f1c: 2b00 cmp r3, #0 13f1e: dd2d ble.n 13f7c <_lv_txt_get_next_line+0x1e4> if(txt == NULL || txt[0] == '\0') return 0; 13f20: f1b8 0f00 cmp.w r8, #0 13f24: d01e beq.n 13f64 <_lv_txt_get_next_line+0x1cc> if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX; 13f26: f647 4318 movw r3, #31768 ; 0x7c18 13f2a: 9a07 ldr r2, [sp, #28] 13f2c: 990b ldr r1, [sp, #44] ; 0x2c 13f2e: 2900 cmp r1, #0 13f30: bf08 it eq 13f32: 4613 moveq r3, r2 13f34: 9309 str r3, [sp, #36] ; 0x24 uint32_t i = 0, i_next = 0, i_next_next = 0; /* Iterating index into txt */ 13f36: 2600 movs r6, #0 13f38: 960c str r6, [sp, #48] ; 0x30 13f3a: 960d str r6, [sp, #52] ; 0x34 letter = _lv_txt_encoded_next(txt, &i_next); 13f3c: f8d9 3004 ldr.w r3, [r9, #4] 13f40: a90c add r1, sp, #48 ; 0x30 13f42: 4640 mov r0, r8 13f44: 4798 blx r3 13f46: 4604 mov r4, r0 i_next_next = i_next; 13f48: 9b0c ldr r3, [sp, #48] ; 0x30 13f4a: 930d str r3, [sp, #52] ; 0x34 uint32_t word_w = 0; 13f4c: 46b3 mov fp, r6 uint32_t break_index = NO_BREAK_FOUND; /* only used for "long" words */ 13f4e: f04f 37ff mov.w r7, #4294967295 uint32_t word_len = 0; /* Number of characters in the transversed word */ 13f52: 9602 str r6, [sp, #8] lv_coord_t cur_w = 0; /* Pixel Width of transversed string */ 13f54: 4635 mov r5, r6 uint32_t letter_next = 0; /* Letter at i_next */ 13f56: 9601 str r6, [sp, #4] 13f58: e78c b.n 13e74 <_lv_txt_get_next_line+0xdc> if(break_index == NO_BREAK_FOUND) { 13f5a: f1b7 3fff cmp.w r7, #4294967295 13f5e: d0b5 beq.n 13ecc <_lv_txt_get_next_line+0x134> if(force) return break_index; 13f60: 9b0a ldr r3, [sp, #40] ; 0x28 13f62: b13b cbz r3, 13f74 <_lv_txt_get_next_line+0x1dc> if(i == 0) _lv_txt_encoded_next(txt, &i); // prevent inf loops 13f64: 9b0e ldr r3, [sp, #56] ; 0x38 13f66: b95b cbnz r3, 13f80 <_lv_txt_get_next_line+0x1e8> 13f68: 4b14 ldr r3, [pc, #80] ; (13fbc <_lv_txt_get_next_line+0x224>) 13f6a: 685b ldr r3, [r3, #4] 13f6c: a90e add r1, sp, #56 ; 0x38 13f6e: 9808 ldr r0, [sp, #32] 13f70: 4798 blx r3 13f72: e003 b.n 13f7c <_lv_txt_get_next_line+0x1e4> if(force) return break_index; 13f74: b2be uxth r6, r7 13f76: e7b2 b.n 13ede <_lv_txt_get_next_line+0x146> i++; /* Include the following newline in the current line */ 13f78: 3601 adds r6, #1 13f7a: 960e str r6, [sp, #56] ; 0x38 if(i == 0) { 13f7c: 9b0e ldr r3, [sp, #56] ; 0x38 13f7e: b113 cbz r3, 13f86 <_lv_txt_get_next_line+0x1ee> return i; 13f80: f8bd 0038 ldrh.w r0, [sp, #56] ; 0x38 13f84: e00c b.n 13fa0 <_lv_txt_get_next_line+0x208> _lv_txt_encoded_next(txt, &i); 13f86: 4b0d ldr r3, [pc, #52] ; (13fbc <_lv_txt_get_next_line+0x224>) 13f88: 685b ldr r3, [r3, #4] 13f8a: a90e add r1, sp, #56 ; 0x38 13f8c: 9808 ldr r0, [sp, #32] 13f8e: 4798 blx r3 13f90: e7f6 b.n 13f80 <_lv_txt_get_next_line+0x1e8> if(txt == NULL) return 0; 13f92: 2000 movs r0, #0 13f94: e004 b.n 13fa0 <_lv_txt_get_next_line+0x208> if(font == NULL) return 0; 13f96: 2000 movs r0, #0 13f98: e002 b.n 13fa0 <_lv_txt_get_next_line+0x208> for(i = 0; txt[i] != '\n' && txt[i] != '\r' && txt[i] != '\0'; i++) { 13f9a: 2200 movs r2, #0 if(txt[i] != '\0') i++; /*To go beyond `\n`*/ 13f9c: 3201 adds r2, #1 return i; 13f9e: b290 uxth r0, r2 } 13fa0: b011 add sp, #68 ; 0x44 13fa2: 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++) { 13fa6: 2200 movs r2, #0 13fa8: e7f8 b.n 13f9c <_lv_txt_get_next_line+0x204> 13faa: 2200 movs r2, #0 13fac: e7f7 b.n 13f9e <_lv_txt_get_next_line+0x206> 13fae: bf00 nop 13fb0: 00010049 .word 0x00010049 13fb4: 00400009 .word 0x00400009 13fb8: 00013d51 .word 0x00013d51 13fbc: 20000054 .word 0x20000054 13fc0: 000294fc .word 0x000294fc 00013fc4 <_lv_txt_get_width>: { 13fc4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 13fc8: b085 sub sp, #20 if(txt == NULL) return 0; 13fca: 2800 cmp r0, #0 13fcc: d040 beq.n 14050 <_lv_txt_get_width+0x8c> 13fce: 4605 mov r5, r0 if(font == NULL) return 0; 13fd0: 2a00 cmp r2, #0 13fd2: d03f beq.n 14054 <_lv_txt_get_width+0x90> uint32_t i = 0; 13fd4: 2000 movs r0, #0 13fd6: 9003 str r0, [sp, #12] lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; 13fd8: f88d 000b strb.w r0, [sp, #11] if(length != 0) { 13fdc: b149 cbz r1, 13ff2 <_lv_txt_get_width+0x2e> 13fde: 469b mov fp, r3 13fe0: 9201 str r2, [sp, #4] 13fe2: 4689 mov r9, r1 13fe4: 2400 movs r4, #0 uint32_t letter = _lv_txt_encoded_next(txt, &i); 13fe6: 4f1c ldr r7, [pc, #112] ; (14058 <_lv_txt_get_width+0x94>) if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 13fe8: f89d a038 ldrb.w sl, [sp, #56] ; 0x38 13fec: f00a 0a01 and.w sl, sl, #1 13ff0: e00c b.n 1400c <_lv_txt_get_width+0x48> lv_coord_t width = 0; 13ff2: 4604 mov r4, r0 13ff4: e028 b.n 14048 <_lv_txt_get_width+0x84> lv_coord_t char_width = lv_font_get_glyph_width(font, letter, letter_next); 13ff6: 4642 mov r2, r8 13ff8: 4631 mov r1, r6 13ffa: 9801 ldr r0, [sp, #4] 13ffc: 4b17 ldr r3, [pc, #92] ; (1405c <_lv_txt_get_width+0x98>) 13ffe: 4798 blx r3 if(char_width > 0) { 14000: b203 sxth r3, r0 14002: 2b00 cmp r3, #0 14004: dd02 ble.n 1400c <_lv_txt_get_width+0x48> width += letter_space; 14006: 445c add r4, fp 14008: 4404 add r4, r0 1400a: b224 sxth r4, r4 while(i < length) { 1400c: 9b03 ldr r3, [sp, #12] 1400e: 4599 cmp r9, r3 14010: d915 bls.n 1403e <_lv_txt_get_width+0x7a> uint32_t letter = _lv_txt_encoded_next(txt, &i); 14012: 687b ldr r3, [r7, #4] 14014: a903 add r1, sp, #12 14016: 4628 mov r0, r5 14018: 4798 blx r3 1401a: 4606 mov r6, r0 uint32_t letter_next = _lv_txt_encoded_next(&txt[i], NULL); 1401c: 687b ldr r3, [r7, #4] 1401e: 2100 movs r1, #0 14020: 9803 ldr r0, [sp, #12] 14022: 4428 add r0, r5 14024: 4798 blx r3 14026: 4680 mov r8, r0 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 14028: f1ba 0f00 cmp.w sl, #0 1402c: d0e3 beq.n 13ff6 <_lv_txt_get_width+0x32> if(_lv_txt_is_cmd(&cmd_state, letter) != false) { 1402e: 4631 mov r1, r6 14030: f10d 000b add.w r0, sp, #11 14034: 4b0a ldr r3, [pc, #40] ; (14060 <_lv_txt_get_width+0x9c>) 14036: 4798 blx r3 14038: 2800 cmp r0, #0 1403a: d1e7 bne.n 1400c <_lv_txt_get_width+0x48> 1403c: e7db b.n 13ff6 <_lv_txt_get_width+0x32> if(width > 0) { 1403e: 2c00 cmp r4, #0 14040: dd02 ble.n 14048 <_lv_txt_get_width+0x84> width -= letter_space; /*Trim the last letter space. Important if the text is center 14042: eba4 040b sub.w r4, r4, fp 14046: b224 sxth r4, r4 } 14048: 4620 mov r0, r4 1404a: b005 add sp, #20 1404c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(txt == NULL) return 0; 14050: 2400 movs r4, #0 14052: e7f9 b.n 14048 <_lv_txt_get_width+0x84> if(font == NULL) return 0; 14054: 2400 movs r4, #0 14056: e7f7 b.n 14048 <_lv_txt_get_width+0x84> 14058: 20000054 .word 0x20000054 1405c: 00010049 .word 0x00010049 14060: 00013d51 .word 0x00013d51 00014064 <_lv_txt_get_size>: { 14064: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 14068: b089 sub sp, #36 ; 0x24 1406a: f9bd 4048 ldrsh.w r4, [sp, #72] ; 0x48 1406e: 9406 str r4, [sp, #24] 14070: f9bd 504c ldrsh.w r5, [sp, #76] ; 0x4c 14074: f89d 8050 ldrb.w r8, [sp, #80] ; 0x50 size_res->x = 0; 14078: 2400 movs r4, #0 1407a: 8004 strh r4, [r0, #0] size_res->y = 0; 1407c: 8044 strh r4, [r0, #2] if(text == NULL) return; 1407e: 2900 cmp r1, #0 14080: d05b beq.n 1413a <_lv_txt_get_size+0xd6> 14082: 460f mov r7, r1 if(font == NULL) return; 14084: 2a00 cmp r2, #0 14086: d058 beq.n 1413a <_lv_txt_get_size+0xd6> 14088: 9303 str r3, [sp, #12] 1408a: 4611 mov r1, r2 1408c: 9202 str r2, [sp, #8] 1408e: 4604 mov r4, r0 if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX; 14090: f008 0302 and.w r3, r8, #2 14094: f647 4218 movw r2, #31768 ; 0x7c18 14098: 2b00 cmp r3, #0 1409a: bf18 it ne 1409c: 4615 movne r5, r2 1409e: 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; 140a0: f9b1 2008 ldrsh.w r2, [r1, #8] 140a4: 9207 str r2, [sp, #28] uint16_t letter_height = lv_font_get_line_height(font); 140a6: fa1f fa82 uxth.w sl, r2 while(text[line_start] != '\0') { 140aa: 783b ldrb r3, [r7, #0] 140ac: 2b00 cmp r3, #0 140ae: d04c beq.n 1414a <_lv_txt_get_size+0xe6> 140b0: 463e mov r6, r7 140b2: 2500 movs r5, #0 new_line_start += _lv_txt_get_next_line(&text[line_start], font, letter_space, max_width, flag); 140b4: f8df b0b0 ldr.w fp, [pc, #176] ; 14168 <_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)) { 140b8: 9b06 ldr r3, [sp, #24] 140ba: 449a add sl, r3 140bc: fa1f f98a uxth.w r9, sl 140c0: 4647 mov r7, r8 140c2: 46b0 mov r8, r6 new_line_start += _lv_txt_get_next_line(&text[line_start], font, letter_space, max_width, flag); 140c4: 9700 str r7, [sp, #0] 140c6: 9b04 ldr r3, [sp, #16] 140c8: 9a03 ldr r2, [sp, #12] 140ca: 9902 ldr r1, [sp, #8] 140cc: 4630 mov r0, r6 140ce: 47d8 blx fp 140d0: 4405 add r5, r0 if((unsigned long)size_res->y + (unsigned long)letter_height + (unsigned long)line_space > LV_MAX_OF(lv_coord_t)) { 140d2: f9b4 3002 ldrsh.w r3, [r4, #2] 140d6: eb0a 0203 add.w r2, sl, r3 140da: f5b2 4f00 cmp.w r2, #32768 ; 0x8000 140de: d224 bcs.n 1412a <_lv_txt_get_size+0xc6> 140e0: f8cd 9014 str.w r9, [sp, #20] size_res->y += line_space; 140e4: 444b add r3, r9 140e6: 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, 140e8: 9700 str r7, [sp, #0] 140ea: 9b03 ldr r3, [sp, #12] 140ec: 9a02 ldr r2, [sp, #8] 140ee: 4601 mov r1, r0 140f0: 4630 mov r0, r6 140f2: 4e18 ldr r6, [pc, #96] ; (14154 <_lv_txt_get_size+0xf0>) 140f4: 47b0 blx r6 size_res->x = LV_MATH_MAX(act_line_length, size_res->x); 140f6: f9b4 3000 ldrsh.w r3, [r4] 140fa: 4298 cmp r0, r3 140fc: bfb8 it lt 140fe: 4618 movlt r0, r3 14100: 8020 strh r0, [r4, #0] while(text[line_start] != '\0') { 14102: eb08 0605 add.w r6, r8, r5 14106: f818 3005 ldrb.w r3, [r8, r5] 1410a: 2b00 cmp r3, #0 1410c: d1da bne.n 140c4 <_lv_txt_get_size+0x60> if((line_start != 0) && (text[line_start - 1] == '\n' || text[line_start - 1] == '\r')) { 1410e: b12d cbz r5, 1411c <_lv_txt_get_size+0xb8> 14110: f816 3c01 ldrb.w r3, [r6, #-1] 14114: 2b0a cmp r3, #10 14116: d013 beq.n 14140 <_lv_txt_get_size+0xdc> 14118: 2b0d cmp r3, #13 1411a: d011 beq.n 14140 <_lv_txt_get_size+0xdc> if(size_res->y == 0) 1411c: f9b4 3002 ldrsh.w r3, [r4, #2] 14120: b19b cbz r3, 1414a <_lv_txt_get_size+0xe6> size_res->y -= line_space; 14122: 9a06 ldr r2, [sp, #24] 14124: 1a9b subs r3, r3, r2 14126: 8063 strh r3, [r4, #2] 14128: e007 b.n 1413a <_lv_txt_get_size+0xd6> LV_LOG_WARN("lv_txt_get_size: integer overflow while calculating text height"); 1412a: 4b0b ldr r3, [pc, #44] ; (14158 <_lv_txt_get_size+0xf4>) 1412c: 9300 str r3, [sp, #0] 1412e: 4b0b ldr r3, [pc, #44] ; (1415c <_lv_txt_get_size+0xf8>) 14130: 2271 movs r2, #113 ; 0x71 14132: 490b ldr r1, [pc, #44] ; (14160 <_lv_txt_get_size+0xfc>) 14134: 2002 movs r0, #2 14136: 4c0b ldr r4, [pc, #44] ; (14164 <_lv_txt_get_size+0x100>) 14138: 47a0 blx r4 } 1413a: b009 add sp, #36 ; 0x24 1413c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} size_res->y += letter_height + line_space; 14140: 8863 ldrh r3, [r4, #2] 14142: 9a05 ldr r2, [sp, #20] 14144: 441a add r2, r3 14146: 8062 strh r2, [r4, #2] 14148: e7e8 b.n 1411c <_lv_txt_get_size+0xb8> size_res->y = letter_height; 1414a: f8bd 301c ldrh.w r3, [sp, #28] 1414e: 8063 strh r3, [r4, #2] 14150: e7f3 b.n 1413a <_lv_txt_get_size+0xd6> 14152: bf00 nop 14154: 00013fc5 .word 0x00013fc5 14158: 0002952c .word 0x0002952c 1415c: 000294e8 .word 0x000294e8 14160: 00029504 .word 0x00029504 14164: 00012245 .word 0x00012245 14168: 00013d99 .word 0x00013d99 0001416c <_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)) { 1416c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 14170: 4681 mov r9, r0 14172: 468a mov sl, r1 14174: 461f mov r7, r3 14176: f8dd 8020 ldr.w r8, [sp, #32] const char * middle; int32_t c; for(middle = base; n != 0;) { 1417a: 4614 mov r4, r2 1417c: b932 cbnz r2, 1418c <_lv_utils_bsearch+0x20> } else { return (char *)middle; } } return NULL; 1417e: 2000 movs r0, #0 14180: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} else if(c < 0) { 14184: 2800 cmp r0, #0 14186: da14 bge.n 141b2 <_lv_utils_bsearch+0x46> n /= 2; 14188: 462c mov r4, r5 for(middle = base; n != 0;) { 1418a: b17c cbz r4, 141ac <_lv_utils_bsearch+0x40> middle += (n / 2) * size; 1418c: 0865 lsrs r5, r4, #1 1418e: fb07 a605 mla r6, r7, r5, sl if((c = (*cmp)(key, middle)) > 0) { 14192: 4631 mov r1, r6 14194: 4648 mov r0, r9 14196: 47c0 blx r8 14198: 2800 cmp r0, #0 1419a: ddf3 ble.n 14184 <_lv_utils_bsearch+0x18> n = (n / 2) - ((n & 1) == 0); 1419c: f084 0401 eor.w r4, r4, #1 141a0: f004 0401 and.w r4, r4, #1 141a4: 1b2c subs r4, r5, r4 base = (middle += size); 141a6: eb06 0a07 add.w sl, r6, r7 141aa: e7ee b.n 1418a <_lv_utils_bsearch+0x1e> return NULL; 141ac: 2000 movs r0, #0 141ae: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} middle += (n / 2) * size; 141b2: 4630 mov r0, r6 } 141b4: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 000141b8 : * 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; 141b8: 4b01 ldr r3, [pc, #4] ; (141c0 ) 141ba: 6018 str r0, [r3, #0] 141bc: 4770 bx lr 141be: bf00 nop 141c0: 20006bd4 .word 0x20006bd4 000141c4 : * 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; 141c4: 4b01 ldr r3, [pc, #4] ; (141cc ) 141c6: 681b ldr r3, [r3, #0] } 141c8: 68d8 ldr r0, [r3, #12] 141ca: 4770 bx lr 141cc: 20006bd4 .word 0x20006bd4 000141d0 : { return act_theme->flags; } void lv_theme_apply(lv_obj_t * obj, lv_theme_style_t name) { 141d0: b508 push {r3, lr} act_theme->apply_xcb(obj, name); 141d2: 4b02 ldr r3, [pc, #8] ; (141dc ) 141d4: 681b ldr r3, [r3, #0] 141d6: 681b ldr r3, [r3, #0] 141d8: 4798 blx r3 141da: bd08 pop {r3, pc} 141dc: 20006bd4 .word 0x20006bd4 000141e0 : return &theme; } static void theme_apply(lv_obj_t * obj, lv_theme_style_t name) { 141e0: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 141e4: 4604 mov r4, r0 lv_style_list_t * list; switch(name) { 141e6: 3901 subs r1, #1 141e8: 2927 cmp r1, #39 ; 0x27 141ea: d834 bhi.n 14256 141ec: e8df f011 tbh [pc, r1, lsl #1] 141f0: 00390028 .word 0x00390028 141f4: 00a100ec .word 0x00a100ec 141f8: 00600053 .word 0x00600053 141fc: 00d803a3 .word 0x00d803a3 14200: 02b20144 .word 0x02b20144 14204: 03cc0046 .word 0x03cc0046 14208: 03fe0273 .word 0x03fe0273 1420c: 00e000dc .word 0x00e000dc 14210: 00e40081 .word 0x00e40081 14214: 00e80193 .word 0x00e80193 14218: 02660247 .word 0x02660247 1421c: 016a03e3 .word 0x016a03e3 14220: 023f017c .word 0x023f017c 14224: 022301a0 .word 0x022301a0 14228: 0375011f .word 0x0375011f 1422c: 01080391 .word 0x01080391 14230: 02e000b8 .word 0x02e000b8 14234: 01f401c9 .word 0x01f401c9 14238: 02040347 .word 0x02040347 1423c: 033a0312 .word 0x033a0312 case LV_THEME_NONE: break; case LV_THEME_SCR: lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 14240: 2100 movs r1, #0 14242: 4b9b ldr r3, [pc, #620] ; (144b0 ) 14244: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN); 14246: 2100 movs r1, #0 14248: 4620 mov r0, r4 1424a: 4b9a ldr r3, [pc, #616] ; (144b4 ) 1424c: 4798 blx r3 _lv_style_list_add_style(list, &styles->scr); 1424e: 4b9a ldr r3, [pc, #616] ; (144b8 ) 14250: 6819 ldr r1, [r3, #0] 14252: 4b9a ldr r3, [pc, #616] ; (144bc ) 14254: 4798 blx r3 #endif default: break; } lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 14256: 21ff movs r1, #255 ; 0xff 14258: 4620 mov r0, r4 1425a: 4b99 ldr r3, [pc, #612] ; (144c0 ) 1425c: 4798 blx r3 1425e: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 14262: 2100 movs r1, #0 14264: 4b92 ldr r3, [pc, #584] ; (144b0 ) 14266: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN); 14268: 2100 movs r1, #0 1426a: 4620 mov r0, r4 1426c: 4b91 ldr r3, [pc, #580] ; (144b4 ) 1426e: 4798 blx r3 _lv_style_list_add_style(list, &styles->bg); 14270: 4b91 ldr r3, [pc, #580] ; (144b8 ) 14272: 6819 ldr r1, [r3, #0] 14274: 3104 adds r1, #4 14276: 4b91 ldr r3, [pc, #580] ; (144bc ) 14278: 4798 blx r3 break; 1427a: e7ec b.n 14256 lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 1427c: 2100 movs r1, #0 1427e: 4b8c ldr r3, [pc, #560] ; (144b0 ) 14280: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_CONT_PART_MAIN); 14282: 2100 movs r1, #0 14284: 4620 mov r0, r4 14286: 4b8b ldr r3, [pc, #556] ; (144b4 ) 14288: 4798 blx r3 _lv_style_list_add_style(list, &styles->bg); 1428a: 4b8b ldr r3, [pc, #556] ; (144b8 ) 1428c: 6819 ldr r1, [r3, #0] 1428e: 3104 adds r1, #4 14290: 4b8a ldr r3, [pc, #552] ; (144bc ) 14292: 4798 blx r3 break; 14294: e7df b.n 14256 lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 14296: 2100 movs r1, #0 14298: 4b85 ldr r3, [pc, #532] ; (144b0 ) 1429a: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 1429c: 2100 movs r1, #0 1429e: 4620 mov r0, r4 142a0: 4b84 ldr r3, [pc, #528] ; (144b4 ) 142a2: 4798 blx r3 _lv_style_list_add_style(list, &styles->btn); 142a4: 4b84 ldr r3, [pc, #528] ; (144b8 ) 142a6: 6819 ldr r1, [r3, #0] 142a8: 3110 adds r1, #16 142aa: 4b84 ldr r3, [pc, #528] ; (144bc ) 142ac: 4798 blx r3 break; 142ae: e7d2 b.n 14256 lv_obj_clean_style_list(obj, LV_BTNMATRIX_PART_BG); 142b0: 2100 movs r1, #0 142b2: f8df 81fc ldr.w r8, [pc, #508] ; 144b0 142b6: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BG); 142b8: 2100 movs r1, #0 142ba: 4620 mov r0, r4 142bc: 4f7d ldr r7, [pc, #500] ; (144b4 ) 142be: 47b8 blx r7 142c0: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 142c2: 4e7d ldr r6, [pc, #500] ; (144b8 ) 142c4: 6831 ldr r1, [r6, #0] 142c6: 3104 adds r1, #4 142c8: 4d7c ldr r5, [pc, #496] ; (144bc ) 142ca: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 142cc: 6831 ldr r1, [r6, #0] 142ce: 3118 adds r1, #24 142d0: 4648 mov r0, r9 142d2: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_BTNMATRIX_PART_BTN); 142d4: 2101 movs r1, #1 142d6: 4620 mov r0, r4 142d8: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BTN); 142da: 2101 movs r1, #1 142dc: 4620 mov r0, r4 142de: 47b8 blx r7 142e0: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 142e2: 6831 ldr r1, [r6, #0] 142e4: 3104 adds r1, #4 142e6: 47a8 blx r5 _lv_style_list_add_style(list, &styles->bg_click); 142e8: 6831 ldr r1, [r6, #0] 142ea: 3108 adds r1, #8 142ec: 4638 mov r0, r7 142ee: 47a8 blx r5 break; 142f0: e7b1 b.n 14256 lv_obj_clean_style_list(obj, LV_KEYBOARD_PART_BG); 142f2: 2100 movs r1, #0 142f4: f8df 81b8 ldr.w r8, [pc, #440] ; 144b0 142f8: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BG); 142fa: 2100 movs r1, #0 142fc: 4620 mov r0, r4 142fe: 4f6d ldr r7, [pc, #436] ; (144b4 ) 14300: 47b8 blx r7 14302: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->scr); 14304: 4e6c ldr r6, [pc, #432] ; (144b8 ) 14306: 6831 ldr r1, [r6, #0] 14308: 4d6c ldr r5, [pc, #432] ; (144bc ) 1430a: 47a8 blx r5 _lv_style_list_add_style(list, &styles->kb_bg); 1430c: 6831 ldr r1, [r6, #0] 1430e: 3168 adds r1, #104 ; 0x68 14310: 4648 mov r0, r9 14312: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_KEYBOARD_PART_BTN); 14314: 2101 movs r1, #1 14316: 4620 mov r0, r4 14318: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BTN); 1431a: 2101 movs r1, #1 1431c: 4620 mov r0, r4 1431e: 47b8 blx r7 14320: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 14322: 6831 ldr r1, [r6, #0] 14324: 3104 adds r1, #4 14326: 47a8 blx r5 _lv_style_list_add_style(list, &styles->bg_click); 14328: 6831 ldr r1, [r6, #0] 1432a: 3108 adds r1, #8 1432c: 4638 mov r0, r7 1432e: 47a8 blx r5 break; 14330: e791 b.n 14256 lv_obj_clean_style_list(obj, LV_BAR_PART_BG); 14332: 2100 movs r1, #0 14334: f8df 8178 ldr.w r8, [pc, #376] ; 144b0 14338: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_BAR_PART_BG); 1433a: 2100 movs r1, #0 1433c: 4620 mov r0, r4 1433e: 4f5d ldr r7, [pc, #372] ; (144b4 ) 14340: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_bg); 14342: 4e5d ldr r6, [pc, #372] ; (144b8 ) 14344: 6831 ldr r1, [r6, #0] 14346: 3124 adds r1, #36 ; 0x24 14348: 4d5c ldr r5, [pc, #368] ; (144bc ) 1434a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_BAR_PART_INDIC); 1434c: 2101 movs r1, #1 1434e: 4620 mov r0, r4 14350: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_BAR_PART_INDIC); 14352: 2101 movs r1, #1 14354: 4620 mov r0, r4 14356: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_indic); 14358: 6831 ldr r1, [r6, #0] 1435a: 3128 adds r1, #40 ; 0x28 1435c: 47a8 blx r5 break; 1435e: e77a b.n 14256 lv_obj_clean_style_list(obj, LV_SWITCH_PART_BG); 14360: 2100 movs r1, #0 14362: f8df 814c ldr.w r8, [pc, #332] ; 144b0 14366: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SWITCH_PART_BG); 14368: 2100 movs r1, #0 1436a: 4620 mov r0, r4 1436c: 4f51 ldr r7, [pc, #324] ; (144b4 ) 1436e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_bg); 14370: 4e51 ldr r6, [pc, #324] ; (144b8 ) 14372: 6831 ldr r1, [r6, #0] 14374: 3124 adds r1, #36 ; 0x24 14376: 4d51 ldr r5, [pc, #324] ; (144bc ) 14378: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SWITCH_PART_INDIC); 1437a: 2101 movs r1, #1 1437c: 4620 mov r0, r4 1437e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SWITCH_PART_INDIC); 14380: 2101 movs r1, #1 14382: 4620 mov r0, r4 14384: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_indic); 14386: 6831 ldr r1, [r6, #0] 14388: 3128 adds r1, #40 ; 0x28 1438a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SWITCH_PART_KNOB); 1438c: 2102 movs r1, #2 1438e: 4620 mov r0, r4 14390: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SWITCH_PART_KNOB); 14392: 2102 movs r1, #2 14394: 4620 mov r0, r4 14396: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sw_knob); 14398: 6831 ldr r1, [r6, #0] 1439a: 319c adds r1, #156 ; 0x9c 1439c: 47a8 blx r5 break; 1439e: e75a b.n 14256 lv_obj_clean_style_list(obj, LV_CANVAS_PART_MAIN); 143a0: 2100 movs r1, #0 143a2: 4b43 ldr r3, [pc, #268] ; (144b0 ) 143a4: 4798 blx r3 break; 143a6: e756 b.n 14256 lv_obj_clean_style_list(obj, LV_IMG_PART_MAIN); 143a8: 2100 movs r1, #0 143aa: 4b41 ldr r3, [pc, #260] ; (144b0 ) 143ac: 4798 blx r3 break; 143ae: e752 b.n 14256 lv_obj_clean_style_list(obj, LV_IMG_PART_MAIN); 143b0: 2100 movs r1, #0 143b2: 4b3f ldr r3, [pc, #252] ; (144b0 ) 143b4: 4798 blx r3 break; 143b6: e74e b.n 14256 lv_obj_clean_style_list(obj, LV_LABEL_PART_MAIN); 143b8: 2100 movs r1, #0 143ba: 4b3d ldr r3, [pc, #244] ; (144b0 ) 143bc: 4798 blx r3 break; 143be: e74a b.n 14256 lv_obj_clean_style_list(obj, LV_LABEL_PART_MAIN); 143c0: 2100 movs r1, #0 143c2: 4b3b ldr r3, [pc, #236] ; (144b0 ) 143c4: 4798 blx r3 break; 143c6: e746 b.n 14256 lv_obj_clean_style_list(obj, LV_ARC_PART_BG); 143c8: 2100 movs r1, #0 143ca: f8df 80e4 ldr.w r8, [pc, #228] ; 144b0 143ce: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_ARC_PART_BG); 143d0: 2100 movs r1, #0 143d2: 4620 mov r0, r4 143d4: 4f37 ldr r7, [pc, #220] ; (144b4 ) 143d6: 47b8 blx r7 143d8: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 143da: 4e37 ldr r6, [pc, #220] ; (144b8 ) 143dc: 6831 ldr r1, [r6, #0] 143de: 3104 adds r1, #4 143e0: 4d36 ldr r5, [pc, #216] ; (144bc ) 143e2: 47a8 blx r5 _lv_style_list_add_style(list, &styles->arc_bg); 143e4: 6831 ldr r1, [r6, #0] 143e6: 3120 adds r1, #32 143e8: 4648 mov r0, r9 143ea: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_ARC_PART_INDIC); 143ec: 2101 movs r1, #1 143ee: 4620 mov r0, r4 143f0: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_ARC_PART_INDIC); 143f2: 2101 movs r1, #1 143f4: 4620 mov r0, r4 143f6: 47b8 blx r7 _lv_style_list_add_style(list, &styles->arc_indic); 143f8: 6831 ldr r1, [r6, #0] 143fa: 311c adds r1, #28 143fc: 47a8 blx r5 break; 143fe: e72a b.n 14256 lv_obj_clean_style_list(obj, LV_SPINNER_PART_BG); 14400: 2100 movs r1, #0 14402: f8df 80ac ldr.w r8, [pc, #172] ; 144b0 14406: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SPINNER_PART_BG); 14408: 2100 movs r1, #0 1440a: 4620 mov r0, r4 1440c: 4f29 ldr r7, [pc, #164] ; (144b4 ) 1440e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->arc_bg); 14410: 4e29 ldr r6, [pc, #164] ; (144b8 ) 14412: 6831 ldr r1, [r6, #0] 14414: 3120 adds r1, #32 14416: 4d29 ldr r5, [pc, #164] ; (144bc ) 14418: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SPINNER_PART_INDIC); 1441a: 2101 movs r1, #1 1441c: 4620 mov r0, r4 1441e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SPINNER_PART_INDIC); 14420: 2101 movs r1, #1 14422: 4620 mov r0, r4 14424: 47b8 blx r7 _lv_style_list_add_style(list, &styles->arc_indic); 14426: 6831 ldr r1, [r6, #0] 14428: 311c adds r1, #28 1442a: 47a8 blx r5 break; 1442c: e713 b.n 14256 lv_obj_clean_style_list(obj, LV_SLIDER_PART_BG); 1442e: 2100 movs r1, #0 14430: f8df 807c ldr.w r8, [pc, #124] ; 144b0 14434: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_BG); 14436: 2100 movs r1, #0 14438: 4620 mov r0, r4 1443a: 4f1e ldr r7, [pc, #120] ; (144b4 ) 1443c: 47b8 blx r7 1443e: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bar_bg); 14440: 4e1d ldr r6, [pc, #116] ; (144b8 ) 14442: 6831 ldr r1, [r6, #0] 14444: 3124 adds r1, #36 ; 0x24 14446: 4d1d ldr r5, [pc, #116] ; (144bc ) 14448: 47a8 blx r5 _lv_style_list_add_style(list, &styles->slider_bg); 1444a: 6831 ldr r1, [r6, #0] 1444c: 3194 adds r1, #148 ; 0x94 1444e: 4648 mov r0, r9 14450: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SLIDER_PART_INDIC); 14452: 2101 movs r1, #1 14454: 4620 mov r0, r4 14456: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_INDIC); 14458: 2101 movs r1, #1 1445a: 4620 mov r0, r4 1445c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_indic); 1445e: 6831 ldr r1, [r6, #0] 14460: 3128 adds r1, #40 ; 0x28 14462: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SLIDER_PART_KNOB); 14464: 2102 movs r1, #2 14466: 4620 mov r0, r4 14468: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_KNOB); 1446a: 2102 movs r1, #2 1446c: 4620 mov r0, r4 1446e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->slider_knob); 14470: 6831 ldr r1, [r6, #0] 14472: 3190 adds r1, #144 ; 0x90 14474: 47a8 blx r5 break; 14476: e6ee b.n 14256 lv_obj_clean_style_list(obj, LV_CHECKBOX_PART_BG); 14478: 2100 movs r1, #0 1447a: f8df 8034 ldr.w r8, [pc, #52] ; 144b0 1447e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BG); 14480: 2100 movs r1, #0 14482: 4620 mov r0, r4 14484: 4f0b ldr r7, [pc, #44] ; (144b4 ) 14486: 47b8 blx r7 _lv_style_list_add_style(list, &styles->cb_bg); 14488: 4e0b ldr r6, [pc, #44] ; (144b8 ) 1448a: 6831 ldr r1, [r6, #0] 1448c: 314c adds r1, #76 ; 0x4c 1448e: 4d0b ldr r5, [pc, #44] ; (144bc ) 14490: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CHECKBOX_PART_BULLET); 14492: 2140 movs r1, #64 ; 0x40 14494: 4620 mov r0, r4 14496: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BULLET); 14498: 2140 movs r1, #64 ; 0x40 1449a: 4620 mov r0, r4 1449c: 47b8 blx r7 1449e: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->btn); 144a0: 6831 ldr r1, [r6, #0] 144a2: 3110 adds r1, #16 144a4: 47a8 blx r5 _lv_style_list_add_style(list, &styles->cb_bullet); 144a6: 6831 ldr r1, [r6, #0] 144a8: 3150 adds r1, #80 ; 0x50 144aa: 4638 mov r0, r7 144ac: 47a8 blx r5 break; 144ae: e6d2 b.n 14256 144b0: 000030b5 .word 0x000030b5 144b4: 00002fe5 .word 0x00002fe5 144b8: 20006bd8 .word 0x20006bd8 144bc: 000065c1 .word 0x000065c1 144c0: 00003a81 .word 0x00003a81 lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BG); 144c4: 2100 movs r1, #0 144c6: 4b9f ldr r3, [pc, #636] ; (14744 ) 144c8: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BG); 144ca: 2100 movs r1, #0 144cc: 4620 mov r0, r4 144ce: 4b9e ldr r3, [pc, #632] ; (14748 ) 144d0: 4798 blx r3 144d2: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 144d4: 4e9d ldr r6, [pc, #628] ; (1474c ) 144d6: 6831 ldr r1, [r6, #0] 144d8: 3104 adds r1, #4 144da: 4d9d ldr r5, [pc, #628] ; (14750 ) 144dc: 47a8 blx r5 _lv_style_list_add_style(list, &styles->mbox_bg); 144de: 6831 ldr r1, [r6, #0] 144e0: 317c adds r1, #124 ; 0x7c 144e2: 4638 mov r0, r7 144e4: 47a8 blx r5 break; 144e6: e6b6 b.n 14256 lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BTN_BG); 144e8: 2140 movs r1, #64 ; 0x40 144ea: f8df 8258 ldr.w r8, [pc, #600] ; 14744 144ee: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN_BG); 144f0: 2140 movs r1, #64 ; 0x40 144f2: 4620 mov r0, r4 144f4: 4f94 ldr r7, [pc, #592] ; (14748 ) 144f6: 47b8 blx r7 _lv_style_list_add_style(list, &styles->pad_small); 144f8: 4e94 ldr r6, [pc, #592] ; (1474c ) 144fa: 6831 ldr r1, [r6, #0] 144fc: 3118 adds r1, #24 144fe: 4d94 ldr r5, [pc, #592] ; (14750 ) 14500: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BTN); 14502: 2141 movs r1, #65 ; 0x41 14504: 4620 mov r0, r4 14506: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN); 14508: 2141 movs r1, #65 ; 0x41 1450a: 4620 mov r0, r4 1450c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->btn); 1450e: 6831 ldr r1, [r6, #0] 14510: 3110 adds r1, #16 14512: 47a8 blx r5 break; 14514: e69f b.n 14256 lv_obj_clean_style_list(obj, LV_LED_PART_MAIN); 14516: 2100 movs r1, #0 14518: 4b8a ldr r3, [pc, #552] ; (14744 ) 1451a: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_LED_PART_MAIN); 1451c: 2100 movs r1, #0 1451e: 4620 mov r0, r4 14520: 4b89 ldr r3, [pc, #548] ; (14748 ) 14522: 4798 blx r3 _lv_style_list_add_style(list, &styles->led); 14524: 4b89 ldr r3, [pc, #548] ; (1474c ) 14526: 6819 ldr r1, [r3, #0] 14528: 316c adds r1, #108 ; 0x6c 1452a: 4b89 ldr r3, [pc, #548] ; (14750 ) 1452c: 4798 blx r3 break; 1452e: e692 b.n 14256 lv_obj_clean_style_list(obj, LV_PAGE_PART_BG); 14530: 2100 movs r1, #0 14532: f8df 8210 ldr.w r8, [pc, #528] ; 14744 14536: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_PAGE_PART_BG); 14538: 2100 movs r1, #0 1453a: 4620 mov r0, r4 1453c: 4f82 ldr r7, [pc, #520] ; (14748 ) 1453e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 14540: 4e82 ldr r6, [pc, #520] ; (1474c ) 14542: 6831 ldr r1, [r6, #0] 14544: 3104 adds r1, #4 14546: 4d82 ldr r5, [pc, #520] ; (14750 ) 14548: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_SCROLLABLE); 1454a: 2140 movs r1, #64 ; 0x40 1454c: 4620 mov r0, r4 1454e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLABLE); 14550: 2140 movs r1, #64 ; 0x40 14552: 4620 mov r0, r4 14554: 47b8 blx r7 _lv_style_list_add_style(list, &styles->pad_inner); 14556: 6831 ldr r1, [r6, #0] 14558: 3114 adds r1, #20 1455a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_SCROLLBAR); 1455c: 2101 movs r1, #1 1455e: 4620 mov r0, r4 14560: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLBAR); 14562: 2101 movs r1, #1 14564: 4620 mov r0, r4 14566: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 14568: 6831 ldr r1, [r6, #0] 1456a: 3180 adds r1, #128 ; 0x80 1456c: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_EDGE_FLASH); 1456e: 2102 movs r1, #2 14570: 4620 mov r0, r4 14572: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_PAGE_PART_EDGE_FLASH); 14574: 2102 movs r1, #2 14576: 4620 mov r0, r4 14578: 47b8 blx r7 _lv_style_list_add_style(list, &styles->edge_flash); 1457a: 6831 ldr r1, [r6, #0] 1457c: 3184 adds r1, #132 ; 0x84 1457e: 47a8 blx r5 break; 14580: e669 b.n 14256 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_BG); 14582: 2100 movs r1, #0 14584: 4d6f ldr r5, [pc, #444] ; (14744 ) 14586: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_BG); 14588: 2100 movs r1, #0 1458a: 4620 mov r0, r4 1458c: f8df 81b8 ldr.w r8, [pc, #440] ; 14748 14590: 47c0 blx r8 _lv_style_list_add_style(list, &styles->scr); 14592: 4f6e ldr r7, [pc, #440] ; (1474c ) 14594: 6839 ldr r1, [r7, #0] 14596: 4e6e ldr r6, [pc, #440] ; (14750 ) 14598: 47b0 blx r6 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_BG_SCRLLABLE); 1459a: 2140 movs r1, #64 ; 0x40 1459c: 4620 mov r0, r4 1459e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_TAB_BG); 145a0: 2141 movs r1, #65 ; 0x41 145a2: 4620 mov r0, r4 145a4: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_TAB_BG); 145a6: 2141 movs r1, #65 ; 0x41 145a8: 4620 mov r0, r4 145aa: 47c0 blx r8 _lv_style_list_add_style(list, &styles->tabview_btns_bg); 145ac: 6839 ldr r1, [r7, #0] 145ae: 31a8 adds r1, #168 ; 0xa8 145b0: 47b0 blx r6 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_INDIC); 145b2: 2143 movs r1, #67 ; 0x43 145b4: 4620 mov r0, r4 145b6: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_INDIC); 145b8: 2143 movs r1, #67 ; 0x43 145ba: 4620 mov r0, r4 145bc: 47c0 blx r8 _lv_style_list_add_style(list, &styles->tabview_indic); 145be: 6839 ldr r1, [r7, #0] 145c0: 31ac adds r1, #172 ; 0xac 145c2: 47b0 blx r6 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_TAB_BTN); 145c4: 2142 movs r1, #66 ; 0x42 145c6: 4620 mov r0, r4 145c8: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_TAB_BTN); 145ca: 2142 movs r1, #66 ; 0x42 145cc: 4620 mov r0, r4 145ce: 47c0 blx r8 _lv_style_list_add_style(list, &styles->tabview_btns); 145d0: 6839 ldr r1, [r7, #0] 145d2: 31a4 adds r1, #164 ; 0xa4 145d4: 47b0 blx r6 break; 145d6: e63e b.n 14256 lv_obj_clean_style_list(obj, LV_PAGE_PART_BG); 145d8: 2100 movs r1, #0 145da: 4d5a ldr r5, [pc, #360] ; (14744 ) 145dc: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_SCROLLABLE); 145de: 2140 movs r1, #64 ; 0x40 145e0: 4620 mov r0, r4 145e2: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLABLE); 145e4: 2140 movs r1, #64 ; 0x40 145e6: 4620 mov r0, r4 145e8: 4b57 ldr r3, [pc, #348] ; (14748 ) 145ea: 4798 blx r3 _lv_style_list_add_style(list, &styles->tabview_page_scrl); 145ec: 4b57 ldr r3, [pc, #348] ; (1474c ) 145ee: 6819 ldr r1, [r3, #0] 145f0: 31b0 adds r1, #176 ; 0xb0 145f2: 4b57 ldr r3, [pc, #348] ; (14750 ) 145f4: 4798 blx r3 break; 145f6: e62e b.n 14256 lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_BG); 145f8: 2100 movs r1, #0 145fa: f8df 8148 ldr.w r8, [pc, #328] ; 14744 145fe: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_BG); 14600: 2100 movs r1, #0 14602: 4620 mov r0, r4 14604: 4f50 ldr r7, [pc, #320] ; (14748 ) 14606: 47b8 blx r7 _lv_style_list_add_style(list, &styles->scr); 14608: 4e50 ldr r6, [pc, #320] ; (1474c ) 1460a: 6831 ldr r1, [r6, #0] 1460c: 4d50 ldr r5, [pc, #320] ; (14750 ) 1460e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_SCROLLBAR); 14610: 2101 movs r1, #1 14612: 4620 mov r0, r4 14614: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_SCROLLBAR); 14616: 2101 movs r1, #1 14618: 4620 mov r0, r4 1461a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 1461c: 6831 ldr r1, [r6, #0] 1461e: 3180 adds r1, #128 ; 0x80 14620: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_EDGE_FLASH); 14622: 2102 movs r1, #2 14624: 4620 mov r0, r4 14626: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_EDGE_FLASH); 14628: 2102 movs r1, #2 1462a: 4620 mov r0, r4 1462c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->edge_flash); 1462e: 6831 ldr r1, [r6, #0] 14630: 3184 adds r1, #132 ; 0x84 14632: 47a8 blx r5 break; 14634: e60f b.n 14256 lv_obj_clean_style_list(obj, LV_ROLLER_PART_BG); 14636: 2100 movs r1, #0 14638: f8df 8108 ldr.w r8, [pc, #264] ; 14744 1463c: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_ROLLER_PART_BG); 1463e: 2100 movs r1, #0 14640: 4620 mov r0, r4 14642: 4f41 ldr r7, [pc, #260] ; (14748 ) 14644: 47b8 blx r7 14646: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 14648: 4e40 ldr r6, [pc, #256] ; (1474c ) 1464a: 6831 ldr r1, [r6, #0] 1464c: 3104 adds r1, #4 1464e: 4d40 ldr r5, [pc, #256] ; (14750 ) 14650: 47a8 blx r5 _lv_style_list_add_style(list, &styles->roller_bg); 14652: 6831 ldr r1, [r6, #0] 14654: 3188 adds r1, #136 ; 0x88 14656: 4648 mov r0, r9 14658: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_ROLLER_PART_SELECTED); 1465a: 2103 movs r1, #3 1465c: 4620 mov r0, r4 1465e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_ROLLER_PART_SELECTED); 14660: 2103 movs r1, #3 14662: 4620 mov r0, r4 14664: 47b8 blx r7 _lv_style_list_add_style(list, &styles->roller_sel); 14666: 6831 ldr r1, [r6, #0] 14668: 318c adds r1, #140 ; 0x8c 1466a: 47a8 blx r5 break; 1466c: e5f3 b.n 14256 lv_obj_clean_style_list(obj, LV_OBJMASK_PART_MAIN); 1466e: 2100 movs r1, #0 14670: 4b34 ldr r3, [pc, #208] ; (14744 ) 14672: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_OBJMASK_PART_MAIN); 14674: 2100 movs r1, #0 14676: 4620 mov r0, r4 14678: 4b33 ldr r3, [pc, #204] ; (14748 ) 1467a: 4798 blx r3 break; 1467c: e5eb b.n 14256 lv_obj_clean_style_list(obj, LV_LIST_PART_BG); 1467e: 2100 movs r1, #0 14680: 4f30 ldr r7, [pc, #192] ; (14744 ) 14682: 47b8 blx r7 list = lv_obj_get_style_list(obj, LV_LIST_PART_BG); 14684: 2100 movs r1, #0 14686: 4620 mov r0, r4 14688: f8df 80bc ldr.w r8, [pc, #188] ; 14748 1468c: 47c0 blx r8 1468e: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 14690: 4e2e ldr r6, [pc, #184] ; (1474c ) 14692: 6831 ldr r1, [r6, #0] 14694: 3104 adds r1, #4 14696: 4d2e ldr r5, [pc, #184] ; (14750 ) 14698: 47a8 blx r5 _lv_style_list_add_style(list, &styles->list_bg); 1469a: 6831 ldr r1, [r6, #0] 1469c: 3174 adds r1, #116 ; 0x74 1469e: 4648 mov r0, r9 146a0: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_LIST_PART_SCROLLABLE); 146a2: 2140 movs r1, #64 ; 0x40 146a4: 4620 mov r0, r4 146a6: 47b8 blx r7 lv_obj_clean_style_list(obj, LV_LIST_PART_SCROLLBAR); 146a8: 2101 movs r1, #1 146aa: 4620 mov r0, r4 146ac: 47b8 blx r7 list = lv_obj_get_style_list(obj, LV_LIST_PART_SCROLLBAR); 146ae: 2101 movs r1, #1 146b0: 4620 mov r0, r4 146b2: 47c0 blx r8 _lv_style_list_add_style(list, &styles->sb); 146b4: 6831 ldr r1, [r6, #0] 146b6: 3180 adds r1, #128 ; 0x80 146b8: 47a8 blx r5 break; 146ba: e5cc b.n 14256 lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 146bc: 2100 movs r1, #0 146be: 4b21 ldr r3, [pc, #132] ; (14744 ) 146c0: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 146c2: 2100 movs r1, #0 146c4: 4620 mov r0, r4 146c6: 4b20 ldr r3, [pc, #128] ; (14748 ) 146c8: 4798 blx r3 _lv_style_list_add_style(list, &styles->list_btn); 146ca: 4b20 ldr r3, [pc, #128] ; (1474c ) 146cc: 6819 ldr r1, [r3, #0] 146ce: 3178 adds r1, #120 ; 0x78 146d0: 4b1f ldr r3, [pc, #124] ; (14750 ) 146d2: 4798 blx r3 break; 146d4: e5bf b.n 14256 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_MAIN); 146d6: 2100 movs r1, #0 146d8: f8df 8068 ldr.w r8, [pc, #104] ; 14744 146dc: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_MAIN); 146de: 2100 movs r1, #0 146e0: 4620 mov r0, r4 146e2: 4f19 ldr r7, [pc, #100] ; (14748 ) 146e4: 47b8 blx r7 146e6: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 146e8: 4e18 ldr r6, [pc, #96] ; (1474c ) 146ea: 6831 ldr r1, [r6, #0] 146ec: 3104 adds r1, #4 146ee: 4d18 ldr r5, [pc, #96] ; (14750 ) 146f0: 47a8 blx r5 _lv_style_list_add_style(list, &styles->bg_click); 146f2: 6831 ldr r1, [r6, #0] 146f4: 3108 adds r1, #8 146f6: 4648 mov r0, r9 146f8: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 146fa: 6831 ldr r1, [r6, #0] 146fc: 3118 adds r1, #24 146fe: 4648 mov r0, r9 14700: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_LIST); 14702: 2140 movs r1, #64 ; 0x40 14704: 4620 mov r0, r4 14706: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_LIST); 14708: 2140 movs r1, #64 ; 0x40 1470a: 4620 mov r0, r4 1470c: 47b8 blx r7 1470e: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 14710: 6831 ldr r1, [r6, #0] 14712: 3104 adds r1, #4 14714: 47a8 blx r5 _lv_style_list_add_style(list, &styles->ddlist_page); 14716: 6831 ldr r1, [r6, #0] 14718: 3154 adds r1, #84 ; 0x54 1471a: 4648 mov r0, r9 1471c: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SCROLLBAR); 1471e: 2141 movs r1, #65 ; 0x41 14720: 4620 mov r0, r4 14722: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SCROLLBAR); 14724: 2141 movs r1, #65 ; 0x41 14726: 4620 mov r0, r4 14728: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 1472a: 6831 ldr r1, [r6, #0] 1472c: 3180 adds r1, #128 ; 0x80 1472e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SELECTED); 14730: 2142 movs r1, #66 ; 0x42 14732: 4620 mov r0, r4 14734: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SELECTED); 14736: 2142 movs r1, #66 ; 0x42 14738: 4620 mov r0, r4 1473a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->ddlist_sel); 1473c: 6831 ldr r1, [r6, #0] 1473e: 3158 adds r1, #88 ; 0x58 14740: 47a8 blx r5 break; 14742: e588 b.n 14256 14744: 000030b5 .word 0x000030b5 14748: 00002fe5 .word 0x00002fe5 1474c: 20006bd8 .word 0x20006bd8 14750: 000065c1 .word 0x000065c1 lv_obj_clean_style_list(obj, LV_CHART_PART_BG); 14754: 2100 movs r1, #0 14756: f8df 8290 ldr.w r8, [pc, #656] ; 149e8 1475a: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CHART_PART_BG); 1475c: 2100 movs r1, #0 1475e: 4620 mov r0, r4 14760: 4f9e ldr r7, [pc, #632] ; (149dc ) 14762: 47b8 blx r7 14764: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 14766: 4e9e ldr r6, [pc, #632] ; (149e0 ) 14768: 6831 ldr r1, [r6, #0] 1476a: 3104 adds r1, #4 1476c: 4d9d ldr r5, [pc, #628] ; (149e4 ) 1476e: 47a8 blx r5 _lv_style_list_add_style(list, &styles->chart_bg); 14770: 6831 ldr r1, [r6, #0] 14772: 3140 adds r1, #64 ; 0x40 14774: 4648 mov r0, r9 14776: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 14778: 6831 ldr r1, [r6, #0] 1477a: 3118 adds r1, #24 1477c: 4648 mov r0, r9 1477e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CHART_PART_SERIES_BG); 14780: 2101 movs r1, #1 14782: 4620 mov r0, r4 14784: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES_BG); 14786: 2101 movs r1, #1 14788: 4620 mov r0, r4 1478a: 47b8 blx r7 1478c: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->pad_small); 1478e: 6831 ldr r1, [r6, #0] 14790: 3118 adds r1, #24 14792: 47a8 blx r5 _lv_style_list_add_style(list, &styles->chart_series_bg); 14794: 6831 ldr r1, [r6, #0] 14796: 3144 adds r1, #68 ; 0x44 14798: 4648 mov r0, r9 1479a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CHART_PART_SERIES); 1479c: 2102 movs r1, #2 1479e: 4620 mov r0, r4 147a0: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES); 147a2: 2102 movs r1, #2 147a4: 4620 mov r0, r4 147a6: 47b8 blx r7 _lv_style_list_add_style(list, &styles->chart_series); 147a8: 6831 ldr r1, [r6, #0] 147aa: 3148 adds r1, #72 ; 0x48 147ac: 47a8 blx r5 break; 147ae: e552 b.n 14256 lv_obj_clean_style_list(obj, LV_TABLE_PART_BG); 147b0: 2100 movs r1, #0 147b2: f8df 8234 ldr.w r8, [pc, #564] ; 149e8 147b6: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_BG); 147b8: 2100 movs r1, #0 147ba: 4620 mov r0, r4 147bc: 4f87 ldr r7, [pc, #540] ; (149dc ) 147be: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 147c0: 4e87 ldr r6, [pc, #540] ; (149e0 ) 147c2: 6831 ldr r1, [r6, #0] 147c4: 3104 adds r1, #4 147c6: 4d87 ldr r5, [pc, #540] ; (149e4 ) 147c8: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL1); 147ca: 2101 movs r1, #1 147cc: 4620 mov r0, r4 147ce: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL1); 147d0: 2101 movs r1, #1 147d2: 4620 mov r0, r4 147d4: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 147d6: 6831 ldr r1, [r6, #0] 147d8: 31a0 adds r1, #160 ; 0xa0 147da: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL2); 147dc: 2102 movs r1, #2 147de: 4620 mov r0, r4 147e0: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL2); 147e2: 2102 movs r1, #2 147e4: 4620 mov r0, r4 147e6: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 147e8: 6831 ldr r1, [r6, #0] 147ea: 31a0 adds r1, #160 ; 0xa0 147ec: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL3); 147ee: 2103 movs r1, #3 147f0: 4620 mov r0, r4 147f2: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL3); 147f4: 2103 movs r1, #3 147f6: 4620 mov r0, r4 147f8: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 147fa: 6831 ldr r1, [r6, #0] 147fc: 31a0 adds r1, #160 ; 0xa0 147fe: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL4); 14800: 2104 movs r1, #4 14802: 4620 mov r0, r4 14804: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL4); 14806: 2104 movs r1, #4 14808: 4620 mov r0, r4 1480a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 1480c: 6831 ldr r1, [r6, #0] 1480e: 31a0 adds r1, #160 ; 0xa0 14810: 47a8 blx r5 break; 14812: e520 b.n 14256 lv_obj_clean_style_list(obj, LV_WIN_PART_BG); 14814: 2100 movs r1, #0 14816: f8df 81d0 ldr.w r8, [pc, #464] ; 149e8 1481a: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_BG); 1481c: 2100 movs r1, #0 1481e: 4620 mov r0, r4 14820: 4f6e ldr r7, [pc, #440] ; (149dc ) 14822: 47b8 blx r7 _lv_style_list_add_style(list, &styles->scr); 14824: 4e6e ldr r6, [pc, #440] ; (149e0 ) 14826: 6831 ldr r1, [r6, #0] 14828: 4d6e ldr r5, [pc, #440] ; (149e4 ) 1482a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_WIN_PART_SCROLLBAR); 1482c: 2142 movs r1, #66 ; 0x42 1482e: 4620 mov r0, r4 14830: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_SCROLLBAR); 14832: 2142 movs r1, #66 ; 0x42 14834: 4620 mov r0, r4 14836: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 14838: 6831 ldr r1, [r6, #0] 1483a: 3180 adds r1, #128 ; 0x80 1483c: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_WIN_PART_CONTENT_SCROLLABLE); 1483e: 2141 movs r1, #65 ; 0x41 14840: 4620 mov r0, r4 14842: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_CONTENT_SCROLLABLE); 14844: 2141 movs r1, #65 ; 0x41 14846: 4620 mov r0, r4 14848: 47b8 blx r7 _lv_style_list_add_style(list, &styles->tabview_page_scrl); 1484a: 6831 ldr r1, [r6, #0] 1484c: 31b0 adds r1, #176 ; 0xb0 1484e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_WIN_PART_HEADER); 14850: 2140 movs r1, #64 ; 0x40 14852: 4620 mov r0, r4 14854: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_HEADER); 14856: 2140 movs r1, #64 ; 0x40 14858: 4620 mov r0, r4 1485a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->tabview_btns_bg); 1485c: 6831 ldr r1, [r6, #0] 1485e: 31a8 adds r1, #168 ; 0xa8 14860: 47a8 blx r5 break; 14862: e4f8 b.n 14256 lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 14864: 2100 movs r1, #0 14866: 4b60 ldr r3, [pc, #384] ; (149e8 ) 14868: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 1486a: 2100 movs r1, #0 1486c: 4620 mov r0, r4 1486e: 4b5b ldr r3, [pc, #364] ; (149dc ) 14870: 4798 blx r3 _lv_style_list_add_style(list, &styles->tabview_btns); 14872: 4b5b ldr r3, [pc, #364] ; (149e0 ) 14874: 6819 ldr r1, [r3, #0] 14876: 31a4 adds r1, #164 ; 0xa4 14878: 4b5a ldr r3, [pc, #360] ; (149e4 ) 1487a: 4798 blx r3 break; 1487c: e4eb b.n 14256 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_BG); 1487e: 2100 movs r1, #0 14880: f8df 8164 ldr.w r8, [pc, #356] ; 149e8 14884: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_BG); 14886: 2100 movs r1, #0 14888: 4620 mov r0, r4 1488a: 4f54 ldr r7, [pc, #336] ; (149dc ) 1488c: 47b8 blx r7 1488e: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 14890: 4e53 ldr r6, [pc, #332] ; (149e0 ) 14892: 6831 ldr r1, [r6, #0] 14894: 3104 adds r1, #4 14896: 4d53 ldr r5, [pc, #332] ; (149e4 ) 14898: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 1489a: 6831 ldr r1, [r6, #0] 1489c: 3118 adds r1, #24 1489e: 4648 mov r0, r9 148a0: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_PLACEHOLDER); 148a2: 2104 movs r1, #4 148a4: 4620 mov r0, r4 148a6: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_PLACEHOLDER); 148a8: 2104 movs r1, #4 148aa: 4620 mov r0, r4 148ac: 47b8 blx r7 _lv_style_list_add_style(list, &styles->ta_placeholder); 148ae: 6831 ldr r1, [r6, #0] 148b0: 31b8 adds r1, #184 ; 0xb8 148b2: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_CURSOR); 148b4: 2103 movs r1, #3 148b6: 4620 mov r0, r4 148b8: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_CURSOR); 148ba: 2103 movs r1, #3 148bc: 4620 mov r0, r4 148be: 47b8 blx r7 _lv_style_list_add_style(list, &styles->ta_cursor); 148c0: 6831 ldr r1, [r6, #0] 148c2: 31b4 adds r1, #180 ; 0xb4 148c4: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_SCROLLBAR); 148c6: 2101 movs r1, #1 148c8: 4620 mov r0, r4 148ca: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_SCROLLBAR); 148cc: 2101 movs r1, #1 148ce: 4620 mov r0, r4 148d0: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 148d2: 6831 ldr r1, [r6, #0] 148d4: 3180 adds r1, #128 ; 0x80 148d6: 47a8 blx r5 break; 148d8: e4bd b.n 14256 lv_obj_clean_style_list(obj, LV_SPINBOX_PART_BG); 148da: 2100 movs r1, #0 148dc: f8df 8108 ldr.w r8, [pc, #264] ; 149e8 148e0: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_BG); 148e2: 2100 movs r1, #0 148e4: 4620 mov r0, r4 148e6: 4f3d ldr r7, [pc, #244] ; (149dc ) 148e8: 47b8 blx r7 148ea: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 148ec: 4e3c ldr r6, [pc, #240] ; (149e0 ) 148ee: 6831 ldr r1, [r6, #0] 148f0: 3104 adds r1, #4 148f2: 4d3c ldr r5, [pc, #240] ; (149e4 ) 148f4: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 148f6: 6831 ldr r1, [r6, #0] 148f8: 3118 adds r1, #24 148fa: 4648 mov r0, r9 148fc: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SPINBOX_PART_CURSOR); 148fe: 2103 movs r1, #3 14900: 4620 mov r0, r4 14902: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_CURSOR); 14904: 2103 movs r1, #3 14906: 4620 mov r0, r4 14908: 47b8 blx r7 _lv_style_list_add_style(list, &styles->spinbox_cursor); 1490a: 6831 ldr r1, [r6, #0] 1490c: 3198 adds r1, #152 ; 0x98 1490e: 47a8 blx r5 break; 14910: e4a1 b.n 14256 lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 14912: 2100 movs r1, #0 14914: 4b34 ldr r3, [pc, #208] ; (149e8 ) 14916: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 14918: 2100 movs r1, #0 1491a: 4620 mov r0, r4 1491c: 4b2f ldr r3, [pc, #188] ; (149dc ) 1491e: 4798 blx r3 14920: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 14922: 4e2f ldr r6, [pc, #188] ; (149e0 ) 14924: 6831 ldr r1, [r6, #0] 14926: 3104 adds r1, #4 14928: 4d2e ldr r5, [pc, #184] ; (149e4 ) 1492a: 47a8 blx r5 _lv_style_list_add_style(list, &styles->bg_click); 1492c: 6831 ldr r1, [r6, #0] 1492e: 3108 adds r1, #8 14930: 4638 mov r0, r7 14932: 47a8 blx r5 break; 14934: e48f b.n 14256 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_BG); 14936: 2100 movs r1, #0 14938: f8df 80ac ldr.w r8, [pc, #172] ; 149e8 1493c: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_BG); 1493e: 2100 movs r1, #0 14940: 4620 mov r0, r4 14942: 4f26 ldr r7, [pc, #152] ; (149dc ) 14944: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 14946: 4e26 ldr r6, [pc, #152] ; (149e0 ) 14948: 6831 ldr r1, [r6, #0] 1494a: 3104 adds r1, #4 1494c: 4d25 ldr r5, [pc, #148] ; (149e4 ) 1494e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_DATE); 14950: 2103 movs r1, #3 14952: 4620 mov r0, r4 14954: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_DATE); 14956: 2103 movs r1, #3 14958: 4620 mov r0, r4 1495a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->calendar_date_nums); 1495c: 6831 ldr r1, [r6, #0] 1495e: 312c adds r1, #44 ; 0x2c 14960: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_HEADER); 14962: 2101 movs r1, #1 14964: 4620 mov r0, r4 14966: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_HEADER); 14968: 2101 movs r1, #1 1496a: 4620 mov r0, r4 1496c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->calendar_header); 1496e: 6831 ldr r1, [r6, #0] 14970: 3130 adds r1, #48 ; 0x30 14972: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_DAY_NAMES); 14974: 2102 movs r1, #2 14976: 4620 mov r0, r4 14978: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_DAY_NAMES); 1497a: 2102 movs r1, #2 1497c: 4620 mov r0, r4 1497e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->calendar_daynames); 14980: 6831 ldr r1, [r6, #0] 14982: 3134 adds r1, #52 ; 0x34 14984: 47a8 blx r5 break; 14986: e466 b.n 14256 lv_obj_clean_style_list(obj, LV_CPICKER_PART_MAIN); 14988: 2100 movs r1, #0 1498a: f8df 805c ldr.w r8, [pc, #92] ; 149e8 1498e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CPICKER_PART_MAIN); 14990: 2100 movs r1, #0 14992: 4620 mov r0, r4 14994: 4f11 ldr r7, [pc, #68] ; (149dc ) 14996: 47b8 blx r7 _lv_style_list_add_style(list, &styles->cpicker_bg); 14998: 4e11 ldr r6, [pc, #68] ; (149e0 ) 1499a: 6831 ldr r1, [r6, #0] 1499c: 3138 adds r1, #56 ; 0x38 1499e: 4d11 ldr r5, [pc, #68] ; (149e4 ) 149a0: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CPICKER_PART_KNOB); 149a2: 2101 movs r1, #1 149a4: 4620 mov r0, r4 149a6: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CPICKER_PART_KNOB); 149a8: 2101 movs r1, #1 149aa: 4620 mov r0, r4 149ac: 47b8 blx r7 _lv_style_list_add_style(list, &styles->cpicker_indic); 149ae: 6831 ldr r1, [r6, #0] 149b0: 313c adds r1, #60 ; 0x3c 149b2: 47a8 blx r5 break; 149b4: e44f b.n 14256 lv_obj_clean_style_list(obj, LV_LINEMETER_PART_MAIN); 149b6: 2100 movs r1, #0 149b8: 4b0b ldr r3, [pc, #44] ; (149e8 ) 149ba: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_LINEMETER_PART_MAIN); 149bc: 2100 movs r1, #0 149be: 4620 mov r0, r4 149c0: 4b06 ldr r3, [pc, #24] ; (149dc ) 149c2: 4798 blx r3 149c4: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 149c6: 4e06 ldr r6, [pc, #24] ; (149e0 ) 149c8: 6831 ldr r1, [r6, #0] 149ca: 3104 adds r1, #4 149cc: 4d05 ldr r5, [pc, #20] ; (149e4 ) 149ce: 47a8 blx r5 _lv_style_list_add_style(list, &styles->lmeter); 149d0: 6831 ldr r1, [r6, #0] 149d2: 3170 adds r1, #112 ; 0x70 149d4: 4638 mov r0, r7 149d6: 47a8 blx r5 break; 149d8: e43d b.n 14256 149da: bf00 nop 149dc: 00002fe5 .word 0x00002fe5 149e0: 20006bd8 .word 0x20006bd8 149e4: 000065c1 .word 0x000065c1 149e8: 000030b5 .word 0x000030b5 lv_obj_clean_style_list(obj, LV_GAUGE_PART_MAIN); 149ec: 2100 movs r1, #0 149ee: f8df 8054 ldr.w r8, [pc, #84] ; 14a44 149f2: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAIN); 149f4: 2100 movs r1, #0 149f6: 4620 mov r0, r4 149f8: 4f0f ldr r7, [pc, #60] ; (14a38 ) 149fa: 47b8 blx r7 149fc: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 149fe: 4e0f ldr r6, [pc, #60] ; (14a3c ) 14a00: 6831 ldr r1, [r6, #0] 14a02: 3104 adds r1, #4 14a04: 4d0e ldr r5, [pc, #56] ; (14a40 ) 14a06: 47a8 blx r5 _lv_style_list_add_style(list, &styles->gauge_main); 14a08: 6831 ldr r1, [r6, #0] 14a0a: 315c adds r1, #92 ; 0x5c 14a0c: 4648 mov r0, r9 14a0e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_GAUGE_PART_MAJOR); 14a10: 2101 movs r1, #1 14a12: 4620 mov r0, r4 14a14: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAJOR); 14a16: 2101 movs r1, #1 14a18: 4620 mov r0, r4 14a1a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->gauge_strong); 14a1c: 6831 ldr r1, [r6, #0] 14a1e: 3160 adds r1, #96 ; 0x60 14a20: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_GAUGE_PART_NEEDLE); 14a22: 2102 movs r1, #2 14a24: 4620 mov r0, r4 14a26: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_NEEDLE); 14a28: 2102 movs r1, #2 14a2a: 4620 mov r0, r4 14a2c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->gauge_needle); 14a2e: 6831 ldr r1, [r6, #0] 14a30: 3164 adds r1, #100 ; 0x64 14a32: 47a8 blx r5 break; 14a34: e40f b.n 14256 14a36: bf00 nop 14a38: 00002fe5 .word 0x00002fe5 14a3c: 20006bd8 .word 0x20006bd8 14a40: 000065c1 .word 0x000065c1 14a44: 000030b5 .word 0x000030b5 00014a48 : /********************** * STATIC FUNCTIONS **********************/ static void style_init_reset(lv_style_t * style) { 14a48: b508 push {r3, lr} if(inited) lv_style_reset(style); 14a4a: 4b04 ldr r3, [pc, #16] ; (14a5c ) 14a4c: 791b ldrb r3, [r3, #4] 14a4e: b913 cbnz r3, 14a56 else lv_style_init(style); 14a50: 4b03 ldr r3, [pc, #12] ; (14a60 ) 14a52: 4798 blx r3 14a54: bd08 pop {r3, pc} if(inited) lv_style_reset(style); 14a56: 4b03 ldr r3, [pc, #12] ; (14a64 ) 14a58: 4798 blx r3 14a5a: bd08 pop {r3, pc} 14a5c: 20006bd8 .word 0x20006bd8 14a60: 000064c1 .word 0x000064c1 14a64: 0000674d .word 0x0000674d 00014a68 : { 14a68: b570 push {r4, r5, r6, lr} style_init_reset(&styles->scr); 14a6a: 4cb3 ldr r4, [pc, #716] ; (14d38 ) 14a6c: 6820 ldr r0, [r4, #0] 14a6e: 4bb3 ldr r3, [pc, #716] ; (14d3c ) 14a70: 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) 14a72: 22ff movs r2, #255 ; 0xff 14a74: 212c movs r1, #44 ; 0x2c 14a76: 6820 ldr r0, [r4, #0] 14a78: 4bb1 ldr r3, [pc, #708] ; (14d40 ) 14a7a: 4798 blx r3 lv_style_set_bg_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR); 14a7c: 6a23 ldr r3, [r4, #32] 14a7e: f013 0302 ands.w r3, r3, #2 14a82: bf14 ite ne 14a84: 211d movne r1, #29 14a86: 2108 moveq r1, #8 14a88: 2b00 cmp r3, #0 14a8a: bf15 itete ne 14a8c: 203b movne r0, #59 ; 0x3b 14a8e: 2012 moveq r0, #18 14a90: 231e movne r3, #30 14a92: 230b moveq r3, #11 14a94: f04f 0200 mov.w r2, #0 14a98: f363 0204 bfi r2, r3, #0, #5 14a9c: f360 124a bfi r2, r0, #5, #6 14aa0: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 14aa4: 2129 movs r1, #41 ; 0x29 14aa6: 6820 ldr r0, [r4, #0] 14aa8: 4ba6 ldr r3, [pc, #664] ; (14d44 ) 14aaa: 4798 blx r3 lv_style_set_text_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 14aac: 4620 mov r0, r4 14aae: 6a23 ldr r3, [r4, #32] 14ab0: f013 0302 ands.w r3, r3, #2 14ab4: bf14 ite ne 14ab6: 2107 movne r1, #7 14ab8: 211c moveq r1, #28 14aba: 2b00 cmp r3, #0 14abc: bf15 itete ne 14abe: 240f movne r4, #15 14ac0: 243a moveq r4, #58 ; 0x3a 14ac2: 2308 movne r3, #8 14ac4: 231d moveq r3, #29 14ac6: f04f 0200 mov.w r2, #0 14aca: f363 0204 bfi r2, r3, #0, #5 14ace: f364 124a bfi r2, r4, #5, #6 14ad2: 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) 14ad6: f248 0189 movw r1, #32905 ; 0x8089 14ada: 6800 ldr r0, [r0, #0] 14adc: 4b99 ldr r3, [pc, #612] ; (14d44 ) 14ade: 4798 blx r3 lv_style_set_value_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 14ae0: 4895 ldr r0, [pc, #596] ; (14d38 ) 14ae2: 6a03 ldr r3, [r0, #32] 14ae4: f013 0302 ands.w r3, r3, #2 14ae8: bf14 ite ne 14aea: 2107 movne r1, #7 14aec: 211c moveq r1, #28 14aee: 2b00 cmp r3, #0 14af0: bf15 itete ne 14af2: 240f movne r4, #15 14af4: 243a moveq r4, #58 ; 0x3a 14af6: 2308 movne r3, #8 14af8: 231d moveq r3, #29 14afa: f04f 0200 mov.w r2, #0 14afe: f363 0204 bfi r2, r3, #0, #5 14b02: f364 124a bfi r2, r4, #5, #6 14b06: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 14b0a: 2179 movs r1, #121 ; 0x79 14b0c: 6800 ldr r0, [r0, #0] 14b0e: 4b8d ldr r3, [pc, #564] ; (14d44 ) 14b10: 4798 blx r3 lv_style_set_text_font(&styles->scr, LV_STATE_DEFAULT, theme.font_normal); 14b12: 4c89 ldr r4, [pc, #548] ; (14d38 ) _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) 14b14: 6962 ldr r2, [r4, #20] 14b16: f248 018e movw r1, #32910 ; 0x808e 14b1a: 6820 ldr r0, [r4, #0] 14b1c: 4d8a ldr r5, [pc, #552] ; (14d48 ) 14b1e: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 14b20: 6962 ldr r2, [r4, #20] 14b22: 217e movs r1, #126 ; 0x7e 14b24: 6820 ldr r0, [r4, #0] 14b26: 47a8 blx r5 style_init_reset(&styles->bg); 14b28: 6820 ldr r0, [r4, #0] 14b2a: 3004 adds r0, #4 14b2c: 4b83 ldr r3, [pc, #524] ; (14d3c ) 14b2e: 4798 blx r3 lv_style_set_radius(&styles->bg, LV_STATE_DEFAULT, LV_DPX(8)); 14b30: 6824 ldr r4, [r4, #0] 14b32: 3404 adds r4, #4 14b34: 2000 movs r0, #0 14b36: 4b85 ldr r3, [pc, #532] ; (14d4c ) 14b38: 4798 blx r3 14b3a: 300a adds r0, #10 14b3c: 00c0 lsls r0, r0, #3 14b3e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14b42: f280 8646 bge.w 157d2 14b46: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 14b48: 2101 movs r1, #1 14b4a: 4620 mov r0, r4 14b4c: 4b80 ldr r3, [pc, #512] ; (14d50 ) 14b4e: 4798 blx r3 lv_style_set_bg_opa(&styles->bg, LV_STATE_DEFAULT, LV_OPA_COVER); 14b50: 4c79 ldr r4, [pc, #484] ; (14d38 ) 14b52: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 14b54: 22ff movs r2, #255 ; 0xff 14b56: 212c movs r1, #44 ; 0x2c 14b58: 3004 adds r0, #4 14b5a: 4b79 ldr r3, [pc, #484] ; (14d40 ) 14b5c: 4798 blx r3 lv_style_set_bg_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG); 14b5e: 6820 ldr r0, [r4, #0] 14b60: 3004 adds r0, #4 14b62: 6a23 ldr r3, [r4, #32] 14b64: f013 0f02 tst.w r3, #2 14b68: f040 8641 bne.w 157ee 14b6c: 230b movs r3, #11 14b6e: 2118 movs r1, #24 14b70: 240e movs r4, #14 14b72: f04f 0200 mov.w r2, #0 14b76: f364 0204 bfi r2, r4, #0, #5 14b7a: f361 124a bfi r2, r1, #5, #6 14b7e: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 14b82: 2129 movs r1, #41 ; 0x29 14b84: 4b6f ldr r3, [pc, #444] ; (14d44 ) 14b86: 4798 blx r3 lv_style_set_border_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_BORDER); 14b88: 4b6b ldr r3, [pc, #428] ; (14d38 ) 14b8a: 6818 ldr r0, [r3, #0] 14b8c: 6a1b ldr r3, [r3, #32] 14b8e: f013 0302 ands.w r3, r3, #2 14b92: bf14 ite ne 14b94: 211a movne r1, #26 14b96: 2110 moveq r1, #16 14b98: 2b00 cmp r3, #0 14b9a: bf15 itete ne 14b9c: 2437 movne r4, #55 ; 0x37 14b9e: 2422 moveq r4, #34 ; 0x22 14ba0: 231c movne r3, #28 14ba2: 2312 moveq r3, #18 14ba4: f04f 0200 mov.w r2, #0 14ba8: f363 0204 bfi r2, r3, #0, #5 14bac: f364 124a bfi r2, r4, #5, #6 14bb0: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 14bb4: 2139 movs r1, #57 ; 0x39 14bb6: 3004 adds r0, #4 14bb8: 4d62 ldr r5, [pc, #392] ; (14d44 ) 14bba: 47a8 blx r5 lv_style_set_border_color(&styles->bg, LV_STATE_FOCUSED, theme.color_primary); 14bbc: 4c5e ldr r4, [pc, #376] ; (14d38 ) 14bbe: 6820 ldr r0, [r4, #0] 14bc0: 89a2 ldrh r2, [r4, #12] 14bc2: f240 2139 movw r1, #569 ; 0x239 14bc6: 3004 adds r0, #4 14bc8: 47a8 blx r5 lv_style_set_border_color(&styles->bg, LV_STATE_EDITED, theme.color_secondary); 14bca: 6820 ldr r0, [r4, #0] 14bcc: 89e2 ldrh r2, [r4, #14] 14bce: f240 4139 movw r1, #1081 ; 0x439 14bd2: 3004 adds r0, #4 14bd4: 47a8 blx r5 lv_style_set_border_width(&styles->bg, LV_STATE_DEFAULT, BORDER_WIDTH); 14bd6: 6824 ldr r4, [r4, #0] 14bd8: 3404 adds r4, #4 14bda: 2000 movs r0, #0 14bdc: 4b5b ldr r3, [pc, #364] ; (14d4c ) 14bde: 4798 blx r3 14be0: 3028 adds r0, #40 ; 0x28 14be2: 0040 lsls r0, r0, #1 14be4: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14be8: f280 8606 bge.w 157f8 14bec: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 14bee: 2130 movs r1, #48 ; 0x30 14bf0: 4620 mov r0, r4 14bf2: 4d57 ldr r5, [pc, #348] ; (14d50 ) 14bf4: 47a8 blx r5 lv_style_set_border_post(&styles->bg, LV_STATE_DEFAULT, true); 14bf6: 4c50 ldr r4, [pc, #320] ; (14d38 ) 14bf8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 14bfa: 2201 movs r2, #1 14bfc: 2133 movs r1, #51 ; 0x33 14bfe: 3004 adds r0, #4 14c00: 47a8 blx r5 lv_style_set_text_font(&styles->bg, LV_STATE_DEFAULT, theme.font_normal); 14c02: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 14c04: 6962 ldr r2, [r4, #20] 14c06: f248 018e movw r1, #32910 ; 0x808e 14c0a: 3004 adds r0, #4 14c0c: 4b4e ldr r3, [pc, #312] ; (14d48 ) 14c0e: 4798 blx r3 lv_style_set_text_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 14c10: 6820 ldr r0, [r4, #0] 14c12: 3004 adds r0, #4 14c14: 6a23 ldr r3, [r4, #32] 14c16: f013 0f02 tst.w r3, #2 14c1a: f040 85fb bne.w 15814 14c1e: 231f movs r3, #31 14c20: 213f movs r1, #63 ; 0x3f 14c22: 461c mov r4, r3 14c24: f04f 0200 mov.w r2, #0 14c28: f364 0204 bfi r2, r4, #0, #5 14c2c: f361 124a bfi r2, r1, #5, #6 14c30: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 14c34: f248 0189 movw r1, #32905 ; 0x8089 14c38: 4b42 ldr r3, [pc, #264] ; (14d44 ) 14c3a: 4798 blx r3 lv_style_set_value_font(&styles->bg, LV_STATE_DEFAULT, theme.font_normal); 14c3c: 4c3e ldr r4, [pc, #248] ; (14d38 ) 14c3e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 14c40: 6962 ldr r2, [r4, #20] 14c42: 217e movs r1, #126 ; 0x7e 14c44: 3004 adds r0, #4 14c46: 4b40 ldr r3, [pc, #256] ; (14d48 ) 14c48: 4798 blx r3 lv_style_set_value_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 14c4a: 6820 ldr r0, [r4, #0] 14c4c: 3004 adds r0, #4 14c4e: 6a23 ldr r3, [r4, #32] 14c50: f013 0f02 tst.w r3, #2 14c54: f040 85e3 bne.w 1581e 14c58: 231f movs r3, #31 14c5a: 213f movs r1, #63 ; 0x3f 14c5c: 461c mov r4, r3 14c5e: f04f 0200 mov.w r2, #0 14c62: f364 0204 bfi r2, r4, #0, #5 14c66: f361 124a bfi r2, r1, #5, #6 14c6a: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 14c6e: 2179 movs r1, #121 ; 0x79 14c70: 4b34 ldr r3, [pc, #208] ; (14d44 ) 14c72: 4798 blx r3 lv_style_set_image_recolor(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 14c74: 4b30 ldr r3, [pc, #192] ; (14d38 ) 14c76: 6818 ldr r0, [r3, #0] 14c78: 3004 adds r0, #4 14c7a: 6a1b ldr r3, [r3, #32] 14c7c: f013 0f02 tst.w r3, #2 14c80: f040 85d2 bne.w 15828 14c84: 231f movs r3, #31 14c86: 213f movs r1, #63 ; 0x3f 14c88: 461c mov r4, r3 14c8a: f04f 0200 mov.w r2, #0 14c8e: f364 0204 bfi r2, r4, #0, #5 14c92: f361 124a bfi r2, r1, #5, #6 14c96: 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) 14c9a: f248 01a9 movw r1, #32937 ; 0x80a9 14c9e: 4b29 ldr r3, [pc, #164] ; (14d44 ) 14ca0: 4798 blx r3 lv_style_set_line_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 14ca2: 4b25 ldr r3, [pc, #148] ; (14d38 ) 14ca4: 6818 ldr r0, [r3, #0] 14ca6: 3004 adds r0, #4 14ca8: 6a1b ldr r3, [r3, #32] 14caa: f013 0f02 tst.w r3, #2 14cae: f040 85c0 bne.w 15832 14cb2: 231f movs r3, #31 14cb4: 213f movs r1, #63 ; 0x3f 14cb6: 461c mov r4, r3 14cb8: f04f 0200 mov.w r2, #0 14cbc: f364 0204 bfi r2, r4, #0, #5 14cc0: f361 124a bfi r2, r1, #5, #6 14cc4: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 14cc8: 2199 movs r1, #153 ; 0x99 14cca: 4b1e ldr r3, [pc, #120] ; (14d44 ) 14ccc: 4798 blx r3 lv_style_set_line_width(&styles->bg, LV_STATE_DEFAULT, 1); 14cce: 4c1a ldr r4, [pc, #104] ; (14d38 ) 14cd0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 14cd2: 2201 movs r2, #1 14cd4: 2190 movs r1, #144 ; 0x90 14cd6: 3004 adds r0, #4 14cd8: 4b1d ldr r3, [pc, #116] ; (14d50 ) 14cda: 4798 blx r3 lv_style_set_pad_left(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 14cdc: 6825 ldr r5, [r4, #0] 14cde: 3504 adds r5, #4 14ce0: 2000 movs r0, #0 14ce2: 4b1c ldr r3, [pc, #112] ; (14d54 ) 14ce4: 4798 blx r3 14ce6: 2801 cmp r0, #1 14ce8: f240 85a8 bls.w 1583c 14cec: 2000 movs r0, #0 14cee: 4b17 ldr r3, [pc, #92] ; (14d4c ) 14cf0: 4798 blx r3 14cf2: ebc0 1000 rsb r0, r0, r0, lsl #4 14cf6: 0040 lsls r0, r0, #1 14cf8: 3050 adds r0, #80 ; 0x50 14cfa: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14cfe: f280 85b8 bge.w 15872 14d02: 2401 movs r4, #1 14d04: 2000 movs r0, #0 14d06: 4b11 ldr r3, [pc, #68] ; (14d4c ) 14d08: 4798 blx r3 14d0a: 3028 adds r0, #40 ; 0x28 14d0c: 0040 lsls r0, r0, #1 14d0e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14d12: f280 85be bge.w 15892 14d16: 2201 movs r2, #1 14d18: 4422 add r2, r4 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 14d1a: b212 sxth r2, r2 14d1c: 2112 movs r1, #18 14d1e: 4628 mov r0, r5 14d20: 4b0b ldr r3, [pc, #44] ; (14d50 ) 14d22: 4798 blx r3 lv_style_set_pad_right(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 14d24: 4b04 ldr r3, [pc, #16] ; (14d38 ) 14d26: 681d ldr r5, [r3, #0] 14d28: 3504 adds r5, #4 14d2a: 2000 movs r0, #0 14d2c: 4b09 ldr r3, [pc, #36] ; (14d54 ) 14d2e: 4798 blx r3 14d30: 2801 cmp r0, #1 14d32: f240 85bc bls.w 158ae 14d36: e00f b.n 14d58 14d38: 20006bd8 .word 0x20006bd8 14d3c: 00014a49 .word 0x00014a49 14d40: 00006b51 .word 0x00006b51 14d44: 00006a0d .word 0x00006a0d 14d48: 00006c81 .word 0x00006c81 14d4c: 00010f25 .word 0x00010f25 14d50: 000068c9 .word 0x000068c9 14d54: 00010f41 .word 0x00010f41 14d58: 2000 movs r0, #0 14d5a: 4bb1 ldr r3, [pc, #708] ; (15020 ) 14d5c: 4798 blx r3 14d5e: ebc0 1000 rsb r0, r0, r0, lsl #4 14d62: 0040 lsls r0, r0, #1 14d64: 3050 adds r0, #80 ; 0x50 14d66: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14d6a: f280 85bb bge.w 158e4 14d6e: 2401 movs r4, #1 14d70: 2000 movs r0, #0 14d72: 4bab ldr r3, [pc, #684] ; (15020 ) 14d74: 4798 blx r3 14d76: 3028 adds r0, #40 ; 0x28 14d78: 0040 lsls r0, r0, #1 14d7a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14d7e: f280 85c1 bge.w 15904 14d82: 2201 movs r2, #1 14d84: 4422 add r2, r4 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14d86: b212 sxth r2, r2 14d88: 2113 movs r1, #19 14d8a: 4628 mov r0, r5 14d8c: 4ba5 ldr r3, [pc, #660] ; (15024 ) 14d8e: 4798 blx r3 lv_style_set_pad_top(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 14d90: 4ba5 ldr r3, [pc, #660] ; (15028 ) 14d92: 681d ldr r5, [r3, #0] 14d94: 3504 adds r5, #4 14d96: 2000 movs r0, #0 14d98: 4ba4 ldr r3, [pc, #656] ; (1502c ) 14d9a: 4798 blx r3 14d9c: 2801 cmp r0, #1 14d9e: f240 85bf bls.w 15920 14da2: 2000 movs r0, #0 14da4: 4b9e ldr r3, [pc, #632] ; (15020 ) 14da6: 4798 blx r3 14da8: ebc0 1000 rsb r0, r0, r0, lsl #4 14dac: 0040 lsls r0, r0, #1 14dae: 3050 adds r0, #80 ; 0x50 14db0: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14db4: f280 85cf bge.w 15956 14db8: 2401 movs r4, #1 14dba: 2000 movs r0, #0 14dbc: 4b98 ldr r3, [pc, #608] ; (15020 ) 14dbe: 4798 blx r3 14dc0: 3028 adds r0, #40 ; 0x28 14dc2: 0040 lsls r0, r0, #1 14dc4: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14dc8: f280 85d5 bge.w 15976 14dcc: 2201 movs r2, #1 14dce: 4422 add r2, r4 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 14dd0: b212 sxth r2, r2 14dd2: 2110 movs r1, #16 14dd4: 4628 mov r0, r5 14dd6: 4b93 ldr r3, [pc, #588] ; (15024 ) 14dd8: 4798 blx r3 lv_style_set_pad_bottom(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 14dda: 4b93 ldr r3, [pc, #588] ; (15028 ) 14ddc: 681d ldr r5, [r3, #0] 14dde: 3504 adds r5, #4 14de0: 2000 movs r0, #0 14de2: 4b92 ldr r3, [pc, #584] ; (1502c ) 14de4: 4798 blx r3 14de6: 2801 cmp r0, #1 14de8: f240 85d3 bls.w 15992 14dec: 2000 movs r0, #0 14dee: 4b8c ldr r3, [pc, #560] ; (15020 ) 14df0: 4798 blx r3 14df2: ebc0 1000 rsb r0, r0, r0, lsl #4 14df6: 0040 lsls r0, r0, #1 14df8: 3050 adds r0, #80 ; 0x50 14dfa: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14dfe: f280 85f4 bge.w 159ea 14e02: 2401 movs r4, #1 14e04: 2000 movs r0, #0 14e06: 4b86 ldr r3, [pc, #536] ; (15020 ) 14e08: 4798 blx r3 14e0a: 3028 adds r0, #40 ; 0x28 14e0c: 0040 lsls r0, r0, #1 14e0e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14e12: f280 85fa bge.w 15a0a 14e16: 2201 movs r2, #1 14e18: 4422 add r2, r4 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 14e1a: b212 sxth r2, r2 14e1c: 2111 movs r1, #17 14e1e: 4628 mov r0, r5 14e20: 4b80 ldr r3, [pc, #512] ; (15024 ) 14e22: 4798 blx r3 lv_style_set_pad_inner(&styles->bg, LV_STATE_DEFAULT, PAD_DEF); 14e24: 4b80 ldr r3, [pc, #512] ; (15028 ) 14e26: 681c ldr r4, [r3, #0] 14e28: 3404 adds r4, #4 14e2a: 2000 movs r0, #0 14e2c: 4b7f ldr r3, [pc, #508] ; (1502c ) 14e2e: 4798 blx r3 14e30: 2801 cmp r0, #1 14e32: f240 85f8 bls.w 15a26 14e36: 2000 movs r0, #0 14e38: 4b79 ldr r3, [pc, #484] ; (15020 ) 14e3a: 4798 blx r3 14e3c: ebc0 1000 rsb r0, r0, r0, lsl #4 14e40: 0040 lsls r0, r0, #1 14e42: 3050 adds r0, #80 ; 0x50 14e44: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14e48: f280 8608 bge.w 15a5c 14e4c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 14e4e: 2114 movs r1, #20 14e50: 4620 mov r0, r4 14e52: 4d74 ldr r5, [pc, #464] ; (15024 ) 14e54: 47a8 blx r5 lv_style_set_transition_time(&styles->bg, LV_STATE_DEFAULT, TRANSITION_TIME); 14e56: 4c74 ldr r4, [pc, #464] ; (15028 ) 14e58: 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) 14e5a: 2296 movs r2, #150 ; 0x96 14e5c: 21b0 movs r1, #176 ; 0xb0 14e5e: 3004 adds r0, #4 14e60: 47a8 blx r5 lv_style_set_transition_prop_6(&styles->bg, LV_STATE_DEFAULT, LV_STYLE_BORDER_COLOR); 14e62: 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) 14e64: 2239 movs r2, #57 ; 0x39 14e66: 21b7 movs r1, #183 ; 0xb7 14e68: 3004 adds r0, #4 14e6a: 47a8 blx r5 style_init_reset(&styles->bg_sec); 14e6c: 6820 ldr r0, [r4, #0] 14e6e: 300c adds r0, #12 14e70: 4b6f ldr r3, [pc, #444] ; (15030 ) 14e72: 4798 blx r3 lv_style_copy(&styles->bg_sec, &styles->bg); 14e74: 6820 ldr r0, [r4, #0] 14e76: 1d01 adds r1, r0, #4 14e78: 300c adds r0, #12 14e7a: 4b6e ldr r3, [pc, #440] ; (15034 ) 14e7c: 4798 blx r3 lv_style_set_bg_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC); 14e7e: 6820 ldr r0, [r4, #0] 14e80: 6a23 ldr r3, [r4, #32] 14e82: f013 0302 ands.w r3, r3, #2 14e86: bf14 ite ne 14e88: 211a movne r1, #26 14e8a: 2108 moveq r1, #8 14e8c: 2b00 cmp r3, #0 14e8e: bf15 itete ne 14e90: 2435 movne r4, #53 ; 0x35 14e92: 2412 moveq r4, #18 14e94: 231b movne r3, #27 14e96: 2309 moveq r3, #9 14e98: f04f 0200 mov.w r2, #0 14e9c: f363 0204 bfi r2, r3, #0, #5 14ea0: f364 124a bfi r2, r4, #5, #6 14ea4: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 14ea8: 2129 movs r1, #41 ; 0x29 14eaa: 300c adds r0, #12 14eac: 4b62 ldr r3, [pc, #392] ; (15038 ) 14eae: 4798 blx r3 lv_style_set_border_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_BORDER); 14eb0: 4b5d ldr r3, [pc, #372] ; (15028 ) 14eb2: 6818 ldr r0, [r3, #0] 14eb4: 300c adds r0, #12 14eb6: 6a1b ldr r3, [r3, #32] 14eb8: f013 0f02 tst.w r3, #2 14ebc: f040 85de bne.w 15a7c 14ec0: 2308 movs r3, #8 14ec2: 2110 movs r1, #16 14ec4: 461c mov r4, r3 14ec6: f04f 0200 mov.w r2, #0 14eca: f364 0204 bfi r2, r4, #0, #5 14ece: f361 124a bfi r2, r1, #5, #6 14ed2: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 14ed6: 2139 movs r1, #57 ; 0x39 14ed8: 4b57 ldr r3, [pc, #348] ; (15038 ) 14eda: 4798 blx r3 lv_style_set_text_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 14edc: 4b52 ldr r3, [pc, #328] ; (15028 ) 14ede: 6818 ldr r0, [r3, #0] 14ee0: 6a1b ldr r3, [r3, #32] 14ee2: f013 0302 ands.w r3, r3, #2 14ee6: bf14 ite ne 14ee8: 2106 movne r1, #6 14eea: 2114 moveq r1, #20 14eec: 2b00 cmp r3, #0 14eee: bf15 itete ne 14ef0: 2410 movne r4, #16 14ef2: 242a moveq r4, #42 ; 0x2a 14ef4: 2309 movne r3, #9 14ef6: 2315 moveq r3, #21 14ef8: f04f 0200 mov.w r2, #0 14efc: f363 0204 bfi r2, r3, #0, #5 14f00: f364 124a bfi r2, r4, #5, #6 14f04: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 14f08: f248 0189 movw r1, #32905 ; 0x8089 14f0c: 300c adds r0, #12 14f0e: 4b4a ldr r3, [pc, #296] ; (15038 ) 14f10: 4798 blx r3 lv_style_set_value_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 14f12: 4b45 ldr r3, [pc, #276] ; (15028 ) 14f14: 6818 ldr r0, [r3, #0] 14f16: 6a1b ldr r3, [r3, #32] 14f18: f013 0302 ands.w r3, r3, #2 14f1c: bf14 ite ne 14f1e: 2106 movne r1, #6 14f20: 2114 moveq r1, #20 14f22: 2b00 cmp r3, #0 14f24: bf15 itete ne 14f26: 2410 movne r4, #16 14f28: 242a moveq r4, #42 ; 0x2a 14f2a: 2309 movne r3, #9 14f2c: 2315 moveq r3, #21 14f2e: f04f 0200 mov.w r2, #0 14f32: f363 0204 bfi r2, r3, #0, #5 14f36: f364 124a bfi r2, r4, #5, #6 14f3a: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 14f3e: 2179 movs r1, #121 ; 0x79 14f40: 300c adds r0, #12 14f42: 4b3d ldr r3, [pc, #244] ; (15038 ) 14f44: 4798 blx r3 lv_style_set_image_recolor(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 14f46: 4b38 ldr r3, [pc, #224] ; (15028 ) 14f48: 6818 ldr r0, [r3, #0] 14f4a: 6a1b ldr r3, [r3, #32] 14f4c: f013 0302 ands.w r3, r3, #2 14f50: bf14 ite ne 14f52: 2106 movne r1, #6 14f54: 2114 moveq r1, #20 14f56: 2b00 cmp r3, #0 14f58: bf15 itete ne 14f5a: 2410 movne r4, #16 14f5c: 242a moveq r4, #42 ; 0x2a 14f5e: 2309 movne r3, #9 14f60: 2315 moveq r3, #21 14f62: f04f 0200 mov.w r2, #0 14f66: f363 0204 bfi r2, r3, #0, #5 14f6a: f364 124a bfi r2, r4, #5, #6 14f6e: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 14f72: f248 01a9 movw r1, #32937 ; 0x80a9 14f76: 300c adds r0, #12 14f78: 4b2f ldr r3, [pc, #188] ; (15038 ) 14f7a: 4798 blx r3 lv_style_set_line_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 14f7c: 4b2a ldr r3, [pc, #168] ; (15028 ) 14f7e: 6818 ldr r0, [r3, #0] 14f80: 6a1b ldr r3, [r3, #32] 14f82: f013 0302 ands.w r3, r3, #2 14f86: bf14 ite ne 14f88: 2106 movne r1, #6 14f8a: 2114 moveq r1, #20 14f8c: 2b00 cmp r3, #0 14f8e: bf15 itete ne 14f90: 2410 movne r4, #16 14f92: 242a moveq r4, #42 ; 0x2a 14f94: 2309 movne r3, #9 14f96: 2315 moveq r3, #21 14f98: f04f 0200 mov.w r2, #0 14f9c: f363 0204 bfi r2, r3, #0, #5 14fa0: f364 124a bfi r2, r4, #5, #6 14fa4: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 14fa8: 2199 movs r1, #153 ; 0x99 14faa: 300c adds r0, #12 14fac: 4b22 ldr r3, [pc, #136] ; (15038 ) 14fae: 4798 blx r3 style_init_reset(&styles->bg_click); 14fb0: 4c1d ldr r4, [pc, #116] ; (15028 ) 14fb2: 6820 ldr r0, [r4, #0] 14fb4: 3008 adds r0, #8 14fb6: 4b1e ldr r3, [pc, #120] ; (15030 ) 14fb8: 4798 blx r3 lv_style_set_bg_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_PR); 14fba: 6820 ldr r0, [r4, #0] 14fbc: 3008 adds r0, #8 14fbe: 6a23 ldr r3, [r4, #32] 14fc0: f013 0f02 tst.w r3, #2 14fc4: f040 855f bne.w 15a86 14fc8: 2309 movs r3, #9 14fca: 2113 movs r1, #19 14fcc: 240a movs r4, #10 14fce: f04f 0200 mov.w r2, #0 14fd2: f364 0204 bfi r2, r4, #0, #5 14fd6: f361 124a bfi r2, r1, #5, #6 14fda: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 14fde: f241 0129 movw r1, #4137 ; 0x1029 14fe2: 4d15 ldr r5, [pc, #84] ; (15038 ) 14fe4: 47a8 blx r5 lv_style_set_bg_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_CHK); 14fe6: 4c10 ldr r4, [pc, #64] ; (15028 ) 14fe8: 6820 ldr r0, [r4, #0] 14fea: 89a2 ldrh r2, [r4, #12] 14fec: f240 1129 movw r1, #297 ; 0x129 14ff0: 3008 adds r0, #8 14ff2: 47a8 blx r5 lv_style_set_bg_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_PR_CHK); 14ff4: 6826 ldr r6, [r4, #0] 14ff6: 3608 adds r6, #8 14ff8: 2133 movs r1, #51 ; 0x33 14ffa: 89a0 ldrh r0, [r4, #12] 14ffc: 4b0f ldr r3, [pc, #60] ; (1503c ) 14ffe: 4798 blx r3 15000: 4602 mov r2, r0 15002: f241 1129 movw r1, #4393 ; 0x1129 15006: 4630 mov r0, r6 15008: 47a8 blx r5 lv_style_set_bg_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_DIS); 1500a: 6820 ldr r0, [r4, #0] 1500c: 3008 adds r0, #8 1500e: 6a23 ldr r3, [r4, #32] 15010: f013 0f02 tst.w r3, #2 15014: f040 853c bne.w 15a90 15018: 230b movs r3, #11 1501a: 2118 movs r1, #24 1501c: 240e movs r4, #14 1501e: e00f b.n 15040 15020: 00010f25 .word 0x00010f25 15024: 000068c9 .word 0x000068c9 15028: 20006bd8 .word 0x20006bd8 1502c: 00010f41 .word 0x00010f41 15030: 00014a49 .word 0x00014a49 15034: 000067a1 .word 0x000067a1 15038: 00006a0d .word 0x00006a0d 1503c: 00011beb .word 0x00011beb 15040: f04f 0200 mov.w r2, #0 15044: f364 0204 bfi r2, r4, #0, #5 15048: f361 124a bfi r2, r1, #5, #6 1504c: f363 22cf bfi r2, r3, #11, #5 15050: f242 0129 movw r1, #8233 ; 0x2029 15054: 4ebb ldr r6, [pc, #748] ; (15344 ) 15056: 47b0 blx r6 lv_style_set_border_width(&styles->bg_click, LV_STATE_CHECKED, 0); 15058: 4cbb ldr r4, [pc, #748] ; (15348 ) 1505a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 1505c: 2200 movs r2, #0 1505e: f44f 7198 mov.w r1, #304 ; 0x130 15062: 3008 adds r0, #8 15064: 4bb9 ldr r3, [pc, #740] ; (1534c ) 15066: 4798 blx r3 lv_style_set_border_color(&styles->bg_click, LV_STATE_FOCUSED | LV_STATE_PRESSED, lv_color_darken(theme.color_primary, 15068: 6825 ldr r5, [r4, #0] 1506a: 3508 adds r5, #8 1506c: 2133 movs r1, #51 ; 0x33 1506e: 89a0 ldrh r0, [r4, #12] 15070: 4bb7 ldr r3, [pc, #732] ; (15350 ) 15072: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 15074: 4602 mov r2, r0 15076: f241 2139 movw r1, #4665 ; 0x1239 1507a: 4628 mov r0, r5 1507c: 47b0 blx r6 lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_BORDER_PR); 1507e: 6820 ldr r0, [r4, #0] 15080: 3008 adds r0, #8 15082: 6a23 ldr r3, [r4, #32] 15084: f013 0f02 tst.w r3, #2 15088: f040 8507 bne.w 15a9a 1508c: 230b movs r3, #11 1508e: 2119 movs r1, #25 15090: 240d movs r4, #13 15092: f04f 0200 mov.w r2, #0 15096: f364 0204 bfi r2, r4, #0, #5 1509a: f361 124a bfi r2, r1, #5, #6 1509e: f363 22cf bfi r2, r3, #11, #5 150a2: f241 0139 movw r1, #4153 ; 0x1039 150a6: 4ba7 ldr r3, [pc, #668] ; (15344 ) 150a8: 4798 blx r3 lv_style_set_border_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_BORDER_CHK); 150aa: 4ba7 ldr r3, [pc, #668] ; (15348 ) 150ac: 6818 ldr r0, [r3, #0] 150ae: 6a1b ldr r3, [r3, #32] 150b0: f013 0302 ands.w r3, r3, #2 150b4: bf14 ite ne 150b6: 2107 movne r1, #7 150b8: 210b moveq r1, #11 150ba: 2b00 cmp r3, #0 150bc: bf15 itete ne 150be: 240f movne r4, #15 150c0: 2419 moveq r4, #25 150c2: 2308 movne r3, #8 150c4: 230d moveq r3, #13 150c6: f04f 0200 mov.w r2, #0 150ca: f363 0204 bfi r2, r3, #0, #5 150ce: f364 124a bfi r2, r4, #5, #6 150d2: f361 22cf bfi r2, r1, #11, #5 150d6: f240 1139 movw r1, #313 ; 0x139 150da: 3008 adds r0, #8 150dc: 4b99 ldr r3, [pc, #612] ; (15344 ) 150de: 4798 blx r3 lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_BORDER_CHK_PR); 150e0: 4b99 ldr r3, [pc, #612] ; (15348 ) 150e2: 6818 ldr r0, [r3, #0] 150e4: 6a1b ldr r3, [r3, #32] 150e6: f013 0302 ands.w r3, r3, #2 150ea: bf14 ite ne 150ec: 2107 movne r1, #7 150ee: 210b moveq r1, #11 150f0: 2b00 cmp r3, #0 150f2: bf15 itete ne 150f4: 240f movne r4, #15 150f6: 2419 moveq r4, #25 150f8: 2308 movne r3, #8 150fa: 230d moveq r3, #13 150fc: f04f 0200 mov.w r2, #0 15100: f363 0204 bfi r2, r3, #0, #5 15104: f364 124a bfi r2, r4, #5, #6 15108: f361 22cf bfi r2, r1, #11, #5 1510c: f241 1139 movw r1, #4409 ; 0x1139 15110: 3008 adds r0, #8 15112: 4b8c ldr r3, [pc, #560] ; (15344 ) 15114: 4798 blx r3 lv_style_set_border_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_BORDER_DIS); 15116: 4b8c ldr r3, [pc, #560] ; (15348 ) 15118: 6818 ldr r0, [r3, #0] 1511a: 6a1b ldr r3, [r3, #32] 1511c: f013 0302 ands.w r3, r3, #2 15120: bf14 ite ne 15122: 211a movne r1, #26 15124: 210b moveq r1, #11 15126: 2b00 cmp r3, #0 15128: bf15 itete ne 1512a: 2437 movne r4, #55 ; 0x37 1512c: 2419 moveq r4, #25 1512e: 231c movne r3, #28 15130: 230d moveq r3, #13 15132: f04f 0200 mov.w r2, #0 15136: f363 0204 bfi r2, r3, #0, #5 1513a: f364 124a bfi r2, r4, #5, #6 1513e: f361 22cf bfi r2, r1, #11, #5 15142: f242 0139 movw r1, #8249 ; 0x2039 15146: 3008 adds r0, #8 15148: 4b7e ldr r3, [pc, #504] ; (15344 ) 1514a: 4798 blx r3 lv_style_set_text_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 1514c: 4b7e ldr r3, [pc, #504] ; (15348 ) 1514e: 6818 ldr r0, [r3, #0] 15150: 3008 adds r0, #8 15152: 6a1b ldr r3, [r3, #32] 15154: f013 0f02 tst.w r3, #2 15158: f040 84a4 bne.w 15aa4 1515c: 231f movs r3, #31 1515e: 213f movs r1, #63 ; 0x3f 15160: 461c mov r4, r3 15162: f04f 0200 mov.w r2, #0 15166: f364 0204 bfi r2, r4, #0, #5 1516a: f361 124a bfi r2, r1, #5, #6 1516e: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 15172: f249 0189 movw r1, #37001 ; 0x9089 15176: 4d73 ldr r5, [pc, #460] ; (15344 ) 15178: 47a8 blx r5 lv_style_set_text_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 1517a: 4c73 ldr r4, [pc, #460] ; (15348 ) 1517c: 6820 ldr r0, [r4, #0] 1517e: f04f 32ff mov.w r2, #4294967295 15182: f248 1189 movw r1, #33161 ; 0x8189 15186: 3008 adds r0, #8 15188: 47a8 blx r5 lv_style_set_text_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_TEXT_CHK_PR); 1518a: 6820 ldr r0, [r4, #0] 1518c: f04f 32ff mov.w r2, #4294967295 15190: f249 1189 movw r1, #37257 ; 0x9189 15194: 3008 adds r0, #8 15196: 47a8 blx r5 lv_style_set_text_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 15198: 6820 ldr r0, [r4, #0] 1519a: 6a23 ldr r3, [r4, #32] 1519c: f013 0302 ands.w r3, r3, #2 151a0: bf14 ite ne 151a2: 212a movne r1, #42 ; 0x2a 151a4: 2126 moveq r1, #38 ; 0x26 151a6: 2b00 cmp r3, #0 151a8: bf14 ite ne 151aa: 2315 movne r3, #21 151ac: 2313 moveq r3, #19 151ae: f04f 0200 mov.w r2, #0 151b2: f363 0204 bfi r2, r3, #0, #5 151b6: f361 124a bfi r2, r1, #5, #6 151ba: f363 22cf bfi r2, r3, #11, #5 151be: f24a 0189 movw r1, #41097 ; 0xa089 151c2: 3008 adds r0, #8 151c4: 47a8 blx r5 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 151c6: 6820 ldr r0, [r4, #0] 151c8: 3008 adds r0, #8 151ca: 6a23 ldr r3, [r4, #32] 151cc: f013 0f02 tst.w r3, #2 151d0: f040 846d bne.w 15aae 151d4: 231f movs r3, #31 151d6: 213f movs r1, #63 ; 0x3f 151d8: 461c mov r4, r3 151da: f04f 0200 mov.w r2, #0 151de: f364 0204 bfi r2, r4, #0, #5 151e2: f361 124a bfi r2, r1, #5, #6 151e6: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 151ea: f249 01a9 movw r1, #37033 ; 0x90a9 151ee: 4d55 ldr r5, [pc, #340] ; (15344 ) 151f0: 47a8 blx r5 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 151f2: 4c55 ldr r4, [pc, #340] ; (15348 ) 151f4: 6820 ldr r0, [r4, #0] 151f6: f04f 32ff mov.w r2, #4294967295 151fa: f248 11a9 movw r1, #33193 ; 0x81a9 151fe: 3008 adds r0, #8 15200: 47a8 blx r5 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_TEXT_CHK_PR); 15202: 6820 ldr r0, [r4, #0] 15204: f04f 32ff mov.w r2, #4294967295 15208: f249 11a9 movw r1, #37289 ; 0x91a9 1520c: 3008 adds r0, #8 1520e: 47a8 blx r5 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 15210: 6820 ldr r0, [r4, #0] 15212: 6a23 ldr r3, [r4, #32] 15214: f013 0302 ands.w r3, r3, #2 15218: bf14 ite ne 1521a: 212a movne r1, #42 ; 0x2a 1521c: 2126 moveq r1, #38 ; 0x26 1521e: 2b00 cmp r3, #0 15220: bf14 ite ne 15222: 2315 movne r3, #21 15224: 2313 moveq r3, #19 15226: f04f 0200 mov.w r2, #0 1522a: f363 0204 bfi r2, r3, #0, #5 1522e: f361 124a bfi r2, r1, #5, #6 15232: f363 22cf bfi r2, r3, #11, #5 15236: f24a 01a9 movw r1, #41129 ; 0xa0a9 1523a: 3008 adds r0, #8 1523c: 47a8 blx r5 lv_style_set_transition_prop_5(&styles->bg_click, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); 1523e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 15240: 2229 movs r2, #41 ; 0x29 15242: 21b6 movs r1, #182 ; 0xb6 15244: 3008 adds r0, #8 15246: 4d41 ldr r5, [pc, #260] ; (1534c ) 15248: 47a8 blx r5 style_init_reset(&styles->btn); 1524a: 6820 ldr r0, [r4, #0] 1524c: 3010 adds r0, #16 1524e: 4b41 ldr r3, [pc, #260] ; (15354 ) 15250: 4798 blx r3 lv_style_set_radius(&styles->btn, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 15252: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 15254: f647 72ff movw r2, #32767 ; 0x7fff 15258: 2101 movs r1, #1 1525a: 3010 adds r0, #16 1525c: 47a8 blx r5 lv_style_set_bg_opa(&styles->btn, LV_STATE_DEFAULT, LV_OPA_COVER); 1525e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 15260: 22ff movs r2, #255 ; 0xff 15262: 212c movs r1, #44 ; 0x2c 15264: 3010 adds r0, #16 15266: 4b3c ldr r3, [pc, #240] ; (15358 ) 15268: 4798 blx r3 lv_style_set_bg_color(&styles->btn, LV_STATE_DEFAULT, COLOR_BTN); 1526a: 6820 ldr r0, [r4, #0] 1526c: 3010 adds r0, #16 1526e: 6a23 ldr r3, [r4, #32] 15270: f013 0f02 tst.w r3, #2 15274: f040 8420 bne.w 15ab8 15278: 230b movs r3, #11 1527a: 2118 movs r1, #24 1527c: 240e movs r4, #14 1527e: f04f 0200 mov.w r2, #0 15282: f364 0204 bfi r2, r4, #0, #5 15286: f361 124a bfi r2, r1, #5, #6 1528a: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 1528e: 2129 movs r1, #41 ; 0x29 15290: 4b2c ldr r3, [pc, #176] ; (15344 ) 15292: 4798 blx r3 lv_style_set_bg_color(&styles->btn, LV_STATE_PRESSED, COLOR_BTN_PR); 15294: 4b2c ldr r3, [pc, #176] ; (15348 ) 15296: 6818 ldr r0, [r3, #0] 15298: 3010 adds r0, #16 1529a: 6a1b ldr r3, [r3, #32] 1529c: f013 0f02 tst.w r3, #2 152a0: f000 840f beq.w 15ac2 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))); 152a4: 4928 ldr r1, [pc, #160] ; (15348 ) 152a6: 7b4b ldrb r3, [r1, #13] 152a8: 08db lsrs r3, r3, #3 152aa: eb03 0383 add.w r3, r3, r3, lsl #2 152ae: eb03 0383 add.w r3, r3, r3, lsl #2 152b2: f641 35da movw r5, #7130 ; 0x1bda 152b6: 442b add r3, r5 152b8: eb03 2203 add.w r2, r3, r3, lsl #8 152bc: eb03 13c2 add.w r3, r3, r2, lsl #7 152c0: 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))); 152c4: 898a ldrh r2, [r1, #12] 152c6: f3c2 1245 ubfx r2, r2, #5, #6 152ca: eb02 0282 add.w r2, r2, r2, lsl #2 152ce: eb02 0282 add.w r2, r2, r2, lsl #2 152d2: f502 5262 add.w r2, r2, #14464 ; 0x3880 152d6: 321a adds r2, #26 152d8: eb02 2402 add.w r4, r2, r2, lsl #8 152dc: eb02 12c4 add.w r2, r2, r4, lsl #7 152e0: 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))); 152e4: 7b09 ldrb r1, [r1, #12] 152e6: f001 011f and.w r1, r1, #31 152ea: eb01 0181 add.w r1, r1, r1, lsl #2 152ee: eb01 0181 add.w r1, r1, r1, lsl #2 152f2: 4429 add r1, r5 152f4: eb01 2201 add.w r2, r1, r1, lsl #8 152f8: eb01 11c2 add.w r1, r1, r2, lsl #7 152fc: f3c1 51c4 ubfx r1, r1, #23, #5 15300: f04f 0200 mov.w r2, #0 15304: f361 0204 bfi r2, r1, #0, #5 15308: f364 124a bfi r2, r4, #5, #6 1530c: f363 22cf bfi r2, r3, #11, #5 15310: f241 0129 movw r1, #4137 ; 0x1029 15314: 4d0b ldr r5, [pc, #44] ; (15344 ) 15316: 47a8 blx r5 lv_style_set_bg_color(&styles->btn, LV_STATE_CHECKED, COLOR_BTN_CHK); 15318: 4c0b ldr r4, [pc, #44] ; (15348 ) 1531a: 6820 ldr r0, [r4, #0] 1531c: 89a2 ldrh r2, [r4, #12] 1531e: f240 1129 movw r1, #297 ; 0x129 15322: 3010 adds r0, #16 15324: 47a8 blx r5 lv_style_set_bg_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, COLOR_BTN_CHK_PR); 15326: 6826 ldr r6, [r4, #0] 15328: 3610 adds r6, #16 1532a: 214c movs r1, #76 ; 0x4c 1532c: 89a0 ldrh r0, [r4, #12] 1532e: 4b08 ldr r3, [pc, #32] ; (15350 ) 15330: 4798 blx r3 15332: 4602 mov r2, r0 15334: f241 1129 movw r1, #4393 ; 0x1129 15338: 4630 mov r0, r6 1533a: 47a8 blx r5 lv_style_set_bg_color(&styles->btn, LV_STATE_DISABLED, COLOR_BTN); 1533c: 6820 ldr r0, [r4, #0] 1533e: 3010 adds r0, #16 15340: 6a23 ldr r3, [r4, #32] 15342: e00b b.n 1535c 15344: 00006a0d .word 0x00006a0d 15348: 20006bd8 .word 0x20006bd8 1534c: 000068c9 .word 0x000068c9 15350: 00011beb .word 0x00011beb 15354: 00014a49 .word 0x00014a49 15358: 00006b51 .word 0x00006b51 1535c: f013 0f02 tst.w r3, #2 15360: f040 83d9 bne.w 15b16 15364: 230b movs r3, #11 15366: 2118 movs r1, #24 15368: 240e movs r4, #14 1536a: f04f 0200 mov.w r2, #0 1536e: f364 0204 bfi r2, r4, #0, #5 15372: f361 124a bfi r2, r1, #5, #6 15376: f363 22cf bfi r2, r3, #11, #5 1537a: f242 0129 movw r1, #8233 ; 0x2029 1537e: 4bc6 ldr r3, [pc, #792] ; (15698 ) 15380: 4798 blx r3 lv_style_set_bg_color(&styles->btn, LV_STATE_DISABLED | LV_STATE_CHECKED, COLOR_BTN_DIS); 15382: 4bc6 ldr r3, [pc, #792] ; (1569c ) 15384: 6818 ldr r0, [r3, #0] 15386: 6a1b ldr r3, [r3, #32] 15388: f013 0302 ands.w r3, r3, #2 1538c: bf14 ite ne 1538e: 2133 movne r1, #51 ; 0x33 15390: 2122 moveq r1, #34 ; 0x22 15392: 2b00 cmp r3, #0 15394: bf14 ite ne 15396: 2319 movne r3, #25 15398: 2311 moveq r3, #17 1539a: f04f 0200 mov.w r2, #0 1539e: f363 0204 bfi r2, r3, #0, #5 153a2: f361 124a bfi r2, r1, #5, #6 153a6: f363 22cf bfi r2, r3, #11, #5 153aa: f242 1129 movw r1, #8489 ; 0x2129 153ae: 3010 adds r0, #16 153b0: 4db9 ldr r5, [pc, #740] ; (15698 ) 153b2: 47a8 blx r5 lv_style_set_border_color(&styles->btn, LV_STATE_DEFAULT, COLOR_BTN_BORDER); 153b4: 4cb9 ldr r4, [pc, #740] ; (1569c ) 153b6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 153b8: 89a2 ldrh r2, [r4, #12] 153ba: 2139 movs r1, #57 ; 0x39 153bc: 3010 adds r0, #16 153be: 47a8 blx r5 lv_style_set_border_color(&styles->btn, LV_STATE_PRESSED, COLOR_BTN_BORDER_PR); 153c0: 6820 ldr r0, [r4, #0] 153c2: 89a2 ldrh r2, [r4, #12] 153c4: f241 0139 movw r1, #4153 ; 0x1039 153c8: 3010 adds r0, #16 153ca: 47a8 blx r5 lv_style_set_border_color(&styles->btn, LV_STATE_DISABLED, COLOR_BTN_BORDER_INA); 153cc: 6820 ldr r0, [r4, #0] 153ce: 6a23 ldr r3, [r4, #32] 153d0: f013 0302 ands.w r3, r3, #2 153d4: bf14 ite ne 153d6: 2122 movne r1, #34 ; 0x22 153d8: 2110 moveq r1, #16 153da: 2b00 cmp r3, #0 153dc: bf14 ite ne 153de: 2311 movne r3, #17 153e0: 2308 moveq r3, #8 153e2: f04f 0200 mov.w r2, #0 153e6: f363 0204 bfi r2, r3, #0, #5 153ea: f361 124a bfi r2, r1, #5, #6 153ee: f363 22cf bfi r2, r3, #11, #5 153f2: f242 0139 movw r1, #8249 ; 0x2039 153f6: 3010 adds r0, #16 153f8: 47a8 blx r5 lv_style_set_border_width(&styles->btn, LV_STATE_DEFAULT, BORDER_WIDTH); 153fa: 6824 ldr r4, [r4, #0] 153fc: 3410 adds r4, #16 153fe: 2000 movs r0, #0 15400: 4ba7 ldr r3, [pc, #668] ; (156a0 ) 15402: 4798 blx r3 15404: 3028 adds r0, #40 ; 0x28 15406: 0040 lsls r0, r0, #1 15408: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1540c: f280 8387 bge.w 15b1e 15410: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 15412: 2130 movs r1, #48 ; 0x30 15414: 4620 mov r0, r4 15416: 4ba3 ldr r3, [pc, #652] ; (156a4 ) 15418: 4798 blx r3 lv_style_set_border_opa(&styles->btn, LV_STATE_CHECKED, LV_OPA_TRANSP); 1541a: 4ca0 ldr r4, [pc, #640] ; (1569c ) 1541c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar) 1541e: 2200 movs r2, #0 15420: f44f 719e mov.w r1, #316 ; 0x13c 15424: 3010 adds r0, #16 15426: 4ba0 ldr r3, [pc, #640] ; (156a8 ) 15428: 4798 blx r3 lv_style_set_text_color(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 1542a: 6820 ldr r0, [r4, #0] 1542c: 3010 adds r0, #16 1542e: 6a23 ldr r3, [r4, #32] 15430: f013 0f02 tst.w r3, #2 15434: f040 8380 bne.w 15b38 15438: 231f movs r3, #31 1543a: 213f movs r1, #63 ; 0x3f 1543c: 461c mov r4, r3 1543e: f04f 0200 mov.w r2, #0 15442: f364 0204 bfi r2, r4, #0, #5 15446: f361 124a bfi r2, r1, #5, #6 1544a: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 1544e: f248 0189 movw r1, #32905 ; 0x8089 15452: 4b91 ldr r3, [pc, #580] ; (15698 ) 15454: 4798 blx r3 lv_style_set_text_color(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 15456: 4b91 ldr r3, [pc, #580] ; (1569c ) 15458: 6818 ldr r0, [r3, #0] 1545a: 3010 adds r0, #16 1545c: 6a1b ldr r3, [r3, #32] 1545e: f013 0f02 tst.w r3, #2 15462: f040 836d bne.w 15b40 15466: 231f movs r3, #31 15468: 213f movs r1, #63 ; 0x3f 1546a: 461c mov r4, r3 1546c: f04f 0200 mov.w r2, #0 15470: f364 0204 bfi r2, r4, #0, #5 15474: f361 124a bfi r2, r1, #5, #6 15478: f363 22cf bfi r2, r3, #11, #5 1547c: f249 0189 movw r1, #37001 ; 0x9089 15480: 4d85 ldr r5, [pc, #532] ; (15698 ) 15482: 47a8 blx r5 lv_style_set_text_color(&styles->btn, LV_STATE_CHECKED, lv_color_hex(0xffffff)); 15484: 4c85 ldr r4, [pc, #532] ; (1569c ) 15486: 6820 ldr r0, [r4, #0] 15488: f04f 32ff mov.w r2, #4294967295 1548c: f248 1189 movw r1, #33161 ; 0x8189 15490: 3010 adds r0, #16 15492: 47a8 blx r5 lv_style_set_text_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); 15494: 6820 ldr r0, [r4, #0] 15496: f04f 32ff mov.w r2, #4294967295 1549a: f249 1189 movw r1, #37257 ; 0x9189 1549e: 3010 adds r0, #16 154a0: 47a8 blx r5 lv_style_set_text_color(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); 154a2: 6820 ldr r0, [r4, #0] 154a4: 2311 movs r3, #17 154a6: f04f 0200 mov.w r2, #0 154aa: f363 0204 bfi r2, r3, #0, #5 154ae: 2122 movs r1, #34 ; 0x22 154b0: f361 124a bfi r2, r1, #5, #6 154b4: f363 22cf bfi r2, r3, #11, #5 154b8: f24a 0189 movw r1, #41097 ; 0xa089 154bc: 3010 adds r0, #16 154be: 47a8 blx r5 lv_style_set_image_recolor(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 154c0: 6820 ldr r0, [r4, #0] 154c2: 3010 adds r0, #16 154c4: 6a23 ldr r3, [r4, #32] 154c6: f013 0f02 tst.w r3, #2 154ca: f040 833d bne.w 15b48 154ce: 231f movs r3, #31 154d0: 213f movs r1, #63 ; 0x3f 154d2: 461c mov r4, r3 154d4: f04f 0200 mov.w r2, #0 154d8: f364 0204 bfi r2, r4, #0, #5 154dc: f361 124a bfi r2, r1, #5, #6 154e0: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 154e4: f248 01a9 movw r1, #32937 ; 0x80a9 154e8: 4b6b ldr r3, [pc, #428] ; (15698 ) 154ea: 4798 blx r3 lv_style_set_image_recolor(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 154ec: 4b6b ldr r3, [pc, #428] ; (1569c ) 154ee: 6818 ldr r0, [r3, #0] 154f0: 3010 adds r0, #16 154f2: 6a1b ldr r3, [r3, #32] 154f4: f013 0f02 tst.w r3, #2 154f8: f040 832a bne.w 15b50 154fc: 231f movs r3, #31 154fe: 213f movs r1, #63 ; 0x3f 15500: 461c mov r4, r3 15502: f04f 0200 mov.w r2, #0 15506: f364 0204 bfi r2, r4, #0, #5 1550a: f361 124a bfi r2, r1, #5, #6 1550e: f363 22cf bfi r2, r3, #11, #5 15512: f249 01a9 movw r1, #37033 ; 0x90a9 15516: 4d60 ldr r5, [pc, #384] ; (15698 ) 15518: 47a8 blx r5 lv_style_set_image_recolor(&styles->btn, LV_STATE_PRESSED, lv_color_hex(0xffffff)); 1551a: 4c60 ldr r4, [pc, #384] ; (1569c ) 1551c: 6820 ldr r0, [r4, #0] 1551e: f04f 32ff mov.w r2, #4294967295 15522: f249 01a9 movw r1, #37033 ; 0x90a9 15526: 3010 adds r0, #16 15528: 47a8 blx r5 lv_style_set_image_recolor(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); 1552a: 6820 ldr r0, [r4, #0] 1552c: f04f 32ff mov.w r2, #4294967295 15530: f249 11a9 movw r1, #37289 ; 0x91a9 15534: 3010 adds r0, #16 15536: 47a8 blx r5 lv_style_set_image_recolor(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); 15538: 6820 ldr r0, [r4, #0] 1553a: 2311 movs r3, #17 1553c: f04f 0200 mov.w r2, #0 15540: f363 0204 bfi r2, r3, #0, #5 15544: 2122 movs r1, #34 ; 0x22 15546: f361 124a bfi r2, r1, #5, #6 1554a: f363 22cf bfi r2, r3, #11, #5 1554e: f24a 01a9 movw r1, #41129 ; 0xa0a9 15552: 3010 adds r0, #16 15554: 47a8 blx r5 lv_style_set_value_color(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 15556: 6820 ldr r0, [r4, #0] 15558: 3010 adds r0, #16 1555a: 6a23 ldr r3, [r4, #32] 1555c: f013 0f02 tst.w r3, #2 15560: f040 82fa bne.w 15b58 15564: 231f movs r3, #31 15566: 213f movs r1, #63 ; 0x3f 15568: 461c mov r4, r3 1556a: f04f 0200 mov.w r2, #0 1556e: f364 0204 bfi r2, r4, #0, #5 15572: f361 124a bfi r2, r1, #5, #6 15576: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 1557a: 2179 movs r1, #121 ; 0x79 1557c: 4b46 ldr r3, [pc, #280] ; (15698 ) 1557e: 4798 blx r3 lv_style_set_value_color(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 15580: 4b46 ldr r3, [pc, #280] ; (1569c ) 15582: 6818 ldr r0, [r3, #0] 15584: 3010 adds r0, #16 15586: 6a1b ldr r3, [r3, #32] 15588: f013 0f02 tst.w r3, #2 1558c: f040 82e8 bne.w 15b60 15590: 231f movs r3, #31 15592: 213f movs r1, #63 ; 0x3f 15594: 461c mov r4, r3 15596: f04f 0200 mov.w r2, #0 1559a: f364 0204 bfi r2, r4, #0, #5 1559e: f361 124a bfi r2, r1, #5, #6 155a2: f363 22cf bfi r2, r3, #11, #5 155a6: f241 0179 movw r1, #4217 ; 0x1079 155aa: 4d3b ldr r5, [pc, #236] ; (15698 ) 155ac: 47a8 blx r5 lv_style_set_value_color(&styles->btn, LV_STATE_CHECKED, lv_color_hex(0xffffff)); 155ae: 4c3b ldr r4, [pc, #236] ; (1569c ) 155b0: 6820 ldr r0, [r4, #0] 155b2: f04f 32ff mov.w r2, #4294967295 155b6: f240 1179 movw r1, #377 ; 0x179 155ba: 3010 adds r0, #16 155bc: 47a8 blx r5 lv_style_set_value_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); 155be: 6820 ldr r0, [r4, #0] 155c0: f04f 32ff mov.w r2, #4294967295 155c4: f241 1179 movw r1, #4473 ; 0x1179 155c8: 3010 adds r0, #16 155ca: 47a8 blx r5 lv_style_set_value_color(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); 155cc: 6820 ldr r0, [r4, #0] 155ce: 2311 movs r3, #17 155d0: f04f 0200 mov.w r2, #0 155d4: f363 0204 bfi r2, r3, #0, #5 155d8: 2122 movs r1, #34 ; 0x22 155da: f361 124a bfi r2, r1, #5, #6 155de: f363 22cf bfi r2, r3, #11, #5 155e2: f242 0179 movw r1, #8313 ; 0x2079 155e6: 3010 adds r0, #16 155e8: 47a8 blx r5 lv_style_set_pad_left(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 155ea: 6824 ldr r4, [r4, #0] 155ec: 3410 adds r4, #16 155ee: 2000 movs r0, #0 155f0: 4b2b ldr r3, [pc, #172] ; (156a0 ) 155f2: 4798 blx r3 155f4: eb00 0080 add.w r0, r0, r0, lsl #2 155f8: 00c0 lsls r0, r0, #3 155fa: 3050 adds r0, #80 ; 0x50 155fc: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15600: f280 82b2 bge.w 15b68 15604: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 15606: 2112 movs r1, #18 15608: 4620 mov r0, r4 1560a: 4b26 ldr r3, [pc, #152] ; (156a4 ) 1560c: 4798 blx r3 lv_style_set_pad_right(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 1560e: 4b23 ldr r3, [pc, #140] ; (1569c ) 15610: 681c ldr r4, [r3, #0] 15612: 3410 adds r4, #16 15614: 2000 movs r0, #0 15616: 4b22 ldr r3, [pc, #136] ; (156a0 ) 15618: 4798 blx r3 1561a: eb00 0080 add.w r0, r0, r0, lsl #2 1561e: 00c0 lsls r0, r0, #3 15620: 3050 adds r0, #80 ; 0x50 15622: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15626: f280 82ae bge.w 15b86 1562a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 1562c: 2113 movs r1, #19 1562e: 4620 mov r0, r4 15630: 4b1c ldr r3, [pc, #112] ; (156a4 ) 15632: 4798 blx r3 lv_style_set_pad_top(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 15634: 4b19 ldr r3, [pc, #100] ; (1569c ) 15636: 681c ldr r4, [r3, #0] 15638: 3410 adds r4, #16 1563a: 2000 movs r0, #0 1563c: 4b18 ldr r3, [pc, #96] ; (156a0 ) 1563e: 4798 blx r3 15640: ebc0 1000 rsb r0, r0, r0, lsl #4 15644: 3050 adds r0, #80 ; 0x50 15646: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1564a: f280 82ab bge.w 15ba4 1564e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 15650: 2110 movs r1, #16 15652: 4620 mov r0, r4 15654: 4b13 ldr r3, [pc, #76] ; (156a4 ) 15656: 4798 blx r3 lv_style_set_pad_bottom(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 15658: 4b10 ldr r3, [pc, #64] ; (1569c ) 1565a: 681c ldr r4, [r3, #0] 1565c: 3410 adds r4, #16 1565e: 2000 movs r0, #0 15660: 4b0f ldr r3, [pc, #60] ; (156a0 ) 15662: 4798 blx r3 15664: ebc0 1000 rsb r0, r0, r0, lsl #4 15668: 3050 adds r0, #80 ; 0x50 1566a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1566e: f280 82a7 bge.w 15bc0 15672: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 15674: 2111 movs r1, #17 15676: 4620 mov r0, r4 15678: 4b0a ldr r3, [pc, #40] ; (156a4 ) 1567a: 4798 blx r3 lv_style_set_pad_inner(&styles->btn, LV_STATE_DEFAULT, LV_DPX(20)); 1567c: 4b07 ldr r3, [pc, #28] ; (1569c ) 1567e: 681c ldr r4, [r3, #0] 15680: 3410 adds r4, #16 15682: 2000 movs r0, #0 15684: 4b06 ldr r3, [pc, #24] ; (156a0 ) 15686: 4798 blx r3 15688: eb00 0080 add.w r0, r0, r0, lsl #2 1568c: 0080 lsls r0, r0, #2 1568e: 3050 adds r0, #80 ; 0x50 15690: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15694: e00a b.n 156ac 15696: bf00 nop 15698: 00006a0d .word 0x00006a0d 1569c: 20006bd8 .word 0x20006bd8 156a0: 00010f25 .word 0x00010f25 156a4: 000068c9 .word 0x000068c9 156a8: 00006b51 .word 0x00006b51 156ac: f280 8296 bge.w 15bdc 156b0: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 156b2: 2114 movs r1, #20 156b4: 4620 mov r0, r4 156b6: 4dbd ldr r5, [pc, #756] ; (159ac ) 156b8: 47a8 blx r5 lv_style_set_outline_width(&styles->btn, LV_STATE_DEFAULT, 3); 156ba: 4cbd ldr r4, [pc, #756] ; (159b0 ) 156bc: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 156be: 2203 movs r2, #3 156c0: 2140 movs r1, #64 ; 0x40 156c2: 3010 adds r0, #16 156c4: 47a8 blx r5 lv_style_set_outline_opa(&styles->btn, LV_STATE_DEFAULT, LV_OPA_0); 156c6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 156c8: 2200 movs r2, #0 156ca: 214c movs r1, #76 ; 0x4c 156cc: 3010 adds r0, #16 156ce: 4eb9 ldr r6, [pc, #740] ; (159b4 ) 156d0: 47b0 blx r6 lv_style_set_outline_opa(&styles->btn, LV_STATE_FOCUSED, LV_OPA_50); 156d2: 6820 ldr r0, [r4, #0] 156d4: 227f movs r2, #127 ; 0x7f 156d6: f44f 7113 mov.w r1, #588 ; 0x24c 156da: 3010 adds r0, #16 156dc: 47b0 blx r6 lv_style_set_outline_color(&styles->btn, LV_STATE_DEFAULT, theme.color_primary); 156de: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 156e0: 89a2 ldrh r2, [r4, #12] 156e2: 2149 movs r1, #73 ; 0x49 156e4: 3010 adds r0, #16 156e6: 4eb4 ldr r6, [pc, #720] ; (159b8 ) 156e8: 47b0 blx r6 lv_style_set_outline_color(&styles->btn, LV_STATE_EDITED, theme.color_secondary); 156ea: 6820 ldr r0, [r4, #0] 156ec: 89e2 ldrh r2, [r4, #14] 156ee: f240 4149 movw r1, #1097 ; 0x449 156f2: 3010 adds r0, #16 156f4: 47b0 blx r6 lv_style_set_transition_time(&styles->btn, LV_STATE_DEFAULT, TRANSITION_TIME); 156f6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 156f8: 2296 movs r2, #150 ; 0x96 156fa: 21b0 movs r1, #176 ; 0xb0 156fc: 3010 adds r0, #16 156fe: 47a8 blx r5 lv_style_set_transition_prop_4(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_BORDER_OPA); 15700: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_4, transition_prop_4, lv_style_int_t, _int, scalar) 15702: 223c movs r2, #60 ; 0x3c 15704: 21b5 movs r1, #181 ; 0xb5 15706: 3010 adds r0, #16 15708: 47a8 blx r5 lv_style_set_transition_prop_5(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); 1570a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 1570c: 2229 movs r2, #41 ; 0x29 1570e: 21b6 movs r1, #182 ; 0xb6 15710: 3010 adds r0, #16 15712: 47a8 blx r5 lv_style_set_transition_prop_6(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); 15714: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 15716: 224c movs r2, #76 ; 0x4c 15718: 21b7 movs r1, #183 ; 0xb7 1571a: 3010 adds r0, #16 1571c: 47a8 blx r5 lv_style_set_transition_delay(&styles->btn, LV_STATE_DEFAULT, TRANSITION_TIME); 1571e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_DELAY, transition_delay, lv_style_int_t, _int, scalar) 15720: 2296 movs r2, #150 ; 0x96 15722: 21b1 movs r1, #177 ; 0xb1 15724: 3010 adds r0, #16 15726: 47a8 blx r5 lv_style_set_transition_delay(&styles->btn, LV_STATE_PRESSED, 0); 15728: 6820 ldr r0, [r4, #0] 1572a: 2200 movs r2, #0 1572c: f241 01b1 movw r1, #4273 ; 0x10b1 15730: 3010 adds r0, #16 15732: 47a8 blx r5 style_init_reset(&styles->pad_inner); 15734: 6820 ldr r0, [r4, #0] 15736: 3014 adds r0, #20 15738: 4ba0 ldr r3, [pc, #640] ; (159bc ) 1573a: 4798 blx r3 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 1573c: 6824 ldr r4, [r4, #0] 1573e: 3414 adds r4, #20 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 15740: 2000 movs r0, #0 15742: 4b9f ldr r3, [pc, #636] ; (159c0 ) 15744: 4798 blx r3 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 15746: 2832 cmp r0, #50 ; 0x32 15748: f200 8266 bhi.w 15c18 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 1574c: 2000 movs r0, #0 1574e: 4b9d ldr r3, [pc, #628] ; (159c4 ) 15750: 4798 blx r3 15752: eb00 0080 add.w r0, r0, r0, lsl #2 15756: 0080 lsls r0, r0, #2 15758: 3050 adds r0, #80 ; 0x50 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 1575a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1575e: f280 824c bge.w 15bfa 15762: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 15764: 2114 movs r1, #20 15766: 4620 mov r0, r4 15768: 4b90 ldr r3, [pc, #576] ; (159ac ) 1576a: 4798 blx r3 style_init_reset(&styles->pad_small); 1576c: 4b90 ldr r3, [pc, #576] ; (159b0 ) 1576e: 6818 ldr r0, [r3, #0] 15770: 3018 adds r0, #24 15772: 4b92 ldr r3, [pc, #584] ; (159bc ) 15774: 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); 15776: 2000 movs r0, #0 15778: 4b91 ldr r3, [pc, #580] ; (159c0 ) 1577a: 4798 blx r3 1577c: 2832 cmp r0, #50 ; 0x32 1577e: f200 8275 bhi.w 15c6c 15782: 2000 movs r0, #0 15784: 4b8f ldr r3, [pc, #572] ; (159c4 ) 15786: 4798 blx r3 15788: eb00 0080 add.w r0, r0, r0, lsl #2 1578c: 0040 lsls r0, r0, #1 1578e: 3050 adds r0, #80 ; 0x50 15790: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15794: f280 825b bge.w 15c4e 15798: 2401 movs r4, #1 lv_style_set_pad_left(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 1579a: 4e85 ldr r6, [pc, #532] ; (159b0 ) 1579c: 6830 ldr r0, [r6, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1579e: 4622 mov r2, r4 157a0: 2112 movs r1, #18 157a2: 3018 adds r0, #24 157a4: 4d81 ldr r5, [pc, #516] ; (159ac ) 157a6: 47a8 blx r5 lv_style_set_pad_right(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 157a8: 6830 ldr r0, [r6, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 157aa: 4622 mov r2, r4 157ac: 2113 movs r1, #19 157ae: 3018 adds r0, #24 157b0: 47a8 blx r5 lv_style_set_pad_top(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 157b2: 6830 ldr r0, [r6, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 157b4: 4622 mov r2, r4 157b6: 2110 movs r1, #16 157b8: 3018 adds r0, #24 157ba: 47a8 blx r5 lv_style_set_pad_bottom(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 157bc: 6830 ldr r0, [r6, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 157be: 4622 mov r2, r4 157c0: 2111 movs r1, #17 157c2: 3018 adds r0, #24 157c4: 47a8 blx r5 lv_style_set_pad_inner(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 157c6: 6830 ldr r0, [r6, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 157c8: 4622 mov r2, r4 157ca: 2114 movs r1, #20 157cc: 3018 adds r0, #24 157ce: 47a8 blx r5 157d0: bd70 pop {r4, r5, r6, pc} lv_style_set_radius(&styles->bg, LV_STATE_DEFAULT, LV_DPX(8)); 157d2: 2000 movs r0, #0 157d4: 4b7b ldr r3, [pc, #492] ; (159c4 ) 157d6: 4798 blx r3 157d8: 300a adds r0, #10 157da: 00c0 lsls r0, r0, #3 157dc: 4b7a ldr r3, [pc, #488] ; (159c8 ) 157de: fb83 2300 smull r2, r3, r3, r0 157e2: 17c2 asrs r2, r0, #31 157e4: ebc2 12a3 rsb r2, r2, r3, asr #6 157e8: b212 sxth r2, r2 157ea: f7ff b9ad b.w 14b48 157ee: 231f movs r3, #31 157f0: 213f movs r1, #63 ; 0x3f 157f2: 461c mov r4, r3 157f4: f7ff b9bd b.w 14b72 lv_style_set_border_width(&styles->bg, LV_STATE_DEFAULT, BORDER_WIDTH); 157f8: 2000 movs r0, #0 157fa: 4b72 ldr r3, [pc, #456] ; (159c4 ) 157fc: 4798 blx r3 157fe: 3028 adds r0, #40 ; 0x28 15800: 0040 lsls r0, r0, #1 15802: 4b71 ldr r3, [pc, #452] ; (159c8 ) 15804: fb83 2300 smull r2, r3, r3, r0 15808: 17c2 asrs r2, r0, #31 1580a: ebc2 12a3 rsb r2, r2, r3, asr #6 1580e: b212 sxth r2, r2 15810: f7ff b9ed b.w 14bee 15814: 2307 movs r3, #7 15816: 210f movs r1, #15 15818: 2408 movs r4, #8 1581a: f7ff ba03 b.w 14c24 1581e: 2307 movs r3, #7 15820: 210f movs r1, #15 15822: 2408 movs r4, #8 15824: f7ff ba1b b.w 14c5e 15828: 2307 movs r3, #7 1582a: 210f movs r1, #15 1582c: 2408 movs r4, #8 1582e: f7ff ba2c b.w 14c8a 15832: 2307 movs r3, #7 15834: 210f movs r1, #15 15836: 2408 movs r4, #8 15838: f7ff ba3e b.w 14cb8 lv_style_set_pad_left(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 1583c: 2000 movs r0, #0 1583e: 4b61 ldr r3, [pc, #388] ; (159c4 ) 15840: 4798 blx r3 15842: ebc0 1000 rsb r0, r0, r0, lsl #4 15846: 3050 adds r0, #80 ; 0x50 15848: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1584c: da02 bge.n 15854 1584e: 2401 movs r4, #1 15850: f7ff ba58 b.w 14d04 15854: 2000 movs r0, #0 15856: 4b5b ldr r3, [pc, #364] ; (159c4 ) 15858: 4798 blx r3 1585a: ebc0 1000 rsb r0, r0, r0, lsl #4 1585e: 3050 adds r0, #80 ; 0x50 15860: 4a59 ldr r2, [pc, #356] ; (159c8 ) 15862: fb82 3200 smull r3, r2, r2, r0 15866: 17c4 asrs r4, r0, #31 15868: ebc4 14a2 rsb r4, r4, r2, asr #6 1586c: b2a4 uxth r4, r4 1586e: f7ff ba49 b.w 14d04 15872: 2000 movs r0, #0 15874: 4b53 ldr r3, [pc, #332] ; (159c4 ) 15876: 4798 blx r3 15878: ebc0 1000 rsb r0, r0, r0, lsl #4 1587c: 0040 lsls r0, r0, #1 1587e: 3050 adds r0, #80 ; 0x50 15880: 4a51 ldr r2, [pc, #324] ; (159c8 ) 15882: fb82 3200 smull r3, r2, r2, r0 15886: 17c4 asrs r4, r0, #31 15888: ebc4 14a2 rsb r4, r4, r2, asr #6 1588c: b2a4 uxth r4, r4 1588e: f7ff ba39 b.w 14d04 15892: 2000 movs r0, #0 15894: 4b4b ldr r3, [pc, #300] ; (159c4 ) 15896: 4798 blx r3 15898: 3028 adds r0, #40 ; 0x28 1589a: 0040 lsls r0, r0, #1 1589c: 4b4a ldr r3, [pc, #296] ; (159c8 ) 1589e: fb83 2300 smull r2, r3, r3, r0 158a2: 17c2 asrs r2, r0, #31 158a4: ebc2 12a3 rsb r2, r2, r3, asr #6 158a8: b292 uxth r2, r2 158aa: f7ff ba35 b.w 14d18 lv_style_set_pad_right(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 158ae: 2000 movs r0, #0 158b0: 4b44 ldr r3, [pc, #272] ; (159c4 ) 158b2: 4798 blx r3 158b4: ebc0 1000 rsb r0, r0, r0, lsl #4 158b8: 3050 adds r0, #80 ; 0x50 158ba: f5b0 7fa0 cmp.w r0, #320 ; 0x140 158be: da02 bge.n 158c6 158c0: 2401 movs r4, #1 158c2: f7ff ba55 b.w 14d70 158c6: 2000 movs r0, #0 158c8: 4b3e ldr r3, [pc, #248] ; (159c4 ) 158ca: 4798 blx r3 158cc: ebc0 1000 rsb r0, r0, r0, lsl #4 158d0: 3050 adds r0, #80 ; 0x50 158d2: 4a3d ldr r2, [pc, #244] ; (159c8 ) 158d4: fb82 3200 smull r3, r2, r2, r0 158d8: 17c4 asrs r4, r0, #31 158da: ebc4 14a2 rsb r4, r4, r2, asr #6 158de: b2a4 uxth r4, r4 158e0: f7ff ba46 b.w 14d70 158e4: 2000 movs r0, #0 158e6: 4b37 ldr r3, [pc, #220] ; (159c4 ) 158e8: 4798 blx r3 158ea: ebc0 1000 rsb r0, r0, r0, lsl #4 158ee: 0040 lsls r0, r0, #1 158f0: 3050 adds r0, #80 ; 0x50 158f2: 4a35 ldr r2, [pc, #212] ; (159c8 ) 158f4: fb82 3200 smull r3, r2, r2, r0 158f8: 17c4 asrs r4, r0, #31 158fa: ebc4 14a2 rsb r4, r4, r2, asr #6 158fe: b2a4 uxth r4, r4 15900: f7ff ba36 b.w 14d70 15904: 2000 movs r0, #0 15906: 4b2f ldr r3, [pc, #188] ; (159c4 ) 15908: 4798 blx r3 1590a: 3028 adds r0, #40 ; 0x28 1590c: 0040 lsls r0, r0, #1 1590e: 4b2e ldr r3, [pc, #184] ; (159c8 ) 15910: fb83 2300 smull r2, r3, r3, r0 15914: 17c2 asrs r2, r0, #31 15916: ebc2 12a3 rsb r2, r2, r3, asr #6 1591a: b292 uxth r2, r2 1591c: f7ff ba32 b.w 14d84 lv_style_set_pad_top(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 15920: 2000 movs r0, #0 15922: 4b28 ldr r3, [pc, #160] ; (159c4 ) 15924: 4798 blx r3 15926: ebc0 1000 rsb r0, r0, r0, lsl #4 1592a: 3050 adds r0, #80 ; 0x50 1592c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15930: da02 bge.n 15938 15932: 2401 movs r4, #1 15934: f7ff ba41 b.w 14dba 15938: 2000 movs r0, #0 1593a: 4b22 ldr r3, [pc, #136] ; (159c4 ) 1593c: 4798 blx r3 1593e: ebc0 1000 rsb r0, r0, r0, lsl #4 15942: 3050 adds r0, #80 ; 0x50 15944: 4a20 ldr r2, [pc, #128] ; (159c8 ) 15946: fb82 3200 smull r3, r2, r2, r0 1594a: 17c4 asrs r4, r0, #31 1594c: ebc4 14a2 rsb r4, r4, r2, asr #6 15950: b2a4 uxth r4, r4 15952: f7ff ba32 b.w 14dba 15956: 2000 movs r0, #0 15958: 4b1a ldr r3, [pc, #104] ; (159c4 ) 1595a: 4798 blx r3 1595c: ebc0 1000 rsb r0, r0, r0, lsl #4 15960: 0040 lsls r0, r0, #1 15962: 3050 adds r0, #80 ; 0x50 15964: 4a18 ldr r2, [pc, #96] ; (159c8 ) 15966: fb82 3200 smull r3, r2, r2, r0 1596a: 17c4 asrs r4, r0, #31 1596c: ebc4 14a2 rsb r4, r4, r2, asr #6 15970: b2a4 uxth r4, r4 15972: f7ff ba22 b.w 14dba 15976: 2000 movs r0, #0 15978: 4b12 ldr r3, [pc, #72] ; (159c4 ) 1597a: 4798 blx r3 1597c: 3028 adds r0, #40 ; 0x28 1597e: 0040 lsls r0, r0, #1 15980: 4b11 ldr r3, [pc, #68] ; (159c8 ) 15982: fb83 2300 smull r2, r3, r3, r0 15986: 17c2 asrs r2, r0, #31 15988: ebc2 12a3 rsb r2, r2, r3, asr #6 1598c: b292 uxth r2, r2 1598e: f7ff ba1e b.w 14dce lv_style_set_pad_bottom(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 15992: 2000 movs r0, #0 15994: 4b0b ldr r3, [pc, #44] ; (159c4 ) 15996: 4798 blx r3 15998: ebc0 1000 rsb r0, r0, r0, lsl #4 1599c: 3050 adds r0, #80 ; 0x50 1599e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 159a2: da13 bge.n 159cc 159a4: 2401 movs r4, #1 159a6: f7ff ba2d b.w 14e04 159aa: bf00 nop 159ac: 000068c9 .word 0x000068c9 159b0: 20006bd8 .word 0x20006bd8 159b4: 00006b51 .word 0x00006b51 159b8: 00006a0d .word 0x00006a0d 159bc: 00014a49 .word 0x00014a49 159c0: 00010f41 .word 0x00010f41 159c4: 00010f25 .word 0x00010f25 159c8: 66666667 .word 0x66666667 159cc: 2000 movs r0, #0 159ce: 4bb5 ldr r3, [pc, #724] ; (15ca4 ) 159d0: 4798 blx r3 159d2: ebc0 1000 rsb r0, r0, r0, lsl #4 159d6: 3050 adds r0, #80 ; 0x50 159d8: 4ab3 ldr r2, [pc, #716] ; (15ca8 ) 159da: fb82 3200 smull r3, r2, r2, r0 159de: 17c4 asrs r4, r0, #31 159e0: ebc4 14a2 rsb r4, r4, r2, asr #6 159e4: b2a4 uxth r4, r4 159e6: f7ff ba0d b.w 14e04 159ea: 2000 movs r0, #0 159ec: 4bad ldr r3, [pc, #692] ; (15ca4 ) 159ee: 4798 blx r3 159f0: ebc0 1000 rsb r0, r0, r0, lsl #4 159f4: 0040 lsls r0, r0, #1 159f6: 3050 adds r0, #80 ; 0x50 159f8: 4aab ldr r2, [pc, #684] ; (15ca8 ) 159fa: fb82 3200 smull r3, r2, r2, r0 159fe: 17c4 asrs r4, r0, #31 15a00: ebc4 14a2 rsb r4, r4, r2, asr #6 15a04: b2a4 uxth r4, r4 15a06: f7ff b9fd b.w 14e04 15a0a: 2000 movs r0, #0 15a0c: 4ba5 ldr r3, [pc, #660] ; (15ca4 ) 15a0e: 4798 blx r3 15a10: 3028 adds r0, #40 ; 0x28 15a12: 0040 lsls r0, r0, #1 15a14: 4ba4 ldr r3, [pc, #656] ; (15ca8 ) 15a16: fb83 2300 smull r2, r3, r3, r0 15a1a: 17c2 asrs r2, r0, #31 15a1c: ebc2 12a3 rsb r2, r2, r3, asr #6 15a20: b292 uxth r2, r2 15a22: f7ff b9f9 b.w 14e18 lv_style_set_pad_inner(&styles->bg, LV_STATE_DEFAULT, PAD_DEF); 15a26: 2000 movs r0, #0 15a28: 4b9e ldr r3, [pc, #632] ; (15ca4 ) 15a2a: 4798 blx r3 15a2c: ebc0 1000 rsb r0, r0, r0, lsl #4 15a30: 3050 adds r0, #80 ; 0x50 15a32: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15a36: da02 bge.n 15a3e 15a38: 2201 movs r2, #1 15a3a: f7ff ba08 b.w 14e4e 15a3e: 2000 movs r0, #0 15a40: 4b98 ldr r3, [pc, #608] ; (15ca4 ) 15a42: 4798 blx r3 15a44: ebc0 1000 rsb r0, r0, r0, lsl #4 15a48: 3050 adds r0, #80 ; 0x50 15a4a: 4b97 ldr r3, [pc, #604] ; (15ca8 ) 15a4c: fb83 2300 smull r2, r3, r3, r0 15a50: 17c2 asrs r2, r0, #31 15a52: ebc2 12a3 rsb r2, r2, r3, asr #6 15a56: b212 sxth r2, r2 15a58: f7ff b9f9 b.w 14e4e 15a5c: 2000 movs r0, #0 15a5e: 4b91 ldr r3, [pc, #580] ; (15ca4 ) 15a60: 4798 blx r3 15a62: ebc0 1000 rsb r0, r0, r0, lsl #4 15a66: 0040 lsls r0, r0, #1 15a68: 3050 adds r0, #80 ; 0x50 15a6a: 4b8f ldr r3, [pc, #572] ; (15ca8 ) 15a6c: fb83 2300 smull r2, r3, r3, r0 15a70: 17c2 asrs r2, r0, #31 15a72: ebc2 12a3 rsb r2, r2, r3, asr #6 15a76: b212 sxth r2, r2 15a78: f7ff b9e9 b.w 14e4e 15a7c: 231b movs r3, #27 15a7e: 2139 movs r1, #57 ; 0x39 15a80: 241d movs r4, #29 15a82: f7ff ba20 b.w 14ec6 15a86: 231d movs r3, #29 15a88: 213b movs r1, #59 ; 0x3b 15a8a: 461c mov r4, r3 15a8c: f7ff ba9f b.w 14fce 15a90: 231f movs r3, #31 15a92: 213f movs r1, #63 ; 0x3f 15a94: 461c mov r4, r3 15a96: f7ff bad3 b.w 15040 15a9a: 2319 movs r3, #25 15a9c: 2133 movs r1, #51 ; 0x33 15a9e: 461c mov r4, r3 15aa0: f7ff baf7 b.w 15092 15aa4: 2307 movs r3, #7 15aa6: 210f movs r1, #15 15aa8: 2408 movs r4, #8 15aaa: f7ff bb5a b.w 15162 15aae: 2307 movs r3, #7 15ab0: 210f movs r1, #15 15ab2: 2408 movs r4, #8 15ab4: f7ff bb91 b.w 151da 15ab8: 231f movs r3, #31 15aba: 213f movs r1, #63 ; 0x3f 15abc: 461c mov r4, r3 15abe: f7ff bbde b.w 1527e LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 15ac2: 4d7a ldr r5, [pc, #488] ; (15cac ) 15ac4: 7b6b ldrb r3, [r5, #13] 15ac6: 08db lsrs r3, r3, #3 15ac8: 214c movs r1, #76 ; 0x4c 15aca: fb01 f303 mul.w r3, r1, r3 15ace: f203 73b1 addw r3, r3, #1969 ; 0x7b1 15ad2: eb03 2203 add.w r2, r3, r3, lsl #8 15ad6: eb03 13c2 add.w r3, r3, r2, lsl #7 15ada: 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))); 15ade: 89ac ldrh r4, [r5, #12] 15ae0: f3c4 1445 ubfx r4, r4, #5, #6 15ae4: f241 02c8 movw r2, #4296 ; 0x10c8 15ae8: fb01 2404 mla r4, r1, r4, r2 15aec: eb04 2204 add.w r2, r4, r4, lsl #8 15af0: eb04 14c2 add.w r4, r4, r2, lsl #7 15af4: 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))); 15af8: 7b2a ldrb r2, [r5, #12] 15afa: f002 021f and.w r2, r2, #31 15afe: fb01 f102 mul.w r1, r1, r2 15b02: f601 11ca addw r1, r1, #2506 ; 0x9ca 15b06: eb01 2201 add.w r2, r1, r1, lsl #8 15b0a: eb01 11c2 add.w r1, r1, r2, lsl #7 15b0e: f3c1 51c4 ubfx r1, r1, #23, #5 15b12: f7ff bbf5 b.w 15300 15b16: 231f movs r3, #31 15b18: 213f movs r1, #63 ; 0x3f 15b1a: 461c mov r4, r3 15b1c: e425 b.n 1536a lv_style_set_border_width(&styles->btn, LV_STATE_DEFAULT, BORDER_WIDTH); 15b1e: 2000 movs r0, #0 15b20: 4b60 ldr r3, [pc, #384] ; (15ca4 ) 15b22: 4798 blx r3 15b24: 3028 adds r0, #40 ; 0x28 15b26: 0040 lsls r0, r0, #1 15b28: 4b5f ldr r3, [pc, #380] ; (15ca8 ) 15b2a: fb83 2300 smull r2, r3, r3, r0 15b2e: 17c2 asrs r2, r0, #31 15b30: ebc2 12a3 rsb r2, r2, r3, asr #6 15b34: b212 sxth r2, r2 15b36: e46c b.n 15412 15b38: 2306 movs r3, #6 15b3a: 2110 movs r1, #16 15b3c: 2409 movs r4, #9 15b3e: e47e b.n 1543e 15b40: 2306 movs r3, #6 15b42: 2110 movs r1, #16 15b44: 2409 movs r4, #9 15b46: e491 b.n 1546c 15b48: 2306 movs r3, #6 15b4a: 2110 movs r1, #16 15b4c: 2409 movs r4, #9 15b4e: e4c1 b.n 154d4 15b50: 2306 movs r3, #6 15b52: 2110 movs r1, #16 15b54: 2409 movs r4, #9 15b56: e4d4 b.n 15502 15b58: 2306 movs r3, #6 15b5a: 2110 movs r1, #16 15b5c: 2409 movs r4, #9 15b5e: e504 b.n 1556a 15b60: 2306 movs r3, #6 15b62: 2110 movs r1, #16 15b64: 2409 movs r4, #9 15b66: e516 b.n 15596 lv_style_set_pad_left(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 15b68: 2000 movs r0, #0 15b6a: 4b4e ldr r3, [pc, #312] ; (15ca4 ) 15b6c: 4798 blx r3 15b6e: eb00 0080 add.w r0, r0, r0, lsl #2 15b72: 00c0 lsls r0, r0, #3 15b74: 3050 adds r0, #80 ; 0x50 15b76: 4b4c ldr r3, [pc, #304] ; (15ca8 ) 15b78: fb83 2300 smull r2, r3, r3, r0 15b7c: 17c2 asrs r2, r0, #31 15b7e: ebc2 12a3 rsb r2, r2, r3, asr #6 15b82: b212 sxth r2, r2 15b84: e53f b.n 15606 lv_style_set_pad_right(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 15b86: 2000 movs r0, #0 15b88: 4b46 ldr r3, [pc, #280] ; (15ca4 ) 15b8a: 4798 blx r3 15b8c: eb00 0080 add.w r0, r0, r0, lsl #2 15b90: 00c0 lsls r0, r0, #3 15b92: 3050 adds r0, #80 ; 0x50 15b94: 4b44 ldr r3, [pc, #272] ; (15ca8 ) 15b96: fb83 2300 smull r2, r3, r3, r0 15b9a: 17c2 asrs r2, r0, #31 15b9c: ebc2 12a3 rsb r2, r2, r3, asr #6 15ba0: b212 sxth r2, r2 15ba2: e543 b.n 1562c lv_style_set_pad_top(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 15ba4: 2000 movs r0, #0 15ba6: 4b3f ldr r3, [pc, #252] ; (15ca4 ) 15ba8: 4798 blx r3 15baa: ebc0 1000 rsb r0, r0, r0, lsl #4 15bae: 3050 adds r0, #80 ; 0x50 15bb0: 4b3d ldr r3, [pc, #244] ; (15ca8 ) 15bb2: fb83 2300 smull r2, r3, r3, r0 15bb6: 17c2 asrs r2, r0, #31 15bb8: ebc2 12a3 rsb r2, r2, r3, asr #6 15bbc: b212 sxth r2, r2 15bbe: e547 b.n 15650 lv_style_set_pad_bottom(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 15bc0: 2000 movs r0, #0 15bc2: 4b38 ldr r3, [pc, #224] ; (15ca4 ) 15bc4: 4798 blx r3 15bc6: ebc0 1000 rsb r0, r0, r0, lsl #4 15bca: 3050 adds r0, #80 ; 0x50 15bcc: 4b36 ldr r3, [pc, #216] ; (15ca8 ) 15bce: fb83 2300 smull r2, r3, r3, r0 15bd2: 17c2 asrs r2, r0, #31 15bd4: ebc2 12a3 rsb r2, r2, r3, asr #6 15bd8: b212 sxth r2, r2 15bda: e54b b.n 15674 lv_style_set_pad_inner(&styles->btn, LV_STATE_DEFAULT, LV_DPX(20)); 15bdc: 2000 movs r0, #0 15bde: 4b31 ldr r3, [pc, #196] ; (15ca4 ) 15be0: 4798 blx r3 15be2: eb00 0080 add.w r0, r0, r0, lsl #2 15be6: 0080 lsls r0, r0, #2 15be8: 3050 adds r0, #80 ; 0x50 15bea: 4b2f ldr r3, [pc, #188] ; (15ca8 ) 15bec: fb83 2300 smull r2, r3, r3, r0 15bf0: 17c2 asrs r2, r0, #31 15bf2: ebc2 12a3 rsb r2, r2, r3, asr #6 15bf6: b212 sxth r2, r2 15bf8: e55b b.n 156b2 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 15bfa: 2000 movs r0, #0 15bfc: 4b29 ldr r3, [pc, #164] ; (15ca4 ) 15bfe: 4798 blx r3 15c00: eb00 0080 add.w r0, r0, r0, lsl #2 15c04: 0080 lsls r0, r0, #2 15c06: 3050 adds r0, #80 ; 0x50 15c08: 4b27 ldr r3, [pc, #156] ; (15ca8 ) 15c0a: fb83 2300 smull r2, r3, r3, r0 15c0e: 17c2 asrs r2, r0, #31 15c10: ebc2 12a3 rsb r2, r2, r3, asr #6 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 15c14: b212 sxth r2, r2 15c16: e5a5 b.n 15764 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 15c18: 2000 movs r0, #0 15c1a: 4b22 ldr r3, [pc, #136] ; (15ca4 ) 15c1c: 4798 blx r3 15c1e: eb00 0080 add.w r0, r0, r0, lsl #2 15c22: 00c0 lsls r0, r0, #3 15c24: 3050 adds r0, #80 ; 0x50 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 15c26: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15c2a: da01 bge.n 15c30 15c2c: 2201 movs r2, #1 15c2e: e599 b.n 15764 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 15c30: 2000 movs r0, #0 15c32: 4b1c ldr r3, [pc, #112] ; (15ca4 ) 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 15c3e: 4b1a ldr r3, [pc, #104] ; (15ca8 ) 15c40: fb83 2300 smull r2, r3, r3, r0 15c44: 17c2 asrs r2, r0, #31 15c46: ebc2 12a3 rsb r2, r2, r3, asr #6 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 15c4a: b212 sxth r2, r2 15c4c: e58a b.n 15764 lv_style_int_t pad_small_value = lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(10) : LV_DPX(20); 15c4e: 2000 movs r0, #0 15c50: 4b14 ldr r3, [pc, #80] ; (15ca4 ) 15c52: 4798 blx r3 15c54: eb00 0080 add.w r0, r0, r0, lsl #2 15c58: 0040 lsls r0, r0, #1 15c5a: 3050 adds r0, #80 ; 0x50 15c5c: 4b12 ldr r3, [pc, #72] ; (15ca8 ) 15c5e: fb83 2300 smull r2, r3, r3, r0 15c62: 17c4 asrs r4, r0, #31 15c64: ebc4 14a3 rsb r4, r4, r3, asr #6 15c68: b224 sxth r4, r4 15c6a: e596 b.n 1579a 15c6c: 2000 movs r0, #0 15c6e: 4b0d ldr r3, [pc, #52] ; (15ca4 ) 15c70: 4798 blx r3 15c72: eb00 0080 add.w r0, r0, r0, lsl #2 15c76: 0080 lsls r0, r0, #2 15c78: 3050 adds r0, #80 ; 0x50 15c7a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15c7e: da01 bge.n 15c84 15c80: 2401 movs r4, #1 15c82: e58a b.n 1579a 15c84: 2000 movs r0, #0 15c86: 4b07 ldr r3, [pc, #28] ; (15ca4 ) 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: 4b05 ldr r3, [pc, #20] ; (15ca8 ) 15c94: fb83 2300 smull r2, r3, r3, r0 15c98: 17c4 asrs r4, r0, #31 15c9a: ebc4 14a3 rsb r4, r4, r3, asr #6 15c9e: b224 sxth r4, r4 15ca0: e57b b.n 1579a 15ca2: bf00 nop 15ca4: 00010f25 .word 0x00010f25 15ca8: 66666667 .word 0x66666667 15cac: 20006bd8 .word 0x20006bd8 00015cb0 : { 15cb0: b5f8 push {r3, r4, r5, r6, r7, lr} style_init_reset(&styles->bar_bg); 15cb2: 4c54 ldr r4, [pc, #336] ; (15e04 ) 15cb4: 6820 ldr r0, [r4, #0] 15cb6: 3024 adds r0, #36 ; 0x24 15cb8: 4b53 ldr r3, [pc, #332] ; (15e08 ) 15cba: 4798 blx r3 lv_style_set_radius(&styles->bar_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 15cbc: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 15cbe: f647 72ff movw r2, #32767 ; 0x7fff 15cc2: 2101 movs r1, #1 15cc4: 3024 adds r0, #36 ; 0x24 15cc6: 4b51 ldr r3, [pc, #324] ; (15e0c ) 15cc8: 4798 blx r3 lv_style_set_bg_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_COVER); 15cca: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 15ccc: 22ff movs r2, #255 ; 0xff 15cce: 212c movs r1, #44 ; 0x2c 15cd0: 3024 adds r0, #36 ; 0x24 15cd2: 4b4f ldr r3, [pc, #316] ; (15e10 ) 15cd4: 4798 blx r3 lv_style_set_bg_color(&styles->bar_bg, LV_STATE_DEFAULT, COLOR_BG_SEC); 15cd6: 6820 ldr r0, [r4, #0] 15cd8: 6a23 ldr r3, [r4, #32] 15cda: f013 0302 ands.w r3, r3, #2 15cde: bf14 ite ne 15ce0: 211a movne r1, #26 15ce2: 2108 moveq r1, #8 15ce4: 2b00 cmp r3, #0 15ce6: bf15 itete ne 15ce8: 2435 movne r4, #53 ; 0x35 15cea: 2412 moveq r4, #18 15cec: 231b movne r3, #27 15cee: 2309 moveq r3, #9 15cf0: f04f 0200 mov.w r2, #0 15cf4: f363 0204 bfi r2, r3, #0, #5 15cf8: f364 124a bfi r2, r4, #5, #6 15cfc: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 15d00: 2129 movs r1, #41 ; 0x29 15d02: 3024 adds r0, #36 ; 0x24 15d04: 4b43 ldr r3, [pc, #268] ; (15e14 ) 15d06: 4798 blx r3 lv_style_set_value_color(&styles->bar_bg, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 15d08: 4b3e ldr r3, [pc, #248] ; (15e04 ) 15d0a: 6818 ldr r0, [r3, #0] 15d0c: 3024 adds r0, #36 ; 0x24 15d0e: 6a1b ldr r3, [r3, #32] 15d10: f013 0f02 tst.w r3, #2 15d14: d16d bne.n 15df2 15d16: 231f movs r3, #31 15d18: 213f movs r1, #63 ; 0x3f 15d1a: 461c mov r4, r3 15d1c: f04f 0200 mov.w r2, #0 15d20: f364 0204 bfi r2, r4, #0, #5 15d24: f361 124a bfi r2, r1, #5, #6 15d28: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 15d2c: 2179 movs r1, #121 ; 0x79 15d2e: 4d39 ldr r5, [pc, #228] ; (15e14 ) 15d30: 47a8 blx r5 lv_style_set_outline_color(&styles->bar_bg, LV_STATE_DEFAULT, theme.color_primary); 15d32: 4c34 ldr r4, [pc, #208] ; (15e04 ) 15d34: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 15d36: 89a2 ldrh r2, [r4, #12] 15d38: 2149 movs r1, #73 ; 0x49 15d3a: 3024 adds r0, #36 ; 0x24 15d3c: 47a8 blx r5 lv_style_set_outline_color(&styles->bar_bg, LV_STATE_EDITED, theme.color_secondary); 15d3e: 6820 ldr r0, [r4, #0] 15d40: 89e2 ldrh r2, [r4, #14] 15d42: f240 4149 movw r1, #1097 ; 0x449 15d46: 3024 adds r0, #36 ; 0x24 15d48: 47a8 blx r5 lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_TRANSP); 15d4a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 15d4c: 2200 movs r2, #0 15d4e: 214c movs r1, #76 ; 0x4c 15d50: 3024 adds r0, #36 ; 0x24 15d52: 4f2f ldr r7, [pc, #188] ; (15e10 ) 15d54: 47b8 blx r7 lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_FOCUSED, LV_OPA_50); 15d56: 6820 ldr r0, [r4, #0] 15d58: 227f movs r2, #127 ; 0x7f 15d5a: f44f 7113 mov.w r1, #588 ; 0x24c 15d5e: 3024 adds r0, #36 ; 0x24 15d60: 47b8 blx r7 lv_style_set_outline_width(&styles->bar_bg, LV_STATE_DEFAULT, 3); 15d62: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 15d64: 2203 movs r2, #3 15d66: 2140 movs r1, #64 ; 0x40 15d68: 3024 adds r0, #36 ; 0x24 15d6a: 4e28 ldr r6, [pc, #160] ; (15e0c ) 15d6c: 47b0 blx r6 lv_style_set_transition_time(&styles->bar_bg, LV_STATE_DEFAULT, TRANSITION_TIME); 15d6e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 15d70: 2296 movs r2, #150 ; 0x96 15d72: 21b0 movs r1, #176 ; 0xb0 15d74: 3024 adds r0, #36 ; 0x24 15d76: 47b0 blx r6 lv_style_set_transition_prop_6(&styles->bar_bg, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); 15d78: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 15d7a: 224c movs r2, #76 ; 0x4c 15d7c: 21b7 movs r1, #183 ; 0xb7 15d7e: 3024 adds r0, #36 ; 0x24 15d80: 47b0 blx r6 style_init_reset(&styles->bar_indic); 15d82: 6820 ldr r0, [r4, #0] 15d84: 3028 adds r0, #40 ; 0x28 15d86: 4b20 ldr r3, [pc, #128] ; (15e08 ) 15d88: 4798 blx r3 lv_style_set_bg_opa(&styles->bar_indic, LV_STATE_DEFAULT, LV_OPA_COVER); 15d8a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 15d8c: 22ff movs r2, #255 ; 0xff 15d8e: 212c movs r1, #44 ; 0x2c 15d90: 3028 adds r0, #40 ; 0x28 15d92: 47b8 blx r7 lv_style_set_radius(&styles->bar_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 15d94: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 15d96: f647 72ff movw r2, #32767 ; 0x7fff 15d9a: 2101 movs r1, #1 15d9c: 3028 adds r0, #40 ; 0x28 15d9e: 47b0 blx r6 lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DEFAULT, theme.color_primary); 15da0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 15da2: 89a2 ldrh r2, [r4, #12] 15da4: 2129 movs r1, #41 ; 0x29 15da6: 3028 adds r0, #40 ; 0x28 15da8: 47a8 blx r5 lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DISABLED, lv_color_hex3(0x888)); 15daa: 6820 ldr r0, [r4, #0] 15dac: 2311 movs r3, #17 15dae: f04f 0200 mov.w r2, #0 15db2: f363 0204 bfi r2, r3, #0, #5 15db6: 2122 movs r1, #34 ; 0x22 15db8: f361 124a bfi r2, r1, #5, #6 15dbc: f363 22cf bfi r2, r3, #11, #5 15dc0: f242 0129 movw r1, #8233 ; 0x2029 15dc4: 3028 adds r0, #40 ; 0x28 15dc6: 47a8 blx r5 lv_style_set_value_color(&styles->bar_indic, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x41404f) : LV_COLOR_WHITE); 15dc8: 6820 ldr r0, [r4, #0] 15dca: 3028 adds r0, #40 ; 0x28 15dcc: 6a23 ldr r3, [r4, #32] 15dce: f013 0f02 tst.w r3, #2 15dd2: d112 bne.n 15dfa 15dd4: 231f movs r3, #31 15dd6: 213f movs r1, #63 ; 0x3f 15dd8: 461c mov r4, r3 15dda: f04f 0200 mov.w r2, #0 15dde: f364 0204 bfi r2, r4, #0, #5 15de2: f361 124a bfi r2, r1, #5, #6 15de6: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 15dea: 2179 movs r1, #121 ; 0x79 15dec: 4b09 ldr r3, [pc, #36] ; (15e14 ) 15dee: 4798 blx r3 15df0: bdf8 pop {r3, r4, r5, r6, r7, pc} 15df2: 2306 movs r3, #6 15df4: 2110 movs r1, #16 15df6: 2409 movs r4, #9 15df8: e790 b.n 15d1c 15dfa: 2308 movs r3, #8 15dfc: 2110 movs r1, #16 15dfe: 2409 movs r4, #9 15e00: e7eb b.n 15dda 15e02: bf00 nop 15e04: 20006bd8 .word 0x20006bd8 15e08: 00014a49 .word 0x00014a49 15e0c: 000068c9 .word 0x000068c9 15e10: 00006b51 .word 0x00006b51 15e14: 00006a0d .word 0x00006a0d 00015e18 : { 15e18: b510 push {r4, lr} style_init_reset(&styles->slider_knob); 15e1a: 4ca0 ldr r4, [pc, #640] ; (1609c ) 15e1c: 6820 ldr r0, [r4, #0] 15e1e: 3090 adds r0, #144 ; 0x90 15e20: 4b9f ldr r3, [pc, #636] ; (160a0 ) 15e22: 4798 blx r3 lv_style_set_bg_opa(&styles->slider_knob, LV_STATE_DEFAULT, LV_OPA_COVER); 15e24: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 15e26: 22ff movs r2, #255 ; 0xff 15e28: 212c movs r1, #44 ; 0x2c 15e2a: 3090 adds r0, #144 ; 0x90 15e2c: 4b9d ldr r3, [pc, #628] ; (160a4 ) 15e2e: 4798 blx r3 lv_style_set_bg_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? theme.color_primary : LV_COLOR_WHITE); 15e30: 6820 ldr r0, [r4, #0] 15e32: 3090 adds r0, #144 ; 0x90 15e34: 6a23 ldr r3, [r4, #32] 15e36: f013 0f02 tst.w r3, #2 15e3a: bf19 ittee ne 15e3c: 4623 movne r3, r4 15e3e: 899a ldrhne r2, [r3, #12] 15e40: 4b99 ldreq r3, [pc, #612] ; (160a8 ) 15e42: 881a ldrheq r2, [r3, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 15e44: 2129 movs r1, #41 ; 0x29 15e46: 4b99 ldr r3, [pc, #612] ; (160ac ) 15e48: 4798 blx r3 lv_style_set_value_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 15e4a: 4b94 ldr r3, [pc, #592] ; (1609c ) 15e4c: 6818 ldr r0, [r3, #0] 15e4e: 3090 adds r0, #144 ; 0x90 15e50: 6a1b ldr r3, [r3, #32] 15e52: f013 0f02 tst.w r3, #2 15e56: f040 80a9 bne.w 15fac 15e5a: 231f movs r3, #31 15e5c: 213f movs r1, #63 ; 0x3f 15e5e: 461c mov r4, r3 15e60: f04f 0200 mov.w r2, #0 15e64: f364 0204 bfi r2, r4, #0, #5 15e68: f361 124a bfi r2, r1, #5, #6 15e6c: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 15e70: 2179 movs r1, #121 ; 0x79 15e72: 4b8e ldr r3, [pc, #568] ; (160ac ) 15e74: 4798 blx r3 lv_style_set_radius(&styles->slider_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 15e76: 4c89 ldr r4, [pc, #548] ; (1609c ) 15e78: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 15e7a: f647 72ff movw r2, #32767 ; 0x7fff 15e7e: 2101 movs r1, #1 15e80: 3090 adds r0, #144 ; 0x90 15e82: 4b8b ldr r3, [pc, #556] ; (160b0 ) 15e84: 4798 blx r3 lv_style_set_pad_left(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15e86: 6824 ldr r4, [r4, #0] 15e88: 3490 adds r4, #144 ; 0x90 15e8a: 2000 movs r0, #0 15e8c: 4b89 ldr r3, [pc, #548] ; (160b4 ) 15e8e: 4798 blx r3 15e90: ebc0 00c0 rsb r0, r0, r0, lsl #3 15e94: 3050 adds r0, #80 ; 0x50 15e96: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15e9a: f280 808b bge.w 15fb4 15e9e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 15ea0: 2112 movs r1, #18 15ea2: 4620 mov r0, r4 15ea4: 4b82 ldr r3, [pc, #520] ; (160b0 ) 15ea6: 4798 blx r3 lv_style_set_pad_right(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15ea8: 4b7c ldr r3, [pc, #496] ; (1609c ) 15eaa: 681c ldr r4, [r3, #0] 15eac: 3490 adds r4, #144 ; 0x90 15eae: 2000 movs r0, #0 15eb0: 4b80 ldr r3, [pc, #512] ; (160b4 ) 15eb2: 4798 blx r3 15eb4: ebc0 00c0 rsb r0, r0, r0, lsl #3 15eb8: 3050 adds r0, #80 ; 0x50 15eba: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15ebe: f280 8087 bge.w 15fd0 15ec2: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 15ec4: 2113 movs r1, #19 15ec6: 4620 mov r0, r4 15ec8: 4b79 ldr r3, [pc, #484] ; (160b0 ) 15eca: 4798 blx r3 lv_style_set_pad_top(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15ecc: 4b73 ldr r3, [pc, #460] ; (1609c ) 15ece: 681c ldr r4, [r3, #0] 15ed0: 3490 adds r4, #144 ; 0x90 15ed2: 2000 movs r0, #0 15ed4: 4b77 ldr r3, [pc, #476] ; (160b4 ) 15ed6: 4798 blx r3 15ed8: ebc0 00c0 rsb r0, r0, r0, lsl #3 15edc: 3050 adds r0, #80 ; 0x50 15ede: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15ee2: f280 8083 bge.w 15fec 15ee6: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 15ee8: 2110 movs r1, #16 15eea: 4620 mov r0, r4 15eec: 4b70 ldr r3, [pc, #448] ; (160b0 ) 15eee: 4798 blx r3 lv_style_set_pad_bottom(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15ef0: 4b6a ldr r3, [pc, #424] ; (1609c ) 15ef2: 681c ldr r4, [r3, #0] 15ef4: 3490 adds r4, #144 ; 0x90 15ef6: 2000 movs r0, #0 15ef8: 4b6e ldr r3, [pc, #440] ; (160b4 ) 15efa: 4798 blx r3 15efc: ebc0 00c0 rsb r0, r0, r0, lsl #3 15f00: 3050 adds r0, #80 ; 0x50 15f02: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15f06: da7f bge.n 16008 15f08: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 15f0a: 2111 movs r1, #17 15f0c: 4620 mov r0, r4 15f0e: 4b68 ldr r3, [pc, #416] ; (160b0 ) 15f10: 4798 blx r3 style_init_reset(&styles->slider_bg); 15f12: 4c62 ldr r4, [pc, #392] ; (1609c ) 15f14: 6820 ldr r0, [r4, #0] 15f16: 3094 adds r0, #148 ; 0x94 15f18: 4b61 ldr r3, [pc, #388] ; (160a0 ) 15f1a: 4798 blx r3 lv_style_set_margin_left(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 15f1c: 6824 ldr r4, [r4, #0] 15f1e: 3494 adds r4, #148 ; 0x94 15f20: 2000 movs r0, #0 15f22: 4b64 ldr r3, [pc, #400] ; (160b4 ) 15f24: 4798 blx r3 15f26: eb00 0080 add.w r0, r0, r0, lsl #2 15f2a: 0040 lsls r0, r0, #1 15f2c: 3050 adds r0, #80 ; 0x50 15f2e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15f32: da77 bge.n 16024 15f34: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_LEFT, margin_left, lv_style_int_t, _int, scalar) 15f36: 2117 movs r1, #23 15f38: 4620 mov r0, r4 15f3a: 4b5d ldr r3, [pc, #372] ; (160b0 ) 15f3c: 4798 blx r3 lv_style_set_margin_right(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 15f3e: 4b57 ldr r3, [pc, #348] ; (1609c ) 15f40: 681c ldr r4, [r3, #0] 15f42: 3494 adds r4, #148 ; 0x94 15f44: 2000 movs r0, #0 15f46: 4b5b ldr r3, [pc, #364] ; (160b4 ) 15f48: 4798 blx r3 15f4a: eb00 0080 add.w r0, r0, r0, lsl #2 15f4e: 0040 lsls r0, r0, #1 15f50: 3050 adds r0, #80 ; 0x50 15f52: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15f56: da74 bge.n 16042 15f58: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_RIGHT, margin_right, lv_style_int_t, _int, scalar) 15f5a: 2118 movs r1, #24 15f5c: 4620 mov r0, r4 15f5e: 4b54 ldr r3, [pc, #336] ; (160b0 ) 15f60: 4798 blx r3 lv_style_set_margin_top(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 15f62: 4b4e ldr r3, [pc, #312] ; (1609c ) 15f64: 681c ldr r4, [r3, #0] 15f66: 3494 adds r4, #148 ; 0x94 15f68: 2000 movs r0, #0 15f6a: 4b52 ldr r3, [pc, #328] ; (160b4 ) 15f6c: 4798 blx r3 15f6e: eb00 0080 add.w r0, r0, r0, lsl #2 15f72: 0040 lsls r0, r0, #1 15f74: 3050 adds r0, #80 ; 0x50 15f76: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15f7a: da71 bge.n 16060 15f7c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_TOP, margin_top, lv_style_int_t, _int, scalar) 15f7e: 2115 movs r1, #21 15f80: 4620 mov r0, r4 15f82: 4b4b ldr r3, [pc, #300] ; (160b0 ) 15f84: 4798 blx r3 lv_style_set_margin_bottom(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 15f86: 4b45 ldr r3, [pc, #276] ; (1609c ) 15f88: 681c ldr r4, [r3, #0] 15f8a: 3494 adds r4, #148 ; 0x94 15f8c: 2000 movs r0, #0 15f8e: 4b49 ldr r3, [pc, #292] ; (160b4 ) 15f90: 4798 blx r3 15f92: eb00 0080 add.w r0, r0, r0, lsl #2 15f96: 0040 lsls r0, r0, #1 15f98: 3050 adds r0, #80 ; 0x50 15f9a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15f9e: da6e bge.n 1607e 15fa0: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_BOTTOM, margin_bottom, lv_style_int_t, _int, scalar) 15fa2: 2116 movs r1, #22 15fa4: 4620 mov r0, r4 15fa6: 4b42 ldr r3, [pc, #264] ; (160b0 ) 15fa8: 4798 blx r3 15faa: bd10 pop {r4, pc} 15fac: 2306 movs r3, #6 15fae: 2110 movs r1, #16 15fb0: 2409 movs r4, #9 15fb2: e755 b.n 15e60 lv_style_set_pad_left(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15fb4: 2000 movs r0, #0 15fb6: 4b3f ldr r3, [pc, #252] ; (160b4 ) 15fb8: 4798 blx r3 15fba: ebc0 00c0 rsb r0, r0, r0, lsl #3 15fbe: 3050 adds r0, #80 ; 0x50 15fc0: 4b3d ldr r3, [pc, #244] ; (160b8 ) 15fc2: fb83 2300 smull r2, r3, r3, r0 15fc6: 17c2 asrs r2, r0, #31 15fc8: ebc2 12a3 rsb r2, r2, r3, asr #6 15fcc: b212 sxth r2, r2 15fce: e767 b.n 15ea0 lv_style_set_pad_right(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15fd0: 2000 movs r0, #0 15fd2: 4b38 ldr r3, [pc, #224] ; (160b4 ) 15fd4: 4798 blx r3 15fd6: ebc0 00c0 rsb r0, r0, r0, lsl #3 15fda: 3050 adds r0, #80 ; 0x50 15fdc: 4b36 ldr r3, [pc, #216] ; (160b8 ) 15fde: fb83 2300 smull r2, r3, r3, r0 15fe2: 17c2 asrs r2, r0, #31 15fe4: ebc2 12a3 rsb r2, r2, r3, asr #6 15fe8: b212 sxth r2, r2 15fea: e76b b.n 15ec4 lv_style_set_pad_top(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15fec: 2000 movs r0, #0 15fee: 4b31 ldr r3, [pc, #196] ; (160b4 ) 15ff0: 4798 blx r3 15ff2: ebc0 00c0 rsb r0, r0, r0, lsl #3 15ff6: 3050 adds r0, #80 ; 0x50 15ff8: 4b2f ldr r3, [pc, #188] ; (160b8 ) 15ffa: fb83 2300 smull r2, r3, r3, r0 15ffe: 17c2 asrs r2, r0, #31 16000: ebc2 12a3 rsb r2, r2, r3, asr #6 16004: b212 sxth r2, r2 16006: e76f b.n 15ee8 lv_style_set_pad_bottom(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 16008: 2000 movs r0, #0 1600a: 4b2a ldr r3, [pc, #168] ; (160b4 ) 1600c: 4798 blx r3 1600e: ebc0 00c0 rsb r0, r0, r0, lsl #3 16012: 3050 adds r0, #80 ; 0x50 16014: 4b28 ldr r3, [pc, #160] ; (160b8 ) 16016: fb83 2300 smull r2, r3, r3, r0 1601a: 17c2 asrs r2, r0, #31 1601c: ebc2 12a3 rsb r2, r2, r3, asr #6 16020: b212 sxth r2, r2 16022: e772 b.n 15f0a lv_style_set_margin_left(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 16024: 2000 movs r0, #0 16026: 4b23 ldr r3, [pc, #140] ; (160b4 ) 16028: 4798 blx r3 1602a: eb00 0080 add.w r0, r0, r0, lsl #2 1602e: 0040 lsls r0, r0, #1 16030: 3050 adds r0, #80 ; 0x50 16032: 4b21 ldr r3, [pc, #132] ; (160b8 ) 16034: fb83 2300 smull r2, r3, r3, r0 16038: 17c2 asrs r2, r0, #31 1603a: ebc2 12a3 rsb r2, r2, r3, asr #6 1603e: b212 sxth r2, r2 16040: e779 b.n 15f36 lv_style_set_margin_right(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 16042: 2000 movs r0, #0 16044: 4b1b ldr r3, [pc, #108] ; (160b4 ) 16046: 4798 blx r3 16048: eb00 0080 add.w r0, r0, r0, lsl #2 1604c: 0040 lsls r0, r0, #1 1604e: 3050 adds r0, #80 ; 0x50 16050: 4b19 ldr r3, [pc, #100] ; (160b8 ) 16052: fb83 2300 smull r2, r3, r3, r0 16056: 17c2 asrs r2, r0, #31 16058: ebc2 12a3 rsb r2, r2, r3, asr #6 1605c: b212 sxth r2, r2 1605e: e77c b.n 15f5a lv_style_set_margin_top(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 16060: 2000 movs r0, #0 16062: 4b14 ldr r3, [pc, #80] ; (160b4 ) 16064: 4798 blx r3 16066: eb00 0080 add.w r0, r0, r0, lsl #2 1606a: 0040 lsls r0, r0, #1 1606c: 3050 adds r0, #80 ; 0x50 1606e: 4b12 ldr r3, [pc, #72] ; (160b8 ) 16070: fb83 2300 smull r2, r3, r3, r0 16074: 17c2 asrs r2, r0, #31 16076: ebc2 12a3 rsb r2, r2, r3, asr #6 1607a: b212 sxth r2, r2 1607c: e77f b.n 15f7e lv_style_set_margin_bottom(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 1607e: 2000 movs r0, #0 16080: 4b0c ldr r3, [pc, #48] ; (160b4 ) 16082: 4798 blx r3 16084: eb00 0080 add.w r0, r0, r0, lsl #2 16088: 0040 lsls r0, r0, #1 1608a: 3050 adds r0, #80 ; 0x50 1608c: 4b0a ldr r3, [pc, #40] ; (160b8 ) 1608e: fb83 2300 smull r2, r3, r3, r0 16092: 17c2 asrs r2, r0, #31 16094: ebc2 12a3 rsb r2, r2, r3, asr #6 16098: b212 sxth r2, r2 1609a: e782 b.n 15fa2 1609c: 20006bd8 .word 0x20006bd8 160a0: 00014a49 .word 0x00014a49 160a4: 00006b51 .word 0x00006b51 160a8: 0002956c .word 0x0002956c 160ac: 00006a0d .word 0x00006a0d 160b0: 000068c9 .word 0x000068c9 160b4: 00010f25 .word 0x00010f25 160b8: 66666667 .word 0x66666667 000160bc : { 160bc: b510 push {r4, lr} style_init_reset(&styles->sw_knob); 160be: 4c48 ldr r4, [pc, #288] ; (161e0 ) 160c0: 6820 ldr r0, [r4, #0] 160c2: 309c adds r0, #156 ; 0x9c 160c4: 4b47 ldr r3, [pc, #284] ; (161e4 ) 160c6: 4798 blx r3 lv_style_set_bg_opa(&styles->sw_knob, LV_STATE_DEFAULT, LV_OPA_COVER); 160c8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 160ca: 22ff movs r2, #255 ; 0xff 160cc: 212c movs r1, #44 ; 0x2c 160ce: 309c adds r0, #156 ; 0x9c 160d0: 4b45 ldr r3, [pc, #276] ; (161e8 ) 160d2: 4798 blx r3 lv_style_set_bg_color(&styles->sw_knob, LV_STATE_DEFAULT, LV_COLOR_WHITE); 160d4: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 160d6: 4b45 ldr r3, [pc, #276] ; (161ec ) 160d8: 881a ldrh r2, [r3, #0] 160da: 2129 movs r1, #41 ; 0x29 160dc: 309c adds r0, #156 ; 0x9c 160de: 4b44 ldr r3, [pc, #272] ; (161f0 ) 160e0: 4798 blx r3 lv_style_set_radius(&styles->sw_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 160e2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 160e4: f647 72ff movw r2, #32767 ; 0x7fff 160e8: 2101 movs r1, #1 160ea: 309c adds r0, #156 ; 0x9c 160ec: 4b41 ldr r3, [pc, #260] ; (161f4 ) 160ee: 4798 blx r3 lv_style_set_pad_top(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 160f0: 6824 ldr r4, [r4, #0] 160f2: 349c adds r4, #156 ; 0x9c 160f4: 2000 movs r0, #0 160f6: 4b40 ldr r3, [pc, #256] ; (161f8 ) 160f8: 4798 blx r3 160fa: 3014 adds r0, #20 160fc: 0080 lsls r0, r0, #2 160fe: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16102: da39 bge.n 16178 16104: f04f 32ff mov.w r2, #4294967295 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 16108: 2110 movs r1, #16 1610a: 4620 mov r0, r4 1610c: 4b39 ldr r3, [pc, #228] ; (161f4 ) 1610e: 4798 blx r3 lv_style_set_pad_bottom(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 16110: 4b33 ldr r3, [pc, #204] ; (161e0 ) 16112: 681c ldr r4, [r3, #0] 16114: 349c adds r4, #156 ; 0x9c 16116: 2000 movs r0, #0 16118: 4b37 ldr r3, [pc, #220] ; (161f8 ) 1611a: 4798 blx r3 1611c: 3014 adds r0, #20 1611e: 0080 lsls r0, r0, #2 16120: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16124: da35 bge.n 16192 16126: f04f 32ff mov.w r2, #4294967295 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 1612a: 2111 movs r1, #17 1612c: 4620 mov r0, r4 1612e: 4b31 ldr r3, [pc, #196] ; (161f4 ) 16130: 4798 blx r3 lv_style_set_pad_left(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 16132: 4b2b ldr r3, [pc, #172] ; (161e0 ) 16134: 681c ldr r4, [r3, #0] 16136: 349c adds r4, #156 ; 0x9c 16138: 2000 movs r0, #0 1613a: 4b2f ldr r3, [pc, #188] ; (161f8 ) 1613c: 4798 blx r3 1613e: 3014 adds r0, #20 16140: 0080 lsls r0, r0, #2 16142: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16146: da31 bge.n 161ac 16148: f04f 32ff mov.w r2, #4294967295 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1614c: 2112 movs r1, #18 1614e: 4620 mov r0, r4 16150: 4b28 ldr r3, [pc, #160] ; (161f4 ) 16152: 4798 blx r3 lv_style_set_pad_right(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 16154: 4b22 ldr r3, [pc, #136] ; (161e0 ) 16156: 681c ldr r4, [r3, #0] 16158: 349c adds r4, #156 ; 0x9c 1615a: 2000 movs r0, #0 1615c: 4b26 ldr r3, [pc, #152] ; (161f8 ) 1615e: 4798 blx r3 16160: 3014 adds r0, #20 16162: 0080 lsls r0, r0, #2 16164: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16168: da2d bge.n 161c6 1616a: f04f 32ff mov.w r2, #4294967295 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 1616e: 2113 movs r1, #19 16170: 4620 mov r0, r4 16172: 4b20 ldr r3, [pc, #128] ; (161f4 ) 16174: 4798 blx r3 16176: bd10 pop {r4, pc} lv_style_set_pad_top(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 16178: 2000 movs r0, #0 1617a: 4b1f ldr r3, [pc, #124] ; (161f8 ) 1617c: 4798 blx r3 1617e: 3014 adds r0, #20 16180: 0080 lsls r0, r0, #2 16182: 4b1e ldr r3, [pc, #120] ; (161fc ) 16184: fb83 2300 smull r2, r3, r3, r0 16188: 17c2 asrs r2, r0, #31 1618a: eba2 12a3 sub.w r2, r2, r3, asr #6 1618e: b212 sxth r2, r2 16190: e7ba b.n 16108 lv_style_set_pad_bottom(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 16192: 2000 movs r0, #0 16194: 4b18 ldr r3, [pc, #96] ; (161f8 ) 16196: 4798 blx r3 16198: 3014 adds r0, #20 1619a: 0080 lsls r0, r0, #2 1619c: 4b17 ldr r3, [pc, #92] ; (161fc ) 1619e: fb83 2300 smull r2, r3, r3, r0 161a2: 17c2 asrs r2, r0, #31 161a4: eba2 12a3 sub.w r2, r2, r3, asr #6 161a8: b212 sxth r2, r2 161aa: e7be b.n 1612a lv_style_set_pad_left(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 161ac: 2000 movs r0, #0 161ae: 4b12 ldr r3, [pc, #72] ; (161f8 ) 161b0: 4798 blx r3 161b2: 3014 adds r0, #20 161b4: 0080 lsls r0, r0, #2 161b6: 4b11 ldr r3, [pc, #68] ; (161fc ) 161b8: fb83 2300 smull r2, r3, r3, r0 161bc: 17c2 asrs r2, r0, #31 161be: eba2 12a3 sub.w r2, r2, r3, asr #6 161c2: b212 sxth r2, r2 161c4: e7c2 b.n 1614c lv_style_set_pad_right(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 161c6: 2000 movs r0, #0 161c8: 4b0b ldr r3, [pc, #44] ; (161f8 ) 161ca: 4798 blx r3 161cc: 3014 adds r0, #20 161ce: 0080 lsls r0, r0, #2 161d0: 4b0a ldr r3, [pc, #40] ; (161fc ) 161d2: fb83 2300 smull r2, r3, r3, r0 161d6: 17c2 asrs r2, r0, #31 161d8: eba2 12a3 sub.w r2, r2, r3, asr #6 161dc: b212 sxth r2, r2 161de: e7c6 b.n 1616e 161e0: 20006bd8 .word 0x20006bd8 161e4: 00014a49 .word 0x00014a49 161e8: 00006b51 .word 0x00006b51 161ec: 0002956c .word 0x0002956c 161f0: 00006a0d .word 0x00006a0d 161f4: 000068c9 .word 0x000068c9 161f8: 00010f25 .word 0x00010f25 161fc: 66666667 .word 0x66666667 00016200 : { 16200: b538 push {r3, r4, r5, lr} style_init_reset(&styles->lmeter); 16202: 4c88 ldr r4, [pc, #544] ; (16424 ) 16204: 6820 ldr r0, [r4, #0] 16206: 3070 adds r0, #112 ; 0x70 16208: 4b87 ldr r3, [pc, #540] ; (16428 ) 1620a: 4798 blx r3 lv_style_set_radius(&styles->lmeter, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 1620c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 1620e: f647 72ff movw r2, #32767 ; 0x7fff 16212: 2101 movs r1, #1 16214: 3070 adds r0, #112 ; 0x70 16216: 4b85 ldr r3, [pc, #532] ; (1642c ) 16218: 4798 blx r3 lv_style_set_pad_left(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 1621a: 6824 ldr r4, [r4, #0] 1621c: 3470 adds r4, #112 ; 0x70 1621e: 2000 movs r0, #0 16220: 4b83 ldr r3, [pc, #524] ; (16430 ) 16222: 4798 blx r3 16224: eb00 0080 add.w r0, r0, r0, lsl #2 16228: 0080 lsls r0, r0, #2 1622a: 3050 adds r0, #80 ; 0x50 1622c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16230: f280 808e bge.w 16350 16234: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 16236: 2112 movs r1, #18 16238: 4620 mov r0, r4 1623a: 4b7c ldr r3, [pc, #496] ; (1642c ) 1623c: 4798 blx r3 lv_style_set_pad_right(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 1623e: 4b79 ldr r3, [pc, #484] ; (16424 ) 16240: 681c ldr r4, [r3, #0] 16242: 3470 adds r4, #112 ; 0x70 16244: 2000 movs r0, #0 16246: 4b7a ldr r3, [pc, #488] ; (16430 ) 16248: 4798 blx r3 1624a: eb00 0080 add.w r0, r0, r0, lsl #2 1624e: 0080 lsls r0, r0, #2 16250: 3050 adds r0, #80 ; 0x50 16252: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16256: f280 808a bge.w 1636e 1625a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 1625c: 2113 movs r1, #19 1625e: 4620 mov r0, r4 16260: 4b72 ldr r3, [pc, #456] ; (1642c ) 16262: 4798 blx r3 lv_style_set_pad_top(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 16264: 4b6f ldr r3, [pc, #444] ; (16424 ) 16266: 681c ldr r4, [r3, #0] 16268: 3470 adds r4, #112 ; 0x70 1626a: 2000 movs r0, #0 1626c: 4b70 ldr r3, [pc, #448] ; (16430 ) 1626e: 4798 blx r3 16270: eb00 0080 add.w r0, r0, r0, lsl #2 16274: 0080 lsls r0, r0, #2 16276: 3050 adds r0, #80 ; 0x50 16278: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1627c: f280 8086 bge.w 1638c 16280: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 16282: 2110 movs r1, #16 16284: 4620 mov r0, r4 16286: 4b69 ldr r3, [pc, #420] ; (1642c ) 16288: 4798 blx r3 lv_style_set_pad_inner(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(30)); 1628a: 4b66 ldr r3, [pc, #408] ; (16424 ) 1628c: 681c ldr r4, [r3, #0] 1628e: 3470 adds r4, #112 ; 0x70 16290: 2000 movs r0, #0 16292: 4b67 ldr r3, [pc, #412] ; (16430 ) 16294: 4798 blx r3 16296: ebc0 1000 rsb r0, r0, r0, lsl #4 1629a: 0040 lsls r0, r0, #1 1629c: 3050 adds r0, #80 ; 0x50 1629e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 162a2: f280 8082 bge.w 163aa 162a6: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 162a8: 2114 movs r1, #20 162aa: 4620 mov r0, r4 162ac: 4b5f ldr r3, [pc, #380] ; (1642c ) 162ae: 4798 blx r3 lv_style_set_scale_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(25)); 162b0: 4b5c ldr r3, [pc, #368] ; (16424 ) 162b2: 681c ldr r4, [r3, #0] 162b4: 3470 adds r4, #112 ; 0x70 162b6: 2000 movs r0, #0 162b8: 4b5d ldr r3, [pc, #372] ; (16430 ) 162ba: 4798 blx r3 162bc: eb00 0080 add.w r0, r0, r0, lsl #2 162c0: eb00 0080 add.w r0, r0, r0, lsl #2 162c4: 3050 adds r0, #80 ; 0x50 162c6: f5b0 7fa0 cmp.w r0, #320 ; 0x140 162ca: da7d bge.n 163c8 162cc: 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) 162ce: 21c0 movs r1, #192 ; 0xc0 162d0: 4620 mov r0, r4 162d2: 4b56 ldr r3, [pc, #344] ; (1642c ) 162d4: 4798 blx r3 lv_style_set_line_color(&styles->lmeter, LV_STATE_DEFAULT, theme.color_primary); 162d6: 4c53 ldr r4, [pc, #332] ; (16424 ) 162d8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 162da: 89a2 ldrh r2, [r4, #12] 162dc: 2199 movs r1, #153 ; 0x99 162de: 3070 adds r0, #112 ; 0x70 162e0: 4d54 ldr r5, [pc, #336] ; (16434 ) 162e2: 47a8 blx r5 lv_style_set_scale_grad_color(&styles->lmeter, LV_STATE_DEFAULT, theme.color_primary); 162e4: 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) 162e6: 89a2 ldrh r2, [r4, #12] 162e8: 21c9 movs r1, #201 ; 0xc9 162ea: 3070 adds r0, #112 ; 0x70 162ec: 47a8 blx r5 lv_style_set_scale_end_color(&styles->lmeter, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 162ee: 6820 ldr r0, [r4, #0] 162f0: 2311 movs r3, #17 162f2: f04f 0200 mov.w r2, #0 162f6: f363 0204 bfi r2, r3, #0, #5 162fa: 2122 movs r1, #34 ; 0x22 162fc: f361 124a bfi r2, r1, #5, #6 16300: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar) 16304: 21ca movs r1, #202 ; 0xca 16306: 3070 adds r0, #112 ; 0x70 16308: 47a8 blx r5 lv_style_set_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(10)); 1630a: 6824 ldr r4, [r4, #0] 1630c: 3470 adds r4, #112 ; 0x70 1630e: 2000 movs r0, #0 16310: 4b47 ldr r3, [pc, #284] ; (16430 ) 16312: 4798 blx r3 16314: eb00 0080 add.w r0, r0, r0, lsl #2 16318: 0040 lsls r0, r0, #1 1631a: 3050 adds r0, #80 ; 0x50 1631c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16320: da62 bge.n 163e8 16322: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 16324: 2190 movs r1, #144 ; 0x90 16326: 4620 mov r0, r4 16328: 4b40 ldr r3, [pc, #256] ; (1642c ) 1632a: 4798 blx r3 lv_style_set_scale_end_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(7)); 1632c: 4b3d ldr r3, [pc, #244] ; (16424 ) 1632e: 681c ldr r4, [r3, #0] 16330: 3470 adds r4, #112 ; 0x70 16332: 2000 movs r0, #0 16334: 4b3e ldr r3, [pc, #248] ; (16430 ) 16336: 4798 blx r3 16338: ebc0 00c0 rsb r0, r0, r0, lsl #3 1633c: 3050 adds r0, #80 ; 0x50 1633e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16342: da60 bge.n 16406 16344: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) 16346: 21c3 movs r1, #195 ; 0xc3 16348: 4620 mov r0, r4 1634a: 4b38 ldr r3, [pc, #224] ; (1642c ) 1634c: 4798 blx r3 1634e: bd38 pop {r3, r4, r5, pc} lv_style_set_pad_left(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 16350: 2000 movs r0, #0 16352: 4b37 ldr r3, [pc, #220] ; (16430 ) 16354: 4798 blx r3 16356: eb00 0080 add.w r0, r0, r0, lsl #2 1635a: 0080 lsls r0, r0, #2 1635c: 3050 adds r0, #80 ; 0x50 1635e: 4b36 ldr r3, [pc, #216] ; (16438 ) 16360: fb83 2300 smull r2, r3, r3, r0 16364: 17c2 asrs r2, r0, #31 16366: ebc2 12a3 rsb r2, r2, r3, asr #6 1636a: b212 sxth r2, r2 1636c: e763 b.n 16236 lv_style_set_pad_right(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 1636e: 2000 movs r0, #0 16370: 4b2f ldr r3, [pc, #188] ; (16430 ) 16372: 4798 blx r3 16374: eb00 0080 add.w r0, r0, r0, lsl #2 16378: 0080 lsls r0, r0, #2 1637a: 3050 adds r0, #80 ; 0x50 1637c: 4b2e ldr r3, [pc, #184] ; (16438 ) 1637e: fb83 2300 smull r2, r3, r3, r0 16382: 17c2 asrs r2, r0, #31 16384: ebc2 12a3 rsb r2, r2, r3, asr #6 16388: b212 sxth r2, r2 1638a: e767 b.n 1625c lv_style_set_pad_top(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 1638c: 2000 movs r0, #0 1638e: 4b28 ldr r3, [pc, #160] ; (16430 ) 16390: 4798 blx r3 16392: eb00 0080 add.w r0, r0, r0, lsl #2 16396: 0080 lsls r0, r0, #2 16398: 3050 adds r0, #80 ; 0x50 1639a: 4b27 ldr r3, [pc, #156] ; (16438 ) 1639c: fb83 2300 smull r2, r3, r3, r0 163a0: 17c2 asrs r2, r0, #31 163a2: ebc2 12a3 rsb r2, r2, r3, asr #6 163a6: b212 sxth r2, r2 163a8: e76b b.n 16282 lv_style_set_pad_inner(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(30)); 163aa: 2000 movs r0, #0 163ac: 4b20 ldr r3, [pc, #128] ; (16430 ) 163ae: 4798 blx r3 163b0: ebc0 1000 rsb r0, r0, r0, lsl #4 163b4: 0040 lsls r0, r0, #1 163b6: 3050 adds r0, #80 ; 0x50 163b8: 4b1f ldr r3, [pc, #124] ; (16438 ) 163ba: fb83 2300 smull r2, r3, r3, r0 163be: 17c2 asrs r2, r0, #31 163c0: ebc2 12a3 rsb r2, r2, r3, asr #6 163c4: b212 sxth r2, r2 163c6: e76f b.n 162a8 lv_style_set_scale_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(25)); 163c8: 2000 movs r0, #0 163ca: 4b19 ldr r3, [pc, #100] ; (16430 ) 163cc: 4798 blx r3 163ce: eb00 0080 add.w r0, r0, r0, lsl #2 163d2: eb00 0080 add.w r0, r0, r0, lsl #2 163d6: 3050 adds r0, #80 ; 0x50 163d8: 4b17 ldr r3, [pc, #92] ; (16438 ) 163da: fb83 2300 smull r2, r3, r3, r0 163de: 17c2 asrs r2, r0, #31 163e0: ebc2 12a3 rsb r2, r2, r3, asr #6 163e4: b212 sxth r2, r2 163e6: e772 b.n 162ce lv_style_set_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(10)); 163e8: 2000 movs r0, #0 163ea: 4b11 ldr r3, [pc, #68] ; (16430 ) 163ec: 4798 blx r3 163ee: eb00 0080 add.w r0, r0, r0, lsl #2 163f2: 0040 lsls r0, r0, #1 163f4: 3050 adds r0, #80 ; 0x50 163f6: 4b10 ldr r3, [pc, #64] ; (16438 ) 163f8: fb83 2300 smull r2, r3, r3, r0 163fc: 17c2 asrs r2, r0, #31 163fe: ebc2 12a3 rsb r2, r2, r3, asr #6 16402: b212 sxth r2, r2 16404: e78e b.n 16324 lv_style_set_scale_end_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(7)); 16406: 2000 movs r0, #0 16408: 4b09 ldr r3, [pc, #36] ; (16430 ) 1640a: 4798 blx r3 1640c: ebc0 00c0 rsb r0, r0, r0, lsl #3 16410: 3050 adds r0, #80 ; 0x50 16412: 4b09 ldr r3, [pc, #36] ; (16438 ) 16414: fb83 2300 smull r2, r3, r3, r0 16418: 17c2 asrs r2, r0, #31 1641a: ebc2 12a3 rsb r2, r2, r3, asr #6 1641e: b212 sxth r2, r2 16420: e791 b.n 16346 16422: bf00 nop 16424: 20006bd8 .word 0x20006bd8 16428: 00014a49 .word 0x00014a49 1642c: 000068c9 .word 0x000068c9 16430: 00010f25 .word 0x00010f25 16434: 00006a0d .word 0x00006a0d 16438: 66666667 .word 0x66666667 0001643c : { 1643c: b5f8 push {r3, r4, r5, r6, r7, lr} style_init_reset(&styles->gauge_main); 1643e: 4cc0 ldr r4, [pc, #768] ; (16740 ) 16440: 6820 ldr r0, [r4, #0] 16442: 305c adds r0, #92 ; 0x5c 16444: 4bbf ldr r3, [pc, #764] ; (16744 ) 16446: 4798 blx r3 lv_style_set_line_color(&styles->gauge_main, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 16448: 6820 ldr r0, [r4, #0] 1644a: 2511 movs r5, #17 1644c: f04f 0200 mov.w r2, #0 16450: f365 0204 bfi r2, r5, #0, #5 16454: 2722 movs r7, #34 ; 0x22 16456: f367 124a bfi r2, r7, #5, #6 1645a: f365 22cf bfi r2, r5, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 1645e: 2199 movs r1, #153 ; 0x99 16460: 305c adds r0, #92 ; 0x5c 16462: 4eb9 ldr r6, [pc, #740] ; (16748 ) 16464: 47b0 blx r6 lv_style_set_scale_grad_color(&styles->gauge_main, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 16466: 6820 ldr r0, [r4, #0] 16468: f04f 0200 mov.w r2, #0 1646c: f365 0204 bfi r2, r5, #0, #5 16470: f367 124a bfi r2, r7, #5, #6 16474: f365 22cf bfi r2, r5, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_GRAD_COLOR, scale_grad_color, lv_color_t, _color, nonscalar) 16478: 21c9 movs r1, #201 ; 0xc9 1647a: 305c adds r0, #92 ; 0x5c 1647c: 47b0 blx r6 lv_style_set_scale_end_color(&styles->gauge_main, LV_STATE_DEFAULT, theme.color_primary); 1647e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar) 16480: 89a2 ldrh r2, [r4, #12] 16482: 21ca movs r1, #202 ; 0xca 16484: 305c adds r0, #92 ; 0x5c 16486: 47b0 blx r6 lv_style_set_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(5)); 16488: 6824 ldr r4, [r4, #0] 1648a: 345c adds r4, #92 ; 0x5c 1648c: 2000 movs r0, #0 1648e: 4baf ldr r3, [pc, #700] ; (1674c ) 16490: 4798 blx r3 16492: eb00 0080 add.w r0, r0, r0, lsl #2 16496: 3050 adds r0, #80 ; 0x50 16498: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1649c: f280 8168 bge.w 16770 164a0: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 164a2: 2190 movs r1, #144 ; 0x90 164a4: 4620 mov r0, r4 164a6: 4baa ldr r3, [pc, #680] ; (16750 ) 164a8: 4798 blx r3 lv_style_set_scale_end_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(4)); 164aa: 4ba5 ldr r3, [pc, #660] ; (16740 ) 164ac: 681c ldr r4, [r3, #0] 164ae: 345c adds r4, #92 ; 0x5c 164b0: 2000 movs r0, #0 164b2: 4ba6 ldr r3, [pc, #664] ; (1674c ) 164b4: 4798 blx r3 164b6: 3014 adds r0, #20 164b8: 0080 lsls r0, r0, #2 164ba: f5b0 7fa0 cmp.w r0, #320 ; 0x140 164be: f280 8165 bge.w 1678c 164c2: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) 164c4: 21c3 movs r1, #195 ; 0xc3 164c6: 4620 mov r0, r4 164c8: 4ba1 ldr r3, [pc, #644] ; (16750 ) 164ca: 4798 blx r3 lv_style_set_scale_end_border_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(8)); 164cc: 4b9c ldr r3, [pc, #624] ; (16740 ) 164ce: 681c ldr r4, [r3, #0] 164d0: 345c adds r4, #92 ; 0x5c 164d2: 2000 movs r0, #0 164d4: 4b9d ldr r3, [pc, #628] ; (1674c ) 164d6: 4798 blx r3 164d8: 300a adds r0, #10 164da: 00c0 lsls r0, r0, #3 164dc: f5b0 7fa0 cmp.w r0, #320 ; 0x140 164e0: f280 8161 bge.w 167a6 164e4: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_BORDER_WIDTH, scale_end_border_width, lv_style_int_t, _int, scalar) 164e6: 21c2 movs r1, #194 ; 0xc2 164e8: 4620 mov r0, r4 164ea: 4b99 ldr r3, [pc, #612] ; (16750 ) 164ec: 4798 blx r3 lv_style_set_pad_left(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 164ee: 4b94 ldr r3, [pc, #592] ; (16740 ) 164f0: 681c ldr r4, [r3, #0] 164f2: 345c adds r4, #92 ; 0x5c 164f4: 2000 movs r0, #0 164f6: 4b95 ldr r3, [pc, #596] ; (1674c ) 164f8: 4798 blx r3 164fa: eb00 0080 add.w r0, r0, r0, lsl #2 164fe: 0080 lsls r0, r0, #2 16500: 3050 adds r0, #80 ; 0x50 16502: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16506: f280 815b bge.w 167c0 1650a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1650c: 2112 movs r1, #18 1650e: 4620 mov r0, r4 16510: 4b8f ldr r3, [pc, #572] ; (16750 ) 16512: 4798 blx r3 lv_style_set_pad_right(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 16514: 4b8a ldr r3, [pc, #552] ; (16740 ) 16516: 681c ldr r4, [r3, #0] 16518: 345c adds r4, #92 ; 0x5c 1651a: 2000 movs r0, #0 1651c: 4b8b ldr r3, [pc, #556] ; (1674c ) 1651e: 4798 blx r3 16520: eb00 0080 add.w r0, r0, r0, lsl #2 16524: 0080 lsls r0, r0, #2 16526: 3050 adds r0, #80 ; 0x50 16528: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1652c: f280 8157 bge.w 167de 16530: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 16532: 2113 movs r1, #19 16534: 4620 mov r0, r4 16536: 4b86 ldr r3, [pc, #536] ; (16750 ) 16538: 4798 blx r3 lv_style_set_pad_top(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 1653a: 4b81 ldr r3, [pc, #516] ; (16740 ) 1653c: 681c ldr r4, [r3, #0] 1653e: 345c adds r4, #92 ; 0x5c 16540: 2000 movs r0, #0 16542: 4b82 ldr r3, [pc, #520] ; (1674c ) 16544: 4798 blx r3 16546: eb00 0080 add.w r0, r0, r0, lsl #2 1654a: 0080 lsls r0, r0, #2 1654c: 3050 adds r0, #80 ; 0x50 1654e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16552: f280 8153 bge.w 167fc 16556: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 16558: 2110 movs r1, #16 1655a: 4620 mov r0, r4 1655c: 4b7c ldr r3, [pc, #496] ; (16750 ) 1655e: 4798 blx r3 lv_style_set_pad_inner(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 16560: 4b77 ldr r3, [pc, #476] ; (16740 ) 16562: 681c ldr r4, [r3, #0] 16564: 345c adds r4, #92 ; 0x5c 16566: 2000 movs r0, #0 16568: 4b78 ldr r3, [pc, #480] ; (1674c ) 1656a: 4798 blx r3 1656c: eb00 0080 add.w r0, r0, r0, lsl #2 16570: 0080 lsls r0, r0, #2 16572: 3050 adds r0, #80 ; 0x50 16574: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16578: f280 814f bge.w 1681a 1657c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 1657e: 2114 movs r1, #20 16580: 4620 mov r0, r4 16582: 4b73 ldr r3, [pc, #460] ; (16750 ) 16584: 4798 blx r3 lv_style_set_scale_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(15)); 16586: 4b6e ldr r3, [pc, #440] ; (16740 ) 16588: 681c ldr r4, [r3, #0] 1658a: 345c adds r4, #92 ; 0x5c 1658c: 2000 movs r0, #0 1658e: 4b6f ldr r3, [pc, #444] ; (1674c ) 16590: 4798 blx r3 16592: ebc0 1000 rsb r0, r0, r0, lsl #4 16596: 3050 adds r0, #80 ; 0x50 16598: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1659c: f280 814c bge.w 16838 165a0: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 165a2: 21c0 movs r1, #192 ; 0xc0 165a4: 4620 mov r0, r4 165a6: 4d6a ldr r5, [pc, #424] ; (16750 ) 165a8: 47a8 blx r5 lv_style_set_radius(&styles->gauge_main, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 165aa: 4c65 ldr r4, [pc, #404] ; (16740 ) 165ac: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 165ae: f647 72ff movw r2, #32767 ; 0x7fff 165b2: 2101 movs r1, #1 165b4: 305c adds r0, #92 ; 0x5c 165b6: 47a8 blx r5 style_init_reset(&styles->gauge_strong); 165b8: 6820 ldr r0, [r4, #0] 165ba: 3060 adds r0, #96 ; 0x60 165bc: 4b61 ldr r3, [pc, #388] ; (16744 ) 165be: 4798 blx r3 lv_style_set_line_color(&styles->gauge_strong, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 165c0: 6820 ldr r0, [r4, #0] 165c2: 2511 movs r5, #17 165c4: f04f 0200 mov.w r2, #0 165c8: f365 0204 bfi r2, r5, #0, #5 165cc: 2722 movs r7, #34 ; 0x22 165ce: f367 124a bfi r2, r7, #5, #6 165d2: f365 22cf bfi r2, r5, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 165d6: 2199 movs r1, #153 ; 0x99 165d8: 3060 adds r0, #96 ; 0x60 165da: 4e5b ldr r6, [pc, #364] ; (16748 ) 165dc: 47b0 blx r6 lv_style_set_scale_grad_color(&styles->gauge_strong, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 165de: 6820 ldr r0, [r4, #0] 165e0: f04f 0200 mov.w r2, #0 165e4: f365 0204 bfi r2, r5, #0, #5 165e8: f367 124a bfi r2, r7, #5, #6 165ec: f365 22cf bfi r2, r5, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_GRAD_COLOR, scale_grad_color, lv_color_t, _color, nonscalar) 165f0: 21c9 movs r1, #201 ; 0xc9 165f2: 3060 adds r0, #96 ; 0x60 165f4: 47b0 blx r6 lv_style_set_scale_end_color(&styles->gauge_strong, LV_STATE_DEFAULT, theme.color_primary); 165f6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar) 165f8: 89a2 ldrh r2, [r4, #12] 165fa: 21ca movs r1, #202 ; 0xca 165fc: 3060 adds r0, #96 ; 0x60 165fe: 47b0 blx r6 lv_style_set_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 16600: 6824 ldr r4, [r4, #0] 16602: 3460 adds r4, #96 ; 0x60 16604: 2000 movs r0, #0 16606: 4b51 ldr r3, [pc, #324] ; (1674c ) 16608: 4798 blx r3 1660a: 300a adds r0, #10 1660c: 00c0 lsls r0, r0, #3 1660e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16612: f280 811f bge.w 16854 16616: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 16618: 2190 movs r1, #144 ; 0x90 1661a: 4620 mov r0, r4 1661c: 4b4c ldr r3, [pc, #304] ; (16750 ) 1661e: 4798 blx r3 lv_style_set_scale_end_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 16620: 4b47 ldr r3, [pc, #284] ; (16740 ) 16622: 681c ldr r4, [r3, #0] 16624: 3460 adds r4, #96 ; 0x60 16626: 2000 movs r0, #0 16628: 4b48 ldr r3, [pc, #288] ; (1674c ) 1662a: 4798 blx r3 1662c: 300a adds r0, #10 1662e: 00c0 lsls r0, r0, #3 16630: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16634: f280 811b bge.w 1686e 16638: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) 1663a: 21c3 movs r1, #195 ; 0xc3 1663c: 4620 mov r0, r4 1663e: 4b44 ldr r3, [pc, #272] ; (16750 ) 16640: 4798 blx r3 lv_style_set_scale_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(25)); 16642: 4b3f ldr r3, [pc, #252] ; (16740 ) 16644: 681c ldr r4, [r3, #0] 16646: 3460 adds r4, #96 ; 0x60 16648: 2000 movs r0, #0 1664a: 4b40 ldr r3, [pc, #256] ; (1674c ) 1664c: 4798 blx r3 1664e: eb00 0080 add.w r0, r0, r0, lsl #2 16652: eb00 0080 add.w r0, r0, r0, lsl #2 16656: 3050 adds r0, #80 ; 0x50 16658: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1665c: f280 8114 bge.w 16888 16660: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 16662: 21c0 movs r1, #192 ; 0xc0 16664: 4620 mov r0, r4 16666: 4b3a ldr r3, [pc, #232] ; (16750 ) 16668: 4798 blx r3 style_init_reset(&styles->gauge_needle); 1666a: 4c35 ldr r4, [pc, #212] ; (16740 ) 1666c: 6820 ldr r0, [r4, #0] 1666e: 3064 adds r0, #100 ; 0x64 16670: 4b34 ldr r3, [pc, #208] ; (16744 ) 16672: 4798 blx r3 lv_style_set_line_color(&styles->gauge_needle, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE); 16674: 6820 ldr r0, [r4, #0] 16676: 3064 adds r0, #100 ; 0x64 16678: 6a23 ldr r3, [r4, #32] 1667a: f013 0f02 tst.w r3, #2 1667e: f040 8113 bne.w 168a8 16682: 231f movs r3, #31 16684: 213f movs r1, #63 ; 0x3f 16686: 461c mov r4, r3 16688: f04f 0200 mov.w r2, #0 1668c: f364 0204 bfi r2, r4, #0, #5 16690: f361 124a bfi r2, r1, #5, #6 16694: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 16698: 2199 movs r1, #153 ; 0x99 1669a: 4b2b ldr r3, [pc, #172] ; (16748 ) 1669c: 4798 blx r3 lv_style_set_line_width(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(8)); 1669e: 4b28 ldr r3, [pc, #160] ; (16740 ) 166a0: 681c ldr r4, [r3, #0] 166a2: 3464 adds r4, #100 ; 0x64 166a4: 2000 movs r0, #0 166a6: 4b29 ldr r3, [pc, #164] ; (1674c ) 166a8: 4798 blx r3 166aa: 300a adds r0, #10 166ac: 00c0 lsls r0, r0, #3 166ae: f5b0 7fa0 cmp.w r0, #320 ; 0x140 166b2: f280 80fd bge.w 168b0 166b6: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 166b8: 2190 movs r1, #144 ; 0x90 166ba: 4620 mov r0, r4 166bc: 4b24 ldr r3, [pc, #144] ; (16750 ) 166be: 4798 blx r3 lv_style_set_bg_opa(&styles->gauge_needle, LV_STATE_DEFAULT, LV_OPA_COVER); 166c0: 4c1f ldr r4, [pc, #124] ; (16740 ) 166c2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 166c4: 22ff movs r2, #255 ; 0xff 166c6: 212c movs r1, #44 ; 0x2c 166c8: 3064 adds r0, #100 ; 0x64 166ca: 4b22 ldr r3, [pc, #136] ; (16754 ) 166cc: 4798 blx r3 lv_style_set_bg_color(&styles->gauge_needle, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE); 166ce: 6820 ldr r0, [r4, #0] 166d0: 3064 adds r0, #100 ; 0x64 166d2: 6a23 ldr r3, [r4, #32] 166d4: f013 0f02 tst.w r3, #2 166d8: f040 80f7 bne.w 168ca 166dc: 231f movs r3, #31 166de: 213f movs r1, #63 ; 0x3f 166e0: 461c mov r4, r3 166e2: f04f 0200 mov.w r2, #0 166e6: f364 0204 bfi r2, r4, #0, #5 166ea: f361 124a bfi r2, r1, #5, #6 166ee: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 166f2: 2129 movs r1, #41 ; 0x29 166f4: 4b14 ldr r3, [pc, #80] ; (16748 ) 166f6: 4798 blx r3 lv_style_set_radius(&styles->gauge_needle, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 166f8: 4c11 ldr r4, [pc, #68] ; (16740 ) 166fa: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 166fc: f647 72ff movw r2, #32767 ; 0x7fff 16700: 2101 movs r1, #1 16702: 3064 adds r0, #100 ; 0x64 16704: 4b12 ldr r3, [pc, #72] ; (16750 ) 16706: 4798 blx r3 lv_style_set_size(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(30)); 16708: 6824 ldr r4, [r4, #0] 1670a: 3464 adds r4, #100 ; 0x64 1670c: 2000 movs r0, #0 1670e: 4b0f ldr r3, [pc, #60] ; (1674c ) 16710: 4798 blx r3 16712: ebc0 1000 rsb r0, r0, r0, lsl #4 16716: 0040 lsls r0, r0, #1 16718: 3050 adds r0, #80 ; 0x50 1671a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1671e: f280 80d8 bge.w 168d2 16722: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 16724: 2103 movs r1, #3 16726: 4620 mov r0, r4 16728: 4b09 ldr r3, [pc, #36] ; (16750 ) 1672a: 4798 blx r3 lv_style_set_pad_inner(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(10)); 1672c: 4b04 ldr r3, [pc, #16] ; (16740 ) 1672e: 681c ldr r4, [r3, #0] 16730: 3464 adds r4, #100 ; 0x64 16732: 2000 movs r0, #0 16734: 4b05 ldr r3, [pc, #20] ; (1674c ) 16736: 4798 blx r3 16738: eb00 0080 add.w r0, r0, r0, lsl #2 1673c: e00c b.n 16758 1673e: bf00 nop 16740: 20006bd8 .word 0x20006bd8 16744: 00014a49 .word 0x00014a49 16748: 00006a0d .word 0x00006a0d 1674c: 00010f25 .word 0x00010f25 16750: 000068c9 .word 0x000068c9 16754: 00006b51 .word 0x00006b51 16758: 0040 lsls r0, r0, #1 1675a: 3050 adds r0, #80 ; 0x50 1675c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16760: f280 80c6 bge.w 168f0 16764: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 16766: 2114 movs r1, #20 16768: 4620 mov r0, r4 1676a: 4b69 ldr r3, [pc, #420] ; (16910 ) 1676c: 4798 blx r3 1676e: bdf8 pop {r3, r4, r5, r6, r7, pc} lv_style_set_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(5)); 16770: 2000 movs r0, #0 16772: 4b68 ldr r3, [pc, #416] ; (16914 ) 16774: 4798 blx r3 16776: eb00 0080 add.w r0, r0, r0, lsl #2 1677a: 3050 adds r0, #80 ; 0x50 1677c: 4b66 ldr r3, [pc, #408] ; (16918 ) 1677e: fb83 2300 smull r2, r3, r3, r0 16782: 17c2 asrs r2, r0, #31 16784: ebc2 12a3 rsb r2, r2, r3, asr #6 16788: b212 sxth r2, r2 1678a: e68a b.n 164a2 lv_style_set_scale_end_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(4)); 1678c: 2000 movs r0, #0 1678e: 4b61 ldr r3, [pc, #388] ; (16914 ) 16790: 4798 blx r3 16792: 3014 adds r0, #20 16794: 0080 lsls r0, r0, #2 16796: 4b60 ldr r3, [pc, #384] ; (16918 ) 16798: fb83 2300 smull r2, r3, r3, r0 1679c: 17c2 asrs r2, r0, #31 1679e: ebc2 12a3 rsb r2, r2, r3, asr #6 167a2: b212 sxth r2, r2 167a4: e68e b.n 164c4 lv_style_set_scale_end_border_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(8)); 167a6: 2000 movs r0, #0 167a8: 4b5a ldr r3, [pc, #360] ; (16914 ) 167aa: 4798 blx r3 167ac: 300a adds r0, #10 167ae: 00c0 lsls r0, r0, #3 167b0: 4b59 ldr r3, [pc, #356] ; (16918 ) 167b2: fb83 2300 smull r2, r3, r3, r0 167b6: 17c2 asrs r2, r0, #31 167b8: ebc2 12a3 rsb r2, r2, r3, asr #6 167bc: b212 sxth r2, r2 167be: e692 b.n 164e6 lv_style_set_pad_left(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 167c0: 2000 movs r0, #0 167c2: 4b54 ldr r3, [pc, #336] ; (16914 ) 167c4: 4798 blx r3 167c6: eb00 0080 add.w r0, r0, r0, lsl #2 167ca: 0080 lsls r0, r0, #2 167cc: 3050 adds r0, #80 ; 0x50 167ce: 4b52 ldr r3, [pc, #328] ; (16918 ) 167d0: fb83 2300 smull r2, r3, r3, r0 167d4: 17c2 asrs r2, r0, #31 167d6: ebc2 12a3 rsb r2, r2, r3, asr #6 167da: b212 sxth r2, r2 167dc: e696 b.n 1650c lv_style_set_pad_right(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 167de: 2000 movs r0, #0 167e0: 4b4c ldr r3, [pc, #304] ; (16914 ) 167e2: 4798 blx r3 167e4: eb00 0080 add.w r0, r0, r0, lsl #2 167e8: 0080 lsls r0, r0, #2 167ea: 3050 adds r0, #80 ; 0x50 167ec: 4b4a ldr r3, [pc, #296] ; (16918 ) 167ee: fb83 2300 smull r2, r3, r3, r0 167f2: 17c2 asrs r2, r0, #31 167f4: ebc2 12a3 rsb r2, r2, r3, asr #6 167f8: b212 sxth r2, r2 167fa: e69a b.n 16532 lv_style_set_pad_top(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 167fc: 2000 movs r0, #0 167fe: 4b45 ldr r3, [pc, #276] ; (16914 ) 16800: 4798 blx r3 16802: eb00 0080 add.w r0, r0, r0, lsl #2 16806: 0080 lsls r0, r0, #2 16808: 3050 adds r0, #80 ; 0x50 1680a: 4b43 ldr r3, [pc, #268] ; (16918 ) 1680c: fb83 2300 smull r2, r3, r3, r0 16810: 17c2 asrs r2, r0, #31 16812: ebc2 12a3 rsb r2, r2, r3, asr #6 16816: b212 sxth r2, r2 16818: e69e b.n 16558 lv_style_set_pad_inner(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 1681a: 2000 movs r0, #0 1681c: 4b3d ldr r3, [pc, #244] ; (16914 ) 1681e: 4798 blx r3 16820: eb00 0080 add.w r0, r0, r0, lsl #2 16824: 0080 lsls r0, r0, #2 16826: 3050 adds r0, #80 ; 0x50 16828: 4b3b ldr r3, [pc, #236] ; (16918 ) 1682a: fb83 2300 smull r2, r3, r3, r0 1682e: 17c2 asrs r2, r0, #31 16830: ebc2 12a3 rsb r2, r2, r3, asr #6 16834: b212 sxth r2, r2 16836: e6a2 b.n 1657e lv_style_set_scale_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(15)); 16838: 2000 movs r0, #0 1683a: 4b36 ldr r3, [pc, #216] ; (16914 ) 1683c: 4798 blx r3 1683e: ebc0 1000 rsb r0, r0, r0, lsl #4 16842: 3050 adds r0, #80 ; 0x50 16844: 4b34 ldr r3, [pc, #208] ; (16918 ) 16846: fb83 2300 smull r2, r3, r3, r0 1684a: 17c2 asrs r2, r0, #31 1684c: ebc2 12a3 rsb r2, r2, r3, asr #6 16850: b212 sxth r2, r2 16852: e6a6 b.n 165a2 lv_style_set_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 16854: 2000 movs r0, #0 16856: 4b2f ldr r3, [pc, #188] ; (16914 ) 16858: 4798 blx r3 1685a: 300a adds r0, #10 1685c: 00c0 lsls r0, r0, #3 1685e: 4b2e ldr r3, [pc, #184] ; (16918 ) 16860: fb83 2300 smull r2, r3, r3, r0 16864: 17c2 asrs r2, r0, #31 16866: ebc2 12a3 rsb r2, r2, r3, asr #6 1686a: b212 sxth r2, r2 1686c: e6d4 b.n 16618 lv_style_set_scale_end_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 1686e: 2000 movs r0, #0 16870: 4b28 ldr r3, [pc, #160] ; (16914 ) 16872: 4798 blx r3 16874: 300a adds r0, #10 16876: 00c0 lsls r0, r0, #3 16878: 4b27 ldr r3, [pc, #156] ; (16918 ) 1687a: fb83 2300 smull r2, r3, r3, r0 1687e: 17c2 asrs r2, r0, #31 16880: ebc2 12a3 rsb r2, r2, r3, asr #6 16884: b212 sxth r2, r2 16886: e6d8 b.n 1663a lv_style_set_scale_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(25)); 16888: 2000 movs r0, #0 1688a: 4b22 ldr r3, [pc, #136] ; (16914 ) 1688c: 4798 blx r3 1688e: eb00 0080 add.w r0, r0, r0, lsl #2 16892: eb00 0080 add.w r0, r0, r0, lsl #2 16896: 3050 adds r0, #80 ; 0x50 16898: 4b1f ldr r3, [pc, #124] ; (16918 ) 1689a: fb83 2300 smull r2, r3, r3, r0 1689e: 17c2 asrs r2, r0, #31 168a0: ebc2 12a3 rsb r2, r2, r3, asr #6 168a4: b212 sxth r2, r2 168a6: e6dc b.n 16662 168a8: 2308 movs r3, #8 168aa: 2112 movs r1, #18 168ac: 240b movs r4, #11 168ae: e6eb b.n 16688 lv_style_set_line_width(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(8)); 168b0: 2000 movs r0, #0 168b2: 4b18 ldr r3, [pc, #96] ; (16914 ) 168b4: 4798 blx r3 168b6: 300a adds r0, #10 168b8: 00c0 lsls r0, r0, #3 168ba: 4b17 ldr r3, [pc, #92] ; (16918 ) 168bc: fb83 2300 smull r2, r3, r3, r0 168c0: 17c2 asrs r2, r0, #31 168c2: ebc2 12a3 rsb r2, r2, r3, asr #6 168c6: b212 sxth r2, r2 168c8: e6f6 b.n 166b8 168ca: 2308 movs r3, #8 168cc: 2112 movs r1, #18 168ce: 240b movs r4, #11 168d0: e707 b.n 166e2 lv_style_set_size(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(30)); 168d2: 2000 movs r0, #0 168d4: 4b0f ldr r3, [pc, #60] ; (16914 ) 168d6: 4798 blx r3 168d8: ebc0 1000 rsb r0, r0, r0, lsl #4 168dc: 0040 lsls r0, r0, #1 168de: 3050 adds r0, #80 ; 0x50 168e0: 4b0d ldr r3, [pc, #52] ; (16918 ) 168e2: fb83 2300 smull r2, r3, r3, r0 168e6: 17c2 asrs r2, r0, #31 168e8: ebc2 12a3 rsb r2, r2, r3, asr #6 168ec: b212 sxth r2, r2 168ee: e719 b.n 16724 lv_style_set_pad_inner(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(10)); 168f0: 2000 movs r0, #0 168f2: 4b08 ldr r3, [pc, #32] ; (16914 ) 168f4: 4798 blx r3 168f6: eb00 0080 add.w r0, r0, r0, lsl #2 168fa: 0040 lsls r0, r0, #1 168fc: 3050 adds r0, #80 ; 0x50 168fe: 4b06 ldr r3, [pc, #24] ; (16918 ) 16900: fb83 2300 smull r2, r3, r3, r0 16904: 17c2 asrs r2, r0, #31 16906: ebc2 12a3 rsb r2, r2, r3, asr #6 1690a: b212 sxth r2, r2 1690c: e72b b.n 16766 1690e: bf00 nop 16910: 000068c9 .word 0x000068c9 16914: 00010f25 .word 0x00010f25 16918: 66666667 .word 0x66666667 0001691c : { 1691c: b538 push {r3, r4, r5, lr} style_init_reset(&styles->arc_indic); 1691e: 4c3d ldr r4, [pc, #244] ; (16a14 ) 16920: 6820 ldr r0, [r4, #0] 16922: 301c adds r0, #28 16924: 4b3c ldr r3, [pc, #240] ; (16a18 ) 16926: 4798 blx r3 lv_style_set_line_color(&styles->arc_indic, LV_STATE_DEFAULT, theme.color_primary); 16928: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 1692a: 89a2 ldrh r2, [r4, #12] 1692c: 2199 movs r1, #153 ; 0x99 1692e: 301c adds r0, #28 16930: 4b3a ldr r3, [pc, #232] ; (16a1c ) 16932: 4798 blx r3 lv_style_set_line_width(&styles->arc_indic, LV_STATE_DEFAULT, LV_DPX(25)); 16934: 6824 ldr r4, [r4, #0] 16936: 341c adds r4, #28 16938: 2000 movs r0, #0 1693a: 4b39 ldr r3, [pc, #228] ; (16a20 ) 1693c: 4798 blx r3 1693e: eb00 0080 add.w r0, r0, r0, lsl #2 16942: eb00 0080 add.w r0, r0, r0, lsl #2 16946: 3050 adds r0, #80 ; 0x50 16948: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1694c: da41 bge.n 169d2 1694e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 16950: 2190 movs r1, #144 ; 0x90 16952: 4620 mov r0, r4 16954: 4d33 ldr r5, [pc, #204] ; (16a24 ) 16956: 47a8 blx r5 lv_style_set_line_rounded(&styles->arc_indic, LV_STATE_DEFAULT, true); 16958: 4c2e ldr r4, [pc, #184] ; (16a14 ) 1695a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_ROUNDED, line_rounded, bool, _int, scalar) 1695c: 2201 movs r2, #1 1695e: 2194 movs r1, #148 ; 0x94 16960: 301c adds r0, #28 16962: 47a8 blx r5 style_init_reset(&styles->arc_bg); 16964: 6820 ldr r0, [r4, #0] 16966: 3020 adds r0, #32 16968: 4b2b ldr r3, [pc, #172] ; (16a18 ) 1696a: 4798 blx r3 lv_style_set_line_color(&styles->arc_bg, LV_STATE_DEFAULT, COLOR_BG_SEC); 1696c: 6820 ldr r0, [r4, #0] 1696e: 6a23 ldr r3, [r4, #32] 16970: f013 0302 ands.w r3, r3, #2 16974: bf14 ite ne 16976: 211a movne r1, #26 16978: 2108 moveq r1, #8 1697a: 2b00 cmp r3, #0 1697c: bf15 itete ne 1697e: 2435 movne r4, #53 ; 0x35 16980: 2412 moveq r4, #18 16982: 231b movne r3, #27 16984: 2309 moveq r3, #9 16986: f04f 0200 mov.w r2, #0 1698a: f363 0204 bfi r2, r3, #0, #5 1698e: f364 124a bfi r2, r4, #5, #6 16992: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 16996: 2199 movs r1, #153 ; 0x99 16998: 3020 adds r0, #32 1699a: 4b20 ldr r3, [pc, #128] ; (16a1c ) 1699c: 4798 blx r3 lv_style_set_line_width(&styles->arc_bg, LV_STATE_DEFAULT, LV_DPX(25)); 1699e: 4b1d ldr r3, [pc, #116] ; (16a14 ) 169a0: 681c ldr r4, [r3, #0] 169a2: 3420 adds r4, #32 169a4: 2000 movs r0, #0 169a6: 4b1e ldr r3, [pc, #120] ; (16a20 ) 169a8: 4798 blx r3 169aa: eb00 0080 add.w r0, r0, r0, lsl #2 169ae: eb00 0080 add.w r0, r0, r0, lsl #2 169b2: 3050 adds r0, #80 ; 0x50 169b4: f5b0 7fa0 cmp.w r0, #320 ; 0x140 169b8: da1b bge.n 169f2 169ba: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 169bc: 2190 movs r1, #144 ; 0x90 169be: 4620 mov r0, r4 169c0: 4c18 ldr r4, [pc, #96] ; (16a24 ) 169c2: 47a0 blx r4 lv_style_set_line_rounded(&styles->arc_bg, LV_STATE_DEFAULT, true); 169c4: 4b13 ldr r3, [pc, #76] ; (16a14 ) 169c6: 6818 ldr r0, [r3, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_ROUNDED, line_rounded, bool, _int, scalar) 169c8: 2201 movs r2, #1 169ca: 2194 movs r1, #148 ; 0x94 169cc: 3020 adds r0, #32 169ce: 47a0 blx r4 169d0: bd38 pop {r3, r4, r5, pc} lv_style_set_line_width(&styles->arc_indic, LV_STATE_DEFAULT, LV_DPX(25)); 169d2: 2000 movs r0, #0 169d4: 4b12 ldr r3, [pc, #72] ; (16a20 ) 169d6: 4798 blx r3 169d8: eb00 0080 add.w r0, r0, r0, lsl #2 169dc: eb00 0080 add.w r0, r0, r0, lsl #2 169e0: 3050 adds r0, #80 ; 0x50 169e2: 4b11 ldr r3, [pc, #68] ; (16a28 ) 169e4: fb83 2300 smull r2, r3, r3, r0 169e8: 17c2 asrs r2, r0, #31 169ea: ebc2 12a3 rsb r2, r2, r3, asr #6 169ee: b212 sxth r2, r2 169f0: e7ae b.n 16950 lv_style_set_line_width(&styles->arc_bg, LV_STATE_DEFAULT, LV_DPX(25)); 169f2: 2000 movs r0, #0 169f4: 4b0a ldr r3, [pc, #40] ; (16a20 ) 169f6: 4798 blx r3 169f8: eb00 0080 add.w r0, r0, r0, lsl #2 169fc: eb00 0080 add.w r0, r0, r0, lsl #2 16a00: 3050 adds r0, #80 ; 0x50 16a02: 4b09 ldr r3, [pc, #36] ; (16a28 ) 16a04: fb83 2300 smull r2, r3, r3, r0 16a08: 17c2 asrs r2, r0, #31 16a0a: ebc2 12a3 rsb r2, r2, r3, asr #6 16a0e: b212 sxth r2, r2 16a10: e7d4 b.n 169bc 16a12: bf00 nop 16a14: 20006bd8 .word 0x20006bd8 16a18: 00014a49 .word 0x00014a49 16a1c: 00006a0d .word 0x00006a0d 16a20: 00010f25 .word 0x00010f25 16a24: 000068c9 .word 0x000068c9 16a28: 66666667 .word 0x66666667 00016a2c : { 16a2c: b5f8 push {r3, r4, r5, r6, r7, lr} style_init_reset(&styles->led); 16a2e: 4c38 ldr r4, [pc, #224] ; (16b10 ) 16a30: 6820 ldr r0, [r4, #0] 16a32: 306c adds r0, #108 ; 0x6c 16a34: 4b37 ldr r3, [pc, #220] ; (16b14 ) 16a36: 4798 blx r3 lv_style_set_bg_opa(&styles->led, LV_STATE_DEFAULT, LV_OPA_COVER); 16a38: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 16a3a: 22ff movs r2, #255 ; 0xff 16a3c: 212c movs r1, #44 ; 0x2c 16a3e: 306c adds r0, #108 ; 0x6c 16a40: 4d35 ldr r5, [pc, #212] ; (16b18 ) 16a42: 47a8 blx r5 lv_style_set_bg_color(&styles->led, LV_STATE_DEFAULT, theme.color_primary); 16a44: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 16a46: 89a2 ldrh r2, [r4, #12] 16a48: 2129 movs r1, #41 ; 0x29 16a4a: 306c adds r0, #108 ; 0x6c 16a4c: 4f33 ldr r7, [pc, #204] ; (16b1c ) 16a4e: 47b8 blx r7 lv_style_set_border_width(&styles->led, LV_STATE_DEFAULT, 2); 16a50: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 16a52: 2202 movs r2, #2 16a54: 2130 movs r1, #48 ; 0x30 16a56: 306c adds r0, #108 ; 0x6c 16a58: 4e31 ldr r6, [pc, #196] ; (16b20 ) 16a5a: 47b0 blx r6 lv_style_set_border_opa(&styles->led, LV_STATE_DEFAULT, LV_OPA_50); 16a5c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar) 16a5e: 227f movs r2, #127 ; 0x7f 16a60: 213c movs r1, #60 ; 0x3c 16a62: 306c adds r0, #108 ; 0x6c 16a64: 47a8 blx r5 lv_style_set_border_color(&styles->led, LV_STATE_DEFAULT, lv_color_lighten(theme.color_primary, LV_OPA_30)); 16a66: 6825 ldr r5, [r4, #0] 16a68: 356c adds r5, #108 ; 0x6c 16a6a: 214c movs r1, #76 ; 0x4c 16a6c: 89a0 ldrh r0, [r4, #12] 16a6e: 4b2d ldr r3, [pc, #180] ; (16b24 ) 16a70: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 16a72: 4602 mov r2, r0 16a74: 2139 movs r1, #57 ; 0x39 16a76: 4628 mov r0, r5 16a78: 47b8 blx r7 lv_style_set_radius(&styles->led, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 16a7a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 16a7c: f647 72ff movw r2, #32767 ; 0x7fff 16a80: 2101 movs r1, #1 16a82: 306c adds r0, #108 ; 0x6c 16a84: 47b0 blx r6 lv_style_set_shadow_width(&styles->led, LV_STATE_DEFAULT, LV_DPX(15)); 16a86: 6824 ldr r4, [r4, #0] 16a88: 346c adds r4, #108 ; 0x6c 16a8a: 2000 movs r0, #0 16a8c: 4b26 ldr r3, [pc, #152] ; (16b28 ) 16a8e: 4798 blx r3 16a90: ebc0 1000 rsb r0, r0, r0, lsl #4 16a94: 3050 adds r0, #80 ; 0x50 16a96: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16a9a: da1c bge.n 16ad6 16a9c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 16a9e: 2150 movs r1, #80 ; 0x50 16aa0: 4620 mov r0, r4 16aa2: 4b1f ldr r3, [pc, #124] ; (16b20 ) 16aa4: 4798 blx r3 lv_style_set_shadow_color(&styles->led, LV_STATE_DEFAULT, theme.color_primary); 16aa6: 4c1a ldr r4, [pc, #104] ; (16b10 ) 16aa8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar) 16aaa: 89a2 ldrh r2, [r4, #12] 16aac: 2159 movs r1, #89 ; 0x59 16aae: 306c adds r0, #108 ; 0x6c 16ab0: 4b1a ldr r3, [pc, #104] ; (16b1c ) 16ab2: 4798 blx r3 lv_style_set_shadow_spread(&styles->led, LV_STATE_DEFAULT, LV_DPX(5)); 16ab4: 6824 ldr r4, [r4, #0] 16ab6: 346c adds r4, #108 ; 0x6c 16ab8: 2000 movs r0, #0 16aba: 4b1b ldr r3, [pc, #108] ; (16b28 ) 16abc: 4798 blx r3 16abe: eb00 0080 add.w r0, r0, r0, lsl #2 16ac2: 3050 adds r0, #80 ; 0x50 16ac4: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16ac8: da13 bge.n 16af2 16aca: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar) 16acc: 2153 movs r1, #83 ; 0x53 16ace: 4620 mov r0, r4 16ad0: 4b13 ldr r3, [pc, #76] ; (16b20 ) 16ad2: 4798 blx r3 16ad4: bdf8 pop {r3, r4, r5, r6, r7, pc} lv_style_set_shadow_width(&styles->led, LV_STATE_DEFAULT, LV_DPX(15)); 16ad6: 2000 movs r0, #0 16ad8: 4b13 ldr r3, [pc, #76] ; (16b28 ) 16ada: 4798 blx r3 16adc: ebc0 1000 rsb r0, r0, r0, lsl #4 16ae0: 3050 adds r0, #80 ; 0x50 16ae2: 4b12 ldr r3, [pc, #72] ; (16b2c ) 16ae4: fb83 2300 smull r2, r3, r3, r0 16ae8: 17c2 asrs r2, r0, #31 16aea: ebc2 12a3 rsb r2, r2, r3, asr #6 16aee: b212 sxth r2, r2 16af0: e7d5 b.n 16a9e lv_style_set_shadow_spread(&styles->led, LV_STATE_DEFAULT, LV_DPX(5)); 16af2: 2000 movs r0, #0 16af4: 4b0c ldr r3, [pc, #48] ; (16b28 ) 16af6: 4798 blx r3 16af8: eb00 0080 add.w r0, r0, r0, lsl #2 16afc: 3050 adds r0, #80 ; 0x50 16afe: 4b0b ldr r3, [pc, #44] ; (16b2c ) 16b00: fb83 2300 smull r2, r3, r3, r0 16b04: 17c2 asrs r2, r0, #31 16b06: ebc2 12a3 rsb r2, r2, r3, asr #6 16b0a: b212 sxth r2, r2 16b0c: e7de b.n 16acc 16b0e: bf00 nop 16b10: 20006bd8 .word 0x20006bd8 16b14: 00014a49 .word 0x00014a49 16b18: 00006b51 .word 0x00006b51 16b1c: 00006a0d .word 0x00006a0d 16b20: 000068c9 .word 0x000068c9 16b24: 00011b8f .word 0x00011b8f 16b28: 00010f25 .word 0x00010f25 16b2c: 66666667 .word 0x66666667 00016b30 : { 16b30: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 16b34: 4680 mov r8, r0 16b36: 460f mov r7, r1 16b38: 4615 mov r5, r2 16b3a: 461e mov r6, r3 if(!inited) { 16b3c: 4bb2 ldr r3, [pc, #712] ; (16e08 ) 16b3e: 791b ldrb r3, [r3, #4] 16b40: 2b00 cmp r3, #0 16b42: f001 8369 beq.w 18218 theme.color_primary = color_primary; 16b46: 4cb0 ldr r4, [pc, #704] ; (16e08 ) 16b48: f8a4 800c strh.w r8, [r4, #12] theme.color_secondary = color_secondary; 16b4c: 81e7 strh r7, [r4, #14] theme.font_small = font_small; 16b4e: 6126 str r6, [r4, #16] theme.font_normal = font_normal; 16b50: 9b06 ldr r3, [sp, #24] 16b52: 6163 str r3, [r4, #20] theme.font_subtitle = font_subtitle; 16b54: 9b07 ldr r3, [sp, #28] 16b56: 61a3 str r3, [r4, #24] theme.font_title = font_title; 16b58: 9b08 ldr r3, [sp, #32] 16b5a: 61e3 str r3, [r4, #28] theme.flags = flags; 16b5c: 6225 str r5, [r4, #32] basic_init(); 16b5e: 4bab ldr r3, [pc, #684] ; (16e0c ) 16b60: 4798 blx r3 bar_init(); 16b62: 4bab ldr r3, [pc, #684] ; (16e10 ) 16b64: 4798 blx r3 led_init(); 16b66: 4bab ldr r3, [pc, #684] ; (16e14 ) 16b68: 4798 blx r3 slider_init(); 16b6a: 4bab ldr r3, [pc, #684] ; (16e18 ) 16b6c: 4798 blx r3 switch_init(); 16b6e: 4bab ldr r3, [pc, #684] ; (16e1c ) 16b70: 4798 blx r3 linemeter_init(); 16b72: 4bab ldr r3, [pc, #684] ; (16e20 ) 16b74: 4798 blx r3 gauge_init(); 16b76: 4bab ldr r3, [pc, #684] ; (16e24 ) 16b78: 4798 blx r3 arc_init(); 16b7a: 4bab ldr r3, [pc, #684] ; (16e28 ) 16b7c: 4798 blx r3 style_init_reset(&styles->chart_bg); 16b7e: 6820 ldr r0, [r4, #0] 16b80: 3040 adds r0, #64 ; 0x40 16b82: 4baa ldr r3, [pc, #680] ; (16e2c ) 16b84: 4798 blx r3 lv_style_set_text_color(&styles->chart_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 16b86: 6820 ldr r0, [r4, #0] 16b88: 3040 adds r0, #64 ; 0x40 16b8a: 6a23 ldr r3, [r4, #32] 16b8c: f013 0f02 tst.w r3, #2 16b90: f041 834b bne.w 1822a 16b94: 2314 movs r3, #20 16b96: 212b movs r1, #43 ; 0x2b 16b98: 2417 movs r4, #23 16b9a: f04f 0200 mov.w r2, #0 16b9e: f364 0204 bfi r2, r4, #0, #5 16ba2: f361 124a bfi r2, r1, #5, #6 16ba6: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 16baa: f248 0189 movw r1, #32905 ; 0x8089 16bae: 4ba0 ldr r3, [pc, #640] ; (16e30 ) 16bb0: 4798 blx r3 style_init_reset(&styles->chart_series_bg); 16bb2: 4c95 ldr r4, [pc, #596] ; (16e08 ) 16bb4: 6820 ldr r0, [r4, #0] 16bb6: 3044 adds r0, #68 ; 0x44 16bb8: 4b9c ldr r3, [pc, #624] ; (16e2c ) 16bba: 4798 blx r3 lv_style_set_line_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(1)); 16bbc: 6824 ldr r4, [r4, #0] 16bbe: 3444 adds r4, #68 ; 0x44 16bc0: 2000 movs r0, #0 16bc2: 4b9c ldr r3, [pc, #624] ; (16e34 ) 16bc4: 4798 blx r3 16bc6: 3050 adds r0, #80 ; 0x50 16bc8: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16bcc: f281 8332 bge.w 18234 16bd0: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 16bd2: 2190 movs r1, #144 ; 0x90 16bd4: 4620 mov r0, r4 16bd6: 4b98 ldr r3, [pc, #608] ; (16e38 ) 16bd8: 4798 blx r3 lv_style_set_line_dash_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 16bda: 4b8b ldr r3, [pc, #556] ; (16e08 ) 16bdc: 681c ldr r4, [r3, #0] 16bde: 3444 adds r4, #68 ; 0x44 16be0: 2000 movs r0, #0 16be2: 4b94 ldr r3, [pc, #592] ; (16e34 ) 16be4: 4798 blx r3 16be6: eb00 0080 add.w r0, r0, r0, lsl #2 16bea: 0040 lsls r0, r0, #1 16bec: 3050 adds r0, #80 ; 0x50 16bee: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16bf2: f281 832c bge.w 1824e 16bf6: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_DASH_WIDTH, line_dash_width, lv_style_int_t, _int, scalar) 16bf8: 2192 movs r1, #146 ; 0x92 16bfa: 4620 mov r0, r4 16bfc: 4b8e ldr r3, [pc, #568] ; (16e38 ) 16bfe: 4798 blx r3 lv_style_set_line_dash_gap(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 16c00: 4b81 ldr r3, [pc, #516] ; (16e08 ) 16c02: 681c ldr r4, [r3, #0] 16c04: 3444 adds r4, #68 ; 0x44 16c06: 2000 movs r0, #0 16c08: 4b8a ldr r3, [pc, #552] ; (16e34 ) 16c0a: 4798 blx r3 16c0c: eb00 0080 add.w r0, r0, r0, lsl #2 16c10: 0040 lsls r0, r0, #1 16c12: 3050 adds r0, #80 ; 0x50 16c14: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16c18: f281 8329 bge.w 1826e 16c1c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_DASH_GAP, line_dash_gap, lv_style_int_t, _int, scalar) 16c1e: 2193 movs r1, #147 ; 0x93 16c20: 4620 mov r0, r4 16c22: 4b85 ldr r3, [pc, #532] ; (16e38 ) 16c24: 4798 blx r3 lv_style_set_line_color(&styles->chart_series_bg, LV_STATE_DEFAULT, COLOR_BG_BORDER); 16c26: 4b78 ldr r3, [pc, #480] ; (16e08 ) 16c28: 6818 ldr r0, [r3, #0] 16c2a: 6a1b ldr r3, [r3, #32] 16c2c: f013 0302 ands.w r3, r3, #2 16c30: bf14 ite ne 16c32: 211a movne r1, #26 16c34: 2110 moveq r1, #16 16c36: 2b00 cmp r3, #0 16c38: bf15 itete ne 16c3a: 2437 movne r4, #55 ; 0x37 16c3c: 2422 moveq r4, #34 ; 0x22 16c3e: 231c movne r3, #28 16c40: 2312 moveq r3, #18 16c42: f04f 0200 mov.w r2, #0 16c46: f363 0204 bfi r2, r3, #0, #5 16c4a: f364 124a bfi r2, r4, #5, #6 16c4e: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 16c52: 2199 movs r1, #153 ; 0x99 16c54: 3044 adds r0, #68 ; 0x44 16c56: 4b76 ldr r3, [pc, #472] ; (16e30 ) 16c58: 4798 blx r3 style_init_reset(&styles->chart_series); 16c5a: 4c6b ldr r4, [pc, #428] ; (16e08 ) 16c5c: 6820 ldr r0, [r4, #0] 16c5e: 3048 adds r0, #72 ; 0x48 16c60: 4b72 ldr r3, [pc, #456] ; (16e2c ) 16c62: 4798 blx r3 lv_style_set_line_width(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(3)); 16c64: 6824 ldr r4, [r4, #0] 16c66: 3448 adds r4, #72 ; 0x48 16c68: 2000 movs r0, #0 16c6a: 4b72 ldr r3, [pc, #456] ; (16e34 ) 16c6c: 4798 blx r3 16c6e: eb00 0040 add.w r0, r0, r0, lsl #1 16c72: 3050 adds r0, #80 ; 0x50 16c74: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16c78: f281 8309 bge.w 1828e 16c7c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 16c7e: 2190 movs r1, #144 ; 0x90 16c80: 4620 mov r0, r4 16c82: 4b6d ldr r3, [pc, #436] ; (16e38 ) 16c84: 4798 blx r3 lv_style_set_size(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(4)); 16c86: 4b60 ldr r3, [pc, #384] ; (16e08 ) 16c88: 681c ldr r4, [r3, #0] 16c8a: 3448 adds r4, #72 ; 0x48 16c8c: 2000 movs r0, #0 16c8e: 4b69 ldr r3, [pc, #420] ; (16e34 ) 16c90: 4798 blx r3 16c92: 3014 adds r0, #20 16c94: 0080 lsls r0, r0, #2 16c96: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16c9a: f281 8307 bge.w 182ac 16c9e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 16ca0: 2103 movs r1, #3 16ca2: 4620 mov r0, r4 16ca4: 4b64 ldr r3, [pc, #400] ; (16e38 ) 16ca6: 4798 blx r3 lv_style_set_pad_inner(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(2)); /*Space between columns*/ 16ca8: 4b57 ldr r3, [pc, #348] ; (16e08 ) 16caa: 681c ldr r4, [r3, #0] 16cac: 3448 adds r4, #72 ; 0x48 16cae: 2000 movs r0, #0 16cb0: 4b60 ldr r3, [pc, #384] ; (16e34 ) 16cb2: 4798 blx r3 16cb4: 3028 adds r0, #40 ; 0x28 16cb6: 0040 lsls r0, r0, #1 16cb8: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16cbc: f281 8304 bge.w 182c8 16cc0: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 16cc2: 2114 movs r1, #20 16cc4: 4620 mov r0, r4 16cc6: 4b5c ldr r3, [pc, #368] ; (16e38 ) 16cc8: 4798 blx r3 lv_style_set_radius(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(1)); 16cca: 4b4f ldr r3, [pc, #316] ; (16e08 ) 16ccc: 681c ldr r4, [r3, #0] 16cce: 3448 adds r4, #72 ; 0x48 16cd0: 2000 movs r0, #0 16cd2: 4b58 ldr r3, [pc, #352] ; (16e34 ) 16cd4: 4798 blx r3 16cd6: 3050 adds r0, #80 ; 0x50 16cd8: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16cdc: f281 8302 bge.w 182e4 16ce0: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 16ce2: 2101 movs r1, #1 16ce4: 4620 mov r0, r4 16ce6: 4b54 ldr r3, [pc, #336] ; (16e38 ) 16ce8: 4798 blx r3 style_init_reset(&styles->calendar_header); 16cea: 4c47 ldr r4, [pc, #284] ; (16e08 ) 16cec: 6820 ldr r0, [r4, #0] 16cee: 3030 adds r0, #48 ; 0x30 16cf0: 4b4e ldr r3, [pc, #312] ; (16e2c ) 16cf2: 4798 blx r3 lv_style_set_pad_top(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 16cf4: 6824 ldr r4, [r4, #0] 16cf6: 3430 adds r4, #48 ; 0x30 16cf8: 2000 movs r0, #0 16cfa: 4b50 ldr r3, [pc, #320] ; (16e3c ) 16cfc: 4798 blx r3 16cfe: 2801 cmp r0, #1 16d00: f241 82fd bls.w 182fe 16d04: 2000 movs r0, #0 16d06: 4b4b ldr r3, [pc, #300] ; (16e34 ) 16d08: 4798 blx r3 16d0a: ebc0 1000 rsb r0, r0, r0, lsl #4 16d0e: 0040 lsls r0, r0, #1 16d10: 3050 adds r0, #80 ; 0x50 16d12: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16d16: f281 830d bge.w 18334 16d1a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 16d1c: 2110 movs r1, #16 16d1e: 4620 mov r0, r4 16d20: 4b45 ldr r3, [pc, #276] ; (16e38 ) 16d22: 4798 blx r3 lv_style_set_pad_left(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 16d24: 4b38 ldr r3, [pc, #224] ; (16e08 ) 16d26: 681c ldr r4, [r3, #0] 16d28: 3430 adds r4, #48 ; 0x30 16d2a: 2000 movs r0, #0 16d2c: 4b43 ldr r3, [pc, #268] ; (16e3c ) 16d2e: 4798 blx r3 16d30: 2801 cmp r0, #1 16d32: f241 830f bls.w 18354 16d36: 2000 movs r0, #0 16d38: 4b3e ldr r3, [pc, #248] ; (16e34 ) 16d3a: 4798 blx r3 16d3c: ebc0 1000 rsb r0, r0, r0, lsl #4 16d40: 0040 lsls r0, r0, #1 16d42: 3050 adds r0, #80 ; 0x50 16d44: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16d48: f281 8336 bge.w 183b8 16d4c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 16d4e: 2112 movs r1, #18 16d50: 4620 mov r0, r4 16d52: 4b39 ldr r3, [pc, #228] ; (16e38 ) 16d54: 4798 blx r3 lv_style_set_pad_right(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 16d56: 4b2c ldr r3, [pc, #176] ; (16e08 ) 16d58: 681c ldr r4, [r3, #0] 16d5a: 3430 adds r4, #48 ; 0x30 16d5c: 2000 movs r0, #0 16d5e: 4b37 ldr r3, [pc, #220] ; (16e3c ) 16d60: 4798 blx r3 16d62: 2801 cmp r0, #1 16d64: f241 8338 bls.w 183d8 16d68: 2000 movs r0, #0 16d6a: 4b32 ldr r3, [pc, #200] ; (16e34 ) 16d6c: 4798 blx r3 16d6e: ebc0 1000 rsb r0, r0, r0, lsl #4 16d72: 0040 lsls r0, r0, #1 16d74: 3050 adds r0, #80 ; 0x50 16d76: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16d7a: f281 8348 bge.w 1840e 16d7e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 16d80: 2113 movs r1, #19 16d82: 4620 mov r0, r4 16d84: 4b2c ldr r3, [pc, #176] ; (16e38 ) 16d86: 4798 blx r3 lv_style_set_pad_bottom(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 16d88: 4b1f ldr r3, [pc, #124] ; (16e08 ) 16d8a: 681c ldr r4, [r3, #0] 16d8c: 3430 adds r4, #48 ; 0x30 16d8e: 2000 movs r0, #0 16d90: 4b2a ldr r3, [pc, #168] ; (16e3c ) 16d92: 4798 blx r3 16d94: 2801 cmp r0, #1 16d96: f241 834a bls.w 1842e 16d9a: 2000 movs r0, #0 16d9c: 4b25 ldr r3, [pc, #148] ; (16e34 ) 16d9e: 4798 blx r3 16da0: ebc0 1000 rsb r0, r0, r0, lsl #4 16da4: 0040 lsls r0, r0, #1 16da6: 3050 adds r0, #80 ; 0x50 16da8: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16dac: f281 835a bge.w 18464 16db0: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 16db2: 2111 movs r1, #17 16db4: 4620 mov r0, r4 16db6: 4b20 ldr r3, [pc, #128] ; (16e38 ) 16db8: 4798 blx r3 lv_style_set_text_color(&styles->calendar_header, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x888888) : LV_COLOR_WHITE); 16dba: 4b13 ldr r3, [pc, #76] ; (16e08 ) 16dbc: 6818 ldr r0, [r3, #0] 16dbe: 6a1b ldr r3, [r3, #32] 16dc0: f013 0302 ands.w r3, r3, #2 16dc4: bf14 ite ne 16dc6: 2122 movne r1, #34 ; 0x22 16dc8: 213f moveq r1, #63 ; 0x3f 16dca: 2b00 cmp r3, #0 16dcc: bf14 ite ne 16dce: 2311 movne r3, #17 16dd0: 231f moveq r3, #31 16dd2: f04f 0200 mov.w r2, #0 16dd6: f363 0204 bfi r2, r3, #0, #5 16dda: f361 124a bfi r2, r1, #5, #6 16dde: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 16de2: f249 0189 movw r1, #37001 ; 0x9089 16de6: 3030 adds r0, #48 ; 0x30 16de8: 4b11 ldr r3, [pc, #68] ; (16e30 ) 16dea: 4798 blx r3 style_init_reset(&styles->calendar_daynames); 16dec: 4c06 ldr r4, [pc, #24] ; (16e08 ) 16dee: 6820 ldr r0, [r4, #0] 16df0: 3034 adds r0, #52 ; 0x34 16df2: 4b0e ldr r3, [pc, #56] ; (16e2c ) 16df4: 4798 blx r3 lv_style_set_text_color(&styles->calendar_daynames, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex3(0xeee)); 16df6: 6820 ldr r0, [r4, #0] 16df8: 3034 adds r0, #52 ; 0x34 16dfa: 6a23 ldr r3, [r4, #32] 16dfc: f013 0f02 tst.w r3, #2 16e00: f041 8340 bne.w 18484 16e04: e01c b.n 16e40 16e06: bf00 nop 16e08: 20006bd8 .word 0x20006bd8 16e0c: 00014a69 .word 0x00014a69 16e10: 00015cb1 .word 0x00015cb1 16e14: 00016a2d .word 0x00016a2d 16e18: 00015e19 .word 0x00015e19 16e1c: 000160bd .word 0x000160bd 16e20: 00016201 .word 0x00016201 16e24: 0001643d .word 0x0001643d 16e28: 0001691d .word 0x0001691d 16e2c: 00014a49 .word 0x00014a49 16e30: 00006a0d .word 0x00006a0d 16e34: 00010f25 .word 0x00010f25 16e38: 000068c9 .word 0x000068c9 16e3c: 00010f41 .word 0x00010f41 16e40: 231d movs r3, #29 16e42: 213b movs r1, #59 ; 0x3b 16e44: 461c mov r4, r3 16e46: f04f 0200 mov.w r2, #0 16e4a: f364 0204 bfi r2, r4, #0, #5 16e4e: f361 124a bfi r2, r1, #5, #6 16e52: f363 22cf bfi r2, r3, #11, #5 16e56: f248 0189 movw r1, #32905 ; 0x8089 16e5a: 4bb8 ldr r3, [pc, #736] ; (1713c ) 16e5c: 4798 blx r3 lv_style_set_pad_left(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 16e5e: 4bb8 ldr r3, [pc, #736] ; (17140 ) 16e60: 681c ldr r4, [r3, #0] 16e62: 3434 adds r4, #52 ; 0x34 16e64: 2000 movs r0, #0 16e66: 4bb7 ldr r3, [pc, #732] ; (17144 ) 16e68: 4798 blx r3 16e6a: 2801 cmp r0, #1 16e6c: f241 830f bls.w 1848e 16e70: 2000 movs r0, #0 16e72: 4bb5 ldr r3, [pc, #724] ; (17148 ) 16e74: 4798 blx r3 16e76: ebc0 1000 rsb r0, r0, r0, lsl #4 16e7a: 0040 lsls r0, r0, #1 16e7c: 3050 adds r0, #80 ; 0x50 16e7e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16e82: f281 831f bge.w 184c4 16e86: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 16e88: 2112 movs r1, #18 16e8a: 4620 mov r0, r4 16e8c: 4baf ldr r3, [pc, #700] ; (1714c ) 16e8e: 4798 blx r3 lv_style_set_pad_right(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 16e90: 4bab ldr r3, [pc, #684] ; (17140 ) 16e92: 681c ldr r4, [r3, #0] 16e94: 3434 adds r4, #52 ; 0x34 16e96: 2000 movs r0, #0 16e98: 4baa ldr r3, [pc, #680] ; (17144 ) 16e9a: 4798 blx r3 16e9c: 2801 cmp r0, #1 16e9e: f241 8321 bls.w 184e4 16ea2: 2000 movs r0, #0 16ea4: 4ba8 ldr r3, [pc, #672] ; (17148 ) 16ea6: 4798 blx r3 16ea8: ebc0 1000 rsb r0, r0, r0, lsl #4 16eac: 0040 lsls r0, r0, #1 16eae: 3050 adds r0, #80 ; 0x50 16eb0: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16eb4: f281 8331 bge.w 1851a 16eb8: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 16eba: 2113 movs r1, #19 16ebc: 4620 mov r0, r4 16ebe: 4ba3 ldr r3, [pc, #652] ; (1714c ) 16ec0: 4798 blx r3 lv_style_set_pad_bottom(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 16ec2: 4b9f ldr r3, [pc, #636] ; (17140 ) 16ec4: 681c ldr r4, [r3, #0] 16ec6: 3434 adds r4, #52 ; 0x34 16ec8: 2000 movs r0, #0 16eca: 4b9e ldr r3, [pc, #632] ; (17144 ) 16ecc: 4798 blx r3 16ece: 2801 cmp r0, #1 16ed0: f241 8333 bls.w 1853a 16ed4: 2000 movs r0, #0 16ed6: 4b9c ldr r3, [pc, #624] ; (17148 ) 16ed8: 4798 blx r3 16eda: ebc0 1000 rsb r0, r0, r0, lsl #4 16ede: 0040 lsls r0, r0, #1 16ee0: 3050 adds r0, #80 ; 0x50 16ee2: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16ee6: f281 8343 bge.w 18570 16eea: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 16eec: 2111 movs r1, #17 16eee: 4620 mov r0, r4 16ef0: 4b96 ldr r3, [pc, #600] ; (1714c ) 16ef2: 4798 blx r3 style_init_reset(&styles->calendar_date_nums); 16ef4: 4c92 ldr r4, [pc, #584] ; (17140 ) 16ef6: 6820 ldr r0, [r4, #0] 16ef8: 302c adds r0, #44 ; 0x2c 16efa: 4b95 ldr r3, [pc, #596] ; (17150 ) 16efc: 4798 blx r3 lv_style_set_radius(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(4)); 16efe: 6824 ldr r4, [r4, #0] 16f00: 342c adds r4, #44 ; 0x2c 16f02: 2000 movs r0, #0 16f04: 4b90 ldr r3, [pc, #576] ; (17148 ) 16f06: 4798 blx r3 16f08: 3014 adds r0, #20 16f0a: 0080 lsls r0, r0, #2 16f0c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16f10: f281 833e bge.w 18590 16f14: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 16f16: 2101 movs r1, #1 16f18: 4620 mov r0, r4 16f1a: 4b8c ldr r3, [pc, #560] ; (1714c ) 16f1c: 4798 blx r3 lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 16f1e: 4b88 ldr r3, [pc, #544] ; (17140 ) 16f20: 6818 ldr r0, [r3, #0] 16f22: 302c adds r0, #44 ; 0x2c 16f24: 6a1b ldr r3, [r3, #32] 16f26: f013 0f02 tst.w r3, #2 16f2a: f041 833f bne.w 185ac 16f2e: 231f movs r3, #31 16f30: 213f movs r1, #63 ; 0x3f 16f32: 461c mov r4, r3 16f34: f04f 0200 mov.w r2, #0 16f38: f364 0204 bfi r2, r4, #0, #5 16f3c: f361 124a bfi r2, r1, #5, #6 16f40: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 16f44: f248 1189 movw r1, #33161 ; 0x8189 16f48: 4b7c ldr r3, [pc, #496] ; (1713c ) 16f4a: 4798 blx r3 lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? LV_OPA_20 : LV_OPA_40); 16f4c: 4b7c ldr r3, [pc, #496] ; (17140 ) 16f4e: 6818 ldr r0, [r3, #0] 16f50: 6a1b ldr r3, [r3, #32] 16f52: f013 0f02 tst.w r3, #2 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 16f56: bf14 ite ne 16f58: 2233 movne r2, #51 ; 0x33 16f5a: 2266 moveq r2, #102 ; 0x66 16f5c: f44f 7196 mov.w r1, #300 ; 0x12c 16f60: 302c adds r0, #44 ; 0x2c 16f62: 4d7c ldr r5, [pc, #496] ; (17154 ) 16f64: 47a8 blx r5 lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_PRESSED, LV_OPA_20); 16f66: 4c76 ldr r4, [pc, #472] ; (17140 ) 16f68: 6820 ldr r0, [r4, #0] 16f6a: 2233 movs r2, #51 ; 0x33 16f6c: f241 012c movw r1, #4140 ; 0x102c 16f70: 302c adds r0, #44 ; 0x2c 16f72: 47a8 blx r5 lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_FOCUSED, LV_OPA_COVER); 16f74: 6820 ldr r0, [r4, #0] 16f76: 22ff movs r2, #255 ; 0xff 16f78: f44f 710b mov.w r1, #556 ; 0x22c 16f7c: 302c adds r0, #44 ; 0x2c 16f7e: 47a8 blx r5 lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_FOCUSED, LV_COLOR_WHITE); 16f80: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 16f82: 4b75 ldr r3, [pc, #468] ; (17158 ) 16f84: 881a ldrh r2, [r3, #0] 16f86: f248 2189 movw r1, #33417 ; 0x8289 16f8a: 302c adds r0, #44 ; 0x2c 16f8c: 4d6b ldr r5, [pc, #428] ; (1713c ) 16f8e: 47a8 blx r5 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_FOCUSED, theme.color_primary); 16f90: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 16f92: 89a2 ldrh r2, [r4, #12] 16f94: f240 2129 movw r1, #553 ; 0x229 16f98: 302c adds r0, #44 ; 0x2c 16f9a: 47a8 blx r5 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x666666) : LV_COLOR_WHITE); 16f9c: 6820 ldr r0, [r4, #0] 16f9e: 6a23 ldr r3, [r4, #32] 16fa0: f013 0302 ands.w r3, r3, #2 16fa4: bf14 ite ne 16fa6: 2119 movne r1, #25 16fa8: 213f moveq r1, #63 ; 0x3f 16faa: 2b00 cmp r3, #0 16fac: bf14 ite ne 16fae: 230c movne r3, #12 16fb0: 231f moveq r3, #31 16fb2: f04f 0200 mov.w r2, #0 16fb6: f363 0204 bfi r2, r3, #0, #5 16fba: f361 124a bfi r2, r1, #5, #6 16fbe: f363 22cf bfi r2, r3, #11, #5 16fc2: 2129 movs r1, #41 ; 0x29 16fc4: 302c adds r0, #44 ; 0x2c 16fc6: 47a8 blx r5 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_CHECKED, theme.color_primary); 16fc8: 6820 ldr r0, [r4, #0] 16fca: 89a2 ldrh r2, [r4, #12] 16fcc: f240 1129 movw r1, #297 ; 0x129 16fd0: 302c adds r0, #44 ; 0x2c 16fd2: 47a8 blx r5 lv_style_set_border_width(&styles->calendar_date_nums, LV_STATE_CHECKED, 2); 16fd4: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 16fd6: 2202 movs r2, #2 16fd8: f44f 7198 mov.w r1, #304 ; 0x130 16fdc: 302c adds r0, #44 ; 0x2c 16fde: 4e5b ldr r6, [pc, #364] ; (1714c ) 16fe0: 47b0 blx r6 lv_style_set_border_side(&styles->calendar_date_nums, LV_STATE_CHECKED, LV_BORDER_SIDE_LEFT); 16fe2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 16fe4: 2204 movs r2, #4 16fe6: f240 1131 movw r1, #305 ; 0x131 16fea: 302c adds r0, #44 ; 0x2c 16fec: 47b0 blx r6 lv_style_set_border_color(&styles->calendar_date_nums, LV_STATE_CHECKED, theme.color_primary); 16fee: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 16ff0: 89a2 ldrh r2, [r4, #12] 16ff2: f240 1139 movw r1, #313 ; 0x139 16ff6: 302c adds r0, #44 ; 0x2c 16ff8: 47a8 blx r5 lv_style_set_pad_inner(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(3)); 16ffa: 6824 ldr r4, [r4, #0] 16ffc: 342c adds r4, #44 ; 0x2c 16ffe: 2000 movs r0, #0 17000: 4b51 ldr r3, [pc, #324] ; (17148 ) 17002: 4798 blx r3 17004: eb00 0040 add.w r0, r0, r0, lsl #1 17008: 3050 adds r0, #80 ; 0x50 1700a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1700e: f281 82d2 bge.w 185b6 17012: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 17014: 2114 movs r1, #20 17016: 4620 mov r0, r4 17018: 4b4c ldr r3, [pc, #304] ; (1714c ) 1701a: 4798 blx r3 lv_style_set_pad_left(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 1701c: 4b48 ldr r3, [pc, #288] ; (17140 ) 1701e: 681c ldr r4, [r3, #0] 17020: 342c adds r4, #44 ; 0x2c 17022: 2000 movs r0, #0 17024: 4b47 ldr r3, [pc, #284] ; (17144 ) 17026: 4798 blx r3 17028: 2801 cmp r0, #1 1702a: f241 82d3 bls.w 185d4 1702e: 2000 movs r0, #0 17030: 4b45 ldr r3, [pc, #276] ; (17148 ) 17032: 4798 blx r3 17034: ebc0 1000 rsb r0, r0, r0, lsl #4 17038: 0040 lsls r0, r0, #1 1703a: 3050 adds r0, #80 ; 0x50 1703c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17040: f281 82e3 bge.w 1860a 17044: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 17046: 2112 movs r1, #18 17048: 4620 mov r0, r4 1704a: 4b40 ldr r3, [pc, #256] ; (1714c ) 1704c: 4798 blx r3 lv_style_set_pad_right(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 1704e: 4b3c ldr r3, [pc, #240] ; (17140 ) 17050: 681c ldr r4, [r3, #0] 17052: 342c adds r4, #44 ; 0x2c 17054: 2000 movs r0, #0 17056: 4b3b ldr r3, [pc, #236] ; (17144 ) 17058: 4798 blx r3 1705a: 2801 cmp r0, #1 1705c: f241 82e5 bls.w 1862a 17060: 2000 movs r0, #0 17062: 4b39 ldr r3, [pc, #228] ; (17148 ) 17064: 4798 blx r3 17066: ebc0 1000 rsb r0, r0, r0, lsl #4 1706a: 0040 lsls r0, r0, #1 1706c: 3050 adds r0, #80 ; 0x50 1706e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17072: f281 82f5 bge.w 18660 17076: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 17078: 2113 movs r1, #19 1707a: 4620 mov r0, r4 1707c: 4b33 ldr r3, [pc, #204] ; (1714c ) 1707e: 4798 blx r3 lv_style_set_pad_bottom(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 17080: 4b2f ldr r3, [pc, #188] ; (17140 ) 17082: 681c ldr r4, [r3, #0] 17084: 342c adds r4, #44 ; 0x2c 17086: 2000 movs r0, #0 17088: 4b2e ldr r3, [pc, #184] ; (17144 ) 1708a: 4798 blx r3 1708c: 2801 cmp r0, #1 1708e: f241 82f7 bls.w 18680 17092: 2000 movs r0, #0 17094: 4b2c ldr r3, [pc, #176] ; (17148 ) 17096: 4798 blx r3 17098: ebc0 1000 rsb r0, r0, r0, lsl #4 1709c: 0040 lsls r0, r0, #1 1709e: 3050 adds r0, #80 ; 0x50 170a0: f5b0 7fa0 cmp.w r0, #320 ; 0x140 170a4: f281 8307 bge.w 186b6 170a8: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 170aa: 2111 movs r1, #17 170ac: 4620 mov r0, r4 170ae: 4b27 ldr r3, [pc, #156] ; (1714c ) 170b0: 4798 blx r3 style_init_reset(&styles->cpicker_bg); 170b2: 4c23 ldr r4, [pc, #140] ; (17140 ) 170b4: 6820 ldr r0, [r4, #0] 170b6: 3038 adds r0, #56 ; 0x38 170b8: 4b25 ldr r3, [pc, #148] ; (17150 ) 170ba: 4798 blx r3 lv_style_set_scale_width(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(30)); 170bc: 6824 ldr r4, [r4, #0] 170be: 3438 adds r4, #56 ; 0x38 170c0: 2000 movs r0, #0 170c2: 4b21 ldr r3, [pc, #132] ; (17148 ) 170c4: 4798 blx r3 170c6: ebc0 1000 rsb r0, r0, r0, lsl #4 170ca: 0040 lsls r0, r0, #1 170cc: 3050 adds r0, #80 ; 0x50 170ce: f5b0 7fa0 cmp.w r0, #320 ; 0x140 170d2: f281 8305 bge.w 186e0 170d6: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 170d8: 21c0 movs r1, #192 ; 0xc0 170da: 4620 mov r0, r4 170dc: 4b1b ldr r3, [pc, #108] ; (1714c ) 170de: 4798 blx r3 lv_style_set_bg_opa(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_OPA_COVER); 170e0: 4c17 ldr r4, [pc, #92] ; (17140 ) 170e2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 170e4: 22ff movs r2, #255 ; 0xff 170e6: 212c movs r1, #44 ; 0x2c 170e8: 3038 adds r0, #56 ; 0x38 170ea: 4b1a ldr r3, [pc, #104] ; (17154 ) 170ec: 4798 blx r3 lv_style_set_bg_color(&styles->cpicker_bg, LV_STATE_DEFAULT, COLOR_SCR); 170ee: 6820 ldr r0, [r4, #0] 170f0: 6a23 ldr r3, [r4, #32] 170f2: f013 0302 ands.w r3, r3, #2 170f6: bf14 ite ne 170f8: 211d movne r1, #29 170fa: 2108 moveq r1, #8 170fc: 2b00 cmp r3, #0 170fe: bf15 itete ne 17100: 243b movne r4, #59 ; 0x3b 17102: 2412 moveq r4, #18 17104: 231e movne r3, #30 17106: 230b moveq r3, #11 17108: f04f 0200 mov.w r2, #0 1710c: f363 0204 bfi r2, r3, #0, #5 17110: f364 124a bfi r2, r4, #5, #6 17114: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17118: 2129 movs r1, #41 ; 0x29 1711a: 3038 adds r0, #56 ; 0x38 1711c: 4b07 ldr r3, [pc, #28] ; (1713c ) 1711e: 4798 blx r3 lv_style_set_pad_inner(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(20)); 17120: 4b07 ldr r3, [pc, #28] ; (17140 ) 17122: 681c ldr r4, [r3, #0] 17124: 3438 adds r4, #56 ; 0x38 17126: 2000 movs r0, #0 17128: 4b07 ldr r3, [pc, #28] ; (17148 ) 1712a: 4798 blx r3 1712c: eb00 0080 add.w r0, r0, r0, lsl #2 17130: 0080 lsls r0, r0, #2 17132: 3050 adds r0, #80 ; 0x50 17134: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17138: e010 b.n 1715c 1713a: bf00 nop 1713c: 00006a0d .word 0x00006a0d 17140: 20006bd8 .word 0x20006bd8 17144: 00010f41 .word 0x00010f41 17148: 00010f25 .word 0x00010f25 1714c: 000068c9 .word 0x000068c9 17150: 00014a49 .word 0x00014a49 17154: 00006b51 .word 0x00006b51 17158: 0002956c .word 0x0002956c 1715c: f281 82d0 bge.w 18700 17160: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 17162: 2114 movs r1, #20 17164: 4620 mov r0, r4 17166: 4eb6 ldr r6, [pc, #728] ; (17440 ) 17168: 47b0 blx r6 lv_style_set_radius(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 1716a: 4cb6 ldr r4, [pc, #728] ; (17444 ) 1716c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 1716e: f647 72ff movw r2, #32767 ; 0x7fff 17172: 2101 movs r1, #1 17174: 3038 adds r0, #56 ; 0x38 17176: 47b0 blx r6 style_init_reset(&styles->cpicker_indic); 17178: 6820 ldr r0, [r4, #0] 1717a: 303c adds r0, #60 ; 0x3c 1717c: 4bb2 ldr r3, [pc, #712] ; (17448 ) 1717e: 4798 blx r3 lv_style_set_radius(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 17180: 6820 ldr r0, [r4, #0] 17182: f647 72ff movw r2, #32767 ; 0x7fff 17186: 2101 movs r1, #1 17188: 303c adds r0, #60 ; 0x3c 1718a: 47b0 blx r6 lv_style_set_bg_color(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_COLOR_WHITE); 1718c: 6820 ldr r0, [r4, #0] 1718e: 4faf ldr r7, [pc, #700] ; (1744c ) _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17190: 883a ldrh r2, [r7, #0] 17192: 2129 movs r1, #41 ; 0x29 17194: 303c adds r0, #60 ; 0x3c 17196: 4dae ldr r5, [pc, #696] ; (17450 ) 17198: 47a8 blx r5 lv_style_set_bg_opa(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_OPA_COVER); 1719a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 1719c: 22ff movs r2, #255 ; 0xff 1719e: 212c movs r1, #44 ; 0x2c 171a0: 303c adds r0, #60 ; 0x3c 171a2: 4bac ldr r3, [pc, #688] ; (17454 ) 171a4: 4798 blx r3 lv_style_set_border_width(&styles->cpicker_indic, LV_STATE_DEFAULT, 2); 171a6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 171a8: 2202 movs r2, #2 171aa: 2130 movs r1, #48 ; 0x30 171ac: 303c adds r0, #60 ; 0x3c 171ae: 47b0 blx r6 lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_COLOR_GRAY); 171b0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 171b2: 88ba ldrh r2, [r7, #4] 171b4: 2139 movs r1, #57 ; 0x39 171b6: 303c adds r0, #60 ; 0x3c 171b8: 47a8 blx r5 lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_FOCUSED, theme.color_primary); 171ba: 6820 ldr r0, [r4, #0] 171bc: 89a2 ldrh r2, [r4, #12] 171be: f240 2139 movw r1, #569 ; 0x239 171c2: 303c adds r0, #60 ; 0x3c 171c4: 47a8 blx r5 lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_EDITED, theme.color_secondary); 171c6: 6820 ldr r0, [r4, #0] 171c8: 89e2 ldrh r2, [r4, #14] 171ca: f240 4139 movw r1, #1081 ; 0x439 171ce: 303c adds r0, #60 ; 0x3c 171d0: 47a8 blx r5 lv_style_set_pad_left(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 171d2: 6824 ldr r4, [r4, #0] 171d4: 343c adds r4, #60 ; 0x3c 171d6: 2000 movs r0, #0 171d8: 4b9f ldr r3, [pc, #636] ; (17458 ) 171da: 4798 blx r3 171dc: eb00 0340 add.w r3, r0, r0, lsl #1 171e0: eb00 0083 add.w r0, r0, r3, lsl #2 171e4: 3050 adds r0, #80 ; 0x50 171e6: f5b0 7fa0 cmp.w r0, #320 ; 0x140 171ea: f281 8299 bge.w 18720 171ee: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 171f0: 2112 movs r1, #18 171f2: 4620 mov r0, r4 171f4: 4b92 ldr r3, [pc, #584] ; (17440 ) 171f6: 4798 blx r3 lv_style_set_pad_right(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 171f8: 4b92 ldr r3, [pc, #584] ; (17444 ) 171fa: 681c ldr r4, [r3, #0] 171fc: 343c adds r4, #60 ; 0x3c 171fe: 2000 movs r0, #0 17200: 4b95 ldr r3, [pc, #596] ; (17458 ) 17202: 4798 blx r3 17204: eb00 0340 add.w r3, r0, r0, lsl #1 17208: eb00 0083 add.w r0, r0, r3, lsl #2 1720c: 3050 adds r0, #80 ; 0x50 1720e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17212: f281 8296 bge.w 18742 17216: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 17218: 2113 movs r1, #19 1721a: 4620 mov r0, r4 1721c: 4b88 ldr r3, [pc, #544] ; (17440 ) 1721e: 4798 blx r3 lv_style_set_pad_top(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 17220: 4b88 ldr r3, [pc, #544] ; (17444 ) 17222: 681c ldr r4, [r3, #0] 17224: 343c adds r4, #60 ; 0x3c 17226: 2000 movs r0, #0 17228: 4b8b ldr r3, [pc, #556] ; (17458 ) 1722a: 4798 blx r3 1722c: eb00 0340 add.w r3, r0, r0, lsl #1 17230: eb00 0083 add.w r0, r0, r3, lsl #2 17234: 3050 adds r0, #80 ; 0x50 17236: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1723a: f281 8293 bge.w 18764 1723e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 17240: 2110 movs r1, #16 17242: 4620 mov r0, r4 17244: 4b7e ldr r3, [pc, #504] ; (17440 ) 17246: 4798 blx r3 lv_style_set_pad_bottom(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 17248: 4b7e ldr r3, [pc, #504] ; (17444 ) 1724a: 681c ldr r4, [r3, #0] 1724c: 343c adds r4, #60 ; 0x3c 1724e: 2000 movs r0, #0 17250: 4b81 ldr r3, [pc, #516] ; (17458 ) 17252: 4798 blx r3 17254: eb00 0340 add.w r3, r0, r0, lsl #1 17258: eb00 0083 add.w r0, r0, r3, lsl #2 1725c: 3050 adds r0, #80 ; 0x50 1725e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17262: f281 8290 bge.w 18786 17266: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 17268: 2111 movs r1, #17 1726a: 4620 mov r0, r4 1726c: 4b74 ldr r3, [pc, #464] ; (17440 ) 1726e: 4798 blx r3 style_init_reset(&styles->cb_bg); 17270: 4c74 ldr r4, [pc, #464] ; (17444 ) 17272: 6820 ldr r0, [r4, #0] 17274: 304c adds r0, #76 ; 0x4c 17276: 4b74 ldr r3, [pc, #464] ; (17448 ) 17278: 4798 blx r3 lv_style_set_radius(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 1727a: 6824 ldr r4, [r4, #0] 1727c: 344c adds r4, #76 ; 0x4c 1727e: 2000 movs r0, #0 17280: 4b75 ldr r3, [pc, #468] ; (17458 ) 17282: 4798 blx r3 17284: 3014 adds r0, #20 17286: 0080 lsls r0, r0, #2 17288: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1728c: f281 828c bge.w 187a8 17290: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 17292: 2101 movs r1, #1 17294: 4620 mov r0, r4 17296: 4b6a ldr r3, [pc, #424] ; (17440 ) 17298: 4798 blx r3 lv_style_set_pad_inner(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 1729a: 4b6a ldr r3, [pc, #424] ; (17444 ) 1729c: 681c ldr r4, [r3, #0] 1729e: 344c adds r4, #76 ; 0x4c 172a0: 2000 movs r0, #0 172a2: 4b6d ldr r3, [pc, #436] ; (17458 ) 172a4: 4798 blx r3 172a6: eb00 0080 add.w r0, r0, r0, lsl #2 172aa: 0040 lsls r0, r0, #1 172ac: 3050 adds r0, #80 ; 0x50 172ae: f5b0 7fa0 cmp.w r0, #320 ; 0x140 172b2: f281 8287 bge.w 187c4 172b6: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 172b8: 2114 movs r1, #20 172ba: 4620 mov r0, r4 172bc: 4b60 ldr r3, [pc, #384] ; (17440 ) 172be: 4798 blx r3 lv_style_set_outline_color(&styles->cb_bg, LV_STATE_DEFAULT, theme.color_primary); 172c0: 4c60 ldr r4, [pc, #384] ; (17444 ) 172c2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 172c4: 89a2 ldrh r2, [r4, #12] 172c6: 2149 movs r1, #73 ; 0x49 172c8: 304c adds r0, #76 ; 0x4c 172ca: 4b61 ldr r3, [pc, #388] ; (17450 ) 172cc: 4798 blx r3 lv_style_set_outline_opa(&styles->cb_bg, LV_STATE_DEFAULT, LV_OPA_TRANSP); 172ce: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 172d0: 2200 movs r2, #0 172d2: 214c movs r1, #76 ; 0x4c 172d4: 4408 add r0, r1 172d6: 4d5f ldr r5, [pc, #380] ; (17454 ) 172d8: 47a8 blx r5 lv_style_set_outline_opa(&styles->cb_bg, LV_STATE_FOCUSED, LV_OPA_50); 172da: 6820 ldr r0, [r4, #0] 172dc: 227f movs r2, #127 ; 0x7f 172de: f44f 7113 mov.w r1, #588 ; 0x24c 172e2: 304c adds r0, #76 ; 0x4c 172e4: 47a8 blx r5 lv_style_set_outline_width(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 172e6: 6824 ldr r4, [r4, #0] 172e8: 344c adds r4, #76 ; 0x4c 172ea: 2000 movs r0, #0 172ec: 4b5a ldr r3, [pc, #360] ; (17458 ) 172ee: 4798 blx r3 172f0: eb00 0040 add.w r0, r0, r0, lsl #1 172f4: 3050 adds r0, #80 ; 0x50 172f6: f5b0 7fa0 cmp.w r0, #320 ; 0x140 172fa: f281 8273 bge.w 187e4 172fe: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 17300: 2140 movs r1, #64 ; 0x40 17302: 4620 mov r0, r4 17304: 4b4e ldr r3, [pc, #312] ; (17440 ) 17306: 4798 blx r3 lv_style_set_outline_pad(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 17308: 4b4e ldr r3, [pc, #312] ; (17444 ) 1730a: 681c ldr r4, [r3, #0] 1730c: 344c adds r4, #76 ; 0x4c 1730e: 2000 movs r0, #0 17310: 4b51 ldr r3, [pc, #324] ; (17458 ) 17312: 4798 blx r3 17314: eb00 0080 add.w r0, r0, r0, lsl #2 17318: 0040 lsls r0, r0, #1 1731a: 3050 adds r0, #80 ; 0x50 1731c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17320: f281 826f bge.w 18802 17324: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar) 17326: 2141 movs r1, #65 ; 0x41 17328: 4620 mov r0, r4 1732a: 4d45 ldr r5, [pc, #276] ; (17440 ) 1732c: 47a8 blx r5 lv_style_set_transition_time(&styles->cb_bg, LV_STATE_DEFAULT, TRANSITION_TIME); 1732e: 4c45 ldr r4, [pc, #276] ; (17444 ) 17330: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 17332: 2296 movs r2, #150 ; 0x96 17334: 21b0 movs r1, #176 ; 0xb0 17336: 304c adds r0, #76 ; 0x4c 17338: 47a8 blx r5 lv_style_set_transition_prop_6(&styles->cb_bg, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); 1733a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 1733c: 224c movs r2, #76 ; 0x4c 1733e: 21b7 movs r1, #183 ; 0xb7 17340: 4410 add r0, r2 17342: 47a8 blx r5 style_init_reset(&styles->cb_bullet); 17344: 6820 ldr r0, [r4, #0] 17346: 3050 adds r0, #80 ; 0x50 17348: 4b3f ldr r3, [pc, #252] ; (17448 ) 1734a: 4798 blx r3 lv_style_set_outline_opa(&styles->cb_bullet, LV_STATE_FOCUSED, LV_OPA_TRANSP); 1734c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 1734e: 2200 movs r2, #0 17350: f44f 7113 mov.w r1, #588 ; 0x24c 17354: 3050 adds r0, #80 ; 0x50 17356: 4b3f ldr r3, [pc, #252] ; (17454 ) 17358: 4798 blx r3 lv_style_set_radius(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(4)); 1735a: 6824 ldr r4, [r4, #0] 1735c: 3450 adds r4, #80 ; 0x50 1735e: 2000 movs r0, #0 17360: 4b3d ldr r3, [pc, #244] ; (17458 ) 17362: 4798 blx r3 17364: 3014 adds r0, #20 17366: 0080 lsls r0, r0, #2 17368: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1736c: f281 8259 bge.w 18822 17370: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 17372: 2101 movs r1, #1 17374: 4620 mov r0, r4 17376: 4b32 ldr r3, [pc, #200] ; (17440 ) 17378: 4798 blx r3 lv_style_set_pattern_image(&styles->cb_bullet, LV_STATE_CHECKED, LV_SYMBOL_OK); 1737a: 4c32 ldr r4, [pc, #200] ; (17444 ) 1737c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_IMAGE, pattern_image, const void *, _ptr, scalar) 1737e: 4a37 ldr r2, [pc, #220] ; (1745c ) 17380: f44f 71b7 mov.w r1, #366 ; 0x16e 17384: 3050 adds r0, #80 ; 0x50 17386: 4d36 ldr r5, [pc, #216] ; (17460 ) 17388: 47a8 blx r5 lv_style_set_pattern_recolor(&styles->cb_bullet, LV_STATE_CHECKED, LV_COLOR_WHITE); 1738a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 1738c: 4b2f ldr r3, [pc, #188] ; (1744c ) 1738e: 881a ldrh r2, [r3, #0] 17390: f240 1169 movw r1, #361 ; 0x169 17394: 3050 adds r0, #80 ; 0x50 17396: 4b2e ldr r3, [pc, #184] ; (17450 ) 17398: 4798 blx r3 lv_style_set_text_font(&styles->cb_bullet, LV_STATE_CHECKED, theme.font_small); 1739a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 1739c: 6922 ldr r2, [r4, #16] 1739e: f248 118e movw r1, #33166 ; 0x818e 173a2: 3050 adds r0, #80 ; 0x50 173a4: 47a8 blx r5 lv_style_set_pad_left(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 173a6: 6824 ldr r4, [r4, #0] 173a8: 3450 adds r4, #80 ; 0x50 173aa: 2000 movs r0, #0 173ac: 4b2a ldr r3, [pc, #168] ; (17458 ) 173ae: 4798 blx r3 173b0: eb00 0040 add.w r0, r0, r0, lsl #1 173b4: 3050 adds r0, #80 ; 0x50 173b6: f5b0 7fa0 cmp.w r0, #320 ; 0x140 173ba: f281 8240 bge.w 1883e 173be: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 173c0: 2112 movs r1, #18 173c2: 4620 mov r0, r4 173c4: 4b1e ldr r3, [pc, #120] ; (17440 ) 173c6: 4798 blx r3 lv_style_set_pad_right(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 173c8: 4b1e ldr r3, [pc, #120] ; (17444 ) 173ca: 681c ldr r4, [r3, #0] 173cc: 3450 adds r4, #80 ; 0x50 173ce: 2000 movs r0, #0 173d0: 4b21 ldr r3, [pc, #132] ; (17458 ) 173d2: 4798 blx r3 173d4: eb00 0040 add.w r0, r0, r0, lsl #1 173d8: 3050 adds r0, #80 ; 0x50 173da: f5b0 7fa0 cmp.w r0, #320 ; 0x140 173de: f281 823d bge.w 1885c 173e2: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 173e4: 2113 movs r1, #19 173e6: 4620 mov r0, r4 173e8: 4b15 ldr r3, [pc, #84] ; (17440 ) 173ea: 4798 blx r3 lv_style_set_pad_top(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 173ec: 4b15 ldr r3, [pc, #84] ; (17444 ) 173ee: 681c ldr r4, [r3, #0] 173f0: 3450 adds r4, #80 ; 0x50 173f2: 2000 movs r0, #0 173f4: 4b18 ldr r3, [pc, #96] ; (17458 ) 173f6: 4798 blx r3 173f8: eb00 0040 add.w r0, r0, r0, lsl #1 173fc: 3050 adds r0, #80 ; 0x50 173fe: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17402: f281 823a bge.w 1887a 17406: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 17408: 2110 movs r1, #16 1740a: 4620 mov r0, r4 1740c: 4b0c ldr r3, [pc, #48] ; (17440 ) 1740e: 4798 blx r3 lv_style_set_pad_bottom(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 17410: 4b0c ldr r3, [pc, #48] ; (17444 ) 17412: 681c ldr r4, [r3, #0] 17414: 3450 adds r4, #80 ; 0x50 17416: 2000 movs r0, #0 17418: 4b0f ldr r3, [pc, #60] ; (17458 ) 1741a: 4798 blx r3 1741c: eb00 0040 add.w r0, r0, r0, lsl #1 17420: 3050 adds r0, #80 ; 0x50 17422: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17426: f281 8237 bge.w 18898 1742a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 1742c: 2111 movs r1, #17 1742e: 4620 mov r0, r4 17430: 4d03 ldr r5, [pc, #12] ; (17440 ) 17432: 47a8 blx r5 style_init_reset(&styles->kb_bg); 17434: 4c03 ldr r4, [pc, #12] ; (17444 ) 17436: 6820 ldr r0, [r4, #0] 17438: 3068 adds r0, #104 ; 0x68 1743a: 4b03 ldr r3, [pc, #12] ; (17448 ) 1743c: 4798 blx r3 1743e: e011 b.n 17464 17440: 000068c9 .word 0x000068c9 17444: 20006bd8 .word 0x20006bd8 17448: 00014a49 .word 0x00014a49 1744c: 0002956c .word 0x0002956c 17450: 00006a0d .word 0x00006a0d 17454: 00006b51 .word 0x00006b51 17458: 00010f25 .word 0x00010f25 1745c: 00029574 .word 0x00029574 17460: 00006c81 .word 0x00006c81 lv_style_set_radius(&styles->kb_bg, LV_STATE_DEFAULT, 0); 17464: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 17466: 2200 movs r2, #0 17468: 2101 movs r1, #1 1746a: 3068 adds r0, #104 ; 0x68 1746c: 47a8 blx r5 lv_style_set_border_width(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 1746e: 6824 ldr r4, [r4, #0] 17470: 3468 adds r4, #104 ; 0x68 17472: 2000 movs r0, #0 17474: 4bb5 ldr r3, [pc, #724] ; (1774c ) 17476: 4798 blx r3 17478: 3014 adds r0, #20 1747a: 0080 lsls r0, r0, #2 1747c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17480: f281 8219 bge.w 188b6 17484: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 17486: 2130 movs r1, #48 ; 0x30 17488: 4620 mov r0, r4 1748a: 4db1 ldr r5, [pc, #708] ; (17750 ) 1748c: 47a8 blx r5 lv_style_set_border_side(&styles->kb_bg, LV_STATE_DEFAULT, LV_BORDER_SIDE_TOP); 1748e: 4cb1 ldr r4, [pc, #708] ; (17754 ) 17490: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 17492: 2202 movs r2, #2 17494: 2131 movs r1, #49 ; 0x31 17496: 3068 adds r0, #104 ; 0x68 17498: 47a8 blx r5 lv_style_set_border_color(&styles->kb_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT : LV_COLOR_BLACK); 1749a: 6820 ldr r0, [r4, #0] 1749c: 3068 adds r0, #104 ; 0x68 1749e: 6a23 ldr r3, [r4, #32] 174a0: f013 0f02 tst.w r3, #2 174a4: f041 8215 bne.w 188d2 174a8: 2300 movs r3, #0 174aa: 4619 mov r1, r3 174ac: 461c mov r4, r3 174ae: f04f 0200 mov.w r2, #0 174b2: f364 0204 bfi r2, r4, #0, #5 174b6: f361 124a bfi r2, r1, #5, #6 174ba: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 174be: 2139 movs r1, #57 ; 0x39 174c0: 4da5 ldr r5, [pc, #660] ; (17758 ) 174c2: 47a8 blx r5 lv_style_set_border_color(&styles->kb_bg, LV_STATE_EDITED, theme.color_secondary); 174c4: 4ca3 ldr r4, [pc, #652] ; (17754 ) 174c6: 6820 ldr r0, [r4, #0] 174c8: 89e2 ldrh r2, [r4, #14] 174ca: f240 4139 movw r1, #1081 ; 0x439 174ce: 3068 adds r0, #104 ; 0x68 174d0: 47a8 blx r5 lv_style_set_pad_left(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 174d2: 6824 ldr r4, [r4, #0] 174d4: 3468 adds r4, #104 ; 0x68 174d6: 2000 movs r0, #0 174d8: 4b9c ldr r3, [pc, #624] ; (1774c ) 174da: 4798 blx r3 174dc: eb00 0080 add.w r0, r0, r0, lsl #2 174e0: 3050 adds r0, #80 ; 0x50 174e2: f5b0 7fa0 cmp.w r0, #320 ; 0x140 174e6: f281 81f9 bge.w 188dc 174ea: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 174ec: 2112 movs r1, #18 174ee: 4620 mov r0, r4 174f0: 4b97 ldr r3, [pc, #604] ; (17750 ) 174f2: 4798 blx r3 lv_style_set_pad_right(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 174f4: 4b97 ldr r3, [pc, #604] ; (17754 ) 174f6: 681c ldr r4, [r3, #0] 174f8: 3468 adds r4, #104 ; 0x68 174fa: 2000 movs r0, #0 174fc: 4b93 ldr r3, [pc, #588] ; (1774c ) 174fe: 4798 blx r3 17500: eb00 0080 add.w r0, r0, r0, lsl #2 17504: 3050 adds r0, #80 ; 0x50 17506: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1750a: f281 81f6 bge.w 188fa 1750e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 17510: 2113 movs r1, #19 17512: 4620 mov r0, r4 17514: 4b8e ldr r3, [pc, #568] ; (17750 ) 17516: 4798 blx r3 lv_style_set_pad_top(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 17518: 4b8e ldr r3, [pc, #568] ; (17754 ) 1751a: 681c ldr r4, [r3, #0] 1751c: 3468 adds r4, #104 ; 0x68 1751e: 2000 movs r0, #0 17520: 4b8a ldr r3, [pc, #552] ; (1774c ) 17522: 4798 blx r3 17524: eb00 0080 add.w r0, r0, r0, lsl #2 17528: 3050 adds r0, #80 ; 0x50 1752a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1752e: f281 81f3 bge.w 18918 17532: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 17534: 2110 movs r1, #16 17536: 4620 mov r0, r4 17538: 4b85 ldr r3, [pc, #532] ; (17750 ) 1753a: 4798 blx r3 lv_style_set_pad_bottom(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 1753c: 4b85 ldr r3, [pc, #532] ; (17754 ) 1753e: 681c ldr r4, [r3, #0] 17540: 3468 adds r4, #104 ; 0x68 17542: 2000 movs r0, #0 17544: 4b81 ldr r3, [pc, #516] ; (1774c ) 17546: 4798 blx r3 17548: eb00 0080 add.w r0, r0, r0, lsl #2 1754c: 3050 adds r0, #80 ; 0x50 1754e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17552: f281 81f0 bge.w 18936 17556: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 17558: 2111 movs r1, #17 1755a: 4620 mov r0, r4 1755c: 4b7c ldr r3, [pc, #496] ; (17750 ) 1755e: 4798 blx r3 lv_style_set_pad_inner(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 17560: 4b7c ldr r3, [pc, #496] ; (17754 ) 17562: 681c ldr r4, [r3, #0] 17564: 3468 adds r4, #104 ; 0x68 17566: 2000 movs r0, #0 17568: 4b78 ldr r3, [pc, #480] ; (1774c ) 1756a: 4798 blx r3 1756c: eb00 0040 add.w r0, r0, r0, lsl #1 17570: 3050 adds r0, #80 ; 0x50 17572: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17576: f281 81ed bge.w 18954 1757a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 1757c: 2114 movs r1, #20 1757e: 4620 mov r0, r4 17580: 4b73 ldr r3, [pc, #460] ; (17750 ) 17582: 4798 blx r3 style_init_reset(&styles->mbox_bg); 17584: 4c73 ldr r4, [pc, #460] ; (17754 ) 17586: 6820 ldr r0, [r4, #0] 17588: 307c adds r0, #124 ; 0x7c 1758a: 4b74 ldr r3, [pc, #464] ; (1775c ) 1758c: 4798 blx r3 lv_style_set_shadow_width(&styles->mbox_bg, LV_STATE_DEFAULT, LV_DPX(50)); 1758e: 6824 ldr r4, [r4, #0] 17590: 347c adds r4, #124 ; 0x7c 17592: 2000 movs r0, #0 17594: 4b6d ldr r3, [pc, #436] ; (1774c ) 17596: 4798 blx r3 17598: 2332 movs r3, #50 ; 0x32 1759a: fb03 f000 mul.w r0, r3, r0 1759e: 3050 adds r0, #80 ; 0x50 175a0: f5b0 7fa0 cmp.w r0, #320 ; 0x140 175a4: f281 81e5 bge.w 18972 175a8: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 175aa: 2150 movs r1, #80 ; 0x50 175ac: 4620 mov r0, r4 175ae: 4b68 ldr r3, [pc, #416] ; (17750 ) 175b0: 4798 blx r3 lv_style_set_shadow_color(&styles->mbox_bg, LV_STATE_DEFAULT, IS_LIGHT ? LV_COLOR_SILVER : lv_color_hex3(0x999)); 175b2: 4b68 ldr r3, [pc, #416] ; (17754 ) 175b4: 6818 ldr r0, [r3, #0] 175b6: 6a1b ldr r3, [r3, #32] 175b8: f013 0302 ands.w r3, r3, #2 175bc: bf0c ite eq 175be: 2126 moveq r1, #38 ; 0x26 175c0: 2130 movne r1, #48 ; 0x30 175c2: 2b00 cmp r3, #0 175c4: bf0c ite eq 175c6: 2313 moveq r3, #19 175c8: 2318 movne r3, #24 175ca: f04f 0200 mov.w r2, #0 175ce: f363 0204 bfi r2, r3, #0, #5 175d2: f361 124a bfi r2, r1, #5, #6 175d6: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar) 175da: 2159 movs r1, #89 ; 0x59 175dc: 307c adds r0, #124 ; 0x7c 175de: 4b5e ldr r3, [pc, #376] ; (17758 ) 175e0: 4798 blx r3 style_init_reset(&styles->sb); 175e2: 4c5c ldr r4, [pc, #368] ; (17754 ) 175e4: 6820 ldr r0, [r4, #0] 175e6: 3080 adds r0, #128 ; 0x80 175e8: 4b5c ldr r3, [pc, #368] ; (1775c ) 175ea: 4798 blx r3 lv_style_set_bg_opa(&styles->sb, LV_STATE_DEFAULT, LV_OPA_COVER); 175ec: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 175ee: 22ff movs r2, #255 ; 0xff 175f0: 212c movs r1, #44 ; 0x2c 175f2: 3080 adds r0, #128 ; 0x80 175f4: 4b5a ldr r3, [pc, #360] ; (17760 ) 175f6: 4798 blx r3 lv_style_set_bg_color(&styles->sb, LV_STATE_DEFAULT, (IS_LIGHT ? lv_color_hex(0xcccfd1) : lv_color_hex(0x777f85))); 175f8: 6820 ldr r0, [r4, #0] 175fa: 6a23 ldr r3, [r4, #32] 175fc: f013 0302 ands.w r3, r3, #2 17600: bf14 ite ne 17602: 2119 movne r1, #25 17604: 210e moveq r1, #14 17606: 2b00 cmp r3, #0 17608: bf15 itete ne 1760a: 2433 movne r4, #51 ; 0x33 1760c: 241f moveq r4, #31 1760e: 231a movne r3, #26 17610: 2310 moveq r3, #16 17612: f04f 0200 mov.w r2, #0 17616: f363 0204 bfi r2, r3, #0, #5 1761a: f364 124a bfi r2, r4, #5, #6 1761e: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17622: 2129 movs r1, #41 ; 0x29 17624: 3080 adds r0, #128 ; 0x80 17626: 4b4c ldr r3, [pc, #304] ; (17758 ) 17628: 4798 blx r3 lv_style_set_radius(&styles->sb, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 1762a: 4c4a ldr r4, [pc, #296] ; (17754 ) 1762c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 1762e: f647 72ff movw r2, #32767 ; 0x7fff 17632: 2101 movs r1, #1 17634: 3080 adds r0, #128 ; 0x80 17636: 4b46 ldr r3, [pc, #280] ; (17750 ) 17638: 4798 blx r3 lv_style_set_size(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 1763a: 6824 ldr r4, [r4, #0] 1763c: 3480 adds r4, #128 ; 0x80 1763e: 2000 movs r0, #0 17640: 4b42 ldr r3, [pc, #264] ; (1774c ) 17642: 4798 blx r3 17644: ebc0 00c0 rsb r0, r0, r0, lsl #3 17648: 3050 adds r0, #80 ; 0x50 1764a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1764e: f281 81a0 bge.w 18992 17652: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 17654: 2103 movs r1, #3 17656: 4620 mov r0, r4 17658: 4b3d ldr r3, [pc, #244] ; (17750 ) 1765a: 4798 blx r3 lv_style_set_pad_right(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 1765c: 4b3d ldr r3, [pc, #244] ; (17754 ) 1765e: 681c ldr r4, [r3, #0] 17660: 3480 adds r4, #128 ; 0x80 17662: 2000 movs r0, #0 17664: 4b39 ldr r3, [pc, #228] ; (1774c ) 17666: 4798 blx r3 17668: ebc0 00c0 rsb r0, r0, r0, lsl #3 1766c: 3050 adds r0, #80 ; 0x50 1766e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17672: f281 819d bge.w 189b0 17676: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 17678: 2113 movs r1, #19 1767a: 4620 mov r0, r4 1767c: 4b34 ldr r3, [pc, #208] ; (17750 ) 1767e: 4798 blx r3 lv_style_set_pad_bottom(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 17680: 4b34 ldr r3, [pc, #208] ; (17754 ) 17682: 681c ldr r4, [r3, #0] 17684: 3480 adds r4, #128 ; 0x80 17686: 2000 movs r0, #0 17688: 4b30 ldr r3, [pc, #192] ; (1774c ) 1768a: 4798 blx r3 1768c: ebc0 00c0 rsb r0, r0, r0, lsl #3 17690: 3050 adds r0, #80 ; 0x50 17692: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17696: f281 819a bge.w 189ce 1769a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 1769c: 2111 movs r1, #17 1769e: 4620 mov r0, r4 176a0: 4b2b ldr r3, [pc, #172] ; (17750 ) 176a2: 4798 blx r3 style_init_reset(&styles->edge_flash); 176a4: 4c2b ldr r4, [pc, #172] ; (17754 ) 176a6: 6820 ldr r0, [r4, #0] 176a8: 3084 adds r0, #132 ; 0x84 176aa: 4d2c ldr r5, [pc, #176] ; (1775c ) 176ac: 47a8 blx r5 lv_style_set_bg_opa(&styles->edge_flash, LV_STATE_DEFAULT, LV_OPA_COVER); 176ae: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 176b0: 22ff movs r2, #255 ; 0xff 176b2: 212c movs r1, #44 ; 0x2c 176b4: 3084 adds r0, #132 ; 0x84 176b6: 4b2a ldr r3, [pc, #168] ; (17760 ) 176b8: 4798 blx r3 lv_style_set_bg_color(&styles->edge_flash, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 176ba: 6820 ldr r0, [r4, #0] 176bc: 2311 movs r3, #17 176be: f04f 0200 mov.w r2, #0 176c2: f363 0204 bfi r2, r3, #0, #5 176c6: 2122 movs r1, #34 ; 0x22 176c8: f361 124a bfi r2, r1, #5, #6 176cc: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 176d0: 2129 movs r1, #41 ; 0x29 176d2: 3084 adds r0, #132 ; 0x84 176d4: 4b20 ldr r3, [pc, #128] ; (17758 ) 176d6: 4798 blx r3 style_init_reset(&styles->ta_cursor); 176d8: 6820 ldr r0, [r4, #0] 176da: 30b4 adds r0, #180 ; 0xb4 176dc: 47a8 blx r5 lv_style_set_border_color(&styles->ta_cursor, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 176de: 6820 ldr r0, [r4, #0] 176e0: 6a23 ldr r3, [r4, #32] 176e2: f013 0302 ands.w r3, r3, #2 176e6: bf14 ite ne 176e8: 2106 movne r1, #6 176ea: 2114 moveq r1, #20 176ec: 2b00 cmp r3, #0 176ee: bf15 itete ne 176f0: 2410 movne r4, #16 176f2: 242a moveq r4, #42 ; 0x2a 176f4: 2309 movne r3, #9 176f6: 2315 moveq r3, #21 176f8: f04f 0200 mov.w r2, #0 176fc: f363 0204 bfi r2, r3, #0, #5 17700: f364 124a bfi r2, r4, #5, #6 17704: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 17708: 2139 movs r1, #57 ; 0x39 1770a: 30b4 adds r0, #180 ; 0xb4 1770c: 4b12 ldr r3, [pc, #72] ; (17758 ) 1770e: 4798 blx r3 lv_style_set_border_width(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(2)); 17710: 4b10 ldr r3, [pc, #64] ; (17754 ) 17712: 681c ldr r4, [r3, #0] 17714: 34b4 adds r4, #180 ; 0xb4 17716: 2000 movs r0, #0 17718: 4b0c ldr r3, [pc, #48] ; (1774c ) 1771a: 4798 blx r3 1771c: 3028 adds r0, #40 ; 0x28 1771e: 0040 lsls r0, r0, #1 17720: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17724: f281 8162 bge.w 189ec 17728: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 1772a: 2130 movs r1, #48 ; 0x30 1772c: 4620 mov r0, r4 1772e: 4b08 ldr r3, [pc, #32] ; (17750 ) 17730: 4798 blx r3 lv_style_set_pad_left(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(1)); 17732: 4b08 ldr r3, [pc, #32] ; (17754 ) 17734: 681c ldr r4, [r3, #0] 17736: 34b4 adds r4, #180 ; 0xb4 17738: 2000 movs r0, #0 1773a: 4b04 ldr r3, [pc, #16] ; (1774c ) 1773c: 4798 blx r3 1773e: 3050 adds r0, #80 ; 0x50 17740: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17744: f281 8164 bge.w 18a10 17748: 2201 movs r2, #1 1774a: e00b b.n 17764 1774c: 00010f25 .word 0x00010f25 17750: 000068c9 .word 0x000068c9 17754: 20006bd8 .word 0x20006bd8 17758: 00006a0d .word 0x00006a0d 1775c: 00014a49 .word 0x00014a49 17760: 00006b51 .word 0x00006b51 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 17764: 2112 movs r1, #18 17766: 4620 mov r0, r4 17768: 4dba ldr r5, [pc, #744] ; (17a54 ) 1776a: 47a8 blx r5 lv_style_set_border_side(&styles->ta_cursor, LV_STATE_DEFAULT, LV_BORDER_SIDE_LEFT); 1776c: 4cba ldr r4, [pc, #744] ; (17a58 ) 1776e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 17770: 2204 movs r2, #4 17772: 2131 movs r1, #49 ; 0x31 17774: 30b4 adds r0, #180 ; 0xb4 17776: 47a8 blx r5 style_init_reset(&styles->ta_placeholder); 17778: 6820 ldr r0, [r4, #0] 1777a: 30b8 adds r0, #184 ; 0xb8 1777c: 4bb7 ldr r3, [pc, #732] ; (17a5c ) 1777e: 4798 blx r3 lv_style_set_text_color(&styles->ta_placeholder, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 17780: 6820 ldr r0, [r4, #0] 17782: 30b8 adds r0, #184 ; 0xb8 17784: 6a23 ldr r3, [r4, #32] 17786: f013 0f02 tst.w r3, #2 1778a: f041 814e bne.w 18a2a 1778e: 2314 movs r3, #20 17790: 212b movs r1, #43 ; 0x2b 17792: 2417 movs r4, #23 17794: f04f 0200 mov.w r2, #0 17798: f364 0204 bfi r2, r4, #0, #5 1779c: f361 124a bfi r2, r1, #5, #6 177a0: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 177a4: f248 0189 movw r1, #32905 ; 0x8089 177a8: 4dad ldr r5, [pc, #692] ; (17a60 ) 177aa: 47a8 blx r5 style_init_reset(&styles->spinbox_cursor); 177ac: 4caa ldr r4, [pc, #680] ; (17a58 ) 177ae: 6820 ldr r0, [r4, #0] 177b0: 3098 adds r0, #152 ; 0x98 177b2: 4baa ldr r3, [pc, #680] ; (17a5c ) 177b4: 4798 blx r3 lv_style_set_bg_opa(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_OPA_COVER); 177b6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 177b8: 22ff movs r2, #255 ; 0xff 177ba: 212c movs r1, #44 ; 0x2c 177bc: 3098 adds r0, #152 ; 0x98 177be: 4ba9 ldr r3, [pc, #676] ; (17a64 ) 177c0: 4798 blx r3 lv_style_set_bg_color(&styles->spinbox_cursor, LV_STATE_DEFAULT, theme.color_primary); 177c2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 177c4: 89a2 ldrh r2, [r4, #12] 177c6: 2129 movs r1, #41 ; 0x29 177c8: 3098 adds r0, #152 ; 0x98 177ca: 47a8 blx r5 lv_style_set_text_color(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_COLOR_WHITE); 177cc: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 177ce: 4ba6 ldr r3, [pc, #664] ; (17a68 ) 177d0: 881a ldrh r2, [r3, #0] 177d2: f248 0189 movw r1, #32905 ; 0x8089 177d6: 3098 adds r0, #152 ; 0x98 177d8: 47a8 blx r5 lv_style_set_pad_top(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 177da: 6824 ldr r4, [r4, #0] 177dc: 3498 adds r4, #152 ; 0x98 177de: 2000 movs r0, #0 177e0: 4ba2 ldr r3, [pc, #648] ; (17a6c ) 177e2: 4798 blx r3 177e4: 2364 movs r3, #100 ; 0x64 177e6: fb03 f000 mul.w r0, r3, r0 177ea: 3050 adds r0, #80 ; 0x50 177ec: f5b0 7fa0 cmp.w r0, #320 ; 0x140 177f0: f281 8120 bge.w 18a34 177f4: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 177f6: 2110 movs r1, #16 177f8: 4620 mov r0, r4 177fa: 4b96 ldr r3, [pc, #600] ; (17a54 ) 177fc: 4798 blx r3 lv_style_set_pad_bottom(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 177fe: 4b96 ldr r3, [pc, #600] ; (17a58 ) 17800: 681c ldr r4, [r3, #0] 17802: 3498 adds r4, #152 ; 0x98 17804: 2000 movs r0, #0 17806: 4b99 ldr r3, [pc, #612] ; (17a6c ) 17808: 4798 blx r3 1780a: 2364 movs r3, #100 ; 0x64 1780c: fb03 f000 mul.w r0, r3, r0 17810: 3050 adds r0, #80 ; 0x50 17812: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17816: f281 811d bge.w 18a54 1781a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 1781c: 2111 movs r1, #17 1781e: 4620 mov r0, r4 17820: 4d8c ldr r5, [pc, #560] ; (17a54 ) 17822: 47a8 blx r5 style_init_reset(&styles->list_bg); 17824: 4c8c ldr r4, [pc, #560] ; (17a58 ) 17826: 6820 ldr r0, [r4, #0] 17828: 3074 adds r0, #116 ; 0x74 1782a: 4e8c ldr r6, [pc, #560] ; (17a5c ) 1782c: 47b0 blx r6 lv_style_set_clip_corner(&styles->list_bg, LV_STATE_DEFAULT, true); 1782e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 17830: 2201 movs r2, #1 17832: 2102 movs r1, #2 17834: 3074 adds r0, #116 ; 0x74 17836: 47a8 blx r5 lv_style_set_pad_left(&styles->list_bg, LV_STATE_DEFAULT, 0); 17838: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1783a: 2200 movs r2, #0 1783c: 2112 movs r1, #18 1783e: 3074 adds r0, #116 ; 0x74 17840: 47a8 blx r5 lv_style_set_pad_right(&styles->list_bg, LV_STATE_DEFAULT, 0); 17842: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 17844: 2200 movs r2, #0 17846: 2113 movs r1, #19 17848: 3074 adds r0, #116 ; 0x74 1784a: 47a8 blx r5 lv_style_set_pad_top(&styles->list_bg, LV_STATE_DEFAULT, 0); 1784c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1784e: 2200 movs r2, #0 17850: 2110 movs r1, #16 17852: 3074 adds r0, #116 ; 0x74 17854: 47a8 blx r5 lv_style_set_pad_bottom(&styles->list_bg, LV_STATE_DEFAULT, 0); 17856: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 17858: 2200 movs r2, #0 1785a: 2111 movs r1, #17 1785c: 3074 adds r0, #116 ; 0x74 1785e: 47a8 blx r5 lv_style_set_pad_inner(&styles->list_bg, LV_STATE_DEFAULT, 0); 17860: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 17862: 2200 movs r2, #0 17864: 2114 movs r1, #20 17866: 3074 adds r0, #116 ; 0x74 17868: 47a8 blx r5 style_init_reset(&styles->list_btn); 1786a: 6820 ldr r0, [r4, #0] 1786c: 3078 adds r0, #120 ; 0x78 1786e: 47b0 blx r6 lv_style_set_bg_opa(&styles->list_btn, LV_STATE_DEFAULT, LV_OPA_COVER); 17870: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 17872: 22ff movs r2, #255 ; 0xff 17874: 212c movs r1, #44 ; 0x2c 17876: 3078 adds r0, #120 ; 0x78 17878: 4b7a ldr r3, [pc, #488] ; (17a64 ) 1787a: 4798 blx r3 lv_style_set_bg_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG); 1787c: 6820 ldr r0, [r4, #0] 1787e: 3078 adds r0, #120 ; 0x78 17880: 6a23 ldr r3, [r4, #32] 17882: f013 0f02 tst.w r3, #2 17886: f041 80f5 bne.w 18a74 1788a: 230b movs r3, #11 1788c: 2118 movs r1, #24 1788e: 240e movs r4, #14 17890: f04f 0200 mov.w r2, #0 17894: f364 0204 bfi r2, r4, #0, #5 17898: f361 124a bfi r2, r1, #5, #6 1789c: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 178a0: 2129 movs r1, #41 ; 0x29 178a2: 4b6f ldr r3, [pc, #444] ; (17a60 ) 178a4: 4798 blx r3 lv_style_set_bg_color(&styles->list_btn, LV_STATE_PRESSED, COLOR_BG_PR); 178a6: 4b6c ldr r3, [pc, #432] ; (17a58 ) 178a8: 6818 ldr r0, [r3, #0] 178aa: 3078 adds r0, #120 ; 0x78 178ac: 6a1b ldr r3, [r3, #32] 178ae: f013 0f02 tst.w r3, #2 178b2: f041 80e4 bne.w 18a7e 178b6: 2309 movs r3, #9 178b8: 2113 movs r1, #19 178ba: 240a movs r4, #10 178bc: f04f 0200 mov.w r2, #0 178c0: f364 0204 bfi r2, r4, #0, #5 178c4: f361 124a bfi r2, r1, #5, #6 178c8: f363 22cf bfi r2, r3, #11, #5 178cc: f241 0129 movw r1, #4137 ; 0x1029 178d0: 4b63 ldr r3, [pc, #396] ; (17a60 ) 178d2: 4798 blx r3 lv_style_set_bg_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_DIS); 178d4: 4b60 ldr r3, [pc, #384] ; (17a58 ) 178d6: 6818 ldr r0, [r3, #0] 178d8: 3078 adds r0, #120 ; 0x78 178da: 6a1b ldr r3, [r3, #32] 178dc: f013 0f02 tst.w r3, #2 178e0: f041 80d2 bne.w 18a88 178e4: 230b movs r3, #11 178e6: 2118 movs r1, #24 178e8: 240e movs r4, #14 178ea: f04f 0200 mov.w r2, #0 178ee: f364 0204 bfi r2, r4, #0, #5 178f2: f361 124a bfi r2, r1, #5, #6 178f6: f363 22cf bfi r2, r3, #11, #5 178fa: f242 0129 movw r1, #8233 ; 0x2029 178fe: 4d58 ldr r5, [pc, #352] ; (17a60 ) 17900: 47a8 blx r5 lv_style_set_bg_color(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_CHK); 17902: 4c55 ldr r4, [pc, #340] ; (17a58 ) 17904: 6820 ldr r0, [r4, #0] 17906: 89a2 ldrh r2, [r4, #12] 17908: f240 1129 movw r1, #297 ; 0x129 1790c: 3078 adds r0, #120 ; 0x78 1790e: 47a8 blx r5 lv_style_set_bg_color(&styles->list_btn, LV_STATE_CHECKED | LV_STATE_PRESSED, COLOR_BG_PR_CHK); 17910: 6826 ldr r6, [r4, #0] 17912: 3678 adds r6, #120 ; 0x78 17914: 2133 movs r1, #51 ; 0x33 17916: 89a0 ldrh r0, [r4, #12] 17918: 4b55 ldr r3, [pc, #340] ; (17a70 ) 1791a: 4798 blx r3 1791c: 4602 mov r2, r0 1791e: f241 1129 movw r1, #4393 ; 0x1129 17922: 4630 mov r0, r6 17924: 47a8 blx r5 lv_style_set_text_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 17926: 6820 ldr r0, [r4, #0] 17928: 3078 adds r0, #120 ; 0x78 1792a: 6a23 ldr r3, [r4, #32] 1792c: f013 0f02 tst.w r3, #2 17930: f041 80af bne.w 18a92 17934: 231f movs r3, #31 17936: 213f movs r1, #63 ; 0x3f 17938: 461c mov r4, r3 1793a: f04f 0200 mov.w r2, #0 1793e: f364 0204 bfi r2, r4, #0, #5 17942: f361 124a bfi r2, r1, #5, #6 17946: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 1794a: f248 0189 movw r1, #32905 ; 0x8089 1794e: 4d44 ldr r5, [pc, #272] ; (17a60 ) 17950: 47a8 blx r5 lv_style_set_text_color(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 17952: 4c41 ldr r4, [pc, #260] ; (17a58 ) 17954: 6820 ldr r0, [r4, #0] 17956: f04f 32ff mov.w r2, #4294967295 1795a: f248 1189 movw r1, #33161 ; 0x8189 1795e: 3078 adds r0, #120 ; 0x78 17960: 47a8 blx r5 lv_style_set_text_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 17962: 6820 ldr r0, [r4, #0] 17964: 6a23 ldr r3, [r4, #32] 17966: f013 0302 ands.w r3, r3, #2 1796a: bf14 ite ne 1796c: 212a movne r1, #42 ; 0x2a 1796e: 2126 moveq r1, #38 ; 0x26 17970: 2b00 cmp r3, #0 17972: bf14 ite ne 17974: 2315 movne r3, #21 17976: 2313 moveq r3, #19 17978: f04f 0200 mov.w r2, #0 1797c: f363 0204 bfi r2, r3, #0, #5 17980: f361 124a bfi r2, r1, #5, #6 17984: f363 22cf bfi r2, r3, #11, #5 17988: f24a 0189 movw r1, #41097 ; 0xa089 1798c: 3078 adds r0, #120 ; 0x78 1798e: 47a8 blx r5 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 17990: 6820 ldr r0, [r4, #0] 17992: 3078 adds r0, #120 ; 0x78 17994: 6a23 ldr r3, [r4, #32] 17996: f013 0f02 tst.w r3, #2 1799a: f041 807f bne.w 18a9c 1799e: 231f movs r3, #31 179a0: 213f movs r1, #63 ; 0x3f 179a2: 461c mov r4, r3 179a4: f04f 0200 mov.w r2, #0 179a8: f364 0204 bfi r2, r4, #0, #5 179ac: f361 124a bfi r2, r1, #5, #6 179b0: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 179b4: f248 01a9 movw r1, #32937 ; 0x80a9 179b8: 4d29 ldr r5, [pc, #164] ; (17a60 ) 179ba: 47a8 blx r5 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 179bc: 4c26 ldr r4, [pc, #152] ; (17a58 ) 179be: 6820 ldr r0, [r4, #0] 179c0: f04f 32ff mov.w r2, #4294967295 179c4: f248 11a9 movw r1, #33193 ; 0x81a9 179c8: 3078 adds r0, #120 ; 0x78 179ca: 47a8 blx r5 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 179cc: 6820 ldr r0, [r4, #0] 179ce: 6a23 ldr r3, [r4, #32] 179d0: f013 0302 ands.w r3, r3, #2 179d4: bf14 ite ne 179d6: 212a movne r1, #42 ; 0x2a 179d8: 2126 moveq r1, #38 ; 0x26 179da: 2b00 cmp r3, #0 179dc: bf14 ite ne 179de: 2315 movne r3, #21 179e0: 2313 moveq r3, #19 179e2: f04f 0200 mov.w r2, #0 179e6: f363 0204 bfi r2, r3, #0, #5 179ea: f361 124a bfi r2, r1, #5, #6 179ee: f363 22cf bfi r2, r3, #11, #5 179f2: f24a 01a9 movw r1, #41129 ; 0xa0a9 179f6: 3078 adds r0, #120 ; 0x78 179f8: 47a8 blx r5 lv_style_set_border_side(&styles->list_btn, LV_STATE_DEFAULT, LV_BORDER_SIDE_BOTTOM); 179fa: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 179fc: 2201 movs r2, #1 179fe: 2131 movs r1, #49 ; 0x31 17a00: 3078 adds r0, #120 ; 0x78 17a02: 4b14 ldr r3, [pc, #80] ; (17a54 ) 17a04: 4798 blx r3 lv_style_set_border_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_BORDER); 17a06: 6820 ldr r0, [r4, #0] 17a08: 6a23 ldr r3, [r4, #32] 17a0a: f013 0302 ands.w r3, r3, #2 17a0e: bf14 ite ne 17a10: 211a movne r1, #26 17a12: 2110 moveq r1, #16 17a14: 2b00 cmp r3, #0 17a16: bf15 itete ne 17a18: 2437 movne r4, #55 ; 0x37 17a1a: 2422 moveq r4, #34 ; 0x22 17a1c: 231c movne r3, #28 17a1e: 2312 moveq r3, #18 17a20: f04f 0200 mov.w r2, #0 17a24: f363 0204 bfi r2, r3, #0, #5 17a28: f364 124a bfi r2, r4, #5, #6 17a2c: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 17a30: 2139 movs r1, #57 ; 0x39 17a32: 3078 adds r0, #120 ; 0x78 17a34: 47a8 blx r5 lv_style_set_border_color(&styles->list_btn, LV_STATE_FOCUSED, theme.color_primary); 17a36: 4c08 ldr r4, [pc, #32] ; (17a58 ) 17a38: 6820 ldr r0, [r4, #0] 17a3a: 89a2 ldrh r2, [r4, #12] 17a3c: f240 2139 movw r1, #569 ; 0x239 17a40: 3078 adds r0, #120 ; 0x78 17a42: 47a8 blx r5 lv_style_set_border_width(&styles->list_btn, LV_STATE_DEFAULT, 1); 17a44: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 17a46: 2201 movs r2, #1 17a48: 2130 movs r1, #48 ; 0x30 17a4a: 3078 adds r0, #120 ; 0x78 17a4c: 4b01 ldr r3, [pc, #4] ; (17a54 ) 17a4e: 4798 blx r3 17a50: e010 b.n 17a74 17a52: bf00 nop 17a54: 000068c9 .word 0x000068c9 17a58: 20006bd8 .word 0x20006bd8 17a5c: 00014a49 .word 0x00014a49 17a60: 00006a0d .word 0x00006a0d 17a64: 00006b51 .word 0x00006b51 17a68: 0002956c .word 0x0002956c 17a6c: 00010f25 .word 0x00010f25 17a70: 00011beb .word 0x00011beb lv_style_set_pad_left(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 17a74: 6824 ldr r4, [r4, #0] 17a76: 3478 adds r4, #120 ; 0x78 17a78: 2000 movs r0, #0 17a7a: 4bba ldr r3, [pc, #744] ; (17d64 ) 17a7c: 4798 blx r3 17a7e: 2801 cmp r0, #1 17a80: f241 8011 bls.w 18aa6 17a84: 2000 movs r0, #0 17a86: 4bb8 ldr r3, [pc, #736] ; (17d68 ) 17a88: 4798 blx r3 17a8a: ebc0 1000 rsb r0, r0, r0, lsl #4 17a8e: 0040 lsls r0, r0, #1 17a90: 3050 adds r0, #80 ; 0x50 17a92: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17a96: f281 8021 bge.w 18adc 17a9a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 17a9c: 2112 movs r1, #18 17a9e: 4620 mov r0, r4 17aa0: 4bb2 ldr r3, [pc, #712] ; (17d6c ) 17aa2: 4798 blx r3 lv_style_set_pad_right(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 17aa4: 4bb2 ldr r3, [pc, #712] ; (17d70 ) 17aa6: 681c ldr r4, [r3, #0] 17aa8: 3478 adds r4, #120 ; 0x78 17aaa: 2000 movs r0, #0 17aac: 4bad ldr r3, [pc, #692] ; (17d64 ) 17aae: 4798 blx r3 17ab0: 2801 cmp r0, #1 17ab2: f241 8023 bls.w 18afc 17ab6: 2000 movs r0, #0 17ab8: 4bab ldr r3, [pc, #684] ; (17d68 ) 17aba: 4798 blx r3 17abc: ebc0 1000 rsb r0, r0, r0, lsl #4 17ac0: 0040 lsls r0, r0, #1 17ac2: 3050 adds r0, #80 ; 0x50 17ac4: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17ac8: f281 8033 bge.w 18b32 17acc: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 17ace: 2113 movs r1, #19 17ad0: 4620 mov r0, r4 17ad2: 4ba6 ldr r3, [pc, #664] ; (17d6c ) 17ad4: 4798 blx r3 lv_style_set_pad_top(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 17ad6: 4ba6 ldr r3, [pc, #664] ; (17d70 ) 17ad8: 681c ldr r4, [r3, #0] 17ada: 3478 adds r4, #120 ; 0x78 17adc: 2000 movs r0, #0 17ade: 4ba1 ldr r3, [pc, #644] ; (17d64 ) 17ae0: 4798 blx r3 17ae2: 2801 cmp r0, #1 17ae4: f241 8035 bls.w 18b52 17ae8: 2000 movs r0, #0 17aea: 4b9f ldr r3, [pc, #636] ; (17d68 ) 17aec: 4798 blx r3 17aee: ebc0 1000 rsb r0, r0, r0, lsl #4 17af2: 0040 lsls r0, r0, #1 17af4: 3050 adds r0, #80 ; 0x50 17af6: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17afa: f281 8045 bge.w 18b88 17afe: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 17b00: 2110 movs r1, #16 17b02: 4620 mov r0, r4 17b04: 4b99 ldr r3, [pc, #612] ; (17d6c ) 17b06: 4798 blx r3 lv_style_set_pad_bottom(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 17b08: 4b99 ldr r3, [pc, #612] ; (17d70 ) 17b0a: 681c ldr r4, [r3, #0] 17b0c: 3478 adds r4, #120 ; 0x78 17b0e: 2000 movs r0, #0 17b10: 4b94 ldr r3, [pc, #592] ; (17d64 ) 17b12: 4798 blx r3 17b14: 2801 cmp r0, #1 17b16: f241 8047 bls.w 18ba8 17b1a: 2000 movs r0, #0 17b1c: 4b92 ldr r3, [pc, #584] ; (17d68 ) 17b1e: 4798 blx r3 17b20: ebc0 1000 rsb r0, r0, r0, lsl #4 17b24: 0040 lsls r0, r0, #1 17b26: 3050 adds r0, #80 ; 0x50 17b28: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17b2c: f281 8057 bge.w 18bde 17b30: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 17b32: 2111 movs r1, #17 17b34: 4620 mov r0, r4 17b36: 4b8d ldr r3, [pc, #564] ; (17d6c ) 17b38: 4798 blx r3 lv_style_set_pad_inner(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 17b3a: 4b8d ldr r3, [pc, #564] ; (17d70 ) 17b3c: 681c ldr r4, [r3, #0] 17b3e: 3478 adds r4, #120 ; 0x78 17b40: 2000 movs r0, #0 17b42: 4b88 ldr r3, [pc, #544] ; (17d64 ) 17b44: 4798 blx r3 17b46: 2801 cmp r0, #1 17b48: f241 8059 bls.w 18bfe 17b4c: 2000 movs r0, #0 17b4e: 4b86 ldr r3, [pc, #536] ; (17d68 ) 17b50: 4798 blx r3 17b52: ebc0 1000 rsb r0, r0, r0, lsl #4 17b56: 0040 lsls r0, r0, #1 17b58: 3050 adds r0, #80 ; 0x50 17b5a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17b5e: f281 8069 bge.w 18c34 17b62: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 17b64: 2114 movs r1, #20 17b66: 4620 mov r0, r4 17b68: 4b80 ldr r3, [pc, #512] ; (17d6c ) 17b6a: 4798 blx r3 lv_style_set_transform_width(&styles->list_btn, LV_STATE_DEFAULT, - PAD_DEF); 17b6c: 4b80 ldr r3, [pc, #512] ; (17d70 ) 17b6e: 681c ldr r4, [r3, #0] 17b70: 3478 adds r4, #120 ; 0x78 17b72: 2000 movs r0, #0 17b74: 4b7b ldr r3, [pc, #492] ; (17d64 ) 17b76: 4798 blx r3 17b78: 2801 cmp r0, #1 17b7a: f241 806b bls.w 18c54 17b7e: 2000 movs r0, #0 17b80: 4b79 ldr r3, [pc, #484] ; (17d68 ) 17b82: 4798 blx r3 17b84: ebc0 1000 rsb r0, r0, r0, lsl #4 17b88: 0040 lsls r0, r0, #1 17b8a: 3050 adds r0, #80 ; 0x50 17b8c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17b90: f281 807c bge.w 18c8c 17b94: f04f 32ff mov.w r2, #4294967295 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 17b98: 2104 movs r1, #4 17b9a: 4620 mov r0, r4 17b9c: 4d73 ldr r5, [pc, #460] ; (17d6c ) 17b9e: 47a8 blx r5 lv_style_set_transform_width(&styles->list_btn, LV_STATE_PRESSED, 0); 17ba0: 4c73 ldr r4, [pc, #460] ; (17d70 ) 17ba2: 6820 ldr r0, [r4, #0] 17ba4: 2200 movs r2, #0 17ba6: f241 0104 movw r1, #4100 ; 0x1004 17baa: 3078 adds r0, #120 ; 0x78 17bac: 47a8 blx r5 lv_style_set_transform_width(&styles->list_btn, LV_STATE_CHECKED, 0); 17bae: 6820 ldr r0, [r4, #0] 17bb0: 2200 movs r2, #0 17bb2: f44f 7182 mov.w r1, #260 ; 0x104 17bb6: 3078 adds r0, #120 ; 0x78 17bb8: 47a8 blx r5 lv_style_set_transform_width(&styles->list_btn, LV_STATE_DISABLED, 0); 17bba: 6820 ldr r0, [r4, #0] 17bbc: 2200 movs r2, #0 17bbe: f242 0104 movw r1, #8196 ; 0x2004 17bc2: 3078 adds r0, #120 ; 0x78 17bc4: 47a8 blx r5 lv_style_set_transition_time(&styles->list_btn, LV_STATE_DEFAULT, TRANSITION_TIME); 17bc6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 17bc8: 2296 movs r2, #150 ; 0x96 17bca: 21b0 movs r1, #176 ; 0xb0 17bcc: 3078 adds r0, #120 ; 0x78 17bce: 47a8 blx r5 lv_style_set_transition_prop_6(&styles->list_btn, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); 17bd0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 17bd2: 2229 movs r2, #41 ; 0x29 17bd4: 21b7 movs r1, #183 ; 0xb7 17bd6: 3078 adds r0, #120 ; 0x78 17bd8: 47a8 blx r5 lv_style_set_transition_prop_5(&styles->list_btn, LV_STATE_DEFAULT, LV_STYLE_TRANSFORM_WIDTH); 17bda: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 17bdc: 2204 movs r2, #4 17bde: 21b6 movs r1, #182 ; 0xb6 17be0: 3078 adds r0, #120 ; 0x78 17be2: 47a8 blx r5 style_init_reset(&styles->ddlist_page); 17be4: 6820 ldr r0, [r4, #0] 17be6: 3054 adds r0, #84 ; 0x54 17be8: 4b62 ldr r3, [pc, #392] ; (17d74 ) 17bea: 4798 blx r3 lv_style_set_text_line_space(&styles->ddlist_page, LV_STATE_DEFAULT, LV_DPX(20)); 17bec: 6824 ldr r4, [r4, #0] 17bee: 3454 adds r4, #84 ; 0x54 17bf0: 2000 movs r0, #0 17bf2: 4b5d ldr r3, [pc, #372] ; (17d68 ) 17bf4: 4798 blx r3 17bf6: eb00 0080 add.w r0, r0, r0, lsl #2 17bfa: 0080 lsls r0, r0, #2 17bfc: 3050 adds r0, #80 ; 0x50 17bfe: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17c02: f281 8053 bge.w 18cac 17c06: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 17c08: f248 0181 movw r1, #32897 ; 0x8081 17c0c: 4620 mov r0, r4 17c0e: 4d57 ldr r5, [pc, #348] ; (17d6c ) 17c10: 47a8 blx r5 lv_style_set_clip_corner(&styles->ddlist_page, LV_STATE_DEFAULT, true); 17c12: 4c57 ldr r4, [pc, #348] ; (17d70 ) 17c14: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 17c16: 2201 movs r2, #1 17c18: 2102 movs r1, #2 17c1a: 3054 adds r0, #84 ; 0x54 17c1c: 47a8 blx r5 style_init_reset(&styles->ddlist_sel); 17c1e: 6820 ldr r0, [r4, #0] 17c20: 3058 adds r0, #88 ; 0x58 17c22: 4b54 ldr r3, [pc, #336] ; (17d74 ) 17c24: 4798 blx r3 lv_style_set_bg_opa(&styles->ddlist_sel, LV_STATE_DEFAULT, LV_OPA_COVER); 17c26: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 17c28: 22ff movs r2, #255 ; 0xff 17c2a: 212c movs r1, #44 ; 0x2c 17c2c: 3058 adds r0, #88 ; 0x58 17c2e: 4b52 ldr r3, [pc, #328] ; (17d78 ) 17c30: 4798 blx r3 lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_DEFAULT, theme.color_primary); 17c32: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17c34: 89a2 ldrh r2, [r4, #12] 17c36: 2129 movs r1, #41 ; 0x29 17c38: 3058 adds r0, #88 ; 0x58 17c3a: 4d50 ldr r5, [pc, #320] ; (17d7c ) 17c3c: 47a8 blx r5 lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex3(0xfff) : lv_color_hex3(0xfff)); 17c3e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17c40: f04f 32ff mov.w r2, #4294967295 17c44: f248 0189 movw r1, #32905 ; 0x8089 17c48: 3058 adds r0, #88 ; 0x58 17c4a: 47a8 blx r5 lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_PR); 17c4c: 6820 ldr r0, [r4, #0] 17c4e: 3058 adds r0, #88 ; 0x58 17c50: 6a23 ldr r3, [r4, #32] 17c52: f013 0f02 tst.w r3, #2 17c56: f041 8039 bne.w 18ccc 17c5a: 2309 movs r3, #9 17c5c: 2113 movs r1, #19 17c5e: 240a movs r4, #10 17c60: f04f 0200 mov.w r2, #0 17c64: f364 0204 bfi r2, r4, #0, #5 17c68: f361 124a bfi r2, r1, #5, #6 17c6c: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17c70: f241 0129 movw r1, #4137 ; 0x1029 17c74: 4b41 ldr r3, [pc, #260] ; (17d7c ) 17c76: 4798 blx r3 lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 17c78: 4b3d ldr r3, [pc, #244] ; (17d70 ) 17c7a: 6818 ldr r0, [r3, #0] 17c7c: 3058 adds r0, #88 ; 0x58 17c7e: 6a1b ldr r3, [r3, #32] 17c80: f013 0f02 tst.w r3, #2 17c84: f041 8027 bne.w 18cd6 17c88: 231f movs r3, #31 17c8a: 213f movs r1, #63 ; 0x3f 17c8c: 461c mov r4, r3 17c8e: f04f 0200 mov.w r2, #0 17c92: f364 0204 bfi r2, r4, #0, #5 17c96: f361 124a bfi r2, r1, #5, #6 17c9a: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17c9e: f249 0189 movw r1, #37001 ; 0x9089 17ca2: 4b36 ldr r3, [pc, #216] ; (17d7c ) 17ca4: 4798 blx r3 style_init_reset(&styles->roller_bg); 17ca6: 4c32 ldr r4, [pc, #200] ; (17d70 ) 17ca8: 6820 ldr r0, [r4, #0] 17caa: 3088 adds r0, #136 ; 0x88 17cac: 4b31 ldr r3, [pc, #196] ; (17d74 ) 17cae: 4798 blx r3 lv_style_set_text_line_space(&styles->roller_bg, LV_STATE_DEFAULT, LV_DPX(25)); 17cb0: 6824 ldr r4, [r4, #0] 17cb2: 3488 adds r4, #136 ; 0x88 17cb4: 2000 movs r0, #0 17cb6: 4b2c ldr r3, [pc, #176] ; (17d68 ) 17cb8: 4798 blx r3 17cba: eb00 0080 add.w r0, r0, r0, lsl #2 17cbe: eb00 0080 add.w r0, r0, r0, lsl #2 17cc2: 3050 adds r0, #80 ; 0x50 17cc4: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17cc8: f281 800a bge.w 18ce0 17ccc: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 17cce: f248 0181 movw r1, #32897 ; 0x8081 17cd2: 4620 mov r0, r4 17cd4: 4b25 ldr r3, [pc, #148] ; (17d6c ) 17cd6: 4798 blx r3 style_init_reset(&styles->roller_sel); 17cd8: 4c25 ldr r4, [pc, #148] ; (17d70 ) 17cda: 6820 ldr r0, [r4, #0] 17cdc: 308c adds r0, #140 ; 0x8c 17cde: 4e25 ldr r6, [pc, #148] ; (17d74 ) 17ce0: 47b0 blx r6 lv_style_set_bg_opa(&styles->roller_sel, LV_STATE_DEFAULT, LV_OPA_COVER); 17ce2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 17ce4: 22ff movs r2, #255 ; 0xff 17ce6: 212c movs r1, #44 ; 0x2c 17ce8: 308c adds r0, #140 ; 0x8c 17cea: 4d23 ldr r5, [pc, #140] ; (17d78 ) 17cec: 47a8 blx r5 lv_style_set_bg_color(&styles->roller_sel, LV_STATE_DEFAULT, theme.color_primary); 17cee: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17cf0: 89a2 ldrh r2, [r4, #12] 17cf2: 2129 movs r1, #41 ; 0x29 17cf4: 308c adds r0, #140 ; 0x8c 17cf6: 4f21 ldr r7, [pc, #132] ; (17d7c ) 17cf8: 47b8 blx r7 lv_style_set_text_color(&styles->roller_sel, LV_STATE_DEFAULT, LV_COLOR_WHITE); 17cfa: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17cfc: 4b20 ldr r3, [pc, #128] ; (17d80 ) 17cfe: 881a ldrh r2, [r3, #0] 17d00: f248 0189 movw r1, #32905 ; 0x8089 17d04: 308c adds r0, #140 ; 0x8c 17d06: 47b8 blx r7 style_init_reset(&styles->tabview_btns_bg); 17d08: 6820 ldr r0, [r4, #0] 17d0a: 30a8 adds r0, #168 ; 0xa8 17d0c: 47b0 blx r6 lv_style_set_bg_opa(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_OPA_COVER); 17d0e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 17d10: 22ff movs r2, #255 ; 0xff 17d12: 212c movs r1, #44 ; 0x2c 17d14: 30a8 adds r0, #168 ; 0xa8 17d16: 47a8 blx r5 lv_style_set_bg_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_BG); 17d18: 6820 ldr r0, [r4, #0] 17d1a: 30a8 adds r0, #168 ; 0xa8 17d1c: 6a23 ldr r3, [r4, #32] 17d1e: f013 0f02 tst.w r3, #2 17d22: f040 87ee bne.w 18d02 17d26: 230b movs r3, #11 17d28: 2118 movs r1, #24 17d2a: 240e movs r4, #14 17d2c: f04f 0200 mov.w r2, #0 17d30: f364 0204 bfi r2, r4, #0, #5 17d34: f361 124a bfi r2, r1, #5, #6 17d38: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17d3c: 2129 movs r1, #41 ; 0x29 17d3e: 4b0f ldr r3, [pc, #60] ; (17d7c ) 17d40: 4798 blx r3 lv_style_set_border_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, 17d42: 4b0b ldr r3, [pc, #44] ; (17d70 ) 17d44: 6818 ldr r0, [r3, #0] IS_LIGHT ? lv_color_hex(0xe4eaf0) : lv_color_hex(0x3b3e42)); 17d46: 6a1b ldr r3, [r3, #32] lv_style_set_border_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, 17d48: f013 0302 ands.w r3, r3, #2 17d4c: bf14 ite ne 17d4e: 211c movne r1, #28 17d50: 2107 moveq r1, #7 17d52: 2b00 cmp r3, #0 17d54: bf15 itete ne 17d56: 243a movne r4, #58 ; 0x3a 17d58: 240f moveq r4, #15 17d5a: 231e movne r3, #30 17d5c: 2308 moveq r3, #8 17d5e: f04f 0200 mov.w r2, #0 17d62: e00f b.n 17d84 17d64: 00010f41 .word 0x00010f41 17d68: 00010f25 .word 0x00010f25 17d6c: 000068c9 .word 0x000068c9 17d70: 20006bd8 .word 0x20006bd8 17d74: 00014a49 .word 0x00014a49 17d78: 00006b51 .word 0x00006b51 17d7c: 00006a0d .word 0x00006a0d 17d80: 0002956c .word 0x0002956c 17d84: f363 0204 bfi r2, r3, #0, #5 17d88: f364 124a bfi r2, r4, #5, #6 17d8c: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 17d90: 2139 movs r1, #57 ; 0x39 17d92: 30a8 adds r0, #168 ; 0xa8 17d94: 4bb6 ldr r3, [pc, #728] ; (18070 ) 17d96: 4798 blx r3 lv_style_set_border_width(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(5)); 17d98: 4bb6 ldr r3, [pc, #728] ; (18074 ) 17d9a: 681c ldr r4, [r3, #0] 17d9c: 34a8 adds r4, #168 ; 0xa8 17d9e: 2000 movs r0, #0 17da0: 4bb5 ldr r3, [pc, #724] ; (18078 ) 17da2: 4798 blx r3 17da4: eb00 0080 add.w r0, r0, r0, lsl #2 17da8: 3050 adds r0, #80 ; 0x50 17daa: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17dae: f280 87ad bge.w 18d0c 17db2: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 17db4: 2130 movs r1, #48 ; 0x30 17db6: 4620 mov r0, r4 17db8: 4db0 ldr r5, [pc, #704] ; (1807c ) 17dba: 47a8 blx r5 lv_style_set_border_side(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_BORDER_SIDE_BOTTOM); 17dbc: 4cad ldr r4, [pc, #692] ; (18074 ) 17dbe: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 17dc0: 2201 movs r2, #1 17dc2: 2131 movs r1, #49 ; 0x31 17dc4: 30a8 adds r0, #168 ; 0xa8 17dc6: 47a8 blx r5 lv_style_set_text_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 17dc8: 6820 ldr r0, [r4, #0] 17dca: 6a23 ldr r3, [r4, #32] 17dcc: f013 0302 ands.w r3, r3, #2 17dd0: bf14 ite ne 17dd2: 2107 movne r1, #7 17dd4: 211c moveq r1, #28 17dd6: 2b00 cmp r3, #0 17dd8: bf15 itete ne 17dda: 240f movne r4, #15 17ddc: 243a moveq r4, #58 ; 0x3a 17dde: 2308 movne r3, #8 17de0: 231d moveq r3, #29 17de2: f04f 0200 mov.w r2, #0 17de6: f363 0204 bfi r2, r3, #0, #5 17dea: f364 124a bfi r2, r4, #5, #6 17dee: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17df2: f248 0189 movw r1, #32905 ; 0x8089 17df6: 30a8 adds r0, #168 ; 0xa8 17df8: 4d9d ldr r5, [pc, #628] ; (18070 ) 17dfa: 47a8 blx r5 lv_style_set_text_font(&styles->tabview_btns_bg, LV_STATE_DEFAULT, theme.font_normal); 17dfc: 4c9d ldr r4, [pc, #628] ; (18074 ) 17dfe: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 17e00: 6962 ldr r2, [r4, #20] 17e02: f248 018e movw r1, #32910 ; 0x808e 17e06: 30a8 adds r0, #168 ; 0xa8 17e08: 4b9d ldr r3, [pc, #628] ; (18080 ) 17e0a: 4798 blx r3 lv_style_set_image_recolor(&styles->tabview_btns_bg, LV_STATE_DEFAULT, lv_color_hex(0x979a9f)); 17e0c: 6820 ldr r0, [r4, #0] 17e0e: f04f 0200 mov.w r2, #0 17e12: 2313 movs r3, #19 17e14: f363 0204 bfi r2, r3, #0, #5 17e18: 2326 movs r3, #38 ; 0x26 17e1a: f363 124a bfi r2, r3, #5, #6 17e1e: 2312 movs r3, #18 17e20: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 17e24: f248 01a9 movw r1, #32937 ; 0x80a9 17e28: 30a8 adds r0, #168 ; 0xa8 17e2a: 47a8 blx r5 lv_style_set_pad_top(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 17e2c: 6824 ldr r4, [r4, #0] 17e2e: 34a8 adds r4, #168 ; 0xa8 17e30: 2000 movs r0, #0 17e32: 4b91 ldr r3, [pc, #580] ; (18078 ) 17e34: 4798 blx r3 17e36: ebc0 00c0 rsb r0, r0, r0, lsl #3 17e3a: 3050 adds r0, #80 ; 0x50 17e3c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17e40: f280 8773 bge.w 18d2a 17e44: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 17e46: 2110 movs r1, #16 17e48: 4620 mov r0, r4 17e4a: 4b8c ldr r3, [pc, #560] ; (1807c ) 17e4c: 4798 blx r3 lv_style_set_pad_left(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 17e4e: 4b89 ldr r3, [pc, #548] ; (18074 ) 17e50: 681c ldr r4, [r3, #0] 17e52: 34a8 adds r4, #168 ; 0xa8 17e54: 2000 movs r0, #0 17e56: 4b88 ldr r3, [pc, #544] ; (18078 ) 17e58: 4798 blx r3 17e5a: ebc0 00c0 rsb r0, r0, r0, lsl #3 17e5e: 3050 adds r0, #80 ; 0x50 17e60: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17e64: f280 8774 bge.w 18d50 17e68: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 17e6a: 2112 movs r1, #18 17e6c: 4620 mov r0, r4 17e6e: 4b83 ldr r3, [pc, #524] ; (1807c ) 17e70: 4798 blx r3 lv_style_set_pad_right(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 17e72: 4b80 ldr r3, [pc, #512] ; (18074 ) 17e74: 681c ldr r4, [r3, #0] 17e76: 34a8 adds r4, #168 ; 0xa8 17e78: 2000 movs r0, #0 17e7a: 4b7f ldr r3, [pc, #508] ; (18078 ) 17e7c: 4798 blx r3 17e7e: ebc0 00c0 rsb r0, r0, r0, lsl #3 17e82: 3050 adds r0, #80 ; 0x50 17e84: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17e88: f280 8771 bge.w 18d6e 17e8c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 17e8e: 2113 movs r1, #19 17e90: 4620 mov r0, r4 17e92: 4b7a ldr r3, [pc, #488] ; (1807c ) 17e94: 4798 blx r3 style_init_reset(&styles->tabview_btns); 17e96: 4c77 ldr r4, [pc, #476] ; (18074 ) 17e98: 6820 ldr r0, [r4, #0] 17e9a: 30a4 adds r0, #164 ; 0xa4 17e9c: 4b79 ldr r3, [pc, #484] ; (18084 ) 17e9e: 4798 blx r3 lv_style_set_bg_opa(&styles->tabview_btns, LV_STATE_PRESSED, LV_OPA_50); 17ea0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 17ea2: 227f movs r2, #127 ; 0x7f 17ea4: f241 012c movw r1, #4140 ; 0x102c 17ea8: 30a4 adds r0, #164 ; 0xa4 17eaa: 4b77 ldr r3, [pc, #476] ; (18088 ) 17eac: 4798 blx r3 lv_style_set_bg_color(&styles->tabview_btns, LV_STATE_PRESSED, lv_color_hex3(0x888)); 17eae: 6820 ldr r0, [r4, #0] 17eb0: 2311 movs r3, #17 17eb2: f04f 0200 mov.w r2, #0 17eb6: f363 0204 bfi r2, r3, #0, #5 17eba: 2122 movs r1, #34 ; 0x22 17ebc: f361 124a bfi r2, r1, #5, #6 17ec0: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17ec4: f241 0129 movw r1, #4137 ; 0x1029 17ec8: 30a4 adds r0, #164 ; 0xa4 17eca: 4b69 ldr r3, [pc, #420] ; (18070 ) 17ecc: 4798 blx r3 lv_style_set_text_color(&styles->tabview_btns, LV_STATE_CHECKED, COLOR_SCR_TEXT); 17ece: 6820 ldr r0, [r4, #0] 17ed0: 6a23 ldr r3, [r4, #32] 17ed2: f013 0302 ands.w r3, r3, #2 17ed6: bf14 ite ne 17ed8: 2107 movne r1, #7 17eda: 211c moveq r1, #28 17edc: 2b00 cmp r3, #0 17ede: bf15 itete ne 17ee0: 240f movne r4, #15 17ee2: 243a moveq r4, #58 ; 0x3a 17ee4: 2308 movne r3, #8 17ee6: 231d moveq r3, #29 17ee8: f04f 0200 mov.w r2, #0 17eec: f363 0204 bfi r2, r3, #0, #5 17ef0: f364 124a bfi r2, r4, #5, #6 17ef4: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17ef8: f248 1189 movw r1, #33161 ; 0x8189 17efc: 30a4 adds r0, #164 ; 0xa4 17efe: 4b5c ldr r3, [pc, #368] ; (18070 ) 17f00: 4798 blx r3 lv_style_set_pad_top(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 17f02: 4b5c ldr r3, [pc, #368] ; (18074 ) 17f04: 681c ldr r4, [r3, #0] 17f06: 34a4 adds r4, #164 ; 0xa4 17f08: 2000 movs r0, #0 17f0a: 4b5b ldr r3, [pc, #364] ; (18078 ) 17f0c: 4798 blx r3 17f0e: eb00 0080 add.w r0, r0, r0, lsl #2 17f12: 0080 lsls r0, r0, #2 17f14: 3050 adds r0, #80 ; 0x50 17f16: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17f1a: f280 8737 bge.w 18d8c 17f1e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 17f20: 2110 movs r1, #16 17f22: 4620 mov r0, r4 17f24: 4b55 ldr r3, [pc, #340] ; (1807c ) 17f26: 4798 blx r3 lv_style_set_pad_bottom(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 17f28: 4b52 ldr r3, [pc, #328] ; (18074 ) 17f2a: 681c ldr r4, [r3, #0] 17f2c: 34a4 adds r4, #164 ; 0xa4 17f2e: 2000 movs r0, #0 17f30: 4b51 ldr r3, [pc, #324] ; (18078 ) 17f32: 4798 blx r3 17f34: eb00 0080 add.w r0, r0, r0, lsl #2 17f38: 0080 lsls r0, r0, #2 17f3a: 3050 adds r0, #80 ; 0x50 17f3c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17f40: f280 8734 bge.w 18dac 17f44: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 17f46: 2111 movs r1, #17 17f48: 4620 mov r0, r4 17f4a: 4b4c ldr r3, [pc, #304] ; (1807c ) 17f4c: 4798 blx r3 lv_style_set_text_color(&styles->tabview_btns, LV_STATE_FOCUSED, theme.color_primary); 17f4e: 4c49 ldr r4, [pc, #292] ; (18074 ) 17f50: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17f52: 89a2 ldrh r2, [r4, #12] 17f54: f248 2189 movw r1, #33417 ; 0x8289 17f58: 30a4 adds r0, #164 ; 0xa4 17f5a: 4d45 ldr r5, [pc, #276] ; (18070 ) 17f5c: 47a8 blx r5 lv_style_set_text_color(&styles->tabview_btns, LV_STATE_EDITED, theme.color_secondary); 17f5e: 6820 ldr r0, [r4, #0] 17f60: 89e2 ldrh r2, [r4, #14] 17f62: f248 4189 movw r1, #33929 ; 0x8489 17f66: 30a4 adds r0, #164 ; 0xa4 17f68: 47a8 blx r5 style_init_reset(&styles->tabview_indic); 17f6a: 6820 ldr r0, [r4, #0] 17f6c: 30ac adds r0, #172 ; 0xac 17f6e: 4b45 ldr r3, [pc, #276] ; (18084 ) 17f70: 4798 blx r3 lv_style_set_bg_opa(&styles->tabview_indic, LV_STATE_DEFAULT, LV_OPA_COVER); 17f72: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 17f74: 22ff movs r2, #255 ; 0xff 17f76: 212c movs r1, #44 ; 0x2c 17f78: 30ac adds r0, #172 ; 0xac 17f7a: 4b43 ldr r3, [pc, #268] ; (18088 ) 17f7c: 4798 blx r3 lv_style_set_bg_color(&styles->tabview_indic, LV_STATE_DEFAULT, theme.color_primary); 17f7e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17f80: 89a2 ldrh r2, [r4, #12] 17f82: 2129 movs r1, #41 ; 0x29 17f84: 30ac adds r0, #172 ; 0xac 17f86: 47a8 blx r5 lv_style_set_bg_color(&styles->tabview_indic, LV_STATE_EDITED, theme.color_secondary); 17f88: 6820 ldr r0, [r4, #0] 17f8a: 89e2 ldrh r2, [r4, #14] 17f8c: f240 4129 movw r1, #1065 ; 0x429 17f90: 30ac adds r0, #172 ; 0xac 17f92: 47a8 blx r5 lv_style_set_size(&styles->tabview_indic, LV_STATE_DEFAULT, LV_DPX(5)); 17f94: 6824 ldr r4, [r4, #0] 17f96: 34ac adds r4, #172 ; 0xac 17f98: 2000 movs r0, #0 17f9a: 4b37 ldr r3, [pc, #220] ; (18078 ) 17f9c: 4798 blx r3 17f9e: eb00 0080 add.w r0, r0, r0, lsl #2 17fa2: 3050 adds r0, #80 ; 0x50 17fa4: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17fa8: f280 8710 bge.w 18dcc 17fac: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 17fae: 2103 movs r1, #3 17fb0: 4620 mov r0, r4 17fb2: 4d32 ldr r5, [pc, #200] ; (1807c ) 17fb4: 47a8 blx r5 lv_style_set_radius(&styles->tabview_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 17fb6: 4c2f ldr r4, [pc, #188] ; (18074 ) 17fb8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 17fba: f647 72ff movw r2, #32767 ; 0x7fff 17fbe: 2101 movs r1, #1 17fc0: 30ac adds r0, #172 ; 0xac 17fc2: 47a8 blx r5 style_init_reset(&styles->tabview_page_scrl); 17fc4: 6820 ldr r0, [r4, #0] 17fc6: 30b0 adds r0, #176 ; 0xb0 17fc8: 4b2e ldr r3, [pc, #184] ; (18084 ) 17fca: 4798 blx r3 lv_style_set_pad_top(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 17fcc: 6824 ldr r4, [r4, #0] 17fce: 34b0 adds r4, #176 ; 0xb0 17fd0: 2000 movs r0, #0 17fd2: 4b2e ldr r3, [pc, #184] ; (1808c ) 17fd4: 4798 blx r3 17fd6: 2801 cmp r0, #1 17fd8: f240 8707 bls.w 18dea 17fdc: 2000 movs r0, #0 17fde: 4b26 ldr r3, [pc, #152] ; (18078 ) 17fe0: 4798 blx r3 17fe2: ebc0 1000 rsb r0, r0, r0, lsl #4 17fe6: 0040 lsls r0, r0, #1 17fe8: 3050 adds r0, #80 ; 0x50 17fea: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17fee: f280 8717 bge.w 18e20 17ff2: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 17ff4: 2110 movs r1, #16 17ff6: 4620 mov r0, r4 17ff8: 4b20 ldr r3, [pc, #128] ; (1807c ) 17ffa: 4798 blx r3 lv_style_set_pad_bottom(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 17ffc: 4b1d ldr r3, [pc, #116] ; (18074 ) 17ffe: 681c ldr r4, [r3, #0] 18000: 34b0 adds r4, #176 ; 0xb0 18002: 2000 movs r0, #0 18004: 4b21 ldr r3, [pc, #132] ; (1808c ) 18006: 4798 blx r3 18008: 2801 cmp r0, #1 1800a: f240 8719 bls.w 18e40 1800e: 2000 movs r0, #0 18010: 4b19 ldr r3, [pc, #100] ; (18078 ) 18012: 4798 blx r3 18014: ebc0 1000 rsb r0, r0, r0, lsl #4 18018: 0040 lsls r0, r0, #1 1801a: 3050 adds r0, #80 ; 0x50 1801c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18020: f280 8729 bge.w 18e76 18024: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 18026: 2111 movs r1, #17 18028: 4620 mov r0, r4 1802a: 4b14 ldr r3, [pc, #80] ; (1807c ) 1802c: 4798 blx r3 lv_style_set_pad_left(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 1802e: 4b11 ldr r3, [pc, #68] ; (18074 ) 18030: 681c ldr r4, [r3, #0] 18032: 34b0 adds r4, #176 ; 0xb0 18034: 2000 movs r0, #0 18036: 4b15 ldr r3, [pc, #84] ; (1808c ) 18038: 4798 blx r3 1803a: 2801 cmp r0, #1 1803c: f240 872b bls.w 18e96 18040: 2000 movs r0, #0 18042: 4b0d ldr r3, [pc, #52] ; (18078 ) 18044: 4798 blx r3 18046: ebc0 1000 rsb r0, r0, r0, lsl #4 1804a: 0040 lsls r0, r0, #1 1804c: 3050 adds r0, #80 ; 0x50 1804e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18052: f280 873b bge.w 18ecc 18056: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 18058: 2112 movs r1, #18 1805a: 4620 mov r0, r4 1805c: 4b07 ldr r3, [pc, #28] ; (1807c ) 1805e: 4798 blx r3 lv_style_set_pad_right(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 18060: 4b04 ldr r3, [pc, #16] ; (18074 ) 18062: 681c ldr r4, [r3, #0] 18064: 34b0 adds r4, #176 ; 0xb0 18066: 2000 movs r0, #0 18068: 4b08 ldr r3, [pc, #32] ; (1808c ) 1806a: 4798 blx r3 1806c: 2801 cmp r0, #1 1806e: e00f b.n 18090 18070: 00006a0d .word 0x00006a0d 18074: 20006bd8 .word 0x20006bd8 18078: 00010f25 .word 0x00010f25 1807c: 000068c9 .word 0x000068c9 18080: 00006c81 .word 0x00006c81 18084: 00014a49 .word 0x00014a49 18088: 00006b51 .word 0x00006b51 1808c: 00010f41 .word 0x00010f41 18090: f240 872c bls.w 18eec 18094: 2000 movs r0, #0 18096: 4bbd ldr r3, [pc, #756] ; (1838c ) 18098: 4798 blx r3 1809a: ebc0 1000 rsb r0, r0, r0, lsl #4 1809e: 0040 lsls r0, r0, #1 180a0: 3050 adds r0, #80 ; 0x50 180a2: f5b0 7fa0 cmp.w r0, #320 ; 0x140 180a6: f280 873c bge.w 18f22 180aa: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 180ac: 2113 movs r1, #19 180ae: 4620 mov r0, r4 180b0: 4bb7 ldr r3, [pc, #732] ; (18390 ) 180b2: 4798 blx r3 lv_style_set_pad_inner(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 180b4: 4bb7 ldr r3, [pc, #732] ; (18394 ) 180b6: 681c ldr r4, [r3, #0] 180b8: 34b0 adds r4, #176 ; 0xb0 180ba: 2000 movs r0, #0 180bc: 4bb6 ldr r3, [pc, #728] ; (18398 ) 180be: 4798 blx r3 180c0: 2801 cmp r0, #1 180c2: f240 873e bls.w 18f42 180c6: 2000 movs r0, #0 180c8: 4bb0 ldr r3, [pc, #704] ; (1838c ) 180ca: 4798 blx r3 180cc: ebc0 1000 rsb r0, r0, r0, lsl #4 180d0: 0040 lsls r0, r0, #1 180d2: 3050 adds r0, #80 ; 0x50 180d4: f5b0 7fa0 cmp.w r0, #320 ; 0x140 180d8: f280 874e bge.w 18f78 180dc: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 180de: 2114 movs r1, #20 180e0: 4620 mov r0, r4 180e2: 4bab ldr r3, [pc, #684] ; (18390 ) 180e4: 4798 blx r3 style_init_reset(&styles->table_cell); 180e6: 4cab ldr r4, [pc, #684] ; (18394 ) 180e8: 6820 ldr r0, [r4, #0] 180ea: 30a0 adds r0, #160 ; 0xa0 180ec: 4bab ldr r3, [pc, #684] ; (1839c ) 180ee: 4798 blx r3 lv_style_set_border_color(&styles->table_cell, LV_STATE_DEFAULT, COLOR_BG_BORDER); 180f0: 6820 ldr r0, [r4, #0] 180f2: 6a23 ldr r3, [r4, #32] 180f4: f013 0302 ands.w r3, r3, #2 180f8: bf14 ite ne 180fa: 211a movne r1, #26 180fc: 2110 moveq r1, #16 180fe: 2b00 cmp r3, #0 18100: bf15 itete ne 18102: 2437 movne r4, #55 ; 0x37 18104: 2422 moveq r4, #34 ; 0x22 18106: 231c movne r3, #28 18108: 2312 moveq r3, #18 1810a: f04f 0200 mov.w r2, #0 1810e: f363 0204 bfi r2, r3, #0, #5 18112: f364 124a bfi r2, r4, #5, #6 18116: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 1811a: 2139 movs r1, #57 ; 0x39 1811c: 30a0 adds r0, #160 ; 0xa0 1811e: 4ba0 ldr r3, [pc, #640] ; (183a0 ) 18120: 4798 blx r3 lv_style_set_border_width(&styles->table_cell, LV_STATE_DEFAULT, 1); 18122: 4c9c ldr r4, [pc, #624] ; (18394 ) 18124: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 18126: 2201 movs r2, #1 18128: 2130 movs r1, #48 ; 0x30 1812a: 30a0 adds r0, #160 ; 0xa0 1812c: 4d98 ldr r5, [pc, #608] ; (18390 ) 1812e: 47a8 blx r5 lv_style_set_border_side(&styles->table_cell, LV_STATE_DEFAULT, LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM); 18130: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 18132: 2203 movs r2, #3 18134: 2131 movs r1, #49 ; 0x31 18136: 30a0 adds r0, #160 ; 0xa0 18138: 47a8 blx r5 lv_style_set_pad_left(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 1813a: 6824 ldr r4, [r4, #0] 1813c: 34a0 adds r4, #160 ; 0xa0 1813e: 2000 movs r0, #0 18140: 4b95 ldr r3, [pc, #596] ; (18398 ) 18142: 4798 blx r3 18144: 2801 cmp r0, #1 18146: f240 8727 bls.w 18f98 1814a: 2000 movs r0, #0 1814c: 4b8f ldr r3, [pc, #572] ; (1838c ) 1814e: 4798 blx r3 18150: ebc0 1000 rsb r0, r0, r0, lsl #4 18154: 0040 lsls r0, r0, #1 18156: 3050 adds r0, #80 ; 0x50 18158: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1815c: f280 8737 bge.w 18fce 18160: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 18162: 2112 movs r1, #18 18164: 4620 mov r0, r4 18166: 4b8a ldr r3, [pc, #552] ; (18390 ) 18168: 4798 blx r3 lv_style_set_pad_right(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 1816a: 4b8a ldr r3, [pc, #552] ; (18394 ) 1816c: 681c ldr r4, [r3, #0] 1816e: 34a0 adds r4, #160 ; 0xa0 18170: 2000 movs r0, #0 18172: 4b89 ldr r3, [pc, #548] ; (18398 ) 18174: 4798 blx r3 18176: 2801 cmp r0, #1 18178: f240 8739 bls.w 18fee 1817c: 2000 movs r0, #0 1817e: 4b83 ldr r3, [pc, #524] ; (1838c ) 18180: 4798 blx r3 18182: ebc0 1000 rsb r0, r0, r0, lsl #4 18186: 0040 lsls r0, r0, #1 18188: 3050 adds r0, #80 ; 0x50 1818a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1818e: f280 8749 bge.w 19024 18192: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 18194: 2113 movs r1, #19 18196: 4620 mov r0, r4 18198: 4b7d ldr r3, [pc, #500] ; (18390 ) 1819a: 4798 blx r3 lv_style_set_pad_top(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 1819c: 4b7d ldr r3, [pc, #500] ; (18394 ) 1819e: 681c ldr r4, [r3, #0] 181a0: 34a0 adds r4, #160 ; 0xa0 181a2: 2000 movs r0, #0 181a4: 4b7c ldr r3, [pc, #496] ; (18398 ) 181a6: 4798 blx r3 181a8: 2801 cmp r0, #1 181aa: f240 874b bls.w 19044 181ae: 2000 movs r0, #0 181b0: 4b76 ldr r3, [pc, #472] ; (1838c ) 181b2: 4798 blx r3 181b4: ebc0 1000 rsb r0, r0, r0, lsl #4 181b8: 0040 lsls r0, r0, #1 181ba: 3050 adds r0, #80 ; 0x50 181bc: f5b0 7fa0 cmp.w r0, #320 ; 0x140 181c0: f280 8760 bge.w 19084 181c4: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 181c6: 2110 movs r1, #16 181c8: 4620 mov r0, r4 181ca: 4b71 ldr r3, [pc, #452] ; (18390 ) 181cc: 4798 blx r3 lv_style_set_pad_bottom(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 181ce: 4b71 ldr r3, [pc, #452] ; (18394 ) 181d0: 681c ldr r4, [r3, #0] 181d2: 34a0 adds r4, #160 ; 0xa0 181d4: 2000 movs r0, #0 181d6: 4b70 ldr r3, [pc, #448] ; (18398 ) 181d8: 4798 blx r3 181da: 2801 cmp r0, #1 181dc: f240 8762 bls.w 190a4 181e0: 2000 movs r0, #0 181e2: 4b6a ldr r3, [pc, #424] ; (1838c ) 181e4: 4798 blx r3 181e6: ebc0 1000 rsb r0, r0, r0, lsl #4 181ea: 0040 lsls r0, r0, #1 181ec: 3050 adds r0, #80 ; 0x50 181ee: f5b0 7fa0 cmp.w r0, #320 ; 0x140 181f2: f280 8772 bge.w 190da 181f6: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 181f8: 2111 movs r1, #17 181fa: 4620 mov r0, r4 181fc: 4b64 ldr r3, [pc, #400] ; (18390 ) 181fe: 4798 blx r3 theme.apply_xcb = theme_apply; 18200: 4c64 ldr r4, [pc, #400] ; (18394 ) 18202: 4b68 ldr r3, [pc, #416] ; (183a4 ) 18204: 60a3 str r3, [r4, #8] inited = true; 18206: 2301 movs r3, #1 18208: 7123 strb r3, [r4, #4] lv_obj_report_style_mod(NULL); 1820a: 2000 movs r0, #0 1820c: 4b66 ldr r3, [pc, #408] ; (183a8 ) 1820e: 4798 blx r3 } 18210: f104 0008 add.w r0, r4, #8 18214: 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)); 18218: 20bc movs r0, #188 ; 0xbc 1821a: 4b64 ldr r3, [pc, #400] ; (183ac ) 1821c: 4798 blx r3 1821e: 4b64 ldr r3, [pc, #400] ; (183b0 ) 18220: 6018 str r0, [r3, #0] styles = (theme_styles_t *)LV_GC_ROOT(_lv_theme_material_styles); 18222: 4b5c ldr r3, [pc, #368] ; (18394 ) 18224: 6018 str r0, [r3, #0] 18226: f7fe bc8e b.w 16b46 lv_style_set_text_color(&styles->chart_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 1822a: 2315 movs r3, #21 1822c: 212a movs r1, #42 ; 0x2a 1822e: 461c mov r4, r3 18230: f7fe bcb3 b.w 16b9a lv_style_set_line_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(1)); 18234: 2000 movs r0, #0 18236: 4b55 ldr r3, [pc, #340] ; (1838c ) 18238: 4798 blx r3 1823a: 3050 adds r0, #80 ; 0x50 1823c: 4b5d ldr r3, [pc, #372] ; (183b4 ) 1823e: fb83 2300 smull r2, r3, r3, r0 18242: 17c2 asrs r2, r0, #31 18244: ebc2 12a3 rsb r2, r2, r3, asr #6 18248: b212 sxth r2, r2 1824a: f7fe bcc2 b.w 16bd2 lv_style_set_line_dash_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 1824e: 2000 movs r0, #0 18250: 4b4e ldr r3, [pc, #312] ; (1838c ) 18252: 4798 blx r3 18254: eb00 0080 add.w r0, r0, r0, lsl #2 18258: 0040 lsls r0, r0, #1 1825a: 3050 adds r0, #80 ; 0x50 1825c: 4b55 ldr r3, [pc, #340] ; (183b4 ) 1825e: fb83 2300 smull r2, r3, r3, r0 18262: 17c2 asrs r2, r0, #31 18264: ebc2 12a3 rsb r2, r2, r3, asr #6 18268: b212 sxth r2, r2 1826a: f7fe bcc5 b.w 16bf8 lv_style_set_line_dash_gap(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 1826e: 2000 movs r0, #0 18270: 4b46 ldr r3, [pc, #280] ; (1838c ) 18272: 4798 blx r3 18274: eb00 0080 add.w r0, r0, r0, lsl #2 18278: 0040 lsls r0, r0, #1 1827a: 3050 adds r0, #80 ; 0x50 1827c: 4b4d ldr r3, [pc, #308] ; (183b4 ) 1827e: fb83 2300 smull r2, r3, r3, r0 18282: 17c2 asrs r2, r0, #31 18284: ebc2 12a3 rsb r2, r2, r3, asr #6 18288: b212 sxth r2, r2 1828a: f7fe bcc8 b.w 16c1e lv_style_set_line_width(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(3)); 1828e: 2000 movs r0, #0 18290: 4b3e ldr r3, [pc, #248] ; (1838c ) 18292: 4798 blx r3 18294: eb00 0040 add.w r0, r0, r0, lsl #1 18298: 3050 adds r0, #80 ; 0x50 1829a: 4b46 ldr r3, [pc, #280] ; (183b4 ) 1829c: fb83 2300 smull r2, r3, r3, r0 182a0: 17c2 asrs r2, r0, #31 182a2: ebc2 12a3 rsb r2, r2, r3, asr #6 182a6: b212 sxth r2, r2 182a8: f7fe bce9 b.w 16c7e lv_style_set_size(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(4)); 182ac: 2000 movs r0, #0 182ae: 4b37 ldr r3, [pc, #220] ; (1838c ) 182b0: 4798 blx r3 182b2: 3014 adds r0, #20 182b4: 0080 lsls r0, r0, #2 182b6: 4b3f ldr r3, [pc, #252] ; (183b4 ) 182b8: fb83 2300 smull r2, r3, r3, r0 182bc: 17c2 asrs r2, r0, #31 182be: ebc2 12a3 rsb r2, r2, r3, asr #6 182c2: b212 sxth r2, r2 182c4: f7fe bcec b.w 16ca0 lv_style_set_pad_inner(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(2)); /*Space between columns*/ 182c8: 2000 movs r0, #0 182ca: 4b30 ldr r3, [pc, #192] ; (1838c ) 182cc: 4798 blx r3 182ce: 3028 adds r0, #40 ; 0x28 182d0: 0040 lsls r0, r0, #1 182d2: 4b38 ldr r3, [pc, #224] ; (183b4 ) 182d4: fb83 2300 smull r2, r3, r3, r0 182d8: 17c2 asrs r2, r0, #31 182da: ebc2 12a3 rsb r2, r2, r3, asr #6 182de: b212 sxth r2, r2 182e0: f7fe bcef b.w 16cc2 lv_style_set_radius(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(1)); 182e4: 2000 movs r0, #0 182e6: 4b29 ldr r3, [pc, #164] ; (1838c ) 182e8: 4798 blx r3 182ea: 3050 adds r0, #80 ; 0x50 182ec: 4b31 ldr r3, [pc, #196] ; (183b4 ) 182ee: fb83 2300 smull r2, r3, r3, r0 182f2: 17c2 asrs r2, r0, #31 182f4: ebc2 12a3 rsb r2, r2, r3, asr #6 182f8: b212 sxth r2, r2 182fa: f7fe bcf2 b.w 16ce2 lv_style_set_pad_top(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 182fe: 2000 movs r0, #0 18300: 4b22 ldr r3, [pc, #136] ; (1838c ) 18302: 4798 blx r3 18304: ebc0 1000 rsb r0, r0, r0, lsl #4 18308: 3050 adds r0, #80 ; 0x50 1830a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1830e: da02 bge.n 18316 18310: 2201 movs r2, #1 18312: f7fe bd03 b.w 16d1c 18316: 2000 movs r0, #0 18318: 4b1c ldr r3, [pc, #112] ; (1838c ) 1831a: 4798 blx r3 1831c: ebc0 1000 rsb r0, r0, r0, lsl #4 18320: 3050 adds r0, #80 ; 0x50 18322: 4b24 ldr r3, [pc, #144] ; (183b4 ) 18324: fb83 2300 smull r2, r3, r3, r0 18328: 17c2 asrs r2, r0, #31 1832a: ebc2 12a3 rsb r2, r2, r3, asr #6 1832e: b212 sxth r2, r2 18330: f7fe bcf4 b.w 16d1c 18334: 2000 movs r0, #0 18336: 4b15 ldr r3, [pc, #84] ; (1838c ) 18338: 4798 blx r3 1833a: ebc0 1000 rsb r0, r0, r0, lsl #4 1833e: 0040 lsls r0, r0, #1 18340: 3050 adds r0, #80 ; 0x50 18342: 4b1c ldr r3, [pc, #112] ; (183b4 ) 18344: fb83 2300 smull r2, r3, r3, r0 18348: 17c2 asrs r2, r0, #31 1834a: ebc2 12a3 rsb r2, r2, r3, asr #6 1834e: b212 sxth r2, r2 18350: f7fe bce4 b.w 16d1c lv_style_set_pad_left(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 18354: 2000 movs r0, #0 18356: 4b0d ldr r3, [pc, #52] ; (1838c ) 18358: 4798 blx r3 1835a: ebc0 1000 rsb r0, r0, r0, lsl #4 1835e: 3050 adds r0, #80 ; 0x50 18360: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18364: da02 bge.n 1836c 18366: 2201 movs r2, #1 18368: f7fe bcf1 b.w 16d4e 1836c: 2000 movs r0, #0 1836e: 4b07 ldr r3, [pc, #28] ; (1838c ) 18370: 4798 blx r3 18372: ebc0 1000 rsb r0, r0, r0, lsl #4 18376: 3050 adds r0, #80 ; 0x50 18378: 4b0e ldr r3, [pc, #56] ; (183b4 ) 1837a: fb83 2300 smull r2, r3, r3, r0 1837e: 17c2 asrs r2, r0, #31 18380: ebc2 12a3 rsb r2, r2, r3, asr #6 18384: b212 sxth r2, r2 18386: f7fe bce2 b.w 16d4e 1838a: bf00 nop 1838c: 00010f25 .word 0x00010f25 18390: 000068c9 .word 0x000068c9 18394: 20006bd8 .word 0x20006bd8 18398: 00010f41 .word 0x00010f41 1839c: 00014a49 .word 0x00014a49 183a0: 00006a0d .word 0x00006a0d 183a4: 000141e1 .word 0x000141e1 183a8: 00003c3d .word 0x00003c3d 183ac: 000123c5 .word 0x000123c5 183b0: 20006d48 .word 0x20006d48 183b4: 66666667 .word 0x66666667 183b8: 2000 movs r0, #0 183ba: 4bc7 ldr r3, [pc, #796] ; (186d8 ) 183bc: 4798 blx r3 183be: ebc0 1000 rsb r0, r0, r0, lsl #4 183c2: 0040 lsls r0, r0, #1 183c4: 3050 adds r0, #80 ; 0x50 183c6: 4bc5 ldr r3, [pc, #788] ; (186dc ) 183c8: fb83 2300 smull r2, r3, r3, r0 183cc: 17c2 asrs r2, r0, #31 183ce: ebc2 12a3 rsb r2, r2, r3, asr #6 183d2: b212 sxth r2, r2 183d4: f7fe bcbb b.w 16d4e lv_style_set_pad_right(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 183d8: 2000 movs r0, #0 183da: 4bbf ldr r3, [pc, #764] ; (186d8 ) 183dc: 4798 blx r3 183de: ebc0 1000 rsb r0, r0, r0, lsl #4 183e2: 3050 adds r0, #80 ; 0x50 183e4: f5b0 7fa0 cmp.w r0, #320 ; 0x140 183e8: da02 bge.n 183f0 183ea: 2201 movs r2, #1 183ec: f7fe bcc8 b.w 16d80 183f0: 2000 movs r0, #0 183f2: 4bb9 ldr r3, [pc, #740] ; (186d8 ) 183f4: 4798 blx r3 183f6: ebc0 1000 rsb r0, r0, r0, lsl #4 183fa: 3050 adds r0, #80 ; 0x50 183fc: 4bb7 ldr r3, [pc, #732] ; (186dc ) 183fe: fb83 2300 smull r2, r3, r3, r0 18402: 17c2 asrs r2, r0, #31 18404: ebc2 12a3 rsb r2, r2, r3, asr #6 18408: b212 sxth r2, r2 1840a: f7fe bcb9 b.w 16d80 1840e: 2000 movs r0, #0 18410: 4bb1 ldr r3, [pc, #708] ; (186d8 ) 18412: 4798 blx r3 18414: ebc0 1000 rsb r0, r0, r0, lsl #4 18418: 0040 lsls r0, r0, #1 1841a: 3050 adds r0, #80 ; 0x50 1841c: 4baf ldr r3, [pc, #700] ; (186dc ) 1841e: fb83 2300 smull r2, r3, r3, r0 18422: 17c2 asrs r2, r0, #31 18424: ebc2 12a3 rsb r2, r2, r3, asr #6 18428: b212 sxth r2, r2 1842a: f7fe bca9 b.w 16d80 lv_style_set_pad_bottom(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 1842e: 2000 movs r0, #0 18430: 4ba9 ldr r3, [pc, #676] ; (186d8 ) 18432: 4798 blx r3 18434: ebc0 1000 rsb r0, r0, r0, lsl #4 18438: 3050 adds r0, #80 ; 0x50 1843a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1843e: da02 bge.n 18446 18440: 2201 movs r2, #1 18442: f7fe bcb6 b.w 16db2 18446: 2000 movs r0, #0 18448: 4ba3 ldr r3, [pc, #652] ; (186d8 ) 1844a: 4798 blx r3 1844c: ebc0 1000 rsb r0, r0, r0, lsl #4 18450: 3050 adds r0, #80 ; 0x50 18452: 4ba2 ldr r3, [pc, #648] ; (186dc ) 18454: fb83 2300 smull r2, r3, r3, r0 18458: 17c2 asrs r2, r0, #31 1845a: ebc2 12a3 rsb r2, r2, r3, asr #6 1845e: b212 sxth r2, r2 18460: f7fe bca7 b.w 16db2 18464: 2000 movs r0, #0 18466: 4b9c ldr r3, [pc, #624] ; (186d8 ) 18468: 4798 blx r3 1846a: ebc0 1000 rsb r0, r0, r0, lsl #4 1846e: 0040 lsls r0, r0, #1 18470: 3050 adds r0, #80 ; 0x50 18472: 4b9a ldr r3, [pc, #616] ; (186dc ) 18474: fb83 2300 smull r2, r3, r3, r0 18478: 17c2 asrs r2, r0, #31 1847a: ebc2 12a3 rsb r2, r2, r3, asr #6 1847e: b212 sxth r2, r2 18480: f7fe bc97 b.w 16db2 lv_style_set_text_color(&styles->calendar_daynames, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex3(0xeee)); 18484: 2306 movs r3, #6 18486: 2110 movs r1, #16 18488: 2409 movs r4, #9 1848a: f7fe bcdc b.w 16e46 lv_style_set_pad_left(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 1848e: 2000 movs r0, #0 18490: 4b91 ldr r3, [pc, #580] ; (186d8 ) 18492: 4798 blx r3 18494: ebc0 1000 rsb r0, r0, r0, lsl #4 18498: 3050 adds r0, #80 ; 0x50 1849a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1849e: da02 bge.n 184a6 184a0: 2201 movs r2, #1 184a2: f7fe bcf1 b.w 16e88 184a6: 2000 movs r0, #0 184a8: 4b8b ldr r3, [pc, #556] ; (186d8 ) 184aa: 4798 blx r3 184ac: ebc0 1000 rsb r0, r0, r0, lsl #4 184b0: 3050 adds r0, #80 ; 0x50 184b2: 4b8a ldr r3, [pc, #552] ; (186dc ) 184b4: fb83 2300 smull r2, r3, r3, r0 184b8: 17c2 asrs r2, r0, #31 184ba: ebc2 12a3 rsb r2, r2, r3, asr #6 184be: b212 sxth r2, r2 184c0: f7fe bce2 b.w 16e88 184c4: 2000 movs r0, #0 184c6: 4b84 ldr r3, [pc, #528] ; (186d8 ) 184c8: 4798 blx r3 184ca: ebc0 1000 rsb r0, r0, r0, lsl #4 184ce: 0040 lsls r0, r0, #1 184d0: 3050 adds r0, #80 ; 0x50 184d2: 4b82 ldr r3, [pc, #520] ; (186dc ) 184d4: fb83 2300 smull r2, r3, r3, r0 184d8: 17c2 asrs r2, r0, #31 184da: ebc2 12a3 rsb r2, r2, r3, asr #6 184de: b212 sxth r2, r2 184e0: f7fe bcd2 b.w 16e88 lv_style_set_pad_right(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 184e4: 2000 movs r0, #0 184e6: 4b7c ldr r3, [pc, #496] ; (186d8 ) 184e8: 4798 blx r3 184ea: ebc0 1000 rsb r0, r0, r0, lsl #4 184ee: 3050 adds r0, #80 ; 0x50 184f0: f5b0 7fa0 cmp.w r0, #320 ; 0x140 184f4: da02 bge.n 184fc 184f6: 2201 movs r2, #1 184f8: f7fe bcdf b.w 16eba 184fc: 2000 movs r0, #0 184fe: 4b76 ldr r3, [pc, #472] ; (186d8 ) 18500: 4798 blx r3 18502: ebc0 1000 rsb r0, r0, r0, lsl #4 18506: 3050 adds r0, #80 ; 0x50 18508: 4b74 ldr r3, [pc, #464] ; (186dc ) 1850a: fb83 2300 smull r2, r3, r3, r0 1850e: 17c2 asrs r2, r0, #31 18510: ebc2 12a3 rsb r2, r2, r3, asr #6 18514: b212 sxth r2, r2 18516: f7fe bcd0 b.w 16eba 1851a: 2000 movs r0, #0 1851c: 4b6e ldr r3, [pc, #440] ; (186d8 ) 1851e: 4798 blx r3 18520: ebc0 1000 rsb r0, r0, r0, lsl #4 18524: 0040 lsls r0, r0, #1 18526: 3050 adds r0, #80 ; 0x50 18528: 4b6c ldr r3, [pc, #432] ; (186dc ) 1852a: fb83 2300 smull r2, r3, r3, r0 1852e: 17c2 asrs r2, r0, #31 18530: ebc2 12a3 rsb r2, r2, r3, asr #6 18534: b212 sxth r2, r2 18536: f7fe bcc0 b.w 16eba lv_style_set_pad_bottom(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 1853a: 2000 movs r0, #0 1853c: 4b66 ldr r3, [pc, #408] ; (186d8 ) 1853e: 4798 blx r3 18540: ebc0 1000 rsb r0, r0, r0, lsl #4 18544: 3050 adds r0, #80 ; 0x50 18546: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1854a: da02 bge.n 18552 1854c: 2201 movs r2, #1 1854e: f7fe bccd b.w 16eec 18552: 2000 movs r0, #0 18554: 4b60 ldr r3, [pc, #384] ; (186d8 ) 18556: 4798 blx r3 18558: ebc0 1000 rsb r0, r0, r0, lsl #4 1855c: 3050 adds r0, #80 ; 0x50 1855e: 4b5f ldr r3, [pc, #380] ; (186dc ) 18560: fb83 2300 smull r2, r3, r3, r0 18564: 17c2 asrs r2, r0, #31 18566: ebc2 12a3 rsb r2, r2, r3, asr #6 1856a: b212 sxth r2, r2 1856c: f7fe bcbe b.w 16eec 18570: 2000 movs r0, #0 18572: 4b59 ldr r3, [pc, #356] ; (186d8 ) 18574: 4798 blx r3 18576: ebc0 1000 rsb r0, r0, r0, lsl #4 1857a: 0040 lsls r0, r0, #1 1857c: 3050 adds r0, #80 ; 0x50 1857e: 4b57 ldr r3, [pc, #348] ; (186dc ) 18580: fb83 2300 smull r2, r3, r3, r0 18584: 17c2 asrs r2, r0, #31 18586: ebc2 12a3 rsb r2, r2, r3, asr #6 1858a: b212 sxth r2, r2 1858c: f7fe bcae b.w 16eec lv_style_set_radius(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(4)); 18590: 2000 movs r0, #0 18592: 4b51 ldr r3, [pc, #324] ; (186d8 ) 18594: 4798 blx r3 18596: 3014 adds r0, #20 18598: 0080 lsls r0, r0, #2 1859a: 4b50 ldr r3, [pc, #320] ; (186dc ) 1859c: fb83 2300 smull r2, r3, r3, r0 185a0: 17c2 asrs r2, r0, #31 185a2: ebc2 12a3 rsb r2, r2, r3, asr #6 185a6: b212 sxth r2, r2 185a8: f7fe bcb5 b.w 16f16 lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 185ac: 2306 movs r3, #6 185ae: 2110 movs r1, #16 185b0: 2409 movs r4, #9 185b2: f7fe bcbf b.w 16f34 lv_style_set_pad_inner(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(3)); 185b6: 2000 movs r0, #0 185b8: 4b47 ldr r3, [pc, #284] ; (186d8 ) 185ba: 4798 blx r3 185bc: eb00 0040 add.w r0, r0, r0, lsl #1 185c0: 3050 adds r0, #80 ; 0x50 185c2: 4b46 ldr r3, [pc, #280] ; (186dc ) 185c4: fb83 2300 smull r2, r3, r3, r0 185c8: 17c2 asrs r2, r0, #31 185ca: ebc2 12a3 rsb r2, r2, r3, asr #6 185ce: b212 sxth r2, r2 185d0: f7fe bd20 b.w 17014 lv_style_set_pad_left(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 185d4: 2000 movs r0, #0 185d6: 4b40 ldr r3, [pc, #256] ; (186d8 ) 185d8: 4798 blx r3 185da: ebc0 1000 rsb r0, r0, r0, lsl #4 185de: 3050 adds r0, #80 ; 0x50 185e0: f5b0 7fa0 cmp.w r0, #320 ; 0x140 185e4: da02 bge.n 185ec 185e6: 2201 movs r2, #1 185e8: f7fe bd2d b.w 17046 185ec: 2000 movs r0, #0 185ee: 4b3a ldr r3, [pc, #232] ; (186d8 ) 185f0: 4798 blx r3 185f2: ebc0 1000 rsb r0, r0, r0, lsl #4 185f6: 3050 adds r0, #80 ; 0x50 185f8: 4b38 ldr r3, [pc, #224] ; (186dc ) 185fa: fb83 2300 smull r2, r3, r3, r0 185fe: 17c2 asrs r2, r0, #31 18600: ebc2 12a3 rsb r2, r2, r3, asr #6 18604: b212 sxth r2, r2 18606: f7fe bd1e b.w 17046 1860a: 2000 movs r0, #0 1860c: 4b32 ldr r3, [pc, #200] ; (186d8 ) 1860e: 4798 blx r3 18610: ebc0 1000 rsb r0, r0, r0, lsl #4 18614: 0040 lsls r0, r0, #1 18616: 3050 adds r0, #80 ; 0x50 18618: 4b30 ldr r3, [pc, #192] ; (186dc ) 1861a: fb83 2300 smull r2, r3, r3, r0 1861e: 17c2 asrs r2, r0, #31 18620: ebc2 12a3 rsb r2, r2, r3, asr #6 18624: b212 sxth r2, r2 18626: f7fe bd0e b.w 17046 lv_style_set_pad_right(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 1862a: 2000 movs r0, #0 1862c: 4b2a ldr r3, [pc, #168] ; (186d8 ) 1862e: 4798 blx r3 18630: ebc0 1000 rsb r0, r0, r0, lsl #4 18634: 3050 adds r0, #80 ; 0x50 18636: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1863a: da02 bge.n 18642 1863c: 2201 movs r2, #1 1863e: f7fe bd1b b.w 17078 18642: 2000 movs r0, #0 18644: 4b24 ldr r3, [pc, #144] ; (186d8 ) 18646: 4798 blx r3 18648: ebc0 1000 rsb r0, r0, r0, lsl #4 1864c: 3050 adds r0, #80 ; 0x50 1864e: 4b23 ldr r3, [pc, #140] ; (186dc ) 18650: fb83 2300 smull r2, r3, r3, r0 18654: 17c2 asrs r2, r0, #31 18656: ebc2 12a3 rsb r2, r2, r3, asr #6 1865a: b212 sxth r2, r2 1865c: f7fe bd0c b.w 17078 18660: 2000 movs r0, #0 18662: 4b1d ldr r3, [pc, #116] ; (186d8 ) 18664: 4798 blx r3 18666: ebc0 1000 rsb r0, r0, r0, lsl #4 1866a: 0040 lsls r0, r0, #1 1866c: 3050 adds r0, #80 ; 0x50 1866e: 4b1b ldr r3, [pc, #108] ; (186dc ) 18670: fb83 2300 smull r2, r3, r3, r0 18674: 17c2 asrs r2, r0, #31 18676: ebc2 12a3 rsb r2, r2, r3, asr #6 1867a: b212 sxth r2, r2 1867c: f7fe bcfc b.w 17078 lv_style_set_pad_bottom(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 18680: 2000 movs r0, #0 18682: 4b15 ldr r3, [pc, #84] ; (186d8 ) 18684: 4798 blx r3 18686: ebc0 1000 rsb r0, r0, r0, lsl #4 1868a: 3050 adds r0, #80 ; 0x50 1868c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18690: da02 bge.n 18698 18692: 2201 movs r2, #1 18694: f7fe bd09 b.w 170aa 18698: 2000 movs r0, #0 1869a: 4b0f ldr r3, [pc, #60] ; (186d8 ) 1869c: 4798 blx r3 1869e: ebc0 1000 rsb r0, r0, r0, lsl #4 186a2: 3050 adds r0, #80 ; 0x50 186a4: 4b0d ldr r3, [pc, #52] ; (186dc ) 186a6: fb83 2300 smull r2, r3, r3, r0 186aa: 17c2 asrs r2, r0, #31 186ac: ebc2 12a3 rsb r2, r2, r3, asr #6 186b0: b212 sxth r2, r2 186b2: f7fe bcfa b.w 170aa 186b6: 2000 movs r0, #0 186b8: 4b07 ldr r3, [pc, #28] ; (186d8 ) 186ba: 4798 blx r3 186bc: ebc0 1000 rsb r0, r0, r0, lsl #4 186c0: 0040 lsls r0, r0, #1 186c2: 3050 adds r0, #80 ; 0x50 186c4: 4b05 ldr r3, [pc, #20] ; (186dc ) 186c6: fb83 2300 smull r2, r3, r3, r0 186ca: 17c2 asrs r2, r0, #31 186cc: ebc2 12a3 rsb r2, r2, r3, asr #6 186d0: b212 sxth r2, r2 186d2: f7fe bcea b.w 170aa 186d6: bf00 nop 186d8: 00010f25 .word 0x00010f25 186dc: 66666667 .word 0x66666667 lv_style_set_scale_width(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(30)); 186e0: 2000 movs r0, #0 186e2: 4bc9 ldr r3, [pc, #804] ; (18a08 ) 186e4: 4798 blx r3 186e6: ebc0 1000 rsb r0, r0, r0, lsl #4 186ea: 0040 lsls r0, r0, #1 186ec: 3050 adds r0, #80 ; 0x50 186ee: 4bc7 ldr r3, [pc, #796] ; (18a0c ) 186f0: fb83 2300 smull r2, r3, r3, r0 186f4: 17c2 asrs r2, r0, #31 186f6: ebc2 12a3 rsb r2, r2, r3, asr #6 186fa: b212 sxth r2, r2 186fc: f7fe bcec b.w 170d8 lv_style_set_pad_inner(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(20)); 18700: 2000 movs r0, #0 18702: 4bc1 ldr r3, [pc, #772] ; (18a08 ) 18704: 4798 blx r3 18706: eb00 0080 add.w r0, r0, r0, lsl #2 1870a: 0080 lsls r0, r0, #2 1870c: 3050 adds r0, #80 ; 0x50 1870e: 4bbf ldr r3, [pc, #764] ; (18a0c ) 18710: fb83 2300 smull r2, r3, r3, r0 18714: 17c2 asrs r2, r0, #31 18716: ebc2 12a3 rsb r2, r2, r3, asr #6 1871a: b212 sxth r2, r2 1871c: f7fe bd21 b.w 17162 lv_style_set_pad_left(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 18720: 2000 movs r0, #0 18722: 4bb9 ldr r3, [pc, #740] ; (18a08 ) 18724: 4798 blx r3 18726: eb00 0240 add.w r2, r0, r0, lsl #1 1872a: eb00 0082 add.w r0, r0, r2, lsl #2 1872e: 3050 adds r0, #80 ; 0x50 18730: 4bb6 ldr r3, [pc, #728] ; (18a0c ) 18732: fb83 2300 smull r2, r3, r3, r0 18736: 17c2 asrs r2, r0, #31 18738: ebc2 12a3 rsb r2, r2, r3, asr #6 1873c: b212 sxth r2, r2 1873e: f7fe bd57 b.w 171f0 lv_style_set_pad_right(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 18742: 2000 movs r0, #0 18744: 4bb0 ldr r3, [pc, #704] ; (18a08 ) 18746: 4798 blx r3 18748: eb00 0240 add.w r2, r0, r0, lsl #1 1874c: eb00 0082 add.w r0, r0, r2, lsl #2 18750: 3050 adds r0, #80 ; 0x50 18752: 4bae ldr r3, [pc, #696] ; (18a0c ) 18754: fb83 2300 smull r2, r3, r3, r0 18758: 17c2 asrs r2, r0, #31 1875a: ebc2 12a3 rsb r2, r2, r3, asr #6 1875e: b212 sxth r2, r2 18760: f7fe bd5a b.w 17218 lv_style_set_pad_top(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 18764: 2000 movs r0, #0 18766: 4ba8 ldr r3, [pc, #672] ; (18a08 ) 18768: 4798 blx r3 1876a: eb00 0240 add.w r2, r0, r0, lsl #1 1876e: eb00 0082 add.w r0, r0, r2, lsl #2 18772: 3050 adds r0, #80 ; 0x50 18774: 4ba5 ldr r3, [pc, #660] ; (18a0c ) 18776: fb83 2300 smull r2, r3, r3, r0 1877a: 17c2 asrs r2, r0, #31 1877c: ebc2 12a3 rsb r2, r2, r3, asr #6 18780: b212 sxth r2, r2 18782: f7fe bd5d b.w 17240 lv_style_set_pad_bottom(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 18786: 2000 movs r0, #0 18788: 4b9f ldr r3, [pc, #636] ; (18a08 ) 1878a: 4798 blx r3 1878c: eb00 0240 add.w r2, r0, r0, lsl #1 18790: eb00 0082 add.w r0, r0, r2, lsl #2 18794: 3050 adds r0, #80 ; 0x50 18796: 4b9d ldr r3, [pc, #628] ; (18a0c ) 18798: fb83 2300 smull r2, r3, r3, r0 1879c: 17c2 asrs r2, r0, #31 1879e: ebc2 12a3 rsb r2, r2, r3, asr #6 187a2: b212 sxth r2, r2 187a4: f7fe bd60 b.w 17268 lv_style_set_radius(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 187a8: 2000 movs r0, #0 187aa: 4b97 ldr r3, [pc, #604] ; (18a08 ) 187ac: 4798 blx r3 187ae: 3014 adds r0, #20 187b0: 0080 lsls r0, r0, #2 187b2: 4b96 ldr r3, [pc, #600] ; (18a0c ) 187b4: fb83 2300 smull r2, r3, r3, r0 187b8: 17c2 asrs r2, r0, #31 187ba: ebc2 12a3 rsb r2, r2, r3, asr #6 187be: b212 sxth r2, r2 187c0: f7fe bd67 b.w 17292 lv_style_set_pad_inner(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 187c4: 2000 movs r0, #0 187c6: 4b90 ldr r3, [pc, #576] ; (18a08 ) 187c8: 4798 blx r3 187ca: eb00 0080 add.w r0, r0, r0, lsl #2 187ce: 0040 lsls r0, r0, #1 187d0: 3050 adds r0, #80 ; 0x50 187d2: 4b8e ldr r3, [pc, #568] ; (18a0c ) 187d4: fb83 2300 smull r2, r3, r3, r0 187d8: 17c2 asrs r2, r0, #31 187da: ebc2 12a3 rsb r2, r2, r3, asr #6 187de: b212 sxth r2, r2 187e0: f7fe bd6a b.w 172b8 lv_style_set_outline_width(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 187e4: 2000 movs r0, #0 187e6: 4b88 ldr r3, [pc, #544] ; (18a08 ) 187e8: 4798 blx r3 187ea: eb00 0040 add.w r0, r0, r0, lsl #1 187ee: 3050 adds r0, #80 ; 0x50 187f0: 4b86 ldr r3, [pc, #536] ; (18a0c ) 187f2: fb83 2300 smull r2, r3, r3, r0 187f6: 17c2 asrs r2, r0, #31 187f8: ebc2 12a3 rsb r2, r2, r3, asr #6 187fc: b212 sxth r2, r2 187fe: f7fe bd7f b.w 17300 lv_style_set_outline_pad(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 18802: 2000 movs r0, #0 18804: 4b80 ldr r3, [pc, #512] ; (18a08 ) 18806: 4798 blx r3 18808: eb00 0080 add.w r0, r0, r0, lsl #2 1880c: 0040 lsls r0, r0, #1 1880e: 3050 adds r0, #80 ; 0x50 18810: 4b7e ldr r3, [pc, #504] ; (18a0c ) 18812: fb83 2300 smull r2, r3, r3, r0 18816: 17c2 asrs r2, r0, #31 18818: ebc2 12a3 rsb r2, r2, r3, asr #6 1881c: b212 sxth r2, r2 1881e: f7fe bd82 b.w 17326 lv_style_set_radius(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(4)); 18822: 2000 movs r0, #0 18824: 4b78 ldr r3, [pc, #480] ; (18a08 ) 18826: 4798 blx r3 18828: 3014 adds r0, #20 1882a: 0080 lsls r0, r0, #2 1882c: 4b77 ldr r3, [pc, #476] ; (18a0c ) 1882e: fb83 2300 smull r2, r3, r3, r0 18832: 17c2 asrs r2, r0, #31 18834: ebc2 12a3 rsb r2, r2, r3, asr #6 18838: b212 sxth r2, r2 1883a: f7fe bd9a b.w 17372 lv_style_set_pad_left(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 1883e: 2000 movs r0, #0 18840: 4b71 ldr r3, [pc, #452] ; (18a08 ) 18842: 4798 blx r3 18844: eb00 0040 add.w r0, r0, r0, lsl #1 18848: 3050 adds r0, #80 ; 0x50 1884a: 4b70 ldr r3, [pc, #448] ; (18a0c ) 1884c: fb83 2300 smull r2, r3, r3, r0 18850: 17c2 asrs r2, r0, #31 18852: ebc2 12a3 rsb r2, r2, r3, asr #6 18856: b212 sxth r2, r2 18858: f7fe bdb2 b.w 173c0 lv_style_set_pad_right(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 1885c: 2000 movs r0, #0 1885e: 4b6a ldr r3, [pc, #424] ; (18a08 ) 18860: 4798 blx r3 18862: eb00 0040 add.w r0, r0, r0, lsl #1 18866: 3050 adds r0, #80 ; 0x50 18868: 4b68 ldr r3, [pc, #416] ; (18a0c ) 1886a: fb83 2300 smull r2, r3, r3, r0 1886e: 17c2 asrs r2, r0, #31 18870: ebc2 12a3 rsb r2, r2, r3, asr #6 18874: b212 sxth r2, r2 18876: f7fe bdb5 b.w 173e4 lv_style_set_pad_top(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 1887a: 2000 movs r0, #0 1887c: 4b62 ldr r3, [pc, #392] ; (18a08 ) 1887e: 4798 blx r3 18880: eb00 0040 add.w r0, r0, r0, lsl #1 18884: 3050 adds r0, #80 ; 0x50 18886: 4b61 ldr r3, [pc, #388] ; (18a0c ) 18888: fb83 2300 smull r2, r3, r3, r0 1888c: 17c2 asrs r2, r0, #31 1888e: ebc2 12a3 rsb r2, r2, r3, asr #6 18892: b212 sxth r2, r2 18894: f7fe bdb8 b.w 17408 lv_style_set_pad_bottom(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 18898: 2000 movs r0, #0 1889a: 4b5b ldr r3, [pc, #364] ; (18a08 ) 1889c: 4798 blx r3 1889e: eb00 0040 add.w r0, r0, r0, lsl #1 188a2: 3050 adds r0, #80 ; 0x50 188a4: 4b59 ldr r3, [pc, #356] ; (18a0c ) 188a6: fb83 2300 smull r2, r3, r3, r0 188aa: 17c2 asrs r2, r0, #31 188ac: ebc2 12a3 rsb r2, r2, r3, asr #6 188b0: b212 sxth r2, r2 188b2: f7fe bdbb b.w 1742c lv_style_set_border_width(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 188b6: 2000 movs r0, #0 188b8: 4b53 ldr r3, [pc, #332] ; (18a08 ) 188ba: 4798 blx r3 188bc: 3014 adds r0, #20 188be: 0080 lsls r0, r0, #2 188c0: 4b52 ldr r3, [pc, #328] ; (18a0c ) 188c2: fb83 2300 smull r2, r3, r3, r0 188c6: 17c2 asrs r2, r0, #31 188c8: ebc2 12a3 rsb r2, r2, r3, asr #6 188cc: b212 sxth r2, r2 188ce: f7fe bdda b.w 17486 lv_style_set_border_color(&styles->kb_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT : LV_COLOR_BLACK); 188d2: 2307 movs r3, #7 188d4: 210f movs r1, #15 188d6: 2408 movs r4, #8 188d8: f7fe bde9 b.w 174ae lv_style_set_pad_left(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 188dc: 2000 movs r0, #0 188de: 4b4a ldr r3, [pc, #296] ; (18a08 ) 188e0: 4798 blx r3 188e2: eb00 0080 add.w r0, r0, r0, lsl #2 188e6: 3050 adds r0, #80 ; 0x50 188e8: 4b48 ldr r3, [pc, #288] ; (18a0c ) 188ea: fb83 2300 smull r2, r3, r3, r0 188ee: 17c2 asrs r2, r0, #31 188f0: ebc2 12a3 rsb r2, r2, r3, asr #6 188f4: b212 sxth r2, r2 188f6: f7fe bdf9 b.w 174ec lv_style_set_pad_right(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 188fa: 2000 movs r0, #0 188fc: 4b42 ldr r3, [pc, #264] ; (18a08 ) 188fe: 4798 blx r3 18900: eb00 0080 add.w r0, r0, r0, lsl #2 18904: 3050 adds r0, #80 ; 0x50 18906: 4b41 ldr r3, [pc, #260] ; (18a0c ) 18908: fb83 2300 smull r2, r3, r3, r0 1890c: 17c2 asrs r2, r0, #31 1890e: ebc2 12a3 rsb r2, r2, r3, asr #6 18912: b212 sxth r2, r2 18914: f7fe bdfc b.w 17510 lv_style_set_pad_top(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 18918: 2000 movs r0, #0 1891a: 4b3b ldr r3, [pc, #236] ; (18a08 ) 1891c: 4798 blx r3 1891e: eb00 0080 add.w r0, r0, r0, lsl #2 18922: 3050 adds r0, #80 ; 0x50 18924: 4b39 ldr r3, [pc, #228] ; (18a0c ) 18926: fb83 2300 smull r2, r3, r3, r0 1892a: 17c2 asrs r2, r0, #31 1892c: ebc2 12a3 rsb r2, r2, r3, asr #6 18930: b212 sxth r2, r2 18932: f7fe bdff b.w 17534 lv_style_set_pad_bottom(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 18936: 2000 movs r0, #0 18938: 4b33 ldr r3, [pc, #204] ; (18a08 ) 1893a: 4798 blx r3 1893c: eb00 0080 add.w r0, r0, r0, lsl #2 18940: 3050 adds r0, #80 ; 0x50 18942: 4b32 ldr r3, [pc, #200] ; (18a0c ) 18944: fb83 2300 smull r2, r3, r3, r0 18948: 17c2 asrs r2, r0, #31 1894a: ebc2 12a3 rsb r2, r2, r3, asr #6 1894e: b212 sxth r2, r2 18950: f7fe be02 b.w 17558 lv_style_set_pad_inner(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 18954: 2000 movs r0, #0 18956: 4b2c ldr r3, [pc, #176] ; (18a08 ) 18958: 4798 blx r3 1895a: eb00 0040 add.w r0, r0, r0, lsl #1 1895e: 3050 adds r0, #80 ; 0x50 18960: 4b2a ldr r3, [pc, #168] ; (18a0c ) 18962: fb83 2300 smull r2, r3, r3, r0 18966: 17c2 asrs r2, r0, #31 18968: ebc2 12a3 rsb r2, r2, r3, asr #6 1896c: b212 sxth r2, r2 1896e: f7fe be05 b.w 1757c lv_style_set_shadow_width(&styles->mbox_bg, LV_STATE_DEFAULT, LV_DPX(50)); 18972: 2000 movs r0, #0 18974: 4b24 ldr r3, [pc, #144] ; (18a08 ) 18976: 4798 blx r3 18978: 2232 movs r2, #50 ; 0x32 1897a: fb02 f000 mul.w r0, r2, r0 1897e: 3050 adds r0, #80 ; 0x50 18980: 4b22 ldr r3, [pc, #136] ; (18a0c ) 18982: fb83 2300 smull r2, r3, r3, r0 18986: 17c2 asrs r2, r0, #31 18988: ebc2 12a3 rsb r2, r2, r3, asr #6 1898c: b212 sxth r2, r2 1898e: f7fe be0c b.w 175aa lv_style_set_size(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 18992: 2000 movs r0, #0 18994: 4b1c ldr r3, [pc, #112] ; (18a08 ) 18996: 4798 blx r3 18998: ebc0 00c0 rsb r0, r0, r0, lsl #3 1899c: 3050 adds r0, #80 ; 0x50 1899e: 4b1b ldr r3, [pc, #108] ; (18a0c ) 189a0: fb83 2300 smull r2, r3, r3, r0 189a4: 17c2 asrs r2, r0, #31 189a6: ebc2 12a3 rsb r2, r2, r3, asr #6 189aa: b212 sxth r2, r2 189ac: f7fe be52 b.w 17654 lv_style_set_pad_right(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 189b0: 2000 movs r0, #0 189b2: 4b15 ldr r3, [pc, #84] ; (18a08 ) 189b4: 4798 blx r3 189b6: ebc0 00c0 rsb r0, r0, r0, lsl #3 189ba: 3050 adds r0, #80 ; 0x50 189bc: 4b13 ldr r3, [pc, #76] ; (18a0c ) 189be: fb83 2300 smull r2, r3, r3, r0 189c2: 17c2 asrs r2, r0, #31 189c4: ebc2 12a3 rsb r2, r2, r3, asr #6 189c8: b212 sxth r2, r2 189ca: f7fe be55 b.w 17678 lv_style_set_pad_bottom(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 189ce: 2000 movs r0, #0 189d0: 4b0d ldr r3, [pc, #52] ; (18a08 ) 189d2: 4798 blx r3 189d4: ebc0 00c0 rsb r0, r0, r0, lsl #3 189d8: 3050 adds r0, #80 ; 0x50 189da: 4b0c ldr r3, [pc, #48] ; (18a0c ) 189dc: fb83 2300 smull r2, r3, r3, r0 189e0: 17c2 asrs r2, r0, #31 189e2: ebc2 12a3 rsb r2, r2, r3, asr #6 189e6: b212 sxth r2, r2 189e8: f7fe be58 b.w 1769c lv_style_set_border_width(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(2)); 189ec: 2000 movs r0, #0 189ee: 4b06 ldr r3, [pc, #24] ; (18a08 ) 189f0: 4798 blx r3 189f2: 3028 adds r0, #40 ; 0x28 189f4: 0040 lsls r0, r0, #1 189f6: 4b05 ldr r3, [pc, #20] ; (18a0c ) 189f8: fb83 2300 smull r2, r3, r3, r0 189fc: 17c2 asrs r2, r0, #31 189fe: ebc2 12a3 rsb r2, r2, r3, asr #6 18a02: b212 sxth r2, r2 18a04: f7fe be91 b.w 1772a 18a08: 00010f25 .word 0x00010f25 18a0c: 66666667 .word 0x66666667 lv_style_set_pad_left(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(1)); 18a10: 2000 movs r0, #0 18a12: 4bcd ldr r3, [pc, #820] ; (18d48 ) 18a14: 4798 blx r3 18a16: 3050 adds r0, #80 ; 0x50 18a18: 4bcc ldr r3, [pc, #816] ; (18d4c ) 18a1a: fb83 2300 smull r2, r3, r3, r0 18a1e: 17c2 asrs r2, r0, #31 18a20: ebc2 12a3 rsb r2, r2, r3, asr #6 18a24: b212 sxth r2, r2 18a26: f7fe be9d b.w 17764 lv_style_set_text_color(&styles->ta_placeholder, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 18a2a: 2315 movs r3, #21 18a2c: 212a movs r1, #42 ; 0x2a 18a2e: 461c mov r4, r3 18a30: f7fe beb0 b.w 17794 lv_style_set_pad_top(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 18a34: 2000 movs r0, #0 18a36: 4bc4 ldr r3, [pc, #784] ; (18d48 ) 18a38: 4798 blx r3 18a3a: 2264 movs r2, #100 ; 0x64 18a3c: fb02 f000 mul.w r0, r2, r0 18a40: 3050 adds r0, #80 ; 0x50 18a42: 4bc2 ldr r3, [pc, #776] ; (18d4c ) 18a44: fb83 2300 smull r2, r3, r3, r0 18a48: 17c2 asrs r2, r0, #31 18a4a: ebc2 12a3 rsb r2, r2, r3, asr #6 18a4e: b212 sxth r2, r2 18a50: f7fe bed1 b.w 177f6 lv_style_set_pad_bottom(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 18a54: 2000 movs r0, #0 18a56: 4bbc ldr r3, [pc, #752] ; (18d48 ) 18a58: 4798 blx r3 18a5a: 2264 movs r2, #100 ; 0x64 18a5c: fb02 f000 mul.w r0, r2, r0 18a60: 3050 adds r0, #80 ; 0x50 18a62: 4bba ldr r3, [pc, #744] ; (18d4c ) 18a64: fb83 2300 smull r2, r3, r3, r0 18a68: 17c2 asrs r2, r0, #31 18a6a: ebc2 12a3 rsb r2, r2, r3, asr #6 18a6e: b212 sxth r2, r2 18a70: f7fe bed4 b.w 1781c lv_style_set_bg_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG); 18a74: 231f movs r3, #31 18a76: 213f movs r1, #63 ; 0x3f 18a78: 461c mov r4, r3 18a7a: f7fe bf09 b.w 17890 lv_style_set_bg_color(&styles->list_btn, LV_STATE_PRESSED, COLOR_BG_PR); 18a7e: 231d movs r3, #29 18a80: 213b movs r1, #59 ; 0x3b 18a82: 461c mov r4, r3 18a84: f7fe bf1a b.w 178bc lv_style_set_bg_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_DIS); 18a88: 231f movs r3, #31 18a8a: 213f movs r1, #63 ; 0x3f 18a8c: 461c mov r4, r3 18a8e: f7fe bf2c b.w 178ea lv_style_set_text_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 18a92: 2307 movs r3, #7 18a94: 210f movs r1, #15 18a96: 2408 movs r4, #8 18a98: f7fe bf4f b.w 1793a lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 18a9c: 2307 movs r3, #7 18a9e: 210f movs r1, #15 18aa0: 2408 movs r4, #8 18aa2: f7fe bf7f b.w 179a4 lv_style_set_pad_left(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 18aa6: 2000 movs r0, #0 18aa8: 4ba7 ldr r3, [pc, #668] ; (18d48 ) 18aaa: 4798 blx r3 18aac: ebc0 1000 rsb r0, r0, r0, lsl #4 18ab0: 3050 adds r0, #80 ; 0x50 18ab2: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18ab6: da02 bge.n 18abe 18ab8: 2201 movs r2, #1 18aba: f7fe bfef b.w 17a9c 18abe: 2000 movs r0, #0 18ac0: 4ba1 ldr r3, [pc, #644] ; (18d48 ) 18ac2: 4798 blx r3 18ac4: ebc0 1000 rsb r0, r0, r0, lsl #4 18ac8: 3050 adds r0, #80 ; 0x50 18aca: 4ba0 ldr r3, [pc, #640] ; (18d4c ) 18acc: fb83 2300 smull r2, r3, r3, r0 18ad0: 17c2 asrs r2, r0, #31 18ad2: ebc2 12a3 rsb r2, r2, r3, asr #6 18ad6: b212 sxth r2, r2 18ad8: f7fe bfe0 b.w 17a9c 18adc: 2000 movs r0, #0 18ade: 4b9a ldr r3, [pc, #616] ; (18d48 ) 18ae0: 4798 blx r3 18ae2: ebc0 1000 rsb r0, r0, r0, lsl #4 18ae6: 0040 lsls r0, r0, #1 18ae8: 3050 adds r0, #80 ; 0x50 18aea: 4b98 ldr r3, [pc, #608] ; (18d4c ) 18aec: fb83 2300 smull r2, r3, r3, r0 18af0: 17c2 asrs r2, r0, #31 18af2: ebc2 12a3 rsb r2, r2, r3, asr #6 18af6: b212 sxth r2, r2 18af8: f7fe bfd0 b.w 17a9c lv_style_set_pad_right(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 18afc: 2000 movs r0, #0 18afe: 4b92 ldr r3, [pc, #584] ; (18d48 ) 18b00: 4798 blx r3 18b02: ebc0 1000 rsb r0, r0, r0, lsl #4 18b06: 3050 adds r0, #80 ; 0x50 18b08: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18b0c: da02 bge.n 18b14 18b0e: 2201 movs r2, #1 18b10: f7fe bfdd b.w 17ace 18b14: 2000 movs r0, #0 18b16: 4b8c ldr r3, [pc, #560] ; (18d48 ) 18b18: 4798 blx r3 18b1a: ebc0 1000 rsb r0, r0, r0, lsl #4 18b1e: 3050 adds r0, #80 ; 0x50 18b20: 4b8a ldr r3, [pc, #552] ; (18d4c ) 18b22: fb83 2300 smull r2, r3, r3, r0 18b26: 17c2 asrs r2, r0, #31 18b28: ebc2 12a3 rsb r2, r2, r3, asr #6 18b2c: b212 sxth r2, r2 18b2e: f7fe bfce b.w 17ace 18b32: 2000 movs r0, #0 18b34: 4b84 ldr r3, [pc, #528] ; (18d48 ) 18b36: 4798 blx r3 18b38: ebc0 1000 rsb r0, r0, r0, lsl #4 18b3c: 0040 lsls r0, r0, #1 18b3e: 3050 adds r0, #80 ; 0x50 18b40: 4b82 ldr r3, [pc, #520] ; (18d4c ) 18b42: fb83 2300 smull r2, r3, r3, r0 18b46: 17c2 asrs r2, r0, #31 18b48: ebc2 12a3 rsb r2, r2, r3, asr #6 18b4c: b212 sxth r2, r2 18b4e: f7fe bfbe b.w 17ace lv_style_set_pad_top(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 18b52: 2000 movs r0, #0 18b54: 4b7c ldr r3, [pc, #496] ; (18d48 ) 18b56: 4798 blx r3 18b58: ebc0 1000 rsb r0, r0, r0, lsl #4 18b5c: 3050 adds r0, #80 ; 0x50 18b5e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18b62: da02 bge.n 18b6a 18b64: 2201 movs r2, #1 18b66: f7fe bfcb b.w 17b00 18b6a: 2000 movs r0, #0 18b6c: 4b76 ldr r3, [pc, #472] ; (18d48 ) 18b6e: 4798 blx r3 18b70: ebc0 1000 rsb r0, r0, r0, lsl #4 18b74: 3050 adds r0, #80 ; 0x50 18b76: 4b75 ldr r3, [pc, #468] ; (18d4c ) 18b78: fb83 2300 smull r2, r3, r3, r0 18b7c: 17c2 asrs r2, r0, #31 18b7e: ebc2 12a3 rsb r2, r2, r3, asr #6 18b82: b212 sxth r2, r2 18b84: f7fe bfbc b.w 17b00 18b88: 2000 movs r0, #0 18b8a: 4b6f ldr r3, [pc, #444] ; (18d48 ) 18b8c: 4798 blx r3 18b8e: ebc0 1000 rsb r0, r0, r0, lsl #4 18b92: 0040 lsls r0, r0, #1 18b94: 3050 adds r0, #80 ; 0x50 18b96: 4b6d ldr r3, [pc, #436] ; (18d4c ) 18b98: fb83 2300 smull r2, r3, r3, r0 18b9c: 17c2 asrs r2, r0, #31 18b9e: ebc2 12a3 rsb r2, r2, r3, asr #6 18ba2: b212 sxth r2, r2 18ba4: f7fe bfac b.w 17b00 lv_style_set_pad_bottom(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 18ba8: 2000 movs r0, #0 18baa: 4b67 ldr r3, [pc, #412] ; (18d48 ) 18bac: 4798 blx r3 18bae: ebc0 1000 rsb r0, r0, r0, lsl #4 18bb2: 3050 adds r0, #80 ; 0x50 18bb4: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18bb8: da02 bge.n 18bc0 18bba: 2201 movs r2, #1 18bbc: f7fe bfb9 b.w 17b32 18bc0: 2000 movs r0, #0 18bc2: 4b61 ldr r3, [pc, #388] ; (18d48 ) 18bc4: 4798 blx r3 18bc6: ebc0 1000 rsb r0, r0, r0, lsl #4 18bca: 3050 adds r0, #80 ; 0x50 18bcc: 4b5f ldr r3, [pc, #380] ; (18d4c ) 18bce: fb83 2300 smull r2, r3, r3, r0 18bd2: 17c2 asrs r2, r0, #31 18bd4: ebc2 12a3 rsb r2, r2, r3, asr #6 18bd8: b212 sxth r2, r2 18bda: f7fe bfaa b.w 17b32 18bde: 2000 movs r0, #0 18be0: 4b59 ldr r3, [pc, #356] ; (18d48 ) 18be2: 4798 blx r3 18be4: ebc0 1000 rsb r0, r0, r0, lsl #4 18be8: 0040 lsls r0, r0, #1 18bea: 3050 adds r0, #80 ; 0x50 18bec: 4b57 ldr r3, [pc, #348] ; (18d4c ) 18bee: fb83 2300 smull r2, r3, r3, r0 18bf2: 17c2 asrs r2, r0, #31 18bf4: ebc2 12a3 rsb r2, r2, r3, asr #6 18bf8: b212 sxth r2, r2 18bfa: f7fe bf9a b.w 17b32 lv_style_set_pad_inner(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 18bfe: 2000 movs r0, #0 18c00: 4b51 ldr r3, [pc, #324] ; (18d48 ) 18c02: 4798 blx r3 18c04: ebc0 1000 rsb r0, r0, r0, lsl #4 18c08: 3050 adds r0, #80 ; 0x50 18c0a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18c0e: da02 bge.n 18c16 18c10: 2201 movs r2, #1 18c12: f7fe bfa7 b.w 17b64 18c16: 2000 movs r0, #0 18c18: 4b4b ldr r3, [pc, #300] ; (18d48 ) 18c1a: 4798 blx r3 18c1c: ebc0 1000 rsb r0, r0, r0, lsl #4 18c20: 3050 adds r0, #80 ; 0x50 18c22: 4b4a ldr r3, [pc, #296] ; (18d4c ) 18c24: fb83 2300 smull r2, r3, r3, r0 18c28: 17c2 asrs r2, r0, #31 18c2a: ebc2 12a3 rsb r2, r2, r3, asr #6 18c2e: b212 sxth r2, r2 18c30: f7fe bf98 b.w 17b64 18c34: 2000 movs r0, #0 18c36: 4b44 ldr r3, [pc, #272] ; (18d48 ) 18c38: 4798 blx r3 18c3a: ebc0 1000 rsb r0, r0, r0, lsl #4 18c3e: 0040 lsls r0, r0, #1 18c40: 3050 adds r0, #80 ; 0x50 18c42: 4b42 ldr r3, [pc, #264] ; (18d4c ) 18c44: fb83 2300 smull r2, r3, r3, r0 18c48: 17c2 asrs r2, r0, #31 18c4a: ebc2 12a3 rsb r2, r2, r3, asr #6 18c4e: b212 sxth r2, r2 18c50: f7fe bf88 b.w 17b64 lv_style_set_transform_width(&styles->list_btn, LV_STATE_DEFAULT, - PAD_DEF); 18c54: 2000 movs r0, #0 18c56: 4b3c ldr r3, [pc, #240] ; (18d48 ) 18c58: 4798 blx r3 18c5a: ebc0 1000 rsb r0, r0, r0, lsl #4 18c5e: 3050 adds r0, #80 ; 0x50 18c60: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18c64: da03 bge.n 18c6e 18c66: f04f 32ff mov.w r2, #4294967295 18c6a: f7fe bf95 b.w 17b98 18c6e: 2000 movs r0, #0 18c70: 4b35 ldr r3, [pc, #212] ; (18d48 ) 18c72: 4798 blx r3 18c74: ebc0 1000 rsb r0, r0, r0, lsl #4 18c78: 3050 adds r0, #80 ; 0x50 18c7a: 4b34 ldr r3, [pc, #208] ; (18d4c ) 18c7c: fb83 2300 smull r2, r3, r3, r0 18c80: 17c2 asrs r2, r0, #31 18c82: eba2 12a3 sub.w r2, r2, r3, asr #6 18c86: b212 sxth r2, r2 18c88: f7fe bf86 b.w 17b98 18c8c: 2000 movs r0, #0 18c8e: 4b2e ldr r3, [pc, #184] ; (18d48 ) 18c90: 4798 blx r3 18c92: ebc0 1000 rsb r0, r0, r0, lsl #4 18c96: 0040 lsls r0, r0, #1 18c98: 3050 adds r0, #80 ; 0x50 18c9a: 4b2c ldr r3, [pc, #176] ; (18d4c ) 18c9c: fb83 2300 smull r2, r3, r3, r0 18ca0: 17c2 asrs r2, r0, #31 18ca2: eba2 12a3 sub.w r2, r2, r3, asr #6 18ca6: b212 sxth r2, r2 18ca8: f7fe bf76 b.w 17b98 lv_style_set_text_line_space(&styles->ddlist_page, LV_STATE_DEFAULT, LV_DPX(20)); 18cac: 2000 movs r0, #0 18cae: 4b26 ldr r3, [pc, #152] ; (18d48 ) 18cb0: 4798 blx r3 18cb2: eb00 0080 add.w r0, r0, r0, lsl #2 18cb6: 0080 lsls r0, r0, #2 18cb8: 3050 adds r0, #80 ; 0x50 18cba: 4b24 ldr r3, [pc, #144] ; (18d4c ) 18cbc: fb83 2300 smull r2, r3, r3, r0 18cc0: 17c2 asrs r2, r0, #31 18cc2: ebc2 12a3 rsb r2, r2, r3, asr #6 18cc6: b212 sxth r2, r2 18cc8: f7fe bf9e b.w 17c08 lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_PR); 18ccc: 231d movs r3, #29 18cce: 213b movs r1, #59 ; 0x3b 18cd0: 461c mov r4, r3 18cd2: f7fe bfc5 b.w 17c60 lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 18cd6: 2307 movs r3, #7 18cd8: 210f movs r1, #15 18cda: 2408 movs r4, #8 18cdc: f7fe bfd7 b.w 17c8e lv_style_set_text_line_space(&styles->roller_bg, LV_STATE_DEFAULT, LV_DPX(25)); 18ce0: 2000 movs r0, #0 18ce2: 4b19 ldr r3, [pc, #100] ; (18d48 ) 18ce4: 4798 blx r3 18ce6: eb00 0080 add.w r0, r0, r0, lsl #2 18cea: eb00 0080 add.w r0, r0, r0, lsl #2 18cee: 3050 adds r0, #80 ; 0x50 18cf0: 4b16 ldr r3, [pc, #88] ; (18d4c ) 18cf2: fb83 2300 smull r2, r3, r3, r0 18cf6: 17c2 asrs r2, r0, #31 18cf8: ebc2 12a3 rsb r2, r2, r3, asr #6 18cfc: b212 sxth r2, r2 18cfe: f7fe bfe6 b.w 17cce lv_style_set_bg_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_BG); 18d02: 231f movs r3, #31 18d04: 213f movs r1, #63 ; 0x3f 18d06: 461c mov r4, r3 18d08: f7ff b810 b.w 17d2c lv_style_set_border_width(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(5)); 18d0c: 2000 movs r0, #0 18d0e: 4b0e ldr r3, [pc, #56] ; (18d48 ) 18d10: 4798 blx r3 18d12: eb00 0080 add.w r0, r0, r0, lsl #2 18d16: 3050 adds r0, #80 ; 0x50 18d18: 4b0c ldr r3, [pc, #48] ; (18d4c ) 18d1a: fb83 2300 smull r2, r3, r3, r0 18d1e: 17c2 asrs r2, r0, #31 18d20: ebc2 12a3 rsb r2, r2, r3, asr #6 18d24: b212 sxth r2, r2 18d26: f7ff b845 b.w 17db4 lv_style_set_pad_top(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 18d2a: 2000 movs r0, #0 18d2c: 4b06 ldr r3, [pc, #24] ; (18d48 ) 18d2e: 4798 blx r3 18d30: ebc0 00c0 rsb r0, r0, r0, lsl #3 18d34: 3050 adds r0, #80 ; 0x50 18d36: 4b05 ldr r3, [pc, #20] ; (18d4c ) 18d38: fb83 2300 smull r2, r3, r3, r0 18d3c: 17c2 asrs r2, r0, #31 18d3e: ebc2 12a3 rsb r2, r2, r3, asr #6 18d42: b212 sxth r2, r2 18d44: f7ff b87f b.w 17e46 18d48: 00010f25 .word 0x00010f25 18d4c: 66666667 .word 0x66666667 lv_style_set_pad_left(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 18d50: 2000 movs r0, #0 18d52: 4bca ldr r3, [pc, #808] ; (1907c ) 18d54: 4798 blx r3 18d56: ebc0 00c0 rsb r0, r0, r0, lsl #3 18d5a: 3050 adds r0, #80 ; 0x50 18d5c: 4bc8 ldr r3, [pc, #800] ; (19080 ) 18d5e: fb83 2300 smull r2, r3, r3, r0 18d62: 17c2 asrs r2, r0, #31 18d64: ebc2 12a3 rsb r2, r2, r3, asr #6 18d68: b212 sxth r2, r2 18d6a: f7ff b87e b.w 17e6a lv_style_set_pad_right(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 18d6e: 2000 movs r0, #0 18d70: 4bc2 ldr r3, [pc, #776] ; (1907c ) 18d72: 4798 blx r3 18d74: ebc0 00c0 rsb r0, r0, r0, lsl #3 18d78: 3050 adds r0, #80 ; 0x50 18d7a: 4bc1 ldr r3, [pc, #772] ; (19080 ) 18d7c: fb83 2300 smull r2, r3, r3, r0 18d80: 17c2 asrs r2, r0, #31 18d82: ebc2 12a3 rsb r2, r2, r3, asr #6 18d86: b212 sxth r2, r2 18d88: f7ff b881 b.w 17e8e lv_style_set_pad_top(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 18d8c: 2000 movs r0, #0 18d8e: 4bbb ldr r3, [pc, #748] ; (1907c ) 18d90: 4798 blx r3 18d92: eb00 0080 add.w r0, r0, r0, lsl #2 18d96: 0080 lsls r0, r0, #2 18d98: 3050 adds r0, #80 ; 0x50 18d9a: 4bb9 ldr r3, [pc, #740] ; (19080 ) 18d9c: fb83 2300 smull r2, r3, r3, r0 18da0: 17c2 asrs r2, r0, #31 18da2: ebc2 12a3 rsb r2, r2, r3, asr #6 18da6: b212 sxth r2, r2 18da8: f7ff b8ba b.w 17f20 lv_style_set_pad_bottom(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 18dac: 2000 movs r0, #0 18dae: 4bb3 ldr r3, [pc, #716] ; (1907c ) 18db0: 4798 blx r3 18db2: eb00 0080 add.w r0, r0, r0, lsl #2 18db6: 0080 lsls r0, r0, #2 18db8: 3050 adds r0, #80 ; 0x50 18dba: 4bb1 ldr r3, [pc, #708] ; (19080 ) 18dbc: fb83 2300 smull r2, r3, r3, r0 18dc0: 17c2 asrs r2, r0, #31 18dc2: ebc2 12a3 rsb r2, r2, r3, asr #6 18dc6: b212 sxth r2, r2 18dc8: f7ff b8bd b.w 17f46 lv_style_set_size(&styles->tabview_indic, LV_STATE_DEFAULT, LV_DPX(5)); 18dcc: 2000 movs r0, #0 18dce: 4bab ldr r3, [pc, #684] ; (1907c ) 18dd0: 4798 blx r3 18dd2: eb00 0080 add.w r0, r0, r0, lsl #2 18dd6: 3050 adds r0, #80 ; 0x50 18dd8: 4ba9 ldr r3, [pc, #676] ; (19080 ) 18dda: fb83 2300 smull r2, r3, r3, r0 18dde: 17c2 asrs r2, r0, #31 18de0: ebc2 12a3 rsb r2, r2, r3, asr #6 18de4: b212 sxth r2, r2 18de6: f7ff b8e2 b.w 17fae lv_style_set_pad_top(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 18dea: 2000 movs r0, #0 18dec: 4ba3 ldr r3, [pc, #652] ; (1907c ) 18dee: 4798 blx r3 18df0: ebc0 1000 rsb r0, r0, r0, lsl #4 18df4: 3050 adds r0, #80 ; 0x50 18df6: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18dfa: da02 bge.n 18e02 18dfc: 2201 movs r2, #1 18dfe: f7ff b8f9 b.w 17ff4 18e02: 2000 movs r0, #0 18e04: 4b9d ldr r3, [pc, #628] ; (1907c ) 18e06: 4798 blx r3 18e08: ebc0 1000 rsb r0, r0, r0, lsl #4 18e0c: 3050 adds r0, #80 ; 0x50 18e0e: 4b9c ldr r3, [pc, #624] ; (19080 ) 18e10: fb83 2300 smull r2, r3, r3, r0 18e14: 17c2 asrs r2, r0, #31 18e16: ebc2 12a3 rsb r2, r2, r3, asr #6 18e1a: b212 sxth r2, r2 18e1c: f7ff b8ea b.w 17ff4 18e20: 2000 movs r0, #0 18e22: 4b96 ldr r3, [pc, #600] ; (1907c ) 18e24: 4798 blx r3 18e26: ebc0 1000 rsb r0, r0, r0, lsl #4 18e2a: 0040 lsls r0, r0, #1 18e2c: 3050 adds r0, #80 ; 0x50 18e2e: 4b94 ldr r3, [pc, #592] ; (19080 ) 18e30: fb83 2300 smull r2, r3, r3, r0 18e34: 17c2 asrs r2, r0, #31 18e36: ebc2 12a3 rsb r2, r2, r3, asr #6 18e3a: b212 sxth r2, r2 18e3c: f7ff b8da b.w 17ff4 lv_style_set_pad_bottom(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 18e40: 2000 movs r0, #0 18e42: 4b8e ldr r3, [pc, #568] ; (1907c ) 18e44: 4798 blx r3 18e46: ebc0 1000 rsb r0, r0, r0, lsl #4 18e4a: 3050 adds r0, #80 ; 0x50 18e4c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18e50: da02 bge.n 18e58 18e52: 2201 movs r2, #1 18e54: f7ff b8e7 b.w 18026 18e58: 2000 movs r0, #0 18e5a: 4b88 ldr r3, [pc, #544] ; (1907c ) 18e5c: 4798 blx r3 18e5e: ebc0 1000 rsb r0, r0, r0, lsl #4 18e62: 3050 adds r0, #80 ; 0x50 18e64: 4b86 ldr r3, [pc, #536] ; (19080 ) 18e66: fb83 2300 smull r2, r3, r3, r0 18e6a: 17c2 asrs r2, r0, #31 18e6c: ebc2 12a3 rsb r2, r2, r3, asr #6 18e70: b212 sxth r2, r2 18e72: f7ff b8d8 b.w 18026 18e76: 2000 movs r0, #0 18e78: 4b80 ldr r3, [pc, #512] ; (1907c ) 18e7a: 4798 blx r3 18e7c: ebc0 1000 rsb r0, r0, r0, lsl #4 18e80: 0040 lsls r0, r0, #1 18e82: 3050 adds r0, #80 ; 0x50 18e84: 4b7e ldr r3, [pc, #504] ; (19080 ) 18e86: fb83 2300 smull r2, r3, r3, r0 18e8a: 17c2 asrs r2, r0, #31 18e8c: ebc2 12a3 rsb r2, r2, r3, asr #6 18e90: b212 sxth r2, r2 18e92: f7ff b8c8 b.w 18026 lv_style_set_pad_left(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 18e96: 2000 movs r0, #0 18e98: 4b78 ldr r3, [pc, #480] ; (1907c ) 18e9a: 4798 blx r3 18e9c: ebc0 1000 rsb r0, r0, r0, lsl #4 18ea0: 3050 adds r0, #80 ; 0x50 18ea2: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18ea6: da02 bge.n 18eae 18ea8: 2201 movs r2, #1 18eaa: f7ff b8d5 b.w 18058 18eae: 2000 movs r0, #0 18eb0: 4b72 ldr r3, [pc, #456] ; (1907c ) 18eb2: 4798 blx r3 18eb4: ebc0 1000 rsb r0, r0, r0, lsl #4 18eb8: 3050 adds r0, #80 ; 0x50 18eba: 4b71 ldr r3, [pc, #452] ; (19080 ) 18ebc: fb83 2300 smull r2, r3, r3, r0 18ec0: 17c2 asrs r2, r0, #31 18ec2: ebc2 12a3 rsb r2, r2, r3, asr #6 18ec6: b212 sxth r2, r2 18ec8: f7ff b8c6 b.w 18058 18ecc: 2000 movs r0, #0 18ece: 4b6b ldr r3, [pc, #428] ; (1907c ) 18ed0: 4798 blx r3 18ed2: ebc0 1000 rsb r0, r0, r0, lsl #4 18ed6: 0040 lsls r0, r0, #1 18ed8: 3050 adds r0, #80 ; 0x50 18eda: 4b69 ldr r3, [pc, #420] ; (19080 ) 18edc: fb83 2300 smull r2, r3, r3, r0 18ee0: 17c2 asrs r2, r0, #31 18ee2: ebc2 12a3 rsb r2, r2, r3, asr #6 18ee6: b212 sxth r2, r2 18ee8: f7ff b8b6 b.w 18058 lv_style_set_pad_right(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 18eec: 2000 movs r0, #0 18eee: 4b63 ldr r3, [pc, #396] ; (1907c ) 18ef0: 4798 blx r3 18ef2: ebc0 1000 rsb r0, r0, r0, lsl #4 18ef6: 3050 adds r0, #80 ; 0x50 18ef8: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18efc: da02 bge.n 18f04 18efe: 2201 movs r2, #1 18f00: f7ff b8d4 b.w 180ac 18f04: 2000 movs r0, #0 18f06: 4b5d ldr r3, [pc, #372] ; (1907c ) 18f08: 4798 blx r3 18f0a: ebc0 1000 rsb r0, r0, r0, lsl #4 18f0e: 3050 adds r0, #80 ; 0x50 18f10: 4b5b ldr r3, [pc, #364] ; (19080 ) 18f12: fb83 2300 smull r2, r3, r3, r0 18f16: 17c2 asrs r2, r0, #31 18f18: ebc2 12a3 rsb r2, r2, r3, asr #6 18f1c: b212 sxth r2, r2 18f1e: f7ff b8c5 b.w 180ac 18f22: 2000 movs r0, #0 18f24: 4b55 ldr r3, [pc, #340] ; (1907c ) 18f26: 4798 blx r3 18f28: ebc0 1000 rsb r0, r0, r0, lsl #4 18f2c: 0040 lsls r0, r0, #1 18f2e: 3050 adds r0, #80 ; 0x50 18f30: 4b53 ldr r3, [pc, #332] ; (19080 ) 18f32: fb83 2300 smull r2, r3, r3, r0 18f36: 17c2 asrs r2, r0, #31 18f38: ebc2 12a3 rsb r2, r2, r3, asr #6 18f3c: b212 sxth r2, r2 18f3e: f7ff b8b5 b.w 180ac lv_style_set_pad_inner(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 18f42: 2000 movs r0, #0 18f44: 4b4d ldr r3, [pc, #308] ; (1907c ) 18f46: 4798 blx r3 18f48: ebc0 1000 rsb r0, r0, r0, lsl #4 18f4c: 3050 adds r0, #80 ; 0x50 18f4e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18f52: da02 bge.n 18f5a 18f54: 2201 movs r2, #1 18f56: f7ff b8c2 b.w 180de 18f5a: 2000 movs r0, #0 18f5c: 4b47 ldr r3, [pc, #284] ; (1907c ) 18f5e: 4798 blx r3 18f60: ebc0 1000 rsb r0, r0, r0, lsl #4 18f64: 3050 adds r0, #80 ; 0x50 18f66: 4b46 ldr r3, [pc, #280] ; (19080 ) 18f68: fb83 2300 smull r2, r3, r3, r0 18f6c: 17c2 asrs r2, r0, #31 18f6e: ebc2 12a3 rsb r2, r2, r3, asr #6 18f72: b212 sxth r2, r2 18f74: f7ff b8b3 b.w 180de 18f78: 2000 movs r0, #0 18f7a: 4b40 ldr r3, [pc, #256] ; (1907c ) 18f7c: 4798 blx r3 18f7e: ebc0 1000 rsb r0, r0, r0, lsl #4 18f82: 0040 lsls r0, r0, #1 18f84: 3050 adds r0, #80 ; 0x50 18f86: 4b3e ldr r3, [pc, #248] ; (19080 ) 18f88: fb83 2300 smull r2, r3, r3, r0 18f8c: 17c2 asrs r2, r0, #31 18f8e: ebc2 12a3 rsb r2, r2, r3, asr #6 18f92: b212 sxth r2, r2 18f94: f7ff b8a3 b.w 180de lv_style_set_pad_left(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 18f98: 2000 movs r0, #0 18f9a: 4b38 ldr r3, [pc, #224] ; (1907c ) 18f9c: 4798 blx r3 18f9e: ebc0 1000 rsb r0, r0, r0, lsl #4 18fa2: 3050 adds r0, #80 ; 0x50 18fa4: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18fa8: da02 bge.n 18fb0 18faa: 2201 movs r2, #1 18fac: f7ff b8d9 b.w 18162 18fb0: 2000 movs r0, #0 18fb2: 4b32 ldr r3, [pc, #200] ; (1907c ) 18fb4: 4798 blx r3 18fb6: ebc0 1000 rsb r0, r0, r0, lsl #4 18fba: 3050 adds r0, #80 ; 0x50 18fbc: 4b30 ldr r3, [pc, #192] ; (19080 ) 18fbe: fb83 2300 smull r2, r3, r3, r0 18fc2: 17c2 asrs r2, r0, #31 18fc4: ebc2 12a3 rsb r2, r2, r3, asr #6 18fc8: b212 sxth r2, r2 18fca: f7ff b8ca b.w 18162 18fce: 2000 movs r0, #0 18fd0: 4b2a ldr r3, [pc, #168] ; (1907c ) 18fd2: 4798 blx r3 18fd4: ebc0 1000 rsb r0, r0, r0, lsl #4 18fd8: 0040 lsls r0, r0, #1 18fda: 3050 adds r0, #80 ; 0x50 18fdc: 4b28 ldr r3, [pc, #160] ; (19080 ) 18fde: fb83 2300 smull r2, r3, r3, r0 18fe2: 17c2 asrs r2, r0, #31 18fe4: ebc2 12a3 rsb r2, r2, r3, asr #6 18fe8: b212 sxth r2, r2 18fea: f7ff b8ba b.w 18162 lv_style_set_pad_right(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 18fee: 2000 movs r0, #0 18ff0: 4b22 ldr r3, [pc, #136] ; (1907c ) 18ff2: 4798 blx r3 18ff4: ebc0 1000 rsb r0, r0, r0, lsl #4 18ff8: 3050 adds r0, #80 ; 0x50 18ffa: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18ffe: da02 bge.n 19006 19000: 2201 movs r2, #1 19002: f7ff b8c7 b.w 18194 19006: 2000 movs r0, #0 19008: 4b1c ldr r3, [pc, #112] ; (1907c ) 1900a: 4798 blx r3 1900c: ebc0 1000 rsb r0, r0, r0, lsl #4 19010: 3050 adds r0, #80 ; 0x50 19012: 4b1b ldr r3, [pc, #108] ; (19080 ) 19014: fb83 2300 smull r2, r3, r3, r0 19018: 17c2 asrs r2, r0, #31 1901a: ebc2 12a3 rsb r2, r2, r3, asr #6 1901e: b212 sxth r2, r2 19020: f7ff b8b8 b.w 18194 19024: 2000 movs r0, #0 19026: 4b15 ldr r3, [pc, #84] ; (1907c ) 19028: 4798 blx r3 1902a: ebc0 1000 rsb r0, r0, r0, lsl #4 1902e: 0040 lsls r0, r0, #1 19030: 3050 adds r0, #80 ; 0x50 19032: 4b13 ldr r3, [pc, #76] ; (19080 ) 19034: fb83 2300 smull r2, r3, r3, r0 19038: 17c2 asrs r2, r0, #31 1903a: ebc2 12a3 rsb r2, r2, r3, asr #6 1903e: b212 sxth r2, r2 19040: f7ff b8a8 b.w 18194 lv_style_set_pad_top(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 19044: 2000 movs r0, #0 19046: 4b0d ldr r3, [pc, #52] ; (1907c ) 19048: 4798 blx r3 1904a: ebc0 1000 rsb r0, r0, r0, lsl #4 1904e: 3050 adds r0, #80 ; 0x50 19050: f5b0 7fa0 cmp.w r0, #320 ; 0x140 19054: da02 bge.n 1905c 19056: 2201 movs r2, #1 19058: f7ff b8b5 b.w 181c6 1905c: 2000 movs r0, #0 1905e: 4b07 ldr r3, [pc, #28] ; (1907c ) 19060: 4798 blx r3 19062: ebc0 1000 rsb r0, r0, r0, lsl #4 19066: 3050 adds r0, #80 ; 0x50 19068: 4b05 ldr r3, [pc, #20] ; (19080 ) 1906a: fb83 2300 smull r2, r3, r3, r0 1906e: 17c2 asrs r2, r0, #31 19070: ebc2 12a3 rsb r2, r2, r3, asr #6 19074: b212 sxth r2, r2 19076: f7ff b8a6 b.w 181c6 1907a: bf00 nop 1907c: 00010f25 .word 0x00010f25 19080: 66666667 .word 0x66666667 19084: 2000 movs r0, #0 19086: 4b1d ldr r3, [pc, #116] ; (190fc ) 19088: 4798 blx r3 1908a: ebc0 1000 rsb r0, r0, r0, lsl #4 1908e: 0040 lsls r0, r0, #1 19090: 3050 adds r0, #80 ; 0x50 19092: 4b1b ldr r3, [pc, #108] ; (19100 ) 19094: fb83 2300 smull r2, r3, r3, r0 19098: 17c2 asrs r2, r0, #31 1909a: ebc2 12a3 rsb r2, r2, r3, asr #6 1909e: b212 sxth r2, r2 190a0: f7ff b891 b.w 181c6 lv_style_set_pad_bottom(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 190a4: 2000 movs r0, #0 190a6: 4b15 ldr r3, [pc, #84] ; (190fc ) 190a8: 4798 blx r3 190aa: ebc0 1000 rsb r0, r0, r0, lsl #4 190ae: 3050 adds r0, #80 ; 0x50 190b0: f5b0 7fa0 cmp.w r0, #320 ; 0x140 190b4: da02 bge.n 190bc 190b6: 2201 movs r2, #1 190b8: f7ff b89e b.w 181f8 190bc: 2000 movs r0, #0 190be: 4b0f ldr r3, [pc, #60] ; (190fc ) 190c0: 4798 blx r3 190c2: ebc0 1000 rsb r0, r0, r0, lsl #4 190c6: 3050 adds r0, #80 ; 0x50 190c8: 4b0d ldr r3, [pc, #52] ; (19100 ) 190ca: fb83 2300 smull r2, r3, r3, r0 190ce: 17c2 asrs r2, r0, #31 190d0: ebc2 12a3 rsb r2, r2, r3, asr #6 190d4: b212 sxth r2, r2 190d6: f7ff b88f b.w 181f8 190da: 2000 movs r0, #0 190dc: 4b07 ldr r3, [pc, #28] ; (190fc ) 190de: 4798 blx r3 190e0: ebc0 1000 rsb r0, r0, r0, lsl #4 190e4: 0040 lsls r0, r0, #1 190e6: 3050 adds r0, #80 ; 0x50 190e8: 4b05 ldr r3, [pc, #20] ; (19100 ) 190ea: fb83 2300 smull r2, r3, r3, r0 190ee: 17c2 asrs r2, r0, #31 190f0: ebc2 12a3 rsb r2, r2, r3, asr #6 190f4: b212 sxth r2, r2 190f6: f7ff b87f b.w 181f8 190fa: bf00 nop 190fc: 00010f25 .word 0x00010f25 19100: 66666667 .word 0x66666667 00019104 : * 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) { 19104: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 19108: b0a4 sub sp, #144 ; 0x90 1910a: 4607 mov r7, r0 1910c: 460e mov r6, r1 1910e: 4614 mov r4, r2 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 19110: 4bb5 ldr r3, [pc, #724] ; (193e8 ) 19112: 4798 blx r3 19114: 4605 mov r5, r0 if(mode == LV_DESIGN_COVER_CHK) { 19116: 2c02 cmp r4, #2 19118: d00d beq.n 19136 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) { 1911a: 2c00 cmp r4, #0 1911c: f040 81fa bne.w 19514 if(ext->h == 0 || ext->w == 0) return true; 19120: f9b0 300a ldrsh.w r3, [r0, #10] 19124: 2b00 cmp r3, #0 19126: f000 81f3 beq.w 19510 1912a: f9b0 3008 ldrsh.w r3, [r0, #8] 1912e: 2b00 cmp r3, #0 19130: d173 bne.n 1921a 19132: 2001 movs r0, #1 19134: e1f1 b.n 1951a _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) 19136: 2202 movs r2, #2 19138: 2100 movs r1, #0 1913a: 4638 mov r0, r7 1913c: 4bab ldr r3, [pc, #684] ; (193ec ) 1913e: 4798 blx r3 if(lv_obj_get_style_clip_corner(img, LV_IMG_PART_MAIN)) return LV_DESIGN_RES_MASKED; 19140: b108 cbz r0, 19146 19142: 2003 movs r0, #3 19144: e1e9 b.n 1951a if(ext->src_type == LV_IMG_SRC_UNKNOWN || ext->src_type == LV_IMG_SRC_SYMBOL) return LV_DESIGN_RES_NOT_COVER; 19146: 7d2a ldrb r2, [r5, #20] 19148: f002 0303 and.w r3, r2, #3 1914c: 3b02 subs r3, #2 1914e: b2db uxtb r3, r3 19150: 2b01 cmp r3, #1 19152: f240 820f bls.w 19574 if(ext->cf != LV_IMG_CF_TRUE_COLOR && ext->cf != LV_IMG_CF_RAW) return LV_DESIGN_RES_NOT_COVER; 19156: f002 02f8 and.w r2, r2, #248 ; 0xf8 1915a: 2a20 cmp r2, #32 1915c: d003 beq.n 19166 1915e: 2a08 cmp r2, #8 19160: d001 beq.n 19166 19162: 2002 movs r0, #2 19164: e1d9 b.n 1951a _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) 19166: 2206 movs r2, #6 19168: 2100 movs r1, #0 1916a: 4638 mov r0, r7 1916c: 4b9f ldr r3, [pc, #636] ; (193ec ) 1916e: 4798 blx r3 angle_final += ext->angle; 19170: 89ab ldrh r3, [r5, #12] if(angle_final == 0) return LV_DESIGN_RES_NOT_COVER; 19172: 42c3 cmn r3, r0 19174: d101 bne.n 1917a 19176: 2002 movs r0, #2 19178: e1cf b.n 1951a _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ZOOM, transform_zoom, lv_style_int_t, _int, scalar) 1917a: 2207 movs r2, #7 1917c: 2100 movs r1, #0 1917e: 4638 mov r0, r7 19180: 4b9a ldr r3, [pc, #616] ; (193ec ) 19182: 4798 blx r3 zoom_final = (zoom_final * ext->zoom) >> 8; 19184: 8a6b ldrh r3, [r5, #18] 19186: fb00 f303 mul.w r3, r0, r3 1918a: 121b asrs r3, r3, #8 if(zoom_final != LV_IMG_ZOOM_NONE) { 1918c: f5b3 7f80 cmp.w r3, #256 ; 0x100 19190: d008 beq.n 191a4 if(_lv_area_is_in(clip_area, &img->coords, 0) == false) return LV_DESIGN_RES_NOT_COVER; 19192: 2200 movs r2, #0 19194: f107 0110 add.w r1, r7, #16 19198: 4630 mov r0, r6 1919a: 4b95 ldr r3, [pc, #596] ; (193f0 ) 1919c: 4798 blx r3 1919e: bb88 cbnz r0, 19204 191a0: 2002 movs r0, #2 191a2: e1ba b.n 1951a _lv_img_buf_get_transformed_area(&a, lv_obj_get_width(img), lv_obj_get_height(img), 0, zoom_final, &ext->pivot); 191a4: 4638 mov r0, r7 191a6: 4b93 ldr r3, [pc, #588] ; (193f4 ) 191a8: 4798 blx r3 191aa: 4604 mov r4, r0 191ac: 4638 mov r0, r7 191ae: 4b92 ldr r3, [pc, #584] ; (193f8 ) 191b0: 4798 blx r3 191b2: 350e adds r5, #14 191b4: 9501 str r5, [sp, #4] 191b6: f44f 7380 mov.w r3, #256 ; 0x100 191ba: 9300 str r3, [sp, #0] 191bc: 2300 movs r3, #0 191be: 4602 mov r2, r0 191c0: 4621 mov r1, r4 191c2: a80f add r0, sp, #60 ; 0x3c 191c4: 4c8d ldr r4, [pc, #564] ; (193fc ) 191c6: 47a0 blx r4 a.x1 += img->coords.x1; 191c8: 8a3a ldrh r2, [r7, #16] 191ca: f8bd 303c ldrh.w r3, [sp, #60] ; 0x3c 191ce: 4413 add r3, r2 191d0: f8ad 303c strh.w r3, [sp, #60] ; 0x3c a.y1 += img->coords.y1; 191d4: 8a7b ldrh r3, [r7, #18] 191d6: f8bd 103e ldrh.w r1, [sp, #62] ; 0x3e 191da: 4419 add r1, r3 191dc: f8ad 103e strh.w r1, [sp, #62] ; 0x3e a.x2 += img->coords.x1; 191e0: f8bd 1040 ldrh.w r1, [sp, #64] ; 0x40 191e4: 440a add r2, r1 191e6: f8ad 2040 strh.w r2, [sp, #64] ; 0x40 a.y2 += img->coords.y1; 191ea: f8bd 2042 ldrh.w r2, [sp, #66] ; 0x42 191ee: 4413 add r3, r2 191f0: f8ad 3042 strh.w r3, [sp, #66] ; 0x42 if(_lv_area_is_in(clip_area, &a, 0) == false) return LV_DESIGN_RES_NOT_COVER; 191f4: 2200 movs r2, #0 191f6: a90f add r1, sp, #60 ; 0x3c 191f8: 4630 mov r0, r6 191fa: 4b7d ldr r3, [pc, #500] ; (193f0 ) 191fc: 4798 blx r3 191fe: b908 cbnz r0, 19204 19200: 2002 movs r0, #2 19202: e18a b.n 1951a _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) 19204: f248 02ac movw r2, #32940 ; 0x80ac 19208: 2100 movs r1, #0 1920a: 4638 mov r0, r7 1920c: 4b7c ldr r3, [pc, #496] ; (19400 ) 1920e: 4798 blx r3 return LV_DESIGN_RES_COVER; 19210: 28ff cmp r0, #255 ; 0xff 19212: bf14 ite ne 19214: 2002 movne r0, #2 19216: 2001 moveq r0, #1 19218: e17f b.n 1951a lv_area_t img_coords; lv_obj_get_coords(img, &img_coords); 1921a: a902 add r1, sp, #8 1921c: 4638 mov r0, r7 1921e: 4b79 ldr r3, [pc, #484] ; (19404 ) 19220: 4798 blx r3 lv_draw_rect_dsc_t bg_dsc; lv_draw_rect_dsc_init(&bg_dsc); 19222: a80f add r0, sp, #60 ; 0x3c 19224: 4b78 ldr r3, [pc, #480] ; (19408 ) 19226: 4798 blx r3 lv_obj_init_draw_rect_dsc(img, LV_IMG_PART_MAIN, &bg_dsc); 19228: aa0f add r2, sp, #60 ; 0x3c 1922a: 2100 movs r1, #0 1922c: 4638 mov r0, r7 1922e: 4b77 ldr r3, [pc, #476] ; (1940c ) 19230: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 19232: 2233 movs r2, #51 ; 0x33 19234: 2100 movs r1, #0 19236: 4638 mov r0, r7 19238: 4b6c ldr r3, [pc, #432] ; (193ec ) 1923a: 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)) { 1923c: b110 cbz r0, 19244 bg_dsc.border_opa = LV_OPA_TRANSP; 1923e: 2300 movs r3, #0 19240: f88d 3050 strb.w r3, [sp, #80] ; 0x50 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ZOOM, transform_zoom, lv_style_int_t, _int, scalar) 19244: 2207 movs r2, #7 19246: 2100 movs r1, #0 19248: 4638 mov r0, r7 1924a: 4b68 ldr r3, [pc, #416] ; (193ec ) 1924c: 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; 1924e: 8a6b ldrh r3, [r5, #18] 19250: fb00 f003 mul.w r0, r0, r3 if(zoom_final == 0) return LV_DESIGN_RES_OK; 19254: 1204 asrs r4, r0, #8 19256: d101 bne.n 1925c 19258: 2000 movs r0, #0 1925a: e15e b.n 1951a _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ANGLE, transform_angle, lv_style_int_t, _int, scalar) 1925c: 2206 movs r2, #6 1925e: 2100 movs r1, #0 19260: 4638 mov r0, r7 19262: f8df 8188 ldr.w r8, [pc, #392] ; 193ec 19266: 47c0 blx r8 int32_t angle_final = lv_obj_get_style_transform_angle(img, LV_IMG_PART_MAIN); angle_final += ext->angle; 19268: f8b5 900c ldrh.w r9, [r5, #12] 1926c: 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), 1926e: 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); 19270: f8bd 200e ldrh.w r2, [sp, #14] 19274: 3201 adds r2, #1 19276: f8bd 300a ldrh.w r3, [sp, #10] 1927a: 1ad2 subs r2, r2, r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1927c: f8bd 100c ldrh.w r1, [sp, #12] 19280: 3101 adds r1, #1 19282: f8bd 3008 ldrh.w r3, [sp, #8] 19286: 1ac9 subs r1, r1, r3 19288: f105 030e add.w r3, r5, #14 1928c: 9301 str r3, [sp, #4] 1928e: 9400 str r4, [sp, #0] 19290: fa0f f389 sxth.w r3, r9 19294: b212 sxth r2, r2 19296: b209 sxth r1, r1 19298: a804 add r0, sp, #16 1929a: f8df a160 ldr.w sl, [pc, #352] ; 193fc 1929e: 47d0 blx sl angle_final, zoom_final, &ext->pivot); bg_coords.x1 += img_coords.x1; 192a0: f8bd 2008 ldrh.w r2, [sp, #8] 192a4: f8bd 3010 ldrh.w r3, [sp, #16] 192a8: 4413 add r3, r2 192aa: f8ad 3010 strh.w r3, [sp, #16] bg_coords.y1 += img_coords.y1; 192ae: f8bd 300a ldrh.w r3, [sp, #10] 192b2: f8bd 1012 ldrh.w r1, [sp, #18] 192b6: 4419 add r1, r3 192b8: f8ad 1012 strh.w r1, [sp, #18] bg_coords.x2 += img_coords.x1; 192bc: f8bd 1014 ldrh.w r1, [sp, #20] 192c0: 440a add r2, r1 192c2: f8ad 2014 strh.w r2, [sp, #20] bg_coords.y2 += img_coords.y1; 192c6: f8bd 2016 ldrh.w r2, [sp, #22] 192ca: 4413 add r3, r2 192cc: f8ad 3016 strh.w r3, [sp, #22] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 192d0: 2212 movs r2, #18 192d2: 2100 movs r1, #0 192d4: 4638 mov r0, r7 192d6: 47c0 blx r8 bg_coords.x1 -= lv_obj_get_style_pad_left(img, LV_IMG_PART_MAIN); 192d8: f8bd 3010 ldrh.w r3, [sp, #16] 192dc: 1a18 subs r0, r3, r0 192de: f8ad 0010 strh.w r0, [sp, #16] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 192e2: 2213 movs r2, #19 192e4: 2100 movs r1, #0 192e6: 4638 mov r0, r7 192e8: 47c0 blx r8 bg_coords.x2 += lv_obj_get_style_pad_right(img, LV_IMG_PART_MAIN); 192ea: f8bd 3014 ldrh.w r3, [sp, #20] 192ee: 4418 add r0, r3 192f0: f8ad 0014 strh.w r0, [sp, #20] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 192f4: 2210 movs r2, #16 192f6: 2100 movs r1, #0 192f8: 4638 mov r0, r7 192fa: 47c0 blx r8 bg_coords.y1 -= lv_obj_get_style_pad_top(img, LV_IMG_PART_MAIN); 192fc: f8bd 3012 ldrh.w r3, [sp, #18] 19300: 1a18 subs r0, r3, r0 19302: f8ad 0012 strh.w r0, [sp, #18] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 19306: 2211 movs r2, #17 19308: 2100 movs r1, #0 1930a: 4638 mov r0, r7 1930c: 47c0 blx r8 bg_coords.y2 += lv_obj_get_style_pad_bottom(img, LV_IMG_PART_MAIN); 1930e: f8bd 3016 ldrh.w r3, [sp, #22] 19312: 4418 add r0, r3 19314: f8ad 0016 strh.w r0, [sp, #22] lv_draw_rect(&bg_coords, clip_area, &bg_dsc); 19318: aa0f add r2, sp, #60 ; 0x3c 1931a: 4631 mov r1, r6 1931c: a804 add r0, sp, #16 1931e: 4b3c ldr r3, [pc, #240] ; (19410 ) 19320: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 19322: 2202 movs r2, #2 19324: 2100 movs r1, #0 19326: 4638 mov r0, r7 19328: 47c0 blx r8 if(lv_obj_get_style_clip_corner(img, LV_OBJ_PART_MAIN)) { 1932a: b9c8 cbnz r0, 19360 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) { 1932c: 7d2b ldrb r3, [r5, #20] 1932e: f003 0303 and.w r3, r3, #3 19332: 2b01 cmp r3, #1 19334: d92a bls.n 1938c 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) { 19336: 2b02 cmp r3, #2 19338: f000 80d1 beq.w 194de 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"); 1933c: 4b35 ldr r3, [pc, #212] ; (19414 ) 1933e: 9300 str r3, [sp, #0] 19340: 4b35 ldr r3, [pc, #212] ; (19418 ) 19342: f240 22bb movw r2, #699 ; 0x2bb 19346: 4935 ldr r1, [pc, #212] ; (1941c ) 19348: 2002 movs r0, #2 1934a: 4c35 ldr r4, [pc, #212] ; (19420 ) 1934c: 47a0 blx r4 lv_draw_img(&img->coords, clip_area, NULL, NULL); 1934e: 2300 movs r3, #0 19350: 461a mov r2, r3 19352: 4631 mov r1, r6 19354: f107 0010 add.w r0, r7, #16 19358: 4c32 ldr r4, [pc, #200] ; (19424 ) 1935a: 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; 1935c: 2000 movs r0, #0 1935e: e0dc b.n 1951a lv_draw_mask_radius_param_t * mp = _lv_mem_buf_get(sizeof(lv_draw_mask_radius_param_t)); 19360: 201c movs r0, #28 19362: 4b31 ldr r3, [pc, #196] ; (19428 ) 19364: 4798 blx r3 19366: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 19368: 2201 movs r2, #1 1936a: 2100 movs r1, #0 1936c: 4638 mov r0, r7 1936e: 4b1f ldr r3, [pc, #124] ; (193ec ) 19370: 4798 blx r3 lv_draw_mask_radius_init(mp, &bg_coords, r, false); 19372: 2300 movs r3, #0 19374: 4602 mov r2, r0 19376: a904 add r1, sp, #16 19378: 4640 mov r0, r8 1937a: f8df a0bc ldr.w sl, [pc, #188] ; 19438 1937e: 47d0 blx sl lv_draw_mask_add(mp, img + 8); 19380: f507 7118 add.w r1, r7, #608 ; 0x260 19384: 4640 mov r0, r8 19386: 4b29 ldr r3, [pc, #164] ; (1942c ) 19388: 4798 blx r3 1938a: e7cf b.n 1932c img_coords.x1 += ext->offset.x; 1938c: f8bd 2008 ldrh.w r2, [sp, #8] 19390: 88ab ldrh r3, [r5, #4] 19392: 441a add r2, r3 19394: b292 uxth r2, r2 19396: b210 sxth r0, r2 19398: f8ad 0008 strh.w r0, [sp, #8] img_coords.y1 += ext->offset.y; 1939c: f8bd 300a ldrh.w r3, [sp, #10] 193a0: 88e9 ldrh r1, [r5, #6] 193a2: 440b add r3, r1 193a4: b29b uxth r3, r3 193a6: b219 sxth r1, r3 193a8: f8ad 100a strh.w r1, [sp, #10] if(img_coords.x1 > img->coords.x1) img_coords.x1 -= ext->w; 193ac: f9b7 e010 ldrsh.w lr, [r7, #16] 193b0: 4586 cmp lr, r0 193b2: da03 bge.n 193bc 193b4: 8928 ldrh r0, [r5, #8] 193b6: 1a12 subs r2, r2, r0 193b8: f8ad 2008 strh.w r2, [sp, #8] if(img_coords.y1 > img->coords.y1) img_coords.y1 -= ext->h; 193bc: f9b7 2012 ldrsh.w r2, [r7, #18] 193c0: 428a cmp r2, r1 193c2: da03 bge.n 193cc 193c4: 896a ldrh r2, [r5, #10] 193c6: 1a9b subs r3, r3, r2 193c8: f8ad 300a strh.w r3, [sp, #10] lv_draw_img_dsc_init(&img_dsc); 193cc: a808 add r0, sp, #32 193ce: 4b18 ldr r3, [pc, #96] ; (19430 ) 193d0: 4798 blx r3 lv_obj_init_draw_img_dsc(img, LV_IMG_PART_MAIN, &img_dsc); 193d2: aa08 add r2, sp, #32 193d4: 2100 movs r1, #0 193d6: 4638 mov r0, r7 193d8: 4b16 ldr r3, [pc, #88] ; (19434 ) 193da: 4798 blx r3 img_dsc.zoom = zoom_final; 193dc: f8ad 4028 strh.w r4, [sp, #40] ; 0x28 if(img_dsc.zoom == 0) return LV_DESIGN_RES_OK; 193e0: bb64 cbnz r4, 1943c 193e2: 2000 movs r0, #0 193e4: e099 b.n 1951a 193e6: bf00 nop 193e8: 00004d85 .word 0x00004d85 193ec: 000044bd .word 0x000044bd 193f0: 00011755 .word 0x00011755 193f4: 00002f45 .word 0x00002f45 193f8: 00002f95 .word 0x00002f95 193fc: 0000ec4d .word 0x0000ec4d 19400: 000045f5 .word 0x000045f5 19404: 00002e29 .word 0x00002e29 19408: 0000c251 .word 0x0000c251 1940c: 000050ad .word 0x000050ad 19410: 0000c319 .word 0x0000c319 19414: 000250c8 .word 0x000250c8 19418: 00029578 .word 0x00029578 1941c: 000296a0 .word 0x000296a0 19420: 00012245 .word 0x00012245 19424: 000096d1 .word 0x000096d1 19428: 00012925 .word 0x00012925 1942c: 0000bda9 .word 0x0000bda9 19430: 0000962d .word 0x0000962d 19434: 00005751 .word 0x00005751 19438: 0000c015 .word 0x0000c015 img_dsc.angle = angle_final; 1943c: f8ad 9022 strh.w r9, [sp, #34] ; 0x22 img_dsc.pivot.x = ext->pivot.x; 19440: 89eb ldrh r3, [r5, #14] 19442: f8ad 3024 strh.w r3, [sp, #36] ; 0x24 img_dsc.pivot.y = ext->pivot.y; 19446: 8a2b ldrh r3, [r5, #16] 19448: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 img_dsc.antialias = ext->antialias; 1944c: 7d6a ldrb r2, [r5, #21] 1944e: f89d 302f ldrb.w r3, [sp, #47] ; 0x2f 19452: f362 0300 bfi r3, r2, #0, #1 19456: f88d 302f strb.w r3, [sp, #47] ; 0x2f cords_tmp.y1 = img_coords.y1; 1945a: f9bd 300a ldrsh.w r3, [sp, #10] 1945e: f8ad 301a strh.w r3, [sp, #26] cords_tmp.y2 = img_coords.y1 + ext->h - 1; 19462: 1e5a subs r2, r3, #1 19464: 8969 ldrh r1, [r5, #10] 19466: 440a add r2, r1 19468: f8ad 201e strh.w r2, [sp, #30] for(; cords_tmp.y1 <= img_coords.y2; cords_tmp.y1 += ext->h, cords_tmp.y2 += ext->h) { 1946c: f9bd 200e ldrsh.w r2, [sp, #14] 19470: 429a cmp r2, r3 19472: f6ff af73 blt.w 1935c lv_draw_img(&cords_tmp, clip_area, ext->src, &img_dsc); 19476: 4c40 ldr r4, [pc, #256] ; (19578 ) cords_tmp.x1 = img_coords.x1; 19478: f9bd 3008 ldrsh.w r3, [sp, #8] 1947c: f8ad 3018 strh.w r3, [sp, #24] cords_tmp.x2 = img_coords.x1 + ext->w - 1; 19480: 1e5a subs r2, r3, #1 19482: 8929 ldrh r1, [r5, #8] 19484: 440a add r2, r1 19486: f8ad 201c strh.w r2, [sp, #28] for(; cords_tmp.x1 <= img_coords.x2; cords_tmp.x1 += ext->w, cords_tmp.x2 += ext->w) { 1948a: f9bd 200c ldrsh.w r2, [sp, #12] 1948e: 429a cmp r2, r3 19490: db14 blt.n 194bc lv_draw_img(&cords_tmp, clip_area, ext->src, &img_dsc); 19492: ab08 add r3, sp, #32 19494: 682a ldr r2, [r5, #0] 19496: 4631 mov r1, r6 19498: a806 add r0, sp, #24 1949a: 47a0 blx r4 for(; cords_tmp.x1 <= img_coords.x2; cords_tmp.x1 += ext->w, cords_tmp.x2 += ext->w) { 1949c: 892a ldrh r2, [r5, #8] 1949e: f8bd 3018 ldrh.w r3, [sp, #24] 194a2: 4413 add r3, r2 194a4: b21b sxth r3, r3 194a6: f8ad 3018 strh.w r3, [sp, #24] 194aa: f8bd 101c ldrh.w r1, [sp, #28] 194ae: 440a add r2, r1 194b0: f8ad 201c strh.w r2, [sp, #28] 194b4: f9bd 200c ldrsh.w r2, [sp, #12] 194b8: 429a cmp r2, r3 194ba: daea bge.n 19492 for(; cords_tmp.y1 <= img_coords.y2; cords_tmp.y1 += ext->h, cords_tmp.y2 += ext->h) { 194bc: 896a ldrh r2, [r5, #10] 194be: f8bd 301a ldrh.w r3, [sp, #26] 194c2: 4413 add r3, r2 194c4: b21b sxth r3, r3 194c6: f8ad 301a strh.w r3, [sp, #26] 194ca: f8bd 101e ldrh.w r1, [sp, #30] 194ce: 440a add r2, r1 194d0: f8ad 201e strh.w r2, [sp, #30] 194d4: f9bd 200e ldrsh.w r2, [sp, #14] 194d8: 429a cmp r2, r3 194da: dacd bge.n 19478 194dc: e73e b.n 1935c lv_draw_label_dsc_init(&label_dsc); 194de: a808 add r0, sp, #32 194e0: 4b26 ldr r3, [pc, #152] ; (1957c ) 194e2: 4798 blx r3 lv_obj_init_draw_label_dsc(img, LV_IMG_PART_MAIN, &label_dsc); 194e4: aa08 add r2, sp, #32 194e6: 2100 movs r1, #0 194e8: 4638 mov r0, r7 194ea: 4b25 ldr r3, [pc, #148] ; (19580 ) 194ec: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 194ee: f248 02a9 movw r2, #32937 ; 0x80a9 194f2: 2100 movs r1, #0 194f4: 4638 mov r0, r7 194f6: 4b23 ldr r3, [pc, #140] ; (19584 ) 194f8: 4798 blx r3 label_dsc.color = lv_obj_get_style_image_recolor(img, LV_IMG_PART_MAIN); 194fa: f8ad 0020 strh.w r0, [sp, #32] lv_draw_label(&img_coords, clip_area, &label_dsc, ext->src, NULL); 194fe: 682b ldr r3, [r5, #0] 19500: 2200 movs r2, #0 19502: 9200 str r2, [sp, #0] 19504: aa08 add r2, sp, #32 19506: 4631 mov r1, r6 19508: a802 add r0, sp, #8 1950a: 4c1f ldr r4, [pc, #124] ; (19588 ) 1950c: 47a0 blx r4 1950e: e725 b.n 1935c if(ext->h == 0 || ext->w == 0) return true; 19510: 2001 movs r0, #1 19512: e002 b.n 1951a else if(mode == LV_DESIGN_DRAW_POST) { 19514: 2c01 cmp r4, #1 19516: d003 beq.n 19520 return LV_DESIGN_RES_OK; 19518: 2000 movs r0, #0 } 1951a: b024 add sp, #144 ; 0x90 1951c: 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) 19520: 2202 movs r2, #2 19522: 2100 movs r1, #0 19524: 4638 mov r0, r7 19526: 4b19 ldr r3, [pc, #100] ; (1958c ) 19528: 4798 blx r3 if(lv_obj_get_style_clip_corner(img, LV_OBJ_PART_MAIN)) { 1952a: b950 cbnz r0, 19542 lv_draw_rect_dsc_init(&draw_dsc); 1952c: a80f add r0, sp, #60 ; 0x3c 1952e: 4b18 ldr r3, [pc, #96] ; (19590 ) 19530: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 19532: 2233 movs r2, #51 ; 0x33 19534: 2100 movs r1, #0 19536: 4638 mov r0, r7 19538: 4b14 ldr r3, [pc, #80] ; (1958c ) 1953a: 4798 blx r3 if(lv_obj_get_style_border_post(img, LV_OBJ_PART_MAIN)) { 1953c: b940 cbnz r0, 19550 return LV_DESIGN_RES_OK; 1953e: 2000 movs r0, #0 19540: e7eb b.n 1951a lv_draw_mask_radius_param_t * param = lv_draw_mask_remove_custom(img + 8); 19542: f507 7018 add.w r0, r7, #608 ; 0x260 19546: 4b13 ldr r3, [pc, #76] ; (19594 ) 19548: 4798 blx r3 _lv_mem_buf_release(param); 1954a: 4b13 ldr r3, [pc, #76] ; (19598 ) 1954c: 4798 blx r3 1954e: e7ed b.n 1952c draw_dsc.bg_opa = LV_OPA_TRANSP; 19550: 2100 movs r1, #0 19552: f88d 1048 strb.w r1, [sp, #72] ; 0x48 draw_dsc.pattern_opa = LV_OPA_TRANSP; 19556: f88d 1072 strb.w r1, [sp, #114] ; 0x72 draw_dsc.shadow_opa = LV_OPA_TRANSP; 1955a: f88d 1064 strb.w r1, [sp, #100] ; 0x64 lv_obj_init_draw_rect_dsc(img, LV_OBJ_PART_MAIN, &draw_dsc); 1955e: aa0f add r2, sp, #60 ; 0x3c 19560: 4638 mov r0, r7 19562: 4b0e ldr r3, [pc, #56] ; (1959c ) 19564: 4798 blx r3 lv_draw_rect(&img->coords, clip_area, &draw_dsc); 19566: aa0f add r2, sp, #60 ; 0x3c 19568: 4631 mov r1, r6 1956a: f107 0010 add.w r0, r7, #16 1956e: 4b0c ldr r3, [pc, #48] ; (195a0 ) 19570: 4798 blx r3 19572: e7e4 b.n 1953e if(ext->src_type == LV_IMG_SRC_UNKNOWN || ext->src_type == LV_IMG_SRC_SYMBOL) return LV_DESIGN_RES_NOT_COVER; 19574: 2002 movs r0, #2 19576: e7d0 b.n 1951a 19578: 000096d1 .word 0x000096d1 1957c: 000099b5 .word 0x000099b5 19580: 00005699 .word 0x00005699 19584: 00004569 .word 0x00004569 19588: 00009a0d .word 0x00009a0d 1958c: 000044bd .word 0x000044bd 19590: 0000c251 .word 0x0000c251 19594: 0000be79 .word 0x0000be79 19598: 00012559 .word 0x00012559 1959c: 000050ad .word 0x000050ad 195a0: 0000c319 .word 0x0000c319 000195a4 : { 195a4: b530 push {r4, r5, lr} 195a6: b083 sub sp, #12 195a8: 4604 mov r4, r0 LV_ASSERT_OBJ(img, LV_OBJX_NAME); 195aa: 4b0c ldr r3, [pc, #48] ; (195dc ) 195ac: 4798 blx r3 195ae: b968 cbnz r0, 195cc 195b0: 4b0b ldr r3, [pc, #44] ; (195e0 ) 195b2: 9300 str r3, [sp, #0] 195b4: f44f 72e7 mov.w r2, #462 ; 0x1ce 195b8: 490a ldr r1, [pc, #40] ; (195e4 ) 195ba: 2003 movs r0, #3 195bc: 4d0a ldr r5, [pc, #40] ; (195e8 ) 195be: 47a8 blx r5 195c0: 4622 mov r2, r4 195c2: 2300 movs r3, #0 195c4: 4809 ldr r0, [pc, #36] ; (195ec ) 195c6: 490a ldr r1, [pc, #40] ; (195f0 ) 195c8: 4788 blx r1 195ca: e7fe b.n 195ca lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 195cc: 4620 mov r0, r4 195ce: 4b09 ldr r3, [pc, #36] ; (195f4 ) 195d0: 4798 blx r3 return ext->auto_size == 0 ? false : true; 195d2: 7d00 ldrb r0, [r0, #20] } 195d4: f3c0 0080 ubfx r0, r0, #2, #1 195d8: b003 add sp, #12 195da: bd30 pop {r4, r5, pc} 195dc: 00002299 .word 0x00002299 195e0: 000295f0 .word 0x000295f0 195e4: 000296a0 .word 0x000296a0 195e8: 00012245 .word 0x00012245 195ec: 00024824 .word 0x00024824 195f0: 000022a1 .word 0x000022a1 195f4: 00004d85 .word 0x00004d85 000195f8 : { 195f8: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 195fc: b086 sub sp, #24 195fe: 4605 mov r5, r0 19600: 460e mov r6, r1 LV_ASSERT_OBJ(img, LV_OBJX_NAME); 19602: 4b7c ldr r3, [pc, #496] ; (197f4 ) 19604: 4798 blx r3 19606: b960 cbnz r0, 19622 19608: 4b7b ldr r3, [pc, #492] ; (197f8 ) 1960a: 9300 str r3, [sp, #0] 1960c: 228f movs r2, #143 ; 0x8f 1960e: 497b ldr r1, [pc, #492] ; (197fc ) 19610: 2003 movs r0, #3 19612: 4c7b ldr r4, [pc, #492] ; (19800 ) 19614: 47a0 blx r4 19616: 462a mov r2, r5 19618: 2300 movs r3, #0 1961a: 487a ldr r0, [pc, #488] ; (19804 ) 1961c: 497a ldr r1, [pc, #488] ; (19808 ) 1961e: 4788 blx r1 19620: e7fe b.n 19620 lv_img_src_t src_type = lv_img_src_get_type(src_img); 19622: 4630 mov r0, r6 19624: 4b79 ldr r3, [pc, #484] ; (1980c ) 19626: 4798 blx r3 19628: 4607 mov r7, r0 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 1962a: 4628 mov r0, r5 1962c: 4b78 ldr r3, [pc, #480] ; (19810 ) 1962e: 4798 blx r3 19630: 4604 mov r4, r0 switch(src_type) { 19632: 2f02 cmp r7, #2 19634: d83a bhi.n 196ac if(src_type == LV_IMG_SRC_UNKNOWN) { 19636: 2f03 cmp r7, #3 19638: d042 beq.n 196c0 lv_img_decoder_get_info(src_img, &header); 1963a: a905 add r1, sp, #20 1963c: 4630 mov r0, r6 1963e: 4b75 ldr r3, [pc, #468] ; (19814 ) 19640: 4798 blx r3 if(src_type == LV_IMG_SRC_VARIABLE) { 19642: 2f00 cmp r7, #0 19644: d055 beq.n 196f2 else if(src_type == LV_IMG_SRC_FILE || src_type == LV_IMG_SRC_SYMBOL) { 19646: 1e7b subs r3, r7, #1 19648: b2db uxtb r3, r3 1964a: 2b01 cmp r3, #1 1964c: d966 bls.n 1971c if(src_type == LV_IMG_SRC_SYMBOL) { 1964e: 2f02 cmp r7, #2 19650: f000 8099 beq.w 19786 ext->src_type = src_type; 19654: 7d21 ldrb r1, [r4, #20] 19656: f367 0101 bfi r1, r7, #0, #2 ext->w = header.w; 1965a: 9a05 ldr r2, [sp, #20] 1965c: f3c2 228a ubfx r2, r2, #10, #11 19660: 8122 strh r2, [r4, #8] ext->h = header.h; 19662: f8bd 3016 ldrh.w r3, [sp, #22] 19666: f3c3 134a ubfx r3, r3, #5, #11 1966a: 8163 strh r3, [r4, #10] ext->cf = header.cf; 1966c: f89d 0014 ldrb.w r0, [sp, #20] 19670: f360 01c7 bfi r1, r0, #3, #5 19674: 7521 strb r1, [r4, #20] ext->pivot.x = header.w / 2; 19676: f3c2 0249 ubfx r2, r2, #1, #10 1967a: 81e2 strh r2, [r4, #14] ext->pivot.y = header.h / 2; 1967c: f3c3 0349 ubfx r3, r3, #1, #10 19680: 8223 strh r3, [r4, #16] if(lv_img_get_auto_size(img) != false) { 19682: 4628 mov r0, r5 19684: 4b64 ldr r3, [pc, #400] ; (19818 ) 19686: 4798 blx r3 19688: 2800 cmp r0, #0 1968a: f040 80aa bne.w 197e2 if(ext->angle || ext->zoom != LV_IMG_ZOOM_NONE) lv_obj_refresh_ext_draw_pad(img); 1968e: 89a3 ldrh r3, [r4, #12] 19690: b91b cbnz r3, 1969a 19692: 8a63 ldrh r3, [r4, #18] 19694: f5b3 7f80 cmp.w r3, #256 ; 0x100 19698: d002 beq.n 196a0 1969a: 4628 mov r0, r5 1969c: 4b5f ldr r3, [pc, #380] ; (1981c ) 1969e: 4798 blx r3 lv_obj_invalidate(img); 196a0: 4628 mov r0, r5 196a2: 4b5f ldr r3, [pc, #380] ; (19820 ) 196a4: 4798 blx r3 } 196a6: b006 add sp, #24 196a8: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} LV_LOG_WARN("lv_img_set_src: unknown type"); 196ac: 4b5d ldr r3, [pc, #372] ; (19824 ) 196ae: 9300 str r3, [sp, #0] 196b0: 4b51 ldr r3, [pc, #324] ; (197f8 ) 196b2: 22a0 movs r2, #160 ; 0xa0 196b4: 4951 ldr r1, [pc, #324] ; (197fc ) 196b6: 2002 movs r0, #2 196b8: f8df 8144 ldr.w r8, [pc, #324] ; 19800 196bc: 47c0 blx r8 196be: e7ba b.n 19636 LV_LOG_WARN("lv_img_set_src: unknown image type"); 196c0: 4b59 ldr r3, [pc, #356] ; (19828 ) 196c2: 9300 str r3, [sp, #0] 196c4: 4b4c ldr r3, [pc, #304] ; (197f8 ) 196c6: 22a6 movs r2, #166 ; 0xa6 196c8: 494c ldr r1, [pc, #304] ; (197fc ) 196ca: 2002 movs r0, #2 196cc: 4d4c ldr r5, [pc, #304] ; (19800 ) 196ce: 47a8 blx r5 if(ext->src_type == LV_IMG_SRC_SYMBOL || ext->src_type == LV_IMG_SRC_FILE) { 196d0: 7d23 ldrb r3, [r4, #20] 196d2: f003 0303 and.w r3, r3, #3 196d6: 3b01 subs r3, #1 196d8: b2db uxtb r3, r3 196da: 2b01 cmp r3, #1 196dc: d802 bhi.n 196e4 lv_mem_free(ext->src); 196de: 6820 ldr r0, [r4, #0] 196e0: 4b52 ldr r3, [pc, #328] ; (1982c ) 196e2: 4798 blx r3 ext->src = NULL; 196e4: 2300 movs r3, #0 196e6: 6023 str r3, [r4, #0] ext->src_type = LV_IMG_SRC_UNKNOWN; 196e8: 7d23 ldrb r3, [r4, #20] 196ea: f043 0303 orr.w r3, r3, #3 196ee: 7523 strb r3, [r4, #20] return; 196f0: e7d9 b.n 196a6 LV_LOG_INFO("lv_img_set_src: `LV_IMG_SRC_VARIABLE` type found"); 196f2: 4b4f ldr r3, [pc, #316] ; (19830 ) 196f4: 9300 str r3, [sp, #0] 196f6: 4b40 ldr r3, [pc, #256] ; (197f8 ) 196f8: 22b4 movs r2, #180 ; 0xb4 196fa: 4940 ldr r1, [pc, #256] ; (197fc ) 196fc: 2001 movs r0, #1 196fe: f8df 8100 ldr.w r8, [pc, #256] ; 19800 19702: 47c0 blx r8 if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_SYMBOL) { 19704: 7d23 ldrb r3, [r4, #20] 19706: f003 0303 and.w r3, r3, #3 1970a: 3b01 subs r3, #1 1970c: b2db uxtb r3, r3 1970e: 2b01 cmp r3, #1 19710: d802 bhi.n 19718 lv_mem_free(ext->src); 19712: 6820 ldr r0, [r4, #0] 19714: 4b45 ldr r3, [pc, #276] ; (1982c ) 19716: 4798 blx r3 ext->src = src_img; 19718: 6026 str r6, [r4, #0] 1971a: e79b b.n 19654 if(ext->src != src_img) { 1971c: f8d4 8000 ldr.w r8, [r4] 19720: 4546 cmp r6, r8 19722: d094 beq.n 1964e if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_SYMBOL) { 19724: 7d23 ldrb r3, [r4, #20] 19726: f003 0303 and.w r3, r3, #3 1972a: 3b01 subs r3, #1 1972c: b2db uxtb r3, r3 const void * old_src = NULL; 1972e: 2b02 cmp r3, #2 19730: bf28 it cs 19732: f04f 0800 movcs.w r8, #0 char * new_str = lv_mem_alloc(strlen(src_img) + 1); 19736: 4630 mov r0, r6 19738: 4b3e ldr r3, [pc, #248] ; (19834 ) 1973a: 4798 blx r3 1973c: 3001 adds r0, #1 1973e: 4b3e ldr r3, [pc, #248] ; (19838 ) 19740: 4798 blx r3 19742: 4681 mov r9, r0 LV_ASSERT_MEM(new_str); 19744: 4b2b ldr r3, [pc, #172] ; (197f4 ) 19746: 4798 blx r3 19748: b960 cbnz r0, 19764 1974a: 4b2b ldr r3, [pc, #172] ; (197f8 ) 1974c: 9300 str r3, [sp, #0] 1974e: 22c7 movs r2, #199 ; 0xc7 19750: 492a ldr r1, [pc, #168] ; (197fc ) 19752: 2003 movs r0, #3 19754: 4c2a ldr r4, [pc, #168] ; (19800 ) 19756: 47a0 blx r4 19758: 464a mov r2, r9 1975a: 2300 movs r3, #0 1975c: 4837 ldr r0, [pc, #220] ; (1983c ) 1975e: 492a ldr r1, [pc, #168] ; (19808 ) 19760: 4788 blx r1 19762: e7fe b.n 19762 if(new_str == NULL) return; 19764: f1b9 0f00 cmp.w r9, #0 19768: d09d beq.n 196a6 strcpy(new_str, src_img); 1976a: 4631 mov r1, r6 1976c: 4648 mov r0, r9 1976e: 4b34 ldr r3, [pc, #208] ; (19840 ) 19770: 4798 blx r3 ext->src = new_str; 19772: f8c4 9000 str.w r9, [r4] if(old_src) lv_mem_free(old_src); 19776: f1b8 0f00 cmp.w r8, #0 1977a: f43f af68 beq.w 1964e 1977e: 4640 mov r0, r8 19780: 4b2a ldr r3, [pc, #168] ; (1982c ) 19782: 4798 blx r3 19784: e763 b.n 1964e _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 19786: f248 028e movw r2, #32910 ; 0x808e 1978a: 2100 movs r1, #0 1978c: 4628 mov r0, r5 1978e: 4b2d ldr r3, [pc, #180] ; (19844 ) 19790: 4798 blx r3 19792: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 19794: f248 0280 movw r2, #32896 ; 0x8080 19798: 2100 movs r1, #0 1979a: 4628 mov r0, r5 1979c: f8df 80b0 ldr.w r8, [pc, #176] ; 19850 197a0: 47c0 blx r8 197a2: 4682 mov sl, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 197a4: f248 0281 movw r2, #32897 ; 0x8081 197a8: 2100 movs r1, #0 197aa: 4628 mov r0, r5 197ac: 47c0 blx r8 _lv_txt_get_size(&size, src_img, font, letter_space, line_space, 197ae: 2300 movs r3, #0 197b0: 9302 str r3, [sp, #8] 197b2: f647 4318 movw r3, #31768 ; 0x7c18 197b6: 9301 str r3, [sp, #4] 197b8: 9000 str r0, [sp, #0] 197ba: 4653 mov r3, sl 197bc: 464a mov r2, r9 197be: 4631 mov r1, r6 197c0: a804 add r0, sp, #16 197c2: 4e21 ldr r6, [pc, #132] ; (19848 ) 197c4: 47b0 blx r6 header.w = size.x; 197c6: 9b05 ldr r3, [sp, #20] 197c8: f8bd 2010 ldrh.w r2, [sp, #16] 197cc: f362 2394 bfi r3, r2, #10, #11 197d0: 9305 str r3, [sp, #20] header.h = size.y; 197d2: 0c1b lsrs r3, r3, #16 197d4: f8bd 2012 ldrh.w r2, [sp, #18] 197d8: f362 134f bfi r3, r2, #5, #11 197dc: f8ad 3016 strh.w r3, [sp, #22] 197e0: e738 b.n 19654 lv_obj_set_size(img, ext->w, ext->h); 197e2: f9b4 200a ldrsh.w r2, [r4, #10] 197e6: f9b4 1008 ldrsh.w r1, [r4, #8] 197ea: 4628 mov r0, r5 197ec: 4b17 ldr r3, [pc, #92] ; (1984c ) 197ee: 4798 blx r3 197f0: e74d b.n 1968e 197f2: bf00 nop 197f4: 00002299 .word 0x00002299 197f8: 00029608 .word 0x00029608 197fc: 000296a0 .word 0x000296a0 19800: 00012245 .word 0x00012245 19804: 00024824 .word 0x00024824 19808: 000022a1 .word 0x000022a1 1980c: 00009951 .word 0x00009951 19810: 00004d85 .word 0x00004d85 19814: 0000fdd5 .word 0x0000fdd5 19818: 000195a5 .word 0x000195a5 1981c: 00002c15 .word 0x00002c15 19820: 00003309 .word 0x00003309 19824: 000296cc .word 0x000296cc 19828: 000296ec .word 0x000296ec 1982c: 000124ad .word 0x000124ad 19830: 00029710 .word 0x00029710 19834: 0001b507 .word 0x0001b507 19838: 000123c5 .word 0x000123c5 1983c: 00023fc0 .word 0x00023fc0 19840: 0001b4f7 .word 0x0001b4f7 19844: 00004689 .word 0x00004689 19848: 00014065 .word 0x00014065 1984c: 00004289 .word 0x00004289 19850: 000044bd .word 0x000044bd 00019854 : { 19854: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 19858: b082 sub sp, #8 1985a: 4680 mov r8, r0 1985c: 460f mov r7, r1 lv_obj_t * img = lv_obj_create(par, copy); 1985e: 4b58 ldr r3, [pc, #352] ; (199c0 ) 19860: 4798 blx r3 19862: 4605 mov r5, r0 LV_ASSERT_MEM(img); 19864: 4b57 ldr r3, [pc, #348] ; (199c4 ) 19866: 4798 blx r3 19868: b1d0 cbz r0, 198a0 if(img == NULL) return NULL; 1986a: 2d00 cmp r5, #0 1986c: f000 8086 beq.w 1997c if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(img); 19870: 4b55 ldr r3, [pc, #340] ; (199c8 ) 19872: 681b ldr r3, [r3, #0] 19874: b30b cbz r3, 198ba lv_img_ext_t * ext = lv_obj_allocate_ext_attr(img, sizeof(lv_img_ext_t)); 19876: 2118 movs r1, #24 19878: 4628 mov r0, r5 1987a: 4b54 ldr r3, [pc, #336] ; (199cc ) 1987c: 4798 blx r3 1987e: 4604 mov r4, r0 LV_ASSERT_MEM(ext); 19880: 4b50 ldr r3, [pc, #320] ; (199c4 ) 19882: 4798 blx r3 19884: b9f8 cbnz r0, 198c6 19886: 4b52 ldr r3, [pc, #328] ; (199d0 ) 19888: 9300 str r3, [sp, #0] 1988a: 2249 movs r2, #73 ; 0x49 1988c: 4951 ldr r1, [pc, #324] ; (199d4 ) 1988e: 2003 movs r0, #3 19890: 4d51 ldr r5, [pc, #324] ; (199d8 ) 19892: 47a8 blx r5 19894: 4622 mov r2, r4 19896: 2300 movs r3, #0 19898: 4850 ldr r0, [pc, #320] ; (199dc ) 1989a: 4951 ldr r1, [pc, #324] ; (199e0 ) 1989c: 4788 blx r1 1989e: e7fe b.n 1989e LV_ASSERT_MEM(img); 198a0: 4b4b ldr r3, [pc, #300] ; (199d0 ) 198a2: 9300 str r3, [sp, #0] 198a4: 2242 movs r2, #66 ; 0x42 198a6: 494b ldr r1, [pc, #300] ; (199d4 ) 198a8: 2003 movs r0, #3 198aa: 4c4b ldr r4, [pc, #300] ; (199d8 ) 198ac: 47a0 blx r4 198ae: 462a mov r2, r5 198b0: 2300 movs r3, #0 198b2: 484a ldr r0, [pc, #296] ; (199dc ) 198b4: 494a ldr r1, [pc, #296] ; (199e0 ) 198b6: 4788 blx r1 198b8: e7fe b.n 198b8 if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(img); 198ba: 4628 mov r0, r5 198bc: 4b49 ldr r3, [pc, #292] ; (199e4 ) 198be: 4798 blx r3 198c0: 4b41 ldr r3, [pc, #260] ; (199c8 ) 198c2: 6018 str r0, [r3, #0] 198c4: e7d7 b.n 19876 if(ext == NULL) { 198c6: 2c00 cmp r4, #0 198c8: d05c beq.n 19984 ext->src = NULL; 198ca: 2600 movs r6, #0 198cc: 6026 str r6, [r4, #0] ext->src_type = LV_IMG_SRC_UNKNOWN; 198ce: 7d23 ldrb r3, [r4, #20] ext->cf = LV_IMG_CF_UNKNOWN; 198d0: f043 0303 orr.w r3, r3, #3 198d4: f366 03c7 bfi r3, r6, #3, #5 198d8: 7523 strb r3, [r4, #20] ext->w = lv_obj_get_width(img); 198da: 4628 mov r0, r5 198dc: 4b42 ldr r3, [pc, #264] ; (199e8 ) 198de: 4798 blx r3 198e0: 8120 strh r0, [r4, #8] ext->h = lv_obj_get_height(img); 198e2: 4628 mov r0, r5 198e4: 4b41 ldr r3, [pc, #260] ; (199ec ) 198e6: 4798 blx r3 198e8: 8160 strh r0, [r4, #10] ext->angle = 0; 198ea: 81a6 strh r6, [r4, #12] ext->zoom = LV_IMG_ZOOM_NONE; 198ec: f44f 7380 mov.w r3, #256 ; 0x100 198f0: 8263 strh r3, [r4, #18] ext->antialias = LV_ANTIALIAS ? 1 : 0; 198f2: 7d63 ldrb r3, [r4, #21] 198f4: f043 0301 orr.w r3, r3, #1 198f8: 7563 strb r3, [r4, #21] ext->auto_size = 1; 198fa: 7d23 ldrb r3, [r4, #20] 198fc: f043 0304 orr.w r3, r3, #4 19900: 7523 strb r3, [r4, #20] ext->offset.x = 0; 19902: 80a6 strh r6, [r4, #4] ext->offset.y = 0; 19904: 80e6 strh r6, [r4, #6] ext->pivot.x = 0; 19906: 81e6 strh r6, [r4, #14] ext->pivot.y = 0; 19908: 8226 strh r6, [r4, #16] lv_obj_set_signal_cb(img, lv_img_signal); 1990a: 4939 ldr r1, [pc, #228] ; (199f0 ) 1990c: 4628 mov r0, r5 1990e: 4b39 ldr r3, [pc, #228] ; (199f4 ) 19910: 4798 blx r3 lv_obj_set_design_cb(img, lv_img_design); 19912: 4939 ldr r1, [pc, #228] ; (199f8 ) 19914: 4628 mov r0, r5 19916: 4b39 ldr r3, [pc, #228] ; (199fc ) 19918: 4798 blx r3 if(copy == NULL) { 1991a: 2f00 cmp r7, #0 1991c: d037 beq.n 1998e lv_img_ext_t * copy_ext = lv_obj_get_ext_attr(copy); 1991e: 4638 mov r0, r7 19920: 4b37 ldr r3, [pc, #220] ; (19a00 ) 19922: 4798 blx r3 ext->auto_size = copy_ext->auto_size; 19924: 7d03 ldrb r3, [r0, #20] 19926: f3c3 0380 ubfx r3, r3, #2, #1 1992a: 7d22 ldrb r2, [r4, #20] 1992c: f363 0282 bfi r2, r3, #2, #1 19930: 7522 strb r2, [r4, #20] ext->zoom = copy_ext->zoom; 19932: 8a43 ldrh r3, [r0, #18] 19934: 8263 strh r3, [r4, #18] ext->angle = copy_ext->angle; 19936: 8983 ldrh r3, [r0, #12] 19938: 81a3 strh r3, [r4, #12] ext->antialias = copy_ext->antialias; 1993a: 7d42 ldrb r2, [r0, #21] 1993c: 7d63 ldrb r3, [r4, #21] 1993e: f362 0300 bfi r3, r2, #0, #1 19942: 7563 strb r3, [r4, #21] ext->offset.x = copy_ext->offset.x; 19944: f9b0 3004 ldrsh.w r3, [r0, #4] 19948: 80a3 strh r3, [r4, #4] ext->offset.y = copy_ext->offset.y; 1994a: f9b0 3006 ldrsh.w r3, [r0, #6] 1994e: 80e3 strh r3, [r4, #6] ext->pivot.x = copy_ext->pivot.x; 19950: f9b0 300e ldrsh.w r3, [r0, #14] 19954: 81e3 strh r3, [r4, #14] ext->pivot.y = copy_ext->pivot.y; 19956: f9b0 3010 ldrsh.w r3, [r0, #16] 1995a: 8223 strh r3, [r4, #16] lv_img_set_src(img, copy_ext->src); 1995c: 6801 ldr r1, [r0, #0] 1995e: 4628 mov r0, r5 19960: 4b28 ldr r3, [pc, #160] ; (19a04 ) 19962: 4798 blx r3 lv_obj_refresh_style(img, LV_STYLE_PROP_ALL); 19964: 21ff movs r1, #255 ; 0xff 19966: 4628 mov r0, r5 19968: 4b27 ldr r3, [pc, #156] ; (19a08 ) 1996a: 4798 blx r3 LV_LOG_INFO("image created"); 1996c: 4b27 ldr r3, [pc, #156] ; (19a0c ) 1996e: 9300 str r3, [sp, #0] 19970: 4b17 ldr r3, [pc, #92] ; (199d0 ) 19972: 227f movs r2, #127 ; 0x7f 19974: 4917 ldr r1, [pc, #92] ; (199d4 ) 19976: 2001 movs r0, #1 19978: 4c17 ldr r4, [pc, #92] ; (199d8 ) 1997a: 47a0 blx r4 } 1997c: 4628 mov r0, r5 1997e: b002 add sp, #8 19980: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} lv_obj_del(img); 19984: 4628 mov r0, r5 19986: 4b22 ldr r3, [pc, #136] ; (19a10 ) 19988: 4798 blx r3 return NULL; 1998a: 2500 movs r5, #0 1998c: e7f6 b.n 1997c lv_theme_apply(img, LV_THEME_IMAGE); 1998e: 210f movs r1, #15 19990: 4628 mov r0, r5 19992: 4b20 ldr r3, [pc, #128] ; (19a14 ) 19994: 4798 blx r3 lv_obj_set_click(img, false); 19996: 4631 mov r1, r6 19998: 4628 mov r0, r5 1999a: 4b1f ldr r3, [pc, #124] ; (19a18 ) 1999c: 4798 blx r3 lv_obj_set_adv_hittest(img, true); /*Images have fast hit-testing*/ 1999e: 2101 movs r1, #1 199a0: 4628 mov r0, r5 199a2: 4b1e ldr r3, [pc, #120] ; (19a1c ) 199a4: 4798 blx r3 if(par != NULL) { 199a6: f1b8 0f00 cmp.w r8, #0 199aa: d004 beq.n 199b6 ext->auto_size = 1; 199ac: 7d23 ldrb r3, [r4, #20] 199ae: f043 0304 orr.w r3, r3, #4 199b2: 7523 strb r3, [r4, #20] 199b4: e7da b.n 1996c ext->auto_size = 0; 199b6: 7d23 ldrb r3, [r4, #20] 199b8: f36f 0382 bfc r3, #2, #1 199bc: 7523 strb r3, [r4, #20] 199be: e7d5 b.n 1996c 199c0: 00003e0d .word 0x00003e0d 199c4: 00002299 .word 0x00002299 199c8: 20006bfc .word 0x20006bfc 199cc: 00002bb9 .word 0x00002bb9 199d0: 00029618 .word 0x00029618 199d4: 000296a0 .word 0x000296a0 199d8: 00012245 .word 0x00012245 199dc: 00023fc0 .word 0x00023fc0 199e0: 000022a1 .word 0x000022a1 199e4: 00004d3d .word 0x00004d3d 199e8: 00002f45 .word 0x00002f45 199ec: 00002f95 .word 0x00002f95 199f0: 00019a21 .word 0x00019a21 199f4: 00002b15 .word 0x00002b15 199f8: 00019105 .word 0x00019105 199fc: 00002b71 .word 0x00002b71 19a00: 00004d85 .word 0x00004d85 19a04: 000195f9 .word 0x000195f9 19a08: 00003a81 .word 0x00003a81 19a0c: 00029744 .word 0x00029744 19a10: 00004f4d .word 0x00004f4d 19a14: 000141d1 .word 0x000141d1 19a18: 00002989 .word 0x00002989 19a1c: 00002935 .word 0x00002935 00019a20 : * @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) { 19a20: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 19a24: b085 sub sp, #20 19a26: 4607 mov r7, r0 19a28: 4615 mov r5, r2 lv_res_t res; if(sign == LV_SIGNAL_GET_STYLE) { 19a2a: 2908 cmp r1, #8 19a2c: d021 beq.n 19a72 19a2e: 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); 19a30: 4b88 ldr r3, [pc, #544] ; (19c54 ) 19a32: 681b ldr r3, [r3, #0] 19a34: 4798 blx r3 19a36: 4606 mov r6, r0 if(res != LV_RES_OK) return res; 19a38: 2801 cmp r0, #1 19a3a: d121 bne.n 19a80 if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 19a3c: 2c07 cmp r4, #7 19a3e: d02d beq.n 19a9c lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 19a40: 4638 mov r0, r7 19a42: 4b85 ldr r3, [pc, #532] ; (19c58 ) 19a44: 4798 blx r3 19a46: 4680 mov r8, r0 if(sign == LV_SIGNAL_CLEANUP) { 19a48: bb74 cbnz r4, 19aa8 if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_SYMBOL) { 19a4a: 7d03 ldrb r3, [r0, #20] 19a4c: f003 0303 and.w r3, r3, #3 19a50: 3b01 subs r3, #1 19a52: b2db uxtb r3, r3 19a54: 2b01 cmp r3, #1 19a56: d813 bhi.n 19a80 lv_mem_free(ext->src); 19a58: 6800 ldr r0, [r0, #0] 19a5a: 4b80 ldr r3, [pc, #512] ; (19c5c ) 19a5c: 4798 blx r3 ext->src = NULL; 19a5e: 2300 movs r3, #0 19a60: f8c8 3000 str.w r3, [r8] ext->src_type = LV_IMG_SRC_UNKNOWN; 19a64: f898 3014 ldrb.w r3, [r8, #20] 19a68: f043 0303 orr.w r3, r3, #3 19a6c: f888 3014 strb.w r3, [r8, #20] 19a70: e006 b.n 19a80 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) { 19a72: 7813 ldrb r3, [r2, #0] 19a74: b943 cbnz r3, 19a88 case LV_IMG_PART_MAIN: style_dsc_p = &img->style_list; 19a76: f100 0328 add.w r3, r0, #40 ; 0x28 info->result = lv_img_get_style(img, info->part); 19a7a: 606b str r3, [r5, #4] if(info->result != NULL) return LV_RES_OK; 19a7c: 2601 movs r6, #1 19a7e: b12b cbz r3, 19a8c } 19a80: 4630 mov r0, r6 19a82: b005 add sp, #20 19a84: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} break; default: style_dsc_p = NULL; 19a88: 2300 movs r3, #0 19a8a: e7f6 b.n 19a7a else return ancestor_signal(img, sign, param); 19a8c: 4b71 ldr r3, [pc, #452] ; (19c54 ) 19a8e: 681b ldr r3, [r3, #0] 19a90: 462a mov r2, r5 19a92: 2108 movs r1, #8 19a94: 4638 mov r0, r7 19a96: 4798 blx r3 19a98: 4606 mov r6, r0 19a9a: e7f1 b.n 19a80 if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 19a9c: 4970 ldr r1, [pc, #448] ; (19c60 ) 19a9e: 4628 mov r0, r5 19aa0: 4b70 ldr r3, [pc, #448] ; (19c64 ) 19aa2: 4798 blx r3 19aa4: 4606 mov r6, r0 19aa6: e7eb b.n 19a80 else if(sign == LV_SIGNAL_STYLE_CHG) { 19aa8: 2c04 cmp r4, #4 19aaa: d053 beq.n 19b54 else if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) { 19aac: 2c06 cmp r4, #6 19aae: d05b beq.n 19b68 else if(sign == LV_SIGNAL_HIT_TEST) { 19ab0: 2c0a cmp r4, #10 19ab2: d1e5 bne.n 19a80 if(ext->zoom != 256 && ext->angle == 0) { 19ab4: 8a43 ldrh r3, [r0, #18] 19ab6: f5b3 7f80 cmp.w r3, #256 ; 0x100 19aba: f000 80c5 beq.w 19c48 19abe: 8982 ldrh r2, [r0, #12] 19ac0: 2a00 cmp r2, #0 19ac2: f040 80c1 bne.w 19c48 19ac6: 8aba ldrh r2, [r7, #20] 19ac8: 3201 adds r2, #1 19aca: 8a39 ldrh r1, [r7, #16] 19acc: 1a52 subs r2, r2, r1 lv_coord_t scaled_width = (origin_width * ext->zoom + 255) / 256; 19ace: b212 sxth r2, r2 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 19ad0: 8af9 ldrh r1, [r7, #22] 19ad2: 3101 adds r1, #1 19ad4: 8a78 ldrh r0, [r7, #18] 19ad6: 1a09 subs r1, r1, r0 lv_coord_t scaled_height = (origin_height * ext->zoom + 255) / 256; 19ad8: b209 sxth r1, r1 lv_coord_t scaled_width = (origin_width * ext->zoom + 255) / 256; 19ada: fb03 f002 mul.w r0, r3, r2 19ade: 30ff adds r0, #255 ; 0xff 19ae0: bf48 it mi 19ae2: 30ff addmi r0, #255 ; 0xff lv_coord_t width_offset = (origin_width - scaled_width) / 2; 19ae4: f340 200f sbfx r0, r0, #8, #16 19ae8: 1a12 subs r2, r2, r0 19aea: eb02 72d2 add.w r2, r2, r2, lsr #31 19aee: 1054 asrs r4, r2, #1 lv_coord_t scaled_height = (origin_height * ext->zoom + 255) / 256; 19af0: fb01 f303 mul.w r3, r1, r3 19af4: 33ff adds r3, #255 ; 0xff 19af6: bf48 it mi 19af8: 33ff addmi r3, #255 ; 0xff lv_coord_t height_offset = (origin_height - scaled_height) / 2; 19afa: f343 230f sbfx r3, r3, #8, #16 19afe: 1acb subs r3, r1, r3 19b00: eb03 73d3 add.w r3, r3, r3, lsr #31 19b04: 1058 asrs r0, r3, #1 19b06: f107 030f add.w r3, r7, #15 19b0a: 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; 19b0c: aa02 add r2, sp, #8 const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; 19b0e: f813 1f01 ldrb.w r1, [r3, #1]! 19b12: f802 1b01 strb.w r1, [r2], #1 while(len) { 19b16: 42bb cmp r3, r7 19b18: d1f9 bne.n 19b0e coords.x1 += width_offset; 19b1a: b2a2 uxth r2, r4 19b1c: f8bd 3008 ldrh.w r3, [sp, #8] 19b20: 4413 add r3, r2 19b22: f8ad 3008 strh.w r3, [sp, #8] coords.x2 -= width_offset; 19b26: f8bd 300c ldrh.w r3, [sp, #12] 19b2a: 1a9a subs r2, r3, r2 19b2c: f8ad 200c strh.w r2, [sp, #12] coords.y1 += height_offset; 19b30: b283 uxth r3, r0 19b32: f8bd 200a ldrh.w r2, [sp, #10] 19b36: 441a add r2, r3 19b38: f8ad 200a strh.w r2, [sp, #10] coords.y2 -= height_offset; 19b3c: f8bd 200e ldrh.w r2, [sp, #14] 19b40: 1ad3 subs r3, r2, r3 19b42: f8ad 300e strh.w r3, [sp, #14] info->result = _lv_area_is_point_on(&coords, info->point, 0); 19b46: 2200 movs r2, #0 19b48: 6829 ldr r1, [r5, #0] 19b4a: a802 add r0, sp, #8 19b4c: 4b46 ldr r3, [pc, #280] ; (19c68 ) 19b4e: 4798 blx r3 19b50: 7128 strb r0, [r5, #4] if(ext->zoom != 256 && ext->angle == 0) { 19b52: e795 b.n 19a80 if(ext->src_type == LV_IMG_SRC_SYMBOL) { 19b54: 7d03 ldrb r3, [r0, #20] 19b56: f003 0303 and.w r3, r3, #3 19b5a: 2b02 cmp r3, #2 19b5c: d190 bne.n 19a80 lv_img_set_src(img, ext->src); 19b5e: 6801 ldr r1, [r0, #0] 19b60: 4638 mov r0, r7 19b62: 4b42 ldr r3, [pc, #264] ; (19c6c ) 19b64: 4798 blx r3 19b66: e78b b.n 19a80 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ZOOM, transform_zoom, lv_style_int_t, _int, scalar) 19b68: 2207 movs r2, #7 19b6a: 2100 movs r1, #0 19b6c: 4638 mov r0, r7 19b6e: 4d40 ldr r5, [pc, #256] ; (19c70 ) 19b70: 47a8 blx r5 transf_zoom = (transf_zoom * ext->zoom) >> 8; 19b72: f8b8 3012 ldrh.w r3, [r8, #18] 19b76: fb00 f303 mul.w r3, r0, r3 19b7a: 121c asrs r4, r3, #8 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ANGLE, transform_angle, lv_style_int_t, _int, scalar) 19b7c: 2206 movs r2, #6 19b7e: 2100 movs r1, #0 19b80: 4638 mov r0, r7 19b82: 47a8 blx r5 transf_angle += ext->angle; 19b84: f8b8 300c ldrh.w r3, [r8, #12] 19b88: 4403 add r3, r0 19b8a: b21b sxth r3, r3 if(transf_angle || transf_zoom != LV_IMG_ZOOM_NONE) { 19b8c: b91b cbnz r3, 19b96 19b8e: b222 sxth r2, r4 19b90: f5b2 7f80 cmp.w r2, #256 ; 0x100 19b94: d031 beq.n 19bfa _lv_img_buf_get_transformed_area(&a, ext->w, ext->h, transf_angle, transf_zoom, &ext->pivot); 19b96: f9b8 200a ldrsh.w r2, [r8, #10] 19b9a: f9b8 1008 ldrsh.w r1, [r8, #8] 19b9e: f108 000e add.w r0, r8, #14 19ba2: 9001 str r0, [sp, #4] 19ba4: b2a4 uxth r4, r4 19ba6: 9400 str r4, [sp, #0] 19ba8: a802 add r0, sp, #8 19baa: 4c32 ldr r4, [pc, #200] ; (19c74 ) 19bac: 47a0 blx r4 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori - a.x1); 19bae: f9b7 1032 ldrsh.w r1, [r7, #50] ; 0x32 19bb2: f9bd 3008 ldrsh.w r3, [sp, #8] 19bb6: 1acb subs r3, r1, r3 19bb8: 428b cmp r3, r1 19bba: bfb8 it lt 19bbc: 460b movlt r3, r1 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori - a.y1); 19bbe: b21b sxth r3, r3 19bc0: f9bd 200a ldrsh.w r2, [sp, #10] 19bc4: 1a8a subs r2, r1, r2 19bc6: 4293 cmp r3, r2 19bc8: bfb8 it lt 19bca: 4613 movlt r3, r2 19bcc: b21b sxth r3, r3 19bce: 867b strh r3, [r7, #50] ; 0x32 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori + a.x2 - ext->w); 19bd0: f9bd 200c ldrsh.w r2, [sp, #12] 19bd4: 440a add r2, r1 19bd6: f9b8 0008 ldrsh.w r0, [r8, #8] 19bda: 1a12 subs r2, r2, r0 19bdc: 4293 cmp r3, r2 19bde: bfb8 it lt 19be0: 4613 movlt r3, r2 19be2: b21b sxth r3, r3 19be4: 867b strh r3, [r7, #50] ; 0x32 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori + a.y2 - ext->h); 19be6: f9bd 200e ldrsh.w r2, [sp, #14] 19bea: 440a add r2, r1 19bec: f9b8 100a ldrsh.w r1, [r8, #10] 19bf0: 1a52 subs r2, r2, r1 19bf2: 4293 cmp r3, r2 19bf4: bfb8 it lt 19bf6: 4613 movlt r3, r2 19bf8: 867b strh r3, [r7, #50] ; 0x32 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 19bfa: 2212 movs r2, #18 19bfc: 2100 movs r1, #0 19bfe: 4638 mov r0, r7 19c00: f8df 806c ldr.w r8, [pc, #108] ; 19c70 19c04: 47c0 blx r8 19c06: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 19c08: 2213 movs r2, #19 19c0a: 2100 movs r1, #0 19c0c: 4638 mov r0, r7 19c0e: 47c0 blx r8 19c10: 4604 mov r4, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 19c12: 2210 movs r2, #16 19c14: 2100 movs r1, #0 19c16: 4638 mov r0, r7 19c18: 47c0 blx r8 19c1a: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 19c1c: 2211 movs r2, #17 19c1e: 2100 movs r1, #0 19c20: 4638 mov r0, r7 19c22: 47c0 blx r8 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, right); 19c24: 454c cmp r4, r9 19c26: bfb8 it lt 19c28: 464c movlt r4, r9 19c2a: f9b7 3032 ldrsh.w r3, [r7, #50] ; 0x32 19c2e: b222 sxth r2, r4 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, top); 19c30: 4293 cmp r3, r2 19c32: bfb8 it lt 19c34: 4613 movlt r3, r2 19c36: 42ab cmp r3, r5 19c38: bfb8 it lt 19c3a: 462b movlt r3, r5 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, bottom); 19c3c: b21b sxth r3, r3 19c3e: 4298 cmp r0, r3 19c40: bfb8 it lt 19c42: 4618 movlt r0, r3 19c44: 8678 strh r0, [r7, #50] ; 0x32 19c46: e71b b.n 19a80 info->result = lv_obj_is_point_on_coords(img, info->point); 19c48: 6829 ldr r1, [r5, #0] 19c4a: 4638 mov r0, r7 19c4c: 4b0a ldr r3, [pc, #40] ; (19c78 ) 19c4e: 4798 blx r3 19c50: 7128 strb r0, [r5, #4] 19c52: e715 b.n 19a80 19c54: 20006bfc .word 0x20006bfc 19c58: 00004d85 .word 0x00004d85 19c5c: 000124ad .word 0x000124ad 19c60: 00029754 .word 0x00029754 19c64: 0000507d .word 0x0000507d 19c68: 000115a1 .word 0x000115a1 19c6c: 000195f9 .word 0x000195f9 19c70: 000044bd .word 0x000044bd 19c74: 0000ec4d .word 0x0000ec4d 19c78: 0000503d .word 0x0000503d 00019c7c : * 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) { 19c7c: b510 push {r4, lr} lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19c7e: 4b09 ldr r3, [pc, #36] ; (19ca4 ) 19c80: 4798 blx r3 19c82: 4604 mov r4, r0 if(ext->dot_tmp_alloc && ext->dot.tmp_ptr) { 19c84: 7c43 ldrb r3, [r0, #17] 19c86: f013 0f01 tst.w r3, #1 19c8a: d003 beq.n 19c94 19c8c: 6840 ldr r0, [r0, #4] 19c8e: b108 cbz r0, 19c94 lv_mem_free(ext->dot.tmp_ptr); 19c90: 4b05 ldr r3, [pc, #20] ; (19ca8 ) 19c92: 4798 blx r3 } ext->dot_tmp_alloc = false; 19c94: 7c63 ldrb r3, [r4, #17] 19c96: f36f 0300 bfc r3, #0, #1 19c9a: 7463 strb r3, [r4, #17] ext->dot.tmp_ptr = NULL; 19c9c: 2300 movs r3, #0 19c9e: 6063 str r3, [r4, #4] 19ca0: bd10 pop {r4, pc} 19ca2: bf00 nop 19ca4: 00004d85 .word 0x00004d85 19ca8: 000124ad .word 0x000124ad 00019cac : { 19cac: b5f8 push {r3, r4, r5, r6, r7, lr} 19cae: 4607 mov r7, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19cb0: 4b1e ldr r3, [pc, #120] ; (19d2c ) 19cb2: 4798 blx r3 if(ext->long_mode != LV_LABEL_LONG_DOT) return; 19cb4: 7c03 ldrb r3, [r0, #16] 19cb6: f003 0307 and.w r3, r3, #7 19cba: 2b02 cmp r3, #2 19cbc: d000 beq.n 19cc0 19cbe: bdf8 pop {r3, r4, r5, r6, r7, pc} 19cc0: 4604 mov r4, r0 if(ext->dot_end == LV_LABEL_DOT_END_INV) return; 19cc2: 8901 ldrh r1, [r0, #8] 19cc4: f64f 73ff movw r3, #65535 ; 0xffff 19cc8: 4299 cmp r1, r3 19cca: d0f8 beq.n 19cbe uint32_t byte_i = _lv_txt_encoded_get_byte_id(ext->text, letter_i); 19ccc: 4b18 ldr r3, [pc, #96] ; (19d30 ) 19cce: 681b ldr r3, [r3, #0] 19cd0: 3903 subs r1, #3 19cd2: 6800 ldr r0, [r0, #0] 19cd4: 4798 blx r3 19cd6: 4606 mov r6, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19cd8: 4638 mov r0, r7 19cda: 4b14 ldr r3, [pc, #80] ; (19d2c ) 19cdc: 4798 blx r3 if(ext->dot_tmp_alloc) { 19cde: 7c43 ldrb r3, [r0, #17] 19ce0: f013 0f01 tst.w r3, #1 return ext->dot.tmp_ptr; 19ce4: bf14 ite ne 19ce6: 6840 ldrne r0, [r0, #4] return ext->dot.tmp; 19ce8: 3004 addeq r0, #4 while(ext->text[byte_i + i] != '\0') { 19cea: 6823 ldr r3, [r4, #0] 19cec: eb03 0e06 add.w lr, r3, r6 19cf0: 5d9b ldrb r3, [r3, r6] 19cf2: b1c3 cbz r3, 19d26 19cf4: 2500 movs r5, #0 19cf6: 462b mov r3, r5 ext->text[byte_i + i] = dot_tmp[i]; 19cf8: 5d42 ldrb r2, [r0, r5] 19cfa: f88e 2000 strb.w r2, [lr] i++; 19cfe: 3301 adds r3, #1 19d00: b2db uxtb r3, r3 while(ext->text[byte_i + i] != '\0') { 19d02: 461d mov r5, r3 19d04: 18f2 adds r2, r6, r3 19d06: 6821 ldr r1, [r4, #0] 19d08: eb01 0e02 add.w lr, r1, r2 19d0c: 5c8a ldrb r2, [r1, r2] 19d0e: 2a00 cmp r2, #0 19d10: d1f2 bne.n 19cf8 ext->text[byte_i + i] = dot_tmp[i]; 19d12: 5d43 ldrb r3, [r0, r5] 19d14: f88e 3000 strb.w r3, [lr] lv_label_dot_tmp_free(label); 19d18: 4638 mov r0, r7 19d1a: 4b06 ldr r3, [pc, #24] ; (19d34 ) 19d1c: 4798 blx r3 ext->dot_end = LV_LABEL_DOT_END_INV; 19d1e: f64f 73ff movw r3, #65535 ; 0xffff 19d22: 8123 strh r3, [r4, #8] 19d24: e7cb b.n 19cbe while(ext->text[byte_i + i] != '\0') { 19d26: 2500 movs r5, #0 19d28: e7f3 b.n 19d12 19d2a: bf00 nop 19d2c: 00004d85 .word 0x00004d85 19d30: 2000005c .word 0x2000005c 19d34: 00019c7d .word 0x00019c7d 00019d38 : { 19d38: b538 push {r3, r4, r5, lr} 19d3a: 4604 mov r4, r0 19d3c: 460d mov r5, r1 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19d3e: 4b03 ldr r3, [pc, #12] ; (19d4c ) 19d40: 4798 blx r3 ext->offset.y = y; 19d42: 81c5 strh r5, [r0, #14] lv_obj_invalidate(label); 19d44: 4620 mov r0, r4 19d46: 4b02 ldr r3, [pc, #8] ; (19d50 ) 19d48: 4798 blx r3 19d4a: bd38 pop {r3, r4, r5, pc} 19d4c: 00004d85 .word 0x00004d85 19d50: 00003309 .word 0x00003309 00019d54 : { 19d54: b538 push {r3, r4, r5, lr} 19d56: 4604 mov r4, r0 19d58: 460d mov r5, r1 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19d5a: 4b03 ldr r3, [pc, #12] ; (19d68 ) 19d5c: 4798 blx r3 ext->offset.x = x; 19d5e: 8185 strh r5, [r0, #12] lv_obj_invalidate(label); 19d60: 4620 mov r0, r4 19d62: 4b02 ldr r3, [pc, #8] ; (19d6c ) 19d64: 4798 blx r3 19d66: bd38 pop {r3, r4, r5, pc} 19d68: 00004d85 .word 0x00004d85 19d6c: 00003309 .word 0x00003309 00019d70 : } static void get_txt_coords(const lv_obj_t * label, lv_area_t * area) { 19d70: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 19d74: 4606 mov r6, r0 19d76: 460c mov r4, r1 lv_obj_get_coords(label, area); 19d78: 4b12 ldr r3, [pc, #72] ; (19dc4 ) 19d7a: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 19d7c: 2212 movs r2, #18 19d7e: 2100 movs r1, #0 19d80: 4630 mov r0, r6 19d82: 4d11 ldr r5, [pc, #68] ; (19dc8 ) 19d84: 47a8 blx r5 19d86: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 19d88: 2213 movs r2, #19 19d8a: 2100 movs r1, #0 19d8c: 4630 mov r0, r6 19d8e: 47a8 blx r5 19d90: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 19d92: 2210 movs r2, #16 19d94: 2100 movs r1, #0 19d96: 4630 mov r0, r6 19d98: 47a8 blx r5 19d9a: 4607 mov r7, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 19d9c: 2211 movs r2, #17 19d9e: 2100 movs r1, #0 19da0: 4630 mov r0, r6 19da2: 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; 19da4: 8823 ldrh r3, [r4, #0] 19da6: 4498 add r8, r3 19da8: f8a4 8000 strh.w r8, [r4] area->x2 -= right; 19dac: 88a3 ldrh r3, [r4, #4] 19dae: eba3 0309 sub.w r3, r3, r9 19db2: 80a3 strh r3, [r4, #4] area->y1 += top; 19db4: 8863 ldrh r3, [r4, #2] 19db6: 441f add r7, r3 19db8: 8067 strh r7, [r4, #2] area->y2 -= bottom; 19dba: 88e3 ldrh r3, [r4, #6] 19dbc: 1a18 subs r0, r3, r0 19dbe: 80e0 strh r0, [r4, #6] 19dc0: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 19dc4: 00002e29 .word 0x00002e29 19dc8: 000044bd .word 0x000044bd 00019dcc : { 19dcc: b5f0 push {r4, r5, r6, r7, lr} 19dce: b083 sub sp, #12 19dd0: 4606 mov r6, r0 19dd2: 460f mov r7, r1 19dd4: 4615 mov r5, r2 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19dd6: 4b18 ldr r3, [pc, #96] ; (19e38 ) 19dd8: 4798 blx r3 19dda: 4604 mov r4, r0 lv_label_dot_tmp_free(label); /* Deallocate any existing space */ 19ddc: 4630 mov r0, r6 19dde: 4b17 ldr r3, [pc, #92] ; (19e3c ) 19de0: 4798 blx r3 if(len > sizeof(char *)) { 19de2: 2d04 cmp r5, #4 19de4: d91c bls.n 19e20 ext->dot.tmp_ptr = lv_mem_alloc(len + 1); 19de6: 1c68 adds r0, r5, #1 19de8: 4b15 ldr r3, [pc, #84] ; (19e40 ) 19dea: 4798 blx r3 19dec: 6060 str r0, [r4, #4] if(ext->dot.tmp_ptr == NULL) { 19dee: b160 cbz r0, 19e0a _lv_memcpy(ext->dot.tmp_ptr, data, len); 19df0: 462a mov r2, r5 19df2: 4639 mov r1, r7 19df4: 4b13 ldr r3, [pc, #76] ; (19e44 ) 19df6: 4798 blx r3 ext->dot.tmp_ptr[len] = '\0'; 19df8: 6863 ldr r3, [r4, #4] 19dfa: 2200 movs r2, #0 19dfc: 555a strb r2, [r3, r5] ext->dot_tmp_alloc = true; 19dfe: 7c63 ldrb r3, [r4, #17] 19e00: f043 0301 orr.w r3, r3, #1 19e04: 7463 strb r3, [r4, #17] return true; 19e06: 2001 movs r0, #1 19e08: e014 b.n 19e34 LV_LOG_ERROR("Failed to allocate memory for dot_tmp_ptr"); 19e0a: 4b0f ldr r3, [pc, #60] ; (19e48 ) 19e0c: 9300 str r3, [sp, #0] 19e0e: 4b0f ldr r3, [pc, #60] ; (19e4c ) 19e10: f240 52b5 movw r2, #1461 ; 0x5b5 19e14: 490e ldr r1, [pc, #56] ; (19e50 ) 19e16: 2003 movs r0, #3 19e18: 4c0e ldr r4, [pc, #56] ; (19e54 ) 19e1a: 47a0 blx r4 return false; 19e1c: 2000 movs r0, #0 19e1e: e009 b.n 19e34 ext->dot_tmp_alloc = false; 19e20: 7c63 ldrb r3, [r4, #17] 19e22: f36f 0300 bfc r3, #0, #1 19e26: 7463 strb r3, [r4, #17] _lv_memcpy(ext->dot.tmp, data, len); 19e28: 462a mov r2, r5 19e2a: 4639 mov r1, r7 19e2c: 1d20 adds r0, r4, #4 19e2e: 4b05 ldr r3, [pc, #20] ; (19e44 ) 19e30: 4798 blx r3 return true; 19e32: 2001 movs r0, #1 } 19e34: b003 add sp, #12 19e36: bdf0 pop {r4, r5, r6, r7, pc} 19e38: 00004d85 .word 0x00004d85 19e3c: 00019c7d .word 0x00019c7d 19e40: 000123c5 .word 0x000123c5 19e44: 0001263d .word 0x0001263d 19e48: 000299ac .word 0x000299ac 19e4c: 0002975c .word 0x0002975c 19e50: 0002997c .word 0x0002997c 19e54: 00012245 .word 0x00012245 00019e58 : { 19e58: b530 push {r4, r5, lr} 19e5a: b083 sub sp, #12 19e5c: 4604 mov r4, r0 19e5e: 460d mov r5, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 19e60: 4b10 ldr r3, [pc, #64] ; (19ea4 ) 19e62: 4798 blx r3 19e64: b968 cbnz r0, 19e82 19e66: 4b10 ldr r3, [pc, #64] ; (19ea8 ) 19e68: 9300 str r3, [sp, #0] 19e6a: f44f 72c4 mov.w r2, #392 ; 0x188 19e6e: 490f ldr r1, [pc, #60] ; (19eac ) 19e70: 2003 movs r0, #3 19e72: 4d0f ldr r5, [pc, #60] ; (19eb0 ) 19e74: 47a8 blx r5 19e76: 4622 mov r2, r4 19e78: 2300 movs r3, #0 19e7a: 480e ldr r0, [pc, #56] ; (19eb4 ) 19e7c: 490e ldr r1, [pc, #56] ; (19eb8 ) 19e7e: 4788 blx r1 19e80: e7fe b.n 19e80 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19e82: 4620 mov r0, r4 19e84: 4b0d ldr r3, [pc, #52] ; (19ebc ) 19e86: 4798 blx r3 if(ext->align == align) return; 19e88: 7c03 ldrb r3, [r0, #16] 19e8a: f3c3 1301 ubfx r3, r3, #4, #2 19e8e: 42ab cmp r3, r5 19e90: d006 beq.n 19ea0 ext->align = align; 19e92: 7c03 ldrb r3, [r0, #16] 19e94: f365 1305 bfi r3, r5, #4, #2 19e98: 7403 strb r3, [r0, #16] lv_obj_invalidate(label); /*Enough to invalidate because alignment is only drawing related 19e9a: 4620 mov r0, r4 19e9c: 4b08 ldr r3, [pc, #32] ; (19ec0 ) 19e9e: 4798 blx r3 } 19ea0: b003 add sp, #12 19ea2: bd30 pop {r4, r5, pc} 19ea4: 00002299 .word 0x00002299 19ea8: 00029774 .word 0x00029774 19eac: 0002997c .word 0x0002997c 19eb0: 00012245 .word 0x00012245 19eb4: 00024824 .word 0x00024824 19eb8: 000022a1 .word 0x000022a1 19ebc: 00004d85 .word 0x00004d85 19ec0: 00003309 .word 0x00003309 00019ec4 : { 19ec4: b530 push {r4, r5, lr} 19ec6: b083 sub sp, #12 19ec8: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 19eca: 4b0b ldr r3, [pc, #44] ; (19ef8 ) 19ecc: 4798 blx r3 19ece: b968 cbnz r0, 19eec 19ed0: 4b0a ldr r3, [pc, #40] ; (19efc ) 19ed2: 9300 str r3, [sp, #0] 19ed4: f44f 72f2 mov.w r2, #484 ; 0x1e4 19ed8: 4909 ldr r1, [pc, #36] ; (19f00 ) 19eda: 2003 movs r0, #3 19edc: 4d09 ldr r5, [pc, #36] ; (19f04 ) 19ede: 47a8 blx r5 19ee0: 4622 mov r2, r4 19ee2: 2300 movs r3, #0 19ee4: 4808 ldr r0, [pc, #32] ; (19f08 ) 19ee6: 4909 ldr r1, [pc, #36] ; (19f0c ) 19ee8: 4788 blx r1 19eea: e7fe b.n 19eea lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19eec: 4620 mov r0, r4 19eee: 4b08 ldr r3, [pc, #32] ; (19f10 ) 19ef0: 4798 blx r3 } 19ef2: 6800 ldr r0, [r0, #0] 19ef4: b003 add sp, #12 19ef6: bd30 pop {r4, r5, pc} 19ef8: 00002299 .word 0x00002299 19efc: 000297c0 .word 0x000297c0 19f00: 0002997c .word 0x0002997c 19f04: 00012245 .word 0x00012245 19f08: 00024824 .word 0x00024824 19f0c: 000022a1 .word 0x000022a1 19f10: 00004d85 .word 0x00004d85 00019f14 : { 19f14: b530 push {r4, r5, lr} 19f16: b083 sub sp, #12 19f18: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 19f1a: 4b0c ldr r3, [pc, #48] ; (19f4c ) 19f1c: 4798 blx r3 19f1e: b968 cbnz r0, 19f3c 19f20: 4b0b ldr r3, [pc, #44] ; (19f50 ) 19f22: 9300 str r3, [sp, #0] 19f24: f44f 72f9 mov.w r2, #498 ; 0x1f2 19f28: 490a ldr r1, [pc, #40] ; (19f54 ) 19f2a: 2003 movs r0, #3 19f2c: 4d0a ldr r5, [pc, #40] ; (19f58 ) 19f2e: 47a8 blx r5 19f30: 4622 mov r2, r4 19f32: 2300 movs r3, #0 19f34: 4809 ldr r0, [pc, #36] ; (19f5c ) 19f36: 490a ldr r1, [pc, #40] ; (19f60 ) 19f38: 4788 blx r1 19f3a: e7fe b.n 19f3a lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19f3c: 4620 mov r0, r4 19f3e: 4b09 ldr r3, [pc, #36] ; (19f64 ) 19f40: 4798 blx r3 return ext->long_mode; 19f42: 7c00 ldrb r0, [r0, #16] } 19f44: f000 0007 and.w r0, r0, #7 19f48: b003 add sp, #12 19f4a: bd30 pop {r4, r5, pc} 19f4c: 00002299 .word 0x00002299 19f50: 000297d4 .word 0x000297d4 19f54: 0002997c .word 0x0002997c 19f58: 00012245 .word 0x00012245 19f5c: 00024824 .word 0x00024824 19f60: 000022a1 .word 0x000022a1 19f64: 00004d85 .word 0x00004d85 00019f68 : { 19f68: b530 push {r4, r5, lr} 19f6a: b083 sub sp, #12 19f6c: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 19f6e: 4b0e ldr r3, [pc, #56] ; (19fa8 ) 19f70: 4798 blx r3 19f72: b968 cbnz r0, 19f90 19f74: 4b0d ldr r3, [pc, #52] ; (19fac ) 19f76: 9300 str r3, [sp, #0] 19f78: f240 12ff movw r2, #511 ; 0x1ff 19f7c: 490c ldr r1, [pc, #48] ; (19fb0 ) 19f7e: 2003 movs r0, #3 19f80: 4d0c ldr r5, [pc, #48] ; (19fb4 ) 19f82: 47a8 blx r5 19f84: 4622 mov r2, r4 19f86: 2300 movs r3, #0 19f88: 480b ldr r0, [pc, #44] ; (19fb8 ) 19f8a: 490c ldr r1, [pc, #48] ; (19fbc ) 19f8c: 4788 blx r1 19f8e: e7fe b.n 19f8e lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19f90: 4620 mov r0, r4 19f92: 4b0b ldr r3, [pc, #44] ; (19fc0 ) 19f94: 4798 blx r3 lv_label_align_t align = ext->align; 19f96: 7c00 ldrb r0, [r0, #16] 19f98: f3c0 1001 ubfx r0, r0, #4, #2 align = LV_LABEL_ALIGN_LEFT; 19f9c: 2803 cmp r0, #3 } 19f9e: bf08 it eq 19fa0: 2000 moveq r0, #0 19fa2: b003 add sp, #12 19fa4: bd30 pop {r4, r5, pc} 19fa6: bf00 nop 19fa8: 00002299 .word 0x00002299 19fac: 000297ec .word 0x000297ec 19fb0: 0002997c .word 0x0002997c 19fb4: 00012245 .word 0x00012245 19fb8: 00024824 .word 0x00024824 19fbc: 000022a1 .word 0x000022a1 19fc0: 00004d85 .word 0x00004d85 00019fc4 : { 19fc4: b530 push {r4, r5, lr} 19fc6: b083 sub sp, #12 19fc8: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 19fca: 4b0c ldr r3, [pc, #48] ; (19ffc ) 19fcc: 4798 blx r3 19fce: b968 cbnz r0, 19fec 19fd0: 4b0b ldr r3, [pc, #44] ; (1a000 ) 19fd2: 9300 str r3, [sp, #0] 19fd4: f240 221b movw r2, #539 ; 0x21b 19fd8: 490a ldr r1, [pc, #40] ; (1a004 ) 19fda: 2003 movs r0, #3 19fdc: 4d0a ldr r5, [pc, #40] ; (1a008 ) 19fde: 47a8 blx r5 19fe0: 4622 mov r2, r4 19fe2: 2300 movs r3, #0 19fe4: 4809 ldr r0, [pc, #36] ; (1a00c ) 19fe6: 490a ldr r1, [pc, #40] ; (1a010 ) 19fe8: 4788 blx r1 19fea: e7fe b.n 19fea lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19fec: 4620 mov r0, r4 19fee: 4b09 ldr r3, [pc, #36] ; (1a014 ) 19ff0: 4798 blx r3 return ext->recolor == 0 ? false : true; 19ff2: 7c00 ldrb r0, [r0, #16] } 19ff4: f3c0 1080 ubfx r0, r0, #6, #1 19ff8: b003 add sp, #12 19ffa: bd30 pop {r4, r5, pc} 19ffc: 00002299 .word 0x00002299 1a000: 00029800 .word 0x00029800 1a004: 0002997c .word 0x0002997c 1a008: 00012245 .word 0x00012245 1a00c: 00024824 .word 0x00024824 1a010: 000022a1 .word 0x000022a1 1a014: 00004d85 .word 0x00004d85 0001a018 : { 1a018: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 1a01c: b08f sub sp, #60 ; 0x3c 1a01e: 4605 mov r5, r0 1a020: 9105 str r1, [sp, #20] LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1a022: 4b9e ldr r3, [pc, #632] ; (1a29c ) 1a024: 4798 blx r3 1a026: b968 cbnz r0, 1a044 1a028: 4b9d ldr r3, [pc, #628] ; (1a2a0 ) 1a02a: 9300 str r3, [sp, #0] 1a02c: f240 22a5 movw r2, #677 ; 0x2a5 1a030: 499c ldr r1, [pc, #624] ; (1a2a4 ) 1a032: 2003 movs r0, #3 1a034: 4c9c ldr r4, [pc, #624] ; (1a2a8 ) 1a036: 47a0 blx r4 1a038: 462a mov r2, r5 1a03a: 2300 movs r3, #0 1a03c: 489b ldr r0, [pc, #620] ; (1a2ac ) 1a03e: 499c ldr r1, [pc, #624] ; (1a2b0 ) 1a040: 4788 blx r1 1a042: e7fe b.n 1a042 LV_ASSERT_NULL(pos); 1a044: 9e05 ldr r6, [sp, #20] 1a046: 4630 mov r0, r6 1a048: 4b94 ldr r3, [pc, #592] ; (1a29c ) 1a04a: 4798 blx r3 1a04c: b968 cbnz r0, 1a06a 1a04e: 4b94 ldr r3, [pc, #592] ; (1a2a0 ) 1a050: 9300 str r3, [sp, #0] 1a052: f240 22a6 movw r2, #678 ; 0x2a6 1a056: 4993 ldr r1, [pc, #588] ; (1a2a4 ) 1a058: 2003 movs r0, #3 1a05a: 4c93 ldr r4, [pc, #588] ; (1a2a8 ) 1a05c: 47a0 blx r4 1a05e: 4632 mov r2, r6 1a060: 2300 movs r3, #0 1a062: 4892 ldr r0, [pc, #584] ; (1a2ac ) 1a064: 4992 ldr r1, [pc, #584] ; (1a2b0 ) 1a066: 4788 blx r1 1a068: e7fe b.n 1a068 get_txt_coords(label, &txt_coords); 1a06a: a90c add r1, sp, #48 ; 0x30 1a06c: 4628 mov r0, r5 1a06e: 4b91 ldr r3, [pc, #580] ; (1a2b4 ) 1a070: 4798 blx r3 const char * txt = lv_label_get_text(label); 1a072: 4628 mov r0, r5 1a074: 4b90 ldr r3, [pc, #576] ; (1a2b8 ) 1a076: 4798 blx r3 1a078: 4607 mov r7, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1a07a: 4628 mov r0, r5 1a07c: 4b8f ldr r3, [pc, #572] ; (1a2bc ) 1a07e: 4798 blx r3 1a080: 4606 mov r6, r0 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1a082: f8bd 3034 ldrh.w r3, [sp, #52] ; 0x34 1a086: 3301 adds r3, #1 1a088: f8bd 2030 ldrh.w r2, [sp, #48] ; 0x30 1a08c: 1a9b subs r3, r3, r2 1a08e: b21b sxth r3, r3 1a090: 9306 str r3, [sp, #24] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 1a092: f248 028e movw r2, #32910 ; 0x808e 1a096: 2100 movs r1, #0 1a098: 4628 mov r0, r5 1a09a: 4b89 ldr r3, [pc, #548] ; (1a2c0 ) 1a09c: 4798 blx r3 1a09e: 4681 mov r9, r0 1a0a0: 9003 str r0, [sp, #12] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 1a0a2: f248 0281 movw r2, #32897 ; 0x8081 1a0a6: 2100 movs r1, #0 1a0a8: 4628 mov r0, r5 1a0aa: f8df 8230 ldr.w r8, [pc, #560] ; 1a2dc 1a0ae: 47c0 blx r8 1a0b0: 4604 mov r4, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 1a0b2: f248 0280 movw r2, #32896 ; 0x8080 1a0b6: 2100 movs r1, #0 1a0b8: 4628 mov r0, r5 1a0ba: 47c0 blx r8 1a0bc: 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; 1a0be: f9b9 b008 ldrsh.w fp, [r9, #8] if(ext->recolor != 0) flag |= LV_TXT_FLAG_RECOLOR; 1a0c2: 7c33 ldrb r3, [r6, #16] lv_txt_flag_t flag = LV_TXT_FLAG_NONE; 1a0c4: f3c3 1680 ubfx r6, r3, #6, #1 if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND; 1a0c8: f013 0f80 tst.w r3, #128 ; 0x80 1a0cc: bf18 it ne 1a0ce: f046 0602 orrne.w r6, r6, #2 if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT; 1a0d2: f013 0f07 tst.w r3, #7 1a0d6: bf08 it eq 1a0d8: f046 0610 orreq.w r6, r6, #16 lv_label_align_t align = lv_label_get_align(label); 1a0dc: 4628 mov r0, r5 1a0de: 4b79 ldr r3, [pc, #484] ; (1a2c4 ) 1a0e0: 4798 blx r3 1a0e2: 4682 mov sl, r0 if(align == LV_LABEL_ALIGN_CENTER) flag |= LV_TXT_FLAG_CENTER; 1a0e4: 2801 cmp r0, #1 1a0e6: d137 bne.n 1a158 1a0e8: f046 0604 orr.w r6, r6, #4 while(txt[line_start] != '\0') { 1a0ec: 783b ldrb r3, [r7, #0] 1a0ee: 2b00 cmp r3, #0 1a0f0: d13a bne.n 1a168 1a0f2: 46b8 mov r8, r7 1a0f4: 2500 movs r5, #0 1a0f6: 462c mov r4, r5 line_w = _lv_txt_get_width(bidi_txt, new_line_start - line_start, font, letter_space, flag); 1a0f8: 1b61 subs r1, r4, r5 1a0fa: 9600 str r6, [sp, #0] 1a0fc: 9b04 ldr r3, [sp, #16] 1a0fe: 9a03 ldr r2, [sp, #12] 1a100: b289 uxth r1, r1 1a102: 4640 mov r0, r8 1a104: f8df 91d8 ldr.w r9, [pc, #472] ; 1a2e0 1a108: 47c8 blx r9 1a10a: f8bd 3034 ldrh.w r3, [sp, #52] ; 0x34 1a10e: 3301 adds r3, #1 1a110: f8bd 2030 ldrh.w r2, [sp, #48] ; 0x30 1a114: 1a9b subs r3, r3, r2 x += lv_area_get_width(&txt_coords) / 2 - line_w / 2; 1a116: b21b sxth r3, r3 1a118: eb03 73d3 add.w r3, r3, r3, lsr #31 1a11c: eb00 70d0 add.w r0, r0, r0, lsr #31 1a120: ea4f 0960 mov.w r9, r0, asr #1 1a124: ebc9 0363 rsb r3, r9, r3, asr #1 1a128: fa0f f983 sxth.w r9, r3 lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; 1a12c: 2300 movs r3, #0 1a12e: f88d 302f strb.w r3, [sp, #47] ; 0x2f uint32_t i = 0; 1a132: 930a str r3, [sp, #40] ; 0x28 if(new_line_start > 0) { 1a134: 2c00 cmp r4, #0 1a136: f040 80a1 bne.w 1a27c logical_pos = _lv_txt_encoded_get_char_id(bidi_txt, i); 1a13a: 4e63 ldr r6, [pc, #396] ; (1a2c8 ) 1a13c: 6833 ldr r3, [r6, #0] 1a13e: 990a ldr r1, [sp, #40] ; 0x28 1a140: 4640 mov r0, r8 1a142: 4798 blx r3 1a144: 4604 mov r4, r0 return logical_pos + _lv_txt_encoded_get_char_id(txt, line_start); 1a146: 6833 ldr r3, [r6, #0] 1a148: 4629 mov r1, r5 1a14a: 4638 mov r0, r7 1a14c: 4798 blx r3 1a14e: 4420 add r0, r4 1a150: b280 uxth r0, r0 } 1a152: b00f add sp, #60 ; 0x3c 1a154: 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; 1a158: 2802 cmp r0, #2 1a15a: f040 8096 bne.w 1a28a 1a15e: f046 0608 orr.w r6, r6, #8 while(txt[line_start] != '\0') { 1a162: 783b ldrb r3, [r7, #0] 1a164: 2b00 cmp r3, #0 1a166: d048 beq.n 1a1fa { 1a168: 46b8 mov r8, r7 1a16a: f04f 0900 mov.w r9, #0 1a16e: 464d mov r5, r9 y += letter_height + line_space; 1a170: eb0b 0304 add.w r3, fp, r4 1a174: 9307 str r3, [sp, #28] 1a176: e009 b.n 1a18c 1a178: 9b07 ldr r3, [sp, #28] 1a17a: 4499 add r9, r3 1a17c: fa0f f989 sxth.w r9, r9 while(txt[line_start] != '\0') { 1a180: eb07 0800 add.w r8, r7, r0 new_line_start += _lv_txt_get_next_line(&txt[line_start], font, letter_space, max_w, flag); 1a184: 4605 mov r5, r0 while(txt[line_start] != '\0') { 1a186: 5c3b ldrb r3, [r7, r0] 1a188: 2b00 cmp r3, #0 1a18a: d034 beq.n 1a1f6 new_line_start += _lv_txt_get_next_line(&txt[line_start], font, letter_space, max_w, flag); 1a18c: 9600 str r6, [sp, #0] 1a18e: 9b06 ldr r3, [sp, #24] 1a190: 9a04 ldr r2, [sp, #16] 1a192: 9903 ldr r1, [sp, #12] 1a194: 4640 mov r0, r8 1a196: 4c4d ldr r4, [pc, #308] ; (1a2cc ) 1a198: 47a0 blx r4 1a19a: 4428 add r0, r5 if(pos->y <= y + letter_height) { 1a19c: 9b05 ldr r3, [sp, #20] 1a19e: f9b3 2002 ldrsh.w r2, [r3, #2] 1a1a2: eb09 030b add.w r3, r9, fp 1a1a6: 429a cmp r2, r3 1a1a8: dce6 bgt.n 1a178 1a1aa: 4604 mov r4, r0 uint32_t tmp = new_line_start; 1a1ac: a90e add r1, sp, #56 ; 0x38 1a1ae: f841 0d14 str.w r0, [r1, #-20]! letter = _lv_txt_encoded_prev(txt, &tmp); 1a1b2: 4b47 ldr r3, [pc, #284] ; (1a2d0 ) 1a1b4: 681b ldr r3, [r3, #0] 1a1b6: 4638 mov r0, r7 1a1b8: 4798 blx r3 if(letter != '\n' && txt[new_line_start] == '\0') new_line_start++; 1a1ba: 280a cmp r0, #10 1a1bc: d002 beq.n 1a1c4 1a1be: 5d3b ldrb r3, [r7, r4] 1a1c0: b903 cbnz r3, 1a1c4 1a1c2: 3401 adds r4, #1 if(align == LV_LABEL_ALIGN_CENTER) { 1a1c4: f1ba 0f01 cmp.w sl, #1 1a1c8: d096 beq.n 1a0f8 else if(align == LV_LABEL_ALIGN_RIGHT) { 1a1ca: f1ba 0f02 cmp.w sl, #2 1a1ce: d118 bne.n 1a202 line_w = _lv_txt_get_width(bidi_txt, new_line_start - line_start, font, letter_space, flag); 1a1d0: 1b61 subs r1, r4, r5 1a1d2: 9600 str r6, [sp, #0] 1a1d4: 9b04 ldr r3, [sp, #16] 1a1d6: 9a03 ldr r2, [sp, #12] 1a1d8: b289 uxth r1, r1 1a1da: 4640 mov r0, r8 1a1dc: f8df 9100 ldr.w r9, [pc, #256] ; 1a2e0 1a1e0: 47c8 blx r9 1a1e2: f8bd 3034 ldrh.w r3, [sp, #52] ; 0x34 1a1e6: 3301 adds r3, #1 1a1e8: f8bd 2030 ldrh.w r2, [sp, #48] ; 0x30 1a1ec: 1a9b subs r3, r3, r2 x += lv_area_get_width(&txt_coords) - line_w; 1a1ee: 1a1b subs r3, r3, r0 1a1f0: fa0f f983 sxth.w r9, r3 1a1f4: e79a b.n 1a12c 1a1f6: 4604 mov r4, r0 1a1f8: e7e4 b.n 1a1c4 while(txt[line_start] != '\0') { 1a1fa: 46b8 mov r8, r7 1a1fc: 2500 movs r5, #0 1a1fe: 462c mov r4, r5 1a200: e7e6 b.n 1a1d0 lv_coord_t x = 0; 1a202: f04f 0900 mov.w r9, #0 1a206: e791 b.n 1a12c x += lv_font_get_glyph_width(font, letter, letter_next); 1a208: 9a07 ldr r2, [sp, #28] 1a20a: 9906 ldr r1, [sp, #24] 1a20c: 9803 ldr r0, [sp, #12] 1a20e: 4b31 ldr r3, [pc, #196] ; (1a2d4 ) 1a210: 4798 blx r3 1a212: eb00 0309 add.w r3, r0, r9 1a216: b29b uxth r3, r3 if(pos->x < x || i + line_start == new_line_start || txt[i + line_start] == '\0') { 1a218: 9a05 ldr r2, [sp, #20] 1a21a: f9b2 1000 ldrsh.w r1, [r2] 1a21e: b21a sxth r2, r3 1a220: 4291 cmp r1, r2 1a222: db28 blt.n 1a276 1a224: 9a0a ldr r2, [sp, #40] ; 0x28 1a226: 1951 adds r1, r2, r5 1a228: 42a1 cmp r1, r4 1a22a: d024 beq.n 1a276 1a22c: 5c79 ldrb r1, [r7, r1] 1a22e: b311 cbz r1, 1a276 x += letter_space; 1a230: 9904 ldr r1, [sp, #16] 1a232: 440b add r3, r1 1a234: fa0f f983 sxth.w r9, r3 i_act = i; 1a238: 4693 mov fp, r2 while(i + line_start < new_line_start) { 1a23a: 9b0a ldr r3, [sp, #40] ; 0x28 1a23c: 442b add r3, r5 1a23e: 42a3 cmp r3, r4 1a240: f4bf af7b bcs.w 1a13a uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i); 1a244: f8da 3000 ldr.w r3, [sl] 1a248: a90a add r1, sp, #40 ; 0x28 1a24a: 4640 mov r0, r8 1a24c: 4798 blx r3 1a24e: 9006 str r0, [sp, #24] uint32_t letter_next = _lv_txt_encoded_next(&bidi_txt[i], NULL); 1a250: f8da 3000 ldr.w r3, [sl] 1a254: 2100 movs r1, #0 1a256: 980a ldr r0, [sp, #40] ; 0x28 1a258: 4440 add r0, r8 1a25a: 4798 blx r3 1a25c: 9007 str r0, [sp, #28] if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 1a25e: 2e00 cmp r6, #0 1a260: d0d2 beq.n 1a208 if(_lv_txt_is_cmd(&cmd_state, bidi_txt[i]) != false) { 1a262: 9b0a ldr r3, [sp, #40] ; 0x28 1a264: f818 1003 ldrb.w r1, [r8, r3] 1a268: f10d 002f add.w r0, sp, #47 ; 0x2f 1a26c: 4b1a ldr r3, [pc, #104] ; (1a2d8 ) 1a26e: 4798 blx r3 1a270: 2800 cmp r0, #0 1a272: d1e2 bne.n 1a23a 1a274: e7c8 b.n 1a208 i = i_act; 1a276: f8cd b028 str.w fp, [sp, #40] ; 0x28 break; 1a27a: e75e b.n 1a13a 1a27c: f04f 0b00 mov.w fp, #0 uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i); 1a280: f8df a060 ldr.w sl, [pc, #96] ; 1a2e4 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 1a284: f006 0601 and.w r6, r6, #1 1a288: e7d7 b.n 1a23a while(txt[line_start] != '\0') { 1a28a: 783b ldrb r3, [r7, #0] 1a28c: 2b00 cmp r3, #0 1a28e: f47f af6b bne.w 1a168 1a292: 46b8 mov r8, r7 1a294: 2500 movs r5, #0 1a296: 462c mov r4, r5 lv_coord_t x = 0; 1a298: 46a9 mov r9, r5 1a29a: e747 b.n 1a12c 1a29c: 00002299 .word 0x00002299 1a2a0: 00029848 .word 0x00029848 1a2a4: 0002997c .word 0x0002997c 1a2a8: 00012245 .word 0x00012245 1a2ac: 00024824 .word 0x00024824 1a2b0: 000022a1 .word 0x000022a1 1a2b4: 00019d71 .word 0x00019d71 1a2b8: 00019ec5 .word 0x00019ec5 1a2bc: 00004d85 .word 0x00004d85 1a2c0: 00004689 .word 0x00004689 1a2c4: 00019f69 .word 0x00019f69 1a2c8: 20000064 .word 0x20000064 1a2cc: 00013d99 .word 0x00013d99 1a2d0: 20000068 .word 0x20000068 1a2d4: 00010049 .word 0x00010049 1a2d8: 00013d51 .word 0x00013d51 1a2dc: 000044bd .word 0x000044bd 1a2e0: 00013fc5 .word 0x00013fc5 1a2e4: 20000058 .word 0x20000058 0001a2e8 : { 1a2e8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 1a2ec: b099 sub sp, #100 ; 0x64 1a2ee: 4604 mov r4, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1a2f0: 4baf ldr r3, [pc, #700] ; (1a5b0 ) 1a2f2: 4798 blx r3 if(ext->text == NULL) return; 1a2f4: 6803 ldr r3, [r0, #0] 1a2f6: 2b00 cmp r3, #0 1a2f8: d048 beq.n 1a38c 1a2fa: 4605 mov r5, r0 get_txt_coords(label, &txt_coords); 1a2fc: a916 add r1, sp, #88 ; 0x58 1a2fe: 4620 mov r0, r4 1a300: 4bac ldr r3, [pc, #688] ; (1a5b4 ) 1a302: 4798 blx r3 1a304: f8bd 605c ldrh.w r6, [sp, #92] ; 0x5c 1a308: 3601 adds r6, #1 1a30a: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 1a30e: 1af6 subs r6, r6, r3 1a310: b236 sxth r6, r6 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 1a312: f248 028e movw r2, #32910 ; 0x808e 1a316: 2100 movs r1, #0 1a318: 4620 mov r0, r4 1a31a: 4ba7 ldr r3, [pc, #668] ; (1a5b8 ) 1a31c: 4798 blx r3 1a31e: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 1a320: f248 0281 movw r2, #32897 ; 0x8081 1a324: 2100 movs r1, #0 1a326: 4620 mov r0, r4 1a328: 4fa4 ldr r7, [pc, #656] ; (1a5bc ) 1a32a: 47b8 blx r7 1a32c: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 1a32e: f248 0280 movw r2, #32896 ; 0x8080 1a332: 2100 movs r1, #0 1a334: 4620 mov r0, r4 1a336: 47b8 blx r7 1a338: 4607 mov r7, r0 if(ext->recolor != 0) flag |= LV_TXT_FLAG_RECOLOR; 1a33a: 7c2b ldrb r3, [r5, #16] lv_txt_flag_t flag = LV_TXT_FLAG_NONE; 1a33c: f3c3 1280 ubfx r2, r3, #6, #1 if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND; 1a340: f013 0f80 tst.w r3, #128 ; 0x80 1a344: bf18 it ne 1a346: f042 0202 orrne.w r2, r2, #2 if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT; 1a34a: f013 0f07 tst.w r3, #7 1a34e: bf08 it eq 1a350: f042 0210 orreq.w r2, r2, #16 _lv_txt_get_size(&size, ext->text, font, letter_space, line_space, max_w, flag); 1a354: 6829 ldr r1, [r5, #0] 1a356: 9202 str r2, [sp, #8] 1a358: 9601 str r6, [sp, #4] 1a35a: f8cd 9000 str.w r9, [sp] 1a35e: 4603 mov r3, r0 1a360: 4642 mov r2, r8 1a362: a815 add r0, sp, #84 ; 0x54 1a364: 4e96 ldr r6, [pc, #600] ; (1a5c0 ) 1a366: 47b0 blx r6 if(ext->long_mode == LV_LABEL_LONG_EXPAND) { 1a368: 7c2b ldrb r3, [r5, #16] 1a36a: f013 0307 ands.w r3, r3, #7 1a36e: d010 beq.n 1a392 else if(ext->long_mode == LV_LABEL_LONG_SROLL) { 1a370: 2b03 cmp r3, #3 1a372: d034 beq.n 1a3de else if(ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) { 1a374: 2b04 cmp r3, #4 1a376: f000 80d7 beq.w 1a528 else if(ext->long_mode == LV_LABEL_LONG_DOT) { 1a37a: 2b02 cmp r3, #2 1a37c: f000 816d beq.w 1a65a else if(ext->long_mode == LV_LABEL_LONG_BREAK) { 1a380: 2b01 cmp r3, #1 1a382: f000 81fe beq.w 1a782 lv_obj_invalidate(label); 1a386: 4620 mov r0, r4 1a388: 4b8e ldr r3, [pc, #568] ; (1a5c4 ) 1a38a: 4798 blx r3 } 1a38c: b019 add sp, #100 ; 0x64 1a38e: 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) 1a392: 2212 movs r2, #18 1a394: 2100 movs r1, #0 1a396: 4620 mov r0, r4 1a398: 4e88 ldr r6, [pc, #544] ; (1a5bc ) 1a39a: 47b0 blx r6 1a39c: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 1a39e: 2213 movs r2, #19 1a3a0: 2100 movs r1, #0 1a3a2: 4620 mov r0, r4 1a3a4: 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); 1a3a6: 4428 add r0, r5 1a3a8: f8bd 5054 ldrh.w r5, [sp, #84] ; 0x54 1a3ac: 4428 add r0, r5 1a3ae: f8ad 0054 strh.w r0, [sp, #84] ; 0x54 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1a3b2: 2210 movs r2, #16 1a3b4: 2100 movs r1, #0 1a3b6: 4620 mov r0, r4 1a3b8: 47b0 blx r6 1a3ba: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 1a3bc: 2211 movs r2, #17 1a3be: 2100 movs r1, #0 1a3c0: 4620 mov r0, r4 1a3c2: 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); 1a3c4: 182a adds r2, r5, r0 1a3c6: f8bd 0056 ldrh.w r0, [sp, #86] ; 0x56 1a3ca: 4402 add r2, r0 1a3cc: b212 sxth r2, r2 1a3ce: f8ad 2056 strh.w r2, [sp, #86] ; 0x56 lv_obj_set_size(label, size.x, size.y); 1a3d2: f9bd 1054 ldrsh.w r1, [sp, #84] ; 0x54 1a3d6: 4620 mov r0, r4 1a3d8: 4b7b ldr r3, [pc, #492] ; (1a5c8 ) 1a3da: 4798 blx r3 1a3dc: e7d3 b.n 1a386 lv_anim_init(&a); 1a3de: a805 add r0, sp, #20 1a3e0: 4b7a ldr r3, [pc, #488] ; (1a5cc ) 1a3e2: 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; 1a3e4: 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; 1a3e6: f64f 73ff movw r3, #65535 ; 0xffff 1a3ea: f8ad 3048 strh.w r3, [sp, #72] ; 0x48 lv_anim_set_playback_delay(&a, (((lv_font_get_glyph_width(font, ' ', ' ') + letter_space) * 1000) / 1a3ee: 2220 movs r2, #32 1a3f0: 4611 mov r1, r2 1a3f2: 4640 mov r0, r8 1a3f4: 4b76 ldr r3, [pc, #472] ; (1a5d0 ) 1a3f6: 4798 blx r3 1a3f8: 4438 add r0, r7 1a3fa: f44f 737a mov.w r3, #1000 ; 0x3e8 1a3fe: fb03 f300 mul.w r3, r3, r0 ext->anim_speed) * 1a402: 8968 ldrh r0, [r5, #10] lv_anim_set_playback_delay(&a, (((lv_font_get_glyph_width(font, ' ', ' ') + letter_space) * 1000) / 1a404: fb93 f3f0 sdiv r3, r3, r0 1a408: eb03 0343 add.w r3, r3, r3, lsl #1 a->playback_delay = delay; 1a40c: b29b uxth r3, r3 1a40e: 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; 1a410: 9311 str r3, [sp, #68] ; 0x44 if(size.x > lv_area_get_width(&txt_coords)) { 1a412: f9bd 2054 ldrsh.w r2, [sp, #84] ; 0x54 1a416: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c 1a41a: 3301 adds r3, #1 1a41c: f8bd 1058 ldrh.w r1, [sp, #88] ; 0x58 1a420: 1a5b subs r3, r3, r1 1a422: b29b uxth r3, r3 1a424: b219 sxth r1, r3 1a426: 428a cmp r2, r1 1a428: dd37 ble.n 1a49a lv_anim_set_values(&a, 0, lv_area_get_width(&txt_coords) - size.x); 1a42a: 1a9b subs r3, r3, r2 1a42c: b21a sxth r2, r3 a->start = start; 1a42e: 2100 movs r1, #0 1a430: 910b str r1, [sp, #44] ; 0x2c a->end = end; 1a432: 920c str r2, [sp, #48] ; 0x30 a->exec_cb = exec_cb; 1a434: 4e67 ldr r6, [pc, #412] ; (1a5d4 ) 1a436: 9606 str r6, [sp, #24] lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 1a438: 8968 ldrh r0, [r5, #10] 1a43a: 4b67 ldr r3, [pc, #412] ; (1a5d8 ) 1a43c: 4798 blx r3 a->time = duration; 1a43e: 900d str r0, [sp, #52] ; 0x34 1a440: 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); 1a442: 4631 mov r1, r6 1a444: 4620 mov r0, r4 1a446: 4b65 ldr r3, [pc, #404] ; (1a5dc ) 1a448: 4798 blx r3 if(anim_cur) { 1a44a: b318 cbz r0, 1a494 act_time = anim_cur->act_time; 1a44c: 6a42 ldr r2, [r0, #36] ; 0x24 playback_now = anim_cur->playback_now; 1a44e: f890 303c ldrb.w r3, [r0, #60] ; 0x3c 1a452: f003 0301 and.w r3, r3, #1 if(act_time < a.time) { 1a456: 990d ldr r1, [sp, #52] ; 0x34 1a458: 428a cmp r2, r1 1a45a: da11 bge.n 1a480 a.act_time = act_time; /*To keep the old position*/ 1a45c: 920e str r2, [sp, #56] ; 0x38 a.early_apply = 0; 1a45e: f89d 204a ldrb.w r2, [sp, #74] ; 0x4a 1a462: f36f 0200 bfc r2, #0, #1 1a466: f88d 204a strb.w r2, [sp, #74] ; 0x4a if(playback_now) { 1a46a: b14b cbz r3, 1a480 a.playback_now = 1; 1a46c: f89d 3050 ldrb.w r3, [sp, #80] ; 0x50 1a470: f043 0301 orr.w r3, r3, #1 1a474: f88d 3050 strb.w r3, [sp, #80] ; 0x50 tmp = a.start; 1a478: 9b0b ldr r3, [sp, #44] ; 0x2c a.start = a.end; 1a47a: 9a0c ldr r2, [sp, #48] ; 0x30 1a47c: 920b str r2, [sp, #44] ; 0x2c a.end = tmp; 1a47e: 930c str r3, [sp, #48] ; 0x30 lv_anim_start(&a); 1a480: a805 add r0, sp, #20 1a482: 4b57 ldr r3, [pc, #348] ; (1a5e0 ) 1a484: 4798 blx r3 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 1a486: 4957 ldr r1, [pc, #348] ; (1a5e4 ) 1a488: 4620 mov r0, r4 1a48a: 4b57 ldr r3, [pc, #348] ; (1a5e8 ) 1a48c: 4798 blx r3 ext->offset.y = 0; 1a48e: 2300 movs r3, #0 1a490: 81eb strh r3, [r5, #14] 1a492: e778 b.n 1a386 bool playback_now = false; 1a494: 2300 movs r3, #0 int32_t act_time = 0; 1a496: 461a mov r2, r3 1a498: e7dd b.n 1a456 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 1a49a: 494e ldr r1, [pc, #312] ; (1a5d4 ) 1a49c: 4620 mov r0, r4 1a49e: 4b52 ldr r3, [pc, #328] ; (1a5e8 ) 1a4a0: 4798 blx r3 ext->offset.x = 0; 1a4a2: 2300 movs r3, #0 1a4a4: 81ab strh r3, [r5, #12] if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { 1a4a6: f9bd 2056 ldrsh.w r2, [sp, #86] ; 0x56 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1a4aa: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e 1a4ae: 3301 adds r3, #1 1a4b0: f8bd 105a ldrh.w r1, [sp, #90] ; 0x5a 1a4b4: 1a5b subs r3, r3, r1 1a4b6: b29b uxth r3, r3 1a4b8: b219 sxth r1, r3 1a4ba: 428a cmp r2, r1 1a4bc: dde3 ble.n 1a486 lv_anim_set_values(&a, 0, lv_area_get_height(&txt_coords) - size.y - (lv_font_get_line_height(font))); 1a4be: 1a9a subs r2, r3, r2 1a4c0: f8b8 3008 ldrh.w r3, [r8, #8] 1a4c4: 1ad2 subs r2, r2, r3 1a4c6: b212 sxth r2, r2 a->start = start; 1a4c8: 2100 movs r1, #0 1a4ca: 910b str r1, [sp, #44] ; 0x2c a->end = end; 1a4cc: 920c str r2, [sp, #48] ; 0x30 a->exec_cb = exec_cb; 1a4ce: 4e45 ldr r6, [pc, #276] ; (1a5e4 ) 1a4d0: 9606 str r6, [sp, #24] lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 1a4d2: 8968 ldrh r0, [r5, #10] 1a4d4: 4b40 ldr r3, [pc, #256] ; (1a5d8 ) 1a4d6: 4798 blx r3 a->time = duration; 1a4d8: 900d str r0, [sp, #52] ; 0x34 1a4da: 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); 1a4dc: 4631 mov r1, r6 1a4de: 4620 mov r0, r4 1a4e0: 4b3e ldr r3, [pc, #248] ; (1a5dc ) 1a4e2: 4798 blx r3 if(anim_cur) { 1a4e4: b1e8 cbz r0, 1a522 act_time = anim_cur->act_time; 1a4e6: 6a42 ldr r2, [r0, #36] ; 0x24 playback_now = anim_cur->playback_now; 1a4e8: f890 303c ldrb.w r3, [r0, #60] ; 0x3c 1a4ec: f003 0301 and.w r3, r3, #1 if(act_time < a.time) { 1a4f0: 990d ldr r1, [sp, #52] ; 0x34 1a4f2: 428a cmp r2, r1 1a4f4: da11 bge.n 1a51a a.act_time = act_time; /*To keep the old position*/ 1a4f6: 920e str r2, [sp, #56] ; 0x38 a.early_apply = 0; 1a4f8: f89d 204a ldrb.w r2, [sp, #74] ; 0x4a 1a4fc: f36f 0200 bfc r2, #0, #1 1a500: f88d 204a strb.w r2, [sp, #74] ; 0x4a if(playback_now) { 1a504: b14b cbz r3, 1a51a a.playback_now = 1; 1a506: f89d 3050 ldrb.w r3, [sp, #80] ; 0x50 1a50a: f043 0301 orr.w r3, r3, #1 1a50e: f88d 3050 strb.w r3, [sp, #80] ; 0x50 tmp = a.start; 1a512: 9b0b ldr r3, [sp, #44] ; 0x2c a.start = a.end; 1a514: 9a0c ldr r2, [sp, #48] ; 0x30 1a516: 920b str r2, [sp, #44] ; 0x2c a.end = tmp; 1a518: 930c str r3, [sp, #48] ; 0x30 lv_anim_start(&a); 1a51a: a805 add r0, sp, #20 1a51c: 4b30 ldr r3, [pc, #192] ; (1a5e0 ) 1a51e: 4798 blx r3 if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { 1a520: e731 b.n 1a386 bool playback_now = false; 1a522: 2300 movs r3, #0 int32_t act_time = 0; 1a524: 461a mov r2, r3 1a526: e7e3 b.n 1a4f0 lv_anim_init(&a); 1a528: a805 add r0, sp, #20 1a52a: 4b28 ldr r3, [pc, #160] ; (1a5cc ) 1a52c: 4798 blx r3 a->var = var; 1a52e: 9405 str r4, [sp, #20] a->repeat_cnt = cnt; 1a530: f64f 73ff movw r3, #65535 ; 0xffff 1a534: f8ad 3048 strh.w r3, [sp, #72] ; 0x48 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1a538: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c 1a53c: 3301 adds r3, #1 1a53e: f8bd 2058 ldrh.w r2, [sp, #88] ; 0x58 1a542: 1a9b subs r3, r3, r2 if(size.x > lv_area_get_width(&txt_coords)) { 1a544: f9bd 2054 ldrsh.w r2, [sp, #84] ; 0x54 1a548: b21b sxth r3, r3 1a54a: 429a cmp r2, r3 1a54c: dd50 ble.n 1a5f0 lv_anim_set_values(&a, 0, -size.x - lv_font_get_glyph_width(font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT); 1a54e: 2220 movs r2, #32 1a550: 4611 mov r1, r2 1a552: 4640 mov r0, r8 1a554: 4b1e ldr r3, [pc, #120] ; (1a5d0 ) 1a556: 4798 blx r3 1a558: ebc0 3380 rsb r3, r0, r0, lsl #14 1a55c: eb00 0283 add.w r2, r0, r3, lsl #2 1a560: f8bd 3054 ldrh.w r3, [sp, #84] ; 0x54 1a564: 1ad2 subs r2, r2, r3 1a566: b212 sxth r2, r2 a->start = start; 1a568: 2100 movs r1, #0 1a56a: 910b str r1, [sp, #44] ; 0x2c a->end = end; 1a56c: 920c str r2, [sp, #48] ; 0x30 a->exec_cb = exec_cb; 1a56e: 4e19 ldr r6, [pc, #100] ; (1a5d4 ) 1a570: 9606 str r6, [sp, #24] lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 1a572: 8968 ldrh r0, [r5, #10] 1a574: 4b18 ldr r3, [pc, #96] ; (1a5d8 ) 1a576: 4798 blx r3 a->time = duration; 1a578: 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); 1a57a: 4631 mov r1, r6 1a57c: 4620 mov r0, r4 1a57e: 4b17 ldr r3, [pc, #92] ; (1a5dc ) 1a580: 4798 blx r3 int32_t act_time = anim_cur ? anim_cur->act_time : 0; 1a582: 2800 cmp r0, #0 1a584: d032 beq.n 1a5ec 1a586: 6a43 ldr r3, [r0, #36] ; 0x24 if(act_time < a.time) { 1a588: 9a0d ldr r2, [sp, #52] ; 0x34 1a58a: 4293 cmp r3, r2 1a58c: da06 bge.n 1a59c a.act_time = act_time; /*To keep the old position*/ 1a58e: 930e str r3, [sp, #56] ; 0x38 a.early_apply = 0; 1a590: f89d 304a ldrb.w r3, [sp, #74] ; 0x4a 1a594: f36f 0300 bfc r3, #0, #1 1a598: f88d 304a strb.w r3, [sp, #74] ; 0x4a lv_anim_start(&a); 1a59c: a805 add r0, sp, #20 1a59e: 4b10 ldr r3, [pc, #64] ; (1a5e0 ) 1a5a0: 4798 blx r3 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 1a5a2: 4910 ldr r1, [pc, #64] ; (1a5e4 ) 1a5a4: 4620 mov r0, r4 1a5a6: 4b10 ldr r3, [pc, #64] ; (1a5e8 ) 1a5a8: 4798 blx r3 ext->offset.y = 0; 1a5aa: 2300 movs r3, #0 1a5ac: 81eb strh r3, [r5, #14] 1a5ae: e6ea b.n 1a386 1a5b0: 00004d85 .word 0x00004d85 1a5b4: 00019d71 .word 0x00019d71 1a5b8: 00004689 .word 0x00004689 1a5bc: 000044bd .word 0x000044bd 1a5c0: 00014065 .word 0x00014065 1a5c4: 00003309 .word 0x00003309 1a5c8: 00004289 .word 0x00004289 1a5cc: 000112cd .word 0x000112cd 1a5d0: 00010049 .word 0x00010049 1a5d4: 00019d55 .word 0x00019d55 1a5d8: 00011479 .word 0x00011479 1a5dc: 0001143d .word 0x0001143d 1a5e0: 00011389 .word 0x00011389 1a5e4: 00019d39 .word 0x00019d39 1a5e8: 00011311 .word 0x00011311 int32_t act_time = anim_cur ? anim_cur->act_time : 0; 1a5ec: 2300 movs r3, #0 1a5ee: e7cb b.n 1a588 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 1a5f0: 496e ldr r1, [pc, #440] ; (1a7ac ) 1a5f2: 4620 mov r0, r4 1a5f4: 4b6e ldr r3, [pc, #440] ; (1a7b0 ) 1a5f6: 4798 blx r3 ext->offset.x = 0; 1a5f8: 2300 movs r3, #0 1a5fa: 81ab strh r3, [r5, #12] if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { 1a5fc: f9bd 2056 ldrsh.w r2, [sp, #86] ; 0x56 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1a600: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e 1a604: 3301 adds r3, #1 1a606: f8bd 105a ldrh.w r1, [sp, #90] ; 0x5a 1a60a: 1a5b subs r3, r3, r1 1a60c: b21b sxth r3, r3 1a60e: 429a cmp r2, r3 1a610: ddc7 ble.n 1a5a2 lv_anim_set_values(&a, 0, -size.y - (lv_font_get_line_height(font))); 1a612: f8b8 3008 ldrh.w r3, [r8, #8] 1a616: 441a add r2, r3 1a618: 4252 negs r2, r2 1a61a: b212 sxth r2, r2 a->start = start; 1a61c: 2100 movs r1, #0 1a61e: 910b str r1, [sp, #44] ; 0x2c a->end = end; 1a620: 920c str r2, [sp, #48] ; 0x30 a->exec_cb = exec_cb; 1a622: 4e64 ldr r6, [pc, #400] ; (1a7b4 ) 1a624: 9606 str r6, [sp, #24] lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 1a626: 8968 ldrh r0, [r5, #10] 1a628: 4b63 ldr r3, [pc, #396] ; (1a7b8 ) 1a62a: 4798 blx r3 a->time = duration; 1a62c: 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); 1a62e: 4631 mov r1, r6 1a630: 4620 mov r0, r4 1a632: 4b62 ldr r3, [pc, #392] ; (1a7bc ) 1a634: 4798 blx r3 int32_t act_time = anim_cur ? anim_cur->act_time : 0; 1a636: b170 cbz r0, 1a656 1a638: 6a43 ldr r3, [r0, #36] ; 0x24 if(act_time < a.time) { 1a63a: 9a0d ldr r2, [sp, #52] ; 0x34 1a63c: 4293 cmp r3, r2 1a63e: da06 bge.n 1a64e a.act_time = act_time; /*To keep the old position*/ 1a640: 930e str r3, [sp, #56] ; 0x38 a.early_apply = 0; 1a642: f89d 304a ldrb.w r3, [sp, #74] ; 0x4a 1a646: f36f 0300 bfc r3, #0, #1 1a64a: f88d 304a strb.w r3, [sp, #74] ; 0x4a lv_anim_start(&a); 1a64e: a805 add r0, sp, #20 1a650: 4b5b ldr r3, [pc, #364] ; (1a7c0 ) 1a652: 4798 blx r3 if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { 1a654: e697 b.n 1a386 int32_t act_time = anim_cur ? anim_cur->act_time : 0; 1a656: 2300 movs r3, #0 1a658: e7ef b.n 1a63a 1a65a: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e 1a65e: 3301 adds r3, #1 1a660: f8bd 205a ldrh.w r2, [sp, #90] ; 0x5a 1a664: 1a9b subs r3, r3, r2 if(size.y <= lv_area_get_height(&txt_coords)) { /*No dots are required, the text is short enough*/ 1a666: f9bd 2056 ldrsh.w r2, [sp, #86] ; 0x56 1a66a: b21b sxth r3, r3 1a66c: 429a cmp r2, r3 1a66e: dc03 bgt.n 1a678 ext->dot_end = LV_LABEL_DOT_END_INV; 1a670: f64f 73ff movw r3, #65535 ; 0xffff 1a674: 812b strh r3, [r5, #8] 1a676: e686 b.n 1a386 else if(_lv_txt_get_encoded_length(ext->text) <= LV_LABEL_DOT_NUM) { /*Don't turn to dots all the characters*/ 1a678: 4b52 ldr r3, [pc, #328] ; (1a7c4 ) 1a67a: 681b ldr r3, [r3, #0] 1a67c: 6828 ldr r0, [r5, #0] 1a67e: 4798 blx r3 1a680: 2803 cmp r0, #3 1a682: d803 bhi.n 1a68c ext->dot_end = LV_LABEL_DOT_END_INV; 1a684: f64f 73ff movw r3, #65535 ; 0xffff 1a688: 812b strh r3, [r5, #8] 1a68a: e67c b.n 1a386 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1a68c: f8bd 605c ldrh.w r6, [sp, #92] ; 0x5c 1a690: 3601 adds r6, #1 1a692: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 1a696: 1af6 subs r6, r6, r3 1a698: b2b6 uxth r6, r6 (lv_font_get_glyph_width(font, '.', '.') + letter_space) * 1a69a: 222e movs r2, #46 ; 0x2e 1a69c: 4611 mov r1, r2 1a69e: 4640 mov r0, r8 1a6a0: 4b49 ldr r3, [pc, #292] ; (1a7c8 ) 1a6a2: 4798 blx r3 1a6a4: 4438 add r0, r7 p.x = lv_area_get_width(&txt_coords) - 1a6a6: ebc0 3380 rsb r3, r0, r0, lsl #14 1a6aa: eb00 0083 add.w r0, r0, r3, lsl #2 1a6ae: 4430 add r0, r6 1a6b0: f8ad 0010 strh.w r0, [sp, #16] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1a6b4: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e 1a6b8: 3301 adds r3, #1 1a6ba: f8bd 205a ldrh.w r2, [sp, #90] ; 0x5a 1a6be: 1a9b subs r3, r3, r2 1a6c0: b29b uxth r3, r3 p.y -= p.y % 1a6c2: b218 sxth r0, r3 (lv_font_get_line_height(font) + line_space); /*Round down to the last line*/ 1a6c4: f9b8 2008 ldrsh.w r2, [r8, #8] 1a6c8: 444a add r2, r9 p.y -= p.y % 1a6ca: fb90 f1f2 sdiv r1, r0, r2 1a6ce: fb02 0211 mls r2, r2, r1, r0 1a6d2: 1a9b subs r3, r3, r2 p.y -= line_space; /*Trim the last line space*/ 1a6d4: eba3 0909 sub.w r9, r3, r9 1a6d8: f8ad 9012 strh.w r9, [sp, #18] uint32_t letter_id = lv_label_get_letter_on(label, &p); 1a6dc: a904 add r1, sp, #16 1a6de: 4620 mov r0, r4 1a6e0: 4b3a ldr r3, [pc, #232] ; (1a7cc ) 1a6e2: 4798 blx r3 1a6e4: 4680 mov r8, r0 1a6e6: 4607 mov r7, r0 size_t txt_len = strlen(ext->text); 1a6e8: 682e ldr r6, [r5, #0] 1a6ea: 4630 mov r0, r6 1a6ec: 4b38 ldr r3, [pc, #224] ; (1a7d0 ) 1a6ee: 4798 blx r3 1a6f0: 4681 mov r9, r0 uint32_t byte_id = _lv_txt_encoded_get_byte_id(ext->text, letter_id); 1a6f2: 4b38 ldr r3, [pc, #224] ; (1a7d4 ) 1a6f4: 681b ldr r3, [r3, #0] 1a6f6: 4641 mov r1, r8 1a6f8: 4630 mov r0, r6 1a6fa: 4798 blx r3 1a6fc: 4606 mov r6, r0 1a6fe: 9005 str r0, [sp, #20] while(byte_id + LV_LABEL_DOT_NUM > txt_len) { 1a700: f100 0803 add.w r8, r0, #3 1a704: 45c1 cmp r9, r8 1a706: d20e bcs.n 1a726 byte_id -= _lv_txt_encoded_size(&ext->text[byte_id]); 1a708: f8df a0dc ldr.w sl, [pc, #220] ; 1a7e8 1a70c: 6828 ldr r0, [r5, #0] 1a70e: 4430 add r0, r6 1a710: f8da 3000 ldr.w r3, [sl] 1a714: 4798 blx r3 1a716: 9e05 ldr r6, [sp, #20] 1a718: 1a36 subs r6, r6, r0 1a71a: 9605 str r6, [sp, #20] letter_id--; 1a71c: 3f01 subs r7, #1 while(byte_id + LV_LABEL_DOT_NUM > txt_len) { 1a71e: f106 0803 add.w r8, r6, #3 1a722: 45c1 cmp r9, r8 1a724: d3f2 bcc.n 1a70c int32_t act_time = anim_cur ? anim_cur->act_time : 0; 1a726: f04f 0a04 mov.w sl, #4 1a72a: f04f 0900 mov.w r9, #0 len += _lv_txt_encoded_size(&ext->text[byte_id]); 1a72e: f8df b0b8 ldr.w fp, [pc, #184] ; 1a7e8 1a732: 6828 ldr r0, [r5, #0] 1a734: 9b05 ldr r3, [sp, #20] 1a736: 4418 add r0, r3 1a738: f8db 3000 ldr.w r3, [fp] 1a73c: 4798 blx r3 1a73e: 4481 add r9, r0 1a740: fa5f f989 uxtb.w r9, r9 _lv_txt_encoded_next(ext->text, &byte_id); 1a744: a905 add r1, sp, #20 1a746: 6828 ldr r0, [r5, #0] 1a748: 4b23 ldr r3, [pc, #140] ; (1a7d8 ) 1a74a: 681b ldr r3, [r3, #0] 1a74c: 4798 blx r3 for(i = 0; i <= LV_LABEL_DOT_NUM; i++) { 1a74e: f1ba 0a01 subs.w sl, sl, #1 1a752: d1ee bne.n 1a732 if(lv_label_set_dot_tmp(label, &ext->text[byte_id_ori], len)) { 1a754: 6829 ldr r1, [r5, #0] 1a756: 464a mov r2, r9 1a758: 4431 add r1, r6 1a75a: 4620 mov r0, r4 1a75c: 4b1f ldr r3, [pc, #124] ; (1a7dc ) 1a75e: 4798 blx r3 1a760: 2800 cmp r0, #0 1a762: f43f ae10 beq.w 1a386 1a766: 1cf1 adds r1, r6, #3 ext->text[byte_id_ori + i] = '.'; 1a768: 222e movs r2, #46 ; 0x2e 1a76a: 682b ldr r3, [r5, #0] 1a76c: 559a strb r2, [r3, r6] 1a76e: 3601 adds r6, #1 for(i = 0; i < LV_LABEL_DOT_NUM; i++) { 1a770: 428e cmp r6, r1 1a772: d1fa bne.n 1a76a ext->text[byte_id_ori + LV_LABEL_DOT_NUM] = '\0'; 1a774: 682b ldr r3, [r5, #0] 1a776: 2200 movs r2, #0 1a778: f803 2008 strb.w r2, [r3, r8] ext->dot_end = letter_id + LV_LABEL_DOT_NUM; 1a77c: 3703 adds r7, #3 1a77e: 812f strh r7, [r5, #8] 1a780: e601 b.n 1a386 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1a782: 2210 movs r2, #16 1a784: 2100 movs r1, #0 1a786: 4620 mov r0, r4 1a788: 4e15 ldr r6, [pc, #84] ; (1a7e0 ) 1a78a: 47b0 blx r6 1a78c: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 1a78e: 2211 movs r2, #17 1a790: 2100 movs r1, #0 1a792: 4620 mov r0, r4 1a794: 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); 1a796: 1829 adds r1, r5, r0 1a798: f8bd 0056 ldrh.w r0, [sp, #86] ; 0x56 1a79c: 4401 add r1, r0 1a79e: b209 sxth r1, r1 1a7a0: f8ad 1056 strh.w r1, [sp, #86] ; 0x56 lv_obj_set_height(label, size.y); 1a7a4: 4620 mov r0, r4 1a7a6: 4b0f ldr r3, [pc, #60] ; (1a7e4 ) 1a7a8: 4798 blx r3 1a7aa: e5ec b.n 1a386 1a7ac: 00019d55 .word 0x00019d55 1a7b0: 00011311 .word 0x00011311 1a7b4: 00019d39 .word 0x00019d39 1a7b8: 00011479 .word 0x00011479 1a7bc: 0001143d .word 0x0001143d 1a7c0: 00011389 .word 0x00011389 1a7c4: 20000060 .word 0x20000060 1a7c8: 00010049 .word 0x00010049 1a7cc: 0001a019 .word 0x0001a019 1a7d0: 0001b507 .word 0x0001b507 1a7d4: 2000005c .word 0x2000005c 1a7d8: 20000058 .word 0x20000058 1a7dc: 00019dcd .word 0x00019dcd 1a7e0: 000044bd .word 0x000044bd 1a7e4: 0000439d .word 0x0000439d 1a7e8: 20000054 .word 0x20000054 0001a7ec : { 1a7ec: b5f0 push {r4, r5, r6, r7, lr} 1a7ee: b083 sub sp, #12 1a7f0: 4606 mov r6, r0 1a7f2: 460d mov r5, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1a7f4: 4b40 ldr r3, [pc, #256] ; (1a8f8 ) 1a7f6: 4798 blx r3 1a7f8: b960 cbnz r0, 1a814 1a7fa: 4b40 ldr r3, [pc, #256] ; (1a8fc ) 1a7fc: 9300 str r3, [sp, #0] 1a7fe: 22b8 movs r2, #184 ; 0xb8 1a800: 493f ldr r1, [pc, #252] ; (1a900 ) 1a802: 2003 movs r0, #3 1a804: 4c3f ldr r4, [pc, #252] ; (1a904 ) 1a806: 47a0 blx r4 1a808: 4632 mov r2, r6 1a80a: 2300 movs r3, #0 1a80c: 483e ldr r0, [pc, #248] ; (1a908 ) 1a80e: 493f ldr r1, [pc, #252] ; (1a90c ) 1a810: 4788 blx r1 1a812: e7fe b.n 1a812 lv_obj_invalidate(label); 1a814: 4630 mov r0, r6 1a816: 4b3e ldr r3, [pc, #248] ; (1a910 ) 1a818: 4798 blx r3 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1a81a: 4630 mov r0, r6 1a81c: 4b3d ldr r3, [pc, #244] ; (1a914 ) 1a81e: 4798 blx r3 1a820: 4604 mov r4, r0 if(text == NULL) { 1a822: b305 cbz r5, 1a866 LV_ASSERT_STR(text); 1a824: 4628 mov r0, r5 1a826: 4b34 ldr r3, [pc, #208] ; (1a8f8 ) 1a828: 4798 blx r3 1a82a: b308 cbz r0, 1a870 if(ext->text == text && ext->static_txt == 0) { 1a82c: 6827 ldr r7, [r4, #0] 1a82e: 42bd cmp r5, r7 1a830: d02b beq.n 1a88a if(ext->text != NULL && ext->static_txt == 0) { 1a832: b11f cbz r7, 1a83c 1a834: 7c23 ldrb r3, [r4, #16] 1a836: f013 0f08 tst.w r3, #8 1a83a: d049 beq.n 1a8d0 size_t len = strlen(text) + 1; 1a83c: 4628 mov r0, r5 1a83e: 4b36 ldr r3, [pc, #216] ; (1a918 ) 1a840: 4798 blx r3 ext->text = lv_mem_alloc(len); 1a842: 3001 adds r0, #1 1a844: 4b35 ldr r3, [pc, #212] ; (1a91c ) 1a846: 4798 blx r3 1a848: 6020 str r0, [r4, #0] LV_ASSERT_MEM(ext->text); 1a84a: 4b2b ldr r3, [pc, #172] ; (1a8f8 ) 1a84c: 4798 blx r3 1a84e: 2800 cmp r0, #0 1a850: d044 beq.n 1a8dc if(ext->text == NULL) return; 1a852: 6820 ldr r0, [r4, #0] 1a854: b150 cbz r0, 1a86c strcpy(ext->text, text); 1a856: 4629 mov r1, r5 1a858: 4b31 ldr r3, [pc, #196] ; (1a920 ) 1a85a: 4798 blx r3 ext->static_txt = 0; 1a85c: 7c23 ldrb r3, [r4, #16] 1a85e: f36f 03c3 bfc r3, #3, #1 1a862: 7423 strb r3, [r4, #16] 1a864: e030 b.n 1a8c8 lv_label_refr_text(label); 1a866: 4630 mov r0, r6 1a868: 4b2e ldr r3, [pc, #184] ; (1a924 ) 1a86a: 4798 blx r3 } 1a86c: b003 add sp, #12 1a86e: bdf0 pop {r4, r5, r6, r7, pc} LV_ASSERT_STR(text); 1a870: 4b22 ldr r3, [pc, #136] ; (1a8fc ) 1a872: 9300 str r3, [sp, #0] 1a874: 22c4 movs r2, #196 ; 0xc4 1a876: 4922 ldr r1, [pc, #136] ; (1a900 ) 1a878: 2003 movs r0, #3 1a87a: 4c22 ldr r4, [pc, #136] ; (1a904 ) 1a87c: 47a0 blx r4 1a87e: 462a mov r2, r5 1a880: 2300 movs r3, #0 1a882: 4821 ldr r0, [pc, #132] ; (1a908 ) 1a884: 4921 ldr r1, [pc, #132] ; (1a90c ) 1a886: 4788 blx r1 1a888: e7fe b.n 1a888 if(ext->text == text && ext->static_txt == 0) { 1a88a: 7c23 ldrb r3, [r4, #16] 1a88c: f013 0f08 tst.w r3, #8 1a890: d1d4 bne.n 1a83c ext->text = lv_mem_realloc(ext->text, strlen(ext->text) + 1); 1a892: 4638 mov r0, r7 1a894: 4b20 ldr r3, [pc, #128] ; (1a918 ) 1a896: 4798 blx r3 1a898: 1c41 adds r1, r0, #1 1a89a: 4638 mov r0, r7 1a89c: 4b22 ldr r3, [pc, #136] ; (1a928 ) 1a89e: 4798 blx r3 1a8a0: 6020 str r0, [r4, #0] LV_ASSERT_MEM(ext->text); 1a8a2: 4b15 ldr r3, [pc, #84] ; (1a8f8 ) 1a8a4: 4798 blx r3 1a8a6: b960 cbnz r0, 1a8c2 1a8a8: 4b14 ldr r3, [pc, #80] ; (1a8fc ) 1a8aa: 9300 str r3, [sp, #0] 1a8ac: 22d5 movs r2, #213 ; 0xd5 1a8ae: 4914 ldr r1, [pc, #80] ; (1a900 ) 1a8b0: 2003 movs r0, #3 1a8b2: 4d14 ldr r5, [pc, #80] ; (1a904 ) 1a8b4: 47a8 blx r5 1a8b6: 6822 ldr r2, [r4, #0] 1a8b8: 2300 movs r3, #0 1a8ba: 481c ldr r0, [pc, #112] ; (1a92c ) 1a8bc: 4913 ldr r1, [pc, #76] ; (1a90c ) 1a8be: 4788 blx r1 1a8c0: e7fe b.n 1a8c0 if(ext->text == NULL) return; 1a8c2: 6823 ldr r3, [r4, #0] 1a8c4: 2b00 cmp r3, #0 1a8c6: d0d1 beq.n 1a86c lv_label_refr_text(label); 1a8c8: 4630 mov r0, r6 1a8ca: 4b16 ldr r3, [pc, #88] ; (1a924 ) 1a8cc: 4798 blx r3 1a8ce: e7cd b.n 1a86c lv_mem_free(ext->text); 1a8d0: 4638 mov r0, r7 1a8d2: 4b17 ldr r3, [pc, #92] ; (1a930 ) 1a8d4: 4798 blx r3 ext->text = NULL; 1a8d6: 2300 movs r3, #0 1a8d8: 6023 str r3, [r4, #0] 1a8da: e7af b.n 1a83c LV_ASSERT_MEM(ext->text); 1a8dc: 4b07 ldr r3, [pc, #28] ; (1a8fc ) 1a8de: 9300 str r3, [sp, #0] 1a8e0: 22ee movs r2, #238 ; 0xee 1a8e2: 4907 ldr r1, [pc, #28] ; (1a900 ) 1a8e4: 2003 movs r0, #3 1a8e6: 4d07 ldr r5, [pc, #28] ; (1a904 ) 1a8e8: 47a8 blx r5 1a8ea: 6822 ldr r2, [r4, #0] 1a8ec: 2300 movs r3, #0 1a8ee: 480f ldr r0, [pc, #60] ; (1a92c ) 1a8f0: 4906 ldr r1, [pc, #24] ; (1a90c ) 1a8f2: 4788 blx r1 1a8f4: e7fe b.n 1a8f4 1a8f6: bf00 nop 1a8f8: 00002299 .word 0x00002299 1a8fc: 00029860 .word 0x00029860 1a900: 0002997c .word 0x0002997c 1a904: 00012245 .word 0x00012245 1a908: 00024824 .word 0x00024824 1a90c: 000022a1 .word 0x000022a1 1a910: 00003309 .word 0x00003309 1a914: 00004d85 .word 0x00004d85 1a918: 0001b507 .word 0x0001b507 1a91c: 000123c5 .word 0x000123c5 1a920: 0001b4f7 .word 0x0001b4f7 1a924: 0001a2e9 .word 0x0001a2e9 1a928: 00012881 .word 0x00012881 1a92c: 00023fc0 .word 0x00023fc0 1a930: 000124ad .word 0x000124ad 0001a934 : { 1a934: b570 push {r4, r5, r6, lr} 1a936: b082 sub sp, #8 1a938: 4605 mov r5, r0 1a93a: 460e mov r6, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1a93c: 4b14 ldr r3, [pc, #80] ; (1a990 ) 1a93e: 4798 blx r3 1a940: b968 cbnz r0, 1a95e 1a942: 4b14 ldr r3, [pc, #80] ; (1a994 ) 1a944: 9300 str r3, [sp, #0] 1a946: f44f 72a6 mov.w r2, #332 ; 0x14c 1a94a: 4913 ldr r1, [pc, #76] ; (1a998 ) 1a94c: 2003 movs r0, #3 1a94e: 4c13 ldr r4, [pc, #76] ; (1a99c ) 1a950: 47a0 blx r4 1a952: 462a mov r2, r5 1a954: 2300 movs r3, #0 1a956: 4812 ldr r0, [pc, #72] ; (1a9a0 ) 1a958: 4912 ldr r1, [pc, #72] ; (1a9a4 ) 1a95a: 4788 blx r1 1a95c: e7fe b.n 1a95c lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1a95e: 4628 mov r0, r5 1a960: 4b11 ldr r3, [pc, #68] ; (1a9a8 ) 1a962: 4798 blx r3 1a964: 4604 mov r4, r0 if(ext->static_txt == 0 && ext->text != NULL) { 1a966: 7c03 ldrb r3, [r0, #16] 1a968: f013 0f08 tst.w r3, #8 1a96c: d105 bne.n 1a97a 1a96e: 6800 ldr r0, [r0, #0] 1a970: b118 cbz r0, 1a97a lv_mem_free(ext->text); 1a972: 4b0e ldr r3, [pc, #56] ; (1a9ac ) 1a974: 4798 blx r3 ext->text = NULL; 1a976: 2300 movs r3, #0 1a978: 6023 str r3, [r4, #0] if(text != NULL) { 1a97a: b126 cbz r6, 1a986 ext->static_txt = 1; 1a97c: 7c23 ldrb r3, [r4, #16] 1a97e: f043 0308 orr.w r3, r3, #8 1a982: 7423 strb r3, [r4, #16] ext->text = (char *)text; 1a984: 6026 str r6, [r4, #0] lv_label_refr_text(label); 1a986: 4628 mov r0, r5 1a988: 4b09 ldr r3, [pc, #36] ; (1a9b0 ) 1a98a: 4798 blx r3 } 1a98c: b002 add sp, #8 1a98e: bd70 pop {r4, r5, r6, pc} 1a990: 00002299 .word 0x00002299 1a994: 0002988c .word 0x0002988c 1a998: 0002997c .word 0x0002997c 1a99c: 00012245 .word 0x00012245 1a9a0: 00024824 .word 0x00024824 1a9a4: 000022a1 .word 0x000022a1 1a9a8: 00004d85 .word 0x00004d85 1a9ac: 000124ad .word 0x000124ad 1a9b0: 0001a2e9 .word 0x0001a2e9 0001a9b4 : { 1a9b4: b5f0 push {r4, r5, r6, r7, lr} 1a9b6: b083 sub sp, #12 1a9b8: 4605 mov r5, r0 1a9ba: 460f mov r7, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1a9bc: 4b22 ldr r3, [pc, #136] ; (1aa48 ) 1a9be: 4798 blx r3 1a9c0: b968 cbnz r0, 1a9de 1a9c2: 4b22 ldr r3, [pc, #136] ; (1aa4c ) 1a9c4: 9300 str r3, [sp, #0] 1a9c6: f240 1265 movw r2, #357 ; 0x165 1a9ca: 4921 ldr r1, [pc, #132] ; (1aa50 ) 1a9cc: 2003 movs r0, #3 1a9ce: 4c21 ldr r4, [pc, #132] ; (1aa54 ) 1a9d0: 47a0 blx r4 1a9d2: 462a mov r2, r5 1a9d4: 2300 movs r3, #0 1a9d6: 4820 ldr r0, [pc, #128] ; (1aa58 ) 1a9d8: 4920 ldr r1, [pc, #128] ; (1aa5c ) 1a9da: 4788 blx r1 1a9dc: e7fe b.n 1a9dc lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1a9de: 4628 mov r0, r5 1a9e0: 4b1f ldr r3, [pc, #124] ; (1aa60 ) 1a9e2: 4798 blx r3 1a9e4: 4604 mov r4, r0 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_x); 1a9e6: 491f ldr r1, [pc, #124] ; (1aa64 ) 1a9e8: 4628 mov r0, r5 1a9ea: 4e1f ldr r6, [pc, #124] ; (1aa68 ) 1a9ec: 47b0 blx r6 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_y); 1a9ee: 491f ldr r1, [pc, #124] ; (1aa6c ) 1a9f0: 4628 mov r0, r5 1a9f2: 47b0 blx r6 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 1a9f4: 491e ldr r1, [pc, #120] ; (1aa70 ) 1a9f6: 4628 mov r0, r5 1a9f8: 47b0 blx r6 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 1a9fa: 491e ldr r1, [pc, #120] ; (1aa74 ) 1a9fc: 4628 mov r0, r5 1a9fe: 47b0 blx r6 ext->offset.x = 0; 1aa00: 2300 movs r3, #0 1aa02: 81a3 strh r3, [r4, #12] ext->offset.y = 0; 1aa04: 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) 1aa06: 1efb subs r3, r7, #3 1aa08: b2db uxtb r3, r3 1aa0a: 2b02 cmp r3, #2 ext->expand = 1; 1aa0c: 7c23 ldrb r3, [r4, #16] 1aa0e: bf94 ite ls 1aa10: f043 0380 orrls.w r3, r3, #128 ; 0x80 ext->expand = 0; 1aa14: f36f 13c7 bfchi r3, #7, #1 1aa18: 7423 strb r3, [r4, #16] if(ext->long_mode == LV_LABEL_LONG_DOT && ext->dot_end != LV_LABEL_DOT_END_INV) { 1aa1a: 7c23 ldrb r3, [r4, #16] 1aa1c: f003 0307 and.w r3, r3, #7 1aa20: 2b02 cmp r3, #2 1aa22: d008 beq.n 1aa36 ext->long_mode = long_mode; 1aa24: 7c23 ldrb r3, [r4, #16] 1aa26: f367 0302 bfi r3, r7, #0, #3 1aa2a: 7423 strb r3, [r4, #16] lv_label_refr_text(label); 1aa2c: 4628 mov r0, r5 1aa2e: 4b12 ldr r3, [pc, #72] ; (1aa78 ) 1aa30: 4798 blx r3 } 1aa32: b003 add sp, #12 1aa34: bdf0 pop {r4, r5, r6, r7, pc} if(ext->long_mode == LV_LABEL_LONG_DOT && ext->dot_end != LV_LABEL_DOT_END_INV) { 1aa36: 8922 ldrh r2, [r4, #8] 1aa38: f64f 73ff movw r3, #65535 ; 0xffff 1aa3c: 429a cmp r2, r3 1aa3e: d0f1 beq.n 1aa24 lv_label_revert_dots(label); 1aa40: 4628 mov r0, r5 1aa42: 4b0e ldr r3, [pc, #56] ; (1aa7c ) 1aa44: 4798 blx r3 1aa46: e7ed b.n 1aa24 1aa48: 00002299 .word 0x00002299 1aa4c: 000298a8 .word 0x000298a8 1aa50: 0002997c .word 0x0002997c 1aa54: 00012245 .word 0x00012245 1aa58: 00024824 .word 0x00024824 1aa5c: 000022a1 .word 0x000022a1 1aa60: 00004d85 .word 0x00004d85 1aa64: 00003511 .word 0x00003511 1aa68: 00011311 .word 0x00011311 1aa6c: 00003571 .word 0x00003571 1aa70: 00019d55 .word 0x00019d55 1aa74: 00019d39 .word 0x00019d39 1aa78: 0001a2e9 .word 0x0001a2e9 1aa7c: 00019cad .word 0x00019cad 0001aa80 : { 1aa80: b530 push {r4, r5, lr} 1aa82: b083 sub sp, #12 1aa84: 4604 mov r4, r0 1aa86: 460d mov r5, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1aa88: 4b10 ldr r3, [pc, #64] ; (1aacc ) 1aa8a: 4798 blx r3 1aa8c: b968 cbnz r0, 1aaaa 1aa8e: 4b10 ldr r3, [pc, #64] ; (1aad0 ) 1aa90: 9300 str r3, [sp, #0] 1aa92: f44f 72cd mov.w r2, #410 ; 0x19a 1aa96: 490f ldr r1, [pc, #60] ; (1aad4 ) 1aa98: 2003 movs r0, #3 1aa9a: 4d0f ldr r5, [pc, #60] ; (1aad8 ) 1aa9c: 47a8 blx r5 1aa9e: 4622 mov r2, r4 1aaa0: 2300 movs r3, #0 1aaa2: 480e ldr r0, [pc, #56] ; (1aadc ) 1aaa4: 490e ldr r1, [pc, #56] ; (1aae0 ) 1aaa6: 4788 blx r1 1aaa8: e7fe b.n 1aaa8 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1aaaa: 4620 mov r0, r4 1aaac: 4b0d ldr r3, [pc, #52] ; (1aae4 ) 1aaae: 4798 blx r3 if(ext->recolor == en) return; 1aab0: 7c03 ldrb r3, [r0, #16] 1aab2: f3c3 1380 ubfx r3, r3, #6, #1 1aab6: 42ab cmp r3, r5 1aab8: d006 beq.n 1aac8 ext->recolor = en == false ? 0 : 1; 1aaba: 7c03 ldrb r3, [r0, #16] 1aabc: f365 1386 bfi r3, r5, #6, #1 1aac0: 7403 strb r3, [r0, #16] lv_label_refr_text(label); /*Refresh the text because the potential colo codes in text needs to 1aac2: 4620 mov r0, r4 1aac4: 4b08 ldr r3, [pc, #32] ; (1aae8 ) 1aac6: 4798 blx r3 } 1aac8: b003 add sp, #12 1aaca: bd30 pop {r4, r5, pc} 1aacc: 00002299 .word 0x00002299 1aad0: 000298c0 .word 0x000298c0 1aad4: 0002997c .word 0x0002997c 1aad8: 00012245 .word 0x00012245 1aadc: 00024824 .word 0x00024824 1aae0: 000022a1 .word 0x000022a1 1aae4: 00004d85 .word 0x00004d85 1aae8: 0001a2e9 .word 0x0001a2e9 0001aaec : { 1aaec: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 1aaf0: b082 sub sp, #8 1aaf2: 460f mov r7, r1 lv_obj_t * new_label = lv_obj_create(par, copy); 1aaf4: 4b79 ldr r3, [pc, #484] ; (1acdc ) 1aaf6: 4798 blx r3 1aaf8: 4604 mov r4, r0 LV_ASSERT_MEM(new_label); 1aafa: 4b79 ldr r3, [pc, #484] ; (1ace0 ) 1aafc: 4798 blx r3 1aafe: b1e8 cbz r0, 1ab3c if(new_label == NULL) return NULL; 1ab00: 2c00 cmp r4, #0 1ab02: f000 809a beq.w 1ac3a if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(new_label); 1ab06: 4b77 ldr r3, [pc, #476] ; (1ace4 ) 1ab08: 681b ldr r3, [r3, #0] 1ab0a: b323 cbz r3, 1ab56 lv_obj_allocate_ext_attr(new_label, sizeof(lv_label_ext_t)); 1ab0c: 2114 movs r1, #20 1ab0e: 4620 mov r0, r4 1ab10: 4b75 ldr r3, [pc, #468] ; (1ace8 ) 1ab12: 4798 blx r3 lv_label_ext_t * ext = lv_obj_get_ext_attr(new_label); 1ab14: 4620 mov r0, r4 1ab16: 4b75 ldr r3, [pc, #468] ; (1acec ) 1ab18: 4798 blx r3 1ab1a: 4605 mov r5, r0 LV_ASSERT_MEM(ext); 1ab1c: 4b70 ldr r3, [pc, #448] ; (1ace0 ) 1ab1e: 4798 blx r3 1ab20: b9f8 cbnz r0, 1ab62 1ab22: 4b73 ldr r3, [pc, #460] ; (1acf0 ) 1ab24: 9300 str r3, [sp, #0] 1ab26: 225d movs r2, #93 ; 0x5d 1ab28: 4972 ldr r1, [pc, #456] ; (1acf4 ) 1ab2a: 2003 movs r0, #3 1ab2c: 4c72 ldr r4, [pc, #456] ; (1acf8 ) 1ab2e: 47a0 blx r4 1ab30: 462a mov r2, r5 1ab32: 2300 movs r3, #0 1ab34: 4871 ldr r0, [pc, #452] ; (1acfc ) 1ab36: 4972 ldr r1, [pc, #456] ; (1ad00 ) 1ab38: 4788 blx r1 1ab3a: e7fe b.n 1ab3a LV_ASSERT_MEM(new_label); 1ab3c: 4b6c ldr r3, [pc, #432] ; (1acf0 ) 1ab3e: 9300 str r3, [sp, #0] 1ab40: 2254 movs r2, #84 ; 0x54 1ab42: 496c ldr r1, [pc, #432] ; (1acf4 ) 1ab44: 2003 movs r0, #3 1ab46: 4d6c ldr r5, [pc, #432] ; (1acf8 ) 1ab48: 47a8 blx r5 1ab4a: 4622 mov r2, r4 1ab4c: 2300 movs r3, #0 1ab4e: 486b ldr r0, [pc, #428] ; (1acfc ) 1ab50: 496b ldr r1, [pc, #428] ; (1ad00 ) 1ab52: 4788 blx r1 1ab54: e7fe b.n 1ab54 if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(new_label); 1ab56: 4620 mov r0, r4 1ab58: 4b6a ldr r3, [pc, #424] ; (1ad04 ) 1ab5a: 4798 blx r3 1ab5c: 4b61 ldr r3, [pc, #388] ; (1ace4 ) 1ab5e: 6018 str r0, [r3, #0] 1ab60: e7d4 b.n 1ab0c if(ext == NULL) { 1ab62: 2d00 cmp r5, #0 1ab64: d06d beq.n 1ac42 ext->text = NULL; 1ab66: 2300 movs r3, #0 1ab68: 602b str r3, [r5, #0] ext->static_txt = 0; 1ab6a: 7c2a ldrb r2, [r5, #16] ext->align = LV_LABEL_ALIGN_AUTO; 1ab6c: f002 02b7 and.w r2, r2, #183 ; 0xb7 ext->dot_end = LV_LABEL_DOT_END_INV; 1ab70: f64f 71ff movw r1, #65535 ; 0xffff 1ab74: 8129 strh r1, [r5, #8] ext->long_mode = LV_LABEL_LONG_EXPAND; 1ab76: f042 0230 orr.w r2, r2, #48 ; 0x30 1ab7a: f363 0202 bfi r2, r3, #0, #3 1ab7e: 742a strb r2, [r5, #16] ext->anim_speed = LV_LABEL_DEF_SCROLL_SPEED; 1ab80: 2219 movs r2, #25 1ab82: 816a strh r2, [r5, #10] ext->offset.x = 0; 1ab84: 81ab strh r3, [r5, #12] ext->offset.y = 0; 1ab86: 81eb strh r3, [r5, #14] ext->dot.tmp_ptr = NULL; 1ab88: 606b str r3, [r5, #4] ext->dot_tmp_alloc = 0; 1ab8a: 7c6a ldrb r2, [r5, #17] 1ab8c: f363 0200 bfi r2, r3, #0, #1 1ab90: 746a strb r2, [r5, #17] lv_obj_set_design_cb(new_label, lv_label_design); 1ab92: 495d ldr r1, [pc, #372] ; (1ad08 ) 1ab94: 4620 mov r0, r4 1ab96: 4b5d ldr r3, [pc, #372] ; (1ad0c ) 1ab98: 4798 blx r3 lv_obj_set_signal_cb(new_label, lv_label_signal); 1ab9a: 495d ldr r1, [pc, #372] ; (1ad10 ) 1ab9c: 4620 mov r0, r4 1ab9e: 4b5d ldr r3, [pc, #372] ; (1ad14 ) 1aba0: 4798 blx r3 if(copy == NULL) { 1aba2: 2f00 cmp r7, #0 1aba4: d052 beq.n 1ac4c lv_label_ext_t * copy_ext = lv_obj_get_ext_attr(copy); 1aba6: 4638 mov r0, r7 1aba8: 4b50 ldr r3, [pc, #320] ; (1acec ) 1abaa: 4798 blx r3 1abac: 4606 mov r6, r0 lv_label_set_long_mode(new_label, lv_label_get_long_mode(copy)); 1abae: 4638 mov r0, r7 1abb0: 4b59 ldr r3, [pc, #356] ; (1ad18 ) 1abb2: 4798 blx r3 1abb4: 4601 mov r1, r0 1abb6: 4620 mov r0, r4 1abb8: 4b58 ldr r3, [pc, #352] ; (1ad1c ) 1abba: 4798 blx r3 lv_label_set_recolor(new_label, lv_label_get_recolor(copy)); 1abbc: 4638 mov r0, r7 1abbe: 4b58 ldr r3, [pc, #352] ; (1ad20 ) 1abc0: 4798 blx r3 1abc2: 4601 mov r1, r0 1abc4: 4620 mov r0, r4 1abc6: 4b57 ldr r3, [pc, #348] ; (1ad24 ) 1abc8: 4798 blx r3 lv_label_set_align(new_label, lv_label_get_align(copy)); 1abca: 4638 mov r0, r7 1abcc: 4b56 ldr r3, [pc, #344] ; (1ad28 ) 1abce: 4798 blx r3 1abd0: 4601 mov r1, r0 1abd2: 4620 mov r0, r4 1abd4: 4b55 ldr r3, [pc, #340] ; (1ad2c ) 1abd6: 4798 blx r3 if(copy_ext->static_txt == 0) 1abd8: 7c33 ldrb r3, [r6, #16] 1abda: f013 0f08 tst.w r3, #8 1abde: d146 bne.n 1ac6e lv_label_set_text(new_label, lv_label_get_text(copy)); 1abe0: 4638 mov r0, r7 1abe2: 4b53 ldr r3, [pc, #332] ; (1ad30 ) 1abe4: 4798 blx r3 1abe6: 4601 mov r1, r0 1abe8: 4620 mov r0, r4 1abea: 4b52 ldr r3, [pc, #328] ; (1ad34 ) 1abec: 4798 blx r3 if(copy_ext->long_mode == LV_LABEL_LONG_DOT) { 1abee: 7c33 ldrb r3, [r6, #16] 1abf0: f003 0307 and.w r3, r3, #7 1abf4: 2b02 cmp r3, #2 1abf6: d042 beq.n 1ac7e if(copy_ext->dot_tmp_alloc && copy_ext->dot.tmp_ptr) { 1abf8: 7c73 ldrb r3, [r6, #17] 1abfa: f013 0f01 tst.w r3, #1 1abfe: d064 beq.n 1acca 1ac00: 6870 ldr r0, [r6, #4] 1ac02: 2800 cmp r0, #0 1ac04: d061 beq.n 1acca uint16_t len = (uint16_t)strlen(copy_ext->dot.tmp_ptr); 1ac06: 4b4c ldr r3, [pc, #304] ; (1ad38 ) 1ac08: 4798 blx r3 lv_label_set_dot_tmp(new_label, ext->dot.tmp_ptr, len); 1ac0a: b282 uxth r2, r0 1ac0c: 6869 ldr r1, [r5, #4] 1ac0e: 4620 mov r0, r4 1ac10: 4b4a ldr r3, [pc, #296] ; (1ad3c ) 1ac12: 4798 blx r3 ext->dot_tmp_alloc = copy_ext->dot_tmp_alloc; 1ac14: 7c72 ldrb r2, [r6, #17] 1ac16: 7c6b ldrb r3, [r5, #17] 1ac18: f362 0300 bfi r3, r2, #0, #1 1ac1c: 746b strb r3, [r5, #17] ext->dot_end = copy_ext->dot_end; 1ac1e: 8933 ldrh r3, [r6, #8] 1ac20: 812b strh r3, [r5, #8] lv_obj_refresh_style(new_label, LV_STYLE_PROP_ALL); 1ac22: 21ff movs r1, #255 ; 0xff 1ac24: 4620 mov r0, r4 1ac26: 4b46 ldr r3, [pc, #280] ; (1ad40 ) 1ac28: 4798 blx r3 LV_LOG_INFO("label created"); 1ac2a: 4b46 ldr r3, [pc, #280] ; (1ad44 ) 1ac2c: 9300 str r3, [sp, #0] 1ac2e: 4b30 ldr r3, [pc, #192] ; (1acf0 ) 1ac30: 22a8 movs r2, #168 ; 0xa8 1ac32: 4930 ldr r1, [pc, #192] ; (1acf4 ) 1ac34: 2001 movs r0, #1 1ac36: 4d30 ldr r5, [pc, #192] ; (1acf8 ) 1ac38: 47a8 blx r5 } 1ac3a: 4620 mov r0, r4 1ac3c: b002 add sp, #8 1ac3e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} lv_obj_del(new_label); 1ac42: 4620 mov r0, r4 1ac44: 4b40 ldr r3, [pc, #256] ; (1ad48 ) 1ac46: 4798 blx r3 return NULL; 1ac48: 2400 movs r4, #0 1ac4a: e7f6 b.n 1ac3a lv_theme_apply(new_label, LV_THEME_LABEL); 1ac4c: 2112 movs r1, #18 1ac4e: 4620 mov r0, r4 1ac50: 4b3e ldr r3, [pc, #248] ; (1ad4c ) 1ac52: 4798 blx r3 lv_obj_set_click(new_label, false); 1ac54: 2100 movs r1, #0 1ac56: 4620 mov r0, r4 1ac58: 4b3d ldr r3, [pc, #244] ; (1ad50 ) 1ac5a: 4798 blx r3 lv_label_set_long_mode(new_label, LV_LABEL_LONG_EXPAND); 1ac5c: 2100 movs r1, #0 1ac5e: 4620 mov r0, r4 1ac60: 4b2e ldr r3, [pc, #184] ; (1ad1c ) 1ac62: 4798 blx r3 lv_label_set_text(new_label, "Text"); 1ac64: 493b ldr r1, [pc, #236] ; (1ad54 ) 1ac66: 4620 mov r0, r4 1ac68: 4b32 ldr r3, [pc, #200] ; (1ad34 ) 1ac6a: 4798 blx r3 1ac6c: e7dd b.n 1ac2a lv_label_set_text_static(new_label, lv_label_get_text(copy)); 1ac6e: 4638 mov r0, r7 1ac70: 4b2f ldr r3, [pc, #188] ; (1ad30 ) 1ac72: 4798 blx r3 1ac74: 4601 mov r1, r0 1ac76: 4620 mov r0, r4 1ac78: 4b37 ldr r3, [pc, #220] ; (1ad58 ) 1ac7a: 4798 blx r3 1ac7c: e7b7 b.n 1abee ext->text = lv_mem_realloc(ext->text, _lv_mem_get_size(copy_ext->text)); 1ac7e: 682f ldr r7, [r5, #0] 1ac80: 6830 ldr r0, [r6, #0] 1ac82: 4b36 ldr r3, [pc, #216] ; (1ad5c ) 1ac84: 4798 blx r3 1ac86: 4601 mov r1, r0 1ac88: 4638 mov r0, r7 1ac8a: 4b35 ldr r3, [pc, #212] ; (1ad60 ) 1ac8c: 4798 blx r3 1ac8e: 6028 str r0, [r5, #0] LV_ASSERT_MEM(ext->text); 1ac90: 4b13 ldr r3, [pc, #76] ; (1ace0 ) 1ac92: 4798 blx r3 1ac94: b960 cbnz r0, 1acb0 1ac96: 4b16 ldr r3, [pc, #88] ; (1acf0 ) 1ac98: 9300 str r3, [sp, #0] 1ac9a: 2295 movs r2, #149 ; 0x95 1ac9c: 4915 ldr r1, [pc, #84] ; (1acf4 ) 1ac9e: 2003 movs r0, #3 1aca0: 4c15 ldr r4, [pc, #84] ; (1acf8 ) 1aca2: 47a0 blx r4 1aca4: 682a ldr r2, [r5, #0] 1aca6: 2300 movs r3, #0 1aca8: 4814 ldr r0, [pc, #80] ; (1acfc ) 1acaa: 4915 ldr r1, [pc, #84] ; (1ad00 ) 1acac: 4788 blx r1 1acae: e7fe b.n 1acae if(ext->text == NULL) return NULL; 1acb0: 682f ldr r7, [r5, #0] 1acb2: b187 cbz r7, 1acd6 _lv_memcpy(ext->text, copy_ext->text, _lv_mem_get_size(copy_ext->text)); 1acb4: f8d6 8000 ldr.w r8, [r6] 1acb8: 4640 mov r0, r8 1acba: 4b28 ldr r3, [pc, #160] ; (1ad5c ) 1acbc: 4798 blx r3 1acbe: 4602 mov r2, r0 1acc0: 4641 mov r1, r8 1acc2: 4638 mov r0, r7 1acc4: 4b27 ldr r3, [pc, #156] ; (1ad64 ) 1acc6: 4798 blx r3 1acc8: e796 b.n 1abf8 _lv_memcpy(ext->dot.tmp, copy_ext->dot.tmp, sizeof(ext->dot.tmp)); 1acca: 2204 movs r2, #4 1accc: 18b1 adds r1, r6, r2 1acce: 18a8 adds r0, r5, r2 1acd0: 4b24 ldr r3, [pc, #144] ; (1ad64 ) 1acd2: 4798 blx r3 1acd4: e79e b.n 1ac14 if(ext->text == NULL) return NULL; 1acd6: 2400 movs r4, #0 1acd8: e7af b.n 1ac3a 1acda: bf00 nop 1acdc: 00003e0d .word 0x00003e0d 1ace0: 00002299 .word 0x00002299 1ace4: 20006c00 .word 0x20006c00 1ace8: 00002bb9 .word 0x00002bb9 1acec: 00004d85 .word 0x00004d85 1acf0: 000298d8 .word 0x000298d8 1acf4: 0002997c .word 0x0002997c 1acf8: 00012245 .word 0x00012245 1acfc: 00023fc0 .word 0x00023fc0 1ad00: 000022a1 .word 0x000022a1 1ad04: 00004d3d .word 0x00004d3d 1ad08: 0001aee9 .word 0x0001aee9 1ad0c: 00002b71 .word 0x00002b71 1ad10: 0001ad69 .word 0x0001ad69 1ad14: 00002b15 .word 0x00002b15 1ad18: 00019f15 .word 0x00019f15 1ad1c: 0001a9b5 .word 0x0001a9b5 1ad20: 00019fc5 .word 0x00019fc5 1ad24: 0001aa81 .word 0x0001aa81 1ad28: 00019f69 .word 0x00019f69 1ad2c: 00019e59 .word 0x00019e59 1ad30: 00019ec5 .word 0x00019ec5 1ad34: 0001a7ed .word 0x0001a7ed 1ad38: 0001b507 .word 0x0001b507 1ad3c: 00019dcd .word 0x00019dcd 1ad40: 00003a81 .word 0x00003a81 1ad44: 000299e0 .word 0x000299e0 1ad48: 00004f4d .word 0x00004f4d 1ad4c: 000141d1 .word 0x000141d1 1ad50: 00002989 .word 0x00002989 1ad54: 000299d8 .word 0x000299d8 1ad58: 0001a935 .word 0x0001a935 1ad5c: 00012539 .word 0x00012539 1ad60: 00012881 .word 0x00012881 1ad64: 0001263d .word 0x0001263d 0001ad68 : { 1ad68: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 1ad6c: 4607 mov r7, r0 1ad6e: 4615 mov r5, r2 if(sign == LV_SIGNAL_GET_STYLE) { 1ad70: 2908 cmp r1, #8 1ad72: d015 beq.n 1ada0 1ad74: 460c mov r4, r1 res = ancestor_signal(label, sign, param); 1ad76: 4b30 ldr r3, [pc, #192] ; (1ae38 ) 1ad78: 681b ldr r3, [r3, #0] 1ad7a: 4798 blx r3 1ad7c: 4606 mov r6, r0 if(res != LV_RES_OK) return res; 1ad7e: 2801 cmp r0, #1 1ad80: d115 bne.n 1adae if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 1ad82: 2c07 cmp r4, #7 1ad84: d020 beq.n 1adc8 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1ad86: 4638 mov r0, r7 1ad88: 4b2c ldr r3, [pc, #176] ; (1ae3c ) 1ad8a: 4798 blx r3 1ad8c: 4680 mov r8, r0 if(sign == LV_SIGNAL_CLEANUP) { 1ad8e: bb44 cbnz r4, 1ade2 if(ext->static_txt == 0) { 1ad90: 7c03 ldrb r3, [r0, #16] 1ad92: f013 0f08 tst.w r3, #8 1ad96: d01d beq.n 1add4 lv_label_dot_tmp_free(label); 1ad98: 4638 mov r0, r7 1ad9a: 4b29 ldr r3, [pc, #164] ; (1ae40 ) 1ad9c: 4798 blx r3 1ad9e: e006 b.n 1adae switch(type) { 1ada0: 7813 ldrb r3, [r2, #0] 1ada2: b93b cbnz r3, 1adb4 style_dsc_p = &label->style_list; 1ada4: f100 0328 add.w r3, r0, #40 ; 0x28 info->result = lv_label_get_style(label, info->part); 1ada8: 606b str r3, [r5, #4] if(info->result != NULL) return LV_RES_OK; 1adaa: 2601 movs r6, #1 1adac: b123 cbz r3, 1adb8 } 1adae: 4630 mov r0, r6 1adb0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} style_dsc_p = NULL; 1adb4: 2300 movs r3, #0 1adb6: e7f7 b.n 1ada8 else return ancestor_signal(label, sign, param); 1adb8: 4b1f ldr r3, [pc, #124] ; (1ae38 ) 1adba: 681b ldr r3, [r3, #0] 1adbc: 462a mov r2, r5 1adbe: 2108 movs r1, #8 1adc0: 4638 mov r0, r7 1adc2: 4798 blx r3 1adc4: 4606 mov r6, r0 1adc6: e7f2 b.n 1adae if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 1adc8: 491e ldr r1, [pc, #120] ; (1ae44 ) 1adca: 4628 mov r0, r5 1adcc: 4b1e ldr r3, [pc, #120] ; (1ae48 ) 1adce: 4798 blx r3 1add0: 4606 mov r6, r0 1add2: e7ec b.n 1adae lv_mem_free(ext->text); 1add4: 6800 ldr r0, [r0, #0] 1add6: 4b1d ldr r3, [pc, #116] ; (1ae4c ) 1add8: 4798 blx r3 ext->text = NULL; 1adda: 2300 movs r3, #0 1addc: f8c8 3000 str.w r3, [r8] 1ade0: e7da b.n 1ad98 else if(sign == LV_SIGNAL_STYLE_CHG) { 1ade2: 2c04 cmp r4, #4 1ade4: d014 beq.n 1ae10 else if(sign == LV_SIGNAL_COORD_CHG) { 1ade6: 2c02 cmp r4, #2 1ade8: d1e1 bne.n 1adae return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1adea: 88aa ldrh r2, [r5, #4] 1adec: 3201 adds r2, #1 1adee: 882b ldrh r3, [r5, #0] 1adf0: 1ad2 subs r2, r2, r3 1adf2: 8abb ldrh r3, [r7, #20] 1adf4: 3301 adds r3, #1 1adf6: 8a39 ldrh r1, [r7, #16] 1adf8: 1a5b subs r3, r3, r1 if(lv_area_get_width(&label->coords) != lv_area_get_width(param) || 1adfa: b292 uxth r2, r2 1adfc: b29b uxth r3, r3 1adfe: 429a cmp r2, r3 1ae00: d00d beq.n 1ae1e lv_label_revert_dots(label); 1ae02: 4638 mov r0, r7 1ae04: 4b12 ldr r3, [pc, #72] ; (1ae50 ) 1ae06: 4798 blx r3 lv_label_refr_text(label); 1ae08: 4638 mov r0, r7 1ae0a: 4b12 ldr r3, [pc, #72] ; (1ae54 ) 1ae0c: 4798 blx r3 1ae0e: e7ce b.n 1adae lv_label_revert_dots(label); 1ae10: 4638 mov r0, r7 1ae12: 4b0f ldr r3, [pc, #60] ; (1ae50 ) 1ae14: 4798 blx r3 lv_label_refr_text(label); 1ae16: 4638 mov r0, r7 1ae18: 4b0e ldr r3, [pc, #56] ; (1ae54 ) 1ae1a: 4798 blx r3 1ae1c: e7c7 b.n 1adae return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1ae1e: 88ea ldrh r2, [r5, #6] 1ae20: 3201 adds r2, #1 1ae22: 886b ldrh r3, [r5, #2] 1ae24: 1ad2 subs r2, r2, r3 1ae26: 8afb ldrh r3, [r7, #22] 1ae28: 3301 adds r3, #1 1ae2a: 8a79 ldrh r1, [r7, #18] 1ae2c: 1a5b subs r3, r3, r1 if(lv_area_get_width(&label->coords) != lv_area_get_width(param) || 1ae2e: b292 uxth r2, r2 1ae30: b29b uxth r3, r3 1ae32: 429a cmp r2, r3 1ae34: d1e5 bne.n 1ae02 1ae36: e7ba b.n 1adae 1ae38: 20006c00 .word 0x20006c00 1ae3c: 00004d85 .word 0x00004d85 1ae40: 00019c7d .word 0x00019c7d 1ae44: 000299f0 .word 0x000299f0 1ae48: 0000507d .word 0x0000507d 1ae4c: 000124ad .word 0x000124ad 1ae50: 00019cad .word 0x00019cad 1ae54: 0001a2e9 .word 0x0001a2e9 0001ae58 : { 1ae58: b530 push {r4, r5, lr} 1ae5a: b083 sub sp, #12 1ae5c: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1ae5e: 4b0a ldr r3, [pc, #40] ; (1ae88 ) 1ae60: 4798 blx r3 1ae62: b118 cbz r0, 1ae6c } 1ae64: f64f 70ff movw r0, #65535 ; 0xffff 1ae68: b003 add sp, #12 1ae6a: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1ae6c: 4b07 ldr r3, [pc, #28] ; (1ae8c ) 1ae6e: 9300 str r3, [sp, #0] 1ae70: f240 321d movw r2, #797 ; 0x31d 1ae74: 4906 ldr r1, [pc, #24] ; (1ae90 ) 1ae76: 2003 movs r0, #3 1ae78: 4d06 ldr r5, [pc, #24] ; (1ae94 ) 1ae7a: 47a8 blx r5 1ae7c: 4622 mov r2, r4 1ae7e: 2300 movs r3, #0 1ae80: 4805 ldr r0, [pc, #20] ; (1ae98 ) 1ae82: 4906 ldr r1, [pc, #24] ; (1ae9c ) 1ae84: 4788 blx r1 1ae86: e7fe b.n 1ae86 1ae88: 00002299 .word 0x00002299 1ae8c: 00029900 .word 0x00029900 1ae90: 0002997c .word 0x0002997c 1ae94: 00012245 .word 0x00012245 1ae98: 00024824 .word 0x00024824 1ae9c: 000022a1 .word 0x000022a1 0001aea0 : { 1aea0: b530 push {r4, r5, lr} 1aea2: b083 sub sp, #12 1aea4: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1aea6: 4b0a ldr r3, [pc, #40] ; (1aed0 ) 1aea8: 4798 blx r3 1aeaa: b118 cbz r0, 1aeb4 } 1aeac: f64f 70ff movw r0, #65535 ; 0xffff 1aeb0: b003 add sp, #12 1aeb2: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1aeb4: 4b07 ldr r3, [pc, #28] ; (1aed4 ) 1aeb6: 9300 str r3, [sp, #0] 1aeb8: f44f 724c mov.w r2, #816 ; 0x330 1aebc: 4906 ldr r1, [pc, #24] ; (1aed8 ) 1aebe: 2003 movs r0, #3 1aec0: 4d06 ldr r5, [pc, #24] ; (1aedc ) 1aec2: 47a8 blx r5 1aec4: 4622 mov r2, r4 1aec6: 2300 movs r3, #0 1aec8: 4805 ldr r0, [pc, #20] ; (1aee0 ) 1aeca: 4906 ldr r1, [pc, #24] ; (1aee4 ) 1aecc: 4788 blx r1 1aece: e7fe b.n 1aece 1aed0: 00002299 .word 0x00002299 1aed4: 0002991c .word 0x0002991c 1aed8: 0002997c .word 0x0002997c 1aedc: 00012245 .word 0x00012245 1aee0: 00024824 .word 0x00024824 1aee4: 000022a1 .word 0x000022a1 0001aee8 : if(mode == LV_DESIGN_COVER_CHK) 1aee8: 2a02 cmp r2, #2 1aeea: f000 811e beq.w 1b12a else if(mode == LV_DESIGN_DRAW_MAIN) { 1aeee: b10a cbz r2, 1aef4 return LV_DESIGN_RES_OK; 1aef0: 2000 movs r0, #0 1aef2: 4770 bx lr { 1aef4: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 1aef8: b0a9 sub sp, #164 ; 0xa4 1aefa: 460f mov r7, r1 1aefc: 4605 mov r5, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1aefe: 4b8c ldr r3, [pc, #560] ; (1b130 ) 1af00: 4798 blx r3 1af02: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 1af04: 2204 movs r2, #4 1af06: 2100 movs r1, #0 1af08: 4628 mov r0, r5 1af0a: 4c8a ldr r4, [pc, #552] ; (1b134 ) 1af0c: 47a0 blx r4 1af0e: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 1af10: 2205 movs r2, #5 1af12: 2100 movs r1, #0 1af14: 4628 mov r0, r5 1af16: 47a0 blx r4 1af18: f105 030f add.w r3, r5, #15 1af1c: f105 0617 add.w r6, r5, #23 uint8_t * d8 = (uint8_t *)dst; 1af20: aa06 add r2, sp, #24 *d8 = *s8; 1af22: f813 4f01 ldrb.w r4, [r3, #1]! 1af26: f802 4b01 strb.w r4, [r2], #1 while(len) { 1af2a: 42b3 cmp r3, r6 1af2c: d1f9 bne.n 1af22 bg_coords.x1 -= w; 1af2e: fa1f f989 uxth.w r9, r9 1af32: f8bd 3018 ldrh.w r3, [sp, #24] 1af36: eba3 0309 sub.w r3, r3, r9 1af3a: f8ad 3018 strh.w r3, [sp, #24] bg_coords.x2 += w; 1af3e: f8bd 301c ldrh.w r3, [sp, #28] 1af42: 4499 add r9, r3 1af44: f8ad 901c strh.w r9, [sp, #28] bg_coords.y1 -= h; 1af48: b280 uxth r0, r0 1af4a: f8bd 301a ldrh.w r3, [sp, #26] 1af4e: 1a1b subs r3, r3, r0 1af50: f8ad 301a strh.w r3, [sp, #26] bg_coords.y2 += h; 1af54: f8bd 301e ldrh.w r3, [sp, #30] 1af58: 4418 add r0, r3 1af5a: f8ad 001e strh.w r0, [sp, #30] lv_draw_rect_dsc_init(&draw_rect_dsc); 1af5e: a813 add r0, sp, #76 ; 0x4c 1af60: 4b75 ldr r3, [pc, #468] ; (1b138 ) 1af62: 4798 blx r3 lv_obj_init_draw_rect_dsc(label, LV_LABEL_PART_MAIN, &draw_rect_dsc); 1af64: aa13 add r2, sp, #76 ; 0x4c 1af66: 2100 movs r1, #0 1af68: 4628 mov r0, r5 1af6a: 4b74 ldr r3, [pc, #464] ; (1b13c ) 1af6c: 4798 blx r3 lv_draw_rect(&bg_coords, clip_area, &draw_rect_dsc); 1af6e: aa13 add r2, sp, #76 ; 0x4c 1af70: 4639 mov r1, r7 1af72: a806 add r0, sp, #24 1af74: 4b72 ldr r3, [pc, #456] ; (1b140 ) 1af76: 4798 blx r3 get_txt_coords(label, &txt_coords); 1af78: a908 add r1, sp, #32 1af7a: 4628 mov r0, r5 1af7c: 4b71 ldr r3, [pc, #452] ; (1b144 ) 1af7e: 4798 blx r3 bool is_common = _lv_area_intersect(&txt_clip, clip_area, &txt_coords); 1af80: aa08 add r2, sp, #32 1af82: 4639 mov r1, r7 1af84: a80a add r0, sp, #40 ; 0x28 1af86: 4b70 ldr r3, [pc, #448] ; (1b148 ) 1af88: 4798 blx r3 if(!is_common) return LV_DESIGN_RES_OK; 1af8a: b910 cbnz r0, 1af92 } 1af8c: b029 add sp, #164 ; 0xa4 1af8e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} lv_label_align_t align = lv_label_get_align(label); 1af92: 4628 mov r0, r5 1af94: 4b6d ldr r3, [pc, #436] ; (1b14c ) 1af96: 4798 blx r3 if(ext->recolor != 0) flag |= LV_TXT_FLAG_RECOLOR; 1af98: f898 3010 ldrb.w r3, [r8, #16] lv_txt_flag_t flag = LV_TXT_FLAG_NONE; 1af9c: f3c3 1480 ubfx r4, r3, #6, #1 if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND; 1afa0: f013 0f80 tst.w r3, #128 ; 0x80 1afa4: bf18 it ne 1afa6: f044 0402 orrne.w r4, r4, #2 if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT; 1afaa: f013 0f07 tst.w r3, #7 1afae: bf08 it eq 1afb0: f044 0410 orreq.w r4, r4, #16 if(align == LV_LABEL_ALIGN_CENTER) flag |= LV_TXT_FLAG_CENTER; 1afb4: 2801 cmp r0, #1 1afb6: d038 beq.n 1b02a if(align == LV_LABEL_ALIGN_RIGHT) flag |= LV_TXT_FLAG_RIGHT; 1afb8: 2802 cmp r0, #2 1afba: bf08 it eq 1afbc: f044 0408 orreq.w r4, r4, #8 lv_draw_label_dsc_init(&label_draw_dsc); 1afc0: a80c add r0, sp, #48 ; 0x30 1afc2: 4b63 ldr r3, [pc, #396] ; (1b150 ) 1afc4: 4798 blx r3 label_draw_dsc.sel_start = lv_label_get_text_sel_start(label); 1afc6: 4628 mov r0, r5 1afc8: 4b62 ldr r3, [pc, #392] ; (1b154 ) 1afca: 4798 blx r3 1afcc: f8ad 003e strh.w r0, [sp, #62] ; 0x3e label_draw_dsc.sel_end = lv_label_get_text_sel_end(label); 1afd0: 4628 mov r0, r5 1afd2: 4b61 ldr r3, [pc, #388] ; (1b158 ) 1afd4: 4798 blx r3 1afd6: f8ad 0040 strh.w r0, [sp, #64] ; 0x40 label_draw_dsc.ofs_x = ext->offset.x; 1afda: f9b8 300c ldrsh.w r3, [r8, #12] 1afde: f8ad 3042 strh.w r3, [sp, #66] ; 0x42 label_draw_dsc.ofs_y = ext->offset.y; 1afe2: f9b8 300e ldrsh.w r3, [r8, #14] 1afe6: f8ad 3044 strh.w r3, [sp, #68] ; 0x44 label_draw_dsc.flag = flag; 1afea: f88d 4047 strb.w r4, [sp, #71] ; 0x47 lv_obj_init_draw_label_dsc(label, LV_LABEL_PART_MAIN, &label_draw_dsc); 1afee: aa0c add r2, sp, #48 ; 0x30 1aff0: 2100 movs r1, #0 1aff2: 4628 mov r0, r5 1aff4: 4b59 ldr r3, [pc, #356] ; (1b15c ) 1aff6: 4798 blx r3 if((ext->long_mode == LV_LABEL_LONG_SROLL || ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) && 1aff8: f898 2010 ldrb.w r2, [r8, #16] 1affc: f002 0307 and.w r3, r2, #7 1b000: 3b03 subs r3, #3 1b002: b2db uxtb r3, r3 1b004: 2b01 cmp r3, #1 1b006: d913 bls.n 1b030 lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 1b008: f8d8 3000 ldr.w r3, [r8] 1b00c: 2200 movs r2, #0 1b00e: 9200 str r2, [sp, #0] 1b010: aa0c add r2, sp, #48 ; 0x30 1b012: a90a add r1, sp, #40 ; 0x28 1b014: a808 add r0, sp, #32 1b016: 4d52 ldr r5, [pc, #328] ; (1b160 ) 1b018: 47a8 blx r5 if(ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) { 1b01a: f898 3010 ldrb.w r3, [r8, #16] 1b01e: f003 0307 and.w r3, r3, #7 1b022: 2b04 cmp r3, #4 1b024: d02b beq.n 1b07e return LV_DESIGN_RES_OK; 1b026: 2000 movs r0, #0 1b028: e7b0 b.n 1af8c if(align == LV_LABEL_ALIGN_CENTER) flag |= LV_TXT_FLAG_CENTER; 1b02a: f044 0404 orr.w r4, r4, #4 1b02e: e7c7 b.n 1afc0 (ext->align == LV_LABEL_ALIGN_CENTER || ext->align == LV_LABEL_ALIGN_RIGHT)) { 1b030: f002 0230 and.w r2, r2, #48 ; 0x30 if((ext->long_mode == LV_LABEL_LONG_SROLL || ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) && 1b034: 2a10 cmp r2, #16 1b036: d001 beq.n 1b03c (ext->align == LV_LABEL_ALIGN_CENTER || ext->align == LV_LABEL_ALIGN_RIGHT)) { 1b038: 2a20 cmp r2, #32 1b03a: d1e5 bne.n 1b008 _lv_txt_get_size(&size, ext->text, label_draw_dsc.font, label_draw_dsc.letter_space, label_draw_dsc.line_space, 1b03c: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 1b040: f8d8 1000 ldr.w r1, [r8] 1b044: 9402 str r4, [sp, #8] 1b046: f647 4218 movw r2, #31768 ; 0x7c18 1b04a: 9201 str r2, [sp, #4] 1b04c: f9bd 203a ldrsh.w r2, [sp, #58] ; 0x3a 1b050: 9200 str r2, [sp, #0] 1b052: 9a0d ldr r2, [sp, #52] ; 0x34 1b054: a805 add r0, sp, #20 1b056: 4d43 ldr r5, [pc, #268] ; (1b164 ) 1b058: 47a8 blx r5 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1b05a: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 1b05e: 3301 adds r3, #1 1b060: f8bd 2020 ldrh.w r2, [sp, #32] 1b064: 1a9b subs r3, r3, r2 if(size.x > lv_area_get_width(&txt_coords)) { 1b066: f9bd 2014 ldrsh.w r2, [sp, #20] 1b06a: b21b sxth r3, r3 1b06c: 429a cmp r2, r3 1b06e: ddcb ble.n 1b008 label_draw_dsc.flag &= ~LV_TXT_FLAG_CENTER; 1b070: f89d 3047 ldrb.w r3, [sp, #71] ; 0x47 1b074: f023 030c bic.w r3, r3, #12 1b078: f88d 3047 strb.w r3, [sp, #71] ; 0x47 1b07c: e7c4 b.n 1b008 _lv_txt_get_size(&size, ext->text, label_draw_dsc.font, label_draw_dsc.letter_space, label_draw_dsc.line_space, 1b07e: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 1b082: f8d8 1000 ldr.w r1, [r8] 1b086: 9402 str r4, [sp, #8] 1b088: f647 4218 movw r2, #31768 ; 0x7c18 1b08c: 9201 str r2, [sp, #4] 1b08e: f9bd 203a ldrsh.w r2, [sp, #58] ; 0x3a 1b092: 9200 str r2, [sp, #0] 1b094: 9a0d ldr r2, [sp, #52] ; 0x34 1b096: a805 add r0, sp, #20 1b098: 4c32 ldr r4, [pc, #200] ; (1b164 ) 1b09a: 47a0 blx r4 if(size.x > lv_area_get_width(&txt_coords)) { 1b09c: f9bd 2014 ldrsh.w r2, [sp, #20] 1b0a0: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 1b0a4: 3301 adds r3, #1 1b0a6: f8bd 1020 ldrh.w r1, [sp, #32] 1b0aa: 1a5b subs r3, r3, r1 1b0ac: b21b sxth r3, r3 1b0ae: 429a cmp r2, r3 1b0b0: dc20 bgt.n 1b0f4 if(size.y > lv_area_get_height(&txt_coords)) { 1b0b2: f9bd 2016 ldrsh.w r2, [sp, #22] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1b0b6: f8bd 3026 ldrh.w r3, [sp, #38] ; 0x26 1b0ba: 3301 adds r3, #1 1b0bc: f8bd 1022 ldrh.w r1, [sp, #34] ; 0x22 1b0c0: 1a5b subs r3, r3, r1 1b0c2: b21b sxth r3, r3 1b0c4: 429a cmp r2, r3 1b0c6: ddae ble.n 1b026 label_draw_dsc.ofs_x = ext->offset.x; 1b0c8: f9b8 300c ldrsh.w r3, [r8, #12] 1b0cc: f8ad 3042 strh.w r3, [sp, #66] ; 0x42 1b0d0: 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); 1b0d2: 891b ldrh r3, [r3, #8] 1b0d4: 4413 add r3, r2 1b0d6: f8b8 200e ldrh.w r2, [r8, #14] 1b0da: 4413 add r3, r2 1b0dc: f8ad 3044 strh.w r3, [sp, #68] ; 0x44 lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 1b0e0: f8d8 3000 ldr.w r3, [r8] 1b0e4: 2200 movs r2, #0 1b0e6: 9200 str r2, [sp, #0] 1b0e8: aa0c add r2, sp, #48 ; 0x30 1b0ea: a90a add r1, sp, #40 ; 0x28 1b0ec: a808 add r0, sp, #32 1b0ee: 4c1c ldr r4, [pc, #112] ; (1b160 ) 1b0f0: 47a0 blx r4 1b0f2: e798 b.n 1b026 label_draw_dsc.ofs_x = ext->offset.x + size.x + 1b0f4: f8b8 400c ldrh.w r4, [r8, #12] 1b0f8: 4422 add r2, r4 1b0fa: b294 uxth r4, r2 lv_font_get_glyph_width(label_draw_dsc.font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT; 1b0fc: 2220 movs r2, #32 1b0fe: 4611 mov r1, r2 1b100: 980d ldr r0, [sp, #52] ; 0x34 1b102: 4b19 ldr r3, [pc, #100] ; (1b168 ) 1b104: 4798 blx r3 1b106: eb00 0040 add.w r0, r0, r0, lsl #1 label_draw_dsc.ofs_x = ext->offset.x + size.x + 1b10a: 4404 add r4, r0 1b10c: f8ad 4042 strh.w r4, [sp, #66] ; 0x42 label_draw_dsc.ofs_y = ext->offset.y; 1b110: f9b8 300e ldrsh.w r3, [r8, #14] 1b114: f8ad 3044 strh.w r3, [sp, #68] ; 0x44 lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 1b118: f8d8 3000 ldr.w r3, [r8] 1b11c: 2200 movs r2, #0 1b11e: 9200 str r2, [sp, #0] 1b120: aa0c add r2, sp, #48 ; 0x30 1b122: a90a add r1, sp, #40 ; 0x28 1b124: a808 add r0, sp, #32 1b126: 47a8 blx r5 1b128: e7c3 b.n 1b0b2 return LV_DESIGN_RES_NOT_COVER; 1b12a: 2002 movs r0, #2 1b12c: 4770 bx lr 1b12e: bf00 nop 1b130: 00004d85 .word 0x00004d85 1b134: 000044bd .word 0x000044bd 1b138: 0000c251 .word 0x0000c251 1b13c: 000050ad .word 0x000050ad 1b140: 0000c319 .word 0x0000c319 1b144: 00019d71 .word 0x00019d71 1b148: 00011501 .word 0x00011501 1b14c: 00019f69 .word 0x00019f69 1b150: 000099b5 .word 0x000099b5 1b154: 0001ae59 .word 0x0001ae59 1b158: 0001aea1 .word 0x0001aea1 1b15c: 00005699 .word 0x00005699 1b160: 00009a0d .word 0x00009a0d 1b164: 00014065 .word 0x00014065 1b168: 00010049 .word 0x00010049 0001b16c <__aeabi_uldivmod>: 1b16c: b953 cbnz r3, 1b184 <__aeabi_uldivmod+0x18> 1b16e: b94a cbnz r2, 1b184 <__aeabi_uldivmod+0x18> 1b170: 2900 cmp r1, #0 1b172: bf08 it eq 1b174: 2800 cmpeq r0, #0 1b176: bf1c itt ne 1b178: f04f 31ff movne.w r1, #4294967295 1b17c: f04f 30ff movne.w r0, #4294967295 1b180: f000 b97a b.w 1b478 <__aeabi_idiv0> 1b184: f1ad 0c08 sub.w ip, sp, #8 1b188: e96d ce04 strd ip, lr, [sp, #-16]! 1b18c: f000 f806 bl 1b19c <__udivmoddi4> 1b190: f8dd e004 ldr.w lr, [sp, #4] 1b194: e9dd 2302 ldrd r2, r3, [sp, #8] 1b198: b004 add sp, #16 1b19a: 4770 bx lr 0001b19c <__udivmoddi4>: 1b19c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 1b1a0: 468c mov ip, r1 1b1a2: 460d mov r5, r1 1b1a4: 4604 mov r4, r0 1b1a6: 9e08 ldr r6, [sp, #32] 1b1a8: 2b00 cmp r3, #0 1b1aa: d151 bne.n 1b250 <__udivmoddi4+0xb4> 1b1ac: 428a cmp r2, r1 1b1ae: 4617 mov r7, r2 1b1b0: d96d bls.n 1b28e <__udivmoddi4+0xf2> 1b1b2: fab2 fe82 clz lr, r2 1b1b6: f1be 0f00 cmp.w lr, #0 1b1ba: d00b beq.n 1b1d4 <__udivmoddi4+0x38> 1b1bc: f1ce 0c20 rsb ip, lr, #32 1b1c0: fa01 f50e lsl.w r5, r1, lr 1b1c4: fa20 fc0c lsr.w ip, r0, ip 1b1c8: fa02 f70e lsl.w r7, r2, lr 1b1cc: ea4c 0c05 orr.w ip, ip, r5 1b1d0: fa00 f40e lsl.w r4, r0, lr 1b1d4: ea4f 4a17 mov.w sl, r7, lsr #16 1b1d8: 0c25 lsrs r5, r4, #16 1b1da: fbbc f8fa udiv r8, ip, sl 1b1de: fa1f f987 uxth.w r9, r7 1b1e2: fb0a cc18 mls ip, sl, r8, ip 1b1e6: ea45 450c orr.w r5, r5, ip, lsl #16 1b1ea: fb08 f309 mul.w r3, r8, r9 1b1ee: 42ab cmp r3, r5 1b1f0: d90a bls.n 1b208 <__udivmoddi4+0x6c> 1b1f2: 19ed adds r5, r5, r7 1b1f4: f108 32ff add.w r2, r8, #4294967295 1b1f8: f080 8123 bcs.w 1b442 <__udivmoddi4+0x2a6> 1b1fc: 42ab cmp r3, r5 1b1fe: f240 8120 bls.w 1b442 <__udivmoddi4+0x2a6> 1b202: f1a8 0802 sub.w r8, r8, #2 1b206: 443d add r5, r7 1b208: 1aed subs r5, r5, r3 1b20a: b2a4 uxth r4, r4 1b20c: fbb5 f0fa udiv r0, r5, sl 1b210: fb0a 5510 mls r5, sl, r0, r5 1b214: ea44 4405 orr.w r4, r4, r5, lsl #16 1b218: fb00 f909 mul.w r9, r0, r9 1b21c: 45a1 cmp r9, r4 1b21e: d909 bls.n 1b234 <__udivmoddi4+0x98> 1b220: 19e4 adds r4, r4, r7 1b222: f100 33ff add.w r3, r0, #4294967295 1b226: f080 810a bcs.w 1b43e <__udivmoddi4+0x2a2> 1b22a: 45a1 cmp r9, r4 1b22c: f240 8107 bls.w 1b43e <__udivmoddi4+0x2a2> 1b230: 3802 subs r0, #2 1b232: 443c add r4, r7 1b234: eba4 0409 sub.w r4, r4, r9 1b238: ea40 4008 orr.w r0, r0, r8, lsl #16 1b23c: 2100 movs r1, #0 1b23e: 2e00 cmp r6, #0 1b240: d061 beq.n 1b306 <__udivmoddi4+0x16a> 1b242: fa24 f40e lsr.w r4, r4, lr 1b246: 2300 movs r3, #0 1b248: 6034 str r4, [r6, #0] 1b24a: 6073 str r3, [r6, #4] 1b24c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 1b250: 428b cmp r3, r1 1b252: d907 bls.n 1b264 <__udivmoddi4+0xc8> 1b254: 2e00 cmp r6, #0 1b256: d054 beq.n 1b302 <__udivmoddi4+0x166> 1b258: 2100 movs r1, #0 1b25a: e886 0021 stmia.w r6, {r0, r5} 1b25e: 4608 mov r0, r1 1b260: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 1b264: fab3 f183 clz r1, r3 1b268: 2900 cmp r1, #0 1b26a: f040 808e bne.w 1b38a <__udivmoddi4+0x1ee> 1b26e: 42ab cmp r3, r5 1b270: d302 bcc.n 1b278 <__udivmoddi4+0xdc> 1b272: 4282 cmp r2, r0 1b274: f200 80fa bhi.w 1b46c <__udivmoddi4+0x2d0> 1b278: 1a84 subs r4, r0, r2 1b27a: eb65 0503 sbc.w r5, r5, r3 1b27e: 2001 movs r0, #1 1b280: 46ac mov ip, r5 1b282: 2e00 cmp r6, #0 1b284: d03f beq.n 1b306 <__udivmoddi4+0x16a> 1b286: e886 1010 stmia.w r6, {r4, ip} 1b28a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 1b28e: b912 cbnz r2, 1b296 <__udivmoddi4+0xfa> 1b290: 2701 movs r7, #1 1b292: fbb7 f7f2 udiv r7, r7, r2 1b296: fab7 fe87 clz lr, r7 1b29a: f1be 0f00 cmp.w lr, #0 1b29e: d134 bne.n 1b30a <__udivmoddi4+0x16e> 1b2a0: 1beb subs r3, r5, r7 1b2a2: 0c3a lsrs r2, r7, #16 1b2a4: fa1f fc87 uxth.w ip, r7 1b2a8: 2101 movs r1, #1 1b2aa: fbb3 f8f2 udiv r8, r3, r2 1b2ae: 0c25 lsrs r5, r4, #16 1b2b0: fb02 3318 mls r3, r2, r8, r3 1b2b4: ea45 4503 orr.w r5, r5, r3, lsl #16 1b2b8: fb0c f308 mul.w r3, ip, r8 1b2bc: 42ab cmp r3, r5 1b2be: d907 bls.n 1b2d0 <__udivmoddi4+0x134> 1b2c0: 19ed adds r5, r5, r7 1b2c2: f108 30ff add.w r0, r8, #4294967295 1b2c6: d202 bcs.n 1b2ce <__udivmoddi4+0x132> 1b2c8: 42ab cmp r3, r5 1b2ca: f200 80d1 bhi.w 1b470 <__udivmoddi4+0x2d4> 1b2ce: 4680 mov r8, r0 1b2d0: 1aed subs r5, r5, r3 1b2d2: b2a3 uxth r3, r4 1b2d4: fbb5 f0f2 udiv r0, r5, r2 1b2d8: fb02 5510 mls r5, r2, r0, r5 1b2dc: ea43 4405 orr.w r4, r3, r5, lsl #16 1b2e0: fb0c fc00 mul.w ip, ip, r0 1b2e4: 45a4 cmp ip, r4 1b2e6: d907 bls.n 1b2f8 <__udivmoddi4+0x15c> 1b2e8: 19e4 adds r4, r4, r7 1b2ea: f100 33ff add.w r3, r0, #4294967295 1b2ee: d202 bcs.n 1b2f6 <__udivmoddi4+0x15a> 1b2f0: 45a4 cmp ip, r4 1b2f2: f200 80b8 bhi.w 1b466 <__udivmoddi4+0x2ca> 1b2f6: 4618 mov r0, r3 1b2f8: eba4 040c sub.w r4, r4, ip 1b2fc: ea40 4008 orr.w r0, r0, r8, lsl #16 1b300: e79d b.n 1b23e <__udivmoddi4+0xa2> 1b302: 4631 mov r1, r6 1b304: 4630 mov r0, r6 1b306: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 1b30a: f1ce 0420 rsb r4, lr, #32 1b30e: fa05 f30e lsl.w r3, r5, lr 1b312: fa07 f70e lsl.w r7, r7, lr 1b316: fa20 f804 lsr.w r8, r0, r4 1b31a: 0c3a lsrs r2, r7, #16 1b31c: fa25 f404 lsr.w r4, r5, r4 1b320: ea48 0803 orr.w r8, r8, r3 1b324: fbb4 f1f2 udiv r1, r4, r2 1b328: ea4f 4518 mov.w r5, r8, lsr #16 1b32c: fb02 4411 mls r4, r2, r1, r4 1b330: fa1f fc87 uxth.w ip, r7 1b334: ea45 4504 orr.w r5, r5, r4, lsl #16 1b338: fb01 f30c mul.w r3, r1, ip 1b33c: 42ab cmp r3, r5 1b33e: fa00 f40e lsl.w r4, r0, lr 1b342: d909 bls.n 1b358 <__udivmoddi4+0x1bc> 1b344: 19ed adds r5, r5, r7 1b346: f101 30ff add.w r0, r1, #4294967295 1b34a: f080 808a bcs.w 1b462 <__udivmoddi4+0x2c6> 1b34e: 42ab cmp r3, r5 1b350: f240 8087 bls.w 1b462 <__udivmoddi4+0x2c6> 1b354: 3902 subs r1, #2 1b356: 443d add r5, r7 1b358: 1aeb subs r3, r5, r3 1b35a: fa1f f588 uxth.w r5, r8 1b35e: fbb3 f0f2 udiv r0, r3, r2 1b362: fb02 3310 mls r3, r2, r0, r3 1b366: ea45 4503 orr.w r5, r5, r3, lsl #16 1b36a: fb00 f30c mul.w r3, r0, ip 1b36e: 42ab cmp r3, r5 1b370: d907 bls.n 1b382 <__udivmoddi4+0x1e6> 1b372: 19ed adds r5, r5, r7 1b374: f100 38ff add.w r8, r0, #4294967295 1b378: d26f bcs.n 1b45a <__udivmoddi4+0x2be> 1b37a: 42ab cmp r3, r5 1b37c: d96d bls.n 1b45a <__udivmoddi4+0x2be> 1b37e: 3802 subs r0, #2 1b380: 443d add r5, r7 1b382: 1aeb subs r3, r5, r3 1b384: ea40 4101 orr.w r1, r0, r1, lsl #16 1b388: e78f b.n 1b2aa <__udivmoddi4+0x10e> 1b38a: f1c1 0720 rsb r7, r1, #32 1b38e: fa22 f807 lsr.w r8, r2, r7 1b392: 408b lsls r3, r1 1b394: fa05 f401 lsl.w r4, r5, r1 1b398: ea48 0303 orr.w r3, r8, r3 1b39c: fa20 fe07 lsr.w lr, r0, r7 1b3a0: ea4f 4c13 mov.w ip, r3, lsr #16 1b3a4: 40fd lsrs r5, r7 1b3a6: ea4e 0e04 orr.w lr, lr, r4 1b3aa: fbb5 f9fc udiv r9, r5, ip 1b3ae: ea4f 441e mov.w r4, lr, lsr #16 1b3b2: fb0c 5519 mls r5, ip, r9, r5 1b3b6: fa1f f883 uxth.w r8, r3 1b3ba: ea44 4505 orr.w r5, r4, r5, lsl #16 1b3be: fb09 f408 mul.w r4, r9, r8 1b3c2: 42ac cmp r4, r5 1b3c4: fa02 f201 lsl.w r2, r2, r1 1b3c8: fa00 fa01 lsl.w sl, r0, r1 1b3cc: d908 bls.n 1b3e0 <__udivmoddi4+0x244> 1b3ce: 18ed adds r5, r5, r3 1b3d0: f109 30ff add.w r0, r9, #4294967295 1b3d4: d243 bcs.n 1b45e <__udivmoddi4+0x2c2> 1b3d6: 42ac cmp r4, r5 1b3d8: d941 bls.n 1b45e <__udivmoddi4+0x2c2> 1b3da: f1a9 0902 sub.w r9, r9, #2 1b3de: 441d add r5, r3 1b3e0: 1b2d subs r5, r5, r4 1b3e2: fa1f fe8e uxth.w lr, lr 1b3e6: fbb5 f0fc udiv r0, r5, ip 1b3ea: fb0c 5510 mls r5, ip, r0, r5 1b3ee: ea4e 4405 orr.w r4, lr, r5, lsl #16 1b3f2: fb00 f808 mul.w r8, r0, r8 1b3f6: 45a0 cmp r8, r4 1b3f8: d907 bls.n 1b40a <__udivmoddi4+0x26e> 1b3fa: 18e4 adds r4, r4, r3 1b3fc: f100 35ff add.w r5, r0, #4294967295 1b400: d229 bcs.n 1b456 <__udivmoddi4+0x2ba> 1b402: 45a0 cmp r8, r4 1b404: d927 bls.n 1b456 <__udivmoddi4+0x2ba> 1b406: 3802 subs r0, #2 1b408: 441c add r4, r3 1b40a: ea40 4009 orr.w r0, r0, r9, lsl #16 1b40e: eba4 0408 sub.w r4, r4, r8 1b412: fba0 8902 umull r8, r9, r0, r2 1b416: 454c cmp r4, r9 1b418: 46c6 mov lr, r8 1b41a: 464d mov r5, r9 1b41c: d315 bcc.n 1b44a <__udivmoddi4+0x2ae> 1b41e: d012 beq.n 1b446 <__udivmoddi4+0x2aa> 1b420: b156 cbz r6, 1b438 <__udivmoddi4+0x29c> 1b422: ebba 030e subs.w r3, sl, lr 1b426: eb64 0405 sbc.w r4, r4, r5 1b42a: fa04 f707 lsl.w r7, r4, r7 1b42e: 40cb lsrs r3, r1 1b430: 431f orrs r7, r3 1b432: 40cc lsrs r4, r1 1b434: 6037 str r7, [r6, #0] 1b436: 6074 str r4, [r6, #4] 1b438: 2100 movs r1, #0 1b43a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 1b43e: 4618 mov r0, r3 1b440: e6f8 b.n 1b234 <__udivmoddi4+0x98> 1b442: 4690 mov r8, r2 1b444: e6e0 b.n 1b208 <__udivmoddi4+0x6c> 1b446: 45c2 cmp sl, r8 1b448: d2ea bcs.n 1b420 <__udivmoddi4+0x284> 1b44a: ebb8 0e02 subs.w lr, r8, r2 1b44e: eb69 0503 sbc.w r5, r9, r3 1b452: 3801 subs r0, #1 1b454: e7e4 b.n 1b420 <__udivmoddi4+0x284> 1b456: 4628 mov r0, r5 1b458: e7d7 b.n 1b40a <__udivmoddi4+0x26e> 1b45a: 4640 mov r0, r8 1b45c: e791 b.n 1b382 <__udivmoddi4+0x1e6> 1b45e: 4681 mov r9, r0 1b460: e7be b.n 1b3e0 <__udivmoddi4+0x244> 1b462: 4601 mov r1, r0 1b464: e778 b.n 1b358 <__udivmoddi4+0x1bc> 1b466: 3802 subs r0, #2 1b468: 443c add r4, r7 1b46a: e745 b.n 1b2f8 <__udivmoddi4+0x15c> 1b46c: 4608 mov r0, r1 1b46e: e708 b.n 1b282 <__udivmoddi4+0xe6> 1b470: f1a8 0802 sub.w r8, r8, #2 1b474: 443d add r5, r7 1b476: e72b b.n 1b2d0 <__udivmoddi4+0x134> 0001b478 <__aeabi_idiv0>: 1b478: 4770 bx lr 1b47a: bf00 nop 0001b47c <__libc_init_array>: 1b47c: b570 push {r4, r5, r6, lr} 1b47e: 4e0d ldr r6, [pc, #52] ; (1b4b4 <__libc_init_array+0x38>) 1b480: 4c0d ldr r4, [pc, #52] ; (1b4b8 <__libc_init_array+0x3c>) 1b482: 1ba4 subs r4, r4, r6 1b484: 10a4 asrs r4, r4, #2 1b486: 2500 movs r5, #0 1b488: 42a5 cmp r5, r4 1b48a: d109 bne.n 1b4a0 <__libc_init_array+0x24> 1b48c: 4e0b ldr r6, [pc, #44] ; (1b4bc <__libc_init_array+0x40>) 1b48e: 4c0c ldr r4, [pc, #48] ; (1b4c0 <__libc_init_array+0x44>) 1b490: f00e fab4 bl 299fc <_init> 1b494: 1ba4 subs r4, r4, r6 1b496: 10a4 asrs r4, r4, #2 1b498: 2500 movs r5, #0 1b49a: 42a5 cmp r5, r4 1b49c: d105 bne.n 1b4aa <__libc_init_array+0x2e> 1b49e: bd70 pop {r4, r5, r6, pc} 1b4a0: f856 3025 ldr.w r3, [r6, r5, lsl #2] 1b4a4: 4798 blx r3 1b4a6: 3501 adds r5, #1 1b4a8: e7ee b.n 1b488 <__libc_init_array+0xc> 1b4aa: f856 3025 ldr.w r3, [r6, r5, lsl #2] 1b4ae: 4798 blx r3 1b4b0: 3501 adds r5, #1 1b4b2: e7f2 b.n 1b49a <__libc_init_array+0x1e> 1b4b4: 00029a08 .word 0x00029a08 1b4b8: 00029a08 .word 0x00029a08 1b4bc: 00029a08 .word 0x00029a08 1b4c0: 00029a0c .word 0x00029a0c 0001b4c4 : 1b4c4: b510 push {r4, lr} 1b4c6: 3901 subs r1, #1 1b4c8: 4402 add r2, r0 1b4ca: 4290 cmp r0, r2 1b4cc: d101 bne.n 1b4d2 1b4ce: 2000 movs r0, #0 1b4d0: bd10 pop {r4, pc} 1b4d2: f810 3b01 ldrb.w r3, [r0], #1 1b4d6: f811 4f01 ldrb.w r4, [r1, #1]! 1b4da: 42a3 cmp r3, r4 1b4dc: d0f5 beq.n 1b4ca 1b4de: 1b18 subs r0, r3, r4 1b4e0: bd10 pop {r4, pc} 0001b4e2 : 1b4e2: f810 2b01 ldrb.w r2, [r0], #1 1b4e6: f811 3b01 ldrb.w r3, [r1], #1 1b4ea: 2a01 cmp r2, #1 1b4ec: bf28 it cs 1b4ee: 429a cmpcs r2, r3 1b4f0: d0f7 beq.n 1b4e2 1b4f2: 1ad0 subs r0, r2, r3 1b4f4: 4770 bx lr 0001b4f6 : 1b4f6: 4603 mov r3, r0 1b4f8: f811 2b01 ldrb.w r2, [r1], #1 1b4fc: f803 2b01 strb.w r2, [r3], #1 1b500: 2a00 cmp r2, #0 1b502: d1f9 bne.n 1b4f8 1b504: 4770 bx lr 0001b506 : 1b506: 4603 mov r3, r0 1b508: f813 2b01 ldrb.w r2, [r3], #1 1b50c: 2a00 cmp r2, #0 1b50e: d1fb bne.n 1b508 1b510: 1a18 subs r0, r3, r0 1b512: 3801 subs r0, #1 1b514: 4770 bx lr 1b516: 0000 movs r0, r0 1b518: 682f2e2e .word 0x682f2e2e 1b51c: 702f6c70 .word 0x702f6c70 1b520: 2f74726f .word 0x2f74726f 1b524: 5f6c7068 .word 0x5f6c7068 1b528: 6f697067 .word 0x6f697067 1b52c: 7361625f .word 0x7361625f 1b530: 00682e65 .word 0x00682e65 1b534: 682f2e2e .word 0x682f2e2e 1b538: 732f6c61 .word 0x732f6c61 1b53c: 682f6372 .word 0x682f6372 1b540: 695f6c61 .word 0x695f6c61 1b544: 00632e6f .word 0x00632e6f 1b548: 682f2e2e .word 0x682f2e2e 1b54c: 732f6c61 .word 0x732f6c61 1b550: 682f6372 .word 0x682f6372 1b554: 745f6c61 .word 0x745f6c61 1b558: 72656d69 .word 0x72656d69 1b55c: 0000632e .word 0x0000632e 1b560: 682f2e2e .word 0x682f2e2e 1b564: 732f6c61 .word 0x732f6c61 1b568: 682f6372 .word 0x682f6372 1b56c: 755f6c61 .word 0x755f6c61 1b570: 74726173 .word 0x74726173 1b574: 7973615f .word 0x7973615f 1b578: 632e636e .word 0x632e636e 1b57c: 00000000 .word 0x00000000 1b580: 682f2e2e .word 0x682f2e2e 1b584: 752f6c61 .word 0x752f6c61 1b588: 736c6974 .word 0x736c6974 1b58c: 6372732f .word 0x6372732f 1b590: 6974752f .word 0x6974752f 1b594: 6c5f736c .word 0x6c5f736c 1b598: 2e747369 .word 0x2e747369 1b59c: 00000063 .word 0x00000063 1b5a0: 682f2e2e .word 0x682f2e2e 1b5a4: 752f6c61 .word 0x752f6c61 1b5a8: 736c6974 .word 0x736c6974 1b5ac: 6372732f .word 0x6372732f 1b5b0: 6974752f .word 0x6974752f 1b5b4: 725f736c .word 0x725f736c 1b5b8: 62676e69 .word 0x62676e69 1b5bc: 65666675 .word 0x65666675 1b5c0: 00632e72 .word 0x00632e72 1b5c4: 40003000 .word 0x40003000 1b5c8: 40003400 .word 0x40003400 1b5cc: 41012000 .word 0x41012000 1b5d0: 41014000 .word 0x41014000 1b5d4: 43000000 .word 0x43000000 1b5d8: 43000400 .word 0x43000400 1b5dc: 43000800 .word 0x43000800 1b5e0: 43000c00 .word 0x43000c00 0001b5e4 <_i2cms>: 1b5e4: 00000003 00200014 00000100 000000ff ...... ......... 1b5f4: 00d70000 07270400 682f2e2e 732f6c70 ......'.../hpl/s 1b604: 6f637265 70682f6d 65735f6c 6d6f6372 ercom/hpl_sercom 1b614: 0000632e 40003800 40003c00 4101a000 .c...8.@.<.@...A 1b624: 4101c000 42001400 42001800 43001400 ...A...B...B...C 1b634: 43001800 ...C 0001b638 <_tcs>: 1b638: 006b0000 00000308 00000000 00003a97 ..k..........:.. 1b648: 00000000 682f2e2e 742f6c70 70682f63 ....../hpl/tc/hp 1b658: 63745f6c 0000632e l_tc.c.. 0001b660 : 1b660: 1662e40a 0000855b 0001b66c ..b.[...l... 0001b66c : 1b66c: ff07060b ffac882c ff871f25 ff895139 ....,...%...9Q.. 1b67c: ffdcc46d ffc88348 ffc65632 ff46434d m...H...2V..MCF. 1b68c: ff480a16 ffbca25c ffc22d38 ff8b6c67 ..H.\...8-..gl.. 1b69c: ff48272d ff893622 ffc76d41 ffc38576 -'H."6..Am..v... 1b6ac: ffc6a49a ffa53520 ff692621 ffa95139 .... 5..!&i.9Q.. 1b6bc: ffe8e2a9 ff26242e ffe96e40 ffe98843 .....$&.@n..C... 1b6cc: ffaea64b ff873848 ffc5c4c9 ffa86e33 K...H8......3n.. 1b6dc: ff69646a ffe45640 ff69342e ff280917 jdi.@V...4i...(. 1b6ec: ffa8554e ffe7a996 ff838383 ff67101b NU............g. 1b6fc: ff9e8880 ffc76e60 ffe7a65f ffe99647 ....`n.._...G... 1b70c: ffe68779 ffa9202e ff694527 ff8a4335 y.... ..'Ei.5C.. 1b71c: ffa76f64 ff493329 ffc0b5af ff89575f do..)3I....._W.. 1b72c: ffc75543 ffa9462d ff9f9789 ffab603f CU..-F......?`.. 1b73c: ff882c1d ffc97948 ff27151b ffc69482 .,..Hy....'..... 1b74c: ff69282f ffe6b669 ffdfd484 ff48151b /(i.i.........H. 1b75c: ffc89364 ffe66e5b ffc14715 ffe4c4bc d...[n...G...... 1b76c: ff98371e ffc66343 ffe1e4e8 ff73542a .7..Cc......*Ts. 1b77c: ff673a3e ffb7532b ff872b32 ffe68a60 >:g.+S..2+..`... 1b78c: ff19141e ffd68448 ff38373f ffea9964 ....H...?78.d... 1b79c: ffd69881 ff875f47 ff592621 ff37161a ....G_..!&Y...7. 1b7ac: ffe65550 ff886e77 ffd8a894 ffa97a73 PU..wn......sz.. 1b7bc: ff571922 ffeba872 fff6f3de ffa3a59e ".W.r........... 1b7cc: ffe03d49 ff671c24 ffa28c94 ffa86254 I=..$.g.....Tb.. 1b7dc: ffecc483 ffd76e48 ffa9473f ffa93a38 ....Hn..?G..8:.. 1b7ec: ffd5d4d6 ffa77937 ffe76254 ff595861 ....7y..Tb..aXY. 1b7fc: ff884648 ffd6b4a7 ffb0999a ff9b5036 HF..........6P.. 1b80c: ff782620 ff392328 ffb3b5b4 ffe77a45 &x.(#9.....Ez.. 1b81c: ffe8b596 ff593331 ffd87a46 ffc19aa2 ....13Y.Fz...... 1b82c: ff160c16 ffb1887e ff886263 ff797679 ....~...cb..yvy. 1b83c: ff762930 ffc13d43 ff973c30 ff79362d 0)v.C=..0<..-6y. 1b84c: ff67474c ff994530 ffbfb560 fff7975f LGg.0E..`..._... 1b85c: ffd7624b ffc9875c ff952d18 ffe87959 Kb..\....-..Yy.. 1b86c: ffc04945 ff94968f ff9c9729 ffebddae EI......)....... 1b87c: ffc0aa64 ffe99a78 fff3ead1 ffc56232 d...x.......2b.. 1b88c: ffd8343e ff685a61 ffda9842 fff1643e >4..aZh.B...>d.. 1b89c: ff928678 ffd8b859 ffc67a62 ffe4dcdd x...Y...bz...... 1b8ac: ff867c7c ff574a54 ffdaa94f ffd58a7b ||..TJW.O...{... 1b8bc: ffafa9a4 ffd9a57b ffd6cdcd ff766b6f ....{.......okv. 1b8cc: ffecd27c fff7b894 ffa99931 ff84766c |.......1...lv.. 1b8dc: ffe1cb82 ffd85019 fff5b57b ffb96d49 .....P..{...Im.. 1b8ec: ffbb7947 ffac2b34 ffd7895e ffa48654 Gy..4+..^...T... 1b8fc: ff972129 ff570c18 ffc3aaaf ffede6bf )!....W......... 1b90c: ffacac64 ff370815 fff9a55c ff7b4432 d.....7.\...2D{. 1b91c: ffc1bcbf fff69b7e ff78575a ffb76e5f ....~...ZWx._n.. 1b92c: ff99614b ffb97a64 ff771a22 ff994747 Ka..dz..".w.GG.. 1b93c: ff986266 fff68745 fff6a996 ff77121c fb..E.........w. 1b94c: fff7964c ffd8544a fffbc7b6 ff783a40 L...JT......@:x. 1b95c: fffa875f fff5a67a ffae8b97 ff78484a _...z.......JHx. 1b96c: fff8d7bb fffbfaf8 fff2c89a ffeeebeb ................ 1b97c: fffb6e49 ffb7624f fffb6459 ffd97965 In..Ob..Yd..ey.. 1b98c: ff883930 ff973747 ff483942 ff291825 09..G7..B9H.%.). 1b99c: ffe4da9b ff481725 ffd79d99 ff381825 ....%.H.....%.8. 1b9ac: fff75652 ff995249 ffe5bcb4 ff5a373e RV..IR......>7Z. 1b9bc: ff98944c ffd99566 fffcd2d4 ffb7584e L...f.......NX.. 1b9cc: ff97595d ffc3343f ffdc494b ff95786b ]Y..?4..KI..kx.. 1b9dc: ffb9613b ff982931 fff97a43 ffd03c46 ;a..1)..Cz..F<.. 1b9ec: fffb785b ff997b7b ffa63c23 ffc79d8b [x..{{..#<...... 1b9fc: ffdadbdf ff885350 ff9f9b96 ffeab97a ....PS......z... 1ba0c: ffb7553a ff572a2f ffd7aba7 ffd9babb :U../*W......... 1ba1c: ff382938 ff8e8b89 ffdbbb69 ffecd7a1 8)8.....i....... 1ba2c: fff8b8ab ff966f68 ffab6c51 ffd86f5d ....ho..Ql..]o.. 1ba3c: fffb6e5b ff997077 ffd56331 ffd14848 [n..wp..1c..HH.. 1ba4c: fffc5a44 ffdccc73 ff4b4b54 ffc38c7a DZ..s...TKK.z... 1ba5c: ffc6ac9f ff2b2c37 ffcbcbcf ff6b6b6f ....7,+.....okk. 1ba6c: 70707070 70707070 70707070 70704870 pppppppppppppHpp 1ba7c: 48487070 36363648 e90c69cb 7744442d ppHHH666.i..-DDw 1ba8c: 771212e9 133179c8 c8763113 133179c8 ...w.y1..1v..y1. 1ba9c: e2e23131 407e40e2 40e2e2e2 25c531e2 11...@~@...@.1.% 1baac: 30c785a2 0d76b35e 46464646 404040dd ...0^.v.FFFF.@@@ 1babc: d1135e5f 5f762bb3 c876765f 9ca240c8 _^...+v__vv..@.. 1bacc: e714c156 bd0439bd 9c263ae7 140404a7 V....9...:&..... 1badc: 7be0bce7 8047efef f3bc3d80 569c4733 ...{..G..=..3G.V 1baec: 5c56c1c1 9ce79cee 56ef39f9 9c86f93a ..V\.....9.V:... 1bafc: 0e0ec785 9ccc55c7 c156e74b 9f35a2c2 .....U..K.V...5. 1bb0c: 9f9f9f9f 339f9f9f 67672033 20677979 .......33 ggyyg 1bb1c: dc132020 1e126717 7070704e 70707070 ...g..Nppppppp 1bb2c: 70707070 70487070 48487070 36364848 ppppppHpppHHHH66 1bb3c: 694e0c36 2b2b2d69 744e1e2b 3179c877 6.Nii-+++.Ntw.y1 1bb4c: 7631315e 3179c8c8 e2313113 3440e2e2 ^11v..y1.11...@4 1bb5c: e2313140 9f9fd731 c72825c5 76b35e30 @11.1....%(.0^.v 1bb6c: 4634340d 40407e46 13b37640 2b2bb3d1 .44FF~@@@v....++ 1bb7c: 40765f5f 6e407676 86c1869c f9e73904 __v@vv@n.....9.. 1bb8c: 559c3955 ee9c869c f4bc5c14 4783ef7b U9.U.....\..{..G 1bb9c: bc625e80 044720f3 c1c1c186 c28304f9 .^b.. G......... 1bbac: 9c39f9e7 a7f9ccc1 35354b9c a75cd535 ..9......K555.\. 1bbbc: 565c55ef 3cd5efc1 7d7d7d7d 05050505 .U\V...<}}}}.... 1bbcc: c59f9fa0 33333333 dc333333 77136e17 ....3333333..n.w 1bbdc: 7070740d 70707070 70707070 36487070 .tppppppppppppH6 1bbec: 48707048 cb364848 4e4ecb36 bb1e1e0c HppHHH6.6.NN.... 1bbfc: 4ec82bb3 2bc87777 79797979 79c8c876 .+.Nww.+yyyyv..y 1bc0c: 31131331 40e2e231 1331e240 13c5af33 1..11..@@.1.3... 1bc1c: 28f3e831 b35ee8f3 34340d76 7e7e4646 1..(..^.v.44FF~~ 1bc2c: b3764040 2bb3d113 76315f2b 40767640 @@v....++_1v@vv@ 1bc3c: 86a79c6e e7393a56 f955553a 9c86e726 n...V:9.:UU.&... 1bc4c: b59c83ee 83efbce0 7cb35e4b 6e13f3e0 ........K^.|...n 1bc5c: c1c186e7 a73a3ac1 550455e7 0483c19c .....::..U.U.... 1bc6c: 67a2e73a 5c55a2a0 5c9e14a7 2683c156 :..g..U\...\V..& 1bc7c: 3c3c3cd5 7d7d3c3c 9f350505 9fdcdc9f .<<<<<}}..5..... 1bc8c: 3113c5c5 33336e0e 700d0d34 70707070 ...1.n334..ppppp 1bc9c: 70707070 48707070 70704836 36484848 pppppppH6HppHHH6 1bcac: 1e6936cb bb790c0c c82bbbbb c877744e .6i...y...+.Ntw. 1bcbc: 2b2bc8c8 76c8c8c8 13133179 31313131 ..++...vy1..1111 1bccc: c53176e2 7613c5af 25e83176 b3e841f3 .v1....vv1.%.A.. 1bcdc: 340d76b3 34343434 5f114040 b3d1d1b3 .v.44444@@._.... 1bcec: 3131762b 76767676 c2e7f340 04a7c1c0 +v11vvvv@....... 1bcfc: 55553a04 86e72604 9ccc8d3a c2bce0b8 .:UU.&..:....... 1bd0c: b35e4bcc d13de07c c1a7396e 8383c1c1 .K^.|.=.n9...... 1bd1c: 042639a7 14c19c55 9f4b9ee7 99853564 .9&.U.....K.d5.. 1bd2c: 9e14a75c 83c186e7 7d3cd526 7d3c3c3c \.......&.<}<<<} 1bd3c: a005057d 33dc9f9f 13dcc5dc 0d794579 }......3....yEy. 1bd4c: 0d74680d 70707070 70707070 70707070 .ht.pppppppppppp 1bd5c: 70704836 36484870 cfcbcbcb 2b1e6912 6HpppHH6.....i.+ 1bd6c: 2b6dbbbb 7774122b 762b2bc8 c8c8c876 ..m++.tw.++vv... 1bd7c: 13317976 13313113 9f133131 407933af vy1..11.11...3y@ 1bd8c: 790d7676 5ee8e8e8 0d76b3b3 34343434 vv.y...^..v.4444 1bd9c: 11407e34 1313b35f 31767967 76767631 4~@._...gyv11vvv 1bdac: 390e7676 c1c156ef 39cc043a 39260426 vv.9.V..:..9&.&9 1bdbc: cc8def86 bce0b89c 5e4bcc5c 3dbc7c64 ........\.K^d|.= 1bdcc: a7550ed1 a7c1c1c1 26e7a7cc 569c55ee ..U........&.U.V 1bddc: 35475583 2149f1b0 14143a9c c186e79e .UG5..I!.:...... 1bdec: 3cd52683 7d7d7d7d 3505057d dc9fa035 .&.<}}}}}..55... 1bdfc: 13133333 0d767979 12743379 70707068 33..yyv.y3t.hppp 1be0c: 70707070 70707070 70704848 36484870 ppppppppHHpppHH6 1be1c: cbcbcb36 c80c3636 d344bb2b 7412bb79 6...66..+.D.y..t 1be2c: 792bc877 76797979 3179c8c8 13131313 w.+yyyyv..y1.... 1be3c: af9f1331 763113dc e6344040 3131e22c 1.....1v@@4.,.11 1be4c: 7679b35e 34340d0d 40403434 13b35f11 ^.yv..4444@@._.. 1be5c: 76b31313 7679315f 417676c8 c1c11439 ...v_1yv.vvA9... 1be6c: 1404ccc1 26ee4be7 8d83a755 f4b89c3a .....K.&U...:... 1be7c: 4bcce7bc bc7cb35e 260e133d c1c1c183 ...K^.|.=..&.... 1be8c: e7a79c83 e755e726 0e4befa7 a2f2f5dc ....&.U...K..... 1be9c: 143acc5c ef55e714 d52683c1 a27d7d3c \.:...U...&.<}}. 1beac: 05057d7d 9f356e35 311333dc 40767979 }}..5n5..3.1yyv@ 1bebc: c87d3334 70701268 70707070 70704870 43}.h.pppppppHpp 1becc: 70707070 48487070 cbcbcb36 773636cb ppppppHH6....66w 1bedc: 44bb2b76 1ee91ebb 2bc87774 31317979 v+.D....tw.+yy11 1beec: 79c8c879 e8e81331 c5b19fe8 31313131 y..y1.......1111 1befc: 647e0d40 5e406fc1 b35e5e5e 34340d76 @.~d.o@^^^^.v.44 1bf0c: 40343434 b35f4040 5e131313 31313176 444@@@_....^v111 1bf1c: 76767631 56ef3941 f914c1c1 397b5ca7 1vvvA9.V.....\{9 1bf2c: 83a72626 273a9c8d 3a39e0f4 b9b3804b &&....:'..9:K... 1bf3c: c5133dbc c1c18355 869c83c1 55e7269c .=..U........&.U 1bf4c: c75c3ae7 33e633dc 3a145cd5 bde714cc .:\..3.3.\.:.... 1bf5c: 26ef865c 7d7d3c3c 05057d7d 35491735 \..&<<}}}}..5.I5 1bf6c: 1333dc9f 0d0d7979 c513680d 7074680d ..3.yy...h...htp 1bf7c: 48487070 70364870 70483670 48707070 ppHHpH6pp6HppppH 1bf8c: cbcbcb48 cbcbcbcb bb2b7677 771e6d44 H.......wv+.Dm.w 1bf9c: 77771277 3179792b c8c87931 e8131379 w.ww+yy11y..y... 1bfac: d78e8ec5 31e2e231 024040e2 40a6c1be ....1..1.@@....@ 1bfbc: 5e5e5e5e 340d76b3 0d346834 5f404040 ^^^^.v.44h4.@@@_ 1bfcc: 1313135e 31315e5e 795e3131 5c264176 ^...^^1111^yvA&\ 1bfdc: a7c1c186 7b9ca7f9 83264b55 3a048da7 .......{UK&....: 1bfec: bdf4f44b 5e807b3a 5b3de030 c18699af K...:{.^0.=[.... 1bffc: 9c14c1c1 554b9c86 4be75555 662ce89f ......KUUU.K..,f 1c00c: 145c4b33 e714cc3a efcc9ebd 7d3c7d85 3K\.:........}<} 1c01c: 057d7d7d 6e176e05 33dc9f35 0d767913 }}}..n.n5..3.yv. 1c02c: 79680d0d 74687413 70707070 48367070 ..hy.thtpppppp6H 1c03c: 36367070 48707048 cbcb3648 69cbcbcb pp66HppHH6.....i 1c04c: bb1e6936 bb44d344 777777c8 792b2b77 6i..D.D..wwww++y 1c05c: c8c87979 e8137979 e8257d8e 40403113 yy..yy...}%..1@@ 1c06c: 4040e2e2 60c1fe68 5e5e3176 0d76b35e ..@@h..`v1^^^.v. 1c07c: bb72680d 11e27eb2 13135e5f 315ee813 .hr..~.._^....^1 1c08c: 5ee85e31 aa877931 c1c1869e 3aa7f9a7 1^.^1y.........: 1c09c: 4b4b267b ee26a783 f4f44b3a 307b9cad {&KK..&.:K....{0 1c0ac: 17e0e85e 83c210b1 a7c1c156 4b9c869c ^.......V......K 1c0bc: 477b5555 6613dc0e 5c4bdc24 cc3a9ccc UU{G...f$.K\..:. 1c0cc: 5cbdade7 7d7dd55c 7d7d7d7d 49173505 ...\\.}}}}}}.5.I 1c0dc: dc9f9f35 76797913 340d0d0d 68687468 5....yyv...4hthh 1c0ec: 70707068 70707070 48703670 70484836 hpppppppp6pH6HHp 1c0fc: cbcb4848 cbcbcbcb 69cbcbcb 2b44d32d HH.........i-.D+ 1c10c: 770dc8ab 2b2b7777 c8c8792b 9f137979 ...www+++y..yy.. 1c11c: d7418e8e 344031e8 40e2e27e 5642e534 ..A..1@4~..@4.BV 1c12c: 5e5fd156 76b35e5e 2eb20d0d 7e7766c1 V._^^^.v.....fw~ 1c13c: 135e31e2 5ee81313 13133131 6e311313 .1^....^11....1n 1c14c: c156e7aa 863a86c1 4b4b7bcc 39a7cc4b ..V...:..{KKK..9 1c15c: e04bf939 7be77bc6 27dc5e30 5510fc85 9.K..{.{0^.'...U 1c16c: c1c1569c 9c86f9a7 bcad4b4b 67dce80e .V......KK.....g 1c17c: d50eb4ac 9c9c3a5c 85ade7cc 7dd59e9e ....\:.........} 1c18c: 7d7d7d7d 4935057d dc9f3535 79791333 }}}}}.5I55..3.yy 1c19c: 0d0d4076 6868340d 70707474 70707070 v@...4hhttpppppp 1c1ac: 70487070 4836cf48 cb484870 cb15cbcb ppHpH.6HpHH..... 1c1bc: 0ccbcbcb 44d32d0c 7979ab2b 2b77c840 .....-.D+.yy@.w+ 1c1cc: 7931792b 8edc7979 4141258e 7e1131d7 +y1yyy...%AA.1.~ 1c1dc: 11117e34 c3e10240 4053c1c3 b35e5e5e 4~..@.....S@^^^. 1c1ec: 340d0d76 42c142bb 5e3134f1 13131313 v..4.B.B.41^.... 1c1fc: 13135e5e dcc535e8 569c4b27 3a86c1c1 ^^...5..'K.V...: 1c20c: 7b7bcca7 a73a4b4b 4bee2639 e7bcc6e0 ..{{KK:.9&.K.... 1c21c: 8ac5b97b 5b715255 c156ee47 86f9a7c1 {...URq[G.V..... 1c22c: bc7b4b3a 1313e85d 0ed11ab4 9c3ae7d5 :K{.].........:. 1c23c: ad5ccc9c a2555585 7d7d7d7d 05057d7d ..\..UU.}}}}}}.. 1c24c: 9f9f3505 793113dc 76767979 76767676 .5....1yyyvvvvvv 1c25c: 70120d0d 48707070 70707070 36cfcf70 ...ppppHppppp..6 1c26c: 36487036 69cbcbcb e9cb6969 6d4477c8 6pH6...iii...wDm 1c27c: 132bd344 c80d795e dc13792b 8eaf1313 D.+.^y..+y...... 1c28c: 2541c525 11e2e841 117e347e 94684011 %.A%A...~4~..@h. 1c29c: 10c1c3c3 5e5e5e40 460d76b3 c172b240 ....@^^^.v.F@.r. 1c2ac: c894c1c1 131313e2 135e5e5e dc3939e8 ........^^^..99. 1c2bc: 9c47dcdc 56c1c156 27cca7f9 9c277bb8 ..G.V..V...'.{'. 1c2cc: 394b39a7 bcc6e07b d5f37b55 20b13755 .9K9{...U{..U7. 1c2dc: 86396ed1 f9a7c1c1 bc27efa7 e813e87f .n9.......'..... 1c2ec: 13ac6679 f9e7856e 5c3a5c5c d5d585bd yf..n...\\:\.... 1c2fc: 7d7d7dd5 05050505 35350505 1313dc35 .}}}......555... 1c30c: 79797979 79797979 c8797979 70707070 yyyyyyyyyyy.pppp 1c31c: 70707048 cbcf3600 48483636 cbcbcb36 Hppp.6..66HH6... 1c32c: cb696969 bb77c877 ababb3bb 0d763113 iii.w.w......1v. 1c33c: 13792bc8 9fb19fc5 41d7e813 e245e841 .+y........AA.E. 1c34c: 7e347e11 68401111 c1c3c32e 5e31c896 .~4~..@h......1^ 1c35c: 0d76b35e 5940460d c1c1c194 2079d160 ^.v..F@Y....`.y 1c36c: 5eb3b3d1 9f9895e8 47313113 c1c1869c ...^.....11G.... 1c37c: cca73a56 17b8bc27 b839a79c d0f4b8aa V:..'.....9..... 1c38c: 21b69ebc 205bb195 395dd1d1 a7c1c1a7 ...!..[ ..]9.... 1c39c: 273aa7f9 1313dc3d be1a79e8 e7ad47e8 ..:'=....y...G.. 1c3ac: 3a5ce79c a285bd5c 7da24bd5 a005057d ..\:\....K.}}... 1c3bc: 350505a0 13130e6e 79767979 31797979 ...5n...yyvyyyy1 1c3cc: 5e5e315e 70707079 70704848 36004870 ^1^^ypppHHpppH.6 1c3dc: 48cb36cf cbcbcb48 69696915 c8c869cb .6.HH....iii.i.. 1c3ec: b3b32b1e 4076b32b 79797940 138e8e13 .+..+.v@@yyy.... 1c3fc: 31317979 31314531 3440e2e2 40e2117e yy111E11..@4~..@ 1c40c: c3c360c8 31d1c3c1 7679b313 46460d0d .`.....1..yv..FF 1c41c: c1e47734 53c3c1c1 b3b31379 9fd59f5e 4w.....Sy...^... 1c42c: 31311313 c1a70447 a73a56c1 b8e04bcc ..11G....V:..K.. 1c43c: 55a7e7b5 e0b5bce0 babaadf4 b320c54c ...U........L. . 1c44c: 5db3d1b3 c1c18326 cc830486 13134127 ...]&.......'A.. 1c45c: e4d81313 adad5db4 e7e79c9e 85bd5c3a .....]......:\.. 1c46c: a285d5a2 a0057d7d a0a0a0a0 13339f9f ....}}........3. 1c47c: 0d2b7913 31797976 795e3131 70707979 .y+.vyy111^yyypp 1c48c: 70483648 480ce969 cb363670 cbcb4836 H6Hpi..Hp66.6H.. 1c49c: 696915cb 794ecb69 abab6d77 40312b67 ..iii.Nywm..g+1@ 1c4ac: 13131376 13af8e33 79797979 e2317979 v...3...yyyyyy1. 1c4bc: 4011e2e2 e2117e34 8f42e57e 53c1c342 ...@4~..~.B.B..S 1c4cc: b37913e2 460d0d76 72a44034 c1c156c1 ..y.v..F4@.r.V.. 1c4dc: b37971c1 13d75eb3 795e135e a7046e76 .qy..^..^.^yvn.. 1c4ec: f956c1c1 e04b1414 14e7b8b5 bce06226 ..V...K.....&b.. 1c4fc: babaadbc 5e807cad b3d1b364 c1cc265d .....|.^d...]&.. 1c50c: cc0486c1 31e8273a 24791331 ad47d860 ....:'.11.y$`.G. 1c51c: e79c9e85 bd5c9ce7 85d5a285 7d7d7da2 ......\......}}} 1c52c: a0a0057d 9f9fa0a0 79133333 760d0d0d }.......33.y...v 1c53c: 5e793179 7079795e 36364870 0c0c7000 y1y^^yyppH66.p.. 1c54c: 367070cb cb484836 6969cbcb 4ecb6969 .pp66HH...iiii.N 1c55c: bb1ee9c8 79b32b64 c5d71376 13c57d8e ....d+.yv....}.. 1c56c: 76767679 76797979 11e2e240 117e347e yvvvyyyv@...~4~. 1c57c: c3e57ee2 c1c3e4e4 79137610 0d0d7679 .~.......v.yyv.. 1c58c: 5f403434 c3c16602 37c1c1c1 5e5eb3c8 44@_.f.....7..^^ 1c59c: 315e5e5e ee6e7676 56c1c114 4b14ccf9 ^^^1vvn....V...K 1c5ac: 39b5b5e0 bc414b3a adf0babd 80dabcbd ...9:KA......... 1c5bc: 20b3645e 3a2641b3 0486c156 13179c9c ^d. .A&:V....... 1c5cc: c8135e79 adc56aac 9c398585 5c9ce7e7 y^...j....9....\ 1c5dc: 4bd585bd 3c7dd5ad 7d7d3c3c a0a07d7d ...K..}<<<}}}}.. 1c5ec: 3333339f 0d2b6733 79790d0d b3b35e79 .3333g+...yyy^.. 1c5fc: 36367070 36000070 7048360c 48487070 pp66p..6.6HpppHH 1c60c: 69cbcbcb cb696969 abe9cbcb 1364642b ...iiii.....+dd. 1c61c: c5133179 13c57d0f 76767913 79797976 y1...}...yvvvyyy 1c62c: 11404076 7e347e40 f17ee211 c36060c1 v@@.@~4~..~..``. 1c63c: 137696c1 0d767979 11403446 6077e211 ..v.yyv.F4@...w` 1c64c: 565642c3 5e0d6fc1 5e795e5e 5d40765e .BVV.o.^^^y^^v@] 1c65c: c1c1cc39 14ccf956 b5bce026 8ed59c26 9...V...&...&... 1c66c: e0f0d699 dae07be0 b3645e80 2741b320 .....{...^d. .A' 1c67c: 86c186f9 49040404 31137913 f35ae4e5 .......I.y.1..Z. 1c68c: 558555bd 9c9ee75c d5bdbd9c 9595b685 .U.U\........... 1c69c: 216c2121 52525252 b13ce395 13339fa0 !!l!RRRR..<...3. 1c6ac: 0d34c879 b3797676 700036b3 70487048 y.4.vvy..6.pHpHp 1c6bc: 36363670 48707070 15cbcb48 69696969 p666pppHH...iiii 1c6cc: e90c69cb 206413bb c5137920 d7c58e0f .i....d y...... 1c6dc: 76311313 79797676 11404079 347e4011 ..1vvvyyy@@..@~4 1c6ec: 02e21134 fe60c15a d856c1c3 76797931 4...Z.`...V.1yyv 1c6fc: 40340d0d 11315f11 8fe4c12f 66c156c3 ..4@._1./....V.f 1c70c: 765e5e0d 0d765e5e 56cc3941 3af956c1 .^^v^^v.A9.V.V.: 1c71c: e0f426cc 219ebdb5 bc9eba65 e0bcc6c6 .&.....!e....... 1c72c: 195e75da d7b32064 c1860427 ee048d86 .u^.d ..'....... 1c73c: 1379136e f542e179 85555547 9e9ee755 n.y.y.B.GUU.U... 1c74c: 99993a3a d2baf06c 3c4c9521 7d7d3c3c ::..l...!.L<<<}} 1c75c: 4c3c7d7d fbce5252 c879139f 0d34340d }}E. 1f4c0: e887dce8 06e845e8 4545e8e8 45e8dce8 .....E....EE...E 1f4d0: 13f6de87 37797679 0d0db0fc 7774740d ....yvy7.....ttw 1f4e0: 74777777 77777474 bbbb77bb 69e90c38 wwwtttww.w..8..i 1f4f0: 0ccfcfcf 483648cf cbcb48cb 89579169 .....H6H.H..i.W. 1f500: 69690c2d e944bf44 1ebb6444 771e1e1e -.iiD.D.Dd.....w 1f510: 79792b77 0dc8c82b 4141e876 76797913 w+yy+...v.AA.yyv 1f520: 76404040 79797676 40763131 e2e24040 @@@vvvyy11v@@@.. 1f530: 7d333140 13a09552 31e23131 404040e2 @13}R...11.1.@@@ 1f540: 12114011 ff735722 4a979797 00000000 .@.."Ws....J.... 1f550: 00000000 1c1c97ec 739797ff 70704897 ...........s.Hpp 1f560: 60cf7070 31134066 45313131 acace640 pp.`f@.1111E@... 1f570: 32e1db24 4545e2e6 87dce8e8 4545e806 $..2..EE......EE 1f580: 45e8e8e8 e8e8e845 13e80645 e3677631 ...EE...E...1vg. 1f590: 7774b0fc 74747477 77777777 38747474 ..twwtttwwwwttt8 1f5a0: bb772b77 cde9bbab cfcfcf69 366969cf w+w.....i....ii6 1f5b0: 6d69cbcb e61c6969 6969ec91 d1e5780c ..imii....ii.x.. 1f5c0: 1e6d6dab 1e1e6464 792b771e c8c82b2b .mm.dd...w+y++.. 1f5d0: 5d30790d 76791341 40404076 79767676 .y0]A.yvv@@@vvvy 1f5e0: 79313179 31404040 523c9f13 e2319f4c y11y@@@1.. 20d80: 4a6391ab 00000048 00000000 70700000 ..cJH.........pp 20d90: cf4fcfcf cd4ecd4f 545454cd cd54544e ..O.O.N..TTTNTT. 20da0: 4e54543b 12771212 46a1df68 cd545459 ;TTN..w.h..FYTT. 20db0: 232354cd a9a9a9a5 a9a9a9a9 080808a9 .T##............ 20dc0: 08080808 08080808 a5a5a508 a5a5a5a5 ................ 20dd0: a5a5a5a5 08a5a5a5 d9b2a9a9 2323a4df ..............## 20de0: a5a52323 a5a90223 a5a5a5a5 b202b7a5 ##..#........... 20df0: a4d9ddb7 89897391 4444e978 44ed4444 .....s..x.DDDD.D 20e00: f7f7b975 5f75dff7 b702a4a1 59b2b2b7 u.....u_.......Y 20e10: 54a55459 3b3ba93b 4f4fcdcd 1f4f3636 YT.T;.;;..OO66O. 20e20: 1f363636 701f1f70 48707070 70707070 666.p..ppppHpppp 20e30: cb364848 79690c69 ec89aef6 00000048 HH6.i.iy....H... 20e40: 00000000 70000000 cd1fcd1f 4ecdcdcd .......p.......N 20e50: 5454cdcd 54545454 54543b54 12124e54 ..TTTTTTT;TTTN.. 20e60: a968d959 1f1f1f1f 701f1f1f a9a5a5a9 Y.h........p.... 20e70: a9a9a9a9 a9a9a9a9 0808a908 08080808 ................ 20e80: a5080808 a5a5a5a5 a9a908a5 08a9a9a9 ................ 20e90: dfd90254 2323a4d9 a5a52323 08a423a5 T.....####...#.. 20ea0: a5a5a508 b7a5a5a5 02b7b2b2 89971c59 ............Y... 20eb0: 6de96d89 2278d344 dd02dd74 a1a1a1a1 .m.mD.x"t....... 20ec0: a4a4dda1 b2020202 54a55459 3ba90854 ........YT.TT..; 20ed0: 4f3bcd3b 36361f4f 3636361f 361f1f70 ;.;OO.66.666p..6 20ee0: 70707036 70707070 36cb3670 770c69cb 6pppppppp6.6.i.w 20ef0: ec91338b 00000048 00007000 70000000 .3..H....p.....p 20f00: 364fcf70 4e4fcdcd 54cd3b38 544e4e54 p.O6..ON8;.TTNNT 20f10: 54545454 12545454 1f3bdd54 1f1f1f1f TTTTTTT.T.;..... 20f20: 1f1f1f1f 0870701f a9a9a9a5 a9a9a9a9 .....pp......... 20f30: a9a9a9a9 08080808 08080808 08a50808 ................ 20f40: b2a5a9a9 d9a1a1dd d95858d9 2323a4a1 .........XX...## 20f50: a5232323 a4a5a5a5 a5a5a959 a5a5a5a5 ###.....Y....... 20f60: b2b223a5 89970cb7 e9e97889 89e9d36d .#.......x..m... 20f70: dfda021c 2323b2a1 23b7b7b7 54232323 ......##...####T 20f80: 3b545454 3ba93b3b 4f3b3b3b 1f1f1f4f TTT;;;.;;;;OO... 20f90: 361f1f36 3670701f 48707036 70707070 6..6.pp66ppHpppp 20fa0: cb707048 6d69cf69 6944f606 00007036 Hpp.i.im..Di6p.. 20fb0: 00700000 00000000 36cd7000 cdcdcd1f ..p......p.6.... 20fc0: 4ecd4ee9 545454cd 54545454 54545454 .N.N.TTTTTTTTTTT 20fd0: 1f3b5954 1f1f1fa9 1f1f1f1f 1f1f1f1f TY;............. 20fe0: a9a5a970 a9a9a9a9 a9a9a9a9 0808a9a9 p............... 20ff0: 08080808 a9080808 d9a10208 58585858 ............XXXX 21000: d9d9dfdf 2323a4a1 a5232323 a508a5a5 ......#####..... 21010: a51f0202 a5a5a5a5 23a5a5a5 97fae546 ...........#F... 21020: e9788989 e96de9e9 2308911c a1d9a102 ..x...m....#.... 21030: a523b2a4 080808a5 cd54543b a93b3b3b ..#.....;TT.;;;. 21040: 1f4f3b3b 4fa91f1f 1f70704f 70707070 ;;O....OOpp.pppp 21050: 70707036 70707070 70363670 d30c6936 6pppppppp66p6i.. 21060: 69798b67 007048cb 00000000 00000000 g.yi.Hp......... 21070: 4f700000 cdcd4f1f 543bcd1e 545438e9 ..pO.O....;T.8TT 21080: 5454544e 54545454 a9545459 1f1f1fa9 NTTTTTTTYTT..... 21090: 1f1f1f1f 1f1f1f1f a9701f1f a9a9a9a5 ..........p..... 210a0: a9a9a9a9 a9a9a9a9 0808a9a9 08a90808 ................ 210b0: d9d9d9dd d9dfdfdf a1d9d9d9 23b702a1 ...............# 210c0: a5232323 08a5a5a5 a9a10223 a5a5a508 ###.....#....... 210d0: a5a5a5a5 6389e644 2d898989 6de90c0c ....D..c...-...m 210e0: 0a1effe9 b7b2dda1 020202b2 02a4a402 ................ 210f0: 3ba559b2 3ba9a908 543ba9a9 d9a1ddb2 .Y.;...;..;T.... 21100: 4f298888 70701f70 48707070 70707070 ..)Op.pppppHpppp 21110: cb487070 78693636 0c3e06e5 7048cb69 ppH.66ix..>.i.Hp ... 21128: 70700000 4f4f7070 cdcd1e4e bbbb4e4e ..ppppOON...NN.. 21138: 54544e54 54545454 08545454 1f1f1fa9 TNTTTTTTTTT..... 21148: 1f1f1f1f 1f1f1f1f 1f1f1f1f a908a91f ................ 21158: a9a9a9a9 a9a9a9a9 a9a9a9a9 591f08a9 ...............Y 21168: d9a1a1d9 dfdfdfdf a1d9d9d9 23b70229 ............)..# 21178: a5232323 a5a5a5a5 a1b22308 08a5a9b2 ###......#...... 21188: 54a5a5a5 69bfe651 918991ff 2d0c0c0c ...TQ..i.......- 21198: 741c6d2d 58585888 0a0a8858 b202dda1 -m.t.XXXX....... 211a8: 88d9ddb2 d90ad9d9 88d9d9d9 88888888 ................ 211b8: 88888888 701f7029 70707070 70707070 ....)p.ppppppppp 211c8: 70487070 892d6936 0ce2c889 4848cb69 ppHp6i-.....i.HH 211d8: 00000070 00000000 70000000 36707070 p..........pppp6 211e8: 3b381ecd 381eab1e 54543864 54545454 ..8;...8d8TTTTTT 211f8: cd545454 1f1fa9a9 1f1f1f1f 1f1f1f1f TTT............. 21208: 1f1f1f1f 081f1f1f a9a91f08 a9a9a9a9 ................ 21218: a9a9a9a9 591f08a9 dfd9d958 d9d9df58 .......YX...X... 21228: a1a1d9d9 232302a4 a5232323 a5a5a5a5 ......#####..... 21238: b22308a5 08a9a1dd 44a508a5 08388ced ..#........D..8. 21248: 89911cca 0c0c0c91 63d30c2d d9a12923 ........-..c#).. 21258: 888888d9 58585858 59b229d9 d9d9a102 ....XXXX.).Y.... 21268: 880a0ad9 0a0a0ad9 0a0a0a0a 704f0a0a ..............Op 21278: 70707070 70707070 48707070 89cacb48 pppppppppppHH... 21288: 4e0d2d91 4836cbcb 00007070 00000000 .-.N..6Hpp...... 21298: 00000000 36707000 cd38cd1f bb1e7977 .....pp6..8.wy.. 212a8: 54abbb1e 54545454 3b545454 a9a9083b ...TTTTTTTT;;... 212b8: 1f1f1f1f a9a91f1f 1f1f1f1f 1f1f1f1f ................ 212c8: a9a90800 a9a9a9a9 a9a9a9a9 08a9a9a9 ................ 212d8: 0854dd88 d9465908 a1a1a1d9 b723b7a4 ..T..YF.......#. 212e8: a5232323 a5a5a5a5 2308a5a5 b2d902b2 ###........#.... 212f8: 5154081f a508bfed 918963a9 0ccdca63 ..TQ.....c..c... 21308: 910c2d0c a4a4b791 0a0aa1a1 dfd9d90a .-.............. 21318: 5858dfdf 6859ddd9 a1a1a129 0a0a0a0a ..XX..Yh)....... 21328: a1a10a0a cfdda1a1 70703670 70707070 ........p6pppppp 21338: 70707070 6391ec48 cdcd69ca 4836cbcb ppppH..c.i....6H 21348: 00007048 00000000 00000000 70700000 Hp............pp 21358: 4f4fcd4f 54c80e4e 641e1e1e 54545438 O.OON..T...d8TTT 21368: 54545454 a9083b3b 1f1f1fa9 1f1f1f1f TTTT;;.......... 21378: 1f1fa9a9 1f1f1f1f 08a9cd1f a9a9a9a9 ................ 21388: a9a9a9a9 1fa9a9a9 1f00a502 1f1f1f1f ................ 21398: a1d9dda9 2323b702 a5a5a523 a5a5a5a5 ......###....... 213a8: 08a5a5a5 a1b2b223 e6d3540a 08084e90 ....#....T...N.. 213b8: 91ffcb08 690c6391 0c2d0c0c a4b72d63 .....c.i..-.c-.. 213c8: a1a12929 a1a1a1a1 88d9d9d9 d958dfd9 ))............X. 213d8: a42959b2 a1a129a4 dda1a1a1 6846dddd .Y)..)........Fh 213e8: 7036703b 70707070 70707070 07910769 ;p6pppppppppi... 213f8: 36484815 48483648 00707048 00000000 .HH6H6HHHpp..... 21408: 00000000 70007000 cdcd7070 12dc33cd .....p.ppp...3.. 21418: 4e4e4e12 5454bbab 54545454 08543b54 .NNN..TTTTTTT;T. 21428: 1f1fa9a9 1f1f1f1f 1fa91fa9 1f1f1f1f ................ 21438: 12131e1f a9a9a9a9 a9a9a9a9 1fa9a9a9 ................ 21448: a9000808 a9a9a9a9 021f1fa9 2323b2a1 ..............## 21458: a5a5a523 a5a5a5a5 08a5a5a5 b2b22308 #............#.. 21468: e69380a4 08080878 1c4a0808 69916391 ....x.....J..c.i 21478: 0c0c0c69 a5cf632d a40223a5 29a12929 i...-c...#..)).) 21488: a1a1a1a1 d9df88d9 cd0258df 54545968 .........X..hYTT 21498: 59595454 59595959 1f70cd54 70707070 TTYYYYYYT.p.pppp 214a8: cb707070 ec91fa4a 48707048 48484848 ppp.J...HppHHHHH 214b8: 70704848 00000000 00000000 00000000 HHpp............ 214c8: 36367000 77791e4f 54e94e77 54ab1e54 .p66O.ywwN.TT..T 214d8: 54545454 54545454 1fa9a908 1f1f1f1f TTTTTTTT........ 214e8: a9a9a91f 1f1f1f1f 67331e1f a9084f79 ..........3gyO.. 214f8: 1fa9a9a9 a9a9a9a9 1f1fa91f 1f1f1f1f ................ 21508: a9a9a91f 23dddd1f a5a52323 08a508a5 .......###...... 21518: a5a5a5a5 b2230808 ceea5bb2 08a9a95e ......#..[..^... 21528: 63a90808 ca639163 0c0c6969 a963ca0c ...cc.c.ii....c. 21538: a5a508a5 a4a4b2a5 dda1dddd dfd9a1dd ................ 21548: dfd9d9df b212cd68 595959b2 cdcd5454 ....h....YYYTT.. 21558: 70cfcdcd 70707070 4acb7070 cbec0707 ...ppppppp.J.... 21568: 70707048 48484870 48484848 00000070 HppppHHHHHHHp... 21578: 00000000 001f0000 4f700000 541ecd4f ..........pOO..T 21588: 4e4e774e 3838544e 54545454 54595454 NwNNNT88TTTTTTYT 21598: a9a90854 1f1f1f1f a9a91f1f 1f1f1fa9 T............... 215a8: 1379121f a9123113 a9a9a9a9 a9a91f1f ..y..1.......... 215b8: 1fa91fa9 1f1f1f1f a91f1f1f a1a91fa9 ................ 215c8: a5a5a5b2 08080808 08080808 23080808 ...............# 215d8: 5ba66619 08290aa1 3608a91f 639191ff .f.[..)....6...c 215e8: 0cec690c fa91ec2d a5a5a508 a5080808 .i..-........... 215f8: 020202b2 4646dddd d9dfd9a1 cf54d9d9 ......FF......T. 21608: 595454cd 59595959 cd545959 70707070 .TTYYYYYYYT.pppp 21618: ca154870 70cb4a07 70700000 48487070 pH...J.p..ppppHH 21628: 48484848 00007070 00000000 70000000 HHHHpp.........p 21638: 70000070 4ecf3b36 381e543b 1e544e4e p..p6;.N;T.8NNT. 21648: 54545454 59545454 08a53b59 a91f1fa9 TTTTTTTYY;...... 21658: a9a91f1f 1fa9a9a9 0d34121f 79131379 ..........4.y..y 21668: a9a908a9 1f1f1fa9 a91fa9a9 1f1f1f1f ................ 21678: 1f1f1f1f 1fa91f1f a5a5a454 08080808 ........T....... 21688: 08080808 cd08a508 7453a6f1 0aa12902 ..........St.).. 21698: 1f1f23a1 6391ff4a ec696991 63ec2d0c .#..J..c.ii..-.c 216a8: a5a508ca 3ba5a5a5 b2543b3b dd466802 .......;;;T..hF. 216b8: d9dd5968 a1d9d9df cdcfcfcf cdcdcdcd hY.............. 216c8: 545454cd 7070704f 07ca1548 7070154a .TTTOpppH...J.pp 216d8: 70700070 70707070 48484848 00707070 p.ppppppHHHHppp. ... 216f4: 4f1f7000 38cd3b4e 544e5438 544e5454 .p.ON;.88TNTTTNT 21704: 54545454 a9595959 1fa9a908 a91f1f1f TTTTYYY......... 21714: 1fa9a9a9 686868a9 13790d34 08081279 .....hhh4.y.y... 21724: 1fa9a9a9 1f1f1f1f 1f1f1fa9 1f1f1f1f ................ 21734: 1f1f1f1f b7b21fa9 080808a5 08080808 ................ 21744: 44080808 596466e6 a1a40223 a4290a0a ...D.fdY#.....). 21754: 63fffaa9 69690763 0c0cecec 08086963 ...cc.ii....ci.. 21764: 08080808 3b3b3b3b 6868593b 5468dd68 ....;;;;;Yhhh.hT 21774: a1d9d946 cdcb68d9 cdcdcdcd cdcdcd54 F....h......T... 21784: 36704f54 4a07caec 70704815 70007070 TOp6...J.Hpppp.p 21794: 70707070 70704848 70707070 00000000 ppppHHpppppp.... 217a4: 70000000 0000701f 70707000 cd3b544f ...p.p...pppOT;. 217b4: 4e4e3838 4e4e5454 54545459 12595959 88NNTTNNYTTTYYY. 217c4: 1f1fa959 a9a91f1f a91f1f1f 68686854 Y...........Thhh 217d4: 76343468 08797979 a9a9a908 1f1f1f1f h44vyyy......... 217e4: 1f1fa91f 1f1f1f1f 1f1f1f1f 3b1fa91f ...............; 217f4: 0808a502 08080808 5154083b 23597294 ........;.TQ.rY# 21804: 02b223b2 a1a1a1a4 ffec0229 69ec631c .#......)....c.i 21814: ececec69 a5a963ca 3b3b3b08 3b3b3b3b i....c...;;;;;;; 21824: 54cdcd3b 46686868 d9745468 cfa1a1a1 ;..ThhhFhTt..... 21834: cdcdcdcf cdcdcdcd 1536cdcd cbec4aca ..........6..J.. 21844: 70707070 70707070 70707000 70707070 pppppppp.ppppppp 21854: 70704870 00000070 00000000 001f7000 pHppp........p.. 21864: a9700000 1f1f7070 381e38cd 3854544e ..p.pp...8.8NTT8 21874: 5454541e 12595959 3b591212 1f1f1fa9 .TTTYYY...Y;.... 21884: 593ba91f 68b26868 34346868 310d0d0d ..;Yhh.hhh44...1 21894: a9a9a912 1f1fa9a9 1f081f1f 1f1f1f1f ................ 218a4: 1f1f1f1f a9a91f1f 0823021f 3b080808 ..........#....; 218b4: e6783b3b a508e9ed 2323b259 a1a102b2 ;;x.....Y.##.... 218c4: a5292929 699163ec ececec69 1ffa07ec )))..c.ii....... 218d4: 3b3b0808 3b3b3b4f cdcd3b3b 686854cd ..;;O;;;;;...Thh 218e4: cd6868b2 d9a1a168 cfcfcf54 cdcdcdcd .hh.h...T....... 218f4: 36cdcdcd 704815ec 70707070 70707070 ...6..Hppppppppp 21904: 70707070 70707070 70484870 00000070 pppppppppHHpp... 21914: 00000000 00707000 00000000 1f70701f .....pp......pp. 21924: 1e38cd1f 5454381e 5412bb12 59595959 ..8..8TT...TYYYY 21934: 59121259 59595959 0d741259 6868680d Y..YYYYYY.t..hhh 21944: 34346868 0d343434 a9a97931 1fa9a9a9 hh44444.1y...... 21954: a91f1f1f 1f1f1fa9 1f1f1f1f a9a91f1f ................ 21964: b259364f 08080808 94e1e908 3b083bae O6Y..........;.; 21974: 23b223a5 a4b259a5 29292929 ca697002 .#.#.Y..)))).pi. 21984: ecec6969 4a91ecec 08a94fa9 4f4f3b3b ii.....J.O..;;OO 21994: 3bcf4f4f 54cdcdcd 6868b2b2 a1ddcd54 OO.;...T..hhT... 219a4: cfcb46d9 cfcdcfcf cfcdcfcf 70707070 .F..........pppp 219b4: 70707070 70364848 70707070 70707070 ppppHH6ppppppppp 219c4: 70484870 00007070 00000000 00000000 pHHppp.......... 219d4: 00000000 70707070 383b1f1f 544e3838 ....pppp..;888NT 219e4: 12771254 59595959 59681259 b2595959 T.w.YYYYY.hYYYY. 219f4: 683468b2 0dc82bc8 34686868 34343434 .h4h.+..hhh44444 21a04: 3b131340 a9a9a9a9 1f1f1f1f 1f1f081f @..;............ 21a14: 1f1f1f1f a91f1f1f 0d1e4f4f 083b3bb2 ........OO...;;. 21a24: 90e6ae08 083b08e9 59a5a53b b723a523 ......;.;..Y#.#. 21a34: 2929a4b2 cba92929 ec6969cf 63ececec ..))))...ii....c 21a44: a94fa9ec 4f4f4f4f cf4f4f4f cdcdcfcf ..O.OOOOOOO..... 21a54: 59b259cd 546868b2 cfa14654 cfcfcfcf .Y.Y.hhTTF...... 21a64: cdcfcfcf 7070001f 70707070 36363636 ......pppppp6666 21a74: 00707048 70700070 70487070 00007070 Hpp.p.ppppHppp.. ... 21a90: 701f7000 a91f7070 5454543b 38121254 .p.ppp..;TTTT..8 21aa0: 12125959 68126812 34685959 0d0d6868 YY...h.hYYh4hh.. 21ab0: c8c87468 68340dc8 34343434 e8314034 ht....4h44444@1. 21ac0: a9a9a912 1f1f1fa9 1f08701f 1f1f1f1f .........p...... 21ad0: 4fa9a91f 161e4f4f 0854b245 78e6ed6d ...OOO..E.T.m..x 21ae0: 083b3b3b a5a53ba9 a5082359 2902b723 ;;;..;..Y#..#..) 21af0: 1fa5b729 151569cb ecececec a9a936fa )....i.......6.. 21b00: 4f4f4fa9 4f4f4f4f cfcfcfcf 54cdcd4f .OOOOOOO....O..T 21b10: 36540259 54484848 cfcfcfcd cfcfcfcf Y.T6HHHT........ 21b20: 707070cf 48707070 4e4f3636 0070704f .ppppppH66ONOpp. 21b30: 00000000 70707000 00000000 00000000 .....ppp........ 21b40: 00000000 00007070 00000000 3b707070 ....pp......ppp; 21b50: 543ba9a9 59545454 59591259 68686868 ..;TTTTYY.YYhhhh 21b60: 0db2b268 c8683476 6868680d 34c80d0d h...v4h..hhh...4 21b70: 34340234 31403434 a9a9c813 1f1fa91f 4.4444@1........ 21b80: a91f1f1f 1f1f1fa9 a9a9a9a9 06774fa9 .............Ow. 21b90: 4e23e8b5 0c51e697 3b3bcd08 a53ba93b ..#N..Q...;;;.;. 21ba0: a52323a5 b702b2a5 00000008 15360000 .##...........6. 21bb0: ecec1569 4f1ffafa a9a9a9a9 4f4f4f4f i......O....OOOO 21bc0: cfcf4f4f cf4fcfcf 483659cd 48cbcb36 OO....O..Y6H6..H 21bd0: cfcb4f36 cfcfcfcf 700036cf 36707070 6O.......6.pppp6 21be0: 404f3636 70703640 00000000 70000000 66O@@6pp.......p 21bf0: 00000070 00000000 00000000 00000000 p............... 21c00: 70000000 70700070 3b08a9a9 59125454 ...pp.pp...;TT.Y 21c10: 77123812 68746812 b2b26868 3476130d .8.w.hthhh....v4 21c20: b268c876 0d346868 34023434 40343434 v.h.hh4.44.4444@ 21c30: 3b797979 1f1f1fa9 701f1f1f a91fa9a9 yyy;.......p.... 21c40: 1fa9a9a9 31c8cd1f bf79f687 a9d3edbe .......1..y..... 21c50: 3bcdcd3b 3ba9083b 23a5a5a5 08022308 ;..;;..;...#.#.. ... 21c68: 70700000 1f15cb70 a9a9a9a9 4fa9a9a9 ..ppp..........O 21c78: 4f4f4f4f cfcfcf4f 481f59cf 48483636 OOOOO....Y.H66HH 21c88: cf4f3648 4f4fcfcf 7070cf4f 70707070 H6O...OOO.pppppp 21c98: 344f4f36 7036129d 00000070 00000000 6OO4..6pp....... 21ca8: 00000070 70007070 00007070 70700000 p...pp.ppp....pp 21cb8: 00000000 70007070 4f1f1f70 3838593b ....pp.pp..O;Y88 21cc8: 12771212 74127477 68686868 340d68b2 ..w.wt.thhhh.h.4 21cd8: 68767634 0d68b2b2 3434340d 34343434 4vvh..h..4444444 21ce8: af79400d 1f1f08b4 1f1f1f1f 1fa91f1f .@y............. 21cf8: 701fa9a9 79311e4f e35b7976 a94fbf5a ...pO.1yvy[.Z.O. 21d08: cdcd3b3b 4f3b3bcd a508a53b 0023b2a5 ;;...;;O;.....#. ... 21d20: 70000000 701fa91f a94f1f4f a9a9a9a9 ...p...pO.O..... 21d30: 4f4f4f4f cb364f4f 481f594f 48483636 OOOOOO6.OY.H66HH 21d40: 363b4848 364fcfcf 0048cb36 70707070 HH;6..O66.H.pppp 21d50: 124fcf36 364fe29d 00000070 70000000 6.O...O6p......p 21d60: 00000000 48707000 70707048 00000070 .....ppHHpppp... ... 21d78: 1f1f7070 383854a9 77123838 59747412 pp...T8888.w.ttY 21d88: 68681268 59b26868 3468b2b2 68686834 h.hhhh.Y..h44hhh 21d98: 340dc8c8 34020234 fc37f279 a9543765 ...44..4y.7.e7T. 21da8: 1f1fa91f a91f1fa9 4f1f1fa9 7913791e ...........O.y.y 21db8: 65fbd176 3b081e0f cd3b4fa9 4f4fcdcd v..e...;.O;...OO 21dc8: a53b3b4f 00a559a5 00000000 00000000 O;;..Y.......... 21dd8: 00000000 4f1f1f1f 1f361f1f 3636361f .......O..6..666 21de8: 4f4f3636 364f3636 48a95436 48484836 66OO66O66T.H6HHH 21df8: 1fcf4848 36364f36 0036cb36 70707070 HH..6O666.6.pppp 21e08: 4ecf3670 36129d3e 70007036 00000000 p6.N>..66p.p.... 21e18: 70000070 48487070 48484848 00004848 p..pppHHHHHHHH.. ... 21e30: 1f707000 7454a91f 12383874 74741274 .pp...Ttt88.t.tt 21e40: 68b25959 68686868 b2686868 686868b2 YY.hhhhhhhh..hhh 21e50: c8790d68 2c2b3434 fbfc2ee3 c831795b h.y.44+,....[y1. 21e60: a91f1fa9 a91f1fa9 1e4f1f1f 79314513 ..........O..E1y 21e70: e3657167 4f740dd1 3b4fa908 4fcfcdcd gqe...tO..O;...O 21e80: 3b4f4f4f 00a9233b 00000000 00000000 OOO;;#.......... 21e90: 00000000 701f1f70 3670a91f 361f1f1f ....p..p..p6...6 21ea0: 36363636 364f4f36 70083b36 48484848 66666OO66;.pHHHH 21eb0: 1f364848 36364f36 00363636 70707070 HH6.6O66666.pppp 21ec0: 3b4f361f cde29d40 00004836 70007000 .6O;@...6H...p.p 21ed0: 70707000 48484848 15484848 00fd1515 .pppHHHHHHH..... 21ee0: 00007070 70000000 70707070 54a9361f pp.....ppppp.6.T 21ef0: 74747412 68121212 68595974 68686868 .ttt...htYYhhhhh 21f00: 68686868 68b26868 0d343468 fce32c79 hhhhhh.hh44.y,.. 21f10: 76d153e3 79764040 1fa97745 1f1f1f1f .S.v@@vyEw...... 21f20: 13c84ea9 133113e8 f2fcfcaf 0d0d0dc8 .N....1......... 21f30: a9a9a93b cfcdcd4f a9a94f4f 00a9543b ;...O...OO..;T.. ... 21f48: 48151500 1f007070 1fa9701f 36361f1f ...Hpp...p....66 21f58: 36361f1f 36363636 703b3b36 48484848 ..6666666;;pHHHH 21f68: a9364848 36364f1f 70363636 70707000 HH6..O66666p.ppp 21f78: 4f363670 123e3e12 00703636 00000000 p66O.>>.66p..... 21f88: 48487070 15484848 fd151515 07074a4a ppHHHHH.....JJ.. ... 21fa0: 1f700000 4f361f1f 7412543b 12681274 ..p...6O;T.tt.h. 21fb0: 5959340d 740d6868 68687434 b2686868 .4YYhh.t4thhhhh. 21fc0: c8346868 71fcfc53 34340dd1 76767676 hh4.S..q..44vvvv 21fd0: 31453131 4e541277 e8e86777 af313113 11E1w.TNwg...11. 21fe0: 79716510 0d0d0d0d a9a94e0d cfcf4fa9 .eqy.....N...O.. 21ff0: a94f4fcf 001fa5a9 00000000 00000000 .OO............. 22000: cb150000 70707048 1f1f7000 1f1f70a9 ....Hppp.p...p.. 22010: 1f36361f 36363636 703b4f36 48484870 .66.66666O;ppHHH 22020: 1f364848 36363648 70483636 70707070 HH6.H66666Hppppp 22030: 36367070 343e403b 7048364f 00000000 pp66;@>4O6Hp.... 22040: 48484870 15151548 07074afd 4a4a0707 pHHHH....J....JJ 22050: 000000fd 00000000 70700000 361f1f1f ..........pp...6 22060: 12543b4f 68127474 b268130d 0d68b2b2 O;T.tt.h..h...h. 22070: 34346874 68686868 712b6868 79b46ffc th44hhhhhh+q.o.y 22080: 340d0d0d 76797634 31313176 13e8e813 ...44vyvv111.... 22090: 1313e845 37333113 76d13765 0d0dc876 E....137e7.vv... 220a0: 4f74770d cf4fa9a9 a94fcfcf 007008a9 .wtO..O...O...p. ... 220b8: 15480000 70707015 70007070 1f70a91f ..H..ppppp.p..p. 220c8: 361f1f1f 36363636 703b3636 70007070 ...6666666;ppp.p 220d8: 36484848 48484870 00704836 70707070 HHH6pHHH6Hp.pppp 220e8: 36707070 e23e1236 704836cd 48707070 ppp66.>..6HppppH 220f8: 48484848 4afd1515 4a070707 1515fd4a HHHH...J...JJ... 22108: 00004848 00000000 00000000 1f363670 HH..........p66. 22118: 543b4f36 12747459 68c80d74 68b25959 6O;TYtt.t..hYY.h 22128: 68686868 68686834 fc53c8b2 68345b10 hhhh4hhh..S..[4h 22138: 0dc8c834 79763434 31313176 13131331 4...44vyv1111... 22148: 13131313 650f1331 76795b10 c80dc876 ....1..e.[yvv... 22158: 7474770d 4f3b1f4e 4f4fcfcf 0070a93b .wttN.;O..OO;.p. ... 22170: 15000000 700015cb 70707070 a91f0070 .......pppppp... 22180: 36363670 36363636 704f3648 70701f70 p6666666H6Opp.pp 22190: 48487070 36364870 70707048 70707070 ppHHpH66Hppppppp 221a0: 36707070 e240cf36 483636cd 48484870 ppp66.@..66HpHHH 221b0: 15484848 07074afd 15fd4a4a 48481515 HHH..J..JJ....HH 221c0: 00484848 00000000 00000000 1f700000 HHH...........p. 221d0: cd363670 59595454 74127459 68685912 p66.TTYYYt.t.Yhh 221e0: 68686868 b2683468 711053c8 34767664 hhhhh4h..S.qdvv4 221f0: 0d0d3468 0d34340d 13137676 13133131 h4...44.vv..11.. 22200: 31131313 eafcaf13 797979b1 c8c8c876 ...1.....yyyv... 22210: 74770dc8 1fcf7474 3bcdcd3b 00001f3b ..wttt..;..;;... ... 2222c: 00481515 70707070 00707070 36701f1f ..H.ppppppp...p6 2223c: 48363636 70a94f36 70701f70 70707070 666H6O.pp.pppppp 2224c: 48707070 70007070 70707070 70707070 pppHpp.ppppppppp 2225c: 34cd3636 483636cd 48484848 4afd1548 66.4.66HHHHHH..J 2226c: fd4a074a 48151515 48484848 00707048 J.J....HHHHHHpp. 2227c: 00000000 70000000 70000000 4f367070 .......p...ppp6O 2228c: 5454cdcd 12125959 68685974 0d686868 ..TTYY..tYhhhhh. 2229c: 77b26868 2b241053 0d346868 34683434 hh.wS.$+hh4.44h4 222ac: 34343434 31404034 31313113 13131313 44444@@1.111.... 222bc: 0f65e35b 79797967 c8c8c82b 777777c8 [.e.gyyy+....www 222cc: 74383874 4f4f7070 0000701f 00000000 t88tppOO.p...... ... 222e4: 48151548 70707000 70707070 00707070 H..H.pppppppppp. 222f4: 361f7070 701fa936 70707070 70707070 pp.66..ppppppppp 22304: 70707070 70707070 70707070 70707070 pppppppppppppppp 22314: cf364870 48cbcbcf 15484848 074afd15 pH6....HHHH...J. 22324: 1515fd4a 48484815 70484848 00000070 J....HHHHHHpp... ... 2233c: 70000070 4f487070 121254cf 12125959 p..pppHO.T..YY.. 2234c: 68595974 68343434 f1746868 b2c85310 tYYh444hhht..S.. 2235c: 68686868 34343468 34686868 400d3434 hhhhh444hhh444.@ 2236c: 31311331 33313131 33e365fb 76797979 1.111113.e.3yyyv 2237c: c8c8c876 797977c8 38387477 00000038 v....wyywt888... ... 2239c: 15154800 70700000 70707070 70707070 .H....pppppppppp 223ac: 70000070 70707070 70707070 70707070 p..ppppppppppppp 223bc: 70707070 70707070 70707070 70707070 pppppppppppppppp 223cc: 36487070 cbcbcb36 fd151515 fd4a074a ppH66.......J.J. 223dc: 48481515 48484848 00707048 00000000 ..HHHHHHHpp..... ... 223f4: 70000000 36707070 0d12cdcd 59595968 ...pppp6....hYYY 22404: 59595959 34686868 66e56868 34682bbe YYYYhhh4hh.f.+h4 22414: 68686868 34686868 34686834 34343434 hhhhhhh44hh44444 22424: 31317634 b1133131 79f210fc 76767979 4v1111.....yyyvv 22434: c8c8c8c8 45c877c8 381e74c8 00006938 .....w.E.t.88i.. 22444: 00707070 00000000 00000000 00000000 ppp............. 22454: 15150000 70000015 70707070 70707070 .......ppppppppp 22464: 70707070 70707070 70707070 70707070 pppppppppppppppp 22474: 70707070 70707070 70707070 70707070 pppppppppppppppp 22484: 48487070 cbcbcbcb 074aec15 15fd4a07 ppHH......J..J.. 22494: 48484848 00704848 00000000 00000000 HHHHHHp......... ... 224b0: 70707070 4554cd4f 59595976 59595959 ppppO.TEvYYYYYYY 224c0: 68685959 66be2b68 0d6868e5 68683434 YYhhh+.f.hh.44hh 224d0: 68686868 34686868 34460d34 76763434 hhhhhhh44.F444vv 224e0: e3f27940 7967b1fc c8767679 c8c8c8c8 @y....gyyvv..... 224f0: 77777777 381e1e77 00483838 70707000 wwwww..888H..ppp ... 2250c: 15700000 00004815 70707070 70707070 ..p..H..pppppppp 2251c: 70707070 701f7070 70707070 70707070 pppppp.ppppppppp 2252c: 70707070 70707070 70707070 70707070 pppppppppppppppp 2253c: 48484848 15cb4848 ca91074a 4815694a HHHHHH..J...Ji.H 2254c: 70484848 00000000 00000000 00000000 HHHp............ ... 22568: 70700000 ab4f3636 59126887 59595959 ..pp66O..h.YYYYY 22578: 68685959 dba6f174 6868b274 68340d0d YYhht...t.hh..4h 22588: 68686868 34686868 0d0d3434 40343446 hhhhhhh444..F44@ 22598: e3372c79 764067b1 c8c8c876 77c8c8c8 y,7..g@vv......w 225a8: 77777777 1e1e1e1e 000c3838 70000000 wwww....88.....p ... 225c4: 48000000 00701515 70707000 70707070 ...H..p..ppppppp 225d4: 70707070 70707070 70707070 70707070 pppppppppppppppp 225e4: 70707070 70707070 70707070 70707070 pppppppppppppppp 225f4: 48484848 ca15cbcb eccafa91 4815e969 HHHH........i..H 22604: 00004848 00000000 00000000 00000000 HH.............. ... 2261c: 70000000 70007070 0c363636 121277dc ...ppp.p666..w.. 2262c: 59595959 68595959 646666d1 68686868 YYYYYYYh.ffdhhhh 2263c: 68680d68 68686868 34686868 46346834 h.hhhhhhhhh44h4F 2264c: 2b34460d f27171f1 76767679 c8c8c876 .F4+.qq.yvvvv... 2265c: 7777c8c8 77777777 381e1e1e cb384e38 ..wwwwww...88N8. 2266c: 00000000 00000070 00000000 00000000 ....p........... 2267c: 00000000 00151515 70700000 70707070 ..........pppppp 2268c: 70707070 70707070 70707070 70707070 pppppppppppppppp 2269c: 70707070 70707070 4f367070 48707070 pppppppppp6OpppH 226ac: 48cb4848 6307fd48 15154a91 48e9e9cb HH.HH..c.J.....H 226bc: 00007048 00000000 00000000 00000000 Hp.............. ... 226d4: 00007000 70707070 36cfcf1f 4e6979ab .p..pppp...6.yiN 226e4: 54545454 12595959 74f16553 68686868 TTTTYYY.Se.thhhh 226f4: 68686868 68686868 34686868 6868340d hhhhhhhhhhh4.4hh 22704: b02b4634 0d67f153 4076400d c80d0d0d 4F+.S.g..@v@.... 22714: 7777c8c8 1e1e7777 381e1e1e e94ee938 ..wwww.....88.N. 22724: 00000048 00007000 00000000 00000000 H....p.......... 22734: 00000000 1548fd00 70000000 70707070 ......H....ppppp 22744: 70707070 70707070 70707070 70707070 pppppppppppppppp 22754: 70707070 70707070 594f7070 4848703b ppppppppppOY;pHH 22764: 48cbcb48 9163faec 15cb154a 691e69cb H..H..c.J....i.i 22774: 00007048 00000000 00000000 00000000 Hp.............. ... 2278c: 00707000 70700000 4f367070 cf691e0c .pp...pppp6O..i. 2279c: 54cdcdcf bb545954 682b5a66 68686868 ...TTYT.fZ+hhhhh 227ac: 68686834 34686868 68686834 340d0d68 4hhhhhh44hhhh..4 227bc: b0640d68 34462bb0 0d0d0d34 0d0d0d0d h.d..+F44....... 227cc: 7777c8c8 1e1e1e77 381e1e1e 4ee9e9e9 ..www......8...N 227dc: 0000000c 00700000 00000000 00000000 ......p......... 227ec: 00000000 15fd4800 70000048 70707070 .....H..H..ppppp 227fc: 70707070 70707070 70707070 70707070 pppppppppppppppp 2280c: 70707070 70707070 59367070 48483659 pppppppppp6YY6HH 2281c: ec4848cb 4a631c63 cbcb1515 124ecbcb .HH.c.cJ......N. 2282c: 00007036 00000000 00000000 00000000 6p.............. ... 22844: 70700000 70707070 36367070 cfcfcf36 ..pppppppp666... 22854: 59cdcfcf 2f545459 59597294 68686812 ...YYTT/.rYY.hhh 22864: 68346868 34686868 6874460d 0d466868 hh4hhhh4.FthhhF. 22874: 2b2bc80d 46464646 0d343446 0d0d0d0d ..++FFFFF44..... 22884: 7777c80d 1e1e7777 e91e3838 4ee9e9e9 ..wwww..88.....N 22894: 0000cb4e 70000000 00000000 00000000 N......p........ 228a4: 00000000 15150000 00007015 70707070 .........p..pppp 228b4: 70707070 70707070 70707070 70707070 pppppppppppppppp 228c4: 48707070 70707048 cf487070 cb483654 pppHHpppppH.T6H. 228d4: 631548cb 154a6397 484815cb 12693648 .H.c.cJ...HHH6i. 228e4: 0070703b 00000000 00000000 00000000 ;pp............. ... 228fc: 70700000 70707070 4f707070 3636364f ..pppppppppOO666 2290c: 544fcf4f 0b545968 59a5bf94 74681259 O.OThYT....YY.ht 2291c: 34686868 6868400d 74460d68 74686868 hhh4.@hhh.Fthhht 2292c: 74460d0d 46746868 46746874 0d0d3434 ..FthhtFthtF44.. 2293c: c80dc80d 1e1e7779 e9e9381e 4ee9e9e9 ....yw...8.....N 2294c: 00480c0c 00000000 00000070 00000000 ..H.....p....... 2295c: 00000000 fd000000 00001548 70707000 ........H....ppp 2296c: 70707070 70707070 70707070 70707070 pppppppppppppppp 2297c: 361f7070 70363636 36707070 15cb36cf pp.6666pppp6.6.. 2298c: 73071548 48154a1c 48484848 4e484848 H..s.J.HHHHHHHHN 2299c: 00703612 00000000 00000000 00000000 .6p............. ... 229b4: 70700000 70707070 70707070 36364f4f ..ppppppppppOO66 229c4: cfcf3636 24387454 54541e94 12595959 66..Tt8$..TTYYY. 229d4: 68687474 6831f640 68686868 74686874 tthh@.1hhhhhthht 229e4: 68747474 68687468 74686868 0d464646 ttthhthhhhhtFFF. 229f4: 79c80d0d 387731f6 e9e9e938 0c0ce9e9 ...y.1w88....... 22a04: 0069cdcd 00000000 00007000 00000000 ..i......p...... ... 22a1c: 001548fd 70700000 70707070 70707070 .H....pppppppppp 22a2c: 70707070 70707070 36367070 4f543636 pppppppppp6666TO 22a3c: 48707070 15cb3636 73ff4acb 48481507 pppH66...J.s..HH 22a4c: 48484848 cb484848 70704f12 00000000 HHHHHHH..Opp.... ... 22a6c: 70000000 70707070 701f1f70 36361f70 ...pppppp..pp.66 22a7c: cf363636 5a4ecdcf cd3b38e6 5959593b 666...NZ.8;.;YYY 22a8c: 68747412 3487f634 68686834 74747468 .tth4..44hhhhttt 22a9c: 74747474 68687474 74746868 46467468 tttttthhhhtthtFF 22aac: 31c8c80d 1ec8f616 e9e9e91e cd0ce9e9 ...1............ 22abc: cbcdcdcd 00000000 00000000 00000000 ................ 22acc: 70700000 00000070 4848fd48 48000000 ..ppp...H.HH...H 22adc: 70707070 70707070 70707070 70707070 pppppppppppppppp 22aec: 36367070 59684f36 48484836 cb15cb36 pp666OhY6HHH6... 22afc: 63736315 48154815 48484848 48484848 .csc.H.HHHHHHHHH 22b0c: 7070cdcd 00000000 00000000 00000000 ..pp............ ... 22b28: 361f1f70 36361f1f 1f1f1f1f cf363636 p..6..66....666. 22b38: 32e9cfcf cd54e932 59543b3b 74746859 ...22.T.;;TYYhtt 22b48: 34877968 68686868 74746868 68686868 hy.4hhhhhhtthhhh 22b58: 68686874 74746868 74747468 79c80d74 thhhhhtthtttt..y 22b68: 7479165d e9e9e91e cd0c0c0c cdcdcdcd ].yt............ 22b78: 00000048 00000000 70000000 36363636 H..........p6666 22b88: 00363636 48151500 00000000 70707048 666....H....Hppp 22b98: 70707070 70707070 70707070 36484870 pppppppppppppHH6 22ba8: 34684f36 4848484f 15151548 4aff73ca 6Oh4OHHHH....s.J 22bb8: 48481548 70704848 48487070 0048cd36 H.HHHHppppHH6.H. ... 22be0: 361f1f00 36363636 36363636 36363636 ...6666666666666 22bf0: e66dcfcb 59544e5a 543b3b54 74125959 ..m.ZNTYT;;TYY.t 22c00: 34406874 68686868 68686868 68686868 th@4hhhhhhhhhhhh 22c10: 68121268 74741212 74686874 c80d7474 h..h..ttthhttt.. 22c20: 77e816f6 0ce9e91e cd0c0c0c cfcdcdcd ...w............ 22c30: 00007069 00000000 cb000000 36cbcfcf ip.............6 22c40: 48703636 48fd0070 00000015 70704800 66pHp..H.....Hpp 22c50: 70707070 70707070 70707070 36487070 ppppppppppppppH6 22c60: 7e593636 48363654 fdcb1548 15fa901c 66Y~T66HH....... 22c70: 48481515 70704848 70707070 00363648 ..HHHHppppppH66. ... 22c98: 1f1f0000 3636361f 36363636 36363636 .....66666666666 22ca8: 576d4f36 54cf4e24 3b3b5974 12595954 6OmW$N.TtY;;TYY. 22cb8: 68747474 68686868 12686812 12747474 ttthhhhh.hh.ttt. 22cc8: 12121274 74121212 12127474 c8747412 t......ttt...tt. 22cd8: c8871606 0ce9381e cdcdcd0c cfcfcfcd .....8.......... 22ce8: 0000cbcf 00000000 36000000 36cbcfcf ...........6...6 22cf8: 48363636 fd707048 00004848 70700000 666HHpp.HH....pp 22d08: 70707070 70487070 48707070 48487048 ppppppHppppHHpHH 22d18: 7e543636 cb36cf68 071515cb 484aff73 66T~h.6.....s.JH 22d28: 48484815 70707048 70707070 70707070 .HHHHppppppppppp ... 22d50: 1f000000 361f1f1f 36363636 36363636 .......666666666 22d60: 57e93636 cfcd548c cd5454cf 59543b4f 66.W.T...TT.O;TY 22d70: 74747459 12686868 12686812 38743812 Yttthhh..hh..8t8 22d80: 12121212 12121212 12383812 74741212 .........88...tt 22d90: c8f61613 0ce9381e cfcdcdcd cfcfcfcf .....8.......... 22da0: 0048cfcf 00000000 70000000 cbcbcfcf ..H........p.... 22db0: 483636cb 48704848 007048fd 70000000 .66HHHpH.Hp....p 22dc0: 70707070 70707070 70707070 48484870 pppppppppppppHHH 22dd0: 343b3636 cbcbcd68 1cfd4815 1515fa22 66;4h....H.."... 22de0: 48484815 70707048 70707070 00707070 .HHHHpppppppppp. ... 22e0c: 1f36361f 3636361f 36363636 e60c3636 .66..666666666.. 22e1c: cdcfcded cfcfcfcf 3b4f4fcf 38121254 .........OO;T..8 22e2c: 12121238 12686812 12121212 12121212 8....hh......... 22e3c: 12121212 12125959 12121212 c8f6f60d ....YY.......... 22e4c: 0ce93838 cfcfcdcd cfcfcfcf 70cfcfcf 88.............p ... 22e64: cbcbcfcb 363636cb 70484848 004815fd .....666HHHp..H. 22e74: 00000000 70707070 70707070 70707070 ....pppppppppppp 22e84: 48487070 68cf3648 cbcb5402 7307cbcb ppHHH6.h.T.....s 22e94: 1548fdff 70484848 70707070 70707070 ..H.HHHppppppppp 22ea4: 00707070 00000000 00000000 00000000 ppp............. ... 22ec4: 36363600 1f36361f 36361f1f edcd3636 .666.66...6666.. 22ed4: cf4f0c32 cfcfcfcf 3b4f54cf 12593b3b 2.O......TO;;;Y. 22ee4: 12121212 12681212 12121259 12123838 ......h.Y...88.. 22ef4: 59121212 59595912 59595959 77310d12 ...Y.YYYYYYY..1w 22f04: 0ce94e12 cfcfcfcd cfcfcfcf 36cfcfcf .N.............6 ... 22f1c: cbcfcf70 36363636 48484848 4848fd70 p...6666HHHHp.HH 22f2c: 00000000 70707000 48707070 70707070 .....ppppppHpppp 22f3c: 48707070 59364848 69695402 226315cb pppHHH6Y.Tii..c" 22f4c: 151515fa 70484848 70707070 70707070 ....HHHppppppppp 22f5c: 70707070 00000000 00000000 00000000 pppp............ ... 22f7c: 1f1f0000 1f361f1f 1f1f1f36 9bcf3636 ......6.6...66.. 22f8c: cf366d57 cfcfcfcf 3636cfcf 593b4f36 Wm6.......666O;Y 22f9c: 59121212 59125959 12121212 12121212 ...YYY.Y........ 22fac: 59121212 54595959 54545454 4e125454 ...YYYYTTTTTTT.N 22fbc: cd0c4e4e cfcfcfcf cfcfcfcf cb3636cb NN...........66. 22fcc: 00000048 00000000 cbcfcb00 483636cb H............66H 22fdc: 48484848 48fd4870 00000048 70700000 HHHHpH.HH.....pp 22fec: 70707070 70707048 70707070 cd484848 ppppHpppppppHHH. 22ffc: 69695968 7397eccb 4815484a 70704848 hYii...sJH.HHHpp 2300c: 70707070 70707070 70707070 00000070 ppppppppppppp... ... 23034: 1f000000 1f1f1f1f 361f1f1f 891f361f ...........6.6.. 23044: cb1f7857 cdcfcbcf 54cfcfcf 3b3b4fcd Wx.........T.O;; 23054: 59121259 59595959 59126812 59595959 Y..YYYYY.h.YYYYY 23064: 54595959 54545454 54545454 54545454 YYYTTTTTTTTTTTTT 23074: cdcdcd54 cfcfcfcf cbcbcbcf 363636cb T............666 23084: 00007036 00000000 cbcf7000 703636cb 6p.......p...66p 23094: 48487070 15157048 00007048 70000000 ppHHHp..Hp.....p 230a4: 70707070 70707070 70707070 36484870 pppppppppppppHH6 230b4: 15695454 6373cacb 48484815 70484848 TTi...sc.HHHHHHp 230c4: 70707070 70707070 00000070 00000000 ppppppppp....... ... 230f0: 70707070 1f707070 2d1f361f 364f9781 ppppppp..6.-..O6 23100: cd4f3636 cf69cfcd 4f4f4fcd 125959cd 66O...i..OOO.YY. 23110: 59595959 59121259 54545959 54545454 YYYYY..YYYTTTTTT 23120: 54545454 54545454 cdcd5454 cfcdcdcd TTTTTTTTTT...... 23130: 4f4fcfcf 36363636 36363636 00003636 ..OO6666666666.. 23140: 00000000 cb360000 483636cb 48707048 ......6..66HHppH 23150: fd704848 00004848 00000000 70707070 HHp.HH......pppp 23160: 70707070 70707070 48487070 cbcbcf36 ppppppppppHH6... 23170: ca736315 48481548 70707048 70707070 .cs.H.HHHppppppp 23180: 70707070 00000070 00000000 00000000 ppppp........... ... 231a8: 70707000 70707070 cf1f1f70 1f692273 .pppppppp...s"i. 231b8: 36363636 cd69cf4f 36cf4e0c 5954cf36 6666O.i..N.66.TY 231c8: 54595959 54545459 54545454 54544e54 YYYTYTTTTTTTTNTT 231d8: 54545454 54545454 3bcdcd3b 4f4f3b3b TTTTTTTT;..;;;OO 231e8: 364f4f4f 36363636 36363636 00703636 OOO66666666666p. 231f8: 00000000 36000000 483636cb 48484848 .......6.66HHHHH 23208: 48484848 0048484a 00000000 70707000 HHHHJHH......ppp 23218: 70707070 70707070 48707070 cbcbcb48 pppppppppppHH... 23228: fd1c1cec 48481548 70707070 70707070 ....H.HHpppppppp 23238: 00707070 00000070 00000000 00000000 ppp.p........... ... 23260: 70700000 70707070 1f707070 7091ed91 ..ppppppppp....p 23270: 36361f70 0ccdcf36 cd2b2b0c cdcf4fcf p.666....++..O.. 23280: 54545454 54545454 54545454 54545454 TTTTTTTTTTTTTTTT 23290: 54545454 3b54cd54 4fa9a9a9 1f1fa91f TTTTT.T;...O.... 232a0: 1f1f701f 361f1f1f 36361f1f 00701f36 .p.....6..666.p. 232b0: 00000000 70000000 48363636 48704848 .......p666HHHpH 232c0: 70484848 4848fd48 00000000 70480000 HHHpH.HH......Hp 232d0: 70707048 70707070 48707070 cbcb4848 HppppppppppHHH.. 232e0: 15631c4a 48484848 70707070 70707070 J.c.HHHHpppppppp 232f0: 00000000 70007000 00000000 00000000 .....p.p........ ... 23318: 70000000 70707070 70707070 361cff69 ...pppppppppi..6 23328: 36707070 cdcd3636 1e6eab0c 4f3636cf ppp666....n..66O 23338: 545454cf 54545454 54545454 54545454 .TTTTTTTTTTTTTTT 23348: 3b3b3b3b a93b3b3b 701f1f1f 70707070 ;;;;;;;....ppppp 23358: 70707070 701f1f70 70707070 70707070 ppppp..ppppppppp ... 23370: 36367070 48484870 48487070 4815fd70 pp66pHHHppHHp..H 23380: 00000070 70000000 70707070 70707070 p......ppppppppp 23390: 48707070 48cb4848 48071c4a 70484848 pppHHH.HJ..HHHHp 233a0: 00000070 00007000 00000000 00007000 p....p.......p.. ... 233d4: 70707070 70707070 4affca70 70707070 ppppppppp..Jpppp 233e4: cf363636 0e6ee9cd 3636cf0c 54544f36 666...n...666OTT 233f4: 3bcdcd54 cdcdcdcd 3b54cd3b 3b3b3b3b T..;....;.T;;;;; 23404: 1f3b3b3b 7070701f 70707070 00007000 ;;;..ppppppp.p.. 23414: 70700000 70707070 00707070 00000000 ..ppppppppp..... 23424: 00000000 48707000 70484848 48484848 .....ppHHHHpHHHH 23434: 48fd0048 00000048 70000000 70707070 H..HH......ppppp 23444: 70700070 48707070 48484848 484a634a p.pppppHHHHHJcJH 23454: 70704848 00000070 00007070 00000070 HHppp...pp..p... 23464: 00707000 00000000 00000000 00000000 .pp............. ... 2348c: 70707000 70707070 91633670 70707036 .pppppppp6c.6ppp 2349c: 36367070 b5670ccf 36cdcdab 3b4f3636 pp66..g....666O; 234ac: 3b3b3bcd 3b3b3b3b 4f3b3b3b 1f1fa94f .;;;;;;;;;;OO... 234bc: 701fa9a9 70707070 00707070 00000000 ...pppppppp..... 234cc: 00000000 00707000 00700000 00000000 .....pp...p..... 234dc: 00000000 70700000 70704870 70487070 ......pppHppppHp 234ec: 4a707048 00004848 00000000 00707000 HppJHH.......pp. 234fc: 00000000 70707000 48484848 48fd634a .....pppHHHHJc.H 2350c: 70704848 00007070 00000000 00000000 HHpppp.......... 2351c: 70700000 00000070 00000000 00000000 ..ppp........... ... 23544: 70700000 70707070 63ec7000 707070ec ..pppppp.p.c.ppp 23554: 36707070 6e4e4f36 cf690c87 4f1f7036 ppp66ONn..i.6p.O 23564: 3b3b3b3b a9080808 70a9a91f 1f707070 ;;;;.......pppp. 23574: 7070701f 00707070 00000070 00000000 .pppppp.p....... ... 23598: 70000000 70707070 70707070 48007070 ...ppppppppppp.H 235a8: 007070fd 00000000 00700000 00000000 .pp.......p..... 235b8: 70700000 48484848 4815fa4a 00704848 ..ppHHHHJ..HHHp. 235c8: 00007000 00000000 00000000 70700000 .p............pp 235d8: 00007036 00000000 00000000 00000000 6p.............. ... 235fc: 70000000 00707070 4a700000 000036fa ...pppp...pJ.6.. 2360c: 70700000 2a363670 4f4f1e6e 70707036 ..ppp66*n.OO6ppp 2361c: 1f4f4f1f 1f1fa91f 70700070 70707070 .OO.....p.pppppp 2362c: 70707070 00707070 00000000 00000000 ppppppp......... 2363c: 00000000 00007000 00000000 00000000 .....p.......... ... 23654: 70707000 70707070 00707070 00701515 .pppppppppp...p. ... 23670: 70700000 48484848 48154a4a 00704848 ..ppHHHHJJ.HHHp. ... 2368c: 70700000 00704f36 00000000 00000000 ..pp6Op......... ... 236b8: 00007070 70000000 00704a4a 70000000 pp.....pJJp....p 236c8: 36367070 4f4fab67 70703636 1f1f7070 pp66g.OO66pppp.. 236d8: 00707070 70707000 70707070 70707070 ppp..ppppppppppp 236e8: 70707070 00000000 00000000 00000000 pppp............ 236f8: 00700000 00000000 00000000 00000000 ..p............. 23708: 00000000 70000000 00007070 00000000 .......ppp...... 23718: 70481500 00000000 00000000 00000000 ..Hp............ 23728: 70000000 48484848 48484afd 00007048 ...pHHHH.JHHHp.. ... 23744: 70000000 00363b70 00000000 00000000 ...pp;6......... ... 23770: 00707000 00000000 70154a70 00000000 .pp.....pJ.p.... 23780: 70707000 36364e4f 70703636 70707070 .pppON6666pppppp 23790: 70707070 00000070 70707000 70707070 ppppp....ppppppp 237a0: 00707070 00000000 00000000 00000000 ppp............. ... 237d0: 00150000 00000000 00000000 00000000 ................ 237e0: 70000000 48484870 4848fdfd 00007048 ...ppHHH..HHHp.. ... 237fc: 70000000 703b4f70 00000000 00000000 ...ppO;p........ ... 23830: cb4a4800 00000000 70700000 36707070 .HJ.......ppppp6 23840: 7070701f 70707070 70707070 00007070 .ppppppppppppp.. 23850: 00000000 70000000 00000000 00000000 .......p........ ... 23888: 48700000 00000000 00000000 00000000 ..pH............ 23898: 00000000 48484870 4848fdfd 00007048 ....pHHH..HHHp.. ... 238b8: 364f1f70 00000070 00000000 00000000 p.O6p........... ... 238e8: fd480000 00000048 00000000 70707070 ..H.H.......pppp 238f8: 70707070 70000070 70707070 00707070 ppppp..pppppppp. ... 23954: 48487070 48481515 00000070 00000000 ppHH..HHp....... ... 23970: 4f4f7000 00000070 00000000 00000000 .pOOp........... ... 239a0: 48000000 00004848 00000000 70000000 ...HHH.........p 239b0: 70707070 00000070 70707000 00000070 ppppp....pppp... ... 23a0c: 48487000 48481515 00000070 00000000 .pHH..HHp....... ... 23a28: 4f1f0000 0000001f 00000000 00000000 ...O............ ... 23a58: 70000000 70484848 00000000 00000000 ...pHHHp........ 23a68: 70000000 00000000 70000000 00000070 ...p.......pp... ... 23ac4: 48700000 48481515 00000070 00000000 ..pH..HHp....... ... 23ae0: 36700000 00007036 00000000 00000000 ..p66p.......... ... 23b14: 48484870 00000000 00000000 00000000 pHHH............ ... 23b7c: 70000000 70481548 00000070 00000000 ...pH.Hpp....... ... 23b98: 70000000 00007036 00000000 00000000 ...p6p.......... ... 23bc8: 6c6c6548 6f57206f 00646c72 Hello World. 00023bd4 <__func__.9536>: 23bd4: 645f766c 67756265 6568635f 735f6b63 lv_debug_check_s 23be4: 00007274 tr.. 00023be8 : 23be8: 33323130 37363534 42413938 46454443 0123456789ABCDEF 23bf8: 00000000 .... 00023bfc <__func__.9554>: 23bfc: 645f766c 67756265 676f6c5f 7272655f lv_debug_log_err 23c0c: 0000726f 742f2e2e 64726968 74726170 or..../thirdpart 23c1c: 766c2f79 732f6c67 6c2f6372 6f635f76 y/lvgl/src/lv_co 23c2c: 6c2f6572 65645f76 2e677562 00000063 re/lv_debug.c... 23c3c: 645f766c 67756265 6568635f 735f6b63 lv_debug_check_s 23c4c: 203a7274 6f6e2061 53412d6e 20494943 tr: a non-ASCII 23c5c: 72616863 73616820 70657220 65746165 char has repeate 23c6c: 6f6d2064 74206572 206e6168 445f564c d more than LV_D 23c7c: 47554245 5254535f 58414d5f 5045525f EBUG_STR_MAX_REP 23c8c: 20544145 656d6974 00002973 645f766c EAT times)..lv_d 23c9c: 67756265 6568635f 735f6b63 203a7274 ebug_check_str: 23cac: 61766e69 2064696c 72616863 206e6920 invalid char in 23cbc: 20656874 69727473 2820676e 3031203c the string (< 10 23ccc: 6c617620 00296575 645f766c 67756265 value).lv_debug 23cdc: 6568635f 735f6b63 203a7274 69727473 _check_str: stri 23cec: 6920676e 6f6c2073 7265676e 61687420 ng is longer tha 23cfc: 564c206e 4245445f 535f4755 4d5f5254 n LV_DEBUG_STR_M 23d0c: 4c5f5841 54474e45 00000048 AX_LENGTH... 00023d18 <__func__.9507>: 23d18: 645f766c 5f707369 5f746567 5f726373 lv_disp_get_scr_ 23d28: 00746361 act. 00023d2c <__func__.9515>: 23d2c: 645f766c 5f707369 5f746567 6579616c lv_disp_get_laye 23d3c: 6f745f72 00000070 r_top... 00023d44 <__func__.9519>: 23d44: 645f766c 5f707369 5f746567 6579616c lv_disp_get_laye 23d54: 79735f72 00000073 r_sys... 00023d5c <__func__.9524>: 23d5c: 645f766c 5f707369 69737361 735f6e67 lv_disp_assign_s 23d6c: 65657263 0000006e creen... 00023d74 <__func__.9529>: 23d74: 645f766c 5f707369 5f746567 63616e69 lv_disp_get_inac 23d84: 65766974 6d69745f 00000065 tive_time... 00023d90 <__func__.9539>: 23d90: 645f766c 5f707369 67697274 7463615f lv_disp_trig_act 23da0: 74697669 00000079 ivity... 00023da8 <__func__.9543>: 23da8: 5f766c5f 70736964 7465675f 6665725f _lv_disp_get_ref 23db8: 61745f72 00006b73 742f2e2e 64726968 r_task..../third 23dc8: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 23dd8: 6f635f76 6c2f6572 69645f76 632e7073 v_core/lv_disp.c 23de8: 00000000 735f766c 615f7263 203a7463 ....lv_scr_act: 23df8: 64206f6e 6c707369 72207961 73696765 no display regis 23e08: 65726574 6f742064 74656720 73746920 tered to get its 23e18: 74636120 6373202e 6e656572 00000000 act. screen.... 23e28: 6c5f766c 72657961 706f745f 6f6e203a lv_layer_top: no 23e38: 73696420 79616c70 67657220 65747369 display registe 23e48: 20646572 67206f74 69207465 74207374 red to get its t 23e58: 6c20706f 72657961 00000000 6c5f766c op layer....lv_l 23e68: 72657961 7379735f 6f6e203a 73696420 ayer_sys: no dis 23e78: 79616c70 67657220 65747369 20646572 play registered 23e88: 67206f74 69207465 73207374 202e7379 to get its sys. 23e98: 6579616c 00000072 645f766c 5f707369 layer...lv_disp_ 23ea8: 69737361 735f6e67 65657263 74203a6e assign_screen: t 23eb8: 74207972 7361206f 6e676973 6e206120 ry to assign a n 23ec8: 732d6e6f 65657263 626f206e 7463656a on-screen object 23ed8: 00000000 645f766c 5f707369 5f746567 ....lv_disp_get_ 23ee8: 63616e69 65766974 6d69745f 6e203a65 inactive_time: n 23ef8: 6964206f 616c7073 65722079 74736967 o display regist 23f08: 64657265 00000000 645f766c 5f707369 ered....lv_disp_ 23f18: 67697274 7463615f 74697669 6e203a79 trig_activity: n 23f28: 6964206f 616c7073 65722079 74736967 o display regist 23f38: 64657265 00000000 645f766c 5f707369 ered....lv_disp_ 23f48: 5f746567 72666572 7361745f 6e203a6b get_refr_task: n 23f58: 6964206f 616c7073 65722079 74736967 o display regist 23f68: 64657265 00000000 ered.... 00023f70 <__func__.9740>: 23f70: 675f766c 70756f72 6572635f 00657461 lv_group_create. 00023f80 <__func__.9754>: 23f80: 675f766c 70756f72 6464615f 6a626f5f lv_group_add_obj 23f90: 00000000 742f2e2e 64726968 74726170 ....../thirdpart 23fa0: 766c2f79 732f6c67 6c2f6372 6f635f76 y/lvgl/src/lv_co 23fb0: 6c2f6572 72675f76 2e70756f 00000063 re/lv_group.c... 23fc0: 2074754f 6d20666f 726f6d65 00000079 Out of memory... 23fd0: 675f766c 70756f72 6464615f 6a626f5f lv_group_add_obj 23fe0: 6874203a 626f2065 7463656a 20736920 : the object is 23ff0: 65726c61 20796461 65646461 6f742064 already added to 24000: 69687420 72672073 0070756f 675f766c this group.lv_g 24010: 70756f72 6464615f 6a626f5f 7361203a roup_add_obj: as 24020: 6e676973 6a626f20 20746365 61206f74 sign object to a 24030: 746f206e 20726568 756f7267 00000070 n other group... 00024040 <__func__.9914>: 24040: 695f766c 0074696e lv_init. 00024048 <__func__.9921>: 24048: 645f766c 696e6965 00000074 lv_deinit... 00024054 <__func__.9946>: 24054: 6f5f766c 645f6a62 615f6c65 636e7973 lv_obj_del_async 24064: 00000000 .... 00024068 <__func__.10139>: 24068: 6f5f766c 735f6a62 615f7465 5f6f7475 lv_obj_set_auto_ 24078: 6c616572 006e6769 realign. 00024080 <__func__.10148>: 24080: 6f5f766c 735f6a62 655f7465 635f7478 lv_obj_set_ext_c 24090: 6b63696c 6572615f 00000061 lick_area... 0002409c <__func__.10276>: 2409c: 6f5f766c 735f6a62 615f7465 685f7664 lv_obj_set_adv_h 240ac: 65747469 00007473 ittest.. 000240b4 <__func__.10282>: 240b4: 6f5f766c 735f6a62 635f7465 6b63696c lv_obj_set_click 240c4: 00000000 .... 000240c8 <__func__.10288>: 240c8: 6f5f766c 735f6a62 745f7465 0000706f lv_obj_set_top.. 000240d8 <__func__.10294>: 240d8: 6f5f766c 735f6a62 645f7465 00676172 lv_obj_set_drag. 000240e8 <__func__.10300>: 240e8: 6f5f766c 735f6a62 645f7465 5f676172 lv_obj_set_drag_ 240f8: 00726964 dir. 000240fc <__func__.10306>: 240fc: 6f5f766c 735f6a62 645f7465 5f676172 lv_obj_set_drag_ 2410c: 6f726874 00000077 throw... 00024114 <__func__.10312>: 24114: 6f5f766c 735f6a62 645f7465 5f676172 lv_obj_set_drag_ 24124: 65726170 0000746e parent.. 0002412c <__func__.10322>: 2412c: 6f5f766c 735f6a62 705f7465 6e657261 lv_obj_set_paren 2413c: 76655f74 00746e65 t_event. 00024144 <__func__.10333>: 24144: 6f5f766c 615f6a62 705f6464 65746f72 lv_obj_add_prote 24154: 00007463 ct.. 00024158 <__func__.10339>: 24158: 6f5f766c 635f6a62 7261656c 6f72705f lv_obj_clear_pro 24168: 74636574 00000000 tect.... 00024170 <__func__.10390>: 24170: 6f5f766c 735f6a62 655f7465 746e6576 lv_obj_set_event 24180: 0062635f _cb. 00024184 <__func__.10406>: 24184: 655f766c 746e6576 6e65735f 75665f64 lv_event_send_fu 24194: 0000636e nc.. 00024198 <__func__.10397>: 24198: 655f766c 746e6576 6e65735f 00000064 lv_event_send... 000241a8 <__func__.10419>: 241a8: 6f5f766c 735f6a62 735f7465 616e6769 lv_obj_set_signa 241b8: 62635f6c 00000000 l_cb.... 000241c0 <__func__.10431>: 241c0: 6f5f766c 735f6a62 645f7465 67697365 lv_obj_set_desig 241d0: 62635f6e 00000000 n_cb.... 000241d8 <__func__.10437>: 241d8: 6f5f766c 615f6a62 636f6c6c 5f657461 lv_obj_allocate_ 241e8: 5f747865 72747461 00000000 ext_attr.... 000241f4 <__func__.10443>: 241f4: 6f5f766c 725f6a62 65726665 655f6873 lv_obj_refresh_e 24204: 645f7478 5f776172 00646170 xt_draw_pad. 00024210 <__func__.10471>: 24210: 6f5f766c 675f6a62 705f7465 6e657261 lv_obj_get_paren 24220: 00000074 t... 00024224 <__func__.10448>: 24224: 6f5f766c 675f6a62 735f7465 65657263 lv_obj_get_scree 24234: 0000006e n... 00024238 <__func__.10457>: 24238: 6f5f766c 675f6a62 645f7465 00707369 lv_obj_get_disp. 00024248 <__func__.10477>: 24248: 6f5f766c 675f6a62 635f7465 646c6968 lv_obj_get_child 24258: 00000000 .... 0002425c <__func__.10328>: 2425c: 6f5f766c 735f6a62 625f7465 5f657361 lv_obj_set_base_ 2426c: 00726964 dir. 00024270 <__func__.10484>: 24270: 6f5f766c 675f6a62 635f7465 646c6968 lv_obj_get_child 24280: 6361625f 0000006b _back... 00024288 <__func__.10490>: 24288: 6f5f766c 635f6a62 746e756f 6968635f lv_obj_count_chi 24298: 6572646c 0000006e ldren... 000242a0 <__func__.10500>: 242a0: 6f5f766c 635f6a62 746e756f 6968635f lv_obj_count_chi 242b0: 6572646c 65725f6e 73727563 00657669 ldren_recursive. 000242c0 <__func__.10511>: 242c0: 6f5f766c 675f6a62 635f7465 64726f6f lv_obj_get_coord 242d0: 00000073 s... 000242d4 <__func__.10524>: 242d4: 6f5f766c 675f6a62 785f7465 00000000 lv_obj_get_x.... 000242e4 <__func__.10531>: 242e4: 6f5f766c 675f6a62 795f7465 00000000 lv_obj_get_y.... 000242f4 <__func__.10538>: 242f4: 6f5f766c 675f6a62 775f7465 68746469 lv_obj_get_width 24304: 00000000 .... 00024308 <__func__.10543>: 24308: 6f5f766c 675f6a62 685f7465 68676965 lv_obj_get_heigh 24318: 00000074 t... 0002431c <__func__.10588>: 2431c: 6f5f766c 675f6a62 615f7465 5f6f7475 lv_obj_get_auto_ 2432c: 6c616572 006e6769 realign. 00024334 <__func__.10593>: 24334: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c 24344: 6b63696c 6461705f 66656c5f 00000074 lick_pad_left... 00024354 <__func__.10598>: 24354: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c 24364: 6b63696c 6461705f 6769725f 00007468 lick_pad_right.. 00024374 <__func__.10603>: 24374: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c 24384: 6b63696c 6461705f 706f745f 00000000 lick_pad_top.... 00024394 <__func__.10608>: 24394: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c 243a4: 6b63696c 6461705f 746f625f 006d6f74 lick_pad_bottom. 000243b4 <__func__.10613>: 243b4: 6f5f766c 675f6a62 655f7465 645f7478 lv_obj_get_ext_d 243c4: 5f776172 00646170 raw_pad. 000243cc <__func__.10162>: 243cc: 6f5f766c 635f6a62 6e61656c 7974735f lv_obj_clean_sty 243dc: 6c5f656c 00747369 le_list. 000243e4 <__func__.10700>: 243e4: 6f5f766c 675f6a62 6c5f7465 6c61636f lv_obj_get_local 243f4: 7974735f 0000656c _style.. 000243fc <__func__.10200>: 243fc: 6f5f766c 725f6a62 766f6d65 74735f65 lv_obj_remove_st 2440c: 5f656c79 61636f6c 72705f6c 0000706f yle_local_prop.. 0002441c <__func__.10706>: 2441c: 6f5f766c 675f6a62 685f7465 65646469 lv_obj_get_hidde 2442c: 0000006e n... 00024430 <__func__.9962>: 24430: 6f5f766c 695f6a62 6c61766e 74616469 lv_obj_invalidat 24440: 72615f65 00006165 e_area.. 00024448 <__func__.9977>: 24448: 6f5f766c 695f6a62 6c61766e 74616469 lv_obj_invalidat 24458: 00000065 e... 0002445c <__func__.9995>: 2445c: 6f5f766c 6d5f6a62 5f65766f 65726f66 lv_obj_move_fore 2446c: 756f7267 0000646e ground.. 00024474 <__func__.10001>: 24474: 6f5f766c 6d5f6a62 5f65766f 6b636162 lv_obj_move_back 24484: 756f7267 0000646e ground.. 0002448c <__func__.10009>: 2448c: 6f5f766c 735f6a62 705f7465 0000736f lv_obj_set_pos.. 0002449c <__func__.10018>: 2449c: 6f5f766c 735f6a62 785f7465 00000000 lv_obj_set_x.... 000244ac <__func__.10024>: 244ac: 6f5f766c 735f6a62 795f7465 00000000 lv_obj_set_y.... 000244bc <__func__.10082>: 244bc: 6f5f766c 615f6a62 6e67696c 00000000 lv_obj_align.... 000244cc <__func__.10096>: 244cc: 6f5f766c 615f6a62 6e67696c 69726f5f lv_obj_align_ori 244dc: 00006f67 go.. 000244e0 <__func__.10133>: 244e0: 6f5f766c 725f6a62 696c6165 00006e67 lv_obj_realign.. 000244f0 <__func__.10207>: 244f0: 6f5f766c 725f6a62 65726665 735f6873 lv_obj_refresh_s 24500: 656c7974 00000000 tyle.... 00024508 <__func__.10156>: 24508: 6f5f766c 615f6a62 735f6464 656c7974 lv_obj_add_style 24518: 00000000 .... 0002451c <__func__.10269>: 2451c: 6f5f766c 735f6a62 685f7465 65646469 lv_obj_set_hidde 2452c: 0000006e n... 00024530 <__func__.10711>: 24530: 6f5f766c 675f6a62 615f7465 685f7664 lv_obj_get_adv_h 24540: 65747469 00007473 ittest.. 00024548 <__func__.10716>: 24548: 6f5f766c 675f6a62 635f7465 6b63696c lv_obj_get_click 24558: 00000000 .... 0002455c <__func__.10721>: 2455c: 6f5f766c 675f6a62 745f7465 0000706f lv_obj_get_top.. 0002456c <__func__.10726>: 2456c: 6f5f766c 675f6a62 645f7465 00676172 lv_obj_get_drag. 0002457c <__func__.10731>: 2457c: 6f5f766c 675f6a62 645f7465 5f676172 lv_obj_get_drag_ 2458c: 00726964 dir. 00024590 <__func__.10736>: 24590: 6f5f766c 675f6a62 645f7465 5f676172 lv_obj_get_drag_ 245a0: 6f726874 00000077 throw... 000245a8 <__func__.10747>: 245a8: 6f5f766c 675f6a62 705f7465 6e657261 lv_obj_get_paren 245b8: 76655f74 00746e65 t_event. 000245c0 <__func__.10752>: 245c0: 6f5f766c 675f6a62 625f7465 5f657361 lv_obj_get_base_ 245d0: 00726964 dir. 000245d4 <__func__.9928>: 245d4: 6f5f766c 635f6a62 74616572 00000065 lv_obj_create... 000245e4 <__func__.9985>: 245e4: 6f5f766c 735f6a62 705f7465 6e657261 lv_obj_set_paren 245f4: 00000074 t... 000245f8 <__func__.10031>: 245f8: 6f5f766c 735f6a62 735f7465 00657a69 lv_obj_set_size. 00024608 <__func__.10043>: 24608: 6f5f766c 735f6a62 775f7465 68746469 lv_obj_set_width 24618: 00000000 .... 0002461c <__func__.10049>: 2461c: 6f5f766c 735f6a62 685f7465 68676965 lv_obj_set_heigh 2462c: 00000074 t... 00024630 <__func__.10757>: 24630: 6f5f766c 675f6a62 705f7465 65746f72 lv_obj_get_prote 24640: 00007463 ct.. 00024644 <__func__.10763>: 24644: 6f5f766c 695f6a62 72705f73 6365746f lv_obj_is_protec 24654: 00646574 ted. 00024658 <__func__.10769>: 24658: 6f5f766c 675f6a62 735f7465 65746174 lv_obj_get_state 24668: 00000000 .... 0002466c <__func__.10548>: 2466c: 6f5f766c 675f6a62 775f7465 68746469 lv_obj_get_width 2467c: 7469665f 00000000 _fit.... 00024684 <__func__.10555>: 24684: 6f5f766c 675f6a62 685f7465 68676965 lv_obj_get_heigh 24694: 69665f74 00000074 t_fit... 0002469c <__func__.10517>: 2469c: 6f5f766c 675f6a62 695f7465 72656e6e lv_obj_get_inner 246ac: 6f6f635f 00736472 0000ffff _coords..... 000246b8 <__func__.10345>: 246b8: 6f5f766c 735f6a62 735f7465 65746174 lv_obj_set_state 246c8: 00000000 .... 000246cc <__func__.11002>: 246cc: 6e617274 72635f73 65746165 00000000 trans_create.... 000246dc <__func__.10368>: 246dc: 6f5f766c 615f6a62 735f6464 65746174 lv_obj_add_state 246ec: 00000000 .... 000246f0 <__func__.10375>: 246f0: 6f5f766c 635f6a62 7261656c 6174735f lv_obj_clear_sta 24700: 00006574 te.. 00024704 <__func__.10775>: 24704: 6f5f766c 675f6a62 735f7465 616e6769 lv_obj_get_signa 24714: 62635f6c 00000000 l_cb.... 0002471c <__func__.10780>: 2471c: 6f5f766c 675f6a62 645f7465 67697365 lv_obj_get_desig 2472c: 62635f6e 00000000 n_cb.... 00024734 <__func__.10785>: 24734: 6f5f766c 675f6a62 655f7465 746e6576 lv_obj_get_event 24744: 0062635f _cb. 00024748 <__func__.10790>: 24748: 6f5f766c 675f6a62 655f7465 615f7478 lv_obj_get_ext_a 24758: 00727474 ttr. 0002475c <__func__.10796>: 2475c: 6f5f766c 675f6a62 745f7465 00657079 lv_obj_get_type. 0002476c <__func__.10811>: 2476c: 6f5f766c 675f6a62 675f7465 70756f72 lv_obj_get_group 2477c: 00000000 .... 00024780 <__func__.9935>: 24780: 6f5f766c 645f6a62 00006c65 lv_obj_del.. 0002478c <__func__.10901>: 2478c: 6f5f766c 645f6a62 615f6c65 636e7973 lv_obj_del_async 2479c: 0062635f _cb. 000247a0 <__func__.9951>: 247a0: 6f5f766c 635f6a62 6e61656c 00000000 lv_obj_clean.... 000247b0 <__func__.10816>: 247b0: 6f5f766c 695f6a62 6f665f73 65737563 lv_obj_is_focuse 247c0: 00000064 742f2e2e 64726968 74726170 d...../thirdpart 247d0: 766c2f79 732f6c67 6c2f6372 6f635f76 y/lvgl/src/lv_co 247e0: 6c2f6572 626f5f76 00632e6a 695f766c re/lv_obj.c.lv_i 247f0: 3a74696e 726c6120 79646165 696e6920 nit: already ini 24800: 00646574 695f766c 2074696e 64616572 ted.lv_init read 24810: 00000079 645f766c 696e6965 6f642074 y...lv_deinit do 24820: 0000656e 4c4c554e 696f7020 7265746e ne..NULL pointer 24830: 00000000 735f766c 675f7263 645f7465 ....lv_scr_get_d 24840: 3a707369 72637320 206e6565 20746f6e isp: screen not 24850: 6e756f66 00000064 6f5f766c 735f6a62 found...lv_obj_s 24860: 625f7465 5f657361 3a726964 766e6920 et_base_dir: inv 24870: 64696c61 73616220 69642065 00000072 alid base dir... 24880: 6f5f766c 635f6a62 6e61656c 7974735f lv_obj_clean_sty 24890: 6c5f656c 3a747369 6e616320 66207427 le_list: can't f 248a0: 20646e69 6c797473 69772065 60206874 ind style with ` 248b0: 74726170 00000060 6f5f766c 735f6a62 part`...lv_obj_s 248c0: 705f7465 203a736f 20746f6e 6e616863 et_pos: not chan 248d0: 676e6967 736f7020 6f697469 666f206e ging position of 248e0: 72637320 206e6565 656a626f 00007463 screen object.. 248f0: 6f5f766c 615f6a62 735f6464 656c7974 lv_obj_add_style 24900: 6163203a 2074276e 646e6966 79747320 : can't find sty 24910: 7720656c 20687469 70797460 00006065 le with `type`.. 24920: 6f5f766c 635f6a62 74616572 6e203a65 lv_obj_create: n 24930: 6420746f 6c707369 63207961 74616572 ot display creat 24940: 74206465 6f73206f 72616620 6f4e202e ed to so far. No 24950: 616c7020 74206563 7361206f 6e676973 place to assign 24960: 65687420 77656e20 72637320 006e6565 the new screen. 24970: 656a624f 63207463 74616572 65722065 Object create re 24980: 00796461 276e6143 65732074 68742074 ady.Can't set th 24990: 61702065 746e6572 20666f20 63732061 e parent of a sc 249a0: 6e656572 00000000 276e6143 65732074 reen....Can't se 249b0: 61702074 746e6572 203d3d20 4c4c554e t parent == NULL 249c0: 206f7420 6f206e61 63656a62 00000074 to an object... 249d0: 6f5f766c 00006a62 lv_obj.. 000249d8 <__func__.9738>: 249d8: 725f766c 5f726665 61657261 00000000 lv_refr_area.... 249e8: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv 249f8: 732f6c67 6c2f6372 6f635f76 6c2f6572 gl/src/lv_core/l 24a08: 65725f76 632e7266 00000000 276e6143 v_refr.c....Can' 24a18: 65732074 44562074 65682042 74686769 t set VDB height 24a28: 69737520 7420676e 72206568 646e756f using the round 24a38: 6e756620 6f697463 28202e6e 6e6f7257 function. (Wron 24a48: 6f722067 5f646e75 6f206263 6f742072 g round_cb or to 24a58: 616d7320 56206c6c 00294244 small VDB). 00024a64 <__func__.9549>: 24a64: 5f766c5f 6c797473 696c5f65 725f7473 _lv_style_list_r 24a74: 766f6d65 74735f65 00656c79 emove_style. 00024a80 <__func__.9532>: 24a80: 5f766c5f 6c797473 696c5f65 615f7473 _lv_style_list_a 24a90: 735f6464 656c7974 00000000 dd_style.... 00024a9c <__func__.9777>: 24a9c: 5f746567 6f6c6c61 6f6c5f63 5f6c6163 get_alloc_local_ 24aac: 6c797473 00000065 style... 00024ab4 <__func__.9583>: 24ab4: 5f766c5f 6c797473 65735f65 6e695f74 _lv_style_set_in 24ac4: 00000074 t... 00024ac8 <__func__.9597>: 24ac8: 5f766c5f 6c797473 65735f65 6f635f74 _lv_style_set_co 24ad8: 00726f6c lor. 00024adc <__func__.9611>: 24adc: 5f766c5f 6c797473 65735f65 706f5f74 _lv_style_set_op 24aec: 00000061 a... 00024af0 <__func__.9625>: 24af0: 5f766c5f 6c797473 65735f65 74705f74 _lv_style_set_pt 24b00: 00000072 r... 00024b04 <__func__.9673>: 24b04: 5f766c5f 6c797473 696c5f65 615f7473 _lv_style_list_a 24b14: 745f6464 736e6172 7974735f 0000656c dd_trans_style.. 24b24: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv 24b34: 732f6c67 6c2f6372 6f635f76 6c2f6572 gl/src/lv_core/l 24b44: 74735f76 2e656c79 00000063 735f766c v_style.c...lv_s 24b54: 656c7974 73696c5f 65725f74 65766f6d tyle_list_remove 24b64: 7974735f 203a656c 6c756f63 74276e64 _style: couldn't 24b74: 61657220 636f6c6c 20657461 73616c63 reallocate clas 24b84: 696c2073 00007473 735f766c 656c7974 s list..lv_style 24b94: 73696c5f 64615f74 74735f64 3a656c79 _list_add_style: 24ba4: 756f6320 276e646c 64612074 68742064 couldn't add th 24bb4: 6c632065 00737361 5f746567 61636f6c e class.get_loca 24bc4: 74735f6c 3a656c79 756f6320 276e646c l_style: couldn' 24bd4: 72632074 65746165 636f6c20 73206c61 t create local s 24be4: 656c7974 00000000 735f766c 656c7974 tyle....lv_style 24bf4: 73696c5f 64615f74 72745f64 5f736e61 _list_add_trans_ 24c04: 6c797473 63203a65 646c756f 2074276e style: couldn't 24c14: 61657263 74206574 736e6172 6f697469 create transitio 24c24: 7473206e 00656c79 n style. 00024c2c <__func__.9728>: 24c2c: 6c6c6966 656c625f 6465646e 00000000 fill_blended.... 00024c3c <__func__.9860>: 24c3c: 5f70616d 6e656c62 00646564 742f2e2e map_blended.../t 24c4c: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s 24c5c: 6c2f6372 72645f76 6c2f7761 72645f76 rc/lv_draw/lv_dr 24c6c: 625f7761 646e656c 0000632e 6c6c6966 aw_blend.c..fill 24c7c: 656c625f 6465646e 6e75203a 70707573 _blended: unsupp 24c8c: 6574726f 6c622064 20646e65 65646f6d orted blend mode 24c9c: 00000000 0000ffff ........ 00024ca4 <__func__.9554>: 24ca4: 645f766c 5f776172 00676d69 lv_draw_img. 00024cb0 <__func__.9618>: 24cb0: 695f766c 645f676d 5f776172 65726f63 lv_img_draw_core 24cc0: 00000000 742f2e2e 64726968 74726170 ....../thirdpart 24cd0: 766c2f79 732f6c67 6c2f6372 72645f76 y/lvgl/src/lv_dr 24ce0: 6c2f7761 72645f76 695f7761 632e676d aw/lv_draw_img.c 24cf0: 00000000 67616d49 72642065 203a7761 ....Image draw: 24d00: 20637273 4e207369 004c4c55 640a6f4e src is NULL.No.d 24d10: 00617461 67616d49 72642065 65207761 ata.Image draw e 24d20: 726f7272 00000000 67616d49 72642065 rror....Image dr 24d30: 63207761 74276e61 61657220 68742064 aw can't read th 24d40: 696c2065 0000656e e line.. 00024d48 <_lv_bpp1_opa_table>: 24d48: 0000ff00 .... 00024d4c <_lv_bpp2_opa_table>: 24d4c: ffaa5500 .U.. 00024d50 <_lv_bpp4_opa_table>: 24d50: 33221100 77665544 bbaa9988 ffeeddcc .."3DUfw........ 00024d60 <_lv_bpp8_opa_table>: 24d60: 03020100 07060504 0b0a0908 0f0e0d0c ................ 24d70: 13121110 17161514 1b1a1918 1f1e1d1c ................ 24d80: 23222120 27262524 2b2a2928 2f2e2d2c !"#$%&'()*+,-./ 24d90: 33323130 37363534 3b3a3938 3f3e3d3c 0123456789:;<=>? 24da0: 43424140 47464544 4b4a4948 4f4e4d4c @ABCDEFGHIJKLMNO 24db0: 53525150 57565554 5b5a5958 5f5e5d5c PQRSTUVWXYZ[\]^_ 24dc0: 63626160 67666564 6b6a6968 6f6e6d6c `abcdefghijklmno 24dd0: 73727170 77767574 7b7a7978 7f7e7d7c pqrstuvwxyz{|}~. 24de0: 83828180 87868584 8b8a8988 8f8e8d8c ................ 24df0: 93929190 97969594 9b9a9998 9f9e9d9c ................ 24e00: a3a2a1a0 a7a6a5a4 abaaa9a8 afaeadac ................ 24e10: b3b2b1b0 b7b6b5b4 bbbab9b8 bfbebdbc ................ 24e20: c3c2c1c0 c7c6c5c4 cbcac9c8 cfcecdcc ................ 24e30: d3d2d1d0 d7d6d5d4 dbdad9d8 dfdedddc ................ 24e40: e3e2e1e0 e7e6e5e4 ebeae9e8 efeeedec ................ 24e50: f3f2f1f0 f7f6f5f4 fbfaf9f8 fffefdfc ................ 00024e60 <__func__.9614>: 24e60: 645f766c 5f776172 7474656c 00007265 lv_draw_letter.. 00024e70 <__func__.9696>: 24e70: 77617264 74656c5f 5f726574 70627573 draw_letter_subp 24e80: 00000078 x... 00024e84 <__func__.9641>: 24e84: 77617264 74656c5f 5f726574 6d726f6e draw_letter_norm 24e94: 00006c61 al.. 00024e98 <_lv_bpp3_opa_table>: 24e98: 6d492400 ffdbb692 742f2e2e 64726968 .$Im....../third 24ea8: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 24eb8: 72645f76 6c2f7761 72645f76 6c5f7761 v_draw/lv_draw_l 24ec8: 6c656261 0000632e 645f766c 5f776172 abel.c..lv_draw_ 24ed8: 7474656c 203a7265 746e6f66 20736920 letter: font is 24ee8: 4c4c554e 00000000 645f766c 5f776172 NULL....lv_draw_ 24ef8: 7474656c 203a7265 70796c67 73642068 letter: glyph ds 24f08: 6e202e63 6620746f 646e756f 00000000 c. not found.... 24f18: 645f766c 5f776172 7474656c 203a7265 lv_draw_letter: 24f28: 72616863 65746361 20732772 6d746962 character's bitm 24f38: 6e207061 6620746f 646e756f 00000000 ap not found.... 24f48: 645f766c 5f776172 7474656c 203a7265 lv_draw_letter: 24f58: 61766e69 2064696c 20707062 20746f6e invalid bpp not 24f68: 6e756f66 00000064 645f766c 5f776172 found...lv_draw_ 24f78: 7474656c 203a7265 61766e69 2064696c letter: invalid 24f88: 00707062 bpp. 00024f8c : 24f8c: 81808080 83828281 87868584 8d8c8a89 ................ 24f9c: 9593918f 9e9b9997 a7a5a2a0 b2afadaa ................ 24fac: 000000b5 .... 00024fb0 <__func__.9580>: 24fb0: 645f766c 5f776172 6b73616d 6464615f lv_draw_mask_add 24fc0: 00000000 .... 00024fc4 <__func__.9645>: 24fc4: 645f766c 5f776172 6b73616d 676e615f lv_draw_mask_ang 24fd4: 695f656c 0074696e 742f2e2e 64726968 le_init.../third 24fe4: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 24ff4: 72645f76 6c2f7761 72645f76 6d5f7761 v_draw/lv_draw_m 25004: 2e6b7361 00000063 6d5f766c 5f6b7361 ask.c...lv_mask_ 25014: 3a646461 206f6e20 63616c70 6f742065 add: no place to 25024: 64646120 65687420 73616d20 0000006b add the mask... 25034: 78656e55 74636570 73206465 74726174 Unexpected start 25044: 676e615f 0000656c 78656e55 74636570 _angle..Unexpect 25054: 65206465 615f646e 656c676e 00000000 ed end_angle.... 25064: 0000ffff .... 00025068 <__func__.9886>: 25068: 77617264 7461705f 6e726574 00000000 draw_pattern.... 25078: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv 25088: 732f6c67 6c2f6372 72645f76 6c2f7761 gl/src/lv_draw/l 25098: 72645f76 725f7761 2e746365 00000063 v_draw_rect.c... 250a8: 77617264 676d695f 6163203a 2074276e draw_img: can't 250b8: 20746567 67616d69 6e692065 00006f66 get image info.. 250c8: 695f766c 645f676d 67697365 69203a6e lv_img_design: i 250d8: 6567616d 756f7320 20656372 65707974 mage source type 250e8: 20736920 6e6b6e75 006e776f 33221100 is unknown..."3 250f8: 77665544 bbaa9988 ffeeddcc DUfw........ 00025104 <__func__.7156>: 25104: 695f766c 625f676d 735f6675 705f7465 lv_img_buf_set_p 25114: 74656c61 00006574 alette.. 0002511c <__func__.9528>: 2511c: 5f766c5f 5f676d69 68636163 706f5f65 _lv_img_cache_op 2512c: 00006e65 en.. 00025130 <__func__.9548>: 25130: 695f766c 635f676d 65686361 7465735f lv_img_cache_set 25140: 7a69735f 00000065 742f2e2e 64726968 _size...../third 25150: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 25160: 72645f76 6c2f7761 6d695f76 61635f67 v_draw/lv_img_ca 25170: 2e656863 00000063 695f766c 635f676d che.c...lv_img_c 25180: 65686361 65706f5f 74203a6e 63206568 ache_open: the c 25190: 65686361 7a697320 73692065 00003020 ache size is 0.. 251a0: 67616d69 72642065 203a7761 68636163 image draw: cach 251b0: 696d2065 202c7373 736f6c63 6e612065 e miss, close an 251c0: 65722064 20657375 65206e61 7972746e d reuse an entry 251d0: 00000000 67616d69 72642065 203a7761 ....image draw: 251e0: 68636163 696d2065 202c7373 68636163 cache miss, cach 251f0: 74206465 6e61206f 706d6520 65207974 ed to an empty e 25200: 7972746e 00000000 67616d49 72642065 ntry....Image dr 25210: 63207761 6f6e6e61 706f2074 74206e65 aw cannot open t 25220: 69206568 6567616d 73657220 6372756f he image resourc 25230: 00000065 e... 00025234 <__func__.9619>: 25234: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 25244: 746c6975 5f6e695f 6f666e69 00000000 uilt_in_info.... 00025254 <__func__.9626>: 25254: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 25264: 746c6975 5f6e695f 6e65706f 00000000 uilt_in_open.... 00025274 <__func__.9673>: 25274: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 25284: 746c6975 5f6e695f 656e696c 7572745f uilt_in_line_tru 25294: 6f635f65 00726f6c 33221100 77665544 e_color..."3DUfw 252a4: bbaa9988 ffeeddcc ........ 000252ac <__func__.9656>: 252ac: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 252bc: 746c6975 5f6e695f 64616572 6e696c5f uilt_in_read_lin 252cc: 00000065 e... 000252d0 <__func__.9588>: 252d0: 695f766c 645f676d 646f6365 635f7265 lv_img_decoder_c 252e0: 74616572 00000065 reate... 000252e8 <__func__.9550>: 252e8: 5f766c5f 5f676d69 6f636564 5f726564 _lv_img_decoder_ 252f8: 74696e69 00000000 742f2e2e 64726968 init....../third 25308: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 25318: 72645f76 6c2f7761 6d695f76 65645f67 v_draw/lv_img_de 25328: 65646f63 00632e72 67616d49 65672065 coder.c.Image ge 25338: 6e692074 67206f66 72207465 20646165 t info get read 25348: 656c6966 61656820 00726564 67616d49 file header.Imag 25358: 65672065 6e692074 66206f66 646e756f e get info found 25368: 6b6e7520 6e776f6e 63727320 70797420 unknown src typ 25378: 00000065 006e6962 6c697542 6e692d74 e...bin.Built-in 25388: 616d6920 64206567 646f6365 63207265 image decoder c 25398: 74276e61 65706f20 6874206e 69662065 an't open the fi 253a8: 0000656c 5f676d69 6f636564 5f726564 le..img_decoder_ 253b8: 6c697562 6e695f74 65706f5f 6f203a6e built_in_open: o 253c8: 6f207475 656d2066 79726f6d 00000000 ut of memory.... 253d8: 67616d49 65642065 65646f63 706f2072 Image decoder op 253e8: 203a6e65 6e6b6e75 206e776f 6f6c6f63 en: unknown colo 253f8: 6f662072 74616d72 00000000 6c697542 r format....Buil 25408: 6e692d74 616d6920 64206567 646f6365 t-in image decod 25418: 73207265 206b6565 6c696166 00006465 er seek failed.. 25428: 6c697542 6e692d74 616d6920 64206567 Built-in image d 25438: 646f6365 72207265 20646165 6c696166 ecoder read fail 25448: 00006465 6c697542 6e692d74 616d6920 ed..Built-in ima 25458: 64206567 646f6365 72207265 20646165 ge decoder read 25468: 20746f6e 70707573 7374726f 65687420 not supports the 25478: 6c6f6320 6620726f 616d726f 00000074 color format... 25488: 695f766c 645f676d 646f6365 695f7265 lv_img_decoder_i 25498: 3a74696e 74756f20 20666f20 6f6d656d nit: out of memo 254a8: 00007972 ry.. 000254ac <__func__.9652>: 254ac: 665f766c 5f746e6f 5f746567 6d746962 lv_font_get_bitm 254bc: 665f7061 745f746d 00007478 742f2e2e ap_fmt_txt..../t 254cc: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s 254dc: 6c2f6372 6f665f76 6c2f746e 6f665f76 rc/lv_font/lv_fo 254ec: 665f746e 745f746d 632e7478 00000000 nt_fmt_txt.c.... 000254fc : 254fc: 0002550c 00026158 000260bc 0000313d .U..Xa...`..=1.. 0002550c : 2550c: 00000100 00000000 00000100 00000003 ................ 2551c: 00000200 00000000 00000000 00000000 ................ 2552c: 00010000 00000000 00000000 00000000 ................ 2553c: 000c0100 0000fa07 f1f20000 04060c02 ................ 2554c: 010d02f6 0008030b 00000000 00000000 ................ 2555c: 020f0000 000000fe 00000000 00000000 ................ 2556c: f8000500 00000000 0504fb00 00fd0000 ................ 2557c: fd0003fe fbfffd00 00000000 fd0000fd ................ 2558c: fd0000fc 0000fb00 00000000 fd000000 ................ 2559c: 00fc00fd 00e100f9 0500fb00 fb000008 ................ 255ac: 05080303 000005fc 000000f1 00000000 ................ 255bc: 00000000 000000f7 00000000 00000000 ................ 255cc: f9000000 f600f3fd 000000fe 000a0100 ................ 255dc: 01fffef8 0000fc00 0000edfe 00000000 ................ 255ec: 00000000 0afeec00 00000000 00000000 ................ 255fc: 00000000 000000f6 00000000 08000000 ................ 2560c: 00000300 000000fb 00000000 00000000 ................ 2561c: 00000000 020a0000 00000001 00000000 ................ ... 2564c: 000000f7 00000000 00000000 00000000 ................ 2565c: 00000000 02000000 fd080305 fd050000 ................ 2566c: 0702ddf8 00fd0105 00080009 00e80008 ................ 2567c: 080008fd 000305fd 00fd0100 0014fc00 ................ 2568c: 00080014 0804030b f7000000 00000000 ................ 2569c: 0200fe01 02fbfdfb 0000fd00 0000f600 ................ ... 256b4: 0000ef00 00000000 00000000 00000000 ................ 256c4: 00f20100 000000f0 1900fe00 0303fdfd ................ 256d4: 03fd00fe 00f20000 00000000 00000000 ................ 256e4: 00e70000 00000003 00000000 00000000 ................ 256f4: 0f00f000 00f70000 e7ef0008 0008fbef ................ 25704: 0300ef00 00fc00fa 00000000 00000000 ................ 25714: 07000000 0000e108 00000000 00000000 ................ 25724: 000c0000 00000002 02020000 ff00fbfd ................ 25734: 0000fdff 000000fe 00fe00fb fa00fbfa ................ 25744: 00fbf8f8 00fb00fb fe000000 00030000 ................ 25754: 0100fd02 03000000 000000fe ff0303fe ................ 25764: fb000000 0000ff00 01000000 00fe0300 ................ 25774: 00fc00fd 0800fe00 00fd0000 00000000 ................ 25784: fefe01ff 00fd0000 000000fd 00000000 ................ 25794: ffff0000 00fdfd00 00000000 fe000001 ................ 257a4: fdfdfd00 00000000 00000000 0000fe00 ................ 257b4: fdfe0000 f800fc00 0005f8fe 0503fb00 ................ 257c4: fffa0007 f4ff00fd f202fe03 01000003 ................ 257d4: fef200f3 f300feea 00070500 00000003 ................ 257e4: fb000100 00f800fd 00fd0000 00fd0000 ................ 257f4: 00000000 ff00ffff 000000fd 00000000 ................ 25804: fe00fdfd 0000fefd 000000fd 00000000 ................ 25814: 00000000 fd00fefe fb00fe00 fd000003 ................ 25824: 00030301 00000000 0000fe00 02000000 ................ 25834: 00fd0000 00fdfefd 00000000 00020000 ................ 25844: 000000fe 00fcfd00 fe0800fb 0000f801 ................ 25854: f5f3f307 fe0003fb fb00fbef fb04fb00 ................ 25864: 00f900f0 02ff0100 000300fe f300f6f8 ................ 25874: f8fafbfa fbfff9fd 010002f9 0000fd00 ................ 25884: 03000200 00000000 00000000 fd000000 ................ 25894: ff00ff00 fafc00fd f800fffa 00000000 ................ 258a4: 00fe0000 01000000 000000fe 00000003 ................ 258b4: 00000000 00000c00 00000000 00000002 ................ 258c4: 000000fd 00000000 00000000 000300fb ................ ... 258e0: 000000fe 000000fb 00f8f300 f3fc0000 ................ 258f0: 03fd0000 0000f900 00000000 00000000 ................ 25900: fb0000fc 00000000 00000000 00000000 ................ 25910: 00fb0003 03000000 fbfb0200 fdfdfd00 ................ 25920: 00000000 00f80000 fdfc00fd f8fafa00 ................ 25930: 00fb00fe 000000f8 00001400 fd000001 ................ 25940: f5000300 00000000 08fbe800 00f5fe08 ................ 25950: f300fc03 ee03fdff 040003fd f8f7fcf7 ................ 25960: f10000f5 00000f00 000000ff f9fdffff ................ 25970: 00e8fff8 00000000 00000000 00000001 ................ ... 2598c: ff00fd00 0000fcfd 00fd00fb 00000000 ................ ... 259a4: 00ff0000 050000fb fa0003ff f9fffe03 ................ 259b4: fdfd00fd fcfc00fe fffe0000 00fdfcfe ................ 259c4: 0300fd00 00fa00fe 00fb0000 fcfc00fc ................ 259d4: 00000003 00000000 0003fb00 fdfe00fc ................ 259e4: fefefef8 fffdfeff 00000000 fefefd00 ................ 259f4: 00000000 fe00fe03 fe000000 fdfefefd ................ 25a04: 0a0200fe 00f900ff fd0005fe 0004fdf5 ................ 25a14: 03fcf400 fe0002fc fc00f8fe fc000001 ................ 25a24: 03000000 00fbfb03 fdfcfdfc 01fc00fd ................ 25a34: 0008fcfb 00000000 00000000 00000003 ................ ... 25a58: 000000fc 00000000 00000000 00000000 ................ ... 25a84: 000000fe 00000000 00000000 00000000 ................ ... 25aa0: fdfe0000 00000000 00000000 00000000 ................ 25ab0: fd0000fc fdfd0000 00000000 000000fd ................ 25ac0: 0000ff00 fe000000 00000000 00fb00fc ................ 25ad0: 00f80000 0105fa02 0000f4fe f600fdfa ................ 25ae0: 0000f9fa f6f6fdf5 00f900f4 00fd1102 ................ 25af0: fdfffdfa f7fbf9fc 00fdfaf6 0100fe00 ................ 25b00: feee0000 f7fa0608 00f80100 05fdfef3 ................ 25b10: 0001fde8 f3fdef00 0000edfd 010f00ee ................ 25b20: 0000fe00 feff0000 ef00fef6 00000000 ................ 25b30: 00fe00f8 00f4f9ff f8fcff00 00fe00fd ................ 25b40: f4000000 fef8f8fd fcfdfafc f8fefb00 ................ 25b50: fbfd00fc 0100fbfd 00f8fe00 00fb0005 ................ 25b60: 03000000 0afb0200 fdfdfd00 00000000 ................ 25b70: 00f80000 fdfc00fd f8fafa00 02fb00fe ................ 25b80: 0000000a 00001400 fd000001 00000300 ................ 25b90: 00000000 00ff0000 00000000 0000fbfe ................ 25ba0: ff000000 fd000000 fb0000fd fb0000fd ................ 25bb0: 00ff0400 00000000 00000100 05040000 ................ 25bc0: f800fe02 f80800fc 0afbfbf8 feea0305 ................ 25bd0: fd00fd05 00f7fd03 fefd03fd 0000fef8 ................ 25be0: f9000508 07fdf200 fd01f6fd 0afdf8f8 ................ 25bf0: 00fc0003 080200f9 faf6f7fa ed010008 ................ 25c00: fefc03fe f7fa00fa 00fefcfc fdfbfa00 ................ 25c10: fd060800 fcf200f2 fff1f700 f9f8fcf8 ................ 25c20: fd000007 00fefb00 0400fbfd 000003f8 ................ 25c30: fafd00f2 faf8fefc f800faf8 f8fbfafd ................ 25c40: 010000fd f800fc0c fbfd00fd f6f9f9fa ................ 25c50: 0005fbfd fdf300fc f7f80502 fd08f8fb ................ 25c60: 05fbe801 00f7fcfa fdfdf5f8 f8fbfdfe ................ 25c70: 080000ff 00effe07 f606faf1 f5f7fbef ................ 25c80: 0005f8f3 fd000000 fd030000 05fb0205 ................ 25c90: fff80000 0100ff00 0000fe01 00000000 ................ 25ca0: 000000fd 01080200 0000fd00 fefe0000 ................ 25cb0: 000000fd 00000201 00020000 000a00fe ................ 25cc0: fd010105 00000500 00000200 00000000 ................ 25cd0: 00000000 07000800 00000000 00000000 ................ 25ce0: 00000000 00f10000 080004fd 03190000 ................ 25cf0: 0303fbfb 00f301fe 00f10c00 00000000 ................ 25d00: 00000000 0aef0000 00000024 00000000 ........$....... 25d10: 00000000 0000f100 00000000 00000000 ................ ... 25d30: fb0000fc 000000fe 00000000 00000000 ................ ... 25d48: 00f900fe 00000100 fefb2103 03f90708 .........!...... 25d58: 03030000 000000fd 00000000 00000000 ................ 25d68: 000007df 00000000 00000000 00000000 ................ 25d78: f9000000 f9000000 00000000 0000fffa ................ 25d88: fd00fa00 0000f400 00000000 00000000 ................ 25d98: 0000ef00 00010000 00000000 0000fd00 ................ 25da8: 00fc00fb 000000f9 00fd03fc fafdf900 ................ 25db8: 00f90000 00f400fd eb0000fd f7fdf6fb ................ 25dc8: 00ef0000 0000fff9 00000000 fbfc0000 ................ 25dd8: 0000fcfe 00fa0000 05fd03fa fefafe00 ................ 25de8: fd00fbfc f902feff 000000ff 00fcfee9 ................ 25df8: f4fe00fa fe0000fe 000000fe fe000200 ................ 25e08: 0004fefc 00000000 00000000 00000000 ................ ... 25e34: 00030000 00000000 fe00fa00 fb000000 ................ 25e44: 00000003 00fbfdf9 fd00f900 0000f400 ................ 25e54: 00e70000 00f3f7fb fe00ef00 000000fc ................ 25e64: 00000000 fffcfd00 000001fc 0800fd04 ................ 25e74: f8fdfd0d 06040d03 030b03f9 00070607 ................ ... 25e8c: 0c100000 fe00fdfb 00140b14 00030000 ................ 25e9c: 00000900 000000fc 00000000 00fe0000 ................ 25eac: 00000000 04000000 00000000 f6fefdea ................ 25ebc: ef0000f3 00000000 00000000 00000000 ................ 25ecc: 00000000 0000fc00 00000000 fe000000 ................ ... 25ee4: 00000004 fefdea00 0000f3f6 000000f6 ................ ... 25f04: 000000fe fd0003fa f8030502 03feff00 ................ 25f14: 00000200 00fa0000 00fbfefe 1000f6fe ................ 25f24: fefa00fd 00fcfe00 fdfbf9fd fc000000 ................ ... 25f3c: 0000fe00 00000000 00040000 ea000000 ................ 25f4c: f3f6fefd 00ef0000 00000000 00000d00 ................ ... 25f64: fdf800fc fdfe08fe 01fe01f6 0601f9fe ................ 25f74: 02010201 00fdf6fa f5f9fbf6 fbfc00f6 ................ 25f84: fefefdfd fe00fefd 040004ff 000800fe ................ ... 25f9c: fe000000 0000fdfd 00ff00f9 000000fc ................ ... 25fb4: 000000f1 00000000 00000000 fd00fdfd ................ 25fc4: 00000000 fc0000fe fc0003fd f900fefb ................ 25fd4: fdfefafe 0000fc00 00000000 00000000 ................ 25fe4: 0800ef00 00fb0000 fd000000 0000fd00 ................ 25ff4: fe0000ff 0000fa00 f8f8fd0b ff030302 ................ 26004: 020402f9 fe080208 f60000f9 f9f80000 ................ 26014: 00fb0000 fc00fcfd fe00fc00 f8fe0004 ................ 26024: 000009fd 00fb00fe 00fa0300 0002fd03 ................ 26034: fe00f800 03fd00ff 000000fe 00fafdf6 ................ 26044: f40000f8 00fd0900 000200fb f8fd00fd ................ 26054: 0003fd00 fe000000 fd030000 fd000001 ................ 26064: 00fd00fe 00000000 00000000 00000000 ................ 26074: 00000000 000600f0 0000fe00 00010000 ................ 26084: 0000fdfd 06000500 00000000 01f1f000 ................ 26094: f604080b 09000b02 00000500 00000000 ................ 260a4: 00000000 00000e00 00000000 00000000 ................ ... 000260bc : 260bc: 02010000 05040300 08070602 0a090a09 ................ 260cc: 0e0d0c0b 0c11100f 15141312 00000015 ................ 260dc: 19181716 19191917 1a191917 19191919 ................ 260ec: 19171917 1d1c1b03 201f1e1d 00232221 ........... !"#. 260fc: 26250024 00272727 29282627 2a2a2626 $.%&'''.'&()&&** 2610c: 2a272a27 2e2d2c2b 302e2f2e 09230000 '*'*+,-../.0..#. 2611c: 00000931 00000000 00000000 00000000 1............... ... 00026158 : 26158: 02010000 05040300 08070602 0a090a09 ................ 26168: 0d000c0b 11100f0e 140c1312 00000014 ................ 26178: 18171615 1b1a1619 1e1d1d1c 1d1d201f ............. .. 26188: 23222116 251e2403 28272625 002b2a29 .!"#.$.%%&'()*+. 26198: 2e2d002c 3231302f 34342d33 2d2d3035 ,.-./0123-4450-- 261a8: 37362e2e 3a333938 3c3a3b3a 09000029 ..67893::;:<)... 261b8: 0000093d 00000000 00000000 00000000 =............... ... 000261f4 : 261f4: 00000020 0001005f 00000000 00000000 ..._........... 26204: 00000000 000000b0 0060f7f3 0002621c ..........`..b.. 26214: 00000000 0002003b ....;... 0002621c : 2621c: 1f720000 ef58ef51 ef5cef5b ef61ef5d ..r.Q.X.[.\.].a. 2622c: ef65ef63 ef6cef69 ef76ef71 ef78ef77 c.e.i.l.q.v.w.x. 2623c: ef98ef8e ef9cef9b efa1ef9d efa3efa2 ................ 2624c: efb7efa4 efbeefb8 efc1efc0 efc7efc4 ................ 2625c: efc9efc8 efe3efcb f014efe5 f017f015 ................ 2626c: f03af037 f06cf043 f0abf074 f190f13b 7.:.C.l.t...;... 2627c: f192f191 f194f193 f1e3f1d7 f254f23d ............=.T. 2628c: f712f4aa 0000f7f2 ........ 00026294 : ... 2629c: 04500000 00000000 04500000 00010c03 ..P.......P..... 262ac: 06400012 07010505 0b40001f 00000c0b ..@.......@..... 262bc: 09f00061 fe00100a 0d8000b1 00000c0d a............... 262cc: 0b0000ff ff000d0b 03600147 07010502 ........G.`..... 262dc: 0560014c fd010f04 0570016a fd000f04 L.`.....j.p..... 262ec: 06600188 05000707 095001a1 02010808 ..`.......P..... 262fc: 03a001c1 fe000503 062001c9 03000306 .......... ..... 2630c: 03a001d2 00000303 05a001d7 feff1008 ................ 2631c: 0ab00217 00000c0a 05f00253 00000c05 ........S....... 2632c: 09300271 00000c09 092002a7 00000c09 q.0....... ..... 2633c: 0ab002dd 00000c0b 0930031f 00000c09 ..........0..... 2634c: 09e00355 00000c0a 09900391 00000c09 U............... 2635c: 0a5003c7 00000c0a 09e00403 00000c0a ..P............. 2636c: 03a0043f 00000903 03a0044d fd000c03 ?.......M....... 2637c: 0950045f 02010808 0950047f 03010608 _.P.......P..... 2638c: 09500497 02010808 093004b7 00000c09 ..P.......0..... 2639c: 109004ed fd000f10 0bb00565 00ff0c0d ........e....... 263ac: 0c2005b3 00010c0b 0b9005f5 00000c0b .. ............. 263bc: 0d300637 00010c0c 0ac0067f 00010c09 7.0............. 263cc: 0a3006b5 00010c09 0c6006eb 00000c0c ..0.......`..... 263dc: 0d000733 00010c0b 04f00775 00010c03 3.......u....... 263ec: 08300787 00ff0c08 0b8007b7 00010c0b ..0............. 263fc: 098007f9 00010c09 0f40082f 00010c0d ......../.@..... 2640c: 0d00087d 00010c0b 0d7008bf 00000c0d }.........p..... 2641c: 0b90090d 00010c0a 0d700949 fd000f0e ........I.p..... 2642c: 0ba009b2 00010c0a 09f009ee 00000c0a ................ 2643c: 09600a2a 00000c0a 0ca00a66 00010c0b *.`.....f....... 2644c: 0b600aa8 00ff0c0d 12000af6 00000c12 ..`............. 2645c: 0ac00b62 00000c0b 0a600ba4 00ff0c0c b.........`..... 2646c: 0a800bec 00000c0b 05500c2e fd010f05 ..........P..... 2647c: 05a00c54 feff1008 05500c94 fd000f04 T.........P..... 2648c: 09500cb2 02010708 08000cce fe000208 ..P............. 2649c: 09a00cd6 0a010205 09900cdb 00000909 ................ 264ac: 0af00d04 00010c0a 09200d40 00000909 ........@. ..... 264bc: 0af00d69 00000c0a 09d00da5 0000090a i............... 264cc: 05a00dd2 00000c07 0b100dfc fd000c0a ................ 264dc: 0ae00e38 00010c09 04700e6e 00010c03 8.......n.p..... 264ec: 04900e80 fdfe0f06 09e00ead 00010c09 ................ 264fc: 04700ee3 00010c02 10f00eef 0001090f ..p............. 2650c: 0ae00f33 00010909 0a300f5c 0000090a 3.......\.0..... 2651c: 0af00f89 fd010c0a 0af00fc5 fd000c0a ................ 2652c: 06901001 00010906 0800101c 00000908 ................ 2653c: 06a01040 00000b07 0ad01067 00010909 @.......g....... 2654c: 08f01090 00ff090a 0e6010bd 0000090f ..........`..... 2655c: 08d01101 00000909 08f0112a fdff0c0a ........*....... 2656c: 08501166 00000908 05a0118a fd000f06 f.P............. 2657c: 04d011b7 fd010f03 05a011ce fd000f05 ................ 2658c: 095011f4 04000509 06b0120b 06000606 ..P............. 2659c: 0500121d 03010403 10001223 fe001110 ........#....... 265ac: 100012ab 00000c10 1000130b ff000e10 ................ 265bc: 1000137b 00000c10 0b0013db 00000c0b {............... 265cc: 1000141d fe001010 1000149d fe001010 ................ 265dc: 1200151d ff000e12 1000159b fe001010 ................ 265ec: 1200161b 00000c12 10001687 fe001010 ................ 265fc: 08001707 ff000e08 0c00173f ff000e0c ........?....... 2660c: 12001793 fe001012 10001823 00000c10 ........#....... 2661c: 0e001883 fe02100a 0e0018d3 fd00120e ................ 2662c: 0e001951 ff000f0e 0e0019ba ff000e0e Q............... 2663c: 0e001a1c fe02100a 0e001a6c ffff0e10 ........l....... 2664c: 0a001adc ff000e0a 0a001b22 ff000e0a ........"....... 2665c: 0e001b68 ff000e0e 0e001bca 0400040e h............... 2666c: 12001be6 00000c12 14001c52 fe001014 ........R....... 2667c: 12001cf2 feff1014 10001d92 fe001010 ................ 2668c: 0e001e12 01000a0e 0e001e58 01000a0e ........X....... 2669c: 14001e9e ff000e14 10001f2a 00000c10 ........*....... 266ac: 10001f8a fe001010 1000200a feff1111 ......... ...... 266bc: 0e00209b ff000e0f 0e002104 fe00100e . .......!...... 266cc: 0e002174 ff000e0e 0a0021d6 feff100c t!.......!...... 266dc: 0e002236 fe00100e 0e0022a6 fe00100e 6"......."...... 266ec: 12002316 00000c12 10002382 fdff1212 .#.......#...... 266fc: 0c002424 fe00100c 14002484 ff000f14 $$.......$...... 2670c: 1400251a 01000a14 1400257e 01000a14 .%......~%...... 2671c: 140025e2 01000a14 14002646 01000a14 .%......F&...... 2672c: 140026aa 01000a14 1400270e ff000e15 .&.......'...... 2673c: 0e0027a1 fe01100c 0e002801 fe00100e .'.......(...... 2674c: 10002871 fdff1111 14002902 00000c14 q(.......)...... 2675c: 0c00297a fe00100c 102029da 01000b11 z).......) ..... 0002676c : 2676c: aff00bbf 089ee00a c0078cd0 bf100000 ................ 2677c: 1ff5e01a e4f3513f f2403e0f 00100872 ....?Q...>@.r... 2678c: e003c005 007a0000 0900005c 01a00780 ......z.\....... 2679c: ffffffff 733e03fd 0030833c 00c500f2 ......>s<.0..... 267ac: 0e100f00 f0020030 9f00f200 ffffffff ....0........... 267bc: 36c33841 890030e3 00005c00 a007700a A8.6.0...\...p.. 267cc: 79000000 00000000 00000079 20e9ff5c ...y....y...\.. 267dc: 9ebcfc06 79b00e90 800f1000 0d000079 .......y....y... 267ec: 000079f5 50fdef03 cf060000 000040fe .y.....P.....@.. 267fc: 00f15e79 f3057900 07790007 bce92ff1 y^...y....y../.. 2680c: ae03a0af 0000d7ff 00007900 00790000 .........y....y. 2681c: 80de0300 00d00500 01500ce4 004c00e3 ..........P...L. 2682c: 00a9005a c004a006 4c00004e 500d5a00 Z.......N..L.Z.P 2683c: 1ce40000 0000a058 e173ce03 0000e93c ....X.....s.<... 2684c: 400ed600 7c0000a8 d003c003 3c202e00 ...@...|...... < 2685c: 0b003d00 09e20070 00d00680 00a0dd04 .=..p........... 2686c: 00b1ef09 3ce40900 d90000a0 00007d00 .......<.....}.. 2687c: a01cc00c ae3f0000 010000c1 0000c0df ......?......... 2688c: 708feb03 00db0018 3ff0657f ea8f0040 ...p.....e.?@... 2689c: 0000f703 f90b70cf 40bfcf66 30eadf08 .....p..f..@...0 268ac: 000000a5 f5000000 72e4e4f5 f205da00 ...........r.... 268bc: 700fc00b 205f403f 007f106f 205f106f ...p?@_ o...o._ 268cc: 700f403f f205c00b 303fda00 f106b00c ?@.p......?0.... 268dc: e900f601 ad00bc00 ad00ae00 e900bc00 ................ 268ec: f106f601 303fb00c 06004a00 2ba0a474 ......?0.J..t..+ 268fc: 7f00e5ff 6b7b20fb a004008d 00130000 ..... {k........ 2690c: 10050000 500f0000 500f0000 511f0100 .......P...P...Q 2691c: ffffef10 744f34f3 500f0040 500f0000 .....4Ot@..P...P 2692c: fd520900 0fc5a00b 10110100 04f3ff1f ..R............. 2693c: 12034044 00901efc 00f10500 00b00a00 D@.............. 2694c: 00600f00 00105f00 0000ab00 0000f600 ..`.._.......... 2695c: 0000f105 0000b00a 0000600f 0000104f .........`..O... 2696c: 000000ac 040000f6 0a0000f1 0e0000c0 ................ 2697c: 4f000060 00000010 00c5ef08 cfa8cf00 `..O............ 2698c: 00f50770 c00df20a 1ff80100 dc000080 p............... 2699c: 0000603f 00603fbd 801fbd00 0ddc0000 ?`...?`......... 269ac: f80100c0 0a00f507 a8cf00f2 080070cf .............p.. 269bc: ef00c5ef f37a36ff 05305f00 305f00f3 .....6z.._0..._0 269cc: 5f00f305 00f30530 f305305f 05305f00 ..._0..._0..._0. 269dc: fdbe04f3 98fd0770 002890cf 0000bf00 ....p.....(..... 269ec: 00f20700 00af0000 804f0000 c03f0000 ..........O...?. 269fc: c13e0000 c12e0000 d12e0000 f82e0000 ..>............. 26a0c: ff467777 6ffaffff 02ffffff b09f7777 wwF....o....ww.. 26a1c: e10c0000 f3090000 f6050000 df000000 ................ 26a2c: 040010e9 0000fd59 00f40600 643f0000 ....Y.........?d 26a3c: f3080040 fb8cc9bf d7ff7c00 01000000 @........|...... 26a4c: 000000eb 0010be00 506f0000 2f000000 ..........oP.../ 26a5c: 00000090 0000d00c 01f30800 f80300d5 ................ 26a6c: 00602f00 f72322ed ffff6f21 5581ffff ./`.."#.!o.....U 26a7c: 52f95655 2f000000 00000060 0500f602 UV.R.../`....... 26a8c: 00ffffff 7077777f 0000e008 0000ad00 .....wwp........ 26a9c: 10c20b00 ffdf0000 550430fb 0020ff68 .........0.Uh. . 26aac: 00f80400 920f0000 f6050050 fd8ad98f ........P....... 26abc: e9ef5b10 ce050010 9f0060fc 05708bc8 .[.......`....p. 26acc: 000000f8 0000d00c 00801f00 682f0000 ............../h 26adc: 3f10faef d08f64ee 0600f12f 00c00ef4 ...?.d../....... 26aec: f109f602 01f30600 b09f86de d8ef1900 ................ 26afc: ffff8f00 77f7e8ff 008ffc77 90554f00 .......ww....OU. 26b0c: 00e00b00 00f80200 109f0000 b00f0000 ................ 26b1c: f4060000 dd000000 3f000000 0a000070 ...........?p... 26b2c: 010000f1 000000f9 00d7ff5c af76fc06 ........\.....v. 26b3c: 00d00ca0 c00df109 07f20700 c05e11f7 ..............^. 26b4c: feffbf00 54f90910 802fd07e 4ff60400 .......T~./....O 26b5c: f8000050 0500a01f 76fb09f6 6c00d0af P..........v...l 26b6c: 0010d8ff 0080fd8e fc68f80c 00505f00 ..........h.._P. 26b7c: 008f703f 7fc00e00 f01f0030 cf13d41f ?p......0....... 26b8c: ffef04f1 0200f0a9 00f00a31 a00e0000 ........1....... 26b9c: 9f000000 8da70930 df0700f7 1e0040eb ....0........@.. 26bac: 1003fc92 00000000 1efc1203 fc921e90 ................ 26bbc: 00001003 01000000 a8d01fe9 00a0300e .............0.. 26bcc: 00420000 03f37d01 bf10e89f ee0000b5 ..B..}.......... 26bdc: 17000081 0000b4df 00d2af04 ef820100 ................ 26bec: 45f3ffff 00515555 01000000 ef101111 ...EUUQ......... 26bfc: 34f3ffff 50404444 ef000000 06000092 ...4DD@P........ 26c0c: 0000b5cf 00e29f03 02f36c00 bf20e99e .........l.... . 26c1c: 930000c6 04000000 0770fdbe a0bf77fc ..........p..w.. 26c2c: cf000027 09000000 010000f0 010000ea '............... 26c3c: 000010dd 000010ce 0000603f 00003001 ........?`...0.. 26c4c: 00000100 00f50600 405f0000 17000000 .........._@.... 26c5c: 00b5fdce fb050000 c27d2353 406e0000 ........S#}...n@ 26c6c: 8e000000 01f40210 493ffaae 1e900ab0 ..........?I.... 26c7c: 40ef5be6 8f300fe3 40af0010 d9001f98 .[.@..0....@.... 26c8c: 403f0000 e8003f6a 401f0000 d9001f5c ..?@j?.....@\... 26c9c: 403f0000 8f300f6a 40af0010 1e900a98 ..?@j.0....@.... 26cac: a6de5ad6 01f303f2 ee16faaf 406e0050 .Z..........P.n@ 26cbc: 00000000 fb060000 00752353 17000000 ........S#u..... 26ccc: 00a3fdce 02000000 000000fd f49f0000 ................ 26cdc: 00000000 00b09e0f f2060000 0000207f ............. .. 26cec: f801dc00 4f000000 00e00b60 00f00b00 .......O`....... 26cfc: 0100604f ed1111fa ff8f0000 00f3ffff O`.............. 26d0c: 4444c40e f406a04f af000000 0000cd10 ..DDO........... 26d1c: 5ff80200 40ebffff 5755f805 405f40df ..._...@..UW.@_@ 26d2c: 05fa0100 0f0000f4 11515fa0 ff05f43a ........._Q.:... 26d3c: 00faffff 5944745f 00f405fa 5ff20800 ...._tDY......._ 26d4c: 5f000040 0000f445 855ff209 05fb6a55 @.._E....._.Uj.. 26d5c: d7ffffff 8d020000 0400b4fe f99db8ff ................ 26d6c: 0020fd02 20bf5008 0f000000 000000a0 .. ..P. ........ 26d7c: 0000f602 602f0000 00000000 000000fa ....../`........ 26d8c: 00f20b00 2f000000 850000d2 89fb5f00 ......./....._.. 26d9c: 290080df 5f40ebdf 30eaffff 77975f00 ...)..@_...0._.w 26dac: 5f00f89e af000040 00405f60 5fe00d00 ..._@...`_@...._ 26dbc: 06000040 00405ff4 5ff60300 03000040 @...._@...._@... 26dcc: 00405ff6 5ff40600 0d000040 00405fe0 ._@...._@...._@. 26ddc: 5f60af00 f89e7797 ffff5f00 5f0030ea ..`_.w..._...0._ 26dec: 95ffffff 747777f9 0000405f 0000f405 .....wwt_@...... 26dfc: 11515f00 ffff0511 745fe0ff f4054444 ._Q......._tDD.. 26e0c: 5f000000 05000040 000000f4 7777975f ..._@......._.ww 26e1c: ffffff65 ffff5ffd 77f995ff 405f7477 e...._.....wwt_@ 26e2c: f4050000 5f000000 05000040 102222f5 ......._@...."". 26e3c: feffff5f 5555f805 00405f40 00f40500 _.....UU@_@..... 26e4c: 405f0000 f4050000 00000000 b5fe8d01 .._@............ 26e5c: fb4f0000 02b0df89 060020fd 00f20b60 ..O...... ..`... 26e6c: 0f000000 000000a0 00602f00 2f000000 ........./`..../ 26e7c: 09000060 00a00ff0 0bf00900 090000f2 `............... 26e8c: 20fd02f0 00f00a00 df89fb4f 8d0200c0 ... ....O....... 26e9c: 5f00c6fe 4f000040 0000f455 405ff504 ..._@..OU....._@ 26eac: 554f0000 040000f4 22525ff5 ff555f22 ..OU....._R""_U. 26ebc: f5ffffff 5555855f 00f4558f 5ff50400 ...._.UU.U....._ 26ecc: 4f000040 0000f455 405ff504 554f0000 @..OU....._@..OU 26edc: 040000f4 f4455ff5 5ff4455f 455ff445 ....._E._E._E._E 26eec: f4455ff4 00f4455f 00faffff 00fa7777 ._E._E......ww.. 26efc: 00fa0000 00fa0000 00fa0000 00fa0000 ................ 26f0c: 00fa0000 00fa0000 07f90000 0df60320 ............ ... 26f1c: 01f18ee9 5f30fbae eb020040 0100f405 ......0_@....... 26f2c: 405f00ec 0510de01 20ce00f4 bf405f00 .._@....... ._@. 26f3c: f4050030 0000909f 40efcf5f 91ff0500 0......._..@.... 26f4c: 5f0010ee 00fc03a0 0600f405 405f00f8 ..._.........._@ 26f5c: 05f50900 0c0000f4 00405ff2 00f40500 ........._@..... 26f6c: 405f0000 f4050000 5f000000 05000040 .._@......._@... 26f7c: 000000f4 0000405f 0000f405 00405f00 ...._@......._@. 26f8c: 00f40500 975f0000 ff257777 5ff5ffff ......_.ww%...._ 26f9c: 00000040 00fc951e f9080000 0000f55f @..........._... 26fac: fd95ff02 ae0000e0 705f5ff9 955f3f00 .........__p.?_. 26fbc: 0b108ff3 315ff9c0 0ff304e9 f207f395 ......_1........ 26fcc: 5ff900db 20ef0d30 00f3950f f900905f ..._0.. ...._... 26fdc: 7100305f f3950f00 00000000 00505ff9 _0.q........._P. 26fec: ff554f00 f5040020 0000fd5f f9fa554f .OU. ..._...OU.. 26ffc: 5ff50400 4f00f54a f20df455 405ff504 ..._J..OU....._@ 2700c: 554fd02f 946f00f4 00405ff5 f455afaf /.OU..o.._@...U. 2701c: f5df0000 0200405f 00f455ff 00f50600 ...._@...U...... 2702c: b5fe8d01 ff040000 00fa9eb8 0020fd02 .............. . 2703c: bf00f908 0a000020 00a00ff2 723f0000 .... .........?r 2704c: 000000f6 602ff900 0f000000 0000fa90 ....../`........ 2705c: 0bf70300 000000f2 d22f20af 908f0000 ......... /..... 2706c: 89fb4f00 0000a0ef 50ebdf28 ffff5f00 .O......(..P._.. 2707c: 975f00d7 5fc0bf78 f6070040 0000405f .._.x.._@..._@.. 2708c: 00405ffa 405ffa00 5ff80300 f16e2362 ._@..._@..._b#n. 2709c: fdffff5f 54855f30 405f0020 5f000000 _...0_.T ._@..._ 270ac: 00000040 0000405f 8d010000 0000b5fe @..._@.......... 270bc: 89fb4e00 0200a0ef 080020fd f20a00f9 .N....... ...... 270cc: af000000 00a00f20 703f0000 0000602f .... .....?p/`.. 270dc: 2f900f00 00000060 901f900f 2f000000 .../`........../ 270ec: 00f10b70 20af0000 0010fc03 0000f907 p...... ........ 270fc: df78fa6f 030000b0 00c5ffae 00000000 o.x............. 2710c: b015d43e 02000000 0080ffbf 01000000 >............... 2711c: ff5f0031 5f00d7ff c0bf7897 0700405f 1._...._.x.._@.. 2712c: 00405ff6 405ffa00 5ffa0000 f8030040 ._@..._@..._@... 2713c: 6e23525f ffff5fe1 855f30fc 5f00f955 _R#n._...0_.U.._ 2714c: 407f0040 0c00405f 00405fe0 5c00f902 @..@_@..._@....\ 2715c: 0720d9ef 90af87fc 0100c00e 00800f10 .. ............. 2716c: f50d0000 03000000 0050eaef feae0500 ..........P..... 2717c: 00000040 0000f14e 08f30500 f2080000 @...N........... 2718c: bf77fa2f ff9d02a0 ffff00c7 67f5ffff /.w............g 2719c: 7277fb78 00f70100 f7010000 01000000 x.wr............ 271ac: 000000f7 0000f701 00f70100 f7010000 ................ 271bc: 01000000 000000f7 0000f701 00f70100 ................ 271cc: f7010000 306f0000 168f0000 080000f3 ......o0........ 271dc: 00306ff1 f3168f00 f1080000 0000306f .o0.........o0.. 271ec: 00f3168f 6ff10800 8f000030 0000f405 .......o0....... 271fc: 703ff009 00cd0000 5f0020de a8ff0480 ..?p..... ._.... 2720c: 0300d0bf 0081fdbe 0000e00c 6f306f00 .............o0o 2721c: 0c000050 00fb00c0 00f60300 0000f209 P............... 2722c: 2f0000ae 901f0080 00ce0000 0000f207 .../............ 2723c: db00f605 0e000000 00504fc0 3b8f0000 .........OP....; 2724c: 000000e0 00f8fb02 0b000000 000010ff ................ 2725c: b04f0000 405f0000 00df0000 0ff50200 ..O..._@........ 2726c: ff020090 f0070040 0700e00b 0c0090fe ....@........... 2727c: 00f306b0 00e0aa0c f801601f f3541f00 .........`....T. 2728c: 00106f00 107f00cd 00cc00f8 cb207f00 .o............ . 2729c: f701ad00 712f0000 265f00f6 0d0000f2 ....../q.._&.... 272ac: 0f00f1c6 0000d07b 00c0fd08 0080df0b ....{........... 272bc: 70ff0300 30ff0600 ef000000 fe010020 ...p...0.... ... 272cc: 903f0000 00cd0000 7f00408f 10de0030 ..?......@..0... 272dc: 0300802f 00d00cfa f3fb0700 0c000000 /............... 272ec: 000000f8 00c0ef01 7fbf0000 6f000070 ............p..o 272fc: 0020af60 ed01b02f 00f10c00 f607f804 `. ./........... 2730c: f3090000 0000e00c f703f207 901f0000 ................ 2731c: 0010af00 1f00109e 00f602a0 0bf30800 ................ 2732c: 000000d0 00404fec fb5f0000 00000000 .....O@..._..... 2733c: 0000f20c f0090000 00000000 0000f009 ................ 2734c: f0090000 00000000 0000f009 ffffff3f ............?... 2735c: 777701fd 0090bf77 c01e0000 0c000000 ..www........... 2736c: 000000f2 0000f508 00f90400 ec010000 ................ 2737c: 00000000 000020cf 00508f00 904f0000 ..... ....P...O. 2738c: 1e000000 777777f8 ffffff05 ff5ff0ff .....www......_. 2739c: 5f50f705 00f30530 f305305f 05305f00 ..P_0..._0..._0. 273ac: 305f00f3 5f00f305 00f30530 f705305f .._0..._0..._0.. 273bc: 00ff5f50 0000007e 0000401f 0000900c P_..~....@...... 273cc: 0000e007 0000f402 0000c900 00007e00 .............~.. 273dc: 00402f00 00900c00 00e00700 00f30200 ./@............. 273ec: 00d90000 007e0000 302f0000 900d0000 ......~.../0.... 273fc: e0070000 ea35fabf ea00ea00 ea00ea00 ......5......... 2740c: ea00ea00 ea00ea00 ea00ea00 ea35ea00 ..............5. 2741c: 2f00fabf 9d000080 f30000e0 d00600d5 .../............ 2742c: 600c007b 103f201f 009a800b ffffe004 {..`. ?......... 2743c: 1111ffff f6071111 01e70300 0080fd9e ................ 2744c: 90af87ce af000002 06000000 ffbe02f2 ................ 2745c: 42ec20ff 502ff227 ec207f00 02f27f42 . .B'./P.. .B... 2746c: 206ffbbf 0000008f 00008f00 008f0000 ..o ............ 2747c: 8f000000 00b3fe2b ef78ec8f 00a08f30 ....+.....x.0... 2748c: 208fc01e 8ff10700 f3050000 0700208f ... ......... .. 2749c: 00a08ff1 ec8fd01e 8e30ef78 00b3fe2b ........x.0.+... 274ac: c4ef3a00 7cd84f00 00d00df4 00f61307 .:...O.|........ 274bc: 304f0000 f6030000 0d000000 100600d0 ..O0............ 274cc: f47cd74f c4ef3a00 00000000 0000f701 O.|..:.......... 274dc: 00f70100 f7010000 a3ff3b00 87fd04f7 .........;...... 274ec: d00ef7ce 3ff70b00 f7030060 0100304f .......?`...O0.. 274fc: 00503ff7 c00ef703 04f70a00 f7be65fc .?P..........e.. 2750c: b2ff3b00 fe3b00f7 fc0400a2 0e20ee67 .;....;.....g. . 2751c: a01e00c0 0700503f ffff4ff0 723ff1ff ....?P...O....?r 2752c: 0e202222 000200c0 af87fd04 ef3a0050 "" .........P.:. 2753c: 5d0000d6 b52f00fc 00f30470 a0ffff0c ...]../.p....... 2754c: 0053f748 0500305f 5f0000f3 f3050030 H.S._0....._0... 2755c: 305f0000 00f30500 00305f00 b2ff3b00 .._0....._0..;.. 2756c: 87fe04e9 d10ef9cf 3ff90a00 f9010060 ...........?`... 2757c: 0000404f 00603ff9 d00ef901 04f90900 O@...?`......... 2758c: f8cf87fd b3ff3b00 000000f7 e909f405 .....;.......... 2759c: 01b0af77 00d8ff7c 0000008f 0000f008 w...|........... 275ac: 00008f00 bff20800 fb8f10ea f808fd89 ................ 275bc: 8ff40600 781f0010 f80000f0 0f00008f .......x........ 275cc: 0000f088 00008ff8 00f0880f 1a9ef800 ................ 275dc: f00800f2 8ff0088f 088ff008 f0088ff0 ................ 275ec: 00e20700 0000f309 f1070000 00f10700 ................ 275fc: 0700f107 f10700f1 00f10700 0700f107 ................ 2760c: f10700f1 18f00800 fc3ec06e 00008f20 ........n.>. ... 2761c: 00f00800 008f0000 f0080000 8fd11d00 ................ 2762c: 08e21d00 00e21df0 00f32d8f 70fffe08 .........-.....p 2763c: bfe28f00 01f20830 008f10ee f008fb03 ....0........... 2764c: 8ff70700 8f8f8f8f 8f8f8f8f 8e8f8f8f ................ 2765c: 3b91fe3c ff08a2fe c6cf9f96 708fd08f <..;...........p 2766c: 00c09f00 00f1585f 0100f605 00008ff7 ...._X.......... 2767c: 0f00404f 0400f088 f80000f4 4f00008f O@.............O 2768c: 880f0040 f40400f0 8ff80000 404f0000 @.............O@ 2769c: 8e800f00 08a1fe3b d08fa6ff 6f00808f ....;..........o 276ac: 0100f148 00008ff7 00f0880f 008ff800 H............... 276bc: f0880f00 8ff80000 800f0000 c4ef3b00 .............;.. 276cc: 87fd0400 d00e60cf 3ff10b00 f5030060 .....`.....?`... 276dc: 0100304f 00603ff7 d00ef503 04f10b00 O0...?`......... 276ec: 60cf77fd c4ef3b00 fe3b8e00 fb8f00b3 .w.`.;....;..... 276fc: 8f30df57 c00d0090 0700108f 00008ff1 W.0............. 2770c: 208ff305 8ff10700 d01e00a0 ef78ec8f ... ..........x. 2771c: fe2b8f30 008f00b3 8f000000 00000000 0.+............. 2772c: 0000008f ff3b0000 fd04f7a2 0ef7de87 ......;......... 2773c: f70b00d0 0300603f 00304ff7 603ff701 ....?`...O0...?` 2774c: 0ef70300 f70b00d0 ce77fd04 ff3b00f7 ..........w...;. 2775c: 0000f7a3 00f70100 f7010000 01000000 ................ 2776c: f02b8ef7 8f90ed8f 208f00a0 00008f00 ..+........ .... 2777c: 8f00008f 008f0000 00008f00 91fdae02 ................ 2778c: d069d71e 0000304f 0010b42f 60fdef06 ..i.O0../......` 2779c: f55b0100 f7000001 f36ba75f 40ecdf19 ..[....._.k....@ 277ac: 0000f305 cf00305f 8f04faff f3053075 ...._0......u0.. 277bc: 305f0000 00f30500 00305f00 0000f404 .._0....._0..... 277cc: 0080c61f ae10fc5d 5a2f0000 f50200e0 ....]...../Z.... 277dc: 2f0000ae 0200e05a 0000aef5 00f0592f .../Z......./Y.. 277ec: 306ff504 ee51af00 02f5bf76 503ffbbe ..o0..Q.v.....?P 277fc: 0000c00d 00f206cb f900f502 00e00900 ................ 2780c: 800f009e 6f602f00 c00c0010 050000cb ...../`o........ 2781c: 0000f4f6 00d0ef00 708f0000 0000bb00 ...........p.... 2782c: 4f00109f 0e00f116 c00900f6 fc05600f ...O.........`.. 2783c: 00f600b0 5fab00ac 05105f10 f7500ff1 ......._._....P. 2784c: 0f00b00a c009f076 ac0000f5 8f4f00ba ....v.........O. 2785c: ff040000 a0ef0040 e00e0000 00f40800 ....@........... 2786c: 00704f00 308f209f cd00505f 0200902e .Op.. .0_P...... 2787c: 0000d0ff 0000f60a 00e1fd04 c00deb01 ................ 2788c: 3f10be00 00406f80 c00d407f 06cb0000 ...?.o@..@...... 2789c: f40200f3 0900ea00 108f00d0 1f00701f .............p.. 278ac: 00107f70 00d9e00a f2f90300 cf000000 p............... 278bc: 000000b0 0000406f 0000ad00 00f5791c ....o@.......y.. 278cc: 70ee1a00 ff4f0000 5515f9ff 0000f45b ...p..O....U[... 278dc: 0100804f 0b0000ec 8f0000e1 f7040040 O...........@... 278ec: e51e0000 ff5f5355 2c00fcff 61af00f5 ....US_....,...a 278fc: 0000cc00 db0000db 00db0000 1f00ea02 ................ 2790c: fa0500f4 00db0000 0000db00 cc0000db ................ 2791c: 61af0000 5ff52c00 155ff115 f1155ff1 ...a.,._.._.._.. 2792c: 5ff1155f 155ff115 f1155ff1 80be105f _.._.._.._.._... 2793c: 0140af03 701f00f6 1f00f701 00f90070 ..@....p....p... 2794c: fb00fb0a 01701f20 701f00f7 af03f601 .... .p....p.... 2795c: 0090be40 00000000 00e43d00 f5860cb5 @........=...... 2796c: 03f0201e 000290ef 02001000 400d90ce . .............@ 2797c: 0e003b89 0d0e003b ce028940 f8080090 .;..;...@....... 2798c: 00f7e7ef 00000000 00000000 00000000 ................ 2799c: 00dc4900 16000000 00ffffbf ff8d0300 .I.............. 279ac: 00ffffff ffffcf00 00ffffff ffffff00 ................ 279bc: 00ffc7ff eaffff00 00ff0051 0083ff00 ........Q....... 279cc: 00ff0000 0000ff00 00ff0000 0000ff00 ................ 279dc: 00ff0000 0000ff00 00ff0000 0000ff00 ................ 279ec: 00ffff2b 0000ff00 2bffffdf 0000ffff +..........+.... 279fc: dffdffdf 0000ffff dfb2ff2b 0000fdff ........+....... 27a0c: 2b000000 0000b2ff d0000000 ffffff0f ...+............ 27a1c: ff0df0ff 8888c8ff f0ffff8c 0000800f ................ 27a2c: f00ff008 0000800f ff0ff008 000080ff ................ 27a3c: f0ffff08 ccccec0f f00ff0ce ccccec0f ................ 27a4c: ff0ff0ce 000080ff f0ffff08 0000800f ................ 27a5c: f00ff008 0000800f ff0ff008 8888c8ff ................ 27a6c: d0ffff8c ffffff0f df0df0ff ffff73ff .............s.. 27a7c: fffdffff ffffa5ff ffffffff ffffa5ff ................ 27a8c: dfffffff ffff73ff 00fdffff 00000000 .....s.......... 27a9c: df000000 ffff73ff fffdffff ffffa5ff .....s.......... 27aac: ffffffff ffffa5ff dfffffff ffff73ff .............s.. 27abc: 00fdffff 00000000 df000000 ffff73ff .............s.. 27acc: fffdffff ffffa5ff ffffffff ffffa5ff ................ 27adc: dfffffff ffff73ff 00fdffff 00000000 .....s.......... 27aec: 00b10a00 00000000 00fcbf00 00000000 ................ 27afc: 00fbff0b 00000000 1bc0ffbf 0b0000a0 ................ 27b0c: cf00fcff bf0000fb bf00c0ff ff0bb0ff ................ 27b1c: 0c0000fc ffbffbff 000000c0 fbffffcf ................ 27b2c: 00000000 b0ffff0c 00000000 00fbbf00 ................ 27b3c: 00000000 00b00b00 03000000 03000000 ................ 27b4c: 0010fc08 fcfff81c f5ff1c10 ff2cfcff ..............,. 27b5c: ffff05f5 0500f5ff 00f5ffff fdff1d00 ................ 27b6c: ff1c0010 1c10fcff fcfff9ff 05f5ff1c ................ 27b7c: f5dffcff d1ff0500 040000a4 000000a1 ................ 27b8c: 0000e04f 10020000 1003f16f d05f0000 O.......o....._. 27b9c: d13ff16f f1ff0300 fd5ff16f 40ff0d00 o.?.....o._....@ 27bac: ff09f16f 00f74f70 cf00f16f 00f09fe0 o...pO..o....... 27bbc: 5f00f16f 00c0bff3 2f00f16f 00c0bff5 o.._....o../.... 27bcc: 1f00e04f 00e0aff6 4f000000 00f46ff4 O..........O.o.. 27bdc: af000000 10fe0ff0 ff050000 d3ff06a0 ................ 27bec: ff7f0000 ff9f0020 f4ffbeda ff060000 .... ........... 27bfc: 30fdffff 17000000 0050cabd 00000000 ...0......P..... 27c0c: 0000b88b 00000000 0000ffff 06300000 ..............0. 27c1c: 0360ffff dffd0400 effdffff ffff0d40 ..`.........@... 27c2c: ffffffff ffff4fd0 ffff9ff9 ffff08f4 .....O.......... 27c3c: ffff0220 f9ff0080 ff9f0000 f9ff0000 ............... 27c4c: ff9f0000 ffff0800 ffff0220 ffff4f80 ........ ....O.. 27c5c: ffff9ff9 ffff0df4 ffffffff dffe04d0 ................ 27c6c: dffdffff 06300040 0360ffff 00000000 ....@.0...`..... 27c7c: 0000ffff 00000000 0000b88b 00000000 ................ 27c8c: 3f30dd03 000000f3 f5ff6f00 0000f44f ..0?.....o..O... 27c9c: 99ff0900 00f4bfff f6bf0100 f4ff6f22 ............"o.. 27cac: fe2d0000 ef53ff35 ff0400f4 f8ff8fc1 ..-.5.S......... 27cbc: 7f40fe2d ffff1afa f7afa1ff ffdf82cf -.@............. 27ccc: 28fdffff ff0e14fc ffffffff 0f0041e0 ...(.........A.. 27cdc: ffffffff 0000f0ff 00f9ff0f 00f0ff8f ................ 27cec: f8ff0f00 f0ff8f00 ff0f0000 ff8f00f8 ................ 27cfc: 0e0000f0 6f00f6ff 0000e0ff fddf0000 .......o........ 27d0c: 00000000 ffff0000 00000000 ffff0000 ................ 27d1c: 00000000 ffff0000 00000000 ffff0000 ................ 27d2c: 00000000 ffff0000 00000000 ffffff4f ............O... 27d3c: 0000f4ff ffffff0b 0000b0ff ffffbf00 ................ 27d4c: 000000fb ffff0b00 000000b0 fbbf0000 ................ 27d5c: df000000 b11bfcff fffdffcf 2cc2ffff ..............., 27d6c: ffffffff ffffffff ffffffff ffffffff ................ 27d7c: dfffe0f0 ffffffff 00fdffff ffffef04 ................ 27d8c: 0040feff ffff1e00 e1ffffff b0af0000 ..@............. 27d9c: 0b000000 ff0500fa 00000010 1e50ff01 ..............P. 27dac: 000000f6 e16f0000 0000b0af 0b000000 ......o......... 27dbc: fffffffa ff080080 ffffffff 1f00f1ff ................ 27dcc: ffffffff ffffffff ffffffff ffffffff ................ 27ddc: ffffffff ffffffff ffffffff ff8fffff ................ 27dec: ffffffff 00f8ffff dabd0600 00ff0250 ............P... 27dfc: ffffef05 00ff42fe 7ba7ff7f 05fff9ff .....B.....{.... 27e0c: 0000c1ff 0effff2c 020000fc 5fffdf22 ....,.......".._ 27e1c: 0f0000f2 8fffffff 0f0000b0 00ffffff ................ ... 27e38: ff000000 00f0ffff fff80b00 00f0ffff ................ 27e48: fff42f00 002022fd ffe0cf00 0000c2ff ./..." ......... 27e58: ff40ff2c 6ab7ff9f ff00f7ff ffffdf24 ,.@....j....$... 27e68: ff0050fe dbac0520 00000060 00000000 .P.. ...`....... 27e78: 008d0000 00ff0800 dfff8f00 ffffffff ................ 27e88: ffffffff ffffffff ffffffff dfffffff ................ 27e98: 00ffffff 00ff8f00 00ff0800 008d0000 ................ ... 27eb4: 0000008d 00ff0800 8f000000 cf0000ff ................ 27ec4: 01ffffff ffffff50 fff706ff 00ffffff ....P........... 27ed4: ffffffbe ffae00ff 05ffffff ffffdff8 ................ 27ee4: 006002ff 00ff9f00 09000000 000000ff ..`............. 27ef4: 009e0000 00000000 00000000 00000000 ................ 27f04: 00100600 00000000 d21f0000 00000000 ................ 27f14: 0300008d 000010ee 0a00ff08 00b02fb1 ............./.. 27f24: 00ff8f00 f407fc05 ffffffdf 605f5002 .............P_` 27f34: fffffff9 0df706ff ffffbdc0 ae00ffff ................ 27f44: ff9ff009 00ffffff 8ff009ae ffffffff ................ 27f54: c00df706 ffffdfad 5f5002ff 0000e960 ..........P_`... 27f64: 0500ff8f 00f406fc 00ff0800 b02fb10a ............../. 27f74: 8d000000 ee020000 00000010 1f000000 ................ 27f84: 000000d2 00000000 8f001006 ffffffff ................ 27f94: fff8ffff fffffffc ffffffff ffff2f20 ............ /.. 27fa4: fcffffff ffff0c00 ffffffee feff2f20 ............ /.. 27fb4: ffffef22 e2fffffc ffff2e00 20fe4efe "............N. 27fc4: ffff0200 00c202e2 ffff0000 00000020 ............ ... 27fd4: ffff0000 00000000 ffff0000 ffffffff ................ 27fe4: 8fffffff ffffffff 00f8ffff 00000000 ................ 27ff4: 010030ff 0040ffcc 40ffff2d ffffef03 .0....@.-..@.... 28004: ffff3f40 ffff44ff ff9fffff ffffffff @?...D.......... 28014: ffffffff ffffffff ffffafff ff45ffff ..............E. 28024: 40ffffff ffffff4f ffef0340 2e0040ff ...@O...@....@.. 28034: 0030ffff 0000cc01 00000000 00000000 ..0............. 28044: 918f0000 00000000 70ffff00 00000000 ...........p.... 28054: 40fdffff ff000000 10faffff ffff0000 ...@............ 28064: 00f7ffff ffffff00 00d5ffff ffffffff ................ 28074: ffb2ffff ffffffff fffffdff ffffffff ................ 28084: fffffffd b2ffffff ffffffff ff00d5ff ................ 28094: f7ffffff ffff0000 0010faff fdffff00 ................ 280a4: 00000040 0070ffff 8e000000 000000a1 @.....p......... ... 280c4: 00f8ff8f fff8ff8f ff00ffff ffffffff ................ 280d4: ffff00ff ffffffff ffffff00 00ffffff ................ 280e4: ffffffff ff00ffff ffffffff ffff00ff ................ 280f4: ffffffff ffffff00 00ffffff ffffffff ................ 28104: ff00ffff ffffffff ffff00ff ffffffff ................ 28114: ffffff00 00ffffff 7fffffff 7f00f7ff ................ 28124: ff8ff7ff ffffffff fffffff8 ffffffff ................ 28134: ffffffff ffffffff ffffffff ffffffff ................ 28144: ffffffff ffffffff ffffffff ffffffff ................ 28154: ffffffff ffffffff ffffffff ffffffff ................ 28164: ffffffff ffffffff ffffffff ffffffff ................ 28174: ffffffff ffffffff ffffffff ffff8fff ................ 28184: f8ffffff 00000000 0010cc00 d2ffff03 ................ 28194: ffff0400 ff0430fe 04f4ffff ffffffff .....0.......... 281a4: ffffff54 fffff9ff ffffffff ffffffff T............... 281b4: ffffffff fffffff9 ffff44ff ff04f3ff .........D...... 281c4: 0430feff 00d2ffff 10ccff04 00ff0300 ..0............. 281d4: 00000000 2d000000 000000d2 ef010000 .......-........ 281e4: 000010fe ff1d0000 0000d1ff ffcf0000 ................ 281f4: 0000fcff ffff0b00 00b0ffff ffffaf00 ................ 28204: 00faffff ffffff09 90ffffff ffffff0f ................ 28214: f0ffffff ffffff08 80ffffff 00000000 ................ 28224: 00000000 ffffff0c c0ffffff ffffff0f ................ 28234: f0ffffff ffffff0f f0ffffff ffffff0c ................ 28244: c0ffffff 1a000000 01000040 0000f0df ........@....... 28254: 00a0ff1d 00fadf01 a0ff1d00 fadf0100 ................ 28264: ff0c0000 0d0000a0 000080ff 00f8df01 ................ 28274: ff1d0000 01000080 0000f8df 80ff1d00 ................ 28284: df010000 000000f0 a104501b 0f000000 .........P...... 28294: 000010fd 00d1ff0a fdaf0000 0a000010 ................ 282a4: 0000d1ff 10fdaf00 ff0a0000 080000c0 ................ 282b4: 0000d0ff 0010fd8f 00d1ff08 10fd8f00 ................ 282c4: d1ff0800 fd0f0000 05000010 000000b1 ................ 282d4: ff040000 00000040 80ff0800 00000000 ....@........... 282e4: 0080ff08 08000000 000080ff ff080000 ................ 282f4: 48000080 c8ff8c88 ffff8488 ffffffff ...H............ 28304: ffffffff ffffffff ff8c8848 008488c8 ........H....... 28314: 80ff0800 00000000 0080ff08 08000000 ................ 28324: 000080ff ff080000 00000080 40ff0400 ...............@ 28334: 44140000 44444444 ffffef41 feffffff ...DDDDDA....... 28344: ffffffff 7bffffff bbbbbbbb 0000b7bb .......{........ 28354: daffad05 00000050 88fcdf04 0040fdcf ....P.........@. 28364: 40fe7f00 f7ef0400 f4ff0700 4f809e00 ...@...........O 28374: ff4f70ff f8af00c0 dff4ff0c ff9a80ff .pO............. 28384: fdff08fe ef80ffdf ff08feff c0ff4ffd .............O.. 28394: 0cf8ff8f ff07f4ff 80ee08f4 0070ff4f ............O.p. 283a4: 0040fe7f 00f8ef04 fcdf0400 40fdcf88 ..@............@ 283b4: 05000000 50daffad 208c0000 00000000 .......P... .... 283c4: 00000000 0000e4df 00000000 ff1b0000 ................ 283d4: fddf4980 000000a5 ffff7f00 d4ff8cd8 .I.............. 283e4: 04000000 0000f8ef 0070ff4e ff1c0000 ........N.p..... 283f4: ff04e869 e30400f7 fffe9f00 40ffcf80 i..............@ 28404: 0570ff0d 8fe0ffff ff0dd0ff ff2d00f7 ..p...........-. 28414: d0ff8fe0 00fcff04 cff8af00 7f0030ff .............0.. 28424: 060040ff 00f7ffff f4ff0800 ff3e0000 .@............>. 28434: 000000a0 82c8ff4d 00f7bf01 5a000000 ....M..........Z 28444: 0810fcdf 0000a0ff 00000000 fd4e0000 ..............N. ... 2845c: 0000c802 d22d0000 00000000 00000000 ......-......... 2846c: 0000fbbf 00000000 ffff0500 00000050 ............P... 2847c: 0d000000 00d0ffff 00000000 ffff7f00 ................ 2848c: 000000f7 ff010000 10ff8dd8 00000000 ................ 2849c: 0aa0ff0a 0000a0ff ff3f0000 f3ff0bb0 ..........?..... 284ac: 00000000 0cc0ffcf 0000fcff ffff0500 ................ 284bc: ffff0dd0 0e000050 9ff9ffff 00e0ffff ....P........... 284cc: ffff8f00 ffff2ee2 ff0200f8 0990ffff ................ 284dc: 10ffffff ffffff0a ffff3ee3 ff0fa0ff .........>...... 284ec: ffffffff f0ffffff ffffff08 ffffffff ................ 284fc: 000080ff 00000000 00000000 00000000 ................ 2850c: 000000d8 00000000 ffff80ff ff070070 ............p... 2851c: fffff8ff ff6f00f6 8e78fdff e8ff15ff ......o...x..... 2852c: 0200e2ff 20fe4fe5 000020fe 00f3ff13 .....O. . ...... 2853c: 00000052 0031ff3f 02000052 205ef4ef R...?.1.R.....^ 2854c: 8e7820fe e8ff51ff ffffe2ff ff6f00f6 . x..Q........o. 2855c: fffffdff ff070070 0000f8ff 00000000 ....p........... 2856c: 000080ff 00000000 000000d8 00000000 ................ ... 28584: 01000000 000010dd ff1d0000 000000d1 ................ 28594: fdffdf01 1d000010 d1ff99ff f9df0100 ................ 285a4: 10fd9f00 0090ff1d bfd1ff09 000000f9 ................ 285b4: 905ffb9f 09000000 000000f5 00000000 .._............. 285c4: 00000000 5f000000 00000090 f9bff509 ......._........ 285d4: 9f000000 90ff1dfb d1ff0900 00f9df01 ................ 285e4: 0010fd9f ff99ff1d 010000d1 10fdffdf ................ 285f4: 1d000000 0000d1ff dd010000 00000010 ................ ... 28614: 00d11d00 00000000 df010000 ffef10fd ................ 28624: 00d0ffff d1ffff1d ffffffaf cfcf00f0 ................ 28634: 0000fcfc 00f00f00 b6f11f6b 0f000000 ........k....... 28644: 0f0000f0 000000f0 00f00f00 00f00f00 ................ 28654: 0f000000 0f0000f0 000000f0 b6f11f6b ............k... 28664: 00f00f00 cfcf0000 0f00fcfc faffffff ................ 28674: d1ffff1d ffff0d00 df01feff 000010fd ................ 28684: 00000000 00d11d00 00000000 00000000 ................ 28694: ff8f0000 0000e2ff ffff0000 0020feff .............. . 286a4: ffff0000 ffffffff fffff8ff ffffffff ................ 286b4: ffffffff ffffffff ffffffff ffffffff ................ 286c4: ffffffff ffffffff ffffffff ffffffff ................ 286d4: ffffffff ffffffff ffffffff ffffffff ................ 286e4: ffffffff ffffffff ff8fffff ffffffff ................ 286f4: 0000f8ff 00b00b00 00000000 00fbbf00 ................ 28704: 00000000 b0ffff0b 00000000 fbffffbf ................ 28714: 0b000000 ffffffff 4f0000b0 ffffffff ...........O.... 28724: 000000f4 00ffff00 00000000 00ffff00 ................ 28734: 00000000 00ffff00 00000000 00ffff00 ................ 28744: 00000000 00ffff00 ffdf0000 0ffddff0 ................ 28754: fffffdff 9f0000f9 ffffffff ffffffff ................ 28764: ffffffff f0ffffff ffdfffe0 ffffffff ................ 28774: 0000fdff 00000000 00000000 00000000 ................ 28784: 0062ea0a 00000000 f0ffff02 00000000 ..b............. 28794: ffff9f00 00000000 ffff0f00 000000d0 ................ 287a4: ffff0200 000000fb ef030000 000070ff .............p.. 287b4: 04000000 0000f2ff 00000000 0000fbbf ................ 287c4: 00000000 0030ff6f 00000200 0090ff4f ....o.0.....O... 287d4: 00f38f02 00d0ff6f e4ffff0a 00d1ffbf ....o........... 287e4: ffffef00 00d1ffff ffff0a00 0090ffff ................ 287f4: ff6f0000 0030fbff ff020000 000072db ..o...0......r.. 28804: 08000000 000080ee ff086106 2d0080ff .........a.....- 28814: 33efd0ff ff2e00fe 3ff30ef3 f3ff2ee0 ...3.......?.... 28824: ffff8f00 00f3ff6e ffff8e00 0000f3ff ....n........... 28834: ffef0200 000000f3 ffff2e00 08000030 ............0... 28844: ffffffef ff080030 ffeff6ff 33ef0030 ....0.......0..3 28854: ffef02fe 3ff30e30 ffef02e0 f8ff8f30 ....0..?....0... 28864: fddf0200 00e88e00 10660000 ffdf0000 ..........f..... 28874: 00200dff ffffff00 0000e20f 0fffffff .. ............. 28884: fff0dffd 0020ffff fffff0ff ffffffff ...... ......... 28894: fffffff0 f0ffffff ffffffff fff0ffff ................ 288a4: ffffffff fffff0ff ffffffff fffffff0 ................ 288b4: f0ffffff ffffffff fff0ffff ffffffff ................ 288c4: ffdff0ff fffdffff 000000f9 ffff0000 ................ 288d4: 00ffffff ffffdf00 0000fdff ffffff8f ................ 288e4: ff00c2ff ffffffff 00ff20fe ff010000 ......... ...... 288f4: 0000ffe2 fcff0000 000000ff ffffff00 ................ 28904: 00000000 ffffffff ffffffff ffffffff ................ 28914: ffffffff 11fbffff ffffffbf 1f00f1ff ................ 28924: ffffffff ff1f00f1 fbffffff ffffbf11 ................ 28934: ffffffff 8fffffff ffffffff df00f8ff ................ 28944: 0000fdff fcffff01 ff030000 0000f7ff ................ 28954: f2ffff06 ff080000 0000d0ff ffffff0a ................ 28964: ff0cd0ff a0ffffff ffffff0e ff0d20ff ............. .. 28974: 00f8ffff ff0a0000 000000e0 0050ff0e ..............P. 28984: fc2f0000 00000000 0000f35f a09f0000 ../....._....... 28994: 00000000 000010df 00d70000 04000000 ................ 289a4: 000040ee 99ffdf00 0000fdff ff99ffff .@.............. 289b4: ff0000ff ffffffff ffff0000 00000090 ................ 289c4: 0dffff00 200dffff ff0fffff ffe20fff ....... ........ 289d4: ffff0fff fffffd0f 20ffff0f 0fffff00 ........... .... 289e4: ffffffff ff0fffff ffffffff ffff0fff ................ 289f4: ffdfffff ffffff0f 0f0000ff ffffffff ................ 28a04: ff0f0000 00ffffff ffff0d00 0000fdff ................ 28a14: 0000cc00 02000000 000030ff ffbf0100 .........0...... 28a24: 000020fc ffffff1e 9f0000e1 f8ffffff . .............. 28a34: ffef0000 00fdffff ffffff00 0100ffff ................ 28a44: ffffffff ff0300ff ffffffff ffff0830 ............0... 28a54: 80ffffff ffffff1e cfe1ffff ffffffff ................ 28a64: ffcffcff ffffffff 000000fc 00000000 ................ 28a74: ff0e0000 000000e0 40ee0400 ff8f0000 ...........@.... 28a84: ffffffff fff8ffff ffffffff ffffffff ................ 28a94: 0ff000ff 000ff000 f000ffff 0ff0000f ................ 28aa4: ffffff00 ffffffff ffffffff 888008f8 ................ 28ab4: ff8f8008 8008f8ff 8f800888 ffffffff ................ 28ac4: ffffffff 00ffffff 000000f0 ffff000f ................ 28ad4: 0000f000 ff000f00 ffffffff ffffffff ................ 28ae4: ffff8fff ffffffff 0000f8ff 00000000 ................ ... 28afc: 70af0300 00000000 ffcf0400 000000f0 ...p............ 28b0c: ffdf0600 0000a0ff ffef1700 0030ffff ..............0. 28b1c: ffff1800 00fcffff ffff2a00 f4ffffff .........*...... 28b2c: ffff0800 ffffffff ff0f00d0 ffffffff ................ 28b3c: 080060ff ffffffff 0000feff 00000000 .`.............. 28b4c: 00f7ffff 00000000 f1ffff00 00000000 ................ 28b5c: ffff0000 00000080 ff000000 000010ff ................ 28b6c: 00000000 0000faff 00000000 00f2ff00 ................ 28b7c: 00000000 808f0000 00000000 00000000 ................ 28b8c: 00000000 f0ffffdf ffff00d2 20fef0ff ............... 28b9c: f0ffffff ffffe2ff fdfff0ff f2ffffff ................ 28bac: ffff0000 ffffffff ffffffff ffffffff ................ 28bbc: ffffffff ffffffff ffffffff ffffffff ................ 28bcc: ffffffff ffffffff ffffffff ffffffff ................ 28bdc: ffffffff ffffffff ffffffff ffdfffff ................ 28bec: fdffffff 00000000 00000000 00000000 ................ 28bfc: feef9c04 000040c9 ffef0700 feffffff .....@.......... 28c0c: df040070 8aa8fcff 40fdffcf 00d5ff6f p..........@o... 28c1c: 5d000000 f6cff6ff 00000000 fc6f0000 ...]..........o. 28c2c: 5a00301a 00a5fddf 0000a103 ffffff4d .0.Z........M... 28c3c: 0000d4ff feff0500 ffef8aa8 01000050 ............P... 28c4c: 000070df 0010fd07 00120000 21000000 .p.............! 28c5c: 00000000 e44e0000 00000000 00000000 ......N......... 28c6c: 0000feef 00000000 feef0000 00000000 ................ 28c7c: 00000000 0000e44e ff8f0000 ffffffff ....N........... 28c8c: 80ffffff ffffffff ffffffff 00fff0ff ................ 28c9c: 00000000 fd0f0000 ffff0fff ffffffff ................ 28cac: 0fffff0f ffffffff ff00ffff ffff0fff ................ 28cbc: ffffffff 0fffff00 ffffffff ff0fffff ................ 28ccc: 000000ff 00000000 fffffd0f ffffffff ................ 28cdc: f0ffffff ffffff8f ffffffff ff8f80ff ................ 28cec: ffffffff 80ffffff ffffffff ffffffff ................ 28cfc: 00fff0ff 00000000 fd0f0000 ffff0fff ................ 28d0c: 00f0ffff 0fffff0f ffffffff ff0000f0 ................ 28d1c: ffff0fff 00f0ffff 0fffff00 ffffffff ................ 28d2c: ff0f00f0 000000ff 00000000 fffffd0f ................ 28d3c: ffffffff f0ffffff ffffff8f ffffffff ................ 28d4c: ff8f80ff ffffffff 80ffffff ffffffff ................ 28d5c: ffffffff 00fff0ff 00000000 fd0f0000 ................ 28d6c: ffff0fff 000000ff 0fffff0f 00ffffff ................ 28d7c: ff000000 ffff0fff 000000ff 0fffff00 ................ 28d8c: 00ffffff ff0f0000 000000ff 00000000 ................ 28d9c: fffffd0f ffffffff f0ffffff ffffff8f ................ 28dac: ffffffff ff8f80ff ffffffff 80ffffff ................ 28dbc: ffffffff ffffffff 00fff0ff 00000000 ................ 28dcc: fd0f0000 f0ff0fff 00000000 0fffff0f ................ 28ddc: 0000f0ff ff000000 f0ff0fff 00000000 ................ 28dec: 0fffff00 0000f0ff ff0f0000 000000ff ................ 28dfc: 00000000 fffffd0f ffffffff f0ffffff ................ 28e0c: ffffff8f ffffffff ff8f80ff ffffffff ................ 28e1c: 80ffffff ffffffff ffffffff 00fff0ff ................ 28e2c: 00000000 fd0f0000 000000ff 00000000 ................ 28e3c: 00ffff0f 00000000 ff000000 000000ff ................ 28e4c: 00000000 00ffff00 00000000 ff0f0000 ................ 28e5c: 000000ff 00000000 fffffd0f ffffffff ................ 28e6c: f0ffffff ffffff8f ffffffff 000080ff ................ 28e7c: 01000000 00000000 00000000 10fd0700 ................ 28e8c: 00000000 cf010000 0000f5ff 00000000 ................ 28e9c: fe29b900 00000010 3f000000 00000210 ..)........?.... 28eac: df030000 00900a80 70030000 77ffdf00 ...........p...w 28ebc: 555555f7 0fd38f55 dfccfdff cdccccdc .UUUU........... 28ecc: fe8fb0ff 00aa0010 404d0000 00104600 ..........M@.F.. 28edc: 3302f201 00000010 09000000 00f9cfb1 ...3............ 28eec: 00000000 ff0a0000 000090ff 00000000 ................ 28efc: f9bf0000 00000000 00000000 00002201 .............".. 28f0c: df180000 020092fd ffeffbef faff0d30 ............0... 28f1c: 4fe0ff2e ff03faff fafa9ff5 cffa4f35 ...O........5O.. 28f2c: 0b3d8ac0 03fbeffd fffe8f12 ff06b0ff ..=............. 28f3c: d1ffffff efffff08 9f1011fd 59d1dfff ...............Y 28f4c: affd0b3b 1d38fad7 faff5ffb 0df7df01 ;.....8.._...... 28f5c: ff1dfaff fcef03f1 0050ffdf a3fedf18 ..........P..... 28f6c: 7f000000 0000f7ff ffffffef effeffff ................ 28f7c: ffffffff 0000feff 00000000 ffff0f00 ................ 28f8c: f0ffffff ffffff0f 0ff0ffff f9999ff9 ................ 28f9c: f80ff09f 8ff8888f 8ff80ff0 f08ff888 ................ 28fac: 888ff80f 0ff08ff8 f8888ff8 f80ff08f ................ 28fbc: 8ff8888f 8ff80ff0 f08ff888 999ff90f ................ 28fcc: 0ff09ff9 ffffffff ff08f0ff ffffffff ................ 28fdc: 00000080 7f000000 000000a0 8f000000 ................ 28fec: 0000b0ff 0d000000 00a0ffff 8a000000 ................ 28ffc: 00ffff1d 8f000000 70ff1dfa 8f000000 ...........p.... 2900c: 801dfaff 8f000000 00faffff 8f000000 ................ 2901c: 80ffffff 8f000000 80ffffff 8f000000 ................ 2902c: 80ffffff 8f000000 80ffffff 6f000000 ...............o 2903c: 80ffffff 0b000000 80ffffff 00000000 ................ 2904c: 80ffffdf 00000000 80ffff0e 00000000 ................ 2905c: 60dbde00 00000000 00000000 00000000 ...`............ 2906c: 00000000 ffffff1b e4ffffff ffdf0100 ................ 2907c: ffffffff 1d00feff effaffff ffffaffe ................ 2908c: ffffdf01 0ae22ea0 ff1dffff 02e2ffff ................ 2909c: ffff2e20 ffffffcf ef0220fe ffcfffff ........ ...... 290ac: 20feffff ffffef02 ffffff1d 2e2002e2 ... .......... . 290bc: df01ffff 2ea0ffff ffff0ae2 ffff1d00 ................ 290cc: affeeffa 0100ffff ffffffdf feffffff ................ 290dc: ff1b0000 ffffffff 0800e4ff e4ffffff ................ 290ec: ffff8f00 f808feff ff400b0f 0b0ff88f ..........@..... 290fc: f8ffff40 ff400b0f ffffffff ffffffff @.....@......... 2910c: ffffffff ffffffff ffffffff ffffffff ................ 2911c: ffffffff ffffffff ffffffff ffffffff ................ 2912c: ffffffff ffffffff ffffffff ffefffff ................ 2913c: feffffff ffffff4e 0000e4ff 00000000 ....N........... 2914c: 00000100 00000000 00e00300 00001000 ................ 2915c: 10ef0200 0000bf00 f17f0000 00f1cf00 ................ 2916c: ff070000 77ffcf11 bf777777 ffffcff1 .......wwww..... 2917c: ffffffff ffff17ff ffffffff ff07e0ff ................ 2918c: 000000f1 06000000 000010ff 00000000 ................ 2919c: 0000a005 00000000 ........ 000291a4 <__func__.9667>: 291a4: 645f766c 5f707369 5f767264 69676572 lv_disp_drv_regi 291b4: 72657473 00000000 742f2e2e 64726968 ster....../third 291c4: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 291d4: 61685f76 766c2f6c 6c61685f 7369645f v_hal/lv_hal_dis 291e4: 00632e70 p.c. 000291e8 : 291e8: 00011069 00000000 i....... 000291f0 <__func__.9543>: 291f0: 615f766c 5f6d696e 72617473 00000074 lv_anim_start... 29200: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv 29210: 732f6c67 6c2f6372 696d5f76 6c2f6373 gl/src/lv_misc/l 29220: 6e615f76 632e6d69 00000000 v_anim.c.... 0002922c <__func__.9631>: 2922c: 665f766c 72645f73 65725f76 74736967 lv_fs_drv_regist 2923c: 00007265 er.. 00029240 <__func__.9538>: 29240: 665f766c 706f5f73 00006e65 lv_fs_open.. 0002924c <__func__.9602>: 2924c: 665f766c 69645f73 706f5f72 00006e65 lv_fs_dir_open.. 2925c: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv 2926c: 732f6c67 6c2f6372 696d5f76 6c2f6373 gl/src/lv_misc/l 2927c: 73665f76 0000632e v_fs.c.. 00029284 : 29284: 023c0000 06b30478 0b2808ee 0f990d61 ..<.x.....(.a... 29294: 140611d0 186c163a 1ccb1a9d 21211ef7 ....:.l.......!! 292a4: 256c2348 29ac278e 2ddf2bc7 32032ff3 H#l%.'.).+.-./.2 292b4: 36183410 3a1c381c 3e0e3c17 41ec3fff .4.6.8.:.<.>.?.A 292c4: 45b643d4 496a4793 4d084b3c 508d4ecd .C.E.GjI: 2933c: 6d5f766c 615f6d65 636f6c6c 00000000 lv_mem_alloc.... 0002934c <__func__.7297>: 2934c: 5f766c5f 5f6d656d 5f667562 656c6572 _lv_mem_buf_rele 2935c: 00657361 ase. 00029360 <__func__.7240>: 29360: 6d5f766c 725f6d65 6c6c6165 0000636f lv_mem_realloc.. 00029370 <__func__.7283>: 29370: 5f766c5f 5f6d656d 5f667562 00746567 _lv_mem_buf_get. 29380: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv 29390: 732f6c67 6c2f6372 696d5f76 6c2f6373 gl/src/lv_misc/l 293a0: 656d5f76 00632e6d 6c756f43 74276e64 v_mem.c.Couldn't 293b0: 6c6c6120 7461636f 656d2065 79726f6d allocate memory 293c0: 00000000 6d5f766c 625f6d65 725f6675 ....lv_mem_buf_r 293d0: 61656c65 203a6573 73692070 746f6e20 elease: p is not 293e0: 6b206120 6e776f6e 66756220 00726566 a known buffer. 293f0: 6d5f766c 625f6d65 675f6675 203a7465 lv_mem_buf_get: 29400: 2074754f 6d20666f 726f6d65 63202c79 Out of memory, c 29410: 74276e61 6c6c6120 7461636f 20612065 an't allocate a 29420: 2077656e 66756220 20726566 636e6928 new buffer (inc 29430: 73616572 6f792065 4c207275 454d5f56 rease your LV_ME 29440: 49535f4d 682f455a 20706165 657a6973 M_SIZE/heap size 29450: 00000029 6d5f766c 625f6d65 675f6675 )...lv_mem_buf_g 29460: 203a7465 66206f6e 20656572 66667562 et: no free buff 29470: 202e7265 72636e49 65736165 5f564c20 er. Increase LV_ 29480: 57415244 4655425f 58414d5f 4d554e5f DRAW_BUF_MAX_NUM 29490: 0000002e .... 00029494 <__func__.9561>: 29494: 745f766c 5f6b7361 61657263 625f6574 lv_task_create_b 294a4: 63697361 00000000 asic.... 000294ac <__func__.9574>: 294ac: 745f766c 5f6b7361 61657263 00006574 lv_task_create.. 294bc: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv 294cc: 732f6c67 6c2f6372 696d5f76 6c2f6373 gl/src/lv_misc/l 294dc: 61745f76 632e6b73 00000000 v_task.c.... 000294e8 <__func__.6088>: 294e8: 5f766c5f 5f747874 5f746567 657a6973 _lv_txt_get_size 294f8: 00000000 3b2e2c20 005f2d3a 742f2e2e .... ,.;:-_.../t 29508: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s 29518: 6c2f6372 696d5f76 6c2f6373 78745f76 rc/lv_misc/lv_tx 29528: 00632e74 745f766c 675f7478 735f7465 t.c.lv_txt_get_s 29538: 3a657a69 746e6920 72656765 65766f20 ize: integer ove 29548: 6f6c6672 68772077 20656c69 636c6163 rflow while calc 29558: 74616c75 20676e69 74786574 69656820 ulating text hei 29568: 00746867 0000ffff 00008410 008c80ef ght............. 00029578 <__func__.9965>: 29578: 695f766c 645f676d 67697365 0000006e lv_img_design... 00029588 <__func__.9838>: 29588: 695f766c 735f676d 615f7465 5f6f7475 lv_img_set_auto_ 29598: 657a6973 00000000 size.... 000295a0 <__func__.9845>: 295a0: 695f766c 735f676d 6f5f7465 65736666 lv_img_set_offse 295b0: 00785f74 t_x. 000295b4 <__func__.9852>: 295b4: 695f766c 735f676d 6f5f7465 65736666 lv_img_set_offse 295c4: 00795f74 t_y. 000295c8 <__func__.9888>: 295c8: 695f766c 675f676d 735f7465 00006372 lv_img_get_src.. 000295d8 <__func__.9894>: 295d8: 695f766c 675f676d 665f7465 5f656c69 lv_img_get_file_ 295e8: 656d616e 00000000 name.... 000295f0 <__func__.9900>: 295f0: 695f766c 675f676d 615f7465 5f6f7475 lv_img_get_auto_ 29600: 657a6973 00000000 size.... 00029608 <__func__.9817>: 29608: 695f766c 735f676d 735f7465 00006372 lv_img_set_src.. 00029618 <__func__.9808>: 29618: 695f766c 635f676d 74616572 00000065 lv_img_create... 00029628 <__func__.9906>: 29628: 695f766c 675f676d 6f5f7465 65736666 lv_img_get_offse 29638: 00785f74 t_x. 0002963c <__func__.9912>: 2963c: 695f766c 675f676d 6f5f7465 65736666 lv_img_get_offse 2964c: 00795f74 t_y. 00029650 <__func__.9919>: 29650: 695f766c 675f676d 705f7465 746f7669 lv_img_get_pivot 29660: 00000000 .... 00029664 <__func__.9925>: 29664: 695f766c 675f676d 615f7465 656c676e lv_img_get_angle 29674: 00000000 .... 00029678 <__func__.9931>: 29678: 695f766c 675f676d 7a5f7465 006d6f6f lv_img_get_zoom. 00029688 <__func__.9937>: 29688: 695f766c 675f676d 615f7465 6169746e lv_img_get_antia 29698: 7361696c 00000000 742f2e2e 64726968 lias....../third 296a8: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 296b8: 69775f76 74656764 766c2f73 676d695f v_widgets/lv_img 296c8: 0000632e 695f766c 735f676d 735f7465 .c..lv_img_set_s 296d8: 203a6372 6e6b6e75 206e776f 65707974 rc: unknown type 296e8: 00000000 695f766c 735f676d 735f7465 ....lv_img_set_s 296f8: 203a6372 6e6b6e75 206e776f 67616d69 rc: unknown imag 29708: 79742065 00006570 695f766c 735f676d e type..lv_img_s 29718: 735f7465 203a6372 564c6020 474d495f et_src: `LV_IMG 29728: 4352535f 5241565f 4c424149 74206045 _SRC_VARIABLE` t 29738: 20657079 6e756f66 00000064 67616d69 ype found...imag 29748: 72632065 65746165 00000064 695f766c e created...lv_i 29758: 0000676d mg.. 0002975c <__func__.10208>: 2975c: 6c5f766c 6c656261 7465735f 746f645f lv_label_set_dot 2976c: 706d745f 00000000 _tmp.... 00029774 <__func__.9902>: 29774: 6c5f766c 6c656261 7465735f 696c615f lv_label_set_ali 29784: 00006e67 gn.. 00029788 <__func__.9923>: 29788: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 29798: 65735f74 74735f6c 00747261 t_sel_start. 000297a4 <__func__.9929>: 297a4: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 297b4: 65735f74 6e655f6c 00000064 t_sel_end... 000297c0 <__func__.9934>: 297c0: 6c5f766c 6c656261 7465675f 7865745f lv_label_get_tex 297d0: 00000074 t... 000297d4 <__func__.9940>: 297d4: 6c5f766c 6c656261 7465675f 6e6f6c5f lv_label_get_lon 297e4: 6f6d5f67 00006564 g_mode.. 000297ec <__func__.9946>: 297ec: 6c5f766c 6c656261 7465675f 696c615f lv_label_get_ali 297fc: 00006e67 gn.. 00029800 <__func__.9953>: 29800: 6c5f766c 6c656261 7465675f 6365725f lv_label_get_rec 29810: 726f6c6f 00000000 olor.... 00029818 <__func__.9959>: 29818: 6c5f766c 6c656261 7465675f 696e615f lv_label_get_ani 29828: 70735f6d 00646565 m_speed. 00029830 <__func__.9967>: 29830: 6c5f766c 6c656261 7465675f 74656c5f lv_label_get_let 29840: 5f726574 00736f70 ter_pos. 00029848 <__func__.9996>: 29848: 6c5f766c 6c656261 7465675f 74656c5f lv_label_get_let 29858: 5f726574 00006e6f ter_on.. 00029860 <__func__.9865>: 29860: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 29870: 00000074 t... 00029874 <__func__.9876>: 29874: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 29884: 6d665f74 00000074 t_fmt... 0002988c <__func__.9888>: 2988c: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 2989c: 74735f74 63697461 00000000 t_static.... 000298a8 <__func__.9895>: 298a8: 6c5f766c 6c656261 7465735f 6e6f6c5f lv_label_set_lon 298b8: 6f6d5f67 00006564 g_mode.. 000298c0 <__func__.9909>: 298c0: 6c5f766c 6c656261 7465735f 6365725f lv_label_set_rec 298d0: 726f6c6f 00000000 olor.... 000298d8 <__func__.9854>: 298d8: 6c5f766c 6c656261 6572635f 00657461 lv_label_create. 000298e8 <__func__.9916>: 298e8: 6c5f766c 6c656261 7465735f 696e615f lv_label_set_ani 298f8: 70735f6d 00646565 m_speed. 00029900 <__func__.10033>: 29900: 6c5f766c 6c656261 7465675f 7865745f lv_label_get_tex 29910: 65735f74 74735f6c 00747261 t_sel_start. 0002991c <__func__.10038>: 2991c: 6c5f766c 6c656261 7465675f 7865745f lv_label_get_tex 2992c: 65735f74 6e655f6c 00000064 t_sel_end... 00029938 <__func__.10044>: 29938: 6c5f766c 6c656261 5f73695f 72616863 lv_label_is_char 29948: 646e755f 705f7265 0000736f _under_pos.. 00029954 <__func__.10089>: 29954: 6c5f766c 6c656261 736e695f 7865745f lv_label_ins_tex 29964: 00000074 t... 00029968 <__func__.10102>: 29968: 6c5f766c 6c656261 7475635f 7865745f lv_label_cut_tex 29978: 00000074 742f2e2e 64726968 74726170 t...../thirdpart 29988: 766c2f79 732f6c67 6c2f6372 69775f76 y/lvgl/src/lv_wi 29998: 74656764 766c2f73 62616c5f 632e6c65 dgets/lv_label.c 299a8: 00000000 6c696146 74206465 6c61206f ....Failed to al 299b8: 61636f6c 6d206574 726f6d65 6f662079 locate memory fo 299c8: 6f642072 6d745f74 74705f70 00000072 r dot_tmp_ptr... 299d8: 74786554 00000000 6562616c 7263206c Text....label cr 299e8: 65746165 00000064 6c5f766c 6c656261 eated...lv_label 299f8: 00000000 .... 000299fc <_init>: 299fc: b5f8 push {r3, r4, r5, r6, r7, lr} 299fe: bf00 nop 29a00: bcf8 pop {r3, r4, r5, r6, r7} 29a02: bc08 pop {r3} 29a04: 469e mov lr, r3 29a06: 4770 bx lr 00029a08 <__init_array_start>: 29a08: 00000289 .word 0x00000289 00029a0c <_fini>: 29a0c: b5f8 push {r3, r4, r5, r6, r7, lr} 29a0e: bf00 nop 29a10: bcf8 pop {r3, r4, r5, r6, r7} 29a12: bc08 pop {r3} 29a14: 469e mov lr, r3 29a16: 4770 bx lr 00029a18 <__fini_array_start>: 29a18: 00000265 .word 0x00000265