e54_gfx_learning.elf: file format elf32-littlearm Sections: Idx Name Size VMA LMA File off Algn 0 .text 00029a34 00000000 00000000 00010000 2**3 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .ARM.exidx 00000008 00029a34 00029a34 00039a34 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 2 .relocate 00000074 20000000 00029a3c 00040000 2**2 CONTENTS, ALLOC, LOAD, DATA 3 .bkupram 00000000 47000000 47000000 00040074 2**0 CONTENTS 4 .qspi 00000000 04000000 04000000 00040074 2**0 CONTENTS 5 .bss 00006d8c 20000078 00029ab8 00040078 2**3 ALLOC 6 .stack 00010004 20006e04 00030844 00040078 2**0 ALLOC 7 .ARM.attributes 0000002e 00000000 00000000 00040074 2**0 CONTENTS, READONLY 8 .comment 00000059 00000000 00000000 000400a2 2**0 CONTENTS, READONLY 9 .debug_info 0009d63d 00000000 00000000 000400fb 2**0 CONTENTS, READONLY, DEBUGGING 10 .debug_abbrev 0000c8ba 00000000 00000000 000dd738 2**0 CONTENTS, READONLY, DEBUGGING 11 .debug_loc 0004d923 00000000 00000000 000e9ff2 2**0 CONTENTS, READONLY, DEBUGGING 12 .debug_aranges 00002000 00000000 00000000 00137915 2**0 CONTENTS, READONLY, DEBUGGING 13 .debug_ranges 00003f18 00000000 00000000 00139915 2**0 CONTENTS, READONLY, DEBUGGING 14 .debug_macro 0003f994 00000000 00000000 0013d82d 2**0 CONTENTS, READONLY, DEBUGGING 15 .debug_line 0003ad4e 00000000 00000000 0017d1c1 2**0 CONTENTS, READONLY, DEBUGGING 16 .debug_str 0012b007 00000000 00000000 001b7f0f 2**0 CONTENTS, READONLY, DEBUGGING 17 .debug_frame 000064d4 00000000 00000000 002e2f18 2**2 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 : /********************** * GLOBAL FUNCTIONS **********************/ void _lv_gc_clear_roots(void) { 0: 08 6e 01 20 79 0f 00 00 75 0f 00 00 75 0f 00 00 .n. y...u...u... #define LV_CLEAR_ROOT(root_type, root_name) _lv_memset_00(&LV_GC_ROOT(root_name), sizeof(LV_GC_ROOT(root_name))); LV_ITERATE_ROOTS(LV_CLEAR_ROOT) 10: 75 0f 00 00 75 0f 00 00 75 0f 00 00 00 00 00 00 u...u...u....... ... 2c: 75 0f 00 00 75 0f 00 00 00 00 00 00 75 0f 00 00 u...u.......u... 3c: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 4c: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 5c: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 6c: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 7c: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 8c: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 9c: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... ac: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... bc: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... cc: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... dc: 75 0f 00 00 75 0f 00 00 75 0f 00 00 00 00 00 00 u...u...u....... ... f4: 71 1c 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 q...u...u...u... 104: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 114: 75 0f 00 00 cd 1e 00 00 e1 1e 00 00 f5 1e 00 00 u............... 124: 09 1f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 ....u...u...u... 134: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 144: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 154: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 164: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 174: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 184: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 194: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 1a4: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 1b4: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 1c4: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 1d4: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 1e4: 75 0f 00 00 75 0f 00 00 91 21 00 00 75 0f 00 00 u...u....!..u... 1f4: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 204: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 214: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 224: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 234: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 244: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 254: 75 0f 00 00 75 0f 00 00 75 0f 00 00 75 0f 00 00 u...u...u...u... 00000264 <__do_global_dtors_aux>: 264: b510 push {r4, lr} 266: 4c05 ldr r4, [pc, #20] ; (27c <__do_global_dtors_aux+0x18>) 268: 7823 ldrb r3, [r4, #0] 26a: b933 cbnz r3, 27a <__do_global_dtors_aux+0x16> 26c: 4b04 ldr r3, [pc, #16] ; (280 <__do_global_dtors_aux+0x1c>) 26e: b113 cbz r3, 276 <__do_global_dtors_aux+0x12> 270: 4804 ldr r0, [pc, #16] ; (284 <__do_global_dtors_aux+0x20>) 272: f3af 8000 nop.w 276: 2301 movs r3, #1 278: 7023 strb r3, [r4, #0] 27a: bd10 pop {r4, pc} 27c: 20000078 .word 0x20000078 280: 00000000 .word 0x00000000 284: 00029a3c .word 0x00029a3c 00000288 : 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: 00029a3c .word 0x00029a3c 2c4: 2000007c .word 0x2000007c 2c8: 00029a3c .word 0x00029a3c 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: 2223 movs r2, #35 ; 0x23 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: 2202 movs r2, #2 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: 2204 movs r2, #4 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: 00001521 .word 0x00001521 510: 20000000 .word 0x20000000 514: 1c03c3f7 .word 0x1c03c3f7 518: 41008080 .word 0x41008080 51c: 00001041 .word 0x00001041 520: 00001501 .word 0x00001501 524: 4b8a ldr r3, [pc, #552] ; (750 ) 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: 223a movs r2, #58 ; 0x3a 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: 22b6 movs r2, #182 ; 0xb6 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: 00010ee1 .word 0x00010ee1 768: 00010eed .word 0x00010eed 76c: 00010f15 .word 0x00010f15 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: 00010ee1 .word 0x00010ee1 cd8: 00010eed .word 0x00010eed if(area->y1 > SSD1963_VER_RES - 1) return; cdc: f9ba 4002 ldrsh.w r4, [sl, #2] ce0: 4b94 ldr r3, [pc, #592] ; (f34 ) 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: 00010ee1 .word 0x00010ee1 f38: 00010f15 .word 0x00010f15 f3c: 00010eed .word 0x00010eed f40: 41008000 .word 0x41008000 f44: 20000000 .word 0x20000000 f48: 1c03c3f7 .word 0x1c03c3f7 f4c: 41008080 .word 0x41008080 f50: 00001041 .word 0x00001041 f54: 00010fad .word 0x00010fad f58: 00001079 .word 0x00001079 int32_t act_y2 = area->y2 > SSD1963_VER_RES - 1 ? SSD1963_VER_RES - 1 : area->y2; f5c: 4b03 ldr r3, [pc, #12] ; (f6c ) 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: 00010ee1 .word 0x00010ee1 f70: 00010f15 .word 0x00010f15 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: 00029a3c .word 0x00029a3c ff4: 20000074 .word 0x20000074 ff8: 20006e04 .word 0x20006e04 ffc: 20000078 .word 0x20000078 1000: e000ed00 .word 0xe000ed00 1004: 00000000 .word 0x00000000 1008: 0001b495 .word 0x0001b495 100c: 000021b1 .word 0x000021b1 00001010 : p_gpio_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: b510 push {r4, lr} ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 1042: 2440 movs r4, #64 ; 0x40 1044: 4b0a ldr r3, [pc, #40] ; (1070 ) 1046: 615c str r4, [r3, #20] p_gpio_set_port_data(group, mask, (uint32_t)data); 1048: 4b0a ldr r3, [pc, #40] ; (1074 ) 104a: 4798 blx r3 104c: 2308 movs r3, #8 asm volatile("nop"); 104e: bf00 nop for(int x = 0; x < 8; x++) 1050: 3b01 subs r3, #1 1052: d1fc bne.n 104e 1054: 2280 movs r2, #128 ; 0x80 1056: 4b06 ldr r3, [pc, #24] ; (1070 ) 1058: 615a str r2, [r3, #20] 105a: 2308 movs r3, #8 asm volatile("nop"); 105c: bf00 nop for(int x = 0; x < 8; x++) 105e: 3b01 subs r3, #1 1060: d1fc bne.n 105c ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 1062: 4b03 ldr r3, [pc, #12] ; (1070 ) 1064: 2280 movs r2, #128 ; 0x80 1066: 619a str r2, [r3, #24] 1068: 2240 movs r2, #64 ; 0x40 106a: 619a str r2, [r3, #24] 106c: bd10 pop {r4, pc} 106e: bf00 nop 1070: 41008000 .word 0x41008000 1074: 00001011 .word 0x00001011 00001078 : for(int ind = 0; ind < len; ind++) 1078: b18b cbz r3, 109e { 107a: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 107e: 460f mov r7, r1 1080: 4606 mov r6, r0 1082: 4614 mov r4, r2 1084: eb02 0543 add.w r5, r2, r3, lsl #1 p_gpio_parallel_write(group, mask, data[ind]); 1088: f8df 8014 ldr.w r8, [pc, #20] ; 10a0 108c: f834 2b02 ldrh.w r2, [r4], #2 1090: 4639 mov r1, r7 1092: 4630 mov r0, r6 1094: 47c0 blx r8 for(int ind = 0; ind < len; ind++) 1096: 42ac cmp r4, r5 1098: d1f8 bne.n 108c 109a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 109e: 4770 bx lr 10a0: 00001041 .word 0x00001041 000010a4 : void p_gpio_set_port_group_config(enum gpio_port port, const uint32_t mask, p_port_config* config) { 10a4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 10a8: b083 sub sp, #12 10aa: 468b mov fp, r1 10ac: 9200 str r2, [sp, #0] for(uint8_t i = 0; i < 32; i++) { if(mask & (1UL << i)) { uint32_t _gpio_pin = GPIO(port, i); 10ae: 0140 lsls r0, r0, #5 10b0: b2c3 uxtb r3, r0 10b2: 9301 str r3, [sp, #4] 10b4: 2600 movs r6, #0 ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 10b6: f8df 9194 ldr.w r9, [pc, #404] ; 124c 10ba: e065 b.n 1188 ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 10bc: eb09 13c7 add.w r3, r9, r7, lsl #7 10c0: 605d str r5, [r3, #4] const enum gpio_direction direction) { switch (direction) { case GPIO_DIRECTION_OFF: hri_port_clear_DIR_reg(PORT, port, mask); hri_port_write_WRCONFIG_reg(PORT, port, PORT_WRCONFIG_WRPINCFG | (mask & 0xffff)); 10c2: b2aa uxth r2, r5 10c4: f042 4280 orr.w r2, r2, #1073741824 ; 0x40000000 static inline void hri_port_write_WRCONFIG_reg(const void *const hw, uint8_t submodule_index, hri_port_wrconfig_reg_t data) { PORT_CRITICAL_SECTION_ENTER(); ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; 10c8: 629a str r2, [r3, #40] ; 0x28 hri_port_write_WRCONFIG_reg( PORT, port, PORT_WRCONFIG_HWSEL | PORT_WRCONFIG_WRPINCFG | ((mask & 0xffff0000) >> 16)); 10ca: 0c2a lsrs r2, r5, #16 hri_port_write_WRCONFIG_reg( 10cc: f042 4240 orr.w r2, r2, #3221225472 ; 0xc0000000 10d0: 629a str r2, [r3, #40] ; 0x28 * \brief Set pin pull mode */ static inline void _gpio_set_pin_pull_mode(const enum gpio_port port, const uint8_t pin, const enum gpio_pull_mode pull_mode) { switch (pull_mode) { 10d2: 9b00 ldr r3, [sp, #0] 10d4: 781b ldrb r3, [r3, #0] 10d6: 2b01 cmp r3, #1 10d8: d077 beq.n 11ca 10da: b323 cbz r3, 1126 10dc: 2b02 cmp r3, #2 10de: f000 8084 beq.w 11ea hri_port_set_PINCFG_PULLEN_bit(PORT, port, pin); hri_port_clear_OUT_reg(PORT, port, 1U << pin); break; default: ASSERT(false); 10e2: 2289 movs r2, #137 ; 0x89 10e4: 4957 ldr r1, [pc, #348] ; (1244 ) 10e6: 2000 movs r0, #0 10e8: 4b57 ldr r3, [pc, #348] ; (1248 ) 10ea: 4798 blx r3 10ec: e024 b.n 1138 ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 10ee: eb09 12c7 add.w r2, r9, r7, lsl #7 10f2: 6055 str r5, [r2, #4] hri_port_write_WRCONFIG_reg(PORT, port, PORT_WRCONFIG_WRPINCFG | PORT_WRCONFIG_INEN | (mask & 0xffff)); 10f4: b2ab uxth r3, r5 10f6: f043 4380 orr.w r3, r3, #1073741824 ; 0x40000000 10fa: f443 3300 orr.w r3, r3, #131072 ; 0x20000 ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; 10fe: 6293 str r3, [r2, #40] ; 0x28 | ((mask & 0xffff0000) >> 16)); 1100: 0c2b lsrs r3, r5, #16 hri_port_write_WRCONFIG_reg(PORT, 1102: f043 4340 orr.w r3, r3, #3221225472 ; 0xc0000000 1106: f443 3300 orr.w r3, r3, #131072 ; 0x20000 110a: 6293 str r3, [r2, #40] ; 0x28 110c: e7e1 b.n 10d2 ((Port *)hw)->Group[submodule_index].DIRSET.reg = mask; 110e: eb09 13c7 add.w r3, r9, r7, lsl #7 1112: 609d str r5, [r3, #8] hri_port_write_WRCONFIG_reg(PORT, port, PORT_WRCONFIG_WRPINCFG | (mask & 0xffff)); 1114: b2aa uxth r2, r5 1116: f042 4280 orr.w r2, r2, #1073741824 ; 0x40000000 ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; 111a: 629a str r2, [r3, #40] ; 0x28 PORT, port, PORT_WRCONFIG_HWSEL | PORT_WRCONFIG_WRPINCFG | ((mask & 0xffff0000) >> 16)); 111c: 0c2a lsrs r2, r5, #16 hri_port_write_WRCONFIG_reg( 111e: f042 4240 orr.w r2, r2, #3221225472 ; 0xc0000000 1122: 629a str r2, [r3, #40] ; 0x28 1124: e7d5 b.n 10d2 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN; 1126: eb09 13c7 add.w r3, r9, r7, lsl #7 112a: 4443 add r3, r8 112c: f893 2040 ldrb.w r2, [r3, #64] ; 0x40 1130: f002 02fb and.w r2, r2, #251 ; 0xfb 1134: f883 2040 strb.w r2, [r3, #64] ; 0x40 gpio_set_pin_direction(_gpio_pin, config->direction); gpio_set_pin_pull_mode(_gpio_pin, config->pull_mode); gpio_set_pin_function(_gpio_pin, config->function); 1138: 9b00 ldr r3, [sp, #0] 113a: 685a ldr r2, [r3, #4] /** * \brief Set gpio pin function */ static inline void _gpio_set_pin_function(const uint32_t gpio, const uint32_t function) { uint8_t port = GPIO_PORT(gpio); 113c: 0964 lsrs r4, r4, #5 uint8_t pin = GPIO_PIN(gpio); if (function == GPIO_PIN_FUNCTION_OFF) { 113e: f1b2 3fff cmp.w r2, #4294967295 1142: d062 beq.n 120a tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 1144: b2e4 uxtb r4, r4 1146: eb09 11c4 add.w r1, r9, r4, lsl #7 114a: 4441 add r1, r8 114c: f891 3040 ldrb.w r3, [r1, #64] ; 0x40 tmp &= ~PORT_PINCFG_PMUXEN; 1150: f003 03fe and.w r3, r3, #254 ; 0xfe tmp |= value << PORT_PINCFG_PMUXEN_Pos; 1154: f043 0301 orr.w r3, r3, #1 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 1158: f881 3040 strb.w r3, [r1, #64] ; 0x40 hri_port_write_PINCFG_PMUXEN_bit(PORT, port, pin, false); } else { hri_port_write_PINCFG_PMUXEN_bit(PORT, port, pin, true); if (pin & 1) { 115c: f01a 0f01 tst.w sl, #1 1160: d15e bne.n 1220 tmp = ((Port *)hw)->Group[submodule_index].PMUX[index].reg; 1162: eb09 14c4 add.w r4, r9, r4, lsl #7 1166: eb04 0858 add.w r8, r4, r8, lsr #1 116a: f898 3030 ldrb.w r3, [r8, #48] ; 0x30 tmp &= ~PORT_PMUX_PMUXE_Msk; 116e: f003 03f0 and.w r3, r3, #240 ; 0xf0 tmp |= PORT_PMUX_PMUXE(data); 1172: f002 020f and.w r2, r2, #15 1176: 431a orrs r2, r3 ((Port *)hw)->Group[submodule_index].PMUX[index].reg = tmp; 1178: f888 2030 strb.w r2, [r8, #48] ; 0x30 ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 117c: eb09 17c7 add.w r7, r9, r7, lsl #7 1180: 617d str r5, [r7, #20] 1182: 3601 adds r6, #1 for(uint8_t i = 0; i < 32; i++) 1184: 2e20 cmp r6, #32 1186: d059 beq.n 123c 1188: b2f4 uxtb r4, r6 if(mask & (1UL << i)) 118a: fa2b f306 lsr.w r3, fp, r6 118e: f013 0f01 tst.w r3, #1 1192: d0f6 beq.n 1182 uint32_t _gpio_pin = GPIO(port, i); 1194: f004 041f and.w r4, r4, #31 1198: 9b01 ldr r3, [sp, #4] 119a: 441c add r4, r3 gpio_set_pin_direction(_gpio_pin, config->direction); 119c: fa5f fa84 uxtb.w sl, r4 * GPIO_DIRECTION_OFF = Disables the pin * (low power state) */ static inline void gpio_set_pin_direction(const uint8_t pin, const enum gpio_direction direction) { _gpio_set_direction((enum gpio_port)GPIO_PORT(pin), 1U << GPIO_PIN(pin), direction); 11a0: ea4f 175a mov.w r7, sl, lsr #5 11a4: f00a 081f and.w r8, sl, #31 11a8: 2501 movs r5, #1 11aa: fa05 f508 lsl.w r5, r5, r8 switch (direction) { 11ae: 9b00 ldr r3, [sp, #0] 11b0: 785b ldrb r3, [r3, #1] 11b2: 2b01 cmp r3, #1 11b4: d09b beq.n 10ee 11b6: 2b00 cmp r3, #0 11b8: d080 beq.n 10bc 11ba: 2b02 cmp r3, #2 11bc: d0a7 beq.n 110e ASSERT(false); 11be: 2246 movs r2, #70 ; 0x46 11c0: 4920 ldr r1, [pc, #128] ; (1244 ) 11c2: 2000 movs r0, #0 11c4: 4b20 ldr r3, [pc, #128] ; (1248 ) 11c6: 4798 blx r3 11c8: e783 b.n 10d2 hri_port_clear_DIR_reg(PORT, port, 1U << pin); 11ca: 2301 movs r3, #1 11cc: fa03 f308 lsl.w r3, r3, r8 ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 11d0: eb09 12c7 add.w r2, r9, r7, lsl #7 11d4: 6053 str r3, [r2, #4] ((Port *)hw)->Group[submodule_index].PINCFG[index].reg |= PORT_PINCFG_PULLEN; 11d6: eb02 0008 add.w r0, r2, r8 11da: f890 1040 ldrb.w r1, [r0, #64] ; 0x40 11de: f041 0104 orr.w r1, r1, #4 11e2: f880 1040 strb.w r1, [r0, #64] ; 0x40 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 11e6: 6193 str r3, [r2, #24] 11e8: e7a6 b.n 1138 hri_port_clear_DIR_reg(PORT, port, 1U << pin); 11ea: 2301 movs r3, #1 11ec: fa03 f308 lsl.w r3, r3, r8 ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 11f0: eb09 12c7 add.w r2, r9, r7, lsl #7 11f4: 6053 str r3, [r2, #4] ((Port *)hw)->Group[submodule_index].PINCFG[index].reg |= PORT_PINCFG_PULLEN; 11f6: eb02 0008 add.w r0, r2, r8 11fa: f890 1040 ldrb.w r1, [r0, #64] ; 0x40 11fe: f041 0104 orr.w r1, r1, #4 1202: f880 1040 strb.w r1, [r0, #64] ; 0x40 ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 1206: 6153 str r3, [r2, #20] 1208: e796 b.n 1138 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 120a: b2e4 uxtb r4, r4 120c: eb09 14c4 add.w r4, r9, r4, lsl #7 1210: 44a0 add r8, r4 1212: f898 3040 ldrb.w r3, [r8, #64] ; 0x40 tmp &= ~PORT_PINCFG_PMUXEN; 1216: f003 03fe and.w r3, r3, #254 ; 0xfe ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 121a: f888 3040 strb.w r3, [r8, #64] ; 0x40 121e: e7ad b.n 117c tmp = ((Port *)hw)->Group[submodule_index].PMUX[index].reg; 1220: eb09 14c4 add.w r4, r9, r4, lsl #7 1224: eb04 0858 add.w r8, r4, r8, lsr #1 1228: f898 3030 ldrb.w r3, [r8, #48] ; 0x30 tmp &= ~PORT_PMUX_PMUXO_Msk; 122c: f003 030f and.w r3, r3, #15 tmp |= PORT_PMUX_PMUXO(data); 1230: ea43 1202 orr.w r2, r3, r2, lsl #4 1234: b2d2 uxtb r2, r2 ((Port *)hw)->Group[submodule_index].PMUX[index].reg = tmp; 1236: f888 2030 strb.w r2, [r8, #48] ; 0x30 123a: e79f b.n 117c gpio_set_pin_level(_gpio_pin, 0); } } } 123c: b003 add sp, #12 123e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 1242: bf00 nop 1244: 0001b530 .word 0x0001b530 1248: 000019d5 .word 0x000019d5 124c: 41008000 .word 0x41008000 00001250 : { 1250: b570 push {r4, r5, r6, lr} 1252: b082 sub sp, #8 memset(&data_config, 0, sizeof(data_config)); 1254: 2300 movs r3, #0 1256: 9300 str r3, [sp, #0] data_config.direction = GPIO_DIRECTION_OUT; 1258: 2302 movs r3, #2 125a: f88d 3001 strb.w r3, [sp, #1] data_config.function = GPIO_PIN_FUNCTION_OFF; 125e: f04f 33ff mov.w r3, #4294967295 1262: 9301 str r3, [sp, #4] p_gpio_set_port_group_config(SSD1963_TFT_DATA_PORT, SSD1963_TFT_DATA_MASK, &data_config); 1264: 466a mov r2, sp 1266: 493f ldr r1, [pc, #252] ; (1364 ) 1268: 2001 movs r0, #1 126a: 4b3f ldr r3, [pc, #252] ; (1368 ) 126c: 4798 blx r3 ((Port *)hw)->Group[submodule_index].DIRSET.reg = mask; 126e: 4b3f ldr r3, [pc, #252] ; (136c ) 1270: 2640 movs r6, #64 ; 0x40 1272: 609e str r6, [r3, #8] ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; 1274: 4a3e ldr r2, [pc, #248] ; (1370 ) 1276: 629a str r2, [r3, #40] ; 0x28 1278: f04f 4240 mov.w r2, #3221225472 ; 0xc0000000 127c: 629a str r2, [r3, #40] ; 0x28 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN; 127e: f893 1046 ldrb.w r1, [r3, #70] ; 0x46 1282: f001 01fb and.w r1, r1, #251 ; 0xfb 1286: f883 1046 strb.w r1, [r3, #70] ; 0x46 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 128a: f893 1046 ldrb.w r1, [r3, #70] ; 0x46 tmp &= ~PORT_PINCFG_PMUXEN; 128e: f001 01fe and.w r1, r1, #254 ; 0xfe ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 1292: f883 1046 strb.w r1, [r3, #70] ; 0x46 ((Port *)hw)->Group[submodule_index].DIRSET.reg = mask; 1296: 2510 movs r5, #16 1298: 609d str r5, [r3, #8] ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; 129a: 4936 ldr r1, [pc, #216] ; (1374 ) 129c: 6299 str r1, [r3, #40] ; 0x28 129e: 629a str r2, [r3, #40] ; 0x28 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN; 12a0: f893 1044 ldrb.w r1, [r3, #68] ; 0x44 12a4: f001 01fb and.w r1, r1, #251 ; 0xfb 12a8: f883 1044 strb.w r1, [r3, #68] ; 0x44 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 12ac: f893 1044 ldrb.w r1, [r3, #68] ; 0x44 tmp &= ~PORT_PINCFG_PMUXEN; 12b0: f001 01fe and.w r1, r1, #254 ; 0xfe ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 12b4: f883 1044 strb.w r1, [r3, #68] ; 0x44 ((Port *)hw)->Group[submodule_index].DIRSET.reg = mask; 12b8: 2408 movs r4, #8 12ba: 609c str r4, [r3, #8] ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; 12bc: 492e ldr r1, [pc, #184] ; (1378 ) 12be: 6299 str r1, [r3, #40] ; 0x28 12c0: 629a str r2, [r3, #40] ; 0x28 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN; 12c2: f893 1043 ldrb.w r1, [r3, #67] ; 0x43 12c6: f001 01fb and.w r1, r1, #251 ; 0xfb 12ca: f883 1043 strb.w r1, [r3, #67] ; 0x43 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 12ce: f893 1043 ldrb.w r1, [r3, #67] ; 0x43 tmp &= ~PORT_PINCFG_PMUXEN; 12d2: f001 01fe and.w r1, r1, #254 ; 0xfe ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 12d6: f883 1043 strb.w r1, [r3, #67] ; 0x43 ((Port *)hw)->Group[submodule_index].DIRSET.reg = mask; 12da: 2120 movs r1, #32 12dc: 6099 str r1, [r3, #8] ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; 12de: f101 4180 add.w r1, r1, #1073741824 ; 0x40000000 12e2: 6299 str r1, [r3, #40] ; 0x28 12e4: 629a str r2, [r3, #40] ; 0x28 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN; 12e6: f893 1045 ldrb.w r1, [r3, #69] ; 0x45 12ea: f001 01fb and.w r1, r1, #251 ; 0xfb 12ee: f883 1045 strb.w r1, [r3, #69] ; 0x45 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 12f2: f893 1045 ldrb.w r1, [r3, #69] ; 0x45 tmp &= ~PORT_PINCFG_PMUXEN; 12f6: f001 01fe and.w r1, r1, #254 ; 0xfe ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 12fa: f883 1045 strb.w r1, [r3, #69] ; 0x45 ((Port *)hw)->Group[submodule_index].DIRSET.reg = mask; 12fe: 2080 movs r0, #128 ; 0x80 1300: 6098 str r0, [r3, #8] ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; 1302: 491e ldr r1, [pc, #120] ; (137c ) 1304: 6299 str r1, [r3, #40] ; 0x28 1306: 629a str r2, [r3, #40] ; 0x28 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN; 1308: f893 2047 ldrb.w r2, [r3, #71] ; 0x47 130c: f002 02fb and.w r2, r2, #251 ; 0xfb 1310: f883 2047 strb.w r2, [r3, #71] ; 0x47 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 1314: f893 2047 ldrb.w r2, [r3, #71] ; 0x47 tmp &= ~PORT_PINCFG_PMUXEN; 1318: f002 02fe and.w r2, r2, #254 ; 0xfe ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 131c: f883 2047 strb.w r2, [r3, #71] ; 0x47 ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 1320: f44f 7280 mov.w r2, #256 ; 0x100 1324: f8c3 2184 str.w r2, [r3, #388] ; 0x184 ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; 1328: f501 3100 add.w r1, r1, #131072 ; 0x20000 132c: 3180 adds r1, #128 ; 0x80 132e: f8c3 11a8 str.w r1, [r3, #424] ; 0x1a8 1332: 4913 ldr r1, [pc, #76] ; (1380 ) 1334: f8c3 11a8 str.w r1, [r3, #424] ; 0x1a8 ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 1338: f8c3 2184 str.w r2, [r3, #388] ; 0x184 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg |= PORT_PINCFG_PULLEN; 133c: f893 11c8 ldrb.w r1, [r3, #456] ; 0x1c8 1340: f041 0104 orr.w r1, r1, #4 1344: f883 11c8 strb.w r1, [r3, #456] ; 0x1c8 ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 1348: f8c3 2194 str.w r2, [r3, #404] ; 0x194 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 134c: f893 21c8 ldrb.w r2, [r3, #456] ; 0x1c8 tmp &= ~PORT_PINCFG_PMUXEN; 1350: f002 02fe and.w r2, r2, #254 ; 0xfe ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 1354: f883 21c8 strb.w r2, [r3, #456] ; 0x1c8 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 1358: 619e str r6, [r3, #24] 135a: 619d str r5, [r3, #24] 135c: 619c str r4, [r3, #24] 135e: 6198 str r0, [r3, #24] } 1360: b002 add sp, #8 1362: bd70 pop {r4, r5, r6, pc} 1364: 1c03c3f7 .word 0x1c03c3f7 1368: 000010a5 .word 0x000010a5 136c: 41008000 .word 0x41008000 1370: 40000040 .word 0x40000040 1374: 40000010 .word 0x40000010 1378: 40000008 .word 0x40000008 137c: 40000080 .word 0x40000080 1380: c0020000 .word 0xc0020000 00001384 : #include "p_i2c.h" struct i2c_m_sync_desc p_i2c_master; void p_i2c_init(void) { 1384: 4770 bx lr ... 00001388 : static volatile uint64_t sys_time = 0; /** * Example of using TIMER_0. */ static void TIMER_0_task1_cb(const struct timer_task *const timer_task) { 1388: b508 push {r3, lr} sys_time++; 138a: 4906 ldr r1, [pc, #24] ; (13a4 ) 138c: e9d1 2300 ldrd r2, r3, [r1] 1390: 3201 adds r2, #1 1392: f143 0300 adc.w r3, r3, #0 1396: e9c1 2300 strd r2, r3, [r1] lv_tick_inc(1); 139a: 2001 movs r0, #1 139c: 4b02 ldr r3, [pc, #8] ; (13a8 ) 139e: 4798 blx r3 13a0: bd08 pop {r3, pc} 13a2: bf00 nop 13a4: 20000098 .word 0x20000098 13a8: 00011045 .word 0x00011045 000013ac : //timer_add_task(&p_tcc_inst, &TIMER_0_task2); timer_start(&p_tcc_inst); } void p_tcc_init(void) { 13ac: b510 push {r4, lr} delay_init(SysTick); 13ae: 4811 ldr r0, [pc, #68] ; (13f4 ) 13b0: 4b11 ldr r3, [pc, #68] ; (13f8 ) 13b2: 4798 blx r3 } static inline void hri_mclk_set_APBAMASK_TC0_bit(const void *const hw) { MCLK_CRITICAL_SECTION_ENTER(); ((Mclk *)hw)->APBAMASK.reg |= MCLK_APBAMASK_TC0; 13b4: 4a11 ldr r2, [pc, #68] ; (13fc ) 13b6: 6953 ldr r3, [r2, #20] 13b8: f443 4380 orr.w r3, r3, #16384 ; 0x4000 13bc: 6153 str r3, [r2, #20] } static inline void hri_gclk_write_PCHCTRL_reg(const void *const hw, uint8_t index, hri_gclk_pchctrl_reg_t data) { GCLK_CRITICAL_SECTION_ENTER(); ((Gclk *)hw)->PCHCTRL[index].reg = data; 13be: 2240 movs r2, #64 ; 0x40 13c0: 4b0f ldr r3, [pc, #60] ; (1400 ) 13c2: f8c3 20a4 str.w r2, [r3, #164] ; 0xa4 hri_mclk_set_APBAMASK_TC0_bit(MCLK); hri_gclk_write_PCHCTRL_reg(GCLK, TC0_GCLK_ID, CONF_GCLK_TC0_SRC | (1 << GCLK_PCHCTRL_CHEN_Pos)); timer_init(&p_tcc_inst, TC0, _tc_get_timer()); 13c6: 4b0f ldr r3, [pc, #60] ; (1404 ) 13c8: 4798 blx r3 13ca: 4c0f ldr r4, [pc, #60] ; (1408 ) 13cc: 4602 mov r2, r0 13ce: 490f ldr r1, [pc, #60] ; (140c ) 13d0: 4620 mov r0, r4 13d2: 4b0f ldr r3, [pc, #60] ; (1410 ) 13d4: 4798 blx r3 TIMER_0_task1.interval = 1; 13d6: 490f ldr r1, [pc, #60] ; (1414 ) 13d8: 2301 movs r3, #1 13da: 610b str r3, [r1, #16] TIMER_0_task1.cb = TIMER_0_task1_cb; 13dc: 4a0e ldr r2, [pc, #56] ; (1418 ) 13de: 614a str r2, [r1, #20] TIMER_0_task1.mode = TIMER_TASK_REPEAT; 13e0: 760b strb r3, [r1, #24] //TIMER_0_task2.interval = 200; //TIMER_0_task2.cb = TIMER_0_task2_cb; //TIMER_0_task2.mode = TIMER_TASK_REPEAT; timer_add_task(&p_tcc_inst, &TIMER_0_task1); 13e2: 3108 adds r1, #8 13e4: 4620 mov r0, r4 13e6: 4b0d ldr r3, [pc, #52] ; (141c ) 13e8: 4798 blx r3 //timer_add_task(&p_tcc_inst, &TIMER_0_task2); timer_start(&p_tcc_inst); 13ea: 4620 mov r0, r4 13ec: 4b0c ldr r3, [pc, #48] ; (1420 ) 13ee: 4798 blx r3 13f0: bd10 pop {r4, pc} 13f2: bf00 nop 13f4: e000e010 .word 0xe000e010 13f8: 000014ed .word 0x000014ed 13fc: 40000800 .word 0x40000800 1400: 40001c00 .word 0x40001c00 1404: 0000214b .word 0x0000214b 1408: 20006c04 .word 0x20006c04 140c: 40003800 .word 0x40003800 1410: 00001649 .word 0x00001649 1414: 20000098 .word 0x20000098 1418: 00001389 .word 0x00001389 141c: 000016c1 .word 0x000016c1 1420: 00001685 .word 0x00001685 00001424 : static uint8_t example_USART_0[12] = "Hello World!"; static uint8_t debug_buffer[DEBUG_MAX_BUFFER_SIZE]; static uint8_t debug_rx_buff[DEBUG_USART_EX_BUFF_SIZE]; void p_usart_init(void) { 1424: b530 push {r4, r5, lr} 1426: b083 sub sp, #12 1428: 4b1f ldr r3, [pc, #124] ; (14a8 ) 142a: 2240 movs r2, #64 ; 0x40 142c: f8c3 20dc str.w r2, [r3, #220] ; 0xdc 1430: 2243 movs r2, #67 ; 0x43 1432: f8c3 208c str.w r2, [r3, #140] ; 0x8c } static inline void hri_mclk_set_APBBMASK_SERCOM2_bit(const void *const hw) { MCLK_CRITICAL_SECTION_ENTER(); ((Mclk *)hw)->APBBMASK.reg |= MCLK_APBBMASK_SERCOM2; 1436: 4a1d ldr r2, [pc, #116] ; (14ac ) 1438: 6993 ldr r3, [r2, #24] 143a: f443 7300 orr.w r3, r3, #512 ; 0x200 143e: 6193 str r3, [r2, #24] hri_gclk_write_PCHCTRL_reg(GCLK, SERCOM2_GCLK_ID_CORE, CONF_GCLK_SERCOM2_CORE_SRC | (1 << GCLK_PCHCTRL_CHEN_Pos)); hri_gclk_write_PCHCTRL_reg(GCLK, SERCOM2_GCLK_ID_SLOW, CONF_GCLK_SERCOM2_SLOW_SRC | (1 << GCLK_PCHCTRL_CHEN_Pos)); hri_mclk_set_APBBMASK_SERCOM2_bit(MCLK); usart_async_init(&p_usart_debug_inst, USART_DEBUG_SERCOM, debug_rx_buff, DEBUG_USART_EX_BUFF_SIZE, (void*)NULL); 1440: 4c1b ldr r4, [pc, #108] ; (14b0 ) 1442: 2300 movs r3, #0 1444: 9300 str r3, [sp, #0] 1446: 2310 movs r3, #16 1448: 4a1a ldr r2, [pc, #104] ; (14b4 ) 144a: 491b ldr r1, [pc, #108] ; (14b8 ) 144c: 4620 mov r0, r4 144e: 4d1b ldr r5, [pc, #108] ; (14bc ) 1450: 47a8 blx r5 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 1452: 4b1b ldr r3, [pc, #108] ; (14c0 ) 1454: f893 20d8 ldrb.w r2, [r3, #216] ; 0xd8 tmp &= ~PORT_PINCFG_PMUXEN; 1458: f002 02fe and.w r2, r2, #254 ; 0xfe tmp |= value << PORT_PINCFG_PMUXEN_Pos; 145c: f042 0201 orr.w r2, r2, #1 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 1460: f883 20d8 strb.w r2, [r3, #216] ; 0xd8 tmp = ((Port *)hw)->Group[submodule_index].PMUX[index].reg; 1464: f893 20bc ldrb.w r2, [r3, #188] ; 0xbc tmp &= ~PORT_PMUX_PMUXE_Msk; 1468: f002 02f0 and.w r2, r2, #240 ; 0xf0 tmp |= PORT_PMUX_PMUXE(data); 146c: f042 0203 orr.w r2, r2, #3 ((Port *)hw)->Group[submodule_index].PMUX[index].reg = tmp; 1470: f883 20bc strb.w r2, [r3, #188] ; 0xbc tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 1474: f893 20d9 ldrb.w r2, [r3, #217] ; 0xd9 tmp &= ~PORT_PINCFG_PMUXEN; 1478: f002 02fe and.w r2, r2, #254 ; 0xfe tmp |= value << PORT_PINCFG_PMUXEN_Pos; 147c: f042 0201 orr.w r2, r2, #1 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 1480: f883 20d9 strb.w r2, [r3, #217] ; 0xd9 tmp = ((Port *)hw)->Group[submodule_index].PMUX[index].reg; 1484: f893 20bc ldrb.w r2, [r3, #188] ; 0xbc tmp &= ~PORT_PMUX_PMUXO_Msk; 1488: f002 020f and.w r2, r2, #15 tmp |= PORT_PMUX_PMUXO(data); 148c: f042 0230 orr.w r2, r2, #48 ; 0x30 ((Port *)hw)->Group[submodule_index].PMUX[index].reg = tmp; 1490: f883 20bc strb.w r2, [r3, #188] ; 0xbc // port init gpio_set_pin_function(USART_DEBUG_RX, USART_DEBUG_RX_MUX); gpio_set_pin_function(USART_DEBUG_TX, USART_DEBUG_TX_MUX); usart_async_enable(&p_usart_debug_inst); 1494: 4620 mov r0, r4 1496: 4b0b ldr r3, [pc, #44] ; (14c4 ) 1498: 4798 blx r3 io_write(&p_usart_debug_inst.io, example_USART_0, 12); 149a: 220c movs r2, #12 149c: 490a ldr r1, [pc, #40] ; (14c8 ) 149e: 4620 mov r0, r4 14a0: 4b0a ldr r3, [pc, #40] ; (14cc ) 14a2: 4798 blx r3 } 14a4: b003 add sp, #12 14a6: bd30 pop {r4, r5, pc} 14a8: 40001c00 .word 0x40001c00 14ac: 40000800 .word 0x40000800 14b0: 20006c20 .word 0x20006c20 14b4: 200000b4 .word 0x200000b4 14b8: 41012000 .word 0x41012000 14bc: 00001919 .word 0x00001919 14c0: 41008000 .word 0x41008000 14c4: 000019a9 .word 0x000019a9 14c8: 20000004 .word 0x20000004 14cc: 00001541 .word 0x00001541 000014d0 : __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); 14d0: f3ef 8310 mrs r3, PRIMASK /** * \brief Disable interrupts, enter critical section */ void atomic_enter_critical(hal_atomic_t volatile *atomic) { *atomic = __get_PRIMASK(); 14d4: 6003 str r3, [r0, #0] __ASM volatile ("cpsid i" : : : "memory"); 14d6: b672 cpsid i \details Ensures the apparent order of the explicit memory operations before and after the instruction, without ensuring their completion. */ __STATIC_FORCEINLINE void __DMB(void) { __ASM volatile ("dmb 0xF":::"memory"); 14d8: f3bf 8f5f dmb sy 14dc: 4770 bx lr 000014de : 14de: f3bf 8f5f dmb sy * \brief Exit atomic section */ void atomic_leave_critical(hal_atomic_t volatile *atomic) { __DMB(); __set_PRIMASK(*atomic); 14e2: 6803 ldr r3, [r0, #0] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); 14e4: f383 8810 msr PRIMASK, r3 14e8: 4770 bx lr ... 000014ec : /** * \brief Initialize Delay driver */ void delay_init(void *const hw) { 14ec: b508 push {r3, lr} _delay_init(hardware = hw); 14ee: 4b02 ldr r3, [pc, #8] ; (14f8 ) 14f0: 6018 str r0, [r3, #0] 14f2: 4b02 ldr r3, [pc, #8] ; (14fc ) 14f4: 4798 blx r3 14f6: bd08 pop {r3, pc} 14f8: 200000c4 .word 0x200000c4 14fc: 00001b89 .word 0x00001b89 00001500 : /** * \brief Perform delay in us */ void delay_us(const uint16_t us) { 1500: b510 push {r4, lr} _delay_cycles(hardware, _get_cycles_for_us(us)); 1502: 4b04 ldr r3, [pc, #16] ; (1514 ) 1504: 681c ldr r4, [r3, #0] 1506: 4b04 ldr r3, [pc, #16] ; (1518 ) 1508: 4798 blx r3 150a: 4601 mov r1, r0 150c: 4620 mov r0, r4 150e: 4b03 ldr r3, [pc, #12] ; (151c ) 1510: 4798 blx r3 1512: bd10 pop {r4, pc} 1514: 200000c4 .word 0x200000c4 1518: 00001b51 .word 0x00001b51 151c: 00001b91 .word 0x00001b91 00001520 : /** * \brief Perform delay in ms */ void delay_ms(const uint16_t ms) { 1520: b510 push {r4, lr} _delay_cycles(hardware, _get_cycles_for_ms(ms)); 1522: 4b04 ldr r3, [pc, #16] ; (1534 ) 1524: 681c ldr r4, [r3, #0] 1526: 4b04 ldr r3, [pc, #16] ; (1538 ) 1528: 4798 blx r3 152a: 4601 mov r1, r0 152c: 4620 mov r0, r4 152e: 4b03 ldr r3, [pc, #12] ; (153c ) 1530: 4798 blx r3 1532: bd10 pop {r4, pc} 1534: 200000c4 .word 0x200000c4 1538: 00001b69 .word 0x00001b69 153c: 00001b91 .word 0x00001b91 00001540 : /** * \brief I/O write interface */ int32_t io_write(struct io_descriptor *const io_descr, const uint8_t *const buf, const uint16_t length) { 1540: b570 push {r4, r5, r6, lr} 1542: 460d mov r5, r1 1544: 4616 mov r6, r2 ASSERT(io_descr && buf); 1546: 4604 mov r4, r0 1548: b160 cbz r0, 1564 154a: 1c08 adds r0, r1, #0 154c: bf18 it ne 154e: 2001 movne r0, #1 1550: 2234 movs r2, #52 ; 0x34 1552: 4905 ldr r1, [pc, #20] ; (1568 ) 1554: 4b05 ldr r3, [pc, #20] ; (156c ) 1556: 4798 blx r3 return io_descr->write(io_descr, buf, length); 1558: 6823 ldr r3, [r4, #0] 155a: 4632 mov r2, r6 155c: 4629 mov r1, r5 155e: 4620 mov r0, r4 1560: 4798 blx r3 } 1562: bd70 pop {r4, r5, r6, pc} 1564: 2000 movs r0, #0 1566: e7f3 b.n 1550 1568: 0001b54c .word 0x0001b54c 156c: 000019d5 .word 0x000019d5 00001570 : * \param[in] head The pointer to the head of timer task list * \param[in] task The pointer to task to add * \param[in] time Current timer time */ static void timer_add_timer_task(struct list_descriptor *list, struct timer_task *const new_task, const uint32_t time) { 1570: b5f8 push {r3, r4, r5, r6, r7, lr} 1572: 4684 mov ip, r0 * \return A pointer to the head of the given list or NULL if the list is * empty */ static inline void *list_get_head(const struct list_descriptor *const list) { return (void *)list->head; 1574: 6807 ldr r7, [r0, #0] struct timer_task *it, *prev = NULL, *head = (struct timer_task *)list_get_head(list); if (!head) { 1576: b12f cbz r7, 1584 if (it->time_label <= time) { time_left = it->interval - (time - it->time_label); } else { time_left = it->interval - (0xFFFFFFFF - it->time_label) - time; } if (time_left >= new_task->interval) 1578: 688d ldr r5, [r1, #8] 157a: 463c mov r4, r7 157c: 2600 movs r6, #0 time_left = it->interval - (0xFFFFFFFF - it->time_label) - time; 157e: f1c2 0e01 rsb lr, r2, #1 1582: e00b b.n 159c list_insert_as_head(list, new_task); 1584: 4b0e ldr r3, [pc, #56] ; (15c0 ) 1586: 4798 blx r3 return; 1588: bdf8 pop {r3, r4, r5, r6, r7, pc} time_left = it->interval - (0xFFFFFFFF - it->time_label) - time; 158a: 4473 add r3, lr 158c: 68a0 ldr r0, [r4, #8] 158e: 4403 add r3, r0 if (time_left >= new_task->interval) 1590: 42ab cmp r3, r5 1592: d20a bcs.n 15aa * \return A pointer to the next list element or NULL if there is not next * element */ static inline void *list_get_next_element(const void *const element) { return element ? ((struct list_element *)element)->next : NULL; 1594: 6823 ldr r3, [r4, #0] 1596: 4626 mov r6, r4 for (it = head; it; it = (struct timer_task *)list_get_next_element(it)) { 1598: b153 cbz r3, 15b0 159a: 461c mov r4, r3 if (it->time_label <= time) { 159c: 6863 ldr r3, [r4, #4] 159e: 4293 cmp r3, r2 15a0: d8f3 bhi.n 158a time_left = it->interval - (time - it->time_label); 15a2: 68a0 ldr r0, [r4, #8] 15a4: 4403 add r3, r0 15a6: 1a9b subs r3, r3, r2 15a8: e7f2 b.n 1590 break; prev = it; } if (it == head) { 15aa: 42a7 cmp r7, r4 15ac: d004 beq.n 15b8 15ae: 4634 mov r4, r6 list_insert_as_head(list, new_task); } else { list_insert_after(prev, new_task); 15b0: 4620 mov r0, r4 15b2: 4b04 ldr r3, [pc, #16] ; (15c4 ) 15b4: 4798 blx r3 15b6: bdf8 pop {r3, r4, r5, r6, r7, pc} list_insert_as_head(list, new_task); 15b8: 4660 mov r0, ip 15ba: 4b01 ldr r3, [pc, #4] ; (15c0 ) 15bc: 4798 blx r3 15be: bdf8 pop {r3, r4, r5, r6, r7, pc} 15c0: 000019fd .word 0x000019fd 15c4: 00001a29 .word 0x00001a29 000015c8 : /** * \internal Process interrupts */ static void timer_process_counted(struct _timer_device *device) { 15c8: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} return (void *)list->head; 15cc: 6944 ldr r4, [r0, #20] struct timer_descriptor *timer = CONTAINER_OF(device, struct timer_descriptor, device); struct timer_task * it = (struct timer_task *)list_get_head(&timer->tasks); uint32_t time = ++timer->time; 15ce: 6907 ldr r7, [r0, #16] 15d0: 3701 adds r7, #1 15d2: 6107 str r7, [r0, #16] if ((timer->flags & TIMER_FLAG_QUEUE_IS_TAKEN) || (timer->flags & TIMER_FLAG_INTERRUPT_TRIGERRED)) { 15d4: 7e03 ldrb r3, [r0, #24] 15d6: f013 0f01 tst.w r3, #1 15da: d113 bne.n 1604 15dc: 7e03 ldrb r3, [r0, #24] 15de: f013 0f02 tst.w r3, #2 15e2: d10f bne.n 1604 timer->flags |= TIMER_FLAG_INTERRUPT_TRIGERRED; return; } while (it && ((time - it->time_label) >= it->interval)) { 15e4: b354 cbz r4, 163c 15e6: 6863 ldr r3, [r4, #4] 15e8: 1afb subs r3, r7, r3 15ea: 68a2 ldr r2, [r4, #8] 15ec: 4293 cmp r3, r2 15ee: d307 bcc.n 1600 15f0: 4606 mov r6, r0 struct timer_task *tmp = it; list_remove_head(&timer->tasks); 15f2: f100 0814 add.w r8, r0, #20 15f6: f8df 9048 ldr.w r9, [pc, #72] ; 1640 if (TIMER_TASK_REPEAT == tmp->mode) { tmp->time_label = time; timer_add_timer_task(&timer->tasks, tmp, time); 15fa: f8df a048 ldr.w sl, [pc, #72] ; 1644 15fe: e012 b.n 1626 1600: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} timer->flags |= TIMER_FLAG_INTERRUPT_TRIGERRED; 1604: 7e03 ldrb r3, [r0, #24] 1606: f043 0302 orr.w r3, r3, #2 160a: 7603 strb r3, [r0, #24] return; 160c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 1610: 6975 ldr r5, [r6, #20] } it = (struct timer_task *)list_get_head(&timer->tasks); tmp->cb(tmp); 1612: 68e3 ldr r3, [r4, #12] 1614: 4620 mov r0, r4 1616: 4798 blx r3 while (it && ((time - it->time_label) >= it->interval)) { 1618: b185 cbz r5, 163c it = (struct timer_task *)list_get_head(&timer->tasks); 161a: 462c mov r4, r5 while (it && ((time - it->time_label) >= it->interval)) { 161c: 686b ldr r3, [r5, #4] 161e: 1afb subs r3, r7, r3 1620: 68aa ldr r2, [r5, #8] 1622: 4293 cmp r3, r2 1624: d30a bcc.n 163c list_remove_head(&timer->tasks); 1626: 4640 mov r0, r8 1628: 47c8 blx r9 if (TIMER_TASK_REPEAT == tmp->mode) { 162a: 7c23 ldrb r3, [r4, #16] 162c: 2b01 cmp r3, #1 162e: d1ef bne.n 1610 tmp->time_label = time; 1630: 6067 str r7, [r4, #4] timer_add_timer_task(&timer->tasks, tmp, time); 1632: 463a mov r2, r7 1634: 4621 mov r1, r4 1636: 4640 mov r0, r8 1638: 47d0 blx sl 163a: e7e9 b.n 1610 163c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 1640: 00001a31 .word 0x00001a31 1644: 00001571 .word 0x00001571 00001648 : { 1648: b538 push {r3, r4, r5, lr} 164a: 460d mov r5, r1 ASSERT(descr && hw); 164c: 4604 mov r4, r0 164e: b178 cbz r0, 1670 1650: 1c08 adds r0, r1, #0 1652: bf18 it ne 1654: 2001 movne r0, #1 1656: 223b movs r2, #59 ; 0x3b 1658: 4906 ldr r1, [pc, #24] ; (1674 ) 165a: 4b07 ldr r3, [pc, #28] ; (1678 ) 165c: 4798 blx r3 _timer_init(&descr->device, hw); 165e: 4629 mov r1, r5 1660: 4620 mov r0, r4 1662: 4b06 ldr r3, [pc, #24] ; (167c ) 1664: 4798 blx r3 descr->time = 0; 1666: 2000 movs r0, #0 1668: 6120 str r0, [r4, #16] descr->device.timer_cb.period_expired = timer_process_counted; 166a: 4b05 ldr r3, [pc, #20] ; (1680 ) 166c: 6023 str r3, [r4, #0] } 166e: bd38 pop {r3, r4, r5, pc} 1670: 2000 movs r0, #0 1672: e7f0 b.n 1656 1674: 0001b560 .word 0x0001b560 1678: 000019d5 .word 0x000019d5 167c: 00001f7d .word 0x00001f7d 1680: 000015c9 .word 0x000015c9 00001684 : { 1684: b510 push {r4, lr} ASSERT(descr); 1686: 4604 mov r4, r0 1688: 2253 movs r2, #83 ; 0x53 168a: 4909 ldr r1, [pc, #36] ; (16b0 ) 168c: 3000 adds r0, #0 168e: bf18 it ne 1690: 2001 movne r0, #1 1692: 4b08 ldr r3, [pc, #32] ; (16b4 ) 1694: 4798 blx r3 if (_timer_is_started(&descr->device)) { 1696: 4620 mov r0, r4 1698: 4b07 ldr r3, [pc, #28] ; (16b8 ) 169a: 4798 blx r3 169c: b920 cbnz r0, 16a8 _timer_start(&descr->device); 169e: 4620 mov r0, r4 16a0: 4b06 ldr r3, [pc, #24] ; (16bc ) 16a2: 4798 blx r3 return ERR_NONE; 16a4: 2000 movs r0, #0 16a6: bd10 pop {r4, pc} return ERR_DENIED; 16a8: f06f 0010 mvn.w r0, #16 } 16ac: bd10 pop {r4, pc} 16ae: bf00 nop 16b0: 0001b560 .word 0x0001b560 16b4: 000019d5 .word 0x000019d5 16b8: 00002139 .word 0x00002139 16bc: 00002125 .word 0x00002125 000016c0 : { 16c0: b570 push {r4, r5, r6, lr} 16c2: b082 sub sp, #8 16c4: 460d mov r5, r1 ASSERT(descr && task); 16c6: 4604 mov r4, r0 16c8: b318 cbz r0, 1712 16ca: 1c08 adds r0, r1, #0 16cc: bf18 it ne 16ce: 2001 movne r0, #1 16d0: 227a movs r2, #122 ; 0x7a 16d2: 491e ldr r1, [pc, #120] ; (174c ) 16d4: 4b1e ldr r3, [pc, #120] ; (1750 ) 16d6: 4798 blx r3 descr->flags |= TIMER_FLAG_QUEUE_IS_TAKEN; 16d8: 7e23 ldrb r3, [r4, #24] 16da: f043 0301 orr.w r3, r3, #1 16de: 7623 strb r3, [r4, #24] if (is_list_element(&descr->tasks, task)) { 16e0: f104 0614 add.w r6, r4, #20 16e4: 4629 mov r1, r5 16e6: 4630 mov r0, r6 16e8: 4b1a ldr r3, [pc, #104] ; (1754 ) 16ea: 4798 blx r3 16ec: b998 cbnz r0, 1716 task->time_label = descr->time; 16ee: 6923 ldr r3, [r4, #16] 16f0: 606b str r3, [r5, #4] timer_add_timer_task(&descr->tasks, task, descr->time); 16f2: 6922 ldr r2, [r4, #16] 16f4: 4629 mov r1, r5 16f6: 4630 mov r0, r6 16f8: 4b17 ldr r3, [pc, #92] ; (1758 ) 16fa: 4798 blx r3 descr->flags &= ~TIMER_FLAG_QUEUE_IS_TAKEN; 16fc: 7e23 ldrb r3, [r4, #24] 16fe: f003 03fe and.w r3, r3, #254 ; 0xfe 1702: 7623 strb r3, [r4, #24] if (descr->flags & TIMER_FLAG_INTERRUPT_TRIGERRED) { 1704: 7e23 ldrb r3, [r4, #24] 1706: f013 0f02 tst.w r3, #2 170a: d110 bne.n 172e return ERR_NONE; 170c: 2000 movs r0, #0 } 170e: b002 add sp, #8 1710: bd70 pop {r4, r5, r6, pc} 1712: 2000 movs r0, #0 1714: e7dc b.n 16d0 descr->flags &= ~TIMER_FLAG_QUEUE_IS_TAKEN; 1716: 7e23 ldrb r3, [r4, #24] 1718: f003 03fe and.w r3, r3, #254 ; 0xfe 171c: 7623 strb r3, [r4, #24] ASSERT(false); 171e: 227f movs r2, #127 ; 0x7f 1720: 490a ldr r1, [pc, #40] ; (174c ) 1722: 2000 movs r0, #0 1724: 4b0a ldr r3, [pc, #40] ; (1750 ) 1726: 4798 blx r3 return ERR_ALREADY_INITIALIZED; 1728: f06f 0011 mvn.w r0, #17 172c: e7ef b.n 170e CRITICAL_SECTION_ENTER() 172e: a801 add r0, sp, #4 1730: 4b0a ldr r3, [pc, #40] ; (175c ) 1732: 4798 blx r3 descr->flags &= ~TIMER_FLAG_INTERRUPT_TRIGERRED; 1734: 7e23 ldrb r3, [r4, #24] 1736: f003 03fd and.w r3, r3, #253 ; 0xfd 173a: 7623 strb r3, [r4, #24] _timer_set_irq(&descr->device); 173c: 4620 mov r0, r4 173e: 4b08 ldr r3, [pc, #32] ; (1760 ) 1740: 4798 blx r3 CRITICAL_SECTION_LEAVE() 1742: a801 add r0, sp, #4 1744: 4b07 ldr r3, [pc, #28] ; (1764 ) 1746: 4798 blx r3 return ERR_NONE; 1748: 2000 movs r0, #0 174a: e7e0 b.n 170e 174c: 0001b560 .word 0x0001b560 1750: 000019d5 .word 0x000019d5 1754: 000019db .word 0x000019db 1758: 00001571 .word 0x00001571 175c: 000014d1 .word 0x000014d1 1760: 00002151 .word 0x00002151 1764: 000014df .word 0x000014df 00001768 : * \brief Process completion of data sending * * \param[in] device The pointer to device structure */ static void usart_transmission_complete(struct _usart_async_device *device) { 1768: b508 push {r3, lr} struct usart_async_descriptor *descr = CONTAINER_OF(device, struct usart_async_descriptor, device); descr->stat = 0; 176a: 2300 movs r3, #0 176c: 6283 str r3, [r0, #40] ; 0x28 if (descr->usart_cb.tx_done) { 176e: 69c3 ldr r3, [r0, #28] 1770: b11b cbz r3, 177a 1772: f1a0 0208 sub.w r2, r0, #8 descr->usart_cb.tx_done(descr); 1776: 4610 mov r0, r2 1778: 4798 blx r3 177a: bd08 pop {r3, pc} 0000177c : * \brief Process error interrupt * * \param[in] device The pointer to device structure */ static void usart_error(struct _usart_async_device *device) { 177c: b508 push {r3, lr} struct usart_async_descriptor *descr = CONTAINER_OF(device, struct usart_async_descriptor, device); descr->stat = 0; 177e: 2300 movs r3, #0 1780: 6283 str r3, [r0, #40] ; 0x28 if (descr->usart_cb.error) { 1782: 6a43 ldr r3, [r0, #36] ; 0x24 1784: b11b cbz r3, 178e 1786: f1a0 0208 sub.w r2, r0, #8 descr->usart_cb.error(descr); 178a: 4610 mov r0, r2 178c: 4798 blx r3 178e: bd08 pop {r3, pc} 00001790 : { 1790: b538 push {r3, r4, r5, lr} 1792: 4604 mov r4, r0 struct usart_async_descriptor *descr = CONTAINER_OF(device, struct usart_async_descriptor, device); 1794: f1a0 0508 sub.w r5, r0, #8 ringbuffer_put(&descr->rx, data); 1798: 302c adds r0, #44 ; 0x2c 179a: 4b03 ldr r3, [pc, #12] ; (17a8 ) 179c: 4798 blx r3 if (descr->usart_cb.rx_done) { 179e: 6a23 ldr r3, [r4, #32] 17a0: b10b cbz r3, 17a6 descr->usart_cb.rx_done(descr); 17a2: 4628 mov r0, r5 17a4: 4798 blx r3 17a6: bd38 pop {r3, r4, r5, pc} 17a8: 00001ad1 .word 0x00001ad1 000017ac : { 17ac: b570 push {r4, r5, r6, lr} 17ae: 460e mov r6, r1 17b0: 4615 mov r5, r2 ASSERT(descr && buf && length); 17b2: 4604 mov r4, r0 17b4: b1e0 cbz r0, 17f0 17b6: b1e9 cbz r1, 17f4 17b8: 1c10 adds r0, r2, #0 17ba: bf18 it ne 17bc: 2001 movne r0, #1 17be: f240 123b movw r2, #315 ; 0x13b 17c2: 490f ldr r1, [pc, #60] ; (1800 ) 17c4: 4b0f ldr r3, [pc, #60] ; (1804 ) 17c6: 4798 blx r3 if (descr->tx_por != descr->tx_buffer_length) { 17c8: f8b4 2044 ldrh.w r2, [r4, #68] ; 0x44 17cc: f8b4 304c ldrh.w r3, [r4, #76] ; 0x4c 17d0: 429a cmp r2, r3 17d2: d111 bne.n 17f8 descr->tx_buffer = (uint8_t *)buf; 17d4: 64a6 str r6, [r4, #72] ; 0x48 descr->tx_buffer_length = length; 17d6: f8a4 504c strh.w r5, [r4, #76] ; 0x4c descr->tx_por = 0; 17da: 2300 movs r3, #0 17dc: f8a4 3044 strh.w r3, [r4, #68] ; 0x44 descr->stat = USART_ASYNC_STATUS_BUSY; 17e0: 2301 movs r3, #1 17e2: 6323 str r3, [r4, #48] ; 0x30 _usart_async_enable_byte_sent_irq(&descr->device); 17e4: f104 0008 add.w r0, r4, #8 17e8: 4b07 ldr r3, [pc, #28] ; (1808 ) 17ea: 4798 blx r3 return (int32_t)length; 17ec: 4628 mov r0, r5 17ee: bd70 pop {r4, r5, r6, pc} ASSERT(descr && buf && length); 17f0: 2000 movs r0, #0 17f2: e7e4 b.n 17be 17f4: 2000 movs r0, #0 17f6: e7e2 b.n 17be return ERR_NO_RESOURCE; 17f8: f06f 001b mvn.w r0, #27 } 17fc: bd70 pop {r4, r5, r6, pc} 17fe: bf00 nop 1800: 0001b578 .word 0x0001b578 1804: 000019d5 .word 0x000019d5 1808: 00001ebb .word 0x00001ebb 0000180c : { 180c: b510 push {r4, lr} 180e: 4604 mov r4, r0 if (descr->tx_por != descr->tx_buffer_length) { 1810: 8f83 ldrh r3, [r0, #60] ; 0x3c 1812: f8b0 2044 ldrh.w r2, [r0, #68] ; 0x44 1816: 429a cmp r2, r3 1818: d009 beq.n 182e _usart_async_write_byte(&descr->device, descr->tx_buffer[descr->tx_por++]); 181a: 6c02 ldr r2, [r0, #64] ; 0x40 181c: 1c59 adds r1, r3, #1 181e: 8781 strh r1, [r0, #60] ; 0x3c 1820: 5cd1 ldrb r1, [r2, r3] 1822: 4b04 ldr r3, [pc, #16] ; (1834 ) 1824: 4798 blx r3 _usart_async_enable_byte_sent_irq(&descr->device); 1826: 4620 mov r0, r4 1828: 4b03 ldr r3, [pc, #12] ; (1838 ) 182a: 4798 blx r3 182c: bd10 pop {r4, pc} _usart_async_enable_tx_done_irq(&descr->device); 182e: 4b03 ldr r3, [pc, #12] ; (183c ) 1830: 4798 blx r3 1832: bd10 pop {r4, pc} 1834: 00001eb5 .word 0x00001eb5 1838: 00001ebb .word 0x00001ebb 183c: 00001ec3 .word 0x00001ec3 00001840 : { 1840: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 1844: b082 sub sp, #8 1846: 460f mov r7, r1 1848: 4690 mov r8, r2 ASSERT(descr && buf && length); 184a: 4606 mov r6, r0 184c: b1a0 cbz r0, 1878 184e: b199 cbz r1, 1878 1850: 2a00 cmp r2, #0 1852: d12d bne.n 18b0 1854: f44f 72ac mov.w r2, #344 ; 0x158 1858: 4929 ldr r1, [pc, #164] ; (1900 ) 185a: 2000 movs r0, #0 185c: 4b29 ldr r3, [pc, #164] ; (1904 ) 185e: 4798 blx r3 CRITICAL_SECTION_ENTER() 1860: a801 add r0, sp, #4 1862: 4b29 ldr r3, [pc, #164] ; (1908 ) 1864: 4798 blx r3 num = ringbuffer_num(&descr->rx); 1866: f106 0034 add.w r0, r6, #52 ; 0x34 186a: 4b28 ldr r3, [pc, #160] ; (190c ) 186c: 4798 blx r3 CRITICAL_SECTION_LEAVE() 186e: a801 add r0, sp, #4 1870: 4b27 ldr r3, [pc, #156] ; (1910 ) 1872: 4798 blx r3 uint16_t was_read = 0; 1874: 2500 movs r5, #0 return (int32_t)was_read; 1876: e03e b.n 18f6 ASSERT(descr && buf && length); 1878: f44f 72ac mov.w r2, #344 ; 0x158 187c: 4920 ldr r1, [pc, #128] ; (1900 ) 187e: 2000 movs r0, #0 1880: 4b20 ldr r3, [pc, #128] ; (1904 ) 1882: 4798 blx r3 CRITICAL_SECTION_ENTER() 1884: a801 add r0, sp, #4 1886: 4b20 ldr r3, [pc, #128] ; (1908 ) 1888: 4798 blx r3 num = ringbuffer_num(&descr->rx); 188a: f106 0a34 add.w sl, r6, #52 ; 0x34 188e: 4650 mov r0, sl 1890: 4b1e ldr r3, [pc, #120] ; (190c ) 1892: 4798 blx r3 1894: 4681 mov r9, r0 CRITICAL_SECTION_LEAVE() 1896: a801 add r0, sp, #4 1898: 4b1d ldr r3, [pc, #116] ; (1910 ) 189a: 4798 blx r3 while ((was_read < num) && (was_read < length)) { 189c: f1b9 0f00 cmp.w r9, #0 18a0: d004 beq.n 18ac 18a2: f1b8 0f00 cmp.w r8, #0 18a6: d119 bne.n 18dc uint16_t was_read = 0; 18a8: 2500 movs r5, #0 18aa: e024 b.n 18f6 18ac: 2500 movs r5, #0 18ae: e022 b.n 18f6 ASSERT(descr && buf && length); 18b0: f44f 72ac mov.w r2, #344 ; 0x158 18b4: 4912 ldr r1, [pc, #72] ; (1900 ) 18b6: 2001 movs r0, #1 18b8: 4b12 ldr r3, [pc, #72] ; (1904 ) 18ba: 4798 blx r3 CRITICAL_SECTION_ENTER() 18bc: a801 add r0, sp, #4 18be: 4b12 ldr r3, [pc, #72] ; (1908 ) 18c0: 4798 blx r3 num = ringbuffer_num(&descr->rx); 18c2: f106 0a34 add.w sl, r6, #52 ; 0x34 18c6: 4650 mov r0, sl 18c8: 4b10 ldr r3, [pc, #64] ; (190c ) 18ca: 4798 blx r3 18cc: 4681 mov r9, r0 CRITICAL_SECTION_LEAVE() 18ce: a801 add r0, sp, #4 18d0: 4b0f ldr r3, [pc, #60] ; (1910 ) 18d2: 4798 blx r3 uint16_t was_read = 0; 18d4: 2500 movs r5, #0 while ((was_read < num) && (was_read < length)) { 18d6: f1b9 0f00 cmp.w r9, #0 18da: d00c beq.n 18f6 { 18dc: 2400 movs r4, #0 ringbuffer_get(&descr->rx, &buf[was_read++]); 18de: 4e0d ldr r6, [pc, #52] ; (1914 ) 18e0: 1c60 adds r0, r4, #1 18e2: b285 uxth r5, r0 18e4: 1939 adds r1, r7, r4 18e6: 4650 mov r0, sl 18e8: 47b0 blx r6 18ea: 3401 adds r4, #1 while ((was_read < num) && (was_read < length)) { 18ec: 454c cmp r4, r9 18ee: d202 bcs.n 18f6 18f0: b2a3 uxth r3, r4 18f2: 4598 cmp r8, r3 18f4: d8f4 bhi.n 18e0 } 18f6: 4628 mov r0, r5 18f8: b002 add sp, #8 18fa: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 18fe: bf00 nop 1900: 0001b578 .word 0x0001b578 1904: 000019d5 .word 0x000019d5 1908: 000014d1 .word 0x000014d1 190c: 00001b11 .word 0x00001b11 1910: 000014df .word 0x000014df 1914: 00001a8d .word 0x00001a8d 00001918 : { 1918: b5f8 push {r3, r4, r5, r6, r7, lr} 191a: 460d mov r5, r1 191c: 4616 mov r6, r2 191e: 461f mov r7, r3 ASSERT(descr && hw && rx_buffer && rx_buffer_length); 1920: 4604 mov r4, r0 1922: b320 cbz r0, 196e 1924: b329 cbz r1, 1972 1926: b332 cbz r2, 1976 1928: 1c18 adds r0, r3, #0 192a: bf18 it ne 192c: 2001 movne r0, #1 192e: 223a movs r2, #58 ; 0x3a 1930: 4913 ldr r1, [pc, #76] ; (1980 ) 1932: 4b14 ldr r3, [pc, #80] ; (1984 ) 1934: 4798 blx r3 if (ERR_NONE != ringbuffer_init(&descr->rx, rx_buffer, rx_buffer_length)) { 1936: 463a mov r2, r7 1938: 4631 mov r1, r6 193a: f104 0034 add.w r0, r4, #52 ; 0x34 193e: 4b12 ldr r3, [pc, #72] ; (1988 ) 1940: 4798 blx r3 1942: b9d0 cbnz r0, 197a init_status = _usart_async_init(&descr->device, hw); 1944: 4629 mov r1, r5 1946: f104 0008 add.w r0, r4, #8 194a: 4b10 ldr r3, [pc, #64] ; (198c ) 194c: 4798 blx r3 if (init_status) { 194e: 4603 mov r3, r0 1950: b958 cbnz r0, 196a descr->io.read = usart_async_read; 1952: 4a0f ldr r2, [pc, #60] ; (1990 ) 1954: 6062 str r2, [r4, #4] descr->io.write = usart_async_write; 1956: 4a0f ldr r2, [pc, #60] ; (1994 ) 1958: 6022 str r2, [r4, #0] descr->device.usart_cb.tx_byte_sent = usart_process_byte_sent; 195a: 4a0f ldr r2, [pc, #60] ; (1998 ) 195c: 60a2 str r2, [r4, #8] descr->device.usart_cb.rx_done_cb = usart_fill_rx_buffer; 195e: 4a0f ldr r2, [pc, #60] ; (199c ) 1960: 60e2 str r2, [r4, #12] descr->device.usart_cb.tx_done_cb = usart_transmission_complete; 1962: 4a0f ldr r2, [pc, #60] ; (19a0 ) 1964: 6122 str r2, [r4, #16] descr->device.usart_cb.error_cb = usart_error; 1966: 4a0f ldr r2, [pc, #60] ; (19a4 ) 1968: 6162 str r2, [r4, #20] } 196a: 4618 mov r0, r3 196c: bdf8 pop {r3, r4, r5, r6, r7, pc} ASSERT(descr && hw && rx_buffer && rx_buffer_length); 196e: 2000 movs r0, #0 1970: e7dd b.n 192e 1972: 2000 movs r0, #0 1974: e7db b.n 192e 1976: 2000 movs r0, #0 1978: e7d9 b.n 192e return ERR_INVALID_ARG; 197a: f06f 030c mvn.w r3, #12 197e: e7f4 b.n 196a 1980: 0001b578 .word 0x0001b578 1984: 000019d5 .word 0x000019d5 1988: 00001a3d .word 0x00001a3d 198c: 00001e1d .word 0x00001e1d 1990: 00001841 .word 0x00001841 1994: 000017ad .word 0x000017ad 1998: 0000180d .word 0x0000180d 199c: 00001791 .word 0x00001791 19a0: 00001769 .word 0x00001769 19a4: 0000177d .word 0x0000177d 000019a8 : { 19a8: b510 push {r4, lr} ASSERT(descr); 19aa: 4604 mov r4, r0 19ac: 2261 movs r2, #97 ; 0x61 19ae: 4906 ldr r1, [pc, #24] ; (19c8 ) 19b0: 3000 adds r0, #0 19b2: bf18 it ne 19b4: 2001 movne r0, #1 19b6: 4b05 ldr r3, [pc, #20] ; (19cc ) 19b8: 4798 blx r3 _usart_async_enable(&descr->device); 19ba: f104 0008 add.w r0, r4, #8 19be: 4b04 ldr r3, [pc, #16] ; (19d0 ) 19c0: 4798 blx r3 } 19c2: 2000 movs r0, #0 19c4: bd10 pop {r4, pc} 19c6: bf00 nop 19c8: 0001b578 .word 0x0001b578 19cc: 000019d5 .word 0x000019d5 19d0: 00001ea1 .word 0x00001ea1 000019d4 : /** * \brief Assert function */ void assert(const bool condition, const char *const file, const int line) { if (!(condition)) { 19d4: b900 cbnz r0, 19d8 __asm("BKPT #0"); 19d6: be00 bkpt 0x0000 19d8: 4770 bx lr 000019da : * \brief Check whether element belongs to list */ bool is_list_element(const struct list_descriptor *const list, const void *const element) { struct list_element *it; for (it = list->head; it; it = it->next) { 19da: 6803 ldr r3, [r0, #0] 19dc: b14b cbz r3, 19f2 if (it == element) { 19de: 428b cmp r3, r1 19e0: d009 beq.n 19f6 for (it = list->head; it; it = it->next) { 19e2: 681b ldr r3, [r3, #0] 19e4: b11b cbz r3, 19ee if (it == element) { 19e6: 4299 cmp r1, r3 19e8: d1fb bne.n 19e2 return true; 19ea: 2001 movs r0, #1 } } return false; } 19ec: 4770 bx lr return false; 19ee: 2000 movs r0, #0 19f0: 4770 bx lr 19f2: 2000 movs r0, #0 19f4: 4770 bx lr return true; 19f6: 2001 movs r0, #1 19f8: 4770 bx lr ... 000019fc : /** * \brief Insert an element as list head */ void list_insert_as_head(struct list_descriptor *const list, void *const element) { 19fc: b538 push {r3, r4, r5, lr} 19fe: 4604 mov r4, r0 1a00: 460d mov r5, r1 ASSERT(!is_list_element(list, element)); 1a02: 4b06 ldr r3, [pc, #24] ; (1a1c ) 1a04: 4798 blx r3 1a06: f080 0001 eor.w r0, r0, #1 1a0a: 2239 movs r2, #57 ; 0x39 1a0c: 4904 ldr r1, [pc, #16] ; (1a20 ) 1a0e: b2c0 uxtb r0, r0 1a10: 4b04 ldr r3, [pc, #16] ; (1a24 ) 1a12: 4798 blx r3 ((struct list_element *)element)->next = list->head; 1a14: 6823 ldr r3, [r4, #0] 1a16: 602b str r3, [r5, #0] list->head = (struct list_element *)element; 1a18: 6025 str r5, [r4, #0] 1a1a: bd38 pop {r3, r4, r5, pc} 1a1c: 000019db .word 0x000019db 1a20: 0001b598 .word 0x0001b598 1a24: 000019d5 .word 0x000019d5 00001a28 : /** * \brief Insert an element after the given list element */ void list_insert_after(void *const after, void *const element) { ((struct list_element *)element)->next = ((struct list_element *)after)->next; 1a28: 6803 ldr r3, [r0, #0] 1a2a: 600b str r3, [r1, #0] ((struct list_element *)after)->next = (struct list_element *)element; 1a2c: 6001 str r1, [r0, #0] 1a2e: 4770 bx lr 00001a30 : /** * \brief Removes list head */ void *list_remove_head(struct list_descriptor *const list) { if (list->head) { 1a30: 6803 ldr r3, [r0, #0] 1a32: b10b cbz r3, 1a38 struct list_element *tmp = list->head; list->head = list->head->next; 1a34: 681a ldr r2, [r3, #0] 1a36: 6002 str r2, [r0, #0] return (void *)tmp; } return NULL; } 1a38: 4618 mov r0, r3 1a3a: 4770 bx lr 00001a3c : /** * \brief Ringbuffer init */ int32_t ringbuffer_init(struct ringbuffer *const rb, void *buf, uint32_t size) { 1a3c: b570 push {r4, r5, r6, lr} 1a3e: 460e mov r6, r1 1a40: 4615 mov r5, r2 ASSERT(rb && buf && size); 1a42: 4604 mov r4, r0 1a44: b178 cbz r0, 1a66 1a46: b181 cbz r1, 1a6a 1a48: b1a2 cbz r2, 1a74 1a4a: 2001 movs r0, #1 1a4c: 2228 movs r2, #40 ; 0x28 1a4e: 490d ldr r1, [pc, #52] ; (1a84 ) 1a50: 4b0d ldr r3, [pc, #52] ; (1a88 ) 1a52: 4798 blx r3 /* * buf size must be aligned to power of 2 */ if ((size & (size - 1)) != 0) { 1a54: 1e6b subs r3, r5, #1 1a56: 421d tst r5, r3 1a58: d109 bne.n 1a6e return ERR_INVALID_ARG; } /* size - 1 is faster in calculation */ rb->size = size - 1; 1a5a: 6063 str r3, [r4, #4] rb->read_index = 0; 1a5c: 2000 movs r0, #0 1a5e: 60a0 str r0, [r4, #8] rb->write_index = rb->read_index; 1a60: 60e0 str r0, [r4, #12] rb->buf = (uint8_t *)buf; 1a62: 6026 str r6, [r4, #0] return ERR_NONE; 1a64: bd70 pop {r4, r5, r6, pc} ASSERT(rb && buf && size); 1a66: 2000 movs r0, #0 1a68: e7f0 b.n 1a4c 1a6a: 2000 movs r0, #0 1a6c: e7ee b.n 1a4c return ERR_INVALID_ARG; 1a6e: f06f 000c mvn.w r0, #12 1a72: bd70 pop {r4, r5, r6, pc} ASSERT(rb && buf && size); 1a74: 2228 movs r2, #40 ; 0x28 1a76: 4903 ldr r1, [pc, #12] ; (1a84 ) 1a78: 2000 movs r0, #0 1a7a: 4b03 ldr r3, [pc, #12] ; (1a88 ) 1a7c: 4798 blx r3 if ((size & (size - 1)) != 0) { 1a7e: 1e6b subs r3, r5, #1 1a80: e7eb b.n 1a5a 1a82: bf00 nop 1a84: 0001b5b8 .word 0x0001b5b8 1a88: 000019d5 .word 0x000019d5 00001a8c : /** * \brief Get one byte from ringbuffer * */ int32_t ringbuffer_get(struct ringbuffer *const rb, uint8_t *data) { 1a8c: b538 push {r3, r4, r5, lr} 1a8e: 460d mov r5, r1 ASSERT(rb && data); 1a90: 4604 mov r4, r0 1a92: b1a0 cbz r0, 1abe 1a94: 1c08 adds r0, r1, #0 1a96: bf18 it ne 1a98: 2001 movne r0, #1 1a9a: 2240 movs r2, #64 ; 0x40 1a9c: 490a ldr r1, [pc, #40] ; (1ac8 ) 1a9e: 4b0b ldr r3, [pc, #44] ; (1acc ) 1aa0: 4798 blx r3 if (rb->write_index != rb->read_index) { 1aa2: 68a3 ldr r3, [r4, #8] 1aa4: 68e2 ldr r2, [r4, #12] 1aa6: 429a cmp r2, r3 1aa8: d00b beq.n 1ac2 *data = rb->buf[rb->read_index & rb->size]; 1aaa: 6862 ldr r2, [r4, #4] 1aac: 4013 ands r3, r2 1aae: 6822 ldr r2, [r4, #0] 1ab0: 5cd3 ldrb r3, [r2, r3] 1ab2: 702b strb r3, [r5, #0] rb->read_index++; 1ab4: 68a3 ldr r3, [r4, #8] 1ab6: 3301 adds r3, #1 1ab8: 60a3 str r3, [r4, #8] return ERR_NONE; 1aba: 2000 movs r0, #0 1abc: bd38 pop {r3, r4, r5, pc} 1abe: 2000 movs r0, #0 1ac0: e7eb b.n 1a9a } return ERR_NOT_FOUND; 1ac2: f06f 0009 mvn.w r0, #9 } 1ac6: bd38 pop {r3, r4, r5, pc} 1ac8: 0001b5b8 .word 0x0001b5b8 1acc: 000019d5 .word 0x000019d5 00001ad0 : /** * \brief Put one byte to ringbuffer * */ int32_t ringbuffer_put(struct ringbuffer *const rb, uint8_t data) { 1ad0: b538 push {r3, r4, r5, lr} 1ad2: 460d mov r5, r1 ASSERT(rb); 1ad4: 4604 mov r4, r0 1ad6: 2251 movs r2, #81 ; 0x51 1ad8: 490b ldr r1, [pc, #44] ; (1b08 ) 1ada: 3000 adds r0, #0 1adc: bf18 it ne 1ade: 2001 movne r0, #1 1ae0: 4b0a ldr r3, [pc, #40] ; (1b0c ) 1ae2: 4798 blx r3 rb->buf[rb->write_index & rb->size] = data; 1ae4: 68e3 ldr r3, [r4, #12] 1ae6: 6862 ldr r2, [r4, #4] 1ae8: 4013 ands r3, r2 1aea: 6822 ldr r2, [r4, #0] 1aec: 54d5 strb r5, [r2, r3] /* * buffer full strategy: new data will overwrite the oldest data in * the buffer */ if ((rb->write_index - rb->read_index) > rb->size) { 1aee: 68e3 ldr r3, [r4, #12] 1af0: 6861 ldr r1, [r4, #4] 1af2: 68a2 ldr r2, [r4, #8] 1af4: 1a9a subs r2, r3, r2 1af6: 428a cmp r2, r1 rb->read_index = rb->write_index - rb->size; 1af8: bf84 itt hi 1afa: 1a59 subhi r1, r3, r1 1afc: 60a1 strhi r1, [r4, #8] } rb->write_index++; 1afe: 3301 adds r3, #1 1b00: 60e3 str r3, [r4, #12] return ERR_NONE; } 1b02: 2000 movs r0, #0 1b04: bd38 pop {r3, r4, r5, pc} 1b06: bf00 nop 1b08: 0001b5b8 .word 0x0001b5b8 1b0c: 000019d5 .word 0x000019d5 00001b10 : /** * \brief Return the element number of ringbuffer */ uint32_t ringbuffer_num(const struct ringbuffer *const rb) { 1b10: b510 push {r4, lr} ASSERT(rb); 1b12: 4604 mov r4, r0 1b14: 2267 movs r2, #103 ; 0x67 1b16: 4905 ldr r1, [pc, #20] ; (1b2c ) 1b18: 3000 adds r0, #0 1b1a: bf18 it ne 1b1c: 2001 movne r0, #1 1b1e: 4b04 ldr r3, [pc, #16] ; (1b30 ) 1b20: 4798 blx r3 return rb->write_index - rb->read_index; 1b22: 68e0 ldr r0, [r4, #12] 1b24: 68a3 ldr r3, [r4, #8] } 1b26: 1ac0 subs r0, r0, r3 1b28: bd10 pop {r4, pc} 1b2a: bf00 nop 1b2c: 0001b5b8 .word 0x0001b5b8 1b30: 000019d5 .word 0x000019d5 00001b34 <_irq_set>: */ __STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) { if ((int32_t)(IRQn) >= 0) { NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 1b34: 0943 lsrs r3, r0, #5 1b36: f000 001f and.w r0, r0, #31 1b3a: 2201 movs r2, #1 1b3c: fa02 f000 lsl.w r0, r2, r0 1b40: 3340 adds r3, #64 ; 0x40 1b42: 4a02 ldr r2, [pc, #8] ; (1b4c <_irq_set+0x18>) 1b44: f842 0023 str.w r0, [r2, r3, lsl #2] 1b48: 4770 bx lr 1b4a: bf00 nop 1b4c: e000e100 .word 0xe000e100 00001b50 <_get_cycles_for_us>: */ static inline uint32_t _get_cycles_for_us_internal(const uint16_t us, const uint32_t freq, const uint8_t power) { switch (power) { case 9: return (us * (freq / 1000000) + 2) / 3; 1b50: ebc0 00c0 rsb r0, r0, r0, lsl #3 1b54: eb00 1000 add.w r0, r0, r0, lsl #4 1b58: 3002 adds r0, #2 1b5a: 4b02 ldr r3, [pc, #8] ; (1b64 <_get_cycles_for_us+0x14>) 1b5c: fba3 3000 umull r3, r0, r3, r0 * \brief Retrieve the amount of cycles to delay for the given amount of us */ uint32_t _get_cycles_for_us(const uint16_t us) { return _get_cycles_for_us_internal(us, CONF_CPU_FREQUENCY, CPU_FREQ_POWER); } 1b60: 0840 lsrs r0, r0, #1 1b62: 4770 bx lr 1b64: aaaaaaab .word 0xaaaaaaab 00001b68 <_get_cycles_for_ms>: */ static inline uint32_t _get_cycles_for_ms_internal(const uint16_t ms, const uint32_t freq, const uint8_t power) { switch (power) { case 9: return (ms * (freq / 1000000) + 2) / 3 * 1000; 1b68: ebc0 00c0 rsb r0, r0, r0, lsl #3 1b6c: eb00 1000 add.w r0, r0, r0, lsl #4 1b70: 3002 adds r0, #2 1b72: 4b04 ldr r3, [pc, #16] ; (1b84 <_get_cycles_for_ms+0x1c>) 1b74: fba3 3000 umull r3, r0, r3, r0 1b78: 0840 lsrs r0, r0, #1 * \brief Retrieve the amount of cycles to delay for the given amount of ms */ uint32_t _get_cycles_for_ms(const uint16_t ms) { return _get_cycles_for_ms_internal(ms, CONF_CPU_FREQUENCY, CPU_FREQ_POWER); } 1b7a: f44f 737a mov.w r3, #1000 ; 0x3e8 1b7e: fb03 f000 mul.w r0, r3, r0 1b82: 4770 bx lr 1b84: aaaaaaab .word 0xaaaaaaab 00001b88 <_delay_init>: /** * \brief Initialize delay functionality */ void _delay_init(void *const hw) { 1b88: 4770 bx lr 1b8a: 0000 movs r0, r0 1b8c: 0000 movs r0, r0 ... 00001b90 <_delay_cycles>: __asm(".align 3 \n" "__delay:\n" "subs r1, r1, #1\n" "bhi __delay\n"); #elif defined __GNUC__ __asm(".syntax unified\n" 1b90: 3901 subs r1, #1 1b92: d8fd bhi.n 1b90 <_delay_cycles> 1b94: 4770 bx lr 1b96: bf00 nop 00001b98 <_init_chip>: /** * \brief Initialize the hardware abstraction layer */ void _init_chip(void) { 1b98: b508 push {r3, lr} } static inline void hri_nvmctrl_set_CTRLA_RWS_bf(const void *const hw, hri_nvmctrl_ctrla_reg_t mask) { NVMCTRL_CRITICAL_SECTION_ENTER(); ((Nvmctrl *)hw)->CTRLA.reg |= NVMCTRL_CTRLA_RWS(mask); 1b9a: 4a09 ldr r2, [pc, #36] ; (1bc0 <_init_chip+0x28>) 1b9c: 8813 ldrh r3, [r2, #0] 1b9e: b29b uxth r3, r3 1ba0: f443 63a0 orr.w r3, r3, #1280 ; 0x500 1ba4: 8013 strh r3, [r2, #0] hri_nvmctrl_set_CTRLA_RWS_bf(NVMCTRL, CONF_NVM_WAIT_STATE); _osc32kctrl_init_sources(); 1ba6: 4b07 ldr r3, [pc, #28] ; (1bc4 <_init_chip+0x2c>) 1ba8: 4798 blx r3 _oscctrl_init_sources(); 1baa: 4b07 ldr r3, [pc, #28] ; (1bc8 <_init_chip+0x30>) 1bac: 4798 blx r3 _mclk_init(); 1bae: 4b07 ldr r3, [pc, #28] ; (1bcc <_init_chip+0x34>) 1bb0: 4798 blx r3 #if _GCLK_INIT_1ST _gclk_init_generators_by_fref(_GCLK_INIT_1ST); #endif _oscctrl_init_referenced_generators(); 1bb2: 4b07 ldr r3, [pc, #28] ; (1bd0 <_init_chip+0x38>) 1bb4: 4798 blx r3 _gclk_init_generators_by_fref(_GCLK_INIT_LAST); 1bb6: f640 70ff movw r0, #4095 ; 0xfff 1bba: 4b06 ldr r3, [pc, #24] ; (1bd4 <_init_chip+0x3c>) 1bbc: 4798 blx r3 1bbe: bd08 pop {r3, pc} 1bc0: 41004000 .word 0x41004000 1bc4: 00001c09 .word 0x00001c09 1bc8: 00001c29 .word 0x00001c29 1bcc: 00001bfd .word 0x00001bfd 1bd0: 00001c2d .word 0x00001c2d 1bd4: 00001bd9 .word 0x00001bd9 00001bd8 <_gclk_init_generators_by_fref>: void _gclk_init_generators_by_fref(uint32_t bm) { #if CONF_GCLK_GENERATOR_0_CONFIG == 1 if (bm & (1ul << 0)) { 1bd8: f010 0f01 tst.w r0, #1 1bdc: d008 beq.n 1bf0 <_gclk_init_generators_by_fref+0x18> ((Gclk *)hw)->GENCTRL[index].reg = data; 1bde: 4a05 ldr r2, [pc, #20] ; (1bf4 <_gclk_init_generators_by_fref+0x1c>) 1be0: 4b05 ldr r3, [pc, #20] ; (1bf8 <_gclk_init_generators_by_fref+0x20>) 1be2: 621a str r2, [r3, #32] while (((Gclk *)hw)->SYNCBUSY.reg & reg) { 1be4: 4619 mov r1, r3 1be6: f643 72fd movw r2, #16381 ; 0x3ffd 1bea: 684b ldr r3, [r1, #4] 1bec: 4213 tst r3, r2 1bee: d1fc bne.n 1bea <_gclk_init_generators_by_fref+0x12> 1bf0: 4770 bx lr 1bf2: bf00 nop 1bf4: 00010107 .word 0x00010107 1bf8: 40001c00 .word 0x40001c00 00001bfc <_mclk_init>: ((Mclk *)hw)->CPUDIV.reg = data; 1bfc: 2201 movs r2, #1 1bfe: 4b01 ldr r3, [pc, #4] ; (1c04 <_mclk_init+0x8>) 1c00: 715a strb r2, [r3, #5] 1c02: 4770 bx lr 1c04: 40000800 .word 0x40000800 00001c08 <_osc32kctrl_init_sources>: } static inline void hri_osc32kctrl_write_XOSC32K_reg(const void *const hw, hri_osc32kctrl_xosc32k_reg_t data) { OSC32KCTRL_CRITICAL_SECTION_ENTER(); ((Osc32kctrl *)hw)->XOSC32K.reg = data; 1c08: 4b06 ldr r3, [pc, #24] ; (1c24 <_osc32kctrl_init_sources+0x1c>) 1c0a: f242 328e movw r2, #9102 ; 0x238e 1c0e: 829a strh r2, [r3, #20] } static inline void hri_osc32kctrl_write_CFDCTRL_reg(const void *const hw, hri_osc32kctrl_cfdctrl_reg_t data) { OSC32KCTRL_CRITICAL_SECTION_ENTER(); ((Osc32kctrl *)hw)->CFDCTRL.reg = data; 1c10: 2200 movs r2, #0 1c12: 759a strb r2, [r3, #22] } static inline void hri_osc32kctrl_write_EVCTRL_reg(const void *const hw, hri_osc32kctrl_evctrl_reg_t data) { OSC32KCTRL_CRITICAL_SECTION_ENTER(); ((Osc32kctrl *)hw)->EVCTRL.reg = data; 1c14: 75da strb r2, [r3, #23] } static inline hri_osc32kctrl_osculp32k_reg_t hri_osc32kctrl_read_OSCULP32K_CALIB_bf(const void *const hw) { uint32_t tmp; tmp = ((Osc32kctrl *)hw)->OSCULP32K.reg; 1c16: 69da ldr r2, [r3, #28] calib = hri_osc32kctrl_read_OSCULP32K_CALIB_bf(hw); hri_osc32kctrl_write_OSCULP32K_reg(hw, #if CONF_OSCULP32K_CALIB_ENABLE == 1 OSC32KCTRL_OSCULP32K_CALIB(CONF_OSCULP32K_CALIB) #else OSC32KCTRL_OSCULP32K_CALIB(calib) 1c18: f402 527c and.w r2, r2, #16128 ; 0x3f00 } static inline void hri_osc32kctrl_write_OSCULP32K_reg(const void *const hw, hri_osc32kctrl_osculp32k_reg_t data) { OSC32KCTRL_CRITICAL_SECTION_ENTER(); ((Osc32kctrl *)hw)->OSCULP32K.reg = data; 1c1c: 61da str r2, [r3, #28] ((Osc32kctrl *)hw)->RTCCTRL.reg = data; 1c1e: 2201 movs r2, #1 1c20: 741a strb r2, [r3, #16] 1c22: 4770 bx lr 1c24: 40001400 .word 0x40001400 00001c28 <_oscctrl_init_sources>: /** * \brief Initialize clock sources */ void _oscctrl_init_sources(void) { 1c28: 4770 bx lr ... 00001c2c <_oscctrl_init_referenced_generators>: static inline void hri_oscctrl_write_DPLLRATIO_reg(const void *const hw, uint8_t submodule_index, hri_oscctrl_dpllratio_reg_t data) { OSCCTRL_CRITICAL_SECTION_ENTER(); ((Oscctrl *)hw)->Dpll[submodule_index].DPLLRATIO.reg = data; 1c2c: 4a0e ldr r2, [pc, #56] ; (1c68 <_oscctrl_init_referenced_generators+0x3c>) 1c2e: 4b0f ldr r3, [pc, #60] ; (1c6c <_oscctrl_init_referenced_generators+0x40>) 1c30: 635a str r2, [r3, #52] ; 0x34 while (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSYNCBUSY.reg & reg) { 1c32: 461a mov r2, r3 1c34: 6bd3 ldr r3, [r2, #60] ; 0x3c 1c36: f013 0f06 tst.w r3, #6 1c3a: d1fb bne.n 1c34 <_oscctrl_init_referenced_generators+0x8> static inline void hri_oscctrl_write_DPLLCTRLB_reg(const void *const hw, uint8_t submodule_index, hri_oscctrl_dpllctrlb_reg_t data) { OSCCTRL_CRITICAL_SECTION_ENTER(); ((Oscctrl *)hw)->Dpll[submodule_index].DPLLCTRLB.reg = data; 1c3c: 4b0b ldr r3, [pc, #44] ; (1c6c <_oscctrl_init_referenced_generators+0x40>) 1c3e: f44f 6202 mov.w r2, #2080 ; 0x820 1c42: 639a str r2, [r3, #56] ; 0x38 ((Oscctrl *)hw)->Dpll[submodule_index].DPLLCTRLA.reg = data; 1c44: 2202 movs r2, #2 1c46: f883 2030 strb.w r2, [r3, #48] ; 0x30 while (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSYNCBUSY.reg & reg) { 1c4a: 461a mov r2, r3 1c4c: 6bd3 ldr r3, [r2, #60] ; 0x3c 1c4e: f013 0f02 tst.w r3, #2 1c52: d1fb bne.n 1c4c <_oscctrl_init_referenced_generators+0x20> return (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSTATUS.reg & OSCCTRL_DPLLSTATUS_LOCK) 1c54: 4b05 ldr r3, [pc, #20] ; (1c6c <_oscctrl_init_referenced_generators+0x40>) 1c56: 6c1a ldr r2, [r3, #64] ; 0x40 #endif #endif #if CONF_FDPLL0_CONFIG == 1 #if CONF_FDPLL0_ENABLE == 1 while (!(hri_oscctrl_get_DPLLSTATUS_LOCK_bit(hw, 0) || hri_oscctrl_get_DPLLSTATUS_CLKRDY_bit(hw, 0))) 1c58: f012 0f01 tst.w r2, #1 1c5c: d103 bne.n 1c66 <_oscctrl_init_referenced_generators+0x3a> return (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSTATUS.reg & OSCCTRL_DPLLSTATUS_CLKRDY) 1c5e: 6c1a ldr r2, [r3, #64] ; 0x40 1c60: f012 0f02 tst.w r2, #2 1c64: d0f7 beq.n 1c56 <_oscctrl_init_referenced_generators+0x2a> 1c66: 4770 bx lr 1c68: 00010e4d .word 0x00010e4d 1c6c: 40001000 .word 0x40001000 00001c70 : /** * \internal RAMECC interrupt handler */ void RAMECC_Handler(void) { 1c70: b500 push {lr} 1c72: b083 sub sp, #12 return tmp; } static inline hri_ramecc_intflag_reg_t hri_ramecc_read_INTFLAG_reg(const void *const hw) { return ((Ramecc *)hw)->INTFLAG.reg; 1c74: 4b0d ldr r3, [pc, #52] ; (1cac ) 1c76: 789b ldrb r3, [r3, #2] 1c78: b2db uxtb r3, r3 struct _ramecc_device *dev = (struct _ramecc_device *)&device; volatile uint32_t int_mask = hri_ramecc_read_INTFLAG_reg(RAMECC); 1c7a: 9301 str r3, [sp, #4] if (int_mask & RAMECC_INTFLAG_DUALE && dev->ramecc_cb.dual_bit_err) { 1c7c: 9b01 ldr r3, [sp, #4] 1c7e: f013 0f02 tst.w r3, #2 1c82: d006 beq.n 1c92 1c84: 4b0a ldr r3, [pc, #40] ; (1cb0 ) 1c86: 681b ldr r3, [r3, #0] 1c88: b11b cbz r3, 1c92 return tmp; } static inline hri_ramecc_erraddr_reg_t hri_ramecc_read_ERRADDR_reg(const void *const hw) { return ((Ramecc *)hw)->ERRADDR.reg; 1c8a: 4a08 ldr r2, [pc, #32] ; (1cac ) 1c8c: 6850 ldr r0, [r2, #4] dev->ramecc_cb.dual_bit_err((uint32_t)hri_ramecc_read_ERRADDR_reg(RAMECC)); 1c8e: 4798 blx r3 1c90: e009 b.n 1ca6 } else if (int_mask & RAMECC_INTFLAG_SINGLEE && dev->ramecc_cb.single_bit_err) { 1c92: 9b01 ldr r3, [sp, #4] 1c94: f013 0f01 tst.w r3, #1 1c98: d005 beq.n 1ca6 1c9a: 4b05 ldr r3, [pc, #20] ; (1cb0 ) 1c9c: 685b ldr r3, [r3, #4] 1c9e: b113 cbz r3, 1ca6 1ca0: 4a02 ldr r2, [pc, #8] ; (1cac ) 1ca2: 6850 ldr r0, [r2, #4] dev->ramecc_cb.single_bit_err((uint32_t)hri_ramecc_read_ERRADDR_reg(RAMECC)); 1ca4: 4798 blx r3 } else { return; } } 1ca6: b003 add sp, #12 1ca8: f85d fb04 ldr.w pc, [sp], #4 1cac: 41020000 .word 0x41020000 1cb0: 20006c70 .word 0x20006c70 00001cb4 <_sercom_get_hardware_index>: /** * \brief Retrieve ordinal number of the given sercom hardware instance */ static uint8_t _sercom_get_hardware_index(const void *const hw) { 1cb4: b470 push {r4, r5, r6} 1cb6: b089 sub sp, #36 ; 0x24 1cb8: 4606 mov r6, r0 Sercom *const sercom_modules[] = SERCOM_INSTS; 1cba: 466c mov r4, sp 1cbc: 4d0d ldr r5, [pc, #52] ; (1cf4 <_sercom_get_hardware_index+0x40>) 1cbe: cd0f ldmia r5!, {r0, r1, r2, r3} 1cc0: c40f stmia r4!, {r0, r1, r2, r3} 1cc2: e895 000f ldmia.w r5, {r0, r1, r2, r3} 1cc6: e884 000f stmia.w r4, {r0, r1, r2, r3} /* Find index for SERCOM instance. */ for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { if ((uint32_t)hw == (uint32_t)sercom_modules[i]) { 1cca: 9b00 ldr r3, [sp, #0] 1ccc: 42b3 cmp r3, r6 1cce: d00d beq.n 1cec <_sercom_get_hardware_index+0x38> 1cd0: 4631 mov r1, r6 1cd2: ab01 add r3, sp, #4 for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { 1cd4: 2001 movs r0, #1 if ((uint32_t)hw == (uint32_t)sercom_modules[i]) { 1cd6: f853 2b04 ldr.w r2, [r3], #4 1cda: 428a cmp r2, r1 1cdc: d007 beq.n 1cee <_sercom_get_hardware_index+0x3a> for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { 1cde: 3001 adds r0, #1 1ce0: 2808 cmp r0, #8 1ce2: d1f8 bne.n 1cd6 <_sercom_get_hardware_index+0x22> return i; } } return 0; 1ce4: 2000 movs r0, #0 } 1ce6: b009 add sp, #36 ; 0x24 1ce8: bc70 pop {r4, r5, r6} 1cea: 4770 bx lr for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { 1cec: 2000 movs r0, #0 return i; 1cee: b2c0 uxtb r0, r0 1cf0: e7f9 b.n 1ce6 <_sercom_get_hardware_index+0x32> 1cf2: bf00 nop 1cf4: 0001b5dc .word 0x0001b5dc 00001cf8 <_sercom_usart_interrupt_handler>: * \internal Sercom interrupt handler * * \param[in] p The pointer to interrupt parameter */ static void _sercom_usart_interrupt_handler(struct _usart_async_device *device) { 1cf8: b510 push {r4, lr} void *hw = device->hw; 1cfa: 6984 ldr r4, [r0, #24] ((Sercom *)hw)->USART.INTFLAG.reg = SERCOM_USART_INTFLAG_ERROR; } static inline bool hri_sercomusart_get_interrupt_DRE_bit(const void *const hw) { return (((Sercom *)hw)->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_DRE) >> SERCOM_USART_INTFLAG_DRE_Pos; 1cfc: 7e23 ldrb r3, [r4, #24] if (hri_sercomusart_get_interrupt_DRE_bit(hw) && hri_sercomusart_get_INTEN_DRE_bit(hw)) { 1cfe: f013 0f01 tst.w r3, #1 1d02: d003 beq.n 1d0c <_sercom_usart_interrupt_handler+0x14> ((Sercom *)hw)->USART.INTENSET.reg = SERCOM_USART_INTENSET_DRE; } static inline bool hri_sercomusart_get_INTEN_DRE_bit(const void *const hw) { return (((Sercom *)hw)->USART.INTENSET.reg & SERCOM_USART_INTENSET_DRE) >> SERCOM_USART_INTENSET_DRE_Pos; 1d04: 7da3 ldrb r3, [r4, #22] 1d06: f013 0f01 tst.w r3, #1 1d0a: d112 bne.n 1d32 <_sercom_usart_interrupt_handler+0x3a> return (((Sercom *)hw)->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_TXC) >> SERCOM_USART_INTFLAG_TXC_Pos; 1d0c: 7e23 ldrb r3, [r4, #24] hri_sercomusart_clear_INTEN_DRE_bit(hw); device->usart_cb.tx_byte_sent(device); } else if (hri_sercomusart_get_interrupt_TXC_bit(hw) && hri_sercomusart_get_INTEN_TXC_bit(hw)) { 1d0e: f013 0f02 tst.w r3, #2 1d12: d003 beq.n 1d1c <_sercom_usart_interrupt_handler+0x24> ((Sercom *)hw)->USART.INTENSET.reg = SERCOM_USART_INTENSET_TXC; } static inline bool hri_sercomusart_get_INTEN_TXC_bit(const void *const hw) { return (((Sercom *)hw)->USART.INTENSET.reg & SERCOM_USART_INTENSET_TXC) >> SERCOM_USART_INTENSET_TXC_Pos; 1d14: 7da3 ldrb r3, [r4, #22] 1d16: f013 0f02 tst.w r3, #2 1d1a: d10f bne.n 1d3c <_sercom_usart_interrupt_handler+0x44> return (((Sercom *)hw)->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_RXC) >> SERCOM_USART_INTFLAG_RXC_Pos; 1d1c: 7e23 ldrb r3, [r4, #24] hri_sercomusart_clear_INTEN_TXC_bit(hw); device->usart_cb.tx_done_cb(device); } else if (hri_sercomusart_get_interrupt_RXC_bit(hw)) { 1d1e: f013 0f04 tst.w r3, #4 1d22: d015 beq.n 1d50 <_sercom_usart_interrupt_handler+0x58> SERCOM_CRITICAL_SECTION_LEAVE(); } static inline hri_sercomusart_status_reg_t hri_sercomusart_read_STATUS_reg(const void *const hw) { return ((Sercom *)hw)->USART.STATUS.reg; 1d24: 8b63 ldrh r3, [r4, #26] if (hri_sercomusart_read_STATUS_reg(hw) 1d26: f003 0337 and.w r3, r3, #55 ; 0x37 1d2a: b163 cbz r3, 1d46 <_sercom_usart_interrupt_handler+0x4e> ((Sercom *)hw)->USART.STATUS.reg = mask; 1d2c: 23ff movs r3, #255 ; 0xff 1d2e: 8363 strh r3, [r4, #26] 1d30: bd10 pop {r4, pc} ((Sercom *)hw)->USART.INTENCLR.reg = SERCOM_USART_INTENSET_DRE; 1d32: 2301 movs r3, #1 1d34: 7523 strb r3, [r4, #20] device->usart_cb.tx_byte_sent(device); 1d36: 6803 ldr r3, [r0, #0] 1d38: 4798 blx r3 1d3a: bd10 pop {r4, pc} ((Sercom *)hw)->USART.INTENCLR.reg = SERCOM_USART_INTENSET_TXC; 1d3c: 2302 movs r3, #2 1d3e: 7523 strb r3, [r4, #20] device->usart_cb.tx_done_cb(device); 1d40: 6883 ldr r3, [r0, #8] 1d42: 4798 blx r3 1d44: bd10 pop {r4, pc} return ((Sercom *)hw)->USART.DATA.reg; 1d46: 6aa1 ldr r1, [r4, #40] ; 0x28 | SERCOM_USART_STATUS_ISF | SERCOM_USART_STATUS_COLL)) { hri_sercomusart_clear_STATUS_reg(hw, SERCOM_USART_STATUS_MASK); return; } device->usart_cb.rx_done_cb(device, hri_sercomusart_read_DATA_reg(hw)); 1d48: 6843 ldr r3, [r0, #4] 1d4a: b2c9 uxtb r1, r1 1d4c: 4798 blx r3 1d4e: bd10 pop {r4, pc} return (((Sercom *)hw)->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_ERROR) >> SERCOM_USART_INTFLAG_ERROR_Pos; 1d50: 7e23 ldrb r3, [r4, #24] } else if (hri_sercomusart_get_interrupt_ERROR_bit(hw)) { 1d52: 09db lsrs r3, r3, #7 1d54: d100 bne.n 1d58 <_sercom_usart_interrupt_handler+0x60> 1d56: bd10 pop {r4, pc} ((Sercom *)hw)->USART.INTFLAG.reg = SERCOM_USART_INTFLAG_ERROR; 1d58: 2380 movs r3, #128 ; 0x80 1d5a: 7623 strb r3, [r4, #24] uint32_t status; hri_sercomusart_clear_interrupt_ERROR_bit(hw); device->usart_cb.error_cb(device); 1d5c: 68c3 ldr r3, [r0, #12] 1d5e: 4798 blx r3 return ((Sercom *)hw)->USART.STATUS.reg; 1d60: 8b63 ldrh r3, [r4, #26] 1d62: b29b uxth r3, r3 ((Sercom *)hw)->USART.STATUS.reg = mask; 1d64: 8363 strh r3, [r4, #26] 1d66: e7f6 b.n 1d56 <_sercom_usart_interrupt_handler+0x5e> 00001d68 <_sercom_get_irq_num>: /** * \brief Retrieve IRQ number for the given hardware instance */ static uint8_t _sercom_get_irq_num(const void *const hw) { 1d68: b508 push {r3, lr} return SERCOM0_0_IRQn + (_sercom_get_hardware_index(hw) << 2); 1d6a: 4b03 ldr r3, [pc, #12] ; (1d78 <_sercom_get_irq_num+0x10>) 1d6c: 4798 blx r3 1d6e: 0080 lsls r0, r0, #2 1d70: 302e adds r0, #46 ; 0x2e } 1d72: f000 00fe and.w r0, r0, #254 ; 0xfe 1d76: bd08 pop {r3, pc} 1d78: 00001cb5 .word 0x00001cb5 00001d7c <_usart_init>: { 1d7c: b510 push {r4, lr} 1d7e: 4604 mov r4, r0 uint8_t sercom_offset = _sercom_get_hardware_index(hw); 1d80: 4b21 ldr r3, [pc, #132] ; (1e08 <_usart_init+0x8c>) 1d82: 4798 blx r3 if (_usarts[i].number == sercom_offset) { 1d84: 2802 cmp r0, #2 1d86: d005 beq.n 1d94 <_usart_init+0x18> ASSERT(false); 1d88: f240 226b movw r2, #619 ; 0x26b 1d8c: 491f ldr r1, [pc, #124] ; (1e0c <_usart_init+0x90>) 1d8e: 2000 movs r0, #0 1d90: 4b1f ldr r3, [pc, #124] ; (1e10 <_usart_init+0x94>) 1d92: 4798 blx r3 return ((Sercom *)hw)->USART.SYNCBUSY.reg & reg; 1d94: 69e3 ldr r3, [r4, #28] if (!hri_sercomusart_is_syncing(hw, SERCOM_USART_SYNCBUSY_SWRST)) { 1d96: f013 0f01 tst.w r3, #1 1d9a: d119 bne.n 1dd0 <_usart_init+0x54> while (((Sercom *)hw)->USART.SYNCBUSY.reg & reg) { 1d9c: 69e3 ldr r3, [r4, #28] 1d9e: f013 0f03 tst.w r3, #3 1da2: d1fb bne.n 1d9c <_usart_init+0x20> tmp = ((Sercom *)hw)->USART.CTRLA.reg; 1da4: 6823 ldr r3, [r4, #0] if (hri_sercomusart_get_CTRLA_reg(hw, SERCOM_USART_CTRLA_ENABLE)) { 1da6: f013 0f02 tst.w r3, #2 1daa: d00b beq.n 1dc4 <_usart_init+0x48> ((Sercom *)hw)->USART.CTRLA.reg &= ~SERCOM_USART_CTRLA_ENABLE; 1dac: 6823 ldr r3, [r4, #0] 1dae: f023 0302 bic.w r3, r3, #2 1db2: 6023 str r3, [r4, #0] while (((Sercom *)hw)->USART.SYNCBUSY.reg & reg) { 1db4: 69e3 ldr r3, [r4, #28] 1db6: f013 0f03 tst.w r3, #3 1dba: d1fb bne.n 1db4 <_usart_init+0x38> 1dbc: 69e3 ldr r3, [r4, #28] 1dbe: f013 0f02 tst.w r3, #2 1dc2: d1fb bne.n 1dbc <_usart_init+0x40> ((Sercom *)hw)->USART.CTRLA.reg = data; 1dc4: 2305 movs r3, #5 1dc6: 6023 str r3, [r4, #0] while (((Sercom *)hw)->USART.SYNCBUSY.reg & reg) { 1dc8: 69e3 ldr r3, [r4, #28] 1dca: f013 0f03 tst.w r3, #3 1dce: d1fb bne.n 1dc8 <_usart_init+0x4c> 1dd0: 69e3 ldr r3, [r4, #28] 1dd2: f013 0f01 tst.w r3, #1 1dd6: d1fb bne.n 1dd0 <_usart_init+0x54> ((Sercom *)hw)->USART.CTRLA.reg = data; 1dd8: 4b0e ldr r3, [pc, #56] ; (1e14 <_usart_init+0x98>) 1dda: 6023 str r3, [r4, #0] while (((Sercom *)hw)->USART.SYNCBUSY.reg & reg) { 1ddc: 69e3 ldr r3, [r4, #28] 1dde: f013 0f03 tst.w r3, #3 1de2: d1fb bne.n 1ddc <_usart_init+0x60> ((Sercom *)hw)->USART.CTRLB.reg = data; 1de4: f44f 3340 mov.w r3, #196608 ; 0x30000 1de8: 6063 str r3, [r4, #4] while (((Sercom *)hw)->USART.SYNCBUSY.reg & reg) { 1dea: 69e3 ldr r3, [r4, #28] 1dec: f013 0f1f tst.w r3, #31 1df0: d1fb bne.n 1dea <_usart_init+0x6e> ((Sercom *)hw)->USART.CTRLC.reg = data; 1df2: 4b09 ldr r3, [pc, #36] ; (1e18 <_usart_init+0x9c>) 1df4: 60a3 str r3, [r4, #8] ((Sercom *)hw)->USART.BAUD.reg = data; 1df6: f64f 4311 movw r3, #64529 ; 0xfc11 1dfa: 81a3 strh r3, [r4, #12] ((Sercom *)hw)->USART.RXPL.reg = data; 1dfc: 2000 movs r0, #0 1dfe: 73a0 strb r0, [r4, #14] ((Sercom *)hw)->USART.DBGCTRL.reg = data; 1e00: f884 0030 strb.w r0, [r4, #48] ; 0x30 } 1e04: bd10 pop {r4, pc} 1e06: bf00 nop 1e08: 00001cb5 .word 0x00001cb5 1e0c: 0001b614 .word 0x0001b614 1e10: 000019d5 .word 0x000019d5 1e14: 40100004 .word 0x40100004 1e18: 00700002 .word 0x00700002 00001e1c <_usart_async_init>: { 1e1c: b570 push {r4, r5, r6, lr} 1e1e: 460d mov r5, r1 ASSERT(device); 1e20: 4606 mov r6, r0 1e22: 22cb movs r2, #203 ; 0xcb 1e24: 4918 ldr r1, [pc, #96] ; (1e88 <_usart_async_init+0x6c>) 1e26: 3000 adds r0, #0 1e28: bf18 it ne 1e2a: 2001 movne r0, #1 1e2c: 4b17 ldr r3, [pc, #92] ; (1e8c <_usart_async_init+0x70>) 1e2e: 4798 blx r3 init_status = _usart_init(hw); 1e30: 4628 mov r0, r5 1e32: 4b17 ldr r3, [pc, #92] ; (1e90 <_usart_async_init+0x74>) 1e34: 4798 blx r3 if (init_status) { 1e36: 4604 mov r4, r0 1e38: b108 cbz r0, 1e3e <_usart_async_init+0x22> } 1e3a: 4620 mov r0, r4 1e3c: bd70 pop {r4, r5, r6, pc} device->hw = hw; 1e3e: 61b5 str r5, [r6, #24] if (hw == SERCOM2) { 1e40: 4b14 ldr r3, [pc, #80] ; (1e94 <_usart_async_init+0x78>) 1e42: 429d cmp r5, r3 _sercom2_dev = (struct _usart_async_device *)dev; 1e44: bf04 itt eq 1e46: 4b14 ldreq r3, [pc, #80] ; (1e98 <_usart_async_init+0x7c>) 1e48: 601e streq r6, [r3, #0] uint8_t irq = _sercom_get_irq_num(hw); 1e4a: 4628 mov r0, r5 1e4c: 4b13 ldr r3, [pc, #76] ; (1e9c <_usart_async_init+0x80>) 1e4e: 4798 blx r3 1e50: 1d01 adds r1, r0, #4 1e52: b2c9 uxtb r1, r1 NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 1e54: 2501 movs r5, #1 1e56: f000 021f and.w r2, r0, #31 1e5a: fa05 f202 lsl.w r2, r5, r2 1e5e: 0943 lsrs r3, r0, #5 1e60: 009b lsls r3, r3, #2 1e62: f103 4360 add.w r3, r3, #3758096384 ; 0xe0000000 1e66: f503 4361 add.w r3, r3, #57600 ; 0xe100 1e6a: f8c3 2080 str.w r2, [r3, #128] ; 0x80 __ASM volatile ("dsb 0xF":::"memory"); 1e6e: f3bf 8f4f dsb sy __ASM volatile ("isb 0xF":::"memory"); 1e72: f3bf 8f6f isb sy */ __STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) { if ((int32_t)(IRQn) >= 0) { NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 1e76: f8c3 2180 str.w r2, [r3, #384] ; 0x180 NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 1e7a: 601a str r2, [r3, #0] irq++; 1e7c: 3001 adds r0, #1 1e7e: b2c0 uxtb r0, r0 for (uint32_t i = 0; i < 4; i++) { 1e80: 4281 cmp r1, r0 1e82: d1e8 bne.n 1e56 <_usart_async_init+0x3a> 1e84: e7d9 b.n 1e3a <_usart_async_init+0x1e> 1e86: bf00 nop 1e88: 0001b614 .word 0x0001b614 1e8c: 000019d5 .word 0x000019d5 1e90: 00001d7d .word 0x00001d7d 1e94: 41012000 .word 0x41012000 1e98: 200000c8 .word 0x200000c8 1e9c: 00001d69 .word 0x00001d69 00001ea0 <_usart_async_enable>: hri_sercomusart_set_CTRLA_ENABLE_bit(device->hw); 1ea0: 6982 ldr r2, [r0, #24] ((Sercom *)hw)->USART.CTRLA.reg |= SERCOM_USART_CTRLA_ENABLE; 1ea2: 6813 ldr r3, [r2, #0] 1ea4: f043 0302 orr.w r3, r3, #2 1ea8: 6013 str r3, [r2, #0] while (((Sercom *)hw)->USART.SYNCBUSY.reg & reg) { 1eaa: 69d3 ldr r3, [r2, #28] 1eac: f013 0f03 tst.w r3, #3 1eb0: d1fb bne.n 1eaa <_usart_async_enable+0xa> } 1eb2: 4770 bx lr 00001eb4 <_usart_async_write_byte>: hri_sercomusart_write_DATA_reg(device->hw, data); 1eb4: 6983 ldr r3, [r0, #24] ((Sercom *)hw)->USART.DATA.reg = data; 1eb6: 6299 str r1, [r3, #40] ; 0x28 1eb8: 4770 bx lr 00001eba <_usart_async_enable_byte_sent_irq>: hri_sercomusart_set_INTEN_DRE_bit(device->hw); 1eba: 6983 ldr r3, [r0, #24] ((Sercom *)hw)->USART.INTENSET.reg = SERCOM_USART_INTENSET_DRE; 1ebc: 2201 movs r2, #1 1ebe: 759a strb r2, [r3, #22] 1ec0: 4770 bx lr 00001ec2 <_usart_async_enable_tx_done_irq>: hri_sercomusart_set_INTEN_TXC_bit(device->hw); 1ec2: 6983 ldr r3, [r0, #24] ((Sercom *)hw)->USART.INTENSET.reg = SERCOM_USART_INTENSET_TXC; 1ec4: 2202 movs r2, #2 1ec6: 759a strb r2, [r3, #22] 1ec8: 4770 bx lr ... 00001ecc : /** * \internal Sercom interrupt handler */ void SERCOM2_0_Handler(void) { 1ecc: b508 push {r3, lr} _sercom_usart_interrupt_handler(_sercom2_dev); 1ece: 4b02 ldr r3, [pc, #8] ; (1ed8 ) 1ed0: 6818 ldr r0, [r3, #0] 1ed2: 4b02 ldr r3, [pc, #8] ; (1edc ) 1ed4: 4798 blx r3 1ed6: bd08 pop {r3, pc} 1ed8: 200000c8 .word 0x200000c8 1edc: 00001cf9 .word 0x00001cf9 00001ee0 : } /** * \internal Sercom interrupt handler */ void SERCOM2_1_Handler(void) { 1ee0: b508 push {r3, lr} _sercom_usart_interrupt_handler(_sercom2_dev); 1ee2: 4b02 ldr r3, [pc, #8] ; (1eec ) 1ee4: 6818 ldr r0, [r3, #0] 1ee6: 4b02 ldr r3, [pc, #8] ; (1ef0 ) 1ee8: 4798 blx r3 1eea: bd08 pop {r3, pc} 1eec: 200000c8 .word 0x200000c8 1ef0: 00001cf9 .word 0x00001cf9 00001ef4 : } /** * \internal Sercom interrupt handler */ void SERCOM2_2_Handler(void) { 1ef4: b508 push {r3, lr} _sercom_usart_interrupt_handler(_sercom2_dev); 1ef6: 4b02 ldr r3, [pc, #8] ; (1f00 ) 1ef8: 6818 ldr r0, [r3, #0] 1efa: 4b02 ldr r3, [pc, #8] ; (1f04 ) 1efc: 4798 blx r3 1efe: bd08 pop {r3, pc} 1f00: 200000c8 .word 0x200000c8 1f04: 00001cf9 .word 0x00001cf9 00001f08 : } /** * \internal Sercom interrupt handler */ void SERCOM2_3_Handler(void) { 1f08: b508 push {r3, lr} _sercom_usart_interrupt_handler(_sercom2_dev); 1f0a: 4b02 ldr r3, [pc, #8] ; (1f14 ) 1f0c: 6818 ldr r0, [r3, #0] 1f0e: 4b02 ldr r3, [pc, #8] ; (1f18 ) 1f10: 4798 blx r3 1f12: bd08 pop {r3, pc} 1f14: 200000c8 .word 0x200000c8 1f18: 00001cf9 .word 0x00001cf9 00001f1c : * \param[in] hw The pointer to hardware instance * * \return The index of TC configuration */ static int8_t get_tc_index(const void *const hw) { 1f1c: b570 push {r4, r5, r6, lr} 1f1e: b088 sub sp, #32 1f20: 4606 mov r6, r0 * \param[in] hw The pointer to hardware instance */ static inline uint8_t _get_hardware_offset(const void *const hw) { /* List of available TC modules. */ Tc *const tc_modules[TC_INST_NUM] = TC_INSTS; 1f22: 466c mov r4, sp 1f24: 4d12 ldr r5, [pc, #72] ; (1f70 ) 1f26: cd0f ldmia r5!, {r0, r1, r2, r3} 1f28: c40f stmia r4!, {r0, r1, r2, r3} 1f2a: e895 000f ldmia.w r5, {r0, r1, r2, r3} 1f2e: e884 000f stmia.w r4, {r0, r1, r2, r3} /* Find index for TC instance. */ for (uint32_t i = 0; i < TC_INST_NUM; i++) { if ((uint32_t)hw == (uint32_t)tc_modules[i]) { 1f32: 9b00 ldr r3, [sp, #0] 1f34: 42b3 cmp r3, r6 1f36: d00b beq.n 1f50 1f38: 4630 mov r0, r6 1f3a: aa01 add r2, sp, #4 for (uint32_t i = 0; i < TC_INST_NUM; i++) { 1f3c: 2301 movs r3, #1 if ((uint32_t)hw == (uint32_t)tc_modules[i]) { 1f3e: f852 1b04 ldr.w r1, [r2], #4 1f42: 4281 cmp r1, r0 1f44: d005 beq.n 1f52 for (uint32_t i = 0; i < TC_INST_NUM; i++) { 1f46: 3301 adds r3, #1 1f48: 2b08 cmp r3, #8 1f4a: d1f8 bne.n 1f3e return i; 1f4c: 2000 movs r0, #0 1f4e: e00b b.n 1f68 for (uint32_t i = 0; i < TC_INST_NUM; i++) { 1f50: 2300 movs r3, #0 if (_tcs[i].number == index) { 1f52: f013 0fff tst.w r3, #255 ; 0xff 1f56: d009 beq.n 1f6c ASSERT(false); 1f58: f44f 729e mov.w r2, #316 ; 0x13c 1f5c: 4905 ldr r1, [pc, #20] ; (1f74 ) 1f5e: 2000 movs r0, #0 1f60: 4b05 ldr r3, [pc, #20] ; (1f78 ) 1f62: 4798 blx r3 return -1; 1f64: f04f 30ff mov.w r0, #4294967295 } 1f68: b008 add sp, #32 1f6a: bd70 pop {r4, r5, r6, pc} return i; 1f6c: 2000 movs r0, #0 1f6e: e7fb b.n 1f68 1f70: 0001b630 .word 0x0001b630 1f74: 0001b664 .word 0x0001b664 1f78: 000019d5 .word 0x000019d5 00001f7c <_timer_init>: { 1f7c: b570 push {r4, r5, r6, lr} 1f7e: 4606 mov r6, r0 1f80: 460c mov r4, r1 int8_t i = get_tc_index(hw); 1f82: 4608 mov r0, r1 1f84: 4b60 ldr r3, [pc, #384] ; (2108 <_timer_init+0x18c>) 1f86: 4798 blx r3 1f88: 4605 mov r5, r0 device->hw = hw; 1f8a: 60f4 str r4, [r6, #12] ASSERT(ARRAY_SIZE(_tcs)); 1f8c: 228d movs r2, #141 ; 0x8d 1f8e: 495f ldr r1, [pc, #380] ; (210c <_timer_init+0x190>) 1f90: 2001 movs r0, #1 1f92: 4b5f ldr r3, [pc, #380] ; (2110 <_timer_init+0x194>) 1f94: 4798 blx r3 }; } static inline bool hri_tc_is_syncing(const void *const hw, hri_tc_syncbusy_reg_t reg) { return ((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg; 1f96: 6923 ldr r3, [r4, #16] if (!hri_tc_is_syncing(hw, TC_SYNCBUSY_SWRST)) { 1f98: f013 0f01 tst.w r3, #1 1f9c: d119 bne.n 1fd2 <_timer_init+0x56> while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 1f9e: 6923 ldr r3, [r4, #16] 1fa0: f013 0f03 tst.w r3, #3 1fa4: d1fb bne.n 1f9e <_timer_init+0x22> static inline hri_tc_ctrla_reg_t hri_tc_get_CTRLA_reg(const void *const hw, hri_tc_ctrla_reg_t mask) { uint32_t tmp; hri_tc_wait_for_sync(hw, TC_SYNCBUSY_SWRST | TC_SYNCBUSY_ENABLE); tmp = ((Tc *)hw)->COUNT16.CTRLA.reg; 1fa6: 6823 ldr r3, [r4, #0] if (hri_tc_get_CTRLA_reg(hw, TC_CTRLA_ENABLE)) { 1fa8: f013 0f02 tst.w r3, #2 1fac: d00b beq.n 1fc6 <_timer_init+0x4a> ((Tc *)hw)->COUNT16.CTRLA.reg &= ~TC_CTRLA_ENABLE; 1fae: 6823 ldr r3, [r4, #0] 1fb0: f023 0302 bic.w r3, r3, #2 1fb4: 6023 str r3, [r4, #0] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 1fb6: 6923 ldr r3, [r4, #16] 1fb8: f013 0f03 tst.w r3, #3 1fbc: d1fb bne.n 1fb6 <_timer_init+0x3a> 1fbe: 6923 ldr r3, [r4, #16] 1fc0: f013 0f02 tst.w r3, #2 1fc4: d1fb bne.n 1fbe <_timer_init+0x42> } static inline void hri_tc_write_CTRLA_reg(const void *const hw, hri_tc_ctrla_reg_t data) { TC_CRITICAL_SECTION_ENTER(); ((Tc *)hw)->COUNT16.CTRLA.reg = data; 1fc6: 2301 movs r3, #1 1fc8: 6023 str r3, [r4, #0] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 1fca: 6923 ldr r3, [r4, #16] 1fcc: f013 0f03 tst.w r3, #3 1fd0: d1fb bne.n 1fca <_timer_init+0x4e> 1fd2: 6923 ldr r3, [r4, #16] 1fd4: f013 0f01 tst.w r3, #1 1fd8: d1fb bne.n 1fd2 <_timer_init+0x56> hri_tc_write_CTRLA_reg(hw, _tcs[i].ctrl_a); 1fda: eb05 0385 add.w r3, r5, r5, lsl #2 1fde: 4a4d ldr r2, [pc, #308] ; (2114 <_timer_init+0x198>) 1fe0: eb02 0383 add.w r3, r2, r3, lsl #2 1fe4: 6a5a ldr r2, [r3, #36] ; 0x24 ((Tc *)hw)->COUNT16.CTRLA.reg = data; 1fe6: 6022 str r2, [r4, #0] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 1fe8: 6923 ldr r3, [r4, #16] 1fea: f013 0f03 tst.w r3, #3 1fee: d1fb bne.n 1fe8 <_timer_init+0x6c> hri_tc_write_DBGCTRL_reg(hw, _tcs[i].dbg_ctrl); 1ff0: eb05 0385 add.w r3, r5, r5, lsl #2 1ff4: 4947 ldr r1, [pc, #284] ; (2114 <_timer_init+0x198>) 1ff6: eb01 0383 add.w r3, r1, r3, lsl #2 1ffa: f893 102a ldrb.w r1, [r3, #42] ; 0x2a } static inline void hri_tc_write_DBGCTRL_reg(const void *const hw, hri_tc_dbgctrl_reg_t data) { TC_CRITICAL_SECTION_ENTER(); ((Tc *)hw)->COUNT16.DBGCTRL.reg = data; 1ffe: 73e1 strb r1, [r4, #15] hri_tc_write_EVCTRL_reg(hw, _tcs[i].event_ctrl); 2000: 8d1b ldrh r3, [r3, #40] ; 0x28 ((Tc *)hw)->COUNT16.EVCTRL.reg = data; 2002: 80e3 strh r3, [r4, #6] ((Tc *)hw)->COUNT16.WAVE.reg = data; 2004: 2301 movs r3, #1 2006: 7323 strb r3, [r4, #12] if ((_tcs[i].ctrl_a & TC_CTRLA_MODE_Msk) == TC_CTRLA_MODE_COUNT32) { 2008: f002 020c and.w r2, r2, #12 200c: 2a08 cmp r2, #8 200e: d048 beq.n 20a2 <_timer_init+0x126> } else if ((_tcs[i].ctrl_a & TC_CTRLA_MODE_Msk) == TC_CTRLA_MODE_COUNT16) { 2010: 2a00 cmp r2, #0 2012: d158 bne.n 20c6 <_timer_init+0x14a> hri_tccount16_write_CC_reg(hw, 0, (uint16_t)_tcs[i].cc0); 2014: eb05 0385 add.w r3, r5, r5, lsl #2 2018: 4a3e ldr r2, [pc, #248] ; (2114 <_timer_init+0x198>) 201a: eb02 0383 add.w r3, r2, r3, lsl #2 201e: 8d9b ldrh r3, [r3, #44] ; 0x2c } static inline void hri_tccount16_write_CC_reg(const void *const hw, uint8_t index, hri_tccount16_cc_reg_t data) { TC_CRITICAL_SECTION_ENTER(); ((Tc *)hw)->COUNT16.CC[index].reg = data; 2020: 83a3 strh r3, [r4, #28] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 2022: 6923 ldr r3, [r4, #16] 2024: f013 0fc0 tst.w r3, #192 ; 0xc0 2028: d1fb bne.n 2022 <_timer_init+0xa6> ((Tc *)hw)->COUNT16.CC[index].reg = data; 202a: 2300 movs r3, #0 202c: 83e3 strh r3, [r4, #30] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 202e: 6923 ldr r3, [r4, #16] 2030: f013 0fc0 tst.w r3, #192 ; 0xc0 2034: d1fb bne.n 202e <_timer_init+0xb2> ((Tc *)hw)->COUNT16.INTENSET.reg = TC_INTENSET_OVF; 2036: 2301 movs r3, #1 2038: 7263 strb r3, [r4, #9] if (hw == TC0) { 203a: 4b37 ldr r3, [pc, #220] ; (2118 <_timer_init+0x19c>) 203c: 429c cmp r4, r3 _tc0_dev = (struct _timer_device *)dev; 203e: bf04 itt eq 2040: 4b36 ldreq r3, [pc, #216] ; (211c <_timer_init+0x1a0>) 2042: 601e streq r6, [r3, #0] NVIC_DisableIRQ(_tcs[i].irq); 2044: eb05 0385 add.w r3, r5, r5, lsl #2 2048: 4a32 ldr r2, [pc, #200] ; (2114 <_timer_init+0x198>) 204a: eb02 0383 add.w r3, r2, r3, lsl #2 204e: f9b3 3022 ldrsh.w r3, [r3, #34] ; 0x22 if ((int32_t)(IRQn) >= 0) 2052: 2b00 cmp r3, #0 2054: db23 blt.n 209e <_timer_init+0x122> NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 2056: 095a lsrs r2, r3, #5 2058: f003 031f and.w r3, r3, #31 205c: 2101 movs r1, #1 205e: fa01 f303 lsl.w r3, r1, r3 2062: 3220 adds r2, #32 2064: 492e ldr r1, [pc, #184] ; (2120 <_timer_init+0x1a4>) 2066: f841 3022 str.w r3, [r1, r2, lsl #2] __ASM volatile ("dsb 0xF":::"memory"); 206a: f3bf 8f4f dsb sy __ASM volatile ("isb 0xF":::"memory"); 206e: f3bf 8f6f isb sy NVIC_ClearPendingIRQ(_tcs[i].irq); 2072: eb05 0585 add.w r5, r5, r5, lsl #2 2076: 4b27 ldr r3, [pc, #156] ; (2114 <_timer_init+0x198>) 2078: eb03 0585 add.w r5, r3, r5, lsl #2 207c: f9b5 3022 ldrsh.w r3, [r5, #34] ; 0x22 if ((int32_t)(IRQn) >= 0) 2080: 2b00 cmp r3, #0 2082: db0c blt.n 209e <_timer_init+0x122> NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 2084: 0959 lsrs r1, r3, #5 2086: f003 031f and.w r3, r3, #31 208a: 2201 movs r2, #1 208c: fa02 f303 lsl.w r3, r2, r3 2090: 4a23 ldr r2, [pc, #140] ; (2120 <_timer_init+0x1a4>) 2092: f101 0060 add.w r0, r1, #96 ; 0x60 2096: f842 3020 str.w r3, [r2, r0, lsl #2] NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 209a: f842 3021 str.w r3, [r2, r1, lsl #2] } 209e: 2000 movs r0, #0 20a0: bd70 pop {r4, r5, r6, pc} hri_tccount32_write_CC_reg(hw, 0, _tcs[i].cc0); 20a2: eb05 0385 add.w r3, r5, r5, lsl #2 20a6: 4a1b ldr r2, [pc, #108] ; (2114 <_timer_init+0x198>) 20a8: eb02 0383 add.w r3, r2, r3, lsl #2 20ac: 6adb ldr r3, [r3, #44] ; 0x2c } static inline void hri_tccount32_write_CC_reg(const void *const hw, uint8_t index, hri_tccount32_cc_reg_t data) { TC_CRITICAL_SECTION_ENTER(); ((Tc *)hw)->COUNT32.CC[index].reg = data; 20ae: 61e3 str r3, [r4, #28] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 20b0: 6923 ldr r3, [r4, #16] 20b2: f013 0fc0 tst.w r3, #192 ; 0xc0 20b6: d1fb bne.n 20b0 <_timer_init+0x134> ((Tc *)hw)->COUNT32.CC[index].reg = data; 20b8: 2300 movs r3, #0 20ba: 6223 str r3, [r4, #32] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 20bc: 6923 ldr r3, [r4, #16] 20be: f013 0fc0 tst.w r3, #192 ; 0xc0 20c2: d1fb bne.n 20bc <_timer_init+0x140> 20c4: e7b7 b.n 2036 <_timer_init+0xba> } else if ((_tcs[i].ctrl_a & TC_CTRLA_MODE_Msk) == TC_CTRLA_MODE_COUNT8) { 20c6: 2a04 cmp r2, #4 20c8: d1b5 bne.n 2036 <_timer_init+0xba> hri_tccount8_write_CC_reg(hw, 0, (uint8_t)_tcs[i].cc0); 20ca: eb05 0385 add.w r3, r5, r5, lsl #2 20ce: 4a11 ldr r2, [pc, #68] ; (2114 <_timer_init+0x198>) 20d0: eb02 0383 add.w r3, r2, r3, lsl #2 20d4: f893 302c ldrb.w r3, [r3, #44] ; 0x2c ((Tc *)hw)->COUNT8.CC[index].reg = data; 20d8: 7723 strb r3, [r4, #28] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 20da: 6923 ldr r3, [r4, #16] 20dc: f013 0fc0 tst.w r3, #192 ; 0xc0 20e0: d1fb bne.n 20da <_timer_init+0x15e> ((Tc *)hw)->COUNT8.CC[index].reg = data; 20e2: 2300 movs r3, #0 20e4: 7763 strb r3, [r4, #29] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 20e6: 6923 ldr r3, [r4, #16] 20e8: f013 0fc0 tst.w r3, #192 ; 0xc0 20ec: d1fb bne.n 20e6 <_timer_init+0x16a> hri_tccount8_write_PER_reg(hw, _tcs[i].per); 20ee: eb05 0385 add.w r3, r5, r5, lsl #2 20f2: 4a08 ldr r2, [pc, #32] ; (2114 <_timer_init+0x198>) 20f4: eb02 0383 add.w r3, r2, r3, lsl #2 20f8: f893 302b ldrb.w r3, [r3, #43] ; 0x2b ((Tc *)hw)->COUNT8.PER.reg = data; 20fc: 76e3 strb r3, [r4, #27] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 20fe: 6923 ldr r3, [r4, #16] 2100: f013 0f20 tst.w r3, #32 2104: d1fb bne.n 20fe <_timer_init+0x182> 2106: e796 b.n 2036 <_timer_init+0xba> 2108: 00001f1d .word 0x00001f1d 210c: 0001b664 .word 0x0001b664 2110: 000019d5 .word 0x000019d5 2114: 0001b630 .word 0x0001b630 2118: 40003800 .word 0x40003800 211c: 200000cc .word 0x200000cc 2120: e000e100 .word 0xe000e100 00002124 <_timer_start>: hri_tc_set_CTRLA_ENABLE_bit(device->hw); 2124: 68c2 ldr r2, [r0, #12] ((Tc *)hw)->COUNT16.CTRLA.reg |= TC_CTRLA_ENABLE; 2126: 6813 ldr r3, [r2, #0] 2128: f043 0302 orr.w r3, r3, #2 212c: 6013 str r3, [r2, #0] while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { 212e: 6913 ldr r3, [r2, #16] 2130: f013 0f03 tst.w r3, #3 2134: d1fb bne.n 212e <_timer_start+0xa> } 2136: 4770 bx lr 00002138 <_timer_is_started>: return hri_tc_get_CTRLA_ENABLE_bit(device->hw); 2138: 68c2 ldr r2, [r0, #12] 213a: 6913 ldr r3, [r2, #16] 213c: f013 0f03 tst.w r3, #3 2140: d1fb bne.n 213a <_timer_is_started+0x2> tmp = ((Tc *)hw)->COUNT16.CTRLA.reg; 2142: 6810 ldr r0, [r2, #0] } 2144: f3c0 0040 ubfx r0, r0, #1, #1 2148: 4770 bx lr 0000214a <_tc_get_timer>: } 214a: 2000 movs r0, #0 214c: 4770 bx lr ... 00002150 <_timer_set_irq>: { 2150: b510 push {r4, lr} int8_t i = get_tc_index(hw); 2152: 68c0 ldr r0, [r0, #12] 2154: 4b09 ldr r3, [pc, #36] ; (217c <_timer_set_irq+0x2c>) 2156: 4798 blx r3 2158: 4604 mov r4, r0 ASSERT(ARRAY_SIZE(_tcs)); 215a: f240 120f movw r2, #271 ; 0x10f 215e: 4908 ldr r1, [pc, #32] ; (2180 <_timer_set_irq+0x30>) 2160: 2001 movs r0, #1 2162: 4b08 ldr r3, [pc, #32] ; (2184 <_timer_set_irq+0x34>) 2164: 4798 blx r3 _irq_set(_tcs[i].irq); 2166: eb04 0484 add.w r4, r4, r4, lsl #2 216a: 4b07 ldr r3, [pc, #28] ; (2188 <_timer_set_irq+0x38>) 216c: eb03 0484 add.w r4, r3, r4, lsl #2 2170: f894 0022 ldrb.w r0, [r4, #34] ; 0x22 2174: 4b05 ldr r3, [pc, #20] ; (218c <_timer_set_irq+0x3c>) 2176: 4798 blx r3 2178: bd10 pop {r4, pc} 217a: bf00 nop 217c: 00001f1d .word 0x00001f1d 2180: 0001b664 .word 0x0001b664 2184: 000019d5 .word 0x000019d5 2188: 0001b630 .word 0x0001b630 218c: 00001b35 .word 0x00001b35 00002190 : { 2190: b508 push {r3, lr} tc_interrupt_handler(_tc0_dev); 2192: 4b06 ldr r3, [pc, #24] ; (21ac ) 2194: 6818 ldr r0, [r3, #0] void *const hw = device->hw; 2196: 68c3 ldr r3, [r0, #12] return (((Tc *)hw)->COUNT16.INTFLAG.reg & TC_INTFLAG_OVF) >> TC_INTFLAG_OVF_Pos; 2198: 7a9a ldrb r2, [r3, #10] if (hri_tc_get_interrupt_OVF_bit(hw)) { 219a: f012 0f01 tst.w r2, #1 219e: d100 bne.n 21a2 21a0: bd08 pop {r3, pc} ((Tc *)hw)->COUNT16.INTFLAG.reg = TC_INTFLAG_OVF; 21a2: 2201 movs r2, #1 21a4: 729a strb r2, [r3, #10] device->timer_cb.period_expired(device); 21a6: 6803 ldr r3, [r0, #0] 21a8: 4798 blx r3 } 21aa: e7f9 b.n 21a0 21ac: 200000cc .word 0x200000cc 000021b0
: #include "oracle.h" int main(void) { 21b0: b508 push {r3, lr} oracle_init(); 21b2: 4b02 ldr r3, [pc, #8] ; (21bc ) 21b4: 4798 blx r3 for(;;) { oracle_service(); 21b6: 4c02 ldr r4, [pc, #8] ; (21c0 ) 21b8: 47a0 blx r4 21ba: e7fd b.n 21b8 21bc: 000021c5 .word 0x000021c5 21c0: 00002299 .word 0x00002299 000021c4 : static lv_disp_buf_t disp_buf; static lv_color_t buf[LV_HOR_RES_MAX * 10]; /*Declare a buffer for 10 lines*/ void oracle_init(void) { 21c4: b530 push {r4, r5, lr} 21c6: b08d sub sp, #52 ; 0x34 * Currently the following initialization functions are supported: * - System clock initialization */ static inline void init_mcu(void) { _init_chip(); 21c8: 4b1e ldr r3, [pc, #120] ; (2244 ) 21ca: 4798 blx r3 // init mcu init_mcu(); // uart init p_usart_init(); 21cc: 4b1e ldr r3, [pc, #120] ; (2248 ) 21ce: 4798 blx r3 // i2c init p_i2c_init(); 21d0: 4b1e ldr r3, [pc, #120] ; (224c ) 21d2: 4798 blx r3 // gpio init p_gpio_init(); 21d4: 4b1e ldr r3, [pc, #120] ; (2250 ) 21d6: 4798 blx r3 // time init p_tcc_init(); 21d8: 4b1e ldr r3, [pc, #120] ; (2254 ) 21da: 4798 blx r3 // devices init lv_init(); 21dc: 4b1e ldr r3, [pc, #120] ; (2258 ) 21de: 4798 blx r3 ssd1963_init(); 21e0: 4b1e ldr r3, [pc, #120] ; (225c ) 21e2: 4798 blx r3 lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX * 10); /*Initialize the display buffer*/ 21e4: 4c1e ldr r4, [pc, #120] ; (2260 ) 21e6: f44f 5396 mov.w r3, #4800 ; 0x12c0 21ea: 2200 movs r2, #0 21ec: 491d ldr r1, [pc, #116] ; (2264 ) 21ee: 4620 mov r0, r4 21f0: 4d1d ldr r5, [pc, #116] ; (2268 ) 21f2: 47a8 blx r5 lv_disp_drv_t disp_drv; /*Descriptor of a display driver*/ lv_disp_drv_init(&disp_drv); /*Basic initialization*/ 21f4: a801 add r0, sp, #4 21f6: 4b1d ldr r3, [pc, #116] ; (226c ) 21f8: 4798 blx r3 disp_drv.flush_cb = ssd1963_flush; /*Set your driver function*/ 21fa: 4b1d ldr r3, [pc, #116] ; (2270 ) 21fc: 9304 str r3, [sp, #16] disp_drv.buffer = &disp_buf; /*Assign the buffer to the display*/ 21fe: 9402 str r4, [sp, #8] lv_disp_drv_register(&disp_drv); /*Finally register the driver*/ 2200: a801 add r0, sp, #4 2202: 4b1c ldr r3, [pc, #112] ; (2274 ) 2204: 4798 blx r3 lv_obj_t* scr = lv_disp_get_scr_act(NULL); 2206: 2000 movs r0, #0 2208: 4b1b ldr r3, [pc, #108] ; (2278 ) 220a: 4798 blx r3 220c: 4605 mov r5, r0 lv_obj_t* hornet_image = lv_img_create(scr, NULL); 220e: 2100 movs r1, #0 2210: 4b1a ldr r3, [pc, #104] ; (227c ) 2212: 4798 blx r3 2214: 4604 mov r4, r0 lv_img_set_src(hornet_image, &hornet); 2216: 491a ldr r1, [pc, #104] ; (2280 ) 2218: 4b1a ldr r3, [pc, #104] ; (2284 ) 221a: 4798 blx r3 lv_obj_set_pos(hornet_image, 0, 0); 221c: 2200 movs r2, #0 221e: 4611 mov r1, r2 2220: 4620 mov r0, r4 2222: 4c19 ldr r4, [pc, #100] ; (2288 ) 2224: 47a0 blx r4 lv_obj_t* random_text = lv_label_create(scr, NULL); 2226: 2100 movs r1, #0 2228: 4628 mov r0, r5 222a: 4b18 ldr r3, [pc, #96] ; (228c ) 222c: 4798 blx r3 222e: 4605 mov r5, r0 lv_obj_set_pos(random_text, 90, 35); 2230: 2223 movs r2, #35 ; 0x23 2232: 215a movs r1, #90 ; 0x5a 2234: 47a0 blx r4 lv_label_set_text(random_text, "Hello World"); 2236: 4916 ldr r1, [pc, #88] ; (2290 ) 2238: 4628 mov r0, r5 223a: 4b16 ldr r3, [pc, #88] ; (2294 ) 223c: 4798 blx r3 } 223e: b00d add sp, #52 ; 0x34 2240: bd30 pop {r4, r5, pc} 2242: bf00 nop 2244: 00001b99 .word 0x00001b99 2248: 00001425 .word 0x00001425 224c: 00001385 .word 0x00001385 2250: 00001251 .word 0x00001251 2254: 000013ad .word 0x000013ad 2258: 00002869 .word 0x00002869 225c: 000002d1 .word 0x000002d1 2260: 20002650 .word 0x20002650 2264: 200000d0 .word 0x200000d0 2268: 00010d71 .word 0x00010d71 226c: 00010d11 .word 0x00010d11 2270: 00000ca5 .word 0x00000ca5 2274: 00010d91 .word 0x00010d91 2278: 0000234d .word 0x0000234d 227c: 0001986d .word 0x0001986d 2280: 0001b678 .word 0x0001b678 2284: 00019611 .word 0x00019611 2288: 0000343d .word 0x0000343d 228c: 0001ab05 .word 0x0001ab05 2290: 00023be0 .word 0x00023be0 2294: 0001a805 .word 0x0001a805 00002298 : void oracle_service(void) { 2298: b508 push {r3, lr} delay_ms(1); 229a: 2001 movs r0, #1 229c: 4b02 ldr r3, [pc, #8] ; (22a8 ) 229e: 4798 blx r3 lv_task_handler(); 22a0: 4b02 ldr r3, [pc, #8] ; (22ac ) 22a2: 4798 blx r3 22a4: bd08 pop {r3, pc} 22a6: bf00 nop 22a8: 00001521 .word 0x00001521 22ac: 000137cd .word 0x000137cd 000022b0 : bool lv_debug_check_null(const void * p) { if(p) return true; return false; } 22b0: 3000 adds r0, #0 22b2: bf18 it ne 22b4: 2001 movne r0, #1 22b6: 4770 bx lr 000022b8 : LV_LOG_WARN("lv_debug_check_str: string is longer than LV_DEBUG_STR_MAX_LENGTH"); return false; } void lv_debug_log_error(const char * msg, uint64_t value) { 22b8: b5f0 push {r4, r5, r6, r7, lr} 22ba: b0c3 sub sp, #268 ; 0x10c 22bc: 4605 mov r5, r0 22be: 4614 mov r4, r2 static const char hex[] = "0123456789ABCDEF"; size_t msg_len = strlen(msg); 22c0: 4b1c ldr r3, [pc, #112] ; (2334 ) 22c2: 4798 blx r3 uint32_t value_len = sizeof(unsigned long int); if(msg_len < 230) { 22c4: 28e5 cmp r0, #229 ; 0xe5 22c6: d82c bhi.n 2322 22c8: 4606 mov r6, r0 char buf[255]; char * bufp = buf; /*Add the function name*/ _lv_memcpy(bufp, msg, msg_len); 22ca: af02 add r7, sp, #8 22cc: 4602 mov r2, r0 22ce: 4629 mov r1, r5 22d0: 4638 mov r0, r7 22d2: 4b19 ldr r3, [pc, #100] ; (2338 ) 22d4: 4798 blx r3 bufp += msg_len; 22d6: 19bd adds r5, r7, r6 /*Add value in hey*/ *bufp = ' '; 22d8: 2320 movs r3, #32 22da: 55bb strb r3, [r7, r6] bufp ++; *bufp = '('; 22dc: 2328 movs r3, #40 ; 0x28 22de: 706b strb r3, [r5, #1] bufp ++; *bufp = '0'; 22e0: 2330 movs r3, #48 ; 0x30 22e2: 70ab strb r3, [r5, #2] bufp ++; *bufp = 'x'; 22e4: 2378 movs r3, #120 ; 0x78 22e6: 70eb strb r3, [r5, #3] bufp ++; 22e8: 1d29 adds r1, r5, #4 22ea: 221c movs r2, #28 int8_t i; for(i = value_len * 2 - 1; i >= 0; i--) { uint8_t x = (unsigned long int)((unsigned long int)value >> (i * 4)) & 0xF; *bufp = hex[x]; 22ec: 4813 ldr r0, [pc, #76] ; (233c ) uint8_t x = (unsigned long int)((unsigned long int)value >> (i * 4)) & 0xF; 22ee: fa24 f302 lsr.w r3, r4, r2 *bufp = hex[x]; 22f2: f003 030f and.w r3, r3, #15 22f6: 4403 add r3, r0 22f8: 7d1b ldrb r3, [r3, #20] 22fa: f801 3b01 strb.w r3, [r1], #1 22fe: 3a04 subs r2, #4 for(i = value_len * 2 - 1; i >= 0; i--) { 2300: f112 0f04 cmn.w r2, #4 2304: d1f3 bne.n 22ee bufp++; } *bufp = ')'; 2306: 2329 movs r3, #41 ; 0x29 2308: 732b strb r3, [r5, #12] bufp ++; *bufp = '\0'; 230a: 2300 movs r3, #0 230c: 736b strb r3, [r5, #13] LV_LOG_ERROR(buf); 230e: ab02 add r3, sp, #8 2310: 9300 str r3, [sp, #0] 2312: 4b0b ldr r3, [pc, #44] ; (2340 ) 2314: 22bc movs r2, #188 ; 0xbc 2316: 490b ldr r1, [pc, #44] ; (2344 ) 2318: 2003 movs r0, #3 231a: 4c0b ldr r4, [pc, #44] ; (2348 ) 231c: 47a0 blx r4 } else { LV_LOG_ERROR(msg); } } 231e: b043 add sp, #268 ; 0x10c 2320: bdf0 pop {r4, r5, r6, r7, pc} LV_LOG_ERROR(msg); 2322: 9500 str r5, [sp, #0] 2324: 4b06 ldr r3, [pc, #24] ; (2340 ) 2326: 22bf movs r2, #191 ; 0xbf 2328: 4906 ldr r1, [pc, #24] ; (2344 ) 232a: 2003 movs r0, #3 232c: 4c06 ldr r4, [pc, #24] ; (2348 ) 232e: 47a0 blx r4 } 2330: e7f5 b.n 231e 2332: bf00 nop 2334: 0001b51f .word 0x0001b51f 2338: 00012655 .word 0x00012655 233c: 00023bec .word 0x00023bec 2340: 00023c14 .word 0x00023c14 2344: 00023c28 .word 0x00023c28 2348: 0001225d .word 0x0001225d 0000234c : * screen) * @return pointer to the active screen object (loaded by 'lv_scr_load()') */ lv_obj_t * lv_disp_get_scr_act(lv_disp_t * disp) { if(!disp) disp = lv_disp_get_default(); 234c: b108 cbz r0, 2352 if(!disp) { LV_LOG_WARN("lv_scr_act: no display registered to get its act. screen"); return NULL; } return disp->act_scr; 234e: 6bc0 ldr r0, [r0, #60] ; 0x3c 2350: 4770 bx lr { 2352: b510 push {r4, lr} 2354: b082 sub sp, #8 if(!disp) disp = lv_disp_get_default(); 2356: 4b08 ldr r3, [pc, #32] ; (2378 ) 2358: 4798 blx r3 if(!disp) { 235a: b110 cbz r0, 2362 return disp->act_scr; 235c: 6bc0 ldr r0, [r0, #60] ; 0x3c } 235e: b002 add sp, #8 2360: bd10 pop {r4, pc} LV_LOG_WARN("lv_scr_act: no display registered to get its act. screen"); 2362: 4b06 ldr r3, [pc, #24] ; (237c ) 2364: 9300 str r3, [sp, #0] 2366: 4b06 ldr r3, [pc, #24] ; (2380 ) 2368: 222e movs r2, #46 ; 0x2e 236a: 4906 ldr r1, [pc, #24] ; (2384 ) 236c: 2002 movs r0, #2 236e: 4c06 ldr r4, [pc, #24] ; (2388 ) 2370: 47a0 blx r4 return NULL; 2372: 2000 movs r0, #0 2374: e7f3 b.n 235e 2376: bf00 nop 2378: 00010ee1 .word 0x00010ee1 237c: 00023e04 .word 0x00023e04 2380: 00023d30 .word 0x00023d30 2384: 00023dd8 .word 0x00023dd8 2388: 0001225d .word 0x0001225d 0000238c : * @param disp pointer to display which top layer should be get. (NULL to use the default screen) * @return pointer to the top layer object (transparent screen sized lv_obj) */ lv_obj_t * lv_disp_get_layer_top(lv_disp_t * disp) { if(!disp) disp = lv_disp_get_default(); 238c: b108 cbz r0, 2392 if(!disp) { LV_LOG_WARN("lv_layer_top: no display registered to get its top layer"); return NULL; } return disp->top_layer; 238e: 6c00 ldr r0, [r0, #64] ; 0x40 2390: 4770 bx lr { 2392: b510 push {r4, lr} 2394: b082 sub sp, #8 if(!disp) disp = lv_disp_get_default(); 2396: 4b08 ldr r3, [pc, #32] ; (23b8 ) 2398: 4798 blx r3 if(!disp) { 239a: b110 cbz r0, 23a2 return disp->top_layer; 239c: 6c00 ldr r0, [r0, #64] ; 0x40 } 239e: b002 add sp, #8 23a0: bd10 pop {r4, pc} LV_LOG_WARN("lv_layer_top: no display registered to get its top layer"); 23a2: 4b06 ldr r3, [pc, #24] ; (23bc ) 23a4: 9300 str r3, [sp, #0] 23a6: 4b06 ldr r3, [pc, #24] ; (23c0 ) 23a8: 224b movs r2, #75 ; 0x4b 23aa: 4906 ldr r1, [pc, #24] ; (23c4 ) 23ac: 2002 movs r0, #2 23ae: 4c06 ldr r4, [pc, #24] ; (23c8 ) 23b0: 47a0 blx r4 return NULL; 23b2: 2000 movs r0, #0 23b4: e7f3 b.n 239e 23b6: bf00 nop 23b8: 00010ee1 .word 0x00010ee1 23bc: 00023e40 .word 0x00023e40 23c0: 00023d44 .word 0x00023d44 23c4: 00023dd8 .word 0x00023dd8 23c8: 0001225d .word 0x0001225d 000023cc : * @param disp pointer to display which sys. layer should be get. (NULL to use the default screen) * @return pointer to the sys layer object (transparent screen sized lv_obj) */ lv_obj_t * lv_disp_get_layer_sys(lv_disp_t * disp) { if(!disp) disp = lv_disp_get_default(); 23cc: b108 cbz r0, 23d2 if(!disp) { LV_LOG_WARN("lv_layer_sys: no display registered to get its sys. layer"); return NULL; } return disp->sys_layer; 23ce: 6c40 ldr r0, [r0, #68] ; 0x44 23d0: 4770 bx lr { 23d2: b510 push {r4, lr} 23d4: b082 sub sp, #8 if(!disp) disp = lv_disp_get_default(); 23d6: 4b08 ldr r3, [pc, #32] ; (23f8 ) 23d8: 4798 blx r3 if(!disp) { 23da: b110 cbz r0, 23e2 return disp->sys_layer; 23dc: 6c40 ldr r0, [r0, #68] ; 0x44 } 23de: b002 add sp, #8 23e0: bd10 pop {r4, pc} LV_LOG_WARN("lv_layer_sys: no display registered to get its sys. layer"); 23e2: 4b06 ldr r3, [pc, #24] ; (23fc ) 23e4: 9300 str r3, [sp, #0] 23e6: 4b06 ldr r3, [pc, #24] ; (2400 ) 23e8: 225c movs r2, #92 ; 0x5c 23ea: 4906 ldr r1, [pc, #24] ; (2404 ) 23ec: 2002 movs r0, #2 23ee: 4c06 ldr r4, [pc, #24] ; (2408 ) 23f0: 47a0 blx r4 return NULL; 23f2: 2000 movs r0, #0 23f4: e7f3 b.n 23de 23f6: bf00 nop 23f8: 00010ee1 .word 0x00010ee1 23fc: 00023e7c .word 0x00023e7c 2400: 00023d5c .word 0x00023d5c 2404: 00023dd8 .word 0x00023dd8 2408: 0001225d .word 0x0001225d 0000240c : static void obj_to_foreground(lv_obj_t * obj) { /*Search for 'top' attribute*/ lv_obj_t * i = obj; lv_obj_t * last_top = NULL; while(i != NULL) { 240c: b1a0 cbz r0, 2438 { 240e: b538 push {r3, r4, r5, lr} 2410: 4603 mov r3, r0 while(i != NULL) { 2412: 2400 movs r4, #0 if(i->top != 0) last_top = i; i = lv_obj_get_parent(i); 2414: 4d09 ldr r5, [pc, #36] ; (243c ) if(i->top != 0) last_top = i; 2416: f893 2034 ldrb.w r2, [r3, #52] ; 0x34 241a: f002 0220 and.w r2, r2, #32 241e: 2a00 cmp r2, #0 2420: bf18 it ne 2422: 461c movne r4, r3 i = lv_obj_get_parent(i); 2424: 4618 mov r0, r3 2426: 47a8 blx r5 while(i != NULL) { 2428: 4603 mov r3, r0 242a: 2800 cmp r0, #0 242c: d1f3 bne.n 2416 } if(last_top != NULL) { 242e: b114 cbz r4, 2436 /*Move the last_top object to the foreground*/ lv_obj_move_foreground(last_top); 2430: 4620 mov r0, r4 2432: 4b03 ldr r3, [pc, #12] ; (2440 ) 2434: 4798 blx r3 2436: bd38 pop {r3, r4, r5, pc} 2438: 4770 bx lr 243a: bf00 nop 243c: 00002c7d .word 0x00002c7d 2440: 000033b5 .word 0x000033b5 00002444 : { 2444: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} if(group->frozen) return; 2448: 7d03 ldrb r3, [r0, #20] 244a: f013 0f01 tst.w r3, #1 244e: d12a bne.n 24a6 2450: 4617 mov r7, r2 2452: 468a mov sl, r1 2454: 4606 mov r6, r0 lv_obj_t ** obj_next = group->obj_focus; 2456: 68c4 ldr r4, [r0, #12] bool can_begin = true; 2458: f04f 0901 mov.w r9, #1 lv_obj_t ** obj_sentinel = NULL; 245c: 2500 movs r5, #0 if(!lv_obj_get_hidden(*obj_next)) break; 245e: f8df 80c4 ldr.w r8, [pc, #196] ; 2524 can_begin = false; 2462: 46ab mov fp, r5 2464: e04a b.n 24fc if(group->wrap || obj_sentinel == NULL) { 2466: 7d33 ldrb r3, [r6, #20] 2468: f013 0f10 tst.w r3, #16 246c: d100 bne.n 2470 246e: b9d5 cbnz r5, 24a6 if(!can_begin) return; 2470: f1b9 0f00 cmp.w r9, #0 2474: d017 beq.n 24a6 obj_next = begin(&group->obj_ll); 2476: 4630 mov r0, r6 2478: 47d0 blx sl 247a: 4604 mov r4, r0 if(obj_sentinel == NULL) { 247c: 2d00 cmp r5, #0 247e: d035 beq.n 24ec can_begin = false; 2480: 46d9 mov r9, fp 2482: e046 b.n 2512 if(obj_next == group->obj_focus) return; /*There's only one visible object and it's already focused*/ 2484: 68f3 ldr r3, [r6, #12] 2486: 42a3 cmp r3, r4 2488: d00d beq.n 24a6 if(group->obj_focus) { 248a: b193 cbz r3, 24b2 (*group->obj_focus)->signal_cb(*group->obj_focus, LV_SIGNAL_DEFOCUS, NULL); 248c: 6818 ldr r0, [r3, #0] 248e: 69c3 ldr r3, [r0, #28] 2490: 2200 movs r2, #0 2492: 2117 movs r1, #23 2494: 4798 blx r3 lv_res_t res = lv_event_send(*group->obj_focus, LV_EVENT_DEFOCUSED, NULL); 2496: 68f3 ldr r3, [r6, #12] 2498: 2200 movs r2, #0 249a: 210e movs r1, #14 249c: 6818 ldr r0, [r3, #0] 249e: 4b1e ldr r3, [pc, #120] ; (2518 ) 24a0: 4798 blx r3 if(res != LV_RES_OK) return; 24a2: 2801 cmp r0, #1 24a4: d001 beq.n 24aa 24a6: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} lv_obj_invalidate(*group->obj_focus); 24aa: 68f3 ldr r3, [r6, #12] 24ac: 6818 ldr r0, [r3, #0] 24ae: 4b1b ldr r3, [pc, #108] ; (251c ) 24b0: 4798 blx r3 group->obj_focus = obj_next; 24b2: 60f4 str r4, [r6, #12] (*group->obj_focus)->signal_cb(*group->obj_focus, LV_SIGNAL_FOCUS, NULL); 24b4: 6820 ldr r0, [r4, #0] 24b6: 69c3 ldr r3, [r0, #28] 24b8: 2200 movs r2, #0 24ba: 2116 movs r1, #22 24bc: 4798 blx r3 lv_res_t res = lv_event_send(*group->obj_focus, LV_EVENT_FOCUSED, NULL); 24be: 68f3 ldr r3, [r6, #12] 24c0: 2200 movs r2, #0 24c2: 210d movs r1, #13 24c4: 6818 ldr r0, [r3, #0] 24c6: 4b14 ldr r3, [pc, #80] ; (2518 ) 24c8: 4798 blx r3 if(res != LV_RES_OK) return; 24ca: 2801 cmp r0, #1 24cc: d1eb bne.n 24a6 obj_to_foreground(*group->obj_focus); 24ce: 68f3 ldr r3, [r6, #12] 24d0: 6818 ldr r0, [r3, #0] 24d2: 4b13 ldr r3, [pc, #76] ; (2520 ) 24d4: 4798 blx r3 lv_obj_invalidate(*group->obj_focus); 24d6: 68f3 ldr r3, [r6, #12] 24d8: 6818 ldr r0, [r3, #0] 24da: 4b10 ldr r3, [pc, #64] ; (251c ) 24dc: 4798 blx r3 if(group->focus_cb) group->focus_cb(group); 24de: 6933 ldr r3, [r6, #16] 24e0: 2b00 cmp r3, #0 24e2: d0e0 beq.n 24a6 24e4: 4630 mov r0, r6 24e6: 4798 blx r3 24e8: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} if(obj_sentinel == NULL) return; /*Group is empty*/ 24ec: 2800 cmp r0, #0 24ee: d0da beq.n 24a6 obj_next = begin(&group->obj_ll); 24f0: 4605 mov r5, r0 can_begin = false; 24f2: 46d9 mov r9, fp if(!lv_obj_get_hidden(*obj_next)) break; 24f4: 6820 ldr r0, [r4, #0] 24f6: 47c0 blx r8 24f8: 2800 cmp r0, #0 24fa: d0c3 beq.n 2484 if(obj_next == NULL) { 24fc: 2c00 cmp r4, #0 24fe: d0b2 beq.n 2466 2500: 2d00 cmp r5, #0 2502: bf08 it eq 2504: 4625 moveq r5, r4 obj_next = move(&group->obj_ll, obj_next); 2506: 4621 mov r1, r4 2508: 4630 mov r0, r6 250a: 47b8 blx r7 250c: 4604 mov r4, r0 if(obj_next == obj_sentinel) return; 250e: 42a8 cmp r0, r5 2510: d0c9 beq.n 24a6 if(obj_next == NULL) continue; 2512: 2c00 cmp r4, #0 2514: d1ee bne.n 24f4 2516: e7f1 b.n 24fc 2518: 00002acd .word 0x00002acd 251c: 00003321 .word 0x00003321 2520: 0000240d .word 0x0000240d 2524: 000031a5 .word 0x000031a5 00002528 <_lv_group_init>: { 2528: b508 push {r3, lr} _lv_ll_init(&LV_GC_ROOT(_lv_group_ll), sizeof(lv_group_t)); 252a: 2118 movs r1, #24 252c: 4801 ldr r0, [pc, #4] ; (2534 <_lv_group_init+0xc>) 252e: 4b02 ldr r3, [pc, #8] ; (2538 <_lv_group_init+0x10>) 2530: 4798 blx r3 2532: bd08 pop {r3, pc} 2534: 20006dec .word 0x20006dec 2538: 00011ef9 .word 0x00011ef9 0000253c : { 253c: b508 push {r3, lr} focus_next_core(group, _lv_ll_get_head, _lv_ll_get_next); 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: 00011fbd .word 0x00011fbd 254c: 00011fa9 .word 0x00011fa9 2550: 00002445 .word 0x00002445 00002554 : { 2554: b508 push {r3, lr} focus_next_core(group, _lv_ll_get_tail, _lv_ll_get_prev); 2556: 4a02 ldr r2, [pc, #8] ; (2560 ) 2558: 4902 ldr r1, [pc, #8] ; (2564 ) 255a: 4b03 ldr r3, [pc, #12] ; (2568 ) 255c: 4798 blx r3 255e: bd08 pop {r3, pc} 2560: 00011fe9 .word 0x00011fe9 2564: 00011fb3 .word 0x00011fb3 2568: 00002445 .word 0x00002445 0000256c : { 256c: b538 push {r3, r4, r5, lr} 256e: 4604 mov r4, r0 uint8_t temp_wrap = g->wrap; 2570: 7d03 ldrb r3, [r0, #20] 2572: f3c3 1500 ubfx r5, r3, #4, #1 g->wrap = 1; 2576: f043 0310 orr.w r3, r3, #16 257a: 7503 strb r3, [r0, #20] if(g->refocus_policy == LV_GROUP_REFOCUS_POLICY_NEXT) 257c: f013 0f08 tst.w r3, #8 lv_group_focus_next(g); 2580: bf0c ite eq 2582: 4b04 ldreq r3, [pc, #16] ; (2594 ) lv_group_focus_prev(g); 2584: 4b04 ldrne r3, [pc, #16] ; (2598 ) 2586: 4798 blx r3 g->wrap = temp_wrap; 2588: 7d23 ldrb r3, [r4, #20] 258a: f365 1304 bfi r3, r5, #4, #1 258e: 7523 strb r3, [r4, #20] 2590: bd38 pop {r3, r4, r5, pc} 2592: bf00 nop 2594: 0000253d .word 0x0000253d 2598: 00002555 .word 0x00002555 0000259c : if(group == NULL) return; 259c: 2800 cmp r0, #0 259e: d04f beq.n 2640 { 25a0: b5f0 push {r4, r5, r6, r7, lr} 25a2: b083 sub sp, #12 25a4: 4605 mov r5, r0 25a6: 460c mov r4, r1 _LV_LL_READ(group->obj_ll, obj_i) { 25a8: 4607 mov r7, r0 25aa: 4b26 ldr r3, [pc, #152] ; (2644 ) 25ac: 4798 blx r3 25ae: 4601 mov r1, r0 25b0: b1a0 cbz r0, 25dc if((*obj_i) == obj) { 25b2: 6803 ldr r3, [r0, #0] 25b4: 429c cmp r4, r3 25b6: d007 beq.n 25c8 _LV_LL_READ(group->obj_ll, obj_i) { 25b8: 4e23 ldr r6, [pc, #140] ; (2648 ) 25ba: 4638 mov r0, r7 25bc: 47b0 blx r6 25be: 4601 mov r1, r0 25c0: b160 cbz r0, 25dc if((*obj_i) == obj) { 25c2: 680b ldr r3, [r1, #0] 25c4: 42a3 cmp r3, r4 25c6: d1f8 bne.n 25ba LV_LOG_INFO("lv_group_add_obj: the object is already added to this group"); 25c8: 4b20 ldr r3, [pc, #128] ; (264c ) 25ca: 9300 str r3, [sp, #0] 25cc: 4b20 ldr r3, [pc, #128] ; (2650 ) 25ce: 2275 movs r2, #117 ; 0x75 25d0: 4920 ldr r1, [pc, #128] ; (2654 ) 25d2: 2001 movs r0, #1 25d4: 4c20 ldr r4, [pc, #128] ; (2658 ) 25d6: 47a0 blx r4 } 25d8: b003 add sp, #12 25da: bdf0 pop {r4, r5, r6, r7, pc} if(obj->group_p) { 25dc: 6ba3 ldr r3, [r4, #56] ; 0x38 25de: b173 cbz r3, 25fe if(lv_obj_is_focused(obj)) { 25e0: 4620 mov r0, r4 25e2: 4b1e ldr r3, [pc, #120] ; (265c ) 25e4: 4798 blx r3 25e6: b150 cbz r0, 25fe lv_group_refocus(obj->group_p); 25e8: 6ba0 ldr r0, [r4, #56] ; 0x38 25ea: 4b1d ldr r3, [pc, #116] ; (2660 ) 25ec: 4798 blx r3 LV_LOG_INFO("lv_group_add_obj: assign object to an other group"); 25ee: 4b1d ldr r3, [pc, #116] ; (2664 ) 25f0: 9300 str r3, [sp, #0] 25f2: 4b17 ldr r3, [pc, #92] ; (2650 ) 25f4: 227f movs r2, #127 ; 0x7f 25f6: 4917 ldr r1, [pc, #92] ; (2654 ) 25f8: 2001 movs r0, #1 25fa: 4e17 ldr r6, [pc, #92] ; (2658 ) 25fc: 47b0 blx r6 obj->group_p = group; 25fe: 63a5 str r5, [r4, #56] ; 0x38 lv_obj_t ** next = _lv_ll_ins_tail(&group->obj_ll); 2600: 4628 mov r0, r5 2602: 4b19 ldr r3, [pc, #100] ; (2668 ) 2604: 4798 blx r3 2606: 4606 mov r6, r0 LV_ASSERT_MEM(next); 2608: 4b18 ldr r3, [pc, #96] ; (266c ) 260a: 4798 blx r3 260c: b158 cbz r0, 2626 if(next == NULL) return; 260e: 2e00 cmp r6, #0 2610: d0e2 beq.n 25d8 *next = obj; 2612: 6034 str r4, [r6, #0] if(_lv_ll_get_head(&group->obj_ll) == next) { 2614: 4628 mov r0, r5 2616: 4b0b ldr r3, [pc, #44] ; (2644 ) 2618: 4798 blx r3 261a: 4286 cmp r6, r0 261c: d1dc bne.n 25d8 lv_group_refocus(group); 261e: 4628 mov r0, r5 2620: 4b0f ldr r3, [pc, #60] ; (2660 ) 2622: 4798 blx r3 2624: e7d8 b.n 25d8 LV_ASSERT_MEM(next); 2626: 4b0a ldr r3, [pc, #40] ; (2650 ) 2628: 9300 str r3, [sp, #0] 262a: 2285 movs r2, #133 ; 0x85 262c: 4909 ldr r1, [pc, #36] ; (2654 ) 262e: 2003 movs r0, #3 2630: 4c09 ldr r4, [pc, #36] ; (2658 ) 2632: 47a0 blx r4 2634: 4632 mov r2, r6 2636: 2300 movs r3, #0 2638: 480d ldr r0, [pc, #52] ; (2670 ) 263a: 490e ldr r1, [pc, #56] ; (2674 ) 263c: 4788 blx r1 263e: e7fe b.n 263e 2640: 4770 bx lr 2642: bf00 nop 2644: 00011fa9 .word 0x00011fa9 2648: 00011fbd .word 0x00011fbd 264c: 00023fe8 .word 0x00023fe8 2650: 00023f98 .word 0x00023f98 2654: 00023fac .word 0x00023fac 2658: 0001225d .word 0x0001225d 265c: 00004ff9 .word 0x00004ff9 2660: 0000256d .word 0x0000256d 2664: 00024024 .word 0x00024024 2668: 00011f5d .word 0x00011f5d 266c: 000022b1 .word 0x000022b1 2670: 00023fd8 .word 0x00023fd8 2674: 000022b9 .word 0x000022b9 00002678 : { 2678: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} lv_group_t * g = obj->group_p; 267c: f8d0 8038 ldr.w r8, [r0, #56] ; 0x38 if(g == NULL) return; 2680: f1b8 0f00 cmp.w r8, #0 2684: d051 beq.n 272a if(g->obj_focus == NULL) return; /*Just to be sure (Not possible if there is at least one object in the group)*/ 2686: f8d8 300c ldr.w r3, [r8, #12] 268a: 2b00 cmp r3, #0 268c: d04d beq.n 272a 268e: 4605 mov r5, r0 if(*g->obj_focus == obj) { 2690: 681b ldr r3, [r3, #0] 2692: 4298 cmp r0, r3 2694: d01e beq.n 26d4 _LV_LL_READ(g->obj_ll, i) { 2696: 4646 mov r6, r8 2698: 4640 mov r0, r8 269a: 4b25 ldr r3, [pc, #148] ; (2730 ) 269c: 4798 blx r3 269e: 4604 mov r4, r0 26a0: 2800 cmp r0, #0 26a2: d042 beq.n 272a if(*i == obj) { 26a4: 6803 ldr r3, [r0, #0] 26a6: 429d cmp r5, r3 26a8: d009 beq.n 26be _LV_LL_READ(g->obj_ll, i) { 26aa: 4f22 ldr r7, [pc, #136] ; (2734 ) 26ac: 4621 mov r1, r4 26ae: 4630 mov r0, r6 26b0: 47b8 blx r7 26b2: 4604 mov r4, r0 26b4: 2800 cmp r0, #0 26b6: d038 beq.n 272a if(*i == obj) { 26b8: 6823 ldr r3, [r4, #0] 26ba: 429d cmp r5, r3 26bc: d1f6 bne.n 26ac _lv_ll_remove(&g->obj_ll, i); 26be: 4621 mov r1, r4 26c0: 4640 mov r0, r8 26c2: 4b1d ldr r3, [pc, #116] ; (2738 ) 26c4: 4798 blx r3 lv_mem_free(i); 26c6: 4620 mov r0, r4 26c8: 4b1c ldr r3, [pc, #112] ; (273c ) 26ca: 4798 blx r3 obj->group_p = NULL; 26cc: 2300 movs r3, #0 26ce: 63ab str r3, [r5, #56] ; 0x38 break; 26d0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(g->frozen) g->frozen = 0; 26d4: f898 3014 ldrb.w r3, [r8, #20] 26d8: f013 0f01 tst.w r3, #1 26dc: d005 beq.n 26ea 26de: f898 3014 ldrb.w r3, [r8, #20] 26e2: f36f 0300 bfc r3, #0, #1 26e6: f888 3014 strb.w r3, [r8, #20] if(_lv_ll_get_head(&g->obj_ll) == g->obj_focus && _lv_ll_get_tail(&g->obj_ll) == g->obj_focus) { 26ea: 4640 mov r0, r8 26ec: 4b10 ldr r3, [pc, #64] ; (2730 ) 26ee: 4798 blx r3 26f0: f8d8 300c ldr.w r3, [r8, #12] 26f4: 4283 cmp r3, r0 26f6: d00b beq.n 2710 lv_group_refocus(g); 26f8: 4640 mov r0, r8 26fa: 4b11 ldr r3, [pc, #68] ; (2740 ) 26fc: 4798 blx r3 if(*g->obj_focus == obj) { 26fe: f8d8 300c ldr.w r3, [r8, #12] 2702: 681b ldr r3, [r3, #0] 2704: 429d cmp r5, r3 g->obj_focus = NULL; 2706: bf04 itt eq 2708: 2300 moveq r3, #0 270a: f8c8 300c streq.w r3, [r8, #12] 270e: e7c2 b.n 2696 if(_lv_ll_get_head(&g->obj_ll) == g->obj_focus && _lv_ll_get_tail(&g->obj_ll) == g->obj_focus) { 2710: 4640 mov r0, r8 2712: 4b0c ldr r3, [pc, #48] ; (2744 ) 2714: 4798 blx r3 2716: f8d8 300c ldr.w r3, [r8, #12] 271a: 4298 cmp r0, r3 271c: d1ec bne.n 26f8 (*g->obj_focus)->signal_cb(*g->obj_focus, LV_SIGNAL_DEFOCUS, NULL); 271e: 6800 ldr r0, [r0, #0] 2720: 69c3 ldr r3, [r0, #28] 2722: 2200 movs r2, #0 2724: 2117 movs r1, #23 2726: 4798 blx r3 2728: e7e9 b.n 26fe 272a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 272e: bf00 nop 2730: 00011fa9 .word 0x00011fa9 2734: 00011fbd .word 0x00011fbd 2738: 00012095 .word 0x00012095 273c: 000124c5 .word 0x000124c5 2740: 0000256d .word 0x0000256d 2744: 00011fb3 .word 0x00011fb3 00002748 : if(!group) return NULL; 2748: b118 cbz r0, 2752 if(group->obj_focus == NULL) return NULL; 274a: 68c3 ldr r3, [r0, #12] 274c: b11b cbz r3, 2756 return *group->obj_focus; 274e: 6818 ldr r0, [r3, #0] 2750: 4770 bx lr if(!group) return NULL; 2752: 2000 movs r0, #0 2754: 4770 bx lr if(group->obj_focus == NULL) return NULL; 2756: 2000 movs r0, #0 } 2758: 4770 bx lr 0000275a : if(!group) return false; 275a: b118 cbz r0, 2764 return group->editing ? true : false; 275c: 7d00 ldrb r0, [r0, #20] 275e: f3c0 0040 ubfx r0, r0, #1, #1 2762: 4770 bx lr if(!group) return false; 2764: 2000 movs r0, #0 } 2766: 4770 bx lr 00002768 : * right now */ lv_indev_t * lv_indev_get_act(void) { return indev_act; } 2768: 4b01 ldr r3, [pc, #4] ; (2770 ) 276a: 6858 ldr r0, [r3, #4] 276c: 4770 bx lr 276e: bf00 nop 2770: 20002674 .word 0x20002674 00002774 : * Reset one or all input devices * @param indev pointer to an input device to reset or NULL to reset all of them * @param obj pointer to an object which triggers the reset. */ void lv_indev_reset(lv_indev_t * indev, lv_obj_t * obj) { 2774: b5f8 push {r3, r4, r5, r6, r7, lr} if(indev) { 2776: b1b0 cbz r0, 27a6 2778: 4603 mov r3, r0 indev->proc.reset_query = 1; 277a: f890 2050 ldrb.w r2, [r0, #80] ; 0x50 277e: f042 0202 orr.w r2, r2, #2 2782: f880 2050 strb.w r2, [r0, #80] ; 0x50 if(indev_act == indev) indev_obj_act = NULL; 2786: 4a18 ldr r2, [pc, #96] ; (27e8 ) 2788: 6852 ldr r2, [r2, #4] 278a: 4290 cmp r0, r2 278c: d004 beq.n 2798 if(obj == NULL || indev->proc.types.pointer.last_pressed == obj) { 278e: b139 cbz r1, 27a0 2790: 6bda ldr r2, [r3, #60] ; 0x3c 2792: 4291 cmp r1, r2 2794: d004 beq.n 27a0 2796: bdf8 pop {r3, r4, r5, r6, r7, pc} if(indev_act == indev) indev_obj_act = NULL; 2798: 2000 movs r0, #0 279a: 4a13 ldr r2, [pc, #76] ; (27e8 ) 279c: 6010 str r0, [r2, #0] 279e: e7f6 b.n 278e indev->proc.types.pointer.last_pressed = NULL; 27a0: 2200 movs r2, #0 27a2: 63da str r2, [r3, #60] ; 0x3c 27a4: bdf8 pop {r3, r4, r5, r6, r7, pc} 27a6: 460c mov r4, r1 } } else { lv_indev_t * i = lv_indev_get_next(NULL); 27a8: 2000 movs r0, #0 27aa: 4b10 ldr r3, [pc, #64] ; (27ec ) 27ac: 4798 blx r3 while(i) { 27ae: 4603 mov r3, r0 27b0: 2800 cmp r0, #0 27b2: d0f0 beq.n 2796 i->proc.reset_query = 1; if(indev_act == i) indev_obj_act = NULL; 27b4: 4d0c ldr r5, [pc, #48] ; (27e8 ) 27b6: 2700 movs r7, #0 if(obj == NULL || i->proc.types.pointer.last_pressed == obj) { i->proc.types.pointer.last_pressed = NULL; } i = lv_indev_get_next(i); 27b8: 4e0c ldr r6, [pc, #48] ; (27ec ) 27ba: e005 b.n 27c8 i->proc.types.pointer.last_pressed = NULL; 27bc: 63df str r7, [r3, #60] ; 0x3c i = lv_indev_get_next(i); 27be: 4618 mov r0, r3 27c0: 47b0 blx r6 while(i) { 27c2: 4603 mov r3, r0 27c4: 2800 cmp r0, #0 27c6: d0e6 beq.n 2796 i->proc.reset_query = 1; 27c8: f893 2050 ldrb.w r2, [r3, #80] ; 0x50 27cc: f042 0202 orr.w r2, r2, #2 27d0: f883 2050 strb.w r2, [r3, #80] ; 0x50 if(indev_act == i) indev_obj_act = NULL; 27d4: 686a ldr r2, [r5, #4] 27d6: 429a cmp r2, r3 27d8: bf08 it eq 27da: 602f streq r7, [r5, #0] if(obj == NULL || i->proc.types.pointer.last_pressed == obj) { 27dc: 2c00 cmp r4, #0 27de: d0ed beq.n 27bc 27e0: 6bda ldr r2, [r3, #60] ; 0x3c 27e2: 4294 cmp r4, r2 27e4: d1eb bne.n 27be 27e6: e7e9 b.n 27bc 27e8: 20002674 .word 0x20002674 27ec: 00011021 .word 0x00011021 000027f0 <_lv_indev_init>: { 27f0: b508 push {r3, lr} lv_indev_reset(NULL, NULL); /*Reset all input devices*/ 27f2: 2100 movs r1, #0 27f4: 4608 mov r0, r1 27f6: 4b01 ldr r3, [pc, #4] ; (27fc <_lv_indev_init+0xc>) 27f8: 4798 blx r3 27fa: bd08 pop {r3, pc} 27fc: 00002775 .word 0x00002775 00002800 : * @return pointer to currently active object or NULL if no active object */ lv_obj_t * lv_indev_get_obj_act(void) { return indev_obj_act; } 2800: 4b01 ldr r3, [pc, #4] ; (2808 ) 2802: 6818 ldr r0, [r3, #0] 2804: 4770 bx lr 2806: bf00 nop 2808: 20002674 .word 0x20002674 0000280c : * @param obj pointer to an object which children will be repositioned * @param x_diff x coordinate shift * @param y_diff y coordinate shift */ static void refresh_children_position(lv_obj_t * obj, lv_coord_t x_diff, lv_coord_t y_diff) { 280c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 2810: 4689 mov r9, r1 2812: 4690 mov r8, r2 lv_obj_t * i; _LV_LL_READ(obj->child_ll, i) { 2814: f100 0a04 add.w sl, r0, #4 2818: 4650 mov r0, sl 281a: 4b11 ldr r3, [pc, #68] ; (2860 ) 281c: 4798 blx r3 281e: b1e0 cbz r0, 285a 2820: 4604 mov r4, r0 i->coords.x1 += x_diff; 2822: fa1f f689 uxth.w r6, r9 i->coords.y1 += y_diff; 2826: fa1f f588 uxth.w r5, r8 _LV_LL_READ(obj->child_ll, i) { 282a: 4f0e ldr r7, [pc, #56] ; (2864 ) i->coords.x1 += x_diff; 282c: 8a23 ldrh r3, [r4, #16] 282e: 4433 add r3, r6 2830: 8223 strh r3, [r4, #16] i->coords.y1 += y_diff; 2832: 8a63 ldrh r3, [r4, #18] 2834: 442b add r3, r5 2836: 8263 strh r3, [r4, #18] i->coords.x2 += x_diff; 2838: 8aa3 ldrh r3, [r4, #20] 283a: 4433 add r3, r6 283c: 82a3 strh r3, [r4, #20] i->coords.y2 += y_diff; 283e: 8ae3 ldrh r3, [r4, #22] 2840: 442b add r3, r5 2842: 82e3 strh r3, [r4, #22] refresh_children_position(i, x_diff, y_diff); 2844: 4642 mov r2, r8 2846: 4649 mov r1, r9 2848: 4620 mov r0, r4 284a: f7ff ffdf bl 280c _LV_LL_READ(obj->child_ll, i) { 284e: 4621 mov r1, r4 2850: 4650 mov r0, sl 2852: 47b8 blx r7 2854: 4604 mov r4, r0 2856: 2800 cmp r0, #0 2858: d1e8 bne.n 282c 285a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 285e: bf00 nop 2860: 00011fa9 .word 0x00011fa9 2864: 00011fbd .word 0x00011fbd 00002868 : { 2868: b530 push {r4, r5, lr} 286a: b085 sub sp, #20 if(lv_initialized) { 286c: 4b21 ldr r3, [pc, #132] ; (28f4 ) 286e: 781b ldrb r3, [r3, #0] 2870: 2b00 cmp r3, #0 2872: d136 bne.n 28e2 _lv_mem_init(); 2874: 4b20 ldr r3, [pc, #128] ; (28f8 ) 2876: 4798 blx r3 _lv_task_core_init(); 2878: 4b20 ldr r3, [pc, #128] ; (28fc ) 287a: 4798 blx r3 _lv_fs_init(); 287c: 4b20 ldr r3, [pc, #128] ; (2900 ) 287e: 4798 blx r3 _lv_anim_core_init(); 2880: 4b20 ldr r3, [pc, #128] ; (2904 ) 2882: 4798 blx r3 _lv_group_init(); 2884: 4b20 ldr r3, [pc, #128] ; (2908 ) 2886: 4798 blx r3 _lv_ll_init(&LV_GC_ROOT(_lv_obj_style_trans_ll), sizeof(lv_style_trans_t)); 2888: 2110 movs r1, #16 288a: 4820 ldr r0, [pc, #128] ; (290c ) 288c: 4c20 ldr r4, [pc, #128] ; (2910 ) 288e: 47a0 blx r4 lv_theme_t * th = LV_THEME_DEFAULT_INIT(LV_THEME_DEFAULT_COLOR_PRIMARY, LV_THEME_DEFAULT_COLOR_SECONDARY, 2890: 4b20 ldr r3, [pc, #128] ; (2914 ) 2892: 9302 str r3, [sp, #8] 2894: 9301 str r3, [sp, #4] 2896: 9300 str r3, [sp, #0] 2898: 2202 movs r2, #2 289a: f04f 011f mov.w r1, #31 289e: f64f 0000 movw r0, #63488 ; 0xf800 28a2: 4d1d ldr r5, [pc, #116] ; (2918 ) 28a4: 47a8 blx r5 lv_theme_set_act(th); 28a6: 4b1d ldr r3, [pc, #116] ; (291c ) 28a8: 4798 blx r3 _lv_refr_init(); 28aa: 4b1d ldr r3, [pc, #116] ; (2920 ) 28ac: 4798 blx r3 _lv_ll_init(&LV_GC_ROOT(_lv_disp_ll), sizeof(lv_disp_t)); 28ae: f44f 71b8 mov.w r1, #368 ; 0x170 28b2: 481c ldr r0, [pc, #112] ; (2924 ) 28b4: 47a0 blx r4 _lv_ll_init(&LV_GC_ROOT(_lv_indev_ll), sizeof(lv_indev_t)); 28b6: 2160 movs r1, #96 ; 0x60 28b8: 481b ldr r0, [pc, #108] ; (2928 ) 28ba: 47a0 blx r4 _lv_indev_init(); 28bc: 4b1b ldr r3, [pc, #108] ; (292c ) 28be: 4798 blx r3 _lv_img_decoder_init(); 28c0: 4b1b ldr r3, [pc, #108] ; (2930 ) 28c2: 4798 blx r3 lv_img_cache_set_size(LV_IMG_CACHE_DEF_SIZE); 28c4: 2001 movs r0, #1 28c6: 4b1b ldr r3, [pc, #108] ; (2934 ) 28c8: 4798 blx r3 lv_initialized = true; 28ca: 2001 movs r0, #1 28cc: 4b09 ldr r3, [pc, #36] ; (28f4 ) 28ce: 7018 strb r0, [r3, #0] LV_LOG_INFO("lv_init ready"); 28d0: 4b19 ldr r3, [pc, #100] ; (2938 ) 28d2: 9300 str r3, [sp, #0] 28d4: 4b19 ldr r3, [pc, #100] ; (293c ) 28d6: 22a2 movs r2, #162 ; 0xa2 28d8: 4919 ldr r1, [pc, #100] ; (2940 ) 28da: 4c1a ldr r4, [pc, #104] ; (2944 ) 28dc: 47a0 blx r4 } 28de: b005 add sp, #20 28e0: bd30 pop {r4, r5, pc} LV_LOG_WARN("lv_init: already inited"); 28e2: 4b19 ldr r3, [pc, #100] ; (2948 ) 28e4: 9300 str r3, [sp, #0] 28e6: 4b15 ldr r3, [pc, #84] ; (293c ) 28e8: 2278 movs r2, #120 ; 0x78 28ea: 4915 ldr r1, [pc, #84] ; (2940 ) 28ec: 2002 movs r0, #2 28ee: 4c15 ldr r4, [pc, #84] ; (2944 ) 28f0: 47a0 blx r4 return; 28f2: e7f4 b.n 28de 28f4: 2000267c .word 0x2000267c 28f8: 000123bd .word 0x000123bd 28fc: 000135ed .word 0x000135ed 2900: 00011c79 .word 0x00011c79 2904: 0001129d .word 0x0001129d 2908: 00002529 .word 0x00002529 290c: 20006d3c .word 0x20006d3c 2910: 00011ef9 .word 0x00011ef9 2914: 20000010 .word 0x20000010 2918: 00016b49 .word 0x00016b49 291c: 000141d1 .word 0x000141d1 2920: 00005e55 .word 0x00005e55 2924: 20006c98 .word 0x20006c98 2928: 20006c8c .word 0x20006c8c 292c: 000027f1 .word 0x000027f1 2930: 0000ffc1 .word 0x0000ffc1 2934: 0000f42d .word 0x0000f42d 2938: 0002481c .word 0x0002481c 293c: 00024058 .word 0x00024058 2940: 000247dc .word 0x000247dc 2944: 0001225d .word 0x0001225d 2948: 00024804 .word 0x00024804 0000294c : { 294c: b530 push {r4, r5, lr} 294e: b083 sub sp, #12 2950: 4604 mov r4, r0 2952: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2954: 4b0c ldr r3, [pc, #48] ; (2988 ) 2956: 4798 blx r3 2958: b138 cbz r0, 296a obj->adv_hittest = en == false ? 0 : 1; 295a: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 295e: f365 13c7 bfi r3, r5, #7, #1 2962: f884 3034 strb.w r3, [r4, #52] ; 0x34 } 2966: b003 add sp, #12 2968: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 296a: 4b08 ldr r3, [pc, #32] ; (298c ) 296c: 9300 str r3, [sp, #0] 296e: f240 5294 movw r2, #1428 ; 0x594 2972: 4907 ldr r1, [pc, #28] ; (2990 ) 2974: 2003 movs r0, #3 2976: 4d07 ldr r5, [pc, #28] ; (2994 ) 2978: 47a8 blx r5 297a: 4622 mov r2, r4 297c: 2300 movs r3, #0 297e: 4806 ldr r0, [pc, #24] ; (2998 ) 2980: 4906 ldr r1, [pc, #24] ; (299c ) 2982: 4788 blx r1 2984: e7fe b.n 2984 2986: bf00 nop 2988: 000022b1 .word 0x000022b1 298c: 000240b4 .word 0x000240b4 2990: 000247dc .word 0x000247dc 2994: 0001225d .word 0x0001225d 2998: 0002483c .word 0x0002483c 299c: 000022b9 .word 0x000022b9 000029a0 : { 29a0: b530 push {r4, r5, lr} 29a2: b083 sub sp, #12 29a4: 4604 mov r4, r0 29a6: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 29a8: 4b0c ldr r3, [pc, #48] ; (29dc ) 29aa: 4798 blx r3 29ac: b138 cbz r0, 29be obj->click = (en == true ? 1 : 0); 29ae: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 29b2: f365 0300 bfi r3, r5, #0, #1 29b6: f884 3034 strb.w r3, [r4, #52] ; 0x34 } 29ba: b003 add sp, #12 29bc: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 29be: 4b08 ldr r3, [pc, #32] ; (29e0 ) 29c0: 9300 str r3, [sp, #0] 29c2: f44f 62b4 mov.w r2, #1440 ; 0x5a0 29c6: 4907 ldr r1, [pc, #28] ; (29e4 ) 29c8: 2003 movs r0, #3 29ca: 4d07 ldr r5, [pc, #28] ; (29e8 ) 29cc: 47a8 blx r5 29ce: 4622 mov r2, r4 29d0: 2300 movs r3, #0 29d2: 4806 ldr r0, [pc, #24] ; (29ec ) 29d4: 4906 ldr r1, [pc, #24] ; (29f0 ) 29d6: 4788 blx r1 29d8: e7fe b.n 29d8 29da: bf00 nop 29dc: 000022b1 .word 0x000022b1 29e0: 000240cc .word 0x000240cc 29e4: 000247dc .word 0x000247dc 29e8: 0001225d .word 0x0001225d 29ec: 0002483c .word 0x0002483c 29f0: 000022b9 .word 0x000022b9 000029f4 : { 29f4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 29f8: b086 sub sp, #24 29fa: 4607 mov r7, r0 29fc: 4615 mov r5, r2 29fe: 461e mov r6, r3 if(obj != NULL) { 2a00: 460c mov r4, r1 2a02: b121 cbz r1, 2a0e LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2a04: 4608 mov r0, r1 2a06: 4b28 ldr r3, [pc, #160] ; (2aa8 ) 2a08: 4798 blx r3 2a0a: 2800 cmp r0, #0 2a0c: d033 beq.n 2a76 event_temp_data.obj = obj; 2a0e: 9403 str r4, [sp, #12] event_temp_data.deleted = false; 2a10: 2300 movs r3, #0 2a12: f88d 3010 strb.w r3, [sp, #16] event_temp_data.prev = NULL; 2a16: 9305 str r3, [sp, #20] if(event_temp_data_head) { 2a18: 4b24 ldr r3, [pc, #144] ; (2aac ) 2a1a: 685b ldr r3, [r3, #4] 2a1c: b103 cbz r3, 2a20 event_temp_data.prev = event_temp_data_head; 2a1e: 9305 str r3, [sp, #20] event_temp_data_head = &event_temp_data; 2a20: 4b22 ldr r3, [pc, #136] ; (2aac ) 2a22: aa03 add r2, sp, #12 2a24: 605a str r2, [r3, #4] const void * event_act_data_save = event_act_data; 2a26: f8d3 8008 ldr.w r8, [r3, #8] event_act_data = data; 2a2a: 609e str r6, [r3, #8] lv_indev_t * indev_act = lv_indev_get_act(); 2a2c: 4b20 ldr r3, [pc, #128] ; (2ab0 ) 2a2e: 4798 blx r3 if(indev_act) { 2a30: b118 cbz r0, 2a3a if(indev_act->driver.feedback_cb) indev_act->driver.feedback_cb(&indev_act->driver, event); 2a32: 6883 ldr r3, [r0, #8] 2a34: b10b cbz r3, 2a3a 2a36: 4629 mov r1, r5 2a38: 4798 blx r3 if(event_xcb) event_xcb(obj, event); 2a3a: b117 cbz r7, 2a42 2a3c: 4629 mov r1, r5 2a3e: 4620 mov r0, r4 2a40: 47b8 blx r7 event_act_data = event_act_data_save; 2a42: 4b1a ldr r3, [pc, #104] ; (2aac ) 2a44: f8c3 8008 str.w r8, [r3, #8] event_temp_data_head = event_temp_data_head->prev; 2a48: 685a ldr r2, [r3, #4] 2a4a: 6892 ldr r2, [r2, #8] 2a4c: 605a str r2, [r3, #4] if(event_temp_data.deleted) { 2a4e: f89d 3010 ldrb.w r3, [sp, #16] 2a52: b9f3 cbnz r3, 2a92 if(obj) { 2a54: b30c cbz r4, 2a9a if(obj->parent_event && obj->parent) { 2a56: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 2a5a: f013 0f40 tst.w r3, #64 ; 0x40 2a5e: d01e beq.n 2a9e 2a60: 6820 ldr r0, [r4, #0] 2a62: b1f0 cbz r0, 2aa2 lv_res_t res = lv_event_send(obj->parent, event, data); 2a64: 4632 mov r2, r6 2a66: 4629 mov r1, r5 2a68: 4b12 ldr r3, [pc, #72] ; (2ab4 ) 2a6a: 4798 blx r3 return LV_RES_INV; 2a6c: 2801 cmp r0, #1 2a6e: bf14 ite ne 2a70: 2000 movne r0, #0 2a72: 2001 moveq r0, #1 2a74: e00e b.n 2a94 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2a76: 4b10 ldr r3, [pc, #64] ; (2ab8 ) 2a78: 9300 str r3, [sp, #0] 2a7a: f44f 62db mov.w r2, #1752 ; 0x6d8 2a7e: 490f ldr r1, [pc, #60] ; (2abc ) 2a80: 2003 movs r0, #3 2a82: 4d0f ldr r5, [pc, #60] ; (2ac0 ) 2a84: 47a8 blx r5 2a86: 4622 mov r2, r4 2a88: 2300 movs r3, #0 2a8a: 480e ldr r0, [pc, #56] ; (2ac4 ) 2a8c: 490e ldr r1, [pc, #56] ; (2ac8 ) 2a8e: 4788 blx r1 2a90: e7fe b.n 2a90 return LV_RES_INV; 2a92: 2000 movs r0, #0 } 2a94: b006 add sp, #24 2a96: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} return LV_RES_OK; 2a9a: 2001 movs r0, #1 2a9c: e7fa b.n 2a94 2a9e: 2001 movs r0, #1 2aa0: e7f8 b.n 2a94 2aa2: 2001 movs r0, #1 2aa4: e7f6 b.n 2a94 2aa6: bf00 nop 2aa8: 000022b1 .word 0x000022b1 2aac: 2000267c .word 0x2000267c 2ab0: 00002769 .word 0x00002769 2ab4: 00002acd .word 0x00002acd 2ab8: 0002419c .word 0x0002419c 2abc: 000247dc .word 0x000247dc 2ac0: 0001225d .word 0x0001225d 2ac4: 0002483c .word 0x0002483c 2ac8: 000022b9 .word 0x000022b9 00002acc : if(obj == NULL) return LV_RES_OK; 2acc: b1e8 cbz r0, 2b0a { 2ace: b570 push {r4, r5, r6, lr} 2ad0: b082 sub sp, #8 2ad2: 4604 mov r4, r0 2ad4: 4616 mov r6, r2 2ad6: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2ad8: 4b0d ldr r3, [pc, #52] ; (2b10 ) 2ada: 4798 blx r3 2adc: b968 cbnz r0, 2afa 2ade: 4b0d ldr r3, [pc, #52] ; (2b14 ) 2ae0: 9300 str r3, [sp, #0] 2ae2: f240 62c4 movw r2, #1732 ; 0x6c4 2ae6: 490c ldr r1, [pc, #48] ; (2b18 ) 2ae8: 2003 movs r0, #3 2aea: 4d0c ldr r5, [pc, #48] ; (2b1c ) 2aec: 47a8 blx r5 2aee: 4622 mov r2, r4 2af0: 2300 movs r3, #0 2af2: 480b ldr r0, [pc, #44] ; (2b20 ) 2af4: 490b ldr r1, [pc, #44] ; (2b24 ) 2af6: 4788 blx r1 2af8: e7fe b.n 2af8 res = lv_event_send_func(obj->event_cb, obj, event, data); 2afa: 4633 mov r3, r6 2afc: 462a mov r2, r5 2afe: 4621 mov r1, r4 2b00: 69a0 ldr r0, [r4, #24] 2b02: 4c09 ldr r4, [pc, #36] ; (2b28 ) 2b04: 47a0 blx r4 } 2b06: b002 add sp, #8 2b08: bd70 pop {r4, r5, r6, pc} if(obj == NULL) return LV_RES_OK; 2b0a: 2001 movs r0, #1 2b0c: 4770 bx lr 2b0e: bf00 nop 2b10: 000022b1 .word 0x000022b1 2b14: 000241b0 .word 0x000241b0 2b18: 000247dc .word 0x000247dc 2b1c: 0001225d .word 0x0001225d 2b20: 0002483c .word 0x0002483c 2b24: 000022b9 .word 0x000022b9 2b28: 000029f5 .word 0x000029f5 00002b2c : { 2b2c: b530 push {r4, r5, lr} 2b2e: b083 sub sp, #12 2b30: 4604 mov r4, r0 2b32: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2b34: 4b09 ldr r3, [pc, #36] ; (2b5c ) 2b36: 4798 blx r3 2b38: b110 cbz r0, 2b40 obj->signal_cb = signal_cb; 2b3a: 61e5 str r5, [r4, #28] } 2b3c: b003 add sp, #12 2b3e: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2b40: 4b07 ldr r3, [pc, #28] ; (2b60 ) 2b42: 9300 str r3, [sp, #0] 2b44: f240 721b movw r2, #1819 ; 0x71b 2b48: 4906 ldr r1, [pc, #24] ; (2b64 ) 2b4a: 2003 movs r0, #3 2b4c: 4d06 ldr r5, [pc, #24] ; (2b68 ) 2b4e: 47a8 blx r5 2b50: 4622 mov r2, r4 2b52: 2300 movs r3, #0 2b54: 4805 ldr r0, [pc, #20] ; (2b6c ) 2b56: 4906 ldr r1, [pc, #24] ; (2b70 ) 2b58: 4788 blx r1 2b5a: e7fe b.n 2b5a 2b5c: 000022b1 .word 0x000022b1 2b60: 000241c0 .word 0x000241c0 2b64: 000247dc .word 0x000247dc 2b68: 0001225d .word 0x0001225d 2b6c: 0002483c .word 0x0002483c 2b70: 000022b9 .word 0x000022b9 00002b74 : if(obj == NULL) return LV_RES_OK; 2b74: b120 cbz r0, 2b80 { 2b76: b510 push {r4, lr} if(obj->signal_cb) res = obj->signal_cb(obj, signal, param); 2b78: 69c4 ldr r4, [r0, #28] 2b7a: b11c cbz r4, 2b84 2b7c: 47a0 blx r4 2b7e: bd10 pop {r4, pc} if(obj == NULL) return LV_RES_OK; 2b80: 2001 movs r0, #1 2b82: 4770 bx lr lv_res_t res = LV_RES_OK; 2b84: 2001 movs r0, #1 } 2b86: bd10 pop {r4, pc} 00002b88 : { 2b88: b530 push {r4, r5, lr} 2b8a: b083 sub sp, #12 2b8c: 4604 mov r4, r0 2b8e: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2b90: 4b09 ldr r3, [pc, #36] ; (2bb8 ) 2b92: 4798 blx r3 2b94: b110 cbz r0, 2b9c obj->design_cb = design_cb; 2b96: 6225 str r5, [r4, #32] } 2b98: b003 add sp, #12 2b9a: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2b9c: 4b07 ldr r3, [pc, #28] ; (2bbc ) 2b9e: 9300 str r3, [sp, #0] 2ba0: f240 7237 movw r2, #1847 ; 0x737 2ba4: 4906 ldr r1, [pc, #24] ; (2bc0 ) 2ba6: 2003 movs r0, #3 2ba8: 4d06 ldr r5, [pc, #24] ; (2bc4 ) 2baa: 47a8 blx r5 2bac: 4622 mov r2, r4 2bae: 2300 movs r3, #0 2bb0: 4805 ldr r0, [pc, #20] ; (2bc8 ) 2bb2: 4906 ldr r1, [pc, #24] ; (2bcc ) 2bb4: 4788 blx r1 2bb6: e7fe b.n 2bb6 2bb8: 000022b1 .word 0x000022b1 2bbc: 000241d8 .word 0x000241d8 2bc0: 000247dc .word 0x000247dc 2bc4: 0001225d .word 0x0001225d 2bc8: 0002483c .word 0x0002483c 2bcc: 000022b9 .word 0x000022b9 00002bd0 : { 2bd0: b530 push {r4, r5, lr} 2bd2: b083 sub sp, #12 2bd4: 4604 mov r4, r0 2bd6: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2bd8: 4b0d ldr r3, [pc, #52] ; (2c10 ) 2bda: 4798 blx r3 2bdc: b968 cbnz r0, 2bfa 2bde: 4b0d ldr r3, [pc, #52] ; (2c14 ) 2be0: 9300 str r3, [sp, #0] 2be2: f240 7249 movw r2, #1865 ; 0x749 2be6: 490c ldr r1, [pc, #48] ; (2c18 ) 2be8: 2003 movs r0, #3 2bea: 4d0c ldr r5, [pc, #48] ; (2c1c ) 2bec: 47a8 blx r5 2bee: 4622 mov r2, r4 2bf0: 2300 movs r3, #0 2bf2: 480b ldr r0, [pc, #44] ; (2c20 ) 2bf4: 490b ldr r1, [pc, #44] ; (2c24 ) 2bf6: 4788 blx r1 2bf8: e7fe b.n 2bf8 void * new_ext = lv_mem_realloc(obj->ext_attr, ext_size); 2bfa: 4629 mov r1, r5 2bfc: 6a60 ldr r0, [r4, #36] ; 0x24 2bfe: 4b0a ldr r3, [pc, #40] ; (2c28 ) 2c00: 4798 blx r3 if(new_ext == NULL) return NULL; 2c02: 4603 mov r3, r0 2c04: b100 cbz r0, 2c08 obj->ext_attr = new_ext; 2c06: 6260 str r0, [r4, #36] ; 0x24 } 2c08: 4618 mov r0, r3 2c0a: b003 add sp, #12 2c0c: bd30 pop {r4, r5, pc} 2c0e: bf00 nop 2c10: 000022b1 .word 0x000022b1 2c14: 000241f0 .word 0x000241f0 2c18: 000247dc .word 0x000247dc 2c1c: 0001225d .word 0x0001225d 2c20: 0002483c .word 0x0002483c 2c24: 000022b9 .word 0x000022b9 2c28: 00012899 .word 0x00012899 00002c2c : { 2c2c: b530 push {r4, r5, lr} 2c2e: b083 sub sp, #12 2c30: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2c32: 4b0c ldr r3, [pc, #48] ; (2c64 ) 2c34: 4798 blx r3 2c36: b968 cbnz r0, 2c54 2c38: 4b0b ldr r3, [pc, #44] ; (2c68 ) 2c3a: 9300 str r3, [sp, #0] 2c3c: f240 7259 movw r2, #1881 ; 0x759 2c40: 490a ldr r1, [pc, #40] ; (2c6c ) 2c42: 2003 movs r0, #3 2c44: 4d0a ldr r5, [pc, #40] ; (2c70 ) 2c46: 47a8 blx r5 2c48: 4622 mov r2, r4 2c4a: 2300 movs r3, #0 2c4c: 4809 ldr r0, [pc, #36] ; (2c74 ) 2c4e: 490a ldr r1, [pc, #40] ; (2c78 ) 2c50: 4788 blx r1 2c52: e7fe b.n 2c52 obj->ext_draw_pad = 0; 2c54: 2200 movs r2, #0 2c56: 8662 strh r2, [r4, #50] ; 0x32 obj->signal_cb(obj, LV_SIGNAL_REFR_EXT_DRAW_PAD, NULL); 2c58: 69e3 ldr r3, [r4, #28] 2c5a: 2106 movs r1, #6 2c5c: 4620 mov r0, r4 2c5e: 4798 blx r3 } 2c60: b003 add sp, #12 2c62: bd30 pop {r4, r5, pc} 2c64: 000022b1 .word 0x000022b1 2c68: 0002420c .word 0x0002420c 2c6c: 000247dc .word 0x000247dc 2c70: 0001225d .word 0x0001225d 2c74: 0002483c .word 0x0002483c 2c78: 000022b9 .word 0x000022b9 00002c7c : { 2c7c: b530 push {r4, r5, lr} 2c7e: b083 sub sp, #12 2c80: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2c82: 4b0a ldr r3, [pc, #40] ; (2cac ) 2c84: 4798 blx r3 2c86: b110 cbz r0, 2c8e } 2c88: 6820 ldr r0, [r4, #0] 2c8a: b003 add sp, #12 2c8c: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2c8e: 4b08 ldr r3, [pc, #32] ; (2cb0 ) 2c90: 9300 str r3, [sp, #0] 2c92: f240 729f movw r2, #1951 ; 0x79f 2c96: 4907 ldr r1, [pc, #28] ; (2cb4 ) 2c98: 2003 movs r0, #3 2c9a: 4d07 ldr r5, [pc, #28] ; (2cb8 ) 2c9c: 47a8 blx r5 2c9e: 4622 mov r2, r4 2ca0: 2300 movs r3, #0 2ca2: 4806 ldr r0, [pc, #24] ; (2cbc ) 2ca4: 4906 ldr r1, [pc, #24] ; (2cc0 ) 2ca6: 4788 blx r1 2ca8: e7fe b.n 2ca8 2caa: bf00 nop 2cac: 000022b1 .word 0x000022b1 2cb0: 00024228 .word 0x00024228 2cb4: 000247dc .word 0x000247dc 2cb8: 0001225d .word 0x0001225d 2cbc: 0002483c .word 0x0002483c 2cc0: 000022b9 .word 0x000022b9 00002cc4 : { 2cc4: b530 push {r4, r5, lr} 2cc6: b083 sub sp, #12 2cc8: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2cca: 4b0e ldr r3, [pc, #56] ; (2d04 ) 2ccc: 4798 blx r3 2cce: b108 cbz r0, 2cd4 par = lv_obj_get_parent(act_p); 2cd0: 4d0d ldr r5, [pc, #52] ; (2d08 ) 2cd2: e00e b.n 2cf2 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2cd4: 4b0d ldr r3, [pc, #52] ; (2d0c ) 2cd6: 9300 str r3, [sp, #0] 2cd8: f240 726b movw r2, #1899 ; 0x76b 2cdc: 490c ldr r1, [pc, #48] ; (2d10 ) 2cde: 2003 movs r0, #3 2ce0: 4d0c ldr r5, [pc, #48] ; (2d14 ) 2ce2: 47a8 blx r5 2ce4: 4622 mov r2, r4 2ce6: 2300 movs r3, #0 2ce8: 480b ldr r0, [pc, #44] ; (2d18 ) 2cea: 490c ldr r1, [pc, #48] ; (2d1c ) 2cec: 4788 blx r1 2cee: e7fe b.n 2cee par = lv_obj_get_parent(act_p); 2cf0: 461c mov r4, r3 2cf2: 4620 mov r0, r4 2cf4: 47a8 blx r5 } while(par != NULL); 2cf6: 4603 mov r3, r0 2cf8: 2800 cmp r0, #0 2cfa: d1f9 bne.n 2cf0 } 2cfc: 4620 mov r0, r4 2cfe: b003 add sp, #12 2d00: bd30 pop {r4, r5, pc} 2d02: bf00 nop 2d04: 000022b1 .word 0x000022b1 2d08: 00002c7d .word 0x00002c7d 2d0c: 0002423c .word 0x0002423c 2d10: 000247dc .word 0x000247dc 2d14: 0001225d .word 0x0001225d 2d18: 0002483c .word 0x0002483c 2d1c: 000022b9 .word 0x000022b9 00002d20 : { 2d20: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 2d24: b083 sub sp, #12 2d26: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2d28: 4b22 ldr r3, [pc, #136] ; (2db4 ) 2d2a: 4798 blx r3 2d2c: b180 cbz r0, 2d50 if(obj->parent == NULL) 2d2e: 6823 ldr r3, [r4, #0] 2d30: b11b cbz r3, 2d3a scr = lv_obj_get_screen(obj); /*get the screen of `obj`*/ 2d32: 4620 mov r0, r4 2d34: 4b20 ldr r3, [pc, #128] ; (2db8 ) 2d36: 4798 blx r3 2d38: 4604 mov r4, r0 _LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) { 2d3a: 4820 ldr r0, [pc, #128] ; (2dbc ) 2d3c: 4b20 ldr r3, [pc, #128] ; (2dc0 ) 2d3e: 4798 blx r3 2d40: 4605 mov r5, r0 2d42: b360 cbz r0, 2d9e _LV_LL_READ(d->scr_ll, s) { 2d44: f8df 9078 ldr.w r9, [pc, #120] ; 2dc0 2d48: 4e1e ldr r6, [pc, #120] ; (2dc4 ) _LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) { 2d4a: f8df 8070 ldr.w r8, [pc, #112] ; 2dbc 2d4e: e012 b.n 2d76 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2d50: 4b1d ldr r3, [pc, #116] ; (2dc8 ) 2d52: 9300 str r3, [sp, #0] 2d54: f240 727f movw r2, #1919 ; 0x77f 2d58: 491c ldr r1, [pc, #112] ; (2dcc ) 2d5a: 2003 movs r0, #3 2d5c: 4d1c ldr r5, [pc, #112] ; (2dd0 ) 2d5e: 47a8 blx r5 2d60: 4622 mov r2, r4 2d62: 2300 movs r3, #0 2d64: 481b ldr r0, [pc, #108] ; (2dd4 ) 2d66: 491c ldr r1, [pc, #112] ; (2dd8 ) 2d68: 4788 blx r1 2d6a: e7fe b.n 2d6a _LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) { 2d6c: 4629 mov r1, r5 2d6e: 4640 mov r0, r8 2d70: 47b0 blx r6 2d72: 4605 mov r5, r0 2d74: b198 cbz r0, 2d9e _LV_LL_READ(d->scr_ll, s) { 2d76: f105 0730 add.w r7, r5, #48 ; 0x30 2d7a: 4638 mov r0, r7 2d7c: 47c8 blx r9 2d7e: 4601 mov r1, r0 2d80: 2800 cmp r0, #0 2d82: d0f3 beq.n 2d6c if(s == scr) return d; 2d84: 4284 cmp r4, r0 2d86: d006 beq.n 2d96 _LV_LL_READ(d->scr_ll, s) { 2d88: 4638 mov r0, r7 2d8a: 47b0 blx r6 2d8c: 4601 mov r1, r0 2d8e: 2800 cmp r0, #0 2d90: d0ec beq.n 2d6c if(s == scr) return d; 2d92: 428c cmp r4, r1 2d94: d1f8 bne.n 2d88 } 2d96: 4628 mov r0, r5 2d98: b003 add sp, #12 2d9a: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} LV_LOG_WARN("lv_scr_get_disp: screen not found") 2d9e: 4b0f ldr r3, [pc, #60] ; (2ddc ) 2da0: 9300 str r3, [sp, #0] 2da2: 4b09 ldr r3, [pc, #36] ; (2dc8 ) 2da4: f44f 62f2 mov.w r2, #1936 ; 0x790 2da8: 4908 ldr r1, [pc, #32] ; (2dcc ) 2daa: 2002 movs r0, #2 2dac: 4c08 ldr r4, [pc, #32] ; (2dd0 ) 2dae: 47a0 blx r4 return NULL; 2db0: 2500 movs r5, #0 2db2: e7f0 b.n 2d96 2db4: 000022b1 .word 0x000022b1 2db8: 00002cc5 .word 0x00002cc5 2dbc: 20006c98 .word 0x20006c98 2dc0: 00011fa9 .word 0x00011fa9 2dc4: 00011fbd .word 0x00011fbd 2dc8: 00024250 .word 0x00024250 2dcc: 000247dc .word 0x000247dc 2dd0: 0001225d .word 0x0001225d 2dd4: 0002483c .word 0x0002483c 2dd8: 000022b9 .word 0x000022b9 2ddc: 0002484c .word 0x0002484c 00002de0 : { 2de0: b530 push {r4, r5, lr} 2de2: b083 sub sp, #12 2de4: 4604 mov r4, r0 2de6: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2de8: 4b0d ldr r3, [pc, #52] ; (2e20 ) 2dea: 4798 blx r3 2dec: b130 cbz r0, 2dfc if(child == NULL) { 2dee: b19d cbz r5, 2e18 result = _lv_ll_get_next(&obj->child_ll, child); 2df0: 4629 mov r1, r5 2df2: 1d20 adds r0, r4, #4 2df4: 4b0b ldr r3, [pc, #44] ; (2e24 ) 2df6: 4798 blx r3 } 2df8: b003 add sp, #12 2dfa: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2dfc: 4b0a ldr r3, [pc, #40] ; (2e28 ) 2dfe: 9300 str r3, [sp, #0] 2e00: f240 72ad movw r2, #1965 ; 0x7ad 2e04: 4909 ldr r1, [pc, #36] ; (2e2c ) 2e06: 2003 movs r0, #3 2e08: 4d09 ldr r5, [pc, #36] ; (2e30 ) 2e0a: 47a8 blx r5 2e0c: 4622 mov r2, r4 2e0e: 2300 movs r3, #0 2e10: 4808 ldr r0, [pc, #32] ; (2e34 ) 2e12: 4909 ldr r1, [pc, #36] ; (2e38 ) 2e14: 4788 blx r1 2e16: e7fe b.n 2e16 result = _lv_ll_get_head(&obj->child_ll); 2e18: 1d20 adds r0, r4, #4 2e1a: 4b08 ldr r3, [pc, #32] ; (2e3c ) 2e1c: 4798 blx r3 2e1e: e7eb b.n 2df8 2e20: 000022b1 .word 0x000022b1 2e24: 00011fbd .word 0x00011fbd 2e28: 00024260 .word 0x00024260 2e2c: 000247dc .word 0x000247dc 2e30: 0001225d .word 0x0001225d 2e34: 0002483c .word 0x0002483c 2e38: 000022b9 .word 0x000022b9 2e3c: 00011fa9 .word 0x00011fa9 00002e40 : { 2e40: b530 push {r4, r5, lr} 2e42: b083 sub sp, #12 2e44: 4605 mov r5, r0 2e46: 460c mov r4, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2e48: 4b0e ldr r3, [pc, #56] ; (2e84 ) 2e4a: 4798 blx r3 2e4c: b160 cbz r0, 2e68 2e4e: f105 020f add.w r2, r5, #15 2e52: f104 0008 add.w r0, r4, #8 * @param src pointer to the source buffer * @param len number of byte to copy */ LV_ATTRIBUTE_FAST_MEM static inline void * _lv_memcpy_small(void * dst, const void * src, size_t len) { uint8_t * d8 = (uint8_t *)dst; 2e56: 4623 mov r3, r4 const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; 2e58: f812 1f01 ldrb.w r1, [r2, #1]! 2e5c: f803 1b01 strb.w r1, [r3], #1 while(len) { 2e60: 4283 cmp r3, r0 2e62: d1f9 bne.n 2e58 } 2e64: b003 add sp, #12 2e66: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2e68: 4b07 ldr r3, [pc, #28] ; (2e88 ) 2e6a: 9300 str r3, [sp, #0] 2e6c: f640 0201 movw r2, #2049 ; 0x801 2e70: 4906 ldr r1, [pc, #24] ; (2e8c ) 2e72: 2003 movs r0, #3 2e74: 4c06 ldr r4, [pc, #24] ; (2e90 ) 2e76: 47a0 blx r4 2e78: 462a mov r2, r5 2e7a: 2300 movs r3, #0 2e7c: 4805 ldr r0, [pc, #20] ; (2e94 ) 2e7e: 4906 ldr r1, [pc, #24] ; (2e98 ) 2e80: 4788 blx r1 2e82: e7fe b.n 2e82 2e84: 000022b1 .word 0x000022b1 2e88: 000242d8 .word 0x000242d8 2e8c: 000247dc .word 0x000247dc 2e90: 0001225d .word 0x0001225d 2e94: 0002483c .word 0x0002483c 2e98: 000022b9 .word 0x000022b9 00002e9c : { 2e9c: b530 push {r4, r5, lr} 2e9e: b083 sub sp, #12 2ea0: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2ea2: 4b0f ldr r3, [pc, #60] ; (2ee0 ) 2ea4: 4798 blx r3 2ea6: b968 cbnz r0, 2ec4 2ea8: 4b0e ldr r3, [pc, #56] ; (2ee4 ) 2eaa: 9300 str r3, [sp, #0] 2eac: f640 0222 movw r2, #2082 ; 0x822 2eb0: 490d ldr r1, [pc, #52] ; (2ee8 ) 2eb2: 2003 movs r0, #3 2eb4: 4d0d ldr r5, [pc, #52] ; (2eec ) 2eb6: 47a8 blx r5 2eb8: 4622 mov r2, r4 2eba: 2300 movs r3, #0 2ebc: 480c ldr r0, [pc, #48] ; (2ef0 ) 2ebe: 490d ldr r1, [pc, #52] ; (2ef4 ) 2ec0: 4788 blx r1 2ec2: e7fe b.n 2ec2 lv_obj_t * parent = lv_obj_get_parent(obj); 2ec4: 4620 mov r0, r4 2ec6: 4b0c ldr r3, [pc, #48] ; (2ef8 ) 2ec8: 4798 blx r3 if(parent) { 2eca: 4603 mov r3, r0 2ecc: b128 cbz r0, 2eda rel_x = obj->coords.x1 - parent->coords.x1; 2ece: 8a20 ldrh r0, [r4, #16] 2ed0: 8a1b ldrh r3, [r3, #16] 2ed2: 1ac0 subs r0, r0, r3 2ed4: b200 sxth r0, r0 } 2ed6: b003 add sp, #12 2ed8: bd30 pop {r4, r5, pc} rel_x = obj->coords.x1; 2eda: f9b4 0010 ldrsh.w r0, [r4, #16] 2ede: e7fa b.n 2ed6 2ee0: 000022b1 .word 0x000022b1 2ee4: 000242ec .word 0x000242ec 2ee8: 000247dc .word 0x000247dc 2eec: 0001225d .word 0x0001225d 2ef0: 0002483c .word 0x0002483c 2ef4: 000022b9 .word 0x000022b9 2ef8: 00002c7d .word 0x00002c7d 00002efc : { 2efc: b530 push {r4, r5, lr} 2efe: b083 sub sp, #12 2f00: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2f02: 4b0f ldr r3, [pc, #60] ; (2f40 ) 2f04: 4798 blx r3 2f06: b968 cbnz r0, 2f24 2f08: 4b0e ldr r3, [pc, #56] ; (2f44 ) 2f0a: 9300 str r3, [sp, #0] 2f0c: f640 0236 movw r2, #2102 ; 0x836 2f10: 490d ldr r1, [pc, #52] ; (2f48 ) 2f12: 2003 movs r0, #3 2f14: 4d0d ldr r5, [pc, #52] ; (2f4c ) 2f16: 47a8 blx r5 2f18: 4622 mov r2, r4 2f1a: 2300 movs r3, #0 2f1c: 480c ldr r0, [pc, #48] ; (2f50 ) 2f1e: 490d ldr r1, [pc, #52] ; (2f54 ) 2f20: 4788 blx r1 2f22: e7fe b.n 2f22 lv_obj_t * parent = lv_obj_get_parent(obj); 2f24: 4620 mov r0, r4 2f26: 4b0c ldr r3, [pc, #48] ; (2f58 ) 2f28: 4798 blx r3 if(parent) { 2f2a: 4603 mov r3, r0 2f2c: b128 cbz r0, 2f3a rel_y = obj->coords.y1 - parent->coords.y1; 2f2e: 8a60 ldrh r0, [r4, #18] 2f30: 8a5b ldrh r3, [r3, #18] 2f32: 1ac0 subs r0, r0, r3 2f34: b200 sxth r0, r0 } 2f36: b003 add sp, #12 2f38: bd30 pop {r4, r5, pc} rel_y = obj->coords.y1; 2f3a: f9b4 0012 ldrsh.w r0, [r4, #18] 2f3e: e7fa b.n 2f36 2f40: 000022b1 .word 0x000022b1 2f44: 000242fc .word 0x000242fc 2f48: 000247dc .word 0x000247dc 2f4c: 0001225d .word 0x0001225d 2f50: 0002483c .word 0x0002483c 2f54: 000022b9 .word 0x000022b9 2f58: 00002c7d .word 0x00002c7d 00002f5c : { 2f5c: b530 push {r4, r5, lr} 2f5e: b083 sub sp, #12 2f60: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2f62: 4b0c ldr r3, [pc, #48] ; (2f94 ) 2f64: 4798 blx r3 2f66: b130 cbz r0, 2f76 * @param area_p pointer to an area * @return the width of the area (if x1 == x2 -> width = 1) */ static inline lv_coord_t lv_area_get_width(const lv_area_t * area_p) { return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 2f68: 8aa0 ldrh r0, [r4, #20] 2f6a: 3001 adds r0, #1 2f6c: 8a23 ldrh r3, [r4, #16] 2f6e: 1ac0 subs r0, r0, r3 } 2f70: b200 sxth r0, r0 2f72: b003 add sp, #12 2f74: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2f76: 4b08 ldr r3, [pc, #32] ; (2f98 ) 2f78: 9300 str r3, [sp, #0] 2f7a: f640 024a movw r2, #2122 ; 0x84a 2f7e: 4907 ldr r1, [pc, #28] ; (2f9c ) 2f80: 2003 movs r0, #3 2f82: 4d07 ldr r5, [pc, #28] ; (2fa0 ) 2f84: 47a8 blx r5 2f86: 4622 mov r2, r4 2f88: 2300 movs r3, #0 2f8a: 4806 ldr r0, [pc, #24] ; (2fa4 ) 2f8c: 4906 ldr r1, [pc, #24] ; (2fa8 ) 2f8e: 4788 blx r1 2f90: e7fe b.n 2f90 2f92: bf00 nop 2f94: 000022b1 .word 0x000022b1 2f98: 0002430c .word 0x0002430c 2f9c: 000247dc .word 0x000247dc 2fa0: 0001225d .word 0x0001225d 2fa4: 0002483c .word 0x0002483c 2fa8: 000022b9 .word 0x000022b9 00002fac : { 2fac: b530 push {r4, r5, lr} 2fae: b083 sub sp, #12 2fb0: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2fb2: 4b0c ldr r3, [pc, #48] ; (2fe4 ) 2fb4: 4798 blx r3 2fb6: b130 cbz r0, 2fc6 * @param area_p pointer to an area * @return the height of the area (if y1 == y2 -> height = 1) */ static inline lv_coord_t lv_area_get_height(const lv_area_t * area_p) { return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 2fb8: 8ae0 ldrh r0, [r4, #22] 2fba: 3001 adds r0, #1 2fbc: 8a63 ldrh r3, [r4, #18] 2fbe: 1ac0 subs r0, r0, r3 } 2fc0: b200 sxth r0, r0 2fc2: b003 add sp, #12 2fc4: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2fc6: 4b08 ldr r3, [pc, #32] ; (2fe8 ) 2fc8: 9300 str r3, [sp, #0] 2fca: f640 0256 movw r2, #2134 ; 0x856 2fce: 4907 ldr r1, [pc, #28] ; (2fec ) 2fd0: 2003 movs r0, #3 2fd2: 4d07 ldr r5, [pc, #28] ; (2ff0 ) 2fd4: 47a8 blx r5 2fd6: 4622 mov r2, r4 2fd8: 2300 movs r3, #0 2fda: 4806 ldr r0, [pc, #24] ; (2ff4 ) 2fdc: 4906 ldr r1, [pc, #24] ; (2ff8 ) 2fde: 4788 blx r1 2fe0: e7fe b.n 2fe0 2fe2: bf00 nop 2fe4: 000022b1 .word 0x000022b1 2fe8: 00024320 .word 0x00024320 2fec: 000247dc .word 0x000247dc 2ff0: 0001225d .word 0x0001225d 2ff4: 0002483c .word 0x0002483c 2ff8: 000022b9 .word 0x000022b9 00002ffc : if(part == LV_OBJ_PART_MAIN) return &((lv_obj_t *)obj)->style_list; 2ffc: b909 cbnz r1, 3002 2ffe: 3028 adds r0, #40 ; 0x28 3000: 4770 bx lr { 3002: b500 push {lr} 3004: b083 sub sp, #12 info.part = part; 3006: f88d 1000 strb.w r1, [sp] info.result = NULL; 300a: 2300 movs r3, #0 300c: 9301 str r3, [sp, #4] res = lv_signal_send((lv_obj_t *)obj, LV_SIGNAL_GET_STYLE, &info); 300e: 466a mov r2, sp 3010: 2108 movs r1, #8 3012: 4b04 ldr r3, [pc, #16] ; (3024 ) 3014: 4798 blx r3 if(res != LV_RES_OK) return NULL; 3016: 2801 cmp r0, #1 return info.result; 3018: bf0c ite eq 301a: 9801 ldreq r0, [sp, #4] if(res != LV_RES_OK) return NULL; 301c: 2000 movne r0, #0 } 301e: b003 add sp, #12 3020: f85d fb04 ldr.w pc, [sp], #4 3024: 00002b75 .word 0x00002b75 00003028 : * @param part a part of object or 0xFF to remove from all parts * @param prop a property or 0xFF to remove all porpeties * @param tr_limit delete transitions only "older" then this. `NULL` is not used */ static void trans_del(lv_obj_t * obj, uint8_t part, lv_style_property_t prop, lv_style_trans_t * tr_limit) { 3028: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} 302c: 4680 mov r8, r0 302e: 468a mov sl, r1 3030: 4693 mov fp, r2 3032: 461e mov r6, r3 lv_style_trans_t * tr; lv_style_trans_t * tr_prev; tr = _lv_ll_get_tail(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3034: 481c ldr r0, [pc, #112] ; (30a8 ) 3036: 4b1d ldr r3, [pc, #116] ; (30ac ) 3038: 4798 blx r3 while(tr != NULL) { 303a: 2800 cmp r0, #0 303c: d031 beq.n 30a2 303e: 4605 mov r5, r0 if(tr == tr_limit) break; 3040: 42b0 cmp r0, r6 3042: d02e beq.n 30a2 /*'tr' might be deleted, so get the next object while 'tr' is valid*/ tr_prev = _lv_ll_get_prev(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr); 3044: f8df 9060 ldr.w r9, [pc, #96] ; 30a8 3048: 4f19 ldr r7, [pc, #100] ; (30b0 ) 304a: e009 b.n 3060 if(tr->obj == obj && (part == tr->part || part == 0xFF) && (prop == tr->prop || prop == 0xFF)) { 304c: 88ab ldrh r3, [r5, #4] 304e: 455b cmp r3, fp 3050: d014 beq.n 307c 3052: f1bb 0fff cmp.w fp, #255 ; 0xff 3056: d011 beq.n 307c while(tr != NULL) { 3058: b31c cbz r4, 30a2 305a: 4625 mov r5, r4 if(tr == tr_limit) break; 305c: 42a6 cmp r6, r4 305e: d020 beq.n 30a2 tr_prev = _lv_ll_get_prev(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr); 3060: 4629 mov r1, r5 3062: 4648 mov r0, r9 3064: 47b8 blx r7 3066: 4604 mov r4, r0 if(tr->obj == obj && (part == tr->part || part == 0xFF) && (prop == tr->prop || prop == 0xFF)) { 3068: 6828 ldr r0, [r5, #0] 306a: 4540 cmp r0, r8 306c: d1f4 bne.n 3058 306e: 79a9 ldrb r1, [r5, #6] 3070: 4551 cmp r1, sl 3072: d0eb beq.n 304c 3074: f1ba 0fff cmp.w sl, #255 ; 0xff 3078: d1ee bne.n 3058 307a: e7e7 b.n 304c /* Remove the transitioned property from trans. style * to allow changing it by normal styles*/ lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part); 307c: 4b0d ldr r3, [pc, #52] ; (30b4 ) 307e: 4798 blx r3 lv_style_t * style_trans = _lv_style_list_get_transition_style(list); 3080: 4b0d ldr r3, [pc, #52] ; (30b8 ) 3082: 4798 blx r3 lv_style_remove_prop(style_trans, tr->prop); 3084: 88a9 ldrh r1, [r5, #4] 3086: 4b0d ldr r3, [pc, #52] ; (30bc ) 3088: 4798 blx r3 lv_anim_del(tr, NULL); 308a: 2100 movs r1, #0 308c: 4628 mov r0, r5 308e: 4b0c ldr r3, [pc, #48] ; (30c0 ) 3090: 4798 blx r3 _lv_ll_remove(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr); 3092: 4629 mov r1, r5 3094: 4648 mov r0, r9 3096: 4b0b ldr r3, [pc, #44] ; (30c4 ) 3098: 4798 blx r3 lv_mem_free(tr); 309a: 4628 mov r0, r5 309c: 4b0a ldr r3, [pc, #40] ; (30c8 ) 309e: 4798 blx r3 30a0: e7da b.n 3058 30a2: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} 30a6: bf00 nop 30a8: 20006d3c .word 0x20006d3c 30ac: 00011fb3 .word 0x00011fb3 30b0: 00011fe9 .word 0x00011fe9 30b4: 00002ffd .word 0x00002ffd 30b8: 000070e7 .word 0x000070e7 30bc: 000067ed .word 0x000067ed 30c0: 00011329 .word 0x00011329 30c4: 00012095 .word 0x00012095 30c8: 000124c5 .word 0x000124c5 000030cc : { 30cc: b530 push {r4, r5, lr} 30ce: b083 sub sp, #12 30d0: 4604 mov r4, r0 30d2: 460d mov r5, r1 lv_style_list_t * style_dsc = lv_obj_get_style_list(obj, part); 30d4: 4b0b ldr r3, [pc, #44] ; (3104 ) 30d6: 4798 blx r3 if(style_dsc == NULL) { 30d8: b148 cbz r0, 30ee _lv_style_list_reset(style_dsc); 30da: 4b0b ldr r3, [pc, #44] ; (3108 ) 30dc: 4798 blx r3 trans_del(obj, part, 0xFF, NULL); 30de: 2300 movs r3, #0 30e0: 22ff movs r2, #255 ; 0xff 30e2: 4629 mov r1, r5 30e4: 4620 mov r0, r4 30e6: 4c09 ldr r4, [pc, #36] ; (310c ) 30e8: 47a0 blx r4 } 30ea: b003 add sp, #12 30ec: bd30 pop {r4, r5, pc} LV_LOG_WARN("lv_obj_clean_style_list: can't find style with `part`"); 30ee: 4b08 ldr r3, [pc, #32] ; (3110 ) 30f0: 9300 str r3, [sp, #0] 30f2: 4b08 ldr r3, [pc, #32] ; (3114 ) 30f4: f240 4292 movw r2, #1170 ; 0x492 30f8: 4907 ldr r1, [pc, #28] ; (3118 ) 30fa: 2002 movs r0, #2 30fc: 4c07 ldr r4, [pc, #28] ; (311c ) 30fe: 47a0 blx r4 return; 3100: e7f3 b.n 30ea 3102: bf00 nop 3104: 00002ffd .word 0x00002ffd 3108: 000070f9 .word 0x000070f9 310c: 00003029 .word 0x00003029 3110: 00024898 .word 0x00024898 3114: 000243e4 .word 0x000243e4 3118: 000247dc .word 0x000247dc 311c: 0001225d .word 0x0001225d 00003120 : tr->prop = prop_tmp; } static void trans_anim_ready_cb(lv_anim_t * a) { 3120: b5f8 push {r3, r4, r5, r6, r7, lr} lv_style_trans_t * tr = a->var; 3122: 6804 ldr r4, [r0, #0] * if there no more transitions for this property * It allows changing it by normal styles*/ bool running = false; lv_style_trans_t * tr_i; _LV_LL_READ(LV_GC_ROOT(_lv_obj_style_trans_ll), tr_i) { 3124: 4817 ldr r0, [pc, #92] ; (3184 ) 3126: 4b18 ldr r3, [pc, #96] ; (3188 ) 3128: 4798 blx r3 312a: b308 cbz r0, 3170 312c: 4601 mov r1, r0 312e: 2700 movs r7, #0 3130: 4e14 ldr r6, [pc, #80] ; (3184 ) 3132: 4d16 ldr r5, [pc, #88] ; (318c ) 3134: e003 b.n 313e 3136: 4630 mov r0, r6 3138: 47a8 blx r5 313a: 4601 mov r1, r0 313c: b178 cbz r0, 315e if(tr_i != tr && tr_i->obj == tr->obj && tr_i->part == tr->part && tr_i->prop == tr->prop) { 313e: 428c cmp r4, r1 3140: d0f9 beq.n 3136 3142: 680a ldr r2, [r1, #0] 3144: 6823 ldr r3, [r4, #0] 3146: 429a cmp r2, r3 3148: d1f5 bne.n 3136 314a: 684b ldr r3, [r1, #4] 314c: f023 427f bic.w r2, r3, #4278190080 ; 0xff000000 3150: 6863 ldr r3, [r4, #4] 3152: f023 437f bic.w r3, r3, #4278190080 ; 0xff000000 running = true; 3156: 429a cmp r2, r3 3158: bf08 it eq 315a: 2701 moveq r7, #1 315c: e7eb b.n 3136 } } if(!running) { 315e: b13f cbz r7, 3170 lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part); lv_style_t * style_trans = _lv_style_list_get_transition_style(list); lv_style_remove_prop(style_trans, tr->prop); } _lv_ll_remove(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr); 3160: 4621 mov r1, r4 3162: 4808 ldr r0, [pc, #32] ; (3184 ) 3164: 4b0a ldr r3, [pc, #40] ; (3190 ) 3166: 4798 blx r3 lv_mem_free(tr); 3168: 4620 mov r0, r4 316a: 4b0a ldr r3, [pc, #40] ; (3194 ) 316c: 4798 blx r3 316e: bdf8 pop {r3, r4, r5, r6, r7, pc} lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part); 3170: 79a1 ldrb r1, [r4, #6] 3172: 6820 ldr r0, [r4, #0] 3174: 4b08 ldr r3, [pc, #32] ; (3198 ) 3176: 4798 blx r3 lv_style_t * style_trans = _lv_style_list_get_transition_style(list); 3178: 4b08 ldr r3, [pc, #32] ; (319c ) 317a: 4798 blx r3 lv_style_remove_prop(style_trans, tr->prop); 317c: 88a1 ldrh r1, [r4, #4] 317e: 4b08 ldr r3, [pc, #32] ; (31a0 ) 3180: 4798 blx r3 3182: e7ed b.n 3160 3184: 20006d3c .word 0x20006d3c 3188: 00011fa9 .word 0x00011fa9 318c: 00011fbd .word 0x00011fbd 3190: 00012095 .word 0x00012095 3194: 000124c5 .word 0x000124c5 3198: 00002ffd .word 0x00002ffd 319c: 000070e7 .word 0x000070e7 31a0: 000067ed .word 0x000067ed 000031a4 : { 31a4: b530 push {r4, r5, lr} 31a6: b083 sub sp, #12 31a8: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 31aa: 4b0b ldr r3, [pc, #44] ; (31d8 ) 31ac: 4798 blx r3 31ae: b128 cbz r0, 31bc return obj->hidden == 0 ? false : true; 31b0: f894 0034 ldrb.w r0, [r4, #52] ; 0x34 } 31b4: f3c0 1000 ubfx r0, r0, #4, #1 31b8: b003 add sp, #12 31ba: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 31bc: 4b07 ldr r3, [pc, #28] ; (31dc ) 31be: 9300 str r3, [sp, #0] 31c0: f640 2241 movw r2, #2625 ; 0xa41 31c4: 4906 ldr r1, [pc, #24] ; (31e0 ) 31c6: 2003 movs r0, #3 31c8: 4d06 ldr r5, [pc, #24] ; (31e4 ) 31ca: 47a8 blx r5 31cc: 4622 mov r2, r4 31ce: 2300 movs r3, #0 31d0: 4805 ldr r0, [pc, #20] ; (31e8 ) 31d2: 4906 ldr r1, [pc, #24] ; (31ec ) 31d4: 4788 blx r1 31d6: e7fe b.n 31d6 31d8: 000022b1 .word 0x000022b1 31dc: 00024434 .word 0x00024434 31e0: 000247dc .word 0x000247dc 31e4: 0001225d .word 0x0001225d 31e8: 0002483c .word 0x0002483c 31ec: 000022b9 .word 0x000022b9 000031f0 : { 31f0: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 31f4: b086 sub sp, #24 31f6: 4604 mov r4, r0 31f8: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 31fa: 4b3a ldr r3, [pc, #232] ; (32e4 ) 31fc: 4798 blx r3 31fe: b968 cbnz r0, 321c 3200: 4b39 ldr r3, [pc, #228] ; (32e8 ) 3202: 9300 str r3, [sp, #0] 3204: f44f 72f0 mov.w r2, #480 ; 0x1e0 3208: 4938 ldr r1, [pc, #224] ; (32ec ) 320a: 2003 movs r0, #3 320c: 4d38 ldr r5, [pc, #224] ; (32f0 ) 320e: 47a8 blx r5 3210: 4622 mov r2, r4 3212: 2300 movs r3, #0 3214: 4837 ldr r0, [pc, #220] ; (32f4 ) 3216: 4938 ldr r1, [pc, #224] ; (32f8 ) 3218: 4788 blx r1 321a: e7fe b.n 321a if(lv_obj_get_hidden(obj)) return; 321c: 4620 mov r0, r4 321e: 4b37 ldr r3, [pc, #220] ; (32fc ) 3220: 4798 blx r3 3222: b110 cbz r0, 322a } 3224: b006 add sp, #24 3226: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} lv_obj_t * obj_scr = lv_obj_get_screen(obj); 322a: 4620 mov r0, r4 322c: 4b34 ldr r3, [pc, #208] ; (3300 ) 322e: 4798 blx r3 3230: 4607 mov r7, r0 lv_disp_t * disp = lv_obj_get_disp(obj_scr); 3232: 4b34 ldr r3, [pc, #208] ; (3304 ) 3234: 4798 blx r3 3236: 4605 mov r5, r0 if(obj_scr == lv_disp_get_scr_act(disp) || obj_scr == lv_disp_get_layer_top(disp) || 3238: 4b33 ldr r3, [pc, #204] ; (3308 ) 323a: 4798 blx r3 323c: 4287 cmp r7, r0 323e: d009 beq.n 3254 3240: 4628 mov r0, r5 3242: 4b32 ldr r3, [pc, #200] ; (330c ) 3244: 4798 blx r3 3246: 4287 cmp r7, r0 3248: d004 beq.n 3254 obj_scr == lv_disp_get_layer_sys(disp)) { 324a: 4628 mov r0, r5 324c: 4b30 ldr r3, [pc, #192] ; (3310 ) 324e: 4798 blx r3 if(obj_scr == lv_disp_get_scr_act(disp) || obj_scr == lv_disp_get_layer_top(disp) || 3250: 4287 cmp r7, r0 3252: d1e7 bne.n 3224 lv_coord_t ext_size = obj->ext_draw_pad; 3254: f9b4 3032 ldrsh.w r3, [r4, #50] ; 0x32 3258: f104 020f add.w r2, r4, #15 325c: f104 0017 add.w r0, r4, #23 uint8_t * d8 = (uint8_t *)dst; 3260: a902 add r1, sp, #8 *d8 = *s8; 3262: f812 7f01 ldrb.w r7, [r2, #1]! 3266: f801 7b01 strb.w r7, [r1], #1 while(len) { 326a: 4282 cmp r2, r0 326c: d1f9 bne.n 3262 obj_coords.x1 -= ext_size; 326e: b29b uxth r3, r3 3270: f8bd 2008 ldrh.w r2, [sp, #8] 3274: 1ad2 subs r2, r2, r3 3276: f8ad 2008 strh.w r2, [sp, #8] obj_coords.y1 -= ext_size; 327a: f8bd 200a ldrh.w r2, [sp, #10] 327e: 1ad2 subs r2, r2, r3 3280: f8ad 200a strh.w r2, [sp, #10] obj_coords.x2 += ext_size; 3284: f8bd 200c ldrh.w r2, [sp, #12] 3288: 441a add r2, r3 328a: f8ad 200c strh.w r2, [sp, #12] obj_coords.y2 += ext_size; 328e: f8bd 200e ldrh.w r2, [sp, #14] 3292: 4413 add r3, r2 3294: f8ad 300e strh.w r3, [sp, #14] is_common = _lv_area_intersect(&area_trunc, area, &obj_coords); 3298: aa02 add r2, sp, #8 329a: 4631 mov r1, r6 329c: a804 add r0, sp, #16 329e: 4b1d ldr r3, [pc, #116] ; (3314 ) 32a0: 4798 blx r3 if(is_common == false) return; /*The area is not on the object*/ 32a2: 2800 cmp r0, #0 32a4: d0be beq.n 3224 lv_obj_t * par = lv_obj_get_parent(obj); 32a6: 4620 mov r0, r4 32a8: 4b1b ldr r3, [pc, #108] ; (3318 ) 32aa: 4798 blx r3 while(par != NULL) { 32ac: 4604 mov r4, r0 32ae: b198 cbz r0, 32d8 is_common = _lv_area_intersect(&area_trunc, &area_trunc, &par->coords); 32b0: f8df 8060 ldr.w r8, [pc, #96] ; 3314 if(lv_obj_get_hidden(par)) return; /*If the parent is hidden then the child is hidden and won't be drawn*/ 32b4: 4f11 ldr r7, [pc, #68] ; (32fc ) par = lv_obj_get_parent(par); 32b6: 4e18 ldr r6, [pc, #96] ; (3318 ) is_common = _lv_area_intersect(&area_trunc, &area_trunc, &par->coords); 32b8: f104 0210 add.w r2, r4, #16 32bc: a904 add r1, sp, #16 32be: 4608 mov r0, r1 32c0: 47c0 blx r8 if(is_common == false) break; /*If no common parts with parent break;*/ 32c2: 2800 cmp r0, #0 32c4: d0ae beq.n 3224 if(lv_obj_get_hidden(par)) return; /*If the parent is hidden then the child is hidden and won't be drawn*/ 32c6: 4620 mov r0, r4 32c8: 47b8 blx r7 32ca: 2800 cmp r0, #0 32cc: d1aa bne.n 3224 par = lv_obj_get_parent(par); 32ce: 4620 mov r0, r4 32d0: 47b0 blx r6 while(par != NULL) { 32d2: 4604 mov r4, r0 32d4: 2800 cmp r0, #0 32d6: d1ef bne.n 32b8 if(is_common) _lv_inv_area(disp, &area_trunc); 32d8: a904 add r1, sp, #16 32da: 4628 mov r0, r5 32dc: 4b0f ldr r3, [pc, #60] ; (331c ) 32de: 4798 blx r3 32e0: e7a0 b.n 3224 32e2: bf00 nop 32e4: 000022b1 .word 0x000022b1 32e8: 00024448 .word 0x00024448 32ec: 000247dc .word 0x000247dc 32f0: 0001225d .word 0x0001225d 32f4: 0002483c .word 0x0002483c 32f8: 000022b9 .word 0x000022b9 32fc: 000031a5 .word 0x000031a5 3300: 00002cc5 .word 0x00002cc5 3304: 00002d21 .word 0x00002d21 3308: 0000234d .word 0x0000234d 330c: 0000238d .word 0x0000238d 3310: 000023cd .word 0x000023cd 3314: 00011519 .word 0x00011519 3318: 00002c7d .word 0x00002c7d 331c: 00005e59 .word 0x00005e59 00003320 : { 3320: b530 push {r4, r5, lr} 3322: b085 sub sp, #20 3324: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3326: 4b1c ldr r3, [pc, #112] ; (3398 ) 3328: 4798 blx r3 332a: b338 cbz r0, 337c lv_coord_t ext_size = obj->ext_draw_pad; 332c: f9b4 3032 ldrsh.w r3, [r4, #50] ; 0x32 3330: f104 020f add.w r2, r4, #15 3334: f104 0517 add.w r5, r4, #23 uint8_t * d8 = (uint8_t *)dst; 3338: a902 add r1, sp, #8 *d8 = *s8; 333a: f812 0f01 ldrb.w r0, [r2, #1]! 333e: f801 0b01 strb.w r0, [r1], #1 while(len) { 3342: 42aa cmp r2, r5 3344: d1f9 bne.n 333a obj_coords.x1 -= ext_size; 3346: b29b uxth r3, r3 3348: f8bd 2008 ldrh.w r2, [sp, #8] 334c: 1ad2 subs r2, r2, r3 334e: f8ad 2008 strh.w r2, [sp, #8] obj_coords.y1 -= ext_size; 3352: f8bd 200a ldrh.w r2, [sp, #10] 3356: 1ad2 subs r2, r2, r3 3358: f8ad 200a strh.w r2, [sp, #10] obj_coords.x2 += ext_size; 335c: f8bd 200c ldrh.w r2, [sp, #12] 3360: 441a add r2, r3 3362: f8ad 200c strh.w r2, [sp, #12] obj_coords.y2 += ext_size; 3366: f8bd 200e ldrh.w r2, [sp, #14] 336a: 4413 add r3, r2 336c: f8ad 300e strh.w r3, [sp, #14] lv_obj_invalidate_area(obj, &obj_coords); 3370: a902 add r1, sp, #8 3372: 4620 mov r0, r4 3374: 4b09 ldr r3, [pc, #36] ; (339c ) 3376: 4798 blx r3 } 3378: b005 add sp, #20 337a: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 337c: 4b08 ldr r3, [pc, #32] ; (33a0 ) 337e: 9300 str r3, [sp, #0] 3380: f240 220d movw r2, #525 ; 0x20d 3384: 4907 ldr r1, [pc, #28] ; (33a4 ) 3386: 2003 movs r0, #3 3388: 4d07 ldr r5, [pc, #28] ; (33a8 ) 338a: 47a8 blx r5 338c: 4622 mov r2, r4 338e: 2300 movs r3, #0 3390: 4806 ldr r0, [pc, #24] ; (33ac ) 3392: 4907 ldr r1, [pc, #28] ; (33b0 ) 3394: 4788 blx r1 3396: e7fe b.n 3396 3398: 000022b1 .word 0x000022b1 339c: 000031f1 .word 0x000031f1 33a0: 00024460 .word 0x00024460 33a4: 000247dc .word 0x000247dc 33a8: 0001225d .word 0x0001225d 33ac: 0002483c .word 0x0002483c 33b0: 000022b9 .word 0x000022b9 000033b4 : { 33b4: b5f0 push {r4, r5, r6, r7, lr} 33b6: b083 sub sp, #12 33b8: 4605 mov r5, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 33ba: 4b16 ldr r3, [pc, #88] ; (3414 ) 33bc: 4798 blx r3 33be: b968 cbnz r0, 33dc 33c0: 4b15 ldr r3, [pc, #84] ; (3418 ) 33c2: 9300 str r3, [sp, #0] 33c4: f240 2262 movw r2, #610 ; 0x262 33c8: 4914 ldr r1, [pc, #80] ; (341c ) 33ca: 2003 movs r0, #3 33cc: 4c14 ldr r4, [pc, #80] ; (3420 ) 33ce: 47a0 blx r4 33d0: 462a mov r2, r5 33d2: 2300 movs r3, #0 33d4: 4813 ldr r0, [pc, #76] ; (3424 ) 33d6: 4914 ldr r1, [pc, #80] ; (3428 ) 33d8: 4788 blx r1 33da: e7fe b.n 33da lv_obj_t * parent = lv_obj_get_parent(obj); 33dc: 4628 mov r0, r5 33de: 4b13 ldr r3, [pc, #76] ; (342c ) 33e0: 4798 blx r3 33e2: 4604 mov r4, r0 if(_lv_ll_get_head(&parent->child_ll) == obj) return; 33e4: 1d06 adds r6, r0, #4 33e6: 4630 mov r0, r6 33e8: 4b11 ldr r3, [pc, #68] ; (3430 ) 33ea: 4798 blx r3 33ec: 4285 cmp r5, r0 33ee: d00f beq.n 3410 lv_obj_invalidate(parent); 33f0: 4620 mov r0, r4 33f2: 4f10 ldr r7, [pc, #64] ; (3434 ) 33f4: 47b8 blx r7 _lv_ll_chg_list(&parent->child_ll, &parent->child_ll, obj, true); 33f6: 2301 movs r3, #1 33f8: 462a mov r2, r5 33fa: 4631 mov r1, r6 33fc: 4630 mov r0, r6 33fe: 4e0e ldr r6, [pc, #56] ; (3438 ) 3400: 47b0 blx r6 parent->signal_cb(parent, LV_SIGNAL_CHILD_CHG, obj); 3402: 69e3 ldr r3, [r4, #28] 3404: 462a mov r2, r5 3406: 2101 movs r1, #1 3408: 4620 mov r0, r4 340a: 4798 blx r3 lv_obj_invalidate(parent); 340c: 4620 mov r0, r4 340e: 47b8 blx r7 } 3410: b003 add sp, #12 3412: bdf0 pop {r4, r5, r6, r7, pc} 3414: 000022b1 .word 0x000022b1 3418: 00024474 .word 0x00024474 341c: 000247dc .word 0x000247dc 3420: 0001225d .word 0x0001225d 3424: 0002483c .word 0x0002483c 3428: 000022b9 .word 0x000022b9 342c: 00002c7d .word 0x00002c7d 3430: 00011fa9 .word 0x00011fa9 3434: 00003321 .word 0x00003321 3438: 00012121 .word 0x00012121 0000343c : { 343c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 3440: b084 sub sp, #16 3442: 4604 mov r4, r0 3444: 468a mov sl, r1 3446: 4617 mov r7, r2 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3448: 4b2d ldr r3, [pc, #180] ; (3500 ) 344a: 4798 blx r3 344c: 2800 cmp r0, #0 344e: d03e beq.n 34ce lv_obj_t * par = obj->parent; 3450: 6826 ldr r6, [r4, #0] if(par == NULL) { 3452: 2e00 cmp r6, #0 3454: d049 beq.n 34ea diff.x = x - obj->coords.x1; 3456: 8a33 ldrh r3, [r6, #16] 3458: 8a22 ldrh r2, [r4, #16] 345a: 1a9b subs r3, r3, r2 345c: 4453 add r3, sl 345e: fa1f fa83 uxth.w sl, r3 3462: fa0f f88a sxth.w r8, sl diff.y = y - obj->coords.y1; 3466: 8a75 ldrh r5, [r6, #18] 3468: 8a63 ldrh r3, [r4, #18] 346a: 1aed subs r5, r5, r3 346c: 443d add r5, r7 346e: b2ad uxth r5, r5 3470: fa0f f985 sxth.w r9, r5 if(diff.x == 0 && diff.y == 0) return; 3474: f1b8 0f00 cmp.w r8, #0 3478: d102 bne.n 3480 347a: f1b9 0f00 cmp.w r9, #0 347e: d023 beq.n 34c8 lv_obj_invalidate(obj); 3480: 4620 mov r0, r4 3482: 4f20 ldr r7, [pc, #128] ; (3504 ) 3484: 47b8 blx r7 lv_obj_get_coords(obj, &ori); 3486: a902 add r1, sp, #8 3488: 4620 mov r0, r4 348a: 4b1f ldr r3, [pc, #124] ; (3508 ) 348c: 4798 blx r3 obj->coords.x1 += diff.x; 348e: 8a23 ldrh r3, [r4, #16] 3490: 4453 add r3, sl 3492: 8223 strh r3, [r4, #16] obj->coords.y1 += diff.y; 3494: 8a63 ldrh r3, [r4, #18] 3496: 442b add r3, r5 3498: 8263 strh r3, [r4, #18] obj->coords.x2 += diff.x; 349a: 8aa3 ldrh r3, [r4, #20] 349c: 4453 add r3, sl 349e: 82a3 strh r3, [r4, #20] obj->coords.y2 += diff.y; 34a0: 8ae3 ldrh r3, [r4, #22] 34a2: 441d add r5, r3 34a4: 82e5 strh r5, [r4, #22] refresh_children_position(obj, diff.x, diff.y); 34a6: 464a mov r2, r9 34a8: 4641 mov r1, r8 34aa: 4620 mov r0, r4 34ac: 4b17 ldr r3, [pc, #92] ; (350c ) 34ae: 4798 blx r3 obj->signal_cb(obj, LV_SIGNAL_COORD_CHG, &ori); 34b0: 69e3 ldr r3, [r4, #28] 34b2: aa02 add r2, sp, #8 34b4: 2102 movs r1, #2 34b6: 4620 mov r0, r4 34b8: 4798 blx r3 par->signal_cb(par, LV_SIGNAL_CHILD_CHG, obj); 34ba: 69f3 ldr r3, [r6, #28] 34bc: 4622 mov r2, r4 34be: 2101 movs r1, #1 34c0: 4630 mov r0, r6 34c2: 4798 blx r3 lv_obj_invalidate(obj); 34c4: 4620 mov r0, r4 34c6: 47b8 blx r7 } 34c8: b004 add sp, #16 34ca: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 34ce: 4b10 ldr r3, [pc, #64] ; (3510 ) 34d0: 9300 str r3, [sp, #0] 34d2: f240 2296 movw r2, #662 ; 0x296 34d6: 490f ldr r1, [pc, #60] ; (3514 ) 34d8: 2003 movs r0, #3 34da: 4d0f ldr r5, [pc, #60] ; (3518 ) 34dc: 47a8 blx r5 34de: 4622 mov r2, r4 34e0: 2300 movs r3, #0 34e2: 480e ldr r0, [pc, #56] ; (351c ) 34e4: 490e ldr r1, [pc, #56] ; (3520 ) 34e6: 4788 blx r1 34e8: e7fe b.n 34e8 LV_LOG_WARN("lv_obj_set_pos: not changing position of screen object"); 34ea: 4b0e ldr r3, [pc, #56] ; (3524 ) 34ec: 9300 str r3, [sp, #0] 34ee: 4b08 ldr r3, [pc, #32] ; (3510 ) 34f0: f44f 7227 mov.w r2, #668 ; 0x29c 34f4: 4907 ldr r1, [pc, #28] ; (3514 ) 34f6: 2002 movs r0, #2 34f8: 4c07 ldr r4, [pc, #28] ; (3518 ) 34fa: 47a0 blx r4 return; 34fc: e7e4 b.n 34c8 34fe: bf00 nop 3500: 000022b1 .word 0x000022b1 3504: 00003321 .word 0x00003321 3508: 00002e41 .word 0x00002e41 350c: 0000280d .word 0x0000280d 3510: 000244a4 .word 0x000244a4 3514: 000247dc .word 0x000247dc 3518: 0001225d .word 0x0001225d 351c: 0002483c .word 0x0002483c 3520: 000022b9 .word 0x000022b9 3524: 000248d0 .word 0x000248d0 00003528 : { 3528: b530 push {r4, r5, lr} 352a: b083 sub sp, #12 352c: 4604 mov r4, r0 352e: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3530: 4b0d ldr r3, [pc, #52] ; (3568 ) 3532: 4798 blx r3 3534: b968 cbnz r0, 3552 3536: 4b0d ldr r3, [pc, #52] ; (356c ) 3538: 9300 str r3, [sp, #0] 353a: f44f 7233 mov.w r2, #716 ; 0x2cc 353e: 490c ldr r1, [pc, #48] ; (3570 ) 3540: 2003 movs r0, #3 3542: 4d0c ldr r5, [pc, #48] ; (3574 ) 3544: 47a8 blx r5 3546: 4622 mov r2, r4 3548: 2300 movs r3, #0 354a: 480b ldr r0, [pc, #44] ; (3578 ) 354c: 490b ldr r1, [pc, #44] ; (357c ) 354e: 4788 blx r1 3550: e7fe b.n 3550 lv_obj_set_pos(obj, x, lv_obj_get_y(obj)); 3552: 4620 mov r0, r4 3554: 4b0a ldr r3, [pc, #40] ; (3580 ) 3556: 4798 blx r3 3558: 4602 mov r2, r0 355a: 4629 mov r1, r5 355c: 4620 mov r0, r4 355e: 4b09 ldr r3, [pc, #36] ; (3584 ) 3560: 4798 blx r3 } 3562: b003 add sp, #12 3564: bd30 pop {r4, r5, pc} 3566: bf00 nop 3568: 000022b1 .word 0x000022b1 356c: 000244b4 .word 0x000244b4 3570: 000247dc .word 0x000247dc 3574: 0001225d .word 0x0001225d 3578: 0002483c .word 0x0002483c 357c: 000022b9 .word 0x000022b9 3580: 00002efd .word 0x00002efd 3584: 0000343d .word 0x0000343d 00003588 : { 3588: b530 push {r4, r5, lr} 358a: b083 sub sp, #12 358c: 4604 mov r4, r0 358e: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3590: 4b0d ldr r3, [pc, #52] ; (35c8 ) 3592: 4798 blx r3 3594: b968 cbnz r0, 35b2 3596: 4b0d ldr r3, [pc, #52] ; (35cc ) 3598: 9300 str r3, [sp, #0] 359a: f44f 7236 mov.w r2, #728 ; 0x2d8 359e: 490c ldr r1, [pc, #48] ; (35d0 ) 35a0: 2003 movs r0, #3 35a2: 4d0c ldr r5, [pc, #48] ; (35d4 ) 35a4: 47a8 blx r5 35a6: 4622 mov r2, r4 35a8: 2300 movs r3, #0 35aa: 480b ldr r0, [pc, #44] ; (35d8 ) 35ac: 490b ldr r1, [pc, #44] ; (35dc ) 35ae: 4788 blx r1 35b0: e7fe b.n 35b0 lv_obj_set_pos(obj, lv_obj_get_x(obj), y); 35b2: 4620 mov r0, r4 35b4: 4b0a ldr r3, [pc, #40] ; (35e0 ) 35b6: 4798 blx r3 35b8: 462a mov r2, r5 35ba: 4601 mov r1, r0 35bc: 4620 mov r0, r4 35be: 4b09 ldr r3, [pc, #36] ; (35e4 ) 35c0: 4798 blx r3 } 35c2: b003 add sp, #12 35c4: bd30 pop {r4, r5, pc} 35c6: bf00 nop 35c8: 000022b1 .word 0x000022b1 35cc: 000244c4 .word 0x000244c4 35d0: 000247dc .word 0x000247dc 35d4: 0001225d .word 0x0001225d 35d8: 0002483c .word 0x0002483c 35dc: 000022b9 .word 0x000022b9 35e0: 00002e9d .word 0x00002e9d 35e4: 0000343d .word 0x0000343d 000035e8 : { 35e8: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 35ec: b085 sub sp, #20 35ee: 4604 mov r4, r0 35f0: 460d mov r5, r1 35f2: 4690 mov r8, r2 35f4: 461f mov r7, r3 35f6: f9bd 6030 ldrsh.w r6, [sp, #48] ; 0x30 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 35fa: 4b2c ldr r3, [pc, #176] ; (36ac ) 35fc: 4798 blx r3 35fe: b968 cbnz r0, 361c 3600: 4b2b ldr r3, [pc, #172] ; (36b0 ) 3602: 9300 str r3, [sp, #0] 3604: f240 326d movw r2, #877 ; 0x36d 3608: 492a ldr r1, [pc, #168] ; (36b4 ) 360a: 2003 movs r0, #3 360c: 4d2a ldr r5, [pc, #168] ; (36b8 ) 360e: 47a8 blx r5 3610: 4622 mov r2, r4 3612: 2300 movs r3, #0 3614: 4829 ldr r0, [pc, #164] ; (36bc ) 3616: 492a ldr r1, [pc, #168] ; (36c0 ) 3618: 4788 blx r1 361a: e7fe b.n 361a if(base == NULL) base = lv_obj_get_parent(obj); 361c: b18d cbz r5, 3642 LV_ASSERT_OBJ(base, LV_OBJX_NAME); 361e: 4628 mov r0, r5 3620: 4b22 ldr r3, [pc, #136] ; (36ac ) 3622: 4798 blx r3 3624: b990 cbnz r0, 364c 3626: 4b22 ldr r3, [pc, #136] ; (36b0 ) 3628: 9300 str r3, [sp, #0] 362a: f240 3271 movw r2, #881 ; 0x371 362e: 4921 ldr r1, [pc, #132] ; (36b4 ) 3630: 2003 movs r0, #3 3632: 4c21 ldr r4, [pc, #132] ; (36b8 ) 3634: 47a0 blx r4 3636: 462a mov r2, r5 3638: 2300 movs r3, #0 363a: 4820 ldr r0, [pc, #128] ; (36bc ) 363c: 4920 ldr r1, [pc, #128] ; (36c0 ) 363e: 4788 blx r1 3640: e7fe b.n 3640 if(base == NULL) base = lv_obj_get_parent(obj); 3642: 4620 mov r0, r4 3644: 4b1f ldr r3, [pc, #124] ; (36c4 ) 3646: 4798 blx r3 3648: 4605 mov r5, r0 364a: e7e8 b.n 361e _lv_area_align(&base->coords, &obj->coords, align, &new_pos); 364c: ab03 add r3, sp, #12 364e: 4642 mov r2, r8 3650: f104 0110 add.w r1, r4, #16 3654: f105 0010 add.w r0, r5, #16 3658: f8df 9070 ldr.w r9, [pc, #112] ; 36cc 365c: 47c8 blx r9 lv_obj_t * par = lv_obj_get_parent(obj); 365e: 4620 mov r0, r4 3660: 4b18 ldr r3, [pc, #96] ; (36c4 ) 3662: 4798 blx r3 lv_coord_t par_abs_y = par->coords.y1; 3664: f9b0 3012 ldrsh.w r3, [r0, #18] new_pos.y += y_ofs; 3668: f8bd 200e ldrh.w r2, [sp, #14] 366c: 4432 add r2, r6 new_pos.x += x_ofs; 366e: f8bd 100c ldrh.w r1, [sp, #12] 3672: 4439 add r1, r7 new_pos.x -= par_abs_x; 3674: 8a00 ldrh r0, [r0, #16] 3676: 1a09 subs r1, r1, r0 3678: b209 sxth r1, r1 367a: f8ad 100c strh.w r1, [sp, #12] new_pos.y -= par_abs_y; 367e: 1ad2 subs r2, r2, r3 3680: b212 sxth r2, r2 3682: f8ad 200e strh.w r2, [sp, #14] lv_obj_set_pos(obj, new_pos.x, new_pos.y); 3686: 4620 mov r0, r4 3688: 4b0f ldr r3, [pc, #60] ; (36c8 ) 368a: 4798 blx r3 obj->realign.align = align; 368c: f884 8048 strb.w r8, [r4, #72] ; 0x48 obj->realign.xofs = x_ofs; 3690: f8a4 7044 strh.w r7, [r4, #68] ; 0x44 obj->realign.yofs = y_ofs; 3694: f8a4 6046 strh.w r6, [r4, #70] ; 0x46 obj->realign.base = base; 3698: 6425 str r5, [r4, #64] ; 0x40 obj->realign.origo_align = 0; 369a: f894 3049 ldrb.w r3, [r4, #73] ; 0x49 369e: f36f 0341 bfc r3, #1, #1 36a2: f884 3049 strb.w r3, [r4, #73] ; 0x49 } 36a6: b005 add sp, #20 36a8: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} 36ac: 000022b1 .word 0x000022b1 36b0: 000244d4 .word 0x000244d4 36b4: 000247dc .word 0x000247dc 36b8: 0001225d .word 0x0001225d 36bc: 0002483c .word 0x0002483c 36c0: 000022b9 .word 0x000022b9 36c4: 00002c7d .word 0x00002c7d 36c8: 0000343d .word 0x0000343d 36cc: 00011825 .word 0x00011825 000036d0 : { 36d0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 36d4: b085 sub sp, #20 36d6: 4681 mov r9, r0 36d8: 460e mov r6, r1 36da: 4692 mov sl, r2 36dc: 9303 str r3, [sp, #12] 36de: f9bd b038 ldrsh.w fp, [sp, #56] ; 0x38 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 36e2: 4ba3 ldr r3, [pc, #652] ; (3970 ) 36e4: 4798 blx r3 36e6: b968 cbnz r0, 3704 36e8: 4ba2 ldr r3, [pc, #648] ; (3974 ) 36ea: 9300 str r3, [sp, #0] 36ec: f240 3295 movw r2, #917 ; 0x395 36f0: 49a1 ldr r1, [pc, #644] ; (3978 ) 36f2: 2003 movs r0, #3 36f4: 4ca1 ldr r4, [pc, #644] ; (397c ) 36f6: 47a0 blx r4 36f8: 464a mov r2, r9 36fa: 2300 movs r3, #0 36fc: 48a0 ldr r0, [pc, #640] ; (3980 ) 36fe: 49a1 ldr r1, [pc, #644] ; (3984 ) 3700: 4788 blx r1 3702: e7fe b.n 3702 lv_coord_t new_x = lv_obj_get_x(obj); 3704: 4648 mov r0, r9 3706: 4ba0 ldr r3, [pc, #640] ; (3988 ) 3708: 4798 blx r3 370a: 4605 mov r5, r0 lv_coord_t new_y = lv_obj_get_y(obj); 370c: 4648 mov r0, r9 370e: 4b9f ldr r3, [pc, #636] ; (398c ) 3710: 4798 blx r3 3712: 4604 mov r4, r0 lv_coord_t obj_w_half = lv_obj_get_width(obj) / 2; 3714: 4648 mov r0, r9 3716: 4b9e ldr r3, [pc, #632] ; (3990 ) 3718: 4798 blx r3 371a: eb00 70d0 add.w r0, r0, r0, lsr #31 371e: f340 084f sbfx r8, r0, #1, #16 lv_coord_t obj_h_half = lv_obj_get_height(obj) / 2; 3722: 4648 mov r0, r9 3724: 4b9b ldr r3, [pc, #620] ; (3994 ) 3726: 4798 blx r3 3728: eb00 70d0 add.w r0, r0, r0, lsr #31 372c: f340 074f sbfx r7, r0, #1, #16 if(base == NULL) { 3730: b1ee cbz r6, 376e LV_ASSERT_OBJ(base, LV_OBJX_NAME); 3732: 4630 mov r0, r6 3734: 4b8e ldr r3, [pc, #568] ; (3970 ) 3736: 4798 blx r3 3738: b1f0 cbz r0, 3778 switch(align) { 373a: f1ba 0f14 cmp.w sl, #20 373e: d839 bhi.n 37b4 3740: e8df f01a tbh [pc, sl, lsl #1] 3744: 005c0028 .word 0x005c0028 3748: 006d0062 .word 0x006d0062 374c: 007f0076 .word 0x007f0076 3750: 0099008d .word 0x0099008d 3754: 00b400a5 .word 0x00b400a5 3758: 00c500ba .word 0x00c500ba 375c: 00d700ce .word 0x00d700ce 3760: 00f100e5 .word 0x00f100e5 3764: 010300f7 .word 0x010300f7 3768: 012e010c .word 0x012e010c 376c: 013d .short 0x013d base = lv_obj_get_parent(obj); 376e: 4648 mov r0, r9 3770: 4b89 ldr r3, [pc, #548] ; (3998 ) 3772: 4798 blx r3 3774: 4606 mov r6, r0 3776: e7dc b.n 3732 LV_ASSERT_OBJ(base, LV_OBJX_NAME); 3778: 4b7e ldr r3, [pc, #504] ; (3974 ) 377a: 9300 str r3, [sp, #0] 377c: f240 32a1 movw r2, #929 ; 0x3a1 3780: 497d ldr r1, [pc, #500] ; (3978 ) 3782: 2003 movs r0, #3 3784: 4c7d ldr r4, [pc, #500] ; (397c ) 3786: 47a0 blx r4 3788: 4632 mov r2, r6 378a: 2300 movs r3, #0 378c: 487c ldr r0, [pc, #496] ; (3980 ) 378e: 497d ldr r1, [pc, #500] ; (3984 ) 3790: 4788 blx r1 3792: e7fe b.n 3792 new_x = lv_obj_get_width(base) / 2 - obj_w_half; 3794: 4630 mov r0, r6 3796: 4b7e ldr r3, [pc, #504] ; (3990 ) 3798: 4798 blx r3 379a: eb00 70d0 add.w r0, r0, r0, lsr #31 379e: ebc8 0560 rsb r5, r8, r0, asr #1 37a2: b22d sxth r5, r5 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 37a4: 4630 mov r0, r6 37a6: 4b7b ldr r3, [pc, #492] ; (3994 ) 37a8: 4798 blx r3 37aa: eb00 70d0 add.w r0, r0, r0, lsr #31 37ae: ebc7 0460 rsb r4, r7, r0, asr #1 37b2: b224 sxth r4, r4 lv_obj_t * par = lv_obj_get_parent(obj); 37b4: 4648 mov r0, r9 37b6: 4b78 ldr r3, [pc, #480] ; (3998 ) 37b8: 4798 blx r3 new_x += x_ofs + base_abs_x; 37ba: 8a31 ldrh r1, [r6, #16] 37bc: 9f03 ldr r7, [sp, #12] 37be: 4439 add r1, r7 37c0: 4429 add r1, r5 new_x -= par_abs_x; 37c2: 8a03 ldrh r3, [r0, #16] 37c4: 1ac9 subs r1, r1, r3 new_y += y_ofs + base_abs_y; 37c6: 8a72 ldrh r2, [r6, #18] 37c8: 445a add r2, fp 37ca: 4422 add r2, r4 new_y -= par_abs_y; 37cc: 8a43 ldrh r3, [r0, #18] 37ce: 1ad2 subs r2, r2, r3 lv_obj_set_pos(obj, new_x, new_y); 37d0: b212 sxth r2, r2 37d2: b209 sxth r1, r1 37d4: 4648 mov r0, r9 37d6: 4b71 ldr r3, [pc, #452] ; (399c ) 37d8: 4798 blx r3 obj->realign.align = align; 37da: f889 a048 strb.w sl, [r9, #72] ; 0x48 obj->realign.xofs = x_ofs; 37de: f8a9 7044 strh.w r7, [r9, #68] ; 0x44 obj->realign.yofs = y_ofs; 37e2: f8a9 b046 strh.w fp, [r9, #70] ; 0x46 obj->realign.base = base; 37e6: f8c9 6040 str.w r6, [r9, #64] ; 0x40 obj->realign.origo_align = 1; 37ea: f899 3049 ldrb.w r3, [r9, #73] ; 0x49 37ee: f043 0302 orr.w r3, r3, #2 37f2: f889 3049 strb.w r3, [r9, #73] ; 0x49 } 37f6: b005 add sp, #20 37f8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} new_x = -obj_w_half; 37fc: f1c8 0500 rsb r5, r8, #0 3800: b22d sxth r5, r5 new_y = -obj_h_half; 3802: 427c negs r4, r7 3804: b224 sxth r4, r4 break; 3806: e7d5 b.n 37b4 new_x = lv_obj_get_width(base) / 2 - obj_w_half; 3808: 4630 mov r0, r6 380a: 4b61 ldr r3, [pc, #388] ; (3990 ) 380c: 4798 blx r3 380e: eb00 70d0 add.w r0, r0, r0, lsr #31 3812: ebc8 0560 rsb r5, r8, r0, asr #1 3816: b22d sxth r5, r5 new_y = -obj_h_half; 3818: 427c negs r4, r7 381a: b224 sxth r4, r4 break; 381c: e7ca b.n 37b4 new_x = lv_obj_get_width(base) - obj_w_half; 381e: 4630 mov r0, r6 3820: 4b5b ldr r3, [pc, #364] ; (3990 ) 3822: 4798 blx r3 3824: eba0 0008 sub.w r0, r0, r8 3828: b205 sxth r5, r0 new_y = -obj_h_half; 382a: 427c negs r4, r7 382c: b224 sxth r4, r4 break; 382e: e7c1 b.n 37b4 new_x = -obj_w_half; 3830: f1c8 0500 rsb r5, r8, #0 3834: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 3836: 4630 mov r0, r6 3838: 4b56 ldr r3, [pc, #344] ; (3994 ) 383a: 4798 blx r3 383c: 1bc0 subs r0, r0, r7 383e: b204 sxth r4, r0 break; 3840: e7b8 b.n 37b4 new_x = lv_obj_get_width(base) / 2 - obj_w_half; 3842: 4630 mov r0, r6 3844: 4b52 ldr r3, [pc, #328] ; (3990 ) 3846: 4798 blx r3 3848: eb00 70d0 add.w r0, r0, r0, lsr #31 384c: ebc8 0560 rsb r5, r8, r0, asr #1 3850: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 3852: 4630 mov r0, r6 3854: 4b4f ldr r3, [pc, #316] ; (3994 ) 3856: 4798 blx r3 3858: 1bc0 subs r0, r0, r7 385a: b204 sxth r4, r0 break; 385c: e7aa b.n 37b4 new_x = lv_obj_get_width(base) - obj_w_half; 385e: 4630 mov r0, r6 3860: 4b4b ldr r3, [pc, #300] ; (3990 ) 3862: 4798 blx r3 3864: eba0 0008 sub.w r0, r0, r8 3868: b205 sxth r5, r0 new_y = lv_obj_get_height(base) - obj_h_half; 386a: 4630 mov r0, r6 386c: 4b49 ldr r3, [pc, #292] ; (3994 ) 386e: 4798 blx r3 3870: 1bc0 subs r0, r0, r7 3872: b204 sxth r4, r0 break; 3874: e79e b.n 37b4 new_x = -obj_w_half; 3876: f1c8 0500 rsb r5, r8, #0 387a: b22d sxth r5, r5 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 387c: 4630 mov r0, r6 387e: 4b45 ldr r3, [pc, #276] ; (3994 ) 3880: 4798 blx r3 3882: eb00 70d0 add.w r0, r0, r0, lsr #31 3886: ebc7 0460 rsb r4, r7, r0, asr #1 388a: b224 sxth r4, r4 break; 388c: e792 b.n 37b4 new_x = lv_obj_get_width(base) - obj_w_half; 388e: 4630 mov r0, r6 3890: 4b3f ldr r3, [pc, #252] ; (3990 ) 3892: 4798 blx r3 3894: eba0 0008 sub.w r0, r0, r8 3898: b205 sxth r5, r0 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 389a: 4630 mov r0, r6 389c: 4b3d ldr r3, [pc, #244] ; (3994 ) 389e: 4798 blx r3 38a0: eb00 70d0 add.w r0, r0, r0, lsr #31 38a4: ebc7 0460 rsb r4, r7, r0, asr #1 38a8: b224 sxth r4, r4 break; 38aa: e783 b.n 37b4 new_x = -obj_w_half; 38ac: f1c8 0500 rsb r5, r8, #0 38b0: b22d sxth r5, r5 new_y = -obj_h_half; 38b2: 427c negs r4, r7 38b4: b224 sxth r4, r4 break; 38b6: e77d b.n 37b4 new_x = lv_obj_get_width(base) / 2 - obj_w_half; 38b8: 4630 mov r0, r6 38ba: 4b35 ldr r3, [pc, #212] ; (3990 ) 38bc: 4798 blx r3 38be: eb00 70d0 add.w r0, r0, r0, lsr #31 38c2: ebc8 0560 rsb r5, r8, r0, asr #1 38c6: b22d sxth r5, r5 new_y = -obj_h_half; 38c8: 427c negs r4, r7 38ca: b224 sxth r4, r4 break; 38cc: e772 b.n 37b4 new_x = lv_obj_get_width(base) - obj_w_half; 38ce: 4630 mov r0, r6 38d0: 4b2f ldr r3, [pc, #188] ; (3990 ) 38d2: 4798 blx r3 38d4: eba0 0008 sub.w r0, r0, r8 38d8: b205 sxth r5, r0 new_y = -obj_h_half; 38da: 427c negs r4, r7 38dc: b224 sxth r4, r4 break; 38de: e769 b.n 37b4 new_x = -obj_w_half; 38e0: f1c8 0500 rsb r5, r8, #0 38e4: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 38e6: 4630 mov r0, r6 38e8: 4b2a ldr r3, [pc, #168] ; (3994 ) 38ea: 4798 blx r3 38ec: 1bc0 subs r0, r0, r7 38ee: b204 sxth r4, r0 break; 38f0: e760 b.n 37b4 new_x = lv_obj_get_width(base) / 2 - obj_w_half; 38f2: 4630 mov r0, r6 38f4: 4b26 ldr r3, [pc, #152] ; (3990 ) 38f6: 4798 blx r3 38f8: eb00 70d0 add.w r0, r0, r0, lsr #31 38fc: ebc8 0560 rsb r5, r8, r0, asr #1 3900: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 3902: 4630 mov r0, r6 3904: 4b23 ldr r3, [pc, #140] ; (3994 ) 3906: 4798 blx r3 3908: 1bc0 subs r0, r0, r7 390a: b204 sxth r4, r0 break; 390c: e752 b.n 37b4 new_x = lv_obj_get_width(base) - obj_w_half; 390e: 4630 mov r0, r6 3910: 4b1f ldr r3, [pc, #124] ; (3990 ) 3912: 4798 blx r3 3914: eba0 0008 sub.w r0, r0, r8 3918: b205 sxth r5, r0 new_y = lv_obj_get_height(base) - obj_h_half; 391a: 4630 mov r0, r6 391c: 4b1d ldr r3, [pc, #116] ; (3994 ) 391e: 4798 blx r3 3920: 1bc0 subs r0, r0, r7 3922: b204 sxth r4, r0 break; 3924: e746 b.n 37b4 new_x = -obj_w_half; 3926: f1c8 0500 rsb r5, r8, #0 392a: b22d sxth r5, r5 new_y = -obj_h_half; 392c: 427c negs r4, r7 392e: b224 sxth r4, r4 break; 3930: e740 b.n 37b4 new_x = -obj_w_half; 3932: f1c8 0500 rsb r5, r8, #0 3936: b22d sxth r5, r5 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 3938: 4630 mov r0, r6 393a: 4b16 ldr r3, [pc, #88] ; (3994 ) 393c: 4798 blx r3 393e: eb00 70d0 add.w r0, r0, r0, lsr #31 3942: ebc7 0460 rsb r4, r7, r0, asr #1 3946: b224 sxth r4, r4 break; 3948: e734 b.n 37b4 new_x = -obj_w_half; 394a: f1c8 0500 rsb r5, r8, #0 394e: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 3950: 4630 mov r0, r6 3952: 4b10 ldr r3, [pc, #64] ; (3994 ) 3954: 4798 blx r3 3956: 1bc0 subs r0, r0, r7 3958: b204 sxth r4, r0 break; 395a: e72b b.n 37b4 new_x = lv_obj_get_width(base) - obj_w_half; 395c: 4630 mov r0, r6 395e: 4b0c ldr r3, [pc, #48] ; (3990 ) 3960: 4798 blx r3 3962: eba0 0008 sub.w r0, r0, r8 3966: b205 sxth r5, r0 new_y = -obj_h_half; 3968: 427c negs r4, r7 396a: b224 sxth r4, r4 break; 396c: e722 b.n 37b4 396e: bf00 nop 3970: 000022b1 .word 0x000022b1 3974: 000244e4 .word 0x000244e4 3978: 000247dc .word 0x000247dc 397c: 0001225d .word 0x0001225d 3980: 0002483c .word 0x0002483c 3984: 000022b9 .word 0x000022b9 3988: 00002e9d .word 0x00002e9d 398c: 00002efd .word 0x00002efd 3990: 00002f5d .word 0x00002f5d 3994: 00002fad .word 0x00002fad 3998: 00002c7d .word 0x00002c7d 399c: 0000343d .word 0x0000343d new_x = lv_obj_get_width(base) - obj_w_half; 39a0: 4630 mov r0, r6 39a2: 4b0d ldr r3, [pc, #52] ; (39d8 ) 39a4: 4798 blx r3 39a6: eba0 0008 sub.w r0, r0, r8 39aa: b205 sxth r5, r0 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 39ac: 4630 mov r0, r6 39ae: 4b0b ldr r3, [pc, #44] ; (39dc ) 39b0: 4798 blx r3 39b2: eb00 70d0 add.w r0, r0, r0, lsr #31 39b6: ebc7 0460 rsb r4, r7, r0, asr #1 39ba: b224 sxth r4, r4 break; 39bc: e6fa b.n 37b4 new_x = lv_obj_get_width(base) - obj_w_half; 39be: 4630 mov r0, r6 39c0: 4b05 ldr r3, [pc, #20] ; (39d8 ) 39c2: 4798 blx r3 39c4: eba0 0008 sub.w r0, r0, r8 39c8: b205 sxth r5, r0 new_y = lv_obj_get_height(base) - obj_h_half; 39ca: 4630 mov r0, r6 39cc: 4b03 ldr r3, [pc, #12] ; (39dc ) 39ce: 4798 blx r3 39d0: 1bc0 subs r0, r0, r7 39d2: b204 sxth r4, r0 break; 39d4: e6ee b.n 37b4 39d6: bf00 nop 39d8: 00002f5d .word 0x00002f5d 39dc: 00002fad .word 0x00002fad 000039e0 : { 39e0: b530 push {r4, r5, lr} 39e2: b083 sub sp, #12 39e4: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 39e6: 4b12 ldr r3, [pc, #72] ; (3a30 ) 39e8: 4798 blx r3 39ea: b190 cbz r0, 3a12 if(obj->realign.origo_align) 39ec: f894 3049 ldrb.w r3, [r4, #73] ; 0x49 39f0: f013 0f02 tst.w r3, #2 lv_obj_align_origo(obj, obj->realign.base, obj->realign.align, obj->realign.xofs, obj->realign.yofs); 39f4: f9b4 3044 ldrsh.w r3, [r4, #68] ; 0x44 39f8: f894 2048 ldrb.w r2, [r4, #72] ; 0x48 39fc: f9b4 1046 ldrsh.w r1, [r4, #70] ; 0x46 3a00: 9100 str r1, [sp, #0] 3a02: 6c21 ldr r1, [r4, #64] ; 0x40 3a04: 4620 mov r0, r4 3a06: bf14 ite ne 3a08: 4c0a ldrne r4, [pc, #40] ; (3a34 ) lv_obj_align(obj, obj->realign.base, obj->realign.align, obj->realign.xofs, obj->realign.yofs); 3a0a: 4c0b ldreq r4, [pc, #44] ; (3a38 ) 3a0c: 47a0 blx r4 } 3a0e: b003 add sp, #12 3a10: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3a12: 4b0a ldr r3, [pc, #40] ; (3a3c ) 3a14: 9300 str r3, [sp, #0] 3a16: f240 422a movw r2, #1066 ; 0x42a 3a1a: 4909 ldr r1, [pc, #36] ; (3a40 ) 3a1c: 2003 movs r0, #3 3a1e: 4d09 ldr r5, [pc, #36] ; (3a44 ) 3a20: 47a8 blx r5 3a22: 4622 mov r2, r4 3a24: 2300 movs r3, #0 3a26: 4808 ldr r0, [pc, #32] ; (3a48 ) 3a28: 4908 ldr r1, [pc, #32] ; (3a4c ) 3a2a: 4788 blx r1 3a2c: e7fe b.n 3a2c 3a2e: bf00 nop 3a30: 000022b1 .word 0x000022b1 3a34: 000036d1 .word 0x000036d1 3a38: 000035e9 .word 0x000035e9 3a3c: 000244f8 .word 0x000244f8 3a40: 000247dc .word 0x000247dc 3a44: 0001225d .word 0x0001225d 3a48: 0002483c .word 0x0002483c 3a4c: 000022b9 .word 0x000022b9 00003a50 : { 3a50: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 3a54: 4606 mov r6, r0 lv_obj_t * child = lv_obj_get_child(obj, NULL); 3a56: 2100 movs r1, #0 3a58: 4b0d ldr r3, [pc, #52] ; (3a90 ) 3a5a: 4798 blx r3 while(child != NULL) { 3a5c: b1b0 cbz r0, 3a8c 3a5e: 4604 mov r4, r0 lv_obj_invalidate(child); 3a60: 4d0c ldr r5, [pc, #48] ; (3a94 ) child->signal_cb(child, LV_SIGNAL_STYLE_CHG, NULL); 3a62: f04f 0800 mov.w r8, #0 child = lv_obj_get_child(obj, child); 3a66: 4f0a ldr r7, [pc, #40] ; (3a90 ) lv_obj_invalidate(child); 3a68: 4620 mov r0, r4 3a6a: 47a8 blx r5 child->signal_cb(child, LV_SIGNAL_STYLE_CHG, NULL); 3a6c: 69e3 ldr r3, [r4, #28] 3a6e: 4642 mov r2, r8 3a70: 2104 movs r1, #4 3a72: 4620 mov r0, r4 3a74: 4798 blx r3 lv_obj_invalidate(child); 3a76: 4620 mov r0, r4 3a78: 47a8 blx r5 refresh_children_style(child); /*Check children too*/ 3a7a: 4620 mov r0, r4 3a7c: f7ff ffe8 bl 3a50 child = lv_obj_get_child(obj, child); 3a80: 4621 mov r1, r4 3a82: 4630 mov r0, r6 3a84: 47b8 blx r7 while(child != NULL) { 3a86: 4604 mov r4, r0 3a88: 2800 cmp r0, #0 3a8a: d1ed bne.n 3a68 3a8c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 3a90: 00002de1 .word 0x00002de1 3a94: 00003321 .word 0x00003321 00003a98 : { 3a98: b530 push {r4, r5, lr} 3a9a: b083 sub sp, #12 3a9c: 4605 mov r5, r0 3a9e: 460c mov r4, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3aa0: 4b36 ldr r3, [pc, #216] ; (3b7c ) 3aa2: 4798 blx r3 3aa4: b198 cbz r0, 3ace switch(prop) { 3aa6: 2c71 cmp r4, #113 ; 0x71 3aa8: d846 bhi.n 3b38 3aaa: 2c70 cmp r4, #112 ; 0x70 3aac: d223 bcs.n 3af6 3aae: 2c41 cmp r4, #65 ; 0x41 3ab0: d81b bhi.n 3aea 3ab2: 2c40 cmp r4, #64 ; 0x40 3ab4: d21f bcs.n 3af6 3ab6: 2c02 cmp r4, #2 3ab8: d305 bcc.n 3ac6 3aba: 2c07 cmp r4, #7 3abc: d91b bls.n 3af6 3abe: f1a4 0310 sub.w r3, r4, #16 3ac2: 2b08 cmp r3, #8 3ac4: d917 bls.n 3af6 lv_obj_invalidate(obj); 3ac6: 4628 mov r0, r5 3ac8: 4b2d ldr r3, [pc, #180] ; (3b80 ) 3aca: 4798 blx r3 } 3acc: e02f b.n 3b2e LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3ace: 4b2d ldr r3, [pc, #180] ; (3b84 ) 3ad0: 9300 str r3, [sp, #0] 3ad2: f240 521d movw r2, #1309 ; 0x51d 3ad6: 492c ldr r1, [pc, #176] ; (3b88 ) 3ad8: 2003 movs r0, #3 3ada: 4c2c ldr r4, [pc, #176] ; (3b8c ) 3adc: 47a0 blx r4 3ade: 462a mov r2, r5 3ae0: 2300 movs r3, #0 3ae2: 482b ldr r0, [pc, #172] ; (3b90 ) 3ae4: 492b ldr r1, [pc, #172] ; (3b94 ) 3ae6: 4788 blx r1 3ae8: e7fe b.n 3ae8 switch(prop) { 3aea: 2c53 cmp r4, #83 ; 0x53 3aec: d821 bhi.n 3b32 3aee: 2c50 cmp r4, #80 ; 0x50 3af0: d201 bcs.n 3af6 3af2: 2c4c cmp r4, #76 ; 0x4c 3af4: d1e7 bne.n 3ac6 lv_obj_invalidate(obj); 3af6: 4628 mov r0, r5 3af8: 4b21 ldr r3, [pc, #132] ; (3b80 ) 3afa: 4798 blx r3 obj->signal_cb(obj, LV_SIGNAL_STYLE_CHG, NULL); 3afc: 69eb ldr r3, [r5, #28] 3afe: 2200 movs r2, #0 3b00: 2104 movs r1, #4 3b02: 4628 mov r0, r5 3b04: 4798 blx r3 switch(prop) { 3b06: 2c15 cmp r4, #21 3b08: d309 bcc.n 3b1e 3b0a: 2c18 cmp r4, #24 3b0c: d901 bls.n 3b12 3b0e: 2cff cmp r4, #255 ; 0xff 3b10: d105 bne.n 3b1e if(obj->parent) obj->parent->signal_cb(obj->parent, LV_SIGNAL_CHILD_CHG, NULL); 3b12: 6828 ldr r0, [r5, #0] 3b14: b118 cbz r0, 3b1e 3b16: 69c3 ldr r3, [r0, #28] 3b18: 2200 movs r2, #0 3b1a: 2101 movs r1, #1 3b1c: 4798 blx r3 lv_obj_invalidate(obj); 3b1e: 4628 mov r0, r5 3b20: 4b17 ldr r3, [pc, #92] ; (3b80 ) 3b22: 4798 blx r3 if(prop == LV_STYLE_PROP_ALL || (prop & LV_STYLE_INHERIT_MASK)) refresh_children_style(obj); 3b24: 2cff cmp r4, #255 ; 0xff 3b26: d024 beq.n 3b72 3b28: f414 4f00 tst.w r4, #32768 ; 0x8000 3b2c: d121 bne.n 3b72 } 3b2e: b003 add sp, #12 3b30: bd30 pop {r4, r5, pc} switch(prop) { 3b32: 2c5c cmp r4, #92 ; 0x5c 3b34: d1c7 bne.n 3ac6 3b36: e7de b.n 3af6 3b38: 2c7f cmp r4, #127 ; 0x7f 3b3a: d90c bls.n 3b56 3b3c: f248 0381 movw r3, #32897 ; 0x8081 3b40: 429c cmp r4, r3 3b42: d811 bhi.n 3b68 3b44: f248 0380 movw r3, #32896 ; 0x8080 3b48: 429c cmp r4, r3 3b4a: d2d4 bcs.n 3af6 3b4c: 2c90 cmp r4, #144 ; 0x90 3b4e: d0d2 beq.n 3af6 3b50: 2cff cmp r4, #255 ; 0xff 3b52: d1b8 bne.n 3ac6 3b54: e7cf b.n 3af6 3b56: 2c7e cmp r4, #126 ; 0x7e 3b58: d2cd bcs.n 3af6 3b5a: 2c73 cmp r4, #115 ; 0x73 3b5c: d3b3 bcc.n 3ac6 3b5e: 2c75 cmp r4, #117 ; 0x75 3b60: d9c9 bls.n 3af6 3b62: 2c7c cmp r4, #124 ; 0x7c 3b64: d1af bne.n 3ac6 3b66: e7c6 b.n 3af6 3b68: f248 038e movw r3, #32910 ; 0x808e 3b6c: 429c cmp r4, r3 3b6e: d1aa bne.n 3ac6 3b70: e7c1 b.n 3af6 if(prop == LV_STYLE_PROP_ALL || (prop & LV_STYLE_INHERIT_MASK)) refresh_children_style(obj); 3b72: 4628 mov r0, r5 3b74: 4b08 ldr r3, [pc, #32] ; (3b98 ) 3b76: 4798 blx r3 3b78: e7d9 b.n 3b2e 3b7a: bf00 nop 3b7c: 000022b1 .word 0x000022b1 3b80: 00003321 .word 0x00003321 3b84: 00024508 .word 0x00024508 3b88: 000247dc .word 0x000247dc 3b8c: 0001225d .word 0x0001225d 3b90: 0002483c .word 0x0002483c 3b94: 000022b9 .word 0x000022b9 3b98: 00003a51 .word 0x00003a51 00003b9c : { 3b9c: b510 push {r4, lr} 3b9e: 4604 mov r4, r0 lv_obj_clean_style_list(obj, part); 3ba0: 4b03 ldr r3, [pc, #12] ; (3bb0 ) 3ba2: 4798 blx r3 lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 3ba4: 21ff movs r1, #255 ; 0xff 3ba6: 4620 mov r0, r4 3ba8: 4b02 ldr r3, [pc, #8] ; (3bb4 ) 3baa: 4798 blx r3 3bac: bd10 pop {r4, pc} 3bae: bf00 nop 3bb0: 000030cd .word 0x000030cd 3bb4: 00003a99 .word 0x00003a99 00003bb8 : { 3bb8: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 3bbc: 4604 mov r4, r0 3bbe: 460f mov r7, r1 3bc0: 2600 movs r6, #0 lv_style_list_t * dsc = lv_obj_get_style_list(obj, part_sub); 3bc2: f8df 8088 ldr.w r8, [pc, #136] ; 3c4c void _lv_style_list_reset(lv_style_list_t * style_list); static inline lv_style_t * lv_style_list_get_style(lv_style_list_t * list, uint8_t id) { if(list->has_trans && list->skip_trans) id++; if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 3bc6: 4635 mov r5, r6 lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 3bc8: f8df 9084 ldr.w r9, [pc, #132] ; 3c50 3bcc: e005 b.n 3bda 3bce: 21ff movs r1, #255 ; 0xff 3bd0: 4638 mov r0, r7 3bd2: 47c8 blx r9 3bd4: 3601 adds r6, #1 for(part_sub = 0; part_sub != _LV_OBJ_PART_REAL_LAST; part_sub++) { 3bd6: 2e40 cmp r6, #64 ; 0x40 3bd8: d022 beq.n 3c20 lv_style_list_t * dsc = lv_obj_get_style_list(obj, part_sub); 3bda: b2f1 uxtb r1, r6 3bdc: 4638 mov r0, r7 3bde: 47c0 blx r8 if(dsc == NULL) break; 3be0: 4686 mov lr, r0 3be2: b1e8 cbz r0, 3c20 for(ci = 0; ci < dsc->style_cnt; ci++) { 3be4: 7901 ldrb r1, [r0, #4] 3be6: 2900 cmp r1, #0 3be8: d0f4 beq.n 3bd4 if(list->has_trans && list->skip_trans) id++; 3bea: f890 c005 ldrb.w ip, [r0, #5] 3bee: f00c 0c06 and.w ip, ip, #6 3bf2: 2300 movs r3, #0 3bf4: b2da uxtb r2, r3 3bf6: f1bc 0f06 cmp.w ip, #6 3bfa: bf04 itt eq 3bfc: 3201 addeq r2, #1 3bfe: b2d2 uxtbeq r2, r2 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 3c00: 428a cmp r2, r1 return list->style_list[id]; 3c02: bf3a itte cc 3c04: f8de 0000 ldrcc.w r0, [lr] 3c08: f850 2022 ldrcc.w r2, [r0, r2, lsl #2] if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 3c0c: 462a movcs r2, r5 if(class == style || style == NULL) { 3c0e: 4294 cmp r4, r2 3c10: d0dd beq.n 3bce 3c12: 2c00 cmp r4, #0 3c14: d0db beq.n 3bce 3c16: 3301 adds r3, #1 for(ci = 0; ci < dsc->style_cnt; ci++) { 3c18: b2da uxtb r2, r3 3c1a: 428a cmp r2, r1 3c1c: d3ea bcc.n 3bf4 3c1e: e7d9 b.n 3bd4 lv_obj_t * child = lv_obj_get_child(obj, NULL); 3c20: 2100 movs r1, #0 3c22: 4638 mov r0, r7 3c24: 4b08 ldr r3, [pc, #32] ; (3c48 ) 3c26: 4798 blx r3 while(child) { 3c28: 4605 mov r5, r0 3c2a: b150 cbz r0, 3c42 child = lv_obj_get_child(obj, child); 3c2c: 4e06 ldr r6, [pc, #24] ; (3c48 ) report_style_mod_core(style, child); 3c2e: 4629 mov r1, r5 3c30: 4620 mov r0, r4 3c32: f7ff ffc1 bl 3bb8 child = lv_obj_get_child(obj, child); 3c36: 4629 mov r1, r5 3c38: 4638 mov r0, r7 3c3a: 47b0 blx r6 while(child) { 3c3c: 4605 mov r5, r0 3c3e: 2800 cmp r0, #0 3c40: d1f5 bne.n 3c2e 3c42: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 3c46: bf00 nop 3c48: 00002de1 .word 0x00002de1 3c4c: 00002ffd .word 0x00002ffd 3c50: 00003a99 .word 0x00003a99 00003c54 : { 3c54: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 3c58: 4680 mov r8, r0 lv_disp_t * d = lv_disp_get_next(NULL); 3c5a: 2000 movs r0, #0 3c5c: 4b0f ldr r3, [pc, #60] ; (3c9c ) 3c5e: 4798 blx r3 while(d) { 3c60: b1c8 cbz r0, 3c96 3c62: 4681 mov r9, r0 _LV_LL_READ(d->scr_ll, i) { 3c64: f8df a040 ldr.w sl, [pc, #64] ; 3ca8 report_style_mod_core(style, i); 3c68: 4f0d ldr r7, [pc, #52] ; (3ca0 ) _LV_LL_READ(d->scr_ll, i) { 3c6a: 4e0e ldr r6, [pc, #56] ; (3ca4 ) 3c6c: f109 0530 add.w r5, r9, #48 ; 0x30 3c70: 4628 mov r0, r5 3c72: 47d0 blx sl 3c74: 4604 mov r4, r0 3c76: b140 cbz r0, 3c8a report_style_mod_core(style, i); 3c78: 4621 mov r1, r4 3c7a: 4640 mov r0, r8 3c7c: 47b8 blx r7 _LV_LL_READ(d->scr_ll, i) { 3c7e: 4621 mov r1, r4 3c80: 4628 mov r0, r5 3c82: 47b0 blx r6 3c84: 4604 mov r4, r0 3c86: 2800 cmp r0, #0 3c88: d1f6 bne.n 3c78 d = lv_disp_get_next(d); 3c8a: 4648 mov r0, r9 3c8c: 4b03 ldr r3, [pc, #12] ; (3c9c ) 3c8e: 4798 blx r3 while(d) { 3c90: 4681 mov r9, r0 3c92: 2800 cmp r0, #0 3c94: d1ea bne.n 3c6c 3c96: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 3c9a: bf00 nop 3c9c: 00010fb9 .word 0x00010fb9 3ca0: 00003bb9 .word 0x00003bb9 3ca4: 00011fbd .word 0x00011fbd 3ca8: 00011fa9 .word 0x00011fa9 00003cac : { 3cac: b5f8 push {r3, r4, r5, r6, r7, lr} 3cae: 4604 mov r4, r0 3cb0: 460d mov r5, r1 lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part); 3cb2: 7981 ldrb r1, [r0, #6] 3cb4: 6800 ldr r0, [r0, #0] 3cb6: 4b42 ldr r3, [pc, #264] ; (3dc0 ) 3cb8: 4798 blx r3 lv_style_t * style = _lv_style_list_get_transition_style(list); 3cba: 4b42 ldr r3, [pc, #264] ; (3dc4 ) 3cbc: 4798 blx r3 if((tr->prop & 0xF) < LV_STYLE_ID_COLOR) { /*Value*/ 3cbe: 88a1 ldrh r1, [r4, #4] 3cc0: f001 030f and.w r3, r1, #15 3cc4: 2b08 cmp r3, #8 3cc6: dc19 bgt.n 3cfc if(v == 0) x = tr->start_value._int; 3cc8: b945 cbnz r5, 3cdc 3cca: f9b4 2008 ldrsh.w r2, [r4, #8] _lv_style_set_int(style, tr->prop, x); 3cce: 4b3e ldr r3, [pc, #248] ; (3dc8 ) 3cd0: 4798 blx r3 lv_obj_refresh_style(tr->obj, tr->prop); 3cd2: 88a1 ldrh r1, [r4, #4] 3cd4: 6820 ldr r0, [r4, #0] 3cd6: 4b3d ldr r3, [pc, #244] ; (3dcc ) 3cd8: 4798 blx r3 3cda: bdf8 pop {r3, r4, r5, r6, r7, pc} else if(v == 255) x = tr->end_value._int; 3cdc: 2dff cmp r5, #255 ; 0xff 3cde: d00a beq.n 3cf6 else x = tr->start_value._int + ((int32_t)((int32_t)(tr->end_value._int - tr->start_value._int) * v) >> 8); 3ce0: f9b4 2008 ldrsh.w r2, [r4, #8] 3ce4: f9b4 300c ldrsh.w r3, [r4, #12] 3ce8: 1a9b subs r3, r3, r2 3cea: fb05 f503 mul.w r5, r5, r3 3cee: eb02 2225 add.w r2, r2, r5, asr #8 3cf2: b212 sxth r2, r2 3cf4: e7eb b.n 3cce else if(v == 255) x = tr->end_value._int; 3cf6: f9b4 200c ldrsh.w r2, [r4, #12] 3cfa: e7e8 b.n 3cce else if((tr->prop & 0xF) < LV_STYLE_ID_OPA) { /*Color*/ 3cfc: 2b0b cmp r3, #11 3cfe: dc43 bgt.n 3d88 if(v <= 0) x = tr->start_value._color; 3d00: 2d00 cmp r5, #0 3d02: dd05 ble.n 3d10 else if(v >= 255) x = tr->end_value._color; 3d04: 2dfe cmp r5, #254 ; 0xfe 3d06: dd05 ble.n 3d14 3d08: 89a2 ldrh r2, [r4, #12] _lv_style_set_color(style, tr->prop, x); 3d0a: 4b31 ldr r3, [pc, #196] ; (3dd0 ) 3d0c: 4798 blx r3 3d0e: e7e0 b.n 3cd2 if(v <= 0) x = tr->start_value._color; 3d10: 8922 ldrh r2, [r4, #8] 3d12: e7fa b.n 3d0a LV_ATTRIBUTE_FAST_MEM static inline lv_color_t lv_color_mix(lv_color_t c1, lv_color_t c2, uint8_t mix) { lv_color_t ret; #if LV_COLOR_DEPTH != 1 /*LV_COLOR_DEPTH == 8, 16 or 32*/ LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 3d14: b2ed uxtb r5, r5 3d16: f1c5 02ff rsb r2, r5, #255 ; 0xff 3d1a: 7b63 ldrb r3, [r4, #13] 3d1c: 08db lsrs r3, r3, #3 3d1e: 7a66 ldrb r6, [r4, #9] 3d20: 08f6 lsrs r6, r6, #3 3d22: fb02 f606 mul.w r6, r2, r6 3d26: fb05 6303 mla r3, r5, r3, r6 3d2a: eb03 2703 add.w r7, r3, r3, lsl #8 3d2e: eb03 13c7 add.w r3, r3, r7, lsl #7 3d32: f3c3 57c4 ubfx r7, r3, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 3d36: 89a3 ldrh r3, [r4, #12] 3d38: f3c3 1345 ubfx r3, r3, #5, #6 3d3c: 8926 ldrh r6, [r4, #8] 3d3e: f3c6 1645 ubfx r6, r6, #5, #6 3d42: fb02 f606 mul.w r6, r2, r6 3d46: fb05 6303 mla r3, r5, r3, r6 3d4a: eb03 2603 add.w r6, r3, r3, lsl #8 3d4e: eb03 13c6 add.w r3, r3, r6, lsl #7 3d52: f3c3 56c5 ubfx r6, r3, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 3d56: 7b23 ldrb r3, [r4, #12] 3d58: f003 031f and.w r3, r3, #31 3d5c: f894 e008 ldrb.w lr, [r4, #8] 3d60: f00e 0e1f and.w lr, lr, #31 3d64: fb02 f20e mul.w r2, r2, lr 3d68: fb05 2503 mla r5, r5, r3, r2 3d6c: eb05 2305 add.w r3, r5, r5, lsl #8 3d70: eb05 15c3 add.w r5, r5, r3, lsl #7 3d74: 0ded lsrs r5, r5, #23 3d76: f04f 0200 mov.w r2, #0 3d7a: f365 0204 bfi r2, r5, #0, #5 3d7e: f366 124a bfi r2, r6, #5, #6 3d82: f367 22cf bfi r2, r7, #11, #5 3d86: e7c0 b.n 3d0a else if((tr->prop & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/ 3d88: 2b0d cmp r3, #13 3d8a: dc12 bgt.n 3db2 if(v <= 0) x = tr->start_value._opa; 3d8c: 2d00 cmp r5, #0 3d8e: dd05 ble.n 3d9c else if(v >= 255) x = tr->end_value._opa; 3d90: 2dfe cmp r5, #254 ; 0xfe 3d92: dd05 ble.n 3da0 3d94: 7b22 ldrb r2, [r4, #12] _lv_style_set_opa(style, tr->prop, x); 3d96: 4b0f ldr r3, [pc, #60] ; (3dd4 ) 3d98: 4798 blx r3 3d9a: e79a b.n 3cd2 if(v <= 0) x = tr->start_value._opa; 3d9c: 7a22 ldrb r2, [r4, #8] 3d9e: e7fa b.n 3d96 else x = tr->start_value._opa + (((tr->end_value._opa - tr->start_value._opa) * v) >> 8); 3da0: 7a22 ldrb r2, [r4, #8] 3da2: 7b23 ldrb r3, [r4, #12] 3da4: 1a9b subs r3, r3, r2 3da6: fb05 f503 mul.w r5, r5, r3 3daa: eb02 2225 add.w r2, r2, r5, asr #8 3dae: b2d2 uxtb r2, r2 3db0: e7f1 b.n 3d96 if(v < 128) x = tr->start_value._ptr; 3db2: 2d7f cmp r5, #127 ; 0x7f 3db4: bfd4 ite le 3db6: 68a2 ldrle r2, [r4, #8] else x = tr->end_value._ptr; 3db8: 68e2 ldrgt r2, [r4, #12] _lv_style_set_ptr(style, tr->prop, x); 3dba: 4b07 ldr r3, [pc, #28] ; (3dd8 ) 3dbc: 4798 blx r3 3dbe: e788 b.n 3cd2 3dc0: 00002ffd .word 0x00002ffd 3dc4: 000070e7 .word 0x000070e7 3dc8: 000068e1 .word 0x000068e1 3dcc: 00003a99 .word 0x00003a99 3dd0: 00006a25 .word 0x00006a25 3dd4: 00006b69 .word 0x00006b69 3dd8: 00006c99 .word 0x00006c99 00003ddc : { 3ddc: b530 push {r4, r5, lr} 3dde: b083 sub sp, #12 3de0: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3de2: 4b0a ldr r3, [pc, #40] ; (3e0c ) 3de4: 4798 blx r3 3de6: b110 cbz r0, 3dee } 3de8: 2000 movs r0, #0 3dea: b003 add sp, #12 3dec: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3dee: 4b08 ldr r3, [pc, #32] ; (3e10 ) 3df0: 9300 str r3, [sp, #0] 3df2: f640 22b1 movw r2, #2737 ; 0xab1 3df6: 4907 ldr r1, [pc, #28] ; (3e14 ) 3df8: 2003 movs r0, #3 3dfa: 4d07 ldr r5, [pc, #28] ; (3e18 ) 3dfc: 47a8 blx r5 3dfe: 4622 mov r2, r4 3e00: 2300 movs r3, #0 3e02: 4806 ldr r0, [pc, #24] ; (3e1c ) 3e04: 4906 ldr r1, [pc, #24] ; (3e20 ) 3e06: 4788 blx r1 3e08: e7fe b.n 3e08 3e0a: bf00 nop 3e0c: 000022b1 .word 0x000022b1 3e10: 000245d8 .word 0x000245d8 3e14: 000247dc .word 0x000247dc 3e18: 0001225d .word 0x0001225d 3e1c: 0002483c .word 0x0002483c 3e20: 000022b9 .word 0x000022b9 00003e24 : { 3e24: b5f0 push {r4, r5, r6, r7, lr} 3e26: b083 sub sp, #12 3e28: 460d mov r5, r1 if(parent == NULL) { 3e2a: 4606 mov r6, r0 3e2c: b188 cbz r0, 3e52 LV_ASSERT_OBJ(parent, LV_OBJX_NAME); 3e2e: 4b9d ldr r3, [pc, #628] ; (40a4 ) 3e30: 4798 blx r3 3e32: 2800 cmp r0, #0 3e34: f040 8164 bne.w 4100 3e38: 4b9b ldr r3, [pc, #620] ; (40a8 ) 3e3a: 9300 str r3, [sp, #0] 3e3c: 22ed movs r2, #237 ; 0xed 3e3e: 499b ldr r1, [pc, #620] ; (40ac ) 3e40: 2003 movs r0, #3 3e42: 4c9b ldr r4, [pc, #620] ; (40b0 ) 3e44: 47a0 blx r4 3e46: 4632 mov r2, r6 3e48: 2300 movs r3, #0 3e4a: 489a ldr r0, [pc, #616] ; (40b4 ) 3e4c: 499a ldr r1, [pc, #616] ; (40b8 ) 3e4e: 4788 blx r1 3e50: e7fe b.n 3e50 lv_disp_t * disp = lv_disp_get_default(); 3e52: 4b9a ldr r3, [pc, #616] ; (40bc ) 3e54: 4798 blx r3 if(!disp) { 3e56: b948 cbnz r0, 3e6c LV_LOG_WARN("lv_obj_create: not display created to so far. No place to assign the new screen"); 3e58: 4b99 ldr r3, [pc, #612] ; (40c0 ) 3e5a: 9300 str r3, [sp, #0] 3e5c: 4b92 ldr r3, [pc, #584] ; (40a8 ) 3e5e: 22cf movs r2, #207 ; 0xcf 3e60: 4992 ldr r1, [pc, #584] ; (40ac ) 3e62: 2002 movs r0, #2 3e64: 4c92 ldr r4, [pc, #584] ; (40b0 ) 3e66: 47a0 blx r4 return NULL; 3e68: 4634 mov r4, r6 3e6a: e1f5 b.n 4258 new_obj = _lv_ll_ins_head(&disp->scr_ll); 3e6c: 3030 adds r0, #48 ; 0x30 3e6e: 4b95 ldr r3, [pc, #596] ; (40c4 ) 3e70: 4798 blx r3 3e72: 4604 mov r4, r0 LV_ASSERT_MEM(new_obj); 3e74: 4b8b ldr r3, [pc, #556] ; (40a4 ) 3e76: 4798 blx r3 3e78: b960 cbnz r0, 3e94 3e7a: 4b8b ldr r3, [pc, #556] ; (40a8 ) 3e7c: 9300 str r3, [sp, #0] 3e7e: 22d4 movs r2, #212 ; 0xd4 3e80: 498a ldr r1, [pc, #552] ; (40ac ) 3e82: 2003 movs r0, #3 3e84: 4d8a ldr r5, [pc, #552] ; (40b0 ) 3e86: 47a8 blx r5 3e88: 4622 mov r2, r4 3e8a: 2300 movs r3, #0 3e8c: 488e ldr r0, [pc, #568] ; (40c8 ) 3e8e: 498a ldr r1, [pc, #552] ; (40b8 ) 3e90: 4788 blx r1 3e92: e7fe b.n 3e92 if(new_obj == NULL) return NULL; 3e94: 2c00 cmp r4, #0 3e96: f000 81df beq.w 4258 _lv_memset_00(new_obj, sizeof(lv_obj_t)); 3e9a: 214c movs r1, #76 ; 0x4c 3e9c: 4620 mov r0, r4 3e9e: 4b8b ldr r3, [pc, #556] ; (40cc ) 3ea0: 4798 blx r3 new_obj->base_dir = LV_BIDI_DIR_LTR; 3ea2: f894 3035 ldrb.w r3, [r4, #53] ; 0x35 3ea6: f36f 1305 bfc r3, #4, #2 3eaa: f884 3035 strb.w r3, [r4, #53] ; 0x35 new_obj->signal_cb = lv_obj_signal; 3eae: 4b88 ldr r3, [pc, #544] ; (40d0 ) 3eb0: 61e3 str r3, [r4, #28] new_obj->design_cb = lv_obj_design; 3eb2: 4b88 ldr r3, [pc, #544] ; (40d4 ) 3eb4: 6223 str r3, [r4, #32] new_obj->event_cb = NULL; 3eb6: 2700 movs r7, #0 3eb8: 61a7 str r7, [r4, #24] new_obj->coords.x1 = 0; 3eba: 8227 strh r7, [r4, #16] new_obj->coords.y1 = 0; 3ebc: 8267 strh r7, [r4, #18] new_obj->coords.x2 = lv_disp_get_hor_res(NULL) - 1; 3ebe: 4638 mov r0, r7 3ec0: 4b85 ldr r3, [pc, #532] ; (40d8 ) 3ec2: 4798 blx r3 3ec4: 3801 subs r0, #1 3ec6: 82a0 strh r0, [r4, #20] new_obj->coords.y2 = lv_disp_get_ver_res(NULL) - 1; 3ec8: 4638 mov r0, r7 3eca: 4b84 ldr r3, [pc, #528] ; (40dc ) 3ecc: 4798 blx r3 3ece: 3801 subs r0, #1 3ed0: 82e0 strh r0, [r4, #22] _lv_ll_init(&(new_obj->child_ll), sizeof(lv_obj_t)); 3ed2: 214c movs r1, #76 ; 0x4c 3ed4: 1d20 adds r0, r4, #4 3ed6: 4b82 ldr r3, [pc, #520] ; (40e0 ) 3ed8: 4798 blx r3 new_obj->ext_draw_pad = 0; 3eda: 2300 movs r3, #0 3edc: 8663 strh r3, [r4, #50] ; 0x32 new_obj->ext_click_pad_hor = 0; 3ede: f884 3030 strb.w r3, [r4, #48] ; 0x30 new_obj->ext_click_pad_ver = 0; 3ee2: f884 3031 strb.w r3, [r4, #49] ; 0x31 new_obj->realign.align = LV_ALIGN_CENTER; 3ee6: f884 3048 strb.w r3, [r4, #72] ; 0x48 new_obj->realign.xofs = 0; 3eea: f8a4 3044 strh.w r3, [r4, #68] ; 0x44 new_obj->realign.yofs = 0; 3eee: f8a4 3046 strh.w r3, [r4, #70] ; 0x46 new_obj->realign.base = NULL; 3ef2: 6423 str r3, [r4, #64] ; 0x40 new_obj->realign.auto_realign = 0; 3ef4: f894 2049 ldrb.w r2, [r4, #73] ; 0x49 3ef8: f363 0200 bfi r2, r3, #0, #1 3efc: f884 2049 strb.w r2, [r4, #73] ; 0x49 new_obj->group_p = NULL; 3f00: 63a3 str r3, [r4, #56] ; 0x38 new_obj->adv_hittest = 0; 3f02: f894 2034 ldrb.w r2, [r4, #52] ; 0x34 new_obj->click = 1; 3f06: f002 027f and.w r2, r2, #127 ; 0x7f new_obj->drag = 0; 3f0a: f042 0201 orr.w r2, r2, #1 new_obj->drag_dir = LV_DRAG_DIR_BOTH; 3f0e: f894 1035 ldrb.w r1, [r4, #53] ; 0x35 3f12: 2003 movs r0, #3 3f14: f360 0143 bfi r1, r0, #1, #3 new_obj->protect = LV_PROTECT_NONE; 3f18: f884 303c strb.w r3, [r4, #60] ; 0x3c new_obj->parent_event = 0; 3f1c: f002 02c1 and.w r2, r2, #193 ; 0xc1 3f20: f363 1286 bfi r2, r3, #6, #1 3f24: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->gesture_parent = 1; 3f28: f041 0101 orr.w r1, r1, #1 3f2c: f884 1035 strb.w r1, [r4, #53] ; 0x35 new_obj->state = LV_STATE_DEFAULT; 3f30: f884 303d strb.w r3, [r4, #61] ; 0x3d new_obj->ext_attr = NULL; 3f34: 6263 str r3, [r4, #36] ; 0x24 lv_style_list_init(&new_obj->style_list); 3f36: f104 0728 add.w r7, r4, #40 ; 0x28 3f3a: 4638 mov r0, r7 3f3c: 4b69 ldr r3, [pc, #420] ; (40e4 ) 3f3e: 4798 blx r3 if(copy == NULL) { 3f40: 2d00 cmp r5, #0 3f42: f000 816c beq.w 421e lv_style_list_copy(&new_obj->style_list, ©->style_list); 3f46: f105 0128 add.w r1, r5, #40 ; 0x28 3f4a: 4638 mov r0, r7 3f4c: 4b66 ldr r3, [pc, #408] ; (40e8 ) 3f4e: 4798 blx r3 3f50: f105 020f add.w r2, r5, #15 3f54: f104 0118 add.w r1, r4, #24 uint8_t * d8 = (uint8_t *)dst; 3f58: f104 0310 add.w r3, r4, #16 *d8 = *s8; 3f5c: f812 0f01 ldrb.w r0, [r2, #1]! 3f60: f803 0b01 strb.w r0, [r3], #1 while(len) { 3f64: 428b cmp r3, r1 3f66: d1f9 bne.n 3f5c new_obj->ext_draw_pad = copy->ext_draw_pad; 3f68: f9b5 3032 ldrsh.w r3, [r5, #50] ; 0x32 3f6c: 8663 strh r3, [r4, #50] ; 0x32 new_obj->ext_click_pad_hor = copy->ext_click_pad_hor; 3f6e: f895 3030 ldrb.w r3, [r5, #48] ; 0x30 3f72: f884 3030 strb.w r3, [r4, #48] ; 0x30 new_obj->ext_click_pad_ver = copy->ext_click_pad_ver; 3f76: f895 3031 ldrb.w r3, [r5, #49] ; 0x31 3f7a: f884 3031 strb.w r3, [r4, #49] ; 0x31 new_obj->realign.align = copy->realign.align; 3f7e: f895 3048 ldrb.w r3, [r5, #72] ; 0x48 3f82: f884 3048 strb.w r3, [r4, #72] ; 0x48 new_obj->realign.xofs = copy->realign.xofs; 3f86: f9b5 3044 ldrsh.w r3, [r5, #68] ; 0x44 3f8a: f8a4 3044 strh.w r3, [r4, #68] ; 0x44 new_obj->realign.yofs = copy->realign.yofs; 3f8e: f9b5 3046 ldrsh.w r3, [r5, #70] ; 0x46 3f92: f8a4 3046 strh.w r3, [r4, #70] ; 0x46 new_obj->realign.base = copy->realign.base; 3f96: 6c2b ldr r3, [r5, #64] ; 0x40 3f98: 6423 str r3, [r4, #64] ; 0x40 new_obj->realign.auto_realign = copy->realign.auto_realign; 3f9a: f895 2049 ldrb.w r2, [r5, #73] ; 0x49 3f9e: f894 3049 ldrb.w r3, [r4, #73] ; 0x49 3fa2: f362 0300 bfi r3, r2, #0, #1 3fa6: f884 3049 strb.w r3, [r4, #73] ; 0x49 new_obj->event_cb = copy->event_cb; 3faa: 69ab ldr r3, [r5, #24] 3fac: 61a3 str r3, [r4, #24] new_obj->adv_hittest = copy->adv_hittest; 3fae: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 3fb2: 09db lsrs r3, r3, #7 3fb4: f894 2034 ldrb.w r2, [r4, #52] ; 0x34 3fb8: f363 12c7 bfi r2, r3, #7, #1 3fbc: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->click = copy->click; 3fc0: f895 2034 ldrb.w r2, [r5, #52] ; 0x34 3fc4: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 3fc8: f362 0300 bfi r3, r2, #0, #1 3fcc: f884 3034 strb.w r3, [r4, #52] ; 0x34 new_obj->drag = copy->drag; 3fd0: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 3fd4: f3c3 0340 ubfx r3, r3, #1, #1 3fd8: f894 2034 ldrb.w r2, [r4, #52] ; 0x34 3fdc: f363 0241 bfi r2, r3, #1, #1 3fe0: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->drag_dir = copy->drag_dir; 3fe4: f895 3035 ldrb.w r3, [r5, #53] ; 0x35 3fe8: f3c3 0342 ubfx r3, r3, #1, #3 3fec: f894 2035 ldrb.w r2, [r4, #53] ; 0x35 3ff0: f363 0243 bfi r2, r3, #1, #3 3ff4: f884 2035 strb.w r2, [r4, #53] ; 0x35 new_obj->drag_throw = copy->drag_throw; 3ff8: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 3ffc: f3c3 0380 ubfx r3, r3, #2, #1 4000: f894 2034 ldrb.w r2, [r4, #52] ; 0x34 4004: f363 0282 bfi r2, r3, #2, #1 4008: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->drag_parent = copy->drag_parent; 400c: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 4010: f3c3 03c0 ubfx r3, r3, #3, #1 4014: b2d2 uxtb r2, r2 4016: f363 02c3 bfi r2, r3, #3, #1 401a: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->hidden = copy->hidden; 401e: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 4022: f3c3 1300 ubfx r3, r3, #4, #1 4026: b2d2 uxtb r2, r2 4028: f363 1204 bfi r2, r3, #4, #1 402c: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->top = copy->top; 4030: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 4034: f3c3 1340 ubfx r3, r3, #5, #1 4038: b2d2 uxtb r2, r2 403a: f363 1245 bfi r2, r3, #5, #1 403e: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->parent_event = copy->parent_event; 4042: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 4046: f3c3 1380 ubfx r3, r3, #6, #1 404a: b2d2 uxtb r2, r2 404c: f363 1286 bfi r2, r3, #6, #1 4050: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->protect = copy->protect; 4054: f895 303c ldrb.w r3, [r5, #60] ; 0x3c 4058: f884 303c strb.w r3, [r4, #60] ; 0x3c new_obj->gesture_parent = copy->gesture_parent; 405c: f895 2035 ldrb.w r2, [r5, #53] ; 0x35 4060: f894 3035 ldrb.w r3, [r4, #53] ; 0x35 4064: f362 0300 bfi r3, r2, #0, #1 4068: f884 3035 strb.w r3, [r4, #53] ; 0x35 if(copy->group_p != NULL) { 406c: 6ba8 ldr r0, [r5, #56] ; 0x38 406e: b110 cbz r0, 4076 lv_group_add_obj(copy->group_p, new_obj); 4070: 4621 mov r1, r4 4072: 4b1e ldr r3, [pc, #120] ; (40ec ) 4074: 4798 blx r3 if(lv_obj_get_parent(copy) != NULL && parent != NULL) { 4076: 4628 mov r0, r5 4078: 4b1d ldr r3, [pc, #116] ; (40f0 ) 407a: 4798 blx r3 407c: 2800 cmp r0, #0 407e: f000 80d9 beq.w 4234 4082: 2e00 cmp r6, #0 4084: f000 80df beq.w 4246 lv_obj_set_pos(new_obj, lv_obj_get_x(copy), lv_obj_get_y(copy)); 4088: 4628 mov r0, r5 408a: 4b1a ldr r3, [pc, #104] ; (40f4 ) 408c: 4798 blx r3 408e: 4607 mov r7, r0 4090: 4628 mov r0, r5 4092: 4b19 ldr r3, [pc, #100] ; (40f8 ) 4094: 4798 blx r3 4096: 4602 mov r2, r0 4098: 4639 mov r1, r7 409a: 4620 mov r0, r4 409c: 4b17 ldr r3, [pc, #92] ; (40fc ) 409e: 4798 blx r3 40a0: e0c9 b.n 4236 40a2: bf00 nop 40a4: 000022b1 .word 0x000022b1 40a8: 000245ec .word 0x000245ec 40ac: 000247dc .word 0x000247dc 40b0: 0001225d .word 0x0001225d 40b4: 0002483c .word 0x0002483c 40b8: 000022b9 .word 0x000022b9 40bc: 00010ee1 .word 0x00010ee1 40c0: 00024938 .word 0x00024938 40c4: 00011f11 .word 0x00011f11 40c8: 00023fd8 .word 0x00023fd8 40cc: 00012b37 .word 0x00012b37 40d0: 00005a05 .word 0x00005a05 40d4: 00005429 .word 0x00005429 40d8: 00010eed .word 0x00010eed 40dc: 00010f15 .word 0x00010f15 40e0: 00011ef9 .word 0x00011ef9 40e4: 000064e9 .word 0x000064e9 40e8: 00007169 .word 0x00007169 40ec: 0000259d .word 0x0000259d 40f0: 00002c7d .word 0x00002c7d 40f4: 00002e9d .word 0x00002e9d 40f8: 00002efd .word 0x00002efd 40fc: 0000343d .word 0x0000343d new_obj = _lv_ll_ins_head(&parent->child_ll); 4100: 1d30 adds r0, r6, #4 4102: 4b57 ldr r3, [pc, #348] ; (4260 ) 4104: 4798 blx r3 4106: 4604 mov r4, r0 LV_ASSERT_MEM(new_obj); 4108: 4b56 ldr r3, [pc, #344] ; (4264 ) 410a: 4798 blx r3 410c: 2800 cmp r0, #0 410e: d047 beq.n 41a0 if(new_obj == NULL) return NULL; 4110: 2c00 cmp r4, #0 4112: f000 80a1 beq.w 4258 _lv_memset_00(new_obj, sizeof(lv_obj_t)); 4116: 214c movs r1, #76 ; 0x4c 4118: 4620 mov r0, r4 411a: 4b53 ldr r3, [pc, #332] ; (4268 ) 411c: 4798 blx r3 new_obj->parent = parent; 411e: 6026 str r6, [r4, #0] new_obj->base_dir = LV_BIDI_DIR_LTR; 4120: f894 3035 ldrb.w r3, [r4, #53] ; 0x35 4124: f36f 1305 bfc r3, #4, #2 4128: f884 3035 strb.w r3, [r4, #53] ; 0x35 new_obj->signal_cb = lv_obj_signal; 412c: 4b4f ldr r3, [pc, #316] ; (426c ) 412e: 61e3 str r3, [r4, #28] new_obj->design_cb = lv_obj_design; 4130: 4b4f ldr r3, [pc, #316] ; (4270 ) 4132: 6223 str r3, [r4, #32] new_obj->event_cb = NULL; 4134: 2000 movs r0, #0 4136: 61a0 str r0, [r4, #24] new_obj->coords.y1 = parent->coords.y1; 4138: f9b6 3012 ldrsh.w r3, [r6, #18] 413c: 8263 strh r3, [r4, #18] new_obj->coords.y2 = parent->coords.y1 + LV_OBJ_DEF_HEIGHT; 413e: 8a77 ldrh r7, [r6, #18] 4140: 4b4c ldr r3, [pc, #304] ; (4274 ) 4142: 4798 blx r3 4144: 2332 movs r3, #50 ; 0x32 4146: fb03 f300 mul.w r3, r3, r0 414a: 3350 adds r3, #80 ; 0x50 414c: f5b3 7fa0 cmp.w r3, #320 ; 0x140 4150: da33 bge.n 41ba 4152: 2301 movs r3, #1 4154: 443b add r3, r7 4156: 82e3 strh r3, [r4, #22] if(lv_obj_get_base_dir(new_obj) == LV_BIDI_DIR_RTL) { 4158: 4620 mov r0, r4 415a: 4b47 ldr r3, [pc, #284] ; (4278 ) 415c: 4798 blx r3 415e: 2801 cmp r0, #1 4160: d03a beq.n 41d8 new_obj->coords.x1 = parent->coords.x1; 4162: f9b6 3010 ldrsh.w r3, [r6, #16] 4166: 8223 strh r3, [r4, #16] new_obj->coords.x2 = parent->coords.x1 + LV_OBJ_DEF_WIDTH; 4168: 8a37 ldrh r7, [r6, #16] 416a: 2000 movs r0, #0 416c: 4b41 ldr r3, [pc, #260] ; (4274 ) 416e: 4798 blx r3 4170: 2364 movs r3, #100 ; 0x64 4172: fb03 f300 mul.w r3, r3, r0 4176: 3350 adds r3, #80 ; 0x50 4178: f5b3 7fa0 cmp.w r3, #320 ; 0x140 417c: db4d blt.n 421a 417e: 2000 movs r0, #0 4180: 4b3c ldr r3, [pc, #240] ; (4274 ) 4182: 4798 blx r3 4184: 2364 movs r3, #100 ; 0x64 4186: fb03 f300 mul.w r3, r3, r0 418a: 3350 adds r3, #80 ; 0x50 418c: 4a3b ldr r2, [pc, #236] ; (427c ) 418e: fb82 1203 smull r1, r2, r2, r3 4192: 17db asrs r3, r3, #31 4194: ebc3 13a2 rsb r3, r3, r2, asr #6 4198: b29b uxth r3, r3 419a: 443b add r3, r7 419c: 82a3 strh r3, [r4, #20] 419e: e698 b.n 3ed2 LV_ASSERT_MEM(new_obj); 41a0: 4b37 ldr r3, [pc, #220] ; (4280 ) 41a2: 9300 str r3, [sp, #0] 41a4: 22f0 movs r2, #240 ; 0xf0 41a6: 4937 ldr r1, [pc, #220] ; (4284 ) 41a8: 2003 movs r0, #3 41aa: 4d37 ldr r5, [pc, #220] ; (4288 ) 41ac: 47a8 blx r5 41ae: 4622 mov r2, r4 41b0: 2300 movs r3, #0 41b2: 4836 ldr r0, [pc, #216] ; (428c ) 41b4: 4936 ldr r1, [pc, #216] ; (4290 ) 41b6: 4788 blx r1 41b8: e7fe b.n 41b8 new_obj->coords.y2 = parent->coords.y1 + LV_OBJ_DEF_HEIGHT; 41ba: 2000 movs r0, #0 41bc: 4b2d ldr r3, [pc, #180] ; (4274 ) 41be: 4798 blx r3 41c0: 2332 movs r3, #50 ; 0x32 41c2: fb03 f300 mul.w r3, r3, r0 41c6: 3350 adds r3, #80 ; 0x50 41c8: 4a2c ldr r2, [pc, #176] ; (427c ) 41ca: fb82 1203 smull r1, r2, r2, r3 41ce: 17db asrs r3, r3, #31 41d0: ebc3 13a2 rsb r3, r3, r2, asr #6 41d4: b29b uxth r3, r3 41d6: e7bd b.n 4154 new_obj->coords.x2 = parent->coords.x2; 41d8: f9b6 3014 ldrsh.w r3, [r6, #20] 41dc: 82a3 strh r3, [r4, #20] new_obj->coords.x1 = parent->coords.x2 - LV_OBJ_DEF_WIDTH; 41de: 8ab7 ldrh r7, [r6, #20] 41e0: 2000 movs r0, #0 41e2: 4b24 ldr r3, [pc, #144] ; (4274 ) 41e4: 4798 blx r3 41e6: 2364 movs r3, #100 ; 0x64 41e8: fb03 f300 mul.w r3, r3, r0 41ec: 3350 adds r3, #80 ; 0x50 41ee: f5b3 7fa0 cmp.w r3, #320 ; 0x140 41f2: db10 blt.n 4216 41f4: 2000 movs r0, #0 41f6: 4b1f ldr r3, [pc, #124] ; (4274 ) 41f8: 4798 blx r3 41fa: 2364 movs r3, #100 ; 0x64 41fc: fb03 f300 mul.w r3, r3, r0 4200: 3350 adds r3, #80 ; 0x50 4202: 4a1e ldr r2, [pc, #120] ; (427c ) 4204: fb82 1203 smull r1, r2, r2, r3 4208: 17db asrs r3, r3, #31 420a: ebc3 13a2 rsb r3, r3, r2, asr #6 420e: b29b uxth r3, r3 4210: 1afb subs r3, r7, r3 4212: 8223 strh r3, [r4, #16] 4214: e65d b.n 3ed2 4216: 2301 movs r3, #1 4218: e7fa b.n 4210 new_obj->coords.x2 = parent->coords.x1 + LV_OBJ_DEF_WIDTH; 421a: 2301 movs r3, #1 421c: e7bd b.n 419a if(parent != NULL) lv_theme_apply(new_obj, LV_THEME_OBJ); 421e: b126 cbz r6, 422a 4220: 2102 movs r1, #2 4222: 4620 mov r0, r4 4224: 4b1b ldr r3, [pc, #108] ; (4294 ) 4226: 4798 blx r3 4228: e005 b.n 4236 else lv_theme_apply(new_obj, LV_THEME_SCR); 422a: 2101 movs r1, #1 422c: 4620 mov r0, r4 422e: 4b19 ldr r3, [pc, #100] ; (4294 ) 4230: 4798 blx r3 4232: e008 b.n 4246 if(parent != NULL) { 4234: b13e cbz r6, 4246 parent->signal_cb(parent, LV_SIGNAL_CHILD_CHG, new_obj); 4236: 69f3 ldr r3, [r6, #28] 4238: 4622 mov r2, r4 423a: 2101 movs r1, #1 423c: 4630 mov r0, r6 423e: 4798 blx r3 lv_obj_invalidate(new_obj); 4240: 4620 mov r0, r4 4242: 4b15 ldr r3, [pc, #84] ; (4298 ) 4244: 4798 blx r3 LV_LOG_INFO("Object create ready"); 4246: 4b15 ldr r3, [pc, #84] ; (429c ) 4248: 9300 str r3, [sp, #0] 424a: 4b0d ldr r3, [pc, #52] ; (4280 ) 424c: f240 1287 movw r2, #391 ; 0x187 4250: 490c ldr r1, [pc, #48] ; (4284 ) 4252: 2001 movs r0, #1 4254: 4d0c ldr r5, [pc, #48] ; (4288 ) 4256: 47a8 blx r5 } 4258: 4620 mov r0, r4 425a: b003 add sp, #12 425c: bdf0 pop {r4, r5, r6, r7, pc} 425e: bf00 nop 4260: 00011f11 .word 0x00011f11 4264: 000022b1 .word 0x000022b1 4268: 00012b37 .word 0x00012b37 426c: 00005a05 .word 0x00005a05 4270: 00005429 .word 0x00005429 4274: 00010f3d .word 0x00010f3d 4278: 00003ddd .word 0x00003ddd 427c: 66666667 .word 0x66666667 4280: 000245ec .word 0x000245ec 4284: 000247dc .word 0x000247dc 4288: 0001225d .word 0x0001225d 428c: 00023fd8 .word 0x00023fd8 4290: 000022b9 .word 0x000022b9 4294: 000141e9 .word 0x000141e9 4298: 00003321 .word 0x00003321 429c: 00024988 .word 0x00024988 000042a0 : { 42a0: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 42a4: b084 sub sp, #16 42a6: 4604 mov r4, r0 42a8: 460d mov r5, r1 42aa: 4616 mov r6, r2 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 42ac: 4b32 ldr r3, [pc, #200] ; (4378 ) 42ae: 4798 blx r3 42b0: b968 cbnz r0, 42ce 42b2: 4b32 ldr r3, [pc, #200] ; (437c ) 42b4: 9300 str r3, [sp, #0] 42b6: f240 22e5 movw r2, #741 ; 0x2e5 42ba: 4931 ldr r1, [pc, #196] ; (4380 ) 42bc: 2003 movs r0, #3 42be: 4d31 ldr r5, [pc, #196] ; (4384 ) 42c0: 47a8 blx r5 42c2: 4622 mov r2, r4 42c4: 2300 movs r3, #0 42c6: 4830 ldr r0, [pc, #192] ; (4388 ) 42c8: 4930 ldr r1, [pc, #192] ; (438c ) 42ca: 4788 blx r1 42cc: e7fe b.n 42cc if(lv_obj_get_width(obj) == w && lv_obj_get_height(obj) == h) { 42ce: 4620 mov r0, r4 42d0: 4b2f ldr r3, [pc, #188] ; (4390 ) 42d2: 4798 blx r3 42d4: 42a8 cmp r0, r5 42d6: d03f beq.n 4358 lv_obj_invalidate(obj); 42d8: 4620 mov r0, r4 42da: 4b2e ldr r3, [pc, #184] ; (4394 ) 42dc: 4798 blx r3 lv_obj_get_coords(obj, &ori); 42de: a902 add r1, sp, #8 42e0: 4620 mov r0, r4 42e2: 4b2d ldr r3, [pc, #180] ; (4398 ) 42e4: 4798 blx r3 obj->coords.y2 = obj->coords.y1 + h - 1; 42e6: 1e73 subs r3, r6, #1 42e8: 8a62 ldrh r2, [r4, #18] 42ea: 4413 add r3, r2 42ec: 82e3 strh r3, [r4, #22] if(lv_obj_get_base_dir(obj) == LV_BIDI_DIR_RTL) { 42ee: 4620 mov r0, r4 42f0: 4b2a ldr r3, [pc, #168] ; (439c ) 42f2: 4798 blx r3 42f4: 2801 cmp r0, #1 42f6: d035 beq.n 4364 obj->coords.x2 = obj->coords.x1 + w - 1; 42f8: 1e6b subs r3, r5, #1 42fa: 8a22 ldrh r2, [r4, #16] 42fc: 4413 add r3, r2 42fe: 82a3 strh r3, [r4, #20] obj->signal_cb(obj, LV_SIGNAL_COORD_CHG, &ori); 4300: 69e3 ldr r3, [r4, #28] 4302: aa02 add r2, sp, #8 4304: 2102 movs r1, #2 4306: 4620 mov r0, r4 4308: 4798 blx r3 lv_obj_t * par = lv_obj_get_parent(obj); 430a: 4620 mov r0, r4 430c: 4b24 ldr r3, [pc, #144] ; (43a0 ) 430e: 4798 blx r3 if(par != NULL) par->signal_cb(par, LV_SIGNAL_CHILD_CHG, obj); 4310: b118 cbz r0, 431a 4312: 69c5 ldr r5, [r0, #28] 4314: 4622 mov r2, r4 4316: 2101 movs r1, #1 4318: 47a8 blx r5 _LV_LL_READ(obj->child_ll, i) { 431a: 1d26 adds r6, r4, #4 431c: 4630 mov r0, r6 431e: 4b21 ldr r3, [pc, #132] ; (43a4 ) 4320: 4798 blx r3 4322: 4605 mov r5, r0 4324: b168 cbz r0, 4342 i->signal_cb(i, LV_SIGNAL_PARENT_SIZE_CHG, &ori); 4326: f04f 0803 mov.w r8, #3 _LV_LL_READ(obj->child_ll, i) { 432a: 4f1f ldr r7, [pc, #124] ; (43a8 ) i->signal_cb(i, LV_SIGNAL_PARENT_SIZE_CHG, &ori); 432c: 69eb ldr r3, [r5, #28] 432e: aa02 add r2, sp, #8 4330: 4641 mov r1, r8 4332: 4628 mov r0, r5 4334: 4798 blx r3 _LV_LL_READ(obj->child_ll, i) { 4336: 4629 mov r1, r5 4338: 4630 mov r0, r6 433a: 47b8 blx r7 433c: 4605 mov r5, r0 433e: 2800 cmp r0, #0 4340: d1f4 bne.n 432c lv_obj_invalidate(obj); 4342: 4620 mov r0, r4 4344: 4b13 ldr r3, [pc, #76] ; (4394 ) 4346: 4798 blx r3 if(obj->realign.auto_realign) lv_obj_realign(obj); 4348: f894 3049 ldrb.w r3, [r4, #73] ; 0x49 434c: f013 0f01 tst.w r3, #1 4350: d10e bne.n 4370 } 4352: b004 add sp, #16 4354: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(lv_obj_get_width(obj) == w && lv_obj_get_height(obj) == h) { 4358: 4620 mov r0, r4 435a: 4b14 ldr r3, [pc, #80] ; (43ac ) 435c: 4798 blx r3 435e: 42b0 cmp r0, r6 4360: d1ba bne.n 42d8 4362: e7f6 b.n 4352 obj->coords.x1 = obj->coords.x2 - w + 1; 4364: f1c5 0301 rsb r3, r5, #1 4368: 8aa2 ldrh r2, [r4, #20] 436a: 4413 add r3, r2 436c: 8223 strh r3, [r4, #16] 436e: e7c7 b.n 4300 if(obj->realign.auto_realign) lv_obj_realign(obj); 4370: 4620 mov r0, r4 4372: 4b0f ldr r3, [pc, #60] ; (43b0 ) 4374: 4798 blx r3 4376: e7ec b.n 4352 4378: 000022b1 .word 0x000022b1 437c: 00024610 .word 0x00024610 4380: 000247dc .word 0x000247dc 4384: 0001225d .word 0x0001225d 4388: 0002483c .word 0x0002483c 438c: 000022b9 .word 0x000022b9 4390: 00002f5d .word 0x00002f5d 4394: 00003321 .word 0x00003321 4398: 00002e41 .word 0x00002e41 439c: 00003ddd .word 0x00003ddd 43a0: 00002c7d .word 0x00002c7d 43a4: 00011fa9 .word 0x00011fa9 43a8: 00011fbd .word 0x00011fbd 43ac: 00002fad .word 0x00002fad 43b0: 000039e1 .word 0x000039e1 000043b4 : { 43b4: b530 push {r4, r5, lr} 43b6: b083 sub sp, #12 43b8: 4604 mov r4, r0 43ba: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 43bc: 4b0d ldr r3, [pc, #52] ; (43f4 ) 43be: 4798 blx r3 43c0: b968 cbnz r0, 43de 43c2: 4b0d ldr r3, [pc, #52] ; (43f8 ) 43c4: 9300 str r3, [sp, #0] 43c6: f240 3227 movw r2, #807 ; 0x327 43ca: 490c ldr r1, [pc, #48] ; (43fc ) 43cc: 2003 movs r0, #3 43ce: 4d0c ldr r5, [pc, #48] ; (4400 ) 43d0: 47a8 blx r5 43d2: 4622 mov r2, r4 43d4: 2300 movs r3, #0 43d6: 480b ldr r0, [pc, #44] ; (4404 ) 43d8: 490b ldr r1, [pc, #44] ; (4408 ) 43da: 4788 blx r1 43dc: e7fe b.n 43dc lv_obj_set_size(obj, lv_obj_get_width(obj), h); 43de: 4620 mov r0, r4 43e0: 4b0a ldr r3, [pc, #40] ; (440c ) 43e2: 4798 blx r3 43e4: 462a mov r2, r5 43e6: 4601 mov r1, r0 43e8: 4620 mov r0, r4 43ea: 4b09 ldr r3, [pc, #36] ; (4410 ) 43ec: 4798 blx r3 } 43ee: b003 add sp, #12 43f0: bd30 pop {r4, r5, pc} 43f2: bf00 nop 43f4: 000022b1 .word 0x000022b1 43f8: 00024634 .word 0x00024634 43fc: 000247dc .word 0x000247dc 4400: 0001225d .word 0x0001225d 4404: 0002483c .word 0x0002483c 4408: 000022b9 .word 0x000022b9 440c: 00002f5d .word 0x00002f5d 4410: 000042a1 .word 0x000042a1 00004414 : { 4414: b530 push {r4, r5, lr} 4416: b083 sub sp, #12 4418: 4604 mov r4, r0 441a: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 441c: 4b0c ldr r3, [pc, #48] ; (4450 ) 441e: 4798 blx r3 4420: b138 cbz r0, 4432 return (obj->protect & prot) == 0 ? false : true; 4422: f894 303c ldrb.w r3, [r4, #60] ; 0x3c 4426: 421d tst r5, r3 } 4428: bf14 ite ne 442a: 2001 movne r0, #1 442c: 2000 moveq r0, #0 442e: b003 add sp, #12 4430: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4432: 4b08 ldr r3, [pc, #32] ; (4454 ) 4434: 9300 str r3, [sp, #0] 4436: f640 22d7 movw r2, #2775 ; 0xad7 443a: 4907 ldr r1, [pc, #28] ; (4458 ) 443c: 2003 movs r0, #3 443e: 4d07 ldr r5, [pc, #28] ; (445c ) 4440: 47a8 blx r5 4442: 4622 mov r2, r4 4444: 2300 movs r3, #0 4446: 4806 ldr r0, [pc, #24] ; (4460 ) 4448: 4906 ldr r1, [pc, #24] ; (4464 ) 444a: 4788 blx r1 444c: e7fe b.n 444c 444e: bf00 nop 4450: 000022b1 .word 0x000022b1 4454: 0002465c .word 0x0002465c 4458: 000247dc .word 0x000247dc 445c: 0001225d .word 0x0001225d 4460: 0002483c .word 0x0002483c 4464: 000022b9 .word 0x000022b9 00004468 : { 4468: b530 push {r4, r5, lr} 446a: b085 sub sp, #20 446c: 4604 mov r4, r0 446e: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4470: 4b11 ldr r3, [pc, #68] ; (44b8 ) 4472: 4798 blx r3 4474: b128 cbz r0, 4482 if(part < _LV_OBJ_PART_REAL_LAST) return ((lv_obj_t *)obj)->state; 4476: 2d3f cmp r5, #63 ; 0x3f 4478: d811 bhi.n 449e 447a: f894 003d ldrb.w r0, [r4, #61] ; 0x3d } 447e: b005 add sp, #20 4480: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4482: 4b0e ldr r3, [pc, #56] ; (44bc ) 4484: 9300 str r3, [sp, #0] 4486: f640 22de movw r2, #2782 ; 0xade 448a: 490d ldr r1, [pc, #52] ; (44c0 ) 448c: 2003 movs r0, #3 448e: 4d0d ldr r5, [pc, #52] ; (44c4 ) 4490: 47a8 blx r5 4492: 4622 mov r2, r4 4494: 2300 movs r3, #0 4496: 480c ldr r0, [pc, #48] ; (44c8 ) 4498: 490c ldr r1, [pc, #48] ; (44cc ) 449a: 4788 blx r1 449c: e7fe b.n 449c info.part = part; 449e: f88d 500c strb.w r5, [sp, #12] info.result = LV_STATE_DEFAULT; 44a2: 2300 movs r3, #0 44a4: f88d 300d strb.w r3, [sp, #13] lv_signal_send((lv_obj_t *)obj, LV_SIGNAL_GET_STATE_DSC, &info); 44a8: aa03 add r2, sp, #12 44aa: 2109 movs r1, #9 44ac: 4620 mov r0, r4 44ae: 4b08 ldr r3, [pc, #32] ; (44d0 ) 44b0: 4798 blx r3 return info.result; 44b2: f89d 000d ldrb.w r0, [sp, #13] 44b6: e7e2 b.n 447e 44b8: 000022b1 .word 0x000022b1 44bc: 00024670 .word 0x00024670 44c0: 000247dc .word 0x000247dc 44c4: 0001225d .word 0x0001225d 44c8: 0002483c .word 0x0002483c 44cc: 000022b9 .word 0x000022b9 44d0: 00002b75 .word 0x00002b75 000044d4 <_lv_obj_get_style_int>: { 44d4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 44d8: b085 sub sp, #20 44da: 4617 mov r7, r2 while(parent) { 44dc: b360 cbz r0, 4538 <_lv_obj_get_style_int+0x64> 44de: 460d mov r5, r1 44e0: ea4f 2b12 mov.w fp, r2, lsr #8 44e4: 4606 mov r6, r0 lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 44e6: f8df a08c ldr.w sl, [pc, #140] ; 4574 <_lv_obj_get_style_int+0xa0> lv_state_t state = lv_obj_get_state(parent, part); 44ea: f8df 908c ldr.w r9, [pc, #140] ; 4578 <_lv_obj_get_style_int+0xa4> res = _lv_style_list_get_int(dsc, prop, &value_act); 44ee: f8df 808c ldr.w r8, [pc, #140] ; 457c <_lv_obj_get_style_int+0xa8> 44f2: e006 b.n 4502 <_lv_obj_get_style_int+0x2e> if(res == LV_RES_OK) return value_act; 44f4: f9bd 000e ldrsh.w r0, [sp, #14] } 44f8: b005 add sp, #20 44fa: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 44fe: 2500 movs r5, #0 while(parent) { 4500: b1de cbz r6, 453a <_lv_obj_get_style_int+0x66> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 4502: 4629 mov r1, r5 4504: 4630 mov r0, r6 4506: 47d0 blx sl 4508: 9001 str r0, [sp, #4] lv_state_t state = lv_obj_get_state(parent, part); 450a: 4629 mov r1, r5 450c: 4630 mov r0, r6 450e: 47c8 blx r9 prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 4510: eb07 2000 add.w r0, r7, r0, lsl #8 4514: b284 uxth r4, r0 res = _lv_style_list_get_int(dsc, prop, &value_act); 4516: f10d 020e add.w r2, sp, #14 451a: 4621 mov r1, r4 451c: 9801 ldr r0, [sp, #4] 451e: 47c0 blx r8 if(res == LV_RES_OK) return value_act; 4520: 2801 cmp r0, #1 4522: d0e7 beq.n 44f4 <_lv_obj_get_style_int+0x20> if(attr.bits.inherit == 0) break; 4524: f01b 0f80 tst.w fp, #128 ; 0x80 4528: d007 beq.n 453a <_lv_obj_get_style_int+0x66> if(part != LV_OBJ_PART_MAIN) { 452a: 2d00 cmp r5, #0 452c: d1e7 bne.n 44fe <_lv_obj_get_style_int+0x2a> parent = lv_obj_get_parent(parent); 452e: 4630 mov r0, r6 4530: 4b0f ldr r3, [pc, #60] ; (4570 <_lv_obj_get_style_int+0x9c>) 4532: 4798 blx r3 4534: 4606 mov r6, r0 4536: e7e2 b.n 44fe <_lv_obj_get_style_int+0x2a> while(parent) { 4538: 4614 mov r4, r2 prop = prop & (~LV_STYLE_STATE_MASK); 453a: f424 44fe bic.w r4, r4, #32512 ; 0x7f00 switch(prop) { 453e: b2a4 uxth r4, r4 4540: 2c22 cmp r4, #34 ; 0x22 4542: d00f beq.n 4564 <_lv_obj_get_style_int+0x90> 4544: d806 bhi.n 4554 <_lv_obj_get_style_int+0x80> 4546: 2c03 cmp r4, #3 4548: d00a beq.n 4560 <_lv_obj_get_style_int+0x8c> 454a: 2c07 cmp r4, #7 454c: d10c bne.n 4568 <_lv_obj_get_style_int+0x94> return LV_IMG_ZOOM_NONE; 454e: f44f 7080 mov.w r0, #256 ; 0x100 4552: e7d1 b.n 44f8 <_lv_obj_get_style_int+0x24> switch(prop) { 4554: 2c31 cmp r4, #49 ; 0x31 4556: d009 beq.n 456c <_lv_obj_get_style_int+0x98> 4558: 2cc0 cmp r4, #192 ; 0xc0 455a: d105 bne.n 4568 <_lv_obj_get_style_int+0x94> return LV_DPI / 8; 455c: 2010 movs r0, #16 455e: e7cb b.n 44f8 <_lv_obj_get_style_int+0x24> return LV_DPI / 20; 4560: 2006 movs r0, #6 4562: e7c9 b.n 44f8 <_lv_obj_get_style_int+0x24> return 255; 4564: 20ff movs r0, #255 ; 0xff 4566: e7c7 b.n 44f8 <_lv_obj_get_style_int+0x24> return 0; 4568: 2000 movs r0, #0 456a: e7c5 b.n 44f8 <_lv_obj_get_style_int+0x24> return LV_BORDER_SIDE_FULL; 456c: 200f movs r0, #15 456e: e7c3 b.n 44f8 <_lv_obj_get_style_int+0x24> 4570: 00002c7d .word 0x00002c7d 4574: 00002ffd .word 0x00002ffd 4578: 00004469 .word 0x00004469 457c: 000072e5 .word 0x000072e5 00004580 <_lv_obj_get_style_color>: { 4580: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 4584: b085 sub sp, #20 4586: 4617 mov r7, r2 while(parent) { 4588: b348 cbz r0, 45de <_lv_obj_get_style_color+0x5e> 458a: 460d mov r5, r1 458c: ea4f 2b12 mov.w fp, r2, lsr #8 4590: 4606 mov r6, r0 lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 4592: f8df a06c ldr.w sl, [pc, #108] ; 4600 <_lv_obj_get_style_color+0x80> lv_state_t state = lv_obj_get_state(parent, part); 4596: f8df 906c ldr.w r9, [pc, #108] ; 4604 <_lv_obj_get_style_color+0x84> res = _lv_style_list_get_color(dsc, prop, &value_act); 459a: f8df 806c ldr.w r8, [pc, #108] ; 4608 <_lv_obj_get_style_color+0x88> 459e: e004 b.n 45aa <_lv_obj_get_style_color+0x2a> if(res == LV_RES_OK) return value_act; 45a0: f8bd 000c ldrh.w r0, [sp, #12] 45a4: e025 b.n 45f2 <_lv_obj_get_style_color+0x72> 45a6: 2500 movs r5, #0 while(parent) { 45a8: b1d6 cbz r6, 45e0 <_lv_obj_get_style_color+0x60> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 45aa: 4629 mov r1, r5 45ac: 4630 mov r0, r6 45ae: 47d0 blx sl 45b0: 9001 str r0, [sp, #4] lv_state_t state = lv_obj_get_state(parent, part); 45b2: 4629 mov r1, r5 45b4: 4630 mov r0, r6 45b6: 47c8 blx r9 prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 45b8: eb07 2000 add.w r0, r7, r0, lsl #8 45bc: b284 uxth r4, r0 res = _lv_style_list_get_color(dsc, prop, &value_act); 45be: aa03 add r2, sp, #12 45c0: 4621 mov r1, r4 45c2: 9801 ldr r0, [sp, #4] 45c4: 47c0 blx r8 if(res == LV_RES_OK) return value_act; 45c6: 2801 cmp r0, #1 45c8: d0ea beq.n 45a0 <_lv_obj_get_style_color+0x20> if(attr.bits.inherit == 0) break; 45ca: f01b 0f80 tst.w fp, #128 ; 0x80 45ce: d007 beq.n 45e0 <_lv_obj_get_style_color+0x60> if(part != LV_OBJ_PART_MAIN) { 45d0: 2d00 cmp r5, #0 45d2: d1e8 bne.n 45a6 <_lv_obj_get_style_color+0x26> parent = lv_obj_get_parent(parent); 45d4: 4630 mov r0, r6 45d6: 4b08 ldr r3, [pc, #32] ; (45f8 <_lv_obj_get_style_color+0x78>) 45d8: 4798 blx r3 45da: 4606 mov r6, r0 45dc: e7e3 b.n 45a6 <_lv_obj_get_style_color+0x26> while(parent) { 45de: 4614 mov r4, r2 prop = prop & (~LV_STYLE_STATE_MASK); 45e0: f424 44fe bic.w r4, r4, #32512 ; 0x7f00 switch(prop) { 45e4: 3c29 subs r4, #41 ; 0x29 45e6: 2c01 cmp r4, #1 return LV_COLOR_WHITE; 45e8: bf9a itte ls 45ea: 4b04 ldrls r3, [pc, #16] ; (45fc <_lv_obj_get_style_color+0x7c>) 45ec: f8b3 0674 ldrhls.w r0, [r3, #1652] ; 0x674 return LV_COLOR_BLACK; 45f0: 2000 movhi r0, #0 } 45f2: b005 add sp, #20 45f4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 45f8: 00002c7d .word 0x00002c7d 45fc: 00024058 .word 0x00024058 4600: 00002ffd .word 0x00002ffd 4604: 00004469 .word 0x00004469 4608: 000073a9 .word 0x000073a9 0000460c <_lv_obj_get_style_opa>: { 460c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 4610: b085 sub sp, #20 4612: 4617 mov r7, r2 while(parent) { 4614: b350 cbz r0, 466c <_lv_obj_get_style_opa+0x60> 4616: 460d mov r5, r1 4618: ea4f 2b12 mov.w fp, r2, lsr #8 461c: 4606 mov r6, r0 lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 461e: f8df a074 ldr.w sl, [pc, #116] ; 4694 <_lv_obj_get_style_opa+0x88> lv_state_t state = lv_obj_get_state(parent, part); 4622: f8df 9074 ldr.w r9, [pc, #116] ; 4698 <_lv_obj_get_style_opa+0x8c> res = _lv_style_list_get_opa(dsc, prop, &value_act); 4626: f8df 8074 ldr.w r8, [pc, #116] ; 469c <_lv_obj_get_style_opa+0x90> 462a: e004 b.n 4636 <_lv_obj_get_style_opa+0x2a> if(res == LV_RES_OK) return value_act; 462c: f89d 000f ldrb.w r0, [sp, #15] 4630: e029 b.n 4686 <_lv_obj_get_style_opa+0x7a> 4632: 2500 movs r5, #0 while(parent) { 4634: b1de cbz r6, 466e <_lv_obj_get_style_opa+0x62> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 4636: 4629 mov r1, r5 4638: 4630 mov r0, r6 463a: 47d0 blx sl 463c: 9001 str r0, [sp, #4] lv_state_t state = lv_obj_get_state(parent, part); 463e: 4629 mov r1, r5 4640: 4630 mov r0, r6 4642: 47c8 blx r9 prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 4644: eb07 2000 add.w r0, r7, r0, lsl #8 4648: b284 uxth r4, r0 res = _lv_style_list_get_opa(dsc, prop, &value_act); 464a: f10d 020f add.w r2, sp, #15 464e: 4621 mov r1, r4 4650: 9801 ldr r0, [sp, #4] 4652: 47c0 blx r8 if(res == LV_RES_OK) return value_act; 4654: 2801 cmp r0, #1 4656: d0e9 beq.n 462c <_lv_obj_get_style_opa+0x20> if(attr.bits.inherit == 0) break; 4658: f01b 0f80 tst.w fp, #128 ; 0x80 465c: d007 beq.n 466e <_lv_obj_get_style_opa+0x62> if(part != LV_OBJ_PART_MAIN) { 465e: 2d00 cmp r5, #0 4660: d1e7 bne.n 4632 <_lv_obj_get_style_opa+0x26> parent = lv_obj_get_parent(parent); 4662: 4630 mov r0, r6 4664: 4b0a ldr r3, [pc, #40] ; (4690 <_lv_obj_get_style_opa+0x84>) 4666: 4798 blx r3 4668: 4606 mov r6, r0 466a: e7e2 b.n 4632 <_lv_obj_get_style_opa+0x26> while(parent) { 466c: 4614 mov r4, r2 prop = prop & (~LV_STYLE_STATE_MASK); 466e: f424 44fe bic.w r4, r4, #32512 ; 0x7f00 switch(prop) { 4672: b2a4 uxth r4, r4 4674: 2c6d cmp r4, #109 ; 0x6d 4676: d009 beq.n 468c <_lv_obj_get_style_opa+0x80> 4678: f248 03ad movw r3, #32941 ; 0x80ad 467c: 429c cmp r4, r3 467e: d005 beq.n 468c <_lv_obj_get_style_opa+0x80> 4680: 2c2c cmp r4, #44 ; 0x2c 4682: d003 beq.n 468c <_lv_obj_get_style_opa+0x80> return LV_OPA_COVER; 4684: 20ff movs r0, #255 ; 0xff } 4686: b005 add sp, #20 4688: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} return LV_OPA_TRANSP; 468c: 2000 movs r0, #0 468e: e7fa b.n 4686 <_lv_obj_get_style_opa+0x7a> 4690: 00002c7d .word 0x00002c7d 4694: 00002ffd .word 0x00002ffd 4698: 00004469 .word 0x00004469 469c: 0000746d .word 0x0000746d 000046a0 <_lv_obj_get_style_ptr>: { 46a0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 46a4: b085 sub sp, #20 46a6: 4617 mov r7, r2 while(parent) { 46a8: b350 cbz r0, 4700 <_lv_obj_get_style_ptr+0x60> 46aa: 460d mov r5, r1 46ac: ea4f 2b12 mov.w fp, r2, lsr #8 46b0: 4606 mov r6, r0 lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 46b2: f8df a080 ldr.w sl, [pc, #128] ; 4734 <_lv_obj_get_style_ptr+0x94> lv_state_t state = lv_obj_get_state(parent, part); 46b6: f8df 9080 ldr.w r9, [pc, #128] ; 4738 <_lv_obj_get_style_ptr+0x98> res = _lv_style_list_get_ptr(dsc, prop, &value_act); 46ba: f8df 8080 ldr.w r8, [pc, #128] ; 473c <_lv_obj_get_style_ptr+0x9c> 46be: e005 b.n 46cc <_lv_obj_get_style_ptr+0x2c> if(res == LV_RES_OK) return value_act; 46c0: 9803 ldr r0, [sp, #12] } 46c2: b005 add sp, #20 46c4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 46c8: 2500 movs r5, #0 while(parent) { 46ca: b1d6 cbz r6, 4702 <_lv_obj_get_style_ptr+0x62> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 46cc: 4629 mov r1, r5 46ce: 4630 mov r0, r6 46d0: 47d0 blx sl 46d2: 9001 str r0, [sp, #4] lv_state_t state = lv_obj_get_state(parent, part); 46d4: 4629 mov r1, r5 46d6: 4630 mov r0, r6 46d8: 47c8 blx r9 prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 46da: eb07 2000 add.w r0, r7, r0, lsl #8 46de: b284 uxth r4, r0 res = _lv_style_list_get_ptr(dsc, prop, &value_act); 46e0: aa03 add r2, sp, #12 46e2: 4621 mov r1, r4 46e4: 9801 ldr r0, [sp, #4] 46e6: 47c0 blx r8 if(res == LV_RES_OK) return value_act; 46e8: 2801 cmp r0, #1 46ea: d0e9 beq.n 46c0 <_lv_obj_get_style_ptr+0x20> if(attr.bits.inherit == 0) break; 46ec: f01b 0f80 tst.w fp, #128 ; 0x80 46f0: d007 beq.n 4702 <_lv_obj_get_style_ptr+0x62> if(part != LV_OBJ_PART_MAIN) { 46f2: 2d00 cmp r5, #0 46f4: d1e8 bne.n 46c8 <_lv_obj_get_style_ptr+0x28> parent = lv_obj_get_parent(parent); 46f6: 4630 mov r0, r6 46f8: 4b0b ldr r3, [pc, #44] ; (4728 <_lv_obj_get_style_ptr+0x88>) 46fa: 4798 blx r3 46fc: 4606 mov r6, r0 46fe: e7e3 b.n 46c8 <_lv_obj_get_style_ptr+0x28> while(parent) { 4700: 4614 mov r4, r2 prop = prop & (~LV_STYLE_STATE_MASK); 4702: f424 44fe bic.w r4, r4, #32512 ; 0x7f00 switch(prop) { 4706: b2a4 uxth r4, r4 4708: 2cbe cmp r4, #190 ; 0xbe 470a: d00a beq.n 4722 <_lv_obj_get_style_ptr+0x82> 470c: f248 038e movw r3, #32910 ; 0x808e 4710: 429c cmp r4, r3 4712: d003 beq.n 471c <_lv_obj_get_style_ptr+0x7c> 4714: 2c7e cmp r4, #126 ; 0x7e 4716: d001 beq.n 471c <_lv_obj_get_style_ptr+0x7c> return NULL; 4718: 2000 movs r0, #0 471a: e7d2 b.n 46c2 <_lv_obj_get_style_ptr+0x22> return lv_theme_get_font_normal(); 471c: 4b03 ldr r3, [pc, #12] ; (472c <_lv_obj_get_style_ptr+0x8c>) 471e: 4798 blx r3 4720: e7cf b.n 46c2 <_lv_obj_get_style_ptr+0x22> return &lv_anim_path_def; 4722: 4803 ldr r0, [pc, #12] ; (4730 <_lv_obj_get_style_ptr+0x90>) 4724: e7cd b.n 46c2 <_lv_obj_get_style_ptr+0x22> 4726: bf00 nop 4728: 00002c7d .word 0x00002c7d 472c: 000141dd .word 0x000141dd 4730: 00029200 .word 0x00029200 4734: 00002ffd .word 0x00002ffd 4738: 00004469 .word 0x00004469 473c: 00007531 .word 0x00007531 00004740 : { 4740: b570 push {r4, r5, r6, lr} lv_style_trans_t * tr = a->var; 4742: 6804 ldr r4, [r0, #0] lv_style_property_t prop_tmp = tr->prop; 4744: 88a5 ldrh r5, [r4, #4] if((prop_tmp & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/ 4746: f005 030f and.w r3, r5, #15 474a: 2b08 cmp r3, #8 474c: dd13 ble.n 4776 else if((prop_tmp & 0xF) < LV_STYLE_ID_OPA) { /*Color*/ 474e: 2b0b cmp r3, #11 4750: dd18 ble.n 4784 else if((prop_tmp & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/ 4752: 2b0d cmp r3, #13 4754: dd1d ble.n 4792 tr->start_value._ptr = _lv_obj_get_style_ptr(tr->obj, tr->part, prop_tmp); 4756: 462a mov r2, r5 4758: 79a1 ldrb r1, [r4, #6] 475a: 6820 ldr r0, [r4, #0] 475c: 4b10 ldr r3, [pc, #64] ; (47a0 ) 475e: 4798 blx r3 4760: 60a0 str r0, [r4, #8] tr->prop = 0; 4762: 2300 movs r3, #0 4764: 80a3 strh r3, [r4, #4] trans_del(tr->obj, tr->part, prop_tmp, tr); 4766: 4623 mov r3, r4 4768: 462a mov r2, r5 476a: 79a1 ldrb r1, [r4, #6] 476c: 6820 ldr r0, [r4, #0] 476e: 4e0d ldr r6, [pc, #52] ; (47a4 ) 4770: 47b0 blx r6 tr->prop = prop_tmp; 4772: 80a5 strh r5, [r4, #4] 4774: bd70 pop {r4, r5, r6, pc} tr->start_value._int = _lv_obj_get_style_int(tr->obj, tr->part, prop_tmp); 4776: 462a mov r2, r5 4778: 79a1 ldrb r1, [r4, #6] 477a: 6820 ldr r0, [r4, #0] 477c: 4b0a ldr r3, [pc, #40] ; (47a8 ) 477e: 4798 blx r3 4780: 8120 strh r0, [r4, #8] 4782: e7ee b.n 4762 tr->start_value._color = _lv_obj_get_style_color(tr->obj, tr->part, prop_tmp); 4784: 462a mov r2, r5 4786: 79a1 ldrb r1, [r4, #6] 4788: 6820 ldr r0, [r4, #0] 478a: 4b08 ldr r3, [pc, #32] ; (47ac ) 478c: 4798 blx r3 478e: 8120 strh r0, [r4, #8] 4790: e7e7 b.n 4762 tr->start_value._opa = _lv_obj_get_style_opa(tr->obj, tr->part, prop_tmp); 4792: 462a mov r2, r5 4794: 79a1 ldrb r1, [r4, #6] 4796: 6820 ldr r0, [r4, #0] 4798: 4b05 ldr r3, [pc, #20] ; (47b0 ) 479a: 4798 blx r3 479c: 7220 strb r0, [r4, #8] 479e: e7e0 b.n 4762 47a0: 000046a1 .word 0x000046a1 47a4: 00003029 .word 0x00003029 47a8: 000044d5 .word 0x000044d5 47ac: 00004581 .word 0x00004581 47b0: 0000460d .word 0x0000460d 000047b4 : if(obj->state == new_state) return; 47b4: f890 303d ldrb.w r3, [r0, #61] ; 0x3d 47b8: 428b cmp r3, r1 47ba: f000 8252 beq.w 4c62 { 47be: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 47c2: b0a1 sub sp, #132 ; 0x84 47c4: 4689 mov r9, r1 47c6: 4682 mov sl, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 47c8: 4bab ldr r3, [pc, #684] ; (4a78 ) 47ca: 4798 blx r3 47cc: b140 cbz r0, 47e0 lv_state_t prev_state = obj->state; 47ce: f89a b03d ldrb.w fp, [sl, #61] ; 0x3d obj->state = new_state; 47d2: f88a 903d strb.w r9, [sl, #61] ; 0x3d 47d6: 2300 movs r3, #0 47d8: 9306 str r3, [sp, #24] _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_OPA, line_opa, lv_opa_t, _opa, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_BLEND_MODE, image_blend_mode, lv_blend_mode_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_OPA, image_opa, lv_opa_t, _opa, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR_OPA, image_recolor_opa, lv_opa_t, _opa, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 47da: 4da8 ldr r5, [pc, #672] ; (4a7c ) lv_style_t * style_trans = _lv_style_list_get_transition_style(style_list); 47dc: 46d8 mov r8, fp 47de: e1d2 b.n 4b86 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 47e0: 4ba7 ldr r3, [pc, #668] ; (4a80 ) 47e2: 9300 str r3, [sp, #0] 47e4: f240 6237 movw r2, #1591 ; 0x637 47e8: 49a6 ldr r1, [pc, #664] ; (4a84 ) 47ea: 2003 movs r0, #3 47ec: 4ca6 ldr r4, [pc, #664] ; (4a88 ) 47ee: 47a0 blx r4 47f0: 4652 mov r2, sl 47f2: 2300 movs r3, #0 47f4: 48a5 ldr r0, [pc, #660] ; (4a8c ) 47f6: 49a6 ldr r1, [pc, #664] ; (4a90 ) 47f8: 4788 blx r1 47fa: e7fe b.n 47fa style_list->skip_trans = 1; 47fc: 7973 ldrb r3, [r6, #5] 47fe: f043 0304 orr.w r3, r3, #4 4802: 7173 strb r3, [r6, #5] obj->state = prev_state; 4804: f88a 803d strb.w r8, [sl, #61] ; 0x3d lv_style_int_t int1 = _lv_obj_get_style_int(obj, part, prop); 4808: 4622 mov r2, r4 480a: f8dd b00c ldr.w fp, [sp, #12] 480e: 4659 mov r1, fp 4810: 4650 mov r0, sl 4812: 47a8 blx r5 4814: 4607 mov r7, r0 obj->state = new_state; 4816: f88a 903d strb.w r9, [sl, #61] ; 0x3d lv_style_int_t int2 = _lv_obj_get_style_int(obj, part, prop); 481a: 4622 mov r2, r4 481c: f8cd b00c str.w fp, [sp, #12] 4820: 4659 mov r1, fp 4822: 4650 mov r0, sl 4824: 47a8 blx r5 4826: 4683 mov fp, r0 style_list->skip_trans = 0; 4828: 7973 ldrb r3, [r6, #5] 482a: f36f 0382 bfc r3, #2, #1 482e: 7173 strb r3, [r6, #5] if(int1 == int2) return NULL; 4830: 4287 cmp r7, r0 4832: d04a beq.n 48ca obj->state = prev_state; 4834: f88a 803d strb.w r8, [sl, #61] ; 0x3d int1 = _lv_obj_get_style_int(obj, part, prop); 4838: 4622 mov r2, r4 483a: 9903 ldr r1, [sp, #12] 483c: 4650 mov r0, sl 483e: 47a8 blx r5 4840: 4606 mov r6, r0 obj->state = new_state; 4842: f88a 903d strb.w r9, [sl, #61] ; 0x3d _lv_style_set_int(style_trans, prop, int1); /*Be sure `trans_style` has a valid value */ 4846: 4602 mov r2, r0 4848: 4621 mov r1, r4 484a: 9804 ldr r0, [sp, #16] 484c: 4b91 ldr r3, [pc, #580] ; (4a94 ) 484e: 4798 blx r3 if(prop == LV_STYLE_RADIUS) { 4850: 2c01 cmp r4, #1 4852: f000 8094 beq.w 497e tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 4856: 4890 ldr r0, [pc, #576] ; (4a98 ) 4858: 4b90 ldr r3, [pc, #576] ; (4a9c ) 485a: 4798 blx r3 485c: 4607 mov r7, r0 LV_ASSERT_MEM(tr); 485e: 4b86 ldr r3, [pc, #536] ; (4a78 ) 4860: 4798 blx r3 4862: 2800 cmp r0, #0 4864: f000 80a2 beq.w 49ac if(tr == NULL) return NULL; 4868: 2f00 cmp r7, #0 486a: d02e beq.n 48ca tr->start_value._int = int1; 486c: 813e strh r6, [r7, #8] tr->end_value._int = int2; 486e: f8a7 b00c strh.w fp, [r7, #12] tr->obj = obj; 4872: f8c7 a000 str.w sl, [r7] tr->prop = props[i]; 4876: 80bc strh r4, [r7, #4] tr->part = part; 4878: f89d 300c ldrb.w r3, [sp, #12] 487c: 71bb strb r3, [r7, #6] lv_anim_init(&a); 487e: a810 add r0, sp, #64 ; 0x40 4880: 4b87 ldr r3, [pc, #540] ; (4aa0 ) 4882: 4798 blx r3 * @param a pointer to an initialized `lv_anim_t` variable * @param var pointer to a variable to animate */ static inline void lv_anim_set_var(lv_anim_t * a, void * var) { a->var = var; 4884: 9710 str r7, [sp, #64] ; 0x40 * LittelvGL's built-in functions can be used. * E.g. lv_obj_set_x */ static inline void lv_anim_set_exec_cb(lv_anim_t * a, lv_anim_exec_xcb_t exec_cb) { a->exec_cb = exec_cb; 4886: 4b87 ldr r3, [pc, #540] ; (4aa4 ) 4888: 9311 str r3, [sp, #68] ; 0x44 * @param a pointer to an initialized `lv_anim_t` variable * @param start_cb a function call when the animation starts */ static inline void lv_anim_set_start_cb(lv_anim_t * a, lv_anim_ready_cb_t start_cb) { a->start_cb = start_cb; 488a: 4b87 ldr r3, [pc, #540] ; (4aa8 ) 488c: 9312 str r3, [sp, #72] ; 0x48 * @param a pointer to an initialized `lv_anim_t` variable * @param ready_cb a function call when the animation is ready */ static inline void lv_anim_set_ready_cb(lv_anim_t * a, lv_anim_ready_cb_t ready_cb) { a->ready_cb = ready_cb; 488e: 4b87 ldr r3, [pc, #540] ; (4aac ) 4890: 9313 str r3, [sp, #76] ; 0x4c a->start = start; 4892: 2300 movs r3, #0 4894: 9316 str r3, [sp, #88] ; 0x58 a->end = end; 4896: 23ff movs r3, #255 ; 0xff 4898: 9317 str r3, [sp, #92] ; 0x5c a->time = duration; 489a: 9b0a ldr r3, [sp, #40] ; 0x28 489c: 9318 str r3, [sp, #96] ; 0x60 a->act_time = (int32_t)(-delay); 489e: 9b09 ldr r3, [sp, #36] ; 0x24 48a0: 425b negs r3, r3 48a2: 9319 str r3, [sp, #100] ; 0x64 48a4: 9a08 ldr r2, [sp, #32] 48a6: 1e53 subs r3, r2, #1 48a8: 1dd0 adds r0, r2, #7 uint8_t * d8 = (uint8_t *)dst; 48aa: aa14 add r2, sp, #80 ; 0x50 *d8 = *s8; 48ac: f813 1f01 ldrb.w r1, [r3, #1]! 48b0: f802 1b01 strb.w r1, [r2], #1 while(len) { 48b4: 4283 cmp r3, r0 48b6: d1f9 bne.n 48ac a.early_apply = 0; 48b8: f89d 3076 ldrb.w r3, [sp, #118] ; 0x76 48bc: f36f 0300 bfc r3, #0, #1 48c0: f88d 3076 strb.w r3, [sp, #118] ; 0x76 lv_anim_start(&a); 48c4: a810 add r0, sp, #64 ; 0x40 48c6: 4b7a ldr r3, [pc, #488] ; (4ab0 ) 48c8: 4798 blx r3 for(i = 0; i < LV_STYLE_TRANS_NUM_MAX; i++) { 48ca: 9b05 ldr r3, [sp, #20] 48cc: aa10 add r2, sp, #64 ; 0x40 48ce: 4293 cmp r3, r2 48d0: f000 8154 beq.w 4b7c if(props[i] != 0) { 48d4: 9b05 ldr r3, [sp, #20] 48d6: f833 4b02 ldrh.w r4, [r3], #2 48da: 9305 str r3, [sp, #20] 48dc: 2c00 cmp r4, #0 48de: d0f4 beq.n 48ca _lv_style_list_add_trans_style(style_list); 48e0: 9807 ldr r0, [sp, #28] 48e2: 4b74 ldr r3, [pc, #464] ; (4ab4 ) 48e4: 4798 blx r3 lv_style_list_t * style_list = lv_obj_get_style_list(obj, part); 48e6: 9903 ldr r1, [sp, #12] 48e8: 4650 mov r0, sl 48ea: 4b73 ldr r3, [pc, #460] ; (4ab8 ) 48ec: 4798 blx r3 48ee: 4606 mov r6, r0 lv_style_t * style_trans = _lv_style_list_get_transition_style(style_list); 48f0: 4b72 ldr r3, [pc, #456] ; (4abc ) 48f2: 4798 blx r3 48f4: 9004 str r0, [sp, #16] if((prop & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/ 48f6: f004 030f and.w r3, r4, #15 48fa: 2b08 cmp r3, #8 48fc: f77f af7e ble.w 47fc else if((prop & 0xF) < LV_STYLE_ID_OPA) { /*Color*/ 4900: 2b0b cmp r3, #11 4902: dd61 ble.n 49c8 else if((prop & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/ 4904: 2b0d cmp r3, #13 4906: f300 80e9 bgt.w 4adc style_list->skip_trans = 1; 490a: 7973 ldrb r3, [r6, #5] 490c: f043 0304 orr.w r3, r3, #4 4910: 7173 strb r3, [r6, #5] obj->state = prev_state; 4912: f88a 803d strb.w r8, [sl, #61] ; 0x3d lv_opa_t o1 = _lv_obj_get_style_opa(obj, part, prop); 4916: 4622 mov r2, r4 4918: f8dd b00c ldr.w fp, [sp, #12] 491c: 4659 mov r1, fp 491e: 4650 mov r0, sl 4920: 4f67 ldr r7, [pc, #412] ; (4ac0 ) 4922: 47b8 blx r7 4924: 900b str r0, [sp, #44] ; 0x2c obj->state = new_state; 4926: f88a 903d strb.w r9, [sl, #61] ; 0x3d lv_opa_t o2 = _lv_obj_get_style_opa(obj, part, prop); 492a: 4622 mov r2, r4 492c: f8cd b00c str.w fp, [sp, #12] 4930: 4659 mov r1, fp 4932: 4650 mov r0, sl 4934: 47b8 blx r7 4936: 4683 mov fp, r0 style_list->skip_trans = 0; 4938: 7973 ldrb r3, [r6, #5] 493a: f36f 0382 bfc r3, #2, #1 493e: 7173 strb r3, [r6, #5] if(o1 == o2) return NULL; 4940: 9b0b ldr r3, [sp, #44] ; 0x2c 4942: 4283 cmp r3, r0 4944: d0c1 beq.n 48ca obj->state = prev_state; 4946: f88a 803d strb.w r8, [sl, #61] ; 0x3d o1 = _lv_obj_get_style_opa(obj, part, prop); 494a: 4622 mov r2, r4 494c: 9903 ldr r1, [sp, #12] 494e: 4650 mov r0, sl 4950: 47b8 blx r7 4952: 4606 mov r6, r0 obj->state = new_state; 4954: f88a 903d strb.w r9, [sl, #61] ; 0x3d _lv_style_set_opa(style_trans, prop, o1); /*Be sure `trans_style` has a valid value */ 4958: 4602 mov r2, r0 495a: 4621 mov r1, r4 495c: 9804 ldr r0, [sp, #16] 495e: 4b59 ldr r3, [pc, #356] ; (4ac4 ) 4960: 4798 blx r3 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 4962: 484d ldr r0, [pc, #308] ; (4a98 ) 4964: 4b4d ldr r3, [pc, #308] ; (4a9c ) 4966: 4798 blx r3 4968: 4607 mov r7, r0 LV_ASSERT_MEM(tr); 496a: 4b43 ldr r3, [pc, #268] ; (4a78 ) 496c: 4798 blx r3 496e: 2800 cmp r0, #0 4970: d074 beq.n 4a5c if(tr == NULL) return NULL; 4972: 2f00 cmp r7, #0 4974: d0a9 beq.n 48ca tr->start_value._opa = o1; 4976: 723e strb r6, [r7, #8] tr->end_value._opa = o2; 4978: f887 b00c strb.w fp, [r7, #12] 497c: e779 b.n 4872 if(int1 == LV_RADIUS_CIRCLE || int2 == LV_RADIUS_CIRCLE) { 497e: f647 73ff movw r3, #32767 ; 0x7fff 4982: 429e cmp r6, r3 4984: f000 814c beq.w 4c20 4988: 459b cmp fp, r3 498a: f47f af64 bne.w 4856 lv_coord_t whalf = lv_obj_get_width(obj) / 2; 498e: 4650 mov r0, sl 4990: f8df b144 ldr.w fp, [pc, #324] ; 4ad8 4994: 47d8 blx fp 4996: eb00 70d0 add.w r0, r0, r0, lsr #31 499a: f340 074f sbfx r7, r0, #1, #16 lv_coord_t hhalf = lv_obj_get_width(obj) / 2; 499e: 4650 mov r0, sl 49a0: 47d8 blx fp 49a2: eb00 70d0 add.w r0, r0, r0, lsr #31 49a6: f340 034f sbfx r3, r0, #1, #16 49aa: e151 b.n 4c50 LV_ASSERT_MEM(tr); 49ac: 4b46 ldr r3, [pc, #280] ; (4ac8 ) 49ae: 9300 str r3, [sp, #0] 49b0: f640 62b2 movw r2, #3762 ; 0xeb2 49b4: 4933 ldr r1, [pc, #204] ; (4a84 ) 49b6: 2003 movs r0, #3 49b8: 4c33 ldr r4, [pc, #204] ; (4a88 ) 49ba: 47a0 blx r4 49bc: 463a mov r2, r7 49be: 2300 movs r3, #0 49c0: 4842 ldr r0, [pc, #264] ; (4acc ) 49c2: 4933 ldr r1, [pc, #204] ; (4a90 ) 49c4: 4788 blx r1 49c6: e7fe b.n 49c6 style_list->skip_trans = 1; 49c8: 7973 ldrb r3, [r6, #5] 49ca: f043 0304 orr.w r3, r3, #4 49ce: 7173 strb r3, [r6, #5] obj->state = prev_state; 49d0: f88a 803d strb.w r8, [sl, #61] ; 0x3d lv_color_t c1 = _lv_obj_get_style_color(obj, part, prop); 49d4: 4622 mov r2, r4 49d6: 9903 ldr r1, [sp, #12] 49d8: 4650 mov r0, sl 49da: 4f3d ldr r7, [pc, #244] ; (4ad0 ) 49dc: 47b8 blx r7 49de: 4683 mov fp, r0 obj->state = new_state; 49e0: f88a 903d strb.w r9, [sl, #61] ; 0x3d lv_color_t c2 = _lv_obj_get_style_color(obj, part, prop); 49e4: 4622 mov r2, r4 49e6: 9903 ldr r1, [sp, #12] 49e8: 4650 mov r0, sl 49ea: 47b8 blx r7 49ec: f8ad 002c strh.w r0, [sp, #44] ; 0x2c style_list->skip_trans = 0; 49f0: 7973 ldrb r3, [r6, #5] 49f2: f36f 0382 bfc r3, #2, #1 49f6: 7173 strb r3, [r6, #5] if(c1.full == c2.full) return NULL; 49f8: fa1f fb8b uxth.w fp, fp 49fc: b283 uxth r3, r0 49fe: 459b cmp fp, r3 4a00: f43f af63 beq.w 48ca obj->state = prev_state; 4a04: f88a 803d strb.w r8, [sl, #61] ; 0x3d c1 = _lv_obj_get_style_color(obj, part, prop); 4a08: 4622 mov r2, r4 4a0a: 9903 ldr r1, [sp, #12] 4a0c: 4650 mov r0, sl 4a0e: 47b8 blx r7 4a10: 4683 mov fp, r0 obj->state = new_state; 4a12: f88a 903d strb.w r9, [sl, #61] ; 0x3d _lv_style_set_color(style_trans, prop, c1); /*Be sure `trans_style` has a valid value */ 4a16: 4602 mov r2, r0 4a18: 4621 mov r1, r4 4a1a: 9804 ldr r0, [sp, #16] 4a1c: 4b2d ldr r3, [pc, #180] ; (4ad4 ) 4a1e: 4798 blx r3 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 4a20: 481d ldr r0, [pc, #116] ; (4a98 ) 4a22: 4b1e ldr r3, [pc, #120] ; (4a9c ) 4a24: 4798 blx r3 4a26: 4607 mov r7, r0 LV_ASSERT_MEM(tr); 4a28: 4b13 ldr r3, [pc, #76] ; (4a78 ) 4a2a: 4798 blx r3 4a2c: b140 cbz r0, 4a40 if(tr == NULL) return NULL; 4a2e: 2f00 cmp r7, #0 4a30: f43f af4b beq.w 48ca tr->start_value._color = c1; 4a34: f8a7 b008 strh.w fp, [r7, #8] tr->end_value._color = c2; 4a38: f8bd 302c ldrh.w r3, [sp, #44] ; 0x2c 4a3c: 81bb strh r3, [r7, #12] 4a3e: e718 b.n 4872 LV_ASSERT_MEM(tr); 4a40: 4b21 ldr r3, [pc, #132] ; (4ac8 ) 4a42: 9300 str r3, [sp, #0] 4a44: f640 62c6 movw r2, #3782 ; 0xec6 4a48: 490e ldr r1, [pc, #56] ; (4a84 ) 4a4a: 2003 movs r0, #3 4a4c: 4c0e ldr r4, [pc, #56] ; (4a88 ) 4a4e: 47a0 blx r4 4a50: 463a mov r2, r7 4a52: 2300 movs r3, #0 4a54: 481d ldr r0, [pc, #116] ; (4acc ) 4a56: 490e ldr r1, [pc, #56] ; (4a90 ) 4a58: 4788 blx r1 4a5a: e7fe b.n 4a5a LV_ASSERT_MEM(tr); 4a5c: 4b1a ldr r3, [pc, #104] ; (4ac8 ) 4a5e: 9300 str r3, [sp, #0] 4a60: f640 62db movw r2, #3803 ; 0xedb 4a64: 4907 ldr r1, [pc, #28] ; (4a84 ) 4a66: 2003 movs r0, #3 4a68: 4c07 ldr r4, [pc, #28] ; (4a88 ) 4a6a: 47a0 blx r4 4a6c: 463a mov r2, r7 4a6e: 2300 movs r3, #0 4a70: 4816 ldr r0, [pc, #88] ; (4acc ) 4a72: 4907 ldr r1, [pc, #28] ; (4a90 ) 4a74: 4788 blx r1 4a76: e7fe b.n 4a76 4a78: 000022b1 .word 0x000022b1 4a7c: 000044d5 .word 0x000044d5 4a80: 000246d0 .word 0x000246d0 4a84: 000247dc .word 0x000247dc 4a88: 0001225d .word 0x0001225d 4a8c: 0002483c .word 0x0002483c 4a90: 000022b9 .word 0x000022b9 4a94: 000068e1 .word 0x000068e1 4a98: 20006d3c .word 0x20006d3c 4a9c: 00011f11 .word 0x00011f11 4aa0: 000112e5 .word 0x000112e5 4aa4: 00003cad .word 0x00003cad 4aa8: 00004741 .word 0x00004741 4aac: 00003121 .word 0x00003121 4ab0: 000113a1 .word 0x000113a1 4ab4: 00007235 .word 0x00007235 4ab8: 00002ffd .word 0x00002ffd 4abc: 000070e7 .word 0x000070e7 4ac0: 0000460d .word 0x0000460d 4ac4: 00006b69 .word 0x00006b69 4ac8: 000246e4 .word 0x000246e4 4acc: 00023fd8 .word 0x00023fd8 4ad0: 00004581 .word 0x00004581 4ad4: 00006a25 .word 0x00006a25 4ad8: 00002f5d .word 0x00002f5d obj->state = prev_state; 4adc: f88a 803d strb.w r8, [sl, #61] ; 0x3d style_list->skip_trans = 1; 4ae0: 7973 ldrb r3, [r6, #5] 4ae2: f043 0304 orr.w r3, r3, #4 4ae6: 7173 strb r3, [r6, #5] const void * p1 = _lv_obj_get_style_ptr(obj, part, prop); 4ae8: 4622 mov r2, r4 4aea: f8dd b00c ldr.w fp, [sp, #12] 4aee: 4659 mov r1, fp 4af0: 4650 mov r0, sl 4af2: 4f5c ldr r7, [pc, #368] ; (4c64 ) 4af4: 47b8 blx r7 4af6: 900c str r0, [sp, #48] ; 0x30 obj->state = new_state; 4af8: f88a 903d strb.w r9, [sl, #61] ; 0x3d const void * p2 = _lv_obj_get_style_ptr(obj, part, prop); 4afc: 4622 mov r2, r4 4afe: f8cd b00c str.w fp, [sp, #12] 4b02: 4659 mov r1, fp 4b04: 4650 mov r0, sl 4b06: 47b8 blx r7 4b08: 4683 mov fp, r0 4b0a: a920 add r1, sp, #128 ; 0x80 4b0c: f841 0d40 str.w r0, [r1, #-64]! style_list->skip_trans = 0; 4b10: 7973 ldrb r3, [r6, #5] 4b12: f36f 0382 bfc r3, #2, #1 4b16: 7173 strb r3, [r6, #5] if(memcmp(&p1, &p2, sizeof(const void *)) == 0) return NULL; 4b18: 2204 movs r2, #4 4b1a: a80c add r0, sp, #48 ; 0x30 4b1c: 4b52 ldr r3, [pc, #328] ; (4c68 ) 4b1e: 4798 blx r3 4b20: 2800 cmp r0, #0 4b22: f43f aed2 beq.w 48ca obj->state = prev_state; 4b26: f88a 803d strb.w r8, [sl, #61] ; 0x3d p1 = _lv_obj_get_style_ptr(obj, part, prop); 4b2a: 4622 mov r2, r4 4b2c: 9903 ldr r1, [sp, #12] 4b2e: 4650 mov r0, sl 4b30: 47b8 blx r7 4b32: 4606 mov r6, r0 4b34: 900c str r0, [sp, #48] ; 0x30 obj->state = new_state; 4b36: f88a 903d strb.w r9, [sl, #61] ; 0x3d _lv_style_set_ptr(style_trans, prop, p1); /*Be sure `trans_style` has a valid value */ 4b3a: 4602 mov r2, r0 4b3c: 4621 mov r1, r4 4b3e: 9804 ldr r0, [sp, #16] 4b40: 4b4a ldr r3, [pc, #296] ; (4c6c ) 4b42: 4798 blx r3 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 4b44: 484a ldr r0, [pc, #296] ; (4c70 ) 4b46: 4b4b ldr r3, [pc, #300] ; (4c74 ) 4b48: 4798 blx r3 4b4a: 4607 mov r7, r0 LV_ASSERT_MEM(tr); 4b4c: 4b4a ldr r3, [pc, #296] ; (4c78 ) 4b4e: 4798 blx r3 4b50: b130 cbz r0, 4b60 if(tr == NULL) return NULL; 4b52: 2f00 cmp r7, #0 4b54: f43f aeb9 beq.w 48ca tr->start_value._ptr = p1; 4b58: 60be str r6, [r7, #8] tr->end_value._ptr = p2; 4b5a: f8c7 b00c str.w fp, [r7, #12] 4b5e: e688 b.n 4872 LV_ASSERT_MEM(tr); 4b60: 4b46 ldr r3, [pc, #280] ; (4c7c ) 4b62: 9300 str r3, [sp, #0] 4b64: f640 62ef movw r2, #3823 ; 0xeef 4b68: 4945 ldr r1, [pc, #276] ; (4c80 ) 4b6a: 2003 movs r0, #3 4b6c: 4c45 ldr r4, [pc, #276] ; (4c84 ) 4b6e: 47a0 blx r4 4b70: 463a mov r2, r7 4b72: 2300 movs r3, #0 4b74: 4844 ldr r0, [pc, #272] ; (4c88 ) 4b76: 4945 ldr r1, [pc, #276] ; (4c8c ) 4b78: 4788 blx r1 4b7a: e7fe b.n 4b7a 4b7c: 9b06 ldr r3, [sp, #24] 4b7e: 3301 adds r3, #1 4b80: 9306 str r3, [sp, #24] for(part = 0; part < _LV_OBJ_PART_REAL_LAST; part++) { 4b82: 2b40 cmp r3, #64 ; 0x40 4b84: d045 beq.n 4c12 4b86: f89d 3018 ldrb.w r3, [sp, #24] 4b8a: 9303 str r3, [sp, #12] lv_style_list_t * style_list = lv_obj_get_style_list(obj, part); 4b8c: 4619 mov r1, r3 4b8e: 4650 mov r0, sl 4b90: 4b3f ldr r3, [pc, #252] ; (4c90 ) 4b92: 4798 blx r3 if(style_list == NULL) break; /*No more style lists*/ 4b94: 9007 str r0, [sp, #28] 4b96: 2800 cmp r0, #0 4b98: d03b beq.n 4c12 if(style_list->ignore_trans) continue; 4b9a: 7943 ldrb r3, [r0, #5] 4b9c: f013 0f08 tst.w r3, #8 4ba0: d1ec bne.n 4b7c 4ba2: 22b0 movs r2, #176 ; 0xb0 4ba4: 9c03 ldr r4, [sp, #12] 4ba6: 4621 mov r1, r4 4ba8: 4650 mov r0, sl 4baa: 47a8 blx r5 4bac: 900a str r0, [sp, #40] ; 0x28 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_DELAY, transition_delay, lv_style_int_t, _int, scalar) 4bae: 22b1 movs r2, #177 ; 0xb1 4bb0: 4621 mov r1, r4 4bb2: 4650 mov r0, sl 4bb4: 47a8 blx r5 4bb6: 9009 str r0, [sp, #36] ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_3, transition_prop_3, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_4, transition_prop_4, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) #if LV_USE_ANIMATION _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PATH, transition_path, lv_anim_path_t *, _ptr, scalar) 4bb8: 22be movs r2, #190 ; 0xbe 4bba: 4621 mov r1, r4 4bbc: 4650 mov r0, sl 4bbe: 4b29 ldr r3, [pc, #164] ; (4c64 ) 4bc0: 4798 blx r3 4bc2: 9008 str r0, [sp, #32] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_1, transition_prop_1, lv_style_int_t, _int, scalar) 4bc4: 22b2 movs r2, #178 ; 0xb2 4bc6: 4621 mov r1, r4 4bc8: 4650 mov r0, sl 4bca: 47a8 blx r5 props[0] = lv_obj_get_style_transition_prop_1(obj, part); 4bcc: f8ad 0034 strh.w r0, [sp, #52] ; 0x34 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_2, transition_prop_2, lv_style_int_t, _int, scalar) 4bd0: 22b3 movs r2, #179 ; 0xb3 4bd2: 4621 mov r1, r4 4bd4: 4650 mov r0, sl 4bd6: 47a8 blx r5 props[1] = lv_obj_get_style_transition_prop_2(obj, part); 4bd8: f8ad 0036 strh.w r0, [sp, #54] ; 0x36 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_3, transition_prop_3, lv_style_int_t, _int, scalar) 4bdc: 22b4 movs r2, #180 ; 0xb4 4bde: 4621 mov r1, r4 4be0: 4650 mov r0, sl 4be2: 47a8 blx r5 props[2] = lv_obj_get_style_transition_prop_3(obj, part); 4be4: f8ad 0038 strh.w r0, [sp, #56] ; 0x38 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_4, transition_prop_4, lv_style_int_t, _int, scalar) 4be8: 22b5 movs r2, #181 ; 0xb5 4bea: 4621 mov r1, r4 4bec: 4650 mov r0, sl 4bee: 47a8 blx r5 props[3] = lv_obj_get_style_transition_prop_4(obj, part); 4bf0: f8ad 003a strh.w r0, [sp, #58] ; 0x3a _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 4bf4: 22b6 movs r2, #182 ; 0xb6 4bf6: 4621 mov r1, r4 4bf8: 4650 mov r0, sl 4bfa: 47a8 blx r5 props[4] = lv_obj_get_style_transition_prop_5(obj, part); 4bfc: f8ad 003c strh.w r0, [sp, #60] ; 0x3c _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 4c00: 22b7 movs r2, #183 ; 0xb7 4c02: 4621 mov r1, r4 4c04: 4650 mov r0, sl 4c06: 47a8 blx r5 props[5] = lv_obj_get_style_transition_prop_6(obj, part); 4c08: f8ad 003e strh.w r0, [sp, #62] ; 0x3e 4c0c: ab0d add r3, sp, #52 ; 0x34 4c0e: 9305 str r3, [sp, #20] 4c10: e660 b.n 48d4 lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 4c12: 21ff movs r1, #255 ; 0xff 4c14: 4650 mov r0, sl 4c16: 4b1f ldr r3, [pc, #124] ; (4c94 ) 4c18: 4798 blx r3 } 4c1a: b021 add sp, #132 ; 0x84 4c1c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} lv_coord_t whalf = lv_obj_get_width(obj) / 2; 4c20: 4650 mov r0, sl 4c22: 4e1d ldr r6, [pc, #116] ; (4c98 ) 4c24: 47b0 blx r6 4c26: eb00 70d0 add.w r0, r0, r0, lsr #31 4c2a: f340 074f sbfx r7, r0, #1, #16 lv_coord_t hhalf = lv_obj_get_width(obj) / 2; 4c2e: 4650 mov r0, sl 4c30: 47b0 blx r6 4c32: eb00 70d0 add.w r0, r0, r0, lsr #31 4c36: f340 034f sbfx r3, r0, #1, #16 if(int1 == LV_RADIUS_CIRCLE) int1 = LV_MATH_MIN(whalf + 1, hhalf + 1); 4c3a: 1c5e adds r6, r3, #1 4c3c: 1c7a adds r2, r7, #1 4c3e: 4296 cmp r6, r2 4c40: bfa8 it ge 4c42: 4616 movge r6, r2 4c44: b236 sxth r6, r6 if(int2 == LV_RADIUS_CIRCLE) int2 = LV_MATH_MIN(whalf + 1, hhalf + 1); 4c46: f647 72ff movw r2, #32767 ; 0x7fff 4c4a: 4593 cmp fp, r2 4c4c: f47f ae03 bne.w 4856 4c50: f103 0b01 add.w fp, r3, #1 4c54: 3701 adds r7, #1 4c56: 45bb cmp fp, r7 4c58: bfa8 it ge 4c5a: 46bb movge fp, r7 4c5c: fa0f fb8b sxth.w fp, fp 4c60: e5f9 b.n 4856 4c62: 4770 bx lr 4c64: 000046a1 .word 0x000046a1 4c68: 0001b4dd .word 0x0001b4dd 4c6c: 00006c99 .word 0x00006c99 4c70: 20006d3c .word 0x20006d3c 4c74: 00011f11 .word 0x00011f11 4c78: 000022b1 .word 0x000022b1 4c7c: 000246e4 .word 0x000246e4 4c80: 000247dc .word 0x000247dc 4c84: 0001225d .word 0x0001225d 4c88: 00023fd8 .word 0x00023fd8 4c8c: 000022b9 .word 0x000022b9 4c90: 00002ffd .word 0x00002ffd 4c94: 00003a99 .word 0x00003a99 4c98: 00002f5d .word 0x00002f5d 00004c9c : { 4c9c: b530 push {r4, r5, lr} 4c9e: b083 sub sp, #12 4ca0: 4605 mov r5, r0 4ca2: 460c mov r4, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4ca4: 4b0d ldr r3, [pc, #52] ; (4cdc ) 4ca6: 4798 blx r3 4ca8: b150 cbz r0, 4cc0 lv_state_t new_state = obj->state | state; 4caa: f895 303d ldrb.w r3, [r5, #61] ; 0x3d 4cae: ea43 0104 orr.w r1, r3, r4 if(obj->state != new_state) { 4cb2: 428b cmp r3, r1 4cb4: d002 beq.n 4cbc lv_obj_set_state(obj, new_state); 4cb6: 4628 mov r0, r5 4cb8: 4b09 ldr r3, [pc, #36] ; (4ce0 ) 4cba: 4798 blx r3 } 4cbc: b003 add sp, #12 4cbe: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4cc0: 4b08 ldr r3, [pc, #32] ; (4ce4 ) 4cc2: 9300 str r3, [sp, #0] 4cc4: f240 627e movw r2, #1662 ; 0x67e 4cc8: 4907 ldr r1, [pc, #28] ; (4ce8 ) 4cca: 2003 movs r0, #3 4ccc: 4c07 ldr r4, [pc, #28] ; (4cec ) 4cce: 47a0 blx r4 4cd0: 462a mov r2, r5 4cd2: 2300 movs r3, #0 4cd4: 4806 ldr r0, [pc, #24] ; (4cf0 ) 4cd6: 4907 ldr r1, [pc, #28] ; (4cf4 ) 4cd8: 4788 blx r1 4cda: e7fe b.n 4cda 4cdc: 000022b1 .word 0x000022b1 4ce0: 000047b5 .word 0x000047b5 4ce4: 000246f4 .word 0x000246f4 4ce8: 000247dc .word 0x000247dc 4cec: 0001225d .word 0x0001225d 4cf0: 0002483c .word 0x0002483c 4cf4: 000022b9 .word 0x000022b9 00004cf8 : { 4cf8: b530 push {r4, r5, lr} 4cfa: b083 sub sp, #12 4cfc: 4605 mov r5, r0 4cfe: 460c mov r4, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4d00: 4b0d ldr r3, [pc, #52] ; (4d38 ) 4d02: 4798 blx r3 4d04: b150 cbz r0, 4d1c lv_state_t new_state = obj->state & (~state); 4d06: f895 303d ldrb.w r3, [r5, #61] ; 0x3d 4d0a: ea23 0104 bic.w r1, r3, r4 if(obj->state != new_state) { 4d0e: 428b cmp r3, r1 4d10: d002 beq.n 4d18 lv_obj_set_state(obj, new_state); 4d12: 4628 mov r0, r5 4d14: 4b09 ldr r3, [pc, #36] ; (4d3c ) 4d16: 4798 blx r3 } 4d18: b003 add sp, #12 4d1a: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4d1c: 4b08 ldr r3, [pc, #32] ; (4d40 ) 4d1e: 9300 str r3, [sp, #0] 4d20: f240 628f movw r2, #1679 ; 0x68f 4d24: 4907 ldr r1, [pc, #28] ; (4d44 ) 4d26: 2003 movs r0, #3 4d28: 4c07 ldr r4, [pc, #28] ; (4d48 ) 4d2a: 47a0 blx r4 4d2c: 462a mov r2, r5 4d2e: 2300 movs r3, #0 4d30: 4806 ldr r0, [pc, #24] ; (4d4c ) 4d32: 4907 ldr r1, [pc, #28] ; (4d50 ) 4d34: 4788 blx r1 4d36: e7fe b.n 4d36 4d38: 000022b1 .word 0x000022b1 4d3c: 000047b5 .word 0x000047b5 4d40: 00024708 .word 0x00024708 4d44: 000247dc .word 0x000247dc 4d48: 0001225d .word 0x0001225d 4d4c: 0002483c .word 0x0002483c 4d50: 000022b9 .word 0x000022b9 00004d54 : { 4d54: b530 push {r4, r5, lr} 4d56: b083 sub sp, #12 4d58: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4d5a: 4b0a ldr r3, [pc, #40] ; (4d84 ) 4d5c: 4798 blx r3 4d5e: b110 cbz r0, 4d66 } 4d60: 69e0 ldr r0, [r4, #28] 4d62: b003 add sp, #12 4d64: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4d66: 4b08 ldr r3, [pc, #32] ; (4d88 ) 4d68: 9300 str r3, [sp, #0] 4d6a: f640 22f5 movw r2, #2805 ; 0xaf5 4d6e: 4907 ldr r1, [pc, #28] ; (4d8c ) 4d70: 2003 movs r0, #3 4d72: 4d07 ldr r5, [pc, #28] ; (4d90 ) 4d74: 47a8 blx r5 4d76: 4622 mov r2, r4 4d78: 2300 movs r3, #0 4d7a: 4806 ldr r0, [pc, #24] ; (4d94 ) 4d7c: 4906 ldr r1, [pc, #24] ; (4d98 ) 4d7e: 4788 blx r1 4d80: e7fe b.n 4d80 4d82: bf00 nop 4d84: 000022b1 .word 0x000022b1 4d88: 0002471c .word 0x0002471c 4d8c: 000247dc .word 0x000247dc 4d90: 0001225d .word 0x0001225d 4d94: 0002483c .word 0x0002483c 4d98: 000022b9 .word 0x000022b9 00004d9c : { 4d9c: b530 push {r4, r5, lr} 4d9e: b083 sub sp, #12 4da0: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4da2: 4b0a ldr r3, [pc, #40] ; (4dcc ) 4da4: 4798 blx r3 4da6: b110 cbz r0, 4dae } 4da8: 6a60 ldr r0, [r4, #36] ; 0x24 4daa: b003 add sp, #12 4dac: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4dae: 4b08 ldr r3, [pc, #32] ; (4dd0 ) 4db0: 9300 str r3, [sp, #0] 4db2: f640 321e movw r2, #2846 ; 0xb1e 4db6: 4907 ldr r1, [pc, #28] ; (4dd4 ) 4db8: 2003 movs r0, #3 4dba: 4d07 ldr r5, [pc, #28] ; (4dd8 ) 4dbc: 47a8 blx r5 4dbe: 4622 mov r2, r4 4dc0: 2300 movs r3, #0 4dc2: 4806 ldr r0, [pc, #24] ; (4ddc ) 4dc4: 4906 ldr r1, [pc, #24] ; (4de0 ) 4dc6: 4788 blx r1 4dc8: e7fe b.n 4dc8 4dca: bf00 nop 4dcc: 000022b1 .word 0x000022b1 4dd0: 00024760 .word 0x00024760 4dd4: 000247dc .word 0x000247dc 4dd8: 0001225d .word 0x0001225d 4ddc: 0002483c .word 0x0002483c 4de0: 000022b9 .word 0x000022b9 00004de4 : { 4de4: b530 push {r4, r5, lr} 4de6: b083 sub sp, #12 4de8: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4dea: 4b0a ldr r3, [pc, #40] ; (4e14 ) 4dec: 4798 blx r3 4dee: b110 cbz r0, 4df6 } 4df0: 6ba0 ldr r0, [r4, #56] ; 0x38 4df2: b003 add sp, #12 4df4: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4df6: 4b08 ldr r3, [pc, #32] ; (4e18 ) 4df8: 9300 str r3, [sp, #0] 4dfa: f640 326f movw r2, #2927 ; 0xb6f 4dfe: 4907 ldr r1, [pc, #28] ; (4e1c ) 4e00: 2003 movs r0, #3 4e02: 4d07 ldr r5, [pc, #28] ; (4e20 ) 4e04: 47a8 blx r5 4e06: 4622 mov r2, r4 4e08: 2300 movs r3, #0 4e0a: 4806 ldr r0, [pc, #24] ; (4e24 ) 4e0c: 4906 ldr r1, [pc, #24] ; (4e28 ) 4e0e: 4788 blx r1 4e10: e7fe b.n 4e10 4e12: bf00 nop 4e14: 000022b1 .word 0x000022b1 4e18: 00024784 .word 0x00024784 4e1c: 000247dc .word 0x000247dc 4e20: 0001225d .word 0x0001225d 4e24: 0002483c .word 0x0002483c 4e28: 000022b9 .word 0x000022b9 00004e2c : { 4e2c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 4e30: 4605 mov r5, r0 lv_event_send(obj, LV_EVENT_DELETE, NULL); 4e32: 2200 movs r2, #0 4e34: 2115 movs r1, #21 4e36: 4b3c ldr r3, [pc, #240] ; (4f28 ) 4e38: 4798 blx r3 lv_group_t * group = lv_obj_get_group(obj); 4e3a: 4628 mov r0, r5 4e3c: 4b3b ldr r3, [pc, #236] ; (4f2c ) 4e3e: 4798 blx r3 if(group) lv_group_remove_obj(obj); 4e40: 4607 mov r7, r0 4e42: b110 cbz r0, 4e4a 4e44: 4628 mov r0, r5 4e46: 4b3a ldr r3, [pc, #232] ; (4f30 ) 4e48: 4798 blx r3 lv_anim_del(obj, NULL); 4e4a: 2100 movs r1, #0 4e4c: 4628 mov r0, r5 4e4e: 4b39 ldr r3, [pc, #228] ; (4f34 ) 4e50: 4798 blx r3 trans_del(obj, 0xFF, 0xFF, NULL); 4e52: 2300 movs r3, #0 4e54: 22ff movs r2, #255 ; 0xff 4e56: 4611 mov r1, r2 4e58: 4628 mov r0, r5 4e5a: 4c37 ldr r4, [pc, #220] ; (4f38 ) 4e5c: 47a0 blx r4 i = _lv_ll_get_head(&(obj->child_ll)); 4e5e: f105 0804 add.w r8, r5, #4 4e62: 4640 mov r0, r8 4e64: 4b35 ldr r3, [pc, #212] ; (4f3c ) 4e66: 4798 blx r3 while(i != NULL) { 4e68: 4604 mov r4, r0 4e6a: b158 cbz r0, 4e84 i_next = _lv_ll_get_next(&(obj->child_ll), i); 4e6c: f8df 90e8 ldr.w r9, [pc, #232] ; 4f58 4e70: 4621 mov r1, r4 4e72: 4640 mov r0, r8 4e74: 47c8 blx r9 4e76: 4606 mov r6, r0 obj_del_core(i); 4e78: 4620 mov r0, r4 4e7a: f7ff ffd7 bl 4e2c i = i_next; 4e7e: 4634 mov r4, r6 while(i != NULL) { 4e80: 2e00 cmp r6, #0 4e82: d1f5 bne.n 4e70 #endif static void lv_event_mark_deleted(lv_obj_t * obj) { lv_event_temp_data_t * t = event_temp_data_head; 4e84: 4b2e ldr r3, [pc, #184] ; (4f40 ) 4e86: 685b ldr r3, [r3, #4] while(t) { 4e88: b13b cbz r3, 4e9a if(t->obj == obj) t->deleted = true; 4e8a: 2101 movs r1, #1 4e8c: 681a ldr r2, [r3, #0] 4e8e: 4295 cmp r5, r2 4e90: bf08 it eq 4e92: 7119 strbeq r1, [r3, #4] t = t->prev; 4e94: 689b ldr r3, [r3, #8] while(t) { 4e96: 2b00 cmp r3, #0 4e98: d1f8 bne.n 4e8c lv_indev_t * indev = lv_indev_get_next(NULL); 4e9a: 2000 movs r0, #0 4e9c: 4b29 ldr r3, [pc, #164] ; (4f44 ) 4e9e: 4798 blx r3 while(indev) { 4ea0: 4604 mov r4, r0 4ea2: b310 cbz r0, 4eea lv_indev_reset(indev, obj); 4ea4: f8df 80b4 ldr.w r8, [pc, #180] ; 4f5c if(indev->group == group && obj == lv_indev_get_obj_act()) { 4ea8: f8df 90b4 ldr.w r9, [pc, #180] ; 4f60 indev = lv_indev_get_next(indev); 4eac: 4e25 ldr r6, [pc, #148] ; (4f44 ) 4eae: e00e b.n 4ece lv_indev_reset(indev, obj); 4eb0: 4629 mov r1, r5 4eb2: 4620 mov r0, r4 4eb4: 47c0 blx r8 if(indev->proc.types.pointer.last_pressed == obj) { 4eb6: 6be3 ldr r3, [r4, #60] ; 0x3c 4eb8: 429d cmp r5, r3 indev->proc.types.pointer.last_pressed = NULL; 4eba: bf04 itt eq 4ebc: 2300 moveq r3, #0 4ebe: 63e3 streq r3, [r4, #60] ; 0x3c if(indev->group == group && obj == lv_indev_get_obj_act()) { 4ec0: 6da3 ldr r3, [r4, #88] ; 0x58 4ec2: 429f cmp r7, r3 4ec4: d00a beq.n 4edc indev = lv_indev_get_next(indev); 4ec6: 4620 mov r0, r4 4ec8: 47b0 blx r6 while(indev) { 4eca: 4604 mov r4, r0 4ecc: b168 cbz r0, 4eea if(indev->proc.types.pointer.act_obj == obj || indev->proc.types.pointer.last_obj == obj) { 4ece: 6b63 ldr r3, [r4, #52] ; 0x34 4ed0: 429d cmp r5, r3 4ed2: d0ed beq.n 4eb0 4ed4: 6ba3 ldr r3, [r4, #56] ; 0x38 4ed6: 429d cmp r5, r3 4ed8: d1ed bne.n 4eb6 4eda: e7e9 b.n 4eb0 if(indev->group == group && obj == lv_indev_get_obj_act()) { 4edc: 47c8 blx r9 4ede: 4285 cmp r5, r0 4ee0: d1f1 bne.n 4ec6 lv_indev_reset(indev, obj); 4ee2: 4629 mov r1, r5 4ee4: 4620 mov r0, r4 4ee6: 47c0 blx r8 4ee8: e7ed b.n 4ec6 obj->signal_cb(obj, LV_SIGNAL_CLEANUP, NULL); 4eea: 69eb ldr r3, [r5, #28] 4eec: 2200 movs r2, #0 4eee: 4611 mov r1, r2 4ef0: 4628 mov r0, r5 4ef2: 4798 blx r3 lv_obj_t * par = lv_obj_get_parent(obj); 4ef4: 4628 mov r0, r5 4ef6: 4b14 ldr r3, [pc, #80] ; (4f48 ) 4ef8: 4798 blx r3 if(par == NULL) { /*It is a screen*/ 4efa: b160 cbz r0, 4f16 _lv_ll_remove(&(par->child_ll), obj); 4efc: 4629 mov r1, r5 4efe: 3004 adds r0, #4 4f00: 4b12 ldr r3, [pc, #72] ; (4f4c ) 4f02: 4798 blx r3 if(obj->ext_attr != NULL) lv_mem_free(obj->ext_attr); 4f04: 6a68 ldr r0, [r5, #36] ; 0x24 4f06: b108 cbz r0, 4f0c 4f08: 4b11 ldr r3, [pc, #68] ; (4f50 ) 4f0a: 4798 blx r3 lv_mem_free(obj); /*Free the object itself*/ 4f0c: 4628 mov r0, r5 4f0e: 4b10 ldr r3, [pc, #64] ; (4f50 ) 4f10: 4798 blx r3 4f12: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} lv_disp_t * d = lv_obj_get_disp(obj); 4f16: 4628 mov r0, r5 4f18: 4b0e ldr r3, [pc, #56] ; (4f54 ) 4f1a: 4798 blx r3 _lv_ll_remove(&d->scr_ll, obj); 4f1c: 4629 mov r1, r5 4f1e: 3030 adds r0, #48 ; 0x30 4f20: 4b0a ldr r3, [pc, #40] ; (4f4c ) 4f22: 4798 blx r3 4f24: e7ee b.n 4f04 4f26: bf00 nop 4f28: 00002acd .word 0x00002acd 4f2c: 00004de5 .word 0x00004de5 4f30: 00002679 .word 0x00002679 4f34: 00011329 .word 0x00011329 4f38: 00003029 .word 0x00003029 4f3c: 00011fa9 .word 0x00011fa9 4f40: 2000267c .word 0x2000267c 4f44: 00011021 .word 0x00011021 4f48: 00002c7d .word 0x00002c7d 4f4c: 00012095 .word 0x00012095 4f50: 000124c5 .word 0x000124c5 4f54: 00002d21 .word 0x00002d21 4f58: 00011fbd .word 0x00011fbd 4f5c: 00002775 .word 0x00002775 4f60: 00002801 .word 0x00002801 00004f64 : { 4f64: b570 push {r4, r5, r6, lr} 4f66: b082 sub sp, #8 4f68: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4f6a: 4b19 ldr r3, [pc, #100] ; (4fd0 ) 4f6c: 4798 blx r3 4f6e: b968 cbnz r0, 4f8c 4f70: 4b18 ldr r3, [pc, #96] ; (4fd4 ) 4f72: 9300 str r3, [sp, #0] 4f74: f240 1293 movw r2, #403 ; 0x193 4f78: 4917 ldr r1, [pc, #92] ; (4fd8 ) 4f7a: 2003 movs r0, #3 4f7c: 4d17 ldr r5, [pc, #92] ; (4fdc ) 4f7e: 47a8 blx r5 4f80: 4622 mov r2, r4 4f82: 2300 movs r3, #0 4f84: 4816 ldr r0, [pc, #88] ; (4fe0 ) 4f86: 4917 ldr r1, [pc, #92] ; (4fe4 ) 4f88: 4788 blx r1 4f8a: e7fe b.n 4f8a lv_obj_invalidate(obj); 4f8c: 4620 mov r0, r4 4f8e: 4b16 ldr r3, [pc, #88] ; (4fe8 ) 4f90: 4798 blx r3 lv_obj_t * par = lv_obj_get_parent(obj); 4f92: 4620 mov r0, r4 4f94: 4b15 ldr r3, [pc, #84] ; (4fec ) 4f96: 4798 blx r3 if(par == NULL) { 4f98: 4605 mov r5, r0 4f9a: b140 cbz r0, 4fae obj_del_core(obj); 4f9c: 4620 mov r0, r4 4f9e: 4b14 ldr r3, [pc, #80] ; (4ff0 ) 4fa0: 4798 blx r3 par->signal_cb(par, LV_SIGNAL_CHILD_CHG, NULL); 4fa2: 69eb ldr r3, [r5, #28] 4fa4: 2200 movs r2, #0 4fa6: 2101 movs r1, #1 4fa8: 4628 mov r0, r5 4faa: 4798 blx r3 4fac: e00c b.n 4fc8 disp = lv_obj_get_disp(obj); 4fae: 4620 mov r0, r4 4fb0: 4b10 ldr r3, [pc, #64] ; (4ff4 ) 4fb2: 4798 blx r3 if(!disp) return LV_RES_INV; /*Shouldn't happen*/ 4fb4: 4605 mov r5, r0 4fb6: b138 cbz r0, 4fc8 if(disp->act_scr == obj) act_scr_del = true; 4fb8: 6bc6 ldr r6, [r0, #60] ; 0x3c obj_del_core(obj); 4fba: 4620 mov r0, r4 4fbc: 4b0c ldr r3, [pc, #48] ; (4ff0 ) 4fbe: 4798 blx r3 if(act_scr_del) { 4fc0: 42b4 cmp r4, r6 4fc2: d101 bne.n 4fc8 disp->act_scr = NULL; 4fc4: 2300 movs r3, #0 4fc6: 63eb str r3, [r5, #60] ; 0x3c } 4fc8: 2000 movs r0, #0 4fca: b002 add sp, #8 4fcc: bd70 pop {r4, r5, r6, pc} 4fce: bf00 nop 4fd0: 000022b1 .word 0x000022b1 4fd4: 00024798 .word 0x00024798 4fd8: 000247dc .word 0x000247dc 4fdc: 0001225d .word 0x0001225d 4fe0: 0002483c .word 0x0002483c 4fe4: 000022b9 .word 0x000022b9 4fe8: 00003321 .word 0x00003321 4fec: 00002c7d .word 0x00002c7d 4ff0: 00004e2d .word 0x00004e2d 4ff4: 00002d21 .word 0x00002d21 00004ff8 : { 4ff8: b530 push {r4, r5, lr} 4ffa: b083 sub sp, #12 4ffc: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4ffe: 4b0e ldr r3, [pc, #56] ; (5038 ) 5000: 4798 blx r3 5002: b148 cbz r0, 5018 if(obj->group_p) { 5004: 6ba0 ldr r0, [r4, #56] ; 0x38 5006: b1a8 cbz r0, 5034 if(lv_group_get_focused(obj->group_p) == obj) return true; 5008: 4b0c ldr r3, [pc, #48] ; (503c ) 500a: 4798 blx r3 500c: 4284 cmp r4, r0 500e: bf14 ite ne 5010: 2000 movne r0, #0 5012: 2001 moveq r0, #1 } 5014: b003 add sp, #12 5016: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 5018: 4b09 ldr r3, [pc, #36] ; (5040 ) 501a: 9300 str r3, [sp, #0] 501c: f44f 6238 mov.w r2, #2944 ; 0xb80 5020: 4908 ldr r1, [pc, #32] ; (5044 ) 5022: 2003 movs r0, #3 5024: 4d08 ldr r5, [pc, #32] ; (5048 ) 5026: 47a8 blx r5 5028: 4622 mov r2, r4 502a: 2300 movs r3, #0 502c: 4807 ldr r0, [pc, #28] ; (504c ) 502e: 4908 ldr r1, [pc, #32] ; (5050 ) 5030: 4788 blx r1 5032: e7fe b.n 5032 return false; 5034: 2000 movs r0, #0 5036: e7ed b.n 5014 5038: 000022b1 .word 0x000022b1 503c: 00002749 .word 0x00002749 5040: 000247c8 .word 0x000247c8 5044: 000247dc .word 0x000247dc 5048: 0001225d .word 0x0001225d 504c: 0002483c .word 0x0002483c 5050: 000022b9 .word 0x000022b9 00005054 : { 5054: b500 push {lr} 5056: b083 sub sp, #12 ext_area.x1 = obj->coords.x1 - obj->ext_click_pad_hor; 5058: f890 3030 ldrb.w r3, [r0, #48] ; 0x30 505c: 8a02 ldrh r2, [r0, #16] 505e: 1ad2 subs r2, r2, r3 5060: f8ad 2000 strh.w r2, [sp] ext_area.x2 = obj->coords.x2 + obj->ext_click_pad_hor; 5064: 8a82 ldrh r2, [r0, #20] 5066: 4413 add r3, r2 5068: f8ad 3004 strh.w r3, [sp, #4] ext_area.y1 = obj->coords.y1 - obj->ext_click_pad_ver; 506c: f890 3031 ldrb.w r3, [r0, #49] ; 0x31 5070: 8a42 ldrh r2, [r0, #18] 5072: 1ad2 subs r2, r2, r3 5074: f8ad 2002 strh.w r2, [sp, #2] ext_area.y2 = obj->coords.y2 + obj->ext_click_pad_ver; 5078: 8ac2 ldrh r2, [r0, #22] 507a: 4413 add r3, r2 507c: f8ad 3006 strh.w r3, [sp, #6] if(!_lv_area_is_point_on(&ext_area, point, 0)) { 5080: 2200 movs r2, #0 5082: 4668 mov r0, sp 5084: 4b02 ldr r3, [pc, #8] ; (5090 ) 5086: 4798 blx r3 } 5088: b003 add sp, #12 508a: f85d fb04 ldr.w pc, [sp], #4 508e: bf00 nop 5090: 000115b9 .word 0x000115b9 00005094 : if(buf->type[i] == NULL) break; 5094: 6803 ldr r3, [r0, #0] 5096: b17b cbz r3, 50b8 { 5098: b410 push {r4} 509a: 1d02 adds r2, r0, #4 for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/ 509c: 2301 movs r3, #1 if(buf->type[i] == NULL) break; 509e: f852 4b04 ldr.w r4, [r2], #4 50a2: b11c cbz r4, 50ac for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/ 50a4: 3301 adds r3, #1 50a6: b2db uxtb r3, r3 50a8: 2b07 cmp r3, #7 50aa: d1f8 bne.n 509e buf->type[i] = name; 50ac: f840 1023 str.w r1, [r0, r3, lsl #2] } 50b0: 2001 movs r0, #1 50b2: f85d 4b04 ldr.w r4, [sp], #4 50b6: 4770 bx lr for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/ 50b8: 2300 movs r3, #0 buf->type[i] = name; 50ba: f840 1023 str.w r1, [r0, r3, lsl #2] } 50be: 2001 movs r0, #1 50c0: 4770 bx lr ... 000050c4 : { 50c4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 50c8: 4605 mov r5, r0 50ca: 460e mov r6, r1 50cc: 4614 mov r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 50ce: 2201 movs r2, #1 50d0: 4ba8 ldr r3, [pc, #672] ; (5374 ) 50d2: 4798 blx r3 draw_dsc->radius = lv_obj_get_style_radius(obj, part); 50d4: 8020 strh r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 50d6: f248 020c movw r2, #32780 ; 0x800c 50da: 4631 mov r1, r6 50dc: 4628 mov r0, r5 50de: 4ba6 ldr r3, [pc, #664] ; (5378 ) 50e0: 4798 blx r3 if(opa_scale <= LV_OPA_MIN) { 50e2: 2805 cmp r0, #5 50e4: d942 bls.n 516c 50e6: 4607 mov r7, r0 if(draw_dsc->bg_opa != LV_OPA_TRANSP) { 50e8: 7b23 ldrb r3, [r4, #12] 50ea: 2b00 cmp r3, #0 50ec: d149 bne.n 5182 if(draw_dsc->border_opa != LV_OPA_TRANSP) { 50ee: 7d23 ldrb r3, [r4, #20] 50f0: 2b00 cmp r3, #0 50f2: d176 bne.n 51e2 if(draw_dsc->outline_opa != LV_OPA_TRANSP) { 50f4: 7f23 ldrb r3, [r4, #28] 50f6: 2b00 cmp r3, #0 50f8: f040 8098 bne.w 522c if(draw_dsc->pattern_opa != LV_OPA_TRANSP) { 50fc: f894 3036 ldrb.w r3, [r4, #54] ; 0x36 5100: 2b00 cmp r3, #0 5102: f040 80b8 bne.w 5276 if(draw_dsc->shadow_opa > LV_OPA_MIN) { 5106: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 510a: 2b05 cmp r3, #5 510c: f200 8101 bhi.w 5312 if(draw_dsc->value_opa > LV_OPA_MIN) { 5110: f894 3044 ldrb.w r3, [r4, #68] ; 0x44 5114: 2b05 cmp r3, #5 5116: f200 8137 bhi.w 5388 if(opa_scale < LV_OPA_MAX) { 511a: 2ff9 cmp r7, #249 ; 0xf9 511c: d824 bhi.n 5168 draw_dsc->bg_opa = (uint16_t)((uint16_t)draw_dsc->bg_opa * opa_scale) >> 8; 511e: b2bf uxth r7, r7 5120: 7b23 ldrb r3, [r4, #12] 5122: fb13 f307 smulbb r3, r3, r7 5126: f3c3 2307 ubfx r3, r3, #8, #8 512a: 7323 strb r3, [r4, #12] draw_dsc->border_opa = (uint16_t)((uint16_t)draw_dsc->border_opa * opa_scale) >> 8; 512c: 7d23 ldrb r3, [r4, #20] 512e: fb13 f307 smulbb r3, r3, r7 5132: f3c3 2307 ubfx r3, r3, #8, #8 5136: 7523 strb r3, [r4, #20] draw_dsc->shadow_opa = (uint16_t)((uint16_t)draw_dsc->shadow_opa * opa_scale) >> 8; 5138: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 513c: fb13 f307 smulbb r3, r3, r7 5140: f3c3 2307 ubfx r3, r3, #8, #8 5144: f884 3028 strb.w r3, [r4, #40] ; 0x28 draw_dsc->pattern_opa = (uint16_t)((uint16_t)draw_dsc->pattern_opa * opa_scale) >> 8; 5148: f894 3036 ldrb.w r3, [r4, #54] ; 0x36 514c: fb13 f307 smulbb r3, r3, r7 5150: f3c3 2307 ubfx r3, r3, #8, #8 5154: f884 3036 strb.w r3, [r4, #54] ; 0x36 draw_dsc->value_opa = (uint16_t)((uint16_t)draw_dsc->value_opa * opa_scale) >> 8; 5158: f894 3044 ldrb.w r3, [r4, #68] ; 0x44 515c: fb13 f707 smulbb r7, r3, r7 5160: f3c7 2707 ubfx r7, r7, #8, #8 5164: f884 7044 strb.w r7, [r4, #68] ; 0x44 5168: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} draw_dsc->bg_opa = LV_OPA_TRANSP; 516c: 2300 movs r3, #0 516e: 7323 strb r3, [r4, #12] draw_dsc->border_opa = LV_OPA_TRANSP; 5170: 7523 strb r3, [r4, #20] draw_dsc->shadow_opa = LV_OPA_TRANSP; 5172: f884 3028 strb.w r3, [r4, #40] ; 0x28 draw_dsc->pattern_opa = LV_OPA_TRANSP; 5176: f884 3036 strb.w r3, [r4, #54] ; 0x36 draw_dsc->value_opa = LV_OPA_TRANSP; 517a: f884 3044 strb.w r3, [r4, #68] ; 0x44 return; 517e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 5182: 222c movs r2, #44 ; 0x2c 5184: 4631 mov r1, r6 5186: 4628 mov r0, r5 5188: 4b7b ldr r3, [pc, #492] ; (5378 ) 518a: 4798 blx r3 draw_dsc->bg_opa = lv_obj_get_style_bg_opa(obj, part); 518c: 7320 strb r0, [r4, #12] if(draw_dsc->bg_opa > LV_OPA_MIN) { 518e: 2805 cmp r0, #5 5190: d9ad bls.n 50ee _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 5192: 2229 movs r2, #41 ; 0x29 5194: 4631 mov r1, r6 5196: 4628 mov r0, r5 5198: 4b78 ldr r3, [pc, #480] ; (537c ) 519a: 4798 blx r3 draw_dsc->bg_color = lv_obj_get_style_bg_color(obj, part); 519c: 8060 strh r0, [r4, #2] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_DIR, bg_grad_dir, lv_grad_dir_t, _int, scalar) 519e: 2223 movs r2, #35 ; 0x23 51a0: 4631 mov r1, r6 51a2: 4628 mov r0, r5 51a4: 4b73 ldr r3, [pc, #460] ; (5374 ) 51a6: 4798 blx r3 51a8: b2c0 uxtb r0, r0 draw_dsc->bg_grad_dir = lv_obj_get_style_bg_grad_dir(obj, part); 51aa: 71a0 strb r0, [r4, #6] if(draw_dsc->bg_grad_dir != LV_GRAD_DIR_NONE) { 51ac: b930 cbnz r0, 51bc _LV_OBJ_STYLE_SET_GET_DECLARE(BG_BLEND_MODE, bg_blend_mode, lv_blend_mode_t, _int, scalar) 51ae: 2220 movs r2, #32 51b0: 4631 mov r1, r6 51b2: 4628 mov r0, r5 51b4: 4b6f ldr r3, [pc, #444] ; (5374 ) 51b6: 4798 blx r3 51b8: 7360 strb r0, [r4, #13] 51ba: e798 b.n 50ee _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_COLOR, bg_grad_color, lv_color_t, _color, nonscalar) 51bc: 222a movs r2, #42 ; 0x2a 51be: 4631 mov r1, r6 51c0: 4628 mov r0, r5 51c2: 4b6e ldr r3, [pc, #440] ; (537c ) 51c4: 4798 blx r3 draw_dsc->bg_grad_color = lv_obj_get_style_bg_grad_color(obj, part); 51c6: 80a0 strh r0, [r4, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_MAIN_STOP, bg_main_stop, lv_style_int_t, _int, scalar) 51c8: 2221 movs r2, #33 ; 0x21 51ca: 4631 mov r1, r6 51cc: 4628 mov r0, r5 51ce: f8df 81a4 ldr.w r8, [pc, #420] ; 5374 51d2: 47c0 blx r8 draw_dsc->bg_main_color_stop = lv_obj_get_style_bg_main_stop(obj, part); 51d4: 8120 strh r0, [r4, #8] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_STOP, bg_grad_stop, lv_style_int_t, _int, scalar) 51d6: 2222 movs r2, #34 ; 0x22 51d8: 4631 mov r1, r6 51da: 4628 mov r0, r5 51dc: 47c0 blx r8 draw_dsc->bg_grad_color_stop = lv_obj_get_style_bg_grad_stop(obj, part); 51de: 8160 strh r0, [r4, #10] 51e0: e7e5 b.n 51ae _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 51e2: 2230 movs r2, #48 ; 0x30 51e4: 4631 mov r1, r6 51e6: 4628 mov r0, r5 51e8: 4b62 ldr r3, [pc, #392] ; (5374 ) 51ea: 4798 blx r3 draw_dsc->border_width = lv_obj_get_style_border_width(obj, part); 51ec: 8220 strh r0, [r4, #16] if(draw_dsc->border_width) { 51ee: 2800 cmp r0, #0 51f0: d080 beq.n 50f4 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar) 51f2: 223c movs r2, #60 ; 0x3c 51f4: 4631 mov r1, r6 51f6: 4628 mov r0, r5 51f8: 4b5f ldr r3, [pc, #380] ; (5378 ) 51fa: 4798 blx r3 draw_dsc->border_opa = lv_obj_get_style_border_opa(obj, part); 51fc: 7520 strb r0, [r4, #20] if(draw_dsc->border_opa > LV_OPA_MIN) { 51fe: 2805 cmp r0, #5 5200: d806 bhi.n 5210 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_BLEND_MODE, border_blend_mode, lv_blend_mode_t, _int, scalar) 5202: 2232 movs r2, #50 ; 0x32 5204: 4631 mov r1, r6 5206: 4628 mov r0, r5 5208: 4b5a ldr r3, [pc, #360] ; (5374 ) 520a: 4798 blx r3 520c: 7560 strb r0, [r4, #21] 520e: e771 b.n 50f4 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 5210: 2231 movs r2, #49 ; 0x31 5212: 4631 mov r1, r6 5214: 4628 mov r0, r5 5216: 4b57 ldr r3, [pc, #348] ; (5374 ) 5218: 4798 blx r3 draw_dsc->border_side = lv_obj_get_style_border_side(obj, part); 521a: b2c0 uxtb r0, r0 521c: 8260 strh r0, [r4, #18] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 521e: 2239 movs r2, #57 ; 0x39 5220: 4631 mov r1, r6 5222: 4628 mov r0, r5 5224: 4b55 ldr r3, [pc, #340] ; (537c ) 5226: 4798 blx r3 draw_dsc->border_color = lv_obj_get_style_border_color(obj, part); 5228: 81e0 strh r0, [r4, #14] 522a: e7ea b.n 5202 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 522c: 2240 movs r2, #64 ; 0x40 522e: 4631 mov r1, r6 5230: 4628 mov r0, r5 5232: 4b50 ldr r3, [pc, #320] ; (5374 ) 5234: 4798 blx r3 draw_dsc->outline_width = lv_obj_get_style_outline_width(obj, part); 5236: 8320 strh r0, [r4, #24] if(draw_dsc->outline_width) { 5238: 2800 cmp r0, #0 523a: f43f af5f beq.w 50fc _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 523e: 224c movs r2, #76 ; 0x4c 5240: 4631 mov r1, r6 5242: 4628 mov r0, r5 5244: 4b4c ldr r3, [pc, #304] ; (5378 ) 5246: 4798 blx r3 draw_dsc->outline_opa = lv_obj_get_style_outline_opa(obj, part); 5248: 7720 strb r0, [r4, #28] if(draw_dsc->outline_opa > LV_OPA_MIN) { 524a: 2805 cmp r0, #5 524c: d806 bhi.n 525c _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_BLEND_MODE, outline_blend_mode, lv_blend_mode_t, _int, scalar) 524e: 2242 movs r2, #66 ; 0x42 5250: 4631 mov r1, r6 5252: 4628 mov r0, r5 5254: 4b47 ldr r3, [pc, #284] ; (5374 ) 5256: 4798 blx r3 5258: 7760 strb r0, [r4, #29] 525a: e74f b.n 50fc _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar) 525c: 2241 movs r2, #65 ; 0x41 525e: 4631 mov r1, r6 5260: 4628 mov r0, r5 5262: 4b44 ldr r3, [pc, #272] ; (5374 ) 5264: 4798 blx r3 draw_dsc->outline_pad = lv_obj_get_style_outline_pad(obj, part); 5266: 8360 strh r0, [r4, #26] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 5268: 2249 movs r2, #73 ; 0x49 526a: 4631 mov r1, r6 526c: 4628 mov r0, r5 526e: 4b43 ldr r3, [pc, #268] ; (537c ) 5270: 4798 blx r3 draw_dsc->outline_color = lv_obj_get_style_outline_color(obj, part); 5272: 82e0 strh r0, [r4, #22] 5274: e7eb b.n 524e _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_IMAGE, pattern_image, const void *, _ptr, scalar) 5276: 226e movs r2, #110 ; 0x6e 5278: 4631 mov r1, r6 527a: 4628 mov r0, r5 527c: 4b40 ldr r3, [pc, #256] ; (5380 ) 527e: 4798 blx r3 draw_dsc->pattern_image = lv_obj_get_style_pattern_image(obj, part); 5280: 62e0 str r0, [r4, #44] ; 0x2c if(draw_dsc->pattern_image) { 5282: 2800 cmp r0, #0 5284: f43f af3f beq.w 5106 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_OPA, pattern_opa, lv_opa_t, _opa, scalar) 5288: 226c movs r2, #108 ; 0x6c 528a: 4631 mov r1, r6 528c: 4628 mov r0, r5 528e: 4b3a ldr r3, [pc, #232] ; (5378 ) 5290: 4798 blx r3 draw_dsc->pattern_opa = lv_obj_get_style_pattern_opa(obj, part); 5292: f884 0036 strb.w r0, [r4, #54] ; 0x36 if(draw_dsc->pattern_opa > LV_OPA_MIN) { 5296: 2805 cmp r0, #5 5298: f67f af35 bls.w 5106 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR_OPA, pattern_recolor_opa, lv_opa_t, _opa, scalar) 529c: 226d movs r2, #109 ; 0x6d 529e: 4631 mov r1, r6 52a0: 4628 mov r0, r5 52a2: 4b35 ldr r3, [pc, #212] ; (5378 ) 52a4: 4798 blx r3 draw_dsc->pattern_recolor_opa = lv_obj_get_style_pattern_recolor_opa(obj, part); 52a6: f884 0037 strb.w r0, [r4, #55] ; 0x37 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_REPEAT, pattern_repeat, bool, _int, scalar) 52aa: 2261 movs r2, #97 ; 0x61 52ac: 4631 mov r1, r6 52ae: 4628 mov r0, r5 52b0: 4b30 ldr r3, [pc, #192] ; (5374 ) 52b2: 4798 blx r3 52b4: 3000 adds r0, #0 52b6: bf18 it ne 52b8: 2001 movne r0, #1 draw_dsc->pattern_repeat = lv_obj_get_style_pattern_repeat(obj, part); 52ba: f894 3038 ldrb.w r3, [r4, #56] ; 0x38 52be: f360 0300 bfi r3, r0, #0, #1 52c2: f884 3038 strb.w r3, [r4, #56] ; 0x38 if(lv_img_src_get_type(draw_dsc->pattern_image) == LV_IMG_SRC_SYMBOL) { 52c6: 6ae0 ldr r0, [r4, #44] ; 0x2c 52c8: 4b2e ldr r3, [pc, #184] ; (5384 ) 52ca: 4798 blx r3 52cc: 2802 cmp r0, #2 52ce: d00b beq.n 52e8 else if(draw_dsc->pattern_recolor_opa > LV_OPA_MIN) { 52d0: f894 3037 ldrb.w r3, [r4, #55] ; 0x37 52d4: 2b05 cmp r3, #5 52d6: d815 bhi.n 5304 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_BLEND_MODE, pattern_blend_mode, lv_blend_mode_t, _int, scalar) 52d8: 2260 movs r2, #96 ; 0x60 52da: 4631 mov r1, r6 52dc: 4628 mov r0, r5 52de: 4b25 ldr r3, [pc, #148] ; (5374 ) 52e0: 4798 blx r3 52e2: f884 0039 strb.w r0, [r4, #57] ; 0x39 52e6: e70e b.n 5106 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 52e8: 2269 movs r2, #105 ; 0x69 52ea: 4631 mov r1, r6 52ec: 4628 mov r0, r5 52ee: 4b23 ldr r3, [pc, #140] ; (537c ) 52f0: 4798 blx r3 draw_dsc->pattern_recolor = lv_obj_get_style_pattern_recolor(obj, part); 52f2: 86a0 strh r0, [r4, #52] ; 0x34 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 52f4: f248 028e movw r2, #32910 ; 0x808e 52f8: 4631 mov r1, r6 52fa: 4628 mov r0, r5 52fc: 4b20 ldr r3, [pc, #128] ; (5380 ) 52fe: 4798 blx r3 draw_dsc->pattern_font = lv_obj_get_style_text_font(obj, part); 5300: 6320 str r0, [r4, #48] ; 0x30 5302: e7e9 b.n 52d8 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 5304: 2269 movs r2, #105 ; 0x69 5306: 4631 mov r1, r6 5308: 4628 mov r0, r5 530a: 4b1c ldr r3, [pc, #112] ; (537c ) 530c: 4798 blx r3 draw_dsc->pattern_recolor = lv_obj_get_style_pattern_recolor(obj, part); 530e: 86a0 strh r0, [r4, #52] ; 0x34 5310: e7e2 b.n 52d8 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 5312: 2250 movs r2, #80 ; 0x50 5314: 4631 mov r1, r6 5316: 4628 mov r0, r5 5318: 4b16 ldr r3, [pc, #88] ; (5374 ) 531a: 4798 blx r3 draw_dsc->shadow_width = lv_obj_get_style_shadow_width(obj, part); 531c: 8420 strh r0, [r4, #32] if(draw_dsc->shadow_width) { 531e: 2800 cmp r0, #0 5320: f43f aef6 beq.w 5110 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OPA, shadow_opa, lv_opa_t, _opa, scalar) 5324: 225c movs r2, #92 ; 0x5c 5326: 4631 mov r1, r6 5328: 4628 mov r0, r5 532a: 4b13 ldr r3, [pc, #76] ; (5378 ) 532c: 4798 blx r3 draw_dsc->shadow_opa = lv_obj_get_style_shadow_opa(obj, part); 532e: f884 0028 strb.w r0, [r4, #40] ; 0x28 if(draw_dsc->shadow_opa > LV_OPA_MIN) { 5332: 2805 cmp r0, #5 5334: f67f aeec bls.w 5110 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_X, shadow_ofs_x, lv_style_int_t, _int, scalar) 5338: 2251 movs r2, #81 ; 0x51 533a: 4631 mov r1, r6 533c: 4628 mov r0, r5 533e: f8df 8034 ldr.w r8, [pc, #52] ; 5374 5342: 47c0 blx r8 draw_dsc->shadow_ofs_x = lv_obj_get_style_shadow_ofs_x(obj, part); 5344: 8460 strh r0, [r4, #34] ; 0x22 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_Y, shadow_ofs_y, lv_style_int_t, _int, scalar) 5346: 2252 movs r2, #82 ; 0x52 5348: 4631 mov r1, r6 534a: 4628 mov r0, r5 534c: 47c0 blx r8 draw_dsc->shadow_ofs_y = lv_obj_get_style_shadow_ofs_y(obj, part); 534e: 84a0 strh r0, [r4, #36] ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar) 5350: 2253 movs r2, #83 ; 0x53 5352: 4631 mov r1, r6 5354: 4628 mov r0, r5 5356: 47c0 blx r8 draw_dsc->shadow_spread = lv_obj_get_style_shadow_spread(obj, part); 5358: 84e0 strh r0, [r4, #38] ; 0x26 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar) 535a: 2259 movs r2, #89 ; 0x59 535c: 4631 mov r1, r6 535e: 4628 mov r0, r5 5360: 4b06 ldr r3, [pc, #24] ; (537c ) 5362: 4798 blx r3 draw_dsc->shadow_color = lv_obj_get_style_shadow_color(obj, part); 5364: 83e0 strh r0, [r4, #30] _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_BLEND_MODE, shadow_blend_mode, lv_blend_mode_t, _int, scalar) 5366: 2254 movs r2, #84 ; 0x54 5368: 4631 mov r1, r6 536a: 4628 mov r0, r5 536c: 47c0 blx r8 536e: f884 0029 strb.w r0, [r4, #41] ; 0x29 5372: e6cd b.n 5110 5374: 000044d5 .word 0x000044d5 5378: 0000460d .word 0x0000460d 537c: 00004581 .word 0x00004581 5380: 000046a1 .word 0x000046a1 5384: 00009969 .word 0x00009969 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_STR, value_str, const char *, _ptr, scalar) 5388: 227f movs r2, #127 ; 0x7f 538a: 4631 mov r1, r6 538c: 4628 mov r0, r5 538e: 4b22 ldr r3, [pc, #136] ; (5418 ) 5390: 4798 blx r3 draw_dsc->value_str = lv_obj_get_style_value_str(obj, part); 5392: 63e0 str r0, [r4, #60] ; 0x3c if(draw_dsc->value_str) { 5394: 2800 cmp r0, #0 5396: f43f aec0 beq.w 511a _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OPA, value_opa, lv_opa_t, _opa, scalar) 539a: 227c movs r2, #124 ; 0x7c 539c: 4631 mov r1, r6 539e: 4628 mov r0, r5 53a0: 4b1e ldr r3, [pc, #120] ; (541c ) 53a2: 4798 blx r3 draw_dsc->value_opa = lv_obj_get_style_value_opa(obj, part); 53a4: f884 0044 strb.w r0, [r4, #68] ; 0x44 if(draw_dsc->value_opa > LV_OPA_MIN) { 53a8: 2805 cmp r0, #5 53aa: f67f aeb6 bls.w 511a _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_X, value_ofs_x, lv_style_int_t, _int, scalar) 53ae: 2273 movs r2, #115 ; 0x73 53b0: 4631 mov r1, r6 53b2: 4628 mov r0, r5 53b4: f8df 806c ldr.w r8, [pc, #108] ; 5424 53b8: 47c0 blx r8 draw_dsc->value_ofs_x = lv_obj_get_style_value_ofs_x(obj, part); 53ba: f8a4 0048 strh.w r0, [r4, #72] ; 0x48 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_Y, value_ofs_y, lv_style_int_t, _int, scalar) 53be: 2274 movs r2, #116 ; 0x74 53c0: 4631 mov r1, r6 53c2: 4628 mov r0, r5 53c4: 47c0 blx r8 draw_dsc->value_ofs_y = lv_obj_get_style_value_ofs_y(obj, part); 53c6: f8a4 004a strh.w r0, [r4, #74] ; 0x4a _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 53ca: 2279 movs r2, #121 ; 0x79 53cc: 4631 mov r1, r6 53ce: 4628 mov r0, r5 53d0: 4b13 ldr r3, [pc, #76] ; (5420 ) 53d2: 4798 blx r3 draw_dsc->value_color = lv_obj_get_style_value_color(obj, part); 53d4: f8a4 0046 strh.w r0, [r4, #70] ; 0x46 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 53d8: 227e movs r2, #126 ; 0x7e 53da: 4631 mov r1, r6 53dc: 4628 mov r0, r5 53de: 4b0e ldr r3, [pc, #56] ; (5418 ) 53e0: 4798 blx r3 draw_dsc->value_font = lv_obj_get_style_value_font(obj, part); 53e2: 6420 str r0, [r4, #64] ; 0x40 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LETTER_SPACE, value_letter_space, lv_style_int_t, _int, scalar) 53e4: 2270 movs r2, #112 ; 0x70 53e6: 4631 mov r1, r6 53e8: 4628 mov r0, r5 53ea: 47c0 blx r8 draw_dsc->value_letter_space = lv_obj_get_style_value_letter_space(obj, part); 53ec: f8a4 004c strh.w r0, [r4, #76] ; 0x4c _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LINE_SPACE, value_line_space, lv_style_int_t, _int, scalar) 53f0: 2271 movs r2, #113 ; 0x71 53f2: 4631 mov r1, r6 53f4: 4628 mov r0, r5 53f6: 47c0 blx r8 draw_dsc->value_line_space = lv_obj_get_style_value_line_space(obj, part); 53f8: f8a4 004e strh.w r0, [r4, #78] ; 0x4e _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_ALIGN, value_align, lv_align_t, _int, scalar) 53fc: 2275 movs r2, #117 ; 0x75 53fe: 4631 mov r1, r6 5400: 4628 mov r0, r5 5402: 47c0 blx r8 5404: f884 0050 strb.w r0, [r4, #80] ; 0x50 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_BLEND_MODE, value_blend_mode, lv_blend_mode_t, _int, scalar) 5408: 2272 movs r2, #114 ; 0x72 540a: 4631 mov r1, r6 540c: 4628 mov r0, r5 540e: 47c0 blx r8 5410: f884 0051 strb.w r0, [r4, #81] ; 0x51 5414: e681 b.n 511a 5416: bf00 nop 5418: 000046a1 .word 0x000046a1 541c: 0000460d .word 0x0000460d 5420: 00004581 .word 0x00004581 5424: 000044d5 .word 0x000044d5 00005428 : { 5428: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 542c: b098 sub sp, #96 ; 0x60 542e: 4604 mov r4, r0 5430: 460e mov r6, r1 if(mode == LV_DESIGN_COVER_CHK) { 5432: 2a02 cmp r2, #2 5434: d008 beq.n 5448 else if(mode == LV_DESIGN_DRAW_MAIN) { 5436: 2a00 cmp r2, #0 5438: d06c beq.n 5514 else if(mode == LV_DESIGN_DRAW_POST) { 543a: 2a01 cmp r2, #1 543c: f000 80cc beq.w 55d8 return LV_DESIGN_RES_OK; 5440: 2000 movs r0, #0 } 5442: b018 add sp, #96 ; 0x60 5444: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 5448: 2100 movs r1, #0 544a: 4b8e ldr r3, [pc, #568] ; (5684 ) 544c: 4798 blx r3 if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) return LV_DESIGN_RES_MASKED; 544e: b108 cbz r0, 5454 5450: 2003 movs r0, #3 5452: e7f6 b.n 5442 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 5454: 2201 movs r2, #1 5456: 2100 movs r1, #0 5458: 4620 mov r0, r4 545a: 4d8a ldr r5, [pc, #552] ; (5684 ) 545c: 47a8 blx r5 545e: 4607 mov r7, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 5460: 2204 movs r2, #4 5462: 2100 movs r1, #0 5464: 4620 mov r0, r4 5466: 47a8 blx r5 5468: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 546a: 2205 movs r2, #5 546c: 2100 movs r1, #0 546e: 4620 mov r0, r4 5470: 47a8 blx r5 5472: f104 030f add.w r3, r4, #15 5476: f104 0517 add.w r5, r4, #23 uint8_t * d8 = (uint8_t *)dst; 547a: aa03 add r2, sp, #12 *d8 = *s8; 547c: f813 1f01 ldrb.w r1, [r3, #1]! 5480: f802 1b01 strb.w r1, [r2], #1 while(len) { 5484: 429d cmp r5, r3 5486: d1f9 bne.n 547c coords.x1 -= w; 5488: fa1f f888 uxth.w r8, r8 548c: f8bd 300c ldrh.w r3, [sp, #12] 5490: eba3 0308 sub.w r3, r3, r8 5494: f8ad 300c strh.w r3, [sp, #12] coords.x2 += w; 5498: f8bd 3010 ldrh.w r3, [sp, #16] 549c: 4498 add r8, r3 549e: f8ad 8010 strh.w r8, [sp, #16] coords.y1 -= h; 54a2: b280 uxth r0, r0 54a4: f8bd 300e ldrh.w r3, [sp, #14] 54a8: 1a1b subs r3, r3, r0 54aa: f8ad 300e strh.w r3, [sp, #14] coords.y2 += h; 54ae: f8bd 3012 ldrh.w r3, [sp, #18] 54b2: 4418 add r0, r3 54b4: f8ad 0012 strh.w r0, [sp, #18] if(_lv_area_is_in(clip_area, &coords, r) == false) return LV_DESIGN_RES_NOT_COVER; 54b8: 463a mov r2, r7 54ba: a903 add r1, sp, #12 54bc: 4630 mov r0, r6 54be: 4b72 ldr r3, [pc, #456] ; (5688 ) 54c0: 4798 blx r3 54c2: b908 cbnz r0, 54c8 54c4: 2002 movs r0, #2 54c6: e7bc b.n 5442 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 54c8: 222c movs r2, #44 ; 0x2c 54ca: 2100 movs r1, #0 54cc: 4620 mov r0, r4 54ce: 4b6f ldr r3, [pc, #444] ; (568c ) 54d0: 4798 blx r3 if(lv_obj_get_style_bg_opa(obj, LV_OBJ_PART_MAIN) < LV_OPA_MAX) return LV_DESIGN_RES_NOT_COVER; 54d2: 28f9 cmp r0, #249 ; 0xf9 54d4: d801 bhi.n 54da 54d6: 2002 movs r0, #2 54d8: e7b3 b.n 5442 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_BLEND_MODE, bg_blend_mode, lv_blend_mode_t, _int, scalar) 54da: 2220 movs r2, #32 54dc: 2100 movs r1, #0 54de: 4620 mov r0, r4 54e0: 4b68 ldr r3, [pc, #416] ; (5684 ) 54e2: 4798 blx r3 if(lv_obj_get_style_bg_blend_mode(obj, LV_OBJ_PART_MAIN) != LV_BLEND_MODE_NORMAL) return LV_DESIGN_RES_NOT_COVER; 54e4: b2c0 uxtb r0, r0 54e6: b108 cbz r0, 54ec 54e8: 2002 movs r0, #2 54ea: e7aa b.n 5442 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_BLEND_MODE, border_blend_mode, lv_blend_mode_t, _int, scalar) 54ec: 2232 movs r2, #50 ; 0x32 54ee: 2100 movs r1, #0 54f0: 4620 mov r0, r4 54f2: 4b64 ldr r3, [pc, #400] ; (5684 ) 54f4: 4798 blx r3 if(lv_obj_get_style_border_blend_mode(obj, LV_OBJ_PART_MAIN) != LV_BLEND_MODE_NORMAL) return LV_DESIGN_RES_NOT_COVER; 54f6: b2c0 uxtb r0, r0 54f8: b108 cbz r0, 54fe 54fa: 2002 movs r0, #2 54fc: e7a1 b.n 5442 _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 54fe: f248 020c movw r2, #32780 ; 0x800c 5502: 2100 movs r1, #0 5504: 4620 mov r0, r4 5506: 4b61 ldr r3, [pc, #388] ; (568c ) 5508: 4798 blx r3 return LV_DESIGN_RES_COVER; 550a: 28fa cmp r0, #250 ; 0xfa 550c: bf34 ite cc 550e: 2002 movcc r0, #2 5510: 2001 movcs r0, #1 5512: e796 b.n 5442 lv_draw_rect_dsc_init(&draw_dsc); 5514: a803 add r0, sp, #12 5516: 4b5e ldr r3, [pc, #376] ; (5690 ) 5518: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 551a: 2233 movs r2, #51 ; 0x33 551c: 2100 movs r1, #0 551e: 4620 mov r0, r4 5520: 4b58 ldr r3, [pc, #352] ; (5684 ) 5522: 4798 blx r3 if(lv_obj_get_style_border_post(obj, LV_OBJ_PART_MAIN)) { 5524: b110 cbz r0, 552c draw_dsc.border_opa = LV_OPA_TRANSP; 5526: 2300 movs r3, #0 5528: f88d 3020 strb.w r3, [sp, #32] lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc); 552c: aa03 add r2, sp, #12 552e: 2100 movs r1, #0 5530: 4620 mov r0, r4 5532: 4b58 ldr r3, [pc, #352] ; (5694 ) 5534: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 5536: 2204 movs r2, #4 5538: 2100 movs r1, #0 553a: 4620 mov r0, r4 553c: 4d51 ldr r5, [pc, #324] ; (5684 ) 553e: 47a8 blx r5 5540: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 5542: 2205 movs r2, #5 5544: 2100 movs r1, #0 5546: 4620 mov r0, r4 5548: 47a8 blx r5 lv_area_copy(&coords, &obj->coords); 554a: f104 0710 add.w r7, r4, #16 554e: f104 030f add.w r3, r4, #15 5552: f104 0517 add.w r5, r4, #23 uint8_t * d8 = (uint8_t *)dst; 5556: aa01 add r2, sp, #4 *d8 = *s8; 5558: f813 1f01 ldrb.w r1, [r3, #1]! 555c: f802 1b01 strb.w r1, [r2], #1 while(len) { 5560: 42ab cmp r3, r5 5562: d1f9 bne.n 5558 coords.x1 -= w; 5564: fa1f f888 uxth.w r8, r8 5568: f8bd 3004 ldrh.w r3, [sp, #4] 556c: eba3 0308 sub.w r3, r3, r8 5570: f8ad 3004 strh.w r3, [sp, #4] coords.x2 += w; 5574: f8bd 3008 ldrh.w r3, [sp, #8] 5578: 4498 add r8, r3 557a: f8ad 8008 strh.w r8, [sp, #8] coords.y1 -= h; 557e: b280 uxth r0, r0 5580: f8bd 3006 ldrh.w r3, [sp, #6] 5584: 1a1b subs r3, r3, r0 5586: f8ad 3006 strh.w r3, [sp, #6] coords.y2 += h; 558a: f8bd 300a ldrh.w r3, [sp, #10] 558e: 4418 add r0, r3 5590: f8ad 000a strh.w r0, [sp, #10] lv_draw_rect(&coords, clip_area, &draw_dsc); 5594: aa03 add r2, sp, #12 5596: 4631 mov r1, r6 5598: a801 add r0, sp, #4 559a: 4b3f ldr r3, [pc, #252] ; (5698 ) 559c: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 559e: 2202 movs r2, #2 55a0: 2100 movs r1, #0 55a2: 4620 mov r0, r4 55a4: 4b37 ldr r3, [pc, #220] ; (5684 ) 55a6: 4798 blx r3 if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) { 55a8: b908 cbnz r0, 55ae return LV_DESIGN_RES_OK; 55aa: 2000 movs r0, #0 55ac: e749 b.n 5442 lv_draw_mask_radius_param_t * mp = _lv_mem_buf_get(sizeof(lv_draw_mask_radius_param_t)); 55ae: 201c movs r0, #28 55b0: 4b3a ldr r3, [pc, #232] ; (569c ) 55b2: 4798 blx r3 55b4: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 55b6: 2201 movs r2, #1 55b8: 2100 movs r1, #0 55ba: 4620 mov r0, r4 55bc: 4b31 ldr r3, [pc, #196] ; (5684 ) 55be: 4798 blx r3 lv_draw_mask_radius_init(mp, &obj->coords, r, false); 55c0: 2300 movs r3, #0 55c2: 4602 mov r2, r0 55c4: 4639 mov r1, r7 55c6: 4628 mov r0, r5 55c8: 4e35 ldr r6, [pc, #212] ; (56a0 ) 55ca: 47b0 blx r6 lv_draw_mask_add(mp, obj + 8); 55cc: f504 7118 add.w r1, r4, #608 ; 0x260 55d0: 4628 mov r0, r5 55d2: 4b34 ldr r3, [pc, #208] ; (56a4 ) 55d4: 4798 blx r3 55d6: e7e8 b.n 55aa _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 55d8: 2202 movs r2, #2 55da: 2100 movs r1, #0 55dc: 4b29 ldr r3, [pc, #164] ; (5684 ) 55de: 4798 blx r3 if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) { 55e0: b938 cbnz r0, 55f2 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 55e2: 2233 movs r2, #51 ; 0x33 55e4: 2100 movs r1, #0 55e6: 4620 mov r0, r4 55e8: 4b26 ldr r3, [pc, #152] ; (5684 ) 55ea: 4798 blx r3 if(lv_obj_get_style_border_post(obj, LV_OBJ_PART_MAIN)) { 55ec: b940 cbnz r0, 5600 return LV_DESIGN_RES_OK; 55ee: 2000 movs r0, #0 55f0: e727 b.n 5442 lv_draw_mask_radius_param_t * param = lv_draw_mask_remove_custom(obj + 8); 55f2: f504 7018 add.w r0, r4, #608 ; 0x260 55f6: 4b2c ldr r3, [pc, #176] ; (56a8 ) 55f8: 4798 blx r3 _lv_mem_buf_release(param); 55fa: 4b2c ldr r3, [pc, #176] ; (56ac ) 55fc: 4798 blx r3 55fe: e7f0 b.n 55e2 lv_draw_rect_dsc_init(&draw_dsc); 5600: a803 add r0, sp, #12 5602: 4b23 ldr r3, [pc, #140] ; (5690 ) 5604: 4798 blx r3 draw_dsc.bg_opa = LV_OPA_TRANSP; 5606: 2700 movs r7, #0 5608: f88d 7018 strb.w r7, [sp, #24] draw_dsc.pattern_opa = LV_OPA_TRANSP; 560c: f88d 7042 strb.w r7, [sp, #66] ; 0x42 draw_dsc.shadow_opa = LV_OPA_TRANSP; 5610: f88d 7034 strb.w r7, [sp, #52] ; 0x34 lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc); 5614: aa03 add r2, sp, #12 5616: 4639 mov r1, r7 5618: 4620 mov r0, r4 561a: 4b1e ldr r3, [pc, #120] ; (5694 ) 561c: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 561e: 2204 movs r2, #4 5620: 4639 mov r1, r7 5622: 4620 mov r0, r4 5624: 4d17 ldr r5, [pc, #92] ; (5684 ) 5626: 47a8 blx r5 5628: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 562a: 2205 movs r2, #5 562c: 4639 mov r1, r7 562e: 4620 mov r0, r4 5630: 47a8 blx r5 5632: f104 030f add.w r3, r4, #15 5636: 3417 adds r4, #23 uint8_t * d8 = (uint8_t *)dst; 5638: aa01 add r2, sp, #4 *d8 = *s8; 563a: f813 1f01 ldrb.w r1, [r3, #1]! 563e: f802 1b01 strb.w r1, [r2], #1 while(len) { 5642: 42a3 cmp r3, r4 5644: d1f9 bne.n 563a coords.x1 -= w; 5646: fa1f f388 uxth.w r3, r8 564a: f8bd 2004 ldrh.w r2, [sp, #4] 564e: 1ad2 subs r2, r2, r3 5650: f8ad 2004 strh.w r2, [sp, #4] coords.x2 += w; 5654: f8bd 2008 ldrh.w r2, [sp, #8] 5658: 4413 add r3, r2 565a: f8ad 3008 strh.w r3, [sp, #8] coords.y1 -= h; 565e: b280 uxth r0, r0 5660: f8bd 3006 ldrh.w r3, [sp, #6] 5664: 1a1b subs r3, r3, r0 5666: f8ad 3006 strh.w r3, [sp, #6] coords.y2 += h; 566a: f8bd 300a ldrh.w r3, [sp, #10] 566e: 4418 add r0, r3 5670: f8ad 000a strh.w r0, [sp, #10] lv_draw_rect(&coords, clip_area, &draw_dsc); 5674: aa03 add r2, sp, #12 5676: 4631 mov r1, r6 5678: a801 add r0, sp, #4 567a: 4b07 ldr r3, [pc, #28] ; (5698 ) 567c: 4798 blx r3 return LV_DESIGN_RES_OK; 567e: 2000 movs r0, #0 5680: e6df b.n 5442 5682: bf00 nop 5684: 000044d5 .word 0x000044d5 5688: 0001176d .word 0x0001176d 568c: 0000460d .word 0x0000460d 5690: 0000c269 .word 0x0000c269 5694: 000050c5 .word 0x000050c5 5698: 0000c331 .word 0x0000c331 569c: 0001293d .word 0x0001293d 56a0: 0000c02d .word 0x0000c02d 56a4: 0000bdc1 .word 0x0000bdc1 56a8: 0000be91 .word 0x0000be91 56ac: 00012571 .word 0x00012571 000056b0 : { 56b0: b5f8 push {r3, r4, r5, r6, r7, lr} 56b2: 4605 mov r5, r0 56b4: 460e mov r6, r1 56b6: 4614 mov r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_OPA, text_opa, lv_opa_t, _opa, scalar) 56b8: f248 028c movw r2, #32908 ; 0x808c 56bc: 4b26 ldr r3, [pc, #152] ; (5758 ) 56be: 4798 blx r3 draw_dsc->opa = lv_obj_get_style_text_opa(obj, part); 56c0: 7220 strb r0, [r4, #8] if(draw_dsc->opa <= LV_OPA_MIN) return; 56c2: 2805 cmp r0, #5 56c4: d800 bhi.n 56c8 56c6: bdf8 pop {r3, r4, r5, r6, r7, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 56c8: f248 020c movw r2, #32780 ; 0x800c 56cc: 4631 mov r1, r6 56ce: 4628 mov r0, r5 56d0: 4b21 ldr r3, [pc, #132] ; (5758 ) 56d2: 4798 blx r3 if(opa_scale < LV_OPA_MAX) { 56d4: 28f9 cmp r0, #249 ; 0xf9 56d6: d805 bhi.n 56e4 draw_dsc->opa = (uint16_t)((uint16_t)draw_dsc->opa * opa_scale) >> 8; 56d8: 7a23 ldrb r3, [r4, #8] 56da: fb13 f000 smulbb r0, r3, r0 56de: f3c0 2007 ubfx r0, r0, #8, #8 56e2: 7220 strb r0, [r4, #8] if(draw_dsc->opa <= LV_OPA_MIN) return; 56e4: 7a23 ldrb r3, [r4, #8] 56e6: 2b05 cmp r3, #5 56e8: d9ed bls.n 56c6 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 56ea: f248 0289 movw r2, #32905 ; 0x8089 56ee: 4631 mov r1, r6 56f0: 4628 mov r0, r5 56f2: 4b1a ldr r3, [pc, #104] ; (575c ) 56f4: 4798 blx r3 draw_dsc->color = lv_obj_get_style_text_color(obj, part); 56f6: 8020 strh r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 56f8: f248 0280 movw r2, #32896 ; 0x8080 56fc: 4631 mov r1, r6 56fe: 4628 mov r0, r5 5700: 4f17 ldr r7, [pc, #92] ; (5760 ) 5702: 47b8 blx r7 draw_dsc->letter_space = lv_obj_get_style_text_letter_space(obj, part); 5704: 81a0 strh r0, [r4, #12] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 5706: f248 0281 movw r2, #32897 ; 0x8081 570a: 4631 mov r1, r6 570c: 4628 mov r0, r5 570e: 47b8 blx r7 draw_dsc->line_space = lv_obj_get_style_text_line_space(obj, part); 5710: 8160 strh r0, [r4, #10] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_DECOR, text_decor, lv_text_decor_t, _int, scalar) 5712: f248 0282 movw r2, #32898 ; 0x8082 5716: 4631 mov r1, r6 5718: 4628 mov r0, r5 571a: 47b8 blx r7 571c: 7620 strb r0, [r4, #24] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_BLEND_MODE, text_blend_mode, lv_blend_mode_t, _int, scalar) 571e: f248 0283 movw r2, #32899 ; 0x8083 5722: 4631 mov r1, r6 5724: 4628 mov r0, r5 5726: 47b8 blx r7 5728: 7660 strb r0, [r4, #25] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 572a: f248 028e movw r2, #32910 ; 0x808e 572e: 4631 mov r1, r6 5730: 4628 mov r0, r5 5732: 4b0c ldr r3, [pc, #48] ; (5764 ) 5734: 4798 blx r3 draw_dsc->font = lv_obj_get_style_text_font(obj, part); 5736: 6060 str r0, [r4, #4] if(draw_dsc->sel_start != LV_DRAW_LABEL_NO_TXT_SEL && draw_dsc->sel_end != LV_DRAW_LABEL_NO_TXT_SEL) { 5738: 89e2 ldrh r2, [r4, #14] 573a: f64f 73ff movw r3, #65535 ; 0xffff 573e: 429a cmp r2, r3 5740: d0c1 beq.n 56c6 5742: 8a22 ldrh r2, [r4, #16] 5744: 429a cmp r2, r3 5746: d0be beq.n 56c6 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_SEL_COLOR, text_sel_color, lv_color_t, _color, nonscalar) 5748: f248 028a movw r2, #32906 ; 0x808a 574c: 4631 mov r1, r6 574e: 4628 mov r0, r5 5750: 4b02 ldr r3, [pc, #8] ; (575c ) 5752: 4798 blx r3 draw_dsc->color = lv_obj_get_style_text_sel_color(obj, part); 5754: 8020 strh r0, [r4, #0] 5756: e7b6 b.n 56c6 5758: 0000460d .word 0x0000460d 575c: 00004581 .word 0x00004581 5760: 000044d5 .word 0x000044d5 5764: 000046a1 .word 0x000046a1 00005768 : { 5768: b570 push {r4, r5, r6, lr} 576a: 4605 mov r5, r0 576c: 460e mov r6, r1 576e: 4614 mov r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_OPA, image_opa, lv_opa_t, _opa, scalar) 5770: f248 02ac movw r2, #32940 ; 0x80ac 5774: 4b21 ldr r3, [pc, #132] ; (57fc ) 5776: 4798 blx r3 draw_dsc->opa = lv_obj_get_style_image_opa(obj, part); 5778: 7020 strb r0, [r4, #0] if(draw_dsc->opa <= LV_OPA_MIN) return; 577a: 2805 cmp r0, #5 577c: d800 bhi.n 5780 577e: bd70 pop {r4, r5, r6, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 5780: f248 020c movw r2, #32780 ; 0x800c 5784: 4631 mov r1, r6 5786: 4628 mov r0, r5 5788: 4b1c ldr r3, [pc, #112] ; (57fc ) 578a: 4798 blx r3 if(opa_scale < LV_OPA_MAX) { 578c: 28f9 cmp r0, #249 ; 0xf9 578e: d805 bhi.n 579c draw_dsc->opa = (uint16_t)((uint16_t)draw_dsc->opa * opa_scale) >> 8; 5790: 7823 ldrb r3, [r4, #0] 5792: fb13 f000 smulbb r0, r3, r0 5796: f3c0 2007 ubfx r0, r0, #8, #8 579a: 7020 strb r0, [r4, #0] if(draw_dsc->opa <= LV_OPA_MIN) return; 579c: 7823 ldrb r3, [r4, #0] 579e: 2b05 cmp r3, #5 57a0: d9ed bls.n 577e draw_dsc->angle = 0; 57a2: 2300 movs r3, #0 57a4: 8063 strh r3, [r4, #2] draw_dsc->zoom = LV_IMG_ZOOM_NONE; 57a6: f44f 7380 mov.w r3, #256 ; 0x100 57aa: 8123 strh r3, [r4, #8] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 57ac: 8aab ldrh r3, [r5, #20] 57ae: 3301 adds r3, #1 57b0: 8a2a ldrh r2, [r5, #16] 57b2: 1a9b subs r3, r3, r2 draw_dsc->pivot.x = lv_area_get_width(&obj->coords) / 2; 57b4: b21b sxth r3, r3 57b6: eb03 73d3 add.w r3, r3, r3, lsr #31 57ba: 105b asrs r3, r3, #1 57bc: 80a3 strh r3, [r4, #4] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 57be: 8aeb ldrh r3, [r5, #22] 57c0: 3301 adds r3, #1 57c2: 8a6a ldrh r2, [r5, #18] 57c4: 1a9b subs r3, r3, r2 draw_dsc->pivot.y = lv_area_get_height(&obj->coords) / 2; 57c6: b21b sxth r3, r3 57c8: eb03 73d3 add.w r3, r3, r3, lsr #31 57cc: 105b asrs r3, r3, #1 57ce: 80e3 strh r3, [r4, #6] _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR_OPA, image_recolor_opa, lv_opa_t, _opa, scalar) 57d0: f248 02ad movw r2, #32941 ; 0x80ad 57d4: 4631 mov r1, r6 57d6: 4628 mov r0, r5 57d8: 4b08 ldr r3, [pc, #32] ; (57fc ) 57da: 4798 blx r3 draw_dsc->recolor_opa = lv_obj_get_style_image_recolor_opa(obj, part); 57dc: 72a0 strb r0, [r4, #10] _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 57de: f248 02a9 movw r2, #32937 ; 0x80a9 57e2: 4631 mov r1, r6 57e4: 4628 mov r0, r5 57e6: 4b06 ldr r3, [pc, #24] ; (5800 ) 57e8: 4798 blx r3 draw_dsc->recolor = lv_obj_get_style_image_recolor(obj, part); 57ea: 81a0 strh r0, [r4, #12] _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_BLEND_MODE, image_blend_mode, lv_blend_mode_t, _int, scalar) 57ec: f248 02a0 movw r2, #32928 ; 0x80a0 57f0: 4631 mov r1, r6 57f2: 4628 mov r0, r5 57f4: 4b03 ldr r3, [pc, #12] ; (5804 ) 57f6: 4798 blx r3 57f8: 73a0 strb r0, [r4, #14] 57fa: e7c0 b.n 577e 57fc: 0000460d .word 0x0000460d 5800: 00004581 .word 0x00004581 5804: 000044d5 .word 0x000044d5 00005808 : { 5808: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 580c: b089 sub sp, #36 ; 0x24 580e: 4604 mov r4, r0 5810: 460e mov r6, r1 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 5812: 2250 movs r2, #80 ; 0x50 5814: 4b76 ldr r3, [pc, #472] ; (59f0 ) 5816: 4798 blx r3 if(sh_width) { 5818: 4607 mov r7, r0 581a: bb68 cbnz r0, 5878 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_STR, value_str, const char *, _ptr, scalar) 581c: 227f movs r2, #127 ; 0x7f 581e: 4631 mov r1, r6 5820: 4620 mov r0, r4 5822: 4b74 ldr r3, [pc, #464] ; (59f4 ) 5824: 4798 blx r3 if(value_str) { 5826: 4680 mov r8, r0 5828: b130 cbz r0, 5838 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OPA, value_opa, lv_opa_t, _opa, scalar) 582a: 227c movs r2, #124 ; 0x7c 582c: 4631 mov r1, r6 582e: 4620 mov r0, r4 5830: 4b71 ldr r3, [pc, #452] ; (59f8 ) 5832: 4798 blx r3 if(value_opa > LV_OPA_MIN) { 5834: 2805 cmp r0, #5 5836: d84c bhi.n 58d2 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 5838: 2240 movs r2, #64 ; 0x40 583a: 4631 mov r1, r6 583c: 4620 mov r0, r4 583e: 4b6c ldr r3, [pc, #432] ; (59f0 ) 5840: 4798 blx r3 if(outline_width) { 5842: 4605 mov r5, r0 5844: 2800 cmp r0, #0 5846: f040 80bf bne.w 59c8 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 584a: 2204 movs r2, #4 584c: 4631 mov r1, r6 584e: 4620 mov r0, r4 5850: f8df 819c ldr.w r8, [pc, #412] ; 59f0 5854: 47c0 blx r8 5856: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 5858: 2205 movs r2, #5 585a: 4631 mov r1, r6 585c: 4620 mov r0, r4 585e: 47c0 blx r8 lv_coord_t wh = LV_MATH_MAX(w, h); 5860: 42a8 cmp r0, r5 5862: bfb8 it lt 5864: 4628 movlt r0, r5 5866: b200 sxth r0, r0 if(wh > 0) s += wh; 5868: 2800 cmp r0, #0 586a: bfc4 itt gt 586c: 19c0 addgt r0, r0, r7 586e: b207 sxthgt r7, r0 } 5870: 4638 mov r0, r7 5872: b009 add sp, #36 ; 0x24 5874: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OPA, shadow_opa, lv_opa_t, _opa, scalar) 5878: 225c movs r2, #92 ; 0x5c 587a: 4631 mov r1, r6 587c: 4620 mov r0, r4 587e: 4b5e ldr r3, [pc, #376] ; (59f8 ) 5880: 4798 blx r3 if(sh_opa > LV_OPA_MIN) { 5882: 2805 cmp r0, #5 5884: d801 bhi.n 588a lv_coord_t s = 0; 5886: 2700 movs r7, #0 5888: e7c8 b.n 581c _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar) 588a: 2253 movs r2, #83 ; 0x53 588c: 4631 mov r1, r6 588e: 4620 mov r0, r4 5890: 4d57 ldr r5, [pc, #348] ; (59f0 ) 5892: 47a8 blx r5 sh_width = sh_width / 2; /*THe blur adds only half width*/ 5894: eb07 77d7 add.w r7, r7, r7, lsr #31 sh_width++; 5898: eb00 0767 add.w r7, r0, r7, asr #1 sh_width += lv_obj_get_style_shadow_spread(obj, part); 589c: 3701 adds r7, #1 589e: b2bf uxth r7, r7 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_X, shadow_ofs_x, lv_style_int_t, _int, scalar) 58a0: 2251 movs r2, #81 ; 0x51 58a2: 4631 mov r1, r6 58a4: 4620 mov r0, r4 58a6: 47a8 blx r5 58a8: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_Y, shadow_ofs_y, lv_style_int_t, _int, scalar) 58aa: 2252 movs r2, #82 ; 0x52 58ac: 4631 mov r1, r6 58ae: 4620 mov r0, r4 58b0: 47a8 blx r5 sh_width += LV_MATH_MAX(LV_MATH_ABS(sh_ofs_x), LV_MATH_ABS(sh_ofs_y)); 58b2: 2800 cmp r0, #0 58b4: bfb8 it lt 58b6: 4240 neglt r0, r0 58b8: f1b8 0f00 cmp.w r8, #0 58bc: bfb8 it lt 58be: f1c8 0800 rsblt r8, r8, #0 58c2: 4540 cmp r0, r8 58c4: bfac ite ge 58c6: 183f addge r7, r7, r0 58c8: 4447 addlt r7, r8 s = LV_MATH_MAX(s, sh_width); 58ca: b238 sxth r0, r7 58cc: ea20 77e0 bic.w r7, r0, r0, asr #31 58d0: e7a4 b.n 581c _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LETTER_SPACE, value_letter_space, lv_style_int_t, _int, scalar) 58d2: 2270 movs r2, #112 ; 0x70 58d4: 4631 mov r1, r6 58d6: 4620 mov r0, r4 58d8: 4d45 ldr r5, [pc, #276] ; (59f0 ) 58da: 47a8 blx r5 58dc: 4682 mov sl, r0 58de: 2270 movs r2, #112 ; 0x70 58e0: 4631 mov r1, r6 58e2: 4620 mov r0, r4 58e4: 47a8 blx r5 58e6: 4683 mov fp, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 58e8: 227e movs r2, #126 ; 0x7e 58ea: 4631 mov r1, r6 58ec: 4620 mov r0, r4 58ee: 4b41 ldr r3, [pc, #260] ; (59f4 ) 58f0: 4798 blx r3 _lv_txt_get_size(&txt_size, value_str, font, letter_space, line_space, LV_COORD_MAX, LV_TXT_FLAG_NONE); 58f2: f04f 0900 mov.w r9, #0 58f6: f8cd 9008 str.w r9, [sp, #8] 58fa: f647 4318 movw r3, #31768 ; 0x7c18 58fe: 9301 str r3, [sp, #4] 5900: f8cd b000 str.w fp, [sp] 5904: 4653 mov r3, sl 5906: 4602 mov r2, r0 5908: 4641 mov r1, r8 590a: a804 add r0, sp, #16 590c: f8df 80ec ldr.w r8, [pc, #236] ; 59fc 5910: 47c0 blx r8 value_area.x1 = 0; 5912: f8ad 9018 strh.w r9, [sp, #24] value_area.y1 = 0; 5916: f8ad 901a strh.w r9, [sp, #26] value_area.x2 = txt_size.x - 1; 591a: f8bd 3010 ldrh.w r3, [sp, #16] 591e: 3b01 subs r3, #1 5920: f8ad 301c strh.w r3, [sp, #28] value_area.y2 = txt_size.y - 1; 5924: f8bd 3012 ldrh.w r3, [sp, #18] 5928: 3b01 subs r3, #1 592a: f8ad 301e strh.w r3, [sp, #30] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_ALIGN, value_align, lv_align_t, _int, scalar) 592e: 2275 movs r2, #117 ; 0x75 5930: 4631 mov r1, r6 5932: 4620 mov r0, r4 5934: 47a8 blx r5 5936: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_X, value_ofs_x, lv_style_int_t, _int, scalar) 5938: 2273 movs r2, #115 ; 0x73 593a: 4631 mov r1, r6 593c: 4620 mov r0, r4 593e: 47a8 blx r5 5940: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_Y, value_ofs_y, lv_style_int_t, _int, scalar) 5942: 2274 movs r2, #116 ; 0x74 5944: 4631 mov r1, r6 5946: 4620 mov r0, r4 5948: 47a8 blx r5 594a: 4605 mov r5, r0 _lv_area_align(&obj->coords, &value_area, align, &p_align); 594c: ab05 add r3, sp, #20 594e: fa5f f289 uxtb.w r2, r9 5952: a906 add r1, sp, #24 5954: f104 0010 add.w r0, r4, #16 5958: f8df 90a4 ldr.w r9, [pc, #164] ; 5a00 595c: 47c8 blx r9 value_area.x1 += p_align.x + xofs; 595e: f8bd 3014 ldrh.w r3, [sp, #20] 5962: 4443 add r3, r8 5964: b29b uxth r3, r3 value_area.y1 += p_align.y + yofs; 5966: f8bd 2016 ldrh.w r2, [sp, #22] 596a: 442a add r2, r5 596c: b292 uxth r2, r2 s = LV_MATH_MAX(s, obj->coords.x1 - value_area.x1); 596e: f9b4 0010 ldrsh.w r0, [r4, #16] value_area.x1 += p_align.x + xofs; 5972: f8bd 1018 ldrh.w r1, [sp, #24] 5976: 4419 add r1, r3 s = LV_MATH_MAX(s, obj->coords.x1 - value_area.x1); 5978: b209 sxth r1, r1 597a: 1a40 subs r0, r0, r1 597c: 42b8 cmp r0, r7 597e: bfb8 it lt 5980: 4638 movlt r0, r7 s = LV_MATH_MAX(s, obj->coords.y1 - value_area.y1); 5982: f9b4 1012 ldrsh.w r1, [r4, #18] value_area.y1 += p_align.y + yofs; 5986: f8bd 701a ldrh.w r7, [sp, #26] 598a: 4417 add r7, r2 s = LV_MATH_MAX(s, obj->coords.y1 - value_area.y1); 598c: b23f sxth r7, r7 598e: 1bcf subs r7, r1, r7 5990: b200 sxth r0, r0 5992: 4287 cmp r7, r0 5994: bfb8 it lt 5996: 4607 movlt r7, r0 value_area.x2 += p_align.x + xofs; 5998: f8bd 001c ldrh.w r0, [sp, #28] 599c: 4403 add r3, r0 s = LV_MATH_MAX(s, value_area.x2 - obj->coords.x2); 599e: b21b sxth r3, r3 59a0: f9b4 0014 ldrsh.w r0, [r4, #20] 59a4: 1a18 subs r0, r3, r0 59a6: b23b sxth r3, r7 59a8: 4283 cmp r3, r0 59aa: bfb8 it lt 59ac: 4603 movlt r3, r0 value_area.y2 += p_align.y + yofs; 59ae: f8bd 001e ldrh.w r0, [sp, #30] 59b2: 4410 add r0, r2 s = LV_MATH_MAX(s, value_area.y2 - obj->coords.y2); 59b4: b200 sxth r0, r0 59b6: f9b4 7016 ldrsh.w r7, [r4, #22] 59ba: 1bc7 subs r7, r0, r7 59bc: b218 sxth r0, r3 59be: 42b8 cmp r0, r7 59c0: bfb8 it lt 59c2: 4638 movlt r0, r7 59c4: b207 sxth r7, r0 59c6: e737 b.n 5838 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 59c8: 224c movs r2, #76 ; 0x4c 59ca: 4631 mov r1, r6 59cc: 4620 mov r0, r4 59ce: 4b0a ldr r3, [pc, #40] ; (59f8 ) 59d0: 4798 blx r3 if(outline_opa > LV_OPA_MIN) { 59d2: 2805 cmp r0, #5 59d4: f67f af39 bls.w 584a _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar) 59d8: 2241 movs r2, #65 ; 0x41 59da: 4631 mov r1, r6 59dc: 4620 mov r0, r4 59de: 4b04 ldr r3, [pc, #16] ; (59f0 ) 59e0: 4798 blx r3 s = LV_MATH_MAX(s, outline_pad + outline_width); 59e2: 4428 add r0, r5 59e4: 42b8 cmp r0, r7 59e6: bfb8 it lt 59e8: 4638 movlt r0, r7 59ea: b207 sxth r7, r0 59ec: e72d b.n 584a 59ee: bf00 nop 59f0: 000044d5 .word 0x000044d5 59f4: 000046a1 .word 0x000046a1 59f8: 0000460d .word 0x0000460d 59fc: 0001407d .word 0x0001407d 5a00: 00011825 .word 0x00011825 00005a04 : if(sign == LV_SIGNAL_GET_STYLE) { 5a04: 2908 cmp r1, #8 5a06: d01a beq.n 5a3e { 5a08: b510 push {r4, lr} 5a0a: 4604 mov r4, r0 else if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 5a0c: 2907 cmp r1, #7 5a0e: d020 beq.n 5a52 if(sign == LV_SIGNAL_CHILD_CHG) { 5a10: 2901 cmp r1, #1 5a12: d023 beq.n 5a5c else if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) { 5a14: 2906 cmp r1, #6 5a16: d027 beq.n 5a68 else if(sign == LV_SIGNAL_PARENT_SIZE_CHG) { 5a18: 2903 cmp r1, #3 5a1a: d030 beq.n 5a7e else if(sign == LV_SIGNAL_STYLE_CHG) { 5a1c: 2904 cmp r1, #4 5a1e: d039 beq.n 5a94 else if(sign == LV_SIGNAL_PRESSED) { 5a20: 290b cmp r1, #11 5a22: d03b beq.n 5a9c else if(sign == LV_SIGNAL_RELEASED || sign == LV_SIGNAL_PRESS_LOST) { 5a24: f1a1 030d sub.w r3, r1, #13 5a28: b2db uxtb r3, r3 5a2a: 2b01 cmp r3, #1 5a2c: d93b bls.n 5aa6 else if(sign == LV_SIGNAL_FOCUS) { 5a2e: 2916 cmp r1, #22 5a30: d03e beq.n 5ab0 else if(sign == LV_SIGNAL_DEFOCUS) { 5a32: 2917 cmp r1, #23 5a34: d051 beq.n 5ada else if(sign == LV_SIGNAL_CLEANUP) { 5a36: 2900 cmp r1, #0 5a38: d054 beq.n 5ae4 lv_res_t res = LV_RES_OK; 5a3a: 2001 movs r0, #1 } 5a3c: bd10 pop {r4, pc} if(info->part == LV_OBJ_PART_MAIN) info->result = &obj->style_list; 5a3e: 7813 ldrb r3, [r2, #0] 5a40: b91b cbnz r3, 5a4a 5a42: 3028 adds r0, #40 ; 0x28 5a44: 6050 str r0, [r2, #4] return LV_RES_OK; 5a46: 2001 movs r0, #1 5a48: 4770 bx lr else info->result = NULL; 5a4a: 2300 movs r3, #0 5a4c: 6053 str r3, [r2, #4] return LV_RES_OK; 5a4e: 2001 movs r0, #1 5a50: 4770 bx lr else if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 5a52: 4926 ldr r1, [pc, #152] ; (5aec ) 5a54: 4610 mov r0, r2 5a56: 4b26 ldr r3, [pc, #152] ; (5af0 ) 5a58: 4798 blx r3 5a5a: bd10 pop {r4, pc} if(lv_obj_is_protected(obj, LV_PROTECT_CHILD_CHG) != false) res = LV_RES_INV; 5a5c: 4b25 ldr r3, [pc, #148] ; (5af4 ) 5a5e: 4798 blx r3 5a60: f080 0001 eor.w r0, r0, #1 return LV_RES_OK; 5a64: b2c0 uxtb r0, r0 5a66: bd10 pop {r4, pc} lv_coord_t d = lv_obj_get_draw_rect_ext_pad_size(obj, LV_OBJ_PART_MAIN); 5a68: 2100 movs r1, #0 5a6a: 4b23 ldr r3, [pc, #140] ; (5af8 ) 5a6c: 4798 blx r3 obj->ext_draw_pad = LV_MATH_MAX(obj->ext_draw_pad, d); 5a6e: f9b4 3032 ldrsh.w r3, [r4, #50] ; 0x32 5a72: 4298 cmp r0, r3 5a74: bfb8 it lt 5a76: 4618 movlt r0, r3 5a78: 8660 strh r0, [r4, #50] ; 0x32 lv_res_t res = LV_RES_OK; 5a7a: 2001 movs r0, #1 5a7c: bd10 pop {r4, pc} if(obj->realign.auto_realign) { 5a7e: f890 3049 ldrb.w r3, [r0, #73] ; 0x49 5a82: f013 0f01 tst.w r3, #1 5a86: d101 bne.n 5a8c lv_res_t res = LV_RES_OK; 5a88: 2001 movs r0, #1 5a8a: bd10 pop {r4, pc} lv_obj_realign(obj); 5a8c: 4b1b ldr r3, [pc, #108] ; (5afc ) 5a8e: 4798 blx r3 lv_res_t res = LV_RES_OK; 5a90: 2001 movs r0, #1 5a92: bd10 pop {r4, pc} lv_obj_refresh_ext_draw_pad(obj); 5a94: 4b1a ldr r3, [pc, #104] ; (5b00 ) 5a96: 4798 blx r3 lv_res_t res = LV_RES_OK; 5a98: 2001 movs r0, #1 5a9a: bd10 pop {r4, pc} lv_obj_add_state(obj, LV_STATE_PRESSED); 5a9c: 2110 movs r1, #16 5a9e: 4b19 ldr r3, [pc, #100] ; (5b04 ) 5aa0: 4798 blx r3 lv_res_t res = LV_RES_OK; 5aa2: 2001 movs r0, #1 5aa4: bd10 pop {r4, pc} lv_obj_clear_state(obj, LV_STATE_PRESSED); 5aa6: 2110 movs r1, #16 5aa8: 4b17 ldr r3, [pc, #92] ; (5b08 ) 5aaa: 4798 blx r3 lv_res_t res = LV_RES_OK; 5aac: 2001 movs r0, #1 5aae: bd10 pop {r4, pc} if(lv_group_get_editing(lv_obj_get_group(obj))) { 5ab0: 4b16 ldr r3, [pc, #88] ; (5b0c ) 5ab2: 4798 blx r3 5ab4: 4b16 ldr r3, [pc, #88] ; (5b10 ) 5ab6: 4798 blx r3 5ab8: b128 cbz r0, 5ac6 lv_obj_add_state(obj, state); 5aba: 2106 movs r1, #6 5abc: 4620 mov r0, r4 5abe: 4b11 ldr r3, [pc, #68] ; (5b04 ) 5ac0: 4798 blx r3 lv_res_t res = LV_RES_OK; 5ac2: 2001 movs r0, #1 5ac4: bd10 pop {r4, pc} lv_obj_add_state(obj, LV_STATE_FOCUSED); 5ac6: 2102 movs r1, #2 5ac8: 4620 mov r0, r4 5aca: 4b0e ldr r3, [pc, #56] ; (5b04 ) 5acc: 4798 blx r3 lv_obj_clear_state(obj, LV_STATE_EDITED); 5ace: 2104 movs r1, #4 5ad0: 4620 mov r0, r4 5ad2: 4b0d ldr r3, [pc, #52] ; (5b08 ) 5ad4: 4798 blx r3 lv_res_t res = LV_RES_OK; 5ad6: 2001 movs r0, #1 5ad8: bd10 pop {r4, pc} lv_obj_clear_state(obj, LV_STATE_FOCUSED | LV_STATE_EDITED); 5ada: 2106 movs r1, #6 5adc: 4b0a ldr r3, [pc, #40] ; (5b08 ) 5ade: 4798 blx r3 lv_res_t res = LV_RES_OK; 5ae0: 2001 movs r0, #1 5ae2: bd10 pop {r4, pc} lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 5ae4: 4b0b ldr r3, [pc, #44] ; (5b14 ) 5ae6: 4798 blx r3 lv_res_t res = LV_RES_OK; 5ae8: 2001 movs r0, #1 5aea: bd10 pop {r4, pc} 5aec: 000249e8 .word 0x000249e8 5af0: 00005095 .word 0x00005095 5af4: 00004415 .word 0x00004415 5af8: 00005809 .word 0x00005809 5afc: 000039e1 .word 0x000039e1 5b00: 00002c2d .word 0x00002c2d 5b04: 00004c9d .word 0x00004c9d 5b08: 00004cf9 .word 0x00004cf9 5b0c: 00004de5 .word 0x00004de5 5b10: 0000275b .word 0x0000275b 5b14: 000030cd .word 0x000030cd 00005b18 : * @param area_p pointer to an area * @param obj the first object to start the searching (typically a screen) * @return */ static lv_obj_t * lv_refr_get_top_obj(const lv_area_t * area_p, lv_obj_t * obj) { 5b18: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 5b1c: 4605 mov r5, r0 5b1e: 4688 mov r8, r1 lv_obj_t * found_p = NULL; /*If this object is fully cover the draw area check the children too */ if(_lv_area_is_in(area_p, &obj->coords, 0) && obj->hidden == 0) { 5b20: 2200 movs r2, #0 5b22: 3110 adds r1, #16 5b24: 4b1f ldr r3, [pc, #124] ; (5ba4 ) 5b26: 4798 blx r3 5b28: b350 cbz r0, 5b80 5b2a: f898 3034 ldrb.w r3, [r8, #52] ; 0x34 5b2e: f013 0f10 tst.w r3, #16 5b32: d127 bne.n 5b84 lv_design_res_t design_res = obj->design_cb ? obj->design_cb(obj, area_p, 5b34: f8d8 3020 ldr.w r3, [r8, #32] 5b38: b343 cbz r3, 5b8c 5b3a: 2202 movs r2, #2 5b3c: 4629 mov r1, r5 5b3e: 4640 mov r0, r8 5b40: 4798 blx r3 5b42: 4681 mov r9, r0 LV_DESIGN_COVER_CHK) : LV_DESIGN_RES_NOT_COVER; if(design_res == LV_DESIGN_RES_MASKED) return NULL; 5b44: 2803 cmp r0, #3 5b46: d01f beq.n 5b88 lv_obj_t * i; _LV_LL_READ(obj->child_ll, i) { 5b48: f108 0604 add.w r6, r8, #4 5b4c: 4630 mov r0, r6 5b4e: 4b16 ldr r3, [pc, #88] ; (5ba8 ) 5b50: 4798 blx r3 5b52: 4604 mov r4, r0 5b54: b160 cbz r0, 5b70 5b56: 4f15 ldr r7, [pc, #84] ; (5bac ) found_p = lv_refr_get_top_obj(area_p, i); 5b58: 4621 mov r1, r4 5b5a: 4628 mov r0, r5 5b5c: f7ff ffdc bl 5b18 /*If a children is ok then break*/ if(found_p != NULL) { 5b60: 4603 mov r3, r0 5b62: b950 cbnz r0, 5b7a _LV_LL_READ(obj->child_ll, i) { 5b64: 4621 mov r1, r4 5b66: 4630 mov r0, r6 5b68: 47b8 blx r7 5b6a: 4604 mov r4, r0 5b6c: 2800 cmp r0, #0 5b6e: d1f3 bne.n 5b58 } /*If no better children use this object*/ if(found_p == NULL) { if(design_res == LV_DESIGN_RES_COVER) { found_p = obj; 5b70: f1b9 0f01 cmp.w r9, #1 5b74: bf0c ite eq 5b76: 4643 moveq r3, r8 5b78: 2300 movne r3, #0 } } } return found_p; } 5b7a: 4618 mov r0, r3 5b7c: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} lv_obj_t * found_p = NULL; 5b80: 2300 movs r3, #0 5b82: e7fa b.n 5b7a 5b84: 2300 movs r3, #0 5b86: e7f8 b.n 5b7a if(design_res == LV_DESIGN_RES_MASKED) return NULL; 5b88: 2300 movs r3, #0 5b8a: e7f6 b.n 5b7a _LV_LL_READ(obj->child_ll, i) { 5b8c: f108 0604 add.w r6, r8, #4 5b90: 4630 mov r0, r6 5b92: 4b05 ldr r3, [pc, #20] ; (5ba8 ) 5b94: 4798 blx r3 5b96: 4604 mov r4, r0 lv_design_res_t design_res = obj->design_cb ? obj->design_cb(obj, area_p, 5b98: f04f 0902 mov.w r9, #2 _LV_LL_READ(obj->child_ll, i) { 5b9c: 2800 cmp r0, #0 5b9e: d1da bne.n 5b56 5ba0: 4603 mov r3, r0 5ba2: e7ea b.n 5b7a 5ba4: 0001176d .word 0x0001176d 5ba8: 00011fa9 .word 0x00011fa9 5bac: 00011fbd .word 0x00011fbd 00005bb0 : * @param mask_ori_p pointer to an area, the objects will be drawn only here */ static void lv_refr_obj(lv_obj_t * obj, const lv_area_t * mask_ori_p) { /*Do not refresh hidden objects*/ if(obj->hidden != 0) return; 5bb0: f890 3034 ldrb.w r3, [r0, #52] ; 0x34 5bb4: f013 0f10 tst.w r3, #16 5bb8: d000 beq.n 5bbc 5bba: 4770 bx lr { 5bbc: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 5bc0: b08b sub sp, #44 ; 0x2c 5bc2: 460e mov r6, r1 5bc4: 4605 mov r5, r0 /* Truncate the original mask to the coordinates of the parent * because the parent and its children are visible only here */ lv_area_t obj_mask; lv_area_t obj_ext_mask; lv_area_t obj_area; lv_coord_t ext_size = obj->ext_draw_pad; 5bc6: f9b0 4032 ldrsh.w r4, [r0, #50] ; 0x32 lv_obj_get_coords(obj, &obj_area); 5bca: a904 add r1, sp, #16 5bcc: 4b35 ldr r3, [pc, #212] ; (5ca4 ) 5bce: 4798 blx r3 obj_area.x1 -= ext_size; 5bd0: b2a3 uxth r3, r4 5bd2: f8bd 2010 ldrh.w r2, [sp, #16] 5bd6: 1ad2 subs r2, r2, r3 5bd8: f8ad 2010 strh.w r2, [sp, #16] obj_area.y1 -= ext_size; 5bdc: f8bd 2012 ldrh.w r2, [sp, #18] 5be0: 1ad2 subs r2, r2, r3 5be2: f8ad 2012 strh.w r2, [sp, #18] obj_area.x2 += ext_size; 5be6: f8bd 2014 ldrh.w r2, [sp, #20] 5bea: 441a add r2, r3 5bec: f8ad 2014 strh.w r2, [sp, #20] obj_area.y2 += ext_size; 5bf0: f8bd 2016 ldrh.w r2, [sp, #22] 5bf4: 4413 add r3, r2 5bf6: f8ad 3016 strh.w r3, [sp, #22] union_ok = _lv_area_intersect(&obj_ext_mask, mask_ori_p, &obj_area); 5bfa: aa04 add r2, sp, #16 5bfc: 4631 mov r1, r6 5bfe: a806 add r0, sp, #24 5c00: 4b29 ldr r3, [pc, #164] ; (5ca8 ) 5c02: 4798 blx r3 /*Draw the parent and its children only if they ore on 'mask_parent'*/ if(union_ok != false) { 5c04: b1a8 cbz r0, 5c32 /* Redraw the object */ if(obj->design_cb) obj->design_cb(obj, &obj_ext_mask, LV_DESIGN_DRAW_MAIN); 5c06: 6a2b ldr r3, [r5, #32] 5c08: b11b cbz r3, 5c12 5c0a: 2200 movs r2, #0 5c0c: a906 add r1, sp, #24 5c0e: 4628 mov r0, r5 5c10: 4798 blx r3 #if LV_COLOR_DEPTH == 32 debug_color.ch.alpha = 0xff; #endif #endif /*Create a new 'obj_mask' without 'ext_size' because the children can't be visible there*/ lv_obj_get_coords(obj, &obj_area); 5c12: a904 add r1, sp, #16 5c14: 4628 mov r0, r5 5c16: 4b23 ldr r3, [pc, #140] ; (5ca4 ) 5c18: 4798 blx r3 union_ok = _lv_area_intersect(&obj_mask, mask_ori_p, &obj_area); 5c1a: aa04 add r2, sp, #16 5c1c: 4631 mov r1, r6 5c1e: a808 add r0, sp, #32 5c20: 4b21 ldr r3, [pc, #132] ; (5ca8 ) 5c22: 4798 blx r3 if(union_ok != false) { 5c24: b940 cbnz r0, 5c38 } } } /* If all the children are redrawn make 'post draw' design */ if(obj->design_cb) obj->design_cb(obj, &obj_ext_mask, LV_DESIGN_DRAW_POST); 5c26: 6a2b ldr r3, [r5, #32] 5c28: b11b cbz r3, 5c32 5c2a: 2201 movs r2, #1 5c2c: a906 add r1, sp, #24 5c2e: 4628 mov r0, r5 5c30: 4798 blx r3 } } 5c32: b00b add sp, #44 ; 0x2c 5c34: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} _LV_LL_READ_BACK(obj->child_ll, child_p) { 5c38: f105 0804 add.w r8, r5, #4 5c3c: 4640 mov r0, r8 5c3e: 4b1b ldr r3, [pc, #108] ; (5cac ) 5c40: 4798 blx r3 5c42: 4604 mov r4, r0 5c44: 2800 cmp r0, #0 5c46: d0ee beq.n 5c26 lv_obj_get_coords(child_p, &child_area); 5c48: f8df 9058 ldr.w r9, [pc, #88] ; 5ca4 union_ok = _lv_area_intersect(&mask_child, &obj_mask, &child_area); 5c4c: 4e16 ldr r6, [pc, #88] ; (5ca8 ) _LV_LL_READ_BACK(obj->child_ll, child_p) { 5c4e: 4f18 ldr r7, [pc, #96] ; (5cb0 ) 5c50: e005 b.n 5c5e 5c52: 4621 mov r1, r4 5c54: 4640 mov r0, r8 5c56: 47b8 blx r7 5c58: 4604 mov r4, r0 5c5a: 2800 cmp r0, #0 5c5c: d0e3 beq.n 5c26 lv_obj_get_coords(child_p, &child_area); 5c5e: a902 add r1, sp, #8 5c60: 4620 mov r0, r4 5c62: 47c8 blx r9 child_area.x1 -= ext_size; 5c64: 8e63 ldrh r3, [r4, #50] ; 0x32 5c66: f8bd 2008 ldrh.w r2, [sp, #8] 5c6a: 1ad2 subs r2, r2, r3 5c6c: f8ad 2008 strh.w r2, [sp, #8] child_area.y1 -= ext_size; 5c70: f8bd 200a ldrh.w r2, [sp, #10] 5c74: 1ad2 subs r2, r2, r3 5c76: f8ad 200a strh.w r2, [sp, #10] child_area.x2 += ext_size; 5c7a: f8bd 200c ldrh.w r2, [sp, #12] 5c7e: 441a add r2, r3 5c80: f8ad 200c strh.w r2, [sp, #12] child_area.y2 += ext_size; 5c84: f8bd 200e ldrh.w r2, [sp, #14] 5c88: 4413 add r3, r2 5c8a: f8ad 300e strh.w r3, [sp, #14] union_ok = _lv_area_intersect(&mask_child, &obj_mask, &child_area); 5c8e: aa02 add r2, sp, #8 5c90: a908 add r1, sp, #32 5c92: 4668 mov r0, sp 5c94: 47b0 blx r6 if(union_ok) { 5c96: 2800 cmp r0, #0 5c98: d0db beq.n 5c52 lv_refr_obj(child_p, &mask_child); 5c9a: 4669 mov r1, sp 5c9c: 4620 mov r0, r4 5c9e: f7ff ff87 bl 5bb0 5ca2: e7d6 b.n 5c52 5ca4: 00002e41 .word 0x00002e41 5ca8: 00011519 .word 0x00011519 5cac: 00011fb3 .word 0x00011fb3 5cb0: 00011fe9 .word 0x00011fe9 00005cb4 : { 5cb4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 5cb8: 460f mov r7, r1 if(top_p == NULL) top_p = lv_disp_get_scr_act(disp_refr); 5cba: 4604 mov r4, r0 5cbc: b170 cbz r0, 5cdc lv_refr_obj(top_p, mask_p); 5cbe: 4639 mov r1, r7 5cc0: 4620 mov r0, r4 5cc2: 4b1a ldr r3, [pc, #104] ; (5d2c ) 5cc4: 4798 blx r3 par = lv_obj_get_parent(top_p); 5cc6: 4620 mov r0, r4 5cc8: 4b19 ldr r3, [pc, #100] ; (5d30 ) 5cca: 4798 blx r3 while(par != NULL) { 5ccc: 4681 mov r9, r0 5cce: b160 cbz r0, 5cea lv_obj_t * i = _lv_ll_get_prev(&(par->child_ll), border_p); 5cd0: 4e18 ldr r6, [pc, #96] ; (5d34 ) lv_refr_obj(i, mask_p); 5cd2: f8df 8058 ldr.w r8, [pc, #88] ; 5d2c par = lv_obj_get_parent(par); 5cd6: f8df a058 ldr.w sl, [pc, #88] ; 5d30 5cda: e00e b.n 5cfa if(top_p == NULL) top_p = lv_disp_get_scr_act(disp_refr); 5cdc: 4b16 ldr r3, [pc, #88] ; (5d38 ) 5cde: 6818 ldr r0, [r3, #0] 5ce0: 4b16 ldr r3, [pc, #88] ; (5d3c ) 5ce2: 4798 blx r3 if(top_p == NULL) return; /*Shouldn't happen*/ 5ce4: 4604 mov r4, r0 5ce6: 2800 cmp r0, #0 5ce8: d1e9 bne.n 5cbe 5cea: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} par = lv_obj_get_parent(par); 5cee: 4648 mov r0, r9 5cf0: 47d0 blx sl 5cf2: 464c mov r4, r9 while(par != NULL) { 5cf4: 4681 mov r9, r0 5cf6: 2800 cmp r0, #0 5cf8: d0f7 beq.n 5cea lv_obj_t * i = _lv_ll_get_prev(&(par->child_ll), border_p); 5cfa: f109 0504 add.w r5, r9, #4 5cfe: 4621 mov r1, r4 5d00: 4628 mov r0, r5 5d02: 47b0 blx r6 while(i != NULL) { 5d04: 4604 mov r4, r0 5d06: b140 cbz r0, 5d1a lv_refr_obj(i, mask_p); 5d08: 4639 mov r1, r7 5d0a: 4620 mov r0, r4 5d0c: 47c0 blx r8 i = _lv_ll_get_prev(&(par->child_ll), i); 5d0e: 4621 mov r1, r4 5d10: 4628 mov r0, r5 5d12: 47b0 blx r6 while(i != NULL) { 5d14: 4604 mov r4, r0 5d16: 2800 cmp r0, #0 5d18: d1f6 bne.n 5d08 if(par->design_cb) par->design_cb(par, mask_p, LV_DESIGN_DRAW_POST); 5d1a: f8d9 3020 ldr.w r3, [r9, #32] 5d1e: 2b00 cmp r3, #0 5d20: d0e5 beq.n 5cee 5d22: 2201 movs r2, #1 5d24: 4639 mov r1, r7 5d26: 4648 mov r0, r9 5d28: 4798 blx r3 5d2a: e7e0 b.n 5cee 5d2c: 00005bb1 .word 0x00005bb1 5d30: 00002c7d .word 0x00002c7d 5d34: 00011fe9 .word 0x00011fe9 5d38: 20002688 .word 0x20002688 5d3c: 0000234d .word 0x0000234d 00005d40 : /** * Flush the content of the VDB */ static void lv_refr_vdb_flush(void) { 5d40: b538 push {r3, r4, r5, lr} lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 5d42: 4d1a ldr r5, [pc, #104] ; (5dac ) 5d44: 6828 ldr r0, [r5, #0] 5d46: 4b1a ldr r3, [pc, #104] ; (5db0 ) 5d48: 4798 blx r3 5d4a: 4604 mov r4, r0 /*In double buffered mode wait until the other buffer is flushed before flushing the current * one*/ if(lv_disp_is_double_buf(disp_refr)) { 5d4c: 6828 ldr r0, [r5, #0] 5d4e: 4b19 ldr r3, [pc, #100] ; (5db4 ) 5d50: 4798 blx r3 5d52: b978 cbnz r0, 5d74 while(vdb->flushing) { if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); } } vdb->flushing = 1; 5d54: 2301 movs r3, #1 5d56: 61a3 str r3, [r4, #24] if(disp_refr->driver.buffer->last_area && disp_refr->driver.buffer->last_part) vdb->flushing_last = 1; 5d58: 4b14 ldr r3, [pc, #80] ; (5dac ) 5d5a: 6818 ldr r0, [r3, #0] 5d5c: 6843 ldr r3, [r0, #4] 5d5e: 6a1a ldr r2, [r3, #32] 5d60: f012 0f01 tst.w r2, #1 5d64: d010 beq.n 5d88 5d66: 6a1b ldr r3, [r3, #32] 5d68: f013 0f02 tst.w r3, #2 5d6c: d00c beq.n 5d88 5d6e: 2301 movs r3, #1 5d70: 61e3 str r3, [r4, #28] 5d72: e00b b.n 5d8c if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 5d74: 4d0d ldr r5, [pc, #52] ; (5dac ) 5d76: 6828 ldr r0, [r5, #0] while(vdb->flushing) { 5d78: 69a3 ldr r3, [r4, #24] 5d7a: 2b00 cmp r3, #0 5d7c: d0ea beq.n 5d54 if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 5d7e: 69c3 ldr r3, [r0, #28] 5d80: 2b00 cmp r3, #0 5d82: d0f9 beq.n 5d78 5d84: 4798 blx r3 5d86: e7f6 b.n 5d76 else vdb->flushing_last = 0; 5d88: 2300 movs r3, #0 5d8a: 61e3 str r3, [r4, #28] /*Flush the rendered content to the display*/ lv_disp_t * disp = _lv_refr_get_disp_refreshing(); if(disp->driver.flush_cb) disp->driver.flush_cb(&disp->driver, &vdb->area, vdb->buf_act); 5d8c: 68c3 ldr r3, [r0, #12] 5d8e: b11b cbz r3, 5d98 5d90: 68a2 ldr r2, [r4, #8] 5d92: f104 0110 add.w r1, r4, #16 5d96: 4798 blx r3 if(vdb->buf1 && vdb->buf2) { 5d98: 6823 ldr r3, [r4, #0] 5d9a: b133 cbz r3, 5daa 5d9c: 6862 ldr r2, [r4, #4] 5d9e: b122 cbz r2, 5daa if(vdb->buf_act == vdb->buf1) 5da0: 68a1 ldr r1, [r4, #8] vdb->buf_act = vdb->buf2; 5da2: 428b cmp r3, r1 5da4: bf08 it eq 5da6: 4613 moveq r3, r2 5da8: 60a3 str r3, [r4, #8] 5daa: bd38 pop {r3, r4, r5, pc} 5dac: 20002688 .word 0x20002688 5db0: 00010fdd .word 0x00010fdd 5db4: 00010fe1 .word 0x00010fe1 00005db8 : { 5db8: b570 push {r4, r5, r6, lr} 5dba: b082 sub sp, #8 5dbc: 4606 mov r6, r0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 5dbe: 4d1a ldr r5, [pc, #104] ; (5e28 ) 5dc0: 6828 ldr r0, [r5, #0] 5dc2: 4b1a ldr r3, [pc, #104] ; (5e2c ) 5dc4: 4798 blx r3 5dc6: 4604 mov r4, r0 if(lv_disp_is_double_buf(disp_refr) == false) { 5dc8: 6828 ldr r0, [r5, #0] 5dca: 4b19 ldr r3, [pc, #100] ; (5e30 ) 5dcc: 4798 blx r3 5dce: b938 cbnz r0, 5de0 if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 5dd0: 6828 ldr r0, [r5, #0] while(vdb->flushing) { 5dd2: 69a3 ldr r3, [r4, #24] 5dd4: b123 cbz r3, 5de0 if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 5dd6: 69c3 ldr r3, [r0, #28] 5dd8: 2b00 cmp r3, #0 5dda: d0fa beq.n 5dd2 5ddc: 4798 blx r3 5dde: e7f7 b.n 5dd0 _lv_area_intersect(&start_mask, area_p, &vdb->area); 5de0: f104 0210 add.w r2, r4, #16 5de4: 4631 mov r1, r6 5de6: 4668 mov r0, sp 5de8: 4b12 ldr r3, [pc, #72] ; (5e34 ) 5dea: 4798 blx r3 top_p = lv_refr_get_top_obj(&start_mask, lv_disp_get_scr_act(disp_refr)); 5dec: 4c0e ldr r4, [pc, #56] ; (5e28 ) 5dee: 6820 ldr r0, [r4, #0] 5df0: 4b11 ldr r3, [pc, #68] ; (5e38 ) 5df2: 4798 blx r3 5df4: 4601 mov r1, r0 5df6: 4668 mov r0, sp 5df8: 4b10 ldr r3, [pc, #64] ; (5e3c ) 5dfa: 4798 blx r3 lv_refr_obj_and_children(top_p, &start_mask); 5dfc: 4669 mov r1, sp 5dfe: 4d10 ldr r5, [pc, #64] ; (5e40 ) 5e00: 47a8 blx r5 lv_refr_obj_and_children(lv_disp_get_layer_top(disp_refr), &start_mask); 5e02: 6820 ldr r0, [r4, #0] 5e04: 4b0f ldr r3, [pc, #60] ; (5e44 ) 5e06: 4798 blx r3 5e08: 4669 mov r1, sp 5e0a: 47a8 blx r5 lv_refr_obj_and_children(lv_disp_get_layer_sys(disp_refr), &start_mask); 5e0c: 6820 ldr r0, [r4, #0] 5e0e: 4b0e ldr r3, [pc, #56] ; (5e48 ) 5e10: 4798 blx r3 5e12: 4669 mov r1, sp 5e14: 47a8 blx r5 if(lv_disp_is_true_double_buf(disp_refr) == false) { 5e16: 6820 ldr r0, [r4, #0] 5e18: 4b0c ldr r3, [pc, #48] ; (5e4c ) 5e1a: 4798 blx r3 5e1c: b108 cbz r0, 5e22 } 5e1e: b002 add sp, #8 5e20: bd70 pop {r4, r5, r6, pc} lv_refr_vdb_flush(); 5e22: 4b0b ldr r3, [pc, #44] ; (5e50 ) 5e24: 4798 blx r3 } 5e26: e7fa b.n 5e1e 5e28: 20002688 .word 0x20002688 5e2c: 00010fdd .word 0x00010fdd 5e30: 00010fe1 .word 0x00010fe1 5e34: 00011519 .word 0x00011519 5e38: 0000234d .word 0x0000234d 5e3c: 00005b19 .word 0x00005b19 5e40: 00005cb5 .word 0x00005cb5 5e44: 0000238d .word 0x0000238d 5e48: 000023cd .word 0x000023cd 5e4c: 00010ff5 .word 0x00010ff5 5e50: 00005d41 .word 0x00005d41 00005e54 <_lv_refr_init>: { 5e54: 4770 bx lr ... 00005e58 <_lv_inv_area>: { 5e58: b5f0 push {r4, r5, r6, r7, lr} 5e5a: b085 sub sp, #20 5e5c: 460c mov r4, r1 if(!disp) disp = lv_disp_get_default(); 5e5e: 4605 mov r5, r0 5e60: 2800 cmp r0, #0 5e62: d054 beq.n 5f0e <_lv_inv_area+0xb6> if(area_p == NULL) { 5e64: 2c00 cmp r4, #0 5e66: d057 beq.n 5f18 <_lv_inv_area+0xc0> scr_area.x1 = 0; 5e68: 2300 movs r3, #0 5e6a: f8ad 3008 strh.w r3, [sp, #8] scr_area.y1 = 0; 5e6e: f8ad 300a strh.w r3, [sp, #10] scr_area.x2 = lv_disp_get_hor_res(disp) - 1; 5e72: 4628 mov r0, r5 5e74: 4b36 ldr r3, [pc, #216] ; (5f50 <_lv_inv_area+0xf8>) 5e76: 4798 blx r3 5e78: 3801 subs r0, #1 5e7a: f8ad 000c strh.w r0, [sp, #12] scr_area.y2 = lv_disp_get_ver_res(disp) - 1; 5e7e: 4628 mov r0, r5 5e80: 4b34 ldr r3, [pc, #208] ; (5f54 <_lv_inv_area+0xfc>) 5e82: 4798 blx r3 5e84: 3801 subs r0, #1 5e86: f8ad 000e strh.w r0, [sp, #14] suc = _lv_area_intersect(&com_area, area_p, &scr_area); 5e8a: aa02 add r2, sp, #8 5e8c: 4621 mov r1, r4 5e8e: 4668 mov r0, sp 5e90: 4b31 ldr r3, [pc, #196] ; (5f58 <_lv_inv_area+0x100>) 5e92: 4798 blx r3 if(suc != false) { 5e94: 2800 cmp r0, #0 5e96: d045 beq.n 5f24 <_lv_inv_area+0xcc> if(disp->driver.rounder_cb) disp->driver.rounder_cb(&disp->driver, &com_area); 5e98: 692b ldr r3, [r5, #16] 5e9a: b113 cbz r3, 5ea2 <_lv_inv_area+0x4a> 5e9c: 4669 mov r1, sp 5e9e: 4628 mov r0, r5 5ea0: 4798 blx r3 for(i = 0; i < disp->inv_p; i++) { 5ea2: f8b5 3168 ldrh.w r3, [r5, #360] ; 0x168 5ea6: f3c3 0309 ubfx r3, r3, #0, #10 5eaa: b19b cbz r3, 5ed4 <_lv_inv_area+0x7c> 5eac: 2100 movs r1, #0 5eae: 460c mov r4, r1 if(_lv_area_is_in(&com_area, &disp->inv_areas[i], 0) != false) return; 5eb0: 460f mov r7, r1 5eb2: 4e2a ldr r6, [pc, #168] ; (5f5c <_lv_inv_area+0x104>) 5eb4: 3109 adds r1, #9 5eb6: 463a mov r2, r7 5eb8: eb05 01c1 add.w r1, r5, r1, lsl #3 5ebc: 4668 mov r0, sp 5ebe: 47b0 blx r6 5ec0: bb80 cbnz r0, 5f24 <_lv_inv_area+0xcc> for(i = 0; i < disp->inv_p; i++) { 5ec2: 3401 adds r4, #1 5ec4: b2a4 uxth r4, r4 5ec6: 4621 mov r1, r4 5ec8: f8b5 3168 ldrh.w r3, [r5, #360] ; 0x168 5ecc: f3c3 0309 ubfx r3, r3, #0, #10 5ed0: 429c cmp r4, r3 5ed2: dbef blt.n 5eb4 <_lv_inv_area+0x5c> if(disp->inv_p < LV_INV_BUF_SIZE) { 5ed4: 2b1f cmp r3, #31 5ed6: dc27 bgt.n 5f28 <_lv_inv_area+0xd0> lv_area_copy(&disp->inv_areas[disp->inv_p], &com_area); 5ed8: 3309 adds r3, #9 5eda: eb05 03c3 add.w r3, r5, r3, lsl #3 5ede: f10d 32ff add.w r2, sp, #4294967295 5ee2: f103 0008 add.w r0, r3, #8 *d8 = *s8; 5ee6: f812 1f01 ldrb.w r1, [r2, #1]! 5eea: f803 1b01 strb.w r1, [r3], #1 while(len) { 5eee: 4283 cmp r3, r0 5ef0: d1f9 bne.n 5ee6 <_lv_inv_area+0x8e> disp->inv_p++; 5ef2: f8b5 3168 ldrh.w r3, [r5, #360] ; 0x168 5ef6: f3c3 0209 ubfx r2, r3, #0, #10 5efa: 3201 adds r2, #1 5efc: f362 0309 bfi r3, r2, #0, #10 5f00: f8a5 3168 strh.w r3, [r5, #360] ; 0x168 lv_task_set_prio(disp->refr_task, LV_REFR_TASK_PRIO); 5f04: 2103 movs r1, #3 5f06: 6ae8 ldr r0, [r5, #44] ; 0x2c 5f08: 4b15 ldr r3, [pc, #84] ; (5f60 <_lv_inv_area+0x108>) 5f0a: 4798 blx r3 5f0c: e00a b.n 5f24 <_lv_inv_area+0xcc> if(!disp) disp = lv_disp_get_default(); 5f0e: 4b15 ldr r3, [pc, #84] ; (5f64 <_lv_inv_area+0x10c>) 5f10: 4798 blx r3 if(!disp) return; 5f12: 4605 mov r5, r0 5f14: b130 cbz r0, 5f24 <_lv_inv_area+0xcc> 5f16: e7a5 b.n 5e64 <_lv_inv_area+0xc> disp->inv_p = 0; 5f18: f8b5 3168 ldrh.w r3, [r5, #360] ; 0x168 5f1c: f36f 0309 bfc r3, #0, #10 5f20: f8a5 3168 strh.w r3, [r5, #360] ; 0x168 } 5f24: b005 add sp, #20 5f26: bdf0 pop {r4, r5, r6, r7, pc} disp->inv_p = 0; 5f28: f8b5 3168 ldrh.w r3, [r5, #360] ; 0x168 5f2c: f36f 0309 bfc r3, #0, #10 5f30: f8a5 3168 strh.w r3, [r5, #360] ; 0x168 5f34: f10d 0207 add.w r2, sp, #7 5f38: f105 0050 add.w r0, r5, #80 ; 0x50 uint8_t * d8 = (uint8_t *)dst; 5f3c: f105 0348 add.w r3, r5, #72 ; 0x48 *d8 = *s8; 5f40: f812 1f01 ldrb.w r1, [r2, #1]! 5f44: f803 1b01 strb.w r1, [r3], #1 while(len) { 5f48: 4283 cmp r3, r0 5f4a: d1f9 bne.n 5f40 <_lv_inv_area+0xe8> 5f4c: e7d1 b.n 5ef2 <_lv_inv_area+0x9a> 5f4e: bf00 nop 5f50: 00010eed .word 0x00010eed 5f54: 00010f15 .word 0x00010f15 5f58: 00011519 .word 0x00011519 5f5c: 0001176d .word 0x0001176d 5f60: 00013959 .word 0x00013959 5f64: 00010ee1 .word 0x00010ee1 00005f68 <_lv_refr_get_disp_refreshing>: } 5f68: 4b01 ldr r3, [pc, #4] ; (5f70 <_lv_refr_get_disp_refreshing+0x8>) 5f6a: 6818 ldr r0, [r3, #0] 5f6c: 4770 bx lr 5f6e: bf00 nop 5f70: 20002688 .word 0x20002688 00005f74 <_lv_disp_refr_task>: { 5f74: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 5f78: b08d sub sp, #52 ; 0x34 5f7a: 4605 mov r5, r0 uint32_t start = lv_tick_get(); 5f7c: 4bb7 ldr r3, [pc, #732] ; (625c <_lv_disp_refr_task+0x2e8>) 5f7e: 4798 blx r3 5f80: 9009 str r0, [sp, #36] ; 0x24 disp_refr = task->user_data; 5f82: 4cb7 ldr r4, [pc, #732] ; (6260 <_lv_disp_refr_task+0x2ec>) 5f84: 68eb ldr r3, [r5, #12] 5f86: 6023 str r3, [r4, #0] lv_task_set_prio(task, LV_TASK_PRIO_OFF); 5f88: 2100 movs r1, #0 5f8a: 4628 mov r0, r5 5f8c: 4bb5 ldr r3, [pc, #724] ; (6264 <_lv_disp_refr_task+0x2f0>) 5f8e: 4798 blx r3 if(disp_refr->act_scr == NULL) { 5f90: 6820 ldr r0, [r4, #0] 5f92: 6bc3 ldr r3, [r0, #60] ; 0x3c 5f94: b17b cbz r3, 5fb6 <_lv_disp_refr_task+0x42> for(join_in = 0; join_in < disp_refr->inv_p; join_in++) { 5f96: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 5f9a: f3c3 0309 ubfx r3, r3, #0, #10 5f9e: 2b00 cmp r3, #0 5fa0: f000 8278 beq.w 6494 <_lv_disp_refr_task+0x520> 5fa4: f04f 0848 mov.w r8, #72 ; 0x48 5fa8: 2700 movs r7, #0 for(join_from = 0; join_from < disp_refr->inv_p; join_from++) { 5faa: 4dad ldr r5, [pc, #692] ; (6260 <_lv_disp_refr_task+0x2ec>) if(_lv_area_is_on(&disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]) == false) { 5fac: f8df a2e4 ldr.w sl, [pc, #740] ; 6294 <_lv_disp_refr_task+0x320> if(lv_area_get_size(&joined_area) < (lv_area_get_size(&disp_refr->inv_areas[join_in]) + 5fb0: f8df b2c8 ldr.w fp, [pc, #712] ; 627c <_lv_disp_refr_task+0x308> 5fb4: e04d b.n 6052 <_lv_disp_refr_task+0xde> disp_refr->inv_p = 0; 5fb6: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 5fba: f36f 0309 bfc r3, #0, #10 5fbe: f8a0 3168 strh.w r3, [r0, #360] ; 0x168 return; 5fc2: e262 b.n 648a <_lv_disp_refr_task+0x516> disp_refr->inv_area_joined[join_from] = 1; 5fc4: 4426 add r6, r4 5fc6: 2301 movs r3, #1 5fc8: f886 3148 strb.w r3, [r6, #328] ; 0x148 for(join_from = 0; join_from < disp_refr->inv_p; join_from++) { 5fcc: 3401 adds r4, #1 5fce: 6828 ldr r0, [r5, #0] 5fd0: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 5fd4: f3c3 0309 ubfx r3, r3, #0, #10 5fd8: 429c cmp r4, r3 5fda: d230 bcs.n 603e <_lv_disp_refr_task+0xca> if(disp_refr->inv_area_joined[join_from] != 0 || join_in == join_from) { 5fdc: 1903 adds r3, r0, r4 5fde: f893 3148 ldrb.w r3, [r3, #328] ; 0x148 5fe2: 2b00 cmp r3, #0 5fe4: d1f2 bne.n 5fcc <_lv_disp_refr_task+0x58> 5fe6: 42a7 cmp r7, r4 5fe8: d0f0 beq.n 5fcc <_lv_disp_refr_task+0x58> 5fea: f104 0609 add.w r6, r4, #9 5fee: 00f6 lsls r6, r6, #3 if(_lv_area_is_on(&disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]) == false) { 5ff0: 1981 adds r1, r0, r6 5ff2: 4440 add r0, r8 5ff4: 47d0 blx sl 5ff6: 2800 cmp r0, #0 5ff8: d0e8 beq.n 5fcc <_lv_disp_refr_task+0x58> _lv_area_join(&joined_area, &disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]); 5ffa: 6829 ldr r1, [r5, #0] 5ffc: 198a adds r2, r1, r6 5ffe: 4441 add r1, r8 6000: a80a add r0, sp, #40 ; 0x28 6002: 4b99 ldr r3, [pc, #612] ; (6268 <_lv_disp_refr_task+0x2f4>) 6004: 4798 blx r3 if(lv_area_get_size(&joined_area) < (lv_area_get_size(&disp_refr->inv_areas[join_in]) + 6006: a80a add r0, sp, #40 ; 0x28 6008: 47d8 blx fp 600a: 9003 str r0, [sp, #12] 600c: 6828 ldr r0, [r5, #0] 600e: 4440 add r0, r8 6010: 47d8 blx fp 6012: 4681 mov r9, r0 lv_area_get_size(&disp_refr->inv_areas[join_from]))) { 6014: 6828 ldr r0, [r5, #0] 6016: 4430 add r0, r6 6018: 47d8 blx fp if(lv_area_get_size(&joined_area) < (lv_area_get_size(&disp_refr->inv_areas[join_in]) + 601a: 4448 add r0, r9 601c: 9b03 ldr r3, [sp, #12] 601e: 4283 cmp r3, r0 6020: d2d4 bcs.n 5fcc <_lv_disp_refr_task+0x58> lv_area_copy(&disp_refr->inv_areas[join_in], &joined_area); 6022: 682e ldr r6, [r5, #0] 6024: eb06 0308 add.w r3, r6, r8 6028: f10d 0227 add.w r2, sp, #39 ; 0x27 602c: f103 0008 add.w r0, r3, #8 *d8 = *s8; 6030: f812 1f01 ldrb.w r1, [r2, #1]! 6034: f803 1b01 strb.w r1, [r3], #1 while(len) { 6038: 4283 cmp r3, r0 603a: d1f9 bne.n 6030 <_lv_disp_refr_task+0xbc> 603c: e7c2 b.n 5fc4 <_lv_disp_refr_task+0x50> for(join_in = 0; join_in < disp_refr->inv_p; join_in++) { 603e: 3701 adds r7, #1 6040: 6828 ldr r0, [r5, #0] 6042: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 6046: f3c3 0309 ubfx r3, r3, #0, #10 604a: f108 0808 add.w r8, r8, #8 604e: 429f cmp r7, r3 6050: d20e bcs.n 6070 <_lv_disp_refr_task+0xfc> if(disp_refr->inv_area_joined[join_in] != 0) continue; 6052: 4438 add r0, r7 6054: f890 3148 ldrb.w r3, [r0, #328] ; 0x148 6058: 2b00 cmp r3, #0 605a: d1f0 bne.n 603e <_lv_disp_refr_task+0xca> for(join_from = 0; join_from < disp_refr->inv_p; join_from++) { 605c: 6828 ldr r0, [r5, #0] 605e: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 6062: f3c3 0309 ubfx r3, r3, #0, #10 6066: 2b00 cmp r3, #0 6068: f000 81fa beq.w 6460 <_lv_disp_refr_task+0x4ec> 606c: 2400 movs r4, #0 606e: e7b5 b.n 5fdc <_lv_disp_refr_task+0x68> px_num = 0; 6070: 2100 movs r1, #0 6072: 4a7b ldr r2, [pc, #492] ; (6260 <_lv_disp_refr_task+0x2ec>) 6074: 6051 str r1, [r2, #4] if(disp_refr->inv_p == 0) return; 6076: 2b00 cmp r3, #0 6078: f000 81fa beq.w 6470 <_lv_disp_refr_task+0x4fc> for(i = disp_refr->inv_p - 1; i >= 0; i--) { 607c: 1e5a subs r2, r3, #1 607e: 4611 mov r1, r2 6080: 9207 str r2, [sp, #28] 6082: d432 bmi.n 60ea <_lv_disp_refr_task+0x176> if(disp_refr->inv_area_joined[i] == 0) { 6084: 1882 adds r2, r0, r2 6086: f892 2148 ldrb.w r2, [r2, #328] ; 0x148 608a: b17a cbz r2, 60ac <_lv_disp_refr_task+0x138> 608c: f203 1347 addw r3, r3, #327 ; 0x147 6090: 4403 add r3, r0 6092: 460a mov r2, r1 for(i = disp_refr->inv_p - 1; i >= 0; i--) { 6094: 3a01 subs r2, #1 6096: f1b2 3fff cmp.w r2, #4294967295 609a: d005 beq.n 60a8 <_lv_disp_refr_task+0x134> if(disp_refr->inv_area_joined[i] == 0) { 609c: f813 1d01 ldrb.w r1, [r3, #-1]! 60a0: 2900 cmp r1, #0 60a2: d1f7 bne.n 6094 <_lv_disp_refr_task+0x120> 60a4: 9207 str r2, [sp, #28] 60a6: e001 b.n 60ac <_lv_disp_refr_task+0x138> int32_t last_i = 0; 60a8: 2300 movs r3, #0 60aa: 9307 str r3, [sp, #28] disp_refr->driver.buffer->last_area = 0; 60ac: 6842 ldr r2, [r0, #4] 60ae: f892 3020 ldrb.w r3, [r2, #32] 60b2: f36f 0300 bfc r3, #0, #1 60b6: f882 3020 strb.w r3, [r2, #32] disp_refr->driver.buffer->last_part = 0; 60ba: 6842 ldr r2, [r0, #4] 60bc: f892 3020 ldrb.w r3, [r2, #32] 60c0: f36f 0341 bfc r3, #1, #1 60c4: f882 3020 strb.w r3, [r2, #32] for(i = 0; i < disp_refr->inv_p; i++) { 60c8: 4b65 ldr r3, [pc, #404] ; (6260 <_lv_disp_refr_task+0x2ec>) 60ca: 681c ldr r4, [r3, #0] 60cc: f8b4 3168 ldrh.w r3, [r4, #360] ; 0x168 60d0: f3c3 0309 ubfx r3, r3, #0, #10 60d4: 2b00 cmp r3, #0 60d6: f000 81cb beq.w 6470 <_lv_disp_refr_task+0x4fc> 60da: 2348 movs r3, #72 ; 0x48 60dc: 9306 str r3, [sp, #24] 60de: f04f 0a00 mov.w sl, #0 if(disp_refr->driver.monitor_cb) px_num += lv_area_get_size(&disp_refr->inv_areas[i]); 60e2: f8df b17c ldr.w fp, [pc, #380] ; 6260 <_lv_disp_refr_task+0x2ec> 60e6: 4627 mov r7, r4 60e8: e045 b.n 6176 <_lv_disp_refr_task+0x202> int32_t last_i = 0; 60ea: 2300 movs r3, #0 60ec: 9307 str r3, [sp, #28] 60ee: e7dd b.n 60ac <_lv_disp_refr_task+0x138> if(i == last_i) disp_refr->driver.buffer->last_area = 1; 60f0: 687a ldr r2, [r7, #4] 60f2: f892 3020 ldrb.w r3, [r2, #32] 60f6: f043 0301 orr.w r3, r3, #1 60fa: f882 3020 strb.w r3, [r2, #32] 60fe: e043 b.n 6188 <_lv_disp_refr_task+0x214> lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 6100: f8db 0000 ldr.w r0, [fp] 6104: 4b59 ldr r3, [pc, #356] ; (626c <_lv_disp_refr_task+0x2f8>) 6106: 4798 blx r3 6108: 4604 mov r4, r0 vdb->area.x1 = 0; 610a: 2500 movs r5, #0 610c: 8205 strh r5, [r0, #16] vdb->area.x2 = lv_disp_get_hor_res(disp_refr) - 1; 610e: f8db 0000 ldr.w r0, [fp] 6112: 4b57 ldr r3, [pc, #348] ; (6270 <_lv_disp_refr_task+0x2fc>) 6114: 4798 blx r3 6116: 3801 subs r0, #1 6118: 82a0 strh r0, [r4, #20] vdb->area.y1 = 0; 611a: 8265 strh r5, [r4, #18] vdb->area.y2 = lv_disp_get_ver_res(disp_refr) - 1; 611c: f8db 0000 ldr.w r0, [fp] 6120: 4b54 ldr r3, [pc, #336] ; (6274 <_lv_disp_refr_task+0x300>) 6122: 4798 blx r3 6124: 3801 subs r0, #1 6126: 82e0 strh r0, [r4, #22] disp_refr->driver.buffer->last_part = 1; 6128: f8db 3000 ldr.w r3, [fp] 612c: 685a ldr r2, [r3, #4] 612e: f892 3020 ldrb.w r3, [r2, #32] 6132: f043 0302 orr.w r3, r3, #2 6136: f882 3020 strb.w r3, [r2, #32] lv_refr_area_part(area_p); 613a: 9803 ldr r0, [sp, #12] 613c: 4b4e ldr r3, [pc, #312] ; (6278 <_lv_disp_refr_task+0x304>) 613e: 4798 blx r3 if(disp_refr->driver.monitor_cb) px_num += lv_area_get_size(&disp_refr->inv_areas[i]); 6140: f8db 0000 ldr.w r0, [fp] 6144: 6983 ldr r3, [r0, #24] 6146: b143 cbz r3, 615a <_lv_disp_refr_task+0x1e6> 6148: 9b06 ldr r3, [sp, #24] 614a: 4418 add r0, r3 614c: 4b4b ldr r3, [pc, #300] ; (627c <_lv_disp_refr_task+0x308>) 614e: 4798 blx r3 6150: f8db 3004 ldr.w r3, [fp, #4] 6154: 4403 add r3, r0 6156: f8cb 3004 str.w r3, [fp, #4] for(i = 0; i < disp_refr->inv_p; i++) { 615a: f10a 0a01 add.w sl, sl, #1 615e: f8db 7000 ldr.w r7, [fp] 6162: 9b06 ldr r3, [sp, #24] 6164: 3308 adds r3, #8 6166: 9306 str r3, [sp, #24] 6168: f8b7 3168 ldrh.w r3, [r7, #360] ; 0x168 616c: f3c3 0309 ubfx r3, r3, #0, #10 6170: 459a cmp sl, r3 6172: f280 817d bge.w 6470 <_lv_disp_refr_task+0x4fc> if(disp_refr->inv_area_joined[i] == 0) { 6176: eb07 030a add.w r3, r7, sl 617a: f893 3148 ldrb.w r3, [r3, #328] ; 0x148 617e: 2b00 cmp r3, #0 6180: d1eb bne.n 615a <_lv_disp_refr_task+0x1e6> if(i == last_i) disp_refr->driver.buffer->last_area = 1; 6182: 9b07 ldr r3, [sp, #28] 6184: 4553 cmp r3, sl 6186: d0b3 beq.n 60f0 <_lv_disp_refr_task+0x17c> disp_refr->driver.buffer->last_part = 0; 6188: 687a ldr r2, [r7, #4] 618a: f892 3020 ldrb.w r3, [r2, #32] 618e: f36f 0341 bfc r3, #1, #1 6192: f882 3020 strb.w r3, [r2, #32] lv_refr_area(&disp_refr->inv_areas[i]); 6196: 9b06 ldr r3, [sp, #24] 6198: 18fb adds r3, r7, r3 619a: 9303 str r3, [sp, #12] if(lv_disp_is_true_double_buf(disp_refr)) { 619c: 4638 mov r0, r7 619e: 4b38 ldr r3, [pc, #224] ; (6280 <_lv_disp_refr_task+0x30c>) 61a0: 4798 blx r3 61a2: 2800 cmp r0, #0 61a4: d1ac bne.n 6100 <_lv_disp_refr_task+0x18c> lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 61a6: f8db 0000 ldr.w r0, [fp] 61aa: 4b30 ldr r3, [pc, #192] ; (626c <_lv_disp_refr_task+0x2f8>) 61ac: 4798 blx r3 61ae: 4606 mov r6, r0 61b0: eb07 07ca add.w r7, r7, sl, lsl #3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 61b4: f8b7 404c ldrh.w r4, [r7, #76] ; 0x4c 61b8: 3401 adds r4, #1 61ba: f8b7 3048 ldrh.w r3, [r7, #72] ; 0x48 61be: 1ae4 subs r4, r4, r3 61c0: b224 sxth r4, r4 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 61c2: f9b7 504e ldrsh.w r5, [r7, #78] ; 0x4e 61c6: f105 0801 add.w r8, r5, #1 61ca: f8b7 304a ldrh.w r3, [r7, #74] ; 0x4a 61ce: eba8 0803 sub.w r8, r8, r3 61d2: fa0f f888 sxth.w r8, r8 area_p->y2 >= lv_disp_get_ver_res(disp_refr) ? lv_disp_get_ver_res(disp_refr) - 1 : area_p->y2; 61d6: f8db 0000 ldr.w r0, [fp] 61da: 4b26 ldr r3, [pc, #152] ; (6274 <_lv_disp_refr_task+0x300>) 61dc: 4798 blx r3 lv_coord_t y2 = 61de: 4285 cmp r5, r0 61e0: da34 bge.n 624c <_lv_disp_refr_task+0x2d8> 61e2: f9b7 904e ldrsh.w r9, [r7, #78] ; 0x4e int32_t max_row = (uint32_t)vdb->size / w; 61e6: 68f3 ldr r3, [r6, #12] 61e8: fbb3 f3f4 udiv r3, r3, r4 61ec: 4598 cmp r8, r3 61ee: bfa8 it ge 61f0: 4698 movge r8, r3 if(disp_refr->driver.rounder_cb) { 61f2: f8db 3000 ldr.w r3, [fp] 61f6: 691b ldr r3, [r3, #16] 61f8: 2b00 cmp r3, #0 61fa: d052 beq.n 62a2 <_lv_disp_refr_task+0x32e> tmp.x1 = 0; 61fc: 2300 movs r3, #0 61fe: f8ad 3028 strh.w r3, [sp, #40] ; 0x28 tmp.x2 = 0; 6202: f8ad 302c strh.w r3, [sp, #44] ; 0x2c tmp.y1 = 0; 6206: f8ad 302a strh.w r3, [sp, #42] ; 0x2a lv_coord_t h_tmp = max_row; 620a: fa0f f588 sxth.w r5, r8 620e: 1e6c subs r4, r5, #1 6210: b224 sxth r4, r4 tmp.y2 = h_tmp - 1; 6212: f8ad 402e strh.w r4, [sp, #46] ; 0x2e disp_refr->driver.rounder_cb(&disp_refr->driver, &tmp); 6216: f8db 0000 ldr.w r0, [fp] 621a: 6903 ldr r3, [r0, #16] 621c: a90a add r1, sp, #40 ; 0x28 621e: 4798 blx r3 6220: f9bd 102e ldrsh.w r1, [sp, #46] ; 0x2e 6224: 1c4b adds r3, r1, #1 6226: f8bd 202a ldrh.w r2, [sp, #42] ; 0x2a 622a: 1a9b subs r3, r3, r2 if(lv_area_get_height(&tmp) <= max_row) break; 622c: b21b sxth r3, r3 622e: 4598 cmp r8, r3 6230: da32 bge.n 6298 <_lv_disp_refr_task+0x324> h_tmp--; 6232: 4625 mov r5, r4 } while(h_tmp > 0); 6234: 2c00 cmp r4, #0 6236: dcea bgt.n 620e <_lv_disp_refr_task+0x29a> LV_LOG_WARN("Can't set VDB height using the round function. (Wrong round_cb or to " 6238: 4b12 ldr r3, [pc, #72] ; (6284 <_lv_disp_refr_task+0x310>) 623a: 9300 str r3, [sp, #0] 623c: 4b12 ldr r3, [pc, #72] ; (6288 <_lv_disp_refr_task+0x314>) 623e: f240 129f movw r2, #415 ; 0x19f 6242: 4912 ldr r1, [pc, #72] ; (628c <_lv_disp_refr_task+0x318>) 6244: 2002 movs r0, #2 6246: 4c12 ldr r4, [pc, #72] ; (6290 <_lv_disp_refr_task+0x31c>) 6248: 47a0 blx r4 624a: e779 b.n 6140 <_lv_disp_refr_task+0x1cc> area_p->y2 >= lv_disp_get_ver_res(disp_refr) ? lv_disp_get_ver_res(disp_refr) - 1 : area_p->y2; 624c: f8db 0000 ldr.w r0, [fp] 6250: 4b08 ldr r3, [pc, #32] ; (6274 <_lv_disp_refr_task+0x300>) 6252: 4798 blx r3 6254: 3801 subs r0, #1 lv_coord_t y2 = 6256: fa0f f980 sxth.w r9, r0 625a: e7c4 b.n 61e6 <_lv_disp_refr_task+0x272> 625c: 00011059 .word 0x00011059 6260: 20002688 .word 0x20002688 6264: 00013959 .word 0x00013959 6268: 0001156f .word 0x0001156f 626c: 00010fdd .word 0x00010fdd 6270: 00010eed .word 0x00010eed 6274: 00010f15 .word 0x00010f15 6278: 00005db9 .word 0x00005db9 627c: 000114fd .word 0x000114fd 6280: 00010ff5 .word 0x00010ff5 6284: 00024a2c .word 0x00024a2c 6288: 000249f0 .word 0x000249f0 628c: 00024a00 .word 0x00024a00 6290: 0001225d .word 0x0001225d 6294: 00011729 .word 0x00011729 if(h_tmp <= 0) { 6298: 2d00 cmp r5, #0 max_row = tmp.y2 + 1; 629a: bfc8 it gt 629c: f101 0801 addgt.w r8, r1, #1 if(h_tmp <= 0) { 62a0: ddca ble.n 6238 <_lv_disp_refr_task+0x2c4> for(row = area_p->y1; row + max_row - 1 <= y2; row += max_row) { 62a2: f9b7 404a ldrsh.w r4, [r7, #74] ; 0x4a 62a6: f8cd 9010 str.w r9, [sp, #16] 62aa: eb04 0308 add.w r3, r4, r8 62ae: 3b01 subs r3, #1 62b0: 454b cmp r3, r9 62b2: dc4b bgt.n 634c <_lv_disp_refr_task+0x3d8> vdb->area.y2 = row + max_row - 1; 62b4: fa1f f388 uxth.w r3, r8 62b8: 9305 str r3, [sp, #20] 62ba: 3b01 subs r3, #1 62bc: f8cd a020 str.w sl, [sp, #32] 62c0: 469a mov sl, r3 62c2: e00d b.n 62e0 <_lv_disp_refr_task+0x36c> if(y2 == row_last) disp_refr->driver.buffer->last_part = 1; 62c4: 45a9 cmp r9, r5 62c6: d01c beq.n 6302 <_lv_disp_refr_task+0x38e> lv_refr_area_part(area_p); 62c8: 9803 ldr r0, [sp, #12] 62ca: 4b78 ldr r3, [pc, #480] ; (64ac <_lv_disp_refr_task+0x538>) 62cc: 4798 blx r3 62ce: 9b05 ldr r3, [sp, #20] 62d0: 441c add r4, r3 62d2: b224 sxth r4, r4 for(row = area_p->y1; row + max_row - 1 <= y2; row += max_row) { 62d4: eb04 0308 add.w r3, r4, r8 62d8: 3b01 subs r3, #1 62da: 9a04 ldr r2, [sp, #16] 62dc: 4293 cmp r3, r2 62de: dc1a bgt.n 6316 <_lv_disp_refr_task+0x3a2> vdb->area.x1 = area_p->x1; 62e0: f9b7 3048 ldrsh.w r3, [r7, #72] ; 0x48 62e4: 8233 strh r3, [r6, #16] vdb->area.x2 = area_p->x2; 62e6: f9b7 304c ldrsh.w r3, [r7, #76] ; 0x4c 62ea: 82b3 strh r3, [r6, #20] vdb->area.y1 = row; 62ec: 8274 strh r4, [r6, #18] 62ee: b2a4 uxth r4, r4 62f0: eb04 050a add.w r5, r4, sl 62f4: b22d sxth r5, r5 vdb->area.y2 = row + max_row - 1; 62f6: 82f5 strh r5, [r6, #22] if(vdb->area.y2 > y2) vdb->area.y2 = y2; 62f8: 45a9 cmp r9, r5 62fa: dae3 bge.n 62c4 <_lv_disp_refr_task+0x350> 62fc: f8a6 9016 strh.w r9, [r6, #22] row_last = vdb->area.y2; 6300: 464d mov r5, r9 if(y2 == row_last) disp_refr->driver.buffer->last_part = 1; 6302: f8db 3000 ldr.w r3, [fp] 6306: 685a ldr r2, [r3, #4] 6308: f892 3020 ldrb.w r3, [r2, #32] 630c: f043 0302 orr.w r3, r3, #2 6310: f882 3020 strb.w r3, [r2, #32] 6314: e7d8 b.n 62c8 <_lv_disp_refr_task+0x354> 6316: f8dd a020 ldr.w sl, [sp, #32] if(y2 != row_last) { 631a: 45a9 cmp r9, r5 631c: f43f af10 beq.w 6140 <_lv_disp_refr_task+0x1cc> vdb->area.x1 = area_p->x1; 6320: f9b7 3048 ldrsh.w r3, [r7, #72] ; 0x48 6324: 8233 strh r3, [r6, #16] vdb->area.x2 = area_p->x2; 6326: f9b7 304c ldrsh.w r3, [r7, #76] ; 0x4c 632a: 82b3 strh r3, [r6, #20] vdb->area.y1 = row; 632c: 8274 strh r4, [r6, #18] vdb->area.y2 = y2; 632e: f8a6 9016 strh.w r9, [r6, #22] disp_refr->driver.buffer->last_part = 1; 6332: f8db 3000 ldr.w r3, [fp] 6336: 685a ldr r2, [r3, #4] 6338: f892 3020 ldrb.w r3, [r2, #32] 633c: f043 0302 orr.w r3, r3, #2 6340: f882 3020 strb.w r3, [r2, #32] lv_refr_area_part(area_p); 6344: 9803 ldr r0, [sp, #12] 6346: 4b59 ldr r3, [pc, #356] ; (64ac <_lv_disp_refr_task+0x538>) 6348: 4798 blx r3 634a: e6f9 b.n 6140 <_lv_disp_refr_task+0x1cc> lv_coord_t row_last = 0; 634c: 2500 movs r5, #0 634e: e7e4 b.n 631a <_lv_disp_refr_task+0x3a6> if(lv_disp_is_true_double_buf(disp_refr) && disp_refr->driver.set_px_cb == NULL) { 6350: 4b57 ldr r3, [pc, #348] ; (64b0 <_lv_disp_refr_task+0x53c>) 6352: 4798 blx r3 6354: b118 cbz r0, 635e <_lv_disp_refr_task+0x3ea> 6356: 4b57 ldr r3, [pc, #348] ; (64b4 <_lv_disp_refr_task+0x540>) 6358: 6818 ldr r0, [r3, #0] 635a: 6943 ldr r3, [r0, #20] 635c: b1eb cbz r3, 639a <_lv_disp_refr_task+0x426> _lv_memset_00(disp_refr->inv_areas, sizeof(disp_refr->inv_areas)); 635e: 4c55 ldr r4, [pc, #340] ; (64b4 <_lv_disp_refr_task+0x540>) 6360: 6820 ldr r0, [r4, #0] 6362: f44f 7180 mov.w r1, #256 ; 0x100 6366: 3048 adds r0, #72 ; 0x48 6368: 4d53 ldr r5, [pc, #332] ; (64b8 <_lv_disp_refr_task+0x544>) 636a: 47a8 blx r5 _lv_memset_00(disp_refr->inv_area_joined, sizeof(disp_refr->inv_area_joined)); 636c: 6820 ldr r0, [r4, #0] 636e: 2120 movs r1, #32 6370: f500 70a4 add.w r0, r0, #328 ; 0x148 6374: 47a8 blx r5 disp_refr->inv_p = 0; 6376: 6823 ldr r3, [r4, #0] 6378: f8b3 2168 ldrh.w r2, [r3, #360] ; 0x168 637c: f36f 0209 bfc r2, #0, #10 6380: f8a3 2168 strh.w r2, [r3, #360] ; 0x168 elaps = lv_tick_elaps(start); 6384: 9809 ldr r0, [sp, #36] ; 0x24 6386: 4b4d ldr r3, [pc, #308] ; (64bc <_lv_disp_refr_task+0x548>) 6388: 4798 blx r3 638a: 4601 mov r1, r0 if(disp_refr->driver.monitor_cb) { 638c: 6820 ldr r0, [r4, #0] 638e: 6983 ldr r3, [r0, #24] 6390: 2b00 cmp r3, #0 6392: d076 beq.n 6482 <_lv_disp_refr_task+0x50e> disp_refr->driver.monitor_cb(&disp_refr->driver, elaps, px_num); 6394: 6862 ldr r2, [r4, #4] 6396: 4798 blx r3 6398: e073 b.n 6482 <_lv_disp_refr_task+0x50e> lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 639a: 4b49 ldr r3, [pc, #292] ; (64c0 <_lv_disp_refr_task+0x54c>) 639c: 4798 blx r3 639e: 4604 mov r4, r0 lv_refr_vdb_flush(); 63a0: 4b48 ldr r3, [pc, #288] ; (64c4 <_lv_disp_refr_task+0x550>) 63a2: 4798 blx r3 while(vdb->flushing) 63a4: 69a3 ldr r3, [r4, #24] 63a6: 2b00 cmp r3, #0 63a8: d1fc bne.n 63a4 <_lv_disp_refr_task+0x430> uint8_t * buf_act = (uint8_t *)vdb->buf_act; 63aa: 68a3 ldr r3, [r4, #8] 63ac: 9303 str r3, [sp, #12] uint8_t * buf_ina = (uint8_t *)vdb->buf_act == vdb->buf1 ? vdb->buf2 : vdb->buf1; 63ae: f8d4 a000 ldr.w sl, [r4] 63b2: 4553 cmp r3, sl 63b4: bf08 it eq 63b6: f8d4 a004 ldreq.w sl, [r4, #4] lv_coord_t hres = lv_disp_get_hor_res(disp_refr); 63ba: 4c3e ldr r4, [pc, #248] ; (64b4 <_lv_disp_refr_task+0x540>) 63bc: 6820 ldr r0, [r4, #0] 63be: 4b42 ldr r3, [pc, #264] ; (64c8 <_lv_disp_refr_task+0x554>) 63c0: 4798 blx r3 63c2: 9004 str r0, [sp, #16] for(a = 0; a < disp_refr->inv_p; a++) { 63c4: 6823 ldr r3, [r4, #0] 63c6: f8b3 2168 ldrh.w r2, [r3, #360] ; 0x168 63ca: f3c2 0209 ubfx r2, r2, #0, #10 63ce: 2a00 cmp r2, #0 63d0: d0c5 beq.n 635e <_lv_disp_refr_task+0x3ea> start_offs += hres * sizeof(lv_color_t); 63d2: 0045 lsls r5, r0, #1 63d4: 2200 movs r2, #0 63d6: 4690 mov r8, r2 for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 63d8: 46a1 mov r9, r4 63da: e00c b.n 63f6 <_lv_disp_refr_task+0x482> for(a = 0; a < disp_refr->inv_p; a++) { 63dc: f108 0801 add.w r8, r8, #1 63e0: fa1f f888 uxth.w r8, r8 63e4: 4642 mov r2, r8 63e6: f8d9 3000 ldr.w r3, [r9] 63ea: f8b3 1168 ldrh.w r1, [r3, #360] ; 0x168 63ee: f3c1 0109 ubfx r1, r1, #0, #10 63f2: 4588 cmp r8, r1 63f4: dab3 bge.n 635e <_lv_disp_refr_task+0x3ea> if(disp_refr->inv_area_joined[a] == 0) { 63f6: 1899 adds r1, r3, r2 63f8: f891 1148 ldrb.w r1, [r1, #328] ; 0x148 63fc: 2900 cmp r1, #0 63fe: d1ed bne.n 63dc <_lv_disp_refr_task+0x468> 6400: eb03 03c2 add.w r3, r3, r2, lsl #3 (hres * disp_refr->inv_areas[a].y1 + disp_refr->inv_areas[a].x1) * sizeof(lv_color_t); 6404: f9b3 704a ldrsh.w r7, [r3, #74] ; 0x4a 6408: f9b3 1048 ldrsh.w r1, [r3, #72] ; 0x48 640c: 9804 ldr r0, [sp, #16] 640e: fb07 1600 mla r6, r7, r0, r1 uint32_t start_offs = 6412: 0076 lsls r6, r6, #1 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 6414: f8b3 304c ldrh.w r3, [r3, #76] ; 0x4c 6418: 3301 adds r3, #1 641a: 1a5b subs r3, r3, r1 uint32_t line_length = lv_area_get_width(&disp_refr->inv_areas[a]) * sizeof(lv_color_t); 641c: b21b sxth r3, r3 641e: 005b lsls r3, r3, #1 6420: 9305 str r3, [sp, #20] for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 6422: f8d9 3000 ldr.w r3, [r9] 6426: eb03 03c2 add.w r3, r3, r2, lsl #3 642a: f9b3 304e ldrsh.w r3, [r3, #78] ; 0x4e 642e: 42bb cmp r3, r7 6430: dbd4 blt.n 63dc <_lv_disp_refr_task+0x468> 6432: 9b03 ldr r3, [sp, #12] 6434: eb03 0b06 add.w fp, r3, r6 6438: 4456 add r6, sl 643a: 3209 adds r2, #9 643c: 00d4 lsls r4, r2, #3 _lv_memcpy(buf_act + start_offs, buf_ina + start_offs, line_length); 643e: 9a05 ldr r2, [sp, #20] 6440: 4631 mov r1, r6 6442: 4658 mov r0, fp 6444: 4b21 ldr r3, [pc, #132] ; (64cc <_lv_disp_refr_task+0x558>) 6446: 4798 blx r3 6448: 3701 adds r7, #1 644a: b23f sxth r7, r7 644c: 44ab add fp, r5 644e: 442e add r6, r5 for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 6450: f8d9 3000 ldr.w r3, [r9] 6454: 4423 add r3, r4 6456: f9b3 3006 ldrsh.w r3, [r3, #6] 645a: 42bb cmp r3, r7 645c: daef bge.n 643e <_lv_disp_refr_task+0x4ca> 645e: e7bd b.n 63dc <_lv_disp_refr_task+0x468> px_num = 0; 6460: 2200 movs r2, #0 6462: 4b14 ldr r3, [pc, #80] ; (64b4 <_lv_disp_refr_task+0x540>) 6464: 605a str r2, [r3, #4] if(disp_refr->inv_p == 0) return; 6466: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 646a: f3c3 0309 ubfx r3, r3, #0, #10 646e: b97b cbnz r3, 6490 <_lv_disp_refr_task+0x51c> if(disp_refr->inv_p != 0) { 6470: 4b10 ldr r3, [pc, #64] ; (64b4 <_lv_disp_refr_task+0x540>) 6472: 6818 ldr r0, [r3, #0] 6474: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 6478: f3c3 0309 ubfx r3, r3, #0, #10 647c: 2b00 cmp r3, #0 647e: f47f af67 bne.w 6350 <_lv_disp_refr_task+0x3dc> _lv_mem_buf_free_all(); 6482: 4b13 ldr r3, [pc, #76] ; (64d0 <_lv_disp_refr_task+0x55c>) 6484: 4798 blx r3 _lv_font_clean_up_fmt_txt(); 6486: 4b13 ldr r3, [pc, #76] ; (64d4 <_lv_disp_refr_task+0x560>) 6488: 4798 blx r3 } 648a: b00d add sp, #52 ; 0x34 648c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} int32_t last_i = 0; 6490: 9207 str r2, [sp, #28] 6492: e60b b.n 60ac <_lv_disp_refr_task+0x138> px_num = 0; 6494: 2200 movs r2, #0 6496: 4b07 ldr r3, [pc, #28] ; (64b4 <_lv_disp_refr_task+0x540>) 6498: 605a str r2, [r3, #4] if(disp_refr->inv_p == 0) return; 649a: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 649e: f3c3 0309 ubfx r3, r3, #0, #10 64a2: 2b00 cmp r3, #0 64a4: d0ed beq.n 6482 <_lv_disp_refr_task+0x50e> int32_t last_i = 0; 64a6: 9207 str r2, [sp, #28] 64a8: e600 b.n 60ac <_lv_disp_refr_task+0x138> 64aa: bf00 nop 64ac: 00005db9 .word 0x00005db9 64b0: 00010ff5 .word 0x00010ff5 64b4: 20002688 .word 0x20002688 64b8: 00012b37 .word 0x00012b37 64bc: 00011071 .word 0x00011071 64c0: 00010fdd .word 0x00010fdd 64c4: 00005d41 .word 0x00005d41 64c8: 00010eed .word 0x00010eed 64cc: 00012655 .word 0x00012655 64d0: 000125f9 .word 0x000125f9 64d4: 00010cf5 .word 0x00010cf5 000064d8 : /** * Initialize a style * @param style pointer to a style to initialize */ void lv_style_init(lv_style_t * style) { 64d8: b508 push {r3, lr} _lv_memset_00(style, sizeof(lv_style_t)); 64da: 2104 movs r1, #4 64dc: 4b01 ldr r3, [pc, #4] ; (64e4 ) 64de: 4798 blx r3 64e0: bd08 pop {r3, pc} 64e2: bf00 nop 64e4: 00012b37 .word 0x00012b37 000064e8 : /** * Initialize a style list * @param list a style list to initialize */ void lv_style_list_init(lv_style_list_t * list) { 64e8: b508 push {r3, lr} _lv_memset_00(list, sizeof(lv_style_list_t)); 64ea: 2108 movs r1, #8 64ec: 4b01 ldr r3, [pc, #4] ; (64f4 ) 64ee: 4798 blx r3 64f0: bd08 pop {r3, pc} 64f2: bf00 nop 64f4: 00012b37 .word 0x00012b37 000064f8 <_lv_style_list_remove_style>: * Remove a style from a style list * @param style_list pointer to a style list * @param style pointer to a style to remove */ void _lv_style_list_remove_style(lv_style_list_t * list, lv_style_t * style) { 64f8: b570 push {r4, r5, r6, lr} 64fa: b082 sub sp, #8 LV_ASSERT_STYLE_LIST(list); LV_ASSERT_STYLE(style); if(list->style_cnt == 0) return; 64fc: 7906 ldrb r6, [r0, #4] 64fe: 2e00 cmp r6, #0 6500: d055 beq.n 65ae <_lv_style_list_remove_style+0xb6> 6502: 4604 mov r4, r0 /*Check if the style really exists here*/ uint8_t i; bool found = false; for(i = 0; i < list->style_cnt; i++) { if(list->style_list[i] == style) { 6504: 6800 ldr r0, [r0, #0] 6506: 6803 ldr r3, [r0, #0] 6508: 4299 cmp r1, r3 650a: d00a beq.n 6522 <_lv_style_list_remove_style+0x2a> 650c: 4603 mov r3, r0 650e: 1e75 subs r5, r6, #1 6510: b2ed uxtb r5, r5 6512: eb00 0585 add.w r5, r0, r5, lsl #2 for(i = 0; i < list->style_cnt; i++) { 6516: 429d cmp r5, r3 6518: d049 beq.n 65ae <_lv_style_list_remove_style+0xb6> if(list->style_list[i] == style) { 651a: f853 2f04 ldr.w r2, [r3, #4]! 651e: 428a cmp r2, r1 6520: d1f9 bne.n 6516 <_lv_style_list_remove_style+0x1e> 6522: 460d mov r5, r1 break; } } if(found == false) return; if(list->style_cnt == 1) { 6524: 2e01 cmp r6, #1 6526: d00e beq.n 6546 <_lv_style_list_remove_style+0x4e> list->style_cnt = 0; list->has_local = 0; return; } lv_style_t ** new_classes = lv_mem_realloc(list->style_list, sizeof(lv_style_t *) * (list->style_cnt - 1)); 6528: 1e71 subs r1, r6, #1 652a: 0089 lsls r1, r1, #2 652c: 4b21 ldr r3, [pc, #132] ; (65b4 <_lv_style_list_remove_style+0xbc>) 652e: 4798 blx r3 6530: 4606 mov r6, r0 LV_ASSERT_MEM(new_classes); 6532: 4b21 ldr r3, [pc, #132] ; (65b8 <_lv_style_list_remove_style+0xc0>) 6534: 4798 blx r3 6536: b180 cbz r0, 655a <_lv_style_list_remove_style+0x62> if(new_classes == NULL) { 6538: b1ee cbz r6, 6576 <_lv_style_list_remove_style+0x7e> LV_LOG_WARN("lv_style_list_remove_style: couldn't reallocate class list"); return; } uint8_t j; for(i = 0, j = 0; i < list->style_cnt; i++) { 653a: 7921 ldrb r1, [r4, #4] 653c: 2900 cmp r1, #0 653e: d033 beq.n 65a8 <_lv_style_list_remove_style+0xb0> 6540: 2200 movs r2, #0 6542: 4613 mov r3, r2 6544: e026 b.n 6594 <_lv_style_list_remove_style+0x9c> lv_mem_free(list->style_list); 6546: 4b1d ldr r3, [pc, #116] ; (65bc <_lv_style_list_remove_style+0xc4>) 6548: 4798 blx r3 list->style_list = NULL; 654a: 2300 movs r3, #0 654c: 6023 str r3, [r4, #0] list->style_cnt = 0; 654e: 7123 strb r3, [r4, #4] list->has_local = 0; 6550: 7962 ldrb r2, [r4, #5] 6552: f363 0200 bfi r2, r3, #0, #1 6556: 7162 strb r2, [r4, #5] return; 6558: e029 b.n 65ae <_lv_style_list_remove_style+0xb6> LV_ASSERT_MEM(new_classes); 655a: 4b19 ldr r3, [pc, #100] ; (65c0 <_lv_style_list_remove_style+0xc8>) 655c: 9300 str r3, [sp, #0] 655e: f44f 7282 mov.w r2, #260 ; 0x104 6562: 4918 ldr r1, [pc, #96] ; (65c4 <_lv_style_list_remove_style+0xcc>) 6564: 2003 movs r0, #3 6566: 4c18 ldr r4, [pc, #96] ; (65c8 <_lv_style_list_remove_style+0xd0>) 6568: 47a0 blx r4 656a: 4632 mov r2, r6 656c: 2300 movs r3, #0 656e: 4817 ldr r0, [pc, #92] ; (65cc <_lv_style_list_remove_style+0xd4>) 6570: 4917 ldr r1, [pc, #92] ; (65d0 <_lv_style_list_remove_style+0xd8>) 6572: 4788 blx r1 6574: e7fe b.n 6574 <_lv_style_list_remove_style+0x7c> LV_LOG_WARN("lv_style_list_remove_style: couldn't reallocate class list"); 6576: 4b17 ldr r3, [pc, #92] ; (65d4 <_lv_style_list_remove_style+0xdc>) 6578: 9300 str r3, [sp, #0] 657a: 4b11 ldr r3, [pc, #68] ; (65c0 <_lv_style_list_remove_style+0xc8>) 657c: f44f 7283 mov.w r2, #262 ; 0x106 6580: 4910 ldr r1, [pc, #64] ; (65c4 <_lv_style_list_remove_style+0xcc>) 6582: 2002 movs r0, #2 6584: 4c10 ldr r4, [pc, #64] ; (65c8 <_lv_style_list_remove_style+0xd0>) 6586: 47a0 blx r4 return; 6588: e011 b.n 65ae <_lv_style_list_remove_style+0xb6> for(i = 0, j = 0; i < list->style_cnt; i++) { 658a: 3301 adds r3, #1 658c: b2db uxtb r3, r3 658e: 7921 ldrb r1, [r4, #4] 6590: 4299 cmp r1, r3 6592: d909 bls.n 65a8 <_lv_style_list_remove_style+0xb0> if(list->style_list[i] == style) continue; 6594: 6821 ldr r1, [r4, #0] 6596: f851 1023 ldr.w r1, [r1, r3, lsl #2] 659a: 428d cmp r5, r1 659c: d0f5 beq.n 658a <_lv_style_list_remove_style+0x92> new_classes[j] = list->style_list[i]; 659e: f846 1022 str.w r1, [r6, r2, lsl #2] j++; 65a2: 3201 adds r2, #1 65a4: b2d2 uxtb r2, r2 65a6: e7f0 b.n 658a <_lv_style_list_remove_style+0x92> } list->style_cnt--; 65a8: 3901 subs r1, #1 65aa: 7121 strb r1, [r4, #4] list->style_list = new_classes; 65ac: 6026 str r6, [r4, #0] } 65ae: b002 add sp, #8 65b0: bd70 pop {r4, r5, r6, pc} 65b2: bf00 nop 65b4: 00012899 .word 0x00012899 65b8: 000022b1 .word 0x000022b1 65bc: 000124c5 .word 0x000124c5 65c0: 00024a7c .word 0x00024a7c 65c4: 00024b3c .word 0x00024b3c 65c8: 0001225d .word 0x0001225d 65cc: 00023fd8 .word 0x00023fd8 65d0: 000022b9 .word 0x000022b9 65d4: 00024b68 .word 0x00024b68 000065d8 <_lv_style_list_add_style>: if(list == NULL) return; 65d8: 2800 cmp r0, #0 65da: d051 beq.n 6680 <_lv_style_list_add_style+0xa8> { 65dc: b570 push {r4, r5, r6, lr} 65de: b082 sub sp, #8 65e0: 4604 mov r4, r0 65e2: 460e mov r6, r1 _lv_style_list_remove_style(list, style); 65e4: 4b27 ldr r3, [pc, #156] ; (6684 <_lv_style_list_add_style+0xac>) 65e6: 4798 blx r3 if(list->style_cnt == 0) new_classes = lv_mem_alloc(sizeof(lv_style_t *)); 65e8: 7923 ldrb r3, [r4, #4] 65ea: bb63 cbnz r3, 6646 <_lv_style_list_add_style+0x6e> 65ec: 2004 movs r0, #4 65ee: 4b26 ldr r3, [pc, #152] ; (6688 <_lv_style_list_add_style+0xb0>) 65f0: 4798 blx r3 65f2: 4605 mov r5, r0 LV_ASSERT_MEM(new_classes); 65f4: 4628 mov r0, r5 65f6: 4b25 ldr r3, [pc, #148] ; (668c <_lv_style_list_add_style+0xb4>) 65f8: 4798 blx r3 65fa: b358 cbz r0, 6654 <_lv_style_list_add_style+0x7c> if(new_classes == NULL) { 65fc: 2d00 cmp r5, #0 65fe: d036 beq.n 666e <_lv_style_list_add_style+0x96> if(list->has_trans) first_style++; 6600: 7963 ldrb r3, [r4, #5] uint8_t first_style = 0; 6602: f3c3 0040 ubfx r0, r3, #1, #1 if(list->has_local) first_style++; 6606: f013 0f01 tst.w r3, #1 660a: bf18 it ne 660c: 3001 addne r0, #1 for(i = list->style_cnt; i > first_style; i--) { 660e: 7923 ldrb r3, [r4, #4] 6610: 4298 cmp r0, r3 6612: d210 bcs.n 6636 <_lv_style_list_add_style+0x5e> 6614: eb05 0183 add.w r1, r5, r3, lsl #2 6618: f103 4280 add.w r2, r3, #1073741824 ; 0x40000000 661c: 3a01 subs r2, #1 661e: 3b01 subs r3, #1 6620: 1a1b subs r3, r3, r0 6622: b2db uxtb r3, r3 6624: 1ad3 subs r3, r2, r3 6626: eb05 0383 add.w r3, r5, r3, lsl #2 new_classes[i] = new_classes[i - 1]; 662a: f851 2c04 ldr.w r2, [r1, #-4] 662e: f841 2904 str.w r2, [r1], #-4 for(i = list->style_cnt; i > first_style; i--) { 6632: 4299 cmp r1, r3 6634: d1f9 bne.n 662a <_lv_style_list_add_style+0x52> new_classes[first_style] = style; 6636: f845 6020 str.w r6, [r5, r0, lsl #2] list->style_cnt++; 663a: 7923 ldrb r3, [r4, #4] 663c: 3301 adds r3, #1 663e: 7123 strb r3, [r4, #4] list->style_list = new_classes; 6640: 6025 str r5, [r4, #0] } 6642: b002 add sp, #8 6644: bd70 pop {r4, r5, r6, pc} else new_classes = lv_mem_realloc(list->style_list, sizeof(lv_style_t *) * (list->style_cnt + 1)); 6646: 3301 adds r3, #1 6648: 0099 lsls r1, r3, #2 664a: 6820 ldr r0, [r4, #0] 664c: 4b10 ldr r3, [pc, #64] ; (6690 <_lv_style_list_add_style+0xb8>) 664e: 4798 blx r3 6650: 4605 mov r5, r0 6652: e7cf b.n 65f4 <_lv_style_list_add_style+0x1c> LV_ASSERT_MEM(new_classes); 6654: 4b0f ldr r3, [pc, #60] ; (6694 <_lv_style_list_add_style+0xbc>) 6656: 9300 str r3, [sp, #0] 6658: 22d0 movs r2, #208 ; 0xd0 665a: 490f ldr r1, [pc, #60] ; (6698 <_lv_style_list_add_style+0xc0>) 665c: 2003 movs r0, #3 665e: 4c0f ldr r4, [pc, #60] ; (669c <_lv_style_list_add_style+0xc4>) 6660: 47a0 blx r4 6662: 462a mov r2, r5 6664: 2300 movs r3, #0 6666: 480e ldr r0, [pc, #56] ; (66a0 <_lv_style_list_add_style+0xc8>) 6668: 490e ldr r1, [pc, #56] ; (66a4 <_lv_style_list_add_style+0xcc>) 666a: 4788 blx r1 666c: e7fe b.n 666c <_lv_style_list_add_style+0x94> LV_LOG_WARN("lv_style_list_add_style: couldn't add the class"); 666e: 4b0e ldr r3, [pc, #56] ; (66a8 <_lv_style_list_add_style+0xd0>) 6670: 9300 str r3, [sp, #0] 6672: 4b08 ldr r3, [pc, #32] ; (6694 <_lv_style_list_add_style+0xbc>) 6674: 22d2 movs r2, #210 ; 0xd2 6676: 4908 ldr r1, [pc, #32] ; (6698 <_lv_style_list_add_style+0xc0>) 6678: 2002 movs r0, #2 667a: 4c08 ldr r4, [pc, #32] ; (669c <_lv_style_list_add_style+0xc4>) 667c: 47a0 blx r4 return; 667e: e7e0 b.n 6642 <_lv_style_list_add_style+0x6a> 6680: 4770 bx lr 6682: bf00 nop 6684: 000064f9 .word 0x000064f9 6688: 000123dd .word 0x000123dd 668c: 000022b1 .word 0x000022b1 6690: 00012899 .word 0x00012899 6694: 00024a98 .word 0x00024a98 6698: 00024b3c .word 0x00024b3c 669c: 0001225d .word 0x0001225d 66a0: 00023fd8 .word 0x00023fd8 66a4: 000022b9 .word 0x000022b9 66a8: 00024ba4 .word 0x00024ba4 000066ac : * Get he local style from a style list. Allocate it if not exists yet. * @param list pointer to a style list * @return pointer to the local style */ static lv_style_t * get_alloc_local_style(lv_style_list_t * list) { 66ac: b530 push {r4, r5, lr} 66ae: b083 sub sp, #12 LV_ASSERT_STYLE_LIST(list); if(list->has_local) return lv_style_list_get_style(list, 0); 66b0: 7943 ldrb r3, [r0, #5] 66b2: f013 0f01 tst.w r3, #1 66b6: d010 beq.n 66da if(list->has_trans && list->skip_trans) id++; 66b8: f003 0306 and.w r3, r3, #6 66bc: 2b06 cmp r3, #6 66be: bf14 ite ne 66c0: 2300 movne r3, #0 66c2: 2301 moveq r3, #1 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 66c4: 7902 ldrb r2, [r0, #4] 66c6: 2a00 cmp r2, #0 66c8: d034 beq.n 6734 66ca: 429a cmp r2, r3 66cc: d934 bls.n 6738 return list->style_list[id]; 66ce: 6802 ldr r2, [r0, #0] 66d0: f852 4023 ldr.w r4, [r2, r3, lsl #2] /*Add the local style to the furst place*/ _lv_style_list_add_style(list, local_style); list->has_local = 1; return local_style; } 66d4: 4620 mov r0, r4 66d6: b003 add sp, #12 66d8: bd30 pop {r4, r5, pc} 66da: 4605 mov r5, r0 lv_style_t * local_style = lv_mem_alloc(sizeof(lv_style_t)); 66dc: 2004 movs r0, #4 66de: 4b17 ldr r3, [pc, #92] ; (673c ) 66e0: 4798 blx r3 66e2: 4604 mov r4, r0 LV_ASSERT_MEM(local_style); 66e4: 4b16 ldr r3, [pc, #88] ; (6740 ) 66e6: 4798 blx r3 66e8: b160 cbz r0, 6704 if(local_style == NULL) { 66ea: b1cc cbz r4, 6720 lv_style_init(local_style); 66ec: 4620 mov r0, r4 66ee: 4b15 ldr r3, [pc, #84] ; (6744 ) 66f0: 4798 blx r3 _lv_style_list_add_style(list, local_style); 66f2: 4621 mov r1, r4 66f4: 4628 mov r0, r5 66f6: 4b14 ldr r3, [pc, #80] ; (6748 ) 66f8: 4798 blx r3 list->has_local = 1; 66fa: 796b ldrb r3, [r5, #5] 66fc: f043 0301 orr.w r3, r3, #1 6700: 716b strb r3, [r5, #5] return local_style; 6702: e7e7 b.n 66d4 LV_ASSERT_MEM(local_style); 6704: 4b11 ldr r3, [pc, #68] ; (674c ) 6706: 9300 str r3, [sp, #0] 6708: f240 4235 movw r2, #1077 ; 0x435 670c: 4910 ldr r1, [pc, #64] ; (6750 ) 670e: 2003 movs r0, #3 6710: 4d10 ldr r5, [pc, #64] ; (6754 ) 6712: 47a8 blx r5 6714: 4622 mov r2, r4 6716: 2300 movs r3, #0 6718: 480f ldr r0, [pc, #60] ; (6758 ) 671a: 4910 ldr r1, [pc, #64] ; (675c ) 671c: 4788 blx r1 671e: e7fe b.n 671e LV_LOG_WARN("get_local_style: couldn't create local style"); 6720: 4b0f ldr r3, [pc, #60] ; (6760 ) 6722: 9300 str r3, [sp, #0] 6724: 4b09 ldr r3, [pc, #36] ; (674c ) 6726: f240 4237 movw r2, #1079 ; 0x437 672a: 4909 ldr r1, [pc, #36] ; (6750 ) 672c: 2002 movs r0, #2 672e: 4d09 ldr r5, [pc, #36] ; (6754 ) 6730: 47a8 blx r5 return NULL; 6732: e7cf b.n 66d4 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 6734: 2400 movs r4, #0 6736: e7cd b.n 66d4 6738: 2400 movs r4, #0 673a: e7cb b.n 66d4 673c: 000123dd .word 0x000123dd 6740: 000022b1 .word 0x000022b1 6744: 000064d9 .word 0x000064d9 6748: 000065d9 .word 0x000065d9 674c: 00024ab4 .word 0x00024ab4 6750: 00024b3c .word 0x00024b3c 6754: 0001225d .word 0x0001225d 6758: 00023fd8 .word 0x00023fd8 675c: 000022b9 .word 0x000022b9 6760: 00024bd4 .word 0x00024bd4 00006764 : { 6764: b510 push {r4, lr} 6766: 4604 mov r4, r0 lv_mem_free(style->map); 6768: 6800 ldr r0, [r0, #0] 676a: 4b02 ldr r3, [pc, #8] ; (6774 ) 676c: 4798 blx r3 style->map = NULL; 676e: 2300 movs r3, #0 6770: 6023 str r3, [r4, #0] 6772: bd10 pop {r4, pc} 6774: 000124c5 .word 0x000124c5 00006778 <_lv_style_get_mem_size>: if(style->map == NULL) return 0; 6778: 6802 ldr r2, [r0, #0] 677a: b1d2 cbz r2, 67b2 <_lv_style_get_mem_size+0x3a> while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 677c: 7813 ldrb r3, [r2, #0] 677e: 2bff cmp r3, #255 ; 0xff 6780: d013 beq.n 67aa <_lv_style_get_mem_size+0x32> 6782: 2000 movs r0, #0 6784: e006 b.n 6794 <_lv_style_get_mem_size+0x1c> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 6786: 2b0b cmp r3, #11 6788: dc0a bgt.n 67a0 <_lv_style_get_mem_size+0x28> 678a: 3002 adds r0, #2 i += sizeof(lv_style_property_t); 678c: 3002 adds r0, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 678e: 5c13 ldrb r3, [r2, r0] 6790: 2bff cmp r3, #255 ; 0xff 6792: d00b beq.n 67ac <_lv_style_get_mem_size+0x34> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6794: f003 030f and.w r3, r3, #15 6798: 2b08 cmp r3, #8 679a: dcf4 bgt.n 6786 <_lv_style_get_mem_size+0xe> 679c: 3002 adds r0, #2 679e: e7f5 b.n 678c <_lv_style_get_mem_size+0x14> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 67a0: 2b0d cmp r3, #13 67a2: bfd4 ite le 67a4: 3001 addle r0, #1 else i += sizeof(const void *); 67a6: 3004 addgt r0, #4 67a8: e7f0 b.n 678c <_lv_style_get_mem_size+0x14> while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 67aa: 2000 movs r0, #0 return i + sizeof(lv_style_property_t); 67ac: 3002 adds r0, #2 67ae: b280 uxth r0, r0 67b0: 4770 bx lr if(style->map == NULL) return 0; 67b2: 2000 movs r0, #0 } 67b4: 4770 bx lr ... 000067b8 : if(style_src == NULL) return; 67b8: b181 cbz r1, 67dc { 67ba: b570 push {r4, r5, r6, lr} 67bc: 460c mov r4, r1 if(style_src->map == NULL) return; 67be: 680a ldr r2, [r1, #0] 67c0: b15a cbz r2, 67da 67c2: 4605 mov r5, r0 uint16_t size = _lv_style_get_mem_size(style_src); 67c4: 4608 mov r0, r1 67c6: 4b06 ldr r3, [pc, #24] ; (67e0 ) 67c8: 4798 blx r3 67ca: 4606 mov r6, r0 style_dest->map = lv_mem_alloc(size); 67cc: 4b05 ldr r3, [pc, #20] ; (67e4 ) 67ce: 4798 blx r3 67d0: 6028 str r0, [r5, #0] _lv_memcpy(style_dest->map, style_src->map, size); 67d2: 4632 mov r2, r6 67d4: 6821 ldr r1, [r4, #0] 67d6: 4b04 ldr r3, [pc, #16] ; (67e8 ) 67d8: 4798 blx r3 67da: bd70 pop {r4, r5, r6, pc} 67dc: 4770 bx lr 67de: bf00 nop 67e0: 00006779 .word 0x00006779 67e4: 000123dd .word 0x000123dd 67e8: 00012655 .word 0x00012655 000067ec : if(style == NULL) return false; 67ec: 2800 cmp r0, #0 67ee: d06b beq.n 68c8 { 67f0: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 67f4: 4607 mov r7, r0 if(style->map == NULL) return -1; 67f6: 6800 ldr r0, [r0, #0] 67f8: 2800 cmp r0, #0 67fa: d06a beq.n 68d2 uint8_t id_to_find = prop & 0xFF; 67fc: b2cd uxtb r5, r1 attr.full = (prop >> 8) & 0xFF; 67fe: 0a0e lsrs r6, r1, #8 6800: 46b4 mov ip, r6 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6802: 7803 ldrb r3, [r0, #0] 6804: 2bff cmp r3, #255 ; 0xff 6806: d03b beq.n 6880 6808: f04f 3eff mov.w lr, #4294967295 680c: 46f0 mov r8, lr 680e: 2200 movs r2, #0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6810: f3cc 0c06 ubfx ip, ip, #0, #7 6814: e027 b.n 6866 attr_i.full = style->map[i + 1]; 6816: 1884 adds r4, r0, r2 6818: 7864 ldrb r4, [r4, #1] if(attr_i.bits.state == attr.bits.state) { 681a: ea86 0904 eor.w r9, r6, r4 681e: f019 0f7f tst.w r9, #127 ; 0x7f 6822: d00b beq.n 683c else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6824: f004 047f and.w r4, r4, #127 ; 0x7f 6828: ea34 090c bics.w r9, r4, ip 682c: d11d bne.n 686a if(attr_i.bits.state > weight) { 682e: 4544 cmp r4, r8 weight = attr_i.bits.state; 6830: bfc4 itt gt 6832: fa0f f884 sxthgt.w r8, r4 id_guess = i; 6836: fa0f fe82 sxthgt.w lr, r2 683a: e016 b.n 686a return i; 683c: 4696 mov lr, r2 if(id >= 0) { 683e: f1be 0f00 cmp.w lr, #0 6842: db43 blt.n 68cc attr_found.full = *(style->map + id + 1); 6844: 4674 mov r4, lr 6846: 4470 add r0, lr if(attr_found.bits.state == attr_goal.bits.state) { 6848: 7843 ldrb r3, [r0, #1] 684a: 405e eors r6, r3 684c: f016 0f7f tst.w r6, #127 ; 0x7f 6850: d019 beq.n 6886 return false; 6852: 2000 movs r0, #0 6854: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 6858: 2b0b cmp r3, #11 685a: dc0c bgt.n 6876 685c: 3202 adds r2, #2 i += sizeof(lv_style_property_t); 685e: 3202 adds r2, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6860: 5c83 ldrb r3, [r0, r2] 6862: 2bff cmp r3, #255 ; 0xff 6864: d0eb beq.n 683e if(style->map[i] == id_to_find) { 6866: 429d cmp r5, r3 6868: d0d5 beq.n 6816 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 686a: f003 030f and.w r3, r3, #15 686e: 2b08 cmp r3, #8 6870: dcf2 bgt.n 6858 6872: 3202 adds r2, #2 6874: e7f3 b.n 685e else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6876: 2b0d cmp r3, #13 6878: bfd4 ite le 687a: 3201 addle r2, #1 else i += sizeof(const void *); 687c: 3204 addgt r2, #4 687e: e7ee b.n 685e int16_t id_guess = -1; 6880: f04f 3eff mov.w lr, #4294967295 6884: e7db b.n 683e 6886: 460d mov r5, r1 uint32_t map_size = _lv_style_get_mem_size(style); 6888: 4638 mov r0, r7 688a: 4b13 ldr r3, [pc, #76] ; (68d8 ) 688c: 4798 blx r3 if((prop & 0xF) < LV_STYLE_ID_COLOR) prop_size += sizeof(lv_style_int_t); 688e: f005 010f and.w r1, r5, #15 else if((prop & 0xF) < LV_STYLE_ID_OPA) prop_size += sizeof(lv_color_t); 6892: 290b cmp r1, #11 6894: dd04 ble.n 68a0 else prop_size += sizeof(const void *); 6896: 290e cmp r1, #14 6898: bfb4 ite lt 689a: 2103 movlt r1, #3 689c: 2106 movge r1, #6 689e: e000 b.n 68a2 else if((prop & 0xF) < LV_STYLE_ID_OPA) prop_size += sizeof(lv_color_t); 68a0: 2104 movs r1, #4 for(i = id; i < map_size - prop_size; i++) { 68a2: 460d mov r5, r1 68a4: 1a41 subs r1, r0, r1 68a6: 428c cmp r4, r1 68a8: d207 bcs.n 68ba 68aa: 4623 mov r3, r4 style->map[i] = style->map[i + prop_size]; 68ac: 683a ldr r2, [r7, #0] 68ae: 1954 adds r4, r2, r5 68b0: 5ce4 ldrb r4, [r4, r3] 68b2: 54d4 strb r4, [r2, r3] for(i = id; i < map_size - prop_size; i++) { 68b4: 3301 adds r3, #1 68b6: 428b cmp r3, r1 68b8: d1f8 bne.n 68ac style->map = lv_mem_realloc(style->map, map_size - prop_size); 68ba: 6838 ldr r0, [r7, #0] 68bc: 4b07 ldr r3, [pc, #28] ; (68dc ) 68be: 4798 blx r3 68c0: 6038 str r0, [r7, #0] return true; 68c2: 2001 movs r0, #1 68c4: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} if(style == NULL) return false; 68c8: 2000 movs r0, #0 68ca: 4770 bx lr return false; 68cc: 2000 movs r0, #0 68ce: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 68d2: 2000 movs r0, #0 } 68d4: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 68d8: 00006779 .word 0x00006779 68dc: 00012899 .word 0x00012899 000068e0 <_lv_style_set_int>: { 68e0: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 68e4: b086 sub sp, #24 68e6: f8ad 100e strh.w r1, [sp, #14] 68ea: f8ad 200c strh.w r2, [sp, #12] if(style->map == NULL) return -1; 68ee: 6804 ldr r4, [r0, #0] 68f0: 2c00 cmp r4, #0 68f2: d048 beq.n 6986 <_lv_style_set_int+0xa6> uint8_t id_to_find = prop & 0xFF; 68f4: b2cf uxtb r7, r1 attr.full = (prop >> 8) & 0xFF; 68f6: 0a0d lsrs r5, r1, #8 68f8: 46ae mov lr, r5 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 68fa: 7823 ldrb r3, [r4, #0] 68fc: 2bff cmp r3, #255 ; 0xff 68fe: d02c beq.n 695a <_lv_style_set_int+0x7a> 6900: f04f 31ff mov.w r1, #4294967295 6904: 4688 mov r8, r1 6906: 2200 movs r2, #0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6908: f3ce 0e06 ubfx lr, lr, #0, #7 690c: e018 b.n 6940 <_lv_style_set_int+0x60> attr_i.full = style->map[i + 1]; 690e: 18a6 adds r6, r4, r2 6910: 7876 ldrb r6, [r6, #1] if(attr_i.bits.state == attr.bits.state) { 6912: ea85 0c06 eor.w ip, r5, r6 6916: f01c 0f7f tst.w ip, #127 ; 0x7f 691a: d021 beq.n 6960 <_lv_style_set_int+0x80> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 691c: f006 067f and.w r6, r6, #127 ; 0x7f 6920: ea36 0c0e bics.w ip, r6, lr 6924: d10e bne.n 6944 <_lv_style_set_int+0x64> if(attr_i.bits.state > weight) { 6926: 4546 cmp r6, r8 weight = attr_i.bits.state; 6928: bfc4 itt gt 692a: fa0f f886 sxthgt.w r8, r6 id_guess = i; 692e: b211 sxthgt r1, r2 6930: e008 b.n 6944 <_lv_style_set_int+0x64> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 6932: 2b0b cmp r3, #11 6934: dc0c bgt.n 6950 <_lv_style_set_int+0x70> 6936: 3202 adds r2, #2 i += sizeof(lv_style_property_t); 6938: 3202 adds r2, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 693a: 5ca3 ldrb r3, [r4, r2] 693c: 2bff cmp r3, #255 ; 0xff 693e: d00e beq.n 695e <_lv_style_set_int+0x7e> if(style->map[i] == id_to_find) { 6940: 429f cmp r7, r3 6942: d0e4 beq.n 690e <_lv_style_set_int+0x2e> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6944: f003 030f and.w r3, r3, #15 6948: 2b08 cmp r3, #8 694a: dcf2 bgt.n 6932 <_lv_style_set_int+0x52> 694c: 3202 adds r2, #2 694e: e7f3 b.n 6938 <_lv_style_set_int+0x58> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6950: 2b0d cmp r3, #13 6952: bfd4 ite le 6954: 3201 addle r2, #1 else i += sizeof(const void *); 6956: 3204 addgt r2, #4 6958: e7ee b.n 6938 <_lv_style_set_int+0x58> int16_t id_guess = -1; 695a: f04f 31ff mov.w r1, #4294967295 return id_guess; 695e: 460a mov r2, r1 if(id >= 0) { 6960: 2a00 cmp r2, #0 6962: db10 blt.n 6986 <_lv_style_set_int+0xa6> attr_found.full = *(style->map + id + 1); 6964: 18a3 adds r3, r4, r2 if(attr_found.bits.state == attr_goal.bits.state) { 6966: 785b ldrb r3, [r3, #1] 6968: 405d eors r5, r3 696a: f015 0f7f tst.w r5, #127 ; 0x7f 696e: d10a bne.n 6986 <_lv_style_set_int+0xa6> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &value, sizeof(lv_style_int_t)); 6970: 3202 adds r2, #2 6972: 18a3 adds r3, r4, r2 *d8 = *s8; 6974: f89d 100c ldrb.w r1, [sp, #12] 6978: 54a1 strb r1, [r4, r2] 697a: f89d 200d ldrb.w r2, [sp, #13] 697e: 705a strb r2, [r3, #1] } 6980: b006 add sp, #24 6982: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 6986: 4606 mov r6, r0 lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 6988: 23ff movs r3, #255 ; 0xff 698a: f8ad 3016 strh.w r3, [sp, #22] uint16_t size = _lv_style_get_mem_size(style); 698e: 4b1d ldr r3, [pc, #116] ; (6a04 <_lv_style_set_int+0x124>) 6990: 4798 blx r3 if(size == 0) size += end_mark_size; 6992: 2800 cmp r0, #0 6994: bf08 it eq 6996: 2002 moveq r0, #2 size += sizeof(lv_style_property_t) + sizeof(lv_style_int_t); 6998: 1d05 adds r5, r0, #4 style->map = lv_mem_realloc(style->map, size); 699a: b2ad uxth r5, r5 699c: 4629 mov r1, r5 699e: 4620 mov r0, r4 69a0: 4b19 ldr r3, [pc, #100] ; (6a08 <_lv_style_set_int+0x128>) 69a2: 4798 blx r3 69a4: 6030 str r0, [r6, #0] LV_ASSERT_MEM(style->map); 69a6: 4b19 ldr r3, [pc, #100] ; (6a0c <_lv_style_set_int+0x12c>) 69a8: 4798 blx r3 69aa: b1e8 cbz r0, 69e8 <_lv_style_set_int+0x108> if(style == NULL) return; 69ac: 2e00 cmp r6, #0 69ae: d0e7 beq.n 6980 <_lv_style_set_int+0xa0> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 69b0: 1fab subs r3, r5, #6 69b2: 6832 ldr r2, [r6, #0] 69b4: 18d1 adds r1, r2, r3 69b6: f89d 000e ldrb.w r0, [sp, #14] 69ba: 54d0 strb r0, [r2, r3] 69bc: f89d 300f ldrb.w r3, [sp, #15] 69c0: 704b strb r3, [r1, #1] 69c2: 1f2b subs r3, r5, #4 _lv_memcpy_small(style->map + size - sizeof(lv_style_int_t) - end_mark_size, &value, sizeof(lv_style_int_t)); 69c4: 6832 ldr r2, [r6, #0] 69c6: 18d1 adds r1, r2, r3 69c8: f89d 000c ldrb.w r0, [sp, #12] 69cc: 54d0 strb r0, [r2, r3] 69ce: f89d 300d ldrb.w r3, [sp, #13] 69d2: 704b strb r3, [r1, #1] 69d4: 3d02 subs r5, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 69d6: 6833 ldr r3, [r6, #0] 69d8: 195a adds r2, r3, r5 69da: f89d 1016 ldrb.w r1, [sp, #22] 69de: 5559 strb r1, [r3, r5] 69e0: f89d 3017 ldrb.w r3, [sp, #23] 69e4: 7053 strb r3, [r2, #1] 69e6: e7cb b.n 6980 <_lv_style_set_int+0xa0> LV_ASSERT_MEM(style->map); 69e8: 4b09 ldr r3, [pc, #36] ; (6a10 <_lv_style_set_int+0x130>) 69ea: 9300 str r3, [sp, #0] 69ec: f44f 72c3 mov.w r2, #390 ; 0x186 69f0: 4908 ldr r1, [pc, #32] ; (6a14 <_lv_style_set_int+0x134>) 69f2: 2003 movs r0, #3 69f4: 4c08 ldr r4, [pc, #32] ; (6a18 <_lv_style_set_int+0x138>) 69f6: 47a0 blx r4 69f8: 6832 ldr r2, [r6, #0] 69fa: 2300 movs r3, #0 69fc: 4807 ldr r0, [pc, #28] ; (6a1c <_lv_style_set_int+0x13c>) 69fe: 4908 ldr r1, [pc, #32] ; (6a20 <_lv_style_set_int+0x140>) 6a00: 4788 blx r1 6a02: e7fe b.n 6a02 <_lv_style_set_int+0x122> 6a04: 00006779 .word 0x00006779 6a08: 00012899 .word 0x00012899 6a0c: 000022b1 .word 0x000022b1 6a10: 00024acc .word 0x00024acc 6a14: 00024b3c .word 0x00024b3c 6a18: 0001225d .word 0x0001225d 6a1c: 00023fd8 .word 0x00023fd8 6a20: 000022b9 .word 0x000022b9 00006a24 <_lv_style_set_color>: { 6a24: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 6a28: b086 sub sp, #24 6a2a: f8ad 200c strh.w r2, [sp, #12] 6a2e: f8ad 100e strh.w r1, [sp, #14] if(style->map == NULL) return -1; 6a32: 6804 ldr r4, [r0, #0] 6a34: 2c00 cmp r4, #0 6a36: d048 beq.n 6aca <_lv_style_set_color+0xa6> uint8_t id_to_find = prop & 0xFF; 6a38: b2cf uxtb r7, r1 attr.full = (prop >> 8) & 0xFF; 6a3a: 0a0d lsrs r5, r1, #8 6a3c: 46ae mov lr, r5 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6a3e: 7823 ldrb r3, [r4, #0] 6a40: 2bff cmp r3, #255 ; 0xff 6a42: d02c beq.n 6a9e <_lv_style_set_color+0x7a> 6a44: f04f 31ff mov.w r1, #4294967295 6a48: 4688 mov r8, r1 6a4a: 2200 movs r2, #0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6a4c: f3ce 0e06 ubfx lr, lr, #0, #7 6a50: e018 b.n 6a84 <_lv_style_set_color+0x60> attr_i.full = style->map[i + 1]; 6a52: 18a6 adds r6, r4, r2 6a54: 7876 ldrb r6, [r6, #1] if(attr_i.bits.state == attr.bits.state) { 6a56: ea85 0c06 eor.w ip, r5, r6 6a5a: f01c 0f7f tst.w ip, #127 ; 0x7f 6a5e: d021 beq.n 6aa4 <_lv_style_set_color+0x80> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6a60: f006 067f and.w r6, r6, #127 ; 0x7f 6a64: ea36 0c0e bics.w ip, r6, lr 6a68: d10e bne.n 6a88 <_lv_style_set_color+0x64> if(attr_i.bits.state > weight) { 6a6a: 4546 cmp r6, r8 weight = attr_i.bits.state; 6a6c: bfc4 itt gt 6a6e: fa0f f886 sxthgt.w r8, r6 id_guess = i; 6a72: b211 sxthgt r1, r2 6a74: e008 b.n 6a88 <_lv_style_set_color+0x64> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 6a76: 2b0b cmp r3, #11 6a78: dc0c bgt.n 6a94 <_lv_style_set_color+0x70> 6a7a: 3202 adds r2, #2 i += sizeof(lv_style_property_t); 6a7c: 3202 adds r2, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6a7e: 5ca3 ldrb r3, [r4, r2] 6a80: 2bff cmp r3, #255 ; 0xff 6a82: d00e beq.n 6aa2 <_lv_style_set_color+0x7e> if(style->map[i] == id_to_find) { 6a84: 429f cmp r7, r3 6a86: d0e4 beq.n 6a52 <_lv_style_set_color+0x2e> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6a88: f003 030f and.w r3, r3, #15 6a8c: 2b08 cmp r3, #8 6a8e: dcf2 bgt.n 6a76 <_lv_style_set_color+0x52> 6a90: 3202 adds r2, #2 6a92: e7f3 b.n 6a7c <_lv_style_set_color+0x58> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6a94: 2b0d cmp r3, #13 6a96: bfd4 ite le 6a98: 3201 addle r2, #1 else i += sizeof(const void *); 6a9a: 3204 addgt r2, #4 6a9c: e7ee b.n 6a7c <_lv_style_set_color+0x58> int16_t id_guess = -1; 6a9e: f04f 31ff mov.w r1, #4294967295 return id_guess; 6aa2: 460a mov r2, r1 if(id >= 0) { 6aa4: 2a00 cmp r2, #0 6aa6: db10 blt.n 6aca <_lv_style_set_color+0xa6> attr_found.full = *(style->map + id + 1); 6aa8: 18a3 adds r3, r4, r2 if(attr_found.bits.state == attr_goal.bits.state) { 6aaa: 785b ldrb r3, [r3, #1] 6aac: 405d eors r5, r3 6aae: f015 0f7f tst.w r5, #127 ; 0x7f 6ab2: d10a bne.n 6aca <_lv_style_set_color+0xa6> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &color, sizeof(lv_color_t)); 6ab4: 3202 adds r2, #2 6ab6: 18a3 adds r3, r4, r2 6ab8: f89d 100c ldrb.w r1, [sp, #12] 6abc: 54a1 strb r1, [r4, r2] 6abe: f89d 200d ldrb.w r2, [sp, #13] 6ac2: 705a strb r2, [r3, #1] } 6ac4: b006 add sp, #24 6ac6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 6aca: 4606 mov r6, r0 lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 6acc: 23ff movs r3, #255 ; 0xff 6ace: f8ad 3016 strh.w r3, [sp, #22] uint16_t size = _lv_style_get_mem_size(style); 6ad2: 4b1d ldr r3, [pc, #116] ; (6b48 <_lv_style_set_color+0x124>) 6ad4: 4798 blx r3 if(size == 0) size += end_mark_size; 6ad6: 2800 cmp r0, #0 6ad8: bf08 it eq 6ada: 2002 moveq r0, #2 size += sizeof(lv_style_property_t) + sizeof(lv_color_t); 6adc: 1d05 adds r5, r0, #4 style->map = lv_mem_realloc(style->map, size); 6ade: b2ad uxth r5, r5 6ae0: 4629 mov r1, r5 6ae2: 4620 mov r0, r4 6ae4: 4b19 ldr r3, [pc, #100] ; (6b4c <_lv_style_set_color+0x128>) 6ae6: 4798 blx r3 6ae8: 6030 str r0, [r6, #0] LV_ASSERT_MEM(style->map); 6aea: 4b19 ldr r3, [pc, #100] ; (6b50 <_lv_style_set_color+0x12c>) 6aec: 4798 blx r3 6aee: b1e8 cbz r0, 6b2c <_lv_style_set_color+0x108> if(style == NULL) return; 6af0: 2e00 cmp r6, #0 6af2: d0e7 beq.n 6ac4 <_lv_style_set_color+0xa0> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 6af4: 1fab subs r3, r5, #6 6af6: 6832 ldr r2, [r6, #0] 6af8: 18d1 adds r1, r2, r3 6afa: f89d 000e ldrb.w r0, [sp, #14] 6afe: 54d0 strb r0, [r2, r3] 6b00: f89d 300f ldrb.w r3, [sp, #15] 6b04: 704b strb r3, [r1, #1] 6b06: 1f2b subs r3, r5, #4 _lv_memcpy_small(style->map + size - sizeof(lv_color_t) - end_mark_size, &color, sizeof(lv_color_t)); 6b08: 6832 ldr r2, [r6, #0] 6b0a: 18d1 adds r1, r2, r3 6b0c: f89d 000c ldrb.w r0, [sp, #12] 6b10: 54d0 strb r0, [r2, r3] 6b12: f89d 300d ldrb.w r3, [sp, #13] 6b16: 704b strb r3, [r1, #1] 6b18: 3d02 subs r5, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 6b1a: 6833 ldr r3, [r6, #0] 6b1c: 195a adds r2, r3, r5 6b1e: f89d 1016 ldrb.w r1, [sp, #22] 6b22: 5559 strb r1, [r3, r5] 6b24: f89d 3017 ldrb.w r3, [sp, #23] 6b28: 7053 strb r3, [r2, #1] 6b2a: e7cb b.n 6ac4 <_lv_style_set_color+0xa0> LV_ASSERT_MEM(style->map); 6b2c: 4b09 ldr r3, [pc, #36] ; (6b54 <_lv_style_set_color+0x130>) 6b2e: 9300 str r3, [sp, #0] 6b30: f240 12b5 movw r2, #437 ; 0x1b5 6b34: 4908 ldr r1, [pc, #32] ; (6b58 <_lv_style_set_color+0x134>) 6b36: 2003 movs r0, #3 6b38: 4c08 ldr r4, [pc, #32] ; (6b5c <_lv_style_set_color+0x138>) 6b3a: 47a0 blx r4 6b3c: 6832 ldr r2, [r6, #0] 6b3e: 2300 movs r3, #0 6b40: 4807 ldr r0, [pc, #28] ; (6b60 <_lv_style_set_color+0x13c>) 6b42: 4908 ldr r1, [pc, #32] ; (6b64 <_lv_style_set_color+0x140>) 6b44: 4788 blx r1 6b46: e7fe b.n 6b46 <_lv_style_set_color+0x122> 6b48: 00006779 .word 0x00006779 6b4c: 00012899 .word 0x00012899 6b50: 000022b1 .word 0x000022b1 6b54: 00024ae0 .word 0x00024ae0 6b58: 00024b3c .word 0x00024b3c 6b5c: 0001225d .word 0x0001225d 6b60: 00023fd8 .word 0x00023fd8 6b64: 000022b9 .word 0x000022b9 00006b68 <_lv_style_set_opa>: { 6b68: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 6b6c: b087 sub sp, #28 6b6e: f8ad 100e strh.w r1, [sp, #14] if(style->map == NULL) return -1; 6b72: 6804 ldr r4, [r0, #0] 6b74: 2c00 cmp r4, #0 6b76: d043 beq.n 6c00 <_lv_style_set_opa+0x98> uint8_t id_to_find = prop & 0xFF; 6b78: fa5f fe81 uxtb.w lr, r1 attr.full = (prop >> 8) & 0xFF; 6b7c: 0a0d lsrs r5, r1, #8 6b7e: 46ac mov ip, r5 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6b80: 7823 ldrb r3, [r4, #0] 6b82: 2bff cmp r3, #255 ; 0xff 6b84: d02c beq.n 6be0 <_lv_style_set_opa+0x78> 6b86: f04f 37ff mov.w r7, #4294967295 6b8a: 46b8 mov r8, r7 6b8c: 2100 movs r1, #0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6b8e: f3cc 0c06 ubfx ip, ip, #0, #7 6b92: e018 b.n 6bc6 <_lv_style_set_opa+0x5e> attr_i.full = style->map[i + 1]; 6b94: 1866 adds r6, r4, r1 6b96: 7876 ldrb r6, [r6, #1] if(attr_i.bits.state == attr.bits.state) { 6b98: ea85 0906 eor.w r9, r5, r6 6b9c: f019 0f7f tst.w r9, #127 ; 0x7f 6ba0: d021 beq.n 6be6 <_lv_style_set_opa+0x7e> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6ba2: f006 067f and.w r6, r6, #127 ; 0x7f 6ba6: ea36 090c bics.w r9, r6, ip 6baa: d10e bne.n 6bca <_lv_style_set_opa+0x62> if(attr_i.bits.state > weight) { 6bac: 4546 cmp r6, r8 weight = attr_i.bits.state; 6bae: bfc4 itt gt 6bb0: fa0f f886 sxthgt.w r8, r6 id_guess = i; 6bb4: b20f sxthgt r7, r1 6bb6: e008 b.n 6bca <_lv_style_set_opa+0x62> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 6bb8: 2b0b cmp r3, #11 6bba: dc0c bgt.n 6bd6 <_lv_style_set_opa+0x6e> 6bbc: 3102 adds r1, #2 i += sizeof(lv_style_property_t); 6bbe: 3102 adds r1, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6bc0: 5c63 ldrb r3, [r4, r1] 6bc2: 2bff cmp r3, #255 ; 0xff 6bc4: d00e beq.n 6be4 <_lv_style_set_opa+0x7c> if(style->map[i] == id_to_find) { 6bc6: 459e cmp lr, r3 6bc8: d0e4 beq.n 6b94 <_lv_style_set_opa+0x2c> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6bca: f003 030f and.w r3, r3, #15 6bce: 2b08 cmp r3, #8 6bd0: dcf2 bgt.n 6bb8 <_lv_style_set_opa+0x50> 6bd2: 3102 adds r1, #2 6bd4: e7f3 b.n 6bbe <_lv_style_set_opa+0x56> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6bd6: 2b0d cmp r3, #13 6bd8: bfd4 ite le 6bda: 3101 addle r1, #1 else i += sizeof(const void *); 6bdc: 3104 addgt r1, #4 6bde: e7ee b.n 6bbe <_lv_style_set_opa+0x56> int16_t id_guess = -1; 6be0: f04f 37ff mov.w r7, #4294967295 return id_guess; 6be4: 4639 mov r1, r7 if(id >= 0) { 6be6: 2900 cmp r1, #0 6be8: db0a blt.n 6c00 <_lv_style_set_opa+0x98> attr_found.full = *(style->map + id + 1); 6bea: 1863 adds r3, r4, r1 if(attr_found.bits.state == attr_goal.bits.state) { 6bec: 785b ldrb r3, [r3, #1] 6bee: 405d eors r5, r3 6bf0: f015 0f7f tst.w r5, #127 ; 0x7f 6bf4: d104 bne.n 6c00 <_lv_style_set_opa+0x98> 6bf6: 4421 add r1, r4 6bf8: 708a strb r2, [r1, #2] } 6bfa: b007 add sp, #28 6bfc: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} 6c00: 4617 mov r7, r2 6c02: 4606 mov r6, r0 lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 6c04: 23ff movs r3, #255 ; 0xff 6c06: f8ad 3016 strh.w r3, [sp, #22] uint16_t size = _lv_style_get_mem_size(style); 6c0a: 4b1b ldr r3, [pc, #108] ; (6c78 <_lv_style_set_opa+0x110>) 6c0c: 4798 blx r3 if(size == 0) size += end_mark_size; 6c0e: 2800 cmp r0, #0 6c10: bf08 it eq 6c12: 2002 moveq r0, #2 size += sizeof(lv_style_property_t) + sizeof(lv_opa_t); 6c14: 1cc5 adds r5, r0, #3 style->map = lv_mem_realloc(style->map, size); 6c16: b2ad uxth r5, r5 6c18: 4629 mov r1, r5 6c1a: 4620 mov r0, r4 6c1c: 4b17 ldr r3, [pc, #92] ; (6c7c <_lv_style_set_opa+0x114>) 6c1e: 4798 blx r3 6c20: 6030 str r0, [r6, #0] LV_ASSERT_MEM(style->map); 6c22: 4b17 ldr r3, [pc, #92] ; (6c80 <_lv_style_set_opa+0x118>) 6c24: 4798 blx r3 6c26: b1c0 cbz r0, 6c5a <_lv_style_set_opa+0xf2> if(style == NULL) return; 6c28: 2e00 cmp r6, #0 6c2a: d0e6 beq.n 6bfa <_lv_style_set_opa+0x92> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 6c2c: 1f6b subs r3, r5, #5 6c2e: 6832 ldr r2, [r6, #0] 6c30: 18d1 adds r1, r2, r3 6c32: f89d 000e ldrb.w r0, [sp, #14] 6c36: 54d0 strb r0, [r2, r3] 6c38: f89d 300f ldrb.w r3, [sp, #15] 6c3c: 704b strb r3, [r1, #1] 6c3e: 6833 ldr r3, [r6, #0] 6c40: 442b add r3, r5 6c42: f803 7c03 strb.w r7, [r3, #-3] _lv_memcpy_small(style->map + size - sizeof(lv_opa_t) - end_mark_size, &opa, sizeof(lv_opa_t)); 6c46: 3d02 subs r5, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 6c48: 6833 ldr r3, [r6, #0] 6c4a: 195a adds r2, r3, r5 6c4c: f89d 1016 ldrb.w r1, [sp, #22] 6c50: 5559 strb r1, [r3, r5] 6c52: f89d 3017 ldrb.w r3, [sp, #23] 6c56: 7053 strb r3, [r2, #1] 6c58: e7cf b.n 6bfa <_lv_style_set_opa+0x92> LV_ASSERT_MEM(style->map); 6c5a: 4b0a ldr r3, [pc, #40] ; (6c84 <_lv_style_set_opa+0x11c>) 6c5c: 9300 str r3, [sp, #0] 6c5e: f44f 72f2 mov.w r2, #484 ; 0x1e4 6c62: 4909 ldr r1, [pc, #36] ; (6c88 <_lv_style_set_opa+0x120>) 6c64: 2003 movs r0, #3 6c66: 4c09 ldr r4, [pc, #36] ; (6c8c <_lv_style_set_opa+0x124>) 6c68: 47a0 blx r4 6c6a: 6832 ldr r2, [r6, #0] 6c6c: 2300 movs r3, #0 6c6e: 4808 ldr r0, [pc, #32] ; (6c90 <_lv_style_set_opa+0x128>) 6c70: 4908 ldr r1, [pc, #32] ; (6c94 <_lv_style_set_opa+0x12c>) 6c72: 4788 blx r1 6c74: e7fe b.n 6c74 <_lv_style_set_opa+0x10c> 6c76: bf00 nop 6c78: 00006779 .word 0x00006779 6c7c: 00012899 .word 0x00012899 6c80: 000022b1 .word 0x000022b1 6c84: 00024af4 .word 0x00024af4 6c88: 00024b3c .word 0x00024b3c 6c8c: 0001225d .word 0x0001225d 6c90: 00023fd8 .word 0x00023fd8 6c94: 000022b9 .word 0x000022b9 00006c98 <_lv_style_set_ptr>: { 6c98: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 6c9c: b086 sub sp, #24 6c9e: 9202 str r2, [sp, #8] 6ca0: f8ad 100e strh.w r1, [sp, #14] if(style->map == NULL) return -1; 6ca4: 6804 ldr r4, [r0, #0] 6ca6: 2c00 cmp r4, #0 6ca8: d04e beq.n 6d48 <_lv_style_set_ptr+0xb0> uint8_t id_to_find = prop & 0xFF; 6caa: b2cf uxtb r7, r1 attr.full = (prop >> 8) & 0xFF; 6cac: 0a0d lsrs r5, r1, #8 6cae: 46ae mov lr, r5 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6cb0: 7823 ldrb r3, [r4, #0] 6cb2: 2bff cmp r3, #255 ; 0xff 6cb4: d02c beq.n 6d10 <_lv_style_set_ptr+0x78> 6cb6: f04f 31ff mov.w r1, #4294967295 6cba: 4688 mov r8, r1 6cbc: 2200 movs r2, #0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6cbe: f3ce 0e06 ubfx lr, lr, #0, #7 6cc2: e018 b.n 6cf6 <_lv_style_set_ptr+0x5e> attr_i.full = style->map[i + 1]; 6cc4: 18a6 adds r6, r4, r2 6cc6: 7876 ldrb r6, [r6, #1] if(attr_i.bits.state == attr.bits.state) { 6cc8: ea85 0c06 eor.w ip, r5, r6 6ccc: f01c 0f7f tst.w ip, #127 ; 0x7f 6cd0: d021 beq.n 6d16 <_lv_style_set_ptr+0x7e> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6cd2: f006 067f and.w r6, r6, #127 ; 0x7f 6cd6: ea36 0c0e bics.w ip, r6, lr 6cda: d10e bne.n 6cfa <_lv_style_set_ptr+0x62> if(attr_i.bits.state > weight) { 6cdc: 4546 cmp r6, r8 weight = attr_i.bits.state; 6cde: bfc4 itt gt 6ce0: fa0f f886 sxthgt.w r8, r6 id_guess = i; 6ce4: b211 sxthgt r1, r2 6ce6: e008 b.n 6cfa <_lv_style_set_ptr+0x62> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 6ce8: 2b0b cmp r3, #11 6cea: dc0c bgt.n 6d06 <_lv_style_set_ptr+0x6e> 6cec: 3202 adds r2, #2 i += sizeof(lv_style_property_t); 6cee: 3202 adds r2, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6cf0: 5ca3 ldrb r3, [r4, r2] 6cf2: 2bff cmp r3, #255 ; 0xff 6cf4: d00e beq.n 6d14 <_lv_style_set_ptr+0x7c> if(style->map[i] == id_to_find) { 6cf6: 429f cmp r7, r3 6cf8: d0e4 beq.n 6cc4 <_lv_style_set_ptr+0x2c> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6cfa: f003 030f and.w r3, r3, #15 6cfe: 2b08 cmp r3, #8 6d00: dcf2 bgt.n 6ce8 <_lv_style_set_ptr+0x50> 6d02: 3202 adds r2, #2 6d04: e7f3 b.n 6cee <_lv_style_set_ptr+0x56> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6d06: 2b0d cmp r3, #13 6d08: bfd4 ite le 6d0a: 3201 addle r2, #1 else i += sizeof(const void *); 6d0c: 3204 addgt r2, #4 6d0e: e7ee b.n 6cee <_lv_style_set_ptr+0x56> int16_t id_guess = -1; 6d10: f04f 31ff mov.w r1, #4294967295 return id_guess; 6d14: 460a mov r2, r1 if(id >= 0) { 6d16: 2a00 cmp r2, #0 6d18: db16 blt.n 6d48 <_lv_style_set_ptr+0xb0> attr_found.full = *(style->map + id + 1); 6d1a: 18a3 adds r3, r4, r2 if(attr_found.bits.state == attr_goal.bits.state) { 6d1c: 785b ldrb r3, [r3, #1] 6d1e: 405d eors r5, r3 6d20: f015 0f7f tst.w r5, #127 ; 0x7f 6d24: d110 bne.n 6d48 <_lv_style_set_ptr+0xb0> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &p, sizeof(const void *)); 6d26: 3202 adds r2, #2 6d28: 18a3 adds r3, r4, r2 6d2a: f89d 1008 ldrb.w r1, [sp, #8] 6d2e: 54a1 strb r1, [r4, r2] 6d30: f89d 2009 ldrb.w r2, [sp, #9] 6d34: 705a strb r2, [r3, #1] 6d36: f89d 200a ldrb.w r2, [sp, #10] 6d3a: 709a strb r2, [r3, #2] 6d3c: f89d 200b ldrb.w r2, [sp, #11] 6d40: 70da strb r2, [r3, #3] } 6d42: b006 add sp, #24 6d44: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 6d48: 4606 mov r6, r0 lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 6d4a: 23ff movs r3, #255 ; 0xff 6d4c: f8ad 3016 strh.w r3, [sp, #22] uint16_t size = _lv_style_get_mem_size(style); 6d50: 4b20 ldr r3, [pc, #128] ; (6dd4 <_lv_style_set_ptr+0x13c>) 6d52: 4798 blx r3 if(size == 0) size += end_mark_size; 6d54: 2800 cmp r0, #0 6d56: bf08 it eq 6d58: 2002 moveq r0, #2 size += sizeof(lv_style_property_t) + sizeof(const void *); 6d5a: 1d85 adds r5, r0, #6 style->map = lv_mem_realloc(style->map, size); 6d5c: b2ad uxth r5, r5 6d5e: 4629 mov r1, r5 6d60: 4620 mov r0, r4 6d62: 4b1d ldr r3, [pc, #116] ; (6dd8 <_lv_style_set_ptr+0x140>) 6d64: 4798 blx r3 6d66: 6030 str r0, [r6, #0] LV_ASSERT_MEM(style->map); 6d68: 4b1c ldr r3, [pc, #112] ; (6ddc <_lv_style_set_ptr+0x144>) 6d6a: 4798 blx r3 6d6c: b320 cbz r0, 6db8 <_lv_style_set_ptr+0x120> if(style == NULL) return; 6d6e: 2e00 cmp r6, #0 6d70: d0e7 beq.n 6d42 <_lv_style_set_ptr+0xaa> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 6d72: f1a5 0308 sub.w r3, r5, #8 6d76: 6832 ldr r2, [r6, #0] 6d78: 18d1 adds r1, r2, r3 6d7a: f89d 000e ldrb.w r0, [sp, #14] 6d7e: 54d0 strb r0, [r2, r3] 6d80: f89d 300f ldrb.w r3, [sp, #15] 6d84: 704b strb r3, [r1, #1] 6d86: 1faa subs r2, r5, #6 _lv_memcpy_small(style->map + size - sizeof(const void *) - end_mark_size, &p, sizeof(const void *)); 6d88: 6831 ldr r1, [r6, #0] 6d8a: 188b adds r3, r1, r2 6d8c: f89d 0008 ldrb.w r0, [sp, #8] 6d90: 5488 strb r0, [r1, r2] 6d92: f89d 2009 ldrb.w r2, [sp, #9] 6d96: 705a strb r2, [r3, #1] 6d98: f89d 200a ldrb.w r2, [sp, #10] 6d9c: 709a strb r2, [r3, #2] 6d9e: f89d 200b ldrb.w r2, [sp, #11] 6da2: 70da strb r2, [r3, #3] 6da4: 3d02 subs r5, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 6da6: 6833 ldr r3, [r6, #0] 6da8: 195a adds r2, r3, r5 6daa: f89d 1016 ldrb.w r1, [sp, #22] 6dae: 5559 strb r1, [r3, r5] 6db0: f89d 3017 ldrb.w r3, [sp, #23] 6db4: 7053 strb r3, [r2, #1] 6db6: e7c4 b.n 6d42 <_lv_style_set_ptr+0xaa> LV_ASSERT_MEM(style->map); 6db8: 4b09 ldr r3, [pc, #36] ; (6de0 <_lv_style_set_ptr+0x148>) 6dba: 9300 str r3, [sp, #0] 6dbc: f240 2213 movw r2, #531 ; 0x213 6dc0: 4908 ldr r1, [pc, #32] ; (6de4 <_lv_style_set_ptr+0x14c>) 6dc2: 2003 movs r0, #3 6dc4: 4c08 ldr r4, [pc, #32] ; (6de8 <_lv_style_set_ptr+0x150>) 6dc6: 47a0 blx r4 6dc8: 6832 ldr r2, [r6, #0] 6dca: 2300 movs r3, #0 6dcc: 4807 ldr r0, [pc, #28] ; (6dec <_lv_style_set_ptr+0x154>) 6dce: 4908 ldr r1, [pc, #32] ; (6df0 <_lv_style_set_ptr+0x158>) 6dd0: 4788 blx r1 6dd2: e7fe b.n 6dd2 <_lv_style_set_ptr+0x13a> 6dd4: 00006779 .word 0x00006779 6dd8: 00012899 .word 0x00012899 6ddc: 000022b1 .word 0x000022b1 6de0: 00024b08 .word 0x00024b08 6de4: 00024b3c .word 0x00024b3c 6de8: 0001225d .word 0x0001225d 6dec: 00023fd8 .word 0x00023fd8 6df0: 000022b9 .word 0x000022b9 00006df4 <_lv_style_get_int>: if(style == NULL) return -1; 6df4: 2800 cmp r0, #0 6df6: d04d beq.n 6e94 <_lv_style_get_int+0xa0> { 6df8: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 6dfc: 4684 mov ip, r0 if(style->map == NULL) return -1; 6dfe: 6804 ldr r4, [r0, #0] 6e00: 2c00 cmp r4, #0 6e02: d04a beq.n 6e9a <_lv_style_get_int+0xa6> uint8_t id_to_find = prop & 0xFF; 6e04: b2ce uxtb r6, r1 attr.full = (prop >> 8) & 0xFF; 6e06: 0a09 lsrs r1, r1, #8 6e08: 468e mov lr, r1 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6e0a: 7823 ldrb r3, [r4, #0] 6e0c: 2bff cmp r3, #255 ; 0xff 6e0e: d03e beq.n 6e8e <_lv_style_get_int+0x9a> 6e10: f04f 37ff mov.w r7, #4294967295 6e14: 46b8 mov r8, r7 6e16: 2000 movs r0, #0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6e18: f3ce 0e06 ubfx lr, lr, #0, #7 6e1c: e02a b.n 6e74 <_lv_style_get_int+0x80> attr_i.full = style->map[i + 1]; 6e1e: 1825 adds r5, r4, r0 6e20: 786d ldrb r5, [r5, #1] if(attr_i.bits.state == attr.bits.state) { 6e22: ea81 0905 eor.w r9, r1, r5 6e26: f019 0f7f tst.w r9, #127 ; 0x7f 6e2a: d00a beq.n 6e42 <_lv_style_get_int+0x4e> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6e2c: f005 057f and.w r5, r5, #127 ; 0x7f 6e30: ea35 090e bics.w r9, r5, lr 6e34: d120 bne.n 6e78 <_lv_style_get_int+0x84> if(attr_i.bits.state > weight) { 6e36: 4545 cmp r5, r8 weight = attr_i.bits.state; 6e38: bfc4 itt gt 6e3a: fa0f f885 sxthgt.w r8, r5 id_guess = i; 6e3e: b207 sxthgt r7, r0 6e40: e01a b.n 6e78 <_lv_style_get_int+0x84> return i; 6e42: 4607 mov r7, r0 if(id < 0) { 6e44: 2f00 cmp r7, #0 6e46: db2c blt.n 6ea2 <_lv_style_get_int+0xae> _lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(lv_style_int_t)); 6e48: 1cbb adds r3, r7, #2 6e4a: 18e0 adds r0, r4, r3 6e4c: 5ce3 ldrb r3, [r4, r3] 6e4e: 7013 strb r3, [r2, #0] 6e50: 7843 ldrb r3, [r0, #1] 6e52: 7053 strb r3, [r2, #1] attr_act.full = style->map[id + 1]; 6e54: f8dc 0000 ldr.w r0, [ip] 6e58: 4407 add r7, r0 6e5a: 7878 ldrb r0, [r7, #1] return attr_act.bits.state & attr_goal.bits.state; 6e5c: f3c1 0106 ubfx r1, r1, #0, #7 6e60: 4008 ands r0, r1 6e62: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 6e66: 2b0b cmp r3, #11 6e68: dc0c bgt.n 6e84 <_lv_style_get_int+0x90> 6e6a: 3002 adds r0, #2 i += sizeof(lv_style_property_t); 6e6c: 3002 adds r0, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6e6e: 5c23 ldrb r3, [r4, r0] 6e70: 2bff cmp r3, #255 ; 0xff 6e72: d0e7 beq.n 6e44 <_lv_style_get_int+0x50> if(style->map[i] == id_to_find) { 6e74: 429e cmp r6, r3 6e76: d0d2 beq.n 6e1e <_lv_style_get_int+0x2a> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6e78: f003 030f and.w r3, r3, #15 6e7c: 2b08 cmp r3, #8 6e7e: dcf2 bgt.n 6e66 <_lv_style_get_int+0x72> 6e80: 3002 adds r0, #2 6e82: e7f3 b.n 6e6c <_lv_style_get_int+0x78> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6e84: 2b0d cmp r3, #13 6e86: bfd4 ite le 6e88: 3001 addle r0, #1 else i += sizeof(const void *); 6e8a: 3004 addgt r0, #4 6e8c: e7ee b.n 6e6c <_lv_style_get_int+0x78> int16_t id_guess = -1; 6e8e: f04f 37ff mov.w r7, #4294967295 6e92: e7d7 b.n 6e44 <_lv_style_get_int+0x50> if(style == NULL) return -1; 6e94: f04f 30ff mov.w r0, #4294967295 6e98: 4770 bx lr if(style->map == NULL) return -1; 6e9a: f04f 30ff mov.w r0, #4294967295 6e9e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} return -1; 6ea2: f04f 30ff mov.w r0, #4294967295 } 6ea6: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} 00006eaa <_lv_style_get_opa>: if(style == NULL) return -1; 6eaa: 2800 cmp r0, #0 6eac: d04a beq.n 6f44 <_lv_style_get_opa+0x9a> { 6eae: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 6eb2: 4686 mov lr, r0 if(style->map == NULL) return -1; 6eb4: 6804 ldr r4, [r0, #0] 6eb6: 2c00 cmp r4, #0 6eb8: d047 beq.n 6f4a <_lv_style_get_opa+0xa0> uint8_t id_to_find = prop & 0xFF; 6eba: b2ce uxtb r6, r1 attr.full = (prop >> 8) & 0xFF; 6ebc: 0a09 lsrs r1, r1, #8 6ebe: 468c mov ip, r1 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6ec0: 7823 ldrb r3, [r4, #0] 6ec2: 2bff cmp r3, #255 ; 0xff 6ec4: d03b beq.n 6f3e <_lv_style_get_opa+0x94> 6ec6: f04f 37ff mov.w r7, #4294967295 6eca: 46b8 mov r8, r7 6ecc: 2000 movs r0, #0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6ece: f3cc 0c06 ubfx ip, ip, #0, #7 6ed2: e027 b.n 6f24 <_lv_style_get_opa+0x7a> attr_i.full = style->map[i + 1]; 6ed4: 1825 adds r5, r4, r0 6ed6: 786d ldrb r5, [r5, #1] if(attr_i.bits.state == attr.bits.state) { 6ed8: ea81 0905 eor.w r9, r1, r5 6edc: f019 0f7f tst.w r9, #127 ; 0x7f 6ee0: d00a beq.n 6ef8 <_lv_style_get_opa+0x4e> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6ee2: f005 057f and.w r5, r5, #127 ; 0x7f 6ee6: ea35 090c bics.w r9, r5, ip 6eea: d11d bne.n 6f28 <_lv_style_get_opa+0x7e> if(attr_i.bits.state > weight) { 6eec: 4545 cmp r5, r8 weight = attr_i.bits.state; 6eee: bfc4 itt gt 6ef0: fa0f f885 sxthgt.w r8, r5 id_guess = i; 6ef4: b207 sxthgt r7, r0 6ef6: e017 b.n 6f28 <_lv_style_get_opa+0x7e> return i; 6ef8: 4607 mov r7, r0 if(id < 0) { 6efa: 2f00 cmp r7, #0 6efc: db29 blt.n 6f52 <_lv_style_get_opa+0xa8> 6efe: 443c add r4, r7 6f00: 78a3 ldrb r3, [r4, #2] 6f02: 7013 strb r3, [r2, #0] attr_act.full = style->map[id + 1]; 6f04: f8de 0000 ldr.w r0, [lr] 6f08: 4407 add r7, r0 6f0a: 7878 ldrb r0, [r7, #1] return attr_act.bits.state & attr_goal.bits.state; 6f0c: f3c1 0106 ubfx r1, r1, #0, #7 6f10: 4008 ands r0, r1 6f12: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 6f16: 2b0b cmp r3, #11 6f18: dc0c bgt.n 6f34 <_lv_style_get_opa+0x8a> 6f1a: 3002 adds r0, #2 i += sizeof(lv_style_property_t); 6f1c: 3002 adds r0, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6f1e: 5c23 ldrb r3, [r4, r0] 6f20: 2bff cmp r3, #255 ; 0xff 6f22: d0ea beq.n 6efa <_lv_style_get_opa+0x50> if(style->map[i] == id_to_find) { 6f24: 429e cmp r6, r3 6f26: d0d5 beq.n 6ed4 <_lv_style_get_opa+0x2a> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6f28: f003 030f and.w r3, r3, #15 6f2c: 2b08 cmp r3, #8 6f2e: dcf2 bgt.n 6f16 <_lv_style_get_opa+0x6c> 6f30: 3002 adds r0, #2 6f32: e7f3 b.n 6f1c <_lv_style_get_opa+0x72> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6f34: 2b0d cmp r3, #13 6f36: bfd4 ite le 6f38: 3001 addle r0, #1 else i += sizeof(const void *); 6f3a: 3004 addgt r0, #4 6f3c: e7ee b.n 6f1c <_lv_style_get_opa+0x72> int16_t id_guess = -1; 6f3e: f04f 37ff mov.w r7, #4294967295 6f42: e7da b.n 6efa <_lv_style_get_opa+0x50> if(style == NULL) return -1; 6f44: f04f 30ff mov.w r0, #4294967295 6f48: 4770 bx lr if(style->map == NULL) return -1; 6f4a: f04f 30ff mov.w r0, #4294967295 6f4e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} return -1; 6f52: f04f 30ff mov.w r0, #4294967295 } 6f56: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} 00006f5a <_lv_style_get_color>: if(style == NULL) return -1; 6f5a: 2800 cmp r0, #0 6f5c: d04d beq.n 6ffa <_lv_style_get_color+0xa0> { 6f5e: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 6f62: 4684 mov ip, r0 if(style->map == NULL) return -1; 6f64: 6804 ldr r4, [r0, #0] 6f66: 2c00 cmp r4, #0 6f68: d04a beq.n 7000 <_lv_style_get_color+0xa6> uint8_t id_to_find = prop & 0xFF; 6f6a: b2ce uxtb r6, r1 attr.full = (prop >> 8) & 0xFF; 6f6c: 0a09 lsrs r1, r1, #8 6f6e: 468e mov lr, r1 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6f70: 7823 ldrb r3, [r4, #0] 6f72: 2bff cmp r3, #255 ; 0xff 6f74: d03e beq.n 6ff4 <_lv_style_get_color+0x9a> 6f76: f04f 37ff mov.w r7, #4294967295 6f7a: 46b8 mov r8, r7 6f7c: 2000 movs r0, #0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6f7e: f3ce 0e06 ubfx lr, lr, #0, #7 6f82: e02a b.n 6fda <_lv_style_get_color+0x80> attr_i.full = style->map[i + 1]; 6f84: 1825 adds r5, r4, r0 6f86: 786d ldrb r5, [r5, #1] if(attr_i.bits.state == attr.bits.state) { 6f88: ea81 0905 eor.w r9, r1, r5 6f8c: f019 0f7f tst.w r9, #127 ; 0x7f 6f90: d00a beq.n 6fa8 <_lv_style_get_color+0x4e> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6f92: f005 057f and.w r5, r5, #127 ; 0x7f 6f96: ea35 090e bics.w r9, r5, lr 6f9a: d120 bne.n 6fde <_lv_style_get_color+0x84> if(attr_i.bits.state > weight) { 6f9c: 4545 cmp r5, r8 weight = attr_i.bits.state; 6f9e: bfc4 itt gt 6fa0: fa0f f885 sxthgt.w r8, r5 id_guess = i; 6fa4: b207 sxthgt r7, r0 6fa6: e01a b.n 6fde <_lv_style_get_color+0x84> return i; 6fa8: 4607 mov r7, r0 if(id < 0) { 6faa: 2f00 cmp r7, #0 6fac: db2c blt.n 7008 <_lv_style_get_color+0xae> _lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(lv_color_t)); 6fae: 1cbb adds r3, r7, #2 6fb0: 18e0 adds r0, r4, r3 6fb2: 5ce3 ldrb r3, [r4, r3] 6fb4: 7013 strb r3, [r2, #0] 6fb6: 7843 ldrb r3, [r0, #1] 6fb8: 7053 strb r3, [r2, #1] attr_act.full = style->map[id + 1]; 6fba: f8dc 0000 ldr.w r0, [ip] 6fbe: 4407 add r7, r0 6fc0: 7878 ldrb r0, [r7, #1] return attr_act.bits.state & attr_goal.bits.state; 6fc2: f3c1 0106 ubfx r1, r1, #0, #7 6fc6: 4008 ands r0, r1 6fc8: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 6fcc: 2b0b cmp r3, #11 6fce: dc0c bgt.n 6fea <_lv_style_get_color+0x90> 6fd0: 3002 adds r0, #2 i += sizeof(lv_style_property_t); 6fd2: 3002 adds r0, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6fd4: 5c23 ldrb r3, [r4, r0] 6fd6: 2bff cmp r3, #255 ; 0xff 6fd8: d0e7 beq.n 6faa <_lv_style_get_color+0x50> if(style->map[i] == id_to_find) { 6fda: 429e cmp r6, r3 6fdc: d0d2 beq.n 6f84 <_lv_style_get_color+0x2a> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6fde: f003 030f and.w r3, r3, #15 6fe2: 2b08 cmp r3, #8 6fe4: dcf2 bgt.n 6fcc <_lv_style_get_color+0x72> 6fe6: 3002 adds r0, #2 6fe8: e7f3 b.n 6fd2 <_lv_style_get_color+0x78> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6fea: 2b0d cmp r3, #13 6fec: bfd4 ite le 6fee: 3001 addle r0, #1 else i += sizeof(const void *); 6ff0: 3004 addgt r0, #4 6ff2: e7ee b.n 6fd2 <_lv_style_get_color+0x78> int16_t id_guess = -1; 6ff4: f04f 37ff mov.w r7, #4294967295 6ff8: e7d7 b.n 6faa <_lv_style_get_color+0x50> if(style == NULL) return -1; 6ffa: f04f 30ff mov.w r0, #4294967295 6ffe: 4770 bx lr if(style->map == NULL) return -1; 7000: f04f 30ff mov.w r0, #4294967295 7004: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} return -1; 7008: f04f 30ff mov.w r0, #4294967295 } 700c: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} 00007010 <_lv_style_get_ptr>: if(style == NULL) return -1; 7010: 2800 cmp r0, #0 7012: d050 beq.n 70b6 <_lv_style_get_ptr+0xa6> { 7014: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 7018: 4607 mov r7, r0 if(style->map == NULL) return -1; 701a: 6804 ldr r4, [r0, #0] 701c: 2c00 cmp r4, #0 701e: d04d beq.n 70bc <_lv_style_get_ptr+0xac> uint8_t id_to_find = prop & 0xFF; 7020: b2ce uxtb r6, r1 attr.full = (prop >> 8) & 0xFF; 7022: 0a09 lsrs r1, r1, #8 7024: 468c mov ip, r1 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 7026: 7823 ldrb r3, [r4, #0] 7028: 2bff cmp r3, #255 ; 0xff 702a: d02d beq.n 7088 <_lv_style_get_ptr+0x78> 702c: f04f 3eff mov.w lr, #4294967295 7030: 46f0 mov r8, lr 7032: 2000 movs r0, #0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 7034: f3cc 0c06 ubfx ip, ip, #0, #7 7038: e019 b.n 706e <_lv_style_get_ptr+0x5e> attr_i.full = style->map[i + 1]; 703a: 1825 adds r5, r4, r0 703c: 786d ldrb r5, [r5, #1] if(attr_i.bits.state == attr.bits.state) { 703e: ea81 0905 eor.w r9, r1, r5 7042: f019 0f7f tst.w r9, #127 ; 0x7f 7046: d022 beq.n 708e <_lv_style_get_ptr+0x7e> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 7048: f005 057f and.w r5, r5, #127 ; 0x7f 704c: ea35 090c bics.w r9, r5, ip 7050: d10f bne.n 7072 <_lv_style_get_ptr+0x62> if(attr_i.bits.state > weight) { 7052: 4545 cmp r5, r8 weight = attr_i.bits.state; 7054: bfc4 itt gt 7056: fa0f f885 sxthgt.w r8, r5 id_guess = i; 705a: fa0f fe80 sxthgt.w lr, r0 705e: e008 b.n 7072 <_lv_style_get_ptr+0x62> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 7060: 2b0b cmp r3, #11 7062: dc0c bgt.n 707e <_lv_style_get_ptr+0x6e> 7064: 3002 adds r0, #2 i += sizeof(lv_style_property_t); 7066: 3002 adds r0, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 7068: 5c23 ldrb r3, [r4, r0] 706a: 2bff cmp r3, #255 ; 0xff 706c: d00e beq.n 708c <_lv_style_get_ptr+0x7c> if(style->map[i] == id_to_find) { 706e: 429e cmp r6, r3 7070: d0e3 beq.n 703a <_lv_style_get_ptr+0x2a> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 7072: f003 030f and.w r3, r3, #15 7076: 2b08 cmp r3, #8 7078: dcf2 bgt.n 7060 <_lv_style_get_ptr+0x50> 707a: 3002 adds r0, #2 707c: e7f3 b.n 7066 <_lv_style_get_ptr+0x56> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 707e: 2b0d cmp r3, #13 7080: bfd4 ite le 7082: 3001 addle r0, #1 else i += sizeof(const void *); 7084: 3004 addgt r0, #4 7086: e7ee b.n 7066 <_lv_style_get_ptr+0x56> int16_t id_guess = -1; 7088: f04f 3eff mov.w lr, #4294967295 return id_guess; 708c: 4670 mov r0, lr if(id < 0) { 708e: 2800 cmp r0, #0 7090: db18 blt.n 70c4 <_lv_style_get_ptr+0xb4> _lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(const void *)); 7092: 4605 mov r5, r0 7094: 3001 adds r0, #1 7096: 1823 adds r3, r4, r0 7098: 1d14 adds r4, r2, #4 709a: f813 0f01 ldrb.w r0, [r3, #1]! 709e: f802 0b01 strb.w r0, [r2], #1 while(len) { 70a2: 4294 cmp r4, r2 70a4: d1f9 bne.n 709a <_lv_style_get_ptr+0x8a> attr_act.full = style->map[id + 1]; 70a6: 683b ldr r3, [r7, #0] 70a8: 442b add r3, r5 70aa: 7858 ldrb r0, [r3, #1] return attr_act.bits.state & attr_goal.bits.state; 70ac: f3c1 0106 ubfx r1, r1, #0, #7 70b0: 4008 ands r0, r1 70b2: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} if(style == NULL) return -1; 70b6: f04f 30ff mov.w r0, #4294967295 70ba: 4770 bx lr if(style->map == NULL) return -1; 70bc: f04f 30ff mov.w r0, #4294967295 70c0: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} return -1; 70c4: f04f 30ff mov.w r0, #4294967295 } 70c8: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} 000070cc : if(!list->has_local) return NULL; 70cc: 7943 ldrb r3, [r0, #5] 70ce: f013 0f01 tst.w r3, #1 70d2: d006 beq.n 70e2 if(list->has_trans) return list->style_list[1]; 70d4: f013 0f02 tst.w r3, #2 70d8: 6803 ldr r3, [r0, #0] 70da: bf14 ite ne 70dc: 6858 ldrne r0, [r3, #4] else return list->style_list[0]; 70de: 6818 ldreq r0, [r3, #0] 70e0: 4770 bx lr if(!list->has_local) return NULL; 70e2: 2000 movs r0, #0 } 70e4: 4770 bx lr 000070e6 <_lv_style_list_get_transition_style>: if(!list->has_trans) return NULL; 70e6: 7943 ldrb r3, [r0, #5] 70e8: f013 0f02 tst.w r3, #2 return list->style_list[0]; 70ec: bf1a itte ne 70ee: 6803 ldrne r3, [r0, #0] 70f0: 6818 ldrne r0, [r3, #0] if(!list->has_trans) return NULL; 70f2: 2000 moveq r0, #0 } 70f4: 4770 bx lr ... 000070f8 <_lv_style_list_reset>: if(list == NULL) return; 70f8: 2800 cmp r0, #0 70fa: d02c beq.n 7156 <_lv_style_list_reset+0x5e> { 70fc: b538 push {r3, r4, r5, lr} 70fe: 4604 mov r4, r0 if(list->has_local) { 7100: 7943 ldrb r3, [r0, #5] 7102: f013 0f01 tst.w r3, #1 7106: d008 beq.n 711a <_lv_style_list_reset+0x22> lv_style_t * local = lv_style_list_get_local_style(list); 7108: 4b13 ldr r3, [pc, #76] ; (7158 <_lv_style_list_reset+0x60>) 710a: 4798 blx r3 if(local) { 710c: 4605 mov r5, r0 710e: b120 cbz r0, 711a <_lv_style_list_reset+0x22> lv_style_reset(local); 7110: 4b12 ldr r3, [pc, #72] ; (715c <_lv_style_list_reset+0x64>) 7112: 4798 blx r3 lv_mem_free(local); 7114: 4628 mov r0, r5 7116: 4b12 ldr r3, [pc, #72] ; (7160 <_lv_style_list_reset+0x68>) 7118: 4798 blx r3 if(list->has_trans) { 711a: 7963 ldrb r3, [r4, #5] 711c: f013 0f02 tst.w r3, #2 7120: d009 beq.n 7136 <_lv_style_list_reset+0x3e> lv_style_t * trans = _lv_style_list_get_transition_style(list); 7122: 4620 mov r0, r4 7124: 4b0f ldr r3, [pc, #60] ; (7164 <_lv_style_list_reset+0x6c>) 7126: 4798 blx r3 if(trans) { 7128: 4605 mov r5, r0 712a: b120 cbz r0, 7136 <_lv_style_list_reset+0x3e> lv_style_reset(trans); 712c: 4b0b ldr r3, [pc, #44] ; (715c <_lv_style_list_reset+0x64>) 712e: 4798 blx r3 lv_mem_free(trans); 7130: 4628 mov r0, r5 7132: 4b0b ldr r3, [pc, #44] ; (7160 <_lv_style_list_reset+0x68>) 7134: 4798 blx r3 if(list->style_cnt > 0) lv_mem_free(list->style_list); 7136: 7923 ldrb r3, [r4, #4] 7138: b94b cbnz r3, 714e <_lv_style_list_reset+0x56> list->style_list = NULL; 713a: 2200 movs r2, #0 713c: 6022 str r2, [r4, #0] list->style_cnt = 0; 713e: 7122 strb r2, [r4, #4] list->has_local = 0; 7140: 7963 ldrb r3, [r4, #5] list->skip_trans = 0; 7142: f003 03fc and.w r3, r3, #252 ; 0xfc 7146: f362 0382 bfi r3, r2, #2, #1 714a: 7163 strb r3, [r4, #5] 714c: bd38 pop {r3, r4, r5, pc} if(list->style_cnt > 0) lv_mem_free(list->style_list); 714e: 6820 ldr r0, [r4, #0] 7150: 4b03 ldr r3, [pc, #12] ; (7160 <_lv_style_list_reset+0x68>) 7152: 4798 blx r3 7154: e7f1 b.n 713a <_lv_style_list_reset+0x42> 7156: 4770 bx lr 7158: 000070cd .word 0x000070cd 715c: 00006765 .word 0x00006765 7160: 000124c5 .word 0x000124c5 7164: 000070e7 .word 0x000070e7 00007168 : { 7168: b570 push {r4, r5, r6, lr} 716a: 4605 mov r5, r0 716c: 460c mov r4, r1 _lv_style_list_reset(list_dest); 716e: 4b2c ldr r3, [pc, #176] ; (7220 ) 7170: 4798 blx r3 if(list_src->style_list == NULL) return; 7172: 6823 ldr r3, [r4, #0] 7174: 2b00 cmp r3, #0 7176: d041 beq.n 71fc if(list_src->has_local == 0) { 7178: 7963 ldrb r3, [r4, #5] 717a: f013 0f01 tst.w r3, #1 717e: d120 bne.n 71c2 if(list_src->has_trans) { 7180: f013 0f02 tst.w r3, #2 7184: d010 beq.n 71a8 list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 1) * sizeof(lv_style_t *)); 7186: 7920 ldrb r0, [r4, #4] 7188: 3801 subs r0, #1 718a: 0080 lsls r0, r0, #2 718c: 4b25 ldr r3, [pc, #148] ; (7224 ) 718e: 4798 blx r3 7190: 6028 str r0, [r5, #0] _lv_memcpy(list_dest->style_list, list_src->style_list + 1, (list_src->style_cnt - 1) * sizeof(lv_style_t *)); 7192: 7922 ldrb r2, [r4, #4] 7194: 3a01 subs r2, #1 7196: 6821 ldr r1, [r4, #0] 7198: 0092 lsls r2, r2, #2 719a: 3104 adds r1, #4 719c: 4b22 ldr r3, [pc, #136] ; (7228 ) 719e: 4798 blx r3 list_dest->style_cnt = list_src->style_cnt - 1; 71a0: 7923 ldrb r3, [r4, #4] 71a2: 3b01 subs r3, #1 71a4: 712b strb r3, [r5, #4] 71a6: bd70 pop {r4, r5, r6, pc} list_dest->style_list = lv_mem_alloc(list_src->style_cnt * sizeof(lv_style_t *)); 71a8: 7920 ldrb r0, [r4, #4] 71aa: 0080 lsls r0, r0, #2 71ac: 4b1d ldr r3, [pc, #116] ; (7224 ) 71ae: 4798 blx r3 71b0: 6028 str r0, [r5, #0] _lv_memcpy(list_dest->style_list, list_src->style_list, list_src->style_cnt * sizeof(lv_style_t *)); 71b2: 7922 ldrb r2, [r4, #4] 71b4: 0092 lsls r2, r2, #2 71b6: 6821 ldr r1, [r4, #0] 71b8: 4b1b ldr r3, [pc, #108] ; (7228 ) 71ba: 4798 blx r3 list_dest->style_cnt = list_src->style_cnt; 71bc: 7923 ldrb r3, [r4, #4] 71be: 712b strb r3, [r5, #4] 71c0: bd70 pop {r4, r5, r6, pc} if(list_src->has_trans) { 71c2: f013 0f02 tst.w r3, #2 71c6: d01a beq.n 71fe list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 2) * sizeof(lv_style_t *)); 71c8: 7920 ldrb r0, [r4, #4] 71ca: 3802 subs r0, #2 71cc: 0080 lsls r0, r0, #2 71ce: 4b15 ldr r3, [pc, #84] ; (7224 ) 71d0: 4798 blx r3 71d2: 6028 str r0, [r5, #0] _lv_memcpy(list_dest->style_list, list_src->style_list + 2, (list_src->style_cnt - 2) * sizeof(lv_style_t *)); 71d4: 7922 ldrb r2, [r4, #4] 71d6: 3a02 subs r2, #2 71d8: 6821 ldr r1, [r4, #0] 71da: 0092 lsls r2, r2, #2 71dc: 3108 adds r1, #8 71de: 4b12 ldr r3, [pc, #72] ; (7228 ) 71e0: 4798 blx r3 list_dest->style_cnt = list_src->style_cnt - 2; 71e2: 7923 ldrb r3, [r4, #4] 71e4: 3b02 subs r3, #2 71e6: 712b strb r3, [r5, #4] lv_style_t * local_style = get_alloc_local_style(list_dest); 71e8: 4628 mov r0, r5 71ea: 4d10 ldr r5, [pc, #64] ; (722c ) 71ec: 47a8 blx r5 71ee: 4606 mov r6, r0 lv_style_copy(local_style, get_alloc_local_style((lv_style_list_t *)list_src)); 71f0: 4620 mov r0, r4 71f2: 47a8 blx r5 71f4: 4601 mov r1, r0 71f6: 4630 mov r0, r6 71f8: 4b0d ldr r3, [pc, #52] ; (7230 ) 71fa: 4798 blx r3 71fc: bd70 pop {r4, r5, r6, pc} list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 1) * sizeof(lv_style_t *)); 71fe: 7920 ldrb r0, [r4, #4] 7200: 3801 subs r0, #1 7202: 0080 lsls r0, r0, #2 7204: 4b07 ldr r3, [pc, #28] ; (7224 ) 7206: 4798 blx r3 7208: 6028 str r0, [r5, #0] _lv_memcpy(list_dest->style_list, list_src->style_list + 1, (list_src->style_cnt - 1) * sizeof(lv_style_t *)); 720a: 7922 ldrb r2, [r4, #4] 720c: 3a01 subs r2, #1 720e: 6821 ldr r1, [r4, #0] 7210: 0092 lsls r2, r2, #2 7212: 3104 adds r1, #4 7214: 4b04 ldr r3, [pc, #16] ; (7228 ) 7216: 4798 blx r3 list_dest->style_cnt = list_src->style_cnt - 1; 7218: 7923 ldrb r3, [r4, #4] 721a: 3b01 subs r3, #1 721c: 712b strb r3, [r5, #4] 721e: e7e3 b.n 71e8 7220: 000070f9 .word 0x000070f9 7224: 000123dd .word 0x000123dd 7228: 00012655 .word 0x00012655 722c: 000066ad .word 0x000066ad 7230: 000067b9 .word 0x000067b9 00007234 <_lv_style_list_add_trans_style>: { 7234: b530 push {r4, r5, lr} 7236: b083 sub sp, #12 7238: 4604 mov r4, r0 if(list->has_trans) return _lv_style_list_get_transition_style(list); 723a: 7943 ldrb r3, [r0, #5] 723c: f013 0f02 tst.w r3, #2 7240: d005 beq.n 724e <_lv_style_list_add_trans_style+0x1a> 7242: 4b1d ldr r3, [pc, #116] ; (72b8 <_lv_style_list_add_trans_style+0x84>) 7244: 4798 blx r3 7246: 4605 mov r5, r0 } 7248: 4628 mov r0, r5 724a: b003 add sp, #12 724c: bd30 pop {r4, r5, pc} lv_style_t * trans_style = lv_mem_alloc(sizeof(lv_style_t)); 724e: 2004 movs r0, #4 7250: 4b1a ldr r3, [pc, #104] ; (72bc <_lv_style_list_add_trans_style+0x88>) 7252: 4798 blx r3 7254: 4605 mov r5, r0 LV_ASSERT_MEM(trans_style); 7256: 4b1a ldr r3, [pc, #104] ; (72c0 <_lv_style_list_add_trans_style+0x8c>) 7258: 4798 blx r3 725a: b1a8 cbz r0, 7288 <_lv_style_list_add_trans_style+0x54> if(trans_style == NULL) { 725c: b315 cbz r5, 72a4 <_lv_style_list_add_trans_style+0x70> lv_style_init(trans_style); 725e: 4628 mov r0, r5 7260: 4b18 ldr r3, [pc, #96] ; (72c4 <_lv_style_list_add_trans_style+0x90>) 7262: 4798 blx r3 _lv_style_list_add_style(list, trans_style); 7264: 4629 mov r1, r5 7266: 4620 mov r0, r4 7268: 4b17 ldr r3, [pc, #92] ; (72c8 <_lv_style_list_add_trans_style+0x94>) 726a: 4798 blx r3 list->has_trans = 1; 726c: 7963 ldrb r3, [r4, #5] 726e: f043 0302 orr.w r3, r3, #2 7272: 7163 strb r3, [r4, #5] if(list->has_local) { 7274: f013 0f01 tst.w r3, #1 7278: d0e6 beq.n 7248 <_lv_style_list_add_trans_style+0x14> lv_style_t * tmp = list->style_list[0]; 727a: 6823 ldr r3, [r4, #0] 727c: 681a ldr r2, [r3, #0] list->style_list[0] = list->style_list[1]; 727e: 6859 ldr r1, [r3, #4] 7280: 6019 str r1, [r3, #0] list->style_list[1] = tmp; 7282: 6823 ldr r3, [r4, #0] 7284: 605a str r2, [r3, #4] 7286: e7df b.n 7248 <_lv_style_list_add_trans_style+0x14> LV_ASSERT_MEM(trans_style); 7288: 4b10 ldr r3, [pc, #64] ; (72cc <_lv_style_list_add_trans_style+0x98>) 728a: 9300 str r3, [sp, #0] 728c: f240 22cd movw r2, #717 ; 0x2cd 7290: 490f ldr r1, [pc, #60] ; (72d0 <_lv_style_list_add_trans_style+0x9c>) 7292: 2003 movs r0, #3 7294: 4c0f ldr r4, [pc, #60] ; (72d4 <_lv_style_list_add_trans_style+0xa0>) 7296: 47a0 blx r4 7298: 462a mov r2, r5 729a: 2300 movs r3, #0 729c: 480e ldr r0, [pc, #56] ; (72d8 <_lv_style_list_add_trans_style+0xa4>) 729e: 490f ldr r1, [pc, #60] ; (72dc <_lv_style_list_add_trans_style+0xa8>) 72a0: 4788 blx r1 72a2: e7fe b.n 72a2 <_lv_style_list_add_trans_style+0x6e> LV_LOG_WARN("lv_style_list_add_trans_style: couldn't create transition style"); 72a4: 4b0e ldr r3, [pc, #56] ; (72e0 <_lv_style_list_add_trans_style+0xac>) 72a6: 9300 str r3, [sp, #0] 72a8: 4b08 ldr r3, [pc, #32] ; (72cc <_lv_style_list_add_trans_style+0x98>) 72aa: f240 22cf movw r2, #719 ; 0x2cf 72ae: 4908 ldr r1, [pc, #32] ; (72d0 <_lv_style_list_add_trans_style+0x9c>) 72b0: 2002 movs r0, #2 72b2: 4c08 ldr r4, [pc, #32] ; (72d4 <_lv_style_list_add_trans_style+0xa0>) 72b4: 47a0 blx r4 return NULL; 72b6: e7c7 b.n 7248 <_lv_style_list_add_trans_style+0x14> 72b8: 000070e7 .word 0x000070e7 72bc: 000123dd .word 0x000123dd 72c0: 000022b1 .word 0x000022b1 72c4: 000064d9 .word 0x000064d9 72c8: 000065d9 .word 0x000065d9 72cc: 00024b1c .word 0x00024b1c 72d0: 00024b3c .word 0x00024b3c 72d4: 0001225d .word 0x0001225d 72d8: 00023fd8 .word 0x00023fd8 72dc: 000022b9 .word 0x000022b9 72e0: 00024c04 .word 0x00024c04 000072e4 <_lv_style_list_get_int>: if(list == NULL) return LV_RES_INV; 72e4: 2800 cmp r0, #0 72e6: d059 beq.n 739c <_lv_style_list_get_int+0xb8> { 72e8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 72ec: b083 sub sp, #12 72ee: 4605 mov r5, r0 if(list->style_list == NULL) return LV_RES_INV; 72f0: 6803 ldr r3, [r0, #0] 72f2: 2b00 cmp r3, #0 72f4: d054 beq.n 73a0 <_lv_style_list_get_int+0xbc> int16_t weight_goal = attr.full; 72f6: ea4f 2811 mov.w r8, r1, lsr #8 lv_style_int_t value_act = 0; 72fa: 2300 movs r3, #0 72fc: f8ad 3006 strh.w r3, [sp, #6] for(ci = 0; ci < list->style_cnt; ci++) { 7300: 7900 ldrb r0, [r0, #4] 7302: 2800 cmp r0, #0 7304: d042 beq.n 738c <_lv_style_list_get_int+0xa8> 7306: 4693 mov fp, r2 7308: 4689 mov r9, r1 730a: 461c mov r4, r3 730c: f04f 36ff mov.w r6, #4294967295 7310: 469a mov sl, r3 int16_t weight_act = _lv_style_get_int(class, prop, &value_act); 7312: 4f24 ldr r7, [pc, #144] ; (73a4 <_lv_style_list_get_int+0xc0>) 7314: e01c b.n 7350 <_lv_style_list_get_int+0x6c> 7316: 4650 mov r0, sl 7318: f10d 0206 add.w r2, sp, #6 731c: 4649 mov r1, r9 731e: 47b8 blx r7 if(weight_act == weight_goal) { 7320: 4580 cmp r8, r0 7322: d027 beq.n 7374 <_lv_style_list_get_int+0x90> else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 7324: 796b ldrb r3, [r5, #5] 7326: f013 0f02 tst.w r3, #2 732a: d005 beq.n 7338 <_lv_style_list_get_int+0x54> 732c: 2800 cmp r0, #0 732e: db03 blt.n 7338 <_lv_style_list_get_int+0x54> 7330: b914 cbnz r4, 7338 <_lv_style_list_get_int+0x54> 7332: f013 0f04 tst.w r3, #4 7336: d023 beq.n 7380 <_lv_style_list_get_int+0x9c> else if(weight_act > weight) { 7338: 42b0 cmp r0, r6 733a: dd04 ble.n 7346 <_lv_style_list_get_int+0x62> *res = value_act; 733c: f8bd 3006 ldrh.w r3, [sp, #6] 7340: f8ab 3000 strh.w r3, [fp] weight = weight_act; 7344: 4606 mov r6, r0 7346: 3401 adds r4, #1 7348: b224 sxth r4, r4 for(ci = 0; ci < list->style_cnt; ci++) { 734a: 7928 ldrb r0, [r5, #4] 734c: 4284 cmp r4, r0 734e: da1f bge.n 7390 <_lv_style_list_get_int+0xac> lv_style_t * class = lv_style_list_get_style(list, ci); 7350: b2e2 uxtb r2, r4 if(list->has_trans && list->skip_trans) id++; 7352: 796b ldrb r3, [r5, #5] 7354: f003 0306 and.w r3, r3, #6 7358: 2b06 cmp r3, #6 735a: bf04 itt eq 735c: 3201 addeq r2, #1 735e: b2d2 uxtbeq r2, r2 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 7360: 2800 cmp r0, #0 7362: d0d8 beq.n 7316 <_lv_style_list_get_int+0x32> 7364: 4282 cmp r2, r0 7366: d203 bcs.n 7370 <_lv_style_list_get_int+0x8c> return list->style_list[id]; 7368: 682b ldr r3, [r5, #0] 736a: f853 0022 ldr.w r0, [r3, r2, lsl #2] 736e: e7d3 b.n 7318 <_lv_style_list_get_int+0x34> if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 7370: 4650 mov r0, sl 7372: e7d1 b.n 7318 <_lv_style_list_get_int+0x34> *res = value_act; 7374: f8bd 3006 ldrh.w r3, [sp, #6] 7378: f8ab 3000 strh.w r3, [fp] return LV_RES_OK; 737c: 2001 movs r0, #1 737e: e00a b.n 7396 <_lv_style_list_get_int+0xb2> *res = value_act; 7380: f8bd 3006 ldrh.w r3, [sp, #6] 7384: f8ab 3000 strh.w r3, [fp] return LV_RES_OK; 7388: 2001 movs r0, #1 738a: e004 b.n 7396 <_lv_style_list_get_int+0xb2> int16_t weight = -1; 738c: f04f 36ff mov.w r6, #4294967295 if(weight >= 0) return LV_RES_OK; 7390: 43f0 mvns r0, r6 if(list == NULL) return LV_RES_INV; 7392: f3c0 30c0 ubfx r0, r0, #15, #1 } 7396: b003 add sp, #12 7398: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(list == NULL) return LV_RES_INV; 739c: 2000 movs r0, #0 739e: 4770 bx lr if(list->style_list == NULL) return LV_RES_INV; 73a0: 2000 movs r0, #0 73a2: e7f8 b.n 7396 <_lv_style_list_get_int+0xb2> 73a4: 00006df5 .word 0x00006df5 000073a8 <_lv_style_list_get_color>: if(list == NULL) return LV_RES_INV; 73a8: 2800 cmp r0, #0 73aa: d058 beq.n 745e <_lv_style_list_get_color+0xb6> { 73ac: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 73b0: b083 sub sp, #12 73b2: 4605 mov r5, r0 if(list->style_list == NULL) return LV_RES_INV; 73b4: 6803 ldr r3, [r0, #0] 73b6: 2b00 cmp r3, #0 73b8: d053 beq.n 7462 <_lv_style_list_get_color+0xba> int16_t weight_goal = attr.full; 73ba: ea4f 2811 mov.w r8, r1, lsr #8 lv_color_t value_act = { 0 }; 73be: 2300 movs r3, #0 73c0: f8ad 3004 strh.w r3, [sp, #4] for(ci = 0; ci < list->style_cnt; ci++) { 73c4: 7900 ldrb r0, [r0, #4] 73c6: 2800 cmp r0, #0 73c8: d041 beq.n 744e <_lv_style_list_get_color+0xa6> 73ca: 4693 mov fp, r2 73cc: 4689 mov r9, r1 73ce: 461c mov r4, r3 73d0: f04f 36ff mov.w r6, #4294967295 73d4: 469a mov sl, r3 int16_t weight_act = _lv_style_get_color(class, prop, &value_act); 73d6: 4f24 ldr r7, [pc, #144] ; (7468 <_lv_style_list_get_color+0xc0>) 73d8: e01b b.n 7412 <_lv_style_list_get_color+0x6a> 73da: 4650 mov r0, sl 73dc: aa01 add r2, sp, #4 73de: 4649 mov r1, r9 73e0: 47b8 blx r7 if(weight_act == weight_goal) { 73e2: 4580 cmp r8, r0 73e4: d027 beq.n 7436 <_lv_style_list_get_color+0x8e> else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 73e6: 796b ldrb r3, [r5, #5] 73e8: f013 0f02 tst.w r3, #2 73ec: d005 beq.n 73fa <_lv_style_list_get_color+0x52> 73ee: 2800 cmp r0, #0 73f0: db03 blt.n 73fa <_lv_style_list_get_color+0x52> 73f2: b914 cbnz r4, 73fa <_lv_style_list_get_color+0x52> 73f4: f013 0f04 tst.w r3, #4 73f8: d023 beq.n 7442 <_lv_style_list_get_color+0x9a> else if(weight_act > weight) { 73fa: 42b0 cmp r0, r6 73fc: dd04 ble.n 7408 <_lv_style_list_get_color+0x60> *res = value_act; 73fe: f8bd 3004 ldrh.w r3, [sp, #4] 7402: f8ab 3000 strh.w r3, [fp] weight = weight_act; 7406: 4606 mov r6, r0 7408: 3401 adds r4, #1 740a: b224 sxth r4, r4 for(ci = 0; ci < list->style_cnt; ci++) { 740c: 7928 ldrb r0, [r5, #4] 740e: 4284 cmp r4, r0 7410: da1f bge.n 7452 <_lv_style_list_get_color+0xaa> lv_style_t * class = lv_style_list_get_style(list, ci); 7412: b2e2 uxtb r2, r4 if(list->has_trans && list->skip_trans) id++; 7414: 796b ldrb r3, [r5, #5] 7416: f003 0306 and.w r3, r3, #6 741a: 2b06 cmp r3, #6 741c: bf04 itt eq 741e: 3201 addeq r2, #1 7420: b2d2 uxtbeq r2, r2 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 7422: 2800 cmp r0, #0 7424: d0d9 beq.n 73da <_lv_style_list_get_color+0x32> 7426: 4282 cmp r2, r0 7428: d203 bcs.n 7432 <_lv_style_list_get_color+0x8a> return list->style_list[id]; 742a: 682b ldr r3, [r5, #0] 742c: f853 0022 ldr.w r0, [r3, r2, lsl #2] 7430: e7d4 b.n 73dc <_lv_style_list_get_color+0x34> if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 7432: 4650 mov r0, sl 7434: e7d2 b.n 73dc <_lv_style_list_get_color+0x34> *res = value_act; 7436: f8bd 3004 ldrh.w r3, [sp, #4] 743a: f8ab 3000 strh.w r3, [fp] return LV_RES_OK; 743e: 2001 movs r0, #1 7440: e00a b.n 7458 <_lv_style_list_get_color+0xb0> *res = value_act; 7442: f8bd 3004 ldrh.w r3, [sp, #4] 7446: f8ab 3000 strh.w r3, [fp] return LV_RES_OK; 744a: 2001 movs r0, #1 744c: e004 b.n 7458 <_lv_style_list_get_color+0xb0> int16_t weight = -1; 744e: f04f 36ff mov.w r6, #4294967295 if(weight >= 0) return LV_RES_OK; 7452: 43f0 mvns r0, r6 if(list == NULL) return LV_RES_INV; 7454: f3c0 30c0 ubfx r0, r0, #15, #1 } 7458: b003 add sp, #12 745a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(list == NULL) return LV_RES_INV; 745e: 2000 movs r0, #0 7460: 4770 bx lr if(list->style_list == NULL) return LV_RES_INV; 7462: 2000 movs r0, #0 7464: e7f8 b.n 7458 <_lv_style_list_get_color+0xb0> 7466: bf00 nop 7468: 00006f5b .word 0x00006f5b 0000746c <_lv_style_list_get_opa>: if(list == NULL) return LV_RES_INV; 746c: 2800 cmp r0, #0 746e: d059 beq.n 7524 <_lv_style_list_get_opa+0xb8> { 7470: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 7474: b083 sub sp, #12 7476: 4605 mov r5, r0 if(list->style_list == NULL) return LV_RES_INV; 7478: 6803 ldr r3, [r0, #0] 747a: 2b00 cmp r3, #0 747c: d054 beq.n 7528 <_lv_style_list_get_opa+0xbc> int16_t weight_goal = attr.full; 747e: ea4f 2811 mov.w r8, r1, lsr #8 lv_opa_t value_act = LV_OPA_TRANSP; 7482: 2300 movs r3, #0 7484: f88d 3007 strb.w r3, [sp, #7] for(ci = 0; ci < list->style_cnt; ci++) { 7488: 7900 ldrb r0, [r0, #4] 748a: 2800 cmp r0, #0 748c: d042 beq.n 7514 <_lv_style_list_get_opa+0xa8> 748e: 4693 mov fp, r2 7490: 4689 mov r9, r1 7492: 461c mov r4, r3 7494: f04f 36ff mov.w r6, #4294967295 7498: 469a mov sl, r3 int16_t weight_act = _lv_style_get_opa(class, prop, &value_act); 749a: 4f24 ldr r7, [pc, #144] ; (752c <_lv_style_list_get_opa+0xc0>) 749c: e01c b.n 74d8 <_lv_style_list_get_opa+0x6c> 749e: 4650 mov r0, sl 74a0: f10d 0207 add.w r2, sp, #7 74a4: 4649 mov r1, r9 74a6: 47b8 blx r7 if(weight_act == weight_goal) { 74a8: 4580 cmp r8, r0 74aa: d027 beq.n 74fc <_lv_style_list_get_opa+0x90> else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 74ac: 796b ldrb r3, [r5, #5] 74ae: f013 0f02 tst.w r3, #2 74b2: d005 beq.n 74c0 <_lv_style_list_get_opa+0x54> 74b4: 2800 cmp r0, #0 74b6: db03 blt.n 74c0 <_lv_style_list_get_opa+0x54> 74b8: b914 cbnz r4, 74c0 <_lv_style_list_get_opa+0x54> 74ba: f013 0f04 tst.w r3, #4 74be: d023 beq.n 7508 <_lv_style_list_get_opa+0x9c> else if(weight_act > weight) { 74c0: 42b0 cmp r0, r6 74c2: dd04 ble.n 74ce <_lv_style_list_get_opa+0x62> *res = value_act; 74c4: f89d 3007 ldrb.w r3, [sp, #7] 74c8: f88b 3000 strb.w r3, [fp] weight = weight_act; 74cc: 4606 mov r6, r0 74ce: 3401 adds r4, #1 74d0: b224 sxth r4, r4 for(ci = 0; ci < list->style_cnt; ci++) { 74d2: 7928 ldrb r0, [r5, #4] 74d4: 4284 cmp r4, r0 74d6: da1f bge.n 7518 <_lv_style_list_get_opa+0xac> lv_style_t * class = lv_style_list_get_style(list, ci); 74d8: b2e2 uxtb r2, r4 if(list->has_trans && list->skip_trans) id++; 74da: 796b ldrb r3, [r5, #5] 74dc: f003 0306 and.w r3, r3, #6 74e0: 2b06 cmp r3, #6 74e2: bf04 itt eq 74e4: 3201 addeq r2, #1 74e6: b2d2 uxtbeq r2, r2 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 74e8: 2800 cmp r0, #0 74ea: d0d8 beq.n 749e <_lv_style_list_get_opa+0x32> 74ec: 4282 cmp r2, r0 74ee: d203 bcs.n 74f8 <_lv_style_list_get_opa+0x8c> return list->style_list[id]; 74f0: 682b ldr r3, [r5, #0] 74f2: f853 0022 ldr.w r0, [r3, r2, lsl #2] 74f6: e7d3 b.n 74a0 <_lv_style_list_get_opa+0x34> if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 74f8: 4650 mov r0, sl 74fa: e7d1 b.n 74a0 <_lv_style_list_get_opa+0x34> *res = value_act; 74fc: f89d 3007 ldrb.w r3, [sp, #7] 7500: f88b 3000 strb.w r3, [fp] return LV_RES_OK; 7504: 2001 movs r0, #1 7506: e00a b.n 751e <_lv_style_list_get_opa+0xb2> *res = value_act; 7508: f89d 3007 ldrb.w r3, [sp, #7] 750c: f88b 3000 strb.w r3, [fp] return LV_RES_OK; 7510: 2001 movs r0, #1 7512: e004 b.n 751e <_lv_style_list_get_opa+0xb2> int16_t weight = -1; 7514: f04f 36ff mov.w r6, #4294967295 if(weight >= 0) return LV_RES_OK; 7518: 43f0 mvns r0, r6 if(list == NULL) return LV_RES_INV; 751a: f3c0 30c0 ubfx r0, r0, #15, #1 } 751e: b003 add sp, #12 7520: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(list == NULL) return LV_RES_INV; 7524: 2000 movs r0, #0 7526: 4770 bx lr if(list->style_list == NULL) return LV_RES_INV; 7528: 2000 movs r0, #0 752a: e7f8 b.n 751e <_lv_style_list_get_opa+0xb2> 752c: 00006eab .word 0x00006eab 00007530 <_lv_style_list_get_ptr>: if(list == NULL) return LV_RES_INV; 7530: 2800 cmp r0, #0 7532: d052 beq.n 75da <_lv_style_list_get_ptr+0xaa> { 7534: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 7538: b083 sub sp, #12 753a: 4605 mov r5, r0 if(list->style_list == NULL) return LV_RES_INV; 753c: 6803 ldr r3, [r0, #0] 753e: 2b00 cmp r3, #0 7540: d04d beq.n 75de <_lv_style_list_get_ptr+0xae> int16_t weight_goal = attr.full; 7542: ea4f 2811 mov.w r8, r1, lsr #8 for(ci = 0; ci < list->style_cnt; ci++) { 7546: 7900 ldrb r0, [r0, #4] 7548: 2800 cmp r0, #0 754a: d03e beq.n 75ca <_lv_style_list_get_ptr+0x9a> 754c: 4693 mov fp, r2 754e: 4689 mov r9, r1 7550: 2400 movs r4, #0 7552: f04f 36ff mov.w r6, #4294967295 7556: 46a2 mov sl, r4 int16_t weight_act = _lv_style_get_ptr(class, prop, &value_act); 7558: 4f22 ldr r7, [pc, #136] ; (75e4 <_lv_style_list_get_ptr+0xb4>) 755a: e01a b.n 7592 <_lv_style_list_get_ptr+0x62> 755c: 4650 mov r0, sl 755e: aa01 add r2, sp, #4 7560: 4649 mov r1, r9 7562: 47b8 blx r7 if(weight_act == weight_goal) { 7564: 4580 cmp r8, r0 7566: d026 beq.n 75b6 <_lv_style_list_get_ptr+0x86> else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 7568: 796b ldrb r3, [r5, #5] 756a: f013 0f02 tst.w r3, #2 756e: d005 beq.n 757c <_lv_style_list_get_ptr+0x4c> 7570: 2800 cmp r0, #0 7572: db03 blt.n 757c <_lv_style_list_get_ptr+0x4c> 7574: b914 cbnz r4, 757c <_lv_style_list_get_ptr+0x4c> 7576: f013 0f04 tst.w r3, #4 757a: d021 beq.n 75c0 <_lv_style_list_get_ptr+0x90> else if(weight_act > weight) { 757c: 42b0 cmp r0, r6 757e: dd03 ble.n 7588 <_lv_style_list_get_ptr+0x58> *res = value_act; 7580: 9b01 ldr r3, [sp, #4] 7582: f8cb 3000 str.w r3, [fp] weight = weight_act; 7586: 4606 mov r6, r0 7588: 3401 adds r4, #1 758a: b224 sxth r4, r4 for(ci = 0; ci < list->style_cnt; ci++) { 758c: 7928 ldrb r0, [r5, #4] 758e: 4284 cmp r4, r0 7590: da1d bge.n 75ce <_lv_style_list_get_ptr+0x9e> lv_style_t * class = lv_style_list_get_style(list, ci); 7592: b2e2 uxtb r2, r4 if(list->has_trans && list->skip_trans) id++; 7594: 796b ldrb r3, [r5, #5] 7596: f003 0306 and.w r3, r3, #6 759a: 2b06 cmp r3, #6 759c: bf04 itt eq 759e: 3201 addeq r2, #1 75a0: b2d2 uxtbeq r2, r2 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 75a2: 2800 cmp r0, #0 75a4: d0da beq.n 755c <_lv_style_list_get_ptr+0x2c> 75a6: 4282 cmp r2, r0 75a8: d203 bcs.n 75b2 <_lv_style_list_get_ptr+0x82> return list->style_list[id]; 75aa: 682b ldr r3, [r5, #0] 75ac: f853 0022 ldr.w r0, [r3, r2, lsl #2] 75b0: e7d5 b.n 755e <_lv_style_list_get_ptr+0x2e> if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 75b2: 4650 mov r0, sl 75b4: e7d3 b.n 755e <_lv_style_list_get_ptr+0x2e> *res = value_act; 75b6: 9b01 ldr r3, [sp, #4] 75b8: f8cb 3000 str.w r3, [fp] return LV_RES_OK; 75bc: 2001 movs r0, #1 75be: e009 b.n 75d4 <_lv_style_list_get_ptr+0xa4> *res = value_act; 75c0: 9b01 ldr r3, [sp, #4] 75c2: f8cb 3000 str.w r3, [fp] return LV_RES_OK; 75c6: 2001 movs r0, #1 75c8: e004 b.n 75d4 <_lv_style_list_get_ptr+0xa4> int16_t weight = -1; 75ca: f04f 36ff mov.w r6, #4294967295 if(weight >= 0) return LV_RES_OK; 75ce: 43f0 mvns r0, r6 if(list == NULL) return LV_RES_INV; 75d0: f3c0 30c0 ubfx r0, r0, #15, #1 } 75d4: b003 add sp, #12 75d6: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(list == NULL) return LV_RES_INV; 75da: 2000 movs r0, #0 75dc: 4770 bx lr if(list->style_list == NULL) return LV_RES_INV; 75de: 2000 movs r0, #0 75e0: e7f8 b.n 75d4 <_lv_style_list_get_ptr+0xa4> 75e2: bf00 nop 75e4: 00007011 .word 0x00007011 000075e8 : } } } static inline lv_color_t color_blend_true_color_additive(lv_color_t fg, lv_color_t bg, lv_opa_t opa) { 75e8: b5f0 push {r4, r5, r6, r7, lr} 75ea: f001 0e1f and.w lr, r1, #31 75ee: f3c1 1645 ubfx r6, r1, #5, #6 75f2: f3c1 21c4 ubfx r1, r1, #11, #5 if(opa <= LV_OPA_MIN) return bg; 75f6: 2a05 cmp r2, #5 75f8: d93f bls.n 767a uint32_t tmp; #if LV_COLOR_DEPTH == 1 tmp = bg.full + fg.full; fg.full = LV_MATH_MIN(tmp, 1); #else tmp = bg.ch.red + fg.ch.red; 75fa: f3c0 24c4 ubfx r4, r0, #11, #5 75fe: 440c add r4, r1 #if LV_COLOR_DEPTH == 8 fg.ch.red = LV_MATH_MIN(tmp, 7); #elif LV_COLOR_DEPTH == 16 fg.ch.red = LV_MATH_MIN(tmp, 31); 7600: 2c1f cmp r4, #31 7602: bf28 it cs 7604: 241f movcs r4, #31 7606: f004 041f and.w r4, r4, #31 #if LV_COLOR_DEPTH == 8 fg.ch.green = LV_MATH_MIN(tmp, 7); #elif LV_COLOR_DEPTH == 16 #if LV_COLOR_16_SWAP == 0 tmp = bg.ch.green + fg.ch.green; 760a: f3c0 1345 ubfx r3, r0, #5, #6 760e: 4433 add r3, r6 fg.ch.green = LV_MATH_MIN(tmp, 63); 7610: 2b3f cmp r3, #63 ; 0x3f 7612: bf28 it cs 7614: 233f movcs r3, #63 ; 0x3f 7616: f003 053f and.w r5, r3, #63 ; 0x3f #elif LV_COLOR_DEPTH == 32 fg.ch.green = LV_MATH_MIN(tmp, 255); #endif tmp = bg.ch.blue + fg.ch.blue; 761a: f000 001f and.w r0, r0, #31 761e: 4470 add r0, lr #if LV_COLOR_DEPTH == 8 fg.ch.blue = LV_MATH_MIN(tmp, 4); #elif LV_COLOR_DEPTH == 16 fg.ch.blue = LV_MATH_MIN(tmp, 31); 7620: 281f cmp r0, #31 7622: bf28 it cs 7624: 201f movcs r0, #31 7626: f000 031f and.w r3, r0, #31 #elif LV_COLOR_DEPTH == 32 fg.ch.blue = LV_MATH_MIN(tmp, 255); #endif #endif if(opa == LV_OPA_COVER) return fg; 762a: 2aff cmp r2, #255 ; 0xff 762c: d02e beq.n 768c LV_ATTRIBUTE_FAST_MEM static inline lv_color_t lv_color_mix(lv_color_t c1, lv_color_t c2, uint8_t mix) { lv_color_t ret; #if LV_COLOR_DEPTH != 1 /*LV_COLOR_DEPTH == 8, 16 or 32*/ LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 762e: f1c2 07ff rsb r7, r2, #255 ; 0xff LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 7632: fb07 f00e mul.w r0, r7, lr 7636: fb02 0003 mla r0, r2, r3, r0 763a: eb00 2300 add.w r3, r0, r0, lsl #8 763e: eb00 10c3 add.w r0, r0, r3, lsl #7 7642: 0dc3 lsrs r3, r0, #23 7644: f04f 0000 mov.w r0, #0 7648: f363 0004 bfi r0, r3, #0, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 764c: fb07 f306 mul.w r3, r7, r6 7650: fb02 3305 mla r3, r2, r5, r3 7654: eb03 2503 add.w r5, r3, r3, lsl #8 7658: eb03 13c5 add.w r3, r3, r5, lsl #7 765c: 0ddb lsrs r3, r3, #23 765e: f363 104a bfi r0, r3, #5, #6 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 7662: fb07 f101 mul.w r1, r7, r1 7666: fb02 1204 mla r2, r2, r4, r1 766a: eb02 2302 add.w r3, r2, r2, lsl #8 766e: eb02 12c3 add.w r2, r2, r3, lsl #7 7672: 0dd2 lsrs r2, r2, #23 7674: f362 20cf bfi r0, r2, #11, #5 return lv_color_mix(fg, bg, opa); } 7678: bdf0 pop {r4, r5, r6, r7, pc} if(opa <= LV_OPA_MIN) return bg; 767a: f04f 0000 mov.w r0, #0 767e: f36e 0004 bfi r0, lr, #0, #5 7682: f366 104a bfi r0, r6, #5, #6 7686: f361 20cf bfi r0, r1, #11, #5 768a: bdf0 pop {r4, r5, r6, r7, pc} if(opa == LV_OPA_COVER) return fg; 768c: f04f 0000 mov.w r0, #0 7690: f363 0004 bfi r0, r3, #0, #5 7694: f365 104a bfi r0, r5, #5, #6 7698: f364 20cf bfi r0, r4, #11, #5 769c: bdf0 pop {r4, r5, r6, r7, pc} 0000769e : static inline lv_color_t color_blend_true_color_subtractive(lv_color_t fg, lv_color_t bg, lv_opa_t opa) { 769e: b5f0 push {r4, r5, r6, r7, lr} 76a0: f001 0e1f and.w lr, r1, #31 76a4: f3c1 1645 ubfx r6, r1, #5, #6 76a8: f3c1 21c4 ubfx r1, r1, #11, #5 if(opa <= LV_OPA_MIN) return bg; 76ac: 2a05 cmp r2, #5 76ae: d93d bls.n 772c int32_t tmp; tmp = bg.ch.red - fg.ch.red; 76b0: f3c0 24c4 ubfx r4, r0, #11, #5 76b4: 1b0c subs r4, r1, r4 fg.ch.red = LV_MATH_MAX(tmp, 0); 76b6: ea24 74e4 bic.w r4, r4, r4, asr #31 76ba: f004 041f and.w r4, r4, #31 #if LV_COLOR_16_SWAP == 0 tmp = bg.ch.green - fg.ch.green; 76be: f3c0 1345 ubfx r3, r0, #5, #6 76c2: 1af3 subs r3, r6, r3 fg.ch.green = LV_MATH_MAX(tmp, 0); 76c4: ea23 73e3 bic.w r3, r3, r3, asr #31 76c8: f003 053f and.w r5, r3, #63 ; 0x3f tmp = LV_MATH_MAX(tmp, 0); fg.ch.green_h = tmp >> 3; fg.ch.green_l = tmp & 0x7; #endif tmp = bg.ch.blue - fg.ch.blue; 76cc: f000 001f and.w r0, r0, #31 76d0: ebae 0000 sub.w r0, lr, r0 fg.ch.blue = LV_MATH_MAX(tmp, 0); 76d4: ea20 70e0 bic.w r0, r0, r0, asr #31 76d8: f000 031f and.w r3, r0, #31 if(opa == LV_OPA_COVER) return fg; 76dc: 2aff cmp r2, #255 ; 0xff 76de: d02e beq.n 773e 76e0: f1c2 07ff rsb r7, r2, #255 ; 0xff LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 76e4: fb07 f00e mul.w r0, r7, lr 76e8: fb02 0003 mla r0, r2, r3, r0 76ec: eb00 2300 add.w r3, r0, r0, lsl #8 76f0: eb00 10c3 add.w r0, r0, r3, lsl #7 76f4: 0dc3 lsrs r3, r0, #23 76f6: f04f 0000 mov.w r0, #0 76fa: f363 0004 bfi r0, r3, #0, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 76fe: fb07 f306 mul.w r3, r7, r6 7702: fb02 3305 mla r3, r2, r5, r3 7706: eb03 2503 add.w r5, r3, r3, lsl #8 770a: eb03 13c5 add.w r3, r3, r5, lsl #7 770e: 0ddb lsrs r3, r3, #23 7710: f363 104a bfi r0, r3, #5, #6 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 7714: fb07 f101 mul.w r1, r7, r1 7718: fb02 1204 mla r2, r2, r4, r1 771c: eb02 2302 add.w r3, r2, r2, lsl #8 7720: eb02 12c3 add.w r2, r2, r3, lsl #7 7724: 0dd2 lsrs r2, r2, #23 7726: f362 20cf bfi r0, r2, #11, #5 return lv_color_mix(fg, bg, opa); } 772a: bdf0 pop {r4, r5, r6, r7, pc} if(opa <= LV_OPA_MIN) return bg; 772c: f04f 0000 mov.w r0, #0 7730: f36e 0004 bfi r0, lr, #0, #5 7734: f366 104a bfi r0, r6, #5, #6 7738: f361 20cf bfi r0, r1, #11, #5 773c: bdf0 pop {r4, r5, r6, r7, pc} if(opa == LV_OPA_COVER) return fg; 773e: f04f 0000 mov.w r0, #0 7742: f363 0004 bfi r0, r3, #0, #5 7746: f365 104a bfi r0, r5, #5, #6 774a: f364 20cf bfi r0, r4, #11, #5 774e: bdf0 pop {r4, r5, r6, r7, pc} 00007750 <_lv_blend_fill>: { 7750: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 7754: b093 sub sp, #76 ; 0x4c 7756: f89d 4070 ldrb.w r4, [sp, #112] ; 0x70 775a: f89d b074 ldrb.w fp, [sp, #116] ; 0x74 775e: f89d 9078 ldrb.w r9, [sp, #120] ; 0x78 if(opa < LV_OPA_MIN) return; 7762: f1bb 0f04 cmp.w fp, #4 7766: d900 bls.n 776a <_lv_blend_fill+0x1a> if(mask_res == LV_DRAW_MASK_RES_TRANSP) return; 7768: b914 cbnz r4, 7770 <_lv_blend_fill+0x20> } 776a: b013 add sp, #76 ; 0x4c 776c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 7770: 9308 str r3, [sp, #32] 7772: f8ad 2024 strh.w r2, [sp, #36] ; 0x24 7776: 460e mov r6, r1 7778: 4605 mov r5, r0 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 777a: 4bba ldr r3, [pc, #744] ; (7a64 <_lv_blend_fill+0x314>) 777c: 4798 blx r3 777e: 4680 mov r8, r0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 7780: 4bb9 ldr r3, [pc, #740] ; (7a68 <_lv_blend_fill+0x318>) 7782: 4798 blx r3 7784: 4607 mov r7, r0 lv_color_t * disp_buf = vdb->buf_act; 7786: 6882 ldr r2, [r0, #8] 7788: 9206 str r2, [sp, #24] is_common = _lv_area_intersect(&draw_area, clip_area, fill_area); 778a: 4632 mov r2, r6 778c: 4629 mov r1, r5 778e: a810 add r0, sp, #64 ; 0x40 7790: 4bb6 ldr r3, [pc, #728] ; (7a6c <_lv_blend_fill+0x31c>) 7792: 4798 blx r3 if(!is_common) return; 7794: 2800 cmp r0, #0 7796: d0e8 beq.n 776a <_lv_blend_fill+0x1a> draw_area.x1 -= disp_area->x1; 7798: 8a3a ldrh r2, [r7, #16] 779a: f8bd 3040 ldrh.w r3, [sp, #64] ; 0x40 779e: 1a9b subs r3, r3, r2 77a0: b299 uxth r1, r3 77a2: 460d mov r5, r1 77a4: 910a str r1, [sp, #40] ; 0x28 77a6: b208 sxth r0, r1 77a8: 900b str r0, [sp, #44] ; 0x2c 77aa: f8ad 0040 strh.w r0, [sp, #64] ; 0x40 draw_area.y1 -= disp_area->y1; 77ae: 8a7b ldrh r3, [r7, #18] 77b0: f8bd 1042 ldrh.w r1, [sp, #66] ; 0x42 77b4: 1ac9 subs r1, r1, r3 77b6: fa0f fc81 sxth.w ip, r1 77ba: f8ad c042 strh.w ip, [sp, #66] ; 0x42 draw_area.x2 -= disp_area->x1; 77be: f8bd 0044 ldrh.w r0, [sp, #68] ; 0x44 77c2: 1a80 subs r0, r0, r2 77c4: b280 uxth r0, r0 77c6: f8ad 0044 strh.w r0, [sp, #68] ; 0x44 draw_area.y2 -= disp_area->y1; 77ca: f8bd e046 ldrh.w lr, [sp, #70] ; 0x46 77ce: ebae 0e03 sub.w lr, lr, r3 77d2: fa0f fe8e sxth.w lr, lr 77d6: f8ad e046 strh.w lr, [sp, #70] ; 0x46 if(mask && disp->driver.antialiasing == 0) 77da: 9a08 ldr r2, [sp, #32] 77dc: b1aa cbz r2, 780a <_lv_blend_fill+0xba> 77de: f898 3008 ldrb.w r3, [r8, #8] 77e2: f013 0f01 tst.w r3, #1 77e6: d110 bne.n 780a <_lv_blend_fill+0xba> * @param area_p pointer to an area * @return the width of the area (if x1 == x2 -> width = 1) */ static inline lv_coord_t lv_area_get_width(const lv_area_t * area_p) { return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 77e8: 1c41 adds r1, r0, #1 77ea: 1b49 subs r1, r1, r5 77ec: b209 sxth r1, r1 for(i = 0; i < mask_w; i++) mask[i] = mask[i] > 128 ? LV_OPA_COVER : LV_OPA_TRANSP; 77ee: 2900 cmp r1, #0 77f0: dd0b ble.n 780a <_lv_blend_fill+0xba> 77f2: 4613 mov r3, r2 77f4: 4411 add r1, r2 77f6: 781a ldrb r2, [r3, #0] 77f8: 2a80 cmp r2, #128 ; 0x80 77fa: f04f 32ff mov.w r2, #4294967295 77fe: bf98 it ls 7800: 2200 movls r2, #0 7802: f803 2b01 strb.w r2, [r3], #1 7806: 428b cmp r3, r1 7808: d1f5 bne.n 77f6 <_lv_blend_fill+0xa6> if(disp->driver.set_px_cb) { 780a: f8d8 3014 ldr.w r3, [r8, #20] 780e: 2b00 cmp r3, #0 7810: d077 beq.n 7902 <_lv_blend_fill+0x1b2> 7812: f8bd 8024 ldrh.w r8, [sp, #36] ; 0x24 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 7816: 4b93 ldr r3, [pc, #588] ; (7a64 <_lv_blend_fill+0x314>) 7818: 4798 blx r3 781a: 4605 mov r5, r0 781c: 8abb ldrh r3, [r7, #20] 781e: 3301 adds r3, #1 7820: 8a3a ldrh r2, [r7, #16] 7822: 1a9b subs r3, r3, r2 7824: b21b sxth r3, r3 7826: 9307 str r3, [sp, #28] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 7828: 2c01 cmp r4, #1 782a: d03e beq.n 78aa <_lv_blend_fill+0x15a> const lv_opa_t * mask_tmp = mask - draw_area->x1; 782c: f9bd 2040 ldrsh.w r2, [sp, #64] ; 0x40 7830: 9b08 ldr r3, [sp, #32] 7832: 1a9f subs r7, r3, r2 7834: f8bd 3044 ldrh.w r3, [sp, #68] ; 0x44 7838: 3301 adds r3, #1 783a: 1a9b subs r3, r3, r2 783c: b21b sxth r3, r3 783e: 9308 str r3, [sp, #32] for(y = draw_area->y1; y <= draw_area->y2; y++) { 7840: f9bd a042 ldrsh.w sl, [sp, #66] ; 0x42 7844: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46 7848: 459a cmp sl, r3 784a: dc8e bgt.n 776a <_lv_blend_fill+0x1a> for(x = draw_area->x1; x <= draw_area->x2; x++) { 784c: f9bd 6040 ldrsh.w r6, [sp, #64] ; 0x40 7850: 4634 mov r4, r6 7852: f9bd 3044 ldrsh.w r3, [sp, #68] ; 0x44 7856: 429e cmp r6, r3 7858: dc1e bgt.n 7898 <_lv_blend_fill+0x148> 785a: 443e add r6, r7 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, 785c: fa0f f98a sxth.w r9, sl 7860: 9605 str r6, [sp, #20] 7862: 464b mov r3, r9 7864: 46b9 mov r9, r7 7866: 461f mov r7, r3 (uint32_t)((uint32_t)opa * mask_tmp[x]) >> 8); 7868: 9a05 ldr r2, [sp, #20] 786a: f812 3b01 ldrb.w r3, [r2], #1 786e: 9205 str r2, [sp, #20] 7870: fb03 f30b mul.w r3, r3, fp disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, 7874: f3c3 2307 ubfx r3, r3, #8, #8 7878: 9302 str r3, [sp, #8] 787a: f8ad 8004 strh.w r8, [sp, #4] 787e: 9700 str r7, [sp, #0] 7880: b223 sxth r3, r4 7882: 9a07 ldr r2, [sp, #28] 7884: 9906 ldr r1, [sp, #24] 7886: 4628 mov r0, r5 7888: 696e ldr r6, [r5, #20] 788a: 47b0 blx r6 for(x = draw_area->x1; x <= draw_area->x2; x++) { 788c: 3401 adds r4, #1 788e: f9bd 3044 ldrsh.w r3, [sp, #68] ; 0x44 7892: 429c cmp r4, r3 7894: dde8 ble.n 7868 <_lv_blend_fill+0x118> 7896: 464f mov r7, r9 7898: 9b08 ldr r3, [sp, #32] 789a: 441f add r7, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 789c: f10a 0a01 add.w sl, sl, #1 78a0: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46 78a4: 459a cmp sl, r3 78a6: ddd1 ble.n 784c <_lv_blend_fill+0xfc> 78a8: e75f b.n 776a <_lv_blend_fill+0x1a> for(y = draw_area->y1; y <= draw_area->y2; y++) { 78aa: f9bd 9042 ldrsh.w r9, [sp, #66] ; 0x42 78ae: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46 78b2: 4599 cmp r9, r3 78b4: f73f af59 bgt.w 776a <_lv_blend_fill+0x1a> 78b8: f8dd a01c ldr.w sl, [sp, #28] 78bc: 465e mov r6, fp 78be: f8dd b018 ldr.w fp, [sp, #24] for(x = draw_area->x1; x <= draw_area->x2; x++) { 78c2: f9bd 4040 ldrsh.w r4, [sp, #64] ; 0x40 78c6: f9bd 3044 ldrsh.w r3, [sp, #68] ; 0x44 78ca: 429c cmp r4, r3 78cc: dc12 bgt.n 78f4 <_lv_blend_fill+0x1a4> disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, opa); 78ce: fa0f f789 sxth.w r7, r9 78d2: 9705 str r7, [sp, #20] 78d4: 9602 str r6, [sp, #8] 78d6: f8ad 8004 strh.w r8, [sp, #4] 78da: 9b05 ldr r3, [sp, #20] 78dc: 9300 str r3, [sp, #0] 78de: b223 sxth r3, r4 78e0: 4652 mov r2, sl 78e2: 4659 mov r1, fp 78e4: 4628 mov r0, r5 78e6: 696f ldr r7, [r5, #20] 78e8: 47b8 blx r7 for(x = draw_area->x1; x <= draw_area->x2; x++) { 78ea: 3401 adds r4, #1 78ec: f9bd 3044 ldrsh.w r3, [sp, #68] ; 0x44 78f0: 429c cmp r4, r3 78f2: ddef ble.n 78d4 <_lv_blend_fill+0x184> for(y = draw_area->y1; y <= draw_area->y2; y++) { 78f4: f109 0901 add.w r9, r9, #1 78f8: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46 78fc: 4599 cmp r9, r3 78fe: dde0 ble.n 78c2 <_lv_blend_fill+0x172> 7900: e733 b.n 776a <_lv_blend_fill+0x1a> else if(mode == LV_BLEND_MODE_NORMAL) { 7902: f1b9 0f00 cmp.w r9, #0 7906: f040 83a0 bne.w 804a <_lv_blend_fill+0x8fa> 790a: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 790e: f8ad 301c strh.w r3, [sp, #28] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 7912: 4b54 ldr r3, [pc, #336] ; (7a64 <_lv_blend_fill+0x314>) 7914: 4798 blx r3 7916: 4606 mov r6, r0 7918: 8abb ldrh r3, [r7, #20] 791a: 3301 adds r3, #1 791c: 8a3f ldrh r7, [r7, #16] 791e: 1bdf subs r7, r3, r7 7920: b23f sxth r7, r7 7922: f9bd 2040 ldrsh.w r2, [sp, #64] ; 0x40 7926: f8bd 3044 ldrh.w r3, [sp, #68] ; 0x44 792a: 3301 adds r3, #1 792c: 1a9b subs r3, r3, r2 792e: b21b sxth r3, r3 7930: 930b str r3, [sp, #44] ; 0x2c int32_t draw_area_w = lv_area_get_width(draw_area); 7932: 461d mov r5, r3 * @param area_p pointer to an area * @return the height of the area (if y1 == y2 -> height = 1) */ static inline lv_coord_t lv_area_get_height(const lv_area_t * area_p) { return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 7934: f9bd 0046 ldrsh.w r0, [sp, #70] ; 0x46 7938: f9bd 3042 ldrsh.w r3, [sp, #66] ; 0x42 793c: 1c41 adds r1, r0, #1 793e: 1ac9 subs r1, r1, r3 int32_t draw_area_h = lv_area_get_height(draw_area); 7940: b209 sxth r1, r1 7942: 910c str r1, [sp, #48] ; 0x30 lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1; 7944: 930a str r3, [sp, #40] ; 0x28 7946: fb03 2207 mla r2, r3, r7, r2 794a: 9906 ldr r1, [sp, #24] 794c: eb01 0142 add.w r1, r1, r2, lsl #1 7950: 9105 str r1, [sp, #20] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 7952: 2c01 cmp r4, #1 7954: d029 beq.n 79aa <_lv_blend_fill+0x25a> if(opa > LV_OPA_MAX) { 7956: f1bb 0ffa cmp.w fp, #250 ; 0xfa 795a: f200 8108 bhi.w 7b6e <_lv_blend_fill+0x41e> for(y = draw_area->y1; y <= draw_area->y2; y++) { 795e: 4283 cmp r3, r0 7960: f73f af03 bgt.w 776a <_lv_blend_fill+0x1a> last_dest_color.full = disp_buf_first[0].full; 7964: 9b06 ldr r3, [sp, #24] 7966: f833 3012 ldrh.w r3, [r3, r2, lsl #1] 796a: f8bd 6024 ldrh.w r6, [sp, #36] ; 0x24 796e: f3c6 2cc4 ubfx ip, r6, #11, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 7972: f3c6 1245 ubfx r2, r6, #5, #6 7976: 4610 mov r0, r2 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 7978: f006 021f and.w r2, r6, #31 797c: 4614 mov r4, r2 disp_buf_first += disp_w; 797e: 007a lsls r2, r7, #1 7980: 920c str r2, [sp, #48] ; 0x30 7982: 9a0b ldr r2, [sp, #44] ; 0x2c 7984: 9908 ldr r1, [sp, #32] 7986: 3901 subs r1, #1 7988: 9106 str r1, [sp, #24] 798a: 0052 lsls r2, r2, #1 798c: 920e str r2, [sp, #56] ; 0x38 798e: 4619 mov r1, r3 7990: f04f 0e00 mov.w lr, #0 7994: 4672 mov r2, lr if(opa_tmp == LV_OPA_COVER) last_res_color = color; 7996: b2b6 uxth r6, r6 7998: 9608 str r6, [sp, #32] if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 799a: f8cd b024 str.w fp, [sp, #36] ; 0x24 799e: 950d str r5, [sp, #52] ; 0x34 79a0: 46a1 mov r9, r4 79a2: f8cd b01c str.w fp, [sp, #28] 79a6: 4683 mov fp, r0 79a8: e345 b.n 8036 <_lv_blend_fill+0x8e6> if(opa > LV_OPA_MAX) { 79aa: f1bb 0ffa cmp.w fp, #250 ; 0xfa 79ae: d925 bls.n 79fc <_lv_blend_fill+0x2ac> if(disp->driver.gpu_fill_cb && lv_area_get_size(draw_area) > GPU_SIZE_LIMIT) { 79b0: 6a73 ldr r3, [r6, #36] ; 0x24 79b2: b123 cbz r3, 79be <_lv_blend_fill+0x26e> 79b4: a810 add r0, sp, #64 ; 0x40 79b6: 4b2e ldr r3, [pc, #184] ; (7a70 <_lv_blend_fill+0x320>) 79b8: 4798 blx r3 79ba: 28f0 cmp r0, #240 ; 0xf0 79bc: d813 bhi.n 79e6 <_lv_blend_fill+0x296> for(y = 0; y < draw_area_h; y++) { 79be: 9b0c ldr r3, [sp, #48] ; 0x30 79c0: 2b00 cmp r3, #0 79c2: f77f aed2 ble.w 776a <_lv_blend_fill+0x1a> disp_buf_first += disp_w; 79c6: 007f lsls r7, r7, #1 79c8: 2400 movs r4, #0 lv_color_fill(disp_buf_first, color, draw_area_w); 79ca: 4d2a ldr r5, [pc, #168] ; (7a74 <_lv_blend_fill+0x324>) 79cc: f8dd 8030 ldr.w r8, [sp, #48] ; 0x30 79d0: 9e05 ldr r6, [sp, #20] 79d2: 9a0b ldr r2, [sp, #44] ; 0x2c 79d4: f8bd 101c ldrh.w r1, [sp, #28] 79d8: 4630 mov r0, r6 79da: 47a8 blx r5 disp_buf_first += disp_w; 79dc: 443e add r6, r7 for(y = 0; y < draw_area_h; y++) { 79de: 3401 adds r4, #1 79e0: 45a0 cmp r8, r4 79e2: d1f6 bne.n 79d2 <_lv_blend_fill+0x282> 79e4: e6c1 b.n 776a <_lv_blend_fill+0x1a> disp->driver.gpu_fill_cb(&disp->driver, disp_buf, disp_w, draw_area, color); 79e6: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 79ea: f8ad 3000 strh.w r3, [sp] 79ee: 6a74 ldr r4, [r6, #36] ; 0x24 79f0: ab10 add r3, sp, #64 ; 0x40 79f2: 463a mov r2, r7 79f4: 9906 ldr r1, [sp, #24] 79f6: 4630 mov r0, r6 79f8: 47a0 blx r4 79fa: e6b6 b.n 776a <_lv_blend_fill+0x1a> if(disp->driver.gpu_blend_cb && lv_area_get_size(draw_area) > GPU_SIZE_LIMIT) { 79fc: 6a33 ldr r3, [r6, #32] 79fe: 2b00 cmp r3, #0 7a00: d03c beq.n 7a7c <_lv_blend_fill+0x32c> 7a02: a810 add r0, sp, #64 ; 0x40 7a04: 4b1a ldr r3, [pc, #104] ; (7a70 <_lv_blend_fill+0x320>) 7a06: 4798 blx r3 7a08: 28f0 cmp r0, #240 ; 0xf0 7a0a: d937 bls.n 7a7c <_lv_blend_fill+0x32c> for(x = 0; x < draw_area_w ; x++) blend_buf[x].full = color.full; 7a0c: 990b ldr r1, [sp, #44] ; 0x2c 7a0e: 2900 cmp r1, #0 7a10: dd0c ble.n 7a2c <_lv_blend_fill+0x2dc> 7a12: f8bd 8024 ldrh.w r8, [sp, #36] ; 0x24 7a16: 4a18 ldr r2, [pc, #96] ; (7a78 <_lv_blend_fill+0x328>) 7a18: 1e93 subs r3, r2, #2 7a1a: f101 4100 add.w r1, r1, #2147483648 ; 0x80000000 7a1e: 3901 subs r1, #1 7a20: eb02 0241 add.w r2, r2, r1, lsl #1 7a24: f823 8f02 strh.w r8, [r3, #2]! 7a28: 429a cmp r2, r3 7a2a: d1fb bne.n 7a24 <_lv_blend_fill+0x2d4> for(y = draw_area->y1; y <= draw_area->y2; y++) { 7a2c: f9bd 5042 ldrsh.w r5, [sp, #66] ; 0x42 7a30: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46 7a34: 429d cmp r5, r3 7a36: f73f ae98 bgt.w 776a <_lv_blend_fill+0x1a> disp_buf_first += disp_w; 7a3a: ea4f 0847 mov.w r8, r7, lsl #1 disp->driver.gpu_blend_cb(&disp->driver, disp_buf_first, blend_buf, draw_area_w, opa); 7a3e: f8df a038 ldr.w sl, [pc, #56] ; 7a78 <_lv_blend_fill+0x328> 7a42: f8dd 9014 ldr.w r9, [sp, #20] 7a46: 465c mov r4, fp 7a48: 9400 str r4, [sp, #0] 7a4a: 9b0b ldr r3, [sp, #44] ; 0x2c 7a4c: 4652 mov r2, sl 7a4e: 4649 mov r1, r9 7a50: 4630 mov r0, r6 7a52: 6a37 ldr r7, [r6, #32] 7a54: 47b8 blx r7 disp_buf_first += disp_w; 7a56: 44c1 add r9, r8 for(y = draw_area->y1; y <= draw_area->y2; y++) { 7a58: 3501 adds r5, #1 7a5a: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46 7a5e: 429d cmp r5, r3 7a60: ddf2 ble.n 7a48 <_lv_blend_fill+0x2f8> 7a62: e682 b.n 776a <_lv_blend_fill+0x1a> 7a64: 00005f69 .word 0x00005f69 7a68: 00010fdd .word 0x00010fdd 7a6c: 00011519 .word 0x00011519 7a70: 000114fd .word 0x000114fd 7a74: 00011b3b .word 0x00011b3b 7a78: 20002690 .word 0x20002690 lv_color_t last_dest_color = LV_COLOR_BLACK; 7a7c: f04f 0e00 mov.w lr, #0 7a80: f8bd 2024 ldrh.w r2, [sp, #36] ; 0x24 7a84: f002 091f and.w r9, r2, #31 7a88: f3c2 1845 ubfx r8, r2, #5, #6 7a8c: f3c2 2cc4 ubfx ip, r2, #11, #5 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 7a90: fb0b f30c mul.w r3, fp, ip 7a94: eb03 2103 add.w r1, r3, r3, lsl #8 7a98: eb03 13c1 add.w r3, r3, r1, lsl #7 7a9c: f3c3 51c4 ubfx r1, r3, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 7aa0: fb0b f308 mul.w r3, fp, r8 7aa4: eb03 2403 add.w r4, r3, r3, lsl #8 7aa8: eb03 13c4 add.w r3, r3, r4, lsl #7 7aac: f3c3 54c5 ubfx r4, r3, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 7ab0: fb0b f309 mul.w r3, fp, r9 7ab4: eb03 2203 add.w r2, r3, r3, lsl #8 7ab8: eb03 13c2 add.w r3, r3, r2, lsl #7 7abc: f3c3 52c4 ubfx r2, r3, #23, #5 } LV_ATTRIBUTE_FAST_MEM static inline void lv_color_premult(lv_color_t c, uint8_t mix, uint16_t * out) { #if LV_COLOR_DEPTH != 1 out[0] = (uint16_t) LV_COLOR_GET_R(c) * mix; 7ac0: fa1f f38b uxth.w r3, fp 7ac4: fb0c fc03 mul.w ip, ip, r3 out[1] = (uint16_t) LV_COLOR_GET_G(c) * mix; 7ac8: fb08 f803 mul.w r8, r8, r3 out[2] = (uint16_t) LV_COLOR_GET_B(c) * mix; 7acc: fb09 f903 mul.w r9, r9, r3 lv_opa_t opa_inv = 255 - opa; 7ad0: ea6f 030b mvn.w r3, fp 7ad4: b2db uxtb r3, r3 for(y = 0; y < draw_area_h; y++) { 7ad6: 980c ldr r0, [sp, #48] ; 0x30 7ad8: 2800 cmp r0, #0 7ada: f77f ae46 ble.w 776a <_lv_blend_fill+0x1a> disp_buf_first += disp_w; 7ade: 0078 lsls r0, r7, #1 7ae0: 9007 str r0, [sp, #28] 7ae2: 980b ldr r0, [sp, #44] ; 0x2c 7ae4: 0040 lsls r0, r0, #1 7ae6: 9008 str r0, [sp, #32] 7ae8: 2000 movs r0, #0 7aea: 9006 str r0, [sp, #24] LV_ATTRIBUTE_FAST_MEM static inline lv_color_t lv_color_mix_premult(uint16_t * premult_c1, lv_color_t c2, uint8_t mix) { lv_color_t ret; #if LV_COLOR_DEPTH != 1 /*LV_COLOR_DEPTH == 8, 16 or 32*/ LV_COLOR_SET_R(ret, (uint16_t)((uint16_t) premult_c1[0] + LV_COLOR_GET_R(c2) * mix) >> 8); 7aec: b29f uxth r7, r3 7aee: e036 b.n 7b5e <_lv_blend_fill+0x40e> disp_buf_first[x] = last_res_color; 7af0: 7830 ldrb r0, [r6, #0] 7af2: f362 0004 bfi r0, r2, #0, #5 7af6: 7030 strb r0, [r6, #0] 7af8: 8830 ldrh r0, [r6, #0] 7afa: f364 104a bfi r0, r4, #5, #6 7afe: 8030 strh r0, [r6, #0] 7b00: 0a00 lsrs r0, r0, #8 7b02: f361 00c7 bfi r0, r1, #3, #5 7b06: 7070 strb r0, [r6, #1] 7b08: 3302 adds r3, #2 for(x = 0; x < draw_area_w; x++) { 7b0a: 459b cmp fp, r3 7b0c: d01c beq.n 7b48 <_lv_blend_fill+0x3f8> if(last_dest_color.full != disp_buf_first[x].full) { 7b0e: 461e mov r6, r3 7b10: fa1f f08e uxth.w r0, lr 7b14: f8b3 a000 ldrh.w sl, [r3] 7b18: 4550 cmp r0, sl 7b1a: d0e9 beq.n 7af0 <_lv_blend_fill+0x3a0> last_dest_color = disp_buf_first[x]; 7b1c: f8b3 e000 ldrh.w lr, [r3] 7b20: 7859 ldrb r1, [r3, #1] 7b22: 08c9 lsrs r1, r1, #3 7b24: fb01 c107 mla r1, r1, r7, ip 7b28: f3c1 2104 ubfx r1, r1, #8, #5 LV_COLOR_SET_G(ret, (uint16_t)((uint16_t) premult_c1[1] + LV_COLOR_GET_G(c2) * mix) >> 8); 7b2c: f3ce 1445 ubfx r4, lr, #5, #6 7b30: fb04 8407 mla r4, r4, r7, r8 7b34: f3c4 2405 ubfx r4, r4, #8, #6 LV_COLOR_SET_B(ret, (uint16_t)((uint16_t) premult_c1[2] + LV_COLOR_GET_B(c2) * mix) >> 8); 7b38: 781a ldrb r2, [r3, #0] 7b3a: f002 021f and.w r2, r2, #31 7b3e: fb02 9207 mla r2, r2, r7, r9 7b42: f3c2 2204 ubfx r2, r2, #8, #5 7b46: e7d3 b.n 7af0 <_lv_blend_fill+0x3a0> disp_buf_first += disp_w; 7b48: 9b05 ldr r3, [sp, #20] 7b4a: 9807 ldr r0, [sp, #28] 7b4c: 4403 add r3, r0 7b4e: 9305 str r3, [sp, #20] for(y = 0; y < draw_area_h; y++) { 7b50: 9b06 ldr r3, [sp, #24] 7b52: 3301 adds r3, #1 7b54: 9306 str r3, [sp, #24] 7b56: 980c ldr r0, [sp, #48] ; 0x30 7b58: 4298 cmp r0, r3 7b5a: f43f ae06 beq.w 776a <_lv_blend_fill+0x1a> for(x = 0; x < draw_area_w; x++) { 7b5e: 2d00 cmp r5, #0 7b60: ddf2 ble.n 7b48 <_lv_blend_fill+0x3f8> 7b62: 9805 ldr r0, [sp, #20] 7b64: 4603 mov r3, r0 7b66: 9e08 ldr r6, [sp, #32] 7b68: eb00 0b06 add.w fp, r0, r6 7b6c: e7cf b.n 7b0e <_lv_blend_fill+0x3be> for(y = 0; y < draw_area_h; y++) { 7b6e: 9b0c ldr r3, [sp, #48] ; 0x30 7b70: 2b00 cmp r3, #0 7b72: f77f adfa ble.w 776a <_lv_blend_fill+0x1a> int32_t x_end4 = draw_area_w - 4; 7b76: 9b0b ldr r3, [sp, #44] ; 0x2c 7b78: 3b04 subs r3, #4 7b7a: 930d str r3, [sp, #52] ; 0x34 disp_buf_first += disp_w; 7b7c: 007b lsls r3, r7, #1 7b7e: 930f str r3, [sp, #60] ; 0x3c 7b80: 2300 movs r3, #0 7b82: 930a str r3, [sp, #40] ; 0x28 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 7b84: f8bd 201c ldrh.w r2, [sp, #28] 7b88: f3c2 2cc4 ubfx ip, r2, #11, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 7b8c: f3c2 1e45 ubfx lr, r2, #5, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 7b90: f3c2 0304 ubfx r3, r2, #0, #5 7b94: 9306 str r3, [sp, #24] 7b96: e1de b.n 7f56 <_lv_blend_fill+0x806> FILL_NORMAL_MASK_PX(x, color) 7b98: f8bd 301c ldrh.w r3, [sp, #28] 7b9c: 803b strh r3, [r7, #0] 7b9e: 4643 mov r3, r8 for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 7ba0: 3101 adds r1, #1 7ba2: 428d cmp r5, r1 7ba4: f000 834c beq.w 8240 <_lv_blend_fill+0xaf0> 7ba8: 3702 adds r7, #2 7baa: f018 0f03 tst.w r8, #3 7bae: f000 8355 beq.w 825c <_lv_blend_fill+0xb0c> FILL_NORMAL_MASK_PX(x, color) 7bb2: f818 3b01 ldrb.w r3, [r8], #1 7bb6: 2b00 cmp r3, #0 7bb8: d0f1 beq.n 7b9e <_lv_blend_fill+0x44e> 7bba: 2bff cmp r3, #255 ; 0xff 7bbc: d0ec beq.n 7b98 <_lv_blend_fill+0x448> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 7bbe: f1c3 09ff rsb r9, r3, #255 ; 0xff 7bc2: 787a ldrb r2, [r7, #1] 7bc4: 08d2 lsrs r2, r2, #3 7bc6: fb09 f202 mul.w r2, r9, r2 7bca: fb03 220c mla r2, r3, ip, r2 7bce: eb02 2002 add.w r0, r2, r2, lsl #8 7bd2: eb02 12c0 add.w r2, r2, r0, lsl #7 7bd6: f3c2 52c4 ubfx r2, r2, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 7bda: 8838 ldrh r0, [r7, #0] 7bdc: f3c0 1045 ubfx r0, r0, #5, #6 7be0: fb09 f000 mul.w r0, r9, r0 7be4: fb03 000e mla r0, r3, lr, r0 7be8: eb00 2600 add.w r6, r0, r0, lsl #8 7bec: eb00 10c6 add.w r0, r0, r6, lsl #7 7bf0: f3c0 50c5 ubfx r0, r0, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 7bf4: 783e ldrb r6, [r7, #0] 7bf6: f006 0a1f and.w sl, r6, #31 7bfa: fb09 f90a mul.w r9, r9, sl 7bfe: fb03 9304 mla r3, r3, r4, r9 7c02: eb03 2903 add.w r9, r3, r3, lsl #8 7c06: eb03 13c9 add.w r3, r3, r9, lsl #7 7c0a: 0ddb lsrs r3, r3, #23 7c0c: f363 0604 bfi r6, r3, #0, #5 7c10: 703e strb r6, [r7, #0] 7c12: 883b ldrh r3, [r7, #0] 7c14: f360 134a bfi r3, r0, #5, #6 7c18: 803b strh r3, [r7, #0] 7c1a: 0a1b lsrs r3, r3, #8 7c1c: f362 03c7 bfi r3, r2, #3, #5 7c20: 707b strb r3, [r7, #1] 7c22: e7bc b.n 7b9e <_lv_blend_fill+0x44e> disp_buf_first[x] = color; 7c24: f8bd 401c ldrh.w r4, [sp, #28] 7c28: f820 4c06 strh.w r4, [r0, #-6] disp_buf_first[x + 1] = color; 7c2c: f820 4c04 strh.w r4, [r0, #-4] disp_buf_first[x + 2] = color; 7c30: f820 4c02 strh.w r4, [r0, #-2] disp_buf_first[x + 3] = color; 7c34: 8004 strh r4, [r0, #0] for(; x <= x_end4; x += 4) { 7c36: 3104 adds r1, #4 7c38: 3304 adds r3, #4 7c3a: 3008 adds r0, #8 7c3c: 428f cmp r7, r1 7c3e: f2c0 8129 blt.w 7e94 <_lv_blend_fill+0x744> 7c42: 461a mov r2, r3 if(*mask32) { 7c44: f853 4c04 ldr.w r4, [r3, #-4] 7c48: 2c00 cmp r4, #0 7c4a: d0f4 beq.n 7c36 <_lv_blend_fill+0x4e6> if((*mask32) == 0xFFFFFFFF) { 7c4c: f1b4 3fff cmp.w r4, #4294967295 7c50: d0e8 beq.n 7c24 <_lv_blend_fill+0x4d4> FILL_NORMAL_MASK_PX(x, color) 7c52: f813 8c04 ldrb.w r8, [r3, #-4] 7c56: f1b8 0f00 cmp.w r8, #0 7c5a: d03f beq.n 7cdc <_lv_blend_fill+0x58c> 7c5c: f1b8 0fff cmp.w r8, #255 ; 0xff 7c60: f000 8105 beq.w 7e6e <_lv_blend_fill+0x71e> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 7c64: f1c8 06ff rsb r6, r8, #255 ; 0xff 7c68: f810 4c05 ldrb.w r4, [r0, #-5] 7c6c: 08e4 lsrs r4, r4, #3 7c6e: fb06 f404 mul.w r4, r6, r4 7c72: fb08 440c mla r4, r8, ip, r4 7c76: eb04 2504 add.w r5, r4, r4, lsl #8 7c7a: eb04 14c5 add.w r4, r4, r5, lsl #7 7c7e: f3c4 54c4 ubfx r4, r4, #23, #5 7c82: 9409 str r4, [sp, #36] ; 0x24 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 7c84: f830 5c06 ldrh.w r5, [r0, #-6] 7c88: f3c5 1545 ubfx r5, r5, #5, #6 7c8c: fb06 f505 mul.w r5, r6, r5 7c90: fb08 550e mla r5, r8, lr, r5 7c94: eb05 2905 add.w r9, r5, r5, lsl #8 7c98: eb05 15c9 add.w r5, r5, r9, lsl #7 7c9c: f3c5 55c5 ubfx r5, r5, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 7ca0: f810 9c06 ldrb.w r9, [r0, #-6] 7ca4: f009 0b1f and.w fp, r9, #31 7ca8: fb06 f60b mul.w r6, r6, fp 7cac: 9c06 ldr r4, [sp, #24] 7cae: fb08 6804 mla r8, r8, r4, r6 7cb2: eb08 2608 add.w r6, r8, r8, lsl #8 7cb6: eb08 16c6 add.w r6, r8, r6, lsl #7 7cba: 0df6 lsrs r6, r6, #23 7cbc: f366 0904 bfi r9, r6, #0, #5 7cc0: f800 9c06 strb.w r9, [r0, #-6] 7cc4: f830 6c06 ldrh.w r6, [r0, #-6] 7cc8: f365 164a bfi r6, r5, #5, #6 7ccc: f820 6c06 strh.w r6, [r0, #-6] 7cd0: 0a36 lsrs r6, r6, #8 7cd2: 9c09 ldr r4, [sp, #36] ; 0x24 7cd4: f364 06c7 bfi r6, r4, #3, #5 7cd8: f800 6c05 strb.w r6, [r0, #-5] FILL_NORMAL_MASK_PX(x + 1, color) 7cdc: f812 8c03 ldrb.w r8, [r2, #-3] 7ce0: f1b8 0f00 cmp.w r8, #0 7ce4: d03f beq.n 7d66 <_lv_blend_fill+0x616> 7ce6: f1b8 0fff cmp.w r8, #255 ; 0xff 7cea: f000 80c5 beq.w 7e78 <_lv_blend_fill+0x728> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 7cee: f1c8 06ff rsb r6, r8, #255 ; 0xff 7cf2: f810 4c03 ldrb.w r4, [r0, #-3] 7cf6: 08e4 lsrs r4, r4, #3 7cf8: fb06 f404 mul.w r4, r6, r4 7cfc: fb08 440c mla r4, r8, ip, r4 7d00: eb04 2504 add.w r5, r4, r4, lsl #8 7d04: eb04 14c5 add.w r4, r4, r5, lsl #7 7d08: f3c4 54c4 ubfx r4, r4, #23, #5 7d0c: 9409 str r4, [sp, #36] ; 0x24 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 7d0e: f830 5c04 ldrh.w r5, [r0, #-4] 7d12: f3c5 1545 ubfx r5, r5, #5, #6 7d16: fb06 f505 mul.w r5, r6, r5 7d1a: fb08 550e mla r5, r8, lr, r5 7d1e: eb05 2905 add.w r9, r5, r5, lsl #8 7d22: eb05 15c9 add.w r5, r5, r9, lsl #7 7d26: f3c5 55c5 ubfx r5, r5, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 7d2a: f810 9c04 ldrb.w r9, [r0, #-4] 7d2e: f009 0b1f and.w fp, r9, #31 7d32: fb06 f60b mul.w r6, r6, fp 7d36: 9c06 ldr r4, [sp, #24] 7d38: fb08 6804 mla r8, r8, r4, r6 7d3c: eb08 2608 add.w r6, r8, r8, lsl #8 7d40: eb08 16c6 add.w r6, r8, r6, lsl #7 7d44: 0df6 lsrs r6, r6, #23 7d46: f366 0904 bfi r9, r6, #0, #5 7d4a: f800 9c04 strb.w r9, [r0, #-4] 7d4e: f830 6c04 ldrh.w r6, [r0, #-4] 7d52: f365 164a bfi r6, r5, #5, #6 7d56: f820 6c04 strh.w r6, [r0, #-4] 7d5a: 0a36 lsrs r6, r6, #8 7d5c: 9c09 ldr r4, [sp, #36] ; 0x24 7d5e: f364 06c7 bfi r6, r4, #3, #5 7d62: f800 6c03 strb.w r6, [r0, #-3] FILL_NORMAL_MASK_PX(x + 2, color) 7d66: f812 8c02 ldrb.w r8, [r2, #-2] 7d6a: f1b8 0f00 cmp.w r8, #0 7d6e: d03f beq.n 7df0 <_lv_blend_fill+0x6a0> 7d70: f1b8 0fff cmp.w r8, #255 ; 0xff 7d74: f000 8085 beq.w 7e82 <_lv_blend_fill+0x732> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 7d78: f1c8 06ff rsb r6, r8, #255 ; 0xff 7d7c: f810 4c01 ldrb.w r4, [r0, #-1] 7d80: 08e4 lsrs r4, r4, #3 7d82: fb06 f404 mul.w r4, r6, r4 7d86: fb08 440c mla r4, r8, ip, r4 7d8a: eb04 2504 add.w r5, r4, r4, lsl #8 7d8e: eb04 14c5 add.w r4, r4, r5, lsl #7 7d92: f3c4 54c4 ubfx r4, r4, #23, #5 7d96: 9409 str r4, [sp, #36] ; 0x24 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 7d98: f830 5c02 ldrh.w r5, [r0, #-2] 7d9c: f3c5 1545 ubfx r5, r5, #5, #6 7da0: fb06 f505 mul.w r5, r6, r5 7da4: fb08 550e mla r5, r8, lr, r5 7da8: eb05 2905 add.w r9, r5, r5, lsl #8 7dac: eb05 15c9 add.w r5, r5, r9, lsl #7 7db0: f3c5 55c5 ubfx r5, r5, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 7db4: f810 9c02 ldrb.w r9, [r0, #-2] 7db8: f009 0b1f and.w fp, r9, #31 7dbc: fb06 f60b mul.w r6, r6, fp 7dc0: 9c06 ldr r4, [sp, #24] 7dc2: fb08 6804 mla r8, r8, r4, r6 7dc6: eb08 2608 add.w r6, r8, r8, lsl #8 7dca: eb08 16c6 add.w r6, r8, r6, lsl #7 7dce: 0df6 lsrs r6, r6, #23 7dd0: f366 0904 bfi r9, r6, #0, #5 7dd4: f800 9c02 strb.w r9, [r0, #-2] 7dd8: f830 6c02 ldrh.w r6, [r0, #-2] 7ddc: f365 164a bfi r6, r5, #5, #6 7de0: f820 6c02 strh.w r6, [r0, #-2] 7de4: 0a36 lsrs r6, r6, #8 7de6: 9c09 ldr r4, [sp, #36] ; 0x24 7de8: f364 06c7 bfi r6, r4, #3, #5 7dec: f800 6c01 strb.w r6, [r0, #-1] FILL_NORMAL_MASK_PX(x + 3, color) 7df0: f812 8c01 ldrb.w r8, [r2, #-1] 7df4: f1b8 0f00 cmp.w r8, #0 7df8: f43f af1d beq.w 7c36 <_lv_blend_fill+0x4e6> 7dfc: f1b8 0fff cmp.w r8, #255 ; 0xff 7e00: d044 beq.n 7e8c <_lv_blend_fill+0x73c> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 7e02: f1c8 06ff rsb r6, r8, #255 ; 0xff 7e06: 7844 ldrb r4, [r0, #1] 7e08: 08e4 lsrs r4, r4, #3 7e0a: fb06 f404 mul.w r4, r6, r4 7e0e: fb08 440c mla r4, r8, ip, r4 7e12: eb04 2504 add.w r5, r4, r4, lsl #8 7e16: eb04 14c5 add.w r4, r4, r5, lsl #7 7e1a: f3c4 5bc4 ubfx fp, r4, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 7e1e: 8805 ldrh r5, [r0, #0] 7e20: f3c5 1545 ubfx r5, r5, #5, #6 7e24: fb06 f505 mul.w r5, r6, r5 7e28: fb08 550e mla r5, r8, lr, r5 7e2c: eb05 2905 add.w r9, r5, r5, lsl #8 7e30: eb05 15c9 add.w r5, r5, r9, lsl #7 7e34: f3c5 55c5 ubfx r5, r5, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 7e38: f890 9000 ldrb.w r9, [r0] 7e3c: f009 0a1f and.w sl, r9, #31 7e40: fb06 f60a mul.w r6, r6, sl 7e44: 9c06 ldr r4, [sp, #24] 7e46: fb08 6804 mla r8, r8, r4, r6 7e4a: eb08 2608 add.w r6, r8, r8, lsl #8 7e4e: eb08 16c6 add.w r6, r8, r6, lsl #7 7e52: 0df6 lsrs r6, r6, #23 7e54: f366 0904 bfi r9, r6, #0, #5 7e58: f880 9000 strb.w r9, [r0] 7e5c: 8806 ldrh r6, [r0, #0] 7e5e: f365 164a bfi r6, r5, #5, #6 7e62: 8006 strh r6, [r0, #0] 7e64: 0a36 lsrs r6, r6, #8 7e66: f36b 06c7 bfi r6, fp, #3, #5 7e6a: 7046 strb r6, [r0, #1] 7e6c: e6e3 b.n 7c36 <_lv_blend_fill+0x4e6> FILL_NORMAL_MASK_PX(x, color) 7e6e: f8bd 401c ldrh.w r4, [sp, #28] 7e72: f820 4c06 strh.w r4, [r0, #-6] 7e76: e731 b.n 7cdc <_lv_blend_fill+0x58c> FILL_NORMAL_MASK_PX(x + 1, color) 7e78: f8bd 401c ldrh.w r4, [sp, #28] 7e7c: f820 4c04 strh.w r4, [r0, #-4] 7e80: e771 b.n 7d66 <_lv_blend_fill+0x616> FILL_NORMAL_MASK_PX(x + 2, color) 7e82: f8bd 401c ldrh.w r4, [sp, #28] 7e86: f820 4c02 strh.w r4, [r0, #-2] 7e8a: e7b1 b.n 7df0 <_lv_blend_fill+0x6a0> FILL_NORMAL_MASK_PX(x + 3, color) 7e8c: f8bd 401c ldrh.w r4, [sp, #28] 7e90: 8004 strh r4, [r0, #0] 7e92: e6d0 b.n 7c36 <_lv_blend_fill+0x4e6> 7e94: 9d0e ldr r5, [sp, #56] ; 0x38 for(; x < draw_area_w ; x++) { 7e96: 428d cmp r5, r1 7e98: dd4e ble.n 7f38 <_lv_blend_fill+0x7e8> 7e9a: 1e54 subs r4, r2, #1 7e9c: 9b05 ldr r3, [sp, #20] 7e9e: eb03 0841 add.w r8, r3, r1, lsl #1 7ea2: 9e06 ldr r6, [sp, #24] 7ea4: e008 b.n 7eb8 <_lv_blend_fill+0x768> FILL_NORMAL_MASK_PX(x, color) 7ea6: f8bd 301c ldrh.w r3, [sp, #28] 7eaa: f8a8 3000 strh.w r3, [r8] for(; x < draw_area_w ; x++) { 7eae: 3101 adds r1, #1 7eb0: f108 0802 add.w r8, r8, #2 7eb4: 428d cmp r5, r1 7eb6: dd3f ble.n 7f38 <_lv_blend_fill+0x7e8> FILL_NORMAL_MASK_PX(x, color) 7eb8: f814 3f01 ldrb.w r3, [r4, #1]! 7ebc: 2b00 cmp r3, #0 7ebe: d0f6 beq.n 7eae <_lv_blend_fill+0x75e> 7ec0: 2bff cmp r3, #255 ; 0xff 7ec2: d0f0 beq.n 7ea6 <_lv_blend_fill+0x756> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 7ec4: f1c3 09ff rsb r9, r3, #255 ; 0xff 7ec8: f898 2001 ldrb.w r2, [r8, #1] 7ecc: 08d2 lsrs r2, r2, #3 7ece: fb09 f202 mul.w r2, r9, r2 7ed2: fb03 220c mla r2, r3, ip, r2 7ed6: eb02 2002 add.w r0, r2, r2, lsl #8 7eda: eb02 12c0 add.w r2, r2, r0, lsl #7 7ede: f3c2 52c4 ubfx r2, r2, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 7ee2: f8b8 0000 ldrh.w r0, [r8] 7ee6: f3c0 1045 ubfx r0, r0, #5, #6 7eea: fb09 f000 mul.w r0, r9, r0 7eee: fb03 000e mla r0, r3, lr, r0 7ef2: eb00 2700 add.w r7, r0, r0, lsl #8 7ef6: eb00 10c7 add.w r0, r0, r7, lsl #7 7efa: f3c0 50c5 ubfx r0, r0, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 7efe: f898 7000 ldrb.w r7, [r8] 7f02: f007 0a1f and.w sl, r7, #31 7f06: fb09 f90a mul.w r9, r9, sl 7f0a: fb03 9306 mla r3, r3, r6, r9 7f0e: eb03 2903 add.w r9, r3, r3, lsl #8 7f12: eb03 13c9 add.w r3, r3, r9, lsl #7 7f16: 0ddb lsrs r3, r3, #23 7f18: f363 0704 bfi r7, r3, #0, #5 7f1c: f888 7000 strb.w r7, [r8] 7f20: f8b8 3000 ldrh.w r3, [r8] 7f24: f360 134a bfi r3, r0, #5, #6 7f28: f8a8 3000 strh.w r3, [r8] 7f2c: 0a1b lsrs r3, r3, #8 7f2e: f362 03c7 bfi r3, r2, #3, #5 7f32: f888 3001 strb.w r3, [r8, #1] 7f36: e7ba b.n 7eae <_lv_blend_fill+0x75e> disp_buf_first += disp_w; 7f38: 9b05 ldr r3, [sp, #20] 7f3a: 9a0f ldr r2, [sp, #60] ; 0x3c 7f3c: 4413 add r3, r2 7f3e: 9305 str r3, [sp, #20] 7f40: 9b08 ldr r3, [sp, #32] 7f42: 9a0b ldr r2, [sp, #44] ; 0x2c 7f44: 4413 add r3, r2 7f46: 9308 str r3, [sp, #32] for(y = 0; y < draw_area_h; y++) { 7f48: 9b0a ldr r3, [sp, #40] ; 0x28 7f4a: 3301 adds r3, #1 7f4c: 930a str r3, [sp, #40] ; 0x28 7f4e: 9a0c ldr r2, [sp, #48] ; 0x30 7f50: 429a cmp r2, r3 7f52: f43f ac0a beq.w 776a <_lv_blend_fill+0x1a> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 7f56: 2d00 cmp r5, #0 7f58: f340 8170 ble.w 823c <_lv_blend_fill+0xaec> 7f5c: 9a08 ldr r2, [sp, #32] 7f5e: f012 0f03 tst.w r2, #3 7f62: f000 8179 beq.w 8258 <_lv_blend_fill+0xb08> 7f66: 9f05 ldr r7, [sp, #20] 7f68: 4690 mov r8, r2 7f6a: 2100 movs r1, #0 7f6c: 9c06 ldr r4, [sp, #24] 7f6e: e620 b.n 7bb2 <_lv_blend_fill+0x462> if(*mask_tmp_x != last_mask || last_dest_color.full != disp_buf_first[x].full) { 7f70: 2aff cmp r2, #255 ; 0xff 7f72: d002 beq.n 7f7a <_lv_blend_fill+0x82a> if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 7f74: f8dd e024 ldr.w lr, [sp, #36] ; 0x24 7f78: e004 b.n 7f84 <_lv_blend_fill+0x834> 7f7a: f8dd e024 ldr.w lr, [sp, #36] ; 0x24 if(*mask_tmp_x != last_mask || last_dest_color.full != disp_buf_first[x].full) { 7f7e: 882a ldrh r2, [r5, #0] 7f80: 429a cmp r2, r3 7f82: d032 beq.n 7fea <_lv_blend_fill+0x89a> if(opa_tmp == LV_OPA_COVER) last_res_color = color; 7f84: f1be 0fff cmp.w lr, #255 ; 0xff 7f88: d042 beq.n 8010 <_lv_blend_fill+0x8c0> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 7f8a: f1ce 04ff rsb r4, lr, #255 ; 0xff 7f8e: 786b ldrb r3, [r5, #1] 7f90: 08db lsrs r3, r3, #3 7f92: fb0e f20c mul.w r2, lr, ip 7f96: fb04 2303 mla r3, r4, r3, r2 7f9a: eb03 2203 add.w r2, r3, r3, lsl #8 7f9e: eb03 13c2 add.w r3, r3, r2, lsl #7 7fa2: f3c3 53c4 ubfx r3, r3, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 7fa6: 882a ldrh r2, [r5, #0] 7fa8: f3c2 1245 ubfx r2, r2, #5, #6 7fac: fb0b f10e mul.w r1, fp, lr 7fb0: fb04 1202 mla r2, r4, r2, r1 7fb4: eb02 2102 add.w r1, r2, r2, lsl #8 7fb8: eb02 12c1 add.w r2, r2, r1, lsl #7 7fbc: f3c2 52c5 ubfx r2, r2, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 7fc0: 7829 ldrb r1, [r5, #0] 7fc2: f001 011f and.w r1, r1, #31 7fc6: fb09 f60e mul.w r6, r9, lr 7fca: fb04 6101 mla r1, r4, r1, r6 7fce: eb01 2601 add.w r6, r1, r1, lsl #8 7fd2: eb01 11c6 add.w r1, r1, r6, lsl #7 7fd6: 0dc9 lsrs r1, r1, #23 7fd8: f361 0a04 bfi sl, r1, #0, #5 7fdc: f362 1a4a bfi sl, r2, #5, #6 7fe0: f363 2acf bfi sl, r3, #11, #5 7fe4: fa1f f18a uxth.w r1, sl last_dest_color.full = disp_buf_first[x].full; 7fe8: 882b ldrh r3, [r5, #0] disp_buf_first[x] = last_res_color; 7fea: 8029 strh r1, [r5, #0] 7fec: 4602 mov r2, r0 7fee: 3502 adds r5, #2 for(x = 0; x < draw_area_w; x++) { 7ff0: 45a8 cmp r8, r5 7ff2: d00f beq.n 8014 <_lv_blend_fill+0x8c4> if(*mask_tmp_x) { 7ff4: f817 0f01 ldrb.w r0, [r7, #1]! 7ff8: 2800 cmp r0, #0 7ffa: d0f8 beq.n 7fee <_lv_blend_fill+0x89e> if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 7ffc: 4290 cmp r0, r2 7ffe: d0be beq.n 7f7e <_lv_blend_fill+0x82e> 8000: 28ff cmp r0, #255 ; 0xff 8002: d0b5 beq.n 7f70 <_lv_blend_fill+0x820> (uint32_t)((uint32_t)(*mask_tmp_x) * opa) >> 8; 8004: 9b07 ldr r3, [sp, #28] 8006: fb03 fe00 mul.w lr, r3, r0 if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 800a: f3ce 2e07 ubfx lr, lr, #8, #8 800e: e7b9 b.n 7f84 <_lv_blend_fill+0x834> if(opa_tmp == LV_OPA_COVER) last_res_color = color; 8010: 9908 ldr r1, [sp, #32] 8012: e7e9 b.n 7fe8 <_lv_blend_fill+0x898> disp_buf_first += disp_w; 8014: 9805 ldr r0, [sp, #20] 8016: 9c0c ldr r4, [sp, #48] ; 0x30 8018: 4420 add r0, r4 801a: 9005 str r0, [sp, #20] for(y = draw_area->y1; y <= draw_area->y2; y++) { 801c: 980a ldr r0, [sp, #40] ; 0x28 801e: 3001 adds r0, #1 8020: 4604 mov r4, r0 8022: 900a str r0, [sp, #40] ; 0x28 8024: 9806 ldr r0, [sp, #24] 8026: 9d0b ldr r5, [sp, #44] ; 0x2c 8028: 4428 add r0, r5 802a: 9006 str r0, [sp, #24] 802c: f9bd 0046 ldrsh.w r0, [sp, #70] ; 0x46 8030: 4284 cmp r4, r0 8032: f73f ab9a bgt.w 776a <_lv_blend_fill+0x1a> for(x = 0; x < draw_area_w; x++) { 8036: 980d ldr r0, [sp, #52] ; 0x34 8038: 2800 cmp r0, #0 803a: ddeb ble.n 8014 <_lv_blend_fill+0x8c4> 803c: 9805 ldr r0, [sp, #20] 803e: 4605 mov r5, r0 8040: 9c0e ldr r4, [sp, #56] ; 0x38 8042: eb00 0804 add.w r8, r0, r4 8046: 9f06 ldr r7, [sp, #24] 8048: e7d4 b.n 7ff4 <_lv_blend_fill+0x8a4> 804a: f8bd 5024 ldrh.w r5, [sp, #36] ; 0x24 switch(mode) { 804e: f1b9 0f01 cmp.w r9, #1 8052: d040 beq.n 80d6 <_lv_blend_fill+0x986> 8054: f1b9 0f02 cmp.w r9, #2 8058: d132 bne.n 80c0 <_lv_blend_fill+0x970> blend_fp = color_blend_true_color_subtractive; 805a: 4b83 ldr r3, [pc, #524] ; (8268 <_lv_blend_fill+0xb18>) 805c: 9305 str r3, [sp, #20] 805e: f8bd 2024 ldrh.w r2, [sp, #36] ; 0x24 8062: f002 081f and.w r8, r2, #31 8066: f3c2 1645 ubfx r6, r2, #5, #6 806a: f3c2 23c4 ubfx r3, r2, #11, #5 806e: 4699 mov r9, r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 8070: 8aba ldrh r2, [r7, #20] 8072: 3201 adds r2, #1 8074: 8a3b ldrh r3, [r7, #16] 8076: 1ad3 subs r3, r2, r3 8078: b21f sxth r7, r3 lv_color_t * disp_buf_tmp = disp_buf + disp_w * draw_area->y1; 807a: f8cd c024 str.w ip, [sp, #36] ; 0x24 807e: fb0c f307 mul.w r3, ip, r7 8082: 9a06 ldr r2, [sp, #24] 8084: eb02 0243 add.w r2, r2, r3, lsl #1 8088: 9207 str r2, [sp, #28] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 808a: 2c01 cmp r4, #1 808c: d026 beq.n 80dc <_lv_blend_fill+0x98c> 808e: 3001 adds r0, #1 8090: 9a0a ldr r2, [sp, #40] ; 0x28 8092: 1a80 subs r0, r0, r2 8094: b202 sxth r2, r0 8096: 920c str r2, [sp, #48] ; 0x30 const lv_opa_t * mask_tmp = mask - draw_area->x1; 8098: 9a08 ldr r2, [sp, #32] 809a: 990b ldr r1, [sp, #44] ; 0x2c 809c: 1a52 subs r2, r2, r1 809e: 9208 str r2, [sp, #32] last_dest_color.full = disp_buf_tmp[0].full; 80a0: 9a06 ldr r2, [sp, #24] 80a2: f832 2013 ldrh.w r2, [r2, r3, lsl #1] for(y = draw_area->y1; y <= draw_area->y2; y++) { 80a6: 45f4 cmp ip, lr 80a8: f73f ab5f bgt.w 776a <_lv_blend_fill+0x1a> disp_buf_tmp += disp_w; 80ac: 007b lsls r3, r7, #1 80ae: 930b str r3, [sp, #44] ; 0x2c 80b0: 4610 mov r0, r2 80b2: 2100 movs r1, #0 lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : (uint32_t)((uint32_t)mask_tmp[x] * opa) >> 8; 80b4: f8cd b018 str.w fp, [sp, #24] 80b8: f8cd b028 str.w fp, [sp, #40] ; 0x28 80bc: 46cb mov fp, r9 80be: e0b0 b.n 8222 <_lv_blend_fill+0xad2> LV_LOG_WARN("fill_blended: unsupported blend mode"); 80c0: 4b6a ldr r3, [pc, #424] ; (826c <_lv_blend_fill+0xb1c>) 80c2: 9300 str r3, [sp, #0] 80c4: 4b6a ldr r3, [pc, #424] ; (8270 <_lv_blend_fill+0xb20>) 80c6: f44f 7204 mov.w r2, #528 ; 0x210 80ca: 496a ldr r1, [pc, #424] ; (8274 <_lv_blend_fill+0xb24>) 80cc: 2002 movs r0, #2 80ce: 4c6a ldr r4, [pc, #424] ; (8278 <_lv_blend_fill+0xb28>) 80d0: 47a0 blx r4 80d2: f7ff bb4a b.w 776a <_lv_blend_fill+0x1a> blend_fp = color_blend_true_color_additive; 80d6: 4b69 ldr r3, [pc, #420] ; (827c <_lv_blend_fill+0xb2c>) 80d8: 9305 str r3, [sp, #20] 80da: e7c0 b.n 805e <_lv_blend_fill+0x90e> lv_color_t last_dest_color = LV_COLOR_BLACK; 80dc: f04f 0a00 mov.w sl, #0 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 80e0: fb0b f309 mul.w r3, fp, r9 80e4: eb03 2003 add.w r0, r3, r3, lsl #8 80e8: eb03 13c0 add.w r3, r3, r0, lsl #7 80ec: f3c3 50c4 ubfx r0, r3, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 80f0: fb0b f306 mul.w r3, fp, r6 80f4: eb03 2203 add.w r2, r3, r3, lsl #8 80f8: eb03 13c2 add.w r3, r3, r2, lsl #7 80fc: f3c3 52c5 ubfx r2, r3, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 8100: fb0b f308 mul.w r3, fp, r8 8104: eb03 2103 add.w r1, r3, r3, lsl #8 8108: eb03 13c1 add.w r3, r3, r1, lsl #7 810c: f3c3 53c4 ubfx r3, r3, #23, #5 for(y = draw_area->y1; y <= draw_area->y2; y++) { 8110: 45f4 cmp ip, lr 8112: f73f ab2a bgt.w 776a <_lv_blend_fill+0x1a> disp_buf_tmp += disp_w; 8116: 0079 lsls r1, r7, #1 8118: 9108 str r1, [sp, #32] 811a: f8cd b018 str.w fp, [sp, #24] 811e: 46cb mov fp, r9 8120: e03a b.n 8198 <_lv_blend_fill+0xa48> disp_buf_tmp[x] = last_res_color; 8122: 7821 ldrb r1, [r4, #0] 8124: f363 0104 bfi r1, r3, #0, #5 8128: 7021 strb r1, [r4, #0] 812a: 8821 ldrh r1, [r4, #0] 812c: f362 114a bfi r1, r2, #5, #6 8130: 8021 strh r1, [r4, #0] 8132: 0a09 lsrs r1, r1, #8 8134: f360 01c7 bfi r1, r0, #3, #5 8138: 7061 strb r1, [r4, #1] for(x = draw_area->x1; x <= draw_area->x2; x++) { 813a: f109 0901 add.w r9, r9, #1 813e: 3702 adds r7, #2 8140: f9bd 1044 ldrsh.w r1, [sp, #68] ; 0x44 8144: 4589 cmp r9, r1 8146: dc1a bgt.n 817e <_lv_blend_fill+0xa2e> if(last_dest_color.full != disp_buf_tmp[x].full) { 8148: 463c mov r4, r7 814a: fa1f f18a uxth.w r1, sl 814e: f8b7 e000 ldrh.w lr, [r7] 8152: 4571 cmp r1, lr 8154: d0e5 beq.n 8122 <_lv_blend_fill+0x9d2> last_dest_color = disp_buf_tmp[x]; 8156: f8b7 a000 ldrh.w sl, [r7] last_res_color = blend_fp(color, disp_buf_tmp[x], opa); 815a: f368 0504 bfi r5, r8, #0, #5 815e: f366 154a bfi r5, r6, #5, #6 8162: f36b 25cf bfi r5, fp, #11, #5 8166: 9a06 ldr r2, [sp, #24] 8168: 4651 mov r1, sl 816a: 4628 mov r0, r5 816c: 9b05 ldr r3, [sp, #20] 816e: 4798 blx r3 8170: f000 031f and.w r3, r0, #31 8174: f3c0 1245 ubfx r2, r0, #5, #6 8178: f3c0 20c4 ubfx r0, r0, #11, #5 817c: e7d1 b.n 8122 <_lv_blend_fill+0x9d2> disp_buf_tmp += disp_w; 817e: 9907 ldr r1, [sp, #28] 8180: 9c08 ldr r4, [sp, #32] 8182: 4421 add r1, r4 8184: 9107 str r1, [sp, #28] for(y = draw_area->y1; y <= draw_area->y2; y++) { 8186: 9909 ldr r1, [sp, #36] ; 0x24 8188: 3101 adds r1, #1 818a: 460c mov r4, r1 818c: 9109 str r1, [sp, #36] ; 0x24 818e: f9bd 1046 ldrsh.w r1, [sp, #70] ; 0x46 8192: 428c cmp r4, r1 8194: f73f aae9 bgt.w 776a <_lv_blend_fill+0x1a> for(x = draw_area->x1; x <= draw_area->x2; x++) { 8198: f9bd 7040 ldrsh.w r7, [sp, #64] ; 0x40 819c: 46b9 mov r9, r7 819e: f9bd 1044 ldrsh.w r1, [sp, #68] ; 0x44 81a2: 428f cmp r7, r1 81a4: dceb bgt.n 817e <_lv_blend_fill+0xa2e> 81a6: 9907 ldr r1, [sp, #28] 81a8: eb01 0747 add.w r7, r1, r7, lsl #1 81ac: e7cc b.n 8148 <_lv_blend_fill+0x9f8> lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : (uint32_t)((uint32_t)mask_tmp[x] * opa) >> 8; 81ae: 2bf9 cmp r3, #249 ; 0xf9 81b0: bf9d ittte ls 81b2: 9a0a ldrls r2, [sp, #40] ; 0x28 81b4: 4353 mulls r3, r2 81b6: f3c3 2207 ubfxls r2, r3, #8, #8 81ba: 9a06 ldrhi r2, [sp, #24] last_res_color = blend_fp(color, disp_buf_tmp[x], opa_tmp); 81bc: f368 0504 bfi r5, r8, #0, #5 81c0: f366 154a bfi r5, r6, #5, #6 81c4: f36b 25cf bfi r5, fp, #11, #5 81c8: 8821 ldrh r1, [r4, #0] 81ca: 4628 mov r0, r5 81cc: 9b05 ldr r3, [sp, #20] 81ce: 4798 blx r3 81d0: b280 uxth r0, r0 last_mask = mask_tmp[x]; 81d2: f89a 1000 ldrb.w r1, [sl] last_dest_color.full = disp_buf_tmp[x].full; 81d6: 8822 ldrh r2, [r4, #0] disp_buf_tmp[x] = last_res_color; 81d8: 8020 strh r0, [r4, #0] for(x = draw_area->x1; x <= draw_area->x2; x++) { 81da: f109 0901 add.w r9, r9, #1 81de: 3701 adds r7, #1 81e0: 3402 adds r4, #2 81e2: f9bd 3044 ldrsh.w r3, [sp, #68] ; 0x44 81e6: 4599 cmp r9, r3 81e8: dc0a bgt.n 8200 <_lv_blend_fill+0xab0> 81ea: 46ba mov sl, r7 if(mask_tmp[x] == 0) continue; 81ec: 783b ldrb r3, [r7, #0] 81ee: 2b00 cmp r3, #0 81f0: d0f3 beq.n 81da <_lv_blend_fill+0xa8a> if(mask_tmp[x] != last_mask || last_dest_color.full != disp_buf_tmp[x].full) { 81f2: 428b cmp r3, r1 81f4: d1db bne.n 81ae <_lv_blend_fill+0xa5e> 81f6: f8b4 e000 ldrh.w lr, [r4] 81fa: 4596 cmp lr, r2 81fc: d1d7 bne.n 81ae <_lv_blend_fill+0xa5e> 81fe: e7eb b.n 81d8 <_lv_blend_fill+0xa88> disp_buf_tmp += disp_w; 8200: 9b07 ldr r3, [sp, #28] 8202: 9c0b ldr r4, [sp, #44] ; 0x2c 8204: 4423 add r3, r4 8206: 9307 str r3, [sp, #28] 8208: 9b08 ldr r3, [sp, #32] 820a: 9c0c ldr r4, [sp, #48] ; 0x30 820c: 4423 add r3, r4 820e: 9308 str r3, [sp, #32] for(y = draw_area->y1; y <= draw_area->y2; y++) { 8210: 9b09 ldr r3, [sp, #36] ; 0x24 8212: 3301 adds r3, #1 8214: 461c mov r4, r3 8216: 9309 str r3, [sp, #36] ; 0x24 8218: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46 821c: 429c cmp r4, r3 821e: f73f aaa4 bgt.w 776a <_lv_blend_fill+0x1a> for(x = draw_area->x1; x <= draw_area->x2; x++) { 8222: f9bd 4040 ldrsh.w r4, [sp, #64] ; 0x40 8226: 46a1 mov r9, r4 8228: f9bd 3044 ldrsh.w r3, [sp, #68] ; 0x44 822c: 429c cmp r4, r3 822e: dce7 bgt.n 8200 <_lv_blend_fill+0xab0> 8230: 9b08 ldr r3, [sp, #32] 8232: 191f adds r7, r3, r4 8234: 9b07 ldr r3, [sp, #28] 8236: eb03 0444 add.w r4, r3, r4, lsl #1 823a: e7d6 b.n 81ea <_lv_blend_fill+0xa9a> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 823c: 9b08 ldr r3, [sp, #32] 823e: 2100 movs r1, #0 for(; x <= x_end4; x += 4) { 8240: 9a0d ldr r2, [sp, #52] ; 0x34 8242: 428a cmp r2, r1 8244: f6ff ae78 blt.w 7f38 <_lv_blend_fill+0x7e8> 8248: 3304 adds r3, #4 824a: 1cc8 adds r0, r1, #3 824c: 9a05 ldr r2, [sp, #20] 824e: eb02 0040 add.w r0, r2, r0, lsl #1 8252: 950e str r5, [sp, #56] ; 0x38 8254: 9f0d ldr r7, [sp, #52] ; 0x34 8256: e4f4 b.n 7c42 <_lv_blend_fill+0x4f2> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 8258: 9b08 ldr r3, [sp, #32] 825a: 2100 movs r1, #0 for(; x <= x_end4; x += 4) { 825c: 9a0d ldr r2, [sp, #52] ; 0x34 825e: 428a cmp r2, r1 8260: daf2 bge.n 8248 <_lv_blend_fill+0xaf8> 8262: 461a mov r2, r3 8264: e619 b.n 7e9a <_lv_blend_fill+0x74a> 8266: bf00 nop 8268: 0000769f .word 0x0000769f 826c: 00024c90 .word 0x00024c90 8270: 00024c44 .word 0x00024c44 8274: 00024c60 .word 0x00024c60 8278: 0001225d .word 0x0001225d 827c: 000075e9 .word 0x000075e9 00008280 <_lv_blend_map>: { 8280: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 8284: b091 sub sp, #68 ; 0x44 8286: f89d 4068 ldrb.w r4, [sp, #104] ; 0x68 828a: f89d a06c ldrb.w sl, [sp, #108] ; 0x6c 828e: f89d 5070 ldrb.w r5, [sp, #112] ; 0x70 if(opa < LV_OPA_MIN) return; 8292: f1ba 0f04 cmp.w sl, #4 8296: d900 bls.n 829a <_lv_blend_map+0x1a> if(mask_res == LV_DRAW_MASK_RES_TRANSP) return; 8298: b914 cbnz r4, 82a0 <_lv_blend_map+0x20> } 829a: b011 add sp, #68 ; 0x44 829c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 82a0: 9304 str r3, [sp, #16] 82a2: 9207 str r2, [sp, #28] 82a4: 460f mov r7, r1 82a6: 4601 mov r1, r0 is_common = _lv_area_intersect(&draw_area, clip_area, map_area); 82a8: 463a mov r2, r7 82aa: a80e add r0, sp, #56 ; 0x38 82ac: 4bbc ldr r3, [pc, #752] ; (85a0 <_lv_blend_map+0x320>) 82ae: 4798 blx r3 if(!is_common) return; 82b0: 2800 cmp r0, #0 82b2: d0f2 beq.n 829a <_lv_blend_map+0x1a> lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 82b4: 4bbb ldr r3, [pc, #748] ; (85a4 <_lv_blend_map+0x324>) 82b6: 4798 blx r3 82b8: 4680 mov r8, r0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 82ba: 4bbb ldr r3, [pc, #748] ; (85a8 <_lv_blend_map+0x328>) 82bc: 4798 blx r3 82be: 4606 mov r6, r0 lv_color_t * disp_buf = vdb->buf_act; 82c0: 6883 ldr r3, [r0, #8] 82c2: 9305 str r3, [sp, #20] draw_area.x1 -= disp_area->x1; 82c4: 8a02 ldrh r2, [r0, #16] 82c6: f8bd 3038 ldrh.w r3, [sp, #56] ; 0x38 82ca: 1a9b subs r3, r3, r2 82cc: b29b uxth r3, r3 82ce: 9306 str r3, [sp, #24] 82d0: f9bd c018 ldrsh.w ip, [sp, #24] 82d4: f8ad c038 strh.w ip, [sp, #56] ; 0x38 draw_area.y1 -= disp_area->y1; 82d8: 8a43 ldrh r3, [r0, #18] 82da: f8bd b03a ldrh.w fp, [sp, #58] ; 0x3a 82de: ebab 0b03 sub.w fp, fp, r3 82e2: fa1f fb8b uxth.w fp, fp 82e6: fa0f fe8b sxth.w lr, fp 82ea: f8ad e03a strh.w lr, [sp, #58] ; 0x3a draw_area.x2 -= disp_area->x1; 82ee: f8bd 103c ldrh.w r1, [sp, #60] ; 0x3c 82f2: 1a89 subs r1, r1, r2 82f4: b289 uxth r1, r1 82f6: f8ad 103c strh.w r1, [sp, #60] ; 0x3c draw_area.y2 -= disp_area->y1; 82fa: f8bd 003e ldrh.w r0, [sp, #62] ; 0x3e 82fe: 1ac0 subs r0, r0, r3 8300: b280 uxth r0, r0 8302: b202 sxth r2, r0 8304: 9208 str r2, [sp, #32] 8306: f8ad 203e strh.w r2, [sp, #62] ; 0x3e if(mask && disp->driver.antialiasing == 0) 830a: 9a04 ldr r2, [sp, #16] 830c: b1d2 cbz r2, 8344 <_lv_blend_map+0xc4> 830e: f898 3008 ldrb.w r3, [r8, #8] 8312: f013 0f01 tst.w r3, #1 8316: d115 bne.n 8344 <_lv_blend_map+0xc4> 8318: f101 0901 add.w r9, r1, #1 831c: 9b06 ldr r3, [sp, #24] 831e: eba9 0903 sub.w r9, r9, r3 8322: fa0f f989 sxth.w r9, r9 for(i = 0; i < mask_w; i++) mask[i] = mask[i] > 128 ? LV_OPA_COVER : LV_OPA_TRANSP; 8326: f1b9 0f00 cmp.w r9, #0 832a: dd0b ble.n 8344 <_lv_blend_map+0xc4> 832c: 4613 mov r3, r2 832e: 4491 add r9, r2 8330: 781a ldrb r2, [r3, #0] 8332: 2a80 cmp r2, #128 ; 0x80 8334: f04f 32ff mov.w r2, #4294967295 8338: bf98 it ls 833a: 2200 movls r2, #0 833c: f803 2b01 strb.w r2, [r3], #1 8340: 454b cmp r3, r9 8342: d1f5 bne.n 8330 <_lv_blend_map+0xb0> if(disp->driver.set_px_cb) { 8344: f8d8 3014 ldr.w r3, [r8, #20] 8348: 2b00 cmp r3, #0 834a: f000 80a9 beq.w 84a0 <_lv_blend_map+0x220> lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 834e: 4b95 ldr r3, [pc, #596] ; (85a4 <_lv_blend_map+0x324>) 8350: 4798 blx r3 8352: 4605 mov r5, r0 8354: f9b6 0010 ldrsh.w r0, [r6, #16] 8358: 8ab3 ldrh r3, [r6, #20] 835a: 3301 adds r3, #1 835c: 1a1b subs r3, r3, r0 835e: b21b sxth r3, r3 8360: 9306 str r3, [sp, #24] 8362: f9bd 1038 ldrsh.w r1, [sp, #56] ; 0x38 8366: f9b7 2000 ldrsh.w r2, [r7] 836a: f8b7 9004 ldrh.w r9, [r7, #4] 836e: f109 0901 add.w r9, r9, #1 8372: eba9 0902 sub.w r9, r9, r2 8376: fa0f f989 sxth.w r9, r9 const lv_color_t * map_buf_tmp = map_buf + map_w * (draw_area->y1 - (map_area->y1 - disp_area->y1)); 837a: f9bd e03a ldrsh.w lr, [sp, #58] ; 0x3a 837e: f9b7 3002 ldrsh.w r3, [r7, #2] 8382: f9b6 6012 ldrsh.w r6, [r6, #18] 8386: 1b9b subs r3, r3, r6 8388: ebae 0303 sub.w r3, lr, r3 map_buf_tmp += (draw_area->x1 - (map_area->x1 - disp_area->x1)); 838c: 1a12 subs r2, r2, r0 838e: 1a8a subs r2, r1, r2 map_buf_tmp -= draw_area->x1; 8390: fb09 2303 mla r3, r9, r3, r2 8394: ea4f 0b41 mov.w fp, r1, lsl #1 8398: ebcb 0b43 rsb fp, fp, r3, lsl #1 839c: 9b07 ldr r3, [sp, #28] 839e: 445b add r3, fp 83a0: 469b mov fp, r3 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 83a2: 2c01 cmp r4, #1 83a4: d046 beq.n 8434 <_lv_blend_map+0x1b4> const lv_opa_t * mask_tmp = mask - draw_area->x1; 83a6: 9b04 ldr r3, [sp, #16] 83a8: 1a5b subs r3, r3, r1 83aa: 9307 str r3, [sp, #28] for(y = draw_area->y1; y <= draw_area->y2; y++) { 83ac: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e 83b0: 459e cmp lr, r3 83b2: f73f af72 bgt.w 829a <_lv_blend_map+0x1a> 83b6: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c map_buf_tmp += map_w; 83ba: ea4f 0249 mov.w r2, r9, lsl #1 83be: 9208 str r2, [sp, #32] 83c0: 3301 adds r3, #1 83c2: 1a59 subs r1, r3, r1 mask_tmp += draw_area_w; 83c4: b20b sxth r3, r1 83c6: 9309 str r3, [sp, #36] ; 0x24 83c8: 46f1 mov r9, lr for(x = draw_area->x1; x <= draw_area->x2; x++) { 83ca: f9bd 6038 ldrsh.w r6, [sp, #56] ; 0x38 83ce: 4634 mov r4, r6 83d0: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 83d4: 429e cmp r6, r3 83d6: dc20 bgt.n 841a <_lv_blend_map+0x19a> 83d8: 9b07 ldr r3, [sp, #28] 83da: eb03 0806 add.w r8, r3, r6 83de: eb0b 0646 add.w r6, fp, r6, lsl #1 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], 83e2: fa0f f789 sxth.w r7, r9 83e6: 9604 str r6, [sp, #16] (uint32_t)((uint32_t)opa * mask_tmp[x]) >> 8); 83e8: f818 3b01 ldrb.w r3, [r8], #1 83ec: fb03 f30a mul.w r3, r3, sl disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], 83f0: f3c3 2307 ubfx r3, r3, #8, #8 83f4: 9302 str r3, [sp, #8] 83f6: 9a04 ldr r2, [sp, #16] 83f8: f832 3b02 ldrh.w r3, [r2], #2 83fc: 9204 str r2, [sp, #16] 83fe: f8ad 3004 strh.w r3, [sp, #4] 8402: 9700 str r7, [sp, #0] 8404: b223 sxth r3, r4 8406: 9a06 ldr r2, [sp, #24] 8408: 9905 ldr r1, [sp, #20] 840a: 4628 mov r0, r5 840c: 696e ldr r6, [r5, #20] 840e: 47b0 blx r6 for(x = draw_area->x1; x <= draw_area->x2; x++) { 8410: 3401 adds r4, #1 8412: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 8416: 429c cmp r4, r3 8418: dde6 ble.n 83e8 <_lv_blend_map+0x168> 841a: 9b07 ldr r3, [sp, #28] 841c: 9a09 ldr r2, [sp, #36] ; 0x24 841e: 4413 add r3, r2 8420: 9307 str r3, [sp, #28] map_buf_tmp += map_w; 8422: 9b08 ldr r3, [sp, #32] 8424: 449b add fp, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 8426: f109 0901 add.w r9, r9, #1 842a: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e 842e: 4599 cmp r9, r3 8430: ddcb ble.n 83ca <_lv_blend_map+0x14a> 8432: e732 b.n 829a <_lv_blend_map+0x1a> for(y = draw_area->y1; y <= draw_area->y2; y++) { 8434: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e 8438: 4573 cmp r3, lr 843a: f6ff af2e blt.w 829a <_lv_blend_map+0x1a> map_buf_tmp += map_w; 843e: ea4f 0949 mov.w r9, r9, lsl #1 8442: 46f0 mov r8, lr for(x = draw_area->x1; x <= draw_area->x2; x++) { 8444: f9bd 7038 ldrsh.w r7, [sp, #56] ; 0x38 8448: 463c mov r4, r7 844a: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 844e: 429f cmp r7, r3 8450: dc1e bgt.n 8490 <_lv_blend_map+0x210> 8452: eb0b 0747 add.w r7, fp, r7, lsl #1 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], opa); 8456: fa0f f688 sxth.w r6, r8 845a: 9704 str r7, [sp, #16] 845c: 4633 mov r3, r6 845e: 4656 mov r6, sl 8460: 46ca mov sl, r9 8462: 4699 mov r9, r3 8464: 9602 str r6, [sp, #8] 8466: 9a04 ldr r2, [sp, #16] 8468: f832 3b02 ldrh.w r3, [r2], #2 846c: 9204 str r2, [sp, #16] 846e: f8ad 3004 strh.w r3, [sp, #4] 8472: f8cd 9000 str.w r9, [sp] 8476: b223 sxth r3, r4 8478: 9a06 ldr r2, [sp, #24] 847a: 9905 ldr r1, [sp, #20] 847c: 4628 mov r0, r5 847e: 696f ldr r7, [r5, #20] 8480: 47b8 blx r7 for(x = draw_area->x1; x <= draw_area->x2; x++) { 8482: 3401 adds r4, #1 8484: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 8488: 429c cmp r4, r3 848a: ddeb ble.n 8464 <_lv_blend_map+0x1e4> 848c: 46d1 mov r9, sl 848e: 46b2 mov sl, r6 map_buf_tmp += map_w; 8490: 44cb add fp, r9 for(y = draw_area->y1; y <= draw_area->y2; y++) { 8492: f108 0801 add.w r8, r8, #1 8496: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e 849a: 4598 cmp r8, r3 849c: ddd2 ble.n 8444 <_lv_blend_map+0x1c4> 849e: e6fc b.n 829a <_lv_blend_map+0x1a> else if(mode == LV_BLEND_MODE_NORMAL) { 84a0: 2d00 cmp r5, #0 84a2: f040 8399 bne.w 8bd8 <_lv_blend_map+0x958> 84a6: f9b6 3010 ldrsh.w r3, [r6, #16] 84aa: f8b6 8014 ldrh.w r8, [r6, #20] 84ae: f108 0801 add.w r8, r8, #1 84b2: eba8 0803 sub.w r8, r8, r3 84b6: fa0f f888 sxth.w r8, r8 84ba: 3101 adds r1, #1 84bc: 9a06 ldr r2, [sp, #24] 84be: 1a89 subs r1, r1, r2 84c0: b20a sxth r2, r1 84c2: 9209 str r2, [sp, #36] ; 0x24 int32_t draw_area_w = lv_area_get_width(draw_area); 84c4: 4615 mov r5, r2 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 84c6: 3001 adds r0, #1 84c8: eba0 0b0b sub.w fp, r0, fp int32_t draw_area_h = lv_area_get_height(draw_area); 84cc: fa0f f28b sxth.w r2, fp 84d0: 9208 str r2, [sp, #32] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 84d2: f9b7 1000 ldrsh.w r1, [r7] 84d6: f8b7 9004 ldrh.w r9, [r7, #4] 84da: f109 0901 add.w r9, r9, #1 84de: eba9 0901 sub.w r9, r9, r1 84e2: fa0f f989 sxth.w r9, r9 lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1; 84e6: fb0e c208 mla r2, lr, r8, ip 84ea: 9805 ldr r0, [sp, #20] 84ec: eb00 0242 add.w r2, r0, r2, lsl #1 84f0: 9205 str r2, [sp, #20] const lv_color_t * map_buf_first = map_buf + map_w * (draw_area->y1 - (map_area->y1 - disp_area->y1)); 84f2: f9b7 2002 ldrsh.w r2, [r7, #2] 84f6: f9b6 0012 ldrsh.w r0, [r6, #18] 84fa: 1a12 subs r2, r2, r0 84fc: ebae 0e02 sub.w lr, lr, r2 map_buf_first += (draw_area->x1 - (map_area->x1 - disp_area->x1)); 8500: 1acb subs r3, r1, r3 8502: ebac 0303 sub.w r3, ip, r3 8506: fb09 330e mla r3, r9, lr, r3 850a: 9a07 ldr r2, [sp, #28] 850c: eb02 0343 add.w r3, r2, r3, lsl #1 8510: 9306 str r3, [sp, #24] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 8512: 4b24 ldr r3, [pc, #144] ; (85a4 <_lv_blend_map+0x324>) 8514: 4798 blx r3 8516: 4606 mov r6, r0 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 8518: 2c01 cmp r4, #1 851a: d01b beq.n 8554 <_lv_blend_map+0x2d4> if(opa > LV_OPA_MAX) { 851c: f1ba 0ffa cmp.w sl, #250 ; 0xfa 8520: f200 80c5 bhi.w 86ae <_lv_blend_map+0x42e> for(y = 0; y < draw_area_h; y++) { 8524: 9b08 ldr r3, [sp, #32] 8526: 2b00 cmp r3, #0 8528: f77f aeb7 ble.w 829a <_lv_blend_map+0x1a> disp_buf_first += disp_w; 852c: ea4f 0348 mov.w r3, r8, lsl #1 8530: 930a str r3, [sp, #40] ; 0x28 map_buf_first += map_w; 8532: ea4f 0349 mov.w r3, r9, lsl #1 8536: 930b str r3, [sp, #44] ; 0x2c 8538: 9b09 ldr r3, [sp, #36] ; 0x24 853a: 9a04 ldr r2, [sp, #16] 853c: 3a01 subs r2, #1 853e: 9204 str r2, [sp, #16] 8540: 005b lsls r3, r3, #1 8542: 930d str r3, [sp, #52] ; 0x34 8544: f04f 0b00 mov.w fp, #0 lv_opa_t opa_tmp = mask[x] >= LV_OPA_MAX ? opa : ((opa * mask[x]) >> 8); 8548: f8cd a01c str.w sl, [sp, #28] 854c: 950c str r5, [sp, #48] ; 0x30 854e: f8dd 9018 ldr.w r9, [sp, #24] 8552: e336 b.n 8bc2 <_lv_blend_map+0x942> if(disp->driver.gpu_blend_cb && (lv_area_get_size(draw_area) > GPU_SIZE_LIMIT)) { 8554: 6a03 ldr r3, [r0, #32] 8556: b35b cbz r3, 85b0 <_lv_blend_map+0x330> 8558: a80e add r0, sp, #56 ; 0x38 855a: 4b14 ldr r3, [pc, #80] ; (85ac <_lv_blend_map+0x32c>) 855c: 4798 blx r3 855e: 28f0 cmp r0, #240 ; 0xf0 8560: d926 bls.n 85b0 <_lv_blend_map+0x330> for(y = draw_area->y1; y <= draw_area->y2; y++) { 8562: f9bd 503a ldrsh.w r5, [sp, #58] ; 0x3a 8566: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e 856a: 429d cmp r5, r3 856c: f73f ae95 bgt.w 829a <_lv_blend_map+0x1a> disp_buf_first += disp_w; 8570: ea4f 0848 mov.w r8, r8, lsl #1 map_buf_first += map_w; 8574: ea4f 0949 mov.w r9, r9, lsl #1 8578: f8dd b014 ldr.w fp, [sp, #20] 857c: 9f06 ldr r7, [sp, #24] disp->driver.gpu_blend_cb(&disp->driver, disp_buf_first, map_buf_first, draw_area_w, opa); 857e: f8cd a000 str.w sl, [sp] 8582: 9b09 ldr r3, [sp, #36] ; 0x24 8584: 463a mov r2, r7 8586: 4659 mov r1, fp 8588: 4630 mov r0, r6 858a: 6a34 ldr r4, [r6, #32] 858c: 47a0 blx r4 disp_buf_first += disp_w; 858e: 44c3 add fp, r8 map_buf_first += map_w; 8590: 444f add r7, r9 for(y = draw_area->y1; y <= draw_area->y2; y++) { 8592: 3501 adds r5, #1 8594: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e 8598: 429d cmp r5, r3 859a: ddf0 ble.n 857e <_lv_blend_map+0x2fe> 859c: e67d b.n 829a <_lv_blend_map+0x1a> 859e: bf00 nop 85a0: 00011519 .word 0x00011519 85a4: 00005f69 .word 0x00005f69 85a8: 00010fdd .word 0x00010fdd 85ac: 000114fd .word 0x000114fd if(opa > LV_OPA_MAX) { 85b0: f1ba 0ffa cmp.w sl, #250 ; 0xfa 85b4: d810 bhi.n 85d8 <_lv_blend_map+0x358> for(y = 0; y < draw_area_h; y++) { 85b6: 9b08 ldr r3, [sp, #32] 85b8: 2b00 cmp r3, #0 85ba: f77f ae6e ble.w 829a <_lv_blend_map+0x1a> disp_buf_first += disp_w; 85be: ea4f 0348 mov.w r3, r8, lsl #1 85c2: 9304 str r3, [sp, #16] map_buf_first += map_w; 85c4: ea4f 0949 mov.w r9, r9, lsl #1 85c8: 9b09 ldr r3, [sp, #36] ; 0x24 85ca: ea4f 0b43 mov.w fp, r3, lsl #1 85ce: f04f 0800 mov.w r8, #0 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 85d2: f1ca 0eff rsb lr, sl, #255 ; 0xff 85d6: e026 b.n 8626 <_lv_blend_map+0x3a6> for(y = 0; y < draw_area_h; y++) { 85d8: 9b08 ldr r3, [sp, #32] 85da: 2b00 cmp r3, #0 85dc: f77f ae5d ble.w 829a <_lv_blend_map+0x1a> _lv_memcpy(disp_buf_first, map_buf_first, draw_area_w * sizeof(lv_color_t)); 85e0: 9a09 ldr r2, [sp, #36] ; 0x24 85e2: 0056 lsls r6, r2, #1 disp_buf_first += disp_w; 85e4: ea4f 0848 mov.w r8, r8, lsl #1 map_buf_first += map_w; 85e8: ea4f 0949 mov.w r9, r9, lsl #1 85ec: 2400 movs r4, #0 _lv_memcpy(disp_buf_first, map_buf_first, draw_area_w * sizeof(lv_color_t)); 85ee: 4d66 ldr r5, [pc, #408] ; (8788 <_lv_blend_map+0x508>) 85f0: 469b mov fp, r3 85f2: 9f05 ldr r7, [sp, #20] 85f4: f8dd a018 ldr.w sl, [sp, #24] 85f8: 4632 mov r2, r6 85fa: 4651 mov r1, sl 85fc: 4638 mov r0, r7 85fe: 47a8 blx r5 disp_buf_first += disp_w; 8600: 4447 add r7, r8 map_buf_first += map_w; 8602: 44ca add sl, r9 for(y = 0; y < draw_area_h; y++) { 8604: 3401 adds r4, #1 8606: 45a3 cmp fp, r4 8608: d1f6 bne.n 85f8 <_lv_blend_map+0x378> 860a: e646 b.n 829a <_lv_blend_map+0x1a> disp_buf_first += disp_w; 860c: 9b05 ldr r3, [sp, #20] 860e: 9a04 ldr r2, [sp, #16] 8610: 4413 add r3, r2 8612: 9305 str r3, [sp, #20] map_buf_first += map_w; 8614: 9b06 ldr r3, [sp, #24] 8616: 444b add r3, r9 8618: 9306 str r3, [sp, #24] for(y = 0; y < draw_area_h; y++) { 861a: f108 0801 add.w r8, r8, #1 861e: 9b08 ldr r3, [sp, #32] 8620: 4543 cmp r3, r8 8622: f43f ae3a beq.w 829a <_lv_blend_map+0x1a> for(x = 0; x < draw_area_w; x++) { 8626: 2d00 cmp r5, #0 8628: ddf0 ble.n 860c <_lv_blend_map+0x38c> 862a: 9b06 ldr r3, [sp, #24] 862c: 461f mov r7, r3 862e: 9c05 ldr r4, [sp, #20] 8630: eb03 0c0b add.w ip, r3, fp 8634: 787b ldrb r3, [r7, #1] 8636: 08db lsrs r3, r3, #3 8638: 7862 ldrb r2, [r4, #1] 863a: 08d2 lsrs r2, r2, #3 863c: fb0e f202 mul.w r2, lr, r2 8640: fb0a 2303 mla r3, sl, r3, r2 8644: eb03 2203 add.w r2, r3, r3, lsl #8 8648: eb03 13c2 add.w r3, r3, r2, lsl #7 864c: f3c3 53c4 ubfx r3, r3, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 8650: 883a ldrh r2, [r7, #0] 8652: f3c2 1245 ubfx r2, r2, #5, #6 8656: 8821 ldrh r1, [r4, #0] 8658: f3c1 1145 ubfx r1, r1, #5, #6 865c: fb0e f101 mul.w r1, lr, r1 8660: fb0a 1202 mla r2, sl, r2, r1 8664: eb02 2102 add.w r1, r2, r2, lsl #8 8668: eb02 12c1 add.w r2, r2, r1, lsl #7 866c: f3c2 52c5 ubfx r2, r2, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 8670: f817 1b02 ldrb.w r1, [r7], #2 8674: f001 011f and.w r1, r1, #31 8678: 7820 ldrb r0, [r4, #0] 867a: f000 061f and.w r6, r0, #31 867e: fb0e f606 mul.w r6, lr, r6 8682: fb0a 6101 mla r1, sl, r1, r6 8686: eb01 2601 add.w r6, r1, r1, lsl #8 868a: eb01 11c6 add.w r1, r1, r6, lsl #7 868e: 0dc9 lsrs r1, r1, #23 disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa); 8690: f361 0004 bfi r0, r1, #0, #5 8694: 7020 strb r0, [r4, #0] 8696: 8821 ldrh r1, [r4, #0] 8698: f362 114a bfi r1, r2, #5, #6 869c: 8021 strh r1, [r4, #0] 869e: 0a09 lsrs r1, r1, #8 86a0: f363 01c7 bfi r1, r3, #3, #5 86a4: 7061 strb r1, [r4, #1] 86a6: 3402 adds r4, #2 for(x = 0; x < draw_area_w; x++) { 86a8: 45bc cmp ip, r7 86aa: d1c3 bne.n 8634 <_lv_blend_map+0x3b4> 86ac: e7ae b.n 860c <_lv_blend_map+0x38c> int32_t x_end4 = draw_area_w - 4; 86ae: 9b09 ldr r3, [sp, #36] ; 0x24 86b0: 3b04 subs r3, #4 86b2: 930a str r3, [sp, #40] ; 0x28 for(y = 0; y < draw_area_h; y++) { 86b4: 9b08 ldr r3, [sp, #32] 86b6: 2b00 cmp r3, #0 86b8: f77f adef ble.w 829a <_lv_blend_map+0x1a> disp_buf_first += disp_w; 86bc: ea4f 0348 mov.w r3, r8, lsl #1 86c0: 930c str r3, [sp, #48] ; 0x30 map_buf_first += map_w; 86c2: ea4f 0349 mov.w r3, r9, lsl #1 86c6: 930d str r3, [sp, #52] ; 0x34 86c8: 2300 movs r3, #0 86ca: 9307 str r3, [sp, #28] 86cc: e365 b.n 8d9a <_lv_blend_map+0xb1a> MAP_NORMAL_MASK_PX(x) 86ce: f8b8 3000 ldrh.w r3, [r8] 86d2: f8ae 3000 strh.w r3, [lr] 86d6: 4663 mov r3, ip for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 86d8: 3101 adds r1, #1 86da: 428d cmp r5, r1 86dc: f000 8347 beq.w 8d6e <_lv_blend_map+0xaee> 86e0: f108 0802 add.w r8, r8, #2 86e4: f10e 0e02 add.w lr, lr, #2 86e8: f01c 0f03 tst.w ip, #3 86ec: f000 832d beq.w 8d4a <_lv_blend_map+0xaca> MAP_NORMAL_MASK_PX(x) 86f0: f81c 4b01 ldrb.w r4, [ip], #1 86f4: 2c00 cmp r4, #0 86f6: d0ee beq.n 86d6 <_lv_blend_map+0x456> 86f8: 2cff cmp r4, #255 ; 0xff 86fa: d0e8 beq.n 86ce <_lv_blend_map+0x44e> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 86fc: f1c4 06ff rsb r6, r4, #255 ; 0xff 8700: f898 3001 ldrb.w r3, [r8, #1] 8704: 08db lsrs r3, r3, #3 8706: f89e 2001 ldrb.w r2, [lr, #1] 870a: 08d2 lsrs r2, r2, #3 870c: fb06 f202 mul.w r2, r6, r2 8710: fb04 2303 mla r3, r4, r3, r2 8714: eb03 2203 add.w r2, r3, r3, lsl #8 8718: eb03 13c2 add.w r3, r3, r2, lsl #7 871c: f3c3 53c4 ubfx r3, r3, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 8720: f8b8 0000 ldrh.w r0, [r8] 8724: f3c0 1045 ubfx r0, r0, #5, #6 8728: f8be 2000 ldrh.w r2, [lr] 872c: f3c2 1245 ubfx r2, r2, #5, #6 8730: fb06 f202 mul.w r2, r6, r2 8734: fb04 2000 mla r0, r4, r0, r2 8738: eb00 2200 add.w r2, r0, r0, lsl #8 873c: eb00 10c2 add.w r0, r0, r2, lsl #7 8740: f3c0 50c5 ubfx r0, r0, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 8744: f898 2000 ldrb.w r2, [r8] 8748: f002 021f and.w r2, r2, #31 874c: f89e 7000 ldrb.w r7, [lr] 8750: f007 091f and.w r9, r7, #31 8754: fb06 f609 mul.w r6, r6, r9 8758: fb04 6202 mla r2, r4, r2, r6 875c: eb02 2402 add.w r4, r2, r2, lsl #8 8760: eb02 12c4 add.w r2, r2, r4, lsl #7 8764: 0dd2 lsrs r2, r2, #23 8766: 463c mov r4, r7 8768: f362 0404 bfi r4, r2, #0, #5 876c: f88e 4000 strb.w r4, [lr] 8770: f8be 2000 ldrh.w r2, [lr] 8774: f360 124a bfi r2, r0, #5, #6 8778: f8ae 2000 strh.w r2, [lr] 877c: 0a12 lsrs r2, r2, #8 877e: f363 02c7 bfi r2, r3, #3, #5 8782: f88e 2001 strb.w r2, [lr, #1] 8786: e7a6 b.n 86d6 <_lv_blend_map+0x456> 8788: 00012655 .word 0x00012655 disp_buf_first[x] = map_buf_first[x]; 878c: f834 5c06 ldrh.w r5, [r4, #-6] 8790: f820 5c06 strh.w r5, [r0, #-6] disp_buf_first[x + 1] = map_buf_first[x + 1]; 8794: f834 5c04 ldrh.w r5, [r4, #-4] 8798: f820 5c04 strh.w r5, [r0, #-4] disp_buf_first[x + 2] = map_buf_first[x + 2]; 879c: f834 5c02 ldrh.w r5, [r4, #-2] 87a0: f820 5c02 strh.w r5, [r0, #-2] disp_buf_first[x + 3] = map_buf_first[x + 3]; 87a4: 8825 ldrh r5, [r4, #0] 87a6: 8005 strh r5, [r0, #0] for(; x < x_end4; x += 4) { 87a8: 3104 adds r1, #4 87aa: 3304 adds r3, #4 87ac: 3408 adds r4, #8 87ae: 3008 adds r0, #8 87b0: 458e cmp lr, r1 87b2: f340 8147 ble.w 8a44 <_lv_blend_map+0x7c4> 87b6: 461a mov r2, r3 if(*mask32) { 87b8: f853 5c04 ldr.w r5, [r3, #-4] 87bc: 2d00 cmp r5, #0 87be: d0f3 beq.n 87a8 <_lv_blend_map+0x528> if((*mask32) == 0xFFFFFFFF) { 87c0: f1b5 3fff cmp.w r5, #4294967295 87c4: d0e2 beq.n 878c <_lv_blend_map+0x50c> MAP_NORMAL_MASK_PX(x) 87c6: f813 cc04 ldrb.w ip, [r3, #-4] 87ca: f1bc 0f00 cmp.w ip, #0 87ce: d047 beq.n 8860 <_lv_blend_map+0x5e0> 87d0: f1bc 0fff cmp.w ip, #255 ; 0xff 87d4: f000 8124 beq.w 8a20 <_lv_blend_map+0x7a0> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 87d8: f1cc 09ff rsb r9, ip, #255 ; 0xff 87dc: f814 5c05 ldrb.w r5, [r4, #-5] 87e0: 08ed lsrs r5, r5, #3 87e2: f810 6c05 ldrb.w r6, [r0, #-5] 87e6: 08f6 lsrs r6, r6, #3 87e8: fb09 f606 mul.w r6, r9, r6 87ec: fb0c 6505 mla r5, ip, r5, r6 87f0: eb05 2605 add.w r6, r5, r5, lsl #8 87f4: eb05 15c6 add.w r5, r5, r6, lsl #7 87f8: f3c5 55c4 ubfx r5, r5, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 87fc: f834 6c06 ldrh.w r6, [r4, #-6] 8800: f3c6 1645 ubfx r6, r6, #5, #6 8804: f830 7c06 ldrh.w r7, [r0, #-6] 8808: f3c7 1745 ubfx r7, r7, #5, #6 880c: fb09 f707 mul.w r7, r9, r7 8810: fb0c 7606 mla r6, ip, r6, r7 8814: eb06 2706 add.w r7, r6, r6, lsl #8 8818: eb06 16c7 add.w r6, r6, r7, lsl #7 881c: f3c6 56c5 ubfx r6, r6, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 8820: f814 7c06 ldrb.w r7, [r4, #-6] 8824: f007 071f and.w r7, r7, #31 8828: f810 8c06 ldrb.w r8, [r0, #-6] 882c: f008 0b1f and.w fp, r8, #31 8830: fb09 f90b mul.w r9, r9, fp 8834: fb0c 9707 mla r7, ip, r7, r9 8838: eb07 2c07 add.w ip, r7, r7, lsl #8 883c: eb07 17cc add.w r7, r7, ip, lsl #7 8840: 0dff lsrs r7, r7, #23 8842: f367 0804 bfi r8, r7, #0, #5 8846: f800 8c06 strb.w r8, [r0, #-6] 884a: f830 7c06 ldrh.w r7, [r0, #-6] 884e: f366 174a bfi r7, r6, #5, #6 8852: f820 7c06 strh.w r7, [r0, #-6] 8856: 0a3f lsrs r7, r7, #8 8858: f365 07c7 bfi r7, r5, #3, #5 885c: f800 7c05 strb.w r7, [r0, #-5] MAP_NORMAL_MASK_PX(x + 1) 8860: f812 cc03 ldrb.w ip, [r2, #-3] 8864: f1bc 0f00 cmp.w ip, #0 8868: d047 beq.n 88fa <_lv_blend_map+0x67a> 886a: f1bc 0fff cmp.w ip, #255 ; 0xff 886e: f000 80dc beq.w 8a2a <_lv_blend_map+0x7aa> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 8872: f1cc 09ff rsb r9, ip, #255 ; 0xff 8876: f814 5c03 ldrb.w r5, [r4, #-3] 887a: 08ed lsrs r5, r5, #3 887c: f810 6c03 ldrb.w r6, [r0, #-3] 8880: 08f6 lsrs r6, r6, #3 8882: fb09 f606 mul.w r6, r9, r6 8886: fb0c 6505 mla r5, ip, r5, r6 888a: eb05 2605 add.w r6, r5, r5, lsl #8 888e: eb05 15c6 add.w r5, r5, r6, lsl #7 8892: f3c5 55c4 ubfx r5, r5, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 8896: f834 6c04 ldrh.w r6, [r4, #-4] 889a: f3c6 1645 ubfx r6, r6, #5, #6 889e: f830 7c04 ldrh.w r7, [r0, #-4] 88a2: f3c7 1745 ubfx r7, r7, #5, #6 88a6: fb09 f707 mul.w r7, r9, r7 88aa: fb0c 7606 mla r6, ip, r6, r7 88ae: eb06 2706 add.w r7, r6, r6, lsl #8 88b2: eb06 16c7 add.w r6, r6, r7, lsl #7 88b6: f3c6 56c5 ubfx r6, r6, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 88ba: f814 7c04 ldrb.w r7, [r4, #-4] 88be: f007 071f and.w r7, r7, #31 88c2: f810 8c04 ldrb.w r8, [r0, #-4] 88c6: f008 0b1f and.w fp, r8, #31 88ca: fb09 f90b mul.w r9, r9, fp 88ce: fb0c 9707 mla r7, ip, r7, r9 88d2: eb07 2c07 add.w ip, r7, r7, lsl #8 88d6: eb07 17cc add.w r7, r7, ip, lsl #7 88da: 0dff lsrs r7, r7, #23 88dc: f367 0804 bfi r8, r7, #0, #5 88e0: f800 8c04 strb.w r8, [r0, #-4] 88e4: f830 7c04 ldrh.w r7, [r0, #-4] 88e8: f366 174a bfi r7, r6, #5, #6 88ec: f820 7c04 strh.w r7, [r0, #-4] 88f0: 0a3f lsrs r7, r7, #8 88f2: f365 07c7 bfi r7, r5, #3, #5 88f6: f800 7c03 strb.w r7, [r0, #-3] MAP_NORMAL_MASK_PX(x + 2) 88fa: f812 cc02 ldrb.w ip, [r2, #-2] 88fe: f1bc 0f00 cmp.w ip, #0 8902: d047 beq.n 8994 <_lv_blend_map+0x714> 8904: f1bc 0fff cmp.w ip, #255 ; 0xff 8908: f000 8094 beq.w 8a34 <_lv_blend_map+0x7b4> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 890c: f1cc 09ff rsb r9, ip, #255 ; 0xff 8910: f814 5c01 ldrb.w r5, [r4, #-1] 8914: 08ed lsrs r5, r5, #3 8916: f810 6c01 ldrb.w r6, [r0, #-1] 891a: 08f6 lsrs r6, r6, #3 891c: fb09 f606 mul.w r6, r9, r6 8920: fb0c 6505 mla r5, ip, r5, r6 8924: eb05 2605 add.w r6, r5, r5, lsl #8 8928: eb05 15c6 add.w r5, r5, r6, lsl #7 892c: f3c5 55c4 ubfx r5, r5, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 8930: f834 6c02 ldrh.w r6, [r4, #-2] 8934: f3c6 1645 ubfx r6, r6, #5, #6 8938: f830 7c02 ldrh.w r7, [r0, #-2] 893c: f3c7 1745 ubfx r7, r7, #5, #6 8940: fb09 f707 mul.w r7, r9, r7 8944: fb0c 7606 mla r6, ip, r6, r7 8948: eb06 2706 add.w r7, r6, r6, lsl #8 894c: eb06 16c7 add.w r6, r6, r7, lsl #7 8950: f3c6 56c5 ubfx r6, r6, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 8954: f814 7c02 ldrb.w r7, [r4, #-2] 8958: f007 071f and.w r7, r7, #31 895c: f810 8c02 ldrb.w r8, [r0, #-2] 8960: f008 0b1f and.w fp, r8, #31 8964: fb09 f90b mul.w r9, r9, fp 8968: fb0c 9707 mla r7, ip, r7, r9 896c: eb07 2c07 add.w ip, r7, r7, lsl #8 8970: eb07 17cc add.w r7, r7, ip, lsl #7 8974: 0dff lsrs r7, r7, #23 8976: f367 0804 bfi r8, r7, #0, #5 897a: f800 8c02 strb.w r8, [r0, #-2] 897e: f830 7c02 ldrh.w r7, [r0, #-2] 8982: f366 174a bfi r7, r6, #5, #6 8986: f820 7c02 strh.w r7, [r0, #-2] 898a: 0a3f lsrs r7, r7, #8 898c: f365 07c7 bfi r7, r5, #3, #5 8990: f800 7c01 strb.w r7, [r0, #-1] MAP_NORMAL_MASK_PX(x + 3) 8994: f812 8c01 ldrb.w r8, [r2, #-1] 8998: f1b8 0f00 cmp.w r8, #0 899c: f43f af04 beq.w 87a8 <_lv_blend_map+0x528> 89a0: f1b8 0fff cmp.w r8, #255 ; 0xff 89a4: d04b beq.n 8a3e <_lv_blend_map+0x7be> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 89a6: f1c8 09ff rsb r9, r8, #255 ; 0xff 89aa: 7865 ldrb r5, [r4, #1] 89ac: 08ed lsrs r5, r5, #3 89ae: 7846 ldrb r6, [r0, #1] 89b0: 08f6 lsrs r6, r6, #3 89b2: fb09 f606 mul.w r6, r9, r6 89b6: fb08 6505 mla r5, r8, r5, r6 89ba: eb05 2605 add.w r6, r5, r5, lsl #8 89be: eb05 15c6 add.w r5, r5, r6, lsl #7 89c2: f3c5 55c4 ubfx r5, r5, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 89c6: 8826 ldrh r6, [r4, #0] 89c8: f3c6 1645 ubfx r6, r6, #5, #6 89cc: 8807 ldrh r7, [r0, #0] 89ce: f3c7 1745 ubfx r7, r7, #5, #6 89d2: fb09 f707 mul.w r7, r9, r7 89d6: fb08 7606 mla r6, r8, r6, r7 89da: eb06 2706 add.w r7, r6, r6, lsl #8 89de: eb06 16c7 add.w r6, r6, r7, lsl #7 89e2: f3c6 56c5 ubfx r6, r6, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 89e6: 7827 ldrb r7, [r4, #0] 89e8: f007 071f and.w r7, r7, #31 89ec: f890 c000 ldrb.w ip, [r0] 89f0: f00c 0a1f and.w sl, ip, #31 89f4: fb09 f90a mul.w r9, r9, sl 89f8: fb08 9707 mla r7, r8, r7, r9 89fc: eb07 2807 add.w r8, r7, r7, lsl #8 8a00: eb07 17c8 add.w r7, r7, r8, lsl #7 8a04: 0dff lsrs r7, r7, #23 8a06: f367 0c04 bfi ip, r7, #0, #5 8a0a: f880 c000 strb.w ip, [r0] 8a0e: 8807 ldrh r7, [r0, #0] 8a10: f366 174a bfi r7, r6, #5, #6 8a14: 8007 strh r7, [r0, #0] 8a16: 0a3f lsrs r7, r7, #8 8a18: f365 07c7 bfi r7, r5, #3, #5 8a1c: 7047 strb r7, [r0, #1] 8a1e: e6c3 b.n 87a8 <_lv_blend_map+0x528> MAP_NORMAL_MASK_PX(x) 8a20: f834 5c06 ldrh.w r5, [r4, #-6] 8a24: f820 5c06 strh.w r5, [r0, #-6] 8a28: e71a b.n 8860 <_lv_blend_map+0x5e0> MAP_NORMAL_MASK_PX(x + 1) 8a2a: f834 5c04 ldrh.w r5, [r4, #-4] 8a2e: f820 5c04 strh.w r5, [r0, #-4] 8a32: e762 b.n 88fa <_lv_blend_map+0x67a> MAP_NORMAL_MASK_PX(x + 2) 8a34: f834 5c02 ldrh.w r5, [r4, #-2] 8a38: f820 5c02 strh.w r5, [r0, #-2] 8a3c: e7aa b.n 8994 <_lv_blend_map+0x714> MAP_NORMAL_MASK_PX(x + 3) 8a3e: 8825 ldrh r5, [r4, #0] 8a40: 8005 strh r5, [r0, #0] 8a42: e6b1 b.n 87a8 <_lv_blend_map+0x528> 8a44: 9d0b ldr r5, [sp, #44] ; 0x2c for(; x < draw_area_w ; x++) { 8a46: 428d cmp r5, r1 8a48: f340 8194 ble.w 8d74 <_lv_blend_map+0xaf4> 8a4c: 1e56 subs r6, r2, #1 8a4e: ea4f 0c41 mov.w ip, r1, lsl #1 8a52: 9b06 ldr r3, [sp, #24] 8a54: eb03 080c add.w r8, r3, ip 8a58: 9b05 ldr r3, [sp, #20] 8a5a: 449c add ip, r3 8a5c: e00b b.n 8a76 <_lv_blend_map+0x7f6> MAP_NORMAL_MASK_PX(x) 8a5e: f8b8 3000 ldrh.w r3, [r8] 8a62: f8ac 3000 strh.w r3, [ip] for(; x < draw_area_w ; x++) { 8a66: 3101 adds r1, #1 8a68: f108 0802 add.w r8, r8, #2 8a6c: f10c 0c02 add.w ip, ip, #2 8a70: 428d cmp r5, r1 8a72: f340 817f ble.w 8d74 <_lv_blend_map+0xaf4> MAP_NORMAL_MASK_PX(x) 8a76: f816 4f01 ldrb.w r4, [r6, #1]! 8a7a: 2c00 cmp r4, #0 8a7c: d0f3 beq.n 8a66 <_lv_blend_map+0x7e6> 8a7e: 2cff cmp r4, #255 ; 0xff 8a80: d0ed beq.n 8a5e <_lv_blend_map+0x7de> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 8a82: f1c4 07ff rsb r7, r4, #255 ; 0xff 8a86: f898 3001 ldrb.w r3, [r8, #1] 8a8a: 08db lsrs r3, r3, #3 8a8c: f89c 2001 ldrb.w r2, [ip, #1] 8a90: 08d2 lsrs r2, r2, #3 8a92: fb07 f202 mul.w r2, r7, r2 8a96: fb04 2303 mla r3, r4, r3, r2 8a9a: eb03 2203 add.w r2, r3, r3, lsl #8 8a9e: eb03 13c2 add.w r3, r3, r2, lsl #7 8aa2: f3c3 53c4 ubfx r3, r3, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 8aa6: f8b8 0000 ldrh.w r0, [r8] 8aaa: f3c0 1045 ubfx r0, r0, #5, #6 8aae: f8bc 2000 ldrh.w r2, [ip] 8ab2: f3c2 1245 ubfx r2, r2, #5, #6 8ab6: fb07 f202 mul.w r2, r7, r2 8aba: fb04 2000 mla r0, r4, r0, r2 8abe: eb00 2200 add.w r2, r0, r0, lsl #8 8ac2: eb00 10c2 add.w r0, r0, r2, lsl #7 8ac6: f3c0 50c5 ubfx r0, r0, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 8aca: f898 2000 ldrb.w r2, [r8] 8ace: f002 021f and.w r2, r2, #31 8ad2: f89c e000 ldrb.w lr, [ip] 8ad6: f00e 091f and.w r9, lr, #31 8ada: fb07 f709 mul.w r7, r7, r9 8ade: fb04 7202 mla r2, r4, r2, r7 8ae2: eb02 2402 add.w r4, r2, r2, lsl #8 8ae6: eb02 12c4 add.w r2, r2, r4, lsl #7 8aea: 0dd2 lsrs r2, r2, #23 8aec: 4674 mov r4, lr 8aee: f362 0404 bfi r4, r2, #0, #5 8af2: f88c 4000 strb.w r4, [ip] 8af6: f8bc 2000 ldrh.w r2, [ip] 8afa: f360 124a bfi r2, r0, #5, #6 8afe: f8ac 2000 strh.w r2, [ip] 8b02: 0a12 lsrs r2, r2, #8 8b04: f363 02c7 bfi r2, r3, #3, #5 8b08: f88c 2001 strb.w r2, [ip, #1] 8b0c: e7ab b.n 8a66 <_lv_blend_map+0x7e6> 8b0e: 3702 adds r7, #2 8b10: 3602 adds r6, #2 for(x = 0; x < draw_area_w; x++) { 8b12: 4547 cmp r7, r8 8b14: d045 beq.n 8ba2 <_lv_blend_map+0x922> if(mask[x]) { 8b16: f81c 1f01 ldrb.w r1, [ip, #1]! 8b1a: 2900 cmp r1, #0 8b1c: d0f7 beq.n 8b0e <_lv_blend_map+0x88e> lv_opa_t opa_tmp = mask[x] >= LV_OPA_MAX ? opa : ((opa * mask[x]) >> 8); 8b1e: 29f9 cmp r1, #249 ; 0xf9 8b20: bf9a itte ls 8b22: fb01 f10a mulls.w r1, r1, sl 8b26: f3c1 2407 ubfxls r4, r1, #8, #8 8b2a: 9c07 ldrhi r4, [sp, #28] LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 8b2c: f1c4 05ff rsb r5, r4, #255 ; 0xff 8b30: 787b ldrb r3, [r7, #1] 8b32: 08db lsrs r3, r3, #3 8b34: 7872 ldrb r2, [r6, #1] 8b36: 08d2 lsrs r2, r2, #3 8b38: fb05 f202 mul.w r2, r5, r2 8b3c: fb04 2303 mla r3, r4, r3, r2 8b40: eb03 2203 add.w r2, r3, r3, lsl #8 8b44: eb03 13c2 add.w r3, r3, r2, lsl #7 8b48: f3c3 53c4 ubfx r3, r3, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 8b4c: 883a ldrh r2, [r7, #0] 8b4e: f3c2 1245 ubfx r2, r2, #5, #6 8b52: 8831 ldrh r1, [r6, #0] 8b54: f3c1 1145 ubfx r1, r1, #5, #6 8b58: fb05 f101 mul.w r1, r5, r1 8b5c: fb04 1202 mla r2, r4, r2, r1 8b60: eb02 2102 add.w r1, r2, r2, lsl #8 8b64: eb02 12c1 add.w r2, r2, r1, lsl #7 8b68: f3c2 52c5 ubfx r2, r2, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 8b6c: 7839 ldrb r1, [r7, #0] 8b6e: f001 011f and.w r1, r1, #31 8b72: 7830 ldrb r0, [r6, #0] 8b74: f000 0e1f and.w lr, r0, #31 8b78: fb05 f50e mul.w r5, r5, lr 8b7c: fb04 5101 mla r1, r4, r1, r5 8b80: eb01 2401 add.w r4, r1, r1, lsl #8 8b84: eb01 11c4 add.w r1, r1, r4, lsl #7 8b88: 0dc9 lsrs r1, r1, #23 disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa_tmp); 8b8a: f361 0004 bfi r0, r1, #0, #5 8b8e: 7030 strb r0, [r6, #0] 8b90: 8831 ldrh r1, [r6, #0] 8b92: f362 114a bfi r1, r2, #5, #6 8b96: 8031 strh r1, [r6, #0] 8b98: 0a09 lsrs r1, r1, #8 8b9a: f363 01c7 bfi r1, r3, #3, #5 8b9e: 7071 strb r1, [r6, #1] 8ba0: e7b5 b.n 8b0e <_lv_blend_map+0x88e> disp_buf_first += disp_w; 8ba2: 9b05 ldr r3, [sp, #20] 8ba4: 9a0a ldr r2, [sp, #40] ; 0x28 8ba6: 4413 add r3, r2 8ba8: 9305 str r3, [sp, #20] map_buf_first += map_w; 8baa: 9b0b ldr r3, [sp, #44] ; 0x2c 8bac: 4499 add r9, r3 for(y = 0; y < draw_area_h; y++) { 8bae: f10b 0b01 add.w fp, fp, #1 8bb2: 9b04 ldr r3, [sp, #16] 8bb4: 9a09 ldr r2, [sp, #36] ; 0x24 8bb6: 4413 add r3, r2 8bb8: 9304 str r3, [sp, #16] 8bba: 9b08 ldr r3, [sp, #32] 8bbc: 455b cmp r3, fp 8bbe: f43f ab6c beq.w 829a <_lv_blend_map+0x1a> for(x = 0; x < draw_area_w; x++) { 8bc2: 9b0c ldr r3, [sp, #48] ; 0x30 8bc4: 2b00 cmp r3, #0 8bc6: ddec ble.n 8ba2 <_lv_blend_map+0x922> 8bc8: 464f mov r7, r9 8bca: 9e05 ldr r6, [sp, #20] 8bcc: 9b0d ldr r3, [sp, #52] ; 0x34 8bce: eb09 0803 add.w r8, r9, r3 8bd2: f8dd c010 ldr.w ip, [sp, #16] 8bd6: e79e b.n 8b16 <_lv_blend_map+0x896> switch(mode) { 8bd8: 2d01 cmp r5, #1 8bda: d049 beq.n 8c70 <_lv_blend_map+0x9f0> 8bdc: 2d02 cmp r5, #2 8bde: d13c bne.n 8c5a <_lv_blend_map+0x9da> blend_fp = color_blend_true_color_subtractive; 8be0: f8df 81e0 ldr.w r8, [pc, #480] ; 8dc4 <_lv_blend_map+0xb44> 8be4: f9b6 3010 ldrsh.w r3, [r6, #16] 8be8: 9309 str r3, [sp, #36] ; 0x24 8bea: 8ab0 ldrh r0, [r6, #20] 8bec: 3001 adds r0, #1 8bee: 1ac0 subs r0, r0, r3 8bf0: b200 sxth r0, r0 8bf2: f9b7 2000 ldrsh.w r2, [r7] 8bf6: 88bb ldrh r3, [r7, #4] 8bf8: 3301 adds r3, #1 8bfa: 1a9b subs r3, r3, r2 8bfc: b21d sxth r5, r3 lv_color_t * disp_buf_tmp = disp_buf + disp_w * draw_area->y1; 8bfe: 46f1 mov r9, lr 8c00: fb0e fb00 mul.w fp, lr, r0 8c04: 9b05 ldr r3, [sp, #20] 8c06: eb03 0b4b add.w fp, r3, fp, lsl #1 const lv_color_t * map_buf_tmp = map_buf + map_w * (draw_area->y1 - (map_area->y1 - disp_area->y1)); 8c0a: f9b7 3002 ldrsh.w r3, [r7, #2] 8c0e: f9b6 6012 ldrsh.w r6, [r6, #18] 8c12: 1b9f subs r7, r3, r6 8c14: ebae 0707 sub.w r7, lr, r7 8c18: fb05 f707 mul.w r7, r5, r7 8c1c: 9b07 ldr r3, [sp, #28] 8c1e: eb03 0747 add.w r7, r3, r7, lsl #1 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 8c22: 2c01 cmp r4, #1 8c24: d027 beq.n 8c76 <_lv_blend_map+0x9f6> const lv_opa_t * mask_tmp = mask - draw_area->x1; 8c26: 9b04 ldr r3, [sp, #16] 8c28: eba3 030c sub.w r3, r3, ip 8c2c: 461a mov r2, r3 map_buf_tmp -= draw_area->x1; 8c2e: eba7 034c sub.w r3, r7, ip, lsl #1 8c32: 9304 str r3, [sp, #16] for(y = draw_area->y1; y <= draw_area->y2; y++) { 8c34: 9b08 ldr r3, [sp, #32] 8c36: 459e cmp lr, r3 8c38: f73f ab2f bgt.w 829a <_lv_blend_map+0x1a> disp_buf_tmp += disp_w; 8c3c: 0043 lsls r3, r0, #1 8c3e: 9307 str r3, [sp, #28] map_buf_tmp += map_w; 8c40: 006b lsls r3, r5, #1 8c42: 9308 str r3, [sp, #32] lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : ((opa * mask_tmp[x]) >> 8); 8c44: f8cd a014 str.w sl, [sp, #20] 8c48: 1c4b adds r3, r1, #1 8c4a: 9906 ldr r1, [sp, #24] 8c4c: 1a5b subs r3, r3, r1 mask_tmp += draw_area_w; 8c4e: b21b sxth r3, r3 8c50: 9309 str r3, [sp, #36] ; 0x24 8c52: f8cd a018 str.w sl, [sp, #24] 8c56: 4692 mov sl, r2 8c58: e066 b.n 8d28 <_lv_blend_map+0xaa8> LV_LOG_WARN("fill_blended: unsupported blend mode"); 8c5a: 4b56 ldr r3, [pc, #344] ; (8db4 <_lv_blend_map+0xb34>) 8c5c: 9300 str r3, [sp, #0] 8c5e: 4b56 ldr r3, [pc, #344] ; (8db8 <_lv_blend_map+0xb38>) 8c60: f240 3253 movw r2, #851 ; 0x353 8c64: 4955 ldr r1, [pc, #340] ; (8dbc <_lv_blend_map+0xb3c>) 8c66: 2002 movs r0, #2 8c68: 4c55 ldr r4, [pc, #340] ; (8dc0 <_lv_blend_map+0xb40>) 8c6a: 47a0 blx r4 8c6c: f7ff bb15 b.w 829a <_lv_blend_map+0x1a> blend_fp = color_blend_true_color_additive; 8c70: f8df 8154 ldr.w r8, [pc, #340] ; 8dc8 <_lv_blend_map+0xb48> 8c74: e7b6 b.n 8be4 <_lv_blend_map+0x964> map_buf_tmp -= draw_area->x1; 8c76: 9b09 ldr r3, [sp, #36] ; 0x24 8c78: 1a9b subs r3, r3, r2 8c7a: eb07 0743 add.w r7, r7, r3, lsl #1 for(y = draw_area->y1; y <= draw_area->y2; y++) { 8c7e: 9b08 ldr r3, [sp, #32] 8c80: 459e cmp lr, r3 8c82: f73f ab0a bgt.w 829a <_lv_blend_map+0x1a> disp_buf_tmp += disp_w; 8c86: 0043 lsls r3, r0, #1 8c88: 9304 str r3, [sp, #16] map_buf_tmp += map_w; 8c8a: 006b lsls r3, r5, #1 8c8c: 9305 str r3, [sp, #20] 8c8e: 463b mov r3, r7 8c90: 4647 mov r7, r8 8c92: 4698 mov r8, r3 for(x = draw_area->x1; x <= draw_area->x2; x++) { 8c94: f9bd 3038 ldrsh.w r3, [sp, #56] ; 0x38 8c98: 461c mov r4, r3 8c9a: f9bd 203c ldrsh.w r2, [sp, #60] ; 0x3c 8c9e: 4293 cmp r3, r2 8ca0: dc10 bgt.n 8cc4 <_lv_blend_map+0xa44> 8ca2: 005b lsls r3, r3, #1 8ca4: eb0b 0503 add.w r5, fp, r3 8ca8: eb08 0603 add.w r6, r8, r3 disp_buf_tmp[x] = blend_fp(map_buf_tmp[x], disp_buf_tmp[x], opa); 8cac: 4652 mov r2, sl 8cae: 8829 ldrh r1, [r5, #0] 8cb0: f836 0b02 ldrh.w r0, [r6], #2 8cb4: 47b8 blx r7 8cb6: f825 0b02 strh.w r0, [r5], #2 for(x = draw_area->x1; x <= draw_area->x2; x++) { 8cba: 3401 adds r4, #1 8cbc: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 8cc0: 429c cmp r4, r3 8cc2: ddf3 ble.n 8cac <_lv_blend_map+0xa2c> disp_buf_tmp += disp_w; 8cc4: 9b04 ldr r3, [sp, #16] 8cc6: 449b add fp, r3 map_buf_tmp += map_w; 8cc8: 9b05 ldr r3, [sp, #20] 8cca: 4498 add r8, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 8ccc: f109 0901 add.w r9, r9, #1 8cd0: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e 8cd4: 4599 cmp r9, r3 8cd6: dddd ble.n 8c94 <_lv_blend_map+0xa14> 8cd8: f7ff badf b.w 829a <_lv_blend_map+0x1a> for(x = draw_area->x1; x <= draw_area->x2; x++) { 8cdc: 3501 adds r5, #1 8cde: 3602 adds r6, #2 8ce0: 3402 adds r4, #2 8ce2: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 8ce6: 429d cmp r5, r3 8ce8: dc0f bgt.n 8d0a <_lv_blend_map+0xa8a> if(mask_tmp[x] == 0) continue; 8cea: f817 3b01 ldrb.w r3, [r7], #1 8cee: 2b00 cmp r3, #0 8cf0: d0f4 beq.n 8cdc <_lv_blend_map+0xa5c> lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : ((opa * mask_tmp[x]) >> 8); 8cf2: 2bf9 cmp r3, #249 ; 0xf9 8cf4: bf9d ittte ls 8cf6: 9a06 ldrls r2, [sp, #24] 8cf8: 4353 mulls r3, r2 8cfa: f3c3 2207 ubfxls r2, r3, #8, #8 8cfe: 9a05 ldrhi r2, [sp, #20] disp_buf_tmp[x] = blend_fp(map_buf_tmp[x], disp_buf_tmp[x], opa_tmp); 8d00: 8831 ldrh r1, [r6, #0] 8d02: 8820 ldrh r0, [r4, #0] 8d04: 47c0 blx r8 8d06: 8030 strh r0, [r6, #0] 8d08: e7e8 b.n 8cdc <_lv_blend_map+0xa5c> disp_buf_tmp += disp_w; 8d0a: 9b07 ldr r3, [sp, #28] 8d0c: 449b add fp, r3 8d0e: 9b09 ldr r3, [sp, #36] ; 0x24 8d10: 449a add sl, r3 map_buf_tmp += map_w; 8d12: 9b04 ldr r3, [sp, #16] 8d14: 9a08 ldr r2, [sp, #32] 8d16: 4413 add r3, r2 8d18: 9304 str r3, [sp, #16] for(y = draw_area->y1; y <= draw_area->y2; y++) { 8d1a: f109 0901 add.w r9, r9, #1 8d1e: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e 8d22: 4599 cmp r9, r3 8d24: f73f aab9 bgt.w 829a <_lv_blend_map+0x1a> for(x = draw_area->x1; x <= draw_area->x2; x++) { 8d28: f9bd 3038 ldrsh.w r3, [sp, #56] ; 0x38 8d2c: 461d mov r5, r3 8d2e: f9bd 203c ldrsh.w r2, [sp, #60] ; 0x3c 8d32: 4293 cmp r3, r2 8d34: dce9 bgt.n 8d0a <_lv_blend_map+0xa8a> 8d36: eb0a 0703 add.w r7, sl, r3 8d3a: 005b lsls r3, r3, #1 8d3c: eb0b 0603 add.w r6, fp, r3 8d40: 9a04 ldr r2, [sp, #16] 8d42: 18d4 adds r4, r2, r3 8d44: e7d1 b.n 8cea <_lv_blend_map+0xa6a> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 8d46: 9b04 ldr r3, [sp, #16] 8d48: 2100 movs r1, #0 for(; x < x_end4; x += 4) { 8d4a: 9a0a ldr r2, [sp, #40] ; 0x28 8d4c: 428a cmp r2, r1 8d4e: dd0a ble.n 8d66 <_lv_blend_map+0xae6> 8d50: 3304 adds r3, #4 8d52: 1cc8 adds r0, r1, #3 8d54: 0040 lsls r0, r0, #1 8d56: 9a06 ldr r2, [sp, #24] 8d58: 1814 adds r4, r2, r0 8d5a: 9a05 ldr r2, [sp, #20] 8d5c: 4410 add r0, r2 8d5e: 950b str r5, [sp, #44] ; 0x2c 8d60: f8dd e028 ldr.w lr, [sp, #40] ; 0x28 8d64: e527 b.n 87b6 <_lv_blend_map+0x536> 8d66: 461a mov r2, r3 8d68: e670 b.n 8a4c <_lv_blend_map+0x7cc> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 8d6a: 9b04 ldr r3, [sp, #16] 8d6c: 2100 movs r1, #0 for(; x < x_end4; x += 4) { 8d6e: 9a0a ldr r2, [sp, #40] ; 0x28 8d70: 4291 cmp r1, r2 8d72: dbed blt.n 8d50 <_lv_blend_map+0xad0> disp_buf_first += disp_w; 8d74: 9b05 ldr r3, [sp, #20] 8d76: 9a0c ldr r2, [sp, #48] ; 0x30 8d78: 4413 add r3, r2 8d7a: 9305 str r3, [sp, #20] 8d7c: 9b04 ldr r3, [sp, #16] 8d7e: 9a09 ldr r2, [sp, #36] ; 0x24 8d80: 4413 add r3, r2 8d82: 9304 str r3, [sp, #16] map_buf_first += map_w; 8d84: 9b06 ldr r3, [sp, #24] 8d86: 9a0d ldr r2, [sp, #52] ; 0x34 8d88: 4413 add r3, r2 8d8a: 9306 str r3, [sp, #24] for(y = 0; y < draw_area_h; y++) { 8d8c: 9b07 ldr r3, [sp, #28] 8d8e: 3301 adds r3, #1 8d90: 9307 str r3, [sp, #28] 8d92: 9a08 ldr r2, [sp, #32] 8d94: 429a cmp r2, r3 8d96: f43f aa80 beq.w 829a <_lv_blend_map+0x1a> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 8d9a: 2d00 cmp r5, #0 8d9c: dde5 ble.n 8d6a <_lv_blend_map+0xaea> 8d9e: 9a04 ldr r2, [sp, #16] 8da0: f012 0f03 tst.w r2, #3 8da4: d0cf beq.n 8d46 <_lv_blend_map+0xac6> 8da6: f8dd 8018 ldr.w r8, [sp, #24] 8daa: f8dd e014 ldr.w lr, [sp, #20] 8dae: 4694 mov ip, r2 8db0: 2100 movs r1, #0 8db2: e49d b.n 86f0 <_lv_blend_map+0x470> 8db4: 00024c90 .word 0x00024c90 8db8: 00024c54 .word 0x00024c54 8dbc: 00024c60 .word 0x00024c60 8dc0: 0001225d .word 0x0001225d 8dc4: 0000769f .word 0x0000769f 8dc8: 000075e9 .word 0x000075e9 00008dcc : * @param antialias anti-alias transformations (rotate, zoom) or not */ LV_ATTRIBUTE_FAST_MEM static void lv_draw_map(const lv_area_t * map_area, const lv_area_t * clip_area, const uint8_t * map_p, lv_draw_img_dsc_t * draw_dsc, bool chroma_key, bool alpha_byte) { 8dcc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 8dd0: b0bd sub sp, #244 ; 0xf4 8dd2: 901b str r0, [sp, #108] ; 0x6c 8dd4: 9123 str r1, [sp, #140] ; 0x8c 8dd6: 4617 mov r7, r2 8dd8: 9308 str r3, [sp, #32] 8dda: f89d 3118 ldrb.w r3, [sp, #280] ; 0x118 8dde: 930a str r3, [sp, #40] ; 0x28 8de0: f89d 311c ldrb.w r3, [sp, #284] ; 0x11c 8de4: 9306 str r3, [sp, #24] 8de6: 1e4b subs r3, r1, #1 8de8: 1dc8 adds r0, r1, #7 * @param src pointer to the source buffer * @param len number of byte to copy */ LV_ATTRIBUTE_FAST_MEM static inline void * _lv_memcpy_small(void * dst, const void * src, size_t len) { uint8_t * d8 = (uint8_t *)dst; 8dea: aa3a add r2, sp, #232 ; 0xe8 const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; 8dec: f813 1f01 ldrb.w r1, [r3, #1]! 8df0: f802 1b01 strb.w r1, [r2], #1 while(len) { 8df4: 4283 cmp r3, r0 8df6: d1f9 bne.n 8dec /* Use the clip area as draw area*/ lv_area_t draw_area; lv_area_copy(&draw_area, clip_area); lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 8df8: 4ba3 ldr r3, [pc, #652] ; (9088 ) 8dfa: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 8dfc: 4ba3 ldr r3, [pc, #652] ; (908c ) 8dfe: 4798 blx r3 8e00: 9018 str r0, [sp, #96] ; 0x60 const lv_area_t * disp_area = &vdb->area; /* Now `draw_area` has absolute coordinates. * Make it relative to `disp_area` to simplify draw to `disp_buf`*/ draw_area.x1 -= disp_area->x1; 8e02: 8a01 ldrh r1, [r0, #16] 8e04: f8bd 30e8 ldrh.w r3, [sp, #232] ; 0xe8 8e08: 1a5b subs r3, r3, r1 8e0a: f8ad 30e8 strh.w r3, [sp, #232] ; 0xe8 draw_area.y1 -= disp_area->y1; 8e0e: 8a42 ldrh r2, [r0, #18] 8e10: f8bd 30ea ldrh.w r3, [sp, #234] ; 0xea 8e14: 1a9b subs r3, r3, r2 8e16: f8ad 30ea strh.w r3, [sp, #234] ; 0xea draw_area.x2 -= disp_area->x1; 8e1a: f8bd 30ec ldrh.w r3, [sp, #236] ; 0xec 8e1e: 1a5b subs r3, r3, r1 8e20: f8ad 30ec strh.w r3, [sp, #236] ; 0xec draw_area.y2 -= disp_area->y1; 8e24: f8bd 30ee ldrh.w r3, [sp, #238] ; 0xee 8e28: 1a9b subs r3, r3, r2 8e2a: f8ad 30ee strh.w r3, [sp, #238] ; 0xee uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 8e2e: 4b98 ldr r3, [pc, #608] ; (9090 ) 8e30: 4798 blx r3 /*The simplest case just copy the pixels into the VDB*/ if(other_mask_cnt == 0 && draw_dsc->angle == 0 && draw_dsc->zoom == LV_IMG_ZOOM_NONE && 8e32: 9019 str r0, [sp, #100] ; 0x64 8e34: b930 cbnz r0, 8e44 8e36: 9a08 ldr r2, [sp, #32] 8e38: 8853 ldrh r3, [r2, #2] 8e3a: b91b cbnz r3, 8e44 8e3c: 8913 ldrh r3, [r2, #8] 8e3e: f5b3 7f80 cmp.w r3, #256 ; 0x100 8e42: d071 beq.n 8f28 draw_dsc->blend_mode); } /*In the other cases every pixel need to be checked one-by-one*/ else { /*The pixel size in byte is different if an alpha byte is added too*/ uint8_t px_size_byte = alpha_byte ? LV_IMG_PX_SIZE_ALPHA_BYTE : sizeof(lv_color_t); 8e44: 9b06 ldr r3, [sp, #24] 8e46: 2b00 cmp r3, #0 8e48: bf14 ite ne 8e4a: f04f 0b03 movne.w fp, #3 8e4e: f04f 0b02 moveq.w fp, #2 8e52: 991b ldr r1, [sp, #108] ; 0x6c 8e54: 460b mov r3, r1 8e56: f9b1 2000 ldrsh.w r2, [r1] 8e5a: 888d ldrh r5, [r1, #4] 8e5c: 3501 adds r5, #1 8e5e: 1aad subs r5, r5, r2 8e60: b22d sxth r5, r5 /*Go to the first displayed pixel of the map*/ int32_t map_w = lv_area_get_width(map_area); const uint8_t * map_buf_tmp = map_p; map_buf_tmp += map_w * (draw_area.y1 - (map_area->y1 - disp_area->y1)) * px_size_byte; 8e62: f9bd 00ea ldrsh.w r0, [sp, #234] ; 0xea 8e66: 9e18 ldr r6, [sp, #96] ; 0x60 8e68: f9b6 1012 ldrsh.w r1, [r6, #18] 8e6c: 46d8 mov r8, fp map_buf_tmp += (draw_area.x1 - (map_area->x1 - disp_area->x1)) * px_size_byte; 8e6e: f9bd 40e8 ldrsh.w r4, [sp, #232] ; 0xe8 8e72: f9b6 6010 ldrsh.w r6, [r6, #16] map_buf_tmp += map_w * (draw_area.y1 - (map_area->y1 - disp_area->y1)) * px_size_byte; 8e76: f9b3 3002 ldrsh.w r3, [r3, #2] 8e7a: 1a5b subs r3, r3, r1 8e7c: 1ac3 subs r3, r0, r3 map_buf_tmp += (draw_area.x1 - (map_area->x1 - disp_area->x1)) * px_size_byte; 8e7e: 1b92 subs r2, r2, r6 8e80: 1aa2 subs r2, r4, r2 8e82: fb05 2303 mla r3, r5, r3, r2 8e86: fb03 730b mla r3, r3, fp, r7 8e8a: 9314 str r3, [sp, #80] ; 0x50 uint32_t px_i = 0; const uint8_t * map_px; lv_area_t blend_area; blend_area.x1 = draw_area.x1 + disp_area->x1; 8e8c: b2a4 uxth r4, r4 8e8e: 19a2 adds r2, r4, r6 8e90: b292 uxth r2, r2 8e92: f8ad 2098 strh.w r2, [sp, #152] ; 0x98 8e96: f8bd 30ec ldrh.w r3, [sp, #236] ; 0xec 8e9a: 3301 adds r3, #1 8e9c: 1b1b subs r3, r3, r4 8e9e: b29b uxth r3, r3 8ea0: b21c sxth r4, r3 8ea2: 9416 str r4, [sp, #88] ; 0x58 blend_area.x2 = blend_area.x1 + lv_area_get_width(&draw_area) - 1; 8ea4: 3b01 subs r3, #1 8ea6: 4413 add r3, r2 8ea8: f8ad 309c strh.w r3, [sp, #156] ; 0x9c blend_area.y1 = disp_area->y1 + draw_area.y1; 8eac: b280 uxth r0, r0 8eae: 1843 adds r3, r0, r1 8eb0: b21b sxth r3, r3 8eb2: f8ad 309a strh.w r3, [sp, #154] ; 0x9a blend_area.y2 = blend_area.y1; 8eb6: f8ad 309e strh.w r3, [sp, #158] ; 0x9e return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 8eba: f8bd 60ee ldrh.w r6, [sp, #238] ; 0xee 8ebe: 3601 adds r6, #1 8ec0: 1a36 subs r6, r6, r0 8ec2: b236 sxth r6, r6 lv_coord_t draw_area_h = lv_area_get_height(&draw_area); lv_coord_t draw_area_w = lv_area_get_width(&draw_area); #if LV_USE_IMG_TRANSFORM bool transform = draw_dsc->angle != 0 || draw_dsc->zoom != LV_IMG_ZOOM_NONE ? true : false; 8ec4: 9908 ldr r1, [sp, #32] 8ec6: 884b ldrh r3, [r1, #2] 8ec8: 2b00 cmp r3, #0 8eca: f040 8353 bne.w 9574 8ece: 890b ldrh r3, [r1, #8] 8ed0: f5b3 7280 subs.w r2, r3, #256 ; 0x100 8ed4: bf18 it ne 8ed6: 2201 movne r2, #1 8ed8: 9205 str r2, [sp, #20] #else bool transform = false; #endif /*Simple ARGB image. Handle it as special case because it's very common*/ if(other_mask_cnt == 0 && !transform && !chroma_key && draw_dsc->recolor_opa == LV_OPA_TRANSP && alpha_byte) { 8eda: 9a19 ldr r2, [sp, #100] ; 0x64 8edc: 2a00 cmp r2, #0 8ede: f040 8370 bne.w 95c2 8ee2: f5b3 7f80 cmp.w r3, #256 ; 0x100 8ee6: f040 8349 bne.w 957c 8eea: 9b0a ldr r3, [sp, #40] ; 0x28 8eec: b923 cbnz r3, 8ef8 8eee: 7a8b ldrb r3, [r1, #10] 8ef0: b913 cbnz r3, 8ef8 8ef2: 9b06 ldr r3, [sp, #24] 8ef4: 2b00 cmp r3, #0 8ef6: d131 bne.n 8f5c _lv_mem_buf_release(map2); } /*Most complicated case: transform or other mask or chroma keyed*/ else { /*Build the image and a mask line-by-line*/ uint32_t mask_buf_size = lv_area_get_size(&draw_area) > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : lv_area_get_size(&draw_area); 8ef8: a83a add r0, sp, #232 ; 0xe8 8efa: 4b66 ldr r3, [pc, #408] ; (9094 ) 8efc: 4798 blx r3 8efe: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0 8f02: f240 80ac bls.w 905e lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 8f06: f44f 7070 mov.w r0, #960 ; 0x3c0 8f0a: 4c63 ldr r4, [pc, #396] ; (9098 ) 8f0c: 47a0 blx r4 8f0e: 901a str r0, [sp, #104] ; 0x68 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 8f10: f44f 70f0 mov.w r0, #480 ; 0x1e0 8f14: 47a0 blx r4 8f16: 9017 str r0, [sp, #92] ; 0x5c #if LV_USE_IMG_TRANSFORM lv_img_transform_dsc_t trans_dsc; _lv_memset_00(&trans_dsc, sizeof(lv_img_transform_dsc_t)); 8f18: 2148 movs r1, #72 ; 0x48 8f1a: a828 add r0, sp, #160 ; 0xa0 8f1c: 4b5f ldr r3, [pc, #380] ; (909c ) 8f1e: 4798 blx r3 uint32_t mask_buf_size = lv_area_get_size(&draw_area) > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : lv_area_get_size(&draw_area); 8f20: f44f 73f0 mov.w r3, #480 ; 0x1e0 8f24: 931c str r3, [sp, #112] ; 0x70 8f26: e0e4 b.n 90f2 if(other_mask_cnt == 0 && draw_dsc->angle == 0 && draw_dsc->zoom == LV_IMG_ZOOM_NONE && 8f28: 9b0a ldr r3, [sp, #40] ; 0x28 8f2a: 2b00 cmp r3, #0 8f2c: d18a bne.n 8e44 chroma_key == false && alpha_byte == false && draw_dsc->recolor_opa == LV_OPA_TRANSP) { 8f2e: 9b06 ldr r3, [sp, #24] 8f30: b98b cbnz r3, 8f56 8f32: 7a93 ldrb r3, [r2, #10] 8f34: b113 cbz r3, 8f3c uint8_t px_size_byte = alpha_byte ? LV_IMG_PX_SIZE_ALPHA_BYTE : sizeof(lv_color_t); 8f36: f04f 0b02 mov.w fp, #2 8f3a: e78a b.n 8e52 _lv_blend_map(clip_area, map_area, (lv_color_t *)map_p, NULL, LV_DRAW_MASK_RES_FULL_COVER, draw_dsc->opa, 8f3c: 7b93 ldrb r3, [r2, #14] 8f3e: 9302 str r3, [sp, #8] 8f40: 7813 ldrb r3, [r2, #0] 8f42: 9301 str r3, [sp, #4] 8f44: 2301 movs r3, #1 8f46: 9300 str r3, [sp, #0] 8f48: 2300 movs r3, #0 8f4a: 463a mov r2, r7 8f4c: 991b ldr r1, [sp, #108] ; 0x6c 8f4e: 9823 ldr r0, [sp, #140] ; 0x8c 8f50: 4c53 ldr r4, [pc, #332] ; (90a0 ) 8f52: 47a0 blx r4 8f54: e30b b.n 956e uint8_t px_size_byte = alpha_byte ? LV_IMG_PX_SIZE_ALPHA_BYTE : sizeof(lv_color_t); 8f56: f04f 0b03 mov.w fp, #3 8f5a: e77a b.n 8e52 uint32_t mask_buf_size = lv_area_get_size(&draw_area) > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : lv_area_get_size(&draw_area); 8f5c: a83a add r0, sp, #232 ; 0xe8 8f5e: 4b4d ldr r3, [pc, #308] ; (9094 ) 8f60: 4798 blx r3 8f62: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0 8f66: d814 bhi.n 8f92 8f68: a83a add r0, sp, #232 ; 0xe8 8f6a: 4b4a ldr r3, [pc, #296] ; (9094 ) 8f6c: 4798 blx r3 8f6e: 4681 mov r9, r0 lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 8f70: ea4f 0049 mov.w r0, r9, lsl #1 8f74: 4c48 ldr r4, [pc, #288] ; (9098 ) 8f76: 47a0 blx r4 8f78: 4682 mov sl, r0 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 8f7a: 4648 mov r0, r9 8f7c: 47a0 blx r4 8f7e: 4604 mov r4, r0 for(y = 0; y < draw_area_h; y++) { 8f80: 9605 str r6, [sp, #20] 8f82: 2e00 cmp r6, #0 8f84: dd4f ble.n 9026 map_buf_tmp += map_w * px_size_byte; 8f86: fb08 f805 mul.w r8, r8, r5 8f8a: 2500 movs r5, #0 8f8c: 46ac mov ip, r5 8f8e: 9e14 ldr r6, [sp, #80] ; 0x50 8f90: e025 b.n 8fde uint32_t mask_buf_size = lv_area_get_size(&draw_area) > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : lv_area_get_size(&draw_area); 8f92: f44f 79f0 mov.w r9, #480 ; 0x1e0 8f96: e7eb b.n 8f70 8f98: 445b add r3, fp 8f9a: 3702 adds r7, #2 for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 8f9c: 4596 cmp lr, r2 8f9e: d00a beq.n 8fb6 lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; 8fa0: 7899 ldrb r1, [r3, #2] mask_buf[px_i] = px_opa; 8fa2: f802 1b01 strb.w r1, [r2], #1 if(px_opa) { 8fa6: 2900 cmp r1, #0 8fa8: d0f6 beq.n 8f98 map2[px_i].full = map_px[0] + (map_px[1] << 8); 8faa: 7858 ldrb r0, [r3, #1] 8fac: 7819 ldrb r1, [r3, #0] 8fae: eb01 2100 add.w r1, r1, r0, lsl #8 8fb2: 8039 strh r1, [r7, #0] 8fb4: e7f0 b.n 8f98 map_buf_tmp += map_w * px_size_byte; 8fb6: 4446 add r6, r8 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 8fb8: f8bd 30ec ldrh.w r3, [sp, #236] ; 0xec 8fbc: 3301 adds r3, #1 8fbe: f8bd 20e8 ldrh.w r2, [sp, #232] ; 0xe8 8fc2: 1a9b subs r3, r3, r2 if(px_i + lv_area_get_width(&draw_area) < mask_buf_size) { 8fc4: fa0c f383 sxtah r3, ip, r3 8fc8: 4599 cmp r9, r3 8fca: d914 bls.n 8ff6 blend_area.y2 ++; 8fcc: f8bd 309e ldrh.w r3, [sp, #158] ; 0x9e 8fd0: 3301 adds r3, #1 8fd2: f8ad 309e strh.w r3, [sp, #158] ; 0x9e for(y = 0; y < draw_area_h; y++) { 8fd6: 3501 adds r5, #1 8fd8: 9b05 ldr r3, [sp, #20] 8fda: 429d cmp r5, r3 8fdc: d023 beq.n 9026 for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 8fde: 9b16 ldr r3, [sp, #88] ; 0x58 8fe0: 2b00 cmp r3, #0 8fe2: dde8 ble.n 8fb6 8fe4: eb04 020c add.w r2, r4, ip 8fe8: eb0a 074c add.w r7, sl, ip, lsl #1 8fec: 449c add ip, r3 8fee: eb04 0e0c add.w lr, r4, ip 8ff2: 4633 mov r3, r6 8ff4: e7d4 b.n 8fa0 _lv_blend_map(clip_area, &blend_area, map2, mask_buf, LV_DRAW_MASK_RES_CHANGED, draw_dsc->opa, draw_dsc->blend_mode); 8ff6: 9a08 ldr r2, [sp, #32] 8ff8: 7b93 ldrb r3, [r2, #14] 8ffa: 9302 str r3, [sp, #8] 8ffc: 7813 ldrb r3, [r2, #0] 8ffe: 9301 str r3, [sp, #4] 9000: 2302 movs r3, #2 9002: 9300 str r3, [sp, #0] 9004: 4623 mov r3, r4 9006: 4652 mov r2, sl 9008: a926 add r1, sp, #152 ; 0x98 900a: 9823 ldr r0, [sp, #140] ; 0x8c 900c: 4f24 ldr r7, [pc, #144] ; (90a0 ) 900e: 47b8 blx r7 blend_area.y1 = blend_area.y2 + 1; 9010: f8bd 309e ldrh.w r3, [sp, #158] ; 0x9e 9014: 3301 adds r3, #1 9016: b21b sxth r3, r3 9018: f8ad 309a strh.w r3, [sp, #154] ; 0x9a blend_area.y2 = blend_area.y1; 901c: f8ad 309e strh.w r3, [sp, #158] ; 0x9e px_i = 0; 9020: f04f 0c00 mov.w ip, #0 9024: e7d7 b.n 8fd6 if(blend_area.y1 != blend_area.y2) { 9026: f9bd 309e ldrsh.w r3, [sp, #158] ; 0x9e 902a: f9bd 209a ldrsh.w r2, [sp, #154] ; 0x9a 902e: 429a cmp r2, r3 9030: d00f beq.n 9052 blend_area.y2--; 9032: 3b01 subs r3, #1 9034: f8ad 309e strh.w r3, [sp, #158] ; 0x9e _lv_blend_map(clip_area, &blend_area, map2, mask_buf, LV_DRAW_MASK_RES_CHANGED, draw_dsc->opa, draw_dsc->blend_mode); 9038: 9a08 ldr r2, [sp, #32] 903a: 7b93 ldrb r3, [r2, #14] 903c: 9302 str r3, [sp, #8] 903e: 7813 ldrb r3, [r2, #0] 9040: 9301 str r3, [sp, #4] 9042: 2302 movs r3, #2 9044: 9300 str r3, [sp, #0] 9046: 4623 mov r3, r4 9048: 4652 mov r2, sl 904a: a926 add r1, sp, #152 ; 0x98 904c: 9823 ldr r0, [sp, #140] ; 0x8c 904e: 4d14 ldr r5, [pc, #80] ; (90a0 ) 9050: 47a8 blx r5 _lv_mem_buf_release(mask_buf); 9052: 4620 mov r0, r4 9054: 4c13 ldr r4, [pc, #76] ; (90a4 ) 9056: 47a0 blx r4 _lv_mem_buf_release(map2); 9058: 4650 mov r0, sl 905a: 47a0 blx r4 if(other_mask_cnt == 0 && !transform && !chroma_key && draw_dsc->recolor_opa == LV_OPA_TRANSP && alpha_byte) { 905c: e287 b.n 956e uint32_t mask_buf_size = lv_area_get_size(&draw_area) > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : lv_area_get_size(&draw_area); 905e: a83a add r0, sp, #232 ; 0xe8 9060: 4b0c ldr r3, [pc, #48] ; (9094 ) 9062: 4798 blx r3 9064: 901c str r0, [sp, #112] ; 0x70 lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 9066: 9b1c ldr r3, [sp, #112] ; 0x70 9068: 0058 lsls r0, r3, #1 906a: 4c0b ldr r4, [pc, #44] ; (9098 ) 906c: 47a0 blx r4 906e: 901a str r0, [sp, #104] ; 0x68 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 9070: 981c ldr r0, [sp, #112] ; 0x70 9072: 47a0 blx r4 9074: 9017 str r0, [sp, #92] ; 0x5c _lv_memset_00(&trans_dsc, sizeof(lv_img_transform_dsc_t)); 9076: 2148 movs r1, #72 ; 0x48 9078: a828 add r0, sp, #160 ; 0xa0 907a: 4b08 ldr r3, [pc, #32] ; (909c ) 907c: 4798 blx r3 if(transform) { 907e: 9b05 ldr r3, [sp, #20] 9080: 2b00 cmp r3, #0 9082: d036 beq.n 90f2 9084: e291 b.n 95aa 9086: bf00 nop 9088: 00005f69 .word 0x00005f69 908c: 00010fdd .word 0x00010fdd 9090: 0000bec5 .word 0x0000bec5 9094: 000114fd .word 0x000114fd 9098: 0001293d .word 0x0001293d 909c: 00012b37 .word 0x00012b37 90a0: 00008281 .word 0x00008281 90a4: 00012571 .word 0x00012571 lv_img_cf_t cf = LV_IMG_CF_TRUE_COLOR; if(alpha_byte) cf = LV_IMG_CF_TRUE_COLOR_ALPHA; 90a8: 2205 movs r2, #5 else if(chroma_key) cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED; trans_dsc.cfg.angle = draw_dsc->angle; 90aa: 9808 ldr r0, [sp, #32] 90ac: 8843 ldrh r3, [r0, #2] 90ae: f8ad 30ac strh.w r3, [sp, #172] ; 0xac trans_dsc.cfg.zoom = draw_dsc->zoom; 90b2: 8903 ldrh r3, [r0, #8] 90b4: f8ad 30ae strh.w r3, [sp, #174] ; 0xae trans_dsc.cfg.src = map_p; 90b8: 9728 str r7, [sp, #160] ; 0xa0 trans_dsc.cfg.src_w = map_w; 90ba: f8ad 50a4 strh.w r5, [sp, #164] ; 0xa4 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 90be: 991b ldr r1, [sp, #108] ; 0x6c 90c0: 88cb ldrh r3, [r1, #6] 90c2: 3301 adds r3, #1 90c4: 8849 ldrh r1, [r1, #2] 90c6: 1a5b subs r3, r3, r1 trans_dsc.cfg.src_h = lv_area_get_height(map_area);; 90c8: f8ad 30a6 strh.w r3, [sp, #166] ; 0xa6 trans_dsc.cfg.cf = cf; 90cc: f88d 20b2 strb.w r2, [sp, #178] ; 0xb2 trans_dsc.cfg.pivot_x = draw_dsc->pivot.x; 90d0: 8883 ldrh r3, [r0, #4] 90d2: f8ad 30a8 strh.w r3, [sp, #168] ; 0xa8 trans_dsc.cfg.pivot_y = draw_dsc->pivot.y; 90d6: 88c3 ldrh r3, [r0, #6] 90d8: f8ad 30aa strh.w r3, [sp, #170] ; 0xaa trans_dsc.cfg.color = draw_dsc->recolor; 90dc: 8983 ldrh r3, [r0, #12] 90de: f8ad 30b0 strh.w r3, [sp, #176] ; 0xb0 trans_dsc.cfg.antialias = draw_dsc->antialias; 90e2: 7bc3 ldrb r3, [r0, #15] 90e4: f3c3 0300 ubfx r3, r3, #0, #1 90e8: f88d 30b3 strb.w r3, [sp, #179] ; 0xb3 _lv_img_buf_transform_init(&trans_dsc); 90ec: a828 add r0, sp, #160 ; 0xa0 90ee: 4b93 ldr r3, [pc, #588] ; (933c ) 90f0: 4798 blx r3 } #endif uint16_t recolor_premult[3] = {0}; lv_opa_t recolor_opa_inv = 255 - draw_dsc->recolor_opa; 90f2: 9808 ldr r0, [sp, #32] 90f4: 7a83 ldrb r3, [r0, #10] 90f6: 43da mvns r2, r3 90f8: b2d2 uxtb r2, r2 90fa: 9212 str r2, [sp, #72] ; 0x48 if(draw_dsc->recolor_opa != 0) { 90fc: b303 cbz r3, 9140 out[0] = (uint16_t) LV_COLOR_GET_R(c) * mix; 90fe: b29b uxth r3, r3 9100: 7b42 ldrb r2, [r0, #13] 9102: 08d2 lsrs r2, r2, #3 9104: fb02 f203 mul.w r2, r2, r3 9108: 9210 str r2, [sp, #64] ; 0x40 out[1] = (uint16_t) LV_COLOR_GET_G(c) * mix; 910a: 8982 ldrh r2, [r0, #12] 910c: f3c2 1245 ubfx r2, r2, #5, #6 9110: fb02 f203 mul.w r2, r2, r3 9114: 9211 str r2, [sp, #68] ; 0x44 out[2] = (uint16_t) LV_COLOR_GET_B(c) * mix; 9116: 7b02 ldrb r2, [r0, #12] 9118: f002 021f and.w r2, r2, #31 911c: fb02 f303 mul.w r3, r2, r3 9120: 9313 str r3, [sp, #76] ; 0x4c lv_color_premult(draw_dsc->recolor, draw_dsc->recolor_opa, recolor_premult); } lv_draw_mask_res_t mask_res; mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 9122: 9b06 ldr r3, [sp, #24] 9124: b98b cbnz r3, 914a 9126: 9b0a ldr r3, [sp, #40] ; 0x28 9128: bb53 cbnz r3, 9180 912a: 9a08 ldr r2, [sp, #32] 912c: 8853 ldrh r3, [r2, #2] 912e: bb53 cbnz r3, 9186 9130: 8913 ldrh r3, [r2, #8] 9132: f5b3 7f80 cmp.w r3, #256 ; 0x100 9136: bf14 ite ne 9138: 2302 movne r3, #2 913a: 2301 moveq r3, #1 913c: 931d str r3, [sp, #116] ; 0x74 913e: e006 b.n 914e uint16_t recolor_premult[3] = {0}; 9140: 2300 movs r3, #0 9142: 9313 str r3, [sp, #76] ; 0x4c 9144: 9311 str r3, [sp, #68] ; 0x44 9146: 9310 str r3, [sp, #64] ; 0x40 9148: e7eb b.n 9122 mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 914a: 2302 movs r3, #2 914c: 931d str r3, [sp, #116] ; 0x74 draw_dsc->zoom != LV_IMG_ZOOM_NONE) ? LV_DRAW_MASK_RES_CHANGED : LV_DRAW_MASK_RES_FULL_COVER; /*Prepare the `mask_buf`if there are other masks*/ if(other_mask_cnt) { 914e: 9b19 ldr r3, [sp, #100] ; 0x64 9150: b9e3 cbnz r3, 918c } int32_t x; int32_t y; #if LV_USE_IMG_TRANSFORM int32_t rot_y = disp_area->y1 + draw_area.y1 - map_area->y1; 9152: 9b18 ldr r3, [sp, #96] ; 0x60 9154: f9b3 3012 ldrsh.w r3, [r3, #18] 9158: f9bd 20ea ldrsh.w r2, [sp, #234] ; 0xea 915c: 4413 add r3, r2 915e: 9a1b ldr r2, [sp, #108] ; 0x6c 9160: f9b2 2002 ldrsh.w r2, [r2, #2] 9164: 1a9b subs r3, r3, r2 9166: 9322 str r3, [sp, #136] ; 0x88 #endif for(y = 0; y < draw_area_h; y++) { 9168: 961f str r6, [sp, #124] ; 0x7c 916a: 2e00 cmp r6, #0 916c: f340 81e4 ble.w 9538 else if(mask_res_sub == LV_DRAW_MASK_RES_CHANGED) { mask_res = LV_DRAW_MASK_RES_CHANGED; } } map_buf_tmp += map_w * px_size_byte; 9170: fb08 f305 mul.w r3, r8, r5 9174: 931e str r3, [sp, #120] ; 0x78 9176: 2300 movs r3, #0 9178: 930e str r3, [sp, #56] ; 0x38 917a: 930f str r3, [sp, #60] ; 0x3c } } else { pxi = 0; /*unused*/ px_size = 0; /*unused*/ dsc->res.color = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, xs_int, ys_int, dsc->cfg.color); 917c: 46d1 mov r9, sl 917e: e154 b.n 942a mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 9180: 2302 movs r3, #2 9182: 931d str r3, [sp, #116] ; 0x74 9184: e7e3 b.n 914e 9186: 2302 movs r3, #2 9188: 931d str r3, [sp, #116] ; 0x74 918a: e7e0 b.n 914e _lv_memset_ff(mask_buf, mask_buf_size); 918c: 991c ldr r1, [sp, #112] ; 0x70 918e: 9817 ldr r0, [sp, #92] ; 0x5c 9190: 4b6b ldr r3, [pc, #428] ; (9340 ) 9192: 4798 blx r3 9194: e7dd b.n 9152 int32_t xt = x - dsc->cfg.pivot_x; 9196: 9b0c ldr r3, [sp, #48] ; 0x30 9198: 442b add r3, r5 919a: b21b sxth r3, r3 919c: f9bd 20a8 ldrsh.w r2, [sp, #168] ; 0xa8 91a0: 1a9b subs r3, r3, r2 int32_t yt = y - dsc->cfg.pivot_y; 91a2: f9bd 20aa ldrsh.w r2, [sp, #170] ; 0xaa 91a6: 990d ldr r1, [sp, #52] ; 0x34 91a8: 1a8a subs r2, r1, r2 if(dsc->cfg.zoom == LV_IMG_ZOOM_NONE) { 91aa: f8bd 10ae ldrh.w r1, [sp, #174] ; 0xae 91ae: f5b1 7f80 cmp.w r1, #256 ; 0x100 91b2: d056 beq.n 9262 else if(dsc->cfg.angle == 0) { 91b4: f9bd 10ac ldrsh.w r1, [sp, #172] ; 0xac 91b8: 2900 cmp r1, #0 91ba: d165 bne.n 9288 xt *= dsc->tmp.zoom_inv; 91bc: f8bd 10d6 ldrh.w r1, [sp, #214] ; 0xd6 xs = xt + dsc->tmp.pivot_x_256; 91c0: 9c31 ldr r4, [sp, #196] ; 0xc4 91c2: fb01 4303 mla r3, r1, r3, r4 91c6: 9309 str r3, [sp, #36] ; 0x24 ys = yt + dsc->tmp.pivot_y_256; 91c8: 9b32 ldr r3, [sp, #200] ; 0xc8 91ca: fb01 3302 mla r3, r1, r2, r3 91ce: 930b str r3, [sp, #44] ; 0x2c int32_t xs_int = xs >> 8; 91d0: 9b09 ldr r3, [sp, #36] ; 0x24 91d2: 121f asrs r7, r3, #8 if(xs_int >= dsc->cfg.src_w) return false; 91d4: f9bd 30a4 ldrsh.w r3, [sp, #164] ; 0xa4 91d8: 429f cmp r7, r3 91da: f280 80ab bge.w 9334 else if(xs_int < 0) return false; 91de: 2f00 cmp r7, #0 91e0: f2c0 80a8 blt.w 9334 int32_t ys_int = ys >> 8; 91e4: 9a0b ldr r2, [sp, #44] ; 0x2c 91e6: 1212 asrs r2, r2, #8 91e8: 4610 mov r0, r2 91ea: 9215 str r2, [sp, #84] ; 0x54 if(ys_int >= dsc->cfg.src_h) return false; 91ec: f9bd 20a6 ldrsh.w r2, [sp, #166] ; 0xa6 91f0: 4290 cmp r0, r2 91f2: f280 809f bge.w 9334 else if(ys_int < 0) return false; 91f6: 2800 cmp r0, #0 91f8: f2c0 809c blt.w 9334 if(dsc->tmp.native_color) { 91fc: f89d 20d4 ldrb.w r2, [sp, #212] ; 0xd4 9200: f012 0f04 tst.w r2, #4 9204: d06a beq.n 92dc const uint8_t * src_u8 = (const uint8_t *)dsc->cfg.src; 9206: 9928 ldr r1, [sp, #160] ; 0xa0 if(dsc->tmp.has_alpha == 0) { 9208: f012 0f02 tst.w r2, #2 920c: d155 bne.n 92ba pxi = dsc->cfg.src_w * ys_int * px_size + xs_int * px_size; 920e: fb03 7300 mla r3, r3, r0, r7 9212: 005a lsls r2, r3, #1 _lv_memcpy_small(&dsc->res.color, &src_u8[pxi], px_size); 9214: 1888 adds r0, r1, r2 *d8 = *s8; 9216: f811 3013 ldrb.w r3, [r1, r3, lsl #1] 921a: f88d 30b4 strb.w r3, [sp, #180] ; 0xb4 921e: 7843 ldrb r3, [r0, #1] 9220: f88d 30b5 strb.w r3, [sp, #181] ; 0xb5 px_size = LV_COLOR_SIZE >> 3; 9224: 2102 movs r1, #2 dsc->res.opa = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, xs_int, ys_int); } if(dsc->tmp.chroma_keyed) { 9226: f89d 30d4 ldrb.w r3, [sp, #212] ; 0xd4 922a: f013 0f01 tst.w r3, #1 922e: d00d beq.n 924c lv_color_t ct = LV_COLOR_TRANSP; 9230: 9b20 ldr r3, [sp, #128] ; 0x80 9232: f36f 0304 bfc r3, #0, #5 9236: f443 63fc orr.w r3, r3, #2016 ; 0x7e0 923a: f36f 23cf bfc r3, #11, #5 923e: f8ad 3080 strh.w r3, [sp, #128] ; 0x80 if(dsc->res.color.full == ct.full) return false; 9242: f8bd 00b4 ldrh.w r0, [sp, #180] ; 0xb4 9246: b29b uxth r3, r3 9248: 4298 cmp r0, r3 924a: d073 beq.n 9334 } if(dsc->cfg.antialias == false) return true; 924c: f89d 30b3 ldrb.w r3, [sp, #179] ; 0xb3 9250: 2b00 cmp r3, #0 9252: d159 bne.n 9308 mask_buf[px_i] = trans_dsc.res.opa; 9254: f89d 30b6 ldrb.w r3, [sp, #182] ; 0xb6 9258: f88a 3000 strb.w r3, [sl] c.full = trans_dsc.res.color.full; 925c: f8bd 30b4 ldrh.w r3, [sp, #180] ; 0xb4 9260: e086 b.n 9370 xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_x_256; 9262: 9834 ldr r0, [sp, #208] ; 0xd0 9264: 9933 ldr r1, [sp, #204] ; 0xcc 9266: fb00 f403 mul.w r4, r0, r3 926a: fb01 4712 mls r7, r1, r2, r4 926e: 9c31 ldr r4, [sp, #196] ; 0xc4 9270: eb04 14e7 add.w r4, r4, r7, asr #7 9274: 9409 str r4, [sp, #36] ; 0x24 ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_y_256; 9276: fb00 f202 mul.w r2, r0, r2 927a: fb01 2303 mla r3, r1, r3, r2 927e: 9a32 ldr r2, [sp, #200] ; 0xc8 9280: eb02 13e3 add.w r3, r2, r3, asr #7 9284: 930b str r3, [sp, #44] ; 0x2c 9286: e7a3 b.n 91d0 xt *= dsc->tmp.zoom_inv; 9288: f8bd 10d6 ldrh.w r1, [sp, #214] ; 0xd6 928c: fb01 f303 mul.w r3, r1, r3 yt *= dsc->tmp.zoom_inv; 9290: fb01 f202 mul.w r2, r1, r2 xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_x_256; 9294: 9934 ldr r1, [sp, #208] ; 0xd0 9296: 9833 ldr r0, [sp, #204] ; 0xcc 9298: fb01 f403 mul.w r4, r1, r3 929c: fb00 4712 mls r7, r0, r2, r4 92a0: 9c31 ldr r4, [sp, #196] ; 0xc4 92a2: eb04 34e7 add.w r4, r4, r7, asr #15 92a6: 9409 str r4, [sp, #36] ; 0x24 ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_y_256; 92a8: fb01 f202 mul.w r2, r1, r2 92ac: fb00 2303 mla r3, r0, r3, r2 92b0: 9a32 ldr r2, [sp, #200] ; 0xc8 92b2: eb02 33e3 add.w r3, r2, r3, asr #15 92b6: 930b str r3, [sp, #44] ; 0x2c 92b8: e78a b.n 91d0 pxi = dsc->cfg.src_w * ys_int * px_size + xs_int * px_size; 92ba: 9a15 ldr r2, [sp, #84] ; 0x54 92bc: fb03 7302 mla r3, r3, r2, r7 92c0: eb03 0243 add.w r2, r3, r3, lsl #1 _lv_memcpy_small(&dsc->res.color, &src_u8[pxi], px_size - 1); 92c4: 188b adds r3, r1, r2 92c6: 5c89 ldrb r1, [r1, r2] 92c8: f88d 10b4 strb.w r1, [sp, #180] ; 0xb4 92cc: 7859 ldrb r1, [r3, #1] 92ce: f88d 10b5 strb.w r1, [sp, #181] ; 0xb5 dsc->res.opa = src_u8[pxi + px_size - 1]; 92d2: 789b ldrb r3, [r3, #2] 92d4: f88d 30b6 strb.w r3, [sp, #182] ; 0xb6 px_size = LV_IMG_PX_SIZE_ALPHA_BYTE; 92d8: 2103 movs r1, #3 92da: e7a4 b.n 9226 dsc->res.color = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, xs_int, ys_int, dsc->cfg.color); 92dc: b239 sxth r1, r7 92de: f9bd 2054 ldrsh.w r2, [sp, #84] ; 0x54 92e2: f8bd 30b0 ldrh.w r3, [sp, #176] ; 0xb0 92e6: 9225 str r2, [sp, #148] ; 0x94 92e8: 9124 str r1, [sp, #144] ; 0x90 92ea: a82e add r0, sp, #184 ; 0xb8 92ec: 4c15 ldr r4, [pc, #84] ; (9344 ) 92ee: 47a0 blx r4 92f0: f8ad 00b4 strh.w r0, [sp, #180] ; 0xb4 dsc->res.opa = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, xs_int, ys_int); 92f4: 9a25 ldr r2, [sp, #148] ; 0x94 92f6: 9924 ldr r1, [sp, #144] ; 0x90 92f8: a82e add r0, sp, #184 ; 0xb8 92fa: 4b13 ldr r3, [pc, #76] ; (9348 ) 92fc: 4798 blx r3 92fe: f88d 00b6 strb.w r0, [sp, #182] ; 0xb6 pxi = 0; /*unused*/ 9302: 2200 movs r2, #0 px_size = 0; /*unused*/ 9304: 4611 mov r1, r2 9306: e78e b.n 9226 dsc->tmp.xs = xs; 9308: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 930c: f8ad 30d8 strh.w r3, [sp, #216] ; 0xd8 dsc->tmp.ys = ys; 9310: f8bd 302c ldrh.w r3, [sp, #44] ; 0x2c 9314: f8ad 30da strh.w r3, [sp, #218] ; 0xda dsc->tmp.xs_int = xs_int; 9318: f8ad 70dc strh.w r7, [sp, #220] ; 0xdc dsc->tmp.ys_int = ys_int; 931c: f8bd 3054 ldrh.w r3, [sp, #84] ; 0x54 9320: f8ad 30de strh.w r3, [sp, #222] ; 0xde dsc->tmp.pxi = pxi; 9324: 9238 str r2, [sp, #224] ; 0xe0 dsc->tmp.px_size = px_size; 9326: f88d 10e4 strb.w r1, [sp, #228] ; 0xe4 bool ret; ret = _lv_img_buf_transform_anti_alias(dsc); 932a: a828 add r0, sp, #160 ; 0xa0 932c: 4b07 ldr r3, [pc, #28] ; (934c ) 932e: 4798 blx r3 if(ret == false) { 9330: 2800 cmp r0, #0 9332: d18f bne.n 9254 mask_buf[px_i] = LV_OPA_TRANSP; 9334: 2300 movs r3, #0 9336: f88a 3000 strb.w r3, [sl] continue; 933a: e03d b.n 93b8 933c: 0000eb4d .word 0x0000eb4d 9340: 00012bed .word 0x00012bed 9344: 0000e919 .word 0x0000e919 9348: 0000ea49 .word 0x0000ea49 934c: 0000edfd .word 0x0000edfd 9350: 000007e0 .word 0x000007e0 mask_buf[px_i] = 0xFF; 9354: 23ff movs r3, #255 ; 0xff 9356: f88a 3000 strb.w r3, [sl] c.full = map_px[0] + (map_px[1] << 8); 935a: 7872 ldrb r2, [r6, #1] 935c: 7833 ldrb r3, [r6, #0] 935e: eb03 2302 add.w r3, r3, r2, lsl #8 9362: b29b uxth r3, r3 if(chroma_key) { 9364: 9a0a ldr r2, [sp, #40] ; 0x28 9366: b11a cbz r2, 9370 if(c.full == chroma_keyed_color.full) { 9368: f83f 201c ldrh.w r2, [pc, #-28] ; 9350 936c: 429a cmp r2, r3 936e: d036 beq.n 93de if(draw_dsc->recolor_opa != 0) { 9370: 9a08 ldr r2, [sp, #32] 9372: 7a92 ldrb r2, [r2, #10] 9374: b1ea cbz r2, 93b2 LV_COLOR_SET_R(ret, (uint16_t)((uint16_t) premult_c1[0] + LV_COLOR_GET_R(c2) * mix) >> 8); 9376: f8bd 2048 ldrh.w r2, [sp, #72] ; 0x48 937a: 0ad9 lsrs r1, r3, #11 937c: 9810 ldr r0, [sp, #64] ; 0x40 937e: fb01 0102 mla r1, r1, r2, r0 9382: f3c1 2104 ubfx r1, r1, #8, #5 LV_COLOR_SET_G(ret, (uint16_t)((uint16_t) premult_c1[1] + LV_COLOR_GET_G(c2) * mix) >> 8); 9386: f3c3 1045 ubfx r0, r3, #5, #6 938a: 9c11 ldr r4, [sp, #68] ; 0x44 938c: fb00 4002 mla r0, r0, r2, r4 9390: f3c0 2005 ubfx r0, r0, #8, #6 LV_COLOR_SET_B(ret, (uint16_t)((uint16_t) premult_c1[2] + LV_COLOR_GET_B(c2) * mix) >> 8); 9394: f003 031f and.w r3, r3, #31 9398: 9c13 ldr r4, [sp, #76] ; 0x4c 939a: fb03 4302 mla r3, r3, r2, r4 939e: f3c3 2307 ubfx r3, r3, #8, #8 93a2: f363 0904 bfi r9, r3, #0, #5 93a6: f360 194a bfi r9, r0, #5, #6 93aa: f361 29cf bfi r9, r1, #11, #5 93ae: fa1f f389 uxth.w r3, r9 map2[px_i].full = c.full; 93b2: 9a07 ldr r2, [sp, #28] 93b4: f822 3015 strh.w r3, [r2, r5, lsl #1] for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 93b8: 3501 adds r5, #1 93ba: 445e add r6, fp 93bc: f10a 0a01 add.w sl, sl, #1 93c0: 4545 cmp r5, r8 93c2: d010 beq.n 93e6 if(transform) { 93c4: 9b05 ldr r3, [sp, #20] 93c6: 2b00 cmp r3, #0 93c8: f47f aee5 bne.w 9196 if(alpha_byte) { 93cc: 9b06 ldr r3, [sp, #24] 93ce: 2b00 cmp r3, #0 93d0: d0c0 beq.n 9354 lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; 93d2: 78b3 ldrb r3, [r6, #2] mask_buf[px_i] = px_opa; 93d4: f88a 3000 strb.w r3, [sl] if(px_opa == 0) { 93d8: 2b00 cmp r3, #0 93da: d0ed beq.n 93b8 93dc: e7bd b.n 935a mask_buf[px_i] = LV_OPA_TRANSP; 93de: 2300 movs r3, #0 93e0: f88a 3000 strb.w r3, [sl] continue; 93e4: e7e8 b.n 93b8 93e6: 9b16 ldr r3, [sp, #88] ; 0x58 93e8: 9a0f ldr r2, [sp, #60] ; 0x3c 93ea: 189c adds r4, r3, r2 if(other_mask_cnt) { 93ec: 9b19 ldr r3, [sp, #100] ; 0x64 93ee: 2b00 cmp r3, #0 93f0: d13e bne.n 9470 map_buf_tmp += map_w * px_size_byte; 93f2: 9b14 ldr r3, [sp, #80] ; 0x50 93f4: 9a1e ldr r2, [sp, #120] ; 0x78 93f6: 4413 add r3, r2 93f8: 9314 str r3, [sp, #80] ; 0x50 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 93fa: f8bd 30ec ldrh.w r3, [sp, #236] ; 0xec 93fe: 3301 adds r3, #1 9400: f8bd 20e8 ldrh.w r2, [sp, #232] ; 0xe8 9404: 1a9b subs r3, r3, r2 if(px_i + lv_area_get_width(&draw_area) < mask_buf_size) { 9406: fa04 f383 sxtah r3, r4, r3 940a: 9a1c ldr r2, [sp, #112] ; 0x70 940c: 429a cmp r2, r3 940e: d95c bls.n 94ca blend_area.y2 ++; 9410: f8bd 309e ldrh.w r3, [sp, #158] ; 0x9e 9414: 3301 adds r3, #1 9416: f8ad 309e strh.w r3, [sp, #158] ; 0x9e 941a: 940f str r4, [sp, #60] ; 0x3c for(y = 0; y < draw_area_h; y++) { 941c: 9b0e ldr r3, [sp, #56] ; 0x38 941e: 3301 adds r3, #1 9420: 930e str r3, [sp, #56] ; 0x38 9422: 9a1f ldr r2, [sp, #124] ; 0x7c 9424: 4293 cmp r3, r2 9426: f000 8087 beq.w 9538 int32_t rot_x = disp_area->x1 + draw_area.x1 - map_area->x1; 942a: 9b18 ldr r3, [sp, #96] ; 0x60 942c: f9b3 3010 ldrsh.w r3, [r3, #16] 9430: f9bd 20e8 ldrsh.w r2, [sp, #232] ; 0xe8 9434: 4413 add r3, r2 9436: 9a1b ldr r2, [sp, #108] ; 0x6c 9438: f9b2 2000 ldrsh.w r2, [r2] 943c: 1a9b subs r3, r3, r2 943e: 930c str r3, [sp, #48] ; 0x30 for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 9440: 9b16 ldr r3, [sp, #88] ; 0x58 9442: 4698 mov r8, r3 9444: 2b00 cmp r3, #0 9446: dd11 ble.n 946c 9448: 9b17 ldr r3, [sp, #92] ; 0x5c 944a: 4619 mov r1, r3 944c: 9a0f ldr r2, [sp, #60] ; 0x3c 944e: eb01 0a02 add.w sl, r1, r2 9452: 9b1a ldr r3, [sp, #104] ; 0x68 9454: 4619 mov r1, r3 9456: eb01 0342 add.w r3, r1, r2, lsl #1 945a: 9307 str r3, [sp, #28] 945c: 9e14 ldr r6, [sp, #80] ; 0x50 945e: 2500 movs r5, #0 int32_t yt = y - dsc->cfg.pivot_y; 9460: 9b22 ldr r3, [sp, #136] ; 0x88 9462: 9a0e ldr r2, [sp, #56] ; 0x38 9464: 4413 add r3, r2 9466: b21b sxth r3, r3 9468: 930d str r3, [sp, #52] ; 0x34 946a: e7ab b.n 93c4 946c: 9c0f ldr r4, [sp, #60] ; 0x3c 946e: e7bd b.n 93ec mask_res_sub = lv_draw_mask_apply(mask_buf + px_i_start, draw_area.x1 + vdb->area.x1, y + draw_area.y1 + vdb->area.y1, 9470: 9b0f ldr r3, [sp, #60] ; 0x3c 9472: 9a17 ldr r2, [sp, #92] ; 0x5c 9474: 4413 add r3, r2 9476: 461e mov r6, r3 9478: f8bd 10e8 ldrh.w r1, [sp, #232] ; 0xe8 947c: f8bd 30ec ldrh.w r3, [sp, #236] ; 0xec 9480: 3301 adds r3, #1 9482: 1a5b subs r3, r3, r1 9484: f8bd 20ea ldrh.w r2, [sp, #234] ; 0xea 9488: 9d18 ldr r5, [sp, #96] ; 0x60 948a: 8a68 ldrh r0, [r5, #18] 948c: 4402 add r2, r0 948e: 980e ldr r0, [sp, #56] ; 0x38 9490: 4402 add r2, r0 9492: 8a28 ldrh r0, [r5, #16] 9494: 4401 add r1, r0 9496: b21b sxth r3, r3 9498: b212 sxth r2, r2 949a: b209 sxth r1, r1 949c: 4630 mov r0, r6 949e: 4d4e ldr r5, [pc, #312] ; (95d8 ) 94a0: 47a8 blx r5 if(mask_res_sub == LV_DRAW_MASK_RES_TRANSP) { 94a2: b128 cbz r0, 94b0 mask_res = LV_DRAW_MASK_RES_CHANGED; 94a4: 2802 cmp r0, #2 94a6: 9a1d ldr r2, [sp, #116] ; 0x74 94a8: bf08 it eq 94aa: 4602 moveq r2, r0 94ac: 921d str r2, [sp, #116] ; 0x74 94ae: e7a0 b.n 93f2 94b0: f8bd 10ec ldrh.w r1, [sp, #236] ; 0xec 94b4: 3101 adds r1, #1 94b6: f8bd 30e8 ldrh.w r3, [sp, #232] ; 0xe8 94ba: 1ac9 subs r1, r1, r3 _lv_memset_00(mask_buf + px_i_start, lv_area_get_width(&draw_area)); 94bc: b209 sxth r1, r1 94be: 4630 mov r0, r6 94c0: 4b46 ldr r3, [pc, #280] ; (95dc ) 94c2: 4798 blx r3 mask_res = LV_DRAW_MASK_RES_CHANGED; 94c4: 2302 movs r3, #2 94c6: 931d str r3, [sp, #116] ; 0x74 94c8: e793 b.n 93f2 } else { _lv_blend_map(clip_area, &blend_area, map2, mask_buf, mask_res, draw_dsc->opa, draw_dsc->blend_mode); 94ca: 9d08 ldr r5, [sp, #32] 94cc: 7bab ldrb r3, [r5, #14] 94ce: 9302 str r3, [sp, #8] 94d0: 782b ldrb r3, [r5, #0] 94d2: 9301 str r3, [sp, #4] 94d4: 9b1d ldr r3, [sp, #116] ; 0x74 94d6: 9300 str r3, [sp, #0] 94d8: 9b17 ldr r3, [sp, #92] ; 0x5c 94da: 9a1a ldr r2, [sp, #104] ; 0x68 94dc: a926 add r1, sp, #152 ; 0x98 94de: 9823 ldr r0, [sp, #140] ; 0x8c 94e0: 4c3f ldr r4, [pc, #252] ; (95e0 ) 94e2: 47a0 blx r4 blend_area.y1 = blend_area.y2 + 1; 94e4: f8bd 309e ldrh.w r3, [sp, #158] ; 0x9e 94e8: 3301 adds r3, #1 94ea: b21b sxth r3, r3 94ec: f8ad 309a strh.w r3, [sp, #154] ; 0x9a blend_area.y2 = blend_area.y1; 94f0: f8ad 309e strh.w r3, [sp, #158] ; 0x9e px_i = 0; mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 94f4: 9b06 ldr r3, [sp, #24] 94f6: b95b cbnz r3, 9510 94f8: 9b0a ldr r3, [sp, #40] ; 0x28 94fa: b983 cbnz r3, 951e 94fc: 886b ldrh r3, [r5, #2] 94fe: b98b cbnz r3, 9524 9500: 892b ldrh r3, [r5, #8] 9502: f5b3 7f80 cmp.w r3, #256 ; 0x100 9506: bf14 ite ne 9508: 2302 movne r3, #2 950a: 2301 moveq r3, #1 950c: 931d str r3, [sp, #116] ; 0x74 950e: e001 b.n 9514 9510: 2302 movs r3, #2 9512: 931d str r3, [sp, #116] ; 0x74 draw_dsc->zoom != LV_IMG_ZOOM_NONE) ? LV_DRAW_MASK_RES_CHANGED : LV_DRAW_MASK_RES_FULL_COVER; /*Prepare the `mask_buf`if there are other masks*/ if(other_mask_cnt) { 9514: 9b19 ldr r3, [sp, #100] ; 0x64 9516: b943 cbnz r3, 952a px_i = 0; 9518: 2300 movs r3, #0 951a: 930f str r3, [sp, #60] ; 0x3c 951c: e77e b.n 941c mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 951e: 2302 movs r3, #2 9520: 931d str r3, [sp, #116] ; 0x74 9522: e7f7 b.n 9514 9524: 2302 movs r3, #2 9526: 931d str r3, [sp, #116] ; 0x74 9528: e7f4 b.n 9514 _lv_memset_ff(mask_buf, mask_buf_size); 952a: 991c ldr r1, [sp, #112] ; 0x70 952c: 9817 ldr r0, [sp, #92] ; 0x5c 952e: 4b2d ldr r3, [pc, #180] ; (95e4 ) 9530: 4798 blx r3 px_i = 0; 9532: 2300 movs r3, #0 9534: 930f str r3, [sp, #60] ; 0x3c 9536: e771 b.n 941c } } } /*Flush the last part*/ if(blend_area.y1 != blend_area.y2) { 9538: f9bd 309e ldrsh.w r3, [sp, #158] ; 0x9e 953c: f9bd 209a ldrsh.w r2, [sp, #154] ; 0x9a 9540: 429a cmp r2, r3 9542: d00f beq.n 9564 blend_area.y2--; 9544: 3b01 subs r3, #1 9546: f8ad 309e strh.w r3, [sp, #158] ; 0x9e _lv_blend_map(clip_area, &blend_area, map2, mask_buf, mask_res, draw_dsc->opa, draw_dsc->blend_mode); 954a: 9a08 ldr r2, [sp, #32] 954c: 7b93 ldrb r3, [r2, #14] 954e: 9302 str r3, [sp, #8] 9550: 7813 ldrb r3, [r2, #0] 9552: 9301 str r3, [sp, #4] 9554: 9b1d ldr r3, [sp, #116] ; 0x74 9556: 9300 str r3, [sp, #0] 9558: 9b17 ldr r3, [sp, #92] ; 0x5c 955a: 9a1a ldr r2, [sp, #104] ; 0x68 955c: a926 add r1, sp, #152 ; 0x98 955e: 9823 ldr r0, [sp, #140] ; 0x8c 9560: 4c1f ldr r4, [pc, #124] ; (95e0 ) 9562: 47a0 blx r4 } _lv_mem_buf_release(mask_buf); 9564: 9817 ldr r0, [sp, #92] ; 0x5c 9566: 4c20 ldr r4, [pc, #128] ; (95e8 ) 9568: 47a0 blx r4 _lv_mem_buf_release(map2); 956a: 981a ldr r0, [sp, #104] ; 0x68 956c: 47a0 blx r4 } } } 956e: b03d add sp, #244 ; 0xf4 9570: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(other_mask_cnt == 0 && !transform && !chroma_key && draw_dsc->recolor_opa == LV_OPA_TRANSP && alpha_byte) { 9574: 9b19 ldr r3, [sp, #100] ; 0x64 9576: bb13 cbnz r3, 95be 9578: 2301 movs r3, #1 957a: 9305 str r3, [sp, #20] uint32_t mask_buf_size = lv_area_get_size(&draw_area) > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : lv_area_get_size(&draw_area); 957c: a83a add r0, sp, #232 ; 0xe8 957e: 4b1b ldr r3, [pc, #108] ; (95ec ) 9580: 4798 blx r3 9582: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0 9586: f67f ad6a bls.w 905e lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 958a: f44f 7070 mov.w r0, #960 ; 0x3c0 958e: 4c18 ldr r4, [pc, #96] ; (95f0 ) 9590: 47a0 blx r4 9592: 901a str r0, [sp, #104] ; 0x68 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 9594: f44f 70f0 mov.w r0, #480 ; 0x1e0 9598: 47a0 blx r4 959a: 9017 str r0, [sp, #92] ; 0x5c _lv_memset_00(&trans_dsc, sizeof(lv_img_transform_dsc_t)); 959c: 2148 movs r1, #72 ; 0x48 959e: a828 add r0, sp, #160 ; 0xa0 95a0: 4b0e ldr r3, [pc, #56] ; (95dc ) 95a2: 4798 blx r3 uint32_t mask_buf_size = lv_area_get_size(&draw_area) > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : lv_area_get_size(&draw_area); 95a4: f44f 73f0 mov.w r3, #480 ; 0x1e0 95a8: 931c str r3, [sp, #112] ; 0x70 if(alpha_byte) cf = LV_IMG_CF_TRUE_COLOR_ALPHA; 95aa: 9b06 ldr r3, [sp, #24] 95ac: 2b00 cmp r3, #0 95ae: f47f ad7b bne.w 90a8 else if(chroma_key) cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED; 95b2: 9b0a ldr r3, [sp, #40] ; 0x28 95b4: 2b00 cmp r3, #0 95b6: bf0c ite eq 95b8: 2204 moveq r2, #4 95ba: 2206 movne r2, #6 95bc: e575 b.n 90aa if(other_mask_cnt == 0 && !transform && !chroma_key && draw_dsc->recolor_opa == LV_OPA_TRANSP && alpha_byte) { 95be: 2301 movs r3, #1 95c0: 9305 str r3, [sp, #20] uint32_t mask_buf_size = lv_area_get_size(&draw_area) > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : lv_area_get_size(&draw_area); 95c2: a83a add r0, sp, #232 ; 0xe8 95c4: 4b09 ldr r3, [pc, #36] ; (95ec ) 95c6: 4798 blx r3 95c8: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0 95cc: f67f ad47 bls.w 905e 95d0: f44f 73f0 mov.w r3, #480 ; 0x1e0 95d4: 931c str r3, [sp, #112] ; 0x70 95d6: e546 b.n 9066 95d8: 0000be1d .word 0x0000be1d 95dc: 00012b37 .word 0x00012b37 95e0: 00008281 .word 0x00008281 95e4: 00012bed .word 0x00012bed 95e8: 00012571 .word 0x00012571 95ec: 000114fd .word 0x000114fd 95f0: 0001293d .word 0x0001293d 000095f4 : static void show_error(const lv_area_t * coords, const lv_area_t * clip_area, const char * msg) { 95f4: b570 push {r4, r5, r6, lr} 95f6: b09e sub sp, #120 ; 0x78 95f8: 4604 mov r4, r0 95fa: 460d mov r5, r1 95fc: 4616 mov r6, r2 lv_draw_rect_dsc_t rect_dsc; lv_draw_rect_dsc_init(&rect_dsc); 95fe: a809 add r0, sp, #36 ; 0x24 9600: 4b0b ldr r3, [pc, #44] ; (9630 ) 9602: 4798 blx r3 rect_dsc.bg_color = LV_COLOR_WHITE; 9604: 4b0b ldr r3, [pc, #44] ; (9634 ) 9606: 881b ldrh r3, [r3, #0] 9608: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 lv_draw_rect(coords, clip_area, &rect_dsc); 960c: aa09 add r2, sp, #36 ; 0x24 960e: 4629 mov r1, r5 9610: 4620 mov r0, r4 9612: 4b09 ldr r3, [pc, #36] ; (9638 ) 9614: 4798 blx r3 lv_draw_label_dsc_t label_dsc; lv_draw_label_dsc_init(&label_dsc); 9616: a802 add r0, sp, #8 9618: 4b08 ldr r3, [pc, #32] ; (963c ) 961a: 4798 blx r3 lv_draw_label(coords, clip_area, &label_dsc, msg, NULL); 961c: 2300 movs r3, #0 961e: 9300 str r3, [sp, #0] 9620: 4633 mov r3, r6 9622: aa02 add r2, sp, #8 9624: 4629 mov r1, r5 9626: 4620 mov r0, r4 9628: 4c05 ldr r4, [pc, #20] ; (9640 ) 962a: 47a0 blx r4 } 962c: b01e add sp, #120 ; 0x78 962e: bd70 pop {r4, r5, r6, pc} 9630: 0000c269 .word 0x0000c269 9634: 00024cb8 .word 0x00024cb8 9638: 0000c331 .word 0x0000c331 963c: 000099cd .word 0x000099cd 9640: 00009a25 .word 0x00009a25 00009644 : { 9644: b510 push {r4, lr} 9646: 4604 mov r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_img_dsc_t)); 9648: 2110 movs r1, #16 964a: 4b0c ldr r3, [pc, #48] ; (967c ) 964c: 4798 blx r3 dsc->recolor = LV_COLOR_BLACK; 964e: 7b23 ldrb r3, [r4, #12] 9650: f36f 0304 bfc r3, #0, #5 9654: 7323 strb r3, [r4, #12] 9656: 89a3 ldrh r3, [r4, #12] 9658: f36f 134a bfc r3, #5, #6 965c: 81a3 strh r3, [r4, #12] 965e: 0a1b lsrs r3, r3, #8 9660: f36f 03c7 bfc r3, #3, #5 9664: 7363 strb r3, [r4, #13] dsc->opa = LV_OPA_COVER; 9666: 23ff movs r3, #255 ; 0xff 9668: 7023 strb r3, [r4, #0] dsc->zoom = LV_IMG_ZOOM_NONE; 966a: f44f 7380 mov.w r3, #256 ; 0x100 966e: 8123 strh r3, [r4, #8] dsc->antialias = LV_ANTIALIAS; 9670: 7be3 ldrb r3, [r4, #15] 9672: f043 0301 orr.w r3, r3, #1 9676: 73e3 strb r3, [r4, #15] 9678: bd10 pop {r4, pc} 967a: bf00 nop 967c: 00012b37 .word 0x00012b37 00009680 : switch(cf) { 9680: 3804 subs r0, #4 9682: 280a cmp r0, #10 9684: d813 bhi.n 96ae 9686: e8df f000 tbb [pc, r0] 968a: 0806 .short 0x0806 968c: 0e0c0a06 .word 0x0e0c0a06 9690: 0e0c0a10 .word 0x0e0c0a10 9694: 10 .byte 0x10 9695: 00 .byte 0x00 px_size = LV_COLOR_SIZE; 9696: 2010 movs r0, #16 9698: 4770 bx lr px_size = LV_IMG_PX_SIZE_ALPHA_BYTE << 3; 969a: 2018 movs r0, #24 break; 969c: 4770 bx lr px_size = 1; 969e: 2001 movs r0, #1 break; 96a0: 4770 bx lr px_size = 2; 96a2: 2002 movs r0, #2 break; 96a4: 4770 bx lr px_size = 4; 96a6: 2004 movs r0, #4 break; 96a8: 4770 bx lr px_size = 8; 96aa: 2008 movs r0, #8 break; 96ac: 4770 bx lr px_size = 0; 96ae: 2000 movs r0, #0 } 96b0: 4770 bx lr 000096b2 : switch(cf) { 96b2: 2803 cmp r0, #3 96b4: d005 beq.n 96c2 96b6: d302 bcc.n 96be 96b8: 3806 subs r0, #6 96ba: 2804 cmp r0, #4 96bc: d901 bls.n 96c2 is_chroma_keyed = false; 96be: 2000 movs r0, #0 96c0: 4770 bx lr is_chroma_keyed = true; 96c2: 2001 movs r0, #1 } 96c4: 4770 bx lr 000096c6 : switch(cf) { 96c6: 3802 subs r0, #2 96c8: 280c cmp r0, #12 96ca: d808 bhi.n 96de 96cc: e8df f000 tbb [pc, r0] 96d0: 09070709 .word 0x09070709 96d4: 09090907 .word 0x09090907 96d8: 09090909 .word 0x09090909 96dc: 09 .byte 0x09 96dd: 00 .byte 0x00 has_alpha = false; 96de: 2000 movs r0, #0 96e0: 4770 bx lr has_alpha = true; 96e2: 2001 movs r0, #1 } 96e4: 4770 bx lr ... 000096e8 : { 96e8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 96ec: b08f sub sp, #60 ; 0x3c 96ee: 4605 mov r5, r0 96f0: 460e mov r6, r1 if(src == NULL) { 96f2: b13a cbz r2, 9704 96f4: 461c mov r4, r3 96f6: 4610 mov r0, r2 if(dsc->opa <= LV_OPA_MIN) return; 96f8: 781b ldrb r3, [r3, #0] 96fa: 2b05 cmp r3, #5 96fc: d810 bhi.n 9720 } 96fe: b00f add sp, #60 ; 0x3c 9700: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} LV_LOG_WARN("Image draw: src is NULL"); 9704: 4b84 ldr r3, [pc, #528] ; (9918 ) 9706: 9300 str r3, [sp, #0] 9708: 4b84 ldr r3, [pc, #528] ; (991c ) 970a: 224d movs r2, #77 ; 0x4d 970c: 4984 ldr r1, [pc, #528] ; (9920 ) 970e: 2002 movs r0, #2 9710: 4c84 ldr r4, [pc, #528] ; (9924 ) 9712: 47a0 blx r4 show_error(coords, mask, "No\ndata"); 9714: 4a84 ldr r2, [pc, #528] ; (9928 ) 9716: 4631 mov r1, r6 9718: 4628 mov r0, r5 971a: 4b84 ldr r3, [pc, #528] ; (992c ) 971c: 4798 blx r3 return; 971e: e7ee b.n 96fe lv_img_cache_entry_t * cdsc = _lv_img_cache_open(src, draw_dsc->recolor); 9720: 89a1 ldrh r1, [r4, #12] 9722: 4b83 ldr r3, [pc, #524] ; (9930 ) 9724: 4798 blx r3 if(cdsc == NULL) return LV_RES_INV; 9726: 4607 mov r7, r0 9728: 2800 cmp r0, #0 972a: f000 80b5 beq.w 9898 bool chroma_keyed = lv_img_cf_is_chroma_keyed(cdsc->dec_dsc.header.cf); 972e: f890 900c ldrb.w r9, [r0, #12] 9732: f009 091f and.w r9, r9, #31 9736: 4648 mov r0, r9 9738: 4b7e ldr r3, [pc, #504] ; (9934 ) 973a: 4798 blx r3 973c: 4680 mov r8, r0 bool alpha_byte = lv_img_cf_has_alpha(cdsc->dec_dsc.header.cf); 973e: 4648 mov r0, r9 9740: 4b7d ldr r3, [pc, #500] ; (9938 ) 9742: 4798 blx r3 9744: 4681 mov r9, r0 if(cdsc->dec_dsc.error_msg != NULL) { 9746: 69bb ldr r3, [r7, #24] 9748: b16b cbz r3, 9766 LV_LOG_WARN("Image draw error"); 974a: 4b7c ldr r3, [pc, #496] ; (993c ) 974c: 9300 str r3, [sp, #0] 974e: 4b7c ldr r3, [pc, #496] ; (9940 ) 9750: 22f7 movs r2, #247 ; 0xf7 9752: 4973 ldr r1, [pc, #460] ; (9920 ) 9754: 2002 movs r0, #2 9756: 4c73 ldr r4, [pc, #460] ; (9924 ) 9758: 47a0 blx r4 show_error(coords, clip_area, cdsc->dec_dsc.error_msg); 975a: 69ba ldr r2, [r7, #24] 975c: 4631 mov r1, r6 975e: 4628 mov r0, r5 9760: 4b72 ldr r3, [pc, #456] ; (992c ) 9762: 4798 blx r3 9764: e7cb b.n 96fe else if(cdsc->dec_dsc.img_data) { 9766: 693b ldr r3, [r7, #16] 9768: 2b00 cmp r3, #0 976a: d049 beq.n 9800 976c: 1e6b subs r3, r5, #1 976e: 1de8 adds r0, r5, #7 9770: aa0a add r2, sp, #40 ; 0x28 9772: f813 1f01 ldrb.w r1, [r3, #1]! 9776: f802 1b01 strb.w r1, [r2], #1 while(len) { 977a: 4298 cmp r0, r3 977c: d1f9 bne.n 9772 if(draw_dsc->angle || draw_dsc->zoom != LV_IMG_ZOOM_NONE) { 977e: 8863 ldrh r3, [r4, #2] 9780: b91b cbnz r3, 978a 9782: 8922 ldrh r2, [r4, #8] 9784: f5b2 7f80 cmp.w r2, #256 ; 0x100 9788: d028 beq.n 97dc return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 978a: 88ea ldrh r2, [r5, #6] 978c: 3201 adds r2, #1 978e: 8869 ldrh r1, [r5, #2] 9790: 1a52 subs r2, r2, r1 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 9792: 88a9 ldrh r1, [r5, #4] 9794: 3101 adds r1, #1 9796: 8828 ldrh r0, [r5, #0] 9798: 1a09 subs r1, r1, r0 _lv_img_buf_get_transformed_area(&map_area_rot, w, h, draw_dsc->angle, draw_dsc->zoom, &draw_dsc->pivot); 979a: 1d20 adds r0, r4, #4 979c: 9001 str r0, [sp, #4] 979e: 8920 ldrh r0, [r4, #8] 97a0: 9000 str r0, [sp, #0] 97a2: b21b sxth r3, r3 97a4: b212 sxth r2, r2 97a6: b209 sxth r1, r1 97a8: a80a add r0, sp, #40 ; 0x28 97aa: f8df a1b8 ldr.w sl, [pc, #440] ; 9964 97ae: 47d0 blx sl map_area_rot.x1 += coords->x1; 97b0: 882a ldrh r2, [r5, #0] 97b2: f8bd 3028 ldrh.w r3, [sp, #40] ; 0x28 97b6: 4413 add r3, r2 97b8: f8ad 3028 strh.w r3, [sp, #40] ; 0x28 map_area_rot.y1 += coords->y1; 97bc: 886b ldrh r3, [r5, #2] 97be: f8bd 102a ldrh.w r1, [sp, #42] ; 0x2a 97c2: 4419 add r1, r3 97c4: f8ad 102a strh.w r1, [sp, #42] ; 0x2a map_area_rot.x2 += coords->x1; 97c8: f8bd 102c ldrh.w r1, [sp, #44] ; 0x2c 97cc: 440a add r2, r1 97ce: f8ad 202c strh.w r2, [sp, #44] ; 0x2c map_area_rot.y2 += coords->y1; 97d2: f8bd 202e ldrh.w r2, [sp, #46] ; 0x2e 97d6: 4413 add r3, r2 97d8: f8ad 302e strh.w r3, [sp, #46] ; 0x2e union_ok = _lv_area_intersect(&mask_com, clip_area, &map_area_rot); 97dc: aa0a add r2, sp, #40 ; 0x28 97de: 4631 mov r1, r6 97e0: a80c add r0, sp, #48 ; 0x30 97e2: 4b58 ldr r3, [pc, #352] ; (9944 ) 97e4: 4798 blx r3 if(union_ok == false) { 97e6: 2800 cmp r0, #0 97e8: d089 beq.n 96fe lv_draw_map(coords, &mask_com, cdsc->dec_dsc.img_data, draw_dsc, chroma_keyed, alpha_byte); 97ea: 693a ldr r2, [r7, #16] 97ec: f8cd 9004 str.w r9, [sp, #4] 97f0: f8cd 8000 str.w r8, [sp] 97f4: 4623 mov r3, r4 97f6: a90c add r1, sp, #48 ; 0x30 97f8: 4628 mov r0, r5 97fa: 4c53 ldr r4, [pc, #332] ; (9948 ) 97fc: 47a0 blx r4 97fe: e77e b.n 96fe union_ok = _lv_area_intersect(&mask_com, clip_area, coords); 9800: 462a mov r2, r5 9802: 4631 mov r1, r6 9804: a808 add r0, sp, #32 9806: 4b4f ldr r3, [pc, #316] ; (9944 ) 9808: 4798 blx r3 if(union_ok == false) { 980a: 2800 cmp r0, #0 980c: f43f af77 beq.w 96fe 9810: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 9814: 3301 adds r3, #1 9816: f8bd 2020 ldrh.w r2, [sp, #32] 981a: 1a9b subs r3, r3, r2 981c: b21b sxth r3, r3 981e: 9303 str r3, [sp, #12] uint8_t * buf = _lv_mem_buf_get(lv_area_get_width(&mask_com) * 9820: eb03 0043 add.w r0, r3, r3, lsl #1 9824: 4b49 ldr r3, [pc, #292] ; (994c ) 9826: 4798 blx r3 9828: 9002 str r0, [sp, #8] 982a: f10d 021f add.w r2, sp, #31 uint8_t * d8 = (uint8_t *)dst; 982e: ab0a add r3, sp, #40 ; 0x28 while(len) { 9830: a80c add r0, sp, #48 ; 0x30 *d8 = *s8; 9832: f812 1f01 ldrb.w r1, [r2, #1]! 9836: f803 1b01 strb.w r1, [r3], #1 while(len) { 983a: 4283 cmp r3, r0 983c: d1f9 bne.n 9832 lv_area_set_height(&line, 1); 983e: 2101 movs r1, #1 9840: a80a add r0, sp, #40 ; 0x28 9842: 4b43 ldr r3, [pc, #268] ; (9950 ) 9844: 4798 blx r3 int32_t x = mask_com.x1 - coords->x1; 9846: f9bd 3020 ldrsh.w r3, [sp, #32] 984a: f9b5 2000 ldrsh.w r2, [r5] int32_t y = mask_com.y1 - coords->y1; 984e: f9bd a022 ldrsh.w sl, [sp, #34] ; 0x22 9852: f9b5 1002 ldrsh.w r1, [r5, #2] 9856: ebaa 0101 sub.w r1, sl, r1 985a: 4608 mov r0, r1 for(row = mask_com.y1; row <= mask_com.y2; row++) { 985c: f9bd 1026 ldrsh.w r1, [sp, #38] ; 0x26 9860: 458a cmp sl, r1 9862: dc55 bgt.n 9910 union_ok = _lv_area_intersect(&mask_line, clip_area, &line); 9864: f8df b0dc ldr.w fp, [pc, #220] ; 9944 read_res = lv_img_decoder_read_line(&cdsc->dec_dsc, x, y, width, buf); 9868: 1a9b subs r3, r3, r2 986a: b21b sxth r3, r3 986c: 9305 str r3, [sp, #20] 986e: 9507 str r5, [sp, #28] 9870: 9406 str r4, [sp, #24] 9872: 4644 mov r4, r8 9874: 4680 mov r8, r0 9876: e023 b.n 98c0 9878: 9d07 ldr r5, [sp, #28] lv_img_decoder_close(&cdsc->dec_dsc); 987a: 9804 ldr r0, [sp, #16] 987c: 4b35 ldr r3, [pc, #212] ; (9954 ) 987e: 4798 blx r3 LV_LOG_WARN("Image draw can't read the line"); 9880: 4b35 ldr r3, [pc, #212] ; (9958 ) 9882: 9300 str r3, [sp, #0] 9884: 4b2e ldr r3, [pc, #184] ; (9940 ) 9886: f44f 729a mov.w r2, #308 ; 0x134 988a: 4925 ldr r1, [pc, #148] ; (9920 ) 988c: 2002 movs r0, #2 988e: 4c25 ldr r4, [pc, #148] ; (9924 ) 9890: 47a0 blx r4 _lv_mem_buf_release(buf); 9892: 9802 ldr r0, [sp, #8] 9894: 4b31 ldr r3, [pc, #196] ; (995c ) 9896: 4798 blx r3 LV_LOG_WARN("Image draw error"); 9898: 4b28 ldr r3, [pc, #160] ; (993c ) 989a: 9300 str r3, [sp, #0] 989c: 4b1f ldr r3, [pc, #124] ; (991c ) 989e: 2258 movs r2, #88 ; 0x58 98a0: 491f ldr r1, [pc, #124] ; (9920 ) 98a2: 2002 movs r0, #2 98a4: 4c1f ldr r4, [pc, #124] ; (9924 ) 98a6: 47a0 blx r4 show_error(coords, mask, "No\ndata"); 98a8: 4a1f ldr r2, [pc, #124] ; (9928 ) 98aa: 4631 mov r1, r6 98ac: 4628 mov r0, r5 98ae: 4b1f ldr r3, [pc, #124] ; (992c ) 98b0: 4798 blx r3 return; 98b2: e724 b.n 96fe for(row = mask_com.y1; row <= mask_com.y2; row++) { 98b4: f10a 0a01 add.w sl, sl, #1 98b8: f9bd 3026 ldrsh.w r3, [sp, #38] ; 0x26 98bc: 459a cmp sl, r3 98be: dc27 bgt.n 9910 union_ok = _lv_area_intersect(&mask_line, clip_area, &line); 98c0: aa0a add r2, sp, #40 ; 0x28 98c2: 4631 mov r1, r6 98c4: a80c add r0, sp, #48 ; 0x30 98c6: 47d8 blx fp if(union_ok == false) continue; 98c8: 2800 cmp r0, #0 98ca: d0f3 beq.n 98b4 read_res = lv_img_decoder_read_line(&cdsc->dec_dsc, x, y, width, buf); 98cc: 9704 str r7, [sp, #16] 98ce: 9b02 ldr r3, [sp, #8] 98d0: 9300 str r3, [sp, #0] 98d2: 9b03 ldr r3, [sp, #12] 98d4: fa0f f288 sxth.w r2, r8 98d8: 9905 ldr r1, [sp, #20] 98da: 4638 mov r0, r7 98dc: 4d20 ldr r5, [pc, #128] ; (9960 ) 98de: 47a8 blx r5 if(read_res != LV_RES_OK) { 98e0: 2801 cmp r0, #1 98e2: d1c9 bne.n 9878 lv_draw_map(&line, &mask_line, buf, draw_dsc, chroma_keyed, alpha_byte); 98e4: f8cd 9004 str.w r9, [sp, #4] 98e8: 9400 str r4, [sp, #0] 98ea: 9b06 ldr r3, [sp, #24] 98ec: 9a02 ldr r2, [sp, #8] 98ee: a90c add r1, sp, #48 ; 0x30 98f0: a80a add r0, sp, #40 ; 0x28 98f2: 4d15 ldr r5, [pc, #84] ; (9948 ) 98f4: 47a8 blx r5 line.y1++; 98f6: f8bd 302a ldrh.w r3, [sp, #42] ; 0x2a 98fa: 3301 adds r3, #1 98fc: f8ad 302a strh.w r3, [sp, #42] ; 0x2a line.y2++; 9900: f8bd 302e ldrh.w r3, [sp, #46] ; 0x2e 9904: 3301 adds r3, #1 9906: f8ad 302e strh.w r3, [sp, #46] ; 0x2e y++; 990a: f108 0801 add.w r8, r8, #1 990e: e7d1 b.n 98b4 _lv_mem_buf_release(buf); 9910: 9802 ldr r0, [sp, #8] 9912: 4b12 ldr r3, [pc, #72] ; (995c ) 9914: 4798 blx r3 9916: e6f2 b.n 96fe 9918: 00024d0c .word 0x00024d0c 991c: 00024cbc .word 0x00024cbc 9920: 00024cdc .word 0x00024cdc 9924: 0001225d .word 0x0001225d 9928: 00024d24 .word 0x00024d24 992c: 000095f5 .word 0x000095f5 9930: 0000f201 .word 0x0000f201 9934: 000096b3 .word 0x000096b3 9938: 000096c7 .word 0x000096c7 993c: 00024d2c .word 0x00024d2c 9940: 00024cc8 .word 0x00024cc8 9944: 00011519 .word 0x00011519 9948: 00008dcd .word 0x00008dcd 994c: 0001293d .word 0x0001293d 9950: 000114f3 .word 0x000114f3 9954: 0000ff35 .word 0x0000ff35 9958: 00024d40 .word 0x00024d40 995c: 00012571 .word 0x00012571 9960: 0000ff11 .word 0x0000ff11 9964: 0000ec65 .word 0x0000ec65 00009968 : if(src == NULL) return img_src_type; 9968: b158 cbz r0, 9982 if(u8_p[0] >= 0x20 && u8_p[0] <= 0x7F) { 996a: 7802 ldrb r2, [r0, #0] 996c: f1a2 0320 sub.w r3, r2, #32 9970: b2db uxtb r3, r3 9972: 2b5f cmp r3, #95 ; 0x5f 9974: d907 bls.n 9986 else if(u8_p[0] >= 0x80) { 9976: b252 sxtb r2, r2 img_src_type = LV_IMG_SRC_VARIABLE; /*`lv_img_dsc_t` is design to the first byte < 0x20*/ 9978: 2a00 cmp r2, #0 997a: bfb4 ite lt 997c: 2002 movlt r0, #2 997e: 2000 movge r0, #0 9980: 4770 bx lr if(src == NULL) return img_src_type; 9982: 2003 movs r0, #3 9984: 4770 bx lr img_src_type = LV_IMG_SRC_FILE; /*If it's an ASCII character then it's file name*/ 9986: 2001 movs r0, #1 } 9988: 4770 bx lr 0000998a : */ static uint8_t hex_char_to_num(char hex) { uint8_t result = 0; if(hex >= '0' && hex <= '9') { 998a: f1a0 0330 sub.w r3, r0, #48 ; 0x30 998e: b2db uxtb r3, r3 9990: 2b09 cmp r3, #9 9992: d917 bls.n 99c4 result = hex - '0'; } else { if(hex >= 'a') hex -= 'a' - 'A'; /*Convert to upper case*/ 9994: 2860 cmp r0, #96 ; 0x60 9996: bf84 itt hi 9998: 3820 subhi r0, #32 999a: b2c0 uxtbhi r0, r0 switch(hex) { 999c: 3841 subs r0, #65 ; 0x41 999e: 2805 cmp r0, #5 99a0: d80e bhi.n 99c0 99a2: e8df f000 tbb [pc, r0] 99a6: 0311 .short 0x0311 99a8: 0b090705 .word 0x0b090705 case 'A': result = 10; break; case 'B': result = 11; 99ac: 200b movs r0, #11 99ae: 4770 bx lr break; case 'C': result = 12; 99b0: 200c movs r0, #12 break; 99b2: 4770 bx lr case 'D': result = 13; 99b4: 200d movs r0, #13 break; 99b6: 4770 bx lr case 'E': result = 14; 99b8: 200e movs r0, #14 break; 99ba: 4770 bx lr case 'F': result = 15; 99bc: 200f movs r0, #15 break; 99be: 4770 bx lr default: result = 0; 99c0: 2000 movs r0, #0 break; 99c2: 4770 bx lr result = hex - '0'; 99c4: 4618 mov r0, r3 99c6: 4770 bx lr result = 10; 99c8: 200a movs r0, #10 } } return result; } 99ca: 4770 bx lr 000099cc : { 99cc: b510 push {r4, lr} 99ce: 4604 mov r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_label_dsc_t)); 99d0: 211c movs r1, #28 99d2: 4b12 ldr r3, [pc, #72] ; (9a1c ) 99d4: 4798 blx r3 dsc->opa = LV_OPA_COVER; 99d6: 23ff movs r3, #255 ; 0xff 99d8: 7223 strb r3, [r4, #8] dsc->color = LV_COLOR_BLACK; 99da: 7823 ldrb r3, [r4, #0] 99dc: f36f 0304 bfc r3, #0, #5 99e0: 7023 strb r3, [r4, #0] 99e2: 8823 ldrh r3, [r4, #0] 99e4: f36f 134a bfc r3, #5, #6 99e8: 8023 strh r3, [r4, #0] 99ea: 0a1b lsrs r3, r3, #8 99ec: f36f 03c7 bfc r3, #3, #5 99f0: 7063 strb r3, [r4, #1] dsc->font = LV_THEME_DEFAULT_FONT_NORMAL; 99f2: 4b0b ldr r3, [pc, #44] ; (9a20 ) 99f4: 6063 str r3, [r4, #4] dsc->sel_start = LV_DRAW_LABEL_NO_TXT_SEL; 99f6: f64f 73ff movw r3, #65535 ; 0xffff 99fa: 81e3 strh r3, [r4, #14] dsc->sel_end = LV_DRAW_LABEL_NO_TXT_SEL; 99fc: 8223 strh r3, [r4, #16] dsc->sel_color = LV_COLOR_BLUE; 99fe: 78a3 ldrb r3, [r4, #2] 9a00: f043 031f orr.w r3, r3, #31 9a04: 70a3 strb r3, [r4, #2] 9a06: 8863 ldrh r3, [r4, #2] 9a08: f36f 134a bfc r3, #5, #6 9a0c: 8063 strh r3, [r4, #2] 9a0e: 0a1b lsrs r3, r3, #8 9a10: f36f 03c7 bfc r3, #3, #5 9a14: 70e3 strb r3, [r4, #3] dsc->bidi_dir = LV_BIDI_DIR_LTR; 9a16: 2300 movs r3, #0 9a18: 75a3 strb r3, [r4, #22] 9a1a: bd10 pop {r4, pc} 9a1c: 00012b37 .word 0x00012b37 9a20: 20000010 .word 0x20000010 00009a24 : { 9a24: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 9a28: b0d9 sub sp, #356 ; 0x164 9a2a: 9c62 ldr r4, [sp, #392] ; 0x188 if(dsc->opa <= LV_OPA_MIN) return; 9a2c: 7a15 ldrb r5, [r2, #8] 9a2e: 2d05 cmp r5, #5 9a30: d901 bls.n 9a36 if(txt[0] == '\0') return; 9a32: 781d ldrb r5, [r3, #0] 9a34: b915 cbnz r5, 9a3c } 9a36: b059 add sp, #356 ; 0x164 9a38: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 9a3c: 930a str r3, [sp, #40] ; 0x28 9a3e: 4693 mov fp, r2 9a40: 460a mov r2, r1 9a42: 910d str r1, [sp, #52] ; 0x34 9a44: 4605 mov r5, r0 9a46: 9013 str r0, [sp, #76] ; 0x4c const lv_font_t * font = dsc->font; 9a48: f8db 3004 ldr.w r3, [fp, #4] 9a4c: 9305 str r3, [sp, #20] bool clip_ok = _lv_area_intersect(&clipped_area, coords, mask); 9a4e: 4601 mov r1, r0 9a50: a856 add r0, sp, #344 ; 0x158 9a52: 4baa ldr r3, [pc, #680] ; (9cfc ) 9a54: 4798 blx r3 if(!clip_ok) return; 9a56: 2800 cmp r0, #0 9a58: d0ed beq.n 9a36 if((dsc->flag & LV_TXT_FLAG_EXPAND) == 0) { 9a5a: f89b 2017 ldrb.w r2, [fp, #23] 9a5e: f012 0f02 tst.w r2, #2 9a62: d121 bne.n 9aa8 9a64: 88ab ldrh r3, [r5, #4] 9a66: 3301 adds r3, #1 9a68: 882a ldrh r2, [r5, #0] 9a6a: 1a9b subs r3, r3, r2 w = lv_area_get_width(coords); 9a6c: b21b sxth r3, r3 int32_t line_height_font = lv_font_get_line_height(font); 9a6e: 9a05 ldr r2, [sp, #20] 9a70: f9b2 a008 ldrsh.w sl, [r2, #8] int32_t line_height = line_height_font + dsc->line_space; 9a74: f9bb 900a ldrsh.w r9, [fp, #10] 9a78: 44d1 add r9, sl pos.x = coords->x1; 9a7a: 9913 ldr r1, [sp, #76] ; 0x4c 9a7c: f9b1 2000 ldrsh.w r2, [r1] 9a80: 921f str r2, [sp, #124] ; 0x7c pos.y = coords->y1; 9a82: f9b1 0002 ldrsh.w r0, [r1, #2] x_ofs = dsc->ofs_x; 9a86: f9bb 2012 ldrsh.w r2, [fp, #18] 9a8a: 921a str r2, [sp, #104] ; 0x68 y_ofs = dsc->ofs_y; 9a8c: f9bb 1014 ldrsh.w r1, [fp, #20] pos.y += y_ofs; 9a90: 1842 adds r2, r0, r1 9a92: b292 uxth r2, r2 9a94: b215 sxth r5, r2 if(hint && y_ofs == 0 && coords->y1 < 0) { 9a96: 2c00 cmp r4, #0 9a98: d04a beq.n 9b30 9a9a: 2900 cmp r1, #0 9a9c: d14b bne.n 9b36 9a9e: 2800 cmp r0, #0 9aa0: db14 blt.n 9acc pos.y += y_ofs; 9aa2: 950e str r5, [sp, #56] ; 0x38 uint32_t line_start = 0; 9aa4: 2600 movs r6, #0 9aa6: e029 b.n 9afc _lv_txt_get_size(&p, txt, dsc->font, dsc->letter_space, dsc->line_space, LV_COORD_MAX, 9aa8: f9bb 300c ldrsh.w r3, [fp, #12] 9aac: 9202 str r2, [sp, #8] 9aae: f647 4218 movw r2, #31768 ; 0x7c18 9ab2: 9201 str r2, [sp, #4] 9ab4: f9bb 200a ldrsh.w r2, [fp, #10] 9ab8: 9200 str r2, [sp, #0] 9aba: f8db 2004 ldr.w r2, [fp, #4] 9abe: 990a ldr r1, [sp, #40] ; 0x28 9ac0: a83a add r0, sp, #232 ; 0xe8 9ac2: 4d8f ldr r5, [pc, #572] ; (9d00 ) 9ac4: 47a8 blx r5 w = p.x; 9ac6: f9bd 30e8 ldrsh.w r3, [sp, #232] ; 0xe8 9aca: e7d0 b.n 9a6e if(LV_MATH_ABS(hint->coord_y - coords->y1) > LV_LABEL_HINT_UPDATE_TH - 2 * line_height) { 9acc: 68a1 ldr r1, [r4, #8] 9ace: 1a08 subs r0, r1, r0 9ad0: ea80 71e0 eor.w r1, r0, r0, asr #31 9ad4: eba1 71e0 sub.w r1, r1, r0, asr #31 9ad8: f5c9 7000 rsb r0, r9, #512 ; 0x200 9adc: ebb1 0f40 cmp.w r1, r0, lsl #1 9ae0: dd05 ble.n 9aee hint->line_start = -1; 9ae2: f04f 32ff mov.w r2, #4294967295 9ae6: 6022 str r2, [r4, #0] pos.y += y_ofs; 9ae8: 950e str r5, [sp, #56] ; 0x38 uint32_t line_start = 0; 9aea: 2600 movs r6, #0 9aec: e006 b.n 9afc last_line_start = hint->line_start; 9aee: 6826 ldr r6, [r4, #0] if(hint && last_line_start >= 0) { 9af0: 2e00 cmp r6, #0 9af2: db23 blt.n 9b3c pos.y += hint->y; 9af4: 6861 ldr r1, [r4, #4] 9af6: 440a add r2, r1 9af8: b212 sxth r2, r2 9afa: 920e str r2, [sp, #56] ; 0x38 uint32_t line_end = line_start + _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 9afc: b21b sxth r3, r3 9afe: 4619 mov r1, r3 9b00: 9310 str r3, [sp, #64] ; 0x40 9b02: f9bb 200c ldrsh.w r2, [fp, #12] 9b06: f89b 3017 ldrb.w r3, [fp, #23] 9b0a: 9300 str r3, [sp, #0] 9b0c: 460b mov r3, r1 9b0e: 9905 ldr r1, [sp, #20] 9b10: 980a ldr r0, [sp, #40] ; 0x28 9b12: 4430 add r0, r6 9b14: 4d7b ldr r5, [pc, #492] ; (9d04 ) 9b16: 47a8 blx r5 9b18: 1983 adds r3, r0, r6 line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 9b1a: 462f mov r7, r5 if(hint && pos.y >= -LV_LABEL_HINT_UPDATE_TH && hint->line_start < 0) { 9b1c: f8df 81f8 ldr.w r8, [pc, #504] ; 9d18 9b20: 4631 mov r1, r6 9b22: f8cd 9018 str.w r9, [sp, #24] 9b26: 46d1 mov r9, sl 9b28: 9d0e ldr r5, [sp, #56] ; 0x38 9b2a: 4626 mov r6, r4 9b2c: 461c mov r4, r3 while(pos.y + line_height_font < mask->y1) { 9b2e: e00f b.n 9b50 pos.y += y_ofs; 9b30: 950e str r5, [sp, #56] ; 0x38 uint32_t line_start = 0; 9b32: 2600 movs r6, #0 9b34: e7e2 b.n 9afc pos.y += y_ofs; 9b36: 950e str r5, [sp, #56] ; 0x38 uint32_t line_start = 0; 9b38: 2600 movs r6, #0 9b3a: e7df b.n 9afc pos.y += y_ofs; 9b3c: 950e str r5, [sp, #56] ; 0x38 uint32_t line_start = 0; 9b3e: 2600 movs r6, #0 9b40: e7dc b.n 9afc 9b42: 4621 mov r1, r4 if(txt[line_start] == '\0') return; 9b44: f89a 3000 ldrb.w r3, [sl] 9b48: 2b00 cmp r3, #0 9b4a: f43f af74 beq.w 9a36 line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 9b4e: 4604 mov r4, r0 while(pos.y + line_height_font < mask->y1) { 9b50: eb05 0309 add.w r3, r5, r9 9b54: 9a0d ldr r2, [sp, #52] ; 0x34 9b56: f9b2 2002 ldrsh.w r2, [r2, #2] 9b5a: 4293 cmp r3, r2 9b5c: da20 bge.n 9ba0 line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 9b5e: 9b0a ldr r3, [sp, #40] ; 0x28 9b60: eb03 0a04 add.w sl, r3, r4 9b64: f9bb 200c ldrsh.w r2, [fp, #12] 9b68: f89b 3017 ldrb.w r3, [fp, #23] 9b6c: 9300 str r3, [sp, #0] 9b6e: 9b10 ldr r3, [sp, #64] ; 0x40 9b70: 9905 ldr r1, [sp, #20] 9b72: 4650 mov r0, sl 9b74: 47b8 blx r7 9b76: 4420 add r0, r4 9b78: 9b06 ldr r3, [sp, #24] 9b7a: 441d add r5, r3 9b7c: b22d sxth r5, r5 if(hint && pos.y >= -LV_LABEL_HINT_UPDATE_TH && hint->line_start < 0) { 9b7e: 2e00 cmp r6, #0 9b80: d0df beq.n 9b42 9b82: 4545 cmp r5, r8 9b84: dbdd blt.n 9b42 9b86: 6833 ldr r3, [r6, #0] 9b88: 2b00 cmp r3, #0 9b8a: dada bge.n 9b42 hint->line_start = line_start; 9b8c: 6034 str r4, [r6, #0] hint->y = pos.y - coords->y1; 9b8e: 9a13 ldr r2, [sp, #76] ; 0x4c 9b90: f9b2 3002 ldrsh.w r3, [r2, #2] 9b94: 1aeb subs r3, r5, r3 9b96: 6073 str r3, [r6, #4] hint->coord_y = coords->y1; 9b98: f9b2 3002 ldrsh.w r3, [r2, #2] 9b9c: 60b3 str r3, [r6, #8] 9b9e: e7d0 b.n 9b42 9ba0: 460e mov r6, r1 9ba2: 9407 str r4, [sp, #28] 9ba4: f8dd 9018 ldr.w r9, [sp, #24] 9ba8: 950e str r5, [sp, #56] ; 0x38 if(dsc->flag & LV_TXT_FLAG_CENTER) { 9baa: f89b 2017 ldrb.w r2, [fp, #23] 9bae: f012 0f04 tst.w r2, #4 9bb2: d12f bne.n 9c14 else if(dsc->flag & LV_TXT_FLAG_RIGHT) { 9bb4: f012 0f08 tst.w r2, #8 9bb8: d145 bne.n 9c46 lv_opa_t opa = dsc->opa; 9bba: f89b 3008 ldrb.w r3, [fp, #8] 9bbe: 930b str r3, [sp, #44] ; 0x2c uint16_t sel_start = dsc->sel_start; 9bc0: f8bb 700e ldrh.w r7, [fp, #14] uint16_t sel_end = dsc->sel_end; 9bc4: f8bb 3010 ldrh.w r3, [fp, #16] 9bc8: 4619 mov r1, r3 9bca: 9308 str r3, [sp, #32] if(sel_start > sel_end) { 9bcc: 429f cmp r7, r3 9bce: d902 bls.n 9bd6 9bd0: 463b mov r3, r7 sel_start = sel_end; 9bd2: 460f mov r7, r1 sel_end = tmp; 9bd4: 9308 str r3, [sp, #32] if((dsc->decor & LV_TEXT_DECOR_UNDERLINE) || (dsc->decor & LV_TEXT_DECOR_STRIKETHROUGH)) { 9bd6: f89b 3018 ldrb.w r3, [fp, #24] 9bda: f013 0f03 tst.w r3, #3 9bde: d149 bne.n 9c74 lv_draw_rect_dsc_init(&draw_dsc_sel); 9be0: a83d add r0, sp, #244 ; 0xf4 9be2: 4b49 ldr r3, [pc, #292] ; (9d08 ) 9be4: 4798 blx r3 draw_dsc_sel.bg_color = dsc->sel_color; 9be6: f8bb 3002 ldrh.w r3, [fp, #2] 9bea: f8ad 30f6 strh.w r3, [sp, #246] ; 0xf6 9bee: 9b0b ldr r3, [sp, #44] ; 0x2c 9bf0: 2bfa cmp r3, #250 ; 0xfa 9bf2: bf88 it hi 9bf4: 23ff movhi r3, #255 ; 0xff 9bf6: 9316 str r3, [sp, #88] ; 0x58 9bf8: fa1f f389 uxth.w r3, r9 9bfc: 9317 str r3, [sp, #92] ; 0x5c 9bfe: f8bd 3038 ldrh.w r3, [sp, #56] ; 0x38 9c02: 9311 str r3, [sp, #68] ; 0x44 while(txt[line_start] != '\0') { 9c04: 9d1f ldr r5, [sp, #124] ; 0x7c uint16_t par_start = 0; 9c06: 2300 movs r3, #0 9c08: 9319 str r3, [sp, #100] ; 0x64 9c0a: 46ba mov sl, r7 9c0c: 46d8 mov r8, fp 9c0e: 46b3 mov fp, r6 while(txt[line_start] != '\0') { 9c10: f000 bdd3 b.w a7ba line_width = _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 9c14: f9bb 300c ldrsh.w r3, [fp, #12] 9c18: 1ba1 subs r1, r4, r6 9c1a: 9200 str r2, [sp, #0] 9c1c: 9a05 ldr r2, [sp, #20] 9c1e: b289 uxth r1, r1 9c20: 980a ldr r0, [sp, #40] ; 0x28 9c22: 4430 add r0, r6 9c24: 4c39 ldr r4, [pc, #228] ; (9d0c ) 9c26: 47a0 blx r4 9c28: 9a13 ldr r2, [sp, #76] ; 0x4c 9c2a: 8893 ldrh r3, [r2, #4] 9c2c: 3301 adds r3, #1 9c2e: 8812 ldrh r2, [r2, #0] 9c30: 1a9b subs r3, r3, r2 pos.x += (lv_area_get_width(coords) - line_width) / 2; 9c32: b21b sxth r3, r3 9c34: 1a18 subs r0, r3, r0 9c36: eb00 70d0 add.w r0, r0, r0, lsr #31 9c3a: 9b1f ldr r3, [sp, #124] ; 0x7c 9c3c: eb03 0360 add.w r3, r3, r0, asr #1 9c40: b21b sxth r3, r3 9c42: 931f str r3, [sp, #124] ; 0x7c 9c44: e7b9 b.n 9bba line_width = _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 9c46: f9bb 300c ldrsh.w r3, [fp, #12] 9c4a: 9907 ldr r1, [sp, #28] 9c4c: 1b89 subs r1, r1, r6 9c4e: 9200 str r2, [sp, #0] 9c50: 9a05 ldr r2, [sp, #20] 9c52: b289 uxth r1, r1 9c54: 980a ldr r0, [sp, #40] ; 0x28 9c56: 4430 add r0, r6 9c58: 4c2c ldr r4, [pc, #176] ; (9d0c ) 9c5a: 47a0 blx r4 9c5c: 9a13 ldr r2, [sp, #76] ; 0x4c 9c5e: 8893 ldrh r3, [r2, #4] 9c60: 3301 adds r3, #1 9c62: 8812 ldrh r2, [r2, #0] 9c64: 1a9b subs r3, r3, r2 pos.x += lv_area_get_width(coords) - line_width; 9c66: b21b sxth r3, r3 9c68: 1a1b subs r3, r3, r0 9c6a: 9a1f ldr r2, [sp, #124] ; 0x7c 9c6c: 4413 add r3, r2 9c6e: b21b sxth r3, r3 9c70: 931f str r3, [sp, #124] ; 0x7c 9c72: e7a2 b.n 9bba lv_draw_line_dsc_init(&line_dsc); 9c74: a853 add r0, sp, #332 ; 0x14c 9c76: 4b26 ldr r3, [pc, #152] ; (9d10 ) 9c78: 4798 blx r3 line_dsc.color = dsc->color; 9c7a: f8bb 3000 ldrh.w r3, [fp] 9c7e: f8ad 314c strh.w r3, [sp, #332] ; 0x14c line_dsc.width = (dsc->font->line_height + 5) / 10; /*+5 for rounding*/ 9c82: f8db 3004 ldr.w r3, [fp, #4] 9c86: f9b3 3008 ldrsh.w r3, [r3, #8] 9c8a: 3305 adds r3, #5 9c8c: 4a21 ldr r2, [pc, #132] ; (9d14 ) 9c8e: fb82 1203 smull r1, r2, r2, r3 9c92: 17db asrs r3, r3, #31 9c94: ebc3 03a2 rsb r3, r3, r2, asr #2 9c98: f8ad 314e strh.w r3, [sp, #334] ; 0x14e line_dsc.opa = dsc->opa; 9c9c: f89b 3008 ldrb.w r3, [fp, #8] 9ca0: f88d 3154 strb.w r3, [sp, #340] ; 0x154 line_dsc.blend_mode = dsc->blend_mode; 9ca4: f89d 3155 ldrb.w r3, [sp, #341] ; 0x155 9ca8: f89b 2019 ldrb.w r2, [fp, #25] 9cac: f362 0301 bfi r3, r2, #0, #2 9cb0: f88d 3155 strb.w r3, [sp, #341] ; 0x155 9cb4: e794 b.n 9be0 uint16_t logical_char_pos = 0; 9cb6: 2500 movs r5, #0 9cb8: e0aa b.n 9e10 9cba: 2500 movs r5, #0 9cbc: e0a8 b.n 9e10 if(cmd_state == CMD_STATE_WAIT) { /*Start char*/ 9cbe: 9b06 ldr r3, [sp, #24] 9cc0: b92b cbnz r3, 9cce par_start = i; 9cc2: f8bd 3148 ldrh.w r3, [sp, #328] ; 0x148 9cc6: 9319 str r3, [sp, #100] ; 0x64 cmd_state = CMD_STATE_PAR; 9cc8: 2301 movs r3, #1 9cca: 9306 str r3, [sp, #24] continue; 9ccc: e08a b.n 9de4 else if(cmd_state == CMD_STATE_PAR) { /*Other start char in parameter escaped cmd. char */ 9cce: 9b06 ldr r3, [sp, #24] 9cd0: 2b01 cmp r3, #1 9cd2: f000 85f1 beq.w a8b8 else if(cmd_state == CMD_STATE_IN) { /*Command end */ 9cd6: 2b02 cmp r3, #2 9cd8: f000 8533 beq.w a742 lv_color_t color = dsc->color; 9cdc: f8b8 6000 ldrh.w r6, [r8] 9ce0: e0b5 b.n 9e4e if(letter == ' ') { 9ce2: 2c20 cmp r4, #32 9ce4: d17e bne.n 9de4 if(i - par_start == LABEL_RECOLOR_PAR_LENGTH + 1) { 9ce6: 9b52 ldr r3, [sp, #328] ; 0x148 9ce8: 9a19 ldr r2, [sp, #100] ; 0x64 9cea: 1a9b subs r3, r3, r2 9cec: 2b07 cmp r3, #7 9cee: d015 beq.n 9d1c recolor.full = dsc->color.full; 9cf0: f8b8 3000 ldrh.w r3, [r8] 9cf4: 930c str r3, [sp, #48] ; 0x30 cmd_state = CMD_STATE_IN; /*After the parameter the text is in the command*/ 9cf6: 2302 movs r3, #2 9cf8: 9306 str r3, [sp, #24] 9cfa: e073 b.n 9de4 9cfc: 00011519 .word 0x00011519 9d00: 0001407d .word 0x0001407d 9d04: 00013db1 .word 0x00013db1 9d08: 0000c269 .word 0x0000c269 9d0c: 00013fdd .word 0x00013fdd 9d10: 0000a8e1 .word 0x0000a8e1 9d14: 66666667 .word 0x66666667 9d18: fffffc00 .word 0xfffffc00 _lv_memcpy_small(buf, &bidi_txt[par_start], LABEL_RECOLOR_PAR_LENGTH); 9d1c: 9b09 ldr r3, [sp, #36] ; 0x24 9d1e: 1898 adds r0, r3, r2 9d20: 1e43 subs r3, r0, #1 9d22: 3005 adds r0, #5 uint8_t * d8 = (uint8_t *)dst; 9d24: aa3a add r2, sp, #232 ; 0xe8 *d8 = *s8; 9d26: f813 1f01 ldrb.w r1, [r3, #1]! 9d2a: f802 1b01 strb.w r1, [r2], #1 while(len) { 9d2e: 4283 cmp r3, r0 9d30: d1f9 bne.n 9d26 r = (hex_char_to_num(buf[0]) << 4) + hex_char_to_num(buf[1]); 9d32: f89d 00e8 ldrb.w r0, [sp, #232] ; 0xe8 9d36: 4c8c ldr r4, [pc, #560] ; (9f68 ) 9d38: 47a0 blx r4 9d3a: 4605 mov r5, r0 9d3c: f89d 00e9 ldrb.w r0, [sp, #233] ; 0xe9 9d40: 47a0 blx r4 9d42: eb00 1505 add.w r5, r0, r5, lsl #4 g = (hex_char_to_num(buf[2]) << 4) + hex_char_to_num(buf[3]); 9d46: f89d 00ea ldrb.w r0, [sp, #234] ; 0xea 9d4a: 47a0 blx r4 9d4c: 4606 mov r6, r0 9d4e: f89d 00eb ldrb.w r0, [sp, #235] ; 0xeb 9d52: 47a0 blx r4 9d54: eb00 1606 add.w r6, r0, r6, lsl #4 b = (hex_char_to_num(buf[4]) << 4) + hex_char_to_num(buf[5]); 9d58: f89d 00ec ldrb.w r0, [sp, #236] ; 0xec 9d5c: 47a0 blx r4 9d5e: 4607 mov r7, r0 9d60: f89d 00ed ldrb.w r0, [sp, #237] ; 0xed 9d64: 47a0 blx r4 9d66: eb00 1307 add.w r3, r0, r7, lsl #4 #define LV_COLOR_MAKE(r8, g8, b8) ((lv_color_t){{b8, g8, r8, 0xff}}) /*Fix 0xff alpha*/ #endif static inline lv_color_t lv_color_make(uint8_t r, uint8_t g, uint8_t b) { return LV_COLOR_MAKE(r, g, b); 9d6a: f3c3 03c4 ubfx r3, r3, #3, #5 9d6e: 9a2e ldr r2, [sp, #184] ; 0xb8 9d70: f363 0204 bfi r2, r3, #0, #5 9d74: 4613 mov r3, r2 9d76: f3c6 0685 ubfx r6, r6, #2, #6 9d7a: f366 134a bfi r3, r6, #5, #6 9d7e: f3c5 05c4 ubfx r5, r5, #3, #5 9d82: f365 23cf bfi r3, r5, #11, #5 9d86: f8ad 30b8 strh.w r3, [sp, #184] ; 0xb8 9d8a: b29b uxth r3, r3 9d8c: 930c str r3, [sp, #48] ; 0x30 cmd_state = CMD_STATE_IN; /*After the parameter the text is in the command*/ 9d8e: 2302 movs r3, #2 9d90: 9306 str r3, [sp, #24] 9d92: e027 b.n 9de4 sel_coords.x1 = pos.x; 9d94: f8ad a0e8 strh.w sl, [sp, #232] ; 0xe8 sel_coords.y1 = pos.y; 9d98: 9a0e ldr r2, [sp, #56] ; 0x38 9d9a: f8ad 20ea strh.w r2, [sp, #234] ; 0xea sel_coords.x2 = pos.x + letter_w + dsc->letter_space - 1; 9d9e: f8b8 300c ldrh.w r3, [r8, #12] 9da2: 3b01 subs r3, #1 9da4: 4453 add r3, sl 9da6: 4403 add r3, r0 9da8: f8ad 30ec strh.w r3, [sp, #236] ; 0xec sel_coords.y2 = pos.y + line_height - 1; 9dac: 9b17 ldr r3, [sp, #92] ; 0x5c 9dae: 3b01 subs r3, #1 9db0: 4413 add r3, r2 9db2: f8ad 30ee strh.w r3, [sp, #238] ; 0xee lv_draw_rect(&sel_coords, mask, &draw_dsc_sel); 9db6: aa3d add r2, sp, #244 ; 0xf4 9db8: 990d ldr r1, [sp, #52] ; 0x34 9dba: a83a add r0, sp, #232 ; 0xe8 9dbc: 4b6b ldr r3, [pc, #428] ; (9f6c ) 9dbe: 4798 blx r3 9dc0: e056 b.n 9e70 LV_LOG_WARN("lv_draw_letter: font is NULL"); 9dc2: 4b6b ldr r3, [pc, #428] ; (9f70 ) 9dc4: 9300 str r3, [sp, #0] 9dc6: 4b6b ldr r3, [pc, #428] ; (9f74 ) 9dc8: f240 1297 movw r2, #407 ; 0x197 9dcc: 496a ldr r1, [pc, #424] ; (9f78 ) 9dce: 2002 movs r0, #2 9dd0: 4c6a ldr r4, [pc, #424] ; (9f7c ) 9dd2: 47a0 blx r4 if(letter_w > 0) { 9dd4: 2f00 cmp r7, #0 9dd6: dd05 ble.n 9de4 pos.x += letter_w + dsc->letter_space; 9dd8: f8b8 300c ldrh.w r3, [r8, #12] 9ddc: 4453 add r3, sl 9dde: 443b add r3, r7 9de0: fa0f fa83 sxth.w sl, r3 while(i < line_end - line_start) { 9de4: 9952 ldr r1, [sp, #328] ; 0x148 9de6: 9b07 ldr r3, [sp, #28] 9de8: eba3 030b sub.w r3, r3, fp 9dec: 428b cmp r3, r1 9dee: f240 84ac bls.w a74a if(sel_start != 0xFFFF && sel_end != 0xFFFF) { 9df2: f64f 73ff movw r3, #65535 ; 0xffff 9df6: 4599 cmp r9, r3 9df8: f43f af5d beq.w 9cb6 9dfc: 9a08 ldr r2, [sp, #32] 9dfe: 429a cmp r2, r3 9e00: f43f af5b beq.w 9cba logical_char_pos = _lv_txt_encoded_get_char_id(txt, line_start + i); 9e04: 4459 add r1, fp 9e06: 980a ldr r0, [sp, #40] ; 0x28 9e08: 4b5d ldr r3, [pc, #372] ; (9f80 ) 9e0a: 681b ldr r3, [r3, #0] 9e0c: 4798 blx r3 9e0e: b285 uxth r5, r0 uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i); 9e10: 4e5c ldr r6, [pc, #368] ; (9f84 ) 9e12: 6833 ldr r3, [r6, #0] 9e14: a952 add r1, sp, #328 ; 0x148 9e16: 9f09 ldr r7, [sp, #36] ; 0x24 9e18: 4638 mov r0, r7 9e1a: 4798 blx r3 9e1c: 4604 mov r4, r0 uint32_t letter_next = _lv_txt_encoded_next(&bidi_txt[i], NULL); 9e1e: 6833 ldr r3, [r6, #0] 9e20: 2100 movs r1, #0 9e22: 9852 ldr r0, [sp, #328] ; 0x148 9e24: 4438 add r0, r7 9e26: 4798 blx r3 if((dsc->flag & LV_TXT_FLAG_RECOLOR) != 0) { 9e28: f898 3017 ldrb.w r3, [r8, #23] 9e2c: f013 0f01 tst.w r3, #1 9e30: d006 beq.n 9e40 if(letter == (uint32_t)LV_TXT_COLOR_CMD[0]) { 9e32: 2c23 cmp r4, #35 ; 0x23 9e34: f43f af43 beq.w 9cbe if(cmd_state == CMD_STATE_PAR) { 9e38: 9b06 ldr r3, [sp, #24] 9e3a: 2b01 cmp r3, #1 9e3c: f43f af51 beq.w 9ce2 lv_color_t color = dsc->color; 9e40: f8b8 6000 ldrh.w r6, [r8] if(cmd_state == CMD_STATE_IN) color = recolor; 9e44: 9b0c ldr r3, [sp, #48] ; 0x30 9e46: 9a06 ldr r2, [sp, #24] 9e48: 2a02 cmp r2, #2 9e4a: bf08 it eq 9e4c: 461e moveq r6, r3 letter_w = lv_font_get_glyph_width(font, letter, letter_next); 9e4e: 4602 mov r2, r0 9e50: 4621 mov r1, r4 9e52: 9805 ldr r0, [sp, #20] 9e54: 4b4c ldr r3, [pc, #304] ; (9f88 ) 9e56: 4798 blx r3 9e58: 4607 mov r7, r0 if(sel_start != 0xFFFF && sel_end != 0xFFFF) { 9e5a: f64f 73ff movw r3, #65535 ; 0xffff 9e5e: 4599 cmp r9, r3 9e60: d006 beq.n 9e70 9e62: 9908 ldr r1, [sp, #32] 9e64: 4299 cmp r1, r3 9e66: d003 beq.n 9e70 if(logical_char_pos >= sel_start && logical_char_pos < sel_end) { 9e68: 45a9 cmp r9, r5 9e6a: d801 bhi.n 9e70 9e6c: 42a9 cmp r1, r5 9e6e: d891 bhi.n 9d94 if(opa < LV_OPA_MIN) return; 9e70: 9b0b ldr r3, [sp, #44] ; 0x2c 9e72: 2b04 cmp r3, #4 9e74: d9ae bls.n 9dd4 if(font_p == NULL) { 9e76: 9b05 ldr r3, [sp, #20] 9e78: 2b00 cmp r3, #0 9e7a: d0a2 beq.n 9dc2 lv_draw_letter(&pos, mask, font, letter, color, opa, dsc->blend_mode); 9e7c: f898 3019 ldrb.w r3, [r8, #25] 9e80: 930f str r3, [sp, #60] ; 0x3c bool g_ret = lv_font_get_glyph_dsc(font_p, &g, letter, '\0'); 9e82: 2300 movs r3, #0 9e84: 4622 mov r2, r4 9e86: a93a add r1, sp, #232 ; 0xe8 9e88: 9805 ldr r0, [sp, #20] 9e8a: 4d40 ldr r5, [pc, #256] ; (9f8c ) 9e8c: 47a8 blx r5 if(g_ret == false) { 9e8e: b958 cbnz r0, 9ea8 if(letter >= 0x20) { 9e90: 2c1f cmp r4, #31 9e92: d99f bls.n 9dd4 LV_LOG_WARN("lv_draw_letter: glyph dsc. not found"); 9e94: 4b3e ldr r3, [pc, #248] ; (9f90 ) 9e96: 9300 str r3, [sp, #0] 9e98: 4b36 ldr r3, [pc, #216] ; (9f74 ) 9e9a: f240 12a1 movw r2, #417 ; 0x1a1 9e9e: 4936 ldr r1, [pc, #216] ; (9f78 ) 9ea0: 2002 movs r0, #2 9ea2: 4c36 ldr r4, [pc, #216] ; (9f7c ) 9ea4: 47a0 blx r4 9ea6: e795 b.n 9dd4 if((g.box_h == 0) && (g.box_w == 0)) return; 9ea8: f8bd 20ec ldrh.w r2, [sp, #236] ; 0xec 9eac: b91a cbnz r2, 9eb6 9eae: f8bd 30ea ldrh.w r3, [sp, #234] ; 0xea 9eb2: 2b00 cmp r3, #0 9eb4: d08e beq.n 9dd4 int32_t pos_x = pos_p->x + g.ofs_x; 9eb6: f9bd 50ee ldrsh.w r5, [sp, #238] ; 0xee 9eba: 4455 add r5, sl if(pos_x + g.box_w < clip_area->x1 || 9ebc: f8bd 30ea ldrh.w r3, [sp, #234] ; 0xea 9ec0: 442b add r3, r5 9ec2: 980d ldr r0, [sp, #52] ; 0x34 9ec4: f9b0 1000 ldrsh.w r1, [r0] 9ec8: 428b cmp r3, r1 9eca: db83 blt.n 9dd4 pos_x > clip_area->x2 || 9ecc: f9b0 3004 ldrsh.w r3, [r0, #4] if(pos_x + g.box_w < clip_area->x1 || 9ed0: 429d cmp r5, r3 9ed2: f73f af7f bgt.w 9dd4 int32_t pos_y = pos_p->y + (font_p->line_height - font_p->base_line) - g.box_h - g.ofs_y; 9ed6: 9b05 ldr r3, [sp, #20] 9ed8: f9b3 1008 ldrsh.w r1, [r3, #8] 9edc: f9b3 300a ldrsh.w r3, [r3, #10] 9ee0: 1acb subs r3, r1, r3 9ee2: 990e ldr r1, [sp, #56] ; 0x38 9ee4: 440b add r3, r1 9ee6: 1a99 subs r1, r3, r2 9ee8: f9bd 30f0 ldrsh.w r3, [sp, #240] ; 0xf0 9eec: 1acb subs r3, r1, r3 pos_y + g.box_h < clip_area->y1 || 9eee: 9315 str r3, [sp, #84] ; 0x54 9ef0: 441a add r2, r3 9ef2: f9b0 3002 ldrsh.w r3, [r0, #2] pos_x > clip_area->x2 || 9ef6: 429a cmp r2, r3 9ef8: f6ff af6c blt.w 9dd4 pos_y > clip_area->y2) { 9efc: f9b0 3006 ldrsh.w r3, [r0, #6] pos_y + g.box_h < clip_area->y1 || 9f00: 9915 ldr r1, [sp, #84] ; 0x54 9f02: 4299 cmp r1, r3 9f04: f73f af66 bgt.w 9dd4 const uint8_t * map_p = lv_font_get_glyph_bitmap(font_p, letter); 9f08: 4621 mov r1, r4 9f0a: 9805 ldr r0, [sp, #20] 9f0c: 4b21 ldr r3, [pc, #132] ; (9f94 ) 9f0e: 4798 blx r3 if(map_p == NULL) { 9f10: 4686 mov lr, r0 9f12: b1f0 cbz r0, 9f52 if(font_p->subpx) { 9f14: 9b05 ldr r3, [sp, #20] 9f16: 7b1b ldrb r3, [r3, #12] 9f18: f013 0f03 tst.w r3, #3 9f1c: f000 825e beq.w a3dc draw_letter_subpx(pos_x, pos_y, &g, clip_area, map_p, color, opa, blend_mode); 9f20: b22b sxth r3, r5 9f22: 9318 str r3, [sp, #96] ; 0x60 9f24: f9bd 3054 ldrsh.w r3, [sp, #84] ; 0x54 9f28: 931d str r3, [sp, #116] ; 0x74 uint32_t bpp = g->bpp; 9f2a: f89d 30f2 ldrb.w r3, [sp, #242] ; 0xf2 9f2e: 9312 str r3, [sp, #72] ; 0x48 if(bpp == 3) bpp = 4; 9f30: 2b03 cmp r3, #3 9f32: f000 80ff beq.w a134 switch(bpp) { 9f36: 3b01 subs r3, #1 9f38: 2b07 cmp r3, #7 9f3a: f200 8102 bhi.w a142 9f3e: e8df f013 tbh [pc, r3, lsl #1] 9f42: 010a .short 0x010a 9f44: 0100002d .word 0x0100002d 9f48: 010000fb .word 0x010000fb 9f4c: 01000100 .word 0x01000100 9f50: 0111 .short 0x0111 LV_LOG_WARN("lv_draw_letter: character's bitmap not found"); 9f52: 4b11 ldr r3, [pc, #68] ; (9f98 ) 9f54: 9300 str r3, [sp, #0] 9f56: 4b07 ldr r3, [pc, #28] ; (9f74 ) 9f58: f240 12b7 movw r2, #439 ; 0x1b7 9f5c: 4906 ldr r1, [pc, #24] ; (9f78 ) 9f5e: 2002 movs r0, #2 9f60: 4c06 ldr r4, [pc, #24] ; (9f7c ) 9f62: 47a0 blx r4 9f64: e736 b.n 9dd4 9f66: bf00 nop 9f68: 0000998b .word 0x0000998b 9f6c: 0000c331 .word 0x0000c331 9f70: 00024ee8 .word 0x00024ee8 9f74: 00024e78 .word 0x00024e78 9f78: 00024eb8 .word 0x00024eb8 9f7c: 0001225d .word 0x0001225d 9f80: 20000064 .word 0x20000064 9f84: 20000058 .word 0x20000058 9f88: 00010061 .word 0x00010061 9f8c: 00010059 .word 0x00010059 9f90: 00024f08 .word 0x00024f08 9f94: 00010051 .word 0x00010051 9f98: 00024f30 .word 0x00024f30 bitmask_init = 0xC0; 9f9c: 23c0 movs r3, #192 ; 0xc0 9f9e: 931b str r3, [sp, #108] ; 0x6c bpp_opa_table = _lv_bpp2_opa_table; 9fa0: 4bac ldr r3, [pc, #688] ; (a254 ) 9fa2: 9320 str r3, [sp, #128] ; 0x80 int32_t box_w = g->box_w; 9fa4: f8bd 30ea ldrh.w r3, [sp, #234] ; 0xea 9fa8: 931e str r3, [sp, #120] ; 0x78 int32_t box_h = g->box_h; 9faa: f8bd 10ec ldrh.w r1, [sp, #236] ; 0xec int32_t width_bit = box_w * bpp; /*Letter width in bits*/ 9fae: 9a12 ldr r2, [sp, #72] ; 0x48 9fb0: fb02 f203 mul.w r2, r2, r3 int32_t col_start = pos_x >= clip_area->x1 ? 0 : (clip_area->x1 - pos_x) * 3; 9fb4: 9b0d ldr r3, [sp, #52] ; 0x34 9fb6: f9b3 3000 ldrsh.w r3, [r3] 9fba: 9c18 ldr r4, [sp, #96] ; 0x60 9fbc: 429c cmp r4, r3 9fbe: bfba itte lt 9fc0: 1b1b sublt r3, r3, r4 9fc2: eb03 0343 addlt.w r3, r3, r3, lsl #1 9fc6: 2300 movge r3, #0 9fc8: 9327 str r3, [sp, #156] ; 0x9c int32_t col_end = pos_x + box_w / 3 <= clip_area->x2 ? box_w : (clip_area->x2 - pos_x + 1) * 3; 9fca: 9b0d ldr r3, [sp, #52] ; 0x34 9fcc: f9b3 3004 ldrsh.w r3, [r3, #4] 9fd0: 981e ldr r0, [sp, #120] ; 0x78 9fd2: 4604 mov r4, r0 9fd4: 48a0 ldr r0, [pc, #640] ; (a258 ) 9fd6: fb80 4004 smull r4, r0, r0, r4 9fda: 9c18 ldr r4, [sp, #96] ; 0x60 9fdc: 4420 add r0, r4 9fde: 4298 cmp r0, r3 9fe0: bfc3 ittte gt 9fe2: 1b1b subgt r3, r3, r4 9fe4: 3301 addgt r3, #1 9fe6: eb03 0343 addgt.w r3, r3, r3, lsl #1 9fea: 9b1e ldrle r3, [sp, #120] ; 0x78 9fec: 9314 str r3, [sp, #80] ; 0x50 int32_t row_start = pos_y >= clip_area->y1 ? 0 : clip_area->y1 - pos_y; 9fee: 9b0d ldr r3, [sp, #52] ; 0x34 9ff0: f9b3 3002 ldrsh.w r3, [r3, #2] 9ff4: 9c1d ldr r4, [sp, #116] ; 0x74 9ff6: 429c cmp r4, r3 9ff8: bfb4 ite lt 9ffa: 1b1b sublt r3, r3, r4 9ffc: 2300 movge r3, #0 9ffe: 9325 str r3, [sp, #148] ; 0x94 int32_t row_end = pos_y + box_h <= clip_area->y2 ? box_h : clip_area->y2 - pos_y + 1; a000: 9b0d ldr r3, [sp, #52] ; 0x34 a002: f9b3 3006 ldrsh.w r3, [r3, #6] a006: 9c1d ldr r4, [sp, #116] ; 0x74 a008: 1908 adds r0, r1, r4 a00a: 4298 cmp r0, r3 a00c: f340 80b1 ble.w a172 a010: 1b1b subs r3, r3, r4 a012: 3301 adds r3, #1 a014: 9328 str r3, [sp, #160] ; 0xa0 a016: f006 031f and.w r3, r6, #31 a01a: 9322 str r3, [sp, #136] ; 0x88 a01c: f3c6 1345 ubfx r3, r6, #5, #6 a020: 9324 str r3, [sp, #144] ; 0x90 a022: f3c6 23c4 ubfx r3, r6, #11, #5 a026: 9323 str r3, [sp, #140] ; 0x8c int32_t bit_ofs = (row_start * width_bit) + (col_start * bpp); a028: 9b12 ldr r3, [sp, #72] ; 0x48 a02a: 4618 mov r0, r3 a02c: 9b27 ldr r3, [sp, #156] ; 0x9c a02e: fb00 f303 mul.w r3, r0, r3 a032: 9825 ldr r0, [sp, #148] ; 0x94 a034: fb00 3202 mla r2, r0, r2, r3 map_p += bit_ofs >> 3; a038: eb0e 06e2 add.w r6, lr, r2, asr #3 a03c: 9631 str r6, [sp, #196] ; 0xc4 col_bit = bit_ofs & 0x7; /* "& 0x7" equals to "% 8" just faster */ a03e: f002 0607 and.w r6, r2, #7 int32_t mask_buf_size = box_w * box_h > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : g->box_w * g->box_h; a042: 981e ldr r0, [sp, #120] ; 0x78 a044: fb01 f100 mul.w r1, r1, r0 a048: f5b1 7ff0 cmp.w r1, #480 ; 0x1e0 a04c: bfa8 it ge a04e: f44f 71f0 movge.w r1, #480 ; 0x1e0 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); a052: 9129 str r1, [sp, #164] ; 0xa4 a054: 4608 mov r0, r1 a056: 4c81 ldr r4, [pc, #516] ; (a25c ) a058: 47a0 blx r4 a05a: 9021 str r0, [sp, #132] ; 0x84 lv_color_t * color_buf = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); a05c: 9929 ldr r1, [sp, #164] ; 0xa4 a05e: 0048 lsls r0, r1, #1 a060: 47a0 blx r4 a062: 9030 str r0, [sp, #192] ; 0xc0 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); a064: 4b7e ldr r3, [pc, #504] ; (a260 ) a066: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); a068: 4b7e ldr r3, [pc, #504] ; (a264 ) a06a: 4798 blx r3 a06c: f9b0 4010 ldrsh.w r4, [r0, #16] a070: 8a83 ldrh r3, [r0, #20] a072: 3301 adds r3, #1 a074: 1b1b subs r3, r3, r4 int32_t vdb_width = lv_area_get_width(&vdb->area); a076: b219 sxth r1, r3 a078: 9126 str r1, [sp, #152] ; 0x98 lv_color_t * vdb_buf_tmp = vdb->buf_act; a07a: 6881 ldr r1, [r0, #8] vdb_buf_tmp += (row_start * vdb_width) + col_start / 3; a07c: 9b27 ldr r3, [sp, #156] ; 0x9c a07e: 4a76 ldr r2, [pc, #472] ; (a258 ) a080: fb82 e203 smull lr, r2, r2, r3 a084: eba2 72e3 sub.w r2, r2, r3, asr #31 vdb_buf_tmp += ((pos_y - vdb->area.y1) * vdb_width) + pos_x - vdb->area.x1; a088: f9b0 3012 ldrsh.w r3, [r0, #18] a08c: 981d ldr r0, [sp, #116] ; 0x74 a08e: 1ac3 subs r3, r0, r3 a090: 9826 ldr r0, [sp, #152] ; 0x98 a092: 4686 mov lr, r0 a094: 9818 ldr r0, [sp, #96] ; 0x60 a096: fb0e 0303 mla r3, lr, r3, r0 a09a: 1b1b subs r3, r3, r4 vdb_buf_tmp += (row_start * vdb_width) + col_start / 3; a09c: 9c25 ldr r4, [sp, #148] ; 0x94 a09e: fb0e 2004 mla r0, lr, r4, r2 a0a2: 4403 add r3, r0 a0a4: eb01 0143 add.w r1, r1, r3, lsl #1 a0a8: 9118 str r1, [sp, #96] ; 0x60 map_area.x1 = col_start / 3 + pos_x; a0aa: b2ad uxth r5, r5 a0ac: 442a add r2, r5 a0ae: f8ad 20e0 strh.w r2, [sp, #224] ; 0xe0 map_area.x2 = col_end / 3 + pos_x - 1; a0b2: 9a14 ldr r2, [sp, #80] ; 0x50 a0b4: 4696 mov lr, r2 a0b6: 4968 ldr r1, [pc, #416] ; (a258 ) a0b8: fb81 e30e smull lr, r3, r1, lr a0bc: eba3 73e2 sub.w r3, r3, r2, asr #31 a0c0: 3d01 subs r5, #1 a0c2: 442b add r3, r5 a0c4: f8ad 30e4 strh.w r3, [sp, #228] ; 0xe4 map_area.y1 = row_start + pos_y; a0c8: 9d15 ldr r5, [sp, #84] ; 0x54 a0ca: 4425 add r5, r4 a0cc: b22b sxth r3, r5 a0ce: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2 map_area.y2 = map_area.y1; a0d2: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); a0d6: 4b64 ldr r3, [pc, #400] ; (a268 ) a0d8: 4798 blx r3 a0da: 902a str r0, [sp, #168] ; 0xa8 for(row = row_start ; row < row_end; row++) { a0dc: 9d28 ldr r5, [sp, #160] ; 0xa0 a0de: 42ac cmp r4, r5 a0e0: f280 8161 bge.w a3a6 if((int32_t) mask_p + (col_end - col_start) < mask_buf_size) { a0e4: 9914 ldr r1, [sp, #80] ; 0x50 a0e6: 9a27 ldr r2, [sp, #156] ; 0x9c a0e8: 1a8c subs r4, r1, r2 a0ea: 942b str r4, [sp, #172] ; 0xac col_bit += ((box_w - col_end) + col_start) * bpp; a0ec: 9d1e ldr r5, [sp, #120] ; 0x78 a0ee: 1a6b subs r3, r5, r1 a0f0: 4413 add r3, r2 a0f2: 9912 ldr r1, [sp, #72] ; 0x48 a0f4: fb01 f303 mul.w r3, r1, r3 a0f8: 932c str r3, [sp, #176] ; 0xb0 vdb_buf_tmp += vdb_width - (col_end - col_start) / 3; a0fa: 4a57 ldr r2, [pc, #348] ; (a258 ) a0fc: fb82 2304 smull r2, r3, r2, r4 a100: ebc3 73e4 rsb r3, r3, r4, asr #31 a104: 9826 ldr r0, [sp, #152] ; 0x98 a106: 4403 add r3, r0 a108: 005b lsls r3, r3, #1 a10a: 932d str r3, [sp, #180] ; 0xb4 a10c: 2300 movs r3, #0 a10e: 9326 str r3, [sp, #152] ; 0x98 col_bit = 0; a110: 9315 str r3, [sp, #84] ; 0x54 a112: f8cd b0c8 str.w fp, [sp, #200] ; 0xc8 a116: f8cd 90cc str.w r9, [sp, #204] ; 0xcc a11a: 9734 str r7, [sp, #208] ; 0xd0 a11c: f8dd 9060 ldr.w r9, [sp, #96] ; 0x60 a120: f8dd b0c4 ldr.w fp, [sp, #196] ; 0xc4 a124: f8cd a0c4 str.w sl, [sp, #196] ; 0xc4 a128: f8dd a0c0 ldr.w sl, [sp, #192] ; 0xc0 a12c: f8cd 80d4 str.w r8, [sp, #212] ; 0xd4 a130: 4688 mov r8, r1 a132: e0ea b.n a30a if(bpp == 3) bpp = 4; a134: 2304 movs r3, #4 a136: 9312 str r3, [sp, #72] ; 0x48 bitmask_init = 0xF0; a138: 23f0 movs r3, #240 ; 0xf0 a13a: 931b str r3, [sp, #108] ; 0x6c bpp_opa_table = _lv_bpp4_opa_table; a13c: 4b4b ldr r3, [pc, #300] ; (a26c ) a13e: 9320 str r3, [sp, #128] ; 0x80 a140: e730 b.n 9fa4 LV_LOG_WARN("lv_draw_letter: invalid bpp not found"); a142: 4b4b ldr r3, [pc, #300] ; (a270 ) a144: 9300 str r3, [sp, #0] a146: 4b4b ldr r3, [pc, #300] ; (a274 ) a148: f240 227a movw r2, #634 ; 0x27a a14c: 494a ldr r1, [pc, #296] ; (a278 ) a14e: 2002 movs r0, #2 a150: 4c4a ldr r4, [pc, #296] ; (a27c ) a152: 47a0 blx r4 a154: e63e b.n 9dd4 uint32_t bpp = g->bpp; a156: 2301 movs r3, #1 a158: 9312 str r3, [sp, #72] ; 0x48 bitmask_init = 0x80; a15a: 2380 movs r3, #128 ; 0x80 a15c: 931b str r3, [sp, #108] ; 0x6c bpp_opa_table = _lv_bpp1_opa_table; a15e: 4b48 ldr r3, [pc, #288] ; (a280 ) a160: 9320 str r3, [sp, #128] ; 0x80 a162: e71f b.n 9fa4 uint32_t bpp = g->bpp; a164: 2308 movs r3, #8 a166: 9312 str r3, [sp, #72] ; 0x48 bitmask_init = 0xFF; a168: 23ff movs r3, #255 ; 0xff a16a: 931b str r3, [sp, #108] ; 0x6c bpp_opa_table = _lv_bpp8_opa_table; a16c: 4b45 ldr r3, [pc, #276] ; (a284 ) a16e: 9320 str r3, [sp, #128] ; 0x80 a170: e718 b.n 9fa4 int32_t row_end = pos_y + box_h <= clip_area->y2 ? box_h : clip_area->y2 - pos_y + 1; a172: 9128 str r1, [sp, #160] ; 0xa0 a174: e74f b.n a016 px_opa = bpp == 8 ? letter_px : bpp_opa_table[letter_px]; a176: f1b8 0f08 cmp.w r8, #8 a17a: d004 beq.n a186 a17c: b2db uxtb r3, r3 a17e: 9a20 ldr r2, [sp, #128] ; 0x80 a180: 5cd2 ldrb r2, [r2, r3] a182: e000 b.n a186 px_opa = 0; a184: 9a15 ldr r2, [sp, #84] ; 0x54 font_rgb[subpx_cnt] = px_opa; a186: ab58 add r3, sp, #352 ; 0x160 a188: 440b add r3, r1 a18a: f803 2c84 strb.w r2, [r3, #-132] subpx_cnt ++; a18e: 3101 adds r1, #1 if(subpx_cnt == 3) { a190: 2903 cmp r1, #3 a192: d028 beq.n a1e6 if(col_bit < (int32_t) (8 - bpp)) { a194: 45b4 cmp ip, r6 a196: f340 8094 ble.w a2c2 col_bit += bpp; a19a: 9b12 ldr r3, [sp, #72] ; 0x48 a19c: 4443 add r3, r8 a19e: 461e mov r6, r3 bitmask = bitmask >> bpp; a1a0: fa2e fe08 lsr.w lr, lr, r8 for(col = col_start; col < col_end; col++) { a1a4: 3501 adds r5, #1 a1a6: 9b14 ldr r3, [sp, #80] ; 0x50 a1a8: 42ab cmp r3, r5 a1aa: f000 8090 beq.w a2ce letter_px = (*map_p & bitmask) >> (8 - col_bit - bpp); a1ae: 9612 str r6, [sp, #72] ; 0x48 a1b0: f89b 3000 ldrb.w r3, [fp] a1b4: ea03 020e and.w r2, r3, lr a1b8: ebac 0306 sub.w r3, ip, r6 a1bc: fa22 f303 lsr.w r3, r2, r3 if(letter_px != 0) { a1c0: f013 02ff ands.w r2, r3, #255 ; 0xff a1c4: d0de beq.n a184 if(opa == LV_OPA_COVER) { a1c6: 9816 ldr r0, [sp, #88] ; 0x58 a1c8: 28ff cmp r0, #255 ; 0xff a1ca: d0d4 beq.n a176 px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8 a1cc: f1b8 0f08 cmp.w r8, #8 a1d0: bf0f iteee eq a1d2: b2da uxtbeq r2, r3 : (uint32_t)((uint32_t)bpp_opa_table[letter_px] * opa) >> 8; a1d4: b2db uxtbne r3, r3 a1d6: 9a20 ldrne r2, [sp, #128] ; 0x80 a1d8: 5cd2 ldrbne r2, [r2, r3] a1da: 9b16 ldr r3, [sp, #88] ; 0x58 a1dc: fb03 f202 mul.w r2, r3, r2 px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8 a1e0: f3c2 2207 ubfx r2, r2, #8, #8 a1e4: e7cf b.n a186 res_color.ch.red = (uint32_t)((uint16_t)txt_rgb[0] * font_rgb[0] + (bg_rgb[0] * (255 - font_rgb[0]))) >> 8; a1e6: f89d 10dc ldrb.w r1, [sp, #220] ; 0xdc uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue}; a1ea: f89a 3001 ldrb.w r3, [sl, #1] res_color.ch.red = (uint32_t)((uint16_t)txt_rgb[0] * font_rgb[0] + (bg_rgb[0] * (255 - font_rgb[0]))) >> 8; a1ee: 08db lsrs r3, r3, #3 a1f0: f1c1 00ff rsb r0, r1, #255 ; 0xff a1f4: 9a23 ldr r2, [sp, #140] ; 0x8c a1f6: fb01 f202 mul.w r2, r1, r2 a1fa: fb00 2303 mla r3, r0, r3, r2 a1fe: f3c3 2304 ubfx r3, r3, #8, #5 a202: 931d str r3, [sp, #116] ; 0x74 res_color.ch.blue = (uint32_t)((uint16_t)txt_rgb[2] * font_rgb[2] + (bg_rgb[2] * (255 - font_rgb[2]))) >> 8; a204: f89d 30de ldrb.w r3, [sp, #222] ; 0xde a208: 9318 str r3, [sp, #96] ; 0x60 uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue}; a20a: f89a 2000 ldrb.w r2, [sl] res_color.ch.blue = (uint32_t)((uint16_t)txt_rgb[2] * font_rgb[2] + (bg_rgb[2] * (255 - font_rgb[2]))) >> 8; a20e: f002 021f and.w r2, r2, #31 a212: f1c3 00ff rsb r0, r3, #255 ; 0xff a216: 9b22 ldr r3, [sp, #136] ; 0x88 a218: 9c18 ldr r4, [sp, #96] ; 0x60 a21a: fb04 f303 mul.w r3, r4, r3 a21e: fb00 3202 mla r2, r0, r2, r3 a222: f3c2 2304 ubfx r3, r2, #8, #5 a226: 931e str r3, [sp, #120] ; 0x78 res_color.ch.green = (uint32_t)((uint32_t)txt_rgb[1] * font_rgb[1] + (bg_rgb[1] * (255 - font_rgb[1]))) >> 8; a228: f89d 00dd ldrb.w r0, [sp, #221] ; 0xdd uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue}; a22c: f8ba 3000 ldrh.w r3, [sl] res_color.ch.green = (uint32_t)((uint32_t)txt_rgb[1] * font_rgb[1] + (bg_rgb[1] * (255 - font_rgb[1]))) >> 8; a230: f3c3 1445 ubfx r4, r3, #5, #6 a234: f1c0 03ff rsb r3, r0, #255 ; 0xff a238: 9a24 ldr r2, [sp, #144] ; 0x90 a23a: fb00 f202 mul.w r2, r0, r2 a23e: fb03 2304 mla r3, r3, r4, r2 a242: f3c3 2305 ubfx r3, r3, #8, #6 if(font_rgb[0] == 0 && font_rgb[1] == 0 && font_rgb[2] == 0) mask_buf[mask_p] = LV_OPA_TRANSP; a246: b9f9 cbnz r1, a288 a248: b9f0 cbnz r0, a288 a24a: 9a18 ldr r2, [sp, #96] ; 0x60 a24c: b9e2 cbnz r2, a288 a24e: 9a21 ldr r2, [sp, #132] ; 0x84 a250: 55d1 strb r1, [r2, r7] a252: e01d b.n a290 a254: 00024d64 .word 0x00024d64 a258: 55555556 .word 0x55555556 a25c: 0001293d .word 0x0001293d a260: 00005f69 .word 0x00005f69 a264: 00010fdd .word 0x00010fdd a268: 0000bec5 .word 0x0000bec5 a26c: 00024d68 .word 0x00024d68 a270: 00024f60 .word 0x00024f60 a274: 00024e88 .word 0x00024e88 a278: 00024eb8 .word 0x00024eb8 a27c: 0001225d .word 0x0001225d a280: 00024d60 .word 0x00024d60 a284: 00024d78 .word 0x00024d78 else mask_buf[mask_p] = LV_OPA_COVER; a288: 9a21 ldr r2, [sp, #132] ; 0x84 a28a: f04f 31ff mov.w r1, #4294967295 a28e: 55d1 strb r1, [r2, r7] color_buf[mask_p] = res_color; a290: eb09 0047 add.w r0, r9, r7, lsl #1 a294: f819 1017 ldrb.w r1, [r9, r7, lsl #1] a298: 9a1e ldr r2, [sp, #120] ; 0x78 a29a: f362 0104 bfi r1, r2, #0, #5 a29e: f809 1017 strb.w r1, [r9, r7, lsl #1] a2a2: f839 2017 ldrh.w r2, [r9, r7, lsl #1] a2a6: f363 124a bfi r2, r3, #5, #6 a2aa: f829 2017 strh.w r2, [r9, r7, lsl #1] a2ae: 0a12 lsrs r2, r2, #8 a2b0: 9b1d ldr r3, [sp, #116] ; 0x74 a2b2: f363 02c7 bfi r2, r3, #3, #5 a2b6: 7042 strb r2, [r0, #1] mask_p++; a2b8: 3701 adds r7, #1 vdb_buf_tmp++; a2ba: f10a 0a02 add.w sl, sl, #2 subpx_cnt = 0; a2be: 2100 movs r1, #0 a2c0: e768 b.n a194 map_p++; a2c2: f10b 0b01 add.w fp, fp, #1 bitmask = bitmask_init; a2c6: f8dd e06c ldr.w lr, [sp, #108] ; 0x6c col_bit = 0; a2ca: 9e15 ldr r6, [sp, #84] ; 0x54 a2cc: e76a b.n a1a4 a2ce: 4653 mov r3, sl a2d0: 46ca mov sl, r9 a2d2: 4699 mov r9, r3 if(other_mask_cnt) { a2d4: 9b2a ldr r3, [sp, #168] ; 0xa8 a2d6: bb4b cbnz r3, a32c if((int32_t) mask_p + (col_end - col_start) < mask_buf_size) { a2d8: 9b2b ldr r3, [sp, #172] ; 0xac a2da: 443b add r3, r7 a2dc: 9a29 ldr r2, [sp, #164] ; 0xa4 a2de: 429a cmp r2, r3 a2e0: dd41 ble.n a366 map_area.y2 ++; a2e2: f8bd 30e6 ldrh.w r3, [sp, #230] ; 0xe6 a2e6: 3301 adds r3, #1 a2e8: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6 a2ec: 9726 str r7, [sp, #152] ; 0x98 col_bit += ((box_w - col_end) + col_start) * bpp; a2ee: 9b2c ldr r3, [sp, #176] ; 0xb0 a2f0: 441e add r6, r3 map_p += (col_bit >> 3); a2f2: eb0b 0be6 add.w fp, fp, r6, asr #3 col_bit = col_bit & 0x7; a2f6: f006 0607 and.w r6, r6, #7 vdb_buf_tmp += vdb_width - (col_end - col_start) / 3; a2fa: 9b2d ldr r3, [sp, #180] ; 0xb4 a2fc: 4499 add r9, r3 for(row = row_start ; row < row_end; row++) { a2fe: 9b25 ldr r3, [sp, #148] ; 0x94 a300: 3301 adds r3, #1 a302: 9325 str r3, [sp, #148] ; 0x94 a304: 9a28 ldr r2, [sp, #160] ; 0xa0 a306: 4293 cmp r3, r2 a308: da44 bge.n a394 bitmask = bitmask_init >> col_bit; a30a: 9b1b ldr r3, [sp, #108] ; 0x6c a30c: fa23 fe06 lsr.w lr, r3, r6 for(col = col_start; col < col_end; col++) { a310: 9d27 ldr r5, [sp, #156] ; 0x9c a312: 9a14 ldr r2, [sp, #80] ; 0x50 a314: 4295 cmp r5, r2 a316: da07 bge.n a328 a318: 9f26 ldr r7, [sp, #152] ; 0x98 a31a: 2100 movs r1, #0 a31c: f1c8 0c08 rsb ip, r8, #8 else mask_buf[mask_p] = LV_OPA_COVER; a320: 464b mov r3, r9 a322: 46d1 mov r9, sl a324: 469a mov sl, r3 a326: e742 b.n a1ae for(col = col_start; col < col_end; col++) { a328: 9f26 ldr r7, [sp, #152] ; 0x98 a32a: e7d3 b.n a2d4 lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf + mask_p_start, map_area.x1, map_area.y2, a32c: 9b26 ldr r3, [sp, #152] ; 0x98 a32e: 9a21 ldr r2, [sp, #132] ; 0x84 a330: 4413 add r3, r2 a332: 461c mov r4, r3 a334: f9bd 10e0 ldrsh.w r1, [sp, #224] ; 0xe0 a338: f8bd 30e4 ldrh.w r3, [sp, #228] ; 0xe4 a33c: 3301 adds r3, #1 a33e: 1a5b subs r3, r3, r1 a340: b21b sxth r3, r3 a342: f9bd 20e6 ldrsh.w r2, [sp, #230] ; 0xe6 a346: 4620 mov r0, r4 a348: 4dab ldr r5, [pc, #684] ; (a5f8 ) a34a: 47a8 blx r5 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { a34c: 2800 cmp r0, #0 a34e: d1c3 bne.n a2d8 a350: f8bd 10e4 ldrh.w r1, [sp, #228] ; 0xe4 a354: 3101 adds r1, #1 a356: f8bd 30e0 ldrh.w r3, [sp, #224] ; 0xe0 a35a: 1ac9 subs r1, r1, r3 _lv_memset_00(mask_buf + mask_p_start, lv_area_get_width(&map_area)); a35c: b209 sxth r1, r1 a35e: 4620 mov r0, r4 a360: 4ba6 ldr r3, [pc, #664] ; (a5fc ) a362: 4798 blx r3 a364: e7b8 b.n a2d8 _lv_blend_map(clip_area, &map_area, color_buf, mask_buf, LV_DRAW_MASK_RES_CHANGED, opa, blend_mode); a366: 9b0f ldr r3, [sp, #60] ; 0x3c a368: 9302 str r3, [sp, #8] a36a: 9b16 ldr r3, [sp, #88] ; 0x58 a36c: 9301 str r3, [sp, #4] a36e: 2302 movs r3, #2 a370: 9300 str r3, [sp, #0] a372: 9b21 ldr r3, [sp, #132] ; 0x84 a374: 4652 mov r2, sl a376: a938 add r1, sp, #224 ; 0xe0 a378: 980d ldr r0, [sp, #52] ; 0x34 a37a: 4ca1 ldr r4, [pc, #644] ; (a600 ) a37c: 47a0 blx r4 map_area.y1 = map_area.y2 + 1; a37e: f8bd 30e6 ldrh.w r3, [sp, #230] ; 0xe6 a382: 3301 adds r3, #1 a384: b21b sxth r3, r3 a386: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2 map_area.y2 = map_area.y1; a38a: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6 mask_p = 0; a38e: 2300 movs r3, #0 a390: 9326 str r3, [sp, #152] ; 0x98 a392: e7ac b.n a2ee a394: f8dd b0c8 ldr.w fp, [sp, #200] ; 0xc8 a398: f8dd 90cc ldr.w r9, [sp, #204] ; 0xcc a39c: 9f34 ldr r7, [sp, #208] ; 0xd0 a39e: f8dd a0c4 ldr.w sl, [sp, #196] ; 0xc4 a3a2: f8dd 80d4 ldr.w r8, [sp, #212] ; 0xd4 if(map_area.y1 != map_area.y2) { a3a6: f9bd 30e6 ldrsh.w r3, [sp, #230] ; 0xe6 a3aa: f9bd 20e2 ldrsh.w r2, [sp, #226] ; 0xe2 a3ae: 429a cmp r2, r3 a3b0: d00e beq.n a3d0 map_area.y2--; a3b2: 3b01 subs r3, #1 a3b4: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6 _lv_blend_map(clip_area, &map_area, color_buf, mask_buf, LV_DRAW_MASK_RES_CHANGED, opa, blend_mode); a3b8: 9b0f ldr r3, [sp, #60] ; 0x3c a3ba: 9302 str r3, [sp, #8] a3bc: 9b16 ldr r3, [sp, #88] ; 0x58 a3be: 9301 str r3, [sp, #4] a3c0: 2302 movs r3, #2 a3c2: 9300 str r3, [sp, #0] a3c4: 9b21 ldr r3, [sp, #132] ; 0x84 a3c6: 9a30 ldr r2, [sp, #192] ; 0xc0 a3c8: a938 add r1, sp, #224 ; 0xe0 a3ca: 980d ldr r0, [sp, #52] ; 0x34 a3cc: 4c8c ldr r4, [pc, #560] ; (a600 ) a3ce: 47a0 blx r4 _lv_mem_buf_release(mask_buf); a3d0: 9821 ldr r0, [sp, #132] ; 0x84 a3d2: 4c8c ldr r4, [pc, #560] ; (a604 ) a3d4: 47a0 blx r4 _lv_mem_buf_release(color_buf); a3d6: 9830 ldr r0, [sp, #192] ; 0xc0 a3d8: 47a0 blx r4 a3da: e4fb b.n 9dd4 draw_letter_normal(pos_x, pos_y, &g, clip_area, map_p, color, opa, blend_mode); a3dc: b22c sxth r4, r5 a3de: f9bd 0054 ldrsh.w r0, [sp, #84] ; 0x54 a3e2: f8ad 608c strh.w r6, [sp, #140] ; 0x8c uint32_t bpp = g->bpp; a3e6: f89d 30f2 ldrb.w r3, [sp, #242] ; 0xf2 a3ea: 9320 str r3, [sp, #128] ; 0x80 if(bpp == 3) bpp = 4; a3ec: 2b03 cmp r3, #3 a3ee: f000 80c1 beq.w a574 switch(bpp) { a3f2: 3b01 subs r3, #1 a3f4: 2b07 cmp r3, #7 a3f6: f200 80c5 bhi.w a584 a3fa: e8df f013 tbh [pc, r3, lsl #1] a3fe: 00cd .short 0x00cd a400: 00c30008 .word 0x00c30008 a404: 00c300bd .word 0x00c300bd a408: 00c300c3 .word 0x00c300c3 a40c: 00d5 .short 0x00d5 shades = 4; a40e: 2304 movs r3, #4 bitmask_init = 0xC0; a410: 22c0 movs r2, #192 ; 0xc0 a412: 9212 str r2, [sp, #72] ; 0x48 bpp_opa_table_p = _lv_bpp2_opa_table; a414: 4a7c ldr r2, [pc, #496] ; (a608 ) a416: 9222 str r2, [sp, #136] ; 0x88 if(opa < LV_OPA_MAX) { a418: 9916 ldr r1, [sp, #88] ; 0x58 a41a: 29f9 cmp r1, #249 ; 0xf9 a41c: d82b bhi.n a476 if(prev_opa != opa || prev_bpp != bpp) { a41e: 4a7b ldr r2, [pc, #492] ; (a60c ) a420: f892 2100 ldrb.w r2, [r2, #256] ; 0x100 a424: 428a cmp r2, r1 a426: f000 80c8 beq.w a5ba for(i = 0; i < shades; i++) { a42a: b1d3 cbz r3, a462 a42c: 9e22 ldr r6, [sp, #136] ; 0x88 a42e: 1e72 subs r2, r6, #1 a430: 4976 ldr r1, [pc, #472] ; (a60c ) a432: 3901 subs r1, #1 a434: 3b01 subs r3, #1 a436: eb06 0c03 add.w ip, r6, r3 opa_table[i] = bpp_opa_table_p[i] == LV_OPA_COVER ? opa : ((bpp_opa_table_p[i] * opa) >> 8); a43a: 9b16 ldr r3, [sp, #88] ; 0x58 a43c: 461e mov r6, r3 a43e: f8cd b050 str.w fp, [sp, #80] ; 0x50 a442: 469b mov fp, r3 a444: f812 3f01 ldrb.w r3, [r2, #1]! a448: 2bff cmp r3, #255 ; 0xff a44a: bf1a itte ne a44c: fb0b f303 mulne.w r3, fp, r3 a450: f3c3 2307 ubfxne r3, r3, #8, #8 a454: 4633 moveq r3, r6 a456: f801 3f01 strb.w r3, [r1, #1]! for(i = 0; i < shades; i++) { a45a: 4594 cmp ip, r2 a45c: d1f2 bne.n a444 a45e: f8dd b050 ldr.w fp, [sp, #80] ; 0x50 prev_opa = opa; a462: 4b6a ldr r3, [pc, #424] ; (a60c ) a464: f89d 2058 ldrb.w r2, [sp, #88] ; 0x58 a468: f883 2100 strb.w r2, [r3, #256] ; 0x100 prev_bpp = bpp; a46c: 9a20 ldr r2, [sp, #128] ; 0x80 a46e: f8c3 2104 str.w r2, [r3, #260] ; 0x104 bpp_opa_table_p = opa_table; a472: 9b1c ldr r3, [sp, #112] ; 0x70 a474: 9322 str r3, [sp, #136] ; 0x88 int32_t box_w = g->box_w; a476: f8bd 30ea ldrh.w r3, [sp, #234] ; 0xea a47a: 9324 str r3, [sp, #144] ; 0x90 int32_t box_h = g->box_h; a47c: f8bd 20ec ldrh.w r2, [sp, #236] ; 0xec int32_t width_bit = box_w * bpp; /*Letter width in bits*/ a480: 9920 ldr r1, [sp, #128] ; 0x80 a482: fb01 fc03 mul.w ip, r1, r3 int32_t col_start = pos_x >= clip_area->x1 ? 0 : clip_area->x1 - pos_x; a486: 9b0d ldr r3, [sp, #52] ; 0x34 a488: f9b3 3000 ldrsh.w r3, [r3] a48c: 429c cmp r4, r3 a48e: bfb4 ite lt a490: 1b1b sublt r3, r3, r4 a492: 2300 movge r3, #0 a494: 9314 str r3, [sp, #80] ; 0x50 int32_t col_end = pos_x + box_w <= clip_area->x2 ? box_w : clip_area->x2 - pos_x + 1; a496: 9b0d ldr r3, [sp, #52] ; 0x34 a498: f9b3 3004 ldrsh.w r3, [r3, #4] a49c: 9924 ldr r1, [sp, #144] ; 0x90 a49e: 4421 add r1, r4 a4a0: 4299 cmp r1, r3 a4a2: bfc6 itte gt a4a4: 1b1b subgt r3, r3, r4 a4a6: 3301 addgt r3, #1 a4a8: 9b24 ldrle r3, [sp, #144] ; 0x90 a4aa: 9325 str r3, [sp, #148] ; 0x94 int32_t row_start = pos_y >= clip_area->y1 ? 0 : clip_area->y1 - pos_y; a4ac: 9b0d ldr r3, [sp, #52] ; 0x34 a4ae: f9b3 3002 ldrsh.w r3, [r3, #2] a4b2: 4298 cmp r0, r3 a4b4: bfb4 ite lt a4b6: 1a1b sublt r3, r3, r0 a4b8: 2300 movge r3, #0 a4ba: 9326 str r3, [sp, #152] ; 0x98 int32_t row_end = pos_y + box_h <= clip_area->y2 ? box_h : clip_area->y2 - pos_y + 1; a4bc: 9b0d ldr r3, [sp, #52] ; 0x34 a4be: f9b3 3006 ldrsh.w r3, [r3, #6] a4c2: 1811 adds r1, r2, r0 a4c4: 4299 cmp r1, r3 a4c6: bfc3 ittte gt a4c8: 1a1b subgt r3, r3, r0 a4ca: 3301 addgt r3, #1 a4cc: 931b strgt r3, [sp, #108] ; 0x6c a4ce: 921b strle r2, [sp, #108] ; 0x6c uint32_t bit_ofs = (row_start * width_bit) + (col_start * bpp); a4d0: 9b14 ldr r3, [sp, #80] ; 0x50 a4d2: 9321 str r3, [sp, #132] ; 0x84 a4d4: 9920 ldr r1, [sp, #128] ; 0x80 a4d6: fb03 f401 mul.w r4, r3, r1 a4da: 9826 ldr r0, [sp, #152] ; 0x98 a4dc: fb00 440c mla r4, r0, ip, r4 map_p += bit_ofs >> 3; a4e0: eb0e 06d4 add.w r6, lr, r4, lsr #3 col_bit = bit_ofs & 0x7; /* "& 0x7" equals to "% 8" just faster */ a4e4: f004 0407 and.w r4, r4, #7 uint32_t mask_buf_size = box_w * box_h > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : box_w * box_h; a4e8: 9924 ldr r1, [sp, #144] ; 0x90 a4ea: fb02 fe01 mul.w lr, r2, r1 a4ee: 4672 mov r2, lr a4f0: f5be 7ff0 cmp.w lr, #480 ; 0x1e0 a4f4: bfa8 it ge a4f6: f44f 72f0 movge.w r2, #480 ; 0x1e0 a4fa: 921d str r2, [sp, #116] ; 0x74 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); a4fc: 4610 mov r0, r2 a4fe: 4b44 ldr r3, [pc, #272] ; (a610 ) a500: 4798 blx r3 a502: 9018 str r0, [sp, #96] ; 0x60 fill_area.x1 = col_start + pos_x; a504: b2ad uxth r5, r5 a506: 9b14 ldr r3, [sp, #80] ; 0x50 a508: 18eb adds r3, r5, r3 a50a: f8ad 30e0 strh.w r3, [sp, #224] ; 0xe0 fill_area.x2 = col_end + pos_x - 1; a50e: 3d01 subs r5, #1 a510: 9a25 ldr r2, [sp, #148] ; 0x94 a512: 18ab adds r3, r5, r2 a514: f8ad 30e4 strh.w r3, [sp, #228] ; 0xe4 fill_area.y1 = row_start + pos_y; a518: 9d15 ldr r5, [sp, #84] ; 0x54 a51a: 9826 ldr r0, [sp, #152] ; 0x98 a51c: 4405 add r5, r0 a51e: b22b sxth r3, r5 a520: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2 fill_area.y2 = fill_area.y1; a524: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); a528: 4b3a ldr r3, [pc, #232] ; (a614 ) a52a: 4798 blx r3 a52c: 901e str r0, [sp, #120] ; 0x78 uint32_t col_bit_max = 8 - bpp; a52e: 9920 ldr r1, [sp, #128] ; 0x80 a530: f1c1 0508 rsb r5, r1, #8 uint32_t col_bit_row_ofs = (box_w + col_start - col_end) * bpp; a534: 9a24 ldr r2, [sp, #144] ; 0x90 a536: 9b14 ldr r3, [sp, #80] ; 0x50 a538: 18d3 adds r3, r2, r3 a53a: 9a25 ldr r2, [sp, #148] ; 0x94 a53c: 1a9b subs r3, r3, r2 a53e: fb01 f303 mul.w r3, r1, r3 a542: 9320 str r3, [sp, #128] ; 0x80 for(row = row_start ; row < row_end; row++) { a544: 9826 ldr r0, [sp, #152] ; 0x98 a546: 9b1b ldr r3, [sp, #108] ; 0x6c a548: 4298 cmp r0, r3 a54a: f280 80df bge.w a70c a54e: f04f 0e00 mov.w lr, #0 mask_buf[mask_p] = 0; a552: f8cd b090 str.w fp, [sp, #144] ; 0x90 a556: f8cd 9098 str.w r9, [sp, #152] ; 0x98 a55a: 9727 str r7, [sp, #156] ; 0x9c a55c: 460f mov r7, r1 a55e: 9515 str r5, [sp, #84] ; 0x54 a560: f8cd a0a0 str.w sl, [sp, #160] ; 0xa0 a564: f8dd a094 ldr.w sl, [sp, #148] ; 0x94 a568: 4681 mov r9, r0 a56a: f8cd 8094 str.w r8, [sp, #148] ; 0x94 a56e: f8dd 8088 ldr.w r8, [sp, #136] ; 0x88 a572: e07a b.n a66a if(bpp == 3) bpp = 4; a574: 2304 movs r3, #4 a576: 9320 str r3, [sp, #128] ; 0x80 shades = 16; a578: 2310 movs r3, #16 bitmask_init = 0xF0; a57a: 22f0 movs r2, #240 ; 0xf0 a57c: 9212 str r2, [sp, #72] ; 0x48 bpp_opa_table_p = _lv_bpp4_opa_table; a57e: 4a26 ldr r2, [pc, #152] ; (a618 ) a580: 9222 str r2, [sp, #136] ; 0x88 a582: e749 b.n a418 LV_LOG_WARN("lv_draw_letter: invalid bpp"); a584: 4b25 ldr r3, [pc, #148] ; (a61c ) a586: 9300 str r3, [sp, #0] a588: 4b25 ldr r3, [pc, #148] ; (a620 ) a58a: f240 12e5 movw r2, #485 ; 0x1e5 a58e: 4925 ldr r1, [pc, #148] ; (a624 ) a590: 2002 movs r0, #2 a592: 4c25 ldr r4, [pc, #148] ; (a628 ) a594: 47a0 blx r4 a596: e41d b.n 9dd4 uint32_t bpp = g->bpp; a598: 2301 movs r3, #1 a59a: 9320 str r3, [sp, #128] ; 0x80 shades = 2; a59c: 2302 movs r3, #2 bitmask_init = 0x80; a59e: 2280 movs r2, #128 ; 0x80 a5a0: 9212 str r2, [sp, #72] ; 0x48 bpp_opa_table_p = _lv_bpp1_opa_table; a5a2: 4a22 ldr r2, [pc, #136] ; (a62c ) a5a4: 9222 str r2, [sp, #136] ; 0x88 a5a6: e737 b.n a418 uint32_t bpp = g->bpp; a5a8: 2308 movs r3, #8 a5aa: 9320 str r3, [sp, #128] ; 0x80 shades = 256; a5ac: f44f 7380 mov.w r3, #256 ; 0x100 bitmask_init = 0xFF; a5b0: 22ff movs r2, #255 ; 0xff a5b2: 9212 str r2, [sp, #72] ; 0x48 bpp_opa_table_p = _lv_bpp8_opa_table; a5b4: 4a1e ldr r2, [pc, #120] ; (a630 ) a5b6: 9222 str r2, [sp, #136] ; 0x88 a5b8: e72e b.n a418 if(prev_opa != opa || prev_bpp != bpp) { a5ba: 4a14 ldr r2, [pc, #80] ; (a60c ) a5bc: f8d2 2104 ldr.w r2, [r2, #260] ; 0x104 a5c0: 9920 ldr r1, [sp, #128] ; 0x80 a5c2: 4291 cmp r1, r2 a5c4: f47f af31 bne.w a42a a5c8: e74b b.n a462 map_p++; a5ca: 3601 adds r6, #1 bitmask = bitmask_init; a5cc: 9812 ldr r0, [sp, #72] ; 0x48 col_bit = 0; a5ce: 2400 movs r4, #0 a5d0: 3101 adds r1, #1 for(col = col_start; col < col_end; col++) { a5d2: 458c cmp ip, r1 a5d4: d02e beq.n a634 letter_px = (*map_p & bitmask) >> (col_bit_max - col_bit); a5d6: 7833 ldrb r3, [r6, #0] a5d8: 4003 ands r3, r0 a5da: 1b2a subs r2, r5, r4 a5dc: 40d3 lsrs r3, r2 if(letter_px) { a5de: f013 0fff tst.w r3, #255 ; 0xff mask_buf[mask_p] = bpp_opa_table_p[letter_px]; a5e2: bf1a itte ne a5e4: b2db uxtbne r3, r3 a5e6: f818 3003 ldrbne.w r3, [r8, r3] mask_buf[mask_p] = 0; a5ea: 2300 moveq r3, #0 a5ec: 700b strb r3, [r1, #0] if(col_bit < col_bit_max) { a5ee: 42a5 cmp r5, r4 a5f0: d9eb bls.n a5ca col_bit += bpp; a5f2: 443c add r4, r7 bitmask = bitmask >> bpp; a5f4: 40f8 lsrs r0, r7 a5f6: e7eb b.n a5d0 a5f8: 0000be1d .word 0x0000be1d a5fc: 00012b37 .word 0x00012b37 a600: 00008281 .word 0x00008281 a604: 00012571 .word 0x00012571 a608: 00024d64 .word 0x00024d64 a60c: 20002a50 .word 0x20002a50 a610: 0001293d .word 0x0001293d a614: 0000bec5 .word 0x0000bec5 a618: 00024d68 .word 0x00024d68 a61c: 00024f88 .word 0x00024f88 a620: 00024e9c .word 0x00024e9c a624: 00024eb8 .word 0x00024eb8 a628: 0001225d .word 0x0001225d a62c: 00024d60 .word 0x00024d60 a630: 00024d78 .word 0x00024d78 a634: 9515 str r5, [sp, #84] ; 0x54 if(other_mask_cnt) { a636: 9b1e ldr r3, [sp, #120] ; 0x78 a638: bb53 cbnz r3, a690 if((uint32_t) mask_p + (col_end - col_start) < mask_buf_size) { a63a: 9b14 ldr r3, [sp, #80] ; 0x50 a63c: ebaa 0303 sub.w r3, sl, r3 a640: 445b add r3, fp a642: 9a1d ldr r2, [sp, #116] ; 0x74 a644: 429a cmp r2, r3 a646: d93f bls.n a6c8 fill_area.y2 ++; a648: f8bd 30e6 ldrh.w r3, [sp, #230] ; 0xe6 a64c: 3301 adds r3, #1 a64e: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6 a652: 46de mov lr, fp col_bit += col_bit_row_ofs; a654: 9b20 ldr r3, [sp, #128] ; 0x80 a656: 441c add r4, r3 map_p += (col_bit >> 3); a658: eb06 06d4 add.w r6, r6, r4, lsr #3 col_bit = col_bit & 0x7; a65c: f004 0407 and.w r4, r4, #7 for(row = row_start ; row < row_end; row++) { a660: f109 0901 add.w r9, r9, #1 a664: 9b1b ldr r3, [sp, #108] ; 0x6c a666: 4599 cmp r9, r3 a668: da47 bge.n a6fa bitmask = bitmask_init >> col_bit; a66a: 9b12 ldr r3, [sp, #72] ; 0x48 a66c: fa23 f004 lsr.w r0, r3, r4 for(col = col_start; col < col_end; col++) { a670: 9b14 ldr r3, [sp, #80] ; 0x50 a672: 4553 cmp r3, sl a674: da0a bge.n a68c a676: 9a18 ldr r2, [sp, #96] ; 0x60 a678: eb02 010e add.w r1, r2, lr a67c: 9b21 ldr r3, [sp, #132] ; 0x84 a67e: ebaa 0b03 sub.w fp, sl, r3 a682: 44f3 add fp, lr a684: eb02 0c0b add.w ip, r2, fp a688: 9d15 ldr r5, [sp, #84] ; 0x54 a68a: e7a4 b.n a5d6 a68c: 46f3 mov fp, lr a68e: e7d2 b.n a636 lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf + mask_p_start, fill_area.x1, fill_area.y2, a690: 9b18 ldr r3, [sp, #96] ; 0x60 a692: 4473 add r3, lr a694: 4618 mov r0, r3 a696: 9322 str r3, [sp, #136] ; 0x88 a698: f9bd 10e0 ldrsh.w r1, [sp, #224] ; 0xe0 a69c: f8bd 30e4 ldrh.w r3, [sp, #228] ; 0xe4 a6a0: 3301 adds r3, #1 a6a2: 1a5b subs r3, r3, r1 a6a4: b21b sxth r3, r3 a6a6: f9bd 20e6 ldrsh.w r2, [sp, #230] ; 0xe6 a6aa: 4d85 ldr r5, [pc, #532] ; (a8c0 ) a6ac: 47a8 blx r5 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { a6ae: 2800 cmp r0, #0 a6b0: d1c3 bne.n a63a a6b2: f8bd 10e4 ldrh.w r1, [sp, #228] ; 0xe4 a6b6: 3101 adds r1, #1 a6b8: f8bd 30e0 ldrh.w r3, [sp, #224] ; 0xe0 a6bc: 1ac9 subs r1, r1, r3 _lv_memset_00(mask_buf + mask_p_start, lv_area_get_width(&fill_area)); a6be: b209 sxth r1, r1 a6c0: 9822 ldr r0, [sp, #136] ; 0x88 a6c2: 4b80 ldr r3, [pc, #512] ; (a8c4 ) a6c4: 4798 blx r3 a6c6: e7b8 b.n a63a _lv_blend_fill(clip_area, &fill_area, a6c8: 9b0f ldr r3, [sp, #60] ; 0x3c a6ca: 9302 str r3, [sp, #8] a6cc: 23ff movs r3, #255 ; 0xff a6ce: 9301 str r3, [sp, #4] a6d0: 2302 movs r3, #2 a6d2: 9300 str r3, [sp, #0] a6d4: 9b18 ldr r3, [sp, #96] ; 0x60 a6d6: f8bd 208c ldrh.w r2, [sp, #140] ; 0x8c a6da: a938 add r1, sp, #224 ; 0xe0 a6dc: 980d ldr r0, [sp, #52] ; 0x34 a6de: f8df b1e8 ldr.w fp, [pc, #488] ; a8c8 a6e2: 47d8 blx fp fill_area.y1 = fill_area.y2 + 1; a6e4: f8bd 30e6 ldrh.w r3, [sp, #230] ; 0xe6 a6e8: 3301 adds r3, #1 a6ea: b21b sxth r3, r3 a6ec: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2 fill_area.y2 = fill_area.y1; a6f0: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6 mask_p = 0; a6f4: f04f 0e00 mov.w lr, #0 a6f8: e7ac b.n a654 a6fa: f8dd b090 ldr.w fp, [sp, #144] ; 0x90 a6fe: f8dd 9098 ldr.w r9, [sp, #152] ; 0x98 a702: 9f27 ldr r7, [sp, #156] ; 0x9c a704: f8dd a0a0 ldr.w sl, [sp, #160] ; 0xa0 a708: f8dd 8094 ldr.w r8, [sp, #148] ; 0x94 if(fill_area.y1 != fill_area.y2) { a70c: f9bd 30e6 ldrsh.w r3, [sp, #230] ; 0xe6 a710: f9bd 20e2 ldrsh.w r2, [sp, #226] ; 0xe2 a714: 429a cmp r2, r3 a716: d00f beq.n a738 fill_area.y2--; a718: 3b01 subs r3, #1 a71a: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6 _lv_blend_fill(clip_area, &fill_area, a71e: 9b0f ldr r3, [sp, #60] ; 0x3c a720: 9302 str r3, [sp, #8] a722: 23ff movs r3, #255 ; 0xff a724: 9301 str r3, [sp, #4] a726: 2302 movs r3, #2 a728: 9300 str r3, [sp, #0] a72a: 9b18 ldr r3, [sp, #96] ; 0x60 a72c: f8bd 208c ldrh.w r2, [sp, #140] ; 0x8c a730: a938 add r1, sp, #224 ; 0xe0 a732: 980d ldr r0, [sp, #52] ; 0x34 a734: 4c64 ldr r4, [pc, #400] ; (a8c8 ) a736: 47a0 blx r4 _lv_mem_buf_release(mask_buf); a738: 9818 ldr r0, [sp, #96] ; 0x60 a73a: 4b64 ldr r3, [pc, #400] ; (a8cc ) a73c: 4798 blx r3 a73e: f7ff bb49 b.w 9dd4 cmd_state = CMD_STATE_WAIT; a742: 2300 movs r3, #0 a744: 9306 str r3, [sp, #24] a746: f7ff bb4d b.w 9de4 a74a: 4653 mov r3, sl a74c: 46ca mov sl, r9 a74e: 4699 mov r9, r3 if(dsc->decor & LV_TEXT_DECOR_STRIKETHROUGH) { a750: f898 3018 ldrb.w r3, [r8, #24] a754: f013 0f02 tst.w r3, #2 a758: d146 bne.n a7e8 if(dsc->decor & LV_TEXT_DECOR_UNDERLINE) { a75a: f898 3018 ldrb.w r3, [r8, #24] a75e: f013 0f01 tst.w r3, #1 a762: d162 bne.n a82a line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); a764: 9a0a ldr r2, [sp, #40] ; 0x28 a766: 9d07 ldr r5, [sp, #28] a768: 1956 adds r6, r2, r5 a76a: f9b8 200c ldrsh.w r2, [r8, #12] a76e: f898 3017 ldrb.w r3, [r8, #23] a772: 9300 str r3, [sp, #0] a774: 9b10 ldr r3, [sp, #64] ; 0x40 a776: 9905 ldr r1, [sp, #20] a778: 4630 mov r0, r6 a77a: 4c55 ldr r4, [pc, #340] ; (a8d0 ) a77c: 47a0 blx r4 a77e: 1944 adds r4, r0, r5 pos.x = coords->x1; a780: 9b13 ldr r3, [sp, #76] ; 0x4c a782: f9b3 5000 ldrsh.w r5, [r3] if(dsc->flag & LV_TXT_FLAG_CENTER) { a786: f898 2017 ldrb.w r2, [r8, #23] a78a: f012 0f04 tst.w r2, #4 a78e: d16c bne.n a86a else if(dsc->flag & LV_TXT_FLAG_RIGHT) { a790: f012 0f08 tst.w r2, #8 a794: d17e bne.n a894 a796: 9b0e ldr r3, [sp, #56] ; 0x38 a798: 9917 ldr r1, [sp, #92] ; 0x5c a79a: 440b add r3, r1 a79c: b21b sxth r3, r3 a79e: 9a11 ldr r2, [sp, #68] ; 0x44 a7a0: 440a add r2, r1 a7a2: b292 uxth r2, r2 a7a4: 9211 str r2, [sp, #68] ; 0x44 line_start = line_end; a7a6: f8dd b01c ldr.w fp, [sp, #28] pos.y += line_height; a7aa: 930e str r3, [sp, #56] ; 0x38 if(pos.y > mask->y2) return; a7ac: 9a0d ldr r2, [sp, #52] ; 0x34 a7ae: f9b2 2006 ldrsh.w r2, [r2, #6] a7b2: 429a cmp r2, r3 a7b4: f6ff a93f blt.w 9a36 line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); a7b8: 9407 str r4, [sp, #28] while(txt[line_start] != '\0') { a7ba: 9a0a ldr r2, [sp, #40] ; 0x28 a7bc: 4613 mov r3, r2 a7be: 445b add r3, fp a7c0: 9309 str r3, [sp, #36] ; 0x24 a7c2: f812 300b ldrb.w r3, [r2, fp] a7c6: 2b00 cmp r3, #0 a7c8: f43f a935 beq.w 9a36 pos.x += x_ofs; a7cc: 9b1a ldr r3, [sp, #104] ; 0x68 a7ce: 441d add r5, r3 a7d0: fa0f f985 sxth.w r9, r5 i = 0; a7d4: 2300 movs r3, #0 a7d6: 9352 str r3, [sp, #328] ; 0x148 cmd_state = CMD_STATE_WAIT; a7d8: 9306 str r3, [sp, #24] bpp_opa_table_p = opa_table; a7da: 4b3e ldr r3, [pc, #248] ; (a8d4 ) a7dc: 931c str r3, [sp, #112] ; 0x70 a7de: 464b mov r3, r9 a7e0: 46d1 mov r9, sl a7e2: 469a mov sl, r3 while(i < line_end - line_start) { a7e4: f7ff bafe b.w 9de4 p1.x = pos_x_start; a7e8: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c a7ec: f8ad 30e0 strh.w r3, [sp, #224] ; 0xe0 p1.y = pos.y + (dsc->font->line_height / 2) + line_dsc.width / 2; a7f0: f8d8 3004 ldr.w r3, [r8, #4] a7f4: f9b3 3008 ldrsh.w r3, [r3, #8] a7f8: eb03 72d3 add.w r2, r3, r3, lsr #31 a7fc: f9bd 314e ldrsh.w r3, [sp, #334] ; 0x14e a800: eb03 73d3 add.w r3, r3, r3, lsr #31 a804: 105b asrs r3, r3, #1 a806: eb03 0362 add.w r3, r3, r2, asr #1 a80a: 9a11 ldr r2, [sp, #68] ; 0x44 a80c: 4413 add r3, r2 a80e: b21b sxth r3, r3 a810: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2 p2.x = pos.x; a814: f8ad 90e8 strh.w r9, [sp, #232] ; 0xe8 p2.y = p1.y; a818: f8ad 30ea strh.w r3, [sp, #234] ; 0xea lv_draw_line(&p1, &p2, mask, &line_dsc); a81c: ab53 add r3, sp, #332 ; 0x14c a81e: 9a0d ldr r2, [sp, #52] ; 0x34 a820: a93a add r1, sp, #232 ; 0xe8 a822: a838 add r0, sp, #224 ; 0xe0 a824: 4c2c ldr r4, [pc, #176] ; (a8d8 ) a826: 47a0 blx r4 a828: e797 b.n a75a p1.x = pos_x_start; a82a: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c a82e: f8ad 30e0 strh.w r3, [sp, #224] ; 0xe0 p1.y = pos.y + dsc->font->line_height - dsc->font->base_line + line_dsc.width / 2 + 1; a832: f8d8 2004 ldr.w r2, [r8, #4] a836: f9bd 314e ldrsh.w r3, [sp, #334] ; 0x14e a83a: eb03 73d3 add.w r3, r3, r3, lsr #31 a83e: 105b asrs r3, r3, #1 a840: 3301 adds r3, #1 a842: 8911 ldrh r1, [r2, #8] a844: 440b add r3, r1 a846: 8952 ldrh r2, [r2, #10] a848: 1a9b subs r3, r3, r2 a84a: 9a11 ldr r2, [sp, #68] ; 0x44 a84c: 4413 add r3, r2 a84e: b21b sxth r3, r3 a850: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2 p2.x = pos.x; a854: f8ad 90e8 strh.w r9, [sp, #232] ; 0xe8 p2.y = p1.y; a858: f8ad 30ea strh.w r3, [sp, #234] ; 0xea lv_draw_line(&p1, &p2, mask, &line_dsc); a85c: ab53 add r3, sp, #332 ; 0x14c a85e: 9a0d ldr r2, [sp, #52] ; 0x34 a860: a93a add r1, sp, #232 ; 0xe8 a862: a838 add r0, sp, #224 ; 0xe0 a864: 4c1c ldr r4, [pc, #112] ; (a8d8 ) a866: 47a0 blx r4 a868: e77c b.n a764 _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); a86a: f9b8 300c ldrsh.w r3, [r8, #12] a86e: 9200 str r2, [sp, #0] a870: 9a05 ldr r2, [sp, #20] a872: 4601 mov r1, r0 a874: 4630 mov r0, r6 a876: 4e19 ldr r6, [pc, #100] ; (a8dc ) a878: 47b0 blx r6 a87a: 9a13 ldr r2, [sp, #76] ; 0x4c a87c: 8893 ldrh r3, [r2, #4] a87e: 3301 adds r3, #1 a880: 8812 ldrh r2, [r2, #0] a882: 1a9b subs r3, r3, r2 pos.x += (lv_area_get_width(coords) - line_width) / 2; a884: b21b sxth r3, r3 a886: 1a18 subs r0, r3, r0 a888: eb00 70d0 add.w r0, r0, r0, lsr #31 a88c: eb05 0560 add.w r5, r5, r0, asr #1 a890: b22d sxth r5, r5 a892: e780 b.n a796 _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); a894: f9b8 300c ldrsh.w r3, [r8, #12] a898: 9200 str r2, [sp, #0] a89a: 9a05 ldr r2, [sp, #20] a89c: 4601 mov r1, r0 a89e: 4630 mov r0, r6 a8a0: 4e0e ldr r6, [pc, #56] ; (a8dc ) a8a2: 47b0 blx r6 a8a4: 9a13 ldr r2, [sp, #76] ; 0x4c a8a6: 8893 ldrh r3, [r2, #4] a8a8: 3301 adds r3, #1 a8aa: 8812 ldrh r2, [r2, #0] a8ac: 1a9b subs r3, r3, r2 pos.x += lv_area_get_width(coords) - line_width; a8ae: b21b sxth r3, r3 a8b0: 1a18 subs r0, r3, r0 a8b2: 4405 add r5, r0 a8b4: b22d sxth r5, r5 a8b6: e76e b.n a796 cmd_state = CMD_STATE_WAIT; a8b8: 2300 movs r3, #0 a8ba: 9306 str r3, [sp, #24] a8bc: f7ff ba0e b.w 9cdc a8c0: 0000be1d .word 0x0000be1d a8c4: 00012b37 .word 0x00012b37 a8c8: 00007751 .word 0x00007751 a8cc: 00012571 .word 0x00012571 a8d0: 00013db1 .word 0x00013db1 a8d4: 20002a50 .word 0x20002a50 a8d8: 0000a911 .word 0x0000a911 a8dc: 00013fdd .word 0x00013fdd 0000a8e0 : /********************** * GLOBAL FUNCTIONS **********************/ LV_ATTRIBUTE_FAST_MEM void lv_draw_line_dsc_init(lv_draw_line_dsc_t * dsc) { a8e0: b510 push {r4, lr} a8e2: 4604 mov r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_line_dsc_t)); a8e4: 210a movs r1, #10 a8e6: 4b09 ldr r3, [pc, #36] ; (a90c ) a8e8: 4798 blx r3 dsc->width = 1; a8ea: 2301 movs r3, #1 a8ec: 8063 strh r3, [r4, #2] dsc->opa = LV_OPA_COVER; a8ee: 23ff movs r3, #255 ; 0xff a8f0: 7223 strb r3, [r4, #8] dsc->color = LV_COLOR_BLACK; a8f2: 7823 ldrb r3, [r4, #0] a8f4: f36f 0304 bfc r3, #0, #5 a8f8: 7023 strb r3, [r4, #0] a8fa: 8823 ldrh r3, [r4, #0] a8fc: f36f 134a bfc r3, #5, #6 a900: 8023 strh r3, [r4, #0] a902: 0a1b lsrs r3, r3, #8 a904: f36f 03c7 bfc r3, #3, #5 a908: 7063 strb r3, [r4, #1] a90a: bd10 pop {r4, pc} a90c: 00012b37 .word 0x00012b37 0000a910 : * @param style pointer to a line's style * @param opa_scale scale down all opacities by the factor */ LV_ATTRIBUTE_FAST_MEM void lv_draw_line(const lv_point_t * point1, const lv_point_t * point2, const lv_area_t * clip, lv_draw_line_dsc_t * dsc) { a910: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} a914: b0cb sub sp, #300 ; 0x12c if(dsc->width == 0) return; a916: f9b3 5002 ldrsh.w r5, [r3, #2] a91a: 2d00 cmp r5, #0 a91c: f000 8418 beq.w b150 if(dsc->opa <= LV_OPA_MIN) return; a920: 7a1c ldrb r4, [r3, #8] a922: 2c05 cmp r4, #5 a924: f240 8414 bls.w b150 if(point1->x == point2->x && point1->y == point2->y) return; a928: f9b0 6000 ldrsh.w r6, [r0] a92c: f9b1 7000 ldrsh.w r7, [r1] a930: 42be cmp r6, r7 a932: f000 8130 beq.w ab96 a936: 461c mov r4, r3 a938: 4696 mov lr, r2 a93a: 9208 str r2, [sp, #32] a93c: 9107 str r1, [sp, #28] a93e: 9006 str r0, [sp, #24] lv_area_t clip_line; clip_line.x1 = LV_MATH_MIN(point1->x, point2->x) - dsc->width / 2; a940: eb05 75d5 add.w r5, r5, r5, lsr #31 a944: f3c5 054f ubfx r5, r5, #1, #16 a948: 42be cmp r6, r7 a94a: bfd4 ite le a94c: ebc5 0306 rsble r3, r5, r6 a950: ebc5 0307 rsbgt r3, r5, r7 a954: f8ad 3120 strh.w r3, [sp, #288] ; 0x120 clip_line.x2 = LV_MATH_MAX(point1->x, point2->x) + dsc->width / 2; a958: 42be cmp r6, r7 a95a: bfac ite ge a95c: 19ab addge r3, r5, r6 a95e: 19eb addlt r3, r5, r7 a960: f8ad 3124 strh.w r3, [sp, #292] ; 0x124 clip_line.y1 = LV_MATH_MIN(point1->y, point2->y) - dsc->width / 2; a964: 460f mov r7, r1 a966: f9b1 2002 ldrsh.w r2, [r1, #2] a96a: 4606 mov r6, r0 a96c: f9b0 3002 ldrsh.w r3, [r0, #2] a970: 429a cmp r2, r3 a972: bfd4 ite le a974: ebc5 0102 rsble r1, r5, r2 a978: ebc5 0103 rsbgt r1, r5, r3 a97c: f8ad 1122 strh.w r1, [sp, #290] ; 0x122 clip_line.y2 = LV_MATH_MAX(point1->y, point2->y) + dsc->width / 2; a980: 429a cmp r2, r3 a982: bfac ite ge a984: 18ad addge r5, r5, r2 a986: 18ed addlt r5, r5, r3 a988: f8ad 5126 strh.w r5, [sp, #294] ; 0x126 bool is_common; is_common = _lv_area_intersect(&clip_line, &clip_line, clip); a98c: 4672 mov r2, lr a98e: a948 add r1, sp, #288 ; 0x120 a990: 4608 mov r0, r1 a992: 4bab ldr r3, [pc, #684] ; (ac40 ) a994: 4798 blx r3 if(!is_common) return; a996: 2800 cmp r0, #0 a998: f000 83da beq.w b150 if(point1->y == point2->y) draw_line_hor(point1, point2, &clip_line, dsc); a99c: f9b6 6002 ldrsh.w r6, [r6, #2] a9a0: f9b7 5002 ldrsh.w r5, [r7, #2] a9a4: 42ae cmp r6, r5 a9a6: f000 80fe beq.w aba6 else if(point1->x == point2->x) draw_line_ver(point1, point2, &clip_line, dsc); a9aa: 9b06 ldr r3, [sp, #24] a9ac: f9b3 3000 ldrsh.w r3, [r3] a9b0: 461a mov r2, r3 a9b2: 9305 str r3, [sp, #20] a9b4: 9b07 ldr r3, [sp, #28] a9b6: f9b3 a000 ldrsh.w sl, [r3] a9ba: 4552 cmp r2, sl a9bc: f000 8201 beq.w adc2 lv_draw_line_dsc_t * dsc) { /*Keep the great y in p1*/ lv_point_t p1; lv_point_t p2; if(point1->y < point2->y) { a9c0: 42ae cmp r6, r5 a9c2: db06 blt.n a9d2 a9c4: 4633 mov r3, r6 p2.y = point2->y; p1.x = point1->x; p2.x = point2->x; } else { p1.y = point2->y; a9c6: 462e mov r6, r5 p2.y = point1->y; a9c8: 461d mov r5, r3 if(point1->y < point2->y) { a9ca: 9b05 ldr r3, [sp, #20] p1.x = point2->x; a9cc: f8cd a014 str.w sl, [sp, #20] p2.x = point1->x; a9d0: 469a mov sl, r3 } int32_t xdiff = p2.x - p1.x; a9d2: 9b05 ldr r3, [sp, #20] a9d4: ebaa 0303 sub.w r3, sl, r3 a9d8: 9309 str r3, [sp, #36] ; 0x24 int32_t ydiff = p2.y - p1.y; a9da: 1baa subs r2, r5, r6 a9dc: 920a str r2, [sp, #40] ; 0x28 bool flat = LV_MATH_ABS(xdiff) > LV_MATH_ABS(ydiff) ? true : false; a9de: 2b00 cmp r3, #0 a9e0: bfb8 it lt a9e2: 425b neglt r3, r3 a9e4: 469b mov fp, r3 a9e6: 2a00 cmp r2, #0 a9e8: bfb8 it lt a9ea: 4252 neglt r2, r2 a9ec: 4690 mov r8, r2 143, 145, 147, 149, 151, 153, 155, 158, 160, 162, 165, 167, 170, 173, 175, 178, 181, }; int32_t w = dsc->width; a9ee: f9b4 9002 ldrsh.w r9, [r4, #2] int32_t wcorr_i = 0; if(flat) wcorr_i = (LV_MATH_ABS(ydiff) << 5) / LV_MATH_ABS(xdiff); a9f2: 4293 cmp r3, r2 a9f4: bfc7 ittee gt a9f6: 0153 lslgt r3, r2, #5 a9f8: fb93 f3fb sdivgt r3, r3, fp else wcorr_i = (LV_MATH_ABS(xdiff) << 5) / LV_MATH_ABS(ydiff); a9fc: ea4f 134b movle.w r3, fp, lsl #5 aa00: fb93 f3f2 sdivle r3, r3, r2 w = (w * wcorr[wcorr_i] + 63) >> 7; /*+ 63 for rounding*/ aa04: 4a8f ldr r2, [pc, #572] ; (ac44 ) aa06: 5cd3 ldrb r3, [r2, r3] aa08: fb09 f903 mul.w r9, r9, r3 aa0c: f109 093f add.w r9, r9, #63 ; 0x3f aa10: ea4f 13e9 mov.w r3, r9, asr #7 aa14: 461f mov r7, r3 int32_t w_half0 = w >> 1; int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ lv_area_t draw_area; draw_area.x1 = LV_MATH_MIN(p1.x, p2.x) - w; aa16: b29b uxth r3, r3 aa18: 9805 ldr r0, [sp, #20] aa1a: 4582 cmp sl, r0 aa1c: bfd4 ite le aa1e: ebc3 020a rsble r2, r3, sl aa22: ebc3 0200 rsbgt r2, r3, r0 aa26: f8ad 2038 strh.w r2, [sp, #56] ; 0x38 draw_area.x2 = LV_MATH_MAX(p1.x, p2.x) + w; aa2a: 4582 cmp sl, r0 aa2c: bfac ite ge aa2e: eb03 020a addge.w r2, r3, sl aa32: 181a addlt r2, r3, r0 aa34: f8ad 203c strh.w r2, [sp, #60] ; 0x3c draw_area.y1 = LV_MATH_MIN(p1.y, p2.y) - w; aa38: 42b5 cmp r5, r6 aa3a: bfd4 ite le aa3c: ebc3 0205 rsble r2, r3, r5 aa40: ebc3 0206 rsbgt r2, r3, r6 aa44: f8ad 203a strh.w r2, [sp, #58] ; 0x3a draw_area.y2 = LV_MATH_MAX(p1.y, p2.y) + w; aa48: 42b5 cmp r5, r6 aa4a: bfac ite ge aa4c: 195b addge r3, r3, r5 aa4e: 199b addlt r3, r3, r6 aa50: f8ad 303e strh.w r3, [sp, #62] ; 0x3e /* Get the union of `coords` and `clip`*/ /* `clip` is already truncated to the `vdb` size * in 'lv_refr_area' function */ bool is_common = _lv_area_intersect(&draw_area, &draw_area, clip); aa54: aa48 add r2, sp, #288 ; 0x120 aa56: a90e add r1, sp, #56 ; 0x38 aa58: 4608 mov r0, r1 aa5a: 4b79 ldr r3, [pc, #484] ; (ac40 ) aa5c: 4798 blx r3 if(is_common == false) return; aa5e: 2800 cmp r0, #0 aa60: f000 8372 beq.w b148 int32_t w_half0 = w >> 1; aa64: ea4f 2929 mov.w r9, r9, asr #8 int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ aa68: f007 0301 and.w r3, r7, #1 aa6c: 444b add r3, r9 aa6e: 930b str r3, [sp, #44] ; 0x2c lv_draw_mask_line_param_t mask_left_param; lv_draw_mask_line_param_t mask_right_param; lv_draw_mask_line_param_t mask_top_param; lv_draw_mask_line_param_t mask_bottom_param; if(flat) { aa70: 45c3 cmp fp, r8 aa72: f340 82b6 ble.w afe2 if(xdiff > 0) { aa76: 9a09 ldr r2, [sp, #36] ; 0x24 aa78: 2a00 cmp r2, #0 aa7a: f340 828e ble.w af9a lv_draw_mask_line_points_init(&mask_left_param, p1.x, p1.y - w_half0, p2.x, p2.y - w_half0, aa7e: fa1f fb86 uxth.w fp, r6 aa82: fa1f f389 uxth.w r3, r9 aa86: fa1f f985 uxth.w r9, r5 aa8a: ebab 0203 sub.w r2, fp, r3 aa8e: 2100 movs r1, #0 aa90: 9101 str r1, [sp, #4] aa92: eba9 0303 sub.w r3, r9, r3 aa96: b21b sxth r3, r3 aa98: 9300 str r3, [sp, #0] aa9a: 4653 mov r3, sl aa9c: b212 sxth r2, r2 aa9e: 9905 ldr r1, [sp, #20] aaa0: a812 add r0, sp, #72 ; 0x48 aaa2: 4f69 ldr r7, [pc, #420] ; (ac48 ) aaa4: 47b8 blx r7 LV_DRAW_MASK_LINE_SIDE_LEFT); lv_draw_mask_line_points_init(&mask_right_param, p1.x, p1.y + w_half1, p2.x, p2.y + w_half1, aaa6: f8bd 802c ldrh.w r8, [sp, #44] ; 0x2c aaaa: eb0b 0208 add.w r2, fp, r8 aaae: 2301 movs r3, #1 aab0: 9301 str r3, [sp, #4] aab2: 44c1 add r9, r8 aab4: fa0f f389 sxth.w r3, r9 aab8: 9300 str r3, [sp, #0] aaba: 4653 mov r3, sl aabc: b212 sxth r2, r2 aabe: 9905 ldr r1, [sp, #20] aac0: a81d add r0, sp, #116 ; 0x74 aac2: 47b8 blx r7 LV_DRAW_MASK_LINE_SIDE_RIGHT); } /*Use the normal vector for the endings*/ int16_t mask_left_id = lv_draw_mask_add(&mask_left_param, NULL); aac4: 2100 movs r1, #0 aac6: a812 add r0, sp, #72 ; 0x48 aac8: f8df 819c ldr.w r8, [pc, #412] ; ac68 aacc: 47c0 blx r8 aace: 900b str r0, [sp, #44] ; 0x2c int16_t mask_right_id = lv_draw_mask_add(&mask_right_param, NULL); aad0: 2100 movs r1, #0 aad2: a81d add r0, sp, #116 ; 0x74 aad4: 47c0 blx r8 aad6: 900c str r0, [sp, #48] ; 0x30 int16_t mask_top_id = LV_MASK_ID_INV; int16_t mask_bottom_id = LV_MASK_ID_INV; if(!dsc->raw_end) { aad8: 7a63 ldrb r3, [r4, #9] aada: f013 0f10 tst.w r3, #16 aade: f000 82a4 beq.w b02a int16_t mask_bottom_id = LV_MASK_ID_INV; aae2: f04f 33ff mov.w r3, #4294967295 aae6: 930d str r3, [sp, #52] ; 0x34 int16_t mask_top_id = LV_MASK_ID_INV; aae8: 930a str r3, [sp, #40] ; 0x28 lv_draw_mask_line_points_init(&mask_bottom_param, p2.x, p2.y, p2.x - ydiff, p2.y + xdiff, LV_DRAW_MASK_LINE_SIDE_TOP); mask_top_id = lv_draw_mask_add(&mask_top_param, NULL); mask_bottom_id = lv_draw_mask_add(&mask_bottom_param, NULL); } lv_disp_t * disp = _lv_refr_get_disp_refreshing(); aaea: 4b58 ldr r3, [pc, #352] ; (ac4c ) aaec: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); aaee: 4b58 ldr r3, [pc, #352] ; (ac50 ) aaf0: 4798 blx r3 aaf2: 4682 mov sl, r0 const lv_area_t * disp_area = &vdb->area; /*Store the coordinates of the `draw_a` relative to the VDB */ draw_area.x1 -= disp_area->x1; aaf4: 8a06 ldrh r6, [r0, #16] aaf6: f8bd 5038 ldrh.w r5, [sp, #56] ; 0x38 aafa: 1bad subs r5, r5, r6 aafc: b2aa uxth r2, r5 aafe: f8ad 2038 strh.w r2, [sp, #56] ; 0x38 draw_area.y1 -= disp_area->y1; ab02: 8a40 ldrh r0, [r0, #18] ab04: f8bd 103a ldrh.w r1, [sp, #58] ; 0x3a ab08: 1a09 subs r1, r1, r0 ab0a: f8ad 103a strh.w r1, [sp, #58] ; 0x3a draw_area.x2 -= disp_area->x1; ab0e: f8bd 303c ldrh.w r3, [sp, #60] ; 0x3c ab12: 1b9b subs r3, r3, r6 ab14: b29b uxth r3, r3 ab16: f8ad 303c strh.w r3, [sp, #60] ; 0x3c draw_area.y2 -= disp_area->y1; ab1a: f8bd 103e ldrh.w r1, [sp, #62] ; 0x3e ab1e: 1a09 subs r1, r1, r0 ab20: f8ad 103e strh.w r1, [sp, #62] ; 0x3e ab24: 1c5d adds r5, r3, #1 ab26: 1aad subs r5, r5, r2 ab28: b22d sxth r5, r5 * So deal with it only with steep lines. */ int32_t draw_area_w = lv_area_get_width(&draw_area); /*Draw the background line by line*/ int32_t h; size_t mask_buf_size = LV_MATH_MIN(lv_area_get_size(&draw_area), LV_HOR_RES_MAX); ab2a: a80e add r0, sp, #56 ; 0x38 ab2c: 4b49 ldr r3, [pc, #292] ; (ac54 ) ab2e: 4798 blx r3 ab30: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0 ab34: f0c0 82a2 bcc.w b07c ab38: f44f 7bf0 mov.w fp, #480 ; 0x1e0 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); ab3c: 4658 mov r0, fp ab3e: 4b46 ldr r3, [pc, #280] ; (ac58 ) ab40: 4798 blx r3 ab42: 4681 mov r9, r0 lv_area_t fill_area; fill_area.x1 = draw_area.x1 + disp_area->x1; ab44: f8ba 3010 ldrh.w r3, [sl, #16] ab48: f8bd 2038 ldrh.w r2, [sp, #56] ; 0x38 ab4c: 441a add r2, r3 ab4e: b212 sxth r2, r2 ab50: 9205 str r2, [sp, #20] ab52: f8ad 2040 strh.w r2, [sp, #64] ; 0x40 fill_area.x2 = draw_area.x2 + disp_area->x1; ab56: f8bd 203c ldrh.w r2, [sp, #60] ; 0x3c ab5a: 4413 add r3, r2 ab5c: f8ad 3044 strh.w r3, [sp, #68] ; 0x44 fill_area.y1 = draw_area.y1 + disp_area->y1; ab60: f8bd 303a ldrh.w r3, [sp, #58] ; 0x3a ab64: f8ba 2012 ldrh.w r2, [sl, #18] ab68: 4413 add r3, r2 ab6a: b21b sxth r3, r3 ab6c: f8ad 3042 strh.w r3, [sp, #66] ; 0x42 fill_area.y2 = fill_area.y1; ab70: f8ad 3046 strh.w r3, [sp, #70] ; 0x46 int32_t x = vdb->area.x1 + draw_area.x1; uint32_t mask_p = 0; _lv_memset_ff(mask_buf, mask_buf_size); ab74: 4659 mov r1, fp ab76: 4b39 ldr r3, [pc, #228] ; (ac5c ) ab78: 4798 blx r3 /*Fill the first row with 'color'*/ for(h = draw_area.y1 + disp_area->y1; h <= draw_area.y2 + disp_area->y1; h++) { ab7a: f9ba 2012 ldrsh.w r2, [sl, #18] ab7e: f9bd 603a ldrsh.w r6, [sp, #58] ; 0x3a ab82: 4416 add r6, r2 ab84: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e ab88: 4413 add r3, r2 ab8a: 429e cmp r6, r3 ab8c: f300 82b9 bgt.w b102 ab90: 2700 movs r7, #0 mask_p += draw_area_w; if((uint32_t) mask_p + draw_area_w < mask_buf_size) { fill_area.y2 ++; } else { _lv_blend_fill(&fill_area, clip, ab92: 9409 str r4, [sp, #36] ; 0x24 ab94: e2a0 b.n b0d8 if(point1->x == point2->x && point1->y == point2->y) return; ab96: f9b0 e002 ldrsh.w lr, [r0, #2] ab9a: f9b1 4002 ldrsh.w r4, [r1, #2] ab9e: 45a6 cmp lr, r4 aba0: f47f aec9 bne.w a936 aba4: e2d4 b.n b150 lv_opa_t opa = dsc->opa; aba6: f894 9008 ldrb.w r9, [r4, #8] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); abaa: 4b28 ldr r3, [pc, #160] ; (ac4c ) abac: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); abae: 4b28 ldr r3, [pc, #160] ; (ac50 ) abb0: 4798 blx r3 abb2: 4607 mov r7, r0 int32_t w = dsc->width - 1; abb4: f9b4 3002 ldrsh.w r3, [r4, #2] abb8: 3b01 subs r3, #1 int32_t w_half0 = w >> 1; abba: 105e asrs r6, r3, #1 int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ abbc: f003 0301 and.w r3, r3, #1 abc0: 199d adds r5, r3, r6 bool dashed = dsc->dash_gap && dsc->dash_width ? true : false; abc2: f9b4 3006 ldrsh.w r3, [r4, #6] abc6: 2b00 cmp r3, #0 abc8: d035 beq.n ac36 abca: f9b4 8004 ldrsh.w r8, [r4, #4] abce: f118 0800 adds.w r8, r8, #0 abd2: bf18 it ne abd4: f04f 0801 movne.w r8, #1 if(lv_draw_mask_get_cnt()) simple_mode = false; abd8: 4b21 ldr r3, [pc, #132] ; (ac60 ) abda: 4798 blx r3 abdc: bb70 cbnz r0, ac3c else if(dashed) simple_mode = false; abde: f088 0201 eor.w r2, r8, #1 draw_area.x1 = LV_MATH_MIN(point1->x, point2->x); abe2: 9b07 ldr r3, [sp, #28] abe4: f9b3 3000 ldrsh.w r3, [r3] abe8: 9906 ldr r1, [sp, #24] abea: f9b1 1000 ldrsh.w r1, [r1] abee: 4618 mov r0, r3 abf0: 428b cmp r3, r1 abf2: bfa8 it ge abf4: 4608 movge r0, r1 abf6: f8ad 00a0 strh.w r0, [sp, #160] ; 0xa0 draw_area.x2 = LV_MATH_MAX(point1->x, point2->x) - 1; abfa: 428b cmp r3, r1 abfc: bfb8 it lt abfe: 460b movlt r3, r1 ac00: 3b01 subs r3, #1 ac02: f8ad 30a4 strh.w r3, [sp, #164] ; 0xa4 draw_area.y1 = point1->y - w_half1; ac06: 9906 ldr r1, [sp, #24] ac08: 884b ldrh r3, [r1, #2] ac0a: 1b5d subs r5, r3, r5 ac0c: f8ad 50a2 strh.w r5, [sp, #162] ; 0xa2 draw_area.y2 = point1->y + w_half0; ac10: 4433 add r3, r6 ac12: f8ad 30a6 strh.w r3, [sp, #166] ; 0xa6 if(simple_mode) { ac16: b34a cbz r2, ac6c dsc->blend_mode); ac18: 7a63 ldrb r3, [r4, #9] _lv_blend_fill(clip, &draw_area, ac1a: f003 0303 and.w r3, r3, #3 ac1e: 9302 str r3, [sp, #8] ac20: f8cd 9004 str.w r9, [sp, #4] ac24: 2301 movs r3, #1 ac26: 9300 str r3, [sp, #0] ac28: 2300 movs r3, #0 ac2a: 8822 ldrh r2, [r4, #0] ac2c: a928 add r1, sp, #160 ; 0xa0 ac2e: a848 add r0, sp, #288 ; 0x120 ac30: 4d0c ldr r5, [pc, #48] ; (ac64 ) ac32: 47a8 blx r5 ac34: e288 b.n b148 bool dashed = dsc->dash_gap && dsc->dash_width ? true : false; ac36: f04f 0800 mov.w r8, #0 ac3a: e7cd b.n abd8 if(lv_draw_mask_get_cnt()) simple_mode = false; ac3c: 2200 movs r2, #0 ac3e: e7d0 b.n abe2 ac40: 00011519 .word 0x00011519 ac44: 00024fa4 .word 0x00024fa4 ac48: 0000bee9 .word 0x0000bee9 ac4c: 00005f69 .word 0x00005f69 ac50: 00010fdd .word 0x00010fdd ac54: 000114fd .word 0x000114fd ac58: 0001293d .word 0x0001293d ac5c: 00012bed .word 0x00012bed ac60: 0000bec5 .word 0x0000bec5 ac64: 00007751 .word 0x00007751 ac68: 0000bdc1 .word 0x0000bdc1 is_common = _lv_area_intersect(&draw_area, clip, &draw_area); ac6c: aa28 add r2, sp, #160 ; 0xa0 ac6e: a948 add r1, sp, #288 ; 0x120 ac70: 4610 mov r0, r2 ac72: 4ba1 ldr r3, [pc, #644] ; (aef8 ) ac74: 4798 blx r3 if(!is_common) return; ac76: 2800 cmp r0, #0 ac78: f000 8266 beq.w b148 draw_area.x1 -= disp_area->x1; ac7c: f9bd e0a0 ldrsh.w lr, [sp, #160] ; 0xa0 ac80: f9b7 1010 ldrsh.w r1, [r7, #16] ac84: b28b uxth r3, r1 ac86: ebae 0203 sub.w r2, lr, r3 ac8a: b292 uxth r2, r2 ac8c: fa0f fc82 sxth.w ip, r2 ac90: f8ad c0a0 strh.w ip, [sp, #160] ; 0xa0 draw_area.y1 -= disp_area->y1; ac94: f9bd 00a2 ldrsh.w r0, [sp, #162] ; 0xa2 ac98: f8b7 9012 ldrh.w r9, [r7, #18] ac9c: eba0 0509 sub.w r5, r0, r9 aca0: f8ad 50a2 strh.w r5, [sp, #162] ; 0xa2 draw_area.x2 -= disp_area->x1; aca4: f9bd 60a4 ldrsh.w r6, [sp, #164] ; 0xa4 aca8: 1af3 subs r3, r6, r3 acaa: b29b uxth r3, r3 acac: f8ad 30a4 strh.w r3, [sp, #164] ; 0xa4 draw_area.y2 -= disp_area->y1; acb0: f8bd 50a6 ldrh.w r5, [sp, #166] ; 0xa6 acb4: eba5 0509 sub.w r5, r5, r9 acb8: f8ad 50a6 strh.w r5, [sp, #166] ; 0xa6 acbc: 3301 adds r3, #1 acbe: 1a9a subs r2, r3, r2 acc0: b215 sxth r5, r2 fill_area.x1 = draw_area.x1 + disp_area->x1; acc2: f8ad e0cc strh.w lr, [sp, #204] ; 0xcc fill_area.x2 = draw_area.x2 + disp_area->x1; acc6: f8ad 60d0 strh.w r6, [sp, #208] ; 0xd0 fill_area.y1 = draw_area.y1 + disp_area->y1; acca: f8ad 00ce strh.w r0, [sp, #206] ; 0xce fill_area.y2 = fill_area.y1; acce: f8ad 00d2 strh.w r0, [sp, #210] ; 0xd2 if(dashed) { acd2: f1b8 0f00 cmp.w r8, #0 acd6: d01c beq.n ad12 dash_start = (vdb->area.x1 + draw_area.x1) % (dsc->dash_gap + dsc->dash_width); acd8: 4461 add r1, ip acda: f9b4 2006 ldrsh.w r2, [r4, #6] acde: f9b4 3004 ldrsh.w r3, [r4, #4] ace2: 441a add r2, r3 ace4: fb91 f3f2 sdiv r3, r1, r2 ace8: fb02 1113 mls r1, r2, r3, r1 acec: b20b sxth r3, r1 acee: 930a str r3, [sp, #40] ; 0x28 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); acf0: 9509 str r5, [sp, #36] ; 0x24 acf2: 4628 mov r0, r5 acf4: 4b81 ldr r3, [pc, #516] ; (aefc ) acf6: 4798 blx r3 acf8: 4682 mov sl, r0 for(h = draw_area.y1; h <= draw_area.y2; h++) { acfa: f9bd 60a2 ldrsh.w r6, [sp, #162] ; 0xa2 acfe: f9bd 30a6 ldrsh.w r3, [sp, #166] ; 0xa6 ad02: 42b3 cmp r3, r6 ad04: db59 blt.n adba _lv_memset_ff(mask_buf, draw_area_w); ad06: f8df 9210 ldr.w r9, [pc, #528] ; af18 _lv_blend_fill(clip, &fill_area, ad0a: f8df b208 ldr.w fp, [pc, #520] ; af14 ad0e: 9505 str r5, [sp, #20] ad10: e035 b.n ad7e if(dashed) { ad12: 2100 movs r1, #0 ad14: e7ea b.n acec else if(dash_cnt >= dsc->dash_gap + dsc->dash_width) { ad16: f9b4 e006 ldrsh.w lr, [r4, #6] ad1a: 4473 add r3, lr ad1c: 429a cmp r2, r3 mask_buf[i] = 0x00; ad1e: bfba itte lt ad20: f80a 1000 strblt.w r1, [sl, r0] ad24: 4613 movlt r3, r2 dash_cnt = 0; ad26: 460b movge r3, r1 for(i = 0; i < draw_area_w; i++, dash_cnt++) { ad28: 3001 adds r0, #1 ad2a: b200 sxth r0, r0 ad2c: 3301 adds r3, #1 ad2e: b21a sxth r2, r3 ad30: 4285 cmp r5, r0 ad32: dd07 ble.n ad44 if(dash_cnt <= dsc->dash_width) { ad34: f9b4 3004 ldrsh.w r3, [r4, #4] ad38: 4293 cmp r3, r2 ad3a: dbec blt.n ad16 i += diff; ad3c: 4418 add r0, r3 ad3e: 1a80 subs r0, r0, r2 ad40: b200 sxth r0, r0 ad42: e7f1 b.n ad28 ad44: 9505 str r5, [sp, #20] mask_res = LV_DRAW_MASK_RES_CHANGED; ad46: 2002 movs r0, #2 dsc->blend_mode); ad48: 7a63 ldrb r3, [r4, #9] _lv_blend_fill(clip, &fill_area, ad4a: f003 0303 and.w r3, r3, #3 ad4e: 9302 str r3, [sp, #8] ad50: 7a23 ldrb r3, [r4, #8] ad52: 9301 str r3, [sp, #4] ad54: 9000 str r0, [sp, #0] ad56: 4653 mov r3, sl ad58: 8822 ldrh r2, [r4, #0] ad5a: a933 add r1, sp, #204 ; 0xcc ad5c: a848 add r0, sp, #288 ; 0x120 ad5e: 47d8 blx fp fill_area.y1++; ad60: f8bd 30ce ldrh.w r3, [sp, #206] ; 0xce ad64: 3301 adds r3, #1 ad66: f8ad 30ce strh.w r3, [sp, #206] ; 0xce fill_area.y2++; ad6a: f8bd 30d2 ldrh.w r3, [sp, #210] ; 0xd2 ad6e: 3301 adds r3, #1 ad70: f8ad 30d2 strh.w r3, [sp, #210] ; 0xd2 for(h = draw_area.y1; h <= draw_area.y2; h++) { ad74: 3601 adds r6, #1 ad76: f9bd 30a6 ldrsh.w r3, [sp, #166] ; 0xa6 ad7a: 429e cmp r6, r3 ad7c: dc1d bgt.n adba _lv_memset_ff(mask_buf, draw_area_w); ad7e: 9909 ldr r1, [sp, #36] ; 0x24 ad80: 4650 mov r0, sl ad82: 47c8 blx r9 lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); ad84: 8a7a ldrh r2, [r7, #18] ad86: 4432 add r2, r6 ad88: 8a39 ldrh r1, [r7, #16] ad8a: f8bd 30a0 ldrh.w r3, [sp, #160] ; 0xa0 ad8e: 4419 add r1, r3 ad90: 9b05 ldr r3, [sp, #20] ad92: b212 sxth r2, r2 ad94: b209 sxth r1, r1 ad96: 4650 mov r0, sl ad98: 4d59 ldr r5, [pc, #356] ; (af00 ) ad9a: 47a8 blx r5 if(dashed) { ad9c: f1b8 0f00 cmp.w r8, #0 ada0: d0d2 beq.n ad48 if(mask_res != LV_DRAW_MASK_RES_TRANSP) { ada2: 2800 cmp r0, #0 ada4: d0d0 beq.n ad48 for(i = 0; i < draw_area_w; i++, dash_cnt++) { ada6: 9b05 ldr r3, [sp, #20] ada8: 2b00 cmp r3, #0 adaa: dd04 ble.n adb6 adac: 9a0a ldr r2, [sp, #40] ; 0x28 adae: 2000 movs r0, #0 dash_cnt = 0; adb0: 4601 mov r1, r0 adb2: 461d mov r5, r3 adb4: e7be b.n ad34 mask_res = LV_DRAW_MASK_RES_CHANGED; adb6: 2002 movs r0, #2 adb8: e7c6 b.n ad48 _lv_mem_buf_release(mask_buf); adba: 4650 mov r0, sl adbc: 4b51 ldr r3, [pc, #324] ; (af04 ) adbe: 4798 blx r3 adc0: e1c2 b.n b148 lv_opa_t opa = dsc->opa; adc2: f894 9008 ldrb.w r9, [r4, #8] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); adc6: 4b50 ldr r3, [pc, #320] ; (af08 ) adc8: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); adca: 4b50 ldr r3, [pc, #320] ; (af0c ) adcc: 4798 blx r3 adce: 4680 mov r8, r0 int32_t w = dsc->width - 1; add0: f9b4 5002 ldrsh.w r5, [r4, #2] add4: 3d01 subs r5, #1 int32_t w_half0 = w >> 1; add6: 106f asrs r7, r5, #1 int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ add8: f005 0501 and.w r5, r5, #1 addc: 443d add r5, r7 bool dashed = dsc->dash_gap && dsc->dash_width ? true : false; adde: f9b4 3006 ldrsh.w r3, [r4, #6] ade2: b12b cbz r3, adf0 ade4: f9b4 6004 ldrsh.w r6, [r4, #4] ade8: 3600 adds r6, #0 adea: bf18 it ne adec: 2601 movne r6, #1 adee: e000 b.n adf2 adf0: 2600 movs r6, #0 if(lv_draw_mask_get_cnt()) simple_mode = false; adf2: 4b47 ldr r3, [pc, #284] ; (af10 ) adf4: 4798 blx r3 adf6: b910 cbnz r0, adfe else if(dashed) simple_mode = false; adf8: f086 0201 eor.w r2, r6, #1 adfc: e000 b.n ae00 if(lv_draw_mask_get_cnt()) simple_mode = false; adfe: 2200 movs r2, #0 draw_area.x1 = point1->x - w_half1; ae00: 9906 ldr r1, [sp, #24] ae02: 880b ldrh r3, [r1, #0] ae04: 1b5d subs r5, r3, r5 ae06: f8ad 50a0 strh.w r5, [sp, #160] ; 0xa0 draw_area.x2 = point1->x + w_half0; ae0a: 441f add r7, r3 ae0c: f8ad 70a4 strh.w r7, [sp, #164] ; 0xa4 draw_area.y1 = LV_MATH_MIN(point1->y, point2->y); ae10: 9b07 ldr r3, [sp, #28] ae12: f9b3 3002 ldrsh.w r3, [r3, #2] ae16: f9b1 1002 ldrsh.w r1, [r1, #2] ae1a: 4618 mov r0, r3 ae1c: 428b cmp r3, r1 ae1e: bfa8 it ge ae20: 4608 movge r0, r1 ae22: f8ad 00a2 strh.w r0, [sp, #162] ; 0xa2 draw_area.y2 = LV_MATH_MAX(point1->y, point2->y) - 1; ae26: 428b cmp r3, r1 ae28: bfb8 it lt ae2a: 460b movlt r3, r1 ae2c: 3b01 subs r3, #1 ae2e: f8ad 30a6 strh.w r3, [sp, #166] ; 0xa6 if(simple_mode) { ae32: b172 cbz r2, ae52 dsc->blend_mode); ae34: 7a63 ldrb r3, [r4, #9] _lv_blend_fill(clip, &draw_area, ae36: f003 0303 and.w r3, r3, #3 ae3a: 9302 str r3, [sp, #8] ae3c: f8cd 9004 str.w r9, [sp, #4] ae40: 2301 movs r3, #1 ae42: 9300 str r3, [sp, #0] ae44: 2300 movs r3, #0 ae46: 8822 ldrh r2, [r4, #0] ae48: a928 add r1, sp, #160 ; 0xa0 ae4a: a848 add r0, sp, #288 ; 0x120 ae4c: 4d31 ldr r5, [pc, #196] ; (af14 ) ae4e: 47a8 blx r5 ae50: e17a b.n b148 is_common = _lv_area_intersect(&draw_area, clip, &draw_area); ae52: aa28 add r2, sp, #160 ; 0xa0 ae54: a948 add r1, sp, #288 ; 0x120 ae56: 4610 mov r0, r2 ae58: 4b27 ldr r3, [pc, #156] ; (aef8 ) ae5a: 4798 blx r3 if(!is_common) return; ae5c: 2800 cmp r0, #0 ae5e: f000 8173 beq.w b148 draw_area.x1 -= vdb->area.x1; ae62: f9bd 00a0 ldrsh.w r0, [sp, #160] ; 0xa0 ae66: f8b8 3010 ldrh.w r3, [r8, #16] ae6a: 1ac5 subs r5, r0, r3 ae6c: b2ad uxth r5, r5 ae6e: f8ad 50a0 strh.w r5, [sp, #160] ; 0xa0 draw_area.y1 -= vdb->area.y1; ae72: f9bd 20a2 ldrsh.w r2, [sp, #162] ; 0xa2 ae76: f8b8 7012 ldrh.w r7, [r8, #18] ae7a: 1bd1 subs r1, r2, r7 ae7c: f8ad 10a2 strh.w r1, [sp, #162] ; 0xa2 draw_area.x2 -= vdb->area.x1; ae80: f9bd 10a4 ldrsh.w r1, [sp, #164] ; 0xa4 ae84: 1acb subs r3, r1, r3 ae86: b29b uxth r3, r3 ae88: f8ad 30a4 strh.w r3, [sp, #164] ; 0xa4 draw_area.y2 -= vdb->area.y1; ae8c: f8bd e0a6 ldrh.w lr, [sp, #166] ; 0xa6 ae90: ebae 0707 sub.w r7, lr, r7 ae94: f8ad 70a6 strh.w r7, [sp, #166] ; 0xa6 ae98: 3301 adds r3, #1 ae9a: 1b5b subs r3, r3, r5 ae9c: b21b sxth r3, r3 ae9e: 9309 str r3, [sp, #36] ; 0x24 fill_area.x1 = draw_area.x1 + disp_area->x1; aea0: f8ad 00cc strh.w r0, [sp, #204] ; 0xcc fill_area.x2 = draw_area.x2 + disp_area->x1; aea4: f8ad 10d0 strh.w r1, [sp, #208] ; 0xd0 fill_area.y1 = draw_area.y1 + disp_area->y1; aea8: f8ad 20ce strh.w r2, [sp, #206] ; 0xce fill_area.y2 = fill_area.y1; aeac: f8ad 20d2 strh.w r2, [sp, #210] ; 0xd2 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); aeb0: 930a str r3, [sp, #40] ; 0x28 aeb2: 4618 mov r0, r3 aeb4: 4b11 ldr r3, [pc, #68] ; (aefc ) aeb6: 4798 blx r3 aeb8: 9005 str r0, [sp, #20] if(dashed) { aeba: b176 cbz r6, aeda dash_start = (vdb->area.x1 + draw_area.x1) % (dsc->dash_gap + dsc->dash_width); aebc: f9b8 2010 ldrsh.w r2, [r8, #16] aec0: f9bd 70a0 ldrsh.w r7, [sp, #160] ; 0xa0 aec4: 443a add r2, r7 aec6: f9b4 3006 ldrsh.w r3, [r4, #6] aeca: f9b4 7004 ldrsh.w r7, [r4, #4] aece: 443b add r3, r7 aed0: fb92 f7f3 sdiv r7, r2, r3 aed4: fb03 2717 mls r7, r3, r7, r2 aed8: e000 b.n aedc if(dashed) { aeda: 2700 movs r7, #0 aedc: b23f sxth r7, r7 for(h = draw_area.y1; h <= draw_area.y2; h++) { aede: f9bd 50a2 ldrsh.w r5, [sp, #162] ; 0xa2 aee2: f9bd 30a6 ldrsh.w r3, [sp, #166] ; 0xa6 aee6: 429d cmp r5, r3 aee8: dc53 bgt.n af92 _lv_memset_ff(mask_buf, draw_area_w); aeea: f8df 902c ldr.w r9, [pc, #44] ; af18 lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); aeee: f8df a010 ldr.w sl, [pc, #16] ; af00 _lv_blend_fill(clip, &fill_area, aef2: f8df b020 ldr.w fp, [pc, #32] ; af14 aef6: e02c b.n af52 aef8: 00011519 .word 0x00011519 aefc: 0001293d .word 0x0001293d af00: 0000be1d .word 0x0000be1d af04: 00012571 .word 0x00012571 af08: 00005f69 .word 0x00005f69 af0c: 00010fdd .word 0x00010fdd af10: 0000bec5 .word 0x0000bec5 af14: 00007751 .word 0x00007751 af18: 00012bed .word 0x00012bed dash_cnt ++; af1c: 3701 adds r7, #1 af1e: b23f sxth r7, r7 _lv_blend_fill(clip, &fill_area, af20: 2300 movs r3, #0 af22: 9302 str r3, [sp, #8] af24: 7a23 ldrb r3, [r4, #8] af26: 9301 str r3, [sp, #4] af28: 9000 str r0, [sp, #0] af2a: 9b05 ldr r3, [sp, #20] af2c: 8822 ldrh r2, [r4, #0] af2e: a933 add r1, sp, #204 ; 0xcc af30: a848 add r0, sp, #288 ; 0x120 af32: 47d8 blx fp fill_area.y1++; af34: f8bd 30ce ldrh.w r3, [sp, #206] ; 0xce af38: 3301 adds r3, #1 af3a: f8ad 30ce strh.w r3, [sp, #206] ; 0xce fill_area.y2++; af3e: f8bd 30d2 ldrh.w r3, [sp, #210] ; 0xd2 af42: 3301 adds r3, #1 af44: f8ad 30d2 strh.w r3, [sp, #210] ; 0xd2 for(h = draw_area.y1; h <= draw_area.y2; h++) { af48: 3501 adds r5, #1 af4a: f9bd 30a6 ldrsh.w r3, [sp, #166] ; 0xa6 af4e: 429d cmp r5, r3 af50: dc1f bgt.n af92 _lv_memset_ff(mask_buf, draw_area_w); af52: 990a ldr r1, [sp, #40] ; 0x28 af54: 9805 ldr r0, [sp, #20] af56: 47c8 blx r9 lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); af58: f8b8 2012 ldrh.w r2, [r8, #18] af5c: 442a add r2, r5 af5e: f8b8 1010 ldrh.w r1, [r8, #16] af62: f8bd 30a0 ldrh.w r3, [sp, #160] ; 0xa0 af66: 4419 add r1, r3 af68: 9b09 ldr r3, [sp, #36] ; 0x24 af6a: b212 sxth r2, r2 af6c: b209 sxth r1, r1 af6e: 9805 ldr r0, [sp, #20] af70: 47d0 blx sl if(dashed) { af72: 2e00 cmp r6, #0 af74: d0d4 beq.n af20 if(mask_res != LV_DRAW_MASK_RES_TRANSP) { af76: 2800 cmp r0, #0 af78: d0d0 beq.n af1c if(dash_cnt > dsc->dash_width) { af7a: f9b4 2004 ldrsh.w r2, [r4, #4] mask_res = LV_DRAW_MASK_RES_TRANSP; af7e: 42ba cmp r2, r7 af80: bfb8 it lt af82: 2000 movlt r0, #0 if(dash_cnt >= dsc->dash_gap + dsc->dash_width) { af84: f9b4 3006 ldrsh.w r3, [r4, #6] af88: 4413 add r3, r2 dash_cnt = 0; af8a: 429f cmp r7, r3 af8c: bfa8 it ge af8e: 2700 movge r7, #0 af90: e7c4 b.n af1c _lv_mem_buf_release(mask_buf); af92: 9805 ldr r0, [sp, #20] af94: 4b97 ldr r3, [pc, #604] ; (b1f4 ) af96: 4798 blx r3 af98: e0d6 b.n b148 lv_draw_mask_line_points_init(&mask_left_param, p1.x, p1.y + w_half1, p2.x, p2.y + w_half1, af9a: fa1f fb86 uxth.w fp, r6 af9e: f8bd 802c ldrh.w r8, [sp, #44] ; 0x2c afa2: b2a9 uxth r1, r5 afa4: eb0b 0208 add.w r2, fp, r8 afa8: 2300 movs r3, #0 afaa: 9301 str r3, [sp, #4] afac: 460f mov r7, r1 afae: 4488 add r8, r1 afb0: fa0f f388 sxth.w r3, r8 afb4: 9300 str r3, [sp, #0] afb6: 4653 mov r3, sl afb8: b212 sxth r2, r2 afba: 9905 ldr r1, [sp, #20] afbc: a812 add r0, sp, #72 ; 0x48 afbe: f8df 8238 ldr.w r8, [pc, #568] ; b1f8 afc2: 47c0 blx r8 lv_draw_mask_line_points_init(&mask_right_param, p1.x, p1.y - w_half0, p2.x, p2.y - w_half0, afc4: fa1f f389 uxth.w r3, r9 afc8: ebab 0203 sub.w r2, fp, r3 afcc: 2101 movs r1, #1 afce: 9101 str r1, [sp, #4] afd0: 1afb subs r3, r7, r3 afd2: b21b sxth r3, r3 afd4: 9300 str r3, [sp, #0] afd6: 4653 mov r3, sl afd8: b212 sxth r2, r2 afda: 9905 ldr r1, [sp, #20] afdc: a81d add r0, sp, #116 ; 0x74 afde: 47c0 blx r8 afe0: e570 b.n aac4 lv_draw_mask_line_points_init(&mask_left_param, p1.x + w_half1, p1.y, p2.x + w_half1, p2.y, afe2: f8bd b014 ldrh.w fp, [sp, #20] afe6: f8bd 802c ldrh.w r8, [sp, #44] ; 0x2c afea: fa1f f38a uxth.w r3, sl afee: 461f mov r7, r3 aff0: 4443 add r3, r8 aff2: 44d8 add r8, fp aff4: 2200 movs r2, #0 aff6: 9201 str r2, [sp, #4] aff8: 9500 str r5, [sp, #0] affa: b21b sxth r3, r3 affc: 4632 mov r2, r6 affe: fa0f f188 sxth.w r1, r8 b002: a812 add r0, sp, #72 ; 0x48 b004: f8df 81f0 ldr.w r8, [pc, #496] ; b1f8 b008: 47c0 blx r8 lv_draw_mask_line_points_init(&mask_right_param, p1.x - w_half0, p1.y, p2.x - w_half0, p2.y, b00a: fa1f f989 uxth.w r9, r9 b00e: eba7 0309 sub.w r3, r7, r9 b012: ebab 0909 sub.w r9, fp, r9 b016: 2201 movs r2, #1 b018: 9201 str r2, [sp, #4] b01a: 9500 str r5, [sp, #0] b01c: b21b sxth r3, r3 b01e: 4632 mov r2, r6 b020: fa0f f189 sxth.w r1, r9 b024: a81d add r0, sp, #116 ; 0x74 b026: 47c0 blx r8 b028: e54c b.n aac4 lv_draw_mask_line_points_init(&mask_top_param, p1.x, p1.y, p1.x - ydiff, p1.y + xdiff, LV_DRAW_MASK_LINE_SIDE_BOTTOM); b02a: f8bd 8028 ldrh.w r8, [sp, #40] ; 0x28 b02e: f8bd 9024 ldrh.w r9, [sp, #36] ; 0x24 b032: 9905 ldr r1, [sp, #20] b034: eba1 0308 sub.w r3, r1, r8 b038: 2203 movs r2, #3 b03a: 9201 str r2, [sp, #4] b03c: eb09 0206 add.w r2, r9, r6 b040: b212 sxth r2, r2 b042: 9200 str r2, [sp, #0] b044: b21b sxth r3, r3 b046: 4632 mov r2, r6 b048: a828 add r0, sp, #160 ; 0xa0 b04a: 4e6b ldr r6, [pc, #428] ; (b1f8 ) b04c: 47b0 blx r6 lv_draw_mask_line_points_init(&mask_bottom_param, p2.x, p2.y, p2.x - ydiff, p2.y + xdiff, LV_DRAW_MASK_LINE_SIDE_TOP); b04e: ebaa 0308 sub.w r3, sl, r8 b052: 2202 movs r2, #2 b054: 9201 str r2, [sp, #4] b056: eb09 0205 add.w r2, r9, r5 b05a: b212 sxth r2, r2 b05c: 9200 str r2, [sp, #0] b05e: b21b sxth r3, r3 b060: 462a mov r2, r5 b062: 4651 mov r1, sl b064: a833 add r0, sp, #204 ; 0xcc b066: 47b0 blx r6 mask_top_id = lv_draw_mask_add(&mask_top_param, NULL); b068: 2100 movs r1, #0 b06a: a828 add r0, sp, #160 ; 0xa0 b06c: 4d63 ldr r5, [pc, #396] ; (b1fc ) b06e: 47a8 blx r5 b070: 900a str r0, [sp, #40] ; 0x28 mask_bottom_id = lv_draw_mask_add(&mask_bottom_param, NULL); b072: 2100 movs r1, #0 b074: a833 add r0, sp, #204 ; 0xcc b076: 47a8 blx r5 b078: 900d str r0, [sp, #52] ; 0x34 b07a: e536 b.n aaea size_t mask_buf_size = LV_MATH_MIN(lv_area_get_size(&draw_area), LV_HOR_RES_MAX); b07c: a80e add r0, sp, #56 ; 0x38 b07e: 4b60 ldr r3, [pc, #384] ; (b200 ) b080: 4798 blx r3 b082: 4683 mov fp, r0 b084: e55a b.n ab3c _lv_memset_00(&mask_buf[mask_p], draw_area_w); b086: 4629 mov r1, r5 b088: 4640 mov r0, r8 b08a: 4b5e ldr r3, [pc, #376] ; (b204 ) b08c: 4798 blx r3 b08e: e02d b.n b0ec dsc->color, mask_buf, LV_DRAW_MASK_RES_CHANGED, dsc->opa, dsc->blend_mode); b090: 9a09 ldr r2, [sp, #36] ; 0x24 b092: 7a53 ldrb r3, [r2, #9] _lv_blend_fill(&fill_area, clip, b094: f003 0303 and.w r3, r3, #3 b098: 9302 str r3, [sp, #8] b09a: 7a13 ldrb r3, [r2, #8] b09c: 9301 str r3, [sp, #4] b09e: 2302 movs r3, #2 b0a0: 9300 str r3, [sp, #0] b0a2: 464b mov r3, r9 b0a4: 8812 ldrh r2, [r2, #0] b0a6: a948 add r1, sp, #288 ; 0x120 b0a8: a810 add r0, sp, #64 ; 0x40 b0aa: 4c57 ldr r4, [pc, #348] ; (b208 ) b0ac: 47a0 blx r4 fill_area.y1 = fill_area.y2 + 1; b0ae: f8bd 3046 ldrh.w r3, [sp, #70] ; 0x46 b0b2: 3301 adds r3, #1 b0b4: b21b sxth r3, r3 b0b6: f8ad 3042 strh.w r3, [sp, #66] ; 0x42 fill_area.y2 = fill_area.y1; b0ba: f8ad 3046 strh.w r3, [sp, #70] ; 0x46 mask_p = 0; _lv_memset_ff(mask_buf, mask_buf_size); b0be: 4659 mov r1, fp b0c0: 4648 mov r0, r9 b0c2: 4b52 ldr r3, [pc, #328] ; (b20c ) b0c4: 4798 blx r3 mask_p = 0; b0c6: 2700 movs r7, #0 for(h = draw_area.y1 + disp_area->y1; h <= draw_area.y2 + disp_area->y1; h++) { b0c8: 3601 adds r6, #1 b0ca: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e b0ce: f9ba 2012 ldrsh.w r2, [sl, #18] b0d2: 4413 add r3, r2 b0d4: 429e cmp r6, r3 b0d6: dc13 bgt.n b100 lv_draw_mask_res_t mask_res = lv_draw_mask_apply(&mask_buf[mask_p], x, h, draw_area_w); b0d8: eb09 0807 add.w r8, r9, r7 b0dc: 462b mov r3, r5 b0de: b232 sxth r2, r6 b0e0: 9905 ldr r1, [sp, #20] b0e2: 4640 mov r0, r8 b0e4: 4c4a ldr r4, [pc, #296] ; (b210 ) b0e6: 47a0 blx r4 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { b0e8: 2800 cmp r0, #0 b0ea: d0cc beq.n b086 mask_p += draw_area_w; b0ec: 442f add r7, r5 if((uint32_t) mask_p + draw_area_w < mask_buf_size) { b0ee: 19eb adds r3, r5, r7 b0f0: 459b cmp fp, r3 b0f2: d9cd bls.n b090 fill_area.y2 ++; b0f4: f8bd 3046 ldrh.w r3, [sp, #70] ; 0x46 b0f8: 3301 adds r3, #1 b0fa: f8ad 3046 strh.w r3, [sp, #70] ; 0x46 b0fe: e7e3 b.n b0c8 b100: 9c09 ldr r4, [sp, #36] ; 0x24 } } /*Flush the last part*/ if(fill_area.y1 != fill_area.y2) { b102: f9bd 3046 ldrsh.w r3, [sp, #70] ; 0x46 b106: f9bd 2042 ldrsh.w r2, [sp, #66] ; 0x42 b10a: 429a cmp r2, r3 b10c: d010 beq.n b130 fill_area.y2--; b10e: 3b01 subs r3, #1 b110: f8ad 3046 strh.w r3, [sp, #70] ; 0x46 _lv_blend_fill(&fill_area, clip, dsc->color, mask_buf, LV_DRAW_MASK_RES_CHANGED, dsc->opa, dsc->blend_mode); b114: 7a63 ldrb r3, [r4, #9] _lv_blend_fill(&fill_area, clip, b116: f003 0303 and.w r3, r3, #3 b11a: 9302 str r3, [sp, #8] b11c: 7a23 ldrb r3, [r4, #8] b11e: 9301 str r3, [sp, #4] b120: 2302 movs r3, #2 b122: 9300 str r3, [sp, #0] b124: 464b mov r3, r9 b126: 8822 ldrh r2, [r4, #0] b128: a948 add r1, sp, #288 ; 0x120 b12a: a810 add r0, sp, #64 ; 0x40 b12c: 4d36 ldr r5, [pc, #216] ; (b208 ) b12e: 47a8 blx r5 } _lv_mem_buf_release(mask_buf); b130: 4648 mov r0, r9 b132: 4b30 ldr r3, [pc, #192] ; (b1f4 ) b134: 4798 blx r3 lv_draw_mask_remove_id(mask_left_id); b136: 980b ldr r0, [sp, #44] ; 0x2c b138: 4d36 ldr r5, [pc, #216] ; (b214 ) b13a: 47a8 blx r5 lv_draw_mask_remove_id(mask_right_id); b13c: 980c ldr r0, [sp, #48] ; 0x30 b13e: 47a8 blx r5 lv_draw_mask_remove_id(mask_top_id); b140: 980a ldr r0, [sp, #40] ; 0x28 b142: 47a8 blx r5 lv_draw_mask_remove_id(mask_bottom_id); b144: 980d ldr r0, [sp, #52] ; 0x34 b146: 47a8 blx r5 if(dsc->round_end || dsc->round_start) { b148: 7a63 ldrb r3, [r4, #9] b14a: f013 0f0c tst.w r3, #12 b14e: d102 bne.n b156 } b150: b04b add sp, #300 ; 0x12c b152: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} lv_draw_rect_dsc_init(&cir_dsc); b156: a833 add r0, sp, #204 ; 0xcc b158: 4b2f ldr r3, [pc, #188] ; (b218 ) b15a: 4798 blx r3 cir_dsc.bg_color = dsc->color; b15c: 8823 ldrh r3, [r4, #0] b15e: f8ad 30ce strh.w r3, [sp, #206] ; 0xce cir_dsc.radius = LV_RADIUS_CIRCLE; b162: f647 73ff movw r3, #32767 ; 0x7fff b166: f8ad 30cc strh.w r3, [sp, #204] ; 0xcc cir_dsc.bg_opa = dsc->opa; b16a: 7a23 ldrb r3, [r4, #8] b16c: f88d 30d8 strb.w r3, [sp, #216] ; 0xd8 int32_t r = (dsc->width >> 1); b170: f9b4 3002 ldrsh.w r3, [r4, #2] b174: 105e asrs r6, r3, #1 int32_t r_corr = (dsc->width & 1) ? 0 : 1; b176: f083 0301 eor.w r3, r3, #1 b17a: f003 0501 and.w r5, r3, #1 if(dsc->round_start) { b17e: 7a63 ldrb r3, [r4, #9] b180: f013 0f04 tst.w r3, #4 b184: d11c bne.n b1c0 if(dsc->round_end) { b186: 7a63 ldrb r3, [r4, #9] b188: f013 0f08 tst.w r3, #8 b18c: d0e0 beq.n b150 cir_area.x1 = point2->x - r; b18e: 9907 ldr r1, [sp, #28] b190: 880a ldrh r2, [r1, #0] b192: b2b6 uxth r6, r6 b194: 1b93 subs r3, r2, r6 b196: f8ad 30a0 strh.w r3, [sp, #160] ; 0xa0 cir_area.y1 = point2->y - r; b19a: 8849 ldrh r1, [r1, #2] b19c: 1b8b subs r3, r1, r6 b19e: f8ad 30a2 strh.w r3, [sp, #162] ; 0xa2 cir_area.x2 = point2->x + r - r_corr; b1a2: b2ab uxth r3, r5 b1a4: 4432 add r2, r6 b1a6: 1ad2 subs r2, r2, r3 b1a8: f8ad 20a4 strh.w r2, [sp, #164] ; 0xa4 cir_area.y2 = point2->y + r - r_corr ; b1ac: 440e add r6, r1 b1ae: 1af3 subs r3, r6, r3 b1b0: f8ad 30a6 strh.w r3, [sp, #166] ; 0xa6 lv_draw_rect(&cir_area, clip, &cir_dsc); b1b4: aa33 add r2, sp, #204 ; 0xcc b1b6: 9908 ldr r1, [sp, #32] b1b8: a828 add r0, sp, #160 ; 0xa0 b1ba: 4b18 ldr r3, [pc, #96] ; (b21c ) b1bc: 4798 blx r3 b1be: e7c7 b.n b150 cir_area.x1 = point1->x - r; b1c0: 9806 ldr r0, [sp, #24] b1c2: 8802 ldrh r2, [r0, #0] b1c4: b2b3 uxth r3, r6 b1c6: 1ad1 subs r1, r2, r3 b1c8: f8ad 10a0 strh.w r1, [sp, #160] ; 0xa0 cir_area.y1 = point1->y - r; b1cc: 8840 ldrh r0, [r0, #2] b1ce: 1ac1 subs r1, r0, r3 b1d0: f8ad 10a2 strh.w r1, [sp, #162] ; 0xa2 cir_area.x2 = point1->x + r - r_corr; b1d4: b2a9 uxth r1, r5 b1d6: 441a add r2, r3 b1d8: 1a52 subs r2, r2, r1 b1da: f8ad 20a4 strh.w r2, [sp, #164] ; 0xa4 cir_area.y2 = point1->y + r - r_corr ; b1de: 4403 add r3, r0 b1e0: 1a5b subs r3, r3, r1 b1e2: f8ad 30a6 strh.w r3, [sp, #166] ; 0xa6 lv_draw_rect(&cir_area, clip, &cir_dsc); b1e6: aa33 add r2, sp, #204 ; 0xcc b1e8: 9908 ldr r1, [sp, #32] b1ea: a828 add r0, sp, #160 ; 0xa0 b1ec: 4b0b ldr r3, [pc, #44] ; (b21c ) b1ee: 4798 blx r3 b1f0: e7c9 b.n b186 b1f2: bf00 nop b1f4: 00012571 .word 0x00012571 b1f8: 0000bee9 .word 0x0000bee9 b1fc: 0000bdc1 .word 0x0000bdc1 b200: 000114fd .word 0x000114fd b204: 00012b37 .word 0x00012b37 b208: 00007751 .word 0x00007751 b20c: 00012bed .word 0x00012bed b210: 0000be1d .word 0x0000be1d b214: 0000be6d .word 0x0000be6d b218: 0000c269 .word 0x0000c269 b21c: 0000c331 .word 0x0000c331 0000b220 : **********************/ LV_ATTRIBUTE_FAST_MEM static lv_draw_mask_res_t lv_draw_mask_line(lv_opa_t * mask_buf, lv_coord_t abs_x, lv_coord_t abs_y, lv_coord_t len, lv_draw_mask_line_param_t * p) { b220: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} b224: 9c06 ldr r4, [sp, #24] /*Make to points relative to the vertex*/ abs_y -= p->origo.y; b226: 8aa5 ldrh r5, [r4, #20] b228: 1b52 subs r2, r2, r5 b22a: b212 sxth r2, r2 abs_x -= p->origo.x; b22c: 8a65 ldrh r5, [r4, #18] b22e: 1b4d subs r5, r1, r5 b230: b22d sxth r5, r5 /*Handle special cases*/ if(p->steep == 0) { b232: 6a21 ldr r1, [r4, #32] b234: 2900 cmp r1, #0 b236: d14b bne.n b2d0 /*Horizontal*/ if(p->flat) { b238: f894 1028 ldrb.w r1, [r4, #40] ; 0x28 b23c: f011 0f01 tst.w r1, #1 b240: d016 beq.n b270 /*Non sense: Can't be on the right/left of a horizontal line*/ if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT || b242: 7c23 ldrb r3, [r4, #16] b244: f003 0303 and.w r3, r3, #3 b248: 2b01 cmp r3, #1 b24a: f240 81db bls.w b604 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP && abs_y + 1 < 0) return LV_DRAW_MASK_RES_FULL_COVER; b24e: 2b02 cmp r3, #2 b250: d004 beq.n b25c else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_BOTTOM && abs_y > 0) return LV_DRAW_MASK_RES_FULL_COVER; b252: 2b03 cmp r3, #3 b254: d006 beq.n b264 else { return LV_DRAW_MASK_RES_TRANSP; b256: 2000 movs r0, #0 b258: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP && abs_y + 1 < 0) return LV_DRAW_MASK_RES_FULL_COVER; b25c: 3201 adds r2, #1 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b25e: 0fd0 lsrs r0, r2, #31 b260: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} b264: 2a00 cmp r2, #0 b266: bfd4 ite le b268: 2000 movle r0, #0 b26a: 2001 movgt r0, #1 b26c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} } } /*Vertical*/ else { /*Non sense: Can't be on the top/bottom of a vertical line*/ if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP || b270: 7c22 ldrb r2, [r4, #16] b272: f002 0203 and.w r2, r2, #3 b276: 1e91 subs r1, r2, #2 b278: b2c9 uxtb r1, r1 b27a: 2901 cmp r1, #1 b27c: f240 81c5 bls.w b60a p->cfg.side == LV_DRAW_MASK_LINE_SIDE_BOTTOM) return LV_DRAW_MASK_RES_FULL_COVER; else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT && abs_x > 0) return LV_DRAW_MASK_RES_FULL_COVER; b280: 2a01 cmp r2, #1 b282: d00c beq.n b29e else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) { b284: b9b2 cbnz r2, b2b4 if(abs_x + len < 0) return LV_DRAW_MASK_RES_FULL_COVER; b286: 18e9 adds r1, r5, r3 b288: f100 81c2 bmi.w b610 else { int32_t k = - abs_x; b28c: 426d negs r5, r5 if(k < 0) return LV_DRAW_MASK_RES_TRANSP; b28e: 2d00 cmp r5, #0 b290: f2c0 81c1 blt.w b616 if(k >= 0 && k < len) _lv_memset_00(&mask_buf[k], len - k); b294: 42ab cmp r3, r5 b296: dc07 bgt.n b2a8 return LV_DRAW_MASK_RES_CHANGED; b298: 2002 movs r0, #2 b29a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT && abs_x > 0) return LV_DRAW_MASK_RES_FULL_COVER; b29e: 2d00 cmp r5, #0 b2a0: dd08 ble.n b2b4 b2a2: 2001 movs r0, #1 b2a4: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(k >= 0 && k < len) _lv_memset_00(&mask_buf[k], len - k); b2a8: 4428 add r0, r5 b2aa: 4bcd ldr r3, [pc, #820] ; (b5e0 ) b2ac: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b2ae: 2002 movs r0, #2 b2b0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} } } else { if(abs_x + len < 0) return LV_DRAW_MASK_RES_TRANSP; b2b4: 42dd cmn r5, r3 b2b6: f100 81b1 bmi.w b61c else { int32_t k = - abs_x; b2ba: 4269 negs r1, r5 b2bc: ea21 71e1 bic.w r1, r1, r1, asr #31 if(k < 0) k = 0; if(k >= len) return LV_DRAW_MASK_RES_TRANSP; b2c0: 428b cmp r3, r1 b2c2: f340 81ae ble.w b622 else if(k >= 0 && k < len) _lv_memset_00(&mask_buf[0], k); b2c6: 4bc6 ldr r3, [pc, #792] ; (b5e0 ) b2c8: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b2ca: 2002 movs r0, #2 b2cc: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} } } } lv_draw_mask_res_t res; if(p->flat) { b2d0: f894 6028 ldrb.w r6, [r4, #40] ; 0x28 b2d4: f016 0f01 tst.w r6, #1 b2d8: d10f bne.n b2fa { int32_t k; int32_t x_at_y; /* At the beginning of the mask if the limit line is greater then the mask's y. * Then the mask is in the "wrong" area*/ x_at_y = (int32_t)((int32_t)p->xy_steep * abs_y) >> 10; b2da: 69a7 ldr r7, [r4, #24] b2dc: fb02 f107 mul.w r1, r2, r7 b2e0: 1289 asrs r1, r1, #10 if(p->xy_steep > 0) x_at_y++; b2e2: 2f00 cmp r7, #0 b2e4: bfcc ite gt b2e6: f101 0e01 addgt.w lr, r1, #1 x_at_y = (int32_t)((int32_t)p->xy_steep * abs_y) >> 10; b2ea: 468e movle lr, r1 if(x_at_y < abs_x) { b2ec: 4575 cmp r5, lr b2ee: f340 8098 ble.w b422 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b2f2: f3c6 0040 ubfx r0, r6, #1, #1 b2f6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} y_at_x = (int32_t)((int32_t)p->yx_steep * abs_x) >> 10; b2fa: 69e1 ldr r1, [r4, #28] b2fc: fb05 f701 mul.w r7, r5, r1 b300: 12bf asrs r7, r7, #10 if(p->yx_steep > 0) { b302: 2900 cmp r1, #0 b304: dd06 ble.n b314 if(y_at_x > abs_y) { b306: 4297 cmp r7, r2 b308: f340 81b8 ble.w b67c p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b30c: f3c6 0040 ubfx r0, r6, #1, #1 b310: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(y_at_x < abs_y) { b314: 4297 cmp r7, r2 b316: f280 81ed bge.w b6f4 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b31a: f3c6 0040 ubfx r0, r6, #1, #1 b31e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(p->inv) { b322: f086 0002 eor.w r0, r6, #2 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b326: f3c0 0040 ubfx r0, r0, #1, #1 b32a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(p->inv) { b32e: f086 0002 eor.w r0, r6, #2 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b332: f3c0 0040 ubfx r0, r0, #1, #1 b336: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} LV_ATTRIBUTE_FAST_MEM static inline lv_opa_t mask_mix(lv_opa_t mask_act, lv_opa_t mask_new) { if(mask_new >= LV_OPA_MAX) return mask_act; if(mask_new <= LV_OPA_MIN) return 0; b33a: 2500 movs r5, #0 b33c: e1d4 b.n b6e8 b33e: 46f4 mov ip, lr mask_buf[k] = mask_mix(mask_buf[k], m); b340: f888 c000 strb.w ip, [r8] px_h -= p->spx; b344: 6a63 ldr r3, [r4, #36] ; 0x24 b346: 1ad2 subs r2, r2, r3 k++; b348: 3501 adds r5, #1 b34a: 3601 adds r6, #1 if(k >= len) break; b34c: 42bd cmp r5, r7 b34e: da49 bge.n b3e4 while(px_h > p->spx) { b350: 6a63 ldr r3, [r4, #36] ; 0x24 b352: 429a cmp r2, r3 b354: dd1d ble.n b392 if(k >= 0 && k < len) { b356: 2d00 cmp r5, #0 b358: dbf4 blt.n b344 b35a: 42bd cmp r5, r7 b35c: daf2 bge.n b344 m = px_h - (p->spx >> 1); b35e: eba2 0363 sub.w r3, r2, r3, asr #1 b362: b2db uxtb r3, r3 if(p->inv) m = 255 - m; b364: f894 c028 ldrb.w ip, [r4, #40] ; 0x28 b368: f01c 0f02 tst.w ip, #2 b36c: bf1c itt ne b36e: 43db mvnne r3, r3 b370: b2db uxtbne r3, r3 b372: 46b0 mov r8, r6 mask_buf[k] = mask_mix(mask_buf[k], m); b374: f896 c000 ldrb.w ip, [r6] if(mask_new >= LV_OPA_MAX) return mask_act; b378: 2bf9 cmp r3, #249 ; 0xf9 b37a: d8e1 bhi.n b340 if(mask_new <= LV_OPA_MIN) return 0; b37c: 2b05 cmp r3, #5 b37e: d9de bls.n b33e return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b380: fb03 f30c mul.w r3, r3, ip b384: eb03 2c03 add.w ip, r3, r3, lsl #8 b388: eb03 13cc add.w r3, r3, ip, lsl #7 b38c: f3c3 5cc7 ubfx ip, r3, #23, #8 b390: e7d6 b.n b340 if(k < len && k >= 0) { b392: 42bd cmp r5, r7 b394: da26 bge.n b3e4 b396: 2d00 cmp r5, #0 b398: db24 blt.n b3e4 int32_t x_inters = (px_h * p->xy_steep) >> 10; b39a: 69a3 ldr r3, [r4, #24] b39c: fb03 f302 mul.w r3, r3, r2 b3a0: 129b asrs r3, r3, #10 m = (x_inters * px_h) >> 9; b3a2: fb02 f203 mul.w r2, r2, r3 b3a6: f3c2 2247 ubfx r2, r2, #9, #8 if(p->yx_steep < 0) m = 255 - m; b3aa: 69e3 ldr r3, [r4, #28] b3ac: 2b00 cmp r3, #0 b3ae: bfbc itt lt b3b0: 43d2 mvnlt r2, r2 b3b2: b2d2 uxtblt r2, r2 if(p->inv) m = 255 - m; b3b4: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 b3b8: f013 0f02 tst.w r3, #2 b3bc: bf1c itt ne b3be: 43d2 mvnne r2, r2 b3c0: b2d2 uxtbne r2, r2 mask_buf[k] = mask_mix(mask_buf[k], m); b3c2: 1946 adds r6, r0, r5 b3c4: 5d43 ldrb r3, [r0, r5] if(mask_new >= LV_OPA_MAX) return mask_act; b3c6: 2af9 cmp r2, #249 ; 0xf9 b3c8: d80b bhi.n b3e2 if(mask_new <= LV_OPA_MIN) return 0; b3ca: 2a05 cmp r2, #5 b3cc: d908 bls.n b3e0 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b3ce: fb02 f203 mul.w r2, r2, r3 b3d2: eb02 2302 add.w r3, r2, r2, lsl #8 b3d6: eb02 12c3 add.w r2, r2, r3, lsl #7 b3da: f3c2 53c7 ubfx r3, r2, #23, #8 b3de: e000 b.n b3e2 if(mask_new <= LV_OPA_MIN) return 0; b3e0: 2300 movs r3, #0 mask_buf[k] = mask_mix(mask_buf[k], m); b3e2: 7033 strb r3, [r6, #0] if(p->inv) { b3e4: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 b3e8: f013 0f02 tst.w r3, #2 b3ec: d00a beq.n b404 if(k > len) { b3ee: 428f cmp r7, r1 b3f0: f2c0 811a blt.w b628 if(k >= 0) { b3f4: 2900 cmp r1, #0 b3f6: f2c0 811a blt.w b62e _lv_memset_00(&mask_buf[0], k); b3fa: 4b79 ldr r3, [pc, #484] ; (b5e0 ) b3fc: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b3fe: 2002 movs r0, #2 b400: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(k < 0) { b404: 3501 adds r5, #1 b406: f100 8115 bmi.w b634 if(k <= len) { b40a: 42bd cmp r5, r7 b40c: dd02 ble.n b414 return LV_DRAW_MASK_RES_CHANGED; b40e: 2002 movs r0, #2 b410: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} _lv_memset_00(&mask_buf[k], len - k); b414: 1b79 subs r1, r7, r5 b416: 4428 add r0, r5 b418: 4b71 ldr r3, [pc, #452] ; (b5e0 ) b41a: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b41c: 2002 movs r0, #2 b41e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(x_at_y > abs_x + len) { b422: eb05 0e03 add.w lr, r5, r3 b426: 4571 cmp r1, lr b428: dd05 ble.n b436 if(p->inv) { b42a: f086 0002 eor.w r0, r6, #2 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b42e: f3c0 0040 ubfx r0, r0, #1, #1 b432: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} int32_t xs = ((abs_y << 8) * p->xy_steep) >> 10; b436: 0211 lsls r1, r2, #8 b438: fb07 f101 mul.w r1, r7, r1 int32_t xsi = xs >> 8; b43c: ea4f 48a1 mov.w r8, r1, asr #18 int32_t xsf = xs & 0xFF; b440: f3c1 2187 ubfx r1, r1, #10, #8 int32_t xe = (((abs_y + 1) << 8) * p->xy_steep) >> 10; b444: 3201 adds r2, #1 b446: 0212 lsls r2, r2, #8 b448: fb07 f202 mul.w r2, r7, r2 int32_t xei = xe >> 8; b44c: ea4f 4ca2 mov.w ip, r2, asr #18 k = xsi - abs_x; b450: eba8 0e05 sub.w lr, r8, r5 if(xsi != xei && (p->xy_steep < 0 && xsf == 0)) { b454: 45e0 cmp r8, ip b456: d063 beq.n b520 b458: 2f00 cmp r7, #0 b45a: db5b blt.n b514 y_inters = ((255 - xsf) * p->yx_steep) >> 10; b45c: f1c1 01ff rsb r1, r1, #255 ; 0xff b460: 69e2 ldr r2, [r4, #28] b462: fb02 f201 mul.w r2, r2, r1 b466: 1295 asrs r5, r2, #10 if(k >= 0 && k < len) { b468: f1be 0f00 cmp.w lr, #0 b46c: db1c blt.n b4a8 b46e: 4573 cmp r3, lr b470: dd1a ble.n b4a8 m = 255 - ((y_inters * (255 - xsf)) >> 9); b472: fb05 f101 mul.w r1, r5, r1 b476: f3c1 2247 ubfx r2, r1, #9, #8 if(p->inv) m = 255 - m; b47a: f016 0f02 tst.w r6, #2 m = 255 - ((y_inters * (255 - xsf)) >> 9); b47e: bf04 itt eq b480: 43d2 mvneq r2, r2 b482: b2d2 uxtbeq r2, r2 mask_buf[k] = mask_mix(mask_buf[k], m); b484: eb00 060e add.w r6, r0, lr b488: f810 100e ldrb.w r1, [r0, lr] if(mask_new >= LV_OPA_MAX) return mask_act; b48c: 2af9 cmp r2, #249 ; 0xf9 b48e: d80a bhi.n b4a6 if(mask_new <= LV_OPA_MIN) return 0; b490: 2a05 cmp r2, #5 b492: f240 80a1 bls.w b5d8 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b496: fb02 f201 mul.w r2, r2, r1 b49a: eb02 2102 add.w r1, r2, r2, lsl #8 b49e: eb02 12c1 add.w r2, r2, r1, lsl #7 b4a2: f3c2 51c7 ubfx r1, r2, #23, #8 mask_buf[k] = mask_mix(mask_buf[k], m); b4a6: 7031 strb r1, [r6, #0] if(k >= 0 && k < len) { b4a8: f11e 0101 adds.w r1, lr, #1 b4ac: d420 bmi.n b4f0 b4ae: 428b cmp r3, r1 b4b0: dd1e ble.n b4f0 int32_t x_inters = ((255 - y_inters) * p->xy_steep) >> 10; b4b2: f1c5 02ff rsb r2, r5, #255 ; 0xff b4b6: 69a5 ldr r5, [r4, #24] b4b8: fb05 f502 mul.w r5, r5, r2 b4bc: 12ad asrs r5, r5, #10 m = ((255 - y_inters) * x_inters) >> 9; b4be: fb02 f205 mul.w r2, r2, r5 b4c2: f3c2 2247 ubfx r2, r2, #9, #8 if(p->inv) m = 255 - m; b4c6: f894 5028 ldrb.w r5, [r4, #40] ; 0x28 b4ca: f015 0f02 tst.w r5, #2 b4ce: bf1c itt ne b4d0: 43d2 mvnne r2, r2 b4d2: b2d2 uxtbne r2, r2 mask_buf[k] = mask_mix(mask_buf[k], m); b4d4: 5c45 ldrb r5, [r0, r1] if(mask_new >= LV_OPA_MAX) return mask_act; b4d6: 2af9 cmp r2, #249 ; 0xf9 b4d8: d809 bhi.n b4ee if(mask_new <= LV_OPA_MIN) return 0; b4da: 2a05 cmp r2, #5 b4dc: d97e bls.n b5dc return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b4de: fb02 f205 mul.w r2, r2, r5 b4e2: eb02 2502 add.w r5, r2, r2, lsl #8 b4e6: eb02 12c5 add.w r2, r2, r5, lsl #7 b4ea: f3c2 55c7 ubfx r5, r2, #23, #8 mask_buf[k] = mask_mix(mask_buf[k], m); b4ee: 5445 strb r5, [r0, r1] if(p->inv) { b4f0: f894 2028 ldrb.w r2, [r4, #40] ; 0x28 b4f4: f012 0f02 tst.w r2, #2 b4f8: d074 beq.n b5e4 if(k > len) return LV_DRAW_MASK_RES_TRANSP; b4fa: 4573 cmp r3, lr b4fc: f2c0 80b2 blt.w b664 if(k >= 0) _lv_memset_00(&mask_buf[0], k); b500: f1be 0f00 cmp.w lr, #0 b504: f2c0 80b1 blt.w b66a b508: 4671 mov r1, lr b50a: 4b35 ldr r3, [pc, #212] ; (b5e0 ) b50c: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b50e: 2002 movs r0, #2 b510: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(xsi != xei && (p->xy_steep < 0 && xsf == 0)) { b514: 2900 cmp r1, #0 b516: f040 8100 bne.w b71a k--; b51a: f10e 3eff add.w lr, lr, #4294967295 xsf = 0xFF; b51e: 21ff movs r1, #255 ; 0xff if(k >= 0 && k < len) { b520: f1be 0f00 cmp.w lr, #0 b524: db1e blt.n b564 b526: 4573 cmp r3, lr b528: dd1c ble.n b564 int32_t xef = xe & 0xFF; b52a: f3c2 2287 ubfx r2, r2, #10, #8 m = (xsf + xef) >> 1; b52e: 440a add r2, r1 b530: f3c2 0247 ubfx r2, r2, #1, #8 if(p->inv) m = 255 - m; b534: f016 0f02 tst.w r6, #2 b538: bf1c itt ne b53a: 43d2 mvnne r2, r2 b53c: b2d2 uxtbne r2, r2 mask_buf[k] = mask_mix(mask_buf[k], m); b53e: eb00 060e add.w r6, r0, lr b542: f810 100e ldrb.w r1, [r0, lr] if(mask_new >= LV_OPA_MAX) return mask_act; b546: 2af9 cmp r2, #249 ; 0xf9 b548: d80b bhi.n b562 if(mask_new <= LV_OPA_MIN) return 0; b54a: 2a05 cmp r2, #5 b54c: d908 bls.n b560 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b54e: fb02 f201 mul.w r2, r2, r1 b552: eb02 2102 add.w r1, r2, r2, lsl #8 b556: eb02 12c1 add.w r2, r2, r1, lsl #7 b55a: f3c2 51c7 ubfx r1, r2, #23, #8 b55e: e000 b.n b562 if(mask_new <= LV_OPA_MIN) return 0; b560: 2100 movs r1, #0 mask_buf[k] = mask_mix(mask_buf[k], m); b562: 7031 strb r1, [r6, #0] if(p->inv) { b564: f894 2028 ldrb.w r2, [r4, #40] ; 0x28 b568: f012 0f02 tst.w r2, #2 b56c: d00a beq.n b584 k = xsi - abs_x; b56e: ebac 0105 sub.w r1, ip, r5 if(k >= len) { b572: 428b cmp r3, r1 b574: dd61 ble.n b63a if(k >= 0) _lv_memset_00(&mask_buf[0], k); b576: 2900 cmp r1, #0 b578: db62 blt.n b640 b57a: 4b19 ldr r3, [pc, #100] ; (b5e0 ) b57c: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b57e: 2002 movs r0, #2 b580: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} k++; b584: f10e 0201 add.w r2, lr, #1 b588: 429a cmp r2, r3 b58a: bfa8 it ge b58c: 461a movge r2, r3 if(k == 0) return LV_DRAW_MASK_RES_TRANSP; b58e: 2a00 cmp r2, #0 b590: d059 beq.n b646 else if(k > 0) _lv_memset_00(&mask_buf[k], len - k); b592: 2a00 cmp r2, #0 b594: dd5a ble.n b64c b596: 1a99 subs r1, r3, r2 b598: 4410 add r0, r2 b59a: 4b11 ldr r3, [pc, #68] ; (b5e0 ) b59c: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b59e: 2002 movs r0, #2 b5a0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(mask_new <= LV_OPA_MIN) return 0; b5a4: 2500 movs r5, #0 b5a6: e0dc b.n b762 b5a8: 2500 movs r5, #0 b5aa: e100 b.n b7ae else if(k > 0) _lv_memset_00(&mask_buf[0], k); b5ac: 2900 cmp r1, #0 b5ae: dd50 ble.n b652 b5b0: 4b0b ldr r3, [pc, #44] ; (b5e0 ) b5b2: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b5b4: 2002 movs r0, #2 b5b6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} k += 2; b5ba: f10e 0e01 add.w lr, lr, #1 if(k > len) return LV_DRAW_MASK_RES_FULL_COVER; b5be: 4573 cmp r3, lr b5c0: db4a blt.n b658 if(k >= 0) _lv_memset_00(&mask_buf[k], len - k); b5c2: f1be 0f00 cmp.w lr, #0 b5c6: db4a blt.n b65e b5c8: eba3 010e sub.w r1, r3, lr b5cc: 4470 add r0, lr b5ce: 4b04 ldr r3, [pc, #16] ; (b5e0 ) b5d0: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b5d2: 2002 movs r0, #2 b5d4: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(mask_new <= LV_OPA_MIN) return 0; b5d8: 2100 movs r1, #0 b5da: e764 b.n b4a6 b5dc: 2500 movs r5, #0 b5de: e786 b.n b4ee b5e0: 00012b37 .word 0x00012b37 k++; b5e4: f10e 0202 add.w r2, lr, #2 b5e8: 429a cmp r2, r3 b5ea: bfa8 it ge b5ec: 461a movge r2, r3 if(k == 0) return LV_DRAW_MASK_RES_TRANSP; b5ee: 2a00 cmp r2, #0 b5f0: d03e beq.n b670 else if(k > 0) _lv_memset_00(&mask_buf[k], len - k); b5f2: 2a00 cmp r2, #0 b5f4: dd3f ble.n b676 b5f6: 1a99 subs r1, r3, r2 b5f8: 4410 add r0, r2 b5fa: 4b73 ldr r3, [pc, #460] ; (b7c8 ) b5fc: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b5fe: 2002 movs r0, #2 b600: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b604: 2001 movs r0, #1 b606: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} p->cfg.side == LV_DRAW_MASK_LINE_SIDE_BOTTOM) return LV_DRAW_MASK_RES_FULL_COVER; b60a: 2001 movs r0, #1 b60c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(abs_x + len < 0) return LV_DRAW_MASK_RES_FULL_COVER; b610: 2001 movs r0, #1 b612: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(k < 0) return LV_DRAW_MASK_RES_TRANSP; b616: 2000 movs r0, #0 b618: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(abs_x + len < 0) return LV_DRAW_MASK_RES_TRANSP; b61c: 2000 movs r0, #0 b61e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(k >= len) return LV_DRAW_MASK_RES_TRANSP; b622: 2000 movs r0, #0 b624: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} return LV_DRAW_MASK_RES_TRANSP; b628: 2000 movs r0, #0 b62a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} return LV_DRAW_MASK_RES_CHANGED; b62e: 2002 movs r0, #2 b630: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} return LV_DRAW_MASK_RES_TRANSP; b634: 2000 movs r0, #0 b636: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} return LV_DRAW_MASK_RES_TRANSP; b63a: 2000 movs r0, #0 b63c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} return LV_DRAW_MASK_RES_CHANGED; b640: 2002 movs r0, #2 b642: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(k == 0) return LV_DRAW_MASK_RES_TRANSP; b646: 2000 movs r0, #0 b648: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} return LV_DRAW_MASK_RES_CHANGED; b64c: 2002 movs r0, #2 b64e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} b652: 2002 movs r0, #2 b654: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(k > len) return LV_DRAW_MASK_RES_FULL_COVER; b658: 2001 movs r0, #1 b65a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} return LV_DRAW_MASK_RES_CHANGED; b65e: 2002 movs r0, #2 b660: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(k > len) return LV_DRAW_MASK_RES_TRANSP; b664: 2000 movs r0, #0 b666: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} return LV_DRAW_MASK_RES_CHANGED; b66a: 2002 movs r0, #2 b66c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(k == 0) return LV_DRAW_MASK_RES_TRANSP; b670: 2000 movs r0, #0 b672: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} return LV_DRAW_MASK_RES_CHANGED; b676: 2002 movs r0, #2 b678: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} y_at_x = (int32_t)((int32_t)p->yx_steep * (abs_x + len)) >> 10; b67c: 461f mov r7, r3 b67e: 442b add r3, r5 b680: fb01 f103 mul.w r1, r1, r3 if(y_at_x < abs_y) { b684: ebb2 2fa1 cmp.w r2, r1, asr #10 b688: f73f ae4b bgt.w b322 if(p->yx_steep > 0) xe = ((abs_y << 8) * p->xy_steep) >> 10; b68c: 0212 lsls r2, r2, #8 b68e: 69a3 ldr r3, [r4, #24] b690: fb03 f302 mul.w r3, r3, r2 b694: 129b asrs r3, r3, #10 int32_t xei = xe >> 8; b696: 1219 asrs r1, r3, #8 if(xef == 0) px_h = 255; b698: f013 03ff ands.w r3, r3, #255 ; 0xff b69c: d039 beq.n b712 else px_h = 255 - (((255 - xef) * p->spx) >> 8); b69e: f1c3 03ff rsb r3, r3, #255 ; 0xff b6a2: 6a62 ldr r2, [r4, #36] ; 0x24 b6a4: fb02 f203 mul.w r2, r2, r3 b6a8: ea4f 2e22 mov.w lr, r2, asr #8 b6ac: f1ce 02ff rsb r2, lr, #255 ; 0xff if(k >= 0 && k < len) { b6b0: 1b49 subs r1, r1, r5 b6b2: d41a bmi.n b6ea b6b4: 42b9 cmp r1, r7 b6b6: da18 bge.n b6ea m = 255 - (((255 - xef) * (255 - px_h)) >> 9); b6b8: fb0e f303 mul.w r3, lr, r3 b6bc: f3c3 2347 ubfx r3, r3, #9, #8 if(p->inv) m = 255 - m; b6c0: f016 0f02 tst.w r6, #2 m = 255 - (((255 - xef) * (255 - px_h)) >> 9); b6c4: bf04 itt eq b6c6: 43db mvneq r3, r3 b6c8: b2db uxtbeq r3, r3 mask_buf[k] = mask_mix(mask_buf[k], m); b6ca: 1846 adds r6, r0, r1 b6cc: 5c45 ldrb r5, [r0, r1] if(mask_new >= LV_OPA_MAX) return mask_act; b6ce: 2bf9 cmp r3, #249 ; 0xf9 b6d0: d80a bhi.n b6e8 if(mask_new <= LV_OPA_MIN) return 0; b6d2: 2b05 cmp r3, #5 b6d4: f67f ae31 bls.w b33a return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b6d8: fb03 f305 mul.w r3, r3, r5 b6dc: eb03 2503 add.w r5, r3, r3, lsl #8 b6e0: eb03 13c5 add.w r3, r3, r5, lsl #7 b6e4: f3c3 55c7 ubfx r5, r3, #23, #8 mask_buf[k] = mask_mix(mask_buf[k], m); b6e8: 7035 strb r5, [r6, #0] k++; b6ea: 1c4d adds r5, r1, #1 b6ec: 1946 adds r6, r0, r5 if(mask_new <= LV_OPA_MIN) return 0; b6ee: f04f 0e00 mov.w lr, #0 b6f2: e62d b.n b350 y_at_x = (int32_t)((int32_t)p->yx_steep * (abs_x + len)) >> 10; b6f4: 461f mov r7, r3 b6f6: 442b add r3, r5 b6f8: fb01 f103 mul.w r1, r1, r3 if(y_at_x > abs_y) { b6fc: ebb2 2fa1 cmp.w r2, r1, asr #10 b700: f6ff ae15 blt.w b32e else xe = (((abs_y + 1) << 8) * p->xy_steep) >> 10; b704: 3201 adds r2, #1 b706: 0212 lsls r2, r2, #8 b708: 69a3 ldr r3, [r4, #24] b70a: fb03 f302 mul.w r3, r3, r2 b70e: 129b asrs r3, r3, #10 b710: e7c1 b.n b696 int32_t k = xei - abs_x; b712: 1b4d subs r5, r1, r5 b714: 4629 mov r1, r5 if(xef == 0) px_h = 255; b716: 22ff movs r2, #255 ; 0xff b718: e7e8 b.n b6ec y_inters = (xsf * (-p->yx_steep)) >> 10; b71a: 69e2 ldr r2, [r4, #28] b71c: 4252 negs r2, r2 b71e: fb01 f202 mul.w r2, r1, r2 b722: 1292 asrs r2, r2, #10 if(k >= 0 && k < len) { b724: f1be 0f00 cmp.w lr, #0 b728: db1c blt.n b764 b72a: 4573 cmp r3, lr b72c: dd1a ble.n b764 m = (y_inters * xsf) >> 9; b72e: fb02 f101 mul.w r1, r2, r1 b732: f3c1 2147 ubfx r1, r1, #9, #8 if(p->inv) m = 255 - m; b736: f016 0f02 tst.w r6, #2 b73a: bf1c itt ne b73c: 43c9 mvnne r1, r1 b73e: b2c9 uxtbne r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); b740: eb00 060e add.w r6, r0, lr b744: f810 500e ldrb.w r5, [r0, lr] if(mask_new >= LV_OPA_MAX) return mask_act; b748: 29f9 cmp r1, #249 ; 0xf9 b74a: d80a bhi.n b762 if(mask_new <= LV_OPA_MIN) return 0; b74c: 2905 cmp r1, #5 b74e: f67f af29 bls.w b5a4 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b752: fb01 f105 mul.w r1, r1, r5 b756: eb01 2501 add.w r5, r1, r1, lsl #8 b75a: eb01 11c5 add.w r1, r1, r5, lsl #7 b75e: f3c1 55c7 ubfx r5, r1, #23, #8 mask_buf[k] = mask_mix(mask_buf[k], m); b762: 7035 strb r5, [r6, #0] if(k >= 0 && k < len) { b764: f1be 0101 subs.w r1, lr, #1 b768: d422 bmi.n b7b0 b76a: 428b cmp r3, r1 b76c: dd20 ble.n b7b0 int32_t x_inters = ((255 - y_inters) * (-p->xy_steep)) >> 10; b76e: f1c2 02ff rsb r2, r2, #255 ; 0xff b772: 69a5 ldr r5, [r4, #24] b774: 426d negs r5, r5 b776: fb02 f505 mul.w r5, r2, r5 b77a: 12ad asrs r5, r5, #10 m = 255 - (((255 - y_inters) * x_inters) >> 9); b77c: fb02 f205 mul.w r2, r2, r5 b780: f3c2 2247 ubfx r2, r2, #9, #8 if(p->inv) m = 255 - m; b784: f894 5028 ldrb.w r5, [r4, #40] ; 0x28 b788: f015 0f02 tst.w r5, #2 m = 255 - (((255 - y_inters) * x_inters) >> 9); b78c: bf04 itt eq b78e: 43d2 mvneq r2, r2 b790: b2d2 uxtbeq r2, r2 mask_buf[k] = mask_mix(mask_buf[k], m); b792: 5c45 ldrb r5, [r0, r1] if(mask_new >= LV_OPA_MAX) return mask_act; b794: 2af9 cmp r2, #249 ; 0xf9 b796: d80a bhi.n b7ae if(mask_new <= LV_OPA_MIN) return 0; b798: 2a05 cmp r2, #5 b79a: f67f af05 bls.w b5a8 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b79e: fb02 f205 mul.w r2, r2, r5 b7a2: eb02 2502 add.w r5, r2, r2, lsl #8 b7a6: eb02 12c5 add.w r2, r2, r5, lsl #7 b7aa: f3c2 55c7 ubfx r5, r2, #23, #8 mask_buf[k] = mask_mix(mask_buf[k], m); b7ae: 5445 strb r5, [r0, r1] if(p->inv) { b7b0: f894 2028 ldrb.w r2, [r4, #40] ; 0x28 b7b4: f012 0f02 tst.w r2, #2 b7b8: f43f aeff beq.w b5ba if(k > len) k = len; b7bc: 428b cmp r3, r1 b7be: f6bf aef5 bge.w b5ac return LV_DRAW_MASK_RES_CHANGED; b7c2: 2002 movs r0, #2 b7c4: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} b7c8: 00012b37 .word 0x00012b37 0000b7cc : { b7cc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} b7d0: b08d sub sp, #52 ; 0x34 b7d2: 9d16 ldr r5, [sp, #88] ; 0x58 bool outer = p->cfg.outer; b7d4: 7cae ldrb r6, [r5, #18] b7d6: f006 0601 and.w r6, r6, #1 int32_t radius = p->cfg.radius; b7da: f9b5 8010 ldrsh.w r8, [r5, #16] b7de: 1dec adds r4, r5, #7 b7e0: f105 090f add.w r9, r5, #15 uint8_t * d8 = (uint8_t *)dst; b7e4: f10d 0e28 add.w lr, sp, #40 ; 0x28 *d8 = *s8; b7e8: f814 7f01 ldrb.w r7, [r4, #1]! b7ec: f80e 7b01 strb.w r7, [lr], #1 while(len) { b7f0: 454c cmp r4, r9 b7f2: d1f9 bne.n b7e8 if(outer == false) { b7f4: 2e00 cmp r6, #0 b7f6: d13d bne.n b874 if(abs_y < rect.y1 || abs_y > rect.y2) { b7f8: f9bd 402a ldrsh.w r4, [sp, #42] ; 0x2a b7fc: 4294 cmp r4, r2 b7fe: f300 822b bgt.w bc58 b802: f9bd 402e ldrsh.w r4, [sp, #46] ; 0x2e b806: 4294 cmp r4, r2 b808: f2c0 822a blt.w bc60 b80c: 469b mov fp, r3 b80e: 460f mov r7, r1 b810: 9002 str r0, [sp, #8] if((abs_x >= rect.x1 + radius && abs_x + len <= rect.x2 - radius) || b812: f9bd 9028 ldrsh.w r9, [sp, #40] ; 0x28 b816: eb08 0309 add.w r3, r8, r9 b81a: 4299 cmp r1, r3 b81c: db06 blt.n b82c b81e: 4459 add r1, fp b820: f9bd 302c ldrsh.w r3, [sp, #44] ; 0x2c b824: eba3 0308 sub.w r3, r3, r8 b828: 4299 cmp r1, r3 b82a: dd0b ble.n b844 (abs_y >= rect.y1 + radius && abs_y <= rect.y2 - radius)) { b82c: f9bd 302a ldrsh.w r3, [sp, #42] ; 0x2a b830: eb03 0108 add.w r1, r3, r8 if((abs_x >= rect.x1 + radius && abs_x + len <= rect.x2 - radius) || b834: 428a cmp r2, r1 b836: db53 blt.n b8e0 (abs_y >= rect.y1 + radius && abs_y <= rect.y2 - radius)) { b838: f9bd 102e ldrsh.w r1, [sp, #46] ; 0x2e b83c: eba1 0108 sub.w r1, r1, r8 b840: 428a cmp r2, r1 b842: dc4d bgt.n b8e0 if(outer == false) { b844: bb86 cbnz r6, b8a8 int32_t last = rect.x1 - abs_x; b846: eba9 0407 sub.w r4, r9, r7 if(last > len) return LV_DRAW_MASK_RES_TRANSP; b84a: 455c cmp r4, fp b84c: f300 820c bgt.w bc68 if(last >= 0) { b850: 2c00 cmp r4, #0 b852: db03 blt.n b85c _lv_memset_00(&mask_buf[0], last); b854: 4621 mov r1, r4 b856: 9802 ldr r0, [sp, #8] b858: 4b9f ldr r3, [pc, #636] ; (bad8 ) b85a: 4798 blx r3 int32_t first = rect.x2 - abs_x + 1; b85c: f9bd 002c ldrsh.w r0, [sp, #44] ; 0x2c b860: 1bc0 subs r0, r0, r7 b862: 3001 adds r0, #1 if(first <= 0) return LV_DRAW_MASK_RES_TRANSP; b864: 2800 cmp r0, #0 b866: f340 8201 ble.w bc6c else if(first < len) { b86a: 4583 cmp fp, r0 b86c: dc0d bgt.n b88a if(last == 0 && first == len) return LV_DRAW_MASK_RES_FULL_COVER; b86e: b1bc cbz r4, b8a0 else return LV_DRAW_MASK_RES_CHANGED; b870: 2002 movs r0, #2 b872: e1f2 b.n bc5a if(abs_y < rect.y1 || abs_y > rect.y2) { b874: f9bd 402a ldrsh.w r4, [sp, #42] ; 0x2a b878: 4294 cmp r4, r2 b87a: f300 81f3 bgt.w bc64 b87e: f9bd 402e ldrsh.w r4, [sp, #46] ; 0x2e b882: 4294 cmp r4, r2 b884: dac2 bge.n b80c return LV_DRAW_MASK_RES_FULL_COVER; b886: 2001 movs r0, #1 b888: e1e7 b.n bc5a _lv_memset_00(&mask_buf[first], len - first); b88a: ebab 0100 sub.w r1, fp, r0 b88e: 9b02 ldr r3, [sp, #8] b890: 4403 add r3, r0 b892: 4618 mov r0, r3 b894: 4b90 ldr r3, [pc, #576] ; (bad8 ) b896: 4798 blx r3 if(last == 0 && first == len) return LV_DRAW_MASK_RES_FULL_COVER; b898: 2c00 cmp r4, #0 b89a: d1e9 bne.n b870 else return LV_DRAW_MASK_RES_CHANGED; b89c: 2002 movs r0, #2 b89e: e1dc b.n bc5a if(last == 0 && first == len) return LV_DRAW_MASK_RES_FULL_COVER; b8a0: 4583 cmp fp, r0 b8a2: d1e5 bne.n b870 b8a4: 2001 movs r0, #1 b8a6: e1d8 b.n bc5a int32_t first = rect.x1 - abs_x; b8a8: eba9 0007 sub.w r0, r9, r7 b8ac: ea20 70e0 bic.w r0, r0, r0, asr #31 if(first <= len) { b8b0: 4558 cmp r0, fp b8b2: dd01 ble.n b8b8 return LV_DRAW_MASK_RES_CHANGED; b8b4: 2002 movs r0, #2 b8b6: e1d0 b.n bc5a int32_t last = rect.x2 - abs_x - first + 1; b8b8: f9bd 102c ldrsh.w r1, [sp, #44] ; 0x2c b8bc: 1bc9 subs r1, r1, r7 b8be: 1a09 subs r1, r1, r0 b8c0: 3101 adds r1, #1 if(first + last > len) last = len - first; b8c2: 1843 adds r3, r0, r1 b8c4: 459b cmp fp, r3 b8c6: bfb8 it lt b8c8: ebab 0100 sublt.w r1, fp, r0 if(last >= 0) { b8cc: 2900 cmp r1, #0 b8ce: f2c0 81cf blt.w bc70 _lv_memset_00(&mask_buf[first], last); b8d2: 9b02 ldr r3, [sp, #8] b8d4: 4403 add r3, r0 b8d6: 4618 mov r0, r3 b8d8: 4b7f ldr r3, [pc, #508] ; (bad8 ) b8da: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b8dc: 2002 movs r0, #2 b8de: e1bc b.n bc5a b8e0: f9bd a02c ldrsh.w sl, [sp, #44] ; 0x2c return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b8e4: b29b uxth r3, r3 b8e6: f8bd 102e ldrh.w r1, [sp, #46] ; 0x2e b8ea: 3101 adds r1, #1 b8ec: 1ac9 subs r1, r1, r3 int32_t h = lv_area_get_height(&rect); b8ee: b209 sxth r1, r1 abs_y -= rect.y1; b8f0: 1ad2 subs r2, r2, r3 uint32_t r2 = p->cfg.radius * p->cfg.radius; b8f2: fb08 f308 mul.w r3, r8, r8 b8f6: 9301 str r3, [sp, #4] if(abs_y < radius || abs_y > h - radius - 1) { b8f8: b212 sxth r2, r2 b8fa: 4590 cmp r8, r2 b8fc: f300 81d1 bgt.w bca2 b900: eba1 0308 sub.w r3, r1, r8 b904: 3b01 subs r3, #1 b906: 429a cmp r2, r3 b908: f300 81b4 bgt.w bc74 return LV_DRAW_MASK_RES_CHANGED; b90c: 2002 movs r0, #2 b90e: e1a4 b.n bc5a x0.f = p->y_prev_x.f; b910: 8b6b ldrh r3, [r5, #26] b912: f8ad 301a strh.w r3, [sp, #26] x0.i = p->y_prev_x.i; b916: 8b2b ldrh r3, [r5, #24] b918: f8ad 3018 strh.w r3, [sp, #24] b91c: e1d6 b.n bccc _lv_sqrt(r2 - ((y - 1) * (y - 1)), &x1, sqrt_mask); b91e: 9a04 ldr r2, [sp, #16] b920: a907 add r1, sp, #28 b922: 9b01 ldr r3, [sp, #4] b924: fb00 3010 mls r0, r0, r0, r3 b928: 4b6c ldr r3, [pc, #432] ; (badc ) b92a: 4798 blx r3 _lv_sqrt(r2 - (y * y), &x0, sqrt_mask); b92c: 9a04 ldr r2, [sp, #16] b92e: a906 add r1, sp, #24 b930: 9b01 ldr r3, [sp, #4] b932: fb04 3014 mls r0, r4, r4, r3 b936: 4b69 ldr r3, [pc, #420] ; (badc ) b938: 4798 blx r3 p->y_prev = y; b93a: 616c str r4, [r5, #20] p->y_prev_x.f = x0.f; b93c: f8bd 301a ldrh.w r3, [sp, #26] b940: 836b strh r3, [r5, #26] p->y_prev_x.i = x0.i; b942: f8bd 3018 ldrh.w r3, [sp, #24] b946: 832b strh r3, [r5, #24] b948: e1d1 b.n bcee if(x0.i == x1.i - 1 && x1.f == 0) { b94a: f8bd 101e ldrh.w r1, [sp, #30] b94e: 2900 cmp r1, #0 b950: f040 81d5 bne.w bcfe x1.i--; b954: 3a01 subs r2, #1 b956: f8ad 201c strh.w r2, [sp, #28] x1.f = 0xFF; b95a: 22ff movs r2, #255 ; 0xff b95c: f8ad 201e strh.w r2, [sp, #30] b960: e1cd b.n bcfe lv_opa_t m = (x0.f + x1.f) >> 1; b962: f8bd 201a ldrh.w r2, [sp, #26] b966: f8bd 101e ldrh.w r1, [sp, #30] b96a: 440a add r2, r1 b96c: f3c2 0247 ubfx r2, r2, #1, #8 if(outer) m = 255 - m; b970: b10e cbz r6, b976 b972: 43d2 mvns r2, r2 b974: b2d2 uxtb r2, r2 int32_t ofs = radius - x0.i - 1; b976: eba8 0303 sub.w r3, r8, r3 b97a: 3b01 subs r3, #1 if(kl >= 0 && kl < len) { b97c: 18f9 adds r1, r7, r3 b97e: d411 bmi.n b9a4 b980: 4559 cmp r1, fp b982: da0f bge.n b9a4 mask_buf[kl] = mask_mix(mask_buf[kl], m); b984: 9802 ldr r0, [sp, #8] b986: 5c40 ldrb r0, [r0, r1] if(mask_new >= LV_OPA_MAX) return mask_act; b988: 2af9 cmp r2, #249 ; 0xf9 b98a: d809 bhi.n b9a0 if(mask_new <= LV_OPA_MIN) return 0; b98c: 2a05 cmp r2, #5 b98e: d935 bls.n b9fc return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b990: fb02 f000 mul.w r0, r2, r0 b994: eb00 2400 add.w r4, r0, r0, lsl #8 b998: eb00 10c4 add.w r0, r0, r4, lsl #7 b99c: f3c0 50c7 ubfx r0, r0, #23, #8 mask_buf[kl] = mask_mix(mask_buf[kl], m); b9a0: 9c02 ldr r4, [sp, #8] b9a2: 5460 strb r0, [r4, r1] int32_t kr = k + (w - ofs - 1); b9a4: eba9 0303 sub.w r3, r9, r3 b9a8: 3b01 subs r3, #1 if(kr >= 0 && kr < len) { b9aa: 19df adds r7, r3, r7 b9ac: d411 bmi.n b9d2 b9ae: 455f cmp r7, fp b9b0: da0f bge.n b9d2 mask_buf[kr] = mask_mix(mask_buf[kr], m); b9b2: 9b02 ldr r3, [sp, #8] b9b4: 5ddb ldrb r3, [r3, r7] if(mask_new >= LV_OPA_MAX) return mask_act; b9b6: 2af9 cmp r2, #249 ; 0xf9 b9b8: d809 bhi.n b9ce if(mask_new <= LV_OPA_MIN) return 0; b9ba: 2a05 cmp r2, #5 b9bc: d920 bls.n ba00 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b9be: fb02 f203 mul.w r2, r2, r3 b9c2: eb02 2302 add.w r3, r2, r2, lsl #8 b9c6: eb02 12c3 add.w r2, r2, r3, lsl #7 b9ca: f3c2 53c7 ubfx r3, r2, #23, #8 mask_buf[kr] = mask_mix(mask_buf[kr], m); b9ce: 9a02 ldr r2, [sp, #8] b9d0: 55d3 strb r3, [r2, r7] if(outer == false) { b9d2: b1be cbz r6, ba04 kl++; b9d4: 1c48 adds r0, r1, #1 b9d6: ea20 70e0 bic.w r0, r0, r0, asr #31 if(len_tmp + first > len) len_tmp = len - first; b9da: 455f cmp r7, fp int32_t len_tmp = kr - first; b9dc: bfd4 ite le b9de: 1a39 suble r1, r7, r0 if(len_tmp + first > len) len_tmp = len - first; b9e0: ebab 0100 subgt.w r1, fp, r0 if(first < len && len_tmp >= 0) { b9e4: 4558 cmp r0, fp b9e6: f280 8119 bge.w bc1c b9ea: 2900 cmp r1, #0 b9ec: f2c0 8116 blt.w bc1c _lv_memset_00(&mask_buf[first], len_tmp); b9f0: 9b02 ldr r3, [sp, #8] b9f2: 4403 add r3, r0 b9f4: 4618 mov r0, r3 b9f6: 4b38 ldr r3, [pc, #224] ; (bad8 ) b9f8: 4798 blx r3 b9fa: e10f b.n bc1c if(mask_new <= LV_OPA_MIN) return 0; b9fc: 2000 movs r0, #0 b9fe: e7cf b.n b9a0 ba00: 2300 movs r3, #0 ba02: e7e4 b.n b9ce if(kl > len) { ba04: 4559 cmp r1, fp ba06: f300 8125 bgt.w bc54 if(kl >= 0) { ba0a: 2900 cmp r1, #0 ba0c: db02 blt.n ba14 _lv_memset_00(&mask_buf[0], kl); ba0e: 9802 ldr r0, [sp, #8] ba10: 4b31 ldr r3, [pc, #196] ; (bad8 ) ba12: 4798 blx r3 if(kr < 0) { ba14: 3701 adds r7, #1 ba16: f100 811d bmi.w bc54 if(kr <= len) { ba1a: 455f cmp r7, fp ba1c: f300 80fe bgt.w bc1c _lv_memset_00(&mask_buf[kr], len - kr); ba20: ebab 0107 sub.w r1, fp, r7 ba24: 9b02 ldr r3, [sp, #8] ba26: 443b add r3, r7 ba28: 4618 mov r0, r3 ba2a: 4b2b ldr r3, [pc, #172] ; (bad8 ) ba2c: 4798 blx r3 ba2e: e0f5 b.n bc1c _lv_sqrt(r2 - (i * i), &y_next, sqrt_mask); ba30: 9a04 ldr r2, [sp, #16] ba32: a909 add r1, sp, #36 ; 0x24 ba34: 9b01 ldr r3, [sp, #4] ba36: fb08 3018 mls r0, r8, r8, r3 ba3a: 4b28 ldr r3, [pc, #160] ; (badc ) ba3c: 4798 blx r3 m = 255 - (((255 - x0.f) * (255 - y_next.f)) >> 9); ba3e: f8bd 1026 ldrh.w r1, [sp, #38] ; 0x26 ba42: f8bd 301a ldrh.w r3, [sp, #26] ba46: f1c3 02ff rsb r2, r3, #255 ; 0xff ba4a: f1c1 03ff rsb r3, r1, #255 ; 0xff ba4e: fb03 f302 mul.w r3, r3, r2 ba52: f3c3 2347 ubfx r3, r3, #9, #8 if(outer) m = 255 - m; ba56: b90e cbnz r6, ba5c m = 255 - (((255 - x0.f) * (255 - y_next.f)) >> 9); ba58: 43db mvns r3, r3 ba5a: b2db uxtb r3, r3 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); ba5c: 9803 ldr r0, [sp, #12] ba5e: 4602 mov r2, r0 ba60: 2800 cmp r0, #0 ba62: db11 blt.n ba88 ba64: 4558 cmp r0, fp ba66: da0f bge.n ba88 ba68: 9c02 ldr r4, [sp, #8] ba6a: 1820 adds r0, r4, r0 ba6c: 5ca2 ldrb r2, [r4, r2] if(mask_new >= LV_OPA_MAX) return mask_act; ba6e: 2bf9 cmp r3, #249 ; 0xf9 ba70: d809 bhi.n ba86 if(mask_new <= LV_OPA_MIN) return 0; ba72: 2b05 cmp r3, #5 ba74: d929 bls.n baca return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); ba76: fb03 f202 mul.w r2, r3, r2 ba7a: eb02 2402 add.w r4, r2, r2, lsl #8 ba7e: eb02 12c4 add.w r2, r2, r4, lsl #7 ba82: f3c2 52c7 ubfx r2, r2, #23, #8 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); ba86: 7002 strb r2, [r0, #0] if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); ba88: f1ba 0f00 cmp.w sl, #0 ba8c: db13 blt.n bab6 ba8e: 45da cmp sl, fp ba90: da11 bge.n bab6 ba92: 9c02 ldr r4, [sp, #8] ba94: eb04 000a add.w r0, r4, sl ba98: f814 200a ldrb.w r2, [r4, sl] if(mask_new >= LV_OPA_MAX) return mask_act; ba9c: 2bf9 cmp r3, #249 ; 0xf9 ba9e: d809 bhi.n bab4 if(mask_new <= LV_OPA_MIN) return 0; baa0: 2b05 cmp r3, #5 baa2: d914 bls.n bace return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); baa4: fb03 f302 mul.w r3, r3, r2 baa8: eb03 2203 add.w r2, r3, r3, lsl #8 baac: eb03 13c2 add.w r3, r3, r2, lsl #7 bab0: f3c3 52c7 ubfx r2, r3, #23, #8 if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); bab4: 7002 strb r2, [r0, #0] kl--; bab6: 9b03 ldr r3, [sp, #12] bab8: 3b01 subs r3, #1 baba: 9303 str r3, [sp, #12] kr++; babc: f10a 0a01 add.w sl, sl, #1 y_prev.f = y_next.f; bac0: f8ad 1022 strh.w r1, [sp, #34] ; 0x22 i++; bac4: f108 0801 add.w r8, r8, #1 bac8: e15e b.n bd88 if(mask_new <= LV_OPA_MIN) return 0; baca: 2200 movs r2, #0 bacc: e7db b.n ba86 bace: 2200 movs r2, #0 bad0: e7f0 b.n bab4 bad2: 2700 movs r7, #0 bad4: e039 b.n bb4a bad6: bf00 nop bad8: 00012b37 .word 0x00012b37 badc: 0001231d .word 0x0001231d bae0: 2700 movs r7, #0 if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); bae2: f80e 7008 strb.w r7, [lr, r8] kl--; bae6: 3801 subs r0, #1 kr++; bae8: 3401 adds r4, #1 for(; i <= x1.i; i++) { baea: 3101 adds r1, #1 y_prev.f = y_next.f; baec: 461a mov r2, r3 for(; i <= x1.i; i++) { baee: 9d01 ldr r5, [sp, #4] baf0: 42a9 cmp r1, r5 baf2: d840 bhi.n bb76 */ LV_ATTRIBUTE_FAST_MEM static inline void sqrt_approx(lv_sqrt_res_t * q, lv_sqrt_res_t * ref, uint32_t x) { x = x << 8; /*Upscale for extra precision*/ uint32_t raw = (ref->i << 4) + (ref->f >> 4); baf4: eb09 1712 add.w r7, r9, r2, lsr #4 sqrt_approx(&y_next, &y_prev, r2 - (i * i)); baf8: fb01 a311 mls r3, r1, r1, sl uint32_t raw2 = raw * raw; bafc: fb07 fc07 mul.w ip, r7, r7 int32_t d = x - raw2; bb00: ebcc 2303 rsb r3, ip, r3, lsl #8 d = (int32_t)d / (int32_t)(2 * raw) + raw; bb04: ea4f 0c47 mov.w ip, r7, lsl #1 bb08: fb93 f3fc sdiv r3, r3, ip bb0c: 441f add r7, r3 q->i = d >> 4; bb0e: f3c7 1c0f ubfx ip, r7, #4, #16 q->f = (d & 0xF) << 4; bb12: 013f lsls r7, r7, #4 bb14: f007 03f0 and.w r3, r7, #240 ; 0xf0 m = (y_prev.f + y_next.f) >> 1; bb18: 441a add r2, r3 bb1a: f3c2 0247 ubfx r2, r2, #1, #8 if(outer) m = 255 - m; bb1e: b10e cbz r6, bb24 bb20: 43d2 mvns r2, r2 bb22: b2d2 uxtb r2, r2 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); bb24: 2800 cmp r0, #0 bb26: db12 blt.n bb4e bb28: 4583 cmp fp, r0 bb2a: dd10 ble.n bb4e bb2c: 4680 mov r8, r0 bb2e: f81e 7000 ldrb.w r7, [lr, r0] if(mask_new >= LV_OPA_MAX) return mask_act; bb32: 2af9 cmp r2, #249 ; 0xf9 bb34: d809 bhi.n bb4a if(mask_new <= LV_OPA_MIN) return 0; bb36: 2a05 cmp r2, #5 bb38: d9cb bls.n bad2 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); bb3a: fb02 f507 mul.w r5, r2, r7 bb3e: eb05 2705 add.w r7, r5, r5, lsl #8 bb42: eb05 17c7 add.w r7, r5, r7, lsl #7 bb46: f3c7 57c7 ubfx r7, r7, #23, #8 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); bb4a: f80e 7008 strb.w r7, [lr, r8] if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); bb4e: 2c00 cmp r4, #0 bb50: dbc9 blt.n bae6 bb52: 45a3 cmp fp, r4 bb54: ddc7 ble.n bae6 bb56: 46a0 mov r8, r4 bb58: f81e 7004 ldrb.w r7, [lr, r4] if(mask_new >= LV_OPA_MAX) return mask_act; bb5c: 2af9 cmp r2, #249 ; 0xf9 bb5e: d8c0 bhi.n bae2 if(mask_new <= LV_OPA_MIN) return 0; bb60: 2a05 cmp r2, #5 bb62: d9bd bls.n bae0 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); bb64: fb02 f207 mul.w r2, r2, r7 bb68: eb02 2702 add.w r7, r2, r2, lsl #8 bb6c: eb02 17c7 add.w r7, r2, r7, lsl #7 bb70: f3c7 57c7 ubfx r7, r7, #23, #8 bb74: e7b5 b.n bae2 bb76: f8dd 8010 ldr.w r8, [sp, #16] bb7a: f8dd a014 ldr.w sl, [sp, #20] bb7e: 43ea mvns r2, r5 bb80: 4442 add r2, r8 bb82: 9903 ldr r1, [sp, #12] bb84: 4411 add r1, r2 bb86: 9103 str r1, [sp, #12] bb88: 3501 adds r5, #1 bb8a: 44aa add sl, r5 bb8c: ebaa 0a08 sub.w sl, sl, r8 bb90: f8ad 3022 strh.w r3, [sp, #34] ; 0x22 bb94: f8ad c024 strh.w ip, [sp, #36] ; 0x24 bb98: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 if(y_prev.f) { bb9c: f8bd 3022 ldrh.w r3, [sp, #34] ; 0x22 bba0: 2b00 cmp r3, #0 bba2: d03a beq.n bc1a m = (y_prev.f * x1.f) >> 9; bba4: f8bd 201e ldrh.w r2, [sp, #30] bba8: fb03 f302 mul.w r3, r3, r2 bbac: f3c3 2347 ubfx r3, r3, #9, #8 if(outer) m = 255 - m; bbb0: b10e cbz r6, bbb6 bbb2: 43db mvns r3, r3 bbb4: b2db uxtb r3, r3 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); bbb6: 9a03 ldr r2, [sp, #12] bbb8: 2a00 cmp r2, #0 bbba: db12 blt.n bbe2 bbbc: 4593 cmp fp, r2 bbbe: dd10 ble.n bbe2 bbc0: 9802 ldr r0, [sp, #8] bbc2: 4601 mov r1, r0 bbc4: 4411 add r1, r2 bbc6: 5c82 ldrb r2, [r0, r2] if(mask_new >= LV_OPA_MAX) return mask_act; bbc8: 2bf9 cmp r3, #249 ; 0xf9 bbca: d809 bhi.n bbe0 if(mask_new <= LV_OPA_MIN) return 0; bbcc: 2b05 cmp r3, #5 bbce: d927 bls.n bc20 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); bbd0: fb03 f202 mul.w r2, r3, r2 bbd4: eb02 2002 add.w r0, r2, r2, lsl #8 bbd8: eb02 12c0 add.w r2, r2, r0, lsl #7 bbdc: f3c2 52c7 ubfx r2, r2, #23, #8 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); bbe0: 700a strb r2, [r1, #0] if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); bbe2: f1ba 0f00 cmp.w sl, #0 bbe6: db13 blt.n bc10 bbe8: 45d3 cmp fp, sl bbea: dd11 ble.n bc10 bbec: 9802 ldr r0, [sp, #8] bbee: eb00 010a add.w r1, r0, sl bbf2: f810 200a ldrb.w r2, [r0, sl] if(mask_new >= LV_OPA_MAX) return mask_act; bbf6: 2bf9 cmp r3, #249 ; 0xf9 bbf8: d809 bhi.n bc0e if(mask_new <= LV_OPA_MIN) return 0; bbfa: 2b05 cmp r3, #5 bbfc: d912 bls.n bc24 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); bbfe: fb03 f302 mul.w r3, r3, r2 bc02: eb03 2203 add.w r2, r3, r3, lsl #8 bc06: eb03 13c2 add.w r3, r3, r2, lsl #7 bc0a: f3c3 52c7 ubfx r2, r3, #23, #8 if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); bc0e: 700a strb r2, [r1, #0] kl--; bc10: 9b03 ldr r3, [sp, #12] bc12: 3b01 subs r3, #1 bc14: 9303 str r3, [sp, #12] kr++; bc16: f10a 0a01 add.w sl, sl, #1 if(outer == 0) { bc1a: b12e cbz r6, bc28 return LV_DRAW_MASK_RES_CHANGED; bc1c: 2002 movs r0, #2 bc1e: e01c b.n bc5a if(mask_new <= LV_OPA_MIN) return 0; bc20: 2200 movs r2, #0 bc22: e7dd b.n bbe0 bc24: 2200 movs r2, #0 bc26: e7f2 b.n bc0e kl++; bc28: 9903 ldr r1, [sp, #12] bc2a: 3101 adds r1, #1 if(kl > len) { bc2c: 4559 cmp r1, fp bc2e: dc11 bgt.n bc54 if(kl >= 0) _lv_memset_00(&mask_buf[0], kl); bc30: 2900 cmp r1, #0 bc32: db02 blt.n bc3a bc34: 9802 ldr r0, [sp, #8] bc36: 4b60 ldr r3, [pc, #384] ; (bdb8 ) bc38: 4798 blx r3 if(kr < 0) { bc3a: f1ba 0f00 cmp.w sl, #0 bc3e: db09 blt.n bc54 if(kr < len) _lv_memset_00(&mask_buf[kr], len - kr); bc40: 45da cmp sl, fp bc42: daeb bge.n bc1c bc44: ebab 010a sub.w r1, fp, sl bc48: 9b02 ldr r3, [sp, #8] bc4a: 4453 add r3, sl bc4c: 4618 mov r0, r3 bc4e: 4b5a ldr r3, [pc, #360] ; (bdb8 ) bc50: 4798 blx r3 bc52: e7e3 b.n bc1c return LV_DRAW_MASK_RES_TRANSP; bc54: 2000 movs r0, #0 bc56: e000 b.n bc5a return LV_DRAW_MASK_RES_TRANSP; bc58: 2000 movs r0, #0 } bc5a: b00d add sp, #52 ; 0x34 bc5c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} return LV_DRAW_MASK_RES_TRANSP; bc60: 2000 movs r0, #0 bc62: e7fa b.n bc5a return LV_DRAW_MASK_RES_FULL_COVER; bc64: 2001 movs r0, #1 bc66: e7f8 b.n bc5a if(last > len) return LV_DRAW_MASK_RES_TRANSP; bc68: 2000 movs r0, #0 bc6a: e7f6 b.n bc5a if(first <= 0) return LV_DRAW_MASK_RES_TRANSP; bc6c: 2000 movs r0, #0 bc6e: e7f4 b.n bc5a return LV_DRAW_MASK_RES_CHANGED; bc70: 2002 movs r0, #2 bc72: e7f2 b.n bc5a if(radius <= 256) sqrt_mask = 0x800; bc74: f5b8 7f80 cmp.w r8, #256 ; 0x100 bc78: bfd4 ite le bc7a: f44f 6300 movle.w r3, #2048 ; 0x800 bc7e: f44f 4300 movgt.w r3, #32768 ; 0x8000 bc82: 9304 str r3, [sp, #16] y = radius - (h - abs_y) + 1; bc84: 1a89 subs r1, r1, r2 bc86: eba8 0001 sub.w r0, r8, r1 bc8a: 1c44 adds r4, r0, #1 if((y - 1) == p->y_prev) { bc8c: 696b ldr r3, [r5, #20] bc8e: 4298 cmp r0, r3 bc90: f47f ae45 bne.w b91e x1.f = p->y_prev_x.f; bc94: 8b6b ldrh r3, [r5, #26] bc96: f8ad 301e strh.w r3, [sp, #30] x1.i = p->y_prev_x.i; bc9a: 8b2b ldrh r3, [r5, #24] bc9c: f8ad 301c strh.w r3, [sp, #28] bca0: e644 b.n b92c if(radius <= 256) sqrt_mask = 0x800; bca2: f5b8 7f80 cmp.w r8, #256 ; 0x100 bca6: bfd4 ite le bca8: f44f 6300 movle.w r3, #2048 ; 0x800 bcac: f44f 4300 movgt.w r3, #32768 ; 0x8000 bcb0: 9304 str r3, [sp, #16] y = radius - abs_y; bcb2: eba8 0402 sub.w r4, r8, r2 if(y == p->y_prev) { bcb6: 696b ldr r3, [r5, #20] bcb8: 429c cmp r4, r3 bcba: f43f ae29 beq.w b910 _lv_sqrt(r2 - (y * y), &x0, sqrt_mask); bcbe: 9a04 ldr r2, [sp, #16] bcc0: a906 add r1, sp, #24 bcc2: 9b01 ldr r3, [sp, #4] bcc4: fb04 3014 mls r0, r4, r4, r3 bcc8: 4b3c ldr r3, [pc, #240] ; (bdbc ) bcca: 4798 blx r3 _lv_sqrt(r2 - ((y - 1) * (y - 1)), &x1, sqrt_mask); bccc: 1e63 subs r3, r4, #1 bcce: 9a04 ldr r2, [sp, #16] bcd0: a907 add r1, sp, #28 bcd2: 9303 str r3, [sp, #12] bcd4: 9801 ldr r0, [sp, #4] bcd6: fb03 0013 mls r0, r3, r3, r0 bcda: 4b38 ldr r3, [pc, #224] ; (bdbc ) bcdc: 4798 blx r3 p->y_prev = y - 1; bcde: 9b03 ldr r3, [sp, #12] bce0: 616b str r3, [r5, #20] p->y_prev_x.f = x1.f; bce2: f8bd 301e ldrh.w r3, [sp, #30] bce6: 836b strh r3, [r5, #26] p->y_prev_x.i = x1.i; bce8: f8bd 301c ldrh.w r3, [sp, #28] bcec: 832b strh r3, [r5, #24] if(x0.i == x1.i - 1 && x1.f == 0) { bcee: f8bd 3018 ldrh.w r3, [sp, #24] bcf2: f8bd 201c ldrh.w r2, [sp, #28] bcf6: 1e51 subs r1, r2, #1 bcf8: 428b cmp r3, r1 bcfa: f43f ae26 beq.w b94a int32_t k = rect.x1 - abs_x; /*First relevant coordinate on the of the mask*/ bcfe: eba9 0707 sub.w r7, r9, r7 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); bd02: f10a 0a01 add.w sl, sl, #1 bd06: ebaa 0909 sub.w r9, sl, r9 int32_t w = lv_area_get_width(&rect); bd0a: fa0f f989 sxth.w r9, r9 if(x0.i == x1.i) { bd0e: f8bd 201c ldrh.w r2, [sp, #28] bd12: 429a cmp r2, r3 bd14: f43f ae25 beq.w b962 int32_t ofs = radius - (x0.i + 1); bd18: 3301 adds r3, #1 bd1a: eba8 0803 sub.w r8, r8, r3 int32_t kl = k + ofs; bd1e: eb07 0308 add.w r3, r7, r8 bd22: 9303 str r3, [sp, #12] int32_t kr = k + (w - ofs - 1); bd24: eba9 0808 sub.w r8, r9, r8 bd28: f108 3aff add.w sl, r8, #4294967295 bd2c: 44ba add sl, r7 if(outer) { bd2e: b186 cbz r6, bd52 int32_t first = kl + 1; bd30: 1c58 adds r0, r3, #1 bd32: ea20 70e0 bic.w r0, r0, r0, asr #31 if(len_tmp + first > len) len_tmp = len - first; bd36: 45da cmp sl, fp int32_t len_tmp = kr - first; bd38: bfd4 ite le bd3a: ebaa 0100 suble.w r1, sl, r0 if(len_tmp + first > len) len_tmp = len - first; bd3e: ebab 0100 subgt.w r1, fp, r0 if(first < len && len_tmp >= 0) { bd42: 4558 cmp r0, fp bd44: da05 bge.n bd52 bd46: 2900 cmp r1, #0 bd48: db03 blt.n bd52 _lv_memset_00(&mask_buf[first], len_tmp); bd4a: 9b02 ldr r3, [sp, #8] bd4c: 4418 add r0, r3 bd4e: 4b1a ldr r3, [pc, #104] ; (bdb8 ) bd50: 4798 blx r3 uint32_t i = x0.i + 1; bd52: f8bd 0018 ldrh.w r0, [sp, #24] bd56: f100 0801 add.w r8, r0, #1 _lv_sqrt(r2 - (x0.i * x0.i), &y_prev, sqrt_mask); bd5a: 9a04 ldr r2, [sp, #16] bd5c: a908 add r1, sp, #32 bd5e: 9b01 ldr r3, [sp, #4] bd60: fb00 3010 mls r0, r0, r0, r3 bd64: 4b15 ldr r3, [pc, #84] ; (bdbc ) bd66: 4798 blx r3 if(y_prev.f == 0) { bd68: f8bd 3022 ldrh.w r3, [sp, #34] ; 0x22 bd6c: b93b cbnz r3, bd7e y_prev.i--; bd6e: f8bd 3020 ldrh.w r3, [sp, #32] bd72: 3b01 subs r3, #1 bd74: f8ad 3020 strh.w r3, [sp, #32] y_prev.f = 0xFF; bd78: 23ff movs r3, #255 ; 0xff bd7a: f8ad 3022 strh.w r3, [sp, #34] ; 0x22 if(y_prev.i >= y) { bd7e: f8bd 3020 ldrh.w r3, [sp, #32] bd82: 429c cmp r4, r3 bd84: f77f ae54 ble.w ba30 for(; i <= x1.i; i++) { bd88: f8bd 501c ldrh.w r5, [sp, #28] bd8c: 45a8 cmp r8, r5 bd8e: f63f af05 bhi.w bb9c uint32_t raw = (ref->i << 4) + (ref->f >> 4); bd92: f8bd 9020 ldrh.w r9, [sp, #32] bd96: ea4f 1909 mov.w r9, r9, lsl #4 bd9a: f8bd 2022 ldrh.w r2, [sp, #34] ; 0x22 bd9e: 4641 mov r1, r8 bda0: 4654 mov r4, sl bda2: 9803 ldr r0, [sp, #12] if(mask_new <= LV_OPA_MIN) return 0; bda4: f8cd 8010 str.w r8, [sp, #16] bda8: f8cd a014 str.w sl, [sp, #20] bdac: f8dd a004 ldr.w sl, [sp, #4] bdb0: 9501 str r5, [sp, #4] bdb2: f8dd e008 ldr.w lr, [sp, #8] bdb6: e69d b.n baf4 bdb8: 00012b37 .word 0x00012b37 bdbc: 0001231d .word 0x0001231d 0000bdc0 : { bdc0: b510 push {r4, lr} bdc2: b082 sub sp, #8 if(LV_GC_ROOT(_lv_draw_mask_list[i]).param == NULL) break; bdc4: 4b10 ldr r3, [pc, #64] ; (be08 ) bdc6: 681b ldr r3, [r3, #0] bdc8: b19b cbz r3, bdf2 bdca: 4a0f ldr r2, [pc, #60] ; (be08 ) for(i = 0; i < _LV_MASK_MAX_NUM; i++) { bdcc: 2301 movs r3, #1 if(LV_GC_ROOT(_lv_draw_mask_list[i]).param == NULL) break; bdce: 6894 ldr r4, [r2, #8] bdd0: b184 cbz r4, bdf4 for(i = 0; i < _LV_MASK_MAX_NUM; i++) { bdd2: 3301 adds r3, #1 bdd4: b2db uxtb r3, r3 bdd6: 3208 adds r2, #8 bdd8: 2b10 cmp r3, #16 bdda: d1f8 bne.n bdce LV_LOG_WARN("lv_mask_add: no place to add the mask"); bddc: 4b0b ldr r3, [pc, #44] ; (be0c ) bdde: 9300 str r3, [sp, #0] bde0: 4b0b ldr r3, [pc, #44] ; (be10 ) bde2: 2257 movs r2, #87 ; 0x57 bde4: 490b ldr r1, [pc, #44] ; (be14 ) bde6: 2002 movs r0, #2 bde8: 4c0b ldr r4, [pc, #44] ; (be18 ) bdea: 47a0 blx r4 return LV_MASK_ID_INV; bdec: f04f 30ff mov.w r0, #4294967295 bdf0: e007 b.n be02 for(i = 0; i < _LV_MASK_MAX_NUM; i++) { bdf2: 2300 movs r3, #0 LV_GC_ROOT(_lv_draw_mask_list[i]).param = param; bdf4: 4a04 ldr r2, [pc, #16] ; (be08 ) bdf6: f842 0033 str.w r0, [r2, r3, lsl #3] LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id = custom_id; bdfa: eb02 02c3 add.w r2, r2, r3, lsl #3 bdfe: 6051 str r1, [r2, #4] return i; be00: b218 sxth r0, r3 } be02: b002 add sp, #8 be04: bd10 pop {r4, pc} be06: bf00 nop be08: 20006d6c .word 0x20006d6c be0c: 00025024 .word 0x00025024 be10: 00024fc8 .word 0x00024fc8 be14: 00024ff4 .word 0x00024ff4 be18: 0001225d .word 0x0001225d 0000be1c : { be1c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} be20: b082 sub sp, #8 while(m->param) { be22: 4c11 ldr r4, [pc, #68] ; (be68 ) be24: 6824 ldr r4, [r4, #0] be26: b1ec cbz r4, be64 be28: 469a mov sl, r3 be2a: 4691 mov r9, r2 be2c: 4688 mov r8, r1 be2e: 4607 mov r7, r0 be30: 4e0d ldr r6, [pc, #52] ; (be68 ) be32: 2500 movs r5, #0 res = dsc->cb(mask_buf, abs_x, abs_y, len, (void *)m->param); be34: 9400 str r4, [sp, #0] be36: 6824 ldr r4, [r4, #0] be38: 4653 mov r3, sl be3a: 464a mov r2, r9 be3c: 4641 mov r1, r8 be3e: 4638 mov r0, r7 be40: 47a0 blx r4 if(res == LV_DRAW_MASK_RES_TRANSP) return LV_DRAW_MASK_RES_TRANSP; be42: 4604 mov r4, r0 be44: b150 cbz r0, be5c else if(res == LV_DRAW_MASK_RES_CHANGED) changed = true; be46: 2802 cmp r0, #2 be48: bf08 it eq be4a: 2501 moveq r5, #1 while(m->param) { be4c: f856 4f08 ldr.w r4, [r6, #8]! be50: 2c00 cmp r4, #0 be52: d1ef bne.n be34 return changed ? LV_DRAW_MASK_RES_CHANGED : LV_DRAW_MASK_RES_FULL_COVER; be54: 2d00 cmp r5, #0 be56: bf14 ite ne be58: 2402 movne r4, #2 be5a: 2401 moveq r4, #1 } be5c: 4620 mov r0, r4 be5e: b002 add sp, #8 be60: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} return changed ? LV_DRAW_MASK_RES_CHANGED : LV_DRAW_MASK_RES_FULL_COVER; be64: 2401 movs r4, #1 be66: e7f9 b.n be5c be68: 20006d6c .word 0x20006d6c 0000be6c : if(id != LV_MASK_ID_INV) { be6c: f1b0 3fff cmp.w r0, #4294967295 be70: d00a beq.n be88 p = LV_GC_ROOT(_lv_draw_mask_list[id]).param; be72: 4b06 ldr r3, [pc, #24] ; (be8c ) be74: f853 1030 ldr.w r1, [r3, r0, lsl #3] LV_GC_ROOT(_lv_draw_mask_list[id]).param = NULL; be78: 2200 movs r2, #0 be7a: f843 2030 str.w r2, [r3, r0, lsl #3] LV_GC_ROOT(_lv_draw_mask_list[id]).custom_id = NULL; be7e: eb03 03c0 add.w r3, r3, r0, lsl #3 be82: 605a str r2, [r3, #4] } be84: 4608 mov r0, r1 be86: 4770 bx lr void * p = NULL; be88: 2100 movs r1, #0 return p; be8a: e7fb b.n be84 be8c: 20006d6c .word 0x20006d6c 0000be90 : { be90: b470 push {r4, r5, r6} be92: 4b0b ldr r3, [pc, #44] ; (bec0 ) be94: 1d1a adds r2, r3, #4 be96: f103 0480 add.w r4, r3, #128 ; 0x80 void * p = NULL; be9a: 2600 movs r6, #0 LV_GC_ROOT(_lv_draw_mask_list[i]).param = NULL; be9c: 4635 mov r5, r6 be9e: e003 b.n bea8 bea0: 3308 adds r3, #8 bea2: 3208 adds r2, #8 for(i = 0; i < _LV_MASK_MAX_NUM; i++) { bea4: 42a3 cmp r3, r4 bea6: d008 beq.n beba if(LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id == custom_id) { bea8: 6859 ldr r1, [r3, #4] beaa: 4281 cmp r1, r0 beac: d1f8 bne.n bea0 p = LV_GC_ROOT(_lv_draw_mask_list[i]).param; beae: f852 6c04 ldr.w r6, [r2, #-4] LV_GC_ROOT(_lv_draw_mask_list[i]).param = NULL; beb2: f842 5c04 str.w r5, [r2, #-4] LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id = NULL; beb6: 605d str r5, [r3, #4] beb8: e7f2 b.n bea0 } beba: 4630 mov r0, r6 bebc: bc70 pop {r4, r5, r6} bebe: 4770 bx lr bec0: 20006d6c .word 0x20006d6c 0000bec4 : { bec4: 2300 movs r3, #0 uint8_t cnt = 0; bec6: 4618 mov r0, r3 if(LV_GC_ROOT(_lv_draw_mask_list[i]).param) cnt++; bec8: 4906 ldr r1, [pc, #24] ; (bee4 ) beca: e002 b.n bed2 becc: 3301 adds r3, #1 for(i = 0; i < _LV_MASK_MAX_NUM; i++) { bece: 2b10 cmp r3, #16 bed0: d006 beq.n bee0 if(LV_GC_ROOT(_lv_draw_mask_list[i]).param) cnt++; bed2: f851 2033 ldr.w r2, [r1, r3, lsl #3] bed6: 2a00 cmp r2, #0 bed8: d0f8 beq.n becc beda: 3001 adds r0, #1 bedc: b2c0 uxtb r0, r0 bede: e7f5 b.n becc } bee0: 4770 bx lr bee2: bf00 nop bee4: 20006d6c .word 0x20006d6c 0000bee8 : { bee8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} beec: 4604 mov r4, r0 beee: 460f mov r7, r1 bef0: 4615 mov r5, r2 bef2: 4698 mov r8, r3 bef4: f9bd 6018 ldrsh.w r6, [sp, #24] _lv_memset_00(param, sizeof(lv_draw_mask_line_param_t)); bef8: 212c movs r1, #44 ; 0x2c befa: 4b4a ldr r3, [pc, #296] ; (c024 ) befc: 4798 blx r3 if(p1y > p2y) { befe: 42b5 cmp r5, r6 bf00: dd05 ble.n bf0e bf02: 462b mov r3, r5 p1y = t; bf04: 4635 mov r5, r6 p2y = p1y; bf06: 461e mov r6, r3 if(p1y > p2y) { bf08: 463b mov r3, r7 p1x = t; bf0a: 4647 mov r7, r8 p2x = p1x; bf0c: 4698 mov r8, r3 param->cfg.p1.x = p1x; bf0e: 8127 strh r7, [r4, #8] param->cfg.p1.y = p1y; bf10: 8165 strh r5, [r4, #10] param->cfg.p2.x = p2x; bf12: f8a4 800c strh.w r8, [r4, #12] param->cfg.p2.y = p2y; bf16: 81e6 strh r6, [r4, #14] param->cfg.side = side; bf18: 7c23 ldrb r3, [r4, #16] bf1a: f89d 201c ldrb.w r2, [sp, #28] bf1e: f362 0301 bfi r3, r2, #0, #2 bf22: 7423 strb r3, [r4, #16] param->origo.x = p1x; bf24: 8267 strh r7, [r4, #18] param->origo.y = p1y; bf26: 82a5 strh r5, [r4, #20] param->flat = (LV_MATH_ABS(p2x - p1x) > LV_MATH_ABS(p2y - p1y)) ? 1 : 0; bf28: eba8 0707 sub.w r7, r8, r7 bf2c: 1b75 subs r5, r6, r5 bf2e: ea87 71e7 eor.w r1, r7, r7, asr #31 bf32: eba1 71e7 sub.w r1, r1, r7, asr #31 bf36: ea85 73e5 eor.w r3, r5, r5, asr #31 bf3a: eba3 73e5 sub.w r3, r3, r5, asr #31 bf3e: 4299 cmp r1, r3 bf40: bfd4 ite le bf42: 2100 movle r1, #0 bf44: 2101 movgt r1, #1 bf46: f894 2028 ldrb.w r2, [r4, #40] ; 0x28 bf4a: f361 0200 bfi r2, r1, #0, #1 bf4e: f884 2028 strb.w r2, [r4, #40] ; 0x28 param->yx_steep = 0; bf52: 2100 movs r1, #0 bf54: 61e1 str r1, [r4, #28] param->xy_steep = 0; bf56: 61a1 str r1, [r4, #24] param->dsc.cb = (lv_draw_mask_xcb_t)lv_draw_mask_line; bf58: 4b33 ldr r3, [pc, #204] ; (c028 ) bf5a: 6023 str r3, [r4, #0] param->dsc.type = LV_DRAW_MASK_TYPE_LINE; bf5c: 7121 strb r1, [r4, #4] if(param->flat) { bf5e: f012 0f01 tst.w r2, #1 bf62: d025 beq.n bfb0 if(dx) { bf64: b13f cbz r7, bf76 m = (1 << 20) / dx; /*m is multiplier to normalize y (upscaled by 1024)*/ bf66: f44f 1380 mov.w r3, #1048576 ; 0x100000 bf6a: fb93 f3f7 sdiv r3, r3, r7 param->yx_steep = (m * dy) >> 10; bf6e: fb05 f303 mul.w r3, r5, r3 bf72: 129b asrs r3, r3, #10 bf74: 61e3 str r3, [r4, #28] if(dy) { bf76: b13d cbz r5, bf88 m = (1 << 20) / dy; /*m is multiplier to normalize x (upscaled by 1024)*/ bf78: f44f 1680 mov.w r6, #1048576 ; 0x100000 bf7c: fb96 f5f5 sdiv r5, r6, r5 param->xy_steep = (m * dx) >> 10; bf80: fb07 f705 mul.w r7, r7, r5 bf84: 12bf asrs r7, r7, #10 bf86: 61a7 str r7, [r4, #24] param->steep = param->yx_steep; bf88: 69e3 ldr r3, [r4, #28] bf8a: 6223 str r3, [r4, #32] if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) param->inv = 0; bf8c: 7c23 ldrb r3, [r4, #16] bf8e: f013 0303 ands.w r3, r3, #3 bf92: d122 bne.n bfda bf94: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 bf98: f36f 0341 bfc r3, #1, #1 bf9c: f884 3028 strb.w r3, [r4, #40] ; 0x28 param->spx = param->steep >> 2; bfa0: 6a23 ldr r3, [r4, #32] bfa2: 109a asrs r2, r3, #2 if(param->steep < 0) param->spx = -param->spx; bfa4: 2b00 cmp r3, #0 bfa6: bfb8 it lt bfa8: 4252 neglt r2, r2 bfaa: 6262 str r2, [r4, #36] ; 0x24 bfac: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(dy) { bfb0: b13d cbz r5, bfc2 m = (1 << 20) / dy; /*m is multiplier to normalize x (upscaled by 1024)*/ bfb2: f44f 1380 mov.w r3, #1048576 ; 0x100000 bfb6: fb93 f3f5 sdiv r3, r3, r5 param->xy_steep = (m * dx) >> 10; bfba: fb07 f303 mul.w r3, r7, r3 bfbe: 129b asrs r3, r3, #10 bfc0: 61a3 str r3, [r4, #24] if(dx) { bfc2: b13f cbz r7, bfd4 m = (1 << 20) / dx; /*m is multiplier to normalize x (upscaled by 1024)*/ bfc4: f44f 1880 mov.w r8, #1048576 ; 0x100000 bfc8: fb98 f7f7 sdiv r7, r8, r7 param->yx_steep = (m * dy) >> 10; bfcc: fb05 f507 mul.w r5, r5, r7 bfd0: 12ad asrs r5, r5, #10 bfd2: 61e5 str r5, [r4, #28] param->steep = param->xy_steep; bfd4: 69a3 ldr r3, [r4, #24] bfd6: 6223 str r3, [r4, #32] bfd8: e7d8 b.n bf8c else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) param->inv = 1; bfda: 2b01 cmp r3, #1 bfdc: d00f beq.n bffe else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP) { bfde: 2b02 cmp r3, #2 bfe0: d014 beq.n c00c else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_BOTTOM) { bfe2: 2b03 cmp r3, #3 bfe4: d1dc bne.n bfa0 if(param->steep > 0) param->inv = 0; bfe6: 6a23 ldr r3, [r4, #32] bfe8: 2b00 cmp r3, #0 bfea: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 bfee: bfcc ite gt bff0: f36f 0341 bfcgt r3, #1, #1 else param->inv = 1; bff4: f043 0302 orrle.w r3, r3, #2 bff8: f884 3028 strb.w r3, [r4, #40] ; 0x28 bffc: e7d0 b.n bfa0 else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) param->inv = 1; bffe: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 c002: f043 0302 orr.w r3, r3, #2 c006: f884 3028 strb.w r3, [r4, #40] ; 0x28 c00a: e7c9 b.n bfa0 if(param->steep > 0) param->inv = 1; c00c: 6a23 ldr r3, [r4, #32] c00e: 2b00 cmp r3, #0 c010: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 c014: bfcc ite gt c016: f043 0302 orrgt.w r3, r3, #2 else param->inv = 0; c01a: f36f 0341 bfcle r3, #1, #1 c01e: f884 3028 strb.w r3, [r4, #40] ; 0x28 c022: e7bd b.n bfa0 c024: 00012b37 .word 0x00012b37 c028: 0000b221 .word 0x0000b221 0000c02c : { c02c: b470 push {r4, r5, r6} return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c02e: 88cc ldrh r4, [r1, #6] c030: 3401 adds r4, #1 c032: 884d ldrh r5, [r1, #2] c034: 1b64 subs r4, r4, r5 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c036: 888d ldrh r5, [r1, #4] c038: 3501 adds r5, #1 c03a: 880e ldrh r6, [r1, #0] c03c: 1bad subs r5, r5, r6 int32_t short_side = LV_MATH_MIN(w, h); c03e: b224 sxth r4, r4 c040: b22d sxth r5, r5 c042: 42ac cmp r4, r5 c044: bfa8 it ge c046: 462c movge r4, r5 if(radius > short_side >> 1) radius = short_side >> 1; c048: 1064 asrs r4, r4, #1 c04a: 42a2 cmp r2, r4 c04c: bfc8 it gt c04e: b222 sxthgt r2, r4 c050: 3901 subs r1, #1 c052: f100 0610 add.w r6, r0, #16 uint8_t * d8 = (uint8_t *)dst; c056: f100 0408 add.w r4, r0, #8 *d8 = *s8; c05a: f811 5f01 ldrb.w r5, [r1, #1]! c05e: f804 5b01 strb.w r5, [r4], #1 while(len) { c062: 42b4 cmp r4, r6 c064: d1f9 bne.n c05a param->cfg.radius = radius; c066: 8202 strh r2, [r0, #16] param->cfg.outer = inv ? 1 : 0; c068: 7c82 ldrb r2, [r0, #18] c06a: f363 0200 bfi r2, r3, #0, #1 c06e: 7482 strb r2, [r0, #18] param->dsc.cb = (lv_draw_mask_xcb_t)lv_draw_mask_radius; c070: 4b05 ldr r3, [pc, #20] ; (c088 ) c072: 6003 str r3, [r0, #0] param->dsc.type = LV_DRAW_MASK_TYPE_RADIUS; c074: 2302 movs r3, #2 c076: 7103 strb r3, [r0, #4] param->y_prev = INT32_MIN; c078: f04f 4300 mov.w r3, #2147483648 ; 0x80000000 c07c: 6143 str r3, [r0, #20] param->y_prev_x.f = 0; c07e: 2300 movs r3, #0 c080: 8343 strh r3, [r0, #26] param->y_prev_x.i = 0; c082: 8303 strh r3, [r0, #24] } c084: bc70 pop {r4, r5, r6} c086: 4770 bx lr c088: 0000b7cd .word 0x0000b7cd 0000c08c : #endif } LV_ATTRIBUTE_FAST_MEM static void shadow_blur_corner(lv_coord_t size, lv_coord_t sw, uint16_t * sh_ups_buf) { c08c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} c090: b08b sub sp, #44 ; 0x2c c092: 9006 str r0, [sp, #24] c094: 4689 mov r9, r1 c096: 9207 str r2, [sp, #28] int32_t s_left = sw >> 1; c098: ea4f 0b61 mov.w fp, r1, asr #1 c09c: f8cd b008 str.w fp, [sp, #8] int32_t s_right = (sw >> 1); if((sw & 1) == 0) s_left--; c0a0: f011 0f01 tst.w r1, #1 c0a4: bf06 itte eq c0a6: f10b 33ff addeq.w r3, fp, #4294967295 c0aa: 9308 streq r3, [sp, #32] int32_t s_left = sw >> 1; c0ac: f8cd b020 strne.w fp, [sp, #32] /*Horizontal blur*/ uint16_t * sh_ups_blur_buf = _lv_mem_buf_get(size * sizeof(uint16_t)); c0b0: 9c06 ldr r4, [sp, #24] c0b2: 0067 lsls r7, r4, #1 c0b4: 4638 mov r0, r7 c0b6: 4b69 ldr r3, [pc, #420] ; (c25c ) c0b8: 4798 blx r3 c0ba: 9005 str r0, [sp, #20] int32_t x; int32_t y; uint16_t * sh_ups_tmp_buf = sh_ups_buf; for(y = 0; y < size; y++) { c0bc: 2c00 cmp r4, #0 c0be: f340 80be ble.w c23e int32_t v = sh_ups_tmp_buf[size - 1] * sw; c0c2: 1eba subs r2, r7, #2 c0c4: 19c1 adds r1, r0, r7 c0c6: 9103 str r1, [sp, #12] c0c8: 9d07 ldr r5, [sp, #28] c0ca: f04f 0800 mov.w r8, #0 for(x = size - 1; x >= 0; x--) { c0ce: f104 3aff add.w sl, r4, #4294967295 c0d2: 9908 ldr r1, [sp, #32] c0d4: ebaa 0101 sub.w r1, sl, r1 c0d8: 9104 str r1, [sp, #16] c0da: 4606 mov r6, r0 c0dc: f8cd b024 str.w fp, [sp, #36] ; 0x24 c0e0: 4693 mov fp, r2 int32_t v = sh_ups_tmp_buf[size - 1] * sw; c0e2: f8cd 9004 str.w r9, [sp, #4] c0e6: f835 300b ldrh.w r3, [r5, fp] c0ea: fb09 f303 mul.w r3, r9, r3 for(x = size - 1; x >= 0; x--) { c0ee: f1ba 0f00 cmp.w sl, #0 c0f2: db1b blt.n c12c c0f4: 9a02 ldr r2, [sp, #8] c0f6: eb02 010a add.w r1, r2, sl c0fa: 9a04 ldr r2, [sp, #16] c0fc: 3a01 subs r2, #1 c0fe: 9803 ldr r0, [sp, #12] c100: f04f 0e00 mov.w lr, #0 sh_ups_blur_buf[x] = v; c104: f820 3d02 strh.w r3, [r0, #-2]! /*Forget the right pixel*/ uint32_t right_val = 0; if(x + s_right < size) right_val = sh_ups_tmp_buf[x + s_right]; c108: 428c cmp r4, r1 c10a: bfcc ite gt c10c: f835 c011 ldrhgt.w ip, [r5, r1, lsl #1] c110: 46f4 movle ip, lr v -= right_val; c112: eba3 030c sub.w r3, r3, ip /*Add the left pixel*/ uint32_t left_val; if(x - s_left - 1 < 0) left_val = sh_ups_tmp_buf[0]; c116: 2a00 cmp r2, #0 c118: bfb4 ite lt c11a: f8b5 c000 ldrhlt.w ip, [r5] else left_val = sh_ups_tmp_buf[x - s_left - 1]; c11e: f835 c012 ldrhge.w ip, [r5, r2, lsl #1] v += left_val; c122: 4463 add r3, ip c124: 3901 subs r1, #1 c126: 3a01 subs r2, #1 for(x = size - 1; x >= 0; x--) { c128: 42b0 cmp r0, r6 c12a: d1eb bne.n c104 } _lv_memcpy(sh_ups_tmp_buf, sh_ups_blur_buf, size * sizeof(uint16_t)); c12c: 463a mov r2, r7 c12e: 4631 mov r1, r6 c130: 4628 mov r0, r5 c132: 4b4b ldr r3, [pc, #300] ; (c260 ) c134: 4798 blx r3 sh_ups_tmp_buf += size; c136: 443d add r5, r7 for(y = 0; y < size; y++) { c138: f108 0801 add.w r8, r8, #1 c13c: 45a0 cmp r8, r4 c13e: d1d0 bne.n c0e2 c140: f8dd b024 ldr.w fp, [sp, #36] ; 0x24 } /*Vertical blur*/ uint32_t i; sh_ups_buf[0] = sh_ups_buf[0] / sw; c144: 9a07 ldr r2, [sp, #28] c146: 8813 ldrh r3, [r2, #0] c148: 9901 ldr r1, [sp, #4] c14a: fb93 f3f1 sdiv r3, r3, r1 c14e: 8013 strh r3, [r2, #0] for(i = 1; i < (uint32_t)size * size; i++) { c150: 9b06 ldr r3, [sp, #24] c152: fb03 f503 mul.w r5, r3, r3 c156: 2d01 cmp r5, #1 c158: d911 bls.n c17e c15a: 9a07 ldr r2, [sp, #28] c15c: 2101 movs r1, #1 c15e: 9e01 ldr r6, [sp, #4] c160: 4610 mov r0, r2 if(sh_ups_buf[i] == sh_ups_buf[i - 1]) sh_ups_buf[i] = sh_ups_buf[i - 1]; c162: f832 3f02 ldrh.w r3, [r2, #2]! c166: 8800 ldrh r0, [r0, #0] c168: 4298 cmp r0, r3 else sh_ups_buf[i] = sh_ups_buf[i] / sw; c16a: bf1c itt ne c16c: fb93 f3f6 sdivne r3, r3, r6 c170: 8013 strhne r3, [r2, #0] for(i = 1; i < (uint32_t)size * size; i++) { c172: 3101 adds r1, #1 c174: 42a9 cmp r1, r5 c176: d3f3 bcc.n c160 } for(x = 0; x < size; x++) { c178: 9b06 ldr r3, [sp, #24] c17a: 2b00 cmp r3, #0 c17c: dd59 ble.n c232 c17e: 9e07 ldr r6, [sp, #28] c180: 9602 str r6, [sp, #8] c182: 9908 ldr r1, [sp, #32] c184: fb01 7207 mla r2, r1, r7, r7 c188: ea6f 030b mvn.w r3, fp c18c: 1a5b subs r3, r3, r1 c18e: 9d06 ldr r5, [sp, #24] c190: fb05 f303 mul.w r3, r5, r3 c194: 9306 str r3, [sp, #24] v -= top_val; /*Add the bottom pixel*/ uint32_t bottom_val; if(y + s_left + 1 < size) bottom_val = sh_ups_buf[(y + s_left + 1) * size + x]; else bottom_val = sh_ups_buf[(size - 1) * size + x]; c196: 1e6b subs r3, r5, #1 c198: fb05 f303 mul.w r3, r5, r3 c19c: eb06 0343 add.w r3, r6, r3, lsl #1 c1a0: 9307 str r3, [sp, #28] c1a2: f04f 0a00 mov.w sl, #0 c1a6: 1e93 subs r3, r2, #2 c1a8: 9308 str r3, [sp, #32] if(y + s_left + 1 < size) bottom_val = sh_ups_buf[(y + s_left + 1) * size + x]; c1aa: f101 0901 add.w r9, r1, #1 sh_ups_tmp_buf = &sh_ups_buf[x]; c1ae: 9b02 ldr r3, [sp, #8] c1b0: 461e mov r6, r3 c1b2: 3302 adds r3, #2 c1b4: 461a mov r2, r3 c1b6: 9302 str r3, [sp, #8] int32_t v = sh_ups_tmp_buf[0] * sw; c1b8: 8833 ldrh r3, [r6, #0] c1ba: 9901 ldr r1, [sp, #4] c1bc: fb01 f303 mul.w r3, r1, r3 c1c0: 9908 ldr r1, [sp, #32] c1c2: 188d adds r5, r1, r2 c1c4: 9a05 ldr r2, [sp, #20] c1c6: f1a2 0c02 sub.w ip, r2, #2 c1ca: 46e0 mov r8, ip c1cc: 46b6 mov lr, r6 c1ce: 2200 movs r2, #0 c1d0: f8cd c00c str.w ip, [sp, #12] c1d4: 9604 str r6, [sp, #16] c1d6: 9e06 ldr r6, [sp, #24] c1d8: f8dd c01c ldr.w ip, [sp, #28] sh_ups_blur_buf[y] = v < 0 ? 0 : (v >> SHADOW_UPSACALE_SHIFT); c1dc: 2b00 cmp r3, #0 c1de: bfac ite ge c1e0: 1199 asrge r1, r3, #6 c1e2: 2100 movlt r1, #0 c1e4: f828 1f02 strh.w r1, [r8, #2]! c1e8: 4611 mov r1, r2 if(y - s_right <= 0) top_val = sh_ups_tmp_buf[0]; c1ea: eba2 000b sub.w r0, r2, fp c1ee: 2800 cmp r0, #0 c1f0: bfd4 ite le c1f2: f8be 0000 ldrhle.w r0, [lr] else top_val = sh_ups_buf[(y - s_right) * size + x]; c1f6: f835 0016 ldrhgt.w r0, [r5, r6, lsl #1] v -= top_val; c1fa: 1a1b subs r3, r3, r0 if(y + s_left + 1 < size) bottom_val = sh_ups_buf[(y + s_left + 1) * size + x]; c1fc: 4449 add r1, r9 c1fe: 428c cmp r4, r1 c200: bfcc ite gt c202: 8829 ldrhgt r1, [r5, #0] else bottom_val = sh_ups_buf[(size - 1) * size + x]; c204: f83c 101a ldrhle.w r1, [ip, sl, lsl #1] v += bottom_val; c208: 440b add r3, r1 for(y = 0; y < size ; y++, sh_ups_tmp_buf += size) { c20a: 3201 adds r2, #1 c20c: 44be add lr, r7 c20e: 443d add r5, r7 c210: 42a2 cmp r2, r4 c212: dbe3 blt.n c1dc c214: f8dd c00c ldr.w ip, [sp, #12] c218: 9e04 ldr r6, [sp, #16] c21a: 2300 movs r3, #0 } /*Write back the result into `sh_ups_buf`*/ sh_ups_tmp_buf = &sh_ups_buf[x]; for(y = 0; y < size; y++, sh_ups_tmp_buf += size) { (*sh_ups_tmp_buf) = sh_ups_blur_buf[y]; c21c: f83c 2f02 ldrh.w r2, [ip, #2]! c220: 8032 strh r2, [r6, #0] for(y = 0; y < size; y++, sh_ups_tmp_buf += size) { c222: 3301 adds r3, #1 c224: 443e add r6, r7 c226: 42a3 cmp r3, r4 c228: dbf8 blt.n c21c for(x = 0; x < size; x++) { c22a: f10a 0a01 add.w sl, sl, #1 c22e: 45a2 cmp sl, r4 c230: dbbd blt.n c1ae } } _lv_mem_buf_release(sh_ups_blur_buf); c232: 9805 ldr r0, [sp, #20] c234: 4b0b ldr r3, [pc, #44] ; (c264 ) c236: 4798 blx r3 } c238: b00b add sp, #44 ; 0x2c c23a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} sh_ups_buf[0] = sh_ups_buf[0] / sw; c23e: f8cd 9004 str.w r9, [sp, #4] c242: 9a07 ldr r2, [sp, #28] c244: 8813 ldrh r3, [r2, #0] c246: fb93 f9f9 sdiv r9, r3, r9 c24a: f8a2 9000 strh.w r9, [r2] for(i = 1; i < (uint32_t)size * size; i++) { c24e: 9b06 ldr r3, [sp, #24] c250: fb03 f503 mul.w r5, r3, r3 c254: 2d01 cmp r5, #1 c256: d880 bhi.n c15a c258: e7eb b.n c232 c25a: bf00 nop c25c: 0001293d .word 0x0001293d c260: 00012655 .word 0x00012655 c264: 00012571 .word 0x00012571 0000c268 : { c268: b510 push {r4, lr} c26a: 4604 mov r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_rect_dsc_t)); c26c: 2154 movs r1, #84 ; 0x54 c26e: 4b2d ldr r3, [pc, #180] ; (c324 ) c270: 4798 blx r3 dsc->bg_color = LV_COLOR_WHITE; c272: 4b2d ldr r3, [pc, #180] ; (c328 ) c274: 881b ldrh r3, [r3, #0] c276: 8063 strh r3, [r4, #2] dsc->bg_grad_color = LV_COLOR_BLACK; c278: 7923 ldrb r3, [r4, #4] c27a: f36f 0304 bfc r3, #0, #5 c27e: 7123 strb r3, [r4, #4] c280: 88a3 ldrh r3, [r4, #4] c282: f36f 134a bfc r3, #5, #6 c286: 80a3 strh r3, [r4, #4] c288: 0a1b lsrs r3, r3, #8 c28a: f36f 03c7 bfc r3, #3, #5 c28e: 7163 strb r3, [r4, #5] dsc->border_color = LV_COLOR_BLACK; c290: 7ba3 ldrb r3, [r4, #14] c292: f36f 0304 bfc r3, #0, #5 c296: 73a3 strb r3, [r4, #14] c298: 89e3 ldrh r3, [r4, #14] c29a: f36f 134a bfc r3, #5, #6 c29e: 81e3 strh r3, [r4, #14] c2a0: 0a1b lsrs r3, r3, #8 c2a2: f36f 03c7 bfc r3, #3, #5 c2a6: 73e3 strb r3, [r4, #15] dsc->pattern_recolor = LV_COLOR_BLACK; c2a8: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 c2ac: f36f 0304 bfc r3, #0, #5 c2b0: f884 3034 strb.w r3, [r4, #52] ; 0x34 c2b4: 8ea3 ldrh r3, [r4, #52] ; 0x34 c2b6: f36f 134a bfc r3, #5, #6 c2ba: 86a3 strh r3, [r4, #52] ; 0x34 c2bc: 0a1b lsrs r3, r3, #8 c2be: f36f 03c7 bfc r3, #3, #5 c2c2: f884 3035 strb.w r3, [r4, #53] ; 0x35 dsc->value_color = LV_COLOR_BLACK; c2c6: f894 3046 ldrb.w r3, [r4, #70] ; 0x46 c2ca: f36f 0304 bfc r3, #0, #5 c2ce: f884 3046 strb.w r3, [r4, #70] ; 0x46 c2d2: f8b4 3046 ldrh.w r3, [r4, #70] ; 0x46 c2d6: f36f 134a bfc r3, #5, #6 c2da: f8a4 3046 strh.w r3, [r4, #70] ; 0x46 c2de: 0a1b lsrs r3, r3, #8 c2e0: f36f 03c7 bfc r3, #3, #5 c2e4: f884 3047 strb.w r3, [r4, #71] ; 0x47 dsc->shadow_color = LV_COLOR_BLACK; c2e8: 7fa3 ldrb r3, [r4, #30] c2ea: f36f 0304 bfc r3, #0, #5 c2ee: 77a3 strb r3, [r4, #30] c2f0: 8be3 ldrh r3, [r4, #30] c2f2: f36f 134a bfc r3, #5, #6 c2f6: 83e3 strh r3, [r4, #30] c2f8: 0a1b lsrs r3, r3, #8 c2fa: f36f 03c7 bfc r3, #3, #5 c2fe: 77e3 strb r3, [r4, #31] dsc->bg_grad_color_stop = 0xFF; c300: 23ff movs r3, #255 ; 0xff c302: 8163 strh r3, [r4, #10] dsc->bg_opa = LV_OPA_COVER; c304: 7323 strb r3, [r4, #12] dsc->outline_opa = LV_OPA_COVER; c306: 7723 strb r3, [r4, #28] dsc->border_opa = LV_OPA_COVER; c308: 7523 strb r3, [r4, #20] dsc->pattern_opa = LV_OPA_COVER; c30a: f884 3036 strb.w r3, [r4, #54] ; 0x36 dsc->pattern_font = LV_THEME_DEFAULT_FONT_NORMAL; c30e: 4a07 ldr r2, [pc, #28] ; (c32c ) c310: 6322 str r2, [r4, #48] ; 0x30 dsc->value_opa = LV_OPA_COVER; c312: f884 3044 strb.w r3, [r4, #68] ; 0x44 dsc->value_font = LV_THEME_DEFAULT_FONT_NORMAL; c316: 6422 str r2, [r4, #64] ; 0x40 dsc->shadow_opa = LV_OPA_COVER; c318: f884 3028 strb.w r3, [r4, #40] ; 0x28 dsc->border_side = LV_BORDER_SIDE_FULL; c31c: 230f movs r3, #15 c31e: 8263 strh r3, [r4, #18] c320: bd10 pop {r4, pc} c322: bf00 nop c324: 00012b37 .word 0x00012b37 c328: 0002507c .word 0x0002507c c32c: 20000010 .word 0x20000010 0000c330 : { c330: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} c334: b0b1 sub sp, #196 ; 0xc4 * @param area_p pointer to an area * @return the height of the area (if y1 == y2 -> height = 1) */ static inline lv_coord_t lv_area_get_height(const lv_area_t * area_p) { return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c336: 88c4 ldrh r4, [r0, #6] c338: 8845 ldrh r5, [r0, #2] c33a: 1c63 adds r3, r4, #1 c33c: 1b5b subs r3, r3, r5 if(lv_area_get_height(coords) < 1 || lv_area_get_width(coords) < 1) return; c33e: b21b sxth r3, r3 c340: 2b00 cmp r3, #0 c342: f341 800f ble.w d364 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c346: 8886 ldrh r6, [r0, #4] c348: f8b0 8000 ldrh.w r8, [r0] c34c: 1c73 adds r3, r6, #1 c34e: eba3 0308 sub.w r3, r3, r8 c352: b21b sxth r3, r3 c354: 2b00 cmp r3, #0 c356: f341 8005 ble.w d364 c35a: 4692 mov sl, r2 c35c: 9104 str r1, [sp, #16] c35e: 9006 str r0, [sp, #24] if(dsc->shadow_width == 0) return; c360: f9b2 7020 ldrsh.w r7, [r2, #32] c364: 2f00 cmp r7, #0 c366: f000 8719 beq.w d19c if(dsc->shadow_opa <= LV_OPA_MIN) return; c36a: f892 3028 ldrb.w r3, [r2, #40] ; 0x28 c36e: 9309 str r3, [sp, #36] ; 0x24 c370: 2b05 cmp r3, #5 c372: f240 8713 bls.w d19c if(dsc->shadow_width == 1 && dsc->shadow_ofs_x == 0 && c376: 6a13 ldr r3, [r2, #32] c378: 2b01 cmp r3, #1 c37a: f000 80f6 beq.w c56a sh_rect_area.x1 = coords->x1 + dsc->shadow_ofs_x - dsc->shadow_spread; c37e: f8ba 2022 ldrh.w r2, [sl, #34] ; 0x22 c382: f8ba 3026 ldrh.w r3, [sl, #38] ; 0x26 c386: 1ad1 subs r1, r2, r3 c388: 4488 add r8, r1 c38a: fa1f f888 uxth.w r8, r8 c38e: f8ad 8050 strh.w r8, [sp, #80] ; 0x50 sh_rect_area.x2 = coords->x2 + dsc->shadow_ofs_x + dsc->shadow_spread; c392: 441a add r2, r3 c394: 4416 add r6, r2 c396: b2b6 uxth r6, r6 c398: f8ad 6054 strh.w r6, [sp, #84] ; 0x54 sh_rect_area.y1 = coords->y1 + dsc->shadow_ofs_y - dsc->shadow_spread; c39c: f8ba 2024 ldrh.w r2, [sl, #36] ; 0x24 c3a0: 1ad1 subs r1, r2, r3 c3a2: 440d add r5, r1 c3a4: b2ad uxth r5, r5 c3a6: f8ad 5052 strh.w r5, [sp, #82] ; 0x52 sh_rect_area.y2 = coords->y2 + dsc->shadow_ofs_y + dsc->shadow_spread; c3aa: 4413 add r3, r2 c3ac: 441c add r4, r3 c3ae: b2a4 uxth r4, r4 c3b0: f8ad 4056 strh.w r4, [sp, #86] ; 0x56 sh_area.x1 = sh_rect_area.x1 - sw / 2 - 1; c3b4: eb07 73d7 add.w r3, r7, r7, lsr #31 c3b8: ea6f 0263 mvn.w r2, r3, asr #1 c3bc: b292 uxth r2, r2 c3be: eb08 0102 add.w r1, r8, r2 c3c2: f8ad 1058 strh.w r1, [sp, #88] ; 0x58 sh_area.x2 = sh_rect_area.x2 + sw / 2 + 1; c3c6: 105b asrs r3, r3, #1 c3c8: 3301 adds r3, #1 c3ca: b29b uxth r3, r3 c3cc: 18f1 adds r1, r6, r3 c3ce: f8ad 105c strh.w r1, [sp, #92] ; 0x5c sh_area.y1 = sh_rect_area.y1 - sw / 2 - 1; c3d2: 442a add r2, r5 c3d4: f8ad 205a strh.w r2, [sp, #90] ; 0x5a sh_area.y2 = sh_rect_area.y2 + sw / 2 + 1; c3d8: 4423 add r3, r4 c3da: f8ad 305e strh.w r3, [sp, #94] ; 0x5e if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; c3de: 9b09 ldr r3, [sp, #36] ; 0x24 c3e0: 2bfb cmp r3, #251 ; 0xfb c3e2: bf28 it cs c3e4: 23ff movcs r3, #255 ; 0xff c3e6: 9309 str r3, [sp, #36] ; 0x24 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); c3e8: 4bbe ldr r3, [pc, #760] ; (c6e4 ) c3ea: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); c3ec: 4bbe ldr r3, [pc, #760] ; (c6e8 ) c3ee: 4798 blx r3 c3f0: 4681 mov r9, r0 is_common = _lv_area_intersect(&draw_area, &sh_area, clip); c3f2: 9a04 ldr r2, [sp, #16] c3f4: a916 add r1, sp, #88 ; 0x58 c3f6: a818 add r0, sp, #96 ; 0x60 c3f8: 4bbc ldr r3, [pc, #752] ; (c6ec ) c3fa: 4798 blx r3 if(is_common == false) return; c3fc: 2800 cmp r0, #0 c3fe: f000 86cd beq.w d19c draw_area.x1 -= disp_area->x1; c402: f8b9 1010 ldrh.w r1, [r9, #16] c406: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 c40a: 1a5b subs r3, r3, r1 c40c: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 draw_area.y1 -= disp_area->y1; c410: f8b9 2012 ldrh.w r2, [r9, #18] c414: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 c418: 1a9b subs r3, r3, r2 c41a: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 draw_area.x2 -= disp_area->x1; c41e: f8bd 3064 ldrh.w r3, [sp, #100] ; 0x64 c422: 1a5b subs r3, r3, r1 c424: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 draw_area.y2 -= disp_area->y1; c428: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 c42c: 1a9b subs r3, r3, r2 c42e: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 c432: 9a06 ldr r2, [sp, #24] c434: 1e53 subs r3, r2, #1 c436: 1dd0 adds r0, r2, #7 * @param src pointer to the source buffer * @param len number of byte to copy */ LV_ATTRIBUTE_FAST_MEM static inline void * _lv_memcpy_small(void * dst, const void * src, size_t len) { uint8_t * d8 = (uint8_t *)dst; c438: aa1a add r2, sp, #104 ; 0x68 const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; c43a: f813 1f01 ldrb.w r1, [r3, #1]! c43e: f802 1b01 strb.w r1, [r2], #1 while(len) { c442: 4298 cmp r0, r3 c444: d1f9 bne.n c43a bg_coords.x1 += 1; c446: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 c44a: 3301 adds r3, #1 c44c: fa1f fe83 uxth.w lr, r3 c450: f8ad e068 strh.w lr, [sp, #104] ; 0x68 bg_coords.y1 += 1; c454: f8bd 106a ldrh.w r1, [sp, #106] ; 0x6a c458: 3101 adds r1, #1 c45a: b288 uxth r0, r1 c45c: f8ad 006a strh.w r0, [sp, #106] ; 0x6a bg_coords.x2 -= 1; c460: f8bd 306c ldrh.w r3, [sp, #108] ; 0x6c c464: 1e5a subs r2, r3, #1 c466: f8ad 206c strh.w r2, [sp, #108] ; 0x6c bg_coords.y2 -= 1; c46a: f8bd 106e ldrh.w r1, [sp, #110] ; 0x6e c46e: 1e4a subs r2, r1, #1 c470: f8ad 206e strh.w r2, [sp, #110] ; 0x6e int32_t r_bg = dsc->radius; c474: f9ba 2000 ldrsh.w r2, [sl] c478: eba3 030e sub.w r3, r3, lr c47c: b21b sxth r3, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c47e: 1a09 subs r1, r1, r0 c480: b209 sxth r1, r1 int32_t short_side = LV_MATH_MIN(lv_area_get_width(&bg_coords), lv_area_get_height(&bg_coords)); c482: 428b cmp r3, r1 c484: bfa8 it ge c486: 460b movge r3, r1 if(r_bg > short_side >> 1) r_bg = short_side >> 1; c488: 105b asrs r3, r3, #1 c48a: 4293 cmp r3, r2 c48c: bfa8 it ge c48e: 4613 movge r3, r2 c490: 930e str r3, [sp, #56] ; 0x38 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c492: 3601 adds r6, #1 c494: eba6 0608 sub.w r6, r6, r8 c498: b2b6 uxth r6, r6 c49a: b233 sxth r3, r6 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c49c: 3401 adds r4, #1 c49e: 1b64 subs r4, r4, r5 c4a0: b2a4 uxth r4, r4 c4a2: b225 sxth r5, r4 short_side = LV_MATH_MIN(lv_area_get_width(&sh_rect_area), lv_area_get_height(&sh_rect_area)); c4a4: 429d cmp r5, r3 c4a6: bfa8 it ge c4a8: 461d movge r5, r3 if(r_sh > short_side >> 1) r_sh = short_side >> 1; c4aa: 106d asrs r5, r5, #1 c4ac: 4295 cmp r5, r2 c4ae: bfa8 it ge c4b0: 4615 movge r5, r2 int32_t corner_size = sw + r_sh; c4b2: eb07 0905 add.w r9, r7, r5 sh_buf = _lv_mem_buf_get(corner_size * corner_size * sizeof(uint16_t)); c4b6: fb09 f009 mul.w r0, r9, r9 c4ba: 0040 lsls r0, r0, #1 c4bc: 4b8c ldr r3, [pc, #560] ; (c6f0 ) c4be: 4798 blx r3 c4c0: 900a str r0, [sp, #40] ; 0x28 shadow_draw_corner_buf(&sh_rect_area, (uint16_t *)sh_buf, dsc->shadow_width, r_sh); c4c2: f9ba b020 ldrsh.w fp, [sl, #32] c4c6: b22a sxth r2, r5 int32_t size = sw_ori + r; c4c8: eb02 070b add.w r7, r2, fp c4cc: f10d 014f add.w r1, sp, #79 ; 0x4f uint8_t * d8 = (uint8_t *)dst; c4d0: ab22 add r3, sp, #136 ; 0x88 while(len) { c4d2: f10d 0e90 add.w lr, sp, #144 ; 0x90 *d8 = *s8; c4d6: f811 0f01 ldrb.w r0, [r1, #1]! c4da: f803 0b01 strb.w r0, [r3], #1 while(len) { c4de: 4573 cmp r3, lr c4e0: d1f9 bne.n c4d6 sh_area.x2 = sw / 2 + r - 1 - ((sw & 1) ? 0 : 1); c4e2: eb0b 71db add.w r1, fp, fp, lsr #31 c4e6: f3c1 014f ubfx r1, r1, #1, #16 c4ea: 1e4b subs r3, r1, #1 c4ec: f01b 0001 ands.w r0, fp, #1 c4f0: 9010 str r0, [sp, #64] ; 0x40 c4f2: bf0c ite eq c4f4: 2001 moveq r0, #1 c4f6: 2000 movne r0, #0 c4f8: 1a1b subs r3, r3, r0 c4fa: 442b add r3, r5 c4fc: b29b uxth r3, r3 c4fe: f8ad 308c strh.w r3, [sp, #140] ; 0x8c sh_area.y1 = sw / 2 + 1; c502: 3101 adds r1, #1 c504: b289 uxth r1, r1 c506: f8ad 108a strh.w r1, [sp, #138] ; 0x8a sh_area.x1 = sh_area.x2 - lv_area_get_width(coords); c50a: 1b9b subs r3, r3, r6 c50c: f8ad 3088 strh.w r3, [sp, #136] ; 0x88 sh_area.y2 = sh_area.y1 + lv_area_get_height(coords); c510: 4421 add r1, r4 c512: f8ad 108e strh.w r1, [sp, #142] ; 0x8e lv_draw_mask_radius_init(&mask_param, &sh_area, r, false); c516: 2300 movs r3, #0 c518: a922 add r1, sp, #136 ; 0x88 c51a: a829 add r0, sp, #164 ; 0xa4 c51c: 4c75 ldr r4, [pc, #468] ; (c6f4 ) c51e: 47a0 blx r4 if(sw_ori == 1) sw = 1; c520: f1bb 0f01 cmp.w fp, #1 c524: f002 81d8 beq.w e8d8 c528: ea4f 036b mov.w r3, fp, asr #1 c52c: 930b str r3, [sp, #44] ; 0x2c lv_opa_t * mask_line = _lv_mem_buf_get(size); c52e: 9707 str r7, [sp, #28] c530: 4638 mov r0, r7 c532: 4b6f ldr r3, [pc, #444] ; (c6f0 ) c534: 4798 blx r3 c536: 900c str r0, [sp, #48] ; 0x30 for(y = 0; y < size; y++) { c538: 2f00 cmp r7, #0 c53a: dd5c ble.n c5f6 _lv_memset_00(sh_ups_tmp_buf, size * sizeof(sh_ups_tmp_buf[0])); c53c: 9b07 ldr r3, [sp, #28] c53e: ea4f 0b43 mov.w fp, r3, lsl #1 c542: f107 4300 add.w r3, r7, #2147483648 ; 0x80000000 c546: 3b01 subs r3, #1 c548: 005b lsls r3, r3, #1 c54a: 9c0a ldr r4, [sp, #40] ; 0x28 c54c: 2500 movs r5, #0 _lv_memset_ff(mask_line, size); c54e: f8df 81b8 ldr.w r8, [pc, #440] ; c708 lv_draw_mask_res_t mask_res = mask_param.dsc.cb(mask_line, 0, y, size, &mask_param); c552: b23a sxth r2, r7 c554: 9208 str r2, [sp, #32] _lv_memset_00(sh_ups_tmp_buf, size * sizeof(sh_ups_tmp_buf[0])); c556: f8cd 9034 str.w r9, [sp, #52] ; 0x34 c55a: 9705 str r7, [sp, #20] c55c: 9e0c ldr r6, [sp, #48] ; 0x30 c55e: 4699 mov r9, r3 c560: f8cd a03c str.w sl, [sp, #60] ; 0x3c c564: f8dd a02c ldr.w sl, [sp, #44] ; 0x2c c568: e014 b.n c594 if(dsc->shadow_width == 1 && dsc->shadow_ofs_x == 0 && c56a: f9b2 3024 ldrsh.w r3, [r2, #36] ; 0x24 c56e: 2b00 cmp r3, #0 c570: f47f af05 bne.w c37e dsc->shadow_ofs_y == 0 && dsc->shadow_spread <= 0) { c574: f9b2 3026 ldrsh.w r3, [r2, #38] ; 0x26 c578: 2b00 cmp r3, #0 c57a: f73f af00 bgt.w c37e c57e: f000 be0d b.w d19c _lv_memset_00(sh_ups_tmp_buf, size * sizeof(sh_ups_tmp_buf[0])); c582: 4659 mov r1, fp c584: 4620 mov r0, r4 c586: 4b5c ldr r3, [pc, #368] ; (c6f8 ) c588: 4798 blx r3 sh_ups_tmp_buf += size; c58a: 445c add r4, fp for(y = 0; y < size; y++) { c58c: 3501 adds r5, #1 c58e: 9b05 ldr r3, [sp, #20] c590: 42ab cmp r3, r5 c592: dd2b ble.n c5ec _lv_memset_ff(mask_line, size); c594: 9907 ldr r1, [sp, #28] c596: 4630 mov r0, r6 c598: 47c0 blx r8 lv_draw_mask_res_t mask_res = mask_param.dsc.cb(mask_line, 0, y, size, &mask_param); c59a: ab29 add r3, sp, #164 ; 0xa4 c59c: 9300 str r3, [sp, #0] c59e: 9b08 ldr r3, [sp, #32] c5a0: b22a sxth r2, r5 c5a2: 2100 movs r1, #0 c5a4: 4630 mov r0, r6 c5a6: 9f29 ldr r7, [sp, #164] ; 0xa4 c5a8: 47b8 blx r7 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { c5aa: 2800 cmp r0, #0 c5ac: d0e9 beq.n c582 sh_ups_tmp_buf[0] = (mask_line[0] << SHADOW_UPSACALE_SHIFT) / sw; c5ae: 46d6 mov lr, sl c5b0: 7833 ldrb r3, [r6, #0] c5b2: 019b lsls r3, r3, #6 c5b4: fb93 f3fa sdiv r3, r3, sl c5b8: 8023 strh r3, [r4, #0] for(i = 1; i < size; i++) { c5ba: 9b05 ldr r3, [sp, #20] c5bc: 2b01 cmp r3, #1 c5be: dde4 ble.n c58a c5c0: 4631 mov r1, r6 c5c2: 4622 mov r2, r4 c5c4: eb04 0009 add.w r0, r4, r9 c5c8: 461f mov r7, r3 c5ca: 468c mov ip, r1 if(mask_line[i] == mask_line[i - 1]) sh_ups_tmp_buf[i] = sh_ups_tmp_buf[i - 1]; c5cc: f811 3f01 ldrb.w r3, [r1, #1]! c5d0: f89c c000 ldrb.w ip, [ip] c5d4: 459c cmp ip, r3 c5d6: bf0e itee eq c5d8: 8813 ldrheq r3, [r2, #0] else sh_ups_tmp_buf[i] = (mask_line[i] << SHADOW_UPSACALE_SHIFT) / sw; c5da: 019b lslne r3, r3, #6 c5dc: fb93 f3fe sdivne r3, r3, lr c5e0: 8053 strh r3, [r2, #2] c5e2: 3202 adds r2, #2 for(i = 1; i < size; i++) { c5e4: 4290 cmp r0, r2 c5e6: d1f0 bne.n c5ca c5e8: 9705 str r7, [sp, #20] c5ea: e7ce b.n c58a c5ec: f8dd 9034 ldr.w r9, [sp, #52] ; 0x34 c5f0: 461f mov r7, r3 c5f2: f8dd a03c ldr.w sl, [sp, #60] ; 0x3c _lv_mem_buf_release(mask_line); c5f6: 980c ldr r0, [sp, #48] ; 0x30 c5f8: 4b40 ldr r3, [pc, #256] ; (c6fc ) c5fa: 4798 blx r3 if(sw == 1) { c5fc: 9b0b ldr r3, [sp, #44] ; 0x2c c5fe: 2b01 cmp r3, #1 c600: f002 814d beq.w e89e shadow_blur_corner(size, sw, sh_buf); c604: b23c sxth r4, r7 c606: 9e0a ldr r6, [sp, #40] ; 0x28 c608: 4632 mov r2, r6 c60a: 9d0b ldr r5, [sp, #44] ; 0x2c c60c: 4629 mov r1, r5 c60e: 4620 mov r0, r4 c610: 4b3b ldr r3, [pc, #236] ; (c700 ) c612: 4798 blx r3 sw += sw_ori & 1; c614: 9a10 ldr r2, [sp, #64] ; 0x40 c616: 442a add r2, r5 c618: b211 sxth r1, r2 if(sw > 1) { c61a: 2901 cmp r1, #1 c61c: dd22 ble.n c664 sh_buf[0] = (sh_buf[0] << SHADOW_UPSACALE_SHIFT) / sw; c61e: 460d mov r5, r1 c620: 8833 ldrh r3, [r6, #0] c622: 019b lsls r3, r3, #6 c624: fb93 f3f1 sdiv r3, r3, r1 c628: 4632 mov r2, r6 c62a: 8033 strh r3, [r6, #0] for(i = 1; i < (uint32_t) size * size; i++) { c62c: 9807 ldr r0, [sp, #28] c62e: fb00 f000 mul.w r0, r0, r0 c632: 2801 cmp r0, #1 c634: d912 bls.n c65c c636: f100 4000 add.w r0, r0, #2147483648 ; 0x80000000 c63a: 3801 subs r0, #1 c63c: eb06 0040 add.w r0, r6, r0, lsl #1 c640: e001 b.n c646 c642: 4282 cmp r2, r0 c644: d00a beq.n c65c c646: 4616 mov r6, r2 if(sh_buf[i] == sh_buf[i - 1]) sh_buf[i] = sh_buf[i - 1]; c648: f832 3f02 ldrh.w r3, [r2, #2]! c64c: 8836 ldrh r6, [r6, #0] c64e: 429e cmp r6, r3 c650: d0f7 beq.n c642 else sh_buf[i] = (sh_buf[i] << SHADOW_UPSACALE_SHIFT) / sw; c652: 019b lsls r3, r3, #6 c654: fb93 f3f5 sdiv r3, r3, r5 c658: 8013 strh r3, [r2, #0] c65a: e7f2 b.n c642 shadow_blur_corner(size, sw, sh_buf); c65c: 9a0a ldr r2, [sp, #40] ; 0x28 c65e: 4620 mov r0, r4 c660: 4b27 ldr r3, [pc, #156] ; (c700 ) c662: 4798 blx r3 for(x = 0; x < size * size; x++) { c664: fb07 f707 mul.w r7, r7, r7 c668: b157 cbz r7, c680 c66a: 990a ldr r1, [sp, #40] ; 0x28 c66c: 460b mov r3, r1 c66e: 1e4a subs r2, r1, #1 c670: eb01 0047 add.w r0, r1, r7, lsl #1 res_buf[x] = sh_buf[x]; c674: f833 1b02 ldrh.w r1, [r3], #2 c678: f802 1f01 strb.w r1, [r2, #1]! for(x = 0; x < size * size; x++) { c67c: 4283 cmp r3, r0 c67e: d1f9 bne.n c674 lv_coord_t h_half = sh_area.y1 + lv_area_get_height(&sh_area) / 2; c680: f8bd 205a ldrh.w r2, [sp, #90] ; 0x5a c684: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e c688: 3301 adds r3, #1 c68a: 1a9b subs r3, r3, r2 c68c: b21b sxth r3, r3 c68e: eb03 73d3 add.w r3, r3, r3, lsr #31 c692: eb02 0363 add.w r3, r2, r3, asr #1 c696: b29b uxth r3, r3 c698: 930f str r3, [sp, #60] ; 0x3c c69a: b21b sxth r3, r3 c69c: 930c str r3, [sp, #48] ; 0x30 lv_coord_t w_half = sh_area.x1 + lv_area_get_width(&sh_area) / 2; c69e: f8bd 2058 ldrh.w r2, [sp, #88] ; 0x58 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c6a2: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c c6a6: 3301 adds r3, #1 c6a8: 1a9b subs r3, r3, r2 c6aa: b21b sxth r3, r3 c6ac: eb03 73d3 add.w r3, r3, r3, lsr #31 c6b0: eb02 0363 add.w r3, r2, r3, asr #1 c6b4: b29b uxth r3, r3 c6b6: 9310 str r3, [sp, #64] ; 0x40 c6b8: b21b sxth r3, r3 c6ba: 930d str r3, [sp, #52] ; 0x34 if(lv_draw_mask_get_cnt() > 0) simple_mode = false; c6bc: 4b11 ldr r3, [pc, #68] ; (c704 ) c6be: 4798 blx r3 c6c0: bb20 cbnz r0, c70c else if(dsc->shadow_ofs_x != 0 || dsc->shadow_ofs_y != 0) simple_mode = false; c6c2: f9ba 3022 ldrsh.w r3, [sl, #34] ; 0x22 c6c6: 2b00 cmp r3, #0 c6c8: f040 81bc bne.w ca44 c6cc: f9ba 3024 ldrsh.w r3, [sl, #36] ; 0x24 c6d0: 2b00 cmp r3, #0 c6d2: f040 81ba bne.w ca4a else if(dsc->shadow_spread != 0) simple_mode = false; c6d6: f9ba 3026 ldrsh.w r3, [sl, #38] ; 0x26 c6da: fab3 f383 clz r3, r3 c6de: 095b lsrs r3, r3, #5 c6e0: 9307 str r3, [sp, #28] c6e2: e015 b.n c710 c6e4: 00005f69 .word 0x00005f69 c6e8: 00010fdd .word 0x00010fdd c6ec: 00011519 .word 0x00011519 c6f0: 0001293d .word 0x0001293d c6f4: 0000c02d .word 0x0000c02d c6f8: 00012b37 .word 0x00012b37 c6fc: 00012571 .word 0x00012571 c700: 0000c08d .word 0x0000c08d c704: 0000bec5 .word 0x0000bec5 c708: 00012bed .word 0x00012bed if(lv_draw_mask_get_cnt() > 0) simple_mode = false; c70c: 2300 movs r3, #0 c70e: 9307 str r3, [sp, #28] c710: f8bd 005c ldrh.w r0, [sp, #92] ; 0x5c c714: 3001 adds r0, #1 c716: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 c71a: 1ac0 subs r0, r0, r3 lv_opa_t * mask_buf = _lv_mem_buf_get(lv_area_get_width(&sh_area)); c71c: b200 sxth r0, r0 c71e: 4bc2 ldr r3, [pc, #776] ; (ca28 ) c720: 4798 blx r3 c722: 9005 str r0, [sp, #20] lv_draw_mask_radius_init(&mask_rout_param, &bg_coords, r_bg, true); c724: 2301 movs r3, #1 c726: 9a0e ldr r2, [sp, #56] ; 0x38 c728: a91a add r1, sp, #104 ; 0x68 c72a: a829 add r0, sp, #164 ; 0xa4 c72c: 4cbf ldr r4, [pc, #764] ; (ca2c ) c72e: 47a0 blx r4 int16_t mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); c730: 2100 movs r1, #0 c732: a829 add r0, sp, #164 ; 0xa4 c734: 4bbe ldr r3, [pc, #760] ; (ca30 ) c736: 4798 blx r3 c738: 900e str r0, [sp, #56] ; 0x38 a.x2 = sh_area.x2; c73a: f9bd 305c ldrsh.w r3, [sp, #92] ; 0x5c c73e: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 a.x1 = a.x2 - corner_size + 1; c742: fa1f fb89 uxth.w fp, r9 c746: 3301 adds r3, #1 c748: eba3 030b sub.w r3, r3, fp c74c: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 a.y1 = sh_area.y1; c750: f9bd 305a ldrsh.w r3, [sp, #90] ; 0x5a c754: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 a.y2 = a.y1 + corner_size - 1; c758: 3b01 subs r3, #1 c75a: 445b add r3, fp c75c: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 bool has_com = _lv_area_intersect(&ca, &a, clip); c760: 9a04 ldr r2, [sp, #16] c762: a91c add r1, sp, #112 ; 0x70 c764: a81e add r0, sp, #120 ; 0x78 c766: 4bb3 ldr r3, [pc, #716] ; (ca34 ) c768: 4798 blx r3 if(has_com) { c76a: 2800 cmp r0, #0 c76c: d072 beq.n c854 if(ca.y2 > h_half) ca.y2 = h_half; c76e: f9bd 307e ldrsh.w r3, [sp, #126] ; 0x7e c772: 990c ldr r1, [sp, #48] ; 0x30 c774: 428b cmp r3, r1 c776: bfc4 itt gt c778: 460b movgt r3, r1 c77a: f8ad 307e strhgt.w r3, [sp, #126] ; 0x7e if(ca.x1 <= w_half) ca.x1 = w_half + 1; c77e: f9bd 3078 ldrsh.w r3, [sp, #120] ; 0x78 c782: 9a0d ldr r2, [sp, #52] ; 0x34 c784: 4293 cmp r3, r2 c786: dc03 bgt.n c790 c788: 9b10 ldr r3, [sp, #64] ; 0x40 c78a: 3301 adds r3, #1 c78c: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 c790: f9bd 2078 ldrsh.w r2, [sp, #120] ; 0x78 c794: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c c798: 3301 adds r3, #1 c79a: 1a9b subs r3, r3, r2 c79c: b21b sxth r3, r3 c79e: 9308 str r3, [sp, #32] if(w > 0) { c7a0: 2b00 cmp r3, #0 c7a2: dd57 ble.n c854 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c7a4: f9bd 707e ldrsh.w r7, [sp, #126] ; 0x7e c7a8: f9bd 407a ldrsh.w r4, [sp, #122] ; 0x7a sh_buf_tmp += corner_size * (ca.y1 - a.y1); c7ac: f9bd 5072 ldrsh.w r5, [sp, #114] ; 0x72 c7b0: 1b65 subs r5, r4, r5 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); c7b2: f9bd 3070 ldrsh.w r3, [sp, #112] ; 0x70 c7b6: 1ad2 subs r2, r2, r3 sh_buf_tmp += corner_size * (ca.y1 - a.y1); c7b8: fb09 2505 mla r5, r9, r5, r2 c7bc: 9b0a ldr r3, [sp, #40] ; 0x28 c7be: 441d add r5, r3 c7c0: f10d 0277 add.w r2, sp, #119 ; 0x77 uint8_t * d8 = (uint8_t *)dst; c7c4: ab22 add r3, sp, #136 ; 0x88 while(len) { c7c6: a824 add r0, sp, #144 ; 0x90 *d8 = *s8; c7c8: f812 1f01 ldrb.w r1, [r2, #1]! c7cc: f803 1b01 strb.w r1, [r3], #1 while(len) { c7d0: 4283 cmp r3, r0 c7d2: d1f9 bne.n c7c8 fa.y2 = fa.y1; c7d4: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a c7d8: f8ad 308e strh.w r3, [sp, #142] ; 0x8e c7dc: 3701 adds r7, #1 c7de: 1b3f subs r7, r7, r4 for(y = 0; y < h; y++) { c7e0: b23f sxth r7, r7 c7e2: 2f00 cmp r7, #0 c7e4: dd36 ble.n c854 c7e6: 2600 movs r6, #0 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, c7e8: f8df 8254 ldr.w r8, [pc, #596] ; ca40 c7ec: f8cd b044 str.w fp, [sp, #68] ; 0x44 c7f0: 46bb mov fp, r7 c7f2: 9b09 ldr r3, [sp, #36] ; 0x24 c7f4: 930b str r3, [sp, #44] ; 0x2c _lv_memcpy(mask_buf, sh_buf_tmp, w); c7f6: 9a08 ldr r2, [sp, #32] c7f8: 4629 mov r1, r5 c7fa: 9f05 ldr r7, [sp, #20] c7fc: 4638 mov r0, r7 c7fe: 4c8e ldr r4, [pc, #568] ; (ca38 ) c800: 47a0 blx r4 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); c802: ac30 add r4, sp, #192 ; 0xc0 c804: 9b08 ldr r3, [sp, #32] c806: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a c80a: f934 1d38 ldrsh.w r1, [r4, #-56]! c80e: 9705 str r7, [sp, #20] c810: 4638 mov r0, r7 c812: 4f8a ldr r7, [pc, #552] ; (ca3c ) c814: 47b8 blx r7 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; c816: 2801 cmp r0, #1 c818: bf08 it eq c81a: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, c81c: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 c820: 9302 str r3, [sp, #8] c822: 9a0b ldr r2, [sp, #44] ; 0x2c c824: 9201 str r2, [sp, #4] c826: 9000 str r0, [sp, #0] c828: 9b05 ldr r3, [sp, #20] c82a: f8ba 201e ldrh.w r2, [sl, #30] c82e: 4621 mov r1, r4 c830: 9804 ldr r0, [sp, #16] c832: 47c0 blx r8 fa.y1++; c834: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a c838: 3301 adds r3, #1 c83a: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fa.y2++; c83e: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e c842: 3301 adds r3, #1 c844: f8ad 308e strh.w r3, [sp, #142] ; 0x8e c848: 444d add r5, r9 for(y = 0; y < h; y++) { c84a: 3601 adds r6, #1 c84c: 455e cmp r6, fp c84e: d1d2 bne.n c7f6 c850: f8dd b044 ldr.w fp, [sp, #68] ; 0x44 a.x2 = sh_area.x2; c854: f9bd 305c ldrsh.w r3, [sp, #92] ; 0x5c c858: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 a.x1 = a.x2 - corner_size + 1; c85c: 3301 adds r3, #1 c85e: eba3 030b sub.w r3, r3, fp c862: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 a.y1 = sh_area.y2 - corner_size + 1; c866: f9bd 205e ldrsh.w r2, [sp, #94] ; 0x5e c86a: 1c53 adds r3, r2, #1 c86c: eba3 030b sub.w r3, r3, fp c870: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 a.y2 = sh_area.y2; c874: f8ad 2076 strh.w r2, [sp, #118] ; 0x76 has_com = _lv_area_intersect(&ca, &a, clip); c878: 9a04 ldr r2, [sp, #16] c87a: a91c add r1, sp, #112 ; 0x70 c87c: a81e add r0, sp, #120 ; 0x78 c87e: 4b6d ldr r3, [pc, #436] ; (ca34 ) c880: 4798 blx r3 if(has_com) { c882: 2800 cmp r0, #0 c884: d073 beq.n c96e if(ca.y1 <= h_half) ca.y1 = h_half + 1; c886: f9bd 307a ldrsh.w r3, [sp, #122] ; 0x7a c88a: 9a0c ldr r2, [sp, #48] ; 0x30 c88c: 4293 cmp r3, r2 c88e: dc03 bgt.n c898 c890: 9b0f ldr r3, [sp, #60] ; 0x3c c892: 3301 adds r3, #1 c894: f8ad 307a strh.w r3, [sp, #122] ; 0x7a if(ca.x1 <= w_half) ca.x1 = w_half + 1; c898: f9bd 3078 ldrsh.w r3, [sp, #120] ; 0x78 c89c: 9a0d ldr r2, [sp, #52] ; 0x34 c89e: 4293 cmp r3, r2 c8a0: dc03 bgt.n c8aa c8a2: 9b10 ldr r3, [sp, #64] ; 0x40 c8a4: 3301 adds r3, #1 c8a6: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c8aa: f9bd 2078 ldrsh.w r2, [sp, #120] ; 0x78 c8ae: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c c8b2: 3301 adds r3, #1 c8b4: 1a9b subs r3, r3, r2 c8b6: b21b sxth r3, r3 c8b8: 9308 str r3, [sp, #32] if(w > 0) { c8ba: 2b00 cmp r3, #0 c8bc: dd57 ble.n c96e return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c8be: f9bd 407e ldrsh.w r4, [sp, #126] ; 0x7e c8c2: f9bd 607a ldrsh.w r6, [sp, #122] ; 0x7a sh_buf_tmp += corner_size * (a.y2 - ca.y2); c8c6: f9bd 5076 ldrsh.w r5, [sp, #118] ; 0x76 c8ca: 1b2d subs r5, r5, r4 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); c8cc: f9bd 3070 ldrsh.w r3, [sp, #112] ; 0x70 c8d0: 1ad2 subs r2, r2, r3 sh_buf_tmp += corner_size * (a.y2 - ca.y2); c8d2: fb09 2505 mla r5, r9, r5, r2 c8d6: 9b0a ldr r3, [sp, #40] ; 0x28 c8d8: 441d add r5, r3 c8da: f10d 0277 add.w r2, sp, #119 ; 0x77 uint8_t * d8 = (uint8_t *)dst; c8de: ab22 add r3, sp, #136 ; 0x88 while(len) { c8e0: a824 add r0, sp, #144 ; 0x90 *d8 = *s8; c8e2: f812 1f01 ldrb.w r1, [r2, #1]! c8e6: f803 1b01 strb.w r1, [r3], #1 while(len) { c8ea: 4283 cmp r3, r0 c8ec: d1f9 bne.n c8e2 fa.y1 = fa.y2; /*Fill from bottom to top*/ c8ee: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e c8f2: f8ad 308a strh.w r3, [sp, #138] ; 0x8a c8f6: 1c67 adds r7, r4, #1 c8f8: 1bbf subs r7, r7, r6 for(y = 0; y < h; y++) { c8fa: b23f sxth r7, r7 c8fc: 2f00 cmp r7, #0 c8fe: dd36 ble.n c96e c900: 2600 movs r6, #0 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, c902: f8df 813c ldr.w r8, [pc, #316] ; ca40 c906: f8cd b040 str.w fp, [sp, #64] ; 0x40 c90a: 46bb mov fp, r7 c90c: 9b09 ldr r3, [sp, #36] ; 0x24 c90e: 930b str r3, [sp, #44] ; 0x2c _lv_memcpy(mask_buf, sh_buf_tmp, w); c910: 9a08 ldr r2, [sp, #32] c912: 4629 mov r1, r5 c914: 9f05 ldr r7, [sp, #20] c916: 4638 mov r0, r7 c918: 4c47 ldr r4, [pc, #284] ; (ca38 ) c91a: 47a0 blx r4 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); c91c: ac30 add r4, sp, #192 ; 0xc0 c91e: 9b08 ldr r3, [sp, #32] c920: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a c924: f934 1d38 ldrsh.w r1, [r4, #-56]! c928: 9705 str r7, [sp, #20] c92a: 4638 mov r0, r7 c92c: 4f43 ldr r7, [pc, #268] ; (ca3c ) c92e: 47b8 blx r7 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; c930: 2801 cmp r0, #1 c932: bf08 it eq c934: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, c936: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 c93a: 9302 str r3, [sp, #8] c93c: 9a0b ldr r2, [sp, #44] ; 0x2c c93e: 9201 str r2, [sp, #4] c940: 9000 str r0, [sp, #0] c942: 9b05 ldr r3, [sp, #20] c944: f8ba 201e ldrh.w r2, [sl, #30] c948: 4621 mov r1, r4 c94a: 9804 ldr r0, [sp, #16] c94c: 47c0 blx r8 fa.y1--; c94e: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a c952: 3b01 subs r3, #1 c954: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fa.y2--; c958: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e c95c: 3b01 subs r3, #1 c95e: f8ad 308e strh.w r3, [sp, #142] ; 0x8e c962: 444d add r5, r9 for(y = 0; y < h; y++) { c964: 3601 adds r6, #1 c966: 455e cmp r6, fp c968: d1d2 bne.n c910 c96a: f8dd b040 ldr.w fp, [sp, #64] ; 0x40 a.x2 = sh_area.x2; c96e: f9bd 305c ldrsh.w r3, [sp, #92] ; 0x5c c972: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 a.x1 = a.x2 - corner_size + 1; c976: 3301 adds r3, #1 c978: eba3 030b sub.w r3, r3, fp c97c: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 a.y1 = sh_area.y1 + corner_size; c980: f8bd 305a ldrh.w r3, [sp, #90] ; 0x5a c984: 445b add r3, fp c986: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 a.y2 = sh_area.y2 - corner_size; c98a: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e c98e: eba3 030b sub.w r3, r3, fp c992: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 has_com = _lv_area_intersect(&ca, &a, clip); c996: 9a04 ldr r2, [sp, #16] c998: a91c add r1, sp, #112 ; 0x70 c99a: a81e add r0, sp, #120 ; 0x78 c99c: 4b25 ldr r3, [pc, #148] ; (ca34 ) c99e: 4798 blx r3 if(has_com) { c9a0: 2800 cmp r0, #0 c9a2: f000 8085 beq.w cab0 if(simple_mode) ca.x1 = LV_MATH_MAX(ca.x1, coords->x2); c9a6: 9b07 ldr r3, [sp, #28] c9a8: b14b cbz r3, c9be c9aa: 9b06 ldr r3, [sp, #24] c9ac: f9b3 3004 ldrsh.w r3, [r3, #4] c9b0: f9bd 2078 ldrsh.w r2, [sp, #120] ; 0x78 c9b4: 4293 cmp r3, r2 c9b6: bfb8 it lt c9b8: 4613 movlt r3, r2 c9ba: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c9be: f9bd 3078 ldrsh.w r3, [sp, #120] ; 0x78 c9c2: f8bd 207c ldrh.w r2, [sp, #124] ; 0x7c c9c6: 3201 adds r2, #1 c9c8: 1ad2 subs r2, r2, r3 c9ca: fa0f f882 sxth.w r8, r2 if(w > 0) { c9ce: f1b8 0f00 cmp.w r8, #0 c9d2: dd6d ble.n cab0 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c9d4: f8bd 407e ldrh.w r4, [sp, #126] ; 0x7e c9d8: 3401 adds r4, #1 c9da: f8bd 207a ldrh.w r2, [sp, #122] ; 0x7a c9de: 1aa4 subs r4, r4, r2 c9e0: b224 sxth r4, r4 sh_buf_tmp = sh_buf + corner_size * (corner_size - 1); c9e2: f109 31ff add.w r1, r9, #4294967295 sh_buf_tmp += ca.x1 - a.x1; c9e6: f9bd 2070 ldrsh.w r2, [sp, #112] ; 0x70 c9ea: 1a9b subs r3, r3, r2 c9ec: fb09 3301 mla r3, r9, r1, r3 c9f0: 9a0a ldr r2, [sp, #40] ; 0x28 c9f2: 18d3 adds r3, r2, r3 c9f4: 9308 str r3, [sp, #32] c9f6: f10d 0277 add.w r2, sp, #119 ; 0x77 uint8_t * d8 = (uint8_t *)dst; c9fa: ab22 add r3, sp, #136 ; 0x88 while(len) { c9fc: a824 add r0, sp, #144 ; 0x90 *d8 = *s8; c9fe: f812 1f01 ldrb.w r1, [r2, #1]! ca02: f803 1b01 strb.w r1, [r3], #1 while(len) { ca06: 4283 cmp r3, r0 ca08: d1f9 bne.n c9fe fa.y2 = fa.y1; ca0a: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a ca0e: f8ad 308e strh.w r3, [sp, #142] ; 0x8e for(y = 0; y < h; y++) { ca12: 4625 mov r5, r4 ca14: 2c00 cmp r4, #0 ca16: dd4b ble.n cab0 ca18: 2400 movs r4, #0 _lv_memcpy(mask_buf, sh_buf_tmp, w); ca1a: 4f07 ldr r7, [pc, #28] ; (ca38 ) _lv_blend_fill(clip, &fa, ca1c: f8cd 902c str.w r9, [sp, #44] ; 0x2c ca20: 46a9 mov r9, r5 ca22: 9d07 ldr r5, [sp, #28] ca24: e03a b.n ca9c ca26: bf00 nop ca28: 0001293d .word 0x0001293d ca2c: 0000c02d .word 0x0000c02d ca30: 0000bdc1 .word 0x0000bdc1 ca34: 00011519 .word 0x00011519 ca38: 00012655 .word 0x00012655 ca3c: 0000be1d .word 0x0000be1d ca40: 00007751 .word 0x00007751 else if(dsc->shadow_ofs_x != 0 || dsc->shadow_ofs_y != 0) simple_mode = false; ca44: 2300 movs r3, #0 ca46: 9307 str r3, [sp, #28] ca48: e662 b.n c710 ca4a: 2300 movs r3, #0 ca4c: 9307 str r3, [sp, #28] ca4e: e65f b.n c710 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); ca50: 4643 mov r3, r8 ca52: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a ca56: f9bd 1088 ldrsh.w r1, [sp, #136] ; 0x88 ca5a: 9805 ldr r0, [sp, #20] ca5c: 4e23 ldr r6, [pc, #140] ; (caec ) ca5e: 47b0 blx r6 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; ca60: 2801 cmp r0, #1 ca62: bf08 it eq ca64: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, ca66: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 ca6a: 9302 str r3, [sp, #8] ca6c: f89a 3028 ldrb.w r3, [sl, #40] ; 0x28 ca70: 9301 str r3, [sp, #4] ca72: 9000 str r0, [sp, #0] ca74: 9b05 ldr r3, [sp, #20] ca76: f8ba 201e ldrh.w r2, [sl, #30] ca7a: a922 add r1, sp, #136 ; 0x88 ca7c: 9804 ldr r0, [sp, #16] ca7e: 4e1c ldr r6, [pc, #112] ; (caf0 ) ca80: 47b0 blx r6 fa.y1++; ca82: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a ca86: 3301 adds r3, #1 ca88: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fa.y2++; ca8c: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e ca90: 3301 adds r3, #1 ca92: f8ad 308e strh.w r3, [sp, #142] ; 0x8e for(y = 0; y < h; y++) { ca96: 3401 adds r4, #1 ca98: 454c cmp r4, r9 ca9a: d007 beq.n caac _lv_memcpy(mask_buf, sh_buf_tmp, w); ca9c: 4642 mov r2, r8 ca9e: 9908 ldr r1, [sp, #32] caa0: 9805 ldr r0, [sp, #20] caa2: 47b8 blx r7 if(simple_mode) { caa4: 2d00 cmp r5, #0 caa6: d0d3 beq.n ca50 mask_res = LV_DRAW_MASK_RES_CHANGED; caa8: 2002 movs r0, #2 caaa: e7dc b.n ca66 caac: f8dd 902c ldr.w r9, [sp, #44] ; 0x2c for(y = 0; y < corner_size; y++) { cab0: f1b9 0f00 cmp.w r9, #0 cab4: dd1e ble.n caf4 for(x = 0; x < corner_size / 2; x++) { cab6: eb09 77d9 add.w r7, r9, r9, lsr #31 caba: 107f asrs r7, r7, #1 cabc: 9d0a ldr r5, [sp, #40] ; 0x28 cabe: 2600 movs r6, #0 cac0: e00c b.n cadc lv_opa_t tmp = sh_buf_tmp[x]; cac2: 7819 ldrb r1, [r3, #0] sh_buf_tmp[x] = sh_buf_tmp[corner_size - x - 1]; cac4: f812 0c01 ldrb.w r0, [r2, #-1] cac8: f803 0b01 strb.w r0, [r3], #1 sh_buf_tmp[corner_size - x - 1] = tmp; cacc: f802 1d01 strb.w r1, [r2, #-1]! for(x = 0; x < corner_size / 2; x++) { cad0: 42a3 cmp r3, r4 cad2: d1f6 bne.n cac2 cad4: 444d add r5, r9 for(y = 0; y < corner_size; y++) { cad6: 3601 adds r6, #1 cad8: 45b1 cmp r9, r6 cada: d00b beq.n caf4 for(x = 0; x < corner_size / 2; x++) { cadc: 2f00 cmp r7, #0 cade: ddf9 ble.n cad4 cae0: 462b mov r3, r5 cae2: eb05 0209 add.w r2, r5, r9 cae6: 19ec adds r4, r5, r7 cae8: e7eb b.n cac2 caea: bf00 nop caec: 0000be1d .word 0x0000be1d caf0: 00007751 .word 0x00007751 a.x1 = sh_area.x1; caf4: f9bd 3058 ldrsh.w r3, [sp, #88] ; 0x58 caf8: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 a.x2 = a.x1 + corner_size - 1; cafc: 3b01 subs r3, #1 cafe: 445b add r3, fp cb00: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 a.y1 = sh_area.y1; cb04: f9bd 305a ldrsh.w r3, [sp, #90] ; 0x5a cb08: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 a.y2 = a.y1 + corner_size - 1; cb0c: 3b01 subs r3, #1 cb0e: 445b add r3, fp cb10: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 has_com = _lv_area_intersect(&ca, &a, clip); cb14: 9a04 ldr r2, [sp, #16] cb16: a91c add r1, sp, #112 ; 0x70 cb18: a81e add r0, sp, #120 ; 0x78 cb1a: 4bae ldr r3, [pc, #696] ; (cdd4 ) cb1c: 4798 blx r3 if(has_com) { cb1e: 2800 cmp r0, #0 cb20: d071 beq.n cc06 if(ca.y2 > h_half) ca.y2 = h_half; cb22: f9bd 307e ldrsh.w r3, [sp, #126] ; 0x7e cb26: 990c ldr r1, [sp, #48] ; 0x30 cb28: 428b cmp r3, r1 cb2a: bfc4 itt gt cb2c: 460b movgt r3, r1 cb2e: f8ad 307e strhgt.w r3, [sp, #126] ; 0x7e if(ca.x2 > w_half) ca.x2 = w_half; cb32: f9bd 307c ldrsh.w r3, [sp, #124] ; 0x7c cb36: 990d ldr r1, [sp, #52] ; 0x34 cb38: 428b cmp r3, r1 cb3a: bfc4 itt gt cb3c: 460b movgt r3, r1 cb3e: f8ad 307c strhgt.w r3, [sp, #124] ; 0x7c return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); cb42: f9bd 2078 ldrsh.w r2, [sp, #120] ; 0x78 cb46: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c cb4a: 3301 adds r3, #1 cb4c: 1a9b subs r3, r3, r2 cb4e: b21b sxth r3, r3 cb50: 9308 str r3, [sp, #32] if(w > 0) { cb52: 2b00 cmp r3, #0 cb54: dd57 ble.n cc06 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); cb56: f9bd 707e ldrsh.w r7, [sp, #126] ; 0x7e cb5a: f9bd 407a ldrsh.w r4, [sp, #122] ; 0x7a sh_buf_tmp += corner_size * (ca.y1 - a.y1); cb5e: f9bd 5072 ldrsh.w r5, [sp, #114] ; 0x72 cb62: 1b65 subs r5, r4, r5 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); cb64: f9bd 3070 ldrsh.w r3, [sp, #112] ; 0x70 cb68: 1ad2 subs r2, r2, r3 sh_buf_tmp += corner_size * (ca.y1 - a.y1); cb6a: fb09 2505 mla r5, r9, r5, r2 cb6e: 9b0a ldr r3, [sp, #40] ; 0x28 cb70: 441d add r5, r3 cb72: f10d 0277 add.w r2, sp, #119 ; 0x77 uint8_t * d8 = (uint8_t *)dst; cb76: ab22 add r3, sp, #136 ; 0x88 while(len) { cb78: a824 add r0, sp, #144 ; 0x90 *d8 = *s8; cb7a: f812 1f01 ldrb.w r1, [r2, #1]! cb7e: f803 1b01 strb.w r1, [r3], #1 while(len) { cb82: 4283 cmp r3, r0 cb84: d1f9 bne.n cb7a fa.y2 = fa.y1; cb86: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a cb8a: f8ad 308e strh.w r3, [sp, #142] ; 0x8e cb8e: 3701 adds r7, #1 cb90: 1b3f subs r7, r7, r4 for(y = 0; y < h; y++) { cb92: b23f sxth r7, r7 cb94: 2f00 cmp r7, #0 cb96: dd36 ble.n cc06 cb98: 2600 movs r6, #0 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, cb9a: f8df 8244 ldr.w r8, [pc, #580] ; cde0 cb9e: f8cd b040 str.w fp, [sp, #64] ; 0x40 cba2: 46bb mov fp, r7 cba4: 9b09 ldr r3, [sp, #36] ; 0x24 cba6: 930b str r3, [sp, #44] ; 0x2c _lv_memcpy(mask_buf, sh_buf_tmp, w); cba8: 9a08 ldr r2, [sp, #32] cbaa: 4629 mov r1, r5 cbac: 9f05 ldr r7, [sp, #20] cbae: 4638 mov r0, r7 cbb0: 4c89 ldr r4, [pc, #548] ; (cdd8 ) cbb2: 47a0 blx r4 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); cbb4: ac30 add r4, sp, #192 ; 0xc0 cbb6: 9b08 ldr r3, [sp, #32] cbb8: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a cbbc: f934 1d38 ldrsh.w r1, [r4, #-56]! cbc0: 9705 str r7, [sp, #20] cbc2: 4638 mov r0, r7 cbc4: 4f85 ldr r7, [pc, #532] ; (cddc ) cbc6: 47b8 blx r7 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; cbc8: 2801 cmp r0, #1 cbca: bf08 it eq cbcc: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, cbce: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 cbd2: 9302 str r3, [sp, #8] cbd4: 9a0b ldr r2, [sp, #44] ; 0x2c cbd6: 9201 str r2, [sp, #4] cbd8: 9000 str r0, [sp, #0] cbda: 9b05 ldr r3, [sp, #20] cbdc: f8ba 201e ldrh.w r2, [sl, #30] cbe0: 4621 mov r1, r4 cbe2: 9804 ldr r0, [sp, #16] cbe4: 47c0 blx r8 fa.y1++; cbe6: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a cbea: 3301 adds r3, #1 cbec: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fa.y2++; cbf0: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e cbf4: 3301 adds r3, #1 cbf6: f8ad 308e strh.w r3, [sp, #142] ; 0x8e cbfa: 444d add r5, r9 for(y = 0; y < h; y++) { cbfc: 3601 adds r6, #1 cbfe: 455e cmp r6, fp cc00: d1d2 bne.n cba8 cc02: f8dd b040 ldr.w fp, [sp, #64] ; 0x40 a.x1 = sh_area.x1; cc06: f9bd 3058 ldrsh.w r3, [sp, #88] ; 0x58 cc0a: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 a.x2 = a.x1 + corner_size - 1; cc0e: 3b01 subs r3, #1 cc10: 445b add r3, fp cc12: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 a.y1 = sh_area.y2 - corner_size + 1; cc16: f9bd 205e ldrsh.w r2, [sp, #94] ; 0x5e cc1a: 1c53 adds r3, r2, #1 cc1c: eba3 030b sub.w r3, r3, fp cc20: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 a.y2 = sh_area.y2; cc24: f8ad 2076 strh.w r2, [sp, #118] ; 0x76 has_com = _lv_area_intersect(&ca, &a, clip); cc28: 9a04 ldr r2, [sp, #16] cc2a: a91c add r1, sp, #112 ; 0x70 cc2c: a81e add r0, sp, #120 ; 0x78 cc2e: 4b69 ldr r3, [pc, #420] ; (cdd4 ) cc30: 4798 blx r3 if(has_com) { cc32: 2800 cmp r0, #0 cc34: d072 beq.n cd1c if(ca.y1 <= h_half) ca.y1 = h_half + 1; cc36: f9bd 307a ldrsh.w r3, [sp, #122] ; 0x7a cc3a: 9a0c ldr r2, [sp, #48] ; 0x30 cc3c: 4293 cmp r3, r2 cc3e: dc03 bgt.n cc48 cc40: 9b0f ldr r3, [sp, #60] ; 0x3c cc42: 3301 adds r3, #1 cc44: f8ad 307a strh.w r3, [sp, #122] ; 0x7a if(ca.x2 > w_half) ca.x2 = w_half; cc48: f9bd 307c ldrsh.w r3, [sp, #124] ; 0x7c cc4c: 990d ldr r1, [sp, #52] ; 0x34 cc4e: 428b cmp r3, r1 cc50: bfc4 itt gt cc52: 460b movgt r3, r1 cc54: f8ad 307c strhgt.w r3, [sp, #124] ; 0x7c return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); cc58: f9bd 2078 ldrsh.w r2, [sp, #120] ; 0x78 cc5c: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c cc60: 3301 adds r3, #1 cc62: 1a9b subs r3, r3, r2 cc64: b21b sxth r3, r3 cc66: 9308 str r3, [sp, #32] if(w > 0) { cc68: 2b00 cmp r3, #0 cc6a: dd57 ble.n cd1c return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); cc6c: f9bd 407e ldrsh.w r4, [sp, #126] ; 0x7e cc70: f9bd 607a ldrsh.w r6, [sp, #122] ; 0x7a sh_buf_tmp += corner_size * (a.y2 - ca.y2); cc74: f9bd 5076 ldrsh.w r5, [sp, #118] ; 0x76 cc78: 1b2d subs r5, r5, r4 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); cc7a: f9bd 3070 ldrsh.w r3, [sp, #112] ; 0x70 cc7e: 1ad2 subs r2, r2, r3 sh_buf_tmp += corner_size * (a.y2 - ca.y2); cc80: fb09 2505 mla r5, r9, r5, r2 cc84: 9b0a ldr r3, [sp, #40] ; 0x28 cc86: 441d add r5, r3 cc88: f10d 0277 add.w r2, sp, #119 ; 0x77 uint8_t * d8 = (uint8_t *)dst; cc8c: ab22 add r3, sp, #136 ; 0x88 while(len) { cc8e: a824 add r0, sp, #144 ; 0x90 *d8 = *s8; cc90: f812 1f01 ldrb.w r1, [r2, #1]! cc94: f803 1b01 strb.w r1, [r3], #1 while(len) { cc98: 4283 cmp r3, r0 cc9a: d1f9 bne.n cc90 fa.y1 = fa.y2; /*Fill from bottom to top*/ cc9c: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e cca0: f8ad 308a strh.w r3, [sp, #138] ; 0x8a cca4: 1c67 adds r7, r4, #1 cca6: 1bbf subs r7, r7, r6 for(y = 0; y < h; y++) { cca8: b23f sxth r7, r7 ccaa: 2f00 cmp r7, #0 ccac: dd36 ble.n cd1c ccae: 2600 movs r6, #0 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, ccb0: f8df 812c ldr.w r8, [pc, #300] ; cde0 ccb4: f8cd b030 str.w fp, [sp, #48] ; 0x30 ccb8: 46bb mov fp, r7 ccba: 9b09 ldr r3, [sp, #36] ; 0x24 ccbc: 930b str r3, [sp, #44] ; 0x2c _lv_memcpy(mask_buf, sh_buf_tmp, w); ccbe: 9a08 ldr r2, [sp, #32] ccc0: 4629 mov r1, r5 ccc2: 9f05 ldr r7, [sp, #20] ccc4: 4638 mov r0, r7 ccc6: 4c44 ldr r4, [pc, #272] ; (cdd8 ) ccc8: 47a0 blx r4 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); ccca: ac30 add r4, sp, #192 ; 0xc0 cccc: 9b08 ldr r3, [sp, #32] ccce: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a ccd2: f934 1d38 ldrsh.w r1, [r4, #-56]! ccd6: 9705 str r7, [sp, #20] ccd8: 4638 mov r0, r7 ccda: 4f40 ldr r7, [pc, #256] ; (cddc ) ccdc: 47b8 blx r7 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; ccde: 2801 cmp r0, #1 cce0: bf08 it eq cce2: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, cce4: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 cce8: 9302 str r3, [sp, #8] ccea: 9a0b ldr r2, [sp, #44] ; 0x2c ccec: 9201 str r2, [sp, #4] ccee: 9000 str r0, [sp, #0] ccf0: 9b05 ldr r3, [sp, #20] ccf2: f8ba 201e ldrh.w r2, [sl, #30] ccf6: 4621 mov r1, r4 ccf8: 9804 ldr r0, [sp, #16] ccfa: 47c0 blx r8 fa.y1--; ccfc: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a cd00: 3b01 subs r3, #1 cd02: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fa.y2--; cd06: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e cd0a: 3b01 subs r3, #1 cd0c: f8ad 308e strh.w r3, [sp, #142] ; 0x8e cd10: 444d add r5, r9 for(y = 0; y < h; y++) { cd12: 3601 adds r6, #1 cd14: 455e cmp r6, fp cd16: d1d2 bne.n ccbe cd18: f8dd b030 ldr.w fp, [sp, #48] ; 0x30 a.x1 = sh_area.x1; cd1c: f9bd 3058 ldrsh.w r3, [sp, #88] ; 0x58 cd20: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 a.x2 = a.x1 + corner_size - 1; cd24: 3b01 subs r3, #1 cd26: 445b add r3, fp cd28: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 a.y1 = sh_area.y1 + corner_size; cd2c: f8bd 305a ldrh.w r3, [sp, #90] ; 0x5a cd30: 445b add r3, fp cd32: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 a.y2 = sh_area.y2 - corner_size; cd36: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e cd3a: eba3 030b sub.w r3, r3, fp cd3e: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 has_com = _lv_area_intersect(&ca, &a, clip); cd42: 9a04 ldr r2, [sp, #16] cd44: a91c add r1, sp, #112 ; 0x70 cd46: a81e add r0, sp, #120 ; 0x78 cd48: 4b22 ldr r3, [pc, #136] ; (cdd4 ) cd4a: 4798 blx r3 if(has_com) { cd4c: 2800 cmp r0, #0 cd4e: d079 beq.n ce44 if(simple_mode) ca.x2 = LV_MATH_MIN(coords->x1, ca.x2); cd50: 9b07 ldr r3, [sp, #28] cd52: b14b cbz r3, cd68 cd54: f9bd 307c ldrsh.w r3, [sp, #124] ; 0x7c cd58: 9a06 ldr r2, [sp, #24] cd5a: f9b2 2000 ldrsh.w r2, [r2] cd5e: 4293 cmp r3, r2 cd60: bfa8 it ge cd62: 4613 movge r3, r2 cd64: f8ad 307c strh.w r3, [sp, #124] ; 0x7c return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); cd68: f9bd 3078 ldrsh.w r3, [sp, #120] ; 0x78 cd6c: f8bd 807c ldrh.w r8, [sp, #124] ; 0x7c cd70: f108 0801 add.w r8, r8, #1 cd74: eba8 0803 sub.w r8, r8, r3 cd78: fa0f f888 sxth.w r8, r8 if(w > 0) { cd7c: f1b8 0f00 cmp.w r8, #0 cd80: dd60 ble.n ce44 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); cd82: f8bd 407e ldrh.w r4, [sp, #126] ; 0x7e cd86: 3401 adds r4, #1 cd88: f8bd 207a ldrh.w r2, [sp, #122] ; 0x7a cd8c: 1aa4 subs r4, r4, r2 cd8e: b224 sxth r4, r4 sh_buf_tmp = sh_buf + corner_size * (corner_size - 1); cd90: f109 31ff add.w r1, r9, #4294967295 sh_buf_tmp += ca.x1 - a.x1; cd94: f9bd 2070 ldrsh.w r2, [sp, #112] ; 0x70 cd98: 1a9b subs r3, r3, r2 cd9a: fb09 3301 mla r3, r9, r1, r3 cd9e: 9a0a ldr r2, [sp, #40] ; 0x28 cda0: 18d3 adds r3, r2, r3 cda2: 9308 str r3, [sp, #32] cda4: f10d 0277 add.w r2, sp, #119 ; 0x77 uint8_t * d8 = (uint8_t *)dst; cda8: ab22 add r3, sp, #136 ; 0x88 while(len) { cdaa: a824 add r0, sp, #144 ; 0x90 *d8 = *s8; cdac: f812 1f01 ldrb.w r1, [r2, #1]! cdb0: f803 1b01 strb.w r1, [r3], #1 while(len) { cdb4: 4283 cmp r3, r0 cdb6: d1f9 bne.n cdac fa.y2 = fa.y1; cdb8: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a cdbc: f8ad 308e strh.w r3, [sp, #142] ; 0x8e for(y = 0; y < h; y++) { cdc0: 4625 mov r5, r4 cdc2: 2c00 cmp r4, #0 cdc4: dd3e ble.n ce44 cdc6: 2400 movs r4, #0 _lv_memcpy(mask_buf, sh_buf_tmp, w); cdc8: 4f03 ldr r7, [pc, #12] ; (cdd8 ) _lv_blend_fill(clip, &fa, cdca: f8cd 902c str.w r9, [sp, #44] ; 0x2c cdce: 46a9 mov r9, r5 cdd0: 9d07 ldr r5, [sp, #28] cdd2: e02d b.n ce30 cdd4: 00011519 .word 0x00011519 cdd8: 00012655 .word 0x00012655 cddc: 0000be1d .word 0x0000be1d cde0: 00007751 .word 0x00007751 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); cde4: 4643 mov r3, r8 cde6: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a cdea: f9bd 1088 ldrsh.w r1, [sp, #136] ; 0x88 cdee: 9805 ldr r0, [sp, #20] cdf0: 4eaa ldr r6, [pc, #680] ; (d09c ) cdf2: 47b0 blx r6 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; cdf4: 2801 cmp r0, #1 cdf6: bf08 it eq cdf8: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, cdfa: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 cdfe: 9302 str r3, [sp, #8] ce00: f89a 3028 ldrb.w r3, [sl, #40] ; 0x28 ce04: 9301 str r3, [sp, #4] ce06: 9000 str r0, [sp, #0] ce08: 9b05 ldr r3, [sp, #20] ce0a: f8ba 201e ldrh.w r2, [sl, #30] ce0e: a922 add r1, sp, #136 ; 0x88 ce10: 9804 ldr r0, [sp, #16] ce12: 4ea3 ldr r6, [pc, #652] ; (d0a0 ) ce14: 47b0 blx r6 fa.y1++; ce16: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a ce1a: 3301 adds r3, #1 ce1c: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fa.y2++; ce20: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e ce24: 3301 adds r3, #1 ce26: f8ad 308e strh.w r3, [sp, #142] ; 0x8e for(y = 0; y < h; y++) { ce2a: 3401 adds r4, #1 ce2c: 454c cmp r4, r9 ce2e: d007 beq.n ce40 _lv_memcpy(mask_buf, sh_buf_tmp, w); ce30: 4642 mov r2, r8 ce32: 9908 ldr r1, [sp, #32] ce34: 9805 ldr r0, [sp, #20] ce36: 47b8 blx r7 if(simple_mode) { ce38: 2d00 cmp r5, #0 ce3a: d0d3 beq.n cde4 mask_res = LV_DRAW_MASK_RES_CHANGED; ce3c: 2002 movs r0, #2 ce3e: e7dc b.n cdfa ce40: f8dd 902c ldr.w r9, [sp, #44] ; 0x2c a.x1 = sh_area.x1 + corner_size; ce44: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 ce48: 445b add r3, fp ce4a: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 a.x2 = sh_area.x2 - corner_size; ce4e: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c ce52: eba3 030b sub.w r3, r3, fp ce56: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 a.y1 = sh_area.y1; ce5a: f9bd 305a ldrsh.w r3, [sp, #90] ; 0x5a ce5e: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 a.y2 = sh_area.y1 + corner_size - 1; ce62: 3b01 subs r3, #1 ce64: 445b add r3, fp ce66: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 has_com = _lv_area_intersect(&ca, &a, clip); ce6a: 9a04 ldr r2, [sp, #16] ce6c: a91c add r1, sp, #112 ; 0x70 ce6e: a81e add r0, sp, #120 ; 0x78 ce70: 4b8c ldr r3, [pc, #560] ; (d0a4 ) ce72: 4798 blx r3 if(has_com) { ce74: 2800 cmp r0, #0 ce76: d07d beq.n cf74 if(simple_mode) ca.y2 = LV_MATH_MIN(ca.y2, coords->y1); ce78: 9b07 ldr r3, [sp, #28] ce7a: b14b cbz r3, ce90 ce7c: 9b06 ldr r3, [sp, #24] ce7e: f9b3 3002 ldrsh.w r3, [r3, #2] ce82: f9bd 207e ldrsh.w r2, [sp, #126] ; 0x7e ce86: 4293 cmp r3, r2 ce88: bfa8 it ge ce8a: 4613 movge r3, r2 ce8c: f8ad 307e strh.w r3, [sp, #126] ; 0x7e return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); ce90: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c ce94: 3301 adds r3, #1 ce96: f8bd 2078 ldrh.w r2, [sp, #120] ; 0x78 ce9a: 1a9b subs r3, r3, r2 ce9c: b21b sxth r3, r3 ce9e: 9308 str r3, [sp, #32] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); cea0: f9bd 307a ldrsh.w r3, [sp, #122] ; 0x7a cea4: f8bd 507e ldrh.w r5, [sp, #126] ; 0x7e cea8: 3501 adds r5, #1 ceaa: 1aed subs r5, r5, r3 ceac: b22d sxth r5, r5 sh_buf_tmp = sh_buf + corner_size - 1; ceae: 46c8 mov r8, r9 sh_buf_tmp += corner_size * (ca.y1 - a.y1); ceb0: f9bd 4072 ldrsh.w r4, [sp, #114] ; 0x72 ceb4: 1b1c subs r4, r3, r4 sh_buf_tmp = sh_buf + corner_size - 1; ceb6: f109 33ff add.w r3, r9, #4294967295 sh_buf_tmp += corner_size * (ca.y1 - a.y1); ceba: fb09 3404 mla r4, r9, r4, r3 cebe: 9b0a ldr r3, [sp, #40] ; 0x28 cec0: 441c add r4, r3 cec2: f10d 0277 add.w r2, sp, #119 ; 0x77 uint8_t * d8 = (uint8_t *)dst; cec6: ab22 add r3, sp, #136 ; 0x88 while(len) { cec8: a824 add r0, sp, #144 ; 0x90 *d8 = *s8; ceca: f812 1f01 ldrb.w r1, [r2, #1]! cece: f803 1b01 strb.w r1, [r3], #1 while(len) { ced2: 4283 cmp r3, r0 ced4: d1f9 bne.n ceca fa.y2 = fa.y1; ced6: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a ceda: f8ad 308e strh.w r3, [sp, #142] ; 0x8e for(y = 0; y < h; y++) { cede: 462b mov r3, r5 cee0: 2d00 cmp r5, #0 cee2: dd47 ble.n cf74 cee4: 2500 movs r5, #0 _lv_memset(mask_buf, opa_tmp, w); cee6: 4f70 ldr r7, [pc, #448] ; (d0a8 ) _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, cee8: f8cd 902c str.w r9, [sp, #44] ; 0x2c ceec: f8dd 9024 ldr.w r9, [sp, #36] ; 0x24 cef0: f8cd b030 str.w fp, [sp, #48] ; 0x30 cef4: 469b mov fp, r3 cef6: e02a b.n cf4e if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; cef8: f1b9 0fff cmp.w r9, #255 ; 0xff cefc: d12a bne.n cf54 lv_opa_t opa_tmp = sh_buf_tmp[0]; cefe: 4649 mov r1, r9 cf00: e02c b.n cf5c mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); cf02: 9b08 ldr r3, [sp, #32] cf04: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a cf08: f9bd 1088 ldrsh.w r1, [sp, #136] ; 0x88 cf0c: 9805 ldr r0, [sp, #20] cf0e: 4e63 ldr r6, [pc, #396] ; (d09c ) cf10: 47b0 blx r6 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; cf12: 2801 cmp r0, #1 cf14: bf08 it eq cf16: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, cf18: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 cf1c: 9302 str r3, [sp, #8] cf1e: 23ff movs r3, #255 ; 0xff cf20: 9301 str r3, [sp, #4] cf22: 9000 str r0, [sp, #0] cf24: 9b05 ldr r3, [sp, #20] cf26: f8ba 201e ldrh.w r2, [sl, #30] cf2a: a922 add r1, sp, #136 ; 0x88 cf2c: 9804 ldr r0, [sp, #16] cf2e: 4e5c ldr r6, [pc, #368] ; (d0a0 ) cf30: 47b0 blx r6 fa.y1++; cf32: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a cf36: 3301 adds r3, #1 cf38: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fa.y2++; cf3c: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e cf40: 3301 adds r3, #1 cf42: f8ad 308e strh.w r3, [sp, #142] ; 0x8e sh_buf_tmp += corner_size; cf46: 4444 add r4, r8 for(y = 0; y < h; y++) { cf48: 3501 adds r5, #1 cf4a: 455d cmp r5, fp cf4c: d00e beq.n cf6c lv_opa_t opa_tmp = sh_buf_tmp[0]; cf4e: 7823 ldrb r3, [r4, #0] if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; cf50: 2bff cmp r3, #255 ; 0xff cf52: d0d1 beq.n cef8 cf54: fb03 f309 mul.w r3, r3, r9 cf58: f3c3 2107 ubfx r1, r3, #8, #8 _lv_memset(mask_buf, opa_tmp, w); cf5c: 9a08 ldr r2, [sp, #32] cf5e: 9805 ldr r0, [sp, #20] cf60: 47b8 blx r7 if(simple_mode) { cf62: 9b07 ldr r3, [sp, #28] cf64: 2b00 cmp r3, #0 cf66: d0cc beq.n cf02 mask_res = LV_DRAW_MASK_RES_CHANGED; cf68: 2002 movs r0, #2 cf6a: e7d5 b.n cf18 cf6c: f8dd 902c ldr.w r9, [sp, #44] ; 0x2c cf70: f8dd b030 ldr.w fp, [sp, #48] ; 0x30 a.x1 = sh_area.x1 + corner_size; cf74: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 cf78: 445b add r3, fp cf7a: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 a.x2 = sh_area.x2 - corner_size; cf7e: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c cf82: eba3 030b sub.w r3, r3, fp cf86: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 a.y1 = sh_area.y2 - corner_size + 1; cf8a: f9bd 205e ldrsh.w r2, [sp, #94] ; 0x5e cf8e: 1c53 adds r3, r2, #1 cf90: eba3 030b sub.w r3, r3, fp cf94: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 a.y2 = sh_area.y2; cf98: f8ad 2076 strh.w r2, [sp, #118] ; 0x76 has_com = _lv_area_intersect(&ca, &a, clip); cf9c: 9a04 ldr r2, [sp, #16] cf9e: a91c add r1, sp, #112 ; 0x70 cfa0: a81e add r0, sp, #120 ; 0x78 cfa2: 4b40 ldr r3, [pc, #256] ; (d0a4 ) cfa4: 4798 blx r3 if(has_com) { cfa6: 2800 cmp r0, #0 cfa8: f000 8082 beq.w d0b0 if(simple_mode) ca.y1 = LV_MATH_MAX(ca.y1, coords->y2); cfac: 9b07 ldr r3, [sp, #28] cfae: b14b cbz r3, cfc4 cfb0: 9b06 ldr r3, [sp, #24] cfb2: f9b3 3006 ldrsh.w r3, [r3, #6] cfb6: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a cfba: 4293 cmp r3, r2 cfbc: bfb8 it lt cfbe: 4613 movlt r3, r2 cfc0: f8ad 307a strh.w r3, [sp, #122] ; 0x7a return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); cfc4: f8bd 307c ldrh.w r3, [sp, #124] ; 0x7c cfc8: 3301 adds r3, #1 cfca: f8bd 2078 ldrh.w r2, [sp, #120] ; 0x78 cfce: 1a9b subs r3, r3, r2 cfd0: b21b sxth r3, r3 cfd2: 9308 str r3, [sp, #32] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); cfd4: f9bd 307e ldrsh.w r3, [sp, #126] ; 0x7e cfd8: 1c5d adds r5, r3, #1 cfda: f8bd 207a ldrh.w r2, [sp, #122] ; 0x7a cfde: 1aad subs r5, r5, r2 cfe0: b22d sxth r5, r5 sh_buf_tmp = sh_buf + corner_size - 1; cfe2: 46c8 mov r8, r9 sh_buf_tmp += corner_size * (a.y2 - ca.y2); cfe4: f9bd 4076 ldrsh.w r4, [sp, #118] ; 0x76 cfe8: 1ae4 subs r4, r4, r3 sh_buf_tmp = sh_buf + corner_size - 1; cfea: f109 33ff add.w r3, r9, #4294967295 sh_buf_tmp += corner_size * (a.y2 - ca.y2); cfee: fb09 3404 mla r4, r9, r4, r3 cff2: 9b0a ldr r3, [sp, #40] ; 0x28 cff4: 441c add r4, r3 cff6: f10d 0277 add.w r2, sp, #119 ; 0x77 uint8_t * d8 = (uint8_t *)dst; cffa: ab22 add r3, sp, #136 ; 0x88 while(len) { cffc: a824 add r0, sp, #144 ; 0x90 *d8 = *s8; cffe: f812 1f01 ldrb.w r1, [r2, #1]! d002: f803 1b01 strb.w r1, [r3], #1 while(len) { d006: 4283 cmp r3, r0 d008: d1f9 bne.n cffe fa.y1 = fa.y2; d00a: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e d00e: f8ad 308a strh.w r3, [sp, #138] ; 0x8a for(y = 0; y < h; y++) { d012: 46a9 mov r9, r5 d014: 2d00 cmp r5, #0 d016: dd4b ble.n d0b0 d018: 2500 movs r5, #0 _lv_memset(mask_buf, opa_tmp, w); d01a: 4f23 ldr r7, [pc, #140] ; (d0a8 ) _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, d01c: f8cd b02c str.w fp, [sp, #44] ; 0x2c d020: f8dd b024 ldr.w fp, [sp, #36] ; 0x24 d024: e02a b.n d07c if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; d026: f1bb 0fff cmp.w fp, #255 ; 0xff d02a: d12a bne.n d082 lv_opa_t opa_tmp = sh_buf_tmp[0]; d02c: 4659 mov r1, fp d02e: e02c b.n d08a mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); d030: 9b08 ldr r3, [sp, #32] d032: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a d036: f9bd 1088 ldrsh.w r1, [sp, #136] ; 0x88 d03a: 9805 ldr r0, [sp, #20] d03c: 4e17 ldr r6, [pc, #92] ; (d09c ) d03e: 47b0 blx r6 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; d040: 2801 cmp r0, #1 d042: bf08 it eq d044: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, d046: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 d04a: 9302 str r3, [sp, #8] d04c: 23ff movs r3, #255 ; 0xff d04e: 9301 str r3, [sp, #4] d050: 9000 str r0, [sp, #0] d052: 9b05 ldr r3, [sp, #20] d054: f8ba 201e ldrh.w r2, [sl, #30] d058: a922 add r1, sp, #136 ; 0x88 d05a: 9804 ldr r0, [sp, #16] d05c: 4e10 ldr r6, [pc, #64] ; (d0a0 ) d05e: 47b0 blx r6 fa.y1--; d060: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a d064: 3b01 subs r3, #1 d066: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fa.y2--; d06a: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e d06e: 3b01 subs r3, #1 d070: f8ad 308e strh.w r3, [sp, #142] ; 0x8e sh_buf_tmp += corner_size; d074: 4444 add r4, r8 for(y = 0; y < h; y++) { d076: 3501 adds r5, #1 d078: 454d cmp r5, r9 d07a: d017 beq.n d0ac lv_opa_t opa_tmp = sh_buf_tmp[0]; d07c: 7823 ldrb r3, [r4, #0] if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; d07e: 2bff cmp r3, #255 ; 0xff d080: d0d1 beq.n d026 d082: fb03 f30b mul.w r3, r3, fp d086: f3c3 2107 ubfx r1, r3, #8, #8 _lv_memset(mask_buf, opa_tmp, w); d08a: 9a08 ldr r2, [sp, #32] d08c: 9805 ldr r0, [sp, #20] d08e: 47b8 blx r7 if(simple_mode) { d090: 9b07 ldr r3, [sp, #28] d092: 2b00 cmp r3, #0 d094: d0cc beq.n d030 mask_res = LV_DRAW_MASK_RES_CHANGED; d096: 2002 movs r0, #2 d098: e7d5 b.n d046 d09a: bf00 nop d09c: 0000be1d .word 0x0000be1d d0a0: 00007751 .word 0x00007751 d0a4: 00011519 .word 0x00011519 d0a8: 00012a81 .word 0x00012a81 d0ac: f8dd b02c ldr.w fp, [sp, #44] ; 0x2c a.x1 = sh_area.x1 + corner_size; d0b0: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 d0b4: 445b add r3, fp d0b6: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 a.x2 = sh_area.x2 - corner_size; d0ba: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c d0be: eba3 030b sub.w r3, r3, fp d0c2: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 a.y1 = sh_area.y1 + corner_size; d0c6: f8bd 305a ldrh.w r3, [sp, #90] ; 0x5a d0ca: 445b add r3, fp d0cc: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 a.y2 = sh_area.y2 - corner_size; d0d0: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e d0d4: eba3 0b0b sub.w fp, r3, fp d0d8: f8ad b076 strh.w fp, [sp, #118] ; 0x76 has_com = _lv_area_intersect(&ca, &a, clip); d0dc: 9a04 ldr r2, [sp, #16] d0de: a91c add r1, sp, #112 ; 0x70 d0e0: a81e add r0, sp, #120 ; 0x78 d0e2: 4ba2 ldr r3, [pc, #648] ; (d36c ) d0e4: 4798 blx r3 if(has_com && simple_mode == false) { d0e6: 2800 cmp r0, #0 d0e8: d050 beq.n d18c d0ea: 9b07 ldr r3, [sp, #28] d0ec: 2b00 cmp r3, #0 d0ee: d14d bne.n d18c return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); d0f0: f8bd 607c ldrh.w r6, [sp, #124] ; 0x7c d0f4: 3601 adds r6, #1 d0f6: f8bd 3078 ldrh.w r3, [sp, #120] ; 0x78 d0fa: 1af6 subs r6, r6, r3 d0fc: b236 sxth r6, r6 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); d0fe: f8bd 407e ldrh.w r4, [sp, #126] ; 0x7e d102: 3401 adds r4, #1 d104: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a d108: 1ae4 subs r4, r4, r3 d10a: b224 sxth r4, r4 d10c: f10d 0277 add.w r2, sp, #119 ; 0x77 uint8_t * d8 = (uint8_t *)dst; d110: ab22 add r3, sp, #136 ; 0x88 while(len) { d112: a824 add r0, sp, #144 ; 0x90 *d8 = *s8; d114: f812 1f01 ldrb.w r1, [r2, #1]! d118: f803 1b01 strb.w r1, [r3], #1 while(len) { d11c: 4283 cmp r3, r0 d11e: d1f9 bne.n d114 fa.y2 = fa.y1; d120: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a d124: f8ad 308e strh.w r3, [sp, #142] ; 0x8e for(y = 0; y < h; y++) { d128: 46a3 mov fp, r4 d12a: 2c00 cmp r4, #0 d12c: dd2e ble.n d18c d12e: 2500 movs r5, #0 _lv_memset(mask_buf, dsc->shadow_opa, w); d130: f8df 9254 ldr.w r9, [pc, #596] ; d388 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); d134: f8df 8254 ldr.w r8, [pc, #596] ; d38c _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, d138: 4f8d ldr r7, [pc, #564] ; (d370 ) _lv_memset(mask_buf, dsc->shadow_opa, w); d13a: 4632 mov r2, r6 d13c: f89a 1028 ldrb.w r1, [sl, #40] ; 0x28 d140: 9805 ldr r0, [sp, #20] d142: 47c8 blx r9 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); d144: ac30 add r4, sp, #192 ; 0xc0 d146: 4633 mov r3, r6 d148: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a d14c: f934 1d38 ldrsh.w r1, [r4, #-56]! d150: 9805 ldr r0, [sp, #20] d152: 47c0 blx r8 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; d154: 2801 cmp r0, #1 d156: bf08 it eq d158: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, d15a: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 d15e: 9302 str r3, [sp, #8] d160: 23ff movs r3, #255 ; 0xff d162: 9301 str r3, [sp, #4] d164: 9000 str r0, [sp, #0] d166: 9b05 ldr r3, [sp, #20] d168: f8ba 201e ldrh.w r2, [sl, #30] d16c: 4621 mov r1, r4 d16e: 9804 ldr r0, [sp, #16] d170: 47b8 blx r7 fa.y1++; d172: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a d176: 3301 adds r3, #1 d178: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fa.y2++; d17c: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e d180: 3301 adds r3, #1 d182: f8ad 308e strh.w r3, [sp, #142] ; 0x8e for(y = 0; y < h; y++) { d186: 3501 adds r5, #1 d188: 455d cmp r5, fp d18a: d1d6 bne.n d13a lv_draw_mask_remove_id(mask_rout_id); d18c: 980e ldr r0, [sp, #56] ; 0x38 d18e: 4b79 ldr r3, [pc, #484] ; (d374 ) d190: 4798 blx r3 _lv_mem_buf_release(mask_buf); d192: 9805 ldr r0, [sp, #20] d194: 4c78 ldr r4, [pc, #480] ; (d378 ) d196: 47a0 blx r4 _lv_mem_buf_release(sh_buf); d198: 980a ldr r0, [sp, #40] ; 0x28 d19a: 47a0 blx r4 if(dsc->bg_opa <= LV_OPA_MIN) return; d19c: f89a 700c ldrb.w r7, [sl, #12] d1a0: 2f05 cmp r7, #5 d1a2: d942 bls.n d22a d1a4: 9a06 ldr r2, [sp, #24] d1a6: 1e53 subs r3, r2, #1 d1a8: 1dd0 adds r0, r2, #7 d1aa: aa1a add r2, sp, #104 ; 0x68 *d8 = *s8; d1ac: f813 1f01 ldrb.w r1, [r3, #1]! d1b0: f802 1b01 strb.w r1, [r2], #1 while(len) { d1b4: 4298 cmp r0, r3 d1b6: d1f9 bne.n d1ac if(dsc->border_width > 1 && dsc->border_opa >= LV_OPA_MAX && dsc->radius != 0) { d1b8: f9ba 3010 ldrsh.w r3, [sl, #16] d1bc: 2b01 cmp r3, #1 d1be: dd24 ble.n d20a d1c0: f89a 3014 ldrb.w r3, [sl, #20] d1c4: 2bf9 cmp r3, #249 ; 0xf9 d1c6: d920 bls.n d20a d1c8: f9ba 3000 ldrsh.w r3, [sl] d1cc: b1eb cbz r3, d20a coords_bg.x1 += (dsc->border_side & LV_BORDER_SIDE_LEFT) ? 1 : 0; d1ce: f8ba 3012 ldrh.w r3, [sl, #18] d1d2: f3c3 0280 ubfx r2, r3, #2, #1 d1d6: f8bd 1068 ldrh.w r1, [sp, #104] ; 0x68 d1da: 440a add r2, r1 d1dc: f8ad 2068 strh.w r2, [sp, #104] ; 0x68 coords_bg.y1 += (dsc->border_side & LV_BORDER_SIDE_TOP) ? 1 : 0; d1e0: f3c3 0240 ubfx r2, r3, #1, #1 d1e4: f8bd 106a ldrh.w r1, [sp, #106] ; 0x6a d1e8: 440a add r2, r1 d1ea: f8ad 206a strh.w r2, [sp, #106] ; 0x6a coords_bg.x2 -= (dsc->border_side & LV_BORDER_SIDE_RIGHT) ? 1 : 0; d1ee: f3c3 01c0 ubfx r1, r3, #3, #1 d1f2: f8bd 206c ldrh.w r2, [sp, #108] ; 0x6c d1f6: 1a52 subs r2, r2, r1 d1f8: f8ad 206c strh.w r2, [sp, #108] ; 0x6c coords_bg.y2 -= (dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? 1 : 0; d1fc: f003 0301 and.w r3, r3, #1 d200: f8bd 206e ldrh.w r2, [sp, #110] ; 0x6e d204: 1ad3 subs r3, r2, r3 d206: f8ad 306e strh.w r3, [sp, #110] ; 0x6e if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; d20a: 2ffb cmp r7, #251 ; 0xfb d20c: bf28 it cs d20e: 27ff movcs r7, #255 ; 0xff lv_disp_t * disp = _lv_refr_get_disp_refreshing(); d210: 4b5a ldr r3, [pc, #360] ; (d37c ) d212: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); d214: 4b5a ldr r3, [pc, #360] ; (d380 ) d216: 4798 blx r3 d218: 4680 mov r8, r0 is_common = _lv_area_intersect(&draw_area, &coords_bg, clip); d21a: 9a04 ldr r2, [sp, #16] d21c: a91a add r1, sp, #104 ; 0x68 d21e: a81c add r0, sp, #112 ; 0x70 d220: 4b52 ldr r3, [pc, #328] ; (d36c ) d222: 4798 blx r3 if(is_common == false) return; d224: 2800 cmp r0, #0 d226: f040 80b3 bne.w d390 _lv_mem_buf_release(mask_buf); } static void draw_pattern(const lv_area_t * coords, const lv_area_t * clip, lv_draw_rect_dsc_t * dsc) { if(dsc->pattern_image == NULL) return; d22a: f8da 002c ldr.w r0, [sl, #44] ; 0x2c d22e: b120 cbz r0, d23a if(dsc->pattern_opa <= LV_OPA_MIN) return; d230: f89a 3036 ldrb.w r3, [sl, #54] ; 0x36 d234: 2b05 cmp r3, #5 d236: f200 83eb bhi.w da10 if(dsc->border_opa <= LV_OPA_MIN) return; d23a: f89a 4014 ldrb.w r4, [sl, #20] d23e: 2c05 cmp r4, #5 d240: d915 bls.n d26e if(dsc->border_width == 0) return; d242: f9ba 3010 ldrsh.w r3, [sl, #16] d246: b193 cbz r3, d26e if(dsc->border_side == LV_BORDER_SIDE_NONE) return; d248: f9ba 3012 ldrsh.w r3, [sl, #18] d24c: b17b cbz r3, d26e if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; d24e: 2cfb cmp r4, #251 ; 0xfb d250: bf28 it cs d252: 24ff movcs r4, #255 ; 0xff lv_disp_t * disp = _lv_refr_get_disp_refreshing(); d254: 4b49 ldr r3, [pc, #292] ; (d37c ) d256: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); d258: 4b49 ldr r3, [pc, #292] ; (d380 ) d25a: 4798 blx r3 d25c: 4605 mov r5, r0 is_common = _lv_area_intersect(&draw_area, coords, clip); d25e: 9a04 ldr r2, [sp, #16] d260: 9906 ldr r1, [sp, #24] d262: a818 add r0, sp, #96 ; 0x60 d264: 4b41 ldr r3, [pc, #260] ; (d36c ) d266: 4798 blx r3 if(is_common == false) return; d268: 2800 cmp r0, #0 d26a: f040 8546 bne.w dcfa } static void draw_value(const lv_area_t * coords, const lv_area_t * clip, lv_draw_rect_dsc_t * dsc) { if(dsc->value_str == NULL) return; d26e: f8da 103c ldr.w r1, [sl, #60] ; 0x3c d272: b121 cbz r1, d27e if(dsc->value_opa <= LV_OPA_MIN) return; d274: f89a 3044 ldrb.w r3, [sl, #68] ; 0x44 d278: 2b05 cmp r3, #5 d27a: f201 8053 bhi.w e324 if(dsc->outline_opa <= LV_OPA_MIN) return; d27e: f89a b01c ldrb.w fp, [sl, #28] d282: f1bb 0f05 cmp.w fp, #5 d286: d96d bls.n d364 if(dsc->outline_width == 0) return; d288: f9ba 3018 ldrsh.w r3, [sl, #24] d28c: 2b00 cmp r3, #0 d28e: d069 beq.n d364 if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; d290: f1bb 0ffb cmp.w fp, #251 ; 0xfb d294: bf28 it cs d296: f04f 0bff movcs.w fp, #255 ; 0xff uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); d29a: 4b3a ldr r3, [pc, #232] ; (d384 ) d29c: 4798 blx r3 d29e: 9009 str r0, [sp, #36] ; 0x24 d2a0: 9a06 ldr r2, [sp, #24] d2a2: 1e53 subs r3, r2, #1 d2a4: 1dd0 adds r0, r2, #7 uint8_t * d8 = (uint8_t *)dst; d2a6: aa16 add r2, sp, #88 ; 0x58 *d8 = *s8; d2a8: f813 1f01 ldrb.w r1, [r3, #1]! d2ac: f802 1b01 strb.w r1, [r2], #1 while(len) { d2b0: 4283 cmp r3, r0 d2b2: d1f9 bne.n d2a8 area_inner.x1 -= dsc->outline_pad; d2b4: f8ba 501a ldrh.w r5, [sl, #26] d2b8: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 d2bc: 1b5b subs r3, r3, r5 d2be: b29b uxth r3, r3 d2c0: 9306 str r3, [sp, #24] d2c2: f8ad 3058 strh.w r3, [sp, #88] ; 0x58 area_inner.y1 -= dsc->outline_pad; d2c6: f8bd 305a ldrh.w r3, [sp, #90] ; 0x5a d2ca: 1b5b subs r3, r3, r5 d2cc: b29b uxth r3, r3 d2ce: 9307 str r3, [sp, #28] d2d0: f8ad 305a strh.w r3, [sp, #90] ; 0x5a area_inner.x2 += dsc->outline_pad; d2d4: f8bd 605c ldrh.w r6, [sp, #92] ; 0x5c d2d8: 442e add r6, r5 d2da: b2b6 uxth r6, r6 d2dc: f8ad 605c strh.w r6, [sp, #92] ; 0x5c area_inner.y2 += dsc->outline_pad; d2e0: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e d2e4: 441d add r5, r3 d2e6: b2ad uxth r5, r5 d2e8: f8ad 505e strh.w r5, [sp, #94] ; 0x5e int32_t rin = dsc->radius; d2ec: f9ba 3000 ldrsh.w r3, [sl] d2f0: 9308 str r3, [sp, #32] int32_t rout = rin + dsc->outline_width; d2f2: f9ba 3018 ldrsh.w r3, [sl, #24] d2f6: 9305 str r3, [sp, #20] d2f8: f10d 0257 add.w r2, sp, #87 ; 0x57 uint8_t * d8 = (uint8_t *)dst; d2fc: ab18 add r3, sp, #96 ; 0x60 while(len) { d2fe: a81a add r0, sp, #104 ; 0x68 *d8 = *s8; d300: f812 1f01 ldrb.w r1, [r2, #1]! d304: f803 1b01 strb.w r1, [r3], #1 while(len) { d308: 4283 cmp r3, r0 d30a: d1f9 bne.n d300 area_outer.x1 -= dsc->outline_width; d30c: f8bd 4014 ldrh.w r4, [sp, #20] d310: f8bd 9060 ldrh.w r9, [sp, #96] ; 0x60 d314: eba9 0904 sub.w r9, r9, r4 d318: fa1f f389 uxth.w r3, r9 d31c: 930a str r3, [sp, #40] ; 0x28 d31e: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 area_outer.x2 += dsc->outline_width; d322: f8bd 7064 ldrh.w r7, [sp, #100] ; 0x64 d326: 4427 add r7, r4 d328: b2bf uxth r7, r7 d32a: f8ad 7064 strh.w r7, [sp, #100] ; 0x64 area_outer.y1 -= dsc->outline_width; d32e: f8bd 8062 ldrh.w r8, [sp, #98] ; 0x62 d332: eba8 0804 sub.w r8, r8, r4 d336: fa1f f888 uxth.w r8, r8 d33a: f8ad 8062 strh.w r8, [sp, #98] ; 0x62 area_outer.y2 += dsc->outline_width; d33e: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 d342: 441c add r4, r3 d344: b2a4 uxth r4, r4 d346: f8ad 4066 strh.w r4, [sp, #102] ; 0x66 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); d34a: 4b0c ldr r3, [pc, #48] ; (d37c ) d34c: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); d34e: 4b0c ldr r3, [pc, #48] ; (d380 ) d350: 4798 blx r3 d352: 4681 mov r9, r0 is_common = _lv_area_intersect(&draw_area, &area_outer, clip); d354: 9a04 ldr r2, [sp, #16] d356: a918 add r1, sp, #96 ; 0x60 d358: a81a add r0, sp, #104 ; 0x68 d35a: 4b04 ldr r3, [pc, #16] ; (d36c ) d35c: 4798 blx r3 if(is_common == false) return; d35e: 2800 cmp r0, #0 d360: f041 8044 bne.w e3ec } d364: b031 add sp, #196 ; 0xc4 d366: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} d36a: bf00 nop d36c: 00011519 .word 0x00011519 d370: 00007751 .word 0x00007751 d374: 0000be6d .word 0x0000be6d d378: 00012571 .word 0x00012571 d37c: 00005f69 .word 0x00005f69 d380: 00010fdd .word 0x00010fdd d384: 0000bec5 .word 0x0000bec5 d388: 00012a81 .word 0x00012a81 d38c: 0000be1d .word 0x0000be1d draw_area.x1 -= disp_area->x1; d390: f8b8 1010 ldrh.w r1, [r8, #16] d394: f8bd 3070 ldrh.w r3, [sp, #112] ; 0x70 d398: 1a5b subs r3, r3, r1 d39a: b29a uxth r2, r3 d39c: f8ad 2070 strh.w r2, [sp, #112] ; 0x70 draw_area.y1 -= disp_area->y1; d3a0: f8b8 0012 ldrh.w r0, [r8, #18] d3a4: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 d3a8: 1a1b subs r3, r3, r0 d3aa: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 draw_area.x2 -= disp_area->x1; d3ae: f8bd 3074 ldrh.w r3, [sp, #116] ; 0x74 d3b2: 1a5b subs r3, r3, r1 d3b4: b29b uxth r3, r3 d3b6: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 draw_area.y2 -= disp_area->y1; d3ba: f8bd 1076 ldrh.w r1, [sp, #118] ; 0x76 d3be: 1a09 subs r1, r1, r0 d3c0: f8ad 1076 strh.w r1, [sp, #118] ; 0x76 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); d3c4: 3301 adds r3, #1 d3c6: 1a9b subs r3, r3, r2 d3c8: b21b sxth r3, r3 d3ca: 9309 str r3, [sp, #36] ; 0x24 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); d3cc: 930a str r3, [sp, #40] ; 0x28 d3ce: 4618 mov r0, r3 d3d0: 4b93 ldr r3, [pc, #588] ; (d620 ) d3d2: 4798 blx r3 d3d4: 9005 str r0, [sp, #20] uint16_t other_mask_cnt = lv_draw_mask_get_cnt(); d3d6: 4b93 ldr r3, [pc, #588] ; (d624 ) d3d8: 4798 blx r3 d3da: b283 uxth r3, r0 d3dc: 930b str r3, [sp, #44] ; 0x2c if(other_mask_cnt) simple_mode = false; d3de: bb43 cbnz r3, d432 else if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) simple_mode = false; d3e0: f89a 3006 ldrb.w r3, [sl, #6] d3e4: 3b02 subs r3, #2 d3e6: bf18 it ne d3e8: 2301 movne r3, #1 d3ea: 9307 str r3, [sp, #28] d3ec: f8bd 506c ldrh.w r5, [sp, #108] ; 0x6c d3f0: 3501 adds r5, #1 d3f2: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 d3f6: 1aed subs r5, r5, r3 d3f8: b22d sxth r5, r5 int32_t coords_w = lv_area_get_width(&coords_bg); d3fa: 462c mov r4, r5 int32_t rout = dsc->radius; d3fc: f9ba 2000 ldrsh.w r2, [sl] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); d400: f8bd 306e ldrh.w r3, [sp, #110] ; 0x6e d404: 3301 adds r3, #1 d406: f8bd 606a ldrh.w r6, [sp, #106] ; 0x6a d40a: 1b9b subs r3, r3, r6 int32_t coords_h = lv_area_get_height(&coords_bg); d40c: b21e sxth r6, r3 int32_t short_side = LV_MATH_MIN(coords_w, coords_h); d40e: 4633 mov r3, r6 d410: 42ae cmp r6, r5 d412: bfa8 it ge d414: 462b movge r3, r5 if(rout > short_side >> 1) rout = short_side >> 1; d416: 105e asrs r6, r3, #1 d418: 4296 cmp r6, r2 d41a: bfa8 it ge d41c: 4616 movge r6, r2 if(simple_mode && rout == 0 && (dsc->bg_grad_dir == LV_GRAD_DIR_NONE)) { d41e: 9b07 ldr r3, [sp, #28] d420: b1db cbz r3, d45a d422: b9d6 cbnz r6, d45a d424: f89a 3006 ldrb.w r3, [sl, #6] d428: b133 cbz r3, d438 int16_t mask_rout_id = LV_MASK_ID_INV; d42a: f04f 33ff mov.w r3, #4294967295 d42e: 930e str r3, [sp, #56] ; 0x38 d430: e021 b.n d476 if(other_mask_cnt) simple_mode = false; d432: 2300 movs r3, #0 d434: 9307 str r3, [sp, #28] d436: e7d9 b.n d3ec _lv_blend_fill(clip, &coords_bg, d438: f89a 300d ldrb.w r3, [sl, #13] d43c: 9302 str r3, [sp, #8] d43e: 9701 str r7, [sp, #4] d440: 2301 movs r3, #1 d442: 9300 str r3, [sp, #0] d444: 2300 movs r3, #0 d446: f8ba 2002 ldrh.w r2, [sl, #2] d44a: a91a add r1, sp, #104 ; 0x68 d44c: 9804 ldr r0, [sp, #16] d44e: 4c76 ldr r4, [pc, #472] ; (d628 ) d450: 47a0 blx r4 int16_t mask_rout_id = LV_MASK_ID_INV; d452: f04f 33ff mov.w r3, #4294967295 d456: 930e str r3, [sp, #56] ; 0x38 d458: e276 b.n d948 if(rout > 0) { d45a: 2e00 cmp r6, #0 d45c: dd32 ble.n d4c4 lv_draw_mask_radius_init(&mask_rout_param, &coords_bg, rout, false); d45e: 2300 movs r3, #0 d460: 4632 mov r2, r6 d462: a91a add r1, sp, #104 ; 0x68 d464: a829 add r0, sp, #164 ; 0xa4 d466: f8df 91d0 ldr.w r9, [pc, #464] ; d638 d46a: 47c8 blx r9 mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); d46c: 2100 movs r1, #0 d46e: a829 add r0, sp, #164 ; 0xa4 d470: 4b6e ldr r3, [pc, #440] ; (d62c ) d472: 4798 blx r3 d474: 900e str r0, [sp, #56] ; 0x38 lv_color_t grad_color = dsc->bg_color; d476: f8ba b002 ldrh.w fp, [sl, #2] if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR && dsc->bg_color.full != dsc->bg_grad_color.full) { d47a: f89a 3006 ldrb.w r3, [sl, #6] d47e: 2b02 cmp r3, #2 d480: d024 beq.n d4cc lv_color_t * grad_map = NULL; d482: 2300 movs r3, #0 d484: 930d str r3, [sp, #52] ; 0x34 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); d486: f9bd 206c ldrsh.w r2, [sp, #108] ; 0x6c d48a: f9bd 1068 ldrsh.w r1, [sp, #104] ; 0x68 d48e: 1c53 adds r3, r2, #1 d490: 1a5b subs r3, r3, r1 if(lv_area_get_width(&coords_bg) - 2 * rout > SPLIT_LIMIT) split = true; d492: b21b sxth r3, r3 d494: eba3 0946 sub.w r9, r3, r6, lsl #1 fill_area.x1 = coords_bg.x1; d498: f8ad 1078 strh.w r1, [sp, #120] ; 0x78 fill_area.x2 = coords_bg.x2; d49c: f8ad 207c strh.w r2, [sp, #124] ; 0x7c fill_area.y1 = disp_area->y1 + draw_area.y1; d4a0: f9bd 2072 ldrsh.w r2, [sp, #114] ; 0x72 d4a4: f8b8 3012 ldrh.w r3, [r8, #18] d4a8: 4413 add r3, r2 d4aa: b21b sxth r3, r3 d4ac: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fill_area.y2 = fill_area.y1; d4b0: f8ad 307e strh.w r3, [sp, #126] ; 0x7e for(h = draw_area.y1; h <= draw_area.y2; h++) { d4b4: 4615 mov r5, r2 d4b6: f9bd 3076 ldrsh.w r3, [sp, #118] ; 0x76 d4ba: 429a cmp r2, r3 d4bc: f300 8237 bgt.w d92e _lv_blend_fill(clip, &fill_area2, d4c0: 9708 str r7, [sp, #32] d4c2: e0fa b.n d6ba int16_t mask_rout_id = LV_MASK_ID_INV; d4c4: f04f 33ff mov.w r3, #4294967295 d4c8: 930e str r3, [sp, #56] ; 0x38 d4ca: e7d4 b.n d476 if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR && dsc->bg_color.full != dsc->bg_grad_color.full) { d4cc: f8ba 3004 ldrh.w r3, [sl, #4] d4d0: 459b cmp fp, r3 d4d2: f000 8089 beq.w d5e8 grad_map = _lv_mem_buf_get(coords_w * sizeof(lv_color_t)); d4d6: 0068 lsls r0, r5, #1 d4d8: 4b51 ldr r3, [pc, #324] ; (d620 ) d4da: 4798 blx r3 d4dc: 900d str r0, [sp, #52] ; 0x34 for(i = 0; i < coords_w; i++) { d4de: 2d00 cmp r5, #0 d4e0: ddd1 ble.n d486 d4e2: f04f 0900 mov.w r9, #0 d4e6: 9608 str r6, [sp, #32] d4e8: 4606 mov r6, r0 d4ea: e01b b.n d524 if(i <= min) return dsc->bg_color; d4ec: f89a 3002 ldrb.w r3, [sl, #2] d4f0: f003 031f and.w r3, r3, #31 d4f4: f8ba 1002 ldrh.w r1, [sl, #2] d4f8: f3c1 1145 ubfx r1, r1, #5, #6 d4fc: f89a 2003 ldrb.w r2, [sl, #3] d500: 08d2 lsrs r2, r2, #3 grad_map[i] = grad_get(dsc, coords_w, i); d502: 7828 ldrb r0, [r5, #0] d504: f363 0004 bfi r0, r3, #0, #5 d508: 7028 strb r0, [r5, #0] d50a: 882b ldrh r3, [r5, #0] d50c: f361 134a bfi r3, r1, #5, #6 d510: 802b strh r3, [r5, #0] d512: 0a1b lsrs r3, r3, #8 d514: f362 03c7 bfi r3, r2, #3, #5 d518: 706b strb r3, [r5, #1] for(i = 0; i < coords_w; i++) { d51a: f109 0901 add.w r9, r9, #1 d51e: 3602 adds r6, #2 d520: 454c cmp r4, r9 d522: d05f beq.n d5e4 grad_map[i] = grad_get(dsc, coords_w, i); d524: 4635 mov r5, r6 int32_t min = (dsc->bg_main_color_stop * s) >> 8; d526: f9ba 0008 ldrsh.w r0, [sl, #8] d52a: fb00 f304 mul.w r3, r0, r4 d52e: 121b asrs r3, r3, #8 if(i <= min) return dsc->bg_color; d530: fa0f f189 sxth.w r1, r9 d534: 428b cmp r3, r1 d536: dad9 bge.n d4ec int32_t max = (dsc->bg_grad_color_stop * s) >> 8; d538: f9ba 200a ldrsh.w r2, [sl, #10] d53c: fb02 fe04 mul.w lr, r2, r4 if(i >= max) return dsc->bg_grad_color; d540: ebb1 2f2e cmp.w r1, lr, asr #8 d544: da42 bge.n d5cc int32_t d = dsc->bg_grad_color_stop - dsc->bg_main_color_stop; d546: 1a12 subs r2, r2, r0 d = (s * d) >> 8; d548: fb04 f202 mul.w r2, r4, r2 i -= min; d54c: eba9 0303 sub.w r3, r9, r3 lv_opa_t mix = (i * 255) / d; d550: b21b sxth r3, r3 d552: ebc3 2303 rsb r3, r3, r3, lsl #8 d = (s * d) >> 8; d556: 1212 asrs r2, r2, #8 lv_opa_t mix = (i * 255) / d; d558: fb93 f3f2 sdiv r3, r3, r2 d55c: b2db uxtb r3, r3 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); d55e: f1c3 0eff rsb lr, r3, #255 ; 0xff d562: f89a 2005 ldrb.w r2, [sl, #5] d566: 08d2 lsrs r2, r2, #3 d568: f89a 1003 ldrb.w r1, [sl, #3] d56c: 08c9 lsrs r1, r1, #3 d56e: fb0e f101 mul.w r1, lr, r1 d572: fb03 1202 mla r2, r3, r2, r1 d576: eb02 2102 add.w r1, r2, r2, lsl #8 d57a: eb02 12c1 add.w r2, r2, r1, lsl #7 d57e: f3c2 52c4 ubfx r2, r2, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); d582: f8ba 1004 ldrh.w r1, [sl, #4] d586: f3c1 1145 ubfx r1, r1, #5, #6 d58a: f8ba 0002 ldrh.w r0, [sl, #2] d58e: f3c0 1045 ubfx r0, r0, #5, #6 d592: fb0e f000 mul.w r0, lr, r0 d596: fb03 0101 mla r1, r3, r1, r0 d59a: eb01 2001 add.w r0, r1, r1, lsl #8 d59e: eb01 11c0 add.w r1, r1, r0, lsl #7 d5a2: f3c1 51c5 ubfx r1, r1, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); d5a6: f89a 0004 ldrb.w r0, [sl, #4] d5aa: f000 001f and.w r0, r0, #31 d5ae: f89a c002 ldrb.w ip, [sl, #2] d5b2: f00c 0c1f and.w ip, ip, #31 d5b6: fb0e fe0c mul.w lr, lr, ip d5ba: fb03 e300 mla r3, r3, r0, lr d5be: eb03 2003 add.w r0, r3, r3, lsl #8 d5c2: eb03 13c0 add.w r3, r3, r0, lsl #7 d5c6: f3c3 53c4 ubfx r3, r3, #23, #5 d5ca: e79a b.n d502 if(i >= max) return dsc->bg_grad_color; d5cc: f89a 3004 ldrb.w r3, [sl, #4] d5d0: f003 031f and.w r3, r3, #31 d5d4: f8ba 1004 ldrh.w r1, [sl, #4] d5d8: f3c1 1145 ubfx r1, r1, #5, #6 d5dc: f89a 2005 ldrb.w r2, [sl, #5] d5e0: 08d2 lsrs r2, r2, #3 d5e2: e78e b.n d502 d5e4: 9e08 ldr r6, [sp, #32] d5e6: e74e b.n d486 lv_color_t * grad_map = NULL; d5e8: 2300 movs r3, #0 d5ea: 930d str r3, [sp, #52] ; 0x34 d5ec: e74b b.n d486 _lv_memset_ff(mask_buf, draw_area_w); d5ee: 990a ldr r1, [sp, #40] ; 0x28 d5f0: 9f05 ldr r7, [sp, #20] d5f2: 4638 mov r0, r7 d5f4: 4b0e ldr r3, [pc, #56] ; (d630 ) d5f6: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); d5f8: f8b8 2012 ldrh.w r2, [r8, #18] d5fc: 442a add r2, r5 d5fe: f8b8 1010 ldrh.w r1, [r8, #16] d602: f8bd 3070 ldrh.w r3, [sp, #112] ; 0x70 d606: 4419 add r1, r3 d608: 9b09 ldr r3, [sp, #36] ; 0x24 d60a: b212 sxth r2, r2 d60c: b209 sxth r1, r1 d60e: 4638 mov r0, r7 d610: 4f08 ldr r7, [pc, #32] ; (d634 ) d612: 47b8 blx r7 d614: 4607 mov r7, r0 if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) { d616: f89a 3006 ldrb.w r3, [sl, #6] d61a: 2b01 cmp r3, #1 d61c: d129 bne.n d672 d61e: e07a b.n d716 d620: 0001293d .word 0x0001293d d624: 0000bec5 .word 0x0000bec5 d628: 00007751 .word 0x00007751 d62c: 0000bdc1 .word 0x0000bdc1 d630: 00012bed .word 0x00012bed d634: 0000be1d .word 0x0000be1d d638: 0000c02d .word 0x0000c02d _lv_memset_ff(mask_buf, draw_area_w); d63c: 990a ldr r1, [sp, #40] ; 0x28 d63e: 9f05 ldr r7, [sp, #20] d640: 4638 mov r0, r7 d642: 4bb6 ldr r3, [pc, #728] ; (d91c ) d644: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); d646: f8b8 2012 ldrh.w r2, [r8, #18] d64a: 442a add r2, r5 d64c: f8b8 1010 ldrh.w r1, [r8, #16] d650: f8bd 3070 ldrh.w r3, [sp, #112] ; 0x70 d654: 4419 add r1, r3 d656: 9b09 ldr r3, [sp, #36] ; 0x24 d658: b212 sxth r2, r2 d65a: b209 sxth r1, r1 d65c: 4638 mov r0, r7 d65e: 4fb0 ldr r7, [pc, #704] ; (d920 ) d660: 47b8 blx r7 d662: 4607 mov r7, r0 if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) { d664: f89a 3006 ldrb.w r3, [sl, #6] d668: 2b01 cmp r3, #1 d66a: d054 beq.n d716 if(simple_mode && split && d66c: 9a07 ldr r2, [sp, #28] d66e: 2a00 cmp r2, #0 d670: d13a bne.n d6e8 if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) { d672: 2b02 cmp r3, #2 d674: f000 8144 beq.w d900 else if(other_mask_cnt != 0 || !split) { d678: 9b0b ldr r3, [sp, #44] ; 0x2c d67a: b913 cbnz r3, d682 d67c: f1b9 0f32 cmp.w r9, #50 ; 0x32 d680: dc0b bgt.n d69a _lv_blend_fill(clip, &fill_area, d682: f89a 300d ldrb.w r3, [sl, #13] d686: 9302 str r3, [sp, #8] d688: 9b08 ldr r3, [sp, #32] d68a: 9301 str r3, [sp, #4] d68c: 9700 str r7, [sp, #0] d68e: 9b05 ldr r3, [sp, #20] d690: 465a mov r2, fp d692: a91e add r1, sp, #120 ; 0x78 d694: 9804 ldr r0, [sp, #16] d696: 4ca3 ldr r4, [pc, #652] ; (d924 ) d698: 47a0 blx r4 fill_area.y1++; d69a: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a d69e: 3301 adds r3, #1 d6a0: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fill_area.y2++; d6a4: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e d6a8: 3301 adds r3, #1 d6aa: f8ad 307e strh.w r3, [sp, #126] ; 0x7e for(h = draw_area.y1; h <= draw_area.y2; h++) { d6ae: 3501 adds r5, #1 d6b0: f9bd 3076 ldrsh.w r3, [sp, #118] ; 0x76 d6b4: 429d cmp r5, r3 d6b6: f300 8139 bgt.w d92c int32_t y = h + vdb->area.y1; d6ba: f9b8 4012 ldrsh.w r4, [r8, #18] d6be: 442c add r4, r5 if(y > coords_bg.y1 + rout + 1 && d6c0: f9bd 306a ldrsh.w r3, [sp, #106] ; 0x6a d6c4: 4433 add r3, r6 d6c6: 3301 adds r3, #1 d6c8: 429c cmp r4, r3 d6ca: ddb7 ble.n d63c y < coords_bg.y2 - rout - 1) { d6cc: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e d6d0: 1b9b subs r3, r3, r6 d6d2: 3b01 subs r3, #1 if(y > coords_bg.y1 + rout + 1 && d6d4: 429c cmp r4, r3 d6d6: dab1 bge.n d63c if(simple_mode == false) { d6d8: 9b07 ldr r3, [sp, #28] d6da: 2b00 cmp r3, #0 d6dc: d087 beq.n d5ee if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) { d6de: f89a 3006 ldrb.w r3, [sl, #6] d6e2: 2b01 cmp r3, #1 d6e4: d016 beq.n d714 mask_res = LV_DRAW_MASK_RES_FULL_COVER; d6e6: 2701 movs r7, #1 if(simple_mode && split && d6e8: f1b9 0f32 cmp.w r9, #50 ; 0x32 d6ec: f300 8093 bgt.w d816 if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) { d6f0: 2b02 cmp r3, #2 d6f2: f000 8105 beq.w d900 else if(dsc->bg_grad_dir == LV_GRAD_DIR_VER) { d6f6: 2b01 cmp r3, #1 d6f8: d1be bne.n d678 _lv_blend_fill(clip, &fill_area, d6fa: f89a 300d ldrb.w r3, [sl, #13] d6fe: 9302 str r3, [sp, #8] d700: 9b08 ldr r3, [sp, #32] d702: 9301 str r3, [sp, #4] d704: 9700 str r7, [sp, #0] d706: 9b05 ldr r3, [sp, #20] d708: 465a mov r2, fp d70a: a91e add r1, sp, #120 ; 0x78 d70c: 9804 ldr r0, [sp, #16] d70e: 4c85 ldr r4, [pc, #532] ; (d924 ) d710: 47a0 blx r4 d712: e7c2 b.n d69a mask_res = LV_DRAW_MASK_RES_FULL_COVER; d714: 2701 movs r7, #1 if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) { d716: f8ba 2002 ldrh.w r2, [sl, #2] d71a: f8ba 3004 ldrh.w r3, [sl, #4] d71e: 429a cmp r2, r3 d720: d06f beq.n d802 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); d722: f8bd 106a ldrh.w r1, [sp, #106] ; 0x6a grad_color = grad_get(dsc, lv_area_get_height(&coords_bg), y - coords_bg.y1); d726: 1a62 subs r2, r4, r1 d728: b293 uxth r3, r2 d72a: 461a mov r2, r3 d72c: 930c str r3, [sp, #48] ; 0x30 int32_t min = (dsc->bg_main_color_stop * s) >> 8; d72e: f9ba e008 ldrsh.w lr, [sl, #8] d732: f8bd 306e ldrh.w r3, [sp, #110] ; 0x6e d736: 3301 adds r3, #1 d738: 1a5b subs r3, r3, r1 d73a: b21b sxth r3, r3 d73c: fb03 f10e mul.w r1, r3, lr d740: 1209 asrs r1, r1, #8 if(i <= min) return dsc->bg_color; d742: b210 sxth r0, r2 d744: 4281 cmp r1, r0 d746: da4b bge.n d7e0 int32_t max = (dsc->bg_grad_color_stop * s) >> 8; d748: f9ba c00a ldrsh.w ip, [sl, #10] d74c: fb0c f203 mul.w r2, ip, r3 if(i >= max) return dsc->bg_grad_color; d750: ebb0 2f22 cmp.w r0, r2, asr #8 d754: f280 80b0 bge.w d8b8 int32_t d = dsc->bg_grad_color_stop - dsc->bg_main_color_stop; d758: ebac 0e0e sub.w lr, ip, lr d = (s * d) >> 8; d75c: fb03 f30e mul.w r3, r3, lr i -= min; d760: 9a0c ldr r2, [sp, #48] ; 0x30 d762: 1a52 subs r2, r2, r1 lv_opa_t mix = (i * 255) / d; d764: b212 sxth r2, r2 d766: ebc2 2202 rsb r2, r2, r2, lsl #8 d = (s * d) >> 8; d76a: 121b asrs r3, r3, #8 lv_opa_t mix = (i * 255) / d; d76c: fb92 f3f3 sdiv r3, r2, r3 d770: b2db uxtb r3, r3 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); d772: f1c3 01ff rsb r1, r3, #255 ; 0xff d776: f89a 2005 ldrb.w r2, [sl, #5] d77a: 08d2 lsrs r2, r2, #3 d77c: f89a 0003 ldrb.w r0, [sl, #3] d780: 08c0 lsrs r0, r0, #3 d782: fb01 f000 mul.w r0, r1, r0 d786: fb03 0202 mla r2, r3, r2, r0 d78a: eb02 2002 add.w r0, r2, r2, lsl #8 d78e: eb02 12c0 add.w r2, r2, r0, lsl #7 d792: f3c2 52c4 ubfx r2, r2, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); d796: f8ba 0004 ldrh.w r0, [sl, #4] d79a: f3c0 1045 ubfx r0, r0, #5, #6 d79e: f8ba e002 ldrh.w lr, [sl, #2] d7a2: f3ce 1e45 ubfx lr, lr, #5, #6 d7a6: fb01 fe0e mul.w lr, r1, lr d7aa: fb03 e000 mla r0, r3, r0, lr d7ae: eb00 2e00 add.w lr, r0, r0, lsl #8 d7b2: eb00 10ce add.w r0, r0, lr, lsl #7 d7b6: f3c0 50c5 ubfx r0, r0, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); d7ba: f89a e004 ldrb.w lr, [sl, #4] d7be: f00e 0e1f and.w lr, lr, #31 d7c2: f89a c002 ldrb.w ip, [sl, #2] d7c6: f00c 0c1f and.w ip, ip, #31 d7ca: fb01 f10c mul.w r1, r1, ip d7ce: fb03 130e mla r3, r3, lr, r1 d7d2: eb03 2103 add.w r1, r3, r3, lsl #8 d7d6: eb03 13c1 add.w r3, r3, r1, lsl #7 d7da: f3c3 53c4 ubfx r3, r3, #23, #5 d7de: e00a b.n d7f6 if(i <= min) return dsc->bg_color; d7e0: f89a 3002 ldrb.w r3, [sl, #2] d7e4: f003 031f and.w r3, r3, #31 d7e8: f8ba 0002 ldrh.w r0, [sl, #2] d7ec: f3c0 1045 ubfx r0, r0, #5, #6 d7f0: f89a 2003 ldrb.w r2, [sl, #3] d7f4: 08d2 lsrs r2, r2, #3 d7f6: f363 0b04 bfi fp, r3, #0, #5 d7fa: f360 1b4a bfi fp, r0, #5, #6 d7fe: f362 2bcf bfi fp, r2, #11, #5 if(simple_mode && split && d802: 9b07 ldr r3, [sp, #28] d804: 2b00 cmp r3, #0 d806: f43f af78 beq.w d6fa d80a: f1b9 0f32 cmp.w r9, #50 ; 0x32 d80e: bfc8 it gt d810: 2301 movgt r3, #1 d812: f77f af72 ble.w d6fa (y < coords_bg.y1 + rout + 1 || d816: f9bd 206a ldrsh.w r2, [sp, #106] ; 0x6a d81a: 4432 add r2, r6 d81c: 3201 adds r2, #1 if(simple_mode && split && d81e: 4294 cmp r4, r2 d820: db06 blt.n d830 y > coords_bg.y2 - rout - 1)) { d822: f9bd 206e ldrsh.w r2, [sp, #110] ; 0x6e d826: 1b92 subs r2, r2, r6 d828: 3a01 subs r2, #1 (y < coords_bg.y1 + rout + 1 || d82a: 4294 cmp r4, r2 d82c: f77f af60 ble.w d6f0 fill_area2.x1 = coords_bg.x1; d830: f9bd 3068 ldrsh.w r3, [sp, #104] ; 0x68 d834: f8ad 3088 strh.w r3, [sp, #136] ; 0x88 fill_area2.x2 = coords_bg.x1 + rout - 1; d838: b2b2 uxth r2, r6 d83a: 920c str r2, [sp, #48] ; 0x30 d83c: 3b01 subs r3, #1 d83e: 4413 add r3, r2 d840: f8ad 308c strh.w r3, [sp, #140] ; 0x8c fill_area2.y1 = fill_area.y1; d844: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a d848: f8ad 308a strh.w r3, [sp, #138] ; 0x8a fill_area2.y2 = fill_area.y2; d84c: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e d850: f8ad 308e strh.w r3, [sp, #142] ; 0x8e _lv_blend_fill(clip, &fill_area2, d854: f89a 300d ldrb.w r3, [sl, #13] d858: 9302 str r3, [sp, #8] d85a: 9b08 ldr r3, [sp, #32] d85c: 9301 str r3, [sp, #4] d85e: 9700 str r7, [sp, #0] d860: 9b05 ldr r3, [sp, #20] d862: 465a mov r2, fp d864: a922 add r1, sp, #136 ; 0x88 d866: 9804 ldr r0, [sp, #16] d868: 4c2e ldr r4, [pc, #184] ; (d924 ) d86a: 47a0 blx r4 if(dsc->bg_grad_dir == LV_GRAD_DIR_VER) { d86c: f89a 3006 ldrb.w r3, [sl, #6] d870: 2b01 cmp r3, #1 d872: d02d beq.n d8d0 fill_area2.x1 = coords_bg.x2 - rout + 1; d874: f9bd 306c ldrsh.w r3, [sp, #108] ; 0x6c d878: 1c5a adds r2, r3, #1 d87a: 990c ldr r1, [sp, #48] ; 0x30 d87c: 1a54 subs r4, r2, r1 d87e: f8ad 4088 strh.w r4, [sp, #136] ; 0x88 fill_area2.x2 = coords_bg.x2; d882: f8ad 308c strh.w r3, [sp, #140] ; 0x8c int32_t mask_ofs = (coords_bg.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); d886: 1b9b subs r3, r3, r6 d888: 3301 adds r3, #1 d88a: f9b8 2010 ldrsh.w r2, [r8, #16] d88e: f9bd 1070 ldrsh.w r1, [sp, #112] ; 0x70 d892: 440a add r2, r1 d894: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, d896: f89a 200d ldrb.w r2, [sl, #13] d89a: 9202 str r2, [sp, #8] d89c: 9a08 ldr r2, [sp, #32] d89e: 9201 str r2, [sp, #4] d8a0: 9700 str r7, [sp, #0] d8a2: 9a05 ldr r2, [sp, #20] d8a4: 2b00 cmp r3, #0 d8a6: bfa8 it ge d8a8: 18d2 addge r2, r2, r3 d8aa: 4613 mov r3, r2 d8ac: 465a mov r2, fp d8ae: a922 add r1, sp, #136 ; 0x88 d8b0: 9804 ldr r0, [sp, #16] d8b2: 4c1c ldr r4, [pc, #112] ; (d924 ) d8b4: 47a0 blx r4 d8b6: e6f0 b.n d69a if(i >= max) return dsc->bg_grad_color; d8b8: f89a 3004 ldrb.w r3, [sl, #4] d8bc: f003 031f and.w r3, r3, #31 d8c0: f8ba 0004 ldrh.w r0, [sl, #4] d8c4: f3c0 1045 ubfx r0, r0, #5, #6 d8c8: f89a 2005 ldrb.w r2, [sl, #5] d8cc: 08d2 lsrs r2, r2, #3 d8ce: e792 b.n d7f6 fill_area2.x1 = coords_bg.x1 + rout; d8d0: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 d8d4: 9a0c ldr r2, [sp, #48] ; 0x30 d8d6: 4413 add r3, r2 d8d8: f8ad 3088 strh.w r3, [sp, #136] ; 0x88 fill_area2.x2 = coords_bg.x2 - rout; d8dc: f8bd 306c ldrh.w r3, [sp, #108] ; 0x6c d8e0: 1a9b subs r3, r3, r2 d8e2: f8ad 308c strh.w r3, [sp, #140] ; 0x8c _lv_blend_fill(clip, &fill_area2, d8e6: f89a 300d ldrb.w r3, [sl, #13] d8ea: 9302 str r3, [sp, #8] d8ec: 9b08 ldr r3, [sp, #32] d8ee: 9301 str r3, [sp, #4] d8f0: 2301 movs r3, #1 d8f2: 9300 str r3, [sp, #0] d8f4: 2300 movs r3, #0 d8f6: 465a mov r2, fp d8f8: a922 add r1, sp, #136 ; 0x88 d8fa: 9804 ldr r0, [sp, #16] d8fc: 47a0 blx r4 d8fe: e7b9 b.n d874 _lv_blend_map(clip, &fill_area, grad_map, mask_buf, mask_res, opa, dsc->bg_blend_mode); d900: f89a 300d ldrb.w r3, [sl, #13] d904: 9302 str r3, [sp, #8] d906: 9b08 ldr r3, [sp, #32] d908: 9301 str r3, [sp, #4] d90a: 9700 str r7, [sp, #0] d90c: 9b05 ldr r3, [sp, #20] d90e: 9a0d ldr r2, [sp, #52] ; 0x34 d910: a91e add r1, sp, #120 ; 0x78 d912: 9804 ldr r0, [sp, #16] d914: 4c04 ldr r4, [pc, #16] ; (d928 ) d916: 47a0 blx r4 d918: e6bf b.n d69a d91a: bf00 nop d91c: 00012bed .word 0x00012bed d920: 0000be1d .word 0x0000be1d d924: 00007751 .word 0x00007751 d928: 00008281 .word 0x00008281 d92c: 9f08 ldr r7, [sp, #32] if(dsc->bg_grad_dir == LV_GRAD_DIR_NONE && other_mask_cnt == 0 && split) { d92e: f89a 3006 ldrb.w r3, [sl, #6] d932: b923 cbnz r3, d93e d934: 9b0b ldr r3, [sp, #44] ; 0x2c d936: b913 cbnz r3, d93e d938: f1b9 0f32 cmp.w r9, #50 ; 0x32 d93c: dc0b bgt.n d956 if(grad_map) _lv_mem_buf_release(grad_map); d93e: 9b0d ldr r3, [sp, #52] ; 0x34 d940: b113 cbz r3, d948 d942: 4618 mov r0, r3 d944: 4bb3 ldr r3, [pc, #716] ; (dc14 ) d946: 4798 blx r3 lv_draw_mask_remove_id(mask_rout_id); d948: 980e ldr r0, [sp, #56] ; 0x38 d94a: 4bb3 ldr r3, [pc, #716] ; (dc18 ) d94c: 4798 blx r3 _lv_mem_buf_release(mask_buf); d94e: 9805 ldr r0, [sp, #20] d950: 4bb0 ldr r3, [pc, #704] ; (dc14 ) d952: 4798 blx r3 d954: e469 b.n d22a fill_area.x1 = coords_bg.x1 + rout; d956: b2b6 uxth r6, r6 d958: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 d95c: 4433 add r3, r6 d95e: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area.x2 = coords_bg.x2 - rout; d962: f8bd 306c ldrh.w r3, [sp, #108] ; 0x6c d966: 1b9b subs r3, r3, r6 d968: f8ad 307c strh.w r3, [sp, #124] ; 0x7c fill_area.y1 = coords_bg.y1; d96c: f9bd 306a ldrsh.w r3, [sp, #106] ; 0x6a d970: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fill_area.y2 = coords_bg.y1 + rout; d974: 4433 add r3, r6 d976: f8ad 307e strh.w r3, [sp, #126] ; 0x7e _lv_blend_fill(clip, &fill_area, d97a: f89a 300d ldrb.w r3, [sl, #13] d97e: 9302 str r3, [sp, #8] d980: 9701 str r7, [sp, #4] d982: 2301 movs r3, #1 d984: 9300 str r3, [sp, #0] d986: 2300 movs r3, #0 d988: f8ba 2002 ldrh.w r2, [sl, #2] d98c: a91e add r1, sp, #120 ; 0x78 d98e: 9804 ldr r0, [sp, #16] d990: 4ca2 ldr r4, [pc, #648] ; (dc1c ) d992: 47a0 blx r4 fill_area.y1 = coords_bg.y2 - rout; d994: f9bd 106e ldrsh.w r1, [sp, #110] ; 0x6e d998: 1b8a subs r2, r1, r6 d99a: b212 sxth r2, r2 d99c: f8ad 207a strh.w r2, [sp, #122] ; 0x7a if(fill_area.y1 <= fill_area.y2) fill_area.y1 = fill_area.y2 + 1; /*Avoid overdrawing the last line*/ d9a0: f9bd 307e ldrsh.w r3, [sp, #126] ; 0x7e d9a4: 429a cmp r2, r3 d9a6: bfdc itt le d9a8: 3301 addle r3, #1 d9aa: f8ad 307a strhle.w r3, [sp, #122] ; 0x7a fill_area.y2 = coords_bg.y2; d9ae: f8ad 107e strh.w r1, [sp, #126] ; 0x7e _lv_blend_fill(clip, &fill_area, d9b2: f89a 300d ldrb.w r3, [sl, #13] d9b6: 9302 str r3, [sp, #8] d9b8: 9701 str r7, [sp, #4] d9ba: 2501 movs r5, #1 d9bc: 9500 str r5, [sp, #0] d9be: 2300 movs r3, #0 d9c0: f8ba 2002 ldrh.w r2, [sl, #2] d9c4: a91e add r1, sp, #120 ; 0x78 d9c6: f8dd 8010 ldr.w r8, [sp, #16] d9ca: 4640 mov r0, r8 d9cc: 4c93 ldr r4, [pc, #588] ; (dc1c ) d9ce: 47a0 blx r4 fill_area.x1 = coords_bg.x1; d9d0: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 d9d4: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area.x2 = coords_bg.x2; d9d8: f8bd 306c ldrh.w r3, [sp, #108] ; 0x6c d9dc: f8ad 307c strh.w r3, [sp, #124] ; 0x7c fill_area.y1 = coords_bg.y1 + rout + 1; d9e0: f8bd 306a ldrh.w r3, [sp, #106] ; 0x6a d9e4: 442b add r3, r5 d9e6: 4433 add r3, r6 d9e8: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fill_area.y2 = coords_bg.y2 - rout - 1; d9ec: f8bd 306e ldrh.w r3, [sp, #110] ; 0x6e d9f0: 3b01 subs r3, #1 d9f2: 1b9e subs r6, r3, r6 d9f4: f8ad 607e strh.w r6, [sp, #126] ; 0x7e _lv_blend_fill(clip, &fill_area, d9f8: f89a 300d ldrb.w r3, [sl, #13] d9fc: 9302 str r3, [sp, #8] d9fe: 9701 str r7, [sp, #4] da00: 9500 str r5, [sp, #0] da02: 2300 movs r3, #0 da04: f8ba 2002 ldrh.w r2, [sl, #2] da08: a91e add r1, sp, #120 ; 0x78 da0a: 4640 mov r0, r8 da0c: 47a0 blx r4 da0e: e796 b.n d93e lv_img_src_t src_type = lv_img_src_get_type(dsc->pattern_image); da10: 4b83 ldr r3, [pc, #524] ; (dc20 ) da12: 4798 blx r3 da14: 4605 mov r5, r0 if(src_type == LV_IMG_SRC_FILE || src_type == LV_IMG_SRC_VARIABLE) { da16: 2801 cmp r0, #1 da18: d912 bls.n da40 else if(src_type == LV_IMG_SRC_SYMBOL) { da1a: 2802 cmp r0, #2 da1c: d039 beq.n da92 LV_LOG_WARN("lv_img_design: image source type is unknown"); da1e: 4b81 ldr r3, [pc, #516] ; (dc24 ) da20: 9300 str r3, [sp, #0] da22: 4b81 ldr r3, [pc, #516] ; (dc28 ) da24: f240 52ae movw r2, #1454 ; 0x5ae da28: 4980 ldr r1, [pc, #512] ; (dc2c ) da2a: 2002 movs r0, #2 da2c: 4c80 ldr r4, [pc, #512] ; (dc30 ) da2e: 47a0 blx r4 lv_draw_img(coords, clip, NULL, NULL); da30: 2300 movs r3, #0 da32: 461a mov r2, r3 da34: 9904 ldr r1, [sp, #16] da36: 9806 ldr r0, [sp, #24] da38: 4c7e ldr r4, [pc, #504] ; (dc34 ) da3a: 47a0 blx r4 da3c: f7ff bbfd b.w d23a lv_res_t res = lv_img_decoder_get_info(dsc->pattern_image, &header); da40: a929 add r1, sp, #164 ; 0xa4 da42: f8da 002c ldr.w r0, [sl, #44] ; 0x2c da46: 4b7c ldr r3, [pc, #496] ; (dc38 ) da48: 4798 blx r3 if(res != LV_RES_OK) { da4a: 2801 cmp r0, #1 da4c: d00a beq.n da64 LV_LOG_WARN("draw_img: can't get image info"); da4e: 4b7b ldr r3, [pc, #492] ; (dc3c ) da50: 9300 str r3, [sp, #0] da52: 4b75 ldr r3, [pc, #468] ; (dc28 ) da54: f240 5294 movw r2, #1428 ; 0x594 da58: 4974 ldr r1, [pc, #464] ; (dc2c ) da5a: 2002 movs r0, #2 da5c: 4c74 ldr r4, [pc, #464] ; (dc30 ) da5e: 47a0 blx r4 da60: f7ff bbeb b.w d23a img_w = header.w; da64: 9b29 ldr r3, [sp, #164] ; 0xa4 da66: f3c3 298a ubfx r9, r3, #10, #11 img_h = header.h; da6a: f8bd 70a6 ldrh.w r7, [sp, #166] ; 0xa6 da6e: f3c7 174a ubfx r7, r7, #5, #11 lv_draw_img_dsc_init(&img_dsc); da72: a81e add r0, sp, #120 ; 0x78 da74: 4b72 ldr r3, [pc, #456] ; (dc40 ) da76: 4798 blx r3 img_dsc.opa = dsc->pattern_opa; da78: f89a 3036 ldrb.w r3, [sl, #54] ; 0x36 da7c: f88d 3078 strb.w r3, [sp, #120] ; 0x78 img_dsc.recolor_opa = dsc->pattern_recolor_opa; da80: f89a 3037 ldrb.w r3, [sl, #55] ; 0x37 da84: f88d 3082 strb.w r3, [sp, #130] ; 0x82 img_dsc.recolor = dsc->pattern_recolor; da88: f8ba 3034 ldrh.w r3, [sl, #52] ; 0x34 da8c: f8ad 3084 strh.w r3, [sp, #132] ; 0x84 da90: e020 b.n dad4 lv_draw_label_dsc_init(&label_dsc); da92: a822 add r0, sp, #136 ; 0x88 da94: 4b6b ldr r3, [pc, #428] ; (dc44 ) da96: 4798 blx r3 label_dsc.color = dsc->pattern_recolor; da98: f8ba 3034 ldrh.w r3, [sl, #52] ; 0x34 da9c: f8ad 3088 strh.w r3, [sp, #136] ; 0x88 label_dsc.font = dsc->pattern_font; daa0: f8da 2030 ldr.w r2, [sl, #48] ; 0x30 daa4: 9223 str r2, [sp, #140] ; 0x8c label_dsc.opa = dsc->pattern_opa; daa6: f89a 3036 ldrb.w r3, [sl, #54] ; 0x36 daaa: f88d 3090 strb.w r3, [sp, #144] ; 0x90 _lv_txt_get_size(&s, dsc->pattern_image, label_dsc.font, label_dsc.letter_space, label_dsc.line_space, LV_COORD_MAX, daae: f9bd 3094 ldrsh.w r3, [sp, #148] ; 0x94 dab2: 2100 movs r1, #0 dab4: 9102 str r1, [sp, #8] dab6: f647 4118 movw r1, #31768 ; 0x7c18 daba: 9101 str r1, [sp, #4] dabc: f9bd 1092 ldrsh.w r1, [sp, #146] ; 0x92 dac0: 9100 str r1, [sp, #0] dac2: f8da 102c ldr.w r1, [sl, #44] ; 0x2c dac6: a829 add r0, sp, #164 ; 0xa4 dac8: 4c5f ldr r4, [pc, #380] ; (dc48 ) daca: 47a0 blx r4 img_w = s.x; dacc: f9bd 90a4 ldrsh.w r9, [sp, #164] ; 0xa4 img_h = s.y; dad0: f9bd 70a6 ldrsh.w r7, [sp, #166] ; 0xa6 if(dsc->pattern_repeat) { dad4: f89a 3038 ldrb.w r3, [sl, #56] ; 0x38 dad8: f013 0f01 tst.w r3, #1 dadc: d13f bne.n db5e return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); dade: 9c06 ldr r4, [sp, #24] dae0: 8821 ldrh r1, [r4, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); dae2: 8860 ldrh r0, [r4, #2] dae4: 88e2 ldrh r2, [r4, #6] dae6: 3201 adds r2, #1 dae8: 1a12 subs r2, r2, r0 int32_t obj_h = lv_area_get_height(coords); daea: b212 sxth r2, r2 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); daec: 88a3 ldrh r3, [r4, #4] daee: 3301 adds r3, #1 daf0: 1a5b subs r3, r3, r1 int32_t obj_w = lv_area_get_width(coords); daf2: b21b sxth r3, r3 coords_tmp.x1 = coords->x1 + (obj_w - img_w) / 2; daf4: eba3 0309 sub.w r3, r3, r9 daf8: eb03 73d3 add.w r3, r3, r3, lsr #31 dafc: eb01 0363 add.w r3, r1, r3, asr #1 db00: b29b uxth r3, r3 db02: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 coords_tmp.y1 = coords->y1 + (obj_h - img_h) / 2; db06: 1bd2 subs r2, r2, r7 db08: eb02 71d2 add.w r1, r2, r2, lsr #31 db0c: eb00 0161 add.w r1, r0, r1, asr #1 db10: b289 uxth r1, r1 db12: f8ad 1072 strh.w r1, [sp, #114] ; 0x72 coords_tmp.x2 = coords_tmp.x1 + img_w - 1; db16: f109 39ff add.w r9, r9, #4294967295 db1a: 4499 add r9, r3 db1c: f8ad 9074 strh.w r9, [sp, #116] ; 0x74 coords_tmp.y2 = coords_tmp.y1 + img_h - 1; db20: 1e7b subs r3, r7, #1 db22: 440b add r3, r1 db24: b29b uxth r3, r3 db26: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 if(src_type == LV_IMG_SRC_SYMBOL) { db2a: 2d02 cmp r5, #2 db2c: f000 80bd beq.w dcaa if(_lv_area_is_in(&coords_tmp, coords, dsc->radius) == false) { db30: f9ba 2000 ldrsh.w r2, [sl] db34: 9906 ldr r1, [sp, #24] db36: a81c add r0, sp, #112 ; 0x70 db38: 4b44 ldr r3, [pc, #272] ; (dc4c ) db3a: 4798 blx r3 int16_t radius_mask_id = LV_MASK_ID_INV; db3c: f04f 34ff mov.w r4, #4294967295 if(_lv_area_is_in(&coords_tmp, coords, dsc->radius) == false) { db40: 2800 cmp r0, #0 db42: f000 86d4 beq.w e8ee else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc); db46: ab1e add r3, sp, #120 ; 0x78 db48: f8da 202c ldr.w r2, [sl, #44] ; 0x2c db4c: 9904 ldr r1, [sp, #16] db4e: a81c add r0, sp, #112 ; 0x70 db50: 4d38 ldr r5, [pc, #224] ; (dc34 ) db52: 47a8 blx r5 lv_draw_mask_remove_id(radius_mask_id); db54: 4620 mov r0, r4 db56: 4b30 ldr r3, [pc, #192] ; (dc18 ) db58: 4798 blx r3 db5a: f7ff bb6e b.w d23a lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false); db5e: 2300 movs r3, #0 db60: f9ba 2000 ldrsh.w r2, [sl] db64: 9e06 ldr r6, [sp, #24] db66: 4631 mov r1, r6 db68: a829 add r0, sp, #164 ; 0xa4 db6a: 4c39 ldr r4, [pc, #228] ; (dc50 ) db6c: 47a0 blx r4 int16_t radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL); db6e: 2100 movs r1, #0 db70: a829 add r0, sp, #164 ; 0xa4 db72: 4b38 ldr r3, [pc, #224] ; (dc54 ) db74: 4798 blx r3 db76: 9007 str r0, [sp, #28] db78: 88b3 ldrh r3, [r6, #4] db7a: 3301 adds r3, #1 db7c: 4634 mov r4, r6 db7e: 8832 ldrh r2, [r6, #0] db80: 1a9b subs r3, r3, r2 int32_t ofs_x = (lv_area_get_width(coords) - (lv_area_get_width(coords) / img_w) * img_w) / 2; db82: b21b sxth r3, r3 db84: fb93 f2f9 sdiv r2, r3, r9 db88: fb09 3312 mls r3, r9, r2, r3 db8c: eb03 73d3 add.w r3, r3, r3, lsr #31 db90: ea4f 0b63 mov.w fp, r3, asr #1 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); db94: f9b6 1006 ldrsh.w r1, [r6, #6] db98: 8873 ldrh r3, [r6, #2] db9a: 1c4a adds r2, r1, #1 db9c: 1ad2 subs r2, r2, r3 int32_t ofs_y = (lv_area_get_height(coords) - (lv_area_get_height(coords) / img_h) * img_h) / 2; db9e: b210 sxth r0, r2 dba0: fb90 f2f7 sdiv r2, r0, r7 dba4: fb07 0212 mls r2, r7, r2, r0 dba8: eb02 72d2 add.w r2, r2, r2, lsr #31 coords_tmp.y1 = coords->y1 - ofs_y; dbac: eba3 0362 sub.w r3, r3, r2, asr #1 dbb0: b29b uxth r3, r3 dbb2: b21a sxth r2, r3 dbb4: f8ad 2072 strh.w r2, [sp, #114] ; 0x72 coords_tmp.y2 = coords_tmp.y1 + img_h - 1; dbb8: b2bf uxth r7, r7 dbba: 1e78 subs r0, r7, #1 dbbc: 4403 add r3, r0 dbbe: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(; coords_tmp.y1 <= coords->y2; coords_tmp.y1 += img_h, coords_tmp.y2 += img_h) { dbc2: 4291 cmp r1, r2 dbc4: db6c blt.n dca0 if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); dbc6: f8df 8090 ldr.w r8, [pc, #144] ; dc58 else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc); dbca: 4e1a ldr r6, [pc, #104] ; (dc34 ) dbcc: f8cd 9014 str.w r9, [sp, #20] dbd0: 46a1 mov r9, r4 dbd2: e052 b.n dc7a if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); dbd4: 2300 movs r3, #0 dbd6: 9300 str r3, [sp, #0] dbd8: f8da 302c ldr.w r3, [sl, #44] ; 0x2c dbdc: aa22 add r2, sp, #136 ; 0x88 dbde: 9904 ldr r1, [sp, #16] dbe0: a81c add r0, sp, #112 ; 0x70 dbe2: 47c0 blx r8 for(; coords_tmp.x1 <= coords->x2; coords_tmp.x1 += img_w, coords_tmp.x2 += img_w) { dbe4: f8bd 3070 ldrh.w r3, [sp, #112] ; 0x70 dbe8: 4423 add r3, r4 dbea: b21b sxth r3, r3 dbec: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 dbf0: f8bd 2074 ldrh.w r2, [sp, #116] ; 0x74 dbf4: 4422 add r2, r4 dbf6: f8ad 2074 strh.w r2, [sp, #116] ; 0x74 dbfa: f9b9 2004 ldrsh.w r2, [r9, #4] dbfe: 429a cmp r2, r3 dc00: db2c blt.n dc5c if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); dc02: 2d02 cmp r5, #2 dc04: d0e6 beq.n dbd4 else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc); dc06: ab1e add r3, sp, #120 ; 0x78 dc08: f8da 202c ldr.w r2, [sl, #44] ; 0x2c dc0c: 9904 ldr r1, [sp, #16] dc0e: a81c add r0, sp, #112 ; 0x70 dc10: 47b0 blx r6 dc12: e7e7 b.n dbe4 dc14: 00012571 .word 0x00012571 dc18: 0000be6d .word 0x0000be6d dc1c: 00007751 .word 0x00007751 dc20: 00009969 .word 0x00009969 dc24: 000250e0 .word 0x000250e0 dc28: 00025080 .word 0x00025080 dc2c: 00025090 .word 0x00025090 dc30: 0001225d .word 0x0001225d dc34: 000096e9 .word 0x000096e9 dc38: 0000fded .word 0x0000fded dc3c: 000250c0 .word 0x000250c0 dc40: 00009645 .word 0x00009645 dc44: 000099cd .word 0x000099cd dc48: 0001407d .word 0x0001407d dc4c: 0001176d .word 0x0001176d dc50: 0000c02d .word 0x0000c02d dc54: 0000bdc1 .word 0x0000bdc1 dc58: 00009a25 .word 0x00009a25 for(; coords_tmp.y1 <= coords->y2; coords_tmp.y1 += img_h, coords_tmp.y2 += img_h) { dc5c: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 dc60: 443b add r3, r7 dc62: b21b sxth r3, r3 dc64: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 dc68: f8bd 2076 ldrh.w r2, [sp, #118] ; 0x76 dc6c: 443a add r2, r7 dc6e: f8ad 2076 strh.w r2, [sp, #118] ; 0x76 dc72: f9b9 2006 ldrsh.w r2, [r9, #6] dc76: 429a cmp r2, r3 dc78: db12 blt.n dca0 coords_tmp.x1 = coords->x1 - ofs_x; dc7a: f8b9 3000 ldrh.w r3, [r9] dc7e: eba3 030b sub.w r3, r3, fp dc82: b29b uxth r3, r3 dc84: b21a sxth r2, r3 dc86: f8ad 2070 strh.w r2, [sp, #112] ; 0x70 coords_tmp.x2 = coords_tmp.x1 + img_w - 1; dc8a: f8bd 4014 ldrh.w r4, [sp, #20] dc8e: 1e61 subs r1, r4, #1 dc90: 440b add r3, r1 dc92: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 for(; coords_tmp.x1 <= coords->x2; coords_tmp.x1 += img_w, coords_tmp.x2 += img_w) { dc96: f9b9 3004 ldrsh.w r3, [r9, #4] dc9a: 4293 cmp r3, r2 dc9c: dab1 bge.n dc02 dc9e: e7dd b.n dc5c lv_draw_mask_remove_id(radius_mask_id); dca0: 9807 ldr r0, [sp, #28] dca2: 4b8a ldr r3, [pc, #552] ; (decc ) dca4: 4798 blx r3 dca6: f7ff bac8 b.w d23a coords_tmp.y1 += y_corr; dcaa: f002 0201 and.w r2, r2, #1 dcae: 4411 add r1, r2 dcb0: f8ad 1072 strh.w r1, [sp, #114] ; 0x72 coords_tmp.y2 += y_corr; dcb4: 4413 add r3, r2 dcb6: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 if(_lv_area_is_in(&coords_tmp, coords, dsc->radius) == false) { dcba: f9ba 2000 ldrsh.w r2, [sl] dcbe: 4621 mov r1, r4 dcc0: a81c add r0, sp, #112 ; 0x70 dcc2: 4b83 ldr r3, [pc, #524] ; (ded0 ) dcc4: 4798 blx r3 dcc6: b9a8 cbnz r0, dcf4 lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false); dcc8: 2300 movs r3, #0 dcca: f9ba 2000 ldrsh.w r2, [sl] dcce: 9906 ldr r1, [sp, #24] dcd0: a829 add r0, sp, #164 ; 0xa4 dcd2: 4c80 ldr r4, [pc, #512] ; (ded4 ) dcd4: 47a0 blx r4 radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL); dcd6: 2100 movs r1, #0 dcd8: a829 add r0, sp, #164 ; 0xa4 dcda: 4b7f ldr r3, [pc, #508] ; (ded8 ) dcdc: 4798 blx r3 dcde: 4604 mov r4, r0 if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); dce0: 2300 movs r3, #0 dce2: 9300 str r3, [sp, #0] dce4: f8da 302c ldr.w r3, [sl, #44] ; 0x2c dce8: aa22 add r2, sp, #136 ; 0x88 dcea: 9904 ldr r1, [sp, #16] dcec: a81c add r0, sp, #112 ; 0x70 dcee: 4d7b ldr r5, [pc, #492] ; (dedc ) dcf0: 47a8 blx r5 dcf2: e72f b.n db54 int16_t radius_mask_id = LV_MASK_ID_INV; dcf4: f04f 34ff mov.w r4, #4294967295 dcf8: e7f2 b.n dce0 draw_area.x1 -= disp_area->x1; dcfa: 8a29 ldrh r1, [r5, #16] dcfc: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 dd00: 1a5b subs r3, r3, r1 dd02: b29a uxth r2, r3 dd04: f8ad 2060 strh.w r2, [sp, #96] ; 0x60 draw_area.y1 -= disp_area->y1; dd08: 8a68 ldrh r0, [r5, #18] dd0a: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 dd0e: 1a1b subs r3, r3, r0 dd10: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 draw_area.x2 -= disp_area->x1; dd14: f8bd 3064 ldrh.w r3, [sp, #100] ; 0x64 dd18: 1a5b subs r3, r3, r1 dd1a: b29b uxth r3, r3 dd1c: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 draw_area.y2 -= disp_area->y1; dd20: f8bd 1066 ldrh.w r1, [sp, #102] ; 0x66 dd24: 1a09 subs r1, r1, r0 dd26: f8ad 1066 strh.w r1, [sp, #102] ; 0x66 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); dd2a: 3301 adds r3, #1 dd2c: 1a9b subs r3, r3, r2 dd2e: b21b sxth r3, r3 dd30: 9308 str r3, [sp, #32] lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); dd32: 9309 str r3, [sp, #36] ; 0x24 dd34: 4618 mov r0, r3 dd36: 4b6a ldr r3, [pc, #424] ; (dee0 ) dd38: 4798 blx r3 dd3a: 4683 mov fp, r0 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); dd3c: 4b69 ldr r3, [pc, #420] ; (dee4 ) dd3e: 4798 blx r3 if(other_mask_cnt) simple_mode = false; dd40: b948 cbnz r0, dd56 else if(dsc->border_side != LV_BORDER_SIDE_FULL) simple_mode = false; dd42: f9ba 8012 ldrsh.w r8, [sl, #18] dd46: f1b8 0f0f cmp.w r8, #15 dd4a: bf14 ite ne dd4c: f04f 0800 movne.w r8, #0 dd50: f04f 0801 moveq.w r8, #1 dd54: e001 b.n dd5a if(other_mask_cnt) simple_mode = false; dd56: f04f 0800 mov.w r8, #0 int32_t rout = dsc->radius; dd5a: f9ba 2000 ldrsh.w r2, [sl] dd5e: 9e06 ldr r6, [sp, #24] dd60: 88b3 ldrh r3, [r6, #4] dd62: 3301 adds r3, #1 dd64: 8831 ldrh r1, [r6, #0] dd66: 1a5b subs r3, r3, r1 int32_t coords_w = lv_area_get_width(coords); dd68: b219 sxth r1, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); dd6a: 88f3 ldrh r3, [r6, #6] dd6c: 3301 adds r3, #1 dd6e: 8870 ldrh r0, [r6, #2] dd70: 1a1b subs r3, r3, r0 int32_t coords_h = lv_area_get_height(coords); dd72: b21b sxth r3, r3 int32_t short_side = LV_MATH_MIN(coords_w, coords_h); dd74: 428b cmp r3, r1 dd76: bfa8 it ge dd78: 460b movge r3, r1 if(rout > short_side >> 1) rout = short_side >> 1; dd7a: 105b asrs r3, r3, #1 dd7c: 4293 cmp r3, r2 dd7e: bfa8 it ge dd80: 4613 movge r3, r2 dd82: 461a mov r2, r3 dd84: 930a str r3, [sp, #40] ; 0x28 if(rout > 0) { dd86: 2b00 cmp r3, #0 dd88: f340 8088 ble.w de9c lv_draw_mask_radius_init(&mask_rout_param, coords, rout, false); dd8c: 2300 movs r3, #0 dd8e: 4631 mov r1, r6 dd90: a822 add r0, sp, #136 ; 0x88 dd92: 4e50 ldr r6, [pc, #320] ; (ded4 ) dd94: 47b0 blx r6 mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); dd96: 2100 movs r1, #0 dd98: a822 add r0, sp, #136 ; 0x88 dd9a: 4b4f ldr r3, [pc, #316] ; (ded8 ) dd9c: 4798 blx r3 dd9e: 900e str r0, [sp, #56] ; 0x38 int32_t rin = rout - dsc->border_width; dda0: f9ba 6010 ldrsh.w r6, [sl, #16] dda4: 9a06 ldr r2, [sp, #24] dda6: 1e53 subs r3, r2, #1 dda8: 1dd0 adds r0, r2, #7 uint8_t * d8 = (uint8_t *)dst; ddaa: aa1a add r2, sp, #104 ; 0x68 *d8 = *s8; ddac: f813 1f01 ldrb.w r1, [r3, #1]! ddb0: f802 1b01 strb.w r1, [r2], #1 while(len) { ddb4: 4283 cmp r3, r0 ddb6: d1f9 bne.n ddac area_small.x1 += ((dsc->border_side & LV_BORDER_SIDE_LEFT) ? dsc->border_width : - (dsc->border_width + rout)); ddb8: f8bd 2068 ldrh.w r2, [sp, #104] ; 0x68 ddbc: f8ba 3012 ldrh.w r3, [sl, #18] ddc0: f013 0f04 tst.w r3, #4 ddc4: d06e beq.n dea4 ddc6: b2b1 uxth r1, r6 ddc8: 440a add r2, r1 ddca: f8ad 2068 strh.w r2, [sp, #104] ; 0x68 area_small.x2 -= ((dsc->border_side & LV_BORDER_SIDE_RIGHT) ? dsc->border_width : - (dsc->border_width + rout)); ddce: f8bd 206c ldrh.w r2, [sp, #108] ; 0x6c ddd2: f013 0f08 tst.w r3, #8 ddd6: d06a beq.n deae ddd8: b2b1 uxth r1, r6 ddda: 1a52 subs r2, r2, r1 dddc: f8ad 206c strh.w r2, [sp, #108] ; 0x6c area_small.y1 += ((dsc->border_side & LV_BORDER_SIDE_TOP) ? dsc->border_width : - (dsc->border_width + rout)); dde0: f8bd 206a ldrh.w r2, [sp, #106] ; 0x6a dde4: f013 0f02 tst.w r3, #2 dde8: d066 beq.n deb8 ddea: b2b1 uxth r1, r6 ddec: 440a add r2, r1 ddee: f8ad 206a strh.w r2, [sp, #106] ; 0x6a area_small.y2 -= ((dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? dsc->border_width : - (dsc->border_width + rout)); ddf2: f8bd 206e ldrh.w r2, [sp, #110] ; 0x6e ddf6: f013 0f01 tst.w r3, #1 ddfa: d062 beq.n dec2 ddfc: b2b3 uxth r3, r6 ddfe: 1ad3 subs r3, r2, r3 de00: f8ad 306e strh.w r3, [sp, #110] ; 0x6e lv_draw_mask_radius_init(&mask_rin_param, &area_small, rout - dsc->border_width, true); de04: f8dd 9028 ldr.w r9, [sp, #40] ; 0x28 de08: fa1f f789 uxth.w r7, r9 de0c: 1bba subs r2, r7, r6 de0e: 2301 movs r3, #1 de10: b212 sxth r2, r2 de12: a91a add r1, sp, #104 ; 0x68 de14: a829 add r0, sp, #164 ; 0xa4 de16: 4e2f ldr r6, [pc, #188] ; (ded4 ) de18: 47b0 blx r6 int16_t mask_rin_id = lv_draw_mask_add(&mask_rin_param, NULL); de1a: 2100 movs r1, #0 de1c: a829 add r0, sp, #164 ; 0xa4 de1e: 4b2e ldr r3, [pc, #184] ; (ded8 ) de20: 4798 blx r3 de22: 900f str r0, [sp, #60] ; 0x3c int32_t corner_size = LV_MATH_MAX(rout, dsc->border_width - 1); de24: f9ba 3010 ldrsh.w r3, [sl, #16] de28: 3b01 subs r3, #1 de2a: 454b cmp r3, r9 de2c: bfb8 it lt de2e: 464b movlt r3, r9 de30: 4619 mov r1, r3 de32: 930d str r3, [sp, #52] ; 0x34 lv_color_t color = dsc->border_color; de34: f8ba 300e ldrh.w r3, [sl, #14] de38: f8ad 3014 strh.w r3, [sp, #20] lv_blend_mode_t blend_mode = dsc->border_blend_mode; de3c: f89a 6015 ldrb.w r6, [sl, #21] if(simple_mode) { de40: f1b8 0f00 cmp.w r8, #0 de44: f000 81bf beq.w e1c6 int32_t upper_corner_end = coords->y1 - disp_area->y1 + corner_size; de48: f9b5 3012 ldrsh.w r3, [r5, #18] de4c: 9806 ldr r0, [sp, #24] de4e: f9b0 2002 ldrsh.w r2, [r0, #2] de52: 1ad2 subs r2, r2, r3 de54: 440a add r2, r1 upper_corner_end = LV_MATH_MIN(upper_corner_end, draw_area.y2); de56: f9bd 1066 ldrsh.w r1, [sp, #102] ; 0x66 de5a: 4291 cmp r1, r2 de5c: bfa8 it ge de5e: 4611 movge r1, r2 de60: 910b str r1, [sp, #44] ; 0x2c fill_area.x1 = coords->x1; de62: 8802 ldrh r2, [r0, #0] de64: f8ad 2070 strh.w r2, [sp, #112] ; 0x70 fill_area.x2 = coords->x2; de68: 8882 ldrh r2, [r0, #4] de6a: f8ad 2074 strh.w r2, [sp, #116] ; 0x74 fill_area.y1 = disp_area->y1 + draw_area.y1; de6e: f9bd 2062 ldrsh.w r2, [sp, #98] ; 0x62 de72: 4413 add r3, r2 de74: b21b sxth r3, r3 de76: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2 = fill_area.y1; de7a: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = draw_area.y1; h <= upper_corner_end; h++) { de7e: 4690 mov r8, r2 de80: 9b0b ldr r3, [sp, #44] ; 0x2c de82: 4293 cmp r3, r2 de84: f2c0 80b3 blt.w dfee _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); de88: f8df 905c ldr.w r9, [pc, #92] ; dee8 de8c: f8cd b01c str.w fp, [sp, #28] de90: 46b3 mov fp, r6 de92: 4626 mov r6, r4 de94: f8cd a030 str.w sl, [sp, #48] ; 0x30 de98: 4682 mov sl, r0 de9a: e055 b.n df48 int16_t mask_rout_id = LV_MASK_ID_INV; de9c: f04f 33ff mov.w r3, #4294967295 dea0: 930e str r3, [sp, #56] ; 0x38 dea2: e77d b.n dda0 area_small.x1 += ((dsc->border_side & LV_BORDER_SIDE_LEFT) ? dsc->border_width : - (dsc->border_width + rout)); dea4: 990a ldr r1, [sp, #40] ; 0x28 dea6: 1871 adds r1, r6, r1 dea8: 4249 negs r1, r1 deaa: b289 uxth r1, r1 deac: e78c b.n ddc8 area_small.x2 -= ((dsc->border_side & LV_BORDER_SIDE_RIGHT) ? dsc->border_width : - (dsc->border_width + rout)); deae: 990a ldr r1, [sp, #40] ; 0x28 deb0: 1871 adds r1, r6, r1 deb2: 4249 negs r1, r1 deb4: b289 uxth r1, r1 deb6: e790 b.n ddda area_small.y1 += ((dsc->border_side & LV_BORDER_SIDE_TOP) ? dsc->border_width : - (dsc->border_width + rout)); deb8: 990a ldr r1, [sp, #40] ; 0x28 deba: 1871 adds r1, r6, r1 debc: 4249 negs r1, r1 debe: b289 uxth r1, r1 dec0: e794 b.n ddec area_small.y2 -= ((dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? dsc->border_width : - (dsc->border_width + rout)); dec2: 9b0a ldr r3, [sp, #40] ; 0x28 dec4: 18f3 adds r3, r6, r3 dec6: 425b negs r3, r3 dec8: b29b uxth r3, r3 deca: e798 b.n ddfe decc: 0000be6d .word 0x0000be6d ded0: 0001176d .word 0x0001176d ded4: 0000c02d .word 0x0000c02d ded8: 0000bdc1 .word 0x0000bdc1 dedc: 00009a25 .word 0x00009a25 dee0: 0001293d .word 0x0001293d dee4: 0000bec5 .word 0x0000bec5 dee8: 00007751 .word 0x00007751 fill_area2.x1 = coords->x2 - rout + 1; deec: f9ba 3004 ldrsh.w r3, [sl, #4] def0: 1c5a adds r2, r3, #1 def2: 1bd2 subs r2, r2, r7 def4: f8ad 2078 strh.w r2, [sp, #120] ; 0x78 fill_area2.x2 = coords->x2; def8: f8ad 307c strh.w r3, [sp, #124] ; 0x7c int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); defc: 9a0a ldr r2, [sp, #40] ; 0x28 defe: 1a9b subs r3, r3, r2 df00: 3301 adds r3, #1 df02: f9b5 2010 ldrsh.w r2, [r5, #16] df06: f9bd 1060 ldrsh.w r1, [sp, #96] ; 0x60 df0a: 440a add r2, r1 df0c: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); df0e: f8cd b008 str.w fp, [sp, #8] df12: 9601 str r6, [sp, #4] df14: 9400 str r4, [sp, #0] df16: 9a07 ldr r2, [sp, #28] df18: 2b00 cmp r3, #0 df1a: bfa8 it ge df1c: 18d2 addge r2, r2, r3 df1e: 4613 mov r3, r2 df20: f8bd 2014 ldrh.w r2, [sp, #20] df24: a91e add r1, sp, #120 ; 0x78 df26: 9804 ldr r0, [sp, #16] df28: 47c8 blx r9 fill_area.y1++; df2a: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 df2e: 3301 adds r3, #1 df30: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2++; df34: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 df38: 3301 adds r3, #1 df3a: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = draw_area.y1; h <= upper_corner_end; h++) { df3e: f108 0801 add.w r8, r8, #1 df42: 9b0b ldr r3, [sp, #44] ; 0x2c df44: 4543 cmp r3, r8 df46: db4c blt.n dfe2 _lv_memset_ff(mask_buf, draw_area_w); df48: 9909 ldr r1, [sp, #36] ; 0x24 df4a: 9c07 ldr r4, [sp, #28] df4c: 4620 mov r0, r4 df4e: 4bc7 ldr r3, [pc, #796] ; (e26c ) df50: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); df52: 8a6a ldrh r2, [r5, #18] df54: 4442 add r2, r8 df56: 8a29 ldrh r1, [r5, #16] df58: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 df5c: 4419 add r1, r3 df5e: 9b08 ldr r3, [sp, #32] df60: b212 sxth r2, r2 df62: b209 sxth r1, r1 df64: 9407 str r4, [sp, #28] df66: 4620 mov r0, r4 df68: 4cc1 ldr r4, [pc, #772] ; (e270 ) df6a: 47a0 blx r4 df6c: 4604 mov r4, r0 fill_area2.y1 = fill_area.y1; df6e: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 df72: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fill_area2.y2 = fill_area.y2; df76: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 df7a: f8ad 307e strh.w r3, [sp, #126] ; 0x7e fill_area2.x1 = coords->x1; df7e: f9ba 3000 ldrsh.w r3, [sl] df82: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = coords->x1 + rout - 1; df86: 3b01 subs r3, #1 df88: 443b add r3, r7 df8a: f8ad 307c strh.w r3, [sp, #124] ; 0x7c _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); df8e: f8cd b008 str.w fp, [sp, #8] df92: 9601 str r6, [sp, #4] df94: 9000 str r0, [sp, #0] df96: 9b07 ldr r3, [sp, #28] df98: f8bd 2014 ldrh.w r2, [sp, #20] df9c: a91e add r1, sp, #120 ; 0x78 df9e: 9804 ldr r0, [sp, #16] dfa0: 47c8 blx r9 if(fill_area2.y2 < coords->y1 + dsc->border_width) { dfa2: f9bd 207e ldrsh.w r2, [sp, #126] ; 0x7e dfa6: f9ba 3002 ldrsh.w r3, [sl, #2] dfaa: 990c ldr r1, [sp, #48] ; 0x30 dfac: f9b1 1010 ldrsh.w r1, [r1, #16] dfb0: 440b add r3, r1 dfb2: 429a cmp r2, r3 dfb4: da9a bge.n deec fill_area2.x1 = coords->x1 + rout; dfb6: f8ba 3000 ldrh.w r3, [sl] dfba: 443b add r3, r7 dfbc: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = coords->x2 - rout; dfc0: f8ba 3004 ldrh.w r3, [sl, #4] dfc4: 1bdb subs r3, r3, r7 dfc6: f8ad 307c strh.w r3, [sp, #124] ; 0x7c _lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); dfca: f8cd b008 str.w fp, [sp, #8] dfce: 9601 str r6, [sp, #4] dfd0: 2301 movs r3, #1 dfd2: 9300 str r3, [sp, #0] dfd4: 2300 movs r3, #0 dfd6: f8bd 2014 ldrh.w r2, [sp, #20] dfda: a91e add r1, sp, #120 ; 0x78 dfdc: 9804 ldr r0, [sp, #16] dfde: 47c8 blx r9 dfe0: e784 b.n deec dfe2: 4634 mov r4, r6 dfe4: 465e mov r6, fp dfe6: f8dd b01c ldr.w fp, [sp, #28] dfea: f8dd a030 ldr.w sl, [sp, #48] ; 0x30 int32_t lower_corner_end = coords->y2 - disp_area->y1 - corner_size; dfee: f9b5 3012 ldrsh.w r3, [r5, #18] dff2: 9a06 ldr r2, [sp, #24] dff4: f9b2 2006 ldrsh.w r2, [r2, #6] dff8: 1ad2 subs r2, r2, r3 dffa: 990d ldr r1, [sp, #52] ; 0x34 dffc: 1a52 subs r2, r2, r1 lower_corner_end = LV_MATH_MAX(lower_corner_end, draw_area.y1); dffe: f9bd 8062 ldrsh.w r8, [sp, #98] ; 0x62 e002: 4590 cmp r8, r2 e004: bfb8 it lt e006: 4690 movlt r8, r2 if(lower_corner_end <= upper_corner_end) lower_corner_end = upper_corner_end + 1; e008: 990b ldr r1, [sp, #44] ; 0x2c e00a: 4541 cmp r1, r8 e00c: bfa8 it ge e00e: f101 0801 addge.w r8, r1, #1 fill_area.y1 = disp_area->y1 + lower_corner_end; e012: 4443 add r3, r8 e014: b21b sxth r3, r3 e016: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2 = fill_area.y1; e01a: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = lower_corner_end; h <= draw_area.y2; h++) { e01e: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66 e022: 4598 cmp r8, r3 e024: f300 808d bgt.w e142 _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); e028: f8df 9248 ldr.w r9, [pc, #584] ; e274 e02c: f8cd b01c str.w fp, [sp, #28] e030: 46b3 mov fp, r6 e032: 4626 mov r6, r4 e034: f8cd a02c str.w sl, [sp, #44] ; 0x2c e038: f8dd a018 ldr.w sl, [sp, #24] e03c: e02e b.n e09c fill_area2.x1 = coords->x2 - rout + 1; e03e: f9ba 3004 ldrsh.w r3, [sl, #4] e042: 1c5a adds r2, r3, #1 e044: 1bd2 subs r2, r2, r7 e046: f8ad 2078 strh.w r2, [sp, #120] ; 0x78 fill_area2.x2 = coords->x2; e04a: f8ad 307c strh.w r3, [sp, #124] ; 0x7c int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); e04e: 9a0a ldr r2, [sp, #40] ; 0x28 e050: 1a9b subs r3, r3, r2 e052: 3301 adds r3, #1 e054: f9b5 2010 ldrsh.w r2, [r5, #16] e058: f9bd 1060 ldrsh.w r1, [sp, #96] ; 0x60 e05c: 440a add r2, r1 e05e: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); e060: f8cd b008 str.w fp, [sp, #8] e064: 9601 str r6, [sp, #4] e066: 9400 str r4, [sp, #0] e068: 9a07 ldr r2, [sp, #28] e06a: 2b00 cmp r3, #0 e06c: bfa8 it ge e06e: 18d2 addge r2, r2, r3 e070: 4613 mov r3, r2 e072: f8bd 2014 ldrh.w r2, [sp, #20] e076: a91e add r1, sp, #120 ; 0x78 e078: 9804 ldr r0, [sp, #16] e07a: 47c8 blx r9 fill_area.y1++; e07c: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 e080: 3301 adds r3, #1 e082: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2++; e086: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 e08a: 3301 adds r3, #1 e08c: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = lower_corner_end; h <= draw_area.y2; h++) { e090: f108 0801 add.w r8, r8, #1 e094: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66 e098: 4598 cmp r8, r3 e09a: dc4c bgt.n e136 _lv_memset_ff(mask_buf, draw_area_w); e09c: 9909 ldr r1, [sp, #36] ; 0x24 e09e: 9c07 ldr r4, [sp, #28] e0a0: 4620 mov r0, r4 e0a2: 4b72 ldr r3, [pc, #456] ; (e26c ) e0a4: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); e0a6: 8a6a ldrh r2, [r5, #18] e0a8: 4442 add r2, r8 e0aa: 8a29 ldrh r1, [r5, #16] e0ac: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 e0b0: 4419 add r1, r3 e0b2: 9b08 ldr r3, [sp, #32] e0b4: b212 sxth r2, r2 e0b6: b209 sxth r1, r1 e0b8: 9407 str r4, [sp, #28] e0ba: 4620 mov r0, r4 e0bc: 4c6c ldr r4, [pc, #432] ; (e270 ) e0be: 47a0 blx r4 e0c0: 4604 mov r4, r0 fill_area2.x1 = coords->x1; e0c2: f9ba 3000 ldrsh.w r3, [sl] e0c6: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = coords->x1 + rout - 1; e0ca: 3b01 subs r3, #1 e0cc: 443b add r3, r7 e0ce: f8ad 307c strh.w r3, [sp, #124] ; 0x7c fill_area2.y1 = fill_area.y1; e0d2: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 e0d6: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fill_area2.y2 = fill_area.y2; e0da: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 e0de: f8ad 307e strh.w r3, [sp, #126] ; 0x7e _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); e0e2: f8cd b008 str.w fp, [sp, #8] e0e6: 9601 str r6, [sp, #4] e0e8: 9000 str r0, [sp, #0] e0ea: 9b07 ldr r3, [sp, #28] e0ec: f8bd 2014 ldrh.w r2, [sp, #20] e0f0: a91e add r1, sp, #120 ; 0x78 e0f2: 9804 ldr r0, [sp, #16] e0f4: 47c8 blx r9 if(fill_area2.y2 > coords->y2 - dsc->border_width) { e0f6: f9bd 207e ldrsh.w r2, [sp, #126] ; 0x7e e0fa: f9ba 3006 ldrsh.w r3, [sl, #6] e0fe: 990b ldr r1, [sp, #44] ; 0x2c e100: f9b1 1010 ldrsh.w r1, [r1, #16] e104: 1a5b subs r3, r3, r1 e106: 429a cmp r2, r3 e108: dd99 ble.n e03e fill_area2.x1 = coords->x1 + rout; e10a: f8ba 3000 ldrh.w r3, [sl] e10e: 443b add r3, r7 e110: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = coords->x2 - rout; e114: f8ba 3004 ldrh.w r3, [sl, #4] e118: 1bdb subs r3, r3, r7 e11a: f8ad 307c strh.w r3, [sp, #124] ; 0x7c _lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); e11e: f8cd b008 str.w fp, [sp, #8] e122: 9601 str r6, [sp, #4] e124: 2301 movs r3, #1 e126: 9300 str r3, [sp, #0] e128: 2300 movs r3, #0 e12a: f8bd 2014 ldrh.w r2, [sp, #20] e12e: a91e add r1, sp, #120 ; 0x78 e130: 9804 ldr r0, [sp, #16] e132: 47c8 blx r9 e134: e783 b.n e03e e136: 4634 mov r4, r6 e138: 465e mov r6, fp e13a: f8dd b01c ldr.w fp, [sp, #28] e13e: f8dd a02c ldr.w sl, [sp, #44] ; 0x2c fill_area.y1 = coords->y1 + corner_size + 1; e142: f8bd 2034 ldrh.w r2, [sp, #52] ; 0x34 e146: 9906 ldr r1, [sp, #24] e148: 884b ldrh r3, [r1, #2] e14a: 3301 adds r3, #1 e14c: 4413 add r3, r2 e14e: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2 = coords->y2 - corner_size - 1; e152: 88cb ldrh r3, [r1, #6] e154: 3b01 subs r3, #1 e156: 1a9b subs r3, r3, r2 e158: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 fill_area.x1 = coords->x1; e15c: f9b1 3000 ldrsh.w r3, [r1] e160: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 fill_area.x2 = coords->x1 + dsc->border_width - 1; e164: f8ba 2010 ldrh.w r2, [sl, #16] e168: 3a01 subs r2, #1 e16a: 4413 add r3, r2 e16c: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); e170: 9602 str r6, [sp, #8] e172: 9401 str r4, [sp, #4] e174: 2701 movs r7, #1 e176: 9700 str r7, [sp, #0] e178: 2300 movs r3, #0 e17a: f8bd 9014 ldrh.w r9, [sp, #20] e17e: 464a mov r2, r9 e180: a91c add r1, sp, #112 ; 0x70 e182: f8dd 8010 ldr.w r8, [sp, #16] e186: 4640 mov r0, r8 e188: 4d3a ldr r5, [pc, #232] ; (e274 ) e18a: 47a8 blx r5 fill_area.x1 = coords->x2 - dsc->border_width + 1; e18c: 9b06 ldr r3, [sp, #24] e18e: f9b3 2004 ldrsh.w r2, [r3, #4] e192: f8ba 3010 ldrh.w r3, [sl, #16] e196: 1afb subs r3, r7, r3 e198: 4413 add r3, r2 e19a: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 fill_area.x2 = coords->x2; e19e: f8ad 2074 strh.w r2, [sp, #116] ; 0x74 _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); e1a2: 9602 str r6, [sp, #8] e1a4: 9401 str r4, [sp, #4] e1a6: 9700 str r7, [sp, #0] e1a8: 2300 movs r3, #0 e1aa: 464a mov r2, r9 e1ac: a91c add r1, sp, #112 ; 0x70 e1ae: 4640 mov r0, r8 e1b0: 47a8 blx r5 lv_draw_mask_remove_id(mask_rin_id); e1b2: 980f ldr r0, [sp, #60] ; 0x3c e1b4: 4c30 ldr r4, [pc, #192] ; (e278 ) e1b6: 47a0 blx r4 lv_draw_mask_remove_id(mask_rout_id); e1b8: 980e ldr r0, [sp, #56] ; 0x38 e1ba: 47a0 blx r4 _lv_mem_buf_release(mask_buf); e1bc: 4658 mov r0, fp e1be: 4b2f ldr r3, [pc, #188] ; (e27c ) e1c0: 4798 blx r3 e1c2: f7ff b854 b.w d26e fill_area.x1 = coords->x1; e1c6: 9a06 ldr r2, [sp, #24] e1c8: f9b2 1000 ldrsh.w r1, [r2] e1cc: f8ad 1070 strh.w r1, [sp, #112] ; 0x70 fill_area.x2 = coords->x2; e1d0: f9b2 2004 ldrsh.w r2, [r2, #4] e1d4: f8ad 2074 strh.w r2, [sp, #116] ; 0x74 fill_area.y1 = disp_area->y1 + draw_area.y1; e1d8: f9bd 0062 ldrsh.w r0, [sp, #98] ; 0x62 e1dc: 8a6b ldrh r3, [r5, #18] e1de: 4403 add r3, r0 e1e0: b21b sxth r3, r3 e1e2: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2 = fill_area.y1; e1e6: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 if(dsc->border_side == LV_BORDER_SIDE_LEFT) fill_area.x2 = coords->x1 + corner_size; e1ea: f9ba 3012 ldrsh.w r3, [sl, #18] e1ee: 2b04 cmp r3, #4 e1f0: d029 beq.n e246 else if(dsc->border_side == LV_BORDER_SIDE_RIGHT) fill_area.x1 = coords->x2 - corner_size; e1f2: 2b08 cmp r3, #8 e1f4: d044 beq.n e280 volatile bool top_only = false; e1f6: 2200 movs r2, #0 e1f8: f88d 204e strb.w r2, [sp, #78] ; 0x4e volatile bool bottom_only = false; e1fc: f88d 204f strb.w r2, [sp, #79] ; 0x4f if(dsc->border_side == LV_BORDER_SIDE_TOP) top_only = true; e200: 2b02 cmp r3, #2 e202: d129 bne.n e258 e204: 2301 movs r3, #1 e206: f88d 304e strb.w r3, [sp, #78] ; 0x4e volatile bool normal = !top_only && !bottom_only ? true : false; e20a: f89d 304e ldrb.w r3, [sp, #78] ; 0x4e e20e: b91b cbnz r3, e218 e210: f89d 804f ldrb.w r8, [sp, #79] ; 0x4f e214: f088 0801 eor.w r8, r8, #1 e218: f008 0801 and.w r8, r8, #1 e21c: f88d 8050 strb.w r8, [sp, #80] ; 0x50 for(h = draw_area.y1; h <= draw_area.y2; h++) { e220: 4607 mov r7, r0 e222: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66 e226: 4298 cmp r0, r3 e228: dcc3 bgt.n e1b2 _lv_memset_ff(mask_buf, draw_area_w); e22a: f8df 8040 ldr.w r8, [pc, #64] ; e26c _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); e22e: f8df 9044 ldr.w r9, [pc, #68] ; e274 e232: 940a str r4, [sp, #40] ; 0x28 e234: f8cd b01c str.w fp, [sp, #28] e238: f8dd b018 ldr.w fp, [sp, #24] e23c: f8cd a02c str.w sl, [sp, #44] ; 0x2c e240: f8dd a034 ldr.w sl, [sp, #52] ; 0x34 e244: e04e b.n e2e4 if(dsc->border_side == LV_BORDER_SIDE_LEFT) fill_area.x2 = coords->x1 + corner_size; e246: 9a0d ldr r2, [sp, #52] ; 0x34 e248: 4411 add r1, r2 e24a: f8ad 1074 strh.w r1, [sp, #116] ; 0x74 volatile bool top_only = false; e24e: 2200 movs r2, #0 e250: f88d 204e strb.w r2, [sp, #78] ; 0x4e volatile bool bottom_only = false; e254: f88d 204f strb.w r2, [sp, #79] ; 0x4f if(dsc->border_side == LV_BORDER_SIDE_BOTTOM) bottom_only = true; e258: 2b01 cmp r3, #1 e25a: d016 beq.n e28a if(dsc->border_side == (LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM)) { e25c: 2b03 cmp r3, #3 e25e: d1d4 bne.n e20a top_only = true; e260: 2301 movs r3, #1 e262: f88d 304e strb.w r3, [sp, #78] ; 0x4e bottom_only = true; e266: f88d 304f strb.w r3, [sp, #79] ; 0x4f e26a: e7ce b.n e20a e26c: 00012bed .word 0x00012bed e270: 0000be1d .word 0x0000be1d e274: 00007751 .word 0x00007751 e278: 0000be6d .word 0x0000be6d e27c: 00012571 .word 0x00012571 else if(dsc->border_side == LV_BORDER_SIDE_RIGHT) fill_area.x1 = coords->x2 - corner_size; e280: 990d ldr r1, [sp, #52] ; 0x34 e282: 1a52 subs r2, r2, r1 e284: f8ad 2070 strh.w r2, [sp, #112] ; 0x70 e288: e7e1 b.n e24e if(dsc->border_side == LV_BORDER_SIDE_BOTTOM) bottom_only = true; e28a: f88d 304f strb.w r3, [sp, #79] ; 0x4f e28e: e7bc b.n e20a _lv_memset_ff(mask_buf, draw_area_w); e290: 9909 ldr r1, [sp, #36] ; 0x24 e292: 9c07 ldr r4, [sp, #28] e294: 4620 mov r0, r4 e296: 47c0 blx r8 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); e298: 8a6a ldrh r2, [r5, #18] e29a: 443a add r2, r7 e29c: 8a29 ldrh r1, [r5, #16] e29e: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 e2a2: 4419 add r1, r3 e2a4: 9b08 ldr r3, [sp, #32] e2a6: b212 sxth r2, r2 e2a8: b209 sxth r1, r1 e2aa: 9407 str r4, [sp, #28] e2ac: 4620 mov r0, r4 e2ae: 4c98 ldr r4, [pc, #608] ; (e510 ) e2b0: 47a0 blx r4 _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); e2b2: 9602 str r6, [sp, #8] e2b4: 9a0a ldr r2, [sp, #40] ; 0x28 e2b6: 9201 str r2, [sp, #4] e2b8: 9000 str r0, [sp, #0] e2ba: 9b07 ldr r3, [sp, #28] e2bc: f8bd 2014 ldrh.w r2, [sp, #20] e2c0: a91c add r1, sp, #112 ; 0x70 e2c2: 9804 ldr r0, [sp, #16] e2c4: 47c8 blx r9 fill_area.y1++; e2c6: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 e2ca: 3301 adds r3, #1 e2cc: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2++; e2d0: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 e2d4: 3301 adds r3, #1 e2d6: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = draw_area.y1; h <= draw_area.y2; h++) { e2da: 3701 adds r7, #1 e2dc: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66 e2e0: 429f cmp r7, r3 e2e2: dc1a bgt.n e31a if(normal || e2e4: f89d 3050 ldrb.w r3, [sp, #80] ; 0x50 e2e8: 2b00 cmp r3, #0 e2ea: d1d1 bne.n e290 (top_only && fill_area.y1 <= coords->y1 + corner_size) || e2ec: f89d 304e ldrb.w r3, [sp, #78] ; 0x4e if(normal || e2f0: b133 cbz r3, e300 (top_only && fill_area.y1 <= coords->y1 + corner_size) || e2f2: f9bd 2072 ldrsh.w r2, [sp, #114] ; 0x72 e2f6: f9bb 3002 ldrsh.w r3, [fp, #2] e2fa: 4453 add r3, sl e2fc: 429a cmp r2, r3 e2fe: ddc7 ble.n e290 (bottom_only && fill_area.y1 >= coords->y2 - corner_size)) { e300: f89d 304f ldrb.w r3, [sp, #79] ; 0x4f (top_only && fill_area.y1 <= coords->y1 + corner_size) || e304: 2b00 cmp r3, #0 e306: d0de beq.n e2c6 (bottom_only && fill_area.y1 >= coords->y2 - corner_size)) { e308: f9bd 2072 ldrsh.w r2, [sp, #114] ; 0x72 e30c: f9bb 3006 ldrsh.w r3, [fp, #6] e310: eba3 030a sub.w r3, r3, sl e314: 429a cmp r2, r3 e316: dbd6 blt.n e2c6 e318: e7ba b.n e290 e31a: f8dd b01c ldr.w fp, [sp, #28] e31e: f8dd a02c ldr.w sl, [sp, #44] ; 0x2c e322: e746 b.n e1b2 lv_point_t s; _lv_txt_get_size(&s, dsc->value_str, dsc->value_font, dsc->value_letter_space, dsc->value_line_space, LV_COORD_MAX, e324: f9ba 304c ldrsh.w r3, [sl, #76] ; 0x4c e328: 2400 movs r4, #0 e32a: 9402 str r4, [sp, #8] e32c: f647 4218 movw r2, #31768 ; 0x7c18 e330: 9201 str r2, [sp, #4] e332: f9ba 204e ldrsh.w r2, [sl, #78] ; 0x4e e336: 9200 str r2, [sp, #0] e338: f8da 2040 ldr.w r2, [sl, #64] ; 0x40 e33c: a81c add r0, sp, #112 ; 0x70 e33e: 4d75 ldr r5, [pc, #468] ; (e514 ) e340: 47a8 blx r5 LV_TXT_FLAG_NONE); lv_area_t value_area; value_area.x1 = 0; e342: f8ad 4088 strh.w r4, [sp, #136] ; 0x88 value_area.y1 = 0; e346: f8ad 408a strh.w r4, [sp, #138] ; 0x8a value_area.x2 = s.x - 1; e34a: f8bd 3070 ldrh.w r3, [sp, #112] ; 0x70 e34e: 3b01 subs r3, #1 e350: f8ad 308c strh.w r3, [sp, #140] ; 0x8c value_area.y2 = s.y - 1; e354: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 e358: 3b01 subs r3, #1 e35a: f8ad 308e strh.w r3, [sp, #142] ; 0x8e lv_point_t p_align; _lv_area_align(coords, &value_area, dsc->value_align, &p_align); e35e: ab1e add r3, sp, #120 ; 0x78 e360: f89a 2050 ldrb.w r2, [sl, #80] ; 0x50 e364: a922 add r1, sp, #136 ; 0x88 e366: 9806 ldr r0, [sp, #24] e368: 4d6b ldr r5, [pc, #428] ; (e518 ) e36a: 47a8 blx r5 value_area.x1 += p_align.x + dsc->value_ofs_x; e36c: f8bd 2078 ldrh.w r2, [sp, #120] ; 0x78 e370: f8ba 3048 ldrh.w r3, [sl, #72] ; 0x48 e374: 441a add r2, r3 e376: b292 uxth r2, r2 e378: f8bd 3088 ldrh.w r3, [sp, #136] ; 0x88 e37c: 4413 add r3, r2 e37e: f8ad 3088 strh.w r3, [sp, #136] ; 0x88 value_area.y1 += p_align.y + dsc->value_ofs_y; e382: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a e386: f8ba 104a ldrh.w r1, [sl, #74] ; 0x4a e38a: 440b add r3, r1 e38c: b29b uxth r3, r3 e38e: f8bd 108a ldrh.w r1, [sp, #138] ; 0x8a e392: 4419 add r1, r3 e394: f8ad 108a strh.w r1, [sp, #138] ; 0x8a value_area.x2 += p_align.x + dsc->value_ofs_x; e398: f8bd 108c ldrh.w r1, [sp, #140] ; 0x8c e39c: 440a add r2, r1 e39e: f8ad 208c strh.w r2, [sp, #140] ; 0x8c value_area.y2 += p_align.y + dsc->value_ofs_y; e3a2: f8bd 208e ldrh.w r2, [sp, #142] ; 0x8e e3a6: 4413 add r3, r2 e3a8: f8ad 308e strh.w r3, [sp, #142] ; 0x8e lv_draw_label_dsc_t label_dsc; lv_draw_label_dsc_init(&label_dsc); e3ac: a829 add r0, sp, #164 ; 0xa4 e3ae: 4b5b ldr r3, [pc, #364] ; (e51c ) e3b0: 4798 blx r3 label_dsc.font = dsc->value_font; e3b2: f8da 3040 ldr.w r3, [sl, #64] ; 0x40 e3b6: 932a str r3, [sp, #168] ; 0xa8 label_dsc.letter_space = dsc->value_letter_space; e3b8: f8ba 304c ldrh.w r3, [sl, #76] ; 0x4c e3bc: f8ad 30b0 strh.w r3, [sp, #176] ; 0xb0 label_dsc.line_space = dsc->value_line_space; e3c0: f8ba 304e ldrh.w r3, [sl, #78] ; 0x4e e3c4: f8ad 30ae strh.w r3, [sp, #174] ; 0xae label_dsc.color = dsc->value_color; e3c8: f8ba 3046 ldrh.w r3, [sl, #70] ; 0x46 e3cc: f8ad 30a4 strh.w r3, [sp, #164] ; 0xa4 label_dsc.opa = dsc->value_opa; e3d0: f89a 3044 ldrb.w r3, [sl, #68] ; 0x44 e3d4: f88d 30ac strb.w r3, [sp, #172] ; 0xac lv_draw_label(&value_area, clip, &label_dsc, dsc->value_str, NULL); e3d8: 9400 str r4, [sp, #0] e3da: f8da 303c ldr.w r3, [sl, #60] ; 0x3c e3de: aa29 add r2, sp, #164 ; 0xa4 e3e0: 9904 ldr r1, [sp, #16] e3e2: a822 add r0, sp, #136 ; 0x88 e3e4: 4c4e ldr r4, [pc, #312] ; (e520 ) e3e6: 47a0 blx r4 e3e8: f7fe bf49 b.w d27e return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); e3ec: 1c72 adds r2, r6, #1 e3ee: 9b06 ldr r3, [sp, #24] e3f0: 1ad2 subs r2, r2, r3 int32_t inner_w = lv_area_get_width(&area_inner); e3f2: b212 sxth r2, r2 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); e3f4: 1c6b adds r3, r5, #1 e3f6: 9907 ldr r1, [sp, #28] e3f8: 1a5b subs r3, r3, r1 int32_t inner_h = lv_area_get_height(&area_inner); e3fa: b21b sxth r3, r3 int32_t short_side = LV_MATH_MIN(inner_w, inner_h); e3fc: 429a cmp r2, r3 e3fe: bfa8 it ge e400: 461a movge r2, r3 if(rin > short_side >> 1) rin = short_side >> 1; e402: 1052 asrs r2, r2, #1 e404: 9b08 ldr r3, [sp, #32] e406: 429a cmp r2, r3 e408: bfa8 it ge e40a: 461a movge r2, r3 int32_t rout = rin + dsc->outline_width; e40c: 9b05 ldr r3, [sp, #20] e40e: 4413 add r3, r2 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); e410: 3701 adds r7, #1 e412: 990a ldr r1, [sp, #40] ; 0x28 e414: 1a79 subs r1, r7, r1 int32_t coords_out_w = lv_area_get_width(&area_outer); e416: b208 sxth r0, r1 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); e418: 1c61 adds r1, r4, #1 e41a: eba1 0108 sub.w r1, r1, r8 int32_t coords_out_h = lv_area_get_height(&area_outer); e41e: b209 sxth r1, r1 short_side = LV_MATH_MIN(coords_out_w, coords_out_h); e420: 4281 cmp r1, r0 e422: bfa8 it ge e424: 4601 movge r1, r0 if(rout > short_side >> 1) rout = short_side >> 1; e426: 1049 asrs r1, r1, #1 e428: 4299 cmp r1, r3 e42a: bfa8 it ge e42c: 4619 movge r1, r3 e42e: 460f mov r7, r1 e430: 9106 str r1, [sp, #24] draw_area.x1 -= disp_area->x1; e432: f8b9 0010 ldrh.w r0, [r9, #16] e436: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 e43a: 1a1b subs r3, r3, r0 e43c: b299 uxth r1, r3 e43e: f8ad 1068 strh.w r1, [sp, #104] ; 0x68 draw_area.y1 -= disp_area->y1; e442: f8b9 4012 ldrh.w r4, [r9, #18] e446: f8bd 306a ldrh.w r3, [sp, #106] ; 0x6a e44a: 1b1b subs r3, r3, r4 e44c: f8ad 306a strh.w r3, [sp, #106] ; 0x6a draw_area.x2 -= disp_area->x1; e450: f8bd 306c ldrh.w r3, [sp, #108] ; 0x6c e454: 1a1b subs r3, r3, r0 e456: b29b uxth r3, r3 e458: f8ad 306c strh.w r3, [sp, #108] ; 0x6c draw_area.y2 -= disp_area->y1; e45c: f8bd 006e ldrh.w r0, [sp, #110] ; 0x6e e460: 1b00 subs r0, r0, r4 e462: f8ad 006e strh.w r0, [sp, #110] ; 0x6e return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); e466: 3301 adds r3, #1 e468: 1a5b subs r3, r3, r1 e46a: b21b sxth r3, r3 e46c: 461e mov r6, r3 e46e: 9307 str r3, [sp, #28] lv_draw_mask_radius_init(&mask_rin_param, &area_inner, rin, true); e470: 2301 movs r3, #1 e472: a916 add r1, sp, #88 ; 0x58 e474: a822 add r0, sp, #136 ; 0x88 e476: 4d2b ldr r5, [pc, #172] ; (e524 ) e478: 47a8 blx r5 int16_t mask_rin_id = lv_draw_mask_add(&mask_rin_param, NULL); e47a: 2100 movs r1, #0 e47c: a822 add r0, sp, #136 ; 0x88 e47e: 4c2a ldr r4, [pc, #168] ; (e528 ) e480: 47a0 blx r4 e482: 900c str r0, [sp, #48] ; 0x30 lv_draw_mask_radius_init(&mask_rout_param, &area_outer, rout, false); e484: 2300 movs r3, #0 e486: b23a sxth r2, r7 e488: a918 add r1, sp, #96 ; 0x60 e48a: a829 add r0, sp, #164 ; 0xa4 e48c: 47a8 blx r5 int16_t mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); e48e: 2100 movs r1, #0 e490: a829 add r0, sp, #164 ; 0xa4 e492: 47a0 blx r4 e494: 900d str r0, [sp, #52] ; 0x34 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); e496: 9608 str r6, [sp, #32] e498: 4630 mov r0, r6 e49a: 4b24 ldr r3, [pc, #144] ; (e52c ) e49c: 4798 blx r3 e49e: 900b str r0, [sp, #44] ; 0x2c int32_t corner_size = LV_MATH_MAX(rout, dsc->outline_width - 1); e4a0: f9ba 3018 ldrsh.w r3, [sl, #24] lv_color_t color = dsc->outline_color; e4a4: f8ba 2016 ldrh.w r2, [sl, #22] e4a8: f8ad 2014 strh.w r2, [sp, #20] lv_blend_mode_t blend_mode = dsc->outline_blend_mode; e4ac: f89a 501d ldrb.w r5, [sl, #29] if(simple_mode) { e4b0: 9a09 ldr r2, [sp, #36] ; 0x24 e4b2: 2a00 cmp r2, #0 e4b4: f040 81a6 bne.w e804 int32_t corner_size = LV_MATH_MAX(rout, dsc->outline_width - 1); e4b8: 3b01 subs r3, #1 e4ba: 42bb cmp r3, r7 e4bc: bfb8 it lt e4be: 463b movlt r3, r7 e4c0: 4619 mov r1, r3 e4c2: 930e str r3, [sp, #56] ; 0x38 int32_t upper_corner_end = area_outer.y1 - disp_area->y1 + corner_size; e4c4: f9b9 3012 ldrsh.w r3, [r9, #18] e4c8: f9bd 2062 ldrsh.w r2, [sp, #98] ; 0x62 e4cc: 1ad2 subs r2, r2, r3 e4ce: 440a add r2, r1 e4d0: 4611 mov r1, r2 e4d2: 9209 str r2, [sp, #36] ; 0x24 fill_area.x1 = area_outer.x1; e4d4: f8bd 2060 ldrh.w r2, [sp, #96] ; 0x60 e4d8: f8ad 2070 strh.w r2, [sp, #112] ; 0x70 fill_area.x2 = area_outer.x2; e4dc: f8bd 2064 ldrh.w r2, [sp, #100] ; 0x64 e4e0: f8ad 2074 strh.w r2, [sp, #116] ; 0x74 fill_area.y1 = disp_area->y1 + draw_area.y1; e4e4: f9bd 206a ldrsh.w r2, [sp, #106] ; 0x6a e4e8: 4413 add r3, r2 e4ea: b21b sxth r3, r3 e4ec: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2 = fill_area.y1; e4f0: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = draw_area.y1; h <= upper_corner_end; h++) { e4f4: 4616 mov r6, r2 e4f6: 4291 cmp r1, r2 e4f8: f2c0 809d blt.w e636 _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); e4fc: f8df 8030 ldr.w r8, [pc, #48] ; e530 e500: 462b mov r3, r5 e502: 465d mov r5, fp e504: f8cd a028 str.w sl, [sp, #40] ; 0x28 e508: 4682 mov sl, r0 e50a: 469b mov fp, r3 e50c: e03f b.n e58e e50e: bf00 nop e510: 0000be1d .word 0x0000be1d e514: 0001407d .word 0x0001407d e518: 00011825 .word 0x00011825 e51c: 000099cd .word 0x000099cd e520: 00009a25 .word 0x00009a25 e524: 0000c02d .word 0x0000c02d e528: 0000bdc1 .word 0x0000bdc1 e52c: 0001293d .word 0x0001293d e530: 00007751 .word 0x00007751 fill_area2.x1 = area_outer.x2 - rout + 1; e534: f9bd 3064 ldrsh.w r3, [sp, #100] ; 0x64 e538: 1c5a adds r2, r3, #1 e53a: 1b14 subs r4, r2, r4 e53c: f8ad 4078 strh.w r4, [sp, #120] ; 0x78 fill_area2.x2 = area_outer.x2; e540: f8ad 307c strh.w r3, [sp, #124] ; 0x7c int32_t mask_ofs = (area_outer.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); e544: 9a06 ldr r2, [sp, #24] e546: 1a9b subs r3, r3, r2 e548: 3301 adds r3, #1 e54a: f9b9 2010 ldrsh.w r2, [r9, #16] e54e: f9bd 1068 ldrsh.w r1, [sp, #104] ; 0x68 e552: 440a add r2, r1 e554: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); e556: f8cd b008 str.w fp, [sp, #8] e55a: 9501 str r5, [sp, #4] e55c: 9700 str r7, [sp, #0] e55e: 2b00 cmp r3, #0 e560: bfac ite ge e562: 4453 addge r3, sl e564: f10a 0300 addlt.w r3, sl, #0 e568: f8bd 2014 ldrh.w r2, [sp, #20] e56c: a91e add r1, sp, #120 ; 0x78 e56e: 9804 ldr r0, [sp, #16] e570: 47c0 blx r8 fill_area.y1++; e572: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 e576: 3301 adds r3, #1 e578: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2++; e57c: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 e580: 3301 adds r3, #1 e582: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = draw_area.y1; h <= upper_corner_end; h++) { e586: 3601 adds r6, #1 e588: 9b09 ldr r3, [sp, #36] ; 0x24 e58a: 42b3 cmp r3, r6 e58c: db4e blt.n e62c _lv_memset_ff(mask_buf, draw_area_w); e58e: 9908 ldr r1, [sp, #32] e590: 4650 mov r0, sl e592: 4bcc ldr r3, [pc, #816] ; (e8c4 ) e594: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); e596: f8b9 2012 ldrh.w r2, [r9, #18] e59a: 4432 add r2, r6 e59c: f8b9 1010 ldrh.w r1, [r9, #16] e5a0: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 e5a4: 4419 add r1, r3 e5a6: 9b07 ldr r3, [sp, #28] e5a8: b212 sxth r2, r2 e5aa: b209 sxth r1, r1 e5ac: 4650 mov r0, sl e5ae: 4cc6 ldr r4, [pc, #792] ; (e8c8 ) e5b0: 47a0 blx r4 e5b2: 4607 mov r7, r0 fill_area2.y1 = fill_area.y1; e5b4: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 e5b8: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fill_area2.y2 = fill_area.y2; e5bc: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 e5c0: f8ad 307e strh.w r3, [sp, #126] ; 0x7e fill_area2.x1 = area_outer.x1; e5c4: f9bd 3060 ldrsh.w r3, [sp, #96] ; 0x60 e5c8: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = area_outer.x1 + rout - 1; e5cc: f8bd 4018 ldrh.w r4, [sp, #24] e5d0: 3b01 subs r3, #1 e5d2: 4423 add r3, r4 e5d4: f8ad 307c strh.w r3, [sp, #124] ; 0x7c _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); e5d8: f8cd b008 str.w fp, [sp, #8] e5dc: 9501 str r5, [sp, #4] e5de: 9000 str r0, [sp, #0] e5e0: 4653 mov r3, sl e5e2: f8bd 2014 ldrh.w r2, [sp, #20] e5e6: a91e add r1, sp, #120 ; 0x78 e5e8: 9804 ldr r0, [sp, #16] e5ea: 47c0 blx r8 if(fill_area2.y2 < area_outer.y1 + dsc->outline_width) { e5ec: f9bd 207e ldrsh.w r2, [sp, #126] ; 0x7e e5f0: f9bd 3062 ldrsh.w r3, [sp, #98] ; 0x62 e5f4: 990a ldr r1, [sp, #40] ; 0x28 e5f6: f9b1 1018 ldrsh.w r1, [r1, #24] e5fa: 440b add r3, r1 e5fc: 429a cmp r2, r3 e5fe: da99 bge.n e534 fill_area2.x1 = area_outer.x1 + rout; e600: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 e604: 4423 add r3, r4 e606: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = area_outer.x2 - rout; e60a: f8bd 3064 ldrh.w r3, [sp, #100] ; 0x64 e60e: 1b1b subs r3, r3, r4 e610: f8ad 307c strh.w r3, [sp, #124] ; 0x7c _lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); e614: f8cd b008 str.w fp, [sp, #8] e618: 9501 str r5, [sp, #4] e61a: 2301 movs r3, #1 e61c: 9300 str r3, [sp, #0] e61e: 2300 movs r3, #0 e620: f8bd 2014 ldrh.w r2, [sp, #20] e624: a91e add r1, sp, #120 ; 0x78 e626: 9804 ldr r0, [sp, #16] e628: 47c0 blx r8 e62a: e783 b.n e534 e62c: 465b mov r3, fp e62e: 46ab mov fp, r5 e630: f8dd a028 ldr.w sl, [sp, #40] ; 0x28 e634: 461d mov r5, r3 int32_t lower_corner_end = area_outer.y2 - disp_area->y1 - corner_size; e636: f9b9 3012 ldrsh.w r3, [r9, #18] e63a: f9bd 6066 ldrsh.w r6, [sp, #102] ; 0x66 e63e: 1af6 subs r6, r6, r3 e640: 9a0e ldr r2, [sp, #56] ; 0x38 e642: 1ab6 subs r6, r6, r2 if(lower_corner_end <= upper_corner_end) lower_corner_end = upper_corner_end + 1; e644: 9909 ldr r1, [sp, #36] ; 0x24 e646: 460a mov r2, r1 e648: 42b1 cmp r1, r6 e64a: bfa4 itt ge e64c: 3201 addge r2, #1 e64e: 4616 movge r6, r2 fill_area.y1 = disp_area->y1 + lower_corner_end; e650: 4433 add r3, r6 e652: b21b sxth r3, r3 e654: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2 = fill_area.y1; e658: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = lower_corner_end; h <= draw_area.y2; h++) { e65c: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e e660: 429e cmp r6, r3 e662: f300 808c bgt.w e77e _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); e666: f8df 8264 ldr.w r8, [pc, #612] ; e8cc e66a: 462b mov r3, r5 e66c: 465d mov r5, fp e66e: f8cd a024 str.w sl, [sp, #36] ; 0x24 e672: f8dd a02c ldr.w sl, [sp, #44] ; 0x2c e676: 469b mov fp, r3 e678: e02d b.n e6d6 fill_area2.x1 = area_outer.x2 - rout + 1; e67a: f9bd 3064 ldrsh.w r3, [sp, #100] ; 0x64 e67e: 1c5a adds r2, r3, #1 e680: 1b14 subs r4, r2, r4 e682: f8ad 4078 strh.w r4, [sp, #120] ; 0x78 fill_area2.x2 = area_outer.x2; e686: f8ad 307c strh.w r3, [sp, #124] ; 0x7c int32_t mask_ofs = (area_outer.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); e68a: 9a06 ldr r2, [sp, #24] e68c: 1a9b subs r3, r3, r2 e68e: 3301 adds r3, #1 e690: f9b9 2010 ldrsh.w r2, [r9, #16] e694: f9bd 1068 ldrsh.w r1, [sp, #104] ; 0x68 e698: 440a add r2, r1 e69a: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); e69c: f8cd b008 str.w fp, [sp, #8] e6a0: 9501 str r5, [sp, #4] e6a2: 9700 str r7, [sp, #0] e6a4: 2b00 cmp r3, #0 e6a6: bfac ite ge e6a8: 4453 addge r3, sl e6aa: f10a 0300 addlt.w r3, sl, #0 e6ae: f8bd 2014 ldrh.w r2, [sp, #20] e6b2: a91e add r1, sp, #120 ; 0x78 e6b4: 9804 ldr r0, [sp, #16] e6b6: 47c0 blx r8 fill_area.y1++; e6b8: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 e6bc: 3301 adds r3, #1 e6be: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2++; e6c2: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 e6c6: 3301 adds r3, #1 e6c8: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = lower_corner_end; h <= draw_area.y2; h++) { e6cc: 3601 adds r6, #1 e6ce: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e e6d2: 429e cmp r6, r3 e6d4: dc4e bgt.n e774 _lv_memset_ff(mask_buf, draw_area_w); e6d6: 9908 ldr r1, [sp, #32] e6d8: 4650 mov r0, sl e6da: 4b7a ldr r3, [pc, #488] ; (e8c4 ) e6dc: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); e6de: f8b9 2012 ldrh.w r2, [r9, #18] e6e2: 4432 add r2, r6 e6e4: f8b9 1010 ldrh.w r1, [r9, #16] e6e8: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 e6ec: 4419 add r1, r3 e6ee: 9b07 ldr r3, [sp, #28] e6f0: b212 sxth r2, r2 e6f2: b209 sxth r1, r1 e6f4: 4650 mov r0, sl e6f6: 4c74 ldr r4, [pc, #464] ; (e8c8 ) e6f8: 47a0 blx r4 e6fa: 4607 mov r7, r0 fill_area2.x1 = area_outer.x1; e6fc: f9bd 3060 ldrsh.w r3, [sp, #96] ; 0x60 e700: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = area_outer.x1 + rout - 1; e704: f8bd 4018 ldrh.w r4, [sp, #24] e708: 3b01 subs r3, #1 e70a: 4423 add r3, r4 e70c: f8ad 307c strh.w r3, [sp, #124] ; 0x7c fill_area2.y1 = fill_area.y1; e710: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 e714: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fill_area2.y2 = fill_area.y2; e718: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 e71c: f8ad 307e strh.w r3, [sp, #126] ; 0x7e _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); e720: f8cd b008 str.w fp, [sp, #8] e724: 9501 str r5, [sp, #4] e726: 9000 str r0, [sp, #0] e728: 4653 mov r3, sl e72a: f8bd 2014 ldrh.w r2, [sp, #20] e72e: a91e add r1, sp, #120 ; 0x78 e730: 9804 ldr r0, [sp, #16] e732: 47c0 blx r8 if(fill_area2.y2 > area_outer.y2 - dsc->outline_width) { e734: f9bd 207e ldrsh.w r2, [sp, #126] ; 0x7e e738: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66 e73c: 9909 ldr r1, [sp, #36] ; 0x24 e73e: f9b1 1018 ldrsh.w r1, [r1, #24] e742: 1a5b subs r3, r3, r1 e744: 429a cmp r2, r3 e746: dd98 ble.n e67a fill_area2.x1 = area_outer.x1 + rout; e748: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 e74c: 4423 add r3, r4 e74e: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = area_outer.x2 - rout; e752: f8bd 3064 ldrh.w r3, [sp, #100] ; 0x64 e756: 1b1b subs r3, r3, r4 e758: f8ad 307c strh.w r3, [sp, #124] ; 0x7c _lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); e75c: f8cd b008 str.w fp, [sp, #8] e760: 9501 str r5, [sp, #4] e762: 2301 movs r3, #1 e764: 9300 str r3, [sp, #0] e766: 2300 movs r3, #0 e768: f8bd 2014 ldrh.w r2, [sp, #20] e76c: a91e add r1, sp, #120 ; 0x78 e76e: 9804 ldr r0, [sp, #16] e770: 47c0 blx r8 e772: e782 b.n e67a e774: 465b mov r3, fp e776: 46ab mov fp, r5 e778: f8dd a024 ldr.w sl, [sp, #36] ; 0x24 e77c: 461d mov r5, r3 fill_area.y1 = area_outer.y1 + corner_size + 1; e77e: f8bd 3038 ldrh.w r3, [sp, #56] ; 0x38 e782: f8bd 2062 ldrh.w r2, [sp, #98] ; 0x62 e786: 3201 adds r2, #1 e788: 441a add r2, r3 e78a: f8ad 2072 strh.w r2, [sp, #114] ; 0x72 fill_area.y2 = area_outer.y2 - corner_size - 1; e78e: f8bd 2066 ldrh.w r2, [sp, #102] ; 0x66 e792: 3a01 subs r2, #1 e794: 1ad3 subs r3, r2, r3 e796: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 fill_area.x1 = area_outer.x1; e79a: f9bd 3060 ldrsh.w r3, [sp, #96] ; 0x60 e79e: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 fill_area.x2 = area_outer.x1 + dsc->outline_width - 1; e7a2: 3b01 subs r3, #1 e7a4: f8ba 2018 ldrh.w r2, [sl, #24] e7a8: 4413 add r3, r2 e7aa: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); e7ae: 9502 str r5, [sp, #8] e7b0: f8cd b004 str.w fp, [sp, #4] e7b4: 2601 movs r6, #1 e7b6: 9600 str r6, [sp, #0] e7b8: 2300 movs r3, #0 e7ba: f8bd 8014 ldrh.w r8, [sp, #20] e7be: 4642 mov r2, r8 e7c0: a91c add r1, sp, #112 ; 0x70 e7c2: 9f04 ldr r7, [sp, #16] e7c4: 4638 mov r0, r7 e7c6: 4c41 ldr r4, [pc, #260] ; (e8cc ) e7c8: 47a0 blx r4 fill_area.x1 = area_outer.x2 - dsc->outline_width + 1; e7ca: f9bd 2064 ldrsh.w r2, [sp, #100] ; 0x64 e7ce: 1993 adds r3, r2, r6 e7d0: f8ba 1018 ldrh.w r1, [sl, #24] e7d4: 1a5b subs r3, r3, r1 e7d6: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 fill_area.x2 = area_outer.x2; e7da: f8ad 2074 strh.w r2, [sp, #116] ; 0x74 _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); e7de: 9502 str r5, [sp, #8] e7e0: f8cd b004 str.w fp, [sp, #4] e7e4: 9600 str r6, [sp, #0] e7e6: 2300 movs r3, #0 e7e8: 4642 mov r2, r8 e7ea: a91c add r1, sp, #112 ; 0x70 e7ec: 4638 mov r0, r7 e7ee: 47a0 blx r4 lv_draw_mask_remove_id(mask_rin_id); e7f0: 980c ldr r0, [sp, #48] ; 0x30 e7f2: 4c37 ldr r4, [pc, #220] ; (e8d0 ) e7f4: 47a0 blx r4 lv_draw_mask_remove_id(mask_rout_id); e7f6: 980d ldr r0, [sp, #52] ; 0x34 e7f8: 47a0 blx r4 _lv_mem_buf_release(mask_buf); e7fa: 980b ldr r0, [sp, #44] ; 0x2c e7fc: 4b35 ldr r3, [pc, #212] ; (e8d4 ) e7fe: 4798 blx r3 e800: f7fe bdb0 b.w d364 fill_area.x1 = area_outer.x1; e804: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 e808: f8ad 3070 strh.w r3, [sp, #112] ; 0x70 fill_area.x2 = area_outer.x2; e80c: f8bd 3064 ldrh.w r3, [sp, #100] ; 0x64 e810: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 fill_area.y1 = disp_area->y1 + draw_area.y1; e814: f9bd 206a ldrsh.w r2, [sp, #106] ; 0x6a e818: f8b9 3012 ldrh.w r3, [r9, #18] e81c: 4413 add r3, r2 e81e: b21b sxth r3, r3 e820: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2 = fill_area.y1; e824: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = draw_area.y1; h <= draw_area.y2; h++) { e828: 4614 mov r4, r2 e82a: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e e82e: 429a cmp r2, r3 e830: dcde bgt.n e7f0 _lv_memset_ff(mask_buf, draw_area_w); e832: f8df 8090 ldr.w r8, [pc, #144] ; e8c4 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); e836: 4f24 ldr r7, [pc, #144] ; (e8c8 ) _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); e838: 4e24 ldr r6, [pc, #144] ; (e8cc ) e83a: f8dd a02c ldr.w sl, [sp, #44] ; 0x2c e83e: 462b mov r3, r5 e840: 465d mov r5, fp e842: 469b mov fp, r3 _lv_memset_ff(mask_buf, draw_area_w); e844: 9908 ldr r1, [sp, #32] e846: 4650 mov r0, sl e848: 47c0 blx r8 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); e84a: f8b9 2012 ldrh.w r2, [r9, #18] e84e: 4422 add r2, r4 e850: f8b9 1010 ldrh.w r1, [r9, #16] e854: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 e858: 4419 add r1, r3 e85a: 9b07 ldr r3, [sp, #28] e85c: b212 sxth r2, r2 e85e: b209 sxth r1, r1 e860: 4650 mov r0, sl e862: 47b8 blx r7 _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); e864: f8cd b008 str.w fp, [sp, #8] e868: 9501 str r5, [sp, #4] e86a: 9000 str r0, [sp, #0] e86c: 4653 mov r3, sl e86e: f8bd 2014 ldrh.w r2, [sp, #20] e872: a91c add r1, sp, #112 ; 0x70 e874: 9804 ldr r0, [sp, #16] e876: 47b0 blx r6 fill_area.y1++; e878: f8bd 3072 ldrh.w r3, [sp, #114] ; 0x72 e87c: 3301 adds r3, #1 e87e: f8ad 3072 strh.w r3, [sp, #114] ; 0x72 fill_area.y2++; e882: f8bd 3076 ldrh.w r3, [sp, #118] ; 0x76 e886: 3301 adds r3, #1 e888: f8ad 3076 strh.w r3, [sp, #118] ; 0x76 for(h = draw_area.y1; h <= draw_area.y2; h++) { e88c: 3401 adds r4, #1 e88e: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e e892: 429c cmp r4, r3 e894: ddd6 ble.n e844 e896: e7ab b.n e7f0 _lv_mem_buf_release(mask_line); e898: 980c ldr r0, [sp, #48] ; 0x30 e89a: 4b0e ldr r3, [pc, #56] ; (e8d4 ) e89c: 4798 blx r3 for(i = 0; i < size * size; i++) { e89e: fb07 f707 mul.w r7, r7, r7 e8a2: 2f00 cmp r7, #0 e8a4: f43d aeec beq.w c680 e8a8: 980a ldr r0, [sp, #40] ; 0x28 e8aa: 4602 mov r2, r0 e8ac: 1e41 subs r1, r0, #1 e8ae: eb00 0047 add.w r0, r0, r7, lsl #1 res_buf[i] = (sh_buf[i] >> SHADOW_UPSACALE_SHIFT); e8b2: f832 3b02 ldrh.w r3, [r2], #2 e8b6: 099b lsrs r3, r3, #6 e8b8: f801 3f01 strb.w r3, [r1, #1]! for(i = 0; i < size * size; i++) { e8bc: 4290 cmp r0, r2 e8be: d1f8 bne.n e8b2 e8c0: f7fd bede b.w c680 e8c4: 00012bed .word 0x00012bed e8c8: 0000be1d .word 0x0000be1d e8cc: 00007751 .word 0x00007751 e8d0: 0000be6d .word 0x0000be6d e8d4: 00012571 .word 0x00012571 lv_opa_t * mask_line = _lv_mem_buf_get(size); e8d8: 9707 str r7, [sp, #28] e8da: 4638 mov r0, r7 e8dc: 4b0b ldr r3, [pc, #44] ; (e90c ) e8de: 4798 blx r3 e8e0: 900c str r0, [sp, #48] ; 0x30 for(y = 0; y < size; y++) { e8e2: 2f00 cmp r7, #0 e8e4: ddd8 ble.n e898 e8e6: 2301 movs r3, #1 e8e8: 930b str r3, [sp, #44] ; 0x2c e8ea: f7fd be27 b.w c53c lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false); e8ee: 2300 movs r3, #0 e8f0: f9ba 2000 ldrsh.w r2, [sl] e8f4: 9906 ldr r1, [sp, #24] e8f6: a829 add r0, sp, #164 ; 0xa4 e8f8: 4c05 ldr r4, [pc, #20] ; (e910 ) e8fa: 47a0 blx r4 radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL); e8fc: 2100 movs r1, #0 e8fe: a829 add r0, sp, #164 ; 0xa4 e900: 4b04 ldr r3, [pc, #16] ; (e914 ) e902: 4798 blx r3 e904: 4604 mov r4, r0 e906: f7ff b91e b.w db46 e90a: bf00 nop e90c: 0001293d .word 0x0001293d e910: 0000c02d .word 0x0000c02d e914: 0000bdc1 .word 0x0000bdc1 0000e918 : * Not used in other cases. * @param safe true: check out of bounds * @return color of the point */ lv_color_t lv_img_buf_get_px_color(lv_img_dsc_t * dsc, lv_coord_t x, lv_coord_t y, lv_color_t color) { e918: b5f0 push {r4, r5, r6, r7, lr} e91a: b083 sub sp, #12 lv_color_t p_color = LV_COLOR_BLACK; e91c: f89d 4004 ldrb.w r4, [sp, #4] e920: f36f 0404 bfc r4, #0, #5 e924: f88d 4004 strb.w r4, [sp, #4] e928: f8bd 4004 ldrh.w r4, [sp, #4] e92c: f36f 144a bfc r4, #5, #6 e930: f8ad 4004 strh.w r4, [sp, #4] e934: 0a24 lsrs r4, r4, #8 e936: f36f 04c7 bfc r4, #3, #5 e93a: f88d 4005 strb.w r4, [sp, #5] uint8_t * buf_u8 = (uint8_t *)dsc->data; e93e: 6886 ldr r6, [r0, #8] if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED || e940: 7804 ldrb r4, [r0, #0] e942: f004 041f and.w r4, r4, #31 e946: 1f25 subs r5, r4, #4 e948: b2ed uxtb r5, r5 e94a: 2d02 cmp r5, #2 e94c: d90e bls.n e96c _lv_memcpy_small(&p_color, &buf_u8[px], sizeof(lv_color_t)); #if LV_COLOR_SIZE == 32 p_color.ch.alpha = 0xFF; /*Only the color should be get so use a deafult alpha value*/ #endif } else if(dsc->header.cf == LV_IMG_CF_INDEXED_1BIT) { e94e: 2c07 cmp r4, #7 e950: d028 beq.n e9a4 * dsc->header.w + 7 means rounding up to 8 because the lines are byte aligned * so the possible real width are 8, 16, 24 ...*/ uint32_t px = ((dsc->header.w + 7) >> 3) * y + x; p_color.full = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); } else if(dsc->header.cf == LV_IMG_CF_INDEXED_2BIT) { e952: 2c08 cmp r4, #8 e954: d03b beq.n e9ce * dsc->header.w + 3 means rounding up to 4 because the lines are byte aligned * so the possible real width are 4, 8, 12 ...*/ uint32_t px = ((dsc->header.w + 3) >> 2) * y + x; p_color.full = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); } else if(dsc->header.cf == LV_IMG_CF_INDEXED_4BIT) { e956: 2c09 cmp r4, #9 e958: d050 beq.n e9fc * dsc->header.w + 1 means rounding up to 2 because the lines are byte aligned * so the possible real width are 2, 4, 6 ...*/ uint32_t px = ((dsc->header.w + 1) >> 1) * y + x; p_color.full = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); } else if(dsc->header.cf == LV_IMG_CF_INDEXED_8BIT) { e95a: 2c0a cmp r4, #10 e95c: d066 beq.n ea2c buf_u8 += 4 * 256; uint32_t px = dsc->header.w * y + x; p_color.full = buf_u8[px]; } else if(dsc->header.cf == LV_IMG_CF_ALPHA_1BIT || dsc->header.cf == LV_IMG_CF_ALPHA_2BIT || dsc->header.cf == LV_IMG_CF_ALPHA_4BIT || dsc->header.cf == LV_IMG_CF_ALPHA_8BIT) { e95e: 3c0b subs r4, #11 else if(dsc->header.cf == LV_IMG_CF_ALPHA_1BIT || dsc->header.cf == LV_IMG_CF_ALPHA_2BIT || e960: b2e4 uxtb r4, r4 e962: 2c03 cmp r4, #3 p_color = color; e964: bf98 it ls e966: f8ad 3004 strhls.w r3, [sp, #4] e96a: e017 b.n e99c e96c: 4614 mov r4, r2 e96e: 460f mov r7, r1 e970: 4605 mov r5, r0 uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf) >> 3; e972: 7800 ldrb r0, [r0, #0] e974: f000 001f and.w r0, r0, #31 e978: 4b32 ldr r3, [pc, #200] ; (ea44 ) e97a: 4798 blx r3 uint32_t px = dsc->header.w * y * px_size + x * px_size; e97c: 682b ldr r3, [r5, #0] e97e: f3c3 238a ubfx r3, r3, #10, #11 e982: fb04 7203 mla r2, r4, r3, r7 e986: f3c0 00c7 ubfx r0, r0, #3, #8 e98a: fb00 f202 mul.w r2, r0, r2 _lv_memcpy_small(&p_color, &buf_u8[px], sizeof(lv_color_t)); e98e: 18b3 adds r3, r6, r2 *d8 = *s8; e990: 5cb2 ldrb r2, [r6, r2] e992: f88d 2004 strb.w r2, [sp, #4] e996: 785b ldrb r3, [r3, #1] e998: f88d 3005 strb.w r3, [sp, #5] } return p_color; } e99c: f8bd 0004 ldrh.w r0, [sp, #4] e9a0: b003 add sp, #12 e9a2: bdf0 pop {r4, r5, r6, r7, pc} p_color.full = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); e9a4: f001 0307 and.w r3, r1, #7 e9a8: f1c3 0407 rsb r4, r3, #7 uint32_t px = ((dsc->header.w + 7) >> 3) * y + x; e9ac: 6803 ldr r3, [r0, #0] e9ae: f3c3 238a ubfx r3, r3, #10, #11 e9b2: 3307 adds r3, #7 e9b4: 10db asrs r3, r3, #3 p_color.full = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); e9b6: fb02 6603 mla r6, r2, r3, r6 e9ba: eb06 01e1 add.w r1, r6, r1, asr #3 e9be: 7a0b ldrb r3, [r1, #8] e9c0: 2201 movs r2, #1 e9c2: 40a2 lsls r2, r4 e9c4: 4013 ands r3, r2 e9c6: 4123 asrs r3, r4 e9c8: f8ad 3004 strh.w r3, [sp, #4] e9cc: e7e6 b.n e99c uint8_t bit = (x & 0x3) * 2; e9ce: f001 0403 and.w r4, r1, #3 p_color.full = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); e9d2: 0064 lsls r4, r4, #1 e9d4: f1c4 0406 rsb r4, r4, #6 uint32_t px = ((dsc->header.w + 3) >> 2) * y + x; e9d8: 6803 ldr r3, [r0, #0] e9da: f3c3 238a ubfx r3, r3, #10, #11 e9de: 3303 adds r3, #3 e9e0: 109b asrs r3, r3, #2 p_color.full = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); e9e2: fb02 6603 mla r6, r2, r3, r6 e9e6: eb06 01a1 add.w r1, r6, r1, asr #2 e9ea: 7c0b ldrb r3, [r1, #16] e9ec: 2203 movs r2, #3 e9ee: 40a2 lsls r2, r4 e9f0: 4013 ands r3, r2 e9f2: fa43 f404 asr.w r4, r3, r4 e9f6: f8ad 4004 strh.w r4, [sp, #4] e9fa: e7cf b.n e99c uint8_t bit = (x & 0x1) * 4; e9fc: f001 0401 and.w r4, r1, #1 p_color.full = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); ea00: 00a4 lsls r4, r4, #2 ea02: f1c4 0404 rsb r4, r4, #4 uint32_t px = ((dsc->header.w + 1) >> 1) * y + x; ea06: 6803 ldr r3, [r0, #0] ea08: f3c3 238a ubfx r3, r3, #10, #11 ea0c: 3301 adds r3, #1 ea0e: 105b asrs r3, r3, #1 p_color.full = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); ea10: fb02 6603 mla r6, r2, r3, r6 ea14: eb06 0161 add.w r1, r6, r1, asr #1 ea18: f891 3040 ldrb.w r3, [r1, #64] ; 0x40 ea1c: 220f movs r2, #15 ea1e: 40a2 lsls r2, r4 ea20: 4013 ands r3, r2 ea22: fa43 f404 asr.w r4, r3, r4 ea26: f8ad 4004 strh.w r4, [sp, #4] ea2a: e7b7 b.n e99c uint32_t px = dsc->header.w * y + x; ea2c: 6803 ldr r3, [r0, #0] ea2e: f3c3 238a ubfx r3, r3, #10, #11 p_color.full = buf_u8[px]; ea32: 4431 add r1, r6 ea34: fb02 1103 mla r1, r2, r3, r1 ea38: f891 3400 ldrb.w r3, [r1, #1024] ; 0x400 ea3c: f8ad 3004 strh.w r3, [sp, #4] ea40: e7ac b.n e99c ea42: bf00 nop ea44: 00009681 .word 0x00009681 0000ea48 : * @param y x coordinate of the point to set * @param safe true: check out of bounds * @return alpha value of the point */ lv_opa_t lv_img_buf_get_px_alpha(lv_img_dsc_t * dsc, lv_coord_t x, lv_coord_t y) { ea48: b5f0 push {r4, r5, r6, r7, lr} ea4a: b085 sub sp, #20 ea4c: 4604 mov r4, r0 ea4e: 460d mov r5, r1 ea50: 4617 mov r7, r2 uint8_t * buf_u8 = (uint8_t *)dsc->data; ea52: 6886 ldr r6, [r0, #8] if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA) { ea54: 7803 ldrb r3, [r0, #0] ea56: f003 031f and.w r3, r3, #31 ea5a: 2b05 cmp r3, #5 ea5c: d00a beq.n ea74 uint32_t px = dsc->header.w * y * LV_IMG_PX_SIZE_ALPHA_BYTE + x * LV_IMG_PX_SIZE_ALPHA_BYTE; return buf_u8[px + LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; } else if(dsc->header.cf == LV_IMG_CF_ALPHA_1BIT) { ea5e: 2b0b cmp r3, #11 ea60: d012 beq.n ea88 * so the possible real width are 8 ,16, 24 ...*/ uint32_t px = ((dsc->header.w + 7) >> 3) * y + x; uint8_t px_opa = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); return px_opa ? LV_OPA_TRANSP : LV_OPA_COVER; } else if(dsc->header.cf == LV_IMG_CF_ALPHA_2BIT) { ea62: 2b0c cmp r3, #12 ea64: d027 beq.n eab6 * so the possible real width are 4 ,8, 12 ...*/ uint32_t px = ((dsc->header.w + 3) >> 2) * y + x; uint8_t px_opa = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); return opa_table[px_opa]; } else if(dsc->header.cf == LV_IMG_CF_ALPHA_4BIT) { ea66: 2b0d cmp r3, #13 ea68: d049 beq.n eafe * so the possible real width are 2 ,4, 6 ...*/ uint32_t px = ((dsc->header.w + 1) >> 1) * y + x; uint8_t px_opa = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); return opa_table[px_opa]; } else if(dsc->header.cf == LV_IMG_CF_ALPHA_8BIT) { ea6a: 2b0e cmp r3, #14 ea6c: d064 beq.n eb38 uint32_t px = dsc->header.w * y + x; return buf_u8[px]; } return LV_OPA_COVER; ea6e: 20ff movs r0, #255 ; 0xff } ea70: b005 add sp, #20 ea72: bdf0 pop {r4, r5, r6, r7, pc} uint32_t px = dsc->header.w * y * LV_IMG_PX_SIZE_ALPHA_BYTE + x * LV_IMG_PX_SIZE_ALPHA_BYTE; ea74: 6802 ldr r2, [r0, #0] ea76: f3c2 228a ubfx r2, r2, #10, #11 ea7a: fb07 1502 mla r5, r7, r2, r1 return buf_u8[px + LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; ea7e: eb05 0545 add.w r5, r5, r5, lsl #1 ea82: 4435 add r5, r6 ea84: 78a8 ldrb r0, [r5, #2] ea86: e7f3 b.n ea70 uint8_t px_opa = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); ea88: f001 0307 and.w r3, r1, #7 ea8c: f1c3 0107 rsb r1, r3, #7 uint32_t px = ((dsc->header.w + 7) >> 3) * y + x; ea90: 6802 ldr r2, [r0, #0] ea92: f3c2 228a ubfx r2, r2, #10, #11 ea96: 3207 adds r2, #7 ea98: 10d2 asrs r2, r2, #3 ea9a: 10ed asrs r5, r5, #3 uint8_t px_opa = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); ea9c: fb07 6202 mla r2, r7, r2, r6 eaa0: 5d53 ldrb r3, [r2, r5] eaa2: 2201 movs r2, #1 eaa4: 408a lsls r2, r1 eaa6: 4013 ands r3, r2 eaa8: 410b asrs r3, r1 return px_opa ? LV_OPA_TRANSP : LV_OPA_COVER; eaaa: f013 0fff tst.w r3, #255 ; 0xff eaae: bf0c ite eq eab0: 20ff moveq r0, #255 ; 0xff eab2: 2000 movne r0, #0 eab4: e7dc b.n ea70 const uint8_t opa_table[4] = {0, 85, 170, 255}; /*Opacity mapping with bpp = 2*/ eab6: 2300 movs r3, #0 eab8: f88d 3000 strb.w r3, [sp] eabc: 2355 movs r3, #85 ; 0x55 eabe: f88d 3001 strb.w r3, [sp, #1] eac2: 23aa movs r3, #170 ; 0xaa eac4: f88d 3002 strb.w r3, [sp, #2] eac8: 23ff movs r3, #255 ; 0xff eaca: f88d 3003 strb.w r3, [sp, #3] uint8_t bit = (x & 0x3) * 2; eace: f001 0303 and.w r3, r1, #3 uint8_t px_opa = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); ead2: 005b lsls r3, r3, #1 ead4: f1c3 0106 rsb r1, r3, #6 uint32_t px = ((dsc->header.w + 3) >> 2) * y + x; ead8: 6802 ldr r2, [r0, #0] eada: f3c2 228a ubfx r2, r2, #10, #11 eade: 3203 adds r2, #3 eae0: 1092 asrs r2, r2, #2 eae2: 10ad asrs r5, r5, #2 uint8_t px_opa = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); eae4: fb07 6202 mla r2, r7, r2, r6 eae8: 5d53 ldrb r3, [r2, r5] eaea: 2203 movs r2, #3 eaec: 408a lsls r2, r1 eaee: 4013 ands r3, r2 eaf0: 410b asrs r3, r1 return opa_table[px_opa]; eaf2: aa04 add r2, sp, #16 eaf4: fa52 f383 uxtab r3, r2, r3 eaf8: f813 0c10 ldrb.w r0, [r3, #-16] eafc: e7b8 b.n ea70 const uint8_t opa_table[16] = {0, 17, 34, 51, /*Opacity mapping with bpp = 4*/ eafe: 4b12 ldr r3, [pc, #72] ; (eb48 ) eb00: cb0f ldmia r3, {r0, r1, r2, r3} eb02: f10d 0e10 add.w lr, sp, #16 eb06: e90e 000f stmdb lr, {r0, r1, r2, r3} uint8_t bit = (x & 0x1) * 4; eb0a: f005 0301 and.w r3, r5, #1 uint8_t px_opa = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); eb0e: 009b lsls r3, r3, #2 eb10: f1c3 0104 rsb r1, r3, #4 uint32_t px = ((dsc->header.w + 1) >> 1) * y + x; eb14: 6822 ldr r2, [r4, #0] eb16: f3c2 228a ubfx r2, r2, #10, #11 eb1a: 3201 adds r2, #1 eb1c: 1052 asrs r2, r2, #1 eb1e: 106d asrs r5, r5, #1 uint8_t px_opa = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); eb20: fb07 6202 mla r2, r7, r2, r6 eb24: 5d53 ldrb r3, [r2, r5] eb26: 220f movs r2, #15 eb28: 408a lsls r2, r1 eb2a: 4013 ands r3, r2 eb2c: 410b asrs r3, r1 return opa_table[px_opa]; eb2e: fa5e f383 uxtab r3, lr, r3 eb32: f813 0c10 ldrb.w r0, [r3, #-16] eb36: e79b b.n ea70 uint32_t px = dsc->header.w * y + x; eb38: 6802 ldr r2, [r0, #0] eb3a: f3c2 228a ubfx r2, r2, #10, #11 return buf_u8[px]; eb3e: fb07 6202 mla r2, r7, r2, r6 eb42: 5c50 ldrb r0, [r2, r1] eb44: e794 b.n ea70 eb46: bf00 nop eb48: 0002510c .word 0x0002510c 0000eb4c <_lv_img_buf_transform_init>: /** * Initialize a descriptor to tranform an image * @param dsc pointer to an `lv_img_transform_dsc_t` variable whose `cfg` field is initialized */ void _lv_img_buf_transform_init(lv_img_transform_dsc_t * dsc) { eb4c: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} eb50: 4604 mov r4, r0 dsc->tmp.pivot_x_256 = dsc->cfg.pivot_x * 256; eb52: f9b0 3008 ldrsh.w r3, [r0, #8] eb56: 021b lsls r3, r3, #8 eb58: 6243 str r3, [r0, #36] ; 0x24 dsc->tmp.pivot_y_256 = dsc->cfg.pivot_y * 256; eb5a: f9b0 300a ldrsh.w r3, [r0, #10] eb5e: 021b lsls r3, r3, #8 eb60: 6283 str r3, [r0, #40] ; 0x28 int32_t angle_low = dsc->cfg.angle / 10; eb62: f9b0 000c ldrsh.w r0, [r0, #12] eb66: f8df 80f4 ldr.w r8, [pc, #244] ; ec5c <_lv_img_buf_transform_init+0x110> eb6a: fb88 2300 smull r2, r3, r8, r0 eb6e: 17c5 asrs r5, r0, #31 eb70: ebc5 05a3 rsb r5, r5, r3, asr #2 eb74: b22d sxth r5, r5 int32_t angle_hight = angle_low + 1; int32_t angle_rem = dsc->cfg.angle - (angle_low * 10); eb76: f06f 0709 mvn.w r7, #9 eb7a: fb07 0705 mla r7, r7, r5, r0 int32_t s1 = _lv_trigo_sin(-angle_low); eb7e: fa1f fa85 uxth.w sl, r5 eb82: f1ca 0000 rsb r0, sl, #0 eb86: b200 sxth r0, r0 eb88: f8df 90d4 ldr.w r9, [pc, #212] ; ec60 <_lv_img_buf_transform_init+0x114> eb8c: 47c8 blx r9 eb8e: 4606 mov r6, r0 int32_t angle_hight = angle_low + 1; eb90: 3501 adds r5, #1 int32_t s2 = _lv_trigo_sin(-angle_hight); eb92: b2ad uxth r5, r5 eb94: 4268 negs r0, r5 eb96: b200 sxth r0, r0 eb98: 47c8 blx r9 eb9a: 4683 mov fp, r0 int32_t c1 = _lv_trigo_sin(-angle_low + 90); eb9c: f1ca 005a rsb r0, sl, #90 ; 0x5a eba0: b200 sxth r0, r0 eba2: 47c8 blx r9 eba4: 4682 mov sl, r0 int32_t c2 = _lv_trigo_sin(-angle_hight + 90); eba6: f1c5 055a rsb r5, r5, #90 ; 0x5a ebaa: b228 sxth r0, r5 ebac: 47c8 blx r9 dsc->tmp.sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; ebae: f1c7 030a rsb r3, r7, #10 ebb2: fb07 fb0b mul.w fp, r7, fp ebb6: fb03 b606 mla r6, r3, r6, fp ebba: fb88 2b06 smull r2, fp, r8, r6 ebbe: 17f6 asrs r6, r6, #31 ebc0: ebc6 06ab rsb r6, r6, fp, asr #2 ebc4: 62e6 str r6, [r4, #44] ; 0x2c dsc->tmp.cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10; ebc6: fb07 f000 mul.w r0, r7, r0 ebca: fb03 000a mla r0, r3, sl, r0 ebce: fb88 3800 smull r3, r8, r8, r0 ebd2: 17c0 asrs r0, r0, #31 ebd4: ebc0 00a8 rsb r0, r0, r8, asr #2 ebd8: 6320 str r0, [r4, #48] ; 0x30 dsc->tmp.chroma_keyed = lv_img_cf_is_chroma_keyed(dsc->cfg.cf) ? 1 : 0; ebda: 7ca0 ldrb r0, [r4, #18] ebdc: 4b1d ldr r3, [pc, #116] ; (ec54 <_lv_img_buf_transform_init+0x108>) ebde: 4798 blx r3 ebe0: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 ebe4: f360 0300 bfi r3, r0, #0, #1 ebe8: f884 3034 strb.w r3, [r4, #52] ; 0x34 dsc->tmp.has_alpha = lv_img_cf_has_alpha(dsc->cfg.cf) ? 1 : 0; ebec: 7ca0 ldrb r0, [r4, #18] ebee: 4b1a ldr r3, [pc, #104] ; (ec58 <_lv_img_buf_transform_init+0x10c>) ebf0: 4798 blx r3 ebf2: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 ebf6: f360 0341 bfi r3, r0, #1, #1 ebfa: f884 3034 strb.w r3, [r4, #52] ; 0x34 if(dsc->cfg.cf == LV_IMG_CF_TRUE_COLOR || dsc->cfg.cf == LV_IMG_CF_TRUE_COLOR_ALPHA || ebfe: 7ca2 ldrb r2, [r4, #18] ec00: 1f13 subs r3, r2, #4 ec02: b2db uxtb r3, r3 ec04: 2b02 cmp r3, #2 dsc->cfg.cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED) { dsc->tmp.native_color = 1; ec06: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 ec0a: bf94 ite ls ec0c: f043 0304 orrls.w r3, r3, #4 } else { dsc->tmp.native_color = 0; ec10: f36f 0382 bfchi r3, #2, #1 ec14: f884 3034 strb.w r3, [r4, #52] ; 0x34 } dsc->tmp.img_dsc.data = dsc->cfg.src; ec18: 6823 ldr r3, [r4, #0] ec1a: 6223 str r3, [r4, #32] dsc->tmp.img_dsc.header.always_zero = 0; ec1c: 7e23 ldrb r3, [r4, #24] dsc->tmp.img_dsc.header.cf = dsc->cfg.cf; ec1e: f003 031f and.w r3, r3, #31 ec22: f362 0304 bfi r3, r2, #0, #5 ec26: 7623 strb r3, [r4, #24] dsc->tmp.img_dsc.header.w = dsc->cfg.src_w; ec28: 69a3 ldr r3, [r4, #24] ec2a: 88a2 ldrh r2, [r4, #4] ec2c: f362 2394 bfi r3, r2, #10, #11 ec30: 61a3 str r3, [r4, #24] dsc->tmp.img_dsc.header.h = dsc->cfg.src_h; ec32: 0c1b lsrs r3, r3, #16 ec34: 88e2 ldrh r2, [r4, #6] ec36: f362 134f bfi r3, r2, #5, #11 ec3a: 8363 strh r3, [r4, #26] dsc->tmp.zoom_inv = (256 * 256) / dsc->cfg.zoom; ec3c: 89e2 ldrh r2, [r4, #14] ec3e: f44f 3380 mov.w r3, #65536 ; 0x10000 ec42: fb93 f3f2 sdiv r3, r3, r2 ec46: 86e3 strh r3, [r4, #54] ; 0x36 dsc->res.opa = LV_OPA_COVER; ec48: 23ff movs r3, #255 ; 0xff ec4a: 75a3 strb r3, [r4, #22] dsc->res.color = dsc->cfg.color; ec4c: 8a23 ldrh r3, [r4, #16] ec4e: 82a3 strh r3, [r4, #20] ec50: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} ec54: 000096b3 .word 0x000096b3 ec58: 000096c7 .word 0x000096c7 ec5c: 66666667 .word 0x66666667 ec60: 000122a5 .word 0x000122a5 0000ec64 <_lv_img_buf_get_transformed_area>: * @param zoom zoom, (256 no zoom) * @param pivot x,y pivot coordinates of rotation */ void _lv_img_buf_get_transformed_area(lv_area_t * res, lv_coord_t w, lv_coord_t h, int16_t angle, uint16_t zoom, lv_point_t * pivot) { ec64: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} ec68: b087 sub sp, #28 ec6a: 9003 str r0, [sp, #12] ec6c: 9104 str r1, [sp, #16] ec6e: 9205 str r2, [sp, #20] ec70: f8bd 4040 ldrh.w r4, [sp, #64] ; 0x40 ec74: 9401 str r4, [sp, #4] ec76: f8dd b044 ldr.w fp, [sp, #68] ; 0x44 #if LV_USE_IMG_TRANSFORM int32_t angle_low = angle / 10; ec7a: 4f5e ldr r7, [pc, #376] ; (edf4 <_lv_img_buf_get_transformed_area+0x190>) ec7c: fb87 6003 smull r6, r0, r7, r3 ec80: 17dd asrs r5, r3, #31 ec82: ebc5 05a0 rsb r5, r5, r0, asr #2 ec86: b22d sxth r5, r5 int32_t angle_hight = angle_low + 1; ec88: f105 0901 add.w r9, r5, #1 int32_t angle_rem = angle - (angle_low * 10); ec8c: f06f 0609 mvn.w r6, #9 ec90: fb06 3605 mla r6, r6, r5, r3 int32_t s1 = _lv_trigo_sin(angle_low); ec94: 4628 mov r0, r5 ec96: f8df 8160 ldr.w r8, [pc, #352] ; edf8 <_lv_img_buf_get_transformed_area+0x194> ec9a: 47c0 blx r8 ec9c: 4604 mov r4, r0 int32_t s2 = _lv_trigo_sin(angle_hight); ec9e: fa0f f089 sxth.w r0, r9 eca2: 47c0 blx r8 eca4: 4682 mov sl, r0 int32_t c1 = _lv_trigo_sin(angle_low + 90); eca6: f105 005a add.w r0, r5, #90 ; 0x5a ecaa: b200 sxth r0, r0 ecac: 47c0 blx r8 ecae: 4605 mov r5, r0 int32_t c2 = _lv_trigo_sin(angle_hight + 90); ecb0: f109 005a add.w r0, r9, #90 ; 0x5a ecb4: b200 sxth r0, r0 ecb6: 47c0 blx r8 int32_t sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; ecb8: f1c6 030a rsb r3, r6, #10 ecbc: fb06 fa0a mul.w sl, r6, sl ecc0: fb03 a404 mla r4, r3, r4, sl ecc4: fb87 ea04 smull lr, sl, r7, r4 ecc8: 17e4 asrs r4, r4, #31 ecca: ebc4 04aa rsb r4, r4, sl, asr #2 int32_t cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10; ecce: fb06 f000 mul.w r0, r6, r0 ecd2: fb03 0505 mla r5, r3, r5, r0 ecd6: fb87 3705 smull r3, r7, r7, r5 ecda: 17ed asrs r5, r5, #31 ecdc: ebc5 07a7 rsb r7, r5, r7, asr #2 lv_coord_t xt; lv_coord_t yt; lv_area_t a; a.x1 = ((-pivot->x) * zoom) >> 8; ece0: f9bb c000 ldrsh.w ip, [fp] a.y1 = ((-pivot->y) * zoom) >> 8; ece4: f9bb 8002 ldrsh.w r8, [fp, #2] a.x1 = ((-pivot->x) * zoom) >> 8; ece8: f1cc 0300 rsb r3, ip, #0 ecec: 9d01 ldr r5, [sp, #4] ecee: fb05 f303 mul.w r3, r5, r3 a.x2 = ((w - pivot->x) * zoom) >> 8; a.y2 = ((h - pivot->y) * zoom) >> 8; xt = a.x1; yt = a.y1; lt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; ecf2: f343 230f sbfx r3, r3, #8, #16 ecf6: fb03 fa07 mul.w sl, r3, r7 a.y1 = ((-pivot->y) * zoom) >> 8; ecfa: f1c8 0200 rsb r2, r8, #0 ecfe: fb05 f202 mul.w r2, r5, r2 lt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; ed02: f342 220f sbfx r2, r2, #8, #16 ed06: fb02 fe04 mul.w lr, r2, r4 ed0a: fa1f f68c uxth.w r6, ip ed0e: ebaa 0b0e sub.w fp, sl, lr ed12: eb06 3beb add.w fp, r6, fp, asr #15 ed16: fa0f fb8b sxth.w fp, fp lt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; ed1a: fb03 f304 mul.w r3, r3, r4 ed1e: fb02 f207 mul.w r2, r2, r7 ed22: fa1f f088 uxth.w r0, r8 ed26: 1899 adds r1, r3, r2 ed28: eb00 31e1 add.w r1, r0, r1, asr #15 ed2c: b209 sxth r1, r1 ed2e: 9102 str r1, [sp, #8] a.x2 = ((w - pivot->x) * zoom) >> 8; ed30: 9904 ldr r1, [sp, #16] ed32: eba1 0c0c sub.w ip, r1, ip ed36: fb05 fc0c mul.w ip, r5, ip xt = a.x2; yt = a.y1; rt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; ed3a: f34c 2c0f sbfx ip, ip, #8, #16 ed3e: fb0c f907 mul.w r9, ip, r7 ed42: eba9 0e0e sub.w lr, r9, lr ed46: eb06 3eee add.w lr, r6, lr, asr #15 ed4a: fa0f fe8e sxth.w lr, lr rt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; ed4e: fb0c fc04 mul.w ip, ip, r4 ed52: 4462 add r2, ip ed54: eb00 32e2 add.w r2, r0, r2, asr #15 ed58: b212 sxth r2, r2 a.y2 = ((h - pivot->y) * zoom) >> 8; ed5a: 9905 ldr r1, [sp, #20] ed5c: eba1 0808 sub.w r8, r1, r8 ed60: fb05 f808 mul.w r8, r5, r8 xt = a.x1; yt = a.y2; lb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; ed64: f348 280f sbfx r8, r8, #8, #16 ed68: fb08 f404 mul.w r4, r8, r4 ed6c: ebaa 0504 sub.w r5, sl, r4 ed70: eb06 35e5 add.w r5, r6, r5, asr #15 ed74: b22d sxth r5, r5 lb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; ed76: fb08 f707 mul.w r7, r8, r7 ed7a: 443b add r3, r7 ed7c: eb00 33e3 add.w r3, r0, r3, asr #15 ed80: b21b sxth r3, r3 xt = a.x2; yt = a.y2; rb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; ed82: eba9 0404 sub.w r4, r9, r4 ed86: eb06 36e4 add.w r6, r6, r4, asr #15 ed8a: b236 sxth r6, r6 rb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; ed8c: 44bc add ip, r7 ed8e: eb00 30ec add.w r0, r0, ip, asr #15 ed92: b200 sxth r0, r0 res->x1 = LV_MATH_MIN4(lb.x, lt.x, rb.x, rt.x); ed94: 465c mov r4, fp ed96: 45f3 cmp fp, lr ed98: bfa8 it ge ed9a: 4674 movge r4, lr ed9c: 42ac cmp r4, r5 ed9e: bfa8 it ge eda0: 462c movge r4, r5 eda2: 42b4 cmp r4, r6 eda4: bfa8 it ge eda6: 4634 movge r4, r6 eda8: 9903 ldr r1, [sp, #12] edaa: 460f mov r7, r1 edac: 800c strh r4, [r1, #0] res->x2 = LV_MATH_MAX4(lb.x, lt.x, rb.x, rt.x); edae: 45de cmp lr, fp edb0: bfb8 it lt edb2: 46de movlt lr, fp edb4: 4575 cmp r5, lr edb6: bfb8 it lt edb8: 4675 movlt r5, lr edba: 42ae cmp r6, r5 edbc: bfb8 it lt edbe: 462e movlt r6, r5 edc0: 808e strh r6, [r1, #4] res->y1 = LV_MATH_MIN4(lb.y, lt.y, rb.y, rt.y); edc2: 9902 ldr r1, [sp, #8] edc4: 460c mov r4, r1 edc6: 4291 cmp r1, r2 edc8: bfa8 it ge edca: 4614 movge r4, r2 edcc: 429c cmp r4, r3 edce: bfa8 it ge edd0: 461c movge r4, r3 edd2: 4284 cmp r4, r0 edd4: bfa8 it ge edd6: 4604 movge r4, r0 edd8: 807c strh r4, [r7, #2] res->y2 = LV_MATH_MAX4(lb.y, lt.y, rb.y, rt.y); edda: 4291 cmp r1, r2 eddc: bfb8 it lt edde: 4611 movlt r1, r2 ede0: 428b cmp r3, r1 ede2: bfb8 it lt ede4: 460b movlt r3, r1 ede6: 4298 cmp r0, r3 ede8: bfb8 it lt edea: 4618 movlt r0, r3 edec: 80f8 strh r0, [r7, #6] res->x1 = 0; res->y1 = 0; res->x2 = w; res->y2 = h; #endif } edee: b007 add sp, #28 edf0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} edf4: 66666667 .word 0x66666667 edf8: 000122a5 .word 0x000122a5 0000edfc <_lv_img_buf_transform_anti_alias>: /** * Continue transformation by taking the neighbors into account * @param dsc pointer to the transformation descriptor */ bool _lv_img_buf_transform_anti_alias(lv_img_transform_dsc_t * dsc) { edfc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} ee00: b089 sub sp, #36 ; 0x24 ee02: 4604 mov r4, r0 const uint8_t * src_u8 = dsc->cfg.src; /*Get the fractional part of the source pixel*/ int xs_fract = dsc->tmp.xs & 0xff; ee04: f9b0 5038 ldrsh.w r5, [r0, #56] ; 0x38 ee08: b2ea uxtb r2, r5 int ys_fract = dsc->tmp.ys & 0xff; ee0a: f9b0 603a ldrsh.w r6, [r0, #58] ; 0x3a ee0e: b2f3 uxtb r3, r6 int32_t xn; /*x neightboor*/ lv_opa_t xr; /*x mix ratio*/ if(xs_fract < 0x70) { ee10: 2a6f cmp r2, #111 ; 0x6f ee12: dc74 bgt.n eefe <_lv_img_buf_transform_anti_alias+0x102> xn = - 1; if(dsc->tmp.xs_int + xn < 0) xn = 0; ee14: f9b0 103c ldrsh.w r1, [r0, #60] ; 0x3c ee18: 4249 negs r1, r1 ee1a: 17c9 asrs r1, r1, #31 xr = xs_fract + 0x80; ee1c: 3d80 subs r5, #128 ; 0x80 ee1e: b2ed uxtb r5, r5 } int32_t yn; /*x neightboor*/ lv_opa_t yr; /*x mix ratio*/ if(ys_fract < 0x70) { ee20: 2b6f cmp r3, #111 ; 0x6f ee22: dc7e bgt.n ef22 <_lv_img_buf_transform_anti_alias+0x126> yn = - 1; if(dsc->tmp.ys_int + yn < 0) yn = 0; ee24: f9b4 b03e ldrsh.w fp, [r4, #62] ; 0x3e ee28: f1cb 0b00 rsb fp, fp, #0 ee2c: ea4f 7beb mov.w fp, fp, asr #31 yr = ys_fract + 0x80; ee30: 3e80 subs r6, #128 ; 0x80 ee32: b2f6 uxtb r6, r6 else { yn = 0; yr = 0xFF; } lv_color_t c00 = dsc->res.color; ee34: f894 9014 ldrb.w r9, [r4, #20] ee38: f009 091f and.w r9, r9, #31 ee3c: f8b4 8014 ldrh.w r8, [r4, #20] ee40: f3c8 1845 ubfx r8, r8, #5, #6 ee44: 7d67 ldrb r7, [r4, #21] ee46: 08ff lsrs r7, r7, #3 lv_color_t c01; lv_color_t c10; lv_color_t c11; lv_opa_t a00 = dsc->res.opa; ee48: 7da3 ldrb r3, [r4, #22] ee4a: 9300 str r3, [sp, #0] lv_opa_t a10 = 0; lv_opa_t a01 = 0; lv_opa_t a11 = 0; if(dsc->tmp.native_color) { ee4c: f894 c034 ldrb.w ip, [r4, #52] ; 0x34 ee50: f01c 0f04 tst.w ip, #4 ee54: d07b beq.n ef4e <_lv_img_buf_transform_anti_alias+0x152> const uint8_t * src_u8 = dsc->cfg.src; ee56: 6823 ldr r3, [r4, #0] _lv_memcpy_small(&c01, &src_u8[dsc->tmp.pxi + dsc->tmp.px_size * xn], sizeof(lv_color_t)); ee58: 6c20 ldr r0, [r4, #64] ; 0x40 ee5a: f894 e044 ldrb.w lr, [r4, #68] ; 0x44 ee5e: fb0e 0101 mla r1, lr, r1, r0 ee62: 185a adds r2, r3, r1 ee64: f813 a001 ldrb.w sl, [r3, r1] ee68: f88d a01c strb.w sl, [sp, #28] ee6c: 7852 ldrb r2, [r2, #1] ee6e: f88d 201d strb.w r2, [sp, #29] _lv_memcpy_small(&c10, &src_u8[dsc->tmp.pxi + dsc->cfg.src_w * dsc->tmp.px_size * yn], sizeof(lv_color_t)); ee72: f9b4 2004 ldrsh.w r2, [r4, #4] ee76: fb0e f202 mul.w r2, lr, r2 ee7a: fb0b fb02 mul.w fp, fp, r2 ee7e: 4458 add r0, fp ee80: 181a adds r2, r3, r0 ee82: f813 a000 ldrb.w sl, [r3, r0] ee86: f88d a018 strb.w sl, [sp, #24] ee8a: 7852 ldrb r2, [r2, #1] ee8c: f88d 2019 strb.w r2, [sp, #25] _lv_memcpy_small(&c11, &src_u8[dsc->tmp.pxi + dsc->cfg.src_w * dsc->tmp.px_size * yn + dsc->tmp.px_size * xn], ee90: eb01 020b add.w r2, r1, fp ee94: eb03 0a02 add.w sl, r3, r2 ee98: f813 b002 ldrb.w fp, [r3, r2] ee9c: f88d b014 strb.w fp, [sp, #20] eea0: f89a a001 ldrb.w sl, [sl, #1] eea4: f88d a015 strb.w sl, [sp, #21] sizeof(lv_color_t)); if(dsc->tmp.has_alpha) { eea8: f01c 0f02 tst.w ip, #2 eeac: f000 8081 beq.w efb2 <_lv_img_buf_transform_anti_alias+0x1b6> eeb0: f10e 3eff add.w lr, lr, #4294967295 a10 = src_u8[dsc->tmp.pxi + dsc->tmp.px_size * xn + dsc->tmp.px_size - 1]; eeb4: 4473 add r3, lr eeb6: f813 b001 ldrb.w fp, [r3, r1] a01 = src_u8[dsc->tmp.pxi + dsc->cfg.src_w * dsc->tmp.px_size * yn + dsc->tmp.px_size - 1]; eeba: f813 a000 ldrb.w sl, [r3, r0] a11 = src_u8[dsc->tmp.pxi + dsc->cfg.src_w * dsc->tmp.px_size * yn + dsc->tmp.px_size * xn + dsc->tmp.px_size - 1]; eebe: 5c98 ldrb r0, [r3, r2] } lv_opa_t xr0 = xr; lv_opa_t xr1 = xr; if(dsc->tmp.has_alpha) { lv_opa_t a0 = (a00 * xr + (a10 * (255 - xr))) >> 8; eec0: f1c5 03ff rsb r3, r5, #255 ; 0xff eec4: fb03 f10b mul.w r1, r3, fp eec8: 9a00 ldr r2, [sp, #0] eeca: fb05 1102 mla r1, r5, r2, r1 lv_opa_t a1 = (a01 * xr + (a11 * (255 - xr))) >> 8; eece: fb03 f300 mul.w r3, r3, r0 eed2: fb05 330a mla r3, r5, sl, r3 eed6: f3c3 2307 ubfx r3, r3, #8, #8 dsc->res.opa = (a0 * yr + (a1 * (255 - yr))) >> 8; eeda: f1c6 02ff rsb r2, r6, #255 ; 0xff eede: f3c1 2107 ubfx r1, r1, #8, #8 eee2: fb06 fe01 mul.w lr, r6, r1 eee6: fb02 e203 mla r2, r2, r3, lr eeea: 1212 asrs r2, r2, #8 eeec: 75a2 strb r2, [r4, #22] if(a0 <= LV_OPA_MIN && a1 <= LV_OPA_MIN) return false; eeee: 2905 cmp r1, #5 eef0: f200 80dc bhi.w f0ac <_lv_img_buf_transform_anti_alias+0x2b0> eef4: 2b05 cmp r3, #5 eef6: f240 817d bls.w f1f4 <_lv_img_buf_transform_anti_alias+0x3f8> if(a0 <= LV_OPA_MIN) yr = LV_OPA_TRANSP; eefa: 2600 movs r6, #0 eefc: e0d9 b.n f0b2 <_lv_img_buf_transform_anti_alias+0x2b6> else if(xs_fract > 0x90) { eefe: 2a90 cmp r2, #144 ; 0x90 ef00: dd0c ble.n ef1c <_lv_img_buf_transform_anti_alias+0x120> if(dsc->tmp.xs_int + xn >= dsc->cfg.src_w) xn = 0; ef02: f9b0 103c ldrsh.w r1, [r0, #60] ; 0x3c ef06: 3101 adds r1, #1 ef08: f9b0 2004 ldrsh.w r2, [r0, #4] ef0c: 4291 cmp r1, r2 ef0e: bfac ite ge ef10: 2100 movge r1, #0 ef12: 2101 movlt r1, #1 xr = (0xFF - xs_fract) + 0x80; ef14: f1c5 057f rsb r5, r5, #127 ; 0x7f ef18: b2ed uxtb r5, r5 ef1a: e781 b.n ee20 <_lv_img_buf_transform_anti_alias+0x24> xr = 0xFF; ef1c: 25ff movs r5, #255 ; 0xff xn = 0; ef1e: 2100 movs r1, #0 ef20: e77e b.n ee20 <_lv_img_buf_transform_anti_alias+0x24> else if(ys_fract > 0x90) { ef22: 2b90 cmp r3, #144 ; 0x90 ef24: dd0f ble.n ef46 <_lv_img_buf_transform_anti_alias+0x14a> if(dsc->tmp.ys_int + yn >= dsc->cfg.src_h) yn = 0; ef26: f9b4 b03e ldrsh.w fp, [r4, #62] ; 0x3e ef2a: f10b 0b01 add.w fp, fp, #1 ef2e: f9b4 2006 ldrsh.w r2, [r4, #6] ef32: 4593 cmp fp, r2 ef34: bfac ite ge ef36: f04f 0b00 movge.w fp, #0 ef3a: f04f 0b01 movlt.w fp, #1 yr = (0xFF - ys_fract) + 0x80; ef3e: f1c6 067f rsb r6, r6, #127 ; 0x7f ef42: b2f6 uxtb r6, r6 ef44: e776 b.n ee34 <_lv_img_buf_transform_anti_alias+0x38> yr = 0xFF; ef46: 26ff movs r6, #255 ; 0xff yn = 0; ef48: f04f 0b00 mov.w fp, #0 ef4c: e772 b.n ee34 <_lv_img_buf_transform_anti_alias+0x38> c01 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int, dsc->cfg.color); ef4e: f104 0318 add.w r3, r4, #24 ef52: 4618 mov r0, r3 ef54: b28b uxth r3, r1 ef56: 8fa1 ldrh r1, [r4, #60] ; 0x3c ef58: 9302 str r3, [sp, #8] ef5a: 4419 add r1, r3 ef5c: 8a23 ldrh r3, [r4, #16] ef5e: f9b4 203e ldrsh.w r2, [r4, #62] ; 0x3e ef62: b209 sxth r1, r1 ef64: 9001 str r0, [sp, #4] ef66: f8df a294 ldr.w sl, [pc, #660] ; f1fc <_lv_img_buf_transform_anti_alias+0x400> ef6a: 47d0 blx sl ef6c: f8ad 001c strh.w r0, [sp, #28] c10 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int, dsc->tmp.ys_int + yn, dsc->cfg.color); ef70: fa1f f18b uxth.w r1, fp ef74: 8fe2 ldrh r2, [r4, #62] ; 0x3e ef76: 9103 str r1, [sp, #12] ef78: 440a add r2, r1 ef7a: 8a23 ldrh r3, [r4, #16] ef7c: b212 sxth r2, r2 ef7e: f9b4 103c ldrsh.w r1, [r4, #60] ; 0x3c ef82: f8dd b004 ldr.w fp, [sp, #4] ef86: 4658 mov r0, fp ef88: 47d0 blx sl ef8a: f8ad 0018 strh.w r0, [sp, #24] c11 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int + yn, dsc->cfg.color); ef8e: 8fe2 ldrh r2, [r4, #62] ; 0x3e ef90: 9903 ldr r1, [sp, #12] ef92: 440a add r2, r1 ef94: 8fa1 ldrh r1, [r4, #60] ; 0x3c ef96: 9b02 ldr r3, [sp, #8] ef98: 4419 add r1, r3 ef9a: 8a23 ldrh r3, [r4, #16] ef9c: b212 sxth r2, r2 ef9e: b209 sxth r1, r1 efa0: 4658 mov r0, fp efa2: 47d0 blx sl efa4: f8ad 0014 strh.w r0, [sp, #20] if(dsc->tmp.has_alpha) { efa8: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 efac: f013 0f02 tst.w r3, #2 efb0: d152 bne.n f058 <_lv_img_buf_transform_anti_alias+0x25c> if(a11 <= LV_OPA_MIN) xr1 = LV_OPA_COVER; } else { xr0 = xr; xr1 = xr; dsc->res.opa = LV_OPA_COVER; efb2: 23ff movs r3, #255 ; 0xff efb4: 75a3 strb r3, [r4, #22] xr0 = xr; efb6: 462b mov r3, r5 } lv_color_t c0; if(xr0 == LV_OPA_TRANSP) c0 = c01; efb8: 2b00 cmp r3, #0 efba: f040 808b bne.w f0d4 <_lv_img_buf_transform_anti_alias+0x2d8> efbe: f89d 901c ldrb.w r9, [sp, #28] efc2: f009 091f and.w r9, r9, #31 efc6: f8bd 801c ldrh.w r8, [sp, #28] efca: f3c8 1845 ubfx r8, r8, #5, #6 efce: f89d 701d ldrb.w r7, [sp, #29] efd2: 08ff lsrs r7, r7, #3 else if(xr0 == LV_OPA_COVER) c0 = c00; else c0 = lv_color_mix(c00, c01, xr0); lv_color_t c1; if(xr1 == LV_OPA_TRANSP) c1 = c11; efd4: 2d00 cmp r5, #0 efd6: f040 80ac bne.w f132 <_lv_img_buf_transform_anti_alias+0x336> efda: f89d 5014 ldrb.w r5, [sp, #20] efde: f005 051f and.w r5, r5, #31 efe2: f8bd 3014 ldrh.w r3, [sp, #20] efe6: f3c3 1345 ubfx r3, r3, #5, #6 efea: f89d 1015 ldrb.w r1, [sp, #21] efee: 08c9 lsrs r1, r1, #3 else if(xr1 == LV_OPA_COVER) c1 = c10; else c1 = lv_color_mix(c10, c11, xr1); if(yr == LV_OPA_TRANSP) dsc->res.color = c1; eff0: 2e00 cmp r6, #0 eff2: f000 80e3 beq.w f1bc <_lv_img_buf_transform_anti_alias+0x3c0> else if(yr == LV_OPA_COVER) dsc->res.color = c0; eff6: 2eff cmp r6, #255 ; 0xff eff8: f000 80ee beq.w f1d8 <_lv_img_buf_transform_anti_alias+0x3dc> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); effc: f1c6 02ff rsb r2, r6, #255 ; 0xff LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); f000: fb02 f505 mul.w r5, r2, r5 f004: fb06 5509 mla r5, r6, r9, r5 f008: eb05 2905 add.w r9, r5, r5, lsl #8 f00c: eb05 15c9 add.w r5, r5, r9, lsl #7 f010: 0ded lsrs r5, r5, #23 else dsc->res.color = lv_color_mix(c0, c1, yr); f012: 7d20 ldrb r0, [r4, #20] f014: f365 0004 bfi r0, r5, #0, #5 f018: 7520 strb r0, [r4, #20] LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); f01a: fb02 f303 mul.w r3, r2, r3 f01e: fb06 3808 mla r8, r6, r8, r3 f022: eb08 2308 add.w r3, r8, r8, lsl #8 f026: eb08 18c3 add.w r8, r8, r3, lsl #7 f02a: ea4f 58d8 mov.w r8, r8, lsr #23 f02e: 8aa3 ldrh r3, [r4, #20] f030: f368 134a bfi r3, r8, #5, #6 f034: 82a3 strh r3, [r4, #20] LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); f036: fb02 f101 mul.w r1, r2, r1 f03a: fb06 1607 mla r6, r6, r7, r1 f03e: eb06 2706 add.w r7, r6, r6, lsl #8 f042: eb06 16c7 add.w r6, r6, r7, lsl #7 f046: 0df6 lsrs r6, r6, #23 f048: 0a1b lsrs r3, r3, #8 f04a: f366 03c7 bfi r3, r6, #3, #5 f04e: 7563 strb r3, [r4, #21] return true; f050: 2001 movs r0, #1 } f052: b009 add sp, #36 ; 0x24 f054: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} a10 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int); f058: 8fa1 ldrh r1, [r4, #60] ; 0x3c f05a: 9b02 ldr r3, [sp, #8] f05c: 4419 add r1, r3 f05e: f9b4 203e ldrsh.w r2, [r4, #62] ; 0x3e f062: b209 sxth r1, r1 f064: f8dd a004 ldr.w sl, [sp, #4] f068: 4650 mov r0, sl f06a: 4b63 ldr r3, [pc, #396] ; (f1f8 <_lv_img_buf_transform_anti_alias+0x3fc>) f06c: 4798 blx r3 f06e: 4683 mov fp, r0 a01 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int, dsc->tmp.ys_int + yn); f070: 8fe2 ldrh r2, [r4, #62] ; 0x3e f072: 9903 ldr r1, [sp, #12] f074: 440a add r2, r1 f076: b212 sxth r2, r2 f078: f9b4 103c ldrsh.w r1, [r4, #60] ; 0x3c f07c: f8cd a004 str.w sl, [sp, #4] f080: 4650 mov r0, sl f082: 4b5d ldr r3, [pc, #372] ; (f1f8 <_lv_img_buf_transform_anti_alias+0x3fc>) f084: 4798 blx r3 f086: 4682 mov sl, r0 a11 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int + yn); f088: 8fe2 ldrh r2, [r4, #62] ; 0x3e f08a: 9903 ldr r1, [sp, #12] f08c: 440a add r2, r1 f08e: 8fa1 ldrh r1, [r4, #60] ; 0x3c f090: 9b02 ldr r3, [sp, #8] f092: 4419 add r1, r3 f094: b212 sxth r2, r2 f096: b209 sxth r1, r1 f098: 9801 ldr r0, [sp, #4] f09a: 4b57 ldr r3, [pc, #348] ; (f1f8 <_lv_img_buf_transform_anti_alias+0x3fc>) f09c: 4798 blx r3 if(dsc->tmp.has_alpha) { f09e: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 f0a2: f013 0f02 tst.w r3, #2 f0a6: f47f af0b bne.w eec0 <_lv_img_buf_transform_anti_alias+0xc4> f0aa: e782 b.n efb2 <_lv_img_buf_transform_anti_alias+0x1b6> if(a1 <= LV_OPA_MIN) yr = LV_OPA_COVER; f0ac: 2b05 cmp r3, #5 f0ae: bf98 it ls f0b0: 26ff movls r6, #255 ; 0xff if(a00 <= LV_OPA_MIN) xr0 = LV_OPA_TRANSP; f0b2: 9b00 ldr r3, [sp, #0] f0b4: 2b05 cmp r3, #5 f0b6: bf8c ite hi f0b8: 462b movhi r3, r5 f0ba: 2300 movls r3, #0 if(a10 <= LV_OPA_MIN) xr0 = LV_OPA_COVER; f0bc: f1bb 0f05 cmp.w fp, #5 f0c0: bf98 it ls f0c2: 23ff movls r3, #255 ; 0xff if(a01 <= LV_OPA_MIN) xr1 = LV_OPA_TRANSP; f0c4: f1ba 0f05 cmp.w sl, #5 f0c8: bf98 it ls f0ca: 2500 movls r5, #0 if(a11 <= LV_OPA_MIN) xr1 = LV_OPA_COVER; f0cc: 2805 cmp r0, #5 f0ce: bf98 it ls f0d0: 25ff movls r5, #255 ; 0xff f0d2: e771 b.n efb8 <_lv_img_buf_transform_anti_alias+0x1bc> else if(xr0 == LV_OPA_COVER) c0 = c00; f0d4: 2bff cmp r3, #255 ; 0xff f0d6: f43f af7d beq.w efd4 <_lv_img_buf_transform_anti_alias+0x1d8> f0da: f1c3 01ff rsb r1, r3, #255 ; 0xff f0de: f89d 201d ldrb.w r2, [sp, #29] f0e2: 08d2 lsrs r2, r2, #3 f0e4: fb03 f707 mul.w r7, r3, r7 f0e8: fb01 7702 mla r7, r1, r2, r7 f0ec: eb07 2207 add.w r2, r7, r7, lsl #8 f0f0: eb07 17c2 add.w r7, r7, r2, lsl #7 f0f4: f3c7 57c4 ubfx r7, r7, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); f0f8: f8bd 201c ldrh.w r2, [sp, #28] f0fc: f3c2 1245 ubfx r2, r2, #5, #6 f100: fb03 f808 mul.w r8, r3, r8 f104: fb01 8802 mla r8, r1, r2, r8 f108: eb08 2208 add.w r2, r8, r8, lsl #8 f10c: eb08 18c2 add.w r8, r8, r2, lsl #7 f110: f3c8 58c5 ubfx r8, r8, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); f114: f89d 201c ldrb.w r2, [sp, #28] f118: f002 021f and.w r2, r2, #31 f11c: fb03 f909 mul.w r9, r3, r9 f120: fb01 9902 mla r9, r1, r2, r9 f124: eb09 2309 add.w r3, r9, r9, lsl #8 f128: eb09 19c3 add.w r9, r9, r3, lsl #7 f12c: f3c9 59c4 ubfx r9, r9, #23, #5 f130: e750 b.n efd4 <_lv_img_buf_transform_anti_alias+0x1d8> else if(xr1 == LV_OPA_COVER) c1 = c10; f132: 2dff cmp r5, #255 ; 0xff f134: d036 beq.n f1a4 <_lv_img_buf_transform_anti_alias+0x3a8> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); f136: f1c5 00ff rsb r0, r5, #255 ; 0xff f13a: f89d 1019 ldrb.w r1, [sp, #25] f13e: 08c9 lsrs r1, r1, #3 f140: f89d 3015 ldrb.w r3, [sp, #21] f144: 08db lsrs r3, r3, #3 f146: fb00 f303 mul.w r3, r0, r3 f14a: fb05 3101 mla r1, r5, r1, r3 f14e: eb01 2301 add.w r3, r1, r1, lsl #8 f152: eb01 11c3 add.w r1, r1, r3, lsl #7 f156: f3c1 51c4 ubfx r1, r1, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); f15a: f8bd 3018 ldrh.w r3, [sp, #24] f15e: f3c3 1345 ubfx r3, r3, #5, #6 f162: f8bd 2014 ldrh.w r2, [sp, #20] f166: f3c2 1245 ubfx r2, r2, #5, #6 f16a: fb00 f202 mul.w r2, r0, r2 f16e: fb05 2303 mla r3, r5, r3, r2 f172: eb03 2203 add.w r2, r3, r3, lsl #8 f176: eb03 13c2 add.w r3, r3, r2, lsl #7 f17a: f3c3 53c5 ubfx r3, r3, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); f17e: f89d 2018 ldrb.w r2, [sp, #24] f182: f002 021f and.w r2, r2, #31 f186: f89d e014 ldrb.w lr, [sp, #20] f18a: f00e 0e1f and.w lr, lr, #31 f18e: fb00 f00e mul.w r0, r0, lr f192: fb05 0502 mla r5, r5, r2, r0 f196: eb05 2205 add.w r2, r5, r5, lsl #8 f19a: eb05 15c2 add.w r5, r5, r2, lsl #7 f19e: f3c5 55c4 ubfx r5, r5, #23, #5 f1a2: e725 b.n eff0 <_lv_img_buf_transform_anti_alias+0x1f4> f1a4: f89d 5018 ldrb.w r5, [sp, #24] f1a8: f005 051f and.w r5, r5, #31 f1ac: f8bd 3018 ldrh.w r3, [sp, #24] f1b0: f3c3 1345 ubfx r3, r3, #5, #6 f1b4: f89d 1019 ldrb.w r1, [sp, #25] f1b8: 08c9 lsrs r1, r1, #3 f1ba: e719 b.n eff0 <_lv_img_buf_transform_anti_alias+0x1f4> if(yr == LV_OPA_TRANSP) dsc->res.color = c1; f1bc: 7d22 ldrb r2, [r4, #20] f1be: f365 0204 bfi r2, r5, #0, #5 f1c2: 7522 strb r2, [r4, #20] f1c4: 8aa2 ldrh r2, [r4, #20] f1c6: f363 124a bfi r2, r3, #5, #6 f1ca: 82a2 strh r2, [r4, #20] f1cc: 0a12 lsrs r2, r2, #8 f1ce: f361 02c7 bfi r2, r1, #3, #5 f1d2: 7562 strb r2, [r4, #21] return true; f1d4: 2001 movs r0, #1 f1d6: e73c b.n f052 <_lv_img_buf_transform_anti_alias+0x256> else if(yr == LV_OPA_COVER) dsc->res.color = c0; f1d8: 7d23 ldrb r3, [r4, #20] f1da: f369 0304 bfi r3, r9, #0, #5 f1de: 7523 strb r3, [r4, #20] f1e0: 8aa3 ldrh r3, [r4, #20] f1e2: f368 134a bfi r3, r8, #5, #6 f1e6: 82a3 strh r3, [r4, #20] f1e8: 0a1b lsrs r3, r3, #8 f1ea: f367 03c7 bfi r3, r7, #3, #5 f1ee: 7563 strb r3, [r4, #21] return true; f1f0: 2001 movs r0, #1 f1f2: e72e b.n f052 <_lv_img_buf_transform_anti_alias+0x256> if(a0 <= LV_OPA_MIN && a1 <= LV_OPA_MIN) return false; f1f4: 2000 movs r0, #0 f1f6: e72c b.n f052 <_lv_img_buf_transform_anti_alias+0x256> f1f8: 0000ea49 .word 0x0000ea49 f1fc: 0000e919 .word 0x0000e919 0000f200 <_lv_img_cache_open>: * @param src source of the image. Path to file or pointer to an `lv_img_dsc_t` variable * @param style style of the image * @return pointer to the cache entry or NULL if can open the image */ lv_img_cache_entry_t * _lv_img_cache_open(const void * src, lv_color_t color) { f200: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} f204: b083 sub sp, #12 f206: 4688 mov r8, r1 if(entry_cnt == 0) { f208: 4b5d ldr r3, [pc, #372] ; (f380 <_lv_img_cache_open+0x180>) f20a: 8819 ldrh r1, [r3, #0] f20c: b1e1 cbz r1, f248 <_lv_img_cache_open+0x48> f20e: 4607 mov r7, r0 LV_LOG_WARN("lv_img_cache_open: the cache size is 0"); return NULL; } lv_img_cache_entry_t * cache = LV_GC_ROOT(_lv_img_cache_array); f210: 4b5c ldr r3, [pc, #368] ; (f384 <_lv_img_cache_open+0x184>) f212: 681e ldr r6, [r3, #0] f214: 4633 mov r3, r6 f216: 3901 subs r1, #1 f218: b289 uxth r1, r1 f21a: 3101 adds r1, #1 f21c: eb01 01c1 add.w r1, r1, r1, lsl #3 f220: eb06 0181 add.w r1, r6, r1, lsl #2 /*Decrement all lifes. Make the entries older*/ uint16_t i; for(i = 0; i < entry_cnt; i++) { if(cache[i].life > INT32_MIN + LV_IMG_CACHE_AGING) { f224: 4858 ldr r0, [pc, #352] ; (f388 <_lv_img_cache_open+0x188>) f226: 6a1a ldr r2, [r3, #32] f228: 4282 cmp r2, r0 cache[i].life -= LV_IMG_CACHE_AGING; f22a: bfa4 itt ge f22c: f102 32ff addge.w r2, r2, #4294967295 f230: 621a strge r2, [r3, #32] f232: 3324 adds r3, #36 ; 0x24 for(i = 0; i < entry_cnt; i++) { f234: 428b cmp r3, r1 f236: d1f6 bne.n f226 <_lv_img_cache_open+0x26> f238: 2400 movs r4, #0 /*Is the image cached?*/ lv_img_cache_entry_t * cached_src = NULL; for(i = 0; i < entry_cnt; i++) { bool match = false; lv_img_src_t src_type = lv_img_src_get_type(cache[i].dec_dsc.src); f23a: f8df 9180 ldr.w r9, [pc, #384] ; f3bc <_lv_img_cache_open+0x1bc> if(src_type == LV_IMG_SRC_VARIABLE) { if(cache[i].dec_dsc.src == src && cache[i].dec_dsc.color.full == color.full) match = true; } else if(src_type == LV_IMG_SRC_FILE) { if(strcmp(cache[i].dec_dsc.src, src) == 0) match = true; f23e: f8df b180 ldr.w fp, [pc, #384] ; f3c0 <_lv_img_cache_open+0x1c0> for(i = 0; i < entry_cnt; i++) { f242: f8df a13c ldr.w sl, [pc, #316] ; f380 <_lv_img_cache_open+0x180> f246: e011 b.n f26c <_lv_img_cache_open+0x6c> LV_LOG_WARN("lv_img_cache_open: the cache size is 0"); f248: 4b50 ldr r3, [pc, #320] ; (f38c <_lv_img_cache_open+0x18c>) f24a: 9300 str r3, [sp, #0] f24c: 4b50 ldr r3, [pc, #320] ; (f390 <_lv_img_cache_open+0x190>) f24e: 2244 movs r2, #68 ; 0x44 f250: 4950 ldr r1, [pc, #320] ; (f394 <_lv_img_cache_open+0x194>) f252: 2002 movs r0, #2 f254: 4c50 ldr r4, [pc, #320] ; (f398 <_lv_img_cache_open+0x198>) f256: 47a0 blx r4 return NULL; f258: 2500 movs r5, #0 f25a: e025 b.n f2a8 <_lv_img_cache_open+0xa8> else if(src_type == LV_IMG_SRC_FILE) { f25c: 2801 cmp r0, #1 f25e: d027 beq.n f2b0 <_lv_img_cache_open+0xb0> for(i = 0; i < entry_cnt; i++) { f260: 3401 adds r4, #1 f262: b2a4 uxth r4, r4 f264: f8ba 3000 ldrh.w r3, [sl] f268: 42a3 cmp r3, r4 f26a: d92a bls.n f2c2 <_lv_img_cache_open+0xc2> lv_img_src_t src_type = lv_img_src_get_type(cache[i].dec_dsc.src); f26c: eb04 05c4 add.w r5, r4, r4, lsl #3 f270: eb06 0585 add.w r5, r6, r5, lsl #2 f274: 6868 ldr r0, [r5, #4] f276: 47c8 blx r9 if(src_type == LV_IMG_SRC_VARIABLE) { f278: 2800 cmp r0, #0 f27a: d1ef bne.n f25c <_lv_img_cache_open+0x5c> if(cache[i].dec_dsc.src == src && cache[i].dec_dsc.color.full == color.full) match = true; f27c: 686b ldr r3, [r5, #4] f27e: 42bb cmp r3, r7 f280: d1ee bne.n f260 <_lv_img_cache_open+0x60> f282: 8928 ldrh r0, [r5, #8] f284: fa1f f388 uxth.w r3, r8 f288: 4298 cmp r0, r3 f28a: bf14 ite ne f28c: 2000 movne r0, #0 f28e: 2001 moveq r0, #1 } if(match) { f290: 2800 cmp r0, #0 f292: d0e5 beq.n f260 <_lv_img_cache_open+0x60> /* If opened increment its life. * Image difficult to open should live longer to keep avoid frequent their recaching. * Therefore increase `life` with `time_to_open`*/ cached_src = &cache[i]; cached_src->life += cached_src->dec_dsc.time_to_open * LV_IMG_CACHE_LIFE_GAIN; f294: 6a2b ldr r3, [r5, #32] f296: 696a ldr r2, [r5, #20] f298: 4413 add r3, r2 if(cached_src->life > LV_IMG_CACHE_LIFE_LIMIT) cached_src->life = LV_IMG_CACHE_LIFE_LIMIT; f29a: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 f29e: dd0e ble.n f2be <_lv_img_cache_open+0xbe> f2a0: f44f 737a mov.w r3, #1000 ; 0x3e8 f2a4: 622b str r3, [r5, #32] break; } } /*The image is not cached then cache it now*/ if(cached_src == NULL) { f2a6: b165 cbz r5, f2c2 <_lv_img_cache_open+0xc2> if(cached_src->dec_dsc.time_to_open == 0) cached_src->dec_dsc.time_to_open = 1; } return cached_src; } f2a8: 4628 mov r0, r5 f2aa: b003 add sp, #12 f2ac: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(strcmp(cache[i].dec_dsc.src, src) == 0) match = true; f2b0: 4639 mov r1, r7 f2b2: 6868 ldr r0, [r5, #4] f2b4: 47d8 blx fp f2b6: fab0 f080 clz r0, r0 f2ba: 0940 lsrs r0, r0, #5 f2bc: e7e8 b.n f290 <_lv_img_cache_open+0x90> cached_src->life += cached_src->dec_dsc.time_to_open * LV_IMG_CACHE_LIFE_GAIN; f2be: 622b str r3, [r5, #32] f2c0: e7f1 b.n f2a6 <_lv_img_cache_open+0xa6> for(i = 1; i < entry_cnt; i++) { f2c2: 4b2f ldr r3, [pc, #188] ; (f380 <_lv_img_cache_open+0x180>) f2c4: 881a ldrh r2, [r3, #0] f2c6: 2a01 cmp r2, #1 f2c8: d937 bls.n f33a <_lv_img_cache_open+0x13a> f2ca: f106 0324 add.w r3, r6, #36 ; 0x24 f2ce: 3a02 subs r2, #2 f2d0: b292 uxth r2, r2 f2d2: eb02 02c2 add.w r2, r2, r2, lsl #3 f2d6: eb06 0282 add.w r2, r6, r2, lsl #2 f2da: 3248 adds r2, #72 ; 0x48 f2dc: 4635 mov r5, r6 if(cache[i].life < cached_src->life) { f2de: 6a18 ldr r0, [r3, #32] f2e0: 6a29 ldr r1, [r5, #32] cached_src = &cache[i]; f2e2: 4288 cmp r0, r1 f2e4: bfb8 it lt f2e6: 461d movlt r5, r3 f2e8: 3324 adds r3, #36 ; 0x24 for(i = 1; i < entry_cnt; i++) { f2ea: 4293 cmp r3, r2 f2ec: d1f7 bne.n f2de <_lv_img_cache_open+0xde> if(cached_src->dec_dsc.src) { f2ee: 686b ldr r3, [r5, #4] f2f0: b32b cbz r3, f33e <_lv_img_cache_open+0x13e> lv_img_decoder_close(&cached_src->dec_dsc); f2f2: 4628 mov r0, r5 f2f4: 4b29 ldr r3, [pc, #164] ; (f39c <_lv_img_cache_open+0x19c>) f2f6: 4798 blx r3 LV_LOG_INFO("image draw: cache miss, close and reuse an entry"); f2f8: 4b29 ldr r3, [pc, #164] ; (f3a0 <_lv_img_cache_open+0x1a0>) f2fa: 9300 str r3, [sp, #0] f2fc: 4b24 ldr r3, [pc, #144] ; (f390 <_lv_img_cache_open+0x190>) f2fe: 2277 movs r2, #119 ; 0x77 f300: 4924 ldr r1, [pc, #144] ; (f394 <_lv_img_cache_open+0x194>) f302: 2001 movs r0, #1 f304: 4c24 ldr r4, [pc, #144] ; (f398 <_lv_img_cache_open+0x198>) f306: 47a0 blx r4 t_start = lv_tick_get(); f308: 4b26 ldr r3, [pc, #152] ; (f3a4 <_lv_img_cache_open+0x1a4>) f30a: 4798 blx r3 f30c: 4604 mov r4, r0 cached_src->dec_dsc.time_to_open = 0; f30e: 2300 movs r3, #0 f310: 616b str r3, [r5, #20] lv_res_t open_res = lv_img_decoder_open(&cached_src->dec_dsc, src, color); f312: 4642 mov r2, r8 f314: 4639 mov r1, r7 f316: 4628 mov r0, r5 f318: 4b23 ldr r3, [pc, #140] ; (f3a8 <_lv_img_cache_open+0x1a8>) f31a: 4798 blx r3 if(open_res == LV_RES_INV) { f31c: b1c0 cbz r0, f350 <_lv_img_cache_open+0x150> cached_src->life = 0; f31e: 2300 movs r3, #0 f320: 622b str r3, [r5, #32] if(cached_src->dec_dsc.time_to_open == 0) { f322: 696b ldr r3, [r5, #20] f324: 2b00 cmp r3, #0 f326: d1bf bne.n f2a8 <_lv_img_cache_open+0xa8> cached_src->dec_dsc.time_to_open = lv_tick_elaps(t_start); f328: 4620 mov r0, r4 f32a: 4b20 ldr r3, [pc, #128] ; (f3ac <_lv_img_cache_open+0x1ac>) f32c: 4798 blx r3 f32e: 6168 str r0, [r5, #20] if(cached_src->dec_dsc.time_to_open == 0) cached_src->dec_dsc.time_to_open = 1; f330: 2800 cmp r0, #0 f332: d1b9 bne.n f2a8 <_lv_img_cache_open+0xa8> f334: 2301 movs r3, #1 f336: 616b str r3, [r5, #20] f338: e7b6 b.n f2a8 <_lv_img_cache_open+0xa8> for(i = 1; i < entry_cnt; i++) { f33a: 4635 mov r5, r6 f33c: e7d7 b.n f2ee <_lv_img_cache_open+0xee> LV_LOG_INFO("image draw: cache miss, cached to an empty entry"); f33e: 4b1c ldr r3, [pc, #112] ; (f3b0 <_lv_img_cache_open+0x1b0>) f340: 9300 str r3, [sp, #0] f342: 4b13 ldr r3, [pc, #76] ; (f390 <_lv_img_cache_open+0x190>) f344: 227a movs r2, #122 ; 0x7a f346: 4913 ldr r1, [pc, #76] ; (f394 <_lv_img_cache_open+0x194>) f348: 2001 movs r0, #1 f34a: 4c13 ldr r4, [pc, #76] ; (f398 <_lv_img_cache_open+0x198>) f34c: 47a0 blx r4 f34e: e7db b.n f308 <_lv_img_cache_open+0x108> LV_LOG_WARN("Image draw cannot open the image resource"); f350: 4b18 ldr r3, [pc, #96] ; (f3b4 <_lv_img_cache_open+0x1b4>) f352: 9300 str r3, [sp, #0] f354: 4b0e ldr r3, [pc, #56] ; (f390 <_lv_img_cache_open+0x190>) f356: 2283 movs r2, #131 ; 0x83 f358: 490e ldr r1, [pc, #56] ; (f394 <_lv_img_cache_open+0x194>) f35a: 2002 movs r0, #2 f35c: 4c0e ldr r4, [pc, #56] ; (f398 <_lv_img_cache_open+0x198>) f35e: 47a0 blx r4 lv_img_decoder_close(&cached_src->dec_dsc); f360: 4628 mov r0, r5 f362: 4b0e ldr r3, [pc, #56] ; (f39c <_lv_img_cache_open+0x19c>) f364: 4798 blx r3 _lv_memset_00(&cached_src->dec_dsc, sizeof(lv_img_decoder_dsc_t)); f366: 2120 movs r1, #32 f368: 4628 mov r0, r5 f36a: 4c13 ldr r4, [pc, #76] ; (f3b8 <_lv_img_cache_open+0x1b8>) f36c: 47a0 blx r4 _lv_memset_00(cached_src, sizeof(lv_img_cache_entry_t)); f36e: 2124 movs r1, #36 ; 0x24 f370: 4628 mov r0, r5 f372: 47a0 blx r4 cached_src->life = INT32_MIN; /*Make the empty entry very "weak" to force its use */ f374: f04f 4300 mov.w r3, #2147483648 ; 0x80000000 f378: 622b str r3, [r5, #32] return NULL; f37a: 2500 movs r5, #0 f37c: e794 b.n f2a8 <_lv_img_cache_open+0xa8> f37e: bf00 nop f380: 20002b58 .word 0x20002b58 f384: 20006d58 .word 0x20006d58 f388: 80000002 .word 0x80000002 f38c: 00025190 .word 0x00025190 f390: 00025134 .word 0x00025134 f394: 00025160 .word 0x00025160 f398: 0001225d .word 0x0001225d f39c: 0000ff35 .word 0x0000ff35 f3a0: 000251b8 .word 0x000251b8 f3a4: 00011059 .word 0x00011059 f3a8: 0000fe49 .word 0x0000fe49 f3ac: 00011071 .word 0x00011071 f3b0: 000251ec .word 0x000251ec f3b4: 00025220 .word 0x00025220 f3b8: 00012b37 .word 0x00012b37 f3bc: 00009969 .word 0x00009969 f3c0: 0001b4fb .word 0x0001b4fb 0000f3c4 : * Invalidate an image source in the cache. * Useful if the image source is updated therefore it needs to be cached again. * @param src an image source path to a file or pointer to an `lv_img_dsc_t` variable. */ void lv_img_cache_invalidate_src(const void * src) { f3c4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} lv_img_cache_entry_t * cache = LV_GC_ROOT(_lv_img_cache_array); f3c8: 4b14 ldr r3, [pc, #80] ; (f41c ) f3ca: 681f ldr r7, [r3, #0] uint16_t i; for(i = 0; i < entry_cnt; i++) { f3cc: 4b14 ldr r3, [pc, #80] ; (f420 ) f3ce: 881b ldrh r3, [r3, #0] f3d0: b30b cbz r3, f416 f3d2: 4606 mov r6, r0 f3d4: 2400 movs r4, #0 if(cache[i].dec_dsc.src == src || src == NULL) { if(cache[i].dec_dsc.src != NULL) { lv_img_decoder_close(&cache[i].dec_dsc); } _lv_memset_00(&cache[i].dec_dsc, sizeof(lv_img_decoder_dsc_t)); f3d6: f8df 904c ldr.w r9, [pc, #76] ; f424 lv_img_decoder_close(&cache[i].dec_dsc); f3da: f8df a04c ldr.w sl, [pc, #76] ; f428 for(i = 0; i < entry_cnt; i++) { f3de: f8df 8040 ldr.w r8, [pc, #64] ; f420 f3e2: e00e b.n f402 if(cache[i].dec_dsc.src != NULL) { f3e4: b10b cbz r3, f3ea lv_img_decoder_close(&cache[i].dec_dsc); f3e6: 4628 mov r0, r5 f3e8: 47d0 blx sl _lv_memset_00(&cache[i].dec_dsc, sizeof(lv_img_decoder_dsc_t)); f3ea: 2120 movs r1, #32 f3ec: 4628 mov r0, r5 f3ee: 47c8 blx r9 _lv_memset_00(&cache[i], sizeof(lv_img_cache_entry_t)); f3f0: 2124 movs r1, #36 ; 0x24 f3f2: 4628 mov r0, r5 f3f4: 47c8 blx r9 for(i = 0; i < entry_cnt; i++) { f3f6: 3401 adds r4, #1 f3f8: b2a4 uxth r4, r4 f3fa: f8b8 3000 ldrh.w r3, [r8] f3fe: 42a3 cmp r3, r4 f400: d909 bls.n f416 if(cache[i].dec_dsc.src == src || src == NULL) { f402: eb04 05c4 add.w r5, r4, r4, lsl #3 f406: eb07 0585 add.w r5, r7, r5, lsl #2 f40a: 686b ldr r3, [r5, #4] f40c: 42b3 cmp r3, r6 f40e: d0e9 beq.n f3e4 f410: 2e00 cmp r6, #0 f412: d1f0 bne.n f3f6 f414: e7e6 b.n f3e4 f416: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} f41a: bf00 nop f41c: 20006d58 .word 0x20006d58 f420: 20002b58 .word 0x20002b58 f424: 00012b37 .word 0x00012b37 f428: 0000ff35 .word 0x0000ff35 0000f42c : { f42c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} f430: b082 sub sp, #8 f432: 4604 mov r4, r0 if(LV_GC_ROOT(_lv_img_cache_array) != NULL) { f434: 4b21 ldr r3, [pc, #132] ; (f4bc ) f436: 681b ldr r3, [r3, #0] f438: b133 cbz r3, f448 lv_img_cache_invalidate_src(NULL); f43a: 2000 movs r0, #0 f43c: 4b20 ldr r3, [pc, #128] ; (f4c0 ) f43e: 4798 blx r3 lv_mem_free(LV_GC_ROOT(_lv_img_cache_array)); f440: 4b1e ldr r3, [pc, #120] ; (f4bc ) f442: 6818 ldr r0, [r3, #0] f444: 4b1f ldr r3, [pc, #124] ; (f4c4 ) f446: 4798 blx r3 LV_GC_ROOT(_lv_img_cache_array) = lv_mem_alloc(sizeof(lv_img_cache_entry_t) * new_entry_cnt); f448: eb04 00c4 add.w r0, r4, r4, lsl #3 f44c: 0080 lsls r0, r0, #2 f44e: 4b1e ldr r3, [pc, #120] ; (f4c8 ) f450: 4798 blx r3 f452: 4b1a ldr r3, [pc, #104] ; (f4bc ) f454: 6018 str r0, [r3, #0] LV_ASSERT_MEM(LV_GC_ROOT(_lv_img_cache_array)); f456: 4b1d ldr r3, [pc, #116] ; (f4cc ) f458: 4798 blx r3 f45a: b1e8 cbz r0, f498 if(LV_GC_ROOT(_lv_img_cache_array) == NULL) { f45c: 4b17 ldr r3, [pc, #92] ; (f4bc ) f45e: 681b ldr r3, [r3, #0] f460: b343 cbz r3, f4b4 entry_cnt = new_entry_cnt; f462: 4b1b ldr r3, [pc, #108] ; (f4d0 ) f464: 801c strh r4, [r3, #0] for(i = 0; i < entry_cnt; i++) { f466: b1a4 cbz r4, f492 f468: 2400 movs r4, #0 _lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i].dec_dsc, sizeof(lv_img_decoder_dsc_t)); f46a: 4f14 ldr r7, [pc, #80] ; (f4bc ) f46c: 4e19 ldr r6, [pc, #100] ; (f4d4 ) for(i = 0; i < entry_cnt; i++) { f46e: 4698 mov r8, r3 _lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i].dec_dsc, sizeof(lv_img_decoder_dsc_t)); f470: eb04 05c4 add.w r5, r4, r4, lsl #3 f474: 00ad lsls r5, r5, #2 f476: 6838 ldr r0, [r7, #0] f478: 2120 movs r1, #32 f47a: 4428 add r0, r5 f47c: 47b0 blx r6 _lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i], sizeof(lv_img_cache_entry_t)); f47e: 6838 ldr r0, [r7, #0] f480: 2124 movs r1, #36 ; 0x24 f482: 4428 add r0, r5 f484: 47b0 blx r6 for(i = 0; i < entry_cnt; i++) { f486: 3401 adds r4, #1 f488: b2a4 uxth r4, r4 f48a: f8b8 3000 ldrh.w r3, [r8] f48e: 42a3 cmp r3, r4 f490: d8ee bhi.n f470 } f492: b002 add sp, #8 f494: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} LV_ASSERT_MEM(LV_GC_ROOT(_lv_img_cache_array)); f498: 4b0f ldr r3, [pc, #60] ; (f4d8 ) f49a: 9300 str r3, [sp, #0] f49c: 22a8 movs r2, #168 ; 0xa8 f49e: 490f ldr r1, [pc, #60] ; (f4dc ) f4a0: 2003 movs r0, #3 f4a2: 4c0f ldr r4, [pc, #60] ; (f4e0 ) f4a4: 47a0 blx r4 f4a6: 4b05 ldr r3, [pc, #20] ; (f4bc ) f4a8: 681a ldr r2, [r3, #0] f4aa: 2300 movs r3, #0 f4ac: 480d ldr r0, [pc, #52] ; (f4e4 ) f4ae: 490e ldr r1, [pc, #56] ; (f4e8 ) f4b0: 4788 blx r1 f4b2: e7fe b.n f4b2 entry_cnt = 0; f4b4: 2200 movs r2, #0 f4b6: 4b06 ldr r3, [pc, #24] ; (f4d0 ) f4b8: 801a strh r2, [r3, #0] return; f4ba: e7ea b.n f492 f4bc: 20006d58 .word 0x20006d58 f4c0: 0000f3c5 .word 0x0000f3c5 f4c4: 000124c5 .word 0x000124c5 f4c8: 000123dd .word 0x000123dd f4cc: 000022b1 .word 0x000022b1 f4d0: 20002b58 .word 0x20002b58 f4d4: 00012b37 .word 0x00012b37 f4d8: 00025148 .word 0x00025148 f4dc: 00025160 .word 0x00025160 f4e0: 0001225d .word 0x0001225d f4e4: 00023fd8 .word 0x00023fd8 f4e8: 000022b9 .word 0x000022b9 0000f4ec : * @param src the image source: pointer to an `lv_img_dsc_t` variable, a file path or a symbol * @param header store the image data here * @return LV_RES_OK: the info is successfully stored in `header`; LV_RES_INV: unknown format or other error. */ lv_res_t lv_img_decoder_built_in_info(lv_img_decoder_t * decoder, const void * src, lv_img_header_t * header) { f4ec: b530 push {r4, r5, lr} f4ee: b087 sub sp, #28 f4f0: 460c mov r4, r1 f4f2: 4615 mov r5, r2 (void)decoder; /*Unused*/ lv_img_src_t src_type = lv_img_src_get_type(src); f4f4: 4608 mov r0, r1 f4f6: 4b33 ldr r3, [pc, #204] ; (f5c4 ) f4f8: 4798 blx r3 if(src_type == LV_IMG_SRC_VARIABLE) { f4fa: b9d8 cbnz r0, f534 lv_img_cf_t cf = ((lv_img_dsc_t *)src)->header.cf; f4fc: 7823 ldrb r3, [r4, #0] f4fe: f3c3 0304 ubfx r3, r3, #0, #5 if(cf < CF_BUILT_IN_FIRST || cf > CF_BUILT_IN_LAST) return LV_RES_INV; f502: 3b04 subs r3, #4 f504: b2db uxtb r3, r3 f506: 2b0a cmp r3, #10 f508: d859 bhi.n f5be header->w = ((lv_img_dsc_t *)src)->header.w; f50a: 6823 ldr r3, [r4, #0] f50c: f3c3 238a ubfx r3, r3, #10, #11 f510: 682a ldr r2, [r5, #0] f512: f363 2294 bfi r2, r3, #10, #11 f516: 602a str r2, [r5, #0] header->h = ((lv_img_dsc_t *)src)->header.h; f518: 8863 ldrh r3, [r4, #2] f51a: f3c3 134a ubfx r3, r3, #5, #11 f51e: 886a ldrh r2, [r5, #2] f520: f363 124f bfi r2, r3, #5, #11 f524: 806a strh r2, [r5, #2] header->cf = ((lv_img_dsc_t *)src)->header.cf; f526: 7822 ldrb r2, [r4, #0] f528: 782b ldrb r3, [r5, #0] f52a: f362 0304 bfi r3, r2, #0, #5 f52e: 702b strb r3, [r5, #0] } else { LV_LOG_WARN("Image get info found unknown src type"); return LV_RES_INV; } return LV_RES_OK; f530: 2001 movs r0, #1 f532: e00d b.n f550 else if(src_type == LV_IMG_SRC_FILE) { f534: 2801 cmp r0, #1 f536: d00d beq.n f554 else if(src_type == LV_IMG_SRC_SYMBOL) { f538: 2802 cmp r0, #2 f53a: d032 beq.n f5a2 LV_LOG_WARN("Image get info found unknown src type"); f53c: 4b22 ldr r3, [pc, #136] ; (f5c8 ) f53e: 9300 str r3, [sp, #0] f540: 4b22 ldr r3, [pc, #136] ; (f5cc ) f542: f44f 729a mov.w r2, #308 ; 0x134 f546: 4922 ldr r1, [pc, #136] ; (f5d0 ) f548: 2002 movs r0, #2 f54a: 4c22 ldr r4, [pc, #136] ; (f5d4 ) f54c: 47a0 blx r4 return LV_RES_INV; f54e: 2000 movs r0, #0 } f550: b007 add sp, #28 f552: bd30 pop {r4, r5, pc} res = lv_fs_open(&file, src, LV_FS_MODE_RD); f554: 2202 movs r2, #2 f556: 4621 mov r1, r4 f558: a804 add r0, sp, #16 f55a: 4b1f ldr r3, [pc, #124] ; (f5d8 ) f55c: 4798 blx r3 if(res == LV_FS_RES_OK) { f55e: b138 cbz r0, f570 if(header->cf < CF_BUILT_IN_FIRST || header->cf > CF_BUILT_IN_LAST) return LV_RES_INV; f560: 782b ldrb r3, [r5, #0] f562: 331c adds r3, #28 f564: f003 031f and.w r3, r3, #31 f568: 2b0a cmp r3, #10 f56a: d818 bhi.n f59e return LV_RES_OK; f56c: 2001 movs r0, #1 f56e: e7ef b.n f550 res = lv_fs_read(&file, header, sizeof(lv_img_header_t), &rn); f570: ab03 add r3, sp, #12 f572: 2204 movs r2, #4 f574: 4629 mov r1, r5 f576: a804 add r0, sp, #16 f578: 4c18 ldr r4, [pc, #96] ; (f5dc ) f57a: 47a0 blx r4 f57c: 4604 mov r4, r0 lv_fs_close(&file); f57e: a804 add r0, sp, #16 f580: 4b17 ldr r3, [pc, #92] ; (f5e0 ) f582: 4798 blx r3 if(res != LV_FS_RES_OK || rn != sizeof(lv_img_header_t)) { f584: b914 cbnz r4, f58c f586: 9b03 ldr r3, [sp, #12] f588: 2b04 cmp r3, #4 f58a: d0e9 beq.n f560 LV_LOG_WARN("Image get info get read file header"); f58c: 4b15 ldr r3, [pc, #84] ; (f5e4 ) f58e: 9300 str r3, [sp, #0] f590: 4b0e ldr r3, [pc, #56] ; (f5cc ) f592: f240 1221 movw r2, #289 ; 0x121 f596: 490e ldr r1, [pc, #56] ; (f5d0 ) f598: 2002 movs r0, #2 f59a: 4c0e ldr r4, [pc, #56] ; (f5d4 ) f59c: 47a0 blx r4 return LV_RES_INV; f59e: 2000 movs r0, #0 f5a0: e7d6 b.n f550 header->w = 1; f5a2: 682b ldr r3, [r5, #0] f5a4: 2001 movs r0, #1 f5a6: f360 2394 bfi r3, r0, #10, #11 f5aa: 602b str r3, [r5, #0] header->h = 1; f5ac: 0c1a lsrs r2, r3, #16 f5ae: f360 124f bfi r2, r0, #5, #11 f5b2: 806a strh r2, [r5, #2] header->cf = LV_IMG_CF_ALPHA_1BIT; f5b4: 220b movs r2, #11 f5b6: f362 0304 bfi r3, r2, #0, #5 f5ba: 702b strb r3, [r5, #0] f5bc: e7c8 b.n f550 if(cf < CF_BUILT_IN_FIRST || cf > CF_BUILT_IN_LAST) return LV_RES_INV; f5be: 2000 movs r0, #0 f5c0: e7c6 b.n f550 f5c2: bf00 nop f5c4: 00009969 .word 0x00009969 f5c8: 0002536c .word 0x0002536c f5cc: 0002524c .word 0x0002524c f5d0: 00025318 .word 0x00025318 f5d4: 0001225d .word 0x0001225d f5d8: 00011d4d .word 0x00011d4d f5dc: 00011cbd .word 0x00011cbd f5e0: 00011c8d .word 0x00011c8d f5e4: 00025348 .word 0x00025348 0000f5e8 : * Close the pending decoding. Free resources etc. * @param decoder pointer to the decoder the function associated with * @param dsc pointer to decoder descriptor */ void lv_img_decoder_built_in_close(lv_img_decoder_t * decoder, lv_img_decoder_dsc_t * dsc) { f5e8: b538 push {r3, r4, r5, lr} (void)decoder; /*Unused*/ lv_img_decoder_built_in_data_t * user_data = dsc->user_data; f5ea: 69cc ldr r4, [r1, #28] if(user_data) { f5ec: b1a4 cbz r4, f618 f5ee: 460d mov r5, r1 #if LV_USE_FILESYSTEM if(user_data->f) { f5f0: 6820 ldr r0, [r4, #0] f5f2: b120 cbz r0, f5fe lv_fs_close(user_data->f); f5f4: 4b09 ldr r3, [pc, #36] ; (f61c ) f5f6: 4798 blx r3 lv_mem_free(user_data->f); f5f8: 6820 ldr r0, [r4, #0] f5fa: 4b09 ldr r3, [pc, #36] ; (f620 ) f5fc: 4798 blx r3 } #endif if(user_data->palette) lv_mem_free(user_data->palette); f5fe: 6860 ldr r0, [r4, #4] f600: b108 cbz r0, f606 f602: 4b07 ldr r3, [pc, #28] ; (f620 ) f604: 4798 blx r3 if(user_data->opa) lv_mem_free(user_data->opa); f606: 68a0 ldr r0, [r4, #8] f608: b108 cbz r0, f60e f60a: 4b05 ldr r3, [pc, #20] ; (f620 ) f60c: 4798 blx r3 lv_mem_free(user_data); f60e: 4620 mov r0, r4 f610: 4b03 ldr r3, [pc, #12] ; (f620 ) f612: 4798 blx r3 dsc->user_data = NULL; f614: 2300 movs r3, #0 f616: 61eb str r3, [r5, #28] f618: bd38 pop {r3, r4, r5, pc} f61a: bf00 nop f61c: 00011c8d .word 0x00011c8d f620: 000124c5 .word 0x000124c5 0000f624 : { f624: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} f628: b085 sub sp, #20 f62a: 4605 mov r5, r0 f62c: 460c mov r4, r1 if(dsc->src_type == LV_IMG_SRC_FILE) { f62e: 7a8b ldrb r3, [r1, #10] f630: 2b01 cmp r3, #1 f632: d016 beq.n f662 else if(dsc->src_type == LV_IMG_SRC_VARIABLE) { f634: 2b00 cmp r3, #0 f636: f040 81aa bne.w f98e if(((lv_img_dsc_t *)dsc->src)->data == NULL) { f63a: 684b ldr r3, [r1, #4] f63c: 689b ldr r3, [r3, #8] f63e: 2b00 cmp r3, #0 f640: f000 81a3 beq.w f98a lv_img_cf_t cf = dsc->header.cf; f644: 7b08 ldrb r0, [r1, #12] f646: f000 001f and.w r0, r0, #31 if(cf == LV_IMG_CF_TRUE_COLOR || cf == LV_IMG_CF_TRUE_COLOR_ALPHA || cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED) { f64a: 1f03 subs r3, r0, #4 f64c: b2db uxtb r3, r3 f64e: 2b02 cmp r3, #2 f650: f200 8085 bhi.w f75e dsc->img_data = ((lv_img_dsc_t *)dsc->src)->data; f654: 6863 ldr r3, [r4, #4] f656: 689b ldr r3, [r3, #8] f658: 6123 str r3, [r4, #16] return LV_RES_OK; f65a: 2001 movs r0, #1 } f65c: b005 add sp, #20 f65e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} if(strcmp(lv_fs_get_ext(dsc->src), "bin")) return LV_RES_INV; f662: 6848 ldr r0, [r1, #4] f664: 4b96 ldr r3, [pc, #600] ; (f8c0 ) f666: 4798 blx r3 f668: 4996 ldr r1, [pc, #600] ; (f8c4 ) f66a: 4b97 ldr r3, [pc, #604] ; (f8c8 ) f66c: 4798 blx r3 f66e: 2800 cmp r0, #0 f670: d12a bne.n f6c8 lv_fs_res_t res = lv_fs_open(&f, dsc->src, LV_FS_MODE_RD); f672: 2202 movs r2, #2 f674: 6861 ldr r1, [r4, #4] f676: a802 add r0, sp, #8 f678: 4b94 ldr r3, [pc, #592] ; (f8cc ) f67a: 4798 blx r3 if(res != LV_FS_RES_OK) { f67c: b9d8 cbnz r0, f6b6 if(dsc->user_data == NULL) { f67e: 69e3 ldr r3, [r4, #28] f680: b323 cbz r3, f6cc lv_img_decoder_built_in_data_t * user_data = dsc->user_data; f682: 69e6 ldr r6, [r4, #28] user_data->f = lv_mem_alloc(sizeof(f)); f684: 2008 movs r0, #8 f686: 4b92 ldr r3, [pc, #584] ; (f8d0 ) f688: 4798 blx r3 f68a: 6030 str r0, [r6, #0] LV_ASSERT_MEM(user_data->f); f68c: 4b91 ldr r3, [pc, #580] ; (f8d4 ) f68e: 4798 blx r3 f690: 2800 cmp r0, #0 f692: d040 beq.n f716 if(user_data->f == NULL) { f694: 6833 ldr r3, [r6, #0] f696: 2b00 cmp r3, #0 f698: d14b bne.n f732 LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); f69a: 4b8f ldr r3, [pc, #572] ; (f8d8 ) f69c: 9300 str r3, [sp, #0] f69e: 4b8f ldr r3, [pc, #572] ; (f8dc ) f6a0: f240 125f movw r2, #351 ; 0x15f f6a4: 498e ldr r1, [pc, #568] ; (f8e0 ) f6a6: 2003 movs r0, #3 f6a8: 4e8e ldr r6, [pc, #568] ; (f8e4 ) f6aa: 47b0 blx r6 lv_img_decoder_built_in_close(decoder, dsc); f6ac: 4621 mov r1, r4 f6ae: 4628 mov r0, r5 f6b0: 4b8d ldr r3, [pc, #564] ; (f8e8 ) f6b2: 4798 blx r3 return LV_RES_INV; f6b4: e008 b.n f6c8 LV_LOG_WARN("Built-in image decoder can't open the file"); f6b6: 4b8d ldr r3, [pc, #564] ; (f8ec ) f6b8: 9300 str r3, [sp, #0] f6ba: 4b88 ldr r3, [pc, #544] ; (f8dc ) f6bc: f44f 72a6 mov.w r2, #332 ; 0x14c f6c0: 4987 ldr r1, [pc, #540] ; (f8e0 ) f6c2: 2002 movs r0, #2 f6c4: 4c87 ldr r4, [pc, #540] ; (f8e4 ) f6c6: 47a0 blx r4 if(strcmp(lv_fs_get_ext(dsc->src), "bin")) return LV_RES_INV; f6c8: 2000 movs r0, #0 f6ca: e7c7 b.n f65c dsc->user_data = lv_mem_alloc(sizeof(lv_img_decoder_built_in_data_t)); f6cc: 200c movs r0, #12 f6ce: 4b80 ldr r3, [pc, #512] ; (f8d0 ) f6d0: 4798 blx r3 f6d2: 61e0 str r0, [r4, #28] LV_ASSERT_MEM(dsc->user_data); f6d4: 4b7f ldr r3, [pc, #508] ; (f8d4 ) f6d6: 4798 blx r3 f6d8: b968 cbnz r0, f6f6 f6da: 4b80 ldr r3, [pc, #512] ; (f8dc ) f6dc: 9300 str r3, [sp, #0] f6de: f240 1253 movw r2, #339 ; 0x153 f6e2: 497f ldr r1, [pc, #508] ; (f8e0 ) f6e4: 2003 movs r0, #3 f6e6: 4d7f ldr r5, [pc, #508] ; (f8e4 ) f6e8: 47a8 blx r5 f6ea: 69e2 ldr r2, [r4, #28] f6ec: 2300 movs r3, #0 f6ee: 4880 ldr r0, [pc, #512] ; (f8f0 ) f6f0: 4980 ldr r1, [pc, #512] ; (f8f4 ) f6f2: 4788 blx r1 f6f4: e7fe b.n f6f4 if(dsc->user_data == NULL) { f6f6: 69e0 ldr r0, [r4, #28] f6f8: b948 cbnz r0, f70e LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); f6fa: 4b77 ldr r3, [pc, #476] ; (f8d8 ) f6fc: 9300 str r3, [sp, #0] f6fe: 4b77 ldr r3, [pc, #476] ; (f8dc ) f700: f240 1255 movw r2, #341 ; 0x155 f704: 4976 ldr r1, [pc, #472] ; (f8e0 ) f706: 2003 movs r0, #3 f708: 4c76 ldr r4, [pc, #472] ; (f8e4 ) f70a: 47a0 blx r4 return LV_RES_INV; f70c: e7dc b.n f6c8 _lv_memset_00(dsc->user_data, sizeof(lv_img_decoder_built_in_data_t)); f70e: 210c movs r1, #12 f710: 4b79 ldr r3, [pc, #484] ; (f8f8 ) f712: 4798 blx r3 f714: e7b5 b.n f682 LV_ASSERT_MEM(user_data->f); f716: 4b71 ldr r3, [pc, #452] ; (f8dc ) f718: 9300 str r3, [sp, #0] f71a: f240 125d movw r2, #349 ; 0x15d f71e: 4970 ldr r1, [pc, #448] ; (f8e0 ) f720: 2003 movs r0, #3 f722: 4c70 ldr r4, [pc, #448] ; (f8e4 ) f724: 47a0 blx r4 f726: 6832 ldr r2, [r6, #0] f728: 2300 movs r3, #0 f72a: 4871 ldr r0, [pc, #452] ; (f8f0 ) f72c: 4971 ldr r1, [pc, #452] ; (f8f4 ) f72e: 4788 blx r1 f730: e7fe b.n f730 f732: f10d 0207 add.w r2, sp, #7 f736: f103 0108 add.w r1, r3, #8 f73a: f812 0f01 ldrb.w r0, [r2, #1]! f73e: f803 0b01 strb.w r0, [r3], #1 while(len) { f742: 428b cmp r3, r1 f744: d1f9 bne.n f73a lv_img_cf_t cf = dsc->header.cf; f746: 7b20 ldrb r0, [r4, #12] f748: f000 001f and.w r0, r0, #31 if(cf == LV_IMG_CF_TRUE_COLOR || cf == LV_IMG_CF_TRUE_COLOR_ALPHA || cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED) { f74c: 1f03 subs r3, r0, #4 f74e: b2db uxtb r3, r3 f750: 2b02 cmp r3, #2 f752: d804 bhi.n f75e if(dsc->src_type == LV_IMG_SRC_VARIABLE) { f754: 7aa3 ldrb r3, [r4, #10] f756: 2b00 cmp r3, #0 f758: f43f af7c beq.w f654 f75c: e11f b.n f99e else if(cf == LV_IMG_CF_INDEXED_1BIT || cf == LV_IMG_CF_INDEXED_2BIT || cf == LV_IMG_CF_INDEXED_4BIT || f75e: 1fc3 subs r3, r0, #7 f760: b2db uxtb r3, r3 f762: 2b03 cmp r3, #3 f764: d909 bls.n f77a else if(cf == LV_IMG_CF_ALPHA_1BIT || cf == LV_IMG_CF_ALPHA_2BIT || cf == LV_IMG_CF_ALPHA_4BIT || f766: f1a0 030b sub.w r3, r0, #11 f76a: b2db uxtb r3, r3 f76c: 2b03 cmp r3, #3 f76e: f200 80fd bhi.w f96c dsc->img_data = NULL; f772: 2300 movs r3, #0 f774: 6123 str r3, [r4, #16] return LV_RES_OK; /*Nothing to process*/ f776: 2001 movs r0, #1 f778: e770 b.n f65c uint8_t px_size = lv_img_cf_get_px_size(cf); f77a: 4b60 ldr r3, [pc, #384] ; (f8fc ) f77c: 4798 blx r3 f77e: 4607 mov r7, r0 if(dsc->user_data == NULL) { f780: 69e3 ldr r3, [r4, #28] f782: b1bb cbz r3, f7b4 lv_img_decoder_built_in_data_t * user_data = dsc->user_data; f784: 69e6 ldr r6, [r4, #28] user_data->palette = lv_mem_alloc(palette_size * sizeof(lv_color_t)); f786: 2002 movs r0, #2 f788: 40b8 lsls r0, r7 f78a: 4b51 ldr r3, [pc, #324] ; (f8d0 ) f78c: 4798 blx r3 f78e: 6070 str r0, [r6, #4] LV_ASSERT_MEM(user_data->palette); f790: 4b50 ldr r3, [pc, #320] ; (f8d4 ) f792: 4798 blx r3 f794: 2800 cmp r0, #0 f796: d137 bne.n f808 f798: 4b50 ldr r3, [pc, #320] ; (f8dc ) f79a: 9300 str r3, [sp, #0] f79c: f240 1297 movw r2, #407 ; 0x197 f7a0: 494f ldr r1, [pc, #316] ; (f8e0 ) f7a2: 2003 movs r0, #3 f7a4: 4c4f ldr r4, [pc, #316] ; (f8e4 ) f7a6: 47a0 blx r4 f7a8: 6872 ldr r2, [r6, #4] f7aa: 2300 movs r3, #0 f7ac: 4850 ldr r0, [pc, #320] ; (f8f0 ) f7ae: 4951 ldr r1, [pc, #324] ; (f8f4 ) f7b0: 4788 blx r1 f7b2: e7fe b.n f7b2 dsc->user_data = lv_mem_alloc(sizeof(lv_img_decoder_built_in_data_t)); f7b4: 200c movs r0, #12 f7b6: 4b46 ldr r3, [pc, #280] ; (f8d0 ) f7b8: 4798 blx r3 f7ba: 61e0 str r0, [r4, #28] LV_ASSERT_MEM(dsc->user_data); f7bc: 4b45 ldr r3, [pc, #276] ; (f8d4 ) f7be: 4798 blx r3 f7c0: b968 cbnz r0, f7de f7c2: 4b46 ldr r3, [pc, #280] ; (f8dc ) f7c4: 9300 str r3, [sp, #0] f7c6: f44f 72c6 mov.w r2, #396 ; 0x18c f7ca: 4945 ldr r1, [pc, #276] ; (f8e0 ) f7cc: 2003 movs r0, #3 f7ce: 4d45 ldr r5, [pc, #276] ; (f8e4 ) f7d0: 47a8 blx r5 f7d2: 69e2 ldr r2, [r4, #28] f7d4: 2300 movs r3, #0 f7d6: 4846 ldr r0, [pc, #280] ; (f8f0 ) f7d8: 4946 ldr r1, [pc, #280] ; (f8f4 ) f7da: 4788 blx r1 f7dc: e7fe b.n f7dc if(dsc->user_data == NULL) { f7de: 69e0 ldr r0, [r4, #28] f7e0: b970 cbnz r0, f800 LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); f7e2: 4b3d ldr r3, [pc, #244] ; (f8d8 ) f7e4: 9300 str r3, [sp, #0] f7e6: 4b3d ldr r3, [pc, #244] ; (f8dc ) f7e8: f44f 72c7 mov.w r2, #398 ; 0x18e f7ec: 493c ldr r1, [pc, #240] ; (f8e0 ) f7ee: 2003 movs r0, #3 f7f0: 4e3c ldr r6, [pc, #240] ; (f8e4 ) f7f2: 47b0 blx r6 lv_img_decoder_built_in_close(decoder, dsc); f7f4: 4621 mov r1, r4 f7f6: 4628 mov r0, r5 f7f8: 4b3b ldr r3, [pc, #236] ; (f8e8 ) f7fa: 4798 blx r3 return LV_RES_INV; f7fc: 2000 movs r0, #0 f7fe: e72d b.n f65c _lv_memset_00(dsc->user_data, sizeof(lv_img_decoder_built_in_data_t)); f800: 210c movs r1, #12 f802: 4b3d ldr r3, [pc, #244] ; (f8f8 ) f804: 4798 blx r3 f806: e7bd b.n f784 uint32_t palette_size = 1 << px_size; f808: 2301 movs r3, #1 f80a: fa03 f707 lsl.w r7, r3, r7 user_data->opa = lv_mem_alloc(palette_size * sizeof(lv_opa_t)); f80e: 4638 mov r0, r7 f810: 4b2f ldr r3, [pc, #188] ; (f8d0 ) f812: 4798 blx r3 f814: 60b0 str r0, [r6, #8] LV_ASSERT_MEM(user_data->opa); f816: 4b2f ldr r3, [pc, #188] ; (f8d4 ) f818: 4798 blx r3 f81a: 2800 cmp r0, #0 f81c: d032 beq.n f884 if(user_data->palette == NULL || user_data->opa == NULL) { f81e: 6873 ldr r3, [r6, #4] f820: 2b00 cmp r3, #0 f822: d03d beq.n f8a0 f824: 68b3 ldr r3, [r6, #8] f826: 2b00 cmp r3, #0 f828: d03a beq.n f8a0 if(dsc->src_type == LV_IMG_SRC_FILE) { f82a: 7aa3 ldrb r3, [r4, #10] f82c: 2b01 cmp r3, #1 f82e: d067 beq.n f900 lv_color32_t * palette_p = (lv_color32_t *)((lv_img_dsc_t *)dsc->src)->data; f830: 6863 ldr r3, [r4, #4] f832: 689a ldr r2, [r3, #8] for(i = 0; i < palette_size; i++) { f834: 2f00 cmp r7, #0 f836: f000 8095 beq.w f964 f83a: 2300 movs r3, #0 user_data->palette[i] = lv_color_make(palette_p[i].ch.red, palette_p[i].ch.green, palette_p[i].ch.blue); f83c: 6870 ldr r0, [r6, #4] f83e: eb00 0c43 add.w ip, r0, r3, lsl #1 #define LV_COLOR_MAKE(r8, g8, b8) ((lv_color_t){{b8, g8, r8, 0xff}}) /*Fix 0xff alpha*/ #endif static inline lv_color_t lv_color_make(uint8_t r, uint8_t g, uint8_t b) { return LV_COLOR_MAKE(r, g, b); f842: f892 e001 ldrb.w lr, [r2, #1] f846: ea4f 0e9e mov.w lr, lr, lsr #2 f84a: 7895 ldrb r5, [r2, #2] f84c: 08ed lsrs r5, r5, #3 f84e: 7811 ldrb r1, [r2, #0] f850: 08c9 lsrs r1, r1, #3 f852: f810 8013 ldrb.w r8, [r0, r3, lsl #1] f856: f361 0804 bfi r8, r1, #0, #5 f85a: f800 8013 strb.w r8, [r0, r3, lsl #1] f85e: f830 1013 ldrh.w r1, [r0, r3, lsl #1] f862: f36e 114a bfi r1, lr, #5, #6 f866: f820 1013 strh.w r1, [r0, r3, lsl #1] f86a: 0a09 lsrs r1, r1, #8 f86c: f365 01c7 bfi r1, r5, #3, #5 f870: f88c 1001 strb.w r1, [ip, #1] user_data->opa[i] = palette_p[i].ch.alpha; f874: 78d0 ldrb r0, [r2, #3] f876: 68b1 ldr r1, [r6, #8] f878: 54c8 strb r0, [r1, r3] for(i = 0; i < palette_size; i++) { f87a: 3301 adds r3, #1 f87c: 3204 adds r2, #4 f87e: 429f cmp r7, r3 f880: d1dc bne.n f83c f882: e06f b.n f964 LV_ASSERT_MEM(user_data->opa); f884: 4b15 ldr r3, [pc, #84] ; (f8dc ) f886: 9300 str r3, [sp, #0] f888: f240 1299 movw r2, #409 ; 0x199 f88c: 4914 ldr r1, [pc, #80] ; (f8e0 ) f88e: 2003 movs r0, #3 f890: 4c14 ldr r4, [pc, #80] ; (f8e4 ) f892: 47a0 blx r4 f894: 68b2 ldr r2, [r6, #8] f896: 2300 movs r3, #0 f898: 4815 ldr r0, [pc, #84] ; (f8f0 ) f89a: 4916 ldr r1, [pc, #88] ; (f8f4 ) f89c: 4788 blx r1 f89e: e7fe b.n f89e LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); f8a0: 4b0d ldr r3, [pc, #52] ; (f8d8 ) f8a2: 9300 str r3, [sp, #0] f8a4: 4b0d ldr r3, [pc, #52] ; (f8dc ) f8a6: f240 129b movw r2, #411 ; 0x19b f8aa: 490d ldr r1, [pc, #52] ; (f8e0 ) f8ac: 2003 movs r0, #3 f8ae: 4e0d ldr r6, [pc, #52] ; (f8e4 ) f8b0: 47b0 blx r6 lv_img_decoder_built_in_close(decoder, dsc); f8b2: 4621 mov r1, r4 f8b4: 4628 mov r0, r5 f8b6: 4b0c ldr r3, [pc, #48] ; (f8e8 ) f8b8: 4798 blx r3 return LV_RES_INV; f8ba: 2000 movs r0, #0 f8bc: e6ce b.n f65c f8be: bf00 nop f8c0: 00011e21 .word 0x00011e21 f8c4: 00025394 .word 0x00025394 f8c8: 0001b4fb .word 0x0001b4fb f8cc: 00011d4d .word 0x00011d4d f8d0: 000123dd .word 0x000123dd f8d4: 000022b1 .word 0x000022b1 f8d8: 000253c4 .word 0x000253c4 f8dc: 0002526c .word 0x0002526c f8e0: 00025318 .word 0x00025318 f8e4: 0001225d .word 0x0001225d f8e8: 0000f5e9 .word 0x0000f5e9 f8ec: 00025398 .word 0x00025398 f8f0: 00023fd8 .word 0x00023fd8 f8f4: 000022b9 .word 0x000022b9 f8f8: 00012b37 .word 0x00012b37 f8fc: 00009681 .word 0x00009681 lv_fs_seek(user_data->f, 4); /*Skip the header*/ f900: 2104 movs r1, #4 f902: 6830 ldr r0, [r6, #0] f904: 4b28 ldr r3, [pc, #160] ; (f9a8 ) f906: 4798 blx r3 for(i = 0; i < palette_size; i++) { f908: b367 cbz r7, f964 f90a: 2500 movs r5, #0 lv_fs_read(user_data->f, &cur_color, sizeof(lv_color32_t), NULL); f90c: 46a9 mov r9, r5 f90e: f8df 80b0 ldr.w r8, [pc, #176] ; f9c0 f912: 464b mov r3, r9 f914: 2204 movs r2, #4 f916: a902 add r1, sp, #8 f918: 6830 ldr r0, [r6, #0] f91a: 47c0 blx r8 user_data->palette[i] = lv_color_make(cur_color.ch.red, cur_color.ch.green, cur_color.ch.blue); f91c: 6872 ldr r2, [r6, #4] f91e: eb02 0e45 add.w lr, r2, r5, lsl #1 f922: f89d 0009 ldrb.w r0, [sp, #9] f926: 0880 lsrs r0, r0, #2 f928: f89d 100a ldrb.w r1, [sp, #10] f92c: 08c9 lsrs r1, r1, #3 f92e: f89d 3008 ldrb.w r3, [sp, #8] f932: 08db lsrs r3, r3, #3 f934: f812 c015 ldrb.w ip, [r2, r5, lsl #1] f938: f363 0c04 bfi ip, r3, #0, #5 f93c: f802 c015 strb.w ip, [r2, r5, lsl #1] f940: f832 3015 ldrh.w r3, [r2, r5, lsl #1] f944: f360 134a bfi r3, r0, #5, #6 f948: f822 3015 strh.w r3, [r2, r5, lsl #1] f94c: 0a1b lsrs r3, r3, #8 f94e: f361 03c7 bfi r3, r1, #3, #5 f952: f88e 3001 strb.w r3, [lr, #1] user_data->opa[i] = cur_color.ch.alpha; f956: f89d 200b ldrb.w r2, [sp, #11] f95a: 68b3 ldr r3, [r6, #8] f95c: 555a strb r2, [r3, r5] for(i = 0; i < palette_size; i++) { f95e: 3501 adds r5, #1 f960: 42af cmp r7, r5 f962: d1d6 bne.n f912 dsc->img_data = NULL; f964: 2300 movs r3, #0 f966: 6123 str r3, [r4, #16] return LV_RES_OK; f968: 2001 movs r0, #1 f96a: e677 b.n f65c lv_img_decoder_built_in_close(decoder, dsc); f96c: 4621 mov r1, r4 f96e: 4628 mov r0, r5 f970: 4b0e ldr r3, [pc, #56] ; (f9ac ) f972: 4798 blx r3 LV_LOG_WARN("Image decoder open: unknown color format") f974: 4b0e ldr r3, [pc, #56] ; (f9b0 ) f976: 9300 str r3, [sp, #0] f978: 4b0e ldr r3, [pc, #56] ; (f9b4 ) f97a: f240 12d3 movw r2, #467 ; 0x1d3 f97e: 490e ldr r1, [pc, #56] ; (f9b8 ) f980: 2002 movs r0, #2 f982: 4c0e ldr r4, [pc, #56] ; (f9bc ) f984: 47a0 blx r4 return LV_RES_INV; f986: 2000 movs r0, #0 f988: e668 b.n f65c return LV_RES_INV; f98a: 2000 movs r0, #0 f98c: e666 b.n f65c lv_img_cf_t cf = dsc->header.cf; f98e: 7b08 ldrb r0, [r1, #12] f990: f000 001f and.w r0, r0, #31 if(cf == LV_IMG_CF_TRUE_COLOR || cf == LV_IMG_CF_TRUE_COLOR_ALPHA || cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED) { f994: 1f03 subs r3, r0, #4 f996: b2db uxtb r3, r3 f998: 2b02 cmp r3, #2 f99a: f63f aee0 bhi.w f75e dsc->img_data = NULL; f99e: 2300 movs r3, #0 f9a0: 6123 str r3, [r4, #16] return LV_RES_OK; f9a2: 2001 movs r0, #1 f9a4: e65a b.n f65c f9a6: bf00 nop f9a8: 00011cf9 .word 0x00011cf9 f9ac: 0000f5e9 .word 0x0000f5e9 f9b0: 000253f0 .word 0x000253f0 f9b4: 0002526c .word 0x0002526c f9b8: 00025318 .word 0x00025318 f9bc: 0001225d .word 0x0001225d f9c0: 00011cbd .word 0x00011cbd 0000f9c4 : { f9c4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} f9c8: b08b sub sp, #44 ; 0x2c f9ca: 460d mov r5, r1 f9cc: 4614 mov r4, r2 f9ce: 469a mov sl, r3 f9d0: f9bd 6050 ldrsh.w r6, [sp, #80] ; 0x50 if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA || f9d4: 7b0b ldrb r3, [r1, #12] f9d6: f003 031f and.w r3, r3, #31 f9da: 1f1a subs r2, r3, #4 f9dc: b2d2 uxtb r2, r2 f9de: 2a02 cmp r2, #2 f9e0: d845 bhi.n fa6e if(dsc->src_type == LV_IMG_SRC_FILE) { f9e2: 7a8b ldrb r3, [r1, #10] f9e4: 2b01 cmp r3, #1 f9e6: d003 beq.n f9f0 lv_res_t res = LV_RES_INV; f9e8: 2000 movs r0, #0 } f9ea: b00b add sp, #44 ; 0x2c f9ec: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} static lv_res_t lv_img_decoder_built_in_line_true_color(lv_img_decoder_dsc_t * dsc, lv_coord_t x, lv_coord_t y, lv_coord_t len, uint8_t * buf) { #if LV_USE_FILESYSTEM lv_img_decoder_built_in_data_t * user_data = dsc->user_data; f9f0: f8d1 801c ldr.w r8, [r1, #28] lv_fs_res_t res; uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf); f9f4: 7b08 ldrb r0, [r1, #12] f9f6: f000 001f and.w r0, r0, #31 f9fa: 4b9e ldr r3, [pc, #632] ; (fc74 ) f9fc: 4798 blx r3 f9fe: 4607 mov r7, r0 uint32_t pos = ((y * dsc->header.w + x) * px_size) >> 3; fa00: 68e9 ldr r1, [r5, #12] fa02: f3c1 218a ubfx r1, r1, #10, #11 fa06: fb0a 4101 mla r1, sl, r1, r4 fa0a: fb00 f101 mul.w r1, r0, r1 fa0e: 10c9 asrs r1, r1, #3 pos += 4; /*Skip the header*/ res = lv_fs_seek(user_data->f, pos); fa10: 3104 adds r1, #4 fa12: f8d8 0000 ldr.w r0, [r8] fa16: 4b98 ldr r3, [pc, #608] ; (fc78 ) fa18: 4798 blx r3 if(res != LV_FS_RES_OK) { fa1a: b9d8 cbnz r0, fa54 LV_LOG_WARN("Built-in image decoder seek failed"); return LV_RES_INV; } uint32_t btr = len * (px_size >> 3); fa1c: f3c7 07c7 ubfx r7, r7, #3, #8 fa20: fb06 f607 mul.w r6, r6, r7 uint32_t br = 0; fa24: ab0a add r3, sp, #40 ; 0x28 fa26: 2200 movs r2, #0 fa28: f843 2d10 str.w r2, [r3, #-16]! lv_fs_read(user_data->f, buf, btr, &br); fa2c: 4632 mov r2, r6 fa2e: 9915 ldr r1, [sp, #84] ; 0x54 fa30: f8d8 0000 ldr.w r0, [r8] fa34: 4c91 ldr r4, [pc, #580] ; (fc7c ) fa36: 47a0 blx r4 if(res != LV_FS_RES_OK || btr != br) { fa38: 9b06 ldr r3, [sp, #24] fa3a: 429e cmp r6, r3 fa3c: d015 beq.n fa6a LV_LOG_WARN("Built-in image decoder read failed"); fa3e: 4b90 ldr r3, [pc, #576] ; (fc80 ) fa40: 9300 str r3, [sp, #0] fa42: 4b90 ldr r3, [pc, #576] ; (fc84 ) fa44: f240 2235 movw r2, #565 ; 0x235 fa48: 498f ldr r1, [pc, #572] ; (fc88 ) fa4a: 2002 movs r0, #2 fa4c: 4c8f ldr r4, [pc, #572] ; (fc8c ) fa4e: 47a0 blx r4 return LV_RES_INV; fa50: 2000 movs r0, #0 fa52: e7ca b.n f9ea LV_LOG_WARN("Built-in image decoder seek failed"); fa54: 4b8e ldr r3, [pc, #568] ; (fc90 ) fa56: 9300 str r3, [sp, #0] fa58: 4b8a ldr r3, [pc, #552] ; (fc84 ) fa5a: f240 222e movw r2, #558 ; 0x22e fa5e: 498a ldr r1, [pc, #552] ; (fc88 ) fa60: 2002 movs r0, #2 fa62: 4c8a ldr r4, [pc, #552] ; (fc8c ) fa64: 47a0 blx r4 return LV_RES_INV; fa66: 2000 movs r0, #0 fa68: e7bf b.n f9ea } return LV_RES_OK; fa6a: 2001 movs r0, #1 fa6c: e7bd b.n f9ea dsc->header.cf == LV_IMG_CF_ALPHA_4BIT || dsc->header.cf == LV_IMG_CF_ALPHA_8BIT) { fa6e: f1a3 020b sub.w r2, r3, #11 else if(dsc->header.cf == LV_IMG_CF_ALPHA_1BIT || dsc->header.cf == LV_IMG_CF_ALPHA_2BIT || fa72: b2d2 uxtb r2, r2 fa74: 2a03 cmp r2, #3 fa76: d90f bls.n fa98 dsc->header.cf == LV_IMG_CF_INDEXED_4BIT || dsc->header.cf == LV_IMG_CF_INDEXED_8BIT) { fa78: 3b07 subs r3, #7 else if(dsc->header.cf == LV_IMG_CF_INDEXED_1BIT || dsc->header.cf == LV_IMG_CF_INDEXED_2BIT || fa7a: b2db uxtb r3, r3 fa7c: 2b03 cmp r3, #3 fa7e: f240 80df bls.w fc40 LV_LOG_WARN("Built-in image decoder read not supports the color format"); fa82: 4b84 ldr r3, [pc, #528] ; (fc94 ) fa84: 9300 str r3, [sp, #0] fa86: 4b84 ldr r3, [pc, #528] ; (fc98 ) fa88: f44f 72fe mov.w r2, #508 ; 0x1fc fa8c: 497e ldr r1, [pc, #504] ; (fc88 ) fa8e: 2002 movs r0, #2 fa90: 4c7e ldr r4, [pc, #504] ; (fc8c ) fa92: 47a0 blx r4 return LV_RES_INV; fa94: 2000 movs r0, #0 fa96: e7a8 b.n f9ea static lv_res_t lv_img_decoder_built_in_line_alpha(lv_img_decoder_dsc_t * dsc, lv_coord_t x, lv_coord_t y, lv_coord_t len, uint8_t * buf) { #if LV_IMG_CF_ALPHA const lv_opa_t alpha1_opa_table[2] = {0, 255}; /*Opacity mapping with bpp = 1 (Just for compatibility)*/ fa98: 2200 movs r2, #0 fa9a: f88d 2010 strb.w r2, [sp, #16] fa9e: 23ff movs r3, #255 ; 0xff faa0: f88d 3011 strb.w r3, [sp, #17] const lv_opa_t alpha2_opa_table[4] = {0, 85, 170, 255}; /*Opacity mapping with bpp = 2*/ faa4: f88d 2014 strb.w r2, [sp, #20] faa8: 2255 movs r2, #85 ; 0x55 faaa: f88d 2015 strb.w r2, [sp, #21] faae: 22aa movs r2, #170 ; 0xaa fab0: f88d 2016 strb.w r2, [sp, #22] fab4: f88d 3017 strb.w r3, [sp, #23] const lv_opa_t alpha4_opa_table[16] = {0, 17, 34, 51, /*Opacity mapping with bpp = 4*/ fab8: 4b78 ldr r3, [pc, #480] ; (fc9c ) faba: cb0f ldmia r3, {r0, r1, r2, r3} fabc: af0a add r7, sp, #40 ; 0x28 fabe: e907 000f stmdb r7, {r0, r1, r2, r3} 68, 85, 102, 119, 136, 153, 170, 187, 204, 221, 238, 255 }; /*Simply fill the buffer with the color. Later only the alpha value will be modified.*/ lv_color_t bg_color = dsc->color; fac2: 8929 ldrh r1, [r5, #8] lv_coord_t i; for(i = 0; i < len; i++) { fac4: 2e00 cmp r6, #0 fac6: dd0c ble.n fae2 #if LV_COLOR_DEPTH == 8 || LV_COLOR_DEPTH == 1 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = bg_color.full; #elif LV_COLOR_DEPTH == 16 /*Because of Alpha byte 16 bit color can start on odd address which can cause crash*/ buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = bg_color.full & 0xFF; buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + 1] = (bg_color.full >> 8) & 0xFF; fac8: 0a08 lsrs r0, r1, #8 faca: 9b15 ldr r3, [sp, #84] ; 0x54 facc: 1e72 subs r2, r6, #1 face: b292 uxth r2, r2 fad0: 3201 adds r2, #1 fad2: eb02 0242 add.w r2, r2, r2, lsl #1 fad6: 441a add r2, r3 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = bg_color.full & 0xFF; fad8: 7019 strb r1, [r3, #0] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + 1] = (bg_color.full >> 8) & 0xFF; fada: 7058 strb r0, [r3, #1] fadc: 3303 adds r3, #3 for(i = 0; i < len; i++) { fade: 429a cmp r2, r3 fae0: d1fa bne.n fad8 #error "Invalid LV_COLOR_DEPTH. Check it in lv_conf.h" #endif } const lv_opa_t * opa_table = NULL; uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf); fae2: 7b28 ldrb r0, [r5, #12] fae4: f000 001f and.w r0, r0, #31 fae8: 4b62 ldr r3, [pc, #392] ; (fc74 ) faea: 4798 blx r3 faec: 4680 mov r8, r0 uint16_t mask = (1 << px_size) - 1; /*E.g. px_size = 2; mask = 0x03*/ faee: 2701 movs r7, #1 faf0: 4087 lsls r7, r0 faf2: 3f01 subs r7, #1 faf4: b2bf uxth r7, r7 lv_coord_t w = 0; uint32_t ofs = 0; int8_t pos = 0; switch(dsc->header.cf) { faf6: 7b2b ldrb r3, [r5, #12] faf8: f003 031f and.w r3, r3, #31 fafc: 3b0b subs r3, #11 fafe: 2b03 cmp r3, #3 fb00: f200 8083 bhi.w fc0a fb04: e8df f003 tbb [pc, r3] fb08: 76614c02 .word 0x76614c02 case LV_IMG_CF_ALPHA_1BIT: w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ fb0c: 68eb ldr r3, [r5, #12] fb0e: f3c3 238a ubfx r3, r3, #10, #11 fb12: 10da asrs r2, r3, #3 if(dsc->header.w & 0x7) w++; fb14: f013 0f07 tst.w r3, #7 w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ fb18: bf0c ite eq fb1a: fa0f fb82 sxtheq.w fp, r2 if(dsc->header.w & 0x7) w++; fb1e: f102 0b01 addne.w fp, r2, #1 ofs += w * y + (x >> 3); /*First pixel*/ fb22: 10e3 asrs r3, r4, #3 fb24: fb0a 3a0b mla sl, sl, fp, r3 pos = 7 - (x & 0x7); fb28: 43e4 mvns r4, r4 fb2a: f004 0407 and.w r4, r4, #7 opa_table = alpha1_opa_table; fb2e: f10d 0910 add.w r9, sp, #16 pos = 0; break; } #if LV_USE_FILESYSTEM lv_img_decoder_built_in_data_t * user_data = dsc->user_data; fb32: 69eb ldr r3, [r5, #28] fb34: 9303 str r3, [sp, #12] uint8_t * fs_buf = _lv_mem_buf_get(w); fb36: 4658 mov r0, fp fb38: 4b59 ldr r3, [pc, #356] ; (fca0 ) fb3a: 4798 blx r3 fb3c: 9002 str r0, [sp, #8] #endif const uint8_t * data_tmp = NULL; if(dsc->src_type == LV_IMG_SRC_VARIABLE) { fb3e: 7aab ldrb r3, [r5, #10] fb40: 2b00 cmp r3, #0 fb42: d16b bne.n fc1c const lv_img_dsc_t * img_dsc = dsc->src; data_tmp = img_dsc->data + ofs; fb44: 686b ldr r3, [r5, #4] fb46: 689b ldr r3, [r3, #8] fb48: 449a add sl, r3 data_tmp = NULL; /*To avoid warnings*/ return LV_RES_INV; #endif } for(i = 0; i < len; i++) { fb4a: 2e00 cmp r6, #0 fb4c: dd23 ble.n fb96 fb4e: 9a15 ldr r2, [sp, #84] ; 0x54 fb50: 1e71 subs r1, r6, #1 fb52: b289 uxth r1, r1 fb54: 3101 adds r1, #1 fb56: eb01 0141 add.w r1, r1, r1, lsl #1 fb5a: 4411 add r1, r2 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = dsc->header.cf == LV_IMG_CF_ALPHA_8BIT ? val_act : opa_table[val_act]; pos -= px_size; if(pos < 0) { pos = 8 - px_size; fb5c: f1c8 0008 rsb r0, r8, #8 fb60: b240 sxtb r0, r0 uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; fb62: f89a 3000 ldrb.w r3, [sl] fb66: fa07 f604 lsl.w r6, r7, r4 fb6a: 4033 ands r3, r6 fb6c: 4123 asrs r3, r4 dsc->header.cf == LV_IMG_CF_ALPHA_8BIT ? val_act : opa_table[val_act]; fb6e: 7b2e ldrb r6, [r5, #12] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = fb70: f006 061f and.w r6, r6, #31 fb74: 2e0e cmp r6, #14 uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; fb76: b2db uxtb r3, r3 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = fb78: bf18 it ne fb7a: f819 3003 ldrbne.w r3, [r9, r3] fb7e: 7093 strb r3, [r2, #2] pos -= px_size; fb80: eba4 0408 sub.w r4, r4, r8 fb84: b264 sxtb r4, r4 if(pos < 0) { fb86: 2c00 cmp r4, #0 pos = 8 - px_size; fb88: bfbc itt lt fb8a: 4604 movlt r4, r0 data_tmp++; fb8c: f10a 0a01 addlt.w sl, sl, #1 fb90: 3203 adds r2, #3 for(i = 0; i < len; i++) { fb92: 428a cmp r2, r1 fb94: d1e5 bne.n fb62 } } #if LV_USE_FILESYSTEM _lv_mem_buf_release(fs_buf); fb96: 9802 ldr r0, [sp, #8] fb98: 4b42 ldr r3, [pc, #264] ; (fca4 ) fb9a: 4798 blx r3 res = lv_img_decoder_built_in_line_alpha(dsc, x, y, len, buf); fb9c: 2001 movs r0, #1 fb9e: e724 b.n f9ea w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ fba0: 68eb ldr r3, [r5, #12] fba2: f3c3 238a ubfx r3, r3, #10, #11 fba6: 109a asrs r2, r3, #2 if(dsc->header.w & 0x3) w++; fba8: f013 0f03 tst.w r3, #3 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ fbac: bf0c ite eq fbae: fa0f fb82 sxtheq.w fp, r2 if(dsc->header.w & 0x3) w++; fbb2: f102 0b01 addne.w fp, r2, #1 ofs += w * y + (x >> 2); /*First pixel*/ fbb6: 10a3 asrs r3, r4, #2 fbb8: fb0a 3a0b mla sl, sl, fp, r3 pos = 6 - ((x & 0x3) * 2); fbbc: 43e4 mvns r4, r4 fbbe: f004 0403 and.w r4, r4, #3 fbc2: 0064 lsls r4, r4, #1 opa_table = alpha2_opa_table; fbc4: f10d 0914 add.w r9, sp, #20 fbc8: e7b3 b.n fb32 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ fbca: 68eb ldr r3, [r5, #12] fbcc: f3c3 238a ubfx r3, r3, #10, #11 fbd0: 105a asrs r2, r3, #1 if(dsc->header.w & 0x1) w++; fbd2: f013 0f01 tst.w r3, #1 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ fbd6: bf0c ite eq fbd8: fa0f fb82 sxtheq.w fp, r2 if(dsc->header.w & 0x1) w++; fbdc: f102 0b01 addne.w fp, r2, #1 ofs += w * y + (x >> 1); /*First pixel*/ fbe0: 1063 asrs r3, r4, #1 fbe2: fb0a 3a0b mla sl, sl, fp, r3 pos = 4 - ((x & 0x1) * 4); fbe6: f014 0f01 tst.w r4, #1 fbea: d013 beq.n fc14 fbec: 2400 movs r4, #0 opa_table = alpha4_opa_table; fbee: f10d 0918 add.w r9, sp, #24 fbf2: e79e b.n fb32 w = dsc->header.w; /*E.g. x = 7 -> w = 7 (bytes)*/ fbf4: 68eb ldr r3, [r5, #12] fbf6: f3c3 238a ubfx r3, r3, #10, #11 fbfa: b29a uxth r2, r3 fbfc: fa0f fb83 sxth.w fp, r3 ofs += w * y + x; /*First pixel*/ fc00: fb0a 4a02 mla sl, sl, r2, r4 pos = 0; fc04: 2400 movs r4, #0 const lv_opa_t * opa_table = NULL; fc06: 46a1 mov r9, r4 fc08: e793 b.n fb32 int8_t pos = 0; fc0a: 2400 movs r4, #0 uint32_t ofs = 0; fc0c: 46a2 mov sl, r4 lv_coord_t w = 0; fc0e: 46a3 mov fp, r4 const lv_opa_t * opa_table = NULL; fc10: 46a1 mov r9, r4 fc12: e78e b.n fb32 pos = 4 - ((x & 0x1) * 4); fc14: 2404 movs r4, #4 opa_table = alpha4_opa_table; fc16: f10d 0918 add.w r9, sp, #24 fc1a: e78a b.n fb32 lv_fs_seek(user_data->f, ofs + 4); /*+4 to skip the header*/ fc1c: f10a 0104 add.w r1, sl, #4 fc20: 9b03 ldr r3, [sp, #12] fc22: 6818 ldr r0, [r3, #0] fc24: 4b14 ldr r3, [pc, #80] ; (fc78 ) fc26: 4798 blx r3 lv_fs_read(user_data->f, fs_buf, w, NULL); fc28: 2300 movs r3, #0 fc2a: 465a mov r2, fp fc2c: f8dd b008 ldr.w fp, [sp, #8] fc30: 4659 mov r1, fp fc32: 9803 ldr r0, [sp, #12] fc34: 6800 ldr r0, [r0, #0] fc36: f8df a044 ldr.w sl, [pc, #68] ; fc7c fc3a: 47d0 blx sl data_tmp = fs_buf; fc3c: 46da mov sl, fp fc3e: e784 b.n fb4a static lv_res_t lv_img_decoder_built_in_line_indexed(lv_img_decoder_dsc_t * dsc, lv_coord_t x, lv_coord_t y, lv_coord_t len, uint8_t * buf) { #if LV_IMG_CF_INDEXED uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf); fc40: 7b08 ldrb r0, [r1, #12] fc42: f000 001f and.w r0, r0, #31 fc46: 4b0b ldr r3, [pc, #44] ; (fc74 ) fc48: 4798 blx r3 fc4a: 4681 mov r9, r0 uint16_t mask = (1 << px_size) - 1; /*E.g. px_size = 2; mask = 0x03*/ fc4c: f04f 0801 mov.w r8, #1 fc50: fa08 f800 lsl.w r8, r8, r0 fc54: f108 38ff add.w r8, r8, #4294967295 fc58: fa1f f888 uxth.w r8, r8 lv_coord_t w = 0; int8_t pos = 0; uint32_t ofs = 0; switch(dsc->header.cf) { fc5c: 7b2b ldrb r3, [r5, #12] fc5e: f003 031f and.w r3, r3, #31 fc62: 3b07 subs r3, #7 fc64: 2b03 cmp r3, #3 fc66: f200 80a5 bhi.w fdb4 fc6a: e8df f003 tbb [pc, r3] fc6e: 681d .short 0x681d fc70: 967e .short 0x967e fc72: bf00 nop fc74: 00009681 .word 0x00009681 fc78: 00011cf9 .word 0x00011cf9 fc7c: 00011cbd .word 0x00011cbd fc80: 00025440 .word 0x00025440 fc84: 0002528c .word 0x0002528c fc88: 00025318 .word 0x00025318 fc8c: 0001225d .word 0x0001225d fc90: 0002541c .word 0x0002541c fc94: 00025464 .word 0x00025464 fc98: 000252c4 .word 0x000252c4 fc9c: 000252b4 .word 0x000252b4 fca0: 0001293d .word 0x0001293d fca4: 00012571 .word 0x00012571 case LV_IMG_CF_INDEXED_1BIT: w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ fca8: 68eb ldr r3, [r5, #12] fcaa: f3c3 238a ubfx r3, r3, #10, #11 fcae: ea4f 0be3 mov.w fp, r3, asr #3 if(dsc->header.w & 0x7) w++; fcb2: f013 0f07 tst.w r3, #7 w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ fcb6: bf0c ite eq fcb8: fa0f fb8b sxtheq.w fp, fp if(dsc->header.w & 0x7) w++; fcbc: f10b 0b01 addne.w fp, fp, #1 ofs += w * y + (x >> 3); /*First pixel*/ fcc0: 10e3 asrs r3, r4, #3 fcc2: fb0a 3a0b mla sl, sl, fp, r3 ofs += 8; /*Skip the palette*/ fcc6: f10a 0a08 add.w sl, sl, #8 pos = 7 - (x & 0x7); fcca: 43e4 mvns r4, r4 fccc: f004 0407 and.w r4, r4, #7 ofs += 1024; /*Skip the palette*/ pos = 0; break; } lv_img_decoder_built_in_data_t * user_data = dsc->user_data; fcd0: 69ef ldr r7, [r5, #28] #if LV_USE_FILESYSTEM uint8_t * fs_buf = _lv_mem_buf_get(w); fcd2: 4658 mov r0, fp fcd4: 4b41 ldr r3, [pc, #260] ; (fddc ) fcd6: 4798 blx r3 fcd8: 9002 str r0, [sp, #8] #endif const uint8_t * data_tmp = NULL; if(dsc->src_type == LV_IMG_SRC_VARIABLE) { fcda: 7aab ldrb r3, [r5, #10] fcdc: 2b00 cmp r3, #0 fcde: d16e bne.n fdbe const lv_img_dsc_t * img_dsc = dsc->src; data_tmp = img_dsc->data + ofs; fce0: 686b ldr r3, [r5, #4] fce2: 689b ldr r3, [r3, #8] fce4: 449a add sl, r3 return LV_RES_INV; #endif } lv_coord_t i; for(i = 0; i < len; i++) { fce6: 2e00 cmp r6, #0 fce8: dd24 ble.n fd34 fcea: 9a15 ldr r2, [sp, #84] ; 0x54 fcec: 1e71 subs r1, r6, #1 fcee: b289 uxth r1, r1 fcf0: 3101 adds r1, #1 fcf2: eb01 0141 add.w r1, r1, r1, lsl #1 fcf6: 4411 add r1, r2 #endif buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = user_data->opa[val_act]; pos -= px_size; if(pos < 0) { pos = 8 - px_size; fcf8: f1c9 0508 rsb r5, r9, #8 fcfc: b26d sxtb r5, r5 uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; fcfe: f89a 3000 ldrb.w r3, [sl] fd02: fa08 f004 lsl.w r0, r8, r4 fd06: 4003 ands r3, r0 fd08: 4123 asrs r3, r4 lv_color_t color = user_data->palette[val_act]; fd0a: b2db uxtb r3, r3 fd0c: 6878 ldr r0, [r7, #4] fd0e: f830 0013 ldrh.w r0, [r0, r3, lsl #1] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = color.full & 0xFF; fd12: 7010 strb r0, [r2, #0] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + 1] = (color.full >> 8) & 0xFF; fd14: 0a00 lsrs r0, r0, #8 fd16: 7050 strb r0, [r2, #1] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = user_data->opa[val_act]; fd18: 68b8 ldr r0, [r7, #8] fd1a: 5cc3 ldrb r3, [r0, r3] fd1c: 7093 strb r3, [r2, #2] pos -= px_size; fd1e: eba4 0409 sub.w r4, r4, r9 fd22: b264 sxtb r4, r4 if(pos < 0) { fd24: 2c00 cmp r4, #0 pos = 8 - px_size; fd26: bfbc itt lt fd28: 462c movlt r4, r5 data_tmp++; fd2a: f10a 0a01 addlt.w sl, sl, #1 fd2e: 3203 adds r2, #3 for(i = 0; i < len; i++) { fd30: 428a cmp r2, r1 fd32: d1e4 bne.n fcfe } } #if LV_USE_FILESYSTEM _lv_mem_buf_release(fs_buf); fd34: 9802 ldr r0, [sp, #8] fd36: 4b2a ldr r3, [pc, #168] ; (fde0 ) fd38: 4798 blx r3 res = lv_img_decoder_built_in_line_indexed(dsc, x, y, len, buf); fd3a: 2001 movs r0, #1 fd3c: e655 b.n f9ea w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ fd3e: 68eb ldr r3, [r5, #12] fd40: f3c3 238a ubfx r3, r3, #10, #11 fd44: ea4f 0ba3 mov.w fp, r3, asr #2 if(dsc->header.w & 0x3) w++; fd48: f013 0f03 tst.w r3, #3 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ fd4c: bf0c ite eq fd4e: fa0f fb8b sxtheq.w fp, fp if(dsc->header.w & 0x3) w++; fd52: f10b 0b01 addne.w fp, fp, #1 ofs += w * y + (x >> 2); /*First pixel*/ fd56: 10a3 asrs r3, r4, #2 fd58: fb0a 3a0b mla sl, sl, fp, r3 ofs += 16; /*Skip the palette*/ fd5c: f10a 0a10 add.w sl, sl, #16 pos = 6 - ((x & 0x3) * 2); fd60: 43e4 mvns r4, r4 fd62: f004 0403 and.w r4, r4, #3 fd66: 0064 lsls r4, r4, #1 fd68: e7b2 b.n fcd0 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ fd6a: 68eb ldr r3, [r5, #12] fd6c: f3c3 238a ubfx r3, r3, #10, #11 fd70: ea4f 0b63 mov.w fp, r3, asr #1 if(dsc->header.w & 0x1) w++; fd74: f013 0f01 tst.w r3, #1 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ fd78: bf0c ite eq fd7a: fa0f fb8b sxtheq.w fp, fp if(dsc->header.w & 0x1) w++; fd7e: f10b 0b01 addne.w fp, fp, #1 ofs += w * y + (x >> 1); /*First pixel*/ fd82: 1063 asrs r3, r4, #1 fd84: fb0a 3a0b mla sl, sl, fp, r3 ofs += 64; /*Skip the palette*/ fd88: f10a 0a40 add.w sl, sl, #64 ; 0x40 pos = 4 - ((x & 0x1) * 4); fd8c: f004 0401 and.w r4, r4, #1 fd90: 2c00 cmp r4, #0 fd92: bf0c ite eq fd94: 2404 moveq r4, #4 fd96: 2400 movne r4, #0 fd98: e79a b.n fcd0 w = dsc->header.w; /*E.g. x = 7 -> w = 7 (bytes)*/ fd9a: 68eb ldr r3, [r5, #12] fd9c: f3c3 2b8a ubfx fp, r3, #10, #11 fda0: fa1f f38b uxth.w r3, fp fda4: fa0f fb8b sxth.w fp, fp ofs += w * y + x; /*First pixel*/ fda8: fb0a 4a03 mla sl, sl, r3, r4 ofs += 1024; /*Skip the palette*/ fdac: f50a 6a80 add.w sl, sl, #1024 ; 0x400 pos = 0; fdb0: 2400 movs r4, #0 fdb2: e78d b.n fcd0 uint32_t ofs = 0; fdb4: f04f 0a00 mov.w sl, #0 int8_t pos = 0; fdb8: 4654 mov r4, sl lv_coord_t w = 0; fdba: 46d3 mov fp, sl fdbc: e788 b.n fcd0 lv_fs_seek(user_data->f, ofs + 4); /*+4 to skip the header*/ fdbe: f10a 0104 add.w r1, sl, #4 fdc2: 6838 ldr r0, [r7, #0] fdc4: 4b07 ldr r3, [pc, #28] ; (fde4 ) fdc6: 4798 blx r3 lv_fs_read(user_data->f, fs_buf, w, NULL); fdc8: 2300 movs r3, #0 fdca: 465a mov r2, fp fdcc: f8dd a008 ldr.w sl, [sp, #8] fdd0: 4651 mov r1, sl fdd2: 6838 ldr r0, [r7, #0] fdd4: 4d04 ldr r5, [pc, #16] ; (fde8 ) fdd6: 47a8 blx r5 fdd8: e785 b.n fce6 fdda: bf00 nop fddc: 0001293d .word 0x0001293d fde0: 00012571 .word 0x00012571 fde4: 00011cf9 .word 0x00011cf9 fde8: 00011cbd .word 0x00011cbd 0000fdec : { fdec: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} fdf0: 4681 mov r9, r0 fdf2: 460e mov r6, r1 header->always_zero = 0; fdf4: 780b ldrb r3, [r1, #0] fdf6: f36f 1347 bfc r3, #5, #3 fdfa: 700b strb r3, [r1, #0] _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { fdfc: 480f ldr r0, [pc, #60] ; (fe3c ) fdfe: 4b10 ldr r3, [pc, #64] ; (fe40 ) fe00: 4798 blx r3 fe02: b1c8 cbz r0, fe38 fe04: 4604 mov r4, r0 res = LV_RES_INV; fe06: f04f 0a00 mov.w sl, #0 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { fe0a: f8df 8030 ldr.w r8, [pc, #48] ; fe3c fe0e: 4f0d ldr r7, [pc, #52] ; (fe44 ) fe10: e005 b.n fe1e res = LV_RES_INV; fe12: 4655 mov r5, sl _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { fe14: 4621 mov r1, r4 fe16: 4640 mov r0, r8 fe18: 47b8 blx r7 fe1a: 4604 mov r4, r0 fe1c: b148 cbz r0, fe32 if(d->info_cb) { fe1e: 6823 ldr r3, [r4, #0] fe20: 2b00 cmp r3, #0 fe22: d0f6 beq.n fe12 res = d->info_cb(d, src, header); fe24: 4632 mov r2, r6 fe26: 4649 mov r1, r9 fe28: 4620 mov r0, r4 fe2a: 4798 blx r3 fe2c: 4605 mov r5, r0 if(res == LV_RES_OK) break; fe2e: 2801 cmp r0, #1 fe30: d1f0 bne.n fe14 } fe32: 4628 mov r0, r5 fe34: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} lv_res_t res = LV_RES_INV; fe38: 2500 movs r5, #0 fe3a: e7fa b.n fe32 fe3c: 20006ca4 .word 0x20006ca4 fe40: 00011fa9 .word 0x00011fa9 fe44: 00011fbd .word 0x00011fbd 0000fe48 : { fe48: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} fe4c: 4682 mov sl, r0 fe4e: 4688 mov r8, r1 dsc->color = color; fe50: 8102 strh r2, [r0, #8] dsc->src_type = lv_img_src_get_type(src); fe52: 4608 mov r0, r1 fe54: 4b26 ldr r3, [pc, #152] ; (fef0 ) fe56: 4798 blx r3 fe58: f88a 000a strb.w r0, [sl, #10] dsc->user_data = NULL; fe5c: 2300 movs r3, #0 fe5e: f8ca 301c str.w r3, [sl, #28] if(dsc->src_type == LV_IMG_SRC_FILE) { fe62: 2801 cmp r0, #1 fe64: d00d beq.n fe82 dsc->src = src; fe66: f8ca 8004 str.w r8, [sl, #4] _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { fe6a: 4822 ldr r0, [pc, #136] ; (fef4 ) fe6c: 4b22 ldr r3, [pc, #136] ; (fef8 ) fe6e: 4798 blx r3 fe70: 4604 mov r4, r0 fe72: 2800 cmp r0, #0 fe74: d036 beq.n fee4 fe76: 2500 movs r5, #0 res = d->info_cb(d, src, &dsc->header); fe78: f10a 090c add.w r9, sl, #12 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { fe7c: 4f1d ldr r7, [pc, #116] ; (fef4 ) fe7e: 4e1f ldr r6, [pc, #124] ; (fefc ) fe80: e010 b.n fea4 size_t fnlen = strlen(src); fe82: 4640 mov r0, r8 fe84: 4b1e ldr r3, [pc, #120] ; (ff00 ) fe86: 4798 blx r3 dsc->src = lv_mem_alloc(fnlen + 1); fe88: 3001 adds r0, #1 fe8a: 4b1e ldr r3, [pc, #120] ; (ff04 ) fe8c: 4798 blx r3 fe8e: f8ca 0004 str.w r0, [sl, #4] strcpy((char *)dsc->src, src); fe92: 4641 mov r1, r8 fe94: 4b1c ldr r3, [pc, #112] ; (ff08 ) fe96: 4798 blx r3 fe98: e7e7 b.n fe6a _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { fe9a: 4621 mov r1, r4 fe9c: 4638 mov r0, r7 fe9e: 47b0 blx r6 fea0: 4604 mov r4, r0 fea2: b1d8 cbz r0, fedc if(d->info_cb == NULL || d->open_cb == NULL) continue; fea4: 6823 ldr r3, [r4, #0] fea6: 2b00 cmp r3, #0 fea8: d0f7 beq.n fe9a feaa: 6862 ldr r2, [r4, #4] feac: 2a00 cmp r2, #0 feae: d0f4 beq.n fe9a res = d->info_cb(d, src, &dsc->header); feb0: 464a mov r2, r9 feb2: 4641 mov r1, r8 feb4: 4620 mov r0, r4 feb6: 4798 blx r3 feb8: 4605 mov r5, r0 if(res != LV_RES_OK) continue; feba: 2801 cmp r0, #1 febc: d1ed bne.n fe9a dsc->error_msg = NULL; febe: 2300 movs r3, #0 fec0: f8ca 3018 str.w r3, [sl, #24] dsc->img_data = NULL; fec4: f8ca 3010 str.w r3, [sl, #16] dsc->decoder = d; fec8: f8ca 4000 str.w r4, [sl] res = d->open_cb(d, dsc); fecc: 6863 ldr r3, [r4, #4] fece: 4651 mov r1, sl fed0: 4620 mov r0, r4 fed2: 4798 blx r3 fed4: 4605 mov r5, r0 if(res == LV_RES_OK) break; fed6: 2801 cmp r0, #1 fed8: d1df bne.n fe9a feda: e000 b.n fede if(res == LV_RES_INV) { fedc: b11d cbz r5, fee6 } fede: 4628 mov r0, r5 fee0: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} lv_res_t res = LV_RES_INV; fee4: 2500 movs r5, #0 _lv_memset_00(dsc, sizeof(lv_img_decoder_dsc_t)); fee6: 2120 movs r1, #32 fee8: 4650 mov r0, sl feea: 4b08 ldr r3, [pc, #32] ; (ff0c ) feec: 4798 blx r3 feee: e7f6 b.n fede fef0: 00009969 .word 0x00009969 fef4: 20006ca4 .word 0x20006ca4 fef8: 00011fa9 .word 0x00011fa9 fefc: 00011fbd .word 0x00011fbd ff00: 0001b51f .word 0x0001b51f ff04: 000123dd .word 0x000123dd ff08: 0001b50f .word 0x0001b50f ff0c: 00012b37 .word 0x00012b37 0000ff10 : { ff10: b570 push {r4, r5, r6, lr} ff12: b082 sub sp, #8 if(dsc->decoder->read_line_cb) res = dsc->decoder->read_line_cb(dsc->decoder, dsc, x, y, len, buf); ff14: 6806 ldr r6, [r0, #0] ff16: 68b4 ldr r4, [r6, #8] ff18: b154 cbz r4, ff30 ff1a: 461d mov r5, r3 ff1c: 4613 mov r3, r2 ff1e: 460a mov r2, r1 ff20: 4601 mov r1, r0 ff22: 9806 ldr r0, [sp, #24] ff24: 9001 str r0, [sp, #4] ff26: 9500 str r5, [sp, #0] ff28: 4630 mov r0, r6 ff2a: 47a0 blx r4 } ff2c: b002 add sp, #8 ff2e: bd70 pop {r4, r5, r6, pc} lv_res_t res = LV_RES_INV; ff30: 2000 movs r0, #0 ff32: e7fb b.n ff2c 0000ff34 : if(dsc->decoder) { ff34: 6803 ldr r3, [r0, #0] ff36: b183 cbz r3, ff5a { ff38: b510 push {r4, lr} ff3a: 4604 mov r4, r0 if(dsc->decoder->close_cb) dsc->decoder->close_cb(dsc->decoder, dsc); ff3c: 68da ldr r2, [r3, #12] ff3e: b112 cbz r2, ff46 ff40: 4601 mov r1, r0 ff42: 4618 mov r0, r3 ff44: 4790 blx r2 if(dsc->src_type == LV_IMG_SRC_FILE) { ff46: 7aa3 ldrb r3, [r4, #10] ff48: 2b01 cmp r3, #1 ff4a: d000 beq.n ff4e ff4c: bd10 pop {r4, pc} lv_mem_free(dsc->src); ff4e: 6860 ldr r0, [r4, #4] ff50: 4b02 ldr r3, [pc, #8] ; (ff5c ) ff52: 4798 blx r3 dsc->src = NULL; ff54: 2300 movs r3, #0 ff56: 6063 str r3, [r4, #4] } ff58: e7f8 b.n ff4c ff5a: 4770 bx lr ff5c: 000124c5 .word 0x000124c5 0000ff60 : { ff60: b530 push {r4, r5, lr} ff62: b083 sub sp, #12 decoder = _lv_ll_ins_head(&LV_GC_ROOT(_lv_img_defoder_ll)); ff64: 480d ldr r0, [pc, #52] ; (ff9c ) ff66: 4b0e ldr r3, [pc, #56] ; (ffa0 ) ff68: 4798 blx r3 ff6a: 4604 mov r4, r0 LV_ASSERT_MEM(decoder); ff6c: 4b0d ldr r3, [pc, #52] ; (ffa4 ) ff6e: 4798 blx r3 ff70: b138 cbz r0, ff82 if(decoder == NULL) return NULL; ff72: b11c cbz r4, ff7c _lv_memset_00(decoder, sizeof(lv_img_decoder_t)); ff74: 2110 movs r1, #16 ff76: 4620 mov r0, r4 ff78: 4b0b ldr r3, [pc, #44] ; (ffa8 ) ff7a: 4798 blx r3 } ff7c: 4620 mov r0, r4 ff7e: b003 add sp, #12 ff80: bd30 pop {r4, r5, pc} LV_ASSERT_MEM(decoder); ff82: 4b0a ldr r3, [pc, #40] ; (ffac ) ff84: 9300 str r3, [sp, #0] ff86: 22c9 movs r2, #201 ; 0xc9 ff88: 4909 ldr r1, [pc, #36] ; (ffb0 ) ff8a: 2003 movs r0, #3 ff8c: 4d09 ldr r5, [pc, #36] ; (ffb4 ) ff8e: 47a8 blx r5 ff90: 4622 mov r2, r4 ff92: 2300 movs r3, #0 ff94: 4808 ldr r0, [pc, #32] ; (ffb8 ) ff96: 4909 ldr r1, [pc, #36] ; (ffbc ) ff98: 4788 blx r1 ff9a: e7fe b.n ff9a ff9c: 20006ca4 .word 0x20006ca4 ffa0: 00011f11 .word 0x00011f11 ffa4: 000022b1 .word 0x000022b1 ffa8: 00012b37 .word 0x00012b37 ffac: 000252e8 .word 0x000252e8 ffb0: 00025318 .word 0x00025318 ffb4: 0001225d .word 0x0001225d ffb8: 00023fd8 .word 0x00023fd8 ffbc: 000022b9 .word 0x000022b9 0000ffc0 <_lv_img_decoder_init>: { ffc0: b510 push {r4, lr} ffc2: b082 sub sp, #8 _lv_ll_init(&LV_GC_ROOT(_lv_img_defoder_ll), sizeof(lv_img_decoder_t)); ffc4: 2110 movs r1, #16 ffc6: 4814 ldr r0, [pc, #80] ; (10018 ) ffc8: 4b14 ldr r3, [pc, #80] ; (1001c ) ffca: 4798 blx r3 decoder = lv_img_decoder_create(); ffcc: 4b14 ldr r3, [pc, #80] ; (10020 ) ffce: 4798 blx r3 if(decoder == NULL) { ffd0: b148 cbz r0, ffe6 <_lv_img_decoder_init+0x26> decoder->info_cb = info_cb; ffd2: 4a14 ldr r2, [pc, #80] ; (10024 ) ffd4: 6002 str r2, [r0, #0] decoder->open_cb = open_cb; ffd6: 4a14 ldr r2, [pc, #80] ; (10028 ) ffd8: 6042 str r2, [r0, #4] decoder->read_line_cb = read_line_cb; ffda: 4a14 ldr r2, [pc, #80] ; (1002c ) ffdc: 6082 str r2, [r0, #8] decoder->close_cb = close_cb; ffde: 4a14 ldr r2, [pc, #80] ; (10030 ) ffe0: 60c2 str r2, [r0, #12] } ffe2: b002 add sp, #8 ffe4: bd10 pop {r4, pc} LV_LOG_WARN("lv_img_decoder_init: out of memory"); ffe6: 4b13 ldr r3, [pc, #76] ; (10034 ) ffe8: 9300 str r3, [sp, #0] ffea: 4b13 ldr r3, [pc, #76] ; (10038 ) ffec: 2247 movs r2, #71 ; 0x47 ffee: 4913 ldr r1, [pc, #76] ; (1003c ) fff0: 2002 movs r0, #2 fff2: 4c13 ldr r4, [pc, #76] ; (10040 ) fff4: 47a0 blx r4 LV_ASSERT_MEM(decoder); fff6: 2000 movs r0, #0 fff8: 4b12 ldr r3, [pc, #72] ; (10044 ) fffa: 4798 blx r3 fffc: 2800 cmp r0, #0 fffe: d1f0 bne.n ffe2 <_lv_img_decoder_init+0x22> 10000: 4b0d ldr r3, [pc, #52] ; (10038 ) 10002: 9300 str r3, [sp, #0] 10004: 2248 movs r2, #72 ; 0x48 10006: 490d ldr r1, [pc, #52] ; (1003c ) 10008: 2003 movs r0, #3 1000a: 47a0 blx r4 1000c: 2200 movs r2, #0 1000e: 2300 movs r3, #0 10010: 480d ldr r0, [pc, #52] ; (10048 ) 10012: 490e ldr r1, [pc, #56] ; (1004c ) 10014: 4788 blx r1 10016: e7fe b.n 10016 10018: 20006ca4 .word 0x20006ca4 1001c: 00011ef9 .word 0x00011ef9 10020: 0000ff61 .word 0x0000ff61 10024: 0000f4ed .word 0x0000f4ed 10028: 0000f625 .word 0x0000f625 1002c: 0000f9c5 .word 0x0000f9c5 10030: 0000f5e9 .word 0x0000f5e9 10034: 000254a0 .word 0x000254a0 10038: 00025300 .word 0x00025300 1003c: 00025318 .word 0x00025318 10040: 0001225d .word 0x0001225d 10044: 000022b1 .word 0x000022b1 10048: 00023fd8 .word 0x00023fd8 1004c: 000022b9 .word 0x000022b9 00010050 : * @param font_p pointer to a font * @param letter an UNICODE character code * @return pointer to the bitmap of the letter */ const uint8_t * lv_font_get_glyph_bitmap(const lv_font_t * font_p, uint32_t letter) { 10050: b508 push {r3, lr} return font_p->get_glyph_bitmap(font_p, letter); 10052: 6843 ldr r3, [r0, #4] 10054: 4798 blx r3 } 10056: bd08 pop {r3, pc} 00010058 : * @return true: descriptor is successfully loaded into `dsc_out`. * false: the letter was not found, no data is loaded to `dsc_out` */ bool lv_font_get_glyph_dsc(const lv_font_t * font_p, lv_font_glyph_dsc_t * dsc_out, uint32_t letter, uint32_t letter_next) { 10058: b510 push {r4, lr} return font_p->get_glyph_dsc(font_p, dsc_out, letter, letter_next); 1005a: 6804 ldr r4, [r0, #0] 1005c: 47a0 blx r4 } 1005e: bd10 pop {r4, pc} 00010060 : * @param letter an UNICODE letter * @param letter_next the next letter after `letter`. Used for kerning * @return the width of the glyph */ uint16_t lv_font_get_glyph_width(const lv_font_t * font, uint32_t letter, uint32_t letter_next) { 10060: b510 push {r4, lr} 10062: b084 sub sp, #16 lv_font_glyph_dsc_t g; bool ret; ret = lv_font_get_glyph_dsc(font, &g, letter, letter_next); 10064: 4613 mov r3, r2 10066: 460a mov r2, r1 10068: a901 add r1, sp, #4 1006a: 4c04 ldr r4, [pc, #16] ; (1007c ) 1006c: 47a0 blx r4 if(ret) return g.adv_w; 1006e: b118 cbz r0, 10078 10070: f8bd 0004 ldrh.w r0, [sp, #4] else return 0; } 10074: b004 add sp, #16 10076: bd10 pop {r4, pc} else return 0; 10078: 2000 movs r0, #0 1007a: e7fb b.n 10074 1007c: 00010059 .word 0x00010059 00010080 : { const uint8_t * ref8_p = ref; const uint8_t * element8_p = element; /*If the MSB is different it will matter. If not return the diff. of the LSB*/ if(ref8_p[0] != element8_p[0]) return (int32_t)ref8_p[0] - element8_p[0]; 10080: 7803 ldrb r3, [r0, #0] 10082: 780a ldrb r2, [r1, #0] 10084: 4293 cmp r3, r2 10086: bf11 iteee ne 10088: 1a98 subne r0, r3, r2 else return (int32_t) ref8_p[1] - element8_p[1]; 1008a: 7840 ldrbeq r0, [r0, #1] 1008c: 784b ldrbeq r3, [r1, #1] 1008e: 1ac0 subeq r0, r0, r3 } 10090: 4770 bx lr 00010092 : { const uint16_t * ref16_p = ref; const uint16_t * element16_p = element; /*If the MSB is different it will matter. If not return the diff. of the LSB*/ if(ref16_p[0] != element16_p[0]) return (int32_t)ref16_p[0] - element16_p[0]; 10092: 8803 ldrh r3, [r0, #0] 10094: 880a ldrh r2, [r1, #0] 10096: 4293 cmp r3, r2 10098: bf11 iteee ne 1009a: 1a98 subne r0, r3, r2 else return (int32_t) ref16_p[1] - element16_p[1]; 1009c: 8840 ldrheq r0, [r0, #2] 1009e: 884b ldrheq r3, [r1, #2] 100a0: 1ac0 subeq r0, r0, r3 } 100a2: 4770 bx lr 000100a4 : * @retval > 0 Reference is less than element. * */ static int32_t unicode_list_compare(const void * ref, const void * element) { return ((int32_t)(*(uint16_t *)ref)) - ((int32_t)(*(uint16_t *)element)); 100a4: 8800 ldrh r0, [r0, #0] 100a6: 880b ldrh r3, [r1, #0] } 100a8: 1ac0 subs r0, r0, r3 100aa: 4770 bx lr 000100ac : if(letter == '\0') return 0; 100ac: 460b mov r3, r1 100ae: 2900 cmp r1, #0 100b0: d06c beq.n 1018c { 100b2: b5f0 push {r4, r5, r6, r7, lr} 100b4: b085 sub sp, #20 lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; 100b6: 6904 ldr r4, [r0, #16] if(letter == fdsc->last_letter) return fdsc->last_glyph_id; 100b8: 69a2 ldr r2, [r4, #24] 100ba: 4291 cmp r1, r2 100bc: d015 beq.n 100ea for(i = 0; i < fdsc->cmap_num; i++) { 100be: 8a67 ldrh r7, [r4, #18] 100c0: f3c7 0709 ubfx r7, r7, #0, #10 100c4: 2f00 cmp r7, #0 100c6: d05d beq.n 10184 uint32_t rcp = letter - fdsc->cmaps[i].range_start; 100c8: 68a1 ldr r1, [r4, #8] 100ca: 6808 ldr r0, [r1, #0] 100cc: 1a1a subs r2, r3, r0 100ce: 9203 str r2, [sp, #12] if(rcp > fdsc->cmaps[i].range_length) continue; 100d0: 8888 ldrh r0, [r1, #4] 100d2: 4282 cmp r2, r0 100d4: d80b bhi.n 100ee uint32_t rcp = letter - fdsc->cmaps[i].range_start; 100d6: 2600 movs r6, #0 100d8: 461d mov r5, r3 if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY) { 100da: 7c8b ldrb r3, [r1, #18] 100dc: b9e3 cbnz r3, 10118 glyph_id = fdsc->cmaps[i].glyph_id_start + rcp; 100de: 88c8 ldrh r0, [r1, #6] 100e0: 4410 add r0, r2 fdsc->last_letter = letter; 100e2: 61a5 str r5, [r4, #24] fdsc->last_glyph_id = glyph_id; 100e4: 61e0 str r0, [r4, #28] } 100e6: b005 add sp, #20 100e8: bdf0 pop {r4, r5, r6, r7, pc} if(letter == fdsc->last_letter) return fdsc->last_glyph_id; 100ea: 69e0 ldr r0, [r4, #28] 100ec: e7fb b.n 100e6 if(rcp > fdsc->cmaps[i].range_length) continue; 100ee: 2500 movs r5, #0 for(i = 0; i < fdsc->cmap_num; i++) { 100f0: 3501 adds r5, #1 100f2: b2ad uxth r5, r5 100f4: 42bd cmp r5, r7 100f6: da45 bge.n 10184 uint32_t rcp = letter - fdsc->cmaps[i].range_start; 100f8: eb05 0085 add.w r0, r5, r5, lsl #2 100fc: 0082 lsls r2, r0, #2 100fe: 4616 mov r6, r2 10100: eb01 0e02 add.w lr, r1, r2 10104: f851 2020 ldr.w r2, [r1, r0, lsl #2] 10108: 1a9a subs r2, r3, r2 1010a: 9203 str r2, [sp, #12] if(rcp > fdsc->cmaps[i].range_length) continue; 1010c: f8be 0004 ldrh.w r0, [lr, #4] 10110: 4282 cmp r2, r0 10112: d8ed bhi.n 100f0 uint32_t rcp = letter - fdsc->cmaps[i].range_start; 10114: 4671 mov r1, lr 10116: e7df b.n 100d8 else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL) { 10118: 2b01 cmp r3, #1 1011a: d005 beq.n 10128 else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_SPARSE_TINY) { 1011c: 2b02 cmp r3, #2 1011e: d008 beq.n 10132 else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_SPARSE_FULL) { 10120: 2b03 cmp r3, #3 10122: d018 beq.n 10156 uint32_t glyph_id = 0; 10124: 2000 movs r0, #0 10126: e7dc b.n 100e2 glyph_id = fdsc->cmaps[i].glyph_id_start + gid_ofs_8[rcp]; 10128: 68cb ldr r3, [r1, #12] 1012a: 5c9b ldrb r3, [r3, r2] 1012c: 88c8 ldrh r0, [r1, #6] 1012e: 4418 add r0, r3 10130: e7d7 b.n 100e2 uint8_t * p = _lv_utils_bsearch(&rcp, fdsc->cmaps[i].unicode_list, fdsc->cmaps[i].list_length, 10132: 8a0a ldrh r2, [r1, #16] 10134: 6889 ldr r1, [r1, #8] 10136: 4b16 ldr r3, [pc, #88] ; (10190 ) 10138: 9300 str r3, [sp, #0] 1013a: 2302 movs r3, #2 1013c: a803 add r0, sp, #12 1013e: 4f15 ldr r7, [pc, #84] ; (10194 ) 10140: 47b8 blx r7 if(p) { 10142: 4603 mov r3, r0 10144: b1d0 cbz r0, 1017c lv_uintptr_t ofs = (lv_uintptr_t)(p - (uint8_t *) fdsc->cmaps[i].unicode_list); 10146: 68a2 ldr r2, [r4, #8] 10148: 4416 add r6, r2 1014a: 68b0 ldr r0, [r6, #8] 1014c: 1a18 subs r0, r3, r0 glyph_id = fdsc->cmaps[i].glyph_id_start + ofs; 1014e: 88f3 ldrh r3, [r6, #6] 10150: eb03 0050 add.w r0, r3, r0, lsr #1 10154: e7c5 b.n 100e2 uint8_t * p = _lv_utils_bsearch(&rcp, fdsc->cmaps[i].unicode_list, fdsc->cmaps[i].list_length, 10156: 8a0a ldrh r2, [r1, #16] 10158: 6889 ldr r1, [r1, #8] 1015a: 4b0d ldr r3, [pc, #52] ; (10190 ) 1015c: 9300 str r3, [sp, #0] 1015e: 2302 movs r3, #2 10160: a803 add r0, sp, #12 10162: 4f0c ldr r7, [pc, #48] ; (10194 ) 10164: 47b8 blx r7 if(p) { 10166: b158 cbz r0, 10180 lv_uintptr_t ofs = (lv_uintptr_t)(p - (uint8_t *) fdsc->cmaps[i].unicode_list); 10168: 68a2 ldr r2, [r4, #8] 1016a: 4416 add r6, r2 1016c: 68b2 ldr r2, [r6, #8] 1016e: 1a83 subs r3, r0, r2 ofs = ofs >> 1; /*The list stores `uint16_t` so the get the index divide by 2*/ 10170: 085b lsrs r3, r3, #1 glyph_id = fdsc->cmaps[i].glyph_id_start + gid_ofs_16[ofs]; 10172: 68f2 ldr r2, [r6, #12] 10174: 5cd3 ldrb r3, [r2, r3] 10176: 88f0 ldrh r0, [r6, #6] 10178: 4418 add r0, r3 1017a: e7b2 b.n 100e2 uint32_t glyph_id = 0; 1017c: 2000 movs r0, #0 1017e: e7b0 b.n 100e2 10180: 2000 movs r0, #0 10182: e7ae b.n 100e2 fdsc->last_letter = letter; 10184: 61a3 str r3, [r4, #24] fdsc->last_glyph_id = 0; 10186: 2000 movs r0, #0 10188: 61e0 str r0, [r4, #28] return 0; 1018a: e7ac b.n 100e6 if(letter == '\0') return 0; 1018c: 4608 mov r0, r1 1018e: 4770 bx lr 10190: 000100a5 .word 0x000100a5 10194: 00014185 .word 0x00014185 00010198 : { 10198: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 1019c: b09f sub sp, #124 ; 0x7c if(unicode_letter == '\t') unicode_letter = ' '; 1019e: 2909 cmp r1, #9 lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; 101a0: 6905 ldr r5, [r0, #16] uint32_t gid = get_glyph_dsc_id(font, unicode_letter); 101a2: bf08 it eq 101a4: 2120 moveq r1, #32 101a6: 4ba0 ldr r3, [pc, #640] ; (10428 ) 101a8: 4798 blx r3 if(!gid) return NULL; 101aa: 2800 cmp r0, #0 101ac: f000 84ea beq.w 10b84 101b0: 4680 mov r8, r0 const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[gid]; 101b2: 686f ldr r7, [r5, #4] 101b4: eb07 06c0 add.w r6, r7, r0, lsl #3 if(fdsc->bitmap_format == LV_FONT_FMT_TXT_PLAIN) { 101b8: 7d2b ldrb r3, [r5, #20] 101ba: f013 0f03 tst.w r3, #3 101be: d10b bne.n 101d8 if(gdsc) return &fdsc->glyph_bitmap[gdsc->bitmap_index]; 101c0: 2e00 cmp r6, #0 101c2: f000 84e2 beq.w 10b8a 101c6: f857 3030 ldr.w r3, [r7, r0, lsl #3] 101ca: f3c3 0313 ubfx r3, r3, #0, #20 101ce: 6828 ldr r0, [r5, #0] 101d0: 4418 add r0, r3 } 101d2: b01f add sp, #124 ; 0x7c 101d4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} uint32_t gsize = gdsc->box_w * gdsc->box_h; 101d8: 7933 ldrb r3, [r6, #4] 101da: 7974 ldrb r4, [r6, #5] 101dc: fb04 f403 mul.w r4, r4, r3 if(gsize == 0) return NULL; 101e0: 2c00 cmp r4, #0 101e2: f000 84d5 beq.w 10b90 switch(fdsc->bpp) { 101e6: 7ceb ldrb r3, [r5, #19] 101e8: f3c3 0383 ubfx r3, r3, #2, #4 101ec: 3b01 subs r3, #1 101ee: 2b03 cmp r3, #3 101f0: d805 bhi.n 101fe 101f2: e8df f003 tbb [pc, r3] 101f6: 7502 .short 0x7502 101f8: 7b78 .short 0x7b78 buf_size = (gsize + 7) >> 3; 101fa: 3407 adds r4, #7 101fc: 08e4 lsrs r4, r4, #3 if(_lv_mem_get_size(decompr_buf) < buf_size) { 101fe: 4b8b ldr r3, [pc, #556] ; (1042c ) 10200: 6818 ldr r0, [r3, #0] 10202: 4b8b ldr r3, [pc, #556] ; (10430 ) 10204: 4798 blx r3 10206: 4284 cmp r4, r0 10208: d911 bls.n 1022e decompr_buf = lv_mem_realloc(decompr_buf, buf_size); 1020a: f8df 9220 ldr.w r9, [pc, #544] ; 1042c 1020e: 4621 mov r1, r4 10210: f8d9 0000 ldr.w r0, [r9] 10214: 4b87 ldr r3, [pc, #540] ; (10434 ) 10216: 4798 blx r3 10218: f8c9 0000 str.w r0, [r9] LV_ASSERT_MEM(decompr_buf); 1021c: 4b86 ldr r3, [pc, #536] ; (10438 ) 1021e: 4798 blx r3 10220: 2800 cmp r0, #0 10222: d066 beq.n 102f2 if(decompr_buf == NULL) return NULL; 10224: 4b81 ldr r3, [pc, #516] ; (1042c ) 10226: 681b ldr r3, [r3, #0] 10228: 2b00 cmp r3, #0 1022a: f000 84b4 beq.w 10b96 decompress(&fdsc->glyph_bitmap[gdsc->bitmap_index], decompr_buf, gdsc->box_w, gdsc->box_h, (uint8_t)fdsc->bpp); 1022e: f857 1038 ldr.w r1, [r7, r8, lsl #3] 10232: f3c1 0113 ubfx r1, r1, #0, #20 10236: 682b ldr r3, [r5, #0] 10238: 4419 add r1, r3 1023a: 4b7c ldr r3, [pc, #496] ; (1042c ) 1023c: f8d3 9000 ldr.w r9, [r3] 10240: 7933 ldrb r3, [r6, #4] 10242: 930c str r3, [sp, #48] ; 0x30 10244: 469b mov fp, r3 10246: b21a sxth r2, r3 10248: 4617 mov r7, r2 1024a: 9218 str r2, [sp, #96] ; 0x60 1024c: 7972 ldrb r2, [r6, #5] 1024e: 9215 str r2, [sp, #84] ; 0x54 10250: 7cea ldrb r2, [r5, #19] 10252: f3c2 0283 ubfx r2, r2, #2, #4 10256: b2d3 uxtb r3, r2 10258: 930f str r3, [sp, #60] ; 0x3c if(bpp == 3) wr_size = 4; 1025a: 2b03 cmp r3, #3 1025c: bf14 ite ne 1025e: 4618 movne r0, r3 10260: 2004 moveq r0, #4 10262: 9008 str r0, [sp, #32] rle_in = in; 10264: 4b71 ldr r3, [pc, #452] ; (1042c ) 10266: 6059 str r1, [r3, #4] rle_bpp = bpp; 10268: 721a strb r2, [r3, #8] rle_state = RLE_STATE_SINGLE; 1026a: 2200 movs r2, #0 1026c: 725a strb r2, [r3, #9] rle_rdp = 0; 1026e: 60da str r2, [r3, #12] rle_prev_v = 0; 10270: 741a strb r2, [r3, #16] rle_cnt = 0; 10272: 745a strb r2, [r3, #17] uint8_t * line_buf1 = _lv_mem_buf_get(w); 10274: 4658 mov r0, fp 10276: 4c71 ldr r4, [pc, #452] ; (1043c ) 10278: 47a0 blx r4 1027a: 9016 str r0, [sp, #88] ; 0x58 uint8_t * line_buf2 = _lv_mem_buf_get(w); 1027c: 4658 mov r0, fp 1027e: 47a0 blx r4 10280: 9017 str r0, [sp, #92] ; 0x5c for(i = 0; i < w; i++) { 10282: 2f00 cmp r7, #0 10284: f000 8251 beq.w 1072a 10288: 4b68 ldr r3, [pc, #416] ; (1042c ) 1028a: 7c19 ldrb r1, [r3, #16] 1028c: 9103 str r1, [sp, #12] 1028e: 7c5c ldrb r4, [r3, #17] ret = get_bits(rle_in, rle_rdp, rle_bpp); 10290: 685f ldr r7, [r3, #4] 10292: 68dd ldr r5, [r3, #12] 10294: f893 a008 ldrb.w sl, [r3, #8] bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 10298: 2201 movs r2, #1 1029a: fa02 f20a lsl.w r2, r2, sl 1029e: 1e51 subs r1, r2, #1 if(bit_pos + len >= 8) { 102a0: 46d0 mov r8, sl 102a2: f1ca 0608 rsb r6, sl, #8 102a6: 960a str r6, [sp, #40] ; 0x28 102a8: f1ca 0610 rsb r6, sl, #16 102ac: 9609 str r6, [sp, #36] ; 0x24 102ae: f893 c009 ldrb.w ip, [r3, #9] 102b2: 9816 ldr r0, [sp, #88] ; 0x58 102b4: f100 3eff add.w lr, r0, #4294967295 102b8: f10b 33ff add.w r3, fp, #4294967295 102bc: b29b uxth r3, r3 102be: 930d str r3, [sp, #52] ; 0x34 102c0: eb00 0b03 add.w fp, r0, r3 102c4: 4676 mov r6, lr 102c6: 2300 movs r3, #0 102c8: 9305 str r3, [sp, #20] 102ca: 9307 str r3, [sp, #28] 102cc: 461a mov r2, r3 switch(len) { 102ce: f10a 3aff add.w sl, sl, #4294967295 rle_rdp += rle_bpp; 102d2: 2301 movs r3, #1 102d4: 9304 str r3, [sp, #16] bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 102d6: b2cb uxtb r3, r1 102d8: 930b str r3, [sp, #44] ; 0x2c bit_mask = 0x3; 102da: 9206 str r2, [sp, #24] 102dc: 4661 mov r1, ip 102de: e034 b.n 1034a buf_size = (gsize + 3) >> 2; 102e0: 3403 adds r4, #3 102e2: 08a4 lsrs r4, r4, #2 break; 102e4: e78b b.n 101fe buf_size = (gsize + 1) >> 1; 102e6: 3401 adds r4, #1 102e8: 0864 lsrs r4, r4, #1 break; 102ea: e788 b.n 101fe buf_size = (gsize + 1) >> 1; 102ec: 3401 adds r4, #1 102ee: 0864 lsrs r4, r4, #1 break; 102f0: e785 b.n 101fe LV_ASSERT_MEM(decompr_buf); 102f2: 4b53 ldr r3, [pc, #332] ; (10440 ) 102f4: 9300 str r3, [sp, #0] 102f6: 2272 movs r2, #114 ; 0x72 102f8: 4952 ldr r1, [pc, #328] ; (10444 ) 102fa: 2003 movs r0, #3 102fc: 4c52 ldr r4, [pc, #328] ; (10448 ) 102fe: 47a0 blx r4 10300: f8d9 2000 ldr.w r2, [r9] 10304: 2300 movs r3, #0 10306: 4851 ldr r0, [pc, #324] ; (1044c ) 10308: 4951 ldr r1, [pc, #324] ; (10450 ) 1030a: 4788 blx r1 1030c: e7fe b.n 1030c bit_mask = 0x3; 1030e: 2003 movs r0, #3 uint32_t byte_pos = bit_pos >> 3; 10310: 08eb lsrs r3, r5, #3 bit_pos = bit_pos & 0x7; 10312: f005 0207 and.w r2, r5, #7 if(bit_pos + len >= 8) { 10316: eb02 0c08 add.w ip, r2, r8 1031a: f1bc 0f07 cmp.w ip, #7 1031e: d835 bhi.n 1038c return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 10320: f817 c003 ldrb.w ip, [r7, r3] 10324: 9b0a ldr r3, [sp, #40] ; 0x28 10326: 1a9a subs r2, r3, r2 10328: fa4c f302 asr.w r3, ip, r2 1032c: 4003 ands r3, r0 if(rle_rdp != 0 && rle_prev_v == ret) { 1032e: b115 cbz r5, 10336 10330: 9a03 ldr r2, [sp, #12] 10332: 4293 cmp r3, r2 10334: d038 beq.n 103a8 rle_rdp += rle_bpp; 10336: 4445 add r5, r8 rle_prev_v = ret; 10338: 9303 str r3, [sp, #12] rle_rdp += rle_bpp; 1033a: 2201 movs r2, #1 1033c: 9804 ldr r0, [sp, #16] 1033e: 9006 str r0, [sp, #24] out[i] = rle_next(); 10340: f806 3f01 strb.w r3, [r6, #1]! for(i = 0; i < w; i++) { 10344: 455e cmp r6, fp 10346: f000 814e beq.w 105e6 if(rle_state == RLE_STATE_SINGLE) { 1034a: bba1 cbnz r1, 103b6 switch(len) { 1034c: f1ba 0f07 cmp.w sl, #7 10350: d818 bhi.n 10384 10352: a301 add r3, pc, #4 ; (adr r3, 10358 ) 10354: f853 f02a ldr.w pc, [r3, sl, lsl #2] 10358: 00010389 .word 0x00010389 1035c: 0001030f .word 0x0001030f 10360: 00010379 .word 0x00010379 10364: 0001037d .word 0x0001037d 10368: 00010385 .word 0x00010385 1036c: 00010385 .word 0x00010385 10370: 00010385 .word 0x00010385 10374: 00010381 .word 0x00010381 bit_mask = 0x7; 10378: 2007 movs r0, #7 1037a: e7c9 b.n 10310 bit_mask = 0xF; 1037c: 200f movs r0, #15 1037e: e7c7 b.n 10310 bit_mask = 0xFF; 10380: 20ff movs r0, #255 ; 0xff 10382: e7c5 b.n 10310 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 10384: 980b ldr r0, [sp, #44] ; 0x2c 10386: e7c3 b.n 10310 bit_mask = 0x1; 10388: 2001 movs r0, #1 1038a: e7c1 b.n 10310 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 1038c: f817 c003 ldrb.w ip, [r7, r3] 10390: 443b add r3, r7 10392: 785b ldrb r3, [r3, #1] 10394: eb03 230c add.w r3, r3, ip, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 10398: fa1f fc83 uxth.w ip, r3 1039c: 9b09 ldr r3, [sp, #36] ; 0x24 1039e: 1a9a subs r2, r3, r2 103a0: fa4c f302 asr.w r3, ip, r2 103a4: 4003 ands r3, r0 103a6: e7c2 b.n 1032e if(rle_rdp != 0 && rle_prev_v == ret) { 103a8: 2201 movs r2, #1 103aa: 9205 str r2, [sp, #20] rle_cnt = 0; 103ac: 2400 movs r4, #0 if(rle_rdp != 0 && rle_prev_v == ret) { 103ae: 9a04 ldr r2, [sp, #16] 103b0: 9207 str r2, [sp, #28] rle_state = RLE_STATE_REPEATE; 103b2: 4611 mov r1, r2 103b4: e7bf b.n 10336 else if(rle_state == RLE_STATE_REPEATE) { 103b6: 2901 cmp r1, #1 103b8: d004 beq.n 103c4 else if(rle_state == RLE_STATE_COUNTER) { 103ba: 2902 cmp r1, #2 103bc: f000 80cd beq.w 1055a uint8_t ret = 0; 103c0: 2300 movs r3, #0 103c2: e7bd b.n 10340 uint32_t byte_pos = bit_pos >> 3; 103c4: 08eb lsrs r3, r5, #3 bit_pos = bit_pos & 0x7; 103c6: f005 0207 and.w r2, r5, #7 if(bit_pos + len >= 8) { 103ca: f102 0c01 add.w ip, r2, #1 103ce: f1bc 0f07 cmp.w ip, #7 103d2: d813 bhi.n 103fc return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 103d4: 5cfb ldrb r3, [r7, r3] 103d6: 43d2 mvns r2, r2 103d8: 3208 adds r2, #8 103da: 4113 asrs r3, r2 103dc: f003 0301 and.w r3, r3, #1 rle_cnt++; 103e0: 3401 adds r4, #1 103e2: b2e4 uxtb r4, r4 rle_rdp += 1; 103e4: 1c6a adds r2, r5, #1 if(v == 1) { 103e6: b9b3 cbnz r3, 10416 switch(len) { 103e8: f1ba 0f07 cmp.w sl, #7 103ec: f200 80a5 bhi.w 1053a 103f0: e8df f00a tbb [pc, sl] 103f4: 9f9d84a5 .word 0x9f9d84a5 103f8: a1a3a3a3 .word 0xa1a3a3a3 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 103fc: f817 c003 ldrb.w ip, [r7, r3] 10400: 443b add r3, r7 10402: 785b ldrb r3, [r3, #1] 10404: eb03 230c add.w r3, r3, ip, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 10408: b29b uxth r3, r3 1040a: 43d2 mvns r2, r2 1040c: 3210 adds r2, #16 1040e: 4113 asrs r3, r2 10410: f003 0301 and.w r3, r3, #1 10414: e7e4 b.n 103e0 if(rle_cnt == 11) { 10416: 2c0b cmp r4, #11 10418: d01c beq.n 10454 rle_rdp += 1; 1041a: 4615 mov r5, r2 ret = rle_prev_v; 1041c: 9b03 ldr r3, [sp, #12] if(rle_cnt == 11) { 1041e: 2201 movs r2, #1 10420: 9205 str r2, [sp, #20] 10422: 9a04 ldr r2, [sp, #16] 10424: e78c b.n 10340 10426: bf00 nop 10428: 000100ad .word 0x000100ad 1042c: 20002b5c .word 0x20002b5c 10430: 00012551 .word 0x00012551 10434: 00012899 .word 0x00012899 10438: 000022b1 .word 0x000022b1 1043c: 0001293d .word 0x0001293d 10440: 000254c4 .word 0x000254c4 10444: 000254e0 .word 0x000254e0 10448: 0001225d .word 0x0001225d 1044c: 00023fd8 .word 0x00023fd8 10450: 000022b9 .word 0x000022b9 uint32_t byte_pos = bit_pos >> 3; 10454: 08d3 lsrs r3, r2, #3 bit_pos = bit_pos & 0x7; 10456: f002 0207 and.w r2, r2, #7 if(bit_pos + len >= 8) { 1045a: 1d91 adds r1, r2, #6 1045c: 2907 cmp r1, #7 1045e: d813 bhi.n 10488 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 10460: 5cfc ldrb r4, [r7, r3] 10462: f1c2 0202 rsb r2, r2, #2 10466: fa44 f202 asr.w r2, r4, r2 1046a: f002 043f and.w r4, r2, #63 ; 0x3f rle_rdp += 6; 1046e: 3507 adds r5, #7 if(rle_cnt != 0) { 10470: 2c00 cmp r4, #0 10472: f040 80ad bne.w 105d0 switch(len) { 10476: f1ba 0f07 cmp.w sl, #7 1047a: d826 bhi.n 104ca 1047c: e8df f00a tbb [pc, sl] 10480: 211f1027 .word 0x211f1027 10484: 23252525 .word 0x23252525 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 10488: 5cf9 ldrb r1, [r7, r3] 1048a: 443b add r3, r7 1048c: 785c ldrb r4, [r3, #1] 1048e: eb04 2401 add.w r4, r4, r1, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 10492: b2a4 uxth r4, r4 10494: f1c2 020a rsb r2, r2, #10 10498: 4114 asrs r4, r2 1049a: f004 043f and.w r4, r4, #63 ; 0x3f 1049e: e7e6 b.n 1046e bit_mask = 0x3; 104a0: 2003 movs r0, #3 uint32_t byte_pos = bit_pos >> 3; 104a2: 08ea lsrs r2, r5, #3 bit_pos = bit_pos & 0x7; 104a4: f005 0307 and.w r3, r5, #7 if(bit_pos + len >= 8) { 104a8: eb03 0108 add.w r1, r3, r8 104ac: 2907 cmp r1, #7 104ae: d810 bhi.n 104d2 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 104b0: 5cba ldrb r2, [r7, r2] 104b2: 990a ldr r1, [sp, #40] ; 0x28 104b4: 1acb subs r3, r1, r3 104b6: fa42 f303 asr.w r3, r2, r3 104ba: 4003 ands r3, r0 104bc: e014 b.n 104e8 bit_mask = 0x7; 104be: 2007 movs r0, #7 104c0: e7ef b.n 104a2 bit_mask = 0xF; 104c2: 200f movs r0, #15 104c4: e7ed b.n 104a2 bit_mask = 0xFF; 104c6: 20ff movs r0, #255 ; 0xff 104c8: e7eb b.n 104a2 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 104ca: 980b ldr r0, [sp, #44] ; 0x2c 104cc: e7e9 b.n 104a2 bit_mask = 0x1; 104ce: 2001 movs r0, #1 104d0: e7e7 b.n 104a2 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 104d2: 5cb9 ldrb r1, [r7, r2] 104d4: 443a add r2, r7 104d6: 7852 ldrb r2, [r2, #1] 104d8: eb02 2201 add.w r2, r2, r1, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 104dc: b292 uxth r2, r2 104de: 9909 ldr r1, [sp, #36] ; 0x24 104e0: 1acb subs r3, r1, r3 104e2: fa42 f303 asr.w r3, r2, r3 104e6: 4003 ands r3, r0 rle_rdp += rle_bpp; 104e8: 4445 add r5, r8 rle_prev_v = ret; 104ea: 9303 str r3, [sp, #12] rle_rdp += rle_bpp; 104ec: 2201 movs r2, #1 104ee: 9205 str r2, [sp, #20] 104f0: 9804 ldr r0, [sp, #16] 104f2: 4602 mov r2, r0 104f4: 9007 str r0, [sp, #28] rle_state = RLE_STATE_SINGLE; 104f6: 2100 movs r1, #0 rle_rdp += rle_bpp; 104f8: 9006 str r0, [sp, #24] 104fa: e721 b.n 10340 bit_mask = 0x3; 104fc: 2003 movs r0, #3 uint32_t byte_pos = bit_pos >> 3; 104fe: 08d1 lsrs r1, r2, #3 bit_pos = bit_pos & 0x7; 10500: f002 0307 and.w r3, r2, #7 if(bit_pos + len >= 8) { 10504: eb03 0508 add.w r5, r3, r8 10508: 2d07 cmp r5, #7 1050a: d81a bhi.n 10542 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 1050c: 5c79 ldrb r1, [r7, r1] 1050e: 9d0a ldr r5, [sp, #40] ; 0x28 10510: 1aeb subs r3, r5, r3 10512: fa41 f303 asr.w r3, r1, r3 10516: 4003 ands r3, r0 rle_rdp += rle_bpp; 10518: eb02 0508 add.w r5, r2, r8 rle_prev_v = ret; 1051c: 9303 str r3, [sp, #12] rle_rdp += rle_bpp; 1051e: 2201 movs r2, #1 10520: 9205 str r2, [sp, #20] 10522: 9804 ldr r0, [sp, #16] 10524: 4602 mov r2, r0 10526: 9007 str r0, [sp, #28] rle_state = RLE_STATE_SINGLE; 10528: 2100 movs r1, #0 rle_rdp += rle_bpp; 1052a: 9006 str r0, [sp, #24] 1052c: e708 b.n 10340 bit_mask = 0x7; 1052e: 2007 movs r0, #7 10530: e7e5 b.n 104fe bit_mask = 0xF; 10532: 200f movs r0, #15 10534: e7e3 b.n 104fe bit_mask = 0xFF; 10536: 20ff movs r0, #255 ; 0xff 10538: e7e1 b.n 104fe bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 1053a: 980b ldr r0, [sp, #44] ; 0x2c 1053c: e7df b.n 104fe bit_mask = 0x1; 1053e: 2001 movs r0, #1 10540: e7dd b.n 104fe uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 10542: 5c7d ldrb r5, [r7, r1] 10544: 4439 add r1, r7 10546: 7849 ldrb r1, [r1, #1] 10548: eb01 2105 add.w r1, r1, r5, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 1054c: b289 uxth r1, r1 1054e: 9d09 ldr r5, [sp, #36] ; 0x24 10550: 1aeb subs r3, r5, r3 10552: fa41 f303 asr.w r3, r1, r3 10556: 4003 ands r3, r0 10558: e7de b.n 10518 rle_cnt--; 1055a: 3c01 subs r4, #1 if(rle_cnt == 0) { 1055c: f014 04ff ands.w r4, r4, #255 ; 0xff 10560: d13d bne.n 105de switch(len) { 10562: f1ba 0f07 cmp.w sl, #7 10566: d823 bhi.n 105b0 10568: e8df f00a tbb [pc, sl] 1056c: 1e1c0424 .word 0x1e1c0424 10570: 20222222 .word 0x20222222 bit_mask = 0x3; 10574: 2003 movs r0, #3 uint32_t byte_pos = bit_pos >> 3; 10576: 08ea lsrs r2, r5, #3 bit_pos = bit_pos & 0x7; 10578: f005 0307 and.w r3, r5, #7 if(bit_pos + len >= 8) { 1057c: eb03 0108 add.w r1, r3, r8 10580: 2907 cmp r1, #7 10582: d819 bhi.n 105b8 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 10584: 5cba ldrb r2, [r7, r2] 10586: 990a ldr r1, [sp, #40] ; 0x28 10588: 1acb subs r3, r1, r3 1058a: fa42 f303 asr.w r3, r2, r3 1058e: 4003 ands r3, r0 rle_rdp += rle_bpp; 10590: 4445 add r5, r8 rle_prev_v = ret; 10592: 9303 str r3, [sp, #12] rle_rdp += rle_bpp; 10594: 2201 movs r2, #1 10596: 9205 str r2, [sp, #20] 10598: 9804 ldr r0, [sp, #16] 1059a: 4602 mov r2, r0 1059c: 9007 str r0, [sp, #28] rle_state = RLE_STATE_SINGLE; 1059e: 2100 movs r1, #0 rle_rdp += rle_bpp; 105a0: 9006 str r0, [sp, #24] 105a2: e6cd b.n 10340 bit_mask = 0x7; 105a4: 2007 movs r0, #7 105a6: e7e6 b.n 10576 bit_mask = 0xF; 105a8: 200f movs r0, #15 105aa: e7e4 b.n 10576 bit_mask = 0xFF; 105ac: 20ff movs r0, #255 ; 0xff 105ae: e7e2 b.n 10576 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 105b0: 980b ldr r0, [sp, #44] ; 0x2c 105b2: e7e0 b.n 10576 bit_mask = 0x1; 105b4: 2001 movs r0, #1 105b6: e7de b.n 10576 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 105b8: 5cb9 ldrb r1, [r7, r2] 105ba: 443a add r2, r7 105bc: 7852 ldrb r2, [r2, #1] 105be: eb02 2201 add.w r2, r2, r1, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 105c2: b292 uxth r2, r2 105c4: 9909 ldr r1, [sp, #36] ; 0x24 105c6: 1acb subs r3, r1, r3 105c8: fa42 f303 asr.w r3, r2, r3 105cc: 4003 ands r3, r0 105ce: e7df b.n 10590 ret = rle_prev_v; 105d0: 9b03 ldr r3, [sp, #12] if(rle_cnt != 0) { 105d2: 2201 movs r2, #1 105d4: 9205 str r2, [sp, #20] 105d6: 9a04 ldr r2, [sp, #16] 105d8: 9207 str r2, [sp, #28] rle_state = RLE_STATE_COUNTER; 105da: 2102 movs r1, #2 105dc: e6b0 b.n 10340 ret = rle_prev_v; 105de: 9b03 ldr r3, [sp, #12] if(rle_cnt == 0) { 105e0: 2001 movs r0, #1 105e2: 9005 str r0, [sp, #20] 105e4: e6ac b.n 10340 105e6: 9806 ldr r0, [sp, #24] 105e8: 468c mov ip, r1 105ea: b9c8 cbnz r0, 10620 105ec: b10a cbz r2, 105f2 105ee: 4b9f ldr r3, [pc, #636] ; (1086c ) 105f0: 60dd str r5, [r3, #12] 105f2: 9b07 ldr r3, [sp, #28] 105f4: b113 cbz r3, 105fc 105f6: 4b9d ldr r3, [pc, #628] ; (1086c ) 105f8: f883 c009 strb.w ip, [r3, #9] 105fc: 9b05 ldr r3, [sp, #20] 105fe: b10b cbz r3, 10604 10600: 4b9a ldr r3, [pc, #616] ; (1086c ) 10602: 745c strb r4, [r3, #17] rle_rdp += rle_bpp; 10604: 2000 movs r0, #0 if(len == 3) { 10606: 9b0f ldr r3, [sp, #60] ; 0x3c 10608: 9303 str r3, [sp, #12] len = 4; 1060a: 2704 movs r7, #4 val = 15; 1060c: f04f 0c0f mov.w ip, #15 val = 13; 10610: f04f 080d mov.w r8, #13 val = 11; 10614: f04f 0a0b mov.w sl, #11 val = 9; 10618: f04f 0b09 mov.w fp, #9 val = 4; 1061c: 9704 str r7, [sp, #16] 1061e: e028 b.n 10672 10620: 4b92 ldr r3, [pc, #584] ; (1086c ) 10622: f89d 100c ldrb.w r1, [sp, #12] 10626: 7419 strb r1, [r3, #16] 10628: e7e0 b.n 105ec switch(val) { 1062a: 2907 cmp r1, #7 1062c: d83d bhi.n 106aa 1062e: e8df f001 tbb [pc, r1] 10632: 2704 .short 0x2704 10634: 33302d2a .word 0x33302d2a 10638: 3936 .short 0x3936 len = 4; 1063a: 463d mov r5, r7 val = 0; 1063c: 2100 movs r1, #0 bit_pos = bit_pos & 0x7; 1063e: f000 0207 and.w r2, r0, #7 10642: f1c2 0208 rsb r2, r2, #8 bit_pos = 8 - bit_pos - len; 10646: 1b52 subs r2, r2, r5 out[byte_pos] &= ((~bit_mask) << bit_pos); 10648: f3c0 04cf ubfx r4, r0, #3, #16 1064c: f04f 33ff mov.w r3, #4294967295 10650: 40ab lsls r3, r5 10652: f063 03ff orn r3, r3, #255 ; 0xff 10656: 4093 lsls r3, r2 10658: f819 5004 ldrb.w r5, [r9, r4] 1065c: 402b ands r3, r5 out[byte_pos] |= (val << bit_pos); 1065e: fa01 f202 lsl.w r2, r1, r2 10662: 4313 orrs r3, r2 10664: f809 3004 strb.w r3, [r9, r4] wrp += wr_size; 10668: 9a08 ldr r2, [sp, #32] 1066a: 4613 mov r3, r2 1066c: 4410 add r0, r2 for(x = 0; x < w; x++) { 1066e: 45b6 cmp lr, r6 10670: d01d beq.n 106ae bits_write(out, wrp, line_buf1[x], bpp); 10672: f81e 1f01 ldrb.w r1, [lr, #1]! if(len == 3) { 10676: 9b0f ldr r3, [sp, #60] ; 0x3c 10678: 2b03 cmp r3, #3 1067a: d0d6 beq.n 1062a 1067c: 9d03 ldr r5, [sp, #12] 1067e: e7de b.n 1063e len = 4; 10680: 463d mov r5, r7 val = 2; 10682: 2102 movs r1, #2 10684: e7db b.n 1063e len = 4; 10686: 463d mov r5, r7 val = 4; 10688: 9904 ldr r1, [sp, #16] 1068a: e7d8 b.n 1063e len = 4; 1068c: 463d mov r5, r7 val = 6; 1068e: 2106 movs r1, #6 10690: e7d5 b.n 1063e len = 4; 10692: 463d mov r5, r7 val = 9; 10694: 4659 mov r1, fp 10696: e7d2 b.n 1063e len = 4; 10698: 463d mov r5, r7 val = 11; 1069a: 4651 mov r1, sl 1069c: e7cf b.n 1063e len = 4; 1069e: 463d mov r5, r7 val = 13; 106a0: 4641 mov r1, r8 106a2: e7cc b.n 1063e len = 4; 106a4: 463d mov r5, r7 val = 15; 106a6: 4661 mov r1, ip 106a8: e7c9 b.n 1063e len = 4; 106aa: 463d mov r5, r7 106ac: e7c7 b.n 1063e 106ae: 9a0d ldr r2, [sp, #52] ; 0x34 106b0: fb02 3303 mla r3, r2, r3, r3 106b4: 930e str r3, [sp, #56] ; 0x38 for(y = 1; y < h; y++) { 106b6: 9b15 ldr r3, [sp, #84] ; 0x54 106b8: 2b01 cmp r3, #1 106ba: f340 8255 ble.w 10b68 ret = get_bits(rle_in, rle_rdp, rle_bpp); 106be: 4b6b ldr r3, [pc, #428] ; (1086c ) 106c0: f8d3 8004 ldr.w r8, [r3, #4] 106c4: 7a1a ldrb r2, [r3, #8] 106c6: 4610 mov r0, r2 106c8: 9219 str r2, [sp, #100] ; 0x64 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 106ca: 2201 movs r2, #1 106cc: fa02 f100 lsl.w r1, r2, r0 106d0: 3901 subs r1, #1 106d2: b2c9 uxtb r1, r1 106d4: 911b str r1, [sp, #108] ; 0x6c if(bit_pos + len >= 8) { 106d6: 4601 mov r1, r0 106d8: 4682 mov sl, r0 106da: 7c58 ldrb r0, [r3, #17] 106dc: 9007 str r0, [sp, #28] 106de: f1c1 0108 rsb r1, r1, #8 106e2: 910b str r1, [sp, #44] ; 0x2c 106e4: f1ca 0110 rsb r1, sl, #16 106e8: 910d str r1, [sp, #52] ; 0x34 106ea: 7c19 ldrb r1, [r3, #16] 106ec: 9103 str r1, [sp, #12] 106ee: f8d3 c00c ldr.w ip, [r3, #12] 106f2: f893 b009 ldrb.w fp, [r3, #9] 106f6: 9908 ldr r1, [sp, #32] 106f8: 9112 str r1, [sp, #72] ; 0x48 106fa: 9b0c ldr r3, [sp, #48] ; 0x30 106fc: 3b01 subs r3, #1 106fe: b29b uxth r3, r3 10700: fb01 f103 mul.w r1, r1, r3 10704: 911a str r1, [sp, #104] ; 0x68 10706: 2100 movs r1, #0 10708: 910a str r1, [sp, #40] ; 0x28 1070a: 910c str r1, [sp, #48] ; 0x30 1070c: 9106 str r1, [sp, #24] 1070e: 9108 str r1, [sp, #32] 10710: 9210 str r2, [sp, #64] ; 0x40 10712: 9a17 ldr r2, [sp, #92] ; 0x5c 10714: 18d3 adds r3, r2, r3 10716: 931c str r3, [sp, #112] ; 0x70 rle_rdp += rle_bpp; 10718: 2301 movs r3, #1 1071a: 9304 str r3, [sp, #16] if(len == 3) { 1071c: 9a0f ldr r2, [sp, #60] ; 0x3c 1071e: 9209 str r2, [sp, #36] ; 0x24 val = 4; 10720: 2204 movs r2, #4 10722: 921d str r2, [sp, #116] ; 0x74 rle_rdp += rle_bpp; 10724: 9305 str r3, [sp, #20] 10726: 4666 mov r6, ip 10728: e1f5 b.n 10b16 for(i = 0; i < w; i++) { 1072a: 2300 movs r3, #0 1072c: 930e str r3, [sp, #56] ; 0x38 1072e: e7c2 b.n 106b6 bit_mask = 0x3; 10730: f04f 0903 mov.w r9, #3 10734: e00c b.n 10750 bit_mask = 0x7; 10736: f04f 0907 mov.w r9, #7 1073a: e009 b.n 10750 bit_mask = 0xF; 1073c: f04f 090f mov.w r9, #15 10740: e006 b.n 10750 bit_mask = 0xFF; 10742: 46e1 mov r9, ip 10744: e004 b.n 10750 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 10746: f8dd 9044 ldr.w r9, [sp, #68] ; 0x44 1074a: e001 b.n 10750 bit_mask = 0x1; 1074c: f8dd 9010 ldr.w r9, [sp, #16] uint32_t byte_pos = bit_pos >> 3; 10750: 08f3 lsrs r3, r6, #3 bit_pos = bit_pos & 0x7; 10752: f006 0207 and.w r2, r6, #7 if(bit_pos + len >= 8) { 10756: eb02 0b0a add.w fp, r2, sl 1075a: f1bb 0f07 cmp.w fp, #7 1075e: d831 bhi.n 107c4 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 10760: f818 3003 ldrb.w r3, [r8, r3] 10764: 9d0b ldr r5, [sp, #44] ; 0x2c 10766: 1aaa subs r2, r5, r2 10768: fa43 f202 asr.w r2, r3, r2 1076c: ea02 0909 and.w r9, r2, r9 10770: fa5f f989 uxtb.w r9, r9 if(rle_rdp != 0 && rle_prev_v == ret) { 10774: b116 cbz r6, 1077c 10776: 9b03 ldr r3, [sp, #12] 10778: 454b cmp r3, r9 1077a: d033 beq.n 107e4 rle_rdp += rle_bpp; 1077c: 4456 add r6, sl rle_prev_v = ret; 1077e: f8cd 900c str.w r9, [sp, #12] rle_rdp += rle_bpp; 10782: 9b04 ldr r3, [sp, #16] 10784: 9306 str r3, [sp, #24] 10786: 9b05 ldr r3, [sp, #20] 10788: 9308 str r3, [sp, #32] out[i] = rle_next(); 1078a: f804 9f01 strb.w r9, [r4, #1]! for(i = 0; i < w; i++) { 1078e: 42a0 cmp r0, r4 10790: f000 815d beq.w 10a4e if(rle_state == RLE_STATE_SINGLE) { 10794: bb69 cbnz r1, 107f2 switch(len) { 10796: 9b07 ldr r3, [sp, #28] 10798: 461a mov r2, r3 1079a: 2a07 cmp r2, #7 1079c: d8d3 bhi.n 10746 1079e: a301 add r3, pc, #4 ; (adr r3, 107a4 ) 107a0: f853 f022 ldr.w pc, [r3, r2, lsl #2] 107a4: 0001074d .word 0x0001074d 107a8: 00010731 .word 0x00010731 107ac: 00010737 .word 0x00010737 107b0: 0001073d .word 0x0001073d 107b4: 00010747 .word 0x00010747 107b8: 00010747 .word 0x00010747 107bc: 00010747 .word 0x00010747 107c0: 00010743 .word 0x00010743 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 107c4: f818 b003 ldrb.w fp, [r8, r3] 107c8: 4443 add r3, r8 107ca: 785b ldrb r3, [r3, #1] 107cc: eb03 230b add.w r3, r3, fp, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 107d0: b29b uxth r3, r3 107d2: 9d0d ldr r5, [sp, #52] ; 0x34 107d4: 1aaa subs r2, r5, r2 107d6: fa43 f202 asr.w r2, r3, r2 107da: ea02 0209 and.w r2, r2, r9 107de: fa5f f982 uxtb.w r9, r2 107e2: e7c7 b.n 10774 if(rle_rdp != 0 && rle_prev_v == ret) { 107e4: 9b04 ldr r3, [sp, #16] 107e6: 930a str r3, [sp, #40] ; 0x28 rle_cnt = 0; 107e8: 4677 mov r7, lr if(rle_rdp != 0 && rle_prev_v == ret) { 107ea: 9b05 ldr r3, [sp, #20] 107ec: 930c str r3, [sp, #48] ; 0x30 rle_state = RLE_STATE_REPEATE; 107ee: 4619 mov r1, r3 107f0: e7c4 b.n 1077c else if(rle_state == RLE_STATE_REPEATE) { 107f2: 2901 cmp r1, #1 107f4: d004 beq.n 10800 else if(rle_state == RLE_STATE_COUNTER) { 107f6: 2902 cmp r1, #2 107f8: f000 80d7 beq.w 109aa uint8_t ret = 0; 107fc: 46f1 mov r9, lr 107fe: e7c4 b.n 1078a uint32_t byte_pos = bit_pos >> 3; 10800: 08f3 lsrs r3, r6, #3 bit_pos = bit_pos & 0x7; 10802: f006 0207 and.w r2, r6, #7 if(bit_pos + len >= 8) { 10806: f102 0901 add.w r9, r2, #1 1080a: f1b9 0f07 cmp.w r9, #7 1080e: d815 bhi.n 1083c return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 10810: f818 3003 ldrb.w r3, [r8, r3] 10814: 43d2 mvns r2, r2 10816: 3208 adds r2, #8 10818: 4113 asrs r3, r2 1081a: f003 0301 and.w r3, r3, #1 rle_cnt++; 1081e: 1c7a adds r2, r7, #1 10820: b2d7 uxtb r7, r2 rle_rdp += 1; 10822: 1c72 adds r2, r6, #1 if(v == 1) { 10824: b9bb cbnz r3, 10856 switch(len) { 10826: 9b07 ldr r3, [sp, #28] 10828: 4619 mov r1, r3 1082a: 2907 cmp r1, #7 1082c: f200 808e bhi.w 1094c 10830: e8df f001 tbb [pc, r1] 10834: 8886848e .word 0x8886848e 10838: 8a8c8c8c .word 0x8a8c8c8c uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 1083c: f818 9003 ldrb.w r9, [r8, r3] 10840: 4443 add r3, r8 10842: 785b ldrb r3, [r3, #1] 10844: eb03 2309 add.w r3, r3, r9, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 10848: b29b uxth r3, r3 1084a: 43d2 mvns r2, r2 1084c: 3210 adds r2, #16 1084e: 4113 asrs r3, r2 10850: f003 0301 and.w r3, r3, #1 10854: e7e3 b.n 1081e if(rle_cnt == 11) { 10856: 2f0b cmp r7, #11 10858: d00a beq.n 10870 rle_rdp += 1; 1085a: 4616 mov r6, r2 ret = rle_prev_v; 1085c: f8dd 900c ldr.w r9, [sp, #12] if(rle_cnt == 11) { 10860: 9b04 ldr r3, [sp, #16] 10862: 930a str r3, [sp, #40] ; 0x28 10864: 9b05 ldr r3, [sp, #20] 10866: 9306 str r3, [sp, #24] 10868: e78f b.n 1078a 1086a: bf00 nop 1086c: 20002b5c .word 0x20002b5c uint32_t byte_pos = bit_pos >> 3; 10870: 08d3 lsrs r3, r2, #3 bit_pos = bit_pos & 0x7; 10872: f002 0207 and.w r2, r2, #7 if(bit_pos + len >= 8) { 10876: 1d91 adds r1, r2, #6 10878: 2907 cmp r1, #7 1087a: d815 bhi.n 108a8 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 1087c: f818 3003 ldrb.w r3, [r8, r3] 10880: f1c2 0202 rsb r2, r2, #2 10884: fa43 f202 asr.w r2, r3, r2 10888: f002 073f and.w r7, r2, #63 ; 0x3f rle_rdp += 6; 1088c: 3607 adds r6, #7 if(rle_cnt != 0) { 1088e: 2f00 cmp r7, #0 10890: f040 80cf bne.w 10a32 switch(len) { 10894: 9b07 ldr r3, [sp, #28] 10896: 461a mov r2, r3 10898: 2a07 cmp r2, #7 1089a: d839 bhi.n 10910 1089c: e8df f002 tbb [pc, r2] 108a0: 3330123b .word 0x3330123b 108a4: 36383838 .word 0x36383838 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 108a8: f818 1003 ldrb.w r1, [r8, r3] 108ac: 4443 add r3, r8 108ae: 785b ldrb r3, [r3, #1] 108b0: eb03 2301 add.w r3, r3, r1, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 108b4: b29b uxth r3, r3 108b6: f1c2 020a rsb r2, r2, #10 108ba: fa43 f202 asr.w r2, r3, r2 108be: f002 073f and.w r7, r2, #63 ; 0x3f 108c2: e7e3 b.n 1088c bit_mask = 0x3; 108c4: f04f 0903 mov.w r9, #3 uint32_t byte_pos = bit_pos >> 3; 108c8: 08f3 lsrs r3, r6, #3 bit_pos = bit_pos & 0x7; 108ca: f006 0207 and.w r2, r6, #7 if(bit_pos + len >= 8) { 108ce: eb02 010a add.w r1, r2, sl 108d2: 2907 cmp r1, #7 108d4: d822 bhi.n 1091c return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 108d6: f818 3003 ldrb.w r3, [r8, r3] 108da: 990b ldr r1, [sp, #44] ; 0x2c 108dc: 1a8a subs r2, r1, r2 108de: fa43 f202 asr.w r2, r3, r2 108e2: ea02 0209 and.w r2, r2, r9 108e6: fa5f f982 uxtb.w r9, r2 rle_rdp += rle_bpp; 108ea: 4456 add r6, sl rle_prev_v = ret; 108ec: f8cd 900c str.w r9, [sp, #12] rle_rdp += rle_bpp; 108f0: 9b04 ldr r3, [sp, #16] 108f2: 930a str r3, [sp, #40] ; 0x28 108f4: 9b05 ldr r3, [sp, #20] 108f6: 930c str r3, [sp, #48] ; 0x30 rle_state = RLE_STATE_SINGLE; 108f8: 4671 mov r1, lr rle_rdp += rle_bpp; 108fa: 9306 str r3, [sp, #24] 108fc: 9308 str r3, [sp, #32] 108fe: e744 b.n 1078a bit_mask = 0x7; 10900: f04f 0907 mov.w r9, #7 10904: e7e0 b.n 108c8 bit_mask = 0xF; 10906: f04f 090f mov.w r9, #15 1090a: e7dd b.n 108c8 bit_mask = 0xFF; 1090c: 46e1 mov r9, ip 1090e: e7db b.n 108c8 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 10910: f8dd 9044 ldr.w r9, [sp, #68] ; 0x44 10914: e7d8 b.n 108c8 bit_mask = 0x1; 10916: f8dd 9010 ldr.w r9, [sp, #16] 1091a: e7d5 b.n 108c8 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 1091c: f818 1003 ldrb.w r1, [r8, r3] 10920: 4443 add r3, r8 10922: 785b ldrb r3, [r3, #1] 10924: eb03 2301 add.w r3, r3, r1, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 10928: b29b uxth r3, r3 1092a: 990d ldr r1, [sp, #52] ; 0x34 1092c: 1a8a subs r2, r1, r2 1092e: fa43 f202 asr.w r2, r3, r2 10932: ea02 0209 and.w r2, r2, r9 10936: fa5f f982 uxtb.w r9, r2 1093a: e7d6 b.n 108ea bit_mask = 0x3; 1093c: 2603 movs r6, #3 1093e: e008 b.n 10952 bit_mask = 0x7; 10940: 2607 movs r6, #7 10942: e006 b.n 10952 bit_mask = 0xF; 10944: 260f movs r6, #15 10946: e004 b.n 10952 bit_mask = 0xFF; 10948: 4666 mov r6, ip 1094a: e002 b.n 10952 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 1094c: 9e11 ldr r6, [sp, #68] ; 0x44 1094e: e000 b.n 10952 bit_mask = 0x1; 10950: 9e04 ldr r6, [sp, #16] uint32_t byte_pos = bit_pos >> 3; 10952: 08d3 lsrs r3, r2, #3 bit_pos = bit_pos & 0x7; 10954: f002 0107 and.w r1, r2, #7 if(bit_pos + len >= 8) { 10958: eb01 090a add.w r9, r1, sl 1095c: f1b9 0f07 cmp.w r9, #7 10960: d814 bhi.n 1098c return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 10962: f818 3003 ldrb.w r3, [r8, r3] 10966: 9d0b ldr r5, [sp, #44] ; 0x2c 10968: 1a69 subs r1, r5, r1 1096a: fa43 f101 asr.w r1, r3, r1 1096e: 4031 ands r1, r6 10970: fa5f f981 uxtb.w r9, r1 rle_rdp += rle_bpp; 10974: eb02 060a add.w r6, r2, sl rle_prev_v = ret; 10978: f8cd 900c str.w r9, [sp, #12] rle_rdp += rle_bpp; 1097c: 9b04 ldr r3, [sp, #16] 1097e: 930a str r3, [sp, #40] ; 0x28 10980: 9b05 ldr r3, [sp, #20] 10982: 930c str r3, [sp, #48] ; 0x30 rle_state = RLE_STATE_SINGLE; 10984: 4671 mov r1, lr rle_rdp += rle_bpp; 10986: 9306 str r3, [sp, #24] 10988: 9308 str r3, [sp, #32] 1098a: e6fe b.n 1078a uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 1098c: f818 9003 ldrb.w r9, [r8, r3] 10990: 4443 add r3, r8 10992: 785b ldrb r3, [r3, #1] 10994: eb03 2309 add.w r3, r3, r9, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 10998: b29b uxth r3, r3 1099a: 9d0d ldr r5, [sp, #52] ; 0x34 1099c: 1a69 subs r1, r5, r1 1099e: fa43 f101 asr.w r1, r3, r1 109a2: 4031 ands r1, r6 109a4: fa5f f981 uxtb.w r9, r1 109a8: e7e4 b.n 10974 rle_cnt--; 109aa: 1e7b subs r3, r7, #1 if(rle_cnt == 0) { 109ac: f013 07ff ands.w r7, r3, #255 ; 0xff 109b0: d148 bne.n 10a44 switch(len) { 109b2: 9b07 ldr r3, [sp, #28] 109b4: 461a mov r2, r3 109b6: 2a07 cmp r2, #7 109b8: d80d bhi.n 109d6 109ba: e8df f002 tbb [pc, r2] 109be: 040e .short 0x040e 109c0: 0c0c0806 .word 0x0c0c0806 109c4: 0a0c .short 0x0a0c bit_mask = 0x3; 109c6: 2103 movs r1, #3 109c8: e008 b.n 109dc bit_mask = 0x7; 109ca: 2107 movs r1, #7 109cc: e006 b.n 109dc bit_mask = 0xF; 109ce: 210f movs r1, #15 109d0: e004 b.n 109dc bit_mask = 0xFF; 109d2: 4661 mov r1, ip 109d4: e002 b.n 109dc bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 109d6: 9911 ldr r1, [sp, #68] ; 0x44 109d8: e000 b.n 109dc bit_mask = 0x1; 109da: 9904 ldr r1, [sp, #16] uint32_t byte_pos = bit_pos >> 3; 109dc: 08f3 lsrs r3, r6, #3 bit_pos = bit_pos & 0x7; 109de: f006 0207 and.w r2, r6, #7 if(bit_pos + len >= 8) { 109e2: eb02 090a add.w r9, r2, sl 109e6: f1b9 0f07 cmp.w r9, #7 109ea: d813 bhi.n 10a14 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 109ec: f818 3003 ldrb.w r3, [r8, r3] 109f0: 9d0b ldr r5, [sp, #44] ; 0x2c 109f2: 1aaa subs r2, r5, r2 109f4: fa43 f202 asr.w r2, r3, r2 109f8: 400a ands r2, r1 109fa: fa5f f982 uxtb.w r9, r2 rle_rdp += rle_bpp; 109fe: 4456 add r6, sl rle_prev_v = ret; 10a00: f8cd 900c str.w r9, [sp, #12] rle_rdp += rle_bpp; 10a04: 9b04 ldr r3, [sp, #16] 10a06: 930a str r3, [sp, #40] ; 0x28 10a08: 9b05 ldr r3, [sp, #20] 10a0a: 930c str r3, [sp, #48] ; 0x30 rle_state = RLE_STATE_SINGLE; 10a0c: 4671 mov r1, lr rle_rdp += rle_bpp; 10a0e: 9306 str r3, [sp, #24] 10a10: 9308 str r3, [sp, #32] 10a12: e6ba b.n 1078a uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 10a14: f818 9003 ldrb.w r9, [r8, r3] 10a18: 4443 add r3, r8 10a1a: 785b ldrb r3, [r3, #1] 10a1c: eb03 2309 add.w r3, r3, r9, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; 10a20: b29b uxth r3, r3 10a22: 9d0d ldr r5, [sp, #52] ; 0x34 10a24: 1aaa subs r2, r5, r2 10a26: fa43 f202 asr.w r2, r3, r2 10a2a: 400a ands r2, r1 10a2c: fa5f f982 uxtb.w r9, r2 10a30: e7e5 b.n 109fe ret = rle_prev_v; 10a32: f8dd 900c ldr.w r9, [sp, #12] if(rle_cnt != 0) { 10a36: 9b04 ldr r3, [sp, #16] 10a38: 930a str r3, [sp, #40] ; 0x28 10a3a: 9b05 ldr r3, [sp, #20] 10a3c: 930c str r3, [sp, #48] ; 0x30 rle_state = RLE_STATE_COUNTER; 10a3e: 2102 movs r1, #2 if(rle_cnt != 0) { 10a40: 9306 str r3, [sp, #24] 10a42: e6a2 b.n 1078a ret = rle_prev_v; 10a44: f8dd 900c ldr.w r9, [sp, #12] if(rle_cnt == 0) { 10a48: 9b04 ldr r3, [sp, #16] 10a4a: 930a str r3, [sp, #40] ; 0x28 10a4c: e69d b.n 1078a 10a4e: f8dd 904c ldr.w r9, [sp, #76] ; 0x4c 10a52: 9707 str r7, [sp, #28] 10a54: 9f14 ldr r7, [sp, #80] ; 0x50 10a56: 9b16 ldr r3, [sp, #88] ; 0x58 10a58: f103 3eff add.w lr, r3, #4294967295 for(i = 0; i < w; i++) { 10a5c: 9d0e ldr r5, [sp, #56] ; 0x38 val = 2; 10a5e: f8dd c03c ldr.w ip, [sp, #60] ; 0x3c 10a62: 9611 str r6, [sp, #68] ; 0x44 10a64: 9113 str r1, [sp, #76] ; 0x4c 10a66: f8dd b048 ldr.w fp, [sp, #72] ; 0x48 10a6a: e021 b.n 10ab0 switch(val) { 10a6c: 2a07 cmp r2, #7 10a6e: d840 bhi.n 10af2 10a70: e8df f002 tbb [pc, r2] 10a74: 302d2a04 .word 0x302d2a04 10a78: 3c393633 .word 0x3c393633 len = 4; 10a7c: 2304 movs r3, #4 val = 0; 10a7e: 2200 movs r2, #0 bit_pos = bit_pos & 0x7; 10a80: f005 0107 and.w r1, r5, #7 10a84: f1c1 0108 rsb r1, r1, #8 bit_pos = 8 - bit_pos - len; 10a88: 1ac9 subs r1, r1, r3 out[byte_pos] &= ((~bit_mask) << bit_pos); 10a8a: f3c5 00cf ubfx r0, r5, #3, #16 uint8_t bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 10a8e: 2601 movs r6, #1 10a90: fa06 f303 lsl.w r3, r6, r3 out[byte_pos] &= ((~bit_mask) << bit_pos); 10a94: 425b negs r3, r3 10a96: f063 03ff orn r3, r3, #255 ; 0xff 10a9a: 408b lsls r3, r1 10a9c: f819 6000 ldrb.w r6, [r9, r0] 10aa0: 4033 ands r3, r6 out[byte_pos] |= (val << bit_pos); 10aa2: 408a lsls r2, r1 10aa4: 4313 orrs r3, r2 10aa6: f809 3000 strb.w r3, [r9, r0] 10aaa: 445d add r5, fp for(x = 0; x < w; x++) { 10aac: 42bc cmp r4, r7 10aae: d022 beq.n 10af6 line_buf1[x] = line_buf2[x] ^ line_buf1[x]; 10ab0: f817 2f01 ldrb.w r2, [r7, #1]! 10ab4: f89e 3001 ldrb.w r3, [lr, #1] 10ab8: 405a eors r2, r3 10aba: f80e 2f01 strb.w r2, [lr, #1]! if(len == 3) { 10abe: f1bc 0f03 cmp.w ip, #3 10ac2: d0d3 beq.n 10a6c 10ac4: 9b09 ldr r3, [sp, #36] ; 0x24 10ac6: e7db b.n 10a80 len = 4; 10ac8: 2304 movs r3, #4 val = 2; 10aca: 2202 movs r2, #2 10acc: e7d8 b.n 10a80 len = 4; 10ace: 2304 movs r3, #4 val = 4; 10ad0: 9a1d ldr r2, [sp, #116] ; 0x74 10ad2: e7d5 b.n 10a80 len = 4; 10ad4: 2304 movs r3, #4 val = 6; 10ad6: 2206 movs r2, #6 10ad8: e7d2 b.n 10a80 len = 4; 10ada: 2304 movs r3, #4 val = 9; 10adc: 2209 movs r2, #9 10ade: e7cf b.n 10a80 len = 4; 10ae0: 2304 movs r3, #4 val = 11; 10ae2: 220b movs r2, #11 10ae4: e7cc b.n 10a80 len = 4; 10ae6: 2304 movs r3, #4 val = 13; 10ae8: 220d movs r2, #13 10aea: e7c9 b.n 10a80 len = 4; 10aec: 2304 movs r3, #4 val = 15; 10aee: 220f movs r2, #15 10af0: e7c6 b.n 10a80 len = 4; 10af2: 2304 movs r3, #4 10af4: e7c4 b.n 10a80 10af6: 9e11 ldr r6, [sp, #68] ; 0x44 10af8: f8dd b04c ldr.w fp, [sp, #76] ; 0x4c 10afc: 9b1a ldr r3, [sp, #104] ; 0x68 10afe: 9a12 ldr r2, [sp, #72] ; 0x48 10b00: 4413 add r3, r2 10b02: 9a0e ldr r2, [sp, #56] ; 0x38 10b04: 441a add r2, r3 10b06: 920e str r2, [sp, #56] ; 0x38 10b08: 9b10 ldr r3, [sp, #64] ; 0x40 10b0a: 3301 adds r3, #1 10b0c: b21b sxth r3, r3 10b0e: 9310 str r3, [sp, #64] ; 0x40 for(y = 1; y < h; y++) { 10b10: 9a15 ldr r2, [sp, #84] ; 0x54 10b12: 429a cmp r2, r3 10b14: d015 beq.n 10b42 for(i = 0; i < w; i++) { 10b16: 9b18 ldr r3, [sp, #96] ; 0x60 10b18: 2b00 cmp r3, #0 10b1a: d0f5 beq.n 10b08 10b1c: 9b17 ldr r3, [sp, #92] ; 0x5c 10b1e: 1e5f subs r7, r3, #1 10b20: 463c mov r4, r7 uint8_t ret = 0; 10b22: f04f 0e00 mov.w lr, #0 switch(len) { 10b26: 9b19 ldr r3, [sp, #100] ; 0x64 10b28: 1e5d subs r5, r3, #1 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 10b2a: 9b1b ldr r3, [sp, #108] ; 0x6c 10b2c: 9311 str r3, [sp, #68] ; 0x44 bit_mask = 0xFF; 10b2e: f04f 0cff mov.w ip, #255 ; 0xff 10b32: f8cd 904c str.w r9, [sp, #76] ; 0x4c 10b36: 4659 mov r1, fp 10b38: 9714 str r7, [sp, #80] ; 0x50 10b3a: 9f07 ldr r7, [sp, #28] 10b3c: 9507 str r5, [sp, #28] 10b3e: 981c ldr r0, [sp, #112] ; 0x70 10b40: e628 b.n 10794 10b42: 46b4 mov ip, r6 10b44: 9b08 ldr r3, [sp, #32] 10b46: b9c3 cbnz r3, 10b7a 10b48: 9b06 ldr r3, [sp, #24] 10b4a: b113 cbz r3, 10b52 10b4c: 4b13 ldr r3, [pc, #76] ; (10b9c ) 10b4e: f8c3 c00c str.w ip, [r3, #12] 10b52: 9b0c ldr r3, [sp, #48] ; 0x30 10b54: b113 cbz r3, 10b5c 10b56: 4b11 ldr r3, [pc, #68] ; (10b9c ) 10b58: f883 b009 strb.w fp, [r3, #9] 10b5c: 9b0a ldr r3, [sp, #40] ; 0x28 10b5e: b11b cbz r3, 10b68 10b60: 4b0e ldr r3, [pc, #56] ; (10b9c ) 10b62: f89d 201c ldrb.w r2, [sp, #28] 10b66: 745a strb r2, [r3, #17] _lv_mem_buf_release(line_buf1); 10b68: 9816 ldr r0, [sp, #88] ; 0x58 10b6a: 4c0d ldr r4, [pc, #52] ; (10ba0 ) 10b6c: 47a0 blx r4 _lv_mem_buf_release(line_buf2); 10b6e: 9817 ldr r0, [sp, #92] ; 0x5c 10b70: 47a0 blx r4 return decompr_buf; 10b72: 4b0a ldr r3, [pc, #40] ; (10b9c ) 10b74: 6818 ldr r0, [r3, #0] 10b76: f7ff bb2c b.w 101d2 10b7a: 4b08 ldr r3, [pc, #32] ; (10b9c ) 10b7c: f89d 200c ldrb.w r2, [sp, #12] 10b80: 741a strb r2, [r3, #16] 10b82: e7e1 b.n 10b48 if(!gid) return NULL; 10b84: 2000 movs r0, #0 10b86: f7ff bb24 b.w 101d2 return NULL; 10b8a: 2000 movs r0, #0 10b8c: f7ff bb21 b.w 101d2 if(gsize == 0) return NULL; 10b90: 2000 movs r0, #0 10b92: f7ff bb1e b.w 101d2 if(decompr_buf == NULL) return NULL; 10b96: 2000 movs r0, #0 10b98: f7ff bb1b b.w 101d2 10b9c: 20002b5c .word 0x20002b5c 10ba0: 00012571 .word 0x00012571 00010ba4 : { 10ba4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 10ba8: b084 sub sp, #16 10baa: 4607 mov r7, r0 10bac: 460c mov r4, r1 10bae: 4699 mov r9, r3 if(unicode_letter == '\t') { 10bb0: 2a09 cmp r2, #9 is_tab = true; 10bb2: bf06 itte eq 10bb4: 2501 moveq r5, #1 unicode_letter = ' '; 10bb6: 2220 moveq r2, #32 bool is_tab = false; 10bb8: 2500 movne r5, #0 lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; 10bba: 6906 ldr r6, [r0, #16] uint32_t gid = get_glyph_dsc_id(font, unicode_letter); 10bbc: 4611 mov r1, r2 10bbe: 4b49 ldr r3, [pc, #292] ; (10ce4 ) 10bc0: 4798 blx r3 if(!gid) return false; 10bc2: 4680 mov r8, r0 10bc4: 2800 cmp r0, #0 10bc6: f000 8086 beq.w 10cd6 if(fdsc->kern_dsc) { 10bca: 68f3 ldr r3, [r6, #12] 10bcc: 2b00 cmp r3, #0 10bce: d07c beq.n 10cca uint32_t gid_next = get_glyph_dsc_id(font, unicode_letter_next); 10bd0: 4649 mov r1, r9 10bd2: 4638 mov r0, r7 10bd4: 4b43 ldr r3, [pc, #268] ; (10ce4 ) 10bd6: 4798 blx r3 if(gid_next) { 10bd8: 4603 mov r3, r0 10bda: bb18 cbnz r0, 10c24 int8_t kvalue = 0; 10bdc: 2300 movs r3, #0 const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[gid]; 10bde: 6870 ldr r0, [r6, #4] 10be0: eb00 00c8 add.w r0, r0, r8, lsl #3 int32_t kv = ((int32_t)((int32_t)kvalue * fdsc->kern_scale) >> 4); 10be4: 8a32 ldrh r2, [r6, #16] 10be6: fb03 f302 mul.w r3, r3, r2 10bea: 111b asrs r3, r3, #4 uint32_t adv_w = gdsc->adv_w; 10bec: 8842 ldrh r2, [r0, #2] 10bee: f3c2 120b ubfx r2, r2, #4, #12 if(is_tab) adv_w *= 2; 10bf2: b105 cbz r5, 10bf6 10bf4: 0052 lsls r2, r2, #1 adv_w = (adv_w + (1 << 3)) >> 4; 10bf6: 3308 adds r3, #8 10bf8: 4413 add r3, r2 10bfa: 091b lsrs r3, r3, #4 dsc_out->adv_w = adv_w; 10bfc: 8023 strh r3, [r4, #0] dsc_out->box_h = gdsc->box_h; 10bfe: 7943 ldrb r3, [r0, #5] 10c00: 80a3 strh r3, [r4, #4] dsc_out->box_w = gdsc->box_w; 10c02: 7902 ldrb r2, [r0, #4] 10c04: 8062 strh r2, [r4, #2] dsc_out->ofs_x = gdsc->ofs_x; 10c06: f990 3006 ldrsb.w r3, [r0, #6] 10c0a: 80e3 strh r3, [r4, #6] dsc_out->ofs_y = gdsc->ofs_y; 10c0c: f990 3007 ldrsb.w r3, [r0, #7] 10c10: 8123 strh r3, [r4, #8] dsc_out->bpp = (uint8_t)fdsc->bpp; 10c12: 7cf3 ldrb r3, [r6, #19] 10c14: f3c3 0383 ubfx r3, r3, #2, #4 10c18: 72a3 strb r3, [r4, #10] if(is_tab) dsc_out->box_w = dsc_out->box_w * 2; 10c1a: 2d00 cmp r5, #0 10c1c: d060 beq.n 10ce0 10c1e: 0052 lsls r2, r2, #1 10c20: 8062 strh r2, [r4, #2] 10c22: e059 b.n 10cd8 lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; 10c24: 693a ldr r2, [r7, #16] if(fdsc->kern_classes == 0) { 10c26: 7cd1 ldrb r1, [r2, #19] 10c28: f011 0f40 tst.w r1, #64 ; 0x40 10c2c: d13c bne.n 10ca8 const lv_font_fmt_txt_kern_pair_t * kdsc = fdsc->kern_dsc; 10c2e: 68d7 ldr r7, [r2, #12] if(kdsc->glyph_ids_size == 0) { 10c30: 7afa ldrb r2, [r7, #11] 10c32: f012 0203 ands.w r2, r2, #3 10c36: d003 beq.n 10c40 else if(kdsc->glyph_ids_size == 1) { 10c38: 2a01 cmp r2, #1 10c3a: d01b beq.n 10c74 int8_t value = 0; 10c3c: 2300 movs r3, #0 10c3e: e7ce b.n 10bde const uint8_t * g_ids = kdsc->glyph_ids; 10c40: f8d7 9000 ldr.w r9, [r7] uint16_t g_id_both = (gid_right << 8) + gid_left; /*Create one number from the ids*/ 10c44: eb08 2300 add.w r3, r8, r0, lsl #8 10c48: a804 add r0, sp, #16 10c4a: f820 3d04 strh.w r3, [r0, #-4]! uint8_t * kid_p = _lv_utils_bsearch(&g_id_both, g_ids, kdsc->pair_cnt, 2, kern_pair_8_compare); 10c4e: 68ba ldr r2, [r7, #8] 10c50: 4b25 ldr r3, [pc, #148] ; (10ce8 ) 10c52: 9300 str r3, [sp, #0] 10c54: 2302 movs r3, #2 10c56: f022 427f bic.w r2, r2, #4278190080 ; 0xff000000 10c5a: 4649 mov r1, r9 10c5c: f8df a090 ldr.w sl, [pc, #144] ; 10cf0 10c60: 47d0 blx sl if(kid_p) { 10c62: b128 cbz r0, 10c70 lv_uintptr_t ofs = (lv_uintptr_t)(kid_p - g_ids); 10c64: eba0 0309 sub.w r3, r0, r9 ofs = ofs >> 1; /*ofs is for pair, divide by 2 to refer as a single value*/ 10c68: 085b lsrs r3, r3, #1 value = kdsc->values[ofs]; 10c6a: 687a ldr r2, [r7, #4] 10c6c: 56d3 ldrsb r3, [r2, r3] 10c6e: e7b6 b.n 10bde int8_t value = 0; 10c70: 2300 movs r3, #0 10c72: e7b4 b.n 10bde const uint16_t * g_ids = kdsc->glyph_ids; 10c74: f8d7 9000 ldr.w r9, [r7] lv_uintptr_t g_id_both = (uint32_t)((uint32_t)gid_right << 8) + gid_left; /*Create one number from the ids*/ 10c78: eb08 2300 add.w r3, r8, r0, lsl #8 10c7c: a804 add r0, sp, #16 10c7e: f840 3d04 str.w r3, [r0, #-4]! uint8_t * kid_p = _lv_utils_bsearch(&g_id_both, g_ids, kdsc->pair_cnt, 4, kern_pair_16_compare); 10c82: 68ba ldr r2, [r7, #8] 10c84: 4b19 ldr r3, [pc, #100] ; (10cec ) 10c86: 9300 str r3, [sp, #0] 10c88: 2304 movs r3, #4 10c8a: f022 427f bic.w r2, r2, #4278190080 ; 0xff000000 10c8e: 4649 mov r1, r9 10c90: f8df a05c ldr.w sl, [pc, #92] ; 10cf0 10c94: 47d0 blx sl if(kid_p) { 10c96: b128 cbz r0, 10ca4 lv_uintptr_t ofs = (lv_uintptr_t)(kid_p - (const uint8_t *)g_ids); 10c98: eba0 0309 sub.w r3, r0, r9 ofs = ofs >> 4; /*ofs is 4 byte pairs, divide by 4 to refer as a single value*/ 10c9c: 091b lsrs r3, r3, #4 value = kdsc->values[ofs]; 10c9e: 687a ldr r2, [r7, #4] 10ca0: 56d3 ldrsb r3, [r2, r3] 10ca2: e79c b.n 10bde int8_t value = 0; 10ca4: 2300 movs r3, #0 10ca6: e79a b.n 10bde const lv_font_fmt_txt_kern_classes_t * kdsc = fdsc->kern_dsc; 10ca8: 68d1 ldr r1, [r2, #12] uint8_t left_class = kdsc->left_class_mapping[gid_left]; 10caa: 684a ldr r2, [r1, #4] 10cac: f812 2008 ldrb.w r2, [r2, r8] if(left_class > 0 && right_class > 0) { 10cb0: b16a cbz r2, 10cce uint8_t right_class = kdsc->right_class_mapping[gid_right]; 10cb2: 6888 ldr r0, [r1, #8] 10cb4: 5cc3 ldrb r3, [r0, r3] if(left_class > 0 && right_class > 0) { 10cb6: b163 cbz r3, 10cd2 value = kdsc->class_pair_values[(left_class - 1) * kdsc->right_class_cnt + (right_class - 1)]; 10cb8: 3a01 subs r2, #1 10cba: 7b48 ldrb r0, [r1, #13] 10cbc: 6809 ldr r1, [r1, #0] 10cbe: 440b add r3, r1 10cc0: fb00 3202 mla r2, r0, r2, r3 10cc4: f912 3c01 ldrsb.w r3, [r2, #-1] 10cc8: e789 b.n 10bde int8_t kvalue = 0; 10cca: 2300 movs r3, #0 10ccc: e787 b.n 10bde int8_t value = 0; 10cce: 2300 movs r3, #0 10cd0: e785 b.n 10bde 10cd2: 2300 movs r3, #0 10cd4: e783 b.n 10bde if(!gid) return false; 10cd6: 2500 movs r5, #0 } 10cd8: 4628 mov r0, r5 10cda: b004 add sp, #16 10cdc: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} return true; 10ce0: 2501 movs r5, #1 10ce2: e7f9 b.n 10cd8 10ce4: 000100ad .word 0x000100ad 10ce8: 00010081 .word 0x00010081 10cec: 00010093 .word 0x00010093 10cf0: 00014185 .word 0x00014185 00010cf4 <_lv_font_clean_up_fmt_txt>: { 10cf4: b508 push {r3, lr} if(decompr_buf) { 10cf6: 4b04 ldr r3, [pc, #16] ; (10d08 <_lv_font_clean_up_fmt_txt+0x14>) 10cf8: 6818 ldr r0, [r3, #0] 10cfa: b120 cbz r0, 10d06 <_lv_font_clean_up_fmt_txt+0x12> lv_mem_free(decompr_buf); 10cfc: 4b03 ldr r3, [pc, #12] ; (10d0c <_lv_font_clean_up_fmt_txt+0x18>) 10cfe: 4798 blx r3 decompr_buf = NULL; 10d00: 2200 movs r2, #0 10d02: 4b01 ldr r3, [pc, #4] ; (10d08 <_lv_font_clean_up_fmt_txt+0x14>) 10d04: 601a str r2, [r3, #0] 10d06: bd08 pop {r3, pc} 10d08: 20002b5c .word 0x20002b5c 10d0c: 000124c5 .word 0x000124c5 00010d10 : * It is used to surly have known values in the fields ant not memory junk. * After it you can set the fields. * @param driver pointer to driver variable to initialize */ void lv_disp_drv_init(lv_disp_drv_t * driver) { 10d10: b510 push {r4, lr} 10d12: 4604 mov r4, r0 _lv_memset_00(driver, sizeof(lv_disp_drv_t)); 10d14: 212c movs r1, #44 ; 0x2c 10d16: 4b15 ldr r3, [pc, #84] ; (10d6c ) 10d18: 4798 blx r3 driver->flush_cb = NULL; 10d1a: 2300 movs r3, #0 10d1c: 60e3 str r3, [r4, #12] driver->hor_res = LV_HOR_RES_MAX; 10d1e: f44f 72f0 mov.w r2, #480 ; 0x1e0 10d22: 8022 strh r2, [r4, #0] driver->ver_res = LV_VER_RES_MAX; 10d24: f44f 7288 mov.w r2, #272 ; 0x110 10d28: 8062 strh r2, [r4, #2] driver->buffer = NULL; 10d2a: 6063 str r3, [r4, #4] driver->rotated = 0; 10d2c: 7a22 ldrb r2, [r4, #8] 10d2e: f363 0241 bfi r2, r3, #1, #1 10d32: 7222 strb r2, [r4, #8] driver->color_chroma_key = LV_COLOR_TRANSP; 10d34: f894 2028 ldrb.w r2, [r4, #40] ; 0x28 10d38: f363 0204 bfi r2, r3, #0, #5 10d3c: f884 2028 strb.w r2, [r4, #40] ; 0x28 10d40: 8d22 ldrh r2, [r4, #40] ; 0x28 10d42: f442 62fc orr.w r2, r2, #2016 ; 0x7e0 10d46: 8522 strh r2, [r4, #40] ; 0x28 10d48: 0a12 lsrs r2, r2, #8 10d4a: f363 02c7 bfi r2, r3, #3, #5 10d4e: f884 2029 strb.w r2, [r4, #41] ; 0x29 driver->dpi = LV_DPI; 10d52: 8922 ldrh r2, [r4, #8] 10d54: 2182 movs r1, #130 ; 0x82 10d56: f361 028b bfi r2, r1, #2, #10 10d5a: 8122 strh r2, [r4, #8] #if LV_ANTIALIAS driver->antialiasing = true; 10d5c: f042 0201 orr.w r2, r2, #1 10d60: 7222 strb r2, [r4, #8] #if LV_COLOR_SCREEN_TRANSP driver->screen_transp = 1; #endif #if LV_USE_GPU driver->gpu_blend_cb = NULL; 10d62: 6223 str r3, [r4, #32] driver->gpu_fill_cb = NULL; 10d64: 6263 str r3, [r4, #36] ; 0x24 #if LV_USE_USER_DATA driver->user_data = NULL; #endif driver->set_px_cb = NULL; 10d66: 6163 str r3, [r4, #20] 10d68: bd10 pop {r4, pc} 10d6a: bf00 nop 10d6c: 00012b37 .word 0x00012b37 00010d70 : * It lets LVGL to render next frame into the other buffer while previous is being * sent. Set to `NULL` if unused. * @param size_in_px_cnt size of the `buf1` and `buf2` in pixel count. */ void lv_disp_buf_init(lv_disp_buf_t * disp_buf, void * buf1, void * buf2, uint32_t size_in_px_cnt) { 10d70: b5f8 push {r3, r4, r5, r6, r7, lr} 10d72: 4604 mov r4, r0 10d74: 460d mov r5, r1 10d76: 4617 mov r7, r2 10d78: 461e mov r6, r3 _lv_memset_00(disp_buf, sizeof(lv_disp_buf_t)); 10d7a: 2124 movs r1, #36 ; 0x24 10d7c: 4b03 ldr r3, [pc, #12] ; (10d8c ) 10d7e: 4798 blx r3 disp_buf->buf1 = buf1; 10d80: 6025 str r5, [r4, #0] disp_buf->buf2 = buf2; 10d82: 6067 str r7, [r4, #4] disp_buf->buf_act = disp_buf->buf1; 10d84: 60a5 str r5, [r4, #8] disp_buf->size = size_in_px_cnt; 10d86: 60e6 str r6, [r4, #12] 10d88: bdf8 pop {r3, r4, r5, r6, r7, pc} 10d8a: bf00 nop 10d8c: 00012b37 .word 0x00012b37 00010d90 : * Automatically set the first display as active. * @param driver pointer to an initialized 'lv_disp_drv_t' variable (can be local variable) * @return pointer to the new display or NULL on error */ lv_disp_t * lv_disp_drv_register(lv_disp_drv_t * driver) { 10d90: b5f0 push {r4, r5, r6, r7, lr} 10d92: b083 sub sp, #12 10d94: 4605 mov r5, r0 lv_disp_t * disp = _lv_ll_ins_head(&LV_GC_ROOT(_lv_disp_ll)); 10d96: 483f ldr r0, [pc, #252] ; (10e94 ) 10d98: 4b3f ldr r3, [pc, #252] ; (10e98 ) 10d9a: 4798 blx r3 if(!disp) { 10d9c: 4604 mov r4, r0 10d9e: 2800 cmp r0, #0 10da0: d054 beq.n 10e4c LV_ASSERT_MEM(disp); return NULL; } _lv_memset_00(disp, sizeof(lv_disp_t)); 10da2: f44f 71b8 mov.w r1, #368 ; 0x170 10da6: 4b3d ldr r3, [pc, #244] ; (10e9c ) 10da8: 4798 blx r3 _lv_memcpy(&disp->driver, driver, sizeof(lv_disp_drv_t)); 10daa: 222c movs r2, #44 ; 0x2c 10dac: 4629 mov r1, r5 10dae: 4620 mov r0, r4 10db0: 4b3b ldr r3, [pc, #236] ; (10ea0 ) 10db2: 4798 blx r3 _lv_ll_init(&disp->scr_ll, sizeof(lv_obj_t)); 10db4: 214c movs r1, #76 ; 0x4c 10db6: f104 0030 add.w r0, r4, #48 ; 0x30 10dba: 4b3a ldr r3, [pc, #232] ; (10ea4 ) 10dbc: 4798 blx r3 disp->last_activity_time = 0; 10dbe: 2300 movs r3, #0 10dc0: f8c4 316c str.w r3, [r4, #364] ; 0x16c if(disp_def == NULL) disp_def = disp; 10dc4: 4b38 ldr r3, [pc, #224] ; (10ea8 ) 10dc6: 681b ldr r3, [r3, #0] 10dc8: 2b00 cmp r3, #0 10dca: d050 beq.n 10e6e lv_disp_t * disp_def_tmp = disp_def; 10dcc: 4b36 ldr r3, [pc, #216] ; (10ea8 ) 10dce: 681f ldr r7, [r3, #0] disp_def = disp; /*Temporarily change the default screen to create the default screens on the 10dd0: 601c str r4, [r3, #0] new display*/ /*Create a refresh task*/ disp->refr_task = lv_task_create(_lv_disp_refr_task, LV_DISP_DEF_REFR_PERIOD, LV_REFR_TASK_PRIO, disp); 10dd2: 4623 mov r3, r4 10dd4: 2203 movs r2, #3 10dd6: 211e movs r1, #30 10dd8: 4834 ldr r0, [pc, #208] ; (10eac ) 10dda: 4d35 ldr r5, [pc, #212] ; (10eb0 ) 10ddc: 47a8 blx r5 10dde: 62e0 str r0, [r4, #44] ; 0x2c LV_ASSERT_MEM(disp->refr_task); 10de0: 4b34 ldr r3, [pc, #208] ; (10eb4 ) 10de2: 4798 blx r3 10de4: 2800 cmp r0, #0 10de6: d045 beq.n 10e74 if(disp->refr_task == NULL) return NULL; 10de8: 6ae3 ldr r3, [r4, #44] ; 0x2c 10dea: 2b00 cmp r3, #0 10dec: d04f beq.n 10e8e disp->inv_p = 0; 10dee: f8b4 3168 ldrh.w r3, [r4, #360] ; 0x168 10df2: f36f 0309 bfc r3, #0, #10 10df6: f8a4 3168 strh.w r3, [r4, #360] ; 0x168 disp->last_activity_time = 0; 10dfa: 2500 movs r5, #0 10dfc: f8c4 516c str.w r5, [r4, #364] ; 0x16c disp->act_scr = lv_obj_create(NULL, NULL); /*Create a default screen on the display*/ 10e00: 4629 mov r1, r5 10e02: 4628 mov r0, r5 10e04: 4e2c ldr r6, [pc, #176] ; (10eb8 ) 10e06: 47b0 blx r6 10e08: 63e0 str r0, [r4, #60] ; 0x3c disp->top_layer = lv_obj_create(NULL, NULL); /*Create top layer on the display*/ 10e0a: 4629 mov r1, r5 10e0c: 4628 mov r0, r5 10e0e: 47b0 blx r6 10e10: 6420 str r0, [r4, #64] ; 0x40 disp->sys_layer = lv_obj_create(NULL, NULL); /*Create sys layer on the display*/ 10e12: 4629 mov r1, r5 10e14: 4628 mov r0, r5 10e16: 47b0 blx r6 10e18: 6460 str r0, [r4, #68] ; 0x44 lv_obj_reset_style_list(disp->top_layer, LV_OBJ_PART_MAIN); 10e1a: 4629 mov r1, r5 10e1c: 6c20 ldr r0, [r4, #64] ; 0x40 10e1e: 4e27 ldr r6, [pc, #156] ; (10ebc ) 10e20: 47b0 blx r6 lv_obj_reset_style_list(disp->sys_layer, LV_OBJ_PART_MAIN); 10e22: 4629 mov r1, r5 10e24: 6c60 ldr r0, [r4, #68] ; 0x44 10e26: 47b0 blx r6 lv_obj_set_click(disp->top_layer, false); 10e28: 4629 mov r1, r5 10e2a: 6c20 ldr r0, [r4, #64] ; 0x40 10e2c: 4e24 ldr r6, [pc, #144] ; (10ec0 ) 10e2e: 47b0 blx r6 lv_obj_set_click(disp->sys_layer, false); 10e30: 4629 mov r1, r5 10e32: 6c60 ldr r0, [r4, #68] ; 0x44 10e34: 47b0 blx r6 lv_obj_invalidate(disp->act_scr); 10e36: 6be0 ldr r0, [r4, #60] ; 0x3c 10e38: 4b22 ldr r3, [pc, #136] ; (10ec4 ) 10e3a: 4798 blx r3 disp_def = disp_def_tmp; /*Revert the default display*/ 10e3c: 4b1a ldr r3, [pc, #104] ; (10ea8 ) 10e3e: 601f str r7, [r3, #0] lv_task_ready(disp->refr_task); /*Be sure the screen will be refreshed immediately on start up*/ 10e40: 6ae0 ldr r0, [r4, #44] ; 0x2c 10e42: 4b21 ldr r3, [pc, #132] ; (10ec8 ) 10e44: 4798 blx r3 return disp; } 10e46: 4620 mov r0, r4 10e48: b003 add sp, #12 10e4a: bdf0 pop {r4, r5, r6, r7, pc} LV_ASSERT_MEM(disp); 10e4c: 4b19 ldr r3, [pc, #100] ; (10eb4 ) 10e4e: 4798 blx r3 10e50: 2800 cmp r0, #0 10e52: d1f8 bne.n 10e46 10e54: 4b1d ldr r3, [pc, #116] ; (10ecc ) 10e56: 9300 str r3, [sp, #0] 10e58: 227c movs r2, #124 ; 0x7c 10e5a: 491d ldr r1, [pc, #116] ; (10ed0 ) 10e5c: 2003 movs r0, #3 10e5e: 4c1d ldr r4, [pc, #116] ; (10ed4 ) 10e60: 47a0 blx r4 10e62: 2200 movs r2, #0 10e64: 2300 movs r3, #0 10e66: 481c ldr r0, [pc, #112] ; (10ed8 ) 10e68: 491c ldr r1, [pc, #112] ; (10edc ) 10e6a: 4788 blx r1 10e6c: e7fe b.n 10e6c if(disp_def == NULL) disp_def = disp; 10e6e: 4b0e ldr r3, [pc, #56] ; (10ea8 ) 10e70: 601c str r4, [r3, #0] 10e72: e7ab b.n 10dcc LV_ASSERT_MEM(disp->refr_task); 10e74: 4b15 ldr r3, [pc, #84] ; (10ecc ) 10e76: 9300 str r3, [sp, #0] 10e78: 228d movs r2, #141 ; 0x8d 10e7a: 4915 ldr r1, [pc, #84] ; (10ed0 ) 10e7c: 2003 movs r0, #3 10e7e: 4d15 ldr r5, [pc, #84] ; (10ed4 ) 10e80: 47a8 blx r5 10e82: 6ae2 ldr r2, [r4, #44] ; 0x2c 10e84: 2300 movs r3, #0 10e86: 4814 ldr r0, [pc, #80] ; (10ed8 ) 10e88: 4914 ldr r1, [pc, #80] ; (10edc ) 10e8a: 4788 blx r1 10e8c: e7fe b.n 10e8c if(disp->refr_task == NULL) return NULL; 10e8e: 2400 movs r4, #0 10e90: e7d9 b.n 10e46 10e92: bf00 nop 10e94: 20006c98 .word 0x20006c98 10e98: 00011f11 .word 0x00011f11 10e9c: 00012b37 .word 0x00012b37 10ea0: 00012655 .word 0x00012655 10ea4: 00011ef9 .word 0x00011ef9 10ea8: 20002b70 .word 0x20002b70 10eac: 00005f75 .word 0x00005f75 10eb0: 000139e5 .word 0x000139e5 10eb4: 000022b1 .word 0x000022b1 10eb8: 00003e25 .word 0x00003e25 10ebc: 00003b9d .word 0x00003b9d 10ec0: 000029a1 .word 0x000029a1 10ec4: 00003321 .word 0x00003321 10ec8: 00013a55 .word 0x00013a55 10ecc: 000291bc .word 0x000291bc 10ed0: 000291d4 .word 0x000291d4 10ed4: 0001225d .word 0x0001225d 10ed8: 00023fd8 .word 0x00023fd8 10edc: 000022b9 .word 0x000022b9 00010ee0 : * @return pointer to the default display */ lv_disp_t * lv_disp_get_default(void) { return disp_def; } 10ee0: 4b01 ldr r3, [pc, #4] ; (10ee8 ) 10ee2: 6818 ldr r0, [r3, #0] 10ee4: 4770 bx lr 10ee6: bf00 nop 10ee8: 20002b70 .word 0x20002b70 00010eec : * @param disp pointer to a display (NULL to use the default display) * @return the horizontal resolution of the display */ lv_coord_t lv_disp_get_hor_res(lv_disp_t * disp) { if(disp == NULL) disp = lv_disp_get_default(); 10eec: 4603 mov r3, r0 10eee: b140 cbz r0, 10f02 if(disp == NULL) return LV_HOR_RES_MAX; else return disp->driver.rotated == 0 ? disp->driver.hor_res : disp->driver.ver_res; 10ef0: 7a1a ldrb r2, [r3, #8] 10ef2: f012 0f02 tst.w r2, #2 10ef6: bf0c ite eq 10ef8: f9b3 0000 ldrsheq.w r0, [r3] 10efc: f9b3 0002 ldrshne.w r0, [r3, #2] 10f00: 4770 bx lr return disp_def; 10f02: 4b03 ldr r3, [pc, #12] ; (10f10 ) 10f04: 681b ldr r3, [r3, #0] if(disp == NULL) 10f06: 2b00 cmp r3, #0 10f08: d1f2 bne.n 10ef0 return LV_HOR_RES_MAX; 10f0a: f44f 70f0 mov.w r0, #480 ; 0x1e0 } 10f0e: 4770 bx lr 10f10: 20002b70 .word 0x20002b70 00010f14 : * @param disp pointer to a display (NULL to use the default display) * @return the vertical resolution of the display */ lv_coord_t lv_disp_get_ver_res(lv_disp_t * disp) { if(disp == NULL) disp = lv_disp_get_default(); 10f14: 4603 mov r3, r0 10f16: b140 cbz r0, 10f2a if(disp == NULL) return LV_VER_RES_MAX; else return disp->driver.rotated == 0 ? disp->driver.ver_res : disp->driver.hor_res; 10f18: 7a1a ldrb r2, [r3, #8] 10f1a: f012 0f02 tst.w r2, #2 10f1e: bf0c ite eq 10f20: f9b3 0002 ldrsheq.w r0, [r3, #2] 10f24: f9b3 0000 ldrshne.w r0, [r3] 10f28: 4770 bx lr return disp_def; 10f2a: 4b03 ldr r3, [pc, #12] ; (10f38 ) 10f2c: 681b ldr r3, [r3, #0] if(disp == NULL) 10f2e: 2b00 cmp r3, #0 10f30: d1f2 bne.n 10f18 return LV_VER_RES_MAX; 10f32: f44f 7088 mov.w r0, #272 ; 0x110 } 10f36: 4770 bx lr 10f38: 20002b70 .word 0x20002b70 00010f3c : * @param disp pointer to a display (NULL to use the default display) * @return dpi of the display */ lv_coord_t lv_disp_get_dpi(lv_disp_t * disp) { if(disp == NULL) disp = lv_disp_get_default(); 10f3c: 4603 mov r3, r0 10f3e: b118 cbz r0, 10f48 if(disp == NULL) return LV_DPI; /*Do not return 0 because it might be a divider*/ return disp->driver.dpi; 10f40: 8918 ldrh r0, [r3, #8] 10f42: f3c0 0089 ubfx r0, r0, #2, #10 10f46: 4770 bx lr return disp_def; 10f48: 4b02 ldr r3, [pc, #8] ; (10f54 ) 10f4a: 681b ldr r3, [r3, #0] if(disp == NULL) return LV_DPI; /*Do not return 0 because it might be a divider*/ 10f4c: 2b00 cmp r3, #0 10f4e: d1f7 bne.n 10f40 10f50: 2082 movs r0, #130 ; 0x82 } 10f52: 4770 bx lr 10f54: 20002b70 .word 0x20002b70 00010f58 : * Get the size category of the display based on it's hor. res. and dpi. * @param disp pointer to a display (NULL to use the default display) * @return LV_DISP_SIZE_SMALL/MEDIUM/LARGE/EXTRA_LARGE */ lv_disp_size_t lv_disp_get_size_category(lv_disp_t * disp) { 10f58: b538 push {r3, r4, r5, lr} if(disp == NULL) disp = lv_disp_get_default(); 10f5a: 4605 mov r5, r0 10f5c: b1a0 cbz r0, 10f88 uint32_t w; if(disp == NULL) w = LV_HOR_RES_MAX; else w = lv_disp_get_hor_res(disp); 10f5e: 4628 mov r0, r5 10f60: 4b0f ldr r3, [pc, #60] ; (10fa0 ) 10f62: 4798 blx r3 10f64: 4604 mov r4, r0 uint32_t dpi = lv_disp_get_dpi(disp); 10f66: 4628 mov r0, r5 10f68: 4b0e ldr r3, [pc, #56] ; (10fa4 ) 10f6a: 4798 blx r3 w = w * 10 / dpi; 10f6c: eb04 0484 add.w r4, r4, r4, lsl #2 10f70: 0064 lsls r4, r4, #1 10f72: fbb4 f0f0 udiv r0, r4, r0 if(w < LV_DISP_SMALL_LIMIT) return LV_DISP_SIZE_SMALL; 10f76: 281d cmp r0, #29 10f78: d90d bls.n 10f96 if(w < LV_DISP_MEDIUM_LIMIT) return LV_DISP_SIZE_MEDIUM; 10f7a: 2831 cmp r0, #49 ; 0x31 10f7c: d90d bls.n 10f9a if(w < LV_DISP_LARGE_LIMIT) return LV_DISP_SIZE_LARGE; else return LV_DISP_SIZE_EXTRA_LARGE; 10f7e: 2846 cmp r0, #70 ; 0x46 10f80: bf34 ite cc 10f82: 2002 movcc r0, #2 10f84: 2003 movcs r0, #3 10f86: bd38 pop {r3, r4, r5, pc} return disp_def; 10f88: 4b07 ldr r3, [pc, #28] ; (10fa8 ) 10f8a: 681d ldr r5, [r3, #0] 10f8c: f44f 74f0 mov.w r4, #480 ; 0x1e0 if(disp == NULL) w = LV_HOR_RES_MAX; 10f90: 2d00 cmp r5, #0 10f92: d0e8 beq.n 10f66 10f94: e7e3 b.n 10f5e if(w < LV_DISP_SMALL_LIMIT) return LV_DISP_SIZE_SMALL; 10f96: 2000 movs r0, #0 10f98: bd38 pop {r3, r4, r5, pc} if(w < LV_DISP_MEDIUM_LIMIT) return LV_DISP_SIZE_MEDIUM; 10f9a: 2001 movs r0, #1 } 10f9c: bd38 pop {r3, r4, r5, pc} 10f9e: bf00 nop 10fa0: 00010eed .word 0x00010eed 10fa4: 00010f3d .word 0x00010f3d 10fa8: 20002b70 .word 0x20002b70 00010fac : if(disp_drv->screen_transp) { _lv_memset_00(disp_drv->buffer->buf_act, disp_drv->buffer->size * sizeof(lv_color32_t)); } #endif disp_drv->buffer->flushing = 0; 10fac: 6842 ldr r2, [r0, #4] 10fae: 2300 movs r3, #0 10fb0: 6193 str r3, [r2, #24] disp_drv->buffer->flushing_last = 0; 10fb2: 6842 ldr r2, [r0, #4] 10fb4: 61d3 str r3, [r2, #28] 10fb6: 4770 bx lr 00010fb8 : * Get the next display. * @param disp pointer to the current display. NULL to initialize. * @return the next display or NULL if no more. Give the first display when the parameter is NULL */ lv_disp_t * lv_disp_get_next(lv_disp_t * disp) { 10fb8: b508 push {r3, lr} if(disp == NULL) 10fba: b120 cbz r0, 10fc6 10fbc: 4601 mov r1, r0 return _lv_ll_get_head(&LV_GC_ROOT(_lv_disp_ll)); else return _lv_ll_get_next(&LV_GC_ROOT(_lv_disp_ll), disp); 10fbe: 4804 ldr r0, [pc, #16] ; (10fd0 ) 10fc0: 4b04 ldr r3, [pc, #16] ; (10fd4 ) 10fc2: 4798 blx r3 } 10fc4: bd08 pop {r3, pc} return _lv_ll_get_head(&LV_GC_ROOT(_lv_disp_ll)); 10fc6: 4802 ldr r0, [pc, #8] ; (10fd0 ) 10fc8: 4b03 ldr r3, [pc, #12] ; (10fd8 ) 10fca: 4798 blx r3 10fcc: bd08 pop {r3, pc} 10fce: bf00 nop 10fd0: 20006c98 .word 0x20006c98 10fd4: 00011fbd .word 0x00011fbd 10fd8: 00011fa9 .word 0x00011fa9 00010fdc : * @return pointer to the internal buffers */ lv_disp_buf_t * lv_disp_get_buf(lv_disp_t * disp) { return disp->driver.buffer; } 10fdc: 6840 ldr r0, [r0, #4] 10fde: 4770 bx lr 00010fe0 : * @param disp pointer to to display to check * @return true: double buffered; false: not double buffered */ bool lv_disp_is_double_buf(lv_disp_t * disp) { if(disp->driver.buffer->buf1 && disp->driver.buffer->buf2) 10fe0: 6843 ldr r3, [r0, #4] 10fe2: 681a ldr r2, [r3, #0] 10fe4: b122 cbz r2, 10ff0 10fe6: 6858 ldr r0, [r3, #4] 10fe8: 3000 adds r0, #0 10fea: bf18 it ne 10fec: 2001 movne r0, #1 10fee: 4770 bx lr return true; else return false; 10ff0: 2000 movs r0, #0 } 10ff2: 4770 bx lr 00010ff4 : * `size` is screen sized) * @param disp pointer to to display to check * @return true: double buffered; false: not double buffered */ bool lv_disp_is_true_double_buf(lv_disp_t * disp) { 10ff4: b510 push {r4, lr} 10ff6: 4604 mov r4, r0 uint32_t scr_size = disp->driver.hor_res * disp->driver.ver_res; if(lv_disp_is_double_buf(disp) && disp->driver.buffer->size == scr_size) { 10ff8: 4b08 ldr r3, [pc, #32] ; (1101c ) 10ffa: 4798 blx r3 10ffc: 4603 mov r3, r0 10ffe: b158 cbz r0, 11018 uint32_t scr_size = disp->driver.hor_res * disp->driver.ver_res; 11000: f9b4 2000 ldrsh.w r2, [r4] 11004: f9b4 3002 ldrsh.w r3, [r4, #2] 11008: fb03 f302 mul.w r3, r3, r2 if(lv_disp_is_double_buf(disp) && disp->driver.buffer->size == scr_size) { 1100c: 6862 ldr r2, [r4, #4] 1100e: 68d2 ldr r2, [r2, #12] 11010: 4293 cmp r3, r2 11012: bf14 ite ne 11014: 2300 movne r3, #0 11016: 2301 moveq r3, #1 return true; } else { return false; } } 11018: 4618 mov r0, r3 1101a: bd10 pop {r4, pc} 1101c: 00010fe1 .word 0x00010fe1 00011020 : * @param indev pointer to the current input device. NULL to initialize. * @return the next input devise or NULL if no more. Give the first input device when the parameter * is NULL */ lv_indev_t * lv_indev_get_next(lv_indev_t * indev) { 11020: b508 push {r3, lr} if(indev == NULL) 11022: b120 cbz r0, 1102e 11024: 4601 mov r1, r0 return _lv_ll_get_head(&LV_GC_ROOT(_lv_indev_ll)); else return _lv_ll_get_next(&LV_GC_ROOT(_lv_indev_ll), indev); 11026: 4804 ldr r0, [pc, #16] ; (11038 ) 11028: 4b04 ldr r3, [pc, #16] ; (1103c ) 1102a: 4798 blx r3 } 1102c: bd08 pop {r3, pc} return _lv_ll_get_head(&LV_GC_ROOT(_lv_indev_ll)); 1102e: 4802 ldr r0, [pc, #8] ; (11038 ) 11030: 4b03 ldr r3, [pc, #12] ; (11040 ) 11032: 4798 blx r3 11034: bd08 pop {r3, pc} 11036: bf00 nop 11038: 20006c8c .word 0x20006c8c 1103c: 00011fbd .word 0x00011fbd 11040: 00011fa9 .word 0x00011fa9 00011044 : * You have to call this function periodically * @param tick_period the call period of this function in milliseconds */ LV_ATTRIBUTE_TICK_INC void lv_tick_inc(uint32_t tick_period) { tick_irq_flag = 0; 11044: 4b03 ldr r3, [pc, #12] ; (11054 ) 11046: 2200 movs r2, #0 11048: 701a strb r2, [r3, #0] sys_time += tick_period; 1104a: 685a ldr r2, [r3, #4] 1104c: 4410 add r0, r2 1104e: 6058 str r0, [r3, #4] 11050: 4770 bx lr 11052: bf00 nop 11054: 20002b74 .word 0x20002b74 00011058 : uint32_t lv_tick_get(void) { #if LV_TICK_CUSTOM == 0 uint32_t result; do { tick_irq_flag = 1; 11058: 4b04 ldr r3, [pc, #16] ; (1106c ) 1105a: f04f 0101 mov.w r1, #1 1105e: 7019 strb r1, [r3, #0] result = sys_time; } while(!tick_irq_flag); /*'lv_tick_inc()' clears this flag which can be in an interrupt. 11060: 781a ldrb r2, [r3, #0] 11062: 2a00 cmp r2, #0 11064: d0fb beq.n 1105e return result; #else return LV_TICK_CUSTOM_SYS_TIME_EXPR; #endif } 11066: 4b01 ldr r3, [pc, #4] ; (1106c ) 11068: 6858 ldr r0, [r3, #4] 1106a: 4770 bx lr 1106c: 20002b74 .word 0x20002b74 00011070 : * Get the elapsed milliseconds since a previous time stamp * @param prev_tick a previous time stamp (return value of systick_get() ) * @return the elapsed milliseconds since 'prev_tick' */ uint32_t lv_tick_elaps(uint32_t prev_tick) { 11070: b510 push {r4, lr} 11072: 4604 mov r4, r0 uint32_t act_time = lv_tick_get(); 11074: 4b01 ldr r3, [pc, #4] ; (1107c ) 11076: 4798 blx r3 prev_tick = UINT32_MAX - prev_tick + 1; prev_tick += act_time; } return prev_tick; } 11078: 1b00 subs r0, r0, r4 1107a: bd10 pop {r4, pc} 1107c: 00011059 .word 0x00011059 00011080 : { LV_UNUSED(path); /*Calculate the current step*/ uint32_t step; if(a->time == a->act_time) { 11080: 6a0a ldr r2, [r1, #32] 11082: 6a48 ldr r0, [r1, #36] ; 0x24 11084: 4282 cmp r2, r0 step = LV_ANIM_RESOLUTION; /*Use the last value if the time fully elapsed*/ } else { step = ((int32_t)a->act_time * LV_ANIM_RESOLUTION) / a->time; 11086: bf1a itte ne 11088: 0280 lslne r0, r0, #10 1108a: fb90 f0f2 sdivne r0, r0, r2 1108e: f44f 6080 moveq.w r0, #1024 ; 0x400 } /* Get the new value which will be proportional to `step` * and the `start` and `end` values*/ int32_t new_value; new_value = (int32_t)step * (a->end - a->start); 11092: 698a ldr r2, [r1, #24] 11094: 69cb ldr r3, [r1, #28] 11096: 1a9b subs r3, r3, r2 11098: fb00 f003 mul.w r0, r0, r3 new_value = new_value >> LV_ANIM_RES_SHIFT; new_value += a->start; 1109c: eb02 20a0 add.w r0, r2, r0, asr #10 return (lv_anim_value_t)new_value; } 110a0: b200 sxth r0, r0 110a2: 4770 bx lr 000110a4 : } return anim_list_changed; } static void anim_mark_list_change(void) { 110a4: b508 push {r3, lr} anim_list_changed = true; 110a6: 2201 movs r2, #1 110a8: 4b08 ldr r3, [pc, #32] ; (110cc ) 110aa: 701a strb r2, [r3, #0] if(_lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)) == NULL) 110ac: 4808 ldr r0, [pc, #32] ; (110d0 ) 110ae: 4b09 ldr r3, [pc, #36] ; (110d4 ) 110b0: 4798 blx r3 110b2: b128 cbz r0, 110c0 lv_task_set_prio(_lv_anim_task, LV_TASK_PRIO_OFF); else lv_task_set_prio(_lv_anim_task, LV_ANIM_TASK_PRIO); 110b4: 2104 movs r1, #4 110b6: 4b05 ldr r3, [pc, #20] ; (110cc ) 110b8: 6858 ldr r0, [r3, #4] 110ba: 4b07 ldr r3, [pc, #28] ; (110d8 ) 110bc: 4798 blx r3 110be: bd08 pop {r3, pc} lv_task_set_prio(_lv_anim_task, LV_TASK_PRIO_OFF); 110c0: 2100 movs r1, #0 110c2: 4b02 ldr r3, [pc, #8] ; (110cc ) 110c4: 6858 ldr r0, [r3, #4] 110c6: 4b04 ldr r3, [pc, #16] ; (110d8 ) 110c8: 4798 blx r3 110ca: bd08 pop {r3, pc} 110cc: 20002b7c .word 0x20002b7c 110d0: 20006d5c .word 0x20006d5c 110d4: 00011fa9 .word 0x00011fa9 110d8: 00013959 .word 0x00013959 000110dc : { 110dc: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 110e0: b091 sub sp, #68 ; 0x44 _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { 110e2: 4863 ldr r0, [pc, #396] ; (11270 ) 110e4: 4b63 ldr r3, [pc, #396] ; (11274 ) 110e6: 4798 blx r3 110e8: b168 cbz r0, 11106 110ea: 4601 mov r1, r0 110ec: 4d60 ldr r5, [pc, #384] ; (11270 ) 110ee: 4c62 ldr r4, [pc, #392] ; (11278 ) a->has_run = 0; 110f0: f891 303c ldrb.w r3, [r1, #60] ; 0x3c 110f4: f36f 0341 bfc r3, #1, #1 110f8: f881 303c strb.w r3, [r1, #60] ; 0x3c _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { 110fc: 4628 mov r0, r5 110fe: 47a0 blx r4 11100: 4601 mov r1, r0 11102: 2800 cmp r0, #0 11104: d1f4 bne.n 110f0 uint32_t elaps = lv_tick_elaps(last_task_run); 11106: 4b5d ldr r3, [pc, #372] ; (1127c ) 11108: 6898 ldr r0, [r3, #8] 1110a: 4b5d ldr r3, [pc, #372] ; (11280 ) 1110c: 4798 blx r3 1110e: 4680 mov r8, r0 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); 11110: 4857 ldr r0, [pc, #348] ; (11270 ) 11112: 4b58 ldr r3, [pc, #352] ; (11274 ) 11114: 4798 blx r3 while(a != NULL) { 11116: 4604 mov r4, r0 11118: 2800 cmp r0, #0 1111a: f000 8089 beq.w 11230 anim_list_changed = false; 1111e: 4d57 ldr r5, [pc, #348] ; (1127c ) 11120: f04f 0700 mov.w r7, #0 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); 11124: 4e52 ldr r6, [pc, #328] ; (11270 ) 11126: f8df 914c ldr.w r9, [pc, #332] ; 11274 1112a: e01c b.n 11166 if(a->act_time <= 0 && new_act_time >= 0) { 1112c: eb13 0308 adds.w r3, r3, r8 11130: f100 8085 bmi.w 1123e if(a->start_cb) a->start_cb(a); 11134: 68a2 ldr r2, [r4, #8] 11136: 2a00 cmp r2, #0 11138: f000 8088 beq.w 1124c 1113c: 4620 mov r0, r4 1113e: 4790 blx r2 11140: e01e b.n 11180 else new_value = lv_anim_path_linear(&a->path, a); 11142: 4621 mov r1, r4 11144: f104 0010 add.w r0, r4, #16 11148: 4b4e ldr r3, [pc, #312] ; (11284 ) 1114a: 4798 blx r3 1114c: e028 b.n 111a0 if(a->act_time >= a->time) { 1114e: 6a62 ldr r2, [r4, #36] ; 0x24 11150: 6a23 ldr r3, [r4, #32] 11152: 429a cmp r2, r3 11154: da2b bge.n 111ae if(anim_list_changed) 11156: 782b ldrb r3, [r5, #0] 11158: 2b00 cmp r3, #0 1115a: d071 beq.n 11240 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); 1115c: 4630 mov r0, r6 1115e: 47c8 blx r9 11160: 4604 mov r4, r0 while(a != NULL) { 11162: 2c00 cmp r4, #0 11164: d064 beq.n 11230 anim_list_changed = false; 11166: 702f strb r7, [r5, #0] if(!a->has_run) { 11168: f894 303c ldrb.w r3, [r4, #60] ; 0x3c 1116c: f013 0f02 tst.w r3, #2 11170: d166 bne.n 11240 a->has_run = 1; /*The list readying might be reseted so need to know which anim has run already*/ 11172: f043 0302 orr.w r3, r3, #2 11176: f884 303c strb.w r3, [r4, #60] ; 0x3c int32_t new_act_time = a->act_time + elaps; 1117a: 6a63 ldr r3, [r4, #36] ; 0x24 if(a->act_time <= 0 && new_act_time >= 0) { 1117c: 2b00 cmp r3, #0 1117e: ddd5 ble.n 1112c a->act_time += elaps; 11180: 6a63 ldr r3, [r4, #36] ; 0x24 11182: 4443 add r3, r8 11184: 6263 str r3, [r4, #36] ; 0x24 if(a->act_time >= 0) { 11186: 2b00 cmp r3, #0 11188: dbe5 blt.n 11156 if(a->act_time > a->time) a->act_time = a->time; 1118a: 6a22 ldr r2, [r4, #32] 1118c: 429a cmp r2, r3 1118e: bfb8 it lt 11190: 6262 strlt r2, [r4, #36] ; 0x24 if(a->path.cb) new_value = a->path.cb(&a->path, a); 11192: 6923 ldr r3, [r4, #16] 11194: 2b00 cmp r3, #0 11196: d0d4 beq.n 11142 11198: 4621 mov r1, r4 1119a: f104 0010 add.w r0, r4, #16 1119e: 4798 blx r3 if(a->exec_cb) a->exec_cb(a->var, new_value); 111a0: 6863 ldr r3, [r4, #4] 111a2: 2b00 cmp r3, #0 111a4: d0d3 beq.n 1114e 111a6: b201 sxth r1, r0 111a8: 6820 ldr r0, [r4, #0] 111aa: 4798 blx r3 111ac: e7cf b.n 1114e if(a->playback_now == 0 && a->repeat_cnt > 0 && a->repeat_cnt != LV_ANIM_REPEAT_INFINITE) { 111ae: f894 303c ldrb.w r3, [r4, #60] ; 0x3c 111b2: f013 0301 ands.w r3, r3, #1 111b6: d108 bne.n 111ca 111b8: 8ea2 ldrh r2, [r4, #52] ; 0x34 111ba: 2a00 cmp r2, #0 111bc: d048 beq.n 11250 111be: f64f 71ff movw r1, #65535 ; 0xffff 111c2: 428a cmp r2, r1 111c4: d04b beq.n 1125e a->repeat_cnt--; 111c6: 3a01 subs r2, #1 111c8: 86a2 strh r2, [r4, #52] ; 0x34 if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) { 111ca: 8ea2 ldrh r2, [r4, #52] ; 0x34 111cc: b1ca cbz r2, 11202 a->act_time = -a->repeat_delay; /*Restart the animation*/ 111ce: 6b22 ldr r2, [r4, #48] ; 0x30 111d0: 4252 negs r2, r2 111d2: 6262 str r2, [r4, #36] ; 0x24 if(a->playback_time != 0) { 111d4: 6ae2 ldr r2, [r4, #44] ; 0x2c 111d6: 2a00 cmp r2, #0 111d8: d0bd beq.n 11156 if(a->playback_now == 0) a->act_time = -a->playback_delay; 111da: 2b00 cmp r3, #0 111dc: d03b beq.n 11256 a->playback_now = a->playback_now == 0 ? 1 : 0; 111de: f083 0301 eor.w r3, r3, #1 111e2: f894 103c ldrb.w r1, [r4, #60] ; 0x3c 111e6: f363 0100 bfi r1, r3, #0, #1 111ea: f884 103c strb.w r1, [r4, #60] ; 0x3c tmp = a->start; 111ee: 69a3 ldr r3, [r4, #24] a->start = a->end; 111f0: 69e0 ldr r0, [r4, #28] 111f2: 61a0 str r0, [r4, #24] a->end = tmp; 111f4: 61e3 str r3, [r4, #28] a->time = a->playback_now == 0 ? a->time_orig : a->playback_time; 111f6: f011 0f01 tst.w r1, #1 111fa: bf08 it eq 111fc: 6ba2 ldreq r2, [r4, #56] ; 0x38 111fe: 6222 str r2, [r4, #32] 11200: e7a9 b.n 11156 if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) { 11202: 6ae2 ldr r2, [r4, #44] ; 0x2c 11204: b102 cbz r2, 11208 11206: b333 cbz r3, 11256 _lv_memcpy(&a_tmp, a, sizeof(lv_anim_t)); 11208: 2240 movs r2, #64 ; 0x40 1120a: 4621 mov r1, r4 1120c: 4668 mov r0, sp 1120e: 4b1e ldr r3, [pc, #120] ; (11288 ) 11210: 4798 blx r3 _lv_ll_remove(&LV_GC_ROOT(_lv_anim_ll), a); 11212: 4621 mov r1, r4 11214: 4630 mov r0, r6 11216: 4b1d ldr r3, [pc, #116] ; (1128c ) 11218: 4798 blx r3 lv_mem_free(a); 1121a: 4620 mov r0, r4 1121c: 4b1c ldr r3, [pc, #112] ; (11290 ) 1121e: 4798 blx r3 anim_mark_list_change(); 11220: 4b1c ldr r3, [pc, #112] ; (11294 ) 11222: 4798 blx r3 if(a_tmp.ready_cb != NULL) a_tmp.ready_cb(&a_tmp); 11224: 9b03 ldr r3, [sp, #12] 11226: 2b00 cmp r3, #0 11228: d095 beq.n 11156 1122a: 4668 mov r0, sp 1122c: 4798 blx r3 1122e: e792 b.n 11156 last_task_run = lv_tick_get(); 11230: 4b19 ldr r3, [pc, #100] ; (11298 ) 11232: 4798 blx r3 11234: 4b11 ldr r3, [pc, #68] ; (1127c ) 11236: 6098 str r0, [r3, #8] } 11238: b011 add sp, #68 ; 0x44 1123a: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} a->act_time += elaps; 1123e: 6263 str r3, [r4, #36] ; 0x24 a = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); 11240: 4621 mov r1, r4 11242: 4630 mov r0, r6 11244: 4b0c ldr r3, [pc, #48] ; (11278 ) 11246: 4798 blx r3 11248: 4604 mov r4, r0 1124a: e78a b.n 11162 a->act_time += elaps; 1124c: 6263 str r3, [r4, #36] ; 0x24 1124e: e79c b.n 1118a if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) { 11250: 6ae2 ldr r2, [r4, #44] ; 0x2c 11252: 2a00 cmp r2, #0 11254: d0d8 beq.n 11208 if(a->playback_now == 0) a->act_time = -a->playback_delay; 11256: 6aa1 ldr r1, [r4, #40] ; 0x28 11258: 4249 negs r1, r1 1125a: 6261 str r1, [r4, #36] ; 0x24 1125c: e7bf b.n 111de a->act_time = -a->repeat_delay; /*Restart the animation*/ 1125e: 6b22 ldr r2, [r4, #48] ; 0x30 11260: 4252 negs r2, r2 11262: 6262 str r2, [r4, #36] ; 0x24 if(a->playback_time != 0) { 11264: 6ae2 ldr r2, [r4, #44] ; 0x2c 11266: 2a00 cmp r2, #0 11268: f43f af75 beq.w 11156 1126c: e7f3 b.n 11256 1126e: bf00 nop 11270: 20006d5c .word 0x20006d5c 11274: 00011fa9 .word 0x00011fa9 11278: 00011fbd .word 0x00011fbd 1127c: 20002b7c .word 0x20002b7c 11280: 00011071 .word 0x00011071 11284: 00011081 .word 0x00011081 11288: 00012655 .word 0x00012655 1128c: 00012095 .word 0x00012095 11290: 000124c5 .word 0x000124c5 11294: 000110a5 .word 0x000110a5 11298: 00011059 .word 0x00011059 0001129c <_lv_anim_core_init>: { 1129c: b538 push {r3, r4, r5, lr} _lv_ll_init(&LV_GC_ROOT(_lv_anim_ll), sizeof(lv_anim_t)); 1129e: 2140 movs r1, #64 ; 0x40 112a0: 4809 ldr r0, [pc, #36] ; (112c8 <_lv_anim_core_init+0x2c>) 112a2: 4b0a ldr r3, [pc, #40] ; (112cc <_lv_anim_core_init+0x30>) 112a4: 4798 blx r3 last_task_run = lv_tick_get(); 112a6: 4b0a ldr r3, [pc, #40] ; (112d0 <_lv_anim_core_init+0x34>) 112a8: 4798 blx r3 112aa: 4c0a ldr r4, [pc, #40] ; (112d4 <_lv_anim_core_init+0x38>) 112ac: 60a0 str r0, [r4, #8] _lv_anim_task = lv_task_create(anim_task, LV_DISP_DEF_REFR_PERIOD, LV_ANIM_TASK_PRIO, NULL); 112ae: 2300 movs r3, #0 112b0: 2204 movs r2, #4 112b2: 211e movs r1, #30 112b4: 4808 ldr r0, [pc, #32] ; (112d8 <_lv_anim_core_init+0x3c>) 112b6: 4d09 ldr r5, [pc, #36] ; (112dc <_lv_anim_core_init+0x40>) 112b8: 47a8 blx r5 112ba: 6060 str r0, [r4, #4] anim_mark_list_change(); /*Turn off the animation task*/ 112bc: 4b08 ldr r3, [pc, #32] ; (112e0 <_lv_anim_core_init+0x44>) 112be: 4798 blx r3 anim_list_changed = false; /*The list has not actaully changed*/ 112c0: 2300 movs r3, #0 112c2: 7023 strb r3, [r4, #0] 112c4: bd38 pop {r3, r4, r5, pc} 112c6: bf00 nop 112c8: 20006d5c .word 0x20006d5c 112cc: 00011ef9 .word 0x00011ef9 112d0: 00011059 .word 0x00011059 112d4: 20002b7c .word 0x20002b7c 112d8: 000110dd .word 0x000110dd 112dc: 000139e5 .word 0x000139e5 112e0: 000110a5 .word 0x000110a5 000112e4 : { 112e4: b510 push {r4, lr} 112e6: 4604 mov r4, r0 _lv_memset_00(a, sizeof(lv_anim_t)); 112e8: 2140 movs r1, #64 ; 0x40 112ea: 4b0d ldr r3, [pc, #52] ; (11320 ) 112ec: 4798 blx r3 a->time = 500; 112ee: f44f 73fa mov.w r3, #500 ; 0x1f4 112f2: 6223 str r3, [r4, #32] a->start = 0; 112f4: 2300 movs r3, #0 112f6: 61a3 str r3, [r4, #24] a->end = 100; 112f8: 2364 movs r3, #100 ; 0x64 112fa: 61e3 str r3, [r4, #28] { uint8_t * d8 = (uint8_t *)dst; const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; 112fc: 4b09 ldr r3, [pc, #36] ; (11324 ) 112fe: 781a ldrb r2, [r3, #0] 11300: 7422 strb r2, [r4, #16] 11302: 785a ldrb r2, [r3, #1] 11304: 7462 strb r2, [r4, #17] 11306: 789a ldrb r2, [r3, #2] 11308: 74a2 strb r2, [r4, #18] 1130a: 78db ldrb r3, [r3, #3] 1130c: 74e3 strb r3, [r4, #19] a->repeat_cnt = 1; 1130e: 2301 movs r3, #1 11310: 86a3 strh r3, [r4, #52] ; 0x34 a->early_apply = 1; 11312: f894 3036 ldrb.w r3, [r4, #54] ; 0x36 11316: f043 0301 orr.w r3, r3, #1 1131a: f884 3036 strb.w r3, [r4, #54] ; 0x36 1131e: bd10 pop {r4, pc} 11320: 00012b37 .word 0x00012b37 11324: 00029200 .word 0x00029200 00011328 : { 11328: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} 1132c: 4607 mov r7, r0 1132e: 4689 mov r9, r1 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); 11330: 4815 ldr r0, [pc, #84] ; (11388 ) 11332: 4b16 ldr r3, [pc, #88] ; (1138c ) 11334: 4798 blx r3 while(a != NULL) { 11336: b310 cbz r0, 1137e 11338: 4604 mov r4, r0 1133a: f04f 0a00 mov.w sl, #0 a_next = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); 1133e: f8df 8048 ldr.w r8, [pc, #72] ; 11388 11342: 4e13 ldr r6, [pc, #76] ; (11390 ) _lv_ll_remove(&LV_GC_ROOT(_lv_anim_ll), a); 11344: f8df b054 ldr.w fp, [pc, #84] ; 1139c 11348: e00b b.n 11362 1134a: 4621 mov r1, r4 1134c: 4640 mov r0, r8 1134e: 47d8 blx fp lv_mem_free(a); 11350: 4620 mov r0, r4 11352: 4b10 ldr r3, [pc, #64] ; (11394 ) 11354: 4798 blx r3 anim_mark_list_change(); /*Read by `anim_task`. It need to know if a delete occurred in 11356: 4b10 ldr r3, [pc, #64] ; (11398 ) 11358: 4798 blx r3 del = true; 1135a: f04f 0a01 mov.w sl, #1 1135e: 462c mov r4, r5 while(a != NULL) { 11360: b17d cbz r5, 11382 a_next = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); 11362: 4621 mov r1, r4 11364: 4640 mov r0, r8 11366: 47b0 blx r6 11368: 4605 mov r5, r0 if(a->var == var && (a->exec_cb == exec_cb || exec_cb == NULL)) { 1136a: 6823 ldr r3, [r4, #0] 1136c: 42bb cmp r3, r7 1136e: d1f6 bne.n 1135e 11370: 6863 ldr r3, [r4, #4] 11372: 454b cmp r3, r9 11374: d0e9 beq.n 1134a 11376: f1b9 0f00 cmp.w r9, #0 1137a: d1f0 bne.n 1135e 1137c: e7e5 b.n 1134a bool del = false; 1137e: f04f 0a00 mov.w sl, #0 } 11382: 4650 mov r0, sl 11384: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} 11388: 20006d5c .word 0x20006d5c 1138c: 00011fa9 .word 0x00011fa9 11390: 00011fbd .word 0x00011fbd 11394: 000124c5 .word 0x000124c5 11398: 000110a5 .word 0x000110a5 1139c: 00012095 .word 0x00012095 000113a0 : { 113a0: b530 push {r4, r5, lr} 113a2: b083 sub sp, #12 113a4: 4605 mov r5, r0 if(a->exec_cb != NULL) lv_anim_del(a->var, a->exec_cb); /*fp == NULL would delete all animations of var*/ 113a6: 6841 ldr r1, [r0, #4] 113a8: b111 cbz r1, 113b0 113aa: 6800 ldr r0, [r0, #0] 113ac: 4b1b ldr r3, [pc, #108] ; (1141c ) 113ae: 4798 blx r3 if(_lv_ll_is_empty(&LV_GC_ROOT(_lv_anim_ll))) { 113b0: 481b ldr r0, [pc, #108] ; (11420 ) 113b2: 4b1c ldr r3, [pc, #112] ; (11424 ) 113b4: 4798 blx r3 113b6: b9f0 cbnz r0, 113f6 lv_anim_t * new_anim = _lv_ll_ins_head(&LV_GC_ROOT(_lv_anim_ll)); 113b8: 4819 ldr r0, [pc, #100] ; (11420 ) 113ba: 4b1b ldr r3, [pc, #108] ; (11428 ) 113bc: 4798 blx r3 113be: 4604 mov r4, r0 LV_ASSERT_MEM(new_anim); 113c0: 4b1a ldr r3, [pc, #104] ; (1142c ) 113c2: 4798 blx r3 113c4: b1e8 cbz r0, 11402 if(new_anim == NULL) return; 113c6: b1a4 cbz r4, 113f2 a->time_orig = a->time; 113c8: 6a2b ldr r3, [r5, #32] 113ca: 63ab str r3, [r5, #56] ; 0x38 _lv_memcpy(new_anim, a, sizeof(lv_anim_t)); 113cc: 2240 movs r2, #64 ; 0x40 113ce: 4629 mov r1, r5 113d0: 4620 mov r0, r4 113d2: 4b17 ldr r3, [pc, #92] ; (11430 ) 113d4: 4798 blx r3 if(new_anim->early_apply) { 113d6: f894 3036 ldrb.w r3, [r4, #54] ; 0x36 113da: f013 0f01 tst.w r3, #1 113de: d006 beq.n 113ee if(new_anim->exec_cb && new_anim->var) new_anim->exec_cb(new_anim->var, new_anim->start); 113e0: 6863 ldr r3, [r4, #4] 113e2: b123 cbz r3, 113ee 113e4: 6820 ldr r0, [r4, #0] 113e6: b110 cbz r0, 113ee 113e8: f9b4 1018 ldrsh.w r1, [r4, #24] 113ec: 4798 blx r3 anim_mark_list_change(); 113ee: 4b11 ldr r3, [pc, #68] ; (11434 ) 113f0: 4798 blx r3 } 113f2: b003 add sp, #12 113f4: bd30 pop {r4, r5, pc} last_task_run = lv_tick_get() - 1; 113f6: 4b10 ldr r3, [pc, #64] ; (11438 ) 113f8: 4798 blx r3 113fa: 3801 subs r0, #1 113fc: 4b0f ldr r3, [pc, #60] ; (1143c ) 113fe: 6098 str r0, [r3, #8] 11400: e7da b.n 113b8 LV_ASSERT_MEM(new_anim); 11402: 4b0f ldr r3, [pc, #60] ; (11440 ) 11404: 9300 str r3, [sp, #0] 11406: 226a movs r2, #106 ; 0x6a 11408: 490e ldr r1, [pc, #56] ; (11444 ) 1140a: 2003 movs r0, #3 1140c: 4d0e ldr r5, [pc, #56] ; (11448 ) 1140e: 47a8 blx r5 11410: 4622 mov r2, r4 11412: 2300 movs r3, #0 11414: 480d ldr r0, [pc, #52] ; (1144c ) 11416: 490e ldr r1, [pc, #56] ; (11450 ) 11418: 4788 blx r1 1141a: e7fe b.n 1141a 1141c: 00011329 .word 0x00011329 11420: 20006d5c .word 0x20006d5c 11424: 00012245 .word 0x00012245 11428: 00011f11 .word 0x00011f11 1142c: 000022b1 .word 0x000022b1 11430: 00012655 .word 0x00012655 11434: 000110a5 .word 0x000110a5 11438: 00011059 .word 0x00011059 1143c: 20002b7c .word 0x20002b7c 11440: 00029208 .word 0x00029208 11444: 00029218 .word 0x00029218 11448: 0001225d .word 0x0001225d 1144c: 00023fd8 .word 0x00023fd8 11450: 000022b9 .word 0x000022b9 00011454 : { 11454: b5f8 push {r3, r4, r5, r6, r7, lr} 11456: 4604 mov r4, r0 11458: 460f mov r7, r1 _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { 1145a: 480a ldr r0, [pc, #40] ; (11484 ) 1145c: 4b0a ldr r3, [pc, #40] ; (11488 ) 1145e: 4798 blx r3 11460: 4601 mov r1, r0 11462: b160 cbz r0, 1147e 11464: 4e07 ldr r6, [pc, #28] ; (11484 ) 11466: 4d09 ldr r5, [pc, #36] ; (1148c ) 11468: e003 b.n 11472 1146a: 4630 mov r0, r6 1146c: 47a8 blx r5 1146e: 4601 mov r1, r0 11470: b128 cbz r0, 1147e if(a->var == var && a->exec_cb == exec_cb) { 11472: 680b ldr r3, [r1, #0] 11474: 42a3 cmp r3, r4 11476: d1f8 bne.n 1146a 11478: 684b ldr r3, [r1, #4] 1147a: 42bb cmp r3, r7 1147c: d1f5 bne.n 1146a } 1147e: 4608 mov r0, r1 11480: bdf8 pop {r3, r4, r5, r6, r7, pc} 11482: bf00 nop 11484: 20006d5c .word 0x20006d5c 11488: 00011fa9 .word 0x00011fa9 1148c: 00011fbd .word 0x00011fbd 00011490 : int32_t d = LV_MATH_ABS((int32_t)start - end); 11490: 1a89 subs r1, r1, r2 11492: 2900 cmp r1, #0 11494: bfb8 it lt 11496: 4249 neglt r1, r1 uint32_t time = (int32_t)((int32_t)(d * 1000) / speed); 11498: f44f 727a mov.w r2, #1000 ; 0x3e8 1149c: fb02 f201 mul.w r2, r2, r1 114a0: fb92 f0f0 sdiv r0, r2, r0 114a4: f64f 72ff movw r2, #65535 ; 0xffff 114a8: 4290 cmp r0, r2 114aa: bf28 it cs 114ac: 4610 movcs r0, r2 time++; 114ae: 2800 cmp r0, #0 114b0: bf08 it eq 114b2: 2001 moveq r0, #1 } 114b4: b280 uxth r0, r0 114b6: 4770 bx lr 000114b8 : /********************** * STATIC FUNCTIONS **********************/ static bool lv_point_within_circle(const lv_area_t * area, const lv_point_t * p) { 114b8: b430 push {r4, r5} lv_coord_t r = (area->x2 - area->x1) / 2; 114ba: f9b0 5000 ldrsh.w r5, [r0] 114be: f9b0 3004 ldrsh.w r3, [r0, #4] 114c2: 1b5b subs r3, r3, r5 114c4: eb03 73d3 add.w r3, r3, r3, lsr #31 114c8: 105b asrs r3, r3, #1 /* Circle center */ lv_coord_t cx = area->x1 + r; 114ca: b29c uxth r4, r3 lv_coord_t cy = area->y1 + r; /*Simplify the code by moving everything to (0, 0) */ lv_coord_t px = p->x - cx; 114cc: 880a ldrh r2, [r1, #0] 114ce: 1b52 subs r2, r2, r5 114d0: 1b12 subs r2, r2, r4 lv_coord_t py = p->y - cy; 114d2: 8849 ldrh r1, [r1, #2] 114d4: 8840 ldrh r0, [r0, #2] 114d6: 1a08 subs r0, r1, r0 114d8: 1b00 subs r0, r0, r4 int32_t r_sqrd = r * r; 114da: fb13 f303 smulbb r3, r3, r3 int32_t dist = (px * px) + (py * py); 114de: fb10 f000 smulbb r0, r0, r0 114e2: fb12 0202 smlabb r2, r2, r2, r0 if(dist <= r_sqrd) return true; else return false; } 114e6: 4293 cmp r3, r2 114e8: bfb4 ite lt 114ea: 2000 movlt r0, #0 114ec: 2001 movge r0, #1 114ee: bc30 pop {r4, r5} 114f0: 4770 bx lr 000114f2 : area_p->y2 = area_p->y1 + h - 1; 114f2: 3901 subs r1, #1 114f4: 8843 ldrh r3, [r0, #2] 114f6: 4419 add r1, r3 114f8: 80c1 strh r1, [r0, #6] 114fa: 4770 bx lr 000114fc : size = (uint32_t)(area_p->x2 - area_p->x1 + 1) * (area_p->y2 - area_p->y1 + 1); 114fc: f9b0 2004 ldrsh.w r2, [r0, #4] 11500: f9b0 3000 ldrsh.w r3, [r0] 11504: 1ad2 subs r2, r2, r3 11506: f9b0 3006 ldrsh.w r3, [r0, #6] 1150a: f9b0 0002 ldrsh.w r0, [r0, #2] 1150e: 1a18 subs r0, r3, r0 11510: 3001 adds r0, #1 } 11512: fb02 0000 mla r0, r2, r0, r0 11516: 4770 bx lr 00011518 <_lv_area_intersect>: { 11518: b470 push {r4, r5, r6} res_p->x1 = LV_MATH_MAX(a1_p->x1, a2_p->x1); 1151a: f9b2 5000 ldrsh.w r5, [r2] 1151e: f9b1 3000 ldrsh.w r3, [r1] 11522: 429d cmp r5, r3 11524: bfb8 it lt 11526: 461d movlt r5, r3 11528: 8005 strh r5, [r0, #0] res_p->y1 = LV_MATH_MAX(a1_p->y1, a2_p->y1); 1152a: f9b2 3002 ldrsh.w r3, [r2, #2] 1152e: f9b1 4002 ldrsh.w r4, [r1, #2] 11532: 42a3 cmp r3, r4 11534: bfb8 it lt 11536: 4623 movlt r3, r4 11538: 8043 strh r3, [r0, #2] res_p->x2 = LV_MATH_MIN(a1_p->x2, a2_p->x2); 1153a: f9b2 4004 ldrsh.w r4, [r2, #4] 1153e: f9b1 6004 ldrsh.w r6, [r1, #4] 11542: 42b4 cmp r4, r6 11544: bfa8 it ge 11546: 4634 movge r4, r6 11548: 8084 strh r4, [r0, #4] res_p->y2 = LV_MATH_MIN(a1_p->y2, a2_p->y2); 1154a: f9b2 2006 ldrsh.w r2, [r2, #6] 1154e: f9b1 1006 ldrsh.w r1, [r1, #6] 11552: 428a cmp r2, r1 11554: bfa8 it ge 11556: 460a movge r2, r1 11558: 80c2 strh r2, [r0, #6] if((res_p->x1 > res_p->x2) || (res_p->y1 > res_p->y2)) { 1155a: 42a5 cmp r5, r4 1155c: dc05 bgt.n 1156a <_lv_area_intersect+0x52> 1155e: 4293 cmp r3, r2 11560: bfcc ite gt 11562: 2000 movgt r0, #0 11564: 2001 movle r0, #1 } 11566: bc70 pop {r4, r5, r6} 11568: 4770 bx lr union_ok = false; 1156a: 2000 movs r0, #0 1156c: e7fb b.n 11566 <_lv_area_intersect+0x4e> 0001156e <_lv_area_join>: { 1156e: b410 push {r4} a_res_p->x1 = LV_MATH_MIN(a1_p->x1, a2_p->x1); 11570: f9b2 3000 ldrsh.w r3, [r2] 11574: f9b1 4000 ldrsh.w r4, [r1] 11578: 42a3 cmp r3, r4 1157a: bfa8 it ge 1157c: 4623 movge r3, r4 1157e: 8003 strh r3, [r0, #0] a_res_p->y1 = LV_MATH_MIN(a1_p->y1, a2_p->y1); 11580: f9b2 3002 ldrsh.w r3, [r2, #2] 11584: f9b1 4002 ldrsh.w r4, [r1, #2] 11588: 42a3 cmp r3, r4 1158a: bfa8 it ge 1158c: 4623 movge r3, r4 1158e: 8043 strh r3, [r0, #2] a_res_p->x2 = LV_MATH_MAX(a1_p->x2, a2_p->x2); 11590: f9b2 3004 ldrsh.w r3, [r2, #4] 11594: f9b1 4004 ldrsh.w r4, [r1, #4] 11598: 42a3 cmp r3, r4 1159a: bfb8 it lt 1159c: 4623 movlt r3, r4 1159e: 8083 strh r3, [r0, #4] a_res_p->y2 = LV_MATH_MAX(a1_p->y2, a2_p->y2); 115a0: f9b2 3006 ldrsh.w r3, [r2, #6] 115a4: f9b1 2006 ldrsh.w r2, [r1, #6] 115a8: 4293 cmp r3, r2 115aa: bfb8 it lt 115ac: 4613 movlt r3, r2 115ae: 80c3 strh r3, [r0, #6] } 115b0: f85d 4b04 ldr.w r4, [sp], #4 115b4: 4770 bx lr ... 000115b8 <_lv_area_is_point_on>: { 115b8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 115bc: b085 sub sp, #20 if((p_p->x >= a_p->x1 && p_p->x <= a_p->x2) && ((p_p->y >= a_p->y1 && p_p->y <= a_p->y2))) { 115be: f9b1 5000 ldrsh.w r5, [r1] 115c2: f9b0 e000 ldrsh.w lr, [r0] 115c6: 4575 cmp r5, lr 115c8: f2c0 809d blt.w 11706 <_lv_area_is_point_on+0x14e> 115cc: f9b0 8004 ldrsh.w r8, [r0, #4] 115d0: 4545 cmp r5, r8 115d2: f300 809c bgt.w 1170e <_lv_area_is_point_on+0x156> 115d6: f9b1 3002 ldrsh.w r3, [r1, #2] 115da: f9b0 a002 ldrsh.w sl, [r0, #2] 115de: 4553 cmp r3, sl 115e0: f2c0 8097 blt.w 11712 <_lv_area_is_point_on+0x15a> 115e4: f9b0 0006 ldrsh.w r0, [r0, #6] 115e8: 9001 str r0, [sp, #4] if(!is_on_rect) 115ea: 4283 cmp r3, r0 115ec: f300 8093 bgt.w 11716 <_lv_area_is_point_on+0x15e> if(radius <= 0) { 115f0: 2a00 cmp r2, #0 115f2: f340 8092 ble.w 1171a <_lv_area_is_point_on+0x162> 115f6: 468c mov ip, r1 * @param area_p pointer to an area * @return the width of the area (if x1 == x2 -> width = 1) */ static inline lv_coord_t lv_area_get_width(const lv_area_t * area_p) { return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 115f8: fa1f f988 uxth.w r9, r8 115fc: fa1f f68e uxth.w r6, lr * @param area_p pointer to an area * @return the height of the area (if y1 == y2 -> height = 1) */ static inline lv_coord_t lv_area_get_height(const lv_area_t * area_p) { return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 11600: b287 uxth r7, r0 11602: fa1f f58a uxth.w r5, sl corner_area.x1 = a_p->x1; 11606: f8ad e008 strh.w lr, [sp, #8] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1160a: f109 0301 add.w r3, r9, #1 1160e: 1b9b subs r3, r3, r6 lv_coord_t w = lv_area_get_width(a_p) / 2; 11610: b21b sxth r3, r3 11612: eb03 74d3 add.w r4, r3, r3, lsr #31 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 11616: 1c7b adds r3, r7, #1 11618: 1b5b subs r3, r3, r5 lv_coord_t h = lv_area_get_height(a_p) / 2; 1161a: b21b sxth r3, r3 1161c: eb03 71d3 add.w r1, r3, r3, lsr #31 lv_coord_t max_radius = LV_MATH_MIN(w, h); 11620: 1064 asrs r4, r4, #1 11622: 104b asrs r3, r1, #1 corner_area.x2 = a_p->x1 + radius; 11624: 42a3 cmp r3, r4 11626: bfa8 it ge 11628: 4623 movge r3, r4 1162a: 4293 cmp r3, r2 1162c: bfa8 it ge 1162e: 4613 movge r3, r2 11630: b29c uxth r4, r3 11632: 4426 add r6, r4 11634: b2b6 uxth r6, r6 11636: f8ad 600c strh.w r6, [sp, #12] corner_area.y1 = a_p->y1; 1163a: f8ad a00a strh.w sl, [sp, #10] corner_area.y2 = a_p->y1 + radius; 1163e: 4425 add r5, r4 11640: b2ad uxth r5, r5 11642: fa0f fb85 sxth.w fp, r5 11646: f8ad b00e strh.w fp, [sp, #14] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { 1164a: 2200 movs r2, #0 1164c: f8cd c000 str.w ip, [sp] 11650: 4661 mov r1, ip 11652: a802 add r0, sp, #8 11654: f7ff ffb0 bl 115b8 <_lv_area_is_point_on> 11658: b150 cbz r0, 11670 <_lv_area_is_point_on+0xb8> corner_area.x2 += radius; 1165a: 4426 add r6, r4 1165c: f8ad 600c strh.w r6, [sp, #12] corner_area.y2 += radius; 11660: 442c add r4, r5 11662: f8ad 400e strh.w r4, [sp, #14] return lv_point_within_circle(&corner_area, p_p); 11666: 9900 ldr r1, [sp, #0] 11668: a802 add r0, sp, #8 1166a: 4b2e ldr r3, [pc, #184] ; (11724 <_lv_area_is_point_on+0x16c>) 1166c: 4798 blx r3 1166e: e04b b.n 11708 <_lv_area_is_point_on+0x150> corner_area.y1 = a_p->y2 - radius; 11670: 1b3f subs r7, r7, r4 11672: b2bf uxth r7, r7 11674: f8ad 700a strh.w r7, [sp, #10] corner_area.y2 = a_p->y2; 11678: f8bd 3004 ldrh.w r3, [sp, #4] 1167c: f8ad 300e strh.w r3, [sp, #14] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { 11680: 2200 movs r2, #0 11682: 9900 ldr r1, [sp, #0] 11684: a802 add r0, sp, #8 11686: f7ff ff97 bl 115b8 <_lv_area_is_point_on> 1168a: b150 cbz r0, 116a2 <_lv_area_is_point_on+0xea> corner_area.x2 += radius; 1168c: 4426 add r6, r4 1168e: f8ad 600c strh.w r6, [sp, #12] corner_area.y1 -= radius; 11692: 1b3c subs r4, r7, r4 11694: f8ad 400a strh.w r4, [sp, #10] return lv_point_within_circle(&corner_area, p_p); 11698: 9900 ldr r1, [sp, #0] 1169a: a802 add r0, sp, #8 1169c: 4b21 ldr r3, [pc, #132] ; (11724 <_lv_area_is_point_on+0x16c>) 1169e: 4798 blx r3 116a0: e032 b.n 11708 <_lv_area_is_point_on+0x150> corner_area.x1 = a_p->x2 - radius; 116a2: eba9 0904 sub.w r9, r9, r4 116a6: fa1f f989 uxth.w r9, r9 116aa: f8ad 9008 strh.w r9, [sp, #8] corner_area.x2 = a_p->x2; 116ae: f8ad 800c strh.w r8, [sp, #12] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { 116b2: 2200 movs r2, #0 116b4: 9e00 ldr r6, [sp, #0] 116b6: 4631 mov r1, r6 116b8: a802 add r0, sp, #8 116ba: f7ff ff7d bl 115b8 <_lv_area_is_point_on> 116be: b158 cbz r0, 116d8 <_lv_area_is_point_on+0x120> corner_area.x1 -= radius; 116c0: eba9 0904 sub.w r9, r9, r4 116c4: f8ad 9008 strh.w r9, [sp, #8] corner_area.y1 -= radius; 116c8: 1b3c subs r4, r7, r4 116ca: f8ad 400a strh.w r4, [sp, #10] return lv_point_within_circle(&corner_area, p_p); 116ce: 4631 mov r1, r6 116d0: a802 add r0, sp, #8 116d2: 4b14 ldr r3, [pc, #80] ; (11724 <_lv_area_is_point_on+0x16c>) 116d4: 4798 blx r3 116d6: e017 b.n 11708 <_lv_area_is_point_on+0x150> corner_area.y1 = a_p->y1; 116d8: f8ad a00a strh.w sl, [sp, #10] corner_area.y2 = a_p->y1 + radius; 116dc: f8ad b00e strh.w fp, [sp, #14] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { 116e0: 2200 movs r2, #0 116e2: 9e00 ldr r6, [sp, #0] 116e4: 4631 mov r1, r6 116e6: a802 add r0, sp, #8 116e8: f7ff ff66 bl 115b8 <_lv_area_is_point_on> 116ec: b1b8 cbz r0, 1171e <_lv_area_is_point_on+0x166> corner_area.x1 -= radius; 116ee: eba9 0904 sub.w r9, r9, r4 116f2: f8ad 9008 strh.w r9, [sp, #8] corner_area.y2 += radius; 116f6: 442c add r4, r5 116f8: f8ad 400e strh.w r4, [sp, #14] return lv_point_within_circle(&corner_area, p_p); 116fc: 4631 mov r1, r6 116fe: a802 add r0, sp, #8 11700: 4b08 ldr r3, [pc, #32] ; (11724 <_lv_area_is_point_on+0x16c>) 11702: 4798 blx r3 11704: e000 b.n 11708 <_lv_area_is_point_on+0x150> return false; 11706: 2000 movs r0, #0 } 11708: b005 add sp, #20 1170a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} return false; 1170e: 2000 movs r0, #0 11710: e7fa b.n 11708 <_lv_area_is_point_on+0x150> 11712: 2000 movs r0, #0 11714: e7f8 b.n 11708 <_lv_area_is_point_on+0x150> 11716: 2000 movs r0, #0 11718: e7f6 b.n 11708 <_lv_area_is_point_on+0x150> return true; 1171a: 2001 movs r0, #1 1171c: e7f4 b.n 11708 <_lv_area_is_point_on+0x150> return true; 1171e: 2001 movs r0, #1 11720: e7f2 b.n 11708 <_lv_area_is_point_on+0x150> 11722: bf00 nop 11724: 000114b9 .word 0x000114b9 00011728 <_lv_area_is_on>: if((a1_p->x1 <= a2_p->x2) && (a1_p->x2 >= a2_p->x1) && (a1_p->y1 <= a2_p->y2) && (a1_p->y2 >= a2_p->y1)) { 11728: f9b0 2000 ldrsh.w r2, [r0] 1172c: f9b1 3004 ldrsh.w r3, [r1, #4] 11730: 429a cmp r2, r3 11732: dc14 bgt.n 1175e <_lv_area_is_on+0x36> 11734: f9b0 2004 ldrsh.w r2, [r0, #4] 11738: f9b1 3000 ldrsh.w r3, [r1] 1173c: 429a cmp r2, r3 1173e: db10 blt.n 11762 <_lv_area_is_on+0x3a> 11740: f9b0 2002 ldrsh.w r2, [r0, #2] 11744: f9b1 3006 ldrsh.w r3, [r1, #6] 11748: 429a cmp r2, r3 1174a: dc0c bgt.n 11766 <_lv_area_is_on+0x3e> 1174c: f9b0 0006 ldrsh.w r0, [r0, #6] 11750: f9b1 3002 ldrsh.w r3, [r1, #2] 11754: 4298 cmp r0, r3 11756: bfb4 ite lt 11758: 2000 movlt r0, #0 1175a: 2001 movge r0, #1 1175c: 4770 bx lr return false; 1175e: 2000 movs r0, #0 11760: 4770 bx lr 11762: 2000 movs r0, #0 11764: 4770 bx lr 11766: 2000 movs r0, #0 } 11768: 4770 bx lr ... 0001176c <_lv_area_is_in>: { 1176c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 11770: b082 sub sp, #8 if(ain_p->x1 >= aholder_p->x1 && ain_p->y1 >= aholder_p->y1 && ain_p->x2 <= aholder_p->x2 && 11772: f9b0 5000 ldrsh.w r5, [r0] 11776: f9b1 3000 ldrsh.w r3, [r1] 1177a: 42ab cmp r3, r5 1177c: dc14 bgt.n 117a8 <_lv_area_is_in+0x3c> 1177e: f9b0 4002 ldrsh.w r4, [r0, #2] 11782: f9b1 3002 ldrsh.w r3, [r1, #2] 11786: 429c cmp r4, r3 11788: db14 blt.n 117b4 <_lv_area_is_in+0x48> 1178a: f9b0 4004 ldrsh.w r4, [r0, #4] 1178e: f9b1 3004 ldrsh.w r3, [r1, #4] 11792: 429c cmp r4, r3 11794: dc10 bgt.n 117b8 <_lv_area_is_in+0x4c> 11796: f9b0 3006 ldrsh.w r3, [r0, #6] 1179a: f9b1 4006 ldrsh.w r4, [r1, #6] 1179e: 42a3 cmp r3, r4 117a0: bfcc ite gt 117a2: 2300 movgt r3, #0 117a4: 2301 movle r3, #1 117a6: e000 b.n 117aa <_lv_area_is_in+0x3e> bool is_in = false; 117a8: 2300 movs r3, #0 if(radius == 0) return is_in; 117aa: b93a cbnz r2, 117bc <_lv_area_is_in+0x50> } 117ac: 4618 mov r0, r3 117ae: b002 add sp, #8 117b0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} bool is_in = false; 117b4: 2300 movs r3, #0 117b6: e7f8 b.n 117aa <_lv_area_is_in+0x3e> 117b8: 2300 movs r3, #0 117ba: e7f6 b.n 117aa <_lv_area_is_in+0x3e> 117bc: 4617 mov r7, r2 117be: 460c mov r4, r1 117c0: 4606 mov r6, r0 p.x = ain_p->x1; 117c2: f8ad 5004 strh.w r5, [sp, #4] p.y = ain_p->y1; 117c6: 8843 ldrh r3, [r0, #2] 117c8: f8ad 3006 strh.w r3, [sp, #6] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; 117cc: a901 add r1, sp, #4 117ce: 4620 mov r0, r4 117d0: 4b13 ldr r3, [pc, #76] ; (11820 <_lv_area_is_in+0xb4>) 117d2: 4798 blx r3 117d4: 4603 mov r3, r0 117d6: 2800 cmp r0, #0 117d8: d0e8 beq.n 117ac <_lv_area_is_in+0x40> p.x = ain_p->x2; 117da: f9b6 8004 ldrsh.w r8, [r6, #4] 117de: a902 add r1, sp, #8 117e0: f821 8d04 strh.w r8, [r1, #-4]! if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; 117e4: 463a mov r2, r7 117e6: 4620 mov r0, r4 117e8: 4b0d ldr r3, [pc, #52] ; (11820 <_lv_area_is_in+0xb4>) 117ea: 4798 blx r3 117ec: 4603 mov r3, r0 117ee: 2800 cmp r0, #0 117f0: d0dc beq.n 117ac <_lv_area_is_in+0x40> p.x = ain_p->x1; 117f2: f8ad 5004 strh.w r5, [sp, #4] p.y = ain_p->y2; 117f6: 88f3 ldrh r3, [r6, #6] 117f8: f8ad 3006 strh.w r3, [sp, #6] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; 117fc: 463a mov r2, r7 117fe: a901 add r1, sp, #4 11800: 4620 mov r0, r4 11802: 4b07 ldr r3, [pc, #28] ; (11820 <_lv_area_is_in+0xb4>) 11804: 4798 blx r3 11806: 4603 mov r3, r0 11808: 2800 cmp r0, #0 1180a: d0cf beq.n 117ac <_lv_area_is_in+0x40> p.x = ain_p->x2; 1180c: a902 add r1, sp, #8 1180e: f821 8d04 strh.w r8, [r1, #-4]! if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; 11812: 463a mov r2, r7 11814: 4620 mov r0, r4 11816: 4b02 ldr r3, [pc, #8] ; (11820 <_lv_area_is_in+0xb4>) 11818: 4798 blx r3 1181a: 4603 mov r3, r0 1181c: e7c6 b.n 117ac <_lv_area_is_in+0x40> 1181e: bf00 nop 11820: 000115b9 .word 0x000115b9 00011824 <_lv_area_align>: { 11824: b430 push {r4, r5} switch(align) { 11826: 2a14 cmp r2, #20 11828: d83a bhi.n 118a0 <_lv_area_align+0x7c> 1182a: e8df f012 tbh [pc, r2, lsl #1] 1182e: 0015 .short 0x0015 11830: 00470043 .word 0x00470043 11834: 0067005c .word 0x0067005c 11838: 008d0072 .word 0x008d0072 1183c: 00b3009e .word 0x00b3009e 11840: 00d600ce .word 0x00d600ce 11844: 00fc00ee .word 0x00fc00ee 11848: 011c0104 .word 0x011c0104 1184c: 0132012a .word 0x0132012a 11850: 0158014a .word 0x0158014a 11854: 01780160 .word 0x01780160 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 11858: 8882 ldrh r2, [r0, #4] 1185a: 3201 adds r2, #1 1185c: 8804 ldrh r4, [r0, #0] 1185e: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; 11860: b212 sxth r2, r2 11862: eb02 74d2 add.w r4, r2, r2, lsr #31 11866: 888a ldrh r2, [r1, #4] 11868: 3201 adds r2, #1 1186a: 880d ldrh r5, [r1, #0] 1186c: 1b52 subs r2, r2, r5 1186e: b212 sxth r2, r2 11870: eb02 72d2 add.w r2, r2, r2, lsr #31 11874: 1052 asrs r2, r2, #1 11876: ebc2 0264 rsb r2, r2, r4, asr #1 1187a: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1187c: 88c2 ldrh r2, [r0, #6] 1187e: 3201 adds r2, #1 11880: 8844 ldrh r4, [r0, #2] 11882: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; 11884: b212 sxth r2, r2 11886: eb02 74d2 add.w r4, r2, r2, lsr #31 1188a: 88ca ldrh r2, [r1, #6] 1188c: 3201 adds r2, #1 1188e: 8849 ldrh r1, [r1, #2] 11890: 1a52 subs r2, r2, r1 11892: b212 sxth r2, r2 11894: eb02 72d2 add.w r2, r2, r2, lsr #31 11898: 1052 asrs r2, r2, #1 1189a: ebc2 0264 rsb r2, r2, r4, asr #1 1189e: 805a strh r2, [r3, #2] res->x += base->x1; 118a0: 881a ldrh r2, [r3, #0] 118a2: 8801 ldrh r1, [r0, #0] 118a4: 440a add r2, r1 118a6: 801a strh r2, [r3, #0] res->y += base->y1; 118a8: 885a ldrh r2, [r3, #2] 118aa: 8841 ldrh r1, [r0, #2] 118ac: 440a add r2, r1 118ae: 805a strh r2, [r3, #2] } 118b0: bc30 pop {r4, r5} 118b2: 4770 bx lr res->x = 0; 118b4: 2200 movs r2, #0 118b6: 801a strh r2, [r3, #0] res->y = 0; 118b8: 805a strh r2, [r3, #2] break; 118ba: e7f1 b.n 118a0 <_lv_area_align+0x7c> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 118bc: 8882 ldrh r2, [r0, #4] 118be: 3201 adds r2, #1 118c0: 8804 ldrh r4, [r0, #0] 118c2: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; 118c4: b212 sxth r2, r2 118c6: eb02 74d2 add.w r4, r2, r2, lsr #31 118ca: 888a ldrh r2, [r1, #4] 118cc: 3201 adds r2, #1 118ce: 8809 ldrh r1, [r1, #0] 118d0: 1a52 subs r2, r2, r1 118d2: b212 sxth r2, r2 118d4: eb02 72d2 add.w r2, r2, r2, lsr #31 118d8: 1052 asrs r2, r2, #1 118da: ebc2 0264 rsb r2, r2, r4, asr #1 118de: 801a strh r2, [r3, #0] res->y = 0; 118e0: 2200 movs r2, #0 118e2: 805a strh r2, [r3, #2] break; 118e4: e7dc b.n 118a0 <_lv_area_align+0x7c> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); 118e6: 8882 ldrh r2, [r0, #4] 118e8: 888c ldrh r4, [r1, #4] 118ea: 1b12 subs r2, r2, r4 118ec: 8804 ldrh r4, [r0, #0] 118ee: 1b12 subs r2, r2, r4 118f0: 8809 ldrh r1, [r1, #0] 118f2: 440a add r2, r1 118f4: 801a strh r2, [r3, #0] res->y = 0; 118f6: 2200 movs r2, #0 118f8: 805a strh r2, [r3, #2] break; 118fa: e7d1 b.n 118a0 <_lv_area_align+0x7c> res->x = 0; 118fc: 2200 movs r2, #0 118fe: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); 11900: 88c2 ldrh r2, [r0, #6] 11902: 88cc ldrh r4, [r1, #6] 11904: 1b12 subs r2, r2, r4 11906: 8844 ldrh r4, [r0, #2] 11908: 1b12 subs r2, r2, r4 1190a: 8849 ldrh r1, [r1, #2] 1190c: 440a add r2, r1 1190e: 805a strh r2, [r3, #2] break; 11910: e7c6 b.n 118a0 <_lv_area_align+0x7c> 11912: 8882 ldrh r2, [r0, #4] 11914: 3201 adds r2, #1 11916: 8804 ldrh r4, [r0, #0] 11918: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; 1191a: b212 sxth r2, r2 1191c: eb02 74d2 add.w r4, r2, r2, lsr #31 11920: 888a ldrh r2, [r1, #4] 11922: 3201 adds r2, #1 11924: 880d ldrh r5, [r1, #0] 11926: 1b52 subs r2, r2, r5 11928: b212 sxth r2, r2 1192a: eb02 72d2 add.w r2, r2, r2, lsr #31 1192e: 1052 asrs r2, r2, #1 11930: ebc2 0264 rsb r2, r2, r4, asr #1 11934: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); 11936: 88c2 ldrh r2, [r0, #6] 11938: 88cc ldrh r4, [r1, #6] 1193a: 1b12 subs r2, r2, r4 1193c: 8844 ldrh r4, [r0, #2] 1193e: 1b12 subs r2, r2, r4 11940: 8849 ldrh r1, [r1, #2] 11942: 440a add r2, r1 11944: 805a strh r2, [r3, #2] break; 11946: e7ab b.n 118a0 <_lv_area_align+0x7c> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); 11948: 8882 ldrh r2, [r0, #4] 1194a: 888c ldrh r4, [r1, #4] 1194c: 1b12 subs r2, r2, r4 1194e: 8804 ldrh r4, [r0, #0] 11950: 1b12 subs r2, r2, r4 11952: 880c ldrh r4, [r1, #0] 11954: 4422 add r2, r4 11956: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); 11958: 88c2 ldrh r2, [r0, #6] 1195a: 88cc ldrh r4, [r1, #6] 1195c: 1b12 subs r2, r2, r4 1195e: 8844 ldrh r4, [r0, #2] 11960: 1b12 subs r2, r2, r4 11962: 8849 ldrh r1, [r1, #2] 11964: 440a add r2, r1 11966: 805a strh r2, [r3, #2] break; 11968: e79a b.n 118a0 <_lv_area_align+0x7c> res->x = 0; 1196a: 2200 movs r2, #0 1196c: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1196e: 88c2 ldrh r2, [r0, #6] 11970: 3201 adds r2, #1 11972: 8844 ldrh r4, [r0, #2] 11974: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; 11976: b212 sxth r2, r2 11978: eb02 74d2 add.w r4, r2, r2, lsr #31 1197c: 88ca ldrh r2, [r1, #6] 1197e: 3201 adds r2, #1 11980: 8849 ldrh r1, [r1, #2] 11982: 1a52 subs r2, r2, r1 11984: b212 sxth r2, r2 11986: eb02 72d2 add.w r2, r2, r2, lsr #31 1198a: 1052 asrs r2, r2, #1 1198c: ebc2 0264 rsb r2, r2, r4, asr #1 11990: 805a strh r2, [r3, #2] break; 11992: e785 b.n 118a0 <_lv_area_align+0x7c> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); 11994: 8882 ldrh r2, [r0, #4] 11996: 888c ldrh r4, [r1, #4] 11998: 1b12 subs r2, r2, r4 1199a: 8804 ldrh r4, [r0, #0] 1199c: 1b12 subs r2, r2, r4 1199e: 880c ldrh r4, [r1, #0] 119a0: 4422 add r2, r4 119a2: 801a strh r2, [r3, #0] 119a4: 88c2 ldrh r2, [r0, #6] 119a6: 3201 adds r2, #1 119a8: 8844 ldrh r4, [r0, #2] 119aa: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; 119ac: b212 sxth r2, r2 119ae: eb02 74d2 add.w r4, r2, r2, lsr #31 119b2: 88ca ldrh r2, [r1, #6] 119b4: 3201 adds r2, #1 119b6: 8849 ldrh r1, [r1, #2] 119b8: 1a52 subs r2, r2, r1 119ba: b212 sxth r2, r2 119bc: eb02 72d2 add.w r2, r2, r2, lsr #31 119c0: 1052 asrs r2, r2, #1 119c2: ebc2 0264 rsb r2, r2, r4, asr #1 119c6: 805a strh r2, [r3, #2] break; 119c8: e76a b.n 118a0 <_lv_area_align+0x7c> res->x = 0; 119ca: 2200 movs r2, #0 119cc: 801a strh r2, [r3, #0] 119ce: 88ca ldrh r2, [r1, #6] 119d0: 8849 ldrh r1, [r1, #2] 119d2: 1a52 subs r2, r2, r1 res->y = -lv_area_get_height(to_align); 119d4: 43d2 mvns r2, r2 119d6: 805a strh r2, [r3, #2] break; 119d8: e762 b.n 118a0 <_lv_area_align+0x7c> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 119da: 8882 ldrh r2, [r0, #4] 119dc: 3201 adds r2, #1 119de: 8804 ldrh r4, [r0, #0] 119e0: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; 119e2: b212 sxth r2, r2 119e4: eb02 74d2 add.w r4, r2, r2, lsr #31 119e8: 888a ldrh r2, [r1, #4] 119ea: 3201 adds r2, #1 119ec: 880d ldrh r5, [r1, #0] 119ee: 1b52 subs r2, r2, r5 119f0: b212 sxth r2, r2 119f2: eb02 72d2 add.w r2, r2, r2, lsr #31 119f6: 1052 asrs r2, r2, #1 119f8: ebc2 0264 rsb r2, r2, r4, asr #1 119fc: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 119fe: 88ca ldrh r2, [r1, #6] 11a00: 8849 ldrh r1, [r1, #2] 11a02: 1a52 subs r2, r2, r1 res->y = -lv_area_get_height(to_align); 11a04: 43d2 mvns r2, r2 11a06: 805a strh r2, [r3, #2] break; 11a08: e74a b.n 118a0 <_lv_area_align+0x7c> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); 11a0a: 8882 ldrh r2, [r0, #4] 11a0c: 888c ldrh r4, [r1, #4] 11a0e: 1b12 subs r2, r2, r4 11a10: 8804 ldrh r4, [r0, #0] 11a12: 1b12 subs r2, r2, r4 11a14: 880c ldrh r4, [r1, #0] 11a16: 4422 add r2, r4 11a18: 801a strh r2, [r3, #0] 11a1a: 88ca ldrh r2, [r1, #6] 11a1c: 8849 ldrh r1, [r1, #2] 11a1e: 1a52 subs r2, r2, r1 res->y = -lv_area_get_height(to_align); 11a20: 43d2 mvns r2, r2 11a22: 805a strh r2, [r3, #2] break; 11a24: e73c b.n 118a0 <_lv_area_align+0x7c> res->x = 0; 11a26: 2200 movs r2, #0 11a28: 801a strh r2, [r3, #0] 11a2a: 88c2 ldrh r2, [r0, #6] 11a2c: 3201 adds r2, #1 11a2e: 8841 ldrh r1, [r0, #2] 11a30: 1a52 subs r2, r2, r1 res->y = lv_area_get_height(base); 11a32: 805a strh r2, [r3, #2] break; 11a34: e734 b.n 118a0 <_lv_area_align+0x7c> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 11a36: 8882 ldrh r2, [r0, #4] 11a38: 3201 adds r2, #1 11a3a: 8804 ldrh r4, [r0, #0] 11a3c: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; 11a3e: b212 sxth r2, r2 11a40: eb02 74d2 add.w r4, r2, r2, lsr #31 11a44: 888a ldrh r2, [r1, #4] 11a46: 3201 adds r2, #1 11a48: 8809 ldrh r1, [r1, #0] 11a4a: 1a52 subs r2, r2, r1 11a4c: b212 sxth r2, r2 11a4e: eb02 72d2 add.w r2, r2, r2, lsr #31 11a52: 1052 asrs r2, r2, #1 11a54: ebc2 0264 rsb r2, r2, r4, asr #1 11a58: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 11a5a: 88c2 ldrh r2, [r0, #6] 11a5c: 3201 adds r2, #1 11a5e: 8841 ldrh r1, [r0, #2] 11a60: 1a52 subs r2, r2, r1 res->y = lv_area_get_height(base); 11a62: 805a strh r2, [r3, #2] break; 11a64: e71c b.n 118a0 <_lv_area_align+0x7c> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); 11a66: 8882 ldrh r2, [r0, #4] 11a68: 888c ldrh r4, [r1, #4] 11a6a: 1b12 subs r2, r2, r4 11a6c: 8804 ldrh r4, [r0, #0] 11a6e: 1b12 subs r2, r2, r4 11a70: 8809 ldrh r1, [r1, #0] 11a72: 440a add r2, r1 11a74: 801a strh r2, [r3, #0] 11a76: 88c2 ldrh r2, [r0, #6] 11a78: 3201 adds r2, #1 11a7a: 8841 ldrh r1, [r0, #2] 11a7c: 1a52 subs r2, r2, r1 res->y = lv_area_get_height(base); 11a7e: 805a strh r2, [r3, #2] break; 11a80: e70e b.n 118a0 <_lv_area_align+0x7c> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 11a82: 888a ldrh r2, [r1, #4] 11a84: 8809 ldrh r1, [r1, #0] 11a86: 1a52 subs r2, r2, r1 res->x = -lv_area_get_width(to_align); 11a88: 43d2 mvns r2, r2 11a8a: 801a strh r2, [r3, #0] res->y = 0; 11a8c: 2200 movs r2, #0 11a8e: 805a strh r2, [r3, #2] break; 11a90: e706 b.n 118a0 <_lv_area_align+0x7c> 11a92: 888a ldrh r2, [r1, #4] 11a94: 880c ldrh r4, [r1, #0] 11a96: 1b12 subs r2, r2, r4 res->x = -lv_area_get_width(to_align); 11a98: 43d2 mvns r2, r2 11a9a: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 11a9c: 88c2 ldrh r2, [r0, #6] 11a9e: 3201 adds r2, #1 11aa0: 8844 ldrh r4, [r0, #2] 11aa2: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; 11aa4: b212 sxth r2, r2 11aa6: eb02 74d2 add.w r4, r2, r2, lsr #31 11aaa: 88ca ldrh r2, [r1, #6] 11aac: 3201 adds r2, #1 11aae: 8849 ldrh r1, [r1, #2] 11ab0: 1a52 subs r2, r2, r1 11ab2: b212 sxth r2, r2 11ab4: eb02 72d2 add.w r2, r2, r2, lsr #31 11ab8: 1052 asrs r2, r2, #1 11aba: ebc2 0264 rsb r2, r2, r4, asr #1 11abe: 805a strh r2, [r3, #2] break; 11ac0: e6ee b.n 118a0 <_lv_area_align+0x7c> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 11ac2: 888a ldrh r2, [r1, #4] 11ac4: 880c ldrh r4, [r1, #0] 11ac6: 1b12 subs r2, r2, r4 res->x = -lv_area_get_width(to_align); 11ac8: 43d2 mvns r2, r2 11aca: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); 11acc: 88c2 ldrh r2, [r0, #6] 11ace: 88cc ldrh r4, [r1, #6] 11ad0: 1b12 subs r2, r2, r4 11ad2: 8844 ldrh r4, [r0, #2] 11ad4: 1b12 subs r2, r2, r4 11ad6: 8849 ldrh r1, [r1, #2] 11ad8: 440a add r2, r1 11ada: 805a strh r2, [r3, #2] break; 11adc: e6e0 b.n 118a0 <_lv_area_align+0x7c> 11ade: 8882 ldrh r2, [r0, #4] 11ae0: 3201 adds r2, #1 11ae2: 8801 ldrh r1, [r0, #0] 11ae4: 1a52 subs r2, r2, r1 res->x = lv_area_get_width(base); 11ae6: 801a strh r2, [r3, #0] res->y = 0; 11ae8: 2200 movs r2, #0 11aea: 805a strh r2, [r3, #2] break; 11aec: e6d8 b.n 118a0 <_lv_area_align+0x7c> 11aee: 8882 ldrh r2, [r0, #4] 11af0: 3201 adds r2, #1 11af2: 8804 ldrh r4, [r0, #0] 11af4: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base); 11af6: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 11af8: 88c2 ldrh r2, [r0, #6] 11afa: 3201 adds r2, #1 11afc: 8844 ldrh r4, [r0, #2] 11afe: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; 11b00: b212 sxth r2, r2 11b02: eb02 74d2 add.w r4, r2, r2, lsr #31 11b06: 88ca ldrh r2, [r1, #6] 11b08: 3201 adds r2, #1 11b0a: 8849 ldrh r1, [r1, #2] 11b0c: 1a52 subs r2, r2, r1 11b0e: b212 sxth r2, r2 11b10: eb02 72d2 add.w r2, r2, r2, lsr #31 11b14: 1052 asrs r2, r2, #1 11b16: ebc2 0264 rsb r2, r2, r4, asr #1 11b1a: 805a strh r2, [r3, #2] break; 11b1c: e6c0 b.n 118a0 <_lv_area_align+0x7c> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 11b1e: 8882 ldrh r2, [r0, #4] 11b20: 3201 adds r2, #1 11b22: 8804 ldrh r4, [r0, #0] 11b24: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base); 11b26: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); 11b28: 88c2 ldrh r2, [r0, #6] 11b2a: 88cc ldrh r4, [r1, #6] 11b2c: 1b12 subs r2, r2, r4 11b2e: 8844 ldrh r4, [r0, #2] 11b30: 1b12 subs r2, r2, r4 11b32: 8849 ldrh r1, [r1, #2] 11b34: 440a add r2, r1 11b36: 805a strh r2, [r3, #2] break; 11b38: e6b2 b.n 118a0 <_lv_area_align+0x7c> 00011b3a : /********************** * STATIC FUNCTIONS **********************/ LV_ATTRIBUTE_FAST_MEM void lv_color_fill(lv_color_t * buf, lv_color_t color, uint32_t px_num) { 11b3a: b430 push {r4, r5} 11b3c: b28d uxth r5, r1 #if LV_COLOR_DEPTH == 16 uintptr_t buf_int = (uintptr_t) buf; if(buf_int & 0x3) { 11b3e: f010 0f03 tst.w r0, #3 *buf = color; 11b42: bf1c itt ne 11b44: f820 1b02 strhne.w r1, [r0], #2 buf++; px_num--; 11b48: f102 32ff addne.w r2, r2, #4294967295 } uint32_t c32 = color.full + (color.full << 16); 11b4c: eb05 4105 add.w r1, r5, r5, lsl #16 uint32_t * buf32 = (uint32_t *)buf; while(px_num > 16) { 11b50: 2a10 cmp r2, #16 11b52: d921 bls.n 11b98 11b54: f100 0320 add.w r3, r0, #32 11b58: 4614 mov r4, r2 *buf32 = c32; 11b5a: f843 1c20 str.w r1, [r3, #-32] buf32++; *buf32 = c32; 11b5e: f843 1c1c str.w r1, [r3, #-28] buf32++; *buf32 = c32; 11b62: f843 1c18 str.w r1, [r3, #-24] buf32++; *buf32 = c32; 11b66: f843 1c14 str.w r1, [r3, #-20] buf32++; *buf32 = c32; 11b6a: f843 1c10 str.w r1, [r3, #-16] buf32++; *buf32 = c32; 11b6e: f843 1c0c str.w r1, [r3, #-12] buf32++; *buf32 = c32; 11b72: f843 1c08 str.w r1, [r3, #-8] buf32++; *buf32 = c32; 11b76: f843 1c04 str.w r1, [r3, #-4] buf32++; px_num -= 16; 11b7a: 3c10 subs r4, #16 11b7c: 3320 adds r3, #32 while(px_num > 16) { 11b7e: 2c10 cmp r4, #16 11b80: d8eb bhi.n 11b5a 11b82: f1a2 0311 sub.w r3, r2, #17 11b86: 091b lsrs r3, r3, #4 11b88: 1c59 adds r1, r3, #1 11b8a: 3a10 subs r2, #16 11b8c: ebc3 7303 rsb r3, r3, r3, lsl #28 11b90: eb02 1203 add.w r2, r2, r3, lsl #4 buf32++; 11b94: eb00 1041 add.w r0, r0, r1, lsl #5 } buf = (lv_color_t *)buf32; while(px_num) { 11b98: b11a cbz r2, 11ba2 *buf = color; 11b9a: f820 5b02 strh.w r5, [r0], #2 while(px_num) { 11b9e: 3a01 subs r2, #1 11ba0: d1fb bne.n 11b9a *buf = color; buf++; px_num --; } #endif } 11ba2: bc30 pop {r4, r5} 11ba4: 4770 bx lr 00011ba6 : lv_color_t lv_color_lighten(lv_color_t c, lv_opa_t lvl) { 11ba6: b430 push {r4, r5} LV_ATTRIBUTE_FAST_MEM static inline lv_color_t lv_color_mix(lv_color_t c1, lv_color_t c2, uint8_t mix) { lv_color_t ret; #if LV_COLOR_DEPTH != 1 /*LV_COLOR_DEPTH == 8, 16 or 32*/ LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 11ba8: ebc1 1541 rsb r5, r1, r1, lsl #5 11bac: f1c1 04ff rsb r4, r1, #255 ; 0xff 11bb0: f3c0 23c4 ubfx r3, r0, #11, #5 11bb4: fb04 5303 mla r3, r4, r3, r5 11bb8: eb03 2203 add.w r2, r3, r3, lsl #8 11bbc: eb03 13c2 add.w r3, r3, r2, lsl #7 11bc0: f3c3 52c4 ubfx r2, r3, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 11bc4: f3c0 1345 ubfx r3, r0, #5, #6 11bc8: ebc1 1181 rsb r1, r1, r1, lsl #6 11bcc: fb04 1103 mla r1, r4, r3, r1 11bd0: eb01 2301 add.w r3, r1, r1, lsl #8 11bd4: eb01 11c3 add.w r1, r1, r3, lsl #7 11bd8: f3c1 51c5 ubfx r1, r1, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 11bdc: f000 001f and.w r0, r0, #31 11be0: fb04 5000 mla r0, r4, r0, r5 11be4: eb00 2300 add.w r3, r0, r0, lsl #8 11be8: eb00 10c3 add.w r0, r0, r3, lsl #7 11bec: 0dc3 lsrs r3, r0, #23 11bee: f04f 0000 mov.w r0, #0 11bf2: f363 0004 bfi r0, r3, #0, #5 11bf6: f361 104a bfi r0, r1, #5, #6 11bfa: f362 20cf bfi r0, r2, #11, #5 return lv_color_mix(LV_COLOR_WHITE, c, lvl); } 11bfe: bc30 pop {r4, r5} 11c00: 4770 bx lr 00011c02 : lv_color_t lv_color_darken(lv_color_t c, lv_opa_t lvl) { 11c02: b410 push {r4} LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 11c04: f1c1 01ff rsb r1, r1, #255 ; 0xff 11c08: f3c0 23c4 ubfx r3, r0, #11, #5 11c0c: fb01 f303 mul.w r3, r1, r3 11c10: eb03 2203 add.w r2, r3, r3, lsl #8 11c14: eb03 13c2 add.w r3, r3, r2, lsl #7 11c18: f3c3 53c4 ubfx r3, r3, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 11c1c: f3c0 1245 ubfx r2, r0, #5, #6 11c20: fb01 f202 mul.w r2, r1, r2 11c24: eb02 2402 add.w r4, r2, r2, lsl #8 11c28: eb02 12c4 add.w r2, r2, r4, lsl #7 11c2c: f3c2 52c5 ubfx r2, r2, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 11c30: f000 001f and.w r0, r0, #31 11c34: fb01 f100 mul.w r1, r1, r0 11c38: eb01 2001 add.w r0, r1, r1, lsl #8 11c3c: eb01 11c0 add.w r1, r1, r0, lsl #7 11c40: 0dc9 lsrs r1, r1, #23 11c42: f04f 0000 mov.w r0, #0 11c46: f361 0004 bfi r0, r1, #0, #5 11c4a: f362 104a bfi r0, r2, #5, #6 11c4e: f363 20cf bfi r0, r3, #11, #5 return lv_color_mix(LV_COLOR_BLACK, c, lvl); } 11c52: f85d 4b04 ldr.w r4, [sp], #4 11c56: 4770 bx lr 00011c58 : static const char * lv_fs_get_real_path(const char * path) { /* Example path: "S:/folder/file.txt" * Leave the letter and the : / \ characters*/ path++; /*Ignore the driver letter*/ 11c58: 1c42 adds r2, r0, #1 while(*path != '\0') { 11c5a: 7843 ldrb r3, [r0, #1] 11c5c: b91b cbnz r3, 11c66 11c5e: e008 b.n 11c72 11c60: f812 3f01 ldrb.w r3, [r2, #1]! 11c64: b12b cbz r3, 11c72 if(*path == ':' || *path == '\\' || *path == '/') { 11c66: 2b3a cmp r3, #58 ; 0x3a 11c68: d0fa beq.n 11c60 11c6a: 2b5c cmp r3, #92 ; 0x5c 11c6c: d0f8 beq.n 11c60 11c6e: 2b2f cmp r3, #47 ; 0x2f 11c70: d0f6 beq.n 11c60 break; } } return path; } 11c72: 4610 mov r0, r2 11c74: 4770 bx lr ... 00011c78 <_lv_fs_init>: { 11c78: b508 push {r3, lr} _lv_ll_init(&LV_GC_ROOT(_lv_drv_ll), sizeof(lv_fs_drv_t)); 11c7a: 2144 movs r1, #68 ; 0x44 11c7c: 4801 ldr r0, [pc, #4] ; (11c84 <_lv_fs_init+0xc>) 11c7e: 4b02 ldr r3, [pc, #8] ; (11c88 <_lv_fs_init+0x10>) 11c80: 4798 blx r3 11c82: bd08 pop {r3, pc} 11c84: 20006d30 .word 0x20006d30 11c88: 00011ef9 .word 0x00011ef9 00011c8c : { 11c8c: b538 push {r3, r4, r5, lr} if(file_p->drv == NULL) { 11c8e: 6843 ldr r3, [r0, #4] 11c90: b173 cbz r3, 11cb0 if(file_p->drv->close_cb == NULL) { 11c92: 691a ldr r2, [r3, #16] 11c94: b172 cbz r2, 11cb4 11c96: 4604 mov r4, r0 lv_fs_res_t res = file_p->drv->close_cb(file_p->drv, file_p->file_d); 11c98: 6801 ldr r1, [r0, #0] 11c9a: 4618 mov r0, r3 11c9c: 4790 blx r2 11c9e: 4605 mov r5, r0 lv_mem_free(file_p->file_d); /*Clean up*/ 11ca0: 6820 ldr r0, [r4, #0] 11ca2: 4b05 ldr r3, [pc, #20] ; (11cb8 ) 11ca4: 4798 blx r3 file_p->file_d = NULL; 11ca6: 2300 movs r3, #0 11ca8: 6023 str r3, [r4, #0] file_p->drv = NULL; 11caa: 6063 str r3, [r4, #4] } 11cac: 4628 mov r0, r5 11cae: bd38 pop {r3, r4, r5, pc} return LV_FS_RES_INV_PARAM; 11cb0: 250b movs r5, #11 11cb2: e7fb b.n 11cac return LV_FS_RES_NOT_IMP; 11cb4: 2509 movs r5, #9 11cb6: e7f9 b.n 11cac 11cb8: 000124c5 .word 0x000124c5 00011cbc : { 11cbc: b5f0 push {r4, r5, r6, r7, lr} 11cbe: b085 sub sp, #20 if(br != NULL) *br = 0; 11cc0: 461e mov r6, r3 11cc2: b10b cbz r3, 11cc8 11cc4: 2300 movs r3, #0 11cc6: 6033 str r3, [r6, #0] if(file_p->drv == NULL) return LV_FS_RES_INV_PARAM; 11cc8: 6845 ldr r5, [r0, #4] 11cca: b18d cbz r5, 11cf0 if(file_p->drv->read_cb == NULL) return LV_FS_RES_NOT_IMP; 11ccc: 69af ldr r7, [r5, #24] 11cce: b18f cbz r7, 11cf4 11cd0: 4613 mov r3, r2 11cd2: 460a mov r2, r1 11cd4: 4604 mov r4, r0 uint32_t br_tmp = 0; 11cd6: a804 add r0, sp, #16 11cd8: 2100 movs r1, #0 11cda: f840 1d04 str.w r1, [r0, #-4]! lv_fs_res_t res = file_p->drv->read_cb(file_p->drv, file_p->file_d, buf, btr, &br_tmp); 11cde: 6821 ldr r1, [r4, #0] 11ce0: 9000 str r0, [sp, #0] 11ce2: 4628 mov r0, r5 11ce4: 47b8 blx r7 if(br != NULL) *br = br_tmp; 11ce6: b10e cbz r6, 11cec 11ce8: 9b03 ldr r3, [sp, #12] 11cea: 6033 str r3, [r6, #0] } 11cec: b005 add sp, #20 11cee: bdf0 pop {r4, r5, r6, r7, pc} if(file_p->drv == NULL) return LV_FS_RES_INV_PARAM; 11cf0: 200b movs r0, #11 11cf2: e7fb b.n 11cec if(file_p->drv->read_cb == NULL) return LV_FS_RES_NOT_IMP; 11cf4: 2009 movs r0, #9 11cf6: e7f9 b.n 11cec 00011cf8 : { 11cf8: b538 push {r3, r4, r5, lr} if(file_p->drv == NULL) { 11cfa: 6844 ldr r4, [r0, #4] 11cfc: b134 cbz r4, 11d0c if(file_p->drv->seek_cb == NULL) { 11cfe: 6a25 ldr r5, [r4, #32] 11d00: b135 cbz r5, 11d10 11d02: 460a mov r2, r1 lv_fs_res_t res = file_p->drv->seek_cb(file_p->drv, file_p->file_d, pos); 11d04: 6801 ldr r1, [r0, #0] 11d06: 4620 mov r0, r4 11d08: 47a8 blx r5 return res; 11d0a: bd38 pop {r3, r4, r5, pc} return LV_FS_RES_INV_PARAM; 11d0c: 200b movs r0, #11 11d0e: bd38 pop {r3, r4, r5, pc} return LV_FS_RES_NOT_IMP; 11d10: 2009 movs r0, #9 } 11d12: bd38 pop {r3, r4, r5, pc} 00011d14 : { 11d14: b570 push {r4, r5, r6, lr} 11d16: 4604 mov r4, r0 _LV_LL_READ(LV_GC_ROOT(_lv_drv_ll), drv) { 11d18: 4809 ldr r0, [pc, #36] ; (11d40 ) 11d1a: 4b0a ldr r3, [pc, #40] ; (11d44 ) 11d1c: 4798 blx r3 11d1e: 4601 mov r1, r0 11d20: b158 cbz r0, 11d3a if(drv->letter == letter) { 11d22: 7803 ldrb r3, [r0, #0] 11d24: 42a3 cmp r3, r4 11d26: d008 beq.n 11d3a _LV_LL_READ(LV_GC_ROOT(_lv_drv_ll), drv) { 11d28: 4e05 ldr r6, [pc, #20] ; (11d40 ) 11d2a: 4d07 ldr r5, [pc, #28] ; (11d48 ) 11d2c: 4630 mov r0, r6 11d2e: 47a8 blx r5 11d30: 4601 mov r1, r0 11d32: b110 cbz r0, 11d3a if(drv->letter == letter) { 11d34: 780b ldrb r3, [r1, #0] 11d36: 42a3 cmp r3, r4 11d38: d1f8 bne.n 11d2c } 11d3a: 4608 mov r0, r1 11d3c: bd70 pop {r4, r5, r6, pc} 11d3e: bf00 nop 11d40: 20006d30 .word 0x20006d30 11d44: 00011fa9 .word 0x00011fa9 11d48: 00011fbd .word 0x00011fbd 00011d4c : { 11d4c: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 11d50: b083 sub sp, #12 file_p->drv = NULL; 11d52: 2300 movs r3, #0 11d54: 6043 str r3, [r0, #4] file_p->file_d = NULL; 11d56: 6003 str r3, [r0, #0] if(path == NULL) return LV_FS_RES_INV_PARAM; 11d58: 2900 cmp r1, #0 11d5a: d045 beq.n 11de8 11d5c: 460d mov r5, r1 11d5e: 4691 mov r9, r2 11d60: 4604 mov r4, r0 file_p->drv = lv_fs_get_drv(letter); 11d62: 7808 ldrb r0, [r1, #0] 11d64: 4b24 ldr r3, [pc, #144] ; (11df8 ) 11d66: 4798 blx r3 11d68: 6060 str r0, [r4, #4] if(file_p->drv == NULL) { 11d6a: b140 cbz r0, 11d7e if(file_p->drv->ready_cb != NULL) { 11d6c: 6883 ldr r3, [r0, #8] 11d6e: b153 cbz r3, 11d86 if(file_p->drv->ready_cb(file_p->drv) == false) { 11d70: 4798 blx r3 11d72: b940 cbnz r0, 11d86 file_p->drv = NULL; 11d74: 2300 movs r3, #0 11d76: 6063 str r3, [r4, #4] file_p->file_d = NULL; 11d78: 6023 str r3, [r4, #0] return LV_FS_RES_HW_ERR; 11d7a: 2501 movs r5, #1 11d7c: e035 b.n 11dea file_p->file_d = NULL; 11d7e: 2300 movs r3, #0 11d80: 6023 str r3, [r4, #0] return LV_FS_RES_NOT_EX; 11d82: 2503 movs r5, #3 11d84: e031 b.n 11dea file_p->file_d = lv_mem_alloc(file_p->drv->file_size); 11d86: 6863 ldr r3, [r4, #4] 11d88: 8858 ldrh r0, [r3, #2] 11d8a: 4b1c ldr r3, [pc, #112] ; (11dfc ) 11d8c: 4798 blx r3 11d8e: 6020 str r0, [r4, #0] LV_ASSERT_MEM(file_p->file_d); 11d90: 4b1b ldr r3, [pc, #108] ; (11e00 ) 11d92: 4798 blx r3 11d94: b128 cbz r0, 11da2 if(file_p->file_d == NULL) { 11d96: 6826 ldr r6, [r4, #0] 11d98: b986 cbnz r6, 11dbc file_p->drv = NULL; 11d9a: 2300 movs r3, #0 11d9c: 6063 str r3, [r4, #4] return LV_FS_RES_OUT_OF_MEM; /* Out of memory */ 11d9e: 250a movs r5, #10 11da0: e023 b.n 11dea LV_ASSERT_MEM(file_p->file_d); 11da2: 4b18 ldr r3, [pc, #96] ; (11e04 ) 11da4: 9300 str r3, [sp, #0] 11da6: 226f movs r2, #111 ; 0x6f 11da8: 4917 ldr r1, [pc, #92] ; (11e08 ) 11daa: 2003 movs r0, #3 11dac: 4d17 ldr r5, [pc, #92] ; (11e0c ) 11dae: 47a8 blx r5 11db0: 6822 ldr r2, [r4, #0] 11db2: 2300 movs r3, #0 11db4: 4816 ldr r0, [pc, #88] ; (11e10 ) 11db6: 4917 ldr r1, [pc, #92] ; (11e14 ) 11db8: 4788 blx r1 11dba: e7fe b.n 11dba if(file_p->drv->open_cb == NULL) { 11dbc: f8d4 8004 ldr.w r8, [r4, #4] 11dc0: f8d8 700c ldr.w r7, [r8, #12] 11dc4: b1af cbz r7, 11df2 const char * real_path = lv_fs_get_real_path(path); 11dc6: 4628 mov r0, r5 11dc8: 4b13 ldr r3, [pc, #76] ; (11e18 ) 11dca: 4798 blx r3 lv_fs_res_t res = file_p->drv->open_cb(file_p->drv, file_p->file_d, real_path, mode); 11dcc: 464b mov r3, r9 11dce: 4602 mov r2, r0 11dd0: 4631 mov r1, r6 11dd2: 4640 mov r0, r8 11dd4: 47b8 blx r7 if(res != LV_FS_RES_OK) { 11dd6: 4605 mov r5, r0 11dd8: b138 cbz r0, 11dea lv_mem_free(file_p->file_d); 11dda: 6820 ldr r0, [r4, #0] 11ddc: 4b0f ldr r3, [pc, #60] ; (11e1c ) 11dde: 4798 blx r3 file_p->file_d = NULL; 11de0: 2300 movs r3, #0 11de2: 6023 str r3, [r4, #0] file_p->drv = NULL; 11de4: 6063 str r3, [r4, #4] 11de6: e000 b.n 11dea if(path == NULL) return LV_FS_RES_INV_PARAM; 11de8: 250b movs r5, #11 } 11dea: 4628 mov r0, r5 11dec: b003 add sp, #12 11dee: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} return LV_FS_RES_NOT_IMP; 11df2: 2509 movs r5, #9 11df4: e7f9 b.n 11dea 11df6: bf00 nop 11df8: 00011d15 .word 0x00011d15 11dfc: 000123dd .word 0x000123dd 11e00: 000022b1 .word 0x000022b1 11e04: 00029258 .word 0x00029258 11e08: 00029274 .word 0x00029274 11e0c: 0001225d .word 0x0001225d 11e10: 00023fd8 .word 0x00023fd8 11e14: 000022b9 .word 0x000022b9 11e18: 00011c59 .word 0x00011c59 11e1c: 000124c5 .word 0x000124c5 00011e20 : { 11e20: b510 push {r4, lr} 11e22: 4604 mov r4, r0 for(i = strlen(fn); i > 0; i--) { 11e24: 4b12 ldr r3, [pc, #72] ; (11e70 ) 11e26: 4798 blx r3 11e28: b1c8 cbz r0, 11e5e 11e2a: 4602 mov r2, r0 if(fn[i] == '.') { 11e2c: 1821 adds r1, r4, r0 11e2e: 5c23 ldrb r3, [r4, r0] 11e30: 2b2e cmp r3, #46 ; 0x2e 11e32: d00f beq.n 11e54 else if(fn[i] == '/' || fn[i] == '\\') { 11e34: 2b2f cmp r3, #47 ; 0x2f 11e36: d014 beq.n 11e62 11e38: 2b5c cmp r3, #92 ; 0x5c 11e3a: d014 beq.n 11e66 for(i = strlen(fn); i > 0; i--) { 11e3c: 3a01 subs r2, #1 11e3e: d00c beq.n 11e5a if(fn[i] == '.') { 11e40: f811 3d01 ldrb.w r3, [r1, #-1]! 11e44: 2b2e cmp r3, #46 ; 0x2e 11e46: d005 beq.n 11e54 else if(fn[i] == '/' || fn[i] == '\\') { 11e48: 2b2f cmp r3, #47 ; 0x2f 11e4a: d00e beq.n 11e6a 11e4c: 2b5c cmp r3, #92 ; 0x5c 11e4e: d1f5 bne.n 11e3c return ""; /*No extension if a '\' or '/' found*/ 11e50: 4808 ldr r0, [pc, #32] ; (11e74 ) } 11e52: bd10 pop {r4, pc} return &fn[i + 1]; 11e54: 3201 adds r2, #1 11e56: 18a0 adds r0, r4, r2 11e58: bd10 pop {r4, pc} return ""; /*Empty string if no '.' in the file name. */ 11e5a: 4806 ldr r0, [pc, #24] ; (11e74 ) 11e5c: bd10 pop {r4, pc} 11e5e: 4805 ldr r0, [pc, #20] ; (11e74 ) 11e60: bd10 pop {r4, pc} return ""; /*No extension if a '\' or '/' found*/ 11e62: 4804 ldr r0, [pc, #16] ; (11e74 ) 11e64: bd10 pop {r4, pc} 11e66: 4803 ldr r0, [pc, #12] ; (11e74 ) 11e68: bd10 pop {r4, pc} 11e6a: 4802 ldr r0, [pc, #8] ; (11e74 ) 11e6c: bd10 pop {r4, pc} 11e6e: bf00 nop 11e70: 0001b51f .word 0x0001b51f 11e74: 00024f04 .word 0x00024f04 00011e78 : * @param ll_p pointer to linked list * @param act pointer to a node which next node pointer should be set * @param next pointer to a node which should be the next node before 'act' */ static void node_set_next(lv_ll_t * ll_p, lv_ll_node_t * act, lv_ll_node_t * next) { 11e78: b510 push {r4, lr} 11e7a: b082 sub sp, #8 11e7c: 9201 str r2, [sp, #4] if(act == NULL) return; /*Can't set the next node of `NULL`*/ 11e7e: b181 cbz r1, 11ea2 11e80: 460c mov r4, r1 uint32_t node_p_size = sizeof(lv_ll_node_t *); if(next) 11e82: b182 cbz r2, 11ea6 _lv_memcpy_small(act + LL_NEXT_P_OFFSET(ll_p), &next, node_p_size); 11e84: 6803 ldr r3, [r0, #0] 11e86: 3304 adds r3, #4 11e88: 18ca adds r2, r1, r3 11e8a: f89d 1004 ldrb.w r1, [sp, #4] 11e8e: 54e1 strb r1, [r4, r3] 11e90: f89d 3005 ldrb.w r3, [sp, #5] 11e94: 7053 strb r3, [r2, #1] 11e96: f89d 3006 ldrb.w r3, [sp, #6] 11e9a: 7093 strb r3, [r2, #2] 11e9c: f89d 3007 ldrb.w r3, [sp, #7] 11ea0: 70d3 strb r3, [r2, #3] else _lv_memset_00(act + LL_NEXT_P_OFFSET(ll_p), node_p_size); } 11ea2: b002 add sp, #8 11ea4: bd10 pop {r4, pc} _lv_memset_00(act + LL_NEXT_P_OFFSET(ll_p), node_p_size); 11ea6: 6800 ldr r0, [r0, #0] 11ea8: 3004 adds r0, #4 11eaa: 2104 movs r1, #4 11eac: 4420 add r0, r4 11eae: 4b01 ldr r3, [pc, #4] ; (11eb4 ) 11eb0: 4798 blx r3 11eb2: e7f6 b.n 11ea2 11eb4: 00012b37 .word 0x00012b37 00011eb8 : { 11eb8: b500 push {lr} 11eba: b083 sub sp, #12 11ebc: 9201 str r2, [sp, #4] if(act == NULL) return; /*Can't set the prev node of `NULL`*/ 11ebe: b181 cbz r1, 11ee2 11ec0: 460a mov r2, r1 if(prev) 11ec2: 9b01 ldr r3, [sp, #4] 11ec4: b183 cbz r3, 11ee8 _lv_memcpy_small(act + LL_PREV_P_OFFSET(ll_p), &prev, node_p_size); 11ec6: 6801 ldr r1, [r0, #0] 11ec8: 1853 adds r3, r2, r1 11eca: f89d 0004 ldrb.w r0, [sp, #4] 11ece: 5450 strb r0, [r2, r1] 11ed0: f89d 2005 ldrb.w r2, [sp, #5] 11ed4: 705a strb r2, [r3, #1] 11ed6: f89d 2006 ldrb.w r2, [sp, #6] 11eda: 709a strb r2, [r3, #2] 11edc: f89d 2007 ldrb.w r2, [sp, #7] 11ee0: 70da strb r2, [r3, #3] } 11ee2: b003 add sp, #12 11ee4: f85d fb04 ldr.w pc, [sp], #4 _lv_memset_00(act + LL_PREV_P_OFFSET(ll_p), node_p_size); 11ee8: 6800 ldr r0, [r0, #0] 11eea: 2104 movs r1, #4 11eec: 4410 add r0, r2 11eee: 4b01 ldr r3, [pc, #4] ; (11ef4 ) 11ef0: 4798 blx r3 11ef2: e7f6 b.n 11ee2 11ef4: 00012b37 .word 0x00012b37 00011ef8 <_lv_ll_init>: ll_p->head = NULL; 11ef8: 2300 movs r3, #0 11efa: 6043 str r3, [r0, #4] ll_p->tail = NULL; 11efc: 6083 str r3, [r0, #8] if(node_size & 0x3) { 11efe: f011 0f03 tst.w r1, #3 node_size = node_size & (~0x3); 11f02: bf1c itt ne 11f04: f021 0103 bicne.w r1, r1, #3 node_size += 4; 11f08: 3104 addne r1, #4 ll_p->n_size = node_size; 11f0a: 6001 str r1, [r0, #0] 11f0c: 4770 bx lr ... 00011f10 <_lv_ll_ins_head>: { 11f10: b538 push {r3, r4, r5, lr} 11f12: 4604 mov r4, r0 n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); 11f14: 6800 ldr r0, [r0, #0] 11f16: 3008 adds r0, #8 11f18: 4b0d ldr r3, [pc, #52] ; (11f50 <_lv_ll_ins_head+0x40>) 11f1a: 4798 blx r3 if(n_new != NULL) { 11f1c: 4605 mov r5, r0 11f1e: b190 cbz r0, 11f46 <_lv_ll_ins_head+0x36> node_set_prev(ll_p, n_new, NULL); /*No prev. before the new head*/ 11f20: 2200 movs r2, #0 11f22: 4601 mov r1, r0 11f24: 4620 mov r0, r4 11f26: 4b0b ldr r3, [pc, #44] ; (11f54 <_lv_ll_ins_head+0x44>) 11f28: 4798 blx r3 node_set_next(ll_p, n_new, ll_p->head); /*After new comes the old head*/ 11f2a: 6862 ldr r2, [r4, #4] 11f2c: 4629 mov r1, r5 11f2e: 4620 mov r0, r4 11f30: 4b09 ldr r3, [pc, #36] ; (11f58 <_lv_ll_ins_head+0x48>) 11f32: 4798 blx r3 if(ll_p->head != NULL) { /*If there is old head then before it goes the new*/ 11f34: 6861 ldr r1, [r4, #4] 11f36: b119 cbz r1, 11f40 <_lv_ll_ins_head+0x30> node_set_prev(ll_p, ll_p->head, n_new); 11f38: 462a mov r2, r5 11f3a: 4620 mov r0, r4 11f3c: 4b05 ldr r3, [pc, #20] ; (11f54 <_lv_ll_ins_head+0x44>) 11f3e: 4798 blx r3 ll_p->head = n_new; /*Set the new head in the dsc.*/ 11f40: 6065 str r5, [r4, #4] if(ll_p->tail == NULL) { /*If there is no tail (1. node) set the tail too*/ 11f42: 68a3 ldr r3, [r4, #8] 11f44: b10b cbz r3, 11f4a <_lv_ll_ins_head+0x3a> } 11f46: 4628 mov r0, r5 11f48: bd38 pop {r3, r4, r5, pc} ll_p->tail = n_new; 11f4a: 60a5 str r5, [r4, #8] 11f4c: e7fb b.n 11f46 <_lv_ll_ins_head+0x36> 11f4e: bf00 nop 11f50: 000123dd .word 0x000123dd 11f54: 00011eb9 .word 0x00011eb9 11f58: 00011e79 .word 0x00011e79 00011f5c <_lv_ll_ins_tail>: { 11f5c: b538 push {r3, r4, r5, lr} 11f5e: 4604 mov r4, r0 n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); 11f60: 6800 ldr r0, [r0, #0] 11f62: 3008 adds r0, #8 11f64: 4b0d ldr r3, [pc, #52] ; (11f9c <_lv_ll_ins_tail+0x40>) 11f66: 4798 blx r3 if(n_new != NULL) { 11f68: 4605 mov r5, r0 11f6a: b190 cbz r0, 11f92 <_lv_ll_ins_tail+0x36> node_set_next(ll_p, n_new, NULL); /*No next after the new tail*/ 11f6c: 2200 movs r2, #0 11f6e: 4601 mov r1, r0 11f70: 4620 mov r0, r4 11f72: 4b0b ldr r3, [pc, #44] ; (11fa0 <_lv_ll_ins_tail+0x44>) 11f74: 4798 blx r3 node_set_prev(ll_p, n_new, ll_p->tail); /*The prev. before new is tho old tail*/ 11f76: 68a2 ldr r2, [r4, #8] 11f78: 4629 mov r1, r5 11f7a: 4620 mov r0, r4 11f7c: 4b09 ldr r3, [pc, #36] ; (11fa4 <_lv_ll_ins_tail+0x48>) 11f7e: 4798 blx r3 if(ll_p->tail != NULL) { /*If there is old tail then the new comes after it*/ 11f80: 68a1 ldr r1, [r4, #8] 11f82: b119 cbz r1, 11f8c <_lv_ll_ins_tail+0x30> node_set_next(ll_p, ll_p->tail, n_new); 11f84: 462a mov r2, r5 11f86: 4620 mov r0, r4 11f88: 4b05 ldr r3, [pc, #20] ; (11fa0 <_lv_ll_ins_tail+0x44>) 11f8a: 4798 blx r3 ll_p->tail = n_new; /*Set the new tail in the dsc.*/ 11f8c: 60a5 str r5, [r4, #8] if(ll_p->head == NULL) { /*If there is no head (1. node) set the head too*/ 11f8e: 6863 ldr r3, [r4, #4] 11f90: b10b cbz r3, 11f96 <_lv_ll_ins_tail+0x3a> } 11f92: 4628 mov r0, r5 11f94: bd38 pop {r3, r4, r5, pc} ll_p->head = n_new; 11f96: 6065 str r5, [r4, #4] 11f98: e7fb b.n 11f92 <_lv_ll_ins_tail+0x36> 11f9a: bf00 nop 11f9c: 000123dd .word 0x000123dd 11fa0: 00011e79 .word 0x00011e79 11fa4: 00011eb9 .word 0x00011eb9 00011fa8 <_lv_ll_get_head>: if(ll_p != NULL) { 11fa8: b108 cbz r0, 11fae <_lv_ll_get_head+0x6> head = ll_p->head; 11faa: 6840 ldr r0, [r0, #4] 11fac: 4770 bx lr void * head = NULL; 11fae: 2000 movs r0, #0 } 11fb0: 4770 bx lr 00011fb2 <_lv_ll_get_tail>: if(ll_p != NULL) { 11fb2: b108 cbz r0, 11fb8 <_lv_ll_get_tail+0x6> tail = ll_p->tail; 11fb4: 6880 ldr r0, [r0, #8] 11fb6: 4770 bx lr void * tail = NULL; 11fb8: 2000 movs r0, #0 } 11fba: 4770 bx lr 00011fbc <_lv_ll_get_next>: { 11fbc: b082 sub sp, #8 void * next = NULL; 11fbe: 2300 movs r3, #0 11fc0: 9301 str r3, [sp, #4] if(ll_p != NULL) { 11fc2: b170 cbz r0, 11fe2 <_lv_ll_get_next+0x26> _lv_memcpy_small(&next, n_act_d + LL_NEXT_P_OFFSET(ll_p), sizeof(void *)); 11fc4: 6803 ldr r3, [r0, #0] 11fc6: 3304 adds r3, #4 11fc8: 18ca adds r2, r1, r3 11fca: 5ccb ldrb r3, [r1, r3] 11fcc: f88d 3004 strb.w r3, [sp, #4] 11fd0: 7853 ldrb r3, [r2, #1] 11fd2: f88d 3005 strb.w r3, [sp, #5] 11fd6: 7893 ldrb r3, [r2, #2] 11fd8: f88d 3006 strb.w r3, [sp, #6] 11fdc: 78d3 ldrb r3, [r2, #3] 11fde: f88d 3007 strb.w r3, [sp, #7] } 11fe2: 9801 ldr r0, [sp, #4] 11fe4: b002 add sp, #8 11fe6: 4770 bx lr 00011fe8 <_lv_ll_get_prev>: { 11fe8: b082 sub sp, #8 void * prev = NULL; 11fea: 2300 movs r3, #0 11fec: 9301 str r3, [sp, #4] if(ll_p != NULL) { 11fee: b168 cbz r0, 1200c <_lv_ll_get_prev+0x24> _lv_memcpy_small(&prev, n_act_d + LL_PREV_P_OFFSET(ll_p), sizeof(void *)); 11ff0: 6802 ldr r2, [r0, #0] 11ff2: 188b adds r3, r1, r2 11ff4: 5c8a ldrb r2, [r1, r2] 11ff6: f88d 2004 strb.w r2, [sp, #4] 11ffa: 785a ldrb r2, [r3, #1] 11ffc: f88d 2005 strb.w r2, [sp, #5] 12000: 789a ldrb r2, [r3, #2] 12002: f88d 2006 strb.w r2, [sp, #6] 12006: 78db ldrb r3, [r3, #3] 12008: f88d 3007 strb.w r3, [sp, #7] } 1200c: 9801 ldr r0, [sp, #4] 1200e: b002 add sp, #8 12010: 4770 bx lr ... 00012014 <_lv_ll_ins_prev>: if(NULL == ll_p || NULL == n_act) return NULL; 12014: b360 cbz r0, 12070 <_lv_ll_ins_prev+0x5c> { 12016: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 1201a: 4604 mov r4, r0 if(NULL == ll_p || NULL == n_act) return NULL; 1201c: b351 cbz r1, 12074 <_lv_ll_ins_prev+0x60> 1201e: 460d mov r5, r1 if(_lv_ll_get_head(ll_p) == n_act) { 12020: 6843 ldr r3, [r0, #4] 12022: 4299 cmp r1, r3 12024: d020 beq.n 12068 <_lv_ll_ins_prev+0x54> n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); 12026: 6800 ldr r0, [r0, #0] 12028: 3008 adds r0, #8 1202a: 4b15 ldr r3, [pc, #84] ; (12080 <_lv_ll_ins_prev+0x6c>) 1202c: 4798 blx r3 if(n_new == NULL) return NULL; 1202e: 4606 mov r6, r0 12030: b318 cbz r0, 1207a <_lv_ll_ins_prev+0x66> n_prev = _lv_ll_get_prev(ll_p, n_act); 12032: 4629 mov r1, r5 12034: 4620 mov r0, r4 12036: 4b13 ldr r3, [pc, #76] ; (12084 <_lv_ll_ins_prev+0x70>) 12038: 4798 blx r3 1203a: 4680 mov r8, r0 node_set_next(ll_p, n_prev, n_new); 1203c: 4632 mov r2, r6 1203e: 4601 mov r1, r0 12040: 4620 mov r0, r4 12042: 4f11 ldr r7, [pc, #68] ; (12088 <_lv_ll_ins_prev+0x74>) 12044: 47b8 blx r7 node_set_prev(ll_p, n_new, n_prev); 12046: 4642 mov r2, r8 12048: 4631 mov r1, r6 1204a: 4620 mov r0, r4 1204c: f8df 8040 ldr.w r8, [pc, #64] ; 12090 <_lv_ll_ins_prev+0x7c> 12050: 47c0 blx r8 node_set_prev(ll_p, n_act, n_new); 12052: 4632 mov r2, r6 12054: 4629 mov r1, r5 12056: 4620 mov r0, r4 12058: 47c0 blx r8 node_set_next(ll_p, n_new, n_act); 1205a: 462a mov r2, r5 1205c: 4631 mov r1, r6 1205e: 4620 mov r0, r4 12060: 47b8 blx r7 n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); 12062: 4630 mov r0, r6 12064: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} n_new = _lv_ll_ins_head(ll_p); 12068: 4b08 ldr r3, [pc, #32] ; (1208c <_lv_ll_ins_prev+0x78>) 1206a: 4798 blx r3 1206c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(NULL == ll_p || NULL == n_act) return NULL; 12070: 2000 movs r0, #0 12072: 4770 bx lr 12074: 4608 mov r0, r1 12076: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} } 1207a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 1207e: bf00 nop 12080: 000123dd .word 0x000123dd 12084: 00011fe9 .word 0x00011fe9 12088: 00011e79 .word 0x00011e79 1208c: 00011f11 .word 0x00011f11 12090: 00011eb9 .word 0x00011eb9 00012094 <_lv_ll_remove>: { 12094: b570 push {r4, r5, r6, lr} 12096: 460d mov r5, r1 if(ll_p != NULL) { 12098: 4604 mov r4, r0 1209a: b350 cbz r0, 120f2 <_lv_ll_remove+0x5e> if(_lv_ll_get_head(ll_p) == node_p) { 1209c: 6843 ldr r3, [r0, #4] 1209e: 4299 cmp r1, r3 120a0: d029 beq.n 120f6 <_lv_ll_remove+0x62> else if(_lv_ll_get_tail(ll_p) == node_p) { 120a2: 6883 ldr r3, [r0, #8] 120a4: 4299 cmp r1, r3 120a6: d017 beq.n 120d8 <_lv_ll_remove+0x44> lv_ll_node_t * n_prev = _lv_ll_get_prev(ll_p, node_p); 120a8: 4629 mov r1, r5 120aa: 4620 mov r0, r4 120ac: 4b18 ldr r3, [pc, #96] ; (12110 <_lv_ll_remove+0x7c>) 120ae: 4798 blx r3 120b0: 4606 mov r6, r0 lv_ll_node_t * n_next = _lv_ll_get_next(ll_p, node_p); 120b2: 4629 mov r1, r5 120b4: 4620 mov r0, r4 120b6: 4b17 ldr r3, [pc, #92] ; (12114 <_lv_ll_remove+0x80>) 120b8: 4798 blx r3 120ba: 4605 mov r5, r0 node_set_next(ll_p, n_prev, n_next); 120bc: 4602 mov r2, r0 120be: 4631 mov r1, r6 120c0: 4620 mov r0, r4 120c2: 4b15 ldr r3, [pc, #84] ; (12118 <_lv_ll_remove+0x84>) 120c4: 4798 blx r3 node_set_prev(ll_p, n_next, n_prev); 120c6: 4632 mov r2, r6 120c8: 4629 mov r1, r5 120ca: 4620 mov r0, r4 120cc: 4b13 ldr r3, [pc, #76] ; (1211c <_lv_ll_remove+0x88>) 120ce: 4798 blx r3 } 120d0: bd70 pop {r4, r5, r6, pc} ll_p->tail = NULL; 120d2: 2300 movs r3, #0 120d4: 60a3 str r3, [r4, #8] 120d6: bd70 pop {r4, r5, r6, pc} ll_p->tail = _lv_ll_get_prev(ll_p, node_p); 120d8: 4b0d ldr r3, [pc, #52] ; (12110 <_lv_ll_remove+0x7c>) 120da: 4798 blx r3 120dc: 60a0 str r0, [r4, #8] if(ll_p->tail == NULL) { 120de: b128 cbz r0, 120ec <_lv_ll_remove+0x58> node_set_next(ll_p, ll_p->tail, NULL); 120e0: 2200 movs r2, #0 120e2: 4601 mov r1, r0 120e4: 4620 mov r0, r4 120e6: 4b0c ldr r3, [pc, #48] ; (12118 <_lv_ll_remove+0x84>) 120e8: 4798 blx r3 120ea: bd70 pop {r4, r5, r6, pc} ll_p->head = NULL; 120ec: 2300 movs r3, #0 120ee: 6063 str r3, [r4, #4] 120f0: bd70 pop {r4, r5, r6, pc} if(_lv_ll_get_head(ll_p) == node_p) { 120f2: 2900 cmp r1, #0 120f4: d1d8 bne.n 120a8 <_lv_ll_remove+0x14> ll_p->head = _lv_ll_get_next(ll_p, node_p); 120f6: 4629 mov r1, r5 120f8: 4620 mov r0, r4 120fa: 4b06 ldr r3, [pc, #24] ; (12114 <_lv_ll_remove+0x80>) 120fc: 4798 blx r3 120fe: 6060 str r0, [r4, #4] if(ll_p->head == NULL) { 12100: 2800 cmp r0, #0 12102: d0e6 beq.n 120d2 <_lv_ll_remove+0x3e> node_set_prev(ll_p, ll_p->head, NULL); 12104: 2200 movs r2, #0 12106: 4601 mov r1, r0 12108: 4620 mov r0, r4 1210a: 4b04 ldr r3, [pc, #16] ; (1211c <_lv_ll_remove+0x88>) 1210c: 4798 blx r3 1210e: bd70 pop {r4, r5, r6, pc} 12110: 00011fe9 .word 0x00011fe9 12114: 00011fbd .word 0x00011fbd 12118: 00011e79 .word 0x00011e79 1211c: 00011eb9 .word 0x00011eb9 00012120 <_lv_ll_chg_list>: { 12120: b570 push {r4, r5, r6, lr} 12122: 460c mov r4, r1 12124: 4615 mov r5, r2 12126: 461e mov r6, r3 _lv_ll_remove(ll_ori_p, node); 12128: 4611 mov r1, r2 1212a: 4b17 ldr r3, [pc, #92] ; (12188 <_lv_ll_chg_list+0x68>) 1212c: 4798 blx r3 if(head) { 1212e: b1ae cbz r6, 1215c <_lv_ll_chg_list+0x3c> node_set_prev(ll_new_p, node, NULL); 12130: 2200 movs r2, #0 12132: 4629 mov r1, r5 12134: 4620 mov r0, r4 12136: 4b15 ldr r3, [pc, #84] ; (1218c <_lv_ll_chg_list+0x6c>) 12138: 4798 blx r3 node_set_next(ll_new_p, node, ll_new_p->head); 1213a: 6862 ldr r2, [r4, #4] 1213c: 4629 mov r1, r5 1213e: 4620 mov r0, r4 12140: 4b13 ldr r3, [pc, #76] ; (12190 <_lv_ll_chg_list+0x70>) 12142: 4798 blx r3 if(ll_new_p->head != NULL) { /*If there is old head then before it goes the new*/ 12144: 6861 ldr r1, [r4, #4] 12146: b119 cbz r1, 12150 <_lv_ll_chg_list+0x30> node_set_prev(ll_new_p, ll_new_p->head, node); 12148: 462a mov r2, r5 1214a: 4620 mov r0, r4 1214c: 4b0f ldr r3, [pc, #60] ; (1218c <_lv_ll_chg_list+0x6c>) 1214e: 4798 blx r3 ll_new_p->head = node; /*Set the new head in the dsc.*/ 12150: 6065 str r5, [r4, #4] if(ll_new_p->tail == NULL) { /*If there is no tail (first node) set the tail too*/ 12152: 68a3 ldr r3, [r4, #8] 12154: b103 cbz r3, 12158 <_lv_ll_chg_list+0x38> 12156: bd70 pop {r4, r5, r6, pc} ll_new_p->tail = node; 12158: 60a5 str r5, [r4, #8] 1215a: bd70 pop {r4, r5, r6, pc} node_set_prev(ll_new_p, node, ll_new_p->tail); 1215c: 68a2 ldr r2, [r4, #8] 1215e: 4629 mov r1, r5 12160: 4620 mov r0, r4 12162: 4b0a ldr r3, [pc, #40] ; (1218c <_lv_ll_chg_list+0x6c>) 12164: 4798 blx r3 node_set_next(ll_new_p, node, NULL); 12166: 2200 movs r2, #0 12168: 4629 mov r1, r5 1216a: 4620 mov r0, r4 1216c: 4b08 ldr r3, [pc, #32] ; (12190 <_lv_ll_chg_list+0x70>) 1216e: 4798 blx r3 if(ll_new_p->tail != NULL) { /*If there is old tail then after it goes the new*/ 12170: 68a1 ldr r1, [r4, #8] 12172: b119 cbz r1, 1217c <_lv_ll_chg_list+0x5c> node_set_next(ll_new_p, ll_new_p->tail, node); 12174: 462a mov r2, r5 12176: 4620 mov r0, r4 12178: 4b05 ldr r3, [pc, #20] ; (12190 <_lv_ll_chg_list+0x70>) 1217a: 4798 blx r3 ll_new_p->tail = node; /*Set the new tail in the dsc.*/ 1217c: 60a5 str r5, [r4, #8] if(ll_new_p->head == NULL) { /*If there is no head (first node) set the head too*/ 1217e: 6863 ldr r3, [r4, #4] 12180: 2b00 cmp r3, #0 12182: d1e8 bne.n 12156 <_lv_ll_chg_list+0x36> ll_new_p->head = node; 12184: 6065 str r5, [r4, #4] } 12186: e7e6 b.n 12156 <_lv_ll_chg_list+0x36> 12188: 00012095 .word 0x00012095 1218c: 00011eb9 .word 0x00011eb9 12190: 00011e79 .word 0x00011e79 00012194 <_lv_ll_move_before>: if(n_act == n_after) return; /*Can't move before itself*/ 12194: 4291 cmp r1, r2 12196: d04c beq.n 12232 <_lv_ll_move_before+0x9e> { 12198: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 1219c: 4617 mov r7, r2 1219e: 460c mov r4, r1 121a0: 4605 mov r5, r0 if(n_after != NULL) 121a2: b312 cbz r2, 121ea <_lv_ll_move_before+0x56> n_before = _lv_ll_get_prev(ll_p, n_after); 121a4: 4611 mov r1, r2 121a6: 4b23 ldr r3, [pc, #140] ; (12234 <_lv_ll_move_before+0xa0>) 121a8: 4798 blx r3 121aa: 4606 mov r6, r0 if(n_act == n_before) return; /*Already before `n_after`*/ 121ac: 4284 cmp r4, r0 121ae: d01a beq.n 121e6 <_lv_ll_move_before+0x52> _lv_ll_remove(ll_p, n_act); 121b0: 4621 mov r1, r4 121b2: 4628 mov r0, r5 121b4: 4b20 ldr r3, [pc, #128] ; (12238 <_lv_ll_move_before+0xa4>) 121b6: 4798 blx r3 node_set_next(ll_p, n_before, n_act); 121b8: 4622 mov r2, r4 121ba: 4631 mov r1, r6 121bc: 4628 mov r0, r5 121be: f8df 807c ldr.w r8, [pc, #124] ; 1223c <_lv_ll_move_before+0xa8> 121c2: 47c0 blx r8 node_set_prev(ll_p, n_act, n_before); 121c4: 4632 mov r2, r6 121c6: 4621 mov r1, r4 121c8: 4628 mov r0, r5 121ca: f8df 9074 ldr.w r9, [pc, #116] ; 12240 <_lv_ll_move_before+0xac> 121ce: 47c8 blx r9 node_set_prev(ll_p, n_after, n_act); 121d0: 4622 mov r2, r4 121d2: 4639 mov r1, r7 121d4: 4628 mov r0, r5 121d6: 47c8 blx r9 node_set_next(ll_p, n_act, n_after); 121d8: 463a mov r2, r7 121da: 4621 mov r1, r4 121dc: 4628 mov r0, r5 121de: 47c0 blx r8 if(n_before == NULL) ll_p->head = n_act; 121e0: b306 cbz r6, 12224 <_lv_ll_move_before+0x90> 121e2: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 121e6: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} if(ll_p != NULL) { 121ea: b1f0 cbz r0, 1222a <_lv_ll_move_before+0x96> tail = ll_p->tail; 121ec: 6886 ldr r6, [r0, #8] if(n_act == n_before) return; /*Already before `n_after`*/ 121ee: 42b4 cmp r4, r6 121f0: d01d beq.n 1222e <_lv_ll_move_before+0x9a> _lv_ll_remove(ll_p, n_act); 121f2: 4621 mov r1, r4 121f4: 4628 mov r0, r5 121f6: 4b10 ldr r3, [pc, #64] ; (12238 <_lv_ll_move_before+0xa4>) 121f8: 4798 blx r3 node_set_next(ll_p, n_before, n_act); 121fa: 4622 mov r2, r4 121fc: 4631 mov r1, r6 121fe: 4628 mov r0, r5 12200: 4f0e ldr r7, [pc, #56] ; (1223c <_lv_ll_move_before+0xa8>) 12202: 47b8 blx r7 node_set_prev(ll_p, n_act, n_before); 12204: 4632 mov r2, r6 12206: 4621 mov r1, r4 12208: 4628 mov r0, r5 1220a: f8df 8034 ldr.w r8, [pc, #52] ; 12240 <_lv_ll_move_before+0xac> 1220e: 47c0 blx r8 node_set_prev(ll_p, n_after, n_act); 12210: 4622 mov r2, r4 12212: 2100 movs r1, #0 12214: 4628 mov r0, r5 12216: 47c0 blx r8 node_set_next(ll_p, n_act, n_after); 12218: 2200 movs r2, #0 1221a: 4621 mov r1, r4 1221c: 4628 mov r0, r5 1221e: 47b8 blx r7 if(n_after == NULL) ll_p->tail = n_act; 12220: 60ac str r4, [r5, #8] 12222: e7dd b.n 121e0 <_lv_ll_move_before+0x4c> if(n_before == NULL) ll_p->head = n_act; 12224: 606c str r4, [r5, #4] 12226: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} void * tail = NULL; 1222a: 4616 mov r6, r2 1222c: e7df b.n 121ee <_lv_ll_move_before+0x5a> 1222e: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 12232: 4770 bx lr 12234: 00011fe9 .word 0x00011fe9 12238: 00012095 .word 0x00012095 1223c: 00011e79 .word 0x00011e79 12240: 00011eb9 .word 0x00011eb9 00012244 <_lv_ll_is_empty>: if(ll_p == NULL) return true; 12244: b140 cbz r0, 12258 <_lv_ll_is_empty+0x14> if(ll_p->head == NULL && ll_p->tail == NULL) return true; 12246: 6842 ldr r2, [r0, #4] 12248: b10a cbz r2, 1224e <_lv_ll_is_empty+0xa> return false; 1224a: 2000 movs r0, #0 } 1224c: 4770 bx lr if(ll_p->head == NULL && ll_p->tail == NULL) return true; 1224e: 6880 ldr r0, [r0, #8] 12250: fab0 f080 clz r0, r0 12254: 0940 lsrs r0, r0, #5 12256: 4770 bx lr if(ll_p == NULL) return true; 12258: 2001 movs r0, #1 1225a: 4770 bx lr 0001225c <_lv_log_add>: * @param func name of the function when the log added * @param format printf-like format string * @param ... parameters for `format` */ void _lv_log_add(lv_log_level_t level, const char * file, int line, const char * func, const char * format, ...) { 1225c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 12260: b0c4 sub sp, #272 ; 0x110 if(level >= _LV_LOG_LEVEL_NUM) return; /*Invalid level*/ if(level >= LV_LOG_LEVEL) { 12262: 1e44 subs r4, r0, #1 12264: b2e4 uxtb r4, r4 12266: 2c04 cmp r4, #4 12268: d815 bhi.n 12296 <_lv_log_add+0x3a> 1226a: 461f mov r7, r3 1226c: 4616 mov r6, r2 1226e: 460d mov r5, r1 12270: 4680 mov r8, r0 va_list args; va_start(args, format); 12272: ab4b add r3, sp, #300 ; 0x12c 12274: 9303 str r3, [sp, #12] char buf[256]; lv_vsnprintf(buf, sizeof(buf), format, args); 12276: 9a4a ldr r2, [sp, #296] ; 0x128 12278: f44f 7180 mov.w r1, #256 ; 0x100 1227c: a804 add r0, sp, #16 1227e: 4c07 ldr r4, [pc, #28] ; (1229c <_lv_log_add+0x40>) 12280: 47a0 blx r4 } static const char * lvl_prefix[] = {"Trace", "Info", "Warn", "Error", "User"}; printf("%s: %s \t(%s #%d %s())\n", lvl_prefix[level], buf, &file[p], line, func); #else if(custom_print_cb) custom_print_cb(level, file, line, func, buf); 12282: 4b07 ldr r3, [pc, #28] ; (122a0 <_lv_log_add+0x44>) 12284: 681c ldr r4, [r3, #0] 12286: b134 cbz r4, 12296 <_lv_log_add+0x3a> 12288: ab04 add r3, sp, #16 1228a: 9300 str r3, [sp, #0] 1228c: 463b mov r3, r7 1228e: 4632 mov r2, r6 12290: 4629 mov r1, r5 12292: 4640 mov r0, r8 12294: 47a0 blx r4 #endif } } 12296: b044 add sp, #272 ; 0x110 12298: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 1229c: 000135cd .word 0x000135cd 122a0: 20002b88 .word 0x20002b88 000122a4 <_lv_trigo_sin>: * @return sinus of 'angle'. sin(-90) = -32767, sin(90) = 32767 */ LV_ATTRIBUTE_FAST_MEM int16_t _lv_trigo_sin(int16_t angle) { int16_t ret = 0; angle = angle % 360; 122a4: 4b1b ldr r3, [pc, #108] ; (12314 <_lv_trigo_sin+0x70>) 122a6: fb83 2300 smull r2, r3, r3, r0 122aa: 181a adds r2, r3, r0 122ac: 17c3 asrs r3, r0, #31 122ae: ebc3 2322 rsb r3, r3, r2, asr #8 122b2: f44f 72b4 mov.w r2, #360 ; 0x168 122b6: fb02 0013 mls r0, r2, r3, r0 122ba: b200 sxth r0, r0 if(angle < 0) angle = 360 + angle; 122bc: 2800 cmp r0, #0 122be: bfbc itt lt 122c0: 1880 addlt r0, r0, r2 122c2: b200 sxthlt r0, r0 if(angle < 90) { 122c4: 2859 cmp r0, #89 ; 0x59 122c6: dd13 ble.n 122f0 <_lv_trigo_sin+0x4c> ret = sin0_90_table[angle]; } else if(angle >= 90 && angle < 180) { 122c8: b280 uxth r0, r0 122ca: f1a0 035a sub.w r3, r0, #90 ; 0x5a 122ce: b29b uxth r3, r3 122d0: 2b59 cmp r3, #89 ; 0x59 122d2: d911 bls.n 122f8 <_lv_trigo_sin+0x54> angle = 180 - angle; ret = sin0_90_table[angle]; } else if(angle >= 180 && angle < 270) { 122d4: f1a0 03b4 sub.w r3, r0, #180 ; 0xb4 122d8: b29b uxth r3, r3 122da: 2b59 cmp r3, #89 ; 0x59 122dc: d913 bls.n 12306 <_lv_trigo_sin+0x62> angle = angle - 180; ret = -sin0_90_table[angle]; } else { /*angle >=270*/ angle = 360 - angle; 122de: f5c0 70b4 rsb r0, r0, #360 ; 0x168 ret = -sin0_90_table[angle]; 122e2: b200 sxth r0, r0 122e4: 4b0c ldr r3, [pc, #48] ; (12318 <_lv_trigo_sin+0x74>) 122e6: f833 0010 ldrh.w r0, [r3, r0, lsl #1] 122ea: 4240 negs r0, r0 122ec: b200 sxth r0, r0 } return ret; } 122ee: 4770 bx lr ret = sin0_90_table[angle]; 122f0: 4b09 ldr r3, [pc, #36] ; (12318 <_lv_trigo_sin+0x74>) 122f2: f933 0010 ldrsh.w r0, [r3, r0, lsl #1] 122f6: 4770 bx lr angle = 180 - angle; 122f8: f1c0 00b4 rsb r0, r0, #180 ; 0xb4 ret = sin0_90_table[angle]; 122fc: b200 sxth r0, r0 122fe: 4b06 ldr r3, [pc, #24] ; (12318 <_lv_trigo_sin+0x74>) 12300: f933 0010 ldrsh.w r0, [r3, r0, lsl #1] 12304: 4770 bx lr ret = -sin0_90_table[angle]; 12306: b21b sxth r3, r3 12308: 4a03 ldr r2, [pc, #12] ; (12318 <_lv_trigo_sin+0x74>) 1230a: f832 0013 ldrh.w r0, [r2, r3, lsl #1] 1230e: 4240 negs r0, r0 12310: b200 sxth r0, r0 12312: 4770 bx lr 12314: b60b60b7 .word 0xb60b60b7 12318: 0002929c .word 0x0002929c 0001231c <_lv_sqrt>: * If root < 16: mask = 0x80 * If root < 256: mask = 0x800 * Else: mask = 0x8000 */ LV_ATTRIBUTE_FAST_MEM void _lv_sqrt(uint32_t x, lv_sqrt_res_t * q, uint32_t mask) { 1231c: b430 push {r4, r5} x = x << 8; /*To get 4 bit precision. (sqrt(256) = 16 = 4 bit)*/ 1231e: 0200 lsls r0, r0, #8 uint32_t root = 0; 12320: 2400 movs r4, #0 uint32_t trial; // http://ww1.microchip.com/...en/AppNotes/91040a.pdf do { trial = root + mask; 12322: 1913 adds r3, r2, r4 if((uint32_t)trial * trial <= x) root = trial; 12324: fb03 f503 mul.w r5, r3, r3 12328: 42a8 cmp r0, r5 1232a: bf28 it cs 1232c: 461c movcs r4, r3 mask = mask >> 1; } while(mask); 1232e: 0852 lsrs r2, r2, #1 12330: d1f7 bne.n 12322 <_lv_sqrt+0x6> q->i = (uint32_t) root >> 4; 12332: 0923 lsrs r3, r4, #4 12334: 800b strh r3, [r1, #0] q->f = (uint32_t)(root & 0xf) << 4; 12336: 0124 lsls r4, r4, #4 12338: b2e4 uxtb r4, r4 1233a: 804c strh r4, [r1, #2] } 1233c: bc30 pop {r4, r5} 1233e: 4770 bx lr 00012340 : */ static lv_mem_ent_t * ent_get_next(lv_mem_ent_t * act_e) { lv_mem_ent_t * next_e = NULL; if(act_e == NULL) { /*NULL means: get the first entry*/ 12340: 4603 mov r3, r0 12342: b160 cbz r0, 1235e next_e = (lv_mem_ent_t *)work_mem; } else { /*Get the next entry */ uint8_t * data = &act_e->first_data; 12344: 3004 adds r0, #4 next_e = (lv_mem_ent_t *)&data[act_e->header.s.d_size]; 12346: 681b ldr r3, [r3, #0] 12348: eb00 0053 add.w r0, r0, r3, lsr #1 if(&next_e->first_data >= &work_mem[LV_MEM_SIZE]) next_e = NULL; 1234c: 1d02 adds r2, r0, #4 1234e: 4b05 ldr r3, [pc, #20] ; (12364 ) 12350: 681b ldr r3, [r3, #0] 12352: f503 4380 add.w r3, r3, #16384 ; 0x4000 12356: 429a cmp r2, r3 12358: bf28 it cs 1235a: 2000 movcs r0, #0 } return next_e; } 1235c: 4770 bx lr next_e = (lv_mem_ent_t *)work_mem; 1235e: 4b01 ldr r3, [pc, #4] ; (12364 ) 12360: 6818 ldr r0, [r3, #0] 12362: 4770 bx lr 12364: 20002b8c .word 0x20002b8c 00012368 : size = size & (~0x7); size += 8; } #else /*Round the size up to 4*/ if(size & 0x3) { 12368: f011 0f03 tst.w r1, #3 size = size & (~0x3); 1236c: bf1c itt ne 1236e: f021 0103 bicne.w r1, r1, #3 size += 4; 12372: 3104 addne r1, #4 } #endif /*Don't let empty space only for a header without data*/ if(e->header.s.d_size == size + sizeof(lv_mem_header_t)) { 12374: 6803 ldr r3, [r0, #0] 12376: f3c3 035e ubfx r3, r3, #1, #31 1237a: 1d0a adds r2, r1, #4 1237c: 4293 cmp r3, r2 1237e: d017 beq.n 123b0 size = e->header.s.d_size; } /* Create the new entry after the current if there is space for it */ if(e->header.s.d_size != size) { 12380: 4299 cmp r1, r3 12382: d016 beq.n 123b2 { 12384: b410 push {r4} uint8_t * e_data = &e->first_data; 12386: 1d02 adds r2, r0, #4 lv_mem_ent_t * after_new_e = (lv_mem_ent_t *)&e_data[size]; after_new_e->header.s.used = 0; 12388: 5c53 ldrb r3, [r2, r1] 1238a: f36f 0300 bfc r3, #0, #1 1238e: 5453 strb r3, [r2, r1] after_new_e->header.s.d_size = (uint32_t)e->header.s.d_size - size - sizeof(lv_mem_header_t); 12390: 6803 ldr r3, [r0, #0] 12392: f3c3 035e ubfx r3, r3, #1, #31 12396: 3b04 subs r3, #4 12398: 1a5b subs r3, r3, r1 1239a: 5854 ldr r4, [r2, r1] 1239c: f363 045f bfi r4, r3, #1, #31 123a0: 5054 str r4, [r2, r1] } /* Set the new size for the original entry */ e->header.s.d_size = (uint32_t)size; 123a2: 6803 ldr r3, [r0, #0] 123a4: f361 035f bfi r3, r1, #1, #31 123a8: 6003 str r3, [r0, #0] } 123aa: f85d 4b04 ldr.w r4, [sp], #4 123ae: 4770 bx lr size = e->header.s.d_size; 123b0: 4611 mov r1, r2 e->header.s.d_size = (uint32_t)size; 123b2: 6803 ldr r3, [r0, #0] 123b4: f361 035f bfi r3, r1, #1, #31 123b8: 6003 str r3, [r0, #0] 123ba: 4770 bx lr 000123bc <_lv_mem_init>: work_mem = (uint8_t *)work_mem_int; 123bc: 4b06 ldr r3, [pc, #24] ; (123d8 <_lv_mem_init+0x1c>) 123be: 1d1a adds r2, r3, #4 123c0: 601a str r2, [r3, #0] full->header.s.used = 0; 123c2: 791a ldrb r2, [r3, #4] 123c4: f36f 0200 bfc r2, #0, #1 123c8: 711a strb r2, [r3, #4] full->header.s.d_size = LV_MEM_SIZE - sizeof(lv_mem_header_t); 123ca: 685a ldr r2, [r3, #4] 123cc: f643 71fc movw r1, #16380 ; 0x3ffc 123d0: f361 025f bfi r2, r1, #1, #31 123d4: 605a str r2, [r3, #4] 123d6: 4770 bx lr 123d8: 20002b8c .word 0x20002b8c 000123dc : if(size == 0) { 123dc: 2800 cmp r0, #0 123de: d02e beq.n 1243e { 123e0: b5f0 push {r4, r5, r6, r7, lr} 123e2: b083 sub sp, #12 123e4: 4605 mov r5, r0 if(size & 0x3) { 123e6: f010 0f03 tst.w r0, #3 size = size & (~0x3); 123ea: bf1c itt ne 123ec: f020 0503 bicne.w r5, r0, #3 size += 4; 123f0: 3504 addne r5, #4 lv_mem_ent_t * e = NULL; 123f2: 2400 movs r4, #0 e = ent_get_next(e); 123f4: 4e13 ldr r6, [pc, #76] ; (12444 ) ent_trunc(e, size); 123f6: 4f14 ldr r7, [pc, #80] ; (12448 ) 123f8: e008 b.n 1240c 123fa: 4629 mov r1, r5 123fc: 47b8 blx r7 e->header.s.used = 1; 123fe: 7823 ldrb r3, [r4, #0] 12400: f043 0301 orr.w r3, r3, #1 12404: 4620 mov r0, r4 12406: f800 3b04 strb.w r3, [r0], #4 } while(e != NULL && alloc == NULL); 1240a: b9b0 cbnz r0, 1243a e = ent_get_next(e); 1240c: 4620 mov r0, r4 1240e: 47b0 blx r6 if(e != NULL) { 12410: 4604 mov r4, r0 12412: b148 cbz r0, 12428 if(e->header.s.used == 0 && e->header.s.d_size >= size) { 12414: 7803 ldrb r3, [r0, #0] 12416: f013 0f01 tst.w r3, #1 1241a: d1f7 bne.n 1240c 1241c: 6803 ldr r3, [r0, #0] 1241e: f3c3 035e ubfx r3, r3, #1, #31 12422: 429d cmp r5, r3 12424: d9e9 bls.n 123fa 12426: e7f1 b.n 1240c if(alloc == NULL) LV_LOG_WARN("Couldn't allocate memory"); 12428: 4b08 ldr r3, [pc, #32] ; (1244c ) 1242a: 9300 str r3, [sp, #0] 1242c: 4b08 ldr r3, [pc, #32] ; (12450 ) 1242e: 22d1 movs r2, #209 ; 0xd1 12430: 4908 ldr r1, [pc, #32] ; (12454 ) 12432: 2002 movs r0, #2 12434: 4c08 ldr r4, [pc, #32] ; (12458 ) 12436: 47a0 blx r4 return alloc; 12438: 2000 movs r0, #0 } 1243a: b003 add sp, #12 1243c: bdf0 pop {r4, r5, r6, r7, pc} return &zero_mem; 1243e: 4807 ldr r0, [pc, #28] ; (1245c ) 12440: 4770 bx lr 12442: bf00 nop 12444: 00012341 .word 0x00012341 12448: 00012369 .word 0x00012369 1244c: 000293c0 .word 0x000293c0 12450: 00029354 .word 0x00029354 12454: 00029398 .word 0x00029398 12458: 0001225d .word 0x0001225d 1245c: 20006b90 .word 0x20006b90 00012460 : { 12460: b538 push {r3, r4, r5, lr} e_free = ent_get_next(NULL); 12462: 2000 movs r0, #0 12464: 4b16 ldr r3, [pc, #88] ; (124c0 ) 12466: 4798 blx r3 12468: 4604 mov r4, r0 e_next = ent_get_next(e_free); 1246a: 4d15 ldr r5, [pc, #84] ; (124c0 ) 1246c: e01b b.n 124a6 1246e: bd38 pop {r3, r4, r5, pc} 12470: 4620 mov r0, r4 12472: 47a8 blx r5 while(e_next != NULL) { 12474: 4601 mov r1, r0 12476: b308 cbz r0, 124bc if(e_next->header.s.used == 0) { 12478: 7803 ldrb r3, [r0, #0] 1247a: f013 0f01 tst.w r3, #1 1247e: d111 bne.n 124a4 e_free->header.s.d_size += e_next->header.s.d_size + sizeof(e_next->header); 12480: 6823 ldr r3, [r4, #0] 12482: f3c3 025e ubfx r2, r3, #1, #31 12486: 3204 adds r2, #4 12488: 6808 ldr r0, [r1, #0] 1248a: eb02 0250 add.w r2, r2, r0, lsr #1 1248e: f362 035f bfi r3, r2, #1, #31 12492: 6023 str r3, [r4, #0] e_next = ent_get_next(e_next); 12494: 4608 mov r0, r1 12496: 47a8 blx r5 while(e_next != NULL) { 12498: 4601 mov r1, r0 1249a: b170 cbz r0, 124ba if(e_next->header.s.used == 0) { 1249c: 780b ldrb r3, [r1, #0] 1249e: f013 0f01 tst.w r3, #1 124a2: d0ed beq.n 12480 { 124a4: 460c mov r4, r1 while(e_free != NULL) { 124a6: 2c00 cmp r4, #0 124a8: d0e1 beq.n 1246e if(e_free->header.s.used != 0) { 124aa: 7823 ldrb r3, [r4, #0] 124ac: f013 0f01 tst.w r3, #1 124b0: d0de beq.n 12470 e_free = ent_get_next(e_free); 124b2: 4620 mov r0, r4 124b4: 47a8 blx r5 124b6: 4604 mov r4, r0 124b8: e7f5 b.n 124a6 124ba: bd38 pop {r3, r4, r5, pc} 124bc: bd38 pop {r3, r4, r5, pc} 124be: bf00 nop 124c0: 00012341 .word 0x00012341 000124c4 : { 124c4: b538 push {r3, r4, r5, lr} if(data == &zero_mem) return; 124c6: 4b1e ldr r3, [pc, #120] ; (12540 ) 124c8: 4298 cmp r0, r3 124ca: d038 beq.n 1253e if(data == NULL) return; 124cc: 2800 cmp r0, #0 124ce: d036 beq.n 1253e 124d0: 4604 mov r4, r0 e->header.s.used = 0; 124d2: f810 3c04 ldrb.w r3, [r0, #-4] 124d6: f36f 0300 bfc r3, #0, #1 124da: f800 3c04 strb.w r3, [r0, #-4] full_defrag_cnt++; 124de: 4a19 ldr r2, [pc, #100] ; (12544 ) 124e0: f8b2 3d20 ldrh.w r3, [r2, #3360] ; 0xd20 124e4: 3301 adds r3, #1 124e6: b29b uxth r3, r3 124e8: f8a2 3d20 strh.w r3, [r2, #3360] ; 0xd20 if(full_defrag_cnt < LV_MEM_FULL_DEFRAG_CNT) { 124ec: 2b0f cmp r3, #15 124ee: d820 bhi.n 12532 e_next = ent_get_next(e); 124f0: 3804 subs r0, #4 124f2: 4b15 ldr r3, [pc, #84] ; (12548 ) 124f4: 4798 blx r3 while(e_next != NULL) { 124f6: 4601 mov r1, r0 124f8: b308 cbz r0, 1253e if(e_next->header.s.used == 0) { 124fa: 7803 ldrb r3, [r0, #0] 124fc: f013 0f01 tst.w r3, #1 12500: d115 bne.n 1252e e_next = ent_get_next(e_next); 12502: 4d11 ldr r5, [pc, #68] ; (12548 ) e->header.s.d_size += e_next->header.s.d_size + sizeof(e->header); 12504: f854 3c04 ldr.w r3, [r4, #-4] 12508: f3c3 025e ubfx r2, r3, #1, #31 1250c: 3204 adds r2, #4 1250e: 6808 ldr r0, [r1, #0] 12510: eb02 0250 add.w r2, r2, r0, lsr #1 12514: f362 035f bfi r3, r2, #1, #31 12518: f844 3c04 str.w r3, [r4, #-4] e_next = ent_get_next(e_next); 1251c: 4608 mov r0, r1 1251e: 47a8 blx r5 while(e_next != NULL) { 12520: 4601 mov r1, r0 12522: b128 cbz r0, 12530 if(e_next->header.s.used == 0) { 12524: 780b ldrb r3, [r1, #0] 12526: f013 0f01 tst.w r3, #1 1252a: d0eb beq.n 12504 1252c: bd38 pop {r3, r4, r5, pc} 1252e: bd38 pop {r3, r4, r5, pc} 12530: bd38 pop {r3, r4, r5, pc} full_defrag_cnt = 0; 12532: 2200 movs r2, #0 12534: 4b03 ldr r3, [pc, #12] ; (12544 ) 12536: f8a3 2d20 strh.w r2, [r3, #3360] ; 0xd20 lv_mem_defrag(); 1253a: 4b04 ldr r3, [pc, #16] ; (1254c ) 1253c: 4798 blx r3 1253e: bd38 pop {r3, r4, r5, pc} 12540: 20006b90 .word 0x20006b90 12544: 20005e74 .word 0x20005e74 12548: 00012341 .word 0x00012341 1254c: 00012461 .word 0x00012461 00012550 <_lv_mem_get_size>: if(data == NULL) return 0; 12550: b138 cbz r0, 12562 <_lv_mem_get_size+0x12> if(data == &zero_mem) return 0; 12552: 4a06 ldr r2, [pc, #24] ; (1256c <_lv_mem_get_size+0x1c>) 12554: 4290 cmp r0, r2 12556: d006 beq.n 12566 <_lv_mem_get_size+0x16> return e->header.s.d_size; 12558: f850 0c04 ldr.w r0, [r0, #-4] 1255c: f3c0 005e ubfx r0, r0, #1, #31 12560: 4770 bx lr if(data == NULL) return 0; 12562: 2000 movs r0, #0 12564: 4770 bx lr if(data == &zero_mem) return 0; 12566: 2000 movs r0, #0 } 12568: 4770 bx lr 1256a: bf00 nop 1256c: 20006b90 .word 0x20006b90 00012570 <_lv_mem_buf_release>: if(mem_buf_small[i].p == p) { 12570: 4b1b ldr r3, [pc, #108] ; (125e0 <_lv_mem_buf_release+0x70>) 12572: 681b ldr r3, [r3, #0] 12574: 4298 cmp r0, r3 12576: d020 beq.n 125ba <_lv_mem_buf_release+0x4a> 12578: 4b19 ldr r3, [pc, #100] ; (125e0 <_lv_mem_buf_release+0x70>) 1257a: 689b ldr r3, [r3, #8] 1257c: 4283 cmp r3, r0 1257e: bf08 it eq 12580: 2201 moveq r2, #1 12582: d01b beq.n 125bc <_lv_mem_buf_release+0x4c> { 12584: b510 push {r4, lr} 12586: b082 sub sp, #8 if(LV_GC_ROOT(_lv_mem_buf[i]).p == p) { 12588: 4b16 ldr r3, [pc, #88] ; (125e4 <_lv_mem_buf_release+0x74>) 1258a: 681b ldr r3, [r3, #0] 1258c: 4298 cmp r0, r3 1258e: d01d beq.n 125cc <_lv_mem_buf_release+0x5c> 12590: 2301 movs r3, #1 12592: 4914 ldr r1, [pc, #80] ; (125e4 <_lv_mem_buf_release+0x74>) 12594: 461c mov r4, r3 12596: f851 2033 ldr.w r2, [r1, r3, lsl #3] 1259a: 4290 cmp r0, r2 1259c: d017 beq.n 125ce <_lv_mem_buf_release+0x5e> 1259e: 3301 adds r3, #1 for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { 125a0: 2b10 cmp r3, #16 125a2: d1f7 bne.n 12594 <_lv_mem_buf_release+0x24> LV_LOG_ERROR("lv_mem_buf_release: p is not a known buffer") 125a4: 4b10 ldr r3, [pc, #64] ; (125e8 <_lv_mem_buf_release+0x78>) 125a6: 9300 str r3, [sp, #0] 125a8: 4b10 ldr r3, [pc, #64] ; (125ec <_lv_mem_buf_release+0x7c>) 125aa: f240 2232 movw r2, #562 ; 0x232 125ae: 4910 ldr r1, [pc, #64] ; (125f0 <_lv_mem_buf_release+0x80>) 125b0: 2003 movs r0, #3 125b2: 4c10 ldr r4, [pc, #64] ; (125f4 <_lv_mem_buf_release+0x84>) 125b4: 47a0 blx r4 } 125b6: b002 add sp, #8 125b8: bd10 pop {r4, pc} if(mem_buf_small[i].p == p) { 125ba: 2200 movs r2, #0 mem_buf_small[i].used = 0; 125bc: 4b08 ldr r3, [pc, #32] ; (125e0 <_lv_mem_buf_release+0x70>) 125be: eb03 03c2 add.w r3, r3, r2, lsl #3 125c2: 799a ldrb r2, [r3, #6] 125c4: f36f 0200 bfc r2, #0, #1 125c8: 719a strb r2, [r3, #6] return; 125ca: 4770 bx lr if(LV_GC_ROOT(_lv_mem_buf[i]).p == p) { 125cc: 2400 movs r4, #0 LV_GC_ROOT(_lv_mem_buf[i]).used = 0; 125ce: 4b05 ldr r3, [pc, #20] ; (125e4 <_lv_mem_buf_release+0x74>) 125d0: eb03 04c4 add.w r4, r3, r4, lsl #3 125d4: 79a3 ldrb r3, [r4, #6] 125d6: f36f 0300 bfc r3, #0, #1 125da: 71a3 strb r3, [r4, #6] return; 125dc: e7eb b.n 125b6 <_lv_mem_buf_release+0x46> 125de: bf00 nop 125e0: 20000044 .word 0x20000044 125e4: 20006cb0 .word 0x20006cb0 125e8: 000293dc .word 0x000293dc 125ec: 00029364 .word 0x00029364 125f0: 00029398 .word 0x00029398 125f4: 0001225d .word 0x0001225d 000125f8 <_lv_mem_buf_free_all>: { 125f8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} mem_buf_small[i].used = 0; 125fc: 4b12 ldr r3, [pc, #72] ; (12648 <_lv_mem_buf_free_all+0x50>) 125fe: 799a ldrb r2, [r3, #6] 12600: f36f 0200 bfc r2, #0, #1 12604: 719a strb r2, [r3, #6] 12606: 7b9a ldrb r2, [r3, #14] 12608: f36f 0200 bfc r2, #0, #1 1260c: 739a strb r2, [r3, #14] 1260e: 4c0f ldr r4, [pc, #60] ; (1264c <_lv_mem_buf_free_all+0x54>) 12610: 2500 movs r5, #0 lv_mem_free(LV_GC_ROOT(_lv_mem_buf[i]).p); 12612: f8df 803c ldr.w r8, [pc, #60] ; 12650 <_lv_mem_buf_free_all+0x58> LV_GC_ROOT(_lv_mem_buf[i]).p = NULL; 12616: 462e mov r6, r5 LV_GC_ROOT(_lv_mem_buf[i]).used = 0; 12618: 1f27 subs r7, r4, #4 1261a: e003 b.n 12624 <_lv_mem_buf_free_all+0x2c> 1261c: 3501 adds r5, #1 1261e: 3408 adds r4, #8 for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { 12620: 2d10 cmp r5, #16 12622: d00e beq.n 12642 <_lv_mem_buf_free_all+0x4a> if(LV_GC_ROOT(_lv_mem_buf[i]).p) { 12624: f854 0c04 ldr.w r0, [r4, #-4] 12628: 2800 cmp r0, #0 1262a: d0f7 beq.n 1261c <_lv_mem_buf_free_all+0x24> lv_mem_free(LV_GC_ROOT(_lv_mem_buf[i]).p); 1262c: 47c0 blx r8 LV_GC_ROOT(_lv_mem_buf[i]).p = NULL; 1262e: f844 6c04 str.w r6, [r4, #-4] LV_GC_ROOT(_lv_mem_buf[i]).used = 0; 12632: eb07 03c5 add.w r3, r7, r5, lsl #3 12636: 799a ldrb r2, [r3, #6] 12638: f366 0200 bfi r2, r6, #0, #1 1263c: 719a strb r2, [r3, #6] LV_GC_ROOT(_lv_mem_buf[i]).size = 0; 1263e: 8026 strh r6, [r4, #0] 12640: e7ec b.n 1261c <_lv_mem_buf_free_all+0x24> } 12642: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 12646: bf00 nop 12648: 20000044 .word 0x20000044 1264c: 20006cb4 .word 0x20006cb4 12650: 000124c5 .word 0x000124c5 00012654 <_lv_memcpy>: { 12654: b4f0 push {r4, r5, r6, r7} lv_uintptr_t d_align = (lv_uintptr_t)d8 & ALIGN_MASK; 12656: f000 0303 and.w r3, r0, #3 lv_uintptr_t s_align = (lv_uintptr_t)s8 & ALIGN_MASK; 1265a: f001 0403 and.w r4, r1, #3 if(s_align != d_align) { 1265e: 42a3 cmp r3, r4 12660: f000 80a6 beq.w 127b0 <_lv_memcpy+0x15c> while(len > 32) { 12664: 2a20 cmp r2, #32 12666: f240 80a1 bls.w 127ac <_lv_memcpy+0x158> 1266a: f100 0420 add.w r4, r0, #32 1266e: f101 0320 add.w r3, r1, #32 12672: 4615 mov r5, r2 REPEAT8(COPY8); 12674: f813 6c20 ldrb.w r6, [r3, #-32] 12678: f804 6c20 strb.w r6, [r4, #-32] 1267c: f813 6c1f ldrb.w r6, [r3, #-31] 12680: f804 6c1f strb.w r6, [r4, #-31] 12684: f813 6c1e ldrb.w r6, [r3, #-30] 12688: f804 6c1e strb.w r6, [r4, #-30] 1268c: f813 6c1d ldrb.w r6, [r3, #-29] 12690: f804 6c1d strb.w r6, [r4, #-29] 12694: f813 6c1c ldrb.w r6, [r3, #-28] 12698: f804 6c1c strb.w r6, [r4, #-28] 1269c: f813 6c1b ldrb.w r6, [r3, #-27] 126a0: f804 6c1b strb.w r6, [r4, #-27] 126a4: f813 6c1a ldrb.w r6, [r3, #-26] 126a8: f804 6c1a strb.w r6, [r4, #-26] 126ac: f813 6c19 ldrb.w r6, [r3, #-25] 126b0: f804 6c19 strb.w r6, [r4, #-25] REPEAT8(COPY8); 126b4: f813 6c18 ldrb.w r6, [r3, #-24] 126b8: f804 6c18 strb.w r6, [r4, #-24] 126bc: f813 6c17 ldrb.w r6, [r3, #-23] 126c0: f804 6c17 strb.w r6, [r4, #-23] 126c4: f813 6c16 ldrb.w r6, [r3, #-22] 126c8: f804 6c16 strb.w r6, [r4, #-22] 126cc: f813 6c15 ldrb.w r6, [r3, #-21] 126d0: f804 6c15 strb.w r6, [r4, #-21] 126d4: f813 6c14 ldrb.w r6, [r3, #-20] 126d8: f804 6c14 strb.w r6, [r4, #-20] 126dc: f813 6c13 ldrb.w r6, [r3, #-19] 126e0: f804 6c13 strb.w r6, [r4, #-19] 126e4: f813 6c12 ldrb.w r6, [r3, #-18] 126e8: f804 6c12 strb.w r6, [r4, #-18] 126ec: f813 6c11 ldrb.w r6, [r3, #-17] 126f0: f804 6c11 strb.w r6, [r4, #-17] REPEAT8(COPY8); 126f4: f813 6c10 ldrb.w r6, [r3, #-16] 126f8: f804 6c10 strb.w r6, [r4, #-16] 126fc: f813 6c0f ldrb.w r6, [r3, #-15] 12700: f804 6c0f strb.w r6, [r4, #-15] 12704: f813 6c0e ldrb.w r6, [r3, #-14] 12708: f804 6c0e strb.w r6, [r4, #-14] 1270c: f813 6c0d ldrb.w r6, [r3, #-13] 12710: f804 6c0d strb.w r6, [r4, #-13] 12714: f813 6c0c ldrb.w r6, [r3, #-12] 12718: f804 6c0c strb.w r6, [r4, #-12] 1271c: f813 6c0b ldrb.w r6, [r3, #-11] 12720: f804 6c0b strb.w r6, [r4, #-11] 12724: f813 6c0a ldrb.w r6, [r3, #-10] 12728: f804 6c0a strb.w r6, [r4, #-10] 1272c: f813 6c09 ldrb.w r6, [r3, #-9] 12730: f804 6c09 strb.w r6, [r4, #-9] REPEAT8(COPY8); 12734: f813 6c08 ldrb.w r6, [r3, #-8] 12738: f804 6c08 strb.w r6, [r4, #-8] 1273c: f813 6c07 ldrb.w r6, [r3, #-7] 12740: f804 6c07 strb.w r6, [r4, #-7] 12744: f813 6c06 ldrb.w r6, [r3, #-6] 12748: f804 6c06 strb.w r6, [r4, #-6] 1274c: f813 6c05 ldrb.w r6, [r3, #-5] 12750: f804 6c05 strb.w r6, [r4, #-5] 12754: f813 6c04 ldrb.w r6, [r3, #-4] 12758: f804 6c04 strb.w r6, [r4, #-4] 1275c: f813 6c03 ldrb.w r6, [r3, #-3] 12760: f804 6c03 strb.w r6, [r4, #-3] 12764: f813 6c02 ldrb.w r6, [r3, #-2] 12768: f804 6c02 strb.w r6, [r4, #-2] 1276c: f813 6c01 ldrb.w r6, [r3, #-1] 12770: f804 6c01 strb.w r6, [r4, #-1] len -= 32; 12774: 3d20 subs r5, #32 12776: 3420 adds r4, #32 12778: 3320 adds r3, #32 while(len > 32) { 1277a: 2d20 cmp r5, #32 1277c: f63f af7a bhi.w 12674 <_lv_memcpy+0x20> 12780: f1a2 0521 sub.w r5, r2, #33 ; 0x21 12784: f025 041f bic.w r4, r5, #31 12788: 3420 adds r4, #32 1278a: 1903 adds r3, r0, r4 1278c: 4421 add r1, r4 1278e: 3a20 subs r2, #32 12790: f025 051f bic.w r5, r5, #31 12794: 1b52 subs r2, r2, r5 while(len) { 12796: b13a cbz r2, 127a8 <_lv_memcpy+0x154> 12798: 3901 subs r1, #1 1279a: 441a add r2, r3 COPY8 1279c: f811 4f01 ldrb.w r4, [r1, #1]! 127a0: f803 4b01 strb.w r4, [r3], #1 while(len) { 127a4: 429a cmp r2, r3 127a6: d1f9 bne.n 1279c <_lv_memcpy+0x148> } 127a8: bcf0 pop {r4, r5, r6, r7} 127aa: 4770 bx lr while(len > 32) { 127ac: 4603 mov r3, r0 127ae: e7f2 b.n 12796 <_lv_memcpy+0x142> if(d_align) { 127b0: 2b00 cmp r3, #0 127b2: d15b bne.n 1286c <_lv_memcpy+0x218> uint8_t * d8 = dst; 127b4: 4605 mov r5, r0 while(len > 32) { 127b6: 2a20 cmp r2, #32 127b8: d934 bls.n 12824 <_lv_memcpy+0x1d0> 127ba: f105 0420 add.w r4, r5, #32 127be: f101 0320 add.w r3, r1, #32 127c2: 4616 mov r6, r2 REPEAT8(COPY32) 127c4: f853 7c20 ldr.w r7, [r3, #-32] 127c8: f844 7c20 str.w r7, [r4, #-32] 127cc: f853 7c1c ldr.w r7, [r3, #-28] 127d0: f844 7c1c str.w r7, [r4, #-28] 127d4: f853 7c18 ldr.w r7, [r3, #-24] 127d8: f844 7c18 str.w r7, [r4, #-24] 127dc: f853 7c14 ldr.w r7, [r3, #-20] 127e0: f844 7c14 str.w r7, [r4, #-20] 127e4: f853 7c10 ldr.w r7, [r3, #-16] 127e8: f844 7c10 str.w r7, [r4, #-16] 127ec: f853 7c0c ldr.w r7, [r3, #-12] 127f0: f844 7c0c str.w r7, [r4, #-12] 127f4: f853 7c08 ldr.w r7, [r3, #-8] 127f8: f844 7c08 str.w r7, [r4, #-8] 127fc: f853 7c04 ldr.w r7, [r3, #-4] 12800: f844 7c04 str.w r7, [r4, #-4] len -= 32; 12804: 3e20 subs r6, #32 12806: 3420 adds r4, #32 12808: 3320 adds r3, #32 while(len > 32) { 1280a: 2e20 cmp r6, #32 1280c: d8da bhi.n 127c4 <_lv_memcpy+0x170> 1280e: f1a2 0321 sub.w r3, r2, #33 ; 0x21 12812: f023 041f bic.w r4, r3, #31 12816: 3420 adds r4, #32 12818: 4425 add r5, r4 1281a: 4421 add r1, r4 1281c: 3a20 subs r2, #32 1281e: f023 031f bic.w r3, r3, #31 12822: 1ad2 subs r2, r2, r3 while(len > 4) { 12824: 2a04 cmp r2, #4 12826: d932 bls.n 1288e <_lv_memcpy+0x23a> 12828: 1f0e subs r6, r1, #4 1282a: 462c mov r4, r5 1282c: 4613 mov r3, r2 COPY32; 1282e: f856 7f04 ldr.w r7, [r6, #4]! 12832: f844 7b04 str.w r7, [r4], #4 len -= 4; 12836: 3b04 subs r3, #4 while(len > 4) { 12838: 2b04 cmp r3, #4 1283a: d8f8 bhi.n 1282e <_lv_memcpy+0x1da> 1283c: 1f54 subs r4, r2, #5 1283e: f024 0303 bic.w r3, r4, #3 12842: 3304 adds r3, #4 12844: 3a04 subs r2, #4 12846: f024 0403 bic.w r4, r4, #3 1284a: 1b12 subs r2, r2, r4 COPY32; 1284c: 4419 add r1, r3 1284e: 442b add r3, r5 while(len) { 12850: 2a00 cmp r2, #0 12852: d0a9 beq.n 127a8 <_lv_memcpy+0x154> 12854: 3901 subs r1, #1 12856: 441a add r2, r3 COPY8 12858: f811 4f01 ldrb.w r4, [r1, #1]! 1285c: f803 4b01 strb.w r4, [r3], #1 while(len) { 12860: 4293 cmp r3, r2 12862: d1f9 bne.n 12858 <_lv_memcpy+0x204> 12864: e7a0 b.n 127a8 <_lv_memcpy+0x154> COPY8; 12866: 4629 mov r1, r5 12868: 461d mov r5, r3 1286a: e7a4 b.n 127b6 <_lv_memcpy+0x162> while(d_align && len) { 1286c: f1c3 0304 rsb r3, r3, #4 12870: b17a cbz r2, 12892 <_lv_memcpy+0x23e> 12872: 18c4 adds r4, r0, r3 12874: 4603 mov r3, r0 COPY8; 12876: f811 5b01 ldrb.w r5, [r1], #1 1287a: f803 5b01 strb.w r5, [r3], #1 1287e: 460d mov r5, r1 len--; 12880: 3a01 subs r2, #1 while(d_align && len) { 12882: 42a3 cmp r3, r4 12884: d0ef beq.n 12866 <_lv_memcpy+0x212> 12886: 2a00 cmp r2, #0 12888: d1f5 bne.n 12876 <_lv_memcpy+0x222> while(len > 4) { 1288a: 2200 movs r2, #0 1288c: e7e0 b.n 12850 <_lv_memcpy+0x1fc> 1288e: 462b mov r3, r5 12890: e7de b.n 12850 <_lv_memcpy+0x1fc> uint8_t * d8 = dst; 12892: 4603 mov r3, r0 12894: e7f9 b.n 1288a <_lv_memcpy+0x236> ... 00012898 : { 12898: b5f0 push {r4, r5, r6, r7, lr} 1289a: b083 sub sp, #12 1289c: 4604 mov r4, r0 1289e: 460d mov r5, r1 if(new_size & 0x3) { 128a0: f011 0f03 tst.w r1, #3 new_size = new_size & (~0x3); 128a4: bf1c itt ne 128a6: f021 0503 bicne.w r5, r1, #3 new_size += 4; 128aa: 3504 addne r5, #4 if(data_p != NULL) { 128ac: b138 cbz r0, 128be if(e->header.s.used == 0) { 128ae: f810 3c04 ldrb.w r3, [r0, #-4] 128b2: f003 0301 and.w r3, r3, #1 data_p = NULL; 128b6: 2b00 cmp r3, #0 128b8: bf14 ite ne 128ba: 4604 movne r4, r0 128bc: 2400 moveq r4, #0 uint32_t old_size = _lv_mem_get_size(data_p); 128be: 4620 mov r0, r4 128c0: 4b15 ldr r3, [pc, #84] ; (12918 ) 128c2: 4798 blx r3 128c4: 4606 mov r6, r0 if(old_size == new_size) return data_p; /*Also avoid reallocating the same memory*/ 128c6: 4285 cmp r5, r0 128c8: d024 beq.n 12914 if(new_size < old_size) { 128ca: d311 bcc.n 128f0 new_p = lv_mem_alloc(new_size); 128cc: 4628 mov r0, r5 128ce: 4b13 ldr r3, [pc, #76] ; (1291c ) 128d0: 4798 blx r3 if(new_p == NULL) { 128d2: 4607 mov r7, r0 128d4: b1a0 cbz r0, 12900 if(data_p != NULL) { 128d6: b184 cbz r4, 128fa if(old_size != 0) { 128d8: b17e cbz r6, 128fa _lv_memcpy(new_p, data_p, LV_MATH_MIN(new_size, old_size)); 128da: 462a mov r2, r5 128dc: 42b5 cmp r5, r6 128de: bf28 it cs 128e0: 4632 movcs r2, r6 128e2: 4621 mov r1, r4 128e4: 4b0e ldr r3, [pc, #56] ; (12920 ) 128e6: 4798 blx r3 lv_mem_free(data_p); 128e8: 4620 mov r0, r4 128ea: 4b0e ldr r3, [pc, #56] ; (12924 ) 128ec: 4798 blx r3 128ee: e004 b.n 128fa ent_trunc(e, new_size); 128f0: 4629 mov r1, r5 128f2: 1f20 subs r0, r4, #4 128f4: 4b0c ldr r3, [pc, #48] ; (12928 ) 128f6: 4798 blx r3 return &e->first_data; 128f8: 4627 mov r7, r4 } 128fa: 4638 mov r0, r7 128fc: b003 add sp, #12 128fe: bdf0 pop {r4, r5, r6, r7, pc} LV_LOG_WARN("Couldn't allocate memory"); 12900: 4b0a ldr r3, [pc, #40] ; (1292c ) 12902: 9300 str r3, [sp, #0] 12904: 4b0a ldr r3, [pc, #40] ; (12930 ) 12906: f240 123f movw r2, #319 ; 0x13f 1290a: 490a ldr r1, [pc, #40] ; (12934 ) 1290c: 2002 movs r0, #2 1290e: 4c0a ldr r4, [pc, #40] ; (12938 ) 12910: 47a0 blx r4 return NULL; 12912: e7f2 b.n 128fa if(old_size == new_size) return data_p; /*Also avoid reallocating the same memory*/ 12914: 4627 mov r7, r4 12916: e7f0 b.n 128fa 12918: 00012551 .word 0x00012551 1291c: 000123dd .word 0x000123dd 12920: 00012655 .word 0x00012655 12924: 000124c5 .word 0x000124c5 12928: 00012369 .word 0x00012369 1292c: 000293c0 .word 0x000293c0 12930: 00029378 .word 0x00029378 12934: 00029398 .word 0x00029398 12938: 0001225d .word 0x0001225d 0001293c <_lv_mem_buf_get>: if(size == 0) return NULL; 1293c: 2800 cmp r0, #0 1293e: f000 808d beq.w 12a5c <_lv_mem_buf_get+0x120> 12942: 4601 mov r1, r0 if(size <= MEM_BUF_SMALL_SIZE) { 12944: 2810 cmp r0, #16 12946: d80b bhi.n 12960 <_lv_mem_buf_get+0x24> if(mem_buf_small[i].used == 0) { 12948: 4b45 ldr r3, [pc, #276] ; (12a60 <_lv_mem_buf_get+0x124>) 1294a: 799b ldrb r3, [r3, #6] 1294c: f013 0f01 tst.w r3, #1 12950: d00e beq.n 12970 <_lv_mem_buf_get+0x34> 12952: 4b43 ldr r3, [pc, #268] ; (12a60 <_lv_mem_buf_get+0x124>) 12954: 7b9b ldrb r3, [r3, #14] 12956: f013 0f01 tst.w r3, #1 1295a: bf08 it eq 1295c: 2001 moveq r0, #1 1295e: d008 beq.n 12972 <_lv_mem_buf_get+0x36> { 12960: b570 push {r4, r5, r6, lr} 12962: b082 sub sp, #8 12964: 4a3f ldr r2, [pc, #252] ; (12a64 <_lv_mem_buf_get+0x128>) if(mem_buf_small[i].used == 0) { 12966: 2300 movs r3, #0 12968: f04f 36ff mov.w r6, #4294967295 if(LV_GC_ROOT(_lv_mem_buf[i]).used == 0 && LV_GC_ROOT(_lv_mem_buf[i]).size >= size) { 1296c: 4614 mov r4, r2 1296e: e019 b.n 129a4 <_lv_mem_buf_get+0x68> if(mem_buf_small[i].used == 0) { 12970: 2000 movs r0, #0 mem_buf_small[i].used = 1; 12972: 4a3b ldr r2, [pc, #236] ; (12a60 <_lv_mem_buf_get+0x124>) 12974: eb02 01c0 add.w r1, r2, r0, lsl #3 12978: 798b ldrb r3, [r1, #6] 1297a: f043 0301 orr.w r3, r3, #1 1297e: 718b strb r3, [r1, #6] return mem_buf_small[i].p; 12980: f852 0030 ldr.w r0, [r2, r0, lsl #3] 12984: 4770 bx lr LV_GC_ROOT(_lv_mem_buf[i]).used = 1; 12986: 4a37 ldr r2, [pc, #220] ; (12a64 <_lv_mem_buf_get+0x128>) 12988: eb02 01c3 add.w r1, r2, r3, lsl #3 1298c: 798b ldrb r3, [r1, #6] 1298e: f043 0301 orr.w r3, r3, #1 12992: 718b strb r3, [r1, #6] return LV_GC_ROOT(_lv_mem_buf[i]).p; 12994: f852 0035 ldr.w r0, [r2, r5, lsl #3] 12998: e023 b.n 129e2 <_lv_mem_buf_get+0xa6> i_guess = i; 1299a: b25e sxtb r6, r3 1299c: 3301 adds r3, #1 1299e: 3208 adds r2, #8 for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { 129a0: 2b10 cmp r3, #16 129a2: d013 beq.n 129cc <_lv_mem_buf_get+0x90> if(LV_GC_ROOT(_lv_mem_buf[i]).used == 0 && LV_GC_ROOT(_lv_mem_buf[i]).size >= size) { 129a4: 461d mov r5, r3 129a6: eb04 00c3 add.w r0, r4, r3, lsl #3 129aa: 7980 ldrb r0, [r0, #6] 129ac: f010 0f01 tst.w r0, #1 129b0: d1f4 bne.n 1299c <_lv_mem_buf_get+0x60> 129b2: 8890 ldrh r0, [r2, #4] 129b4: 4281 cmp r1, r0 129b6: d8f1 bhi.n 1299c <_lv_mem_buf_get+0x60> if(LV_GC_ROOT(_lv_mem_buf[i]).size == size) { 129b8: d0e5 beq.n 12986 <_lv_mem_buf_get+0x4a> else if(i_guess < 0) { 129ba: 2e00 cmp r6, #0 129bc: dbed blt.n 1299a <_lv_mem_buf_get+0x5e> else if(LV_GC_ROOT(_lv_mem_buf[i]).size < LV_GC_ROOT(_lv_mem_buf[i_guess]).size) { 129be: eb04 05c6 add.w r5, r4, r6, lsl #3 129c2: 88ad ldrh r5, [r5, #4] 129c4: 4285 cmp r5, r0 i_guess = i; 129c6: bf88 it hi 129c8: b25e sxtbhi r6, r3 129ca: e7e7 b.n 1299c <_lv_mem_buf_get+0x60> if(i_guess >= 0) { 129cc: 2e00 cmp r6, #0 129ce: db0a blt.n 129e6 <_lv_mem_buf_get+0xaa> LV_GC_ROOT(_lv_mem_buf[i_guess]).used = 1; 129d0: 4a24 ldr r2, [pc, #144] ; (12a64 <_lv_mem_buf_get+0x128>) 129d2: eb02 01c6 add.w r1, r2, r6, lsl #3 129d6: 798b ldrb r3, [r1, #6] 129d8: f043 0301 orr.w r3, r3, #1 129dc: 718b strb r3, [r1, #6] return LV_GC_ROOT(_lv_mem_buf[i_guess]).p; 129de: f852 0036 ldr.w r0, [r2, r6, lsl #3] } 129e2: b002 add sp, #8 129e4: bd70 pop {r4, r5, r6, pc} if(LV_GC_ROOT(_lv_mem_buf[i]).used == 0) { 129e6: 4b1f ldr r3, [pc, #124] ; (12a64 <_lv_mem_buf_get+0x128>) 129e8: 799b ldrb r3, [r3, #6] 129ea: f013 0f01 tst.w r3, #1 129ee: bf08 it eq 129f0: 2400 moveq r4, #0 129f2: d016 beq.n 12a22 <_lv_mem_buf_get+0xe6> 129f4: 2301 movs r3, #1 129f6: 481b ldr r0, [pc, #108] ; (12a64 <_lv_mem_buf_get+0x128>) 129f8: 461c mov r4, r3 129fa: eb00 02c3 add.w r2, r0, r3, lsl #3 129fe: 7992 ldrb r2, [r2, #6] 12a00: f012 0f01 tst.w r2, #1 12a04: d00d beq.n 12a22 <_lv_mem_buf_get+0xe6> 12a06: 3301 adds r3, #1 for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { 12a08: 2b10 cmp r3, #16 12a0a: d1f5 bne.n 129f8 <_lv_mem_buf_get+0xbc> LV_LOG_ERROR("lv_mem_buf_get: no free buffer. Increase LV_DRAW_BUF_MAX_NUM."); 12a0c: 4b16 ldr r3, [pc, #88] ; (12a68 <_lv_mem_buf_get+0x12c>) 12a0e: 9300 str r3, [sp, #0] 12a10: 4b16 ldr r3, [pc, #88] ; (12a6c <_lv_mem_buf_get+0x130>) 12a12: f240 2216 movw r2, #534 ; 0x216 12a16: 4916 ldr r1, [pc, #88] ; (12a70 <_lv_mem_buf_get+0x134>) 12a18: 2003 movs r0, #3 12a1a: 4c16 ldr r4, [pc, #88] ; (12a74 <_lv_mem_buf_get+0x138>) 12a1c: 47a0 blx r4 return NULL; 12a1e: 2000 movs r0, #0 12a20: e7df b.n 129e2 <_lv_mem_buf_get+0xa6> LV_GC_ROOT(_lv_mem_buf[i]).used = 1; 12a22: 4d10 ldr r5, [pc, #64] ; (12a64 <_lv_mem_buf_get+0x128>) 12a24: eb05 03c4 add.w r3, r5, r4, lsl #3 12a28: 799a ldrb r2, [r3, #6] 12a2a: f042 0201 orr.w r2, r2, #1 12a2e: 719a strb r2, [r3, #6] LV_GC_ROOT(_lv_mem_buf[i]).size = size; 12a30: 8099 strh r1, [r3, #4] LV_GC_ROOT(_lv_mem_buf[i]).p = lv_mem_realloc(LV_GC_ROOT(_lv_mem_buf[i]).p, size); 12a32: f855 0034 ldr.w r0, [r5, r4, lsl #3] 12a36: 4b10 ldr r3, [pc, #64] ; (12a78 <_lv_mem_buf_get+0x13c>) 12a38: 4798 blx r3 12a3a: f845 0034 str.w r0, [r5, r4, lsl #3] if(LV_GC_ROOT(_lv_mem_buf[i]).p == NULL) { 12a3e: b118 cbz r0, 12a48 <_lv_mem_buf_get+0x10c> return LV_GC_ROOT(_lv_mem_buf[i]).p; 12a40: 4b08 ldr r3, [pc, #32] ; (12a64 <_lv_mem_buf_get+0x128>) 12a42: f853 0034 ldr.w r0, [r3, r4, lsl #3] 12a46: e7cc b.n 129e2 <_lv_mem_buf_get+0xa6> LV_LOG_ERROR("lv_mem_buf_get: Out of memory, can't allocate a new buffer (increase your LV_MEM_SIZE/heap size)") 12a48: 4b0c ldr r3, [pc, #48] ; (12a7c <_lv_mem_buf_get+0x140>) 12a4a: 9300 str r3, [sp, #0] 12a4c: 4b07 ldr r3, [pc, #28] ; (12a6c <_lv_mem_buf_get+0x130>) 12a4e: f44f 7204 mov.w r2, #528 ; 0x210 12a52: 4907 ldr r1, [pc, #28] ; (12a70 <_lv_mem_buf_get+0x134>) 12a54: 2003 movs r0, #3 12a56: 4d07 ldr r5, [pc, #28] ; (12a74 <_lv_mem_buf_get+0x138>) 12a58: 47a8 blx r5 12a5a: e7f1 b.n 12a40 <_lv_mem_buf_get+0x104> if(size == 0) return NULL; 12a5c: 2000 movs r0, #0 12a5e: 4770 bx lr 12a60: 20000044 .word 0x20000044 12a64: 20006cb0 .word 0x20006cb0 12a68: 0002946c .word 0x0002946c 12a6c: 00029388 .word 0x00029388 12a70: 00029398 .word 0x00029398 12a74: 0001225d .word 0x0001225d 12a78: 00012899 .word 0x00012899 12a7c: 00029408 .word 0x00029408 00012a80 <_lv_memset>: if(d_align) { 12a80: f010 0303 ands.w r3, r0, #3 12a84: d013 beq.n 12aae <_lv_memset+0x2e> while(d_align && len) { 12a86: f1c3 0304 rsb r3, r3, #4 12a8a: b13a cbz r2, 12a9c <_lv_memset+0x1c> 12a8c: 4403 add r3, r0 *d8 = v; 12a8e: f800 1b01 strb.w r1, [r0], #1 len--; 12a92: 3a01 subs r2, #1 while(d_align && len) { 12a94: 4298 cmp r0, r3 12a96: d00a beq.n 12aae <_lv_memset+0x2e> 12a98: 2a00 cmp r2, #0 12a9a: d1f8 bne.n 12a8e <_lv_memset+0xe> while(len > 4) { 12a9c: 2200 movs r2, #0 while(len) { 12a9e: 2a00 cmp r2, #0 12aa0: d048 beq.n 12b34 <_lv_memset+0xb4> 12aa2: 4402 add r2, r0 *d8 = v; 12aa4: f800 1b01 strb.w r1, [r0], #1 while(len) { 12aa8: 4290 cmp r0, r2 12aaa: d1fb bne.n 12aa4 <_lv_memset+0x24> 12aac: 4770 bx lr { 12aae: b430 push {r4, r5} uint32_t v32 = v + (v << 8) + (v << 16) + (v << 24); 12ab0: eb01 2401 add.w r4, r1, r1, lsl #8 12ab4: eb04 4401 add.w r4, r4, r1, lsl #16 12ab8: eb04 6401 add.w r4, r4, r1, lsl #24 while(len > 32) { 12abc: 2a20 cmp r2, #32 12abe: d920 bls.n 12b02 <_lv_memset+0x82> 12ac0: f100 0320 add.w r3, r0, #32 12ac4: 4615 mov r5, r2 SET32(v32); 12ac6: f843 4c20 str.w r4, [r3, #-32] SET32(v32); 12aca: f843 4c1c str.w r4, [r3, #-28] SET32(v32); 12ace: f843 4c18 str.w r4, [r3, #-24] SET32(v32); 12ad2: f843 4c14 str.w r4, [r3, #-20] SET32(v32); 12ad6: f843 4c10 str.w r4, [r3, #-16] SET32(v32); 12ada: f843 4c0c str.w r4, [r3, #-12] SET32(v32); 12ade: f843 4c08 str.w r4, [r3, #-8] SET32(v32); 12ae2: f843 4c04 str.w r4, [r3, #-4] len -= 32; 12ae6: 3d20 subs r5, #32 12ae8: 3320 adds r3, #32 while(len > 32) { 12aea: 2d20 cmp r5, #32 12aec: d8eb bhi.n 12ac6 <_lv_memset+0x46> 12aee: f1a2 0321 sub.w r3, r2, #33 ; 0x21 12af2: f023 051f bic.w r5, r3, #31 12af6: 3520 adds r5, #32 12af8: 4428 add r0, r5 12afa: 3a20 subs r2, #32 12afc: f023 031f bic.w r3, r3, #31 12b00: 1ad2 subs r2, r2, r3 while(len > 4) { 12b02: 2a04 cmp r2, #4 12b04: d90f bls.n 12b26 <_lv_memset+0xa6> 12b06: 4605 mov r5, r0 12b08: 4613 mov r3, r2 SET32(v32); 12b0a: f845 4b04 str.w r4, [r5], #4 len -= 4; 12b0e: 3b04 subs r3, #4 while(len > 4) { 12b10: 2b04 cmp r3, #4 12b12: d8fa bhi.n 12b0a <_lv_memset+0x8a> 12b14: 1f53 subs r3, r2, #5 12b16: f023 0403 bic.w r4, r3, #3 12b1a: 3404 adds r4, #4 12b1c: 3a04 subs r2, #4 12b1e: f023 0303 bic.w r3, r3, #3 12b22: 1ad2 subs r2, r2, r3 SET32(v32); 12b24: 4420 add r0, r4 while(len) { 12b26: b122 cbz r2, 12b32 <_lv_memset+0xb2> 12b28: 4402 add r2, r0 *d8 = v; 12b2a: f800 1b01 strb.w r1, [r0], #1 while(len) { 12b2e: 4290 cmp r0, r2 12b30: d1fb bne.n 12b2a <_lv_memset+0xaa> } 12b32: bc30 pop {r4, r5} 12b34: 4770 bx lr 00012b36 <_lv_memset_00>: if(d_align) { 12b36: f010 0303 ands.w r3, r0, #3 12b3a: d141 bne.n 12bc0 <_lv_memset_00+0x8a> { 12b3c: b410 push {r4} while(len > 32) { 12b3e: 2920 cmp r1, #32 12b40: d921 bls.n 12b86 <_lv_memset_00+0x50> 12b42: f100 0320 add.w r3, r0, #32 12b46: 460c mov r4, r1 SET32(0); 12b48: 2200 movs r2, #0 12b4a: f843 2c20 str.w r2, [r3, #-32] SET32(0); 12b4e: f843 2c1c str.w r2, [r3, #-28] SET32(0); 12b52: f843 2c18 str.w r2, [r3, #-24] SET32(0); 12b56: f843 2c14 str.w r2, [r3, #-20] SET32(0); 12b5a: f843 2c10 str.w r2, [r3, #-16] SET32(0); 12b5e: f843 2c0c str.w r2, [r3, #-12] SET32(0); 12b62: f843 2c08 str.w r2, [r3, #-8] SET32(0); 12b66: f843 2c04 str.w r2, [r3, #-4] len -= 32; 12b6a: 3c20 subs r4, #32 12b6c: 3320 adds r3, #32 while(len > 32) { 12b6e: 2c20 cmp r4, #32 12b70: d8eb bhi.n 12b4a <_lv_memset_00+0x14> 12b72: f1a1 0321 sub.w r3, r1, #33 ; 0x21 12b76: f023 021f bic.w r2, r3, #31 12b7a: 3220 adds r2, #32 12b7c: 4410 add r0, r2 12b7e: 3920 subs r1, #32 12b80: f023 031f bic.w r3, r3, #31 12b84: 1ac9 subs r1, r1, r3 while(len > 4) { 12b86: 2904 cmp r1, #4 12b88: d910 bls.n 12bac <_lv_memset_00+0x76> 12b8a: 4602 mov r2, r0 12b8c: 460b mov r3, r1 SET32(0); 12b8e: 2400 movs r4, #0 12b90: f842 4b04 str.w r4, [r2], #4 len -= 4; 12b94: 3b04 subs r3, #4 while(len > 4) { 12b96: 2b04 cmp r3, #4 12b98: d8fa bhi.n 12b90 <_lv_memset_00+0x5a> 12b9a: 1f4b subs r3, r1, #5 12b9c: f023 0203 bic.w r2, r3, #3 12ba0: 3204 adds r2, #4 12ba2: 3904 subs r1, #4 12ba4: f023 0303 bic.w r3, r3, #3 12ba8: 1ac9 subs r1, r1, r3 SET32(0); 12baa: 4410 add r0, r2 while(len) { 12bac: b129 cbz r1, 12bba <_lv_memset_00+0x84> 12bae: 4401 add r1, r0 *d8 = 0; 12bb0: 2300 movs r3, #0 12bb2: f800 3b01 strb.w r3, [r0], #1 while(len) { 12bb6: 4288 cmp r0, r1 12bb8: d1fb bne.n 12bb2 <_lv_memset_00+0x7c> } 12bba: f85d 4b04 ldr.w r4, [sp], #4 12bbe: 4770 bx lr while(d_align && len) { 12bc0: f1c3 0304 rsb r3, r3, #4 12bc4: b141 cbz r1, 12bd8 <_lv_memset_00+0xa2> 12bc6: 4403 add r3, r0 *d8 = 0x00; 12bc8: 2200 movs r2, #0 12bca: f800 2b01 strb.w r2, [r0], #1 len--; 12bce: 3901 subs r1, #1 while(d_align && len) { 12bd0: 4298 cmp r0, r3 12bd2: d0b3 beq.n 12b3c <_lv_memset_00+0x6> 12bd4: 2900 cmp r1, #0 12bd6: d1f8 bne.n 12bca <_lv_memset_00+0x94> while(len > 4) { 12bd8: 2100 movs r1, #0 while(len) { 12bda: 2900 cmp r1, #0 12bdc: d0ef beq.n 12bbe <_lv_memset_00+0x88> 12bde: 4401 add r1, r0 *d8 = 0; 12be0: 2300 movs r3, #0 12be2: f800 3b01 strb.w r3, [r0], #1 while(len) { 12be6: 4288 cmp r0, r1 12be8: d1fb bne.n 12be2 <_lv_memset_00+0xac> 12bea: 4770 bx lr 00012bec <_lv_memset_ff>: if(d_align) { 12bec: f010 0303 ands.w r3, r0, #3 12bf0: d143 bne.n 12c7a <_lv_memset_ff+0x8e> { 12bf2: b410 push {r4} while(len > 32) { 12bf4: 2920 cmp r1, #32 12bf6: d922 bls.n 12c3e <_lv_memset_ff+0x52> 12bf8: f100 0320 add.w r3, r0, #32 12bfc: 460c mov r4, r1 SET32(0xFFFFFFFF); 12bfe: f04f 32ff mov.w r2, #4294967295 12c02: f843 2c20 str.w r2, [r3, #-32] SET32(0xFFFFFFFF); 12c06: f843 2c1c str.w r2, [r3, #-28] SET32(0xFFFFFFFF); 12c0a: f843 2c18 str.w r2, [r3, #-24] SET32(0xFFFFFFFF); 12c0e: f843 2c14 str.w r2, [r3, #-20] SET32(0xFFFFFFFF); 12c12: f843 2c10 str.w r2, [r3, #-16] SET32(0xFFFFFFFF); 12c16: f843 2c0c str.w r2, [r3, #-12] SET32(0xFFFFFFFF); 12c1a: f843 2c08 str.w r2, [r3, #-8] SET32(0xFFFFFFFF); 12c1e: f843 2c04 str.w r2, [r3, #-4] len -= 32; 12c22: 3c20 subs r4, #32 12c24: 3320 adds r3, #32 while(len > 32) { 12c26: 2c20 cmp r4, #32 12c28: d8eb bhi.n 12c02 <_lv_memset_ff+0x16> 12c2a: f1a1 0321 sub.w r3, r1, #33 ; 0x21 12c2e: f023 021f bic.w r2, r3, #31 12c32: 3220 adds r2, #32 12c34: 4410 add r0, r2 12c36: 3920 subs r1, #32 12c38: f023 031f bic.w r3, r3, #31 12c3c: 1ac9 subs r1, r1, r3 while(len > 4) { 12c3e: 2904 cmp r1, #4 12c40: d911 bls.n 12c66 <_lv_memset_ff+0x7a> 12c42: 4602 mov r2, r0 12c44: 460b mov r3, r1 SET32(0xFFFFFFFF); 12c46: f04f 34ff mov.w r4, #4294967295 12c4a: f842 4b04 str.w r4, [r2], #4 len -= 4; 12c4e: 3b04 subs r3, #4 while(len > 4) { 12c50: 2b04 cmp r3, #4 12c52: d8fa bhi.n 12c4a <_lv_memset_ff+0x5e> 12c54: 1f4b subs r3, r1, #5 12c56: f023 0203 bic.w r2, r3, #3 12c5a: 3204 adds r2, #4 12c5c: 3904 subs r1, #4 12c5e: f023 0303 bic.w r3, r3, #3 12c62: 1ac9 subs r1, r1, r3 SET32(0xFFFFFFFF); 12c64: 4410 add r0, r2 while(len) { 12c66: b129 cbz r1, 12c74 <_lv_memset_ff+0x88> 12c68: 4401 add r1, r0 *d8 = 0xFF; 12c6a: 23ff movs r3, #255 ; 0xff 12c6c: f800 3b01 strb.w r3, [r0], #1 while(len) { 12c70: 4288 cmp r0, r1 12c72: d1fb bne.n 12c6c <_lv_memset_ff+0x80> } 12c74: f85d 4b04 ldr.w r4, [sp], #4 12c78: 4770 bx lr while(d_align && len) { 12c7a: f1c3 0304 rsb r3, r3, #4 12c7e: b141 cbz r1, 12c92 <_lv_memset_ff+0xa6> 12c80: 4403 add r3, r0 *d8 = 0xFF; 12c82: 22ff movs r2, #255 ; 0xff 12c84: f800 2b01 strb.w r2, [r0], #1 len--; 12c88: 3901 subs r1, #1 while(d_align && len) { 12c8a: 4298 cmp r0, r3 12c8c: d0b1 beq.n 12bf2 <_lv_memset_ff+0x6> 12c8e: 2900 cmp r1, #0 12c90: d1f8 bne.n 12c84 <_lv_memset_ff+0x98> while(len > 4) { 12c92: 2100 movs r1, #0 while(len) { 12c94: 2900 cmp r1, #0 12c96: d0ef beq.n 12c78 <_lv_memset_ff+0x8c> 12c98: 4401 add r1, r0 *d8 = 0xFF; 12c9a: 23ff movs r3, #255 ; 0xff 12c9c: f800 3b01 strb.w r3, [r0], #1 while(len) { 12ca0: 4288 cmp r0, r1 12ca2: d1fb bne.n 12c9c <_lv_memset_ff+0xb0> 12ca4: 4770 bx lr 00012ca6 <_out_buffer>: // internal buffer output static inline void _out_buffer(char character, void * buffer, size_t idx, size_t maxlen) { if(idx < maxlen) { 12ca6: 429a cmp r2, r3 ((char *)buffer)[idx] = character; 12ca8: bf38 it cc 12caa: 5488 strbcc r0, [r1, r2] 12cac: 4770 bx lr 00012cae <_out_null>: } // internal null output static inline void _out_null(char character, void * buffer, size_t idx, size_t maxlen) { 12cae: 4770 bx lr 00012cb0 <_ntoa_format>: // internal itoa format static size_t _ntoa_format(out_fct_type out, char * buffer, size_t idx, size_t maxlen, char * buf, size_t len, bool negative, unsigned int base, unsigned int prec, unsigned int width, unsigned int flags) { 12cb0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 12cb4: b083 sub sp, #12 12cb6: 4607 mov r7, r0 12cb8: 9100 str r1, [sp, #0] 12cba: 4693 mov fp, r2 12cbc: 4698 mov r8, r3 12cbe: f8dd 9030 ldr.w r9, [sp, #48] ; 0x30 12cc2: 9c0d ldr r4, [sp, #52] ; 0x34 12cc4: f89d 5038 ldrb.w r5, [sp, #56] ; 0x38 12cc8: 9910 ldr r1, [sp, #64] ; 0x40 12cca: f8dd a044 ldr.w sl, [sp, #68] ; 0x44 12cce: 9a12 ldr r2, [sp, #72] ; 0x48 // pad leading zeros if(!(flags & FLAGS_LEFT)) { 12cd0: f012 0302 ands.w r3, r2, #2 12cd4: 9301 str r3, [sp, #4] 12cd6: d135 bne.n 12d44 <_ntoa_format+0x94> if(width && (flags & FLAGS_ZEROPAD) && (negative || (flags & (FLAGS_PLUS | FLAGS_SPACE)))) { 12cd8: f1ba 0f00 cmp.w sl, #0 12cdc: d00e beq.n 12cfc <_ntoa_format+0x4c> 12cde: f012 0f01 tst.w r2, #1 12ce2: f000 80b6 beq.w 12e52 <_ntoa_format+0x1a2> 12ce6: b915 cbnz r5, 12cee <_ntoa_format+0x3e> 12ce8: f012 0f0c tst.w r2, #12 12cec: d001 beq.n 12cf2 <_ntoa_format+0x42> width--; 12cee: f10a 3aff add.w sl, sl, #4294967295 } while((len < prec) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12cf2: 428c cmp r4, r1 12cf4: d213 bcs.n 12d1e <_ntoa_format+0x6e> 12cf6: 2c1f cmp r4, #31 12cf8: d904 bls.n 12d04 <_ntoa_format+0x54> 12cfa: e010 b.n 12d1e <_ntoa_format+0x6e> 12cfc: 428c cmp r4, r1 12cfe: d20b bcs.n 12d18 <_ntoa_format+0x68> 12d00: 2c1f cmp r4, #31 12d02: d809 bhi.n 12d18 <_ntoa_format+0x68> 12d04: eb09 0304 add.w r3, r9, r4 buf[len++] = '0'; 12d08: 2030 movs r0, #48 ; 0x30 12d0a: 3401 adds r4, #1 12d0c: f803 0b01 strb.w r0, [r3], #1 while((len < prec) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12d10: 42a1 cmp r1, r4 12d12: d901 bls.n 12d18 <_ntoa_format+0x68> 12d14: 2c20 cmp r4, #32 12d16: d1f8 bne.n 12d0a <_ntoa_format+0x5a> } while((flags & FLAGS_ZEROPAD) && (len < width) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12d18: f012 0f01 tst.w r2, #1 12d1c: d012 beq.n 12d44 <_ntoa_format+0x94> 12d1e: 45a2 cmp sl, r4 12d20: d910 bls.n 12d44 <_ntoa_format+0x94> 12d22: 2c1f cmp r4, #31 12d24: d809 bhi.n 12d3a <_ntoa_format+0x8a> 12d26: eb09 0304 add.w r3, r9, r4 buf[len++] = '0'; 12d2a: 2030 movs r0, #48 ; 0x30 12d2c: 3401 adds r4, #1 12d2e: f803 0b01 strb.w r0, [r3], #1 while((flags & FLAGS_ZEROPAD) && (len < width) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12d32: 4554 cmp r4, sl 12d34: d005 beq.n 12d42 <_ntoa_format+0x92> 12d36: 2c20 cmp r4, #32 12d38: d1f8 bne.n 12d2c <_ntoa_format+0x7c> } } // handle hash if(flags & FLAGS_HASH) { 12d3a: f012 0f10 tst.w r2, #16 12d3e: d104 bne.n 12d4a <_ntoa_format+0x9a> 12d40: e044 b.n 12dcc <_ntoa_format+0x11c> 12d42: 46a2 mov sl, r4 12d44: f012 0f10 tst.w r2, #16 12d48: d013 beq.n 12d72 <_ntoa_format+0xc2> if(!(flags & FLAGS_PRECISION) && len && ((len == prec) || (len == width))) { 12d4a: f412 6f80 tst.w r2, #1024 ; 0x400 12d4e: d104 bne.n 12d5a <_ntoa_format+0xaa> 12d50: b11c cbz r4, 12d5a <_ntoa_format+0xaa> 12d52: 42a1 cmp r1, r4 12d54: d01b beq.n 12d8e <_ntoa_format+0xde> 12d56: 4554 cmp r4, sl 12d58: d019 beq.n 12d8e <_ntoa_format+0xde> len--; if(len && (base == 16U)) { len--; } } if((base == 16U) && !(flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12d5a: 9b0f ldr r3, [sp, #60] ; 0x3c 12d5c: 2b10 cmp r3, #16 12d5e: d01e beq.n 12d9e <_ntoa_format+0xee> buf[len++] = 'x'; } else if((base == 16U) && (flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { buf[len++] = 'X'; } else if((base == 2U) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12d60: 9b0f ldr r3, [sp, #60] ; 0x3c 12d62: 2b02 cmp r3, #2 12d64: d027 beq.n 12db6 <_ntoa_format+0x106> buf[len++] = 'b'; } if(len < PRINTF_NTOA_BUFFER_SIZE) { 12d66: 2c1f cmp r4, #31 12d68: d830 bhi.n 12dcc <_ntoa_format+0x11c> buf[len++] = '0'; 12d6a: 2330 movs r3, #48 ; 0x30 12d6c: f809 3004 strb.w r3, [r9, r4] 12d70: 3401 adds r4, #1 } } if(len < PRINTF_NTOA_BUFFER_SIZE) { 12d72: 2c1f cmp r4, #31 12d74: d82a bhi.n 12dcc <_ntoa_format+0x11c> if(negative) { 12d76: bb2d cbnz r5, 12dc4 <_ntoa_format+0x114> buf[len++] = '-'; } else if(flags & FLAGS_PLUS) { 12d78: f012 0f04 tst.w r2, #4 12d7c: d13a bne.n 12df4 <_ntoa_format+0x144> buf[len++] = '+'; // ignore the space if the '+' exists } else if(flags & FLAGS_SPACE) { 12d7e: f012 0f08 tst.w r2, #8 12d82: d023 beq.n 12dcc <_ntoa_format+0x11c> buf[len++] = ' '; 12d84: 2320 movs r3, #32 12d86: f809 3004 strb.w r3, [r9, r4] 12d8a: 3401 adds r4, #1 12d8c: e01e b.n 12dcc <_ntoa_format+0x11c> if(len && (base == 16U)) { 12d8e: 1e63 subs r3, r4, #1 12d90: d00f beq.n 12db2 <_ntoa_format+0x102> 12d92: 990f ldr r1, [sp, #60] ; 0x3c 12d94: 2910 cmp r1, #16 12d96: d001 beq.n 12d9c <_ntoa_format+0xec> len--; 12d98: 461c mov r4, r3 12d9a: e7e1 b.n 12d60 <_ntoa_format+0xb0> len--; 12d9c: 3c02 subs r4, #2 if((base == 16U) && !(flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12d9e: f012 0f20 tst.w r2, #32 12da2: d15d bne.n 12e60 <_ntoa_format+0x1b0> 12da4: 2c1f cmp r4, #31 12da6: d8de bhi.n 12d66 <_ntoa_format+0xb6> buf[len++] = 'x'; 12da8: 2378 movs r3, #120 ; 0x78 12daa: f809 3004 strb.w r3, [r9, r4] 12dae: 3401 adds r4, #1 12db0: e7d9 b.n 12d66 <_ntoa_format+0xb6> len--; 12db2: 461c mov r4, r3 12db4: e7d1 b.n 12d5a <_ntoa_format+0xaa> else if((base == 2U) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12db6: 2c1f cmp r4, #31 12db8: d808 bhi.n 12dcc <_ntoa_format+0x11c> buf[len++] = 'b'; 12dba: 2362 movs r3, #98 ; 0x62 12dbc: f809 3004 strb.w r3, [r9, r4] 12dc0: 3401 adds r4, #1 12dc2: e7d0 b.n 12d66 <_ntoa_format+0xb6> buf[len++] = '-'; 12dc4: 232d movs r3, #45 ; 0x2d 12dc6: f809 3004 strb.w r3, [r9, r4] 12dca: 3401 adds r4, #1 if(!(flags & FLAGS_LEFT) && !(flags & FLAGS_ZEROPAD)) { 12dcc: f012 0f03 tst.w r2, #3 12dd0: d115 bne.n 12dfe <_ntoa_format+0x14e> for(i = len; i < width; i++) { 12dd2: 4554 cmp r4, sl 12dd4: bf28 it cs 12dd6: 465e movcs r6, fp 12dd8: d212 bcs.n 12e00 <_ntoa_format+0x150> 12dda: eb0b 050a add.w r5, fp, sl 12dde: 1b2d subs r5, r5, r4 12de0: 465a mov r2, fp out(' ', buffer, idx++, maxlen); 12de2: 1c56 adds r6, r2, #1 12de4: 4643 mov r3, r8 12de6: 9900 ldr r1, [sp, #0] 12de8: 2020 movs r0, #32 12dea: 47b8 blx r7 12dec: 4632 mov r2, r6 for(i = len; i < width; i++) { 12dee: 42ae cmp r6, r5 12df0: d1f7 bne.n 12de2 <_ntoa_format+0x132> 12df2: e005 b.n 12e00 <_ntoa_format+0x150> buf[len++] = '+'; // ignore the space if the '+' exists 12df4: 232b movs r3, #43 ; 0x2b 12df6: f809 3004 strb.w r3, [r9, r4] 12dfa: 3401 adds r4, #1 12dfc: e7e6 b.n 12dcc <_ntoa_format+0x11c> if(!(flags & FLAGS_LEFT) && !(flags & FLAGS_ZEROPAD)) { 12dfe: 465e mov r6, fp while(len) { 12e00: 4635 mov r5, r6 12e02: b15c cbz r4, 12e1c <_ntoa_format+0x16c> 12e04: 44a1 add r9, r4 12e06: 4434 add r4, r6 12e08: 4632 mov r2, r6 out(buf[--len], buffer, idx++, maxlen); 12e0a: 1c55 adds r5, r2, #1 12e0c: 4643 mov r3, r8 12e0e: 9900 ldr r1, [sp, #0] 12e10: f819 0d01 ldrb.w r0, [r9, #-1]! 12e14: 47b8 blx r7 12e16: 462a mov r2, r5 while(len) { 12e18: 42ac cmp r4, r5 12e1a: d1f6 bne.n 12e0a <_ntoa_format+0x15a> if(flags & FLAGS_LEFT) { 12e1c: 9b01 ldr r3, [sp, #4] 12e1e: b1a3 cbz r3, 12e4a <_ntoa_format+0x19a> while(idx - start_idx < width) { 12e20: eba5 030b sub.w r3, r5, fp 12e24: 4553 cmp r3, sl 12e26: d212 bcs.n 12e4e <_ntoa_format+0x19e> out(' ', buffer, idx++, maxlen); 12e28: 2620 movs r6, #32 12e2a: 462a mov r2, r5 12e2c: 9d00 ldr r5, [sp, #0] 12e2e: 1c54 adds r4, r2, #1 12e30: 4643 mov r3, r8 12e32: 4629 mov r1, r5 12e34: 4630 mov r0, r6 12e36: 47b8 blx r7 12e38: 4622 mov r2, r4 while(idx - start_idx < width) { 12e3a: eba4 030b sub.w r3, r4, fp 12e3e: 4553 cmp r3, sl 12e40: d3f5 bcc.n 12e2e <_ntoa_format+0x17e> } } return _out_rev(out, buffer, idx, maxlen, buf, len, width, flags); } 12e42: 4620 mov r0, r4 12e44: b003 add sp, #12 12e46: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(flags & FLAGS_LEFT) { 12e4a: 462c mov r4, r5 12e4c: e7f9 b.n 12e42 <_ntoa_format+0x192> while(idx - start_idx < width) { 12e4e: 462c mov r4, r5 return _out_rev(out, buffer, idx, maxlen, buf, len, width, flags); 12e50: e7f7 b.n 12e42 <_ntoa_format+0x192> while((len < prec) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12e52: 428c cmp r4, r1 12e54: f4bf af76 bcs.w 12d44 <_ntoa_format+0x94> 12e58: 2c1f cmp r4, #31 12e5a: f67f af53 bls.w 12d04 <_ntoa_format+0x54> 12e5e: e771 b.n 12d44 <_ntoa_format+0x94> else if((base == 16U) && (flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12e60: 2c1f cmp r4, #31 12e62: d8b3 bhi.n 12dcc <_ntoa_format+0x11c> buf[len++] = 'X'; 12e64: 2358 movs r3, #88 ; 0x58 12e66: f809 3004 strb.w r3, [r9, r4] 12e6a: 3401 adds r4, #1 12e6c: e77b b.n 12d66 <_ntoa_format+0xb6> ... 00012e70 <_ntoa_long>: // internal itoa for 'long' type static size_t _ntoa_long(out_fct_type out, char * buffer, size_t idx, size_t maxlen, unsigned long value, bool negative, unsigned long base, unsigned int prec, unsigned int width, unsigned int flags) { 12e70: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 12e74: b090 sub sp, #64 ; 0x40 12e76: 9d16 ldr r5, [sp, #88] ; 0x58 12e78: 9e18 ldr r6, [sp, #96] ; 0x60 12e7a: f8dd 806c ldr.w r8, [sp, #108] ; 0x6c char buf[PRINTF_NTOA_BUFFER_SIZE]; size_t len = 0U; // no hash for 0 values if(!value) { 12e7e: b92d cbnz r5, 12e8c <_ntoa_long+0x1c> flags &= ~FLAGS_HASH; 12e80: f028 0410 bic.w r4, r8, #16 } // write if precision != 0 and value is != 0 if(!(flags & FLAGS_PRECISION) || value) { 12e84: f418 6f80 tst.w r8, #1024 ; 0x400 12e88: d12f bne.n 12eea <_ntoa_long+0x7a> flags &= ~FLAGS_HASH; 12e8a: 46a0 mov r8, r4 12e8c: f018 0f20 tst.w r8, #32 12e90: f10d 0e1f add.w lr, sp, #31 do { const char digit = (char)(value % base); buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; 12e94: f04f 0700 mov.w r7, #0 12e98: bf14 ite ne 12e9a: f04f 0c37 movne.w ip, #55 ; 0x37 12e9e: f04f 0c57 moveq.w ip, #87 ; 0x57 const char digit = (char)(value % base); 12ea2: fbb5 f4f6 udiv r4, r5, r6 12ea6: fb06 5414 mls r4, r6, r4, r5 12eaa: b2e4 uxtb r4, r4 buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; 12eac: 3701 adds r7, #1 12eae: 2c09 cmp r4, #9 12eb0: bf94 ite ls 12eb2: 3430 addls r4, #48 ; 0x30 12eb4: 4464 addhi r4, ip 12eb6: b2e4 uxtb r4, r4 12eb8: f80e 4f01 strb.w r4, [lr, #1]! value /= base; 12ebc: fbb5 f5f6 udiv r5, r5, r6 } while(value && (len < PRINTF_NTOA_BUFFER_SIZE)); 12ec0: b10d cbz r5, 12ec6 <_ntoa_long+0x56> 12ec2: 2f20 cmp r7, #32 12ec4: d1ed bne.n 12ea2 <_ntoa_long+0x32> } return _ntoa_format(out, buffer, idx, maxlen, buf, len, negative, (unsigned int)base, prec, width, flags); 12ec6: f8cd 8018 str.w r8, [sp, #24] 12eca: 9c1a ldr r4, [sp, #104] ; 0x68 12ecc: 9405 str r4, [sp, #20] 12ece: 9c19 ldr r4, [sp, #100] ; 0x64 12ed0: 9404 str r4, [sp, #16] 12ed2: 9603 str r6, [sp, #12] 12ed4: f89d 405c ldrb.w r4, [sp, #92] ; 0x5c 12ed8: 9402 str r4, [sp, #8] 12eda: 9701 str r7, [sp, #4] 12edc: ac08 add r4, sp, #32 12ede: 9400 str r4, [sp, #0] 12ee0: 4c03 ldr r4, [pc, #12] ; (12ef0 <_ntoa_long+0x80>) 12ee2: 47a0 blx r4 } 12ee4: b010 add sp, #64 ; 0x40 12ee6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} flags &= ~FLAGS_HASH; 12eea: 46a0 mov r8, r4 size_t len = 0U; 12eec: 2700 movs r7, #0 12eee: e7ea b.n 12ec6 <_ntoa_long+0x56> 12ef0: 00012cb1 .word 0x00012cb1 00012ef4 <_ntoa_long_long>: // internal itoa for 'long long' type #if defined(PRINTF_SUPPORT_LONG_LONG) static size_t _ntoa_long_long(out_fct_type out, char * buffer, size_t idx, size_t maxlen, unsigned long long value, bool negative, unsigned long long base, unsigned int prec, unsigned int width, unsigned int flags) { 12ef4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 12ef8: b095 sub sp, #84 ; 0x54 12efa: 9008 str r0, [sp, #32] 12efc: 9109 str r1, [sp, #36] ; 0x24 12efe: 920a str r2, [sp, #40] ; 0x28 12f00: 930b str r3, [sp, #44] ; 0x2c 12f02: e9dd 451e ldrd r4, r5, [sp, #120] ; 0x78 12f06: f8dd 9088 ldr.w r9, [sp, #136] ; 0x88 12f0a: f8dd 808c ldr.w r8, [sp, #140] ; 0x8c char buf[PRINTF_NTOA_BUFFER_SIZE]; size_t len = 0U; // no hash for 0 values if(!value) { 12f0e: ea54 0305 orrs.w r3, r4, r5 12f12: d107 bne.n 12f24 <_ntoa_long_long+0x30> flags &= ~FLAGS_HASH; 12f14: 9b26 ldr r3, [sp, #152] ; 0x98 12f16: f023 0310 bic.w r3, r3, #16 } // write if precision != 0 and value is != 0 if(!(flags & FLAGS_PRECISION) || value) { 12f1a: 9a26 ldr r2, [sp, #152] ; 0x98 12f1c: f412 6f80 tst.w r2, #1024 ; 0x400 12f20: d13e bne.n 12fa0 <_ntoa_long_long+0xac> flags &= ~FLAGS_HASH; 12f22: 9326 str r3, [sp, #152] ; 0x98 12f24: 9b26 ldr r3, [sp, #152] ; 0x98 12f26: f013 0f20 tst.w r3, #32 12f2a: f10d 0a2f add.w sl, sp, #47 ; 0x2f do { const char digit = (char)(value % base); buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; 12f2e: f04f 0600 mov.w r6, #0 const char digit = (char)(value % base); 12f32: 4f1d ldr r7, [pc, #116] ; (12fa8 <_ntoa_long_long+0xb4>) buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; 12f34: bf14 ite ne 12f36: f04f 0b37 movne.w fp, #55 ; 0x37 12f3a: f04f 0b57 moveq.w fp, #87 ; 0x57 const char digit = (char)(value % base); 12f3e: 464a mov r2, r9 12f40: 4643 mov r3, r8 12f42: 4620 mov r0, r4 12f44: 4629 mov r1, r5 12f46: 47b8 blx r7 12f48: b2d2 uxtb r2, r2 buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; 12f4a: 3601 adds r6, #1 12f4c: 2a09 cmp r2, #9 12f4e: bf94 ite ls 12f50: 3230 addls r2, #48 ; 0x30 12f52: 445a addhi r2, fp 12f54: b2d2 uxtb r2, r2 12f56: f80a 2f01 strb.w r2, [sl, #1]! value /= base; 12f5a: 464a mov r2, r9 12f5c: 4643 mov r3, r8 12f5e: 4620 mov r0, r4 12f60: 4629 mov r1, r5 12f62: 47b8 blx r7 12f64: 4604 mov r4, r0 12f66: 460d mov r5, r1 } while(value && (len < PRINTF_NTOA_BUFFER_SIZE)); 12f68: ea54 0305 orrs.w r3, r4, r5 12f6c: d001 beq.n 12f72 <_ntoa_long_long+0x7e> 12f6e: 2e20 cmp r6, #32 12f70: d1e5 bne.n 12f3e <_ntoa_long_long+0x4a> } return _ntoa_format(out, buffer, idx, maxlen, buf, len, negative, (unsigned int)base, prec, width, flags); 12f72: 9b26 ldr r3, [sp, #152] ; 0x98 12f74: 9306 str r3, [sp, #24] 12f76: 9b25 ldr r3, [sp, #148] ; 0x94 12f78: 9305 str r3, [sp, #20] 12f7a: 9b24 ldr r3, [sp, #144] ; 0x90 12f7c: 9304 str r3, [sp, #16] 12f7e: f8cd 900c str.w r9, [sp, #12] 12f82: f89d 3080 ldrb.w r3, [sp, #128] ; 0x80 12f86: 9302 str r3, [sp, #8] 12f88: 9601 str r6, [sp, #4] 12f8a: ab0c add r3, sp, #48 ; 0x30 12f8c: 9300 str r3, [sp, #0] 12f8e: 9b0b ldr r3, [sp, #44] ; 0x2c 12f90: 9a0a ldr r2, [sp, #40] ; 0x28 12f92: 9909 ldr r1, [sp, #36] ; 0x24 12f94: 9808 ldr r0, [sp, #32] 12f96: 4c05 ldr r4, [pc, #20] ; (12fac <_ntoa_long_long+0xb8>) 12f98: 47a0 blx r4 } 12f9a: b015 add sp, #84 ; 0x54 12f9c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} flags &= ~FLAGS_HASH; 12fa0: 9326 str r3, [sp, #152] ; 0x98 size_t len = 0U; 12fa2: 2600 movs r6, #0 12fa4: e7e5 b.n 12f72 <_ntoa_long_long+0x7e> 12fa6: bf00 nop 12fa8: 0001b185 .word 0x0001b185 12fac: 00012cb1 .word 0x00012cb1 00012fb0 <_vsnprintf>: #endif // PRINTF_SUPPORT_FLOAT // internal vsnprintf static int _vsnprintf(out_fct_type out, char * buffer, const size_t maxlen, const char * format, va_list va) { 12fb0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 12fb4: b091 sub sp, #68 ; 0x44 12fb6: 920a str r2, [sp, #40] ; 0x28 12fb8: 461c mov r4, r3 12fba: 9e1a ldr r6, [sp, #104] ; 0x68 unsigned int flags, width, precision, n; size_t idx = 0U; if(!buffer) { 12fbc: 910b str r1, [sp, #44] ; 0x2c // use null output function out = _out_null; 12fbe: 4b93 ldr r3, [pc, #588] ; (1320c <_vsnprintf+0x25c>) 12fc0: 2900 cmp r1, #0 12fc2: bf14 ite ne 12fc4: 4681 movne r9, r0 12fc6: 4699 moveq r9, r3 format++; break; } case '%' : out('%', buffer, idx++, maxlen); 12fc8: f04f 0b00 mov.w fp, #0 while(*format) { 12fcc: 7820 ldrb r0, [r4, #0] 12fce: 2800 cmp r0, #0 12fd0: f000 826a beq.w 134a8 <_vsnprintf+0x4f8> if(*format != '%') { 12fd4: 2825 cmp r0, #37 ; 0x25 12fd6: d008 beq.n 12fea <_vsnprintf+0x3a> out(*format, buffer, idx++, maxlen); 12fd8: f10b 0501 add.w r5, fp, #1 12fdc: 9b0a ldr r3, [sp, #40] ; 0x28 12fde: 465a mov r2, fp 12fe0: 990b ldr r1, [sp, #44] ; 0x2c 12fe2: 47c8 blx r9 format++; 12fe4: 3401 adds r4, #1 out(*format, buffer, idx++, maxlen); 12fe6: 46ab mov fp, r5 continue; 12fe8: e7f0 b.n 12fcc <_vsnprintf+0x1c> format++; 12fea: 1c62 adds r2, r4, #1 flags = 0U; 12fec: 2100 movs r1, #0 12fee: e001 b.n 12ff4 <_vsnprintf+0x44> flags |= FLAGS_ZEROPAD; 12ff0: f041 0101 orr.w r1, r1, #1 12ff4: 4614 mov r4, r2 12ff6: 3201 adds r2, #1 switch(*format) { 12ff8: 7823 ldrb r3, [r4, #0] 12ffa: 3b20 subs r3, #32 12ffc: 2b10 cmp r3, #16 12ffe: d831 bhi.n 13064 <_vsnprintf+0xb4> 13000: a001 add r0, pc, #4 ; (adr r0, 13008 <_vsnprintf+0x58>) 13002: f850 f023 ldr.w pc, [r0, r3, lsl #2] 13006: bf00 nop 13008: 00013059 .word 0x00013059 1300c: 00013065 .word 0x00013065 13010: 00013065 .word 0x00013065 13014: 0001305f .word 0x0001305f 13018: 00013065 .word 0x00013065 1301c: 00013065 .word 0x00013065 13020: 00013065 .word 0x00013065 13024: 00013065 .word 0x00013065 13028: 00013065 .word 0x00013065 1302c: 00013065 .word 0x00013065 13030: 00013065 .word 0x00013065 13034: 00013053 .word 0x00013053 13038: 00013065 .word 0x00013065 1303c: 0001304d .word 0x0001304d 13040: 00013065 .word 0x00013065 13044: 00013065 .word 0x00013065 13048: 00012ff1 .word 0x00012ff1 flags |= FLAGS_LEFT; 1304c: f041 0102 orr.w r1, r1, #2 break; 13050: e7d0 b.n 12ff4 <_vsnprintf+0x44> flags |= FLAGS_PLUS; 13052: f041 0104 orr.w r1, r1, #4 break; 13056: e7cd b.n 12ff4 <_vsnprintf+0x44> flags |= FLAGS_SPACE; 13058: f041 0108 orr.w r1, r1, #8 break; 1305c: e7ca b.n 12ff4 <_vsnprintf+0x44> flags |= FLAGS_HASH; 1305e: f041 0110 orr.w r1, r1, #16 break; 13062: e7c7 b.n 12ff4 <_vsnprintf+0x44> if(_is_digit(*format)) { 13064: 7823 ldrb r3, [r4, #0] return (ch >= '0') && (ch <= '9'); 13066: f1a3 0230 sub.w r2, r3, #48 ; 0x30 if(_is_digit(*format)) { 1306a: b2d2 uxtb r2, r2 1306c: 2a09 cmp r2, #9 1306e: d916 bls.n 1309e <_vsnprintf+0xee> else if(*format == '*') { 13070: 2b2a cmp r3, #42 ; 0x2a 13072: d022 beq.n 130ba <_vsnprintf+0x10a> width = 0U; 13074: 2500 movs r5, #0 if(*format == '.') { 13076: 7823 ldrb r3, [r4, #0] 13078: 2b2e cmp r3, #46 ; 0x2e 1307a: d028 beq.n 130ce <_vsnprintf+0x11e> precision = 0U; 1307c: 2700 movs r7, #0 switch(*format) { 1307e: 7823 ldrb r3, [r4, #0] 13080: 3b68 subs r3, #104 ; 0x68 13082: 2b12 cmp r3, #18 13084: d84f bhi.n 13126 <_vsnprintf+0x176> 13086: e8df f003 tbb [pc, r3] 1308a: 4eaa .short 0x4eaa 1308c: 4e454eb8 .word 0x4e454eb8 13090: 4e4e4e4e .word 0x4e4e4e4e 13094: 4eb44e4e .word 0x4eb44e4e 13098: 4e4e4e4e .word 0x4e4e4e4e 1309c: bc .byte 0xbc 1309d: 00 .byte 0x00 1309e: 2500 movs r5, #0 i = i * 10U + (unsigned int)(*((*str)++) - '0'); 130a0: eb05 0585 add.w r5, r5, r5, lsl #2 130a4: eb03 0545 add.w r5, r3, r5, lsl #1 130a8: 3d30 subs r5, #48 ; 0x30 while(_is_digit(**str)) { 130aa: f814 3f01 ldrb.w r3, [r4, #1]! return (ch >= '0') && (ch <= '9'); 130ae: f1a3 0230 sub.w r2, r3, #48 ; 0x30 while(_is_digit(**str)) { 130b2: b2d2 uxtb r2, r2 130b4: 2a09 cmp r2, #9 130b6: d9f3 bls.n 130a0 <_vsnprintf+0xf0> 130b8: e7dd b.n 13076 <_vsnprintf+0xc6> const int w = va_arg(va, int); 130ba: 1d33 adds r3, r6, #4 130bc: 6835 ldr r5, [r6, #0] if(w < 0) { 130be: 2d00 cmp r5, #0 flags |= FLAGS_LEFT; // reverse padding 130c0: bfbc itt lt 130c2: f041 0102 orrlt.w r1, r1, #2 width = (unsigned int) - w; 130c6: 426d neglt r5, r5 format++; 130c8: 3401 adds r4, #1 const int w = va_arg(va, int); 130ca: 461e mov r6, r3 130cc: e7d3 b.n 13076 <_vsnprintf+0xc6> flags |= FLAGS_PRECISION; 130ce: f441 6180 orr.w r1, r1, #1024 ; 0x400 format++; 130d2: 1c60 adds r0, r4, #1 if(_is_digit(*format)) { 130d4: 7863 ldrb r3, [r4, #1] return (ch >= '0') && (ch <= '9'); 130d6: f1a3 0230 sub.w r2, r3, #48 ; 0x30 if(_is_digit(*format)) { 130da: b2d2 uxtb r2, r2 130dc: 2a09 cmp r2, #9 130de: d904 bls.n 130ea <_vsnprintf+0x13a> else if(*format == '*') { 130e0: 2b2a cmp r3, #42 ; 0x2a 130e2: d011 beq.n 13108 <_vsnprintf+0x158> format++; 130e4: 4604 mov r4, r0 precision = 0U; 130e6: 2700 movs r7, #0 130e8: e7c9 b.n 1307e <_vsnprintf+0xce> 130ea: 2700 movs r7, #0 i = i * 10U + (unsigned int)(*((*str)++) - '0'); 130ec: eb07 0787 add.w r7, r7, r7, lsl #2 130f0: eb03 0747 add.w r7, r3, r7, lsl #1 130f4: 3f30 subs r7, #48 ; 0x30 while(_is_digit(**str)) { 130f6: f810 3f01 ldrb.w r3, [r0, #1]! return (ch >= '0') && (ch <= '9'); 130fa: f1a3 0230 sub.w r2, r3, #48 ; 0x30 while(_is_digit(**str)) { 130fe: b2d2 uxtb r2, r2 13100: 2a09 cmp r2, #9 13102: d9f3 bls.n 130ec <_vsnprintf+0x13c> i = i * 10U + (unsigned int)(*((*str)++) - '0'); 13104: 4604 mov r4, r0 13106: e7ba b.n 1307e <_vsnprintf+0xce> precision = prec > 0 ? (unsigned int)prec : 0U; 13108: 6837 ldr r7, [r6, #0] 1310a: ea27 77e7 bic.w r7, r7, r7, asr #31 format++; 1310e: 3402 adds r4, #2 const int prec = (int)va_arg(va, int); 13110: 3604 adds r6, #4 13112: e7b4 b.n 1307e <_vsnprintf+0xce> if(*format == 'l') { 13114: 7863 ldrb r3, [r4, #1] 13116: 2b6c cmp r3, #108 ; 0x6c flags |= FLAGS_LONG; 13118: bf19 ittee ne 1311a: f441 7180 orrne.w r1, r1, #256 ; 0x100 format++; 1311e: 3401 addne r4, #1 flags |= FLAGS_LONG_LONG; 13120: f441 7140 orreq.w r1, r1, #768 ; 0x300 format++; 13124: 3402 addeq r4, #2 switch(*format) { 13126: 7820 ldrb r0, [r4, #0] 13128: f1a0 0325 sub.w r3, r0, #37 ; 0x25 1312c: 2b53 cmp r3, #83 ; 0x53 1312e: f200 81b2 bhi.w 13496 <_vsnprintf+0x4e6> 13132: e8df f013 tbh [pc, r3, lsl #1] 13136: 01a6 .short 0x01a6 13138: 01b001b0 .word 0x01b001b0 1313c: 01b001b0 .word 0x01b001b0 13140: 01b001b0 .word 0x01b001b0 13144: 01b001b0 .word 0x01b001b0 13148: 01b001b0 .word 0x01b001b0 1314c: 01b001b0 .word 0x01b001b0 13150: 01b001b0 .word 0x01b001b0 13154: 01b001b0 .word 0x01b001b0 13158: 01b001b0 .word 0x01b001b0 1315c: 01b001b0 .word 0x01b001b0 13160: 01b001b0 .word 0x01b001b0 13164: 01b001b0 .word 0x01b001b0 13168: 01b001b0 .word 0x01b001b0 1316c: 01b001b0 .word 0x01b001b0 13170: 01b001b0 .word 0x01b001b0 13174: 01b001b0 .word 0x01b001b0 13178: 01b001b0 .word 0x01b001b0 1317c: 01b001b0 .word 0x01b001b0 13180: 01b001b0 .word 0x01b001b0 13184: 01b001b0 .word 0x01b001b0 13188: 01b001b0 .word 0x01b001b0 1318c: 01b001b0 .word 0x01b001b0 13190: 01b001b0 .word 0x01b001b0 13194: 01b001b0 .word 0x01b001b0 13198: 01b001b0 .word 0x01b001b0 1319c: 01b0006d .word 0x01b0006d 131a0: 01b001b0 .word 0x01b001b0 131a4: 01b001b0 .word 0x01b001b0 131a8: 01b001b0 .word 0x01b001b0 131ac: 01b001b0 .word 0x01b001b0 131b0: 0114006d .word 0x0114006d 131b4: 01b0006d .word 0x01b0006d 131b8: 01b001b0 .word 0x01b001b0 131bc: 006d01b0 .word 0x006d01b0 131c0: 01b001b0 .word 0x01b001b0 131c4: 01b001b0 .word 0x01b001b0 131c8: 006d01b0 .word 0x006d01b0 131cc: 01b0018f .word 0x01b0018f 131d0: 013701b0 .word 0x013701b0 131d4: 006d01b0 .word 0x006d01b0 131d8: 01b001b0 .word 0x01b001b0 131dc: 006d .short 0x006d if(*format == 'h') { 131de: 7863 ldrb r3, [r4, #1] 131e0: 2b68 cmp r3, #104 ; 0x68 flags |= FLAGS_SHORT; 131e2: bf19 ittee ne 131e4: f041 0180 orrne.w r1, r1, #128 ; 0x80 format++; 131e8: 3401 addne r4, #1 flags |= FLAGS_CHAR; 131ea: f041 01c0 orreq.w r1, r1, #192 ; 0xc0 format++; 131ee: 3402 addeq r4, #2 131f0: e799 b.n 13126 <_vsnprintf+0x176> flags |= (sizeof(ptrdiff_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG); 131f2: f441 7180 orr.w r1, r1, #256 ; 0x100 format++; 131f6: 3401 adds r4, #1 break; 131f8: e795 b.n 13126 <_vsnprintf+0x176> flags |= (sizeof(intmax_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG); 131fa: f441 7100 orr.w r1, r1, #512 ; 0x200 format++; 131fe: 3401 adds r4, #1 break; 13200: e791 b.n 13126 <_vsnprintf+0x176> flags |= (sizeof(size_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG); 13202: f441 7180 orr.w r1, r1, #256 ; 0x100 format++; 13206: 3401 adds r4, #1 break; 13208: e78d b.n 13126 <_vsnprintf+0x176> 1320a: bf00 nop 1320c: 00012caf .word 0x00012caf if(*format == 'x' || *format == 'X') { 13210: 2878 cmp r0, #120 ; 0x78 13212: f000 81d5 beq.w 135c0 <_vsnprintf+0x610> 13216: 2858 cmp r0, #88 ; 0x58 13218: f000 8154 beq.w 134c4 <_vsnprintf+0x514> else if(*format == 'o') { 1321c: 286f cmp r0, #111 ; 0x6f 1321e: f000 81d1 beq.w 135c4 <_vsnprintf+0x614> else if(*format == 'b') { 13222: 2862 cmp r0, #98 ; 0x62 13224: f000 81d0 beq.w 135c8 <_vsnprintf+0x618> flags &= ~FLAGS_HASH; // no hash for dec format 13228: f021 0310 bic.w r3, r1, #16 if((*format != 'i') && (*format != 'd')) { 1322c: 2869 cmp r0, #105 ; 0x69 1322e: d126 bne.n 1327e <_vsnprintf+0x2ce> if(flags & FLAGS_PRECISION) { 13230: f411 6f80 tst.w r1, #1024 ; 0x400 13234: f040 81c0 bne.w 135b8 <_vsnprintf+0x608> base = 10U; 13238: 220a movs r2, #10 if(flags & FLAGS_LONG_LONG) { 1323a: f413 7f00 tst.w r3, #512 ; 0x200 1323e: d124 bne.n 1328a <_vsnprintf+0x2da> else if(flags & FLAGS_LONG) { 13240: f413 7f80 tst.w r3, #256 ; 0x100 13244: d144 bne.n 132d0 <_vsnprintf+0x320> const int value = (flags & FLAGS_CHAR) ? (char)va_arg(va, int) : (flags & FLAGS_SHORT) ? (short int)va_arg(va, 13246: f013 0f40 tst.w r3, #64 ; 0x40 1324a: d157 bne.n 132fc <_vsnprintf+0x34c> int) : va_arg(va, int); 1324c: f013 0f80 tst.w r3, #128 ; 0x80 13250: bf14 ite ne 13252: f9b6 1000 ldrshne.w r1, [r6] 13256: 6831 ldreq r1, [r6, #0] 13258: 3604 adds r6, #4 idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned int)(value > 0 ? value : 0 - value), value < 0, base, precision, 1325a: 9305 str r3, [sp, #20] 1325c: 9504 str r5, [sp, #16] 1325e: 9703 str r7, [sp, #12] 13260: 9202 str r2, [sp, #8] 13262: 0fcb lsrs r3, r1, #31 13264: 9301 str r3, [sp, #4] 13266: 2900 cmp r1, #0 13268: bfb8 it lt 1326a: 4249 neglt r1, r1 1326c: 9100 str r1, [sp, #0] 1326e: 9b0a ldr r3, [sp, #40] ; 0x28 13270: 465a mov r2, fp 13272: 990b ldr r1, [sp, #44] ; 0x2c 13274: 4648 mov r0, r9 13276: 4dac ldr r5, [pc, #688] ; (13528 <_vsnprintf+0x578>) 13278: 47a8 blx r5 1327a: 4683 mov fp, r0 1327c: e152 b.n 13524 <_vsnprintf+0x574> if((*format != 'i') && (*format != 'd')) { 1327e: 2864 cmp r0, #100 ; 0x64 13280: f000 8156 beq.w 13530 <_vsnprintf+0x580> flags &= ~FLAGS_HASH; // no hash for dec format 13284: 4619 mov r1, r3 base = 10U; 13286: 220a movs r2, #10 13288: e11f b.n 134ca <_vsnprintf+0x51a> const long long value = va_arg(va, long long); 1328a: 1df1 adds r1, r6, #7 1328c: f021 0107 bic.w r1, r1, #7 13290: f101 0608 add.w r6, r1, #8 13294: 6808 ldr r0, [r1, #0] 13296: 6849 ldr r1, [r1, #4] idx = _ntoa_long_long(out, buffer, idx, maxlen, (unsigned long long)(value > 0 ? value : 0 - value), value < 0, base, 13298: 9308 str r3, [sp, #32] 1329a: 9507 str r5, [sp, #28] 1329c: 9706 str r7, [sp, #24] 1329e: 9204 str r2, [sp, #16] 132a0: 2300 movs r3, #0 132a2: 9305 str r3, [sp, #20] 132a4: 0fcb lsrs r3, r1, #31 132a6: 9302 str r3, [sp, #8] 132a8: 4602 mov r2, r0 132aa: 460b mov r3, r1 132ac: 2800 cmp r0, #0 132ae: f173 0100 sbcs.w r1, r3, #0 132b2: db09 blt.n 132c8 <_vsnprintf+0x318> 132b4: e9cd 2300 strd r2, r3, [sp] 132b8: 9b0a ldr r3, [sp, #40] ; 0x28 132ba: 465a mov r2, fp 132bc: 990b ldr r1, [sp, #44] ; 0x2c 132be: 4648 mov r0, r9 132c0: 4d9a ldr r5, [pc, #616] ; (1352c <_vsnprintf+0x57c>) 132c2: 47a8 blx r5 132c4: 4683 mov fp, r0 132c6: e12d b.n 13524 <_vsnprintf+0x574> 132c8: 4242 negs r2, r0 132ca: eb63 0343 sbc.w r3, r3, r3, lsl #1 132ce: e7f1 b.n 132b4 <_vsnprintf+0x304> const long value = va_arg(va, long); 132d0: f106 0804 add.w r8, r6, #4 132d4: 6831 ldr r1, [r6, #0] idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)(value > 0 ? value : 0 - value), value < 0, base, precision, 132d6: 9305 str r3, [sp, #20] 132d8: 9504 str r5, [sp, #16] 132da: 9703 str r7, [sp, #12] 132dc: 9202 str r2, [sp, #8] 132de: 0fcb lsrs r3, r1, #31 132e0: 9301 str r3, [sp, #4] 132e2: 2900 cmp r1, #0 132e4: bfb8 it lt 132e6: 4249 neglt r1, r1 132e8: 9100 str r1, [sp, #0] 132ea: 9b0a ldr r3, [sp, #40] ; 0x28 132ec: 465a mov r2, fp 132ee: 990b ldr r1, [sp, #44] ; 0x2c 132f0: 4648 mov r0, r9 132f2: 4d8d ldr r5, [pc, #564] ; (13528 <_vsnprintf+0x578>) 132f4: 47a8 blx r5 132f6: 4683 mov fp, r0 const long value = va_arg(va, long); 132f8: 4646 mov r6, r8 132fa: e113 b.n 13524 <_vsnprintf+0x574> 132fc: 7831 ldrb r1, [r6, #0] const int value = (flags & FLAGS_CHAR) ? (char)va_arg(va, int) : (flags & FLAGS_SHORT) ? (short int)va_arg(va, 132fe: 3604 adds r6, #4 13300: e7ab b.n 1325a <_vsnprintf+0x2aa> idx = _ntoa_long_long(out, buffer, idx, maxlen, va_arg(va, unsigned long long), false, base, precision, width, flags); 13302: 1df1 adds r1, r6, #7 13304: f021 0107 bic.w r1, r1, #7 13308: f101 0608 add.w r6, r1, #8 1330c: 9308 str r3, [sp, #32] 1330e: 9507 str r5, [sp, #28] 13310: 9706 str r7, [sp, #24] 13312: 2300 movs r3, #0 13314: 9204 str r2, [sp, #16] 13316: 9305 str r3, [sp, #20] 13318: 9302 str r3, [sp, #8] 1331a: e9d1 2300 ldrd r2, r3, [r1] 1331e: e9cd 2300 strd r2, r3, [sp] 13322: 9b0a ldr r3, [sp, #40] ; 0x28 13324: 465a mov r2, fp 13326: 990b ldr r1, [sp, #44] ; 0x2c 13328: 4648 mov r0, r9 1332a: 4d80 ldr r5, [pc, #512] ; (1352c <_vsnprintf+0x57c>) 1332c: 47a8 blx r5 1332e: 4683 mov fp, r0 13330: e0f8 b.n 13524 <_vsnprintf+0x574> idx = _ntoa_long(out, buffer, idx, maxlen, va_arg(va, unsigned long), false, base, precision, width, flags); 13332: f106 0804 add.w r8, r6, #4 13336: 9305 str r3, [sp, #20] 13338: 9504 str r5, [sp, #16] 1333a: 9703 str r7, [sp, #12] 1333c: 9202 str r2, [sp, #8] 1333e: 2300 movs r3, #0 13340: 9301 str r3, [sp, #4] 13342: 6833 ldr r3, [r6, #0] 13344: 9300 str r3, [sp, #0] 13346: 9b0a ldr r3, [sp, #40] ; 0x28 13348: 465a mov r2, fp 1334a: 990b ldr r1, [sp, #44] ; 0x2c 1334c: 4648 mov r0, r9 1334e: 4d76 ldr r5, [pc, #472] ; (13528 <_vsnprintf+0x578>) 13350: 47a8 blx r5 13352: 4683 mov fp, r0 13354: 4646 mov r6, r8 13356: e0e5 b.n 13524 <_vsnprintf+0x574> 13358: 7831 ldrb r1, [r6, #0] const unsigned int value = (flags & FLAGS_CHAR) ? (unsigned char)va_arg(va, 1335a: 3604 adds r6, #4 1335c: e0d4 b.n 13508 <_vsnprintf+0x558> if(!(flags & FLAGS_LEFT)) { 1335e: f011 0f02 tst.w r1, #2 13362: f040 80ea bne.w 1353a <_vsnprintf+0x58a> while(l++ < width) { 13366: 2d01 cmp r5, #1 13368: f240 8103 bls.w 13572 <_vsnprintf+0x5c2> 1336c: f10b 37ff add.w r7, fp, #4294967295 13370: 442f add r7, r5 out(' ', buffer, idx++, maxlen); 13372: f04f 0820 mov.w r8, #32 13376: 465a mov r2, fp 13378: 1c55 adds r5, r2, #1 1337a: 9b0a ldr r3, [sp, #40] ; 0x28 1337c: 990b ldr r1, [sp, #44] ; 0x2c 1337e: 4640 mov r0, r8 13380: 47c8 blx r9 13382: 462a mov r2, r5 while(l++ < width) { 13384: 42bd cmp r5, r7 13386: d1f7 bne.n 13378 <_vsnprintf+0x3c8> out((char)va_arg(va, int), buffer, idx++, maxlen); 13388: 1d37 adds r7, r6, #4 1338a: f105 0b01 add.w fp, r5, #1 1338e: 9b0a ldr r3, [sp, #40] ; 0x28 13390: 462a mov r2, r5 13392: 990b ldr r1, [sp, #44] ; 0x2c 13394: 7830 ldrb r0, [r6, #0] 13396: 47c8 blx r9 13398: 463e mov r6, r7 format++; 1339a: 3401 adds r4, #1 break; 1339c: e616 b.n 12fcc <_vsnprintf+0x1c> out((char)va_arg(va, int), buffer, idx++, maxlen); 1339e: 9e0c ldr r6, [sp, #48] ; 0x30 133a0: 46bb mov fp, r7 133a2: e7fa b.n 1339a <_vsnprintf+0x3ea> const char * p = va_arg(va, char *); 133a4: 1d33 adds r3, r6, #4 133a6: 930e str r3, [sp, #56] ; 0x38 133a8: 6833 ldr r3, [r6, #0] 133aa: 461a mov r2, r3 133ac: 930c str r3, [sp, #48] ; 0x30 unsigned int l = _strnlen_s(p, precision ? precision : (size_t) -1); 133ae: 2f00 cmp r7, #0 133b0: bf14 ite ne 133b2: 463b movne r3, r7 133b4: f04f 33ff moveq.w r3, #4294967295 for(s = str; *s && maxsize--; ++s); 133b8: 7810 ldrb r0, [r2, #0] 133ba: 2800 cmp r0, #0 133bc: f000 80db beq.w 13576 <_vsnprintf+0x5c6> 133c0: f812 6f01 ldrb.w r6, [r2, #1]! 133c4: b10e cbz r6, 133ca <_vsnprintf+0x41a> 133c6: 3b01 subs r3, #1 133c8: d1fa bne.n 133c0 <_vsnprintf+0x410> return (unsigned int)(s - str); 133ca: 9b0c ldr r3, [sp, #48] ; 0x30 133cc: 1ad3 subs r3, r2, r3 133ce: 930d str r3, [sp, #52] ; 0x34 if(flags & FLAGS_PRECISION) { 133d0: f411 6a80 ands.w sl, r1, #1024 ; 0x400 133d4: d003 beq.n 133de <_vsnprintf+0x42e> l = (l < precision ? l : precision); 133d6: 42bb cmp r3, r7 133d8: bf28 it cs 133da: 463b movcs r3, r7 133dc: 930d str r3, [sp, #52] ; 0x34 if(!(flags & FLAGS_LEFT)) { 133de: f011 0302 ands.w r3, r1, #2 133e2: 930f str r3, [sp, #60] ; 0x3c 133e4: f040 80ce bne.w 13584 <_vsnprintf+0x5d4> while(l++ < width) { 133e8: 990d ldr r1, [sp, #52] ; 0x34 133ea: 460b mov r3, r1 133ec: 3301 adds r3, #1 133ee: 428d cmp r5, r1 133f0: f240 80c3 bls.w 1357a <_vsnprintf+0x5ca> 133f4: eb05 080b add.w r8, r5, fp 133f8: eba8 0801 sub.w r8, r8, r1 out(' ', buffer, idx++, maxlen); 133fc: 465a mov r2, fp 133fe: 1c56 adds r6, r2, #1 13400: 9b0a ldr r3, [sp, #40] ; 0x28 13402: 990b ldr r1, [sp, #44] ; 0x2c 13404: 2020 movs r0, #32 13406: 47c8 blx r9 13408: 4632 mov r2, r6 while(l++ < width) { 1340a: 4546 cmp r6, r8 1340c: d1f7 bne.n 133fe <_vsnprintf+0x44e> 1340e: 1c6b adds r3, r5, #1 13410: 930d str r3, [sp, #52] ; 0x34 while((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) { 13412: 9b0c ldr r3, [sp, #48] ; 0x30 13414: 7818 ldrb r0, [r3, #0] 13416: 2800 cmp r0, #0 13418: f000 80b2 beq.w 13580 <_vsnprintf+0x5d0> 1341c: f8dd 8030 ldr.w r8, [sp, #48] ; 0x30 13420: 4632 mov r2, r6 13422: 4656 mov r6, sl 13424: e009 b.n 1343a <_vsnprintf+0x48a> 13426: 461f mov r7, r3 out(*(p++), buffer, idx++, maxlen); 13428: f102 0b01 add.w fp, r2, #1 1342c: 9b0a ldr r3, [sp, #40] ; 0x28 1342e: 990b ldr r1, [sp, #44] ; 0x2c 13430: 47c8 blx r9 while((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) { 13432: f818 0f01 ldrb.w r0, [r8, #1]! 13436: b130 cbz r0, 13446 <_vsnprintf+0x496> out(*(p++), buffer, idx++, maxlen); 13438: 465a mov r2, fp while((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) { 1343a: 2e00 cmp r6, #0 1343c: d0f4 beq.n 13428 <_vsnprintf+0x478> 1343e: 1e7b subs r3, r7, #1 13440: 2f00 cmp r7, #0 13442: d1f0 bne.n 13426 <_vsnprintf+0x476> 13444: 4693 mov fp, r2 if(flags & FLAGS_LEFT) { 13446: 9b0f ldr r3, [sp, #60] ; 0x3c 13448: 2b00 cmp r3, #0 1344a: f040 809f bne.w 1358c <_vsnprintf+0x5dc> format++; 1344e: 3401 adds r4, #1 const char * p = va_arg(va, char *); 13450: 9e0e ldr r6, [sp, #56] ; 0x38 break; 13452: e5bb b.n 12fcc <_vsnprintf+0x1c> idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)((uintptr_t)va_arg(va, void *)), false, 16U, precision, width, 13454: 1d35 adds r5, r6, #4 flags |= FLAGS_ZEROPAD | FLAGS_UPPERCASE; 13456: f041 0121 orr.w r1, r1, #33 ; 0x21 idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)((uintptr_t)va_arg(va, void *)), false, 16U, precision, width, 1345a: 9105 str r1, [sp, #20] 1345c: 2308 movs r3, #8 1345e: 9304 str r3, [sp, #16] 13460: 9703 str r7, [sp, #12] 13462: 2310 movs r3, #16 13464: 9302 str r3, [sp, #8] 13466: 2300 movs r3, #0 13468: 9301 str r3, [sp, #4] 1346a: 6833 ldr r3, [r6, #0] 1346c: 9300 str r3, [sp, #0] 1346e: 9b0a ldr r3, [sp, #40] ; 0x28 13470: 465a mov r2, fp 13472: 990b ldr r1, [sp, #44] ; 0x2c 13474: 4648 mov r0, r9 13476: 4e2c ldr r6, [pc, #176] ; (13528 <_vsnprintf+0x578>) 13478: 47b0 blx r6 1347a: 4683 mov fp, r0 format++; 1347c: 3401 adds r4, #1 idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)((uintptr_t)va_arg(va, void *)), false, 16U, precision, width, 1347e: 462e mov r6, r5 break; 13480: e5a4 b.n 12fcc <_vsnprintf+0x1c> out('%', buffer, idx++, maxlen); 13482: f10b 0501 add.w r5, fp, #1 13486: 9b0a ldr r3, [sp, #40] ; 0x28 13488: 465a mov r2, fp 1348a: 990b ldr r1, [sp, #44] ; 0x2c 1348c: 2025 movs r0, #37 ; 0x25 1348e: 47c8 blx r9 format++; 13490: 3401 adds r4, #1 out('%', buffer, idx++, maxlen); 13492: 46ab mov fp, r5 break; 13494: e59a b.n 12fcc <_vsnprintf+0x1c> default : out(*format, buffer, idx++, maxlen); 13496: f10b 0501 add.w r5, fp, #1 1349a: 9b0a ldr r3, [sp, #40] ; 0x28 1349c: 465a mov r2, fp 1349e: 990b ldr r1, [sp, #44] ; 0x2c 134a0: 47c8 blx r9 format++; 134a2: 3401 adds r4, #1 out(*format, buffer, idx++, maxlen); 134a4: 46ab mov fp, r5 break; 134a6: e591 b.n 12fcc <_vsnprintf+0x1c> } } // termination out((char)0, buffer, idx < maxlen ? idx : maxlen - 1U, maxlen); 134a8: 9a0a ldr r2, [sp, #40] ; 0x28 134aa: 4593 cmp fp, r2 134ac: bf2c ite cs 134ae: f102 32ff addcs.w r2, r2, #4294967295 134b2: 465a movcc r2, fp 134b4: 9b0a ldr r3, [sp, #40] ; 0x28 134b6: 990b ldr r1, [sp, #44] ; 0x2c 134b8: 2000 movs r0, #0 134ba: 47c8 blx r9 // return written chars without terminating \0 return (int)idx; } 134bc: 4658 mov r0, fp 134be: b011 add sp, #68 ; 0x44 134c0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} flags |= FLAGS_UPPERCASE; 134c4: f041 0120 orr.w r1, r1, #32 base = 16U; 134c8: 2210 movs r2, #16 flags &= ~(FLAGS_PLUS | FLAGS_SPACE); 134ca: f021 030c bic.w r3, r1, #12 if(flags & FLAGS_PRECISION) { 134ce: f411 6f80 tst.w r1, #1024 ; 0x400 134d2: d007 beq.n 134e4 <_vsnprintf+0x534> flags &= ~FLAGS_ZEROPAD; 134d4: f021 030d bic.w r3, r1, #13 if((*format == 'i') || (*format == 'd')) { 134d8: 2869 cmp r0, #105 ; 0x69 134da: f43f aeae beq.w 1323a <_vsnprintf+0x28a> 134de: 2864 cmp r0, #100 ; 0x64 134e0: f43f aeab beq.w 1323a <_vsnprintf+0x28a> if(flags & FLAGS_LONG_LONG) { 134e4: f413 7f00 tst.w r3, #512 ; 0x200 134e8: f47f af0b bne.w 13302 <_vsnprintf+0x352> else if(flags & FLAGS_LONG) { 134ec: f413 7f80 tst.w r3, #256 ; 0x100 134f0: f47f af1f bne.w 13332 <_vsnprintf+0x382> unsigned int) : (flags & FLAGS_SHORT) ? (unsigned short int)va_arg(va, unsigned int) : va_arg(va, unsigned int); 134f4: f013 0f40 tst.w r3, #64 ; 0x40 134f8: f47f af2e bne.w 13358 <_vsnprintf+0x3a8> 134fc: f013 0f80 tst.w r3, #128 ; 0x80 13500: bf14 ite ne 13502: 8831 ldrhne r1, [r6, #0] 13504: 6831 ldreq r1, [r6, #0] 13506: 3604 adds r6, #4 idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags); 13508: 9305 str r3, [sp, #20] 1350a: 9504 str r5, [sp, #16] 1350c: 9703 str r7, [sp, #12] 1350e: 9202 str r2, [sp, #8] 13510: 2300 movs r3, #0 13512: 9301 str r3, [sp, #4] 13514: 9100 str r1, [sp, #0] 13516: 9b0a ldr r3, [sp, #40] ; 0x28 13518: 465a mov r2, fp 1351a: 990b ldr r1, [sp, #44] ; 0x2c 1351c: 4648 mov r0, r9 1351e: 4d02 ldr r5, [pc, #8] ; (13528 <_vsnprintf+0x578>) 13520: 47a8 blx r5 13522: 4683 mov fp, r0 format++; 13524: 3401 adds r4, #1 break; 13526: e551 b.n 12fcc <_vsnprintf+0x1c> 13528: 00012e71 .word 0x00012e71 1352c: 00012ef5 .word 0x00012ef5 if(flags & FLAGS_PRECISION) { 13530: f411 6f80 tst.w r1, #1024 ; 0x400 13534: d13c bne.n 135b0 <_vsnprintf+0x600> base = 10U; 13536: 220a movs r2, #10 13538: e67f b.n 1323a <_vsnprintf+0x28a> out((char)va_arg(va, int), buffer, idx++, maxlen); 1353a: 1d33 adds r3, r6, #4 1353c: 930c str r3, [sp, #48] ; 0x30 1353e: f10b 0701 add.w r7, fp, #1 13542: 9b0a ldr r3, [sp, #40] ; 0x28 13544: 465a mov r2, fp 13546: 990b ldr r1, [sp, #44] ; 0x2c 13548: 7830 ldrb r0, [r6, #0] 1354a: 47c8 blx r9 while(l++ < width) { 1354c: 2d01 cmp r5, #1 1354e: f67f af26 bls.w 1339e <_vsnprintf+0x3ee> 13552: eb05 0a0b add.w sl, r5, fp out(' ', buffer, idx++, maxlen); 13556: f04f 0820 mov.w r8, #32 1355a: 463a mov r2, r7 1355c: 1c56 adds r6, r2, #1 1355e: 9b0a ldr r3, [sp, #40] ; 0x28 13560: 990b ldr r1, [sp, #44] ; 0x2c 13562: 4640 mov r0, r8 13564: 47c8 blx r9 13566: 4632 mov r2, r6 while(l++ < width) { 13568: 45b2 cmp sl, r6 1356a: d1f7 bne.n 1355c <_vsnprintf+0x5ac> 1356c: 44ab add fp, r5 out((char)va_arg(va, int), buffer, idx++, maxlen); 1356e: 9e0c ldr r6, [sp, #48] ; 0x30 13570: e713 b.n 1339a <_vsnprintf+0x3ea> while(l++ < width) { 13572: 465d mov r5, fp 13574: e708 b.n 13388 <_vsnprintf+0x3d8> for(s = str; *s && maxsize--; ++s); 13576: 9a0c ldr r2, [sp, #48] ; 0x30 13578: e727 b.n 133ca <_vsnprintf+0x41a> while(l++ < width) { 1357a: 930d str r3, [sp, #52] ; 0x34 1357c: 465e mov r6, fp 1357e: e748 b.n 13412 <_vsnprintf+0x462> while((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) { 13580: 46b3 mov fp, r6 13582: e764 b.n 1344e <_vsnprintf+0x49e> 13584: 465e mov r6, fp 13586: 2800 cmp r0, #0 13588: f47f af48 bne.w 1341c <_vsnprintf+0x46c> while(l++ < width) { 1358c: 9a0d ldr r2, [sp, #52] ; 0x34 1358e: 4295 cmp r5, r2 13590: f67f af5d bls.w 1344e <_vsnprintf+0x49e> 13594: 445d add r5, fp 13596: 1aad subs r5, r5, r2 13598: 465a mov r2, fp out(' ', buffer, idx++, maxlen); 1359a: 2620 movs r6, #32 1359c: f102 0b01 add.w fp, r2, #1 135a0: 9b0a ldr r3, [sp, #40] ; 0x28 135a2: 990b ldr r1, [sp, #44] ; 0x2c 135a4: 4630 mov r0, r6 135a6: 47c8 blx r9 135a8: 465a mov r2, fp while(l++ < width) { 135aa: 45ab cmp fp, r5 135ac: d1f6 bne.n 1359c <_vsnprintf+0x5ec> 135ae: e74e b.n 1344e <_vsnprintf+0x49e> flags &= ~FLAGS_ZEROPAD; 135b0: f021 0311 bic.w r3, r1, #17 base = 10U; 135b4: 220a movs r2, #10 135b6: e640 b.n 1323a <_vsnprintf+0x28a> flags &= ~FLAGS_ZEROPAD; 135b8: f021 0311 bic.w r3, r1, #17 base = 10U; 135bc: 220a movs r2, #10 135be: e63c b.n 1323a <_vsnprintf+0x28a> base = 16U; 135c0: 2210 movs r2, #16 135c2: e782 b.n 134ca <_vsnprintf+0x51a> base = 8U; 135c4: 2208 movs r2, #8 135c6: e780 b.n 134ca <_vsnprintf+0x51a> base = 2U; 135c8: 2202 movs r2, #2 135ca: e77e b.n 134ca <_vsnprintf+0x51a> 000135cc : va_end(va); return ret; } int lv_vsnprintf(char * buffer, size_t count, const char * format, va_list va) { 135cc: b510 push {r4, lr} 135ce: b082 sub sp, #8 return _vsnprintf(_out_buffer, buffer, count, format, va); 135d0: 9300 str r3, [sp, #0] 135d2: 4613 mov r3, r2 135d4: 460a mov r2, r1 135d6: 4601 mov r1, r0 135d8: 4802 ldr r0, [pc, #8] ; (135e4 ) 135da: 4c03 ldr r4, [pc, #12] ; (135e8 ) 135dc: 47a0 blx r4 } 135de: b002 add sp, #8 135e0: bd10 pop {r4, pc} 135e2: bf00 nop 135e4: 00012ca7 .word 0x00012ca7 135e8: 00012fb1 .word 0x00012fb1 000135ec <_lv_task_core_init>: /** * Init the lv_task module */ void _lv_task_core_init(void) { 135ec: b508 push {r3, lr} _lv_ll_init(&LV_GC_ROOT(_lv_task_ll), sizeof(lv_task_t)); 135ee: 2118 movs r1, #24 135f0: 4804 ldr r0, [pc, #16] ; (13604 <_lv_task_core_init+0x18>) 135f2: 4b05 ldr r3, [pc, #20] ; (13608 <_lv_task_core_init+0x1c>) 135f4: 4798 blx r3 task_list_changed = false; 135f6: 4b05 ldr r3, [pc, #20] ; (1360c <_lv_task_core_init+0x20>) 135f8: 2200 movs r2, #0 135fa: 701a strb r2, [r3, #0] * Enable or disable the whole lv_task handling * @param en: true: lv_task handling is running, false: lv_task handling is suspended */ void lv_task_enable(bool en) { lv_task_run = en; 135fc: 2201 movs r2, #1 135fe: 705a strb r2, [r3, #1] 13600: bd08 pop {r3, pc} 13602: bf00 nop 13604: 20006c80 .word 0x20006c80 13608: 00011ef9 .word 0x00011ef9 1360c: 20006bb8 .word 0x20006bb8 00013610 : { 13610: b5f0 push {r4, r5, r6, r7, lr} 13612: b083 sub sp, #12 tmp = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); 13614: 4837 ldr r0, [pc, #220] ; (136f4 ) 13616: 4b38 ldr r3, [pc, #224] ; (136f8 ) 13618: 4798 blx r3 if(NULL == tmp) { 1361a: b310 cbz r0, 13662 1361c: 4604 mov r4, r0 tmp = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), tmp); 1361e: 4e35 ldr r6, [pc, #212] ; (136f4 ) 13620: 4d36 ldr r5, [pc, #216] ; (136fc ) if(tmp->prio <= DEF_PRIO) { 13622: 7d23 ldrb r3, [r4, #20] 13624: f003 0307 and.w r3, r3, #7 13628: 2b03 cmp r3, #3 1362a: dd30 ble.n 1368e tmp = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), tmp); 1362c: 4621 mov r1, r4 1362e: 4630 mov r0, r6 13630: 47a8 blx r5 } while(tmp != NULL); 13632: 4604 mov r4, r0 13634: 2800 cmp r0, #0 13636: d1f4 bne.n 13622 new_task = _lv_ll_ins_tail(&LV_GC_ROOT(_lv_task_ll)); 13638: 482e ldr r0, [pc, #184] ; (136f4 ) 1363a: 4b31 ldr r3, [pc, #196] ; (13700 ) 1363c: 4798 blx r3 1363e: 4605 mov r5, r0 LV_ASSERT_MEM(new_task); 13640: 4b30 ldr r3, [pc, #192] ; (13704 ) 13642: 4798 blx r3 13644: 2800 cmp r0, #0 13646: d152 bne.n 136ee 13648: 4b2f ldr r3, [pc, #188] ; (13708 ) 1364a: 9300 str r3, [sp, #0] 1364c: 22e5 movs r2, #229 ; 0xe5 1364e: 492f ldr r1, [pc, #188] ; (1370c ) 13650: 2003 movs r0, #3 13652: 4c2f ldr r4, [pc, #188] ; (13710 ) 13654: 47a0 blx r4 13656: 462a mov r2, r5 13658: 2300 movs r3, #0 1365a: 482e ldr r0, [pc, #184] ; (13714 ) 1365c: 492e ldr r1, [pc, #184] ; (13718 ) 1365e: 4788 blx r1 13660: e7fe b.n 13660 new_task = _lv_ll_ins_head(&LV_GC_ROOT(_lv_task_ll)); 13662: 4824 ldr r0, [pc, #144] ; (136f4 ) 13664: 4b2d ldr r3, [pc, #180] ; (1371c ) 13666: 4798 blx r3 13668: 4605 mov r5, r0 LV_ASSERT_MEM(new_task); 1366a: 4b26 ldr r3, [pc, #152] ; (13704 ) 1366c: 4798 blx r3 1366e: b960 cbnz r0, 1368a 13670: 4b25 ldr r3, [pc, #148] ; (13708 ) 13672: 9300 str r3, [sp, #0] 13674: 22d3 movs r2, #211 ; 0xd3 13676: 4925 ldr r1, [pc, #148] ; (1370c ) 13678: 2003 movs r0, #3 1367a: 4c25 ldr r4, [pc, #148] ; (13710 ) 1367c: 47a0 blx r4 1367e: 462a mov r2, r5 13680: 2300 movs r3, #0 13682: 4824 ldr r0, [pc, #144] ; (13714 ) 13684: 4924 ldr r1, [pc, #144] ; (13718 ) 13686: 4788 blx r1 13688: e7fe b.n 13688 if(new_task == NULL) return NULL; 1368a: b95d cbnz r5, 136a4 1368c: e01f b.n 136ce new_task = _lv_ll_ins_prev(&LV_GC_ROOT(_lv_task_ll), tmp); 1368e: 4621 mov r1, r4 13690: 4818 ldr r0, [pc, #96] ; (136f4 ) 13692: 4b23 ldr r3, [pc, #140] ; (13720 ) 13694: 4798 blx r3 13696: 4605 mov r5, r0 LV_ASSERT_MEM(new_task); 13698: 4b1a ldr r3, [pc, #104] ; (13704 ) 1369a: 4798 blx r3 1369c: b1d0 cbz r0, 136d4 if(new_task == NULL) return NULL; 1369e: b1b5 cbz r5, 136ce if(tmp == NULL) { 136a0: 2c00 cmp r4, #0 136a2: d0c9 beq.n 13638 task_list_changed = true; 136a4: 4c1f ldr r4, [pc, #124] ; (13724 ) 136a6: 2601 movs r6, #1 136a8: 7026 strb r6, [r4, #0] new_task->period = DEF_PERIOD; 136aa: f44f 73fa mov.w r3, #500 ; 0x1f4 136ae: 602b str r3, [r5, #0] new_task->task_cb = NULL; 136b0: 2700 movs r7, #0 136b2: 60af str r7, [r5, #8] new_task->prio = DEF_PRIO; 136b4: 7d2b ldrb r3, [r5, #20] 136b6: 2203 movs r2, #3 136b8: f362 0302 bfi r3, r2, #0, #3 136bc: 752b strb r3, [r5, #20] new_task->repeat_count = -1; 136be: f04f 33ff mov.w r3, #4294967295 136c2: 612b str r3, [r5, #16] new_task->last_run = lv_tick_get(); 136c4: 4b18 ldr r3, [pc, #96] ; (13728 ) 136c6: 4798 blx r3 136c8: 6068 str r0, [r5, #4] new_task->user_data = NULL; 136ca: 60ef str r7, [r5, #12] task_created = true; 136cc: 70a6 strb r6, [r4, #2] } 136ce: 4628 mov r0, r5 136d0: b003 add sp, #12 136d2: bdf0 pop {r4, r5, r6, r7, pc} LV_ASSERT_MEM(new_task); 136d4: 4b0c ldr r3, [pc, #48] ; (13708 ) 136d6: 9300 str r3, [sp, #0] 136d8: 22db movs r2, #219 ; 0xdb 136da: 490c ldr r1, [pc, #48] ; (1370c ) 136dc: 2003 movs r0, #3 136de: 4c0c ldr r4, [pc, #48] ; (13710 ) 136e0: 47a0 blx r4 136e2: 462a mov r2, r5 136e4: 2300 movs r3, #0 136e6: 480b ldr r0, [pc, #44] ; (13714 ) 136e8: 490b ldr r1, [pc, #44] ; (13718 ) 136ea: 4788 blx r1 136ec: e7fe b.n 136ec if(new_task == NULL) return NULL; 136ee: 2d00 cmp r5, #0 136f0: d1d8 bne.n 136a4 136f2: e7ec b.n 136ce 136f4: 20006c80 .word 0x20006c80 136f8: 00011fa9 .word 0x00011fa9 136fc: 00011fbd .word 0x00011fbd 13700: 00011f5d .word 0x00011f5d 13704: 000022b1 .word 0x000022b1 13708: 000294ac .word 0x000294ac 1370c: 000294d4 .word 0x000294d4 13710: 0001225d .word 0x0001225d 13714: 00023fd8 .word 0x00023fd8 13718: 000022b9 .word 0x000022b9 1371c: 00011f11 .word 0x00011f11 13720: 00012015 .word 0x00012015 13724: 20006bb8 .word 0x20006bb8 13728: 00011059 .word 0x00011059 0001372c : { 1372c: b510 push {r4, lr} 1372e: 4604 mov r4, r0 _lv_ll_remove(&LV_GC_ROOT(_lv_task_ll), task); 13730: 4601 mov r1, r0 13732: 4809 ldr r0, [pc, #36] ; (13758 ) 13734: 4b09 ldr r3, [pc, #36] ; (1375c ) 13736: 4798 blx r3 task_list_changed = true; 13738: 2201 movs r2, #1 1373a: 4b09 ldr r3, [pc, #36] ; (13760 ) 1373c: 701a strb r2, [r3, #0] lv_mem_free(task); 1373e: 4620 mov r0, r4 13740: 4b08 ldr r3, [pc, #32] ; (13764 ) 13742: 4798 blx r3 if(LV_GC_ROOT(_lv_task_act) == task) task_deleted = true; /*The active task was deleted*/ 13744: 4b08 ldr r3, [pc, #32] ; (13768 ) 13746: 681b ldr r3, [r3, #0] 13748: 429c cmp r4, r3 1374a: d000 beq.n 1374e 1374c: bd10 pop {r4, pc} 1374e: 2201 movs r2, #1 13750: 4b03 ldr r3, [pc, #12] ; (13760 ) 13752: 70da strb r2, [r3, #3] } 13754: e7fa b.n 1374c 13756: bf00 nop 13758: 20006c80 .word 0x20006c80 1375c: 00012095 .word 0x00012095 13760: 20006bb8 .word 0x20006bb8 13764: 000124c5 .word 0x000124c5 13768: 20006d4c .word 0x20006d4c 0001376c : * Execute task if its the priority is appropriate * @param task pointer to lv_task * @return true: execute, false: not executed */ static bool lv_task_exec(lv_task_t * task) { 1376c: b510 push {r4, lr} 1376e: 4604 mov r4, r0 * @return the time remaining, or 0 if it needs to be run again */ static uint32_t lv_task_time_remaining(lv_task_t * task) { /*Check if at least 'period' time elapsed*/ uint32_t elp = lv_tick_elaps(task->last_run); 13770: 6840 ldr r0, [r0, #4] 13772: 4b12 ldr r3, [pc, #72] ; (137bc ) 13774: 4798 blx r3 if(elp >= task->period) 13776: 6823 ldr r3, [r4, #0] 13778: 4298 cmp r0, r3 1377a: d201 bcs.n 13780 bool exec = false; 1377c: 2000 movs r0, #0 1377e: bd10 pop {r4, pc} task->last_run = lv_tick_get(); 13780: 4b0f ldr r3, [pc, #60] ; (137c0 ) 13782: 4798 blx r3 13784: 6060 str r0, [r4, #4] task_deleted = false; 13786: 4b0f ldr r3, [pc, #60] ; (137c4 ) 13788: 2200 movs r2, #0 1378a: 70da strb r2, [r3, #3] task_created = false; 1378c: 709a strb r2, [r3, #2] if(task->task_cb) task->task_cb(task); 1378e: 68a3 ldr r3, [r4, #8] 13790: b12b cbz r3, 1379e 13792: 4620 mov r0, r4 13794: 4798 blx r3 if(task_deleted == false) { /*The task might be deleted by itself as well*/ 13796: 4b0b ldr r3, [pc, #44] ; (137c4 ) 13798: 78d8 ldrb r0, [r3, #3] 1379a: b100 cbz r0, 1379e } 1379c: bd10 pop {r4, pc} if(task->repeat_count > 0) { 1379e: 6923 ldr r3, [r4, #16] 137a0: 2b00 cmp r3, #0 task->repeat_count--; 137a2: bfc4 itt gt 137a4: f103 33ff addgt.w r3, r3, #4294967295 137a8: 6123 strgt r3, [r4, #16] if(task->repeat_count == 0) { 137aa: 6923 ldr r3, [r4, #16] 137ac: b10b cbz r3, 137b2 exec = true; 137ae: 2001 movs r0, #1 137b0: e7f4 b.n 1379c lv_task_del(task); 137b2: 4620 mov r0, r4 137b4: 4b04 ldr r3, [pc, #16] ; (137c8 ) 137b6: 4798 blx r3 exec = true; 137b8: 2001 movs r0, #1 137ba: bd10 pop {r4, pc} 137bc: 00011071 .word 0x00011071 137c0: 00011059 .word 0x00011059 137c4: 20006bb8 .word 0x20006bb8 137c8: 0001372d .word 0x0001372d 000137cc : { 137cc: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} if(already_running) return 1; 137d0: 4b58 ldr r3, [pc, #352] ; (13934 ) 137d2: 791b ldrb r3, [r3, #4] 137d4: 2b00 cmp r3, #0 137d6: f040 80a9 bne.w 1392c already_running = true; 137da: 4b56 ldr r3, [pc, #344] ; (13934 ) 137dc: 2201 movs r2, #1 137de: 711a strb r2, [r3, #4] if(lv_task_run == false) { 137e0: 785b ldrb r3, [r3, #1] 137e2: b92b cbnz r3, 137f0 already_running = false; /*Release mutex*/ 137e4: 2200 movs r2, #0 137e6: 4b53 ldr r3, [pc, #332] ; (13934 ) 137e8: 711a strb r2, [r3, #4] return 1; 137ea: 2001 movs r0, #1 137ec: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} handler_start = lv_tick_get(); 137f0: 4b51 ldr r3, [pc, #324] ; (13938 ) 137f2: 4798 blx r3 137f4: 4b4f ldr r3, [pc, #316] ; (13934 ) 137f6: 6098 str r0, [r3, #8] lv_task_t * task_interrupter = NULL; 137f8: 2600 movs r6, #0 task_deleted = false; 137fa: 461d mov r5, r3 LV_GC_ROOT(_lv_task_act) = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); 137fc: f8df 814c ldr.w r8, [pc, #332] ; 1394c 13800: 4c4e ldr r4, [pc, #312] ; (1393c ) next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), LV_GC_ROOT(_lv_task_act)); 13802: f8df 9150 ldr.w r9, [pc, #336] ; 13954 13806: e06d b.n 138e4 LV_GC_ROOT(_lv_task_act) = next; 13808: 6027 str r7, [r4, #0] task_interrupter = NULL; /*From this point only task after the interrupter comes, so 1380a: 2600 movs r6, #0 continue; /*Load the next task*/ 1380c: e009 b.n 13822 lv_task_exec(LV_GC_ROOT(_lv_task_act)); 1380e: 4b4c ldr r3, [pc, #304] ; (13940 ) 13810: 4798 blx r3 if(task_created || task_deleted) { 13812: 78ab ldrb r3, [r5, #2] 13814: bb33 cbnz r3, 13864 13816: 78eb ldrb r3, [r5, #3] 13818: bb23 cbnz r3, 13864 if(task_list_changed) { 1381a: 782b ldrb r3, [r5, #0] 1381c: 2b00 cmp r3, #0 1381e: d15f bne.n 138e0 LV_GC_ROOT(_lv_task_act) = next; /*Load the next task*/ 13820: 6027 str r7, [r4, #0] while(LV_GC_ROOT(_lv_task_act)) { 13822: 6821 ldr r1, [r4, #0] 13824: b1f1 cbz r1, 13864 next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), LV_GC_ROOT(_lv_task_act)); 13826: 4640 mov r0, r8 13828: 47c8 blx r9 1382a: 4607 mov r7, r0 if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio == LV_TASK_PRIO_OFF) { 1382c: 6820 ldr r0, [r4, #0] 1382e: 7d03 ldrb r3, [r0, #20] 13830: f013 0307 ands.w r3, r3, #7 13834: d016 beq.n 13864 if(LV_GC_ROOT(_lv_task_act) == task_interrupter) { 13836: 4286 cmp r6, r0 13838: d0e6 beq.n 13808 if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio == LV_TASK_PRIO_HIGHEST) { 1383a: 2b05 cmp r3, #5 1383c: d0e7 beq.n 1380e else if(task_interrupter) { 1383e: 2e00 cmp r6, #0 13840: d042 beq.n 138c8 if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio > task_interrupter->prio) { 13842: 7d02 ldrb r2, [r0, #20] 13844: f002 0207 and.w r2, r2, #7 13848: 7d33 ldrb r3, [r6, #20] 1384a: f003 0307 and.w r3, r3, #7 1384e: 429a cmp r2, r3 13850: dddf ble.n 13812 if(lv_task_exec(LV_GC_ROOT(_lv_task_act))) { 13852: 4b3b ldr r3, [pc, #236] ; (13940 ) 13854: 4798 blx r3 13856: 2800 cmp r0, #0 13858: d0db beq.n 13812 if(!task_created && !task_deleted) { 1385a: 78ab ldrb r3, [r5, #2] 1385c: b913 cbnz r3, 13864 1385e: 78eb ldrb r3, [r5, #3] 13860: 2b00 cmp r3, #0 13862: d02f beq.n 138c4 busy_time += lv_tick_elaps(handler_start); 13864: 4c33 ldr r4, [pc, #204] ; (13934 ) 13866: 68a0 ldr r0, [r4, #8] 13868: 4d36 ldr r5, [pc, #216] ; (13944 ) 1386a: 47a8 blx r5 1386c: 68e3 ldr r3, [r4, #12] 1386e: 4403 add r3, r0 13870: 60e3 str r3, [r4, #12] uint32_t idle_period_time = lv_tick_elaps(idle_period_start); 13872: 6920 ldr r0, [r4, #16] 13874: 47a8 blx r5 if(idle_period_time >= IDLE_MEAS_PERIOD) { 13876: f5b0 7ffa cmp.w r0, #500 ; 0x1f4 1387a: d315 bcc.n 138a8 idle_last = (uint32_t)((uint32_t)busy_time * 100) / IDLE_MEAS_PERIOD; /*Calculate the busy percentage*/ 1387c: 68e2 ldr r2, [r4, #12] 1387e: 2364 movs r3, #100 ; 0x64 13880: fb03 f302 mul.w r3, r3, r2 13884: 4a30 ldr r2, [pc, #192] ; (13948 ) 13886: fba2 2303 umull r2, r3, r2, r3 1388a: f3c3 1347 ubfx r3, r3, #5, #8 idle_last = idle_last > 100 ? 0 : 100 - idle_last; /*But we need idle time*/ 1388e: 2b64 cmp r3, #100 ; 0x64 13890: bf9a itte ls 13892: f1c3 0364 rsbls r3, r3, #100 ; 0x64 13896: b2db uxtbls r3, r3 13898: 2300 movhi r3, #0 1389a: 4c26 ldr r4, [pc, #152] ; (13934 ) 1389c: 7523 strb r3, [r4, #20] busy_time = 0; 1389e: 2300 movs r3, #0 138a0: 60e3 str r3, [r4, #12] idle_period_start = lv_tick_get(); 138a2: 4b25 ldr r3, [pc, #148] ; (13938 ) 138a4: 4798 blx r3 138a6: 6120 str r0, [r4, #16] time_till_next = LV_NO_TASK_READY; 138a8: f04f 32ff mov.w r2, #4294967295 138ac: 4b21 ldr r3, [pc, #132] ; (13934 ) 138ae: 619a str r2, [r3, #24] next = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); 138b0: 4826 ldr r0, [pc, #152] ; (1394c ) 138b2: 4b27 ldr r3, [pc, #156] ; (13950 ) 138b4: 4798 blx r3 while(next) { 138b6: 4604 mov r4, r0 138b8: 2800 cmp r0, #0 138ba: d031 beq.n 13920 uint32_t elp = lv_tick_elaps(task->last_run); 138bc: 4f21 ldr r7, [pc, #132] ; (13944 ) if(delay < time_till_next) 138be: 4e1d ldr r6, [pc, #116] ; (13934 ) next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), next); /*Find the next task*/ 138c0: 4d22 ldr r5, [pc, #136] ; (1394c ) 138c2: e01d b.n 13900 task_interrupter = LV_GC_ROOT(_lv_task_act); 138c4: 6826 ldr r6, [r4, #0] break; 138c6: e00d b.n 138e4 if(lv_task_exec(LV_GC_ROOT(_lv_task_act))) { 138c8: 4b1d ldr r3, [pc, #116] ; (13940 ) 138ca: 4798 blx r3 138cc: 2800 cmp r0, #0 138ce: d0a0 beq.n 13812 if(!task_created && !task_deleted) { 138d0: 78ab ldrb r3, [r5, #2] 138d2: 2b00 cmp r3, #0 138d4: d1c6 bne.n 13864 138d6: 78eb ldrb r3, [r5, #3] 138d8: 2b00 cmp r3, #0 138da: d1c3 bne.n 13864 task_interrupter = LV_GC_ROOT(_lv_task_act); /*Check all tasks again from the highest priority */ 138dc: 6826 ldr r6, [r4, #0] break; 138de: e001 b.n 138e4 task_list_changed = false; 138e0: 2600 movs r6, #0 138e2: 702e strb r6, [r5, #0] task_deleted = false; 138e4: 2300 movs r3, #0 138e6: 70eb strb r3, [r5, #3] task_created = false; 138e8: 70ab strb r3, [r5, #2] LV_GC_ROOT(_lv_task_act) = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); 138ea: 4640 mov r0, r8 138ec: 4b18 ldr r3, [pc, #96] ; (13950 ) 138ee: 4798 blx r3 138f0: 6020 str r0, [r4, #0] while(LV_GC_ROOT(_lv_task_act)) { 138f2: e796 b.n 13822 next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), next); /*Find the next task*/ 138f4: 4621 mov r1, r4 138f6: 4628 mov r0, r5 138f8: 4b16 ldr r3, [pc, #88] ; (13954 ) 138fa: 4798 blx r3 while(next) { 138fc: 4604 mov r4, r0 138fe: b178 cbz r0, 13920 if(next->prio != LV_TASK_PRIO_OFF) { 13900: 7d23 ldrb r3, [r4, #20] 13902: f013 0f07 tst.w r3, #7 13906: d0f5 beq.n 138f4 uint32_t elp = lv_tick_elaps(task->last_run); 13908: 6860 ldr r0, [r4, #4] 1390a: 47b8 blx r7 if(elp >= task->period) 1390c: 6823 ldr r3, [r4, #0] 1390e: 4298 cmp r0, r3 return 0; return task->period - elp; 13910: bf34 ite cc 13912: 1a1b subcc r3, r3, r0 return 0; 13914: 2300 movcs r3, #0 if(delay < time_till_next) 13916: 69b2 ldr r2, [r6, #24] 13918: 429a cmp r2, r3 time_till_next = delay; 1391a: bf88 it hi 1391c: 61b3 strhi r3, [r6, #24] 1391e: e7e9 b.n 138f4 already_running = false; /*Release the mutex*/ 13920: 4b04 ldr r3, [pc, #16] ; (13934 ) 13922: 2200 movs r2, #0 13924: 711a strb r2, [r3, #4] return time_till_next; 13926: 6998 ldr r0, [r3, #24] 13928: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} if(already_running) return 1; 1392c: 2001 movs r0, #1 } 1392e: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 13932: bf00 nop 13934: 20006bb8 .word 0x20006bb8 13938: 00011059 .word 0x00011059 1393c: 20006d4c .word 0x20006d4c 13940: 0001376d .word 0x0001376d 13944: 00011071 .word 0x00011071 13948: 10624dd3 .word 0x10624dd3 1394c: 20006c80 .word 0x20006c80 13950: 00011fa9 .word 0x00011fa9 13954: 00011fbd .word 0x00011fbd 00013958 : { 13958: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} if(task->prio == prio) return; 1395c: 7d03 ldrb r3, [r0, #20] 1395e: f003 0307 and.w r3, r3, #7 13962: 428b cmp r3, r1 13964: d031 beq.n 139ca 13966: 460d mov r5, r1 13968: 4688 mov r8, r1 1396a: 4681 mov r9, r0 _LV_LL_READ(LV_GC_ROOT(_lv_task_ll), i) { 1396c: 4818 ldr r0, [pc, #96] ; (139d0 ) 1396e: 4b19 ldr r3, [pc, #100] ; (139d4 ) 13970: 4798 blx r3 13972: 4604 mov r4, r0 13974: b318 cbz r0, 139be if(i->prio <= prio) { 13976: 7d03 ldrb r3, [r0, #20] 13978: f003 0307 and.w r3, r3, #7 1397c: 429d cmp r5, r3 1397e: da0b bge.n 13998 _LV_LL_READ(LV_GC_ROOT(_lv_task_ll), i) { 13980: 4f13 ldr r7, [pc, #76] ; (139d0 ) 13982: 4e15 ldr r6, [pc, #84] ; (139d8 ) 13984: 4621 mov r1, r4 13986: 4638 mov r0, r7 13988: 47b0 blx r6 1398a: 4604 mov r4, r0 1398c: b1b8 cbz r0, 139be if(i->prio <= prio) { 1398e: 7d23 ldrb r3, [r4, #20] 13990: f003 0307 and.w r3, r3, #7 13994: 429d cmp r5, r3 13996: dbf5 blt.n 13984 if(i != task) _lv_ll_move_before(&LV_GC_ROOT(_lv_task_ll), task, i); 13998: 45a1 cmp r9, r4 1399a: d005 beq.n 139a8 1399c: 4622 mov r2, r4 1399e: 4649 mov r1, r9 139a0: 480b ldr r0, [pc, #44] ; (139d0 ) 139a2: 4b0e ldr r3, [pc, #56] ; (139dc ) 139a4: 4798 blx r3 if(i == NULL) { 139a6: b154 cbz r4, 139be task_list_changed = true; 139a8: 2201 movs r2, #1 139aa: 4b0d ldr r3, [pc, #52] ; (139e0 ) 139ac: 701a strb r2, [r3, #0] task->prio = prio; 139ae: f899 3014 ldrb.w r3, [r9, #20] 139b2: f368 0302 bfi r3, r8, #0, #3 139b6: f889 3014 strb.w r3, [r9, #20] 139ba: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} _lv_ll_move_before(&LV_GC_ROOT(_lv_task_ll), task, NULL); 139be: 2200 movs r2, #0 139c0: 4649 mov r1, r9 139c2: 4803 ldr r0, [pc, #12] ; (139d0 ) 139c4: 4b05 ldr r3, [pc, #20] ; (139dc ) 139c6: 4798 blx r3 139c8: e7ee b.n 139a8 139ca: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 139ce: bf00 nop 139d0: 20006c80 .word 0x20006c80 139d4: 00011fa9 .word 0x00011fa9 139d8: 00011fbd .word 0x00011fbd 139dc: 00012195 .word 0x00012195 139e0: 20006bb8 .word 0x20006bb8 000139e4 : { 139e4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 139e8: b082 sub sp, #8 139ea: 4680 mov r8, r0 139ec: 460f mov r7, r1 139ee: 4616 mov r6, r2 139f0: 461d mov r5, r3 lv_task_t * new_task = lv_task_create_basic(); 139f2: 4b10 ldr r3, [pc, #64] ; (13a34 ) 139f4: 4798 blx r3 139f6: 4604 mov r4, r0 LV_ASSERT_MEM(new_task); 139f8: 4b0f ldr r3, [pc, #60] ; (13a38 ) 139fa: 4798 blx r3 139fc: b160 cbz r0, 13a18 if(new_task == NULL) return NULL; 139fe: b13c cbz r4, 13a10 task->task_cb = task_cb; 13a00: f8c4 8008 str.w r8, [r4, #8] task->period = period; 13a04: 6027 str r7, [r4, #0] lv_task_set_prio(new_task, prio); 13a06: 4631 mov r1, r6 13a08: 4620 mov r0, r4 13a0a: 4b0c ldr r3, [pc, #48] ; (13a3c ) 13a0c: 4798 blx r3 new_task->user_data = user_data; 13a0e: 60e5 str r5, [r4, #12] } 13a10: 4620 mov r0, r4 13a12: b002 add sp, #8 13a14: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} LV_ASSERT_MEM(new_task); 13a18: 4b09 ldr r3, [pc, #36] ; (13a40 ) 13a1a: 9300 str r3, [sp, #0] 13a1c: f44f 7283 mov.w r2, #262 ; 0x106 13a20: 4908 ldr r1, [pc, #32] ; (13a44 ) 13a22: 2003 movs r0, #3 13a24: 4d08 ldr r5, [pc, #32] ; (13a48 ) 13a26: 47a8 blx r5 13a28: 4622 mov r2, r4 13a2a: 2300 movs r3, #0 13a2c: 4807 ldr r0, [pc, #28] ; (13a4c ) 13a2e: 4908 ldr r1, [pc, #32] ; (13a50 ) 13a30: 4788 blx r1 13a32: e7fe b.n 13a32 13a34: 00013611 .word 0x00013611 13a38: 000022b1 .word 0x000022b1 13a3c: 00013959 .word 0x00013959 13a40: 000294c4 .word 0x000294c4 13a44: 000294d4 .word 0x000294d4 13a48: 0001225d .word 0x0001225d 13a4c: 00023fd8 .word 0x00023fd8 13a50: 000022b9 .word 0x000022b9 00013a54 : { 13a54: b510 push {r4, lr} 13a56: 4604 mov r4, r0 task->last_run = lv_tick_get() - task->period - 1; 13a58: 4b03 ldr r3, [pc, #12] ; (13a68 ) 13a5a: 4798 blx r3 13a5c: 6823 ldr r3, [r4, #0] 13a5e: 43db mvns r3, r3 13a60: 4403 add r3, r0 13a62: 6063 str r3, [r4, #4] 13a64: bd10 pop {r4, pc} 13a66: bf00 nop 13a68: 00011059 .word 0x00011059 00013a6c : * @param str pointer to a character in a string * @return length of the UTF-8 character (1,2,3 or 4). O on invalid code */ static uint8_t lv_txt_utf8_size(const char * str) { if((str[0] & 0x80) == 0) 13a6c: 7803 ldrb r3, [r0, #0] 13a6e: f013 0f80 tst.w r3, #128 ; 0x80 13a72: d101 bne.n 13a78 return 1; 13a74: 2001 movs r0, #1 13a76: 4770 bx lr else if((str[0] & 0xE0) == 0xC0) 13a78: f003 02e0 and.w r2, r3, #224 ; 0xe0 13a7c: 2ac0 cmp r2, #192 ; 0xc0 13a7e: d00a beq.n 13a96 return 2; else if((str[0] & 0xF0) == 0xE0) 13a80: f003 02f0 and.w r2, r3, #240 ; 0xf0 13a84: 2ae0 cmp r2, #224 ; 0xe0 13a86: d008 beq.n 13a9a return 3; else if((str[0] & 0xF8) == 0xF0) 13a88: f003 03f8 and.w r3, r3, #248 ; 0xf8 return 4; return 0; /*If the char was invalid tell it's 1 byte long*/ 13a8c: 2bf0 cmp r3, #240 ; 0xf0 13a8e: bf0c ite eq 13a90: 2004 moveq r0, #4 13a92: 2000 movne r0, #0 13a94: 4770 bx lr return 2; 13a96: 2002 movs r0, #2 13a98: 4770 bx lr return 3; 13a9a: 2003 movs r0, #3 } 13a9c: 4770 bx lr 00013a9e : * @param letter_uni an Unicode letter * @return UTF-8 coded character in Little Endian to be compatible with C chars (e.g. 'Á', 'Ű') */ static uint32_t lv_txt_unicode_to_utf8(uint32_t letter_uni) { if(letter_uni < 128) return letter_uni; 13a9e: 287f cmp r0, #127 ; 0x7f 13aa0: d916 bls.n 13ad0 { 13aa2: b082 sub sp, #8 uint8_t bytes[4]; if(letter_uni < 0x0800) { 13aa4: f5b0 6f00 cmp.w r0, #2048 ; 0x800 13aa8: d213 bcs.n 13ad2 bytes[0] = ((letter_uni >> 6) & 0x1F) | 0xC0; 13aaa: f3c0 1384 ubfx r3, r0, #6, #5 13aae: f063 033f orn r3, r3, #63 ; 0x3f 13ab2: f88d 3004 strb.w r3, [sp, #4] bytes[1] = ((letter_uni >> 0) & 0x3F) | 0x80; 13ab6: f000 003f and.w r0, r0, #63 ; 0x3f 13aba: f060 007f orn r0, r0, #127 ; 0x7f 13abe: f88d 0005 strb.w r0, [sp, #5] bytes[2] = 0; 13ac2: 2300 movs r3, #0 13ac4: f88d 3006 strb.w r3, [sp, #6] bytes[3] = 0; 13ac8: f88d 3007 strb.w r3, [sp, #7] bytes[2] = ((letter_uni >> 6) & 0x3F) | 0x80; bytes[3] = ((letter_uni >> 0) & 0x3F) | 0x80; } uint32_t * res_p = (uint32_t *)bytes; return *res_p; 13acc: 9801 ldr r0, [sp, #4] } 13ace: b002 add sp, #8 13ad0: 4770 bx lr else if(letter_uni < 0x010000) { 13ad2: f5b0 3f80 cmp.w r0, #65536 ; 0x10000 13ad6: d215 bcs.n 13b04 bytes[0] = ((letter_uni >> 12) & 0x0F) | 0xE0; 13ad8: f3c0 3303 ubfx r3, r0, #12, #4 13adc: f063 031f orn r3, r3, #31 13ae0: f88d 3004 strb.w r3, [sp, #4] bytes[1] = ((letter_uni >> 6) & 0x3F) | 0x80; 13ae4: f3c0 1385 ubfx r3, r0, #6, #6 13ae8: f063 037f orn r3, r3, #127 ; 0x7f 13aec: f88d 3005 strb.w r3, [sp, #5] bytes[2] = ((letter_uni >> 0) & 0x3F) | 0x80; 13af0: f000 003f and.w r0, r0, #63 ; 0x3f 13af4: f060 007f orn r0, r0, #127 ; 0x7f 13af8: f88d 0006 strb.w r0, [sp, #6] bytes[3] = 0; 13afc: 2300 movs r3, #0 13afe: f88d 3007 strb.w r3, [sp, #7] 13b02: e7e3 b.n 13acc else if(letter_uni < 0x110000) { 13b04: f5b0 1f88 cmp.w r0, #1114112 ; 0x110000 13b08: d2e0 bcs.n 13acc bytes[0] = ((letter_uni >> 18) & 0x07) | 0xF0; 13b0a: f3c0 4382 ubfx r3, r0, #18, #3 13b0e: f063 030f orn r3, r3, #15 13b12: f88d 3004 strb.w r3, [sp, #4] bytes[1] = ((letter_uni >> 12) & 0x3F) | 0x80; 13b16: f3c0 3305 ubfx r3, r0, #12, #6 13b1a: f063 037f orn r3, r3, #127 ; 0x7f 13b1e: f88d 3005 strb.w r3, [sp, #5] bytes[2] = ((letter_uni >> 6) & 0x3F) | 0x80; 13b22: f3c0 1385 ubfx r3, r0, #6, #6 13b26: f063 037f orn r3, r3, #127 ; 0x7f 13b2a: f88d 3006 strb.w r3, [sp, #6] bytes[3] = ((letter_uni >> 0) & 0x3F) | 0x80; 13b2e: f000 003f and.w r0, r0, #63 ; 0x3f 13b32: f060 007f orn r0, r0, #127 ; 0x7f 13b36: f88d 0007 strb.w r0, [sp, #7] 13b3a: e7c7 b.n 13acc 00013b3c : * Convert a wide character, e.g. 'Á' little endian to be UTF-8 compatible * @param c a wide character or a Little endian number * @return `c` in big endian */ static uint32_t lv_txt_utf8_conv_wc(uint32_t c) { 13b3c: b082 sub sp, #8 13b3e: 9001 str r0, [sp, #4] /*Swap the bytes (UTF-8 is big endian, but the MCUs are little endian)*/ if((c & 0x80) != 0) { 13b40: f010 0f80 tst.w r0, #128 ; 0x80 13b44: d017 beq.n 13b76 uint32_t swapped; uint8_t c8[4]; _lv_memcpy_small(c8, &c, 4); swapped = (c8[0] << 24) + (c8[1] << 16) + (c8[2] << 8) + (c8[3]); 13b46: f89d 3004 ldrb.w r3, [sp, #4] 13b4a: f89d 2005 ldrb.w r2, [sp, #5] 13b4e: 0412 lsls r2, r2, #16 13b50: eb02 6203 add.w r2, r2, r3, lsl #24 13b54: f89d 3006 ldrb.w r3, [sp, #6] 13b58: eb02 2203 add.w r2, r2, r3, lsl #8 13b5c: f89d 3007 ldrb.w r3, [sp, #7] 13b60: 441a add r2, r3 13b62: 2304 movs r3, #4 uint8_t i; for(i = 0; i < 4; i++) { if((swapped & 0xFF) == 0) 13b64: f012 0fff tst.w r2, #255 ; 0xff swapped = (swapped >> 8); /*Ignore leading zeros (they were in the end originally)*/ 13b68: bf08 it eq 13b6a: 0a12 lsreq r2, r2, #8 13b6c: 3b01 subs r3, #1 for(i = 0; i < 4; i++) { 13b6e: f013 03ff ands.w r3, r3, #255 ; 0xff 13b72: d1f7 bne.n 13b64 } c = swapped; 13b74: 9201 str r2, [sp, #4] } return c; } 13b76: 9801 ldr r0, [sp, #4] 13b78: b002 add sp, #8 13b7a: 4770 bx lr 00013b7c : * After call it will point to the next UTF-8 char in 'txt'. * NULL to use txt[0] as index * @return the decoded Unicode character or 0 on invalid UTF-8 code */ static uint32_t lv_txt_utf8_next(const char * txt, uint32_t * i) { 13b7c: b470 push {r4, r5, r6} 13b7e: b083 sub sp, #12 * */ uint32_t result = 0; /*Dummy 'i' pointer is required*/ uint32_t i_tmp = 0; 13b80: 2300 movs r3, #0 13b82: 9301 str r3, [sp, #4] if(i == NULL) i = &i_tmp; 13b84: 460c mov r4, r1 13b86: b151 cbz r1, 13b9e /*Normal ASCII*/ if((txt[*i] & 0x80) == 0) { 13b88: 6822 ldr r2, [r4, #0] 13b8a: 5c83 ldrb r3, [r0, r2] 13b8c: f013 0f80 tst.w r3, #128 ; 0x80 13b90: d107 bne.n 13ba2 result = txt[*i]; 13b92: 4618 mov r0, r3 (*i)++; 13b94: 3201 adds r2, #1 13b96: 6022 str r2, [r4, #0] else { (*i)++; /*Not UTF-8 char. Go the next.*/ } } return result; } 13b98: b003 add sp, #12 13b9a: bc70 pop {r4, r5, r6} 13b9c: 4770 bx lr if(i == NULL) i = &i_tmp; 13b9e: ac01 add r4, sp, #4 13ba0: e7f2 b.n 13b88 if((txt[*i] & 0xE0) == 0xC0) { 13ba2: f003 01e0 and.w r1, r3, #224 ; 0xe0 13ba6: 29c0 cmp r1, #192 ; 0xc0 13ba8: d00b beq.n 13bc2 else if((txt[*i] & 0xF0) == 0xE0) { 13baa: f003 01f0 and.w r1, r3, #240 ; 0xf0 13bae: 29e0 cmp r1, #224 ; 0xe0 13bb0: d019 beq.n 13be6 else if((txt[*i] & 0xF8) == 0xF0) { 13bb2: f003 01f8 and.w r1, r3, #248 ; 0xf8 13bb6: 29f0 cmp r1, #240 ; 0xf0 13bb8: d033 beq.n 13c22 (*i)++; /*Not UTF-8 char. Go the next.*/ 13bba: 3201 adds r2, #1 13bbc: 6022 str r2, [r4, #0] uint32_t result = 0; 13bbe: 2000 movs r0, #0 13bc0: e7ea b.n 13b98 (*i)++; 13bc2: 1c51 adds r1, r2, #1 13bc4: 6021 str r1, [r4, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 13bc6: 5c40 ldrb r0, [r0, r1] 13bc8: f000 01c0 and.w r1, r0, #192 ; 0xc0 13bcc: 2980 cmp r1, #128 ; 0x80 13bce: d001 beq.n 13bd4 13bd0: 2000 movs r0, #0 13bd2: e7e1 b.n 13b98 result = (uint32_t)(txt[*i] & 0x1F) << 6; 13bd4: 019b lsls r3, r3, #6 13bd6: f403 63f8 and.w r3, r3, #1984 ; 0x7c0 result += (txt[*i] & 0x3F); 13bda: f000 003f and.w r0, r0, #63 ; 0x3f 13bde: 4418 add r0, r3 (*i)++; 13be0: 3202 adds r2, #2 13be2: 6022 str r2, [r4, #0] 13be4: e7d8 b.n 13b98 (*i)++; 13be6: 1c51 adds r1, r2, #1 13be8: 6021 str r1, [r4, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 13bea: 5c41 ldrb r1, [r0, r1] 13bec: f001 05c0 and.w r5, r1, #192 ; 0xc0 13bf0: 2d80 cmp r5, #128 ; 0x80 13bf2: d001 beq.n 13bf8 13bf4: 2000 movs r0, #0 13bf6: e7cf b.n 13b98 (*i)++; 13bf8: 1c95 adds r5, r2, #2 13bfa: 6025 str r5, [r4, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 13bfc: 5d40 ldrb r0, [r0, r5] 13bfe: f000 05c0 and.w r5, r0, #192 ; 0xc0 13c02: 2d80 cmp r5, #128 ; 0x80 13c04: d001 beq.n 13c0a 13c06: 2000 movs r0, #0 13c08: e7c6 b.n 13b98 result = (uint32_t)(txt[*i] & 0x0F) << 12; 13c0a: 031b lsls r3, r3, #12 13c0c: b29b uxth r3, r3 result += (txt[*i] & 0x3F); 13c0e: f000 003f and.w r0, r0, #63 ; 0x3f 13c12: 4403 add r3, r0 result += (uint32_t)(txt[*i] & 0x3F) << 6; 13c14: 0188 lsls r0, r1, #6 13c16: f400 607c and.w r0, r0, #4032 ; 0xfc0 result += (txt[*i] & 0x3F); 13c1a: 4418 add r0, r3 (*i)++; 13c1c: 3203 adds r2, #3 13c1e: 6022 str r2, [r4, #0] 13c20: e7ba b.n 13b98 (*i)++; 13c22: 1c51 adds r1, r2, #1 13c24: 6021 str r1, [r4, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 13c26: 5c41 ldrb r1, [r0, r1] 13c28: f001 05c0 and.w r5, r1, #192 ; 0xc0 13c2c: 2d80 cmp r5, #128 ; 0x80 13c2e: d001 beq.n 13c34 13c30: 2000 movs r0, #0 13c32: e7b1 b.n 13b98 (*i)++; 13c34: 1c95 adds r5, r2, #2 13c36: 6025 str r5, [r4, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 13c38: 5d45 ldrb r5, [r0, r5] 13c3a: f005 06c0 and.w r6, r5, #192 ; 0xc0 13c3e: 2e80 cmp r6, #128 ; 0x80 13c40: d001 beq.n 13c46 13c42: 2000 movs r0, #0 13c44: e7a8 b.n 13b98 (*i)++; 13c46: 1cd6 adds r6, r2, #3 13c48: 6026 str r6, [r4, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 13c4a: 5d86 ldrb r6, [r0, r6] 13c4c: f006 00c0 and.w r0, r6, #192 ; 0xc0 13c50: 2880 cmp r0, #128 ; 0x80 13c52: d001 beq.n 13c58 13c54: 2000 movs r0, #0 13c56: e79f b.n 13b98 result = (uint32_t)(txt[*i] & 0x07) << 18; 13c58: 049b lsls r3, r3, #18 13c5a: f403 13e0 and.w r3, r3, #1835008 ; 0x1c0000 result += (uint32_t)(txt[*i] & 0x3F) << 12; 13c5e: 0309 lsls r1, r1, #12 13c60: f401 307c and.w r0, r1, #258048 ; 0x3f000 13c64: 4303 orrs r3, r0 result += (uint32_t)(txt[*i] & 0x3F) << 6; 13c66: 01a8 lsls r0, r5, #6 13c68: f400 607c and.w r0, r0, #4032 ; 0xfc0 result += txt[*i] & 0x3F; 13c6c: f006 063f and.w r6, r6, #63 ; 0x3f 13c70: 4430 add r0, r6 13c72: 4418 add r0, r3 (*i)++; 13c74: 3204 adds r2, #4 13c76: 6022 str r2, [r4, #0] 13c78: e78e b.n 13b98 ... 00013c7c : * @param i start byte index in 'txt' where to start. After the call it will point to the previous * UTF-8 char in 'txt'. * @return the decoded Unicode character or 0 on invalid UTF-8 code */ static uint32_t lv_txt_utf8_prev(const char * txt, uint32_t * i) { 13c7c: b5f0 push {r4, r5, r6, r7, lr} 13c7e: b083 sub sp, #12 13c80: 4606 mov r6, r0 13c82: 460d mov r5, r1 uint8_t c_size; uint8_t cnt = 0; /*Try to find a !0 long UTF-8 char by stepping one character back*/ (*i)--; 13c84: 680b ldr r3, [r1, #0] 13c86: 3b01 subs r3, #1 13c88: 600b str r3, [r1, #0] 13c8a: 2404 movs r4, #4 do { if(cnt >= 4) return 0; /*No UTF-8 char found before the initial*/ c_size = _lv_txt_encoded_size(&txt[*i]); 13c8c: 4f0e ldr r7, [pc, #56] ; (13cc8 ) 13c8e: e005 b.n 13c9c if(c_size == 0) { if(*i != 0) (*i)--; 13c90: 3801 subs r0, #1 13c92: 6028 str r0, [r5, #0] 13c94: 1e63 subs r3, r4, #1 if(cnt >= 4) return 0; /*No UTF-8 char found before the initial*/ 13c96: f013 04ff ands.w r4, r3, #255 ; 0xff 13c9a: d008 beq.n 13cae c_size = _lv_txt_encoded_size(&txt[*i]); 13c9c: 6828 ldr r0, [r5, #0] 13c9e: 4430 add r0, r6 13ca0: 683b ldr r3, [r7, #0] 13ca2: 4798 blx r3 if(c_size == 0) { 13ca4: b928 cbnz r0, 13cb2 if(*i != 0) 13ca6: 6828 ldr r0, [r5, #0] 13ca8: 2800 cmp r0, #0 13caa: d1f1 bne.n 13c90 13cac: e009 b.n 13cc2 if(cnt >= 4) return 0; /*No UTF-8 char found before the initial*/ 13cae: 2000 movs r0, #0 13cb0: e007 b.n 13cc2 return 0; } cnt++; } while(c_size == 0); uint32_t i_tmp = *i; 13cb2: 682b ldr r3, [r5, #0] 13cb4: a902 add r1, sp, #8 13cb6: f841 3d04 str.w r3, [r1, #-4]! uint32_t letter = _lv_txt_encoded_next(txt, &i_tmp); /*Character found, get it*/ 13cba: 4b03 ldr r3, [pc, #12] ; (13cc8 ) 13cbc: 685b ldr r3, [r3, #4] 13cbe: 4630 mov r0, r6 13cc0: 4798 blx r3 return letter; } 13cc2: b003 add sp, #12 13cc4: bdf0 pop {r4, r5, r6, r7, pc} 13cc6: bf00 nop 13cc8: 20000054 .word 0x20000054 00013ccc : * @param txt a '\0' terminated UTF-8 string * @param utf8_id character index * @return byte index of the 'utf8_id'th letter */ static uint32_t lv_txt_utf8_get_byte_id(const char * txt, uint32_t utf8_id) { 13ccc: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} uint32_t i; uint32_t byte_cnt = 0; for(i = 0; i < utf8_id; i++) { 13cd0: 460e mov r6, r1 13cd2: b191 cbz r1, 13cfa 13cd4: 4607 mov r7, r0 13cd6: 2400 movs r4, #0 13cd8: 4625 mov r5, r4 uint8_t c_size = _lv_txt_encoded_size(&txt[byte_cnt]); 13cda: f8df 8024 ldr.w r8, [pc, #36] ; 13d00 13cde: 1938 adds r0, r7, r4 13ce0: f8d8 3000 ldr.w r3, [r8] 13ce4: 4798 blx r3 byte_cnt += c_size > 0 ? c_size : 1; 13ce6: 2800 cmp r0, #0 13ce8: bf08 it eq 13cea: 2001 moveq r0, #1 13cec: 4404 add r4, r0 for(i = 0; i < utf8_id; i++) { 13cee: 3501 adds r5, #1 13cf0: 42ae cmp r6, r5 13cf2: d1f4 bne.n 13cde } return byte_cnt; } 13cf4: 4620 mov r0, r4 13cf6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} uint32_t byte_cnt = 0; 13cfa: 460c mov r4, r1 return byte_cnt; 13cfc: e7fa b.n 13cf4 13cfe: bf00 nop 13d00: 20000054 .word 0x20000054 00013d04 : * @param txt a '\0' terminated UTF-8 string * @param byte_id byte index * @return character index of the letter at 'byte_id'th position */ static uint32_t lv_txt_utf8_get_char_id(const char * txt, uint32_t byte_id) { 13d04: b5f0 push {r4, r5, r6, r7, lr} 13d06: b083 sub sp, #12 uint32_t i = 0; 13d08: 2300 movs r3, #0 13d0a: 9301 str r3, [sp, #4] uint32_t char_cnt = 0; while(i < byte_id) { 13d0c: 460d mov r5, r1 13d0e: b169 cbz r1, 13d2c 13d10: 4606 mov r6, r0 13d12: 461c mov r4, r3 _lv_txt_encoded_next(txt, &i); /*'i' points to the next letter so use the prev. value*/ 13d14: 4f06 ldr r7, [pc, #24] ; (13d30 ) 13d16: a901 add r1, sp, #4 13d18: 4630 mov r0, r6 13d1a: 687b ldr r3, [r7, #4] 13d1c: 4798 blx r3 char_cnt++; 13d1e: 3401 adds r4, #1 while(i < byte_id) { 13d20: 9b01 ldr r3, [sp, #4] 13d22: 42ab cmp r3, r5 13d24: d3f7 bcc.n 13d16 } return char_cnt; } 13d26: 4620 mov r0, r4 13d28: b003 add sp, #12 13d2a: bdf0 pop {r4, r5, r6, r7, pc} uint32_t char_cnt = 0; 13d2c: 460c mov r4, r1 return char_cnt; 13d2e: e7fa b.n 13d26 13d30: 20000054 .word 0x20000054 00013d34 : * E.g.: "ÁBC" is 3 characters (but 4 bytes) * @param txt a '\0' terminated char string * @return number of characters */ static uint32_t lv_txt_utf8_get_length(const char * txt) { 13d34: b570 push {r4, r5, r6, lr} 13d36: b082 sub sp, #8 uint32_t len = 0; uint32_t i = 0; 13d38: 2300 movs r3, #0 13d3a: 9301 str r3, [sp, #4] while(txt[i] != '\0') { 13d3c: 7803 ldrb r3, [r0, #0] 13d3e: b173 cbz r3, 13d5e 13d40: 4604 mov r4, r0 13d42: 2500 movs r5, #0 _lv_txt_encoded_next(txt, &i); 13d44: 4e07 ldr r6, [pc, #28] ; (13d64 ) 13d46: a901 add r1, sp, #4 13d48: 4620 mov r0, r4 13d4a: 6873 ldr r3, [r6, #4] 13d4c: 4798 blx r3 len++; 13d4e: 3501 adds r5, #1 while(txt[i] != '\0') { 13d50: 9b01 ldr r3, [sp, #4] 13d52: 5ce3 ldrb r3, [r4, r3] 13d54: 2b00 cmp r3, #0 13d56: d1f6 bne.n 13d46 } return len; } 13d58: 4628 mov r0, r5 13d5a: b002 add sp, #8 13d5c: bd70 pop {r4, r5, r6, pc} uint32_t len = 0; 13d5e: 2500 movs r5, #0 return len; 13d60: e7fa b.n 13d58 13d62: bf00 nop 13d64: 20000054 .word 0x20000054 00013d68 <_lv_txt_is_cmd>: if(c == (uint32_t)LV_TXT_COLOR_CMD[0]) { 13d68: 2923 cmp r1, #35 ; 0x23 13d6a: d004 beq.n 13d76 <_lv_txt_is_cmd+0xe> if(*state == LV_TXT_CMD_STATE_PAR) { 13d6c: 7803 ldrb r3, [r0, #0] 13d6e: 2b01 cmp r3, #1 13d70: d015 beq.n 13d9e <_lv_txt_is_cmd+0x36> bool ret = false; 13d72: 2000 movs r0, #0 13d74: 4770 bx lr if(*state == LV_TXT_CMD_STATE_WAIT) { /*Start char*/ 13d76: 7803 ldrb r3, [r0, #0] 13d78: b91b cbnz r3, 13d82 <_lv_txt_is_cmd+0x1a> *state = LV_TXT_CMD_STATE_PAR; 13d7a: 2301 movs r3, #1 13d7c: 7003 strb r3, [r0, #0] ret = true; 13d7e: 4618 mov r0, r3 13d80: 4770 bx lr else if(*state == LV_TXT_CMD_STATE_PAR) { 13d82: 2b01 cmp r3, #1 13d84: d003 beq.n 13d8e <_lv_txt_is_cmd+0x26> else if(*state == LV_TXT_CMD_STATE_IN) { 13d86: 2b02 cmp r3, #2 13d88: d005 beq.n 13d96 <_lv_txt_is_cmd+0x2e> bool ret = false; 13d8a: 2000 movs r0, #0 } 13d8c: 4770 bx lr *state = LV_TXT_CMD_STATE_WAIT; 13d8e: 2300 movs r3, #0 13d90: 7003 strb r3, [r0, #0] bool ret = false; 13d92: 4618 mov r0, r3 13d94: 4770 bx lr *state = LV_TXT_CMD_STATE_WAIT; 13d96: 2300 movs r3, #0 13d98: 7003 strb r3, [r0, #0] ret = true; 13d9a: 2001 movs r0, #1 13d9c: 4770 bx lr if(c == ' ') { 13d9e: 2920 cmp r1, #32 13da0: d103 bne.n 13daa <_lv_txt_is_cmd+0x42> *state = LV_TXT_CMD_STATE_IN; /*After the parameter the text is in the command*/ 13da2: 2302 movs r3, #2 13da4: 7003 strb r3, [r0, #0] ret = true; 13da6: 2001 movs r0, #1 13da8: 4770 bx lr 13daa: 2001 movs r0, #1 13dac: 4770 bx lr ... 00013db0 <_lv_txt_get_next_line>: { 13db0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 13db4: b091 sub sp, #68 ; 0x44 13db6: 9105 str r1, [sp, #20] 13db8: 9206 str r2, [sp, #24] 13dba: 9307 str r3, [sp, #28] 13dbc: f89d 3068 ldrb.w r3, [sp, #104] ; 0x68 13dc0: 9304 str r3, [sp, #16] if(txt == NULL) return 0; 13dc2: 9008 str r0, [sp, #32] 13dc4: 2800 cmp r0, #0 13dc6: f000 80f0 beq.w 13faa <_lv_txt_get_next_line+0x1fa> if(font == NULL) return 0; 13dca: 2900 cmp r1, #0 13dcc: f000 80ef beq.w 13fae <_lv_txt_get_next_line+0x1fe> if((flag & LV_TXT_FLAG_EXPAND) || (flag & LV_TXT_FLAG_FIT)) { 13dd0: f013 0f12 tst.w r3, #18 13dd4: d017 beq.n 13e06 <_lv_txt_get_next_line+0x56> for(i = 0; txt[i] != '\n' && txt[i] != '\r' && txt[i] != '\0'; i++) { 13dd6: 7803 ldrb r3, [r0, #0] 13dd8: 2b0a cmp r3, #10 13dda: f000 80ea beq.w 13fb2 <_lv_txt_get_next_line+0x202> 13dde: 2b0d cmp r3, #13 13de0: f000 80ed beq.w 13fbe <_lv_txt_get_next_line+0x20e> 13de4: 2b00 cmp r3, #0 13de6: f000 80ec beq.w 13fc2 <_lv_txt_get_next_line+0x212> 13dea: 4601 mov r1, r0 13dec: 2200 movs r2, #0 13dee: 3201 adds r2, #1 13df0: f811 3f01 ldrb.w r3, [r1, #1]! 13df4: 2b0a cmp r3, #10 13df6: f000 80dd beq.w 13fb4 <_lv_txt_get_next_line+0x204> 13dfa: 2b0d cmp r3, #13 13dfc: f000 80da beq.w 13fb4 <_lv_txt_get_next_line+0x204> 13e00: 2b00 cmp r3, #0 13e02: d1f4 bne.n 13dee <_lv_txt_get_next_line+0x3e> 13e04: e0d7 b.n 13fb6 <_lv_txt_get_next_line+0x206> 13e06: 9b04 ldr r3, [sp, #16] 13e08: f003 0302 and.w r3, r3, #2 13e0c: 461a mov r2, r3 13e0e: 930b str r3, [sp, #44] ; 0x2c if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX; 13e10: f647 4318 movw r3, #31768 ; 0x7c18 13e14: 9907 ldr r1, [sp, #28] 13e16: 2a00 cmp r2, #0 13e18: bf18 it ne 13e1a: 4619 movne r1, r3 13e1c: 9107 str r1, [sp, #28] lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; 13e1e: 2300 movs r3, #0 13e20: f88d 303f strb.w r3, [sp, #63] ; 0x3f uint32_t i = 0; /* Iterating index into txt */ 13e24: 930e str r3, [sp, #56] ; 0x38 letter = _lv_txt_encoded_next(txt, &i_next); 13e26: f8df 91ac ldr.w r9, [pc, #428] ; 13fd4 <_lv_txt_get_next_line+0x224> { uint8_t i; bool ret = false; /*Compare the letter to TXT_BREAK_CHARS*/ for(i = 0; LV_TXT_BREAK_CHARS[i] != '\0'; i++) { 13e2a: f8df a1ac ldr.w sl, [pc, #428] ; 13fd8 <_lv_txt_get_next_line+0x228> while(txt[i] != '\0' && max_width > 0) { 13e2e: e078 b.n 13f22 <_lv_txt_get_next_line+0x172> letter_w = lv_font_get_glyph_width(font, letter, letter_next); 13e30: 9a01 ldr r2, [sp, #4] 13e32: 4621 mov r1, r4 13e34: 9805 ldr r0, [sp, #20] 13e36: 4b64 ldr r3, [pc, #400] ; (13fc8 <_lv_txt_get_next_line+0x218>) 13e38: 4798 blx r3 cur_w += letter_w; 13e3a: 4405 add r5, r0 13e3c: b2ad uxth r5, r5 if(letter_w > 0) { 13e3e: b200 sxth r0, r0 13e40: 2800 cmp r0, #0 13e42: dd02 ble.n 13e4a <_lv_txt_get_next_line+0x9a> cur_w += letter_space; 13e44: 9b06 ldr r3, [sp, #24] 13e46: 441d add r5, r3 13e48: b2ad uxth r5, r5 13e4a: b22d sxth r5, r5 if(break_index == NO_BREAK_FOUND && (cur_w - letter_space) > max_width) { 13e4c: f1b7 3fff cmp.w r7, #4294967295 13e50: d038 beq.n 13ec4 <_lv_txt_get_next_line+0x114> if(letter == '\n' || letter == '\r' || is_break_char(letter)) { 13e52: f1a4 020a sub.w r2, r4, #10 13e56: 2a16 cmp r2, #22 13e58: d83b bhi.n 13ed2 <_lv_txt_get_next_line+0x122> 13e5a: 4b5c ldr r3, [pc, #368] ; (13fcc <_lv_txt_get_next_line+0x21c>) 13e5c: 40d3 lsrs r3, r2 13e5e: f013 0f01 tst.w r3, #1 13e62: d139 bne.n 13ed8 <_lv_txt_get_next_line+0x128> 13e64: 2301 movs r3, #1 13e66: 222c movs r2, #44 ; 0x2c if(letter == (uint32_t)LV_TXT_BREAK_CHARS[i]) { 13e68: 4294 cmp r4, r2 13e6a: d035 beq.n 13ed8 <_lv_txt_get_next_line+0x128> for(i = 0; LV_TXT_BREAK_CHARS[i] != '\0'; i++) { 13e6c: 3301 adds r3, #1 13e6e: b2db uxtb r3, r3 13e70: f81a 2003 ldrb.w r2, [sl, r3] 13e74: 2a00 cmp r2, #0 13e76: d1f7 bne.n 13e68 <_lv_txt_get_next_line+0xb8> if(word_w_ptr != NULL && break_index == NO_BREAK_FOUND) *word_w_ptr = cur_w; 13e78: f1b7 3fff cmp.w r7, #4294967295 13e7c: bf08 it eq 13e7e: 46ab moveq fp, r5 i = i_next; 13e80: 9e0c ldr r6, [sp, #48] ; 0x30 i_next = i_next_next; 13e82: 9b0d ldr r3, [sp, #52] ; 0x34 13e84: 930c str r3, [sp, #48] ; 0x30 letter_next = _lv_txt_encoded_next(txt, &i_next_next); 13e86: 9b03 ldr r3, [sp, #12] 13e88: 9302 str r3, [sp, #8] 13e8a: 9c01 ldr r4, [sp, #4] while(txt[i] != '\0') { 13e8c: f818 3006 ldrb.w r3, [r8, r6] 13e90: 2b00 cmp r3, #0 13e92: d06e beq.n 13f72 <_lv_txt_get_next_line+0x1c2> letter_next = _lv_txt_encoded_next(txt, &i_next_next); 13e94: f8d9 3004 ldr.w r3, [r9, #4] 13e98: a90d add r1, sp, #52 ; 0x34 13e9a: 4640 mov r0, r8 13e9c: 4798 blx r3 13e9e: 9001 str r0, [sp, #4] word_len++; 13ea0: 9b02 ldr r3, [sp, #8] 13ea2: 3301 adds r3, #1 13ea4: 9303 str r3, [sp, #12] if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 13ea6: 9b04 ldr r3, [sp, #16] 13ea8: f013 0f01 tst.w r3, #1 13eac: d0c0 beq.n 13e30 <_lv_txt_get_next_line+0x80> if(_lv_txt_is_cmd(cmd_state, letter) != false) { 13eae: 4621 mov r1, r4 13eb0: f10d 003f add.w r0, sp, #63 ; 0x3f 13eb4: 4b46 ldr r3, [pc, #280] ; (13fd0 <_lv_txt_get_next_line+0x220>) 13eb6: 4798 blx r3 13eb8: 2800 cmp r0, #0 13eba: d0b9 beq.n 13e30 <_lv_txt_get_next_line+0x80> i = i_next; 13ebc: 9e0c ldr r6, [sp, #48] ; 0x30 i_next = i_next_next; 13ebe: 9b0d ldr r3, [sp, #52] ; 0x34 13ec0: 930c str r3, [sp, #48] ; 0x30 13ec2: e7e0 b.n 13e86 <_lv_txt_get_next_line+0xd6> if(break_index == NO_BREAK_FOUND && (cur_w - letter_space) > max_width) { 13ec4: 9b06 ldr r3, [sp, #24] 13ec6: 1aeb subs r3, r5, r3 13ec8: 9a09 ldr r2, [sp, #36] ; 0x24 13eca: 4293 cmp r3, r2 13ecc: bfc8 it gt 13ece: 4637 movgt r7, r6 13ed0: e7bf b.n 13e52 <_lv_txt_get_next_line+0xa2> if(letter == '\n' || letter == '\r' || is_break_char(letter)) { 13ed2: 2301 movs r3, #1 13ed4: 222c movs r2, #44 ; 0x2c 13ed6: e7c7 b.n 13e68 <_lv_txt_get_next_line+0xb8> if(i == 0 && break_index == NO_BREAK_FOUND && word_w_ptr != NULL) *word_w_ptr = cur_w; 13ed8: 2e00 cmp r6, #0 13eda: d14a bne.n 13f72 <_lv_txt_get_next_line+0x1c2> 13edc: f1b7 3fff cmp.w r7, #4294967295 13ee0: d14a bne.n 13f78 <_lv_txt_get_next_line+0x1c8> 13ee2: 46ab mov fp, r5 if(word_len == 0 || (letter == '\r' && letter_next == '\n')) i = i_next; 13ee4: 9b02 ldr r3, [sp, #8] 13ee6: b123 cbz r3, 13ef2 <_lv_txt_get_next_line+0x142> 13ee8: 2c0d cmp r4, #13 13eea: d103 bne.n 13ef4 <_lv_txt_get_next_line+0x144> 13eec: 9b01 ldr r3, [sp, #4] 13eee: 2b0a cmp r3, #10 13ef0: d100 bne.n 13ef4 <_lv_txt_get_next_line+0x144> 13ef2: 9e0c ldr r6, [sp, #48] ; 0x30 return i; 13ef4: b2b6 uxth r6, r6 max_width -= word_w; 13ef6: 9b07 ldr r3, [sp, #28] 13ef8: eba3 0b0b sub.w fp, r3, fp 13efc: fa0f f38b sxth.w r3, fp 13f00: 9307 str r3, [sp, #28] if(advance == 0) { 13f02: 2e00 cmp r6, #0 13f04: d03a beq.n 13f7c <_lv_txt_get_next_line+0x1cc> i += advance; 13f06: 9f0e ldr r7, [sp, #56] ; 0x38 13f08: 443e add r6, r7 13f0a: 960e str r6, [sp, #56] ; 0x38 if(txt[0] == '\n' || txt[0] == '\r') break; 13f0c: 9a08 ldr r2, [sp, #32] 13f0e: 7813 ldrb r3, [r2, #0] 13f10: 2b0a cmp r3, #10 13f12: d03f beq.n 13f94 <_lv_txt_get_next_line+0x1e4> 13f14: 2b0d cmp r3, #13 13f16: d03d beq.n 13f94 <_lv_txt_get_next_line+0x1e4> if(txt[i] == '\n' || txt[i] == '\r') { 13f18: 5d93 ldrb r3, [r2, r6] 13f1a: 2b0a cmp r3, #10 13f1c: d038 beq.n 13f90 <_lv_txt_get_next_line+0x1e0> 13f1e: 2b0d cmp r3, #13 13f20: d036 beq.n 13f90 <_lv_txt_get_next_line+0x1e0> while(txt[i] != '\0' && max_width > 0) { 13f22: 9b0e ldr r3, [sp, #56] ; 0x38 13f24: 930a str r3, [sp, #40] ; 0x28 13f26: 9908 ldr r1, [sp, #32] 13f28: eb01 0803 add.w r8, r1, r3 13f2c: 5ccb ldrb r3, [r1, r3] 13f2e: 2b00 cmp r3, #0 13f30: d030 beq.n 13f94 <_lv_txt_get_next_line+0x1e4> 13f32: 9b07 ldr r3, [sp, #28] 13f34: 2b00 cmp r3, #0 13f36: dd2d ble.n 13f94 <_lv_txt_get_next_line+0x1e4> if(txt == NULL || txt[0] == '\0') return 0; 13f38: f1b8 0f00 cmp.w r8, #0 13f3c: d01e beq.n 13f7c <_lv_txt_get_next_line+0x1cc> if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX; 13f3e: f647 4318 movw r3, #31768 ; 0x7c18 13f42: 9a07 ldr r2, [sp, #28] 13f44: 990b ldr r1, [sp, #44] ; 0x2c 13f46: 2900 cmp r1, #0 13f48: bf08 it eq 13f4a: 4613 moveq r3, r2 13f4c: 9309 str r3, [sp, #36] ; 0x24 uint32_t i = 0, i_next = 0, i_next_next = 0; /* Iterating index into txt */ 13f4e: 2600 movs r6, #0 13f50: 960c str r6, [sp, #48] ; 0x30 13f52: 960d str r6, [sp, #52] ; 0x34 letter = _lv_txt_encoded_next(txt, &i_next); 13f54: f8d9 3004 ldr.w r3, [r9, #4] 13f58: a90c add r1, sp, #48 ; 0x30 13f5a: 4640 mov r0, r8 13f5c: 4798 blx r3 13f5e: 4604 mov r4, r0 i_next_next = i_next; 13f60: 9b0c ldr r3, [sp, #48] ; 0x30 13f62: 930d str r3, [sp, #52] ; 0x34 uint32_t word_w = 0; 13f64: 46b3 mov fp, r6 uint32_t break_index = NO_BREAK_FOUND; /* only used for "long" words */ 13f66: f04f 37ff mov.w r7, #4294967295 uint32_t word_len = 0; /* Number of characters in the transversed word */ 13f6a: 9602 str r6, [sp, #8] lv_coord_t cur_w = 0; /* Pixel Width of transversed string */ 13f6c: 4635 mov r5, r6 uint32_t letter_next = 0; /* Letter at i_next */ 13f6e: 9601 str r6, [sp, #4] 13f70: e78c b.n 13e8c <_lv_txt_get_next_line+0xdc> if(break_index == NO_BREAK_FOUND) { 13f72: f1b7 3fff cmp.w r7, #4294967295 13f76: d0b5 beq.n 13ee4 <_lv_txt_get_next_line+0x134> if(force) return break_index; 13f78: 9b0a ldr r3, [sp, #40] ; 0x28 13f7a: b13b cbz r3, 13f8c <_lv_txt_get_next_line+0x1dc> if(i == 0) _lv_txt_encoded_next(txt, &i); // prevent inf loops 13f7c: 9b0e ldr r3, [sp, #56] ; 0x38 13f7e: b95b cbnz r3, 13f98 <_lv_txt_get_next_line+0x1e8> 13f80: 4b14 ldr r3, [pc, #80] ; (13fd4 <_lv_txt_get_next_line+0x224>) 13f82: 685b ldr r3, [r3, #4] 13f84: a90e add r1, sp, #56 ; 0x38 13f86: 9808 ldr r0, [sp, #32] 13f88: 4798 blx r3 13f8a: e003 b.n 13f94 <_lv_txt_get_next_line+0x1e4> if(force) return break_index; 13f8c: b2be uxth r6, r7 13f8e: e7b2 b.n 13ef6 <_lv_txt_get_next_line+0x146> i++; /* Include the following newline in the current line */ 13f90: 3601 adds r6, #1 13f92: 960e str r6, [sp, #56] ; 0x38 if(i == 0) { 13f94: 9b0e ldr r3, [sp, #56] ; 0x38 13f96: b113 cbz r3, 13f9e <_lv_txt_get_next_line+0x1ee> return i; 13f98: f8bd 0038 ldrh.w r0, [sp, #56] ; 0x38 13f9c: e00c b.n 13fb8 <_lv_txt_get_next_line+0x208> _lv_txt_encoded_next(txt, &i); 13f9e: 4b0d ldr r3, [pc, #52] ; (13fd4 <_lv_txt_get_next_line+0x224>) 13fa0: 685b ldr r3, [r3, #4] 13fa2: a90e add r1, sp, #56 ; 0x38 13fa4: 9808 ldr r0, [sp, #32] 13fa6: 4798 blx r3 13fa8: e7f6 b.n 13f98 <_lv_txt_get_next_line+0x1e8> if(txt == NULL) return 0; 13faa: 2000 movs r0, #0 13fac: e004 b.n 13fb8 <_lv_txt_get_next_line+0x208> if(font == NULL) return 0; 13fae: 2000 movs r0, #0 13fb0: e002 b.n 13fb8 <_lv_txt_get_next_line+0x208> for(i = 0; txt[i] != '\n' && txt[i] != '\r' && txt[i] != '\0'; i++) { 13fb2: 2200 movs r2, #0 if(txt[i] != '\0') i++; /*To go beyond `\n`*/ 13fb4: 3201 adds r2, #1 return i; 13fb6: b290 uxth r0, r2 } 13fb8: b011 add sp, #68 ; 0x44 13fba: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} for(i = 0; txt[i] != '\n' && txt[i] != '\r' && txt[i] != '\0'; i++) { 13fbe: 2200 movs r2, #0 13fc0: e7f8 b.n 13fb4 <_lv_txt_get_next_line+0x204> 13fc2: 2200 movs r2, #0 13fc4: e7f7 b.n 13fb6 <_lv_txt_get_next_line+0x206> 13fc6: bf00 nop 13fc8: 00010061 .word 0x00010061 13fcc: 00400009 .word 0x00400009 13fd0: 00013d69 .word 0x00013d69 13fd4: 20000054 .word 0x20000054 13fd8: 00029514 .word 0x00029514 00013fdc <_lv_txt_get_width>: { 13fdc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 13fe0: b085 sub sp, #20 if(txt == NULL) return 0; 13fe2: 2800 cmp r0, #0 13fe4: d040 beq.n 14068 <_lv_txt_get_width+0x8c> 13fe6: 4605 mov r5, r0 if(font == NULL) return 0; 13fe8: 2a00 cmp r2, #0 13fea: d03f beq.n 1406c <_lv_txt_get_width+0x90> uint32_t i = 0; 13fec: 2000 movs r0, #0 13fee: 9003 str r0, [sp, #12] lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; 13ff0: f88d 000b strb.w r0, [sp, #11] if(length != 0) { 13ff4: b149 cbz r1, 1400a <_lv_txt_get_width+0x2e> 13ff6: 469b mov fp, r3 13ff8: 9201 str r2, [sp, #4] 13ffa: 4689 mov r9, r1 13ffc: 2400 movs r4, #0 uint32_t letter = _lv_txt_encoded_next(txt, &i); 13ffe: 4f1c ldr r7, [pc, #112] ; (14070 <_lv_txt_get_width+0x94>) if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 14000: f89d a038 ldrb.w sl, [sp, #56] ; 0x38 14004: f00a 0a01 and.w sl, sl, #1 14008: e00c b.n 14024 <_lv_txt_get_width+0x48> lv_coord_t width = 0; 1400a: 4604 mov r4, r0 1400c: e028 b.n 14060 <_lv_txt_get_width+0x84> lv_coord_t char_width = lv_font_get_glyph_width(font, letter, letter_next); 1400e: 4642 mov r2, r8 14010: 4631 mov r1, r6 14012: 9801 ldr r0, [sp, #4] 14014: 4b17 ldr r3, [pc, #92] ; (14074 <_lv_txt_get_width+0x98>) 14016: 4798 blx r3 if(char_width > 0) { 14018: b203 sxth r3, r0 1401a: 2b00 cmp r3, #0 1401c: dd02 ble.n 14024 <_lv_txt_get_width+0x48> width += letter_space; 1401e: 445c add r4, fp 14020: 4404 add r4, r0 14022: b224 sxth r4, r4 while(i < length) { 14024: 9b03 ldr r3, [sp, #12] 14026: 4599 cmp r9, r3 14028: d915 bls.n 14056 <_lv_txt_get_width+0x7a> uint32_t letter = _lv_txt_encoded_next(txt, &i); 1402a: 687b ldr r3, [r7, #4] 1402c: a903 add r1, sp, #12 1402e: 4628 mov r0, r5 14030: 4798 blx r3 14032: 4606 mov r6, r0 uint32_t letter_next = _lv_txt_encoded_next(&txt[i], NULL); 14034: 687b ldr r3, [r7, #4] 14036: 2100 movs r1, #0 14038: 9803 ldr r0, [sp, #12] 1403a: 4428 add r0, r5 1403c: 4798 blx r3 1403e: 4680 mov r8, r0 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 14040: f1ba 0f00 cmp.w sl, #0 14044: d0e3 beq.n 1400e <_lv_txt_get_width+0x32> if(_lv_txt_is_cmd(&cmd_state, letter) != false) { 14046: 4631 mov r1, r6 14048: f10d 000b add.w r0, sp, #11 1404c: 4b0a ldr r3, [pc, #40] ; (14078 <_lv_txt_get_width+0x9c>) 1404e: 4798 blx r3 14050: 2800 cmp r0, #0 14052: d1e7 bne.n 14024 <_lv_txt_get_width+0x48> 14054: e7db b.n 1400e <_lv_txt_get_width+0x32> if(width > 0) { 14056: 2c00 cmp r4, #0 14058: dd02 ble.n 14060 <_lv_txt_get_width+0x84> width -= letter_space; /*Trim the last letter space. Important if the text is center 1405a: eba4 040b sub.w r4, r4, fp 1405e: b224 sxth r4, r4 } 14060: 4620 mov r0, r4 14062: b005 add sp, #20 14064: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(txt == NULL) return 0; 14068: 2400 movs r4, #0 1406a: e7f9 b.n 14060 <_lv_txt_get_width+0x84> if(font == NULL) return 0; 1406c: 2400 movs r4, #0 1406e: e7f7 b.n 14060 <_lv_txt_get_width+0x84> 14070: 20000054 .word 0x20000054 14074: 00010061 .word 0x00010061 14078: 00013d69 .word 0x00013d69 0001407c <_lv_txt_get_size>: { 1407c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 14080: b089 sub sp, #36 ; 0x24 14082: f9bd 4048 ldrsh.w r4, [sp, #72] ; 0x48 14086: 9406 str r4, [sp, #24] 14088: f9bd 504c ldrsh.w r5, [sp, #76] ; 0x4c 1408c: f89d 8050 ldrb.w r8, [sp, #80] ; 0x50 size_res->x = 0; 14090: 2400 movs r4, #0 14092: 8004 strh r4, [r0, #0] size_res->y = 0; 14094: 8044 strh r4, [r0, #2] if(text == NULL) return; 14096: 2900 cmp r1, #0 14098: d05b beq.n 14152 <_lv_txt_get_size+0xd6> 1409a: 460f mov r7, r1 if(font == NULL) return; 1409c: 2a00 cmp r2, #0 1409e: d058 beq.n 14152 <_lv_txt_get_size+0xd6> 140a0: 9303 str r3, [sp, #12] 140a2: 4611 mov r1, r2 140a4: 9202 str r2, [sp, #8] 140a6: 4604 mov r4, r0 if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX; 140a8: f008 0302 and.w r3, r8, #2 140ac: f647 4218 movw r2, #31768 ; 0x7c18 140b0: 2b00 cmp r3, #0 140b2: bf18 it ne 140b4: 4615 movne r5, r2 140b6: 9504 str r5, [sp, #16] * @param font_p pointer to a font * @return the height of a font */ static inline lv_coord_t lv_font_get_line_height(const lv_font_t * font_p) { return font_p->line_height; 140b8: f9b1 2008 ldrsh.w r2, [r1, #8] 140bc: 9207 str r2, [sp, #28] uint16_t letter_height = lv_font_get_line_height(font); 140be: fa1f fa82 uxth.w sl, r2 while(text[line_start] != '\0') { 140c2: 783b ldrb r3, [r7, #0] 140c4: 2b00 cmp r3, #0 140c6: d04c beq.n 14162 <_lv_txt_get_size+0xe6> 140c8: 463e mov r6, r7 140ca: 2500 movs r5, #0 new_line_start += _lv_txt_get_next_line(&text[line_start], font, letter_space, max_width, flag); 140cc: f8df b0b0 ldr.w fp, [pc, #176] ; 14180 <_lv_txt_get_size+0x104> if((unsigned long)size_res->y + (unsigned long)letter_height + (unsigned long)line_space > LV_MAX_OF(lv_coord_t)) { 140d0: 9b06 ldr r3, [sp, #24] 140d2: 449a add sl, r3 140d4: fa1f f98a uxth.w r9, sl 140d8: 4647 mov r7, r8 140da: 46b0 mov r8, r6 new_line_start += _lv_txt_get_next_line(&text[line_start], font, letter_space, max_width, flag); 140dc: 9700 str r7, [sp, #0] 140de: 9b04 ldr r3, [sp, #16] 140e0: 9a03 ldr r2, [sp, #12] 140e2: 9902 ldr r1, [sp, #8] 140e4: 4630 mov r0, r6 140e6: 47d8 blx fp 140e8: 4405 add r5, r0 if((unsigned long)size_res->y + (unsigned long)letter_height + (unsigned long)line_space > LV_MAX_OF(lv_coord_t)) { 140ea: f9b4 3002 ldrsh.w r3, [r4, #2] 140ee: eb0a 0203 add.w r2, sl, r3 140f2: f5b2 4f00 cmp.w r2, #32768 ; 0x8000 140f6: d224 bcs.n 14142 <_lv_txt_get_size+0xc6> 140f8: f8cd 9014 str.w r9, [sp, #20] size_res->y += line_space; 140fc: 444b add r3, r9 140fe: 8063 strh r3, [r4, #2] lv_coord_t act_line_length = _lv_txt_get_width(&text[line_start], new_line_start - line_start, font, letter_space, 14100: 9700 str r7, [sp, #0] 14102: 9b03 ldr r3, [sp, #12] 14104: 9a02 ldr r2, [sp, #8] 14106: 4601 mov r1, r0 14108: 4630 mov r0, r6 1410a: 4e18 ldr r6, [pc, #96] ; (1416c <_lv_txt_get_size+0xf0>) 1410c: 47b0 blx r6 size_res->x = LV_MATH_MAX(act_line_length, size_res->x); 1410e: f9b4 3000 ldrsh.w r3, [r4] 14112: 4298 cmp r0, r3 14114: bfb8 it lt 14116: 4618 movlt r0, r3 14118: 8020 strh r0, [r4, #0] while(text[line_start] != '\0') { 1411a: eb08 0605 add.w r6, r8, r5 1411e: f818 3005 ldrb.w r3, [r8, r5] 14122: 2b00 cmp r3, #0 14124: d1da bne.n 140dc <_lv_txt_get_size+0x60> if((line_start != 0) && (text[line_start - 1] == '\n' || text[line_start - 1] == '\r')) { 14126: b12d cbz r5, 14134 <_lv_txt_get_size+0xb8> 14128: f816 3c01 ldrb.w r3, [r6, #-1] 1412c: 2b0a cmp r3, #10 1412e: d013 beq.n 14158 <_lv_txt_get_size+0xdc> 14130: 2b0d cmp r3, #13 14132: d011 beq.n 14158 <_lv_txt_get_size+0xdc> if(size_res->y == 0) 14134: f9b4 3002 ldrsh.w r3, [r4, #2] 14138: b19b cbz r3, 14162 <_lv_txt_get_size+0xe6> size_res->y -= line_space; 1413a: 9a06 ldr r2, [sp, #24] 1413c: 1a9b subs r3, r3, r2 1413e: 8063 strh r3, [r4, #2] 14140: e007 b.n 14152 <_lv_txt_get_size+0xd6> LV_LOG_WARN("lv_txt_get_size: integer overflow while calculating text height"); 14142: 4b0b ldr r3, [pc, #44] ; (14170 <_lv_txt_get_size+0xf4>) 14144: 9300 str r3, [sp, #0] 14146: 4b0b ldr r3, [pc, #44] ; (14174 <_lv_txt_get_size+0xf8>) 14148: 2271 movs r2, #113 ; 0x71 1414a: 490b ldr r1, [pc, #44] ; (14178 <_lv_txt_get_size+0xfc>) 1414c: 2002 movs r0, #2 1414e: 4c0b ldr r4, [pc, #44] ; (1417c <_lv_txt_get_size+0x100>) 14150: 47a0 blx r4 } 14152: b009 add sp, #36 ; 0x24 14154: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} size_res->y += letter_height + line_space; 14158: 8863 ldrh r3, [r4, #2] 1415a: 9a05 ldr r2, [sp, #20] 1415c: 441a add r2, r3 1415e: 8062 strh r2, [r4, #2] 14160: e7e8 b.n 14134 <_lv_txt_get_size+0xb8> size_res->y = letter_height; 14162: f8bd 301c ldrh.w r3, [sp, #28] 14166: 8063 strh r3, [r4, #2] 14168: e7f3 b.n 14152 <_lv_txt_get_size+0xd6> 1416a: bf00 nop 1416c: 00013fdd .word 0x00013fdd 14170: 00029544 .word 0x00029544 14174: 00029500 .word 0x00029500 14178: 0002951c .word 0x0002951c 1417c: 0001225d .word 0x0001225d 14180: 00013db1 .word 0x00013db1 00014184 <_lv_utils_bsearch>: * * @return a pointer to a matching item, or NULL if none exists. */ void * _lv_utils_bsearch(const void * key, const void * base, uint32_t n, uint32_t size, int32_t (*cmp)(const void * pRef, const void * pElement)) { 14184: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 14188: 4681 mov r9, r0 1418a: 468a mov sl, r1 1418c: 461f mov r7, r3 1418e: f8dd 8020 ldr.w r8, [sp, #32] const char * middle; int32_t c; for(middle = base; n != 0;) { 14192: 4614 mov r4, r2 14194: b932 cbnz r2, 141a4 <_lv_utils_bsearch+0x20> } else { return (char *)middle; } } return NULL; 14196: 2000 movs r0, #0 14198: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} else if(c < 0) { 1419c: 2800 cmp r0, #0 1419e: da14 bge.n 141ca <_lv_utils_bsearch+0x46> n /= 2; 141a0: 462c mov r4, r5 for(middle = base; n != 0;) { 141a2: b17c cbz r4, 141c4 <_lv_utils_bsearch+0x40> middle += (n / 2) * size; 141a4: 0865 lsrs r5, r4, #1 141a6: fb07 a605 mla r6, r7, r5, sl if((c = (*cmp)(key, middle)) > 0) { 141aa: 4631 mov r1, r6 141ac: 4648 mov r0, r9 141ae: 47c0 blx r8 141b0: 2800 cmp r0, #0 141b2: ddf3 ble.n 1419c <_lv_utils_bsearch+0x18> n = (n / 2) - ((n & 1) == 0); 141b4: f084 0401 eor.w r4, r4, #1 141b8: f004 0401 and.w r4, r4, #1 141bc: 1b2c subs r4, r5, r4 base = (middle += size); 141be: eb06 0a07 add.w sl, r6, r7 141c2: e7ee b.n 141a2 <_lv_utils_bsearch+0x1e> return NULL; 141c4: 2000 movs r0, #0 141c6: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} middle += (n / 2) * size; 141ca: 4630 mov r0, r6 } 141cc: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 000141d0 : * From now, all the created objects will use styles from this theme by default * @param th pointer to theme (return value of: 'lv_theme_init_xxx()') */ void lv_theme_set_act(lv_theme_t * th) { act_theme = th; 141d0: 4b01 ldr r3, [pc, #4] ; (141d8 ) 141d2: 6018 str r0, [r3, #0] 141d4: 4770 bx lr 141d6: bf00 nop 141d8: 20006bd4 .word 0x20006bd4 000141dc : * Get the normal font of the theme * @return pointer to the font */ const lv_font_t * lv_theme_get_font_normal(void) { return act_theme->font_normal; 141dc: 4b01 ldr r3, [pc, #4] ; (141e4 ) 141de: 681b ldr r3, [r3, #0] } 141e0: 68d8 ldr r0, [r3, #12] 141e2: 4770 bx lr 141e4: 20006bd4 .word 0x20006bd4 000141e8 : { return act_theme->flags; } void lv_theme_apply(lv_obj_t * obj, lv_theme_style_t name) { 141e8: b508 push {r3, lr} act_theme->apply_xcb(obj, name); 141ea: 4b02 ldr r3, [pc, #8] ; (141f4 ) 141ec: 681b ldr r3, [r3, #0] 141ee: 681b ldr r3, [r3, #0] 141f0: 4798 blx r3 141f2: bd08 pop {r3, pc} 141f4: 20006bd4 .word 0x20006bd4 000141f8 : return &theme; } static void theme_apply(lv_obj_t * obj, lv_theme_style_t name) { 141f8: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 141fc: 4604 mov r4, r0 lv_style_list_t * list; switch(name) { 141fe: 3901 subs r1, #1 14200: 2927 cmp r1, #39 ; 0x27 14202: d834 bhi.n 1426e 14204: e8df f011 tbh [pc, r1, lsl #1] 14208: 00390028 .word 0x00390028 1420c: 00a100ec .word 0x00a100ec 14210: 00600053 .word 0x00600053 14214: 00d803a3 .word 0x00d803a3 14218: 02b20144 .word 0x02b20144 1421c: 03cc0046 .word 0x03cc0046 14220: 03fe0273 .word 0x03fe0273 14224: 00e000dc .word 0x00e000dc 14228: 00e40081 .word 0x00e40081 1422c: 00e80193 .word 0x00e80193 14230: 02660247 .word 0x02660247 14234: 016a03e3 .word 0x016a03e3 14238: 023f017c .word 0x023f017c 1423c: 022301a0 .word 0x022301a0 14240: 0375011f .word 0x0375011f 14244: 01080391 .word 0x01080391 14248: 02e000b8 .word 0x02e000b8 1424c: 01f401c9 .word 0x01f401c9 14250: 02040347 .word 0x02040347 14254: 033a0312 .word 0x033a0312 case LV_THEME_NONE: break; case LV_THEME_SCR: lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 14258: 2100 movs r1, #0 1425a: 4b9b ldr r3, [pc, #620] ; (144c8 ) 1425c: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN); 1425e: 2100 movs r1, #0 14260: 4620 mov r0, r4 14262: 4b9a ldr r3, [pc, #616] ; (144cc ) 14264: 4798 blx r3 _lv_style_list_add_style(list, &styles->scr); 14266: 4b9a ldr r3, [pc, #616] ; (144d0 ) 14268: 6819 ldr r1, [r3, #0] 1426a: 4b9a ldr r3, [pc, #616] ; (144d4 ) 1426c: 4798 blx r3 #endif default: break; } lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 1426e: 21ff movs r1, #255 ; 0xff 14270: 4620 mov r0, r4 14272: 4b99 ldr r3, [pc, #612] ; (144d8 ) 14274: 4798 blx r3 14276: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 1427a: 2100 movs r1, #0 1427c: 4b92 ldr r3, [pc, #584] ; (144c8 ) 1427e: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN); 14280: 2100 movs r1, #0 14282: 4620 mov r0, r4 14284: 4b91 ldr r3, [pc, #580] ; (144cc ) 14286: 4798 blx r3 _lv_style_list_add_style(list, &styles->bg); 14288: 4b91 ldr r3, [pc, #580] ; (144d0 ) 1428a: 6819 ldr r1, [r3, #0] 1428c: 3104 adds r1, #4 1428e: 4b91 ldr r3, [pc, #580] ; (144d4 ) 14290: 4798 blx r3 break; 14292: e7ec b.n 1426e lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 14294: 2100 movs r1, #0 14296: 4b8c ldr r3, [pc, #560] ; (144c8 ) 14298: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_CONT_PART_MAIN); 1429a: 2100 movs r1, #0 1429c: 4620 mov r0, r4 1429e: 4b8b ldr r3, [pc, #556] ; (144cc ) 142a0: 4798 blx r3 _lv_style_list_add_style(list, &styles->bg); 142a2: 4b8b ldr r3, [pc, #556] ; (144d0 ) 142a4: 6819 ldr r1, [r3, #0] 142a6: 3104 adds r1, #4 142a8: 4b8a ldr r3, [pc, #552] ; (144d4 ) 142aa: 4798 blx r3 break; 142ac: e7df b.n 1426e lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 142ae: 2100 movs r1, #0 142b0: 4b85 ldr r3, [pc, #532] ; (144c8 ) 142b2: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 142b4: 2100 movs r1, #0 142b6: 4620 mov r0, r4 142b8: 4b84 ldr r3, [pc, #528] ; (144cc ) 142ba: 4798 blx r3 _lv_style_list_add_style(list, &styles->btn); 142bc: 4b84 ldr r3, [pc, #528] ; (144d0 ) 142be: 6819 ldr r1, [r3, #0] 142c0: 3110 adds r1, #16 142c2: 4b84 ldr r3, [pc, #528] ; (144d4 ) 142c4: 4798 blx r3 break; 142c6: e7d2 b.n 1426e lv_obj_clean_style_list(obj, LV_BTNMATRIX_PART_BG); 142c8: 2100 movs r1, #0 142ca: f8df 81fc ldr.w r8, [pc, #508] ; 144c8 142ce: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BG); 142d0: 2100 movs r1, #0 142d2: 4620 mov r0, r4 142d4: 4f7d ldr r7, [pc, #500] ; (144cc ) 142d6: 47b8 blx r7 142d8: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 142da: 4e7d ldr r6, [pc, #500] ; (144d0 ) 142dc: 6831 ldr r1, [r6, #0] 142de: 3104 adds r1, #4 142e0: 4d7c ldr r5, [pc, #496] ; (144d4 ) 142e2: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 142e4: 6831 ldr r1, [r6, #0] 142e6: 3118 adds r1, #24 142e8: 4648 mov r0, r9 142ea: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_BTNMATRIX_PART_BTN); 142ec: 2101 movs r1, #1 142ee: 4620 mov r0, r4 142f0: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BTN); 142f2: 2101 movs r1, #1 142f4: 4620 mov r0, r4 142f6: 47b8 blx r7 142f8: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 142fa: 6831 ldr r1, [r6, #0] 142fc: 3104 adds r1, #4 142fe: 47a8 blx r5 _lv_style_list_add_style(list, &styles->bg_click); 14300: 6831 ldr r1, [r6, #0] 14302: 3108 adds r1, #8 14304: 4638 mov r0, r7 14306: 47a8 blx r5 break; 14308: e7b1 b.n 1426e lv_obj_clean_style_list(obj, LV_KEYBOARD_PART_BG); 1430a: 2100 movs r1, #0 1430c: f8df 81b8 ldr.w r8, [pc, #440] ; 144c8 14310: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BG); 14312: 2100 movs r1, #0 14314: 4620 mov r0, r4 14316: 4f6d ldr r7, [pc, #436] ; (144cc ) 14318: 47b8 blx r7 1431a: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->scr); 1431c: 4e6c ldr r6, [pc, #432] ; (144d0 ) 1431e: 6831 ldr r1, [r6, #0] 14320: 4d6c ldr r5, [pc, #432] ; (144d4 ) 14322: 47a8 blx r5 _lv_style_list_add_style(list, &styles->kb_bg); 14324: 6831 ldr r1, [r6, #0] 14326: 3168 adds r1, #104 ; 0x68 14328: 4648 mov r0, r9 1432a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_KEYBOARD_PART_BTN); 1432c: 2101 movs r1, #1 1432e: 4620 mov r0, r4 14330: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BTN); 14332: 2101 movs r1, #1 14334: 4620 mov r0, r4 14336: 47b8 blx r7 14338: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 1433a: 6831 ldr r1, [r6, #0] 1433c: 3104 adds r1, #4 1433e: 47a8 blx r5 _lv_style_list_add_style(list, &styles->bg_click); 14340: 6831 ldr r1, [r6, #0] 14342: 3108 adds r1, #8 14344: 4638 mov r0, r7 14346: 47a8 blx r5 break; 14348: e791 b.n 1426e lv_obj_clean_style_list(obj, LV_BAR_PART_BG); 1434a: 2100 movs r1, #0 1434c: f8df 8178 ldr.w r8, [pc, #376] ; 144c8 14350: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_BAR_PART_BG); 14352: 2100 movs r1, #0 14354: 4620 mov r0, r4 14356: 4f5d ldr r7, [pc, #372] ; (144cc ) 14358: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_bg); 1435a: 4e5d ldr r6, [pc, #372] ; (144d0 ) 1435c: 6831 ldr r1, [r6, #0] 1435e: 3124 adds r1, #36 ; 0x24 14360: 4d5c ldr r5, [pc, #368] ; (144d4 ) 14362: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_BAR_PART_INDIC); 14364: 2101 movs r1, #1 14366: 4620 mov r0, r4 14368: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_BAR_PART_INDIC); 1436a: 2101 movs r1, #1 1436c: 4620 mov r0, r4 1436e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_indic); 14370: 6831 ldr r1, [r6, #0] 14372: 3128 adds r1, #40 ; 0x28 14374: 47a8 blx r5 break; 14376: e77a b.n 1426e lv_obj_clean_style_list(obj, LV_SWITCH_PART_BG); 14378: 2100 movs r1, #0 1437a: f8df 814c ldr.w r8, [pc, #332] ; 144c8 1437e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SWITCH_PART_BG); 14380: 2100 movs r1, #0 14382: 4620 mov r0, r4 14384: 4f51 ldr r7, [pc, #324] ; (144cc ) 14386: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_bg); 14388: 4e51 ldr r6, [pc, #324] ; (144d0 ) 1438a: 6831 ldr r1, [r6, #0] 1438c: 3124 adds r1, #36 ; 0x24 1438e: 4d51 ldr r5, [pc, #324] ; (144d4 ) 14390: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SWITCH_PART_INDIC); 14392: 2101 movs r1, #1 14394: 4620 mov r0, r4 14396: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SWITCH_PART_INDIC); 14398: 2101 movs r1, #1 1439a: 4620 mov r0, r4 1439c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_indic); 1439e: 6831 ldr r1, [r6, #0] 143a0: 3128 adds r1, #40 ; 0x28 143a2: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SWITCH_PART_KNOB); 143a4: 2102 movs r1, #2 143a6: 4620 mov r0, r4 143a8: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SWITCH_PART_KNOB); 143aa: 2102 movs r1, #2 143ac: 4620 mov r0, r4 143ae: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sw_knob); 143b0: 6831 ldr r1, [r6, #0] 143b2: 319c adds r1, #156 ; 0x9c 143b4: 47a8 blx r5 break; 143b6: e75a b.n 1426e lv_obj_clean_style_list(obj, LV_CANVAS_PART_MAIN); 143b8: 2100 movs r1, #0 143ba: 4b43 ldr r3, [pc, #268] ; (144c8 ) 143bc: 4798 blx r3 break; 143be: e756 b.n 1426e lv_obj_clean_style_list(obj, LV_IMG_PART_MAIN); 143c0: 2100 movs r1, #0 143c2: 4b41 ldr r3, [pc, #260] ; (144c8 ) 143c4: 4798 blx r3 break; 143c6: e752 b.n 1426e lv_obj_clean_style_list(obj, LV_IMG_PART_MAIN); 143c8: 2100 movs r1, #0 143ca: 4b3f ldr r3, [pc, #252] ; (144c8 ) 143cc: 4798 blx r3 break; 143ce: e74e b.n 1426e lv_obj_clean_style_list(obj, LV_LABEL_PART_MAIN); 143d0: 2100 movs r1, #0 143d2: 4b3d ldr r3, [pc, #244] ; (144c8 ) 143d4: 4798 blx r3 break; 143d6: e74a b.n 1426e lv_obj_clean_style_list(obj, LV_LABEL_PART_MAIN); 143d8: 2100 movs r1, #0 143da: 4b3b ldr r3, [pc, #236] ; (144c8 ) 143dc: 4798 blx r3 break; 143de: e746 b.n 1426e lv_obj_clean_style_list(obj, LV_ARC_PART_BG); 143e0: 2100 movs r1, #0 143e2: f8df 80e4 ldr.w r8, [pc, #228] ; 144c8 143e6: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_ARC_PART_BG); 143e8: 2100 movs r1, #0 143ea: 4620 mov r0, r4 143ec: 4f37 ldr r7, [pc, #220] ; (144cc ) 143ee: 47b8 blx r7 143f0: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 143f2: 4e37 ldr r6, [pc, #220] ; (144d0 ) 143f4: 6831 ldr r1, [r6, #0] 143f6: 3104 adds r1, #4 143f8: 4d36 ldr r5, [pc, #216] ; (144d4 ) 143fa: 47a8 blx r5 _lv_style_list_add_style(list, &styles->arc_bg); 143fc: 6831 ldr r1, [r6, #0] 143fe: 3120 adds r1, #32 14400: 4648 mov r0, r9 14402: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_ARC_PART_INDIC); 14404: 2101 movs r1, #1 14406: 4620 mov r0, r4 14408: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_ARC_PART_INDIC); 1440a: 2101 movs r1, #1 1440c: 4620 mov r0, r4 1440e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->arc_indic); 14410: 6831 ldr r1, [r6, #0] 14412: 311c adds r1, #28 14414: 47a8 blx r5 break; 14416: e72a b.n 1426e lv_obj_clean_style_list(obj, LV_SPINNER_PART_BG); 14418: 2100 movs r1, #0 1441a: f8df 80ac ldr.w r8, [pc, #172] ; 144c8 1441e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SPINNER_PART_BG); 14420: 2100 movs r1, #0 14422: 4620 mov r0, r4 14424: 4f29 ldr r7, [pc, #164] ; (144cc ) 14426: 47b8 blx r7 _lv_style_list_add_style(list, &styles->arc_bg); 14428: 4e29 ldr r6, [pc, #164] ; (144d0 ) 1442a: 6831 ldr r1, [r6, #0] 1442c: 3120 adds r1, #32 1442e: 4d29 ldr r5, [pc, #164] ; (144d4 ) 14430: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SPINNER_PART_INDIC); 14432: 2101 movs r1, #1 14434: 4620 mov r0, r4 14436: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SPINNER_PART_INDIC); 14438: 2101 movs r1, #1 1443a: 4620 mov r0, r4 1443c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->arc_indic); 1443e: 6831 ldr r1, [r6, #0] 14440: 311c adds r1, #28 14442: 47a8 blx r5 break; 14444: e713 b.n 1426e lv_obj_clean_style_list(obj, LV_SLIDER_PART_BG); 14446: 2100 movs r1, #0 14448: f8df 807c ldr.w r8, [pc, #124] ; 144c8 1444c: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_BG); 1444e: 2100 movs r1, #0 14450: 4620 mov r0, r4 14452: 4f1e ldr r7, [pc, #120] ; (144cc ) 14454: 47b8 blx r7 14456: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bar_bg); 14458: 4e1d ldr r6, [pc, #116] ; (144d0 ) 1445a: 6831 ldr r1, [r6, #0] 1445c: 3124 adds r1, #36 ; 0x24 1445e: 4d1d ldr r5, [pc, #116] ; (144d4 ) 14460: 47a8 blx r5 _lv_style_list_add_style(list, &styles->slider_bg); 14462: 6831 ldr r1, [r6, #0] 14464: 3194 adds r1, #148 ; 0x94 14466: 4648 mov r0, r9 14468: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SLIDER_PART_INDIC); 1446a: 2101 movs r1, #1 1446c: 4620 mov r0, r4 1446e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_INDIC); 14470: 2101 movs r1, #1 14472: 4620 mov r0, r4 14474: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_indic); 14476: 6831 ldr r1, [r6, #0] 14478: 3128 adds r1, #40 ; 0x28 1447a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SLIDER_PART_KNOB); 1447c: 2102 movs r1, #2 1447e: 4620 mov r0, r4 14480: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_KNOB); 14482: 2102 movs r1, #2 14484: 4620 mov r0, r4 14486: 47b8 blx r7 _lv_style_list_add_style(list, &styles->slider_knob); 14488: 6831 ldr r1, [r6, #0] 1448a: 3190 adds r1, #144 ; 0x90 1448c: 47a8 blx r5 break; 1448e: e6ee b.n 1426e lv_obj_clean_style_list(obj, LV_CHECKBOX_PART_BG); 14490: 2100 movs r1, #0 14492: f8df 8034 ldr.w r8, [pc, #52] ; 144c8 14496: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BG); 14498: 2100 movs r1, #0 1449a: 4620 mov r0, r4 1449c: 4f0b ldr r7, [pc, #44] ; (144cc ) 1449e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->cb_bg); 144a0: 4e0b ldr r6, [pc, #44] ; (144d0 ) 144a2: 6831 ldr r1, [r6, #0] 144a4: 314c adds r1, #76 ; 0x4c 144a6: 4d0b ldr r5, [pc, #44] ; (144d4 ) 144a8: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CHECKBOX_PART_BULLET); 144aa: 2140 movs r1, #64 ; 0x40 144ac: 4620 mov r0, r4 144ae: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BULLET); 144b0: 2140 movs r1, #64 ; 0x40 144b2: 4620 mov r0, r4 144b4: 47b8 blx r7 144b6: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->btn); 144b8: 6831 ldr r1, [r6, #0] 144ba: 3110 adds r1, #16 144bc: 47a8 blx r5 _lv_style_list_add_style(list, &styles->cb_bullet); 144be: 6831 ldr r1, [r6, #0] 144c0: 3150 adds r1, #80 ; 0x50 144c2: 4638 mov r0, r7 144c4: 47a8 blx r5 break; 144c6: e6d2 b.n 1426e 144c8: 000030cd .word 0x000030cd 144cc: 00002ffd .word 0x00002ffd 144d0: 20006bd8 .word 0x20006bd8 144d4: 000065d9 .word 0x000065d9 144d8: 00003a99 .word 0x00003a99 lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BG); 144dc: 2100 movs r1, #0 144de: 4b9f ldr r3, [pc, #636] ; (1475c ) 144e0: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BG); 144e2: 2100 movs r1, #0 144e4: 4620 mov r0, r4 144e6: 4b9e ldr r3, [pc, #632] ; (14760 ) 144e8: 4798 blx r3 144ea: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 144ec: 4e9d ldr r6, [pc, #628] ; (14764 ) 144ee: 6831 ldr r1, [r6, #0] 144f0: 3104 adds r1, #4 144f2: 4d9d ldr r5, [pc, #628] ; (14768 ) 144f4: 47a8 blx r5 _lv_style_list_add_style(list, &styles->mbox_bg); 144f6: 6831 ldr r1, [r6, #0] 144f8: 317c adds r1, #124 ; 0x7c 144fa: 4638 mov r0, r7 144fc: 47a8 blx r5 break; 144fe: e6b6 b.n 1426e lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BTN_BG); 14500: 2140 movs r1, #64 ; 0x40 14502: f8df 8258 ldr.w r8, [pc, #600] ; 1475c 14506: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN_BG); 14508: 2140 movs r1, #64 ; 0x40 1450a: 4620 mov r0, r4 1450c: 4f94 ldr r7, [pc, #592] ; (14760 ) 1450e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->pad_small); 14510: 4e94 ldr r6, [pc, #592] ; (14764 ) 14512: 6831 ldr r1, [r6, #0] 14514: 3118 adds r1, #24 14516: 4d94 ldr r5, [pc, #592] ; (14768 ) 14518: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BTN); 1451a: 2141 movs r1, #65 ; 0x41 1451c: 4620 mov r0, r4 1451e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN); 14520: 2141 movs r1, #65 ; 0x41 14522: 4620 mov r0, r4 14524: 47b8 blx r7 _lv_style_list_add_style(list, &styles->btn); 14526: 6831 ldr r1, [r6, #0] 14528: 3110 adds r1, #16 1452a: 47a8 blx r5 break; 1452c: e69f b.n 1426e lv_obj_clean_style_list(obj, LV_LED_PART_MAIN); 1452e: 2100 movs r1, #0 14530: 4b8a ldr r3, [pc, #552] ; (1475c ) 14532: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_LED_PART_MAIN); 14534: 2100 movs r1, #0 14536: 4620 mov r0, r4 14538: 4b89 ldr r3, [pc, #548] ; (14760 ) 1453a: 4798 blx r3 _lv_style_list_add_style(list, &styles->led); 1453c: 4b89 ldr r3, [pc, #548] ; (14764 ) 1453e: 6819 ldr r1, [r3, #0] 14540: 316c adds r1, #108 ; 0x6c 14542: 4b89 ldr r3, [pc, #548] ; (14768 ) 14544: 4798 blx r3 break; 14546: e692 b.n 1426e lv_obj_clean_style_list(obj, LV_PAGE_PART_BG); 14548: 2100 movs r1, #0 1454a: f8df 8210 ldr.w r8, [pc, #528] ; 1475c 1454e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_PAGE_PART_BG); 14550: 2100 movs r1, #0 14552: 4620 mov r0, r4 14554: 4f82 ldr r7, [pc, #520] ; (14760 ) 14556: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 14558: 4e82 ldr r6, [pc, #520] ; (14764 ) 1455a: 6831 ldr r1, [r6, #0] 1455c: 3104 adds r1, #4 1455e: 4d82 ldr r5, [pc, #520] ; (14768 ) 14560: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_SCROLLABLE); 14562: 2140 movs r1, #64 ; 0x40 14564: 4620 mov r0, r4 14566: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLABLE); 14568: 2140 movs r1, #64 ; 0x40 1456a: 4620 mov r0, r4 1456c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->pad_inner); 1456e: 6831 ldr r1, [r6, #0] 14570: 3114 adds r1, #20 14572: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_SCROLLBAR); 14574: 2101 movs r1, #1 14576: 4620 mov r0, r4 14578: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLBAR); 1457a: 2101 movs r1, #1 1457c: 4620 mov r0, r4 1457e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 14580: 6831 ldr r1, [r6, #0] 14582: 3180 adds r1, #128 ; 0x80 14584: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_EDGE_FLASH); 14586: 2102 movs r1, #2 14588: 4620 mov r0, r4 1458a: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_PAGE_PART_EDGE_FLASH); 1458c: 2102 movs r1, #2 1458e: 4620 mov r0, r4 14590: 47b8 blx r7 _lv_style_list_add_style(list, &styles->edge_flash); 14592: 6831 ldr r1, [r6, #0] 14594: 3184 adds r1, #132 ; 0x84 14596: 47a8 blx r5 break; 14598: e669 b.n 1426e lv_obj_clean_style_list(obj, LV_TABVIEW_PART_BG); 1459a: 2100 movs r1, #0 1459c: 4d6f ldr r5, [pc, #444] ; (1475c ) 1459e: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_BG); 145a0: 2100 movs r1, #0 145a2: 4620 mov r0, r4 145a4: f8df 81b8 ldr.w r8, [pc, #440] ; 14760 145a8: 47c0 blx r8 _lv_style_list_add_style(list, &styles->scr); 145aa: 4f6e ldr r7, [pc, #440] ; (14764 ) 145ac: 6839 ldr r1, [r7, #0] 145ae: 4e6e ldr r6, [pc, #440] ; (14768 ) 145b0: 47b0 blx r6 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_BG_SCRLLABLE); 145b2: 2140 movs r1, #64 ; 0x40 145b4: 4620 mov r0, r4 145b6: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_TAB_BG); 145b8: 2141 movs r1, #65 ; 0x41 145ba: 4620 mov r0, r4 145bc: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_TAB_BG); 145be: 2141 movs r1, #65 ; 0x41 145c0: 4620 mov r0, r4 145c2: 47c0 blx r8 _lv_style_list_add_style(list, &styles->tabview_btns_bg); 145c4: 6839 ldr r1, [r7, #0] 145c6: 31a8 adds r1, #168 ; 0xa8 145c8: 47b0 blx r6 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_INDIC); 145ca: 2143 movs r1, #67 ; 0x43 145cc: 4620 mov r0, r4 145ce: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_INDIC); 145d0: 2143 movs r1, #67 ; 0x43 145d2: 4620 mov r0, r4 145d4: 47c0 blx r8 _lv_style_list_add_style(list, &styles->tabview_indic); 145d6: 6839 ldr r1, [r7, #0] 145d8: 31ac adds r1, #172 ; 0xac 145da: 47b0 blx r6 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_TAB_BTN); 145dc: 2142 movs r1, #66 ; 0x42 145de: 4620 mov r0, r4 145e0: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_TAB_BTN); 145e2: 2142 movs r1, #66 ; 0x42 145e4: 4620 mov r0, r4 145e6: 47c0 blx r8 _lv_style_list_add_style(list, &styles->tabview_btns); 145e8: 6839 ldr r1, [r7, #0] 145ea: 31a4 adds r1, #164 ; 0xa4 145ec: 47b0 blx r6 break; 145ee: e63e b.n 1426e lv_obj_clean_style_list(obj, LV_PAGE_PART_BG); 145f0: 2100 movs r1, #0 145f2: 4d5a ldr r5, [pc, #360] ; (1475c ) 145f4: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_SCROLLABLE); 145f6: 2140 movs r1, #64 ; 0x40 145f8: 4620 mov r0, r4 145fa: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLABLE); 145fc: 2140 movs r1, #64 ; 0x40 145fe: 4620 mov r0, r4 14600: 4b57 ldr r3, [pc, #348] ; (14760 ) 14602: 4798 blx r3 _lv_style_list_add_style(list, &styles->tabview_page_scrl); 14604: 4b57 ldr r3, [pc, #348] ; (14764 ) 14606: 6819 ldr r1, [r3, #0] 14608: 31b0 adds r1, #176 ; 0xb0 1460a: 4b57 ldr r3, [pc, #348] ; (14768 ) 1460c: 4798 blx r3 break; 1460e: e62e b.n 1426e lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_BG); 14610: 2100 movs r1, #0 14612: f8df 8148 ldr.w r8, [pc, #328] ; 1475c 14616: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_BG); 14618: 2100 movs r1, #0 1461a: 4620 mov r0, r4 1461c: 4f50 ldr r7, [pc, #320] ; (14760 ) 1461e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->scr); 14620: 4e50 ldr r6, [pc, #320] ; (14764 ) 14622: 6831 ldr r1, [r6, #0] 14624: 4d50 ldr r5, [pc, #320] ; (14768 ) 14626: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_SCROLLBAR); 14628: 2101 movs r1, #1 1462a: 4620 mov r0, r4 1462c: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_SCROLLBAR); 1462e: 2101 movs r1, #1 14630: 4620 mov r0, r4 14632: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 14634: 6831 ldr r1, [r6, #0] 14636: 3180 adds r1, #128 ; 0x80 14638: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_EDGE_FLASH); 1463a: 2102 movs r1, #2 1463c: 4620 mov r0, r4 1463e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_EDGE_FLASH); 14640: 2102 movs r1, #2 14642: 4620 mov r0, r4 14644: 47b8 blx r7 _lv_style_list_add_style(list, &styles->edge_flash); 14646: 6831 ldr r1, [r6, #0] 14648: 3184 adds r1, #132 ; 0x84 1464a: 47a8 blx r5 break; 1464c: e60f b.n 1426e lv_obj_clean_style_list(obj, LV_ROLLER_PART_BG); 1464e: 2100 movs r1, #0 14650: f8df 8108 ldr.w r8, [pc, #264] ; 1475c 14654: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_ROLLER_PART_BG); 14656: 2100 movs r1, #0 14658: 4620 mov r0, r4 1465a: 4f41 ldr r7, [pc, #260] ; (14760 ) 1465c: 47b8 blx r7 1465e: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 14660: 4e40 ldr r6, [pc, #256] ; (14764 ) 14662: 6831 ldr r1, [r6, #0] 14664: 3104 adds r1, #4 14666: 4d40 ldr r5, [pc, #256] ; (14768 ) 14668: 47a8 blx r5 _lv_style_list_add_style(list, &styles->roller_bg); 1466a: 6831 ldr r1, [r6, #0] 1466c: 3188 adds r1, #136 ; 0x88 1466e: 4648 mov r0, r9 14670: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_ROLLER_PART_SELECTED); 14672: 2103 movs r1, #3 14674: 4620 mov r0, r4 14676: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_ROLLER_PART_SELECTED); 14678: 2103 movs r1, #3 1467a: 4620 mov r0, r4 1467c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->roller_sel); 1467e: 6831 ldr r1, [r6, #0] 14680: 318c adds r1, #140 ; 0x8c 14682: 47a8 blx r5 break; 14684: e5f3 b.n 1426e lv_obj_clean_style_list(obj, LV_OBJMASK_PART_MAIN); 14686: 2100 movs r1, #0 14688: 4b34 ldr r3, [pc, #208] ; (1475c ) 1468a: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_OBJMASK_PART_MAIN); 1468c: 2100 movs r1, #0 1468e: 4620 mov r0, r4 14690: 4b33 ldr r3, [pc, #204] ; (14760 ) 14692: 4798 blx r3 break; 14694: e5eb b.n 1426e lv_obj_clean_style_list(obj, LV_LIST_PART_BG); 14696: 2100 movs r1, #0 14698: 4f30 ldr r7, [pc, #192] ; (1475c ) 1469a: 47b8 blx r7 list = lv_obj_get_style_list(obj, LV_LIST_PART_BG); 1469c: 2100 movs r1, #0 1469e: 4620 mov r0, r4 146a0: f8df 80bc ldr.w r8, [pc, #188] ; 14760 146a4: 47c0 blx r8 146a6: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 146a8: 4e2e ldr r6, [pc, #184] ; (14764 ) 146aa: 6831 ldr r1, [r6, #0] 146ac: 3104 adds r1, #4 146ae: 4d2e ldr r5, [pc, #184] ; (14768 ) 146b0: 47a8 blx r5 _lv_style_list_add_style(list, &styles->list_bg); 146b2: 6831 ldr r1, [r6, #0] 146b4: 3174 adds r1, #116 ; 0x74 146b6: 4648 mov r0, r9 146b8: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_LIST_PART_SCROLLABLE); 146ba: 2140 movs r1, #64 ; 0x40 146bc: 4620 mov r0, r4 146be: 47b8 blx r7 lv_obj_clean_style_list(obj, LV_LIST_PART_SCROLLBAR); 146c0: 2101 movs r1, #1 146c2: 4620 mov r0, r4 146c4: 47b8 blx r7 list = lv_obj_get_style_list(obj, LV_LIST_PART_SCROLLBAR); 146c6: 2101 movs r1, #1 146c8: 4620 mov r0, r4 146ca: 47c0 blx r8 _lv_style_list_add_style(list, &styles->sb); 146cc: 6831 ldr r1, [r6, #0] 146ce: 3180 adds r1, #128 ; 0x80 146d0: 47a8 blx r5 break; 146d2: e5cc b.n 1426e lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 146d4: 2100 movs r1, #0 146d6: 4b21 ldr r3, [pc, #132] ; (1475c ) 146d8: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 146da: 2100 movs r1, #0 146dc: 4620 mov r0, r4 146de: 4b20 ldr r3, [pc, #128] ; (14760 ) 146e0: 4798 blx r3 _lv_style_list_add_style(list, &styles->list_btn); 146e2: 4b20 ldr r3, [pc, #128] ; (14764 ) 146e4: 6819 ldr r1, [r3, #0] 146e6: 3178 adds r1, #120 ; 0x78 146e8: 4b1f ldr r3, [pc, #124] ; (14768 ) 146ea: 4798 blx r3 break; 146ec: e5bf b.n 1426e lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_MAIN); 146ee: 2100 movs r1, #0 146f0: f8df 8068 ldr.w r8, [pc, #104] ; 1475c 146f4: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_MAIN); 146f6: 2100 movs r1, #0 146f8: 4620 mov r0, r4 146fa: 4f19 ldr r7, [pc, #100] ; (14760 ) 146fc: 47b8 blx r7 146fe: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 14700: 4e18 ldr r6, [pc, #96] ; (14764 ) 14702: 6831 ldr r1, [r6, #0] 14704: 3104 adds r1, #4 14706: 4d18 ldr r5, [pc, #96] ; (14768 ) 14708: 47a8 blx r5 _lv_style_list_add_style(list, &styles->bg_click); 1470a: 6831 ldr r1, [r6, #0] 1470c: 3108 adds r1, #8 1470e: 4648 mov r0, r9 14710: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 14712: 6831 ldr r1, [r6, #0] 14714: 3118 adds r1, #24 14716: 4648 mov r0, r9 14718: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_LIST); 1471a: 2140 movs r1, #64 ; 0x40 1471c: 4620 mov r0, r4 1471e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_LIST); 14720: 2140 movs r1, #64 ; 0x40 14722: 4620 mov r0, r4 14724: 47b8 blx r7 14726: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 14728: 6831 ldr r1, [r6, #0] 1472a: 3104 adds r1, #4 1472c: 47a8 blx r5 _lv_style_list_add_style(list, &styles->ddlist_page); 1472e: 6831 ldr r1, [r6, #0] 14730: 3154 adds r1, #84 ; 0x54 14732: 4648 mov r0, r9 14734: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SCROLLBAR); 14736: 2141 movs r1, #65 ; 0x41 14738: 4620 mov r0, r4 1473a: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SCROLLBAR); 1473c: 2141 movs r1, #65 ; 0x41 1473e: 4620 mov r0, r4 14740: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 14742: 6831 ldr r1, [r6, #0] 14744: 3180 adds r1, #128 ; 0x80 14746: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SELECTED); 14748: 2142 movs r1, #66 ; 0x42 1474a: 4620 mov r0, r4 1474c: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SELECTED); 1474e: 2142 movs r1, #66 ; 0x42 14750: 4620 mov r0, r4 14752: 47b8 blx r7 _lv_style_list_add_style(list, &styles->ddlist_sel); 14754: 6831 ldr r1, [r6, #0] 14756: 3158 adds r1, #88 ; 0x58 14758: 47a8 blx r5 break; 1475a: e588 b.n 1426e 1475c: 000030cd .word 0x000030cd 14760: 00002ffd .word 0x00002ffd 14764: 20006bd8 .word 0x20006bd8 14768: 000065d9 .word 0x000065d9 lv_obj_clean_style_list(obj, LV_CHART_PART_BG); 1476c: 2100 movs r1, #0 1476e: f8df 8290 ldr.w r8, [pc, #656] ; 14a00 14772: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CHART_PART_BG); 14774: 2100 movs r1, #0 14776: 4620 mov r0, r4 14778: 4f9e ldr r7, [pc, #632] ; (149f4 ) 1477a: 47b8 blx r7 1477c: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 1477e: 4e9e ldr r6, [pc, #632] ; (149f8 ) 14780: 6831 ldr r1, [r6, #0] 14782: 3104 adds r1, #4 14784: 4d9d ldr r5, [pc, #628] ; (149fc ) 14786: 47a8 blx r5 _lv_style_list_add_style(list, &styles->chart_bg); 14788: 6831 ldr r1, [r6, #0] 1478a: 3140 adds r1, #64 ; 0x40 1478c: 4648 mov r0, r9 1478e: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 14790: 6831 ldr r1, [r6, #0] 14792: 3118 adds r1, #24 14794: 4648 mov r0, r9 14796: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CHART_PART_SERIES_BG); 14798: 2101 movs r1, #1 1479a: 4620 mov r0, r4 1479c: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES_BG); 1479e: 2101 movs r1, #1 147a0: 4620 mov r0, r4 147a2: 47b8 blx r7 147a4: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->pad_small); 147a6: 6831 ldr r1, [r6, #0] 147a8: 3118 adds r1, #24 147aa: 47a8 blx r5 _lv_style_list_add_style(list, &styles->chart_series_bg); 147ac: 6831 ldr r1, [r6, #0] 147ae: 3144 adds r1, #68 ; 0x44 147b0: 4648 mov r0, r9 147b2: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CHART_PART_SERIES); 147b4: 2102 movs r1, #2 147b6: 4620 mov r0, r4 147b8: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES); 147ba: 2102 movs r1, #2 147bc: 4620 mov r0, r4 147be: 47b8 blx r7 _lv_style_list_add_style(list, &styles->chart_series); 147c0: 6831 ldr r1, [r6, #0] 147c2: 3148 adds r1, #72 ; 0x48 147c4: 47a8 blx r5 break; 147c6: e552 b.n 1426e lv_obj_clean_style_list(obj, LV_TABLE_PART_BG); 147c8: 2100 movs r1, #0 147ca: f8df 8234 ldr.w r8, [pc, #564] ; 14a00 147ce: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_BG); 147d0: 2100 movs r1, #0 147d2: 4620 mov r0, r4 147d4: 4f87 ldr r7, [pc, #540] ; (149f4 ) 147d6: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 147d8: 4e87 ldr r6, [pc, #540] ; (149f8 ) 147da: 6831 ldr r1, [r6, #0] 147dc: 3104 adds r1, #4 147de: 4d87 ldr r5, [pc, #540] ; (149fc ) 147e0: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL1); 147e2: 2101 movs r1, #1 147e4: 4620 mov r0, r4 147e6: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL1); 147e8: 2101 movs r1, #1 147ea: 4620 mov r0, r4 147ec: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 147ee: 6831 ldr r1, [r6, #0] 147f0: 31a0 adds r1, #160 ; 0xa0 147f2: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL2); 147f4: 2102 movs r1, #2 147f6: 4620 mov r0, r4 147f8: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL2); 147fa: 2102 movs r1, #2 147fc: 4620 mov r0, r4 147fe: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 14800: 6831 ldr r1, [r6, #0] 14802: 31a0 adds r1, #160 ; 0xa0 14804: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL3); 14806: 2103 movs r1, #3 14808: 4620 mov r0, r4 1480a: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL3); 1480c: 2103 movs r1, #3 1480e: 4620 mov r0, r4 14810: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 14812: 6831 ldr r1, [r6, #0] 14814: 31a0 adds r1, #160 ; 0xa0 14816: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL4); 14818: 2104 movs r1, #4 1481a: 4620 mov r0, r4 1481c: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL4); 1481e: 2104 movs r1, #4 14820: 4620 mov r0, r4 14822: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 14824: 6831 ldr r1, [r6, #0] 14826: 31a0 adds r1, #160 ; 0xa0 14828: 47a8 blx r5 break; 1482a: e520 b.n 1426e lv_obj_clean_style_list(obj, LV_WIN_PART_BG); 1482c: 2100 movs r1, #0 1482e: f8df 81d0 ldr.w r8, [pc, #464] ; 14a00 14832: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_BG); 14834: 2100 movs r1, #0 14836: 4620 mov r0, r4 14838: 4f6e ldr r7, [pc, #440] ; (149f4 ) 1483a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->scr); 1483c: 4e6e ldr r6, [pc, #440] ; (149f8 ) 1483e: 6831 ldr r1, [r6, #0] 14840: 4d6e ldr r5, [pc, #440] ; (149fc ) 14842: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_WIN_PART_SCROLLBAR); 14844: 2142 movs r1, #66 ; 0x42 14846: 4620 mov r0, r4 14848: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_SCROLLBAR); 1484a: 2142 movs r1, #66 ; 0x42 1484c: 4620 mov r0, r4 1484e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 14850: 6831 ldr r1, [r6, #0] 14852: 3180 adds r1, #128 ; 0x80 14854: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_WIN_PART_CONTENT_SCROLLABLE); 14856: 2141 movs r1, #65 ; 0x41 14858: 4620 mov r0, r4 1485a: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_CONTENT_SCROLLABLE); 1485c: 2141 movs r1, #65 ; 0x41 1485e: 4620 mov r0, r4 14860: 47b8 blx r7 _lv_style_list_add_style(list, &styles->tabview_page_scrl); 14862: 6831 ldr r1, [r6, #0] 14864: 31b0 adds r1, #176 ; 0xb0 14866: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_WIN_PART_HEADER); 14868: 2140 movs r1, #64 ; 0x40 1486a: 4620 mov r0, r4 1486c: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_HEADER); 1486e: 2140 movs r1, #64 ; 0x40 14870: 4620 mov r0, r4 14872: 47b8 blx r7 _lv_style_list_add_style(list, &styles->tabview_btns_bg); 14874: 6831 ldr r1, [r6, #0] 14876: 31a8 adds r1, #168 ; 0xa8 14878: 47a8 blx r5 break; 1487a: e4f8 b.n 1426e lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 1487c: 2100 movs r1, #0 1487e: 4b60 ldr r3, [pc, #384] ; (14a00 ) 14880: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 14882: 2100 movs r1, #0 14884: 4620 mov r0, r4 14886: 4b5b ldr r3, [pc, #364] ; (149f4 ) 14888: 4798 blx r3 _lv_style_list_add_style(list, &styles->tabview_btns); 1488a: 4b5b ldr r3, [pc, #364] ; (149f8 ) 1488c: 6819 ldr r1, [r3, #0] 1488e: 31a4 adds r1, #164 ; 0xa4 14890: 4b5a ldr r3, [pc, #360] ; (149fc ) 14892: 4798 blx r3 break; 14894: e4eb b.n 1426e lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_BG); 14896: 2100 movs r1, #0 14898: f8df 8164 ldr.w r8, [pc, #356] ; 14a00 1489c: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_BG); 1489e: 2100 movs r1, #0 148a0: 4620 mov r0, r4 148a2: 4f54 ldr r7, [pc, #336] ; (149f4 ) 148a4: 47b8 blx r7 148a6: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 148a8: 4e53 ldr r6, [pc, #332] ; (149f8 ) 148aa: 6831 ldr r1, [r6, #0] 148ac: 3104 adds r1, #4 148ae: 4d53 ldr r5, [pc, #332] ; (149fc ) 148b0: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 148b2: 6831 ldr r1, [r6, #0] 148b4: 3118 adds r1, #24 148b6: 4648 mov r0, r9 148b8: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_PLACEHOLDER); 148ba: 2104 movs r1, #4 148bc: 4620 mov r0, r4 148be: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_PLACEHOLDER); 148c0: 2104 movs r1, #4 148c2: 4620 mov r0, r4 148c4: 47b8 blx r7 _lv_style_list_add_style(list, &styles->ta_placeholder); 148c6: 6831 ldr r1, [r6, #0] 148c8: 31b8 adds r1, #184 ; 0xb8 148ca: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_CURSOR); 148cc: 2103 movs r1, #3 148ce: 4620 mov r0, r4 148d0: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_CURSOR); 148d2: 2103 movs r1, #3 148d4: 4620 mov r0, r4 148d6: 47b8 blx r7 _lv_style_list_add_style(list, &styles->ta_cursor); 148d8: 6831 ldr r1, [r6, #0] 148da: 31b4 adds r1, #180 ; 0xb4 148dc: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_SCROLLBAR); 148de: 2101 movs r1, #1 148e0: 4620 mov r0, r4 148e2: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_SCROLLBAR); 148e4: 2101 movs r1, #1 148e6: 4620 mov r0, r4 148e8: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 148ea: 6831 ldr r1, [r6, #0] 148ec: 3180 adds r1, #128 ; 0x80 148ee: 47a8 blx r5 break; 148f0: e4bd b.n 1426e lv_obj_clean_style_list(obj, LV_SPINBOX_PART_BG); 148f2: 2100 movs r1, #0 148f4: f8df 8108 ldr.w r8, [pc, #264] ; 14a00 148f8: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_BG); 148fa: 2100 movs r1, #0 148fc: 4620 mov r0, r4 148fe: 4f3d ldr r7, [pc, #244] ; (149f4 ) 14900: 47b8 blx r7 14902: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 14904: 4e3c ldr r6, [pc, #240] ; (149f8 ) 14906: 6831 ldr r1, [r6, #0] 14908: 3104 adds r1, #4 1490a: 4d3c ldr r5, [pc, #240] ; (149fc ) 1490c: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 1490e: 6831 ldr r1, [r6, #0] 14910: 3118 adds r1, #24 14912: 4648 mov r0, r9 14914: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SPINBOX_PART_CURSOR); 14916: 2103 movs r1, #3 14918: 4620 mov r0, r4 1491a: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_CURSOR); 1491c: 2103 movs r1, #3 1491e: 4620 mov r0, r4 14920: 47b8 blx r7 _lv_style_list_add_style(list, &styles->spinbox_cursor); 14922: 6831 ldr r1, [r6, #0] 14924: 3198 adds r1, #152 ; 0x98 14926: 47a8 blx r5 break; 14928: e4a1 b.n 1426e lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 1492a: 2100 movs r1, #0 1492c: 4b34 ldr r3, [pc, #208] ; (14a00 ) 1492e: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 14930: 2100 movs r1, #0 14932: 4620 mov r0, r4 14934: 4b2f ldr r3, [pc, #188] ; (149f4 ) 14936: 4798 blx r3 14938: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 1493a: 4e2f ldr r6, [pc, #188] ; (149f8 ) 1493c: 6831 ldr r1, [r6, #0] 1493e: 3104 adds r1, #4 14940: 4d2e ldr r5, [pc, #184] ; (149fc ) 14942: 47a8 blx r5 _lv_style_list_add_style(list, &styles->bg_click); 14944: 6831 ldr r1, [r6, #0] 14946: 3108 adds r1, #8 14948: 4638 mov r0, r7 1494a: 47a8 blx r5 break; 1494c: e48f b.n 1426e lv_obj_clean_style_list(obj, LV_CALENDAR_PART_BG); 1494e: 2100 movs r1, #0 14950: f8df 80ac ldr.w r8, [pc, #172] ; 14a00 14954: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_BG); 14956: 2100 movs r1, #0 14958: 4620 mov r0, r4 1495a: 4f26 ldr r7, [pc, #152] ; (149f4 ) 1495c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 1495e: 4e26 ldr r6, [pc, #152] ; (149f8 ) 14960: 6831 ldr r1, [r6, #0] 14962: 3104 adds r1, #4 14964: 4d25 ldr r5, [pc, #148] ; (149fc ) 14966: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_DATE); 14968: 2103 movs r1, #3 1496a: 4620 mov r0, r4 1496c: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_DATE); 1496e: 2103 movs r1, #3 14970: 4620 mov r0, r4 14972: 47b8 blx r7 _lv_style_list_add_style(list, &styles->calendar_date_nums); 14974: 6831 ldr r1, [r6, #0] 14976: 312c adds r1, #44 ; 0x2c 14978: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_HEADER); 1497a: 2101 movs r1, #1 1497c: 4620 mov r0, r4 1497e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_HEADER); 14980: 2101 movs r1, #1 14982: 4620 mov r0, r4 14984: 47b8 blx r7 _lv_style_list_add_style(list, &styles->calendar_header); 14986: 6831 ldr r1, [r6, #0] 14988: 3130 adds r1, #48 ; 0x30 1498a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_DAY_NAMES); 1498c: 2102 movs r1, #2 1498e: 4620 mov r0, r4 14990: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_DAY_NAMES); 14992: 2102 movs r1, #2 14994: 4620 mov r0, r4 14996: 47b8 blx r7 _lv_style_list_add_style(list, &styles->calendar_daynames); 14998: 6831 ldr r1, [r6, #0] 1499a: 3134 adds r1, #52 ; 0x34 1499c: 47a8 blx r5 break; 1499e: e466 b.n 1426e lv_obj_clean_style_list(obj, LV_CPICKER_PART_MAIN); 149a0: 2100 movs r1, #0 149a2: f8df 805c ldr.w r8, [pc, #92] ; 14a00 149a6: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CPICKER_PART_MAIN); 149a8: 2100 movs r1, #0 149aa: 4620 mov r0, r4 149ac: 4f11 ldr r7, [pc, #68] ; (149f4 ) 149ae: 47b8 blx r7 _lv_style_list_add_style(list, &styles->cpicker_bg); 149b0: 4e11 ldr r6, [pc, #68] ; (149f8 ) 149b2: 6831 ldr r1, [r6, #0] 149b4: 3138 adds r1, #56 ; 0x38 149b6: 4d11 ldr r5, [pc, #68] ; (149fc ) 149b8: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CPICKER_PART_KNOB); 149ba: 2101 movs r1, #1 149bc: 4620 mov r0, r4 149be: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CPICKER_PART_KNOB); 149c0: 2101 movs r1, #1 149c2: 4620 mov r0, r4 149c4: 47b8 blx r7 _lv_style_list_add_style(list, &styles->cpicker_indic); 149c6: 6831 ldr r1, [r6, #0] 149c8: 313c adds r1, #60 ; 0x3c 149ca: 47a8 blx r5 break; 149cc: e44f b.n 1426e lv_obj_clean_style_list(obj, LV_LINEMETER_PART_MAIN); 149ce: 2100 movs r1, #0 149d0: 4b0b ldr r3, [pc, #44] ; (14a00 ) 149d2: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_LINEMETER_PART_MAIN); 149d4: 2100 movs r1, #0 149d6: 4620 mov r0, r4 149d8: 4b06 ldr r3, [pc, #24] ; (149f4 ) 149da: 4798 blx r3 149dc: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 149de: 4e06 ldr r6, [pc, #24] ; (149f8 ) 149e0: 6831 ldr r1, [r6, #0] 149e2: 3104 adds r1, #4 149e4: 4d05 ldr r5, [pc, #20] ; (149fc ) 149e6: 47a8 blx r5 _lv_style_list_add_style(list, &styles->lmeter); 149e8: 6831 ldr r1, [r6, #0] 149ea: 3170 adds r1, #112 ; 0x70 149ec: 4638 mov r0, r7 149ee: 47a8 blx r5 break; 149f0: e43d b.n 1426e 149f2: bf00 nop 149f4: 00002ffd .word 0x00002ffd 149f8: 20006bd8 .word 0x20006bd8 149fc: 000065d9 .word 0x000065d9 14a00: 000030cd .word 0x000030cd lv_obj_clean_style_list(obj, LV_GAUGE_PART_MAIN); 14a04: 2100 movs r1, #0 14a06: f8df 8054 ldr.w r8, [pc, #84] ; 14a5c 14a0a: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAIN); 14a0c: 2100 movs r1, #0 14a0e: 4620 mov r0, r4 14a10: 4f0f ldr r7, [pc, #60] ; (14a50 ) 14a12: 47b8 blx r7 14a14: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 14a16: 4e0f ldr r6, [pc, #60] ; (14a54 ) 14a18: 6831 ldr r1, [r6, #0] 14a1a: 3104 adds r1, #4 14a1c: 4d0e ldr r5, [pc, #56] ; (14a58 ) 14a1e: 47a8 blx r5 _lv_style_list_add_style(list, &styles->gauge_main); 14a20: 6831 ldr r1, [r6, #0] 14a22: 315c adds r1, #92 ; 0x5c 14a24: 4648 mov r0, r9 14a26: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_GAUGE_PART_MAJOR); 14a28: 2101 movs r1, #1 14a2a: 4620 mov r0, r4 14a2c: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAJOR); 14a2e: 2101 movs r1, #1 14a30: 4620 mov r0, r4 14a32: 47b8 blx r7 _lv_style_list_add_style(list, &styles->gauge_strong); 14a34: 6831 ldr r1, [r6, #0] 14a36: 3160 adds r1, #96 ; 0x60 14a38: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_GAUGE_PART_NEEDLE); 14a3a: 2102 movs r1, #2 14a3c: 4620 mov r0, r4 14a3e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_NEEDLE); 14a40: 2102 movs r1, #2 14a42: 4620 mov r0, r4 14a44: 47b8 blx r7 _lv_style_list_add_style(list, &styles->gauge_needle); 14a46: 6831 ldr r1, [r6, #0] 14a48: 3164 adds r1, #100 ; 0x64 14a4a: 47a8 blx r5 break; 14a4c: e40f b.n 1426e 14a4e: bf00 nop 14a50: 00002ffd .word 0x00002ffd 14a54: 20006bd8 .word 0x20006bd8 14a58: 000065d9 .word 0x000065d9 14a5c: 000030cd .word 0x000030cd 00014a60 : /********************** * STATIC FUNCTIONS **********************/ static void style_init_reset(lv_style_t * style) { 14a60: b508 push {r3, lr} if(inited) lv_style_reset(style); 14a62: 4b04 ldr r3, [pc, #16] ; (14a74 ) 14a64: 791b ldrb r3, [r3, #4] 14a66: b913 cbnz r3, 14a6e else lv_style_init(style); 14a68: 4b03 ldr r3, [pc, #12] ; (14a78 ) 14a6a: 4798 blx r3 14a6c: bd08 pop {r3, pc} if(inited) lv_style_reset(style); 14a6e: 4b03 ldr r3, [pc, #12] ; (14a7c ) 14a70: 4798 blx r3 14a72: bd08 pop {r3, pc} 14a74: 20006bd8 .word 0x20006bd8 14a78: 000064d9 .word 0x000064d9 14a7c: 00006765 .word 0x00006765 00014a80 : { 14a80: b570 push {r4, r5, r6, lr} style_init_reset(&styles->scr); 14a82: 4cb3 ldr r4, [pc, #716] ; (14d50 ) 14a84: 6820 ldr r0, [r4, #0] 14a86: 4bb3 ldr r3, [pc, #716] ; (14d54 ) 14a88: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_MAIN_STOP, bg_main_stop, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_STOP, bg_grad_stop, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_DIR, bg_grad_dir, lv_grad_dir_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_COLOR, bg_grad_color, lv_color_t, _color, nonscalar) _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 14a8a: 22ff movs r2, #255 ; 0xff 14a8c: 212c movs r1, #44 ; 0x2c 14a8e: 6820 ldr r0, [r4, #0] 14a90: 4bb1 ldr r3, [pc, #708] ; (14d58 ) 14a92: 4798 blx r3 lv_style_set_bg_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR); 14a94: 6a23 ldr r3, [r4, #32] 14a96: f013 0302 ands.w r3, r3, #2 14a9a: bf14 ite ne 14a9c: 211d movne r1, #29 14a9e: 2108 moveq r1, #8 14aa0: 2b00 cmp r3, #0 14aa2: bf15 itete ne 14aa4: 203b movne r0, #59 ; 0x3b 14aa6: 2012 moveq r0, #18 14aa8: 231e movne r3, #30 14aaa: 230b moveq r3, #11 14aac: f04f 0200 mov.w r2, #0 14ab0: f363 0204 bfi r2, r3, #0, #5 14ab4: f360 124a bfi r2, r0, #5, #6 14ab8: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 14abc: 2129 movs r1, #41 ; 0x29 14abe: 6820 ldr r0, [r4, #0] 14ac0: 4ba6 ldr r3, [pc, #664] ; (14d5c ) 14ac2: 4798 blx r3 lv_style_set_text_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 14ac4: 4620 mov r0, r4 14ac6: 6a23 ldr r3, [r4, #32] 14ac8: f013 0302 ands.w r3, r3, #2 14acc: bf14 ite ne 14ace: 2107 movne r1, #7 14ad0: 211c moveq r1, #28 14ad2: 2b00 cmp r3, #0 14ad4: bf15 itete ne 14ad6: 240f movne r4, #15 14ad8: 243a moveq r4, #58 ; 0x3a 14ada: 2308 movne r3, #8 14adc: 231d moveq r3, #29 14ade: f04f 0200 mov.w r2, #0 14ae2: f363 0204 bfi r2, r3, #0, #5 14ae6: f364 124a bfi r2, r4, #5, #6 14aea: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_STR, value_str, const char *, _ptr, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_DECOR, text_decor, lv_text_decor_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_BLEND_MODE, text_blend_mode, lv_blend_mode_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 14aee: f248 0189 movw r1, #32905 ; 0x8089 14af2: 6800 ldr r0, [r0, #0] 14af4: 4b99 ldr r3, [pc, #612] ; (14d5c ) 14af6: 4798 blx r3 lv_style_set_value_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 14af8: 4895 ldr r0, [pc, #596] ; (14d50 ) 14afa: 6a03 ldr r3, [r0, #32] 14afc: f013 0302 ands.w r3, r3, #2 14b00: bf14 ite ne 14b02: 2107 movne r1, #7 14b04: 211c moveq r1, #28 14b06: 2b00 cmp r3, #0 14b08: bf15 itete ne 14b0a: 240f movne r4, #15 14b0c: 243a moveq r4, #58 ; 0x3a 14b0e: 2308 movne r3, #8 14b10: 231d moveq r3, #29 14b12: f04f 0200 mov.w r2, #0 14b16: f363 0204 bfi r2, r3, #0, #5 14b1a: f364 124a bfi r2, r4, #5, #6 14b1e: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 14b22: 2179 movs r1, #121 ; 0x79 14b24: 6800 ldr r0, [r0, #0] 14b26: 4b8d ldr r3, [pc, #564] ; (14d5c ) 14b28: 4798 blx r3 lv_style_set_text_font(&styles->scr, LV_STATE_DEFAULT, theme.font_normal); 14b2a: 4c89 ldr r4, [pc, #548] ; (14d50 ) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_SEL_COLOR, text_sel_color, lv_color_t, _color, nonscalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_OPA, text_opa, lv_opa_t, _opa, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 14b2c: 6962 ldr r2, [r4, #20] 14b2e: f248 018e movw r1, #32910 ; 0x808e 14b32: 6820 ldr r0, [r4, #0] 14b34: 4d8a ldr r5, [pc, #552] ; (14d60 ) 14b36: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 14b38: 6962 ldr r2, [r4, #20] 14b3a: 217e movs r1, #126 ; 0x7e 14b3c: 6820 ldr r0, [r4, #0] 14b3e: 47a8 blx r5 style_init_reset(&styles->bg); 14b40: 6820 ldr r0, [r4, #0] 14b42: 3004 adds r0, #4 14b44: 4b83 ldr r3, [pc, #524] ; (14d54 ) 14b46: 4798 blx r3 lv_style_set_radius(&styles->bg, LV_STATE_DEFAULT, LV_DPX(8)); 14b48: 6824 ldr r4, [r4, #0] 14b4a: 3404 adds r4, #4 14b4c: 2000 movs r0, #0 14b4e: 4b85 ldr r3, [pc, #532] ; (14d64 ) 14b50: 4798 blx r3 14b52: 300a adds r0, #10 14b54: 00c0 lsls r0, r0, #3 14b56: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14b5a: f280 8646 bge.w 157ea 14b5e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 14b60: 2101 movs r1, #1 14b62: 4620 mov r0, r4 14b64: 4b80 ldr r3, [pc, #512] ; (14d68 ) 14b66: 4798 blx r3 lv_style_set_bg_opa(&styles->bg, LV_STATE_DEFAULT, LV_OPA_COVER); 14b68: 4c79 ldr r4, [pc, #484] ; (14d50 ) 14b6a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 14b6c: 22ff movs r2, #255 ; 0xff 14b6e: 212c movs r1, #44 ; 0x2c 14b70: 3004 adds r0, #4 14b72: 4b79 ldr r3, [pc, #484] ; (14d58 ) 14b74: 4798 blx r3 lv_style_set_bg_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG); 14b76: 6820 ldr r0, [r4, #0] 14b78: 3004 adds r0, #4 14b7a: 6a23 ldr r3, [r4, #32] 14b7c: f013 0f02 tst.w r3, #2 14b80: f040 8641 bne.w 15806 14b84: 230b movs r3, #11 14b86: 2118 movs r1, #24 14b88: 240e movs r4, #14 14b8a: f04f 0200 mov.w r2, #0 14b8e: f364 0204 bfi r2, r4, #0, #5 14b92: f361 124a bfi r2, r1, #5, #6 14b96: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 14b9a: 2129 movs r1, #41 ; 0x29 14b9c: 4b6f ldr r3, [pc, #444] ; (14d5c ) 14b9e: 4798 blx r3 lv_style_set_border_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_BORDER); 14ba0: 4b6b ldr r3, [pc, #428] ; (14d50 ) 14ba2: 6818 ldr r0, [r3, #0] 14ba4: 6a1b ldr r3, [r3, #32] 14ba6: f013 0302 ands.w r3, r3, #2 14baa: bf14 ite ne 14bac: 211a movne r1, #26 14bae: 2110 moveq r1, #16 14bb0: 2b00 cmp r3, #0 14bb2: bf15 itete ne 14bb4: 2437 movne r4, #55 ; 0x37 14bb6: 2422 moveq r4, #34 ; 0x22 14bb8: 231c movne r3, #28 14bba: 2312 moveq r3, #18 14bbc: f04f 0200 mov.w r2, #0 14bc0: f363 0204 bfi r2, r3, #0, #5 14bc4: f364 124a bfi r2, r4, #5, #6 14bc8: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 14bcc: 2139 movs r1, #57 ; 0x39 14bce: 3004 adds r0, #4 14bd0: 4d62 ldr r5, [pc, #392] ; (14d5c ) 14bd2: 47a8 blx r5 lv_style_set_border_color(&styles->bg, LV_STATE_FOCUSED, theme.color_primary); 14bd4: 4c5e ldr r4, [pc, #376] ; (14d50 ) 14bd6: 6820 ldr r0, [r4, #0] 14bd8: 89a2 ldrh r2, [r4, #12] 14bda: f240 2139 movw r1, #569 ; 0x239 14bde: 3004 adds r0, #4 14be0: 47a8 blx r5 lv_style_set_border_color(&styles->bg, LV_STATE_EDITED, theme.color_secondary); 14be2: 6820 ldr r0, [r4, #0] 14be4: 89e2 ldrh r2, [r4, #14] 14be6: f240 4139 movw r1, #1081 ; 0x439 14bea: 3004 adds r0, #4 14bec: 47a8 blx r5 lv_style_set_border_width(&styles->bg, LV_STATE_DEFAULT, BORDER_WIDTH); 14bee: 6824 ldr r4, [r4, #0] 14bf0: 3404 adds r4, #4 14bf2: 2000 movs r0, #0 14bf4: 4b5b ldr r3, [pc, #364] ; (14d64 ) 14bf6: 4798 blx r3 14bf8: 3028 adds r0, #40 ; 0x28 14bfa: 0040 lsls r0, r0, #1 14bfc: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14c00: f280 8606 bge.w 15810 14c04: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 14c06: 2130 movs r1, #48 ; 0x30 14c08: 4620 mov r0, r4 14c0a: 4d57 ldr r5, [pc, #348] ; (14d68 ) 14c0c: 47a8 blx r5 lv_style_set_border_post(&styles->bg, LV_STATE_DEFAULT, true); 14c0e: 4c50 ldr r4, [pc, #320] ; (14d50 ) 14c10: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 14c12: 2201 movs r2, #1 14c14: 2133 movs r1, #51 ; 0x33 14c16: 3004 adds r0, #4 14c18: 47a8 blx r5 lv_style_set_text_font(&styles->bg, LV_STATE_DEFAULT, theme.font_normal); 14c1a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 14c1c: 6962 ldr r2, [r4, #20] 14c1e: f248 018e movw r1, #32910 ; 0x808e 14c22: 3004 adds r0, #4 14c24: 4b4e ldr r3, [pc, #312] ; (14d60 ) 14c26: 4798 blx r3 lv_style_set_text_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 14c28: 6820 ldr r0, [r4, #0] 14c2a: 3004 adds r0, #4 14c2c: 6a23 ldr r3, [r4, #32] 14c2e: f013 0f02 tst.w r3, #2 14c32: f040 85fb bne.w 1582c 14c36: 231f movs r3, #31 14c38: 213f movs r1, #63 ; 0x3f 14c3a: 461c mov r4, r3 14c3c: f04f 0200 mov.w r2, #0 14c40: f364 0204 bfi r2, r4, #0, #5 14c44: f361 124a bfi r2, r1, #5, #6 14c48: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 14c4c: f248 0189 movw r1, #32905 ; 0x8089 14c50: 4b42 ldr r3, [pc, #264] ; (14d5c ) 14c52: 4798 blx r3 lv_style_set_value_font(&styles->bg, LV_STATE_DEFAULT, theme.font_normal); 14c54: 4c3e ldr r4, [pc, #248] ; (14d50 ) 14c56: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 14c58: 6962 ldr r2, [r4, #20] 14c5a: 217e movs r1, #126 ; 0x7e 14c5c: 3004 adds r0, #4 14c5e: 4b40 ldr r3, [pc, #256] ; (14d60 ) 14c60: 4798 blx r3 lv_style_set_value_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 14c62: 6820 ldr r0, [r4, #0] 14c64: 3004 adds r0, #4 14c66: 6a23 ldr r3, [r4, #32] 14c68: f013 0f02 tst.w r3, #2 14c6c: f040 85e3 bne.w 15836 14c70: 231f movs r3, #31 14c72: 213f movs r1, #63 ; 0x3f 14c74: 461c mov r4, r3 14c76: f04f 0200 mov.w r2, #0 14c7a: f364 0204 bfi r2, r4, #0, #5 14c7e: f361 124a bfi r2, r1, #5, #6 14c82: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 14c86: 2179 movs r1, #121 ; 0x79 14c88: 4b34 ldr r3, [pc, #208] ; (14d5c ) 14c8a: 4798 blx r3 lv_style_set_image_recolor(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 14c8c: 4b30 ldr r3, [pc, #192] ; (14d50 ) 14c8e: 6818 ldr r0, [r3, #0] 14c90: 3004 adds r0, #4 14c92: 6a1b ldr r3, [r3, #32] 14c94: f013 0f02 tst.w r3, #2 14c98: f040 85d2 bne.w 15840 14c9c: 231f movs r3, #31 14c9e: 213f movs r1, #63 ; 0x3f 14ca0: 461c mov r4, r3 14ca2: f04f 0200 mov.w r2, #0 14ca6: f364 0204 bfi r2, r4, #0, #5 14caa: f361 124a bfi r2, r1, #5, #6 14cae: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_DASH_GAP, line_dash_gap, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_ROUNDED, line_rounded, bool, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_OPA, line_opa, lv_opa_t, _opa, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_BLEND_MODE, image_blend_mode, lv_blend_mode_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 14cb2: f248 01a9 movw r1, #32937 ; 0x80a9 14cb6: 4b29 ldr r3, [pc, #164] ; (14d5c ) 14cb8: 4798 blx r3 lv_style_set_line_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 14cba: 4b25 ldr r3, [pc, #148] ; (14d50 ) 14cbc: 6818 ldr r0, [r3, #0] 14cbe: 3004 adds r0, #4 14cc0: 6a1b ldr r3, [r3, #32] 14cc2: f013 0f02 tst.w r3, #2 14cc6: f040 85c0 bne.w 1584a 14cca: 231f movs r3, #31 14ccc: 213f movs r1, #63 ; 0x3f 14cce: 461c mov r4, r3 14cd0: f04f 0200 mov.w r2, #0 14cd4: f364 0204 bfi r2, r4, #0, #5 14cd8: f361 124a bfi r2, r1, #5, #6 14cdc: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 14ce0: 2199 movs r1, #153 ; 0x99 14ce2: 4b1e ldr r3, [pc, #120] ; (14d5c ) 14ce4: 4798 blx r3 lv_style_set_line_width(&styles->bg, LV_STATE_DEFAULT, 1); 14ce6: 4c1a ldr r4, [pc, #104] ; (14d50 ) 14ce8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 14cea: 2201 movs r2, #1 14cec: 2190 movs r1, #144 ; 0x90 14cee: 3004 adds r0, #4 14cf0: 4b1d ldr r3, [pc, #116] ; (14d68 ) 14cf2: 4798 blx r3 lv_style_set_pad_left(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 14cf4: 6825 ldr r5, [r4, #0] 14cf6: 3504 adds r5, #4 14cf8: 2000 movs r0, #0 14cfa: 4b1c ldr r3, [pc, #112] ; (14d6c ) 14cfc: 4798 blx r3 14cfe: 2801 cmp r0, #1 14d00: f240 85a8 bls.w 15854 14d04: 2000 movs r0, #0 14d06: 4b17 ldr r3, [pc, #92] ; (14d64 ) 14d08: 4798 blx r3 14d0a: ebc0 1000 rsb r0, r0, r0, lsl #4 14d0e: 0040 lsls r0, r0, #1 14d10: 3050 adds r0, #80 ; 0x50 14d12: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14d16: f280 85b8 bge.w 1588a 14d1a: 2401 movs r4, #1 14d1c: 2000 movs r0, #0 14d1e: 4b11 ldr r3, [pc, #68] ; (14d64 ) 14d20: 4798 blx r3 14d22: 3028 adds r0, #40 ; 0x28 14d24: 0040 lsls r0, r0, #1 14d26: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14d2a: f280 85be bge.w 158aa 14d2e: 2201 movs r2, #1 14d30: 4422 add r2, r4 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 14d32: b212 sxth r2, r2 14d34: 2112 movs r1, #18 14d36: 4628 mov r0, r5 14d38: 4b0b ldr r3, [pc, #44] ; (14d68 ) 14d3a: 4798 blx r3 lv_style_set_pad_right(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 14d3c: 4b04 ldr r3, [pc, #16] ; (14d50 ) 14d3e: 681d ldr r5, [r3, #0] 14d40: 3504 adds r5, #4 14d42: 2000 movs r0, #0 14d44: 4b09 ldr r3, [pc, #36] ; (14d6c ) 14d46: 4798 blx r3 14d48: 2801 cmp r0, #1 14d4a: f240 85bc bls.w 158c6 14d4e: e00f b.n 14d70 14d50: 20006bd8 .word 0x20006bd8 14d54: 00014a61 .word 0x00014a61 14d58: 00006b69 .word 0x00006b69 14d5c: 00006a25 .word 0x00006a25 14d60: 00006c99 .word 0x00006c99 14d64: 00010f3d .word 0x00010f3d 14d68: 000068e1 .word 0x000068e1 14d6c: 00010f59 .word 0x00010f59 14d70: 2000 movs r0, #0 14d72: 4bb1 ldr r3, [pc, #708] ; (15038 ) 14d74: 4798 blx r3 14d76: ebc0 1000 rsb r0, r0, r0, lsl #4 14d7a: 0040 lsls r0, r0, #1 14d7c: 3050 adds r0, #80 ; 0x50 14d7e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14d82: f280 85bb bge.w 158fc 14d86: 2401 movs r4, #1 14d88: 2000 movs r0, #0 14d8a: 4bab ldr r3, [pc, #684] ; (15038 ) 14d8c: 4798 blx r3 14d8e: 3028 adds r0, #40 ; 0x28 14d90: 0040 lsls r0, r0, #1 14d92: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14d96: f280 85c1 bge.w 1591c 14d9a: 2201 movs r2, #1 14d9c: 4422 add r2, r4 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14d9e: b212 sxth r2, r2 14da0: 2113 movs r1, #19 14da2: 4628 mov r0, r5 14da4: 4ba5 ldr r3, [pc, #660] ; (1503c ) 14da6: 4798 blx r3 lv_style_set_pad_top(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 14da8: 4ba5 ldr r3, [pc, #660] ; (15040 ) 14daa: 681d ldr r5, [r3, #0] 14dac: 3504 adds r5, #4 14dae: 2000 movs r0, #0 14db0: 4ba4 ldr r3, [pc, #656] ; (15044 ) 14db2: 4798 blx r3 14db4: 2801 cmp r0, #1 14db6: f240 85bf bls.w 15938 14dba: 2000 movs r0, #0 14dbc: 4b9e ldr r3, [pc, #632] ; (15038 ) 14dbe: 4798 blx r3 14dc0: ebc0 1000 rsb r0, r0, r0, lsl #4 14dc4: 0040 lsls r0, r0, #1 14dc6: 3050 adds r0, #80 ; 0x50 14dc8: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14dcc: f280 85cf bge.w 1596e 14dd0: 2401 movs r4, #1 14dd2: 2000 movs r0, #0 14dd4: 4b98 ldr r3, [pc, #608] ; (15038 ) 14dd6: 4798 blx r3 14dd8: 3028 adds r0, #40 ; 0x28 14dda: 0040 lsls r0, r0, #1 14ddc: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14de0: f280 85d5 bge.w 1598e 14de4: 2201 movs r2, #1 14de6: 4422 add r2, r4 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 14de8: b212 sxth r2, r2 14dea: 2110 movs r1, #16 14dec: 4628 mov r0, r5 14dee: 4b93 ldr r3, [pc, #588] ; (1503c ) 14df0: 4798 blx r3 lv_style_set_pad_bottom(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 14df2: 4b93 ldr r3, [pc, #588] ; (15040 ) 14df4: 681d ldr r5, [r3, #0] 14df6: 3504 adds r5, #4 14df8: 2000 movs r0, #0 14dfa: 4b92 ldr r3, [pc, #584] ; (15044 ) 14dfc: 4798 blx r3 14dfe: 2801 cmp r0, #1 14e00: f240 85d3 bls.w 159aa 14e04: 2000 movs r0, #0 14e06: 4b8c ldr r3, [pc, #560] ; (15038 ) 14e08: 4798 blx r3 14e0a: ebc0 1000 rsb r0, r0, r0, lsl #4 14e0e: 0040 lsls r0, r0, #1 14e10: 3050 adds r0, #80 ; 0x50 14e12: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14e16: f280 85f4 bge.w 15a02 14e1a: 2401 movs r4, #1 14e1c: 2000 movs r0, #0 14e1e: 4b86 ldr r3, [pc, #536] ; (15038 ) 14e20: 4798 blx r3 14e22: 3028 adds r0, #40 ; 0x28 14e24: 0040 lsls r0, r0, #1 14e26: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14e2a: f280 85fa bge.w 15a22 14e2e: 2201 movs r2, #1 14e30: 4422 add r2, r4 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 14e32: b212 sxth r2, r2 14e34: 2111 movs r1, #17 14e36: 4628 mov r0, r5 14e38: 4b80 ldr r3, [pc, #512] ; (1503c ) 14e3a: 4798 blx r3 lv_style_set_pad_inner(&styles->bg, LV_STATE_DEFAULT, PAD_DEF); 14e3c: 4b80 ldr r3, [pc, #512] ; (15040 ) 14e3e: 681c ldr r4, [r3, #0] 14e40: 3404 adds r4, #4 14e42: 2000 movs r0, #0 14e44: 4b7f ldr r3, [pc, #508] ; (15044 ) 14e46: 4798 blx r3 14e48: 2801 cmp r0, #1 14e4a: f240 85f8 bls.w 15a3e 14e4e: 2000 movs r0, #0 14e50: 4b79 ldr r3, [pc, #484] ; (15038 ) 14e52: 4798 blx r3 14e54: ebc0 1000 rsb r0, r0, r0, lsl #4 14e58: 0040 lsls r0, r0, #1 14e5a: 3050 adds r0, #80 ; 0x50 14e5c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 14e60: f280 8608 bge.w 15a74 14e64: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 14e66: 2114 movs r1, #20 14e68: 4620 mov r0, r4 14e6a: 4d74 ldr r5, [pc, #464] ; (1503c ) 14e6c: 47a8 blx r5 lv_style_set_transition_time(&styles->bg, LV_STATE_DEFAULT, TRANSITION_TIME); 14e6e: 4c74 ldr r4, [pc, #464] ; (15040 ) 14e70: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_OPA, image_opa, lv_opa_t, _opa, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR_OPA, image_recolor_opa, lv_opa_t, _opa, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 14e72: 2296 movs r2, #150 ; 0x96 14e74: 21b0 movs r1, #176 ; 0xb0 14e76: 3004 adds r0, #4 14e78: 47a8 blx r5 lv_style_set_transition_prop_6(&styles->bg, LV_STATE_DEFAULT, LV_STYLE_BORDER_COLOR); 14e7a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_1, transition_prop_1, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_2, transition_prop_2, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_3, transition_prop_3, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_4, transition_prop_4, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 14e7c: 2239 movs r2, #57 ; 0x39 14e7e: 21b7 movs r1, #183 ; 0xb7 14e80: 3004 adds r0, #4 14e82: 47a8 blx r5 style_init_reset(&styles->bg_sec); 14e84: 6820 ldr r0, [r4, #0] 14e86: 300c adds r0, #12 14e88: 4b6f ldr r3, [pc, #444] ; (15048 ) 14e8a: 4798 blx r3 lv_style_copy(&styles->bg_sec, &styles->bg); 14e8c: 6820 ldr r0, [r4, #0] 14e8e: 1d01 adds r1, r0, #4 14e90: 300c adds r0, #12 14e92: 4b6e ldr r3, [pc, #440] ; (1504c ) 14e94: 4798 blx r3 lv_style_set_bg_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC); 14e96: 6820 ldr r0, [r4, #0] 14e98: 6a23 ldr r3, [r4, #32] 14e9a: f013 0302 ands.w r3, r3, #2 14e9e: bf14 ite ne 14ea0: 211a movne r1, #26 14ea2: 2108 moveq r1, #8 14ea4: 2b00 cmp r3, #0 14ea6: bf15 itete ne 14ea8: 2435 movne r4, #53 ; 0x35 14eaa: 2412 moveq r4, #18 14eac: 231b movne r3, #27 14eae: 2309 moveq r3, #9 14eb0: f04f 0200 mov.w r2, #0 14eb4: f363 0204 bfi r2, r3, #0, #5 14eb8: f364 124a bfi r2, r4, #5, #6 14ebc: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 14ec0: 2129 movs r1, #41 ; 0x29 14ec2: 300c adds r0, #12 14ec4: 4b62 ldr r3, [pc, #392] ; (15050 ) 14ec6: 4798 blx r3 lv_style_set_border_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_BORDER); 14ec8: 4b5d ldr r3, [pc, #372] ; (15040 ) 14eca: 6818 ldr r0, [r3, #0] 14ecc: 300c adds r0, #12 14ece: 6a1b ldr r3, [r3, #32] 14ed0: f013 0f02 tst.w r3, #2 14ed4: f040 85de bne.w 15a94 14ed8: 2308 movs r3, #8 14eda: 2110 movs r1, #16 14edc: 461c mov r4, r3 14ede: f04f 0200 mov.w r2, #0 14ee2: f364 0204 bfi r2, r4, #0, #5 14ee6: f361 124a bfi r2, r1, #5, #6 14eea: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 14eee: 2139 movs r1, #57 ; 0x39 14ef0: 4b57 ldr r3, [pc, #348] ; (15050 ) 14ef2: 4798 blx r3 lv_style_set_text_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 14ef4: 4b52 ldr r3, [pc, #328] ; (15040 ) 14ef6: 6818 ldr r0, [r3, #0] 14ef8: 6a1b ldr r3, [r3, #32] 14efa: f013 0302 ands.w r3, r3, #2 14efe: bf14 ite ne 14f00: 2106 movne r1, #6 14f02: 2114 moveq r1, #20 14f04: 2b00 cmp r3, #0 14f06: bf15 itete ne 14f08: 2410 movne r4, #16 14f0a: 242a moveq r4, #42 ; 0x2a 14f0c: 2309 movne r3, #9 14f0e: 2315 moveq r3, #21 14f10: f04f 0200 mov.w r2, #0 14f14: f363 0204 bfi r2, r3, #0, #5 14f18: f364 124a bfi r2, r4, #5, #6 14f1c: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 14f20: f248 0189 movw r1, #32905 ; 0x8089 14f24: 300c adds r0, #12 14f26: 4b4a ldr r3, [pc, #296] ; (15050 ) 14f28: 4798 blx r3 lv_style_set_value_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 14f2a: 4b45 ldr r3, [pc, #276] ; (15040 ) 14f2c: 6818 ldr r0, [r3, #0] 14f2e: 6a1b ldr r3, [r3, #32] 14f30: f013 0302 ands.w r3, r3, #2 14f34: bf14 ite ne 14f36: 2106 movne r1, #6 14f38: 2114 moveq r1, #20 14f3a: 2b00 cmp r3, #0 14f3c: bf15 itete ne 14f3e: 2410 movne r4, #16 14f40: 242a moveq r4, #42 ; 0x2a 14f42: 2309 movne r3, #9 14f44: 2315 moveq r3, #21 14f46: f04f 0200 mov.w r2, #0 14f4a: f363 0204 bfi r2, r3, #0, #5 14f4e: f364 124a bfi r2, r4, #5, #6 14f52: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 14f56: 2179 movs r1, #121 ; 0x79 14f58: 300c adds r0, #12 14f5a: 4b3d ldr r3, [pc, #244] ; (15050 ) 14f5c: 4798 blx r3 lv_style_set_image_recolor(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 14f5e: 4b38 ldr r3, [pc, #224] ; (15040 ) 14f60: 6818 ldr r0, [r3, #0] 14f62: 6a1b ldr r3, [r3, #32] 14f64: f013 0302 ands.w r3, r3, #2 14f68: bf14 ite ne 14f6a: 2106 movne r1, #6 14f6c: 2114 moveq r1, #20 14f6e: 2b00 cmp r3, #0 14f70: bf15 itete ne 14f72: 2410 movne r4, #16 14f74: 242a moveq r4, #42 ; 0x2a 14f76: 2309 movne r3, #9 14f78: 2315 moveq r3, #21 14f7a: f04f 0200 mov.w r2, #0 14f7e: f363 0204 bfi r2, r3, #0, #5 14f82: f364 124a bfi r2, r4, #5, #6 14f86: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 14f8a: f248 01a9 movw r1, #32937 ; 0x80a9 14f8e: 300c adds r0, #12 14f90: 4b2f ldr r3, [pc, #188] ; (15050 ) 14f92: 4798 blx r3 lv_style_set_line_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 14f94: 4b2a ldr r3, [pc, #168] ; (15040 ) 14f96: 6818 ldr r0, [r3, #0] 14f98: 6a1b ldr r3, [r3, #32] 14f9a: f013 0302 ands.w r3, r3, #2 14f9e: bf14 ite ne 14fa0: 2106 movne r1, #6 14fa2: 2114 moveq r1, #20 14fa4: 2b00 cmp r3, #0 14fa6: bf15 itete ne 14fa8: 2410 movne r4, #16 14faa: 242a moveq r4, #42 ; 0x2a 14fac: 2309 movne r3, #9 14fae: 2315 moveq r3, #21 14fb0: f04f 0200 mov.w r2, #0 14fb4: f363 0204 bfi r2, r3, #0, #5 14fb8: f364 124a bfi r2, r4, #5, #6 14fbc: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 14fc0: 2199 movs r1, #153 ; 0x99 14fc2: 300c adds r0, #12 14fc4: 4b22 ldr r3, [pc, #136] ; (15050 ) 14fc6: 4798 blx r3 style_init_reset(&styles->bg_click); 14fc8: 4c1d ldr r4, [pc, #116] ; (15040 ) 14fca: 6820 ldr r0, [r4, #0] 14fcc: 3008 adds r0, #8 14fce: 4b1e ldr r3, [pc, #120] ; (15048 ) 14fd0: 4798 blx r3 lv_style_set_bg_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_PR); 14fd2: 6820 ldr r0, [r4, #0] 14fd4: 3008 adds r0, #8 14fd6: 6a23 ldr r3, [r4, #32] 14fd8: f013 0f02 tst.w r3, #2 14fdc: f040 855f bne.w 15a9e 14fe0: 2309 movs r3, #9 14fe2: 2113 movs r1, #19 14fe4: 240a movs r4, #10 14fe6: f04f 0200 mov.w r2, #0 14fea: f364 0204 bfi r2, r4, #0, #5 14fee: f361 124a bfi r2, r1, #5, #6 14ff2: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 14ff6: f241 0129 movw r1, #4137 ; 0x1029 14ffa: 4d15 ldr r5, [pc, #84] ; (15050 ) 14ffc: 47a8 blx r5 lv_style_set_bg_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_CHK); 14ffe: 4c10 ldr r4, [pc, #64] ; (15040 ) 15000: 6820 ldr r0, [r4, #0] 15002: 89a2 ldrh r2, [r4, #12] 15004: f240 1129 movw r1, #297 ; 0x129 15008: 3008 adds r0, #8 1500a: 47a8 blx r5 lv_style_set_bg_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_PR_CHK); 1500c: 6826 ldr r6, [r4, #0] 1500e: 3608 adds r6, #8 15010: 2133 movs r1, #51 ; 0x33 15012: 89a0 ldrh r0, [r4, #12] 15014: 4b0f ldr r3, [pc, #60] ; (15054 ) 15016: 4798 blx r3 15018: 4602 mov r2, r0 1501a: f241 1129 movw r1, #4393 ; 0x1129 1501e: 4630 mov r0, r6 15020: 47a8 blx r5 lv_style_set_bg_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_DIS); 15022: 6820 ldr r0, [r4, #0] 15024: 3008 adds r0, #8 15026: 6a23 ldr r3, [r4, #32] 15028: f013 0f02 tst.w r3, #2 1502c: f040 853c bne.w 15aa8 15030: 230b movs r3, #11 15032: 2118 movs r1, #24 15034: 240e movs r4, #14 15036: e00f b.n 15058 15038: 00010f3d .word 0x00010f3d 1503c: 000068e1 .word 0x000068e1 15040: 20006bd8 .word 0x20006bd8 15044: 00010f59 .word 0x00010f59 15048: 00014a61 .word 0x00014a61 1504c: 000067b9 .word 0x000067b9 15050: 00006a25 .word 0x00006a25 15054: 00011c03 .word 0x00011c03 15058: f04f 0200 mov.w r2, #0 1505c: f364 0204 bfi r2, r4, #0, #5 15060: f361 124a bfi r2, r1, #5, #6 15064: f363 22cf bfi r2, r3, #11, #5 15068: f242 0129 movw r1, #8233 ; 0x2029 1506c: 4ebb ldr r6, [pc, #748] ; (1535c ) 1506e: 47b0 blx r6 lv_style_set_border_width(&styles->bg_click, LV_STATE_CHECKED, 0); 15070: 4cbb ldr r4, [pc, #748] ; (15360 ) 15072: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 15074: 2200 movs r2, #0 15076: f44f 7198 mov.w r1, #304 ; 0x130 1507a: 3008 adds r0, #8 1507c: 4bb9 ldr r3, [pc, #740] ; (15364 ) 1507e: 4798 blx r3 lv_style_set_border_color(&styles->bg_click, LV_STATE_FOCUSED | LV_STATE_PRESSED, lv_color_darken(theme.color_primary, 15080: 6825 ldr r5, [r4, #0] 15082: 3508 adds r5, #8 15084: 2133 movs r1, #51 ; 0x33 15086: 89a0 ldrh r0, [r4, #12] 15088: 4bb7 ldr r3, [pc, #732] ; (15368 ) 1508a: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 1508c: 4602 mov r2, r0 1508e: f241 2139 movw r1, #4665 ; 0x1239 15092: 4628 mov r0, r5 15094: 47b0 blx r6 lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_BORDER_PR); 15096: 6820 ldr r0, [r4, #0] 15098: 3008 adds r0, #8 1509a: 6a23 ldr r3, [r4, #32] 1509c: f013 0f02 tst.w r3, #2 150a0: f040 8507 bne.w 15ab2 150a4: 230b movs r3, #11 150a6: 2119 movs r1, #25 150a8: 240d movs r4, #13 150aa: f04f 0200 mov.w r2, #0 150ae: f364 0204 bfi r2, r4, #0, #5 150b2: f361 124a bfi r2, r1, #5, #6 150b6: f363 22cf bfi r2, r3, #11, #5 150ba: f241 0139 movw r1, #4153 ; 0x1039 150be: 4ba7 ldr r3, [pc, #668] ; (1535c ) 150c0: 4798 blx r3 lv_style_set_border_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_BORDER_CHK); 150c2: 4ba7 ldr r3, [pc, #668] ; (15360 ) 150c4: 6818 ldr r0, [r3, #0] 150c6: 6a1b ldr r3, [r3, #32] 150c8: f013 0302 ands.w r3, r3, #2 150cc: bf14 ite ne 150ce: 2107 movne r1, #7 150d0: 210b moveq r1, #11 150d2: 2b00 cmp r3, #0 150d4: bf15 itete ne 150d6: 240f movne r4, #15 150d8: 2419 moveq r4, #25 150da: 2308 movne r3, #8 150dc: 230d moveq r3, #13 150de: f04f 0200 mov.w r2, #0 150e2: f363 0204 bfi r2, r3, #0, #5 150e6: f364 124a bfi r2, r4, #5, #6 150ea: f361 22cf bfi r2, r1, #11, #5 150ee: f240 1139 movw r1, #313 ; 0x139 150f2: 3008 adds r0, #8 150f4: 4b99 ldr r3, [pc, #612] ; (1535c ) 150f6: 4798 blx r3 lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_BORDER_CHK_PR); 150f8: 4b99 ldr r3, [pc, #612] ; (15360 ) 150fa: 6818 ldr r0, [r3, #0] 150fc: 6a1b ldr r3, [r3, #32] 150fe: f013 0302 ands.w r3, r3, #2 15102: bf14 ite ne 15104: 2107 movne r1, #7 15106: 210b moveq r1, #11 15108: 2b00 cmp r3, #0 1510a: bf15 itete ne 1510c: 240f movne r4, #15 1510e: 2419 moveq r4, #25 15110: 2308 movne r3, #8 15112: 230d moveq r3, #13 15114: f04f 0200 mov.w r2, #0 15118: f363 0204 bfi r2, r3, #0, #5 1511c: f364 124a bfi r2, r4, #5, #6 15120: f361 22cf bfi r2, r1, #11, #5 15124: f241 1139 movw r1, #4409 ; 0x1139 15128: 3008 adds r0, #8 1512a: 4b8c ldr r3, [pc, #560] ; (1535c ) 1512c: 4798 blx r3 lv_style_set_border_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_BORDER_DIS); 1512e: 4b8c ldr r3, [pc, #560] ; (15360 ) 15130: 6818 ldr r0, [r3, #0] 15132: 6a1b ldr r3, [r3, #32] 15134: f013 0302 ands.w r3, r3, #2 15138: bf14 ite ne 1513a: 211a movne r1, #26 1513c: 210b moveq r1, #11 1513e: 2b00 cmp r3, #0 15140: bf15 itete ne 15142: 2437 movne r4, #55 ; 0x37 15144: 2419 moveq r4, #25 15146: 231c movne r3, #28 15148: 230d moveq r3, #13 1514a: f04f 0200 mov.w r2, #0 1514e: f363 0204 bfi r2, r3, #0, #5 15152: f364 124a bfi r2, r4, #5, #6 15156: f361 22cf bfi r2, r1, #11, #5 1515a: f242 0139 movw r1, #8249 ; 0x2039 1515e: 3008 adds r0, #8 15160: 4b7e ldr r3, [pc, #504] ; (1535c ) 15162: 4798 blx r3 lv_style_set_text_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 15164: 4b7e ldr r3, [pc, #504] ; (15360 ) 15166: 6818 ldr r0, [r3, #0] 15168: 3008 adds r0, #8 1516a: 6a1b ldr r3, [r3, #32] 1516c: f013 0f02 tst.w r3, #2 15170: f040 84a4 bne.w 15abc 15174: 231f movs r3, #31 15176: 213f movs r1, #63 ; 0x3f 15178: 461c mov r4, r3 1517a: f04f 0200 mov.w r2, #0 1517e: f364 0204 bfi r2, r4, #0, #5 15182: f361 124a bfi r2, r1, #5, #6 15186: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 1518a: f249 0189 movw r1, #37001 ; 0x9089 1518e: 4d73 ldr r5, [pc, #460] ; (1535c ) 15190: 47a8 blx r5 lv_style_set_text_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 15192: 4c73 ldr r4, [pc, #460] ; (15360 ) 15194: 6820 ldr r0, [r4, #0] 15196: f04f 32ff mov.w r2, #4294967295 1519a: f248 1189 movw r1, #33161 ; 0x8189 1519e: 3008 adds r0, #8 151a0: 47a8 blx r5 lv_style_set_text_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_TEXT_CHK_PR); 151a2: 6820 ldr r0, [r4, #0] 151a4: f04f 32ff mov.w r2, #4294967295 151a8: f249 1189 movw r1, #37257 ; 0x9189 151ac: 3008 adds r0, #8 151ae: 47a8 blx r5 lv_style_set_text_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 151b0: 6820 ldr r0, [r4, #0] 151b2: 6a23 ldr r3, [r4, #32] 151b4: f013 0302 ands.w r3, r3, #2 151b8: bf14 ite ne 151ba: 212a movne r1, #42 ; 0x2a 151bc: 2126 moveq r1, #38 ; 0x26 151be: 2b00 cmp r3, #0 151c0: bf14 ite ne 151c2: 2315 movne r3, #21 151c4: 2313 moveq r3, #19 151c6: f04f 0200 mov.w r2, #0 151ca: f363 0204 bfi r2, r3, #0, #5 151ce: f361 124a bfi r2, r1, #5, #6 151d2: f363 22cf bfi r2, r3, #11, #5 151d6: f24a 0189 movw r1, #41097 ; 0xa089 151da: 3008 adds r0, #8 151dc: 47a8 blx r5 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 151de: 6820 ldr r0, [r4, #0] 151e0: 3008 adds r0, #8 151e2: 6a23 ldr r3, [r4, #32] 151e4: f013 0f02 tst.w r3, #2 151e8: f040 846d bne.w 15ac6 151ec: 231f movs r3, #31 151ee: 213f movs r1, #63 ; 0x3f 151f0: 461c mov r4, r3 151f2: f04f 0200 mov.w r2, #0 151f6: f364 0204 bfi r2, r4, #0, #5 151fa: f361 124a bfi r2, r1, #5, #6 151fe: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 15202: f249 01a9 movw r1, #37033 ; 0x90a9 15206: 4d55 ldr r5, [pc, #340] ; (1535c ) 15208: 47a8 blx r5 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 1520a: 4c55 ldr r4, [pc, #340] ; (15360 ) 1520c: 6820 ldr r0, [r4, #0] 1520e: f04f 32ff mov.w r2, #4294967295 15212: f248 11a9 movw r1, #33193 ; 0x81a9 15216: 3008 adds r0, #8 15218: 47a8 blx r5 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_TEXT_CHK_PR); 1521a: 6820 ldr r0, [r4, #0] 1521c: f04f 32ff mov.w r2, #4294967295 15220: f249 11a9 movw r1, #37289 ; 0x91a9 15224: 3008 adds r0, #8 15226: 47a8 blx r5 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 15228: 6820 ldr r0, [r4, #0] 1522a: 6a23 ldr r3, [r4, #32] 1522c: f013 0302 ands.w r3, r3, #2 15230: bf14 ite ne 15232: 212a movne r1, #42 ; 0x2a 15234: 2126 moveq r1, #38 ; 0x26 15236: 2b00 cmp r3, #0 15238: bf14 ite ne 1523a: 2315 movne r3, #21 1523c: 2313 moveq r3, #19 1523e: f04f 0200 mov.w r2, #0 15242: f363 0204 bfi r2, r3, #0, #5 15246: f361 124a bfi r2, r1, #5, #6 1524a: f363 22cf bfi r2, r3, #11, #5 1524e: f24a 01a9 movw r1, #41129 ; 0xa0a9 15252: 3008 adds r0, #8 15254: 47a8 blx r5 lv_style_set_transition_prop_5(&styles->bg_click, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); 15256: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 15258: 2229 movs r2, #41 ; 0x29 1525a: 21b6 movs r1, #182 ; 0xb6 1525c: 3008 adds r0, #8 1525e: 4d41 ldr r5, [pc, #260] ; (15364 ) 15260: 47a8 blx r5 style_init_reset(&styles->btn); 15262: 6820 ldr r0, [r4, #0] 15264: 3010 adds r0, #16 15266: 4b41 ldr r3, [pc, #260] ; (1536c ) 15268: 4798 blx r3 lv_style_set_radius(&styles->btn, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 1526a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 1526c: f647 72ff movw r2, #32767 ; 0x7fff 15270: 2101 movs r1, #1 15272: 3010 adds r0, #16 15274: 47a8 blx r5 lv_style_set_bg_opa(&styles->btn, LV_STATE_DEFAULT, LV_OPA_COVER); 15276: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 15278: 22ff movs r2, #255 ; 0xff 1527a: 212c movs r1, #44 ; 0x2c 1527c: 3010 adds r0, #16 1527e: 4b3c ldr r3, [pc, #240] ; (15370 ) 15280: 4798 blx r3 lv_style_set_bg_color(&styles->btn, LV_STATE_DEFAULT, COLOR_BTN); 15282: 6820 ldr r0, [r4, #0] 15284: 3010 adds r0, #16 15286: 6a23 ldr r3, [r4, #32] 15288: f013 0f02 tst.w r3, #2 1528c: f040 8420 bne.w 15ad0 15290: 230b movs r3, #11 15292: 2118 movs r1, #24 15294: 240e movs r4, #14 15296: f04f 0200 mov.w r2, #0 1529a: f364 0204 bfi r2, r4, #0, #5 1529e: f361 124a bfi r2, r1, #5, #6 152a2: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 152a6: 2129 movs r1, #41 ; 0x29 152a8: 4b2c ldr r3, [pc, #176] ; (1535c ) 152aa: 4798 blx r3 lv_style_set_bg_color(&styles->btn, LV_STATE_PRESSED, COLOR_BTN_PR); 152ac: 4b2c ldr r3, [pc, #176] ; (15360 ) 152ae: 6818 ldr r0, [r3, #0] 152b0: 3010 adds r0, #16 152b2: 6a1b ldr r3, [r3, #32] 152b4: f013 0f02 tst.w r3, #2 152b8: f000 840f beq.w 15ada LV_ATTRIBUTE_FAST_MEM static inline lv_color_t lv_color_mix(lv_color_t c1, lv_color_t c2, uint8_t mix) { lv_color_t ret; #if LV_COLOR_DEPTH != 1 /*LV_COLOR_DEPTH == 8, 16 or 32*/ LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 152bc: 4928 ldr r1, [pc, #160] ; (15360 ) 152be: 7b4b ldrb r3, [r1, #13] 152c0: 08db lsrs r3, r3, #3 152c2: eb03 0383 add.w r3, r3, r3, lsl #2 152c6: eb03 0383 add.w r3, r3, r3, lsl #2 152ca: f641 35da movw r5, #7130 ; 0x1bda 152ce: 442b add r3, r5 152d0: eb03 2203 add.w r2, r3, r3, lsl #8 152d4: eb03 13c2 add.w r3, r3, r2, lsl #7 152d8: f3c3 53c4 ubfx r3, r3, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 152dc: 898a ldrh r2, [r1, #12] 152de: f3c2 1245 ubfx r2, r2, #5, #6 152e2: eb02 0282 add.w r2, r2, r2, lsl #2 152e6: eb02 0282 add.w r2, r2, r2, lsl #2 152ea: f502 5262 add.w r2, r2, #14464 ; 0x3880 152ee: 321a adds r2, #26 152f0: eb02 2402 add.w r4, r2, r2, lsl #8 152f4: eb02 12c4 add.w r2, r2, r4, lsl #7 152f8: f3c2 54c5 ubfx r4, r2, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 152fc: 7b09 ldrb r1, [r1, #12] 152fe: f001 011f and.w r1, r1, #31 15302: eb01 0181 add.w r1, r1, r1, lsl #2 15306: eb01 0181 add.w r1, r1, r1, lsl #2 1530a: 4429 add r1, r5 1530c: eb01 2201 add.w r2, r1, r1, lsl #8 15310: eb01 11c2 add.w r1, r1, r2, lsl #7 15314: f3c1 51c4 ubfx r1, r1, #23, #5 15318: f04f 0200 mov.w r2, #0 1531c: f361 0204 bfi r2, r1, #0, #5 15320: f364 124a bfi r2, r4, #5, #6 15324: f363 22cf bfi r2, r3, #11, #5 15328: f241 0129 movw r1, #4137 ; 0x1029 1532c: 4d0b ldr r5, [pc, #44] ; (1535c ) 1532e: 47a8 blx r5 lv_style_set_bg_color(&styles->btn, LV_STATE_CHECKED, COLOR_BTN_CHK); 15330: 4c0b ldr r4, [pc, #44] ; (15360 ) 15332: 6820 ldr r0, [r4, #0] 15334: 89a2 ldrh r2, [r4, #12] 15336: f240 1129 movw r1, #297 ; 0x129 1533a: 3010 adds r0, #16 1533c: 47a8 blx r5 lv_style_set_bg_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, COLOR_BTN_CHK_PR); 1533e: 6826 ldr r6, [r4, #0] 15340: 3610 adds r6, #16 15342: 214c movs r1, #76 ; 0x4c 15344: 89a0 ldrh r0, [r4, #12] 15346: 4b08 ldr r3, [pc, #32] ; (15368 ) 15348: 4798 blx r3 1534a: 4602 mov r2, r0 1534c: f241 1129 movw r1, #4393 ; 0x1129 15350: 4630 mov r0, r6 15352: 47a8 blx r5 lv_style_set_bg_color(&styles->btn, LV_STATE_DISABLED, COLOR_BTN); 15354: 6820 ldr r0, [r4, #0] 15356: 3010 adds r0, #16 15358: 6a23 ldr r3, [r4, #32] 1535a: e00b b.n 15374 1535c: 00006a25 .word 0x00006a25 15360: 20006bd8 .word 0x20006bd8 15364: 000068e1 .word 0x000068e1 15368: 00011c03 .word 0x00011c03 1536c: 00014a61 .word 0x00014a61 15370: 00006b69 .word 0x00006b69 15374: f013 0f02 tst.w r3, #2 15378: f040 83d9 bne.w 15b2e 1537c: 230b movs r3, #11 1537e: 2118 movs r1, #24 15380: 240e movs r4, #14 15382: f04f 0200 mov.w r2, #0 15386: f364 0204 bfi r2, r4, #0, #5 1538a: f361 124a bfi r2, r1, #5, #6 1538e: f363 22cf bfi r2, r3, #11, #5 15392: f242 0129 movw r1, #8233 ; 0x2029 15396: 4bc6 ldr r3, [pc, #792] ; (156b0 ) 15398: 4798 blx r3 lv_style_set_bg_color(&styles->btn, LV_STATE_DISABLED | LV_STATE_CHECKED, COLOR_BTN_DIS); 1539a: 4bc6 ldr r3, [pc, #792] ; (156b4 ) 1539c: 6818 ldr r0, [r3, #0] 1539e: 6a1b ldr r3, [r3, #32] 153a0: f013 0302 ands.w r3, r3, #2 153a4: bf14 ite ne 153a6: 2133 movne r1, #51 ; 0x33 153a8: 2122 moveq r1, #34 ; 0x22 153aa: 2b00 cmp r3, #0 153ac: bf14 ite ne 153ae: 2319 movne r3, #25 153b0: 2311 moveq r3, #17 153b2: f04f 0200 mov.w r2, #0 153b6: f363 0204 bfi r2, r3, #0, #5 153ba: f361 124a bfi r2, r1, #5, #6 153be: f363 22cf bfi r2, r3, #11, #5 153c2: f242 1129 movw r1, #8489 ; 0x2129 153c6: 3010 adds r0, #16 153c8: 4db9 ldr r5, [pc, #740] ; (156b0 ) 153ca: 47a8 blx r5 lv_style_set_border_color(&styles->btn, LV_STATE_DEFAULT, COLOR_BTN_BORDER); 153cc: 4cb9 ldr r4, [pc, #740] ; (156b4 ) 153ce: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 153d0: 89a2 ldrh r2, [r4, #12] 153d2: 2139 movs r1, #57 ; 0x39 153d4: 3010 adds r0, #16 153d6: 47a8 blx r5 lv_style_set_border_color(&styles->btn, LV_STATE_PRESSED, COLOR_BTN_BORDER_PR); 153d8: 6820 ldr r0, [r4, #0] 153da: 89a2 ldrh r2, [r4, #12] 153dc: f241 0139 movw r1, #4153 ; 0x1039 153e0: 3010 adds r0, #16 153e2: 47a8 blx r5 lv_style_set_border_color(&styles->btn, LV_STATE_DISABLED, COLOR_BTN_BORDER_INA); 153e4: 6820 ldr r0, [r4, #0] 153e6: 6a23 ldr r3, [r4, #32] 153e8: f013 0302 ands.w r3, r3, #2 153ec: bf14 ite ne 153ee: 2122 movne r1, #34 ; 0x22 153f0: 2110 moveq r1, #16 153f2: 2b00 cmp r3, #0 153f4: bf14 ite ne 153f6: 2311 movne r3, #17 153f8: 2308 moveq r3, #8 153fa: f04f 0200 mov.w r2, #0 153fe: f363 0204 bfi r2, r3, #0, #5 15402: f361 124a bfi r2, r1, #5, #6 15406: f363 22cf bfi r2, r3, #11, #5 1540a: f242 0139 movw r1, #8249 ; 0x2039 1540e: 3010 adds r0, #16 15410: 47a8 blx r5 lv_style_set_border_width(&styles->btn, LV_STATE_DEFAULT, BORDER_WIDTH); 15412: 6824 ldr r4, [r4, #0] 15414: 3410 adds r4, #16 15416: 2000 movs r0, #0 15418: 4ba7 ldr r3, [pc, #668] ; (156b8 ) 1541a: 4798 blx r3 1541c: 3028 adds r0, #40 ; 0x28 1541e: 0040 lsls r0, r0, #1 15420: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15424: f280 8387 bge.w 15b36 15428: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 1542a: 2130 movs r1, #48 ; 0x30 1542c: 4620 mov r0, r4 1542e: 4ba3 ldr r3, [pc, #652] ; (156bc ) 15430: 4798 blx r3 lv_style_set_border_opa(&styles->btn, LV_STATE_CHECKED, LV_OPA_TRANSP); 15432: 4ca0 ldr r4, [pc, #640] ; (156b4 ) 15434: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar) 15436: 2200 movs r2, #0 15438: f44f 719e mov.w r1, #316 ; 0x13c 1543c: 3010 adds r0, #16 1543e: 4ba0 ldr r3, [pc, #640] ; (156c0 ) 15440: 4798 blx r3 lv_style_set_text_color(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 15442: 6820 ldr r0, [r4, #0] 15444: 3010 adds r0, #16 15446: 6a23 ldr r3, [r4, #32] 15448: f013 0f02 tst.w r3, #2 1544c: f040 8380 bne.w 15b50 15450: 231f movs r3, #31 15452: 213f movs r1, #63 ; 0x3f 15454: 461c mov r4, r3 15456: f04f 0200 mov.w r2, #0 1545a: f364 0204 bfi r2, r4, #0, #5 1545e: f361 124a bfi r2, r1, #5, #6 15462: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 15466: f248 0189 movw r1, #32905 ; 0x8089 1546a: 4b91 ldr r3, [pc, #580] ; (156b0 ) 1546c: 4798 blx r3 lv_style_set_text_color(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 1546e: 4b91 ldr r3, [pc, #580] ; (156b4 ) 15470: 6818 ldr r0, [r3, #0] 15472: 3010 adds r0, #16 15474: 6a1b ldr r3, [r3, #32] 15476: f013 0f02 tst.w r3, #2 1547a: f040 836d bne.w 15b58 1547e: 231f movs r3, #31 15480: 213f movs r1, #63 ; 0x3f 15482: 461c mov r4, r3 15484: f04f 0200 mov.w r2, #0 15488: f364 0204 bfi r2, r4, #0, #5 1548c: f361 124a bfi r2, r1, #5, #6 15490: f363 22cf bfi r2, r3, #11, #5 15494: f249 0189 movw r1, #37001 ; 0x9089 15498: 4d85 ldr r5, [pc, #532] ; (156b0 ) 1549a: 47a8 blx r5 lv_style_set_text_color(&styles->btn, LV_STATE_CHECKED, lv_color_hex(0xffffff)); 1549c: 4c85 ldr r4, [pc, #532] ; (156b4 ) 1549e: 6820 ldr r0, [r4, #0] 154a0: f04f 32ff mov.w r2, #4294967295 154a4: f248 1189 movw r1, #33161 ; 0x8189 154a8: 3010 adds r0, #16 154aa: 47a8 blx r5 lv_style_set_text_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); 154ac: 6820 ldr r0, [r4, #0] 154ae: f04f 32ff mov.w r2, #4294967295 154b2: f249 1189 movw r1, #37257 ; 0x9189 154b6: 3010 adds r0, #16 154b8: 47a8 blx r5 lv_style_set_text_color(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); 154ba: 6820 ldr r0, [r4, #0] 154bc: 2311 movs r3, #17 154be: f04f 0200 mov.w r2, #0 154c2: f363 0204 bfi r2, r3, #0, #5 154c6: 2122 movs r1, #34 ; 0x22 154c8: f361 124a bfi r2, r1, #5, #6 154cc: f363 22cf bfi r2, r3, #11, #5 154d0: f24a 0189 movw r1, #41097 ; 0xa089 154d4: 3010 adds r0, #16 154d6: 47a8 blx r5 lv_style_set_image_recolor(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 154d8: 6820 ldr r0, [r4, #0] 154da: 3010 adds r0, #16 154dc: 6a23 ldr r3, [r4, #32] 154de: f013 0f02 tst.w r3, #2 154e2: f040 833d bne.w 15b60 154e6: 231f movs r3, #31 154e8: 213f movs r1, #63 ; 0x3f 154ea: 461c mov r4, r3 154ec: f04f 0200 mov.w r2, #0 154f0: f364 0204 bfi r2, r4, #0, #5 154f4: f361 124a bfi r2, r1, #5, #6 154f8: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 154fc: f248 01a9 movw r1, #32937 ; 0x80a9 15500: 4b6b ldr r3, [pc, #428] ; (156b0 ) 15502: 4798 blx r3 lv_style_set_image_recolor(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 15504: 4b6b ldr r3, [pc, #428] ; (156b4 ) 15506: 6818 ldr r0, [r3, #0] 15508: 3010 adds r0, #16 1550a: 6a1b ldr r3, [r3, #32] 1550c: f013 0f02 tst.w r3, #2 15510: f040 832a bne.w 15b68 15514: 231f movs r3, #31 15516: 213f movs r1, #63 ; 0x3f 15518: 461c mov r4, r3 1551a: f04f 0200 mov.w r2, #0 1551e: f364 0204 bfi r2, r4, #0, #5 15522: f361 124a bfi r2, r1, #5, #6 15526: f363 22cf bfi r2, r3, #11, #5 1552a: f249 01a9 movw r1, #37033 ; 0x90a9 1552e: 4d60 ldr r5, [pc, #384] ; (156b0 ) 15530: 47a8 blx r5 lv_style_set_image_recolor(&styles->btn, LV_STATE_PRESSED, lv_color_hex(0xffffff)); 15532: 4c60 ldr r4, [pc, #384] ; (156b4 ) 15534: 6820 ldr r0, [r4, #0] 15536: f04f 32ff mov.w r2, #4294967295 1553a: f249 01a9 movw r1, #37033 ; 0x90a9 1553e: 3010 adds r0, #16 15540: 47a8 blx r5 lv_style_set_image_recolor(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); 15542: 6820 ldr r0, [r4, #0] 15544: f04f 32ff mov.w r2, #4294967295 15548: f249 11a9 movw r1, #37289 ; 0x91a9 1554c: 3010 adds r0, #16 1554e: 47a8 blx r5 lv_style_set_image_recolor(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); 15550: 6820 ldr r0, [r4, #0] 15552: 2311 movs r3, #17 15554: f04f 0200 mov.w r2, #0 15558: f363 0204 bfi r2, r3, #0, #5 1555c: 2122 movs r1, #34 ; 0x22 1555e: f361 124a bfi r2, r1, #5, #6 15562: f363 22cf bfi r2, r3, #11, #5 15566: f24a 01a9 movw r1, #41129 ; 0xa0a9 1556a: 3010 adds r0, #16 1556c: 47a8 blx r5 lv_style_set_value_color(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 1556e: 6820 ldr r0, [r4, #0] 15570: 3010 adds r0, #16 15572: 6a23 ldr r3, [r4, #32] 15574: f013 0f02 tst.w r3, #2 15578: f040 82fa bne.w 15b70 1557c: 231f movs r3, #31 1557e: 213f movs r1, #63 ; 0x3f 15580: 461c mov r4, r3 15582: f04f 0200 mov.w r2, #0 15586: f364 0204 bfi r2, r4, #0, #5 1558a: f361 124a bfi r2, r1, #5, #6 1558e: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 15592: 2179 movs r1, #121 ; 0x79 15594: 4b46 ldr r3, [pc, #280] ; (156b0 ) 15596: 4798 blx r3 lv_style_set_value_color(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 15598: 4b46 ldr r3, [pc, #280] ; (156b4 ) 1559a: 6818 ldr r0, [r3, #0] 1559c: 3010 adds r0, #16 1559e: 6a1b ldr r3, [r3, #32] 155a0: f013 0f02 tst.w r3, #2 155a4: f040 82e8 bne.w 15b78 155a8: 231f movs r3, #31 155aa: 213f movs r1, #63 ; 0x3f 155ac: 461c mov r4, r3 155ae: f04f 0200 mov.w r2, #0 155b2: f364 0204 bfi r2, r4, #0, #5 155b6: f361 124a bfi r2, r1, #5, #6 155ba: f363 22cf bfi r2, r3, #11, #5 155be: f241 0179 movw r1, #4217 ; 0x1079 155c2: 4d3b ldr r5, [pc, #236] ; (156b0 ) 155c4: 47a8 blx r5 lv_style_set_value_color(&styles->btn, LV_STATE_CHECKED, lv_color_hex(0xffffff)); 155c6: 4c3b ldr r4, [pc, #236] ; (156b4 ) 155c8: 6820 ldr r0, [r4, #0] 155ca: f04f 32ff mov.w r2, #4294967295 155ce: f240 1179 movw r1, #377 ; 0x179 155d2: 3010 adds r0, #16 155d4: 47a8 blx r5 lv_style_set_value_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); 155d6: 6820 ldr r0, [r4, #0] 155d8: f04f 32ff mov.w r2, #4294967295 155dc: f241 1179 movw r1, #4473 ; 0x1179 155e0: 3010 adds r0, #16 155e2: 47a8 blx r5 lv_style_set_value_color(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); 155e4: 6820 ldr r0, [r4, #0] 155e6: 2311 movs r3, #17 155e8: f04f 0200 mov.w r2, #0 155ec: f363 0204 bfi r2, r3, #0, #5 155f0: 2122 movs r1, #34 ; 0x22 155f2: f361 124a bfi r2, r1, #5, #6 155f6: f363 22cf bfi r2, r3, #11, #5 155fa: f242 0179 movw r1, #8313 ; 0x2079 155fe: 3010 adds r0, #16 15600: 47a8 blx r5 lv_style_set_pad_left(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 15602: 6824 ldr r4, [r4, #0] 15604: 3410 adds r4, #16 15606: 2000 movs r0, #0 15608: 4b2b ldr r3, [pc, #172] ; (156b8 ) 1560a: 4798 blx r3 1560c: eb00 0080 add.w r0, r0, r0, lsl #2 15610: 00c0 lsls r0, r0, #3 15612: 3050 adds r0, #80 ; 0x50 15614: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15618: f280 82b2 bge.w 15b80 1561c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1561e: 2112 movs r1, #18 15620: 4620 mov r0, r4 15622: 4b26 ldr r3, [pc, #152] ; (156bc ) 15624: 4798 blx r3 lv_style_set_pad_right(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 15626: 4b23 ldr r3, [pc, #140] ; (156b4 ) 15628: 681c ldr r4, [r3, #0] 1562a: 3410 adds r4, #16 1562c: 2000 movs r0, #0 1562e: 4b22 ldr r3, [pc, #136] ; (156b8 ) 15630: 4798 blx r3 15632: eb00 0080 add.w r0, r0, r0, lsl #2 15636: 00c0 lsls r0, r0, #3 15638: 3050 adds r0, #80 ; 0x50 1563a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1563e: f280 82ae bge.w 15b9e 15642: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 15644: 2113 movs r1, #19 15646: 4620 mov r0, r4 15648: 4b1c ldr r3, [pc, #112] ; (156bc ) 1564a: 4798 blx r3 lv_style_set_pad_top(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 1564c: 4b19 ldr r3, [pc, #100] ; (156b4 ) 1564e: 681c ldr r4, [r3, #0] 15650: 3410 adds r4, #16 15652: 2000 movs r0, #0 15654: 4b18 ldr r3, [pc, #96] ; (156b8 ) 15656: 4798 blx r3 15658: ebc0 1000 rsb r0, r0, r0, lsl #4 1565c: 3050 adds r0, #80 ; 0x50 1565e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15662: f280 82ab bge.w 15bbc 15666: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 15668: 2110 movs r1, #16 1566a: 4620 mov r0, r4 1566c: 4b13 ldr r3, [pc, #76] ; (156bc ) 1566e: 4798 blx r3 lv_style_set_pad_bottom(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 15670: 4b10 ldr r3, [pc, #64] ; (156b4 ) 15672: 681c ldr r4, [r3, #0] 15674: 3410 adds r4, #16 15676: 2000 movs r0, #0 15678: 4b0f ldr r3, [pc, #60] ; (156b8 ) 1567a: 4798 blx r3 1567c: ebc0 1000 rsb r0, r0, r0, lsl #4 15680: 3050 adds r0, #80 ; 0x50 15682: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15686: f280 82a7 bge.w 15bd8 1568a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 1568c: 2111 movs r1, #17 1568e: 4620 mov r0, r4 15690: 4b0a ldr r3, [pc, #40] ; (156bc ) 15692: 4798 blx r3 lv_style_set_pad_inner(&styles->btn, LV_STATE_DEFAULT, LV_DPX(20)); 15694: 4b07 ldr r3, [pc, #28] ; (156b4 ) 15696: 681c ldr r4, [r3, #0] 15698: 3410 adds r4, #16 1569a: 2000 movs r0, #0 1569c: 4b06 ldr r3, [pc, #24] ; (156b8 ) 1569e: 4798 blx r3 156a0: eb00 0080 add.w r0, r0, r0, lsl #2 156a4: 0080 lsls r0, r0, #2 156a6: 3050 adds r0, #80 ; 0x50 156a8: f5b0 7fa0 cmp.w r0, #320 ; 0x140 156ac: e00a b.n 156c4 156ae: bf00 nop 156b0: 00006a25 .word 0x00006a25 156b4: 20006bd8 .word 0x20006bd8 156b8: 00010f3d .word 0x00010f3d 156bc: 000068e1 .word 0x000068e1 156c0: 00006b69 .word 0x00006b69 156c4: f280 8296 bge.w 15bf4 156c8: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 156ca: 2114 movs r1, #20 156cc: 4620 mov r0, r4 156ce: 4dbd ldr r5, [pc, #756] ; (159c4 ) 156d0: 47a8 blx r5 lv_style_set_outline_width(&styles->btn, LV_STATE_DEFAULT, 3); 156d2: 4cbd ldr r4, [pc, #756] ; (159c8 ) 156d4: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 156d6: 2203 movs r2, #3 156d8: 2140 movs r1, #64 ; 0x40 156da: 3010 adds r0, #16 156dc: 47a8 blx r5 lv_style_set_outline_opa(&styles->btn, LV_STATE_DEFAULT, LV_OPA_0); 156de: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 156e0: 2200 movs r2, #0 156e2: 214c movs r1, #76 ; 0x4c 156e4: 3010 adds r0, #16 156e6: 4eb9 ldr r6, [pc, #740] ; (159cc ) 156e8: 47b0 blx r6 lv_style_set_outline_opa(&styles->btn, LV_STATE_FOCUSED, LV_OPA_50); 156ea: 6820 ldr r0, [r4, #0] 156ec: 227f movs r2, #127 ; 0x7f 156ee: f44f 7113 mov.w r1, #588 ; 0x24c 156f2: 3010 adds r0, #16 156f4: 47b0 blx r6 lv_style_set_outline_color(&styles->btn, LV_STATE_DEFAULT, theme.color_primary); 156f6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 156f8: 89a2 ldrh r2, [r4, #12] 156fa: 2149 movs r1, #73 ; 0x49 156fc: 3010 adds r0, #16 156fe: 4eb4 ldr r6, [pc, #720] ; (159d0 ) 15700: 47b0 blx r6 lv_style_set_outline_color(&styles->btn, LV_STATE_EDITED, theme.color_secondary); 15702: 6820 ldr r0, [r4, #0] 15704: 89e2 ldrh r2, [r4, #14] 15706: f240 4149 movw r1, #1097 ; 0x449 1570a: 3010 adds r0, #16 1570c: 47b0 blx r6 lv_style_set_transition_time(&styles->btn, LV_STATE_DEFAULT, TRANSITION_TIME); 1570e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 15710: 2296 movs r2, #150 ; 0x96 15712: 21b0 movs r1, #176 ; 0xb0 15714: 3010 adds r0, #16 15716: 47a8 blx r5 lv_style_set_transition_prop_4(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_BORDER_OPA); 15718: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_4, transition_prop_4, lv_style_int_t, _int, scalar) 1571a: 223c movs r2, #60 ; 0x3c 1571c: 21b5 movs r1, #181 ; 0xb5 1571e: 3010 adds r0, #16 15720: 47a8 blx r5 lv_style_set_transition_prop_5(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); 15722: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 15724: 2229 movs r2, #41 ; 0x29 15726: 21b6 movs r1, #182 ; 0xb6 15728: 3010 adds r0, #16 1572a: 47a8 blx r5 lv_style_set_transition_prop_6(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); 1572c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 1572e: 224c movs r2, #76 ; 0x4c 15730: 21b7 movs r1, #183 ; 0xb7 15732: 3010 adds r0, #16 15734: 47a8 blx r5 lv_style_set_transition_delay(&styles->btn, LV_STATE_DEFAULT, TRANSITION_TIME); 15736: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_DELAY, transition_delay, lv_style_int_t, _int, scalar) 15738: 2296 movs r2, #150 ; 0x96 1573a: 21b1 movs r1, #177 ; 0xb1 1573c: 3010 adds r0, #16 1573e: 47a8 blx r5 lv_style_set_transition_delay(&styles->btn, LV_STATE_PRESSED, 0); 15740: 6820 ldr r0, [r4, #0] 15742: 2200 movs r2, #0 15744: f241 01b1 movw r1, #4273 ; 0x10b1 15748: 3010 adds r0, #16 1574a: 47a8 blx r5 style_init_reset(&styles->pad_inner); 1574c: 6820 ldr r0, [r4, #0] 1574e: 3014 adds r0, #20 15750: 4ba0 ldr r3, [pc, #640] ; (159d4 ) 15752: 4798 blx r3 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 15754: 6824 ldr r4, [r4, #0] 15756: 3414 adds r4, #20 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 15758: 2000 movs r0, #0 1575a: 4b9f ldr r3, [pc, #636] ; (159d8 ) 1575c: 4798 blx r3 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 1575e: 2832 cmp r0, #50 ; 0x32 15760: f200 8266 bhi.w 15c30 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 15764: 2000 movs r0, #0 15766: 4b9d ldr r3, [pc, #628] ; (159dc ) 15768: 4798 blx r3 1576a: eb00 0080 add.w r0, r0, r0, lsl #2 1576e: 0080 lsls r0, r0, #2 15770: 3050 adds r0, #80 ; 0x50 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 15772: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15776: f280 824c bge.w 15c12 1577a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 1577c: 2114 movs r1, #20 1577e: 4620 mov r0, r4 15780: 4b90 ldr r3, [pc, #576] ; (159c4 ) 15782: 4798 blx r3 style_init_reset(&styles->pad_small); 15784: 4b90 ldr r3, [pc, #576] ; (159c8 ) 15786: 6818 ldr r0, [r3, #0] 15788: 3018 adds r0, #24 1578a: 4b92 ldr r3, [pc, #584] ; (159d4 ) 1578c: 4798 blx r3 lv_style_int_t pad_small_value = lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(10) : LV_DPX(20); 1578e: 2000 movs r0, #0 15790: 4b91 ldr r3, [pc, #580] ; (159d8 ) 15792: 4798 blx r3 15794: 2832 cmp r0, #50 ; 0x32 15796: f200 8275 bhi.w 15c84 1579a: 2000 movs r0, #0 1579c: 4b8f ldr r3, [pc, #572] ; (159dc ) 1579e: 4798 blx r3 157a0: eb00 0080 add.w r0, r0, r0, lsl #2 157a4: 0040 lsls r0, r0, #1 157a6: 3050 adds r0, #80 ; 0x50 157a8: f5b0 7fa0 cmp.w r0, #320 ; 0x140 157ac: f280 825b bge.w 15c66 157b0: 2401 movs r4, #1 lv_style_set_pad_left(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 157b2: 4e85 ldr r6, [pc, #532] ; (159c8 ) 157b4: 6830 ldr r0, [r6, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 157b6: 4622 mov r2, r4 157b8: 2112 movs r1, #18 157ba: 3018 adds r0, #24 157bc: 4d81 ldr r5, [pc, #516] ; (159c4 ) 157be: 47a8 blx r5 lv_style_set_pad_right(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 157c0: 6830 ldr r0, [r6, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 157c2: 4622 mov r2, r4 157c4: 2113 movs r1, #19 157c6: 3018 adds r0, #24 157c8: 47a8 blx r5 lv_style_set_pad_top(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 157ca: 6830 ldr r0, [r6, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 157cc: 4622 mov r2, r4 157ce: 2110 movs r1, #16 157d0: 3018 adds r0, #24 157d2: 47a8 blx r5 lv_style_set_pad_bottom(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 157d4: 6830 ldr r0, [r6, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 157d6: 4622 mov r2, r4 157d8: 2111 movs r1, #17 157da: 3018 adds r0, #24 157dc: 47a8 blx r5 lv_style_set_pad_inner(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 157de: 6830 ldr r0, [r6, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 157e0: 4622 mov r2, r4 157e2: 2114 movs r1, #20 157e4: 3018 adds r0, #24 157e6: 47a8 blx r5 157e8: bd70 pop {r4, r5, r6, pc} lv_style_set_radius(&styles->bg, LV_STATE_DEFAULT, LV_DPX(8)); 157ea: 2000 movs r0, #0 157ec: 4b7b ldr r3, [pc, #492] ; (159dc ) 157ee: 4798 blx r3 157f0: 300a adds r0, #10 157f2: 00c0 lsls r0, r0, #3 157f4: 4b7a ldr r3, [pc, #488] ; (159e0 ) 157f6: fb83 2300 smull r2, r3, r3, r0 157fa: 17c2 asrs r2, r0, #31 157fc: ebc2 12a3 rsb r2, r2, r3, asr #6 15800: b212 sxth r2, r2 15802: f7ff b9ad b.w 14b60 15806: 231f movs r3, #31 15808: 213f movs r1, #63 ; 0x3f 1580a: 461c mov r4, r3 1580c: f7ff b9bd b.w 14b8a lv_style_set_border_width(&styles->bg, LV_STATE_DEFAULT, BORDER_WIDTH); 15810: 2000 movs r0, #0 15812: 4b72 ldr r3, [pc, #456] ; (159dc ) 15814: 4798 blx r3 15816: 3028 adds r0, #40 ; 0x28 15818: 0040 lsls r0, r0, #1 1581a: 4b71 ldr r3, [pc, #452] ; (159e0 ) 1581c: fb83 2300 smull r2, r3, r3, r0 15820: 17c2 asrs r2, r0, #31 15822: ebc2 12a3 rsb r2, r2, r3, asr #6 15826: b212 sxth r2, r2 15828: f7ff b9ed b.w 14c06 1582c: 2307 movs r3, #7 1582e: 210f movs r1, #15 15830: 2408 movs r4, #8 15832: f7ff ba03 b.w 14c3c 15836: 2307 movs r3, #7 15838: 210f movs r1, #15 1583a: 2408 movs r4, #8 1583c: f7ff ba1b b.w 14c76 15840: 2307 movs r3, #7 15842: 210f movs r1, #15 15844: 2408 movs r4, #8 15846: f7ff ba2c b.w 14ca2 1584a: 2307 movs r3, #7 1584c: 210f movs r1, #15 1584e: 2408 movs r4, #8 15850: f7ff ba3e b.w 14cd0 lv_style_set_pad_left(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 15854: 2000 movs r0, #0 15856: 4b61 ldr r3, [pc, #388] ; (159dc ) 15858: 4798 blx r3 1585a: ebc0 1000 rsb r0, r0, r0, lsl #4 1585e: 3050 adds r0, #80 ; 0x50 15860: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15864: da02 bge.n 1586c 15866: 2401 movs r4, #1 15868: f7ff ba58 b.w 14d1c 1586c: 2000 movs r0, #0 1586e: 4b5b ldr r3, [pc, #364] ; (159dc ) 15870: 4798 blx r3 15872: ebc0 1000 rsb r0, r0, r0, lsl #4 15876: 3050 adds r0, #80 ; 0x50 15878: 4a59 ldr r2, [pc, #356] ; (159e0 ) 1587a: fb82 3200 smull r3, r2, r2, r0 1587e: 17c4 asrs r4, r0, #31 15880: ebc4 14a2 rsb r4, r4, r2, asr #6 15884: b2a4 uxth r4, r4 15886: f7ff ba49 b.w 14d1c 1588a: 2000 movs r0, #0 1588c: 4b53 ldr r3, [pc, #332] ; (159dc ) 1588e: 4798 blx r3 15890: ebc0 1000 rsb r0, r0, r0, lsl #4 15894: 0040 lsls r0, r0, #1 15896: 3050 adds r0, #80 ; 0x50 15898: 4a51 ldr r2, [pc, #324] ; (159e0 ) 1589a: fb82 3200 smull r3, r2, r2, r0 1589e: 17c4 asrs r4, r0, #31 158a0: ebc4 14a2 rsb r4, r4, r2, asr #6 158a4: b2a4 uxth r4, r4 158a6: f7ff ba39 b.w 14d1c 158aa: 2000 movs r0, #0 158ac: 4b4b ldr r3, [pc, #300] ; (159dc ) 158ae: 4798 blx r3 158b0: 3028 adds r0, #40 ; 0x28 158b2: 0040 lsls r0, r0, #1 158b4: 4b4a ldr r3, [pc, #296] ; (159e0 ) 158b6: fb83 2300 smull r2, r3, r3, r0 158ba: 17c2 asrs r2, r0, #31 158bc: ebc2 12a3 rsb r2, r2, r3, asr #6 158c0: b292 uxth r2, r2 158c2: f7ff ba35 b.w 14d30 lv_style_set_pad_right(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 158c6: 2000 movs r0, #0 158c8: 4b44 ldr r3, [pc, #272] ; (159dc ) 158ca: 4798 blx r3 158cc: ebc0 1000 rsb r0, r0, r0, lsl #4 158d0: 3050 adds r0, #80 ; 0x50 158d2: f5b0 7fa0 cmp.w r0, #320 ; 0x140 158d6: da02 bge.n 158de 158d8: 2401 movs r4, #1 158da: f7ff ba55 b.w 14d88 158de: 2000 movs r0, #0 158e0: 4b3e ldr r3, [pc, #248] ; (159dc ) 158e2: 4798 blx r3 158e4: ebc0 1000 rsb r0, r0, r0, lsl #4 158e8: 3050 adds r0, #80 ; 0x50 158ea: 4a3d ldr r2, [pc, #244] ; (159e0 ) 158ec: fb82 3200 smull r3, r2, r2, r0 158f0: 17c4 asrs r4, r0, #31 158f2: ebc4 14a2 rsb r4, r4, r2, asr #6 158f6: b2a4 uxth r4, r4 158f8: f7ff ba46 b.w 14d88 158fc: 2000 movs r0, #0 158fe: 4b37 ldr r3, [pc, #220] ; (159dc ) 15900: 4798 blx r3 15902: ebc0 1000 rsb r0, r0, r0, lsl #4 15906: 0040 lsls r0, r0, #1 15908: 3050 adds r0, #80 ; 0x50 1590a: 4a35 ldr r2, [pc, #212] ; (159e0 ) 1590c: fb82 3200 smull r3, r2, r2, r0 15910: 17c4 asrs r4, r0, #31 15912: ebc4 14a2 rsb r4, r4, r2, asr #6 15916: b2a4 uxth r4, r4 15918: f7ff ba36 b.w 14d88 1591c: 2000 movs r0, #0 1591e: 4b2f ldr r3, [pc, #188] ; (159dc ) 15920: 4798 blx r3 15922: 3028 adds r0, #40 ; 0x28 15924: 0040 lsls r0, r0, #1 15926: 4b2e ldr r3, [pc, #184] ; (159e0 ) 15928: fb83 2300 smull r2, r3, r3, r0 1592c: 17c2 asrs r2, r0, #31 1592e: ebc2 12a3 rsb r2, r2, r3, asr #6 15932: b292 uxth r2, r2 15934: f7ff ba32 b.w 14d9c lv_style_set_pad_top(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 15938: 2000 movs r0, #0 1593a: 4b28 ldr r3, [pc, #160] ; (159dc ) 1593c: 4798 blx r3 1593e: ebc0 1000 rsb r0, r0, r0, lsl #4 15942: 3050 adds r0, #80 ; 0x50 15944: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15948: da02 bge.n 15950 1594a: 2401 movs r4, #1 1594c: f7ff ba41 b.w 14dd2 15950: 2000 movs r0, #0 15952: 4b22 ldr r3, [pc, #136] ; (159dc ) 15954: 4798 blx r3 15956: ebc0 1000 rsb r0, r0, r0, lsl #4 1595a: 3050 adds r0, #80 ; 0x50 1595c: 4a20 ldr r2, [pc, #128] ; (159e0 ) 1595e: fb82 3200 smull r3, r2, r2, r0 15962: 17c4 asrs r4, r0, #31 15964: ebc4 14a2 rsb r4, r4, r2, asr #6 15968: b2a4 uxth r4, r4 1596a: f7ff ba32 b.w 14dd2 1596e: 2000 movs r0, #0 15970: 4b1a ldr r3, [pc, #104] ; (159dc ) 15972: 4798 blx r3 15974: ebc0 1000 rsb r0, r0, r0, lsl #4 15978: 0040 lsls r0, r0, #1 1597a: 3050 adds r0, #80 ; 0x50 1597c: 4a18 ldr r2, [pc, #96] ; (159e0 ) 1597e: fb82 3200 smull r3, r2, r2, r0 15982: 17c4 asrs r4, r0, #31 15984: ebc4 14a2 rsb r4, r4, r2, asr #6 15988: b2a4 uxth r4, r4 1598a: f7ff ba22 b.w 14dd2 1598e: 2000 movs r0, #0 15990: 4b12 ldr r3, [pc, #72] ; (159dc ) 15992: 4798 blx r3 15994: 3028 adds r0, #40 ; 0x28 15996: 0040 lsls r0, r0, #1 15998: 4b11 ldr r3, [pc, #68] ; (159e0 ) 1599a: fb83 2300 smull r2, r3, r3, r0 1599e: 17c2 asrs r2, r0, #31 159a0: ebc2 12a3 rsb r2, r2, r3, asr #6 159a4: b292 uxth r2, r2 159a6: f7ff ba1e b.w 14de6 lv_style_set_pad_bottom(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 159aa: 2000 movs r0, #0 159ac: 4b0b ldr r3, [pc, #44] ; (159dc ) 159ae: 4798 blx r3 159b0: ebc0 1000 rsb r0, r0, r0, lsl #4 159b4: 3050 adds r0, #80 ; 0x50 159b6: f5b0 7fa0 cmp.w r0, #320 ; 0x140 159ba: da13 bge.n 159e4 159bc: 2401 movs r4, #1 159be: f7ff ba2d b.w 14e1c 159c2: bf00 nop 159c4: 000068e1 .word 0x000068e1 159c8: 20006bd8 .word 0x20006bd8 159cc: 00006b69 .word 0x00006b69 159d0: 00006a25 .word 0x00006a25 159d4: 00014a61 .word 0x00014a61 159d8: 00010f59 .word 0x00010f59 159dc: 00010f3d .word 0x00010f3d 159e0: 66666667 .word 0x66666667 159e4: 2000 movs r0, #0 159e6: 4bb5 ldr r3, [pc, #724] ; (15cbc ) 159e8: 4798 blx r3 159ea: ebc0 1000 rsb r0, r0, r0, lsl #4 159ee: 3050 adds r0, #80 ; 0x50 159f0: 4ab3 ldr r2, [pc, #716] ; (15cc0 ) 159f2: fb82 3200 smull r3, r2, r2, r0 159f6: 17c4 asrs r4, r0, #31 159f8: ebc4 14a2 rsb r4, r4, r2, asr #6 159fc: b2a4 uxth r4, r4 159fe: f7ff ba0d b.w 14e1c 15a02: 2000 movs r0, #0 15a04: 4bad ldr r3, [pc, #692] ; (15cbc ) 15a06: 4798 blx r3 15a08: ebc0 1000 rsb r0, r0, r0, lsl #4 15a0c: 0040 lsls r0, r0, #1 15a0e: 3050 adds r0, #80 ; 0x50 15a10: 4aab ldr r2, [pc, #684] ; (15cc0 ) 15a12: fb82 3200 smull r3, r2, r2, r0 15a16: 17c4 asrs r4, r0, #31 15a18: ebc4 14a2 rsb r4, r4, r2, asr #6 15a1c: b2a4 uxth r4, r4 15a1e: f7ff b9fd b.w 14e1c 15a22: 2000 movs r0, #0 15a24: 4ba5 ldr r3, [pc, #660] ; (15cbc ) 15a26: 4798 blx r3 15a28: 3028 adds r0, #40 ; 0x28 15a2a: 0040 lsls r0, r0, #1 15a2c: 4ba4 ldr r3, [pc, #656] ; (15cc0 ) 15a2e: fb83 2300 smull r2, r3, r3, r0 15a32: 17c2 asrs r2, r0, #31 15a34: ebc2 12a3 rsb r2, r2, r3, asr #6 15a38: b292 uxth r2, r2 15a3a: f7ff b9f9 b.w 14e30 lv_style_set_pad_inner(&styles->bg, LV_STATE_DEFAULT, PAD_DEF); 15a3e: 2000 movs r0, #0 15a40: 4b9e ldr r3, [pc, #632] ; (15cbc ) 15a42: 4798 blx r3 15a44: ebc0 1000 rsb r0, r0, r0, lsl #4 15a48: 3050 adds r0, #80 ; 0x50 15a4a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15a4e: da02 bge.n 15a56 15a50: 2201 movs r2, #1 15a52: f7ff ba08 b.w 14e66 15a56: 2000 movs r0, #0 15a58: 4b98 ldr r3, [pc, #608] ; (15cbc ) 15a5a: 4798 blx r3 15a5c: ebc0 1000 rsb r0, r0, r0, lsl #4 15a60: 3050 adds r0, #80 ; 0x50 15a62: 4b97 ldr r3, [pc, #604] ; (15cc0 ) 15a64: fb83 2300 smull r2, r3, r3, r0 15a68: 17c2 asrs r2, r0, #31 15a6a: ebc2 12a3 rsb r2, r2, r3, asr #6 15a6e: b212 sxth r2, r2 15a70: f7ff b9f9 b.w 14e66 15a74: 2000 movs r0, #0 15a76: 4b91 ldr r3, [pc, #580] ; (15cbc ) 15a78: 4798 blx r3 15a7a: ebc0 1000 rsb r0, r0, r0, lsl #4 15a7e: 0040 lsls r0, r0, #1 15a80: 3050 adds r0, #80 ; 0x50 15a82: 4b8f ldr r3, [pc, #572] ; (15cc0 ) 15a84: fb83 2300 smull r2, r3, r3, r0 15a88: 17c2 asrs r2, r0, #31 15a8a: ebc2 12a3 rsb r2, r2, r3, asr #6 15a8e: b212 sxth r2, r2 15a90: f7ff b9e9 b.w 14e66 15a94: 231b movs r3, #27 15a96: 2139 movs r1, #57 ; 0x39 15a98: 241d movs r4, #29 15a9a: f7ff ba20 b.w 14ede 15a9e: 231d movs r3, #29 15aa0: 213b movs r1, #59 ; 0x3b 15aa2: 461c mov r4, r3 15aa4: f7ff ba9f b.w 14fe6 15aa8: 231f movs r3, #31 15aaa: 213f movs r1, #63 ; 0x3f 15aac: 461c mov r4, r3 15aae: f7ff bad3 b.w 15058 15ab2: 2319 movs r3, #25 15ab4: 2133 movs r1, #51 ; 0x33 15ab6: 461c mov r4, r3 15ab8: f7ff baf7 b.w 150aa 15abc: 2307 movs r3, #7 15abe: 210f movs r1, #15 15ac0: 2408 movs r4, #8 15ac2: f7ff bb5a b.w 1517a 15ac6: 2307 movs r3, #7 15ac8: 210f movs r1, #15 15aca: 2408 movs r4, #8 15acc: f7ff bb91 b.w 151f2 15ad0: 231f movs r3, #31 15ad2: 213f movs r1, #63 ; 0x3f 15ad4: 461c mov r4, r3 15ad6: f7ff bbde b.w 15296 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 15ada: 4d7a ldr r5, [pc, #488] ; (15cc4 ) 15adc: 7b6b ldrb r3, [r5, #13] 15ade: 08db lsrs r3, r3, #3 15ae0: 214c movs r1, #76 ; 0x4c 15ae2: fb01 f303 mul.w r3, r1, r3 15ae6: f203 73b1 addw r3, r3, #1969 ; 0x7b1 15aea: eb03 2203 add.w r2, r3, r3, lsl #8 15aee: eb03 13c2 add.w r3, r3, r2, lsl #7 15af2: f3c3 53c4 ubfx r3, r3, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 15af6: 89ac ldrh r4, [r5, #12] 15af8: f3c4 1445 ubfx r4, r4, #5, #6 15afc: f241 02c8 movw r2, #4296 ; 0x10c8 15b00: fb01 2404 mla r4, r1, r4, r2 15b04: eb04 2204 add.w r2, r4, r4, lsl #8 15b08: eb04 14c2 add.w r4, r4, r2, lsl #7 15b0c: f3c4 54c5 ubfx r4, r4, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 15b10: 7b2a ldrb r2, [r5, #12] 15b12: f002 021f and.w r2, r2, #31 15b16: fb01 f102 mul.w r1, r1, r2 15b1a: f601 11ca addw r1, r1, #2506 ; 0x9ca 15b1e: eb01 2201 add.w r2, r1, r1, lsl #8 15b22: eb01 11c2 add.w r1, r1, r2, lsl #7 15b26: f3c1 51c4 ubfx r1, r1, #23, #5 15b2a: f7ff bbf5 b.w 15318 15b2e: 231f movs r3, #31 15b30: 213f movs r1, #63 ; 0x3f 15b32: 461c mov r4, r3 15b34: e425 b.n 15382 lv_style_set_border_width(&styles->btn, LV_STATE_DEFAULT, BORDER_WIDTH); 15b36: 2000 movs r0, #0 15b38: 4b60 ldr r3, [pc, #384] ; (15cbc ) 15b3a: 4798 blx r3 15b3c: 3028 adds r0, #40 ; 0x28 15b3e: 0040 lsls r0, r0, #1 15b40: 4b5f ldr r3, [pc, #380] ; (15cc0 ) 15b42: fb83 2300 smull r2, r3, r3, r0 15b46: 17c2 asrs r2, r0, #31 15b48: ebc2 12a3 rsb r2, r2, r3, asr #6 15b4c: b212 sxth r2, r2 15b4e: e46c b.n 1542a 15b50: 2306 movs r3, #6 15b52: 2110 movs r1, #16 15b54: 2409 movs r4, #9 15b56: e47e b.n 15456 15b58: 2306 movs r3, #6 15b5a: 2110 movs r1, #16 15b5c: 2409 movs r4, #9 15b5e: e491 b.n 15484 15b60: 2306 movs r3, #6 15b62: 2110 movs r1, #16 15b64: 2409 movs r4, #9 15b66: e4c1 b.n 154ec 15b68: 2306 movs r3, #6 15b6a: 2110 movs r1, #16 15b6c: 2409 movs r4, #9 15b6e: e4d4 b.n 1551a 15b70: 2306 movs r3, #6 15b72: 2110 movs r1, #16 15b74: 2409 movs r4, #9 15b76: e504 b.n 15582 15b78: 2306 movs r3, #6 15b7a: 2110 movs r1, #16 15b7c: 2409 movs r4, #9 15b7e: e516 b.n 155ae lv_style_set_pad_left(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 15b80: 2000 movs r0, #0 15b82: 4b4e ldr r3, [pc, #312] ; (15cbc ) 15b84: 4798 blx r3 15b86: eb00 0080 add.w r0, r0, r0, lsl #2 15b8a: 00c0 lsls r0, r0, #3 15b8c: 3050 adds r0, #80 ; 0x50 15b8e: 4b4c ldr r3, [pc, #304] ; (15cc0 ) 15b90: fb83 2300 smull r2, r3, r3, r0 15b94: 17c2 asrs r2, r0, #31 15b96: ebc2 12a3 rsb r2, r2, r3, asr #6 15b9a: b212 sxth r2, r2 15b9c: e53f b.n 1561e lv_style_set_pad_right(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 15b9e: 2000 movs r0, #0 15ba0: 4b46 ldr r3, [pc, #280] ; (15cbc ) 15ba2: 4798 blx r3 15ba4: eb00 0080 add.w r0, r0, r0, lsl #2 15ba8: 00c0 lsls r0, r0, #3 15baa: 3050 adds r0, #80 ; 0x50 15bac: 4b44 ldr r3, [pc, #272] ; (15cc0 ) 15bae: fb83 2300 smull r2, r3, r3, r0 15bb2: 17c2 asrs r2, r0, #31 15bb4: ebc2 12a3 rsb r2, r2, r3, asr #6 15bb8: b212 sxth r2, r2 15bba: e543 b.n 15644 lv_style_set_pad_top(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 15bbc: 2000 movs r0, #0 15bbe: 4b3f ldr r3, [pc, #252] ; (15cbc ) 15bc0: 4798 blx r3 15bc2: ebc0 1000 rsb r0, r0, r0, lsl #4 15bc6: 3050 adds r0, #80 ; 0x50 15bc8: 4b3d ldr r3, [pc, #244] ; (15cc0 ) 15bca: fb83 2300 smull r2, r3, r3, r0 15bce: 17c2 asrs r2, r0, #31 15bd0: ebc2 12a3 rsb r2, r2, r3, asr #6 15bd4: b212 sxth r2, r2 15bd6: e547 b.n 15668 lv_style_set_pad_bottom(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 15bd8: 2000 movs r0, #0 15bda: 4b38 ldr r3, [pc, #224] ; (15cbc ) 15bdc: 4798 blx r3 15bde: ebc0 1000 rsb r0, r0, r0, lsl #4 15be2: 3050 adds r0, #80 ; 0x50 15be4: 4b36 ldr r3, [pc, #216] ; (15cc0 ) 15be6: fb83 2300 smull r2, r3, r3, r0 15bea: 17c2 asrs r2, r0, #31 15bec: ebc2 12a3 rsb r2, r2, r3, asr #6 15bf0: b212 sxth r2, r2 15bf2: e54b b.n 1568c lv_style_set_pad_inner(&styles->btn, LV_STATE_DEFAULT, LV_DPX(20)); 15bf4: 2000 movs r0, #0 15bf6: 4b31 ldr r3, [pc, #196] ; (15cbc ) 15bf8: 4798 blx r3 15bfa: eb00 0080 add.w r0, r0, r0, lsl #2 15bfe: 0080 lsls r0, r0, #2 15c00: 3050 adds r0, #80 ; 0x50 15c02: 4b2f ldr r3, [pc, #188] ; (15cc0 ) 15c04: fb83 2300 smull r2, r3, r3, r0 15c08: 17c2 asrs r2, r0, #31 15c0a: ebc2 12a3 rsb r2, r2, r3, asr #6 15c0e: b212 sxth r2, r2 15c10: e55b b.n 156ca lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 15c12: 2000 movs r0, #0 15c14: 4b29 ldr r3, [pc, #164] ; (15cbc ) 15c16: 4798 blx r3 15c18: eb00 0080 add.w r0, r0, r0, lsl #2 15c1c: 0080 lsls r0, r0, #2 15c1e: 3050 adds r0, #80 ; 0x50 15c20: 4b27 ldr r3, [pc, #156] ; (15cc0 ) 15c22: fb83 2300 smull r2, r3, r3, r0 15c26: 17c2 asrs r2, r0, #31 15c28: ebc2 12a3 rsb r2, r2, r3, asr #6 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 15c2c: b212 sxth r2, r2 15c2e: e5a5 b.n 1577c lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 15c30: 2000 movs r0, #0 15c32: 4b22 ldr r3, [pc, #136] ; (15cbc ) 15c34: 4798 blx r3 15c36: eb00 0080 add.w r0, r0, r0, lsl #2 15c3a: 00c0 lsls r0, r0, #3 15c3c: 3050 adds r0, #80 ; 0x50 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 15c3e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15c42: da01 bge.n 15c48 15c44: 2201 movs r2, #1 15c46: e599 b.n 1577c lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 15c48: 2000 movs r0, #0 15c4a: 4b1c ldr r3, [pc, #112] ; (15cbc ) 15c4c: 4798 blx r3 15c4e: eb00 0080 add.w r0, r0, r0, lsl #2 15c52: 00c0 lsls r0, r0, #3 15c54: 3050 adds r0, #80 ; 0x50 15c56: 4b1a ldr r3, [pc, #104] ; (15cc0 ) 15c58: fb83 2300 smull r2, r3, r3, r0 15c5c: 17c2 asrs r2, r0, #31 15c5e: ebc2 12a3 rsb r2, r2, r3, asr #6 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 15c62: b212 sxth r2, r2 15c64: e58a b.n 1577c lv_style_int_t pad_small_value = lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(10) : LV_DPX(20); 15c66: 2000 movs r0, #0 15c68: 4b14 ldr r3, [pc, #80] ; (15cbc ) 15c6a: 4798 blx r3 15c6c: eb00 0080 add.w r0, r0, r0, lsl #2 15c70: 0040 lsls r0, r0, #1 15c72: 3050 adds r0, #80 ; 0x50 15c74: 4b12 ldr r3, [pc, #72] ; (15cc0 ) 15c76: fb83 2300 smull r2, r3, r3, r0 15c7a: 17c4 asrs r4, r0, #31 15c7c: ebc4 14a3 rsb r4, r4, r3, asr #6 15c80: b224 sxth r4, r4 15c82: e596 b.n 157b2 15c84: 2000 movs r0, #0 15c86: 4b0d ldr r3, [pc, #52] ; (15cbc ) 15c88: 4798 blx r3 15c8a: eb00 0080 add.w r0, r0, r0, lsl #2 15c8e: 0080 lsls r0, r0, #2 15c90: 3050 adds r0, #80 ; 0x50 15c92: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15c96: da01 bge.n 15c9c 15c98: 2401 movs r4, #1 15c9a: e58a b.n 157b2 15c9c: 2000 movs r0, #0 15c9e: 4b07 ldr r3, [pc, #28] ; (15cbc ) 15ca0: 4798 blx r3 15ca2: eb00 0080 add.w r0, r0, r0, lsl #2 15ca6: 0080 lsls r0, r0, #2 15ca8: 3050 adds r0, #80 ; 0x50 15caa: 4b05 ldr r3, [pc, #20] ; (15cc0 ) 15cac: fb83 2300 smull r2, r3, r3, r0 15cb0: 17c4 asrs r4, r0, #31 15cb2: ebc4 14a3 rsb r4, r4, r3, asr #6 15cb6: b224 sxth r4, r4 15cb8: e57b b.n 157b2 15cba: bf00 nop 15cbc: 00010f3d .word 0x00010f3d 15cc0: 66666667 .word 0x66666667 15cc4: 20006bd8 .word 0x20006bd8 00015cc8 : { 15cc8: b5f8 push {r3, r4, r5, r6, r7, lr} style_init_reset(&styles->bar_bg); 15cca: 4c54 ldr r4, [pc, #336] ; (15e1c ) 15ccc: 6820 ldr r0, [r4, #0] 15cce: 3024 adds r0, #36 ; 0x24 15cd0: 4b53 ldr r3, [pc, #332] ; (15e20 ) 15cd2: 4798 blx r3 lv_style_set_radius(&styles->bar_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 15cd4: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 15cd6: f647 72ff movw r2, #32767 ; 0x7fff 15cda: 2101 movs r1, #1 15cdc: 3024 adds r0, #36 ; 0x24 15cde: 4b51 ldr r3, [pc, #324] ; (15e24 ) 15ce0: 4798 blx r3 lv_style_set_bg_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_COVER); 15ce2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 15ce4: 22ff movs r2, #255 ; 0xff 15ce6: 212c movs r1, #44 ; 0x2c 15ce8: 3024 adds r0, #36 ; 0x24 15cea: 4b4f ldr r3, [pc, #316] ; (15e28 ) 15cec: 4798 blx r3 lv_style_set_bg_color(&styles->bar_bg, LV_STATE_DEFAULT, COLOR_BG_SEC); 15cee: 6820 ldr r0, [r4, #0] 15cf0: 6a23 ldr r3, [r4, #32] 15cf2: f013 0302 ands.w r3, r3, #2 15cf6: bf14 ite ne 15cf8: 211a movne r1, #26 15cfa: 2108 moveq r1, #8 15cfc: 2b00 cmp r3, #0 15cfe: bf15 itete ne 15d00: 2435 movne r4, #53 ; 0x35 15d02: 2412 moveq r4, #18 15d04: 231b movne r3, #27 15d06: 2309 moveq r3, #9 15d08: f04f 0200 mov.w r2, #0 15d0c: f363 0204 bfi r2, r3, #0, #5 15d10: f364 124a bfi r2, r4, #5, #6 15d14: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 15d18: 2129 movs r1, #41 ; 0x29 15d1a: 3024 adds r0, #36 ; 0x24 15d1c: 4b43 ldr r3, [pc, #268] ; (15e2c ) 15d1e: 4798 blx r3 lv_style_set_value_color(&styles->bar_bg, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 15d20: 4b3e ldr r3, [pc, #248] ; (15e1c ) 15d22: 6818 ldr r0, [r3, #0] 15d24: 3024 adds r0, #36 ; 0x24 15d26: 6a1b ldr r3, [r3, #32] 15d28: f013 0f02 tst.w r3, #2 15d2c: d16d bne.n 15e0a 15d2e: 231f movs r3, #31 15d30: 213f movs r1, #63 ; 0x3f 15d32: 461c mov r4, r3 15d34: f04f 0200 mov.w r2, #0 15d38: f364 0204 bfi r2, r4, #0, #5 15d3c: f361 124a bfi r2, r1, #5, #6 15d40: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 15d44: 2179 movs r1, #121 ; 0x79 15d46: 4d39 ldr r5, [pc, #228] ; (15e2c ) 15d48: 47a8 blx r5 lv_style_set_outline_color(&styles->bar_bg, LV_STATE_DEFAULT, theme.color_primary); 15d4a: 4c34 ldr r4, [pc, #208] ; (15e1c ) 15d4c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 15d4e: 89a2 ldrh r2, [r4, #12] 15d50: 2149 movs r1, #73 ; 0x49 15d52: 3024 adds r0, #36 ; 0x24 15d54: 47a8 blx r5 lv_style_set_outline_color(&styles->bar_bg, LV_STATE_EDITED, theme.color_secondary); 15d56: 6820 ldr r0, [r4, #0] 15d58: 89e2 ldrh r2, [r4, #14] 15d5a: f240 4149 movw r1, #1097 ; 0x449 15d5e: 3024 adds r0, #36 ; 0x24 15d60: 47a8 blx r5 lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_TRANSP); 15d62: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 15d64: 2200 movs r2, #0 15d66: 214c movs r1, #76 ; 0x4c 15d68: 3024 adds r0, #36 ; 0x24 15d6a: 4f2f ldr r7, [pc, #188] ; (15e28 ) 15d6c: 47b8 blx r7 lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_FOCUSED, LV_OPA_50); 15d6e: 6820 ldr r0, [r4, #0] 15d70: 227f movs r2, #127 ; 0x7f 15d72: f44f 7113 mov.w r1, #588 ; 0x24c 15d76: 3024 adds r0, #36 ; 0x24 15d78: 47b8 blx r7 lv_style_set_outline_width(&styles->bar_bg, LV_STATE_DEFAULT, 3); 15d7a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 15d7c: 2203 movs r2, #3 15d7e: 2140 movs r1, #64 ; 0x40 15d80: 3024 adds r0, #36 ; 0x24 15d82: 4e28 ldr r6, [pc, #160] ; (15e24 ) 15d84: 47b0 blx r6 lv_style_set_transition_time(&styles->bar_bg, LV_STATE_DEFAULT, TRANSITION_TIME); 15d86: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 15d88: 2296 movs r2, #150 ; 0x96 15d8a: 21b0 movs r1, #176 ; 0xb0 15d8c: 3024 adds r0, #36 ; 0x24 15d8e: 47b0 blx r6 lv_style_set_transition_prop_6(&styles->bar_bg, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); 15d90: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 15d92: 224c movs r2, #76 ; 0x4c 15d94: 21b7 movs r1, #183 ; 0xb7 15d96: 3024 adds r0, #36 ; 0x24 15d98: 47b0 blx r6 style_init_reset(&styles->bar_indic); 15d9a: 6820 ldr r0, [r4, #0] 15d9c: 3028 adds r0, #40 ; 0x28 15d9e: 4b20 ldr r3, [pc, #128] ; (15e20 ) 15da0: 4798 blx r3 lv_style_set_bg_opa(&styles->bar_indic, LV_STATE_DEFAULT, LV_OPA_COVER); 15da2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 15da4: 22ff movs r2, #255 ; 0xff 15da6: 212c movs r1, #44 ; 0x2c 15da8: 3028 adds r0, #40 ; 0x28 15daa: 47b8 blx r7 lv_style_set_radius(&styles->bar_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 15dac: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 15dae: f647 72ff movw r2, #32767 ; 0x7fff 15db2: 2101 movs r1, #1 15db4: 3028 adds r0, #40 ; 0x28 15db6: 47b0 blx r6 lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DEFAULT, theme.color_primary); 15db8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 15dba: 89a2 ldrh r2, [r4, #12] 15dbc: 2129 movs r1, #41 ; 0x29 15dbe: 3028 adds r0, #40 ; 0x28 15dc0: 47a8 blx r5 lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DISABLED, lv_color_hex3(0x888)); 15dc2: 6820 ldr r0, [r4, #0] 15dc4: 2311 movs r3, #17 15dc6: f04f 0200 mov.w r2, #0 15dca: f363 0204 bfi r2, r3, #0, #5 15dce: 2122 movs r1, #34 ; 0x22 15dd0: f361 124a bfi r2, r1, #5, #6 15dd4: f363 22cf bfi r2, r3, #11, #5 15dd8: f242 0129 movw r1, #8233 ; 0x2029 15ddc: 3028 adds r0, #40 ; 0x28 15dde: 47a8 blx r5 lv_style_set_value_color(&styles->bar_indic, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x41404f) : LV_COLOR_WHITE); 15de0: 6820 ldr r0, [r4, #0] 15de2: 3028 adds r0, #40 ; 0x28 15de4: 6a23 ldr r3, [r4, #32] 15de6: f013 0f02 tst.w r3, #2 15dea: d112 bne.n 15e12 15dec: 231f movs r3, #31 15dee: 213f movs r1, #63 ; 0x3f 15df0: 461c mov r4, r3 15df2: f04f 0200 mov.w r2, #0 15df6: f364 0204 bfi r2, r4, #0, #5 15dfa: f361 124a bfi r2, r1, #5, #6 15dfe: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 15e02: 2179 movs r1, #121 ; 0x79 15e04: 4b09 ldr r3, [pc, #36] ; (15e2c ) 15e06: 4798 blx r3 15e08: bdf8 pop {r3, r4, r5, r6, r7, pc} 15e0a: 2306 movs r3, #6 15e0c: 2110 movs r1, #16 15e0e: 2409 movs r4, #9 15e10: e790 b.n 15d34 15e12: 2308 movs r3, #8 15e14: 2110 movs r1, #16 15e16: 2409 movs r4, #9 15e18: e7eb b.n 15df2 15e1a: bf00 nop 15e1c: 20006bd8 .word 0x20006bd8 15e20: 00014a61 .word 0x00014a61 15e24: 000068e1 .word 0x000068e1 15e28: 00006b69 .word 0x00006b69 15e2c: 00006a25 .word 0x00006a25 00015e30 : { 15e30: b510 push {r4, lr} style_init_reset(&styles->slider_knob); 15e32: 4ca0 ldr r4, [pc, #640] ; (160b4 ) 15e34: 6820 ldr r0, [r4, #0] 15e36: 3090 adds r0, #144 ; 0x90 15e38: 4b9f ldr r3, [pc, #636] ; (160b8 ) 15e3a: 4798 blx r3 lv_style_set_bg_opa(&styles->slider_knob, LV_STATE_DEFAULT, LV_OPA_COVER); 15e3c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 15e3e: 22ff movs r2, #255 ; 0xff 15e40: 212c movs r1, #44 ; 0x2c 15e42: 3090 adds r0, #144 ; 0x90 15e44: 4b9d ldr r3, [pc, #628] ; (160bc ) 15e46: 4798 blx r3 lv_style_set_bg_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? theme.color_primary : LV_COLOR_WHITE); 15e48: 6820 ldr r0, [r4, #0] 15e4a: 3090 adds r0, #144 ; 0x90 15e4c: 6a23 ldr r3, [r4, #32] 15e4e: f013 0f02 tst.w r3, #2 15e52: bf19 ittee ne 15e54: 4623 movne r3, r4 15e56: 899a ldrhne r2, [r3, #12] 15e58: 4b99 ldreq r3, [pc, #612] ; (160c0 ) 15e5a: 881a ldrheq r2, [r3, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 15e5c: 2129 movs r1, #41 ; 0x29 15e5e: 4b99 ldr r3, [pc, #612] ; (160c4 ) 15e60: 4798 blx r3 lv_style_set_value_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 15e62: 4b94 ldr r3, [pc, #592] ; (160b4 ) 15e64: 6818 ldr r0, [r3, #0] 15e66: 3090 adds r0, #144 ; 0x90 15e68: 6a1b ldr r3, [r3, #32] 15e6a: f013 0f02 tst.w r3, #2 15e6e: f040 80a9 bne.w 15fc4 15e72: 231f movs r3, #31 15e74: 213f movs r1, #63 ; 0x3f 15e76: 461c mov r4, r3 15e78: f04f 0200 mov.w r2, #0 15e7c: f364 0204 bfi r2, r4, #0, #5 15e80: f361 124a bfi r2, r1, #5, #6 15e84: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 15e88: 2179 movs r1, #121 ; 0x79 15e8a: 4b8e ldr r3, [pc, #568] ; (160c4 ) 15e8c: 4798 blx r3 lv_style_set_radius(&styles->slider_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 15e8e: 4c89 ldr r4, [pc, #548] ; (160b4 ) 15e90: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 15e92: f647 72ff movw r2, #32767 ; 0x7fff 15e96: 2101 movs r1, #1 15e98: 3090 adds r0, #144 ; 0x90 15e9a: 4b8b ldr r3, [pc, #556] ; (160c8 ) 15e9c: 4798 blx r3 lv_style_set_pad_left(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15e9e: 6824 ldr r4, [r4, #0] 15ea0: 3490 adds r4, #144 ; 0x90 15ea2: 2000 movs r0, #0 15ea4: 4b89 ldr r3, [pc, #548] ; (160cc ) 15ea6: 4798 blx r3 15ea8: ebc0 00c0 rsb r0, r0, r0, lsl #3 15eac: 3050 adds r0, #80 ; 0x50 15eae: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15eb2: f280 808b bge.w 15fcc 15eb6: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 15eb8: 2112 movs r1, #18 15eba: 4620 mov r0, r4 15ebc: 4b82 ldr r3, [pc, #520] ; (160c8 ) 15ebe: 4798 blx r3 lv_style_set_pad_right(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15ec0: 4b7c ldr r3, [pc, #496] ; (160b4 ) 15ec2: 681c ldr r4, [r3, #0] 15ec4: 3490 adds r4, #144 ; 0x90 15ec6: 2000 movs r0, #0 15ec8: 4b80 ldr r3, [pc, #512] ; (160cc ) 15eca: 4798 blx r3 15ecc: ebc0 00c0 rsb r0, r0, r0, lsl #3 15ed0: 3050 adds r0, #80 ; 0x50 15ed2: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15ed6: f280 8087 bge.w 15fe8 15eda: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 15edc: 2113 movs r1, #19 15ede: 4620 mov r0, r4 15ee0: 4b79 ldr r3, [pc, #484] ; (160c8 ) 15ee2: 4798 blx r3 lv_style_set_pad_top(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15ee4: 4b73 ldr r3, [pc, #460] ; (160b4 ) 15ee6: 681c ldr r4, [r3, #0] 15ee8: 3490 adds r4, #144 ; 0x90 15eea: 2000 movs r0, #0 15eec: 4b77 ldr r3, [pc, #476] ; (160cc ) 15eee: 4798 blx r3 15ef0: ebc0 00c0 rsb r0, r0, r0, lsl #3 15ef4: 3050 adds r0, #80 ; 0x50 15ef6: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15efa: f280 8083 bge.w 16004 15efe: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 15f00: 2110 movs r1, #16 15f02: 4620 mov r0, r4 15f04: 4b70 ldr r3, [pc, #448] ; (160c8 ) 15f06: 4798 blx r3 lv_style_set_pad_bottom(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15f08: 4b6a ldr r3, [pc, #424] ; (160b4 ) 15f0a: 681c ldr r4, [r3, #0] 15f0c: 3490 adds r4, #144 ; 0x90 15f0e: 2000 movs r0, #0 15f10: 4b6e ldr r3, [pc, #440] ; (160cc ) 15f12: 4798 blx r3 15f14: ebc0 00c0 rsb r0, r0, r0, lsl #3 15f18: 3050 adds r0, #80 ; 0x50 15f1a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15f1e: da7f bge.n 16020 15f20: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 15f22: 2111 movs r1, #17 15f24: 4620 mov r0, r4 15f26: 4b68 ldr r3, [pc, #416] ; (160c8 ) 15f28: 4798 blx r3 style_init_reset(&styles->slider_bg); 15f2a: 4c62 ldr r4, [pc, #392] ; (160b4 ) 15f2c: 6820 ldr r0, [r4, #0] 15f2e: 3094 adds r0, #148 ; 0x94 15f30: 4b61 ldr r3, [pc, #388] ; (160b8 ) 15f32: 4798 blx r3 lv_style_set_margin_left(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 15f34: 6824 ldr r4, [r4, #0] 15f36: 3494 adds r4, #148 ; 0x94 15f38: 2000 movs r0, #0 15f3a: 4b64 ldr r3, [pc, #400] ; (160cc ) 15f3c: 4798 blx r3 15f3e: eb00 0080 add.w r0, r0, r0, lsl #2 15f42: 0040 lsls r0, r0, #1 15f44: 3050 adds r0, #80 ; 0x50 15f46: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15f4a: da77 bge.n 1603c 15f4c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_LEFT, margin_left, lv_style_int_t, _int, scalar) 15f4e: 2117 movs r1, #23 15f50: 4620 mov r0, r4 15f52: 4b5d ldr r3, [pc, #372] ; (160c8 ) 15f54: 4798 blx r3 lv_style_set_margin_right(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 15f56: 4b57 ldr r3, [pc, #348] ; (160b4 ) 15f58: 681c ldr r4, [r3, #0] 15f5a: 3494 adds r4, #148 ; 0x94 15f5c: 2000 movs r0, #0 15f5e: 4b5b ldr r3, [pc, #364] ; (160cc ) 15f60: 4798 blx r3 15f62: eb00 0080 add.w r0, r0, r0, lsl #2 15f66: 0040 lsls r0, r0, #1 15f68: 3050 adds r0, #80 ; 0x50 15f6a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15f6e: da74 bge.n 1605a 15f70: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_RIGHT, margin_right, lv_style_int_t, _int, scalar) 15f72: 2118 movs r1, #24 15f74: 4620 mov r0, r4 15f76: 4b54 ldr r3, [pc, #336] ; (160c8 ) 15f78: 4798 blx r3 lv_style_set_margin_top(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 15f7a: 4b4e ldr r3, [pc, #312] ; (160b4 ) 15f7c: 681c ldr r4, [r3, #0] 15f7e: 3494 adds r4, #148 ; 0x94 15f80: 2000 movs r0, #0 15f82: 4b52 ldr r3, [pc, #328] ; (160cc ) 15f84: 4798 blx r3 15f86: eb00 0080 add.w r0, r0, r0, lsl #2 15f8a: 0040 lsls r0, r0, #1 15f8c: 3050 adds r0, #80 ; 0x50 15f8e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15f92: da71 bge.n 16078 15f94: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_TOP, margin_top, lv_style_int_t, _int, scalar) 15f96: 2115 movs r1, #21 15f98: 4620 mov r0, r4 15f9a: 4b4b ldr r3, [pc, #300] ; (160c8 ) 15f9c: 4798 blx r3 lv_style_set_margin_bottom(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 15f9e: 4b45 ldr r3, [pc, #276] ; (160b4 ) 15fa0: 681c ldr r4, [r3, #0] 15fa2: 3494 adds r4, #148 ; 0x94 15fa4: 2000 movs r0, #0 15fa6: 4b49 ldr r3, [pc, #292] ; (160cc ) 15fa8: 4798 blx r3 15faa: eb00 0080 add.w r0, r0, r0, lsl #2 15fae: 0040 lsls r0, r0, #1 15fb0: 3050 adds r0, #80 ; 0x50 15fb2: f5b0 7fa0 cmp.w r0, #320 ; 0x140 15fb6: da6e bge.n 16096 15fb8: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_BOTTOM, margin_bottom, lv_style_int_t, _int, scalar) 15fba: 2116 movs r1, #22 15fbc: 4620 mov r0, r4 15fbe: 4b42 ldr r3, [pc, #264] ; (160c8 ) 15fc0: 4798 blx r3 15fc2: bd10 pop {r4, pc} 15fc4: 2306 movs r3, #6 15fc6: 2110 movs r1, #16 15fc8: 2409 movs r4, #9 15fca: e755 b.n 15e78 lv_style_set_pad_left(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15fcc: 2000 movs r0, #0 15fce: 4b3f ldr r3, [pc, #252] ; (160cc ) 15fd0: 4798 blx r3 15fd2: ebc0 00c0 rsb r0, r0, r0, lsl #3 15fd6: 3050 adds r0, #80 ; 0x50 15fd8: 4b3d ldr r3, [pc, #244] ; (160d0 ) 15fda: fb83 2300 smull r2, r3, r3, r0 15fde: 17c2 asrs r2, r0, #31 15fe0: ebc2 12a3 rsb r2, r2, r3, asr #6 15fe4: b212 sxth r2, r2 15fe6: e767 b.n 15eb8 lv_style_set_pad_right(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15fe8: 2000 movs r0, #0 15fea: 4b38 ldr r3, [pc, #224] ; (160cc ) 15fec: 4798 blx r3 15fee: ebc0 00c0 rsb r0, r0, r0, lsl #3 15ff2: 3050 adds r0, #80 ; 0x50 15ff4: 4b36 ldr r3, [pc, #216] ; (160d0 ) 15ff6: fb83 2300 smull r2, r3, r3, r0 15ffa: 17c2 asrs r2, r0, #31 15ffc: ebc2 12a3 rsb r2, r2, r3, asr #6 16000: b212 sxth r2, r2 16002: e76b b.n 15edc lv_style_set_pad_top(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 16004: 2000 movs r0, #0 16006: 4b31 ldr r3, [pc, #196] ; (160cc ) 16008: 4798 blx r3 1600a: ebc0 00c0 rsb r0, r0, r0, lsl #3 1600e: 3050 adds r0, #80 ; 0x50 16010: 4b2f ldr r3, [pc, #188] ; (160d0 ) 16012: fb83 2300 smull r2, r3, r3, r0 16016: 17c2 asrs r2, r0, #31 16018: ebc2 12a3 rsb r2, r2, r3, asr #6 1601c: b212 sxth r2, r2 1601e: e76f b.n 15f00 lv_style_set_pad_bottom(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 16020: 2000 movs r0, #0 16022: 4b2a ldr r3, [pc, #168] ; (160cc ) 16024: 4798 blx r3 16026: ebc0 00c0 rsb r0, r0, r0, lsl #3 1602a: 3050 adds r0, #80 ; 0x50 1602c: 4b28 ldr r3, [pc, #160] ; (160d0 ) 1602e: fb83 2300 smull r2, r3, r3, r0 16032: 17c2 asrs r2, r0, #31 16034: ebc2 12a3 rsb r2, r2, r3, asr #6 16038: b212 sxth r2, r2 1603a: e772 b.n 15f22 lv_style_set_margin_left(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 1603c: 2000 movs r0, #0 1603e: 4b23 ldr r3, [pc, #140] ; (160cc ) 16040: 4798 blx r3 16042: eb00 0080 add.w r0, r0, r0, lsl #2 16046: 0040 lsls r0, r0, #1 16048: 3050 adds r0, #80 ; 0x50 1604a: 4b21 ldr r3, [pc, #132] ; (160d0 ) 1604c: fb83 2300 smull r2, r3, r3, r0 16050: 17c2 asrs r2, r0, #31 16052: ebc2 12a3 rsb r2, r2, r3, asr #6 16056: b212 sxth r2, r2 16058: e779 b.n 15f4e lv_style_set_margin_right(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 1605a: 2000 movs r0, #0 1605c: 4b1b ldr r3, [pc, #108] ; (160cc ) 1605e: 4798 blx r3 16060: eb00 0080 add.w r0, r0, r0, lsl #2 16064: 0040 lsls r0, r0, #1 16066: 3050 adds r0, #80 ; 0x50 16068: 4b19 ldr r3, [pc, #100] ; (160d0 ) 1606a: fb83 2300 smull r2, r3, r3, r0 1606e: 17c2 asrs r2, r0, #31 16070: ebc2 12a3 rsb r2, r2, r3, asr #6 16074: b212 sxth r2, r2 16076: e77c b.n 15f72 lv_style_set_margin_top(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 16078: 2000 movs r0, #0 1607a: 4b14 ldr r3, [pc, #80] ; (160cc ) 1607c: 4798 blx r3 1607e: eb00 0080 add.w r0, r0, r0, lsl #2 16082: 0040 lsls r0, r0, #1 16084: 3050 adds r0, #80 ; 0x50 16086: 4b12 ldr r3, [pc, #72] ; (160d0 ) 16088: fb83 2300 smull r2, r3, r3, r0 1608c: 17c2 asrs r2, r0, #31 1608e: ebc2 12a3 rsb r2, r2, r3, asr #6 16092: b212 sxth r2, r2 16094: e77f b.n 15f96 lv_style_set_margin_bottom(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 16096: 2000 movs r0, #0 16098: 4b0c ldr r3, [pc, #48] ; (160cc ) 1609a: 4798 blx r3 1609c: eb00 0080 add.w r0, r0, r0, lsl #2 160a0: 0040 lsls r0, r0, #1 160a2: 3050 adds r0, #80 ; 0x50 160a4: 4b0a ldr r3, [pc, #40] ; (160d0 ) 160a6: fb83 2300 smull r2, r3, r3, r0 160aa: 17c2 asrs r2, r0, #31 160ac: ebc2 12a3 rsb r2, r2, r3, asr #6 160b0: b212 sxth r2, r2 160b2: e782 b.n 15fba 160b4: 20006bd8 .word 0x20006bd8 160b8: 00014a61 .word 0x00014a61 160bc: 00006b69 .word 0x00006b69 160c0: 00029584 .word 0x00029584 160c4: 00006a25 .word 0x00006a25 160c8: 000068e1 .word 0x000068e1 160cc: 00010f3d .word 0x00010f3d 160d0: 66666667 .word 0x66666667 000160d4 : { 160d4: b510 push {r4, lr} style_init_reset(&styles->sw_knob); 160d6: 4c48 ldr r4, [pc, #288] ; (161f8 ) 160d8: 6820 ldr r0, [r4, #0] 160da: 309c adds r0, #156 ; 0x9c 160dc: 4b47 ldr r3, [pc, #284] ; (161fc ) 160de: 4798 blx r3 lv_style_set_bg_opa(&styles->sw_knob, LV_STATE_DEFAULT, LV_OPA_COVER); 160e0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 160e2: 22ff movs r2, #255 ; 0xff 160e4: 212c movs r1, #44 ; 0x2c 160e6: 309c adds r0, #156 ; 0x9c 160e8: 4b45 ldr r3, [pc, #276] ; (16200 ) 160ea: 4798 blx r3 lv_style_set_bg_color(&styles->sw_knob, LV_STATE_DEFAULT, LV_COLOR_WHITE); 160ec: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 160ee: 4b45 ldr r3, [pc, #276] ; (16204 ) 160f0: 881a ldrh r2, [r3, #0] 160f2: 2129 movs r1, #41 ; 0x29 160f4: 309c adds r0, #156 ; 0x9c 160f6: 4b44 ldr r3, [pc, #272] ; (16208 ) 160f8: 4798 blx r3 lv_style_set_radius(&styles->sw_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 160fa: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 160fc: f647 72ff movw r2, #32767 ; 0x7fff 16100: 2101 movs r1, #1 16102: 309c adds r0, #156 ; 0x9c 16104: 4b41 ldr r3, [pc, #260] ; (1620c ) 16106: 4798 blx r3 lv_style_set_pad_top(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 16108: 6824 ldr r4, [r4, #0] 1610a: 349c adds r4, #156 ; 0x9c 1610c: 2000 movs r0, #0 1610e: 4b40 ldr r3, [pc, #256] ; (16210 ) 16110: 4798 blx r3 16112: 3014 adds r0, #20 16114: 0080 lsls r0, r0, #2 16116: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1611a: da39 bge.n 16190 1611c: f04f 32ff mov.w r2, #4294967295 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 16120: 2110 movs r1, #16 16122: 4620 mov r0, r4 16124: 4b39 ldr r3, [pc, #228] ; (1620c ) 16126: 4798 blx r3 lv_style_set_pad_bottom(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 16128: 4b33 ldr r3, [pc, #204] ; (161f8 ) 1612a: 681c ldr r4, [r3, #0] 1612c: 349c adds r4, #156 ; 0x9c 1612e: 2000 movs r0, #0 16130: 4b37 ldr r3, [pc, #220] ; (16210 ) 16132: 4798 blx r3 16134: 3014 adds r0, #20 16136: 0080 lsls r0, r0, #2 16138: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1613c: da35 bge.n 161aa 1613e: f04f 32ff mov.w r2, #4294967295 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 16142: 2111 movs r1, #17 16144: 4620 mov r0, r4 16146: 4b31 ldr r3, [pc, #196] ; (1620c ) 16148: 4798 blx r3 lv_style_set_pad_left(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 1614a: 4b2b ldr r3, [pc, #172] ; (161f8 ) 1614c: 681c ldr r4, [r3, #0] 1614e: 349c adds r4, #156 ; 0x9c 16150: 2000 movs r0, #0 16152: 4b2f ldr r3, [pc, #188] ; (16210 ) 16154: 4798 blx r3 16156: 3014 adds r0, #20 16158: 0080 lsls r0, r0, #2 1615a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1615e: da31 bge.n 161c4 16160: f04f 32ff mov.w r2, #4294967295 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 16164: 2112 movs r1, #18 16166: 4620 mov r0, r4 16168: 4b28 ldr r3, [pc, #160] ; (1620c ) 1616a: 4798 blx r3 lv_style_set_pad_right(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 1616c: 4b22 ldr r3, [pc, #136] ; (161f8 ) 1616e: 681c ldr r4, [r3, #0] 16170: 349c adds r4, #156 ; 0x9c 16172: 2000 movs r0, #0 16174: 4b26 ldr r3, [pc, #152] ; (16210 ) 16176: 4798 blx r3 16178: 3014 adds r0, #20 1617a: 0080 lsls r0, r0, #2 1617c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16180: da2d bge.n 161de 16182: f04f 32ff mov.w r2, #4294967295 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 16186: 2113 movs r1, #19 16188: 4620 mov r0, r4 1618a: 4b20 ldr r3, [pc, #128] ; (1620c ) 1618c: 4798 blx r3 1618e: bd10 pop {r4, pc} lv_style_set_pad_top(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 16190: 2000 movs r0, #0 16192: 4b1f ldr r3, [pc, #124] ; (16210 ) 16194: 4798 blx r3 16196: 3014 adds r0, #20 16198: 0080 lsls r0, r0, #2 1619a: 4b1e ldr r3, [pc, #120] ; (16214 ) 1619c: fb83 2300 smull r2, r3, r3, r0 161a0: 17c2 asrs r2, r0, #31 161a2: eba2 12a3 sub.w r2, r2, r3, asr #6 161a6: b212 sxth r2, r2 161a8: e7ba b.n 16120 lv_style_set_pad_bottom(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 161aa: 2000 movs r0, #0 161ac: 4b18 ldr r3, [pc, #96] ; (16210 ) 161ae: 4798 blx r3 161b0: 3014 adds r0, #20 161b2: 0080 lsls r0, r0, #2 161b4: 4b17 ldr r3, [pc, #92] ; (16214 ) 161b6: fb83 2300 smull r2, r3, r3, r0 161ba: 17c2 asrs r2, r0, #31 161bc: eba2 12a3 sub.w r2, r2, r3, asr #6 161c0: b212 sxth r2, r2 161c2: e7be b.n 16142 lv_style_set_pad_left(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 161c4: 2000 movs r0, #0 161c6: 4b12 ldr r3, [pc, #72] ; (16210 ) 161c8: 4798 blx r3 161ca: 3014 adds r0, #20 161cc: 0080 lsls r0, r0, #2 161ce: 4b11 ldr r3, [pc, #68] ; (16214 ) 161d0: fb83 2300 smull r2, r3, r3, r0 161d4: 17c2 asrs r2, r0, #31 161d6: eba2 12a3 sub.w r2, r2, r3, asr #6 161da: b212 sxth r2, r2 161dc: e7c2 b.n 16164 lv_style_set_pad_right(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 161de: 2000 movs r0, #0 161e0: 4b0b ldr r3, [pc, #44] ; (16210 ) 161e2: 4798 blx r3 161e4: 3014 adds r0, #20 161e6: 0080 lsls r0, r0, #2 161e8: 4b0a ldr r3, [pc, #40] ; (16214 ) 161ea: fb83 2300 smull r2, r3, r3, r0 161ee: 17c2 asrs r2, r0, #31 161f0: eba2 12a3 sub.w r2, r2, r3, asr #6 161f4: b212 sxth r2, r2 161f6: e7c6 b.n 16186 161f8: 20006bd8 .word 0x20006bd8 161fc: 00014a61 .word 0x00014a61 16200: 00006b69 .word 0x00006b69 16204: 00029584 .word 0x00029584 16208: 00006a25 .word 0x00006a25 1620c: 000068e1 .word 0x000068e1 16210: 00010f3d .word 0x00010f3d 16214: 66666667 .word 0x66666667 00016218 : { 16218: b538 push {r3, r4, r5, lr} style_init_reset(&styles->lmeter); 1621a: 4c88 ldr r4, [pc, #544] ; (1643c ) 1621c: 6820 ldr r0, [r4, #0] 1621e: 3070 adds r0, #112 ; 0x70 16220: 4b87 ldr r3, [pc, #540] ; (16440 ) 16222: 4798 blx r3 lv_style_set_radius(&styles->lmeter, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 16224: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 16226: f647 72ff movw r2, #32767 ; 0x7fff 1622a: 2101 movs r1, #1 1622c: 3070 adds r0, #112 ; 0x70 1622e: 4b85 ldr r3, [pc, #532] ; (16444 ) 16230: 4798 blx r3 lv_style_set_pad_left(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 16232: 6824 ldr r4, [r4, #0] 16234: 3470 adds r4, #112 ; 0x70 16236: 2000 movs r0, #0 16238: 4b83 ldr r3, [pc, #524] ; (16448 ) 1623a: 4798 blx r3 1623c: eb00 0080 add.w r0, r0, r0, lsl #2 16240: 0080 lsls r0, r0, #2 16242: 3050 adds r0, #80 ; 0x50 16244: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16248: f280 808e bge.w 16368 1624c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1624e: 2112 movs r1, #18 16250: 4620 mov r0, r4 16252: 4b7c ldr r3, [pc, #496] ; (16444 ) 16254: 4798 blx r3 lv_style_set_pad_right(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 16256: 4b79 ldr r3, [pc, #484] ; (1643c ) 16258: 681c ldr r4, [r3, #0] 1625a: 3470 adds r4, #112 ; 0x70 1625c: 2000 movs r0, #0 1625e: 4b7a ldr r3, [pc, #488] ; (16448 ) 16260: 4798 blx r3 16262: eb00 0080 add.w r0, r0, r0, lsl #2 16266: 0080 lsls r0, r0, #2 16268: 3050 adds r0, #80 ; 0x50 1626a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1626e: f280 808a bge.w 16386 16272: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 16274: 2113 movs r1, #19 16276: 4620 mov r0, r4 16278: 4b72 ldr r3, [pc, #456] ; (16444 ) 1627a: 4798 blx r3 lv_style_set_pad_top(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 1627c: 4b6f ldr r3, [pc, #444] ; (1643c ) 1627e: 681c ldr r4, [r3, #0] 16280: 3470 adds r4, #112 ; 0x70 16282: 2000 movs r0, #0 16284: 4b70 ldr r3, [pc, #448] ; (16448 ) 16286: 4798 blx r3 16288: eb00 0080 add.w r0, r0, r0, lsl #2 1628c: 0080 lsls r0, r0, #2 1628e: 3050 adds r0, #80 ; 0x50 16290: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16294: f280 8086 bge.w 163a4 16298: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1629a: 2110 movs r1, #16 1629c: 4620 mov r0, r4 1629e: 4b69 ldr r3, [pc, #420] ; (16444 ) 162a0: 4798 blx r3 lv_style_set_pad_inner(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(30)); 162a2: 4b66 ldr r3, [pc, #408] ; (1643c ) 162a4: 681c ldr r4, [r3, #0] 162a6: 3470 adds r4, #112 ; 0x70 162a8: 2000 movs r0, #0 162aa: 4b67 ldr r3, [pc, #412] ; (16448 ) 162ac: 4798 blx r3 162ae: ebc0 1000 rsb r0, r0, r0, lsl #4 162b2: 0040 lsls r0, r0, #1 162b4: 3050 adds r0, #80 ; 0x50 162b6: f5b0 7fa0 cmp.w r0, #320 ; 0x140 162ba: f280 8082 bge.w 163c2 162be: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 162c0: 2114 movs r1, #20 162c2: 4620 mov r0, r4 162c4: 4b5f ldr r3, [pc, #380] ; (16444 ) 162c6: 4798 blx r3 lv_style_set_scale_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(25)); 162c8: 4b5c ldr r3, [pc, #368] ; (1643c ) 162ca: 681c ldr r4, [r3, #0] 162cc: 3470 adds r4, #112 ; 0x70 162ce: 2000 movs r0, #0 162d0: 4b5d ldr r3, [pc, #372] ; (16448 ) 162d2: 4798 blx r3 162d4: eb00 0080 add.w r0, r0, r0, lsl #2 162d8: eb00 0080 add.w r0, r0, r0, lsl #2 162dc: 3050 adds r0, #80 ; 0x50 162de: f5b0 7fa0 cmp.w r0, #320 ; 0x140 162e2: da7d bge.n 163e0 162e4: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PATH, transition_path, lv_anim_path_t *, _ptr, scalar) #else /*For compatibility*/ _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PATH, transition_path, const void *, _ptr, scalar) #endif _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 162e6: 21c0 movs r1, #192 ; 0xc0 162e8: 4620 mov r0, r4 162ea: 4b56 ldr r3, [pc, #344] ; (16444 ) 162ec: 4798 blx r3 lv_style_set_line_color(&styles->lmeter, LV_STATE_DEFAULT, theme.color_primary); 162ee: 4c53 ldr r4, [pc, #332] ; (1643c ) 162f0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 162f2: 89a2 ldrh r2, [r4, #12] 162f4: 2199 movs r1, #153 ; 0x99 162f6: 3070 adds r0, #112 ; 0x70 162f8: 4d54 ldr r5, [pc, #336] ; (1644c ) 162fa: 47a8 blx r5 lv_style_set_scale_grad_color(&styles->lmeter, LV_STATE_DEFAULT, theme.color_primary); 162fc: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_BORDER_WIDTH, scale_border_width, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_BORDER_WIDTH, scale_end_border_width, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_GRAD_COLOR, scale_grad_color, lv_color_t, _color, nonscalar) 162fe: 89a2 ldrh r2, [r4, #12] 16300: 21c9 movs r1, #201 ; 0xc9 16302: 3070 adds r0, #112 ; 0x70 16304: 47a8 blx r5 lv_style_set_scale_end_color(&styles->lmeter, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 16306: 6820 ldr r0, [r4, #0] 16308: 2311 movs r3, #17 1630a: f04f 0200 mov.w r2, #0 1630e: f363 0204 bfi r2, r3, #0, #5 16312: 2122 movs r1, #34 ; 0x22 16314: f361 124a bfi r2, r1, #5, #6 16318: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar) 1631c: 21ca movs r1, #202 ; 0xca 1631e: 3070 adds r0, #112 ; 0x70 16320: 47a8 blx r5 lv_style_set_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(10)); 16322: 6824 ldr r4, [r4, #0] 16324: 3470 adds r4, #112 ; 0x70 16326: 2000 movs r0, #0 16328: 4b47 ldr r3, [pc, #284] ; (16448 ) 1632a: 4798 blx r3 1632c: eb00 0080 add.w r0, r0, r0, lsl #2 16330: 0040 lsls r0, r0, #1 16332: 3050 adds r0, #80 ; 0x50 16334: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16338: da62 bge.n 16400 1633a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 1633c: 2190 movs r1, #144 ; 0x90 1633e: 4620 mov r0, r4 16340: 4b40 ldr r3, [pc, #256] ; (16444 ) 16342: 4798 blx r3 lv_style_set_scale_end_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(7)); 16344: 4b3d ldr r3, [pc, #244] ; (1643c ) 16346: 681c ldr r4, [r3, #0] 16348: 3470 adds r4, #112 ; 0x70 1634a: 2000 movs r0, #0 1634c: 4b3e ldr r3, [pc, #248] ; (16448 ) 1634e: 4798 blx r3 16350: ebc0 00c0 rsb r0, r0, r0, lsl #3 16354: 3050 adds r0, #80 ; 0x50 16356: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1635a: da60 bge.n 1641e 1635c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) 1635e: 21c3 movs r1, #195 ; 0xc3 16360: 4620 mov r0, r4 16362: 4b38 ldr r3, [pc, #224] ; (16444 ) 16364: 4798 blx r3 16366: bd38 pop {r3, r4, r5, pc} lv_style_set_pad_left(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 16368: 2000 movs r0, #0 1636a: 4b37 ldr r3, [pc, #220] ; (16448 ) 1636c: 4798 blx r3 1636e: eb00 0080 add.w r0, r0, r0, lsl #2 16372: 0080 lsls r0, r0, #2 16374: 3050 adds r0, #80 ; 0x50 16376: 4b36 ldr r3, [pc, #216] ; (16450 ) 16378: fb83 2300 smull r2, r3, r3, r0 1637c: 17c2 asrs r2, r0, #31 1637e: ebc2 12a3 rsb r2, r2, r3, asr #6 16382: b212 sxth r2, r2 16384: e763 b.n 1624e lv_style_set_pad_right(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 16386: 2000 movs r0, #0 16388: 4b2f ldr r3, [pc, #188] ; (16448 ) 1638a: 4798 blx r3 1638c: eb00 0080 add.w r0, r0, r0, lsl #2 16390: 0080 lsls r0, r0, #2 16392: 3050 adds r0, #80 ; 0x50 16394: 4b2e ldr r3, [pc, #184] ; (16450 ) 16396: fb83 2300 smull r2, r3, r3, r0 1639a: 17c2 asrs r2, r0, #31 1639c: ebc2 12a3 rsb r2, r2, r3, asr #6 163a0: b212 sxth r2, r2 163a2: e767 b.n 16274 lv_style_set_pad_top(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 163a4: 2000 movs r0, #0 163a6: 4b28 ldr r3, [pc, #160] ; (16448 ) 163a8: 4798 blx r3 163aa: eb00 0080 add.w r0, r0, r0, lsl #2 163ae: 0080 lsls r0, r0, #2 163b0: 3050 adds r0, #80 ; 0x50 163b2: 4b27 ldr r3, [pc, #156] ; (16450 ) 163b4: fb83 2300 smull r2, r3, r3, r0 163b8: 17c2 asrs r2, r0, #31 163ba: ebc2 12a3 rsb r2, r2, r3, asr #6 163be: b212 sxth r2, r2 163c0: e76b b.n 1629a lv_style_set_pad_inner(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(30)); 163c2: 2000 movs r0, #0 163c4: 4b20 ldr r3, [pc, #128] ; (16448 ) 163c6: 4798 blx r3 163c8: ebc0 1000 rsb r0, r0, r0, lsl #4 163cc: 0040 lsls r0, r0, #1 163ce: 3050 adds r0, #80 ; 0x50 163d0: 4b1f ldr r3, [pc, #124] ; (16450 ) 163d2: fb83 2300 smull r2, r3, r3, r0 163d6: 17c2 asrs r2, r0, #31 163d8: ebc2 12a3 rsb r2, r2, r3, asr #6 163dc: b212 sxth r2, r2 163de: e76f b.n 162c0 lv_style_set_scale_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(25)); 163e0: 2000 movs r0, #0 163e2: 4b19 ldr r3, [pc, #100] ; (16448 ) 163e4: 4798 blx r3 163e6: eb00 0080 add.w r0, r0, r0, lsl #2 163ea: eb00 0080 add.w r0, r0, r0, lsl #2 163ee: 3050 adds r0, #80 ; 0x50 163f0: 4b17 ldr r3, [pc, #92] ; (16450 ) 163f2: fb83 2300 smull r2, r3, r3, r0 163f6: 17c2 asrs r2, r0, #31 163f8: ebc2 12a3 rsb r2, r2, r3, asr #6 163fc: b212 sxth r2, r2 163fe: e772 b.n 162e6 lv_style_set_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(10)); 16400: 2000 movs r0, #0 16402: 4b11 ldr r3, [pc, #68] ; (16448 ) 16404: 4798 blx r3 16406: eb00 0080 add.w r0, r0, r0, lsl #2 1640a: 0040 lsls r0, r0, #1 1640c: 3050 adds r0, #80 ; 0x50 1640e: 4b10 ldr r3, [pc, #64] ; (16450 ) 16410: fb83 2300 smull r2, r3, r3, r0 16414: 17c2 asrs r2, r0, #31 16416: ebc2 12a3 rsb r2, r2, r3, asr #6 1641a: b212 sxth r2, r2 1641c: e78e b.n 1633c lv_style_set_scale_end_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(7)); 1641e: 2000 movs r0, #0 16420: 4b09 ldr r3, [pc, #36] ; (16448 ) 16422: 4798 blx r3 16424: ebc0 00c0 rsb r0, r0, r0, lsl #3 16428: 3050 adds r0, #80 ; 0x50 1642a: 4b09 ldr r3, [pc, #36] ; (16450 ) 1642c: fb83 2300 smull r2, r3, r3, r0 16430: 17c2 asrs r2, r0, #31 16432: ebc2 12a3 rsb r2, r2, r3, asr #6 16436: b212 sxth r2, r2 16438: e791 b.n 1635e 1643a: bf00 nop 1643c: 20006bd8 .word 0x20006bd8 16440: 00014a61 .word 0x00014a61 16444: 000068e1 .word 0x000068e1 16448: 00010f3d .word 0x00010f3d 1644c: 00006a25 .word 0x00006a25 16450: 66666667 .word 0x66666667 00016454 : { 16454: b5f8 push {r3, r4, r5, r6, r7, lr} style_init_reset(&styles->gauge_main); 16456: 4cc0 ldr r4, [pc, #768] ; (16758 ) 16458: 6820 ldr r0, [r4, #0] 1645a: 305c adds r0, #92 ; 0x5c 1645c: 4bbf ldr r3, [pc, #764] ; (1675c ) 1645e: 4798 blx r3 lv_style_set_line_color(&styles->gauge_main, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 16460: 6820 ldr r0, [r4, #0] 16462: 2511 movs r5, #17 16464: f04f 0200 mov.w r2, #0 16468: f365 0204 bfi r2, r5, #0, #5 1646c: 2722 movs r7, #34 ; 0x22 1646e: f367 124a bfi r2, r7, #5, #6 16472: f365 22cf bfi r2, r5, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 16476: 2199 movs r1, #153 ; 0x99 16478: 305c adds r0, #92 ; 0x5c 1647a: 4eb9 ldr r6, [pc, #740] ; (16760 ) 1647c: 47b0 blx r6 lv_style_set_scale_grad_color(&styles->gauge_main, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 1647e: 6820 ldr r0, [r4, #0] 16480: f04f 0200 mov.w r2, #0 16484: f365 0204 bfi r2, r5, #0, #5 16488: f367 124a bfi r2, r7, #5, #6 1648c: f365 22cf bfi r2, r5, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_GRAD_COLOR, scale_grad_color, lv_color_t, _color, nonscalar) 16490: 21c9 movs r1, #201 ; 0xc9 16492: 305c adds r0, #92 ; 0x5c 16494: 47b0 blx r6 lv_style_set_scale_end_color(&styles->gauge_main, LV_STATE_DEFAULT, theme.color_primary); 16496: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar) 16498: 89a2 ldrh r2, [r4, #12] 1649a: 21ca movs r1, #202 ; 0xca 1649c: 305c adds r0, #92 ; 0x5c 1649e: 47b0 blx r6 lv_style_set_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(5)); 164a0: 6824 ldr r4, [r4, #0] 164a2: 345c adds r4, #92 ; 0x5c 164a4: 2000 movs r0, #0 164a6: 4baf ldr r3, [pc, #700] ; (16764 ) 164a8: 4798 blx r3 164aa: eb00 0080 add.w r0, r0, r0, lsl #2 164ae: 3050 adds r0, #80 ; 0x50 164b0: f5b0 7fa0 cmp.w r0, #320 ; 0x140 164b4: f280 8168 bge.w 16788 164b8: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 164ba: 2190 movs r1, #144 ; 0x90 164bc: 4620 mov r0, r4 164be: 4baa ldr r3, [pc, #680] ; (16768 ) 164c0: 4798 blx r3 lv_style_set_scale_end_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(4)); 164c2: 4ba5 ldr r3, [pc, #660] ; (16758 ) 164c4: 681c ldr r4, [r3, #0] 164c6: 345c adds r4, #92 ; 0x5c 164c8: 2000 movs r0, #0 164ca: 4ba6 ldr r3, [pc, #664] ; (16764 ) 164cc: 4798 blx r3 164ce: 3014 adds r0, #20 164d0: 0080 lsls r0, r0, #2 164d2: f5b0 7fa0 cmp.w r0, #320 ; 0x140 164d6: f280 8165 bge.w 167a4 164da: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) 164dc: 21c3 movs r1, #195 ; 0xc3 164de: 4620 mov r0, r4 164e0: 4ba1 ldr r3, [pc, #644] ; (16768 ) 164e2: 4798 blx r3 lv_style_set_scale_end_border_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(8)); 164e4: 4b9c ldr r3, [pc, #624] ; (16758 ) 164e6: 681c ldr r4, [r3, #0] 164e8: 345c adds r4, #92 ; 0x5c 164ea: 2000 movs r0, #0 164ec: 4b9d ldr r3, [pc, #628] ; (16764 ) 164ee: 4798 blx r3 164f0: 300a adds r0, #10 164f2: 00c0 lsls r0, r0, #3 164f4: f5b0 7fa0 cmp.w r0, #320 ; 0x140 164f8: f280 8161 bge.w 167be 164fc: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_BORDER_WIDTH, scale_end_border_width, lv_style_int_t, _int, scalar) 164fe: 21c2 movs r1, #194 ; 0xc2 16500: 4620 mov r0, r4 16502: 4b99 ldr r3, [pc, #612] ; (16768 ) 16504: 4798 blx r3 lv_style_set_pad_left(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 16506: 4b94 ldr r3, [pc, #592] ; (16758 ) 16508: 681c ldr r4, [r3, #0] 1650a: 345c adds r4, #92 ; 0x5c 1650c: 2000 movs r0, #0 1650e: 4b95 ldr r3, [pc, #596] ; (16764 ) 16510: 4798 blx r3 16512: eb00 0080 add.w r0, r0, r0, lsl #2 16516: 0080 lsls r0, r0, #2 16518: 3050 adds r0, #80 ; 0x50 1651a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1651e: f280 815b bge.w 167d8 16522: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 16524: 2112 movs r1, #18 16526: 4620 mov r0, r4 16528: 4b8f ldr r3, [pc, #572] ; (16768 ) 1652a: 4798 blx r3 lv_style_set_pad_right(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 1652c: 4b8a ldr r3, [pc, #552] ; (16758 ) 1652e: 681c ldr r4, [r3, #0] 16530: 345c adds r4, #92 ; 0x5c 16532: 2000 movs r0, #0 16534: 4b8b ldr r3, [pc, #556] ; (16764 ) 16536: 4798 blx r3 16538: eb00 0080 add.w r0, r0, r0, lsl #2 1653c: 0080 lsls r0, r0, #2 1653e: 3050 adds r0, #80 ; 0x50 16540: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16544: f280 8157 bge.w 167f6 16548: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 1654a: 2113 movs r1, #19 1654c: 4620 mov r0, r4 1654e: 4b86 ldr r3, [pc, #536] ; (16768 ) 16550: 4798 blx r3 lv_style_set_pad_top(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 16552: 4b81 ldr r3, [pc, #516] ; (16758 ) 16554: 681c ldr r4, [r3, #0] 16556: 345c adds r4, #92 ; 0x5c 16558: 2000 movs r0, #0 1655a: 4b82 ldr r3, [pc, #520] ; (16764 ) 1655c: 4798 blx r3 1655e: eb00 0080 add.w r0, r0, r0, lsl #2 16562: 0080 lsls r0, r0, #2 16564: 3050 adds r0, #80 ; 0x50 16566: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1656a: f280 8153 bge.w 16814 1656e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 16570: 2110 movs r1, #16 16572: 4620 mov r0, r4 16574: 4b7c ldr r3, [pc, #496] ; (16768 ) 16576: 4798 blx r3 lv_style_set_pad_inner(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 16578: 4b77 ldr r3, [pc, #476] ; (16758 ) 1657a: 681c ldr r4, [r3, #0] 1657c: 345c adds r4, #92 ; 0x5c 1657e: 2000 movs r0, #0 16580: 4b78 ldr r3, [pc, #480] ; (16764 ) 16582: 4798 blx r3 16584: eb00 0080 add.w r0, r0, r0, lsl #2 16588: 0080 lsls r0, r0, #2 1658a: 3050 adds r0, #80 ; 0x50 1658c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16590: f280 814f bge.w 16832 16594: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 16596: 2114 movs r1, #20 16598: 4620 mov r0, r4 1659a: 4b73 ldr r3, [pc, #460] ; (16768 ) 1659c: 4798 blx r3 lv_style_set_scale_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(15)); 1659e: 4b6e ldr r3, [pc, #440] ; (16758 ) 165a0: 681c ldr r4, [r3, #0] 165a2: 345c adds r4, #92 ; 0x5c 165a4: 2000 movs r0, #0 165a6: 4b6f ldr r3, [pc, #444] ; (16764 ) 165a8: 4798 blx r3 165aa: ebc0 1000 rsb r0, r0, r0, lsl #4 165ae: 3050 adds r0, #80 ; 0x50 165b0: f5b0 7fa0 cmp.w r0, #320 ; 0x140 165b4: f280 814c bge.w 16850 165b8: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 165ba: 21c0 movs r1, #192 ; 0xc0 165bc: 4620 mov r0, r4 165be: 4d6a ldr r5, [pc, #424] ; (16768 ) 165c0: 47a8 blx r5 lv_style_set_radius(&styles->gauge_main, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 165c2: 4c65 ldr r4, [pc, #404] ; (16758 ) 165c4: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 165c6: f647 72ff movw r2, #32767 ; 0x7fff 165ca: 2101 movs r1, #1 165cc: 305c adds r0, #92 ; 0x5c 165ce: 47a8 blx r5 style_init_reset(&styles->gauge_strong); 165d0: 6820 ldr r0, [r4, #0] 165d2: 3060 adds r0, #96 ; 0x60 165d4: 4b61 ldr r3, [pc, #388] ; (1675c ) 165d6: 4798 blx r3 lv_style_set_line_color(&styles->gauge_strong, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 165d8: 6820 ldr r0, [r4, #0] 165da: 2511 movs r5, #17 165dc: f04f 0200 mov.w r2, #0 165e0: f365 0204 bfi r2, r5, #0, #5 165e4: 2722 movs r7, #34 ; 0x22 165e6: f367 124a bfi r2, r7, #5, #6 165ea: f365 22cf bfi r2, r5, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 165ee: 2199 movs r1, #153 ; 0x99 165f0: 3060 adds r0, #96 ; 0x60 165f2: 4e5b ldr r6, [pc, #364] ; (16760 ) 165f4: 47b0 blx r6 lv_style_set_scale_grad_color(&styles->gauge_strong, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 165f6: 6820 ldr r0, [r4, #0] 165f8: f04f 0200 mov.w r2, #0 165fc: f365 0204 bfi r2, r5, #0, #5 16600: f367 124a bfi r2, r7, #5, #6 16604: f365 22cf bfi r2, r5, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_GRAD_COLOR, scale_grad_color, lv_color_t, _color, nonscalar) 16608: 21c9 movs r1, #201 ; 0xc9 1660a: 3060 adds r0, #96 ; 0x60 1660c: 47b0 blx r6 lv_style_set_scale_end_color(&styles->gauge_strong, LV_STATE_DEFAULT, theme.color_primary); 1660e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar) 16610: 89a2 ldrh r2, [r4, #12] 16612: 21ca movs r1, #202 ; 0xca 16614: 3060 adds r0, #96 ; 0x60 16616: 47b0 blx r6 lv_style_set_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 16618: 6824 ldr r4, [r4, #0] 1661a: 3460 adds r4, #96 ; 0x60 1661c: 2000 movs r0, #0 1661e: 4b51 ldr r3, [pc, #324] ; (16764 ) 16620: 4798 blx r3 16622: 300a adds r0, #10 16624: 00c0 lsls r0, r0, #3 16626: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1662a: f280 811f bge.w 1686c 1662e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 16630: 2190 movs r1, #144 ; 0x90 16632: 4620 mov r0, r4 16634: 4b4c ldr r3, [pc, #304] ; (16768 ) 16636: 4798 blx r3 lv_style_set_scale_end_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 16638: 4b47 ldr r3, [pc, #284] ; (16758 ) 1663a: 681c ldr r4, [r3, #0] 1663c: 3460 adds r4, #96 ; 0x60 1663e: 2000 movs r0, #0 16640: 4b48 ldr r3, [pc, #288] ; (16764 ) 16642: 4798 blx r3 16644: 300a adds r0, #10 16646: 00c0 lsls r0, r0, #3 16648: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1664c: f280 811b bge.w 16886 16650: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) 16652: 21c3 movs r1, #195 ; 0xc3 16654: 4620 mov r0, r4 16656: 4b44 ldr r3, [pc, #272] ; (16768 ) 16658: 4798 blx r3 lv_style_set_scale_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(25)); 1665a: 4b3f ldr r3, [pc, #252] ; (16758 ) 1665c: 681c ldr r4, [r3, #0] 1665e: 3460 adds r4, #96 ; 0x60 16660: 2000 movs r0, #0 16662: 4b40 ldr r3, [pc, #256] ; (16764 ) 16664: 4798 blx r3 16666: eb00 0080 add.w r0, r0, r0, lsl #2 1666a: eb00 0080 add.w r0, r0, r0, lsl #2 1666e: 3050 adds r0, #80 ; 0x50 16670: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16674: f280 8114 bge.w 168a0 16678: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 1667a: 21c0 movs r1, #192 ; 0xc0 1667c: 4620 mov r0, r4 1667e: 4b3a ldr r3, [pc, #232] ; (16768 ) 16680: 4798 blx r3 style_init_reset(&styles->gauge_needle); 16682: 4c35 ldr r4, [pc, #212] ; (16758 ) 16684: 6820 ldr r0, [r4, #0] 16686: 3064 adds r0, #100 ; 0x64 16688: 4b34 ldr r3, [pc, #208] ; (1675c ) 1668a: 4798 blx r3 lv_style_set_line_color(&styles->gauge_needle, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE); 1668c: 6820 ldr r0, [r4, #0] 1668e: 3064 adds r0, #100 ; 0x64 16690: 6a23 ldr r3, [r4, #32] 16692: f013 0f02 tst.w r3, #2 16696: f040 8113 bne.w 168c0 1669a: 231f movs r3, #31 1669c: 213f movs r1, #63 ; 0x3f 1669e: 461c mov r4, r3 166a0: f04f 0200 mov.w r2, #0 166a4: f364 0204 bfi r2, r4, #0, #5 166a8: f361 124a bfi r2, r1, #5, #6 166ac: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 166b0: 2199 movs r1, #153 ; 0x99 166b2: 4b2b ldr r3, [pc, #172] ; (16760 ) 166b4: 4798 blx r3 lv_style_set_line_width(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(8)); 166b6: 4b28 ldr r3, [pc, #160] ; (16758 ) 166b8: 681c ldr r4, [r3, #0] 166ba: 3464 adds r4, #100 ; 0x64 166bc: 2000 movs r0, #0 166be: 4b29 ldr r3, [pc, #164] ; (16764 ) 166c0: 4798 blx r3 166c2: 300a adds r0, #10 166c4: 00c0 lsls r0, r0, #3 166c6: f5b0 7fa0 cmp.w r0, #320 ; 0x140 166ca: f280 80fd bge.w 168c8 166ce: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 166d0: 2190 movs r1, #144 ; 0x90 166d2: 4620 mov r0, r4 166d4: 4b24 ldr r3, [pc, #144] ; (16768 ) 166d6: 4798 blx r3 lv_style_set_bg_opa(&styles->gauge_needle, LV_STATE_DEFAULT, LV_OPA_COVER); 166d8: 4c1f ldr r4, [pc, #124] ; (16758 ) 166da: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 166dc: 22ff movs r2, #255 ; 0xff 166de: 212c movs r1, #44 ; 0x2c 166e0: 3064 adds r0, #100 ; 0x64 166e2: 4b22 ldr r3, [pc, #136] ; (1676c ) 166e4: 4798 blx r3 lv_style_set_bg_color(&styles->gauge_needle, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE); 166e6: 6820 ldr r0, [r4, #0] 166e8: 3064 adds r0, #100 ; 0x64 166ea: 6a23 ldr r3, [r4, #32] 166ec: f013 0f02 tst.w r3, #2 166f0: f040 80f7 bne.w 168e2 166f4: 231f movs r3, #31 166f6: 213f movs r1, #63 ; 0x3f 166f8: 461c mov r4, r3 166fa: f04f 0200 mov.w r2, #0 166fe: f364 0204 bfi r2, r4, #0, #5 16702: f361 124a bfi r2, r1, #5, #6 16706: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 1670a: 2129 movs r1, #41 ; 0x29 1670c: 4b14 ldr r3, [pc, #80] ; (16760 ) 1670e: 4798 blx r3 lv_style_set_radius(&styles->gauge_needle, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 16710: 4c11 ldr r4, [pc, #68] ; (16758 ) 16712: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 16714: f647 72ff movw r2, #32767 ; 0x7fff 16718: 2101 movs r1, #1 1671a: 3064 adds r0, #100 ; 0x64 1671c: 4b12 ldr r3, [pc, #72] ; (16768 ) 1671e: 4798 blx r3 lv_style_set_size(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(30)); 16720: 6824 ldr r4, [r4, #0] 16722: 3464 adds r4, #100 ; 0x64 16724: 2000 movs r0, #0 16726: 4b0f ldr r3, [pc, #60] ; (16764 ) 16728: 4798 blx r3 1672a: ebc0 1000 rsb r0, r0, r0, lsl #4 1672e: 0040 lsls r0, r0, #1 16730: 3050 adds r0, #80 ; 0x50 16732: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16736: f280 80d8 bge.w 168ea 1673a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 1673c: 2103 movs r1, #3 1673e: 4620 mov r0, r4 16740: 4b09 ldr r3, [pc, #36] ; (16768 ) 16742: 4798 blx r3 lv_style_set_pad_inner(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(10)); 16744: 4b04 ldr r3, [pc, #16] ; (16758 ) 16746: 681c ldr r4, [r3, #0] 16748: 3464 adds r4, #100 ; 0x64 1674a: 2000 movs r0, #0 1674c: 4b05 ldr r3, [pc, #20] ; (16764 ) 1674e: 4798 blx r3 16750: eb00 0080 add.w r0, r0, r0, lsl #2 16754: e00c b.n 16770 16756: bf00 nop 16758: 20006bd8 .word 0x20006bd8 1675c: 00014a61 .word 0x00014a61 16760: 00006a25 .word 0x00006a25 16764: 00010f3d .word 0x00010f3d 16768: 000068e1 .word 0x000068e1 1676c: 00006b69 .word 0x00006b69 16770: 0040 lsls r0, r0, #1 16772: 3050 adds r0, #80 ; 0x50 16774: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16778: f280 80c6 bge.w 16908 1677c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 1677e: 2114 movs r1, #20 16780: 4620 mov r0, r4 16782: 4b69 ldr r3, [pc, #420] ; (16928 ) 16784: 4798 blx r3 16786: bdf8 pop {r3, r4, r5, r6, r7, pc} lv_style_set_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(5)); 16788: 2000 movs r0, #0 1678a: 4b68 ldr r3, [pc, #416] ; (1692c ) 1678c: 4798 blx r3 1678e: eb00 0080 add.w r0, r0, r0, lsl #2 16792: 3050 adds r0, #80 ; 0x50 16794: 4b66 ldr r3, [pc, #408] ; (16930 ) 16796: fb83 2300 smull r2, r3, r3, r0 1679a: 17c2 asrs r2, r0, #31 1679c: ebc2 12a3 rsb r2, r2, r3, asr #6 167a0: b212 sxth r2, r2 167a2: e68a b.n 164ba lv_style_set_scale_end_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(4)); 167a4: 2000 movs r0, #0 167a6: 4b61 ldr r3, [pc, #388] ; (1692c ) 167a8: 4798 blx r3 167aa: 3014 adds r0, #20 167ac: 0080 lsls r0, r0, #2 167ae: 4b60 ldr r3, [pc, #384] ; (16930 ) 167b0: fb83 2300 smull r2, r3, r3, r0 167b4: 17c2 asrs r2, r0, #31 167b6: ebc2 12a3 rsb r2, r2, r3, asr #6 167ba: b212 sxth r2, r2 167bc: e68e b.n 164dc lv_style_set_scale_end_border_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(8)); 167be: 2000 movs r0, #0 167c0: 4b5a ldr r3, [pc, #360] ; (1692c ) 167c2: 4798 blx r3 167c4: 300a adds r0, #10 167c6: 00c0 lsls r0, r0, #3 167c8: 4b59 ldr r3, [pc, #356] ; (16930 ) 167ca: fb83 2300 smull r2, r3, r3, r0 167ce: 17c2 asrs r2, r0, #31 167d0: ebc2 12a3 rsb r2, r2, r3, asr #6 167d4: b212 sxth r2, r2 167d6: e692 b.n 164fe lv_style_set_pad_left(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 167d8: 2000 movs r0, #0 167da: 4b54 ldr r3, [pc, #336] ; (1692c ) 167dc: 4798 blx r3 167de: eb00 0080 add.w r0, r0, r0, lsl #2 167e2: 0080 lsls r0, r0, #2 167e4: 3050 adds r0, #80 ; 0x50 167e6: 4b52 ldr r3, [pc, #328] ; (16930 ) 167e8: fb83 2300 smull r2, r3, r3, r0 167ec: 17c2 asrs r2, r0, #31 167ee: ebc2 12a3 rsb r2, r2, r3, asr #6 167f2: b212 sxth r2, r2 167f4: e696 b.n 16524 lv_style_set_pad_right(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 167f6: 2000 movs r0, #0 167f8: 4b4c ldr r3, [pc, #304] ; (1692c ) 167fa: 4798 blx r3 167fc: eb00 0080 add.w r0, r0, r0, lsl #2 16800: 0080 lsls r0, r0, #2 16802: 3050 adds r0, #80 ; 0x50 16804: 4b4a ldr r3, [pc, #296] ; (16930 ) 16806: fb83 2300 smull r2, r3, r3, r0 1680a: 17c2 asrs r2, r0, #31 1680c: ebc2 12a3 rsb r2, r2, r3, asr #6 16810: b212 sxth r2, r2 16812: e69a b.n 1654a lv_style_set_pad_top(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 16814: 2000 movs r0, #0 16816: 4b45 ldr r3, [pc, #276] ; (1692c ) 16818: 4798 blx r3 1681a: eb00 0080 add.w r0, r0, r0, lsl #2 1681e: 0080 lsls r0, r0, #2 16820: 3050 adds r0, #80 ; 0x50 16822: 4b43 ldr r3, [pc, #268] ; (16930 ) 16824: fb83 2300 smull r2, r3, r3, r0 16828: 17c2 asrs r2, r0, #31 1682a: ebc2 12a3 rsb r2, r2, r3, asr #6 1682e: b212 sxth r2, r2 16830: e69e b.n 16570 lv_style_set_pad_inner(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 16832: 2000 movs r0, #0 16834: 4b3d ldr r3, [pc, #244] ; (1692c ) 16836: 4798 blx r3 16838: eb00 0080 add.w r0, r0, r0, lsl #2 1683c: 0080 lsls r0, r0, #2 1683e: 3050 adds r0, #80 ; 0x50 16840: 4b3b ldr r3, [pc, #236] ; (16930 ) 16842: fb83 2300 smull r2, r3, r3, r0 16846: 17c2 asrs r2, r0, #31 16848: ebc2 12a3 rsb r2, r2, r3, asr #6 1684c: b212 sxth r2, r2 1684e: e6a2 b.n 16596 lv_style_set_scale_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(15)); 16850: 2000 movs r0, #0 16852: 4b36 ldr r3, [pc, #216] ; (1692c ) 16854: 4798 blx r3 16856: ebc0 1000 rsb r0, r0, r0, lsl #4 1685a: 3050 adds r0, #80 ; 0x50 1685c: 4b34 ldr r3, [pc, #208] ; (16930 ) 1685e: fb83 2300 smull r2, r3, r3, r0 16862: 17c2 asrs r2, r0, #31 16864: ebc2 12a3 rsb r2, r2, r3, asr #6 16868: b212 sxth r2, r2 1686a: e6a6 b.n 165ba lv_style_set_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 1686c: 2000 movs r0, #0 1686e: 4b2f ldr r3, [pc, #188] ; (1692c ) 16870: 4798 blx r3 16872: 300a adds r0, #10 16874: 00c0 lsls r0, r0, #3 16876: 4b2e ldr r3, [pc, #184] ; (16930 ) 16878: fb83 2300 smull r2, r3, r3, r0 1687c: 17c2 asrs r2, r0, #31 1687e: ebc2 12a3 rsb r2, r2, r3, asr #6 16882: b212 sxth r2, r2 16884: e6d4 b.n 16630 lv_style_set_scale_end_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 16886: 2000 movs r0, #0 16888: 4b28 ldr r3, [pc, #160] ; (1692c ) 1688a: 4798 blx r3 1688c: 300a adds r0, #10 1688e: 00c0 lsls r0, r0, #3 16890: 4b27 ldr r3, [pc, #156] ; (16930 ) 16892: fb83 2300 smull r2, r3, r3, r0 16896: 17c2 asrs r2, r0, #31 16898: ebc2 12a3 rsb r2, r2, r3, asr #6 1689c: b212 sxth r2, r2 1689e: e6d8 b.n 16652 lv_style_set_scale_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(25)); 168a0: 2000 movs r0, #0 168a2: 4b22 ldr r3, [pc, #136] ; (1692c ) 168a4: 4798 blx r3 168a6: eb00 0080 add.w r0, r0, r0, lsl #2 168aa: eb00 0080 add.w r0, r0, r0, lsl #2 168ae: 3050 adds r0, #80 ; 0x50 168b0: 4b1f ldr r3, [pc, #124] ; (16930 ) 168b2: fb83 2300 smull r2, r3, r3, r0 168b6: 17c2 asrs r2, r0, #31 168b8: ebc2 12a3 rsb r2, r2, r3, asr #6 168bc: b212 sxth r2, r2 168be: e6dc b.n 1667a 168c0: 2308 movs r3, #8 168c2: 2112 movs r1, #18 168c4: 240b movs r4, #11 168c6: e6eb b.n 166a0 lv_style_set_line_width(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(8)); 168c8: 2000 movs r0, #0 168ca: 4b18 ldr r3, [pc, #96] ; (1692c ) 168cc: 4798 blx r3 168ce: 300a adds r0, #10 168d0: 00c0 lsls r0, r0, #3 168d2: 4b17 ldr r3, [pc, #92] ; (16930 ) 168d4: fb83 2300 smull r2, r3, r3, r0 168d8: 17c2 asrs r2, r0, #31 168da: ebc2 12a3 rsb r2, r2, r3, asr #6 168de: b212 sxth r2, r2 168e0: e6f6 b.n 166d0 168e2: 2308 movs r3, #8 168e4: 2112 movs r1, #18 168e6: 240b movs r4, #11 168e8: e707 b.n 166fa lv_style_set_size(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(30)); 168ea: 2000 movs r0, #0 168ec: 4b0f ldr r3, [pc, #60] ; (1692c ) 168ee: 4798 blx r3 168f0: ebc0 1000 rsb r0, r0, r0, lsl #4 168f4: 0040 lsls r0, r0, #1 168f6: 3050 adds r0, #80 ; 0x50 168f8: 4b0d ldr r3, [pc, #52] ; (16930 ) 168fa: fb83 2300 smull r2, r3, r3, r0 168fe: 17c2 asrs r2, r0, #31 16900: ebc2 12a3 rsb r2, r2, r3, asr #6 16904: b212 sxth r2, r2 16906: e719 b.n 1673c lv_style_set_pad_inner(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(10)); 16908: 2000 movs r0, #0 1690a: 4b08 ldr r3, [pc, #32] ; (1692c ) 1690c: 4798 blx r3 1690e: eb00 0080 add.w r0, r0, r0, lsl #2 16912: 0040 lsls r0, r0, #1 16914: 3050 adds r0, #80 ; 0x50 16916: 4b06 ldr r3, [pc, #24] ; (16930 ) 16918: fb83 2300 smull r2, r3, r3, r0 1691c: 17c2 asrs r2, r0, #31 1691e: ebc2 12a3 rsb r2, r2, r3, asr #6 16922: b212 sxth r2, r2 16924: e72b b.n 1677e 16926: bf00 nop 16928: 000068e1 .word 0x000068e1 1692c: 00010f3d .word 0x00010f3d 16930: 66666667 .word 0x66666667 00016934 : { 16934: b538 push {r3, r4, r5, lr} style_init_reset(&styles->arc_indic); 16936: 4c3d ldr r4, [pc, #244] ; (16a2c ) 16938: 6820 ldr r0, [r4, #0] 1693a: 301c adds r0, #28 1693c: 4b3c ldr r3, [pc, #240] ; (16a30 ) 1693e: 4798 blx r3 lv_style_set_line_color(&styles->arc_indic, LV_STATE_DEFAULT, theme.color_primary); 16940: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 16942: 89a2 ldrh r2, [r4, #12] 16944: 2199 movs r1, #153 ; 0x99 16946: 301c adds r0, #28 16948: 4b3a ldr r3, [pc, #232] ; (16a34 ) 1694a: 4798 blx r3 lv_style_set_line_width(&styles->arc_indic, LV_STATE_DEFAULT, LV_DPX(25)); 1694c: 6824 ldr r4, [r4, #0] 1694e: 341c adds r4, #28 16950: 2000 movs r0, #0 16952: 4b39 ldr r3, [pc, #228] ; (16a38 ) 16954: 4798 blx r3 16956: eb00 0080 add.w r0, r0, r0, lsl #2 1695a: eb00 0080 add.w r0, r0, r0, lsl #2 1695e: 3050 adds r0, #80 ; 0x50 16960: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16964: da41 bge.n 169ea 16966: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 16968: 2190 movs r1, #144 ; 0x90 1696a: 4620 mov r0, r4 1696c: 4d33 ldr r5, [pc, #204] ; (16a3c ) 1696e: 47a8 blx r5 lv_style_set_line_rounded(&styles->arc_indic, LV_STATE_DEFAULT, true); 16970: 4c2e ldr r4, [pc, #184] ; (16a2c ) 16972: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_ROUNDED, line_rounded, bool, _int, scalar) 16974: 2201 movs r2, #1 16976: 2194 movs r1, #148 ; 0x94 16978: 301c adds r0, #28 1697a: 47a8 blx r5 style_init_reset(&styles->arc_bg); 1697c: 6820 ldr r0, [r4, #0] 1697e: 3020 adds r0, #32 16980: 4b2b ldr r3, [pc, #172] ; (16a30 ) 16982: 4798 blx r3 lv_style_set_line_color(&styles->arc_bg, LV_STATE_DEFAULT, COLOR_BG_SEC); 16984: 6820 ldr r0, [r4, #0] 16986: 6a23 ldr r3, [r4, #32] 16988: f013 0302 ands.w r3, r3, #2 1698c: bf14 ite ne 1698e: 211a movne r1, #26 16990: 2108 moveq r1, #8 16992: 2b00 cmp r3, #0 16994: bf15 itete ne 16996: 2435 movne r4, #53 ; 0x35 16998: 2412 moveq r4, #18 1699a: 231b movne r3, #27 1699c: 2309 moveq r3, #9 1699e: f04f 0200 mov.w r2, #0 169a2: f363 0204 bfi r2, r3, #0, #5 169a6: f364 124a bfi r2, r4, #5, #6 169aa: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 169ae: 2199 movs r1, #153 ; 0x99 169b0: 3020 adds r0, #32 169b2: 4b20 ldr r3, [pc, #128] ; (16a34 ) 169b4: 4798 blx r3 lv_style_set_line_width(&styles->arc_bg, LV_STATE_DEFAULT, LV_DPX(25)); 169b6: 4b1d ldr r3, [pc, #116] ; (16a2c ) 169b8: 681c ldr r4, [r3, #0] 169ba: 3420 adds r4, #32 169bc: 2000 movs r0, #0 169be: 4b1e ldr r3, [pc, #120] ; (16a38 ) 169c0: 4798 blx r3 169c2: eb00 0080 add.w r0, r0, r0, lsl #2 169c6: eb00 0080 add.w r0, r0, r0, lsl #2 169ca: 3050 adds r0, #80 ; 0x50 169cc: f5b0 7fa0 cmp.w r0, #320 ; 0x140 169d0: da1b bge.n 16a0a 169d2: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 169d4: 2190 movs r1, #144 ; 0x90 169d6: 4620 mov r0, r4 169d8: 4c18 ldr r4, [pc, #96] ; (16a3c ) 169da: 47a0 blx r4 lv_style_set_line_rounded(&styles->arc_bg, LV_STATE_DEFAULT, true); 169dc: 4b13 ldr r3, [pc, #76] ; (16a2c ) 169de: 6818 ldr r0, [r3, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_ROUNDED, line_rounded, bool, _int, scalar) 169e0: 2201 movs r2, #1 169e2: 2194 movs r1, #148 ; 0x94 169e4: 3020 adds r0, #32 169e6: 47a0 blx r4 169e8: bd38 pop {r3, r4, r5, pc} lv_style_set_line_width(&styles->arc_indic, LV_STATE_DEFAULT, LV_DPX(25)); 169ea: 2000 movs r0, #0 169ec: 4b12 ldr r3, [pc, #72] ; (16a38 ) 169ee: 4798 blx r3 169f0: eb00 0080 add.w r0, r0, r0, lsl #2 169f4: eb00 0080 add.w r0, r0, r0, lsl #2 169f8: 3050 adds r0, #80 ; 0x50 169fa: 4b11 ldr r3, [pc, #68] ; (16a40 ) 169fc: fb83 2300 smull r2, r3, r3, r0 16a00: 17c2 asrs r2, r0, #31 16a02: ebc2 12a3 rsb r2, r2, r3, asr #6 16a06: b212 sxth r2, r2 16a08: e7ae b.n 16968 lv_style_set_line_width(&styles->arc_bg, LV_STATE_DEFAULT, LV_DPX(25)); 16a0a: 2000 movs r0, #0 16a0c: 4b0a ldr r3, [pc, #40] ; (16a38 ) 16a0e: 4798 blx r3 16a10: eb00 0080 add.w r0, r0, r0, lsl #2 16a14: eb00 0080 add.w r0, r0, r0, lsl #2 16a18: 3050 adds r0, #80 ; 0x50 16a1a: 4b09 ldr r3, [pc, #36] ; (16a40 ) 16a1c: fb83 2300 smull r2, r3, r3, r0 16a20: 17c2 asrs r2, r0, #31 16a22: ebc2 12a3 rsb r2, r2, r3, asr #6 16a26: b212 sxth r2, r2 16a28: e7d4 b.n 169d4 16a2a: bf00 nop 16a2c: 20006bd8 .word 0x20006bd8 16a30: 00014a61 .word 0x00014a61 16a34: 00006a25 .word 0x00006a25 16a38: 00010f3d .word 0x00010f3d 16a3c: 000068e1 .word 0x000068e1 16a40: 66666667 .word 0x66666667 00016a44 : { 16a44: b5f8 push {r3, r4, r5, r6, r7, lr} style_init_reset(&styles->led); 16a46: 4c38 ldr r4, [pc, #224] ; (16b28 ) 16a48: 6820 ldr r0, [r4, #0] 16a4a: 306c adds r0, #108 ; 0x6c 16a4c: 4b37 ldr r3, [pc, #220] ; (16b2c ) 16a4e: 4798 blx r3 lv_style_set_bg_opa(&styles->led, LV_STATE_DEFAULT, LV_OPA_COVER); 16a50: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 16a52: 22ff movs r2, #255 ; 0xff 16a54: 212c movs r1, #44 ; 0x2c 16a56: 306c adds r0, #108 ; 0x6c 16a58: 4d35 ldr r5, [pc, #212] ; (16b30 ) 16a5a: 47a8 blx r5 lv_style_set_bg_color(&styles->led, LV_STATE_DEFAULT, theme.color_primary); 16a5c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 16a5e: 89a2 ldrh r2, [r4, #12] 16a60: 2129 movs r1, #41 ; 0x29 16a62: 306c adds r0, #108 ; 0x6c 16a64: 4f33 ldr r7, [pc, #204] ; (16b34 ) 16a66: 47b8 blx r7 lv_style_set_border_width(&styles->led, LV_STATE_DEFAULT, 2); 16a68: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 16a6a: 2202 movs r2, #2 16a6c: 2130 movs r1, #48 ; 0x30 16a6e: 306c adds r0, #108 ; 0x6c 16a70: 4e31 ldr r6, [pc, #196] ; (16b38 ) 16a72: 47b0 blx r6 lv_style_set_border_opa(&styles->led, LV_STATE_DEFAULT, LV_OPA_50); 16a74: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar) 16a76: 227f movs r2, #127 ; 0x7f 16a78: 213c movs r1, #60 ; 0x3c 16a7a: 306c adds r0, #108 ; 0x6c 16a7c: 47a8 blx r5 lv_style_set_border_color(&styles->led, LV_STATE_DEFAULT, lv_color_lighten(theme.color_primary, LV_OPA_30)); 16a7e: 6825 ldr r5, [r4, #0] 16a80: 356c adds r5, #108 ; 0x6c 16a82: 214c movs r1, #76 ; 0x4c 16a84: 89a0 ldrh r0, [r4, #12] 16a86: 4b2d ldr r3, [pc, #180] ; (16b3c ) 16a88: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 16a8a: 4602 mov r2, r0 16a8c: 2139 movs r1, #57 ; 0x39 16a8e: 4628 mov r0, r5 16a90: 47b8 blx r7 lv_style_set_radius(&styles->led, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 16a92: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 16a94: f647 72ff movw r2, #32767 ; 0x7fff 16a98: 2101 movs r1, #1 16a9a: 306c adds r0, #108 ; 0x6c 16a9c: 47b0 blx r6 lv_style_set_shadow_width(&styles->led, LV_STATE_DEFAULT, LV_DPX(15)); 16a9e: 6824 ldr r4, [r4, #0] 16aa0: 346c adds r4, #108 ; 0x6c 16aa2: 2000 movs r0, #0 16aa4: 4b26 ldr r3, [pc, #152] ; (16b40 ) 16aa6: 4798 blx r3 16aa8: ebc0 1000 rsb r0, r0, r0, lsl #4 16aac: 3050 adds r0, #80 ; 0x50 16aae: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16ab2: da1c bge.n 16aee 16ab4: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 16ab6: 2150 movs r1, #80 ; 0x50 16ab8: 4620 mov r0, r4 16aba: 4b1f ldr r3, [pc, #124] ; (16b38 ) 16abc: 4798 blx r3 lv_style_set_shadow_color(&styles->led, LV_STATE_DEFAULT, theme.color_primary); 16abe: 4c1a ldr r4, [pc, #104] ; (16b28 ) 16ac0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar) 16ac2: 89a2 ldrh r2, [r4, #12] 16ac4: 2159 movs r1, #89 ; 0x59 16ac6: 306c adds r0, #108 ; 0x6c 16ac8: 4b1a ldr r3, [pc, #104] ; (16b34 ) 16aca: 4798 blx r3 lv_style_set_shadow_spread(&styles->led, LV_STATE_DEFAULT, LV_DPX(5)); 16acc: 6824 ldr r4, [r4, #0] 16ace: 346c adds r4, #108 ; 0x6c 16ad0: 2000 movs r0, #0 16ad2: 4b1b ldr r3, [pc, #108] ; (16b40 ) 16ad4: 4798 blx r3 16ad6: eb00 0080 add.w r0, r0, r0, lsl #2 16ada: 3050 adds r0, #80 ; 0x50 16adc: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16ae0: da13 bge.n 16b0a 16ae2: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar) 16ae4: 2153 movs r1, #83 ; 0x53 16ae6: 4620 mov r0, r4 16ae8: 4b13 ldr r3, [pc, #76] ; (16b38 ) 16aea: 4798 blx r3 16aec: bdf8 pop {r3, r4, r5, r6, r7, pc} lv_style_set_shadow_width(&styles->led, LV_STATE_DEFAULT, LV_DPX(15)); 16aee: 2000 movs r0, #0 16af0: 4b13 ldr r3, [pc, #76] ; (16b40 ) 16af2: 4798 blx r3 16af4: ebc0 1000 rsb r0, r0, r0, lsl #4 16af8: 3050 adds r0, #80 ; 0x50 16afa: 4b12 ldr r3, [pc, #72] ; (16b44 ) 16afc: fb83 2300 smull r2, r3, r3, r0 16b00: 17c2 asrs r2, r0, #31 16b02: ebc2 12a3 rsb r2, r2, r3, asr #6 16b06: b212 sxth r2, r2 16b08: e7d5 b.n 16ab6 lv_style_set_shadow_spread(&styles->led, LV_STATE_DEFAULT, LV_DPX(5)); 16b0a: 2000 movs r0, #0 16b0c: 4b0c ldr r3, [pc, #48] ; (16b40 ) 16b0e: 4798 blx r3 16b10: eb00 0080 add.w r0, r0, r0, lsl #2 16b14: 3050 adds r0, #80 ; 0x50 16b16: 4b0b ldr r3, [pc, #44] ; (16b44 ) 16b18: fb83 2300 smull r2, r3, r3, r0 16b1c: 17c2 asrs r2, r0, #31 16b1e: ebc2 12a3 rsb r2, r2, r3, asr #6 16b22: b212 sxth r2, r2 16b24: e7de b.n 16ae4 16b26: bf00 nop 16b28: 20006bd8 .word 0x20006bd8 16b2c: 00014a61 .word 0x00014a61 16b30: 00006b69 .word 0x00006b69 16b34: 00006a25 .word 0x00006a25 16b38: 000068e1 .word 0x000068e1 16b3c: 00011ba7 .word 0x00011ba7 16b40: 00010f3d .word 0x00010f3d 16b44: 66666667 .word 0x66666667 00016b48 : { 16b48: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 16b4c: 4680 mov r8, r0 16b4e: 460f mov r7, r1 16b50: 4615 mov r5, r2 16b52: 461e mov r6, r3 if(!inited) { 16b54: 4bb2 ldr r3, [pc, #712] ; (16e20 ) 16b56: 791b ldrb r3, [r3, #4] 16b58: 2b00 cmp r3, #0 16b5a: f001 8369 beq.w 18230 theme.color_primary = color_primary; 16b5e: 4cb0 ldr r4, [pc, #704] ; (16e20 ) 16b60: f8a4 800c strh.w r8, [r4, #12] theme.color_secondary = color_secondary; 16b64: 81e7 strh r7, [r4, #14] theme.font_small = font_small; 16b66: 6126 str r6, [r4, #16] theme.font_normal = font_normal; 16b68: 9b06 ldr r3, [sp, #24] 16b6a: 6163 str r3, [r4, #20] theme.font_subtitle = font_subtitle; 16b6c: 9b07 ldr r3, [sp, #28] 16b6e: 61a3 str r3, [r4, #24] theme.font_title = font_title; 16b70: 9b08 ldr r3, [sp, #32] 16b72: 61e3 str r3, [r4, #28] theme.flags = flags; 16b74: 6225 str r5, [r4, #32] basic_init(); 16b76: 4bab ldr r3, [pc, #684] ; (16e24 ) 16b78: 4798 blx r3 bar_init(); 16b7a: 4bab ldr r3, [pc, #684] ; (16e28 ) 16b7c: 4798 blx r3 led_init(); 16b7e: 4bab ldr r3, [pc, #684] ; (16e2c ) 16b80: 4798 blx r3 slider_init(); 16b82: 4bab ldr r3, [pc, #684] ; (16e30 ) 16b84: 4798 blx r3 switch_init(); 16b86: 4bab ldr r3, [pc, #684] ; (16e34 ) 16b88: 4798 blx r3 linemeter_init(); 16b8a: 4bab ldr r3, [pc, #684] ; (16e38 ) 16b8c: 4798 blx r3 gauge_init(); 16b8e: 4bab ldr r3, [pc, #684] ; (16e3c ) 16b90: 4798 blx r3 arc_init(); 16b92: 4bab ldr r3, [pc, #684] ; (16e40 ) 16b94: 4798 blx r3 style_init_reset(&styles->chart_bg); 16b96: 6820 ldr r0, [r4, #0] 16b98: 3040 adds r0, #64 ; 0x40 16b9a: 4baa ldr r3, [pc, #680] ; (16e44 ) 16b9c: 4798 blx r3 lv_style_set_text_color(&styles->chart_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 16b9e: 6820 ldr r0, [r4, #0] 16ba0: 3040 adds r0, #64 ; 0x40 16ba2: 6a23 ldr r3, [r4, #32] 16ba4: f013 0f02 tst.w r3, #2 16ba8: f041 834b bne.w 18242 16bac: 2314 movs r3, #20 16bae: 212b movs r1, #43 ; 0x2b 16bb0: 2417 movs r4, #23 16bb2: f04f 0200 mov.w r2, #0 16bb6: f364 0204 bfi r2, r4, #0, #5 16bba: f361 124a bfi r2, r1, #5, #6 16bbe: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 16bc2: f248 0189 movw r1, #32905 ; 0x8089 16bc6: 4ba0 ldr r3, [pc, #640] ; (16e48 ) 16bc8: 4798 blx r3 style_init_reset(&styles->chart_series_bg); 16bca: 4c95 ldr r4, [pc, #596] ; (16e20 ) 16bcc: 6820 ldr r0, [r4, #0] 16bce: 3044 adds r0, #68 ; 0x44 16bd0: 4b9c ldr r3, [pc, #624] ; (16e44 ) 16bd2: 4798 blx r3 lv_style_set_line_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(1)); 16bd4: 6824 ldr r4, [r4, #0] 16bd6: 3444 adds r4, #68 ; 0x44 16bd8: 2000 movs r0, #0 16bda: 4b9c ldr r3, [pc, #624] ; (16e4c ) 16bdc: 4798 blx r3 16bde: 3050 adds r0, #80 ; 0x50 16be0: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16be4: f281 8332 bge.w 1824c 16be8: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 16bea: 2190 movs r1, #144 ; 0x90 16bec: 4620 mov r0, r4 16bee: 4b98 ldr r3, [pc, #608] ; (16e50 ) 16bf0: 4798 blx r3 lv_style_set_line_dash_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 16bf2: 4b8b ldr r3, [pc, #556] ; (16e20 ) 16bf4: 681c ldr r4, [r3, #0] 16bf6: 3444 adds r4, #68 ; 0x44 16bf8: 2000 movs r0, #0 16bfa: 4b94 ldr r3, [pc, #592] ; (16e4c ) 16bfc: 4798 blx r3 16bfe: eb00 0080 add.w r0, r0, r0, lsl #2 16c02: 0040 lsls r0, r0, #1 16c04: 3050 adds r0, #80 ; 0x50 16c06: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16c0a: f281 832c bge.w 18266 16c0e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_DASH_WIDTH, line_dash_width, lv_style_int_t, _int, scalar) 16c10: 2192 movs r1, #146 ; 0x92 16c12: 4620 mov r0, r4 16c14: 4b8e ldr r3, [pc, #568] ; (16e50 ) 16c16: 4798 blx r3 lv_style_set_line_dash_gap(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 16c18: 4b81 ldr r3, [pc, #516] ; (16e20 ) 16c1a: 681c ldr r4, [r3, #0] 16c1c: 3444 adds r4, #68 ; 0x44 16c1e: 2000 movs r0, #0 16c20: 4b8a ldr r3, [pc, #552] ; (16e4c ) 16c22: 4798 blx r3 16c24: eb00 0080 add.w r0, r0, r0, lsl #2 16c28: 0040 lsls r0, r0, #1 16c2a: 3050 adds r0, #80 ; 0x50 16c2c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16c30: f281 8329 bge.w 18286 16c34: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_DASH_GAP, line_dash_gap, lv_style_int_t, _int, scalar) 16c36: 2193 movs r1, #147 ; 0x93 16c38: 4620 mov r0, r4 16c3a: 4b85 ldr r3, [pc, #532] ; (16e50 ) 16c3c: 4798 blx r3 lv_style_set_line_color(&styles->chart_series_bg, LV_STATE_DEFAULT, COLOR_BG_BORDER); 16c3e: 4b78 ldr r3, [pc, #480] ; (16e20 ) 16c40: 6818 ldr r0, [r3, #0] 16c42: 6a1b ldr r3, [r3, #32] 16c44: f013 0302 ands.w r3, r3, #2 16c48: bf14 ite ne 16c4a: 211a movne r1, #26 16c4c: 2110 moveq r1, #16 16c4e: 2b00 cmp r3, #0 16c50: bf15 itete ne 16c52: 2437 movne r4, #55 ; 0x37 16c54: 2422 moveq r4, #34 ; 0x22 16c56: 231c movne r3, #28 16c58: 2312 moveq r3, #18 16c5a: f04f 0200 mov.w r2, #0 16c5e: f363 0204 bfi r2, r3, #0, #5 16c62: f364 124a bfi r2, r4, #5, #6 16c66: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 16c6a: 2199 movs r1, #153 ; 0x99 16c6c: 3044 adds r0, #68 ; 0x44 16c6e: 4b76 ldr r3, [pc, #472] ; (16e48 ) 16c70: 4798 blx r3 style_init_reset(&styles->chart_series); 16c72: 4c6b ldr r4, [pc, #428] ; (16e20 ) 16c74: 6820 ldr r0, [r4, #0] 16c76: 3048 adds r0, #72 ; 0x48 16c78: 4b72 ldr r3, [pc, #456] ; (16e44 ) 16c7a: 4798 blx r3 lv_style_set_line_width(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(3)); 16c7c: 6824 ldr r4, [r4, #0] 16c7e: 3448 adds r4, #72 ; 0x48 16c80: 2000 movs r0, #0 16c82: 4b72 ldr r3, [pc, #456] ; (16e4c ) 16c84: 4798 blx r3 16c86: eb00 0040 add.w r0, r0, r0, lsl #1 16c8a: 3050 adds r0, #80 ; 0x50 16c8c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16c90: f281 8309 bge.w 182a6 16c94: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 16c96: 2190 movs r1, #144 ; 0x90 16c98: 4620 mov r0, r4 16c9a: 4b6d ldr r3, [pc, #436] ; (16e50 ) 16c9c: 4798 blx r3 lv_style_set_size(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(4)); 16c9e: 4b60 ldr r3, [pc, #384] ; (16e20 ) 16ca0: 681c ldr r4, [r3, #0] 16ca2: 3448 adds r4, #72 ; 0x48 16ca4: 2000 movs r0, #0 16ca6: 4b69 ldr r3, [pc, #420] ; (16e4c ) 16ca8: 4798 blx r3 16caa: 3014 adds r0, #20 16cac: 0080 lsls r0, r0, #2 16cae: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16cb2: f281 8307 bge.w 182c4 16cb6: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 16cb8: 2103 movs r1, #3 16cba: 4620 mov r0, r4 16cbc: 4b64 ldr r3, [pc, #400] ; (16e50 ) 16cbe: 4798 blx r3 lv_style_set_pad_inner(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(2)); /*Space between columns*/ 16cc0: 4b57 ldr r3, [pc, #348] ; (16e20 ) 16cc2: 681c ldr r4, [r3, #0] 16cc4: 3448 adds r4, #72 ; 0x48 16cc6: 2000 movs r0, #0 16cc8: 4b60 ldr r3, [pc, #384] ; (16e4c ) 16cca: 4798 blx r3 16ccc: 3028 adds r0, #40 ; 0x28 16cce: 0040 lsls r0, r0, #1 16cd0: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16cd4: f281 8304 bge.w 182e0 16cd8: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 16cda: 2114 movs r1, #20 16cdc: 4620 mov r0, r4 16cde: 4b5c ldr r3, [pc, #368] ; (16e50 ) 16ce0: 4798 blx r3 lv_style_set_radius(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(1)); 16ce2: 4b4f ldr r3, [pc, #316] ; (16e20 ) 16ce4: 681c ldr r4, [r3, #0] 16ce6: 3448 adds r4, #72 ; 0x48 16ce8: 2000 movs r0, #0 16cea: 4b58 ldr r3, [pc, #352] ; (16e4c ) 16cec: 4798 blx r3 16cee: 3050 adds r0, #80 ; 0x50 16cf0: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16cf4: f281 8302 bge.w 182fc 16cf8: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 16cfa: 2101 movs r1, #1 16cfc: 4620 mov r0, r4 16cfe: 4b54 ldr r3, [pc, #336] ; (16e50 ) 16d00: 4798 blx r3 style_init_reset(&styles->calendar_header); 16d02: 4c47 ldr r4, [pc, #284] ; (16e20 ) 16d04: 6820 ldr r0, [r4, #0] 16d06: 3030 adds r0, #48 ; 0x30 16d08: 4b4e ldr r3, [pc, #312] ; (16e44 ) 16d0a: 4798 blx r3 lv_style_set_pad_top(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 16d0c: 6824 ldr r4, [r4, #0] 16d0e: 3430 adds r4, #48 ; 0x30 16d10: 2000 movs r0, #0 16d12: 4b50 ldr r3, [pc, #320] ; (16e54 ) 16d14: 4798 blx r3 16d16: 2801 cmp r0, #1 16d18: f241 82fd bls.w 18316 16d1c: 2000 movs r0, #0 16d1e: 4b4b ldr r3, [pc, #300] ; (16e4c ) 16d20: 4798 blx r3 16d22: ebc0 1000 rsb r0, r0, r0, lsl #4 16d26: 0040 lsls r0, r0, #1 16d28: 3050 adds r0, #80 ; 0x50 16d2a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16d2e: f281 830d bge.w 1834c 16d32: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 16d34: 2110 movs r1, #16 16d36: 4620 mov r0, r4 16d38: 4b45 ldr r3, [pc, #276] ; (16e50 ) 16d3a: 4798 blx r3 lv_style_set_pad_left(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 16d3c: 4b38 ldr r3, [pc, #224] ; (16e20 ) 16d3e: 681c ldr r4, [r3, #0] 16d40: 3430 adds r4, #48 ; 0x30 16d42: 2000 movs r0, #0 16d44: 4b43 ldr r3, [pc, #268] ; (16e54 ) 16d46: 4798 blx r3 16d48: 2801 cmp r0, #1 16d4a: f241 830f bls.w 1836c 16d4e: 2000 movs r0, #0 16d50: 4b3e ldr r3, [pc, #248] ; (16e4c ) 16d52: 4798 blx r3 16d54: ebc0 1000 rsb r0, r0, r0, lsl #4 16d58: 0040 lsls r0, r0, #1 16d5a: 3050 adds r0, #80 ; 0x50 16d5c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16d60: f281 8336 bge.w 183d0 16d64: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 16d66: 2112 movs r1, #18 16d68: 4620 mov r0, r4 16d6a: 4b39 ldr r3, [pc, #228] ; (16e50 ) 16d6c: 4798 blx r3 lv_style_set_pad_right(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 16d6e: 4b2c ldr r3, [pc, #176] ; (16e20 ) 16d70: 681c ldr r4, [r3, #0] 16d72: 3430 adds r4, #48 ; 0x30 16d74: 2000 movs r0, #0 16d76: 4b37 ldr r3, [pc, #220] ; (16e54 ) 16d78: 4798 blx r3 16d7a: 2801 cmp r0, #1 16d7c: f241 8338 bls.w 183f0 16d80: 2000 movs r0, #0 16d82: 4b32 ldr r3, [pc, #200] ; (16e4c ) 16d84: 4798 blx r3 16d86: ebc0 1000 rsb r0, r0, r0, lsl #4 16d8a: 0040 lsls r0, r0, #1 16d8c: 3050 adds r0, #80 ; 0x50 16d8e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16d92: f281 8348 bge.w 18426 16d96: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 16d98: 2113 movs r1, #19 16d9a: 4620 mov r0, r4 16d9c: 4b2c ldr r3, [pc, #176] ; (16e50 ) 16d9e: 4798 blx r3 lv_style_set_pad_bottom(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 16da0: 4b1f ldr r3, [pc, #124] ; (16e20 ) 16da2: 681c ldr r4, [r3, #0] 16da4: 3430 adds r4, #48 ; 0x30 16da6: 2000 movs r0, #0 16da8: 4b2a ldr r3, [pc, #168] ; (16e54 ) 16daa: 4798 blx r3 16dac: 2801 cmp r0, #1 16dae: f241 834a bls.w 18446 16db2: 2000 movs r0, #0 16db4: 4b25 ldr r3, [pc, #148] ; (16e4c ) 16db6: 4798 blx r3 16db8: ebc0 1000 rsb r0, r0, r0, lsl #4 16dbc: 0040 lsls r0, r0, #1 16dbe: 3050 adds r0, #80 ; 0x50 16dc0: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16dc4: f281 835a bge.w 1847c 16dc8: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 16dca: 2111 movs r1, #17 16dcc: 4620 mov r0, r4 16dce: 4b20 ldr r3, [pc, #128] ; (16e50 ) 16dd0: 4798 blx r3 lv_style_set_text_color(&styles->calendar_header, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x888888) : LV_COLOR_WHITE); 16dd2: 4b13 ldr r3, [pc, #76] ; (16e20 ) 16dd4: 6818 ldr r0, [r3, #0] 16dd6: 6a1b ldr r3, [r3, #32] 16dd8: f013 0302 ands.w r3, r3, #2 16ddc: bf14 ite ne 16dde: 2122 movne r1, #34 ; 0x22 16de0: 213f moveq r1, #63 ; 0x3f 16de2: 2b00 cmp r3, #0 16de4: bf14 ite ne 16de6: 2311 movne r3, #17 16de8: 231f moveq r3, #31 16dea: f04f 0200 mov.w r2, #0 16dee: f363 0204 bfi r2, r3, #0, #5 16df2: f361 124a bfi r2, r1, #5, #6 16df6: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 16dfa: f249 0189 movw r1, #37001 ; 0x9089 16dfe: 3030 adds r0, #48 ; 0x30 16e00: 4b11 ldr r3, [pc, #68] ; (16e48 ) 16e02: 4798 blx r3 style_init_reset(&styles->calendar_daynames); 16e04: 4c06 ldr r4, [pc, #24] ; (16e20 ) 16e06: 6820 ldr r0, [r4, #0] 16e08: 3034 adds r0, #52 ; 0x34 16e0a: 4b0e ldr r3, [pc, #56] ; (16e44 ) 16e0c: 4798 blx r3 lv_style_set_text_color(&styles->calendar_daynames, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex3(0xeee)); 16e0e: 6820 ldr r0, [r4, #0] 16e10: 3034 adds r0, #52 ; 0x34 16e12: 6a23 ldr r3, [r4, #32] 16e14: f013 0f02 tst.w r3, #2 16e18: f041 8340 bne.w 1849c 16e1c: e01c b.n 16e58 16e1e: bf00 nop 16e20: 20006bd8 .word 0x20006bd8 16e24: 00014a81 .word 0x00014a81 16e28: 00015cc9 .word 0x00015cc9 16e2c: 00016a45 .word 0x00016a45 16e30: 00015e31 .word 0x00015e31 16e34: 000160d5 .word 0x000160d5 16e38: 00016219 .word 0x00016219 16e3c: 00016455 .word 0x00016455 16e40: 00016935 .word 0x00016935 16e44: 00014a61 .word 0x00014a61 16e48: 00006a25 .word 0x00006a25 16e4c: 00010f3d .word 0x00010f3d 16e50: 000068e1 .word 0x000068e1 16e54: 00010f59 .word 0x00010f59 16e58: 231d movs r3, #29 16e5a: 213b movs r1, #59 ; 0x3b 16e5c: 461c mov r4, r3 16e5e: f04f 0200 mov.w r2, #0 16e62: f364 0204 bfi r2, r4, #0, #5 16e66: f361 124a bfi r2, r1, #5, #6 16e6a: f363 22cf bfi r2, r3, #11, #5 16e6e: f248 0189 movw r1, #32905 ; 0x8089 16e72: 4bb8 ldr r3, [pc, #736] ; (17154 ) 16e74: 4798 blx r3 lv_style_set_pad_left(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 16e76: 4bb8 ldr r3, [pc, #736] ; (17158 ) 16e78: 681c ldr r4, [r3, #0] 16e7a: 3434 adds r4, #52 ; 0x34 16e7c: 2000 movs r0, #0 16e7e: 4bb7 ldr r3, [pc, #732] ; (1715c ) 16e80: 4798 blx r3 16e82: 2801 cmp r0, #1 16e84: f241 830f bls.w 184a6 16e88: 2000 movs r0, #0 16e8a: 4bb5 ldr r3, [pc, #724] ; (17160 ) 16e8c: 4798 blx r3 16e8e: ebc0 1000 rsb r0, r0, r0, lsl #4 16e92: 0040 lsls r0, r0, #1 16e94: 3050 adds r0, #80 ; 0x50 16e96: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16e9a: f281 831f bge.w 184dc 16e9e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 16ea0: 2112 movs r1, #18 16ea2: 4620 mov r0, r4 16ea4: 4baf ldr r3, [pc, #700] ; (17164 ) 16ea6: 4798 blx r3 lv_style_set_pad_right(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 16ea8: 4bab ldr r3, [pc, #684] ; (17158 ) 16eaa: 681c ldr r4, [r3, #0] 16eac: 3434 adds r4, #52 ; 0x34 16eae: 2000 movs r0, #0 16eb0: 4baa ldr r3, [pc, #680] ; (1715c ) 16eb2: 4798 blx r3 16eb4: 2801 cmp r0, #1 16eb6: f241 8321 bls.w 184fc 16eba: 2000 movs r0, #0 16ebc: 4ba8 ldr r3, [pc, #672] ; (17160 ) 16ebe: 4798 blx r3 16ec0: ebc0 1000 rsb r0, r0, r0, lsl #4 16ec4: 0040 lsls r0, r0, #1 16ec6: 3050 adds r0, #80 ; 0x50 16ec8: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16ecc: f281 8331 bge.w 18532 16ed0: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 16ed2: 2113 movs r1, #19 16ed4: 4620 mov r0, r4 16ed6: 4ba3 ldr r3, [pc, #652] ; (17164 ) 16ed8: 4798 blx r3 lv_style_set_pad_bottom(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 16eda: 4b9f ldr r3, [pc, #636] ; (17158 ) 16edc: 681c ldr r4, [r3, #0] 16ede: 3434 adds r4, #52 ; 0x34 16ee0: 2000 movs r0, #0 16ee2: 4b9e ldr r3, [pc, #632] ; (1715c ) 16ee4: 4798 blx r3 16ee6: 2801 cmp r0, #1 16ee8: f241 8333 bls.w 18552 16eec: 2000 movs r0, #0 16eee: 4b9c ldr r3, [pc, #624] ; (17160 ) 16ef0: 4798 blx r3 16ef2: ebc0 1000 rsb r0, r0, r0, lsl #4 16ef6: 0040 lsls r0, r0, #1 16ef8: 3050 adds r0, #80 ; 0x50 16efa: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16efe: f281 8343 bge.w 18588 16f02: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 16f04: 2111 movs r1, #17 16f06: 4620 mov r0, r4 16f08: 4b96 ldr r3, [pc, #600] ; (17164 ) 16f0a: 4798 blx r3 style_init_reset(&styles->calendar_date_nums); 16f0c: 4c92 ldr r4, [pc, #584] ; (17158 ) 16f0e: 6820 ldr r0, [r4, #0] 16f10: 302c adds r0, #44 ; 0x2c 16f12: 4b95 ldr r3, [pc, #596] ; (17168 ) 16f14: 4798 blx r3 lv_style_set_radius(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(4)); 16f16: 6824 ldr r4, [r4, #0] 16f18: 342c adds r4, #44 ; 0x2c 16f1a: 2000 movs r0, #0 16f1c: 4b90 ldr r3, [pc, #576] ; (17160 ) 16f1e: 4798 blx r3 16f20: 3014 adds r0, #20 16f22: 0080 lsls r0, r0, #2 16f24: f5b0 7fa0 cmp.w r0, #320 ; 0x140 16f28: f281 833e bge.w 185a8 16f2c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 16f2e: 2101 movs r1, #1 16f30: 4620 mov r0, r4 16f32: 4b8c ldr r3, [pc, #560] ; (17164 ) 16f34: 4798 blx r3 lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 16f36: 4b88 ldr r3, [pc, #544] ; (17158 ) 16f38: 6818 ldr r0, [r3, #0] 16f3a: 302c adds r0, #44 ; 0x2c 16f3c: 6a1b ldr r3, [r3, #32] 16f3e: f013 0f02 tst.w r3, #2 16f42: f041 833f bne.w 185c4 16f46: 231f movs r3, #31 16f48: 213f movs r1, #63 ; 0x3f 16f4a: 461c mov r4, r3 16f4c: f04f 0200 mov.w r2, #0 16f50: f364 0204 bfi r2, r4, #0, #5 16f54: f361 124a bfi r2, r1, #5, #6 16f58: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 16f5c: f248 1189 movw r1, #33161 ; 0x8189 16f60: 4b7c ldr r3, [pc, #496] ; (17154 ) 16f62: 4798 blx r3 lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? LV_OPA_20 : LV_OPA_40); 16f64: 4b7c ldr r3, [pc, #496] ; (17158 ) 16f66: 6818 ldr r0, [r3, #0] 16f68: 6a1b ldr r3, [r3, #32] 16f6a: f013 0f02 tst.w r3, #2 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 16f6e: bf14 ite ne 16f70: 2233 movne r2, #51 ; 0x33 16f72: 2266 moveq r2, #102 ; 0x66 16f74: f44f 7196 mov.w r1, #300 ; 0x12c 16f78: 302c adds r0, #44 ; 0x2c 16f7a: 4d7c ldr r5, [pc, #496] ; (1716c ) 16f7c: 47a8 blx r5 lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_PRESSED, LV_OPA_20); 16f7e: 4c76 ldr r4, [pc, #472] ; (17158 ) 16f80: 6820 ldr r0, [r4, #0] 16f82: 2233 movs r2, #51 ; 0x33 16f84: f241 012c movw r1, #4140 ; 0x102c 16f88: 302c adds r0, #44 ; 0x2c 16f8a: 47a8 blx r5 lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_FOCUSED, LV_OPA_COVER); 16f8c: 6820 ldr r0, [r4, #0] 16f8e: 22ff movs r2, #255 ; 0xff 16f90: f44f 710b mov.w r1, #556 ; 0x22c 16f94: 302c adds r0, #44 ; 0x2c 16f96: 47a8 blx r5 lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_FOCUSED, LV_COLOR_WHITE); 16f98: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 16f9a: 4b75 ldr r3, [pc, #468] ; (17170 ) 16f9c: 881a ldrh r2, [r3, #0] 16f9e: f248 2189 movw r1, #33417 ; 0x8289 16fa2: 302c adds r0, #44 ; 0x2c 16fa4: 4d6b ldr r5, [pc, #428] ; (17154 ) 16fa6: 47a8 blx r5 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_FOCUSED, theme.color_primary); 16fa8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 16faa: 89a2 ldrh r2, [r4, #12] 16fac: f240 2129 movw r1, #553 ; 0x229 16fb0: 302c adds r0, #44 ; 0x2c 16fb2: 47a8 blx r5 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x666666) : LV_COLOR_WHITE); 16fb4: 6820 ldr r0, [r4, #0] 16fb6: 6a23 ldr r3, [r4, #32] 16fb8: f013 0302 ands.w r3, r3, #2 16fbc: bf14 ite ne 16fbe: 2119 movne r1, #25 16fc0: 213f moveq r1, #63 ; 0x3f 16fc2: 2b00 cmp r3, #0 16fc4: bf14 ite ne 16fc6: 230c movne r3, #12 16fc8: 231f moveq r3, #31 16fca: f04f 0200 mov.w r2, #0 16fce: f363 0204 bfi r2, r3, #0, #5 16fd2: f361 124a bfi r2, r1, #5, #6 16fd6: f363 22cf bfi r2, r3, #11, #5 16fda: 2129 movs r1, #41 ; 0x29 16fdc: 302c adds r0, #44 ; 0x2c 16fde: 47a8 blx r5 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_CHECKED, theme.color_primary); 16fe0: 6820 ldr r0, [r4, #0] 16fe2: 89a2 ldrh r2, [r4, #12] 16fe4: f240 1129 movw r1, #297 ; 0x129 16fe8: 302c adds r0, #44 ; 0x2c 16fea: 47a8 blx r5 lv_style_set_border_width(&styles->calendar_date_nums, LV_STATE_CHECKED, 2); 16fec: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 16fee: 2202 movs r2, #2 16ff0: f44f 7198 mov.w r1, #304 ; 0x130 16ff4: 302c adds r0, #44 ; 0x2c 16ff6: 4e5b ldr r6, [pc, #364] ; (17164 ) 16ff8: 47b0 blx r6 lv_style_set_border_side(&styles->calendar_date_nums, LV_STATE_CHECKED, LV_BORDER_SIDE_LEFT); 16ffa: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 16ffc: 2204 movs r2, #4 16ffe: f240 1131 movw r1, #305 ; 0x131 17002: 302c adds r0, #44 ; 0x2c 17004: 47b0 blx r6 lv_style_set_border_color(&styles->calendar_date_nums, LV_STATE_CHECKED, theme.color_primary); 17006: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 17008: 89a2 ldrh r2, [r4, #12] 1700a: f240 1139 movw r1, #313 ; 0x139 1700e: 302c adds r0, #44 ; 0x2c 17010: 47a8 blx r5 lv_style_set_pad_inner(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(3)); 17012: 6824 ldr r4, [r4, #0] 17014: 342c adds r4, #44 ; 0x2c 17016: 2000 movs r0, #0 17018: 4b51 ldr r3, [pc, #324] ; (17160 ) 1701a: 4798 blx r3 1701c: eb00 0040 add.w r0, r0, r0, lsl #1 17020: 3050 adds r0, #80 ; 0x50 17022: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17026: f281 82d2 bge.w 185ce 1702a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 1702c: 2114 movs r1, #20 1702e: 4620 mov r0, r4 17030: 4b4c ldr r3, [pc, #304] ; (17164 ) 17032: 4798 blx r3 lv_style_set_pad_left(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 17034: 4b48 ldr r3, [pc, #288] ; (17158 ) 17036: 681c ldr r4, [r3, #0] 17038: 342c adds r4, #44 ; 0x2c 1703a: 2000 movs r0, #0 1703c: 4b47 ldr r3, [pc, #284] ; (1715c ) 1703e: 4798 blx r3 17040: 2801 cmp r0, #1 17042: f241 82d3 bls.w 185ec 17046: 2000 movs r0, #0 17048: 4b45 ldr r3, [pc, #276] ; (17160 ) 1704a: 4798 blx r3 1704c: ebc0 1000 rsb r0, r0, r0, lsl #4 17050: 0040 lsls r0, r0, #1 17052: 3050 adds r0, #80 ; 0x50 17054: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17058: f281 82e3 bge.w 18622 1705c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1705e: 2112 movs r1, #18 17060: 4620 mov r0, r4 17062: 4b40 ldr r3, [pc, #256] ; (17164 ) 17064: 4798 blx r3 lv_style_set_pad_right(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 17066: 4b3c ldr r3, [pc, #240] ; (17158 ) 17068: 681c ldr r4, [r3, #0] 1706a: 342c adds r4, #44 ; 0x2c 1706c: 2000 movs r0, #0 1706e: 4b3b ldr r3, [pc, #236] ; (1715c ) 17070: 4798 blx r3 17072: 2801 cmp r0, #1 17074: f241 82e5 bls.w 18642 17078: 2000 movs r0, #0 1707a: 4b39 ldr r3, [pc, #228] ; (17160 ) 1707c: 4798 blx r3 1707e: ebc0 1000 rsb r0, r0, r0, lsl #4 17082: 0040 lsls r0, r0, #1 17084: 3050 adds r0, #80 ; 0x50 17086: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1708a: f281 82f5 bge.w 18678 1708e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 17090: 2113 movs r1, #19 17092: 4620 mov r0, r4 17094: 4b33 ldr r3, [pc, #204] ; (17164 ) 17096: 4798 blx r3 lv_style_set_pad_bottom(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 17098: 4b2f ldr r3, [pc, #188] ; (17158 ) 1709a: 681c ldr r4, [r3, #0] 1709c: 342c adds r4, #44 ; 0x2c 1709e: 2000 movs r0, #0 170a0: 4b2e ldr r3, [pc, #184] ; (1715c ) 170a2: 4798 blx r3 170a4: 2801 cmp r0, #1 170a6: f241 82f7 bls.w 18698 170aa: 2000 movs r0, #0 170ac: 4b2c ldr r3, [pc, #176] ; (17160 ) 170ae: 4798 blx r3 170b0: ebc0 1000 rsb r0, r0, r0, lsl #4 170b4: 0040 lsls r0, r0, #1 170b6: 3050 adds r0, #80 ; 0x50 170b8: f5b0 7fa0 cmp.w r0, #320 ; 0x140 170bc: f281 8307 bge.w 186ce 170c0: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 170c2: 2111 movs r1, #17 170c4: 4620 mov r0, r4 170c6: 4b27 ldr r3, [pc, #156] ; (17164 ) 170c8: 4798 blx r3 style_init_reset(&styles->cpicker_bg); 170ca: 4c23 ldr r4, [pc, #140] ; (17158 ) 170cc: 6820 ldr r0, [r4, #0] 170ce: 3038 adds r0, #56 ; 0x38 170d0: 4b25 ldr r3, [pc, #148] ; (17168 ) 170d2: 4798 blx r3 lv_style_set_scale_width(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(30)); 170d4: 6824 ldr r4, [r4, #0] 170d6: 3438 adds r4, #56 ; 0x38 170d8: 2000 movs r0, #0 170da: 4b21 ldr r3, [pc, #132] ; (17160 ) 170dc: 4798 blx r3 170de: ebc0 1000 rsb r0, r0, r0, lsl #4 170e2: 0040 lsls r0, r0, #1 170e4: 3050 adds r0, #80 ; 0x50 170e6: f5b0 7fa0 cmp.w r0, #320 ; 0x140 170ea: f281 8305 bge.w 186f8 170ee: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 170f0: 21c0 movs r1, #192 ; 0xc0 170f2: 4620 mov r0, r4 170f4: 4b1b ldr r3, [pc, #108] ; (17164 ) 170f6: 4798 blx r3 lv_style_set_bg_opa(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_OPA_COVER); 170f8: 4c17 ldr r4, [pc, #92] ; (17158 ) 170fa: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 170fc: 22ff movs r2, #255 ; 0xff 170fe: 212c movs r1, #44 ; 0x2c 17100: 3038 adds r0, #56 ; 0x38 17102: 4b1a ldr r3, [pc, #104] ; (1716c ) 17104: 4798 blx r3 lv_style_set_bg_color(&styles->cpicker_bg, LV_STATE_DEFAULT, COLOR_SCR); 17106: 6820 ldr r0, [r4, #0] 17108: 6a23 ldr r3, [r4, #32] 1710a: f013 0302 ands.w r3, r3, #2 1710e: bf14 ite ne 17110: 211d movne r1, #29 17112: 2108 moveq r1, #8 17114: 2b00 cmp r3, #0 17116: bf15 itete ne 17118: 243b movne r4, #59 ; 0x3b 1711a: 2412 moveq r4, #18 1711c: 231e movne r3, #30 1711e: 230b moveq r3, #11 17120: f04f 0200 mov.w r2, #0 17124: f363 0204 bfi r2, r3, #0, #5 17128: f364 124a bfi r2, r4, #5, #6 1712c: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17130: 2129 movs r1, #41 ; 0x29 17132: 3038 adds r0, #56 ; 0x38 17134: 4b07 ldr r3, [pc, #28] ; (17154 ) 17136: 4798 blx r3 lv_style_set_pad_inner(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(20)); 17138: 4b07 ldr r3, [pc, #28] ; (17158 ) 1713a: 681c ldr r4, [r3, #0] 1713c: 3438 adds r4, #56 ; 0x38 1713e: 2000 movs r0, #0 17140: 4b07 ldr r3, [pc, #28] ; (17160 ) 17142: 4798 blx r3 17144: eb00 0080 add.w r0, r0, r0, lsl #2 17148: 0080 lsls r0, r0, #2 1714a: 3050 adds r0, #80 ; 0x50 1714c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17150: e010 b.n 17174 17152: bf00 nop 17154: 00006a25 .word 0x00006a25 17158: 20006bd8 .word 0x20006bd8 1715c: 00010f59 .word 0x00010f59 17160: 00010f3d .word 0x00010f3d 17164: 000068e1 .word 0x000068e1 17168: 00014a61 .word 0x00014a61 1716c: 00006b69 .word 0x00006b69 17170: 00029584 .word 0x00029584 17174: f281 82d0 bge.w 18718 17178: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 1717a: 2114 movs r1, #20 1717c: 4620 mov r0, r4 1717e: 4eb6 ldr r6, [pc, #728] ; (17458 ) 17180: 47b0 blx r6 lv_style_set_radius(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 17182: 4cb6 ldr r4, [pc, #728] ; (1745c ) 17184: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 17186: f647 72ff movw r2, #32767 ; 0x7fff 1718a: 2101 movs r1, #1 1718c: 3038 adds r0, #56 ; 0x38 1718e: 47b0 blx r6 style_init_reset(&styles->cpicker_indic); 17190: 6820 ldr r0, [r4, #0] 17192: 303c adds r0, #60 ; 0x3c 17194: 4bb2 ldr r3, [pc, #712] ; (17460 ) 17196: 4798 blx r3 lv_style_set_radius(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 17198: 6820 ldr r0, [r4, #0] 1719a: f647 72ff movw r2, #32767 ; 0x7fff 1719e: 2101 movs r1, #1 171a0: 303c adds r0, #60 ; 0x3c 171a2: 47b0 blx r6 lv_style_set_bg_color(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_COLOR_WHITE); 171a4: 6820 ldr r0, [r4, #0] 171a6: 4faf ldr r7, [pc, #700] ; (17464 ) _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 171a8: 883a ldrh r2, [r7, #0] 171aa: 2129 movs r1, #41 ; 0x29 171ac: 303c adds r0, #60 ; 0x3c 171ae: 4dae ldr r5, [pc, #696] ; (17468 ) 171b0: 47a8 blx r5 lv_style_set_bg_opa(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_OPA_COVER); 171b2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 171b4: 22ff movs r2, #255 ; 0xff 171b6: 212c movs r1, #44 ; 0x2c 171b8: 303c adds r0, #60 ; 0x3c 171ba: 4bac ldr r3, [pc, #688] ; (1746c ) 171bc: 4798 blx r3 lv_style_set_border_width(&styles->cpicker_indic, LV_STATE_DEFAULT, 2); 171be: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 171c0: 2202 movs r2, #2 171c2: 2130 movs r1, #48 ; 0x30 171c4: 303c adds r0, #60 ; 0x3c 171c6: 47b0 blx r6 lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_COLOR_GRAY); 171c8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 171ca: 88ba ldrh r2, [r7, #4] 171cc: 2139 movs r1, #57 ; 0x39 171ce: 303c adds r0, #60 ; 0x3c 171d0: 47a8 blx r5 lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_FOCUSED, theme.color_primary); 171d2: 6820 ldr r0, [r4, #0] 171d4: 89a2 ldrh r2, [r4, #12] 171d6: f240 2139 movw r1, #569 ; 0x239 171da: 303c adds r0, #60 ; 0x3c 171dc: 47a8 blx r5 lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_EDITED, theme.color_secondary); 171de: 6820 ldr r0, [r4, #0] 171e0: 89e2 ldrh r2, [r4, #14] 171e2: f240 4139 movw r1, #1081 ; 0x439 171e6: 303c adds r0, #60 ; 0x3c 171e8: 47a8 blx r5 lv_style_set_pad_left(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 171ea: 6824 ldr r4, [r4, #0] 171ec: 343c adds r4, #60 ; 0x3c 171ee: 2000 movs r0, #0 171f0: 4b9f ldr r3, [pc, #636] ; (17470 ) 171f2: 4798 blx r3 171f4: eb00 0340 add.w r3, r0, r0, lsl #1 171f8: eb00 0083 add.w r0, r0, r3, lsl #2 171fc: 3050 adds r0, #80 ; 0x50 171fe: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17202: f281 8299 bge.w 18738 17206: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 17208: 2112 movs r1, #18 1720a: 4620 mov r0, r4 1720c: 4b92 ldr r3, [pc, #584] ; (17458 ) 1720e: 4798 blx r3 lv_style_set_pad_right(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 17210: 4b92 ldr r3, [pc, #584] ; (1745c ) 17212: 681c ldr r4, [r3, #0] 17214: 343c adds r4, #60 ; 0x3c 17216: 2000 movs r0, #0 17218: 4b95 ldr r3, [pc, #596] ; (17470 ) 1721a: 4798 blx r3 1721c: eb00 0340 add.w r3, r0, r0, lsl #1 17220: eb00 0083 add.w r0, r0, r3, lsl #2 17224: 3050 adds r0, #80 ; 0x50 17226: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1722a: f281 8296 bge.w 1875a 1722e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 17230: 2113 movs r1, #19 17232: 4620 mov r0, r4 17234: 4b88 ldr r3, [pc, #544] ; (17458 ) 17236: 4798 blx r3 lv_style_set_pad_top(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 17238: 4b88 ldr r3, [pc, #544] ; (1745c ) 1723a: 681c ldr r4, [r3, #0] 1723c: 343c adds r4, #60 ; 0x3c 1723e: 2000 movs r0, #0 17240: 4b8b ldr r3, [pc, #556] ; (17470 ) 17242: 4798 blx r3 17244: eb00 0340 add.w r3, r0, r0, lsl #1 17248: eb00 0083 add.w r0, r0, r3, lsl #2 1724c: 3050 adds r0, #80 ; 0x50 1724e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17252: f281 8293 bge.w 1877c 17256: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 17258: 2110 movs r1, #16 1725a: 4620 mov r0, r4 1725c: 4b7e ldr r3, [pc, #504] ; (17458 ) 1725e: 4798 blx r3 lv_style_set_pad_bottom(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 17260: 4b7e ldr r3, [pc, #504] ; (1745c ) 17262: 681c ldr r4, [r3, #0] 17264: 343c adds r4, #60 ; 0x3c 17266: 2000 movs r0, #0 17268: 4b81 ldr r3, [pc, #516] ; (17470 ) 1726a: 4798 blx r3 1726c: eb00 0340 add.w r3, r0, r0, lsl #1 17270: eb00 0083 add.w r0, r0, r3, lsl #2 17274: 3050 adds r0, #80 ; 0x50 17276: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1727a: f281 8290 bge.w 1879e 1727e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 17280: 2111 movs r1, #17 17282: 4620 mov r0, r4 17284: 4b74 ldr r3, [pc, #464] ; (17458 ) 17286: 4798 blx r3 style_init_reset(&styles->cb_bg); 17288: 4c74 ldr r4, [pc, #464] ; (1745c ) 1728a: 6820 ldr r0, [r4, #0] 1728c: 304c adds r0, #76 ; 0x4c 1728e: 4b74 ldr r3, [pc, #464] ; (17460 ) 17290: 4798 blx r3 lv_style_set_radius(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 17292: 6824 ldr r4, [r4, #0] 17294: 344c adds r4, #76 ; 0x4c 17296: 2000 movs r0, #0 17298: 4b75 ldr r3, [pc, #468] ; (17470 ) 1729a: 4798 blx r3 1729c: 3014 adds r0, #20 1729e: 0080 lsls r0, r0, #2 172a0: f5b0 7fa0 cmp.w r0, #320 ; 0x140 172a4: f281 828c bge.w 187c0 172a8: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 172aa: 2101 movs r1, #1 172ac: 4620 mov r0, r4 172ae: 4b6a ldr r3, [pc, #424] ; (17458 ) 172b0: 4798 blx r3 lv_style_set_pad_inner(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 172b2: 4b6a ldr r3, [pc, #424] ; (1745c ) 172b4: 681c ldr r4, [r3, #0] 172b6: 344c adds r4, #76 ; 0x4c 172b8: 2000 movs r0, #0 172ba: 4b6d ldr r3, [pc, #436] ; (17470 ) 172bc: 4798 blx r3 172be: eb00 0080 add.w r0, r0, r0, lsl #2 172c2: 0040 lsls r0, r0, #1 172c4: 3050 adds r0, #80 ; 0x50 172c6: f5b0 7fa0 cmp.w r0, #320 ; 0x140 172ca: f281 8287 bge.w 187dc 172ce: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 172d0: 2114 movs r1, #20 172d2: 4620 mov r0, r4 172d4: 4b60 ldr r3, [pc, #384] ; (17458 ) 172d6: 4798 blx r3 lv_style_set_outline_color(&styles->cb_bg, LV_STATE_DEFAULT, theme.color_primary); 172d8: 4c60 ldr r4, [pc, #384] ; (1745c ) 172da: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 172dc: 89a2 ldrh r2, [r4, #12] 172de: 2149 movs r1, #73 ; 0x49 172e0: 304c adds r0, #76 ; 0x4c 172e2: 4b61 ldr r3, [pc, #388] ; (17468 ) 172e4: 4798 blx r3 lv_style_set_outline_opa(&styles->cb_bg, LV_STATE_DEFAULT, LV_OPA_TRANSP); 172e6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 172e8: 2200 movs r2, #0 172ea: 214c movs r1, #76 ; 0x4c 172ec: 4408 add r0, r1 172ee: 4d5f ldr r5, [pc, #380] ; (1746c ) 172f0: 47a8 blx r5 lv_style_set_outline_opa(&styles->cb_bg, LV_STATE_FOCUSED, LV_OPA_50); 172f2: 6820 ldr r0, [r4, #0] 172f4: 227f movs r2, #127 ; 0x7f 172f6: f44f 7113 mov.w r1, #588 ; 0x24c 172fa: 304c adds r0, #76 ; 0x4c 172fc: 47a8 blx r5 lv_style_set_outline_width(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 172fe: 6824 ldr r4, [r4, #0] 17300: 344c adds r4, #76 ; 0x4c 17302: 2000 movs r0, #0 17304: 4b5a ldr r3, [pc, #360] ; (17470 ) 17306: 4798 blx r3 17308: eb00 0040 add.w r0, r0, r0, lsl #1 1730c: 3050 adds r0, #80 ; 0x50 1730e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17312: f281 8273 bge.w 187fc 17316: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 17318: 2140 movs r1, #64 ; 0x40 1731a: 4620 mov r0, r4 1731c: 4b4e ldr r3, [pc, #312] ; (17458 ) 1731e: 4798 blx r3 lv_style_set_outline_pad(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 17320: 4b4e ldr r3, [pc, #312] ; (1745c ) 17322: 681c ldr r4, [r3, #0] 17324: 344c adds r4, #76 ; 0x4c 17326: 2000 movs r0, #0 17328: 4b51 ldr r3, [pc, #324] ; (17470 ) 1732a: 4798 blx r3 1732c: eb00 0080 add.w r0, r0, r0, lsl #2 17330: 0040 lsls r0, r0, #1 17332: 3050 adds r0, #80 ; 0x50 17334: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17338: f281 826f bge.w 1881a 1733c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar) 1733e: 2141 movs r1, #65 ; 0x41 17340: 4620 mov r0, r4 17342: 4d45 ldr r5, [pc, #276] ; (17458 ) 17344: 47a8 blx r5 lv_style_set_transition_time(&styles->cb_bg, LV_STATE_DEFAULT, TRANSITION_TIME); 17346: 4c45 ldr r4, [pc, #276] ; (1745c ) 17348: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 1734a: 2296 movs r2, #150 ; 0x96 1734c: 21b0 movs r1, #176 ; 0xb0 1734e: 304c adds r0, #76 ; 0x4c 17350: 47a8 blx r5 lv_style_set_transition_prop_6(&styles->cb_bg, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); 17352: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 17354: 224c movs r2, #76 ; 0x4c 17356: 21b7 movs r1, #183 ; 0xb7 17358: 4410 add r0, r2 1735a: 47a8 blx r5 style_init_reset(&styles->cb_bullet); 1735c: 6820 ldr r0, [r4, #0] 1735e: 3050 adds r0, #80 ; 0x50 17360: 4b3f ldr r3, [pc, #252] ; (17460 ) 17362: 4798 blx r3 lv_style_set_outline_opa(&styles->cb_bullet, LV_STATE_FOCUSED, LV_OPA_TRANSP); 17364: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 17366: 2200 movs r2, #0 17368: f44f 7113 mov.w r1, #588 ; 0x24c 1736c: 3050 adds r0, #80 ; 0x50 1736e: 4b3f ldr r3, [pc, #252] ; (1746c ) 17370: 4798 blx r3 lv_style_set_radius(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(4)); 17372: 6824 ldr r4, [r4, #0] 17374: 3450 adds r4, #80 ; 0x50 17376: 2000 movs r0, #0 17378: 4b3d ldr r3, [pc, #244] ; (17470 ) 1737a: 4798 blx r3 1737c: 3014 adds r0, #20 1737e: 0080 lsls r0, r0, #2 17380: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17384: f281 8259 bge.w 1883a 17388: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 1738a: 2101 movs r1, #1 1738c: 4620 mov r0, r4 1738e: 4b32 ldr r3, [pc, #200] ; (17458 ) 17390: 4798 blx r3 lv_style_set_pattern_image(&styles->cb_bullet, LV_STATE_CHECKED, LV_SYMBOL_OK); 17392: 4c32 ldr r4, [pc, #200] ; (1745c ) 17394: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_IMAGE, pattern_image, const void *, _ptr, scalar) 17396: 4a37 ldr r2, [pc, #220] ; (17474 ) 17398: f44f 71b7 mov.w r1, #366 ; 0x16e 1739c: 3050 adds r0, #80 ; 0x50 1739e: 4d36 ldr r5, [pc, #216] ; (17478 ) 173a0: 47a8 blx r5 lv_style_set_pattern_recolor(&styles->cb_bullet, LV_STATE_CHECKED, LV_COLOR_WHITE); 173a2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 173a4: 4b2f ldr r3, [pc, #188] ; (17464 ) 173a6: 881a ldrh r2, [r3, #0] 173a8: f240 1169 movw r1, #361 ; 0x169 173ac: 3050 adds r0, #80 ; 0x50 173ae: 4b2e ldr r3, [pc, #184] ; (17468 ) 173b0: 4798 blx r3 lv_style_set_text_font(&styles->cb_bullet, LV_STATE_CHECKED, theme.font_small); 173b2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 173b4: 6922 ldr r2, [r4, #16] 173b6: f248 118e movw r1, #33166 ; 0x818e 173ba: 3050 adds r0, #80 ; 0x50 173bc: 47a8 blx r5 lv_style_set_pad_left(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 173be: 6824 ldr r4, [r4, #0] 173c0: 3450 adds r4, #80 ; 0x50 173c2: 2000 movs r0, #0 173c4: 4b2a ldr r3, [pc, #168] ; (17470 ) 173c6: 4798 blx r3 173c8: eb00 0040 add.w r0, r0, r0, lsl #1 173cc: 3050 adds r0, #80 ; 0x50 173ce: f5b0 7fa0 cmp.w r0, #320 ; 0x140 173d2: f281 8240 bge.w 18856 173d6: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 173d8: 2112 movs r1, #18 173da: 4620 mov r0, r4 173dc: 4b1e ldr r3, [pc, #120] ; (17458 ) 173de: 4798 blx r3 lv_style_set_pad_right(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 173e0: 4b1e ldr r3, [pc, #120] ; (1745c ) 173e2: 681c ldr r4, [r3, #0] 173e4: 3450 adds r4, #80 ; 0x50 173e6: 2000 movs r0, #0 173e8: 4b21 ldr r3, [pc, #132] ; (17470 ) 173ea: 4798 blx r3 173ec: eb00 0040 add.w r0, r0, r0, lsl #1 173f0: 3050 adds r0, #80 ; 0x50 173f2: f5b0 7fa0 cmp.w r0, #320 ; 0x140 173f6: f281 823d bge.w 18874 173fa: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 173fc: 2113 movs r1, #19 173fe: 4620 mov r0, r4 17400: 4b15 ldr r3, [pc, #84] ; (17458 ) 17402: 4798 blx r3 lv_style_set_pad_top(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 17404: 4b15 ldr r3, [pc, #84] ; (1745c ) 17406: 681c ldr r4, [r3, #0] 17408: 3450 adds r4, #80 ; 0x50 1740a: 2000 movs r0, #0 1740c: 4b18 ldr r3, [pc, #96] ; (17470 ) 1740e: 4798 blx r3 17410: eb00 0040 add.w r0, r0, r0, lsl #1 17414: 3050 adds r0, #80 ; 0x50 17416: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1741a: f281 823a bge.w 18892 1741e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 17420: 2110 movs r1, #16 17422: 4620 mov r0, r4 17424: 4b0c ldr r3, [pc, #48] ; (17458 ) 17426: 4798 blx r3 lv_style_set_pad_bottom(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 17428: 4b0c ldr r3, [pc, #48] ; (1745c ) 1742a: 681c ldr r4, [r3, #0] 1742c: 3450 adds r4, #80 ; 0x50 1742e: 2000 movs r0, #0 17430: 4b0f ldr r3, [pc, #60] ; (17470 ) 17432: 4798 blx r3 17434: eb00 0040 add.w r0, r0, r0, lsl #1 17438: 3050 adds r0, #80 ; 0x50 1743a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1743e: f281 8237 bge.w 188b0 17442: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 17444: 2111 movs r1, #17 17446: 4620 mov r0, r4 17448: 4d03 ldr r5, [pc, #12] ; (17458 ) 1744a: 47a8 blx r5 style_init_reset(&styles->kb_bg); 1744c: 4c03 ldr r4, [pc, #12] ; (1745c ) 1744e: 6820 ldr r0, [r4, #0] 17450: 3068 adds r0, #104 ; 0x68 17452: 4b03 ldr r3, [pc, #12] ; (17460 ) 17454: 4798 blx r3 17456: e011 b.n 1747c 17458: 000068e1 .word 0x000068e1 1745c: 20006bd8 .word 0x20006bd8 17460: 00014a61 .word 0x00014a61 17464: 00029584 .word 0x00029584 17468: 00006a25 .word 0x00006a25 1746c: 00006b69 .word 0x00006b69 17470: 00010f3d .word 0x00010f3d 17474: 0002958c .word 0x0002958c 17478: 00006c99 .word 0x00006c99 lv_style_set_radius(&styles->kb_bg, LV_STATE_DEFAULT, 0); 1747c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 1747e: 2200 movs r2, #0 17480: 2101 movs r1, #1 17482: 3068 adds r0, #104 ; 0x68 17484: 47a8 blx r5 lv_style_set_border_width(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 17486: 6824 ldr r4, [r4, #0] 17488: 3468 adds r4, #104 ; 0x68 1748a: 2000 movs r0, #0 1748c: 4bb5 ldr r3, [pc, #724] ; (17764 ) 1748e: 4798 blx r3 17490: 3014 adds r0, #20 17492: 0080 lsls r0, r0, #2 17494: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17498: f281 8219 bge.w 188ce 1749c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 1749e: 2130 movs r1, #48 ; 0x30 174a0: 4620 mov r0, r4 174a2: 4db1 ldr r5, [pc, #708] ; (17768 ) 174a4: 47a8 blx r5 lv_style_set_border_side(&styles->kb_bg, LV_STATE_DEFAULT, LV_BORDER_SIDE_TOP); 174a6: 4cb1 ldr r4, [pc, #708] ; (1776c ) 174a8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 174aa: 2202 movs r2, #2 174ac: 2131 movs r1, #49 ; 0x31 174ae: 3068 adds r0, #104 ; 0x68 174b0: 47a8 blx r5 lv_style_set_border_color(&styles->kb_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT : LV_COLOR_BLACK); 174b2: 6820 ldr r0, [r4, #0] 174b4: 3068 adds r0, #104 ; 0x68 174b6: 6a23 ldr r3, [r4, #32] 174b8: f013 0f02 tst.w r3, #2 174bc: f041 8215 bne.w 188ea 174c0: 2300 movs r3, #0 174c2: 4619 mov r1, r3 174c4: 461c mov r4, r3 174c6: f04f 0200 mov.w r2, #0 174ca: f364 0204 bfi r2, r4, #0, #5 174ce: f361 124a bfi r2, r1, #5, #6 174d2: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 174d6: 2139 movs r1, #57 ; 0x39 174d8: 4da5 ldr r5, [pc, #660] ; (17770 ) 174da: 47a8 blx r5 lv_style_set_border_color(&styles->kb_bg, LV_STATE_EDITED, theme.color_secondary); 174dc: 4ca3 ldr r4, [pc, #652] ; (1776c ) 174de: 6820 ldr r0, [r4, #0] 174e0: 89e2 ldrh r2, [r4, #14] 174e2: f240 4139 movw r1, #1081 ; 0x439 174e6: 3068 adds r0, #104 ; 0x68 174e8: 47a8 blx r5 lv_style_set_pad_left(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 174ea: 6824 ldr r4, [r4, #0] 174ec: 3468 adds r4, #104 ; 0x68 174ee: 2000 movs r0, #0 174f0: 4b9c ldr r3, [pc, #624] ; (17764 ) 174f2: 4798 blx r3 174f4: eb00 0080 add.w r0, r0, r0, lsl #2 174f8: 3050 adds r0, #80 ; 0x50 174fa: f5b0 7fa0 cmp.w r0, #320 ; 0x140 174fe: f281 81f9 bge.w 188f4 17502: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 17504: 2112 movs r1, #18 17506: 4620 mov r0, r4 17508: 4b97 ldr r3, [pc, #604] ; (17768 ) 1750a: 4798 blx r3 lv_style_set_pad_right(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 1750c: 4b97 ldr r3, [pc, #604] ; (1776c ) 1750e: 681c ldr r4, [r3, #0] 17510: 3468 adds r4, #104 ; 0x68 17512: 2000 movs r0, #0 17514: 4b93 ldr r3, [pc, #588] ; (17764 ) 17516: 4798 blx r3 17518: eb00 0080 add.w r0, r0, r0, lsl #2 1751c: 3050 adds r0, #80 ; 0x50 1751e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17522: f281 81f6 bge.w 18912 17526: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 17528: 2113 movs r1, #19 1752a: 4620 mov r0, r4 1752c: 4b8e ldr r3, [pc, #568] ; (17768 ) 1752e: 4798 blx r3 lv_style_set_pad_top(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 17530: 4b8e ldr r3, [pc, #568] ; (1776c ) 17532: 681c ldr r4, [r3, #0] 17534: 3468 adds r4, #104 ; 0x68 17536: 2000 movs r0, #0 17538: 4b8a ldr r3, [pc, #552] ; (17764 ) 1753a: 4798 blx r3 1753c: eb00 0080 add.w r0, r0, r0, lsl #2 17540: 3050 adds r0, #80 ; 0x50 17542: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17546: f281 81f3 bge.w 18930 1754a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1754c: 2110 movs r1, #16 1754e: 4620 mov r0, r4 17550: 4b85 ldr r3, [pc, #532] ; (17768 ) 17552: 4798 blx r3 lv_style_set_pad_bottom(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 17554: 4b85 ldr r3, [pc, #532] ; (1776c ) 17556: 681c ldr r4, [r3, #0] 17558: 3468 adds r4, #104 ; 0x68 1755a: 2000 movs r0, #0 1755c: 4b81 ldr r3, [pc, #516] ; (17764 ) 1755e: 4798 blx r3 17560: eb00 0080 add.w r0, r0, r0, lsl #2 17564: 3050 adds r0, #80 ; 0x50 17566: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1756a: f281 81f0 bge.w 1894e 1756e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 17570: 2111 movs r1, #17 17572: 4620 mov r0, r4 17574: 4b7c ldr r3, [pc, #496] ; (17768 ) 17576: 4798 blx r3 lv_style_set_pad_inner(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 17578: 4b7c ldr r3, [pc, #496] ; (1776c ) 1757a: 681c ldr r4, [r3, #0] 1757c: 3468 adds r4, #104 ; 0x68 1757e: 2000 movs r0, #0 17580: 4b78 ldr r3, [pc, #480] ; (17764 ) 17582: 4798 blx r3 17584: eb00 0040 add.w r0, r0, r0, lsl #1 17588: 3050 adds r0, #80 ; 0x50 1758a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1758e: f281 81ed bge.w 1896c 17592: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 17594: 2114 movs r1, #20 17596: 4620 mov r0, r4 17598: 4b73 ldr r3, [pc, #460] ; (17768 ) 1759a: 4798 blx r3 style_init_reset(&styles->mbox_bg); 1759c: 4c73 ldr r4, [pc, #460] ; (1776c ) 1759e: 6820 ldr r0, [r4, #0] 175a0: 307c adds r0, #124 ; 0x7c 175a2: 4b74 ldr r3, [pc, #464] ; (17774 ) 175a4: 4798 blx r3 lv_style_set_shadow_width(&styles->mbox_bg, LV_STATE_DEFAULT, LV_DPX(50)); 175a6: 6824 ldr r4, [r4, #0] 175a8: 347c adds r4, #124 ; 0x7c 175aa: 2000 movs r0, #0 175ac: 4b6d ldr r3, [pc, #436] ; (17764 ) 175ae: 4798 blx r3 175b0: 2332 movs r3, #50 ; 0x32 175b2: fb03 f000 mul.w r0, r3, r0 175b6: 3050 adds r0, #80 ; 0x50 175b8: f5b0 7fa0 cmp.w r0, #320 ; 0x140 175bc: f281 81e5 bge.w 1898a 175c0: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 175c2: 2150 movs r1, #80 ; 0x50 175c4: 4620 mov r0, r4 175c6: 4b68 ldr r3, [pc, #416] ; (17768 ) 175c8: 4798 blx r3 lv_style_set_shadow_color(&styles->mbox_bg, LV_STATE_DEFAULT, IS_LIGHT ? LV_COLOR_SILVER : lv_color_hex3(0x999)); 175ca: 4b68 ldr r3, [pc, #416] ; (1776c ) 175cc: 6818 ldr r0, [r3, #0] 175ce: 6a1b ldr r3, [r3, #32] 175d0: f013 0302 ands.w r3, r3, #2 175d4: bf0c ite eq 175d6: 2126 moveq r1, #38 ; 0x26 175d8: 2130 movne r1, #48 ; 0x30 175da: 2b00 cmp r3, #0 175dc: bf0c ite eq 175de: 2313 moveq r3, #19 175e0: 2318 movne r3, #24 175e2: f04f 0200 mov.w r2, #0 175e6: f363 0204 bfi r2, r3, #0, #5 175ea: f361 124a bfi r2, r1, #5, #6 175ee: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar) 175f2: 2159 movs r1, #89 ; 0x59 175f4: 307c adds r0, #124 ; 0x7c 175f6: 4b5e ldr r3, [pc, #376] ; (17770 ) 175f8: 4798 blx r3 style_init_reset(&styles->sb); 175fa: 4c5c ldr r4, [pc, #368] ; (1776c ) 175fc: 6820 ldr r0, [r4, #0] 175fe: 3080 adds r0, #128 ; 0x80 17600: 4b5c ldr r3, [pc, #368] ; (17774 ) 17602: 4798 blx r3 lv_style_set_bg_opa(&styles->sb, LV_STATE_DEFAULT, LV_OPA_COVER); 17604: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 17606: 22ff movs r2, #255 ; 0xff 17608: 212c movs r1, #44 ; 0x2c 1760a: 3080 adds r0, #128 ; 0x80 1760c: 4b5a ldr r3, [pc, #360] ; (17778 ) 1760e: 4798 blx r3 lv_style_set_bg_color(&styles->sb, LV_STATE_DEFAULT, (IS_LIGHT ? lv_color_hex(0xcccfd1) : lv_color_hex(0x777f85))); 17610: 6820 ldr r0, [r4, #0] 17612: 6a23 ldr r3, [r4, #32] 17614: f013 0302 ands.w r3, r3, #2 17618: bf14 ite ne 1761a: 2119 movne r1, #25 1761c: 210e moveq r1, #14 1761e: 2b00 cmp r3, #0 17620: bf15 itete ne 17622: 2433 movne r4, #51 ; 0x33 17624: 241f moveq r4, #31 17626: 231a movne r3, #26 17628: 2310 moveq r3, #16 1762a: f04f 0200 mov.w r2, #0 1762e: f363 0204 bfi r2, r3, #0, #5 17632: f364 124a bfi r2, r4, #5, #6 17636: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 1763a: 2129 movs r1, #41 ; 0x29 1763c: 3080 adds r0, #128 ; 0x80 1763e: 4b4c ldr r3, [pc, #304] ; (17770 ) 17640: 4798 blx r3 lv_style_set_radius(&styles->sb, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 17642: 4c4a ldr r4, [pc, #296] ; (1776c ) 17644: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 17646: f647 72ff movw r2, #32767 ; 0x7fff 1764a: 2101 movs r1, #1 1764c: 3080 adds r0, #128 ; 0x80 1764e: 4b46 ldr r3, [pc, #280] ; (17768 ) 17650: 4798 blx r3 lv_style_set_size(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 17652: 6824 ldr r4, [r4, #0] 17654: 3480 adds r4, #128 ; 0x80 17656: 2000 movs r0, #0 17658: 4b42 ldr r3, [pc, #264] ; (17764 ) 1765a: 4798 blx r3 1765c: ebc0 00c0 rsb r0, r0, r0, lsl #3 17660: 3050 adds r0, #80 ; 0x50 17662: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17666: f281 81a0 bge.w 189aa 1766a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 1766c: 2103 movs r1, #3 1766e: 4620 mov r0, r4 17670: 4b3d ldr r3, [pc, #244] ; (17768 ) 17672: 4798 blx r3 lv_style_set_pad_right(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 17674: 4b3d ldr r3, [pc, #244] ; (1776c ) 17676: 681c ldr r4, [r3, #0] 17678: 3480 adds r4, #128 ; 0x80 1767a: 2000 movs r0, #0 1767c: 4b39 ldr r3, [pc, #228] ; (17764 ) 1767e: 4798 blx r3 17680: ebc0 00c0 rsb r0, r0, r0, lsl #3 17684: 3050 adds r0, #80 ; 0x50 17686: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1768a: f281 819d bge.w 189c8 1768e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 17690: 2113 movs r1, #19 17692: 4620 mov r0, r4 17694: 4b34 ldr r3, [pc, #208] ; (17768 ) 17696: 4798 blx r3 lv_style_set_pad_bottom(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 17698: 4b34 ldr r3, [pc, #208] ; (1776c ) 1769a: 681c ldr r4, [r3, #0] 1769c: 3480 adds r4, #128 ; 0x80 1769e: 2000 movs r0, #0 176a0: 4b30 ldr r3, [pc, #192] ; (17764 ) 176a2: 4798 blx r3 176a4: ebc0 00c0 rsb r0, r0, r0, lsl #3 176a8: 3050 adds r0, #80 ; 0x50 176aa: f5b0 7fa0 cmp.w r0, #320 ; 0x140 176ae: f281 819a bge.w 189e6 176b2: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 176b4: 2111 movs r1, #17 176b6: 4620 mov r0, r4 176b8: 4b2b ldr r3, [pc, #172] ; (17768 ) 176ba: 4798 blx r3 style_init_reset(&styles->edge_flash); 176bc: 4c2b ldr r4, [pc, #172] ; (1776c ) 176be: 6820 ldr r0, [r4, #0] 176c0: 3084 adds r0, #132 ; 0x84 176c2: 4d2c ldr r5, [pc, #176] ; (17774 ) 176c4: 47a8 blx r5 lv_style_set_bg_opa(&styles->edge_flash, LV_STATE_DEFAULT, LV_OPA_COVER); 176c6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 176c8: 22ff movs r2, #255 ; 0xff 176ca: 212c movs r1, #44 ; 0x2c 176cc: 3084 adds r0, #132 ; 0x84 176ce: 4b2a ldr r3, [pc, #168] ; (17778 ) 176d0: 4798 blx r3 lv_style_set_bg_color(&styles->edge_flash, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 176d2: 6820 ldr r0, [r4, #0] 176d4: 2311 movs r3, #17 176d6: f04f 0200 mov.w r2, #0 176da: f363 0204 bfi r2, r3, #0, #5 176de: 2122 movs r1, #34 ; 0x22 176e0: f361 124a bfi r2, r1, #5, #6 176e4: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 176e8: 2129 movs r1, #41 ; 0x29 176ea: 3084 adds r0, #132 ; 0x84 176ec: 4b20 ldr r3, [pc, #128] ; (17770 ) 176ee: 4798 blx r3 style_init_reset(&styles->ta_cursor); 176f0: 6820 ldr r0, [r4, #0] 176f2: 30b4 adds r0, #180 ; 0xb4 176f4: 47a8 blx r5 lv_style_set_border_color(&styles->ta_cursor, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 176f6: 6820 ldr r0, [r4, #0] 176f8: 6a23 ldr r3, [r4, #32] 176fa: f013 0302 ands.w r3, r3, #2 176fe: bf14 ite ne 17700: 2106 movne r1, #6 17702: 2114 moveq r1, #20 17704: 2b00 cmp r3, #0 17706: bf15 itete ne 17708: 2410 movne r4, #16 1770a: 242a moveq r4, #42 ; 0x2a 1770c: 2309 movne r3, #9 1770e: 2315 moveq r3, #21 17710: f04f 0200 mov.w r2, #0 17714: f363 0204 bfi r2, r3, #0, #5 17718: f364 124a bfi r2, r4, #5, #6 1771c: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 17720: 2139 movs r1, #57 ; 0x39 17722: 30b4 adds r0, #180 ; 0xb4 17724: 4b12 ldr r3, [pc, #72] ; (17770 ) 17726: 4798 blx r3 lv_style_set_border_width(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(2)); 17728: 4b10 ldr r3, [pc, #64] ; (1776c ) 1772a: 681c ldr r4, [r3, #0] 1772c: 34b4 adds r4, #180 ; 0xb4 1772e: 2000 movs r0, #0 17730: 4b0c ldr r3, [pc, #48] ; (17764 ) 17732: 4798 blx r3 17734: 3028 adds r0, #40 ; 0x28 17736: 0040 lsls r0, r0, #1 17738: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1773c: f281 8162 bge.w 18a04 17740: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 17742: 2130 movs r1, #48 ; 0x30 17744: 4620 mov r0, r4 17746: 4b08 ldr r3, [pc, #32] ; (17768 ) 17748: 4798 blx r3 lv_style_set_pad_left(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(1)); 1774a: 4b08 ldr r3, [pc, #32] ; (1776c ) 1774c: 681c ldr r4, [r3, #0] 1774e: 34b4 adds r4, #180 ; 0xb4 17750: 2000 movs r0, #0 17752: 4b04 ldr r3, [pc, #16] ; (17764 ) 17754: 4798 blx r3 17756: 3050 adds r0, #80 ; 0x50 17758: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1775c: f281 8164 bge.w 18a28 17760: 2201 movs r2, #1 17762: e00b b.n 1777c 17764: 00010f3d .word 0x00010f3d 17768: 000068e1 .word 0x000068e1 1776c: 20006bd8 .word 0x20006bd8 17770: 00006a25 .word 0x00006a25 17774: 00014a61 .word 0x00014a61 17778: 00006b69 .word 0x00006b69 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1777c: 2112 movs r1, #18 1777e: 4620 mov r0, r4 17780: 4dba ldr r5, [pc, #744] ; (17a6c ) 17782: 47a8 blx r5 lv_style_set_border_side(&styles->ta_cursor, LV_STATE_DEFAULT, LV_BORDER_SIDE_LEFT); 17784: 4cba ldr r4, [pc, #744] ; (17a70 ) 17786: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 17788: 2204 movs r2, #4 1778a: 2131 movs r1, #49 ; 0x31 1778c: 30b4 adds r0, #180 ; 0xb4 1778e: 47a8 blx r5 style_init_reset(&styles->ta_placeholder); 17790: 6820 ldr r0, [r4, #0] 17792: 30b8 adds r0, #184 ; 0xb8 17794: 4bb7 ldr r3, [pc, #732] ; (17a74 ) 17796: 4798 blx r3 lv_style_set_text_color(&styles->ta_placeholder, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 17798: 6820 ldr r0, [r4, #0] 1779a: 30b8 adds r0, #184 ; 0xb8 1779c: 6a23 ldr r3, [r4, #32] 1779e: f013 0f02 tst.w r3, #2 177a2: f041 814e bne.w 18a42 177a6: 2314 movs r3, #20 177a8: 212b movs r1, #43 ; 0x2b 177aa: 2417 movs r4, #23 177ac: f04f 0200 mov.w r2, #0 177b0: f364 0204 bfi r2, r4, #0, #5 177b4: f361 124a bfi r2, r1, #5, #6 177b8: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 177bc: f248 0189 movw r1, #32905 ; 0x8089 177c0: 4dad ldr r5, [pc, #692] ; (17a78 ) 177c2: 47a8 blx r5 style_init_reset(&styles->spinbox_cursor); 177c4: 4caa ldr r4, [pc, #680] ; (17a70 ) 177c6: 6820 ldr r0, [r4, #0] 177c8: 3098 adds r0, #152 ; 0x98 177ca: 4baa ldr r3, [pc, #680] ; (17a74 ) 177cc: 4798 blx r3 lv_style_set_bg_opa(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_OPA_COVER); 177ce: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 177d0: 22ff movs r2, #255 ; 0xff 177d2: 212c movs r1, #44 ; 0x2c 177d4: 3098 adds r0, #152 ; 0x98 177d6: 4ba9 ldr r3, [pc, #676] ; (17a7c ) 177d8: 4798 blx r3 lv_style_set_bg_color(&styles->spinbox_cursor, LV_STATE_DEFAULT, theme.color_primary); 177da: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 177dc: 89a2 ldrh r2, [r4, #12] 177de: 2129 movs r1, #41 ; 0x29 177e0: 3098 adds r0, #152 ; 0x98 177e2: 47a8 blx r5 lv_style_set_text_color(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_COLOR_WHITE); 177e4: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 177e6: 4ba6 ldr r3, [pc, #664] ; (17a80 ) 177e8: 881a ldrh r2, [r3, #0] 177ea: f248 0189 movw r1, #32905 ; 0x8089 177ee: 3098 adds r0, #152 ; 0x98 177f0: 47a8 blx r5 lv_style_set_pad_top(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 177f2: 6824 ldr r4, [r4, #0] 177f4: 3498 adds r4, #152 ; 0x98 177f6: 2000 movs r0, #0 177f8: 4ba2 ldr r3, [pc, #648] ; (17a84 ) 177fa: 4798 blx r3 177fc: 2364 movs r3, #100 ; 0x64 177fe: fb03 f000 mul.w r0, r3, r0 17802: 3050 adds r0, #80 ; 0x50 17804: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17808: f281 8120 bge.w 18a4c 1780c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1780e: 2110 movs r1, #16 17810: 4620 mov r0, r4 17812: 4b96 ldr r3, [pc, #600] ; (17a6c ) 17814: 4798 blx r3 lv_style_set_pad_bottom(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 17816: 4b96 ldr r3, [pc, #600] ; (17a70 ) 17818: 681c ldr r4, [r3, #0] 1781a: 3498 adds r4, #152 ; 0x98 1781c: 2000 movs r0, #0 1781e: 4b99 ldr r3, [pc, #612] ; (17a84 ) 17820: 4798 blx r3 17822: 2364 movs r3, #100 ; 0x64 17824: fb03 f000 mul.w r0, r3, r0 17828: 3050 adds r0, #80 ; 0x50 1782a: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1782e: f281 811d bge.w 18a6c 17832: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 17834: 2111 movs r1, #17 17836: 4620 mov r0, r4 17838: 4d8c ldr r5, [pc, #560] ; (17a6c ) 1783a: 47a8 blx r5 style_init_reset(&styles->list_bg); 1783c: 4c8c ldr r4, [pc, #560] ; (17a70 ) 1783e: 6820 ldr r0, [r4, #0] 17840: 3074 adds r0, #116 ; 0x74 17842: 4e8c ldr r6, [pc, #560] ; (17a74 ) 17844: 47b0 blx r6 lv_style_set_clip_corner(&styles->list_bg, LV_STATE_DEFAULT, true); 17846: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 17848: 2201 movs r2, #1 1784a: 2102 movs r1, #2 1784c: 3074 adds r0, #116 ; 0x74 1784e: 47a8 blx r5 lv_style_set_pad_left(&styles->list_bg, LV_STATE_DEFAULT, 0); 17850: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 17852: 2200 movs r2, #0 17854: 2112 movs r1, #18 17856: 3074 adds r0, #116 ; 0x74 17858: 47a8 blx r5 lv_style_set_pad_right(&styles->list_bg, LV_STATE_DEFAULT, 0); 1785a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 1785c: 2200 movs r2, #0 1785e: 2113 movs r1, #19 17860: 3074 adds r0, #116 ; 0x74 17862: 47a8 blx r5 lv_style_set_pad_top(&styles->list_bg, LV_STATE_DEFAULT, 0); 17864: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 17866: 2200 movs r2, #0 17868: 2110 movs r1, #16 1786a: 3074 adds r0, #116 ; 0x74 1786c: 47a8 blx r5 lv_style_set_pad_bottom(&styles->list_bg, LV_STATE_DEFAULT, 0); 1786e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 17870: 2200 movs r2, #0 17872: 2111 movs r1, #17 17874: 3074 adds r0, #116 ; 0x74 17876: 47a8 blx r5 lv_style_set_pad_inner(&styles->list_bg, LV_STATE_DEFAULT, 0); 17878: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 1787a: 2200 movs r2, #0 1787c: 2114 movs r1, #20 1787e: 3074 adds r0, #116 ; 0x74 17880: 47a8 blx r5 style_init_reset(&styles->list_btn); 17882: 6820 ldr r0, [r4, #0] 17884: 3078 adds r0, #120 ; 0x78 17886: 47b0 blx r6 lv_style_set_bg_opa(&styles->list_btn, LV_STATE_DEFAULT, LV_OPA_COVER); 17888: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 1788a: 22ff movs r2, #255 ; 0xff 1788c: 212c movs r1, #44 ; 0x2c 1788e: 3078 adds r0, #120 ; 0x78 17890: 4b7a ldr r3, [pc, #488] ; (17a7c ) 17892: 4798 blx r3 lv_style_set_bg_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG); 17894: 6820 ldr r0, [r4, #0] 17896: 3078 adds r0, #120 ; 0x78 17898: 6a23 ldr r3, [r4, #32] 1789a: f013 0f02 tst.w r3, #2 1789e: f041 80f5 bne.w 18a8c 178a2: 230b movs r3, #11 178a4: 2118 movs r1, #24 178a6: 240e movs r4, #14 178a8: f04f 0200 mov.w r2, #0 178ac: f364 0204 bfi r2, r4, #0, #5 178b0: f361 124a bfi r2, r1, #5, #6 178b4: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 178b8: 2129 movs r1, #41 ; 0x29 178ba: 4b6f ldr r3, [pc, #444] ; (17a78 ) 178bc: 4798 blx r3 lv_style_set_bg_color(&styles->list_btn, LV_STATE_PRESSED, COLOR_BG_PR); 178be: 4b6c ldr r3, [pc, #432] ; (17a70 ) 178c0: 6818 ldr r0, [r3, #0] 178c2: 3078 adds r0, #120 ; 0x78 178c4: 6a1b ldr r3, [r3, #32] 178c6: f013 0f02 tst.w r3, #2 178ca: f041 80e4 bne.w 18a96 178ce: 2309 movs r3, #9 178d0: 2113 movs r1, #19 178d2: 240a movs r4, #10 178d4: f04f 0200 mov.w r2, #0 178d8: f364 0204 bfi r2, r4, #0, #5 178dc: f361 124a bfi r2, r1, #5, #6 178e0: f363 22cf bfi r2, r3, #11, #5 178e4: f241 0129 movw r1, #4137 ; 0x1029 178e8: 4b63 ldr r3, [pc, #396] ; (17a78 ) 178ea: 4798 blx r3 lv_style_set_bg_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_DIS); 178ec: 4b60 ldr r3, [pc, #384] ; (17a70 ) 178ee: 6818 ldr r0, [r3, #0] 178f0: 3078 adds r0, #120 ; 0x78 178f2: 6a1b ldr r3, [r3, #32] 178f4: f013 0f02 tst.w r3, #2 178f8: f041 80d2 bne.w 18aa0 178fc: 230b movs r3, #11 178fe: 2118 movs r1, #24 17900: 240e movs r4, #14 17902: f04f 0200 mov.w r2, #0 17906: f364 0204 bfi r2, r4, #0, #5 1790a: f361 124a bfi r2, r1, #5, #6 1790e: f363 22cf bfi r2, r3, #11, #5 17912: f242 0129 movw r1, #8233 ; 0x2029 17916: 4d58 ldr r5, [pc, #352] ; (17a78 ) 17918: 47a8 blx r5 lv_style_set_bg_color(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_CHK); 1791a: 4c55 ldr r4, [pc, #340] ; (17a70 ) 1791c: 6820 ldr r0, [r4, #0] 1791e: 89a2 ldrh r2, [r4, #12] 17920: f240 1129 movw r1, #297 ; 0x129 17924: 3078 adds r0, #120 ; 0x78 17926: 47a8 blx r5 lv_style_set_bg_color(&styles->list_btn, LV_STATE_CHECKED | LV_STATE_PRESSED, COLOR_BG_PR_CHK); 17928: 6826 ldr r6, [r4, #0] 1792a: 3678 adds r6, #120 ; 0x78 1792c: 2133 movs r1, #51 ; 0x33 1792e: 89a0 ldrh r0, [r4, #12] 17930: 4b55 ldr r3, [pc, #340] ; (17a88 ) 17932: 4798 blx r3 17934: 4602 mov r2, r0 17936: f241 1129 movw r1, #4393 ; 0x1129 1793a: 4630 mov r0, r6 1793c: 47a8 blx r5 lv_style_set_text_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 1793e: 6820 ldr r0, [r4, #0] 17940: 3078 adds r0, #120 ; 0x78 17942: 6a23 ldr r3, [r4, #32] 17944: f013 0f02 tst.w r3, #2 17948: f041 80af bne.w 18aaa 1794c: 231f movs r3, #31 1794e: 213f movs r1, #63 ; 0x3f 17950: 461c mov r4, r3 17952: f04f 0200 mov.w r2, #0 17956: f364 0204 bfi r2, r4, #0, #5 1795a: f361 124a bfi r2, r1, #5, #6 1795e: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17962: f248 0189 movw r1, #32905 ; 0x8089 17966: 4d44 ldr r5, [pc, #272] ; (17a78 ) 17968: 47a8 blx r5 lv_style_set_text_color(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 1796a: 4c41 ldr r4, [pc, #260] ; (17a70 ) 1796c: 6820 ldr r0, [r4, #0] 1796e: f04f 32ff mov.w r2, #4294967295 17972: f248 1189 movw r1, #33161 ; 0x8189 17976: 3078 adds r0, #120 ; 0x78 17978: 47a8 blx r5 lv_style_set_text_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 1797a: 6820 ldr r0, [r4, #0] 1797c: 6a23 ldr r3, [r4, #32] 1797e: f013 0302 ands.w r3, r3, #2 17982: bf14 ite ne 17984: 212a movne r1, #42 ; 0x2a 17986: 2126 moveq r1, #38 ; 0x26 17988: 2b00 cmp r3, #0 1798a: bf14 ite ne 1798c: 2315 movne r3, #21 1798e: 2313 moveq r3, #19 17990: f04f 0200 mov.w r2, #0 17994: f363 0204 bfi r2, r3, #0, #5 17998: f361 124a bfi r2, r1, #5, #6 1799c: f363 22cf bfi r2, r3, #11, #5 179a0: f24a 0189 movw r1, #41097 ; 0xa089 179a4: 3078 adds r0, #120 ; 0x78 179a6: 47a8 blx r5 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 179a8: 6820 ldr r0, [r4, #0] 179aa: 3078 adds r0, #120 ; 0x78 179ac: 6a23 ldr r3, [r4, #32] 179ae: f013 0f02 tst.w r3, #2 179b2: f041 807f bne.w 18ab4 179b6: 231f movs r3, #31 179b8: 213f movs r1, #63 ; 0x3f 179ba: 461c mov r4, r3 179bc: f04f 0200 mov.w r2, #0 179c0: f364 0204 bfi r2, r4, #0, #5 179c4: f361 124a bfi r2, r1, #5, #6 179c8: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 179cc: f248 01a9 movw r1, #32937 ; 0x80a9 179d0: 4d29 ldr r5, [pc, #164] ; (17a78 ) 179d2: 47a8 blx r5 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 179d4: 4c26 ldr r4, [pc, #152] ; (17a70 ) 179d6: 6820 ldr r0, [r4, #0] 179d8: f04f 32ff mov.w r2, #4294967295 179dc: f248 11a9 movw r1, #33193 ; 0x81a9 179e0: 3078 adds r0, #120 ; 0x78 179e2: 47a8 blx r5 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 179e4: 6820 ldr r0, [r4, #0] 179e6: 6a23 ldr r3, [r4, #32] 179e8: f013 0302 ands.w r3, r3, #2 179ec: bf14 ite ne 179ee: 212a movne r1, #42 ; 0x2a 179f0: 2126 moveq r1, #38 ; 0x26 179f2: 2b00 cmp r3, #0 179f4: bf14 ite ne 179f6: 2315 movne r3, #21 179f8: 2313 moveq r3, #19 179fa: f04f 0200 mov.w r2, #0 179fe: f363 0204 bfi r2, r3, #0, #5 17a02: f361 124a bfi r2, r1, #5, #6 17a06: f363 22cf bfi r2, r3, #11, #5 17a0a: f24a 01a9 movw r1, #41129 ; 0xa0a9 17a0e: 3078 adds r0, #120 ; 0x78 17a10: 47a8 blx r5 lv_style_set_border_side(&styles->list_btn, LV_STATE_DEFAULT, LV_BORDER_SIDE_BOTTOM); 17a12: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 17a14: 2201 movs r2, #1 17a16: 2131 movs r1, #49 ; 0x31 17a18: 3078 adds r0, #120 ; 0x78 17a1a: 4b14 ldr r3, [pc, #80] ; (17a6c ) 17a1c: 4798 blx r3 lv_style_set_border_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_BORDER); 17a1e: 6820 ldr r0, [r4, #0] 17a20: 6a23 ldr r3, [r4, #32] 17a22: f013 0302 ands.w r3, r3, #2 17a26: bf14 ite ne 17a28: 211a movne r1, #26 17a2a: 2110 moveq r1, #16 17a2c: 2b00 cmp r3, #0 17a2e: bf15 itete ne 17a30: 2437 movne r4, #55 ; 0x37 17a32: 2422 moveq r4, #34 ; 0x22 17a34: 231c movne r3, #28 17a36: 2312 moveq r3, #18 17a38: f04f 0200 mov.w r2, #0 17a3c: f363 0204 bfi r2, r3, #0, #5 17a40: f364 124a bfi r2, r4, #5, #6 17a44: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 17a48: 2139 movs r1, #57 ; 0x39 17a4a: 3078 adds r0, #120 ; 0x78 17a4c: 47a8 blx r5 lv_style_set_border_color(&styles->list_btn, LV_STATE_FOCUSED, theme.color_primary); 17a4e: 4c08 ldr r4, [pc, #32] ; (17a70 ) 17a50: 6820 ldr r0, [r4, #0] 17a52: 89a2 ldrh r2, [r4, #12] 17a54: f240 2139 movw r1, #569 ; 0x239 17a58: 3078 adds r0, #120 ; 0x78 17a5a: 47a8 blx r5 lv_style_set_border_width(&styles->list_btn, LV_STATE_DEFAULT, 1); 17a5c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 17a5e: 2201 movs r2, #1 17a60: 2130 movs r1, #48 ; 0x30 17a62: 3078 adds r0, #120 ; 0x78 17a64: 4b01 ldr r3, [pc, #4] ; (17a6c ) 17a66: 4798 blx r3 17a68: e010 b.n 17a8c 17a6a: bf00 nop 17a6c: 000068e1 .word 0x000068e1 17a70: 20006bd8 .word 0x20006bd8 17a74: 00014a61 .word 0x00014a61 17a78: 00006a25 .word 0x00006a25 17a7c: 00006b69 .word 0x00006b69 17a80: 00029584 .word 0x00029584 17a84: 00010f3d .word 0x00010f3d 17a88: 00011c03 .word 0x00011c03 lv_style_set_pad_left(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 17a8c: 6824 ldr r4, [r4, #0] 17a8e: 3478 adds r4, #120 ; 0x78 17a90: 2000 movs r0, #0 17a92: 4bba ldr r3, [pc, #744] ; (17d7c ) 17a94: 4798 blx r3 17a96: 2801 cmp r0, #1 17a98: f241 8011 bls.w 18abe 17a9c: 2000 movs r0, #0 17a9e: 4bb8 ldr r3, [pc, #736] ; (17d80 ) 17aa0: 4798 blx r3 17aa2: ebc0 1000 rsb r0, r0, r0, lsl #4 17aa6: 0040 lsls r0, r0, #1 17aa8: 3050 adds r0, #80 ; 0x50 17aaa: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17aae: f281 8021 bge.w 18af4 17ab2: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 17ab4: 2112 movs r1, #18 17ab6: 4620 mov r0, r4 17ab8: 4bb2 ldr r3, [pc, #712] ; (17d84 ) 17aba: 4798 blx r3 lv_style_set_pad_right(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 17abc: 4bb2 ldr r3, [pc, #712] ; (17d88 ) 17abe: 681c ldr r4, [r3, #0] 17ac0: 3478 adds r4, #120 ; 0x78 17ac2: 2000 movs r0, #0 17ac4: 4bad ldr r3, [pc, #692] ; (17d7c ) 17ac6: 4798 blx r3 17ac8: 2801 cmp r0, #1 17aca: f241 8023 bls.w 18b14 17ace: 2000 movs r0, #0 17ad0: 4bab ldr r3, [pc, #684] ; (17d80 ) 17ad2: 4798 blx r3 17ad4: ebc0 1000 rsb r0, r0, r0, lsl #4 17ad8: 0040 lsls r0, r0, #1 17ada: 3050 adds r0, #80 ; 0x50 17adc: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17ae0: f281 8033 bge.w 18b4a 17ae4: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 17ae6: 2113 movs r1, #19 17ae8: 4620 mov r0, r4 17aea: 4ba6 ldr r3, [pc, #664] ; (17d84 ) 17aec: 4798 blx r3 lv_style_set_pad_top(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 17aee: 4ba6 ldr r3, [pc, #664] ; (17d88 ) 17af0: 681c ldr r4, [r3, #0] 17af2: 3478 adds r4, #120 ; 0x78 17af4: 2000 movs r0, #0 17af6: 4ba1 ldr r3, [pc, #644] ; (17d7c ) 17af8: 4798 blx r3 17afa: 2801 cmp r0, #1 17afc: f241 8035 bls.w 18b6a 17b00: 2000 movs r0, #0 17b02: 4b9f ldr r3, [pc, #636] ; (17d80 ) 17b04: 4798 blx r3 17b06: ebc0 1000 rsb r0, r0, r0, lsl #4 17b0a: 0040 lsls r0, r0, #1 17b0c: 3050 adds r0, #80 ; 0x50 17b0e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17b12: f281 8045 bge.w 18ba0 17b16: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 17b18: 2110 movs r1, #16 17b1a: 4620 mov r0, r4 17b1c: 4b99 ldr r3, [pc, #612] ; (17d84 ) 17b1e: 4798 blx r3 lv_style_set_pad_bottom(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 17b20: 4b99 ldr r3, [pc, #612] ; (17d88 ) 17b22: 681c ldr r4, [r3, #0] 17b24: 3478 adds r4, #120 ; 0x78 17b26: 2000 movs r0, #0 17b28: 4b94 ldr r3, [pc, #592] ; (17d7c ) 17b2a: 4798 blx r3 17b2c: 2801 cmp r0, #1 17b2e: f241 8047 bls.w 18bc0 17b32: 2000 movs r0, #0 17b34: 4b92 ldr r3, [pc, #584] ; (17d80 ) 17b36: 4798 blx r3 17b38: ebc0 1000 rsb r0, r0, r0, lsl #4 17b3c: 0040 lsls r0, r0, #1 17b3e: 3050 adds r0, #80 ; 0x50 17b40: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17b44: f281 8057 bge.w 18bf6 17b48: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 17b4a: 2111 movs r1, #17 17b4c: 4620 mov r0, r4 17b4e: 4b8d ldr r3, [pc, #564] ; (17d84 ) 17b50: 4798 blx r3 lv_style_set_pad_inner(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 17b52: 4b8d ldr r3, [pc, #564] ; (17d88 ) 17b54: 681c ldr r4, [r3, #0] 17b56: 3478 adds r4, #120 ; 0x78 17b58: 2000 movs r0, #0 17b5a: 4b88 ldr r3, [pc, #544] ; (17d7c ) 17b5c: 4798 blx r3 17b5e: 2801 cmp r0, #1 17b60: f241 8059 bls.w 18c16 17b64: 2000 movs r0, #0 17b66: 4b86 ldr r3, [pc, #536] ; (17d80 ) 17b68: 4798 blx r3 17b6a: ebc0 1000 rsb r0, r0, r0, lsl #4 17b6e: 0040 lsls r0, r0, #1 17b70: 3050 adds r0, #80 ; 0x50 17b72: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17b76: f281 8069 bge.w 18c4c 17b7a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 17b7c: 2114 movs r1, #20 17b7e: 4620 mov r0, r4 17b80: 4b80 ldr r3, [pc, #512] ; (17d84 ) 17b82: 4798 blx r3 lv_style_set_transform_width(&styles->list_btn, LV_STATE_DEFAULT, - PAD_DEF); 17b84: 4b80 ldr r3, [pc, #512] ; (17d88 ) 17b86: 681c ldr r4, [r3, #0] 17b88: 3478 adds r4, #120 ; 0x78 17b8a: 2000 movs r0, #0 17b8c: 4b7b ldr r3, [pc, #492] ; (17d7c ) 17b8e: 4798 blx r3 17b90: 2801 cmp r0, #1 17b92: f241 806b bls.w 18c6c 17b96: 2000 movs r0, #0 17b98: 4b79 ldr r3, [pc, #484] ; (17d80 ) 17b9a: 4798 blx r3 17b9c: ebc0 1000 rsb r0, r0, r0, lsl #4 17ba0: 0040 lsls r0, r0, #1 17ba2: 3050 adds r0, #80 ; 0x50 17ba4: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17ba8: f281 807c bge.w 18ca4 17bac: f04f 32ff mov.w r2, #4294967295 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 17bb0: 2104 movs r1, #4 17bb2: 4620 mov r0, r4 17bb4: 4d73 ldr r5, [pc, #460] ; (17d84 ) 17bb6: 47a8 blx r5 lv_style_set_transform_width(&styles->list_btn, LV_STATE_PRESSED, 0); 17bb8: 4c73 ldr r4, [pc, #460] ; (17d88 ) 17bba: 6820 ldr r0, [r4, #0] 17bbc: 2200 movs r2, #0 17bbe: f241 0104 movw r1, #4100 ; 0x1004 17bc2: 3078 adds r0, #120 ; 0x78 17bc4: 47a8 blx r5 lv_style_set_transform_width(&styles->list_btn, LV_STATE_CHECKED, 0); 17bc6: 6820 ldr r0, [r4, #0] 17bc8: 2200 movs r2, #0 17bca: f44f 7182 mov.w r1, #260 ; 0x104 17bce: 3078 adds r0, #120 ; 0x78 17bd0: 47a8 blx r5 lv_style_set_transform_width(&styles->list_btn, LV_STATE_DISABLED, 0); 17bd2: 6820 ldr r0, [r4, #0] 17bd4: 2200 movs r2, #0 17bd6: f242 0104 movw r1, #8196 ; 0x2004 17bda: 3078 adds r0, #120 ; 0x78 17bdc: 47a8 blx r5 lv_style_set_transition_time(&styles->list_btn, LV_STATE_DEFAULT, TRANSITION_TIME); 17bde: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 17be0: 2296 movs r2, #150 ; 0x96 17be2: 21b0 movs r1, #176 ; 0xb0 17be4: 3078 adds r0, #120 ; 0x78 17be6: 47a8 blx r5 lv_style_set_transition_prop_6(&styles->list_btn, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); 17be8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 17bea: 2229 movs r2, #41 ; 0x29 17bec: 21b7 movs r1, #183 ; 0xb7 17bee: 3078 adds r0, #120 ; 0x78 17bf0: 47a8 blx r5 lv_style_set_transition_prop_5(&styles->list_btn, LV_STATE_DEFAULT, LV_STYLE_TRANSFORM_WIDTH); 17bf2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 17bf4: 2204 movs r2, #4 17bf6: 21b6 movs r1, #182 ; 0xb6 17bf8: 3078 adds r0, #120 ; 0x78 17bfa: 47a8 blx r5 style_init_reset(&styles->ddlist_page); 17bfc: 6820 ldr r0, [r4, #0] 17bfe: 3054 adds r0, #84 ; 0x54 17c00: 4b62 ldr r3, [pc, #392] ; (17d8c ) 17c02: 4798 blx r3 lv_style_set_text_line_space(&styles->ddlist_page, LV_STATE_DEFAULT, LV_DPX(20)); 17c04: 6824 ldr r4, [r4, #0] 17c06: 3454 adds r4, #84 ; 0x54 17c08: 2000 movs r0, #0 17c0a: 4b5d ldr r3, [pc, #372] ; (17d80 ) 17c0c: 4798 blx r3 17c0e: eb00 0080 add.w r0, r0, r0, lsl #2 17c12: 0080 lsls r0, r0, #2 17c14: 3050 adds r0, #80 ; 0x50 17c16: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17c1a: f281 8053 bge.w 18cc4 17c1e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 17c20: f248 0181 movw r1, #32897 ; 0x8081 17c24: 4620 mov r0, r4 17c26: 4d57 ldr r5, [pc, #348] ; (17d84 ) 17c28: 47a8 blx r5 lv_style_set_clip_corner(&styles->ddlist_page, LV_STATE_DEFAULT, true); 17c2a: 4c57 ldr r4, [pc, #348] ; (17d88 ) 17c2c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 17c2e: 2201 movs r2, #1 17c30: 2102 movs r1, #2 17c32: 3054 adds r0, #84 ; 0x54 17c34: 47a8 blx r5 style_init_reset(&styles->ddlist_sel); 17c36: 6820 ldr r0, [r4, #0] 17c38: 3058 adds r0, #88 ; 0x58 17c3a: 4b54 ldr r3, [pc, #336] ; (17d8c ) 17c3c: 4798 blx r3 lv_style_set_bg_opa(&styles->ddlist_sel, LV_STATE_DEFAULT, LV_OPA_COVER); 17c3e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 17c40: 22ff movs r2, #255 ; 0xff 17c42: 212c movs r1, #44 ; 0x2c 17c44: 3058 adds r0, #88 ; 0x58 17c46: 4b52 ldr r3, [pc, #328] ; (17d90 ) 17c48: 4798 blx r3 lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_DEFAULT, theme.color_primary); 17c4a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17c4c: 89a2 ldrh r2, [r4, #12] 17c4e: 2129 movs r1, #41 ; 0x29 17c50: 3058 adds r0, #88 ; 0x58 17c52: 4d50 ldr r5, [pc, #320] ; (17d94 ) 17c54: 47a8 blx r5 lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex3(0xfff) : lv_color_hex3(0xfff)); 17c56: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17c58: f04f 32ff mov.w r2, #4294967295 17c5c: f248 0189 movw r1, #32905 ; 0x8089 17c60: 3058 adds r0, #88 ; 0x58 17c62: 47a8 blx r5 lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_PR); 17c64: 6820 ldr r0, [r4, #0] 17c66: 3058 adds r0, #88 ; 0x58 17c68: 6a23 ldr r3, [r4, #32] 17c6a: f013 0f02 tst.w r3, #2 17c6e: f041 8039 bne.w 18ce4 17c72: 2309 movs r3, #9 17c74: 2113 movs r1, #19 17c76: 240a movs r4, #10 17c78: f04f 0200 mov.w r2, #0 17c7c: f364 0204 bfi r2, r4, #0, #5 17c80: f361 124a bfi r2, r1, #5, #6 17c84: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17c88: f241 0129 movw r1, #4137 ; 0x1029 17c8c: 4b41 ldr r3, [pc, #260] ; (17d94 ) 17c8e: 4798 blx r3 lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 17c90: 4b3d ldr r3, [pc, #244] ; (17d88 ) 17c92: 6818 ldr r0, [r3, #0] 17c94: 3058 adds r0, #88 ; 0x58 17c96: 6a1b ldr r3, [r3, #32] 17c98: f013 0f02 tst.w r3, #2 17c9c: f041 8027 bne.w 18cee 17ca0: 231f movs r3, #31 17ca2: 213f movs r1, #63 ; 0x3f 17ca4: 461c mov r4, r3 17ca6: f04f 0200 mov.w r2, #0 17caa: f364 0204 bfi r2, r4, #0, #5 17cae: f361 124a bfi r2, r1, #5, #6 17cb2: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17cb6: f249 0189 movw r1, #37001 ; 0x9089 17cba: 4b36 ldr r3, [pc, #216] ; (17d94 ) 17cbc: 4798 blx r3 style_init_reset(&styles->roller_bg); 17cbe: 4c32 ldr r4, [pc, #200] ; (17d88 ) 17cc0: 6820 ldr r0, [r4, #0] 17cc2: 3088 adds r0, #136 ; 0x88 17cc4: 4b31 ldr r3, [pc, #196] ; (17d8c ) 17cc6: 4798 blx r3 lv_style_set_text_line_space(&styles->roller_bg, LV_STATE_DEFAULT, LV_DPX(25)); 17cc8: 6824 ldr r4, [r4, #0] 17cca: 3488 adds r4, #136 ; 0x88 17ccc: 2000 movs r0, #0 17cce: 4b2c ldr r3, [pc, #176] ; (17d80 ) 17cd0: 4798 blx r3 17cd2: eb00 0080 add.w r0, r0, r0, lsl #2 17cd6: eb00 0080 add.w r0, r0, r0, lsl #2 17cda: 3050 adds r0, #80 ; 0x50 17cdc: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17ce0: f281 800a bge.w 18cf8 17ce4: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 17ce6: f248 0181 movw r1, #32897 ; 0x8081 17cea: 4620 mov r0, r4 17cec: 4b25 ldr r3, [pc, #148] ; (17d84 ) 17cee: 4798 blx r3 style_init_reset(&styles->roller_sel); 17cf0: 4c25 ldr r4, [pc, #148] ; (17d88 ) 17cf2: 6820 ldr r0, [r4, #0] 17cf4: 308c adds r0, #140 ; 0x8c 17cf6: 4e25 ldr r6, [pc, #148] ; (17d8c ) 17cf8: 47b0 blx r6 lv_style_set_bg_opa(&styles->roller_sel, LV_STATE_DEFAULT, LV_OPA_COVER); 17cfa: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 17cfc: 22ff movs r2, #255 ; 0xff 17cfe: 212c movs r1, #44 ; 0x2c 17d00: 308c adds r0, #140 ; 0x8c 17d02: 4d23 ldr r5, [pc, #140] ; (17d90 ) 17d04: 47a8 blx r5 lv_style_set_bg_color(&styles->roller_sel, LV_STATE_DEFAULT, theme.color_primary); 17d06: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17d08: 89a2 ldrh r2, [r4, #12] 17d0a: 2129 movs r1, #41 ; 0x29 17d0c: 308c adds r0, #140 ; 0x8c 17d0e: 4f21 ldr r7, [pc, #132] ; (17d94 ) 17d10: 47b8 blx r7 lv_style_set_text_color(&styles->roller_sel, LV_STATE_DEFAULT, LV_COLOR_WHITE); 17d12: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17d14: 4b20 ldr r3, [pc, #128] ; (17d98 ) 17d16: 881a ldrh r2, [r3, #0] 17d18: f248 0189 movw r1, #32905 ; 0x8089 17d1c: 308c adds r0, #140 ; 0x8c 17d1e: 47b8 blx r7 style_init_reset(&styles->tabview_btns_bg); 17d20: 6820 ldr r0, [r4, #0] 17d22: 30a8 adds r0, #168 ; 0xa8 17d24: 47b0 blx r6 lv_style_set_bg_opa(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_OPA_COVER); 17d26: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 17d28: 22ff movs r2, #255 ; 0xff 17d2a: 212c movs r1, #44 ; 0x2c 17d2c: 30a8 adds r0, #168 ; 0xa8 17d2e: 47a8 blx r5 lv_style_set_bg_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_BG); 17d30: 6820 ldr r0, [r4, #0] 17d32: 30a8 adds r0, #168 ; 0xa8 17d34: 6a23 ldr r3, [r4, #32] 17d36: f013 0f02 tst.w r3, #2 17d3a: f040 87ee bne.w 18d1a 17d3e: 230b movs r3, #11 17d40: 2118 movs r1, #24 17d42: 240e movs r4, #14 17d44: f04f 0200 mov.w r2, #0 17d48: f364 0204 bfi r2, r4, #0, #5 17d4c: f361 124a bfi r2, r1, #5, #6 17d50: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17d54: 2129 movs r1, #41 ; 0x29 17d56: 4b0f ldr r3, [pc, #60] ; (17d94 ) 17d58: 4798 blx r3 lv_style_set_border_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, 17d5a: 4b0b ldr r3, [pc, #44] ; (17d88 ) 17d5c: 6818 ldr r0, [r3, #0] IS_LIGHT ? lv_color_hex(0xe4eaf0) : lv_color_hex(0x3b3e42)); 17d5e: 6a1b ldr r3, [r3, #32] lv_style_set_border_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, 17d60: f013 0302 ands.w r3, r3, #2 17d64: bf14 ite ne 17d66: 211c movne r1, #28 17d68: 2107 moveq r1, #7 17d6a: 2b00 cmp r3, #0 17d6c: bf15 itete ne 17d6e: 243a movne r4, #58 ; 0x3a 17d70: 240f moveq r4, #15 17d72: 231e movne r3, #30 17d74: 2308 moveq r3, #8 17d76: f04f 0200 mov.w r2, #0 17d7a: e00f b.n 17d9c 17d7c: 00010f59 .word 0x00010f59 17d80: 00010f3d .word 0x00010f3d 17d84: 000068e1 .word 0x000068e1 17d88: 20006bd8 .word 0x20006bd8 17d8c: 00014a61 .word 0x00014a61 17d90: 00006b69 .word 0x00006b69 17d94: 00006a25 .word 0x00006a25 17d98: 00029584 .word 0x00029584 17d9c: f363 0204 bfi r2, r3, #0, #5 17da0: f364 124a bfi r2, r4, #5, #6 17da4: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 17da8: 2139 movs r1, #57 ; 0x39 17daa: 30a8 adds r0, #168 ; 0xa8 17dac: 4bb6 ldr r3, [pc, #728] ; (18088 ) 17dae: 4798 blx r3 lv_style_set_border_width(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(5)); 17db0: 4bb6 ldr r3, [pc, #728] ; (1808c ) 17db2: 681c ldr r4, [r3, #0] 17db4: 34a8 adds r4, #168 ; 0xa8 17db6: 2000 movs r0, #0 17db8: 4bb5 ldr r3, [pc, #724] ; (18090 ) 17dba: 4798 blx r3 17dbc: eb00 0080 add.w r0, r0, r0, lsl #2 17dc0: 3050 adds r0, #80 ; 0x50 17dc2: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17dc6: f280 87ad bge.w 18d24 17dca: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 17dcc: 2130 movs r1, #48 ; 0x30 17dce: 4620 mov r0, r4 17dd0: 4db0 ldr r5, [pc, #704] ; (18094 ) 17dd2: 47a8 blx r5 lv_style_set_border_side(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_BORDER_SIDE_BOTTOM); 17dd4: 4cad ldr r4, [pc, #692] ; (1808c ) 17dd6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 17dd8: 2201 movs r2, #1 17dda: 2131 movs r1, #49 ; 0x31 17ddc: 30a8 adds r0, #168 ; 0xa8 17dde: 47a8 blx r5 lv_style_set_text_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 17de0: 6820 ldr r0, [r4, #0] 17de2: 6a23 ldr r3, [r4, #32] 17de4: f013 0302 ands.w r3, r3, #2 17de8: bf14 ite ne 17dea: 2107 movne r1, #7 17dec: 211c moveq r1, #28 17dee: 2b00 cmp r3, #0 17df0: bf15 itete ne 17df2: 240f movne r4, #15 17df4: 243a moveq r4, #58 ; 0x3a 17df6: 2308 movne r3, #8 17df8: 231d moveq r3, #29 17dfa: f04f 0200 mov.w r2, #0 17dfe: f363 0204 bfi r2, r3, #0, #5 17e02: f364 124a bfi r2, r4, #5, #6 17e06: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17e0a: f248 0189 movw r1, #32905 ; 0x8089 17e0e: 30a8 adds r0, #168 ; 0xa8 17e10: 4d9d ldr r5, [pc, #628] ; (18088 ) 17e12: 47a8 blx r5 lv_style_set_text_font(&styles->tabview_btns_bg, LV_STATE_DEFAULT, theme.font_normal); 17e14: 4c9d ldr r4, [pc, #628] ; (1808c ) 17e16: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 17e18: 6962 ldr r2, [r4, #20] 17e1a: f248 018e movw r1, #32910 ; 0x808e 17e1e: 30a8 adds r0, #168 ; 0xa8 17e20: 4b9d ldr r3, [pc, #628] ; (18098 ) 17e22: 4798 blx r3 lv_style_set_image_recolor(&styles->tabview_btns_bg, LV_STATE_DEFAULT, lv_color_hex(0x979a9f)); 17e24: 6820 ldr r0, [r4, #0] 17e26: f04f 0200 mov.w r2, #0 17e2a: 2313 movs r3, #19 17e2c: f363 0204 bfi r2, r3, #0, #5 17e30: 2326 movs r3, #38 ; 0x26 17e32: f363 124a bfi r2, r3, #5, #6 17e36: 2312 movs r3, #18 17e38: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 17e3c: f248 01a9 movw r1, #32937 ; 0x80a9 17e40: 30a8 adds r0, #168 ; 0xa8 17e42: 47a8 blx r5 lv_style_set_pad_top(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 17e44: 6824 ldr r4, [r4, #0] 17e46: 34a8 adds r4, #168 ; 0xa8 17e48: 2000 movs r0, #0 17e4a: 4b91 ldr r3, [pc, #580] ; (18090 ) 17e4c: 4798 blx r3 17e4e: ebc0 00c0 rsb r0, r0, r0, lsl #3 17e52: 3050 adds r0, #80 ; 0x50 17e54: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17e58: f280 8773 bge.w 18d42 17e5c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 17e5e: 2110 movs r1, #16 17e60: 4620 mov r0, r4 17e62: 4b8c ldr r3, [pc, #560] ; (18094 ) 17e64: 4798 blx r3 lv_style_set_pad_left(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 17e66: 4b89 ldr r3, [pc, #548] ; (1808c ) 17e68: 681c ldr r4, [r3, #0] 17e6a: 34a8 adds r4, #168 ; 0xa8 17e6c: 2000 movs r0, #0 17e6e: 4b88 ldr r3, [pc, #544] ; (18090 ) 17e70: 4798 blx r3 17e72: ebc0 00c0 rsb r0, r0, r0, lsl #3 17e76: 3050 adds r0, #80 ; 0x50 17e78: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17e7c: f280 8774 bge.w 18d68 17e80: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 17e82: 2112 movs r1, #18 17e84: 4620 mov r0, r4 17e86: 4b83 ldr r3, [pc, #524] ; (18094 ) 17e88: 4798 blx r3 lv_style_set_pad_right(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 17e8a: 4b80 ldr r3, [pc, #512] ; (1808c ) 17e8c: 681c ldr r4, [r3, #0] 17e8e: 34a8 adds r4, #168 ; 0xa8 17e90: 2000 movs r0, #0 17e92: 4b7f ldr r3, [pc, #508] ; (18090 ) 17e94: 4798 blx r3 17e96: ebc0 00c0 rsb r0, r0, r0, lsl #3 17e9a: 3050 adds r0, #80 ; 0x50 17e9c: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17ea0: f280 8771 bge.w 18d86 17ea4: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 17ea6: 2113 movs r1, #19 17ea8: 4620 mov r0, r4 17eaa: 4b7a ldr r3, [pc, #488] ; (18094 ) 17eac: 4798 blx r3 style_init_reset(&styles->tabview_btns); 17eae: 4c77 ldr r4, [pc, #476] ; (1808c ) 17eb0: 6820 ldr r0, [r4, #0] 17eb2: 30a4 adds r0, #164 ; 0xa4 17eb4: 4b79 ldr r3, [pc, #484] ; (1809c ) 17eb6: 4798 blx r3 lv_style_set_bg_opa(&styles->tabview_btns, LV_STATE_PRESSED, LV_OPA_50); 17eb8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 17eba: 227f movs r2, #127 ; 0x7f 17ebc: f241 012c movw r1, #4140 ; 0x102c 17ec0: 30a4 adds r0, #164 ; 0xa4 17ec2: 4b77 ldr r3, [pc, #476] ; (180a0 ) 17ec4: 4798 blx r3 lv_style_set_bg_color(&styles->tabview_btns, LV_STATE_PRESSED, lv_color_hex3(0x888)); 17ec6: 6820 ldr r0, [r4, #0] 17ec8: 2311 movs r3, #17 17eca: f04f 0200 mov.w r2, #0 17ece: f363 0204 bfi r2, r3, #0, #5 17ed2: 2122 movs r1, #34 ; 0x22 17ed4: f361 124a bfi r2, r1, #5, #6 17ed8: f363 22cf bfi r2, r3, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17edc: f241 0129 movw r1, #4137 ; 0x1029 17ee0: 30a4 adds r0, #164 ; 0xa4 17ee2: 4b69 ldr r3, [pc, #420] ; (18088 ) 17ee4: 4798 blx r3 lv_style_set_text_color(&styles->tabview_btns, LV_STATE_CHECKED, COLOR_SCR_TEXT); 17ee6: 6820 ldr r0, [r4, #0] 17ee8: 6a23 ldr r3, [r4, #32] 17eea: f013 0302 ands.w r3, r3, #2 17eee: bf14 ite ne 17ef0: 2107 movne r1, #7 17ef2: 211c moveq r1, #28 17ef4: 2b00 cmp r3, #0 17ef6: bf15 itete ne 17ef8: 240f movne r4, #15 17efa: 243a moveq r4, #58 ; 0x3a 17efc: 2308 movne r3, #8 17efe: 231d moveq r3, #29 17f00: f04f 0200 mov.w r2, #0 17f04: f363 0204 bfi r2, r3, #0, #5 17f08: f364 124a bfi r2, r4, #5, #6 17f0c: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17f10: f248 1189 movw r1, #33161 ; 0x8189 17f14: 30a4 adds r0, #164 ; 0xa4 17f16: 4b5c ldr r3, [pc, #368] ; (18088 ) 17f18: 4798 blx r3 lv_style_set_pad_top(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 17f1a: 4b5c ldr r3, [pc, #368] ; (1808c ) 17f1c: 681c ldr r4, [r3, #0] 17f1e: 34a4 adds r4, #164 ; 0xa4 17f20: 2000 movs r0, #0 17f22: 4b5b ldr r3, [pc, #364] ; (18090 ) 17f24: 4798 blx r3 17f26: eb00 0080 add.w r0, r0, r0, lsl #2 17f2a: 0080 lsls r0, r0, #2 17f2c: 3050 adds r0, #80 ; 0x50 17f2e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17f32: f280 8737 bge.w 18da4 17f36: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 17f38: 2110 movs r1, #16 17f3a: 4620 mov r0, r4 17f3c: 4b55 ldr r3, [pc, #340] ; (18094 ) 17f3e: 4798 blx r3 lv_style_set_pad_bottom(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 17f40: 4b52 ldr r3, [pc, #328] ; (1808c ) 17f42: 681c ldr r4, [r3, #0] 17f44: 34a4 adds r4, #164 ; 0xa4 17f46: 2000 movs r0, #0 17f48: 4b51 ldr r3, [pc, #324] ; (18090 ) 17f4a: 4798 blx r3 17f4c: eb00 0080 add.w r0, r0, r0, lsl #2 17f50: 0080 lsls r0, r0, #2 17f52: 3050 adds r0, #80 ; 0x50 17f54: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17f58: f280 8734 bge.w 18dc4 17f5c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 17f5e: 2111 movs r1, #17 17f60: 4620 mov r0, r4 17f62: 4b4c ldr r3, [pc, #304] ; (18094 ) 17f64: 4798 blx r3 lv_style_set_text_color(&styles->tabview_btns, LV_STATE_FOCUSED, theme.color_primary); 17f66: 4c49 ldr r4, [pc, #292] ; (1808c ) 17f68: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17f6a: 89a2 ldrh r2, [r4, #12] 17f6c: f248 2189 movw r1, #33417 ; 0x8289 17f70: 30a4 adds r0, #164 ; 0xa4 17f72: 4d45 ldr r5, [pc, #276] ; (18088 ) 17f74: 47a8 blx r5 lv_style_set_text_color(&styles->tabview_btns, LV_STATE_EDITED, theme.color_secondary); 17f76: 6820 ldr r0, [r4, #0] 17f78: 89e2 ldrh r2, [r4, #14] 17f7a: f248 4189 movw r1, #33929 ; 0x8489 17f7e: 30a4 adds r0, #164 ; 0xa4 17f80: 47a8 blx r5 style_init_reset(&styles->tabview_indic); 17f82: 6820 ldr r0, [r4, #0] 17f84: 30ac adds r0, #172 ; 0xac 17f86: 4b45 ldr r3, [pc, #276] ; (1809c ) 17f88: 4798 blx r3 lv_style_set_bg_opa(&styles->tabview_indic, LV_STATE_DEFAULT, LV_OPA_COVER); 17f8a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 17f8c: 22ff movs r2, #255 ; 0xff 17f8e: 212c movs r1, #44 ; 0x2c 17f90: 30ac adds r0, #172 ; 0xac 17f92: 4b43 ldr r3, [pc, #268] ; (180a0 ) 17f94: 4798 blx r3 lv_style_set_bg_color(&styles->tabview_indic, LV_STATE_DEFAULT, theme.color_primary); 17f96: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17f98: 89a2 ldrh r2, [r4, #12] 17f9a: 2129 movs r1, #41 ; 0x29 17f9c: 30ac adds r0, #172 ; 0xac 17f9e: 47a8 blx r5 lv_style_set_bg_color(&styles->tabview_indic, LV_STATE_EDITED, theme.color_secondary); 17fa0: 6820 ldr r0, [r4, #0] 17fa2: 89e2 ldrh r2, [r4, #14] 17fa4: f240 4129 movw r1, #1065 ; 0x429 17fa8: 30ac adds r0, #172 ; 0xac 17faa: 47a8 blx r5 lv_style_set_size(&styles->tabview_indic, LV_STATE_DEFAULT, LV_DPX(5)); 17fac: 6824 ldr r4, [r4, #0] 17fae: 34ac adds r4, #172 ; 0xac 17fb0: 2000 movs r0, #0 17fb2: 4b37 ldr r3, [pc, #220] ; (18090 ) 17fb4: 4798 blx r3 17fb6: eb00 0080 add.w r0, r0, r0, lsl #2 17fba: 3050 adds r0, #80 ; 0x50 17fbc: f5b0 7fa0 cmp.w r0, #320 ; 0x140 17fc0: f280 8710 bge.w 18de4 17fc4: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 17fc6: 2103 movs r1, #3 17fc8: 4620 mov r0, r4 17fca: 4d32 ldr r5, [pc, #200] ; (18094 ) 17fcc: 47a8 blx r5 lv_style_set_radius(&styles->tabview_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 17fce: 4c2f ldr r4, [pc, #188] ; (1808c ) 17fd0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 17fd2: f647 72ff movw r2, #32767 ; 0x7fff 17fd6: 2101 movs r1, #1 17fd8: 30ac adds r0, #172 ; 0xac 17fda: 47a8 blx r5 style_init_reset(&styles->tabview_page_scrl); 17fdc: 6820 ldr r0, [r4, #0] 17fde: 30b0 adds r0, #176 ; 0xb0 17fe0: 4b2e ldr r3, [pc, #184] ; (1809c ) 17fe2: 4798 blx r3 lv_style_set_pad_top(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 17fe4: 6824 ldr r4, [r4, #0] 17fe6: 34b0 adds r4, #176 ; 0xb0 17fe8: 2000 movs r0, #0 17fea: 4b2e ldr r3, [pc, #184] ; (180a4 ) 17fec: 4798 blx r3 17fee: 2801 cmp r0, #1 17ff0: f240 8707 bls.w 18e02 17ff4: 2000 movs r0, #0 17ff6: 4b26 ldr r3, [pc, #152] ; (18090 ) 17ff8: 4798 blx r3 17ffa: ebc0 1000 rsb r0, r0, r0, lsl #4 17ffe: 0040 lsls r0, r0, #1 18000: 3050 adds r0, #80 ; 0x50 18002: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18006: f280 8717 bge.w 18e38 1800a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1800c: 2110 movs r1, #16 1800e: 4620 mov r0, r4 18010: 4b20 ldr r3, [pc, #128] ; (18094 ) 18012: 4798 blx r3 lv_style_set_pad_bottom(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 18014: 4b1d ldr r3, [pc, #116] ; (1808c ) 18016: 681c ldr r4, [r3, #0] 18018: 34b0 adds r4, #176 ; 0xb0 1801a: 2000 movs r0, #0 1801c: 4b21 ldr r3, [pc, #132] ; (180a4 ) 1801e: 4798 blx r3 18020: 2801 cmp r0, #1 18022: f240 8719 bls.w 18e58 18026: 2000 movs r0, #0 18028: 4b19 ldr r3, [pc, #100] ; (18090 ) 1802a: 4798 blx r3 1802c: ebc0 1000 rsb r0, r0, r0, lsl #4 18030: 0040 lsls r0, r0, #1 18032: 3050 adds r0, #80 ; 0x50 18034: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18038: f280 8729 bge.w 18e8e 1803c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 1803e: 2111 movs r1, #17 18040: 4620 mov r0, r4 18042: 4b14 ldr r3, [pc, #80] ; (18094 ) 18044: 4798 blx r3 lv_style_set_pad_left(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 18046: 4b11 ldr r3, [pc, #68] ; (1808c ) 18048: 681c ldr r4, [r3, #0] 1804a: 34b0 adds r4, #176 ; 0xb0 1804c: 2000 movs r0, #0 1804e: 4b15 ldr r3, [pc, #84] ; (180a4 ) 18050: 4798 blx r3 18052: 2801 cmp r0, #1 18054: f240 872b bls.w 18eae 18058: 2000 movs r0, #0 1805a: 4b0d ldr r3, [pc, #52] ; (18090 ) 1805c: 4798 blx r3 1805e: ebc0 1000 rsb r0, r0, r0, lsl #4 18062: 0040 lsls r0, r0, #1 18064: 3050 adds r0, #80 ; 0x50 18066: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1806a: f280 873b bge.w 18ee4 1806e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 18070: 2112 movs r1, #18 18072: 4620 mov r0, r4 18074: 4b07 ldr r3, [pc, #28] ; (18094 ) 18076: 4798 blx r3 lv_style_set_pad_right(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 18078: 4b04 ldr r3, [pc, #16] ; (1808c ) 1807a: 681c ldr r4, [r3, #0] 1807c: 34b0 adds r4, #176 ; 0xb0 1807e: 2000 movs r0, #0 18080: 4b08 ldr r3, [pc, #32] ; (180a4 ) 18082: 4798 blx r3 18084: 2801 cmp r0, #1 18086: e00f b.n 180a8 18088: 00006a25 .word 0x00006a25 1808c: 20006bd8 .word 0x20006bd8 18090: 00010f3d .word 0x00010f3d 18094: 000068e1 .word 0x000068e1 18098: 00006c99 .word 0x00006c99 1809c: 00014a61 .word 0x00014a61 180a0: 00006b69 .word 0x00006b69 180a4: 00010f59 .word 0x00010f59 180a8: f240 872c bls.w 18f04 180ac: 2000 movs r0, #0 180ae: 4bbd ldr r3, [pc, #756] ; (183a4 ) 180b0: 4798 blx r3 180b2: ebc0 1000 rsb r0, r0, r0, lsl #4 180b6: 0040 lsls r0, r0, #1 180b8: 3050 adds r0, #80 ; 0x50 180ba: f5b0 7fa0 cmp.w r0, #320 ; 0x140 180be: f280 873c bge.w 18f3a 180c2: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 180c4: 2113 movs r1, #19 180c6: 4620 mov r0, r4 180c8: 4bb7 ldr r3, [pc, #732] ; (183a8 ) 180ca: 4798 blx r3 lv_style_set_pad_inner(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 180cc: 4bb7 ldr r3, [pc, #732] ; (183ac ) 180ce: 681c ldr r4, [r3, #0] 180d0: 34b0 adds r4, #176 ; 0xb0 180d2: 2000 movs r0, #0 180d4: 4bb6 ldr r3, [pc, #728] ; (183b0 ) 180d6: 4798 blx r3 180d8: 2801 cmp r0, #1 180da: f240 873e bls.w 18f5a 180de: 2000 movs r0, #0 180e0: 4bb0 ldr r3, [pc, #704] ; (183a4 ) 180e2: 4798 blx r3 180e4: ebc0 1000 rsb r0, r0, r0, lsl #4 180e8: 0040 lsls r0, r0, #1 180ea: 3050 adds r0, #80 ; 0x50 180ec: f5b0 7fa0 cmp.w r0, #320 ; 0x140 180f0: f280 874e bge.w 18f90 180f4: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 180f6: 2114 movs r1, #20 180f8: 4620 mov r0, r4 180fa: 4bab ldr r3, [pc, #684] ; (183a8 ) 180fc: 4798 blx r3 style_init_reset(&styles->table_cell); 180fe: 4cab ldr r4, [pc, #684] ; (183ac ) 18100: 6820 ldr r0, [r4, #0] 18102: 30a0 adds r0, #160 ; 0xa0 18104: 4bab ldr r3, [pc, #684] ; (183b4 ) 18106: 4798 blx r3 lv_style_set_border_color(&styles->table_cell, LV_STATE_DEFAULT, COLOR_BG_BORDER); 18108: 6820 ldr r0, [r4, #0] 1810a: 6a23 ldr r3, [r4, #32] 1810c: f013 0302 ands.w r3, r3, #2 18110: bf14 ite ne 18112: 211a movne r1, #26 18114: 2110 moveq r1, #16 18116: 2b00 cmp r3, #0 18118: bf15 itete ne 1811a: 2437 movne r4, #55 ; 0x37 1811c: 2422 moveq r4, #34 ; 0x22 1811e: 231c movne r3, #28 18120: 2312 moveq r3, #18 18122: f04f 0200 mov.w r2, #0 18126: f363 0204 bfi r2, r3, #0, #5 1812a: f364 124a bfi r2, r4, #5, #6 1812e: f361 22cf bfi r2, r1, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 18132: 2139 movs r1, #57 ; 0x39 18134: 30a0 adds r0, #160 ; 0xa0 18136: 4ba0 ldr r3, [pc, #640] ; (183b8 ) 18138: 4798 blx r3 lv_style_set_border_width(&styles->table_cell, LV_STATE_DEFAULT, 1); 1813a: 4c9c ldr r4, [pc, #624] ; (183ac ) 1813c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 1813e: 2201 movs r2, #1 18140: 2130 movs r1, #48 ; 0x30 18142: 30a0 adds r0, #160 ; 0xa0 18144: 4d98 ldr r5, [pc, #608] ; (183a8 ) 18146: 47a8 blx r5 lv_style_set_border_side(&styles->table_cell, LV_STATE_DEFAULT, LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM); 18148: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 1814a: 2203 movs r2, #3 1814c: 2131 movs r1, #49 ; 0x31 1814e: 30a0 adds r0, #160 ; 0xa0 18150: 47a8 blx r5 lv_style_set_pad_left(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 18152: 6824 ldr r4, [r4, #0] 18154: 34a0 adds r4, #160 ; 0xa0 18156: 2000 movs r0, #0 18158: 4b95 ldr r3, [pc, #596] ; (183b0 ) 1815a: 4798 blx r3 1815c: 2801 cmp r0, #1 1815e: f240 8727 bls.w 18fb0 18162: 2000 movs r0, #0 18164: 4b8f ldr r3, [pc, #572] ; (183a4 ) 18166: 4798 blx r3 18168: ebc0 1000 rsb r0, r0, r0, lsl #4 1816c: 0040 lsls r0, r0, #1 1816e: 3050 adds r0, #80 ; 0x50 18170: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18174: f280 8737 bge.w 18fe6 18178: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1817a: 2112 movs r1, #18 1817c: 4620 mov r0, r4 1817e: 4b8a ldr r3, [pc, #552] ; (183a8 ) 18180: 4798 blx r3 lv_style_set_pad_right(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 18182: 4b8a ldr r3, [pc, #552] ; (183ac ) 18184: 681c ldr r4, [r3, #0] 18186: 34a0 adds r4, #160 ; 0xa0 18188: 2000 movs r0, #0 1818a: 4b89 ldr r3, [pc, #548] ; (183b0 ) 1818c: 4798 blx r3 1818e: 2801 cmp r0, #1 18190: f240 8739 bls.w 19006 18194: 2000 movs r0, #0 18196: 4b83 ldr r3, [pc, #524] ; (183a4 ) 18198: 4798 blx r3 1819a: ebc0 1000 rsb r0, r0, r0, lsl #4 1819e: 0040 lsls r0, r0, #1 181a0: 3050 adds r0, #80 ; 0x50 181a2: f5b0 7fa0 cmp.w r0, #320 ; 0x140 181a6: f280 8749 bge.w 1903c 181aa: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 181ac: 2113 movs r1, #19 181ae: 4620 mov r0, r4 181b0: 4b7d ldr r3, [pc, #500] ; (183a8 ) 181b2: 4798 blx r3 lv_style_set_pad_top(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 181b4: 4b7d ldr r3, [pc, #500] ; (183ac ) 181b6: 681c ldr r4, [r3, #0] 181b8: 34a0 adds r4, #160 ; 0xa0 181ba: 2000 movs r0, #0 181bc: 4b7c ldr r3, [pc, #496] ; (183b0 ) 181be: 4798 blx r3 181c0: 2801 cmp r0, #1 181c2: f240 874b bls.w 1905c 181c6: 2000 movs r0, #0 181c8: 4b76 ldr r3, [pc, #472] ; (183a4 ) 181ca: 4798 blx r3 181cc: ebc0 1000 rsb r0, r0, r0, lsl #4 181d0: 0040 lsls r0, r0, #1 181d2: 3050 adds r0, #80 ; 0x50 181d4: f5b0 7fa0 cmp.w r0, #320 ; 0x140 181d8: f280 8760 bge.w 1909c 181dc: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 181de: 2110 movs r1, #16 181e0: 4620 mov r0, r4 181e2: 4b71 ldr r3, [pc, #452] ; (183a8 ) 181e4: 4798 blx r3 lv_style_set_pad_bottom(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 181e6: 4b71 ldr r3, [pc, #452] ; (183ac ) 181e8: 681c ldr r4, [r3, #0] 181ea: 34a0 adds r4, #160 ; 0xa0 181ec: 2000 movs r0, #0 181ee: 4b70 ldr r3, [pc, #448] ; (183b0 ) 181f0: 4798 blx r3 181f2: 2801 cmp r0, #1 181f4: f240 8762 bls.w 190bc 181f8: 2000 movs r0, #0 181fa: 4b6a ldr r3, [pc, #424] ; (183a4 ) 181fc: 4798 blx r3 181fe: ebc0 1000 rsb r0, r0, r0, lsl #4 18202: 0040 lsls r0, r0, #1 18204: 3050 adds r0, #80 ; 0x50 18206: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1820a: f280 8772 bge.w 190f2 1820e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 18210: 2111 movs r1, #17 18212: 4620 mov r0, r4 18214: 4b64 ldr r3, [pc, #400] ; (183a8 ) 18216: 4798 blx r3 theme.apply_xcb = theme_apply; 18218: 4c64 ldr r4, [pc, #400] ; (183ac ) 1821a: 4b68 ldr r3, [pc, #416] ; (183bc ) 1821c: 60a3 str r3, [r4, #8] inited = true; 1821e: 2301 movs r3, #1 18220: 7123 strb r3, [r4, #4] lv_obj_report_style_mod(NULL); 18222: 2000 movs r0, #0 18224: 4b66 ldr r3, [pc, #408] ; (183c0 ) 18226: 4798 blx r3 } 18228: f104 0008 add.w r0, r4, #8 1822c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} LV_GC_ROOT(_lv_theme_material_styles) = lv_mem_alloc(sizeof(theme_styles_t)); 18230: 20bc movs r0, #188 ; 0xbc 18232: 4b64 ldr r3, [pc, #400] ; (183c4 ) 18234: 4798 blx r3 18236: 4b64 ldr r3, [pc, #400] ; (183c8 ) 18238: 6018 str r0, [r3, #0] styles = (theme_styles_t *)LV_GC_ROOT(_lv_theme_material_styles); 1823a: 4b5c ldr r3, [pc, #368] ; (183ac ) 1823c: 6018 str r0, [r3, #0] 1823e: f7fe bc8e b.w 16b5e lv_style_set_text_color(&styles->chart_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 18242: 2315 movs r3, #21 18244: 212a movs r1, #42 ; 0x2a 18246: 461c mov r4, r3 18248: f7fe bcb3 b.w 16bb2 lv_style_set_line_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(1)); 1824c: 2000 movs r0, #0 1824e: 4b55 ldr r3, [pc, #340] ; (183a4 ) 18250: 4798 blx r3 18252: 3050 adds r0, #80 ; 0x50 18254: 4b5d ldr r3, [pc, #372] ; (183cc ) 18256: fb83 2300 smull r2, r3, r3, r0 1825a: 17c2 asrs r2, r0, #31 1825c: ebc2 12a3 rsb r2, r2, r3, asr #6 18260: b212 sxth r2, r2 18262: f7fe bcc2 b.w 16bea lv_style_set_line_dash_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 18266: 2000 movs r0, #0 18268: 4b4e ldr r3, [pc, #312] ; (183a4 ) 1826a: 4798 blx r3 1826c: eb00 0080 add.w r0, r0, r0, lsl #2 18270: 0040 lsls r0, r0, #1 18272: 3050 adds r0, #80 ; 0x50 18274: 4b55 ldr r3, [pc, #340] ; (183cc ) 18276: fb83 2300 smull r2, r3, r3, r0 1827a: 17c2 asrs r2, r0, #31 1827c: ebc2 12a3 rsb r2, r2, r3, asr #6 18280: b212 sxth r2, r2 18282: f7fe bcc5 b.w 16c10 lv_style_set_line_dash_gap(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 18286: 2000 movs r0, #0 18288: 4b46 ldr r3, [pc, #280] ; (183a4 ) 1828a: 4798 blx r3 1828c: eb00 0080 add.w r0, r0, r0, lsl #2 18290: 0040 lsls r0, r0, #1 18292: 3050 adds r0, #80 ; 0x50 18294: 4b4d ldr r3, [pc, #308] ; (183cc ) 18296: fb83 2300 smull r2, r3, r3, r0 1829a: 17c2 asrs r2, r0, #31 1829c: ebc2 12a3 rsb r2, r2, r3, asr #6 182a0: b212 sxth r2, r2 182a2: f7fe bcc8 b.w 16c36 lv_style_set_line_width(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(3)); 182a6: 2000 movs r0, #0 182a8: 4b3e ldr r3, [pc, #248] ; (183a4 ) 182aa: 4798 blx r3 182ac: eb00 0040 add.w r0, r0, r0, lsl #1 182b0: 3050 adds r0, #80 ; 0x50 182b2: 4b46 ldr r3, [pc, #280] ; (183cc ) 182b4: fb83 2300 smull r2, r3, r3, r0 182b8: 17c2 asrs r2, r0, #31 182ba: ebc2 12a3 rsb r2, r2, r3, asr #6 182be: b212 sxth r2, r2 182c0: f7fe bce9 b.w 16c96 lv_style_set_size(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(4)); 182c4: 2000 movs r0, #0 182c6: 4b37 ldr r3, [pc, #220] ; (183a4 ) 182c8: 4798 blx r3 182ca: 3014 adds r0, #20 182cc: 0080 lsls r0, r0, #2 182ce: 4b3f ldr r3, [pc, #252] ; (183cc ) 182d0: fb83 2300 smull r2, r3, r3, r0 182d4: 17c2 asrs r2, r0, #31 182d6: ebc2 12a3 rsb r2, r2, r3, asr #6 182da: b212 sxth r2, r2 182dc: f7fe bcec b.w 16cb8 lv_style_set_pad_inner(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(2)); /*Space between columns*/ 182e0: 2000 movs r0, #0 182e2: 4b30 ldr r3, [pc, #192] ; (183a4 ) 182e4: 4798 blx r3 182e6: 3028 adds r0, #40 ; 0x28 182e8: 0040 lsls r0, r0, #1 182ea: 4b38 ldr r3, [pc, #224] ; (183cc ) 182ec: fb83 2300 smull r2, r3, r3, r0 182f0: 17c2 asrs r2, r0, #31 182f2: ebc2 12a3 rsb r2, r2, r3, asr #6 182f6: b212 sxth r2, r2 182f8: f7fe bcef b.w 16cda lv_style_set_radius(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(1)); 182fc: 2000 movs r0, #0 182fe: 4b29 ldr r3, [pc, #164] ; (183a4 ) 18300: 4798 blx r3 18302: 3050 adds r0, #80 ; 0x50 18304: 4b31 ldr r3, [pc, #196] ; (183cc ) 18306: fb83 2300 smull r2, r3, r3, r0 1830a: 17c2 asrs r2, r0, #31 1830c: ebc2 12a3 rsb r2, r2, r3, asr #6 18310: b212 sxth r2, r2 18312: f7fe bcf2 b.w 16cfa lv_style_set_pad_top(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 18316: 2000 movs r0, #0 18318: 4b22 ldr r3, [pc, #136] ; (183a4 ) 1831a: 4798 blx r3 1831c: ebc0 1000 rsb r0, r0, r0, lsl #4 18320: 3050 adds r0, #80 ; 0x50 18322: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18326: da02 bge.n 1832e 18328: 2201 movs r2, #1 1832a: f7fe bd03 b.w 16d34 1832e: 2000 movs r0, #0 18330: 4b1c ldr r3, [pc, #112] ; (183a4 ) 18332: 4798 blx r3 18334: ebc0 1000 rsb r0, r0, r0, lsl #4 18338: 3050 adds r0, #80 ; 0x50 1833a: 4b24 ldr r3, [pc, #144] ; (183cc ) 1833c: fb83 2300 smull r2, r3, r3, r0 18340: 17c2 asrs r2, r0, #31 18342: ebc2 12a3 rsb r2, r2, r3, asr #6 18346: b212 sxth r2, r2 18348: f7fe bcf4 b.w 16d34 1834c: 2000 movs r0, #0 1834e: 4b15 ldr r3, [pc, #84] ; (183a4 ) 18350: 4798 blx r3 18352: ebc0 1000 rsb r0, r0, r0, lsl #4 18356: 0040 lsls r0, r0, #1 18358: 3050 adds r0, #80 ; 0x50 1835a: 4b1c ldr r3, [pc, #112] ; (183cc ) 1835c: fb83 2300 smull r2, r3, r3, r0 18360: 17c2 asrs r2, r0, #31 18362: ebc2 12a3 rsb r2, r2, r3, asr #6 18366: b212 sxth r2, r2 18368: f7fe bce4 b.w 16d34 lv_style_set_pad_left(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 1836c: 2000 movs r0, #0 1836e: 4b0d ldr r3, [pc, #52] ; (183a4 ) 18370: 4798 blx r3 18372: ebc0 1000 rsb r0, r0, r0, lsl #4 18376: 3050 adds r0, #80 ; 0x50 18378: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1837c: da02 bge.n 18384 1837e: 2201 movs r2, #1 18380: f7fe bcf1 b.w 16d66 18384: 2000 movs r0, #0 18386: 4b07 ldr r3, [pc, #28] ; (183a4 ) 18388: 4798 blx r3 1838a: ebc0 1000 rsb r0, r0, r0, lsl #4 1838e: 3050 adds r0, #80 ; 0x50 18390: 4b0e ldr r3, [pc, #56] ; (183cc ) 18392: fb83 2300 smull r2, r3, r3, r0 18396: 17c2 asrs r2, r0, #31 18398: ebc2 12a3 rsb r2, r2, r3, asr #6 1839c: b212 sxth r2, r2 1839e: f7fe bce2 b.w 16d66 183a2: bf00 nop 183a4: 00010f3d .word 0x00010f3d 183a8: 000068e1 .word 0x000068e1 183ac: 20006bd8 .word 0x20006bd8 183b0: 00010f59 .word 0x00010f59 183b4: 00014a61 .word 0x00014a61 183b8: 00006a25 .word 0x00006a25 183bc: 000141f9 .word 0x000141f9 183c0: 00003c55 .word 0x00003c55 183c4: 000123dd .word 0x000123dd 183c8: 20006d48 .word 0x20006d48 183cc: 66666667 .word 0x66666667 183d0: 2000 movs r0, #0 183d2: 4bc7 ldr r3, [pc, #796] ; (186f0 ) 183d4: 4798 blx r3 183d6: ebc0 1000 rsb r0, r0, r0, lsl #4 183da: 0040 lsls r0, r0, #1 183dc: 3050 adds r0, #80 ; 0x50 183de: 4bc5 ldr r3, [pc, #788] ; (186f4 ) 183e0: fb83 2300 smull r2, r3, r3, r0 183e4: 17c2 asrs r2, r0, #31 183e6: ebc2 12a3 rsb r2, r2, r3, asr #6 183ea: b212 sxth r2, r2 183ec: f7fe bcbb b.w 16d66 lv_style_set_pad_right(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 183f0: 2000 movs r0, #0 183f2: 4bbf ldr r3, [pc, #764] ; (186f0 ) 183f4: 4798 blx r3 183f6: ebc0 1000 rsb r0, r0, r0, lsl #4 183fa: 3050 adds r0, #80 ; 0x50 183fc: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18400: da02 bge.n 18408 18402: 2201 movs r2, #1 18404: f7fe bcc8 b.w 16d98 18408: 2000 movs r0, #0 1840a: 4bb9 ldr r3, [pc, #740] ; (186f0 ) 1840c: 4798 blx r3 1840e: ebc0 1000 rsb r0, r0, r0, lsl #4 18412: 3050 adds r0, #80 ; 0x50 18414: 4bb7 ldr r3, [pc, #732] ; (186f4 ) 18416: fb83 2300 smull r2, r3, r3, r0 1841a: 17c2 asrs r2, r0, #31 1841c: ebc2 12a3 rsb r2, r2, r3, asr #6 18420: b212 sxth r2, r2 18422: f7fe bcb9 b.w 16d98 18426: 2000 movs r0, #0 18428: 4bb1 ldr r3, [pc, #708] ; (186f0 ) 1842a: 4798 blx r3 1842c: ebc0 1000 rsb r0, r0, r0, lsl #4 18430: 0040 lsls r0, r0, #1 18432: 3050 adds r0, #80 ; 0x50 18434: 4baf ldr r3, [pc, #700] ; (186f4 ) 18436: fb83 2300 smull r2, r3, r3, r0 1843a: 17c2 asrs r2, r0, #31 1843c: ebc2 12a3 rsb r2, r2, r3, asr #6 18440: b212 sxth r2, r2 18442: f7fe bca9 b.w 16d98 lv_style_set_pad_bottom(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 18446: 2000 movs r0, #0 18448: 4ba9 ldr r3, [pc, #676] ; (186f0 ) 1844a: 4798 blx r3 1844c: ebc0 1000 rsb r0, r0, r0, lsl #4 18450: 3050 adds r0, #80 ; 0x50 18452: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18456: da02 bge.n 1845e 18458: 2201 movs r2, #1 1845a: f7fe bcb6 b.w 16dca 1845e: 2000 movs r0, #0 18460: 4ba3 ldr r3, [pc, #652] ; (186f0 ) 18462: 4798 blx r3 18464: ebc0 1000 rsb r0, r0, r0, lsl #4 18468: 3050 adds r0, #80 ; 0x50 1846a: 4ba2 ldr r3, [pc, #648] ; (186f4 ) 1846c: fb83 2300 smull r2, r3, r3, r0 18470: 17c2 asrs r2, r0, #31 18472: ebc2 12a3 rsb r2, r2, r3, asr #6 18476: b212 sxth r2, r2 18478: f7fe bca7 b.w 16dca 1847c: 2000 movs r0, #0 1847e: 4b9c ldr r3, [pc, #624] ; (186f0 ) 18480: 4798 blx r3 18482: ebc0 1000 rsb r0, r0, r0, lsl #4 18486: 0040 lsls r0, r0, #1 18488: 3050 adds r0, #80 ; 0x50 1848a: 4b9a ldr r3, [pc, #616] ; (186f4 ) 1848c: fb83 2300 smull r2, r3, r3, r0 18490: 17c2 asrs r2, r0, #31 18492: ebc2 12a3 rsb r2, r2, r3, asr #6 18496: b212 sxth r2, r2 18498: f7fe bc97 b.w 16dca lv_style_set_text_color(&styles->calendar_daynames, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex3(0xeee)); 1849c: 2306 movs r3, #6 1849e: 2110 movs r1, #16 184a0: 2409 movs r4, #9 184a2: f7fe bcdc b.w 16e5e lv_style_set_pad_left(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 184a6: 2000 movs r0, #0 184a8: 4b91 ldr r3, [pc, #580] ; (186f0 ) 184aa: 4798 blx r3 184ac: ebc0 1000 rsb r0, r0, r0, lsl #4 184b0: 3050 adds r0, #80 ; 0x50 184b2: f5b0 7fa0 cmp.w r0, #320 ; 0x140 184b6: da02 bge.n 184be 184b8: 2201 movs r2, #1 184ba: f7fe bcf1 b.w 16ea0 184be: 2000 movs r0, #0 184c0: 4b8b ldr r3, [pc, #556] ; (186f0 ) 184c2: 4798 blx r3 184c4: ebc0 1000 rsb r0, r0, r0, lsl #4 184c8: 3050 adds r0, #80 ; 0x50 184ca: 4b8a ldr r3, [pc, #552] ; (186f4 ) 184cc: fb83 2300 smull r2, r3, r3, r0 184d0: 17c2 asrs r2, r0, #31 184d2: ebc2 12a3 rsb r2, r2, r3, asr #6 184d6: b212 sxth r2, r2 184d8: f7fe bce2 b.w 16ea0 184dc: 2000 movs r0, #0 184de: 4b84 ldr r3, [pc, #528] ; (186f0 ) 184e0: 4798 blx r3 184e2: ebc0 1000 rsb r0, r0, r0, lsl #4 184e6: 0040 lsls r0, r0, #1 184e8: 3050 adds r0, #80 ; 0x50 184ea: 4b82 ldr r3, [pc, #520] ; (186f4 ) 184ec: fb83 2300 smull r2, r3, r3, r0 184f0: 17c2 asrs r2, r0, #31 184f2: ebc2 12a3 rsb r2, r2, r3, asr #6 184f6: b212 sxth r2, r2 184f8: f7fe bcd2 b.w 16ea0 lv_style_set_pad_right(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 184fc: 2000 movs r0, #0 184fe: 4b7c ldr r3, [pc, #496] ; (186f0 ) 18500: 4798 blx r3 18502: ebc0 1000 rsb r0, r0, r0, lsl #4 18506: 3050 adds r0, #80 ; 0x50 18508: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1850c: da02 bge.n 18514 1850e: 2201 movs r2, #1 18510: f7fe bcdf b.w 16ed2 18514: 2000 movs r0, #0 18516: 4b76 ldr r3, [pc, #472] ; (186f0 ) 18518: 4798 blx r3 1851a: ebc0 1000 rsb r0, r0, r0, lsl #4 1851e: 3050 adds r0, #80 ; 0x50 18520: 4b74 ldr r3, [pc, #464] ; (186f4 ) 18522: fb83 2300 smull r2, r3, r3, r0 18526: 17c2 asrs r2, r0, #31 18528: ebc2 12a3 rsb r2, r2, r3, asr #6 1852c: b212 sxth r2, r2 1852e: f7fe bcd0 b.w 16ed2 18532: 2000 movs r0, #0 18534: 4b6e ldr r3, [pc, #440] ; (186f0 ) 18536: 4798 blx r3 18538: ebc0 1000 rsb r0, r0, r0, lsl #4 1853c: 0040 lsls r0, r0, #1 1853e: 3050 adds r0, #80 ; 0x50 18540: 4b6c ldr r3, [pc, #432] ; (186f4 ) 18542: fb83 2300 smull r2, r3, r3, r0 18546: 17c2 asrs r2, r0, #31 18548: ebc2 12a3 rsb r2, r2, r3, asr #6 1854c: b212 sxth r2, r2 1854e: f7fe bcc0 b.w 16ed2 lv_style_set_pad_bottom(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 18552: 2000 movs r0, #0 18554: 4b66 ldr r3, [pc, #408] ; (186f0 ) 18556: 4798 blx r3 18558: ebc0 1000 rsb r0, r0, r0, lsl #4 1855c: 3050 adds r0, #80 ; 0x50 1855e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18562: da02 bge.n 1856a 18564: 2201 movs r2, #1 18566: f7fe bccd b.w 16f04 1856a: 2000 movs r0, #0 1856c: 4b60 ldr r3, [pc, #384] ; (186f0 ) 1856e: 4798 blx r3 18570: ebc0 1000 rsb r0, r0, r0, lsl #4 18574: 3050 adds r0, #80 ; 0x50 18576: 4b5f ldr r3, [pc, #380] ; (186f4 ) 18578: fb83 2300 smull r2, r3, r3, r0 1857c: 17c2 asrs r2, r0, #31 1857e: ebc2 12a3 rsb r2, r2, r3, asr #6 18582: b212 sxth r2, r2 18584: f7fe bcbe b.w 16f04 18588: 2000 movs r0, #0 1858a: 4b59 ldr r3, [pc, #356] ; (186f0 ) 1858c: 4798 blx r3 1858e: ebc0 1000 rsb r0, r0, r0, lsl #4 18592: 0040 lsls r0, r0, #1 18594: 3050 adds r0, #80 ; 0x50 18596: 4b57 ldr r3, [pc, #348] ; (186f4 ) 18598: fb83 2300 smull r2, r3, r3, r0 1859c: 17c2 asrs r2, r0, #31 1859e: ebc2 12a3 rsb r2, r2, r3, asr #6 185a2: b212 sxth r2, r2 185a4: f7fe bcae b.w 16f04 lv_style_set_radius(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(4)); 185a8: 2000 movs r0, #0 185aa: 4b51 ldr r3, [pc, #324] ; (186f0 ) 185ac: 4798 blx r3 185ae: 3014 adds r0, #20 185b0: 0080 lsls r0, r0, #2 185b2: 4b50 ldr r3, [pc, #320] ; (186f4 ) 185b4: fb83 2300 smull r2, r3, r3, r0 185b8: 17c2 asrs r2, r0, #31 185ba: ebc2 12a3 rsb r2, r2, r3, asr #6 185be: b212 sxth r2, r2 185c0: f7fe bcb5 b.w 16f2e lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 185c4: 2306 movs r3, #6 185c6: 2110 movs r1, #16 185c8: 2409 movs r4, #9 185ca: f7fe bcbf b.w 16f4c lv_style_set_pad_inner(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(3)); 185ce: 2000 movs r0, #0 185d0: 4b47 ldr r3, [pc, #284] ; (186f0 ) 185d2: 4798 blx r3 185d4: eb00 0040 add.w r0, r0, r0, lsl #1 185d8: 3050 adds r0, #80 ; 0x50 185da: 4b46 ldr r3, [pc, #280] ; (186f4 ) 185dc: fb83 2300 smull r2, r3, r3, r0 185e0: 17c2 asrs r2, r0, #31 185e2: ebc2 12a3 rsb r2, r2, r3, asr #6 185e6: b212 sxth r2, r2 185e8: f7fe bd20 b.w 1702c lv_style_set_pad_left(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 185ec: 2000 movs r0, #0 185ee: 4b40 ldr r3, [pc, #256] ; (186f0 ) 185f0: 4798 blx r3 185f2: ebc0 1000 rsb r0, r0, r0, lsl #4 185f6: 3050 adds r0, #80 ; 0x50 185f8: f5b0 7fa0 cmp.w r0, #320 ; 0x140 185fc: da02 bge.n 18604 185fe: 2201 movs r2, #1 18600: f7fe bd2d b.w 1705e 18604: 2000 movs r0, #0 18606: 4b3a ldr r3, [pc, #232] ; (186f0 ) 18608: 4798 blx r3 1860a: ebc0 1000 rsb r0, r0, r0, lsl #4 1860e: 3050 adds r0, #80 ; 0x50 18610: 4b38 ldr r3, [pc, #224] ; (186f4 ) 18612: fb83 2300 smull r2, r3, r3, r0 18616: 17c2 asrs r2, r0, #31 18618: ebc2 12a3 rsb r2, r2, r3, asr #6 1861c: b212 sxth r2, r2 1861e: f7fe bd1e b.w 1705e 18622: 2000 movs r0, #0 18624: 4b32 ldr r3, [pc, #200] ; (186f0 ) 18626: 4798 blx r3 18628: ebc0 1000 rsb r0, r0, r0, lsl #4 1862c: 0040 lsls r0, r0, #1 1862e: 3050 adds r0, #80 ; 0x50 18630: 4b30 ldr r3, [pc, #192] ; (186f4 ) 18632: fb83 2300 smull r2, r3, r3, r0 18636: 17c2 asrs r2, r0, #31 18638: ebc2 12a3 rsb r2, r2, r3, asr #6 1863c: b212 sxth r2, r2 1863e: f7fe bd0e b.w 1705e lv_style_set_pad_right(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 18642: 2000 movs r0, #0 18644: 4b2a ldr r3, [pc, #168] ; (186f0 ) 18646: 4798 blx r3 18648: ebc0 1000 rsb r0, r0, r0, lsl #4 1864c: 3050 adds r0, #80 ; 0x50 1864e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18652: da02 bge.n 1865a 18654: 2201 movs r2, #1 18656: f7fe bd1b b.w 17090 1865a: 2000 movs r0, #0 1865c: 4b24 ldr r3, [pc, #144] ; (186f0 ) 1865e: 4798 blx r3 18660: ebc0 1000 rsb r0, r0, r0, lsl #4 18664: 3050 adds r0, #80 ; 0x50 18666: 4b23 ldr r3, [pc, #140] ; (186f4 ) 18668: fb83 2300 smull r2, r3, r3, r0 1866c: 17c2 asrs r2, r0, #31 1866e: ebc2 12a3 rsb r2, r2, r3, asr #6 18672: b212 sxth r2, r2 18674: f7fe bd0c b.w 17090 18678: 2000 movs r0, #0 1867a: 4b1d ldr r3, [pc, #116] ; (186f0 ) 1867c: 4798 blx r3 1867e: ebc0 1000 rsb r0, r0, r0, lsl #4 18682: 0040 lsls r0, r0, #1 18684: 3050 adds r0, #80 ; 0x50 18686: 4b1b ldr r3, [pc, #108] ; (186f4 ) 18688: fb83 2300 smull r2, r3, r3, r0 1868c: 17c2 asrs r2, r0, #31 1868e: ebc2 12a3 rsb r2, r2, r3, asr #6 18692: b212 sxth r2, r2 18694: f7fe bcfc b.w 17090 lv_style_set_pad_bottom(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 18698: 2000 movs r0, #0 1869a: 4b15 ldr r3, [pc, #84] ; (186f0 ) 1869c: 4798 blx r3 1869e: ebc0 1000 rsb r0, r0, r0, lsl #4 186a2: 3050 adds r0, #80 ; 0x50 186a4: f5b0 7fa0 cmp.w r0, #320 ; 0x140 186a8: da02 bge.n 186b0 186aa: 2201 movs r2, #1 186ac: f7fe bd09 b.w 170c2 186b0: 2000 movs r0, #0 186b2: 4b0f ldr r3, [pc, #60] ; (186f0 ) 186b4: 4798 blx r3 186b6: ebc0 1000 rsb r0, r0, r0, lsl #4 186ba: 3050 adds r0, #80 ; 0x50 186bc: 4b0d ldr r3, [pc, #52] ; (186f4 ) 186be: fb83 2300 smull r2, r3, r3, r0 186c2: 17c2 asrs r2, r0, #31 186c4: ebc2 12a3 rsb r2, r2, r3, asr #6 186c8: b212 sxth r2, r2 186ca: f7fe bcfa b.w 170c2 186ce: 2000 movs r0, #0 186d0: 4b07 ldr r3, [pc, #28] ; (186f0 ) 186d2: 4798 blx r3 186d4: ebc0 1000 rsb r0, r0, r0, lsl #4 186d8: 0040 lsls r0, r0, #1 186da: 3050 adds r0, #80 ; 0x50 186dc: 4b05 ldr r3, [pc, #20] ; (186f4 ) 186de: fb83 2300 smull r2, r3, r3, r0 186e2: 17c2 asrs r2, r0, #31 186e4: ebc2 12a3 rsb r2, r2, r3, asr #6 186e8: b212 sxth r2, r2 186ea: f7fe bcea b.w 170c2 186ee: bf00 nop 186f0: 00010f3d .word 0x00010f3d 186f4: 66666667 .word 0x66666667 lv_style_set_scale_width(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(30)); 186f8: 2000 movs r0, #0 186fa: 4bc9 ldr r3, [pc, #804] ; (18a20 ) 186fc: 4798 blx r3 186fe: ebc0 1000 rsb r0, r0, r0, lsl #4 18702: 0040 lsls r0, r0, #1 18704: 3050 adds r0, #80 ; 0x50 18706: 4bc7 ldr r3, [pc, #796] ; (18a24 ) 18708: fb83 2300 smull r2, r3, r3, r0 1870c: 17c2 asrs r2, r0, #31 1870e: ebc2 12a3 rsb r2, r2, r3, asr #6 18712: b212 sxth r2, r2 18714: f7fe bcec b.w 170f0 lv_style_set_pad_inner(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(20)); 18718: 2000 movs r0, #0 1871a: 4bc1 ldr r3, [pc, #772] ; (18a20 ) 1871c: 4798 blx r3 1871e: eb00 0080 add.w r0, r0, r0, lsl #2 18722: 0080 lsls r0, r0, #2 18724: 3050 adds r0, #80 ; 0x50 18726: 4bbf ldr r3, [pc, #764] ; (18a24 ) 18728: fb83 2300 smull r2, r3, r3, r0 1872c: 17c2 asrs r2, r0, #31 1872e: ebc2 12a3 rsb r2, r2, r3, asr #6 18732: b212 sxth r2, r2 18734: f7fe bd21 b.w 1717a lv_style_set_pad_left(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 18738: 2000 movs r0, #0 1873a: 4bb9 ldr r3, [pc, #740] ; (18a20 ) 1873c: 4798 blx r3 1873e: eb00 0240 add.w r2, r0, r0, lsl #1 18742: eb00 0082 add.w r0, r0, r2, lsl #2 18746: 3050 adds r0, #80 ; 0x50 18748: 4bb6 ldr r3, [pc, #728] ; (18a24 ) 1874a: fb83 2300 smull r2, r3, r3, r0 1874e: 17c2 asrs r2, r0, #31 18750: ebc2 12a3 rsb r2, r2, r3, asr #6 18754: b212 sxth r2, r2 18756: f7fe bd57 b.w 17208 lv_style_set_pad_right(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 1875a: 2000 movs r0, #0 1875c: 4bb0 ldr r3, [pc, #704] ; (18a20 ) 1875e: 4798 blx r3 18760: eb00 0240 add.w r2, r0, r0, lsl #1 18764: eb00 0082 add.w r0, r0, r2, lsl #2 18768: 3050 adds r0, #80 ; 0x50 1876a: 4bae ldr r3, [pc, #696] ; (18a24 ) 1876c: fb83 2300 smull r2, r3, r3, r0 18770: 17c2 asrs r2, r0, #31 18772: ebc2 12a3 rsb r2, r2, r3, asr #6 18776: b212 sxth r2, r2 18778: f7fe bd5a b.w 17230 lv_style_set_pad_top(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 1877c: 2000 movs r0, #0 1877e: 4ba8 ldr r3, [pc, #672] ; (18a20 ) 18780: 4798 blx r3 18782: eb00 0240 add.w r2, r0, r0, lsl #1 18786: eb00 0082 add.w r0, r0, r2, lsl #2 1878a: 3050 adds r0, #80 ; 0x50 1878c: 4ba5 ldr r3, [pc, #660] ; (18a24 ) 1878e: fb83 2300 smull r2, r3, r3, r0 18792: 17c2 asrs r2, r0, #31 18794: ebc2 12a3 rsb r2, r2, r3, asr #6 18798: b212 sxth r2, r2 1879a: f7fe bd5d b.w 17258 lv_style_set_pad_bottom(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 1879e: 2000 movs r0, #0 187a0: 4b9f ldr r3, [pc, #636] ; (18a20 ) 187a2: 4798 blx r3 187a4: eb00 0240 add.w r2, r0, r0, lsl #1 187a8: eb00 0082 add.w r0, r0, r2, lsl #2 187ac: 3050 adds r0, #80 ; 0x50 187ae: 4b9d ldr r3, [pc, #628] ; (18a24 ) 187b0: fb83 2300 smull r2, r3, r3, r0 187b4: 17c2 asrs r2, r0, #31 187b6: ebc2 12a3 rsb r2, r2, r3, asr #6 187ba: b212 sxth r2, r2 187bc: f7fe bd60 b.w 17280 lv_style_set_radius(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 187c0: 2000 movs r0, #0 187c2: 4b97 ldr r3, [pc, #604] ; (18a20 ) 187c4: 4798 blx r3 187c6: 3014 adds r0, #20 187c8: 0080 lsls r0, r0, #2 187ca: 4b96 ldr r3, [pc, #600] ; (18a24 ) 187cc: fb83 2300 smull r2, r3, r3, r0 187d0: 17c2 asrs r2, r0, #31 187d2: ebc2 12a3 rsb r2, r2, r3, asr #6 187d6: b212 sxth r2, r2 187d8: f7fe bd67 b.w 172aa lv_style_set_pad_inner(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 187dc: 2000 movs r0, #0 187de: 4b90 ldr r3, [pc, #576] ; (18a20 ) 187e0: 4798 blx r3 187e2: eb00 0080 add.w r0, r0, r0, lsl #2 187e6: 0040 lsls r0, r0, #1 187e8: 3050 adds r0, #80 ; 0x50 187ea: 4b8e ldr r3, [pc, #568] ; (18a24 ) 187ec: fb83 2300 smull r2, r3, r3, r0 187f0: 17c2 asrs r2, r0, #31 187f2: ebc2 12a3 rsb r2, r2, r3, asr #6 187f6: b212 sxth r2, r2 187f8: f7fe bd6a b.w 172d0 lv_style_set_outline_width(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 187fc: 2000 movs r0, #0 187fe: 4b88 ldr r3, [pc, #544] ; (18a20 ) 18800: 4798 blx r3 18802: eb00 0040 add.w r0, r0, r0, lsl #1 18806: 3050 adds r0, #80 ; 0x50 18808: 4b86 ldr r3, [pc, #536] ; (18a24 ) 1880a: fb83 2300 smull r2, r3, r3, r0 1880e: 17c2 asrs r2, r0, #31 18810: ebc2 12a3 rsb r2, r2, r3, asr #6 18814: b212 sxth r2, r2 18816: f7fe bd7f b.w 17318 lv_style_set_outline_pad(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 1881a: 2000 movs r0, #0 1881c: 4b80 ldr r3, [pc, #512] ; (18a20 ) 1881e: 4798 blx r3 18820: eb00 0080 add.w r0, r0, r0, lsl #2 18824: 0040 lsls r0, r0, #1 18826: 3050 adds r0, #80 ; 0x50 18828: 4b7e ldr r3, [pc, #504] ; (18a24 ) 1882a: fb83 2300 smull r2, r3, r3, r0 1882e: 17c2 asrs r2, r0, #31 18830: ebc2 12a3 rsb r2, r2, r3, asr #6 18834: b212 sxth r2, r2 18836: f7fe bd82 b.w 1733e lv_style_set_radius(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(4)); 1883a: 2000 movs r0, #0 1883c: 4b78 ldr r3, [pc, #480] ; (18a20 ) 1883e: 4798 blx r3 18840: 3014 adds r0, #20 18842: 0080 lsls r0, r0, #2 18844: 4b77 ldr r3, [pc, #476] ; (18a24 ) 18846: fb83 2300 smull r2, r3, r3, r0 1884a: 17c2 asrs r2, r0, #31 1884c: ebc2 12a3 rsb r2, r2, r3, asr #6 18850: b212 sxth r2, r2 18852: f7fe bd9a b.w 1738a lv_style_set_pad_left(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 18856: 2000 movs r0, #0 18858: 4b71 ldr r3, [pc, #452] ; (18a20 ) 1885a: 4798 blx r3 1885c: eb00 0040 add.w r0, r0, r0, lsl #1 18860: 3050 adds r0, #80 ; 0x50 18862: 4b70 ldr r3, [pc, #448] ; (18a24 ) 18864: fb83 2300 smull r2, r3, r3, r0 18868: 17c2 asrs r2, r0, #31 1886a: ebc2 12a3 rsb r2, r2, r3, asr #6 1886e: b212 sxth r2, r2 18870: f7fe bdb2 b.w 173d8 lv_style_set_pad_right(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 18874: 2000 movs r0, #0 18876: 4b6a ldr r3, [pc, #424] ; (18a20 ) 18878: 4798 blx r3 1887a: eb00 0040 add.w r0, r0, r0, lsl #1 1887e: 3050 adds r0, #80 ; 0x50 18880: 4b68 ldr r3, [pc, #416] ; (18a24 ) 18882: fb83 2300 smull r2, r3, r3, r0 18886: 17c2 asrs r2, r0, #31 18888: ebc2 12a3 rsb r2, r2, r3, asr #6 1888c: b212 sxth r2, r2 1888e: f7fe bdb5 b.w 173fc lv_style_set_pad_top(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 18892: 2000 movs r0, #0 18894: 4b62 ldr r3, [pc, #392] ; (18a20 ) 18896: 4798 blx r3 18898: eb00 0040 add.w r0, r0, r0, lsl #1 1889c: 3050 adds r0, #80 ; 0x50 1889e: 4b61 ldr r3, [pc, #388] ; (18a24 ) 188a0: fb83 2300 smull r2, r3, r3, r0 188a4: 17c2 asrs r2, r0, #31 188a6: ebc2 12a3 rsb r2, r2, r3, asr #6 188aa: b212 sxth r2, r2 188ac: f7fe bdb8 b.w 17420 lv_style_set_pad_bottom(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 188b0: 2000 movs r0, #0 188b2: 4b5b ldr r3, [pc, #364] ; (18a20 ) 188b4: 4798 blx r3 188b6: eb00 0040 add.w r0, r0, r0, lsl #1 188ba: 3050 adds r0, #80 ; 0x50 188bc: 4b59 ldr r3, [pc, #356] ; (18a24 ) 188be: fb83 2300 smull r2, r3, r3, r0 188c2: 17c2 asrs r2, r0, #31 188c4: ebc2 12a3 rsb r2, r2, r3, asr #6 188c8: b212 sxth r2, r2 188ca: f7fe bdbb b.w 17444 lv_style_set_border_width(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 188ce: 2000 movs r0, #0 188d0: 4b53 ldr r3, [pc, #332] ; (18a20 ) 188d2: 4798 blx r3 188d4: 3014 adds r0, #20 188d6: 0080 lsls r0, r0, #2 188d8: 4b52 ldr r3, [pc, #328] ; (18a24 ) 188da: fb83 2300 smull r2, r3, r3, r0 188de: 17c2 asrs r2, r0, #31 188e0: ebc2 12a3 rsb r2, r2, r3, asr #6 188e4: b212 sxth r2, r2 188e6: f7fe bdda b.w 1749e lv_style_set_border_color(&styles->kb_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT : LV_COLOR_BLACK); 188ea: 2307 movs r3, #7 188ec: 210f movs r1, #15 188ee: 2408 movs r4, #8 188f0: f7fe bde9 b.w 174c6 lv_style_set_pad_left(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 188f4: 2000 movs r0, #0 188f6: 4b4a ldr r3, [pc, #296] ; (18a20 ) 188f8: 4798 blx r3 188fa: eb00 0080 add.w r0, r0, r0, lsl #2 188fe: 3050 adds r0, #80 ; 0x50 18900: 4b48 ldr r3, [pc, #288] ; (18a24 ) 18902: fb83 2300 smull r2, r3, r3, r0 18906: 17c2 asrs r2, r0, #31 18908: ebc2 12a3 rsb r2, r2, r3, asr #6 1890c: b212 sxth r2, r2 1890e: f7fe bdf9 b.w 17504 lv_style_set_pad_right(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 18912: 2000 movs r0, #0 18914: 4b42 ldr r3, [pc, #264] ; (18a20 ) 18916: 4798 blx r3 18918: eb00 0080 add.w r0, r0, r0, lsl #2 1891c: 3050 adds r0, #80 ; 0x50 1891e: 4b41 ldr r3, [pc, #260] ; (18a24 ) 18920: fb83 2300 smull r2, r3, r3, r0 18924: 17c2 asrs r2, r0, #31 18926: ebc2 12a3 rsb r2, r2, r3, asr #6 1892a: b212 sxth r2, r2 1892c: f7fe bdfc b.w 17528 lv_style_set_pad_top(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 18930: 2000 movs r0, #0 18932: 4b3b ldr r3, [pc, #236] ; (18a20 ) 18934: 4798 blx r3 18936: eb00 0080 add.w r0, r0, r0, lsl #2 1893a: 3050 adds r0, #80 ; 0x50 1893c: 4b39 ldr r3, [pc, #228] ; (18a24 ) 1893e: fb83 2300 smull r2, r3, r3, r0 18942: 17c2 asrs r2, r0, #31 18944: ebc2 12a3 rsb r2, r2, r3, asr #6 18948: b212 sxth r2, r2 1894a: f7fe bdff b.w 1754c lv_style_set_pad_bottom(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 1894e: 2000 movs r0, #0 18950: 4b33 ldr r3, [pc, #204] ; (18a20 ) 18952: 4798 blx r3 18954: eb00 0080 add.w r0, r0, r0, lsl #2 18958: 3050 adds r0, #80 ; 0x50 1895a: 4b32 ldr r3, [pc, #200] ; (18a24 ) 1895c: fb83 2300 smull r2, r3, r3, r0 18960: 17c2 asrs r2, r0, #31 18962: ebc2 12a3 rsb r2, r2, r3, asr #6 18966: b212 sxth r2, r2 18968: f7fe be02 b.w 17570 lv_style_set_pad_inner(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 1896c: 2000 movs r0, #0 1896e: 4b2c ldr r3, [pc, #176] ; (18a20 ) 18970: 4798 blx r3 18972: eb00 0040 add.w r0, r0, r0, lsl #1 18976: 3050 adds r0, #80 ; 0x50 18978: 4b2a ldr r3, [pc, #168] ; (18a24 ) 1897a: fb83 2300 smull r2, r3, r3, r0 1897e: 17c2 asrs r2, r0, #31 18980: ebc2 12a3 rsb r2, r2, r3, asr #6 18984: b212 sxth r2, r2 18986: f7fe be05 b.w 17594 lv_style_set_shadow_width(&styles->mbox_bg, LV_STATE_DEFAULT, LV_DPX(50)); 1898a: 2000 movs r0, #0 1898c: 4b24 ldr r3, [pc, #144] ; (18a20 ) 1898e: 4798 blx r3 18990: 2232 movs r2, #50 ; 0x32 18992: fb02 f000 mul.w r0, r2, r0 18996: 3050 adds r0, #80 ; 0x50 18998: 4b22 ldr r3, [pc, #136] ; (18a24 ) 1899a: fb83 2300 smull r2, r3, r3, r0 1899e: 17c2 asrs r2, r0, #31 189a0: ebc2 12a3 rsb r2, r2, r3, asr #6 189a4: b212 sxth r2, r2 189a6: f7fe be0c b.w 175c2 lv_style_set_size(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 189aa: 2000 movs r0, #0 189ac: 4b1c ldr r3, [pc, #112] ; (18a20 ) 189ae: 4798 blx r3 189b0: ebc0 00c0 rsb r0, r0, r0, lsl #3 189b4: 3050 adds r0, #80 ; 0x50 189b6: 4b1b ldr r3, [pc, #108] ; (18a24 ) 189b8: fb83 2300 smull r2, r3, r3, r0 189bc: 17c2 asrs r2, r0, #31 189be: ebc2 12a3 rsb r2, r2, r3, asr #6 189c2: b212 sxth r2, r2 189c4: f7fe be52 b.w 1766c lv_style_set_pad_right(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 189c8: 2000 movs r0, #0 189ca: 4b15 ldr r3, [pc, #84] ; (18a20 ) 189cc: 4798 blx r3 189ce: ebc0 00c0 rsb r0, r0, r0, lsl #3 189d2: 3050 adds r0, #80 ; 0x50 189d4: 4b13 ldr r3, [pc, #76] ; (18a24 ) 189d6: fb83 2300 smull r2, r3, r3, r0 189da: 17c2 asrs r2, r0, #31 189dc: ebc2 12a3 rsb r2, r2, r3, asr #6 189e0: b212 sxth r2, r2 189e2: f7fe be55 b.w 17690 lv_style_set_pad_bottom(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 189e6: 2000 movs r0, #0 189e8: 4b0d ldr r3, [pc, #52] ; (18a20 ) 189ea: 4798 blx r3 189ec: ebc0 00c0 rsb r0, r0, r0, lsl #3 189f0: 3050 adds r0, #80 ; 0x50 189f2: 4b0c ldr r3, [pc, #48] ; (18a24 ) 189f4: fb83 2300 smull r2, r3, r3, r0 189f8: 17c2 asrs r2, r0, #31 189fa: ebc2 12a3 rsb r2, r2, r3, asr #6 189fe: b212 sxth r2, r2 18a00: f7fe be58 b.w 176b4 lv_style_set_border_width(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(2)); 18a04: 2000 movs r0, #0 18a06: 4b06 ldr r3, [pc, #24] ; (18a20 ) 18a08: 4798 blx r3 18a0a: 3028 adds r0, #40 ; 0x28 18a0c: 0040 lsls r0, r0, #1 18a0e: 4b05 ldr r3, [pc, #20] ; (18a24 ) 18a10: fb83 2300 smull r2, r3, r3, r0 18a14: 17c2 asrs r2, r0, #31 18a16: ebc2 12a3 rsb r2, r2, r3, asr #6 18a1a: b212 sxth r2, r2 18a1c: f7fe be91 b.w 17742 18a20: 00010f3d .word 0x00010f3d 18a24: 66666667 .word 0x66666667 lv_style_set_pad_left(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(1)); 18a28: 2000 movs r0, #0 18a2a: 4bcd ldr r3, [pc, #820] ; (18d60 ) 18a2c: 4798 blx r3 18a2e: 3050 adds r0, #80 ; 0x50 18a30: 4bcc ldr r3, [pc, #816] ; (18d64 ) 18a32: fb83 2300 smull r2, r3, r3, r0 18a36: 17c2 asrs r2, r0, #31 18a38: ebc2 12a3 rsb r2, r2, r3, asr #6 18a3c: b212 sxth r2, r2 18a3e: f7fe be9d b.w 1777c lv_style_set_text_color(&styles->ta_placeholder, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 18a42: 2315 movs r3, #21 18a44: 212a movs r1, #42 ; 0x2a 18a46: 461c mov r4, r3 18a48: f7fe beb0 b.w 177ac lv_style_set_pad_top(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 18a4c: 2000 movs r0, #0 18a4e: 4bc4 ldr r3, [pc, #784] ; (18d60 ) 18a50: 4798 blx r3 18a52: 2264 movs r2, #100 ; 0x64 18a54: fb02 f000 mul.w r0, r2, r0 18a58: 3050 adds r0, #80 ; 0x50 18a5a: 4bc2 ldr r3, [pc, #776] ; (18d64 ) 18a5c: fb83 2300 smull r2, r3, r3, r0 18a60: 17c2 asrs r2, r0, #31 18a62: ebc2 12a3 rsb r2, r2, r3, asr #6 18a66: b212 sxth r2, r2 18a68: f7fe bed1 b.w 1780e lv_style_set_pad_bottom(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 18a6c: 2000 movs r0, #0 18a6e: 4bbc ldr r3, [pc, #752] ; (18d60 ) 18a70: 4798 blx r3 18a72: 2264 movs r2, #100 ; 0x64 18a74: fb02 f000 mul.w r0, r2, r0 18a78: 3050 adds r0, #80 ; 0x50 18a7a: 4bba ldr r3, [pc, #744] ; (18d64 ) 18a7c: fb83 2300 smull r2, r3, r3, r0 18a80: 17c2 asrs r2, r0, #31 18a82: ebc2 12a3 rsb r2, r2, r3, asr #6 18a86: b212 sxth r2, r2 18a88: f7fe bed4 b.w 17834 lv_style_set_bg_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG); 18a8c: 231f movs r3, #31 18a8e: 213f movs r1, #63 ; 0x3f 18a90: 461c mov r4, r3 18a92: f7fe bf09 b.w 178a8 lv_style_set_bg_color(&styles->list_btn, LV_STATE_PRESSED, COLOR_BG_PR); 18a96: 231d movs r3, #29 18a98: 213b movs r1, #59 ; 0x3b 18a9a: 461c mov r4, r3 18a9c: f7fe bf1a b.w 178d4 lv_style_set_bg_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_DIS); 18aa0: 231f movs r3, #31 18aa2: 213f movs r1, #63 ; 0x3f 18aa4: 461c mov r4, r3 18aa6: f7fe bf2c b.w 17902 lv_style_set_text_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 18aaa: 2307 movs r3, #7 18aac: 210f movs r1, #15 18aae: 2408 movs r4, #8 18ab0: f7fe bf4f b.w 17952 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 18ab4: 2307 movs r3, #7 18ab6: 210f movs r1, #15 18ab8: 2408 movs r4, #8 18aba: f7fe bf7f b.w 179bc lv_style_set_pad_left(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 18abe: 2000 movs r0, #0 18ac0: 4ba7 ldr r3, [pc, #668] ; (18d60 ) 18ac2: 4798 blx r3 18ac4: ebc0 1000 rsb r0, r0, r0, lsl #4 18ac8: 3050 adds r0, #80 ; 0x50 18aca: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18ace: da02 bge.n 18ad6 18ad0: 2201 movs r2, #1 18ad2: f7fe bfef b.w 17ab4 18ad6: 2000 movs r0, #0 18ad8: 4ba1 ldr r3, [pc, #644] ; (18d60 ) 18ada: 4798 blx r3 18adc: ebc0 1000 rsb r0, r0, r0, lsl #4 18ae0: 3050 adds r0, #80 ; 0x50 18ae2: 4ba0 ldr r3, [pc, #640] ; (18d64 ) 18ae4: fb83 2300 smull r2, r3, r3, r0 18ae8: 17c2 asrs r2, r0, #31 18aea: ebc2 12a3 rsb r2, r2, r3, asr #6 18aee: b212 sxth r2, r2 18af0: f7fe bfe0 b.w 17ab4 18af4: 2000 movs r0, #0 18af6: 4b9a ldr r3, [pc, #616] ; (18d60 ) 18af8: 4798 blx r3 18afa: ebc0 1000 rsb r0, r0, r0, lsl #4 18afe: 0040 lsls r0, r0, #1 18b00: 3050 adds r0, #80 ; 0x50 18b02: 4b98 ldr r3, [pc, #608] ; (18d64 ) 18b04: fb83 2300 smull r2, r3, r3, r0 18b08: 17c2 asrs r2, r0, #31 18b0a: ebc2 12a3 rsb r2, r2, r3, asr #6 18b0e: b212 sxth r2, r2 18b10: f7fe bfd0 b.w 17ab4 lv_style_set_pad_right(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 18b14: 2000 movs r0, #0 18b16: 4b92 ldr r3, [pc, #584] ; (18d60 ) 18b18: 4798 blx r3 18b1a: ebc0 1000 rsb r0, r0, r0, lsl #4 18b1e: 3050 adds r0, #80 ; 0x50 18b20: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18b24: da02 bge.n 18b2c 18b26: 2201 movs r2, #1 18b28: f7fe bfdd b.w 17ae6 18b2c: 2000 movs r0, #0 18b2e: 4b8c ldr r3, [pc, #560] ; (18d60 ) 18b30: 4798 blx r3 18b32: ebc0 1000 rsb r0, r0, r0, lsl #4 18b36: 3050 adds r0, #80 ; 0x50 18b38: 4b8a ldr r3, [pc, #552] ; (18d64 ) 18b3a: fb83 2300 smull r2, r3, r3, r0 18b3e: 17c2 asrs r2, r0, #31 18b40: ebc2 12a3 rsb r2, r2, r3, asr #6 18b44: b212 sxth r2, r2 18b46: f7fe bfce b.w 17ae6 18b4a: 2000 movs r0, #0 18b4c: 4b84 ldr r3, [pc, #528] ; (18d60 ) 18b4e: 4798 blx r3 18b50: ebc0 1000 rsb r0, r0, r0, lsl #4 18b54: 0040 lsls r0, r0, #1 18b56: 3050 adds r0, #80 ; 0x50 18b58: 4b82 ldr r3, [pc, #520] ; (18d64 ) 18b5a: fb83 2300 smull r2, r3, r3, r0 18b5e: 17c2 asrs r2, r0, #31 18b60: ebc2 12a3 rsb r2, r2, r3, asr #6 18b64: b212 sxth r2, r2 18b66: f7fe bfbe b.w 17ae6 lv_style_set_pad_top(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 18b6a: 2000 movs r0, #0 18b6c: 4b7c ldr r3, [pc, #496] ; (18d60 ) 18b6e: 4798 blx r3 18b70: ebc0 1000 rsb r0, r0, r0, lsl #4 18b74: 3050 adds r0, #80 ; 0x50 18b76: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18b7a: da02 bge.n 18b82 18b7c: 2201 movs r2, #1 18b7e: f7fe bfcb b.w 17b18 18b82: 2000 movs r0, #0 18b84: 4b76 ldr r3, [pc, #472] ; (18d60 ) 18b86: 4798 blx r3 18b88: ebc0 1000 rsb r0, r0, r0, lsl #4 18b8c: 3050 adds r0, #80 ; 0x50 18b8e: 4b75 ldr r3, [pc, #468] ; (18d64 ) 18b90: fb83 2300 smull r2, r3, r3, r0 18b94: 17c2 asrs r2, r0, #31 18b96: ebc2 12a3 rsb r2, r2, r3, asr #6 18b9a: b212 sxth r2, r2 18b9c: f7fe bfbc b.w 17b18 18ba0: 2000 movs r0, #0 18ba2: 4b6f ldr r3, [pc, #444] ; (18d60 ) 18ba4: 4798 blx r3 18ba6: ebc0 1000 rsb r0, r0, r0, lsl #4 18baa: 0040 lsls r0, r0, #1 18bac: 3050 adds r0, #80 ; 0x50 18bae: 4b6d ldr r3, [pc, #436] ; (18d64 ) 18bb0: fb83 2300 smull r2, r3, r3, r0 18bb4: 17c2 asrs r2, r0, #31 18bb6: ebc2 12a3 rsb r2, r2, r3, asr #6 18bba: b212 sxth r2, r2 18bbc: f7fe bfac b.w 17b18 lv_style_set_pad_bottom(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 18bc0: 2000 movs r0, #0 18bc2: 4b67 ldr r3, [pc, #412] ; (18d60 ) 18bc4: 4798 blx r3 18bc6: ebc0 1000 rsb r0, r0, r0, lsl #4 18bca: 3050 adds r0, #80 ; 0x50 18bcc: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18bd0: da02 bge.n 18bd8 18bd2: 2201 movs r2, #1 18bd4: f7fe bfb9 b.w 17b4a 18bd8: 2000 movs r0, #0 18bda: 4b61 ldr r3, [pc, #388] ; (18d60 ) 18bdc: 4798 blx r3 18bde: ebc0 1000 rsb r0, r0, r0, lsl #4 18be2: 3050 adds r0, #80 ; 0x50 18be4: 4b5f ldr r3, [pc, #380] ; (18d64 ) 18be6: fb83 2300 smull r2, r3, r3, r0 18bea: 17c2 asrs r2, r0, #31 18bec: ebc2 12a3 rsb r2, r2, r3, asr #6 18bf0: b212 sxth r2, r2 18bf2: f7fe bfaa b.w 17b4a 18bf6: 2000 movs r0, #0 18bf8: 4b59 ldr r3, [pc, #356] ; (18d60 ) 18bfa: 4798 blx r3 18bfc: ebc0 1000 rsb r0, r0, r0, lsl #4 18c00: 0040 lsls r0, r0, #1 18c02: 3050 adds r0, #80 ; 0x50 18c04: 4b57 ldr r3, [pc, #348] ; (18d64 ) 18c06: fb83 2300 smull r2, r3, r3, r0 18c0a: 17c2 asrs r2, r0, #31 18c0c: ebc2 12a3 rsb r2, r2, r3, asr #6 18c10: b212 sxth r2, r2 18c12: f7fe bf9a b.w 17b4a lv_style_set_pad_inner(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 18c16: 2000 movs r0, #0 18c18: 4b51 ldr r3, [pc, #324] ; (18d60 ) 18c1a: 4798 blx r3 18c1c: ebc0 1000 rsb r0, r0, r0, lsl #4 18c20: 3050 adds r0, #80 ; 0x50 18c22: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18c26: da02 bge.n 18c2e 18c28: 2201 movs r2, #1 18c2a: f7fe bfa7 b.w 17b7c 18c2e: 2000 movs r0, #0 18c30: 4b4b ldr r3, [pc, #300] ; (18d60 ) 18c32: 4798 blx r3 18c34: ebc0 1000 rsb r0, r0, r0, lsl #4 18c38: 3050 adds r0, #80 ; 0x50 18c3a: 4b4a ldr r3, [pc, #296] ; (18d64 ) 18c3c: fb83 2300 smull r2, r3, r3, r0 18c40: 17c2 asrs r2, r0, #31 18c42: ebc2 12a3 rsb r2, r2, r3, asr #6 18c46: b212 sxth r2, r2 18c48: f7fe bf98 b.w 17b7c 18c4c: 2000 movs r0, #0 18c4e: 4b44 ldr r3, [pc, #272] ; (18d60 ) 18c50: 4798 blx r3 18c52: ebc0 1000 rsb r0, r0, r0, lsl #4 18c56: 0040 lsls r0, r0, #1 18c58: 3050 adds r0, #80 ; 0x50 18c5a: 4b42 ldr r3, [pc, #264] ; (18d64 ) 18c5c: fb83 2300 smull r2, r3, r3, r0 18c60: 17c2 asrs r2, r0, #31 18c62: ebc2 12a3 rsb r2, r2, r3, asr #6 18c66: b212 sxth r2, r2 18c68: f7fe bf88 b.w 17b7c lv_style_set_transform_width(&styles->list_btn, LV_STATE_DEFAULT, - PAD_DEF); 18c6c: 2000 movs r0, #0 18c6e: 4b3c ldr r3, [pc, #240] ; (18d60 ) 18c70: 4798 blx r3 18c72: ebc0 1000 rsb r0, r0, r0, lsl #4 18c76: 3050 adds r0, #80 ; 0x50 18c78: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18c7c: da03 bge.n 18c86 18c7e: f04f 32ff mov.w r2, #4294967295 18c82: f7fe bf95 b.w 17bb0 18c86: 2000 movs r0, #0 18c88: 4b35 ldr r3, [pc, #212] ; (18d60 ) 18c8a: 4798 blx r3 18c8c: ebc0 1000 rsb r0, r0, r0, lsl #4 18c90: 3050 adds r0, #80 ; 0x50 18c92: 4b34 ldr r3, [pc, #208] ; (18d64 ) 18c94: fb83 2300 smull r2, r3, r3, r0 18c98: 17c2 asrs r2, r0, #31 18c9a: eba2 12a3 sub.w r2, r2, r3, asr #6 18c9e: b212 sxth r2, r2 18ca0: f7fe bf86 b.w 17bb0 18ca4: 2000 movs r0, #0 18ca6: 4b2e ldr r3, [pc, #184] ; (18d60 ) 18ca8: 4798 blx r3 18caa: ebc0 1000 rsb r0, r0, r0, lsl #4 18cae: 0040 lsls r0, r0, #1 18cb0: 3050 adds r0, #80 ; 0x50 18cb2: 4b2c ldr r3, [pc, #176] ; (18d64 ) 18cb4: fb83 2300 smull r2, r3, r3, r0 18cb8: 17c2 asrs r2, r0, #31 18cba: eba2 12a3 sub.w r2, r2, r3, asr #6 18cbe: b212 sxth r2, r2 18cc0: f7fe bf76 b.w 17bb0 lv_style_set_text_line_space(&styles->ddlist_page, LV_STATE_DEFAULT, LV_DPX(20)); 18cc4: 2000 movs r0, #0 18cc6: 4b26 ldr r3, [pc, #152] ; (18d60 ) 18cc8: 4798 blx r3 18cca: eb00 0080 add.w r0, r0, r0, lsl #2 18cce: 0080 lsls r0, r0, #2 18cd0: 3050 adds r0, #80 ; 0x50 18cd2: 4b24 ldr r3, [pc, #144] ; (18d64 ) 18cd4: fb83 2300 smull r2, r3, r3, r0 18cd8: 17c2 asrs r2, r0, #31 18cda: ebc2 12a3 rsb r2, r2, r3, asr #6 18cde: b212 sxth r2, r2 18ce0: f7fe bf9e b.w 17c20 lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_PR); 18ce4: 231d movs r3, #29 18ce6: 213b movs r1, #59 ; 0x3b 18ce8: 461c mov r4, r3 18cea: f7fe bfc5 b.w 17c78 lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 18cee: 2307 movs r3, #7 18cf0: 210f movs r1, #15 18cf2: 2408 movs r4, #8 18cf4: f7fe bfd7 b.w 17ca6 lv_style_set_text_line_space(&styles->roller_bg, LV_STATE_DEFAULT, LV_DPX(25)); 18cf8: 2000 movs r0, #0 18cfa: 4b19 ldr r3, [pc, #100] ; (18d60 ) 18cfc: 4798 blx r3 18cfe: eb00 0080 add.w r0, r0, r0, lsl #2 18d02: eb00 0080 add.w r0, r0, r0, lsl #2 18d06: 3050 adds r0, #80 ; 0x50 18d08: 4b16 ldr r3, [pc, #88] ; (18d64 ) 18d0a: fb83 2300 smull r2, r3, r3, r0 18d0e: 17c2 asrs r2, r0, #31 18d10: ebc2 12a3 rsb r2, r2, r3, asr #6 18d14: b212 sxth r2, r2 18d16: f7fe bfe6 b.w 17ce6 lv_style_set_bg_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_BG); 18d1a: 231f movs r3, #31 18d1c: 213f movs r1, #63 ; 0x3f 18d1e: 461c mov r4, r3 18d20: f7ff b810 b.w 17d44 lv_style_set_border_width(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(5)); 18d24: 2000 movs r0, #0 18d26: 4b0e ldr r3, [pc, #56] ; (18d60 ) 18d28: 4798 blx r3 18d2a: eb00 0080 add.w r0, r0, r0, lsl #2 18d2e: 3050 adds r0, #80 ; 0x50 18d30: 4b0c ldr r3, [pc, #48] ; (18d64 ) 18d32: fb83 2300 smull r2, r3, r3, r0 18d36: 17c2 asrs r2, r0, #31 18d38: ebc2 12a3 rsb r2, r2, r3, asr #6 18d3c: b212 sxth r2, r2 18d3e: f7ff b845 b.w 17dcc lv_style_set_pad_top(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 18d42: 2000 movs r0, #0 18d44: 4b06 ldr r3, [pc, #24] ; (18d60 ) 18d46: 4798 blx r3 18d48: ebc0 00c0 rsb r0, r0, r0, lsl #3 18d4c: 3050 adds r0, #80 ; 0x50 18d4e: 4b05 ldr r3, [pc, #20] ; (18d64 ) 18d50: fb83 2300 smull r2, r3, r3, r0 18d54: 17c2 asrs r2, r0, #31 18d56: ebc2 12a3 rsb r2, r2, r3, asr #6 18d5a: b212 sxth r2, r2 18d5c: f7ff b87f b.w 17e5e 18d60: 00010f3d .word 0x00010f3d 18d64: 66666667 .word 0x66666667 lv_style_set_pad_left(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 18d68: 2000 movs r0, #0 18d6a: 4bca ldr r3, [pc, #808] ; (19094 ) 18d6c: 4798 blx r3 18d6e: ebc0 00c0 rsb r0, r0, r0, lsl #3 18d72: 3050 adds r0, #80 ; 0x50 18d74: 4bc8 ldr r3, [pc, #800] ; (19098 ) 18d76: fb83 2300 smull r2, r3, r3, r0 18d7a: 17c2 asrs r2, r0, #31 18d7c: ebc2 12a3 rsb r2, r2, r3, asr #6 18d80: b212 sxth r2, r2 18d82: f7ff b87e b.w 17e82 lv_style_set_pad_right(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 18d86: 2000 movs r0, #0 18d88: 4bc2 ldr r3, [pc, #776] ; (19094 ) 18d8a: 4798 blx r3 18d8c: ebc0 00c0 rsb r0, r0, r0, lsl #3 18d90: 3050 adds r0, #80 ; 0x50 18d92: 4bc1 ldr r3, [pc, #772] ; (19098 ) 18d94: fb83 2300 smull r2, r3, r3, r0 18d98: 17c2 asrs r2, r0, #31 18d9a: ebc2 12a3 rsb r2, r2, r3, asr #6 18d9e: b212 sxth r2, r2 18da0: f7ff b881 b.w 17ea6 lv_style_set_pad_top(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 18da4: 2000 movs r0, #0 18da6: 4bbb ldr r3, [pc, #748] ; (19094 ) 18da8: 4798 blx r3 18daa: eb00 0080 add.w r0, r0, r0, lsl #2 18dae: 0080 lsls r0, r0, #2 18db0: 3050 adds r0, #80 ; 0x50 18db2: 4bb9 ldr r3, [pc, #740] ; (19098 ) 18db4: fb83 2300 smull r2, r3, r3, r0 18db8: 17c2 asrs r2, r0, #31 18dba: ebc2 12a3 rsb r2, r2, r3, asr #6 18dbe: b212 sxth r2, r2 18dc0: f7ff b8ba b.w 17f38 lv_style_set_pad_bottom(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 18dc4: 2000 movs r0, #0 18dc6: 4bb3 ldr r3, [pc, #716] ; (19094 ) 18dc8: 4798 blx r3 18dca: eb00 0080 add.w r0, r0, r0, lsl #2 18dce: 0080 lsls r0, r0, #2 18dd0: 3050 adds r0, #80 ; 0x50 18dd2: 4bb1 ldr r3, [pc, #708] ; (19098 ) 18dd4: fb83 2300 smull r2, r3, r3, r0 18dd8: 17c2 asrs r2, r0, #31 18dda: ebc2 12a3 rsb r2, r2, r3, asr #6 18dde: b212 sxth r2, r2 18de0: f7ff b8bd b.w 17f5e lv_style_set_size(&styles->tabview_indic, LV_STATE_DEFAULT, LV_DPX(5)); 18de4: 2000 movs r0, #0 18de6: 4bab ldr r3, [pc, #684] ; (19094 ) 18de8: 4798 blx r3 18dea: eb00 0080 add.w r0, r0, r0, lsl #2 18dee: 3050 adds r0, #80 ; 0x50 18df0: 4ba9 ldr r3, [pc, #676] ; (19098 ) 18df2: fb83 2300 smull r2, r3, r3, r0 18df6: 17c2 asrs r2, r0, #31 18df8: ebc2 12a3 rsb r2, r2, r3, asr #6 18dfc: b212 sxth r2, r2 18dfe: f7ff b8e2 b.w 17fc6 lv_style_set_pad_top(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 18e02: 2000 movs r0, #0 18e04: 4ba3 ldr r3, [pc, #652] ; (19094 ) 18e06: 4798 blx r3 18e08: ebc0 1000 rsb r0, r0, r0, lsl #4 18e0c: 3050 adds r0, #80 ; 0x50 18e0e: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18e12: da02 bge.n 18e1a 18e14: 2201 movs r2, #1 18e16: f7ff b8f9 b.w 1800c 18e1a: 2000 movs r0, #0 18e1c: 4b9d ldr r3, [pc, #628] ; (19094 ) 18e1e: 4798 blx r3 18e20: ebc0 1000 rsb r0, r0, r0, lsl #4 18e24: 3050 adds r0, #80 ; 0x50 18e26: 4b9c ldr r3, [pc, #624] ; (19098 ) 18e28: fb83 2300 smull r2, r3, r3, r0 18e2c: 17c2 asrs r2, r0, #31 18e2e: ebc2 12a3 rsb r2, r2, r3, asr #6 18e32: b212 sxth r2, r2 18e34: f7ff b8ea b.w 1800c 18e38: 2000 movs r0, #0 18e3a: 4b96 ldr r3, [pc, #600] ; (19094 ) 18e3c: 4798 blx r3 18e3e: ebc0 1000 rsb r0, r0, r0, lsl #4 18e42: 0040 lsls r0, r0, #1 18e44: 3050 adds r0, #80 ; 0x50 18e46: 4b94 ldr r3, [pc, #592] ; (19098 ) 18e48: fb83 2300 smull r2, r3, r3, r0 18e4c: 17c2 asrs r2, r0, #31 18e4e: ebc2 12a3 rsb r2, r2, r3, asr #6 18e52: b212 sxth r2, r2 18e54: f7ff b8da b.w 1800c lv_style_set_pad_bottom(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 18e58: 2000 movs r0, #0 18e5a: 4b8e ldr r3, [pc, #568] ; (19094 ) 18e5c: 4798 blx r3 18e5e: ebc0 1000 rsb r0, r0, r0, lsl #4 18e62: 3050 adds r0, #80 ; 0x50 18e64: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18e68: da02 bge.n 18e70 18e6a: 2201 movs r2, #1 18e6c: f7ff b8e7 b.w 1803e 18e70: 2000 movs r0, #0 18e72: 4b88 ldr r3, [pc, #544] ; (19094 ) 18e74: 4798 blx r3 18e76: ebc0 1000 rsb r0, r0, r0, lsl #4 18e7a: 3050 adds r0, #80 ; 0x50 18e7c: 4b86 ldr r3, [pc, #536] ; (19098 ) 18e7e: fb83 2300 smull r2, r3, r3, r0 18e82: 17c2 asrs r2, r0, #31 18e84: ebc2 12a3 rsb r2, r2, r3, asr #6 18e88: b212 sxth r2, r2 18e8a: f7ff b8d8 b.w 1803e 18e8e: 2000 movs r0, #0 18e90: 4b80 ldr r3, [pc, #512] ; (19094 ) 18e92: 4798 blx r3 18e94: ebc0 1000 rsb r0, r0, r0, lsl #4 18e98: 0040 lsls r0, r0, #1 18e9a: 3050 adds r0, #80 ; 0x50 18e9c: 4b7e ldr r3, [pc, #504] ; (19098 ) 18e9e: fb83 2300 smull r2, r3, r3, r0 18ea2: 17c2 asrs r2, r0, #31 18ea4: ebc2 12a3 rsb r2, r2, r3, asr #6 18ea8: b212 sxth r2, r2 18eaa: f7ff b8c8 b.w 1803e lv_style_set_pad_left(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 18eae: 2000 movs r0, #0 18eb0: 4b78 ldr r3, [pc, #480] ; (19094 ) 18eb2: 4798 blx r3 18eb4: ebc0 1000 rsb r0, r0, r0, lsl #4 18eb8: 3050 adds r0, #80 ; 0x50 18eba: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18ebe: da02 bge.n 18ec6 18ec0: 2201 movs r2, #1 18ec2: f7ff b8d5 b.w 18070 18ec6: 2000 movs r0, #0 18ec8: 4b72 ldr r3, [pc, #456] ; (19094 ) 18eca: 4798 blx r3 18ecc: ebc0 1000 rsb r0, r0, r0, lsl #4 18ed0: 3050 adds r0, #80 ; 0x50 18ed2: 4b71 ldr r3, [pc, #452] ; (19098 ) 18ed4: fb83 2300 smull r2, r3, r3, r0 18ed8: 17c2 asrs r2, r0, #31 18eda: ebc2 12a3 rsb r2, r2, r3, asr #6 18ede: b212 sxth r2, r2 18ee0: f7ff b8c6 b.w 18070 18ee4: 2000 movs r0, #0 18ee6: 4b6b ldr r3, [pc, #428] ; (19094 ) 18ee8: 4798 blx r3 18eea: ebc0 1000 rsb r0, r0, r0, lsl #4 18eee: 0040 lsls r0, r0, #1 18ef0: 3050 adds r0, #80 ; 0x50 18ef2: 4b69 ldr r3, [pc, #420] ; (19098 ) 18ef4: fb83 2300 smull r2, r3, r3, r0 18ef8: 17c2 asrs r2, r0, #31 18efa: ebc2 12a3 rsb r2, r2, r3, asr #6 18efe: b212 sxth r2, r2 18f00: f7ff b8b6 b.w 18070 lv_style_set_pad_right(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 18f04: 2000 movs r0, #0 18f06: 4b63 ldr r3, [pc, #396] ; (19094 ) 18f08: 4798 blx r3 18f0a: ebc0 1000 rsb r0, r0, r0, lsl #4 18f0e: 3050 adds r0, #80 ; 0x50 18f10: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18f14: da02 bge.n 18f1c 18f16: 2201 movs r2, #1 18f18: f7ff b8d4 b.w 180c4 18f1c: 2000 movs r0, #0 18f1e: 4b5d ldr r3, [pc, #372] ; (19094 ) 18f20: 4798 blx r3 18f22: ebc0 1000 rsb r0, r0, r0, lsl #4 18f26: 3050 adds r0, #80 ; 0x50 18f28: 4b5b ldr r3, [pc, #364] ; (19098 ) 18f2a: fb83 2300 smull r2, r3, r3, r0 18f2e: 17c2 asrs r2, r0, #31 18f30: ebc2 12a3 rsb r2, r2, r3, asr #6 18f34: b212 sxth r2, r2 18f36: f7ff b8c5 b.w 180c4 18f3a: 2000 movs r0, #0 18f3c: 4b55 ldr r3, [pc, #340] ; (19094 ) 18f3e: 4798 blx r3 18f40: ebc0 1000 rsb r0, r0, r0, lsl #4 18f44: 0040 lsls r0, r0, #1 18f46: 3050 adds r0, #80 ; 0x50 18f48: 4b53 ldr r3, [pc, #332] ; (19098 ) 18f4a: fb83 2300 smull r2, r3, r3, r0 18f4e: 17c2 asrs r2, r0, #31 18f50: ebc2 12a3 rsb r2, r2, r3, asr #6 18f54: b212 sxth r2, r2 18f56: f7ff b8b5 b.w 180c4 lv_style_set_pad_inner(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 18f5a: 2000 movs r0, #0 18f5c: 4b4d ldr r3, [pc, #308] ; (19094 ) 18f5e: 4798 blx r3 18f60: ebc0 1000 rsb r0, r0, r0, lsl #4 18f64: 3050 adds r0, #80 ; 0x50 18f66: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18f6a: da02 bge.n 18f72 18f6c: 2201 movs r2, #1 18f6e: f7ff b8c2 b.w 180f6 18f72: 2000 movs r0, #0 18f74: 4b47 ldr r3, [pc, #284] ; (19094 ) 18f76: 4798 blx r3 18f78: ebc0 1000 rsb r0, r0, r0, lsl #4 18f7c: 3050 adds r0, #80 ; 0x50 18f7e: 4b46 ldr r3, [pc, #280] ; (19098 ) 18f80: fb83 2300 smull r2, r3, r3, r0 18f84: 17c2 asrs r2, r0, #31 18f86: ebc2 12a3 rsb r2, r2, r3, asr #6 18f8a: b212 sxth r2, r2 18f8c: f7ff b8b3 b.w 180f6 18f90: 2000 movs r0, #0 18f92: 4b40 ldr r3, [pc, #256] ; (19094 ) 18f94: 4798 blx r3 18f96: ebc0 1000 rsb r0, r0, r0, lsl #4 18f9a: 0040 lsls r0, r0, #1 18f9c: 3050 adds r0, #80 ; 0x50 18f9e: 4b3e ldr r3, [pc, #248] ; (19098 ) 18fa0: fb83 2300 smull r2, r3, r3, r0 18fa4: 17c2 asrs r2, r0, #31 18fa6: ebc2 12a3 rsb r2, r2, r3, asr #6 18faa: b212 sxth r2, r2 18fac: f7ff b8a3 b.w 180f6 lv_style_set_pad_left(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 18fb0: 2000 movs r0, #0 18fb2: 4b38 ldr r3, [pc, #224] ; (19094 ) 18fb4: 4798 blx r3 18fb6: ebc0 1000 rsb r0, r0, r0, lsl #4 18fba: 3050 adds r0, #80 ; 0x50 18fbc: f5b0 7fa0 cmp.w r0, #320 ; 0x140 18fc0: da02 bge.n 18fc8 18fc2: 2201 movs r2, #1 18fc4: f7ff b8d9 b.w 1817a 18fc8: 2000 movs r0, #0 18fca: 4b32 ldr r3, [pc, #200] ; (19094 ) 18fcc: 4798 blx r3 18fce: ebc0 1000 rsb r0, r0, r0, lsl #4 18fd2: 3050 adds r0, #80 ; 0x50 18fd4: 4b30 ldr r3, [pc, #192] ; (19098 ) 18fd6: fb83 2300 smull r2, r3, r3, r0 18fda: 17c2 asrs r2, r0, #31 18fdc: ebc2 12a3 rsb r2, r2, r3, asr #6 18fe0: b212 sxth r2, r2 18fe2: f7ff b8ca b.w 1817a 18fe6: 2000 movs r0, #0 18fe8: 4b2a ldr r3, [pc, #168] ; (19094 ) 18fea: 4798 blx r3 18fec: ebc0 1000 rsb r0, r0, r0, lsl #4 18ff0: 0040 lsls r0, r0, #1 18ff2: 3050 adds r0, #80 ; 0x50 18ff4: 4b28 ldr r3, [pc, #160] ; (19098 ) 18ff6: fb83 2300 smull r2, r3, r3, r0 18ffa: 17c2 asrs r2, r0, #31 18ffc: ebc2 12a3 rsb r2, r2, r3, asr #6 19000: b212 sxth r2, r2 19002: f7ff b8ba b.w 1817a lv_style_set_pad_right(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 19006: 2000 movs r0, #0 19008: 4b22 ldr r3, [pc, #136] ; (19094 ) 1900a: 4798 blx r3 1900c: ebc0 1000 rsb r0, r0, r0, lsl #4 19010: 3050 adds r0, #80 ; 0x50 19012: f5b0 7fa0 cmp.w r0, #320 ; 0x140 19016: da02 bge.n 1901e 19018: 2201 movs r2, #1 1901a: f7ff b8c7 b.w 181ac 1901e: 2000 movs r0, #0 19020: 4b1c ldr r3, [pc, #112] ; (19094 ) 19022: 4798 blx r3 19024: ebc0 1000 rsb r0, r0, r0, lsl #4 19028: 3050 adds r0, #80 ; 0x50 1902a: 4b1b ldr r3, [pc, #108] ; (19098 ) 1902c: fb83 2300 smull r2, r3, r3, r0 19030: 17c2 asrs r2, r0, #31 19032: ebc2 12a3 rsb r2, r2, r3, asr #6 19036: b212 sxth r2, r2 19038: f7ff b8b8 b.w 181ac 1903c: 2000 movs r0, #0 1903e: 4b15 ldr r3, [pc, #84] ; (19094 ) 19040: 4798 blx r3 19042: ebc0 1000 rsb r0, r0, r0, lsl #4 19046: 0040 lsls r0, r0, #1 19048: 3050 adds r0, #80 ; 0x50 1904a: 4b13 ldr r3, [pc, #76] ; (19098 ) 1904c: fb83 2300 smull r2, r3, r3, r0 19050: 17c2 asrs r2, r0, #31 19052: ebc2 12a3 rsb r2, r2, r3, asr #6 19056: b212 sxth r2, r2 19058: f7ff b8a8 b.w 181ac lv_style_set_pad_top(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 1905c: 2000 movs r0, #0 1905e: 4b0d ldr r3, [pc, #52] ; (19094 ) 19060: 4798 blx r3 19062: ebc0 1000 rsb r0, r0, r0, lsl #4 19066: 3050 adds r0, #80 ; 0x50 19068: f5b0 7fa0 cmp.w r0, #320 ; 0x140 1906c: da02 bge.n 19074 1906e: 2201 movs r2, #1 19070: f7ff b8b5 b.w 181de 19074: 2000 movs r0, #0 19076: 4b07 ldr r3, [pc, #28] ; (19094 ) 19078: 4798 blx r3 1907a: ebc0 1000 rsb r0, r0, r0, lsl #4 1907e: 3050 adds r0, #80 ; 0x50 19080: 4b05 ldr r3, [pc, #20] ; (19098 ) 19082: fb83 2300 smull r2, r3, r3, r0 19086: 17c2 asrs r2, r0, #31 19088: ebc2 12a3 rsb r2, r2, r3, asr #6 1908c: b212 sxth r2, r2 1908e: f7ff b8a6 b.w 181de 19092: bf00 nop 19094: 00010f3d .word 0x00010f3d 19098: 66666667 .word 0x66666667 1909c: 2000 movs r0, #0 1909e: 4b1d ldr r3, [pc, #116] ; (19114 ) 190a0: 4798 blx r3 190a2: ebc0 1000 rsb r0, r0, r0, lsl #4 190a6: 0040 lsls r0, r0, #1 190a8: 3050 adds r0, #80 ; 0x50 190aa: 4b1b ldr r3, [pc, #108] ; (19118 ) 190ac: fb83 2300 smull r2, r3, r3, r0 190b0: 17c2 asrs r2, r0, #31 190b2: ebc2 12a3 rsb r2, r2, r3, asr #6 190b6: b212 sxth r2, r2 190b8: f7ff b891 b.w 181de lv_style_set_pad_bottom(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 190bc: 2000 movs r0, #0 190be: 4b15 ldr r3, [pc, #84] ; (19114 ) 190c0: 4798 blx r3 190c2: ebc0 1000 rsb r0, r0, r0, lsl #4 190c6: 3050 adds r0, #80 ; 0x50 190c8: f5b0 7fa0 cmp.w r0, #320 ; 0x140 190cc: da02 bge.n 190d4 190ce: 2201 movs r2, #1 190d0: f7ff b89e b.w 18210 190d4: 2000 movs r0, #0 190d6: 4b0f ldr r3, [pc, #60] ; (19114 ) 190d8: 4798 blx r3 190da: ebc0 1000 rsb r0, r0, r0, lsl #4 190de: 3050 adds r0, #80 ; 0x50 190e0: 4b0d ldr r3, [pc, #52] ; (19118 ) 190e2: fb83 2300 smull r2, r3, r3, r0 190e6: 17c2 asrs r2, r0, #31 190e8: ebc2 12a3 rsb r2, r2, r3, asr #6 190ec: b212 sxth r2, r2 190ee: f7ff b88f b.w 18210 190f2: 2000 movs r0, #0 190f4: 4b07 ldr r3, [pc, #28] ; (19114 ) 190f6: 4798 blx r3 190f8: ebc0 1000 rsb r0, r0, r0, lsl #4 190fc: 0040 lsls r0, r0, #1 190fe: 3050 adds r0, #80 ; 0x50 19100: 4b05 ldr r3, [pc, #20] ; (19118 ) 19102: fb83 2300 smull r2, r3, r3, r0 19106: 17c2 asrs r2, r0, #31 19108: ebc2 12a3 rsb r2, r2, r3, asr #6 1910c: b212 sxth r2, r2 1910e: f7ff b87f b.w 18210 19112: bf00 nop 19114: 00010f3d .word 0x00010f3d 19118: 66666667 .word 0x66666667 0001911c : * LV_DESIGN_DRAW: draw the object (always return 'true') * LV_DESIGN_DRAW_POST: drawing after every children are drawn * @param return an element of `lv_design_res_t` */ static lv_design_res_t lv_img_design(lv_obj_t * img, const lv_area_t * clip_area, lv_design_mode_t mode) { 1911c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 19120: b0a4 sub sp, #144 ; 0x90 19122: 4607 mov r7, r0 19124: 460e mov r6, r1 19126: 4614 mov r4, r2 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 19128: 4bb5 ldr r3, [pc, #724] ; (19400 ) 1912a: 4798 blx r3 1912c: 4605 mov r5, r0 if(mode == LV_DESIGN_COVER_CHK) { 1912e: 2c02 cmp r4, #2 19130: d00d beq.n 1914e if(lv_obj_get_style_image_opa(img, LV_IMG_PART_MAIN) != LV_OPA_COVER) return LV_DESIGN_RES_NOT_COVER; return LV_DESIGN_RES_COVER; } else if(mode == LV_DESIGN_DRAW_MAIN) { 19132: 2c00 cmp r4, #0 19134: f040 81fa bne.w 1952c if(ext->h == 0 || ext->w == 0) return true; 19138: f9b0 300a ldrsh.w r3, [r0, #10] 1913c: 2b00 cmp r3, #0 1913e: f000 81f3 beq.w 19528 19142: f9b0 3008 ldrsh.w r3, [r0, #8] 19146: 2b00 cmp r3, #0 19148: d173 bne.n 19232 1914a: 2001 movs r0, #1 1914c: e1f1 b.n 19532 _OBJ_GET_STYLE_##scalar(prop_name, func_name, value_type, style_type) \ _OBJ_SET_STYLE_LOCAL_##scalar(prop_name, func_name, value_type, style_type) \ _OBJ_SET_STYLE_##scalar(prop_name, func_name, value_type, style_type) _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 1914e: 2202 movs r2, #2 19150: 2100 movs r1, #0 19152: 4638 mov r0, r7 19154: 4bab ldr r3, [pc, #684] ; (19404 ) 19156: 4798 blx r3 if(lv_obj_get_style_clip_corner(img, LV_IMG_PART_MAIN)) return LV_DESIGN_RES_MASKED; 19158: b108 cbz r0, 1915e 1915a: 2003 movs r0, #3 1915c: e1e9 b.n 19532 if(ext->src_type == LV_IMG_SRC_UNKNOWN || ext->src_type == LV_IMG_SRC_SYMBOL) return LV_DESIGN_RES_NOT_COVER; 1915e: 7d2a ldrb r2, [r5, #20] 19160: f002 0303 and.w r3, r2, #3 19164: 3b02 subs r3, #2 19166: b2db uxtb r3, r3 19168: 2b01 cmp r3, #1 1916a: f240 820f bls.w 1958c if(ext->cf != LV_IMG_CF_TRUE_COLOR && ext->cf != LV_IMG_CF_RAW) return LV_DESIGN_RES_NOT_COVER; 1916e: f002 02f8 and.w r2, r2, #248 ; 0xf8 19172: 2a20 cmp r2, #32 19174: d003 beq.n 1917e 19176: 2a08 cmp r2, #8 19178: d001 beq.n 1917e 1917a: 2002 movs r0, #2 1917c: e1d9 b.n 19532 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ANGLE, transform_angle, lv_style_int_t, _int, scalar) 1917e: 2206 movs r2, #6 19180: 2100 movs r1, #0 19182: 4638 mov r0, r7 19184: 4b9f ldr r3, [pc, #636] ; (19404 ) 19186: 4798 blx r3 angle_final += ext->angle; 19188: 89ab ldrh r3, [r5, #12] if(angle_final == 0) return LV_DESIGN_RES_NOT_COVER; 1918a: 42c3 cmn r3, r0 1918c: d101 bne.n 19192 1918e: 2002 movs r0, #2 19190: e1cf b.n 19532 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ZOOM, transform_zoom, lv_style_int_t, _int, scalar) 19192: 2207 movs r2, #7 19194: 2100 movs r1, #0 19196: 4638 mov r0, r7 19198: 4b9a ldr r3, [pc, #616] ; (19404 ) 1919a: 4798 blx r3 zoom_final = (zoom_final * ext->zoom) >> 8; 1919c: 8a6b ldrh r3, [r5, #18] 1919e: fb00 f303 mul.w r3, r0, r3 191a2: 121b asrs r3, r3, #8 if(zoom_final != LV_IMG_ZOOM_NONE) { 191a4: f5b3 7f80 cmp.w r3, #256 ; 0x100 191a8: d008 beq.n 191bc if(_lv_area_is_in(clip_area, &img->coords, 0) == false) return LV_DESIGN_RES_NOT_COVER; 191aa: 2200 movs r2, #0 191ac: f107 0110 add.w r1, r7, #16 191b0: 4630 mov r0, r6 191b2: 4b95 ldr r3, [pc, #596] ; (19408 ) 191b4: 4798 blx r3 191b6: bb88 cbnz r0, 1921c 191b8: 2002 movs r0, #2 191ba: e1ba b.n 19532 _lv_img_buf_get_transformed_area(&a, lv_obj_get_width(img), lv_obj_get_height(img), 0, zoom_final, &ext->pivot); 191bc: 4638 mov r0, r7 191be: 4b93 ldr r3, [pc, #588] ; (1940c ) 191c0: 4798 blx r3 191c2: 4604 mov r4, r0 191c4: 4638 mov r0, r7 191c6: 4b92 ldr r3, [pc, #584] ; (19410 ) 191c8: 4798 blx r3 191ca: 350e adds r5, #14 191cc: 9501 str r5, [sp, #4] 191ce: f44f 7380 mov.w r3, #256 ; 0x100 191d2: 9300 str r3, [sp, #0] 191d4: 2300 movs r3, #0 191d6: 4602 mov r2, r0 191d8: 4621 mov r1, r4 191da: a80f add r0, sp, #60 ; 0x3c 191dc: 4c8d ldr r4, [pc, #564] ; (19414 ) 191de: 47a0 blx r4 a.x1 += img->coords.x1; 191e0: 8a3a ldrh r2, [r7, #16] 191e2: f8bd 303c ldrh.w r3, [sp, #60] ; 0x3c 191e6: 4413 add r3, r2 191e8: f8ad 303c strh.w r3, [sp, #60] ; 0x3c a.y1 += img->coords.y1; 191ec: 8a7b ldrh r3, [r7, #18] 191ee: f8bd 103e ldrh.w r1, [sp, #62] ; 0x3e 191f2: 4419 add r1, r3 191f4: f8ad 103e strh.w r1, [sp, #62] ; 0x3e a.x2 += img->coords.x1; 191f8: f8bd 1040 ldrh.w r1, [sp, #64] ; 0x40 191fc: 440a add r2, r1 191fe: f8ad 2040 strh.w r2, [sp, #64] ; 0x40 a.y2 += img->coords.y1; 19202: f8bd 2042 ldrh.w r2, [sp, #66] ; 0x42 19206: 4413 add r3, r2 19208: f8ad 3042 strh.w r3, [sp, #66] ; 0x42 if(_lv_area_is_in(clip_area, &a, 0) == false) return LV_DESIGN_RES_NOT_COVER; 1920c: 2200 movs r2, #0 1920e: a90f add r1, sp, #60 ; 0x3c 19210: 4630 mov r0, r6 19212: 4b7d ldr r3, [pc, #500] ; (19408 ) 19214: 4798 blx r3 19216: b908 cbnz r0, 1921c 19218: 2002 movs r0, #2 1921a: e18a b.n 19532 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_ROUNDED, line_rounded, bool, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_OPA, line_opa, lv_opa_t, _opa, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_BLEND_MODE, image_blend_mode, lv_blend_mode_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_OPA, image_opa, lv_opa_t, _opa, scalar) 1921c: f248 02ac movw r2, #32940 ; 0x80ac 19220: 2100 movs r1, #0 19222: 4638 mov r0, r7 19224: 4b7c ldr r3, [pc, #496] ; (19418 ) 19226: 4798 blx r3 return LV_DESIGN_RES_COVER; 19228: 28ff cmp r0, #255 ; 0xff 1922a: bf14 ite ne 1922c: 2002 movne r0, #2 1922e: 2001 moveq r0, #1 19230: e17f b.n 19532 lv_area_t img_coords; lv_obj_get_coords(img, &img_coords); 19232: a902 add r1, sp, #8 19234: 4638 mov r0, r7 19236: 4b79 ldr r3, [pc, #484] ; (1941c ) 19238: 4798 blx r3 lv_draw_rect_dsc_t bg_dsc; lv_draw_rect_dsc_init(&bg_dsc); 1923a: a80f add r0, sp, #60 ; 0x3c 1923c: 4b78 ldr r3, [pc, #480] ; (19420 ) 1923e: 4798 blx r3 lv_obj_init_draw_rect_dsc(img, LV_IMG_PART_MAIN, &bg_dsc); 19240: aa0f add r2, sp, #60 ; 0x3c 19242: 2100 movs r1, #0 19244: 4638 mov r0, r7 19246: 4b77 ldr r3, [pc, #476] ; (19424 ) 19248: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 1924a: 2233 movs r2, #51 ; 0x33 1924c: 2100 movs r1, #0 1924e: 4638 mov r0, r7 19250: 4b6c ldr r3, [pc, #432] ; (19404 ) 19252: 4798 blx r3 /*If the border is drawn later disable loading its properties*/ if(lv_obj_get_style_border_post(img, LV_OBJ_PART_MAIN)) { 19254: b110 cbz r0, 1925c bg_dsc.border_opa = LV_OPA_TRANSP; 19256: 2300 movs r3, #0 19258: f88d 3050 strb.w r3, [sp, #80] ; 0x50 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ZOOM, transform_zoom, lv_style_int_t, _int, scalar) 1925c: 2207 movs r2, #7 1925e: 2100 movs r1, #0 19260: 4638 mov r0, r7 19262: 4b68 ldr r3, [pc, #416] ; (19404 ) 19264: 4798 blx r3 } int32_t zoom_final = lv_obj_get_style_transform_zoom(img, LV_IMG_PART_MAIN); zoom_final = (zoom_final * ext->zoom) >> 8; 19266: 8a6b ldrh r3, [r5, #18] 19268: fb00 f003 mul.w r0, r0, r3 if(zoom_final == 0) return LV_DESIGN_RES_OK; 1926c: 1204 asrs r4, r0, #8 1926e: d101 bne.n 19274 19270: 2000 movs r0, #0 19272: e15e b.n 19532 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ANGLE, transform_angle, lv_style_int_t, _int, scalar) 19274: 2206 movs r2, #6 19276: 2100 movs r1, #0 19278: 4638 mov r0, r7 1927a: f8df 8188 ldr.w r8, [pc, #392] ; 19404 1927e: 47c0 blx r8 int32_t angle_final = lv_obj_get_style_transform_angle(img, LV_IMG_PART_MAIN); angle_final += ext->angle; 19280: f8b5 900c ldrh.w r9, [r5, #12] 19284: 4481 add r9, r0 lv_area_t bg_coords; _lv_img_buf_get_transformed_area(&bg_coords, lv_area_get_width(&img_coords), lv_area_get_height(&img_coords), 19286: b2a4 uxth r4, r4 * @param area_p pointer to an area * @return the height of the area (if y1 == y2 -> height = 1) */ static inline lv_coord_t lv_area_get_height(const lv_area_t * area_p) { return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 19288: f8bd 200e ldrh.w r2, [sp, #14] 1928c: 3201 adds r2, #1 1928e: f8bd 300a ldrh.w r3, [sp, #10] 19292: 1ad2 subs r2, r2, r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 19294: f8bd 100c ldrh.w r1, [sp, #12] 19298: 3101 adds r1, #1 1929a: f8bd 3008 ldrh.w r3, [sp, #8] 1929e: 1ac9 subs r1, r1, r3 192a0: f105 030e add.w r3, r5, #14 192a4: 9301 str r3, [sp, #4] 192a6: 9400 str r4, [sp, #0] 192a8: fa0f f389 sxth.w r3, r9 192ac: b212 sxth r2, r2 192ae: b209 sxth r1, r1 192b0: a804 add r0, sp, #16 192b2: f8df a160 ldr.w sl, [pc, #352] ; 19414 192b6: 47d0 blx sl angle_final, zoom_final, &ext->pivot); bg_coords.x1 += img_coords.x1; 192b8: f8bd 2008 ldrh.w r2, [sp, #8] 192bc: f8bd 3010 ldrh.w r3, [sp, #16] 192c0: 4413 add r3, r2 192c2: f8ad 3010 strh.w r3, [sp, #16] bg_coords.y1 += img_coords.y1; 192c6: f8bd 300a ldrh.w r3, [sp, #10] 192ca: f8bd 1012 ldrh.w r1, [sp, #18] 192ce: 4419 add r1, r3 192d0: f8ad 1012 strh.w r1, [sp, #18] bg_coords.x2 += img_coords.x1; 192d4: f8bd 1014 ldrh.w r1, [sp, #20] 192d8: 440a add r2, r1 192da: f8ad 2014 strh.w r2, [sp, #20] bg_coords.y2 += img_coords.y1; 192de: f8bd 2016 ldrh.w r2, [sp, #22] 192e2: 4413 add r3, r2 192e4: f8ad 3016 strh.w r3, [sp, #22] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 192e8: 2212 movs r2, #18 192ea: 2100 movs r1, #0 192ec: 4638 mov r0, r7 192ee: 47c0 blx r8 bg_coords.x1 -= lv_obj_get_style_pad_left(img, LV_IMG_PART_MAIN); 192f0: f8bd 3010 ldrh.w r3, [sp, #16] 192f4: 1a18 subs r0, r3, r0 192f6: f8ad 0010 strh.w r0, [sp, #16] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 192fa: 2213 movs r2, #19 192fc: 2100 movs r1, #0 192fe: 4638 mov r0, r7 19300: 47c0 blx r8 bg_coords.x2 += lv_obj_get_style_pad_right(img, LV_IMG_PART_MAIN); 19302: f8bd 3014 ldrh.w r3, [sp, #20] 19306: 4418 add r0, r3 19308: f8ad 0014 strh.w r0, [sp, #20] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1930c: 2210 movs r2, #16 1930e: 2100 movs r1, #0 19310: 4638 mov r0, r7 19312: 47c0 blx r8 bg_coords.y1 -= lv_obj_get_style_pad_top(img, LV_IMG_PART_MAIN); 19314: f8bd 3012 ldrh.w r3, [sp, #18] 19318: 1a18 subs r0, r3, r0 1931a: f8ad 0012 strh.w r0, [sp, #18] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 1931e: 2211 movs r2, #17 19320: 2100 movs r1, #0 19322: 4638 mov r0, r7 19324: 47c0 blx r8 bg_coords.y2 += lv_obj_get_style_pad_bottom(img, LV_IMG_PART_MAIN); 19326: f8bd 3016 ldrh.w r3, [sp, #22] 1932a: 4418 add r0, r3 1932c: f8ad 0016 strh.w r0, [sp, #22] lv_draw_rect(&bg_coords, clip_area, &bg_dsc); 19330: aa0f add r2, sp, #60 ; 0x3c 19332: 4631 mov r1, r6 19334: a804 add r0, sp, #16 19336: 4b3c ldr r3, [pc, #240] ; (19428 ) 19338: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 1933a: 2202 movs r2, #2 1933c: 2100 movs r1, #0 1933e: 4638 mov r0, r7 19340: 47c0 blx r8 if(lv_obj_get_style_clip_corner(img, LV_OBJ_PART_MAIN)) { 19342: b9c8 cbnz r0, 19378 lv_draw_mask_radius_init(mp, &bg_coords, r, false); /*Add the mask and use `img+8` as custom id. Don't use `obj` directly because it might be used by the user*/ lv_draw_mask_add(mp, img + 8); } if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_VARIABLE) { 19344: 7d2b ldrb r3, [r5, #20] 19346: f003 0303 and.w r3, r3, #3 1934a: 2b01 cmp r3, #1 1934c: d92a bls.n 193a4 for(; cords_tmp.x1 <= img_coords.x2; cords_tmp.x1 += ext->w, cords_tmp.x2 += ext->w) { lv_draw_img(&cords_tmp, clip_area, ext->src, &img_dsc); } } } else if(ext->src_type == LV_IMG_SRC_SYMBOL) { 1934e: 2b02 cmp r3, #2 19350: f000 80d1 beq.w 194f6 label_dsc.color = lv_obj_get_style_image_recolor(img, LV_IMG_PART_MAIN); lv_draw_label(&img_coords, clip_area, &label_dsc, ext->src, NULL); } else { /*Trigger the error handler of image drawer*/ LV_LOG_WARN("lv_img_design: image source type is unknown"); 19354: 4b35 ldr r3, [pc, #212] ; (1942c ) 19356: 9300 str r3, [sp, #0] 19358: 4b35 ldr r3, [pc, #212] ; (19430 ) 1935a: f240 22bb movw r2, #699 ; 0x2bb 1935e: 4935 ldr r1, [pc, #212] ; (19434 ) 19360: 2002 movs r0, #2 19362: 4c35 ldr r4, [pc, #212] ; (19438 ) 19364: 47a0 blx r4 lv_draw_img(&img->coords, clip_area, NULL, NULL); 19366: 2300 movs r3, #0 19368: 461a mov r2, r3 1936a: 4631 mov r1, r6 1936c: f107 0010 add.w r0, r7, #16 19370: 4c32 ldr r4, [pc, #200] ; (1943c ) 19372: 47a0 blx r4 lv_obj_init_draw_rect_dsc(img, LV_OBJ_PART_MAIN, &draw_dsc); lv_draw_rect(&img->coords, clip_area, &draw_dsc); } } return LV_DESIGN_RES_OK; 19374: 2000 movs r0, #0 19376: e0dc b.n 19532 lv_draw_mask_radius_param_t * mp = _lv_mem_buf_get(sizeof(lv_draw_mask_radius_param_t)); 19378: 201c movs r0, #28 1937a: 4b31 ldr r3, [pc, #196] ; (19440 ) 1937c: 4798 blx r3 1937e: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 19380: 2201 movs r2, #1 19382: 2100 movs r1, #0 19384: 4638 mov r0, r7 19386: 4b1f ldr r3, [pc, #124] ; (19404 ) 19388: 4798 blx r3 lv_draw_mask_radius_init(mp, &bg_coords, r, false); 1938a: 2300 movs r3, #0 1938c: 4602 mov r2, r0 1938e: a904 add r1, sp, #16 19390: 4640 mov r0, r8 19392: f8df a0bc ldr.w sl, [pc, #188] ; 19450 19396: 47d0 blx sl lv_draw_mask_add(mp, img + 8); 19398: f507 7118 add.w r1, r7, #608 ; 0x260 1939c: 4640 mov r0, r8 1939e: 4b29 ldr r3, [pc, #164] ; (19444 ) 193a0: 4798 blx r3 193a2: e7cf b.n 19344 img_coords.x1 += ext->offset.x; 193a4: f8bd 2008 ldrh.w r2, [sp, #8] 193a8: 88ab ldrh r3, [r5, #4] 193aa: 441a add r2, r3 193ac: b292 uxth r2, r2 193ae: b210 sxth r0, r2 193b0: f8ad 0008 strh.w r0, [sp, #8] img_coords.y1 += ext->offset.y; 193b4: f8bd 300a ldrh.w r3, [sp, #10] 193b8: 88e9 ldrh r1, [r5, #6] 193ba: 440b add r3, r1 193bc: b29b uxth r3, r3 193be: b219 sxth r1, r3 193c0: f8ad 100a strh.w r1, [sp, #10] if(img_coords.x1 > img->coords.x1) img_coords.x1 -= ext->w; 193c4: f9b7 e010 ldrsh.w lr, [r7, #16] 193c8: 4586 cmp lr, r0 193ca: da03 bge.n 193d4 193cc: 8928 ldrh r0, [r5, #8] 193ce: 1a12 subs r2, r2, r0 193d0: f8ad 2008 strh.w r2, [sp, #8] if(img_coords.y1 > img->coords.y1) img_coords.y1 -= ext->h; 193d4: f9b7 2012 ldrsh.w r2, [r7, #18] 193d8: 428a cmp r2, r1 193da: da03 bge.n 193e4 193dc: 896a ldrh r2, [r5, #10] 193de: 1a9b subs r3, r3, r2 193e0: f8ad 300a strh.w r3, [sp, #10] lv_draw_img_dsc_init(&img_dsc); 193e4: a808 add r0, sp, #32 193e6: 4b18 ldr r3, [pc, #96] ; (19448 ) 193e8: 4798 blx r3 lv_obj_init_draw_img_dsc(img, LV_IMG_PART_MAIN, &img_dsc); 193ea: aa08 add r2, sp, #32 193ec: 2100 movs r1, #0 193ee: 4638 mov r0, r7 193f0: 4b16 ldr r3, [pc, #88] ; (1944c ) 193f2: 4798 blx r3 img_dsc.zoom = zoom_final; 193f4: f8ad 4028 strh.w r4, [sp, #40] ; 0x28 if(img_dsc.zoom == 0) return LV_DESIGN_RES_OK; 193f8: bb64 cbnz r4, 19454 193fa: 2000 movs r0, #0 193fc: e099 b.n 19532 193fe: bf00 nop 19400: 00004d9d .word 0x00004d9d 19404: 000044d5 .word 0x000044d5 19408: 0001176d .word 0x0001176d 1940c: 00002f5d .word 0x00002f5d 19410: 00002fad .word 0x00002fad 19414: 0000ec65 .word 0x0000ec65 19418: 0000460d .word 0x0000460d 1941c: 00002e41 .word 0x00002e41 19420: 0000c269 .word 0x0000c269 19424: 000050c5 .word 0x000050c5 19428: 0000c331 .word 0x0000c331 1942c: 000250e0 .word 0x000250e0 19430: 00029590 .word 0x00029590 19434: 000296b8 .word 0x000296b8 19438: 0001225d .word 0x0001225d 1943c: 000096e9 .word 0x000096e9 19440: 0001293d .word 0x0001293d 19444: 0000bdc1 .word 0x0000bdc1 19448: 00009645 .word 0x00009645 1944c: 00005769 .word 0x00005769 19450: 0000c02d .word 0x0000c02d img_dsc.angle = angle_final; 19454: f8ad 9022 strh.w r9, [sp, #34] ; 0x22 img_dsc.pivot.x = ext->pivot.x; 19458: 89eb ldrh r3, [r5, #14] 1945a: f8ad 3024 strh.w r3, [sp, #36] ; 0x24 img_dsc.pivot.y = ext->pivot.y; 1945e: 8a2b ldrh r3, [r5, #16] 19460: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 img_dsc.antialias = ext->antialias; 19464: 7d6a ldrb r2, [r5, #21] 19466: f89d 302f ldrb.w r3, [sp, #47] ; 0x2f 1946a: f362 0300 bfi r3, r2, #0, #1 1946e: f88d 302f strb.w r3, [sp, #47] ; 0x2f cords_tmp.y1 = img_coords.y1; 19472: f9bd 300a ldrsh.w r3, [sp, #10] 19476: f8ad 301a strh.w r3, [sp, #26] cords_tmp.y2 = img_coords.y1 + ext->h - 1; 1947a: 1e5a subs r2, r3, #1 1947c: 8969 ldrh r1, [r5, #10] 1947e: 440a add r2, r1 19480: f8ad 201e strh.w r2, [sp, #30] for(; cords_tmp.y1 <= img_coords.y2; cords_tmp.y1 += ext->h, cords_tmp.y2 += ext->h) { 19484: f9bd 200e ldrsh.w r2, [sp, #14] 19488: 429a cmp r2, r3 1948a: f6ff af73 blt.w 19374 lv_draw_img(&cords_tmp, clip_area, ext->src, &img_dsc); 1948e: 4c40 ldr r4, [pc, #256] ; (19590 ) cords_tmp.x1 = img_coords.x1; 19490: f9bd 3008 ldrsh.w r3, [sp, #8] 19494: f8ad 3018 strh.w r3, [sp, #24] cords_tmp.x2 = img_coords.x1 + ext->w - 1; 19498: 1e5a subs r2, r3, #1 1949a: 8929 ldrh r1, [r5, #8] 1949c: 440a add r2, r1 1949e: f8ad 201c strh.w r2, [sp, #28] for(; cords_tmp.x1 <= img_coords.x2; cords_tmp.x1 += ext->w, cords_tmp.x2 += ext->w) { 194a2: f9bd 200c ldrsh.w r2, [sp, #12] 194a6: 429a cmp r2, r3 194a8: db14 blt.n 194d4 lv_draw_img(&cords_tmp, clip_area, ext->src, &img_dsc); 194aa: ab08 add r3, sp, #32 194ac: 682a ldr r2, [r5, #0] 194ae: 4631 mov r1, r6 194b0: a806 add r0, sp, #24 194b2: 47a0 blx r4 for(; cords_tmp.x1 <= img_coords.x2; cords_tmp.x1 += ext->w, cords_tmp.x2 += ext->w) { 194b4: 892a ldrh r2, [r5, #8] 194b6: f8bd 3018 ldrh.w r3, [sp, #24] 194ba: 4413 add r3, r2 194bc: b21b sxth r3, r3 194be: f8ad 3018 strh.w r3, [sp, #24] 194c2: f8bd 101c ldrh.w r1, [sp, #28] 194c6: 440a add r2, r1 194c8: f8ad 201c strh.w r2, [sp, #28] 194cc: f9bd 200c ldrsh.w r2, [sp, #12] 194d0: 429a cmp r2, r3 194d2: daea bge.n 194aa for(; cords_tmp.y1 <= img_coords.y2; cords_tmp.y1 += ext->h, cords_tmp.y2 += ext->h) { 194d4: 896a ldrh r2, [r5, #10] 194d6: f8bd 301a ldrh.w r3, [sp, #26] 194da: 4413 add r3, r2 194dc: b21b sxth r3, r3 194de: f8ad 301a strh.w r3, [sp, #26] 194e2: f8bd 101e ldrh.w r1, [sp, #30] 194e6: 440a add r2, r1 194e8: f8ad 201e strh.w r2, [sp, #30] 194ec: f9bd 200e ldrsh.w r2, [sp, #14] 194f0: 429a cmp r2, r3 194f2: dacd bge.n 19490 194f4: e73e b.n 19374 lv_draw_label_dsc_init(&label_dsc); 194f6: a808 add r0, sp, #32 194f8: 4b26 ldr r3, [pc, #152] ; (19594 ) 194fa: 4798 blx r3 lv_obj_init_draw_label_dsc(img, LV_IMG_PART_MAIN, &label_dsc); 194fc: aa08 add r2, sp, #32 194fe: 2100 movs r1, #0 19500: 4638 mov r0, r7 19502: 4b25 ldr r3, [pc, #148] ; (19598 ) 19504: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 19506: f248 02a9 movw r2, #32937 ; 0x80a9 1950a: 2100 movs r1, #0 1950c: 4638 mov r0, r7 1950e: 4b23 ldr r3, [pc, #140] ; (1959c ) 19510: 4798 blx r3 label_dsc.color = lv_obj_get_style_image_recolor(img, LV_IMG_PART_MAIN); 19512: f8ad 0020 strh.w r0, [sp, #32] lv_draw_label(&img_coords, clip_area, &label_dsc, ext->src, NULL); 19516: 682b ldr r3, [r5, #0] 19518: 2200 movs r2, #0 1951a: 9200 str r2, [sp, #0] 1951c: aa08 add r2, sp, #32 1951e: 4631 mov r1, r6 19520: a802 add r0, sp, #8 19522: 4c1f ldr r4, [pc, #124] ; (195a0 ) 19524: 47a0 blx r4 19526: e725 b.n 19374 if(ext->h == 0 || ext->w == 0) return true; 19528: 2001 movs r0, #1 1952a: e002 b.n 19532 else if(mode == LV_DESIGN_DRAW_POST) { 1952c: 2c01 cmp r4, #1 1952e: d003 beq.n 19538 return LV_DESIGN_RES_OK; 19530: 2000 movs r0, #0 } 19532: b024 add sp, #144 ; 0x90 19534: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 19538: 2202 movs r2, #2 1953a: 2100 movs r1, #0 1953c: 4638 mov r0, r7 1953e: 4b19 ldr r3, [pc, #100] ; (195a4 ) 19540: 4798 blx r3 if(lv_obj_get_style_clip_corner(img, LV_OBJ_PART_MAIN)) { 19542: b950 cbnz r0, 1955a lv_draw_rect_dsc_init(&draw_dsc); 19544: a80f add r0, sp, #60 ; 0x3c 19546: 4b18 ldr r3, [pc, #96] ; (195a8 ) 19548: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 1954a: 2233 movs r2, #51 ; 0x33 1954c: 2100 movs r1, #0 1954e: 4638 mov r0, r7 19550: 4b14 ldr r3, [pc, #80] ; (195a4 ) 19552: 4798 blx r3 if(lv_obj_get_style_border_post(img, LV_OBJ_PART_MAIN)) { 19554: b940 cbnz r0, 19568 return LV_DESIGN_RES_OK; 19556: 2000 movs r0, #0 19558: e7eb b.n 19532 lv_draw_mask_radius_param_t * param = lv_draw_mask_remove_custom(img + 8); 1955a: f507 7018 add.w r0, r7, #608 ; 0x260 1955e: 4b13 ldr r3, [pc, #76] ; (195ac ) 19560: 4798 blx r3 _lv_mem_buf_release(param); 19562: 4b13 ldr r3, [pc, #76] ; (195b0 ) 19564: 4798 blx r3 19566: e7ed b.n 19544 draw_dsc.bg_opa = LV_OPA_TRANSP; 19568: 2100 movs r1, #0 1956a: f88d 1048 strb.w r1, [sp, #72] ; 0x48 draw_dsc.pattern_opa = LV_OPA_TRANSP; 1956e: f88d 1072 strb.w r1, [sp, #114] ; 0x72 draw_dsc.shadow_opa = LV_OPA_TRANSP; 19572: f88d 1064 strb.w r1, [sp, #100] ; 0x64 lv_obj_init_draw_rect_dsc(img, LV_OBJ_PART_MAIN, &draw_dsc); 19576: aa0f add r2, sp, #60 ; 0x3c 19578: 4638 mov r0, r7 1957a: 4b0e ldr r3, [pc, #56] ; (195b4 ) 1957c: 4798 blx r3 lv_draw_rect(&img->coords, clip_area, &draw_dsc); 1957e: aa0f add r2, sp, #60 ; 0x3c 19580: 4631 mov r1, r6 19582: f107 0010 add.w r0, r7, #16 19586: 4b0c ldr r3, [pc, #48] ; (195b8 ) 19588: 4798 blx r3 1958a: e7e4 b.n 19556 if(ext->src_type == LV_IMG_SRC_UNKNOWN || ext->src_type == LV_IMG_SRC_SYMBOL) return LV_DESIGN_RES_NOT_COVER; 1958c: 2002 movs r0, #2 1958e: e7d0 b.n 19532 19590: 000096e9 .word 0x000096e9 19594: 000099cd .word 0x000099cd 19598: 000056b1 .word 0x000056b1 1959c: 00004581 .word 0x00004581 195a0: 00009a25 .word 0x00009a25 195a4: 000044d5 .word 0x000044d5 195a8: 0000c269 .word 0x0000c269 195ac: 0000be91 .word 0x0000be91 195b0: 00012571 .word 0x00012571 195b4: 000050c5 .word 0x000050c5 195b8: 0000c331 .word 0x0000c331 000195bc : { 195bc: b530 push {r4, r5, lr} 195be: b083 sub sp, #12 195c0: 4604 mov r4, r0 LV_ASSERT_OBJ(img, LV_OBJX_NAME); 195c2: 4b0c ldr r3, [pc, #48] ; (195f4 ) 195c4: 4798 blx r3 195c6: b968 cbnz r0, 195e4 195c8: 4b0b ldr r3, [pc, #44] ; (195f8 ) 195ca: 9300 str r3, [sp, #0] 195cc: f44f 72e7 mov.w r2, #462 ; 0x1ce 195d0: 490a ldr r1, [pc, #40] ; (195fc ) 195d2: 2003 movs r0, #3 195d4: 4d0a ldr r5, [pc, #40] ; (19600 ) 195d6: 47a8 blx r5 195d8: 4622 mov r2, r4 195da: 2300 movs r3, #0 195dc: 4809 ldr r0, [pc, #36] ; (19604 ) 195de: 490a ldr r1, [pc, #40] ; (19608 ) 195e0: 4788 blx r1 195e2: e7fe b.n 195e2 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 195e4: 4620 mov r0, r4 195e6: 4b09 ldr r3, [pc, #36] ; (1960c ) 195e8: 4798 blx r3 return ext->auto_size == 0 ? false : true; 195ea: 7d00 ldrb r0, [r0, #20] } 195ec: f3c0 0080 ubfx r0, r0, #2, #1 195f0: b003 add sp, #12 195f2: bd30 pop {r4, r5, pc} 195f4: 000022b1 .word 0x000022b1 195f8: 00029608 .word 0x00029608 195fc: 000296b8 .word 0x000296b8 19600: 0001225d .word 0x0001225d 19604: 0002483c .word 0x0002483c 19608: 000022b9 .word 0x000022b9 1960c: 00004d9d .word 0x00004d9d 00019610 : { 19610: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 19614: b086 sub sp, #24 19616: 4605 mov r5, r0 19618: 460e mov r6, r1 LV_ASSERT_OBJ(img, LV_OBJX_NAME); 1961a: 4b7c ldr r3, [pc, #496] ; (1980c ) 1961c: 4798 blx r3 1961e: b960 cbnz r0, 1963a 19620: 4b7b ldr r3, [pc, #492] ; (19810 ) 19622: 9300 str r3, [sp, #0] 19624: 228f movs r2, #143 ; 0x8f 19626: 497b ldr r1, [pc, #492] ; (19814 ) 19628: 2003 movs r0, #3 1962a: 4c7b ldr r4, [pc, #492] ; (19818 ) 1962c: 47a0 blx r4 1962e: 462a mov r2, r5 19630: 2300 movs r3, #0 19632: 487a ldr r0, [pc, #488] ; (1981c ) 19634: 497a ldr r1, [pc, #488] ; (19820 ) 19636: 4788 blx r1 19638: e7fe b.n 19638 lv_img_src_t src_type = lv_img_src_get_type(src_img); 1963a: 4630 mov r0, r6 1963c: 4b79 ldr r3, [pc, #484] ; (19824 ) 1963e: 4798 blx r3 19640: 4607 mov r7, r0 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 19642: 4628 mov r0, r5 19644: 4b78 ldr r3, [pc, #480] ; (19828 ) 19646: 4798 blx r3 19648: 4604 mov r4, r0 switch(src_type) { 1964a: 2f02 cmp r7, #2 1964c: d83a bhi.n 196c4 if(src_type == LV_IMG_SRC_UNKNOWN) { 1964e: 2f03 cmp r7, #3 19650: d042 beq.n 196d8 lv_img_decoder_get_info(src_img, &header); 19652: a905 add r1, sp, #20 19654: 4630 mov r0, r6 19656: 4b75 ldr r3, [pc, #468] ; (1982c ) 19658: 4798 blx r3 if(src_type == LV_IMG_SRC_VARIABLE) { 1965a: 2f00 cmp r7, #0 1965c: d055 beq.n 1970a else if(src_type == LV_IMG_SRC_FILE || src_type == LV_IMG_SRC_SYMBOL) { 1965e: 1e7b subs r3, r7, #1 19660: b2db uxtb r3, r3 19662: 2b01 cmp r3, #1 19664: d966 bls.n 19734 if(src_type == LV_IMG_SRC_SYMBOL) { 19666: 2f02 cmp r7, #2 19668: f000 8099 beq.w 1979e ext->src_type = src_type; 1966c: 7d21 ldrb r1, [r4, #20] 1966e: f367 0101 bfi r1, r7, #0, #2 ext->w = header.w; 19672: 9a05 ldr r2, [sp, #20] 19674: f3c2 228a ubfx r2, r2, #10, #11 19678: 8122 strh r2, [r4, #8] ext->h = header.h; 1967a: f8bd 3016 ldrh.w r3, [sp, #22] 1967e: f3c3 134a ubfx r3, r3, #5, #11 19682: 8163 strh r3, [r4, #10] ext->cf = header.cf; 19684: f89d 0014 ldrb.w r0, [sp, #20] 19688: f360 01c7 bfi r1, r0, #3, #5 1968c: 7521 strb r1, [r4, #20] ext->pivot.x = header.w / 2; 1968e: f3c2 0249 ubfx r2, r2, #1, #10 19692: 81e2 strh r2, [r4, #14] ext->pivot.y = header.h / 2; 19694: f3c3 0349 ubfx r3, r3, #1, #10 19698: 8223 strh r3, [r4, #16] if(lv_img_get_auto_size(img) != false) { 1969a: 4628 mov r0, r5 1969c: 4b64 ldr r3, [pc, #400] ; (19830 ) 1969e: 4798 blx r3 196a0: 2800 cmp r0, #0 196a2: f040 80aa bne.w 197fa if(ext->angle || ext->zoom != LV_IMG_ZOOM_NONE) lv_obj_refresh_ext_draw_pad(img); 196a6: 89a3 ldrh r3, [r4, #12] 196a8: b91b cbnz r3, 196b2 196aa: 8a63 ldrh r3, [r4, #18] 196ac: f5b3 7f80 cmp.w r3, #256 ; 0x100 196b0: d002 beq.n 196b8 196b2: 4628 mov r0, r5 196b4: 4b5f ldr r3, [pc, #380] ; (19834 ) 196b6: 4798 blx r3 lv_obj_invalidate(img); 196b8: 4628 mov r0, r5 196ba: 4b5f ldr r3, [pc, #380] ; (19838 ) 196bc: 4798 blx r3 } 196be: b006 add sp, #24 196c0: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} LV_LOG_WARN("lv_img_set_src: unknown type"); 196c4: 4b5d ldr r3, [pc, #372] ; (1983c ) 196c6: 9300 str r3, [sp, #0] 196c8: 4b51 ldr r3, [pc, #324] ; (19810 ) 196ca: 22a0 movs r2, #160 ; 0xa0 196cc: 4951 ldr r1, [pc, #324] ; (19814 ) 196ce: 2002 movs r0, #2 196d0: f8df 8144 ldr.w r8, [pc, #324] ; 19818 196d4: 47c0 blx r8 196d6: e7ba b.n 1964e LV_LOG_WARN("lv_img_set_src: unknown image type"); 196d8: 4b59 ldr r3, [pc, #356] ; (19840 ) 196da: 9300 str r3, [sp, #0] 196dc: 4b4c ldr r3, [pc, #304] ; (19810 ) 196de: 22a6 movs r2, #166 ; 0xa6 196e0: 494c ldr r1, [pc, #304] ; (19814 ) 196e2: 2002 movs r0, #2 196e4: 4d4c ldr r5, [pc, #304] ; (19818 ) 196e6: 47a8 blx r5 if(ext->src_type == LV_IMG_SRC_SYMBOL || ext->src_type == LV_IMG_SRC_FILE) { 196e8: 7d23 ldrb r3, [r4, #20] 196ea: f003 0303 and.w r3, r3, #3 196ee: 3b01 subs r3, #1 196f0: b2db uxtb r3, r3 196f2: 2b01 cmp r3, #1 196f4: d802 bhi.n 196fc lv_mem_free(ext->src); 196f6: 6820 ldr r0, [r4, #0] 196f8: 4b52 ldr r3, [pc, #328] ; (19844 ) 196fa: 4798 blx r3 ext->src = NULL; 196fc: 2300 movs r3, #0 196fe: 6023 str r3, [r4, #0] ext->src_type = LV_IMG_SRC_UNKNOWN; 19700: 7d23 ldrb r3, [r4, #20] 19702: f043 0303 orr.w r3, r3, #3 19706: 7523 strb r3, [r4, #20] return; 19708: e7d9 b.n 196be LV_LOG_INFO("lv_img_set_src: `LV_IMG_SRC_VARIABLE` type found"); 1970a: 4b4f ldr r3, [pc, #316] ; (19848 ) 1970c: 9300 str r3, [sp, #0] 1970e: 4b40 ldr r3, [pc, #256] ; (19810 ) 19710: 22b4 movs r2, #180 ; 0xb4 19712: 4940 ldr r1, [pc, #256] ; (19814 ) 19714: 2001 movs r0, #1 19716: f8df 8100 ldr.w r8, [pc, #256] ; 19818 1971a: 47c0 blx r8 if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_SYMBOL) { 1971c: 7d23 ldrb r3, [r4, #20] 1971e: f003 0303 and.w r3, r3, #3 19722: 3b01 subs r3, #1 19724: b2db uxtb r3, r3 19726: 2b01 cmp r3, #1 19728: d802 bhi.n 19730 lv_mem_free(ext->src); 1972a: 6820 ldr r0, [r4, #0] 1972c: 4b45 ldr r3, [pc, #276] ; (19844 ) 1972e: 4798 blx r3 ext->src = src_img; 19730: 6026 str r6, [r4, #0] 19732: e79b b.n 1966c if(ext->src != src_img) { 19734: f8d4 8000 ldr.w r8, [r4] 19738: 4546 cmp r6, r8 1973a: d094 beq.n 19666 if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_SYMBOL) { 1973c: 7d23 ldrb r3, [r4, #20] 1973e: f003 0303 and.w r3, r3, #3 19742: 3b01 subs r3, #1 19744: b2db uxtb r3, r3 const void * old_src = NULL; 19746: 2b02 cmp r3, #2 19748: bf28 it cs 1974a: f04f 0800 movcs.w r8, #0 char * new_str = lv_mem_alloc(strlen(src_img) + 1); 1974e: 4630 mov r0, r6 19750: 4b3e ldr r3, [pc, #248] ; (1984c ) 19752: 4798 blx r3 19754: 3001 adds r0, #1 19756: 4b3e ldr r3, [pc, #248] ; (19850 ) 19758: 4798 blx r3 1975a: 4681 mov r9, r0 LV_ASSERT_MEM(new_str); 1975c: 4b2b ldr r3, [pc, #172] ; (1980c ) 1975e: 4798 blx r3 19760: b960 cbnz r0, 1977c 19762: 4b2b ldr r3, [pc, #172] ; (19810 ) 19764: 9300 str r3, [sp, #0] 19766: 22c7 movs r2, #199 ; 0xc7 19768: 492a ldr r1, [pc, #168] ; (19814 ) 1976a: 2003 movs r0, #3 1976c: 4c2a ldr r4, [pc, #168] ; (19818 ) 1976e: 47a0 blx r4 19770: 464a mov r2, r9 19772: 2300 movs r3, #0 19774: 4837 ldr r0, [pc, #220] ; (19854 ) 19776: 492a ldr r1, [pc, #168] ; (19820 ) 19778: 4788 blx r1 1977a: e7fe b.n 1977a if(new_str == NULL) return; 1977c: f1b9 0f00 cmp.w r9, #0 19780: d09d beq.n 196be strcpy(new_str, src_img); 19782: 4631 mov r1, r6 19784: 4648 mov r0, r9 19786: 4b34 ldr r3, [pc, #208] ; (19858 ) 19788: 4798 blx r3 ext->src = new_str; 1978a: f8c4 9000 str.w r9, [r4] if(old_src) lv_mem_free(old_src); 1978e: f1b8 0f00 cmp.w r8, #0 19792: f43f af68 beq.w 19666 19796: 4640 mov r0, r8 19798: 4b2a ldr r3, [pc, #168] ; (19844 ) 1979a: 4798 blx r3 1979c: e763 b.n 19666 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 1979e: f248 028e movw r2, #32910 ; 0x808e 197a2: 2100 movs r1, #0 197a4: 4628 mov r0, r5 197a6: 4b2d ldr r3, [pc, #180] ; (1985c ) 197a8: 4798 blx r3 197aa: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 197ac: f248 0280 movw r2, #32896 ; 0x8080 197b0: 2100 movs r1, #0 197b2: 4628 mov r0, r5 197b4: f8df 80b0 ldr.w r8, [pc, #176] ; 19868 197b8: 47c0 blx r8 197ba: 4682 mov sl, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 197bc: f248 0281 movw r2, #32897 ; 0x8081 197c0: 2100 movs r1, #0 197c2: 4628 mov r0, r5 197c4: 47c0 blx r8 _lv_txt_get_size(&size, src_img, font, letter_space, line_space, 197c6: 2300 movs r3, #0 197c8: 9302 str r3, [sp, #8] 197ca: f647 4318 movw r3, #31768 ; 0x7c18 197ce: 9301 str r3, [sp, #4] 197d0: 9000 str r0, [sp, #0] 197d2: 4653 mov r3, sl 197d4: 464a mov r2, r9 197d6: 4631 mov r1, r6 197d8: a804 add r0, sp, #16 197da: 4e21 ldr r6, [pc, #132] ; (19860 ) 197dc: 47b0 blx r6 header.w = size.x; 197de: 9b05 ldr r3, [sp, #20] 197e0: f8bd 2010 ldrh.w r2, [sp, #16] 197e4: f362 2394 bfi r3, r2, #10, #11 197e8: 9305 str r3, [sp, #20] header.h = size.y; 197ea: 0c1b lsrs r3, r3, #16 197ec: f8bd 2012 ldrh.w r2, [sp, #18] 197f0: f362 134f bfi r3, r2, #5, #11 197f4: f8ad 3016 strh.w r3, [sp, #22] 197f8: e738 b.n 1966c lv_obj_set_size(img, ext->w, ext->h); 197fa: f9b4 200a ldrsh.w r2, [r4, #10] 197fe: f9b4 1008 ldrsh.w r1, [r4, #8] 19802: 4628 mov r0, r5 19804: 4b17 ldr r3, [pc, #92] ; (19864 ) 19806: 4798 blx r3 19808: e74d b.n 196a6 1980a: bf00 nop 1980c: 000022b1 .word 0x000022b1 19810: 00029620 .word 0x00029620 19814: 000296b8 .word 0x000296b8 19818: 0001225d .word 0x0001225d 1981c: 0002483c .word 0x0002483c 19820: 000022b9 .word 0x000022b9 19824: 00009969 .word 0x00009969 19828: 00004d9d .word 0x00004d9d 1982c: 0000fded .word 0x0000fded 19830: 000195bd .word 0x000195bd 19834: 00002c2d .word 0x00002c2d 19838: 00003321 .word 0x00003321 1983c: 000296e4 .word 0x000296e4 19840: 00029704 .word 0x00029704 19844: 000124c5 .word 0x000124c5 19848: 00029728 .word 0x00029728 1984c: 0001b51f .word 0x0001b51f 19850: 000123dd .word 0x000123dd 19854: 00023fd8 .word 0x00023fd8 19858: 0001b50f .word 0x0001b50f 1985c: 000046a1 .word 0x000046a1 19860: 0001407d .word 0x0001407d 19864: 000042a1 .word 0x000042a1 19868: 000044d5 .word 0x000044d5 0001986c : { 1986c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 19870: b082 sub sp, #8 19872: 4680 mov r8, r0 19874: 460f mov r7, r1 lv_obj_t * img = lv_obj_create(par, copy); 19876: 4b58 ldr r3, [pc, #352] ; (199d8 ) 19878: 4798 blx r3 1987a: 4605 mov r5, r0 LV_ASSERT_MEM(img); 1987c: 4b57 ldr r3, [pc, #348] ; (199dc ) 1987e: 4798 blx r3 19880: b1d0 cbz r0, 198b8 if(img == NULL) return NULL; 19882: 2d00 cmp r5, #0 19884: f000 8086 beq.w 19994 if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(img); 19888: 4b55 ldr r3, [pc, #340] ; (199e0 ) 1988a: 681b ldr r3, [r3, #0] 1988c: b30b cbz r3, 198d2 lv_img_ext_t * ext = lv_obj_allocate_ext_attr(img, sizeof(lv_img_ext_t)); 1988e: 2118 movs r1, #24 19890: 4628 mov r0, r5 19892: 4b54 ldr r3, [pc, #336] ; (199e4 ) 19894: 4798 blx r3 19896: 4604 mov r4, r0 LV_ASSERT_MEM(ext); 19898: 4b50 ldr r3, [pc, #320] ; (199dc ) 1989a: 4798 blx r3 1989c: b9f8 cbnz r0, 198de 1989e: 4b52 ldr r3, [pc, #328] ; (199e8 ) 198a0: 9300 str r3, [sp, #0] 198a2: 2249 movs r2, #73 ; 0x49 198a4: 4951 ldr r1, [pc, #324] ; (199ec ) 198a6: 2003 movs r0, #3 198a8: 4d51 ldr r5, [pc, #324] ; (199f0 ) 198aa: 47a8 blx r5 198ac: 4622 mov r2, r4 198ae: 2300 movs r3, #0 198b0: 4850 ldr r0, [pc, #320] ; (199f4 ) 198b2: 4951 ldr r1, [pc, #324] ; (199f8 ) 198b4: 4788 blx r1 198b6: e7fe b.n 198b6 LV_ASSERT_MEM(img); 198b8: 4b4b ldr r3, [pc, #300] ; (199e8 ) 198ba: 9300 str r3, [sp, #0] 198bc: 2242 movs r2, #66 ; 0x42 198be: 494b ldr r1, [pc, #300] ; (199ec ) 198c0: 2003 movs r0, #3 198c2: 4c4b ldr r4, [pc, #300] ; (199f0 ) 198c4: 47a0 blx r4 198c6: 462a mov r2, r5 198c8: 2300 movs r3, #0 198ca: 484a ldr r0, [pc, #296] ; (199f4 ) 198cc: 494a ldr r1, [pc, #296] ; (199f8 ) 198ce: 4788 blx r1 198d0: e7fe b.n 198d0 if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(img); 198d2: 4628 mov r0, r5 198d4: 4b49 ldr r3, [pc, #292] ; (199fc ) 198d6: 4798 blx r3 198d8: 4b41 ldr r3, [pc, #260] ; (199e0 ) 198da: 6018 str r0, [r3, #0] 198dc: e7d7 b.n 1988e if(ext == NULL) { 198de: 2c00 cmp r4, #0 198e0: d05c beq.n 1999c ext->src = NULL; 198e2: 2600 movs r6, #0 198e4: 6026 str r6, [r4, #0] ext->src_type = LV_IMG_SRC_UNKNOWN; 198e6: 7d23 ldrb r3, [r4, #20] ext->cf = LV_IMG_CF_UNKNOWN; 198e8: f043 0303 orr.w r3, r3, #3 198ec: f366 03c7 bfi r3, r6, #3, #5 198f0: 7523 strb r3, [r4, #20] ext->w = lv_obj_get_width(img); 198f2: 4628 mov r0, r5 198f4: 4b42 ldr r3, [pc, #264] ; (19a00 ) 198f6: 4798 blx r3 198f8: 8120 strh r0, [r4, #8] ext->h = lv_obj_get_height(img); 198fa: 4628 mov r0, r5 198fc: 4b41 ldr r3, [pc, #260] ; (19a04 ) 198fe: 4798 blx r3 19900: 8160 strh r0, [r4, #10] ext->angle = 0; 19902: 81a6 strh r6, [r4, #12] ext->zoom = LV_IMG_ZOOM_NONE; 19904: f44f 7380 mov.w r3, #256 ; 0x100 19908: 8263 strh r3, [r4, #18] ext->antialias = LV_ANTIALIAS ? 1 : 0; 1990a: 7d63 ldrb r3, [r4, #21] 1990c: f043 0301 orr.w r3, r3, #1 19910: 7563 strb r3, [r4, #21] ext->auto_size = 1; 19912: 7d23 ldrb r3, [r4, #20] 19914: f043 0304 orr.w r3, r3, #4 19918: 7523 strb r3, [r4, #20] ext->offset.x = 0; 1991a: 80a6 strh r6, [r4, #4] ext->offset.y = 0; 1991c: 80e6 strh r6, [r4, #6] ext->pivot.x = 0; 1991e: 81e6 strh r6, [r4, #14] ext->pivot.y = 0; 19920: 8226 strh r6, [r4, #16] lv_obj_set_signal_cb(img, lv_img_signal); 19922: 4939 ldr r1, [pc, #228] ; (19a08 ) 19924: 4628 mov r0, r5 19926: 4b39 ldr r3, [pc, #228] ; (19a0c ) 19928: 4798 blx r3 lv_obj_set_design_cb(img, lv_img_design); 1992a: 4939 ldr r1, [pc, #228] ; (19a10 ) 1992c: 4628 mov r0, r5 1992e: 4b39 ldr r3, [pc, #228] ; (19a14 ) 19930: 4798 blx r3 if(copy == NULL) { 19932: 2f00 cmp r7, #0 19934: d037 beq.n 199a6 lv_img_ext_t * copy_ext = lv_obj_get_ext_attr(copy); 19936: 4638 mov r0, r7 19938: 4b37 ldr r3, [pc, #220] ; (19a18 ) 1993a: 4798 blx r3 ext->auto_size = copy_ext->auto_size; 1993c: 7d03 ldrb r3, [r0, #20] 1993e: f3c3 0380 ubfx r3, r3, #2, #1 19942: 7d22 ldrb r2, [r4, #20] 19944: f363 0282 bfi r2, r3, #2, #1 19948: 7522 strb r2, [r4, #20] ext->zoom = copy_ext->zoom; 1994a: 8a43 ldrh r3, [r0, #18] 1994c: 8263 strh r3, [r4, #18] ext->angle = copy_ext->angle; 1994e: 8983 ldrh r3, [r0, #12] 19950: 81a3 strh r3, [r4, #12] ext->antialias = copy_ext->antialias; 19952: 7d42 ldrb r2, [r0, #21] 19954: 7d63 ldrb r3, [r4, #21] 19956: f362 0300 bfi r3, r2, #0, #1 1995a: 7563 strb r3, [r4, #21] ext->offset.x = copy_ext->offset.x; 1995c: f9b0 3004 ldrsh.w r3, [r0, #4] 19960: 80a3 strh r3, [r4, #4] ext->offset.y = copy_ext->offset.y; 19962: f9b0 3006 ldrsh.w r3, [r0, #6] 19966: 80e3 strh r3, [r4, #6] ext->pivot.x = copy_ext->pivot.x; 19968: f9b0 300e ldrsh.w r3, [r0, #14] 1996c: 81e3 strh r3, [r4, #14] ext->pivot.y = copy_ext->pivot.y; 1996e: f9b0 3010 ldrsh.w r3, [r0, #16] 19972: 8223 strh r3, [r4, #16] lv_img_set_src(img, copy_ext->src); 19974: 6801 ldr r1, [r0, #0] 19976: 4628 mov r0, r5 19978: 4b28 ldr r3, [pc, #160] ; (19a1c ) 1997a: 4798 blx r3 lv_obj_refresh_style(img, LV_STYLE_PROP_ALL); 1997c: 21ff movs r1, #255 ; 0xff 1997e: 4628 mov r0, r5 19980: 4b27 ldr r3, [pc, #156] ; (19a20 ) 19982: 4798 blx r3 LV_LOG_INFO("image created"); 19984: 4b27 ldr r3, [pc, #156] ; (19a24 ) 19986: 9300 str r3, [sp, #0] 19988: 4b17 ldr r3, [pc, #92] ; (199e8 ) 1998a: 227f movs r2, #127 ; 0x7f 1998c: 4917 ldr r1, [pc, #92] ; (199ec ) 1998e: 2001 movs r0, #1 19990: 4c17 ldr r4, [pc, #92] ; (199f0 ) 19992: 47a0 blx r4 } 19994: 4628 mov r0, r5 19996: b002 add sp, #8 19998: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} lv_obj_del(img); 1999c: 4628 mov r0, r5 1999e: 4b22 ldr r3, [pc, #136] ; (19a28 ) 199a0: 4798 blx r3 return NULL; 199a2: 2500 movs r5, #0 199a4: e7f6 b.n 19994 lv_theme_apply(img, LV_THEME_IMAGE); 199a6: 210f movs r1, #15 199a8: 4628 mov r0, r5 199aa: 4b20 ldr r3, [pc, #128] ; (19a2c ) 199ac: 4798 blx r3 lv_obj_set_click(img, false); 199ae: 4631 mov r1, r6 199b0: 4628 mov r0, r5 199b2: 4b1f ldr r3, [pc, #124] ; (19a30 ) 199b4: 4798 blx r3 lv_obj_set_adv_hittest(img, true); /*Images have fast hit-testing*/ 199b6: 2101 movs r1, #1 199b8: 4628 mov r0, r5 199ba: 4b1e ldr r3, [pc, #120] ; (19a34 ) 199bc: 4798 blx r3 if(par != NULL) { 199be: f1b8 0f00 cmp.w r8, #0 199c2: d004 beq.n 199ce ext->auto_size = 1; 199c4: 7d23 ldrb r3, [r4, #20] 199c6: f043 0304 orr.w r3, r3, #4 199ca: 7523 strb r3, [r4, #20] 199cc: e7da b.n 19984 ext->auto_size = 0; 199ce: 7d23 ldrb r3, [r4, #20] 199d0: f36f 0382 bfc r3, #2, #1 199d4: 7523 strb r3, [r4, #20] 199d6: e7d5 b.n 19984 199d8: 00003e25 .word 0x00003e25 199dc: 000022b1 .word 0x000022b1 199e0: 20006bfc .word 0x20006bfc 199e4: 00002bd1 .word 0x00002bd1 199e8: 00029630 .word 0x00029630 199ec: 000296b8 .word 0x000296b8 199f0: 0001225d .word 0x0001225d 199f4: 00023fd8 .word 0x00023fd8 199f8: 000022b9 .word 0x000022b9 199fc: 00004d55 .word 0x00004d55 19a00: 00002f5d .word 0x00002f5d 19a04: 00002fad .word 0x00002fad 19a08: 00019a39 .word 0x00019a39 19a0c: 00002b2d .word 0x00002b2d 19a10: 0001911d .word 0x0001911d 19a14: 00002b89 .word 0x00002b89 19a18: 00004d9d .word 0x00004d9d 19a1c: 00019611 .word 0x00019611 19a20: 00003a99 .word 0x00003a99 19a24: 0002975c .word 0x0002975c 19a28: 00004f65 .word 0x00004f65 19a2c: 000141e9 .word 0x000141e9 19a30: 000029a1 .word 0x000029a1 19a34: 0000294d .word 0x0000294d 00019a38 : * @param sign a signal type from lv_signal_t enum * @param param pointer to a signal specific variable * @return LV_RES_OK: the object is not deleted in the function; LV_RES_INV: the object is deleted */ static lv_res_t lv_img_signal(lv_obj_t * img, lv_signal_t sign, void * param) { 19a38: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 19a3c: b085 sub sp, #20 19a3e: 4607 mov r7, r0 19a40: 4615 mov r5, r2 lv_res_t res; if(sign == LV_SIGNAL_GET_STYLE) { 19a42: 2908 cmp r1, #8 19a44: d021 beq.n 19a8a 19a46: 460c mov r4, r1 if(info->result != NULL) return LV_RES_OK; else return ancestor_signal(img, sign, param); } /* Include the ancient signal function */ res = ancestor_signal(img, sign, param); 19a48: 4b88 ldr r3, [pc, #544] ; (19c6c ) 19a4a: 681b ldr r3, [r3, #0] 19a4c: 4798 blx r3 19a4e: 4606 mov r6, r0 if(res != LV_RES_OK) return res; 19a50: 2801 cmp r0, #1 19a52: d121 bne.n 19a98 if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 19a54: 2c07 cmp r4, #7 19a56: d02d beq.n 19ab4 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 19a58: 4638 mov r0, r7 19a5a: 4b85 ldr r3, [pc, #532] ; (19c70 ) 19a5c: 4798 blx r3 19a5e: 4680 mov r8, r0 if(sign == LV_SIGNAL_CLEANUP) { 19a60: bb74 cbnz r4, 19ac0 if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_SYMBOL) { 19a62: 7d03 ldrb r3, [r0, #20] 19a64: f003 0303 and.w r3, r3, #3 19a68: 3b01 subs r3, #1 19a6a: b2db uxtb r3, r3 19a6c: 2b01 cmp r3, #1 19a6e: d813 bhi.n 19a98 lv_mem_free(ext->src); 19a70: 6800 ldr r0, [r0, #0] 19a72: 4b80 ldr r3, [pc, #512] ; (19c74 ) 19a74: 4798 blx r3 ext->src = NULL; 19a76: 2300 movs r3, #0 19a78: f8c8 3000 str.w r3, [r8] ext->src_type = LV_IMG_SRC_UNKNOWN; 19a7c: f898 3014 ldrb.w r3, [r8, #20] 19a80: f043 0303 orr.w r3, r3, #3 19a84: f888 3014 strb.w r3, [r8, #20] 19a88: e006 b.n 19a98 static lv_style_list_t * lv_img_get_style(lv_obj_t * img, uint8_t type) { lv_style_list_t * style_dsc_p; switch(type) { 19a8a: 7813 ldrb r3, [r2, #0] 19a8c: b943 cbnz r3, 19aa0 case LV_IMG_PART_MAIN: style_dsc_p = &img->style_list; 19a8e: f100 0328 add.w r3, r0, #40 ; 0x28 info->result = lv_img_get_style(img, info->part); 19a92: 606b str r3, [r5, #4] if(info->result != NULL) return LV_RES_OK; 19a94: 2601 movs r6, #1 19a96: b12b cbz r3, 19aa4 } 19a98: 4630 mov r0, r6 19a9a: b005 add sp, #20 19a9c: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} break; default: style_dsc_p = NULL; 19aa0: 2300 movs r3, #0 19aa2: e7f6 b.n 19a92 else return ancestor_signal(img, sign, param); 19aa4: 4b71 ldr r3, [pc, #452] ; (19c6c ) 19aa6: 681b ldr r3, [r3, #0] 19aa8: 462a mov r2, r5 19aaa: 2108 movs r1, #8 19aac: 4638 mov r0, r7 19aae: 4798 blx r3 19ab0: 4606 mov r6, r0 19ab2: e7f1 b.n 19a98 if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 19ab4: 4970 ldr r1, [pc, #448] ; (19c78 ) 19ab6: 4628 mov r0, r5 19ab8: 4b70 ldr r3, [pc, #448] ; (19c7c ) 19aba: 4798 blx r3 19abc: 4606 mov r6, r0 19abe: e7eb b.n 19a98 else if(sign == LV_SIGNAL_STYLE_CHG) { 19ac0: 2c04 cmp r4, #4 19ac2: d053 beq.n 19b6c else if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) { 19ac4: 2c06 cmp r4, #6 19ac6: d05b beq.n 19b80 else if(sign == LV_SIGNAL_HIT_TEST) { 19ac8: 2c0a cmp r4, #10 19aca: d1e5 bne.n 19a98 if(ext->zoom != 256 && ext->angle == 0) { 19acc: 8a43 ldrh r3, [r0, #18] 19ace: f5b3 7f80 cmp.w r3, #256 ; 0x100 19ad2: f000 80c5 beq.w 19c60 19ad6: 8982 ldrh r2, [r0, #12] 19ad8: 2a00 cmp r2, #0 19ada: f040 80c1 bne.w 19c60 19ade: 8aba ldrh r2, [r7, #20] 19ae0: 3201 adds r2, #1 19ae2: 8a39 ldrh r1, [r7, #16] 19ae4: 1a52 subs r2, r2, r1 lv_coord_t scaled_width = (origin_width * ext->zoom + 255) / 256; 19ae6: b212 sxth r2, r2 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 19ae8: 8af9 ldrh r1, [r7, #22] 19aea: 3101 adds r1, #1 19aec: 8a78 ldrh r0, [r7, #18] 19aee: 1a09 subs r1, r1, r0 lv_coord_t scaled_height = (origin_height * ext->zoom + 255) / 256; 19af0: b209 sxth r1, r1 lv_coord_t scaled_width = (origin_width * ext->zoom + 255) / 256; 19af2: fb03 f002 mul.w r0, r3, r2 19af6: 30ff adds r0, #255 ; 0xff 19af8: bf48 it mi 19afa: 30ff addmi r0, #255 ; 0xff lv_coord_t width_offset = (origin_width - scaled_width) / 2; 19afc: f340 200f sbfx r0, r0, #8, #16 19b00: 1a12 subs r2, r2, r0 19b02: eb02 72d2 add.w r2, r2, r2, lsr #31 19b06: 1054 asrs r4, r2, #1 lv_coord_t scaled_height = (origin_height * ext->zoom + 255) / 256; 19b08: fb01 f303 mul.w r3, r1, r3 19b0c: 33ff adds r3, #255 ; 0xff 19b0e: bf48 it mi 19b10: 33ff addmi r3, #255 ; 0xff lv_coord_t height_offset = (origin_height - scaled_height) / 2; 19b12: f343 230f sbfx r3, r3, #8, #16 19b16: 1acb subs r3, r1, r3 19b18: eb03 73d3 add.w r3, r3, r3, lsr #31 19b1c: 1058 asrs r0, r3, #1 19b1e: f107 030f add.w r3, r7, #15 19b22: 3717 adds r7, #23 * @param src pointer to the source buffer * @param len number of byte to copy */ LV_ATTRIBUTE_FAST_MEM static inline void * _lv_memcpy_small(void * dst, const void * src, size_t len) { uint8_t * d8 = (uint8_t *)dst; 19b24: aa02 add r2, sp, #8 const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; 19b26: f813 1f01 ldrb.w r1, [r3, #1]! 19b2a: f802 1b01 strb.w r1, [r2], #1 while(len) { 19b2e: 42bb cmp r3, r7 19b30: d1f9 bne.n 19b26 coords.x1 += width_offset; 19b32: b2a2 uxth r2, r4 19b34: f8bd 3008 ldrh.w r3, [sp, #8] 19b38: 4413 add r3, r2 19b3a: f8ad 3008 strh.w r3, [sp, #8] coords.x2 -= width_offset; 19b3e: f8bd 300c ldrh.w r3, [sp, #12] 19b42: 1a9a subs r2, r3, r2 19b44: f8ad 200c strh.w r2, [sp, #12] coords.y1 += height_offset; 19b48: b283 uxth r3, r0 19b4a: f8bd 200a ldrh.w r2, [sp, #10] 19b4e: 441a add r2, r3 19b50: f8ad 200a strh.w r2, [sp, #10] coords.y2 -= height_offset; 19b54: f8bd 200e ldrh.w r2, [sp, #14] 19b58: 1ad3 subs r3, r2, r3 19b5a: f8ad 300e strh.w r3, [sp, #14] info->result = _lv_area_is_point_on(&coords, info->point, 0); 19b5e: 2200 movs r2, #0 19b60: 6829 ldr r1, [r5, #0] 19b62: a802 add r0, sp, #8 19b64: 4b46 ldr r3, [pc, #280] ; (19c80 ) 19b66: 4798 blx r3 19b68: 7128 strb r0, [r5, #4] if(ext->zoom != 256 && ext->angle == 0) { 19b6a: e795 b.n 19a98 if(ext->src_type == LV_IMG_SRC_SYMBOL) { 19b6c: 7d03 ldrb r3, [r0, #20] 19b6e: f003 0303 and.w r3, r3, #3 19b72: 2b02 cmp r3, #2 19b74: d190 bne.n 19a98 lv_img_set_src(img, ext->src); 19b76: 6801 ldr r1, [r0, #0] 19b78: 4638 mov r0, r7 19b7a: 4b42 ldr r3, [pc, #264] ; (19c84 ) 19b7c: 4798 blx r3 19b7e: e78b b.n 19a98 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ZOOM, transform_zoom, lv_style_int_t, _int, scalar) 19b80: 2207 movs r2, #7 19b82: 2100 movs r1, #0 19b84: 4638 mov r0, r7 19b86: 4d40 ldr r5, [pc, #256] ; (19c88 ) 19b88: 47a8 blx r5 transf_zoom = (transf_zoom * ext->zoom) >> 8; 19b8a: f8b8 3012 ldrh.w r3, [r8, #18] 19b8e: fb00 f303 mul.w r3, r0, r3 19b92: 121c asrs r4, r3, #8 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ANGLE, transform_angle, lv_style_int_t, _int, scalar) 19b94: 2206 movs r2, #6 19b96: 2100 movs r1, #0 19b98: 4638 mov r0, r7 19b9a: 47a8 blx r5 transf_angle += ext->angle; 19b9c: f8b8 300c ldrh.w r3, [r8, #12] 19ba0: 4403 add r3, r0 19ba2: b21b sxth r3, r3 if(transf_angle || transf_zoom != LV_IMG_ZOOM_NONE) { 19ba4: b91b cbnz r3, 19bae 19ba6: b222 sxth r2, r4 19ba8: f5b2 7f80 cmp.w r2, #256 ; 0x100 19bac: d031 beq.n 19c12 _lv_img_buf_get_transformed_area(&a, ext->w, ext->h, transf_angle, transf_zoom, &ext->pivot); 19bae: f9b8 200a ldrsh.w r2, [r8, #10] 19bb2: f9b8 1008 ldrsh.w r1, [r8, #8] 19bb6: f108 000e add.w r0, r8, #14 19bba: 9001 str r0, [sp, #4] 19bbc: b2a4 uxth r4, r4 19bbe: 9400 str r4, [sp, #0] 19bc0: a802 add r0, sp, #8 19bc2: 4c32 ldr r4, [pc, #200] ; (19c8c ) 19bc4: 47a0 blx r4 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori - a.x1); 19bc6: f9b7 1032 ldrsh.w r1, [r7, #50] ; 0x32 19bca: f9bd 3008 ldrsh.w r3, [sp, #8] 19bce: 1acb subs r3, r1, r3 19bd0: 428b cmp r3, r1 19bd2: bfb8 it lt 19bd4: 460b movlt r3, r1 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori - a.y1); 19bd6: b21b sxth r3, r3 19bd8: f9bd 200a ldrsh.w r2, [sp, #10] 19bdc: 1a8a subs r2, r1, r2 19bde: 4293 cmp r3, r2 19be0: bfb8 it lt 19be2: 4613 movlt r3, r2 19be4: b21b sxth r3, r3 19be6: 867b strh r3, [r7, #50] ; 0x32 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori + a.x2 - ext->w); 19be8: f9bd 200c ldrsh.w r2, [sp, #12] 19bec: 440a add r2, r1 19bee: f9b8 0008 ldrsh.w r0, [r8, #8] 19bf2: 1a12 subs r2, r2, r0 19bf4: 4293 cmp r3, r2 19bf6: bfb8 it lt 19bf8: 4613 movlt r3, r2 19bfa: b21b sxth r3, r3 19bfc: 867b strh r3, [r7, #50] ; 0x32 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori + a.y2 - ext->h); 19bfe: f9bd 200e ldrsh.w r2, [sp, #14] 19c02: 440a add r2, r1 19c04: f9b8 100a ldrsh.w r1, [r8, #10] 19c08: 1a52 subs r2, r2, r1 19c0a: 4293 cmp r3, r2 19c0c: bfb8 it lt 19c0e: 4613 movlt r3, r2 19c10: 867b strh r3, [r7, #50] ; 0x32 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 19c12: 2212 movs r2, #18 19c14: 2100 movs r1, #0 19c16: 4638 mov r0, r7 19c18: f8df 806c ldr.w r8, [pc, #108] ; 19c88 19c1c: 47c0 blx r8 19c1e: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 19c20: 2213 movs r2, #19 19c22: 2100 movs r1, #0 19c24: 4638 mov r0, r7 19c26: 47c0 blx r8 19c28: 4604 mov r4, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 19c2a: 2210 movs r2, #16 19c2c: 2100 movs r1, #0 19c2e: 4638 mov r0, r7 19c30: 47c0 blx r8 19c32: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 19c34: 2211 movs r2, #17 19c36: 2100 movs r1, #0 19c38: 4638 mov r0, r7 19c3a: 47c0 blx r8 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, right); 19c3c: 454c cmp r4, r9 19c3e: bfb8 it lt 19c40: 464c movlt r4, r9 19c42: f9b7 3032 ldrsh.w r3, [r7, #50] ; 0x32 19c46: b222 sxth r2, r4 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, top); 19c48: 4293 cmp r3, r2 19c4a: bfb8 it lt 19c4c: 4613 movlt r3, r2 19c4e: 42ab cmp r3, r5 19c50: bfb8 it lt 19c52: 462b movlt r3, r5 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, bottom); 19c54: b21b sxth r3, r3 19c56: 4298 cmp r0, r3 19c58: bfb8 it lt 19c5a: 4618 movlt r0, r3 19c5c: 8678 strh r0, [r7, #50] ; 0x32 19c5e: e71b b.n 19a98 info->result = lv_obj_is_point_on_coords(img, info->point); 19c60: 6829 ldr r1, [r5, #0] 19c62: 4638 mov r0, r7 19c64: 4b0a ldr r3, [pc, #40] ; (19c90 ) 19c66: 4798 blx r3 19c68: 7128 strb r0, [r5, #4] 19c6a: e715 b.n 19a98 19c6c: 20006bfc .word 0x20006bfc 19c70: 00004d9d .word 0x00004d9d 19c74: 000124c5 .word 0x000124c5 19c78: 0002976c .word 0x0002976c 19c7c: 00005095 .word 0x00005095 19c80: 000115b9 .word 0x000115b9 19c84: 00019611 .word 0x00019611 19c88: 000044d5 .word 0x000044d5 19c8c: 0000ec65 .word 0x0000ec65 19c90: 00005055 .word 0x00005055 00019c94 : * Free the dot_tmp_ptr field if it was previously allocated. * Always clears the field * @param label pointer to label object. */ static void lv_label_dot_tmp_free(lv_obj_t * label) { 19c94: b510 push {r4, lr} lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19c96: 4b09 ldr r3, [pc, #36] ; (19cbc ) 19c98: 4798 blx r3 19c9a: 4604 mov r4, r0 if(ext->dot_tmp_alloc && ext->dot.tmp_ptr) { 19c9c: 7c43 ldrb r3, [r0, #17] 19c9e: f013 0f01 tst.w r3, #1 19ca2: d003 beq.n 19cac 19ca4: 6840 ldr r0, [r0, #4] 19ca6: b108 cbz r0, 19cac lv_mem_free(ext->dot.tmp_ptr); 19ca8: 4b05 ldr r3, [pc, #20] ; (19cc0 ) 19caa: 4798 blx r3 } ext->dot_tmp_alloc = false; 19cac: 7c63 ldrb r3, [r4, #17] 19cae: f36f 0300 bfc r3, #0, #1 19cb2: 7463 strb r3, [r4, #17] ext->dot.tmp_ptr = NULL; 19cb4: 2300 movs r3, #0 19cb6: 6063 str r3, [r4, #4] 19cb8: bd10 pop {r4, pc} 19cba: bf00 nop 19cbc: 00004d9d .word 0x00004d9d 19cc0: 000124c5 .word 0x000124c5 00019cc4 : { 19cc4: b5f8 push {r3, r4, r5, r6, r7, lr} 19cc6: 4607 mov r7, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19cc8: 4b1e ldr r3, [pc, #120] ; (19d44 ) 19cca: 4798 blx r3 if(ext->long_mode != LV_LABEL_LONG_DOT) return; 19ccc: 7c03 ldrb r3, [r0, #16] 19cce: f003 0307 and.w r3, r3, #7 19cd2: 2b02 cmp r3, #2 19cd4: d000 beq.n 19cd8 19cd6: bdf8 pop {r3, r4, r5, r6, r7, pc} 19cd8: 4604 mov r4, r0 if(ext->dot_end == LV_LABEL_DOT_END_INV) return; 19cda: 8901 ldrh r1, [r0, #8] 19cdc: f64f 73ff movw r3, #65535 ; 0xffff 19ce0: 4299 cmp r1, r3 19ce2: d0f8 beq.n 19cd6 uint32_t byte_i = _lv_txt_encoded_get_byte_id(ext->text, letter_i); 19ce4: 4b18 ldr r3, [pc, #96] ; (19d48 ) 19ce6: 681b ldr r3, [r3, #0] 19ce8: 3903 subs r1, #3 19cea: 6800 ldr r0, [r0, #0] 19cec: 4798 blx r3 19cee: 4606 mov r6, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19cf0: 4638 mov r0, r7 19cf2: 4b14 ldr r3, [pc, #80] ; (19d44 ) 19cf4: 4798 blx r3 if(ext->dot_tmp_alloc) { 19cf6: 7c43 ldrb r3, [r0, #17] 19cf8: f013 0f01 tst.w r3, #1 return ext->dot.tmp_ptr; 19cfc: bf14 ite ne 19cfe: 6840 ldrne r0, [r0, #4] return ext->dot.tmp; 19d00: 3004 addeq r0, #4 while(ext->text[byte_i + i] != '\0') { 19d02: 6823 ldr r3, [r4, #0] 19d04: eb03 0e06 add.w lr, r3, r6 19d08: 5d9b ldrb r3, [r3, r6] 19d0a: b1c3 cbz r3, 19d3e 19d0c: 2500 movs r5, #0 19d0e: 462b mov r3, r5 ext->text[byte_i + i] = dot_tmp[i]; 19d10: 5d42 ldrb r2, [r0, r5] 19d12: f88e 2000 strb.w r2, [lr] i++; 19d16: 3301 adds r3, #1 19d18: b2db uxtb r3, r3 while(ext->text[byte_i + i] != '\0') { 19d1a: 461d mov r5, r3 19d1c: 18f2 adds r2, r6, r3 19d1e: 6821 ldr r1, [r4, #0] 19d20: eb01 0e02 add.w lr, r1, r2 19d24: 5c8a ldrb r2, [r1, r2] 19d26: 2a00 cmp r2, #0 19d28: d1f2 bne.n 19d10 ext->text[byte_i + i] = dot_tmp[i]; 19d2a: 5d43 ldrb r3, [r0, r5] 19d2c: f88e 3000 strb.w r3, [lr] lv_label_dot_tmp_free(label); 19d30: 4638 mov r0, r7 19d32: 4b06 ldr r3, [pc, #24] ; (19d4c ) 19d34: 4798 blx r3 ext->dot_end = LV_LABEL_DOT_END_INV; 19d36: f64f 73ff movw r3, #65535 ; 0xffff 19d3a: 8123 strh r3, [r4, #8] 19d3c: e7cb b.n 19cd6 while(ext->text[byte_i + i] != '\0') { 19d3e: 2500 movs r5, #0 19d40: e7f3 b.n 19d2a 19d42: bf00 nop 19d44: 00004d9d .word 0x00004d9d 19d48: 2000005c .word 0x2000005c 19d4c: 00019c95 .word 0x00019c95 00019d50 : { 19d50: b538 push {r3, r4, r5, lr} 19d52: 4604 mov r4, r0 19d54: 460d mov r5, r1 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19d56: 4b03 ldr r3, [pc, #12] ; (19d64 ) 19d58: 4798 blx r3 ext->offset.y = y; 19d5a: 81c5 strh r5, [r0, #14] lv_obj_invalidate(label); 19d5c: 4620 mov r0, r4 19d5e: 4b02 ldr r3, [pc, #8] ; (19d68 ) 19d60: 4798 blx r3 19d62: bd38 pop {r3, r4, r5, pc} 19d64: 00004d9d .word 0x00004d9d 19d68: 00003321 .word 0x00003321 00019d6c : { 19d6c: b538 push {r3, r4, r5, lr} 19d6e: 4604 mov r4, r0 19d70: 460d mov r5, r1 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19d72: 4b03 ldr r3, [pc, #12] ; (19d80 ) 19d74: 4798 blx r3 ext->offset.x = x; 19d76: 8185 strh r5, [r0, #12] lv_obj_invalidate(label); 19d78: 4620 mov r0, r4 19d7a: 4b02 ldr r3, [pc, #8] ; (19d84 ) 19d7c: 4798 blx r3 19d7e: bd38 pop {r3, r4, r5, pc} 19d80: 00004d9d .word 0x00004d9d 19d84: 00003321 .word 0x00003321 00019d88 : } static void get_txt_coords(const lv_obj_t * label, lv_area_t * area) { 19d88: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 19d8c: 4606 mov r6, r0 19d8e: 460c mov r4, r1 lv_obj_get_coords(label, area); 19d90: 4b12 ldr r3, [pc, #72] ; (19ddc ) 19d92: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 19d94: 2212 movs r2, #18 19d96: 2100 movs r1, #0 19d98: 4630 mov r0, r6 19d9a: 4d11 ldr r5, [pc, #68] ; (19de0 ) 19d9c: 47a8 blx r5 19d9e: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 19da0: 2213 movs r2, #19 19da2: 2100 movs r1, #0 19da4: 4630 mov r0, r6 19da6: 47a8 blx r5 19da8: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 19daa: 2210 movs r2, #16 19dac: 2100 movs r1, #0 19dae: 4630 mov r0, r6 19db0: 47a8 blx r5 19db2: 4607 mov r7, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 19db4: 2211 movs r2, #17 19db6: 2100 movs r1, #0 19db8: 4630 mov r0, r6 19dba: 47a8 blx r5 lv_coord_t left = lv_obj_get_style_pad_left(label, LV_LABEL_PART_MAIN); lv_coord_t right = lv_obj_get_style_pad_right(label, LV_LABEL_PART_MAIN); lv_coord_t top = lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN); lv_coord_t bottom = lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN); area->x1 += left; 19dbc: 8823 ldrh r3, [r4, #0] 19dbe: 4498 add r8, r3 19dc0: f8a4 8000 strh.w r8, [r4] area->x2 -= right; 19dc4: 88a3 ldrh r3, [r4, #4] 19dc6: eba3 0309 sub.w r3, r3, r9 19dca: 80a3 strh r3, [r4, #4] area->y1 += top; 19dcc: 8863 ldrh r3, [r4, #2] 19dce: 441f add r7, r3 19dd0: 8067 strh r7, [r4, #2] area->y2 -= bottom; 19dd2: 88e3 ldrh r3, [r4, #6] 19dd4: 1a18 subs r0, r3, r0 19dd6: 80e0 strh r0, [r4, #6] 19dd8: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 19ddc: 00002e41 .word 0x00002e41 19de0: 000044d5 .word 0x000044d5 00019de4 : { 19de4: b5f0 push {r4, r5, r6, r7, lr} 19de6: b083 sub sp, #12 19de8: 4606 mov r6, r0 19dea: 460f mov r7, r1 19dec: 4615 mov r5, r2 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19dee: 4b18 ldr r3, [pc, #96] ; (19e50 ) 19df0: 4798 blx r3 19df2: 4604 mov r4, r0 lv_label_dot_tmp_free(label); /* Deallocate any existing space */ 19df4: 4630 mov r0, r6 19df6: 4b17 ldr r3, [pc, #92] ; (19e54 ) 19df8: 4798 blx r3 if(len > sizeof(char *)) { 19dfa: 2d04 cmp r5, #4 19dfc: d91c bls.n 19e38 ext->dot.tmp_ptr = lv_mem_alloc(len + 1); 19dfe: 1c68 adds r0, r5, #1 19e00: 4b15 ldr r3, [pc, #84] ; (19e58 ) 19e02: 4798 blx r3 19e04: 6060 str r0, [r4, #4] if(ext->dot.tmp_ptr == NULL) { 19e06: b160 cbz r0, 19e22 _lv_memcpy(ext->dot.tmp_ptr, data, len); 19e08: 462a mov r2, r5 19e0a: 4639 mov r1, r7 19e0c: 4b13 ldr r3, [pc, #76] ; (19e5c ) 19e0e: 4798 blx r3 ext->dot.tmp_ptr[len] = '\0'; 19e10: 6863 ldr r3, [r4, #4] 19e12: 2200 movs r2, #0 19e14: 555a strb r2, [r3, r5] ext->dot_tmp_alloc = true; 19e16: 7c63 ldrb r3, [r4, #17] 19e18: f043 0301 orr.w r3, r3, #1 19e1c: 7463 strb r3, [r4, #17] return true; 19e1e: 2001 movs r0, #1 19e20: e014 b.n 19e4c LV_LOG_ERROR("Failed to allocate memory for dot_tmp_ptr"); 19e22: 4b0f ldr r3, [pc, #60] ; (19e60 ) 19e24: 9300 str r3, [sp, #0] 19e26: 4b0f ldr r3, [pc, #60] ; (19e64 ) 19e28: f240 52b5 movw r2, #1461 ; 0x5b5 19e2c: 490e ldr r1, [pc, #56] ; (19e68 ) 19e2e: 2003 movs r0, #3 19e30: 4c0e ldr r4, [pc, #56] ; (19e6c ) 19e32: 47a0 blx r4 return false; 19e34: 2000 movs r0, #0 19e36: e009 b.n 19e4c ext->dot_tmp_alloc = false; 19e38: 7c63 ldrb r3, [r4, #17] 19e3a: f36f 0300 bfc r3, #0, #1 19e3e: 7463 strb r3, [r4, #17] _lv_memcpy(ext->dot.tmp, data, len); 19e40: 462a mov r2, r5 19e42: 4639 mov r1, r7 19e44: 1d20 adds r0, r4, #4 19e46: 4b05 ldr r3, [pc, #20] ; (19e5c ) 19e48: 4798 blx r3 return true; 19e4a: 2001 movs r0, #1 } 19e4c: b003 add sp, #12 19e4e: bdf0 pop {r4, r5, r6, r7, pc} 19e50: 00004d9d .word 0x00004d9d 19e54: 00019c95 .word 0x00019c95 19e58: 000123dd .word 0x000123dd 19e5c: 00012655 .word 0x00012655 19e60: 000299c4 .word 0x000299c4 19e64: 00029774 .word 0x00029774 19e68: 00029994 .word 0x00029994 19e6c: 0001225d .word 0x0001225d 00019e70 : { 19e70: b530 push {r4, r5, lr} 19e72: b083 sub sp, #12 19e74: 4604 mov r4, r0 19e76: 460d mov r5, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 19e78: 4b10 ldr r3, [pc, #64] ; (19ebc ) 19e7a: 4798 blx r3 19e7c: b968 cbnz r0, 19e9a 19e7e: 4b10 ldr r3, [pc, #64] ; (19ec0 ) 19e80: 9300 str r3, [sp, #0] 19e82: f44f 72c4 mov.w r2, #392 ; 0x188 19e86: 490f ldr r1, [pc, #60] ; (19ec4 ) 19e88: 2003 movs r0, #3 19e8a: 4d0f ldr r5, [pc, #60] ; (19ec8 ) 19e8c: 47a8 blx r5 19e8e: 4622 mov r2, r4 19e90: 2300 movs r3, #0 19e92: 480e ldr r0, [pc, #56] ; (19ecc ) 19e94: 490e ldr r1, [pc, #56] ; (19ed0 ) 19e96: 4788 blx r1 19e98: e7fe b.n 19e98 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19e9a: 4620 mov r0, r4 19e9c: 4b0d ldr r3, [pc, #52] ; (19ed4 ) 19e9e: 4798 blx r3 if(ext->align == align) return; 19ea0: 7c03 ldrb r3, [r0, #16] 19ea2: f3c3 1301 ubfx r3, r3, #4, #2 19ea6: 42ab cmp r3, r5 19ea8: d006 beq.n 19eb8 ext->align = align; 19eaa: 7c03 ldrb r3, [r0, #16] 19eac: f365 1305 bfi r3, r5, #4, #2 19eb0: 7403 strb r3, [r0, #16] lv_obj_invalidate(label); /*Enough to invalidate because alignment is only drawing related 19eb2: 4620 mov r0, r4 19eb4: 4b08 ldr r3, [pc, #32] ; (19ed8 ) 19eb6: 4798 blx r3 } 19eb8: b003 add sp, #12 19eba: bd30 pop {r4, r5, pc} 19ebc: 000022b1 .word 0x000022b1 19ec0: 0002978c .word 0x0002978c 19ec4: 00029994 .word 0x00029994 19ec8: 0001225d .word 0x0001225d 19ecc: 0002483c .word 0x0002483c 19ed0: 000022b9 .word 0x000022b9 19ed4: 00004d9d .word 0x00004d9d 19ed8: 00003321 .word 0x00003321 00019edc : { 19edc: b530 push {r4, r5, lr} 19ede: b083 sub sp, #12 19ee0: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 19ee2: 4b0b ldr r3, [pc, #44] ; (19f10 ) 19ee4: 4798 blx r3 19ee6: b968 cbnz r0, 19f04 19ee8: 4b0a ldr r3, [pc, #40] ; (19f14 ) 19eea: 9300 str r3, [sp, #0] 19eec: f44f 72f2 mov.w r2, #484 ; 0x1e4 19ef0: 4909 ldr r1, [pc, #36] ; (19f18 ) 19ef2: 2003 movs r0, #3 19ef4: 4d09 ldr r5, [pc, #36] ; (19f1c ) 19ef6: 47a8 blx r5 19ef8: 4622 mov r2, r4 19efa: 2300 movs r3, #0 19efc: 4808 ldr r0, [pc, #32] ; (19f20 ) 19efe: 4909 ldr r1, [pc, #36] ; (19f24 ) 19f00: 4788 blx r1 19f02: e7fe b.n 19f02 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19f04: 4620 mov r0, r4 19f06: 4b08 ldr r3, [pc, #32] ; (19f28 ) 19f08: 4798 blx r3 } 19f0a: 6800 ldr r0, [r0, #0] 19f0c: b003 add sp, #12 19f0e: bd30 pop {r4, r5, pc} 19f10: 000022b1 .word 0x000022b1 19f14: 000297d8 .word 0x000297d8 19f18: 00029994 .word 0x00029994 19f1c: 0001225d .word 0x0001225d 19f20: 0002483c .word 0x0002483c 19f24: 000022b9 .word 0x000022b9 19f28: 00004d9d .word 0x00004d9d 00019f2c : { 19f2c: b530 push {r4, r5, lr} 19f2e: b083 sub sp, #12 19f30: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 19f32: 4b0c ldr r3, [pc, #48] ; (19f64 ) 19f34: 4798 blx r3 19f36: b968 cbnz r0, 19f54 19f38: 4b0b ldr r3, [pc, #44] ; (19f68 ) 19f3a: 9300 str r3, [sp, #0] 19f3c: f44f 72f9 mov.w r2, #498 ; 0x1f2 19f40: 490a ldr r1, [pc, #40] ; (19f6c ) 19f42: 2003 movs r0, #3 19f44: 4d0a ldr r5, [pc, #40] ; (19f70 ) 19f46: 47a8 blx r5 19f48: 4622 mov r2, r4 19f4a: 2300 movs r3, #0 19f4c: 4809 ldr r0, [pc, #36] ; (19f74 ) 19f4e: 490a ldr r1, [pc, #40] ; (19f78 ) 19f50: 4788 blx r1 19f52: e7fe b.n 19f52 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19f54: 4620 mov r0, r4 19f56: 4b09 ldr r3, [pc, #36] ; (19f7c ) 19f58: 4798 blx r3 return ext->long_mode; 19f5a: 7c00 ldrb r0, [r0, #16] } 19f5c: f000 0007 and.w r0, r0, #7 19f60: b003 add sp, #12 19f62: bd30 pop {r4, r5, pc} 19f64: 000022b1 .word 0x000022b1 19f68: 000297ec .word 0x000297ec 19f6c: 00029994 .word 0x00029994 19f70: 0001225d .word 0x0001225d 19f74: 0002483c .word 0x0002483c 19f78: 000022b9 .word 0x000022b9 19f7c: 00004d9d .word 0x00004d9d 00019f80 : { 19f80: b530 push {r4, r5, lr} 19f82: b083 sub sp, #12 19f84: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 19f86: 4b0e ldr r3, [pc, #56] ; (19fc0 ) 19f88: 4798 blx r3 19f8a: b968 cbnz r0, 19fa8 19f8c: 4b0d ldr r3, [pc, #52] ; (19fc4 ) 19f8e: 9300 str r3, [sp, #0] 19f90: f240 12ff movw r2, #511 ; 0x1ff 19f94: 490c ldr r1, [pc, #48] ; (19fc8 ) 19f96: 2003 movs r0, #3 19f98: 4d0c ldr r5, [pc, #48] ; (19fcc ) 19f9a: 47a8 blx r5 19f9c: 4622 mov r2, r4 19f9e: 2300 movs r3, #0 19fa0: 480b ldr r0, [pc, #44] ; (19fd0 ) 19fa2: 490c ldr r1, [pc, #48] ; (19fd4 ) 19fa4: 4788 blx r1 19fa6: e7fe b.n 19fa6 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19fa8: 4620 mov r0, r4 19faa: 4b0b ldr r3, [pc, #44] ; (19fd8 ) 19fac: 4798 blx r3 lv_label_align_t align = ext->align; 19fae: 7c00 ldrb r0, [r0, #16] 19fb0: f3c0 1001 ubfx r0, r0, #4, #2 align = LV_LABEL_ALIGN_LEFT; 19fb4: 2803 cmp r0, #3 } 19fb6: bf08 it eq 19fb8: 2000 moveq r0, #0 19fba: b003 add sp, #12 19fbc: bd30 pop {r4, r5, pc} 19fbe: bf00 nop 19fc0: 000022b1 .word 0x000022b1 19fc4: 00029804 .word 0x00029804 19fc8: 00029994 .word 0x00029994 19fcc: 0001225d .word 0x0001225d 19fd0: 0002483c .word 0x0002483c 19fd4: 000022b9 .word 0x000022b9 19fd8: 00004d9d .word 0x00004d9d 00019fdc : { 19fdc: b530 push {r4, r5, lr} 19fde: b083 sub sp, #12 19fe0: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 19fe2: 4b0c ldr r3, [pc, #48] ; (1a014 ) 19fe4: 4798 blx r3 19fe6: b968 cbnz r0, 1a004 19fe8: 4b0b ldr r3, [pc, #44] ; (1a018 ) 19fea: 9300 str r3, [sp, #0] 19fec: f240 221b movw r2, #539 ; 0x21b 19ff0: 490a ldr r1, [pc, #40] ; (1a01c ) 19ff2: 2003 movs r0, #3 19ff4: 4d0a ldr r5, [pc, #40] ; (1a020 ) 19ff6: 47a8 blx r5 19ff8: 4622 mov r2, r4 19ffa: 2300 movs r3, #0 19ffc: 4809 ldr r0, [pc, #36] ; (1a024 ) 19ffe: 490a ldr r1, [pc, #40] ; (1a028 ) 1a000: 4788 blx r1 1a002: e7fe b.n 1a002 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1a004: 4620 mov r0, r4 1a006: 4b09 ldr r3, [pc, #36] ; (1a02c ) 1a008: 4798 blx r3 return ext->recolor == 0 ? false : true; 1a00a: 7c00 ldrb r0, [r0, #16] } 1a00c: f3c0 1080 ubfx r0, r0, #6, #1 1a010: b003 add sp, #12 1a012: bd30 pop {r4, r5, pc} 1a014: 000022b1 .word 0x000022b1 1a018: 00029818 .word 0x00029818 1a01c: 00029994 .word 0x00029994 1a020: 0001225d .word 0x0001225d 1a024: 0002483c .word 0x0002483c 1a028: 000022b9 .word 0x000022b9 1a02c: 00004d9d .word 0x00004d9d 0001a030 : { 1a030: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 1a034: b08f sub sp, #60 ; 0x3c 1a036: 4605 mov r5, r0 1a038: 9105 str r1, [sp, #20] LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1a03a: 4b9e ldr r3, [pc, #632] ; (1a2b4 ) 1a03c: 4798 blx r3 1a03e: b968 cbnz r0, 1a05c 1a040: 4b9d ldr r3, [pc, #628] ; (1a2b8 ) 1a042: 9300 str r3, [sp, #0] 1a044: f240 22a5 movw r2, #677 ; 0x2a5 1a048: 499c ldr r1, [pc, #624] ; (1a2bc ) 1a04a: 2003 movs r0, #3 1a04c: 4c9c ldr r4, [pc, #624] ; (1a2c0 ) 1a04e: 47a0 blx r4 1a050: 462a mov r2, r5 1a052: 2300 movs r3, #0 1a054: 489b ldr r0, [pc, #620] ; (1a2c4 ) 1a056: 499c ldr r1, [pc, #624] ; (1a2c8 ) 1a058: 4788 blx r1 1a05a: e7fe b.n 1a05a LV_ASSERT_NULL(pos); 1a05c: 9e05 ldr r6, [sp, #20] 1a05e: 4630 mov r0, r6 1a060: 4b94 ldr r3, [pc, #592] ; (1a2b4 ) 1a062: 4798 blx r3 1a064: b968 cbnz r0, 1a082 1a066: 4b94 ldr r3, [pc, #592] ; (1a2b8 ) 1a068: 9300 str r3, [sp, #0] 1a06a: f240 22a6 movw r2, #678 ; 0x2a6 1a06e: 4993 ldr r1, [pc, #588] ; (1a2bc ) 1a070: 2003 movs r0, #3 1a072: 4c93 ldr r4, [pc, #588] ; (1a2c0 ) 1a074: 47a0 blx r4 1a076: 4632 mov r2, r6 1a078: 2300 movs r3, #0 1a07a: 4892 ldr r0, [pc, #584] ; (1a2c4 ) 1a07c: 4992 ldr r1, [pc, #584] ; (1a2c8 ) 1a07e: 4788 blx r1 1a080: e7fe b.n 1a080 get_txt_coords(label, &txt_coords); 1a082: a90c add r1, sp, #48 ; 0x30 1a084: 4628 mov r0, r5 1a086: 4b91 ldr r3, [pc, #580] ; (1a2cc ) 1a088: 4798 blx r3 const char * txt = lv_label_get_text(label); 1a08a: 4628 mov r0, r5 1a08c: 4b90 ldr r3, [pc, #576] ; (1a2d0 ) 1a08e: 4798 blx r3 1a090: 4607 mov r7, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1a092: 4628 mov r0, r5 1a094: 4b8f ldr r3, [pc, #572] ; (1a2d4 ) 1a096: 4798 blx r3 1a098: 4606 mov r6, r0 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1a09a: f8bd 3034 ldrh.w r3, [sp, #52] ; 0x34 1a09e: 3301 adds r3, #1 1a0a0: f8bd 2030 ldrh.w r2, [sp, #48] ; 0x30 1a0a4: 1a9b subs r3, r3, r2 1a0a6: b21b sxth r3, r3 1a0a8: 9306 str r3, [sp, #24] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 1a0aa: f248 028e movw r2, #32910 ; 0x808e 1a0ae: 2100 movs r1, #0 1a0b0: 4628 mov r0, r5 1a0b2: 4b89 ldr r3, [pc, #548] ; (1a2d8 ) 1a0b4: 4798 blx r3 1a0b6: 4681 mov r9, r0 1a0b8: 9003 str r0, [sp, #12] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 1a0ba: f248 0281 movw r2, #32897 ; 0x8081 1a0be: 2100 movs r1, #0 1a0c0: 4628 mov r0, r5 1a0c2: f8df 8230 ldr.w r8, [pc, #560] ; 1a2f4 1a0c6: 47c0 blx r8 1a0c8: 4604 mov r4, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 1a0ca: f248 0280 movw r2, #32896 ; 0x8080 1a0ce: 2100 movs r1, #0 1a0d0: 4628 mov r0, r5 1a0d2: 47c0 blx r8 1a0d4: 9004 str r0, [sp, #16] * @param font_p pointer to a font * @return the height of a font */ static inline lv_coord_t lv_font_get_line_height(const lv_font_t * font_p) { return font_p->line_height; 1a0d6: f9b9 b008 ldrsh.w fp, [r9, #8] if(ext->recolor != 0) flag |= LV_TXT_FLAG_RECOLOR; 1a0da: 7c33 ldrb r3, [r6, #16] lv_txt_flag_t flag = LV_TXT_FLAG_NONE; 1a0dc: f3c3 1680 ubfx r6, r3, #6, #1 if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND; 1a0e0: f013 0f80 tst.w r3, #128 ; 0x80 1a0e4: bf18 it ne 1a0e6: f046 0602 orrne.w r6, r6, #2 if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT; 1a0ea: f013 0f07 tst.w r3, #7 1a0ee: bf08 it eq 1a0f0: f046 0610 orreq.w r6, r6, #16 lv_label_align_t align = lv_label_get_align(label); 1a0f4: 4628 mov r0, r5 1a0f6: 4b79 ldr r3, [pc, #484] ; (1a2dc ) 1a0f8: 4798 blx r3 1a0fa: 4682 mov sl, r0 if(align == LV_LABEL_ALIGN_CENTER) flag |= LV_TXT_FLAG_CENTER; 1a0fc: 2801 cmp r0, #1 1a0fe: d137 bne.n 1a170 1a100: f046 0604 orr.w r6, r6, #4 while(txt[line_start] != '\0') { 1a104: 783b ldrb r3, [r7, #0] 1a106: 2b00 cmp r3, #0 1a108: d13a bne.n 1a180 1a10a: 46b8 mov r8, r7 1a10c: 2500 movs r5, #0 1a10e: 462c mov r4, r5 line_w = _lv_txt_get_width(bidi_txt, new_line_start - line_start, font, letter_space, flag); 1a110: 1b61 subs r1, r4, r5 1a112: 9600 str r6, [sp, #0] 1a114: 9b04 ldr r3, [sp, #16] 1a116: 9a03 ldr r2, [sp, #12] 1a118: b289 uxth r1, r1 1a11a: 4640 mov r0, r8 1a11c: f8df 91d8 ldr.w r9, [pc, #472] ; 1a2f8 1a120: 47c8 blx r9 1a122: f8bd 3034 ldrh.w r3, [sp, #52] ; 0x34 1a126: 3301 adds r3, #1 1a128: f8bd 2030 ldrh.w r2, [sp, #48] ; 0x30 1a12c: 1a9b subs r3, r3, r2 x += lv_area_get_width(&txt_coords) / 2 - line_w / 2; 1a12e: b21b sxth r3, r3 1a130: eb03 73d3 add.w r3, r3, r3, lsr #31 1a134: eb00 70d0 add.w r0, r0, r0, lsr #31 1a138: ea4f 0960 mov.w r9, r0, asr #1 1a13c: ebc9 0363 rsb r3, r9, r3, asr #1 1a140: fa0f f983 sxth.w r9, r3 lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; 1a144: 2300 movs r3, #0 1a146: f88d 302f strb.w r3, [sp, #47] ; 0x2f uint32_t i = 0; 1a14a: 930a str r3, [sp, #40] ; 0x28 if(new_line_start > 0) { 1a14c: 2c00 cmp r4, #0 1a14e: f040 80a1 bne.w 1a294 logical_pos = _lv_txt_encoded_get_char_id(bidi_txt, i); 1a152: 4e63 ldr r6, [pc, #396] ; (1a2e0 ) 1a154: 6833 ldr r3, [r6, #0] 1a156: 990a ldr r1, [sp, #40] ; 0x28 1a158: 4640 mov r0, r8 1a15a: 4798 blx r3 1a15c: 4604 mov r4, r0 return logical_pos + _lv_txt_encoded_get_char_id(txt, line_start); 1a15e: 6833 ldr r3, [r6, #0] 1a160: 4629 mov r1, r5 1a162: 4638 mov r0, r7 1a164: 4798 blx r3 1a166: 4420 add r0, r4 1a168: b280 uxth r0, r0 } 1a16a: b00f add sp, #60 ; 0x3c 1a16c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(align == LV_LABEL_ALIGN_RIGHT) flag |= LV_TXT_FLAG_RIGHT; 1a170: 2802 cmp r0, #2 1a172: f040 8096 bne.w 1a2a2 1a176: f046 0608 orr.w r6, r6, #8 while(txt[line_start] != '\0') { 1a17a: 783b ldrb r3, [r7, #0] 1a17c: 2b00 cmp r3, #0 1a17e: d048 beq.n 1a212 { 1a180: 46b8 mov r8, r7 1a182: f04f 0900 mov.w r9, #0 1a186: 464d mov r5, r9 y += letter_height + line_space; 1a188: eb0b 0304 add.w r3, fp, r4 1a18c: 9307 str r3, [sp, #28] 1a18e: e009 b.n 1a1a4 1a190: 9b07 ldr r3, [sp, #28] 1a192: 4499 add r9, r3 1a194: fa0f f989 sxth.w r9, r9 while(txt[line_start] != '\0') { 1a198: eb07 0800 add.w r8, r7, r0 new_line_start += _lv_txt_get_next_line(&txt[line_start], font, letter_space, max_w, flag); 1a19c: 4605 mov r5, r0 while(txt[line_start] != '\0') { 1a19e: 5c3b ldrb r3, [r7, r0] 1a1a0: 2b00 cmp r3, #0 1a1a2: d034 beq.n 1a20e new_line_start += _lv_txt_get_next_line(&txt[line_start], font, letter_space, max_w, flag); 1a1a4: 9600 str r6, [sp, #0] 1a1a6: 9b06 ldr r3, [sp, #24] 1a1a8: 9a04 ldr r2, [sp, #16] 1a1aa: 9903 ldr r1, [sp, #12] 1a1ac: 4640 mov r0, r8 1a1ae: 4c4d ldr r4, [pc, #308] ; (1a2e4 ) 1a1b0: 47a0 blx r4 1a1b2: 4428 add r0, r5 if(pos->y <= y + letter_height) { 1a1b4: 9b05 ldr r3, [sp, #20] 1a1b6: f9b3 2002 ldrsh.w r2, [r3, #2] 1a1ba: eb09 030b add.w r3, r9, fp 1a1be: 429a cmp r2, r3 1a1c0: dce6 bgt.n 1a190 1a1c2: 4604 mov r4, r0 uint32_t tmp = new_line_start; 1a1c4: a90e add r1, sp, #56 ; 0x38 1a1c6: f841 0d14 str.w r0, [r1, #-20]! letter = _lv_txt_encoded_prev(txt, &tmp); 1a1ca: 4b47 ldr r3, [pc, #284] ; (1a2e8 ) 1a1cc: 681b ldr r3, [r3, #0] 1a1ce: 4638 mov r0, r7 1a1d0: 4798 blx r3 if(letter != '\n' && txt[new_line_start] == '\0') new_line_start++; 1a1d2: 280a cmp r0, #10 1a1d4: d002 beq.n 1a1dc 1a1d6: 5d3b ldrb r3, [r7, r4] 1a1d8: b903 cbnz r3, 1a1dc 1a1da: 3401 adds r4, #1 if(align == LV_LABEL_ALIGN_CENTER) { 1a1dc: f1ba 0f01 cmp.w sl, #1 1a1e0: d096 beq.n 1a110 else if(align == LV_LABEL_ALIGN_RIGHT) { 1a1e2: f1ba 0f02 cmp.w sl, #2 1a1e6: d118 bne.n 1a21a line_w = _lv_txt_get_width(bidi_txt, new_line_start - line_start, font, letter_space, flag); 1a1e8: 1b61 subs r1, r4, r5 1a1ea: 9600 str r6, [sp, #0] 1a1ec: 9b04 ldr r3, [sp, #16] 1a1ee: 9a03 ldr r2, [sp, #12] 1a1f0: b289 uxth r1, r1 1a1f2: 4640 mov r0, r8 1a1f4: f8df 9100 ldr.w r9, [pc, #256] ; 1a2f8 1a1f8: 47c8 blx r9 1a1fa: f8bd 3034 ldrh.w r3, [sp, #52] ; 0x34 1a1fe: 3301 adds r3, #1 1a200: f8bd 2030 ldrh.w r2, [sp, #48] ; 0x30 1a204: 1a9b subs r3, r3, r2 x += lv_area_get_width(&txt_coords) - line_w; 1a206: 1a1b subs r3, r3, r0 1a208: fa0f f983 sxth.w r9, r3 1a20c: e79a b.n 1a144 1a20e: 4604 mov r4, r0 1a210: e7e4 b.n 1a1dc while(txt[line_start] != '\0') { 1a212: 46b8 mov r8, r7 1a214: 2500 movs r5, #0 1a216: 462c mov r4, r5 1a218: e7e6 b.n 1a1e8 lv_coord_t x = 0; 1a21a: f04f 0900 mov.w r9, #0 1a21e: e791 b.n 1a144 x += lv_font_get_glyph_width(font, letter, letter_next); 1a220: 9a07 ldr r2, [sp, #28] 1a222: 9906 ldr r1, [sp, #24] 1a224: 9803 ldr r0, [sp, #12] 1a226: 4b31 ldr r3, [pc, #196] ; (1a2ec ) 1a228: 4798 blx r3 1a22a: eb00 0309 add.w r3, r0, r9 1a22e: b29b uxth r3, r3 if(pos->x < x || i + line_start == new_line_start || txt[i + line_start] == '\0') { 1a230: 9a05 ldr r2, [sp, #20] 1a232: f9b2 1000 ldrsh.w r1, [r2] 1a236: b21a sxth r2, r3 1a238: 4291 cmp r1, r2 1a23a: db28 blt.n 1a28e 1a23c: 9a0a ldr r2, [sp, #40] ; 0x28 1a23e: 1951 adds r1, r2, r5 1a240: 42a1 cmp r1, r4 1a242: d024 beq.n 1a28e 1a244: 5c79 ldrb r1, [r7, r1] 1a246: b311 cbz r1, 1a28e x += letter_space; 1a248: 9904 ldr r1, [sp, #16] 1a24a: 440b add r3, r1 1a24c: fa0f f983 sxth.w r9, r3 i_act = i; 1a250: 4693 mov fp, r2 while(i + line_start < new_line_start) { 1a252: 9b0a ldr r3, [sp, #40] ; 0x28 1a254: 442b add r3, r5 1a256: 42a3 cmp r3, r4 1a258: f4bf af7b bcs.w 1a152 uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i); 1a25c: f8da 3000 ldr.w r3, [sl] 1a260: a90a add r1, sp, #40 ; 0x28 1a262: 4640 mov r0, r8 1a264: 4798 blx r3 1a266: 9006 str r0, [sp, #24] uint32_t letter_next = _lv_txt_encoded_next(&bidi_txt[i], NULL); 1a268: f8da 3000 ldr.w r3, [sl] 1a26c: 2100 movs r1, #0 1a26e: 980a ldr r0, [sp, #40] ; 0x28 1a270: 4440 add r0, r8 1a272: 4798 blx r3 1a274: 9007 str r0, [sp, #28] if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 1a276: 2e00 cmp r6, #0 1a278: d0d2 beq.n 1a220 if(_lv_txt_is_cmd(&cmd_state, bidi_txt[i]) != false) { 1a27a: 9b0a ldr r3, [sp, #40] ; 0x28 1a27c: f818 1003 ldrb.w r1, [r8, r3] 1a280: f10d 002f add.w r0, sp, #47 ; 0x2f 1a284: 4b1a ldr r3, [pc, #104] ; (1a2f0 ) 1a286: 4798 blx r3 1a288: 2800 cmp r0, #0 1a28a: d1e2 bne.n 1a252 1a28c: e7c8 b.n 1a220 i = i_act; 1a28e: f8cd b028 str.w fp, [sp, #40] ; 0x28 break; 1a292: e75e b.n 1a152 1a294: f04f 0b00 mov.w fp, #0 uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i); 1a298: f8df a060 ldr.w sl, [pc, #96] ; 1a2fc if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 1a29c: f006 0601 and.w r6, r6, #1 1a2a0: e7d7 b.n 1a252 while(txt[line_start] != '\0') { 1a2a2: 783b ldrb r3, [r7, #0] 1a2a4: 2b00 cmp r3, #0 1a2a6: f47f af6b bne.w 1a180 1a2aa: 46b8 mov r8, r7 1a2ac: 2500 movs r5, #0 1a2ae: 462c mov r4, r5 lv_coord_t x = 0; 1a2b0: 46a9 mov r9, r5 1a2b2: e747 b.n 1a144 1a2b4: 000022b1 .word 0x000022b1 1a2b8: 00029860 .word 0x00029860 1a2bc: 00029994 .word 0x00029994 1a2c0: 0001225d .word 0x0001225d 1a2c4: 0002483c .word 0x0002483c 1a2c8: 000022b9 .word 0x000022b9 1a2cc: 00019d89 .word 0x00019d89 1a2d0: 00019edd .word 0x00019edd 1a2d4: 00004d9d .word 0x00004d9d 1a2d8: 000046a1 .word 0x000046a1 1a2dc: 00019f81 .word 0x00019f81 1a2e0: 20000064 .word 0x20000064 1a2e4: 00013db1 .word 0x00013db1 1a2e8: 20000068 .word 0x20000068 1a2ec: 00010061 .word 0x00010061 1a2f0: 00013d69 .word 0x00013d69 1a2f4: 000044d5 .word 0x000044d5 1a2f8: 00013fdd .word 0x00013fdd 1a2fc: 20000058 .word 0x20000058 0001a300 : { 1a300: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 1a304: b099 sub sp, #100 ; 0x64 1a306: 4604 mov r4, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1a308: 4baf ldr r3, [pc, #700] ; (1a5c8 ) 1a30a: 4798 blx r3 if(ext->text == NULL) return; 1a30c: 6803 ldr r3, [r0, #0] 1a30e: 2b00 cmp r3, #0 1a310: d048 beq.n 1a3a4 1a312: 4605 mov r5, r0 get_txt_coords(label, &txt_coords); 1a314: a916 add r1, sp, #88 ; 0x58 1a316: 4620 mov r0, r4 1a318: 4bac ldr r3, [pc, #688] ; (1a5cc ) 1a31a: 4798 blx r3 1a31c: f8bd 605c ldrh.w r6, [sp, #92] ; 0x5c 1a320: 3601 adds r6, #1 1a322: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 1a326: 1af6 subs r6, r6, r3 1a328: b236 sxth r6, r6 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 1a32a: f248 028e movw r2, #32910 ; 0x808e 1a32e: 2100 movs r1, #0 1a330: 4620 mov r0, r4 1a332: 4ba7 ldr r3, [pc, #668] ; (1a5d0 ) 1a334: 4798 blx r3 1a336: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 1a338: f248 0281 movw r2, #32897 ; 0x8081 1a33c: 2100 movs r1, #0 1a33e: 4620 mov r0, r4 1a340: 4fa4 ldr r7, [pc, #656] ; (1a5d4 ) 1a342: 47b8 blx r7 1a344: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 1a346: f248 0280 movw r2, #32896 ; 0x8080 1a34a: 2100 movs r1, #0 1a34c: 4620 mov r0, r4 1a34e: 47b8 blx r7 1a350: 4607 mov r7, r0 if(ext->recolor != 0) flag |= LV_TXT_FLAG_RECOLOR; 1a352: 7c2b ldrb r3, [r5, #16] lv_txt_flag_t flag = LV_TXT_FLAG_NONE; 1a354: f3c3 1280 ubfx r2, r3, #6, #1 if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND; 1a358: f013 0f80 tst.w r3, #128 ; 0x80 1a35c: bf18 it ne 1a35e: f042 0202 orrne.w r2, r2, #2 if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT; 1a362: f013 0f07 tst.w r3, #7 1a366: bf08 it eq 1a368: f042 0210 orreq.w r2, r2, #16 _lv_txt_get_size(&size, ext->text, font, letter_space, line_space, max_w, flag); 1a36c: 6829 ldr r1, [r5, #0] 1a36e: 9202 str r2, [sp, #8] 1a370: 9601 str r6, [sp, #4] 1a372: f8cd 9000 str.w r9, [sp] 1a376: 4603 mov r3, r0 1a378: 4642 mov r2, r8 1a37a: a815 add r0, sp, #84 ; 0x54 1a37c: 4e96 ldr r6, [pc, #600] ; (1a5d8 ) 1a37e: 47b0 blx r6 if(ext->long_mode == LV_LABEL_LONG_EXPAND) { 1a380: 7c2b ldrb r3, [r5, #16] 1a382: f013 0307 ands.w r3, r3, #7 1a386: d010 beq.n 1a3aa else if(ext->long_mode == LV_LABEL_LONG_SROLL) { 1a388: 2b03 cmp r3, #3 1a38a: d034 beq.n 1a3f6 else if(ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) { 1a38c: 2b04 cmp r3, #4 1a38e: f000 80d7 beq.w 1a540 else if(ext->long_mode == LV_LABEL_LONG_DOT) { 1a392: 2b02 cmp r3, #2 1a394: f000 816d beq.w 1a672 else if(ext->long_mode == LV_LABEL_LONG_BREAK) { 1a398: 2b01 cmp r3, #1 1a39a: f000 81fe beq.w 1a79a lv_obj_invalidate(label); 1a39e: 4620 mov r0, r4 1a3a0: 4b8e ldr r3, [pc, #568] ; (1a5dc ) 1a3a2: 4798 blx r3 } 1a3a4: b019 add sp, #100 ; 0x64 1a3a6: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1a3aa: 2212 movs r2, #18 1a3ac: 2100 movs r1, #0 1a3ae: 4620 mov r0, r4 1a3b0: 4e88 ldr r6, [pc, #544] ; (1a5d4 ) 1a3b2: 47b0 blx r6 1a3b4: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 1a3b6: 2213 movs r2, #19 1a3b8: 2100 movs r1, #0 1a3ba: 4620 mov r0, r4 1a3bc: 47b0 blx r6 size.x += lv_obj_get_style_pad_left(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_right(label, LV_LABEL_PART_MAIN); 1a3be: 4428 add r0, r5 1a3c0: f8bd 5054 ldrh.w r5, [sp, #84] ; 0x54 1a3c4: 4428 add r0, r5 1a3c6: f8ad 0054 strh.w r0, [sp, #84] ; 0x54 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1a3ca: 2210 movs r2, #16 1a3cc: 2100 movs r1, #0 1a3ce: 4620 mov r0, r4 1a3d0: 47b0 blx r6 1a3d2: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 1a3d4: 2211 movs r2, #17 1a3d6: 2100 movs r1, #0 1a3d8: 4620 mov r0, r4 1a3da: 47b0 blx r6 size.y += lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN); 1a3dc: 182a adds r2, r5, r0 1a3de: f8bd 0056 ldrh.w r0, [sp, #86] ; 0x56 1a3e2: 4402 add r2, r0 1a3e4: b212 sxth r2, r2 1a3e6: f8ad 2056 strh.w r2, [sp, #86] ; 0x56 lv_obj_set_size(label, size.x, size.y); 1a3ea: f9bd 1054 ldrsh.w r1, [sp, #84] ; 0x54 1a3ee: 4620 mov r0, r4 1a3f0: 4b7b ldr r3, [pc, #492] ; (1a5e0 ) 1a3f2: 4798 blx r3 1a3f4: e7d3 b.n 1a39e lv_anim_init(&a); 1a3f6: a805 add r0, sp, #20 1a3f8: 4b7a ldr r3, [pc, #488] ; (1a5e4 ) 1a3fa: 4798 blx r3 * @param a pointer to an initialized `lv_anim_t` variable * @param var pointer to a variable to animate */ static inline void lv_anim_set_var(lv_anim_t * a, void * var) { a->var = var; 1a3fc: 9405 str r4, [sp, #20] * @param a pointer to an initialized `lv_anim_t` variable * @param cnt repeat count or `LV_ANIM_REPEAT_INFINITE` for infinite repetition. 0: to disable repetition. */ static inline void lv_anim_set_repeat_count(lv_anim_t * a, uint16_t cnt) { a->repeat_cnt = cnt; 1a3fe: f64f 73ff movw r3, #65535 ; 0xffff 1a402: f8ad 3048 strh.w r3, [sp, #72] ; 0x48 lv_anim_set_playback_delay(&a, (((lv_font_get_glyph_width(font, ' ', ' ') + letter_space) * 1000) / 1a406: 2220 movs r2, #32 1a408: 4611 mov r1, r2 1a40a: 4640 mov r0, r8 1a40c: 4b76 ldr r3, [pc, #472] ; (1a5e8 ) 1a40e: 4798 blx r3 1a410: 4438 add r0, r7 1a412: f44f 737a mov.w r3, #1000 ; 0x3e8 1a416: fb03 f300 mul.w r3, r3, r0 ext->anim_speed) * 1a41a: 8968 ldrh r0, [r5, #10] lv_anim_set_playback_delay(&a, (((lv_font_get_glyph_width(font, ' ', ' ') + letter_space) * 1000) / 1a41c: fb93 f3f0 sdiv r3, r3, r0 1a420: eb03 0343 add.w r3, r3, r3, lsl #1 a->playback_delay = delay; 1a424: b29b uxth r3, r3 1a426: 930f str r3, [sp, #60] ; 0x3c * @param a pointer to an initialized `lv_anim_t` variable * @param delay delay in milliseconds before repeating the animation. */ static inline void lv_anim_set_repeat_delay(lv_anim_t * a, uint16_t delay) { a->repeat_delay = delay; 1a428: 9311 str r3, [sp, #68] ; 0x44 if(size.x > lv_area_get_width(&txt_coords)) { 1a42a: f9bd 2054 ldrsh.w r2, [sp, #84] ; 0x54 1a42e: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c 1a432: 3301 adds r3, #1 1a434: f8bd 1058 ldrh.w r1, [sp, #88] ; 0x58 1a438: 1a5b subs r3, r3, r1 1a43a: b29b uxth r3, r3 1a43c: b219 sxth r1, r3 1a43e: 428a cmp r2, r1 1a440: dd37 ble.n 1a4b2 lv_anim_set_values(&a, 0, lv_area_get_width(&txt_coords) - size.x); 1a442: 1a9b subs r3, r3, r2 1a444: b21a sxth r2, r3 a->start = start; 1a446: 2100 movs r1, #0 1a448: 910b str r1, [sp, #44] ; 0x2c a->end = end; 1a44a: 920c str r2, [sp, #48] ; 0x30 a->exec_cb = exec_cb; 1a44c: 4e67 ldr r6, [pc, #412] ; (1a5ec ) 1a44e: 9606 str r6, [sp, #24] lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 1a450: 8968 ldrh r0, [r5, #10] 1a452: 4b67 ldr r3, [pc, #412] ; (1a5f0 ) 1a454: 4798 blx r3 a->time = duration; 1a456: 900d str r0, [sp, #52] ; 0x34 1a458: 9010 str r0, [sp, #64] ; 0x40 lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 1a45a: 4631 mov r1, r6 1a45c: 4620 mov r0, r4 1a45e: 4b65 ldr r3, [pc, #404] ; (1a5f4 ) 1a460: 4798 blx r3 if(anim_cur) { 1a462: b318 cbz r0, 1a4ac act_time = anim_cur->act_time; 1a464: 6a42 ldr r2, [r0, #36] ; 0x24 playback_now = anim_cur->playback_now; 1a466: f890 303c ldrb.w r3, [r0, #60] ; 0x3c 1a46a: f003 0301 and.w r3, r3, #1 if(act_time < a.time) { 1a46e: 990d ldr r1, [sp, #52] ; 0x34 1a470: 428a cmp r2, r1 1a472: da11 bge.n 1a498 a.act_time = act_time; /*To keep the old position*/ 1a474: 920e str r2, [sp, #56] ; 0x38 a.early_apply = 0; 1a476: f89d 204a ldrb.w r2, [sp, #74] ; 0x4a 1a47a: f36f 0200 bfc r2, #0, #1 1a47e: f88d 204a strb.w r2, [sp, #74] ; 0x4a if(playback_now) { 1a482: b14b cbz r3, 1a498 a.playback_now = 1; 1a484: f89d 3050 ldrb.w r3, [sp, #80] ; 0x50 1a488: f043 0301 orr.w r3, r3, #1 1a48c: f88d 3050 strb.w r3, [sp, #80] ; 0x50 tmp = a.start; 1a490: 9b0b ldr r3, [sp, #44] ; 0x2c a.start = a.end; 1a492: 9a0c ldr r2, [sp, #48] ; 0x30 1a494: 920b str r2, [sp, #44] ; 0x2c a.end = tmp; 1a496: 930c str r3, [sp, #48] ; 0x30 lv_anim_start(&a); 1a498: a805 add r0, sp, #20 1a49a: 4b57 ldr r3, [pc, #348] ; (1a5f8 ) 1a49c: 4798 blx r3 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 1a49e: 4957 ldr r1, [pc, #348] ; (1a5fc ) 1a4a0: 4620 mov r0, r4 1a4a2: 4b57 ldr r3, [pc, #348] ; (1a600 ) 1a4a4: 4798 blx r3 ext->offset.y = 0; 1a4a6: 2300 movs r3, #0 1a4a8: 81eb strh r3, [r5, #14] 1a4aa: e778 b.n 1a39e bool playback_now = false; 1a4ac: 2300 movs r3, #0 int32_t act_time = 0; 1a4ae: 461a mov r2, r3 1a4b0: e7dd b.n 1a46e lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 1a4b2: 494e ldr r1, [pc, #312] ; (1a5ec ) 1a4b4: 4620 mov r0, r4 1a4b6: 4b52 ldr r3, [pc, #328] ; (1a600 ) 1a4b8: 4798 blx r3 ext->offset.x = 0; 1a4ba: 2300 movs r3, #0 1a4bc: 81ab strh r3, [r5, #12] if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { 1a4be: f9bd 2056 ldrsh.w r2, [sp, #86] ; 0x56 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1a4c2: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e 1a4c6: 3301 adds r3, #1 1a4c8: f8bd 105a ldrh.w r1, [sp, #90] ; 0x5a 1a4cc: 1a5b subs r3, r3, r1 1a4ce: b29b uxth r3, r3 1a4d0: b219 sxth r1, r3 1a4d2: 428a cmp r2, r1 1a4d4: dde3 ble.n 1a49e lv_anim_set_values(&a, 0, lv_area_get_height(&txt_coords) - size.y - (lv_font_get_line_height(font))); 1a4d6: 1a9a subs r2, r3, r2 1a4d8: f8b8 3008 ldrh.w r3, [r8, #8] 1a4dc: 1ad2 subs r2, r2, r3 1a4de: b212 sxth r2, r2 a->start = start; 1a4e0: 2100 movs r1, #0 1a4e2: 910b str r1, [sp, #44] ; 0x2c a->end = end; 1a4e4: 920c str r2, [sp, #48] ; 0x30 a->exec_cb = exec_cb; 1a4e6: 4e45 ldr r6, [pc, #276] ; (1a5fc ) 1a4e8: 9606 str r6, [sp, #24] lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 1a4ea: 8968 ldrh r0, [r5, #10] 1a4ec: 4b40 ldr r3, [pc, #256] ; (1a5f0 ) 1a4ee: 4798 blx r3 a->time = duration; 1a4f0: 900d str r0, [sp, #52] ; 0x34 1a4f2: 9010 str r0, [sp, #64] ; 0x40 lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 1a4f4: 4631 mov r1, r6 1a4f6: 4620 mov r0, r4 1a4f8: 4b3e ldr r3, [pc, #248] ; (1a5f4 ) 1a4fa: 4798 blx r3 if(anim_cur) { 1a4fc: b1e8 cbz r0, 1a53a act_time = anim_cur->act_time; 1a4fe: 6a42 ldr r2, [r0, #36] ; 0x24 playback_now = anim_cur->playback_now; 1a500: f890 303c ldrb.w r3, [r0, #60] ; 0x3c 1a504: f003 0301 and.w r3, r3, #1 if(act_time < a.time) { 1a508: 990d ldr r1, [sp, #52] ; 0x34 1a50a: 428a cmp r2, r1 1a50c: da11 bge.n 1a532 a.act_time = act_time; /*To keep the old position*/ 1a50e: 920e str r2, [sp, #56] ; 0x38 a.early_apply = 0; 1a510: f89d 204a ldrb.w r2, [sp, #74] ; 0x4a 1a514: f36f 0200 bfc r2, #0, #1 1a518: f88d 204a strb.w r2, [sp, #74] ; 0x4a if(playback_now) { 1a51c: b14b cbz r3, 1a532 a.playback_now = 1; 1a51e: f89d 3050 ldrb.w r3, [sp, #80] ; 0x50 1a522: f043 0301 orr.w r3, r3, #1 1a526: f88d 3050 strb.w r3, [sp, #80] ; 0x50 tmp = a.start; 1a52a: 9b0b ldr r3, [sp, #44] ; 0x2c a.start = a.end; 1a52c: 9a0c ldr r2, [sp, #48] ; 0x30 1a52e: 920b str r2, [sp, #44] ; 0x2c a.end = tmp; 1a530: 930c str r3, [sp, #48] ; 0x30 lv_anim_start(&a); 1a532: a805 add r0, sp, #20 1a534: 4b30 ldr r3, [pc, #192] ; (1a5f8 ) 1a536: 4798 blx r3 if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { 1a538: e731 b.n 1a39e bool playback_now = false; 1a53a: 2300 movs r3, #0 int32_t act_time = 0; 1a53c: 461a mov r2, r3 1a53e: e7e3 b.n 1a508 lv_anim_init(&a); 1a540: a805 add r0, sp, #20 1a542: 4b28 ldr r3, [pc, #160] ; (1a5e4 ) 1a544: 4798 blx r3 a->var = var; 1a546: 9405 str r4, [sp, #20] a->repeat_cnt = cnt; 1a548: f64f 73ff movw r3, #65535 ; 0xffff 1a54c: f8ad 3048 strh.w r3, [sp, #72] ; 0x48 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1a550: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c 1a554: 3301 adds r3, #1 1a556: f8bd 2058 ldrh.w r2, [sp, #88] ; 0x58 1a55a: 1a9b subs r3, r3, r2 if(size.x > lv_area_get_width(&txt_coords)) { 1a55c: f9bd 2054 ldrsh.w r2, [sp, #84] ; 0x54 1a560: b21b sxth r3, r3 1a562: 429a cmp r2, r3 1a564: dd50 ble.n 1a608 lv_anim_set_values(&a, 0, -size.x - lv_font_get_glyph_width(font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT); 1a566: 2220 movs r2, #32 1a568: 4611 mov r1, r2 1a56a: 4640 mov r0, r8 1a56c: 4b1e ldr r3, [pc, #120] ; (1a5e8 ) 1a56e: 4798 blx r3 1a570: ebc0 3380 rsb r3, r0, r0, lsl #14 1a574: eb00 0283 add.w r2, r0, r3, lsl #2 1a578: f8bd 3054 ldrh.w r3, [sp, #84] ; 0x54 1a57c: 1ad2 subs r2, r2, r3 1a57e: b212 sxth r2, r2 a->start = start; 1a580: 2100 movs r1, #0 1a582: 910b str r1, [sp, #44] ; 0x2c a->end = end; 1a584: 920c str r2, [sp, #48] ; 0x30 a->exec_cb = exec_cb; 1a586: 4e19 ldr r6, [pc, #100] ; (1a5ec ) 1a588: 9606 str r6, [sp, #24] lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 1a58a: 8968 ldrh r0, [r5, #10] 1a58c: 4b18 ldr r3, [pc, #96] ; (1a5f0 ) 1a58e: 4798 blx r3 a->time = duration; 1a590: 900d str r0, [sp, #52] ; 0x34 lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 1a592: 4631 mov r1, r6 1a594: 4620 mov r0, r4 1a596: 4b17 ldr r3, [pc, #92] ; (1a5f4 ) 1a598: 4798 blx r3 int32_t act_time = anim_cur ? anim_cur->act_time : 0; 1a59a: 2800 cmp r0, #0 1a59c: d032 beq.n 1a604 1a59e: 6a43 ldr r3, [r0, #36] ; 0x24 if(act_time < a.time) { 1a5a0: 9a0d ldr r2, [sp, #52] ; 0x34 1a5a2: 4293 cmp r3, r2 1a5a4: da06 bge.n 1a5b4 a.act_time = act_time; /*To keep the old position*/ 1a5a6: 930e str r3, [sp, #56] ; 0x38 a.early_apply = 0; 1a5a8: f89d 304a ldrb.w r3, [sp, #74] ; 0x4a 1a5ac: f36f 0300 bfc r3, #0, #1 1a5b0: f88d 304a strb.w r3, [sp, #74] ; 0x4a lv_anim_start(&a); 1a5b4: a805 add r0, sp, #20 1a5b6: 4b10 ldr r3, [pc, #64] ; (1a5f8 ) 1a5b8: 4798 blx r3 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 1a5ba: 4910 ldr r1, [pc, #64] ; (1a5fc ) 1a5bc: 4620 mov r0, r4 1a5be: 4b10 ldr r3, [pc, #64] ; (1a600 ) 1a5c0: 4798 blx r3 ext->offset.y = 0; 1a5c2: 2300 movs r3, #0 1a5c4: 81eb strh r3, [r5, #14] 1a5c6: e6ea b.n 1a39e 1a5c8: 00004d9d .word 0x00004d9d 1a5cc: 00019d89 .word 0x00019d89 1a5d0: 000046a1 .word 0x000046a1 1a5d4: 000044d5 .word 0x000044d5 1a5d8: 0001407d .word 0x0001407d 1a5dc: 00003321 .word 0x00003321 1a5e0: 000042a1 .word 0x000042a1 1a5e4: 000112e5 .word 0x000112e5 1a5e8: 00010061 .word 0x00010061 1a5ec: 00019d6d .word 0x00019d6d 1a5f0: 00011491 .word 0x00011491 1a5f4: 00011455 .word 0x00011455 1a5f8: 000113a1 .word 0x000113a1 1a5fc: 00019d51 .word 0x00019d51 1a600: 00011329 .word 0x00011329 int32_t act_time = anim_cur ? anim_cur->act_time : 0; 1a604: 2300 movs r3, #0 1a606: e7cb b.n 1a5a0 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 1a608: 496e ldr r1, [pc, #440] ; (1a7c4 ) 1a60a: 4620 mov r0, r4 1a60c: 4b6e ldr r3, [pc, #440] ; (1a7c8 ) 1a60e: 4798 blx r3 ext->offset.x = 0; 1a610: 2300 movs r3, #0 1a612: 81ab strh r3, [r5, #12] if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { 1a614: f9bd 2056 ldrsh.w r2, [sp, #86] ; 0x56 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1a618: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e 1a61c: 3301 adds r3, #1 1a61e: f8bd 105a ldrh.w r1, [sp, #90] ; 0x5a 1a622: 1a5b subs r3, r3, r1 1a624: b21b sxth r3, r3 1a626: 429a cmp r2, r3 1a628: ddc7 ble.n 1a5ba lv_anim_set_values(&a, 0, -size.y - (lv_font_get_line_height(font))); 1a62a: f8b8 3008 ldrh.w r3, [r8, #8] 1a62e: 441a add r2, r3 1a630: 4252 negs r2, r2 1a632: b212 sxth r2, r2 a->start = start; 1a634: 2100 movs r1, #0 1a636: 910b str r1, [sp, #44] ; 0x2c a->end = end; 1a638: 920c str r2, [sp, #48] ; 0x30 a->exec_cb = exec_cb; 1a63a: 4e64 ldr r6, [pc, #400] ; (1a7cc ) 1a63c: 9606 str r6, [sp, #24] lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 1a63e: 8968 ldrh r0, [r5, #10] 1a640: 4b63 ldr r3, [pc, #396] ; (1a7d0 ) 1a642: 4798 blx r3 a->time = duration; 1a644: 900d str r0, [sp, #52] ; 0x34 lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 1a646: 4631 mov r1, r6 1a648: 4620 mov r0, r4 1a64a: 4b62 ldr r3, [pc, #392] ; (1a7d4 ) 1a64c: 4798 blx r3 int32_t act_time = anim_cur ? anim_cur->act_time : 0; 1a64e: b170 cbz r0, 1a66e 1a650: 6a43 ldr r3, [r0, #36] ; 0x24 if(act_time < a.time) { 1a652: 9a0d ldr r2, [sp, #52] ; 0x34 1a654: 4293 cmp r3, r2 1a656: da06 bge.n 1a666 a.act_time = act_time; /*To keep the old position*/ 1a658: 930e str r3, [sp, #56] ; 0x38 a.early_apply = 0; 1a65a: f89d 304a ldrb.w r3, [sp, #74] ; 0x4a 1a65e: f36f 0300 bfc r3, #0, #1 1a662: f88d 304a strb.w r3, [sp, #74] ; 0x4a lv_anim_start(&a); 1a666: a805 add r0, sp, #20 1a668: 4b5b ldr r3, [pc, #364] ; (1a7d8 ) 1a66a: 4798 blx r3 if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { 1a66c: e697 b.n 1a39e int32_t act_time = anim_cur ? anim_cur->act_time : 0; 1a66e: 2300 movs r3, #0 1a670: e7ef b.n 1a652 1a672: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e 1a676: 3301 adds r3, #1 1a678: f8bd 205a ldrh.w r2, [sp, #90] ; 0x5a 1a67c: 1a9b subs r3, r3, r2 if(size.y <= lv_area_get_height(&txt_coords)) { /*No dots are required, the text is short enough*/ 1a67e: f9bd 2056 ldrsh.w r2, [sp, #86] ; 0x56 1a682: b21b sxth r3, r3 1a684: 429a cmp r2, r3 1a686: dc03 bgt.n 1a690 ext->dot_end = LV_LABEL_DOT_END_INV; 1a688: f64f 73ff movw r3, #65535 ; 0xffff 1a68c: 812b strh r3, [r5, #8] 1a68e: e686 b.n 1a39e else if(_lv_txt_get_encoded_length(ext->text) <= LV_LABEL_DOT_NUM) { /*Don't turn to dots all the characters*/ 1a690: 4b52 ldr r3, [pc, #328] ; (1a7dc ) 1a692: 681b ldr r3, [r3, #0] 1a694: 6828 ldr r0, [r5, #0] 1a696: 4798 blx r3 1a698: 2803 cmp r0, #3 1a69a: d803 bhi.n 1a6a4 ext->dot_end = LV_LABEL_DOT_END_INV; 1a69c: f64f 73ff movw r3, #65535 ; 0xffff 1a6a0: 812b strh r3, [r5, #8] 1a6a2: e67c b.n 1a39e return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1a6a4: f8bd 605c ldrh.w r6, [sp, #92] ; 0x5c 1a6a8: 3601 adds r6, #1 1a6aa: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 1a6ae: 1af6 subs r6, r6, r3 1a6b0: b2b6 uxth r6, r6 (lv_font_get_glyph_width(font, '.', '.') + letter_space) * 1a6b2: 222e movs r2, #46 ; 0x2e 1a6b4: 4611 mov r1, r2 1a6b6: 4640 mov r0, r8 1a6b8: 4b49 ldr r3, [pc, #292] ; (1a7e0 ) 1a6ba: 4798 blx r3 1a6bc: 4438 add r0, r7 p.x = lv_area_get_width(&txt_coords) - 1a6be: ebc0 3380 rsb r3, r0, r0, lsl #14 1a6c2: eb00 0083 add.w r0, r0, r3, lsl #2 1a6c6: 4430 add r0, r6 1a6c8: f8ad 0010 strh.w r0, [sp, #16] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1a6cc: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e 1a6d0: 3301 adds r3, #1 1a6d2: f8bd 205a ldrh.w r2, [sp, #90] ; 0x5a 1a6d6: 1a9b subs r3, r3, r2 1a6d8: b29b uxth r3, r3 p.y -= p.y % 1a6da: b218 sxth r0, r3 (lv_font_get_line_height(font) + line_space); /*Round down to the last line*/ 1a6dc: f9b8 2008 ldrsh.w r2, [r8, #8] 1a6e0: 444a add r2, r9 p.y -= p.y % 1a6e2: fb90 f1f2 sdiv r1, r0, r2 1a6e6: fb02 0211 mls r2, r2, r1, r0 1a6ea: 1a9b subs r3, r3, r2 p.y -= line_space; /*Trim the last line space*/ 1a6ec: eba3 0909 sub.w r9, r3, r9 1a6f0: f8ad 9012 strh.w r9, [sp, #18] uint32_t letter_id = lv_label_get_letter_on(label, &p); 1a6f4: a904 add r1, sp, #16 1a6f6: 4620 mov r0, r4 1a6f8: 4b3a ldr r3, [pc, #232] ; (1a7e4 ) 1a6fa: 4798 blx r3 1a6fc: 4680 mov r8, r0 1a6fe: 4607 mov r7, r0 size_t txt_len = strlen(ext->text); 1a700: 682e ldr r6, [r5, #0] 1a702: 4630 mov r0, r6 1a704: 4b38 ldr r3, [pc, #224] ; (1a7e8 ) 1a706: 4798 blx r3 1a708: 4681 mov r9, r0 uint32_t byte_id = _lv_txt_encoded_get_byte_id(ext->text, letter_id); 1a70a: 4b38 ldr r3, [pc, #224] ; (1a7ec ) 1a70c: 681b ldr r3, [r3, #0] 1a70e: 4641 mov r1, r8 1a710: 4630 mov r0, r6 1a712: 4798 blx r3 1a714: 4606 mov r6, r0 1a716: 9005 str r0, [sp, #20] while(byte_id + LV_LABEL_DOT_NUM > txt_len) { 1a718: f100 0803 add.w r8, r0, #3 1a71c: 45c1 cmp r9, r8 1a71e: d20e bcs.n 1a73e byte_id -= _lv_txt_encoded_size(&ext->text[byte_id]); 1a720: f8df a0dc ldr.w sl, [pc, #220] ; 1a800 1a724: 6828 ldr r0, [r5, #0] 1a726: 4430 add r0, r6 1a728: f8da 3000 ldr.w r3, [sl] 1a72c: 4798 blx r3 1a72e: 9e05 ldr r6, [sp, #20] 1a730: 1a36 subs r6, r6, r0 1a732: 9605 str r6, [sp, #20] letter_id--; 1a734: 3f01 subs r7, #1 while(byte_id + LV_LABEL_DOT_NUM > txt_len) { 1a736: f106 0803 add.w r8, r6, #3 1a73a: 45c1 cmp r9, r8 1a73c: d3f2 bcc.n 1a724 int32_t act_time = anim_cur ? anim_cur->act_time : 0; 1a73e: f04f 0a04 mov.w sl, #4 1a742: f04f 0900 mov.w r9, #0 len += _lv_txt_encoded_size(&ext->text[byte_id]); 1a746: f8df b0b8 ldr.w fp, [pc, #184] ; 1a800 1a74a: 6828 ldr r0, [r5, #0] 1a74c: 9b05 ldr r3, [sp, #20] 1a74e: 4418 add r0, r3 1a750: f8db 3000 ldr.w r3, [fp] 1a754: 4798 blx r3 1a756: 4481 add r9, r0 1a758: fa5f f989 uxtb.w r9, r9 _lv_txt_encoded_next(ext->text, &byte_id); 1a75c: a905 add r1, sp, #20 1a75e: 6828 ldr r0, [r5, #0] 1a760: 4b23 ldr r3, [pc, #140] ; (1a7f0 ) 1a762: 681b ldr r3, [r3, #0] 1a764: 4798 blx r3 for(i = 0; i <= LV_LABEL_DOT_NUM; i++) { 1a766: f1ba 0a01 subs.w sl, sl, #1 1a76a: d1ee bne.n 1a74a if(lv_label_set_dot_tmp(label, &ext->text[byte_id_ori], len)) { 1a76c: 6829 ldr r1, [r5, #0] 1a76e: 464a mov r2, r9 1a770: 4431 add r1, r6 1a772: 4620 mov r0, r4 1a774: 4b1f ldr r3, [pc, #124] ; (1a7f4 ) 1a776: 4798 blx r3 1a778: 2800 cmp r0, #0 1a77a: f43f ae10 beq.w 1a39e 1a77e: 1cf1 adds r1, r6, #3 ext->text[byte_id_ori + i] = '.'; 1a780: 222e movs r2, #46 ; 0x2e 1a782: 682b ldr r3, [r5, #0] 1a784: 559a strb r2, [r3, r6] 1a786: 3601 adds r6, #1 for(i = 0; i < LV_LABEL_DOT_NUM; i++) { 1a788: 428e cmp r6, r1 1a78a: d1fa bne.n 1a782 ext->text[byte_id_ori + LV_LABEL_DOT_NUM] = '\0'; 1a78c: 682b ldr r3, [r5, #0] 1a78e: 2200 movs r2, #0 1a790: f803 2008 strb.w r2, [r3, r8] ext->dot_end = letter_id + LV_LABEL_DOT_NUM; 1a794: 3703 adds r7, #3 1a796: 812f strh r7, [r5, #8] 1a798: e601 b.n 1a39e _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1a79a: 2210 movs r2, #16 1a79c: 2100 movs r1, #0 1a79e: 4620 mov r0, r4 1a7a0: 4e15 ldr r6, [pc, #84] ; (1a7f8 ) 1a7a2: 47b0 blx r6 1a7a4: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 1a7a6: 2211 movs r2, #17 1a7a8: 2100 movs r1, #0 1a7aa: 4620 mov r0, r4 1a7ac: 47b0 blx r6 size.y += lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN); 1a7ae: 1829 adds r1, r5, r0 1a7b0: f8bd 0056 ldrh.w r0, [sp, #86] ; 0x56 1a7b4: 4401 add r1, r0 1a7b6: b209 sxth r1, r1 1a7b8: f8ad 1056 strh.w r1, [sp, #86] ; 0x56 lv_obj_set_height(label, size.y); 1a7bc: 4620 mov r0, r4 1a7be: 4b0f ldr r3, [pc, #60] ; (1a7fc ) 1a7c0: 4798 blx r3 1a7c2: e5ec b.n 1a39e 1a7c4: 00019d6d .word 0x00019d6d 1a7c8: 00011329 .word 0x00011329 1a7cc: 00019d51 .word 0x00019d51 1a7d0: 00011491 .word 0x00011491 1a7d4: 00011455 .word 0x00011455 1a7d8: 000113a1 .word 0x000113a1 1a7dc: 20000060 .word 0x20000060 1a7e0: 00010061 .word 0x00010061 1a7e4: 0001a031 .word 0x0001a031 1a7e8: 0001b51f .word 0x0001b51f 1a7ec: 2000005c .word 0x2000005c 1a7f0: 20000058 .word 0x20000058 1a7f4: 00019de5 .word 0x00019de5 1a7f8: 000044d5 .word 0x000044d5 1a7fc: 000043b5 .word 0x000043b5 1a800: 20000054 .word 0x20000054 0001a804 : { 1a804: b5f0 push {r4, r5, r6, r7, lr} 1a806: b083 sub sp, #12 1a808: 4606 mov r6, r0 1a80a: 460d mov r5, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1a80c: 4b40 ldr r3, [pc, #256] ; (1a910 ) 1a80e: 4798 blx r3 1a810: b960 cbnz r0, 1a82c 1a812: 4b40 ldr r3, [pc, #256] ; (1a914 ) 1a814: 9300 str r3, [sp, #0] 1a816: 22b8 movs r2, #184 ; 0xb8 1a818: 493f ldr r1, [pc, #252] ; (1a918 ) 1a81a: 2003 movs r0, #3 1a81c: 4c3f ldr r4, [pc, #252] ; (1a91c ) 1a81e: 47a0 blx r4 1a820: 4632 mov r2, r6 1a822: 2300 movs r3, #0 1a824: 483e ldr r0, [pc, #248] ; (1a920 ) 1a826: 493f ldr r1, [pc, #252] ; (1a924 ) 1a828: 4788 blx r1 1a82a: e7fe b.n 1a82a lv_obj_invalidate(label); 1a82c: 4630 mov r0, r6 1a82e: 4b3e ldr r3, [pc, #248] ; (1a928 ) 1a830: 4798 blx r3 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1a832: 4630 mov r0, r6 1a834: 4b3d ldr r3, [pc, #244] ; (1a92c ) 1a836: 4798 blx r3 1a838: 4604 mov r4, r0 if(text == NULL) { 1a83a: b305 cbz r5, 1a87e LV_ASSERT_STR(text); 1a83c: 4628 mov r0, r5 1a83e: 4b34 ldr r3, [pc, #208] ; (1a910 ) 1a840: 4798 blx r3 1a842: b308 cbz r0, 1a888 if(ext->text == text && ext->static_txt == 0) { 1a844: 6827 ldr r7, [r4, #0] 1a846: 42bd cmp r5, r7 1a848: d02b beq.n 1a8a2 if(ext->text != NULL && ext->static_txt == 0) { 1a84a: b11f cbz r7, 1a854 1a84c: 7c23 ldrb r3, [r4, #16] 1a84e: f013 0f08 tst.w r3, #8 1a852: d049 beq.n 1a8e8 size_t len = strlen(text) + 1; 1a854: 4628 mov r0, r5 1a856: 4b36 ldr r3, [pc, #216] ; (1a930 ) 1a858: 4798 blx r3 ext->text = lv_mem_alloc(len); 1a85a: 3001 adds r0, #1 1a85c: 4b35 ldr r3, [pc, #212] ; (1a934 ) 1a85e: 4798 blx r3 1a860: 6020 str r0, [r4, #0] LV_ASSERT_MEM(ext->text); 1a862: 4b2b ldr r3, [pc, #172] ; (1a910 ) 1a864: 4798 blx r3 1a866: 2800 cmp r0, #0 1a868: d044 beq.n 1a8f4 if(ext->text == NULL) return; 1a86a: 6820 ldr r0, [r4, #0] 1a86c: b150 cbz r0, 1a884 strcpy(ext->text, text); 1a86e: 4629 mov r1, r5 1a870: 4b31 ldr r3, [pc, #196] ; (1a938 ) 1a872: 4798 blx r3 ext->static_txt = 0; 1a874: 7c23 ldrb r3, [r4, #16] 1a876: f36f 03c3 bfc r3, #3, #1 1a87a: 7423 strb r3, [r4, #16] 1a87c: e030 b.n 1a8e0 lv_label_refr_text(label); 1a87e: 4630 mov r0, r6 1a880: 4b2e ldr r3, [pc, #184] ; (1a93c ) 1a882: 4798 blx r3 } 1a884: b003 add sp, #12 1a886: bdf0 pop {r4, r5, r6, r7, pc} LV_ASSERT_STR(text); 1a888: 4b22 ldr r3, [pc, #136] ; (1a914 ) 1a88a: 9300 str r3, [sp, #0] 1a88c: 22c4 movs r2, #196 ; 0xc4 1a88e: 4922 ldr r1, [pc, #136] ; (1a918 ) 1a890: 2003 movs r0, #3 1a892: 4c22 ldr r4, [pc, #136] ; (1a91c ) 1a894: 47a0 blx r4 1a896: 462a mov r2, r5 1a898: 2300 movs r3, #0 1a89a: 4821 ldr r0, [pc, #132] ; (1a920 ) 1a89c: 4921 ldr r1, [pc, #132] ; (1a924 ) 1a89e: 4788 blx r1 1a8a0: e7fe b.n 1a8a0 if(ext->text == text && ext->static_txt == 0) { 1a8a2: 7c23 ldrb r3, [r4, #16] 1a8a4: f013 0f08 tst.w r3, #8 1a8a8: d1d4 bne.n 1a854 ext->text = lv_mem_realloc(ext->text, strlen(ext->text) + 1); 1a8aa: 4638 mov r0, r7 1a8ac: 4b20 ldr r3, [pc, #128] ; (1a930 ) 1a8ae: 4798 blx r3 1a8b0: 1c41 adds r1, r0, #1 1a8b2: 4638 mov r0, r7 1a8b4: 4b22 ldr r3, [pc, #136] ; (1a940 ) 1a8b6: 4798 blx r3 1a8b8: 6020 str r0, [r4, #0] LV_ASSERT_MEM(ext->text); 1a8ba: 4b15 ldr r3, [pc, #84] ; (1a910 ) 1a8bc: 4798 blx r3 1a8be: b960 cbnz r0, 1a8da 1a8c0: 4b14 ldr r3, [pc, #80] ; (1a914 ) 1a8c2: 9300 str r3, [sp, #0] 1a8c4: 22d5 movs r2, #213 ; 0xd5 1a8c6: 4914 ldr r1, [pc, #80] ; (1a918 ) 1a8c8: 2003 movs r0, #3 1a8ca: 4d14 ldr r5, [pc, #80] ; (1a91c ) 1a8cc: 47a8 blx r5 1a8ce: 6822 ldr r2, [r4, #0] 1a8d0: 2300 movs r3, #0 1a8d2: 481c ldr r0, [pc, #112] ; (1a944 ) 1a8d4: 4913 ldr r1, [pc, #76] ; (1a924 ) 1a8d6: 4788 blx r1 1a8d8: e7fe b.n 1a8d8 if(ext->text == NULL) return; 1a8da: 6823 ldr r3, [r4, #0] 1a8dc: 2b00 cmp r3, #0 1a8de: d0d1 beq.n 1a884 lv_label_refr_text(label); 1a8e0: 4630 mov r0, r6 1a8e2: 4b16 ldr r3, [pc, #88] ; (1a93c ) 1a8e4: 4798 blx r3 1a8e6: e7cd b.n 1a884 lv_mem_free(ext->text); 1a8e8: 4638 mov r0, r7 1a8ea: 4b17 ldr r3, [pc, #92] ; (1a948 ) 1a8ec: 4798 blx r3 ext->text = NULL; 1a8ee: 2300 movs r3, #0 1a8f0: 6023 str r3, [r4, #0] 1a8f2: e7af b.n 1a854 LV_ASSERT_MEM(ext->text); 1a8f4: 4b07 ldr r3, [pc, #28] ; (1a914 ) 1a8f6: 9300 str r3, [sp, #0] 1a8f8: 22ee movs r2, #238 ; 0xee 1a8fa: 4907 ldr r1, [pc, #28] ; (1a918 ) 1a8fc: 2003 movs r0, #3 1a8fe: 4d07 ldr r5, [pc, #28] ; (1a91c ) 1a900: 47a8 blx r5 1a902: 6822 ldr r2, [r4, #0] 1a904: 2300 movs r3, #0 1a906: 480f ldr r0, [pc, #60] ; (1a944 ) 1a908: 4906 ldr r1, [pc, #24] ; (1a924 ) 1a90a: 4788 blx r1 1a90c: e7fe b.n 1a90c 1a90e: bf00 nop 1a910: 000022b1 .word 0x000022b1 1a914: 00029878 .word 0x00029878 1a918: 00029994 .word 0x00029994 1a91c: 0001225d .word 0x0001225d 1a920: 0002483c .word 0x0002483c 1a924: 000022b9 .word 0x000022b9 1a928: 00003321 .word 0x00003321 1a92c: 00004d9d .word 0x00004d9d 1a930: 0001b51f .word 0x0001b51f 1a934: 000123dd .word 0x000123dd 1a938: 0001b50f .word 0x0001b50f 1a93c: 0001a301 .word 0x0001a301 1a940: 00012899 .word 0x00012899 1a944: 00023fd8 .word 0x00023fd8 1a948: 000124c5 .word 0x000124c5 0001a94c : { 1a94c: b570 push {r4, r5, r6, lr} 1a94e: b082 sub sp, #8 1a950: 4605 mov r5, r0 1a952: 460e mov r6, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1a954: 4b14 ldr r3, [pc, #80] ; (1a9a8 ) 1a956: 4798 blx r3 1a958: b968 cbnz r0, 1a976 1a95a: 4b14 ldr r3, [pc, #80] ; (1a9ac ) 1a95c: 9300 str r3, [sp, #0] 1a95e: f44f 72a6 mov.w r2, #332 ; 0x14c 1a962: 4913 ldr r1, [pc, #76] ; (1a9b0 ) 1a964: 2003 movs r0, #3 1a966: 4c13 ldr r4, [pc, #76] ; (1a9b4 ) 1a968: 47a0 blx r4 1a96a: 462a mov r2, r5 1a96c: 2300 movs r3, #0 1a96e: 4812 ldr r0, [pc, #72] ; (1a9b8 ) 1a970: 4912 ldr r1, [pc, #72] ; (1a9bc ) 1a972: 4788 blx r1 1a974: e7fe b.n 1a974 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1a976: 4628 mov r0, r5 1a978: 4b11 ldr r3, [pc, #68] ; (1a9c0 ) 1a97a: 4798 blx r3 1a97c: 4604 mov r4, r0 if(ext->static_txt == 0 && ext->text != NULL) { 1a97e: 7c03 ldrb r3, [r0, #16] 1a980: f013 0f08 tst.w r3, #8 1a984: d105 bne.n 1a992 1a986: 6800 ldr r0, [r0, #0] 1a988: b118 cbz r0, 1a992 lv_mem_free(ext->text); 1a98a: 4b0e ldr r3, [pc, #56] ; (1a9c4 ) 1a98c: 4798 blx r3 ext->text = NULL; 1a98e: 2300 movs r3, #0 1a990: 6023 str r3, [r4, #0] if(text != NULL) { 1a992: b126 cbz r6, 1a99e ext->static_txt = 1; 1a994: 7c23 ldrb r3, [r4, #16] 1a996: f043 0308 orr.w r3, r3, #8 1a99a: 7423 strb r3, [r4, #16] ext->text = (char *)text; 1a99c: 6026 str r6, [r4, #0] lv_label_refr_text(label); 1a99e: 4628 mov r0, r5 1a9a0: 4b09 ldr r3, [pc, #36] ; (1a9c8 ) 1a9a2: 4798 blx r3 } 1a9a4: b002 add sp, #8 1a9a6: bd70 pop {r4, r5, r6, pc} 1a9a8: 000022b1 .word 0x000022b1 1a9ac: 000298a4 .word 0x000298a4 1a9b0: 00029994 .word 0x00029994 1a9b4: 0001225d .word 0x0001225d 1a9b8: 0002483c .word 0x0002483c 1a9bc: 000022b9 .word 0x000022b9 1a9c0: 00004d9d .word 0x00004d9d 1a9c4: 000124c5 .word 0x000124c5 1a9c8: 0001a301 .word 0x0001a301 0001a9cc : { 1a9cc: b5f0 push {r4, r5, r6, r7, lr} 1a9ce: b083 sub sp, #12 1a9d0: 4605 mov r5, r0 1a9d2: 460f mov r7, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1a9d4: 4b22 ldr r3, [pc, #136] ; (1aa60 ) 1a9d6: 4798 blx r3 1a9d8: b968 cbnz r0, 1a9f6 1a9da: 4b22 ldr r3, [pc, #136] ; (1aa64 ) 1a9dc: 9300 str r3, [sp, #0] 1a9de: f240 1265 movw r2, #357 ; 0x165 1a9e2: 4921 ldr r1, [pc, #132] ; (1aa68 ) 1a9e4: 2003 movs r0, #3 1a9e6: 4c21 ldr r4, [pc, #132] ; (1aa6c ) 1a9e8: 47a0 blx r4 1a9ea: 462a mov r2, r5 1a9ec: 2300 movs r3, #0 1a9ee: 4820 ldr r0, [pc, #128] ; (1aa70 ) 1a9f0: 4920 ldr r1, [pc, #128] ; (1aa74 ) 1a9f2: 4788 blx r1 1a9f4: e7fe b.n 1a9f4 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1a9f6: 4628 mov r0, r5 1a9f8: 4b1f ldr r3, [pc, #124] ; (1aa78 ) 1a9fa: 4798 blx r3 1a9fc: 4604 mov r4, r0 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_x); 1a9fe: 491f ldr r1, [pc, #124] ; (1aa7c ) 1aa00: 4628 mov r0, r5 1aa02: 4e1f ldr r6, [pc, #124] ; (1aa80 ) 1aa04: 47b0 blx r6 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_y); 1aa06: 491f ldr r1, [pc, #124] ; (1aa84 ) 1aa08: 4628 mov r0, r5 1aa0a: 47b0 blx r6 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 1aa0c: 491e ldr r1, [pc, #120] ; (1aa88 ) 1aa0e: 4628 mov r0, r5 1aa10: 47b0 blx r6 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 1aa12: 491e ldr r1, [pc, #120] ; (1aa8c ) 1aa14: 4628 mov r0, r5 1aa16: 47b0 blx r6 ext->offset.x = 0; 1aa18: 2300 movs r3, #0 1aa1a: 81a3 strh r3, [r4, #12] ext->offset.y = 0; 1aa1c: 81e3 strh r3, [r4, #14] if(long_mode == LV_LABEL_LONG_SROLL || long_mode == LV_LABEL_LONG_SROLL_CIRC || long_mode == LV_LABEL_LONG_CROP) 1aa1e: 1efb subs r3, r7, #3 1aa20: b2db uxtb r3, r3 1aa22: 2b02 cmp r3, #2 ext->expand = 1; 1aa24: 7c23 ldrb r3, [r4, #16] 1aa26: bf94 ite ls 1aa28: f043 0380 orrls.w r3, r3, #128 ; 0x80 ext->expand = 0; 1aa2c: f36f 13c7 bfchi r3, #7, #1 1aa30: 7423 strb r3, [r4, #16] if(ext->long_mode == LV_LABEL_LONG_DOT && ext->dot_end != LV_LABEL_DOT_END_INV) { 1aa32: 7c23 ldrb r3, [r4, #16] 1aa34: f003 0307 and.w r3, r3, #7 1aa38: 2b02 cmp r3, #2 1aa3a: d008 beq.n 1aa4e ext->long_mode = long_mode; 1aa3c: 7c23 ldrb r3, [r4, #16] 1aa3e: f367 0302 bfi r3, r7, #0, #3 1aa42: 7423 strb r3, [r4, #16] lv_label_refr_text(label); 1aa44: 4628 mov r0, r5 1aa46: 4b12 ldr r3, [pc, #72] ; (1aa90 ) 1aa48: 4798 blx r3 } 1aa4a: b003 add sp, #12 1aa4c: bdf0 pop {r4, r5, r6, r7, pc} if(ext->long_mode == LV_LABEL_LONG_DOT && ext->dot_end != LV_LABEL_DOT_END_INV) { 1aa4e: 8922 ldrh r2, [r4, #8] 1aa50: f64f 73ff movw r3, #65535 ; 0xffff 1aa54: 429a cmp r2, r3 1aa56: d0f1 beq.n 1aa3c lv_label_revert_dots(label); 1aa58: 4628 mov r0, r5 1aa5a: 4b0e ldr r3, [pc, #56] ; (1aa94 ) 1aa5c: 4798 blx r3 1aa5e: e7ed b.n 1aa3c 1aa60: 000022b1 .word 0x000022b1 1aa64: 000298c0 .word 0x000298c0 1aa68: 00029994 .word 0x00029994 1aa6c: 0001225d .word 0x0001225d 1aa70: 0002483c .word 0x0002483c 1aa74: 000022b9 .word 0x000022b9 1aa78: 00004d9d .word 0x00004d9d 1aa7c: 00003529 .word 0x00003529 1aa80: 00011329 .word 0x00011329 1aa84: 00003589 .word 0x00003589 1aa88: 00019d6d .word 0x00019d6d 1aa8c: 00019d51 .word 0x00019d51 1aa90: 0001a301 .word 0x0001a301 1aa94: 00019cc5 .word 0x00019cc5 0001aa98 : { 1aa98: b530 push {r4, r5, lr} 1aa9a: b083 sub sp, #12 1aa9c: 4604 mov r4, r0 1aa9e: 460d mov r5, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1aaa0: 4b10 ldr r3, [pc, #64] ; (1aae4 ) 1aaa2: 4798 blx r3 1aaa4: b968 cbnz r0, 1aac2 1aaa6: 4b10 ldr r3, [pc, #64] ; (1aae8 ) 1aaa8: 9300 str r3, [sp, #0] 1aaaa: f44f 72cd mov.w r2, #410 ; 0x19a 1aaae: 490f ldr r1, [pc, #60] ; (1aaec ) 1aab0: 2003 movs r0, #3 1aab2: 4d0f ldr r5, [pc, #60] ; (1aaf0 ) 1aab4: 47a8 blx r5 1aab6: 4622 mov r2, r4 1aab8: 2300 movs r3, #0 1aaba: 480e ldr r0, [pc, #56] ; (1aaf4 ) 1aabc: 490e ldr r1, [pc, #56] ; (1aaf8 ) 1aabe: 4788 blx r1 1aac0: e7fe b.n 1aac0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1aac2: 4620 mov r0, r4 1aac4: 4b0d ldr r3, [pc, #52] ; (1aafc ) 1aac6: 4798 blx r3 if(ext->recolor == en) return; 1aac8: 7c03 ldrb r3, [r0, #16] 1aaca: f3c3 1380 ubfx r3, r3, #6, #1 1aace: 42ab cmp r3, r5 1aad0: d006 beq.n 1aae0 ext->recolor = en == false ? 0 : 1; 1aad2: 7c03 ldrb r3, [r0, #16] 1aad4: f365 1386 bfi r3, r5, #6, #1 1aad8: 7403 strb r3, [r0, #16] lv_label_refr_text(label); /*Refresh the text because the potential colo codes in text needs to 1aada: 4620 mov r0, r4 1aadc: 4b08 ldr r3, [pc, #32] ; (1ab00 ) 1aade: 4798 blx r3 } 1aae0: b003 add sp, #12 1aae2: bd30 pop {r4, r5, pc} 1aae4: 000022b1 .word 0x000022b1 1aae8: 000298d8 .word 0x000298d8 1aaec: 00029994 .word 0x00029994 1aaf0: 0001225d .word 0x0001225d 1aaf4: 0002483c .word 0x0002483c 1aaf8: 000022b9 .word 0x000022b9 1aafc: 00004d9d .word 0x00004d9d 1ab00: 0001a301 .word 0x0001a301 0001ab04 : { 1ab04: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 1ab08: b082 sub sp, #8 1ab0a: 460f mov r7, r1 lv_obj_t * new_label = lv_obj_create(par, copy); 1ab0c: 4b79 ldr r3, [pc, #484] ; (1acf4 ) 1ab0e: 4798 blx r3 1ab10: 4604 mov r4, r0 LV_ASSERT_MEM(new_label); 1ab12: 4b79 ldr r3, [pc, #484] ; (1acf8 ) 1ab14: 4798 blx r3 1ab16: b1e8 cbz r0, 1ab54 if(new_label == NULL) return NULL; 1ab18: 2c00 cmp r4, #0 1ab1a: f000 809a beq.w 1ac52 if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(new_label); 1ab1e: 4b77 ldr r3, [pc, #476] ; (1acfc ) 1ab20: 681b ldr r3, [r3, #0] 1ab22: b323 cbz r3, 1ab6e lv_obj_allocate_ext_attr(new_label, sizeof(lv_label_ext_t)); 1ab24: 2114 movs r1, #20 1ab26: 4620 mov r0, r4 1ab28: 4b75 ldr r3, [pc, #468] ; (1ad00 ) 1ab2a: 4798 blx r3 lv_label_ext_t * ext = lv_obj_get_ext_attr(new_label); 1ab2c: 4620 mov r0, r4 1ab2e: 4b75 ldr r3, [pc, #468] ; (1ad04 ) 1ab30: 4798 blx r3 1ab32: 4605 mov r5, r0 LV_ASSERT_MEM(ext); 1ab34: 4b70 ldr r3, [pc, #448] ; (1acf8 ) 1ab36: 4798 blx r3 1ab38: b9f8 cbnz r0, 1ab7a 1ab3a: 4b73 ldr r3, [pc, #460] ; (1ad08 ) 1ab3c: 9300 str r3, [sp, #0] 1ab3e: 225d movs r2, #93 ; 0x5d 1ab40: 4972 ldr r1, [pc, #456] ; (1ad0c ) 1ab42: 2003 movs r0, #3 1ab44: 4c72 ldr r4, [pc, #456] ; (1ad10 ) 1ab46: 47a0 blx r4 1ab48: 462a mov r2, r5 1ab4a: 2300 movs r3, #0 1ab4c: 4871 ldr r0, [pc, #452] ; (1ad14 ) 1ab4e: 4972 ldr r1, [pc, #456] ; (1ad18 ) 1ab50: 4788 blx r1 1ab52: e7fe b.n 1ab52 LV_ASSERT_MEM(new_label); 1ab54: 4b6c ldr r3, [pc, #432] ; (1ad08 ) 1ab56: 9300 str r3, [sp, #0] 1ab58: 2254 movs r2, #84 ; 0x54 1ab5a: 496c ldr r1, [pc, #432] ; (1ad0c ) 1ab5c: 2003 movs r0, #3 1ab5e: 4d6c ldr r5, [pc, #432] ; (1ad10 ) 1ab60: 47a8 blx r5 1ab62: 4622 mov r2, r4 1ab64: 2300 movs r3, #0 1ab66: 486b ldr r0, [pc, #428] ; (1ad14 ) 1ab68: 496b ldr r1, [pc, #428] ; (1ad18 ) 1ab6a: 4788 blx r1 1ab6c: e7fe b.n 1ab6c if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(new_label); 1ab6e: 4620 mov r0, r4 1ab70: 4b6a ldr r3, [pc, #424] ; (1ad1c ) 1ab72: 4798 blx r3 1ab74: 4b61 ldr r3, [pc, #388] ; (1acfc ) 1ab76: 6018 str r0, [r3, #0] 1ab78: e7d4 b.n 1ab24 if(ext == NULL) { 1ab7a: 2d00 cmp r5, #0 1ab7c: d06d beq.n 1ac5a ext->text = NULL; 1ab7e: 2300 movs r3, #0 1ab80: 602b str r3, [r5, #0] ext->static_txt = 0; 1ab82: 7c2a ldrb r2, [r5, #16] ext->align = LV_LABEL_ALIGN_AUTO; 1ab84: f002 02b7 and.w r2, r2, #183 ; 0xb7 ext->dot_end = LV_LABEL_DOT_END_INV; 1ab88: f64f 71ff movw r1, #65535 ; 0xffff 1ab8c: 8129 strh r1, [r5, #8] ext->long_mode = LV_LABEL_LONG_EXPAND; 1ab8e: f042 0230 orr.w r2, r2, #48 ; 0x30 1ab92: f363 0202 bfi r2, r3, #0, #3 1ab96: 742a strb r2, [r5, #16] ext->anim_speed = LV_LABEL_DEF_SCROLL_SPEED; 1ab98: 2219 movs r2, #25 1ab9a: 816a strh r2, [r5, #10] ext->offset.x = 0; 1ab9c: 81ab strh r3, [r5, #12] ext->offset.y = 0; 1ab9e: 81eb strh r3, [r5, #14] ext->dot.tmp_ptr = NULL; 1aba0: 606b str r3, [r5, #4] ext->dot_tmp_alloc = 0; 1aba2: 7c6a ldrb r2, [r5, #17] 1aba4: f363 0200 bfi r2, r3, #0, #1 1aba8: 746a strb r2, [r5, #17] lv_obj_set_design_cb(new_label, lv_label_design); 1abaa: 495d ldr r1, [pc, #372] ; (1ad20 ) 1abac: 4620 mov r0, r4 1abae: 4b5d ldr r3, [pc, #372] ; (1ad24 ) 1abb0: 4798 blx r3 lv_obj_set_signal_cb(new_label, lv_label_signal); 1abb2: 495d ldr r1, [pc, #372] ; (1ad28 ) 1abb4: 4620 mov r0, r4 1abb6: 4b5d ldr r3, [pc, #372] ; (1ad2c ) 1abb8: 4798 blx r3 if(copy == NULL) { 1abba: 2f00 cmp r7, #0 1abbc: d052 beq.n 1ac64 lv_label_ext_t * copy_ext = lv_obj_get_ext_attr(copy); 1abbe: 4638 mov r0, r7 1abc0: 4b50 ldr r3, [pc, #320] ; (1ad04 ) 1abc2: 4798 blx r3 1abc4: 4606 mov r6, r0 lv_label_set_long_mode(new_label, lv_label_get_long_mode(copy)); 1abc6: 4638 mov r0, r7 1abc8: 4b59 ldr r3, [pc, #356] ; (1ad30 ) 1abca: 4798 blx r3 1abcc: 4601 mov r1, r0 1abce: 4620 mov r0, r4 1abd0: 4b58 ldr r3, [pc, #352] ; (1ad34 ) 1abd2: 4798 blx r3 lv_label_set_recolor(new_label, lv_label_get_recolor(copy)); 1abd4: 4638 mov r0, r7 1abd6: 4b58 ldr r3, [pc, #352] ; (1ad38 ) 1abd8: 4798 blx r3 1abda: 4601 mov r1, r0 1abdc: 4620 mov r0, r4 1abde: 4b57 ldr r3, [pc, #348] ; (1ad3c ) 1abe0: 4798 blx r3 lv_label_set_align(new_label, lv_label_get_align(copy)); 1abe2: 4638 mov r0, r7 1abe4: 4b56 ldr r3, [pc, #344] ; (1ad40 ) 1abe6: 4798 blx r3 1abe8: 4601 mov r1, r0 1abea: 4620 mov r0, r4 1abec: 4b55 ldr r3, [pc, #340] ; (1ad44 ) 1abee: 4798 blx r3 if(copy_ext->static_txt == 0) 1abf0: 7c33 ldrb r3, [r6, #16] 1abf2: f013 0f08 tst.w r3, #8 1abf6: d146 bne.n 1ac86 lv_label_set_text(new_label, lv_label_get_text(copy)); 1abf8: 4638 mov r0, r7 1abfa: 4b53 ldr r3, [pc, #332] ; (1ad48 ) 1abfc: 4798 blx r3 1abfe: 4601 mov r1, r0 1ac00: 4620 mov r0, r4 1ac02: 4b52 ldr r3, [pc, #328] ; (1ad4c ) 1ac04: 4798 blx r3 if(copy_ext->long_mode == LV_LABEL_LONG_DOT) { 1ac06: 7c33 ldrb r3, [r6, #16] 1ac08: f003 0307 and.w r3, r3, #7 1ac0c: 2b02 cmp r3, #2 1ac0e: d042 beq.n 1ac96 if(copy_ext->dot_tmp_alloc && copy_ext->dot.tmp_ptr) { 1ac10: 7c73 ldrb r3, [r6, #17] 1ac12: f013 0f01 tst.w r3, #1 1ac16: d064 beq.n 1ace2 1ac18: 6870 ldr r0, [r6, #4] 1ac1a: 2800 cmp r0, #0 1ac1c: d061 beq.n 1ace2 uint16_t len = (uint16_t)strlen(copy_ext->dot.tmp_ptr); 1ac1e: 4b4c ldr r3, [pc, #304] ; (1ad50 ) 1ac20: 4798 blx r3 lv_label_set_dot_tmp(new_label, ext->dot.tmp_ptr, len); 1ac22: b282 uxth r2, r0 1ac24: 6869 ldr r1, [r5, #4] 1ac26: 4620 mov r0, r4 1ac28: 4b4a ldr r3, [pc, #296] ; (1ad54 ) 1ac2a: 4798 blx r3 ext->dot_tmp_alloc = copy_ext->dot_tmp_alloc; 1ac2c: 7c72 ldrb r2, [r6, #17] 1ac2e: 7c6b ldrb r3, [r5, #17] 1ac30: f362 0300 bfi r3, r2, #0, #1 1ac34: 746b strb r3, [r5, #17] ext->dot_end = copy_ext->dot_end; 1ac36: 8933 ldrh r3, [r6, #8] 1ac38: 812b strh r3, [r5, #8] lv_obj_refresh_style(new_label, LV_STYLE_PROP_ALL); 1ac3a: 21ff movs r1, #255 ; 0xff 1ac3c: 4620 mov r0, r4 1ac3e: 4b46 ldr r3, [pc, #280] ; (1ad58 ) 1ac40: 4798 blx r3 LV_LOG_INFO("label created"); 1ac42: 4b46 ldr r3, [pc, #280] ; (1ad5c ) 1ac44: 9300 str r3, [sp, #0] 1ac46: 4b30 ldr r3, [pc, #192] ; (1ad08 ) 1ac48: 22a8 movs r2, #168 ; 0xa8 1ac4a: 4930 ldr r1, [pc, #192] ; (1ad0c ) 1ac4c: 2001 movs r0, #1 1ac4e: 4d30 ldr r5, [pc, #192] ; (1ad10 ) 1ac50: 47a8 blx r5 } 1ac52: 4620 mov r0, r4 1ac54: b002 add sp, #8 1ac56: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} lv_obj_del(new_label); 1ac5a: 4620 mov r0, r4 1ac5c: 4b40 ldr r3, [pc, #256] ; (1ad60 ) 1ac5e: 4798 blx r3 return NULL; 1ac60: 2400 movs r4, #0 1ac62: e7f6 b.n 1ac52 lv_theme_apply(new_label, LV_THEME_LABEL); 1ac64: 2112 movs r1, #18 1ac66: 4620 mov r0, r4 1ac68: 4b3e ldr r3, [pc, #248] ; (1ad64 ) 1ac6a: 4798 blx r3 lv_obj_set_click(new_label, false); 1ac6c: 2100 movs r1, #0 1ac6e: 4620 mov r0, r4 1ac70: 4b3d ldr r3, [pc, #244] ; (1ad68 ) 1ac72: 4798 blx r3 lv_label_set_long_mode(new_label, LV_LABEL_LONG_EXPAND); 1ac74: 2100 movs r1, #0 1ac76: 4620 mov r0, r4 1ac78: 4b2e ldr r3, [pc, #184] ; (1ad34 ) 1ac7a: 4798 blx r3 lv_label_set_text(new_label, "Text"); 1ac7c: 493b ldr r1, [pc, #236] ; (1ad6c ) 1ac7e: 4620 mov r0, r4 1ac80: 4b32 ldr r3, [pc, #200] ; (1ad4c ) 1ac82: 4798 blx r3 1ac84: e7dd b.n 1ac42 lv_label_set_text_static(new_label, lv_label_get_text(copy)); 1ac86: 4638 mov r0, r7 1ac88: 4b2f ldr r3, [pc, #188] ; (1ad48 ) 1ac8a: 4798 blx r3 1ac8c: 4601 mov r1, r0 1ac8e: 4620 mov r0, r4 1ac90: 4b37 ldr r3, [pc, #220] ; (1ad70 ) 1ac92: 4798 blx r3 1ac94: e7b7 b.n 1ac06 ext->text = lv_mem_realloc(ext->text, _lv_mem_get_size(copy_ext->text)); 1ac96: 682f ldr r7, [r5, #0] 1ac98: 6830 ldr r0, [r6, #0] 1ac9a: 4b36 ldr r3, [pc, #216] ; (1ad74 ) 1ac9c: 4798 blx r3 1ac9e: 4601 mov r1, r0 1aca0: 4638 mov r0, r7 1aca2: 4b35 ldr r3, [pc, #212] ; (1ad78 ) 1aca4: 4798 blx r3 1aca6: 6028 str r0, [r5, #0] LV_ASSERT_MEM(ext->text); 1aca8: 4b13 ldr r3, [pc, #76] ; (1acf8 ) 1acaa: 4798 blx r3 1acac: b960 cbnz r0, 1acc8 1acae: 4b16 ldr r3, [pc, #88] ; (1ad08 ) 1acb0: 9300 str r3, [sp, #0] 1acb2: 2295 movs r2, #149 ; 0x95 1acb4: 4915 ldr r1, [pc, #84] ; (1ad0c ) 1acb6: 2003 movs r0, #3 1acb8: 4c15 ldr r4, [pc, #84] ; (1ad10 ) 1acba: 47a0 blx r4 1acbc: 682a ldr r2, [r5, #0] 1acbe: 2300 movs r3, #0 1acc0: 4814 ldr r0, [pc, #80] ; (1ad14 ) 1acc2: 4915 ldr r1, [pc, #84] ; (1ad18 ) 1acc4: 4788 blx r1 1acc6: e7fe b.n 1acc6 if(ext->text == NULL) return NULL; 1acc8: 682f ldr r7, [r5, #0] 1acca: b187 cbz r7, 1acee _lv_memcpy(ext->text, copy_ext->text, _lv_mem_get_size(copy_ext->text)); 1accc: f8d6 8000 ldr.w r8, [r6] 1acd0: 4640 mov r0, r8 1acd2: 4b28 ldr r3, [pc, #160] ; (1ad74 ) 1acd4: 4798 blx r3 1acd6: 4602 mov r2, r0 1acd8: 4641 mov r1, r8 1acda: 4638 mov r0, r7 1acdc: 4b27 ldr r3, [pc, #156] ; (1ad7c ) 1acde: 4798 blx r3 1ace0: e796 b.n 1ac10 _lv_memcpy(ext->dot.tmp, copy_ext->dot.tmp, sizeof(ext->dot.tmp)); 1ace2: 2204 movs r2, #4 1ace4: 18b1 adds r1, r6, r2 1ace6: 18a8 adds r0, r5, r2 1ace8: 4b24 ldr r3, [pc, #144] ; (1ad7c ) 1acea: 4798 blx r3 1acec: e79e b.n 1ac2c if(ext->text == NULL) return NULL; 1acee: 2400 movs r4, #0 1acf0: e7af b.n 1ac52 1acf2: bf00 nop 1acf4: 00003e25 .word 0x00003e25 1acf8: 000022b1 .word 0x000022b1 1acfc: 20006c00 .word 0x20006c00 1ad00: 00002bd1 .word 0x00002bd1 1ad04: 00004d9d .word 0x00004d9d 1ad08: 000298f0 .word 0x000298f0 1ad0c: 00029994 .word 0x00029994 1ad10: 0001225d .word 0x0001225d 1ad14: 00023fd8 .word 0x00023fd8 1ad18: 000022b9 .word 0x000022b9 1ad1c: 00004d55 .word 0x00004d55 1ad20: 0001af01 .word 0x0001af01 1ad24: 00002b89 .word 0x00002b89 1ad28: 0001ad81 .word 0x0001ad81 1ad2c: 00002b2d .word 0x00002b2d 1ad30: 00019f2d .word 0x00019f2d 1ad34: 0001a9cd .word 0x0001a9cd 1ad38: 00019fdd .word 0x00019fdd 1ad3c: 0001aa99 .word 0x0001aa99 1ad40: 00019f81 .word 0x00019f81 1ad44: 00019e71 .word 0x00019e71 1ad48: 00019edd .word 0x00019edd 1ad4c: 0001a805 .word 0x0001a805 1ad50: 0001b51f .word 0x0001b51f 1ad54: 00019de5 .word 0x00019de5 1ad58: 00003a99 .word 0x00003a99 1ad5c: 000299f8 .word 0x000299f8 1ad60: 00004f65 .word 0x00004f65 1ad64: 000141e9 .word 0x000141e9 1ad68: 000029a1 .word 0x000029a1 1ad6c: 000299f0 .word 0x000299f0 1ad70: 0001a94d .word 0x0001a94d 1ad74: 00012551 .word 0x00012551 1ad78: 00012899 .word 0x00012899 1ad7c: 00012655 .word 0x00012655 0001ad80 : { 1ad80: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 1ad84: 4607 mov r7, r0 1ad86: 4615 mov r5, r2 if(sign == LV_SIGNAL_GET_STYLE) { 1ad88: 2908 cmp r1, #8 1ad8a: d015 beq.n 1adb8 1ad8c: 460c mov r4, r1 res = ancestor_signal(label, sign, param); 1ad8e: 4b30 ldr r3, [pc, #192] ; (1ae50 ) 1ad90: 681b ldr r3, [r3, #0] 1ad92: 4798 blx r3 1ad94: 4606 mov r6, r0 if(res != LV_RES_OK) return res; 1ad96: 2801 cmp r0, #1 1ad98: d115 bne.n 1adc6 if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 1ad9a: 2c07 cmp r4, #7 1ad9c: d020 beq.n 1ade0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1ad9e: 4638 mov r0, r7 1ada0: 4b2c ldr r3, [pc, #176] ; (1ae54 ) 1ada2: 4798 blx r3 1ada4: 4680 mov r8, r0 if(sign == LV_SIGNAL_CLEANUP) { 1ada6: bb44 cbnz r4, 1adfa if(ext->static_txt == 0) { 1ada8: 7c03 ldrb r3, [r0, #16] 1adaa: f013 0f08 tst.w r3, #8 1adae: d01d beq.n 1adec lv_label_dot_tmp_free(label); 1adb0: 4638 mov r0, r7 1adb2: 4b29 ldr r3, [pc, #164] ; (1ae58 ) 1adb4: 4798 blx r3 1adb6: e006 b.n 1adc6 switch(type) { 1adb8: 7813 ldrb r3, [r2, #0] 1adba: b93b cbnz r3, 1adcc style_dsc_p = &label->style_list; 1adbc: f100 0328 add.w r3, r0, #40 ; 0x28 info->result = lv_label_get_style(label, info->part); 1adc0: 606b str r3, [r5, #4] if(info->result != NULL) return LV_RES_OK; 1adc2: 2601 movs r6, #1 1adc4: b123 cbz r3, 1add0 } 1adc6: 4630 mov r0, r6 1adc8: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} style_dsc_p = NULL; 1adcc: 2300 movs r3, #0 1adce: e7f7 b.n 1adc0 else return ancestor_signal(label, sign, param); 1add0: 4b1f ldr r3, [pc, #124] ; (1ae50 ) 1add2: 681b ldr r3, [r3, #0] 1add4: 462a mov r2, r5 1add6: 2108 movs r1, #8 1add8: 4638 mov r0, r7 1adda: 4798 blx r3 1addc: 4606 mov r6, r0 1adde: e7f2 b.n 1adc6 if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 1ade0: 491e ldr r1, [pc, #120] ; (1ae5c ) 1ade2: 4628 mov r0, r5 1ade4: 4b1e ldr r3, [pc, #120] ; (1ae60 ) 1ade6: 4798 blx r3 1ade8: 4606 mov r6, r0 1adea: e7ec b.n 1adc6 lv_mem_free(ext->text); 1adec: 6800 ldr r0, [r0, #0] 1adee: 4b1d ldr r3, [pc, #116] ; (1ae64 ) 1adf0: 4798 blx r3 ext->text = NULL; 1adf2: 2300 movs r3, #0 1adf4: f8c8 3000 str.w r3, [r8] 1adf8: e7da b.n 1adb0 else if(sign == LV_SIGNAL_STYLE_CHG) { 1adfa: 2c04 cmp r4, #4 1adfc: d014 beq.n 1ae28 else if(sign == LV_SIGNAL_COORD_CHG) { 1adfe: 2c02 cmp r4, #2 1ae00: d1e1 bne.n 1adc6 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1ae02: 88aa ldrh r2, [r5, #4] 1ae04: 3201 adds r2, #1 1ae06: 882b ldrh r3, [r5, #0] 1ae08: 1ad2 subs r2, r2, r3 1ae0a: 8abb ldrh r3, [r7, #20] 1ae0c: 3301 adds r3, #1 1ae0e: 8a39 ldrh r1, [r7, #16] 1ae10: 1a5b subs r3, r3, r1 if(lv_area_get_width(&label->coords) != lv_area_get_width(param) || 1ae12: b292 uxth r2, r2 1ae14: b29b uxth r3, r3 1ae16: 429a cmp r2, r3 1ae18: d00d beq.n 1ae36 lv_label_revert_dots(label); 1ae1a: 4638 mov r0, r7 1ae1c: 4b12 ldr r3, [pc, #72] ; (1ae68 ) 1ae1e: 4798 blx r3 lv_label_refr_text(label); 1ae20: 4638 mov r0, r7 1ae22: 4b12 ldr r3, [pc, #72] ; (1ae6c ) 1ae24: 4798 blx r3 1ae26: e7ce b.n 1adc6 lv_label_revert_dots(label); 1ae28: 4638 mov r0, r7 1ae2a: 4b0f ldr r3, [pc, #60] ; (1ae68 ) 1ae2c: 4798 blx r3 lv_label_refr_text(label); 1ae2e: 4638 mov r0, r7 1ae30: 4b0e ldr r3, [pc, #56] ; (1ae6c ) 1ae32: 4798 blx r3 1ae34: e7c7 b.n 1adc6 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1ae36: 88ea ldrh r2, [r5, #6] 1ae38: 3201 adds r2, #1 1ae3a: 886b ldrh r3, [r5, #2] 1ae3c: 1ad2 subs r2, r2, r3 1ae3e: 8afb ldrh r3, [r7, #22] 1ae40: 3301 adds r3, #1 1ae42: 8a79 ldrh r1, [r7, #18] 1ae44: 1a5b subs r3, r3, r1 if(lv_area_get_width(&label->coords) != lv_area_get_width(param) || 1ae46: b292 uxth r2, r2 1ae48: b29b uxth r3, r3 1ae4a: 429a cmp r2, r3 1ae4c: d1e5 bne.n 1ae1a 1ae4e: e7ba b.n 1adc6 1ae50: 20006c00 .word 0x20006c00 1ae54: 00004d9d .word 0x00004d9d 1ae58: 00019c95 .word 0x00019c95 1ae5c: 00029a08 .word 0x00029a08 1ae60: 00005095 .word 0x00005095 1ae64: 000124c5 .word 0x000124c5 1ae68: 00019cc5 .word 0x00019cc5 1ae6c: 0001a301 .word 0x0001a301 0001ae70 : { 1ae70: b530 push {r4, r5, lr} 1ae72: b083 sub sp, #12 1ae74: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1ae76: 4b0a ldr r3, [pc, #40] ; (1aea0 ) 1ae78: 4798 blx r3 1ae7a: b118 cbz r0, 1ae84 } 1ae7c: f64f 70ff movw r0, #65535 ; 0xffff 1ae80: b003 add sp, #12 1ae82: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1ae84: 4b07 ldr r3, [pc, #28] ; (1aea4 ) 1ae86: 9300 str r3, [sp, #0] 1ae88: f240 321d movw r2, #797 ; 0x31d 1ae8c: 4906 ldr r1, [pc, #24] ; (1aea8 ) 1ae8e: 2003 movs r0, #3 1ae90: 4d06 ldr r5, [pc, #24] ; (1aeac ) 1ae92: 47a8 blx r5 1ae94: 4622 mov r2, r4 1ae96: 2300 movs r3, #0 1ae98: 4805 ldr r0, [pc, #20] ; (1aeb0 ) 1ae9a: 4906 ldr r1, [pc, #24] ; (1aeb4 ) 1ae9c: 4788 blx r1 1ae9e: e7fe b.n 1ae9e 1aea0: 000022b1 .word 0x000022b1 1aea4: 00029918 .word 0x00029918 1aea8: 00029994 .word 0x00029994 1aeac: 0001225d .word 0x0001225d 1aeb0: 0002483c .word 0x0002483c 1aeb4: 000022b9 .word 0x000022b9 0001aeb8 : { 1aeb8: b530 push {r4, r5, lr} 1aeba: b083 sub sp, #12 1aebc: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1aebe: 4b0a ldr r3, [pc, #40] ; (1aee8 ) 1aec0: 4798 blx r3 1aec2: b118 cbz r0, 1aecc } 1aec4: f64f 70ff movw r0, #65535 ; 0xffff 1aec8: b003 add sp, #12 1aeca: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1aecc: 4b07 ldr r3, [pc, #28] ; (1aeec ) 1aece: 9300 str r3, [sp, #0] 1aed0: f44f 724c mov.w r2, #816 ; 0x330 1aed4: 4906 ldr r1, [pc, #24] ; (1aef0 ) 1aed6: 2003 movs r0, #3 1aed8: 4d06 ldr r5, [pc, #24] ; (1aef4 ) 1aeda: 47a8 blx r5 1aedc: 4622 mov r2, r4 1aede: 2300 movs r3, #0 1aee0: 4805 ldr r0, [pc, #20] ; (1aef8 ) 1aee2: 4906 ldr r1, [pc, #24] ; (1aefc ) 1aee4: 4788 blx r1 1aee6: e7fe b.n 1aee6 1aee8: 000022b1 .word 0x000022b1 1aeec: 00029934 .word 0x00029934 1aef0: 00029994 .word 0x00029994 1aef4: 0001225d .word 0x0001225d 1aef8: 0002483c .word 0x0002483c 1aefc: 000022b9 .word 0x000022b9 0001af00 : if(mode == LV_DESIGN_COVER_CHK) 1af00: 2a02 cmp r2, #2 1af02: f000 811e beq.w 1b142 else if(mode == LV_DESIGN_DRAW_MAIN) { 1af06: b10a cbz r2, 1af0c return LV_DESIGN_RES_OK; 1af08: 2000 movs r0, #0 1af0a: 4770 bx lr { 1af0c: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 1af10: b0a9 sub sp, #164 ; 0xa4 1af12: 460f mov r7, r1 1af14: 4605 mov r5, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1af16: 4b8c ldr r3, [pc, #560] ; (1b148 ) 1af18: 4798 blx r3 1af1a: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 1af1c: 2204 movs r2, #4 1af1e: 2100 movs r1, #0 1af20: 4628 mov r0, r5 1af22: 4c8a ldr r4, [pc, #552] ; (1b14c ) 1af24: 47a0 blx r4 1af26: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 1af28: 2205 movs r2, #5 1af2a: 2100 movs r1, #0 1af2c: 4628 mov r0, r5 1af2e: 47a0 blx r4 1af30: f105 030f add.w r3, r5, #15 1af34: f105 0617 add.w r6, r5, #23 uint8_t * d8 = (uint8_t *)dst; 1af38: aa06 add r2, sp, #24 *d8 = *s8; 1af3a: f813 4f01 ldrb.w r4, [r3, #1]! 1af3e: f802 4b01 strb.w r4, [r2], #1 while(len) { 1af42: 42b3 cmp r3, r6 1af44: d1f9 bne.n 1af3a bg_coords.x1 -= w; 1af46: fa1f f989 uxth.w r9, r9 1af4a: f8bd 3018 ldrh.w r3, [sp, #24] 1af4e: eba3 0309 sub.w r3, r3, r9 1af52: f8ad 3018 strh.w r3, [sp, #24] bg_coords.x2 += w; 1af56: f8bd 301c ldrh.w r3, [sp, #28] 1af5a: 4499 add r9, r3 1af5c: f8ad 901c strh.w r9, [sp, #28] bg_coords.y1 -= h; 1af60: b280 uxth r0, r0 1af62: f8bd 301a ldrh.w r3, [sp, #26] 1af66: 1a1b subs r3, r3, r0 1af68: f8ad 301a strh.w r3, [sp, #26] bg_coords.y2 += h; 1af6c: f8bd 301e ldrh.w r3, [sp, #30] 1af70: 4418 add r0, r3 1af72: f8ad 001e strh.w r0, [sp, #30] lv_draw_rect_dsc_init(&draw_rect_dsc); 1af76: a813 add r0, sp, #76 ; 0x4c 1af78: 4b75 ldr r3, [pc, #468] ; (1b150 ) 1af7a: 4798 blx r3 lv_obj_init_draw_rect_dsc(label, LV_LABEL_PART_MAIN, &draw_rect_dsc); 1af7c: aa13 add r2, sp, #76 ; 0x4c 1af7e: 2100 movs r1, #0 1af80: 4628 mov r0, r5 1af82: 4b74 ldr r3, [pc, #464] ; (1b154 ) 1af84: 4798 blx r3 lv_draw_rect(&bg_coords, clip_area, &draw_rect_dsc); 1af86: aa13 add r2, sp, #76 ; 0x4c 1af88: 4639 mov r1, r7 1af8a: a806 add r0, sp, #24 1af8c: 4b72 ldr r3, [pc, #456] ; (1b158 ) 1af8e: 4798 blx r3 get_txt_coords(label, &txt_coords); 1af90: a908 add r1, sp, #32 1af92: 4628 mov r0, r5 1af94: 4b71 ldr r3, [pc, #452] ; (1b15c ) 1af96: 4798 blx r3 bool is_common = _lv_area_intersect(&txt_clip, clip_area, &txt_coords); 1af98: aa08 add r2, sp, #32 1af9a: 4639 mov r1, r7 1af9c: a80a add r0, sp, #40 ; 0x28 1af9e: 4b70 ldr r3, [pc, #448] ; (1b160 ) 1afa0: 4798 blx r3 if(!is_common) return LV_DESIGN_RES_OK; 1afa2: b910 cbnz r0, 1afaa } 1afa4: b029 add sp, #164 ; 0xa4 1afa6: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} lv_label_align_t align = lv_label_get_align(label); 1afaa: 4628 mov r0, r5 1afac: 4b6d ldr r3, [pc, #436] ; (1b164 ) 1afae: 4798 blx r3 if(ext->recolor != 0) flag |= LV_TXT_FLAG_RECOLOR; 1afb0: f898 3010 ldrb.w r3, [r8, #16] lv_txt_flag_t flag = LV_TXT_FLAG_NONE; 1afb4: f3c3 1480 ubfx r4, r3, #6, #1 if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND; 1afb8: f013 0f80 tst.w r3, #128 ; 0x80 1afbc: bf18 it ne 1afbe: f044 0402 orrne.w r4, r4, #2 if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT; 1afc2: f013 0f07 tst.w r3, #7 1afc6: bf08 it eq 1afc8: f044 0410 orreq.w r4, r4, #16 if(align == LV_LABEL_ALIGN_CENTER) flag |= LV_TXT_FLAG_CENTER; 1afcc: 2801 cmp r0, #1 1afce: d038 beq.n 1b042 if(align == LV_LABEL_ALIGN_RIGHT) flag |= LV_TXT_FLAG_RIGHT; 1afd0: 2802 cmp r0, #2 1afd2: bf08 it eq 1afd4: f044 0408 orreq.w r4, r4, #8 lv_draw_label_dsc_init(&label_draw_dsc); 1afd8: a80c add r0, sp, #48 ; 0x30 1afda: 4b63 ldr r3, [pc, #396] ; (1b168 ) 1afdc: 4798 blx r3 label_draw_dsc.sel_start = lv_label_get_text_sel_start(label); 1afde: 4628 mov r0, r5 1afe0: 4b62 ldr r3, [pc, #392] ; (1b16c ) 1afe2: 4798 blx r3 1afe4: f8ad 003e strh.w r0, [sp, #62] ; 0x3e label_draw_dsc.sel_end = lv_label_get_text_sel_end(label); 1afe8: 4628 mov r0, r5 1afea: 4b61 ldr r3, [pc, #388] ; (1b170 ) 1afec: 4798 blx r3 1afee: f8ad 0040 strh.w r0, [sp, #64] ; 0x40 label_draw_dsc.ofs_x = ext->offset.x; 1aff2: f9b8 300c ldrsh.w r3, [r8, #12] 1aff6: f8ad 3042 strh.w r3, [sp, #66] ; 0x42 label_draw_dsc.ofs_y = ext->offset.y; 1affa: f9b8 300e ldrsh.w r3, [r8, #14] 1affe: f8ad 3044 strh.w r3, [sp, #68] ; 0x44 label_draw_dsc.flag = flag; 1b002: f88d 4047 strb.w r4, [sp, #71] ; 0x47 lv_obj_init_draw_label_dsc(label, LV_LABEL_PART_MAIN, &label_draw_dsc); 1b006: aa0c add r2, sp, #48 ; 0x30 1b008: 2100 movs r1, #0 1b00a: 4628 mov r0, r5 1b00c: 4b59 ldr r3, [pc, #356] ; (1b174 ) 1b00e: 4798 blx r3 if((ext->long_mode == LV_LABEL_LONG_SROLL || ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) && 1b010: f898 2010 ldrb.w r2, [r8, #16] 1b014: f002 0307 and.w r3, r2, #7 1b018: 3b03 subs r3, #3 1b01a: b2db uxtb r3, r3 1b01c: 2b01 cmp r3, #1 1b01e: d913 bls.n 1b048 lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 1b020: f8d8 3000 ldr.w r3, [r8] 1b024: 2200 movs r2, #0 1b026: 9200 str r2, [sp, #0] 1b028: aa0c add r2, sp, #48 ; 0x30 1b02a: a90a add r1, sp, #40 ; 0x28 1b02c: a808 add r0, sp, #32 1b02e: 4d52 ldr r5, [pc, #328] ; (1b178 ) 1b030: 47a8 blx r5 if(ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) { 1b032: f898 3010 ldrb.w r3, [r8, #16] 1b036: f003 0307 and.w r3, r3, #7 1b03a: 2b04 cmp r3, #4 1b03c: d02b beq.n 1b096 return LV_DESIGN_RES_OK; 1b03e: 2000 movs r0, #0 1b040: e7b0 b.n 1afa4 if(align == LV_LABEL_ALIGN_CENTER) flag |= LV_TXT_FLAG_CENTER; 1b042: f044 0404 orr.w r4, r4, #4 1b046: e7c7 b.n 1afd8 (ext->align == LV_LABEL_ALIGN_CENTER || ext->align == LV_LABEL_ALIGN_RIGHT)) { 1b048: f002 0230 and.w r2, r2, #48 ; 0x30 if((ext->long_mode == LV_LABEL_LONG_SROLL || ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) && 1b04c: 2a10 cmp r2, #16 1b04e: d001 beq.n 1b054 (ext->align == LV_LABEL_ALIGN_CENTER || ext->align == LV_LABEL_ALIGN_RIGHT)) { 1b050: 2a20 cmp r2, #32 1b052: d1e5 bne.n 1b020 _lv_txt_get_size(&size, ext->text, label_draw_dsc.font, label_draw_dsc.letter_space, label_draw_dsc.line_space, 1b054: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 1b058: f8d8 1000 ldr.w r1, [r8] 1b05c: 9402 str r4, [sp, #8] 1b05e: f647 4218 movw r2, #31768 ; 0x7c18 1b062: 9201 str r2, [sp, #4] 1b064: f9bd 203a ldrsh.w r2, [sp, #58] ; 0x3a 1b068: 9200 str r2, [sp, #0] 1b06a: 9a0d ldr r2, [sp, #52] ; 0x34 1b06c: a805 add r0, sp, #20 1b06e: 4d43 ldr r5, [pc, #268] ; (1b17c ) 1b070: 47a8 blx r5 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1b072: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 1b076: 3301 adds r3, #1 1b078: f8bd 2020 ldrh.w r2, [sp, #32] 1b07c: 1a9b subs r3, r3, r2 if(size.x > lv_area_get_width(&txt_coords)) { 1b07e: f9bd 2014 ldrsh.w r2, [sp, #20] 1b082: b21b sxth r3, r3 1b084: 429a cmp r2, r3 1b086: ddcb ble.n 1b020 label_draw_dsc.flag &= ~LV_TXT_FLAG_CENTER; 1b088: f89d 3047 ldrb.w r3, [sp, #71] ; 0x47 1b08c: f023 030c bic.w r3, r3, #12 1b090: f88d 3047 strb.w r3, [sp, #71] ; 0x47 1b094: e7c4 b.n 1b020 _lv_txt_get_size(&size, ext->text, label_draw_dsc.font, label_draw_dsc.letter_space, label_draw_dsc.line_space, 1b096: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 1b09a: f8d8 1000 ldr.w r1, [r8] 1b09e: 9402 str r4, [sp, #8] 1b0a0: f647 4218 movw r2, #31768 ; 0x7c18 1b0a4: 9201 str r2, [sp, #4] 1b0a6: f9bd 203a ldrsh.w r2, [sp, #58] ; 0x3a 1b0aa: 9200 str r2, [sp, #0] 1b0ac: 9a0d ldr r2, [sp, #52] ; 0x34 1b0ae: a805 add r0, sp, #20 1b0b0: 4c32 ldr r4, [pc, #200] ; (1b17c ) 1b0b2: 47a0 blx r4 if(size.x > lv_area_get_width(&txt_coords)) { 1b0b4: f9bd 2014 ldrsh.w r2, [sp, #20] 1b0b8: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 1b0bc: 3301 adds r3, #1 1b0be: f8bd 1020 ldrh.w r1, [sp, #32] 1b0c2: 1a5b subs r3, r3, r1 1b0c4: b21b sxth r3, r3 1b0c6: 429a cmp r2, r3 1b0c8: dc20 bgt.n 1b10c if(size.y > lv_area_get_height(&txt_coords)) { 1b0ca: f9bd 2016 ldrsh.w r2, [sp, #22] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1b0ce: f8bd 3026 ldrh.w r3, [sp, #38] ; 0x26 1b0d2: 3301 adds r3, #1 1b0d4: f8bd 1022 ldrh.w r1, [sp, #34] ; 0x22 1b0d8: 1a5b subs r3, r3, r1 1b0da: b21b sxth r3, r3 1b0dc: 429a cmp r2, r3 1b0de: ddae ble.n 1b03e label_draw_dsc.ofs_x = ext->offset.x; 1b0e0: f9b8 300c ldrsh.w r3, [r8, #12] 1b0e4: f8ad 3042 strh.w r3, [sp, #66] ; 0x42 1b0e8: 9b0d ldr r3, [sp, #52] ; 0x34 label_draw_dsc.ofs_y = ext->offset.y + size.y + lv_font_get_line_height(label_draw_dsc.font); 1b0ea: 891b ldrh r3, [r3, #8] 1b0ec: 4413 add r3, r2 1b0ee: f8b8 200e ldrh.w r2, [r8, #14] 1b0f2: 4413 add r3, r2 1b0f4: f8ad 3044 strh.w r3, [sp, #68] ; 0x44 lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 1b0f8: f8d8 3000 ldr.w r3, [r8] 1b0fc: 2200 movs r2, #0 1b0fe: 9200 str r2, [sp, #0] 1b100: aa0c add r2, sp, #48 ; 0x30 1b102: a90a add r1, sp, #40 ; 0x28 1b104: a808 add r0, sp, #32 1b106: 4c1c ldr r4, [pc, #112] ; (1b178 ) 1b108: 47a0 blx r4 1b10a: e798 b.n 1b03e label_draw_dsc.ofs_x = ext->offset.x + size.x + 1b10c: f8b8 400c ldrh.w r4, [r8, #12] 1b110: 4422 add r2, r4 1b112: b294 uxth r4, r2 lv_font_get_glyph_width(label_draw_dsc.font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT; 1b114: 2220 movs r2, #32 1b116: 4611 mov r1, r2 1b118: 980d ldr r0, [sp, #52] ; 0x34 1b11a: 4b19 ldr r3, [pc, #100] ; (1b180 ) 1b11c: 4798 blx r3 1b11e: eb00 0040 add.w r0, r0, r0, lsl #1 label_draw_dsc.ofs_x = ext->offset.x + size.x + 1b122: 4404 add r4, r0 1b124: f8ad 4042 strh.w r4, [sp, #66] ; 0x42 label_draw_dsc.ofs_y = ext->offset.y; 1b128: f9b8 300e ldrsh.w r3, [r8, #14] 1b12c: f8ad 3044 strh.w r3, [sp, #68] ; 0x44 lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 1b130: f8d8 3000 ldr.w r3, [r8] 1b134: 2200 movs r2, #0 1b136: 9200 str r2, [sp, #0] 1b138: aa0c add r2, sp, #48 ; 0x30 1b13a: a90a add r1, sp, #40 ; 0x28 1b13c: a808 add r0, sp, #32 1b13e: 47a8 blx r5 1b140: e7c3 b.n 1b0ca return LV_DESIGN_RES_NOT_COVER; 1b142: 2002 movs r0, #2 1b144: 4770 bx lr 1b146: bf00 nop 1b148: 00004d9d .word 0x00004d9d 1b14c: 000044d5 .word 0x000044d5 1b150: 0000c269 .word 0x0000c269 1b154: 000050c5 .word 0x000050c5 1b158: 0000c331 .word 0x0000c331 1b15c: 00019d89 .word 0x00019d89 1b160: 00011519 .word 0x00011519 1b164: 00019f81 .word 0x00019f81 1b168: 000099cd .word 0x000099cd 1b16c: 0001ae71 .word 0x0001ae71 1b170: 0001aeb9 .word 0x0001aeb9 1b174: 000056b1 .word 0x000056b1 1b178: 00009a25 .word 0x00009a25 1b17c: 0001407d .word 0x0001407d 1b180: 00010061 .word 0x00010061 0001b184 <__aeabi_uldivmod>: 1b184: b953 cbnz r3, 1b19c <__aeabi_uldivmod+0x18> 1b186: b94a cbnz r2, 1b19c <__aeabi_uldivmod+0x18> 1b188: 2900 cmp r1, #0 1b18a: bf08 it eq 1b18c: 2800 cmpeq r0, #0 1b18e: bf1c itt ne 1b190: f04f 31ff movne.w r1, #4294967295 1b194: f04f 30ff movne.w r0, #4294967295 1b198: f000 b97a b.w 1b490 <__aeabi_idiv0> 1b19c: f1ad 0c08 sub.w ip, sp, #8 1b1a0: e96d ce04 strd ip, lr, [sp, #-16]! 1b1a4: f000 f806 bl 1b1b4 <__udivmoddi4> 1b1a8: f8dd e004 ldr.w lr, [sp, #4] 1b1ac: e9dd 2302 ldrd r2, r3, [sp, #8] 1b1b0: b004 add sp, #16 1b1b2: 4770 bx lr 0001b1b4 <__udivmoddi4>: 1b1b4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 1b1b8: 468c mov ip, r1 1b1ba: 460d mov r5, r1 1b1bc: 4604 mov r4, r0 1b1be: 9e08 ldr r6, [sp, #32] 1b1c0: 2b00 cmp r3, #0 1b1c2: d151 bne.n 1b268 <__udivmoddi4+0xb4> 1b1c4: 428a cmp r2, r1 1b1c6: 4617 mov r7, r2 1b1c8: d96d bls.n 1b2a6 <__udivmoddi4+0xf2> 1b1ca: fab2 fe82 clz lr, r2 1b1ce: f1be 0f00 cmp.w lr, #0 1b1d2: d00b beq.n 1b1ec <__udivmoddi4+0x38> 1b1d4: f1ce 0c20 rsb ip, lr, #32 1b1d8: fa01 f50e lsl.w r5, r1, lr 1b1dc: fa20 fc0c lsr.w ip, r0, ip 1b1e0: fa02 f70e lsl.w r7, r2, lr 1b1e4: ea4c 0c05 orr.w ip, ip, r5 1b1e8: fa00 f40e lsl.w r4, r0, lr 1b1ec: ea4f 4a17 mov.w sl, r7, lsr #16 1b1f0: 0c25 lsrs r5, r4, #16 1b1f2: fbbc f8fa udiv r8, ip, sl 1b1f6: fa1f f987 uxth.w r9, r7 1b1fa: fb0a cc18 mls ip, sl, r8, ip 1b1fe: ea45 450c orr.w r5, r5, ip, lsl #16 1b202: fb08 f309 mul.w r3, r8, r9 1b206: 42ab cmp r3, r5 1b208: d90a bls.n 1b220 <__udivmoddi4+0x6c> 1b20a: 19ed adds r5, r5, r7 1b20c: f108 32ff add.w r2, r8, #4294967295 1b210: f080 8123 bcs.w 1b45a <__udivmoddi4+0x2a6> 1b214: 42ab cmp r3, r5 1b216: f240 8120 bls.w 1b45a <__udivmoddi4+0x2a6> 1b21a: f1a8 0802 sub.w r8, r8, #2 1b21e: 443d add r5, r7 1b220: 1aed subs r5, r5, r3 1b222: b2a4 uxth r4, r4 1b224: fbb5 f0fa udiv r0, r5, sl 1b228: fb0a 5510 mls r5, sl, r0, r5 1b22c: ea44 4405 orr.w r4, r4, r5, lsl #16 1b230: fb00 f909 mul.w r9, r0, r9 1b234: 45a1 cmp r9, r4 1b236: d909 bls.n 1b24c <__udivmoddi4+0x98> 1b238: 19e4 adds r4, r4, r7 1b23a: f100 33ff add.w r3, r0, #4294967295 1b23e: f080 810a bcs.w 1b456 <__udivmoddi4+0x2a2> 1b242: 45a1 cmp r9, r4 1b244: f240 8107 bls.w 1b456 <__udivmoddi4+0x2a2> 1b248: 3802 subs r0, #2 1b24a: 443c add r4, r7 1b24c: eba4 0409 sub.w r4, r4, r9 1b250: ea40 4008 orr.w r0, r0, r8, lsl #16 1b254: 2100 movs r1, #0 1b256: 2e00 cmp r6, #0 1b258: d061 beq.n 1b31e <__udivmoddi4+0x16a> 1b25a: fa24 f40e lsr.w r4, r4, lr 1b25e: 2300 movs r3, #0 1b260: 6034 str r4, [r6, #0] 1b262: 6073 str r3, [r6, #4] 1b264: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 1b268: 428b cmp r3, r1 1b26a: d907 bls.n 1b27c <__udivmoddi4+0xc8> 1b26c: 2e00 cmp r6, #0 1b26e: d054 beq.n 1b31a <__udivmoddi4+0x166> 1b270: 2100 movs r1, #0 1b272: e886 0021 stmia.w r6, {r0, r5} 1b276: 4608 mov r0, r1 1b278: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 1b27c: fab3 f183 clz r1, r3 1b280: 2900 cmp r1, #0 1b282: f040 808e bne.w 1b3a2 <__udivmoddi4+0x1ee> 1b286: 42ab cmp r3, r5 1b288: d302 bcc.n 1b290 <__udivmoddi4+0xdc> 1b28a: 4282 cmp r2, r0 1b28c: f200 80fa bhi.w 1b484 <__udivmoddi4+0x2d0> 1b290: 1a84 subs r4, r0, r2 1b292: eb65 0503 sbc.w r5, r5, r3 1b296: 2001 movs r0, #1 1b298: 46ac mov ip, r5 1b29a: 2e00 cmp r6, #0 1b29c: d03f beq.n 1b31e <__udivmoddi4+0x16a> 1b29e: e886 1010 stmia.w r6, {r4, ip} 1b2a2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 1b2a6: b912 cbnz r2, 1b2ae <__udivmoddi4+0xfa> 1b2a8: 2701 movs r7, #1 1b2aa: fbb7 f7f2 udiv r7, r7, r2 1b2ae: fab7 fe87 clz lr, r7 1b2b2: f1be 0f00 cmp.w lr, #0 1b2b6: d134 bne.n 1b322 <__udivmoddi4+0x16e> 1b2b8: 1beb subs r3, r5, r7 1b2ba: 0c3a lsrs r2, r7, #16 1b2bc: fa1f fc87 uxth.w ip, r7 1b2c0: 2101 movs r1, #1 1b2c2: fbb3 f8f2 udiv r8, r3, r2 1b2c6: 0c25 lsrs r5, r4, #16 1b2c8: fb02 3318 mls r3, r2, r8, r3 1b2cc: ea45 4503 orr.w r5, r5, r3, lsl #16 1b2d0: fb0c f308 mul.w r3, ip, r8 1b2d4: 42ab cmp r3, r5 1b2d6: d907 bls.n 1b2e8 <__udivmoddi4+0x134> 1b2d8: 19ed adds r5, r5, r7 1b2da: f108 30ff add.w r0, r8, #4294967295 1b2de: d202 bcs.n 1b2e6 <__udivmoddi4+0x132> 1b2e0: 42ab cmp r3, r5 1b2e2: f200 80d1 bhi.w 1b488 <__udivmoddi4+0x2d4> 1b2e6: 4680 mov r8, r0 1b2e8: 1aed subs r5, r5, r3 1b2ea: b2a3 uxth r3, r4 1b2ec: fbb5 f0f2 udiv r0, r5, r2 1b2f0: fb02 5510 mls r5, r2, r0, r5 1b2f4: ea43 4405 orr.w r4, r3, r5, lsl #16 1b2f8: fb0c fc00 mul.w ip, ip, r0 1b2fc: 45a4 cmp ip, r4 1b2fe: d907 bls.n 1b310 <__udivmoddi4+0x15c> 1b300: 19e4 adds r4, r4, r7 1b302: f100 33ff add.w r3, r0, #4294967295 1b306: d202 bcs.n 1b30e <__udivmoddi4+0x15a> 1b308: 45a4 cmp ip, r4 1b30a: f200 80b8 bhi.w 1b47e <__udivmoddi4+0x2ca> 1b30e: 4618 mov r0, r3 1b310: eba4 040c sub.w r4, r4, ip 1b314: ea40 4008 orr.w r0, r0, r8, lsl #16 1b318: e79d b.n 1b256 <__udivmoddi4+0xa2> 1b31a: 4631 mov r1, r6 1b31c: 4630 mov r0, r6 1b31e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 1b322: f1ce 0420 rsb r4, lr, #32 1b326: fa05 f30e lsl.w r3, r5, lr 1b32a: fa07 f70e lsl.w r7, r7, lr 1b32e: fa20 f804 lsr.w r8, r0, r4 1b332: 0c3a lsrs r2, r7, #16 1b334: fa25 f404 lsr.w r4, r5, r4 1b338: ea48 0803 orr.w r8, r8, r3 1b33c: fbb4 f1f2 udiv r1, r4, r2 1b340: ea4f 4518 mov.w r5, r8, lsr #16 1b344: fb02 4411 mls r4, r2, r1, r4 1b348: fa1f fc87 uxth.w ip, r7 1b34c: ea45 4504 orr.w r5, r5, r4, lsl #16 1b350: fb01 f30c mul.w r3, r1, ip 1b354: 42ab cmp r3, r5 1b356: fa00 f40e lsl.w r4, r0, lr 1b35a: d909 bls.n 1b370 <__udivmoddi4+0x1bc> 1b35c: 19ed adds r5, r5, r7 1b35e: f101 30ff add.w r0, r1, #4294967295 1b362: f080 808a bcs.w 1b47a <__udivmoddi4+0x2c6> 1b366: 42ab cmp r3, r5 1b368: f240 8087 bls.w 1b47a <__udivmoddi4+0x2c6> 1b36c: 3902 subs r1, #2 1b36e: 443d add r5, r7 1b370: 1aeb subs r3, r5, r3 1b372: fa1f f588 uxth.w r5, r8 1b376: fbb3 f0f2 udiv r0, r3, r2 1b37a: fb02 3310 mls r3, r2, r0, r3 1b37e: ea45 4503 orr.w r5, r5, r3, lsl #16 1b382: fb00 f30c mul.w r3, r0, ip 1b386: 42ab cmp r3, r5 1b388: d907 bls.n 1b39a <__udivmoddi4+0x1e6> 1b38a: 19ed adds r5, r5, r7 1b38c: f100 38ff add.w r8, r0, #4294967295 1b390: d26f bcs.n 1b472 <__udivmoddi4+0x2be> 1b392: 42ab cmp r3, r5 1b394: d96d bls.n 1b472 <__udivmoddi4+0x2be> 1b396: 3802 subs r0, #2 1b398: 443d add r5, r7 1b39a: 1aeb subs r3, r5, r3 1b39c: ea40 4101 orr.w r1, r0, r1, lsl #16 1b3a0: e78f b.n 1b2c2 <__udivmoddi4+0x10e> 1b3a2: f1c1 0720 rsb r7, r1, #32 1b3a6: fa22 f807 lsr.w r8, r2, r7 1b3aa: 408b lsls r3, r1 1b3ac: fa05 f401 lsl.w r4, r5, r1 1b3b0: ea48 0303 orr.w r3, r8, r3 1b3b4: fa20 fe07 lsr.w lr, r0, r7 1b3b8: ea4f 4c13 mov.w ip, r3, lsr #16 1b3bc: 40fd lsrs r5, r7 1b3be: ea4e 0e04 orr.w lr, lr, r4 1b3c2: fbb5 f9fc udiv r9, r5, ip 1b3c6: ea4f 441e mov.w r4, lr, lsr #16 1b3ca: fb0c 5519 mls r5, ip, r9, r5 1b3ce: fa1f f883 uxth.w r8, r3 1b3d2: ea44 4505 orr.w r5, r4, r5, lsl #16 1b3d6: fb09 f408 mul.w r4, r9, r8 1b3da: 42ac cmp r4, r5 1b3dc: fa02 f201 lsl.w r2, r2, r1 1b3e0: fa00 fa01 lsl.w sl, r0, r1 1b3e4: d908 bls.n 1b3f8 <__udivmoddi4+0x244> 1b3e6: 18ed adds r5, r5, r3 1b3e8: f109 30ff add.w r0, r9, #4294967295 1b3ec: d243 bcs.n 1b476 <__udivmoddi4+0x2c2> 1b3ee: 42ac cmp r4, r5 1b3f0: d941 bls.n 1b476 <__udivmoddi4+0x2c2> 1b3f2: f1a9 0902 sub.w r9, r9, #2 1b3f6: 441d add r5, r3 1b3f8: 1b2d subs r5, r5, r4 1b3fa: fa1f fe8e uxth.w lr, lr 1b3fe: fbb5 f0fc udiv r0, r5, ip 1b402: fb0c 5510 mls r5, ip, r0, r5 1b406: ea4e 4405 orr.w r4, lr, r5, lsl #16 1b40a: fb00 f808 mul.w r8, r0, r8 1b40e: 45a0 cmp r8, r4 1b410: d907 bls.n 1b422 <__udivmoddi4+0x26e> 1b412: 18e4 adds r4, r4, r3 1b414: f100 35ff add.w r5, r0, #4294967295 1b418: d229 bcs.n 1b46e <__udivmoddi4+0x2ba> 1b41a: 45a0 cmp r8, r4 1b41c: d927 bls.n 1b46e <__udivmoddi4+0x2ba> 1b41e: 3802 subs r0, #2 1b420: 441c add r4, r3 1b422: ea40 4009 orr.w r0, r0, r9, lsl #16 1b426: eba4 0408 sub.w r4, r4, r8 1b42a: fba0 8902 umull r8, r9, r0, r2 1b42e: 454c cmp r4, r9 1b430: 46c6 mov lr, r8 1b432: 464d mov r5, r9 1b434: d315 bcc.n 1b462 <__udivmoddi4+0x2ae> 1b436: d012 beq.n 1b45e <__udivmoddi4+0x2aa> 1b438: b156 cbz r6, 1b450 <__udivmoddi4+0x29c> 1b43a: ebba 030e subs.w r3, sl, lr 1b43e: eb64 0405 sbc.w r4, r4, r5 1b442: fa04 f707 lsl.w r7, r4, r7 1b446: 40cb lsrs r3, r1 1b448: 431f orrs r7, r3 1b44a: 40cc lsrs r4, r1 1b44c: 6037 str r7, [r6, #0] 1b44e: 6074 str r4, [r6, #4] 1b450: 2100 movs r1, #0 1b452: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 1b456: 4618 mov r0, r3 1b458: e6f8 b.n 1b24c <__udivmoddi4+0x98> 1b45a: 4690 mov r8, r2 1b45c: e6e0 b.n 1b220 <__udivmoddi4+0x6c> 1b45e: 45c2 cmp sl, r8 1b460: d2ea bcs.n 1b438 <__udivmoddi4+0x284> 1b462: ebb8 0e02 subs.w lr, r8, r2 1b466: eb69 0503 sbc.w r5, r9, r3 1b46a: 3801 subs r0, #1 1b46c: e7e4 b.n 1b438 <__udivmoddi4+0x284> 1b46e: 4628 mov r0, r5 1b470: e7d7 b.n 1b422 <__udivmoddi4+0x26e> 1b472: 4640 mov r0, r8 1b474: e791 b.n 1b39a <__udivmoddi4+0x1e6> 1b476: 4681 mov r9, r0 1b478: e7be b.n 1b3f8 <__udivmoddi4+0x244> 1b47a: 4601 mov r1, r0 1b47c: e778 b.n 1b370 <__udivmoddi4+0x1bc> 1b47e: 3802 subs r0, #2 1b480: 443c add r4, r7 1b482: e745 b.n 1b310 <__udivmoddi4+0x15c> 1b484: 4608 mov r0, r1 1b486: e708 b.n 1b29a <__udivmoddi4+0xe6> 1b488: f1a8 0802 sub.w r8, r8, #2 1b48c: 443d add r5, r7 1b48e: e72b b.n 1b2e8 <__udivmoddi4+0x134> 0001b490 <__aeabi_idiv0>: 1b490: 4770 bx lr 1b492: bf00 nop 0001b494 <__libc_init_array>: 1b494: b570 push {r4, r5, r6, lr} 1b496: 4e0d ldr r6, [pc, #52] ; (1b4cc <__libc_init_array+0x38>) 1b498: 4c0d ldr r4, [pc, #52] ; (1b4d0 <__libc_init_array+0x3c>) 1b49a: 1ba4 subs r4, r4, r6 1b49c: 10a4 asrs r4, r4, #2 1b49e: 2500 movs r5, #0 1b4a0: 42a5 cmp r5, r4 1b4a2: d109 bne.n 1b4b8 <__libc_init_array+0x24> 1b4a4: 4e0b ldr r6, [pc, #44] ; (1b4d4 <__libc_init_array+0x40>) 1b4a6: 4c0c ldr r4, [pc, #48] ; (1b4d8 <__libc_init_array+0x44>) 1b4a8: f00e fab4 bl 29a14 <_init> 1b4ac: 1ba4 subs r4, r4, r6 1b4ae: 10a4 asrs r4, r4, #2 1b4b0: 2500 movs r5, #0 1b4b2: 42a5 cmp r5, r4 1b4b4: d105 bne.n 1b4c2 <__libc_init_array+0x2e> 1b4b6: bd70 pop {r4, r5, r6, pc} 1b4b8: f856 3025 ldr.w r3, [r6, r5, lsl #2] 1b4bc: 4798 blx r3 1b4be: 3501 adds r5, #1 1b4c0: e7ee b.n 1b4a0 <__libc_init_array+0xc> 1b4c2: f856 3025 ldr.w r3, [r6, r5, lsl #2] 1b4c6: 4798 blx r3 1b4c8: 3501 adds r5, #1 1b4ca: e7f2 b.n 1b4b2 <__libc_init_array+0x1e> 1b4cc: 00029a20 .word 0x00029a20 1b4d0: 00029a20 .word 0x00029a20 1b4d4: 00029a20 .word 0x00029a20 1b4d8: 00029a24 .word 0x00029a24 0001b4dc : 1b4dc: b510 push {r4, lr} 1b4de: 3901 subs r1, #1 1b4e0: 4402 add r2, r0 1b4e2: 4290 cmp r0, r2 1b4e4: d101 bne.n 1b4ea 1b4e6: 2000 movs r0, #0 1b4e8: bd10 pop {r4, pc} 1b4ea: f810 3b01 ldrb.w r3, [r0], #1 1b4ee: f811 4f01 ldrb.w r4, [r1, #1]! 1b4f2: 42a3 cmp r3, r4 1b4f4: d0f5 beq.n 1b4e2 1b4f6: 1b18 subs r0, r3, r4 1b4f8: bd10 pop {r4, pc} 0001b4fa : 1b4fa: f810 2b01 ldrb.w r2, [r0], #1 1b4fe: f811 3b01 ldrb.w r3, [r1], #1 1b502: 2a01 cmp r2, #1 1b504: bf28 it cs 1b506: 429a cmpcs r2, r3 1b508: d0f7 beq.n 1b4fa 1b50a: 1ad0 subs r0, r2, r3 1b50c: 4770 bx lr 0001b50e : 1b50e: 4603 mov r3, r0 1b510: f811 2b01 ldrb.w r2, [r1], #1 1b514: f803 2b01 strb.w r2, [r3], #1 1b518: 2a00 cmp r2, #0 1b51a: d1f9 bne.n 1b510 1b51c: 4770 bx lr 0001b51e : 1b51e: 4603 mov r3, r0 1b520: f813 2b01 ldrb.w r2, [r3], #1 1b524: 2a00 cmp r2, #0 1b526: d1fb bne.n 1b520 1b528: 1a18 subs r0, r3, r0 1b52a: 3801 subs r0, #1 1b52c: 4770 bx lr 1b52e: 0000 movs r0, r0 1b530: 682f2e2e .word 0x682f2e2e 1b534: 702f6c70 .word 0x702f6c70 1b538: 2f74726f .word 0x2f74726f 1b53c: 5f6c7068 .word 0x5f6c7068 1b540: 6f697067 .word 0x6f697067 1b544: 7361625f .word 0x7361625f 1b548: 00682e65 .word 0x00682e65 1b54c: 682f2e2e .word 0x682f2e2e 1b550: 732f6c61 .word 0x732f6c61 1b554: 682f6372 .word 0x682f6372 1b558: 695f6c61 .word 0x695f6c61 1b55c: 00632e6f .word 0x00632e6f 1b560: 682f2e2e .word 0x682f2e2e 1b564: 732f6c61 .word 0x732f6c61 1b568: 682f6372 .word 0x682f6372 1b56c: 745f6c61 .word 0x745f6c61 1b570: 72656d69 .word 0x72656d69 1b574: 0000632e .word 0x0000632e 1b578: 682f2e2e .word 0x682f2e2e 1b57c: 732f6c61 .word 0x732f6c61 1b580: 682f6372 .word 0x682f6372 1b584: 755f6c61 .word 0x755f6c61 1b588: 74726173 .word 0x74726173 1b58c: 7973615f .word 0x7973615f 1b590: 632e636e .word 0x632e636e 1b594: 00000000 .word 0x00000000 1b598: 682f2e2e .word 0x682f2e2e 1b59c: 752f6c61 .word 0x752f6c61 1b5a0: 736c6974 .word 0x736c6974 1b5a4: 6372732f .word 0x6372732f 1b5a8: 6974752f .word 0x6974752f 1b5ac: 6c5f736c .word 0x6c5f736c 1b5b0: 2e747369 .word 0x2e747369 1b5b4: 00000063 .word 0x00000063 1b5b8: 682f2e2e .word 0x682f2e2e 1b5bc: 752f6c61 .word 0x752f6c61 1b5c0: 736c6974 .word 0x736c6974 1b5c4: 6372732f .word 0x6372732f 1b5c8: 6974752f .word 0x6974752f 1b5cc: 725f736c .word 0x725f736c 1b5d0: 62676e69 .word 0x62676e69 1b5d4: 65666675 .word 0x65666675 1b5d8: 00632e72 .word 0x00632e72 1b5dc: 40003000 .word 0x40003000 1b5e0: 40003400 .word 0x40003400 1b5e4: 41012000 .word 0x41012000 1b5e8: 41014000 .word 0x41014000 1b5ec: 43000000 .word 0x43000000 1b5f0: 43000400 .word 0x43000400 1b5f4: 43000800 .word 0x43000800 1b5f8: 43000c00 .word 0x43000c00 0001b5fc <_i2cms>: 1b5fc: 00000003 00200014 00000100 000000ff ...... ......... 1b60c: 00d70000 07270400 682f2e2e 732f6c70 ......'.../hpl/s 1b61c: 6f637265 70682f6d 65735f6c 6d6f6372 ercom/hpl_sercom 1b62c: 0000632e 40003800 40003c00 4101a000 .c...8.@.<.@...A 1b63c: 4101c000 42001400 42001800 43001400 ...A...B...B...C 1b64c: 43001800 ...C 0001b650 <_tcs>: 1b650: 006b0000 00000308 00000000 00003a97 ..k..........:.. 1b660: 00000000 682f2e2e 742f6c70 70682f63 ....../hpl/tc/hp 1b670: 63745f6c 0000632e l_tc.c.. 0001b678 : 1b678: 1662e40a 0000855b 0001b684 ..b.[....... 0001b684 : 1b684: ff07060b ffac882c ff871f25 ff895139 ....,...%...9Q.. 1b694: ffdcc46d ffc88348 ffc65632 ff46434d m...H...2V..MCF. 1b6a4: ff480a16 ffbca25c ffc22d38 ff8b6c67 ..H.\...8-..gl.. 1b6b4: ff48272d ff893622 ffc76d41 ffc38576 -'H."6..Am..v... 1b6c4: ffc6a49a ffa53520 ff692621 ffa95139 .... 5..!&i.9Q.. 1b6d4: ffe8e2a9 ff26242e ffe96e40 ffe98843 .....$&.@n..C... 1b6e4: ffaea64b ff873848 ffc5c4c9 ffa86e33 K...H8......3n.. 1b6f4: ff69646a ffe45640 ff69342e ff280917 jdi.@V...4i...(. 1b704: ffa8554e ffe7a996 ff838383 ff67101b NU............g. 1b714: ff9e8880 ffc76e60 ffe7a65f ffe99647 ....`n.._...G... 1b724: ffe68779 ffa9202e ff694527 ff8a4335 y.... ..'Ei.5C.. 1b734: ffa76f64 ff493329 ffc0b5af ff89575f do..)3I....._W.. 1b744: ffc75543 ffa9462d ff9f9789 ffab603f CU..-F......?`.. 1b754: ff882c1d ffc97948 ff27151b ffc69482 .,..Hy....'..... 1b764: ff69282f ffe6b669 ffdfd484 ff48151b /(i.i.........H. 1b774: ffc89364 ffe66e5b ffc14715 ffe4c4bc d...[n...G...... 1b784: ff98371e ffc66343 ffe1e4e8 ff73542a .7..Cc......*Ts. 1b794: ff673a3e ffb7532b ff872b32 ffe68a60 >:g.+S..2+..`... 1b7a4: ff19141e ffd68448 ff38373f ffea9964 ....H...?78.d... 1b7b4: ffd69881 ff875f47 ff592621 ff37161a ....G_..!&Y...7. 1b7c4: ffe65550 ff886e77 ffd8a894 ffa97a73 PU..wn......sz.. 1b7d4: ff571922 ffeba872 fff6f3de ffa3a59e ".W.r........... 1b7e4: ffe03d49 ff671c24 ffa28c94 ffa86254 I=..$.g.....Tb.. 1b7f4: ffecc483 ffd76e48 ffa9473f ffa93a38 ....Hn..?G..8:.. 1b804: ffd5d4d6 ffa77937 ffe76254 ff595861 ....7y..Tb..aXY. 1b814: ff884648 ffd6b4a7 ffb0999a ff9b5036 HF..........6P.. 1b824: ff782620 ff392328 ffb3b5b4 ffe77a45 &x.(#9.....Ez.. 1b834: ffe8b596 ff593331 ffd87a46 ffc19aa2 ....13Y.Fz...... 1b844: ff160c16 ffb1887e ff886263 ff797679 ....~...cb..yvy. 1b854: ff762930 ffc13d43 ff973c30 ff79362d 0)v.C=..0<..-6y. 1b864: ff67474c ff994530 ffbfb560 fff7975f LGg.0E..`..._... 1b874: ffd7624b ffc9875c ff952d18 ffe87959 Kb..\....-..Yy.. 1b884: ffc04945 ff94968f ff9c9729 ffebddae EI......)....... 1b894: ffc0aa64 ffe99a78 fff3ead1 ffc56232 d...x.......2b.. 1b8a4: ffd8343e ff685a61 ffda9842 fff1643e >4..aZh.B...>d.. 1b8b4: ff928678 ffd8b859 ffc67a62 ffe4dcdd x...Y...bz...... 1b8c4: ff867c7c ff574a54 ffdaa94f ffd58a7b ||..TJW.O...{... 1b8d4: ffafa9a4 ffd9a57b ffd6cdcd ff766b6f ....{.......okv. 1b8e4: ffecd27c fff7b894 ffa99931 ff84766c |.......1...lv.. 1b8f4: ffe1cb82 ffd85019 fff5b57b ffb96d49 .....P..{...Im.. 1b904: ffbb7947 ffac2b34 ffd7895e ffa48654 Gy..4+..^...T... 1b914: ff972129 ff570c18 ffc3aaaf ffede6bf )!....W......... 1b924: ffacac64 ff370815 fff9a55c ff7b4432 d.....7.\...2D{. 1b934: ffc1bcbf fff69b7e ff78575a ffb76e5f ....~...ZWx._n.. 1b944: ff99614b ffb97a64 ff771a22 ff994747 Ka..dz..".w.GG.. 1b954: ff986266 fff68745 fff6a996 ff77121c fb..E.........w. 1b964: fff7964c ffd8544a fffbc7b6 ff783a40 L...JT......@:x. 1b974: fffa875f fff5a67a ffae8b97 ff78484a _...z.......JHx. 1b984: fff8d7bb fffbfaf8 fff2c89a ffeeebeb ................ 1b994: fffb6e49 ffb7624f fffb6459 ffd97965 In..Ob..Yd..ey.. 1b9a4: ff883930 ff973747 ff483942 ff291825 09..G7..B9H.%.). 1b9b4: ffe4da9b ff481725 ffd79d99 ff381825 ....%.H.....%.8. 1b9c4: fff75652 ff995249 ffe5bcb4 ff5a373e RV..IR......>7Z. 1b9d4: ff98944c ffd99566 fffcd2d4 ffb7584e L...f.......NX.. 1b9e4: ff97595d ffc3343f ffdc494b ff95786b ]Y..?4..KI..kx.. 1b9f4: ffb9613b ff982931 fff97a43 ffd03c46 ;a..1)..Cz..F<.. 1ba04: fffb785b ff997b7b ffa63c23 ffc79d8b [x..{{..#<...... 1ba14: ffdadbdf ff885350 ff9f9b96 ffeab97a ....PS......z... 1ba24: ffb7553a ff572a2f ffd7aba7 ffd9babb :U../*W......... 1ba34: ff382938 ff8e8b89 ffdbbb69 ffecd7a1 8)8.....i....... 1ba44: fff8b8ab ff966f68 ffab6c51 ffd86f5d ....ho..Ql..]o.. 1ba54: fffb6e5b ff997077 ffd56331 ffd14848 [n..wp..1c..HH.. 1ba64: fffc5a44 ffdccc73 ff4b4b54 ffc38c7a DZ..s...TKK.z... 1ba74: ffc6ac9f ff2b2c37 ffcbcbcf ff6b6b6f ....7,+.....okk. 1ba84: 70707070 70707070 70707070 70704870 pppppppppppppHpp 1ba94: 48487070 36363648 e90c69cb 7744442d ppHHH666.i..-DDw 1baa4: 771212e9 133179c8 c8763113 133179c8 ...w.y1..1v..y1. 1bab4: e2e23131 407e40e2 40e2e2e2 25c531e2 11...@~@...@.1.% 1bac4: 30c785a2 0d76b35e 46464646 404040dd ...0^.v.FFFF.@@@ 1bad4: d1135e5f 5f762bb3 c876765f 9ca240c8 _^...+v__vv..@.. 1bae4: e714c156 bd0439bd 9c263ae7 140404a7 V....9...:&..... 1baf4: 7be0bce7 8047efef f3bc3d80 569c4733 ...{..G..=..3G.V 1bb04: 5c56c1c1 9ce79cee 56ef39f9 9c86f93a ..V\.....9.V:... 1bb14: 0e0ec785 9ccc55c7 c156e74b 9f35a2c2 .....U..K.V...5. 1bb24: 9f9f9f9f 339f9f9f 67672033 20677979 .......33 ggyyg 1bb34: dc132020 1e126717 7070704e 70707070 ...g..Nppppppp 1bb44: 70707070 70487070 48487070 36364848 ppppppHpppHHHH66 1bb54: 694e0c36 2b2b2d69 744e1e2b 3179c877 6.Nii-+++.Ntw.y1 1bb64: 7631315e 3179c8c8 e2313113 3440e2e2 ^11v..y1.11...@4 1bb74: e2313140 9f9fd731 c72825c5 76b35e30 @11.1....%(.0^.v 1bb84: 4634340d 40407e46 13b37640 2b2bb3d1 .44FF~@@@v....++ 1bb94: 40765f5f 6e407676 86c1869c f9e73904 __v@vv@n.....9.. 1bba4: 559c3955 ee9c869c f4bc5c14 4783ef7b U9.U.....\..{..G 1bbb4: bc625e80 044720f3 c1c1c186 c28304f9 .^b.. G......... 1bbc4: 9c39f9e7 a7f9ccc1 35354b9c a75cd535 ..9......K555.\. 1bbd4: 565c55ef 3cd5efc1 7d7d7d7d 05050505 .U\V...<}}}}.... 1bbe4: c59f9fa0 33333333 dc333333 77136e17 ....3333333..n.w 1bbf4: 7070740d 70707070 70707070 36487070 .tppppppppppppH6 1bc04: 48707048 cb364848 4e4ecb36 bb1e1e0c HppHHH6.6.NN.... 1bc14: 4ec82bb3 2bc87777 79797979 79c8c876 .+.Nww.+yyyyv..y 1bc24: 31131331 40e2e231 1331e240 13c5af33 1..11..@@.1.3... 1bc34: 28f3e831 b35ee8f3 34340d76 7e7e4646 1..(..^.v.44FF~~ 1bc44: b3764040 2bb3d113 76315f2b 40767640 @@v....++_1v@vv@ 1bc54: 86a79c6e e7393a56 f955553a 9c86e726 n...V:9.:UU.&... 1bc64: b59c83ee 83efbce0 7cb35e4b 6e13f3e0 ........K^.|...n 1bc74: c1c186e7 a73a3ac1 550455e7 0483c19c .....::..U.U.... 1bc84: 67a2e73a 5c55a2a0 5c9e14a7 2683c156 :..g..U\...\V..& 1bc94: 3c3c3cd5 7d7d3c3c 9f350505 9fdcdc9f .<<<<<}}..5..... 1bca4: 3113c5c5 33336e0e 700d0d34 70707070 ...1.n334..ppppp 1bcb4: 70707070 48707070 70704836 36484848 pppppppH6HppHHH6 1bcc4: 1e6936cb bb790c0c c82bbbbb c877744e .6i...y...+.Ntw. 1bcd4: 2b2bc8c8 76c8c8c8 13133179 31313131 ..++...vy1..1111 1bce4: c53176e2 7613c5af 25e83176 b3e841f3 .v1....vv1.%.A.. 1bcf4: 340d76b3 34343434 5f114040 b3d1d1b3 .v.44444@@._.... 1bd04: 3131762b 76767676 c2e7f340 04a7c1c0 +v11vvvv@....... 1bd14: 55553a04 86e72604 9ccc8d3a c2bce0b8 .:UU.&..:....... 1bd24: b35e4bcc d13de07c c1a7396e 8383c1c1 .K^.|.=.n9...... 1bd34: 042639a7 14c19c55 9f4b9ee7 99853564 .9&.U.....K.d5.. 1bd44: 9e14a75c 83c186e7 7d3cd526 7d3c3c3c \.......&.<}<<<} 1bd54: a005057d 33dc9f9f 13dcc5dc 0d794579 }......3....yEy. 1bd64: 0d74680d 70707070 70707070 70707070 .ht.pppppppppppp 1bd74: 70704836 36484870 cfcbcbcb 2b1e6912 6HpppHH6.....i.+ 1bd84: 2b6dbbbb 7774122b 762b2bc8 c8c8c876 ..m++.tw.++vv... 1bd94: 13317976 13313113 9f133131 407933af vy1..11.11...3y@ 1bda4: 790d7676 5ee8e8e8 0d76b3b3 34343434 vv.y...^..v.4444 1bdb4: 11407e34 1313b35f 31767967 76767631 4~@._...gyv11vvv 1bdc4: 390e7676 c1c156ef 39cc043a 39260426 vv.9.V..:..9&.&9 1bdd4: cc8def86 bce0b89c 5e4bcc5c 3dbc7c64 ........\.K^d|.= 1bde4: a7550ed1 a7c1c1c1 26e7a7cc 569c55ee ..U........&.U.V 1bdf4: 35475583 2149f1b0 14143a9c c186e79e .UG5..I!.:...... 1be04: 3cd52683 7d7d7d7d 3505057d dc9fa035 .&.<}}}}}..55... 1be14: 13133333 0d767979 12743379 70707068 33..yyv.y3t.hppp 1be24: 70707070 70707070 70704848 36484870 ppppppppHHpppHH6 1be34: cbcbcb36 c80c3636 d344bb2b 7412bb79 6...66..+.D.y..t 1be44: 792bc877 76797979 3179c8c8 13131313 w.+yyyyv..y1.... 1be54: af9f1331 763113dc e6344040 3131e22c 1.....1v@@4.,.11 1be64: 7679b35e 34340d0d 40403434 13b35f11 ^.yv..4444@@._.. 1be74: 76b31313 7679315f 417676c8 c1c11439 ...v_1yv.vvA9... 1be84: 1404ccc1 26ee4be7 8d83a755 f4b89c3a .....K.&U...:... 1be94: 4bcce7bc bc7cb35e 260e133d c1c1c183 ...K^.|.=..&.... 1bea4: e7a79c83 e755e726 0e4befa7 a2f2f5dc ....&.U...K..... 1beb4: 143acc5c ef55e714 d52683c1 a27d7d3c \.:...U...&.<}}. 1bec4: 05057d7d 9f356e35 311333dc 40767979 }}..5n5..3.1yyv@ 1bed4: c87d3334 70701268 70707070 70704870 43}.h.pppppppHpp 1bee4: 70707070 48487070 cbcbcb36 773636cb ppppppHH6....66w 1bef4: 44bb2b76 1ee91ebb 2bc87774 31317979 v+.D....tw.+yy11 1bf04: 79c8c879 e8e81331 c5b19fe8 31313131 y..y1.......1111 1bf14: 647e0d40 5e406fc1 b35e5e5e 34340d76 @.~d.o@^^^^.v.44 1bf24: 40343434 b35f4040 5e131313 31313176 444@@@_....^v111 1bf34: 76767631 56ef3941 f914c1c1 397b5ca7 1vvvA9.V.....\{9 1bf44: 83a72626 273a9c8d 3a39e0f4 b9b3804b &&....:'..9:K... 1bf54: c5133dbc c1c18355 869c83c1 55e7269c .=..U........&.U 1bf64: c75c3ae7 33e633dc 3a145cd5 bde714cc .:\..3.3.\.:.... 1bf74: 26ef865c 7d7d3c3c 05057d7d 35491735 \..&<<}}}}..5.I5 1bf84: 1333dc9f 0d0d7979 c513680d 7074680d ..3.yy...h...htp 1bf94: 48487070 70364870 70483670 48707070 ppHHpH6pp6HppppH 1bfa4: cbcbcb48 cbcbcbcb bb2b7677 771e6d44 H.......wv+.Dm.w 1bfb4: 77771277 3179792b c8c87931 e8131379 w.ww+yy11y..y... 1bfc4: d78e8ec5 31e2e231 024040e2 40a6c1be ....1..1.@@....@ 1bfd4: 5e5e5e5e 340d76b3 0d346834 5f404040 ^^^^.v.44h4.@@@_ 1bfe4: 1313135e 31315e5e 795e3131 5c264176 ^...^^1111^yvA&\ 1bff4: a7c1c186 7b9ca7f9 83264b55 3a048da7 .......{UK&....: 1c004: bdf4f44b 5e807b3a 5b3de030 c18699af K...:{.^0.=[.... 1c014: 9c14c1c1 554b9c86 4be75555 662ce89f ......KUUU.K..,f 1c024: 145c4b33 e714cc3a efcc9ebd 7d3c7d85 3K\.:........}<} 1c034: 057d7d7d 6e176e05 33dc9f35 0d767913 }}}..n.n5..3.yv. 1c044: 79680d0d 74687413 70707070 48367070 ..hy.thtpppppp6H 1c054: 36367070 48707048 cbcb3648 69cbcbcb pp66HppHH6.....i 1c064: bb1e6936 bb44d344 777777c8 792b2b77 6i..D.D..wwww++y 1c074: c8c87979 e8137979 e8257d8e 40403113 yy..yy...}%..1@@ 1c084: 4040e2e2 60c1fe68 5e5e3176 0d76b35e ..@@h..`v1^^^.v. 1c094: bb72680d 11e27eb2 13135e5f 315ee813 .hr..~.._^....^1 1c0a4: 5ee85e31 aa877931 c1c1869e 3aa7f9a7 1^.^1y.........: 1c0b4: 4b4b267b ee26a783 f4f44b3a 307b9cad {&KK..&.:K....{0 1c0c4: 17e0e85e 83c210b1 a7c1c156 4b9c869c ^.......V......K 1c0d4: 477b5555 6613dc0e 5c4bdc24 cc3a9ccc UU{G...f$.K\..:. 1c0e4: 5cbdade7 7d7dd55c 7d7d7d7d 49173505 ...\\.}}}}}}.5.I 1c0f4: dc9f9f35 76797913 340d0d0d 68687468 5....yyv...4hthh 1c104: 70707068 70707070 48703670 70484836 hpppppppp6pH6HHp 1c114: cbcb4848 cbcbcbcb 69cbcbcb 2b44d32d HH.........i-.D+ 1c124: 770dc8ab 2b2b7777 c8c8792b 9f137979 ...www+++y..yy.. 1c134: d7418e8e 344031e8 40e2e27e 5642e534 ..A..1@4~..@4.BV 1c144: 5e5fd156 76b35e5e 2eb20d0d 7e7766c1 V._^^^.v.....fw~ 1c154: 135e31e2 5ee81313 13133131 6e311313 .1^....^11....1n 1c164: c156e7aa 863a86c1 4b4b7bcc 39a7cc4b ..V...:..{KKK..9 1c174: e04bf939 7be77bc6 27dc5e30 5510fc85 9.K..{.{0^.'...U 1c184: c1c1569c 9c86f9a7 bcad4b4b 67dce80e .V......KK.....g 1c194: d50eb4ac 9c9c3a5c 85ade7cc 7dd59e9e ....\:.........} 1c1a4: 7d7d7d7d 4935057d dc9f3535 79791333 }}}}}.5I55..3.yy 1c1b4: 0d0d4076 6868340d 70707474 70707070 v@...4hhttpppppp 1c1c4: 70487070 4836cf48 cb484870 cb15cbcb ppHpH.6HpHH..... 1c1d4: 0ccbcbcb 44d32d0c 7979ab2b 2b77c840 .....-.D+.yy@.w+ 1c1e4: 7931792b 8edc7979 4141258e 7e1131d7 +y1yyy...%AA.1.~ 1c1f4: 11117e34 c3e10240 4053c1c3 b35e5e5e 4~..@.....S@^^^. 1c204: 340d0d76 42c142bb 5e3134f1 13131313 v..4.B.B.41^.... 1c214: 13135e5e dcc535e8 569c4b27 3a86c1c1 ^^...5..'K.V...: 1c224: 7b7bcca7 a73a4b4b 4bee2639 e7bcc6e0 ..{{KK:.9&.K.... 1c234: 8ac5b97b 5b715255 c156ee47 86f9a7c1 {...URq[G.V..... 1c244: bc7b4b3a 1313e85d 0ed11ab4 9c3ae7d5 :K{.].........:. 1c254: ad5ccc9c a2555585 7d7d7d7d 05057d7d ..\..UU.}}}}}}.. 1c264: 9f9f3505 793113dc 76767979 76767676 .5....1yyyvvvvvv 1c274: 70120d0d 48707070 70707070 36cfcf70 ...ppppHppppp..6 1c284: 36487036 69cbcbcb e9cb6969 6d4477c8 6pH6...iii...wDm 1c294: 132bd344 c80d795e dc13792b 8eaf1313 D.+.^y..+y...... 1c2a4: 2541c525 11e2e841 117e347e 94684011 %.A%A...~4~..@h. 1c2b4: 10c1c3c3 5e5e5e40 460d76b3 c172b240 ....@^^^.v.F@.r. 1c2c4: c894c1c1 131313e2 135e5e5e dc3939e8 ........^^^..99. 1c2d4: 9c47dcdc 56c1c156 27cca7f9 9c277bb8 ..G.V..V...'.{'. 1c2e4: 394b39a7 bcc6e07b d5f37b55 20b13755 .9K9{...U{..U7. 1c2f4: 86396ed1 f9a7c1c1 bc27efa7 e813e87f .n9.......'..... 1c304: 13ac6679 f9e7856e 5c3a5c5c d5d585bd yf..n...\\:\.... 1c314: 7d7d7dd5 05050505 35350505 1313dc35 .}}}......555... 1c324: 79797979 79797979 c8797979 70707070 yyyyyyyyyyy.pppp 1c334: 70707048 cbcf3600 48483636 cbcbcb36 Hppp.6..66HH6... 1c344: cb696969 bb77c877 ababb3bb 0d763113 iii.w.w......1v. 1c354: 13792bc8 9fb19fc5 41d7e813 e245e841 .+y........AA.E. 1c364: 7e347e11 68401111 c1c3c32e 5e31c896 .~4~..@h......1^ 1c374: 0d76b35e 5940460d c1c1c194 2079d160 ^.v..F@Y....`.y 1c384: 5eb3b3d1 9f9895e8 47313113 c1c1869c ...^.....11G.... 1c394: cca73a56 17b8bc27 b839a79c d0f4b8aa V:..'.....9..... 1c3a4: 21b69ebc 205bb195 395dd1d1 a7c1c1a7 ...!..[ ..]9.... 1c3b4: 273aa7f9 1313dc3d be1a79e8 e7ad47e8 ..:'=....y...G.. 1c3c4: 3a5ce79c a285bd5c 7da24bd5 a005057d ..\:\....K.}}... 1c3d4: 350505a0 13130e6e 79767979 31797979 ...5n...yyvyyyy1 1c3e4: 5e5e315e 70707079 70704848 36004870 ^1^^ypppHHpppH.6 1c3f4: 48cb36cf cbcbcb48 69696915 c8c869cb .6.HH....iii.i.. 1c404: b3b32b1e 4076b32b 79797940 138e8e13 .+..+.v@@yyy.... 1c414: 31317979 31314531 3440e2e2 40e2117e yy111E11..@4~..@ 1c424: c3c360c8 31d1c3c1 7679b313 46460d0d .`.....1..yv..FF 1c434: c1e47734 53c3c1c1 b3b31379 9fd59f5e 4w.....Sy...^... 1c444: 31311313 c1a70447 a73a56c1 b8e04bcc ..11G....V:..K.. 1c454: 55a7e7b5 e0b5bce0 babaadf4 b320c54c ...U........L. . 1c464: 5db3d1b3 c1c18326 cc830486 13134127 ...]&.......'A.. 1c474: e4d81313 adad5db4 e7e79c9e 85bd5c3a .....]......:\.. 1c484: a285d5a2 a0057d7d a0a0a0a0 13339f9f ....}}........3. 1c494: 0d2b7913 31797976 795e3131 70707979 .y+.vyy111^yyypp 1c4a4: 70483648 480ce969 cb363670 cbcb4836 H6Hpi..Hp66.6H.. 1c4b4: 696915cb 794ecb69 abab6d77 40312b67 ..iii.Nywm..g+1@ 1c4c4: 13131376 13af8e33 79797979 e2317979 v...3...yyyyyy1. 1c4d4: 4011e2e2 e2117e34 8f42e57e 53c1c342 ...@4~..~.B.B..S 1c4e4: b37913e2 460d0d76 72a44034 c1c156c1 ..y.v..F4@.r.V.. 1c4f4: b37971c1 13d75eb3 795e135e a7046e76 .qy..^..^.^yvn.. 1c504: f956c1c1 e04b1414 14e7b8b5 bce06226 ..V...K.....&b.. 1c514: babaadbc 5e807cad b3d1b364 c1cc265d .....|.^d...]&.. 1c524: cc0486c1 31e8273a 24791331 ad47d860 ....:'.11.y$`.G. 1c534: e79c9e85 bd5c9ce7 85d5a285 7d7d7da2 ......\......}}} 1c544: a0a0057d 9f9fa0a0 79133333 760d0d0d }.......33.y...v 1c554: 5e793179 7079795e 36364870 0c0c7000 y1y^^yyppH66.p.. 1c564: 367070cb cb484836 6969cbcb 4ecb6969 .pp66HH...iiii.N 1c574: bb1ee9c8 79b32b64 c5d71376 13c57d8e ....d+.yv....}.. 1c584: 76767679 76797979 11e2e240 117e347e yvvvyyyv@...~4~. 1c594: c3e57ee2 c1c3e4e4 79137610 0d0d7679 .~.......v.yyv.. 1c5a4: 5f403434 c3c16602 37c1c1c1 5e5eb3c8 44@_.f.....7..^^ 1c5b4: 315e5e5e ee6e7676 56c1c114 4b14ccf9 ^^^1vvn....V...K 1c5c4: 39b5b5e0 bc414b3a adf0babd 80dabcbd ...9:KA......... 1c5d4: 20b3645e 3a2641b3 0486c156 13179c9c ^d. .A&:V....... 1c5e4: c8135e79 adc56aac 9c398585 5c9ce7e7 y^...j....9....\ 1c5f4: 4bd585bd 3c7dd5ad 7d7d3c3c a0a07d7d ...K..}<<<}}}}.. 1c604: 3333339f 0d2b6733 79790d0d b3b35e79 .3333g+...yyy^.. 1c614: 36367070 36000070 7048360c 48487070 pp66p..6.6HpppHH 1c624: 69cbcbcb cb696969 abe9cbcb 1364642b ...iiii.....+dd. 1c634: c5133179 13c57d0f 76767913 79797976 y1...}...yvvvyyy 1c644: 11404076 7e347e40 f17ee211 c36060c1 v@@.@~4~..~..``. 1c654: 137696c1 0d767979 11403446 6077e211 ..v.yyv.F4@...w` 1c664: 565642c3 5e0d6fc1 5e795e5e 5d40765e .BVV.o.^^^y^^v@] 1c674: c1c1cc39 14ccf956 b5bce026 8ed59c26 9...V...&...&... 1c684: e0f0d699 dae07be0 b3645e80 2741b320 .....{...^d. .A' 1c694: 86c186f9 49040404 31137913 f35ae4e5 .......I.y.1..Z. 1c6a4: 558555bd 9c9ee75c d5bdbd9c 9595b685 .U.U\........... 1c6b4: 216c2121 52525252 b13ce395 13339fa0 !!l!RRRR..<...3. 1c6c4: 0d34c879 b3797676 700036b3 70487048 y.4.vvy..6.pHpHp 1c6d4: 36363670 48707070 15cbcb48 69696969 p666pppHH...iiii 1c6e4: e90c69cb 206413bb c5137920 d7c58e0f .i....d y...... 1c6f4: 76311313 79797676 11404079 347e4011 ..1vvvyyy@@..@~4 1c704: 02e21134 fe60c15a d856c1c3 76797931 4...Z.`...V.1yyv 1c714: 40340d0d 11315f11 8fe4c12f 66c156c3 ..4@._1./....V.f 1c724: 765e5e0d 0d765e5e 56cc3941 3af956c1 .^^v^^v.A9.V.V.: 1c734: e0f426cc 219ebdb5 bc9eba65 e0bcc6c6 .&.....!e....... 1c744: 195e75da d7b32064 c1860427 ee048d86 .u^.d ..'....... 1c754: 1379136e f542e179 85555547 9e9ee755 n.y.y.B.GUU.U... 1c764: 99993a3a d2baf06c 3c4c9521 7d7d3c3c ::..l...!.L<<<}} 1c774: 4c3c7d7d fbce5252 c879139f 0d34340d }}E. 1f4d8: e887dce8 06e845e8 4545e8e8 45e8dce8 .....E....EE...E 1f4e8: 13f6de87 37797679 0d0db0fc 7774740d ....yvy7.....ttw 1f4f8: 74777777 77777474 bbbb77bb 69e90c38 wwwtttww.w..8..i 1f508: 0ccfcfcf 483648cf cbcb48cb 89579169 .....H6H.H..i.W. 1f518: 69690c2d e944bf44 1ebb6444 771e1e1e -.iiD.D.Dd.....w 1f528: 79792b77 0dc8c82b 4141e876 76797913 w+yy+...v.AA.yyv 1f538: 76404040 79797676 40763131 e2e24040 @@@vvvyy11v@@@.. 1f548: 7d333140 13a09552 31e23131 404040e2 @13}R...11.1.@@@ 1f558: 12114011 ff735722 4a979797 00000000 .@.."Ws....J.... 1f568: 00000000 1c1c97ec 739797ff 70704897 ...........s.Hpp 1f578: 60cf7070 31134066 45313131 acace640 pp.`f@.1111E@... 1f588: 32e1db24 4545e2e6 87dce8e8 4545e806 $..2..EE......EE 1f598: 45e8e8e8 e8e8e845 13e80645 e3677631 ...EE...E...1vg. 1f5a8: 7774b0fc 74747477 77777777 38747474 ..twwtttwwwwttt8 1f5b8: bb772b77 cde9bbab cfcfcf69 366969cf w+w.....i....ii6 1f5c8: 6d69cbcb e61c6969 6969ec91 d1e5780c ..imii....ii.x.. 1f5d8: 1e6d6dab 1e1e6464 792b771e c8c82b2b .mm.dd...w+y++.. 1f5e8: 5d30790d 76791341 40404076 79767676 .y0]A.yvv@@@vvvy 1f5f8: 79313179 31404040 523c9f13 e2319f4c y11y@@@1.. 20d98: 4a6391ab 00000048 00000000 70700000 ..cJH.........pp 20da8: cf4fcfcf cd4ecd4f 545454cd cd54544e ..O.O.N..TTTNTT. 20db8: 4e54543b 12771212 46a1df68 cd545459 ;TTN..w.h..FYTT. 20dc8: 232354cd a9a9a9a5 a9a9a9a9 080808a9 .T##............ 20dd8: 08080808 08080808 a5a5a508 a5a5a5a5 ................ 20de8: a5a5a5a5 08a5a5a5 d9b2a9a9 2323a4df ..............## 20df8: a5a52323 a5a90223 a5a5a5a5 b202b7a5 ##..#........... 20e08: a4d9ddb7 89897391 4444e978 44ed4444 .....s..x.DDDD.D 20e18: f7f7b975 5f75dff7 b702a4a1 59b2b2b7 u.....u_.......Y 20e28: 54a55459 3b3ba93b 4f4fcdcd 1f4f3636 YT.T;.;;..OO66O. 20e38: 1f363636 701f1f70 48707070 70707070 666.p..ppppHpppp 20e48: cb364848 79690c69 ec89aef6 00000048 HH6.i.iy....H... 20e58: 00000000 70000000 cd1fcd1f 4ecdcdcd .......p.......N 20e68: 5454cdcd 54545454 54543b54 12124e54 ..TTTTTTT;TTTN.. 20e78: a968d959 1f1f1f1f 701f1f1f a9a5a5a9 Y.h........p.... 20e88: a9a9a9a9 a9a9a9a9 0808a908 08080808 ................ 20e98: a5080808 a5a5a5a5 a9a908a5 08a9a9a9 ................ 20ea8: dfd90254 2323a4d9 a5a52323 08a423a5 T.....####...#.. 20eb8: a5a5a508 b7a5a5a5 02b7b2b2 89971c59 ............Y... 20ec8: 6de96d89 2278d344 dd02dd74 a1a1a1a1 .m.mD.x"t....... 20ed8: a4a4dda1 b2020202 54a55459 3ba90854 ........YT.TT..; 20ee8: 4f3bcd3b 36361f4f 3636361f 361f1f70 ;.;OO.66.666p..6 20ef8: 70707036 70707070 36cb3670 770c69cb 6pppppppp6.6.i.w 20f08: ec91338b 00000048 00007000 70000000 .3..H....p.....p 20f18: 364fcf70 4e4fcdcd 54cd3b38 544e4e54 p.O6..ON8;.TTNNT 20f28: 54545454 12545454 1f3bdd54 1f1f1f1f TTTTTTT.T.;..... 20f38: 1f1f1f1f 0870701f a9a9a9a5 a9a9a9a9 .....pp......... 20f48: a9a9a9a9 08080808 08080808 08a50808 ................ 20f58: b2a5a9a9 d9a1a1dd d95858d9 2323a4a1 .........XX...## 20f68: a5232323 a4a5a5a5 a5a5a959 a5a5a5a5 ###.....Y....... 20f78: b2b223a5 89970cb7 e9e97889 89e9d36d .#.......x..m... 20f88: dfda021c 2323b2a1 23b7b7b7 54232323 ......##...####T 20f98: 3b545454 3ba93b3b 4f3b3b3b 1f1f1f4f TTT;;;.;;;;OO... 20fa8: 361f1f36 3670701f 48707036 70707070 6..6.pp66ppHpppp 20fb8: cb707048 6d69cf69 6944f606 00007036 Hpp.i.im..Di6p.. 20fc8: 00700000 00000000 36cd7000 cdcdcd1f ..p......p.6.... 20fd8: 4ecd4ee9 545454cd 54545454 54545454 .N.N.TTTTTTTTTTT 20fe8: 1f3b5954 1f1f1fa9 1f1f1f1f 1f1f1f1f TY;............. 20ff8: a9a5a970 a9a9a9a9 a9a9a9a9 0808a9a9 p............... 21008: 08080808 a9080808 d9a10208 58585858 ............XXXX 21018: d9d9dfdf 2323a4a1 a5232323 a508a5a5 ......#####..... 21028: a51f0202 a5a5a5a5 23a5a5a5 97fae546 ...........#F... 21038: e9788989 e96de9e9 2308911c a1d9a102 ..x...m....#.... 21048: a523b2a4 080808a5 cd54543b a93b3b3b ..#.....;TT.;;;. 21058: 1f4f3b3b 4fa91f1f 1f70704f 70707070 ;;O....OOpp.pppp 21068: 70707036 70707070 70363670 d30c6936 6pppppppp66p6i.. 21078: 69798b67 007048cb 00000000 00000000 g.yi.Hp......... 21088: 4f700000 cdcd4f1f 543bcd1e 545438e9 ..pO.O....;T.8TT 21098: 5454544e 54545454 a9545459 1f1f1fa9 NTTTTTTTYTT..... 210a8: 1f1f1f1f 1f1f1f1f a9701f1f a9a9a9a5 ..........p..... 210b8: a9a9a9a9 a9a9a9a9 0808a9a9 08a90808 ................ 210c8: d9d9d9dd d9dfdfdf a1d9d9d9 23b702a1 ...............# 210d8: a5232323 08a5a5a5 a9a10223 a5a5a508 ###.....#....... 210e8: a5a5a5a5 6389e644 2d898989 6de90c0c ....D..c...-...m 210f8: 0a1effe9 b7b2dda1 020202b2 02a4a402 ................ 21108: 3ba559b2 3ba9a908 543ba9a9 d9a1ddb2 .Y.;...;..;T.... 21118: 4f298888 70701f70 48707070 70707070 ..)Op.pppppHpppp 21128: cb487070 78693636 0c3e06e5 7048cb69 ppH.66ix..>.i.Hp ... 21140: 70700000 4f4f7070 cdcd1e4e bbbb4e4e ..ppppOON...NN.. 21150: 54544e54 54545454 08545454 1f1f1fa9 TNTTTTTTTTT..... 21160: 1f1f1f1f 1f1f1f1f 1f1f1f1f a908a91f ................ 21170: a9a9a9a9 a9a9a9a9 a9a9a9a9 591f08a9 ...............Y 21180: d9a1a1d9 dfdfdfdf a1d9d9d9 23b70229 ............)..# 21190: a5232323 a5a5a5a5 a1b22308 08a5a9b2 ###......#...... 211a0: 54a5a5a5 69bfe651 918991ff 2d0c0c0c ...TQ..i.......- 211b0: 741c6d2d 58585888 0a0a8858 b202dda1 -m.t.XXXX....... 211c0: 88d9ddb2 d90ad9d9 88d9d9d9 88888888 ................ 211d0: 88888888 701f7029 70707070 70707070 ....)p.ppppppppp 211e0: 70487070 892d6936 0ce2c889 4848cb69 ppHp6i-.....i.HH 211f0: 00000070 00000000 70000000 36707070 p..........pppp6 21200: 3b381ecd 381eab1e 54543864 54545454 ..8;...8d8TTTTTT 21210: cd545454 1f1fa9a9 1f1f1f1f 1f1f1f1f TTT............. 21220: 1f1f1f1f 081f1f1f a9a91f08 a9a9a9a9 ................ 21230: a9a9a9a9 591f08a9 dfd9d958 d9d9df58 .......YX...X... 21240: a1a1d9d9 232302a4 a5232323 a5a5a5a5 ......#####..... 21250: b22308a5 08a9a1dd 44a508a5 08388ced ..#........D..8. 21260: 89911cca 0c0c0c91 63d30c2d d9a12923 ........-..c#).. 21270: 888888d9 58585858 59b229d9 d9d9a102 ....XXXX.).Y.... 21280: 880a0ad9 0a0a0ad9 0a0a0a0a 704f0a0a ..............Op 21290: 70707070 70707070 48707070 89cacb48 pppppppppppHH... 212a0: 4e0d2d91 4836cbcb 00007070 00000000 .-.N..6Hpp...... 212b0: 00000000 36707000 cd38cd1f bb1e7977 .....pp6..8.wy.. 212c0: 54abbb1e 54545454 3b545454 a9a9083b ...TTTTTTTT;;... 212d0: 1f1f1f1f a9a91f1f 1f1f1f1f 1f1f1f1f ................ 212e0: a9a90800 a9a9a9a9 a9a9a9a9 08a9a9a9 ................ 212f0: 0854dd88 d9465908 a1a1a1d9 b723b7a4 ..T..YF.......#. 21300: a5232323 a5a5a5a5 2308a5a5 b2d902b2 ###........#.... 21310: 5154081f a508bfed 918963a9 0ccdca63 ..TQ.....c..c... 21320: 910c2d0c a4a4b791 0a0aa1a1 dfd9d90a .-.............. 21330: 5858dfdf 6859ddd9 a1a1a129 0a0a0a0a ..XX..Yh)....... 21340: a1a10a0a cfdda1a1 70703670 70707070 ........p6pppppp 21350: 70707070 6391ec48 cdcd69ca 4836cbcb ppppH..c.i....6H 21360: 00007048 00000000 00000000 70700000 Hp............pp 21370: 4f4fcd4f 54c80e4e 641e1e1e 54545438 O.OON..T...d8TTT 21380: 54545454 a9083b3b 1f1f1fa9 1f1f1f1f TTTT;;.......... 21390: 1f1fa9a9 1f1f1f1f 08a9cd1f a9a9a9a9 ................ 213a0: a9a9a9a9 1fa9a9a9 1f00a502 1f1f1f1f ................ 213b0: a1d9dda9 2323b702 a5a5a523 a5a5a5a5 ......###....... 213c0: 08a5a5a5 a1b2b223 e6d3540a 08084e90 ....#....T...N.. 213d0: 91ffcb08 690c6391 0c2d0c0c a4b72d63 .....c.i..-.c-.. 213e0: a1a12929 a1a1a1a1 88d9d9d9 d958dfd9 ))............X. 213f0: a42959b2 a1a129a4 dda1a1a1 6846dddd .Y)..)........Fh 21400: 7036703b 70707070 70707070 07910769 ;p6pppppppppi... 21410: 36484815 48483648 00707048 00000000 .HH6H6HHHpp..... 21420: 00000000 70007000 cdcd7070 12dc33cd .....p.ppp...3.. 21430: 4e4e4e12 5454bbab 54545454 08543b54 .NNN..TTTTTTT;T. 21440: 1f1fa9a9 1f1f1f1f 1fa91fa9 1f1f1f1f ................ 21450: 12131e1f a9a9a9a9 a9a9a9a9 1fa9a9a9 ................ 21460: a9000808 a9a9a9a9 021f1fa9 2323b2a1 ..............## 21470: a5a5a523 a5a5a5a5 08a5a5a5 b2b22308 #............#.. 21480: e69380a4 08080878 1c4a0808 69916391 ....x.....J..c.i 21490: 0c0c0c69 a5cf632d a40223a5 29a12929 i...-c...#..)).) 214a0: a1a1a1a1 d9df88d9 cd0258df 54545968 .........X..hYTT 214b0: 59595454 59595959 1f70cd54 70707070 TTYYYYYYT.p.pppp 214c0: cb707070 ec91fa4a 48707048 48484848 ppp.J...HppHHHHH 214d0: 70704848 00000000 00000000 00000000 HHpp............ 214e0: 36367000 77791e4f 54e94e77 54ab1e54 .p66O.ywwN.TT..T 214f0: 54545454 54545454 1fa9a908 1f1f1f1f TTTTTTTT........ 21500: a9a9a91f 1f1f1f1f 67331e1f a9084f79 ..........3gyO.. 21510: 1fa9a9a9 a9a9a9a9 1f1fa91f 1f1f1f1f ................ 21520: a9a9a91f 23dddd1f a5a52323 08a508a5 .......###...... 21530: a5a5a5a5 b2230808 ceea5bb2 08a9a95e ......#..[..^... 21540: 63a90808 ca639163 0c0c6969 a963ca0c ...cc.c.ii....c. 21550: a5a508a5 a4a4b2a5 dda1dddd dfd9a1dd ................ 21560: dfd9d9df b212cd68 595959b2 cdcd5454 ....h....YYYTT.. 21570: 70cfcdcd 70707070 4acb7070 cbec0707 ...ppppppp.J.... 21580: 70707048 48484870 48484848 00000070 HppppHHHHHHHp... 21590: 00000000 001f0000 4f700000 541ecd4f ..........pOO..T 215a0: 4e4e774e 3838544e 54545454 54595454 NwNNNT88TTTTTTYT 215b0: a9a90854 1f1f1f1f a9a91f1f 1f1f1fa9 T............... 215c0: 1379121f a9123113 a9a9a9a9 a9a91f1f ..y..1.......... 215d0: 1fa91fa9 1f1f1f1f a91f1f1f a1a91fa9 ................ 215e0: a5a5a5b2 08080808 08080808 23080808 ...............# 215f0: 5ba66619 08290aa1 3608a91f 639191ff .f.[..)....6...c 21600: 0cec690c fa91ec2d a5a5a508 a5080808 .i..-........... 21610: 020202b2 4646dddd d9dfd9a1 cf54d9d9 ......FF......T. 21620: 595454cd 59595959 cd545959 70707070 .TTYYYYYYYT.pppp 21630: ca154870 70cb4a07 70700000 48487070 pH...J.p..ppppHH 21640: 48484848 00007070 00000000 70000000 HHHHpp.........p 21650: 70000070 4ecf3b36 381e543b 1e544e4e p..p6;.N;T.8NNT. 21660: 54545454 59545454 08a53b59 a91f1fa9 TTTTTTTYY;...... 21670: a9a91f1f 1fa9a9a9 0d34121f 79131379 ..........4.y..y 21680: a9a908a9 1f1f1fa9 a91fa9a9 1f1f1f1f ................ 21690: 1f1f1f1f 1fa91f1f a5a5a454 08080808 ........T....... 216a0: 08080808 cd08a508 7453a6f1 0aa12902 ..........St.).. 216b0: 1f1f23a1 6391ff4a ec696991 63ec2d0c .#..J..c.ii..-.c 216c0: a5a508ca 3ba5a5a5 b2543b3b dd466802 .......;;;T..hF. 216d0: d9dd5968 a1d9d9df cdcfcfcf cdcdcdcd hY.............. 216e0: 545454cd 7070704f 07ca1548 7070154a .TTTOpppH...J.pp 216f0: 70700070 70707070 48484848 00707070 p.ppppppHHHHppp. ... 2170c: 4f1f7000 38cd3b4e 544e5438 544e5454 .p.ON;.88TNTTTNT 2171c: 54545454 a9595959 1fa9a908 a91f1f1f TTTTYYY......... 2172c: 1fa9a9a9 686868a9 13790d34 08081279 .....hhh4.y.y... 2173c: 1fa9a9a9 1f1f1f1f 1f1f1fa9 1f1f1f1f ................ 2174c: 1f1f1f1f b7b21fa9 080808a5 08080808 ................ 2175c: 44080808 596466e6 a1a40223 a4290a0a ...D.fdY#.....). 2176c: 63fffaa9 69690763 0c0cecec 08086963 ...cc.ii....ci.. 2177c: 08080808 3b3b3b3b 6868593b 5468dd68 ....;;;;;Yhhh.hT 2178c: a1d9d946 cdcb68d9 cdcdcdcd cdcdcd54 F....h......T... 2179c: 36704f54 4a07caec 70704815 70007070 TOp6...J.Hpppp.p 217ac: 70707070 70704848 70707070 00000000 ppppHHpppppp.... 217bc: 70000000 0000701f 70707000 cd3b544f ...p.p...pppOT;. 217cc: 4e4e3838 4e4e5454 54545459 12595959 88NNTTNNYTTTYYY. 217dc: 1f1fa959 a9a91f1f a91f1f1f 68686854 Y...........Thhh 217ec: 76343468 08797979 a9a9a908 1f1f1f1f h44vyyy......... 217fc: 1f1fa91f 1f1f1f1f 1f1f1f1f 3b1fa91f ...............; 2180c: 0808a502 08080808 5154083b 23597294 ........;.TQ.rY# 2181c: 02b223b2 a1a1a1a4 ffec0229 69ec631c .#......)....c.i 2182c: ececec69 a5a963ca 3b3b3b08 3b3b3b3b i....c...;;;;;;; 2183c: 54cdcd3b 46686868 d9745468 cfa1a1a1 ;..ThhhFhTt..... 2184c: cdcdcdcf cdcdcdcd 1536cdcd cbec4aca ..........6..J.. 2185c: 70707070 70707070 70707000 70707070 pppppppp.ppppppp 2186c: 70704870 00000070 00000000 001f7000 pHppp........p.. 2187c: a9700000 1f1f7070 381e38cd 3854544e ..p.pp...8.8NTT8 2188c: 5454541e 12595959 3b591212 1f1f1fa9 .TTTYYY...Y;.... 2189c: 593ba91f 68b26868 34346868 310d0d0d ..;Yhh.hhh44...1 218ac: a9a9a912 1f1fa9a9 1f081f1f 1f1f1f1f ................ 218bc: 1f1f1f1f a9a91f1f 0823021f 3b080808 ..........#....; 218cc: e6783b3b a508e9ed 2323b259 a1a102b2 ;;x.....Y.##.... 218dc: a5292929 699163ec ececec69 1ffa07ec )))..c.ii....... 218ec: 3b3b0808 3b3b3b4f cdcd3b3b 686854cd ..;;O;;;;;...Thh 218fc: cd6868b2 d9a1a168 cfcfcf54 cdcdcdcd .hh.h...T....... 2190c: 36cdcdcd 704815ec 70707070 70707070 ...6..Hppppppppp 2191c: 70707070 70707070 70484870 00000070 pppppppppHHpp... 2192c: 00000000 00707000 00000000 1f70701f .....pp......pp. 2193c: 1e38cd1f 5454381e 5412bb12 59595959 ..8..8TT...TYYYY 2194c: 59121259 59595959 0d741259 6868680d Y..YYYYYY.t..hhh 2195c: 34346868 0d343434 a9a97931 1fa9a9a9 hh44444.1y...... 2196c: a91f1f1f 1f1f1fa9 1f1f1f1f a9a91f1f ................ 2197c: b259364f 08080808 94e1e908 3b083bae O6Y..........;.; 2198c: 23b223a5 a4b259a5 29292929 ca697002 .#.#.Y..)))).pi. 2199c: ecec6969 4a91ecec 08a94fa9 4f4f3b3b ii.....J.O..;;OO 219ac: 3bcf4f4f 54cdcdcd 6868b2b2 a1ddcd54 OO.;...T..hhT... 219bc: cfcb46d9 cfcdcfcf cfcdcfcf 70707070 .F..........pppp 219cc: 70707070 70364848 70707070 70707070 ppppHH6ppppppppp 219dc: 70484870 00007070 00000000 00000000 pHHppp.......... 219ec: 00000000 70707070 383b1f1f 544e3838 ....pppp..;888NT 219fc: 12771254 59595959 59681259 b2595959 T.w.YYYYY.hYYYY. 21a0c: 683468b2 0dc82bc8 34686868 34343434 .h4h.+..hhh44444 21a1c: 3b131340 a9a9a9a9 1f1f1f1f 1f1f081f @..;............ 21a2c: 1f1f1f1f a91f1f1f 0d1e4f4f 083b3bb2 ........OO...;;. 21a3c: 90e6ae08 083b08e9 59a5a53b b723a523 ......;.;..Y#.#. 21a4c: 2929a4b2 cba92929 ec6969cf 63ececec ..))))...ii....c 21a5c: a94fa9ec 4f4f4f4f cf4f4f4f cdcdcfcf ..O.OOOOOOO..... 21a6c: 59b259cd 546868b2 cfa14654 cfcfcfcf .Y.Y.hhTTF...... 21a7c: cdcfcfcf 7070001f 70707070 36363636 ......pppppp6666 21a8c: 00707048 70700070 70487070 00007070 Hpp.p.ppppHppp.. ... 21aa8: 701f7000 a91f7070 5454543b 38121254 .p.ppp..;TTTT..8 21ab8: 12125959 68126812 34685959 0d0d6868 YY...h.hYYh4hh.. 21ac8: c8c87468 68340dc8 34343434 e8314034 ht....4h44444@1. 21ad8: a9a9a912 1f1f1fa9 1f08701f 1f1f1f1f .........p...... 21ae8: 4fa9a91f 161e4f4f 0854b245 78e6ed6d ...OOO..E.T.m..x 21af8: 083b3b3b a5a53ba9 a5082359 2902b723 ;;;..;..Y#..#..) 21b08: 1fa5b729 151569cb ecececec a9a936fa )....i.......6.. 21b18: 4f4f4fa9 4f4f4f4f cfcfcfcf 54cdcd4f .OOOOOOO....O..T 21b28: 36540259 54484848 cfcfcfcd cfcfcfcf Y.T6HHHT........ 21b38: 707070cf 48707070 4e4f3636 0070704f .ppppppH66ONOpp. 21b48: 00000000 70707000 00000000 00000000 .....ppp........ 21b58: 00000000 00007070 00000000 3b707070 ....pp......ppp; 21b68: 543ba9a9 59545454 59591259 68686868 ..;TTTTYY.YYhhhh 21b78: 0db2b268 c8683476 6868680d 34c80d0d h...v4h..hhh...4 21b88: 34340234 31403434 a9a9c813 1f1fa91f 4.4444@1........ 21b98: a91f1f1f 1f1f1fa9 a9a9a9a9 06774fa9 .............Ow. 21ba8: 4e23e8b5 0c51e697 3b3bcd08 a53ba93b ..#N..Q...;;;.;. 21bb8: a52323a5 b702b2a5 00000008 15360000 .##...........6. 21bc8: ecec1569 4f1ffafa a9a9a9a9 4f4f4f4f i......O....OOOO 21bd8: cfcf4f4f cf4fcfcf 483659cd 48cbcb36 OO....O..Y6H6..H 21be8: cfcb4f36 cfcfcfcf 700036cf 36707070 6O.......6.pppp6 21bf8: 404f3636 70703640 00000000 70000000 66O@@6pp.......p 21c08: 00000070 00000000 00000000 00000000 p............... 21c18: 70000000 70700070 3b08a9a9 59125454 ...pp.pp...;TT.Y 21c28: 77123812 68746812 b2b26868 3476130d .8.w.hthhh....v4 21c38: b268c876 0d346868 34023434 40343434 v.h.hh4.44.4444@ 21c48: 3b797979 1f1f1fa9 701f1f1f a91fa9a9 yyy;.......p.... 21c58: 1fa9a9a9 31c8cd1f bf79f687 a9d3edbe .......1..y..... 21c68: 3bcdcd3b 3ba9083b 23a5a5a5 08022308 ;..;;..;...#.#.. ... 21c80: 70700000 1f15cb70 a9a9a9a9 4fa9a9a9 ..ppp..........O 21c90: 4f4f4f4f cfcfcf4f 481f59cf 48483636 OOOOO....Y.H66HH 21ca0: cf4f3648 4f4fcfcf 7070cf4f 70707070 H6O...OOO.pppppp 21cb0: 344f4f36 7036129d 00000070 00000000 6OO4..6pp....... 21cc0: 00000070 70007070 00007070 70700000 p...pp.ppp....pp 21cd0: 00000000 70007070 4f1f1f70 3838593b ....pp.pp..O;Y88 21ce0: 12771212 74127477 68686868 340d68b2 ..w.wt.thhhh.h.4 21cf0: 68767634 0d68b2b2 3434340d 34343434 4vvh..h..4444444 21d00: af79400d 1f1f08b4 1f1f1f1f 1fa91f1f .@y............. 21d10: 701fa9a9 79311e4f e35b7976 a94fbf5a ...pO.1yvy[.Z.O. 21d20: cdcd3b3b 4f3b3bcd a508a53b 0023b2a5 ;;...;;O;.....#. ... 21d38: 70000000 701fa91f a94f1f4f a9a9a9a9 ...p...pO.O..... 21d48: 4f4f4f4f cb364f4f 481f594f 48483636 OOOOOO6.OY.H66HH 21d58: 363b4848 364fcfcf 0048cb36 70707070 HH;6..O66.H.pppp 21d68: 124fcf36 364fe29d 00000070 70000000 6.O...O6p......p 21d78: 00000000 48707000 70707048 00000070 .....ppHHpppp... ... 21d90: 1f1f7070 383854a9 77123838 59747412 pp...T8888.w.ttY 21da0: 68681268 59b26868 3468b2b2 68686834 h.hhhh.Y..h44hhh 21db0: 340dc8c8 34020234 fc37f279 a9543765 ...44..4y.7.e7T. 21dc0: 1f1fa91f a91f1fa9 4f1f1fa9 7913791e ...........O.y.y 21dd0: 65fbd176 3b081e0f cd3b4fa9 4f4fcdcd v..e...;.O;...OO 21de0: a53b3b4f 00a559a5 00000000 00000000 O;;..Y.......... 21df0: 00000000 4f1f1f1f 1f361f1f 3636361f .......O..6..666 21e00: 4f4f3636 364f3636 48a95436 48484836 66OO66O66T.H6HHH 21e10: 1fcf4848 36364f36 0036cb36 70707070 HH..6O666.6.pppp 21e20: 4ecf3670 36129d3e 70007036 00000000 p6.N>..66p.p.... 21e30: 70000070 48487070 48484848 00004848 p..pppHHHHHHHH.. ... 21e48: 1f707000 7454a91f 12383874 74741274 .pp...Ttt88.t.tt 21e58: 68b25959 68686868 b2686868 686868b2 YY.hhhhhhhh..hhh 21e68: c8790d68 2c2b3434 fbfc2ee3 c831795b h.y.44+,....[y1. 21e78: a91f1fa9 a91f1fa9 1e4f1f1f 79314513 ..........O..E1y 21e88: e3657167 4f740dd1 3b4fa908 4fcfcdcd gqe...tO..O;...O 21e98: 3b4f4f4f 00a9233b 00000000 00000000 OOO;;#.......... 21ea8: 00000000 701f1f70 3670a91f 361f1f1f ....p..p..p6...6 21eb8: 36363636 364f4f36 70083b36 48484848 66666OO66;.pHHHH 21ec8: 1f364848 36364f36 00363636 70707070 HH6.6O66666.pppp 21ed8: 3b4f361f cde29d40 00004836 70007000 .6O;@...6H...p.p 21ee8: 70707000 48484848 15484848 00fd1515 .pppHHHHHHH..... 21ef8: 00007070 70000000 70707070 54a9361f pp.....ppppp.6.T 21f08: 74747412 68121212 68595974 68686868 .ttt...htYYhhhhh 21f18: 68686868 68b26868 0d343468 fce32c79 hhhhhh.hh44.y,.. 21f28: 76d153e3 79764040 1fa97745 1f1f1f1f .S.v@@vyEw...... 21f38: 13c84ea9 133113e8 f2fcfcaf 0d0d0dc8 .N....1......... 21f48: a9a9a93b cfcdcd4f a9a94f4f 00a9543b ;...O...OO..;T.. ... 21f60: 48151500 1f007070 1fa9701f 36361f1f ...Hpp...p....66 21f70: 36361f1f 36363636 703b3b36 48484848 ..6666666;;pHHHH 21f80: a9364848 36364f1f 70363636 70707000 HH6..O66666p.ppp 21f90: 4f363670 123e3e12 00703636 00000000 p66O.>>.66p..... 21fa0: 48487070 15484848 fd151515 07074a4a ppHHHHH.....JJ.. ... 21fb8: 1f700000 4f361f1f 7412543b 12681274 ..p...6O;T.tt.h. 21fc8: 5959340d 740d6868 68687434 b2686868 .4YYhh.t4thhhhh. 21fd8: c8346868 71fcfc53 34340dd1 76767676 hh4.S..q..44vvvv 21fe8: 31453131 4e541277 e8e86777 af313113 11E1w.TNwg...11. 21ff8: 79716510 0d0d0d0d a9a94e0d cfcf4fa9 .eqy.....N...O.. 22008: a94f4fcf 001fa5a9 00000000 00000000 .OO............. 22018: cb150000 70707048 1f1f7000 1f1f70a9 ....Hppp.p...p.. 22028: 1f36361f 36363636 703b4f36 48484870 .66.66666O;ppHHH 22038: 1f364848 36363648 70483636 70707070 HH6.H66666Hppppp 22048: 36367070 343e403b 7048364f 00000000 pp66;@>4O6Hp.... 22058: 48484870 15151548 07074afd 4a4a0707 pHHHH....J....JJ 22068: 000000fd 00000000 70700000 361f1f1f ..........pp...6 22078: 12543b4f 68127474 b268130d 0d68b2b2 O;T.tt.h..h...h. 22088: 34346874 68686868 712b6868 79b46ffc th44hhhhhh+q.o.y 22098: 340d0d0d 76797634 31313176 13e8e813 ...44vyvv111.... 220a8: 1313e845 37333113 76d13765 0d0dc876 E....137e7.vv... 220b8: 4f74770d cf4fa9a9 a94fcfcf 007008a9 .wtO..O...O...p. ... 220d0: 15480000 70707015 70007070 1f70a91f ..H..ppppp.p..p. 220e0: 361f1f1f 36363636 703b3636 70007070 ...6666666;ppp.p 220f0: 36484848 48484870 00704836 70707070 HHH6pHHH6Hp.pppp 22100: 36707070 e23e1236 704836cd 48707070 ppp66.>..6HppppH 22110: 48484848 4afd1515 4a070707 1515fd4a HHHH...J...JJ... 22120: 00004848 00000000 00000000 1f363670 HH..........p66. 22130: 543b4f36 12747459 68c80d74 68b25959 6O;TYtt.t..hYY.h 22140: 68686868 68686834 fc53c8b2 68345b10 hhhh4hhh..S..[4h 22150: 0dc8c834 79763434 31313176 13131331 4...44vyv1111... 22160: 13131313 650f1331 76795b10 c80dc876 ....1..e.[yvv... 22170: 7474770d 4f3b1f4e 4f4fcfcf 0070a93b .wttN.;O..OO;.p. ... 22188: 15000000 700015cb 70707070 a91f0070 .......pppppp... 22198: 36363670 36363636 704f3648 70701f70 p6666666H6Opp.pp 221a8: 48487070 36364870 70707048 70707070 ppHHpH66Hppppppp 221b8: 36707070 e240cf36 483636cd 48484870 ppp66.@..66HpHHH 221c8: 15484848 07074afd 15fd4a4a 48481515 HHH..J..JJ....HH 221d8: 00484848 00000000 00000000 1f700000 HHH...........p. 221e8: cd363670 59595454 74127459 68685912 p66.TTYYYt.t.Yhh 221f8: 68686868 b2683468 711053c8 34767664 hhhhh4h..S.qdvv4 22208: 0d0d3468 0d34340d 13137676 13133131 h4...44.vv..11.. 22218: 31131313 eafcaf13 797979b1 c8c8c876 ...1.....yyyv... 22228: 74770dc8 1fcf7474 3bcdcd3b 00001f3b ..wttt..;..;;... ... 22244: 00481515 70707070 00707070 36701f1f ..H.ppppppp...p6 22254: 48363636 70a94f36 70701f70 70707070 666H6O.pp.pppppp 22264: 48707070 70007070 70707070 70707070 pppHpp.ppppppppp 22274: 34cd3636 483636cd 48484848 4afd1548 66.4.66HHHHHH..J 22284: fd4a074a 48151515 48484848 00707048 J.J....HHHHHHpp. 22294: 00000000 70000000 70000000 4f367070 .......p...ppp6O 222a4: 5454cdcd 12125959 68685974 0d686868 ..TTYY..tYhhhhh. 222b4: 77b26868 2b241053 0d346868 34683434 hh.wS.$+hh4.44h4 222c4: 34343434 31404034 31313113 13131313 44444@@1.111.... 222d4: 0f65e35b 79797967 c8c8c82b 777777c8 [.e.gyyy+....www 222e4: 74383874 4f4f7070 0000701f 00000000 t88tppOO.p...... ... 222fc: 48151548 70707000 70707070 00707070 H..H.pppppppppp. 2230c: 361f7070 701fa936 70707070 70707070 pp.66..ppppppppp 2231c: 70707070 70707070 70707070 70707070 pppppppppppppppp 2232c: cf364870 48cbcbcf 15484848 074afd15 pH6....HHHH...J. 2233c: 1515fd4a 48484815 70484848 00000070 J....HHHHHHpp... ... 22354: 70000070 4f487070 121254cf 12125959 p..pppHO.T..YY.. 22364: 68595974 68343434 f1746868 b2c85310 tYYh444hhht..S.. 22374: 68686868 34343468 34686868 400d3434 hhhhh444hhh444.@ 22384: 31311331 33313131 33e365fb 76797979 1.111113.e.3yyyv 22394: c8c8c876 797977c8 38387477 00000038 v....wyywt888... ... 223b4: 15154800 70700000 70707070 70707070 .H....pppppppppp 223c4: 70000070 70707070 70707070 70707070 p..ppppppppppppp 223d4: 70707070 70707070 70707070 70707070 pppppppppppppppp 223e4: 36487070 cbcbcb36 fd151515 fd4a074a ppH66.......J.J. 223f4: 48481515 48484848 00707048 00000000 ..HHHHHHHpp..... ... 2240c: 70000000 36707070 0d12cdcd 59595968 ...pppp6....hYYY 2241c: 59595959 34686868 66e56868 34682bbe YYYYhhh4hh.f.+h4 2242c: 68686868 34686868 34686834 34343434 hhhhhhh44hh44444 2243c: 31317634 b1133131 79f210fc 76767979 4v1111.....yyyvv 2244c: c8c8c8c8 45c877c8 381e74c8 00006938 .....w.E.t.88i.. 2245c: 00707070 00000000 00000000 00000000 ppp............. 2246c: 15150000 70000015 70707070 70707070 .......ppppppppp 2247c: 70707070 70707070 70707070 70707070 pppppppppppppppp 2248c: 70707070 70707070 70707070 70707070 pppppppppppppppp 2249c: 48487070 cbcbcbcb 074aec15 15fd4a07 ppHH......J..J.. 224ac: 48484848 00704848 00000000 00000000 HHHHHHp......... ... 224c8: 70707070 4554cd4f 59595976 59595959 ppppO.TEvYYYYYYY 224d8: 68685959 66be2b68 0d6868e5 68683434 YYhhh+.f.hh.44hh 224e8: 68686868 34686868 34460d34 76763434 hhhhhhh44.F444vv 224f8: e3f27940 7967b1fc c8767679 c8c8c8c8 @y....gyyvv..... 22508: 77777777 381e1e77 00483838 70707000 wwwww..888H..ppp ... 22524: 15700000 00004815 70707070 70707070 ..p..H..pppppppp 22534: 70707070 701f7070 70707070 70707070 pppppp.ppppppppp 22544: 70707070 70707070 70707070 70707070 pppppppppppppppp 22554: 48484848 15cb4848 ca91074a 4815694a HHHHHH..J...Ji.H 22564: 70484848 00000000 00000000 00000000 HHHp............ ... 22580: 70700000 ab4f3636 59126887 59595959 ..pp66O..h.YYYYY 22590: 68685959 dba6f174 6868b274 68340d0d YYhht...t.hh..4h 225a0: 68686868 34686868 0d0d3434 40343446 hhhhhhh444..F44@ 225b0: e3372c79 764067b1 c8c8c876 77c8c8c8 y,7..g@vv......w 225c0: 77777777 1e1e1e1e 000c3838 70000000 wwww....88.....p ... 225dc: 48000000 00701515 70707000 70707070 ...H..p..ppppppp 225ec: 70707070 70707070 70707070 70707070 pppppppppppppppp 225fc: 70707070 70707070 70707070 70707070 pppppppppppppppp 2260c: 48484848 ca15cbcb eccafa91 4815e969 HHHH........i..H 2261c: 00004848 00000000 00000000 00000000 HH.............. ... 22634: 70000000 70007070 0c363636 121277dc ...ppp.p666..w.. 22644: 59595959 68595959 646666d1 68686868 YYYYYYYh.ffdhhhh 22654: 68680d68 68686868 34686868 46346834 h.hhhhhhhhh44h4F 22664: 2b34460d f27171f1 76767679 c8c8c876 .F4+.qq.yvvvv... 22674: 7777c8c8 77777777 381e1e1e cb384e38 ..wwwwww...88N8. 22684: 00000000 00000070 00000000 00000000 ....p........... 22694: 00000000 00151515 70700000 70707070 ..........pppppp 226a4: 70707070 70707070 70707070 70707070 pppppppppppppppp 226b4: 70707070 70707070 4f367070 48707070 pppppppppp6OpppH 226c4: 48cb4848 6307fd48 15154a91 48e9e9cb HH.HH..c.J.....H 226d4: 00007048 00000000 00000000 00000000 Hp.............. ... 226ec: 00007000 70707070 36cfcf1f 4e6979ab .p..pppp...6.yiN 226fc: 54545454 12595959 74f16553 68686868 TTTTYYY.Se.thhhh 2270c: 68686868 68686868 34686868 6868340d hhhhhhhhhhh4.4hh 2271c: b02b4634 0d67f153 4076400d c80d0d0d 4F+.S.g..@v@.... 2272c: 7777c8c8 1e1e7777 381e1e1e e94ee938 ..wwww.....88.N. 2273c: 00000048 00007000 00000000 00000000 H....p.......... 2274c: 00000000 1548fd00 70000000 70707070 ......H....ppppp 2275c: 70707070 70707070 70707070 70707070 pppppppppppppppp 2276c: 70707070 70707070 594f7070 4848703b ppppppppppOY;pHH 2277c: 48cbcb48 9163faec 15cb154a 691e69cb H..H..c.J....i.i 2278c: 00007048 00000000 00000000 00000000 Hp.............. ... 227a4: 00707000 70700000 4f367070 cf691e0c .pp...pppp6O..i. 227b4: 54cdcdcf bb545954 682b5a66 68686868 ...TTYT.fZ+hhhhh 227c4: 68686834 34686868 68686834 340d0d68 4hhhhhh44hhhh..4 227d4: b0640d68 34462bb0 0d0d0d34 0d0d0d0d h.d..+F44....... 227e4: 7777c8c8 1e1e1e77 381e1e1e 4ee9e9e9 ..www......8...N 227f4: 0000000c 00700000 00000000 00000000 ......p......... 22804: 00000000 15fd4800 70000048 70707070 .....H..H..ppppp 22814: 70707070 70707070 70707070 70707070 pppppppppppppppp 22824: 70707070 70707070 59367070 48483659 pppppppppp6YY6HH 22834: ec4848cb 4a631c63 cbcb1515 124ecbcb .HH.c.cJ......N. 22844: 00007036 00000000 00000000 00000000 6p.............. ... 2285c: 70700000 70707070 36367070 cfcfcf36 ..pppppppp666... 2286c: 59cdcfcf 2f545459 59597294 68686812 ...YYTT/.rYY.hhh 2287c: 68346868 34686868 6874460d 0d466868 hh4hhhh4.FthhhF. 2288c: 2b2bc80d 46464646 0d343446 0d0d0d0d ..++FFFFF44..... 2289c: 7777c80d 1e1e7777 e91e3838 4ee9e9e9 ..wwww..88.....N 228ac: 0000cb4e 70000000 00000000 00000000 N......p........ 228bc: 00000000 15150000 00007015 70707070 .........p..pppp 228cc: 70707070 70707070 70707070 70707070 pppppppppppppppp 228dc: 48707070 70707048 cf487070 cb483654 pppHHpppppH.T6H. 228ec: 631548cb 154a6397 484815cb 12693648 .H.c.cJ...HHH6i. 228fc: 0070703b 00000000 00000000 00000000 ;pp............. ... 22914: 70700000 70707070 4f707070 3636364f ..pppppppppOO666 22924: 544fcf4f 0b545968 59a5bf94 74681259 O.OThYT....YY.ht 22934: 34686868 6868400d 74460d68 74686868 hhh4.@hhh.Fthhht 22944: 74460d0d 46746868 46746874 0d0d3434 ..FthhtFthtF44.. 22954: c80dc80d 1e1e7779 e9e9381e 4ee9e9e9 ....yw...8.....N 22964: 00480c0c 00000000 00000070 00000000 ..H.....p....... 22974: 00000000 fd000000 00001548 70707000 ........H....ppp 22984: 70707070 70707070 70707070 70707070 pppppppppppppppp 22994: 361f7070 70363636 36707070 15cb36cf pp.6666pppp6.6.. 229a4: 73071548 48154a1c 48484848 4e484848 H..s.J.HHHHHHHHN 229b4: 00703612 00000000 00000000 00000000 .6p............. ... 229cc: 70700000 70707070 70707070 36364f4f ..ppppppppppOO66 229dc: cfcf3636 24387454 54541e94 12595959 66..Tt8$..TTYYY. 229ec: 68687474 6831f640 68686868 74686874 tthh@.1hhhhhthht 229fc: 68747474 68687468 74686868 0d464646 ttthhthhhhhtFFF. 22a0c: 79c80d0d 387731f6 e9e9e938 0c0ce9e9 ...y.1w88....... 22a1c: 0069cdcd 00000000 00007000 00000000 ..i......p...... ... 22a34: 001548fd 70700000 70707070 70707070 .H....pppppppppp 22a44: 70707070 70707070 36367070 4f543636 pppppppppp6666TO 22a54: 48707070 15cb3636 73ff4acb 48481507 pppH66...J.s..HH 22a64: 48484848 cb484848 70704f12 00000000 HHHHHHH..Opp.... ... 22a84: 70000000 70707070 701f1f70 36361f70 ...pppppp..pp.66 22a94: cf363636 5a4ecdcf cd3b38e6 5959593b 666...NZ.8;.;YYY 22aa4: 68747412 3487f634 68686834 74747468 .tth4..44hhhhttt 22ab4: 74747474 68687474 74746868 46467468 tttttthhhhtthtFF 22ac4: 31c8c80d 1ec8f616 e9e9e91e cd0ce9e9 ...1............ 22ad4: cbcdcdcd 00000000 00000000 00000000 ................ 22ae4: 70700000 00000070 4848fd48 48000000 ..ppp...H.HH...H 22af4: 70707070 70707070 70707070 70707070 pppppppppppppppp 22b04: 36367070 59684f36 48484836 cb15cb36 pp666OhY6HHH6... 22b14: 63736315 48154815 48484848 48484848 .csc.H.HHHHHHHHH 22b24: 7070cdcd 00000000 00000000 00000000 ..pp............ ... 22b40: 361f1f70 36361f1f 1f1f1f1f cf363636 p..6..66....666. 22b50: 32e9cfcf cd54e932 59543b3b 74746859 ...22.T.;;TYYhtt 22b60: 34877968 68686868 74746868 68686868 hy.4hhhhhhtthhhh 22b70: 68686874 74746868 74747468 79c80d74 thhhhhtthtttt..y 22b80: 7479165d e9e9e91e cd0c0c0c cdcdcdcd ].yt............ 22b90: 00000048 00000000 70000000 36363636 H..........p6666 22ba0: 00363636 48151500 00000000 70707048 666....H....Hppp 22bb0: 70707070 70707070 70707070 36484870 pppppppppppppHH6 22bc0: 34684f36 4848484f 15151548 4aff73ca 6Oh4OHHHH....s.J 22bd0: 48481548 70704848 48487070 0048cd36 H.HHHHppppHH6.H. ... 22bf8: 361f1f00 36363636 36363636 36363636 ...6666666666666 22c08: e66dcfcb 59544e5a 543b3b54 74125959 ..m.ZNTYT;;TYY.t 22c18: 34406874 68686868 68686868 68686868 th@4hhhhhhhhhhhh 22c28: 68121268 74741212 74686874 c80d7474 h..h..ttthhttt.. 22c38: 77e816f6 0ce9e91e cd0c0c0c cfcdcdcd ...w............ 22c48: 00007069 00000000 cb000000 36cbcfcf ip.............6 22c58: 48703636 48fd0070 00000015 70704800 66pHp..H.....Hpp 22c68: 70707070 70707070 70707070 36487070 ppppppppppppppH6 22c78: 7e593636 48363654 fdcb1548 15fa901c 66Y~T66HH....... 22c88: 48481515 70704848 70707070 00363648 ..HHHHppppppH66. ... 22cb0: 1f1f0000 3636361f 36363636 36363636 .....66666666666 22cc0: 576d4f36 54cf4e24 3b3b5974 12595954 6OmW$N.TtY;;TYY. 22cd0: 68747474 68686868 12686812 12747474 ttthhhhh.hh.ttt. 22ce0: 12121274 74121212 12127474 c8747412 t......ttt...tt. 22cf0: c8871606 0ce9381e cdcdcd0c cfcfcfcd .....8.......... 22d00: 0000cbcf 00000000 36000000 36cbcfcf ...........6...6 22d10: 48363636 fd707048 00004848 70700000 666HHpp.HH....pp 22d20: 70707070 70487070 48707070 48487048 ppppppHppppHHpHH 22d30: 7e543636 cb36cf68 071515cb 484aff73 66T~h.6.....s.JH 22d40: 48484815 70707048 70707070 70707070 .HHHHppppppppppp ... 22d68: 1f000000 361f1f1f 36363636 36363636 .......666666666 22d78: 57e93636 cfcd548c cd5454cf 59543b4f 66.W.T...TT.O;TY 22d88: 74747459 12686868 12686812 38743812 Yttthhh..hh..8t8 22d98: 12121212 12121212 12383812 74741212 .........88...tt 22da8: c8f61613 0ce9381e cfcdcdcd cfcfcfcf .....8.......... 22db8: 0048cfcf 00000000 70000000 cbcbcfcf ..H........p.... 22dc8: 483636cb 48704848 007048fd 70000000 .66HHHpH.Hp....p 22dd8: 70707070 70707070 70707070 48484870 pppppppppppppHHH 22de8: 343b3636 cbcbcd68 1cfd4815 1515fa22 66;4h....H.."... 22df8: 48484815 70707048 70707070 00707070 .HHHHpppppppppp. ... 22e24: 1f36361f 3636361f 36363636 e60c3636 .66..666666666.. 22e34: cdcfcded cfcfcfcf 3b4f4fcf 38121254 .........OO;T..8 22e44: 12121238 12686812 12121212 12121212 8....hh......... 22e54: 12121212 12125959 12121212 c8f6f60d ....YY.......... 22e64: 0ce93838 cfcfcdcd cfcfcfcf 70cfcfcf 88.............p ... 22e7c: cbcbcfcb 363636cb 70484848 004815fd .....666HHHp..H. 22e8c: 00000000 70707070 70707070 70707070 ....pppppppppppp 22e9c: 48487070 68cf3648 cbcb5402 7307cbcb ppHHH6.h.T.....s 22eac: 1548fdff 70484848 70707070 70707070 ..H.HHHppppppppp 22ebc: 00707070 00000000 00000000 00000000 ppp............. ... 22edc: 36363600 1f36361f 36361f1f edcd3636 .666.66...6666.. 22eec: cf4f0c32 cfcfcfcf 3b4f54cf 12593b3b 2.O......TO;;;Y. 22efc: 12121212 12681212 12121259 12123838 ......h.Y...88.. 22f0c: 59121212 59595912 59595959 77310d12 ...Y.YYYYYYY..1w 22f1c: 0ce94e12 cfcfcfcd cfcfcfcf 36cfcfcf .N.............6 ... 22f34: cbcfcf70 36363636 48484848 4848fd70 p...6666HHHHp.HH 22f44: 00000000 70707000 48707070 70707070 .....ppppppHpppp 22f54: 48707070 59364848 69695402 226315cb pppHHH6Y.Tii..c" 22f64: 151515fa 70484848 70707070 70707070 ....HHHppppppppp 22f74: 70707070 00000000 00000000 00000000 pppp............ ... 22f94: 1f1f0000 1f361f1f 1f1f1f36 9bcf3636 ......6.6...66.. 22fa4: cf366d57 cfcfcfcf 3636cfcf 593b4f36 Wm6.......666O;Y 22fb4: 59121212 59125959 12121212 12121212 ...YYY.Y........ 22fc4: 59121212 54595959 54545454 4e125454 ...YYYYTTTTTTT.N 22fd4: cd0c4e4e cfcfcfcf cfcfcfcf cb3636cb NN...........66. 22fe4: 00000048 00000000 cbcfcb00 483636cb H............66H 22ff4: 48484848 48fd4870 00000048 70700000 HHHHpH.HH.....pp 23004: 70707070 70707048 70707070 cd484848 ppppHpppppppHHH. 23014: 69695968 7397eccb 4815484a 70704848 hYii...sJH.HHHpp 23024: 70707070 70707070 70707070 00000070 ppppppppppppp... ... 2304c: 1f000000 1f1f1f1f 361f1f1f 891f361f ...........6.6.. 2305c: cb1f7857 cdcfcbcf 54cfcfcf 3b3b4fcd Wx.........T.O;; 2306c: 59121259 59595959 59126812 59595959 Y..YYYYY.h.YYYYY 2307c: 54595959 54545454 54545454 54545454 YYYTTTTTTTTTTTTT 2308c: cdcdcd54 cfcfcfcf cbcbcbcf 363636cb T............666 2309c: 00007036 00000000 cbcf7000 703636cb 6p.......p...66p 230ac: 48487070 15157048 00007048 70000000 ppHHHp..Hp.....p 230bc: 70707070 70707070 70707070 36484870 pppppppppppppHH6 230cc: 15695454 6373cacb 48484815 70484848 TTi...sc.HHHHHHp 230dc: 70707070 70707070 00000070 00000000 ppppppppp....... ... 23108: 70707070 1f707070 2d1f361f 364f9781 ppppppp..6.-..O6 23118: cd4f3636 cf69cfcd 4f4f4fcd 125959cd 66O...i..OOO.YY. 23128: 59595959 59121259 54545959 54545454 YYYYY..YYYTTTTTT 23138: 54545454 54545454 cdcd5454 cfcdcdcd TTTTTTTTTT...... 23148: 4f4fcfcf 36363636 36363636 00003636 ..OO6666666666.. 23158: 00000000 cb360000 483636cb 48707048 ......6..66HHppH 23168: fd704848 00004848 00000000 70707070 HHp.HH......pppp 23178: 70707070 70707070 48487070 cbcbcf36 ppppppppppHH6... 23188: ca736315 48481548 70707048 70707070 .cs.H.HHHppppppp 23198: 70707070 00000070 00000000 00000000 ppppp........... ... 231c0: 70707000 70707070 cf1f1f70 1f692273 .pppppppp...s"i. 231d0: 36363636 cd69cf4f 36cf4e0c 5954cf36 6666O.i..N.66.TY 231e0: 54595959 54545459 54545454 54544e54 YYYTYTTTTTTTTNTT 231f0: 54545454 54545454 3bcdcd3b 4f4f3b3b TTTTTTTT;..;;;OO 23200: 364f4f4f 36363636 36363636 00703636 OOO66666666666p. 23210: 00000000 36000000 483636cb 48484848 .......6.66HHHHH 23220: 48484848 0048484a 00000000 70707000 HHHHJHH......ppp 23230: 70707070 70707070 48707070 cbcbcb48 pppppppppppHH... 23240: fd1c1cec 48481548 70707070 70707070 ....H.HHpppppppp 23250: 00707070 00000070 00000000 00000000 ppp.p........... ... 23278: 70700000 70707070 1f707070 7091ed91 ..ppppppppp....p 23288: 36361f70 0ccdcf36 cd2b2b0c cdcf4fcf p.666....++..O.. 23298: 54545454 54545454 54545454 54545454 TTTTTTTTTTTTTTTT 232a8: 54545454 3b54cd54 4fa9a9a9 1f1fa91f TTTTT.T;...O.... 232b8: 1f1f701f 361f1f1f 36361f1f 00701f36 .p.....6..666.p. 232c8: 00000000 70000000 48363636 48704848 .......p666HHHpH 232d8: 70484848 4848fd48 00000000 70480000 HHHpH.HH......Hp 232e8: 70707048 70707070 48707070 cbcb4848 HppppppppppHHH.. 232f8: 15631c4a 48484848 70707070 70707070 J.c.HHHHpppppppp 23308: 00000000 70007000 00000000 00000000 .....p.p........ ... 23330: 70000000 70707070 70707070 361cff69 ...pppppppppi..6 23340: 36707070 cdcd3636 1e6eab0c 4f3636cf ppp666....n..66O 23350: 545454cf 54545454 54545454 54545454 .TTTTTTTTTTTTTTT 23360: 3b3b3b3b a93b3b3b 701f1f1f 70707070 ;;;;;;;....ppppp 23370: 70707070 701f1f70 70707070 70707070 ppppp..ppppppppp ... 23388: 36367070 48484870 48487070 4815fd70 pp66pHHHppHHp..H 23398: 00000070 70000000 70707070 70707070 p......ppppppppp 233a8: 48707070 48cb4848 48071c4a 70484848 pppHHH.HJ..HHHHp 233b8: 00000070 00007000 00000000 00007000 p....p.......p.. ... 233ec: 70707070 70707070 4affca70 70707070 ppppppppp..Jpppp 233fc: cf363636 0e6ee9cd 3636cf0c 54544f36 666...n...666OTT 2340c: 3bcdcd54 cdcdcdcd 3b54cd3b 3b3b3b3b T..;....;.T;;;;; 2341c: 1f3b3b3b 7070701f 70707070 00007000 ;;;..ppppppp.p.. 2342c: 70700000 70707070 00707070 00000000 ..ppppppppp..... 2343c: 00000000 48707000 70484848 48484848 .....ppHHHHpHHHH 2344c: 48fd0048 00000048 70000000 70707070 H..HH......ppppp 2345c: 70700070 48707070 48484848 484a634a p.pppppHHHHHJcJH 2346c: 70704848 00000070 00007070 00000070 HHppp...pp..p... 2347c: 00707000 00000000 00000000 00000000 .pp............. ... 234a4: 70707000 70707070 91633670 70707036 .pppppppp6c.6ppp 234b4: 36367070 b5670ccf 36cdcdab 3b4f3636 pp66..g....666O; 234c4: 3b3b3bcd 3b3b3b3b 4f3b3b3b 1f1fa94f .;;;;;;;;;;OO... 234d4: 701fa9a9 70707070 00707070 00000000 ...pppppppp..... 234e4: 00000000 00707000 00700000 00000000 .....pp...p..... 234f4: 00000000 70700000 70704870 70487070 ......pppHppppHp 23504: 4a707048 00004848 00000000 00707000 HppJHH.......pp. 23514: 00000000 70707000 48484848 48fd634a .....pppHHHHJc.H 23524: 70704848 00007070 00000000 00000000 HHpppp.......... 23534: 70700000 00000070 00000000 00000000 ..ppp........... ... 2355c: 70700000 70707070 63ec7000 707070ec ..pppppp.p.c.ppp 2356c: 36707070 6e4e4f36 cf690c87 4f1f7036 ppp66ONn..i.6p.O 2357c: 3b3b3b3b a9080808 70a9a91f 1f707070 ;;;;.......pppp. 2358c: 7070701f 00707070 00000070 00000000 .pppppp.p....... ... 235b0: 70000000 70707070 70707070 48007070 ...ppppppppppp.H 235c0: 007070fd 00000000 00700000 00000000 .pp.......p..... 235d0: 70700000 48484848 4815fa4a 00704848 ..ppHHHHJ..HHHp. 235e0: 00007000 00000000 00000000 70700000 .p............pp 235f0: 00007036 00000000 00000000 00000000 6p.............. ... 23614: 70000000 00707070 4a700000 000036fa ...pppp...pJ.6.. 23624: 70700000 2a363670 4f4f1e6e 70707036 ..ppp66*n.OO6ppp 23634: 1f4f4f1f 1f1fa91f 70700070 70707070 .OO.....p.pppppp 23644: 70707070 00707070 00000000 00000000 ppppppp......... 23654: 00000000 00007000 00000000 00000000 .....p.......... ... 2366c: 70707000 70707070 00707070 00701515 .pppppppppp...p. ... 23688: 70700000 48484848 48154a4a 00704848 ..ppHHHHJJ.HHHp. ... 236a4: 70700000 00704f36 00000000 00000000 ..pp6Op......... ... 236d0: 00007070 70000000 00704a4a 70000000 pp.....pJJp....p 236e0: 36367070 4f4fab67 70703636 1f1f7070 pp66g.OO66pppp.. 236f0: 00707070 70707000 70707070 70707070 ppp..ppppppppppp 23700: 70707070 00000000 00000000 00000000 pppp............ 23710: 00700000 00000000 00000000 00000000 ..p............. 23720: 00000000 70000000 00007070 00000000 .......ppp...... 23730: 70481500 00000000 00000000 00000000 ..Hp............ 23740: 70000000 48484848 48484afd 00007048 ...pHHHH.JHHHp.. ... 2375c: 70000000 00363b70 00000000 00000000 ...pp;6......... ... 23788: 00707000 00000000 70154a70 00000000 .pp.....pJ.p.... 23798: 70707000 36364e4f 70703636 70707070 .pppON6666pppppp 237a8: 70707070 00000070 70707000 70707070 ppppp....ppppppp 237b8: 00707070 00000000 00000000 00000000 ppp............. ... 237e8: 00150000 00000000 00000000 00000000 ................ 237f8: 70000000 48484870 4848fdfd 00007048 ...ppHHH..HHHp.. ... 23814: 70000000 703b4f70 00000000 00000000 ...ppO;p........ ... 23848: cb4a4800 00000000 70700000 36707070 .HJ.......ppppp6 23858: 7070701f 70707070 70707070 00007070 .ppppppppppppp.. 23868: 00000000 70000000 00000000 00000000 .......p........ ... 238a0: 48700000 00000000 00000000 00000000 ..pH............ 238b0: 00000000 48484870 4848fdfd 00007048 ....pHHH..HHHp.. ... 238d0: 364f1f70 00000070 00000000 00000000 p.O6p........... ... 23900: fd480000 00000048 00000000 70707070 ..H.H.......pppp 23910: 70707070 70000070 70707070 00707070 ppppp..pppppppp. ... 2396c: 48487070 48481515 00000070 00000000 ppHH..HHp....... ... 23988: 4f4f7000 00000070 00000000 00000000 .pOOp........... ... 239b8: 48000000 00004848 00000000 70000000 ...HHH.........p 239c8: 70707070 00000070 70707000 00000070 ppppp....pppp... ... 23a24: 48487000 48481515 00000070 00000000 .pHH..HHp....... ... 23a40: 4f1f0000 0000001f 00000000 00000000 ...O............ ... 23a70: 70000000 70484848 00000000 00000000 ...pHHHp........ 23a80: 70000000 00000000 70000000 00000070 ...p.......pp... ... 23adc: 48700000 48481515 00000070 00000000 ..pH..HHp....... ... 23af8: 36700000 00007036 00000000 00000000 ..p66p.......... ... 23b2c: 48484870 00000000 00000000 00000000 pHHH............ ... 23b94: 70000000 70481548 00000070 00000000 ...pH.Hpp....... ... 23bb0: 70000000 00007036 00000000 00000000 ...p6p.......... ... 23be0: 6c6c6548 6f57206f 00646c72 Hello World. 00023bec <__func__.9536>: 23bec: 645f766c 67756265 6568635f 735f6b63 lv_debug_check_s 23bfc: 00007274 tr.. 00023c00 : 23c00: 33323130 37363534 42413938 46454443 0123456789ABCDEF 23c10: 00000000 .... 00023c14 <__func__.9554>: 23c14: 645f766c 67756265 676f6c5f 7272655f lv_debug_log_err 23c24: 0000726f 742f2e2e 64726968 74726170 or..../thirdpart 23c34: 766c2f79 732f6c67 6c2f6372 6f635f76 y/lvgl/src/lv_co 23c44: 6c2f6572 65645f76 2e677562 00000063 re/lv_debug.c... 23c54: 645f766c 67756265 6568635f 735f6b63 lv_debug_check_s 23c64: 203a7274 6f6e2061 53412d6e 20494943 tr: a non-ASCII 23c74: 72616863 73616820 70657220 65746165 char has repeate 23c84: 6f6d2064 74206572 206e6168 445f564c d more than LV_D 23c94: 47554245 5254535f 58414d5f 5045525f EBUG_STR_MAX_REP 23ca4: 20544145 656d6974 00002973 645f766c EAT times)..lv_d 23cb4: 67756265 6568635f 735f6b63 203a7274 ebug_check_str: 23cc4: 61766e69 2064696c 72616863 206e6920 invalid char in 23cd4: 20656874 69727473 2820676e 3031203c the string (< 10 23ce4: 6c617620 00296575 645f766c 67756265 value).lv_debug 23cf4: 6568635f 735f6b63 203a7274 69727473 _check_str: stri 23d04: 6920676e 6f6c2073 7265676e 61687420 ng is longer tha 23d14: 564c206e 4245445f 535f4755 4d5f5254 n LV_DEBUG_STR_M 23d24: 4c5f5841 54474e45 00000048 AX_LENGTH... 00023d30 <__func__.9507>: 23d30: 645f766c 5f707369 5f746567 5f726373 lv_disp_get_scr_ 23d40: 00746361 act. 00023d44 <__func__.9515>: 23d44: 645f766c 5f707369 5f746567 6579616c lv_disp_get_laye 23d54: 6f745f72 00000070 r_top... 00023d5c <__func__.9519>: 23d5c: 645f766c 5f707369 5f746567 6579616c lv_disp_get_laye 23d6c: 79735f72 00000073 r_sys... 00023d74 <__func__.9524>: 23d74: 645f766c 5f707369 69737361 735f6e67 lv_disp_assign_s 23d84: 65657263 0000006e creen... 00023d8c <__func__.9529>: 23d8c: 645f766c 5f707369 5f746567 63616e69 lv_disp_get_inac 23d9c: 65766974 6d69745f 00000065 tive_time... 00023da8 <__func__.9539>: 23da8: 645f766c 5f707369 67697274 7463615f lv_disp_trig_act 23db8: 74697669 00000079 ivity... 00023dc0 <__func__.9543>: 23dc0: 5f766c5f 70736964 7465675f 6665725f _lv_disp_get_ref 23dd0: 61745f72 00006b73 742f2e2e 64726968 r_task..../third 23de0: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 23df0: 6f635f76 6c2f6572 69645f76 632e7073 v_core/lv_disp.c 23e00: 00000000 735f766c 615f7263 203a7463 ....lv_scr_act: 23e10: 64206f6e 6c707369 72207961 73696765 no display regis 23e20: 65726574 6f742064 74656720 73746920 tered to get its 23e30: 74636120 6373202e 6e656572 00000000 act. screen.... 23e40: 6c5f766c 72657961 706f745f 6f6e203a lv_layer_top: no 23e50: 73696420 79616c70 67657220 65747369 display registe 23e60: 20646572 67206f74 69207465 74207374 red to get its t 23e70: 6c20706f 72657961 00000000 6c5f766c op layer....lv_l 23e80: 72657961 7379735f 6f6e203a 73696420 ayer_sys: no dis 23e90: 79616c70 67657220 65747369 20646572 play registered 23ea0: 67206f74 69207465 73207374 202e7379 to get its sys. 23eb0: 6579616c 00000072 645f766c 5f707369 layer...lv_disp_ 23ec0: 69737361 735f6e67 65657263 74203a6e assign_screen: t 23ed0: 74207972 7361206f 6e676973 6e206120 ry to assign a n 23ee0: 732d6e6f 65657263 626f206e 7463656a on-screen object 23ef0: 00000000 645f766c 5f707369 5f746567 ....lv_disp_get_ 23f00: 63616e69 65766974 6d69745f 6e203a65 inactive_time: n 23f10: 6964206f 616c7073 65722079 74736967 o display regist 23f20: 64657265 00000000 645f766c 5f707369 ered....lv_disp_ 23f30: 67697274 7463615f 74697669 6e203a79 trig_activity: n 23f40: 6964206f 616c7073 65722079 74736967 o display regist 23f50: 64657265 00000000 645f766c 5f707369 ered....lv_disp_ 23f60: 5f746567 72666572 7361745f 6e203a6b get_refr_task: n 23f70: 6964206f 616c7073 65722079 74736967 o display regist 23f80: 64657265 00000000 ered.... 00023f88 <__func__.9740>: 23f88: 675f766c 70756f72 6572635f 00657461 lv_group_create. 00023f98 <__func__.9754>: 23f98: 675f766c 70756f72 6464615f 6a626f5f lv_group_add_obj 23fa8: 00000000 742f2e2e 64726968 74726170 ....../thirdpart 23fb8: 766c2f79 732f6c67 6c2f6372 6f635f76 y/lvgl/src/lv_co 23fc8: 6c2f6572 72675f76 2e70756f 00000063 re/lv_group.c... 23fd8: 2074754f 6d20666f 726f6d65 00000079 Out of memory... 23fe8: 675f766c 70756f72 6464615f 6a626f5f lv_group_add_obj 23ff8: 6874203a 626f2065 7463656a 20736920 : the object is 24008: 65726c61 20796461 65646461 6f742064 already added to 24018: 69687420 72672073 0070756f 675f766c this group.lv_g 24028: 70756f72 6464615f 6a626f5f 7361203a roup_add_obj: as 24038: 6e676973 6a626f20 20746365 61206f74 sign object to a 24048: 746f206e 20726568 756f7267 00000070 n other group... 00024058 <__func__.9914>: 24058: 695f766c 0074696e lv_init. 00024060 <__func__.9921>: 24060: 645f766c 696e6965 00000074 lv_deinit... 0002406c <__func__.9946>: 2406c: 6f5f766c 645f6a62 615f6c65 636e7973 lv_obj_del_async 2407c: 00000000 .... 00024080 <__func__.10139>: 24080: 6f5f766c 735f6a62 615f7465 5f6f7475 lv_obj_set_auto_ 24090: 6c616572 006e6769 realign. 00024098 <__func__.10148>: 24098: 6f5f766c 735f6a62 655f7465 635f7478 lv_obj_set_ext_c 240a8: 6b63696c 6572615f 00000061 lick_area... 000240b4 <__func__.10276>: 240b4: 6f5f766c 735f6a62 615f7465 685f7664 lv_obj_set_adv_h 240c4: 65747469 00007473 ittest.. 000240cc <__func__.10282>: 240cc: 6f5f766c 735f6a62 635f7465 6b63696c lv_obj_set_click 240dc: 00000000 .... 000240e0 <__func__.10288>: 240e0: 6f5f766c 735f6a62 745f7465 0000706f lv_obj_set_top.. 000240f0 <__func__.10294>: 240f0: 6f5f766c 735f6a62 645f7465 00676172 lv_obj_set_drag. 00024100 <__func__.10300>: 24100: 6f5f766c 735f6a62 645f7465 5f676172 lv_obj_set_drag_ 24110: 00726964 dir. 00024114 <__func__.10306>: 24114: 6f5f766c 735f6a62 645f7465 5f676172 lv_obj_set_drag_ 24124: 6f726874 00000077 throw... 0002412c <__func__.10312>: 2412c: 6f5f766c 735f6a62 645f7465 5f676172 lv_obj_set_drag_ 2413c: 65726170 0000746e parent.. 00024144 <__func__.10322>: 24144: 6f5f766c 735f6a62 705f7465 6e657261 lv_obj_set_paren 24154: 76655f74 00746e65 t_event. 0002415c <__func__.10333>: 2415c: 6f5f766c 615f6a62 705f6464 65746f72 lv_obj_add_prote 2416c: 00007463 ct.. 00024170 <__func__.10339>: 24170: 6f5f766c 635f6a62 7261656c 6f72705f lv_obj_clear_pro 24180: 74636574 00000000 tect.... 00024188 <__func__.10390>: 24188: 6f5f766c 735f6a62 655f7465 746e6576 lv_obj_set_event 24198: 0062635f _cb. 0002419c <__func__.10406>: 2419c: 655f766c 746e6576 6e65735f 75665f64 lv_event_send_fu 241ac: 0000636e nc.. 000241b0 <__func__.10397>: 241b0: 655f766c 746e6576 6e65735f 00000064 lv_event_send... 000241c0 <__func__.10419>: 241c0: 6f5f766c 735f6a62 735f7465 616e6769 lv_obj_set_signa 241d0: 62635f6c 00000000 l_cb.... 000241d8 <__func__.10431>: 241d8: 6f5f766c 735f6a62 645f7465 67697365 lv_obj_set_desig 241e8: 62635f6e 00000000 n_cb.... 000241f0 <__func__.10437>: 241f0: 6f5f766c 615f6a62 636f6c6c 5f657461 lv_obj_allocate_ 24200: 5f747865 72747461 00000000 ext_attr.... 0002420c <__func__.10443>: 2420c: 6f5f766c 725f6a62 65726665 655f6873 lv_obj_refresh_e 2421c: 645f7478 5f776172 00646170 xt_draw_pad. 00024228 <__func__.10471>: 24228: 6f5f766c 675f6a62 705f7465 6e657261 lv_obj_get_paren 24238: 00000074 t... 0002423c <__func__.10448>: 2423c: 6f5f766c 675f6a62 735f7465 65657263 lv_obj_get_scree 2424c: 0000006e n... 00024250 <__func__.10457>: 24250: 6f5f766c 675f6a62 645f7465 00707369 lv_obj_get_disp. 00024260 <__func__.10477>: 24260: 6f5f766c 675f6a62 635f7465 646c6968 lv_obj_get_child 24270: 00000000 .... 00024274 <__func__.10328>: 24274: 6f5f766c 735f6a62 625f7465 5f657361 lv_obj_set_base_ 24284: 00726964 dir. 00024288 <__func__.10484>: 24288: 6f5f766c 675f6a62 635f7465 646c6968 lv_obj_get_child 24298: 6361625f 0000006b _back... 000242a0 <__func__.10490>: 242a0: 6f5f766c 635f6a62 746e756f 6968635f lv_obj_count_chi 242b0: 6572646c 0000006e ldren... 000242b8 <__func__.10500>: 242b8: 6f5f766c 635f6a62 746e756f 6968635f lv_obj_count_chi 242c8: 6572646c 65725f6e 73727563 00657669 ldren_recursive. 000242d8 <__func__.10511>: 242d8: 6f5f766c 675f6a62 635f7465 64726f6f lv_obj_get_coord 242e8: 00000073 s... 000242ec <__func__.10524>: 242ec: 6f5f766c 675f6a62 785f7465 00000000 lv_obj_get_x.... 000242fc <__func__.10531>: 242fc: 6f5f766c 675f6a62 795f7465 00000000 lv_obj_get_y.... 0002430c <__func__.10538>: 2430c: 6f5f766c 675f6a62 775f7465 68746469 lv_obj_get_width 2431c: 00000000 .... 00024320 <__func__.10543>: 24320: 6f5f766c 675f6a62 685f7465 68676965 lv_obj_get_heigh 24330: 00000074 t... 00024334 <__func__.10588>: 24334: 6f5f766c 675f6a62 615f7465 5f6f7475 lv_obj_get_auto_ 24344: 6c616572 006e6769 realign. 0002434c <__func__.10593>: 2434c: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c 2435c: 6b63696c 6461705f 66656c5f 00000074 lick_pad_left... 0002436c <__func__.10598>: 2436c: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c 2437c: 6b63696c 6461705f 6769725f 00007468 lick_pad_right.. 0002438c <__func__.10603>: 2438c: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c 2439c: 6b63696c 6461705f 706f745f 00000000 lick_pad_top.... 000243ac <__func__.10608>: 243ac: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c 243bc: 6b63696c 6461705f 746f625f 006d6f74 lick_pad_bottom. 000243cc <__func__.10613>: 243cc: 6f5f766c 675f6a62 655f7465 645f7478 lv_obj_get_ext_d 243dc: 5f776172 00646170 raw_pad. 000243e4 <__func__.10162>: 243e4: 6f5f766c 635f6a62 6e61656c 7974735f lv_obj_clean_sty 243f4: 6c5f656c 00747369 le_list. 000243fc <__func__.10700>: 243fc: 6f5f766c 675f6a62 6c5f7465 6c61636f lv_obj_get_local 2440c: 7974735f 0000656c _style.. 00024414 <__func__.10200>: 24414: 6f5f766c 725f6a62 766f6d65 74735f65 lv_obj_remove_st 24424: 5f656c79 61636f6c 72705f6c 0000706f yle_local_prop.. 00024434 <__func__.10706>: 24434: 6f5f766c 675f6a62 685f7465 65646469 lv_obj_get_hidde 24444: 0000006e n... 00024448 <__func__.9962>: 24448: 6f5f766c 695f6a62 6c61766e 74616469 lv_obj_invalidat 24458: 72615f65 00006165 e_area.. 00024460 <__func__.9977>: 24460: 6f5f766c 695f6a62 6c61766e 74616469 lv_obj_invalidat 24470: 00000065 e... 00024474 <__func__.9995>: 24474: 6f5f766c 6d5f6a62 5f65766f 65726f66 lv_obj_move_fore 24484: 756f7267 0000646e ground.. 0002448c <__func__.10001>: 2448c: 6f5f766c 6d5f6a62 5f65766f 6b636162 lv_obj_move_back 2449c: 756f7267 0000646e ground.. 000244a4 <__func__.10009>: 244a4: 6f5f766c 735f6a62 705f7465 0000736f lv_obj_set_pos.. 000244b4 <__func__.10018>: 244b4: 6f5f766c 735f6a62 785f7465 00000000 lv_obj_set_x.... 000244c4 <__func__.10024>: 244c4: 6f5f766c 735f6a62 795f7465 00000000 lv_obj_set_y.... 000244d4 <__func__.10082>: 244d4: 6f5f766c 615f6a62 6e67696c 00000000 lv_obj_align.... 000244e4 <__func__.10096>: 244e4: 6f5f766c 615f6a62 6e67696c 69726f5f lv_obj_align_ori 244f4: 00006f67 go.. 000244f8 <__func__.10133>: 244f8: 6f5f766c 725f6a62 696c6165 00006e67 lv_obj_realign.. 00024508 <__func__.10207>: 24508: 6f5f766c 725f6a62 65726665 735f6873 lv_obj_refresh_s 24518: 656c7974 00000000 tyle.... 00024520 <__func__.10156>: 24520: 6f5f766c 615f6a62 735f6464 656c7974 lv_obj_add_style 24530: 00000000 .... 00024534 <__func__.10269>: 24534: 6f5f766c 735f6a62 685f7465 65646469 lv_obj_set_hidde 24544: 0000006e n... 00024548 <__func__.10711>: 24548: 6f5f766c 675f6a62 615f7465 685f7664 lv_obj_get_adv_h 24558: 65747469 00007473 ittest.. 00024560 <__func__.10716>: 24560: 6f5f766c 675f6a62 635f7465 6b63696c lv_obj_get_click 24570: 00000000 .... 00024574 <__func__.10721>: 24574: 6f5f766c 675f6a62 745f7465 0000706f lv_obj_get_top.. 00024584 <__func__.10726>: 24584: 6f5f766c 675f6a62 645f7465 00676172 lv_obj_get_drag. 00024594 <__func__.10731>: 24594: 6f5f766c 675f6a62 645f7465 5f676172 lv_obj_get_drag_ 245a4: 00726964 dir. 000245a8 <__func__.10736>: 245a8: 6f5f766c 675f6a62 645f7465 5f676172 lv_obj_get_drag_ 245b8: 6f726874 00000077 throw... 000245c0 <__func__.10747>: 245c0: 6f5f766c 675f6a62 705f7465 6e657261 lv_obj_get_paren 245d0: 76655f74 00746e65 t_event. 000245d8 <__func__.10752>: 245d8: 6f5f766c 675f6a62 625f7465 5f657361 lv_obj_get_base_ 245e8: 00726964 dir. 000245ec <__func__.9928>: 245ec: 6f5f766c 635f6a62 74616572 00000065 lv_obj_create... 000245fc <__func__.9985>: 245fc: 6f5f766c 735f6a62 705f7465 6e657261 lv_obj_set_paren 2460c: 00000074 t... 00024610 <__func__.10031>: 24610: 6f5f766c 735f6a62 735f7465 00657a69 lv_obj_set_size. 00024620 <__func__.10043>: 24620: 6f5f766c 735f6a62 775f7465 68746469 lv_obj_set_width 24630: 00000000 .... 00024634 <__func__.10049>: 24634: 6f5f766c 735f6a62 685f7465 68676965 lv_obj_set_heigh 24644: 00000074 t... 00024648 <__func__.10757>: 24648: 6f5f766c 675f6a62 705f7465 65746f72 lv_obj_get_prote 24658: 00007463 ct.. 0002465c <__func__.10763>: 2465c: 6f5f766c 695f6a62 72705f73 6365746f lv_obj_is_protec 2466c: 00646574 ted. 00024670 <__func__.10769>: 24670: 6f5f766c 675f6a62 735f7465 65746174 lv_obj_get_state 24680: 00000000 .... 00024684 <__func__.10548>: 24684: 6f5f766c 675f6a62 775f7465 68746469 lv_obj_get_width 24694: 7469665f 00000000 _fit.... 0002469c <__func__.10555>: 2469c: 6f5f766c 675f6a62 685f7465 68676965 lv_obj_get_heigh 246ac: 69665f74 00000074 t_fit... 000246b4 <__func__.10517>: 246b4: 6f5f766c 675f6a62 695f7465 72656e6e lv_obj_get_inner 246c4: 6f6f635f 00736472 0000ffff _coords..... 000246d0 <__func__.10345>: 246d0: 6f5f766c 735f6a62 735f7465 65746174 lv_obj_set_state 246e0: 00000000 .... 000246e4 <__func__.11002>: 246e4: 6e617274 72635f73 65746165 00000000 trans_create.... 000246f4 <__func__.10368>: 246f4: 6f5f766c 615f6a62 735f6464 65746174 lv_obj_add_state 24704: 00000000 .... 00024708 <__func__.10375>: 24708: 6f5f766c 635f6a62 7261656c 6174735f lv_obj_clear_sta 24718: 00006574 te.. 0002471c <__func__.10775>: 2471c: 6f5f766c 675f6a62 735f7465 616e6769 lv_obj_get_signa 2472c: 62635f6c 00000000 l_cb.... 00024734 <__func__.10780>: 24734: 6f5f766c 675f6a62 645f7465 67697365 lv_obj_get_desig 24744: 62635f6e 00000000 n_cb.... 0002474c <__func__.10785>: 2474c: 6f5f766c 675f6a62 655f7465 746e6576 lv_obj_get_event 2475c: 0062635f _cb. 00024760 <__func__.10790>: 24760: 6f5f766c 675f6a62 655f7465 615f7478 lv_obj_get_ext_a 24770: 00727474 ttr. 00024774 <__func__.10796>: 24774: 6f5f766c 675f6a62 745f7465 00657079 lv_obj_get_type. 00024784 <__func__.10811>: 24784: 6f5f766c 675f6a62 675f7465 70756f72 lv_obj_get_group 24794: 00000000 .... 00024798 <__func__.9935>: 24798: 6f5f766c 645f6a62 00006c65 lv_obj_del.. 000247a4 <__func__.10901>: 247a4: 6f5f766c 645f6a62 615f6c65 636e7973 lv_obj_del_async 247b4: 0062635f _cb. 000247b8 <__func__.9951>: 247b8: 6f5f766c 635f6a62 6e61656c 00000000 lv_obj_clean.... 000247c8 <__func__.10816>: 247c8: 6f5f766c 695f6a62 6f665f73 65737563 lv_obj_is_focuse 247d8: 00000064 742f2e2e 64726968 74726170 d...../thirdpart 247e8: 766c2f79 732f6c67 6c2f6372 6f635f76 y/lvgl/src/lv_co 247f8: 6c2f6572 626f5f76 00632e6a 695f766c re/lv_obj.c.lv_i 24808: 3a74696e 726c6120 79646165 696e6920 nit: already ini 24818: 00646574 695f766c 2074696e 64616572 ted.lv_init read 24828: 00000079 645f766c 696e6965 6f642074 y...lv_deinit do 24838: 0000656e 4c4c554e 696f7020 7265746e ne..NULL pointer 24848: 00000000 735f766c 675f7263 645f7465 ....lv_scr_get_d 24858: 3a707369 72637320 206e6565 20746f6e isp: screen not 24868: 6e756f66 00000064 6f5f766c 735f6a62 found...lv_obj_s 24878: 625f7465 5f657361 3a726964 766e6920 et_base_dir: inv 24888: 64696c61 73616220 69642065 00000072 alid base dir... 24898: 6f5f766c 635f6a62 6e61656c 7974735f lv_obj_clean_sty 248a8: 6c5f656c 3a747369 6e616320 66207427 le_list: can't f 248b8: 20646e69 6c797473 69772065 60206874 ind style with ` 248c8: 74726170 00000060 6f5f766c 735f6a62 part`...lv_obj_s 248d8: 705f7465 203a736f 20746f6e 6e616863 et_pos: not chan 248e8: 676e6967 736f7020 6f697469 666f206e ging position of 248f8: 72637320 206e6565 656a626f 00007463 screen object.. 24908: 6f5f766c 615f6a62 735f6464 656c7974 lv_obj_add_style 24918: 6163203a 2074276e 646e6966 79747320 : can't find sty 24928: 7720656c 20687469 70797460 00006065 le with `type`.. 24938: 6f5f766c 635f6a62 74616572 6e203a65 lv_obj_create: n 24948: 6420746f 6c707369 63207961 74616572 ot display creat 24958: 74206465 6f73206f 72616620 6f4e202e ed to so far. No 24968: 616c7020 74206563 7361206f 6e676973 place to assign 24978: 65687420 77656e20 72637320 006e6565 the new screen. 24988: 656a624f 63207463 74616572 65722065 Object create re 24998: 00796461 276e6143 65732074 68742074 ady.Can't set th 249a8: 61702065 746e6572 20666f20 63732061 e parent of a sc 249b8: 6e656572 00000000 276e6143 65732074 reen....Can't se 249c8: 61702074 746e6572 203d3d20 4c4c554e t parent == NULL 249d8: 206f7420 6f206e61 63656a62 00000074 to an object... 249e8: 6f5f766c 00006a62 lv_obj.. 000249f0 <__func__.9738>: 249f0: 725f766c 5f726665 61657261 00000000 lv_refr_area.... 24a00: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv 24a10: 732f6c67 6c2f6372 6f635f76 6c2f6572 gl/src/lv_core/l 24a20: 65725f76 632e7266 00000000 276e6143 v_refr.c....Can' 24a30: 65732074 44562074 65682042 74686769 t set VDB height 24a40: 69737520 7420676e 72206568 646e756f using the round 24a50: 6e756620 6f697463 28202e6e 6e6f7257 function. (Wron 24a60: 6f722067 5f646e75 6f206263 6f742072 g round_cb or to 24a70: 616d7320 56206c6c 00294244 small VDB). 00024a7c <__func__.9549>: 24a7c: 5f766c5f 6c797473 696c5f65 725f7473 _lv_style_list_r 24a8c: 766f6d65 74735f65 00656c79 emove_style. 00024a98 <__func__.9532>: 24a98: 5f766c5f 6c797473 696c5f65 615f7473 _lv_style_list_a 24aa8: 735f6464 656c7974 00000000 dd_style.... 00024ab4 <__func__.9777>: 24ab4: 5f746567 6f6c6c61 6f6c5f63 5f6c6163 get_alloc_local_ 24ac4: 6c797473 00000065 style... 00024acc <__func__.9583>: 24acc: 5f766c5f 6c797473 65735f65 6e695f74 _lv_style_set_in 24adc: 00000074 t... 00024ae0 <__func__.9597>: 24ae0: 5f766c5f 6c797473 65735f65 6f635f74 _lv_style_set_co 24af0: 00726f6c lor. 00024af4 <__func__.9611>: 24af4: 5f766c5f 6c797473 65735f65 706f5f74 _lv_style_set_op 24b04: 00000061 a... 00024b08 <__func__.9625>: 24b08: 5f766c5f 6c797473 65735f65 74705f74 _lv_style_set_pt 24b18: 00000072 r... 00024b1c <__func__.9673>: 24b1c: 5f766c5f 6c797473 696c5f65 615f7473 _lv_style_list_a 24b2c: 745f6464 736e6172 7974735f 0000656c dd_trans_style.. 24b3c: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv 24b4c: 732f6c67 6c2f6372 6f635f76 6c2f6572 gl/src/lv_core/l 24b5c: 74735f76 2e656c79 00000063 735f766c v_style.c...lv_s 24b6c: 656c7974 73696c5f 65725f74 65766f6d tyle_list_remove 24b7c: 7974735f 203a656c 6c756f63 74276e64 _style: couldn't 24b8c: 61657220 636f6c6c 20657461 73616c63 reallocate clas 24b9c: 696c2073 00007473 735f766c 656c7974 s list..lv_style 24bac: 73696c5f 64615f74 74735f64 3a656c79 _list_add_style: 24bbc: 756f6320 276e646c 64612074 68742064 couldn't add th 24bcc: 6c632065 00737361 5f746567 61636f6c e class.get_loca 24bdc: 74735f6c 3a656c79 756f6320 276e646c l_style: couldn' 24bec: 72632074 65746165 636f6c20 73206c61 t create local s 24bfc: 656c7974 00000000 735f766c 656c7974 tyle....lv_style 24c0c: 73696c5f 64615f74 72745f64 5f736e61 _list_add_trans_ 24c1c: 6c797473 63203a65 646c756f 2074276e style: couldn't 24c2c: 61657263 74206574 736e6172 6f697469 create transitio 24c3c: 7473206e 00656c79 n style. 00024c44 <__func__.9728>: 24c44: 6c6c6966 656c625f 6465646e 00000000 fill_blended.... 00024c54 <__func__.9860>: 24c54: 5f70616d 6e656c62 00646564 742f2e2e map_blended.../t 24c64: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s 24c74: 6c2f6372 72645f76 6c2f7761 72645f76 rc/lv_draw/lv_dr 24c84: 625f7761 646e656c 0000632e 6c6c6966 aw_blend.c..fill 24c94: 656c625f 6465646e 6e75203a 70707573 _blended: unsupp 24ca4: 6574726f 6c622064 20646e65 65646f6d orted blend mode 24cb4: 00000000 0000ffff ........ 00024cbc <__func__.9554>: 24cbc: 645f766c 5f776172 00676d69 lv_draw_img. 00024cc8 <__func__.9618>: 24cc8: 695f766c 645f676d 5f776172 65726f63 lv_img_draw_core 24cd8: 00000000 742f2e2e 64726968 74726170 ....../thirdpart 24ce8: 766c2f79 732f6c67 6c2f6372 72645f76 y/lvgl/src/lv_dr 24cf8: 6c2f7761 72645f76 695f7761 632e676d aw/lv_draw_img.c 24d08: 00000000 67616d49 72642065 203a7761 ....Image draw: 24d18: 20637273 4e207369 004c4c55 640a6f4e src is NULL.No.d 24d28: 00617461 67616d49 72642065 65207761 ata.Image draw e 24d38: 726f7272 00000000 67616d49 72642065 rror....Image dr 24d48: 63207761 74276e61 61657220 68742064 aw can't read th 24d58: 696c2065 0000656e e line.. 00024d60 <_lv_bpp1_opa_table>: 24d60: 0000ff00 .... 00024d64 <_lv_bpp2_opa_table>: 24d64: ffaa5500 .U.. 00024d68 <_lv_bpp4_opa_table>: 24d68: 33221100 77665544 bbaa9988 ffeeddcc .."3DUfw........ 00024d78 <_lv_bpp8_opa_table>: 24d78: 03020100 07060504 0b0a0908 0f0e0d0c ................ 24d88: 13121110 17161514 1b1a1918 1f1e1d1c ................ 24d98: 23222120 27262524 2b2a2928 2f2e2d2c !"#$%&'()*+,-./ 24da8: 33323130 37363534 3b3a3938 3f3e3d3c 0123456789:;<=>? 24db8: 43424140 47464544 4b4a4948 4f4e4d4c @ABCDEFGHIJKLMNO 24dc8: 53525150 57565554 5b5a5958 5f5e5d5c PQRSTUVWXYZ[\]^_ 24dd8: 63626160 67666564 6b6a6968 6f6e6d6c `abcdefghijklmno 24de8: 73727170 77767574 7b7a7978 7f7e7d7c pqrstuvwxyz{|}~. 24df8: 83828180 87868584 8b8a8988 8f8e8d8c ................ 24e08: 93929190 97969594 9b9a9998 9f9e9d9c ................ 24e18: a3a2a1a0 a7a6a5a4 abaaa9a8 afaeadac ................ 24e28: b3b2b1b0 b7b6b5b4 bbbab9b8 bfbebdbc ................ 24e38: c3c2c1c0 c7c6c5c4 cbcac9c8 cfcecdcc ................ 24e48: d3d2d1d0 d7d6d5d4 dbdad9d8 dfdedddc ................ 24e58: e3e2e1e0 e7e6e5e4 ebeae9e8 efeeedec ................ 24e68: f3f2f1f0 f7f6f5f4 fbfaf9f8 fffefdfc ................ 00024e78 <__func__.9614>: 24e78: 645f766c 5f776172 7474656c 00007265 lv_draw_letter.. 00024e88 <__func__.9696>: 24e88: 77617264 74656c5f 5f726574 70627573 draw_letter_subp 24e98: 00000078 x... 00024e9c <__func__.9641>: 24e9c: 77617264 74656c5f 5f726574 6d726f6e draw_letter_norm 24eac: 00006c61 al.. 00024eb0 <_lv_bpp3_opa_table>: 24eb0: 6d492400 ffdbb692 742f2e2e 64726968 .$Im....../third 24ec0: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 24ed0: 72645f76 6c2f7761 72645f76 6c5f7761 v_draw/lv_draw_l 24ee0: 6c656261 0000632e 645f766c 5f776172 abel.c..lv_draw_ 24ef0: 7474656c 203a7265 746e6f66 20736920 letter: font is 24f00: 4c4c554e 00000000 645f766c 5f776172 NULL....lv_draw_ 24f10: 7474656c 203a7265 70796c67 73642068 letter: glyph ds 24f20: 6e202e63 6620746f 646e756f 00000000 c. not found.... 24f30: 645f766c 5f776172 7474656c 203a7265 lv_draw_letter: 24f40: 72616863 65746361 20732772 6d746962 character's bitm 24f50: 6e207061 6620746f 646e756f 00000000 ap not found.... 24f60: 645f766c 5f776172 7474656c 203a7265 lv_draw_letter: 24f70: 61766e69 2064696c 20707062 20746f6e invalid bpp not 24f80: 6e756f66 00000064 645f766c 5f776172 found...lv_draw_ 24f90: 7474656c 203a7265 61766e69 2064696c letter: invalid 24fa0: 00707062 bpp. 00024fa4 : 24fa4: 81808080 83828281 87868584 8d8c8a89 ................ 24fb4: 9593918f 9e9b9997 a7a5a2a0 b2afadaa ................ 24fc4: 000000b5 .... 00024fc8 <__func__.9580>: 24fc8: 645f766c 5f776172 6b73616d 6464615f lv_draw_mask_add 24fd8: 00000000 .... 00024fdc <__func__.9645>: 24fdc: 645f766c 5f776172 6b73616d 676e615f lv_draw_mask_ang 24fec: 695f656c 0074696e 742f2e2e 64726968 le_init.../third 24ffc: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 2500c: 72645f76 6c2f7761 72645f76 6d5f7761 v_draw/lv_draw_m 2501c: 2e6b7361 00000063 6d5f766c 5f6b7361 ask.c...lv_mask_ 2502c: 3a646461 206f6e20 63616c70 6f742065 add: no place to 2503c: 64646120 65687420 73616d20 0000006b add the mask... 2504c: 78656e55 74636570 73206465 74726174 Unexpected start 2505c: 676e615f 0000656c 78656e55 74636570 _angle..Unexpect 2506c: 65206465 615f646e 656c676e 00000000 ed end_angle.... 2507c: 0000ffff .... 00025080 <__func__.9886>: 25080: 77617264 7461705f 6e726574 00000000 draw_pattern.... 25090: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv 250a0: 732f6c67 6c2f6372 72645f76 6c2f7761 gl/src/lv_draw/l 250b0: 72645f76 725f7761 2e746365 00000063 v_draw_rect.c... 250c0: 77617264 676d695f 6163203a 2074276e draw_img: can't 250d0: 20746567 67616d69 6e692065 00006f66 get image info.. 250e0: 695f766c 645f676d 67697365 69203a6e lv_img_design: i 250f0: 6567616d 756f7320 20656372 65707974 mage source type 25100: 20736920 6e6b6e75 006e776f 33221100 is unknown..."3 25110: 77665544 bbaa9988 ffeeddcc DUfw........ 0002511c <__func__.7156>: 2511c: 695f766c 625f676d 735f6675 705f7465 lv_img_buf_set_p 2512c: 74656c61 00006574 alette.. 00025134 <__func__.9528>: 25134: 5f766c5f 5f676d69 68636163 706f5f65 _lv_img_cache_op 25144: 00006e65 en.. 00025148 <__func__.9548>: 25148: 695f766c 635f676d 65686361 7465735f lv_img_cache_set 25158: 7a69735f 00000065 742f2e2e 64726968 _size...../third 25168: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 25178: 72645f76 6c2f7761 6d695f76 61635f67 v_draw/lv_img_ca 25188: 2e656863 00000063 695f766c 635f676d che.c...lv_img_c 25198: 65686361 65706f5f 74203a6e 63206568 ache_open: the c 251a8: 65686361 7a697320 73692065 00003020 ache size is 0.. 251b8: 67616d69 72642065 203a7761 68636163 image draw: cach 251c8: 696d2065 202c7373 736f6c63 6e612065 e miss, close an 251d8: 65722064 20657375 65206e61 7972746e d reuse an entry 251e8: 00000000 67616d69 72642065 203a7761 ....image draw: 251f8: 68636163 696d2065 202c7373 68636163 cache miss, cach 25208: 74206465 6e61206f 706d6520 65207974 ed to an empty e 25218: 7972746e 00000000 67616d49 72642065 ntry....Image dr 25228: 63207761 6f6e6e61 706f2074 74206e65 aw cannot open t 25238: 69206568 6567616d 73657220 6372756f he image resourc 25248: 00000065 e... 0002524c <__func__.9619>: 2524c: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 2525c: 746c6975 5f6e695f 6f666e69 00000000 uilt_in_info.... 0002526c <__func__.9626>: 2526c: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 2527c: 746c6975 5f6e695f 6e65706f 00000000 uilt_in_open.... 0002528c <__func__.9673>: 2528c: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 2529c: 746c6975 5f6e695f 656e696c 7572745f uilt_in_line_tru 252ac: 6f635f65 00726f6c 33221100 77665544 e_color..."3DUfw 252bc: bbaa9988 ffeeddcc ........ 000252c4 <__func__.9656>: 252c4: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 252d4: 746c6975 5f6e695f 64616572 6e696c5f uilt_in_read_lin 252e4: 00000065 e... 000252e8 <__func__.9588>: 252e8: 695f766c 645f676d 646f6365 635f7265 lv_img_decoder_c 252f8: 74616572 00000065 reate... 00025300 <__func__.9550>: 25300: 5f766c5f 5f676d69 6f636564 5f726564 _lv_img_decoder_ 25310: 74696e69 00000000 742f2e2e 64726968 init....../third 25320: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 25330: 72645f76 6c2f7761 6d695f76 65645f67 v_draw/lv_img_de 25340: 65646f63 00632e72 67616d49 65672065 coder.c.Image ge 25350: 6e692074 67206f66 72207465 20646165 t info get read 25360: 656c6966 61656820 00726564 67616d49 file header.Imag 25370: 65672065 6e692074 66206f66 646e756f e get info found 25380: 6b6e7520 6e776f6e 63727320 70797420 unknown src typ 25390: 00000065 006e6962 6c697542 6e692d74 e...bin.Built-in 253a0: 616d6920 64206567 646f6365 63207265 image decoder c 253b0: 74276e61 65706f20 6874206e 69662065 an't open the fi 253c0: 0000656c 5f676d69 6f636564 5f726564 le..img_decoder_ 253d0: 6c697562 6e695f74 65706f5f 6f203a6e built_in_open: o 253e0: 6f207475 656d2066 79726f6d 00000000 ut of memory.... 253f0: 67616d49 65642065 65646f63 706f2072 Image decoder op 25400: 203a6e65 6e6b6e75 206e776f 6f6c6f63 en: unknown colo 25410: 6f662072 74616d72 00000000 6c697542 r format....Buil 25420: 6e692d74 616d6920 64206567 646f6365 t-in image decod 25430: 73207265 206b6565 6c696166 00006465 er seek failed.. 25440: 6c697542 6e692d74 616d6920 64206567 Built-in image d 25450: 646f6365 72207265 20646165 6c696166 ecoder read fail 25460: 00006465 6c697542 6e692d74 616d6920 ed..Built-in ima 25470: 64206567 646f6365 72207265 20646165 ge decoder read 25480: 20746f6e 70707573 7374726f 65687420 not supports the 25490: 6c6f6320 6620726f 616d726f 00000074 color format... 254a0: 695f766c 645f676d 646f6365 695f7265 lv_img_decoder_i 254b0: 3a74696e 74756f20 20666f20 6f6d656d nit: out of memo 254c0: 00007972 ry.. 000254c4 <__func__.9652>: 254c4: 665f766c 5f746e6f 5f746567 6d746962 lv_font_get_bitm 254d4: 665f7061 745f746d 00007478 742f2e2e ap_fmt_txt..../t 254e4: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s 254f4: 6c2f6372 6f665f76 6c2f746e 6f665f76 rc/lv_font/lv_fo 25504: 665f746e 745f746d 632e7478 00000000 nt_fmt_txt.c.... 00025514 : 25514: 00025524 00026170 000260d4 0000313d $U..pa...`..=1.. 00025524 : 25524: 00000100 00000000 00000100 00000003 ................ 25534: 00000200 00000000 00000000 00000000 ................ 25544: 00010000 00000000 00000000 00000000 ................ 25554: 000c0100 0000fa07 f1f20000 04060c02 ................ 25564: 010d02f6 0008030b 00000000 00000000 ................ 25574: 020f0000 000000fe 00000000 00000000 ................ 25584: f8000500 00000000 0504fb00 00fd0000 ................ 25594: fd0003fe fbfffd00 00000000 fd0000fd ................ 255a4: fd0000fc 0000fb00 00000000 fd000000 ................ 255b4: 00fc00fd 00e100f9 0500fb00 fb000008 ................ 255c4: 05080303 000005fc 000000f1 00000000 ................ 255d4: 00000000 000000f7 00000000 00000000 ................ 255e4: f9000000 f600f3fd 000000fe 000a0100 ................ 255f4: 01fffef8 0000fc00 0000edfe 00000000 ................ 25604: 00000000 0afeec00 00000000 00000000 ................ 25614: 00000000 000000f6 00000000 08000000 ................ 25624: 00000300 000000fb 00000000 00000000 ................ 25634: 00000000 020a0000 00000001 00000000 ................ ... 25664: 000000f7 00000000 00000000 00000000 ................ 25674: 00000000 02000000 fd080305 fd050000 ................ 25684: 0702ddf8 00fd0105 00080009 00e80008 ................ 25694: 080008fd 000305fd 00fd0100 0014fc00 ................ 256a4: 00080014 0804030b f7000000 00000000 ................ 256b4: 0200fe01 02fbfdfb 0000fd00 0000f600 ................ ... 256cc: 0000ef00 00000000 00000000 00000000 ................ 256dc: 00f20100 000000f0 1900fe00 0303fdfd ................ 256ec: 03fd00fe 00f20000 00000000 00000000 ................ 256fc: 00e70000 00000003 00000000 00000000 ................ 2570c: 0f00f000 00f70000 e7ef0008 0008fbef ................ 2571c: 0300ef00 00fc00fa 00000000 00000000 ................ 2572c: 07000000 0000e108 00000000 00000000 ................ 2573c: 000c0000 00000002 02020000 ff00fbfd ................ 2574c: 0000fdff 000000fe 00fe00fb fa00fbfa ................ 2575c: 00fbf8f8 00fb00fb fe000000 00030000 ................ 2576c: 0100fd02 03000000 000000fe ff0303fe ................ 2577c: fb000000 0000ff00 01000000 00fe0300 ................ 2578c: 00fc00fd 0800fe00 00fd0000 00000000 ................ 2579c: fefe01ff 00fd0000 000000fd 00000000 ................ 257ac: ffff0000 00fdfd00 00000000 fe000001 ................ 257bc: fdfdfd00 00000000 00000000 0000fe00 ................ 257cc: fdfe0000 f800fc00 0005f8fe 0503fb00 ................ 257dc: fffa0007 f4ff00fd f202fe03 01000003 ................ 257ec: fef200f3 f300feea 00070500 00000003 ................ 257fc: fb000100 00f800fd 00fd0000 00fd0000 ................ 2580c: 00000000 ff00ffff 000000fd 00000000 ................ 2581c: fe00fdfd 0000fefd 000000fd 00000000 ................ 2582c: 00000000 fd00fefe fb00fe00 fd000003 ................ 2583c: 00030301 00000000 0000fe00 02000000 ................ 2584c: 00fd0000 00fdfefd 00000000 00020000 ................ 2585c: 000000fe 00fcfd00 fe0800fb 0000f801 ................ 2586c: f5f3f307 fe0003fb fb00fbef fb04fb00 ................ 2587c: 00f900f0 02ff0100 000300fe f300f6f8 ................ 2588c: f8fafbfa fbfff9fd 010002f9 0000fd00 ................ 2589c: 03000200 00000000 00000000 fd000000 ................ 258ac: ff00ff00 fafc00fd f800fffa 00000000 ................ 258bc: 00fe0000 01000000 000000fe 00000003 ................ 258cc: 00000000 00000c00 00000000 00000002 ................ 258dc: 000000fd 00000000 00000000 000300fb ................ ... 258f8: 000000fe 000000fb 00f8f300 f3fc0000 ................ 25908: 03fd0000 0000f900 00000000 00000000 ................ 25918: fb0000fc 00000000 00000000 00000000 ................ 25928: 00fb0003 03000000 fbfb0200 fdfdfd00 ................ 25938: 00000000 00f80000 fdfc00fd f8fafa00 ................ 25948: 00fb00fe 000000f8 00001400 fd000001 ................ 25958: f5000300 00000000 08fbe800 00f5fe08 ................ 25968: f300fc03 ee03fdff 040003fd f8f7fcf7 ................ 25978: f10000f5 00000f00 000000ff f9fdffff ................ 25988: 00e8fff8 00000000 00000000 00000001 ................ ... 259a4: ff00fd00 0000fcfd 00fd00fb 00000000 ................ ... 259bc: 00ff0000 050000fb fa0003ff f9fffe03 ................ 259cc: fdfd00fd fcfc00fe fffe0000 00fdfcfe ................ 259dc: 0300fd00 00fa00fe 00fb0000 fcfc00fc ................ 259ec: 00000003 00000000 0003fb00 fdfe00fc ................ 259fc: fefefef8 fffdfeff 00000000 fefefd00 ................ 25a0c: 00000000 fe00fe03 fe000000 fdfefefd ................ 25a1c: 0a0200fe 00f900ff fd0005fe 0004fdf5 ................ 25a2c: 03fcf400 fe0002fc fc00f8fe fc000001 ................ 25a3c: 03000000 00fbfb03 fdfcfdfc 01fc00fd ................ 25a4c: 0008fcfb 00000000 00000000 00000003 ................ ... 25a70: 000000fc 00000000 00000000 00000000 ................ ... 25a9c: 000000fe 00000000 00000000 00000000 ................ ... 25ab8: fdfe0000 00000000 00000000 00000000 ................ 25ac8: fd0000fc fdfd0000 00000000 000000fd ................ 25ad8: 0000ff00 fe000000 00000000 00fb00fc ................ 25ae8: 00f80000 0105fa02 0000f4fe f600fdfa ................ 25af8: 0000f9fa f6f6fdf5 00f900f4 00fd1102 ................ 25b08: fdfffdfa f7fbf9fc 00fdfaf6 0100fe00 ................ 25b18: feee0000 f7fa0608 00f80100 05fdfef3 ................ 25b28: 0001fde8 f3fdef00 0000edfd 010f00ee ................ 25b38: 0000fe00 feff0000 ef00fef6 00000000 ................ 25b48: 00fe00f8 00f4f9ff f8fcff00 00fe00fd ................ 25b58: f4000000 fef8f8fd fcfdfafc f8fefb00 ................ 25b68: fbfd00fc 0100fbfd 00f8fe00 00fb0005 ................ 25b78: 03000000 0afb0200 fdfdfd00 00000000 ................ 25b88: 00f80000 fdfc00fd f8fafa00 02fb00fe ................ 25b98: 0000000a 00001400 fd000001 00000300 ................ 25ba8: 00000000 00ff0000 00000000 0000fbfe ................ 25bb8: ff000000 fd000000 fb0000fd fb0000fd ................ 25bc8: 00ff0400 00000000 00000100 05040000 ................ 25bd8: f800fe02 f80800fc 0afbfbf8 feea0305 ................ 25be8: fd00fd05 00f7fd03 fefd03fd 0000fef8 ................ 25bf8: f9000508 07fdf200 fd01f6fd 0afdf8f8 ................ 25c08: 00fc0003 080200f9 faf6f7fa ed010008 ................ 25c18: fefc03fe f7fa00fa 00fefcfc fdfbfa00 ................ 25c28: fd060800 fcf200f2 fff1f700 f9f8fcf8 ................ 25c38: fd000007 00fefb00 0400fbfd 000003f8 ................ 25c48: fafd00f2 faf8fefc f800faf8 f8fbfafd ................ 25c58: 010000fd f800fc0c fbfd00fd f6f9f9fa ................ 25c68: 0005fbfd fdf300fc f7f80502 fd08f8fb ................ 25c78: 05fbe801 00f7fcfa fdfdf5f8 f8fbfdfe ................ 25c88: 080000ff 00effe07 f606faf1 f5f7fbef ................ 25c98: 0005f8f3 fd000000 fd030000 05fb0205 ................ 25ca8: fff80000 0100ff00 0000fe01 00000000 ................ 25cb8: 000000fd 01080200 0000fd00 fefe0000 ................ 25cc8: 000000fd 00000201 00020000 000a00fe ................ 25cd8: fd010105 00000500 00000200 00000000 ................ 25ce8: 00000000 07000800 00000000 00000000 ................ 25cf8: 00000000 00f10000 080004fd 03190000 ................ 25d08: 0303fbfb 00f301fe 00f10c00 00000000 ................ 25d18: 00000000 0aef0000 00000024 00000000 ........$....... 25d28: 00000000 0000f100 00000000 00000000 ................ ... 25d48: fb0000fc 000000fe 00000000 00000000 ................ ... 25d60: 00f900fe 00000100 fefb2103 03f90708 .........!...... 25d70: 03030000 000000fd 00000000 00000000 ................ 25d80: 000007df 00000000 00000000 00000000 ................ 25d90: f9000000 f9000000 00000000 0000fffa ................ 25da0: fd00fa00 0000f400 00000000 00000000 ................ 25db0: 0000ef00 00010000 00000000 0000fd00 ................ 25dc0: 00fc00fb 000000f9 00fd03fc fafdf900 ................ 25dd0: 00f90000 00f400fd eb0000fd f7fdf6fb ................ 25de0: 00ef0000 0000fff9 00000000 fbfc0000 ................ 25df0: 0000fcfe 00fa0000 05fd03fa fefafe00 ................ 25e00: fd00fbfc f902feff 000000ff 00fcfee9 ................ 25e10: f4fe00fa fe0000fe 000000fe fe000200 ................ 25e20: 0004fefc 00000000 00000000 00000000 ................ ... 25e4c: 00030000 00000000 fe00fa00 fb000000 ................ 25e5c: 00000003 00fbfdf9 fd00f900 0000f400 ................ 25e6c: 00e70000 00f3f7fb fe00ef00 000000fc ................ 25e7c: 00000000 fffcfd00 000001fc 0800fd04 ................ 25e8c: f8fdfd0d 06040d03 030b03f9 00070607 ................ ... 25ea4: 0c100000 fe00fdfb 00140b14 00030000 ................ 25eb4: 00000900 000000fc 00000000 00fe0000 ................ 25ec4: 00000000 04000000 00000000 f6fefdea ................ 25ed4: ef0000f3 00000000 00000000 00000000 ................ 25ee4: 00000000 0000fc00 00000000 fe000000 ................ ... 25efc: 00000004 fefdea00 0000f3f6 000000f6 ................ ... 25f1c: 000000fe fd0003fa f8030502 03feff00 ................ 25f2c: 00000200 00fa0000 00fbfefe 1000f6fe ................ 25f3c: fefa00fd 00fcfe00 fdfbf9fd fc000000 ................ ... 25f54: 0000fe00 00000000 00040000 ea000000 ................ 25f64: f3f6fefd 00ef0000 00000000 00000d00 ................ ... 25f7c: fdf800fc fdfe08fe 01fe01f6 0601f9fe ................ 25f8c: 02010201 00fdf6fa f5f9fbf6 fbfc00f6 ................ 25f9c: fefefdfd fe00fefd 040004ff 000800fe ................ ... 25fb4: fe000000 0000fdfd 00ff00f9 000000fc ................ ... 25fcc: 000000f1 00000000 00000000 fd00fdfd ................ 25fdc: 00000000 fc0000fe fc0003fd f900fefb ................ 25fec: fdfefafe 0000fc00 00000000 00000000 ................ 25ffc: 0800ef00 00fb0000 fd000000 0000fd00 ................ 2600c: fe0000ff 0000fa00 f8f8fd0b ff030302 ................ 2601c: 020402f9 fe080208 f60000f9 f9f80000 ................ 2602c: 00fb0000 fc00fcfd fe00fc00 f8fe0004 ................ 2603c: 000009fd 00fb00fe 00fa0300 0002fd03 ................ 2604c: fe00f800 03fd00ff 000000fe 00fafdf6 ................ 2605c: f40000f8 00fd0900 000200fb f8fd00fd ................ 2606c: 0003fd00 fe000000 fd030000 fd000001 ................ 2607c: 00fd00fe 00000000 00000000 00000000 ................ 2608c: 00000000 000600f0 0000fe00 00010000 ................ 2609c: 0000fdfd 06000500 00000000 01f1f000 ................ 260ac: f604080b 09000b02 00000500 00000000 ................ 260bc: 00000000 00000e00 00000000 00000000 ................ ... 000260d4 : 260d4: 02010000 05040300 08070602 0a090a09 ................ 260e4: 0e0d0c0b 0c11100f 15141312 00000015 ................ 260f4: 19181716 19191917 1a191917 19191919 ................ 26104: 19171917 1d1c1b03 201f1e1d 00232221 ........... !"#. 26114: 26250024 00272727 29282627 2a2a2626 $.%&'''.'&()&&** 26124: 2a272a27 2e2d2c2b 302e2f2e 09230000 '*'*+,-../.0..#. 26134: 00000931 00000000 00000000 00000000 1............... ... 00026170 : 26170: 02010000 05040300 08070602 0a090a09 ................ 26180: 0d000c0b 11100f0e 140c1312 00000014 ................ 26190: 18171615 1b1a1619 1e1d1d1c 1d1d201f ............. .. 261a0: 23222116 251e2403 28272625 002b2a29 .!"#.$.%%&'()*+. 261b0: 2e2d002c 3231302f 34342d33 2d2d3035 ,.-./0123-4450-- 261c0: 37362e2e 3a333938 3c3a3b3a 09000029 ..67893::;:<)... 261d0: 0000093d 00000000 00000000 00000000 =............... ... 0002620c : 2620c: 00000020 0001005f 00000000 00000000 ..._........... 2621c: 00000000 000000b0 0060f7f3 00026234 ..........`.4b.. 2622c: 00000000 0002003b ....;... 00026234 : 26234: 1f720000 ef58ef51 ef5cef5b ef61ef5d ..r.Q.X.[.\.].a. 26244: ef65ef63 ef6cef69 ef76ef71 ef78ef77 c.e.i.l.q.v.w.x. 26254: ef98ef8e ef9cef9b efa1ef9d efa3efa2 ................ 26264: efb7efa4 efbeefb8 efc1efc0 efc7efc4 ................ 26274: efc9efc8 efe3efcb f014efe5 f017f015 ................ 26284: f03af037 f06cf043 f0abf074 f190f13b 7.:.C.l.t...;... 26294: f192f191 f194f193 f1e3f1d7 f254f23d ............=.T. 262a4: f712f4aa 0000f7f2 ........ 000262ac : ... 262b4: 04500000 00000000 04500000 00010c03 ..P.......P..... 262c4: 06400012 07010505 0b40001f 00000c0b ..@.......@..... 262d4: 09f00061 fe00100a 0d8000b1 00000c0d a............... 262e4: 0b0000ff ff000d0b 03600147 07010502 ........G.`..... 262f4: 0560014c fd010f04 0570016a fd000f04 L.`.....j.p..... 26304: 06600188 05000707 095001a1 02010808 ..`.......P..... 26314: 03a001c1 fe000503 062001c9 03000306 .......... ..... 26324: 03a001d2 00000303 05a001d7 feff1008 ................ 26334: 0ab00217 00000c0a 05f00253 00000c05 ........S....... 26344: 09300271 00000c09 092002a7 00000c09 q.0....... ..... 26354: 0ab002dd 00000c0b 0930031f 00000c09 ..........0..... 26364: 09e00355 00000c0a 09900391 00000c09 U............... 26374: 0a5003c7 00000c0a 09e00403 00000c0a ..P............. 26384: 03a0043f 00000903 03a0044d fd000c03 ?.......M....... 26394: 0950045f 02010808 0950047f 03010608 _.P.......P..... 263a4: 09500497 02010808 093004b7 00000c09 ..P.......0..... 263b4: 109004ed fd000f10 0bb00565 00ff0c0d ........e....... 263c4: 0c2005b3 00010c0b 0b9005f5 00000c0b .. ............. 263d4: 0d300637 00010c0c 0ac0067f 00010c09 7.0............. 263e4: 0a3006b5 00010c09 0c6006eb 00000c0c ..0.......`..... 263f4: 0d000733 00010c0b 04f00775 00010c03 3.......u....... 26404: 08300787 00ff0c08 0b8007b7 00010c0b ..0............. 26414: 098007f9 00010c09 0f40082f 00010c0d ......../.@..... 26424: 0d00087d 00010c0b 0d7008bf 00000c0d }.........p..... 26434: 0b90090d 00010c0a 0d700949 fd000f0e ........I.p..... 26444: 0ba009b2 00010c0a 09f009ee 00000c0a ................ 26454: 09600a2a 00000c0a 0ca00a66 00010c0b *.`.....f....... 26464: 0b600aa8 00ff0c0d 12000af6 00000c12 ..`............. 26474: 0ac00b62 00000c0b 0a600ba4 00ff0c0c b.........`..... 26484: 0a800bec 00000c0b 05500c2e fd010f05 ..........P..... 26494: 05a00c54 feff1008 05500c94 fd000f04 T.........P..... 264a4: 09500cb2 02010708 08000cce fe000208 ..P............. 264b4: 09a00cd6 0a010205 09900cdb 00000909 ................ 264c4: 0af00d04 00010c0a 09200d40 00000909 ........@. ..... 264d4: 0af00d69 00000c0a 09d00da5 0000090a i............... 264e4: 05a00dd2 00000c07 0b100dfc fd000c0a ................ 264f4: 0ae00e38 00010c09 04700e6e 00010c03 8.......n.p..... 26504: 04900e80 fdfe0f06 09e00ead 00010c09 ................ 26514: 04700ee3 00010c02 10f00eef 0001090f ..p............. 26524: 0ae00f33 00010909 0a300f5c 0000090a 3.......\.0..... 26534: 0af00f89 fd010c0a 0af00fc5 fd000c0a ................ 26544: 06901001 00010906 0800101c 00000908 ................ 26554: 06a01040 00000b07 0ad01067 00010909 @.......g....... 26564: 08f01090 00ff090a 0e6010bd 0000090f ..........`..... 26574: 08d01101 00000909 08f0112a fdff0c0a ........*....... 26584: 08501166 00000908 05a0118a fd000f06 f.P............. 26594: 04d011b7 fd010f03 05a011ce fd000f05 ................ 265a4: 095011f4 04000509 06b0120b 06000606 ..P............. 265b4: 0500121d 03010403 10001223 fe001110 ........#....... 265c4: 100012ab 00000c10 1000130b ff000e10 ................ 265d4: 1000137b 00000c10 0b0013db 00000c0b {............... 265e4: 1000141d fe001010 1000149d fe001010 ................ 265f4: 1200151d ff000e12 1000159b fe001010 ................ 26604: 1200161b 00000c12 10001687 fe001010 ................ 26614: 08001707 ff000e08 0c00173f ff000e0c ........?....... 26624: 12001793 fe001012 10001823 00000c10 ........#....... 26634: 0e001883 fe02100a 0e0018d3 fd00120e ................ 26644: 0e001951 ff000f0e 0e0019ba ff000e0e Q............... 26654: 0e001a1c fe02100a 0e001a6c ffff0e10 ........l....... 26664: 0a001adc ff000e0a 0a001b22 ff000e0a ........"....... 26674: 0e001b68 ff000e0e 0e001bca 0400040e h............... 26684: 12001be6 00000c12 14001c52 fe001014 ........R....... 26694: 12001cf2 feff1014 10001d92 fe001010 ................ 266a4: 0e001e12 01000a0e 0e001e58 01000a0e ........X....... 266b4: 14001e9e ff000e14 10001f2a 00000c10 ........*....... 266c4: 10001f8a fe001010 1000200a feff1111 ......... ...... 266d4: 0e00209b ff000e0f 0e002104 fe00100e . .......!...... 266e4: 0e002174 ff000e0e 0a0021d6 feff100c t!.......!...... 266f4: 0e002236 fe00100e 0e0022a6 fe00100e 6"......."...... 26704: 12002316 00000c12 10002382 fdff1212 .#.......#...... 26714: 0c002424 fe00100c 14002484 ff000f14 $$.......$...... 26724: 1400251a 01000a14 1400257e 01000a14 .%......~%...... 26734: 140025e2 01000a14 14002646 01000a14 .%......F&...... 26744: 140026aa 01000a14 1400270e ff000e15 .&.......'...... 26754: 0e0027a1 fe01100c 0e002801 fe00100e .'.......(...... 26764: 10002871 fdff1111 14002902 00000c14 q(.......)...... 26774: 0c00297a fe00100c 102029da 01000b11 z).......) ..... 00026784 : 26784: aff00bbf 089ee00a c0078cd0 bf100000 ................ 26794: 1ff5e01a e4f3513f f2403e0f 00100872 ....?Q...>@.r... 267a4: e003c005 007a0000 0900005c 01a00780 ......z.\....... 267b4: ffffffff 733e03fd 0030833c 00c500f2 ......>s<.0..... 267c4: 0e100f00 f0020030 9f00f200 ffffffff ....0........... 267d4: 36c33841 890030e3 00005c00 a007700a A8.6.0...\...p.. 267e4: 79000000 00000000 00000079 20e9ff5c ...y....y...\.. 267f4: 9ebcfc06 79b00e90 800f1000 0d000079 .......y....y... 26804: 000079f5 50fdef03 cf060000 000040fe .y.....P.....@.. 26814: 00f15e79 f3057900 07790007 bce92ff1 y^...y....y../.. 26824: ae03a0af 0000d7ff 00007900 00790000 .........y....y. 26834: 80de0300 00d00500 01500ce4 004c00e3 ..........P...L. 26844: 00a9005a c004a006 4c00004e 500d5a00 Z.......N..L.Z.P 26854: 1ce40000 0000a058 e173ce03 0000e93c ....X.....s.<... 26864: 400ed600 7c0000a8 d003c003 3c202e00 ...@...|...... < 26874: 0b003d00 09e20070 00d00680 00a0dd04 .=..p........... 26884: 00b1ef09 3ce40900 d90000a0 00007d00 .......<.....}.. 26894: a01cc00c ae3f0000 010000c1 0000c0df ......?......... 268a4: 708feb03 00db0018 3ff0657f ea8f0040 ...p.....e.?@... 268b4: 0000f703 f90b70cf 40bfcf66 30eadf08 .....p..f..@...0 268c4: 000000a5 f5000000 72e4e4f5 f205da00 ...........r.... 268d4: 700fc00b 205f403f 007f106f 205f106f ...p?@_ o...o._ 268e4: 700f403f f205c00b 303fda00 f106b00c ?@.p......?0.... 268f4: e900f601 ad00bc00 ad00ae00 e900bc00 ................ 26904: f106f601 303fb00c 06004a00 2ba0a474 ......?0.J..t..+ 26914: 7f00e5ff 6b7b20fb a004008d 00130000 ..... {k........ 26924: 10050000 500f0000 500f0000 511f0100 .......P...P...Q 26934: ffffef10 744f34f3 500f0040 500f0000 .....4Ot@..P...P 26944: fd520900 0fc5a00b 10110100 04f3ff1f ..R............. 26954: 12034044 00901efc 00f10500 00b00a00 D@.............. 26964: 00600f00 00105f00 0000ab00 0000f600 ..`.._.......... 26974: 0000f105 0000b00a 0000600f 0000104f .........`..O... 26984: 000000ac 040000f6 0a0000f1 0e0000c0 ................ 26994: 4f000060 00000010 00c5ef08 cfa8cf00 `..O............ 269a4: 00f50770 c00df20a 1ff80100 dc000080 p............... 269b4: 0000603f 00603fbd 801fbd00 0ddc0000 ?`...?`......... 269c4: f80100c0 0a00f507 a8cf00f2 080070cf .............p.. 269d4: ef00c5ef f37a36ff 05305f00 305f00f3 .....6z.._0..._0 269e4: 5f00f305 00f30530 f305305f 05305f00 ..._0..._0..._0. 269f4: fdbe04f3 98fd0770 002890cf 0000bf00 ....p.....(..... 26a04: 00f20700 00af0000 804f0000 c03f0000 ..........O...?. 26a14: c13e0000 c12e0000 d12e0000 f82e0000 ..>............. 26a24: ff467777 6ffaffff 02ffffff b09f7777 wwF....o....ww.. 26a34: e10c0000 f3090000 f6050000 df000000 ................ 26a44: 040010e9 0000fd59 00f40600 643f0000 ....Y.........?d 26a54: f3080040 fb8cc9bf d7ff7c00 01000000 @........|...... 26a64: 000000eb 0010be00 506f0000 2f000000 ..........oP.../ 26a74: 00000090 0000d00c 01f30800 f80300d5 ................ 26a84: 00602f00 f72322ed ffff6f21 5581ffff ./`.."#.!o.....U 26a94: 52f95655 2f000000 00000060 0500f602 UV.R.../`....... 26aa4: 00ffffff 7077777f 0000e008 0000ad00 .....wwp........ 26ab4: 10c20b00 ffdf0000 550430fb 0020ff68 .........0.Uh. . 26ac4: 00f80400 920f0000 f6050050 fd8ad98f ........P....... 26ad4: e9ef5b10 ce050010 9f0060fc 05708bc8 .[.......`....p. 26ae4: 000000f8 0000d00c 00801f00 682f0000 ............../h 26af4: 3f10faef d08f64ee 0600f12f 00c00ef4 ...?.d../....... 26b04: f109f602 01f30600 b09f86de d8ef1900 ................ 26b14: ffff8f00 77f7e8ff 008ffc77 90554f00 .......ww....OU. 26b24: 00e00b00 00f80200 109f0000 b00f0000 ................ 26b34: f4060000 dd000000 3f000000 0a000070 ...........?p... 26b44: 010000f1 000000f9 00d7ff5c af76fc06 ........\.....v. 26b54: 00d00ca0 c00df109 07f20700 c05e11f7 ..............^. 26b64: feffbf00 54f90910 802fd07e 4ff60400 .......T~./....O 26b74: f8000050 0500a01f 76fb09f6 6c00d0af P..........v...l 26b84: 0010d8ff 0080fd8e fc68f80c 00505f00 ..........h.._P. 26b94: 008f703f 7fc00e00 f01f0030 cf13d41f ?p......0....... 26ba4: ffef04f1 0200f0a9 00f00a31 a00e0000 ........1....... 26bb4: 9f000000 8da70930 df0700f7 1e0040eb ....0........@.. 26bc4: 1003fc92 00000000 1efc1203 fc921e90 ................ 26bd4: 00001003 01000000 a8d01fe9 00a0300e .............0.. 26be4: 00420000 03f37d01 bf10e89f ee0000b5 ..B..}.......... 26bf4: 17000081 0000b4df 00d2af04 ef820100 ................ 26c04: 45f3ffff 00515555 01000000 ef101111 ...EUUQ......... 26c14: 34f3ffff 50404444 ef000000 06000092 ...4DD@P........ 26c24: 0000b5cf 00e29f03 02f36c00 bf20e99e .........l.... . 26c34: 930000c6 04000000 0770fdbe a0bf77fc ..........p..w.. 26c44: cf000027 09000000 010000f0 010000ea '............... 26c54: 000010dd 000010ce 0000603f 00003001 ........?`...0.. 26c64: 00000100 00f50600 405f0000 17000000 .........._@.... 26c74: 00b5fdce fb050000 c27d2353 406e0000 ........S#}...n@ 26c84: 8e000000 01f40210 493ffaae 1e900ab0 ..........?I.... 26c94: 40ef5be6 8f300fe3 40af0010 d9001f98 .[.@..0....@.... 26ca4: 403f0000 e8003f6a 401f0000 d9001f5c ..?@j?.....@\... 26cb4: 403f0000 8f300f6a 40af0010 1e900a98 ..?@j.0....@.... 26cc4: a6de5ad6 01f303f2 ee16faaf 406e0050 .Z..........P.n@ 26cd4: 00000000 fb060000 00752353 17000000 ........S#u..... 26ce4: 00a3fdce 02000000 000000fd f49f0000 ................ 26cf4: 00000000 00b09e0f f2060000 0000207f ............. .. 26d04: f801dc00 4f000000 00e00b60 00f00b00 .......O`....... 26d14: 0100604f ed1111fa ff8f0000 00f3ffff O`.............. 26d24: 4444c40e f406a04f af000000 0000cd10 ..DDO........... 26d34: 5ff80200 40ebffff 5755f805 405f40df ..._...@..UW.@_@ 26d44: 05fa0100 0f0000f4 11515fa0 ff05f43a ........._Q.:... 26d54: 00faffff 5944745f 00f405fa 5ff20800 ...._tDY......._ 26d64: 5f000040 0000f445 855ff209 05fb6a55 @.._E....._.Uj.. 26d74: d7ffffff 8d020000 0400b4fe f99db8ff ................ 26d84: 0020fd02 20bf5008 0f000000 000000a0 .. ..P. ........ 26d94: 0000f602 602f0000 00000000 000000fa ....../`........ 26da4: 00f20b00 2f000000 850000d2 89fb5f00 ......./....._.. 26db4: 290080df 5f40ebdf 30eaffff 77975f00 ...)..@_...0._.w 26dc4: 5f00f89e af000040 00405f60 5fe00d00 ..._@...`_@...._ 26dd4: 06000040 00405ff4 5ff60300 03000040 @...._@...._@... 26de4: 00405ff6 5ff40600 0d000040 00405fe0 ._@...._@...._@. 26df4: 5f60af00 f89e7797 ffff5f00 5f0030ea ..`_.w..._...0._ 26e04: 95ffffff 747777f9 0000405f 0000f405 .....wwt_@...... 26e14: 11515f00 ffff0511 745fe0ff f4054444 ._Q......._tDD.. 26e24: 5f000000 05000040 000000f4 7777975f ..._@......._.ww 26e34: ffffff65 ffff5ffd 77f995ff 405f7477 e...._.....wwt_@ 26e44: f4050000 5f000000 05000040 102222f5 ......._@...."". 26e54: feffff5f 5555f805 00405f40 00f40500 _.....UU@_@..... 26e64: 405f0000 f4050000 00000000 b5fe8d01 .._@............ 26e74: fb4f0000 02b0df89 060020fd 00f20b60 ..O...... ..`... 26e84: 0f000000 000000a0 00602f00 2f000000 ........./`..../ 26e94: 09000060 00a00ff0 0bf00900 090000f2 `............... 26ea4: 20fd02f0 00f00a00 df89fb4f 8d0200c0 ... ....O....... 26eb4: 5f00c6fe 4f000040 0000f455 405ff504 ..._@..OU....._@ 26ec4: 554f0000 040000f4 22525ff5 ff555f22 ..OU....._R""_U. 26ed4: f5ffffff 5555855f 00f4558f 5ff50400 ...._.UU.U....._ 26ee4: 4f000040 0000f455 405ff504 554f0000 @..OU....._@..OU 26ef4: 040000f4 f4455ff5 5ff4455f 455ff445 ....._E._E._E._E 26f04: f4455ff4 00f4455f 00faffff 00fa7777 ._E._E......ww.. 26f14: 00fa0000 00fa0000 00fa0000 00fa0000 ................ 26f24: 00fa0000 00fa0000 07f90000 0df60320 ............ ... 26f34: 01f18ee9 5f30fbae eb020040 0100f405 ......0_@....... 26f44: 405f00ec 0510de01 20ce00f4 bf405f00 .._@....... ._@. 26f54: f4050030 0000909f 40efcf5f 91ff0500 0......._..@.... 26f64: 5f0010ee 00fc03a0 0600f405 405f00f8 ..._.........._@ 26f74: 05f50900 0c0000f4 00405ff2 00f40500 ........._@..... 26f84: 405f0000 f4050000 5f000000 05000040 .._@......._@... 26f94: 000000f4 0000405f 0000f405 00405f00 ...._@......._@. 26fa4: 00f40500 975f0000 ff257777 5ff5ffff ......_.ww%...._ 26fb4: 00000040 00fc951e f9080000 0000f55f @..........._... 26fc4: fd95ff02 ae0000e0 705f5ff9 955f3f00 .........__p.?_. 26fd4: 0b108ff3 315ff9c0 0ff304e9 f207f395 ......_1........ 26fe4: 5ff900db 20ef0d30 00f3950f f900905f ..._0.. ...._... 26ff4: 7100305f f3950f00 00000000 00505ff9 _0.q........._P. 27004: ff554f00 f5040020 0000fd5f f9fa554f .OU. ..._...OU.. 27014: 5ff50400 4f00f54a f20df455 405ff504 ..._J..OU....._@ 27024: 554fd02f 946f00f4 00405ff5 f455afaf /.OU..o.._@...U. 27034: f5df0000 0200405f 00f455ff 00f50600 ...._@...U...... 27044: b5fe8d01 ff040000 00fa9eb8 0020fd02 .............. . 27054: bf00f908 0a000020 00a00ff2 723f0000 .... .........?r 27064: 000000f6 602ff900 0f000000 0000fa90 ....../`........ 27074: 0bf70300 000000f2 d22f20af 908f0000 ......... /..... 27084: 89fb4f00 0000a0ef 50ebdf28 ffff5f00 .O......(..P._.. 27094: 975f00d7 5fc0bf78 f6070040 0000405f .._.x.._@..._@.. 270a4: 00405ffa 405ffa00 5ff80300 f16e2362 ._@..._@..._b#n. 270b4: fdffff5f 54855f30 405f0020 5f000000 _...0_.T ._@..._ 270c4: 00000040 0000405f 8d010000 0000b5fe @..._@.......... 270d4: 89fb4e00 0200a0ef 080020fd f20a00f9 .N....... ...... 270e4: af000000 00a00f20 703f0000 0000602f .... .....?p/`.. 270f4: 2f900f00 00000060 901f900f 2f000000 .../`........../ 27104: 00f10b70 20af0000 0010fc03 0000f907 p...... ........ 27114: df78fa6f 030000b0 00c5ffae 00000000 o.x............. 27124: b015d43e 02000000 0080ffbf 01000000 >............... 27134: ff5f0031 5f00d7ff c0bf7897 0700405f 1._...._.x.._@.. 27144: 00405ff6 405ffa00 5ffa0000 f8030040 ._@..._@..._@... 27154: 6e23525f ffff5fe1 855f30fc 5f00f955 _R#n._...0_.U.._ 27164: 407f0040 0c00405f 00405fe0 5c00f902 @..@_@..._@....\ 27174: 0720d9ef 90af87fc 0100c00e 00800f10 .. ............. 27184: f50d0000 03000000 0050eaef feae0500 ..........P..... 27194: 00000040 0000f14e 08f30500 f2080000 @...N........... 271a4: bf77fa2f ff9d02a0 ffff00c7 67f5ffff /.w............g 271b4: 7277fb78 00f70100 f7010000 01000000 x.wr............ 271c4: 000000f7 0000f701 00f70100 f7010000 ................ 271d4: 01000000 000000f7 0000f701 00f70100 ................ 271e4: f7010000 306f0000 168f0000 080000f3 ......o0........ 271f4: 00306ff1 f3168f00 f1080000 0000306f .o0.........o0.. 27204: 00f3168f 6ff10800 8f000030 0000f405 .......o0....... 27214: 703ff009 00cd0000 5f0020de a8ff0480 ..?p..... ._.... 27224: 0300d0bf 0081fdbe 0000e00c 6f306f00 .............o0o 27234: 0c000050 00fb00c0 00f60300 0000f209 P............... 27244: 2f0000ae 901f0080 00ce0000 0000f207 .../............ 27254: db00f605 0e000000 00504fc0 3b8f0000 .........OP....; 27264: 000000e0 00f8fb02 0b000000 000010ff ................ 27274: b04f0000 405f0000 00df0000 0ff50200 ..O..._@........ 27284: ff020090 f0070040 0700e00b 0c0090fe ....@........... 27294: 00f306b0 00e0aa0c f801601f f3541f00 .........`....T. 272a4: 00106f00 107f00cd 00cc00f8 cb207f00 .o............ . 272b4: f701ad00 712f0000 265f00f6 0d0000f2 ....../q.._&.... 272c4: 0f00f1c6 0000d07b 00c0fd08 0080df0b ....{........... 272d4: 70ff0300 30ff0600 ef000000 fe010020 ...p...0.... ... 272e4: 903f0000 00cd0000 7f00408f 10de0030 ..?......@..0... 272f4: 0300802f 00d00cfa f3fb0700 0c000000 /............... 27304: 000000f8 00c0ef01 7fbf0000 6f000070 ............p..o 27314: 0020af60 ed01b02f 00f10c00 f607f804 `. ./........... 27324: f3090000 0000e00c f703f207 901f0000 ................ 27334: 0010af00 1f00109e 00f602a0 0bf30800 ................ 27344: 000000d0 00404fec fb5f0000 00000000 .....O@..._..... 27354: 0000f20c f0090000 00000000 0000f009 ................ 27364: f0090000 00000000 0000f009 ffffff3f ............?... 27374: 777701fd 0090bf77 c01e0000 0c000000 ..www........... 27384: 000000f2 0000f508 00f90400 ec010000 ................ 27394: 00000000 000020cf 00508f00 904f0000 ..... ....P...O. 273a4: 1e000000 777777f8 ffffff05 ff5ff0ff .....www......_. 273b4: 5f50f705 00f30530 f305305f 05305f00 ..P_0..._0..._0. 273c4: 305f00f3 5f00f305 00f30530 f705305f .._0..._0..._0.. 273d4: 00ff5f50 0000007e 0000401f 0000900c P_..~....@...... 273e4: 0000e007 0000f402 0000c900 00007e00 .............~.. 273f4: 00402f00 00900c00 00e00700 00f30200 ./@............. 27404: 00d90000 007e0000 302f0000 900d0000 ......~.../0.... 27414: e0070000 ea35fabf ea00ea00 ea00ea00 ......5......... 27424: ea00ea00 ea00ea00 ea00ea00 ea35ea00 ..............5. 27434: 2f00fabf 9d000080 f30000e0 d00600d5 .../............ 27444: 600c007b 103f201f 009a800b ffffe004 {..`. ?......... 27454: 1111ffff f6071111 01e70300 0080fd9e ................ 27464: 90af87ce af000002 06000000 ffbe02f2 ................ 27474: 42ec20ff 502ff227 ec207f00 02f27f42 . .B'./P.. .B... 27484: 206ffbbf 0000008f 00008f00 008f0000 ..o ............ 27494: 8f000000 00b3fe2b ef78ec8f 00a08f30 ....+.....x.0... 274a4: 208fc01e 8ff10700 f3050000 0700208f ... ......... .. 274b4: 00a08ff1 ec8fd01e 8e30ef78 00b3fe2b ........x.0.+... 274c4: c4ef3a00 7cd84f00 00d00df4 00f61307 .:...O.|........ 274d4: 304f0000 f6030000 0d000000 100600d0 ..O0............ 274e4: f47cd74f c4ef3a00 00000000 0000f701 O.|..:.......... 274f4: 00f70100 f7010000 a3ff3b00 87fd04f7 .........;...... 27504: d00ef7ce 3ff70b00 f7030060 0100304f .......?`...O0.. 27514: 00503ff7 c00ef703 04f70a00 f7be65fc .?P..........e.. 27524: b2ff3b00 fe3b00f7 fc0400a2 0e20ee67 .;....;.....g. . 27534: a01e00c0 0700503f ffff4ff0 723ff1ff ....?P...O....?r 27544: 0e202222 000200c0 af87fd04 ef3a0050 "" .........P.:. 27554: 5d0000d6 b52f00fc 00f30470 a0ffff0c ...]../.p....... 27564: 0053f748 0500305f 5f0000f3 f3050030 H.S._0....._0... 27574: 305f0000 00f30500 00305f00 b2ff3b00 .._0....._0..;.. 27584: 87fe04e9 d10ef9cf 3ff90a00 f9010060 ...........?`... 27594: 0000404f 00603ff9 d00ef901 04f90900 O@...?`......... 275a4: f8cf87fd b3ff3b00 000000f7 e909f405 .....;.......... 275b4: 01b0af77 00d8ff7c 0000008f 0000f008 w...|........... 275c4: 00008f00 bff20800 fb8f10ea f808fd89 ................ 275d4: 8ff40600 781f0010 f80000f0 0f00008f .......x........ 275e4: 0000f088 00008ff8 00f0880f 1a9ef800 ................ 275f4: f00800f2 8ff0088f 088ff008 f0088ff0 ................ 27604: 00e20700 0000f309 f1070000 00f10700 ................ 27614: 0700f107 f10700f1 00f10700 0700f107 ................ 27624: f10700f1 18f00800 fc3ec06e 00008f20 ........n.>. ... 27634: 00f00800 008f0000 f0080000 8fd11d00 ................ 27644: 08e21d00 00e21df0 00f32d8f 70fffe08 .........-.....p 27654: bfe28f00 01f20830 008f10ee f008fb03 ....0........... 27664: 8ff70700 8f8f8f8f 8f8f8f8f 8e8f8f8f ................ 27674: 3b91fe3c ff08a2fe c6cf9f96 708fd08f <..;...........p 27684: 00c09f00 00f1585f 0100f605 00008ff7 ...._X.......... 27694: 0f00404f 0400f088 f80000f4 4f00008f O@.............O 276a4: 880f0040 f40400f0 8ff80000 404f0000 @.............O@ 276b4: 8e800f00 08a1fe3b d08fa6ff 6f00808f ....;..........o 276c4: 0100f148 00008ff7 00f0880f 008ff800 H............... 276d4: f0880f00 8ff80000 800f0000 c4ef3b00 .............;.. 276e4: 87fd0400 d00e60cf 3ff10b00 f5030060 .....`.....?`... 276f4: 0100304f 00603ff7 d00ef503 04f10b00 O0...?`......... 27704: 60cf77fd c4ef3b00 fe3b8e00 fb8f00b3 .w.`.;....;..... 27714: 8f30df57 c00d0090 0700108f 00008ff1 W.0............. 27724: 208ff305 8ff10700 d01e00a0 ef78ec8f ... ..........x. 27734: fe2b8f30 008f00b3 8f000000 00000000 0.+............. 27744: 0000008f ff3b0000 fd04f7a2 0ef7de87 ......;......... 27754: f70b00d0 0300603f 00304ff7 603ff701 ....?`...O0...?` 27764: 0ef70300 f70b00d0 ce77fd04 ff3b00f7 ..........w...;. 27774: 0000f7a3 00f70100 f7010000 01000000 ................ 27784: f02b8ef7 8f90ed8f 208f00a0 00008f00 ..+........ .... 27794: 8f00008f 008f0000 00008f00 91fdae02 ................ 277a4: d069d71e 0000304f 0010b42f 60fdef06 ..i.O0../......` 277b4: f55b0100 f7000001 f36ba75f 40ecdf19 ..[....._.k....@ 277c4: 0000f305 cf00305f 8f04faff f3053075 ...._0......u0.. 277d4: 305f0000 00f30500 00305f00 0000f404 .._0....._0..... 277e4: 0080c61f ae10fc5d 5a2f0000 f50200e0 ....]...../Z.... 277f4: 2f0000ae 0200e05a 0000aef5 00f0592f .../Z......./Y.. 27804: 306ff504 ee51af00 02f5bf76 503ffbbe ..o0..Q.v.....?P 27814: 0000c00d 00f206cb f900f502 00e00900 ................ 27824: 800f009e 6f602f00 c00c0010 050000cb ...../`o........ 27834: 0000f4f6 00d0ef00 708f0000 0000bb00 ...........p.... 27844: 4f00109f 0e00f116 c00900f6 fc05600f ...O.........`.. 27854: 00f600b0 5fab00ac 05105f10 f7500ff1 ......._._....P. 27864: 0f00b00a c009f076 ac0000f5 8f4f00ba ....v.........O. 27874: ff040000 a0ef0040 e00e0000 00f40800 ....@........... 27884: 00704f00 308f209f cd00505f 0200902e .Op.. .0_P...... 27894: 0000d0ff 0000f60a 00e1fd04 c00deb01 ................ 278a4: 3f10be00 00406f80 c00d407f 06cb0000 ...?.o@..@...... 278b4: f40200f3 0900ea00 108f00d0 1f00701f .............p.. 278c4: 00107f70 00d9e00a f2f90300 cf000000 p............... 278d4: 000000b0 0000406f 0000ad00 00f5791c ....o@.......y.. 278e4: 70ee1a00 ff4f0000 5515f9ff 0000f45b ...p..O....U[... 278f4: 0100804f 0b0000ec 8f0000e1 f7040040 O...........@... 27904: e51e0000 ff5f5355 2c00fcff 61af00f5 ....US_....,...a 27914: 0000cc00 db0000db 00db0000 1f00ea02 ................ 27924: fa0500f4 00db0000 0000db00 cc0000db ................ 27934: 61af0000 5ff52c00 155ff115 f1155ff1 ...a.,._.._.._.. 27944: 5ff1155f 155ff115 f1155ff1 80be105f _.._.._.._.._... 27954: 0140af03 701f00f6 1f00f701 00f90070 ..@....p....p... 27964: fb00fb0a 01701f20 701f00f7 af03f601 .... .p....p.... 27974: 0090be40 00000000 00e43d00 f5860cb5 @........=...... 27984: 03f0201e 000290ef 02001000 400d90ce . .............@ 27994: 0e003b89 0d0e003b ce028940 f8080090 .;..;...@....... 279a4: 00f7e7ef 00000000 00000000 00000000 ................ 279b4: 00dc4900 16000000 00ffffbf ff8d0300 .I.............. 279c4: 00ffffff ffffcf00 00ffffff ffffff00 ................ 279d4: 00ffc7ff eaffff00 00ff0051 0083ff00 ........Q....... 279e4: 00ff0000 0000ff00 00ff0000 0000ff00 ................ 279f4: 00ff0000 0000ff00 00ff0000 0000ff00 ................ 27a04: 00ffff2b 0000ff00 2bffffdf 0000ffff +..........+.... 27a14: dffdffdf 0000ffff dfb2ff2b 0000fdff ........+....... 27a24: 2b000000 0000b2ff d0000000 ffffff0f ...+............ 27a34: ff0df0ff 8888c8ff f0ffff8c 0000800f ................ 27a44: f00ff008 0000800f ff0ff008 000080ff ................ 27a54: f0ffff08 ccccec0f f00ff0ce ccccec0f ................ 27a64: ff0ff0ce 000080ff f0ffff08 0000800f ................ 27a74: f00ff008 0000800f ff0ff008 8888c8ff ................ 27a84: d0ffff8c ffffff0f df0df0ff ffff73ff .............s.. 27a94: fffdffff ffffa5ff ffffffff ffffa5ff ................ 27aa4: dfffffff ffff73ff 00fdffff 00000000 .....s.......... 27ab4: df000000 ffff73ff fffdffff ffffa5ff .....s.......... 27ac4: ffffffff ffffa5ff dfffffff ffff73ff .............s.. 27ad4: 00fdffff 00000000 df000000 ffff73ff .............s.. 27ae4: fffdffff ffffa5ff ffffffff ffffa5ff ................ 27af4: dfffffff ffff73ff 00fdffff 00000000 .....s.......... 27b04: 00b10a00 00000000 00fcbf00 00000000 ................ 27b14: 00fbff0b 00000000 1bc0ffbf 0b0000a0 ................ 27b24: cf00fcff bf0000fb bf00c0ff ff0bb0ff ................ 27b34: 0c0000fc ffbffbff 000000c0 fbffffcf ................ 27b44: 00000000 b0ffff0c 00000000 00fbbf00 ................ 27b54: 00000000 00b00b00 03000000 03000000 ................ 27b64: 0010fc08 fcfff81c f5ff1c10 ff2cfcff ..............,. 27b74: ffff05f5 0500f5ff 00f5ffff fdff1d00 ................ 27b84: ff1c0010 1c10fcff fcfff9ff 05f5ff1c ................ 27b94: f5dffcff d1ff0500 040000a4 000000a1 ................ 27ba4: 0000e04f 10020000 1003f16f d05f0000 O.......o....._. 27bb4: d13ff16f f1ff0300 fd5ff16f 40ff0d00 o.?.....o._....@ 27bc4: ff09f16f 00f74f70 cf00f16f 00f09fe0 o...pO..o....... 27bd4: 5f00f16f 00c0bff3 2f00f16f 00c0bff5 o.._....o../.... 27be4: 1f00e04f 00e0aff6 4f000000 00f46ff4 O..........O.o.. 27bf4: af000000 10fe0ff0 ff050000 d3ff06a0 ................ 27c04: ff7f0000 ff9f0020 f4ffbeda ff060000 .... ........... 27c14: 30fdffff 17000000 0050cabd 00000000 ...0......P..... 27c24: 0000b88b 00000000 0000ffff 06300000 ..............0. 27c34: 0360ffff dffd0400 effdffff ffff0d40 ..`.........@... 27c44: ffffffff ffff4fd0 ffff9ff9 ffff08f4 .....O.......... 27c54: ffff0220 f9ff0080 ff9f0000 f9ff0000 ............... 27c64: ff9f0000 ffff0800 ffff0220 ffff4f80 ........ ....O.. 27c74: ffff9ff9 ffff0df4 ffffffff dffe04d0 ................ 27c84: dffdffff 06300040 0360ffff 00000000 ....@.0...`..... 27c94: 0000ffff 00000000 0000b88b 00000000 ................ 27ca4: 3f30dd03 000000f3 f5ff6f00 0000f44f ..0?.....o..O... 27cb4: 99ff0900 00f4bfff f6bf0100 f4ff6f22 ............"o.. 27cc4: fe2d0000 ef53ff35 ff0400f4 f8ff8fc1 ..-.5.S......... 27cd4: 7f40fe2d ffff1afa f7afa1ff ffdf82cf -.@............. 27ce4: 28fdffff ff0e14fc ffffffff 0f0041e0 ...(.........A.. 27cf4: ffffffff 0000f0ff 00f9ff0f 00f0ff8f ................ 27d04: f8ff0f00 f0ff8f00 ff0f0000 ff8f00f8 ................ 27d14: 0e0000f0 6f00f6ff 0000e0ff fddf0000 .......o........ 27d24: 00000000 ffff0000 00000000 ffff0000 ................ 27d34: 00000000 ffff0000 00000000 ffff0000 ................ 27d44: 00000000 ffff0000 00000000 ffffff4f ............O... 27d54: 0000f4ff ffffff0b 0000b0ff ffffbf00 ................ 27d64: 000000fb ffff0b00 000000b0 fbbf0000 ................ 27d74: df000000 b11bfcff fffdffcf 2cc2ffff ..............., 27d84: ffffffff ffffffff ffffffff ffffffff ................ 27d94: dfffe0f0 ffffffff 00fdffff ffffef04 ................ 27da4: 0040feff ffff1e00 e1ffffff b0af0000 ..@............. 27db4: 0b000000 ff0500fa 00000010 1e50ff01 ..............P. 27dc4: 000000f6 e16f0000 0000b0af 0b000000 ......o......... 27dd4: fffffffa ff080080 ffffffff 1f00f1ff ................ 27de4: ffffffff ffffffff ffffffff ffffffff ................ 27df4: ffffffff ffffffff ffffffff ff8fffff ................ 27e04: ffffffff 00f8ffff dabd0600 00ff0250 ............P... 27e14: ffffef05 00ff42fe 7ba7ff7f 05fff9ff .....B.....{.... 27e24: 0000c1ff 0effff2c 020000fc 5fffdf22 ....,.......".._ 27e34: 0f0000f2 8fffffff 0f0000b0 00ffffff ................ ... 27e50: ff000000 00f0ffff fff80b00 00f0ffff ................ 27e60: fff42f00 002022fd ffe0cf00 0000c2ff ./..." ......... 27e70: ff40ff2c 6ab7ff9f ff00f7ff ffffdf24 ,.@....j....$... 27e80: ff0050fe dbac0520 00000060 00000000 .P.. ...`....... 27e90: 008d0000 00ff0800 dfff8f00 ffffffff ................ 27ea0: ffffffff ffffffff ffffffff dfffffff ................ 27eb0: 00ffffff 00ff8f00 00ff0800 008d0000 ................ ... 27ecc: 0000008d 00ff0800 8f000000 cf0000ff ................ 27edc: 01ffffff ffffff50 fff706ff 00ffffff ....P........... 27eec: ffffffbe ffae00ff 05ffffff ffffdff8 ................ 27efc: 006002ff 00ff9f00 09000000 000000ff ..`............. 27f0c: 009e0000 00000000 00000000 00000000 ................ 27f1c: 00100600 00000000 d21f0000 00000000 ................ 27f2c: 0300008d 000010ee 0a00ff08 00b02fb1 ............./.. 27f3c: 00ff8f00 f407fc05 ffffffdf 605f5002 .............P_` 27f4c: fffffff9 0df706ff ffffbdc0 ae00ffff ................ 27f5c: ff9ff009 00ffffff 8ff009ae ffffffff ................ 27f6c: c00df706 ffffdfad 5f5002ff 0000e960 ..........P_`... 27f7c: 0500ff8f 00f406fc 00ff0800 b02fb10a ............../. 27f8c: 8d000000 ee020000 00000010 1f000000 ................ 27f9c: 000000d2 00000000 8f001006 ffffffff ................ 27fac: fff8ffff fffffffc ffffffff ffff2f20 ............ /.. 27fbc: fcffffff ffff0c00 ffffffee feff2f20 ............ /.. 27fcc: ffffef22 e2fffffc ffff2e00 20fe4efe "............N. 27fdc: ffff0200 00c202e2 ffff0000 00000020 ............ ... 27fec: ffff0000 00000000 ffff0000 ffffffff ................ 27ffc: 8fffffff ffffffff 00f8ffff 00000000 ................ 2800c: 010030ff 0040ffcc 40ffff2d ffffef03 .0....@.-..@.... 2801c: ffff3f40 ffff44ff ff9fffff ffffffff @?...D.......... 2802c: ffffffff ffffffff ffffafff ff45ffff ..............E. 2803c: 40ffffff ffffff4f ffef0340 2e0040ff ...@O...@....@.. 2804c: 0030ffff 0000cc01 00000000 00000000 ..0............. 2805c: 918f0000 00000000 70ffff00 00000000 ...........p.... 2806c: 40fdffff ff000000 10faffff ffff0000 ...@............ 2807c: 00f7ffff ffffff00 00d5ffff ffffffff ................ 2808c: ffb2ffff ffffffff fffffdff ffffffff ................ 2809c: fffffffd b2ffffff ffffffff ff00d5ff ................ 280ac: f7ffffff ffff0000 0010faff fdffff00 ................ 280bc: 00000040 0070ffff 8e000000 000000a1 @.....p......... ... 280dc: 00f8ff8f fff8ff8f ff00ffff ffffffff ................ 280ec: ffff00ff ffffffff ffffff00 00ffffff ................ 280fc: ffffffff ff00ffff ffffffff ffff00ff ................ 2810c: ffffffff ffffff00 00ffffff ffffffff ................ 2811c: ff00ffff ffffffff ffff00ff ffffffff ................ 2812c: ffffff00 00ffffff 7fffffff 7f00f7ff ................ 2813c: ff8ff7ff ffffffff fffffff8 ffffffff ................ 2814c: ffffffff ffffffff ffffffff ffffffff ................ 2815c: ffffffff ffffffff ffffffff ffffffff ................ 2816c: ffffffff ffffffff ffffffff ffffffff ................ 2817c: ffffffff ffffffff ffffffff ffffffff ................ 2818c: ffffffff ffffffff ffffffff ffff8fff ................ 2819c: f8ffffff 00000000 0010cc00 d2ffff03 ................ 281ac: ffff0400 ff0430fe 04f4ffff ffffffff .....0.......... 281bc: ffffff54 fffff9ff ffffffff ffffffff T............... 281cc: ffffffff fffffff9 ffff44ff ff04f3ff .........D...... 281dc: 0430feff 00d2ffff 10ccff04 00ff0300 ..0............. 281ec: 00000000 2d000000 000000d2 ef010000 .......-........ 281fc: 000010fe ff1d0000 0000d1ff ffcf0000 ................ 2820c: 0000fcff ffff0b00 00b0ffff ffffaf00 ................ 2821c: 00faffff ffffff09 90ffffff ffffff0f ................ 2822c: f0ffffff ffffff08 80ffffff 00000000 ................ 2823c: 00000000 ffffff0c c0ffffff ffffff0f ................ 2824c: f0ffffff ffffff0f f0ffffff ffffff0c ................ 2825c: c0ffffff 1a000000 01000040 0000f0df ........@....... 2826c: 00a0ff1d 00fadf01 a0ff1d00 fadf0100 ................ 2827c: ff0c0000 0d0000a0 000080ff 00f8df01 ................ 2828c: ff1d0000 01000080 0000f8df 80ff1d00 ................ 2829c: df010000 000000f0 a104501b 0f000000 .........P...... 282ac: 000010fd 00d1ff0a fdaf0000 0a000010 ................ 282bc: 0000d1ff 10fdaf00 ff0a0000 080000c0 ................ 282cc: 0000d0ff 0010fd8f 00d1ff08 10fd8f00 ................ 282dc: d1ff0800 fd0f0000 05000010 000000b1 ................ 282ec: ff040000 00000040 80ff0800 00000000 ....@........... 282fc: 0080ff08 08000000 000080ff ff080000 ................ 2830c: 48000080 c8ff8c88 ffff8488 ffffffff ...H............ 2831c: ffffffff ffffffff ff8c8848 008488c8 ........H....... 2832c: 80ff0800 00000000 0080ff08 08000000 ................ 2833c: 000080ff ff080000 00000080 40ff0400 ...............@ 2834c: 44140000 44444444 ffffef41 feffffff ...DDDDDA....... 2835c: ffffffff 7bffffff bbbbbbbb 0000b7bb .......{........ 2836c: daffad05 00000050 88fcdf04 0040fdcf ....P.........@. 2837c: 40fe7f00 f7ef0400 f4ff0700 4f809e00 ...@...........O 2838c: ff4f70ff f8af00c0 dff4ff0c ff9a80ff .pO............. 2839c: fdff08fe ef80ffdf ff08feff c0ff4ffd .............O.. 283ac: 0cf8ff8f ff07f4ff 80ee08f4 0070ff4f ............O.p. 283bc: 0040fe7f 00f8ef04 fcdf0400 40fdcf88 ..@............@ 283cc: 05000000 50daffad 208c0000 00000000 .......P... .... 283dc: 00000000 0000e4df 00000000 ff1b0000 ................ 283ec: fddf4980 000000a5 ffff7f00 d4ff8cd8 .I.............. 283fc: 04000000 0000f8ef 0070ff4e ff1c0000 ........N.p..... 2840c: ff04e869 e30400f7 fffe9f00 40ffcf80 i..............@ 2841c: 0570ff0d 8fe0ffff ff0dd0ff ff2d00f7 ..p...........-. 2842c: d0ff8fe0 00fcff04 cff8af00 7f0030ff .............0.. 2843c: 060040ff 00f7ffff f4ff0800 ff3e0000 .@............>. 2844c: 000000a0 82c8ff4d 00f7bf01 5a000000 ....M..........Z 2845c: 0810fcdf 0000a0ff 00000000 fd4e0000 ..............N. ... 28474: 0000c802 d22d0000 00000000 00000000 ......-......... 28484: 0000fbbf 00000000 ffff0500 00000050 ............P... 28494: 0d000000 00d0ffff 00000000 ffff7f00 ................ 284a4: 000000f7 ff010000 10ff8dd8 00000000 ................ 284b4: 0aa0ff0a 0000a0ff ff3f0000 f3ff0bb0 ..........?..... 284c4: 00000000 0cc0ffcf 0000fcff ffff0500 ................ 284d4: ffff0dd0 0e000050 9ff9ffff 00e0ffff ....P........... 284e4: ffff8f00 ffff2ee2 ff0200f8 0990ffff ................ 284f4: 10ffffff ffffff0a ffff3ee3 ff0fa0ff .........>...... 28504: ffffffff f0ffffff ffffff08 ffffffff ................ 28514: 000080ff 00000000 00000000 00000000 ................ 28524: 000000d8 00000000 ffff80ff ff070070 ............p... 28534: fffff8ff ff6f00f6 8e78fdff e8ff15ff ......o...x..... 28544: 0200e2ff 20fe4fe5 000020fe 00f3ff13 .....O. . ...... 28554: 00000052 0031ff3f 02000052 205ef4ef R...?.1.R.....^ 28564: 8e7820fe e8ff51ff ffffe2ff ff6f00f6 . x..Q........o. 28574: fffffdff ff070070 0000f8ff 00000000 ....p........... 28584: 000080ff 00000000 000000d8 00000000 ................ ... 2859c: 01000000 000010dd ff1d0000 000000d1 ................ 285ac: fdffdf01 1d000010 d1ff99ff f9df0100 ................ 285bc: 10fd9f00 0090ff1d bfd1ff09 000000f9 ................ 285cc: 905ffb9f 09000000 000000f5 00000000 .._............. 285dc: 00000000 5f000000 00000090 f9bff509 ......._........ 285ec: 9f000000 90ff1dfb d1ff0900 00f9df01 ................ 285fc: 0010fd9f ff99ff1d 010000d1 10fdffdf ................ 2860c: 1d000000 0000d1ff dd010000 00000010 ................ ... 2862c: 00d11d00 00000000 df010000 ffef10fd ................ 2863c: 00d0ffff d1ffff1d ffffffaf cfcf00f0 ................ 2864c: 0000fcfc 00f00f00 b6f11f6b 0f000000 ........k....... 2865c: 0f0000f0 000000f0 00f00f00 00f00f00 ................ 2866c: 0f000000 0f0000f0 000000f0 b6f11f6b ............k... 2867c: 00f00f00 cfcf0000 0f00fcfc faffffff ................ 2868c: d1ffff1d ffff0d00 df01feff 000010fd ................ 2869c: 00000000 00d11d00 00000000 00000000 ................ 286ac: ff8f0000 0000e2ff ffff0000 0020feff .............. . 286bc: ffff0000 ffffffff fffff8ff ffffffff ................ 286cc: ffffffff ffffffff ffffffff ffffffff ................ 286dc: ffffffff ffffffff ffffffff ffffffff ................ 286ec: ffffffff ffffffff ffffffff ffffffff ................ 286fc: ffffffff ffffffff ff8fffff ffffffff ................ 2870c: 0000f8ff 00b00b00 00000000 00fbbf00 ................ 2871c: 00000000 b0ffff0b 00000000 fbffffbf ................ 2872c: 0b000000 ffffffff 4f0000b0 ffffffff ...........O.... 2873c: 000000f4 00ffff00 00000000 00ffff00 ................ 2874c: 00000000 00ffff00 00000000 00ffff00 ................ 2875c: 00000000 00ffff00 ffdf0000 0ffddff0 ................ 2876c: fffffdff 9f0000f9 ffffffff ffffffff ................ 2877c: ffffffff f0ffffff ffdfffe0 ffffffff ................ 2878c: 0000fdff 00000000 00000000 00000000 ................ 2879c: 0062ea0a 00000000 f0ffff02 00000000 ..b............. 287ac: ffff9f00 00000000 ffff0f00 000000d0 ................ 287bc: ffff0200 000000fb ef030000 000070ff .............p.. 287cc: 04000000 0000f2ff 00000000 0000fbbf ................ 287dc: 00000000 0030ff6f 00000200 0090ff4f ....o.0.....O... 287ec: 00f38f02 00d0ff6f e4ffff0a 00d1ffbf ....o........... 287fc: ffffef00 00d1ffff ffff0a00 0090ffff ................ 2880c: ff6f0000 0030fbff ff020000 000072db ..o...0......r.. 2881c: 08000000 000080ee ff086106 2d0080ff .........a.....- 2882c: 33efd0ff ff2e00fe 3ff30ef3 f3ff2ee0 ...3.......?.... 2883c: ffff8f00 00f3ff6e ffff8e00 0000f3ff ....n........... 2884c: ffef0200 000000f3 ffff2e00 08000030 ............0... 2885c: ffffffef ff080030 ffeff6ff 33ef0030 ....0.......0..3 2886c: ffef02fe 3ff30e30 ffef02e0 f8ff8f30 ....0..?....0... 2887c: fddf0200 00e88e00 10660000 ffdf0000 ..........f..... 2888c: 00200dff ffffff00 0000e20f 0fffffff .. ............. 2889c: fff0dffd 0020ffff fffff0ff ffffffff ...... ......... 288ac: fffffff0 f0ffffff ffffffff fff0ffff ................ 288bc: ffffffff fffff0ff ffffffff fffffff0 ................ 288cc: f0ffffff ffffffff fff0ffff ffffffff ................ 288dc: ffdff0ff fffdffff 000000f9 ffff0000 ................ 288ec: 00ffffff ffffdf00 0000fdff ffffff8f ................ 288fc: ff00c2ff ffffffff 00ff20fe ff010000 ......... ...... 2890c: 0000ffe2 fcff0000 000000ff ffffff00 ................ 2891c: 00000000 ffffffff ffffffff ffffffff ................ 2892c: ffffffff 11fbffff ffffffbf 1f00f1ff ................ 2893c: ffffffff ff1f00f1 fbffffff ffffbf11 ................ 2894c: ffffffff 8fffffff ffffffff df00f8ff ................ 2895c: 0000fdff fcffff01 ff030000 0000f7ff ................ 2896c: f2ffff06 ff080000 0000d0ff ffffff0a ................ 2897c: ff0cd0ff a0ffffff ffffff0e ff0d20ff ............. .. 2898c: 00f8ffff ff0a0000 000000e0 0050ff0e ..............P. 2899c: fc2f0000 00000000 0000f35f a09f0000 ../....._....... 289ac: 00000000 000010df 00d70000 04000000 ................ 289bc: 000040ee 99ffdf00 0000fdff ff99ffff .@.............. 289cc: ff0000ff ffffffff ffff0000 00000090 ................ 289dc: 0dffff00 200dffff ff0fffff ffe20fff ....... ........ 289ec: ffff0fff fffffd0f 20ffff0f 0fffff00 ........... .... 289fc: ffffffff ff0fffff ffffffff ffff0fff ................ 28a0c: ffdfffff ffffff0f 0f0000ff ffffffff ................ 28a1c: ff0f0000 00ffffff ffff0d00 0000fdff ................ 28a2c: 0000cc00 02000000 000030ff ffbf0100 .........0...... 28a3c: 000020fc ffffff1e 9f0000e1 f8ffffff . .............. 28a4c: ffef0000 00fdffff ffffff00 0100ffff ................ 28a5c: ffffffff ff0300ff ffffffff ffff0830 ............0... 28a6c: 80ffffff ffffff1e cfe1ffff ffffffff ................ 28a7c: ffcffcff ffffffff 000000fc 00000000 ................ 28a8c: ff0e0000 000000e0 40ee0400 ff8f0000 ...........@.... 28a9c: ffffffff fff8ffff ffffffff ffffffff ................ 28aac: 0ff000ff 000ff000 f000ffff 0ff0000f ................ 28abc: ffffff00 ffffffff ffffffff 888008f8 ................ 28acc: ff8f8008 8008f8ff 8f800888 ffffffff ................ 28adc: ffffffff 00ffffff 000000f0 ffff000f ................ 28aec: 0000f000 ff000f00 ffffffff ffffffff ................ 28afc: ffff8fff ffffffff 0000f8ff 00000000 ................ ... 28b14: 70af0300 00000000 ffcf0400 000000f0 ...p............ 28b24: ffdf0600 0000a0ff ffef1700 0030ffff ..............0. 28b34: ffff1800 00fcffff ffff2a00 f4ffffff .........*...... 28b44: ffff0800 ffffffff ff0f00d0 ffffffff ................ 28b54: 080060ff ffffffff 0000feff 00000000 .`.............. 28b64: 00f7ffff 00000000 f1ffff00 00000000 ................ 28b74: ffff0000 00000080 ff000000 000010ff ................ 28b84: 00000000 0000faff 00000000 00f2ff00 ................ 28b94: 00000000 808f0000 00000000 00000000 ................ 28ba4: 00000000 f0ffffdf ffff00d2 20fef0ff ............... 28bb4: f0ffffff ffffe2ff fdfff0ff f2ffffff ................ 28bc4: ffff0000 ffffffff ffffffff ffffffff ................ 28bd4: ffffffff ffffffff ffffffff ffffffff ................ 28be4: ffffffff ffffffff ffffffff ffffffff ................ 28bf4: ffffffff ffffffff ffffffff ffdfffff ................ 28c04: fdffffff 00000000 00000000 00000000 ................ 28c14: feef9c04 000040c9 ffef0700 feffffff .....@.......... 28c24: df040070 8aa8fcff 40fdffcf 00d5ff6f p..........@o... 28c34: 5d000000 f6cff6ff 00000000 fc6f0000 ...]..........o. 28c44: 5a00301a 00a5fddf 0000a103 ffffff4d .0.Z........M... 28c54: 0000d4ff feff0500 ffef8aa8 01000050 ............P... 28c64: 000070df 0010fd07 00120000 21000000 .p.............! 28c74: 00000000 e44e0000 00000000 00000000 ......N......... 28c84: 0000feef 00000000 feef0000 00000000 ................ 28c94: 00000000 0000e44e ff8f0000 ffffffff ....N........... 28ca4: 80ffffff ffffffff ffffffff 00fff0ff ................ 28cb4: 00000000 fd0f0000 ffff0fff ffffffff ................ 28cc4: 0fffff0f ffffffff ff00ffff ffff0fff ................ 28cd4: ffffffff 0fffff00 ffffffff ff0fffff ................ 28ce4: 000000ff 00000000 fffffd0f ffffffff ................ 28cf4: f0ffffff ffffff8f ffffffff ff8f80ff ................ 28d04: ffffffff 80ffffff ffffffff ffffffff ................ 28d14: 00fff0ff 00000000 fd0f0000 ffff0fff ................ 28d24: 00f0ffff 0fffff0f ffffffff ff0000f0 ................ 28d34: ffff0fff 00f0ffff 0fffff00 ffffffff ................ 28d44: ff0f00f0 000000ff 00000000 fffffd0f ................ 28d54: ffffffff f0ffffff ffffff8f ffffffff ................ 28d64: ff8f80ff ffffffff 80ffffff ffffffff ................ 28d74: ffffffff 00fff0ff 00000000 fd0f0000 ................ 28d84: ffff0fff 000000ff 0fffff0f 00ffffff ................ 28d94: ff000000 ffff0fff 000000ff 0fffff00 ................ 28da4: 00ffffff ff0f0000 000000ff 00000000 ................ 28db4: fffffd0f ffffffff f0ffffff ffffff8f ................ 28dc4: ffffffff ff8f80ff ffffffff 80ffffff ................ 28dd4: ffffffff ffffffff 00fff0ff 00000000 ................ 28de4: fd0f0000 f0ff0fff 00000000 0fffff0f ................ 28df4: 0000f0ff ff000000 f0ff0fff 00000000 ................ 28e04: 0fffff00 0000f0ff ff0f0000 000000ff ................ 28e14: 00000000 fffffd0f ffffffff f0ffffff ................ 28e24: ffffff8f ffffffff ff8f80ff ffffffff ................ 28e34: 80ffffff ffffffff ffffffff 00fff0ff ................ 28e44: 00000000 fd0f0000 000000ff 00000000 ................ 28e54: 00ffff0f 00000000 ff000000 000000ff ................ 28e64: 00000000 00ffff00 00000000 ff0f0000 ................ 28e74: 000000ff 00000000 fffffd0f ffffffff ................ 28e84: f0ffffff ffffff8f ffffffff 000080ff ................ 28e94: 01000000 00000000 00000000 10fd0700 ................ 28ea4: 00000000 cf010000 0000f5ff 00000000 ................ 28eb4: fe29b900 00000010 3f000000 00000210 ..)........?.... 28ec4: df030000 00900a80 70030000 77ffdf00 ...........p...w 28ed4: 555555f7 0fd38f55 dfccfdff cdccccdc .UUUU........... 28ee4: fe8fb0ff 00aa0010 404d0000 00104600 ..........M@.F.. 28ef4: 3302f201 00000010 09000000 00f9cfb1 ...3............ 28f04: 00000000 ff0a0000 000090ff 00000000 ................ 28f14: f9bf0000 00000000 00000000 00002201 .............".. 28f24: df180000 020092fd ffeffbef faff0d30 ............0... 28f34: 4fe0ff2e ff03faff fafa9ff5 cffa4f35 ...O........5O.. 28f44: 0b3d8ac0 03fbeffd fffe8f12 ff06b0ff ..=............. 28f54: d1ffffff efffff08 9f1011fd 59d1dfff ...............Y 28f64: affd0b3b 1d38fad7 faff5ffb 0df7df01 ;.....8.._...... 28f74: ff1dfaff fcef03f1 0050ffdf a3fedf18 ..........P..... 28f84: 7f000000 0000f7ff ffffffef effeffff ................ 28f94: ffffffff 0000feff 00000000 ffff0f00 ................ 28fa4: f0ffffff ffffff0f 0ff0ffff f9999ff9 ................ 28fb4: f80ff09f 8ff8888f 8ff80ff0 f08ff888 ................ 28fc4: 888ff80f 0ff08ff8 f8888ff8 f80ff08f ................ 28fd4: 8ff8888f 8ff80ff0 f08ff888 999ff90f ................ 28fe4: 0ff09ff9 ffffffff ff08f0ff ffffffff ................ 28ff4: 00000080 7f000000 000000a0 8f000000 ................ 29004: 0000b0ff 0d000000 00a0ffff 8a000000 ................ 29014: 00ffff1d 8f000000 70ff1dfa 8f000000 ...........p.... 29024: 801dfaff 8f000000 00faffff 8f000000 ................ 29034: 80ffffff 8f000000 80ffffff 8f000000 ................ 29044: 80ffffff 8f000000 80ffffff 6f000000 ...............o 29054: 80ffffff 0b000000 80ffffff 00000000 ................ 29064: 80ffffdf 00000000 80ffff0e 00000000 ................ 29074: 60dbde00 00000000 00000000 00000000 ...`............ 29084: 00000000 ffffff1b e4ffffff ffdf0100 ................ 29094: ffffffff 1d00feff effaffff ffffaffe ................ 290a4: ffffdf01 0ae22ea0 ff1dffff 02e2ffff ................ 290b4: ffff2e20 ffffffcf ef0220fe ffcfffff ........ ...... 290c4: 20feffff ffffef02 ffffff1d 2e2002e2 ... .......... . 290d4: df01ffff 2ea0ffff ffff0ae2 ffff1d00 ................ 290e4: affeeffa 0100ffff ffffffdf feffffff ................ 290f4: ff1b0000 ffffffff 0800e4ff e4ffffff ................ 29104: ffff8f00 f808feff ff400b0f 0b0ff88f ..........@..... 29114: f8ffff40 ff400b0f ffffffff ffffffff @.....@......... 29124: ffffffff ffffffff ffffffff ffffffff ................ 29134: ffffffff ffffffff ffffffff ffffffff ................ 29144: ffffffff ffffffff ffffffff ffefffff ................ 29154: feffffff ffffff4e 0000e4ff 00000000 ....N........... 29164: 00000100 00000000 00e00300 00001000 ................ 29174: 10ef0200 0000bf00 f17f0000 00f1cf00 ................ 29184: ff070000 77ffcf11 bf777777 ffffcff1 .......wwww..... 29194: ffffffff ffff17ff ffffffff ff07e0ff ................ 291a4: 000000f1 06000000 000010ff 00000000 ................ 291b4: 0000a005 00000000 ........ 000291bc <__func__.9667>: 291bc: 645f766c 5f707369 5f767264 69676572 lv_disp_drv_regi 291cc: 72657473 00000000 742f2e2e 64726968 ster....../third 291dc: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 291ec: 61685f76 766c2f6c 6c61685f 7369645f v_hal/lv_hal_dis 291fc: 00632e70 p.c. 00029200 : 29200: 00011081 00000000 ........ 00029208 <__func__.9543>: 29208: 615f766c 5f6d696e 72617473 00000074 lv_anim_start... 29218: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv 29228: 732f6c67 6c2f6372 696d5f76 6c2f6373 gl/src/lv_misc/l 29238: 6e615f76 632e6d69 00000000 v_anim.c.... 00029244 <__func__.9631>: 29244: 665f766c 72645f73 65725f76 74736967 lv_fs_drv_regist 29254: 00007265 er.. 00029258 <__func__.9538>: 29258: 665f766c 706f5f73 00006e65 lv_fs_open.. 00029264 <__func__.9602>: 29264: 665f766c 69645f73 706f5f72 00006e65 lv_fs_dir_open.. 29274: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv 29284: 732f6c67 6c2f6372 696d5f76 6c2f6373 gl/src/lv_misc/l 29294: 73665f76 0000632e v_fs.c.. 0002929c : 2929c: 023c0000 06b30478 0b2808ee 0f990d61 ..<.x.....(.a... 292ac: 140611d0 186c163a 1ccb1a9d 21211ef7 ....:.l.......!! 292bc: 256c2348 29ac278e 2ddf2bc7 32032ff3 H#l%.'.).+.-./.2 292cc: 36183410 3a1c381c 3e0e3c17 41ec3fff .4.6.8.:.<.>.?.A 292dc: 45b643d4 496a4793 4d084b3c 508d4ecd .C.E.GjI: 29354: 6d5f766c 615f6d65 636f6c6c 00000000 lv_mem_alloc.... 00029364 <__func__.7297>: 29364: 5f766c5f 5f6d656d 5f667562 656c6572 _lv_mem_buf_rele 29374: 00657361 ase. 00029378 <__func__.7240>: 29378: 6d5f766c 725f6d65 6c6c6165 0000636f lv_mem_realloc.. 00029388 <__func__.7283>: 29388: 5f766c5f 5f6d656d 5f667562 00746567 _lv_mem_buf_get. 29398: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv 293a8: 732f6c67 6c2f6372 696d5f76 6c2f6373 gl/src/lv_misc/l 293b8: 656d5f76 00632e6d 6c756f43 74276e64 v_mem.c.Couldn't 293c8: 6c6c6120 7461636f 656d2065 79726f6d allocate memory 293d8: 00000000 6d5f766c 625f6d65 725f6675 ....lv_mem_buf_r 293e8: 61656c65 203a6573 73692070 746f6e20 elease: p is not 293f8: 6b206120 6e776f6e 66756220 00726566 a known buffer. 29408: 6d5f766c 625f6d65 675f6675 203a7465 lv_mem_buf_get: 29418: 2074754f 6d20666f 726f6d65 63202c79 Out of memory, c 29428: 74276e61 6c6c6120 7461636f 20612065 an't allocate a 29438: 2077656e 66756220 20726566 636e6928 new buffer (inc 29448: 73616572 6f792065 4c207275 454d5f56 rease your LV_ME 29458: 49535f4d 682f455a 20706165 657a6973 M_SIZE/heap size 29468: 00000029 6d5f766c 625f6d65 675f6675 )...lv_mem_buf_g 29478: 203a7465 66206f6e 20656572 66667562 et: no free buff 29488: 202e7265 72636e49 65736165 5f564c20 er. Increase LV_ 29498: 57415244 4655425f 58414d5f 4d554e5f DRAW_BUF_MAX_NUM 294a8: 0000002e .... 000294ac <__func__.9561>: 294ac: 745f766c 5f6b7361 61657263 625f6574 lv_task_create_b 294bc: 63697361 00000000 asic.... 000294c4 <__func__.9574>: 294c4: 745f766c 5f6b7361 61657263 00006574 lv_task_create.. 294d4: 742f2e2e 64726968 74726170 766c2f79 ../thirdparty/lv 294e4: 732f6c67 6c2f6372 696d5f76 6c2f6373 gl/src/lv_misc/l 294f4: 61745f76 632e6b73 00000000 v_task.c.... 00029500 <__func__.6088>: 29500: 5f766c5f 5f747874 5f746567 657a6973 _lv_txt_get_size 29510: 00000000 3b2e2c20 005f2d3a 742f2e2e .... ,.;:-_.../t 29520: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s 29530: 6c2f6372 696d5f76 6c2f6373 78745f76 rc/lv_misc/lv_tx 29540: 00632e74 745f766c 675f7478 735f7465 t.c.lv_txt_get_s 29550: 3a657a69 746e6920 72656765 65766f20 ize: integer ove 29560: 6f6c6672 68772077 20656c69 636c6163 rflow while calc 29570: 74616c75 20676e69 74786574 69656820 ulating text hei 29580: 00746867 0000ffff 00008410 008c80ef ght............. 00029590 <__func__.9965>: 29590: 695f766c 645f676d 67697365 0000006e lv_img_design... 000295a0 <__func__.9838>: 295a0: 695f766c 735f676d 615f7465 5f6f7475 lv_img_set_auto_ 295b0: 657a6973 00000000 size.... 000295b8 <__func__.9845>: 295b8: 695f766c 735f676d 6f5f7465 65736666 lv_img_set_offse 295c8: 00785f74 t_x. 000295cc <__func__.9852>: 295cc: 695f766c 735f676d 6f5f7465 65736666 lv_img_set_offse 295dc: 00795f74 t_y. 000295e0 <__func__.9888>: 295e0: 695f766c 675f676d 735f7465 00006372 lv_img_get_src.. 000295f0 <__func__.9894>: 295f0: 695f766c 675f676d 665f7465 5f656c69 lv_img_get_file_ 29600: 656d616e 00000000 name.... 00029608 <__func__.9900>: 29608: 695f766c 675f676d 615f7465 5f6f7475 lv_img_get_auto_ 29618: 657a6973 00000000 size.... 00029620 <__func__.9817>: 29620: 695f766c 735f676d 735f7465 00006372 lv_img_set_src.. 00029630 <__func__.9808>: 29630: 695f766c 635f676d 74616572 00000065 lv_img_create... 00029640 <__func__.9906>: 29640: 695f766c 675f676d 6f5f7465 65736666 lv_img_get_offse 29650: 00785f74 t_x. 00029654 <__func__.9912>: 29654: 695f766c 675f676d 6f5f7465 65736666 lv_img_get_offse 29664: 00795f74 t_y. 00029668 <__func__.9919>: 29668: 695f766c 675f676d 705f7465 746f7669 lv_img_get_pivot 29678: 00000000 .... 0002967c <__func__.9925>: 2967c: 695f766c 675f676d 615f7465 656c676e lv_img_get_angle 2968c: 00000000 .... 00029690 <__func__.9931>: 29690: 695f766c 675f676d 7a5f7465 006d6f6f lv_img_get_zoom. 000296a0 <__func__.9937>: 296a0: 695f766c 675f676d 615f7465 6169746e lv_img_get_antia 296b0: 7361696c 00000000 742f2e2e 64726968 lias....../third 296c0: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 296d0: 69775f76 74656764 766c2f73 676d695f v_widgets/lv_img 296e0: 0000632e 695f766c 735f676d 735f7465 .c..lv_img_set_s 296f0: 203a6372 6e6b6e75 206e776f 65707974 rc: unknown type 29700: 00000000 695f766c 735f676d 735f7465 ....lv_img_set_s 29710: 203a6372 6e6b6e75 206e776f 67616d69 rc: unknown imag 29720: 79742065 00006570 695f766c 735f676d e type..lv_img_s 29730: 735f7465 203a6372 564c6020 474d495f et_src: `LV_IMG 29740: 4352535f 5241565f 4c424149 74206045 _SRC_VARIABLE` t 29750: 20657079 6e756f66 00000064 67616d69 ype found...imag 29760: 72632065 65746165 00000064 695f766c e created...lv_i 29770: 0000676d mg.. 00029774 <__func__.10208>: 29774: 6c5f766c 6c656261 7465735f 746f645f lv_label_set_dot 29784: 706d745f 00000000 _tmp.... 0002978c <__func__.9902>: 2978c: 6c5f766c 6c656261 7465735f 696c615f lv_label_set_ali 2979c: 00006e67 gn.. 000297a0 <__func__.9923>: 297a0: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 297b0: 65735f74 74735f6c 00747261 t_sel_start. 000297bc <__func__.9929>: 297bc: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 297cc: 65735f74 6e655f6c 00000064 t_sel_end... 000297d8 <__func__.9934>: 297d8: 6c5f766c 6c656261 7465675f 7865745f lv_label_get_tex 297e8: 00000074 t... 000297ec <__func__.9940>: 297ec: 6c5f766c 6c656261 7465675f 6e6f6c5f lv_label_get_lon 297fc: 6f6d5f67 00006564 g_mode.. 00029804 <__func__.9946>: 29804: 6c5f766c 6c656261 7465675f 696c615f lv_label_get_ali 29814: 00006e67 gn.. 00029818 <__func__.9953>: 29818: 6c5f766c 6c656261 7465675f 6365725f lv_label_get_rec 29828: 726f6c6f 00000000 olor.... 00029830 <__func__.9959>: 29830: 6c5f766c 6c656261 7465675f 696e615f lv_label_get_ani 29840: 70735f6d 00646565 m_speed. 00029848 <__func__.9967>: 29848: 6c5f766c 6c656261 7465675f 74656c5f lv_label_get_let 29858: 5f726574 00736f70 ter_pos. 00029860 <__func__.9996>: 29860: 6c5f766c 6c656261 7465675f 74656c5f lv_label_get_let 29870: 5f726574 00006e6f ter_on.. 00029878 <__func__.9865>: 29878: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 29888: 00000074 t... 0002988c <__func__.9876>: 2988c: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 2989c: 6d665f74 00000074 t_fmt... 000298a4 <__func__.9888>: 298a4: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 298b4: 74735f74 63697461 00000000 t_static.... 000298c0 <__func__.9895>: 298c0: 6c5f766c 6c656261 7465735f 6e6f6c5f lv_label_set_lon 298d0: 6f6d5f67 00006564 g_mode.. 000298d8 <__func__.9909>: 298d8: 6c5f766c 6c656261 7465735f 6365725f lv_label_set_rec 298e8: 726f6c6f 00000000 olor.... 000298f0 <__func__.9854>: 298f0: 6c5f766c 6c656261 6572635f 00657461 lv_label_create. 00029900 <__func__.9916>: 29900: 6c5f766c 6c656261 7465735f 696e615f lv_label_set_ani 29910: 70735f6d 00646565 m_speed. 00029918 <__func__.10033>: 29918: 6c5f766c 6c656261 7465675f 7865745f lv_label_get_tex 29928: 65735f74 74735f6c 00747261 t_sel_start. 00029934 <__func__.10038>: 29934: 6c5f766c 6c656261 7465675f 7865745f lv_label_get_tex 29944: 65735f74 6e655f6c 00000064 t_sel_end... 00029950 <__func__.10044>: 29950: 6c5f766c 6c656261 5f73695f 72616863 lv_label_is_char 29960: 646e755f 705f7265 0000736f _under_pos.. 0002996c <__func__.10089>: 2996c: 6c5f766c 6c656261 736e695f 7865745f lv_label_ins_tex 2997c: 00000074 t... 00029980 <__func__.10102>: 29980: 6c5f766c 6c656261 7475635f 7865745f lv_label_cut_tex 29990: 00000074 742f2e2e 64726968 74726170 t...../thirdpart 299a0: 766c2f79 732f6c67 6c2f6372 69775f76 y/lvgl/src/lv_wi 299b0: 74656764 766c2f73 62616c5f 632e6c65 dgets/lv_label.c 299c0: 00000000 6c696146 74206465 6c61206f ....Failed to al 299d0: 61636f6c 6d206574 726f6d65 6f662079 locate memory fo 299e0: 6f642072 6d745f74 74705f70 00000072 r dot_tmp_ptr... 299f0: 74786554 00000000 6562616c 7263206c Text....label cr 29a00: 65746165 00000064 6c5f766c 6c656261 eated...lv_label 29a10: 00000000 .... 00029a14 <_init>: 29a14: b5f8 push {r3, r4, r5, r6, r7, lr} 29a16: bf00 nop 29a18: bcf8 pop {r3, r4, r5, r6, r7} 29a1a: bc08 pop {r3} 29a1c: 469e mov lr, r3 29a1e: 4770 bx lr 00029a20 <__init_array_start>: 29a20: 00000289 .word 0x00000289 00029a24 <_fini>: 29a24: b5f8 push {r3, r4, r5, r6, r7, lr} 29a26: bf00 nop 29a28: bcf8 pop {r3, r4, r5, r6, r7} 29a2a: bc08 pop {r3} 29a2c: 469e mov lr, r3 29a2e: 4770 bx lr 00029a30 <__fini_array_start>: 29a30: 00000265 .word 0x00000265