oracle_test_d21.elf: file format elf32-littlearm Sections: Idx Name Size VMA LMA File off Algn 0 .text 0001c9a0 00000000 00000000 00010000 2**2 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .ARM.exidx 00000008 0001c9a0 0001c9a0 0002c9a0 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 2 .relocate 000000c4 20000000 0001c9a8 00030000 2**2 CONTENTS, ALLOC, LOAD, CODE 3 .bss 00004d70 200000c8 0001ca70 000300c4 2**3 ALLOC 4 .stack 00002000 20004e38 000217e0 000300c4 2**0 ALLOC 5 .ARM.attributes 00000028 00000000 00000000 000300c4 2**0 CONTENTS, READONLY 6 .comment 00000059 00000000 00000000 000300ec 2**0 CONTENTS, READONLY 7 .debug_info 00089e2c 00000000 00000000 00030145 2**0 CONTENTS, READONLY, DEBUGGING 8 .debug_abbrev 0000bbb5 00000000 00000000 000b9f71 2**0 CONTENTS, READONLY, DEBUGGING 9 .debug_aranges 000017e0 00000000 00000000 000c5b26 2**0 CONTENTS, READONLY, DEBUGGING 10 .debug_ranges 00003230 00000000 00000000 000c7306 2**0 CONTENTS, READONLY, DEBUGGING 11 .debug_macro 0002642b 00000000 00000000 000ca536 2**0 CONTENTS, READONLY, DEBUGGING 12 .debug_line 00030f4b 00000000 00000000 000f0961 2**0 CONTENTS, READONLY, DEBUGGING 13 .debug_str 0009fce3 00000000 00000000 001218ac 2**0 CONTENTS, READONLY, DEBUGGING 14 .debug_frame 000047b8 00000000 00000000 001c1590 2**2 CONTENTS, READONLY, DEBUGGING 15 .debug_loc 0003cca8 00000000 00000000 001c5d48 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 : /********************** * GLOBAL FUNCTIONS **********************/ void _lv_gc_clear_roots(void) { 0: 38 6e 00 20 75 13 00 00 71 13 00 00 71 13 00 00 8n. u...q...q... ... #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) 2c: 71 13 00 00 00 00 00 00 00 00 00 00 71 13 00 00 q...........q... 3c: 45 01 00 00 71 13 00 00 71 13 00 00 71 13 00 00 E...q...q...q... 4c: 71 13 00 00 71 13 00 00 71 13 00 00 71 13 00 00 q...q...q...q... 5c: 71 13 00 00 71 13 00 00 4d 0c 00 00 5d 0c 00 00 q...q...M...]... } 6c: 6d 0c 00 00 7d 0c 00 00 8d 0c 00 00 9d 0c 00 00 m...}........... 7c: 71 13 00 00 71 13 00 00 71 13 00 00 71 13 00 00 q...q...q...q... 8c: 71 13 00 00 71 13 00 00 71 13 00 00 71 13 00 00 q...q...q...q... 9c: 71 13 00 00 71 13 00 00 71 13 00 00 71 13 00 00 q...q...q...q... ac: 71 13 00 00 00 00 00 00 q....... 000000b4 <__do_global_dtors_aux>: b4: b510 push {r4, lr} b6: 4c06 ldr r4, [pc, #24] ; (d0 <__do_global_dtors_aux+0x1c>) b8: 7823 ldrb r3, [r4, #0] ba: 2b00 cmp r3, #0 bc: d107 bne.n ce <__do_global_dtors_aux+0x1a> be: 4b05 ldr r3, [pc, #20] ; (d4 <__do_global_dtors_aux+0x20>) c0: 2b00 cmp r3, #0 c2: d002 beq.n ca <__do_global_dtors_aux+0x16> c4: 4804 ldr r0, [pc, #16] ; (d8 <__do_global_dtors_aux+0x24>) c6: e000 b.n ca <__do_global_dtors_aux+0x16> c8: bf00 nop ca: 2301 movs r3, #1 cc: 7023 strb r3, [r4, #0] ce: bd10 pop {r4, pc} d0: 200000c8 .word 0x200000c8 d4: 00000000 .word 0x00000000 d8: 0001c9a8 .word 0x0001c9a8 000000dc : dc: 4b08 ldr r3, [pc, #32] ; (100 ) de: b510 push {r4, lr} e0: 2b00 cmp r3, #0 e2: d003 beq.n ec e4: 4907 ldr r1, [pc, #28] ; (104 ) e6: 4808 ldr r0, [pc, #32] ; (108 ) e8: e000 b.n ec ea: bf00 nop ec: 4807 ldr r0, [pc, #28] ; (10c ) ee: 6803 ldr r3, [r0, #0] f0: 2b00 cmp r3, #0 f2: d100 bne.n f6 f4: bd10 pop {r4, pc} f6: 4b06 ldr r3, [pc, #24] ; (110 ) f8: 2b00 cmp r3, #0 fa: d0fb beq.n f4 fc: 4798 blx r3 fe: e7f9 b.n f4 100: 00000000 .word 0x00000000 104: 200000cc .word 0x200000cc 108: 0001c9a8 .word 0x0001c9a8 10c: 0001c9a8 .word 0x0001c9a8 110: 00000000 .word 0x00000000 00000114 : #include "p_time.h" #include "p_usart.h" #include "lvgl.h" static volatile uint64_t sys_time = 0; void p_time_init(void) { 114: b510 push {r4, lr} // Configure SysTick to trigger every millisecond using the CPU Clock SysTick->CTRL = 0; // Disable SysTick 116: 4a08 ldr r2, [pc, #32] ; (138 ) 118: 2000 movs r0, #0 11a: 6010 str r0, [r2, #0] SysTick->LOAD = 7999UL; // Set reload register for 1mS interrupts 11c: 4b07 ldr r3, [pc, #28] ; (13c ) 11e: 6053 str r3, [r2, #4] NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); } else { SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | 120: 4c07 ldr r4, [pc, #28] ; (140 ) 122: 6a23 ldr r3, [r4, #32] 124: 021b lsls r3, r3, #8 126: 0a1b lsrs r3, r3, #8 128: 21c0 movs r1, #192 ; 0xc0 12a: 0609 lsls r1, r1, #24 12c: 430b orrs r3, r1 12e: 6223 str r3, [r4, #32] NVIC_SetPriority(SysTick_IRQn, 3); // Set interrupt priority to least urgency SysTick->VAL = 0; // Reset the SysTick counter value 130: 6090 str r0, [r2, #8] SysTick->CTRL = 0x00000007; // Enable SysTick, Enable SysTick Exceptions, Use CPU Clock 132: 2307 movs r3, #7 134: 6013 str r3, [r2, #0] NVIC_EnableIRQ(SysTick_IRQn); // Enable SysTick Interrupt } 136: bd10 pop {r4, pc} 138: e000e010 .word 0xe000e010 13c: 00001f3f .word 0x00001f3f 140: e000ed00 .word 0xe000ed00 00000144 : void SysTick_Handler(void) { 144: b570 push {r4, r5, r6, lr} sys_time++; 146: 4906 ldr r1, [pc, #24] ; (160 ) 148: 680a ldr r2, [r1, #0] 14a: 684b ldr r3, [r1, #4] 14c: 2401 movs r4, #1 14e: 2500 movs r5, #0 150: 1912 adds r2, r2, r4 152: 416b adcs r3, r5 154: 600a str r2, [r1, #0] 156: 604b str r3, [r1, #4] lv_tick_inc(1); 158: 2001 movs r0, #1 15a: 4b02 ldr r3, [pc, #8] ; (164 ) 15c: 4798 blx r3 } 15e: bd70 pop {r4, r5, r6, pc} 160: 200000e8 .word 0x200000e8 164: 0000f771 .word 0x0000f771 00000168 : #include "p_ssd1963.h" 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) { 168: b530 push {r4, r5, lr} 16a: b08d sub sp, #52 ; 0x34 system_init(); 16c: 4b14 ldr r3, [pc, #80] ; (1c0 ) 16e: 4798 blx r3 * * Enables global interrupts in the device to fire any enabled interrupt handlers. */ static inline void system_interrupt_enable_global(void) { cpu_irq_enable(); 170: 2201 movs r2, #1 172: 4b14 ldr r3, [pc, #80] ; (1c4 ) 174: 701a strb r2, [r3, #0] \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"); 176: f3bf 8f5f dmb sy __ASM volatile ("cpsie i" : : : "memory"); 17a: b662 cpsie i system_interrupt_enable_global(); p_usart_init(); 17c: 4b12 ldr r3, [pc, #72] ; (1c8 ) 17e: 4798 blx r3 p_i2c_init(); 180: 4b12 ldr r3, [pc, #72] ; (1cc ) 182: 4798 blx r3 p_gpio_init(); 184: 4b12 ldr r3, [pc, #72] ; (1d0 ) 186: 4798 blx r3 p_time_init(); 188: 4b12 ldr r3, [pc, #72] ; (1d4 ) 18a: 4798 blx r3 lv_init(); 18c: 4b12 ldr r3, [pc, #72] ; (1d8 ) 18e: 4798 blx r3 ssd1963_init(); 190: 4b12 ldr r3, [pc, #72] ; (1dc ) 192: 4798 blx r3 lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX * 10); /*Initialize the display buffer*/ 194: 4c12 ldr r4, [pc, #72] ; (1e0 ) 196: 2396 movs r3, #150 ; 0x96 198: 015b lsls r3, r3, #5 19a: 2200 movs r2, #0 19c: 4911 ldr r1, [pc, #68] ; (1e4 ) 19e: 0020 movs r0, r4 1a0: 4d11 ldr r5, [pc, #68] ; (1e8 ) 1a2: 47a8 blx r5 lv_disp_drv_t disp_drv; /*Descriptor of a display driver*/ lv_disp_drv_init(&disp_drv); /*Basic initialization*/ 1a4: a801 add r0, sp, #4 1a6: 4b11 ldr r3, [pc, #68] ; (1ec ) 1a8: 4798 blx r3 disp_drv.flush_cb = ssd1963_flush; /*Set your driver function*/ 1aa: 4b11 ldr r3, [pc, #68] ; (1f0 ) 1ac: 9304 str r3, [sp, #16] disp_drv.buffer = &disp_buf; /*Assign the buffer to the display*/ 1ae: 9402 str r4, [sp, #8] lv_disp_drv_register(&disp_drv); /*Finally register the driver*/ 1b0: a801 add r0, sp, #4 1b2: 4b10 ldr r3, [pc, #64] ; (1f4 ) 1b4: 4798 blx r3 p_debug_start_service(); 1b6: 4b10 ldr r3, [pc, #64] ; (1f8 ) 1b8: 4798 blx r3 } 1ba: b00d add sp, #52 ; 0x34 1bc: bd30 pop {r4, r5, pc} 1be: 46c0 nop ; (mov r8, r8) 1c0: 00001345 .word 0x00001345 1c4: 2000000c .word 0x2000000c 1c8: 00017759 .word 0x00017759 1cc: 000176e9 .word 0x000176e9 1d0: 000175c5 .word 0x000175c5 1d4: 00000115 .word 0x00000115 1d8: 00001861 .word 0x00001861 1dc: 0001696d .word 0x0001696d 1e0: 20002670 .word 0x20002670 1e4: 200000f0 .word 0x200000f0 1e8: 0000f4c1 .word 0x0000f4c1 1ec: 0000f45d .word 0x0000f45d 1f0: 000172a9 .word 0x000172a9 1f4: 0000f4e1 .word 0x0000f4e1 1f8: 00017855 .word 0x00017855 000001fc : void oracle_service(void) { 1fc: b510 push {r4, lr} delay_ms(1); 1fe: 2000 movs r0, #0 200: 4b08 ldr r3, [pc, #32] ; (224 ) 202: 4798 blx r3 204: 0002 movs r2, r0 206: 2300 movs r3, #0 208: 4807 ldr r0, [pc, #28] ; (228 ) 20a: 2100 movs r1, #0 20c: 1880 adds r0, r0, r2 20e: 4159 adcs r1, r3 210: 4a06 ldr r2, [pc, #24] ; (22c ) 212: 2300 movs r3, #0 214: 4c06 ldr r4, [pc, #24] ; (230 ) 216: 47a0 blx r4 218: 4b06 ldr r3, [pc, #24] ; (234 ) 21a: 4798 blx r3 lv_task_handler(); 21c: 4b06 ldr r3, [pc, #24] ; (238 ) 21e: 4798 blx r3 220: bd10 pop {r4, pc} 222: 46c0 nop ; (mov r8, r8) 224: 000010cd .word 0x000010cd 228: 00001b57 .word 0x00001b57 22c: 00001b58 .word 0x00001b58 230: 00017b6d .word 0x00017b6d 234: 20000001 .word 0x20000001 238: 0001135d .word 0x0001135d 0000023c : /** * \internal Calculate 64 bit division, ref can be found in * http://en.wikipedia.org/wiki/Division_algorithm#Long_division */ static uint64_t long_division(uint64_t n, uint64_t d) { 23c: b5f0 push {r4, r5, r6, r7, lr} 23e: 46de mov lr, fp 240: 4657 mov r7, sl 242: 464e mov r6, r9 244: 4645 mov r5, r8 246: b5e0 push {r5, r6, r7, lr} 248: b087 sub sp, #28 24a: 4680 mov r8, r0 24c: 9104 str r1, [sp, #16] 24e: 0016 movs r6, r2 250: 001f movs r7, r3 int32_t i; uint64_t q = 0, r = 0, bit_shift; 252: 2200 movs r2, #0 254: 2300 movs r3, #0 256: 2100 movs r1, #0 258: 468b mov fp, r1 for (i = 63; i >= 0; i--) { 25a: 243f movs r4, #63 ; 0x3f bit_shift = (uint64_t)1 << i; 25c: 2001 movs r0, #1 25e: 0021 movs r1, r4 260: 9600 str r6, [sp, #0] 262: 9701 str r7, [sp, #4] 264: 465c mov r4, fp 266: 9403 str r4, [sp, #12] 268: 4644 mov r4, r8 26a: 9405 str r4, [sp, #20] 26c: e013 b.n 296 26e: 2420 movs r4, #32 270: 1a64 subs r4, r4, r1 272: 0005 movs r5, r0 274: 40e5 lsrs r5, r4 276: 46a8 mov r8, r5 278: e014 b.n 2a4 if (n & bit_shift) { r |= 0x01; } if (r >= d) { r = r - d; 27a: 9c00 ldr r4, [sp, #0] 27c: 9d01 ldr r5, [sp, #4] 27e: 1b12 subs r2, r2, r4 280: 41ab sbcs r3, r5 q |= bit_shift; 282: 465c mov r4, fp 284: 464d mov r5, r9 286: 432c orrs r4, r5 288: 46a3 mov fp, r4 28a: 9c03 ldr r4, [sp, #12] 28c: 4645 mov r5, r8 28e: 432c orrs r4, r5 290: 9403 str r4, [sp, #12] for (i = 63; i >= 0; i--) { 292: 3901 subs r1, #1 294: d325 bcc.n 2e2 bit_shift = (uint64_t)1 << i; 296: 2420 movs r4, #32 298: 4264 negs r4, r4 29a: 190c adds r4, r1, r4 29c: d4e7 bmi.n 26e 29e: 0005 movs r5, r0 2a0: 40a5 lsls r5, r4 2a2: 46a8 mov r8, r5 2a4: 0004 movs r4, r0 2a6: 408c lsls r4, r1 2a8: 46a1 mov r9, r4 r = r << 1; 2aa: 1892 adds r2, r2, r2 2ac: 415b adcs r3, r3 2ae: 0014 movs r4, r2 2b0: 001d movs r5, r3 if (n & bit_shift) { 2b2: 9e05 ldr r6, [sp, #20] 2b4: 464f mov r7, r9 2b6: 403e ands r6, r7 2b8: 46b4 mov ip, r6 2ba: 9e04 ldr r6, [sp, #16] 2bc: 4647 mov r7, r8 2be: 403e ands r6, r7 2c0: 46b2 mov sl, r6 2c2: 4666 mov r6, ip 2c4: 4657 mov r7, sl 2c6: 433e orrs r6, r7 2c8: d003 beq.n 2d2 r |= 0x01; 2ca: 0006 movs r6, r0 2cc: 4326 orrs r6, r4 2ce: 0032 movs r2, r6 2d0: 002b movs r3, r5 if (r >= d) { 2d2: 9c00 ldr r4, [sp, #0] 2d4: 9d01 ldr r5, [sp, #4] 2d6: 429d cmp r5, r3 2d8: d8db bhi.n 292 2da: d1ce bne.n 27a 2dc: 4294 cmp r4, r2 2de: d8d8 bhi.n 292 2e0: e7cb b.n 27a 2e2: 9b03 ldr r3, [sp, #12] } } return q; } 2e4: 4658 mov r0, fp 2e6: 0019 movs r1, r3 2e8: b007 add sp, #28 2ea: bc3c pop {r2, r3, r4, r5} 2ec: 4690 mov r8, r2 2ee: 4699 mov r9, r3 2f0: 46a2 mov sl, r4 2f2: 46ab mov fp, r5 2f4: bdf0 pop {r4, r5, r6, r7, pc} 000002f6 <_sercom_get_sync_baud_val>: */ enum status_code _sercom_get_sync_baud_val( const uint32_t baudrate, const uint32_t external_clock, uint16_t *const baudvalue) { 2f6: b510 push {r4, lr} uint16_t baud_calculated = 0; uint32_t clock_value = external_clock; /* Check if baudrate is outside of valid range */ if (baudrate > (external_clock / 2)) { 2f8: 0849 lsrs r1, r1, #1 /* Return with error code */ return STATUS_ERR_BAUDRATE_UNAVAILABLE; 2fa: 2340 movs r3, #64 ; 0x40 2fc: 2400 movs r4, #0 if (baudrate > (external_clock / 2)) { 2fe: 4281 cmp r1, r0 300: d202 bcs.n 308 <_sercom_get_sync_baud_val+0x12> return STATUS_ERR_BAUDRATE_UNAVAILABLE; } else { *baudvalue = baud_calculated; return STATUS_OK; } } 302: 0018 movs r0, r3 304: bd10 pop {r4, pc} baud_calculated++; 306: 001c movs r4, r3 clock_value = clock_value - baudrate; 308: 1a09 subs r1, r1, r0 baud_calculated++; 30a: 1c63 adds r3, r4, #1 30c: b29b uxth r3, r3 while (clock_value >= baudrate) { 30e: 4288 cmp r0, r1 310: d9f9 bls.n 306 <_sercom_get_sync_baud_val+0x10> return STATUS_ERR_BAUDRATE_UNAVAILABLE; 312: 2340 movs r3, #64 ; 0x40 if (baud_calculated > 0xFF) { 314: 2cff cmp r4, #255 ; 0xff 316: d8f4 bhi.n 302 <_sercom_get_sync_baud_val+0xc> *baudvalue = baud_calculated; 318: 8014 strh r4, [r2, #0] return STATUS_OK; 31a: 2300 movs r3, #0 31c: e7f1 b.n 302 <_sercom_get_sync_baud_val+0xc> ... 00000320 <_sercom_get_async_baud_val>: const uint32_t baudrate, const uint32_t peripheral_clock, uint16_t *const baudval, enum sercom_asynchronous_operation_mode mode, enum sercom_asynchronous_sample_num sample_num) { 320: b5f0 push {r4, r5, r6, r7, lr} 322: b083 sub sp, #12 324: 000f movs r7, r1 326: 0016 movs r6, r2 328: aa08 add r2, sp, #32 32a: 7811 ldrb r1, [r2, #0] uint8_t baud_fp; uint32_t baud_int = 0; uint64_t temp1; /* Check if the baudrate is outside of valid range */ if ((baudrate * sample_num) > peripheral_clock) { 32c: 0004 movs r4, r0 32e: 434c muls r4, r1 /* Return with error code */ return STATUS_ERR_BAUDRATE_UNAVAILABLE; 330: 2240 movs r2, #64 ; 0x40 if ((baudrate * sample_num) > peripheral_clock) { 332: 42bc cmp r4, r7 334: d902 bls.n 33c <_sercom_get_async_baud_val+0x1c> baud_calculated = baud_int | (baud_fp << 13); } *baudval = baud_calculated; return STATUS_OK; } 336: 0010 movs r0, r2 338: b003 add sp, #12 33a: bdf0 pop {r4, r5, r6, r7, pc} if(mode == SERCOM_ASYNC_OPERATION_MODE_ARITHMETIC) { 33c: 2b00 cmp r3, #0 33e: d114 bne.n 36a <_sercom_get_async_baud_val+0x4a> temp1 = ((sample_num * (uint64_t)baudrate) << SHIFT); 340: 0002 movs r2, r0 342: 0008 movs r0, r1 344: 2100 movs r1, #0 346: 4c19 ldr r4, [pc, #100] ; (3ac <_sercom_get_async_baud_val+0x8c>) 348: 47a0 blx r4 34a: 0001 movs r1, r0 ratio = long_division(temp1, peripheral_clock); 34c: 003a movs r2, r7 34e: 2300 movs r3, #0 350: 2000 movs r0, #0 352: 4c17 ldr r4, [pc, #92] ; (3b0 <_sercom_get_async_baud_val+0x90>) 354: 47a0 blx r4 scale = ((uint64_t)1 << SHIFT) - ratio; 356: 2200 movs r2, #0 358: 2301 movs r3, #1 35a: 1a12 subs r2, r2, r0 35c: 418b sbcs r3, r1 baud_calculated = (65536 * scale) >> SHIFT; 35e: 0c12 lsrs r2, r2, #16 360: 041b lsls r3, r3, #16 362: 431a orrs r2, r3 *baudval = baud_calculated; 364: 8032 strh r2, [r6, #0] return STATUS_OK; 366: 2200 movs r2, #0 368: e7e5 b.n 336 <_sercom_get_async_baud_val+0x16> uint64_t baud_calculated = 0; 36a: 2200 movs r2, #0 } else if(mode == SERCOM_ASYNC_OPERATION_MODE_FRACTIONAL) { 36c: 2b01 cmp r3, #1 36e: d1f9 bne.n 364 <_sercom_get_async_baud_val+0x44> temp1 = ((uint64_t)baudrate * sample_num); 370: 000a movs r2, r1 372: 2300 movs r3, #0 374: 2100 movs r1, #0 376: 4c0d ldr r4, [pc, #52] ; (3ac <_sercom_get_async_baud_val+0x8c>) 378: 47a0 blx r4 37a: 0002 movs r2, r0 37c: 000b movs r3, r1 37e: 9200 str r2, [sp, #0] 380: 9301 str r3, [sp, #4] baud_int = long_division( peripheral_clock, temp1); 382: 0038 movs r0, r7 384: 2100 movs r1, #0 386: 4c0a ldr r4, [pc, #40] ; (3b0 <_sercom_get_async_baud_val+0x90>) 388: 47a0 blx r4 38a: 0005 movs r5, r0 if(baud_int > BAUD_INT_MAX) { 38c: 2380 movs r3, #128 ; 0x80 38e: 019b lsls r3, r3, #6 return STATUS_ERR_BAUDRATE_UNAVAILABLE; 390: 2240 movs r2, #64 ; 0x40 if(baud_int > BAUD_INT_MAX) { 392: 4298 cmp r0, r3 394: d8cf bhi.n 336 <_sercom_get_async_baud_val+0x16> temp1 = long_division( 8 * (uint64_t)peripheral_clock, temp1); 396: 0f79 lsrs r1, r7, #29 398: 00f8 lsls r0, r7, #3 39a: 9a00 ldr r2, [sp, #0] 39c: 9b01 ldr r3, [sp, #4] 39e: 47a0 blx r4 baud_fp = temp1 - 8 * baud_int; 3a0: 00ea lsls r2, r5, #3 3a2: 1a82 subs r2, r0, r2 baud_calculated = baud_int | (baud_fp << 13); 3a4: b2d2 uxtb r2, r2 3a6: 0352 lsls r2, r2, #13 3a8: 432a orrs r2, r5 3aa: e7db b.n 364 <_sercom_get_async_baud_val+0x44> 3ac: 00017bad .word 0x00017bad 3b0: 0000023d .word 0x0000023d 000003b4 : * forced. */ enum status_code sercom_set_gclk_generator( const enum gclk_generator generator_source, const bool force_change) { 3b4: b510 push {r4, lr} 3b6: b082 sub sp, #8 3b8: 0004 movs r4, r0 /* Check if valid option */ if (!_sercom_config.generator_is_set || force_change) { 3ba: 4b0e ldr r3, [pc, #56] ; (3f4 ) 3bc: 781b ldrb r3, [r3, #0] 3be: 2b00 cmp r3, #0 3c0: d007 beq.n 3d2 3c2: 2900 cmp r1, #0 3c4: d105 bne.n 3d2 /* Save config */ _sercom_config.generator_source = generator_source; _sercom_config.generator_is_set = true; return STATUS_OK; } else if (generator_source == _sercom_config.generator_source) { 3c6: 4b0b ldr r3, [pc, #44] ; (3f4 ) 3c8: 785b ldrb r3, [r3, #1] 3ca: 4283 cmp r3, r0 3cc: d010 beq.n 3f0 /* Return status OK if same config */ return STATUS_OK; } /* Return invalid config to already initialized GCLK */ return STATUS_ERR_ALREADY_INITIALIZED; 3ce: 201d movs r0, #29 3d0: e00c b.n 3ec gclk_chan_conf.source_generator = generator_source; 3d2: a901 add r1, sp, #4 3d4: 700c strb r4, [r1, #0] system_gclk_chan_set_config(SERCOM_GCLK_ID, &gclk_chan_conf); 3d6: 2013 movs r0, #19 3d8: 4b07 ldr r3, [pc, #28] ; (3f8 ) 3da: 4798 blx r3 system_gclk_chan_enable(SERCOM_GCLK_ID); 3dc: 2013 movs r0, #19 3de: 4b07 ldr r3, [pc, #28] ; (3fc ) 3e0: 4798 blx r3 _sercom_config.generator_source = generator_source; 3e2: 4b04 ldr r3, [pc, #16] ; (3f4 ) 3e4: 705c strb r4, [r3, #1] _sercom_config.generator_is_set = true; 3e6: 2201 movs r2, #1 3e8: 701a strb r2, [r3, #0] return STATUS_OK; 3ea: 2000 movs r0, #0 } 3ec: b002 add sp, #8 3ee: bd10 pop {r4, pc} return STATUS_OK; 3f0: 2000 movs r0, #0 3f2: e7fb b.n 3ec 3f4: 20002694 .word 0x20002694 3f8: 000011e5 .word 0x000011e5 3fc: 00001159 .word 0x00001159 00000400 <_sercom_get_default_pad>: */ uint32_t _sercom_get_default_pad( Sercom *const sercom_module, const uint8_t pad) { switch ((uintptr_t)sercom_module) { 400: 4b40 ldr r3, [pc, #256] ; (504 <_sercom_get_default_pad+0x104>) 402: 4298 cmp r0, r3 404: d031 beq.n 46a <_sercom_get_default_pad+0x6a> 406: d90a bls.n 41e <_sercom_get_default_pad+0x1e> 408: 4b3f ldr r3, [pc, #252] ; (508 <_sercom_get_default_pad+0x108>) 40a: 4298 cmp r0, r3 40c: d04d beq.n 4aa <_sercom_get_default_pad+0xaa> 40e: 4b3f ldr r3, [pc, #252] ; (50c <_sercom_get_default_pad+0x10c>) 410: 4298 cmp r0, r3 412: d05a beq.n 4ca <_sercom_get_default_pad+0xca> 414: 4b3e ldr r3, [pc, #248] ; (510 <_sercom_get_default_pad+0x110>) 416: 4298 cmp r0, r3 418: d037 beq.n 48a <_sercom_get_default_pad+0x8a> /* Auto-generate a lookup table for the default SERCOM pad defaults */ MREPEAT(SERCOM_INST_NUM, _SERCOM_PAD_DEFAULTS_CASE, pad) } Assert(false); return 0; 41a: 2000 movs r0, #0 } 41c: 4770 bx lr switch ((uintptr_t)sercom_module) { 41e: 4b3d ldr r3, [pc, #244] ; (514 <_sercom_get_default_pad+0x114>) 420: 4298 cmp r0, r3 422: d00c beq.n 43e <_sercom_get_default_pad+0x3e> 424: 4b3c ldr r3, [pc, #240] ; (518 <_sercom_get_default_pad+0x118>) 426: 4298 cmp r0, r3 428: d1f7 bne.n 41a <_sercom_get_default_pad+0x1a> MREPEAT(SERCOM_INST_NUM, _SERCOM_PAD_DEFAULTS_CASE, pad) 42a: 2901 cmp r1, #1 42c: d017 beq.n 45e <_sercom_get_default_pad+0x5e> 42e: 2900 cmp r1, #0 430: d05d beq.n 4ee <_sercom_get_default_pad+0xee> 432: 2902 cmp r1, #2 434: d015 beq.n 462 <_sercom_get_default_pad+0x62> 436: 2903 cmp r1, #3 438: d015 beq.n 466 <_sercom_get_default_pad+0x66> return 0; 43a: 2000 movs r0, #0 43c: e7ee b.n 41c <_sercom_get_default_pad+0x1c> MREPEAT(SERCOM_INST_NUM, _SERCOM_PAD_DEFAULTS_CASE, pad) 43e: 2901 cmp r1, #1 440: d007 beq.n 452 <_sercom_get_default_pad+0x52> 442: 2900 cmp r1, #0 444: d051 beq.n 4ea <_sercom_get_default_pad+0xea> 446: 2902 cmp r1, #2 448: d005 beq.n 456 <_sercom_get_default_pad+0x56> 44a: 2903 cmp r1, #3 44c: d005 beq.n 45a <_sercom_get_default_pad+0x5a> return 0; 44e: 2000 movs r0, #0 450: e7e4 b.n 41c <_sercom_get_default_pad+0x1c> MREPEAT(SERCOM_INST_NUM, _SERCOM_PAD_DEFAULTS_CASE, pad) 452: 4832 ldr r0, [pc, #200] ; (51c <_sercom_get_default_pad+0x11c>) 454: e7e2 b.n 41c <_sercom_get_default_pad+0x1c> 456: 4832 ldr r0, [pc, #200] ; (520 <_sercom_get_default_pad+0x120>) 458: e7e0 b.n 41c <_sercom_get_default_pad+0x1c> 45a: 4832 ldr r0, [pc, #200] ; (524 <_sercom_get_default_pad+0x124>) 45c: e7de b.n 41c <_sercom_get_default_pad+0x1c> 45e: 4832 ldr r0, [pc, #200] ; (528 <_sercom_get_default_pad+0x128>) 460: e7dc b.n 41c <_sercom_get_default_pad+0x1c> 462: 4832 ldr r0, [pc, #200] ; (52c <_sercom_get_default_pad+0x12c>) 464: e7da b.n 41c <_sercom_get_default_pad+0x1c> 466: 4832 ldr r0, [pc, #200] ; (530 <_sercom_get_default_pad+0x130>) 468: e7d8 b.n 41c <_sercom_get_default_pad+0x1c> 46a: 2901 cmp r1, #1 46c: d007 beq.n 47e <_sercom_get_default_pad+0x7e> 46e: 2900 cmp r1, #0 470: d03f beq.n 4f2 <_sercom_get_default_pad+0xf2> 472: 2902 cmp r1, #2 474: d005 beq.n 482 <_sercom_get_default_pad+0x82> 476: 2903 cmp r1, #3 478: d005 beq.n 486 <_sercom_get_default_pad+0x86> return 0; 47a: 2000 movs r0, #0 47c: e7ce b.n 41c <_sercom_get_default_pad+0x1c> MREPEAT(SERCOM_INST_NUM, _SERCOM_PAD_DEFAULTS_CASE, pad) 47e: 482d ldr r0, [pc, #180] ; (534 <_sercom_get_default_pad+0x134>) 480: e7cc b.n 41c <_sercom_get_default_pad+0x1c> 482: 482d ldr r0, [pc, #180] ; (538 <_sercom_get_default_pad+0x138>) 484: e7ca b.n 41c <_sercom_get_default_pad+0x1c> 486: 482d ldr r0, [pc, #180] ; (53c <_sercom_get_default_pad+0x13c>) 488: e7c8 b.n 41c <_sercom_get_default_pad+0x1c> 48a: 2901 cmp r1, #1 48c: d007 beq.n 49e <_sercom_get_default_pad+0x9e> 48e: 2900 cmp r1, #0 490: d031 beq.n 4f6 <_sercom_get_default_pad+0xf6> 492: 2902 cmp r1, #2 494: d005 beq.n 4a2 <_sercom_get_default_pad+0xa2> 496: 2903 cmp r1, #3 498: d005 beq.n 4a6 <_sercom_get_default_pad+0xa6> return 0; 49a: 2000 movs r0, #0 49c: e7be b.n 41c <_sercom_get_default_pad+0x1c> MREPEAT(SERCOM_INST_NUM, _SERCOM_PAD_DEFAULTS_CASE, pad) 49e: 4828 ldr r0, [pc, #160] ; (540 <_sercom_get_default_pad+0x140>) 4a0: e7bc b.n 41c <_sercom_get_default_pad+0x1c> 4a2: 4828 ldr r0, [pc, #160] ; (544 <_sercom_get_default_pad+0x144>) 4a4: e7ba b.n 41c <_sercom_get_default_pad+0x1c> 4a6: 4828 ldr r0, [pc, #160] ; (548 <_sercom_get_default_pad+0x148>) 4a8: e7b8 b.n 41c <_sercom_get_default_pad+0x1c> 4aa: 2901 cmp r1, #1 4ac: d007 beq.n 4be <_sercom_get_default_pad+0xbe> 4ae: 2900 cmp r1, #0 4b0: d023 beq.n 4fa <_sercom_get_default_pad+0xfa> 4b2: 2902 cmp r1, #2 4b4: d005 beq.n 4c2 <_sercom_get_default_pad+0xc2> 4b6: 2903 cmp r1, #3 4b8: d005 beq.n 4c6 <_sercom_get_default_pad+0xc6> return 0; 4ba: 2000 movs r0, #0 4bc: e7ae b.n 41c <_sercom_get_default_pad+0x1c> MREPEAT(SERCOM_INST_NUM, _SERCOM_PAD_DEFAULTS_CASE, pad) 4be: 4823 ldr r0, [pc, #140] ; (54c <_sercom_get_default_pad+0x14c>) 4c0: e7ac b.n 41c <_sercom_get_default_pad+0x1c> 4c2: 4823 ldr r0, [pc, #140] ; (550 <_sercom_get_default_pad+0x150>) 4c4: e7aa b.n 41c <_sercom_get_default_pad+0x1c> 4c6: 4823 ldr r0, [pc, #140] ; (554 <_sercom_get_default_pad+0x154>) 4c8: e7a8 b.n 41c <_sercom_get_default_pad+0x1c> 4ca: 2901 cmp r1, #1 4cc: d007 beq.n 4de <_sercom_get_default_pad+0xde> 4ce: 2900 cmp r1, #0 4d0: d015 beq.n 4fe <_sercom_get_default_pad+0xfe> 4d2: 2902 cmp r1, #2 4d4: d005 beq.n 4e2 <_sercom_get_default_pad+0xe2> 4d6: 2903 cmp r1, #3 4d8: d005 beq.n 4e6 <_sercom_get_default_pad+0xe6> return 0; 4da: 2000 movs r0, #0 4dc: e79e b.n 41c <_sercom_get_default_pad+0x1c> MREPEAT(SERCOM_INST_NUM, _SERCOM_PAD_DEFAULTS_CASE, pad) 4de: 481e ldr r0, [pc, #120] ; (558 <_sercom_get_default_pad+0x158>) 4e0: e79c b.n 41c <_sercom_get_default_pad+0x1c> 4e2: 481e ldr r0, [pc, #120] ; (55c <_sercom_get_default_pad+0x15c>) 4e4: e79a b.n 41c <_sercom_get_default_pad+0x1c> 4e6: 481e ldr r0, [pc, #120] ; (560 <_sercom_get_default_pad+0x160>) 4e8: e798 b.n 41c <_sercom_get_default_pad+0x1c> 4ea: 481e ldr r0, [pc, #120] ; (564 <_sercom_get_default_pad+0x164>) 4ec: e796 b.n 41c <_sercom_get_default_pad+0x1c> 4ee: 2003 movs r0, #3 4f0: e794 b.n 41c <_sercom_get_default_pad+0x1c> 4f2: 481d ldr r0, [pc, #116] ; (568 <_sercom_get_default_pad+0x168>) 4f4: e792 b.n 41c <_sercom_get_default_pad+0x1c> 4f6: 481d ldr r0, [pc, #116] ; (56c <_sercom_get_default_pad+0x16c>) 4f8: e790 b.n 41c <_sercom_get_default_pad+0x1c> 4fa: 481d ldr r0, [pc, #116] ; (570 <_sercom_get_default_pad+0x170>) 4fc: e78e b.n 41c <_sercom_get_default_pad+0x1c> 4fe: 481d ldr r0, [pc, #116] ; (574 <_sercom_get_default_pad+0x174>) 500: e78c b.n 41c <_sercom_get_default_pad+0x1c> 502: 46c0 nop ; (mov r8, r8) 504: 42001000 .word 0x42001000 508: 42001800 .word 0x42001800 50c: 42001c00 .word 0x42001c00 510: 42001400 .word 0x42001400 514: 42000800 .word 0x42000800 518: 42000c00 .word 0x42000c00 51c: 00050003 .word 0x00050003 520: 00060003 .word 0x00060003 524: 00070003 .word 0x00070003 528: 00010003 .word 0x00010003 52c: 001e0003 .word 0x001e0003 530: 001f0003 .word 0x001f0003 534: 00090003 .word 0x00090003 538: 000a0003 .word 0x000a0003 53c: 000b0003 .word 0x000b0003 540: 00110003 .word 0x00110003 544: 00120003 .word 0x00120003 548: 00130003 .word 0x00130003 54c: 000d0003 .word 0x000d0003 550: 000e0003 .word 0x000e0003 554: 000f0003 .word 0x000f0003 558: 00170003 .word 0x00170003 55c: 00180003 .word 0x00180003 560: 00190003 .word 0x00190003 564: 00040003 .word 0x00040003 568: 00080003 .word 0x00080003 56c: 00100003 .word 0x00100003 570: 000c0003 .word 0x000c0003 574: 00160003 .word 0x00160003 00000578 <_sercom_get_sercom_inst_index>: * * \return Index of given instance. */ uint8_t _sercom_get_sercom_inst_index( Sercom *const sercom_instance) { 578: b530 push {r4, r5, lr} 57a: b087 sub sp, #28 /* Save all available SERCOM instances for compare */ Sercom *sercom_instances[SERCOM_INST_NUM] = SERCOM_INSTS; 57c: 4b0b ldr r3, [pc, #44] ; (5ac <_sercom_get_sercom_inst_index+0x34>) 57e: 466a mov r2, sp 580: cb32 ldmia r3!, {r1, r4, r5} 582: c232 stmia r2!, {r1, r4, r5} 584: cb32 ldmia r3!, {r1, r4, r5} 586: c232 stmia r2!, {r1, r4, r5} /* Find index for sercom instance */ for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { if ((uintptr_t)sercom_instance == (uintptr_t)sercom_instances[i]) { 588: 9b00 ldr r3, [sp, #0] 58a: 4283 cmp r3, r0 58c: d00b beq.n 5a6 <_sercom_get_sercom_inst_index+0x2e> 58e: 2301 movs r3, #1 590: 009a lsls r2, r3, #2 592: 4669 mov r1, sp 594: 5852 ldr r2, [r2, r1] 596: 4282 cmp r2, r0 598: d006 beq.n 5a8 <_sercom_get_sercom_inst_index+0x30> for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { 59a: 3301 adds r3, #1 59c: 2b06 cmp r3, #6 59e: d1f7 bne.n 590 <_sercom_get_sercom_inst_index+0x18> } } /* Invalid data given */ Assert(false); return 0; 5a0: 2000 movs r0, #0 } 5a2: b007 add sp, #28 5a4: bd30 pop {r4, r5, pc} for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { 5a6: 2300 movs r3, #0 return i; 5a8: b2d8 uxtb r0, r3 5aa: e7fa b.n 5a2 <_sercom_get_sercom_inst_index+0x2a> 5ac: 000186c4 .word 0x000186c4 000005b0 : */ enum status_code usart_init( struct usart_module *const module, Sercom *const hw, const struct usart_config *const config) { 5b0: b5f0 push {r4, r5, r6, r7, lr} 5b2: 46de mov lr, fp 5b4: 4657 mov r7, sl 5b6: 464e mov r6, r9 5b8: 4645 mov r5, r8 5ba: b5e0 push {r5, r6, r7, lr} 5bc: b091 sub sp, #68 ; 0x44 5be: 0005 movs r5, r0 5c0: 000c movs r4, r1 5c2: 0016 movs r6, r2 Assert(config); enum status_code status_code = STATUS_OK; /* Assign module pointer to software instance struct */ module->hw = hw; 5c4: 6029 str r1, [r5, #0] /* Get a pointer to the hardware module instance */ SercomUsart *const usart_hw = &(module->hw->USART); uint32_t sercom_index = _sercom_get_sercom_inst_index(module->hw); 5c6: 0008 movs r0, r1 5c8: 4bba ldr r3, [pc, #744] ; (8b4 ) 5ca: 4798 blx r3 5cc: 0002 movs r2, r0 #else pm_index = sercom_index + PM_APBCMASK_SERCOM0_Pos; gclk_index = sercom_index + SERCOM0_GCLK_ID_CORE; #endif if (usart_hw->CTRLA.reg & SERCOM_USART_CTRLA_SWRST) { 5ce: 6823 ldr r3, [r4, #0] /* The module is busy resetting itself */ return STATUS_BUSY; 5d0: 2005 movs r0, #5 if (usart_hw->CTRLA.reg & SERCOM_USART_CTRLA_SWRST) { 5d2: 07db lsls r3, r3, #31 5d4: d506 bpl.n 5e4 _sercom_set_handler(instance_index, _usart_interrupt_handler); _sercom_instances[instance_index] = module; #endif return status_code; } 5d6: b011 add sp, #68 ; 0x44 5d8: bc3c pop {r2, r3, r4, r5} 5da: 4690 mov r8, r2 5dc: 4699 mov r9, r3 5de: 46a2 mov sl, r4 5e0: 46ab mov fp, r5 5e2: bdf0 pop {r4, r5, r6, r7, pc} if (usart_hw->CTRLA.reg & SERCOM_USART_CTRLA_ENABLE) { 5e4: 6823 ldr r3, [r4, #0] return STATUS_ERR_DENIED; 5e6: 3017 adds r0, #23 if (usart_hw->CTRLA.reg & SERCOM_USART_CTRLA_ENABLE) { 5e8: 079b lsls r3, r3, #30 5ea: d4f4 bmi.n 5d6 case SYSTEM_CLOCK_APB_APBB: PM->APBBMASK.reg |= mask; break; case SYSTEM_CLOCK_APB_APBC: PM->APBCMASK.reg |= mask; 5ec: 49b2 ldr r1, [pc, #712] ; (8b8 ) 5ee: 6a08 ldr r0, [r1, #32] pm_index = sercom_index + PM_APBCMASK_SERCOM0_Pos; 5f0: 1c97 adds r7, r2, #2 system_apb_clock_set_mask(SYSTEM_CLOCK_APB_APBC, 1 << pm_index); 5f2: 2301 movs r3, #1 5f4: 40bb lsls r3, r7 5f6: 4303 orrs r3, r0 5f8: 620b str r3, [r1, #32] gclk_chan_conf.source_generator = config->generator_source; 5fa: a90f add r1, sp, #60 ; 0x3c 5fc: 272d movs r7, #45 ; 0x2d 5fe: 5df3 ldrb r3, [r6, r7] 600: 700b strb r3, [r1, #0] gclk_index = sercom_index + SERCOM0_GCLK_ID_CORE; 602: 3214 adds r2, #20 system_gclk_chan_set_config(gclk_index, &gclk_chan_conf); 604: b2d3 uxtb r3, r2 606: 9302 str r3, [sp, #8] 608: 0018 movs r0, r3 60a: 4bac ldr r3, [pc, #688] ; (8bc ) 60c: 4798 blx r3 system_gclk_chan_enable(gclk_index); 60e: 9802 ldr r0, [sp, #8] 610: 4bab ldr r3, [pc, #684] ; (8c0 ) 612: 4798 blx r3 sercom_set_gclk_generator(config->generator_source, false); 614: 5df0 ldrb r0, [r6, r7] 616: 2100 movs r1, #0 618: 4baa ldr r3, [pc, #680] ; (8c4 ) 61a: 4798 blx r3 module->character_size = config->character_size; 61c: 7af3 ldrb r3, [r6, #11] 61e: 716b strb r3, [r5, #5] module->receiver_enabled = config->receiver_enable; 620: 2324 movs r3, #36 ; 0x24 622: 5cf3 ldrb r3, [r6, r3] 624: 71ab strb r3, [r5, #6] module->transmitter_enabled = config->transmitter_enable; 626: 2325 movs r3, #37 ; 0x25 628: 5cf3 ldrb r3, [r6, r3] 62a: 71eb strb r3, [r5, #7] module->lin_slave_enabled = config->lin_slave_enable; 62c: 7ef3 ldrb r3, [r6, #27] 62e: 722b strb r3, [r5, #8] module->start_frame_detection_enabled = config->start_frame_detection_enable; 630: 7f33 ldrb r3, [r6, #28] 632: 726b strb r3, [r5, #9] SercomUsart *const usart_hw = &(module->hw->USART); 634: 682b ldr r3, [r5, #0] 636: 4698 mov r8, r3 uint32_t sercom_index = _sercom_get_sercom_inst_index(module->hw); 638: 0018 movs r0, r3 63a: 4b9e ldr r3, [pc, #632] ; (8b4 ) 63c: 4798 blx r3 gclk_index = sercom_index + SERCOM0_GCLK_ID_CORE; 63e: 3014 adds r0, #20 uint16_t baud = 0; 640: 2200 movs r2, #0 642: 230e movs r3, #14 644: a906 add r1, sp, #24 646: 468c mov ip, r1 648: 4463 add r3, ip 64a: 801a strh r2, [r3, #0] switch (config->sample_rate) { 64c: 8a32 ldrh r2, [r6, #16] 64e: 9202 str r2, [sp, #8] 650: 2380 movs r3, #128 ; 0x80 652: 01db lsls r3, r3, #7 654: 429a cmp r2, r3 656: d100 bne.n 65a 658: e09a b.n 790 65a: d90f bls.n 67c 65c: 23c0 movs r3, #192 ; 0xc0 65e: 01db lsls r3, r3, #7 660: 9a02 ldr r2, [sp, #8] 662: 429a cmp r2, r3 664: d100 bne.n 668 666: e08e b.n 786 668: 2380 movs r3, #128 ; 0x80 66a: 021b lsls r3, r3, #8 66c: 429a cmp r2, r3 66e: d000 beq.n 672 670: e11b b.n 8aa sample_num = SERCOM_ASYNC_SAMPLE_NUM_3; 672: 2303 movs r3, #3 674: 9306 str r3, [sp, #24] mode = SERCOM_ASYNC_OPERATION_MODE_ARITHMETIC; 676: 2300 movs r3, #0 678: 9307 str r3, [sp, #28] 67a: e008 b.n 68e switch (config->sample_rate) { 67c: 2380 movs r3, #128 ; 0x80 67e: 019b lsls r3, r3, #6 680: 429a cmp r2, r3 682: d000 beq.n 686 684: e111 b.n 8aa sample_num = SERCOM_ASYNC_SAMPLE_NUM_16; 686: 2310 movs r3, #16 688: 9306 str r3, [sp, #24] mode = SERCOM_ASYNC_OPERATION_MODE_FRACTIONAL; 68a: 3b0f subs r3, #15 68c: 9307 str r3, [sp, #28] ctrla = (uint32_t)config->data_order | 68e: 6833 ldr r3, [r6, #0] 690: 9305 str r3, [sp, #20] (uint32_t)config->mux_setting | 692: 68f3 ldr r3, [r6, #12] 694: 469b mov fp, r3 config->sample_adjustment | 696: 6973 ldr r3, [r6, #20] 698: 9303 str r3, [sp, #12] (config->immediate_buffer_overflow_notification << SERCOM_USART_CTRLA_IBON_Pos) | 69a: 7e33 ldrb r3, [r6, #24] 69c: 9304 str r3, [sp, #16] (config->clock_polarity_inverted << SERCOM_USART_CTRLA_CPOL_Pos); 69e: 2326 movs r3, #38 ; 0x26 6a0: 5cf3 ldrb r3, [r6, r3] 6a2: 469a mov sl, r3 transfer_mode = (uint32_t)config->transfer_mode; 6a4: 6873 ldr r3, [r6, #4] 6a6: 4699 mov r9, r3 switch (transfer_mode) 6a8: 2b00 cmp r3, #0 6aa: d100 bne.n 6ae 6ac: e09c b.n 7e8 6ae: 2380 movs r3, #128 ; 0x80 6b0: 055b lsls r3, r3, #21 6b2: 4599 cmp r9, r3 6b4: d100 bne.n 6b8 6b6: e080 b.n 7ba if(config->encoding_format_enable) { 6b8: 7e73 ldrb r3, [r6, #25] 6ba: 2b00 cmp r3, #0 6bc: d002 beq.n 6c4 usart_hw->RXPL.reg = config->receive_pulse_length; 6be: 7eb3 ldrb r3, [r6, #26] 6c0: 4642 mov r2, r8 6c2: 7393 strb r3, [r2, #14] usart_hw->BAUD.reg = baud; 6c4: 230e movs r3, #14 6c6: aa06 add r2, sp, #24 6c8: 4694 mov ip, r2 6ca: 4463 add r3, ip 6cc: 881b ldrh r3, [r3, #0] 6ce: 4642 mov r2, r8 6d0: 8193 strh r3, [r2, #12] ctrla |= transfer_mode; 6d2: 9b05 ldr r3, [sp, #20] 6d4: 465a mov r2, fp 6d6: 4313 orrs r3, r2 6d8: 9a03 ldr r2, [sp, #12] 6da: 4313 orrs r3, r2 6dc: 464a mov r2, r9 6de: 4313 orrs r3, r2 6e0: 9f02 ldr r7, [sp, #8] 6e2: 431f orrs r7, r3 (config->immediate_buffer_overflow_notification << SERCOM_USART_CTRLA_IBON_Pos) | 6e4: 9b04 ldr r3, [sp, #16] 6e6: 021b lsls r3, r3, #8 ctrla |= transfer_mode; 6e8: 431f orrs r7, r3 (config->clock_polarity_inverted << SERCOM_USART_CTRLA_CPOL_Pos); 6ea: 4653 mov r3, sl 6ec: 075b lsls r3, r3, #29 ctrla |= transfer_mode; 6ee: 431f orrs r7, r3 if (config->use_external_clock == false) { 6f0: 2327 movs r3, #39 ; 0x27 6f2: 5cf3 ldrb r3, [r6, r3] 6f4: 2b00 cmp r3, #0 6f6: d101 bne.n 6fc ctrla |= SERCOM_USART_CTRLA_MODE(0x1); 6f8: 3304 adds r3, #4 6fa: 431f orrs r7, r3 (config->encoding_format_enable << SERCOM_USART_CTRLB_ENC_Pos) | 6fc: 7e73 ldrb r3, [r6, #25] 6fe: 029b lsls r3, r3, #10 (config->start_frame_detection_enable << SERCOM_USART_CTRLB_SFDE_Pos) | 700: 7f32 ldrb r2, [r6, #28] 702: 0252 lsls r2, r2, #9 (config->encoding_format_enable << SERCOM_USART_CTRLB_ENC_Pos) | 704: 4313 orrs r3, r2 (config->collision_detection_enable << SERCOM_USART_CTRLB_COLDEN_Pos) | 706: 7f72 ldrb r2, [r6, #29] 708: 0212 lsls r2, r2, #8 (config->start_frame_detection_enable << SERCOM_USART_CTRLB_SFDE_Pos) | 70a: 4313 orrs r3, r2 (config->receiver_enable << SERCOM_USART_CTRLB_RXEN_Pos) | 70c: 2224 movs r2, #36 ; 0x24 70e: 5cb2 ldrb r2, [r6, r2] 710: 0452 lsls r2, r2, #17 (config->collision_detection_enable << SERCOM_USART_CTRLB_COLDEN_Pos) | 712: 4313 orrs r3, r2 (config->transmitter_enable << SERCOM_USART_CTRLB_TXEN_Pos); 714: 2225 movs r2, #37 ; 0x25 716: 5cb2 ldrb r2, [r6, r2] 718: 0412 lsls r2, r2, #16 (config->receiver_enable << SERCOM_USART_CTRLB_RXEN_Pos) | 71a: 4313 orrs r3, r2 ctrlb |= (uint32_t)config->character_size; 71c: 7ab1 ldrb r1, [r6, #10] 71e: 7af2 ldrb r2, [r6, #11] 720: 4311 orrs r1, r2 722: 4319 orrs r1, r3 if (config->parity != USART_PARITY_NONE) { 724: 8933 ldrh r3, [r6, #8] 726: 2bff cmp r3, #255 ; 0xff 728: d100 bne.n 72c 72a: e081 b.n 830 ctrla |= SERCOM_USART_CTRLA_FORM(1); 72c: 2280 movs r2, #128 ; 0x80 72e: 0452 lsls r2, r2, #17 730: 4317 orrs r7, r2 ctrlb |= config->parity; 732: 4319 orrs r1, r3 if (config->run_in_standby || system_is_debugger_present()) { 734: 232c movs r3, #44 ; 0x2c 736: 5cf3 ldrb r3, [r6, r3] 738: 2b00 cmp r3, #0 73a: d103 bne.n 744 * \retval false Debugger is not connected to the system * */ static inline bool system_is_debugger_present(void) { return DSU->STATUSB.reg & DSU_STATUSB_DBGPRES; 73c: 4b62 ldr r3, [pc, #392] ; (8c8 ) 73e: 789b ldrb r3, [r3, #2] 740: 079b lsls r3, r3, #30 742: d501 bpl.n 748 ctrla |= SERCOM_USART_CTRLA_RUNSTDBY; 744: 2380 movs r3, #128 ; 0x80 746: 431f orrs r7, r3 { /* Sanity check arguments */ Assert(module); Assert(module->hw); SercomUsart *const usart_hw = &(module->hw->USART); 748: 682a ldr r2, [r5, #0] #ifdef FEATURE_USART_SYNC_SCHEME_V2 return (usart_hw->SYNCBUSY.reg); 74a: 69d3 ldr r3, [r2, #28] const struct usart_module *const module) { /* Sanity check */ Assert(module); while (usart_is_syncing(module)) { 74c: 2b00 cmp r3, #0 74e: d1fc bne.n 74a usart_hw->CTRLB.reg = ctrlb; 750: 4643 mov r3, r8 752: 6059 str r1, [r3, #4] SercomUsart *const usart_hw = &(module->hw->USART); 754: 682a ldr r2, [r5, #0] return (usart_hw->SYNCBUSY.reg); 756: 69d3 ldr r3, [r2, #28] while (usart_is_syncing(module)) { 758: 2b00 cmp r3, #0 75a: d1fc bne.n 756 usart_hw->CTRLA.reg = ctrla; 75c: 4643 mov r3, r8 75e: 601f str r7, [r3, #0] { /* Sanity check arguments */ Assert(config); /* Default configuration values */ config->mux_position = SYSTEM_PINMUX_GPIO; 760: ab0e add r3, sp, #56 ; 0x38 762: 2280 movs r2, #128 ; 0x80 764: 701a strb r2, [r3, #0] config->direction = SYSTEM_PINMUX_PIN_DIR_INPUT; 766: 2200 movs r2, #0 768: 705a strb r2, [r3, #1] config->input_pull = SYSTEM_PINMUX_PIN_PULL_UP; config->powersave = false; 76a: 70da strb r2, [r3, #3] pin_conf.input_pull = SYSTEM_PINMUX_PIN_PULL_NONE; 76c: 709a strb r2, [r3, #2] uint32_t pad_pinmuxes[] = { 76e: 6b33 ldr r3, [r6, #48] ; 0x30 770: 930a str r3, [sp, #40] ; 0x28 772: 6b73 ldr r3, [r6, #52] ; 0x34 774: 930b str r3, [sp, #44] ; 0x2c 776: 6bb3 ldr r3, [r6, #56] ; 0x38 778: 930c str r3, [sp, #48] ; 0x30 77a: 6bf3 ldr r3, [r6, #60] ; 0x3c 77c: 9302 str r3, [sp, #8] 77e: 930d str r3, [sp, #52] ; 0x34 780: 2700 movs r7, #0 uint32_t current_pinmux = pad_pinmuxes[pad]; 782: ae0a add r6, sp, #40 ; 0x28 784: e063 b.n 84e sample_num = SERCOM_ASYNC_SAMPLE_NUM_8; 786: 2308 movs r3, #8 788: 9306 str r3, [sp, #24] mode = SERCOM_ASYNC_OPERATION_MODE_FRACTIONAL; 78a: 3b07 subs r3, #7 78c: 9307 str r3, [sp, #28] 78e: e77e b.n 68e ctrla = (uint32_t)config->data_order | 790: 6833 ldr r3, [r6, #0] 792: 9305 str r3, [sp, #20] (uint32_t)config->mux_setting | 794: 68f3 ldr r3, [r6, #12] 796: 469b mov fp, r3 config->sample_adjustment | 798: 6973 ldr r3, [r6, #20] 79a: 9303 str r3, [sp, #12] (config->immediate_buffer_overflow_notification << SERCOM_USART_CTRLA_IBON_Pos) | 79c: 7e33 ldrb r3, [r6, #24] 79e: 9304 str r3, [sp, #16] (config->clock_polarity_inverted << SERCOM_USART_CTRLA_CPOL_Pos); 7a0: 2326 movs r3, #38 ; 0x26 7a2: 5cf3 ldrb r3, [r6, r3] 7a4: 469a mov sl, r3 transfer_mode = (uint32_t)config->transfer_mode; 7a6: 6873 ldr r3, [r6, #4] 7a8: 4699 mov r9, r3 switch (transfer_mode) 7aa: 2b00 cmp r3, #0 7ac: d018 beq.n 7e0 7ae: 2380 movs r3, #128 ; 0x80 7b0: 055b lsls r3, r3, #21 7b2: 4599 cmp r9, r3 7b4: d001 beq.n 7ba enum status_code status_code = STATUS_OK; 7b6: 2000 movs r0, #0 7b8: e025 b.n 806 if (!config->use_external_clock) { 7ba: 2327 movs r3, #39 ; 0x27 7bc: 5cf3 ldrb r3, [r6, r3] 7be: 2b00 cmp r3, #0 7c0: d000 beq.n 7c4 7c2: e779 b.n 6b8 status_code = _sercom_get_sync_baud_val(config->baudrate, 7c4: 6a33 ldr r3, [r6, #32] 7c6: 001f movs r7, r3 7c8: b2c0 uxtb r0, r0 7ca: 4b40 ldr r3, [pc, #256] ; (8cc ) 7cc: 4798 blx r3 7ce: 0001 movs r1, r0 7d0: 220e movs r2, #14 7d2: ab06 add r3, sp, #24 7d4: 469c mov ip, r3 7d6: 4462 add r2, ip 7d8: 0038 movs r0, r7 7da: 4b3d ldr r3, [pc, #244] ; (8d0 ) 7dc: 4798 blx r3 7de: e012 b.n 806 sample_num = SERCOM_ASYNC_SAMPLE_NUM_8; 7e0: 2308 movs r3, #8 7e2: 9306 str r3, [sp, #24] mode = SERCOM_ASYNC_OPERATION_MODE_ARITHMETIC; 7e4: 2300 movs r3, #0 7e6: 9307 str r3, [sp, #28] if (config->use_external_clock) { 7e8: 2327 movs r3, #39 ; 0x27 7ea: 5cf3 ldrb r3, [r6, r3] 7ec: 2b00 cmp r3, #0 7ee: d00e beq.n 80e status_code = 7f0: 9b06 ldr r3, [sp, #24] 7f2: 9300 str r3, [sp, #0] 7f4: 9b07 ldr r3, [sp, #28] 7f6: 220e movs r2, #14 7f8: a906 add r1, sp, #24 7fa: 468c mov ip, r1 7fc: 4462 add r2, ip 7fe: 6ab1 ldr r1, [r6, #40] ; 0x28 800: 6a30 ldr r0, [r6, #32] 802: 4f34 ldr r7, [pc, #208] ; (8d4 ) 804: 47b8 blx r7 if (status_code != STATUS_OK) { 806: 2800 cmp r0, #0 808: d000 beq.n 80c 80a: e6e4 b.n 5d6 80c: e754 b.n 6b8 _sercom_get_async_baud_val(config->baudrate, 80e: 6a33 ldr r3, [r6, #32] 810: 001f movs r7, r3 812: b2c0 uxtb r0, r0 814: 4b2d ldr r3, [pc, #180] ; (8cc ) 816: 4798 blx r3 818: 0001 movs r1, r0 status_code = 81a: 9b06 ldr r3, [sp, #24] 81c: 9300 str r3, [sp, #0] 81e: 9b07 ldr r3, [sp, #28] 820: 220e movs r2, #14 822: a806 add r0, sp, #24 824: 4684 mov ip, r0 826: 4462 add r2, ip 828: 0038 movs r0, r7 82a: 4f2a ldr r7, [pc, #168] ; (8d4 ) 82c: 47b8 blx r7 82e: e7ea b.n 806 if(config->lin_slave_enable) { 830: 7ef3 ldrb r3, [r6, #27] 832: 2b00 cmp r3, #0 834: d100 bne.n 838 836: e77d b.n 734 ctrla |= SERCOM_USART_CTRLA_FORM(0x4); 838: 2380 movs r3, #128 ; 0x80 83a: 04db lsls r3, r3, #19 83c: 431f orrs r7, r3 83e: e779 b.n 734 current_pinmux = _sercom_get_default_pad(hw, pad); 840: 0020 movs r0, r4 842: 4b25 ldr r3, [pc, #148] ; (8d8 ) 844: 4798 blx r3 846: e007 b.n 858 848: 3701 adds r7, #1 for (uint8_t pad = 0; pad < 4; pad++) { 84a: 2f04 cmp r7, #4 84c: d00d beq.n 86a 84e: b2f9 uxtb r1, r7 uint32_t current_pinmux = pad_pinmuxes[pad]; 850: 00bb lsls r3, r7, #2 852: 5998 ldr r0, [r3, r6] if (current_pinmux == PINMUX_DEFAULT) { 854: 2800 cmp r0, #0 856: d0f3 beq.n 840 if (current_pinmux != PINMUX_UNUSED) { 858: 1c43 adds r3, r0, #1 85a: d0f5 beq.n 848 pin_conf.mux_position = current_pinmux & 0xFFFF; 85c: a90e add r1, sp, #56 ; 0x38 85e: 7008 strb r0, [r1, #0] system_pinmux_pin_set_config(current_pinmux >> 16, &pin_conf); 860: 0c00 lsrs r0, r0, #16 862: b2c0 uxtb r0, r0 864: 4b1d ldr r3, [pc, #116] ; (8dc ) 866: 4798 blx r3 868: e7ee b.n 848 module->callback[i] = NULL; 86a: 2300 movs r3, #0 86c: 60eb str r3, [r5, #12] 86e: 612b str r3, [r5, #16] 870: 616b str r3, [r5, #20] 872: 61ab str r3, [r5, #24] 874: 61eb str r3, [r5, #28] 876: 622b str r3, [r5, #32] module->tx_buffer_ptr = NULL; 878: 62ab str r3, [r5, #40] ; 0x28 module->rx_buffer_ptr = NULL; 87a: 626b str r3, [r5, #36] ; 0x24 module->remaining_tx_buffer_length = 0x0000; 87c: 2200 movs r2, #0 87e: 85eb strh r3, [r5, #46] ; 0x2e module->remaining_rx_buffer_length = 0x0000; 880: 85ab strh r3, [r5, #44] ; 0x2c module->callback_reg_mask = 0x00; 882: 3330 adds r3, #48 ; 0x30 884: 54ea strb r2, [r5, r3] module->callback_enable_mask = 0x00; 886: 3301 adds r3, #1 888: 54ea strb r2, [r5, r3] module->rx_status = STATUS_OK; 88a: 3301 adds r3, #1 88c: 54ea strb r2, [r5, r3] module->tx_status = STATUS_OK; 88e: 3301 adds r3, #1 890: 54ea strb r2, [r5, r3] uint8_t instance_index = _sercom_get_sercom_inst_index(module->hw); 892: 6828 ldr r0, [r5, #0] 894: 4b07 ldr r3, [pc, #28] ; (8b4 ) 896: 4798 blx r3 898: 0004 movs r4, r0 _sercom_set_handler(instance_index, _usart_interrupt_handler); 89a: 4911 ldr r1, [pc, #68] ; (8e0 ) 89c: 4b11 ldr r3, [pc, #68] ; (8e4 ) 89e: 4798 blx r3 _sercom_instances[instance_index] = module; 8a0: 00a4 lsls r4, r4, #2 8a2: 4b11 ldr r3, [pc, #68] ; (8e8 ) 8a4: 50e5 str r5, [r4, r3] return status_code; 8a6: 2000 movs r0, #0 8a8: e695 b.n 5d6 enum sercom_asynchronous_sample_num sample_num = SERCOM_ASYNC_SAMPLE_NUM_16; 8aa: 2310 movs r3, #16 8ac: 9306 str r3, [sp, #24] enum sercom_asynchronous_operation_mode mode = SERCOM_ASYNC_OPERATION_MODE_ARITHMETIC; 8ae: 2300 movs r3, #0 8b0: 9307 str r3, [sp, #28] 8b2: e6ec b.n 68e 8b4: 00000579 .word 0x00000579 8b8: 40000400 .word 0x40000400 8bc: 000011e5 .word 0x000011e5 8c0: 00001159 .word 0x00001159 8c4: 000003b5 .word 0x000003b5 8c8: 41002000 .word 0x41002000 8cc: 00001201 .word 0x00001201 8d0: 000002f7 .word 0x000002f7 8d4: 00000321 .word 0x00000321 8d8: 00000401 .word 0x00000401 8dc: 000012dd .word 0x000012dd 8e0: 00000a49 .word 0x00000a49 8e4: 00000be1 .word 0x00000be1 8e8: 20004c94 .word 0x20004c94 000008ec : /* Get a pointer to the hardware module instance */ SercomUsart *const usart_hw = &(module->hw->USART); /* Check that the transmitter is enabled */ if (!(module->transmitter_enabled)) { 8ec: 79c2 ldrb r2, [r0, #7] return STATUS_ERR_DENIED; 8ee: 231c movs r3, #28 if (!(module->transmitter_enabled)) { 8f0: 2a00 cmp r2, #0 8f2: d101 bne.n 8f8 while (!(usart_hw->INTFLAG.reg & SERCOM_USART_INTFLAG_TXC)) { /* Wait until data is sent */ } return STATUS_OK; } 8f4: 0018 movs r0, r3 8f6: 4770 bx lr if (module->remaining_tx_buffer_length > 0) { 8f8: 8dc2 ldrh r2, [r0, #46] ; 0x2e 8fa: b292 uxth r2, r2 return STATUS_BUSY; 8fc: 3b17 subs r3, #23 if (module->remaining_tx_buffer_length > 0) { 8fe: 2a00 cmp r2, #0 900: d1f8 bne.n 8f4 SercomUsart *const usart_hw = &(module->hw->USART); 902: 6802 ldr r2, [r0, #0] usart_hw->DATA.reg = tx_data; 904: 8511 strh r1, [r2, #40] ; 0x28 while (!(usart_hw->INTFLAG.reg & SERCOM_USART_INTFLAG_TXC)) { 906: 2102 movs r1, #2 908: 7e13 ldrb r3, [r2, #24] 90a: 420b tst r3, r1 90c: d0fc beq.n 908 return STATUS_OK; 90e: 2300 movs r3, #0 910: e7f0 b.n 8f4 ... 00000914 : */ enum status_code usart_write_buffer_wait( struct usart_module *const module, const uint8_t *tx_data, uint16_t length) { 914: b5f0 push {r4, r5, r6, r7, lr} 916: 46ce mov lr, r9 918: 4647 mov r7, r8 91a: b580 push {r7, lr} 91c: b083 sub sp, #12 91e: 0005 movs r5, r0 920: 9101 str r1, [sp, #4] Assert(module); Assert(module->hw); /* Check if the buffer length is valid */ if (length == 0) { return STATUS_ERR_INVALID_ARG; 922: 2017 movs r0, #23 if (length == 0) { 924: 2a00 cmp r2, #0 926: d104 bne.n 932 return STATUS_ERR_TIMEOUT; } } return STATUS_OK; } 928: b003 add sp, #12 92a: bc0c pop {r2, r3} 92c: 4690 mov r8, r2 92e: 4699 mov r9, r3 930: bdf0 pop {r4, r5, r6, r7, pc} if (!(module->transmitter_enabled)) { 932: 79eb ldrb r3, [r5, #7] return STATUS_ERR_DENIED; 934: 3005 adds r0, #5 if (!(module->transmitter_enabled)) { 936: 2b00 cmp r3, #0 938: d0f6 beq.n 928 SercomUsart *const usart_hw = &(module->hw->USART); 93a: 682c ldr r4, [r5, #0] while (length--) { 93c: 3a01 subs r2, #1 93e: b293 uxth r3, r2 940: 4699 mov r9, r3 942: 2600 movs r6, #0 if (usart_hw->INTFLAG.reg & SERCOM_USART_INTFLAG_DRE) { 944: 2701 movs r7, #1 while (length--) { 946: 4b20 ldr r3, [pc, #128] ; (9c8 ) 948: 4698 mov r8, r3 94a: e011 b.n 970 uint16_t data_to_send = tx_data[tx_pos++]; 94c: 1c73 adds r3, r6, #1 94e: b29b uxth r3, r3 950: 9a01 ldr r2, [sp, #4] 952: 5d91 ldrb r1, [r2, r6] if (module->character_size == USART_CHARACTER_SIZE_9BIT) { 954: 796a ldrb r2, [r5, #5] 956: 2a01 cmp r2, #1 958: d017 beq.n 98a uint16_t data_to_send = tx_data[tx_pos++]; 95a: b289 uxth r1, r1 95c: 001e movs r6, r3 usart_write_wait(module, data_to_send); 95e: 0028 movs r0, r5 960: 4b1a ldr r3, [pc, #104] ; (9cc ) 962: 4798 blx r3 while (length--) { 964: 464b mov r3, r9 966: 3b01 subs r3, #1 968: b29b uxth r3, r3 96a: 4699 mov r9, r3 96c: 4543 cmp r3, r8 96e: d013 beq.n 998 if (usart_hw->INTFLAG.reg & SERCOM_USART_INTFLAG_DRE) { 970: 7e23 ldrb r3, [r4, #24] 972: 423b tst r3, r7 974: d1ea bne.n 94c 976: 4b14 ldr r3, [pc, #80] ; (9c8 ) 978: 7e22 ldrb r2, [r4, #24] 97a: 423a tst r2, r7 97c: d1e6 bne.n 94c } else if (i == USART_TIMEOUT) { 97e: 2b01 cmp r3, #1 980: d019 beq.n 9b6 982: 3b01 subs r3, #1 for (uint32_t i = 0; i <= USART_TIMEOUT; i++) { 984: 2b00 cmp r3, #0 986: d1f7 bne.n 978 988: e7e0 b.n 94c data_to_send |= (tx_data[tx_pos++] << 8); 98a: 3602 adds r6, #2 98c: b2b6 uxth r6, r6 98e: 9a01 ldr r2, [sp, #4] 990: 5cd3 ldrb r3, [r2, r3] 992: 021b lsls r3, r3, #8 994: 4319 orrs r1, r3 996: e7e2 b.n 95e if (usart_hw->INTFLAG.reg & SERCOM_USART_INTFLAG_TXC) { 998: 7e23 ldrb r3, [r4, #24] 99a: 079b lsls r3, r3, #30 99c: d40d bmi.n 9ba 99e: 4b0a ldr r3, [pc, #40] ; (9c8 ) 9a0: 2102 movs r1, #2 9a2: 7e22 ldrb r2, [r4, #24] 9a4: 420a tst r2, r1 9a6: d10a bne.n 9be } else if (i == USART_TIMEOUT) { 9a8: 2b01 cmp r3, #1 9aa: d00a beq.n 9c2 9ac: 3b01 subs r3, #1 for (uint32_t i = 0; i <= USART_TIMEOUT; i++) { 9ae: 2b00 cmp r3, #0 9b0: d1f7 bne.n 9a2 return STATUS_OK; 9b2: 2000 movs r0, #0 9b4: e7b8 b.n 928 return STATUS_ERR_TIMEOUT; 9b6: 2012 movs r0, #18 9b8: e7b6 b.n 928 return STATUS_OK; 9ba: 2000 movs r0, #0 9bc: e7b4 b.n 928 9be: 2000 movs r0, #0 9c0: e7b2 b.n 928 return STATUS_ERR_TIMEOUT; 9c2: 2012 movs r0, #18 9c4: e7b0 b.n 928 9c6: 46c0 nop ; (mov r8, r8) 9c8: 0000ffff .word 0x0000ffff 9cc: 000008ed .word 0x000008ed 000009d0 <_usart_read_buffer>: */ enum status_code _usart_read_buffer( struct usart_module *const module, uint8_t *rx_data, uint16_t length) { 9d0: b5f8 push {r3, r4, r5, r6, r7, lr} 9d2: 0004 movs r4, r0 9d4: 000d movs r5, r1 9d6: 0016 movs r6, r2 Assert(module); Assert(module->hw); Assert(rx_data); /* Get a pointer to the hardware module instance */ SercomUsart *const usart_hw = &(module->hw->USART); 9d8: 6807 ldr r7, [r0, #0] cpu_irq_enter_critical(); 9da: 4b0f ldr r3, [pc, #60] ; (a18 <_usart_read_buffer+0x48>) 9dc: 4798 blx r3 system_interrupt_enter_critical_section(); /* Check if the USART receiver is busy */ if (module->remaining_rx_buffer_length > 0) { 9de: 8da3 ldrh r3, [r4, #44] ; 0x2c 9e0: b29b uxth r3, r3 9e2: 2b00 cmp r3, #0 9e4: d003 beq.n 9ee <_usart_read_buffer+0x1e> cpu_irq_leave_critical(); 9e6: 4b0d ldr r3, [pc, #52] ; (a1c <_usart_read_buffer+0x4c>) 9e8: 4798 blx r3 system_interrupt_leave_critical_section(); return STATUS_BUSY; 9ea: 2005 movs r0, #5 usart_hw->INTENSET.reg = SERCOM_USART_INTFLAG_RXS; } #endif return STATUS_OK; } 9ec: bdf8 pop {r3, r4, r5, r6, r7, pc} module->remaining_rx_buffer_length = length; 9ee: 85a6 strh r6, [r4, #44] ; 0x2c 9f0: 4b0a ldr r3, [pc, #40] ; (a1c <_usart_read_buffer+0x4c>) 9f2: 4798 blx r3 module->rx_buffer_ptr = rx_data; 9f4: 6265 str r5, [r4, #36] ; 0x24 module->rx_status = STATUS_BUSY; 9f6: 2205 movs r2, #5 9f8: 2332 movs r3, #50 ; 0x32 9fa: 54e2 strb r2, [r4, r3] usart_hw->INTENSET.reg = SERCOM_USART_INTFLAG_RXC; 9fc: 3b2e subs r3, #46 ; 0x2e 9fe: 75bb strb r3, [r7, #22] if(module->lin_slave_enabled) { a00: 7a23 ldrb r3, [r4, #8] a02: 2b00 cmp r3, #0 a04: d001 beq.n a0a <_usart_read_buffer+0x3a> usart_hw->INTENSET.reg = SERCOM_USART_INTFLAG_RXBRK; a06: 2320 movs r3, #32 a08: 75bb strb r3, [r7, #22] if(module->start_frame_detection_enabled) { a0a: 7a63 ldrb r3, [r4, #9] return STATUS_OK; a0c: 2000 movs r0, #0 if(module->start_frame_detection_enabled) { a0e: 2b00 cmp r3, #0 a10: d0ec beq.n 9ec <_usart_read_buffer+0x1c> usart_hw->INTENSET.reg = SERCOM_USART_INTFLAG_RXS; a12: 2308 movs r3, #8 a14: 75bb strb r3, [r7, #22] a16: e7e9 b.n 9ec <_usart_read_buffer+0x1c> a18: 00000cad .word 0x00000cad a1c: 00000ced .word 0x00000ced 00000a20 : /* Sanity check arguments */ Assert(module); Assert(callback_func); /* Register callback function */ module->callback[callback_type] = callback_func; a20: 1c93 adds r3, r2, #2 a22: 009b lsls r3, r3, #2 a24: 18c3 adds r3, r0, r3 a26: 6059 str r1, [r3, #4] /* Set the bit corresponding to the callback_type */ module->callback_reg_mask |= (1 << callback_type); a28: 2130 movs r1, #48 ; 0x30 a2a: 2301 movs r3, #1 a2c: 4093 lsls r3, r2 a2e: 001a movs r2, r3 a30: 5c43 ldrb r3, [r0, r1] a32: 4313 orrs r3, r2 a34: 5443 strb r3, [r0, r1] } a36: 4770 bx lr 00000a38 : * \retval STATUS_BUSY If operation was not completed */ enum status_code usart_read_job( struct usart_module *const module, uint16_t *const rx_data) { a38: b510 push {r4, lr} /* Sanity check arguments */ Assert(module); Assert(rx_data); /* Call internal read buffer function with length 1 */ return _usart_read_buffer(module, (uint8_t *)rx_data, 1); a3a: 2201 movs r2, #1 a3c: 4b01 ldr r3, [pc, #4] ; (a44 ) a3e: 4798 blx r3 } a40: bd10 pop {r4, pc} a42: 46c0 nop ; (mov r8, r8) a44: 000009d1 .word 0x000009d1 00000a48 <_usart_interrupt_handler>: * \param[in] instance ID of the SERCOM instance calling the interrupt * handler. */ void _usart_interrupt_handler( uint8_t instance) { a48: b5f8 push {r3, r4, r5, r6, r7, lr} uint16_t callback_status; uint8_t error_code; /* Get device instance from the look-up table */ struct usart_module *module a4a: 0080 lsls r0, r0, #2 a4c: 4b62 ldr r3, [pc, #392] ; (bd8 <_usart_interrupt_handler+0x190>) a4e: 58c5 ldr r5, [r0, r3] = (struct usart_module *)_sercom_instances[instance]; /* Pointer to the hardware module instance */ SercomUsart *const usart_hw = &(module->hw->USART); a50: 682c ldr r4, [r5, #0] return (usart_hw->SYNCBUSY.reg); a52: 69e3 ldr r3, [r4, #28] while (usart_is_syncing(module)) { a54: 2b00 cmp r3, #0 a56: d1fc bne.n a52 <_usart_interrupt_handler+0xa> /* Wait for the synchronization to complete */ _usart_wait_for_sync(module); /* Read and mask interrupt flag register */ interrupt_status = usart_hw->INTFLAG.reg; a58: 7e23 ldrb r3, [r4, #24] interrupt_status &= usart_hw->INTENSET.reg; a5a: 7da6 ldrb r6, [r4, #22] a5c: 401e ands r6, r3 callback_status = module->callback_reg_mask & a5e: 2330 movs r3, #48 ; 0x30 a60: 5ceb ldrb r3, [r5, r3] a62: 2231 movs r2, #49 ; 0x31 a64: 5caf ldrb r7, [r5, r2] a66: 401f ands r7, r3 module->callback_enable_mask; /* Check if a DATA READY interrupt has occurred, * and if there is more to transfer */ if (interrupt_status & SERCOM_USART_INTFLAG_DRE) { a68: 07f3 lsls r3, r6, #31 a6a: d522 bpl.n ab2 <_usart_interrupt_handler+0x6a> if (module->remaining_tx_buffer_length) { a6c: 8deb ldrh r3, [r5, #46] ; 0x2e a6e: b29b uxth r3, r3 a70: 2b00 cmp r3, #0 a72: d01c beq.n aae <_usart_interrupt_handler+0x66> /* Write value will be at least 8-bits long */ uint16_t data_to_send = *(module->tx_buffer_ptr); a74: 6aaa ldr r2, [r5, #40] ; 0x28 a76: 7813 ldrb r3, [r2, #0] a78: b2db uxtb r3, r3 /* Increment 8-bit pointer */ (module->tx_buffer_ptr)++; a7a: 1c51 adds r1, r2, #1 a7c: 62a9 str r1, [r5, #40] ; 0x28 if (module->character_size == USART_CHARACTER_SIZE_9BIT) { a7e: 7969 ldrb r1, [r5, #5] a80: 2901 cmp r1, #1 a82: d00e beq.n aa2 <_usart_interrupt_handler+0x5a> uint16_t data_to_send = *(module->tx_buffer_ptr); a84: b29b uxth r3, r3 data_to_send |= (*(module->tx_buffer_ptr) << 8); /* Increment 8-bit pointer */ (module->tx_buffer_ptr)++; } /* Write the data to send */ usart_hw->DATA.reg = (data_to_send & SERCOM_USART_DATA_MASK); a86: 05db lsls r3, r3, #23 a88: 0ddb lsrs r3, r3, #23 a8a: 8523 strh r3, [r4, #40] ; 0x28 if (--(module->remaining_tx_buffer_length) == 0) { a8c: 8deb ldrh r3, [r5, #46] ; 0x2e a8e: 3b01 subs r3, #1 a90: b29b uxth r3, r3 a92: 85eb strh r3, [r5, #46] ; 0x2e a94: 2b00 cmp r3, #0 a96: d10c bne.n ab2 <_usart_interrupt_handler+0x6a> /* Disable the Data Register Empty Interrupt */ usart_hw->INTENCLR.reg = SERCOM_USART_INTFLAG_DRE; a98: 3301 adds r3, #1 a9a: 7523 strb r3, [r4, #20] /* Enable Transmission Complete interrupt */ usart_hw->INTENSET.reg = SERCOM_USART_INTFLAG_TXC; a9c: 3301 adds r3, #1 a9e: 75a3 strb r3, [r4, #22] aa0: e007 b.n ab2 <_usart_interrupt_handler+0x6a> data_to_send |= (*(module->tx_buffer_ptr) << 8); aa2: 7851 ldrb r1, [r2, #1] aa4: 0209 lsls r1, r1, #8 aa6: 430b orrs r3, r1 (module->tx_buffer_ptr)++; aa8: 3202 adds r2, #2 aaa: 62aa str r2, [r5, #40] ; 0x28 aac: e7eb b.n a86 <_usart_interrupt_handler+0x3e> } } else { usart_hw->INTENCLR.reg = SERCOM_USART_INTFLAG_DRE; aae: 2301 movs r3, #1 ab0: 7523 strb r3, [r4, #20] } } /* Check if the Transmission Complete interrupt has occurred and * that the transmit buffer is empty */ if (interrupt_status & SERCOM_USART_INTFLAG_TXC) { ab2: 07b3 lsls r3, r6, #30 ab4: d506 bpl.n ac4 <_usart_interrupt_handler+0x7c> /* Disable TX Complete Interrupt, and set STATUS_OK */ usart_hw->INTENCLR.reg = SERCOM_USART_INTFLAG_TXC; ab6: 2302 movs r3, #2 ab8: 7523 strb r3, [r4, #20] module->tx_status = STATUS_OK; aba: 2200 movs r2, #0 abc: 3331 adds r3, #49 ; 0x31 abe: 54ea strb r2, [r5, r3] /* Run callback if registered and enabled */ if (callback_status & (1 << USART_CALLBACK_BUFFER_TRANSMITTED)) { ac0: 07fb lsls r3, r7, #31 ac2: d41a bmi.n afa <_usart_interrupt_handler+0xb2> } } /* Check if the Receive Complete interrupt has occurred, and that * there's more data to receive */ if (interrupt_status & SERCOM_USART_INTFLAG_RXC) { ac4: 0773 lsls r3, r6, #29 ac6: d565 bpl.n b94 <_usart_interrupt_handler+0x14c> if (module->remaining_rx_buffer_length) { ac8: 8dab ldrh r3, [r5, #44] ; 0x2c aca: b29b uxth r3, r3 acc: 2b00 cmp r3, #0 ace: d05f beq.n b90 <_usart_interrupt_handler+0x148> /* Read out the status code and mask away all but the 4 LSBs*/ error_code = (uint8_t)(usart_hw->STATUS.reg & SERCOM_USART_STATUS_MASK); ad0: 8b63 ldrh r3, [r4, #26] ad2: b2db uxtb r3, r3 #if !SAMD20 /* CTS status should not be considered as an error */ if(error_code & SERCOM_USART_STATUS_CTS) { ad4: 071a lsls r2, r3, #28 ad6: d414 bmi.n b02 <_usart_interrupt_handler+0xba> error_code = (uint8_t)(usart_hw->STATUS.reg & SERCOM_USART_STATUS_MASK); ad8: 223f movs r2, #63 ; 0x3f ada: 4013 ands r3, r2 if(error_code & SERCOM_USART_STATUS_TXE) { error_code &= ~SERCOM_USART_STATUS_TXE; } #endif /* Check if an error has occurred during the receiving */ if (error_code) { adc: 2b00 cmp r3, #0 ade: d034 beq.n b4a <_usart_interrupt_handler+0x102> /* Check which error occurred */ if (error_code & SERCOM_USART_STATUS_FERR) { ae0: 079a lsls r2, r3, #30 ae2: d511 bpl.n b08 <_usart_interrupt_handler+0xc0> /* Store the error code and clear flag by writing 1 to it */ module->rx_status = STATUS_ERR_BAD_FORMAT; ae4: 221a movs r2, #26 ae6: 2332 movs r3, #50 ; 0x32 ae8: 54ea strb r2, [r5, r3] usart_hw->STATUS.reg = SERCOM_USART_STATUS_FERR; aea: 3b30 subs r3, #48 ; 0x30 aec: 8363 strh r3, [r4, #26] usart_hw->STATUS.reg = SERCOM_USART_STATUS_COLL; } #endif /* Run callback if registered and enabled */ if (callback_status aee: 077b lsls r3, r7, #29 af0: d550 bpl.n b94 <_usart_interrupt_handler+0x14c> & (1 << USART_CALLBACK_ERROR)) { (*(module->callback[USART_CALLBACK_ERROR]))(module); af2: 0028 movs r0, r5 af4: 696b ldr r3, [r5, #20] af6: 4798 blx r3 af8: e04c b.n b94 <_usart_interrupt_handler+0x14c> (*(module->callback[USART_CALLBACK_BUFFER_TRANSMITTED]))(module); afa: 0028 movs r0, r5 afc: 68eb ldr r3, [r5, #12] afe: 4798 blx r3 b00: e7e0 b.n ac4 <_usart_interrupt_handler+0x7c> error_code &= ~SERCOM_USART_STATUS_CTS; b02: 2237 movs r2, #55 ; 0x37 b04: 4013 ands r3, r2 b06: e7e9 b.n adc <_usart_interrupt_handler+0x94> } else if (error_code & SERCOM_USART_STATUS_BUFOVF) { b08: 075a lsls r2, r3, #29 b0a: d505 bpl.n b18 <_usart_interrupt_handler+0xd0> module->rx_status = STATUS_ERR_OVERFLOW; b0c: 221e movs r2, #30 b0e: 2332 movs r3, #50 ; 0x32 b10: 54ea strb r2, [r5, r3] usart_hw->STATUS.reg = SERCOM_USART_STATUS_BUFOVF; b12: 3b2e subs r3, #46 ; 0x2e b14: 8363 strh r3, [r4, #26] b16: e7ea b.n aee <_usart_interrupt_handler+0xa6> } else if (error_code & SERCOM_USART_STATUS_PERR) { b18: 07da lsls r2, r3, #31 b1a: d505 bpl.n b28 <_usart_interrupt_handler+0xe0> module->rx_status = STATUS_ERR_BAD_DATA; b1c: 2213 movs r2, #19 b1e: 2332 movs r3, #50 ; 0x32 b20: 54ea strb r2, [r5, r3] usart_hw->STATUS.reg = SERCOM_USART_STATUS_PERR; b22: 3b31 subs r3, #49 ; 0x31 b24: 8363 strh r3, [r4, #26] b26: e7e2 b.n aee <_usart_interrupt_handler+0xa6> else if (error_code & SERCOM_USART_STATUS_ISF) { b28: 06da lsls r2, r3, #27 b2a: d505 bpl.n b38 <_usart_interrupt_handler+0xf0> module->rx_status = STATUS_ERR_PROTOCOL; b2c: 2242 movs r2, #66 ; 0x42 b2e: 2332 movs r3, #50 ; 0x32 b30: 54ea strb r2, [r5, r3] usart_hw->STATUS.reg = SERCOM_USART_STATUS_ISF; b32: 3b22 subs r3, #34 ; 0x22 b34: 8363 strh r3, [r4, #26] b36: e7da b.n aee <_usart_interrupt_handler+0xa6> else if (error_code & SERCOM_USART_STATUS_COLL) { b38: 2220 movs r2, #32 b3a: 421a tst r2, r3 b3c: d0d7 beq.n aee <_usart_interrupt_handler+0xa6> module->rx_status = STATUS_ERR_PACKET_COLLISION; b3e: 3221 adds r2, #33 ; 0x21 b40: 2332 movs r3, #50 ; 0x32 b42: 54ea strb r2, [r5, r3] usart_hw->STATUS.reg = SERCOM_USART_STATUS_COLL; b44: 3b12 subs r3, #18 b46: 8363 strh r3, [r4, #26] b48: e7d1 b.n aee <_usart_interrupt_handler+0xa6> } else { /* Read current packet from DATA register, * increment buffer pointer and decrement buffer length */ uint16_t received_data = (usart_hw->DATA.reg & SERCOM_USART_DATA_MASK); b4a: 8d23 ldrh r3, [r4, #40] ; 0x28 b4c: 05db lsls r3, r3, #23 b4e: 0ddb lsrs r3, r3, #23 /* Read value will be at least 8-bits long */ *(module->rx_buffer_ptr) = received_data; b50: b2da uxtb r2, r3 b52: 6a69 ldr r1, [r5, #36] ; 0x24 b54: 700a strb r2, [r1, #0] /* Increment 8-bit pointer */ module->rx_buffer_ptr += 1; b56: 6a6a ldr r2, [r5, #36] ; 0x24 b58: 1c51 adds r1, r2, #1 b5a: 6269 str r1, [r5, #36] ; 0x24 if (module->character_size == USART_CHARACTER_SIZE_9BIT) { b5c: 7969 ldrb r1, [r5, #5] b5e: 2901 cmp r1, #1 b60: d010 beq.n b84 <_usart_interrupt_handler+0x13c> /* Increment 8-bit pointer */ module->rx_buffer_ptr += 1; } /* Check if the last character have been received */ if(--(module->remaining_rx_buffer_length) == 0) { b62: 8dab ldrh r3, [r5, #44] ; 0x2c b64: 3b01 subs r3, #1 b66: b29b uxth r3, r3 b68: 85ab strh r3, [r5, #44] ; 0x2c b6a: 2b00 cmp r3, #0 b6c: d112 bne.n b94 <_usart_interrupt_handler+0x14c> /* Disable RX Complete Interrupt, * and set STATUS_OK */ usart_hw->INTENCLR.reg = SERCOM_USART_INTFLAG_RXC; b6e: 3304 adds r3, #4 b70: 7523 strb r3, [r4, #20] module->rx_status = STATUS_OK; b72: 2200 movs r2, #0 b74: 332e adds r3, #46 ; 0x2e b76: 54ea strb r2, [r5, r3] /* Run callback if registered and enabled */ if (callback_status b78: 07bb lsls r3, r7, #30 b7a: d50b bpl.n b94 <_usart_interrupt_handler+0x14c> & (1 << USART_CALLBACK_BUFFER_RECEIVED)) { (*(module->callback[USART_CALLBACK_BUFFER_RECEIVED]))(module); b7c: 0028 movs r0, r5 b7e: 692b ldr r3, [r5, #16] b80: 4798 blx r3 b82: e007 b.n b94 <_usart_interrupt_handler+0x14c> *(module->rx_buffer_ptr) = (received_data >> 8); b84: 0a1b lsrs r3, r3, #8 b86: 7053 strb r3, [r2, #1] module->rx_buffer_ptr += 1; b88: 6a6b ldr r3, [r5, #36] ; 0x24 b8a: 3301 adds r3, #1 b8c: 626b str r3, [r5, #36] ; 0x24 b8e: e7e8 b.n b62 <_usart_interrupt_handler+0x11a> } } } } else { /* This should not happen. Disable Receive Complete interrupt. */ usart_hw->INTENCLR.reg = SERCOM_USART_INTFLAG_RXC; b90: 2304 movs r3, #4 b92: 7523 strb r3, [r4, #20] } } #ifdef FEATURE_USART_HARDWARE_FLOW_CONTROL if (interrupt_status & SERCOM_USART_INTFLAG_CTSIC) { b94: 06f3 lsls r3, r6, #27 b96: d504 bpl.n ba2 <_usart_interrupt_handler+0x15a> /* Disable interrupts */ usart_hw->INTENCLR.reg = SERCOM_USART_INTENCLR_CTSIC; b98: 2310 movs r3, #16 b9a: 7523 strb r3, [r4, #20] /* Clear interrupt flag */ usart_hw->INTFLAG.reg = SERCOM_USART_INTFLAG_CTSIC; b9c: 7623 strb r3, [r4, #24] /* Run callback if registered and enabled */ if (callback_status & (1 << USART_CALLBACK_CTS_INPUT_CHANGE)) { b9e: 06fb lsls r3, r7, #27 ba0: d40e bmi.n bc0 <_usart_interrupt_handler+0x178> } } #endif #ifdef FEATURE_USART_LIN_SLAVE if (interrupt_status & SERCOM_USART_INTFLAG_RXBRK) { ba2: 06b3 lsls r3, r6, #26 ba4: d504 bpl.n bb0 <_usart_interrupt_handler+0x168> /* Disable interrupts */ usart_hw->INTENCLR.reg = SERCOM_USART_INTENCLR_RXBRK; ba6: 2320 movs r3, #32 ba8: 7523 strb r3, [r4, #20] /* Clear interrupt flag */ usart_hw->INTFLAG.reg = SERCOM_USART_INTFLAG_RXBRK; baa: 7623 strb r3, [r4, #24] /* Run callback if registered and enabled */ if (callback_status & (1 << USART_CALLBACK_BREAK_RECEIVED)) { bac: 073b lsls r3, r7, #28 bae: d40b bmi.n bc8 <_usart_interrupt_handler+0x180> } } #endif #ifdef FEATURE_USART_START_FRAME_DECTION if (interrupt_status & SERCOM_USART_INTFLAG_RXS) { bb0: 0733 lsls r3, r6, #28 bb2: d504 bpl.n bbe <_usart_interrupt_handler+0x176> /* Disable interrupts */ usart_hw->INTENCLR.reg = SERCOM_USART_INTENCLR_RXS; bb4: 2308 movs r3, #8 bb6: 7523 strb r3, [r4, #20] /* Clear interrupt flag */ usart_hw->INTFLAG.reg = SERCOM_USART_INTFLAG_RXS; bb8: 7623 strb r3, [r4, #24] /* Run callback if registered and enabled */ if (callback_status & (1 << USART_CALLBACK_START_RECEIVED)) { bba: 06bb lsls r3, r7, #26 bbc: d408 bmi.n bd0 <_usart_interrupt_handler+0x188> (*(module->callback[USART_CALLBACK_START_RECEIVED]))(module); } } #endif } bbe: bdf8 pop {r3, r4, r5, r6, r7, pc} (*(module->callback[USART_CALLBACK_CTS_INPUT_CHANGE]))(module); bc0: 0028 movs r0, r5 bc2: 69eb ldr r3, [r5, #28] bc4: 4798 blx r3 bc6: e7ec b.n ba2 <_usart_interrupt_handler+0x15a> (*(module->callback[USART_CALLBACK_BREAK_RECEIVED]))(module); bc8: 0028 movs r0, r5 bca: 69ab ldr r3, [r5, #24] bcc: 4798 blx r3 bce: e7ef b.n bb0 <_usart_interrupt_handler+0x168> (*(module->callback[USART_CALLBACK_START_RECEIVED]))(module); bd0: 6a2b ldr r3, [r5, #32] bd2: 0028 movs r0, r5 bd4: 4798 blx r3 } bd6: e7f2 b.n bbe <_usart_interrupt_handler+0x176> bd8: 20004c94 .word 0x20004c94 00000bdc <_sercom_default_handler>: */ static void _sercom_default_handler( const uint8_t instance) { Assert(false); } bdc: 4770 bx lr ... 00000be0 <_sercom_set_handler>: * \param[in] interrupt_handler Pointer to instance callback handler. */ void _sercom_set_handler( const uint8_t instance, const sercom_handler_t interrupt_handler) { be0: b5f0 push {r4, r5, r6, r7, lr} /* Initialize handlers with default handler and device instances with 0 */ if (_handler_table_initialized == false) { be2: 4b0a ldr r3, [pc, #40] ; (c0c <_sercom_set_handler+0x2c>) be4: 781b ldrb r3, [r3, #0] be6: 2b00 cmp r3, #0 be8: d10c bne.n c04 <_sercom_set_handler+0x24> for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { _sercom_interrupt_handlers[i] = &_sercom_default_handler; bea: 4f09 ldr r7, [pc, #36] ; (c10 <_sercom_set_handler+0x30>) bec: 4e09 ldr r6, [pc, #36] ; (c14 <_sercom_set_handler+0x34>) _sercom_instances[i] = NULL; bee: 4d0a ldr r5, [pc, #40] ; (c18 <_sercom_set_handler+0x38>) bf0: 2400 movs r4, #0 _sercom_interrupt_handlers[i] = &_sercom_default_handler; bf2: 51de str r6, [r3, r7] _sercom_instances[i] = NULL; bf4: 195a adds r2, r3, r5 bf6: 6014 str r4, [r2, #0] bf8: 3304 adds r3, #4 for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { bfa: 2b18 cmp r3, #24 bfc: d1f9 bne.n bf2 <_sercom_set_handler+0x12> } _handler_table_initialized = true; bfe: 2201 movs r2, #1 c00: 4b02 ldr r3, [pc, #8] ; (c0c <_sercom_set_handler+0x2c>) c02: 701a strb r2, [r3, #0] } /* Save interrupt handler */ _sercom_interrupt_handlers[instance] = interrupt_handler; c04: 0080 lsls r0, r0, #2 c06: 4b02 ldr r3, [pc, #8] ; (c10 <_sercom_set_handler+0x30>) c08: 50c1 str r1, [r0, r3] } c0a: bdf0 pop {r4, r5, r6, r7, pc} c0c: 20002696 .word 0x20002696 c10: 20002698 .word 0x20002698 c14: 00000bdd .word 0x00000bdd c18: 20004c94 .word 0x20004c94 00000c1c <_sercom_get_interrupt_vector>: * \retval SYSTEM_INTERRUPT_MODULE_SERCOM6 * \retval SYSTEM_INTERRUPT_MODULE_SERCOM7 */ enum system_interrupt_vector _sercom_get_interrupt_vector( Sercom *const sercom_instance) { c1c: b500 push {lr} c1e: b083 sub sp, #12 const uint8_t sercom_int_vectors[SERCOM_INST_NUM] = c20: 2309 movs r3, #9 c22: 466a mov r2, sp c24: 7013 strb r3, [r2, #0] c26: 3301 adds r3, #1 c28: 7053 strb r3, [r2, #1] c2a: 3301 adds r3, #1 c2c: 7093 strb r3, [r2, #2] c2e: 3301 adds r3, #1 c30: 70d3 strb r3, [r2, #3] c32: 3301 adds r3, #1 c34: 7113 strb r3, [r2, #4] c36: 3301 adds r3, #1 c38: 7153 strb r3, [r2, #5] { MREPEAT(SERCOM_INST_NUM, _SERCOM_INTERRUPT_VECT_NUM, ~) }; /* Retrieve the index of the SERCOM being requested */ uint8_t instance_index = _sercom_get_sercom_inst_index(sercom_instance); c3a: 4b03 ldr r3, [pc, #12] ; (c48 <_sercom_get_interrupt_vector+0x2c>) c3c: 4798 blx r3 /* Get the vector number from the lookup table for the requested SERCOM */ return (enum system_interrupt_vector)sercom_int_vectors[instance_index]; c3e: 466b mov r3, sp c40: 5618 ldrsb r0, [r3, r0] } c42: b003 add sp, #12 c44: bd00 pop {pc} c46: 46c0 nop ; (mov r8, r8) c48: 00000579 .word 0x00000579 00000c4c : /** Auto-generate a set of interrupt handlers for each SERCOM in the device */ MREPEAT(SERCOM_INST_NUM, _SERCOM_INTERRUPT_HANDLER, ~) c4c: b510 push {r4, lr} c4e: 4b02 ldr r3, [pc, #8] ; (c58 ) c50: 681b ldr r3, [r3, #0] c52: 2000 movs r0, #0 c54: 4798 blx r3 c56: bd10 pop {r4, pc} c58: 20002698 .word 0x20002698 00000c5c : c5c: b510 push {r4, lr} c5e: 4b02 ldr r3, [pc, #8] ; (c68 ) c60: 685b ldr r3, [r3, #4] c62: 2001 movs r0, #1 c64: 4798 blx r3 c66: bd10 pop {r4, pc} c68: 20002698 .word 0x20002698 00000c6c : c6c: b510 push {r4, lr} c6e: 4b02 ldr r3, [pc, #8] ; (c78 ) c70: 689b ldr r3, [r3, #8] c72: 2002 movs r0, #2 c74: 4798 blx r3 c76: bd10 pop {r4, pc} c78: 20002698 .word 0x20002698 00000c7c : c7c: b510 push {r4, lr} c7e: 4b02 ldr r3, [pc, #8] ; (c88 ) c80: 68db ldr r3, [r3, #12] c82: 2003 movs r0, #3 c84: 4798 blx r3 c86: bd10 pop {r4, pc} c88: 20002698 .word 0x20002698 00000c8c : c8c: b510 push {r4, lr} c8e: 4b02 ldr r3, [pc, #8] ; (c98 ) c90: 691b ldr r3, [r3, #16] c92: 2004 movs r0, #4 c94: 4798 blx r3 c96: bd10 pop {r4, pc} c98: 20002698 .word 0x20002698 00000c9c : c9c: b510 push {r4, lr} c9e: 4b02 ldr r3, [pc, #8] ; (ca8 ) ca0: 695b ldr r3, [r3, #20] ca2: 2005 movs r0, #5 ca4: 4798 blx r3 ca6: bd10 pop {r4, pc} ca8: 20002698 .word 0x20002698 00000cac : volatile bool g_interrupt_enabled = true; #endif void cpu_irq_enter_critical(void) { if (cpu_irq_critical_section_counter == 0) { cac: 4b0c ldr r3, [pc, #48] ; (ce0 ) cae: 681b ldr r3, [r3, #0] cb0: 2b00 cmp r3, #0 cb2: d106 bne.n cc2 __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); cb4: f3ef 8310 mrs r3, PRIMASK if (cpu_irq_is_enabled()) { cb8: 2b00 cmp r3, #0 cba: d007 beq.n ccc cpu_irq_disable(); cpu_irq_prev_interrupt_state = true; } else { /* Make sure the to save the prev state as false */ cpu_irq_prev_interrupt_state = false; cbc: 2200 movs r2, #0 cbe: 4b09 ldr r3, [pc, #36] ; (ce4 ) cc0: 701a strb r2, [r3, #0] } } cpu_irq_critical_section_counter++; cc2: 4a07 ldr r2, [pc, #28] ; (ce0 ) cc4: 6813 ldr r3, [r2, #0] cc6: 3301 adds r3, #1 cc8: 6013 str r3, [r2, #0] } cca: 4770 bx lr __ASM volatile ("cpsid i" : : : "memory"); ccc: b672 cpsid i __ASM volatile ("dmb 0xF":::"memory"); cce: f3bf 8f5f dmb sy cpu_irq_disable(); cd2: 2200 movs r2, #0 cd4: 4b04 ldr r3, [pc, #16] ; (ce8 ) cd6: 701a strb r2, [r3, #0] cpu_irq_prev_interrupt_state = true; cd8: 3201 adds r2, #1 cda: 4b02 ldr r3, [pc, #8] ; (ce4 ) cdc: 701a strb r2, [r3, #0] cde: e7f0 b.n cc2 ce0: 200026b0 .word 0x200026b0 ce4: 200026b4 .word 0x200026b4 ce8: 2000000c .word 0x2000000c 00000cec : void cpu_irq_leave_critical(void) { /* Check if the user is trying to leave a critical section when not in a critical section */ Assert(cpu_irq_critical_section_counter > 0); cpu_irq_critical_section_counter--; cec: 4b08 ldr r3, [pc, #32] ; (d10 ) cee: 681a ldr r2, [r3, #0] cf0: 3a01 subs r2, #1 cf2: 601a str r2, [r3, #0] /* Only enable global interrupts when the counter reaches 0 and the state of the global interrupt flag was enabled when entering critical state */ if ((cpu_irq_critical_section_counter == 0) && (cpu_irq_prev_interrupt_state)) { cf4: 681b ldr r3, [r3, #0] cf6: 2b00 cmp r3, #0 cf8: d109 bne.n d0e cfa: 4b06 ldr r3, [pc, #24] ; (d14 ) cfc: 781b ldrb r3, [r3, #0] cfe: 2b00 cmp r3, #0 d00: d005 beq.n d0e cpu_irq_enable(); d02: 2201 movs r2, #1 d04: 4b04 ldr r3, [pc, #16] ; (d18 ) d06: 701a strb r2, [r3, #0] d08: f3bf 8f5f dmb sy __ASM volatile ("cpsie i" : : : "memory"); d0c: b662 cpsie i } } d0e: 4770 bx lr d10: 200026b0 .word 0x200026b0 d14: 200026b4 .word 0x200026b4 d18: 2000000c .word 0x2000000c 00000d1c : void board_init(void); # pragma weak board_init=system_board_init #endif void system_board_init(void) { d1c: b5f0 push {r4, r5, r6, r7, lr} d1e: b083 sub sp, #12 /* Sanity check arguments */ Assert(config); /* Default configuration values */ config->direction = PORT_PIN_DIR_INPUT; config->input_pull = PORT_PIN_PULL_UP; d20: ac01 add r4, sp, #4 d22: 2501 movs r5, #1 d24: 7065 strb r5, [r4, #1] config->powersave = false; d26: 2700 movs r7, #0 d28: 70a7 strb r7, [r4, #2] struct port_config pin_conf; port_get_config_defaults(&pin_conf); /* Configure LEDs as outputs, turn them off */ pin_conf.direction = PORT_PIN_DIR_OUTPUT; d2a: 7025 strb r5, [r4, #0] port_pin_set_config(LED_0_PIN, &pin_conf); d2c: 0021 movs r1, r4 d2e: 203e movs r0, #62 ; 0x3e d30: 4e06 ldr r6, [pc, #24] ; (d4c ) d32: 47b0 blx r6 PortGroup *const port_base = port_get_group_from_gpio_pin(gpio_pin); uint32_t pin_mask = (1UL << (gpio_pin % 32)); /* Set the pin to high or low atomically based on the requested level */ if (level) { port_base->OUTSET.reg = pin_mask; d34: 2280 movs r2, #128 ; 0x80 d36: 05d2 lsls r2, r2, #23 d38: 4b05 ldr r3, [pc, #20] ; (d50 ) d3a: 619a str r2, [r3, #24] port_pin_set_output_level(LED_0_PIN, LED_0_INACTIVE); /* Set buttons as inputs */ pin_conf.direction = PORT_PIN_DIR_INPUT; d3c: 7027 strb r7, [r4, #0] pin_conf.input_pull = PORT_PIN_PULL_UP; d3e: 7065 strb r5, [r4, #1] port_pin_set_config(BUTTON_0_PIN, &pin_conf); d40: 0021 movs r1, r4 d42: 200f movs r0, #15 d44: 47b0 blx r6 port_pin_set_output_level(AT86RFX_RST_PIN, true); port_pin_set_output_level(AT86RFX_SLP_PIN, true); pin_conf.direction = PORT_PIN_DIR_INPUT; port_pin_set_config(AT86RFX_SPI_MISO, &pin_conf); #endif } d46: b003 add sp, #12 d48: bdf0 pop {r4, r5, r6, r7, pc} d4a: 46c0 nop ; (mov r8, r8) d4c: 00000d55 .word 0x00000d55 d50: 41004480 .word 0x41004480 00000d54 : * \param[in] config Configuration settings for the pin */ void port_pin_set_config( const uint8_t gpio_pin, const struct port_config *const config) { d54: b500 push {lr} d56: b083 sub sp, #12 config->mux_position = SYSTEM_PINMUX_GPIO; d58: ab01 add r3, sp, #4 d5a: 2280 movs r2, #128 ; 0x80 d5c: 701a strb r2, [r3, #0] struct system_pinmux_config pinmux_config; system_pinmux_get_config_defaults(&pinmux_config); pinmux_config.mux_position = SYSTEM_PINMUX_GPIO; pinmux_config.direction = (enum system_pinmux_pin_dir)config->direction; d5e: 780a ldrb r2, [r1, #0] d60: 705a strb r2, [r3, #1] pinmux_config.input_pull = (enum system_pinmux_pin_pull)config->input_pull; d62: 784a ldrb r2, [r1, #1] d64: 709a strb r2, [r3, #2] pinmux_config.powersave = config->powersave; d66: 788a ldrb r2, [r1, #2] d68: 70da strb r2, [r3, #3] system_pinmux_pin_set_config(gpio_pin, &pinmux_config); d6a: 0019 movs r1, r3 d6c: 4b01 ldr r3, [pc, #4] ; (d74 ) d6e: 4798 blx r3 } d70: b003 add sp, #12 d72: bd00 pop {pc} d74: 000012dd .word 0x000012dd 00000d78 : */ void port_group_set_config( PortGroup *const port, const uint32_t mask, const struct port_config *const config) { d78: b510 push {r4, lr} d7a: b082 sub sp, #8 d7c: ab01 add r3, sp, #4 d7e: 2480 movs r4, #128 ; 0x80 d80: 701c strb r4, [r3, #0] struct system_pinmux_config pinmux_config; system_pinmux_get_config_defaults(&pinmux_config); pinmux_config.mux_position = SYSTEM_PINMUX_GPIO; pinmux_config.direction = (enum system_pinmux_pin_dir)config->direction; d82: 7814 ldrb r4, [r2, #0] d84: 705c strb r4, [r3, #1] pinmux_config.input_pull = (enum system_pinmux_pin_pull)config->input_pull; d86: 7854 ldrb r4, [r2, #1] d88: 709c strb r4, [r3, #2] pinmux_config.powersave = config->powersave; d8a: 7892 ldrb r2, [r2, #2] d8c: 70da strb r2, [r3, #3] system_pinmux_group_set_config(port, mask, &pinmux_config); d8e: 001a movs r2, r3 d90: 4b01 ldr r3, [pc, #4] ; (d98 ) d92: 4798 blx r3 } d94: b002 add sp, #8 d96: bd10 pop {r4, pc} d98: 0000130d .word 0x0000130d 00000d9c : * * \returns Frequency of the given clock source, in Hz. */ uint32_t system_clock_source_get_hz( const enum system_clock_source clock_source) { d9c: b510 push {r4, lr} switch (clock_source) { d9e: 2808 cmp r0, #8 da0: d803 bhi.n daa da2: 0080 lsls r0, r0, #2 da4: 4b1c ldr r3, [pc, #112] ; (e18 ) da6: 581b ldr r3, [r3, r0] da8: 469f mov pc, r3 return _system_clock_inst.dpll.frequency; #endif default: return 0; daa: 2000 movs r0, #0 dac: e032 b.n e14 return _system_clock_inst.xosc.frequency; dae: 4b1b ldr r3, [pc, #108] ; (e1c ) db0: 6918 ldr r0, [r3, #16] db2: e02f b.n e14 return 8000000UL >> SYSCTRL->OSC8M.bit.PRESC; db4: 4b1a ldr r3, [pc, #104] ; (e20 ) db6: 6a1b ldr r3, [r3, #32] db8: 059b lsls r3, r3, #22 dba: 0f9b lsrs r3, r3, #30 dbc: 4819 ldr r0, [pc, #100] ; (e24 ) dbe: 40d8 lsrs r0, r3 dc0: e028 b.n e14 return _system_clock_inst.xosc32k.frequency; dc2: 4b16 ldr r3, [pc, #88] ; (e1c ) dc4: 6958 ldr r0, [r3, #20] dc6: e025 b.n e14 if (!(_system_clock_inst.dfll.control & SYSCTRL_DFLLCTRL_ENABLE)) dc8: 4b14 ldr r3, [pc, #80] ; (e1c ) dca: 681b ldr r3, [r3, #0] return 0; dcc: 2000 movs r0, #0 if (!(_system_clock_inst.dfll.control & SYSCTRL_DFLLCTRL_ENABLE)) dce: 079b lsls r3, r3, #30 dd0: d520 bpl.n e14 while (!(SYSCTRL->PCLKSR.reg & SYSCTRL_PCLKSR_DFLLRDY)) { dd2: 4913 ldr r1, [pc, #76] ; (e20 ) dd4: 2210 movs r2, #16 dd6: 68cb ldr r3, [r1, #12] dd8: 421a tst r2, r3 dda: d0fc beq.n dd6 switch(_system_clock_inst.dfll.control & ddc: 4b0f ldr r3, [pc, #60] ; (e1c ) dde: 681a ldr r2, [r3, #0] de0: 2324 movs r3, #36 ; 0x24 de2: 4013 ands r3, r2 de4: 2b04 cmp r3, #4 de6: d001 beq.n dec return 48000000UL; de8: 480f ldr r0, [pc, #60] ; (e28 ) dea: e013 b.n e14 return system_gclk_chan_get_hz(SYSCTRL_GCLK_ID_DFLL48) * dec: 2000 movs r0, #0 dee: 4b0f ldr r3, [pc, #60] ; (e2c ) df0: 4798 blx r3 (_system_clock_inst.dfll.mul & 0xffff); df2: 4b0a ldr r3, [pc, #40] ; (e1c ) df4: 689b ldr r3, [r3, #8] df6: 041b lsls r3, r3, #16 df8: 0c1b lsrs r3, r3, #16 return system_gclk_chan_get_hz(SYSCTRL_GCLK_ID_DFLL48) * dfa: 4358 muls r0, r3 dfc: e00a b.n e14 if (!(SYSCTRL->DPLLSTATUS.reg & SYSCTRL_DPLLSTATUS_ENABLE)) { dfe: 2350 movs r3, #80 ; 0x50 e00: 4a07 ldr r2, [pc, #28] ; (e20 ) e02: 5cd3 ldrb r3, [r2, r3] return 0; e04: 2000 movs r0, #0 if (!(SYSCTRL->DPLLSTATUS.reg & SYSCTRL_DPLLSTATUS_ENABLE)) { e06: 075b lsls r3, r3, #29 e08: d504 bpl.n e14 return _system_clock_inst.dpll.frequency; e0a: 4b04 ldr r3, [pc, #16] ; (e1c ) e0c: 68d8 ldr r0, [r3, #12] e0e: e001 b.n e14 return 32768UL; e10: 2080 movs r0, #128 ; 0x80 e12: 0200 lsls r0, r0, #8 } } e14: bd10 pop {r4, pc} e16: 46c0 nop ; (mov r8, r8) e18: 000186dc .word 0x000186dc e1c: 200026b8 .word 0x200026b8 e20: 40000800 .word 0x40000800 e24: 007a1200 .word 0x007a1200 e28: 02dc6c00 .word 0x02dc6c00 e2c: 00001201 .word 0x00001201 00000e30 : * * \param[in] config OSC8M configuration structure containing the new config */ void system_clock_source_osc8m_set_config( struct system_clock_source_osc8m_config *const config) { e30: b570 push {r4, r5, r6, lr} SYSCTRL_OSC8M_Type temp = SYSCTRL->OSC8M; e32: 490c ldr r1, [pc, #48] ; (e64 ) e34: 6a0b ldr r3, [r1, #32] /* Use temporary struct to reduce register access */ temp.bit.PRESC = config->prescaler; e36: 7804 ldrb r4, [r0, #0] temp.bit.ONDEMAND = config->on_demand; e38: 7885 ldrb r5, [r0, #2] temp.bit.RUNSTDBY = config->run_in_standby; SYSCTRL->OSC8M = temp; e3a: 7840 ldrb r0, [r0, #1] e3c: 2201 movs r2, #1 e3e: 4010 ands r0, r2 e40: 0180 lsls r0, r0, #6 e42: 2640 movs r6, #64 ; 0x40 e44: 43b3 bics r3, r6 e46: 4303 orrs r3, r0 e48: 402a ands r2, r5 e4a: 01d2 lsls r2, r2, #7 e4c: 2080 movs r0, #128 ; 0x80 e4e: 4383 bics r3, r0 e50: 4313 orrs r3, r2 e52: 2203 movs r2, #3 e54: 4022 ands r2, r4 e56: 0212 lsls r2, r2, #8 e58: 4803 ldr r0, [pc, #12] ; (e68 ) e5a: 4003 ands r3, r0 e5c: 4313 orrs r3, r2 e5e: 620b str r3, [r1, #32] } e60: bd70 pop {r4, r5, r6, pc} e62: 46c0 nop ; (mov r8, r8) e64: 40000800 .word 0x40000800 e68: fffffcff .word 0xfffffcff 00000e6c : * device */ enum status_code system_clock_source_enable( const enum system_clock_source clock_source) { switch (clock_source) { e6c: 2808 cmp r0, #8 e6e: d803 bhi.n e78 e70: 0080 lsls r0, r0, #2 e72: 4b25 ldr r3, [pc, #148] ; (f08 ) e74: 581b ldr r3, [r3, r0] e76: 469f mov pc, r3 /* Always enabled */ return STATUS_OK; default: Assert(false); return STATUS_ERR_INVALID_ARG; e78: 2017 movs r0, #23 e7a: e044 b.n f06 SYSCTRL->OSC8M.reg |= SYSCTRL_OSC8M_ENABLE; e7c: 4a23 ldr r2, [pc, #140] ; (f0c ) e7e: 6a13 ldr r3, [r2, #32] e80: 2102 movs r1, #2 e82: 430b orrs r3, r1 e84: 6213 str r3, [r2, #32] return STATUS_OK; e86: 2000 movs r0, #0 e88: e03d b.n f06 SYSCTRL->OSC32K.reg |= SYSCTRL_OSC32K_ENABLE; e8a: 4a20 ldr r2, [pc, #128] ; (f0c ) e8c: 6993 ldr r3, [r2, #24] e8e: 2102 movs r1, #2 e90: 430b orrs r3, r1 e92: 6193 str r3, [r2, #24] } return STATUS_OK; e94: 2000 movs r0, #0 break; e96: e036 b.n f06 SYSCTRL->XOSC.reg |= SYSCTRL_XOSC_ENABLE; e98: 4a1c ldr r2, [pc, #112] ; (f0c ) e9a: 8a13 ldrh r3, [r2, #16] e9c: 2102 movs r1, #2 e9e: 430b orrs r3, r1 ea0: 8213 strh r3, [r2, #16] return STATUS_OK; ea2: 2000 movs r0, #0 break; ea4: e02f b.n f06 SYSCTRL->XOSC32K.reg |= SYSCTRL_XOSC32K_ENABLE; ea6: 4a19 ldr r2, [pc, #100] ; (f0c ) ea8: 8a93 ldrh r3, [r2, #20] eaa: 2102 movs r1, #2 eac: 430b orrs r3, r1 eae: 8293 strh r3, [r2, #20] return STATUS_OK; eb0: 2000 movs r0, #0 break; eb2: e028 b.n f06 _system_clock_inst.dfll.control |= SYSCTRL_DFLLCTRL_ENABLE; eb4: 4916 ldr r1, [pc, #88] ; (f10 ) eb6: 680b ldr r3, [r1, #0] eb8: 2202 movs r2, #2 eba: 4313 orrs r3, r2 ebc: 600b str r3, [r1, #0] SYSCTRL->DFLLCTRL.reg = SYSCTRL_DFLLCTRL_ENABLE; ebe: 4b13 ldr r3, [pc, #76] ; (f0c ) ec0: 849a strh r2, [r3, #36] ; 0x24 while (!(SYSCTRL->PCLKSR.reg & SYSCTRL_PCLKSR_DFLLRDY)) { ec2: 0019 movs r1, r3 ec4: 320e adds r2, #14 ec6: 68cb ldr r3, [r1, #12] ec8: 421a tst r2, r3 eca: d0fc beq.n ec6 SYSCTRL->DFLLMUL.reg = _system_clock_inst.dfll.mul; ecc: 4a10 ldr r2, [pc, #64] ; (f10 ) ece: 6891 ldr r1, [r2, #8] ed0: 4b0e ldr r3, [pc, #56] ; (f0c ) ed2: 62d9 str r1, [r3, #44] ; 0x2c SYSCTRL->DFLLVAL.reg = _system_clock_inst.dfll.val; ed4: 6852 ldr r2, [r2, #4] ed6: 629a str r2, [r3, #40] ; 0x28 SYSCTRL->DFLLCTRL.reg = 0; ed8: 2200 movs r2, #0 eda: 849a strh r2, [r3, #36] ; 0x24 while (!(SYSCTRL->PCLKSR.reg & SYSCTRL_PCLKSR_DFLLRDY)) { edc: 0019 movs r1, r3 ede: 3210 adds r2, #16 ee0: 68cb ldr r3, [r1, #12] ee2: 421a tst r2, r3 ee4: d0fc beq.n ee0 SYSCTRL->DFLLCTRL.reg = _system_clock_inst.dfll.control; ee6: 4b0a ldr r3, [pc, #40] ; (f10 ) ee8: 681b ldr r3, [r3, #0] eea: b29b uxth r3, r3 eec: 4a07 ldr r2, [pc, #28] ; (f0c ) eee: 8493 strh r3, [r2, #36] ; 0x24 return STATUS_OK; ef0: 2000 movs r0, #0 ef2: e008 b.n f06 SYSCTRL->DPLLCTRLA.reg |= SYSCTRL_DPLLCTRLA_ENABLE; ef4: 4905 ldr r1, [pc, #20] ; (f0c ) ef6: 2244 movs r2, #68 ; 0x44 ef8: 5c8b ldrb r3, [r1, r2] efa: 2002 movs r0, #2 efc: 4303 orrs r3, r0 efe: 548b strb r3, [r1, r2] return STATUS_OK; f00: 2000 movs r0, #0 break; f02: e000 b.n f06 return STATUS_OK; f04: 2000 movs r0, #0 } f06: 4770 bx lr f08: 00018700 .word 0x00018700 f0c: 40000800 .word 0x40000800 f10: 200026b8 .word 0x200026b8 00000f14 : * \note OSC8M is always enabled and if user selects other clocks for GCLK generators, * the OSC8M default enable can be disabled after system_clock_init. Make sure the * clock switch successfully before disabling OSC8M. */ void system_clock_init(void) { f14: b530 push {r4, r5, lr} f16: b085 sub sp, #20 /* Various bits in the INTFLAG register can be set to one at startup. This will ensure that these bits are cleared */ SYSCTRL->INTFLAG.reg = SYSCTRL_INTFLAG_BOD33RDY | SYSCTRL_INTFLAG_BOD33DET | f18: 22c2 movs r2, #194 ; 0xc2 f1a: 00d2 lsls r2, r2, #3 f1c: 4b1a ldr r3, [pc, #104] ; (f88 ) f1e: 609a str r2, [r3, #8] static inline void system_flash_set_waitstates(uint8_t wait_states) { Assert(NVMCTRL_CTRLB_RWS((uint32_t)wait_states) == ((uint32_t)wait_states << NVMCTRL_CTRLB_RWS_Pos)); NVMCTRL->CTRLB.bit.RWS = wait_states; f20: 4a1a ldr r2, [pc, #104] ; (f8c ) f22: 6853 ldr r3, [r2, #4] f24: 211e movs r1, #30 f26: 438b bics r3, r1 f28: 6053 str r3, [r2, #4] gclk_conf.source_generator = GCLK_GENERATOR_1; f2a: 2301 movs r3, #1 f2c: 466a mov r2, sp f2e: 7013 strb r3, [r2, #0] for (gclk_id = 0; gclk_id < GCLK_NUM; gclk_id++) { f30: 2400 movs r4, #0 system_gclk_chan_set_config(gclk_id, &gclk_conf); f32: 4d17 ldr r5, [pc, #92] ; (f90 ) f34: b2e0 uxtb r0, r4 f36: 4669 mov r1, sp f38: 47a8 blx r5 for (gclk_id = 0; gclk_id < GCLK_NUM; gclk_id++) { f3a: 3401 adds r4, #1 f3c: 2c25 cmp r4, #37 ; 0x25 f3e: d1f9 bne.n f34 config->run_in_standby = false; f40: a803 add r0, sp, #12 f42: 2400 movs r4, #0 f44: 7044 strb r4, [r0, #1] config->on_demand = true; f46: 2501 movs r5, #1 f48: 7085 strb r5, [r0, #2] /* OSC8M */ struct system_clock_source_osc8m_config osc8m_conf; system_clock_source_osc8m_get_config_defaults(&osc8m_conf); osc8m_conf.prescaler = CONF_CLOCK_OSC8M_PRESCALER; f4a: 7004 strb r4, [r0, #0] osc8m_conf.on_demand = CONF_CLOCK_OSC8M_ON_DEMAND; osc8m_conf.run_in_standby = CONF_CLOCK_OSC8M_RUN_IN_STANDBY; system_clock_source_osc8m_set_config(&osc8m_conf); f4c: 4b11 ldr r3, [pc, #68] ; (f94 ) f4e: 4798 blx r3 system_clock_source_enable(SYSTEM_CLOCK_SOURCE_OSC8M); f50: 2006 movs r0, #6 f52: 4b11 ldr r3, [pc, #68] ; (f98 ) f54: 4798 blx r3 /* GCLK */ #if CONF_CLOCK_CONFIGURE_GCLK == true system_gclk_init(); f56: 4b11 ldr r3, [pc, #68] ; (f9c ) f58: 4798 blx r3 PM->CPUSEL.reg = (uint32_t)divider; f5a: 4b11 ldr r3, [pc, #68] ; (fa0 ) f5c: 721c strb r4, [r3, #8] PM->APBASEL.reg = (uint32_t)divider; f5e: 725c strb r4, [r3, #9] PM->APBBSEL.reg = (uint32_t)divider; f60: 729c strb r4, [r3, #10] PM->APBCSEL.reg = (uint32_t)divider; f62: 72dc strb r4, [r3, #11] { /* Sanity check arguments */ Assert(config); /* Default configuration values */ config->division_factor = 1; f64: 9501 str r5, [sp, #4] config->high_when_disabled = false; f66: 466b mov r3, sp f68: 705c strb r4, [r3, #1] #if SAML21 || SAML22 || SAMR30 || SAMR34 || SAMR35 config->source_clock = GCLK_SOURCE_OSC16M; #elif (SAMC20) || (SAMC21) config->source_clock = GCLK_SOURCE_OSC48M; #else config->source_clock = GCLK_SOURCE_OSC8M; f6a: 2306 movs r3, #6 f6c: 466a mov r2, sp f6e: 7013 strb r3, [r2, #0] #endif config->run_in_standby = false; f70: 7214 strb r4, [r2, #8] config->output_enable = false; f72: 7254 strb r4, [r2, #9] system_apb_clock_set_divider(SYSTEM_CLOCK_APB_APBC, CONF_CLOCK_APBC_DIVIDER); /* GCLK 0 */ #if CONF_CLOCK_CONFIGURE_GCLK == true /* Configure the main GCLK last as it might depend on other generators */ _CONF_CLOCK_GCLK_CONFIG(0, ~); f74: 4669 mov r1, sp f76: 2000 movs r0, #0 f78: 4b0a ldr r3, [pc, #40] ; (fa4 ) f7a: 4798 blx r3 f7c: 2000 movs r0, #0 f7e: 4b0a ldr r3, [pc, #40] ; (fa8 ) f80: 4798 blx r3 #endif } f82: b005 add sp, #20 f84: bd30 pop {r4, r5, pc} f86: 46c0 nop ; (mov r8, r8) f88: 40000800 .word 0x40000800 f8c: 41004000 .word 0x41004000 f90: 000011e5 .word 0x000011e5 f94: 00000e31 .word 0x00000e31 f98: 00000e6d .word 0x00000e6d f9c: 00000fad .word 0x00000fad fa0: 40000400 .word 0x40000400 fa4: 00000fd1 .word 0x00000fd1 fa8: 00001089 .word 0x00001089 00000fac : PM->APBAMASK.reg |= mask; fac: 4a06 ldr r2, [pc, #24] ; (fc8 ) fae: 6993 ldr r3, [r2, #24] fb0: 2108 movs r1, #8 fb2: 430b orrs r3, r1 fb4: 6193 str r3, [r2, #24] { /* Turn on the digital interface clock */ system_apb_clock_set_mask(SYSTEM_CLOCK_APB_APBA, PM_APBAMASK_GCLK); /* Software reset the module to ensure it is re-initialized correctly */ GCLK->CTRL.reg = GCLK_CTRL_SWRST; fb6: 2201 movs r2, #1 fb8: 4b04 ldr r3, [pc, #16] ; (fcc ) fba: 701a strb r2, [r3, #0] while (GCLK->CTRL.reg & GCLK_CTRL_SWRST) { fbc: 0019 movs r1, r3 fbe: 780b ldrb r3, [r1, #0] fc0: 4213 tst r3, r2 fc2: d1fc bne.n fbe /* Wait for reset to complete */ } } fc4: 4770 bx lr fc6: 46c0 nop ; (mov r8, r8) fc8: 40000400 .word 0x40000400 fcc: 40000c00 .word 0x40000c00 00000fd0 : * \param[in] config Configuration settings for the generator */ void system_gclk_gen_set_config( const uint8_t generator, struct system_gclk_gen_config *const config) { fd0: b570 push {r4, r5, r6, lr} fd2: 0006 movs r6, r0 /* Sanity check arguments */ Assert(config); /* Cache new register configurations to minimize sync requirements. */ uint32_t new_genctrl_config = (generator << GCLK_GENCTRL_ID_Pos); fd4: 0004 movs r4, r0 uint32_t new_gendiv_config = (generator << GCLK_GENDIV_ID_Pos); /* Select the requested source clock for the generator */ new_genctrl_config |= config->source_clock << GCLK_GENCTRL_SRC_Pos; fd6: 780d ldrb r5, [r1, #0] fd8: 022d lsls r5, r5, #8 fda: 4305 orrs r5, r0 /* Configure the clock to be either high or low when disabled */ if (config->high_when_disabled) { fdc: 784b ldrb r3, [r1, #1] fde: 2b00 cmp r3, #0 fe0: d002 beq.n fe8 new_genctrl_config |= GCLK_GENCTRL_OOV; fe2: 2380 movs r3, #128 ; 0x80 fe4: 02db lsls r3, r3, #11 fe6: 431d orrs r5, r3 } /* Configure if the clock output to I/O pin should be enabled. */ if (config->output_enable) { fe8: 7a4b ldrb r3, [r1, #9] fea: 2b00 cmp r3, #0 fec: d002 beq.n ff4 new_genctrl_config |= GCLK_GENCTRL_OE; fee: 2380 movs r3, #128 ; 0x80 ff0: 031b lsls r3, r3, #12 ff2: 431d orrs r5, r3 } /* Set division factor */ if (config->division_factor > 1) { ff4: 6848 ldr r0, [r1, #4] ff6: 2801 cmp r0, #1 ff8: d910 bls.n 101c /* Check if division is a power of two */ if (((config->division_factor & (config->division_factor - 1)) == 0)) { ffa: 1e43 subs r3, r0, #1 ffc: 4218 tst r0, r3 ffe: d134 bne.n 106a * register */ uint32_t div2_count = 0; uint32_t mask; for (mask = (1UL << 1); mask < config->division_factor; 1000: 2802 cmp r0, #2 1002: d930 bls.n 1066 1004: 2302 movs r3, #2 1006: 2200 movs r2, #0 mask <<= 1) { div2_count++; 1008: 3201 adds r2, #1 mask <<= 1) { 100a: 005b lsls r3, r3, #1 for (mask = (1UL << 1); mask < config->division_factor; 100c: 4298 cmp r0, r3 100e: d8fb bhi.n 1008 } /* Set binary divider power of 2 division factor */ new_gendiv_config |= div2_count << GCLK_GENDIV_DIV_Pos; 1010: 0212 lsls r2, r2, #8 1012: 4332 orrs r2, r6 1014: 0014 movs r4, r2 new_genctrl_config |= GCLK_GENCTRL_DIVSEL; 1016: 2380 movs r3, #128 ; 0x80 1018: 035b lsls r3, r3, #13 101a: 431d orrs r5, r3 } } /* Enable or disable the clock in standby mode */ if (config->run_in_standby) { 101c: 7a0b ldrb r3, [r1, #8] 101e: 2b00 cmp r3, #0 1020: d002 beq.n 1028 new_genctrl_config |= GCLK_GENCTRL_RUNSTDBY; 1022: 2380 movs r3, #128 ; 0x80 1024: 039b lsls r3, r3, #14 1026: 431d orrs r5, r3 if (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY){ 1028: 4a13 ldr r2, [pc, #76] ; (1078 ) 102a: 7853 ldrb r3, [r2, #1] } while (system_gclk_is_syncing()) { 102c: b25b sxtb r3, r3 102e: 2b00 cmp r3, #0 1030: dbfb blt.n 102a cpu_irq_enter_critical(); 1032: 4b12 ldr r3, [pc, #72] ; (107c ) 1034: 4798 blx r3 }; system_interrupt_enter_critical_section(); /* Select the correct generator */ *((uint8_t*)&GCLK->GENDIV.reg) = generator; 1036: 4b12 ldr r3, [pc, #72] ; (1080 ) 1038: 701e strb r6, [r3, #0] if (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY){ 103a: 4a0f ldr r2, [pc, #60] ; (1078 ) 103c: 7853 ldrb r3, [r2, #1] /* Write the new generator configuration */ while (system_gclk_is_syncing()) { 103e: b25b sxtb r3, r3 1040: 2b00 cmp r3, #0 1042: dbfb blt.n 103c /* Wait for synchronization */ }; GCLK->GENDIV.reg = new_gendiv_config; 1044: 4b0c ldr r3, [pc, #48] ; (1078 ) 1046: 609c str r4, [r3, #8] if (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY){ 1048: 001a movs r2, r3 104a: 7853 ldrb r3, [r2, #1] while (system_gclk_is_syncing()) { 104c: b25b sxtb r3, r3 104e: 2b00 cmp r3, #0 1050: dbfb blt.n 104a /* Wait for synchronization */ }; GCLK->GENCTRL.reg = new_genctrl_config | (GCLK->GENCTRL.reg & GCLK_GENCTRL_GENEN); 1052: 4a09 ldr r2, [pc, #36] ; (1078 ) 1054: 6853 ldr r3, [r2, #4] 1056: 2180 movs r1, #128 ; 0x80 1058: 0249 lsls r1, r1, #9 105a: 400b ands r3, r1 105c: 431d orrs r5, r3 105e: 6055 str r5, [r2, #4] cpu_irq_leave_critical(); 1060: 4b08 ldr r3, [pc, #32] ; (1084 ) 1062: 4798 blx r3 system_interrupt_leave_critical_section(); } 1064: bd70 pop {r4, r5, r6, pc} for (mask = (1UL << 1); mask < config->division_factor; 1066: 2200 movs r2, #0 1068: e7d2 b.n 1010 (config->division_factor) << GCLK_GENDIV_DIV_Pos; 106a: 0204 lsls r4, r0, #8 new_gendiv_config |= 106c: 4334 orrs r4, r6 new_genctrl_config |= GCLK_GENCTRL_IDC; 106e: 2380 movs r3, #128 ; 0x80 1070: 029b lsls r3, r3, #10 1072: 431d orrs r5, r3 1074: e7d2 b.n 101c 1076: 46c0 nop ; (mov r8, r8) 1078: 40000c00 .word 0x40000c00 107c: 00000cad .word 0x00000cad 1080: 40000c08 .word 0x40000c08 1084: 00000ced .word 0x00000ced 00001088 : * * \param[in] generator Generic Clock Generator index to enable */ void system_gclk_gen_enable( const uint8_t generator) { 1088: b510 push {r4, lr} 108a: 0004 movs r4, r0 if (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY){ 108c: 4a0b ldr r2, [pc, #44] ; (10bc ) 108e: 7853 ldrb r3, [r2, #1] while (system_gclk_is_syncing()) { 1090: b25b sxtb r3, r3 1092: 2b00 cmp r3, #0 1094: dbfb blt.n 108e cpu_irq_enter_critical(); 1096: 4b0a ldr r3, [pc, #40] ; (10c0 ) 1098: 4798 blx r3 }; system_interrupt_enter_critical_section(); /* Select the requested generator */ *((uint8_t*)&GCLK->GENCTRL.reg) = generator; 109a: 4b0a ldr r3, [pc, #40] ; (10c4 ) 109c: 701c strb r4, [r3, #0] if (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY){ 109e: 4a07 ldr r2, [pc, #28] ; (10bc ) 10a0: 7853 ldrb r3, [r2, #1] while (system_gclk_is_syncing()) { 10a2: b25b sxtb r3, r3 10a4: 2b00 cmp r3, #0 10a6: dbfb blt.n 10a0 /* Wait for synchronization */ }; /* Enable generator */ GCLK->GENCTRL.reg |= GCLK_GENCTRL_GENEN; 10a8: 4a04 ldr r2, [pc, #16] ; (10bc ) 10aa: 6851 ldr r1, [r2, #4] 10ac: 2380 movs r3, #128 ; 0x80 10ae: 025b lsls r3, r3, #9 10b0: 430b orrs r3, r1 10b2: 6053 str r3, [r2, #4] cpu_irq_leave_critical(); 10b4: 4b04 ldr r3, [pc, #16] ; (10c8 ) 10b6: 4798 blx r3 system_interrupt_leave_critical_section(); } 10b8: bd10 pop {r4, pc} 10ba: 46c0 nop ; (mov r8, r8) 10bc: 40000c00 .word 0x40000c00 10c0: 00000cad .word 0x00000cad 10c4: 40000c04 .word 0x40000c04 10c8: 00000ced .word 0x00000ced 000010cc : * * \return The frequency of the generic clock generator, in Hz. */ uint32_t system_gclk_gen_get_hz( const uint8_t generator) { 10cc: b570 push {r4, r5, r6, lr} 10ce: 0004 movs r4, r0 if (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY){ 10d0: 4a1a ldr r2, [pc, #104] ; (113c ) 10d2: 7853 ldrb r3, [r2, #1] while (system_gclk_is_syncing()) { 10d4: b25b sxtb r3, r3 10d6: 2b00 cmp r3, #0 10d8: dbfb blt.n 10d2 cpu_irq_enter_critical(); 10da: 4b19 ldr r3, [pc, #100] ; (1140 ) 10dc: 4798 blx r3 }; system_interrupt_enter_critical_section(); /* Select the appropriate generator */ *((uint8_t*)&GCLK->GENCTRL.reg) = generator; 10de: 4b19 ldr r3, [pc, #100] ; (1144 ) 10e0: 701c strb r4, [r3, #0] if (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY){ 10e2: 4a16 ldr r2, [pc, #88] ; (113c ) 10e4: 7853 ldrb r3, [r2, #1] while (system_gclk_is_syncing()) { 10e6: b25b sxtb r3, r3 10e8: 2b00 cmp r3, #0 10ea: dbfb blt.n 10e4 /* Wait for synchronization */ }; /* Get the frequency of the source connected to the GCLK generator */ uint32_t gen_input_hz = system_clock_source_get_hz( (enum system_clock_source)GCLK->GENCTRL.bit.SRC); 10ec: 4e13 ldr r6, [pc, #76] ; (113c ) 10ee: 6870 ldr r0, [r6, #4] 10f0: 04c0 lsls r0, r0, #19 10f2: 0ec0 lsrs r0, r0, #27 uint32_t gen_input_hz = system_clock_source_get_hz( 10f4: 4b14 ldr r3, [pc, #80] ; (1148 ) 10f6: 4798 blx r3 10f8: 0005 movs r5, r0 *((uint8_t*)&GCLK->GENCTRL.reg) = generator; 10fa: 4b12 ldr r3, [pc, #72] ; (1144 ) 10fc: 701c strb r4, [r3, #0] uint8_t divsel = GCLK->GENCTRL.bit.DIVSEL; 10fe: 6876 ldr r6, [r6, #4] 1100: 02f6 lsls r6, r6, #11 1102: 0ff6 lsrs r6, r6, #31 /* Select the appropriate generator division register */ *((uint8_t*)&GCLK->GENDIV.reg) = generator; 1104: 4b11 ldr r3, [pc, #68] ; (114c ) 1106: 701c strb r4, [r3, #0] if (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY){ 1108: 4a0c ldr r2, [pc, #48] ; (113c ) 110a: 7853 ldrb r3, [r2, #1] while (system_gclk_is_syncing()) { 110c: b25b sxtb r3, r3 110e: 2b00 cmp r3, #0 1110: dbfb blt.n 110a /* Wait for synchronization */ }; uint32_t divider = GCLK->GENDIV.bit.DIV; 1112: 4b0a ldr r3, [pc, #40] ; (113c ) 1114: 689c ldr r4, [r3, #8] 1116: 0224 lsls r4, r4, #8 1118: 0c24 lsrs r4, r4, #16 cpu_irq_leave_critical(); 111a: 4b0d ldr r3, [pc, #52] ; (1150 ) 111c: 4798 blx r3 system_interrupt_leave_critical_section(); /* Check if the generator is using fractional or binary division */ if (!divsel && divider > 1) { 111e: 2e00 cmp r6, #0 1120: d107 bne.n 1132 1122: 2c01 cmp r4, #1 1124: d907 bls.n 1136 gen_input_hz /= divider; 1126: 0021 movs r1, r4 1128: 0028 movs r0, r5 112a: 4b0a ldr r3, [pc, #40] ; (1154 ) 112c: 4798 blx r3 112e: 0005 movs r5, r0 1130: e001 b.n 1136 } else if (divsel) { gen_input_hz >>= (divider+1); 1132: 3401 adds r4, #1 1134: 40e5 lsrs r5, r4 } return gen_input_hz; } 1136: 0028 movs r0, r5 1138: bd70 pop {r4, r5, r6, pc} 113a: 46c0 nop ; (mov r8, r8) 113c: 40000c00 .word 0x40000c00 1140: 00000cad .word 0x00000cad 1144: 40000c04 .word 0x40000c04 1148: 00000d9d .word 0x00000d9d 114c: 40000c08 .word 0x40000c08 1150: 00000ced .word 0x00000ced 1154: 00017881 .word 0x00017881 00001158 : * * \param[in] channel Generic Clock channel to enable */ void system_gclk_chan_enable( const uint8_t channel) { 1158: b510 push {r4, lr} 115a: 0004 movs r4, r0 cpu_irq_enter_critical(); 115c: 4b06 ldr r3, [pc, #24] ; (1178 ) 115e: 4798 blx r3 system_interrupt_enter_critical_section(); /* Select the requested generator channel */ *((uint8_t*)&GCLK->CLKCTRL.reg) = channel; 1160: 4b06 ldr r3, [pc, #24] ; (117c ) 1162: 701c strb r4, [r3, #0] /* Enable the generic clock */ GCLK->CLKCTRL.reg |= GCLK_CLKCTRL_CLKEN; 1164: 4a06 ldr r2, [pc, #24] ; (1180 ) 1166: 8853 ldrh r3, [r2, #2] 1168: 2180 movs r1, #128 ; 0x80 116a: 01c9 lsls r1, r1, #7 116c: 430b orrs r3, r1 116e: 8053 strh r3, [r2, #2] cpu_irq_leave_critical(); 1170: 4b04 ldr r3, [pc, #16] ; (1184 ) 1172: 4798 blx r3 system_interrupt_leave_critical_section(); } 1174: bd10 pop {r4, pc} 1176: 46c0 nop ; (mov r8, r8) 1178: 00000cad .word 0x00000cad 117c: 40000c02 .word 0x40000c02 1180: 40000c00 .word 0x40000c00 1184: 00000ced .word 0x00000ced 00001188 : * * \param[in] channel Generic Clock channel to disable */ void system_gclk_chan_disable( const uint8_t channel) { 1188: b510 push {r4, lr} 118a: 0004 movs r4, r0 cpu_irq_enter_critical(); 118c: 4b0f ldr r3, [pc, #60] ; (11cc ) 118e: 4798 blx r3 system_interrupt_enter_critical_section(); /* Select the requested generator channel */ *((uint8_t*)&GCLK->CLKCTRL.reg) = channel; 1190: 4b0f ldr r3, [pc, #60] ; (11d0 ) 1192: 701c strb r4, [r3, #0] /* Sanity check WRTLOCK */ Assert(!GCLK->CLKCTRL.bit.WRTLOCK); /* Switch to known-working source so that the channel can be disabled */ uint32_t prev_gen_id = GCLK->CLKCTRL.bit.GEN; 1194: 4a0f ldr r2, [pc, #60] ; (11d4 ) 1196: 8853 ldrh r3, [r2, #2] 1198: 051b lsls r3, r3, #20 119a: 0f18 lsrs r0, r3, #28 GCLK->CLKCTRL.bit.GEN = 0; 119c: 8853 ldrh r3, [r2, #2] 119e: 490e ldr r1, [pc, #56] ; (11d8 ) 11a0: 400b ands r3, r1 11a2: 8053 strh r3, [r2, #2] /* Disable the generic clock */ GCLK->CLKCTRL.reg &= ~GCLK_CLKCTRL_CLKEN; 11a4: 8853 ldrh r3, [r2, #2] 11a6: 490d ldr r1, [pc, #52] ; (11dc ) 11a8: 400b ands r3, r1 11aa: 8053 strh r3, [r2, #2] while (GCLK->CLKCTRL.reg & GCLK_CLKCTRL_CLKEN) { 11ac: 0011 movs r1, r2 11ae: 2280 movs r2, #128 ; 0x80 11b0: 01d2 lsls r2, r2, #7 11b2: 884b ldrh r3, [r1, #2] 11b4: 4213 tst r3, r2 11b6: d1fc bne.n 11b2 /* Wait for clock to become disabled */ } /* Restore previous configured clock generator */ GCLK->CLKCTRL.bit.GEN = prev_gen_id; 11b8: 4906 ldr r1, [pc, #24] ; (11d4 ) 11ba: 884a ldrh r2, [r1, #2] 11bc: 0203 lsls r3, r0, #8 11be: 4806 ldr r0, [pc, #24] ; (11d8 ) 11c0: 4002 ands r2, r0 11c2: 4313 orrs r3, r2 11c4: 804b strh r3, [r1, #2] cpu_irq_leave_critical(); 11c6: 4b06 ldr r3, [pc, #24] ; (11e0 ) 11c8: 4798 blx r3 system_interrupt_leave_critical_section(); } 11ca: bd10 pop {r4, pc} 11cc: 00000cad .word 0x00000cad 11d0: 40000c02 .word 0x40000c02 11d4: 40000c00 .word 0x40000c00 11d8: fffff0ff .word 0xfffff0ff 11dc: ffffbfff .word 0xffffbfff 11e0: 00000ced .word 0x00000ced 000011e4 : { 11e4: b510 push {r4, lr} new_clkctrl_config |= config->source_generator << GCLK_CLKCTRL_GEN_Pos; 11e6: 780c ldrb r4, [r1, #0] 11e8: 0224 lsls r4, r4, #8 11ea: 4304 orrs r4, r0 system_gclk_chan_disable(channel); 11ec: 4b02 ldr r3, [pc, #8] ; (11f8 ) 11ee: 4798 blx r3 GCLK->CLKCTRL.reg = new_clkctrl_config; 11f0: b2a4 uxth r4, r4 11f2: 4b02 ldr r3, [pc, #8] ; (11fc ) 11f4: 805c strh r4, [r3, #2] } 11f6: bd10 pop {r4, pc} 11f8: 00001189 .word 0x00001189 11fc: 40000c00 .word 0x40000c00 00001200 : * * \return The frequency of the generic clock channel, in Hz. */ uint32_t system_gclk_chan_get_hz( const uint8_t channel) { 1200: b510 push {r4, lr} 1202: 0004 movs r4, r0 cpu_irq_enter_critical(); 1204: 4b06 ldr r3, [pc, #24] ; (1220 ) 1206: 4798 blx r3 uint8_t gen_id; system_interrupt_enter_critical_section(); /* Select the requested generic clock channel */ *((uint8_t*)&GCLK->CLKCTRL.reg) = channel; 1208: 4b06 ldr r3, [pc, #24] ; (1224 ) 120a: 701c strb r4, [r3, #0] gen_id = GCLK->CLKCTRL.bit.GEN; 120c: 4b06 ldr r3, [pc, #24] ; (1228 ) 120e: 885c ldrh r4, [r3, #2] 1210: 0524 lsls r4, r4, #20 1212: 0f24 lsrs r4, r4, #28 cpu_irq_leave_critical(); 1214: 4b05 ldr r3, [pc, #20] ; (122c ) 1216: 4798 blx r3 system_interrupt_leave_critical_section(); /* Return the clock speed of the associated GCLK generator */ return system_gclk_gen_get_hz(gen_id); 1218: 0020 movs r0, r4 121a: 4b05 ldr r3, [pc, #20] ; (1230 ) 121c: 4798 blx r3 } 121e: bd10 pop {r4, pc} 1220: 00000cad .word 0x00000cad 1224: 40000c02 .word 0x40000c02 1228: 40000c00 .word 0x40000c00 122c: 00000ced .word 0x00000ced 1230: 000010cd .word 0x000010cd 00001234 <_system_pinmux_config>: */ static void _system_pinmux_config( PortGroup *const port, const uint32_t pin_mask, const struct system_pinmux_config *const config) { 1234: b530 push {r4, r5, lr} /* Track the configuration bits into a temporary variable before writing */ uint32_t pin_cfg = 0; /* Enabled powersave mode, don't create configuration */ if (!config->powersave) { 1236: 78d3 ldrb r3, [r2, #3] 1238: 2b00 cmp r3, #0 123a: d135 bne.n 12a8 <_system_pinmux_config+0x74> /* Enable the pin peripheral MUX flag if non-GPIO selected (pinmux will * be written later) and store the new MUX mask */ if (config->mux_position != SYSTEM_PINMUX_GPIO) { 123c: 7813 ldrb r3, [r2, #0] 123e: 2b80 cmp r3, #128 ; 0x80 1240: d029 beq.n 1296 <_system_pinmux_config+0x62> pin_cfg |= PORT_WRCONFIG_PMUXEN; pin_cfg |= (config->mux_position << PORT_WRCONFIG_PMUX_Pos); 1242: 061b lsls r3, r3, #24 1244: 2480 movs r4, #128 ; 0x80 1246: 0264 lsls r4, r4, #9 1248: 4323 orrs r3, r4 } /* Check if the user has requested that the input buffer be enabled */ if ((config->direction == SYSTEM_PINMUX_PIN_DIR_INPUT) || 124a: 7854 ldrb r4, [r2, #1] 124c: 2502 movs r5, #2 124e: 43ac bics r4, r5 1250: d106 bne.n 1260 <_system_pinmux_config+0x2c> (config->direction == SYSTEM_PINMUX_PIN_DIR_OUTPUT_WITH_READBACK)) { /* Enable input buffer flag */ pin_cfg |= PORT_WRCONFIG_INEN; /* Enable pull-up/pull-down control flag if requested */ if (config->input_pull != SYSTEM_PINMUX_PIN_PULL_NONE) { 1252: 7894 ldrb r4, [r2, #2] 1254: 2c00 cmp r4, #0 1256: d120 bne.n 129a <_system_pinmux_config+0x66> pin_cfg |= PORT_WRCONFIG_INEN; 1258: 2480 movs r4, #128 ; 0x80 125a: 02a4 lsls r4, r4, #10 125c: 4323 orrs r3, r4 pin_cfg |= PORT_WRCONFIG_PULLEN; } /* Clear the port DIR bits to disable the output buffer */ port->DIRCLR.reg = pin_mask; 125e: 6041 str r1, [r0, #4] } /* Check if the user has requested that the output buffer be enabled */ if ((config->direction == SYSTEM_PINMUX_PIN_DIR_OUTPUT) || 1260: 7854 ldrb r4, [r2, #1] 1262: 3c01 subs r4, #1 1264: 2c01 cmp r4, #1 1266: d91c bls.n 12a2 <_system_pinmux_config+0x6e> port->DIRCLR.reg = pin_mask; } /* The Write Configuration register (WRCONFIG) requires the * pins to to grouped into two 16-bit half-words - split them out here */ uint32_t lower_pin_mask = (pin_mask & 0xFFFF); 1268: 040d lsls r5, r1, #16 126a: 0c2d lsrs r5, r5, #16 /* Configure the lower 16-bits of the port to the desired configuration, * including the pin peripheral multiplexer just in case it is enabled */ port->WRCONFIG.reg = (lower_pin_mask << PORT_WRCONFIG_PINMASK_Pos) | pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG; 126c: 24a0 movs r4, #160 ; 0xa0 126e: 05e4 lsls r4, r4, #23 1270: 432c orrs r4, r5 1272: 431c orrs r4, r3 = (lower_pin_mask << PORT_WRCONFIG_PINMASK_Pos) | 1274: 6284 str r4, [r0, #40] ; 0x28 uint32_t upper_pin_mask = (pin_mask >> 16); 1276: 0c0d lsrs r5, r1, #16 /* Configure the upper 16-bits of the port to the desired configuration, * including the pin peripheral multiplexer just in case it is enabled */ port->WRCONFIG.reg = (upper_pin_mask << PORT_WRCONFIG_PINMASK_Pos) | pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG | 1278: 24d0 movs r4, #208 ; 0xd0 127a: 0624 lsls r4, r4, #24 127c: 432c orrs r4, r5 127e: 431c orrs r4, r3 = (upper_pin_mask << PORT_WRCONFIG_PINMASK_Pos) | 1280: 6284 str r4, [r0, #40] ; 0x28 PORT_WRCONFIG_HWSEL; if(!config->powersave) { 1282: 78d4 ldrb r4, [r2, #3] 1284: 2c00 cmp r4, #0 1286: d122 bne.n 12ce <_system_pinmux_config+0x9a> /* Set the pull-up state once the port pins are configured if one was * requested and it does not violate the valid set of port * configurations */ if (pin_cfg & PORT_WRCONFIG_PULLEN) { 1288: 035b lsls r3, r3, #13 128a: d51c bpl.n 12c6 <_system_pinmux_config+0x92> /* Set the OUT register bits to enable the pull-up if requested, * clear to enable pull-down */ if (config->input_pull == SYSTEM_PINMUX_PIN_PULL_UP) { 128c: 7893 ldrb r3, [r2, #2] 128e: 2b01 cmp r3, #1 1290: d01e beq.n 12d0 <_system_pinmux_config+0x9c> port->OUTSET.reg = pin_mask; } else { port->OUTCLR.reg = pin_mask; 1292: 6141 str r1, [r0, #20] 1294: e017 b.n 12c6 <_system_pinmux_config+0x92> uint32_t pin_cfg = 0; 1296: 2300 movs r3, #0 1298: e7d7 b.n 124a <_system_pinmux_config+0x16> pin_cfg |= PORT_WRCONFIG_PULLEN; 129a: 24c0 movs r4, #192 ; 0xc0 129c: 02e4 lsls r4, r4, #11 129e: 4323 orrs r3, r4 12a0: e7dd b.n 125e <_system_pinmux_config+0x2a> pin_cfg &= ~PORT_WRCONFIG_PULLEN; 12a2: 4c0d ldr r4, [pc, #52] ; (12d8 <_system_pinmux_config+0xa4>) 12a4: 4023 ands r3, r4 12a6: e7df b.n 1268 <_system_pinmux_config+0x34> port->DIRCLR.reg = pin_mask; 12a8: 6041 str r1, [r0, #4] uint32_t lower_pin_mask = (pin_mask & 0xFFFF); 12aa: 040c lsls r4, r1, #16 12ac: 0c24 lsrs r4, r4, #16 pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG; 12ae: 23a0 movs r3, #160 ; 0xa0 12b0: 05db lsls r3, r3, #23 12b2: 4323 orrs r3, r4 = (lower_pin_mask << PORT_WRCONFIG_PINMASK_Pos) | 12b4: 6283 str r3, [r0, #40] ; 0x28 uint32_t upper_pin_mask = (pin_mask >> 16); 12b6: 0c0c lsrs r4, r1, #16 pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG | 12b8: 23d0 movs r3, #208 ; 0xd0 12ba: 061b lsls r3, r3, #24 12bc: 4323 orrs r3, r4 = (upper_pin_mask << PORT_WRCONFIG_PINMASK_Pos) | 12be: 6283 str r3, [r0, #40] ; 0x28 if(!config->powersave) { 12c0: 78d3 ldrb r3, [r2, #3] 12c2: 2b00 cmp r3, #0 12c4: d103 bne.n 12ce <_system_pinmux_config+0x9a> } } /* Check if the user has requested that the output buffer be enabled */ if ((config->direction == SYSTEM_PINMUX_PIN_DIR_OUTPUT) || 12c6: 7853 ldrb r3, [r2, #1] 12c8: 3b01 subs r3, #1 12ca: 2b01 cmp r3, #1 12cc: d902 bls.n 12d4 <_system_pinmux_config+0xa0> (config->direction == SYSTEM_PINMUX_PIN_DIR_OUTPUT_WITH_READBACK)) { /* Set the port DIR bits to enable the output buffer */ port->DIRSET.reg = pin_mask; } } } 12ce: bd30 pop {r4, r5, pc} port->OUTSET.reg = pin_mask; 12d0: 6181 str r1, [r0, #24] 12d2: e7f8 b.n 12c6 <_system_pinmux_config+0x92> port->DIRSET.reg = pin_mask; 12d4: 6081 str r1, [r0, #8] } 12d6: e7fa b.n 12ce <_system_pinmux_config+0x9a> 12d8: fffbffff .word 0xfffbffff 000012dc : * \param[in] config Configuration settings for the pin */ void system_pinmux_pin_set_config( const uint8_t gpio_pin, const struct system_pinmux_config *const config) { 12dc: b510 push {r4, lr} 12de: 000a movs r2, r1 uint8_t group_index = (gpio_pin / 32); /* Array of available ports */ Port *const ports[PORT_INST_NUM] = PORT_INSTS; if (port_index < PORT_INST_NUM) { 12e0: 09c1 lsrs r1, r0, #7 return &(ports[port_index]->Group[group_index]); } else { Assert(false); return NULL; 12e2: 2300 movs r3, #0 if (port_index < PORT_INST_NUM) { 12e4: 2900 cmp r1, #0 12e6: d104 bne.n 12f2 return &(ports[port_index]->Group[group_index]); 12e8: 0943 lsrs r3, r0, #5 12ea: 01db lsls r3, r3, #7 12ec: 4905 ldr r1, [pc, #20] ; (1304 ) 12ee: 468c mov ip, r1 12f0: 4463 add r3, ip PortGroup *const port = system_pinmux_get_group_from_gpio_pin(gpio_pin); uint32_t pin_mask = (1UL << (gpio_pin % 32)); 12f2: 241f movs r4, #31 12f4: 4020 ands r0, r4 12f6: 2101 movs r1, #1 12f8: 4081 lsls r1, r0 _system_pinmux_config(port, pin_mask, config); 12fa: 0018 movs r0, r3 12fc: 4b02 ldr r3, [pc, #8] ; (1308 ) 12fe: 4798 blx r3 } 1300: bd10 pop {r4, pc} 1302: 46c0 nop ; (mov r8, r8) 1304: 41004400 .word 0x41004400 1308: 00001235 .word 0x00001235 0000130c : */ void system_pinmux_group_set_config( PortGroup *const port, const uint32_t mask, const struct system_pinmux_config *const config) { 130c: b5f0 push {r4, r5, r6, r7, lr} 130e: b083 sub sp, #12 1310: 9000 str r0, [sp, #0] 1312: 000e movs r6, r1 1314: 9201 str r2, [sp, #4] Assert(port); for (int i = 0; i < 32; i++) { 1316: 2400 movs r4, #0 if (mask & (1UL << i)) { 1318: 2701 movs r7, #1 _system_pinmux_config(port, (1UL << i), config); 131a: 4d08 ldr r5, [pc, #32] ; (133c ) 131c: e002 b.n 1324 for (int i = 0; i < 32; i++) { 131e: 3401 adds r4, #1 1320: 2c20 cmp r4, #32 1322: d009 beq.n 1338 if (mask & (1UL << i)) { 1324: 0033 movs r3, r6 1326: 40e3 lsrs r3, r4 1328: 421f tst r7, r3 132a: d0f8 beq.n 131e _system_pinmux_config(port, (1UL << i), config); 132c: 9a01 ldr r2, [sp, #4] 132e: 0039 movs r1, r7 1330: 40a1 lsls r1, r4 1332: 9800 ldr r0, [sp, #0] 1334: 47a8 blx r5 1336: e7f2 b.n 131e } } } 1338: b003 add sp, #12 133a: bdf0 pop {r4, r5, r6, r7, pc} 133c: 00001235 .word 0x00001235 00001340 <_system_dummy_init>: */ void _system_dummy_init(void); void _system_dummy_init(void) { return; } 1340: 4770 bx lr ... 00001344 : * - Board hardware initialization (via the Board module) * - Event system driver initialization (via the EVSYS module) * - External Interrupt driver initialization (via the EXTINT module) */ void system_init(void) { 1344: b510 push {r4, lr} /* Configure GCLK and clock sources according to conf_clocks.h */ system_clock_init(); 1346: 4b05 ldr r3, [pc, #20] ; (135c ) 1348: 4798 blx r3 /* Initialize board hardware */ system_board_init(); 134a: 4b05 ldr r3, [pc, #20] ; (1360 ) 134c: 4798 blx r3 /* Initialize EVSYS hardware */ _system_events_init(); 134e: 4b05 ldr r3, [pc, #20] ; (1364 ) 1350: 4798 blx r3 /* Initialize External hardware */ _system_extint_init(); 1352: 4b05 ldr r3, [pc, #20] ; (1368 ) 1354: 4798 blx r3 /* Initialize DIVAS hardware */ _system_divas_init(); 1356: 4b05 ldr r3, [pc, #20] ; (136c ) 1358: 4798 blx r3 } 135a: bd10 pop {r4, pc} 135c: 00000f15 .word 0x00000f15 1360: 00000d1d .word 0x00000d1d 1364: 00001341 .word 0x00001341 1368: 00001341 .word 0x00001341 136c: 00001341 .word 0x00001341 00001370 : /** * \brief Default interrupt handler for unused IRQs. */ void Dummy_Handler(void) { 1370: e7fe b.n 1370 ... 00001374 : { 1374: b5f8 push {r3, r4, r5, r6, r7, lr} if (pSrc != pDest) { 1376: 4a2a ldr r2, [pc, #168] ; (1420 ) 1378: 4b2a ldr r3, [pc, #168] ; (1424 ) 137a: 429a cmp r2, r3 137c: d011 beq.n 13a2 for (; pDest < &_erelocate;) { 137e: 001a movs r2, r3 1380: 4b29 ldr r3, [pc, #164] ; (1428 ) 1382: 429a cmp r2, r3 1384: d20d bcs.n 13a2 1386: 4a29 ldr r2, [pc, #164] ; (142c ) 1388: 3303 adds r3, #3 138a: 1a9b subs r3, r3, r2 138c: 089b lsrs r3, r3, #2 138e: 3301 adds r3, #1 1390: 009b lsls r3, r3, #2 1392: 2200 movs r2, #0 *pDest++ = *pSrc++; 1394: 4823 ldr r0, [pc, #140] ; (1424 ) 1396: 4922 ldr r1, [pc, #136] ; (1420 ) 1398: 588c ldr r4, [r1, r2] 139a: 5084 str r4, [r0, r2] 139c: 3204 adds r2, #4 for (; pDest < &_erelocate;) { 139e: 429a cmp r2, r3 13a0: d1fa bne.n 1398 for (pDest = &_szero; pDest < &_ezero;) { 13a2: 4a23 ldr r2, [pc, #140] ; (1430 ) 13a4: 4b23 ldr r3, [pc, #140] ; (1434 ) 13a6: 429a cmp r2, r3 13a8: d20a bcs.n 13c0 13aa: 43d3 mvns r3, r2 13ac: 4921 ldr r1, [pc, #132] ; (1434 ) 13ae: 185b adds r3, r3, r1 13b0: 2103 movs r1, #3 13b2: 438b bics r3, r1 13b4: 3304 adds r3, #4 13b6: 189b adds r3, r3, r2 *pDest++ = 0; 13b8: 2100 movs r1, #0 13ba: c202 stmia r2!, {r1} for (pDest = &_szero; pDest < &_ezero;) { 13bc: 4293 cmp r3, r2 13be: d1fc bne.n 13ba SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); 13c0: 4a1d ldr r2, [pc, #116] ; (1438 ) 13c2: 21ff movs r1, #255 ; 0xff 13c4: 4b1d ldr r3, [pc, #116] ; (143c ) 13c6: 438b bics r3, r1 13c8: 6093 str r3, [r2, #8] SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; 13ca: 39fd subs r1, #253 ; 0xfd 13cc: 2390 movs r3, #144 ; 0x90 13ce: 005b lsls r3, r3, #1 13d0: 4a1b ldr r2, [pc, #108] ; (1440 ) 13d2: 50d1 str r1, [r2, r3] USB->DEVICE.QOSCTRL.bit.CQOS = 2; 13d4: 4a1b ldr r2, [pc, #108] ; (1444 ) 13d6: 78d3 ldrb r3, [r2, #3] 13d8: 2503 movs r5, #3 13da: 43ab bics r3, r5 13dc: 2402 movs r4, #2 13de: 4323 orrs r3, r4 13e0: 70d3 strb r3, [r2, #3] USB->DEVICE.QOSCTRL.bit.DQOS = 2; 13e2: 78d3 ldrb r3, [r2, #3] 13e4: 270c movs r7, #12 13e6: 43bb bics r3, r7 13e8: 2608 movs r6, #8 13ea: 4333 orrs r3, r6 13ec: 70d3 strb r3, [r2, #3] DMAC->QOSCTRL.bit.DQOS = 2; 13ee: 4b16 ldr r3, [pc, #88] ; (1448 ) 13f0: 7b98 ldrb r0, [r3, #14] 13f2: 2230 movs r2, #48 ; 0x30 13f4: 4390 bics r0, r2 13f6: 2220 movs r2, #32 13f8: 4310 orrs r0, r2 13fa: 7398 strb r0, [r3, #14] DMAC->QOSCTRL.bit.FQOS = 2; 13fc: 7b99 ldrb r1, [r3, #14] 13fe: 43b9 bics r1, r7 1400: 4331 orrs r1, r6 1402: 7399 strb r1, [r3, #14] DMAC->QOSCTRL.bit.WRBQOS = 2; 1404: 7b9a ldrb r2, [r3, #14] 1406: 43aa bics r2, r5 1408: 4322 orrs r2, r4 140a: 739a strb r2, [r3, #14] NVMCTRL->CTRLB.bit.MANW = 1; 140c: 4a0f ldr r2, [pc, #60] ; (144c ) 140e: 6853 ldr r3, [r2, #4] 1410: 2180 movs r1, #128 ; 0x80 1412: 430b orrs r3, r1 1414: 6053 str r3, [r2, #4] __libc_init_array(); 1416: 4b0e ldr r3, [pc, #56] ; (1450 ) 1418: 4798 blx r3 main(); 141a: 4b0e ldr r3, [pc, #56] ; (1454 ) 141c: 4798 blx r3 141e: e7fe b.n 141e 1420: 0001c9a8 .word 0x0001c9a8 1424: 20000000 .word 0x20000000 1428: 200000c4 .word 0x200000c4 142c: 20000004 .word 0x20000004 1430: 200000c8 .word 0x200000c8 1434: 20004e38 .word 0x20004e38 1438: e000ed00 .word 0xe000ed00 143c: 00000000 .word 0x00000000 1440: 41007000 .word 0x41007000 1444: 41005000 .word 0x41005000 1448: 41004800 .word 0x41004800 144c: 41004000 .word 0x41004000 1450: 00017dd5 .word 0x00017dd5 1454: 0001786d .word 0x0001786d 00001458 <_sbrk>: extern void _exit(int status); extern void _kill(int pid, int sig); extern int _getpid(void); extern caddr_t _sbrk(int incr) { 1458: 0003 movs r3, r0 static unsigned char *heap = NULL; unsigned char *prev_heap; if (heap == NULL) { 145a: 4a06 ldr r2, [pc, #24] ; (1474 <_sbrk+0x1c>) 145c: 6812 ldr r2, [r2, #0] 145e: 2a00 cmp r2, #0 1460: d004 beq.n 146c <_sbrk+0x14> heap = (unsigned char *)&_end; } prev_heap = heap; 1462: 4a04 ldr r2, [pc, #16] ; (1474 <_sbrk+0x1c>) 1464: 6810 ldr r0, [r2, #0] heap += incr; 1466: 18c3 adds r3, r0, r3 1468: 6013 str r3, [r2, #0] return (caddr_t) prev_heap; } 146a: 4770 bx lr heap = (unsigned char *)&_end; 146c: 4902 ldr r1, [pc, #8] ; (1478 <_sbrk+0x20>) 146e: 4a01 ldr r2, [pc, #4] ; (1474 <_sbrk+0x1c>) 1470: 6011 str r1, [r2, #0] 1472: e7f6 b.n 1462 <_sbrk+0xa> 1474: 200026d0 .word 0x200026d0 1478: 20006e38 .word 0x20006e38 0000147c : * GLOBAL FUNCTIONS **********************/ bool lv_debug_check_null(const void * p) { if(p) return true; 147c: 1e43 subs r3, r0, #1 147e: 4198 sbcs r0, r3 1480: b2c0 uxtb r0, r0 return false; } 1482: 4770 bx lr 00001484 : 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) { 1484: b510 push {r4, lr} 1486: b0c0 sub sp, #256 ; 0x100 1488: 0004 movs r4, r0 static const char hex[] = "0123456789ABCDEF"; size_t msg_len = strlen(msg); 148a: 4b06 ldr r3, [pc, #24] ; (14a4 ) 148c: 4798 blx r3 uint32_t value_len = sizeof(unsigned long int); if(msg_len < 230) { 148e: 28e5 cmp r0, #229 ; 0xe5 1490: d901 bls.n 1496 LV_LOG_ERROR(buf); } else { LV_LOG_ERROR(msg); } } 1492: b040 add sp, #256 ; 0x100 1494: bd10 pop {r4, pc} _lv_memcpy(bufp, msg, msg_len); 1496: 0002 movs r2, r0 1498: 0021 movs r1, r4 149a: 4668 mov r0, sp 149c: 4b02 ldr r3, [pc, #8] ; (14a8 ) 149e: 4798 blx r3 } 14a0: e7f7 b.n 1492 14a2: 46c0 nop ; (mov r8, r8) 14a4: 00017e81 .word 0x00017e81 14a8: 00010c8d .word 0x00010c8d 000014ac : * @param disp pointer to display which active screen should be get. (NULL to use the default * screen) * @return pointer to the active screen object (loaded by 'lv_scr_load()') */ lv_obj_t * lv_disp_get_scr_act(lv_disp_t * disp) { 14ac: b510 push {r4, lr} if(!disp) disp = lv_disp_get_default(); 14ae: 2800 cmp r0, #0 14b0: d001 beq.n 14b6 if(!disp) { LV_LOG_WARN("lv_scr_act: no display registered to get its act. screen"); return NULL; } return disp->act_scr; 14b2: 6bc0 ldr r0, [r0, #60] ; 0x3c } 14b4: bd10 pop {r4, pc} if(!disp) disp = lv_disp_get_default(); 14b6: 4b03 ldr r3, [pc, #12] ; (14c4 ) 14b8: 4798 blx r3 if(!disp) { 14ba: 2800 cmp r0, #0 14bc: d1f9 bne.n 14b2 return NULL; 14be: 2000 movs r0, #0 14c0: e7f8 b.n 14b4 14c2: 46c0 nop ; (mov r8, r8) 14c4: 0000f609 .word 0x0000f609 000014c8 : * Return with the top layer. (Same on every screen and it is above the normal screen layer) * @param disp pointer to display which top layer should be get. (NULL to use the default screen) * @return pointer to the top layer object (transparent screen sized lv_obj) */ lv_obj_t * lv_disp_get_layer_top(lv_disp_t * disp) { 14c8: b510 push {r4, lr} if(!disp) disp = lv_disp_get_default(); 14ca: 2800 cmp r0, #0 14cc: d001 beq.n 14d2 if(!disp) { LV_LOG_WARN("lv_layer_top: no display registered to get its top layer"); return NULL; } return disp->top_layer; 14ce: 6c00 ldr r0, [r0, #64] ; 0x40 } 14d0: bd10 pop {r4, pc} if(!disp) disp = lv_disp_get_default(); 14d2: 4b03 ldr r3, [pc, #12] ; (14e0 ) 14d4: 4798 blx r3 if(!disp) { 14d6: 2800 cmp r0, #0 14d8: d1f9 bne.n 14ce return NULL; 14da: 2000 movs r0, #0 14dc: e7f8 b.n 14d0 14de: 46c0 nop ; (mov r8, r8) 14e0: 0000f609 .word 0x0000f609 000014e4 : * layer) * @param disp pointer to display which sys. layer should be get. (NULL to use the default screen) * @return pointer to the sys layer object (transparent screen sized lv_obj) */ lv_obj_t * lv_disp_get_layer_sys(lv_disp_t * disp) { 14e4: b510 push {r4, lr} if(!disp) disp = lv_disp_get_default(); 14e6: 2800 cmp r0, #0 14e8: d001 beq.n 14ee if(!disp) { LV_LOG_WARN("lv_layer_sys: no display registered to get its sys. layer"); return NULL; } return disp->sys_layer; 14ea: 6c40 ldr r0, [r0, #68] ; 0x44 } 14ec: bd10 pop {r4, pc} if(!disp) disp = lv_disp_get_default(); 14ee: 4b03 ldr r3, [pc, #12] ; (14fc ) 14f0: 4798 blx r3 if(!disp) { 14f2: 2800 cmp r0, #0 14f4: d1f9 bne.n 14ea return NULL; 14f6: 2000 movs r0, #0 14f8: e7f8 b.n 14ec 14fa: 46c0 nop ; (mov r8, r8) 14fc: 0000f609 .word 0x0000f609 00001500 : if(group->focus_cb) group->focus_cb(group); } static void obj_to_foreground(lv_obj_t * obj) { 1500: b5f8 push {r3, r4, r5, r6, r7, lr} /*Search for 'top' attribute*/ lv_obj_t * i = obj; lv_obj_t * last_top = NULL; while(i != NULL) { 1502: 2800 cmp r0, #0 1504: d011 beq.n 152a 1506: 2500 movs r5, #0 if(i->top != 0) last_top = i; 1508: 2734 movs r7, #52 ; 0x34 150a: 2620 movs r6, #32 i = lv_obj_get_parent(i); 150c: 4c07 ldr r4, [pc, #28] ; (152c ) 150e: e002 b.n 1516 1510: 47a0 blx r4 while(i != NULL) { 1512: 2800 cmp r0, #0 1514: d004 beq.n 1520 if(i->top != 0) last_top = i; 1516: 5dc3 ldrb r3, [r0, r7] 1518: 421e tst r6, r3 151a: d0f9 beq.n 1510 151c: 0005 movs r5, r0 151e: e7f7 b.n 1510 } if(last_top != NULL) { 1520: 2d00 cmp r5, #0 1522: d002 beq.n 152a /*Move the last_top object to the foreground*/ lv_obj_move_foreground(last_top); 1524: 0028 movs r0, r5 1526: 4b02 ldr r3, [pc, #8] ; (1530 ) 1528: 4798 blx r3 } } 152a: bdf8 pop {r3, r4, r5, r6, r7, pc} 152c: 00001aa1 .word 0x00001aa1 1530: 00002019 .word 0x00002019 00001534 : { 1534: b5f8 push {r3, r4, r5, r6, r7, lr} 1536: 46de mov lr, fp 1538: 4657 mov r7, sl 153a: 464e mov r6, r9 153c: 4645 mov r5, r8 153e: b5e0 push {r5, r6, r7, lr} 1540: 0006 movs r6, r0 1542: 468a mov sl, r1 1544: 4690 mov r8, r2 if(group->frozen) return; 1546: 7d03 ldrb r3, [r0, #20] 1548: 07db lsls r3, r3, #31 154a: d43c bmi.n 15c6 lv_obj_t ** obj_next = group->obj_focus; 154c: 68c4 ldr r4, [r0, #12] bool can_begin = true; 154e: 2301 movs r3, #1 1550: 4699 mov r9, r3 lv_obj_t ** obj_sentinel = NULL; 1552: 2500 movs r5, #0 if(!lv_obj_get_hidden(*obj_next)) break; 1554: 4f32 ldr r7, [pc, #200] ; (1620 ) if(group->wrap || obj_sentinel == NULL) { 1556: 330f adds r3, #15 1558: 469b mov fp, r3 155a: e015 b.n 1588 155c: 7d33 ldrb r3, [r6, #20] 155e: 465a mov r2, fp 1560: 421a tst r2, r3 1562: d101 bne.n 1568 1564: 2d00 cmp r5, #0 1566: d12e bne.n 15c6 if(!can_begin) return; 1568: 464b mov r3, r9 156a: 2b00 cmp r3, #0 156c: d02b beq.n 15c6 obj_next = begin(&group->obj_ll); 156e: 0030 movs r0, r6 1570: 47d0 blx sl 1572: 0004 movs r4, r0 if(obj_sentinel == NULL) { 1574: 2d00 cmp r5, #0 1576: d04c beq.n 1612 can_begin = false; 1578: 2300 movs r3, #0 157a: 4699 mov r9, r3 if(obj_next == NULL) continue; 157c: 2c00 cmp r4, #0 157e: d003 beq.n 1588 if(!lv_obj_get_hidden(*obj_next)) break; 1580: 6820 ldr r0, [r4, #0] 1582: 47b8 blx r7 1584: 2800 cmp r0, #0 1586: d00c beq.n 15a2 if(obj_next == NULL) { 1588: 2c00 cmp r4, #0 158a: d0e7 beq.n 155c if(obj_sentinel == NULL) { 158c: 2d00 cmp r5, #0 158e: d006 beq.n 159e obj_next = move(&group->obj_ll, obj_next); 1590: 0021 movs r1, r4 1592: 0030 movs r0, r6 1594: 47c0 blx r8 1596: 0004 movs r4, r0 if(obj_next == obj_sentinel) return; 1598: 42a8 cmp r0, r5 159a: d1ef bne.n 157c 159c: e013 b.n 15c6 159e: 0025 movs r5, r4 15a0: e7f6 b.n 1590 if(obj_next == group->obj_focus) return; /*There's only one visible object and it's already focused*/ 15a2: 68f3 ldr r3, [r6, #12] 15a4: 42a3 cmp r3, r4 15a6: d00e beq.n 15c6 if(group->obj_focus) { 15a8: 2b00 cmp r3, #0 15aa: d016 beq.n 15da (*group->obj_focus)->signal_cb(*group->obj_focus, LV_SIGNAL_DEFOCUS, NULL); 15ac: 6818 ldr r0, [r3, #0] 15ae: 69c3 ldr r3, [r0, #28] 15b0: 2200 movs r2, #0 15b2: 2117 movs r1, #23 15b4: 4798 blx r3 lv_res_t res = lv_event_send(*group->obj_focus, LV_EVENT_DEFOCUSED, NULL); 15b6: 68f3 ldr r3, [r6, #12] 15b8: 6818 ldr r0, [r3, #0] 15ba: 2200 movs r2, #0 15bc: 210e movs r1, #14 15be: 4b19 ldr r3, [pc, #100] ; (1624 ) 15c0: 4798 blx r3 if(res != LV_RES_OK) return; 15c2: 2801 cmp r0, #1 15c4: d005 beq.n 15d2 } 15c6: bc3c pop {r2, r3, r4, r5} 15c8: 4690 mov r8, r2 15ca: 4699 mov r9, r3 15cc: 46a2 mov sl, r4 15ce: 46ab mov fp, r5 15d0: bdf8 pop {r3, r4, r5, r6, r7, pc} lv_obj_invalidate(*group->obj_focus); 15d2: 68f3 ldr r3, [r6, #12] 15d4: 6818 ldr r0, [r3, #0] 15d6: 4b14 ldr r3, [pc, #80] ; (1628 ) 15d8: 4798 blx r3 group->obj_focus = obj_next; 15da: 60f4 str r4, [r6, #12] (*group->obj_focus)->signal_cb(*group->obj_focus, LV_SIGNAL_FOCUS, NULL); 15dc: 6820 ldr r0, [r4, #0] 15de: 69c3 ldr r3, [r0, #28] 15e0: 2200 movs r2, #0 15e2: 2116 movs r1, #22 15e4: 4798 blx r3 lv_res_t res = lv_event_send(*group->obj_focus, LV_EVENT_FOCUSED, NULL); 15e6: 68f3 ldr r3, [r6, #12] 15e8: 6818 ldr r0, [r3, #0] 15ea: 2200 movs r2, #0 15ec: 210d movs r1, #13 15ee: 4b0d ldr r3, [pc, #52] ; (1624 ) 15f0: 4798 blx r3 if(res != LV_RES_OK) return; 15f2: 2801 cmp r0, #1 15f4: d1e7 bne.n 15c6 obj_to_foreground(*group->obj_focus); 15f6: 68f3 ldr r3, [r6, #12] 15f8: 6818 ldr r0, [r3, #0] 15fa: 4b0c ldr r3, [pc, #48] ; (162c ) 15fc: 4798 blx r3 lv_obj_invalidate(*group->obj_focus); 15fe: 68f3 ldr r3, [r6, #12] 1600: 6818 ldr r0, [r3, #0] 1602: 4b09 ldr r3, [pc, #36] ; (1628 ) 1604: 4798 blx r3 if(group->focus_cb) group->focus_cb(group); 1606: 6933 ldr r3, [r6, #16] 1608: 2b00 cmp r3, #0 160a: d0dc beq.n 15c6 160c: 0030 movs r0, r6 160e: 4798 blx r3 1610: e7d9 b.n 15c6 if(obj_sentinel == NULL) return; /*Group is empty*/ 1612: 2800 cmp r0, #0 1614: d0d7 beq.n 15c6 obj_next = begin(&group->obj_ll); 1616: 0005 movs r5, r0 can_begin = false; 1618: 2300 movs r3, #0 161a: 4699 mov r9, r3 161c: e7b0 b.n 1580 161e: 46c0 nop ; (mov r8, r8) 1620: 00001e85 .word 0x00001e85 1624: 00001a11 .word 0x00001a11 1628: 00001fb1 .word 0x00001fb1 162c: 00001501 .word 0x00001501 00001630 <_lv_group_init>: { 1630: b510 push {r4, lr} _lv_ll_init(&LV_GC_ROOT(_lv_group_ll), sizeof(lv_group_t)); 1632: 2118 movs r1, #24 1634: 4801 ldr r0, [pc, #4] ; (163c <_lv_group_init+0xc>) 1636: 4b02 ldr r3, [pc, #8] ; (1640 <_lv_group_init+0x10>) 1638: 4798 blx r3 } 163a: bd10 pop {r4, pc} 163c: 20004e18 .word 0x20004e18 1640: 000105b9 .word 0x000105b9 00001644 : { 1644: b510 push {r4, lr} focus_next_core(group, _lv_ll_get_head, _lv_ll_get_next); 1646: 4a02 ldr r2, [pc, #8] ; (1650 ) 1648: 4902 ldr r1, [pc, #8] ; (1654 ) 164a: 4b03 ldr r3, [pc, #12] ; (1658 ) 164c: 4798 blx r3 } 164e: bd10 pop {r4, pc} 1650: 00010685 .word 0x00010685 1654: 0001066d .word 0x0001066d 1658: 00001535 .word 0x00001535 0000165c : { 165c: b510 push {r4, lr} focus_next_core(group, _lv_ll_get_tail, _lv_ll_get_prev); 165e: 4a02 ldr r2, [pc, #8] ; (1668 ) 1660: 4902 ldr r1, [pc, #8] ; (166c ) 1662: 4b03 ldr r3, [pc, #12] ; (1670 ) 1664: 4798 blx r3 } 1666: bd10 pop {r4, pc} 1668: 000106ad .word 0x000106ad 166c: 00010679 .word 0x00010679 1670: 00001535 .word 0x00001535 00001674 : { 1674: b570 push {r4, r5, r6, lr} 1676: 0004 movs r4, r0 uint8_t temp_wrap = g->wrap; 1678: 7d03 ldrb r3, [r0, #20] 167a: 06dd lsls r5, r3, #27 167c: 0fed lsrs r5, r5, #31 g->wrap = 1; 167e: 2210 movs r2, #16 1680: 4313 orrs r3, r2 1682: 7503 strb r3, [r0, #20] if(g->refocus_policy == LV_GROUP_REFOCUS_POLICY_NEXT) 1684: 071b lsls r3, r3, #28 1686: d508 bpl.n 169a lv_group_focus_prev(g); 1688: 4b05 ldr r3, [pc, #20] ; (16a0 ) 168a: 4798 blx r3 g->wrap = temp_wrap; 168c: 012d lsls r5, r5, #4 168e: 7d23 ldrb r3, [r4, #20] 1690: 2210 movs r2, #16 1692: 4393 bics r3, r2 1694: 432b orrs r3, r5 1696: 7523 strb r3, [r4, #20] } 1698: bd70 pop {r4, r5, r6, pc} lv_group_focus_next(g); 169a: 4b02 ldr r3, [pc, #8] ; (16a4 ) 169c: 4798 blx r3 169e: e7f5 b.n 168c 16a0: 0000165d .word 0x0000165d 16a4: 00001645 .word 0x00001645 000016a8 : { 16a8: b5f8 push {r3, r4, r5, r6, r7, lr} 16aa: 0005 movs r5, r0 16ac: 000c movs r4, r1 if(group == NULL) return; 16ae: 2800 cmp r0, #0 16b0: d010 beq.n 16d4 _LV_LL_READ(group->obj_ll, obj_i) { 16b2: 0006 movs r6, r0 16b4: 4b1b ldr r3, [pc, #108] ; (1724 ) 16b6: 4798 blx r3 16b8: 2800 cmp r0, #0 16ba: d00c beq.n 16d6 if((*obj_i) == obj) { 16bc: 6803 ldr r3, [r0, #0] 16be: 429c cmp r4, r3 16c0: d008 beq.n 16d4 _LV_LL_READ(group->obj_ll, obj_i) { 16c2: 4f19 ldr r7, [pc, #100] ; (1728 ) 16c4: 0001 movs r1, r0 16c6: 0030 movs r0, r6 16c8: 47b8 blx r7 16ca: 2800 cmp r0, #0 16cc: d003 beq.n 16d6 if((*obj_i) == obj) { 16ce: 6803 ldr r3, [r0, #0] 16d0: 42a3 cmp r3, r4 16d2: d1f7 bne.n 16c4 } 16d4: bdf8 pop {r3, r4, r5, r6, r7, pc} if(obj->group_p) { 16d6: 6ba3 ldr r3, [r4, #56] ; 0x38 16d8: 2b00 cmp r3, #0 16da: d007 beq.n 16ec if(lv_obj_is_focused(obj)) { 16dc: 0020 movs r0, r4 16de: 4b13 ldr r3, [pc, #76] ; (172c ) 16e0: 4798 blx r3 16e2: 2800 cmp r0, #0 16e4: d002 beq.n 16ec lv_group_refocus(obj->group_p); 16e6: 6ba0 ldr r0, [r4, #56] ; 0x38 16e8: 4b11 ldr r3, [pc, #68] ; (1730 ) 16ea: 4798 blx r3 obj->group_p = group; 16ec: 63a5 str r5, [r4, #56] ; 0x38 lv_obj_t ** next = _lv_ll_ins_tail(&group->obj_ll); 16ee: 0028 movs r0, r5 16f0: 4b10 ldr r3, [pc, #64] ; (1734 ) 16f2: 4798 blx r3 16f4: 0006 movs r6, r0 LV_ASSERT_MEM(next); 16f6: 4b10 ldr r3, [pc, #64] ; (1738 ) 16f8: 4798 blx r3 16fa: 2800 cmp r0, #0 16fc: d00b beq.n 1716 if(next == NULL) return; 16fe: 2e00 cmp r6, #0 1700: d0e8 beq.n 16d4 *next = obj; 1702: 6034 str r4, [r6, #0] if(_lv_ll_get_head(&group->obj_ll) == next) { 1704: 0028 movs r0, r5 1706: 4b07 ldr r3, [pc, #28] ; (1724 ) 1708: 4798 blx r3 170a: 4286 cmp r6, r0 170c: d1e2 bne.n 16d4 lv_group_refocus(group); 170e: 0028 movs r0, r5 1710: 4b07 ldr r3, [pc, #28] ; (1730 ) 1712: 4798 blx r3 1714: e7de b.n 16d4 LV_ASSERT_MEM(next); 1716: 0032 movs r2, r6 1718: 2300 movs r3, #0 171a: 4808 ldr r0, [pc, #32] ; (173c ) 171c: 4908 ldr r1, [pc, #32] ; (1740 ) 171e: 4788 blx r1 1720: e7fe b.n 1720 1722: 46c0 nop ; (mov r8, r8) 1724: 0001066d .word 0x0001066d 1728: 00010685 .word 0x00010685 172c: 00003629 .word 0x00003629 1730: 00001675 .word 0x00001675 1734: 0001061d .word 0x0001061d 1738: 0000147d .word 0x0000147d 173c: 00018724 .word 0x00018724 1740: 00001485 .word 0x00001485 00001744 : if(!group) return NULL; 1744: 2800 cmp r0, #0 1746: d004 beq.n 1752 if(group->obj_focus == NULL) return NULL; 1748: 68c3 ldr r3, [r0, #12] 174a: 2b00 cmp r3, #0 174c: d003 beq.n 1756 return *group->obj_focus; 174e: 6818 ldr r0, [r3, #0] } 1750: 4770 bx lr if(!group) return NULL; 1752: 2000 movs r0, #0 1754: e7fc b.n 1750 if(group->obj_focus == NULL) return NULL; 1756: 2000 movs r0, #0 1758: e7fa b.n 1750 0000175a : if(!group) return false; 175a: 2800 cmp r0, #0 175c: d003 beq.n 1766 return group->editing ? true : false; 175e: 7d00 ldrb r0, [r0, #20] 1760: 0780 lsls r0, r0, #30 1762: 0fc0 lsrs r0, r0, #31 } 1764: 4770 bx lr if(!group) return false; 1766: 2000 movs r0, #0 1768: e7fc b.n 1764 ... 0000176c : * @return pointer to the currently processed input device or NULL if no input device processing * right now */ lv_indev_t * lv_indev_get_act(void) { return indev_act; 176c: 4b01 ldr r3, [pc, #4] ; (1774 ) 176e: 6818 ldr r0, [r3, #0] } 1770: 4770 bx lr 1772: 46c0 nop ; (mov r8, r8) 1774: 200026d4 .word 0x200026d4 00001778 : * 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) { 1778: b5f8 push {r3, r4, r5, r6, r7, lr} 177a: 000c movs r4, r1 if(indev) { 177c: 2800 cmp r0, #0 177e: d015 beq.n 17ac indev->proc.reset_query = 1; 1780: 2250 movs r2, #80 ; 0x50 1782: 5c83 ldrb r3, [r0, r2] 1784: 2102 movs r1, #2 1786: 430b orrs r3, r1 1788: 5483 strb r3, [r0, r2] if(indev_act == indev) indev_obj_act = NULL; 178a: 4b18 ldr r3, [pc, #96] ; (17ec ) 178c: 681b ldr r3, [r3, #0] 178e: 4298 cmp r0, r3 1790: d005 beq.n 179e if(obj == NULL || indev->proc.types.pointer.last_pressed == obj) { 1792: 2c00 cmp r4, #0 1794: d007 beq.n 17a6 1796: 6bc3 ldr r3, [r0, #60] ; 0x3c 1798: 429c cmp r4, r3 179a: d004 beq.n 17a6 i->proc.types.pointer.last_pressed = NULL; } i = lv_indev_get_next(i); } } } 179c: bdf8 pop {r3, r4, r5, r6, r7, pc} if(indev_act == indev) indev_obj_act = NULL; 179e: 2200 movs r2, #0 17a0: 4b13 ldr r3, [pc, #76] ; (17f0 ) 17a2: 601a str r2, [r3, #0] 17a4: e7f5 b.n 1792 indev->proc.types.pointer.last_pressed = NULL; 17a6: 2300 movs r3, #0 17a8: 63c3 str r3, [r0, #60] ; 0x3c 17aa: e7f7 b.n 179c lv_indev_t * i = lv_indev_get_next(NULL); 17ac: 2000 movs r0, #0 17ae: 4b11 ldr r3, [pc, #68] ; (17f4 ) 17b0: 4798 blx r3 while(i) { 17b2: 2800 cmp r0, #0 17b4: d0f2 beq.n 179c if(indev_act == i) indev_obj_act = NULL; 17b6: 4f0d ldr r7, [pc, #52] ; (17ec ) 17b8: 4d0d ldr r5, [pc, #52] ; (17f0 ) i = lv_indev_get_next(i); 17ba: 4e0e ldr r6, [pc, #56] ; (17f4 ) 17bc: e007 b.n 17ce if(indev_act == i) indev_obj_act = NULL; 17be: 2300 movs r3, #0 17c0: 602b str r3, [r5, #0] 17c2: e00c b.n 17de i->proc.types.pointer.last_pressed = NULL; 17c4: 2300 movs r3, #0 17c6: 63c3 str r3, [r0, #60] ; 0x3c i = lv_indev_get_next(i); 17c8: 47b0 blx r6 while(i) { 17ca: 2800 cmp r0, #0 17cc: d0e6 beq.n 179c i->proc.reset_query = 1; 17ce: 2250 movs r2, #80 ; 0x50 17d0: 5c83 ldrb r3, [r0, r2] 17d2: 2102 movs r1, #2 17d4: 430b orrs r3, r1 17d6: 5483 strb r3, [r0, r2] if(indev_act == i) indev_obj_act = NULL; 17d8: 683b ldr r3, [r7, #0] 17da: 4283 cmp r3, r0 17dc: d0ef beq.n 17be if(obj == NULL || i->proc.types.pointer.last_pressed == obj) { 17de: 2c00 cmp r4, #0 17e0: d0f0 beq.n 17c4 17e2: 6bc3 ldr r3, [r0, #60] ; 0x3c 17e4: 429c cmp r4, r3 17e6: d1ef bne.n 17c8 17e8: e7ec b.n 17c4 17ea: 46c0 nop ; (mov r8, r8) 17ec: 200026d4 .word 0x200026d4 17f0: 200026d8 .word 0x200026d8 17f4: 0000f74d .word 0x0000f74d 000017f8 <_lv_indev_init>: { 17f8: b510 push {r4, lr} lv_indev_reset(NULL, NULL); /*Reset all input devices*/ 17fa: 2100 movs r1, #0 17fc: 2000 movs r0, #0 17fe: 4b01 ldr r3, [pc, #4] ; (1804 <_lv_indev_init+0xc>) 1800: 4798 blx r3 } 1802: bd10 pop {r4, pc} 1804: 00001779 .word 0x00001779 00001808 : * @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) { 1808: b5f0 push {r4, r5, r6, r7, lr} 180a: b085 sub sp, #20 180c: 000d movs r5, r1 180e: 9102 str r1, [sp, #8] 1810: 0016 movs r6, r2 1812: 9203 str r2, [sp, #12] lv_obj_t * i; _LV_LL_READ(obj->child_ll, i) { 1814: 1d03 adds r3, r0, #4 1816: 9301 str r3, [sp, #4] 1818: 0018 movs r0, r3 181a: 4b0f ldr r3, [pc, #60] ; (1858 ) 181c: 4798 blx r3 181e: 1e04 subs r4, r0, #0 1820: d018 beq.n 1854 i->coords.x1 += x_diff; 1822: b2ad uxth r5, r5 i->coords.y1 += y_diff; 1824: b2b7 uxth r7, r6 _LV_LL_READ(obj->child_ll, i) { 1826: 4e0d ldr r6, [pc, #52] ; (185c ) i->coords.x1 += x_diff; 1828: 8a23 ldrh r3, [r4, #16] 182a: 18eb adds r3, r5, r3 182c: 8223 strh r3, [r4, #16] i->coords.y1 += y_diff; 182e: 8a63 ldrh r3, [r4, #18] 1830: 18fb adds r3, r7, r3 1832: 8263 strh r3, [r4, #18] i->coords.x2 += x_diff; 1834: 8aa3 ldrh r3, [r4, #20] 1836: 18eb adds r3, r5, r3 1838: 82a3 strh r3, [r4, #20] i->coords.y2 += y_diff; 183a: 8ae3 ldrh r3, [r4, #22] 183c: 18fb adds r3, r7, r3 183e: 82e3 strh r3, [r4, #22] refresh_children_position(i, x_diff, y_diff); 1840: 9a03 ldr r2, [sp, #12] 1842: 9902 ldr r1, [sp, #8] 1844: 0020 movs r0, r4 1846: f7ff ffdf bl 1808 _LV_LL_READ(obj->child_ll, i) { 184a: 0021 movs r1, r4 184c: 9801 ldr r0, [sp, #4] 184e: 47b0 blx r6 1850: 1e04 subs r4, r0, #0 1852: d1e9 bne.n 1828 } } 1854: b005 add sp, #20 1856: bdf0 pop {r4, r5, r6, r7, pc} 1858: 0001066d .word 0x0001066d 185c: 00010685 .word 0x00010685 00001860 : { 1860: b530 push {r4, r5, lr} 1862: b085 sub sp, #20 if(lv_initialized) { 1864: 4b19 ldr r3, [pc, #100] ; (18cc ) 1866: 781b ldrb r3, [r3, #0] 1868: 2b00 cmp r3, #0 186a: d001 beq.n 1870 } 186c: b005 add sp, #20 186e: bd30 pop {r4, r5, pc} _lv_mem_init(); 1870: 4b17 ldr r3, [pc, #92] ; (18d0 ) 1872: 4798 blx r3 _lv_task_core_init(); 1874: 4b17 ldr r3, [pc, #92] ; (18d4 ) 1876: 4798 blx r3 _lv_fs_init(); 1878: 4b17 ldr r3, [pc, #92] ; (18d8 ) 187a: 4798 blx r3 _lv_anim_core_init(); 187c: 4b17 ldr r3, [pc, #92] ; (18dc ) 187e: 4798 blx r3 _lv_group_init(); 1880: 4b17 ldr r3, [pc, #92] ; (18e0 ) 1882: 4798 blx r3 _lv_ll_init(&LV_GC_ROOT(_lv_obj_style_trans_ll), sizeof(lv_style_trans_t)); 1884: 2110 movs r1, #16 1886: 4817 ldr r0, [pc, #92] ; (18e4 ) 1888: 4c17 ldr r4, [pc, #92] ; (18e8 ) 188a: 47a0 blx r4 lv_theme_t * th = LV_THEME_DEFAULT_INIT(LV_THEME_DEFAULT_COLOR_PRIMARY, LV_THEME_DEFAULT_COLOR_SECONDARY, 188c: 4b17 ldr r3, [pc, #92] ; (18ec ) 188e: 9302 str r3, [sp, #8] 1890: 9301 str r3, [sp, #4] 1892: 9300 str r3, [sp, #0] 1894: 2202 movs r2, #2 1896: 211f movs r1, #31 1898: 4815 ldr r0, [pc, #84] ; (18f0 ) 189a: 8800 ldrh r0, [r0, #0] 189c: 4d15 ldr r5, [pc, #84] ; (18f4 ) 189e: 47a8 blx r5 lv_theme_set_act(th); 18a0: 4b15 ldr r3, [pc, #84] ; (18f8 ) 18a2: 4798 blx r3 _lv_refr_init(); 18a4: 4b15 ldr r3, [pc, #84] ; (18fc ) 18a6: 4798 blx r3 _lv_ll_init(&LV_GC_ROOT(_lv_disp_ll), sizeof(lv_disp_t)); 18a8: 21b8 movs r1, #184 ; 0xb8 18aa: 0049 lsls r1, r1, #1 18ac: 4814 ldr r0, [pc, #80] ; (1900 ) 18ae: 47a0 blx r4 _lv_ll_init(&LV_GC_ROOT(_lv_indev_ll), sizeof(lv_indev_t)); 18b0: 2160 movs r1, #96 ; 0x60 18b2: 4814 ldr r0, [pc, #80] ; (1904 ) 18b4: 47a0 blx r4 _lv_indev_init(); 18b6: 4b14 ldr r3, [pc, #80] ; (1908 ) 18b8: 4798 blx r3 _lv_img_decoder_init(); 18ba: 4b14 ldr r3, [pc, #80] ; (190c ) 18bc: 4798 blx r3 lv_img_cache_set_size(LV_IMG_CACHE_DEF_SIZE); 18be: 2001 movs r0, #1 18c0: 4b13 ldr r3, [pc, #76] ; (1910 ) 18c2: 4798 blx r3 lv_initialized = true; 18c4: 2201 movs r2, #1 18c6: 4b01 ldr r3, [pc, #4] ; (18cc ) 18c8: 701a strb r2, [r3, #0] 18ca: e7cf b.n 186c 18cc: 200026e4 .word 0x200026e4 18d0: 00010a49 .word 0x00010a49 18d4: 00011199 .word 0x00011199 18d8: 00010349 .word 0x00010349 18dc: 0000f9f9 .word 0x0000f9f9 18e0: 00001631 .word 0x00001631 18e4: 20004d68 .word 0x20004d68 18e8: 000105b9 .word 0x000105b9 18ec: 20000030 .word 0x20000030 18f0: 00018732 .word 0x00018732 18f4: 00014491 .word 0x00014491 18f8: 00011c51 .word 0x00011c51 18fc: 0000429d .word 0x0000429d 1900: 20004cc4 .word 0x20004cc4 1904: 20004cb8 .word 0x20004cb8 1908: 000017f9 .word 0x000017f9 190c: 0000e6f9 .word 0x0000e6f9 1910: 0000dc59 .word 0x0000dc59 00001914 : { 1914: b570 push {r4, r5, r6, lr} 1916: 0004 movs r4, r0 1918: 000d movs r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 191a: 4b09 ldr r3, [pc, #36] ; (1940 ) 191c: 4798 blx r3 191e: 2800 cmp r0, #0 1920: d008 beq.n 1934 obj->click = (en == true ? 1 : 0); 1922: 2234 movs r2, #52 ; 0x34 1924: 2301 movs r3, #1 1926: 401d ands r5, r3 1928: 5ca3 ldrb r3, [r4, r2] 192a: 2001 movs r0, #1 192c: 4383 bics r3, r0 192e: 432b orrs r3, r5 1930: 54a3 strb r3, [r4, r2] } 1932: bd70 pop {r4, r5, r6, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1934: 0022 movs r2, r4 1936: 2300 movs r3, #0 1938: 4802 ldr r0, [pc, #8] ; (1944 ) 193a: 4903 ldr r1, [pc, #12] ; (1948 ) 193c: 4788 blx r1 193e: e7fe b.n 193e 1940: 0000147d .word 0x0000147d 1944: 0001878c .word 0x0001878c 1948: 00001485 .word 0x00001485 0000194c : { 194c: b5f0 push {r4, r5, r6, r7, lr} 194e: b087 sub sp, #28 1950: 0007 movs r7, r0 1952: 000c movs r4, r1 1954: 9201 str r2, [sp, #4] 1956: 001e movs r6, r3 if(obj != NULL) { 1958: 2900 cmp r1, #0 195a: d004 beq.n 1966 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 195c: 0008 movs r0, r1 195e: 4b25 ldr r3, [pc, #148] ; (19f4 ) 1960: 4798 blx r3 1962: 2800 cmp r0, #0 1964: d03c beq.n 19e0 event_temp_data.obj = obj; 1966: ab03 add r3, sp, #12 1968: 9403 str r4, [sp, #12] event_temp_data.deleted = false; 196a: 2200 movs r2, #0 196c: 711a strb r2, [r3, #4] event_temp_data.prev = NULL; 196e: 9205 str r2, [sp, #20] if(event_temp_data_head) { 1970: 4b21 ldr r3, [pc, #132] ; (19f8 ) 1972: 681b ldr r3, [r3, #0] 1974: 2b00 cmp r3, #0 1976: d000 beq.n 197a event_temp_data.prev = event_temp_data_head; 1978: 9305 str r3, [sp, #20] event_temp_data_head = &event_temp_data; 197a: aa03 add r2, sp, #12 197c: 4b1e ldr r3, [pc, #120] ; (19f8 ) 197e: 601a str r2, [r3, #0] const void * event_act_data_save = event_act_data; 1980: 4b1e ldr r3, [pc, #120] ; (19fc ) 1982: 681d ldr r5, [r3, #0] event_act_data = data; 1984: 601e str r6, [r3, #0] lv_indev_t * indev_act = lv_indev_get_act(); 1986: 4b1e ldr r3, [pc, #120] ; (1a00 ) 1988: 4798 blx r3 if(indev_act) { 198a: 2800 cmp r0, #0 198c: d004 beq.n 1998 if(indev_act->driver.feedback_cb) indev_act->driver.feedback_cb(&indev_act->driver, event); 198e: 6883 ldr r3, [r0, #8] 1990: 2b00 cmp r3, #0 1992: d001 beq.n 1998 1994: 9901 ldr r1, [sp, #4] 1996: 4798 blx r3 if(event_xcb) event_xcb(obj, event); 1998: 2f00 cmp r7, #0 199a: d002 beq.n 19a2 199c: 9901 ldr r1, [sp, #4] 199e: 0020 movs r0, r4 19a0: 47b8 blx r7 event_act_data = event_act_data_save; 19a2: 4b16 ldr r3, [pc, #88] ; (19fc ) 19a4: 601d str r5, [r3, #0] event_temp_data_head = event_temp_data_head->prev; 19a6: 4b14 ldr r3, [pc, #80] ; (19f8 ) 19a8: 681a ldr r2, [r3, #0] 19aa: 6892 ldr r2, [r2, #8] 19ac: 601a str r2, [r3, #0] if(event_temp_data.deleted) { 19ae: ab03 add r3, sp, #12 19b0: 791b ldrb r3, [r3, #4] return LV_RES_INV; 19b2: 2000 movs r0, #0 if(event_temp_data.deleted) { 19b4: 2b00 cmp r3, #0 19b6: d111 bne.n 19dc if(obj) { 19b8: 2c00 cmp r4, #0 19ba: d017 beq.n 19ec if(obj->parent_event && obj->parent) { 19bc: 3334 adds r3, #52 ; 0x34 19be: 5ce3 ldrb r3, [r4, r3] return LV_RES_OK; 19c0: 3001 adds r0, #1 if(obj->parent_event && obj->parent) { 19c2: 065b lsls r3, r3, #25 19c4: d50a bpl.n 19dc 19c6: 6820 ldr r0, [r4, #0] 19c8: 2800 cmp r0, #0 19ca: d011 beq.n 19f0 lv_res_t res = lv_event_send(obj->parent, event, data); 19cc: 0032 movs r2, r6 19ce: 9901 ldr r1, [sp, #4] 19d0: 4b0c ldr r3, [pc, #48] ; (1a04 ) 19d2: 4798 blx r3 if(res != LV_RES_OK) { 19d4: 3801 subs r0, #1 19d6: 4242 negs r2, r0 19d8: 4142 adcs r2, r0 return LV_RES_INV; 19da: b2d0 uxtb r0, r2 } 19dc: b007 add sp, #28 19de: bdf0 pop {r4, r5, r6, r7, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 19e0: 0022 movs r2, r4 19e2: 2300 movs r3, #0 19e4: 4808 ldr r0, [pc, #32] ; (1a08 ) 19e6: 4909 ldr r1, [pc, #36] ; (1a0c ) 19e8: 4788 blx r1 19ea: e7fe b.n 19ea return LV_RES_OK; 19ec: 2001 movs r0, #1 19ee: e7f5 b.n 19dc 19f0: 2001 movs r0, #1 19f2: e7f3 b.n 19dc 19f4: 0000147d .word 0x0000147d 19f8: 200026e0 .word 0x200026e0 19fc: 200026dc .word 0x200026dc 1a00: 0000176d .word 0x0000176d 1a04: 00001a11 .word 0x00001a11 1a08: 0001878c .word 0x0001878c 1a0c: 00001485 .word 0x00001485 00001a10 : { 1a10: b570 push {r4, r5, r6, lr} 1a12: 0004 movs r4, r0 1a14: 000d movs r5, r1 1a16: 0016 movs r6, r2 if(obj == NULL) return LV_RES_OK; 1a18: 2800 cmp r0, #0 1a1a: d010 beq.n 1a3e LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1a1c: 4b09 ldr r3, [pc, #36] ; (1a44 ) 1a1e: 4798 blx r3 1a20: 2800 cmp r0, #0 1a22: d105 bne.n 1a30 1a24: 0022 movs r2, r4 1a26: 2300 movs r3, #0 1a28: 4807 ldr r0, [pc, #28] ; (1a48 ) 1a2a: 4908 ldr r1, [pc, #32] ; (1a4c ) 1a2c: 4788 blx r1 1a2e: e7fe b.n 1a2e res = lv_event_send_func(obj->event_cb, obj, event, data); 1a30: 69a0 ldr r0, [r4, #24] 1a32: 0033 movs r3, r6 1a34: 002a movs r2, r5 1a36: 0021 movs r1, r4 1a38: 4c05 ldr r4, [pc, #20] ; (1a50 ) 1a3a: 47a0 blx r4 } 1a3c: bd70 pop {r4, r5, r6, pc} if(obj == NULL) return LV_RES_OK; 1a3e: 2001 movs r0, #1 1a40: e7fc b.n 1a3c 1a42: 46c0 nop ; (mov r8, r8) 1a44: 0000147d .word 0x0000147d 1a48: 0001878c .word 0x0001878c 1a4c: 00001485 .word 0x00001485 1a50: 0000194d .word 0x0000194d 00001a54 : { 1a54: b510 push {r4, lr} if(obj == NULL) return LV_RES_OK; 1a56: 2800 cmp r0, #0 1a58: d004 beq.n 1a64 if(obj->signal_cb) res = obj->signal_cb(obj, signal, param); 1a5a: 69c3 ldr r3, [r0, #28] 1a5c: 2b00 cmp r3, #0 1a5e: d003 beq.n 1a68 1a60: 4798 blx r3 } 1a62: bd10 pop {r4, pc} if(obj == NULL) return LV_RES_OK; 1a64: 2001 movs r0, #1 1a66: e7fc b.n 1a62 lv_res_t res = LV_RES_OK; 1a68: 2001 movs r0, #1 1a6a: e7fa b.n 1a62 00001a6c : { 1a6c: b510 push {r4, lr} 1a6e: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1a70: 4b08 ldr r3, [pc, #32] ; (1a94 ) 1a72: 4798 blx r3 1a74: 2800 cmp r0, #0 1a76: d105 bne.n 1a84 1a78: 0022 movs r2, r4 1a7a: 2300 movs r3, #0 1a7c: 4806 ldr r0, [pc, #24] ; (1a98 ) 1a7e: 4907 ldr r1, [pc, #28] ; (1a9c ) 1a80: 4788 blx r1 1a82: e7fe b.n 1a82 obj->ext_draw_pad = 0; 1a84: 2300 movs r3, #0 1a86: 8663 strh r3, [r4, #50] ; 0x32 obj->signal_cb(obj, LV_SIGNAL_REFR_EXT_DRAW_PAD, NULL); 1a88: 69e3 ldr r3, [r4, #28] 1a8a: 2200 movs r2, #0 1a8c: 2106 movs r1, #6 1a8e: 0020 movs r0, r4 1a90: 4798 blx r3 } 1a92: bd10 pop {r4, pc} 1a94: 0000147d .word 0x0000147d 1a98: 0001878c .word 0x0001878c 1a9c: 00001485 .word 0x00001485 00001aa0 : { 1aa0: b510 push {r4, lr} 1aa2: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1aa4: 4b05 ldr r3, [pc, #20] ; (1abc ) 1aa6: 4798 blx r3 1aa8: 2800 cmp r0, #0 1aaa: d001 beq.n 1ab0 return obj->parent; 1aac: 6820 ldr r0, [r4, #0] } 1aae: bd10 pop {r4, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1ab0: 0022 movs r2, r4 1ab2: 2300 movs r3, #0 1ab4: 4802 ldr r0, [pc, #8] ; (1ac0 ) 1ab6: 4903 ldr r1, [pc, #12] ; (1ac4 ) 1ab8: 4788 blx r1 1aba: e7fe b.n 1aba 1abc: 0000147d .word 0x0000147d 1ac0: 0001878c .word 0x0001878c 1ac4: 00001485 .word 0x00001485 00001ac8 : { 1ac8: b570 push {r4, r5, r6, lr} 1aca: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1acc: 4b09 ldr r3, [pc, #36] ; (1af4 ) 1ace: 4798 blx r3 1ad0: 2800 cmp r0, #0 1ad2: d001 beq.n 1ad8 par = lv_obj_get_parent(act_p); 1ad4: 4d08 ldr r5, [pc, #32] ; (1af8 ) 1ad6: e006 b.n 1ae6 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1ad8: 0022 movs r2, r4 1ada: 2300 movs r3, #0 1adc: 4807 ldr r0, [pc, #28] ; (1afc ) 1ade: 4908 ldr r1, [pc, #32] ; (1b00 ) 1ae0: 4788 blx r1 1ae2: e7fe b.n 1ae2 par = lv_obj_get_parent(act_p); 1ae4: 0004 movs r4, r0 1ae6: 0020 movs r0, r4 1ae8: 47a8 blx r5 } while(par != NULL); 1aea: 2800 cmp r0, #0 1aec: d1fa bne.n 1ae4 } 1aee: 0020 movs r0, r4 1af0: bd70 pop {r4, r5, r6, pc} 1af2: 46c0 nop ; (mov r8, r8) 1af4: 0000147d .word 0x0000147d 1af8: 00001aa1 .word 0x00001aa1 1afc: 0001878c .word 0x0001878c 1b00: 00001485 .word 0x00001485 00001b04 : { 1b04: b5f0 push {r4, r5, r6, r7, lr} 1b06: 46c6 mov lr, r8 1b08: b500 push {lr} 1b0a: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1b0c: 4b19 ldr r3, [pc, #100] ; (1b74 ) 1b0e: 4798 blx r3 1b10: 2800 cmp r0, #0 1b12: d00f beq.n 1b34 if(obj->parent == NULL) 1b14: 6823 ldr r3, [r4, #0] 1b16: 2b00 cmp r3, #0 1b18: d003 beq.n 1b22 scr = lv_obj_get_screen(obj); /*get the screen of `obj`*/ 1b1a: 0020 movs r0, r4 1b1c: 4b16 ldr r3, [pc, #88] ; (1b78 ) 1b1e: 4798 blx r3 1b20: 0004 movs r4, r0 _LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) { 1b22: 4816 ldr r0, [pc, #88] ; (1b7c ) 1b24: 4b16 ldr r3, [pc, #88] ; (1b80 ) 1b26: 4798 blx r3 1b28: 1e07 subs r7, r0, #0 1b2a: d01e beq.n 1b6a _LV_LL_READ(d->scr_ll, s) { 1b2c: 4b14 ldr r3, [pc, #80] ; (1b80 ) 1b2e: 4698 mov r8, r3 1b30: 4e14 ldr r6, [pc, #80] ; (1b84 ) 1b32: e00b b.n 1b4c LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1b34: 0022 movs r2, r4 1b36: 2300 movs r3, #0 1b38: 4813 ldr r0, [pc, #76] ; (1b88 ) 1b3a: 4914 ldr r1, [pc, #80] ; (1b8c ) 1b3c: 4788 blx r1 1b3e: e7fe b.n 1b3e _LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) { 1b40: 0039 movs r1, r7 1b42: 480e ldr r0, [pc, #56] ; (1b7c ) 1b44: 4b0f ldr r3, [pc, #60] ; (1b84 ) 1b46: 4798 blx r3 1b48: 1e07 subs r7, r0, #0 1b4a: d00e beq.n 1b6a _LV_LL_READ(d->scr_ll, s) { 1b4c: 003d movs r5, r7 1b4e: 3530 adds r5, #48 ; 0x30 1b50: 0028 movs r0, r5 1b52: 47c0 blx r8 1b54: 2800 cmp r0, #0 1b56: d0f3 beq.n 1b40 if(s == scr) return d; 1b58: 4284 cmp r4, r0 1b5a: d006 beq.n 1b6a _LV_LL_READ(d->scr_ll, s) { 1b5c: 0001 movs r1, r0 1b5e: 0028 movs r0, r5 1b60: 47b0 blx r6 1b62: 2800 cmp r0, #0 1b64: d0ec beq.n 1b40 if(s == scr) return d; 1b66: 4284 cmp r4, r0 1b68: d1f8 bne.n 1b5c } 1b6a: 0038 movs r0, r7 1b6c: bc04 pop {r2} 1b6e: 4690 mov r8, r2 1b70: bdf0 pop {r4, r5, r6, r7, pc} 1b72: 46c0 nop ; (mov r8, r8) 1b74: 0000147d .word 0x0000147d 1b78: 00001ac9 .word 0x00001ac9 1b7c: 20004cc4 .word 0x20004cc4 1b80: 0001066d .word 0x0001066d 1b84: 00010685 .word 0x00010685 1b88: 0001878c .word 0x0001878c 1b8c: 00001485 .word 0x00001485 00001b90 : { 1b90: b570 push {r4, r5, r6, lr} 1b92: 0004 movs r4, r0 1b94: 000d movs r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1b96: 4b0a ldr r3, [pc, #40] ; (1bc0 ) 1b98: 4798 blx r3 1b9a: 2800 cmp r0, #0 1b9c: d006 beq.n 1bac if(child == NULL) { 1b9e: 2d00 cmp r5, #0 1ba0: d00a beq.n 1bb8 result = _lv_ll_get_next(&obj->child_ll, child); 1ba2: 1d20 adds r0, r4, #4 1ba4: 0029 movs r1, r5 1ba6: 4b07 ldr r3, [pc, #28] ; (1bc4 ) 1ba8: 4798 blx r3 } 1baa: bd70 pop {r4, r5, r6, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1bac: 0022 movs r2, r4 1bae: 2300 movs r3, #0 1bb0: 4805 ldr r0, [pc, #20] ; (1bc8 ) 1bb2: 4906 ldr r1, [pc, #24] ; (1bcc ) 1bb4: 4788 blx r1 1bb6: e7fe b.n 1bb6 result = _lv_ll_get_head(&obj->child_ll); 1bb8: 1d20 adds r0, r4, #4 1bba: 4b05 ldr r3, [pc, #20] ; (1bd0 ) 1bbc: 4798 blx r3 1bbe: e7f4 b.n 1baa 1bc0: 0000147d .word 0x0000147d 1bc4: 00010685 .word 0x00010685 1bc8: 0001878c .word 0x0001878c 1bcc: 00001485 .word 0x00001485 1bd0: 0001066d .word 0x0001066d 00001bd4 : { 1bd4: b570 push {r4, r5, r6, lr} 1bd6: 0004 movs r4, r0 1bd8: 000d movs r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1bda: 4b0a ldr r3, [pc, #40] ; (1c04 ) 1bdc: 4798 blx r3 1bde: 2800 cmp r0, #0 1be0: d009 beq.n 1bf6 1be2: 0020 movs r0, r4 1be4: 3018 adds r0, #24 * @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; const uint8_t * s8 = (const uint8_t *)src; 1be6: 3410 adds r4, #16 while(len) { *d8 = *s8; 1be8: 7821 ldrb r1, [r4, #0] 1bea: 7029 strb r1, [r5, #0] d8++; 1bec: 3501 adds r5, #1 s8++; 1bee: 3401 adds r4, #1 while(len) { 1bf0: 42a0 cmp r0, r4 1bf2: d1f9 bne.n 1be8 } 1bf4: bd70 pop {r4, r5, r6, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1bf6: 0022 movs r2, r4 1bf8: 2300 movs r3, #0 1bfa: 4803 ldr r0, [pc, #12] ; (1c08 ) 1bfc: 4903 ldr r1, [pc, #12] ; (1c0c ) 1bfe: 4788 blx r1 1c00: e7fe b.n 1c00 1c02: 46c0 nop ; (mov r8, r8) 1c04: 0000147d .word 0x0000147d 1c08: 0001878c .word 0x0001878c 1c0c: 00001485 .word 0x00001485 00001c10 : { 1c10: b510 push {r4, lr} 1c12: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1c14: 4b0b ldr r3, [pc, #44] ; (1c44 ) 1c16: 4798 blx r3 1c18: 2800 cmp r0, #0 1c1a: d105 bne.n 1c28 1c1c: 0022 movs r2, r4 1c1e: 2300 movs r3, #0 1c20: 4809 ldr r0, [pc, #36] ; (1c48 ) 1c22: 490a ldr r1, [pc, #40] ; (1c4c ) 1c24: 4788 blx r1 1c26: e7fe b.n 1c26 lv_obj_t * parent = lv_obj_get_parent(obj); 1c28: 0020 movs r0, r4 1c2a: 4b09 ldr r3, [pc, #36] ; (1c50 ) 1c2c: 4798 blx r3 if(parent) { 1c2e: 2800 cmp r0, #0 1c30: d004 beq.n 1c3c rel_x = obj->coords.x1 - parent->coords.x1; 1c32: 8a23 ldrh r3, [r4, #16] 1c34: 8a00 ldrh r0, [r0, #16] 1c36: 1a18 subs r0, r3, r0 1c38: b200 sxth r0, r0 } 1c3a: bd10 pop {r4, pc} rel_x = obj->coords.x1; 1c3c: 2310 movs r3, #16 1c3e: 5ee0 ldrsh r0, [r4, r3] 1c40: e7fb b.n 1c3a 1c42: 46c0 nop ; (mov r8, r8) 1c44: 0000147d .word 0x0000147d 1c48: 0001878c .word 0x0001878c 1c4c: 00001485 .word 0x00001485 1c50: 00001aa1 .word 0x00001aa1 00001c54 : { 1c54: b510 push {r4, lr} 1c56: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1c58: 4b0b ldr r3, [pc, #44] ; (1c88 ) 1c5a: 4798 blx r3 1c5c: 2800 cmp r0, #0 1c5e: d105 bne.n 1c6c 1c60: 0022 movs r2, r4 1c62: 2300 movs r3, #0 1c64: 4809 ldr r0, [pc, #36] ; (1c8c ) 1c66: 490a ldr r1, [pc, #40] ; (1c90 ) 1c68: 4788 blx r1 1c6a: e7fe b.n 1c6a lv_obj_t * parent = lv_obj_get_parent(obj); 1c6c: 0020 movs r0, r4 1c6e: 4b09 ldr r3, [pc, #36] ; (1c94 ) 1c70: 4798 blx r3 if(parent) { 1c72: 2800 cmp r0, #0 1c74: d004 beq.n 1c80 rel_y = obj->coords.y1 - parent->coords.y1; 1c76: 8a63 ldrh r3, [r4, #18] 1c78: 8a40 ldrh r0, [r0, #18] 1c7a: 1a18 subs r0, r3, r0 1c7c: b200 sxth r0, r0 } 1c7e: bd10 pop {r4, pc} rel_y = obj->coords.y1; 1c80: 2312 movs r3, #18 1c82: 5ee0 ldrsh r0, [r4, r3] 1c84: e7fb b.n 1c7e 1c86: 46c0 nop ; (mov r8, r8) 1c88: 0000147d .word 0x0000147d 1c8c: 0001878c .word 0x0001878c 1c90: 00001485 .word 0x00001485 1c94: 00001aa1 .word 0x00001aa1 00001c98 : { 1c98: b510 push {r4, lr} 1c9a: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1c9c: 4b07 ldr r3, [pc, #28] ; (1cbc ) 1c9e: 4798 blx r3 1ca0: 2800 cmp r0, #0 1ca2: d005 beq.n 1cb0 * @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); 1ca4: 8aa0 ldrh r0, [r4, #20] 1ca6: 3001 adds r0, #1 1ca8: 8a23 ldrh r3, [r4, #16] 1caa: 1ac0 subs r0, r0, r3 return lv_area_get_width(&obj->coords); 1cac: b200 sxth r0, r0 } 1cae: bd10 pop {r4, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1cb0: 0022 movs r2, r4 1cb2: 2300 movs r3, #0 1cb4: 4802 ldr r0, [pc, #8] ; (1cc0 ) 1cb6: 4903 ldr r1, [pc, #12] ; (1cc4 ) 1cb8: 4788 blx r1 1cba: e7fe b.n 1cba 1cbc: 0000147d .word 0x0000147d 1cc0: 0001878c .word 0x0001878c 1cc4: 00001485 .word 0x00001485 00001cc8 : { 1cc8: b510 push {r4, lr} 1cca: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1ccc: 4b07 ldr r3, [pc, #28] ; (1cec ) 1cce: 4798 blx r3 1cd0: 2800 cmp r0, #0 1cd2: d005 beq.n 1ce0 * @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); 1cd4: 8ae0 ldrh r0, [r4, #22] 1cd6: 3001 adds r0, #1 1cd8: 8a63 ldrh r3, [r4, #18] 1cda: 1ac0 subs r0, r0, r3 return lv_area_get_height(&obj->coords); 1cdc: b200 sxth r0, r0 } 1cde: bd10 pop {r4, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1ce0: 0022 movs r2, r4 1ce2: 2300 movs r3, #0 1ce4: 4802 ldr r0, [pc, #8] ; (1cf0 ) 1ce6: 4903 ldr r1, [pc, #12] ; (1cf4 ) 1ce8: 4788 blx r1 1cea: e7fe b.n 1cea 1cec: 0000147d .word 0x0000147d 1cf0: 0001878c .word 0x0001878c 1cf4: 00001485 .word 0x00001485 00001cf8 : { 1cf8: b500 push {lr} 1cfa: b083 sub sp, #12 if(part == LV_OBJ_PART_MAIN) return &((lv_obj_t *)obj)->style_list; 1cfc: 2900 cmp r1, #0 1cfe: d102 bne.n 1d06 1d00: 3028 adds r0, #40 ; 0x28 } 1d02: b003 add sp, #12 1d04: bd00 pop {pc} info.part = part; 1d06: 466b mov r3, sp 1d08: 7019 strb r1, [r3, #0] info.result = NULL; 1d0a: 2300 movs r3, #0 1d0c: 9301 str r3, [sp, #4] res = lv_signal_send((lv_obj_t *)obj, LV_SIGNAL_GET_STYLE, &info); 1d0e: 466a mov r2, sp 1d10: 2108 movs r1, #8 1d12: 4b04 ldr r3, [pc, #16] ; (1d24 ) 1d14: 4798 blx r3 if(res != LV_RES_OK) return NULL; 1d16: 2801 cmp r0, #1 1d18: d101 bne.n 1d1e return info.result; 1d1a: 9801 ldr r0, [sp, #4] 1d1c: e7f1 b.n 1d02 if(res != LV_RES_OK) return NULL; 1d1e: 2000 movs r0, #0 1d20: e7ef b.n 1d02 1d22: 46c0 nop ; (mov r8, r8) 1d24: 00001a55 .word 0x00001a55 00001d28 : * @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) { 1d28: b5f0 push {r4, r5, r6, r7, lr} 1d2a: 46de mov lr, fp 1d2c: 4657 mov r7, sl 1d2e: 4646 mov r6, r8 1d30: b5c0 push {r6, r7, lr} 1d32: 4680 mov r8, r0 1d34: 468a mov sl, r1 1d36: 4693 mov fp, r2 1d38: 001e movs 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)); 1d3a: 481d ldr r0, [pc, #116] ; (1db0 ) 1d3c: 4b1d ldr r3, [pc, #116] ; (1db4 ) 1d3e: 4798 blx r3 1d40: 1e04 subs r4, r0, #0 while(tr != NULL) { 1d42: d02f beq.n 1da4 if(tr == tr_limit) break; 1d44: 42b0 cmp r0, r6 1d46: d02d beq.n 1da4 /*'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); 1d48: 4f1b ldr r7, [pc, #108] ; (1db8 ) 1d4a: e00a b.n 1d62 if(tr->obj == obj && (part == tr->part || part == 0xFF) && (prop == tr->prop || prop == 0xFF)) { 1d4c: 88a3 ldrh r3, [r4, #4] 1d4e: 455b cmp r3, fp 1d50: d015 beq.n 1d7e 1d52: 465b mov r3, fp 1d54: 2bff cmp r3, #255 ; 0xff 1d56: d012 beq.n 1d7e while(tr != NULL) { 1d58: 2d00 cmp r5, #0 1d5a: d023 beq.n 1da4 1d5c: 002c movs r4, r5 if(tr == tr_limit) break; 1d5e: 42ae cmp r6, r5 1d60: d020 beq.n 1da4 tr_prev = _lv_ll_get_prev(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr); 1d62: 0021 movs r1, r4 1d64: 4812 ldr r0, [pc, #72] ; (1db0 ) 1d66: 47b8 blx r7 1d68: 0005 movs r5, r0 if(tr->obj == obj && (part == tr->part || part == 0xFF) && (prop == tr->prop || prop == 0xFF)) { 1d6a: 6820 ldr r0, [r4, #0] 1d6c: 4540 cmp r0, r8 1d6e: d1f3 bne.n 1d58 1d70: 79a1 ldrb r1, [r4, #6] 1d72: 4551 cmp r1, sl 1d74: d0ea beq.n 1d4c 1d76: 4653 mov r3, sl 1d78: 2bff cmp r3, #255 ; 0xff 1d7a: d1ed bne.n 1d58 1d7c: e7e6 b.n 1d4c /* 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); 1d7e: 4b0f ldr r3, [pc, #60] ; (1dbc ) 1d80: 4798 blx r3 lv_style_t * style_trans = _lv_style_list_get_transition_style(list); 1d82: 4b0f ldr r3, [pc, #60] ; (1dc0 ) 1d84: 4798 blx r3 lv_style_remove_prop(style_trans, tr->prop); 1d86: 88a1 ldrh r1, [r4, #4] 1d88: 4b0e ldr r3, [pc, #56] ; (1dc4 ) 1d8a: 4798 blx r3 lv_anim_del(tr, NULL); 1d8c: 2100 movs r1, #0 1d8e: 0020 movs r0, r4 1d90: 4b0d ldr r3, [pc, #52] ; (1dc8 ) 1d92: 4798 blx r3 _lv_ll_remove(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr); 1d94: 0021 movs r1, r4 1d96: 4806 ldr r0, [pc, #24] ; (1db0 ) 1d98: 4b0c ldr r3, [pc, #48] ; (1dcc ) 1d9a: 4798 blx r3 lv_mem_free(tr); 1d9c: 0020 movs r0, r4 1d9e: 4b0c ldr r3, [pc, #48] ; (1dd0 ) 1da0: 4798 blx r3 1da2: e7d9 b.n 1d58 } tr = tr_prev; } } 1da4: bc1c pop {r2, r3, r4} 1da6: 4690 mov r8, r2 1da8: 469a mov sl, r3 1daa: 46a3 mov fp, r4 1dac: bdf0 pop {r4, r5, r6, r7, pc} 1dae: 46c0 nop ; (mov r8, r8) 1db0: 20004d68 .word 0x20004d68 1db4: 00010679 .word 0x00010679 1db8: 000106ad .word 0x000106ad 1dbc: 00001cf9 .word 0x00001cf9 1dc0: 00005621 .word 0x00005621 1dc4: 00004bd1 .word 0x00004bd1 1dc8: 0000fa91 .word 0x0000fa91 1dcc: 00010755 .word 0x00010755 1dd0: 00010b39 .word 0x00010b39 00001dd4 : { 1dd4: b570 push {r4, r5, r6, lr} 1dd6: 0004 movs r4, r0 1dd8: 000d movs r5, r1 lv_style_list_t * style_dsc = lv_obj_get_style_list(obj, part); 1dda: 4b06 ldr r3, [pc, #24] ; (1df4 ) 1ddc: 4798 blx r3 if(style_dsc == NULL) { 1dde: 2800 cmp r0, #0 1de0: d007 beq.n 1df2 _lv_style_list_reset(style_dsc); 1de2: 4b05 ldr r3, [pc, #20] ; (1df8 ) 1de4: 4798 blx r3 trans_del(obj, part, 0xFF, NULL); 1de6: 2300 movs r3, #0 1de8: 22ff movs r2, #255 ; 0xff 1dea: 0029 movs r1, r5 1dec: 0020 movs r0, r4 1dee: 4c03 ldr r4, [pc, #12] ; (1dfc ) 1df0: 47a0 blx r4 } 1df2: bd70 pop {r4, r5, r6, pc} 1df4: 00001cf9 .word 0x00001cf9 1df8: 00005631 .word 0x00005631 1dfc: 00001d29 .word 0x00001d29 00001e00 : tr->prop = prop_tmp; } static void trans_anim_ready_cb(lv_anim_t * a) { 1e00: b5f8 push {r3, r4, r5, r6, r7, lr} lv_style_trans_t * tr = a->var; 1e02: 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) { 1e04: 4817 ldr r0, [pc, #92] ; (1e64 ) 1e06: 4b18 ldr r3, [pc, #96] ; (1e68 ) 1e08: 4798 blx r3 1e0a: 2800 cmp r0, #0 1e0c: d020 beq.n 1e50 1e0e: 2600 movs r6, #0 1e10: 4d14 ldr r5, [pc, #80] ; (1e64 ) 1e12: 4f16 ldr r7, [pc, #88] ; (1e6c ) 1e14: e004 b.n 1e20 1e16: 0001 movs r1, r0 1e18: 0028 movs r0, r5 1e1a: 47b8 blx r7 1e1c: 2800 cmp r0, #0 1e1e: d00d beq.n 1e3c if(tr_i != tr && tr_i->obj == tr->obj && tr_i->part == tr->part && tr_i->prop == tr->prop) { 1e20: 4284 cmp r4, r0 1e22: d0f8 beq.n 1e16 1e24: 6803 ldr r3, [r0, #0] 1e26: 6822 ldr r2, [r4, #0] 1e28: 4293 cmp r3, r2 1e2a: d1f4 bne.n 1e16 1e2c: 6843 ldr r3, [r0, #4] 1e2e: 021b lsls r3, r3, #8 1e30: 6862 ldr r2, [r4, #4] 1e32: 0212 lsls r2, r2, #8 1e34: 429a cmp r2, r3 1e36: d1ee bne.n 1e16 running = true; 1e38: 2601 movs r6, #1 1e3a: e7ec b.n 1e16 } } if(!running) { 1e3c: 2e00 cmp r6, #0 1e3e: d007 beq.n 1e50 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); 1e40: 0021 movs r1, r4 1e42: 4808 ldr r0, [pc, #32] ; (1e64 ) 1e44: 4b0a ldr r3, [pc, #40] ; (1e70 ) 1e46: 4798 blx r3 lv_mem_free(tr); 1e48: 0020 movs r0, r4 1e4a: 4b0a ldr r3, [pc, #40] ; (1e74 ) 1e4c: 4798 blx r3 } 1e4e: bdf8 pop {r3, r4, r5, r6, r7, pc} lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part); 1e50: 79a1 ldrb r1, [r4, #6] 1e52: 6820 ldr r0, [r4, #0] 1e54: 4b08 ldr r3, [pc, #32] ; (1e78 ) 1e56: 4798 blx r3 lv_style_t * style_trans = _lv_style_list_get_transition_style(list); 1e58: 4b08 ldr r3, [pc, #32] ; (1e7c ) 1e5a: 4798 blx r3 lv_style_remove_prop(style_trans, tr->prop); 1e5c: 88a1 ldrh r1, [r4, #4] 1e5e: 4b08 ldr r3, [pc, #32] ; (1e80 ) 1e60: 4798 blx r3 1e62: e7ed b.n 1e40 1e64: 20004d68 .word 0x20004d68 1e68: 0001066d .word 0x0001066d 1e6c: 00010685 .word 0x00010685 1e70: 00010755 .word 0x00010755 1e74: 00010b39 .word 0x00010b39 1e78: 00001cf9 .word 0x00001cf9 1e7c: 00005621 .word 0x00005621 1e80: 00004bd1 .word 0x00004bd1 00001e84 : { 1e84: b510 push {r4, lr} 1e86: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1e88: 4b07 ldr r3, [pc, #28] ; (1ea8 ) 1e8a: 4798 blx r3 1e8c: 2800 cmp r0, #0 1e8e: d004 beq.n 1e9a return obj->hidden == 0 ? false : true; 1e90: 2334 movs r3, #52 ; 0x34 1e92: 5ce0 ldrb r0, [r4, r3] 1e94: 06c0 lsls r0, r0, #27 1e96: 0fc0 lsrs r0, r0, #31 } 1e98: bd10 pop {r4, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1e9a: 0022 movs r2, r4 1e9c: 2300 movs r3, #0 1e9e: 4803 ldr r0, [pc, #12] ; (1eac ) 1ea0: 4903 ldr r1, [pc, #12] ; (1eb0 ) 1ea2: 4788 blx r1 1ea4: e7fe b.n 1ea4 1ea6: 46c0 nop ; (mov r8, r8) 1ea8: 0000147d .word 0x0000147d 1eac: 0001878c .word 0x0001878c 1eb0: 00001485 .word 0x00001485 00001eb4 : { 1eb4: b5f0 push {r4, r5, r6, r7, lr} 1eb6: b085 sub sp, #20 1eb8: 0004 movs r4, r0 1eba: 000e movs r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1ebc: 4b30 ldr r3, [pc, #192] ; (1f80 ) 1ebe: 4798 blx r3 1ec0: 2800 cmp r0, #0 1ec2: d105 bne.n 1ed0 1ec4: 0022 movs r2, r4 1ec6: 2300 movs r3, #0 1ec8: 482e ldr r0, [pc, #184] ; (1f84 ) 1eca: 492f ldr r1, [pc, #188] ; (1f88 ) 1ecc: 4788 blx r1 1ece: e7fe b.n 1ece if(lv_obj_get_hidden(obj)) return; 1ed0: 0020 movs r0, r4 1ed2: 4b2e ldr r3, [pc, #184] ; (1f8c ) 1ed4: 4798 blx r3 1ed6: 2800 cmp r0, #0 1ed8: d001 beq.n 1ede } 1eda: b005 add sp, #20 1edc: bdf0 pop {r4, r5, r6, r7, pc} lv_obj_t * obj_scr = lv_obj_get_screen(obj); 1ede: 0020 movs r0, r4 1ee0: 4b2b ldr r3, [pc, #172] ; (1f90 ) 1ee2: 4798 blx r3 1ee4: 0007 movs r7, r0 lv_disp_t * disp = lv_obj_get_disp(obj_scr); 1ee6: 4b2b ldr r3, [pc, #172] ; (1f94 ) 1ee8: 4798 blx r3 1eea: 0005 movs r5, r0 if(obj_scr == lv_disp_get_scr_act(disp) || obj_scr == lv_disp_get_layer_top(disp) || 1eec: 4b2a ldr r3, [pc, #168] ; (1f98 ) 1eee: 4798 blx r3 1ef0: 4287 cmp r7, r0 1ef2: d009 beq.n 1f08 1ef4: 0028 movs r0, r5 1ef6: 4b29 ldr r3, [pc, #164] ; (1f9c ) 1ef8: 4798 blx r3 1efa: 4287 cmp r7, r0 1efc: d004 beq.n 1f08 obj_scr == lv_disp_get_layer_sys(disp)) { 1efe: 0028 movs r0, r5 1f00: 4b27 ldr r3, [pc, #156] ; (1fa0 ) 1f02: 4798 blx r3 if(obj_scr == lv_disp_get_scr_act(disp) || obj_scr == lv_disp_get_layer_top(disp) || 1f04: 4287 cmp r7, r0 1f06: d1e8 bne.n 1eda lv_coord_t ext_size = obj->ext_draw_pad; 1f08: 2232 movs r2, #50 ; 0x32 1f0a: 5ea3 ldrsh r3, [r4, r2] lv_area_copy(&obj_coords, &obj->coords); 1f0c: 0021 movs r1, r4 1f0e: 3110 adds r1, #16 1f10: 2200 movs r2, #0 *d8 = *s8; 1f12: 5c88 ldrb r0, [r1, r2] 1f14: 466f mov r7, sp 1f16: 55d0 strb r0, [r2, r7] 1f18: 3201 adds r2, #1 while(len) { 1f1a: 2a08 cmp r2, #8 1f1c: d1f9 bne.n 1f12 obj_coords.x1 -= ext_size; 1f1e: b29b uxth r3, r3 1f20: 883a ldrh r2, [r7, #0] 1f22: 1ad2 subs r2, r2, r3 1f24: 803a strh r2, [r7, #0] obj_coords.y1 -= ext_size; 1f26: 887a ldrh r2, [r7, #2] 1f28: 1ad2 subs r2, r2, r3 1f2a: 807a strh r2, [r7, #2] obj_coords.x2 += ext_size; 1f2c: 88ba ldrh r2, [r7, #4] 1f2e: 189a adds r2, r3, r2 1f30: 80ba strh r2, [r7, #4] obj_coords.y2 += ext_size; 1f32: 88fa ldrh r2, [r7, #6] 1f34: 189b adds r3, r3, r2 1f36: 466a mov r2, sp 1f38: 80fb strh r3, [r7, #6] is_common = _lv_area_intersect(&area_trunc, area, &obj_coords); 1f3a: 0031 movs r1, r6 1f3c: a802 add r0, sp, #8 1f3e: 4b19 ldr r3, [pc, #100] ; (1fa4 ) 1f40: 4798 blx r3 if(is_common == false) return; /*The area is not on the object*/ 1f42: 2800 cmp r0, #0 1f44: d0c9 beq.n 1eda lv_obj_t * par = lv_obj_get_parent(obj); 1f46: 0020 movs r0, r4 1f48: 4b17 ldr r3, [pc, #92] ; (1fa8 ) 1f4a: 4798 blx r3 1f4c: 1e04 subs r4, r0, #0 while(par != NULL) { 1f4e: d011 beq.n 1f74 is_common = _lv_area_intersect(&area_trunc, &area_trunc, &par->coords); 1f50: 4e14 ldr r6, [pc, #80] ; (1fa4 ) 1f52: 0022 movs r2, r4 1f54: 3210 adds r2, #16 1f56: a902 add r1, sp, #8 1f58: 0008 movs r0, r1 1f5a: 47b0 blx r6 if(is_common == false) break; /*If no common parts with parent break;*/ 1f5c: 2800 cmp r0, #0 1f5e: d0bc beq.n 1eda if(lv_obj_get_hidden(par)) return; /*If the parent is hidden then the child is hidden and won't be drawn*/ 1f60: 0020 movs r0, r4 1f62: 4b0a ldr r3, [pc, #40] ; (1f8c ) 1f64: 4798 blx r3 1f66: 2800 cmp r0, #0 1f68: d1b7 bne.n 1eda par = lv_obj_get_parent(par); 1f6a: 0020 movs r0, r4 1f6c: 4b0e ldr r3, [pc, #56] ; (1fa8 ) 1f6e: 4798 blx r3 1f70: 1e04 subs r4, r0, #0 while(par != NULL) { 1f72: d1ee bne.n 1f52 if(is_common) _lv_inv_area(disp, &area_trunc); 1f74: a902 add r1, sp, #8 1f76: 0028 movs r0, r5 1f78: 4b0c ldr r3, [pc, #48] ; (1fac ) 1f7a: 4798 blx r3 1f7c: e7ad b.n 1eda 1f7e: 46c0 nop ; (mov r8, r8) 1f80: 0000147d .word 0x0000147d 1f84: 0001878c .word 0x0001878c 1f88: 00001485 .word 0x00001485 1f8c: 00001e85 .word 0x00001e85 1f90: 00001ac9 .word 0x00001ac9 1f94: 00001b05 .word 0x00001b05 1f98: 000014ad .word 0x000014ad 1f9c: 000014c9 .word 0x000014c9 1fa0: 000014e5 .word 0x000014e5 1fa4: 0000fc0f .word 0x0000fc0f 1fa8: 00001aa1 .word 0x00001aa1 1fac: 000042a1 .word 0x000042a1 00001fb0 : { 1fb0: b530 push {r4, r5, lr} 1fb2: b083 sub sp, #12 1fb4: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1fb6: 4b14 ldr r3, [pc, #80] ; (2008 ) 1fb8: 4798 blx r3 1fba: 2800 cmp r0, #0 1fbc: d01d beq.n 1ffa lv_coord_t ext_size = obj->ext_draw_pad; 1fbe: 2332 movs r3, #50 ; 0x32 1fc0: 5ee2 ldrsh r2, [r4, r3] lv_area_copy(&obj_coords, &obj->coords); 1fc2: 0020 movs r0, r4 1fc4: 3010 adds r0, #16 1fc6: 2300 movs r3, #0 *d8 = *s8; 1fc8: 5cc1 ldrb r1, [r0, r3] 1fca: 466d mov r5, sp 1fcc: 5559 strb r1, [r3, r5] 1fce: 3301 adds r3, #1 while(len) { 1fd0: 2b08 cmp r3, #8 1fd2: d1f9 bne.n 1fc8 obj_coords.x1 -= ext_size; 1fd4: b293 uxth r3, r2 1fd6: 882a ldrh r2, [r5, #0] 1fd8: 1ad2 subs r2, r2, r3 1fda: 4669 mov r1, sp 1fdc: 802a strh r2, [r5, #0] obj_coords.y1 -= ext_size; 1fde: 886a ldrh r2, [r5, #2] 1fe0: 1ad2 subs r2, r2, r3 1fe2: 806a strh r2, [r5, #2] obj_coords.x2 += ext_size; 1fe4: 88aa ldrh r2, [r5, #4] 1fe6: 189a adds r2, r3, r2 1fe8: 80aa strh r2, [r5, #4] obj_coords.y2 += ext_size; 1fea: 88ea ldrh r2, [r5, #6] 1fec: 189b adds r3, r3, r2 1fee: 80eb strh r3, [r5, #6] lv_obj_invalidate_area(obj, &obj_coords); 1ff0: 0020 movs r0, r4 1ff2: 4b06 ldr r3, [pc, #24] ; (200c ) 1ff4: 4798 blx r3 } 1ff6: b003 add sp, #12 1ff8: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1ffa: 0022 movs r2, r4 1ffc: 2300 movs r3, #0 1ffe: 4804 ldr r0, [pc, #16] ; (2010 ) 2000: 4904 ldr r1, [pc, #16] ; (2014 ) 2002: 4788 blx r1 2004: e7fe b.n 2004 2006: 46c0 nop ; (mov r8, r8) 2008: 0000147d .word 0x0000147d 200c: 00001eb5 .word 0x00001eb5 2010: 0001878c .word 0x0001878c 2014: 00001485 .word 0x00001485 00002018 : { 2018: b5f8 push {r3, r4, r5, r6, r7, lr} 201a: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 201c: 4b12 ldr r3, [pc, #72] ; (2068 ) 201e: 4798 blx r3 2020: 2800 cmp r0, #0 2022: d105 bne.n 2030 2024: 0022 movs r2, r4 2026: 2300 movs r3, #0 2028: 4810 ldr r0, [pc, #64] ; (206c ) 202a: 4911 ldr r1, [pc, #68] ; (2070 ) 202c: 4788 blx r1 202e: e7fe b.n 202e lv_obj_t * parent = lv_obj_get_parent(obj); 2030: 0020 movs r0, r4 2032: 4b10 ldr r3, [pc, #64] ; (2074 ) 2034: 4798 blx r3 2036: 0005 movs r5, r0 if(_lv_ll_get_head(&parent->child_ll) == obj) return; 2038: 1d06 adds r6, r0, #4 203a: 0030 movs r0, r6 203c: 4b0e ldr r3, [pc, #56] ; (2078 ) 203e: 4798 blx r3 2040: 4284 cmp r4, r0 2042: d00f beq.n 2064 lv_obj_invalidate(parent); 2044: 0028 movs r0, r5 2046: 4f0d ldr r7, [pc, #52] ; (207c ) 2048: 47b8 blx r7 _lv_ll_chg_list(&parent->child_ll, &parent->child_ll, obj, true); 204a: 2301 movs r3, #1 204c: 0022 movs r2, r4 204e: 0031 movs r1, r6 2050: 0030 movs r0, r6 2052: 4e0b ldr r6, [pc, #44] ; (2080 ) 2054: 47b0 blx r6 parent->signal_cb(parent, LV_SIGNAL_CHILD_CHG, obj); 2056: 0022 movs r2, r4 2058: 2101 movs r1, #1 205a: 0028 movs r0, r5 205c: 69eb ldr r3, [r5, #28] 205e: 4798 blx r3 lv_obj_invalidate(parent); 2060: 0028 movs r0, r5 2062: 47b8 blx r7 } 2064: bdf8 pop {r3, r4, r5, r6, r7, pc} 2066: 46c0 nop ; (mov r8, r8) 2068: 0000147d .word 0x0000147d 206c: 0001878c .word 0x0001878c 2070: 00001485 .word 0x00001485 2074: 00001aa1 .word 0x00001aa1 2078: 0001066d .word 0x0001066d 207c: 00001fb1 .word 0x00001fb1 2080: 000107e5 .word 0x000107e5 00002084 : { 2084: b5f0 push {r4, r5, r6, r7, lr} 2086: 46d6 mov lr, sl 2088: 464f mov r7, r9 208a: 4646 mov r6, r8 208c: b5c0 push {r6, r7, lr} 208e: b082 sub sp, #8 2090: 0004 movs r4, r0 2092: 000d movs r5, r1 2094: 0017 movs r7, r2 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2096: 4b26 ldr r3, [pc, #152] ; (2130 ) 2098: 4798 blx r3 209a: 2800 cmp r0, #0 209c: d041 beq.n 2122 lv_obj_t * par = obj->parent; 209e: 6826 ldr r6, [r4, #0] if(par == NULL) { 20a0: 2e00 cmp r6, #0 20a2: d038 beq.n 2116 diff.x = x - obj->coords.x1; 20a4: 8a33 ldrh r3, [r6, #16] 20a6: 8a22 ldrh r2, [r4, #16] 20a8: 1a9b subs r3, r3, r2 20aa: 195b adds r3, r3, r5 20ac: b29b uxth r3, r3 20ae: 469a mov sl, r3 20b0: b21b sxth r3, r3 20b2: 4698 mov r8, r3 diff.y = y - obj->coords.y1; 20b4: 8a75 ldrh r5, [r6, #18] 20b6: 8a63 ldrh r3, [r4, #18] 20b8: 1aed subs r5, r5, r3 20ba: 19ed adds r5, r5, r7 20bc: b2ad uxth r5, r5 20be: b22b sxth r3, r5 20c0: 4699 mov r9, r3 if(diff.x == 0 && diff.y == 0) return; 20c2: 4643 mov r3, r8 20c4: 2b00 cmp r3, #0 20c6: d102 bne.n 20ce 20c8: 464b mov r3, r9 20ca: 2b00 cmp r3, #0 20cc: d023 beq.n 2116 lv_obj_invalidate(obj); 20ce: 0020 movs r0, r4 20d0: 4f18 ldr r7, [pc, #96] ; (2134 ) 20d2: 47b8 blx r7 lv_obj_get_coords(obj, &ori); 20d4: 4669 mov r1, sp 20d6: 0020 movs r0, r4 20d8: 4b17 ldr r3, [pc, #92] ; (2138 ) 20da: 4798 blx r3 obj->coords.x1 += diff.x; 20dc: 8a23 ldrh r3, [r4, #16] 20de: 4453 add r3, sl 20e0: 8223 strh r3, [r4, #16] obj->coords.y1 += diff.y; 20e2: 8a63 ldrh r3, [r4, #18] 20e4: 18eb adds r3, r5, r3 20e6: 8263 strh r3, [r4, #18] obj->coords.x2 += diff.x; 20e8: 8aa3 ldrh r3, [r4, #20] 20ea: 4453 add r3, sl 20ec: 82a3 strh r3, [r4, #20] obj->coords.y2 += diff.y; 20ee: 8ae3 ldrh r3, [r4, #22] 20f0: 18ed adds r5, r5, r3 20f2: 82e5 strh r5, [r4, #22] refresh_children_position(obj, diff.x, diff.y); 20f4: 464a mov r2, r9 20f6: 4641 mov r1, r8 20f8: 0020 movs r0, r4 20fa: 4b10 ldr r3, [pc, #64] ; (213c ) 20fc: 4798 blx r3 obj->signal_cb(obj, LV_SIGNAL_COORD_CHG, &ori); 20fe: 466a mov r2, sp 2100: 2102 movs r1, #2 2102: 0020 movs r0, r4 2104: 69e3 ldr r3, [r4, #28] 2106: 4798 blx r3 par->signal_cb(par, LV_SIGNAL_CHILD_CHG, obj); 2108: 69f3 ldr r3, [r6, #28] 210a: 0022 movs r2, r4 210c: 2101 movs r1, #1 210e: 0030 movs r0, r6 2110: 4798 blx r3 lv_obj_invalidate(obj); 2112: 0020 movs r0, r4 2114: 47b8 blx r7 } 2116: b002 add sp, #8 2118: bc1c pop {r2, r3, r4} 211a: 4690 mov r8, r2 211c: 4699 mov r9, r3 211e: 46a2 mov sl, r4 2120: bdf0 pop {r4, r5, r6, r7, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2122: 0022 movs r2, r4 2124: 2300 movs r3, #0 2126: 4806 ldr r0, [pc, #24] ; (2140 ) 2128: 4906 ldr r1, [pc, #24] ; (2144 ) 212a: 4788 blx r1 212c: e7fe b.n 212c 212e: 46c0 nop ; (mov r8, r8) 2130: 0000147d .word 0x0000147d 2134: 00001fb1 .word 0x00001fb1 2138: 00001bd5 .word 0x00001bd5 213c: 00001809 .word 0x00001809 2140: 0001878c .word 0x0001878c 2144: 00001485 .word 0x00001485 00002148 : { 2148: b5f0 push {r4, r5, r6, r7, lr} 214a: 46d6 mov lr, sl 214c: 464f mov r7, r9 214e: 4646 mov r6, r8 2150: b5c0 push {r6, r7, lr} 2152: b084 sub sp, #16 2154: 0004 movs r4, r0 2156: 000f movs r7, r1 2158: 9201 str r2, [sp, #4] 215a: 4699 mov r9, r3 215c: ab0c add r3, sp, #48 ; 0x30 215e: 2200 movs r2, #0 2160: 5e9a ldrsh r2, [r3, r2] 2162: 4690 mov r8, r2 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2164: 4b26 ldr r3, [pc, #152] ; (2200 ) 2166: 4798 blx r3 2168: 2800 cmp r0, #0 216a: d105 bne.n 2178 216c: 0022 movs r2, r4 216e: 2300 movs r3, #0 2170: 4824 ldr r0, [pc, #144] ; (2204 ) 2172: 4925 ldr r1, [pc, #148] ; (2208 ) 2174: 4788 blx r1 2176: e7fe b.n 2176 if(base == NULL) base = lv_obj_get_parent(obj); 2178: 2f00 cmp r7, #0 217a: d00a beq.n 2192 LV_ASSERT_OBJ(base, LV_OBJX_NAME); 217c: 0038 movs r0, r7 217e: 4b20 ldr r3, [pc, #128] ; (2200 ) 2180: 4798 blx r3 2182: 2800 cmp r0, #0 2184: d10a bne.n 219c 2186: 003a movs r2, r7 2188: 2300 movs r3, #0 218a: 481e ldr r0, [pc, #120] ; (2204 ) 218c: 491e ldr r1, [pc, #120] ; (2208 ) 218e: 4788 blx r1 2190: e7fe b.n 2190 if(base == NULL) base = lv_obj_get_parent(obj); 2192: 0020 movs r0, r4 2194: 4b1d ldr r3, [pc, #116] ; (220c ) 2196: 4798 blx r3 2198: 0007 movs r7, r0 219a: e7ef b.n 217c _lv_area_align(&base->coords, &obj->coords, align, &new_pos); 219c: ad03 add r5, sp, #12 219e: 0021 movs r1, r4 21a0: 3110 adds r1, #16 21a2: 0038 movs r0, r7 21a4: 3010 adds r0, #16 21a6: 002b movs r3, r5 21a8: 9a01 ldr r2, [sp, #4] 21aa: 4e19 ldr r6, [pc, #100] ; (2210 ) 21ac: 47b0 blx r6 lv_obj_t * par = lv_obj_get_parent(obj); 21ae: 0020 movs r0, r4 21b0: 4b16 ldr r3, [pc, #88] ; (220c ) 21b2: 4798 blx r3 lv_coord_t par_abs_y = par->coords.y1; 21b4: 2212 movs r2, #18 21b6: 5e83 ldrsh r3, [r0, r2] new_pos.y += y_ofs; 21b8: 886a ldrh r2, [r5, #2] 21ba: 4442 add r2, r8 new_pos.x += x_ofs; 21bc: 8829 ldrh r1, [r5, #0] 21be: 4449 add r1, r9 new_pos.x -= par_abs_x; 21c0: 8a00 ldrh r0, [r0, #16] 21c2: 1a09 subs r1, r1, r0 21c4: b209 sxth r1, r1 21c6: 8029 strh r1, [r5, #0] new_pos.y -= par_abs_y; 21c8: 1ad2 subs r2, r2, r3 21ca: b212 sxth r2, r2 21cc: 806a strh r2, [r5, #2] lv_obj_set_pos(obj, new_pos.x, new_pos.y); 21ce: 0020 movs r0, r4 21d0: 4b10 ldr r3, [pc, #64] ; (2214 ) 21d2: 4798 blx r3 obj->realign.align = align; 21d4: 2348 movs r3, #72 ; 0x48 21d6: 466a mov r2, sp 21d8: 7912 ldrb r2, [r2, #4] 21da: 54e2 strb r2, [r4, r3] obj->realign.xofs = x_ofs; 21dc: 3b04 subs r3, #4 21de: 464a mov r2, r9 21e0: 52e2 strh r2, [r4, r3] obj->realign.yofs = y_ofs; 21e2: 3302 adds r3, #2 21e4: 4642 mov r2, r8 21e6: 52e2 strh r2, [r4, r3] obj->realign.base = base; 21e8: 6427 str r7, [r4, #64] ; 0x40 obj->realign.origo_align = 0; 21ea: 2249 movs r2, #73 ; 0x49 21ec: 5ca3 ldrb r3, [r4, r2] 21ee: 2102 movs r1, #2 21f0: 438b bics r3, r1 21f2: 54a3 strb r3, [r4, r2] } 21f4: b004 add sp, #16 21f6: bc1c pop {r2, r3, r4} 21f8: 4690 mov r8, r2 21fa: 4699 mov r9, r3 21fc: 46a2 mov sl, r4 21fe: bdf0 pop {r4, r5, r6, r7, pc} 2200: 0000147d .word 0x0000147d 2204: 0001878c .word 0x0001878c 2208: 00001485 .word 0x00001485 220c: 00001aa1 .word 0x00001aa1 2210: 0000ff41 .word 0x0000ff41 2214: 00002085 .word 0x00002085 00002218 : { 2218: b5f0 push {r4, r5, r6, r7, lr} 221a: 46de mov lr, fp 221c: 4657 mov r7, sl 221e: 464e mov r6, r9 2220: 4645 mov r5, r8 2222: b5e0 push {r5, r6, r7, lr} 2224: b083 sub sp, #12 2226: 4680 mov r8, r0 2228: 9101 str r1, [sp, #4] 222a: 4692 mov sl, r2 222c: 4699 mov r9, r3 222e: ab0c add r3, sp, #48 ; 0x30 2230: 2200 movs r2, #0 2232: 5e9b ldrsh r3, [r3, r2] 2234: 469b mov fp, r3 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2236: 4ba1 ldr r3, [pc, #644] ; (24bc ) 2238: 4798 blx r3 223a: 2800 cmp r0, #0 223c: d105 bne.n 224a 223e: 4642 mov r2, r8 2240: 2300 movs r3, #0 2242: 489f ldr r0, [pc, #636] ; (24c0 ) 2244: 499f ldr r1, [pc, #636] ; (24c4 ) 2246: 4788 blx r1 2248: e7fe b.n 2248 lv_coord_t new_x = lv_obj_get_x(obj); 224a: 4640 mov r0, r8 224c: 4b9e ldr r3, [pc, #632] ; (24c8 ) 224e: 4798 blx r3 2250: 0005 movs r5, r0 lv_coord_t new_y = lv_obj_get_y(obj); 2252: 4640 mov r0, r8 2254: 4b9d ldr r3, [pc, #628] ; (24cc ) 2256: 4798 blx r3 2258: 0004 movs r4, r0 lv_coord_t obj_w_half = lv_obj_get_width(obj) / 2; 225a: 4640 mov r0, r8 225c: 4b9c ldr r3, [pc, #624] ; (24d0 ) 225e: 4798 blx r3 2260: 0fc3 lsrs r3, r0, #31 2262: 181b adds r3, r3, r0 2264: 105b asrs r3, r3, #1 2266: b21e sxth r6, r3 lv_coord_t obj_h_half = lv_obj_get_height(obj) / 2; 2268: 4640 mov r0, r8 226a: 4b9a ldr r3, [pc, #616] ; (24d4 ) 226c: 4798 blx r3 226e: 0fc7 lsrs r7, r0, #31 2270: 183f adds r7, r7, r0 2272: 107f asrs r7, r7, #1 2274: b23f sxth r7, r7 if(base == NULL) { 2276: 9b01 ldr r3, [sp, #4] 2278: 2b00 cmp r3, #0 227a: d00b beq.n 2294 LV_ASSERT_OBJ(base, LV_OBJX_NAME); 227c: 9801 ldr r0, [sp, #4] 227e: 4b8f ldr r3, [pc, #572] ; (24bc ) 2280: 4798 blx r3 2282: 2800 cmp r0, #0 2284: d00b beq.n 229e switch(align) { 2286: 4653 mov r3, sl 2288: 2b14 cmp r3, #20 228a: d81f bhi.n 22cc 228c: 009b lsls r3, r3, #2 228e: 4a92 ldr r2, [pc, #584] ; (24d8 ) 2290: 58d3 ldr r3, [r2, r3] 2292: 469f mov pc, r3 base = lv_obj_get_parent(obj); 2294: 4640 mov r0, r8 2296: 4b91 ldr r3, [pc, #580] ; (24dc ) 2298: 4798 blx r3 229a: 9001 str r0, [sp, #4] 229c: e7ee b.n 227c LV_ASSERT_OBJ(base, LV_OBJX_NAME); 229e: 9a01 ldr r2, [sp, #4] 22a0: 2300 movs r3, #0 22a2: 4887 ldr r0, [pc, #540] ; (24c0 ) 22a4: 4987 ldr r1, [pc, #540] ; (24c4 ) 22a6: 4788 blx r1 22a8: e7fe b.n 22a8 new_x = lv_obj_get_width(base) / 2 - obj_w_half; 22aa: 9c01 ldr r4, [sp, #4] 22ac: 0020 movs r0, r4 22ae: 4b88 ldr r3, [pc, #544] ; (24d0 ) 22b0: 4798 blx r3 22b2: 0fc5 lsrs r5, r0, #31 22b4: 182d adds r5, r5, r0 22b6: 106d asrs r5, r5, #1 22b8: 1bad subs r5, r5, r6 22ba: b22d sxth r5, r5 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 22bc: 0020 movs r0, r4 22be: 4b85 ldr r3, [pc, #532] ; (24d4 ) 22c0: 4798 blx r3 22c2: 0fc4 lsrs r4, r0, #31 22c4: 1824 adds r4, r4, r0 22c6: 1064 asrs r4, r4, #1 22c8: 1be4 subs r4, r4, r7 22ca: b224 sxth r4, r4 lv_obj_t * par = lv_obj_get_parent(obj); 22cc: 4640 mov r0, r8 22ce: 4b83 ldr r3, [pc, #524] ; (24dc ) 22d0: 4798 blx r3 new_x += x_ofs + base_abs_x; 22d2: 9a01 ldr r2, [sp, #4] 22d4: 8a13 ldrh r3, [r2, #16] 22d6: 444b add r3, r9 22d8: 195d adds r5, r3, r5 new_x -= par_abs_x; 22da: 8a01 ldrh r1, [r0, #16] 22dc: 1a69 subs r1, r5, r1 new_y += y_ofs + base_abs_y; 22de: 0015 movs r5, r2 22e0: 8a52 ldrh r2, [r2, #18] 22e2: 445a add r2, fp 22e4: 1912 adds r2, r2, r4 new_y -= par_abs_y; 22e6: 8a44 ldrh r4, [r0, #18] 22e8: 1b12 subs r2, r2, r4 lv_obj_set_pos(obj, new_x, new_y); 22ea: b212 sxth r2, r2 22ec: b209 sxth r1, r1 22ee: 4640 mov r0, r8 22f0: 4b7b ldr r3, [pc, #492] ; (24e0 ) 22f2: 4798 blx r3 obj->realign.align = align; 22f4: 2348 movs r3, #72 ; 0x48 22f6: 4642 mov r2, r8 22f8: 4651 mov r1, sl 22fa: 54d1 strb r1, [r2, r3] obj->realign.xofs = x_ofs; 22fc: 3b04 subs r3, #4 22fe: 4649 mov r1, r9 2300: 52d1 strh r1, [r2, r3] obj->realign.yofs = y_ofs; 2302: 3302 adds r3, #2 2304: 4659 mov r1, fp 2306: 52d1 strh r1, [r2, r3] obj->realign.base = base; 2308: 6415 str r5, [r2, #64] ; 0x40 obj->realign.origo_align = 1; 230a: 2249 movs r2, #73 ; 0x49 230c: 4643 mov r3, r8 230e: 5c9b ldrb r3, [r3, r2] 2310: 2102 movs r1, #2 2312: 430b orrs r3, r1 2314: 4641 mov r1, r8 2316: 548b strb r3, [r1, r2] } 2318: b003 add sp, #12 231a: bc3c pop {r2, r3, r4, r5} 231c: 4690 mov r8, r2 231e: 4699 mov r9, r3 2320: 46a2 mov sl, r4 2322: 46ab mov fp, r5 2324: bdf0 pop {r4, r5, r6, r7, pc} new_x = -obj_w_half; 2326: 4275 negs r5, r6 2328: b22d sxth r5, r5 new_y = -obj_h_half; 232a: 427c negs r4, r7 232c: b224 sxth r4, r4 break; 232e: e7cd b.n 22cc new_x = lv_obj_get_width(base) / 2 - obj_w_half; 2330: 9801 ldr r0, [sp, #4] 2332: 4b67 ldr r3, [pc, #412] ; (24d0 ) 2334: 4798 blx r3 2336: 0fc5 lsrs r5, r0, #31 2338: 182d adds r5, r5, r0 233a: 106d asrs r5, r5, #1 233c: 1bad subs r5, r5, r6 233e: b22d sxth r5, r5 new_y = -obj_h_half; 2340: 427c negs r4, r7 2342: b224 sxth r4, r4 break; 2344: e7c2 b.n 22cc new_x = lv_obj_get_width(base) - obj_w_half; 2346: 9801 ldr r0, [sp, #4] 2348: 4b61 ldr r3, [pc, #388] ; (24d0 ) 234a: 4798 blx r3 234c: 1b85 subs r5, r0, r6 234e: b22d sxth r5, r5 new_y = -obj_h_half; 2350: 427c negs r4, r7 2352: b224 sxth r4, r4 break; 2354: e7ba b.n 22cc new_x = -obj_w_half; 2356: 4275 negs r5, r6 2358: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 235a: 9801 ldr r0, [sp, #4] 235c: 4b5d ldr r3, [pc, #372] ; (24d4 ) 235e: 4798 blx r3 2360: 1bc4 subs r4, r0, r7 2362: b224 sxth r4, r4 break; 2364: e7b2 b.n 22cc new_x = lv_obj_get_width(base) / 2 - obj_w_half; 2366: 9c01 ldr r4, [sp, #4] 2368: 0020 movs r0, r4 236a: 4b59 ldr r3, [pc, #356] ; (24d0 ) 236c: 4798 blx r3 236e: 0fc5 lsrs r5, r0, #31 2370: 182d adds r5, r5, r0 2372: 106d asrs r5, r5, #1 2374: 1bad subs r5, r5, r6 2376: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 2378: 0020 movs r0, r4 237a: 4b56 ldr r3, [pc, #344] ; (24d4 ) 237c: 4798 blx r3 237e: 1bc4 subs r4, r0, r7 2380: b224 sxth r4, r4 break; 2382: e7a3 b.n 22cc new_x = lv_obj_get_width(base) - obj_w_half; 2384: 9c01 ldr r4, [sp, #4] 2386: 0020 movs r0, r4 2388: 4b51 ldr r3, [pc, #324] ; (24d0 ) 238a: 4798 blx r3 238c: 1b85 subs r5, r0, r6 238e: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 2390: 0020 movs r0, r4 2392: 4b50 ldr r3, [pc, #320] ; (24d4 ) 2394: 4798 blx r3 2396: 1bc4 subs r4, r0, r7 2398: b224 sxth r4, r4 break; 239a: e797 b.n 22cc new_x = -obj_w_half; 239c: 4275 negs r5, r6 239e: b22d sxth r5, r5 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 23a0: 9801 ldr r0, [sp, #4] 23a2: 4b4c ldr r3, [pc, #304] ; (24d4 ) 23a4: 4798 blx r3 23a6: 0fc4 lsrs r4, r0, #31 23a8: 1824 adds r4, r4, r0 23aa: 1064 asrs r4, r4, #1 23ac: 1be4 subs r4, r4, r7 23ae: b224 sxth r4, r4 break; 23b0: e78c b.n 22cc new_x = lv_obj_get_width(base) - obj_w_half; 23b2: 9c01 ldr r4, [sp, #4] 23b4: 0020 movs r0, r4 23b6: 4b46 ldr r3, [pc, #280] ; (24d0 ) 23b8: 4798 blx r3 23ba: 1b85 subs r5, r0, r6 23bc: b22d sxth r5, r5 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 23be: 0020 movs r0, r4 23c0: 4b44 ldr r3, [pc, #272] ; (24d4 ) 23c2: 4798 blx r3 23c4: 0fc4 lsrs r4, r0, #31 23c6: 1824 adds r4, r4, r0 23c8: 1064 asrs r4, r4, #1 23ca: 1be4 subs r4, r4, r7 23cc: b224 sxth r4, r4 break; 23ce: e77d b.n 22cc new_x = -obj_w_half; 23d0: 4275 negs r5, r6 23d2: b22d sxth r5, r5 new_y = -obj_h_half; 23d4: 427c negs r4, r7 23d6: b224 sxth r4, r4 break; 23d8: e778 b.n 22cc new_x = lv_obj_get_width(base) / 2 - obj_w_half; 23da: 9801 ldr r0, [sp, #4] 23dc: 4b3c ldr r3, [pc, #240] ; (24d0 ) 23de: 4798 blx r3 23e0: 0fc5 lsrs r5, r0, #31 23e2: 182d adds r5, r5, r0 23e4: 106d asrs r5, r5, #1 23e6: 1bad subs r5, r5, r6 23e8: b22d sxth r5, r5 new_y = -obj_h_half; 23ea: 427c negs r4, r7 23ec: b224 sxth r4, r4 break; 23ee: e76d b.n 22cc new_x = lv_obj_get_width(base) - obj_w_half; 23f0: 9801 ldr r0, [sp, #4] 23f2: 4b37 ldr r3, [pc, #220] ; (24d0 ) 23f4: 4798 blx r3 23f6: 1b85 subs r5, r0, r6 23f8: b22d sxth r5, r5 new_y = -obj_h_half; 23fa: 427c negs r4, r7 23fc: b224 sxth r4, r4 break; 23fe: e765 b.n 22cc new_x = -obj_w_half; 2400: 4275 negs r5, r6 2402: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 2404: 9801 ldr r0, [sp, #4] 2406: 4b33 ldr r3, [pc, #204] ; (24d4 ) 2408: 4798 blx r3 240a: 1bc4 subs r4, r0, r7 240c: b224 sxth r4, r4 break; 240e: e75d b.n 22cc new_x = lv_obj_get_width(base) / 2 - obj_w_half; 2410: 9c01 ldr r4, [sp, #4] 2412: 0020 movs r0, r4 2414: 4b2e ldr r3, [pc, #184] ; (24d0 ) 2416: 4798 blx r3 2418: 0fc5 lsrs r5, r0, #31 241a: 182d adds r5, r5, r0 241c: 106d asrs r5, r5, #1 241e: 1bad subs r5, r5, r6 2420: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 2422: 0020 movs r0, r4 2424: 4b2b ldr r3, [pc, #172] ; (24d4 ) 2426: 4798 blx r3 2428: 1bc4 subs r4, r0, r7 242a: b224 sxth r4, r4 break; 242c: e74e b.n 22cc new_x = lv_obj_get_width(base) - obj_w_half; 242e: 9c01 ldr r4, [sp, #4] 2430: 0020 movs r0, r4 2432: 4b27 ldr r3, [pc, #156] ; (24d0 ) 2434: 4798 blx r3 2436: 1b85 subs r5, r0, r6 2438: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 243a: 0020 movs r0, r4 243c: 4b25 ldr r3, [pc, #148] ; (24d4 ) 243e: 4798 blx r3 2440: 1bc4 subs r4, r0, r7 2442: b224 sxth r4, r4 break; 2444: e742 b.n 22cc new_x = -obj_w_half; 2446: 4275 negs r5, r6 2448: b22d sxth r5, r5 new_y = -obj_h_half; 244a: 427c negs r4, r7 244c: b224 sxth r4, r4 break; 244e: e73d b.n 22cc new_x = -obj_w_half; 2450: 4275 negs r5, r6 2452: b22d sxth r5, r5 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 2454: 9801 ldr r0, [sp, #4] 2456: 4b1f ldr r3, [pc, #124] ; (24d4 ) 2458: 4798 blx r3 245a: 0fc4 lsrs r4, r0, #31 245c: 1824 adds r4, r4, r0 245e: 1064 asrs r4, r4, #1 2460: 1be4 subs r4, r4, r7 2462: b224 sxth r4, r4 break; 2464: e732 b.n 22cc new_x = -obj_w_half; 2466: 4275 negs r5, r6 2468: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 246a: 9801 ldr r0, [sp, #4] 246c: 4b19 ldr r3, [pc, #100] ; (24d4 ) 246e: 4798 blx r3 2470: 1bc4 subs r4, r0, r7 2472: b224 sxth r4, r4 break; 2474: e72a b.n 22cc new_x = lv_obj_get_width(base) - obj_w_half; 2476: 9801 ldr r0, [sp, #4] 2478: 4b15 ldr r3, [pc, #84] ; (24d0 ) 247a: 4798 blx r3 247c: 1b85 subs r5, r0, r6 247e: b22d sxth r5, r5 new_y = -obj_h_half; 2480: 427c negs r4, r7 2482: b224 sxth r4, r4 break; 2484: e722 b.n 22cc new_x = lv_obj_get_width(base) - obj_w_half; 2486: 9c01 ldr r4, [sp, #4] 2488: 0020 movs r0, r4 248a: 4b11 ldr r3, [pc, #68] ; (24d0 ) 248c: 4798 blx r3 248e: 1b85 subs r5, r0, r6 2490: b22d sxth r5, r5 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 2492: 0020 movs r0, r4 2494: 4b0f ldr r3, [pc, #60] ; (24d4 ) 2496: 4798 blx r3 2498: 0fc4 lsrs r4, r0, #31 249a: 1824 adds r4, r4, r0 249c: 1064 asrs r4, r4, #1 249e: 1be4 subs r4, r4, r7 24a0: b224 sxth r4, r4 break; 24a2: e713 b.n 22cc new_x = lv_obj_get_width(base) - obj_w_half; 24a4: 9c01 ldr r4, [sp, #4] 24a6: 0020 movs r0, r4 24a8: 4b09 ldr r3, [pc, #36] ; (24d0 ) 24aa: 4798 blx r3 24ac: 1b85 subs r5, r0, r6 24ae: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 24b0: 0020 movs r0, r4 24b2: 4b08 ldr r3, [pc, #32] ; (24d4 ) 24b4: 4798 blx r3 24b6: 1bc4 subs r4, r0, r7 24b8: b224 sxth r4, r4 break; 24ba: e707 b.n 22cc 24bc: 0000147d .word 0x0000147d 24c0: 0001878c .word 0x0001878c 24c4: 00001485 .word 0x00001485 24c8: 00001c11 .word 0x00001c11 24cc: 00001c55 .word 0x00001c55 24d0: 00001c99 .word 0x00001c99 24d4: 00001cc9 .word 0x00001cc9 24d8: 00018734 .word 0x00018734 24dc: 00001aa1 .word 0x00001aa1 24e0: 00002085 .word 0x00002085 000024e4 : { 24e4: b510 push {r4, lr} 24e6: b082 sub sp, #8 24e8: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 24ea: 4b13 ldr r3, [pc, #76] ; (2538 ) 24ec: 4798 blx r3 24ee: 2800 cmp r0, #0 24f0: d010 beq.n 2514 if(obj->realign.origo_align) 24f2: 2349 movs r3, #73 ; 0x49 24f4: 5ce3 ldrb r3, [r4, r3] 24f6: 079b lsls r3, r3, #30 24f8: d512 bpl.n 2520 lv_obj_align_origo(obj, obj->realign.base, obj->realign.align, obj->realign.xofs, obj->realign.yofs); 24fa: 2344 movs r3, #68 ; 0x44 24fc: 5ee3 ldrsh r3, [r4, r3] 24fe: 2248 movs r2, #72 ; 0x48 2500: 5ca2 ldrb r2, [r4, r2] 2502: 2146 movs r1, #70 ; 0x46 2504: 5e61 ldrsh r1, [r4, r1] 2506: 9100 str r1, [sp, #0] 2508: 6c21 ldr r1, [r4, #64] ; 0x40 250a: 0020 movs r0, r4 250c: 4c0b ldr r4, [pc, #44] ; (253c ) 250e: 47a0 blx r4 } 2510: b002 add sp, #8 2512: bd10 pop {r4, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2514: 0022 movs r2, r4 2516: 2300 movs r3, #0 2518: 4809 ldr r0, [pc, #36] ; (2540 ) 251a: 490a ldr r1, [pc, #40] ; (2544 ) 251c: 4788 blx r1 251e: e7fe b.n 251e lv_obj_align(obj, obj->realign.base, obj->realign.align, obj->realign.xofs, obj->realign.yofs); 2520: 2344 movs r3, #68 ; 0x44 2522: 5ee3 ldrsh r3, [r4, r3] 2524: 2248 movs r2, #72 ; 0x48 2526: 5ca2 ldrb r2, [r4, r2] 2528: 2146 movs r1, #70 ; 0x46 252a: 5e61 ldrsh r1, [r4, r1] 252c: 9100 str r1, [sp, #0] 252e: 6c21 ldr r1, [r4, #64] ; 0x40 2530: 0020 movs r0, r4 2532: 4c05 ldr r4, [pc, #20] ; (2548 ) 2534: 47a0 blx r4 } 2536: e7eb b.n 2510 2538: 0000147d .word 0x0000147d 253c: 00002219 .word 0x00002219 2540: 0001878c .word 0x0001878c 2544: 00001485 .word 0x00001485 2548: 00002149 .word 0x00002149 0000254c : { 254c: b5f8 push {r3, r4, r5, r6, r7, lr} 254e: 0006 movs r6, r0 lv_obj_t * child = lv_obj_get_child(obj, NULL); 2550: 2100 movs r1, #0 2552: 4b0c ldr r3, [pc, #48] ; (2584 ) 2554: 4798 blx r3 2556: 1e04 subs r4, r0, #0 while(child != NULL) { 2558: d012 beq.n 2580 lv_obj_invalidate(child); 255a: 4d0b ldr r5, [pc, #44] ; (2588 ) child = lv_obj_get_child(obj, child); 255c: 4f09 ldr r7, [pc, #36] ; (2584 ) lv_obj_invalidate(child); 255e: 0020 movs r0, r4 2560: 47a8 blx r5 child->signal_cb(child, LV_SIGNAL_STYLE_CHG, NULL); 2562: 2200 movs r2, #0 2564: 2104 movs r1, #4 2566: 0020 movs r0, r4 2568: 69e3 ldr r3, [r4, #28] 256a: 4798 blx r3 lv_obj_invalidate(child); 256c: 0020 movs r0, r4 256e: 47a8 blx r5 refresh_children_style(child); /*Check children too*/ 2570: 0020 movs r0, r4 2572: f7ff ffeb bl 254c child = lv_obj_get_child(obj, child); 2576: 0021 movs r1, r4 2578: 0030 movs r0, r6 257a: 47b8 blx r7 257c: 1e04 subs r4, r0, #0 while(child != NULL) { 257e: d1ee bne.n 255e } 2580: bdf8 pop {r3, r4, r5, r6, r7, pc} 2582: 46c0 nop ; (mov r8, r8) 2584: 00001b91 .word 0x00001b91 2588: 00001fb1 .word 0x00001fb1 0000258c : { 258c: b570 push {r4, r5, r6, lr} 258e: 0005 movs r5, r0 2590: 000c movs r4, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2592: 4b31 ldr r3, [pc, #196] ; (2658 ) 2594: 4798 blx r3 2596: 2800 cmp r0, #0 2598: d013 beq.n 25c2 switch(prop) { 259a: 2c71 cmp r4, #113 ; 0x71 259c: d83e bhi.n 261c 259e: 2c70 cmp r4, #112 ; 0x70 25a0: d21b bcs.n 25da 25a2: 2c41 cmp r4, #65 ; 0x41 25a4: d813 bhi.n 25ce 25a6: 2c40 cmp r4, #64 ; 0x40 25a8: d217 bcs.n 25da 25aa: 2c02 cmp r4, #2 25ac: d305 bcc.n 25ba 25ae: 2c07 cmp r4, #7 25b0: d913 bls.n 25da 25b2: 0023 movs r3, r4 25b4: 3b10 subs r3, #16 25b6: 2b08 cmp r3, #8 25b8: d90f bls.n 25da lv_obj_invalidate(obj); 25ba: 0028 movs r0, r5 25bc: 4b27 ldr r3, [pc, #156] ; (265c ) 25be: 4798 blx r3 } 25c0: e028 b.n 2614 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 25c2: 002a movs r2, r5 25c4: 2300 movs r3, #0 25c6: 4826 ldr r0, [pc, #152] ; (2660 ) 25c8: 4926 ldr r1, [pc, #152] ; (2664 ) 25ca: 4788 blx r1 25cc: e7fe b.n 25cc switch(prop) { 25ce: 2c53 cmp r4, #83 ; 0x53 25d0: d821 bhi.n 2616 25d2: 2c50 cmp r4, #80 ; 0x50 25d4: d201 bcs.n 25da 25d6: 2c4c cmp r4, #76 ; 0x4c 25d8: d1ef bne.n 25ba lv_obj_invalidate(obj); 25da: 0028 movs r0, r5 25dc: 4b1f ldr r3, [pc, #124] ; (265c ) 25de: 4798 blx r3 obj->signal_cb(obj, LV_SIGNAL_STYLE_CHG, NULL); 25e0: 2200 movs r2, #0 25e2: 2104 movs r1, #4 25e4: 0028 movs r0, r5 25e6: 69eb ldr r3, [r5, #28] 25e8: 4798 blx r3 switch(prop) { 25ea: 2c15 cmp r4, #21 25ec: d30a bcc.n 2604 25ee: 2c18 cmp r4, #24 25f0: d901 bls.n 25f6 25f2: 2cff cmp r4, #255 ; 0xff 25f4: d106 bne.n 2604 if(obj->parent) obj->parent->signal_cb(obj->parent, LV_SIGNAL_CHILD_CHG, NULL); 25f6: 6828 ldr r0, [r5, #0] 25f8: 2800 cmp r0, #0 25fa: d003 beq.n 2604 25fc: 69c3 ldr r3, [r0, #28] 25fe: 2200 movs r2, #0 2600: 2101 movs r1, #1 2602: 4798 blx r3 lv_obj_invalidate(obj); 2604: 0028 movs r0, r5 2606: 4b15 ldr r3, [pc, #84] ; (265c ) 2608: 4798 blx r3 if(prop == LV_STYLE_PROP_ALL || (prop & LV_STYLE_INHERIT_MASK)) refresh_children_style(obj); 260a: 2cff cmp r4, #255 ; 0xff 260c: d020 beq.n 2650 260e: b224 sxth r4, r4 2610: 2c00 cmp r4, #0 2612: db1d blt.n 2650 } 2614: bd70 pop {r4, r5, r6, pc} switch(prop) { 2616: 2c5c cmp r4, #92 ; 0x5c 2618: d1cf bne.n 25ba 261a: e7de b.n 25da 261c: 2c7f cmp r4, #127 ; 0x7f 261e: d90a bls.n 2636 2620: 4b11 ldr r3, [pc, #68] ; (2668 ) 2622: 429c cmp r4, r3 2624: d810 bhi.n 2648 2626: 4b11 ldr r3, [pc, #68] ; (266c ) 2628: 429c cmp r4, r3 262a: d2d6 bcs.n 25da 262c: 2c90 cmp r4, #144 ; 0x90 262e: d0d4 beq.n 25da 2630: 2cff cmp r4, #255 ; 0xff 2632: d1c2 bne.n 25ba 2634: e7d1 b.n 25da 2636: 2c7e cmp r4, #126 ; 0x7e 2638: d2cf bcs.n 25da 263a: 2c73 cmp r4, #115 ; 0x73 263c: d3bd bcc.n 25ba 263e: 2c75 cmp r4, #117 ; 0x75 2640: d9cb bls.n 25da 2642: 2c7c cmp r4, #124 ; 0x7c 2644: d1b9 bne.n 25ba 2646: e7c8 b.n 25da 2648: 4b09 ldr r3, [pc, #36] ; (2670 ) 264a: 429c cmp r4, r3 264c: d1b5 bne.n 25ba 264e: e7c4 b.n 25da if(prop == LV_STYLE_PROP_ALL || (prop & LV_STYLE_INHERIT_MASK)) refresh_children_style(obj); 2650: 0028 movs r0, r5 2652: 4b08 ldr r3, [pc, #32] ; (2674 ) 2654: 4798 blx r3 2656: e7dd b.n 2614 2658: 0000147d .word 0x0000147d 265c: 00001fb1 .word 0x00001fb1 2660: 0001878c .word 0x0001878c 2664: 00001485 .word 0x00001485 2668: 00008081 .word 0x00008081 266c: 00008080 .word 0x00008080 2670: 0000808e .word 0x0000808e 2674: 0000254d .word 0x0000254d 00002678 : { 2678: b510 push {r4, lr} 267a: 0004 movs r4, r0 lv_obj_clean_style_list(obj, part); 267c: 4b03 ldr r3, [pc, #12] ; (268c ) 267e: 4798 blx r3 lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 2680: 21ff movs r1, #255 ; 0xff 2682: 0020 movs r0, r4 2684: 4b02 ldr r3, [pc, #8] ; (2690 ) 2686: 4798 blx r3 } 2688: bd10 pop {r4, pc} 268a: 46c0 nop ; (mov r8, r8) 268c: 00001dd5 .word 0x00001dd5 2690: 0000258d .word 0x0000258d 00002694 : { 2694: b5f0 push {r4, r5, r6, r7, lr} 2696: 46c6 mov lr, r8 2698: b500 push {lr} 269a: b082 sub sp, #8 269c: 0007 movs r7, r0 269e: 9101 str r1, [sp, #4] for(part_sub = 0; part_sub != _LV_OBJ_PART_REAL_LAST; part_sub++) { 26a0: 2500 movs r5, #0 lv_style_list_t * dsc = lv_obj_get_style_list(obj, part_sub); 26a2: 4b21 ldr r3, [pc, #132] ; (2728 ) 26a4: 4698 mov r8, r3 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; 26a6: 2300 movs r3, #0 26a8: 9300 str r3, [sp, #0] 26aa: e01c b.n 26e6 if(list->has_trans && list->skip_trans) id++; 26ac: 1c5a adds r2, r3, #1 26ae: b2d2 uxtb r2, r2 26b0: e00a b.n 26c8 if(class == style || style == NULL) { 26b2: 42a7 cmp r7, r4 26b4: d00f beq.n 26d6 26b6: 2f00 cmp r7, #0 26b8: d00d beq.n 26d6 for(ci = 0; ci < dsc->style_cnt; ci++) { 26ba: 3301 adds r3, #1 26bc: b2db uxtb r3, r3 26be: 428b cmp r3, r1 26c0: d00d beq.n 26de 26c2: 001a movs r2, r3 26c4: 2806 cmp r0, #6 26c6: d0f1 beq.n 26ac if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 26c8: 9c00 ldr r4, [sp, #0] 26ca: 428a cmp r2, r1 26cc: d2f1 bcs.n 26b2 return list->style_list[id]; 26ce: 0092 lsls r2, r2, #2 26d0: 6834 ldr r4, [r6, #0] 26d2: 5914 ldr r4, [r2, r4] 26d4: e7ed b.n 26b2 lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 26d6: 21ff movs r1, #255 ; 0xff 26d8: 9801 ldr r0, [sp, #4] 26da: 4b14 ldr r3, [pc, #80] ; (272c ) 26dc: 4798 blx r3 for(part_sub = 0; part_sub != _LV_OBJ_PART_REAL_LAST; part_sub++) { 26de: 3501 adds r5, #1 26e0: b2ed uxtb r5, r5 26e2: 2d40 cmp r5, #64 ; 0x40 26e4: d00c beq.n 2700 lv_style_list_t * dsc = lv_obj_get_style_list(obj, part_sub); 26e6: 0029 movs r1, r5 26e8: 9801 ldr r0, [sp, #4] 26ea: 47c0 blx r8 26ec: 1e06 subs r6, r0, #0 if(dsc == NULL) break; 26ee: d007 beq.n 2700 for(ci = 0; ci < dsc->style_cnt; ci++) { 26f0: 7901 ldrb r1, [r0, #4] 26f2: 2900 cmp r1, #0 26f4: d0f3 beq.n 26de if(list->has_trans && list->skip_trans) id++; 26f6: 7943 ldrb r3, [r0, #5] 26f8: 2006 movs r0, #6 26fa: 4018 ands r0, r3 26fc: 2300 movs r3, #0 26fe: e7e0 b.n 26c2 lv_obj_t * child = lv_obj_get_child(obj, NULL); 2700: 2100 movs r1, #0 2702: 9801 ldr r0, [sp, #4] 2704: 4b0a ldr r3, [pc, #40] ; (2730 ) 2706: 4798 blx r3 2708: 1e04 subs r4, r0, #0 while(child) { 270a: d009 beq.n 2720 child = lv_obj_get_child(obj, child); 270c: 4e08 ldr r6, [pc, #32] ; (2730 ) report_style_mod_core(style, child); 270e: 0021 movs r1, r4 2710: 0038 movs r0, r7 2712: f7ff ffbf bl 2694 child = lv_obj_get_child(obj, child); 2716: 0021 movs r1, r4 2718: 9801 ldr r0, [sp, #4] 271a: 47b0 blx r6 271c: 1e04 subs r4, r0, #0 while(child) { 271e: d1f6 bne.n 270e } 2720: b002 add sp, #8 2722: bc04 pop {r2} 2724: 4690 mov r8, r2 2726: bdf0 pop {r4, r5, r6, r7, pc} 2728: 00001cf9 .word 0x00001cf9 272c: 0000258d .word 0x0000258d 2730: 00001b91 .word 0x00001b91 00002734 : { 2734: b5f0 push {r4, r5, r6, r7, lr} 2736: 46d6 mov lr, sl 2738: 464f mov r7, r9 273a: b580 push {r7, lr} 273c: b083 sub sp, #12 273e: 9001 str r0, [sp, #4] lv_disp_t * d = lv_disp_get_next(NULL); 2740: 2000 movs r0, #0 2742: 4b11 ldr r3, [pc, #68] ; (2788 ) 2744: 4798 blx r3 2746: 4681 mov r9, r0 while(d) { 2748: 2800 cmp r0, #0 274a: d017 beq.n 277c _LV_LL_READ(d->scr_ll, i) { 274c: 4b0f ldr r3, [pc, #60] ; (278c ) 274e: 469a mov sl, r3 report_style_mod_core(style, i); 2750: 4f0f ldr r7, [pc, #60] ; (2790 ) _LV_LL_READ(d->scr_ll, i) { 2752: 4e10 ldr r6, [pc, #64] ; (2794 ) 2754: 464d mov r5, r9 2756: 3530 adds r5, #48 ; 0x30 2758: 0028 movs r0, r5 275a: 47d0 blx sl 275c: 1e04 subs r4, r0, #0 275e: d007 beq.n 2770 report_style_mod_core(style, i); 2760: 0021 movs r1, r4 2762: 9801 ldr r0, [sp, #4] 2764: 47b8 blx r7 _LV_LL_READ(d->scr_ll, i) { 2766: 0021 movs r1, r4 2768: 0028 movs r0, r5 276a: 47b0 blx r6 276c: 1e04 subs r4, r0, #0 276e: d1f7 bne.n 2760 d = lv_disp_get_next(d); 2770: 4648 mov r0, r9 2772: 4b05 ldr r3, [pc, #20] ; (2788 ) 2774: 4798 blx r3 2776: 4681 mov r9, r0 while(d) { 2778: 2800 cmp r0, #0 277a: d1eb bne.n 2754 } 277c: b003 add sp, #12 277e: bc0c pop {r2, r3} 2780: 4691 mov r9, r2 2782: 469a mov sl, r3 2784: bdf0 pop {r4, r5, r6, r7, pc} 2786: 46c0 nop ; (mov r8, r8) 2788: 0000f6e5 .word 0x0000f6e5 278c: 0001066d .word 0x0001066d 2790: 00002695 .word 0x00002695 2794: 00010685 .word 0x00010685 00002798 : { 2798: b5f8 push {r3, r4, r5, r6, r7, lr} 279a: 0004 movs r4, r0 279c: 000d movs r5, r1 lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part); 279e: 7981 ldrb r1, [r0, #6] 27a0: 6800 ldr r0, [r0, #0] 27a2: 4b3f ldr r3, [pc, #252] ; (28a0 ) 27a4: 4798 blx r3 lv_style_t * style = _lv_style_list_get_transition_style(list); 27a6: 4b3f ldr r3, [pc, #252] ; (28a4 ) 27a8: 4798 blx r3 if((tr->prop & 0xF) < LV_STYLE_ID_COLOR) { /*Value*/ 27aa: 88a1 ldrh r1, [r4, #4] 27ac: 230f movs r3, #15 27ae: 400b ands r3, r1 27b0: 2b08 cmp r3, #8 27b2: dc19 bgt.n 27e8 if(v == 0) x = tr->start_value._int; 27b4: 2d00 cmp r5, #0 27b6: d108 bne.n 27ca 27b8: 2308 movs r3, #8 27ba: 5ee2 ldrsh r2, [r4, r3] _lv_style_set_int(style, tr->prop, x); 27bc: 4b3a ldr r3, [pc, #232] ; (28a8 ) 27be: 4798 blx r3 lv_obj_refresh_style(tr->obj, tr->prop); 27c0: 88a1 ldrh r1, [r4, #4] 27c2: 6820 ldr r0, [r4, #0] 27c4: 4b39 ldr r3, [pc, #228] ; (28ac ) 27c6: 4798 blx r3 } 27c8: bdf8 pop {r3, r4, r5, r6, r7, pc} else if(v == 255) x = tr->end_value._int; 27ca: 2dff cmp r5, #255 ; 0xff 27cc: d009 beq.n 27e2 else x = tr->start_value._int + ((int32_t)((int32_t)(tr->end_value._int - tr->start_value._int) * v) >> 8); 27ce: 2308 movs r3, #8 27d0: 5ee6 ldrsh r6, [r4, r3] 27d2: 230c movs r3, #12 27d4: 5ee2 ldrsh r2, [r4, r3] 27d6: 1b92 subs r2, r2, r6 27d8: 436a muls r2, r5 27da: 1212 asrs r2, r2, #8 27dc: 1992 adds r2, r2, r6 27de: b212 sxth r2, r2 27e0: e7ec b.n 27bc else if(v == 255) x = tr->end_value._int; 27e2: 230c movs r3, #12 27e4: 5ee2 ldrsh r2, [r4, r3] 27e6: e7e9 b.n 27bc else if((tr->prop & 0xF) < LV_STYLE_ID_OPA) { /*Color*/ 27e8: 2b0b cmp r3, #11 27ea: dc3c bgt.n 2866 if(v <= 0) x = tr->start_value._color; 27ec: 2d00 cmp r5, #0 27ee: dd05 ble.n 27fc else if(v >= 255) x = tr->end_value._color; 27f0: 2dfe cmp r5, #254 ; 0xfe 27f2: dd05 ble.n 2800 27f4: 89a2 ldrh r2, [r4, #12] _lv_style_set_color(style, tr->prop, x); 27f6: 4b2e ldr r3, [pc, #184] ; (28b0 ) 27f8: 4798 blx r3 27fa: e7e1 b.n 27c0 if(v <= 0) x = tr->start_value._color; 27fc: 8922 ldrh r2, [r4, #8] 27fe: e7fa b.n 27f6 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))); 2800: b2ed uxtb r5, r5 2802: 22ff movs r2, #255 ; 0xff 2804: 1b52 subs r2, r2, r5 2806: 7b63 ldrb r3, [r4, #13] 2808: 08db lsrs r3, r3, #3 280a: 436b muls r3, r5 280c: 7a66 ldrb r6, [r4, #9] 280e: 08f6 lsrs r6, r6, #3 2810: 4356 muls r6, r2 2812: 199e adds r6, r3, r6 2814: 0233 lsls r3, r6, #8 2816: 199b adds r3, r3, r6 2818: 01db lsls r3, r3, #7 281a: 199b adds r3, r3, r6 281c: 011b lsls r3, r3, #4 281e: 0edb lsrs r3, r3, #27 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 2820: 89a7 ldrh r7, [r4, #12] 2822: 057f lsls r7, r7, #21 2824: 0ebf lsrs r7, r7, #26 2826: 436f muls r7, r5 2828: 8926 ldrh r6, [r4, #8] 282a: 0576 lsls r6, r6, #21 282c: 0eb6 lsrs r6, r6, #26 282e: 4356 muls r6, r2 2830: 19bf adds r7, r7, r6 2832: 023e lsls r6, r7, #8 2834: 19f6 adds r6, r6, r7 2836: 01f6 lsls r6, r6, #7 2838: 19f6 adds r6, r6, r7 283a: 00f6 lsls r6, r6, #3 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 283c: 7b27 ldrb r7, [r4, #12] 283e: 06ff lsls r7, r7, #27 2840: 0eff lsrs r7, r7, #27 2842: 437d muls r5, r7 2844: 7a27 ldrb r7, [r4, #8] 2846: 06ff lsls r7, r7, #27 2848: 0eff lsrs r7, r7, #27 284a: 437a muls r2, r7 284c: 18ad adds r5, r5, r2 284e: 022a lsls r2, r5, #8 2850: 1952 adds r2, r2, r5 2852: 01d2 lsls r2, r2, #7 2854: 1952 adds r2, r2, r5 2856: 0112 lsls r2, r2, #4 2858: 0eb6 lsrs r6, r6, #26 285a: 0176 lsls r6, r6, #5 285c: 0ed2 lsrs r2, r2, #27 285e: 02db lsls r3, r3, #11 2860: 4332 orrs r2, r6 2862: 431a orrs r2, r3 2864: e7c7 b.n 27f6 else if((tr->prop & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/ 2866: 2b0d cmp r3, #13 2868: dc11 bgt.n 288e if(v <= 0) x = tr->start_value._opa; 286a: 2d00 cmp r5, #0 286c: dd05 ble.n 287a else if(v >= 255) x = tr->end_value._opa; 286e: 2dfe cmp r5, #254 ; 0xfe 2870: dd05 ble.n 287e 2872: 7b22 ldrb r2, [r4, #12] _lv_style_set_opa(style, tr->prop, x); 2874: 4b0f ldr r3, [pc, #60] ; (28b4 ) 2876: 4798 blx r3 2878: e7a2 b.n 27c0 if(v <= 0) x = tr->start_value._opa; 287a: 7a22 ldrb r2, [r4, #8] 287c: e7fa b.n 2874 else x = tr->start_value._opa + (((tr->end_value._opa - tr->start_value._opa) * v) >> 8); 287e: 7a22 ldrb r2, [r4, #8] 2880: 7b23 ldrb r3, [r4, #12] 2882: 1a9b subs r3, r3, r2 2884: 435d muls r5, r3 2886: 122d asrs r5, r5, #8 2888: 1952 adds r2, r2, r5 288a: b2d2 uxtb r2, r2 288c: e7f2 b.n 2874 if(v < 128) x = tr->start_value._ptr; 288e: 2d7f cmp r5, #127 ; 0x7f 2890: dc03 bgt.n 289a 2892: 68a2 ldr r2, [r4, #8] _lv_style_set_ptr(style, tr->prop, x); 2894: 4b08 ldr r3, [pc, #32] ; (28b8 ) 2896: 4798 blx r3 2898: e792 b.n 27c0 else x = tr->end_value._ptr; 289a: 68e2 ldr r2, [r4, #12] 289c: e7fa b.n 2894 289e: 46c0 nop ; (mov r8, r8) 28a0: 00001cf9 .word 0x00001cf9 28a4: 00005621 .word 0x00005621 28a8: 00004cf5 .word 0x00004cf5 28ac: 0000258d .word 0x0000258d 28b0: 00004e55 .word 0x00004e55 28b4: 00004fb5 .word 0x00004fb5 28b8: 00005109 .word 0x00005109 000028bc : { 28bc: b510 push {r4, lr} 28be: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 28c0: 4b05 ldr r3, [pc, #20] ; (28d8 ) 28c2: 4798 blx r3 28c4: 2800 cmp r0, #0 28c6: d001 beq.n 28cc } 28c8: 2000 movs r0, #0 28ca: bd10 pop {r4, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 28cc: 0022 movs r2, r4 28ce: 2300 movs r3, #0 28d0: 4802 ldr r0, [pc, #8] ; (28dc ) 28d2: 4903 ldr r1, [pc, #12] ; (28e0 ) 28d4: 4788 blx r1 28d6: e7fe b.n 28d6 28d8: 0000147d .word 0x0000147d 28dc: 0001878c .word 0x0001878c 28e0: 00001485 .word 0x00001485 000028e4 : { 28e4: b5f8 push {r3, r4, r5, r6, r7, lr} 28e6: 46de mov lr, fp 28e8: 4657 mov r7, sl 28ea: 464e mov r6, r9 28ec: 4645 mov r5, r8 28ee: b5e0 push {r5, r6, r7, lr} 28f0: 4682 mov sl, r0 28f2: 000d movs r5, r1 if(parent == NULL) { 28f4: 2800 cmp r0, #0 28f6: d00a beq.n 290e LV_ASSERT_OBJ(parent, LV_OBJX_NAME); 28f8: 4be9 ldr r3, [pc, #932] ; (2ca0 ) 28fa: 4798 blx r3 28fc: 2800 cmp r0, #0 28fe: d000 beq.n 2902 2900: e13a b.n 2b78 2902: 4652 mov r2, sl 2904: 2300 movs r3, #0 2906: 48e7 ldr r0, [pc, #924] ; (2ca4 ) 2908: 49e7 ldr r1, [pc, #924] ; (2ca8 ) 290a: 4788 blx r1 290c: e7fe b.n 290c lv_disp_t * disp = lv_disp_get_default(); 290e: 4be7 ldr r3, [pc, #924] ; (2cac ) 2910: 4798 blx r3 if(!disp) { 2912: 2800 cmp r0, #0 2914: d100 bne.n 2918 2916: e204 b.n 2d22 new_obj = _lv_ll_ins_head(&disp->scr_ll); 2918: 3030 adds r0, #48 ; 0x30 291a: 4be5 ldr r3, [pc, #916] ; (2cb0 ) 291c: 4798 blx r3 291e: 0004 movs r4, r0 LV_ASSERT_MEM(new_obj); 2920: 4bdf ldr r3, [pc, #892] ; (2ca0 ) 2922: 4798 blx r3 2924: 2800 cmp r0, #0 2926: d105 bne.n 2934 2928: 0022 movs r2, r4 292a: 2300 movs r3, #0 292c: 48e1 ldr r0, [pc, #900] ; (2cb4 ) 292e: 49de ldr r1, [pc, #888] ; (2ca8 ) 2930: 4788 blx r1 2932: e7fe b.n 2932 if(new_obj == NULL) return NULL; 2934: 2c00 cmp r4, #0 2936: d100 bne.n 293a 2938: e1ec b.n 2d14 _lv_memset_00(new_obj, sizeof(lv_obj_t)); 293a: 214c movs r1, #76 ; 0x4c 293c: 0020 movs r0, r4 293e: 4bde ldr r3, [pc, #888] ; (2cb8 ) 2940: 4798 blx r3 new_obj->base_dir = LV_BIDI_DIR_LTR; 2942: 0022 movs r2, r4 2944: 3234 adds r2, #52 ; 0x34 2946: 7853 ldrb r3, [r2, #1] 2948: 2130 movs r1, #48 ; 0x30 294a: 438b bics r3, r1 294c: 7053 strb r3, [r2, #1] new_obj->signal_cb = lv_obj_signal; 294e: 4bdb ldr r3, [pc, #876] ; (2cbc ) 2950: 61e3 str r3, [r4, #28] new_obj->design_cb = lv_obj_design; 2952: 4bdb ldr r3, [pc, #876] ; (2cc0 ) 2954: 6223 str r3, [r4, #32] new_obj->event_cb = NULL; 2956: 2300 movs r3, #0 2958: 61a3 str r3, [r4, #24] new_obj->coords.x1 = 0; 295a: 8223 strh r3, [r4, #16] new_obj->coords.y1 = 0; 295c: 8263 strh r3, [r4, #18] new_obj->coords.x2 = lv_disp_get_hor_res(NULL) - 1; 295e: 2000 movs r0, #0 2960: 4bd8 ldr r3, [pc, #864] ; (2cc4 ) 2962: 4798 blx r3 2964: 3801 subs r0, #1 2966: 82a0 strh r0, [r4, #20] new_obj->coords.y2 = lv_disp_get_ver_res(NULL) - 1; 2968: 2000 movs r0, #0 296a: 4bd7 ldr r3, [pc, #860] ; (2cc8 ) 296c: 4798 blx r3 296e: 3801 subs r0, #1 2970: 82e0 strh r0, [r4, #22] _lv_ll_init(&(new_obj->child_ll), sizeof(lv_obj_t)); 2972: 1d20 adds r0, r4, #4 2974: 214c movs r1, #76 ; 0x4c 2976: 4bd5 ldr r3, [pc, #852] ; (2ccc ) 2978: 4798 blx r3 new_obj->ext_draw_pad = 0; 297a: 2100 movs r1, #0 297c: 2000 movs r0, #0 297e: 8661 strh r1, [r4, #50] ; 0x32 new_obj->ext_click_pad_hor = 0; 2980: 2300 movs r3, #0 2982: 2230 movs r2, #48 ; 0x30 2984: 54a0 strb r0, [r4, r2] new_obj->ext_click_pad_ver = 0; 2986: 3201 adds r2, #1 2988: 54a3 strb r3, [r4, r2] new_obj->realign.align = LV_ALIGN_CENTER; 298a: 3217 adds r2, #23 298c: 54a3 strb r3, [r4, r2] new_obj->realign.xofs = 0; 298e: 2344 movs r3, #68 ; 0x44 2990: 52e1 strh r1, [r4, r3] new_obj->realign.yofs = 0; 2992: 3302 adds r3, #2 2994: 52e1 strh r1, [r4, r3] new_obj->realign.base = NULL; 2996: 6421 str r1, [r4, #64] ; 0x40 new_obj->realign.auto_realign = 0; 2998: 3201 adds r2, #1 299a: 5ca3 ldrb r3, [r4, r2] 299c: 2701 movs r7, #1 299e: 43bb bics r3, r7 29a0: 54a3 strb r3, [r4, r2] new_obj->group_p = NULL; 29a2: 63a1 str r1, [r4, #56] ; 0x38 new_obj->adv_hittest = 0; 29a4: 2334 movs r3, #52 ; 0x34 29a6: 4698 mov r8, r3 29a8: 5ce2 ldrb r2, [r4, r3] new_obj->click = 1; 29aa: 334b adds r3, #75 ; 0x4b 29ac: 4013 ands r3, r2 29ae: 2201 movs r2, #1 29b0: 4694 mov ip, r2 29b2: 4662 mov r2, ip 29b4: 4313 orrs r3, r2 new_obj->drag_throw = 0; 29b6: 227d movs r2, #125 ; 0x7d 29b8: 4013 ands r3, r2 new_obj->drag_parent = 0; 29ba: 3a79 subs r2, #121 ; 0x79 29bc: 4393 bics r3, r2 new_obj->drag_dir = LV_DRAG_DIR_BOTH; 29be: 0027 movs r7, r4 29c0: 3734 adds r7, #52 ; 0x34 29c2: 787a ldrb r2, [r7, #1] 29c4: 260e movs r6, #14 29c6: 43b2 bics r2, r6 29c8: 2606 movs r6, #6 29ca: 46b1 mov r9, r6 29cc: 464e mov r6, r9 29ce: 4332 orrs r2, r6 new_obj->hidden = 0; 29d0: 2608 movs r6, #8 29d2: 43b3 bics r3, r6 new_obj->top = 0; 29d4: 3608 adds r6, #8 29d6: 43b3 bics r3, r6 new_obj->protect = LV_PROTECT_NONE; 29d8: 362c adds r6, #44 ; 0x2c 29da: 55a0 strb r0, [r4, r6] new_obj->parent_event = 0; 29dc: 3e1c subs r6, #28 29de: 43b3 bics r3, r6 29e0: 3620 adds r6, #32 29e2: 43b3 bics r3, r6 29e4: 4646 mov r6, r8 29e6: 55a3 strb r3, [r4, r6] new_obj->gesture_parent = 1; 29e8: 4663 mov r3, ip 29ea: 431a orrs r2, r3 29ec: 707a strb r2, [r7, #1] new_obj->state = LV_STATE_DEFAULT; 29ee: 233d movs r3, #61 ; 0x3d 29f0: 54e0 strb r0, [r4, r3] new_obj->ext_attr = NULL; 29f2: 6261 str r1, [r4, #36] ; 0x24 lv_style_list_init(&new_obj->style_list); 29f4: 3f0c subs r7, #12 29f6: 0038 movs r0, r7 29f8: 4bb5 ldr r3, [pc, #724] ; (2cd0 ) 29fa: 4798 blx r3 if(copy == NULL) { 29fc: 2d00 cmp r5, #0 29fe: d100 bne.n 2a02 2a00: e140 b.n 2c84 lv_style_list_copy(&new_obj->style_list, ©->style_list); 2a02: 0029 movs r1, r5 2a04: 3128 adds r1, #40 ; 0x28 2a06: 0038 movs r0, r7 2a08: 4bb2 ldr r3, [pc, #712] ; (2cd4 ) 2a0a: 4798 blx r3 2a0c: 0029 movs r1, r5 2a0e: 3118 adds r1, #24 uint8_t * d8 = (uint8_t *)dst; 2a10: 0022 movs r2, r4 2a12: 3210 adds r2, #16 const uint8_t * s8 = (const uint8_t *)src; 2a14: 002b movs r3, r5 2a16: 3310 adds r3, #16 *d8 = *s8; 2a18: 7818 ldrb r0, [r3, #0] 2a1a: 7010 strb r0, [r2, #0] d8++; 2a1c: 3201 adds r2, #1 s8++; 2a1e: 3301 adds r3, #1 while(len) { 2a20: 428b cmp r3, r1 2a22: d1f9 bne.n 2a18 new_obj->ext_draw_pad = copy->ext_draw_pad; 2a24: 2232 movs r2, #50 ; 0x32 2a26: 5eab ldrsh r3, [r5, r2] 2a28: 8663 strh r3, [r4, #50] ; 0x32 new_obj->ext_click_pad_hor = copy->ext_click_pad_hor; 2a2a: 2330 movs r3, #48 ; 0x30 2a2c: 5cea ldrb r2, [r5, r3] 2a2e: 54e2 strb r2, [r4, r3] new_obj->ext_click_pad_ver = copy->ext_click_pad_ver; 2a30: 3301 adds r3, #1 2a32: 5cea ldrb r2, [r5, r3] 2a34: 54e2 strb r2, [r4, r3] new_obj->realign.align = copy->realign.align; 2a36: 3317 adds r3, #23 2a38: 5cea ldrb r2, [r5, r3] 2a3a: 54e2 strb r2, [r4, r3] new_obj->realign.xofs = copy->realign.xofs; 2a3c: 3b04 subs r3, #4 2a3e: 5eea ldrsh r2, [r5, r3] 2a40: 52e2 strh r2, [r4, r3] new_obj->realign.yofs = copy->realign.yofs; 2a42: 3302 adds r3, #2 2a44: 5eea ldrsh r2, [r5, r3] 2a46: 52e2 strh r2, [r4, r3] new_obj->realign.base = copy->realign.base; 2a48: 6c2b ldr r3, [r5, #64] ; 0x40 2a4a: 6423 str r3, [r4, #64] ; 0x40 new_obj->realign.auto_realign = copy->realign.auto_realign; 2a4c: 2249 movs r2, #73 ; 0x49 2a4e: 5ca9 ldrb r1, [r5, r2] 2a50: 2301 movs r3, #1 2a52: 469b mov fp, r3 2a54: 2701 movs r7, #1 2a56: 4039 ands r1, r7 2a58: 5ca3 ldrb r3, [r4, r2] 2a5a: 4658 mov r0, fp 2a5c: 4383 bics r3, r0 2a5e: 430b orrs r3, r1 2a60: 54a3 strb r3, [r4, r2] new_obj->event_cb = copy->event_cb; 2a62: 69ab ldr r3, [r5, #24] 2a64: 61a3 str r3, [r4, #24] new_obj->adv_hittest = copy->adv_hittest; 2a66: 2334 movs r3, #52 ; 0x34 2a68: 5cea ldrb r2, [r5, r3] 2a6a: 09d2 lsrs r2, r2, #7 2a6c: 01d1 lsls r1, r2, #7 2a6e: 5ce2 ldrb r2, [r4, r3] 2a70: 4694 mov ip, r2 2a72: 227f movs r2, #127 ; 0x7f 2a74: 4666 mov r6, ip 2a76: 4032 ands r2, r6 2a78: 430a orrs r2, r1 2a7a: 54e2 strb r2, [r4, r3] new_obj->click = copy->click; 2a7c: 5cea ldrb r2, [r5, r3] 2a7e: 07d2 lsls r2, r2, #31 2a80: 0fd2 lsrs r2, r2, #31 2a82: 5ce1 ldrb r1, [r4, r3] 2a84: 4381 bics r1, r0 2a86: 430a orrs r2, r1 2a88: 54e2 strb r2, [r4, r3] new_obj->drag = copy->drag; 2a8a: 5cea ldrb r2, [r5, r3] 2a8c: 0852 lsrs r2, r2, #1 2a8e: 403a ands r2, r7 2a90: 0052 lsls r2, r2, #1 2a92: 5ce1 ldrb r1, [r4, r3] 2a94: 2602 movs r6, #2 2a96: 43b1 bics r1, r6 2a98: 430a orrs r2, r1 2a9a: 54e2 strb r2, [r4, r3] new_obj->drag_dir = copy->drag_dir; 2a9c: 2235 movs r2, #53 ; 0x35 2a9e: 4694 mov ip, r2 2aa0: 5caa ldrb r2, [r5, r2] 2aa2: 0021 movs r1, r4 2aa4: 3134 adds r1, #52 ; 0x34 2aa6: 360c adds r6, #12 2aa8: 4016 ands r6, r2 2aaa: 46b0 mov r8, r6 2aac: 784a ldrb r2, [r1, #1] 2aae: 260e movs r6, #14 2ab0: 43b2 bics r2, r6 2ab2: 4646 mov r6, r8 2ab4: 4332 orrs r2, r6 2ab6: 704a strb r2, [r1, #1] new_obj->drag_throw = copy->drag_throw; 2ab8: 5cea ldrb r2, [r5, r3] 2aba: 0892 lsrs r2, r2, #2 2abc: 403a ands r2, r7 2abe: 0092 lsls r2, r2, #2 2ac0: 5ce6 ldrb r6, [r4, r3] 2ac2: 46b0 mov r8, r6 2ac4: 2604 movs r6, #4 2ac6: 46b1 mov r9, r6 2ac8: 4646 mov r6, r8 2aca: 4648 mov r0, r9 2acc: 4386 bics r6, r0 2ace: 4332 orrs r2, r6 2ad0: 54e2 strb r2, [r4, r3] new_obj->drag_parent = copy->drag_parent; 2ad2: 5cea ldrb r2, [r5, r3] 2ad4: 08d2 lsrs r2, r2, #3 2ad6: 403a ands r2, r7 2ad8: 00d2 lsls r2, r2, #3 2ada: 5ce0 ldrb r0, [r4, r3] 2adc: 4680 mov r8, r0 2ade: 2008 movs r0, #8 2ae0: 4646 mov r6, r8 2ae2: 4386 bics r6, r0 2ae4: 4332 orrs r2, r6 2ae6: 54e2 strb r2, [r4, r3] new_obj->hidden = copy->hidden; 2ae8: 5cea ldrb r2, [r5, r3] 2aea: 0912 lsrs r2, r2, #4 2aec: 403a ands r2, r7 2aee: 0112 lsls r2, r2, #4 2af0: 5ce0 ldrb r0, [r4, r3] 2af2: 4680 mov r8, r0 2af4: 2010 movs r0, #16 2af6: 4646 mov r6, r8 2af8: 4386 bics r6, r0 2afa: 4332 orrs r2, r6 2afc: 54e2 strb r2, [r4, r3] new_obj->top = copy->top; 2afe: 5cea ldrb r2, [r5, r3] 2b00: 0952 lsrs r2, r2, #5 2b02: 403a ands r2, r7 2b04: 0152 lsls r2, r2, #5 2b06: 5ce0 ldrb r0, [r4, r3] 2b08: 4680 mov r8, r0 2b0a: 2020 movs r0, #32 2b0c: 4646 mov r6, r8 2b0e: 4386 bics r6, r0 2b10: 4332 orrs r2, r6 2b12: 54e2 strb r2, [r4, r3] new_obj->parent_event = copy->parent_event; 2b14: 5cea ldrb r2, [r5, r3] 2b16: 0992 lsrs r2, r2, #6 2b18: 403a ands r2, r7 2b1a: 0192 lsls r2, r2, #6 2b1c: 5ce7 ldrb r7, [r4, r3] 2b1e: 2040 movs r0, #64 ; 0x40 2b20: 4387 bics r7, r0 2b22: 433a orrs r2, r7 2b24: 54e2 strb r2, [r4, r3] new_obj->protect = copy->protect; 2b26: 3308 adds r3, #8 2b28: 5cea ldrb r2, [r5, r3] 2b2a: 54e2 strb r2, [r4, r3] new_obj->gesture_parent = copy->gesture_parent; 2b2c: 4663 mov r3, ip 2b2e: 5ceb ldrb r3, [r5, r3] 2b30: 07db lsls r3, r3, #31 2b32: 0fdb lsrs r3, r3, #31 2b34: 784a ldrb r2, [r1, #1] 2b36: 4658 mov r0, fp 2b38: 4382 bics r2, r0 2b3a: 4313 orrs r3, r2 2b3c: 704b strb r3, [r1, #1] if(copy->group_p != NULL) { 2b3e: 6ba8 ldr r0, [r5, #56] ; 0x38 2b40: 2800 cmp r0, #0 2b42: d002 beq.n 2b4a lv_group_add_obj(copy->group_p, new_obj); 2b44: 0021 movs r1, r4 2b46: 4b64 ldr r3, [pc, #400] ; (2cd8 ) 2b48: 4798 blx r3 if(lv_obj_get_parent(copy) != NULL && parent != NULL) { 2b4a: 0028 movs r0, r5 2b4c: 4b63 ldr r3, [pc, #396] ; (2cdc ) 2b4e: 4798 blx r3 2b50: 2800 cmp r0, #0 2b52: d100 bne.n 2b56 2b54: e0d2 b.n 2cfc 2b56: 4653 mov r3, sl 2b58: 2b00 cmp r3, #0 2b5a: d100 bne.n 2b5e 2b5c: e0da b.n 2d14 lv_obj_set_pos(new_obj, lv_obj_get_x(copy), lv_obj_get_y(copy)); 2b5e: 0028 movs r0, r5 2b60: 4b5f ldr r3, [pc, #380] ; (2ce0 ) 2b62: 4798 blx r3 2b64: 0007 movs r7, r0 2b66: 0028 movs r0, r5 2b68: 4b5e ldr r3, [pc, #376] ; (2ce4 ) 2b6a: 4798 blx r3 2b6c: 0002 movs r2, r0 2b6e: 0039 movs r1, r7 2b70: 0020 movs r0, r4 2b72: 4b5d ldr r3, [pc, #372] ; (2ce8 ) 2b74: 4798 blx r3 2b76: e0c4 b.n 2d02 new_obj = _lv_ll_ins_head(&parent->child_ll); 2b78: 4653 mov r3, sl 2b7a: 1d18 adds r0, r3, #4 2b7c: 4b4c ldr r3, [pc, #304] ; (2cb0 ) 2b7e: 4798 blx r3 2b80: 0004 movs r4, r0 LV_ASSERT_MEM(new_obj); 2b82: 4b47 ldr r3, [pc, #284] ; (2ca0 ) 2b84: 4798 blx r3 2b86: 2800 cmp r0, #0 2b88: d04b beq.n 2c22 if(new_obj == NULL) return NULL; 2b8a: 2c00 cmp r4, #0 2b8c: d100 bne.n 2b90 2b8e: e0c1 b.n 2d14 _lv_memset_00(new_obj, sizeof(lv_obj_t)); 2b90: 214c movs r1, #76 ; 0x4c 2b92: 0020 movs r0, r4 2b94: 4b48 ldr r3, [pc, #288] ; (2cb8 ) 2b96: 4798 blx r3 new_obj->parent = parent; 2b98: 4653 mov r3, sl 2b9a: 6023 str r3, [r4, #0] new_obj->base_dir = LV_BIDI_DIR_LTR; 2b9c: 0022 movs r2, r4 2b9e: 3234 adds r2, #52 ; 0x34 2ba0: 7853 ldrb r3, [r2, #1] 2ba2: 2130 movs r1, #48 ; 0x30 2ba4: 438b bics r3, r1 2ba6: 7053 strb r3, [r2, #1] new_obj->signal_cb = lv_obj_signal; 2ba8: 4b44 ldr r3, [pc, #272] ; (2cbc ) 2baa: 61e3 str r3, [r4, #28] new_obj->design_cb = lv_obj_design; 2bac: 4b44 ldr r3, [pc, #272] ; (2cc0 ) 2bae: 6223 str r3, [r4, #32] new_obj->event_cb = NULL; 2bb0: 2300 movs r3, #0 2bb2: 61a3 str r3, [r4, #24] new_obj->coords.y1 = parent->coords.y1; 2bb4: 4653 mov r3, sl 2bb6: 2212 movs r2, #18 2bb8: 5e9b ldrsh r3, [r3, r2] 2bba: 8263 strh r3, [r4, #18] new_obj->coords.y2 = parent->coords.y1 + LV_OBJ_DEF_HEIGHT; 2bbc: 4653 mov r3, sl 2bbe: 8a5f ldrh r7, [r3, #18] 2bc0: 2000 movs r0, #0 2bc2: 4b4a ldr r3, [pc, #296] ; (2cec ) 2bc4: 4798 blx r3 2bc6: 2332 movs r3, #50 ; 0x32 2bc8: 4343 muls r3, r0 2bca: 3350 adds r3, #80 ; 0x50 2bcc: 2240 movs r2, #64 ; 0x40 2bce: 32ff adds r2, #255 ; 0xff 2bd0: 2001 movs r0, #1 2bd2: 4293 cmp r3, r2 2bd4: d82b bhi.n 2c2e 2bd6: 19c0 adds r0, r0, r7 2bd8: 82e0 strh r0, [r4, #22] if(lv_obj_get_base_dir(new_obj) == LV_BIDI_DIR_RTL) { 2bda: 0020 movs r0, r4 2bdc: 4b44 ldr r3, [pc, #272] ; (2cf0 ) 2bde: 4798 blx r3 2be0: 2801 cmp r0, #1 2be2: d030 beq.n 2c46 new_obj->coords.x1 = parent->coords.x1; 2be4: 4653 mov r3, sl 2be6: 2210 movs r2, #16 2be8: 5e9b ldrsh r3, [r3, r2] 2bea: 8223 strh r3, [r4, #16] new_obj->coords.x2 = parent->coords.x1 + LV_OBJ_DEF_WIDTH; 2bec: 4653 mov r3, sl 2bee: 8a1f ldrh r7, [r3, #16] 2bf0: 2000 movs r0, #0 2bf2: 4b3e ldr r3, [pc, #248] ; (2cec ) 2bf4: 4798 blx r3 2bf6: 2364 movs r3, #100 ; 0x64 2bf8: 4343 muls r3, r0 2bfa: 3350 adds r3, #80 ; 0x50 2bfc: 2240 movs r2, #64 ; 0x40 2bfe: 32ff adds r2, #255 ; 0xff 2c00: 2001 movs r0, #1 2c02: 4293 cmp r3, r2 2c04: d90a bls.n 2c1c 2c06: 2000 movs r0, #0 2c08: 4b38 ldr r3, [pc, #224] ; (2cec ) 2c0a: 4798 blx r3 2c0c: 0003 movs r3, r0 2c0e: 2064 movs r0, #100 ; 0x64 2c10: 4358 muls r0, r3 2c12: 3050 adds r0, #80 ; 0x50 2c14: 21a0 movs r1, #160 ; 0xa0 2c16: 4b37 ldr r3, [pc, #220] ; (2cf4 ) 2c18: 4798 blx r3 2c1a: b280 uxth r0, r0 2c1c: 19c0 adds r0, r0, r7 2c1e: 82a0 strh r0, [r4, #20] 2c20: e6a7 b.n 2972 LV_ASSERT_MEM(new_obj); 2c22: 0022 movs r2, r4 2c24: 2300 movs r3, #0 2c26: 4823 ldr r0, [pc, #140] ; (2cb4 ) 2c28: 491f ldr r1, [pc, #124] ; (2ca8 ) 2c2a: 4788 blx r1 2c2c: e7fe b.n 2c2c new_obj->coords.y2 = parent->coords.y1 + LV_OBJ_DEF_HEIGHT; 2c2e: 2000 movs r0, #0 2c30: 4b2e ldr r3, [pc, #184] ; (2cec ) 2c32: 4798 blx r3 2c34: 0003 movs r3, r0 2c36: 2032 movs r0, #50 ; 0x32 2c38: 4358 muls r0, r3 2c3a: 3050 adds r0, #80 ; 0x50 2c3c: 21a0 movs r1, #160 ; 0xa0 2c3e: 4b2d ldr r3, [pc, #180] ; (2cf4 ) 2c40: 4798 blx r3 2c42: b280 uxth r0, r0 2c44: e7c7 b.n 2bd6 new_obj->coords.x2 = parent->coords.x2; 2c46: 4653 mov r3, sl 2c48: 2214 movs r2, #20 2c4a: 5e9b ldrsh r3, [r3, r2] 2c4c: 82a3 strh r3, [r4, #20] new_obj->coords.x1 = parent->coords.x2 - LV_OBJ_DEF_WIDTH; 2c4e: 4653 mov r3, sl 2c50: 8a9f ldrh r7, [r3, #20] 2c52: 2000 movs r0, #0 2c54: 4b25 ldr r3, [pc, #148] ; (2cec ) 2c56: 4798 blx r3 2c58: 2364 movs r3, #100 ; 0x64 2c5a: 4343 muls r3, r0 2c5c: 3350 adds r3, #80 ; 0x50 2c5e: 2240 movs r2, #64 ; 0x40 2c60: 32ff adds r2, #255 ; 0xff 2c62: 2001 movs r0, #1 2c64: 4293 cmp r3, r2 2c66: d90a bls.n 2c7e 2c68: 2000 movs r0, #0 2c6a: 4b20 ldr r3, [pc, #128] ; (2cec ) 2c6c: 4798 blx r3 2c6e: 0003 movs r3, r0 2c70: 2064 movs r0, #100 ; 0x64 2c72: 4358 muls r0, r3 2c74: 3050 adds r0, #80 ; 0x50 2c76: 21a0 movs r1, #160 ; 0xa0 2c78: 4b1e ldr r3, [pc, #120] ; (2cf4 ) 2c7a: 4798 blx r3 2c7c: b280 uxth r0, r0 2c7e: 1a38 subs r0, r7, r0 2c80: 8220 strh r0, [r4, #16] 2c82: e676 b.n 2972 if(parent != NULL) lv_theme_apply(new_obj, LV_THEME_OBJ); 2c84: 4653 mov r3, sl 2c86: 2b00 cmp r3, #0 2c88: d004 beq.n 2c94 2c8a: 2102 movs r1, #2 2c8c: 0020 movs r0, r4 2c8e: 4b1a ldr r3, [pc, #104] ; (2cf8 ) 2c90: 4798 blx r3 2c92: e036 b.n 2d02 else lv_theme_apply(new_obj, LV_THEME_SCR); 2c94: 2101 movs r1, #1 2c96: 0020 movs r0, r4 2c98: 4b17 ldr r3, [pc, #92] ; (2cf8 ) 2c9a: 4798 blx r3 2c9c: e03a b.n 2d14 2c9e: 46c0 nop ; (mov r8, r8) 2ca0: 0000147d .word 0x0000147d 2ca4: 0001878c .word 0x0001878c 2ca8: 00001485 .word 0x00001485 2cac: 0000f609 .word 0x0000f609 2cb0: 000105cd .word 0x000105cd 2cb4: 00018724 .word 0x00018724 2cb8: 0001104d .word 0x0001104d 2cbc: 00003e41 .word 0x00003e41 2cc0: 000039e1 .word 0x000039e1 2cc4: 0000f615 .word 0x0000f615 2cc8: 0000f63d .word 0x0000f63d 2ccc: 000105b9 .word 0x000105b9 2cd0: 0000495d .word 0x0000495d 2cd4: 000056a1 .word 0x000056a1 2cd8: 000016a9 .word 0x000016a9 2cdc: 00001aa1 .word 0x00001aa1 2ce0: 00001c11 .word 0x00001c11 2ce4: 00001c55 .word 0x00001c55 2ce8: 00002085 .word 0x00002085 2cec: 0000f665 .word 0x0000f665 2cf0: 000028bd .word 0x000028bd 2cf4: 00017881 .word 0x00017881 2cf8: 00011c69 .word 0x00011c69 if(parent != NULL) { 2cfc: 4653 mov r3, sl 2cfe: 2b00 cmp r3, #0 2d00: d008 beq.n 2d14 parent->signal_cb(parent, LV_SIGNAL_CHILD_CHG, new_obj); 2d02: 4653 mov r3, sl 2d04: 69db ldr r3, [r3, #28] 2d06: 0022 movs r2, r4 2d08: 2101 movs r1, #1 2d0a: 4650 mov r0, sl 2d0c: 4798 blx r3 lv_obj_invalidate(new_obj); 2d0e: 0020 movs r0, r4 2d10: 4b05 ldr r3, [pc, #20] ; (2d28 ) 2d12: 4798 blx r3 } 2d14: 0020 movs r0, r4 2d16: bc3c pop {r2, r3, r4, r5} 2d18: 4690 mov r8, r2 2d1a: 4699 mov r9, r3 2d1c: 46a2 mov sl, r4 2d1e: 46ab mov fp, r5 2d20: bdf8 pop {r3, r4, r5, r6, r7, pc} return NULL; 2d22: 4654 mov r4, sl 2d24: e7f6 b.n 2d14 2d26: 46c0 nop ; (mov r8, r8) 2d28: 00001fb1 .word 0x00001fb1 00002d2c : { 2d2c: b570 push {r4, r5, r6, lr} 2d2e: 0004 movs r4, r0 2d30: 000d movs r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2d32: 4b08 ldr r3, [pc, #32] ; (2d54 ) 2d34: 4798 blx r3 2d36: 2800 cmp r0, #0 2d38: d006 beq.n 2d48 return (obj->protect & prot) == 0 ? false : true; 2d3a: 233c movs r3, #60 ; 0x3c 2d3c: 5ce0 ldrb r0, [r4, r3] 2d3e: 4028 ands r0, r5 2d40: 1e43 subs r3, r0, #1 2d42: 4198 sbcs r0, r3 2d44: b2c0 uxtb r0, r0 } 2d46: bd70 pop {r4, r5, r6, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2d48: 0022 movs r2, r4 2d4a: 2300 movs r3, #0 2d4c: 4802 ldr r0, [pc, #8] ; (2d58 ) 2d4e: 4903 ldr r1, [pc, #12] ; (2d5c ) 2d50: 4788 blx r1 2d52: e7fe b.n 2d52 2d54: 0000147d .word 0x0000147d 2d58: 0001878c .word 0x0001878c 2d5c: 00001485 .word 0x00001485 00002d60 : { 2d60: b570 push {r4, r5, r6, lr} 2d62: b082 sub sp, #8 2d64: 0005 movs r5, r0 2d66: 000e movs r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2d68: 4b0d ldr r3, [pc, #52] ; (2da0 ) 2d6a: 4798 blx r3 2d6c: 2800 cmp r0, #0 2d6e: d005 beq.n 2d7c if(part < _LV_OBJ_PART_REAL_LAST) return ((lv_obj_t *)obj)->state; 2d70: 2e3f cmp r6, #63 ; 0x3f 2d72: d809 bhi.n 2d88 2d74: 233d movs r3, #61 ; 0x3d 2d76: 5ce8 ldrb r0, [r5, r3] } 2d78: b002 add sp, #8 2d7a: bd70 pop {r4, r5, r6, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2d7c: 002a movs r2, r5 2d7e: 2300 movs r3, #0 2d80: 4808 ldr r0, [pc, #32] ; (2da4 ) 2d82: 4909 ldr r1, [pc, #36] ; (2da8 ) 2d84: 4788 blx r1 2d86: e7fe b.n 2d86 info.part = part; 2d88: ac01 add r4, sp, #4 2d8a: 7026 strb r6, [r4, #0] info.result = LV_STATE_DEFAULT; 2d8c: 2300 movs r3, #0 2d8e: 7063 strb r3, [r4, #1] lv_signal_send((lv_obj_t *)obj, LV_SIGNAL_GET_STATE_DSC, &info); 2d90: 0022 movs r2, r4 2d92: 2109 movs r1, #9 2d94: 0028 movs r0, r5 2d96: 4b05 ldr r3, [pc, #20] ; (2dac ) 2d98: 4798 blx r3 return info.result; 2d9a: 7860 ldrb r0, [r4, #1] 2d9c: e7ec b.n 2d78 2d9e: 46c0 nop ; (mov r8, r8) 2da0: 0000147d .word 0x0000147d 2da4: 0001878c .word 0x0001878c 2da8: 00001485 .word 0x00001485 2dac: 00001a55 .word 0x00001a55 00002db0 <_lv_obj_get_style_int>: { 2db0: b5f0 push {r4, r5, r6, r7, lr} 2db2: 46de mov lr, fp 2db4: 4657 mov r7, sl 2db6: 464e mov r6, r9 2db8: b5c0 push {r6, r7, lr} 2dba: b084 sub sp, #16 2dbc: 0006 movs r6, r0 2dbe: 000d movs r5, r1 2dc0: 0017 movs r7, r2 attr.full = prop_ori >> 8; 2dc2: 0a13 lsrs r3, r2, #8 2dc4: 9301 str r3, [sp, #4] while(parent) { 2dc6: 2800 cmp r0, #0 2dc8: d030 beq.n 2e2c <_lv_obj_get_style_int+0x7c> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 2dca: 4b24 ldr r3, [pc, #144] ; (2e5c <_lv_obj_get_style_int+0xac>) 2dcc: 469b mov fp, r3 lv_state_t state = lv_obj_get_state(parent, part); 2dce: 4b24 ldr r3, [pc, #144] ; (2e60 <_lv_obj_get_style_int+0xb0>) 2dd0: 469a mov sl, r3 res = _lv_style_list_get_int(dsc, prop, &value_act); 2dd2: 4b24 ldr r3, [pc, #144] ; (2e64 <_lv_obj_get_style_int+0xb4>) 2dd4: 4699 mov r9, r3 2dd6: e00c b.n 2df2 <_lv_obj_get_style_int+0x42> if(res == LV_RES_OK) return value_act; 2dd8: ab02 add r3, sp, #8 2dda: 3306 adds r3, #6 2ddc: 2000 movs r0, #0 2dde: 5e18 ldrsh r0, [r3, r0] } 2de0: b004 add sp, #16 2de2: bc1c pop {r2, r3, r4} 2de4: 4691 mov r9, r2 2de6: 469a mov sl, r3 2de8: 46a3 mov fp, r4 2dea: bdf0 pop {r4, r5, r6, r7, pc} 2dec: 2500 movs r5, #0 while(parent) { 2dee: 2e00 cmp r6, #0 2df0: d01d beq.n 2e2e <_lv_obj_get_style_int+0x7e> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 2df2: 0029 movs r1, r5 2df4: 0030 movs r0, r6 2df6: 47d8 blx fp 2df8: 9000 str r0, [sp, #0] lv_state_t state = lv_obj_get_state(parent, part); 2dfa: 0029 movs r1, r5 2dfc: 0030 movs r0, r6 2dfe: 47d0 blx sl prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 2e00: 0204 lsls r4, r0, #8 2e02: 193c adds r4, r7, r4 2e04: b2a4 uxth r4, r4 res = _lv_style_list_get_int(dsc, prop, &value_act); 2e06: ab02 add r3, sp, #8 2e08: 1d9a adds r2, r3, #6 2e0a: 0021 movs r1, r4 2e0c: 9800 ldr r0, [sp, #0] 2e0e: 47c8 blx r9 if(res == LV_RES_OK) return value_act; 2e10: 2801 cmp r0, #1 2e12: d0e1 beq.n 2dd8 <_lv_obj_get_style_int+0x28> if(attr.bits.inherit == 0) break; 2e14: 466b mov r3, sp 2e16: 791b ldrb r3, [r3, #4] 2e18: b25b sxtb r3, r3 2e1a: 2b00 cmp r3, #0 2e1c: da07 bge.n 2e2e <_lv_obj_get_style_int+0x7e> if(part != LV_OBJ_PART_MAIN) { 2e1e: 2d00 cmp r5, #0 2e20: d1e4 bne.n 2dec <_lv_obj_get_style_int+0x3c> parent = lv_obj_get_parent(parent); 2e22: 0030 movs r0, r6 2e24: 4b10 ldr r3, [pc, #64] ; (2e68 <_lv_obj_get_style_int+0xb8>) 2e26: 4798 blx r3 2e28: 0006 movs r6, r0 2e2a: e7df b.n 2dec <_lv_obj_get_style_int+0x3c> while(parent) { 2e2c: 0014 movs r4, r2 switch(prop) { 2e2e: 4b0f ldr r3, [pc, #60] ; (2e6c <_lv_obj_get_style_int+0xbc>) 2e30: 401c ands r4, r3 2e32: 2c22 cmp r4, #34 ; 0x22 2e34: d010 beq.n 2e58 <_lv_obj_get_style_int+0xa8> 2e36: d807 bhi.n 2e48 <_lv_obj_get_style_int+0x98> return LV_DPI / 20; 2e38: 2006 movs r0, #6 switch(prop) { 2e3a: 2c03 cmp r4, #3 2e3c: d0d0 beq.n 2de0 <_lv_obj_get_style_int+0x30> 2e3e: 2c07 cmp r4, #7 2e40: d108 bne.n 2e54 <_lv_obj_get_style_int+0xa4> return LV_IMG_ZOOM_NONE; 2e42: 2080 movs r0, #128 ; 0x80 2e44: 0040 lsls r0, r0, #1 2e46: e7cb b.n 2de0 <_lv_obj_get_style_int+0x30> return LV_BORDER_SIDE_FULL; 2e48: 200f movs r0, #15 switch(prop) { 2e4a: 2c31 cmp r4, #49 ; 0x31 2e4c: d0c8 beq.n 2de0 <_lv_obj_get_style_int+0x30> return LV_DPI / 8; 2e4e: 3001 adds r0, #1 switch(prop) { 2e50: 2cc0 cmp r4, #192 ; 0xc0 2e52: d0c5 beq.n 2de0 <_lv_obj_get_style_int+0x30> return 0; 2e54: 2000 movs r0, #0 2e56: e7c3 b.n 2de0 <_lv_obj_get_style_int+0x30> return 255; 2e58: 20ff movs r0, #255 ; 0xff 2e5a: e7c1 b.n 2de0 <_lv_obj_get_style_int+0x30> 2e5c: 00001cf9 .word 0x00001cf9 2e60: 00002d61 .word 0x00002d61 2e64: 000057e1 .word 0x000057e1 2e68: 00001aa1 .word 0x00001aa1 2e6c: ffff80ff .word 0xffff80ff 00002e70 <_lv_obj_get_style_color>: { 2e70: b5f0 push {r4, r5, r6, r7, lr} 2e72: 46de mov lr, fp 2e74: 4657 mov r7, sl 2e76: 464e mov r6, r9 2e78: b5c0 push {r6, r7, lr} 2e7a: b084 sub sp, #16 2e7c: 0006 movs r6, r0 2e7e: 000d movs r5, r1 2e80: 0017 movs r7, r2 attr.full = prop_ori >> 8; 2e82: 0a13 lsrs r3, r2, #8 2e84: 9301 str r3, [sp, #4] while(parent) { 2e86: 2800 cmp r0, #0 2e88: d028 beq.n 2edc <_lv_obj_get_style_color+0x6c> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 2e8a: 4b1c ldr r3, [pc, #112] ; (2efc <_lv_obj_get_style_color+0x8c>) 2e8c: 469b mov fp, r3 lv_state_t state = lv_obj_get_state(parent, part); 2e8e: 4b1c ldr r3, [pc, #112] ; (2f00 <_lv_obj_get_style_color+0x90>) 2e90: 469a mov sl, r3 res = _lv_style_list_get_color(dsc, prop, &value_act); 2e92: 4b1c ldr r3, [pc, #112] ; (2f04 <_lv_obj_get_style_color+0x94>) 2e94: 4699 mov r9, r3 2e96: e005 b.n 2ea4 <_lv_obj_get_style_color+0x34> if(res == LV_RES_OK) return value_act; 2e98: ab03 add r3, sp, #12 2e9a: 8818 ldrh r0, [r3, #0] 2e9c: e025 b.n 2eea <_lv_obj_get_style_color+0x7a> 2e9e: 2500 movs r5, #0 while(parent) { 2ea0: 2e00 cmp r6, #0 2ea2: d01c beq.n 2ede <_lv_obj_get_style_color+0x6e> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 2ea4: 0029 movs r1, r5 2ea6: 0030 movs r0, r6 2ea8: 47d8 blx fp 2eaa: 9000 str r0, [sp, #0] lv_state_t state = lv_obj_get_state(parent, part); 2eac: 0029 movs r1, r5 2eae: 0030 movs r0, r6 2eb0: 47d0 blx sl prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 2eb2: 0204 lsls r4, r0, #8 2eb4: 193c adds r4, r7, r4 2eb6: b2a4 uxth r4, r4 res = _lv_style_list_get_color(dsc, prop, &value_act); 2eb8: aa03 add r2, sp, #12 2eba: 0021 movs r1, r4 2ebc: 9800 ldr r0, [sp, #0] 2ebe: 47c8 blx r9 if(res == LV_RES_OK) return value_act; 2ec0: 2801 cmp r0, #1 2ec2: d0e9 beq.n 2e98 <_lv_obj_get_style_color+0x28> if(attr.bits.inherit == 0) break; 2ec4: 466b mov r3, sp 2ec6: 791b ldrb r3, [r3, #4] 2ec8: b25b sxtb r3, r3 2eca: 2b00 cmp r3, #0 2ecc: da07 bge.n 2ede <_lv_obj_get_style_color+0x6e> if(part != LV_OBJ_PART_MAIN) { 2ece: 2d00 cmp r5, #0 2ed0: d1e5 bne.n 2e9e <_lv_obj_get_style_color+0x2e> parent = lv_obj_get_parent(parent); 2ed2: 0030 movs r0, r6 2ed4: 4b0c ldr r3, [pc, #48] ; (2f08 <_lv_obj_get_style_color+0x98>) 2ed6: 4798 blx r3 2ed8: 0006 movs r6, r0 2eda: e7e0 b.n 2e9e <_lv_obj_get_style_color+0x2e> while(parent) { 2edc: 0014 movs r4, r2 switch(prop) { 2ede: 4b0b ldr r3, [pc, #44] ; (2f0c <_lv_obj_get_style_color+0x9c>) 2ee0: 401c ands r4, r3 2ee2: 3c29 subs r4, #41 ; 0x29 return LV_COLOR_BLACK; 2ee4: 2000 movs r0, #0 switch(prop) { 2ee6: 2c01 cmp r4, #1 2ee8: d905 bls.n 2ef6 <_lv_obj_get_style_color+0x86> } 2eea: b004 add sp, #16 2eec: bc1c pop {r2, r3, r4} 2eee: 4691 mov r9, r2 2ef0: 469a mov sl, r3 2ef2: 46a3 mov fp, r4 2ef4: bdf0 pop {r4, r5, r6, r7, pc} return LV_COLOR_WHITE; 2ef6: 4b06 ldr r3, [pc, #24] ; (2f10 <_lv_obj_get_style_color+0xa0>) 2ef8: 8818 ldrh r0, [r3, #0] 2efa: e7f6 b.n 2eea <_lv_obj_get_style_color+0x7a> 2efc: 00001cf9 .word 0x00001cf9 2f00: 00002d61 .word 0x00002d61 2f04: 000058b5 .word 0x000058b5 2f08: 00001aa1 .word 0x00001aa1 2f0c: ffff80ff .word 0xffff80ff 2f10: 00018788 .word 0x00018788 00002f14 <_lv_obj_get_style_opa>: { 2f14: b5f0 push {r4, r5, r6, r7, lr} 2f16: 46de mov lr, fp 2f18: 4657 mov r7, sl 2f1a: 464e mov r6, r9 2f1c: b5c0 push {r6, r7, lr} 2f1e: b084 sub sp, #16 2f20: 0006 movs r6, r0 2f22: 000d movs r5, r1 2f24: 0017 movs r7, r2 attr.full = prop_ori >> 8; 2f26: 0a13 lsrs r3, r2, #8 2f28: 9301 str r3, [sp, #4] while(parent) { 2f2a: 2800 cmp r0, #0 2f2c: d029 beq.n 2f82 <_lv_obj_get_style_opa+0x6e> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 2f2e: 4b1e ldr r3, [pc, #120] ; (2fa8 <_lv_obj_get_style_opa+0x94>) 2f30: 469b mov fp, r3 lv_state_t state = lv_obj_get_state(parent, part); 2f32: 4b1e ldr r3, [pc, #120] ; (2fac <_lv_obj_get_style_opa+0x98>) 2f34: 469a mov sl, r3 res = _lv_style_list_get_opa(dsc, prop, &value_act); 2f36: 4b1e ldr r3, [pc, #120] ; (2fb0 <_lv_obj_get_style_opa+0x9c>) 2f38: 4699 mov r9, r3 2f3a: e005 b.n 2f48 <_lv_obj_get_style_opa+0x34> if(res == LV_RES_OK) return value_act; 2f3c: ab02 add r3, sp, #8 2f3e: 79d8 ldrb r0, [r3, #7] 2f40: e02a b.n 2f98 <_lv_obj_get_style_opa+0x84> 2f42: 2500 movs r5, #0 while(parent) { 2f44: 2e00 cmp r6, #0 2f46: d01d beq.n 2f84 <_lv_obj_get_style_opa+0x70> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 2f48: 0029 movs r1, r5 2f4a: 0030 movs r0, r6 2f4c: 47d8 blx fp 2f4e: 9000 str r0, [sp, #0] lv_state_t state = lv_obj_get_state(parent, part); 2f50: 0029 movs r1, r5 2f52: 0030 movs r0, r6 2f54: 47d0 blx sl prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 2f56: 0204 lsls r4, r0, #8 2f58: 193c adds r4, r7, r4 2f5a: b2a4 uxth r4, r4 res = _lv_style_list_get_opa(dsc, prop, &value_act); 2f5c: ab02 add r3, sp, #8 2f5e: 1dda adds r2, r3, #7 2f60: 0021 movs r1, r4 2f62: 9800 ldr r0, [sp, #0] 2f64: 47c8 blx r9 if(res == LV_RES_OK) return value_act; 2f66: 2801 cmp r0, #1 2f68: d0e8 beq.n 2f3c <_lv_obj_get_style_opa+0x28> if(attr.bits.inherit == 0) break; 2f6a: 466b mov r3, sp 2f6c: 791b ldrb r3, [r3, #4] 2f6e: b25b sxtb r3, r3 2f70: 2b00 cmp r3, #0 2f72: da07 bge.n 2f84 <_lv_obj_get_style_opa+0x70> if(part != LV_OBJ_PART_MAIN) { 2f74: 2d00 cmp r5, #0 2f76: d1e4 bne.n 2f42 <_lv_obj_get_style_opa+0x2e> parent = lv_obj_get_parent(parent); 2f78: 0030 movs r0, r6 2f7a: 4b0e ldr r3, [pc, #56] ; (2fb4 <_lv_obj_get_style_opa+0xa0>) 2f7c: 4798 blx r3 2f7e: 0006 movs r6, r0 2f80: e7df b.n 2f42 <_lv_obj_get_style_opa+0x2e> while(parent) { 2f82: 0014 movs r4, r2 switch(prop) { 2f84: 4b0c ldr r3, [pc, #48] ; (2fb8 <_lv_obj_get_style_opa+0xa4>) 2f86: 401c ands r4, r3 2f88: 2c6d cmp r4, #109 ; 0x6d 2f8a: d00b beq.n 2fa4 <_lv_obj_get_style_opa+0x90> 2f8c: 4b0b ldr r3, [pc, #44] ; (2fbc <_lv_obj_get_style_opa+0xa8>) 2f8e: 429c cmp r4, r3 2f90: d008 beq.n 2fa4 <_lv_obj_get_style_opa+0x90> 2f92: 2c2c cmp r4, #44 ; 0x2c 2f94: d006 beq.n 2fa4 <_lv_obj_get_style_opa+0x90> return LV_OPA_COVER; 2f96: 20ff movs r0, #255 ; 0xff } 2f98: b004 add sp, #16 2f9a: bc1c pop {r2, r3, r4} 2f9c: 4691 mov r9, r2 2f9e: 469a mov sl, r3 2fa0: 46a3 mov fp, r4 2fa2: bdf0 pop {r4, r5, r6, r7, pc} return LV_OPA_TRANSP; 2fa4: 2000 movs r0, #0 2fa6: e7f7 b.n 2f98 <_lv_obj_get_style_opa+0x84> 2fa8: 00001cf9 .word 0x00001cf9 2fac: 00002d61 .word 0x00002d61 2fb0: 00005981 .word 0x00005981 2fb4: 00001aa1 .word 0x00001aa1 2fb8: ffff80ff .word 0xffff80ff 2fbc: 000080ad .word 0x000080ad 00002fc0 <_lv_obj_get_style_ptr>: { 2fc0: b5f0 push {r4, r5, r6, r7, lr} 2fc2: 46de mov lr, fp 2fc4: 4657 mov r7, sl 2fc6: 464e mov r6, r9 2fc8: b5c0 push {r6, r7, lr} 2fca: b084 sub sp, #16 2fcc: 0006 movs r6, r0 2fce: 000d movs r5, r1 2fd0: 0017 movs r7, r2 attr.full = prop_ori >> 8; 2fd2: 0a13 lsrs r3, r2, #8 2fd4: 9301 str r3, [sp, #4] while(parent) { 2fd6: 2800 cmp r0, #0 2fd8: d02c beq.n 3034 <_lv_obj_get_style_ptr+0x74> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 2fda: 4b1f ldr r3, [pc, #124] ; (3058 <_lv_obj_get_style_ptr+0x98>) 2fdc: 469b mov fp, r3 lv_state_t state = lv_obj_get_state(parent, part); 2fde: 4b1f ldr r3, [pc, #124] ; (305c <_lv_obj_get_style_ptr+0x9c>) 2fe0: 469a mov sl, r3 res = _lv_style_list_get_ptr(dsc, prop, &value_act); 2fe2: 4b1f ldr r3, [pc, #124] ; (3060 <_lv_obj_get_style_ptr+0xa0>) 2fe4: 4699 mov r9, r3 2fe6: e009 b.n 2ffc <_lv_obj_get_style_ptr+0x3c> if(res == LV_RES_OK) return value_act; 2fe8: 9803 ldr r0, [sp, #12] } 2fea: b004 add sp, #16 2fec: bc1c pop {r2, r3, r4} 2fee: 4691 mov r9, r2 2ff0: 469a mov sl, r3 2ff2: 46a3 mov fp, r4 2ff4: bdf0 pop {r4, r5, r6, r7, pc} 2ff6: 2500 movs r5, #0 while(parent) { 2ff8: 2e00 cmp r6, #0 2ffa: d01c beq.n 3036 <_lv_obj_get_style_ptr+0x76> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 2ffc: 0029 movs r1, r5 2ffe: 0030 movs r0, r6 3000: 47d8 blx fp 3002: 9000 str r0, [sp, #0] lv_state_t state = lv_obj_get_state(parent, part); 3004: 0029 movs r1, r5 3006: 0030 movs r0, r6 3008: 47d0 blx sl prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 300a: 0204 lsls r4, r0, #8 300c: 193c adds r4, r7, r4 300e: b2a4 uxth r4, r4 res = _lv_style_list_get_ptr(dsc, prop, &value_act); 3010: aa03 add r2, sp, #12 3012: 0021 movs r1, r4 3014: 9800 ldr r0, [sp, #0] 3016: 47c8 blx r9 if(res == LV_RES_OK) return value_act; 3018: 2801 cmp r0, #1 301a: d0e5 beq.n 2fe8 <_lv_obj_get_style_ptr+0x28> if(attr.bits.inherit == 0) break; 301c: 466b mov r3, sp 301e: 791b ldrb r3, [r3, #4] 3020: b25b sxtb r3, r3 3022: 2b00 cmp r3, #0 3024: da07 bge.n 3036 <_lv_obj_get_style_ptr+0x76> if(part != LV_OBJ_PART_MAIN) { 3026: 2d00 cmp r5, #0 3028: d1e5 bne.n 2ff6 <_lv_obj_get_style_ptr+0x36> parent = lv_obj_get_parent(parent); 302a: 0030 movs r0, r6 302c: 4b0d ldr r3, [pc, #52] ; (3064 <_lv_obj_get_style_ptr+0xa4>) 302e: 4798 blx r3 3030: 0006 movs r6, r0 3032: e7e0 b.n 2ff6 <_lv_obj_get_style_ptr+0x36> while(parent) { 3034: 0014 movs r4, r2 switch(prop) { 3036: 4b0c ldr r3, [pc, #48] ; (3068 <_lv_obj_get_style_ptr+0xa8>) 3038: 401c ands r4, r3 303a: 2cbe cmp r4, #190 ; 0xbe 303c: d009 beq.n 3052 <_lv_obj_get_style_ptr+0x92> 303e: 4b0b ldr r3, [pc, #44] ; (306c <_lv_obj_get_style_ptr+0xac>) 3040: 429c cmp r4, r3 3042: d003 beq.n 304c <_lv_obj_get_style_ptr+0x8c> 3044: 2c7e cmp r4, #126 ; 0x7e 3046: d001 beq.n 304c <_lv_obj_get_style_ptr+0x8c> return NULL; 3048: 2000 movs r0, #0 304a: e7ce b.n 2fea <_lv_obj_get_style_ptr+0x2a> return lv_theme_get_font_normal(); 304c: 4b08 ldr r3, [pc, #32] ; (3070 <_lv_obj_get_style_ptr+0xb0>) 304e: 4798 blx r3 3050: e7cb b.n 2fea <_lv_obj_get_style_ptr+0x2a> return &lv_anim_path_def; 3052: 4808 ldr r0, [pc, #32] ; (3074 <_lv_obj_get_style_ptr+0xb4>) 3054: e7c9 b.n 2fea <_lv_obj_get_style_ptr+0x2a> 3056: 46c0 nop ; (mov r8, r8) 3058: 00001cf9 .word 0x00001cf9 305c: 00002d61 .word 0x00002d61 3060: 00005a55 .word 0x00005a55 3064: 00001aa1 .word 0x00001aa1 3068: ffff80ff .word 0xffff80ff 306c: 0000808e .word 0x0000808e 3070: 00011c5d .word 0x00011c5d 3074: 0001c768 .word 0x0001c768 00003078 : { 3078: b570 push {r4, r5, r6, lr} lv_style_trans_t * tr = a->var; 307a: 6804 ldr r4, [r0, #0] lv_style_property_t prop_tmp = tr->prop; 307c: 88a5 ldrh r5, [r4, #4] if((prop_tmp & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/ 307e: 230f movs r3, #15 3080: 402b ands r3, r5 3082: 2b08 cmp r3, #8 3084: dd13 ble.n 30ae else if((prop_tmp & 0xF) < LV_STYLE_ID_OPA) { /*Color*/ 3086: 2b0b cmp r3, #11 3088: dd18 ble.n 30bc else if((prop_tmp & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/ 308a: 2b0d cmp r3, #13 308c: dd1d ble.n 30ca tr->start_value._ptr = _lv_obj_get_style_ptr(tr->obj, tr->part, prop_tmp); 308e: 79a1 ldrb r1, [r4, #6] 3090: 002a movs r2, r5 3092: 6820 ldr r0, [r4, #0] 3094: 4b10 ldr r3, [pc, #64] ; (30d8 ) 3096: 4798 blx r3 3098: 60a0 str r0, [r4, #8] tr->prop = 0; 309a: 2300 movs r3, #0 309c: 80a3 strh r3, [r4, #4] trans_del(tr->obj, tr->part, prop_tmp, tr); 309e: 79a1 ldrb r1, [r4, #6] 30a0: 0023 movs r3, r4 30a2: 002a movs r2, r5 30a4: 6820 ldr r0, [r4, #0] 30a6: 4e0d ldr r6, [pc, #52] ; (30dc ) 30a8: 47b0 blx r6 tr->prop = prop_tmp; 30aa: 80a5 strh r5, [r4, #4] } 30ac: bd70 pop {r4, r5, r6, pc} tr->start_value._int = _lv_obj_get_style_int(tr->obj, tr->part, prop_tmp); 30ae: 79a1 ldrb r1, [r4, #6] 30b0: 002a movs r2, r5 30b2: 6820 ldr r0, [r4, #0] 30b4: 4b0a ldr r3, [pc, #40] ; (30e0 ) 30b6: 4798 blx r3 30b8: 8120 strh r0, [r4, #8] 30ba: e7ee b.n 309a tr->start_value._color = _lv_obj_get_style_color(tr->obj, tr->part, prop_tmp); 30bc: 79a1 ldrb r1, [r4, #6] 30be: 002a movs r2, r5 30c0: 6820 ldr r0, [r4, #0] 30c2: 4b08 ldr r3, [pc, #32] ; (30e4 ) 30c4: 4798 blx r3 30c6: 8120 strh r0, [r4, #8] 30c8: e7e7 b.n 309a tr->start_value._opa = _lv_obj_get_style_opa(tr->obj, tr->part, prop_tmp); 30ca: 79a1 ldrb r1, [r4, #6] 30cc: 002a movs r2, r5 30ce: 6820 ldr r0, [r4, #0] 30d0: 4b05 ldr r3, [pc, #20] ; (30e8 ) 30d2: 4798 blx r3 30d4: 7220 strb r0, [r4, #8] 30d6: e7e0 b.n 309a 30d8: 00002fc1 .word 0x00002fc1 30dc: 00001d29 .word 0x00001d29 30e0: 00002db1 .word 0x00002db1 30e4: 00002e71 .word 0x00002e71 30e8: 00002f15 .word 0x00002f15 000030ec : { 30ec: b5f0 push {r4, r5, r6, r7, lr} 30ee: 46de mov lr, fp 30f0: 4657 mov r7, sl 30f2: 464e mov r6, r9 30f4: 4645 mov r5, r8 30f6: b5e0 push {r5, r6, r7, lr} 30f8: b09d sub sp, #116 ; 0x74 30fa: 0004 movs r4, r0 30fc: 468b mov fp, r1 if(obj->state == new_state) return; 30fe: 233d movs r3, #61 ; 0x3d 3100: 5cc3 ldrb r3, [r0, r3] 3102: 428b cmp r3, r1 3104: d100 bne.n 3108 3106: e208 b.n 351a LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3108: 4bc3 ldr r3, [pc, #780] ; (3418 ) 310a: 4798 blx r3 310c: 2800 cmp r0, #0 310e: d008 beq.n 3122 lv_state_t prev_state = obj->state; 3110: 233d movs r3, #61 ; 0x3d 3112: 5ce2 ldrb r2, [r4, r3] 3114: 4691 mov r9, r2 obj->state = new_state; 3116: 465a mov r2, fp 3118: 54e2 strb r2, [r4, r3] for(part = 0; part < _LV_OBJ_PART_REAL_LAST; part++) { 311a: 2300 movs r3, #0 311c: 9300 str r3, [sp, #0] lv_style_list_t * style_list = lv_obj_get_style_list(obj, part); 311e: 46ca mov sl, r9 3120: e1b2 b.n 3488 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3122: 0022 movs r2, r4 3124: 2300 movs r3, #0 3126: 48bd ldr r0, [pc, #756] ; (341c ) 3128: 49bd ldr r1, [pc, #756] ; (3420 ) 312a: 4788 blx r1 312c: e7fe b.n 312c style_list->skip_trans = 1; 312e: 7973 ldrb r3, [r6, #5] 3130: 2204 movs r2, #4 3132: 4313 orrs r3, r2 3134: 7173 strb r3, [r6, #5] obj->state = prev_state; 3136: 233d movs r3, #61 ; 0x3d 3138: 4699 mov r9, r3 313a: 4652 mov r2, sl 313c: 54e2 strb r2, [r4, r3] lv_style_int_t int1 = _lv_obj_get_style_int(obj, part, prop); 313e: 002a movs r2, r5 3140: 9900 ldr r1, [sp, #0] 3142: 0020 movs r0, r4 3144: 4fb7 ldr r7, [pc, #732] ; (3424 ) 3146: 47b8 blx r7 3148: 9007 str r0, [sp, #28] obj->state = new_state; 314a: 464b mov r3, r9 314c: 465a mov r2, fp 314e: 54e2 strb r2, [r4, r3] lv_style_int_t int2 = _lv_obj_get_style_int(obj, part, prop); 3150: 002a movs r2, r5 3152: 9900 ldr r1, [sp, #0] 3154: 0020 movs r0, r4 3156: 47b8 blx r7 3158: 4680 mov r8, r0 style_list->skip_trans = 0; 315a: 7973 ldrb r3, [r6, #5] 315c: 2204 movs r2, #4 315e: 4393 bics r3, r2 3160: 7173 strb r3, [r6, #5] if(int1 == int2) return NULL; 3162: 9b07 ldr r3, [sp, #28] 3164: 4283 cmp r3, r0 3166: d04b beq.n 3200 obj->state = prev_state; 3168: 263d movs r6, #61 ; 0x3d 316a: 4653 mov r3, sl 316c: 55a3 strb r3, [r4, r6] int1 = _lv_obj_get_style_int(obj, part, prop); 316e: 002a movs r2, r5 3170: 9900 ldr r1, [sp, #0] 3172: 0020 movs r0, r4 3174: 4bab ldr r3, [pc, #684] ; (3424 ) 3176: 4798 blx r3 3178: 0002 movs r2, r0 317a: 4681 mov r9, r0 obj->state = new_state; 317c: 465b mov r3, fp 317e: 55a3 strb r3, [r4, r6] _lv_style_set_int(style_trans, prop, int1); /*Be sure `trans_style` has a valid value */ 3180: 0029 movs r1, r5 3182: 9801 ldr r0, [sp, #4] 3184: 4ba8 ldr r3, [pc, #672] ; (3428 ) 3186: 4798 blx r3 if(prop == LV_STYLE_RADIUS) { 3188: 2d01 cmp r5, #1 318a: d100 bne.n 318e 318c: e094 b.n 32b8 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 318e: 48a7 ldr r0, [pc, #668] ; (342c ) 3190: 4ba7 ldr r3, [pc, #668] ; (3430 ) 3192: 4798 blx r3 3194: 0006 movs r6, r0 LV_ASSERT_MEM(tr); 3196: 4ba0 ldr r3, [pc, #640] ; (3418 ) 3198: 4798 blx r3 319a: 2800 cmp r0, #0 319c: d100 bne.n 31a0 319e: e0a0 b.n 32e2 if(tr == NULL) return NULL; 31a0: 2e00 cmp r6, #0 31a2: d02d beq.n 3200 tr->start_value._int = int1; 31a4: 464b mov r3, r9 31a6: 8133 strh r3, [r6, #8] tr->end_value._int = int2; 31a8: 4643 mov r3, r8 31aa: 81b3 strh r3, [r6, #12] tr->obj = obj; 31ac: 6034 str r4, [r6, #0] tr->prop = props[i]; 31ae: 80b5 strh r5, [r6, #4] tr->part = part; 31b0: 466b mov r3, sp 31b2: 781b ldrb r3, [r3, #0] 31b4: 71b3 strb r3, [r6, #6] lv_anim_init(&a); 31b6: a80c add r0, sp, #48 ; 0x30 31b8: 4b9e ldr r3, [pc, #632] ; (3434 ) 31ba: 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; 31bc: 960c str r6, [sp, #48] ; 0x30 * 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; 31be: 4b9e ldr r3, [pc, #632] ; (3438 ) 31c0: 930d str r3, [sp, #52] ; 0x34 * @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; 31c2: 4b9e ldr r3, [pc, #632] ; (343c ) 31c4: 930e str r3, [sp, #56] ; 0x38 * @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; 31c6: 4b9e ldr r3, [pc, #632] ; (3440 ) 31c8: 930f str r3, [sp, #60] ; 0x3c a->start = start; 31ca: 2300 movs r3, #0 31cc: 9312 str r3, [sp, #72] ; 0x48 a->end = end; 31ce: 33ff adds r3, #255 ; 0xff 31d0: 9313 str r3, [sp, #76] ; 0x4c lv_anim_set_time(&a, time); 31d2: 9b06 ldr r3, [sp, #24] 31d4: 9314 str r3, [sp, #80] ; 0x50 a->act_time = (int32_t)(-delay); 31d6: 9b05 ldr r3, [sp, #20] 31d8: 425b negs r3, r3 31da: 9315 str r3, [sp, #84] ; 0x54 31dc: 9b04 ldr r3, [sp, #16] 31de: 0018 movs r0, r3 31e0: 3008 adds r0, #8 uint8_t * d8 = (uint8_t *)dst; 31e2: aa10 add r2, sp, #64 ; 0x40 *d8 = *s8; 31e4: 7819 ldrb r1, [r3, #0] 31e6: 7011 strb r1, [r2, #0] d8++; 31e8: 3201 adds r2, #1 s8++; 31ea: 3301 adds r3, #1 while(len) { 31ec: 4283 cmp r3, r0 31ee: d1f9 bne.n 31e4 a.early_apply = 0; 31f0: a80c add r0, sp, #48 ; 0x30 31f2: 2236 movs r2, #54 ; 0x36 31f4: 5c83 ldrb r3, [r0, r2] 31f6: 2101 movs r1, #1 31f8: 438b bics r3, r1 31fa: 5483 strb r3, [r0, r2] lv_anim_start(&a); 31fc: 4b91 ldr r3, [pc, #580] ; (3444 ) 31fe: 4798 blx r3 3200: 9b02 ldr r3, [sp, #8] 3202: 3302 adds r3, #2 3204: 9302 str r3, [sp, #8] for(i = 0; i < LV_STYLE_TRANS_NUM_MAX; i++) { 3206: 2b0c cmp r3, #12 3208: d100 bne.n 320c 320a: e137 b.n 347c if(props[i] != 0) { 320c: ab09 add r3, sp, #36 ; 0x24 320e: 9a02 ldr r2, [sp, #8] 3210: 5ad5 ldrh r5, [r2, r3] 3212: 2d00 cmp r5, #0 3214: d0f4 beq.n 3200 _lv_style_list_add_trans_style(style_list); 3216: 9803 ldr r0, [sp, #12] 3218: 4b8b ldr r3, [pc, #556] ; (3448 ) 321a: 4798 blx r3 lv_style_list_t * style_list = lv_obj_get_style_list(obj, part); 321c: 9900 ldr r1, [sp, #0] 321e: 0020 movs r0, r4 3220: 4b8a ldr r3, [pc, #552] ; (344c ) 3222: 4798 blx r3 3224: 0006 movs r6, r0 lv_style_t * style_trans = _lv_style_list_get_transition_style(style_list); 3226: 4b8a ldr r3, [pc, #552] ; (3450 ) 3228: 4798 blx r3 322a: 9001 str r0, [sp, #4] if((prop & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/ 322c: 230f movs r3, #15 322e: 402b ands r3, r5 3230: 2b08 cmp r3, #8 3232: dc00 bgt.n 3236 3234: e77b b.n 312e else if((prop & 0xF) < LV_STYLE_ID_OPA) { /*Color*/ 3236: 2b0b cmp r3, #11 3238: dd59 ble.n 32ee else if((prop & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/ 323a: 2b0d cmp r3, #13 323c: dd00 ble.n 3240 323e: e0a3 b.n 3388 style_list->skip_trans = 1; 3240: 7973 ldrb r3, [r6, #5] 3242: 2204 movs r2, #4 3244: 4313 orrs r3, r2 3246: 7173 strb r3, [r6, #5] obj->state = prev_state; 3248: 233d movs r3, #61 ; 0x3d 324a: 4699 mov r9, r3 324c: 4652 mov r2, sl 324e: 54e2 strb r2, [r4, r3] lv_opa_t o1 = _lv_obj_get_style_opa(obj, part, prop); 3250: 002a movs r2, r5 3252: 9900 ldr r1, [sp, #0] 3254: 0020 movs r0, r4 3256: 4f7f ldr r7, [pc, #508] ; (3454 ) 3258: 47b8 blx r7 325a: 4680 mov r8, r0 obj->state = new_state; 325c: 464b mov r3, r9 325e: 465a mov r2, fp 3260: 54e2 strb r2, [r4, r3] lv_opa_t o2 = _lv_obj_get_style_opa(obj, part, prop); 3262: 002a movs r2, r5 3264: 9900 ldr r1, [sp, #0] 3266: 0020 movs r0, r4 3268: 47b8 blx r7 326a: 0007 movs r7, r0 style_list->skip_trans = 0; 326c: 7973 ldrb r3, [r6, #5] 326e: 2204 movs r2, #4 3270: 4393 bics r3, r2 3272: 7173 strb r3, [r6, #5] if(o1 == o2) return NULL; 3274: 4643 mov r3, r8 3276: 4283 cmp r3, r0 3278: d0c2 beq.n 3200 obj->state = prev_state; 327a: 263d movs r6, #61 ; 0x3d 327c: 4653 mov r3, sl 327e: 55a3 strb r3, [r4, r6] o1 = _lv_obj_get_style_opa(obj, part, prop); 3280: 002a movs r2, r5 3282: 9900 ldr r1, [sp, #0] 3284: 0020 movs r0, r4 3286: 4b73 ldr r3, [pc, #460] ; (3454 ) 3288: 4798 blx r3 328a: 0002 movs r2, r0 328c: 9007 str r0, [sp, #28] obj->state = new_state; 328e: 465b mov r3, fp 3290: 55a3 strb r3, [r4, r6] _lv_style_set_opa(style_trans, prop, o1); /*Be sure `trans_style` has a valid value */ 3292: 0029 movs r1, r5 3294: 9801 ldr r0, [sp, #4] 3296: 4b70 ldr r3, [pc, #448] ; (3458 ) 3298: 4798 blx r3 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 329a: 4864 ldr r0, [pc, #400] ; (342c ) 329c: 4b64 ldr r3, [pc, #400] ; (3430 ) 329e: 4798 blx r3 32a0: 0006 movs r6, r0 LV_ASSERT_MEM(tr); 32a2: 4b5d ldr r3, [pc, #372] ; (3418 ) 32a4: 4798 blx r3 32a6: 2800 cmp r0, #0 32a8: d068 beq.n 337c if(tr == NULL) return NULL; 32aa: 2e00 cmp r6, #0 32ac: d0a8 beq.n 3200 tr->start_value._opa = o1; 32ae: 466b mov r3, sp 32b0: 7f1b ldrb r3, [r3, #28] 32b2: 7233 strb r3, [r6, #8] tr->end_value._opa = o2; 32b4: 7337 strb r7, [r6, #12] 32b6: e779 b.n 31ac if(int1 == LV_RADIUS_CIRCLE || int2 == LV_RADIUS_CIRCLE) { 32b8: 4b68 ldr r3, [pc, #416] ; (345c ) 32ba: 4599 cmp r9, r3 32bc: d100 bne.n 32c0 32be: e133 b.n 3528 32c0: 4598 cmp r8, r3 32c2: d000 beq.n 32c6 32c4: e763 b.n 318e lv_coord_t whalf = lv_obj_get_width(obj) / 2; 32c6: 0020 movs r0, r4 32c8: 4f65 ldr r7, [pc, #404] ; (3460 ) 32ca: 47b8 blx r7 32cc: 0fc6 lsrs r6, r0, #31 32ce: 1836 adds r6, r6, r0 32d0: 1076 asrs r6, r6, #1 32d2: b236 sxth r6, r6 lv_coord_t hhalf = lv_obj_get_width(obj) / 2; 32d4: 0020 movs r0, r4 32d6: 47b8 blx r7 32d8: 0fc3 lsrs r3, r0, #31 32da: 181b adds r3, r3, r0 32dc: 105b asrs r3, r3, #1 32de: b21b sxth r3, r3 32e0: e13a b.n 3558 LV_ASSERT_MEM(tr); 32e2: 0032 movs r2, r6 32e4: 2300 movs r3, #0 32e6: 485f ldr r0, [pc, #380] ; (3464 ) 32e8: 494d ldr r1, [pc, #308] ; (3420 ) 32ea: 4788 blx r1 32ec: e7fe b.n 32ec style_list->skip_trans = 1; 32ee: 7973 ldrb r3, [r6, #5] 32f0: 2204 movs r2, #4 32f2: 4313 orrs r3, r2 32f4: 7173 strb r3, [r6, #5] obj->state = prev_state; 32f6: 233d movs r3, #61 ; 0x3d 32f8: 4699 mov r9, r3 32fa: 4652 mov r2, sl 32fc: 54e2 strb r2, [r4, r3] lv_color_t c1 = _lv_obj_get_style_color(obj, part, prop); 32fe: 002a movs r2, r5 3300: 9900 ldr r1, [sp, #0] 3302: 0020 movs r0, r4 3304: 4b58 ldr r3, [pc, #352] ; (3468 ) 3306: 4698 mov r8, r3 3308: 4798 blx r3 330a: 1c07 adds r7, r0, #0 obj->state = new_state; 330c: 464b mov r3, r9 330e: 465a mov r2, fp 3310: 54e2 strb r2, [r4, r3] lv_color_t c2 = _lv_obj_get_style_color(obj, part, prop); 3312: 002a movs r2, r5 3314: 9900 ldr r1, [sp, #0] 3316: 0020 movs r0, r4 3318: 47c0 blx r8 331a: 466b mov r3, sp 331c: 8398 strh r0, [r3, #28] style_list->skip_trans = 0; 331e: 7973 ldrb r3, [r6, #5] 3320: 2204 movs r2, #4 3322: 4393 bics r3, r2 3324: 7173 strb r3, [r6, #5] if(c1.full == c2.full) return NULL; 3326: b2bf uxth r7, r7 3328: b283 uxth r3, r0 332a: 429f cmp r7, r3 332c: d100 bne.n 3330 332e: e767 b.n 3200 obj->state = prev_state; 3330: 263d movs r6, #61 ; 0x3d 3332: 4653 mov r3, sl 3334: 55a3 strb r3, [r4, r6] c1 = _lv_obj_get_style_color(obj, part, prop); 3336: 002a movs r2, r5 3338: 9900 ldr r1, [sp, #0] 333a: 0020 movs r0, r4 333c: 4b4a ldr r3, [pc, #296] ; (3468 ) 333e: 4798 blx r3 3340: 1c07 adds r7, r0, #0 obj->state = new_state; 3342: 465b mov r3, fp 3344: 55a3 strb r3, [r4, r6] _lv_style_set_color(style_trans, prop, c1); /*Be sure `trans_style` has a valid value */ 3346: 1c02 adds r2, r0, #0 3348: 0029 movs r1, r5 334a: 9801 ldr r0, [sp, #4] 334c: 4b47 ldr r3, [pc, #284] ; (346c ) 334e: 4798 blx r3 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3350: 4836 ldr r0, [pc, #216] ; (342c ) 3352: 4b37 ldr r3, [pc, #220] ; (3430 ) 3354: 4798 blx r3 3356: 0006 movs r6, r0 LV_ASSERT_MEM(tr); 3358: 4b2f ldr r3, [pc, #188] ; (3418 ) 335a: 4798 blx r3 335c: 2800 cmp r0, #0 335e: d007 beq.n 3370 if(tr == NULL) return NULL; 3360: 2e00 cmp r6, #0 3362: d100 bne.n 3366 3364: e74c b.n 3200 tr->start_value._color = c1; 3366: 8137 strh r7, [r6, #8] tr->end_value._color = c2; 3368: 466b mov r3, sp 336a: 8b9b ldrh r3, [r3, #28] 336c: 81b3 strh r3, [r6, #12] 336e: e71d b.n 31ac LV_ASSERT_MEM(tr); 3370: 0032 movs r2, r6 3372: 2300 movs r3, #0 3374: 483b ldr r0, [pc, #236] ; (3464 ) 3376: 492a ldr r1, [pc, #168] ; (3420 ) 3378: 4788 blx r1 337a: e7fe b.n 337a LV_ASSERT_MEM(tr); 337c: 0032 movs r2, r6 337e: 2300 movs r3, #0 3380: 4838 ldr r0, [pc, #224] ; (3464 ) 3382: 4927 ldr r1, [pc, #156] ; (3420 ) 3384: 4788 blx r1 3386: e7fe b.n 3386 obj->state = prev_state; 3388: 233d movs r3, #61 ; 0x3d 338a: 4699 mov r9, r3 338c: 4652 mov r2, sl 338e: 54e2 strb r2, [r4, r3] style_list->skip_trans = 1; 3390: 7973 ldrb r3, [r6, #5] 3392: 2204 movs r2, #4 3394: 4313 orrs r3, r2 3396: 7173 strb r3, [r6, #5] const void * p1 = _lv_obj_get_style_ptr(obj, part, prop); 3398: 002a movs r2, r5 339a: 9900 ldr r1, [sp, #0] 339c: 0020 movs r0, r4 339e: 4f34 ldr r7, [pc, #208] ; (3470 ) 33a0: 47b8 blx r7 33a2: 9008 str r0, [sp, #32] obj->state = new_state; 33a4: 464b mov r3, r9 33a6: 465a mov r2, fp 33a8: 54e2 strb r2, [r4, r3] const void * p2 = _lv_obj_get_style_ptr(obj, part, prop); 33aa: 002a movs r2, r5 33ac: 9900 ldr r1, [sp, #0] 33ae: 0020 movs r0, r4 33b0: 47b8 blx r7 33b2: 0007 movs r7, r0 33b4: 900c str r0, [sp, #48] ; 0x30 style_list->skip_trans = 0; 33b6: 7973 ldrb r3, [r6, #5] 33b8: 2204 movs r2, #4 33ba: 4393 bics r3, r2 33bc: 7173 strb r3, [r6, #5] if(memcmp(&p1, &p2, sizeof(const void *)) == 0) return NULL; 33be: a90c add r1, sp, #48 ; 0x30 33c0: a808 add r0, sp, #32 33c2: 4b2c ldr r3, [pc, #176] ; (3474 ) 33c4: 4798 blx r3 33c6: 2800 cmp r0, #0 33c8: d100 bne.n 33cc 33ca: e719 b.n 3200 obj->state = prev_state; 33cc: 263d movs r6, #61 ; 0x3d 33ce: 4653 mov r3, sl 33d0: 55a3 strb r3, [r4, r6] p1 = _lv_obj_get_style_ptr(obj, part, prop); 33d2: 002a movs r2, r5 33d4: 9900 ldr r1, [sp, #0] 33d6: 0020 movs r0, r4 33d8: 4b25 ldr r3, [pc, #148] ; (3470 ) 33da: 4798 blx r3 33dc: 4681 mov r9, r0 33de: 9008 str r0, [sp, #32] obj->state = new_state; 33e0: 465b mov r3, fp 33e2: 55a3 strb r3, [r4, r6] _lv_style_set_ptr(style_trans, prop, p1); /*Be sure `trans_style` has a valid value */ 33e4: 0002 movs r2, r0 33e6: 0029 movs r1, r5 33e8: 9801 ldr r0, [sp, #4] 33ea: 4b23 ldr r3, [pc, #140] ; (3478 ) 33ec: 4798 blx r3 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 33ee: 480f ldr r0, [pc, #60] ; (342c ) 33f0: 4b0f ldr r3, [pc, #60] ; (3430 ) 33f2: 4798 blx r3 33f4: 0006 movs r6, r0 LV_ASSERT_MEM(tr); 33f6: 4b08 ldr r3, [pc, #32] ; (3418 ) 33f8: 4798 blx r3 33fa: 2800 cmp r0, #0 33fc: d006 beq.n 340c if(tr == NULL) return NULL; 33fe: 2e00 cmp r6, #0 3400: d100 bne.n 3404 3402: e6fd b.n 3200 tr->start_value._ptr = p1; 3404: 464b mov r3, r9 3406: 60b3 str r3, [r6, #8] tr->end_value._ptr = p2; 3408: 60f7 str r7, [r6, #12] 340a: e6cf b.n 31ac LV_ASSERT_MEM(tr); 340c: 0032 movs r2, r6 340e: 2300 movs r3, #0 3410: 4814 ldr r0, [pc, #80] ; (3464 ) 3412: 4903 ldr r1, [pc, #12] ; (3420 ) 3414: 4788 blx r1 3416: e7fe b.n 3416 3418: 0000147d .word 0x0000147d 341c: 0001878c .word 0x0001878c 3420: 00001485 .word 0x00001485 3424: 00002db1 .word 0x00002db1 3428: 00004cf5 .word 0x00004cf5 342c: 20004d68 .word 0x20004d68 3430: 000105cd .word 0x000105cd 3434: 0000fa4d .word 0x0000fa4d 3438: 00002799 .word 0x00002799 343c: 00003079 .word 0x00003079 3440: 00001e01 .word 0x00001e01 3444: 0000fb0d .word 0x0000fb0d 3448: 00005769 .word 0x00005769 344c: 00001cf9 .word 0x00001cf9 3450: 00005621 .word 0x00005621 3454: 00002f15 .word 0x00002f15 3458: 00004fb5 .word 0x00004fb5 345c: 00007fff .word 0x00007fff 3460: 00001c99 .word 0x00001c99 3464: 00018724 .word 0x00018724 3468: 00002e71 .word 0x00002e71 346c: 00004e55 .word 0x00004e55 3470: 00002fc1 .word 0x00002fc1 3474: 00017e1d .word 0x00017e1d 3478: 00005109 .word 0x00005109 for(part = 0; part < _LV_OBJ_PART_REAL_LAST; part++) { 347c: 9b00 ldr r3, [sp, #0] 347e: 3301 adds r3, #1 3480: b2db uxtb r3, r3 3482: 9300 str r3, [sp, #0] 3484: 2b40 cmp r3, #64 ; 0x40 3486: d044 beq.n 3512 lv_style_list_t * style_list = lv_obj_get_style_list(obj, part); 3488: 9900 ldr r1, [sp, #0] 348a: 0020 movs r0, r4 348c: 4b36 ldr r3, [pc, #216] ; (3568 ) 348e: 4798 blx r3 3490: 9003 str r0, [sp, #12] if(style_list == NULL) break; /*No more style lists*/ 3492: 2800 cmp r0, #0 3494: d03d beq.n 3512 if(style_list->ignore_trans) continue; 3496: 7943 ldrb r3, [r0, #5] 3498: 071b lsls r3, r3, #28 349a: d4ef bmi.n 347c _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) 349c: 22b0 movs r2, #176 ; 0xb0 349e: 9e00 ldr r6, [sp, #0] 34a0: 0031 movs r1, r6 34a2: 0020 movs r0, r4 34a4: 4b31 ldr r3, [pc, #196] ; (356c ) 34a6: 4798 blx r3 34a8: 9006 str r0, [sp, #24] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_DELAY, transition_delay, lv_style_int_t, _int, scalar) 34aa: 22b1 movs r2, #177 ; 0xb1 34ac: 0031 movs r1, r6 34ae: 0020 movs r0, r4 34b0: 4b2e ldr r3, [pc, #184] ; (356c ) 34b2: 4798 blx r3 34b4: 9005 str r0, [sp, #20] _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) 34b6: 22be movs r2, #190 ; 0xbe 34b8: 0031 movs r1, r6 34ba: 0020 movs r0, r4 34bc: 4b2c ldr r3, [pc, #176] ; (3570 ) 34be: 4798 blx r3 34c0: 9004 str r0, [sp, #16] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_1, transition_prop_1, lv_style_int_t, _int, scalar) 34c2: 22b2 movs r2, #178 ; 0xb2 34c4: 0031 movs r1, r6 34c6: 0020 movs r0, r4 34c8: 4b28 ldr r3, [pc, #160] ; (356c ) 34ca: 4798 blx r3 props[0] = lv_obj_get_style_transition_prop_1(obj, part); 34cc: ad09 add r5, sp, #36 ; 0x24 34ce: 8028 strh r0, [r5, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_2, transition_prop_2, lv_style_int_t, _int, scalar) 34d0: 22b3 movs r2, #179 ; 0xb3 34d2: 0031 movs r1, r6 34d4: 0020 movs r0, r4 34d6: 4b25 ldr r3, [pc, #148] ; (356c ) 34d8: 4798 blx r3 props[1] = lv_obj_get_style_transition_prop_2(obj, part); 34da: 8068 strh r0, [r5, #2] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_3, transition_prop_3, lv_style_int_t, _int, scalar) 34dc: 22b4 movs r2, #180 ; 0xb4 34de: 0031 movs r1, r6 34e0: 0020 movs r0, r4 34e2: 4b22 ldr r3, [pc, #136] ; (356c ) 34e4: 4798 blx r3 props[2] = lv_obj_get_style_transition_prop_3(obj, part); 34e6: 80a8 strh r0, [r5, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_4, transition_prop_4, lv_style_int_t, _int, scalar) 34e8: 22b5 movs r2, #181 ; 0xb5 34ea: 0031 movs r1, r6 34ec: 0020 movs r0, r4 34ee: 4b1f ldr r3, [pc, #124] ; (356c ) 34f0: 4798 blx r3 props[3] = lv_obj_get_style_transition_prop_4(obj, part); 34f2: 80e8 strh r0, [r5, #6] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 34f4: 22b6 movs r2, #182 ; 0xb6 34f6: 0031 movs r1, r6 34f8: 0020 movs r0, r4 34fa: 4b1c ldr r3, [pc, #112] ; (356c ) 34fc: 4798 blx r3 props[4] = lv_obj_get_style_transition_prop_5(obj, part); 34fe: 8128 strh r0, [r5, #8] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 3500: 22b7 movs r2, #183 ; 0xb7 3502: 0031 movs r1, r6 3504: 0020 movs r0, r4 3506: 4b19 ldr r3, [pc, #100] ; (356c ) 3508: 4798 blx r3 props[5] = lv_obj_get_style_transition_prop_6(obj, part); 350a: 8168 strh r0, [r5, #10] 350c: 2300 movs r3, #0 350e: 9302 str r3, [sp, #8] 3510: e67c b.n 320c lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 3512: 21ff movs r1, #255 ; 0xff 3514: 0020 movs r0, r4 3516: 4b17 ldr r3, [pc, #92] ; (3574 ) 3518: 4798 blx r3 } 351a: b01d add sp, #116 ; 0x74 351c: bc3c pop {r2, r3, r4, r5} 351e: 4690 mov r8, r2 3520: 4699 mov r9, r3 3522: 46a2 mov sl, r4 3524: 46ab mov fp, r5 3526: bdf0 pop {r4, r5, r6, r7, pc} lv_coord_t whalf = lv_obj_get_width(obj) / 2; 3528: 0020 movs r0, r4 352a: 4f13 ldr r7, [pc, #76] ; (3578 ) 352c: 47b8 blx r7 352e: 0fc6 lsrs r6, r0, #31 3530: 1836 adds r6, r6, r0 3532: 1076 asrs r6, r6, #1 3534: b236 sxth r6, r6 lv_coord_t hhalf = lv_obj_get_width(obj) / 2; 3536: 0020 movs r0, r4 3538: 47b8 blx r7 353a: 0fc3 lsrs r3, r0, #31 353c: 181b adds r3, r3, r0 353e: 105b asrs r3, r3, #1 3540: b21b sxth r3, r3 if(int1 == LV_RADIUS_CIRCLE) int1 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3542: 1c71 adds r1, r6, #1 3544: 1c5a adds r2, r3, #1 3546: 428a cmp r2, r1 3548: dd00 ble.n 354c 354a: 000a movs r2, r1 354c: b212 sxth r2, r2 354e: 4691 mov r9, r2 if(int2 == LV_RADIUS_CIRCLE) int2 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3550: 4a0a ldr r2, [pc, #40] ; (357c ) 3552: 4590 cmp r8, r2 3554: d000 beq.n 3558 3556: e61a b.n 318e 3558: 3601 adds r6, #1 355a: 3301 adds r3, #1 355c: 42b3 cmp r3, r6 355e: dd00 ble.n 3562 3560: 0033 movs r3, r6 3562: b21b sxth r3, r3 3564: 4698 mov r8, r3 3566: e612 b.n 318e 3568: 00001cf9 .word 0x00001cf9 356c: 00002db1 .word 0x00002db1 3570: 00002fc1 .word 0x00002fc1 3574: 0000258d .word 0x0000258d 3578: 00001c99 .word 0x00001c99 357c: 00007fff .word 0x00007fff 00003580 : { 3580: b570 push {r4, r5, r6, lr} 3582: 0004 movs r4, r0 3584: 000d movs r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3586: 4b0a ldr r3, [pc, #40] ; (35b0 ) 3588: 4798 blx r3 358a: 2800 cmp r0, #0 358c: d009 beq.n 35a2 lv_state_t new_state = obj->state | state; 358e: 233d movs r3, #61 ; 0x3d 3590: 5ce3 ldrb r3, [r4, r3] 3592: 0029 movs r1, r5 3594: 4319 orrs r1, r3 if(obj->state != new_state) { 3596: 428b cmp r3, r1 3598: d002 beq.n 35a0 lv_obj_set_state(obj, new_state); 359a: 0020 movs r0, r4 359c: 4b05 ldr r3, [pc, #20] ; (35b4 ) 359e: 4798 blx r3 } 35a0: bd70 pop {r4, r5, r6, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 35a2: 0022 movs r2, r4 35a4: 2300 movs r3, #0 35a6: 4804 ldr r0, [pc, #16] ; (35b8 ) 35a8: 4904 ldr r1, [pc, #16] ; (35bc ) 35aa: 4788 blx r1 35ac: e7fe b.n 35ac 35ae: 46c0 nop ; (mov r8, r8) 35b0: 0000147d .word 0x0000147d 35b4: 000030ed .word 0x000030ed 35b8: 0001878c .word 0x0001878c 35bc: 00001485 .word 0x00001485 000035c0 : { 35c0: b570 push {r4, r5, r6, lr} 35c2: 0004 movs r4, r0 35c4: 000d movs r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 35c6: 4b0a ldr r3, [pc, #40] ; (35f0 ) 35c8: 4798 blx r3 35ca: 2800 cmp r0, #0 35cc: d009 beq.n 35e2 lv_state_t new_state = obj->state & (~state); 35ce: 233d movs r3, #61 ; 0x3d 35d0: 5ce3 ldrb r3, [r4, r3] 35d2: 0019 movs r1, r3 35d4: 43a9 bics r1, r5 if(obj->state != new_state) { 35d6: 428b cmp r3, r1 35d8: d002 beq.n 35e0 lv_obj_set_state(obj, new_state); 35da: 0020 movs r0, r4 35dc: 4b05 ldr r3, [pc, #20] ; (35f4 ) 35de: 4798 blx r3 } 35e0: bd70 pop {r4, r5, r6, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 35e2: 0022 movs r2, r4 35e4: 2300 movs r3, #0 35e6: 4804 ldr r0, [pc, #16] ; (35f8 ) 35e8: 4904 ldr r1, [pc, #16] ; (35fc ) 35ea: 4788 blx r1 35ec: e7fe b.n 35ec 35ee: 46c0 nop ; (mov r8, r8) 35f0: 0000147d .word 0x0000147d 35f4: 000030ed .word 0x000030ed 35f8: 0001878c .word 0x0001878c 35fc: 00001485 .word 0x00001485 00003600 : { 3600: b510 push {r4, lr} 3602: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3604: 4b05 ldr r3, [pc, #20] ; (361c ) 3606: 4798 blx r3 3608: 2800 cmp r0, #0 360a: d001 beq.n 3610 return obj->group_p; 360c: 6ba0 ldr r0, [r4, #56] ; 0x38 } 360e: bd10 pop {r4, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3610: 0022 movs r2, r4 3612: 2300 movs r3, #0 3614: 4802 ldr r0, [pc, #8] ; (3620 ) 3616: 4903 ldr r1, [pc, #12] ; (3624 ) 3618: 4788 blx r1 361a: e7fe b.n 361a 361c: 0000147d .word 0x0000147d 3620: 0001878c .word 0x0001878c 3624: 00001485 .word 0x00001485 00003628 : { 3628: b510 push {r4, lr} 362a: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 362c: 4b0a ldr r3, [pc, #40] ; (3658 ) 362e: 4798 blx r3 3630: 2800 cmp r0, #0 3632: d009 beq.n 3648 if(obj->group_p) { 3634: 6ba0 ldr r0, [r4, #56] ; 0x38 3636: 2800 cmp r0, #0 3638: d00c beq.n 3654 if(lv_group_get_focused(obj->group_p) == obj) return true; 363a: 4b08 ldr r3, [pc, #32] ; (365c ) 363c: 4798 blx r3 363e: 1a20 subs r0, r4, r0 3640: 4244 negs r4, r0 3642: 4160 adcs r0, r4 3644: b2c0 uxtb r0, r0 } 3646: bd10 pop {r4, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3648: 0022 movs r2, r4 364a: 2300 movs r3, #0 364c: 4804 ldr r0, [pc, #16] ; (3660 ) 364e: 4905 ldr r1, [pc, #20] ; (3664 ) 3650: 4788 blx r1 3652: e7fe b.n 3652 return false; 3654: 2000 movs r0, #0 3656: e7f6 b.n 3646 3658: 0000147d .word 0x0000147d 365c: 00001745 .word 0x00001745 3660: 0001878c .word 0x0001878c 3664: 00001485 .word 0x00001485 00003668 : { 3668: b510 push {r4, lr} if(buf->type[i] == NULL) break; 366a: 6803 ldr r3, [r0, #0] 366c: 2b00 cmp r3, #0 366e: d00d beq.n 368c 3670: 1d02 adds r2, r0, #4 for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/ 3672: 2301 movs r3, #1 if(buf->type[i] == NULL) break; 3674: 6814 ldr r4, [r2, #0] 3676: 2c00 cmp r4, #0 3678: d004 beq.n 3684 for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/ 367a: 3301 adds r3, #1 367c: b2db uxtb r3, r3 367e: 3204 adds r2, #4 3680: 2b07 cmp r3, #7 3682: d1f7 bne.n 3674 buf->type[i] = name; 3684: 009b lsls r3, r3, #2 3686: 5019 str r1, [r3, r0] } 3688: 2001 movs r0, #1 368a: bd10 pop {r4, pc} for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/ 368c: 2300 movs r3, #0 368e: e7f9 b.n 3684 00003690 : { 3690: b5f0 push {r4, r5, r6, r7, lr} 3692: 46ce mov lr, r9 3694: b500 push {lr} 3696: b082 sub sp, #8 3698: 0005 movs r5, r0 369a: 000e movs r6, r1 369c: 0014 movs r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 369e: 2201 movs r2, #1 36a0: 4bc8 ldr r3, [pc, #800] ; (39c4 ) 36a2: 4798 blx r3 draw_dsc->radius = lv_obj_get_style_radius(obj, part); 36a4: 8020 strh r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 36a6: 4ac8 ldr r2, [pc, #800] ; (39c8 ) 36a8: 0031 movs r1, r6 36aa: 0028 movs r0, r5 36ac: 4bc7 ldr r3, [pc, #796] ; (39cc ) 36ae: 4798 blx r3 36b0: 9001 str r0, [sp, #4] 36b2: 0007 movs r7, r0 if(opa_scale <= LV_OPA_MIN) { 36b4: 2805 cmp r0, #5 36b6: d935 bls.n 3724 if(draw_dsc->bg_opa != LV_OPA_TRANSP) { 36b8: 7b23 ldrb r3, [r4, #12] 36ba: 2b00 cmp r3, #0 36bc: d13f bne.n 373e if(draw_dsc->border_opa != LV_OPA_TRANSP) { 36be: 7d23 ldrb r3, [r4, #20] 36c0: 2b00 cmp r3, #0 36c2: d000 beq.n 36c6 36c4: e06c b.n 37a0 if(draw_dsc->outline_opa != LV_OPA_TRANSP) { 36c6: 7f23 ldrb r3, [r4, #28] 36c8: 2b00 cmp r3, #0 36ca: d000 beq.n 36ce 36cc: e08f b.n 37ee if(draw_dsc->pattern_opa != LV_OPA_TRANSP) { 36ce: 2336 movs r3, #54 ; 0x36 36d0: 5ce3 ldrb r3, [r4, r3] 36d2: 2b00 cmp r3, #0 36d4: d000 beq.n 36d8 36d6: e0af b.n 3838 if(draw_dsc->shadow_opa > LV_OPA_MIN) { 36d8: 2328 movs r3, #40 ; 0x28 36da: 5ce3 ldrb r3, [r4, r3] 36dc: 2b05 cmp r3, #5 36de: d900 bls.n 36e2 36e0: e0f7 b.n 38d2 if(draw_dsc->value_opa > LV_OPA_MIN) { 36e2: 2344 movs r3, #68 ; 0x44 36e4: 5ce3 ldrb r3, [r4, r3] 36e6: 2b05 cmp r3, #5 36e8: d900 bls.n 36ec 36ea: e123 b.n 3934 if(opa_scale < LV_OPA_MAX) { 36ec: 2ff9 cmp r7, #249 ; 0xf9 36ee: d822 bhi.n 3736 draw_dsc->bg_opa = (uint16_t)((uint16_t)draw_dsc->bg_opa * opa_scale) >> 8; 36f0: 466b mov r3, sp 36f2: 889b ldrh r3, [r3, #4] 36f4: 7b22 ldrb r2, [r4, #12] 36f6: 435a muls r2, r3 36f8: 0a12 lsrs r2, r2, #8 36fa: 7322 strb r2, [r4, #12] draw_dsc->border_opa = (uint16_t)((uint16_t)draw_dsc->border_opa * opa_scale) >> 8; 36fc: 7d22 ldrb r2, [r4, #20] 36fe: 435a muls r2, r3 3700: 0a12 lsrs r2, r2, #8 3702: 7522 strb r2, [r4, #20] draw_dsc->shadow_opa = (uint16_t)((uint16_t)draw_dsc->shadow_opa * opa_scale) >> 8; 3704: 2128 movs r1, #40 ; 0x28 3706: 5c62 ldrb r2, [r4, r1] 3708: 435a muls r2, r3 370a: 0a12 lsrs r2, r2, #8 370c: 5462 strb r2, [r4, r1] draw_dsc->pattern_opa = (uint16_t)((uint16_t)draw_dsc->pattern_opa * opa_scale) >> 8; 370e: 310e adds r1, #14 3710: 5c62 ldrb r2, [r4, r1] 3712: 435a muls r2, r3 3714: 0a12 lsrs r2, r2, #8 3716: 5462 strb r2, [r4, r1] draw_dsc->value_opa = (uint16_t)((uint16_t)draw_dsc->value_opa * opa_scale) >> 8; 3718: 2244 movs r2, #68 ; 0x44 371a: 5ca7 ldrb r7, [r4, r2] 371c: 435f muls r7, r3 371e: 0a3f lsrs r7, r7, #8 3720: 54a7 strb r7, [r4, r2] 3722: e008 b.n 3736 draw_dsc->bg_opa = LV_OPA_TRANSP; 3724: 2300 movs r3, #0 3726: 7323 strb r3, [r4, #12] draw_dsc->border_opa = LV_OPA_TRANSP; 3728: 7523 strb r3, [r4, #20] draw_dsc->shadow_opa = LV_OPA_TRANSP; 372a: 2228 movs r2, #40 ; 0x28 372c: 54a3 strb r3, [r4, r2] draw_dsc->pattern_opa = LV_OPA_TRANSP; 372e: 320e adds r2, #14 3730: 54a3 strb r3, [r4, r2] draw_dsc->value_opa = LV_OPA_TRANSP; 3732: 320e adds r2, #14 3734: 54a3 strb r3, [r4, r2] } 3736: b002 add sp, #8 3738: bc04 pop {r2} 373a: 4691 mov r9, r2 373c: bdf0 pop {r4, r5, r6, r7, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 373e: 222c movs r2, #44 ; 0x2c 3740: 0031 movs r1, r6 3742: 0028 movs r0, r5 3744: 4ba1 ldr r3, [pc, #644] ; (39cc ) 3746: 4798 blx r3 draw_dsc->bg_opa = lv_obj_get_style_bg_opa(obj, part); 3748: 7320 strb r0, [r4, #12] if(draw_dsc->bg_opa > LV_OPA_MIN) { 374a: 2805 cmp r0, #5 374c: d9b7 bls.n 36be _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 374e: 2229 movs r2, #41 ; 0x29 3750: 0031 movs r1, r6 3752: 0028 movs r0, r5 3754: 4b9e ldr r3, [pc, #632] ; (39d0 ) 3756: 4798 blx r3 draw_dsc->bg_color = lv_obj_get_style_bg_color(obj, part); 3758: 8060 strh r0, [r4, #2] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_DIR, bg_grad_dir, lv_grad_dir_t, _int, scalar) 375a: 2223 movs r2, #35 ; 0x23 375c: 0031 movs r1, r6 375e: 0028 movs r0, r5 3760: 4b98 ldr r3, [pc, #608] ; (39c4 ) 3762: 4798 blx r3 3764: b2c0 uxtb r0, r0 draw_dsc->bg_grad_dir = lv_obj_get_style_bg_grad_dir(obj, part); 3766: 71a0 strb r0, [r4, #6] if(draw_dsc->bg_grad_dir != LV_GRAD_DIR_NONE) { 3768: 2800 cmp r0, #0 376a: d106 bne.n 377a _LV_OBJ_STYLE_SET_GET_DECLARE(BG_BLEND_MODE, bg_blend_mode, lv_blend_mode_t, _int, scalar) 376c: 2220 movs r2, #32 376e: 0031 movs r1, r6 3770: 0028 movs r0, r5 3772: 4b94 ldr r3, [pc, #592] ; (39c4 ) 3774: 4798 blx r3 draw_dsc->bg_blend_mode = lv_obj_get_style_bg_blend_mode(obj, part); 3776: 7360 strb r0, [r4, #13] 3778: e7a1 b.n 36be _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_COLOR, bg_grad_color, lv_color_t, _color, nonscalar) 377a: 222a movs r2, #42 ; 0x2a 377c: 0031 movs r1, r6 377e: 0028 movs r0, r5 3780: 4b93 ldr r3, [pc, #588] ; (39d0 ) 3782: 4798 blx r3 draw_dsc->bg_grad_color = lv_obj_get_style_bg_grad_color(obj, part); 3784: 80a0 strh r0, [r4, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_MAIN_STOP, bg_main_stop, lv_style_int_t, _int, scalar) 3786: 2221 movs r2, #33 ; 0x21 3788: 0031 movs r1, r6 378a: 0028 movs r0, r5 378c: 4b8d ldr r3, [pc, #564] ; (39c4 ) 378e: 4699 mov r9, r3 3790: 4798 blx r3 draw_dsc->bg_main_color_stop = lv_obj_get_style_bg_main_stop(obj, part); 3792: 8120 strh r0, [r4, #8] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_STOP, bg_grad_stop, lv_style_int_t, _int, scalar) 3794: 2222 movs r2, #34 ; 0x22 3796: 0031 movs r1, r6 3798: 0028 movs r0, r5 379a: 47c8 blx r9 draw_dsc->bg_grad_color_stop = lv_obj_get_style_bg_grad_stop(obj, part); 379c: 8160 strh r0, [r4, #10] 379e: e7e5 b.n 376c _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 37a0: 2230 movs r2, #48 ; 0x30 37a2: 0031 movs r1, r6 37a4: 0028 movs r0, r5 37a6: 4b87 ldr r3, [pc, #540] ; (39c4 ) 37a8: 4798 blx r3 draw_dsc->border_width = lv_obj_get_style_border_width(obj, part); 37aa: 8220 strh r0, [r4, #16] if(draw_dsc->border_width) { 37ac: 2800 cmp r0, #0 37ae: d100 bne.n 37b2 37b0: e789 b.n 36c6 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar) 37b2: 223c movs r2, #60 ; 0x3c 37b4: 0031 movs r1, r6 37b6: 0028 movs r0, r5 37b8: 4b84 ldr r3, [pc, #528] ; (39cc ) 37ba: 4798 blx r3 draw_dsc->border_opa = lv_obj_get_style_border_opa(obj, part); 37bc: 7520 strb r0, [r4, #20] if(draw_dsc->border_opa > LV_OPA_MIN) { 37be: 2805 cmp r0, #5 37c0: d806 bhi.n 37d0 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_BLEND_MODE, border_blend_mode, lv_blend_mode_t, _int, scalar) 37c2: 2232 movs r2, #50 ; 0x32 37c4: 0031 movs r1, r6 37c6: 0028 movs r0, r5 37c8: 4b7e ldr r3, [pc, #504] ; (39c4 ) 37ca: 4798 blx r3 draw_dsc->border_blend_mode = lv_obj_get_style_border_blend_mode(obj, part); 37cc: 7560 strb r0, [r4, #21] 37ce: e77a b.n 36c6 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 37d0: 2231 movs r2, #49 ; 0x31 37d2: 0031 movs r1, r6 37d4: 0028 movs r0, r5 37d6: 4b7b ldr r3, [pc, #492] ; (39c4 ) 37d8: 4798 blx r3 draw_dsc->border_side = lv_obj_get_style_border_side(obj, part); 37da: 23ff movs r3, #255 ; 0xff 37dc: 4018 ands r0, r3 37de: 8260 strh r0, [r4, #18] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 37e0: 2239 movs r2, #57 ; 0x39 37e2: 0031 movs r1, r6 37e4: 0028 movs r0, r5 37e6: 4b7a ldr r3, [pc, #488] ; (39d0 ) 37e8: 4798 blx r3 draw_dsc->border_color = lv_obj_get_style_border_color(obj, part); 37ea: 81e0 strh r0, [r4, #14] 37ec: e7e9 b.n 37c2 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 37ee: 2240 movs r2, #64 ; 0x40 37f0: 0031 movs r1, r6 37f2: 0028 movs r0, r5 37f4: 4b73 ldr r3, [pc, #460] ; (39c4 ) 37f6: 4798 blx r3 draw_dsc->outline_width = lv_obj_get_style_outline_width(obj, part); 37f8: 8320 strh r0, [r4, #24] if(draw_dsc->outline_width) { 37fa: 2800 cmp r0, #0 37fc: d100 bne.n 3800 37fe: e766 b.n 36ce _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 3800: 224c movs r2, #76 ; 0x4c 3802: 0031 movs r1, r6 3804: 0028 movs r0, r5 3806: 4b71 ldr r3, [pc, #452] ; (39cc ) 3808: 4798 blx r3 draw_dsc->outline_opa = lv_obj_get_style_outline_opa(obj, part); 380a: 7720 strb r0, [r4, #28] if(draw_dsc->outline_opa > LV_OPA_MIN) { 380c: 2805 cmp r0, #5 380e: d806 bhi.n 381e _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_BLEND_MODE, outline_blend_mode, lv_blend_mode_t, _int, scalar) 3810: 2242 movs r2, #66 ; 0x42 3812: 0031 movs r1, r6 3814: 0028 movs r0, r5 3816: 4b6b ldr r3, [pc, #428] ; (39c4 ) 3818: 4798 blx r3 draw_dsc->outline_blend_mode = lv_obj_get_style_outline_blend_mode(obj, part); 381a: 7760 strb r0, [r4, #29] 381c: e757 b.n 36ce _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar) 381e: 2241 movs r2, #65 ; 0x41 3820: 0031 movs r1, r6 3822: 0028 movs r0, r5 3824: 4b67 ldr r3, [pc, #412] ; (39c4 ) 3826: 4798 blx r3 draw_dsc->outline_pad = lv_obj_get_style_outline_pad(obj, part); 3828: 8360 strh r0, [r4, #26] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 382a: 2249 movs r2, #73 ; 0x49 382c: 0031 movs r1, r6 382e: 0028 movs r0, r5 3830: 4b67 ldr r3, [pc, #412] ; (39d0 ) 3832: 4798 blx r3 draw_dsc->outline_color = lv_obj_get_style_outline_color(obj, part); 3834: 82e0 strh r0, [r4, #22] 3836: e7eb b.n 3810 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_IMAGE, pattern_image, const void *, _ptr, scalar) 3838: 226e movs r2, #110 ; 0x6e 383a: 0031 movs r1, r6 383c: 0028 movs r0, r5 383e: 4b65 ldr r3, [pc, #404] ; (39d4 ) 3840: 4798 blx r3 draw_dsc->pattern_image = lv_obj_get_style_pattern_image(obj, part); 3842: 62e0 str r0, [r4, #44] ; 0x2c if(draw_dsc->pattern_image) { 3844: 2800 cmp r0, #0 3846: d100 bne.n 384a 3848: e746 b.n 36d8 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_OPA, pattern_opa, lv_opa_t, _opa, scalar) 384a: 226c movs r2, #108 ; 0x6c 384c: 0031 movs r1, r6 384e: 0028 movs r0, r5 3850: 4b5e ldr r3, [pc, #376] ; (39cc ) 3852: 4798 blx r3 draw_dsc->pattern_opa = lv_obj_get_style_pattern_opa(obj, part); 3854: 2336 movs r3, #54 ; 0x36 3856: 54e0 strb r0, [r4, r3] if(draw_dsc->pattern_opa > LV_OPA_MIN) { 3858: 2805 cmp r0, #5 385a: d800 bhi.n 385e 385c: e73c b.n 36d8 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR_OPA, pattern_recolor_opa, lv_opa_t, _opa, scalar) 385e: 226d movs r2, #109 ; 0x6d 3860: 0031 movs r1, r6 3862: 0028 movs r0, r5 3864: 4b59 ldr r3, [pc, #356] ; (39cc ) 3866: 4798 blx r3 draw_dsc->pattern_recolor_opa = lv_obj_get_style_pattern_recolor_opa(obj, part); 3868: 2337 movs r3, #55 ; 0x37 386a: 54e0 strb r0, [r4, r3] _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_REPEAT, pattern_repeat, bool, _int, scalar) 386c: 2261 movs r2, #97 ; 0x61 386e: 0031 movs r1, r6 3870: 0028 movs r0, r5 3872: 4b54 ldr r3, [pc, #336] ; (39c4 ) 3874: 4798 blx r3 3876: 0003 movs r3, r0 3878: 1e58 subs r0, r3, #1 387a: 4183 sbcs r3, r0 draw_dsc->pattern_repeat = lv_obj_get_style_pattern_repeat(obj, part); 387c: 2238 movs r2, #56 ; 0x38 387e: 5ca0 ldrb r0, [r4, r2] 3880: 2101 movs r1, #1 3882: 4388 bics r0, r1 3884: 4318 orrs r0, r3 3886: 54a0 strb r0, [r4, r2] if(lv_img_src_get_type(draw_dsc->pattern_image) == LV_IMG_SRC_SYMBOL) { 3888: 6ae0 ldr r0, [r4, #44] ; 0x2c 388a: 4b53 ldr r3, [pc, #332] ; (39d8 ) 388c: 4798 blx r3 388e: 2802 cmp r0, #2 3890: d00b beq.n 38aa else if(draw_dsc->pattern_recolor_opa > LV_OPA_MIN) { 3892: 2337 movs r3, #55 ; 0x37 3894: 5ce3 ldrb r3, [r4, r3] 3896: 2b05 cmp r3, #5 3898: d814 bhi.n 38c4 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_BLEND_MODE, pattern_blend_mode, lv_blend_mode_t, _int, scalar) 389a: 2260 movs r2, #96 ; 0x60 389c: 0031 movs r1, r6 389e: 0028 movs r0, r5 38a0: 4b48 ldr r3, [pc, #288] ; (39c4 ) 38a2: 4798 blx r3 draw_dsc->pattern_blend_mode = lv_obj_get_style_pattern_blend_mode(obj, part); 38a4: 2339 movs r3, #57 ; 0x39 38a6: 54e0 strb r0, [r4, r3] 38a8: e716 b.n 36d8 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 38aa: 2269 movs r2, #105 ; 0x69 38ac: 0031 movs r1, r6 38ae: 0028 movs r0, r5 38b0: 4b47 ldr r3, [pc, #284] ; (39d0 ) 38b2: 4798 blx r3 draw_dsc->pattern_recolor = lv_obj_get_style_pattern_recolor(obj, part); 38b4: 86a0 strh r0, [r4, #52] ; 0x34 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 38b6: 4a49 ldr r2, [pc, #292] ; (39dc ) 38b8: 0031 movs r1, r6 38ba: 0028 movs r0, r5 38bc: 4b45 ldr r3, [pc, #276] ; (39d4 ) 38be: 4798 blx r3 draw_dsc->pattern_font = lv_obj_get_style_text_font(obj, part); 38c0: 6320 str r0, [r4, #48] ; 0x30 38c2: e7ea b.n 389a _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 38c4: 2269 movs r2, #105 ; 0x69 38c6: 0031 movs r1, r6 38c8: 0028 movs r0, r5 38ca: 4b41 ldr r3, [pc, #260] ; (39d0 ) 38cc: 4798 blx r3 draw_dsc->pattern_recolor = lv_obj_get_style_pattern_recolor(obj, part); 38ce: 86a0 strh r0, [r4, #52] ; 0x34 38d0: e7e3 b.n 389a _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 38d2: 2250 movs r2, #80 ; 0x50 38d4: 0031 movs r1, r6 38d6: 0028 movs r0, r5 38d8: 4b3a ldr r3, [pc, #232] ; (39c4 ) 38da: 4798 blx r3 draw_dsc->shadow_width = lv_obj_get_style_shadow_width(obj, part); 38dc: 8420 strh r0, [r4, #32] if(draw_dsc->shadow_width) { 38de: 2800 cmp r0, #0 38e0: d100 bne.n 38e4 38e2: e6fe b.n 36e2 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OPA, shadow_opa, lv_opa_t, _opa, scalar) 38e4: 225c movs r2, #92 ; 0x5c 38e6: 0031 movs r1, r6 38e8: 0028 movs r0, r5 38ea: 4b38 ldr r3, [pc, #224] ; (39cc ) 38ec: 4798 blx r3 draw_dsc->shadow_opa = lv_obj_get_style_shadow_opa(obj, part); 38ee: 2328 movs r3, #40 ; 0x28 38f0: 54e0 strb r0, [r4, r3] if(draw_dsc->shadow_opa > LV_OPA_MIN) { 38f2: 2805 cmp r0, #5 38f4: d800 bhi.n 38f8 38f6: e6f4 b.n 36e2 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_X, shadow_ofs_x, lv_style_int_t, _int, scalar) 38f8: 2251 movs r2, #81 ; 0x51 38fa: 0031 movs r1, r6 38fc: 0028 movs r0, r5 38fe: 4b31 ldr r3, [pc, #196] ; (39c4 ) 3900: 4699 mov r9, r3 3902: 4798 blx r3 draw_dsc->shadow_ofs_x = lv_obj_get_style_shadow_ofs_x(obj, part); 3904: 8460 strh r0, [r4, #34] ; 0x22 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_Y, shadow_ofs_y, lv_style_int_t, _int, scalar) 3906: 2252 movs r2, #82 ; 0x52 3908: 0031 movs r1, r6 390a: 0028 movs r0, r5 390c: 47c8 blx r9 draw_dsc->shadow_ofs_y = lv_obj_get_style_shadow_ofs_y(obj, part); 390e: 84a0 strh r0, [r4, #36] ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar) 3910: 2253 movs r2, #83 ; 0x53 3912: 0031 movs r1, r6 3914: 0028 movs r0, r5 3916: 47c8 blx r9 draw_dsc->shadow_spread = lv_obj_get_style_shadow_spread(obj, part); 3918: 84e0 strh r0, [r4, #38] ; 0x26 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar) 391a: 2259 movs r2, #89 ; 0x59 391c: 0031 movs r1, r6 391e: 0028 movs r0, r5 3920: 4b2b ldr r3, [pc, #172] ; (39d0 ) 3922: 4798 blx r3 draw_dsc->shadow_color = lv_obj_get_style_shadow_color(obj, part); 3924: 83e0 strh r0, [r4, #30] _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_BLEND_MODE, shadow_blend_mode, lv_blend_mode_t, _int, scalar) 3926: 2254 movs r2, #84 ; 0x54 3928: 0031 movs r1, r6 392a: 0028 movs r0, r5 392c: 47c8 blx r9 draw_dsc->shadow_blend_mode = lv_obj_get_style_shadow_blend_mode(obj, part); 392e: 2329 movs r3, #41 ; 0x29 3930: 54e0 strb r0, [r4, r3] 3932: e6d6 b.n 36e2 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_STR, value_str, const char *, _ptr, scalar) 3934: 227f movs r2, #127 ; 0x7f 3936: 0031 movs r1, r6 3938: 0028 movs r0, r5 393a: 4b26 ldr r3, [pc, #152] ; (39d4 ) 393c: 4798 blx r3 draw_dsc->value_str = lv_obj_get_style_value_str(obj, part); 393e: 63e0 str r0, [r4, #60] ; 0x3c if(draw_dsc->value_str) { 3940: 2800 cmp r0, #0 3942: d100 bne.n 3946 3944: e6d2 b.n 36ec _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OPA, value_opa, lv_opa_t, _opa, scalar) 3946: 227c movs r2, #124 ; 0x7c 3948: 0031 movs r1, r6 394a: 0028 movs r0, r5 394c: 4b1f ldr r3, [pc, #124] ; (39cc ) 394e: 4798 blx r3 draw_dsc->value_opa = lv_obj_get_style_value_opa(obj, part); 3950: 2344 movs r3, #68 ; 0x44 3952: 54e0 strb r0, [r4, r3] if(draw_dsc->value_opa > LV_OPA_MIN) { 3954: 2805 cmp r0, #5 3956: d800 bhi.n 395a 3958: e6c8 b.n 36ec _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_X, value_ofs_x, lv_style_int_t, _int, scalar) 395a: 2273 movs r2, #115 ; 0x73 395c: 0031 movs r1, r6 395e: 0028 movs r0, r5 3960: 4b18 ldr r3, [pc, #96] ; (39c4 ) 3962: 4699 mov r9, r3 3964: 4798 blx r3 draw_dsc->value_ofs_x = lv_obj_get_style_value_ofs_x(obj, part); 3966: 2348 movs r3, #72 ; 0x48 3968: 52e0 strh r0, [r4, r3] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_Y, value_ofs_y, lv_style_int_t, _int, scalar) 396a: 2274 movs r2, #116 ; 0x74 396c: 0031 movs r1, r6 396e: 0028 movs r0, r5 3970: 47c8 blx r9 draw_dsc->value_ofs_y = lv_obj_get_style_value_ofs_y(obj, part); 3972: 234a movs r3, #74 ; 0x4a 3974: 52e0 strh r0, [r4, r3] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 3976: 2279 movs r2, #121 ; 0x79 3978: 0031 movs r1, r6 397a: 0028 movs r0, r5 397c: 4b14 ldr r3, [pc, #80] ; (39d0 ) 397e: 4798 blx r3 draw_dsc->value_color = lv_obj_get_style_value_color(obj, part); 3980: 2346 movs r3, #70 ; 0x46 3982: 52e0 strh r0, [r4, r3] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 3984: 227e movs r2, #126 ; 0x7e 3986: 0031 movs r1, r6 3988: 0028 movs r0, r5 398a: 4b12 ldr r3, [pc, #72] ; (39d4 ) 398c: 4798 blx r3 draw_dsc->value_font = lv_obj_get_style_value_font(obj, part); 398e: 6420 str r0, [r4, #64] ; 0x40 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LETTER_SPACE, value_letter_space, lv_style_int_t, _int, scalar) 3990: 2270 movs r2, #112 ; 0x70 3992: 0031 movs r1, r6 3994: 0028 movs r0, r5 3996: 47c8 blx r9 draw_dsc->value_letter_space = lv_obj_get_style_value_letter_space(obj, part); 3998: 234c movs r3, #76 ; 0x4c 399a: 52e0 strh r0, [r4, r3] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LINE_SPACE, value_line_space, lv_style_int_t, _int, scalar) 399c: 2271 movs r2, #113 ; 0x71 399e: 0031 movs r1, r6 39a0: 0028 movs r0, r5 39a2: 47c8 blx r9 draw_dsc->value_line_space = lv_obj_get_style_value_line_space(obj, part); 39a4: 234e movs r3, #78 ; 0x4e 39a6: 52e0 strh r0, [r4, r3] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_ALIGN, value_align, lv_align_t, _int, scalar) 39a8: 2275 movs r2, #117 ; 0x75 39aa: 0031 movs r1, r6 39ac: 0028 movs r0, r5 39ae: 47c8 blx r9 draw_dsc->value_align = lv_obj_get_style_value_align(obj, part); 39b0: 2350 movs r3, #80 ; 0x50 39b2: 54e0 strb r0, [r4, r3] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_BLEND_MODE, value_blend_mode, lv_blend_mode_t, _int, scalar) 39b4: 2272 movs r2, #114 ; 0x72 39b6: 0031 movs r1, r6 39b8: 0028 movs r0, r5 39ba: 47c8 blx r9 draw_dsc->value_blend_mode = lv_obj_get_style_value_blend_mode(obj, part); 39bc: 2351 movs r3, #81 ; 0x51 39be: 54e0 strb r0, [r4, r3] 39c0: e694 b.n 36ec 39c2: 46c0 nop ; (mov r8, r8) 39c4: 00002db1 .word 0x00002db1 39c8: 0000800c .word 0x0000800c 39cc: 00002f15 .word 0x00002f15 39d0: 00002e71 .word 0x00002e71 39d4: 00002fc1 .word 0x00002fc1 39d8: 00008161 .word 0x00008161 39dc: 0000808e .word 0x0000808e 000039e0 : { 39e0: b5f0 push {r4, r5, r6, r7, lr} 39e2: b09b sub sp, #108 ; 0x6c 39e4: 0004 movs r4, r0 39e6: 000e movs r6, r1 if(mode == LV_DESIGN_COVER_CHK) { 39e8: 2a02 cmp r2, #2 39ea: d007 beq.n 39fc else if(mode == LV_DESIGN_DRAW_MAIN) { 39ec: 2a00 cmp r2, #0 39ee: d061 beq.n 3ab4 return LV_DESIGN_RES_OK; 39f0: 2000 movs r0, #0 else if(mode == LV_DESIGN_DRAW_POST) { 39f2: 2a01 cmp r2, #1 39f4: d100 bne.n 39f8 39f6: e0b5 b.n 3b64 } 39f8: b01b add sp, #108 ; 0x6c 39fa: bdf0 pop {r4, r5, r6, r7, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 39fc: 2100 movs r1, #0 39fe: 4b81 ldr r3, [pc, #516] ; (3c04 ) 3a00: 4798 blx r3 3a02: 0003 movs r3, r0 if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) return LV_DESIGN_RES_MASKED; 3a04: 2003 movs r0, #3 3a06: 2b00 cmp r3, #0 3a08: d1f6 bne.n 39f8 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 3a0a: 2201 movs r2, #1 3a0c: 2100 movs r1, #0 3a0e: 0020 movs r0, r4 3a10: 4f7c ldr r7, [pc, #496] ; (3c04 ) 3a12: 47b8 blx r7 3a14: 9001 str r0, [sp, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 3a16: 2204 movs r2, #4 3a18: 2100 movs r1, #0 3a1a: 0020 movs r0, r4 3a1c: 47b8 blx r7 3a1e: 0005 movs r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 3a20: 2205 movs r2, #5 3a22: 2100 movs r1, #0 3a24: 0020 movs r0, r4 3a26: 47b8 blx r7 lv_area_copy(&coords, &obj->coords); 3a28: 0027 movs r7, r4 3a2a: 3710 adds r7, #16 3a2c: 2300 movs r3, #0 *d8 = *s8; 3a2e: a905 add r1, sp, #20 3a30: 5cfa ldrb r2, [r7, r3] 3a32: 545a strb r2, [r3, r1] 3a34: 3301 adds r3, #1 while(len) { 3a36: 2b08 cmp r3, #8 3a38: d1fa bne.n 3a30 coords.x1 -= w; 3a3a: b2ad uxth r5, r5 3a3c: a905 add r1, sp, #20 3a3e: 880b ldrh r3, [r1, #0] 3a40: 1b5b subs r3, r3, r5 3a42: 800b strh r3, [r1, #0] coords.x2 += w; 3a44: 888b ldrh r3, [r1, #4] 3a46: 18ed adds r5, r5, r3 3a48: 808d strh r5, [r1, #4] coords.y1 -= h; 3a4a: b280 uxth r0, r0 3a4c: 884b ldrh r3, [r1, #2] 3a4e: 1a1b subs r3, r3, r0 3a50: 804b strh r3, [r1, #2] coords.y2 += h; 3a52: 88cb ldrh r3, [r1, #6] 3a54: 18c0 adds r0, r0, r3 3a56: 80c8 strh r0, [r1, #6] if(_lv_area_is_in(clip_area, &coords, r) == false) return LV_DESIGN_RES_NOT_COVER; 3a58: 9a01 ldr r2, [sp, #4] 3a5a: 0030 movs r0, r6 3a5c: 4b6a ldr r3, [pc, #424] ; (3c08 ) 3a5e: 4798 blx r3 3a60: 0003 movs r3, r0 3a62: 2002 movs r0, #2 3a64: 2b00 cmp r3, #0 3a66: d0c7 beq.n 39f8 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 3a68: 222c movs r2, #44 ; 0x2c 3a6a: 2100 movs r1, #0 3a6c: 0020 movs r0, r4 3a6e: 4b67 ldr r3, [pc, #412] ; (3c0c ) 3a70: 4798 blx r3 3a72: 0003 movs r3, r0 if(lv_obj_get_style_bg_opa(obj, LV_OBJ_PART_MAIN) < LV_OPA_MAX) return LV_DESIGN_RES_NOT_COVER; 3a74: 2002 movs r0, #2 3a76: 2bf9 cmp r3, #249 ; 0xf9 3a78: d9be bls.n 39f8 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_BLEND_MODE, bg_blend_mode, lv_blend_mode_t, _int, scalar) 3a7a: 2220 movs r2, #32 3a7c: 2100 movs r1, #0 3a7e: 0020 movs r0, r4 3a80: 4b60 ldr r3, [pc, #384] ; (3c04 ) 3a82: 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; 3a84: b2c3 uxtb r3, r0 3a86: 2002 movs r0, #2 3a88: 2b00 cmp r3, #0 3a8a: d1b5 bne.n 39f8 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_BLEND_MODE, border_blend_mode, lv_blend_mode_t, _int, scalar) 3a8c: 2232 movs r2, #50 ; 0x32 3a8e: 2100 movs r1, #0 3a90: 0020 movs r0, r4 3a92: 4b5c ldr r3, [pc, #368] ; (3c04 ) 3a94: 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; 3a96: b2c3 uxtb r3, r0 3a98: 2002 movs r0, #2 3a9a: 2b00 cmp r3, #0 3a9c: d1ac bne.n 39f8 _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 3a9e: 4a5c ldr r2, [pc, #368] ; (3c10 ) 3aa0: 2100 movs r1, #0 3aa2: 0020 movs r0, r4 3aa4: 4b59 ldr r3, [pc, #356] ; (3c0c ) 3aa6: 4798 blx r3 return LV_DESIGN_RES_COVER; 3aa8: 2300 movs r3, #0 3aaa: 22f9 movs r2, #249 ; 0xf9 3aac: 4282 cmp r2, r0 3aae: 415b adcs r3, r3 3ab0: 1c58 adds r0, r3, #1 3ab2: e7a1 b.n 39f8 lv_draw_rect_dsc_init(&draw_dsc); 3ab4: a805 add r0, sp, #20 3ab6: 4b57 ldr r3, [pc, #348] ; (3c14 ) 3ab8: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 3aba: 2233 movs r2, #51 ; 0x33 3abc: 2100 movs r1, #0 3abe: 0020 movs r0, r4 3ac0: 4b50 ldr r3, [pc, #320] ; (3c04 ) 3ac2: 4798 blx r3 if(lv_obj_get_style_border_post(obj, LV_OBJ_PART_MAIN)) { 3ac4: 2800 cmp r0, #0 3ac6: d002 beq.n 3ace draw_dsc.border_opa = LV_OPA_TRANSP; 3ac8: 2200 movs r2, #0 3aca: ab05 add r3, sp, #20 3acc: 751a strb r2, [r3, #20] lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc); 3ace: aa05 add r2, sp, #20 3ad0: 2100 movs r1, #0 3ad2: 0020 movs r0, r4 3ad4: 4b50 ldr r3, [pc, #320] ; (3c18 ) 3ad6: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 3ad8: 2204 movs r2, #4 3ada: 2100 movs r1, #0 3adc: 0020 movs r0, r4 3ade: 4f49 ldr r7, [pc, #292] ; (3c04 ) 3ae0: 47b8 blx r7 3ae2: 0005 movs r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 3ae4: 2205 movs r2, #5 3ae6: 2100 movs r1, #0 3ae8: 0020 movs r0, r4 3aea: 47b8 blx r7 lv_area_copy(&coords, &obj->coords); 3aec: 0027 movs r7, r4 3aee: 3710 adds r7, #16 3af0: 2300 movs r3, #0 *d8 = *s8; 3af2: a903 add r1, sp, #12 3af4: 5cfa ldrb r2, [r7, r3] 3af6: 545a strb r2, [r3, r1] 3af8: 3301 adds r3, #1 while(len) { 3afa: 2b08 cmp r3, #8 3afc: d1fa bne.n 3af4 coords.x1 -= w; 3afe: b2ad uxth r5, r5 3b00: ab03 add r3, sp, #12 3b02: 881a ldrh r2, [r3, #0] 3b04: 1b52 subs r2, r2, r5 3b06: 801a strh r2, [r3, #0] coords.x2 += w; 3b08: 889a ldrh r2, [r3, #4] 3b0a: 18ad adds r5, r5, r2 3b0c: 809d strh r5, [r3, #4] coords.y1 -= h; 3b0e: b280 uxth r0, r0 3b10: 885a ldrh r2, [r3, #2] 3b12: 1a12 subs r2, r2, r0 3b14: 805a strh r2, [r3, #2] coords.y2 += h; 3b16: 88da ldrh r2, [r3, #6] 3b18: 1880 adds r0, r0, r2 3b1a: 80d8 strh r0, [r3, #6] lv_draw_rect(&coords, clip_area, &draw_dsc); 3b1c: aa05 add r2, sp, #20 3b1e: 0031 movs r1, r6 3b20: 0018 movs r0, r3 3b22: 4b3e ldr r3, [pc, #248] ; (3c1c ) 3b24: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 3b26: 2202 movs r2, #2 3b28: 2100 movs r1, #0 3b2a: 0020 movs r0, r4 3b2c: 4b35 ldr r3, [pc, #212] ; (3c04 ) 3b2e: 4798 blx r3 if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) { 3b30: 2800 cmp r0, #0 3b32: d101 bne.n 3b38 return LV_DESIGN_RES_OK; 3b34: 2000 movs r0, #0 3b36: e75f b.n 39f8 lv_draw_mask_radius_param_t * mp = _lv_mem_buf_get(sizeof(lv_draw_mask_radius_param_t)); 3b38: 201c movs r0, #28 3b3a: 4b39 ldr r3, [pc, #228] ; (3c20 ) 3b3c: 4798 blx r3 3b3e: 0005 movs r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 3b40: 2201 movs r2, #1 3b42: 2100 movs r1, #0 3b44: 0020 movs r0, r4 3b46: 4b2f ldr r3, [pc, #188] ; (3c04 ) 3b48: 4798 blx r3 3b4a: 0002 movs r2, r0 lv_draw_mask_radius_init(mp, &obj->coords, r, false); 3b4c: 2300 movs r3, #0 3b4e: 0039 movs r1, r7 3b50: 0028 movs r0, r5 3b52: 4e34 ldr r6, [pc, #208] ; (3c24 ) 3b54: 47b0 blx r6 lv_draw_mask_add(mp, obj + 8); 3b56: 2398 movs r3, #152 ; 0x98 3b58: 009b lsls r3, r3, #2 3b5a: 18e1 adds r1, r4, r3 3b5c: 0028 movs r0, r5 3b5e: 4b32 ldr r3, [pc, #200] ; (3c28 ) 3b60: 4798 blx r3 3b62: e7e7 b.n 3b34 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 3b64: 3201 adds r2, #1 3b66: 2100 movs r1, #0 3b68: 0020 movs r0, r4 3b6a: 4b26 ldr r3, [pc, #152] ; (3c04 ) 3b6c: 4798 blx r3 if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) { 3b6e: 2800 cmp r0, #0 3b70: d140 bne.n 3bf4 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 3b72: 2233 movs r2, #51 ; 0x33 3b74: 2100 movs r1, #0 3b76: 0020 movs r0, r4 3b78: 4b22 ldr r3, [pc, #136] ; (3c04 ) 3b7a: 4798 blx r3 3b7c: 0003 movs r3, r0 return LV_DESIGN_RES_OK; 3b7e: 2000 movs r0, #0 if(lv_obj_get_style_border_post(obj, LV_OBJ_PART_MAIN)) { 3b80: 2b00 cmp r3, #0 3b82: d100 bne.n 3b86 3b84: e738 b.n 39f8 lv_draw_rect_dsc_init(&draw_dsc); 3b86: ad05 add r5, sp, #20 3b88: 0028 movs r0, r5 3b8a: 4b22 ldr r3, [pc, #136] ; (3c14 ) 3b8c: 4798 blx r3 draw_dsc.bg_opa = LV_OPA_TRANSP; 3b8e: 2300 movs r3, #0 3b90: 732b strb r3, [r5, #12] draw_dsc.pattern_opa = LV_OPA_TRANSP; 3b92: 2236 movs r2, #54 ; 0x36 3b94: 54ab strb r3, [r5, r2] draw_dsc.shadow_opa = LV_OPA_TRANSP; 3b96: 3a0e subs r2, #14 3b98: 54ab strb r3, [r5, r2] lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc); 3b9a: 002a movs r2, r5 3b9c: 2100 movs r1, #0 3b9e: 0020 movs r0, r4 3ba0: 4b1d ldr r3, [pc, #116] ; (3c18 ) 3ba2: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 3ba4: 2204 movs r2, #4 3ba6: 2100 movs r1, #0 3ba8: 0020 movs r0, r4 3baa: 4f16 ldr r7, [pc, #88] ; (3c04 ) 3bac: 47b8 blx r7 3bae: 0005 movs r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 3bb0: 2205 movs r2, #5 3bb2: 2100 movs r1, #0 3bb4: 0020 movs r0, r4 3bb6: 47b8 blx r7 lv_area_copy(&coords, &obj->coords); 3bb8: 3410 adds r4, #16 3bba: 2300 movs r3, #0 *d8 = *s8; 3bbc: a903 add r1, sp, #12 3bbe: 5ce2 ldrb r2, [r4, r3] 3bc0: 545a strb r2, [r3, r1] 3bc2: 3301 adds r3, #1 while(len) { 3bc4: 2b08 cmp r3, #8 3bc6: d1fa bne.n 3bbe coords.x1 -= w; 3bc8: b2ad uxth r5, r5 3bca: ab03 add r3, sp, #12 3bcc: 881a ldrh r2, [r3, #0] 3bce: 1b52 subs r2, r2, r5 3bd0: 801a strh r2, [r3, #0] coords.x2 += w; 3bd2: 889a ldrh r2, [r3, #4] 3bd4: 18ad adds r5, r5, r2 3bd6: 809d strh r5, [r3, #4] coords.y1 -= h; 3bd8: b280 uxth r0, r0 3bda: 885a ldrh r2, [r3, #2] 3bdc: 1a12 subs r2, r2, r0 3bde: 805a strh r2, [r3, #2] coords.y2 += h; 3be0: 88da ldrh r2, [r3, #6] 3be2: 1880 adds r0, r0, r2 3be4: 80d8 strh r0, [r3, #6] lv_draw_rect(&coords, clip_area, &draw_dsc); 3be6: aa05 add r2, sp, #20 3be8: 0031 movs r1, r6 3bea: 0018 movs r0, r3 3bec: 4b0b ldr r3, [pc, #44] ; (3c1c ) 3bee: 4798 blx r3 return LV_DESIGN_RES_OK; 3bf0: 2000 movs r0, #0 3bf2: e701 b.n 39f8 lv_draw_mask_radius_param_t * param = lv_draw_mask_remove_custom(obj + 8); 3bf4: 2398 movs r3, #152 ; 0x98 3bf6: 009b lsls r3, r3, #2 3bf8: 18e0 adds r0, r4, r3 3bfa: 4b0c ldr r3, [pc, #48] ; (3c2c ) 3bfc: 4798 blx r3 _lv_mem_buf_release(param); 3bfe: 4b0c ldr r3, [pc, #48] ; (3c30 ) 3c00: 4798 blx r3 3c02: e7b6 b.n 3b72 3c04: 00002db1 .word 0x00002db1 3c08: 0000fe9d .word 0x0000fe9d 3c0c: 00002f15 .word 0x00002f15 3c10: 0000800c .word 0x0000800c 3c14: 0000ab21 .word 0x0000ab21 3c18: 00003691 .word 0x00003691 3c1c: 0000abc5 .word 0x0000abc5 3c20: 00010ec1 .word 0x00010ec1 3c24: 0000a855 .word 0x0000a855 3c28: 0000a5ed .word 0x0000a5ed 3c2c: 0000a695 .word 0x0000a695 3c30: 00010bd5 .word 0x00010bd5 00003c34 : { 3c34: b5f0 push {r4, r5, r6, r7, lr} 3c36: 46de mov lr, fp 3c38: 4657 mov r7, sl 3c3a: 464e mov r6, r9 3c3c: b5c0 push {r6, r7, lr} 3c3e: b08a sub sp, #40 ; 0x28 3c40: 0004 movs r4, r0 3c42: 9104 str r1, [sp, #16] _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 3c44: 2250 movs r2, #80 ; 0x50 3c46: 4b78 ldr r3, [pc, #480] ; (3e28 ) 3c48: 4798 blx r3 3c4a: 0006 movs r6, r0 3c4c: 1e05 subs r5, r0, #0 if(sh_width) { 3c4e: d130 bne.n 3cb2 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_STR, value_str, const char *, _ptr, scalar) 3c50: 227f movs r2, #127 ; 0x7f 3c52: 9f04 ldr r7, [sp, #16] 3c54: 0039 movs r1, r7 3c56: 0020 movs r0, r4 3c58: 4b74 ldr r3, [pc, #464] ; (3e2c ) 3c5a: 4798 blx r3 3c5c: 1e06 subs r6, r0, #0 if(value_str) { 3c5e: d006 beq.n 3c6e _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OPA, value_opa, lv_opa_t, _opa, scalar) 3c60: 227c movs r2, #124 ; 0x7c 3c62: 0039 movs r1, r7 3c64: 0020 movs r0, r4 3c66: 4b72 ldr r3, [pc, #456] ; (3e30 ) 3c68: 4798 blx r3 if(value_opa > LV_OPA_MIN) { 3c6a: 2805 cmp r0, #5 3c6c: d850 bhi.n 3d10 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 3c6e: 2240 movs r2, #64 ; 0x40 3c70: 9904 ldr r1, [sp, #16] 3c72: 0020 movs r0, r4 3c74: 4b6c ldr r3, [pc, #432] ; (3e28 ) 3c76: 4798 blx r3 3c78: 1e06 subs r6, r0, #0 if(outline_width) { 3c7a: d000 beq.n 3c7e 3c7c: e0c0 b.n 3e00 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 3c7e: 2204 movs r2, #4 3c80: 9904 ldr r1, [sp, #16] 3c82: 0020 movs r0, r4 3c84: 4f68 ldr r7, [pc, #416] ; (3e28 ) 3c86: 47b8 blx r7 3c88: 0006 movs r6, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 3c8a: 2205 movs r2, #5 3c8c: 9904 ldr r1, [sp, #16] 3c8e: 0020 movs r0, r4 3c90: 47b8 blx r7 lv_coord_t wh = LV_MATH_MAX(w, h); 3c92: 1c03 adds r3, r0, #0 3c94: 42b0 cmp r0, r6 3c96: da00 bge.n 3c9a 3c98: 1c33 adds r3, r6, #0 3c9a: b21a sxth r2, r3 if(wh > 0) s += wh; 3c9c: 2a00 cmp r2, #0 3c9e: dd01 ble.n 3ca4 3ca0: 18ed adds r5, r5, r3 3ca2: b22d sxth r5, r5 } 3ca4: 0028 movs r0, r5 3ca6: b00a add sp, #40 ; 0x28 3ca8: bc1c pop {r2, r3, r4} 3caa: 4691 mov r9, r2 3cac: 469a mov sl, r3 3cae: 46a3 mov fp, r4 3cb0: bdf0 pop {r4, r5, r6, r7, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OPA, shadow_opa, lv_opa_t, _opa, scalar) 3cb2: 225c movs r2, #92 ; 0x5c 3cb4: 9904 ldr r1, [sp, #16] 3cb6: 0020 movs r0, r4 3cb8: 4b5d ldr r3, [pc, #372] ; (3e30 ) 3cba: 4798 blx r3 lv_coord_t s = 0; 3cbc: 2500 movs r5, #0 if(sh_opa > LV_OPA_MIN) { 3cbe: 2805 cmp r0, #5 3cc0: d9c6 bls.n 3c50 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar) 3cc2: 2253 movs r2, #83 ; 0x53 3cc4: 9d04 ldr r5, [sp, #16] 3cc6: 0029 movs r1, r5 3cc8: 0020 movs r0, r4 3cca: 4f57 ldr r7, [pc, #348] ; (3e28 ) 3ccc: 47b8 blx r7 sh_width = sh_width / 2; /*THe blur adds only half width*/ 3cce: 0ff3 lsrs r3, r6, #31 3cd0: 199e adds r6, r3, r6 3cd2: 1076 asrs r6, r6, #1 sh_width++; 3cd4: 3601 adds r6, #1 sh_width += lv_obj_get_style_shadow_spread(obj, part); 3cd6: 1836 adds r6, r6, r0 3cd8: b2b6 uxth r6, r6 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_X, shadow_ofs_x, lv_style_int_t, _int, scalar) 3cda: 2251 movs r2, #81 ; 0x51 3cdc: 9504 str r5, [sp, #16] 3cde: 0029 movs r1, r5 3ce0: 0020 movs r0, r4 3ce2: 47b8 blx r7 3ce4: 0005 movs r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_Y, shadow_ofs_y, lv_style_int_t, _int, scalar) 3ce6: 2252 movs r2, #82 ; 0x52 3ce8: 9904 ldr r1, [sp, #16] 3cea: 0020 movs r0, r4 3cec: 47b8 blx r7 sh_width += LV_MATH_MAX(LV_MATH_ABS(sh_ofs_x), LV_MATH_ABS(sh_ofs_y)); 3cee: 17ea asrs r2, r5, #31 3cf0: 18ab adds r3, r5, r2 3cf2: 4053 eors r3, r2 3cf4: 17c2 asrs r2, r0, #31 3cf6: 1880 adds r0, r0, r2 3cf8: 4050 eors r0, r2 3cfa: 4298 cmp r0, r3 3cfc: da00 bge.n 3d00 3cfe: 0018 movs r0, r3 3d00: 1830 adds r0, r6, r0 s = LV_MATH_MAX(s, sh_width); 3d02: 1c03 adds r3, r0, #0 3d04: 0402 lsls r2, r0, #16 3d06: d401 bmi.n 3d0c 3d08: b21d sxth r5, r3 3d0a: e7a1 b.n 3c50 3d0c: 2300 movs r3, #0 3d0e: e7fb b.n 3d08 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LETTER_SPACE, value_letter_space, lv_style_int_t, _int, scalar) 3d10: 2270 movs r2, #112 ; 0x70 3d12: 9f04 ldr r7, [sp, #16] 3d14: 0039 movs r1, r7 3d16: 0020 movs r0, r4 3d18: 4b43 ldr r3, [pc, #268] ; (3e28 ) 3d1a: 4699 mov r9, r3 3d1c: 4798 blx r3 3d1e: 9005 str r0, [sp, #20] 3d20: 2270 movs r2, #112 ; 0x70 3d22: 0039 movs r1, r7 3d24: 0020 movs r0, r4 3d26: 47c8 blx r9 3d28: 4683 mov fp, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 3d2a: 227e movs r2, #126 ; 0x7e 3d2c: 9704 str r7, [sp, #16] 3d2e: 0039 movs r1, r7 3d30: 0020 movs r0, r4 3d32: 4b3e ldr r3, [pc, #248] ; (3e2c ) 3d34: 4798 blx r3 3d36: 0002 movs r2, r0 _lv_txt_get_size(&txt_size, value_str, font, letter_space, line_space, LV_COORD_MAX, LV_TXT_FLAG_NONE); 3d38: af06 add r7, sp, #24 3d3a: 2100 movs r1, #0 3d3c: 468a mov sl, r1 3d3e: 9102 str r1, [sp, #8] 3d40: 4b3c ldr r3, [pc, #240] ; (3e34 ) 3d42: 9301 str r3, [sp, #4] 3d44: 4659 mov r1, fp 3d46: 9100 str r1, [sp, #0] 3d48: 9b05 ldr r3, [sp, #20] 3d4a: 0031 movs r1, r6 3d4c: 0038 movs r0, r7 3d4e: 4e3a ldr r6, [pc, #232] ; (3e38 ) 3d50: 47b0 blx r6 value_area.x1 = 0; 3d52: ae08 add r6, sp, #32 3d54: 4653 mov r3, sl 3d56: 8033 strh r3, [r6, #0] value_area.y1 = 0; 3d58: 8073 strh r3, [r6, #2] value_area.x2 = txt_size.x - 1; 3d5a: 883b ldrh r3, [r7, #0] 3d5c: 3b01 subs r3, #1 3d5e: 80b3 strh r3, [r6, #4] value_area.y2 = txt_size.y - 1; 3d60: 887b ldrh r3, [r7, #2] 3d62: 3b01 subs r3, #1 3d64: 80f3 strh r3, [r6, #6] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_ALIGN, value_align, lv_align_t, _int, scalar) 3d66: 2275 movs r2, #117 ; 0x75 3d68: 9f04 ldr r7, [sp, #16] 3d6a: 0039 movs r1, r7 3d6c: 0020 movs r0, r4 3d6e: 47c8 blx r9 3d70: 9005 str r0, [sp, #20] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_X, value_ofs_x, lv_style_int_t, _int, scalar) 3d72: 2273 movs r2, #115 ; 0x73 3d74: 0039 movs r1, r7 3d76: 0020 movs r0, r4 3d78: 47c8 blx r9 3d7a: 4682 mov sl, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_Y, value_ofs_y, lv_style_int_t, _int, scalar) 3d7c: 2274 movs r2, #116 ; 0x74 3d7e: 0039 movs r1, r7 3d80: 0020 movs r0, r4 3d82: 47c8 blx r9 3d84: 4681 mov r9, r0 _lv_area_align(&obj->coords, &value_area, align, &p_align); 3d86: aa07 add r2, sp, #28 3d88: 0013 movs r3, r2 3d8a: 466a mov r2, sp 3d8c: 7d12 ldrb r2, [r2, #20] 3d8e: 0020 movs r0, r4 3d90: 3010 adds r0, #16 3d92: 9305 str r3, [sp, #20] 3d94: 0031 movs r1, r6 3d96: 4f29 ldr r7, [pc, #164] ; (3e3c ) 3d98: 47b8 blx r7 value_area.x1 += p_align.x + xofs; 3d9a: 9a05 ldr r2, [sp, #20] 3d9c: 8813 ldrh r3, [r2, #0] 3d9e: 4453 add r3, sl 3da0: b29b uxth r3, r3 value_area.y1 += p_align.y + yofs; 3da2: 8852 ldrh r2, [r2, #2] 3da4: 444a add r2, r9 3da6: b292 uxth r2, r2 s = LV_MATH_MAX(s, obj->coords.x1 - value_area.x1); 3da8: 2010 movs r0, #16 3daa: 5e21 ldrsh r1, [r4, r0] value_area.x1 += p_align.x + xofs; 3dac: 8836 ldrh r6, [r6, #0] 3dae: 199e adds r6, r3, r6 s = LV_MATH_MAX(s, obj->coords.x1 - value_area.x1); 3db0: b236 sxth r6, r6 3db2: 1b8e subs r6, r1, r6 3db4: 42ae cmp r6, r5 3db6: da00 bge.n 3dba 3db8: 002e movs r6, r5 s = LV_MATH_MAX(s, obj->coords.y1 - value_area.y1); 3dba: 2112 movs r1, #18 3dbc: 5e60 ldrsh r0, [r4, r1] value_area.y1 += p_align.y + yofs; 3dbe: a908 add r1, sp, #32 3dc0: 8849 ldrh r1, [r1, #2] 3dc2: 1851 adds r1, r2, r1 s = LV_MATH_MAX(s, obj->coords.y1 - value_area.y1); 3dc4: b209 sxth r1, r1 3dc6: b236 sxth r6, r6 3dc8: 1a41 subs r1, r0, r1 3dca: 42b1 cmp r1, r6 3dcc: da00 bge.n 3dd0 3dce: 0031 movs r1, r6 value_area.x2 += p_align.x + xofs; 3dd0: a808 add r0, sp, #32 3dd2: 8880 ldrh r0, [r0, #4] 3dd4: 181b adds r3, r3, r0 s = LV_MATH_MAX(s, value_area.x2 - obj->coords.x2); 3dd6: b21b sxth r3, r3 3dd8: 2514 movs r5, #20 3dda: 5f60 ldrsh r0, [r4, r5] 3ddc: b209 sxth r1, r1 3dde: 1a1b subs r3, r3, r0 3de0: 428b cmp r3, r1 3de2: da00 bge.n 3de6 3de4: 000b movs r3, r1 value_area.y2 += p_align.y + yofs; 3de6: a908 add r1, sp, #32 3de8: 88c9 ldrh r1, [r1, #6] 3dea: 1852 adds r2, r2, r1 s = LV_MATH_MAX(s, value_area.y2 - obj->coords.y2); 3dec: b212 sxth r2, r2 3dee: 2016 movs r0, #22 3df0: 5e21 ldrsh r1, [r4, r0] 3df2: b21b sxth r3, r3 3df4: 1a52 subs r2, r2, r1 3df6: 429a cmp r2, r3 3df8: da00 bge.n 3dfc 3dfa: 001a movs r2, r3 3dfc: b215 sxth r5, r2 3dfe: e736 b.n 3c6e _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 3e00: 224c movs r2, #76 ; 0x4c 3e02: 9904 ldr r1, [sp, #16] 3e04: 0020 movs r0, r4 3e06: 4b0a ldr r3, [pc, #40] ; (3e30 ) 3e08: 4798 blx r3 if(outline_opa > LV_OPA_MIN) { 3e0a: 2805 cmp r0, #5 3e0c: d800 bhi.n 3e10 3e0e: e736 b.n 3c7e _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar) 3e10: 2241 movs r2, #65 ; 0x41 3e12: 9904 ldr r1, [sp, #16] 3e14: 0020 movs r0, r4 3e16: 4b04 ldr r3, [pc, #16] ; (3e28 ) 3e18: 4798 blx r3 s = LV_MATH_MAX(s, outline_pad + outline_width); 3e1a: 1986 adds r6, r0, r6 3e1c: 42ae cmp r6, r5 3e1e: da00 bge.n 3e22 3e20: 002e movs r6, r5 3e22: b235 sxth r5, r6 3e24: e72b b.n 3c7e 3e26: 46c0 nop ; (mov r8, r8) 3e28: 00002db1 .word 0x00002db1 3e2c: 00002fc1 .word 0x00002fc1 3e30: 00002f15 .word 0x00002f15 3e34: 00007c18 .word 0x00007c18 3e38: 00011ae5 .word 0x00011ae5 3e3c: 0000ff41 .word 0x0000ff41 00003e40 : { 3e40: b510 push {r4, lr} 3e42: 0004 movs r4, r0 if(sign == LV_SIGNAL_GET_STYLE) { 3e44: 2908 cmp r1, #8 3e46: d01b beq.n 3e80 else if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 3e48: 2907 cmp r1, #7 3e4a: d024 beq.n 3e96 if(sign == LV_SIGNAL_CHILD_CHG) { 3e4c: 2901 cmp r1, #1 3e4e: d027 beq.n 3ea0 else if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) { 3e50: 2906 cmp r1, #6 3e52: d02b beq.n 3eac else if(sign == LV_SIGNAL_PARENT_SIZE_CHG) { 3e54: 2903 cmp r1, #3 3e56: d035 beq.n 3ec4 else if(sign == LV_SIGNAL_STYLE_CHG) { 3e58: 2904 cmp r1, #4 3e5a: d03d beq.n 3ed8 else if(sign == LV_SIGNAL_PRESSED) { 3e5c: 290b cmp r1, #11 3e5e: d03f beq.n 3ee0 else if(sign == LV_SIGNAL_RELEASED || sign == LV_SIGNAL_PRESS_LOST) { 3e60: 000b movs r3, r1 3e62: 3b0d subs r3, #13 3e64: 2b01 cmp r3, #1 3e66: d940 bls.n 3eea else if(sign == LV_SIGNAL_FOCUS) { 3e68: 2916 cmp r1, #22 3e6a: d043 beq.n 3ef4 else if(sign == LV_SIGNAL_DEFOCUS) { 3e6c: 2917 cmp r1, #23 3e6e: d057 beq.n 3f20 lv_res_t res = LV_RES_OK; 3e70: 2001 movs r0, #1 else if(sign == LV_SIGNAL_CLEANUP) { 3e72: 2900 cmp r1, #0 3e74: d10a bne.n 3e8c lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 3e76: 0020 movs r0, r4 3e78: 4b2c ldr r3, [pc, #176] ; (3f2c ) 3e7a: 4798 blx r3 lv_res_t res = LV_RES_OK; 3e7c: 2001 movs r0, #1 3e7e: e005 b.n 3e8c if(info->part == LV_OBJ_PART_MAIN) info->result = &obj->style_list; 3e80: 7813 ldrb r3, [r2, #0] 3e82: 2b00 cmp r3, #0 3e84: d103 bne.n 3e8e 3e86: 3428 adds r4, #40 ; 0x28 3e88: 6054 str r4, [r2, #4] return LV_RES_OK; 3e8a: 2001 movs r0, #1 } 3e8c: bd10 pop {r4, pc} else info->result = NULL; 3e8e: 2300 movs r3, #0 3e90: 6053 str r3, [r2, #4] return LV_RES_OK; 3e92: 2001 movs r0, #1 3e94: e7fa b.n 3e8c else if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 3e96: 4926 ldr r1, [pc, #152] ; (3f30 ) 3e98: 0010 movs r0, r2 3e9a: 4b26 ldr r3, [pc, #152] ; (3f34 ) 3e9c: 4798 blx r3 3e9e: e7f5 b.n 3e8c if(lv_obj_is_protected(obj, LV_PROTECT_CHILD_CHG) != false) res = LV_RES_INV; 3ea0: 4b25 ldr r3, [pc, #148] ; (3f38 ) 3ea2: 4798 blx r3 3ea4: 2301 movs r3, #1 3ea6: 4058 eors r0, r3 return LV_RES_OK; 3ea8: b2c0 uxtb r0, r0 3eaa: e7ef b.n 3e8c lv_coord_t d = lv_obj_get_draw_rect_ext_pad_size(obj, LV_OBJ_PART_MAIN); 3eac: 2100 movs r1, #0 3eae: 4b23 ldr r3, [pc, #140] ; (3f3c ) 3eb0: 4798 blx r3 obj->ext_draw_pad = LV_MATH_MAX(obj->ext_draw_pad, d); 3eb2: 8e63 ldrh r3, [r4, #50] ; 0x32 3eb4: 1c1a adds r2, r3, #0 3eb6: b21b sxth r3, r3 3eb8: 4283 cmp r3, r0 3eba: da00 bge.n 3ebe 3ebc: 1c02 adds r2, r0, #0 3ebe: 8662 strh r2, [r4, #50] ; 0x32 lv_res_t res = LV_RES_OK; 3ec0: 2001 movs r0, #1 3ec2: e7e3 b.n 3e8c if(obj->realign.auto_realign) { 3ec4: 2349 movs r3, #73 ; 0x49 3ec6: 5cc3 ldrb r3, [r0, r3] lv_res_t res = LV_RES_OK; 3ec8: 2001 movs r0, #1 if(obj->realign.auto_realign) { 3eca: 07db lsls r3, r3, #31 3ecc: d5de bpl.n 3e8c lv_obj_realign(obj); 3ece: 0020 movs r0, r4 3ed0: 4b1b ldr r3, [pc, #108] ; (3f40 ) 3ed2: 4798 blx r3 lv_res_t res = LV_RES_OK; 3ed4: 2001 movs r0, #1 3ed6: e7d9 b.n 3e8c lv_obj_refresh_ext_draw_pad(obj); 3ed8: 4b1a ldr r3, [pc, #104] ; (3f44 ) 3eda: 4798 blx r3 lv_res_t res = LV_RES_OK; 3edc: 2001 movs r0, #1 3ede: e7d5 b.n 3e8c lv_obj_add_state(obj, LV_STATE_PRESSED); 3ee0: 3105 adds r1, #5 3ee2: 4b19 ldr r3, [pc, #100] ; (3f48 ) 3ee4: 4798 blx r3 lv_res_t res = LV_RES_OK; 3ee6: 2001 movs r0, #1 3ee8: e7d0 b.n 3e8c lv_obj_clear_state(obj, LV_STATE_PRESSED); 3eea: 2110 movs r1, #16 3eec: 4b17 ldr r3, [pc, #92] ; (3f4c ) 3eee: 4798 blx r3 lv_res_t res = LV_RES_OK; 3ef0: 2001 movs r0, #1 3ef2: e7cb b.n 3e8c if(lv_group_get_editing(lv_obj_get_group(obj))) { 3ef4: 4b16 ldr r3, [pc, #88] ; (3f50 ) 3ef6: 4798 blx r3 3ef8: 4b16 ldr r3, [pc, #88] ; (3f54 ) 3efa: 4798 blx r3 3efc: 2800 cmp r0, #0 3efe: d005 beq.n 3f0c lv_obj_add_state(obj, state); 3f00: 2106 movs r1, #6 3f02: 0020 movs r0, r4 3f04: 4b10 ldr r3, [pc, #64] ; (3f48 ) 3f06: 4798 blx r3 lv_res_t res = LV_RES_OK; 3f08: 2001 movs r0, #1 3f0a: e7bf b.n 3e8c lv_obj_add_state(obj, LV_STATE_FOCUSED); 3f0c: 2102 movs r1, #2 3f0e: 0020 movs r0, r4 3f10: 4b0d ldr r3, [pc, #52] ; (3f48 ) 3f12: 4798 blx r3 lv_obj_clear_state(obj, LV_STATE_EDITED); 3f14: 2104 movs r1, #4 3f16: 0020 movs r0, r4 3f18: 4b0c ldr r3, [pc, #48] ; (3f4c ) 3f1a: 4798 blx r3 lv_res_t res = LV_RES_OK; 3f1c: 2001 movs r0, #1 3f1e: e7b5 b.n 3e8c lv_obj_clear_state(obj, LV_STATE_FOCUSED | LV_STATE_EDITED); 3f20: 3911 subs r1, #17 3f22: 4b0a ldr r3, [pc, #40] ; (3f4c ) 3f24: 4798 blx r3 lv_res_t res = LV_RES_OK; 3f26: 2001 movs r0, #1 3f28: e7b0 b.n 3e8c 3f2a: 46c0 nop ; (mov r8, r8) 3f2c: 00001dd5 .word 0x00001dd5 3f30: 0001879c .word 0x0001879c 3f34: 00003669 .word 0x00003669 3f38: 00002d2d .word 0x00002d2d 3f3c: 00003c35 .word 0x00003c35 3f40: 000024e5 .word 0x000024e5 3f44: 00001a6d .word 0x00001a6d 3f48: 00003581 .word 0x00003581 3f4c: 000035c1 .word 0x000035c1 3f50: 00003601 .word 0x00003601 3f54: 0000175b .word 0x0000175b 00003f58 : * @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) { 3f58: b5f0 push {r4, r5, r6, r7, lr} 3f5a: 46ce mov lr, r9 3f5c: b500 push {lr} 3f5e: b082 sub sp, #8 3f60: 0004 movs r4, r0 3f62: 9001 str r0, [sp, #4] 3f64: 000d movs r5, 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) { 3f66: 3110 adds r1, #16 3f68: 2200 movs r2, #0 3f6a: 4b1f ldr r3, [pc, #124] ; (3fe8 ) 3f6c: 4798 blx r3 3f6e: 2800 cmp r0, #0 3f70: d027 beq.n 3fc2 3f72: 2334 movs r3, #52 ; 0x34 3f74: 5ceb ldrb r3, [r5, r3] 3f76: 06db lsls r3, r3, #27 3f78: d425 bmi.n 3fc6 lv_design_res_t design_res = obj->design_cb ? obj->design_cb(obj, area_p, 3f7a: 6a2b ldr r3, [r5, #32] 3f7c: 2b00 cmp r3, #0 3f7e: d028 beq.n 3fd2 3f80: 2202 movs r2, #2 3f82: 0021 movs r1, r4 3f84: 0028 movs r0, r5 3f86: 4798 blx r3 3f88: 4681 mov r9, r0 LV_DESIGN_COVER_CHK) : LV_DESIGN_RES_NOT_COVER; if(design_res == LV_DESIGN_RES_MASKED) return NULL; 3f8a: 2803 cmp r0, #3 3f8c: d01d beq.n 3fca lv_obj_t * i; _LV_LL_READ(obj->child_ll, i) { 3f8e: 1d2e adds r6, r5, #4 3f90: 0030 movs r0, r6 3f92: 4b16 ldr r3, [pc, #88] ; (3fec ) 3f94: 4798 blx r3 3f96: 1e04 subs r4, r0, #0 3f98: d00b beq.n 3fb2 3f9a: 4f15 ldr r7, [pc, #84] ; (3ff0 ) found_p = lv_refr_get_top_obj(area_p, i); 3f9c: 0021 movs r1, r4 3f9e: 9801 ldr r0, [sp, #4] 3fa0: f7ff ffda bl 3f58 /*If a children is ok then break*/ if(found_p != NULL) { 3fa4: 2800 cmp r0, #0 3fa6: d108 bne.n 3fba _LV_LL_READ(obj->child_ll, i) { 3fa8: 0021 movs r1, r4 3faa: 0030 movs r0, r6 3fac: 47b8 blx r7 3fae: 1e04 subs r4, r0, #0 3fb0: d1f4 bne.n 3f9c 3fb2: 2000 movs r0, #0 } } /*If no better children use this object*/ if(found_p == NULL) { if(design_res == LV_DESIGN_RES_COVER) { 3fb4: 464b mov r3, r9 3fb6: 2b01 cmp r3, #1 3fb8: d009 beq.n 3fce } } } return found_p; } 3fba: b002 add sp, #8 3fbc: bc04 pop {r2} 3fbe: 4691 mov r9, r2 3fc0: bdf0 pop {r4, r5, r6, r7, pc} lv_obj_t * found_p = NULL; 3fc2: 2000 movs r0, #0 3fc4: e7f9 b.n 3fba 3fc6: 2000 movs r0, #0 3fc8: e7f7 b.n 3fba if(design_res == LV_DESIGN_RES_MASKED) return NULL; 3fca: 2000 movs r0, #0 3fcc: e7f5 b.n 3fba found_p = obj; 3fce: 0028 movs r0, r5 3fd0: e7f3 b.n 3fba _LV_LL_READ(obj->child_ll, i) { 3fd2: 1d2e adds r6, r5, #4 3fd4: 0030 movs r0, r6 3fd6: 4b05 ldr r3, [pc, #20] ; (3fec ) 3fd8: 4798 blx r3 3fda: 0004 movs r4, r0 lv_design_res_t design_res = obj->design_cb ? obj->design_cb(obj, area_p, 3fdc: 2302 movs r3, #2 3fde: 4699 mov r9, r3 _LV_LL_READ(obj->child_ll, i) { 3fe0: 2800 cmp r0, #0 3fe2: d1da bne.n 3f9a 3fe4: e7e9 b.n 3fba 3fe6: 46c0 nop ; (mov r8, r8) 3fe8: 0000fe9d .word 0x0000fe9d 3fec: 0001066d .word 0x0001066d 3ff0: 00010685 .word 0x00010685 00003ff4 : * Refresh an object an all of its children. (Called recursively) * @param obj pointer to an object to refresh * @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) { 3ff4: b5f0 push {r4, r5, r6, r7, lr} 3ff6: 46d6 mov lr, sl 3ff8: 464f mov r7, r9 3ffa: b580 push {r7, lr} 3ffc: b08d sub sp, #52 ; 0x34 3ffe: 0007 movs r7, r0 4000: 000d movs r5, r1 /*Do not refresh hidden objects*/ if(obj->hidden != 0) return; 4002: 2334 movs r3, #52 ; 0x34 4004: 5cc3 ldrb r3, [r0, r3] 4006: 06db lsls r3, r3, #27 4008: d504 bpl.n 4014 } /* 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); } } 400a: b00d add sp, #52 ; 0x34 400c: bc0c pop {r2, r3} 400e: 4691 mov r9, r2 4010: 469a mov sl, r3 4012: bdf0 pop {r4, r5, r6, r7, pc} lv_coord_t ext_size = obj->ext_draw_pad; 4014: 2332 movs r3, #50 ; 0x32 4016: 5ec6 ldrsh r6, [r0, r3] lv_obj_get_coords(obj, &obj_area); 4018: ac06 add r4, sp, #24 401a: 0021 movs r1, r4 401c: 4b2e ldr r3, [pc, #184] ; (40d8 ) 401e: 4798 blx r3 obj_area.x1 -= ext_size; 4020: b2b3 uxth r3, r6 4022: 8822 ldrh r2, [r4, #0] 4024: 1ad2 subs r2, r2, r3 4026: 8022 strh r2, [r4, #0] obj_area.y1 -= ext_size; 4028: 8862 ldrh r2, [r4, #2] 402a: 1ad2 subs r2, r2, r3 402c: 8062 strh r2, [r4, #2] obj_area.x2 += ext_size; 402e: 88a2 ldrh r2, [r4, #4] 4030: 189a adds r2, r3, r2 4032: 80a2 strh r2, [r4, #4] obj_area.y2 += ext_size; 4034: 88e2 ldrh r2, [r4, #6] 4036: 189b adds r3, r3, r2 4038: 80e3 strh r3, [r4, #6] union_ok = _lv_area_intersect(&obj_ext_mask, mask_ori_p, &obj_area); 403a: 0022 movs r2, r4 403c: 0029 movs r1, r5 403e: a808 add r0, sp, #32 4040: 4b26 ldr r3, [pc, #152] ; (40dc ) 4042: 4798 blx r3 if(union_ok != false) { 4044: 2800 cmp r0, #0 4046: d0e0 beq.n 400a if(obj->design_cb) obj->design_cb(obj, &obj_ext_mask, LV_DESIGN_DRAW_MAIN); 4048: 6a3b ldr r3, [r7, #32] 404a: 2b00 cmp r3, #0 404c: d003 beq.n 4056 404e: 2200 movs r2, #0 4050: a908 add r1, sp, #32 4052: 0038 movs r0, r7 4054: 4798 blx r3 lv_obj_get_coords(obj, &obj_area); 4056: a906 add r1, sp, #24 4058: 0038 movs r0, r7 405a: 4b1f ldr r3, [pc, #124] ; (40d8 ) 405c: 4798 blx r3 union_ok = _lv_area_intersect(&obj_mask, mask_ori_p, &obj_area); 405e: aa06 add r2, sp, #24 4060: 0029 movs r1, r5 4062: a80a add r0, sp, #40 ; 0x28 4064: 4b1d ldr r3, [pc, #116] ; (40dc ) 4066: 4798 blx r3 if(union_ok != false) { 4068: 2800 cmp r0, #0 406a: d107 bne.n 407c if(obj->design_cb) obj->design_cb(obj, &obj_ext_mask, LV_DESIGN_DRAW_POST); 406c: 6a3b ldr r3, [r7, #32] 406e: 2b00 cmp r3, #0 4070: d0cb beq.n 400a 4072: 2201 movs r2, #1 4074: a908 add r1, sp, #32 4076: 0038 movs r0, r7 4078: 4798 blx r3 407a: e7c6 b.n 400a _LV_LL_READ_BACK(obj->child_ll, child_p) { 407c: 1d3b adds r3, r7, #4 407e: 9301 str r3, [sp, #4] 4080: 0018 movs r0, r3 4082: 4b17 ldr r3, [pc, #92] ; (40e0 ) 4084: 4798 blx r3 4086: 1e05 subs r5, r0, #0 4088: d0f0 beq.n 406c lv_obj_get_coords(child_p, &child_area); 408a: 4b13 ldr r3, [pc, #76] ; (40d8 ) 408c: 469a mov sl, r3 union_ok = _lv_area_intersect(&mask_child, &obj_mask, &child_area); 408e: 4b13 ldr r3, [pc, #76] ; (40dc ) 4090: 4699 mov r9, r3 _LV_LL_READ_BACK(obj->child_ll, child_p) { 4092: 4e14 ldr r6, [pc, #80] ; (40e4 ) 4094: e004 b.n 40a0 4096: 0029 movs r1, r5 4098: 9801 ldr r0, [sp, #4] 409a: 47b0 blx r6 409c: 1e05 subs r5, r0, #0 409e: d0e5 beq.n 406c lv_obj_get_coords(child_p, &child_area); 40a0: ac04 add r4, sp, #16 40a2: 0021 movs r1, r4 40a4: 0028 movs r0, r5 40a6: 47d0 blx sl child_area.x1 -= ext_size; 40a8: 8e6b ldrh r3, [r5, #50] ; 0x32 40aa: 8822 ldrh r2, [r4, #0] 40ac: 1ad2 subs r2, r2, r3 40ae: 8022 strh r2, [r4, #0] child_area.y1 -= ext_size; 40b0: 8862 ldrh r2, [r4, #2] 40b2: 1ad2 subs r2, r2, r3 40b4: 8062 strh r2, [r4, #2] child_area.x2 += ext_size; 40b6: 88a2 ldrh r2, [r4, #4] 40b8: 189a adds r2, r3, r2 40ba: 80a2 strh r2, [r4, #4] child_area.y2 += ext_size; 40bc: 88e2 ldrh r2, [r4, #6] 40be: 189b adds r3, r3, r2 40c0: 80e3 strh r3, [r4, #6] union_ok = _lv_area_intersect(&mask_child, &obj_mask, &child_area); 40c2: 0022 movs r2, r4 40c4: a90a add r1, sp, #40 ; 0x28 40c6: a802 add r0, sp, #8 40c8: 47c8 blx r9 if(union_ok) { 40ca: 2800 cmp r0, #0 40cc: d0e3 beq.n 4096 lv_refr_obj(child_p, &mask_child); 40ce: a902 add r1, sp, #8 40d0: 0028 movs r0, r5 40d2: f7ff ff8f bl 3ff4 40d6: e7de b.n 4096 40d8: 00001bd5 .word 0x00001bd5 40dc: 0000fc0f .word 0x0000fc0f 40e0: 00010679 .word 0x00010679 40e4: 000106ad .word 0x000106ad 000040e8 : { 40e8: b5f0 push {r4, r5, r6, r7, lr} 40ea: 46d6 mov lr, sl 40ec: b500 push {lr} 40ee: b082 sub sp, #8 40f0: 1e04 subs r4, r0, #0 40f2: 9101 str r1, [sp, #4] if(top_p == NULL) top_p = lv_disp_get_scr_act(disp_refr); 40f4: d00d beq.n 4112 lv_refr_obj(top_p, mask_p); 40f6: 9901 ldr r1, [sp, #4] 40f8: 0020 movs r0, r4 40fa: 4b1a ldr r3, [pc, #104] ; (4164 ) 40fc: 4798 blx r3 par = lv_obj_get_parent(top_p); 40fe: 0020 movs r0, r4 4100: 4b19 ldr r3, [pc, #100] ; (4168 ) 4102: 4798 blx r3 4104: 1e05 subs r5, r0, #0 while(par != NULL) { 4106: d00a beq.n 411e lv_obj_t * i = _lv_ll_get_prev(&(par->child_ll), border_p); 4108: 4b18 ldr r3, [pc, #96] ; (416c ) 410a: 469a mov sl, r3 lv_refr_obj(i, mask_p); 410c: 4e15 ldr r6, [pc, #84] ; (4164 ) i = _lv_ll_get_prev(&(par->child_ll), i); 410e: 001f movs r7, r3 4110: e010 b.n 4134 if(top_p == NULL) top_p = lv_disp_get_scr_act(disp_refr); 4112: 4b17 ldr r3, [pc, #92] ; (4170 ) 4114: 6818 ldr r0, [r3, #0] 4116: 4b17 ldr r3, [pc, #92] ; (4174 ) 4118: 4798 blx r3 411a: 1e04 subs r4, r0, #0 if(top_p == NULL) return; /*Shouldn't happen*/ 411c: d1eb bne.n 40f6 } 411e: b002 add sp, #8 4120: bc04 pop {r2} 4122: 4692 mov sl, r2 4124: bdf0 pop {r4, r5, r6, r7, pc} par = lv_obj_get_parent(par); 4126: 0028 movs r0, r5 4128: 4b0f ldr r3, [pc, #60] ; (4168 ) 412a: 4798 blx r3 412c: 002c movs r4, r5 while(par != NULL) { 412e: 2800 cmp r0, #0 4130: d0f5 beq.n 411e par = lv_obj_get_parent(par); 4132: 0005 movs r5, r0 lv_obj_t * i = _lv_ll_get_prev(&(par->child_ll), border_p); 4134: 1d2b adds r3, r5, #4 4136: 9300 str r3, [sp, #0] 4138: 0021 movs r1, r4 413a: 0018 movs r0, r3 413c: 47d0 blx sl 413e: 1e04 subs r4, r0, #0 while(i != NULL) { 4140: d007 beq.n 4152 lv_refr_obj(i, mask_p); 4142: 9901 ldr r1, [sp, #4] 4144: 0020 movs r0, r4 4146: 47b0 blx r6 i = _lv_ll_get_prev(&(par->child_ll), i); 4148: 0021 movs r1, r4 414a: 9800 ldr r0, [sp, #0] 414c: 47b8 blx r7 414e: 1e04 subs r4, r0, #0 while(i != NULL) { 4150: d1f7 bne.n 4142 if(par->design_cb) par->design_cb(par, mask_p, LV_DESIGN_DRAW_POST); 4152: 6a2b ldr r3, [r5, #32] 4154: 2b00 cmp r3, #0 4156: d0e6 beq.n 4126 4158: 2201 movs r2, #1 415a: 9901 ldr r1, [sp, #4] 415c: 0028 movs r0, r5 415e: 4798 blx r3 4160: e7e1 b.n 4126 4162: 46c0 nop ; (mov r8, r8) 4164: 00003ff5 .word 0x00003ff5 4168: 00001aa1 .word 0x00001aa1 416c: 000106ad .word 0x000106ad 4170: 200026e8 .word 0x200026e8 4174: 000014ad .word 0x000014ad 00004178 : /** * Flush the content of the VDB */ static void lv_refr_vdb_flush(void) { 4178: b570 push {r4, r5, r6, lr} lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 417a: 4d1c ldr r5, [pc, #112] ; (41ec ) 417c: 6828 ldr r0, [r5, #0] 417e: 4b1c ldr r3, [pc, #112] ; (41f0 ) 4180: 4798 blx r3 4182: 0004 movs 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)) { 4184: 6828 ldr r0, [r5, #0] 4186: 4b1b ldr r3, [pc, #108] ; (41f4 ) 4188: 4798 blx r3 418a: 2800 cmp r0, #0 418c: d10d bne.n 41aa while(vdb->flushing) { if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); } } vdb->flushing = 1; 418e: 2301 movs r3, #1 4190: 61a3 str r3, [r4, #24] if(disp_refr->driver.buffer->last_area && disp_refr->driver.buffer->last_part) vdb->flushing_last = 1; 4192: 4b16 ldr r3, [pc, #88] ; (41ec ) 4194: 6818 ldr r0, [r3, #0] 4196: 6843 ldr r3, [r0, #4] 4198: 6a1a ldr r2, [r3, #32] 419a: 07d2 lsls r2, r2, #31 419c: d50f bpl.n 41be 419e: 6a1b ldr r3, [r3, #32] 41a0: 079b lsls r3, r3, #30 41a2: d50c bpl.n 41be 41a4: 2301 movs r3, #1 41a6: 61e3 str r3, [r4, #28] 41a8: e00b b.n 41c2 if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 41aa: 4d10 ldr r5, [pc, #64] ; (41ec ) 41ac: 6828 ldr r0, [r5, #0] while(vdb->flushing) { 41ae: 69a3 ldr r3, [r4, #24] 41b0: 2b00 cmp r3, #0 41b2: d0ec beq.n 418e if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 41b4: 69c3 ldr r3, [r0, #28] 41b6: 2b00 cmp r3, #0 41b8: d0f9 beq.n 41ae 41ba: 4798 blx r3 41bc: e7f6 b.n 41ac else vdb->flushing_last = 0; 41be: 2300 movs r3, #0 41c0: 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); 41c2: 68c3 ldr r3, [r0, #12] 41c4: 2b00 cmp r3, #0 41c6: d003 beq.n 41d0 41c8: 0021 movs r1, r4 41ca: 3110 adds r1, #16 41cc: 68a2 ldr r2, [r4, #8] 41ce: 4798 blx r3 if(vdb->buf1 && vdb->buf2) { 41d0: 6823 ldr r3, [r4, #0] 41d2: 2b00 cmp r3, #0 41d4: d006 beq.n 41e4 41d6: 6862 ldr r2, [r4, #4] 41d8: 2a00 cmp r2, #0 41da: d003 beq.n 41e4 if(vdb->buf_act == vdb->buf1) 41dc: 68a1 ldr r1, [r4, #8] 41de: 428b cmp r3, r1 41e0: d001 beq.n 41e6 vdb->buf_act = vdb->buf2; else vdb->buf_act = vdb->buf1; 41e2: 60a3 str r3, [r4, #8] } } 41e4: bd70 pop {r4, r5, r6, pc} vdb->buf_act = vdb->buf2; 41e6: 60a2 str r2, [r4, #8] 41e8: e7fc b.n 41e4 41ea: 46c0 nop ; (mov r8, r8) 41ec: 200026e8 .word 0x200026e8 41f0: 0000f709 .word 0x0000f709 41f4: 0000f70d .word 0x0000f70d 000041f8 : { 41f8: b570 push {r4, r5, r6, lr} 41fa: b082 sub sp, #8 41fc: 0005 movs r5, r0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 41fe: 4e1c ldr r6, [pc, #112] ; (4270 ) 4200: 6830 ldr r0, [r6, #0] 4202: 4b1c ldr r3, [pc, #112] ; (4274 ) 4204: 4798 blx r3 4206: 0004 movs r4, r0 if(lv_disp_is_double_buf(disp_refr) == false) { 4208: 6830 ldr r0, [r6, #0] 420a: 4b1b ldr r3, [pc, #108] ; (4278 ) 420c: 4798 blx r3 420e: 2800 cmp r0, #0 4210: d109 bne.n 4226 if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 4212: 4e17 ldr r6, [pc, #92] ; (4270 ) 4214: 6830 ldr r0, [r6, #0] while(vdb->flushing) { 4216: 69a3 ldr r3, [r4, #24] 4218: 2b00 cmp r3, #0 421a: d004 beq.n 4226 if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 421c: 69c3 ldr r3, [r0, #28] 421e: 2b00 cmp r3, #0 4220: d0f9 beq.n 4216 4222: 4798 blx r3 4224: e7f6 b.n 4214 _lv_area_intersect(&start_mask, area_p, &vdb->area); 4226: 0022 movs r2, r4 4228: 3210 adds r2, #16 422a: 0029 movs r1, r5 422c: 4668 mov r0, sp 422e: 4b13 ldr r3, [pc, #76] ; (427c ) 4230: 4798 blx r3 top_p = lv_refr_get_top_obj(&start_mask, lv_disp_get_scr_act(disp_refr)); 4232: 4c0f ldr r4, [pc, #60] ; (4270 ) 4234: 6820 ldr r0, [r4, #0] 4236: 4b12 ldr r3, [pc, #72] ; (4280 ) 4238: 4798 blx r3 423a: 0001 movs r1, r0 423c: 4668 mov r0, sp 423e: 4b11 ldr r3, [pc, #68] ; (4284 ) 4240: 4798 blx r3 lv_refr_obj_and_children(top_p, &start_mask); 4242: 4669 mov r1, sp 4244: 4d10 ldr r5, [pc, #64] ; (4288 ) 4246: 47a8 blx r5 lv_refr_obj_and_children(lv_disp_get_layer_top(disp_refr), &start_mask); 4248: 6820 ldr r0, [r4, #0] 424a: 4b10 ldr r3, [pc, #64] ; (428c ) 424c: 4798 blx r3 424e: 4669 mov r1, sp 4250: 47a8 blx r5 lv_refr_obj_and_children(lv_disp_get_layer_sys(disp_refr), &start_mask); 4252: 6820 ldr r0, [r4, #0] 4254: 4b0e ldr r3, [pc, #56] ; (4290 ) 4256: 4798 blx r3 4258: 4669 mov r1, sp 425a: 47a8 blx r5 if(lv_disp_is_true_double_buf(disp_refr) == false) { 425c: 6820 ldr r0, [r4, #0] 425e: 4b0d ldr r3, [pc, #52] ; (4294 ) 4260: 4798 blx r3 4262: 2800 cmp r0, #0 4264: d001 beq.n 426a } 4266: b002 add sp, #8 4268: bd70 pop {r4, r5, r6, pc} lv_refr_vdb_flush(); 426a: 4b0b ldr r3, [pc, #44] ; (4298 ) 426c: 4798 blx r3 } 426e: e7fa b.n 4266 4270: 200026e8 .word 0x200026e8 4274: 0000f709 .word 0x0000f709 4278: 0000f70d .word 0x0000f70d 427c: 0000fc0f .word 0x0000fc0f 4280: 000014ad .word 0x000014ad 4284: 00003f59 .word 0x00003f59 4288: 000040e9 .word 0x000040e9 428c: 000014c9 .word 0x000014c9 4290: 000014e5 .word 0x000014e5 4294: 0000f725 .word 0x0000f725 4298: 00004179 .word 0x00004179 0000429c <_lv_refr_init>: } 429c: 4770 bx lr ... 000042a0 <_lv_inv_area>: { 42a0: b5f0 push {r4, r5, r6, r7, lr} 42a2: b085 sub sp, #20 42a4: 0005 movs r5, r0 42a6: 000e movs r6, r1 if(!disp) disp = lv_disp_get_default(); 42a8: 2800 cmp r0, #0 42aa: d057 beq.n 435c <_lv_inv_area+0xbc> if(area_p == NULL) { 42ac: 2e00 cmp r6, #0 42ae: d05a beq.n 4366 <_lv_inv_area+0xc6> scr_area.x1 = 0; 42b0: ac02 add r4, sp, #8 42b2: 2300 movs r3, #0 42b4: 8023 strh r3, [r4, #0] scr_area.y1 = 0; 42b6: 8063 strh r3, [r4, #2] scr_area.x2 = lv_disp_get_hor_res(disp) - 1; 42b8: 0028 movs r0, r5 42ba: 4b37 ldr r3, [pc, #220] ; (4398 <_lv_inv_area+0xf8>) 42bc: 4798 blx r3 42be: 3801 subs r0, #1 42c0: 80a0 strh r0, [r4, #4] scr_area.y2 = lv_disp_get_ver_res(disp) - 1; 42c2: 0028 movs r0, r5 42c4: 4b35 ldr r3, [pc, #212] ; (439c <_lv_inv_area+0xfc>) 42c6: 4798 blx r3 42c8: 3801 subs r0, #1 42ca: 80e0 strh r0, [r4, #6] suc = _lv_area_intersect(&com_area, area_p, &scr_area); 42cc: 0022 movs r2, r4 42ce: 0031 movs r1, r6 42d0: 4668 mov r0, sp 42d2: 4b33 ldr r3, [pc, #204] ; (43a0 <_lv_inv_area+0x100>) 42d4: 4798 blx r3 if(suc != false) { 42d6: 2800 cmp r0, #0 42d8: d04b beq.n 4372 <_lv_inv_area+0xd2> if(disp->driver.rounder_cb) disp->driver.rounder_cb(&disp->driver, &com_area); 42da: 692b ldr r3, [r5, #16] 42dc: 2b00 cmp r3, #0 42de: d002 beq.n 42e6 <_lv_inv_area+0x46> 42e0: 4669 mov r1, sp 42e2: 0028 movs r0, r5 42e4: 4798 blx r3 for(i = 0; i < disp->inv_p; i++) { 42e6: 23b4 movs r3, #180 ; 0xb4 42e8: 005b lsls r3, r3, #1 42ea: 5aeb ldrh r3, [r5, r3] 42ec: 059b lsls r3, r3, #22 42ee: 0d9b lsrs r3, r3, #22 42f0: 2b00 cmp r3, #0 42f2: dd14 ble.n 431e <_lv_inv_area+0x7e> 42f4: 2100 movs r1, #0 42f6: 2400 movs r4, #0 if(_lv_area_is_in(&com_area, &disp->inv_areas[i], 0) != false) return; 42f8: 4e2a ldr r6, [pc, #168] ; (43a4 <_lv_inv_area+0x104>) for(i = 0; i < disp->inv_p; i++) { 42fa: 27b4 movs r7, #180 ; 0xb4 42fc: 007f lsls r7, r7, #1 if(_lv_area_is_in(&com_area, &disp->inv_areas[i], 0) != false) return; 42fe: 3109 adds r1, #9 4300: 00c9 lsls r1, r1, #3 4302: 1869 adds r1, r5, r1 4304: 2200 movs r2, #0 4306: 4668 mov r0, sp 4308: 47b0 blx r6 430a: 2800 cmp r0, #0 430c: d131 bne.n 4372 <_lv_inv_area+0xd2> for(i = 0; i < disp->inv_p; i++) { 430e: 3401 adds r4, #1 4310: b2a4 uxth r4, r4 4312: 0021 movs r1, r4 4314: 5beb ldrh r3, [r5, r7] 4316: 059b lsls r3, r3, #22 4318: 0d9b lsrs r3, r3, #22 431a: 429c cmp r4, r3 431c: dbef blt.n 42fe <_lv_inv_area+0x5e> if(disp->inv_p < LV_INV_BUF_SIZE) { 431e: 2b1f cmp r3, #31 4320: dc29 bgt.n 4376 <_lv_inv_area+0xd6> lv_area_copy(&disp->inv_areas[disp->inv_p], &com_area); 4322: 3309 adds r3, #9 4324: 00db lsls r3, r3, #3 4326: 18eb adds r3, r5, r3 4328: 2200 movs r2, #0 *d8 = *s8; 432a: 4669 mov r1, sp 432c: 5c51 ldrb r1, [r2, r1] 432e: 5499 strb r1, [r3, r2] 4330: 3201 adds r2, #1 while(len) { 4332: 2a08 cmp r2, #8 4334: d1f9 bne.n 432a <_lv_inv_area+0x8a> disp->inv_p++; 4336: 21b4 movs r1, #180 ; 0xb4 4338: 0049 lsls r1, r1, #1 433a: 5a6b ldrh r3, [r5, r1] 433c: 059a lsls r2, r3, #22 433e: 2080 movs r0, #128 ; 0x80 4340: 03c0 lsls r0, r0, #15 4342: 4684 mov ip, r0 4344: 4462 add r2, ip 4346: 0d92 lsrs r2, r2, #22 4348: 0a9b lsrs r3, r3, #10 434a: 029b lsls r3, r3, #10 434c: 4313 orrs r3, r2 434e: 526b strh r3, [r5, r1] lv_task_set_prio(disp->refr_task, LV_REFR_TASK_PRIO); 4350: 6ae8 ldr r0, [r5, #44] ; 0x2c 4352: 3966 subs r1, #102 ; 0x66 4354: 39ff subs r1, #255 ; 0xff 4356: 4b14 ldr r3, [pc, #80] ; (43a8 <_lv_inv_area+0x108>) 4358: 4798 blx r3 435a: e00a b.n 4372 <_lv_inv_area+0xd2> if(!disp) disp = lv_disp_get_default(); 435c: 4b13 ldr r3, [pc, #76] ; (43ac <_lv_inv_area+0x10c>) 435e: 4798 blx r3 4360: 1e05 subs r5, r0, #0 if(!disp) return; 4362: d006 beq.n 4372 <_lv_inv_area+0xd2> 4364: e7a2 b.n 42ac <_lv_inv_area+0xc> disp->inv_p = 0; 4366: 22b4 movs r2, #180 ; 0xb4 4368: 0052 lsls r2, r2, #1 436a: 5aab ldrh r3, [r5, r2] 436c: 0a9b lsrs r3, r3, #10 436e: 029b lsls r3, r3, #10 4370: 52ab strh r3, [r5, r2] } 4372: b005 add sp, #20 4374: bdf0 pop {r4, r5, r6, r7, pc} disp->inv_p = 0; 4376: 22b4 movs r2, #180 ; 0xb4 4378: 0052 lsls r2, r2, #1 437a: 5aab ldrh r3, [r5, r2] 437c: 0a9b lsrs r3, r3, #10 437e: 029b lsls r3, r3, #10 4380: 52ab strh r3, [r5, r2] lv_area_copy(&disp->inv_areas[disp->inv_p], &scr_area); 4382: 0028 movs r0, r5 4384: 3048 adds r0, #72 ; 0x48 4386: 2300 movs r3, #0 *d8 = *s8; 4388: a902 add r1, sp, #8 438a: 5c5a ldrb r2, [r3, r1] 438c: 54c2 strb r2, [r0, r3] 438e: 3301 adds r3, #1 while(len) { 4390: 2b08 cmp r3, #8 4392: d1fa bne.n 438a <_lv_inv_area+0xea> 4394: e7cf b.n 4336 <_lv_inv_area+0x96> 4396: 46c0 nop ; (mov r8, r8) 4398: 0000f615 .word 0x0000f615 439c: 0000f63d .word 0x0000f63d 43a0: 0000fc0f .word 0x0000fc0f 43a4: 0000fe9d .word 0x0000fe9d 43a8: 00011549 .word 0x00011549 43ac: 0000f609 .word 0x0000f609 000043b0 <_lv_refr_get_disp_refreshing>: return disp_refr; 43b0: 4b01 ldr r3, [pc, #4] ; (43b8 <_lv_refr_get_disp_refreshing+0x8>) 43b2: 6818 ldr r0, [r3, #0] } 43b4: 4770 bx lr 43b6: 46c0 nop ; (mov r8, r8) 43b8: 200026e8 .word 0x200026e8 000043bc <_lv_disp_refr_task>: { 43bc: b5f0 push {r4, r5, r6, r7, lr} 43be: 46de mov lr, fp 43c0: 4657 mov r7, sl 43c2: 464e mov r6, r9 43c4: 4645 mov r5, r8 43c6: b5e0 push {r5, r6, r7, lr} 43c8: b089 sub sp, #36 ; 0x24 43ca: 0005 movs r5, r0 uint32_t start = lv_tick_get(); 43cc: 4bc7 ldr r3, [pc, #796] ; (46ec <_lv_disp_refr_task+0x330>) 43ce: 4798 blx r3 43d0: 9005 str r0, [sp, #20] disp_refr = task->user_data; 43d2: 4cc7 ldr r4, [pc, #796] ; (46f0 <_lv_disp_refr_task+0x334>) 43d4: 68eb ldr r3, [r5, #12] 43d6: 6023 str r3, [r4, #0] lv_task_set_prio(task, LV_TASK_PRIO_OFF); 43d8: 2100 movs r1, #0 43da: 0028 movs r0, r5 43dc: 4bc5 ldr r3, [pc, #788] ; (46f4 <_lv_disp_refr_task+0x338>) 43de: 4798 blx r3 if(disp_refr->act_scr == NULL) { 43e0: 6820 ldr r0, [r4, #0] 43e2: 6bc3 ldr r3, [r0, #60] ; 0x3c 43e4: 2b00 cmp r3, #0 43e6: d00e beq.n 4406 <_lv_disp_refr_task+0x4a> for(join_in = 0; join_in < disp_refr->inv_p; join_in++) { 43e8: 23b4 movs r3, #180 ; 0xb4 43ea: 005b lsls r3, r3, #1 43ec: 5ac3 ldrh r3, [r0, r3] 43ee: 059b lsls r3, r3, #22 43f0: 2748 movs r7, #72 ; 0x48 43f2: 2600 movs r6, #0 43f4: 2b00 cmp r3, #0 43f6: d100 bne.n 43fa <_lv_disp_refr_task+0x3e> 43f8: e284 b.n 4904 <_lv_disp_refr_task+0x548> for(join_from = 0; join_from < disp_refr->inv_p; join_from++) { 43fa: 4bbd ldr r3, [pc, #756] ; (46f0 <_lv_disp_refr_task+0x334>) 43fc: 4698 mov r8, r3 if(_lv_area_is_on(&disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]) == false) { 43fe: 4bbe ldr r3, [pc, #760] ; (46f8 <_lv_disp_refr_task+0x33c>) 4400: 469a mov sl, r3 _lv_area_join(&joined_area, &disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]); 4402: 46c3 mov fp, r8 4404: e056 b.n 44b4 <_lv_disp_refr_task+0xf8> disp_refr->inv_p = 0; 4406: 22b4 movs r2, #180 ; 0xb4 4408: 0052 lsls r2, r2, #1 440a: 5a83 ldrh r3, [r0, r2] 440c: 0a9b lsrs r3, r3, #10 440e: 029b lsls r3, r3, #10 4410: 5283 strh r3, [r0, r2] return; 4412: e26d b.n 48f0 <_lv_disp_refr_task+0x534> disp_refr->inv_area_joined[join_from] = 1; 4414: 1900 adds r0, r0, r4 4416: 3049 adds r0, #73 ; 0x49 4418: 30ff adds r0, #255 ; 0xff 441a: 3b07 subs r3, #7 441c: 7003 strb r3, [r0, #0] for(join_from = 0; join_from < disp_refr->inv_p; join_from++) { 441e: 3401 adds r4, #1 4420: 4bb3 ldr r3, [pc, #716] ; (46f0 <_lv_disp_refr_task+0x334>) 4422: 6818 ldr r0, [r3, #0] 4424: 23b4 movs r3, #180 ; 0xb4 4426: 005b lsls r3, r3, #1 4428: 5ac3 ldrh r3, [r0, r3] 442a: 059b lsls r3, r3, #22 442c: 0d9b lsrs r3, r3, #22 442e: 429c cmp r4, r3 4430: d235 bcs.n 449e <_lv_disp_refr_task+0xe2> if(disp_refr->inv_area_joined[join_from] != 0 || join_in == join_from) { 4432: 1903 adds r3, r0, r4 4434: 3349 adds r3, #73 ; 0x49 4436: 33ff adds r3, #255 ; 0xff 4438: 781b ldrb r3, [r3, #0] 443a: 2b00 cmp r3, #0 443c: d1ef bne.n 441e <_lv_disp_refr_task+0x62> 443e: 42a6 cmp r6, r4 4440: d0ed beq.n 441e <_lv_disp_refr_task+0x62> 4442: 0025 movs r5, r4 4444: 3509 adds r5, #9 4446: 00ed lsls r5, r5, #3 if(_lv_area_is_on(&disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]) == false) { 4448: 1941 adds r1, r0, r5 444a: 19c0 adds r0, r0, r7 444c: 47d0 blx sl 444e: 2800 cmp r0, #0 4450: d0e5 beq.n 441e <_lv_disp_refr_task+0x62> _lv_area_join(&joined_area, &disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]); 4452: 465b mov r3, fp 4454: 6819 ldr r1, [r3, #0] 4456: 194a adds r2, r1, r5 4458: 19c9 adds r1, r1, r7 445a: a806 add r0, sp, #24 445c: 4ba7 ldr r3, [pc, #668] ; (46fc <_lv_disp_refr_task+0x340>) 445e: 4798 blx r3 if(lv_area_get_size(&joined_area) < (lv_area_get_size(&disp_refr->inv_areas[join_in]) + 4460: a806 add r0, sp, #24 4462: 4ba7 ldr r3, [pc, #668] ; (4700 <_lv_disp_refr_task+0x344>) 4464: 4699 mov r9, r3 4466: 4798 blx r3 4468: 9000 str r0, [sp, #0] 446a: 465b mov r3, fp 446c: 681b ldr r3, [r3, #0] 446e: 19d8 adds r0, r3, r7 4470: 47c8 blx r9 4472: 9001 str r0, [sp, #4] lv_area_get_size(&disp_refr->inv_areas[join_from]))) { 4474: 465b mov r3, fp 4476: 681b ldr r3, [r3, #0] 4478: 1958 adds r0, r3, r5 447a: 47c8 blx r9 if(lv_area_get_size(&joined_area) < (lv_area_get_size(&disp_refr->inv_areas[join_in]) + 447c: 9b01 ldr r3, [sp, #4] 447e: 469c mov ip, r3 4480: 4460 add r0, ip 4482: 9b00 ldr r3, [sp, #0] 4484: 4283 cmp r3, r0 4486: d2ca bcs.n 441e <_lv_disp_refr_task+0x62> lv_area_copy(&disp_refr->inv_areas[join_in], &joined_area); 4488: 4b99 ldr r3, [pc, #612] ; (46f0 <_lv_disp_refr_task+0x334>) 448a: 6818 ldr r0, [r3, #0] 448c: 19c1 adds r1, r0, r7 448e: 2300 movs r3, #0 *d8 = *s8; 4490: aa06 add r2, sp, #24 4492: 5c9a ldrb r2, [r3, r2] 4494: 54ca strb r2, [r1, r3] 4496: 3301 adds r3, #1 while(len) { 4498: 2b08 cmp r3, #8 449a: d1f9 bne.n 4490 <_lv_disp_refr_task+0xd4> 449c: e7ba b.n 4414 <_lv_disp_refr_task+0x58> for(join_in = 0; join_in < disp_refr->inv_p; join_in++) { 449e: 3601 adds r6, #1 44a0: 4b93 ldr r3, [pc, #588] ; (46f0 <_lv_disp_refr_task+0x334>) 44a2: 6818 ldr r0, [r3, #0] 44a4: 23b4 movs r3, #180 ; 0xb4 44a6: 005b lsls r3, r3, #1 44a8: 5ac3 ldrh r3, [r0, r3] 44aa: 059b lsls r3, r3, #22 44ac: 0d9b lsrs r3, r3, #22 44ae: 3708 adds r7, #8 44b0: 429e cmp r6, r3 44b2: d20f bcs.n 44d4 <_lv_disp_refr_task+0x118> if(disp_refr->inv_area_joined[join_in] != 0) continue; 44b4: 1980 adds r0, r0, r6 44b6: 3049 adds r0, #73 ; 0x49 44b8: 30ff adds r0, #255 ; 0xff 44ba: 7803 ldrb r3, [r0, #0] 44bc: 2b00 cmp r3, #0 44be: d1ee bne.n 449e <_lv_disp_refr_task+0xe2> for(join_from = 0; join_from < disp_refr->inv_p; join_from++) { 44c0: 4643 mov r3, r8 44c2: 6818 ldr r0, [r3, #0] 44c4: 23b4 movs r3, #180 ; 0xb4 44c6: 005b lsls r3, r3, #1 44c8: 5ac3 ldrh r3, [r0, r3] 44ca: 059b lsls r3, r3, #22 44cc: d100 bne.n 44d0 <_lv_disp_refr_task+0x114> 44ce: e1fb b.n 48c8 <_lv_disp_refr_task+0x50c> 44d0: 2400 movs r4, #0 44d2: e7ae b.n 4432 <_lv_disp_refr_task+0x76> px_num = 0; 44d4: 2100 movs r1, #0 44d6: 4a8b ldr r2, [pc, #556] ; (4704 <_lv_disp_refr_task+0x348>) 44d8: 6011 str r1, [r2, #0] if(disp_refr->inv_p == 0) return; 44da: 22b4 movs r2, #180 ; 0xb4 44dc: 0052 lsls r2, r2, #1 44de: 5a82 ldrh r2, [r0, r2] 44e0: 0592 lsls r2, r2, #22 44e2: d100 bne.n 44e6 <_lv_disp_refr_task+0x12a> 44e4: e1f8 b.n 48d8 <_lv_disp_refr_task+0x51c> for(i = disp_refr->inv_p - 1; i >= 0; i--) { 44e6: 001a movs r2, r3 44e8: 3a01 subs r2, #1 44ea: 9204 str r2, [sp, #16] 44ec: d42d bmi.n 454a <_lv_disp_refr_task+0x18e> if(disp_refr->inv_area_joined[i] == 0) { 44ee: 9904 ldr r1, [sp, #16] 44f0: 1842 adds r2, r0, r1 44f2: 3249 adds r2, #73 ; 0x49 44f4: 32ff adds r2, #255 ; 0xff 44f6: 7812 ldrb r2, [r2, #0] 44f8: 2a00 cmp r2, #0 44fa: d00d beq.n 4518 <_lv_disp_refr_task+0x15c> 44fc: 3347 adds r3, #71 ; 0x47 44fe: 33ff adds r3, #255 ; 0xff 4500: 18c3 adds r3, r0, r3 4502: 000a movs r2, r1 for(i = disp_refr->inv_p - 1; i >= 0; i--) { 4504: 3a01 subs r2, #1 4506: d305 bcc.n 4514 <_lv_disp_refr_task+0x158> 4508: 3b01 subs r3, #1 if(disp_refr->inv_area_joined[i] == 0) { 450a: 7859 ldrb r1, [r3, #1] 450c: 2900 cmp r1, #0 450e: d1f9 bne.n 4504 <_lv_disp_refr_task+0x148> 4510: 9204 str r2, [sp, #16] 4512: e001 b.n 4518 <_lv_disp_refr_task+0x15c> int32_t last_i = 0; 4514: 2300 movs r3, #0 4516: 9304 str r3, [sp, #16] disp_refr->driver.buffer->last_area = 0; 4518: 6841 ldr r1, [r0, #4] 451a: 2320 movs r3, #32 451c: 5cca ldrb r2, [r1, r3] 451e: 2401 movs r4, #1 4520: 43a2 bics r2, r4 4522: 54ca strb r2, [r1, r3] disp_refr->driver.buffer->last_part = 0; 4524: 6841 ldr r1, [r0, #4] 4526: 5cca ldrb r2, [r1, r3] 4528: 2002 movs r0, #2 452a: 4382 bics r2, r0 452c: 54ca strb r2, [r1, r3] for(i = 0; i < disp_refr->inv_p; i++) { 452e: 4b70 ldr r3, [pc, #448] ; (46f0 <_lv_disp_refr_task+0x334>) 4530: 681c ldr r4, [r3, #0] 4532: 23b4 movs r3, #180 ; 0xb4 4534: 005b lsls r3, r3, #1 4536: 5ae3 ldrh r3, [r4, r3] 4538: 059b lsls r3, r3, #22 453a: d100 bne.n 453e <_lv_disp_refr_task+0x182> 453c: e1cc b.n 48d8 <_lv_disp_refr_task+0x51c> 453e: 2348 movs r3, #72 ; 0x48 4540: 9301 str r3, [sp, #4] 4542: 2300 movs r3, #0 4544: 469b mov fp, r3 if(y2 == row_last) disp_refr->driver.buffer->last_part = 1; 4546: 0027 movs r7, r4 4548: e044 b.n 45d4 <_lv_disp_refr_task+0x218> int32_t last_i = 0; 454a: 2300 movs r3, #0 454c: 9304 str r3, [sp, #16] 454e: e7e3 b.n 4518 <_lv_disp_refr_task+0x15c> if(i == last_i) disp_refr->driver.buffer->last_area = 1; 4550: 6879 ldr r1, [r7, #4] 4552: 2220 movs r2, #32 4554: 5c8b ldrb r3, [r1, r2] 4556: 2001 movs r0, #1 4558: 4303 orrs r3, r0 455a: 548b strb r3, [r1, r2] 455c: e044 b.n 45e8 <_lv_disp_refr_task+0x22c> lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 455e: 4c64 ldr r4, [pc, #400] ; (46f0 <_lv_disp_refr_task+0x334>) 4560: 6820 ldr r0, [r4, #0] 4562: 4b69 ldr r3, [pc, #420] ; (4708 <_lv_disp_refr_task+0x34c>) 4564: 4798 blx r3 4566: 0005 movs r5, r0 vdb->area.x1 = 0; 4568: 2600 movs r6, #0 456a: 8206 strh r6, [r0, #16] vdb->area.x2 = lv_disp_get_hor_res(disp_refr) - 1; 456c: 6820 ldr r0, [r4, #0] 456e: 4b67 ldr r3, [pc, #412] ; (470c <_lv_disp_refr_task+0x350>) 4570: 4798 blx r3 4572: 3801 subs r0, #1 4574: 82a8 strh r0, [r5, #20] vdb->area.y1 = 0; 4576: 826e strh r6, [r5, #18] vdb->area.y2 = lv_disp_get_ver_res(disp_refr) - 1; 4578: 6820 ldr r0, [r4, #0] 457a: 4b65 ldr r3, [pc, #404] ; (4710 <_lv_disp_refr_task+0x354>) 457c: 4798 blx r3 457e: 3801 subs r0, #1 4580: 82e8 strh r0, [r5, #22] disp_refr->driver.buffer->last_part = 1; 4582: 6823 ldr r3, [r4, #0] 4584: 6859 ldr r1, [r3, #4] 4586: 2220 movs r2, #32 4588: 5c8b ldrb r3, [r1, r2] 458a: 2002 movs r0, #2 458c: 4303 orrs r3, r0 458e: 548b strb r3, [r1, r2] lv_refr_area_part(area_p); 4590: 9800 ldr r0, [sp, #0] 4592: 4b60 ldr r3, [pc, #384] ; (4714 <_lv_disp_refr_task+0x358>) 4594: 4798 blx r3 if(disp_refr->driver.monitor_cb) px_num += lv_area_get_size(&disp_refr->inv_areas[i]); 4596: 4b56 ldr r3, [pc, #344] ; (46f0 <_lv_disp_refr_task+0x334>) 4598: 6818 ldr r0, [r3, #0] 459a: 6983 ldr r3, [r0, #24] 459c: 2b00 cmp r3, #0 459e: d009 beq.n 45b4 <_lv_disp_refr_task+0x1f8> 45a0: 9b01 ldr r3, [sp, #4] 45a2: 469c mov ip, r3 45a4: 4460 add r0, ip 45a6: 4b56 ldr r3, [pc, #344] ; (4700 <_lv_disp_refr_task+0x344>) 45a8: 4798 blx r3 45aa: 4b56 ldr r3, [pc, #344] ; (4704 <_lv_disp_refr_task+0x348>) 45ac: 681a ldr r2, [r3, #0] 45ae: 4694 mov ip, r2 45b0: 4460 add r0, ip 45b2: 6018 str r0, [r3, #0] for(i = 0; i < disp_refr->inv_p; i++) { 45b4: 2301 movs r3, #1 45b6: 469c mov ip, r3 45b8: 44e3 add fp, ip 45ba: 4b4d ldr r3, [pc, #308] ; (46f0 <_lv_disp_refr_task+0x334>) 45bc: 681f ldr r7, [r3, #0] 45be: 9b01 ldr r3, [sp, #4] 45c0: 3308 adds r3, #8 45c2: 9301 str r3, [sp, #4] 45c4: 23b4 movs r3, #180 ; 0xb4 45c6: 005b lsls r3, r3, #1 45c8: 5afb ldrh r3, [r7, r3] 45ca: 059b lsls r3, r3, #22 45cc: 0d9b lsrs r3, r3, #22 45ce: 459b cmp fp, r3 45d0: db00 blt.n 45d4 <_lv_disp_refr_task+0x218> 45d2: e181 b.n 48d8 <_lv_disp_refr_task+0x51c> if(disp_refr->inv_area_joined[i] == 0) { 45d4: 465b mov r3, fp 45d6: 18fb adds r3, r7, r3 45d8: 3349 adds r3, #73 ; 0x49 45da: 33ff adds r3, #255 ; 0xff 45dc: 781b ldrb r3, [r3, #0] 45de: 2b00 cmp r3, #0 45e0: d1e8 bne.n 45b4 <_lv_disp_refr_task+0x1f8> if(i == last_i) disp_refr->driver.buffer->last_area = 1; 45e2: 9b04 ldr r3, [sp, #16] 45e4: 455b cmp r3, fp 45e6: d0b3 beq.n 4550 <_lv_disp_refr_task+0x194> disp_refr->driver.buffer->last_part = 0; 45e8: 6879 ldr r1, [r7, #4] 45ea: 2220 movs r2, #32 45ec: 5c8b ldrb r3, [r1, r2] 45ee: 2002 movs r0, #2 45f0: 4383 bics r3, r0 45f2: 548b strb r3, [r1, r2] lv_refr_area(&disp_refr->inv_areas[i]); 45f4: 9b01 ldr r3, [sp, #4] 45f6: 469c mov ip, r3 45f8: 44bc add ip, r7 45fa: 4663 mov r3, ip 45fc: 9300 str r3, [sp, #0] if(lv_disp_is_true_double_buf(disp_refr)) { 45fe: 0038 movs r0, r7 4600: 4b45 ldr r3, [pc, #276] ; (4718 <_lv_disp_refr_task+0x35c>) 4602: 4798 blx r3 4604: 2800 cmp r0, #0 4606: d1aa bne.n 455e <_lv_disp_refr_task+0x1a2> lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 4608: 4b39 ldr r3, [pc, #228] ; (46f0 <_lv_disp_refr_task+0x334>) 460a: 469a mov sl, r3 460c: 6818 ldr r0, [r3, #0] 460e: 4b3e ldr r3, [pc, #248] ; (4708 <_lv_disp_refr_task+0x34c>) 4610: 4798 blx r3 4612: 0006 movs r6, r0 4614: 465b mov r3, fp 4616: 00db lsls r3, r3, #3 4618: 18ff adds r7, r7, r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 461a: 234c movs r3, #76 ; 0x4c 461c: 5afc ldrh r4, [r7, r3] 461e: 3401 adds r4, #1 4620: 3b04 subs r3, #4 4622: 5afb ldrh r3, [r7, r3] 4624: 1ae4 subs r4, r4, r3 4626: b223 sxth r3, r4 4628: 4698 mov r8, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 462a: 234e movs r3, #78 ; 0x4e 462c: 5efc ldrsh r4, [r7, r3] 462e: 1c65 adds r5, r4, #1 4630: 234a movs r3, #74 ; 0x4a 4632: 5afb ldrh r3, [r7, r3] 4634: 1aed subs r5, r5, r3 4636: b22d sxth r5, r5 area_p->y2 >= lv_disp_get_ver_res(disp_refr) ? lv_disp_get_ver_res(disp_refr) - 1 : area_p->y2; 4638: 4653 mov r3, sl 463a: 6818 ldr r0, [r3, #0] 463c: 4b34 ldr r3, [pc, #208] ; (4710 <_lv_disp_refr_task+0x354>) 463e: 4798 blx r3 lv_coord_t y2 = 4640: 4284 cmp r4, r0 4642: da31 bge.n 46a8 <_lv_disp_refr_task+0x2ec> 4644: 234e movs r3, #78 ; 0x4e 4646: 5efb ldrsh r3, [r7, r3] 4648: 4699 mov r9, r3 int32_t max_row = (uint32_t)vdb->size / w; 464a: 4641 mov r1, r8 464c: 68f0 ldr r0, [r6, #12] 464e: 4b33 ldr r3, [pc, #204] ; (471c <_lv_disp_refr_task+0x360>) 4650: 4798 blx r3 4652: 46a8 mov r8, r5 4654: 4285 cmp r5, r0 4656: dd00 ble.n 465a <_lv_disp_refr_task+0x29e> 4658: 4680 mov r8, r0 if(disp_refr->driver.rounder_cb) { 465a: 4b25 ldr r3, [pc, #148] ; (46f0 <_lv_disp_refr_task+0x334>) 465c: 681b ldr r3, [r3, #0] 465e: 691b ldr r3, [r3, #16] 4660: 2b00 cmp r3, #0 4662: d02f beq.n 46c4 <_lv_disp_refr_task+0x308> tmp.x1 = 0; 4664: 2300 movs r3, #0 4666: aa06 add r2, sp, #24 4668: 8013 strh r3, [r2, #0] tmp.x2 = 0; 466a: 8093 strh r3, [r2, #4] tmp.y1 = 0; 466c: 8053 strh r3, [r2, #2] lv_coord_t h_tmp = max_row; 466e: 4643 mov r3, r8 4670: b21d sxth r5, r3 disp_refr->driver.rounder_cb(&disp_refr->driver, &tmp); 4672: 4b1f ldr r3, [pc, #124] ; (46f0 <_lv_disp_refr_task+0x334>) 4674: 469a mov sl, r3 4676: 4643 mov r3, r8 4678: 46b0 mov r8, r6 467a: 001e movs r6, r3 467c: 1e6c subs r4, r5, #1 467e: b224 sxth r4, r4 tmp.y2 = h_tmp - 1; 4680: ab06 add r3, sp, #24 4682: 80dc strh r4, [r3, #6] disp_refr->driver.rounder_cb(&disp_refr->driver, &tmp); 4684: 4653 mov r3, sl 4686: 6818 ldr r0, [r3, #0] 4688: 6903 ldr r3, [r0, #16] 468a: a906 add r1, sp, #24 468c: 4798 blx r3 468e: ab06 add r3, sp, #24 4690: 2106 movs r1, #6 4692: 5e59 ldrsh r1, [r3, r1] 4694: 1c4b adds r3, r1, #1 4696: aa06 add r2, sp, #24 4698: 8852 ldrh r2, [r2, #2] 469a: 1a9b subs r3, r3, r2 if(lv_area_get_height(&tmp) <= max_row) break; 469c: b21b sxth r3, r3 469e: 429e cmp r6, r3 46a0: da0a bge.n 46b8 <_lv_disp_refr_task+0x2fc> h_tmp--; 46a2: 1e25 subs r5, r4, #0 } while(h_tmp > 0); 46a4: dcea bgt.n 467c <_lv_disp_refr_task+0x2c0> 46a6: e776 b.n 4596 <_lv_disp_refr_task+0x1da> area_p->y2 >= lv_disp_get_ver_res(disp_refr) ? lv_disp_get_ver_res(disp_refr) - 1 : area_p->y2; 46a8: 4b11 ldr r3, [pc, #68] ; (46f0 <_lv_disp_refr_task+0x334>) 46aa: 6818 ldr r0, [r3, #0] 46ac: 4b18 ldr r3, [pc, #96] ; (4710 <_lv_disp_refr_task+0x354>) 46ae: 4798 blx r3 46b0: 3801 subs r0, #1 lv_coord_t y2 = 46b2: b203 sxth r3, r0 46b4: 4699 mov r9, r3 46b6: e7c8 b.n 464a <_lv_disp_refr_task+0x28e> 46b8: 4646 mov r6, r8 if(h_tmp <= 0) { 46ba: 2d00 cmp r5, #0 46bc: dc00 bgt.n 46c0 <_lv_disp_refr_task+0x304> 46be: e76a b.n 4596 <_lv_disp_refr_task+0x1da> max_row = tmp.y2 + 1; 46c0: 1c4b adds r3, r1, #1 46c2: 4698 mov r8, r3 for(row = area_p->y1; row + max_row - 1 <= y2; row += max_row) { 46c4: 234a movs r3, #74 ; 0x4a 46c6: 5efc ldrsh r4, [r7, r3] 46c8: 464b mov r3, r9 46ca: 9302 str r3, [sp, #8] 46cc: 4643 mov r3, r8 46ce: 18e3 adds r3, r4, r3 46d0: 3b01 subs r3, #1 46d2: 454b cmp r3, r9 46d4: dc67 bgt.n 47a6 <_lv_disp_refr_task+0x3ea> vdb->area.y2 = row + max_row - 1; 46d6: 4643 mov r3, r8 46d8: 466a mov r2, sp 46da: 8193 strh r3, [r2, #12] 46dc: 8993 ldrh r3, [r2, #12] 46de: 469a mov sl, r3 46e0: 3b01 subs r3, #1 46e2: 9303 str r3, [sp, #12] 46e4: 464b mov r3, r9 46e6: 46b9 mov r9, r7 46e8: 001f movs r7, r3 46ea: e026 b.n 473a <_lv_disp_refr_task+0x37e> 46ec: 0000f78d .word 0x0000f78d 46f0: 200026e8 .word 0x200026e8 46f4: 00011549 .word 0x00011549 46f8: 0000fe59 .word 0x0000fe59 46fc: 0000fc7d .word 0x0000fc7d 4700: 0000fbf3 .word 0x0000fbf3 4704: 200026ec .word 0x200026ec 4708: 0000f709 .word 0x0000f709 470c: 0000f615 .word 0x0000f615 4710: 0000f63d .word 0x0000f63d 4714: 000041f9 .word 0x000041f9 4718: 0000f725 .word 0x0000f725 471c: 00017881 .word 0x00017881 if(y2 == row_last) disp_refr->driver.buffer->last_part = 1; 4720: 42af cmp r7, r5 4722: d01c beq.n 475e <_lv_disp_refr_task+0x3a2> lv_refr_area_part(area_p); 4724: 9800 ldr r0, [sp, #0] 4726: 4b7d ldr r3, [pc, #500] ; (491c <_lv_disp_refr_task+0x560>) 4728: 4798 blx r3 472a: 4454 add r4, sl 472c: b224 sxth r4, r4 for(row = area_p->y1; row + max_row - 1 <= y2; row += max_row) { 472e: 4643 mov r3, r8 4730: 18e3 adds r3, r4, r3 4732: 3b01 subs r3, #1 4734: 9a02 ldr r2, [sp, #8] 4736: 4293 cmp r3, r2 4738: dc1a bgt.n 4770 <_lv_disp_refr_task+0x3b4> vdb->area.x1 = area_p->x1; 473a: 2348 movs r3, #72 ; 0x48 473c: 464a mov r2, r9 473e: 5ed3 ldrsh r3, [r2, r3] 4740: 8233 strh r3, [r6, #16] vdb->area.x2 = area_p->x2; 4742: 234c movs r3, #76 ; 0x4c 4744: 464a mov r2, r9 4746: 5ed3 ldrsh r3, [r2, r3] 4748: 82b3 strh r3, [r6, #20] vdb->area.y1 = row; 474a: 8274 strh r4, [r6, #18] 474c: b2a4 uxth r4, r4 474e: 9b03 ldr r3, [sp, #12] 4750: 18e5 adds r5, r4, r3 4752: b22d sxth r5, r5 vdb->area.y2 = row + max_row - 1; 4754: 82f5 strh r5, [r6, #22] if(vdb->area.y2 > y2) vdb->area.y2 = y2; 4756: 42af cmp r7, r5 4758: dae2 bge.n 4720 <_lv_disp_refr_task+0x364> 475a: 82f7 strh r7, [r6, #22] row_last = vdb->area.y2; 475c: 003d movs r5, r7 if(y2 == row_last) disp_refr->driver.buffer->last_part = 1; 475e: 4b70 ldr r3, [pc, #448] ; (4920 <_lv_disp_refr_task+0x564>) 4760: 681b ldr r3, [r3, #0] 4762: 6859 ldr r1, [r3, #4] 4764: 2220 movs r2, #32 4766: 5c8b ldrb r3, [r1, r2] 4768: 2002 movs r0, #2 476a: 4303 orrs r3, r0 476c: 548b strb r3, [r1, r2] 476e: e7d9 b.n 4724 <_lv_disp_refr_task+0x368> 4770: 003b movs r3, r7 4772: 464f mov r7, r9 4774: 4699 mov r9, r3 if(y2 != row_last) { 4776: 45a9 cmp r9, r5 4778: d100 bne.n 477c <_lv_disp_refr_task+0x3c0> 477a: e70c b.n 4596 <_lv_disp_refr_task+0x1da> vdb->area.x1 = area_p->x1; 477c: 2348 movs r3, #72 ; 0x48 477e: 5efb ldrsh r3, [r7, r3] 4780: 8233 strh r3, [r6, #16] vdb->area.x2 = area_p->x2; 4782: 234c movs r3, #76 ; 0x4c 4784: 5efb ldrsh r3, [r7, r3] 4786: 82b3 strh r3, [r6, #20] vdb->area.y1 = row; 4788: 8274 strh r4, [r6, #18] vdb->area.y2 = y2; 478a: 464b mov r3, r9 478c: 82f3 strh r3, [r6, #22] disp_refr->driver.buffer->last_part = 1; 478e: 4b64 ldr r3, [pc, #400] ; (4920 <_lv_disp_refr_task+0x564>) 4790: 681b ldr r3, [r3, #0] 4792: 6859 ldr r1, [r3, #4] 4794: 2220 movs r2, #32 4796: 5c8b ldrb r3, [r1, r2] 4798: 2002 movs r0, #2 479a: 4303 orrs r3, r0 479c: 548b strb r3, [r1, r2] lv_refr_area_part(area_p); 479e: 9800 ldr r0, [sp, #0] 47a0: 4b5e ldr r3, [pc, #376] ; (491c <_lv_disp_refr_task+0x560>) 47a2: 4798 blx r3 47a4: e6f7 b.n 4596 <_lv_disp_refr_task+0x1da> lv_coord_t row_last = 0; 47a6: 2500 movs r5, #0 47a8: e7e5 b.n 4776 <_lv_disp_refr_task+0x3ba> if(lv_disp_is_true_double_buf(disp_refr) && disp_refr->driver.set_px_cb == NULL) { 47aa: 4b5e ldr r3, [pc, #376] ; (4924 <_lv_disp_refr_task+0x568>) 47ac: 4798 blx r3 47ae: 2800 cmp r0, #0 47b0: d004 beq.n 47bc <_lv_disp_refr_task+0x400> 47b2: 4b5b ldr r3, [pc, #364] ; (4920 <_lv_disp_refr_task+0x564>) 47b4: 6818 ldr r0, [r3, #0] 47b6: 6943 ldr r3, [r0, #20] 47b8: 2b00 cmp r3, #0 47ba: d01f beq.n 47fc <_lv_disp_refr_task+0x440> _lv_memset_00(disp_refr->inv_areas, sizeof(disp_refr->inv_areas)); 47bc: 4c58 ldr r4, [pc, #352] ; (4920 <_lv_disp_refr_task+0x564>) 47be: 6820 ldr r0, [r4, #0] 47c0: 3048 adds r0, #72 ; 0x48 47c2: 2180 movs r1, #128 ; 0x80 47c4: 0049 lsls r1, r1, #1 47c6: 4d58 ldr r5, [pc, #352] ; (4928 <_lv_disp_refr_task+0x56c>) 47c8: 47a8 blx r5 _lv_memset_00(disp_refr->inv_area_joined, sizeof(disp_refr->inv_area_joined)); 47ca: 6820 ldr r0, [r4, #0] 47cc: 3049 adds r0, #73 ; 0x49 47ce: 30ff adds r0, #255 ; 0xff 47d0: 2120 movs r1, #32 47d2: 47a8 blx r5 disp_refr->inv_p = 0; 47d4: 6821 ldr r1, [r4, #0] 47d6: 22b4 movs r2, #180 ; 0xb4 47d8: 0052 lsls r2, r2, #1 47da: 5a8b ldrh r3, [r1, r2] 47dc: 0a9b lsrs r3, r3, #10 47de: 029b lsls r3, r3, #10 47e0: 528b strh r3, [r1, r2] elaps = lv_tick_elaps(start); 47e2: 9805 ldr r0, [sp, #20] 47e4: 4b51 ldr r3, [pc, #324] ; (492c <_lv_disp_refr_task+0x570>) 47e6: 4798 blx r3 47e8: 0001 movs r1, r0 if(disp_refr->driver.monitor_cb) { 47ea: 6820 ldr r0, [r4, #0] 47ec: 6983 ldr r3, [r0, #24] 47ee: 2b00 cmp r3, #0 47f0: d100 bne.n 47f4 <_lv_disp_refr_task+0x438> 47f2: e079 b.n 48e8 <_lv_disp_refr_task+0x52c> disp_refr->driver.monitor_cb(&disp_refr->driver, elaps, px_num); 47f4: 4a4e ldr r2, [pc, #312] ; (4930 <_lv_disp_refr_task+0x574>) 47f6: 6812 ldr r2, [r2, #0] 47f8: 4798 blx r3 47fa: e075 b.n 48e8 <_lv_disp_refr_task+0x52c> lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 47fc: 4b4d ldr r3, [pc, #308] ; (4934 <_lv_disp_refr_task+0x578>) 47fe: 4798 blx r3 4800: 0004 movs r4, r0 lv_refr_vdb_flush(); 4802: 4b4d ldr r3, [pc, #308] ; (4938 <_lv_disp_refr_task+0x57c>) 4804: 4798 blx r3 while(vdb->flushing) 4806: 69a3 ldr r3, [r4, #24] 4808: 2b00 cmp r3, #0 480a: d1fc bne.n 4806 <_lv_disp_refr_task+0x44a> uint8_t * buf_act = (uint8_t *)vdb->buf_act; 480c: 68a3 ldr r3, [r4, #8] 480e: 469b mov fp, r3 uint8_t * buf_ina = (uint8_t *)vdb->buf_act == vdb->buf1 ? vdb->buf2 : vdb->buf1; 4810: 6823 ldr r3, [r4, #0] 4812: 4699 mov r9, r3 4814: 459b cmp fp, r3 4816: d101 bne.n 481c <_lv_disp_refr_task+0x460> 4818: 6863 ldr r3, [r4, #4] 481a: 4699 mov r9, r3 lv_coord_t hres = lv_disp_get_hor_res(disp_refr); 481c: 4c40 ldr r4, [pc, #256] ; (4920 <_lv_disp_refr_task+0x564>) 481e: 6820 ldr r0, [r4, #0] 4820: 4b46 ldr r3, [pc, #280] ; (493c <_lv_disp_refr_task+0x580>) 4822: 4798 blx r3 4824: 9000 str r0, [sp, #0] for(a = 0; a < disp_refr->inv_p; a++) { 4826: 6823 ldr r3, [r4, #0] 4828: 22b4 movs r2, #180 ; 0xb4 482a: 0052 lsls r2, r2, #1 482c: 5a9a ldrh r2, [r3, r2] 482e: 0592 lsls r2, r2, #22 4830: d0c4 beq.n 47bc <_lv_disp_refr_task+0x400> start_offs += hres * sizeof(lv_color_t); 4832: 0042 lsls r2, r0, #1 4834: 4692 mov sl, r2 4836: 2600 movs r6, #0 for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 4838: 0035 movs r5, r6 483a: e00b b.n 4854 <_lv_disp_refr_task+0x498> for(a = 0; a < disp_refr->inv_p; a++) { 483c: 3601 adds r6, #1 483e: b2b6 uxth r6, r6 4840: 0035 movs r5, r6 4842: 4b37 ldr r3, [pc, #220] ; (4920 <_lv_disp_refr_task+0x564>) 4844: 681b ldr r3, [r3, #0] 4846: 22b4 movs r2, #180 ; 0xb4 4848: 0052 lsls r2, r2, #1 484a: 5a9a ldrh r2, [r3, r2] 484c: 0592 lsls r2, r2, #22 484e: 0d92 lsrs r2, r2, #22 4850: 4296 cmp r6, r2 4852: dab3 bge.n 47bc <_lv_disp_refr_task+0x400> if(disp_refr->inv_area_joined[a] == 0) { 4854: 195a adds r2, r3, r5 4856: 3249 adds r2, #73 ; 0x49 4858: 32ff adds r2, #255 ; 0xff 485a: 7812 ldrb r2, [r2, #0] 485c: 2a00 cmp r2, #0 485e: d1ed bne.n 483c <_lv_disp_refr_task+0x480> 4860: 00ea lsls r2, r5, #3 4862: 189b adds r3, r3, r2 (hres * disp_refr->inv_areas[a].y1 + disp_refr->inv_areas[a].x1) * sizeof(lv_color_t); 4864: 224a movs r2, #74 ; 0x4a 4866: 5e9f ldrsh r7, [r3, r2] 4868: 2248 movs r2, #72 ; 0x48 486a: 5e9a ldrsh r2, [r3, r2] 486c: 9c00 ldr r4, [sp, #0] 486e: 437c muls r4, r7 4870: 18a4 adds r4, r4, r2 uint32_t start_offs = 4872: 0064 lsls r4, r4, #1 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 4874: 214c movs r1, #76 ; 0x4c 4876: 5a5b ldrh r3, [r3, r1] 4878: 3301 adds r3, #1 487a: 1a9b subs r3, r3, r2 uint32_t line_length = lv_area_get_width(&disp_refr->inv_areas[a]) * sizeof(lv_color_t); 487c: b21b sxth r3, r3 487e: 005b lsls r3, r3, #1 4880: 9301 str r3, [sp, #4] for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 4882: 002b movs r3, r5 4884: 3309 adds r3, #9 4886: 00db lsls r3, r3, #3 4888: 4a25 ldr r2, [pc, #148] ; (4920 <_lv_disp_refr_task+0x564>) 488a: 6812 ldr r2, [r2, #0] 488c: 9202 str r2, [sp, #8] 488e: 4694 mov ip, r2 4890: 4463 add r3, ip 4892: 2206 movs r2, #6 4894: 5e9b ldrsh r3, [r3, r2] 4896: 42bb cmp r3, r7 4898: dbd0 blt.n 483c <_lv_disp_refr_task+0x480> 489a: 46a0 mov r8, r4 489c: 44d8 add r8, fp 489e: 444c add r4, r9 48a0: 3509 adds r5, #9 48a2: 00ed lsls r5, r5, #3 _lv_memcpy(buf_act + start_offs, buf_ina + start_offs, line_length); 48a4: 9a01 ldr r2, [sp, #4] 48a6: 0021 movs r1, r4 48a8: 4640 mov r0, r8 48aa: 4b25 ldr r3, [pc, #148] ; (4940 <_lv_disp_refr_task+0x584>) 48ac: 4798 blx r3 48ae: 3701 adds r7, #1 48b0: b23f sxth r7, r7 48b2: 44d0 add r8, sl 48b4: 4454 add r4, sl for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 48b6: 4b1a ldr r3, [pc, #104] ; (4920 <_lv_disp_refr_task+0x564>) 48b8: 681b ldr r3, [r3, #0] 48ba: 9302 str r3, [sp, #8] 48bc: 195b adds r3, r3, r5 48be: 2206 movs r2, #6 48c0: 5e9b ldrsh r3, [r3, r2] 48c2: 42bb cmp r3, r7 48c4: daee bge.n 48a4 <_lv_disp_refr_task+0x4e8> 48c6: e7b9 b.n 483c <_lv_disp_refr_task+0x480> px_num = 0; 48c8: 2200 movs r2, #0 48ca: 4b19 ldr r3, [pc, #100] ; (4930 <_lv_disp_refr_task+0x574>) 48cc: 601a str r2, [r3, #0] if(disp_refr->inv_p == 0) return; 48ce: 23b4 movs r3, #180 ; 0xb4 48d0: 005b lsls r3, r3, #1 48d2: 5ac3 ldrh r3, [r0, r3] 48d4: 059b lsls r3, r3, #22 48d6: d112 bne.n 48fe <_lv_disp_refr_task+0x542> if(disp_refr->inv_p != 0) { 48d8: 4b11 ldr r3, [pc, #68] ; (4920 <_lv_disp_refr_task+0x564>) 48da: 6818 ldr r0, [r3, #0] 48dc: 23b4 movs r3, #180 ; 0xb4 48de: 005b lsls r3, r3, #1 48e0: 5ac3 ldrh r3, [r0, r3] 48e2: 059b lsls r3, r3, #22 48e4: d000 beq.n 48e8 <_lv_disp_refr_task+0x52c> 48e6: e760 b.n 47aa <_lv_disp_refr_task+0x3ee> _lv_mem_buf_free_all(); 48e8: 4b16 ldr r3, [pc, #88] ; (4944 <_lv_disp_refr_task+0x588>) 48ea: 4798 blx r3 _lv_font_clean_up_fmt_txt(); 48ec: 4b16 ldr r3, [pc, #88] ; (4948 <_lv_disp_refr_task+0x58c>) 48ee: 4798 blx r3 } 48f0: b009 add sp, #36 ; 0x24 48f2: bc3c pop {r2, r3, r4, r5} 48f4: 4690 mov r8, r2 48f6: 4699 mov r9, r3 48f8: 46a2 mov sl, r4 48fa: 46ab mov fp, r5 48fc: bdf0 pop {r4, r5, r6, r7, pc} int32_t last_i = 0; 48fe: 2300 movs r3, #0 4900: 9304 str r3, [sp, #16] 4902: e609 b.n 4518 <_lv_disp_refr_task+0x15c> px_num = 0; 4904: 2200 movs r2, #0 4906: 4b0a ldr r3, [pc, #40] ; (4930 <_lv_disp_refr_task+0x574>) 4908: 601a str r2, [r3, #0] if(disp_refr->inv_p == 0) return; 490a: 23b4 movs r3, #180 ; 0xb4 490c: 005b lsls r3, r3, #1 490e: 5ac3 ldrh r3, [r0, r3] 4910: 059b lsls r3, r3, #22 4912: d0e9 beq.n 48e8 <_lv_disp_refr_task+0x52c> int32_t last_i = 0; 4914: 2300 movs r3, #0 4916: 9304 str r3, [sp, #16] 4918: e5fe b.n 4518 <_lv_disp_refr_task+0x15c> 491a: 46c0 nop ; (mov r8, r8) 491c: 000041f9 .word 0x000041f9 4920: 200026e8 .word 0x200026e8 4924: 0000f725 .word 0x0000f725 4928: 0001104d .word 0x0001104d 492c: 0000f7a9 .word 0x0000f7a9 4930: 200026ec .word 0x200026ec 4934: 0000f709 .word 0x0000f709 4938: 00004179 .word 0x00004179 493c: 0000f615 .word 0x0000f615 4940: 00010c8d .word 0x00010c8d 4944: 00010c35 .word 0x00010c35 4948: 0000f43d .word 0x0000f43d 0000494c : /** * Initialize a style * @param style pointer to a style to initialize */ void lv_style_init(lv_style_t * style) { 494c: b510 push {r4, lr} _lv_memset_00(style, sizeof(lv_style_t)); 494e: 2104 movs r1, #4 4950: 4b01 ldr r3, [pc, #4] ; (4958 ) 4952: 4798 blx r3 #if LV_USE_ASSERT_STYLE style->sentinel = LV_DEBUG_STYLE_SENTINEL_VALUE; #endif } 4954: bd10 pop {r4, pc} 4956: 46c0 nop ; (mov r8, r8) 4958: 0001104d .word 0x0001104d 0000495c : /** * Initialize a style list * @param list a style list to initialize */ void lv_style_list_init(lv_style_list_t * list) { 495c: b510 push {r4, lr} _lv_memset_00(list, sizeof(lv_style_list_t)); 495e: 2108 movs r1, #8 4960: 4b01 ldr r3, [pc, #4] ; (4968 ) 4962: 4798 blx r3 #if LV_USE_ASSERT_STYLE list->sentinel = LV_DEBUG_STYLE_LIST_SENTINEL_VALUE; #endif } 4964: bd10 pop {r4, pc} 4966: 46c0 nop ; (mov r8, r8) 4968: 0001104d .word 0x0001104d 0000496c <_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) { 496c: b570 push {r4, r5, r6, lr} 496e: 0004 movs r4, r0 4970: 000d movs r5, r1 LV_ASSERT_STYLE_LIST(list); LV_ASSERT_STYLE(style); if(list->style_cnt == 0) return; 4972: 7906 ldrb r6, [r0, #4] 4974: 2e00 cmp r6, #0 4976: d045 beq.n 4a04 <_lv_style_list_remove_style+0x98> /*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) { 4978: 6800 ldr r0, [r0, #0] 497a: 6803 ldr r3, [r0, #0] 497c: 4299 cmp r1, r3 497e: d00c beq.n 499a <_lv_style_list_remove_style+0x2e> 4980: 1d03 adds r3, r0, #4 4982: 1e72 subs r2, r6, #1 4984: b2d2 uxtb r2, r2 4986: 3201 adds r2, #1 4988: 0092 lsls r2, r2, #2 498a: 1882 adds r2, r0, r2 for(i = 0; i < list->style_cnt; i++) { 498c: 429a cmp r2, r3 498e: d039 beq.n 4a04 <_lv_style_list_remove_style+0x98> 4990: 3304 adds r3, #4 if(list->style_list[i] == style) { 4992: 1f19 subs r1, r3, #4 4994: 6809 ldr r1, [r1, #0] 4996: 42a9 cmp r1, r5 4998: d1f8 bne.n 498c <_lv_style_list_remove_style+0x20> break; } } if(found == false) return; if(list->style_cnt == 1) { 499a: 2e01 cmp r6, #1 499c: d010 beq.n 49c0 <_lv_style_list_remove_style+0x54> 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)); 499e: 1e71 subs r1, r6, #1 49a0: 0089 lsls r1, r1, #2 49a2: 4b19 ldr r3, [pc, #100] ; (4a08 <_lv_style_list_remove_style+0x9c>) 49a4: 4798 blx r3 49a6: 0006 movs r6, r0 LV_ASSERT_MEM(new_classes); 49a8: 4b18 ldr r3, [pc, #96] ; (4a0c <_lv_style_list_remove_style+0xa0>) 49aa: 4798 blx r3 49ac: 2800 cmp r0, #0 49ae: d011 beq.n 49d4 <_lv_style_list_remove_style+0x68> if(new_classes == NULL) { 49b0: 2e00 cmp r6, #0 49b2: d027 beq.n 4a04 <_lv_style_list_remove_style+0x98> 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++) { 49b4: 7922 ldrb r2, [r4, #4] 49b6: 2a00 cmp r2, #0 49b8: d021 beq.n 49fe <_lv_style_list_remove_style+0x92> 49ba: 2100 movs r1, #0 49bc: 2300 movs r3, #0 49be: e014 b.n 49ea <_lv_style_list_remove_style+0x7e> lv_mem_free(list->style_list); 49c0: 4b13 ldr r3, [pc, #76] ; (4a10 <_lv_style_list_remove_style+0xa4>) 49c2: 4798 blx r3 list->style_list = NULL; 49c4: 2300 movs r3, #0 49c6: 6023 str r3, [r4, #0] list->style_cnt = 0; 49c8: 7123 strb r3, [r4, #4] list->has_local = 0; 49ca: 7963 ldrb r3, [r4, #5] 49cc: 2201 movs r2, #1 49ce: 4393 bics r3, r2 49d0: 7163 strb r3, [r4, #5] return; 49d2: e017 b.n 4a04 <_lv_style_list_remove_style+0x98> LV_ASSERT_MEM(new_classes); 49d4: 0032 movs r2, r6 49d6: 2300 movs r3, #0 49d8: 480e ldr r0, [pc, #56] ; (4a14 <_lv_style_list_remove_style+0xa8>) 49da: 490f ldr r1, [pc, #60] ; (4a18 <_lv_style_list_remove_style+0xac>) 49dc: 4788 blx r1 49de: e7fe b.n 49de <_lv_style_list_remove_style+0x72> for(i = 0, j = 0; i < list->style_cnt; i++) { 49e0: 3301 adds r3, #1 49e2: b2db uxtb r3, r3 49e4: 7922 ldrb r2, [r4, #4] 49e6: 429a cmp r2, r3 49e8: d909 bls.n 49fe <_lv_style_list_remove_style+0x92> if(list->style_list[i] == style) continue; 49ea: 009a lsls r2, r3, #2 49ec: 6820 ldr r0, [r4, #0] 49ee: 5812 ldr r2, [r2, r0] 49f0: 4295 cmp r5, r2 49f2: d0f5 beq.n 49e0 <_lv_style_list_remove_style+0x74> new_classes[j] = list->style_list[i]; 49f4: 0088 lsls r0, r1, #2 49f6: 5182 str r2, [r0, r6] j++; 49f8: 3101 adds r1, #1 49fa: b2c9 uxtb r1, r1 49fc: e7f0 b.n 49e0 <_lv_style_list_remove_style+0x74> } list->style_cnt--; 49fe: 3a01 subs r2, #1 4a00: 7122 strb r2, [r4, #4] list->style_list = new_classes; 4a02: 6026 str r6, [r4, #0] } 4a04: bd70 pop {r4, r5, r6, pc} 4a06: 46c0 nop ; (mov r8, r8) 4a08: 00010e45 .word 0x00010e45 4a0c: 0000147d .word 0x0000147d 4a10: 00010b39 .word 0x00010b39 4a14: 00018724 .word 0x00018724 4a18: 00001485 .word 0x00001485 00004a1c <_lv_style_list_add_style>: { 4a1c: b570 push {r4, r5, r6, lr} 4a1e: 0005 movs r5, r0 4a20: 000c movs r4, r1 if(list == NULL) return; 4a22: 2800 cmp r0, #0 4a24: d030 beq.n 4a88 <_lv_style_list_add_style+0x6c> _lv_style_list_remove_style(list, style); 4a26: 4b1f ldr r3, [pc, #124] ; (4aa4 <_lv_style_list_add_style+0x88>) 4a28: 4798 blx r3 if(list->style_cnt == 0) new_classes = lv_mem_alloc(sizeof(lv_style_t *)); 4a2a: 792b ldrb r3, [r5, #4] 4a2c: 2b00 cmp r3, #0 4a2e: d12c bne.n 4a8a <_lv_style_list_add_style+0x6e> 4a30: 2004 movs r0, #4 4a32: 4b1d ldr r3, [pc, #116] ; (4aa8 <_lv_style_list_add_style+0x8c>) 4a34: 4798 blx r3 4a36: 0006 movs r6, r0 LV_ASSERT_MEM(new_classes); 4a38: 0030 movs r0, r6 4a3a: 4b1c ldr r3, [pc, #112] ; (4aac <_lv_style_list_add_style+0x90>) 4a3c: 4798 blx r3 4a3e: 2800 cmp r0, #0 4a40: d02a beq.n 4a98 <_lv_style_list_add_style+0x7c> if(new_classes == NULL) { 4a42: 2e00 cmp r6, #0 4a44: d020 beq.n 4a88 <_lv_style_list_add_style+0x6c> if(list->has_trans) first_style++; 4a46: 796b ldrb r3, [r5, #5] 4a48: 0859 lsrs r1, r3, #1 4a4a: 2201 movs r2, #1 uint8_t first_style = 0; 4a4c: 4011 ands r1, r2 if(list->has_local) first_style++; 4a4e: 421a tst r2, r3 4a50: d000 beq.n 4a54 <_lv_style_list_add_style+0x38> 4a52: 3101 adds r1, #1 for(i = list->style_cnt; i > first_style; i--) { 4a54: 792a ldrb r2, [r5, #4] 4a56: 4291 cmp r1, r2 4a58: d210 bcs.n 4a7c <_lv_style_list_add_style+0x60> 4a5a: 4b15 ldr r3, [pc, #84] ; (4ab0 <_lv_style_list_add_style+0x94>) 4a5c: 18d3 adds r3, r2, r3 4a5e: 009b lsls r3, r3, #2 4a60: 18f3 adds r3, r6, r3 4a62: 4814 ldr r0, [pc, #80] ; (4ab4 <_lv_style_list_add_style+0x98>) 4a64: 1810 adds r0, r2, r0 4a66: 3a01 subs r2, #1 4a68: 1a52 subs r2, r2, r1 4a6a: b2d2 uxtb r2, r2 4a6c: 1a82 subs r2, r0, r2 4a6e: 0092 lsls r2, r2, #2 4a70: 18b2 adds r2, r6, r2 new_classes[i] = new_classes[i - 1]; 4a72: 6818 ldr r0, [r3, #0] 4a74: 6058 str r0, [r3, #4] 4a76: 3b04 subs r3, #4 for(i = list->style_cnt; i > first_style; i--) { 4a78: 4293 cmp r3, r2 4a7a: d1fa bne.n 4a72 <_lv_style_list_add_style+0x56> new_classes[first_style] = style; 4a7c: 0089 lsls r1, r1, #2 4a7e: 518c str r4, [r1, r6] list->style_cnt++; 4a80: 792b ldrb r3, [r5, #4] 4a82: 3301 adds r3, #1 4a84: 712b strb r3, [r5, #4] list->style_list = new_classes; 4a86: 602e str r6, [r5, #0] } 4a88: bd70 pop {r4, r5, r6, pc} else new_classes = lv_mem_realloc(list->style_list, sizeof(lv_style_t *) * (list->style_cnt + 1)); 4a8a: 3301 adds r3, #1 4a8c: 0099 lsls r1, r3, #2 4a8e: 6828 ldr r0, [r5, #0] 4a90: 4b09 ldr r3, [pc, #36] ; (4ab8 <_lv_style_list_add_style+0x9c>) 4a92: 4798 blx r3 4a94: 0006 movs r6, r0 4a96: e7cf b.n 4a38 <_lv_style_list_add_style+0x1c> LV_ASSERT_MEM(new_classes); 4a98: 0032 movs r2, r6 4a9a: 2300 movs r3, #0 4a9c: 4807 ldr r0, [pc, #28] ; (4abc <_lv_style_list_add_style+0xa0>) 4a9e: 4908 ldr r1, [pc, #32] ; (4ac0 <_lv_style_list_add_style+0xa4>) 4aa0: 4788 blx r1 4aa2: e7fe b.n 4aa2 <_lv_style_list_add_style+0x86> 4aa4: 0000496d .word 0x0000496d 4aa8: 00010a71 .word 0x00010a71 4aac: 0000147d .word 0x0000147d 4ab0: 3fffffff .word 0x3fffffff 4ab4: 3ffffffe .word 0x3ffffffe 4ab8: 00010e45 .word 0x00010e45 4abc: 00018724 .word 0x00018724 4ac0: 00001485 .word 0x00001485 00004ac4 : * 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) { 4ac4: b570 push {r4, r5, r6, lr} 4ac6: 0005 movs r5, r0 LV_ASSERT_STYLE_LIST(list); if(list->has_local) return lv_style_list_get_style(list, 0); 4ac8: 7942 ldrb r2, [r0, #5] 4aca: 07d3 lsls r3, r2, #31 4acc: d50f bpl.n 4aee 4ace: 2306 movs r3, #6 4ad0: 4013 ands r3, r2 4ad2: 3b06 subs r3, #6 4ad4: 425a negs r2, r3 4ad6: 4153 adcs r3, r2 4ad8: b2db uxtb r3, r3 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 4ada: 7902 ldrb r2, [r0, #4] 4adc: 2a00 cmp r2, #0 4ade: d022 beq.n 4b26 4ae0: 429a cmp r2, r3 4ae2: d922 bls.n 4b2a return list->style_list[id]; 4ae4: 6802 ldr r2, [r0, #0] 4ae6: 009b lsls r3, r3, #2 4ae8: 589c ldr r4, [r3, r2] /*Add the local style to the furst place*/ _lv_style_list_add_style(list, local_style); list->has_local = 1; return local_style; } 4aea: 0020 movs r0, r4 4aec: bd70 pop {r4, r5, r6, pc} lv_style_t * local_style = lv_mem_alloc(sizeof(lv_style_t)); 4aee: 2004 movs r0, #4 4af0: 4b0f ldr r3, [pc, #60] ; (4b30 ) 4af2: 4798 blx r3 4af4: 0004 movs r4, r0 LV_ASSERT_MEM(local_style); 4af6: 4b0f ldr r3, [pc, #60] ; (4b34 ) 4af8: 4798 blx r3 4afa: 2800 cmp r0, #0 4afc: d00d beq.n 4b1a if(local_style == NULL) { 4afe: 2c00 cmp r4, #0 4b00: d0f3 beq.n 4aea lv_style_init(local_style); 4b02: 0020 movs r0, r4 4b04: 4b0c ldr r3, [pc, #48] ; (4b38 ) 4b06: 4798 blx r3 _lv_style_list_add_style(list, local_style); 4b08: 0021 movs r1, r4 4b0a: 0028 movs r0, r5 4b0c: 4b0b ldr r3, [pc, #44] ; (4b3c ) 4b0e: 4798 blx r3 list->has_local = 1; 4b10: 796b ldrb r3, [r5, #5] 4b12: 2201 movs r2, #1 4b14: 4313 orrs r3, r2 4b16: 716b strb r3, [r5, #5] return local_style; 4b18: e7e7 b.n 4aea LV_ASSERT_MEM(local_style); 4b1a: 0022 movs r2, r4 4b1c: 2300 movs r3, #0 4b1e: 4808 ldr r0, [pc, #32] ; (4b40 ) 4b20: 4908 ldr r1, [pc, #32] ; (4b44 ) 4b22: 4788 blx r1 4b24: e7fe b.n 4b24 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 4b26: 2400 movs r4, #0 4b28: e7df b.n 4aea 4b2a: 2400 movs r4, #0 4b2c: e7dd b.n 4aea 4b2e: 46c0 nop ; (mov r8, r8) 4b30: 00010a71 .word 0x00010a71 4b34: 0000147d .word 0x0000147d 4b38: 0000494d .word 0x0000494d 4b3c: 00004a1d .word 0x00004a1d 4b40: 00018724 .word 0x00018724 4b44: 00001485 .word 0x00001485 00004b48 : { 4b48: b510 push {r4, lr} 4b4a: 0004 movs r4, r0 lv_mem_free(style->map); 4b4c: 6800 ldr r0, [r0, #0] 4b4e: 4b02 ldr r3, [pc, #8] ; (4b58 ) 4b50: 4798 blx r3 style->map = NULL; 4b52: 2300 movs r3, #0 4b54: 6023 str r3, [r4, #0] } 4b56: bd10 pop {r4, pc} 4b58: 00010b39 .word 0x00010b39 00004b5c <_lv_style_get_mem_size>: { 4b5c: b510 push {r4, lr} if(style->map == NULL) return 0; 4b5e: 6801 ldr r1, [r0, #0] 4b60: 2900 cmp r1, #0 4b62: d019 beq.n 4b98 <_lv_style_get_mem_size+0x3c> while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 4b64: 780b ldrb r3, [r1, #0] 4b66: 2bff cmp r3, #255 ; 0xff 4b68: d012 beq.n 4b90 <_lv_style_get_mem_size+0x34> 4b6a: 2000 movs r0, #0 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 4b6c: 240f movs r4, #15 4b6e: e003 b.n 4b78 <_lv_style_get_mem_size+0x1c> i += sizeof(lv_style_property_t); 4b70: 1c90 adds r0, r2, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 4b72: 5c0b ldrb r3, [r1, r0] 4b74: 2bff cmp r3, #255 ; 0xff 4b76: d00c beq.n 4b92 <_lv_style_get_mem_size+0x36> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 4b78: 4023 ands r3, r4 4b7a: 1c82 adds r2, r0, #2 4b7c: 2b08 cmp r3, #8 4b7e: ddf7 ble.n 4b70 <_lv_style_get_mem_size+0x14> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 4b80: 1c82 adds r2, r0, #2 4b82: 2b0b cmp r3, #11 4b84: ddf4 ble.n 4b70 <_lv_style_get_mem_size+0x14> else i += sizeof(const void *); 4b86: 1d02 adds r2, r0, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 4b88: 2b0d cmp r3, #13 4b8a: dcf1 bgt.n 4b70 <_lv_style_get_mem_size+0x14> 4b8c: 1c42 adds r2, r0, #1 4b8e: e7ef b.n 4b70 <_lv_style_get_mem_size+0x14> while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 4b90: 2000 movs r0, #0 return i + sizeof(lv_style_property_t); 4b92: 3002 adds r0, #2 4b94: b280 uxth r0, r0 } 4b96: bd10 pop {r4, pc} if(style->map == NULL) return 0; 4b98: 2000 movs r0, #0 4b9a: e7fc b.n 4b96 <_lv_style_get_mem_size+0x3a> 00004b9c : { 4b9c: b570 push {r4, r5, r6, lr} 4b9e: 0006 movs r6, r0 4ba0: 1e0c subs r4, r1, #0 if(style_src == NULL) return; 4ba2: d00d beq.n 4bc0 if(style_src->map == NULL) return; 4ba4: 680b ldr r3, [r1, #0] 4ba6: 2b00 cmp r3, #0 4ba8: d00a beq.n 4bc0 uint16_t size = _lv_style_get_mem_size(style_src); 4baa: 0008 movs r0, r1 4bac: 4b05 ldr r3, [pc, #20] ; (4bc4 ) 4bae: 4798 blx r3 4bb0: 0005 movs r5, r0 style_dest->map = lv_mem_alloc(size); 4bb2: 4b05 ldr r3, [pc, #20] ; (4bc8 ) 4bb4: 4798 blx r3 4bb6: 6030 str r0, [r6, #0] _lv_memcpy(style_dest->map, style_src->map, size); 4bb8: 6821 ldr r1, [r4, #0] 4bba: 002a movs r2, r5 4bbc: 4b03 ldr r3, [pc, #12] ; (4bcc ) 4bbe: 4798 blx r3 } 4bc0: bd70 pop {r4, r5, r6, pc} 4bc2: 46c0 nop ; (mov r8, r8) 4bc4: 00004b5d .word 0x00004b5d 4bc8: 00010a71 .word 0x00010a71 4bcc: 00010c8d .word 0x00010c8d 00004bd0 : { 4bd0: b5f0 push {r4, r5, r6, r7, lr} 4bd2: 46de mov lr, fp 4bd4: 4657 mov r7, sl 4bd6: 464e mov r6, r9 4bd8: 4645 mov r5, r8 4bda: b5e0 push {r5, r6, r7, lr} 4bdc: b085 sub sp, #20 4bde: 1e06 subs r6, r0, #0 4be0: 9103 str r1, [sp, #12] if(style == NULL) return false; 4be2: d100 bne.n 4be6 4be4: e07b b.n 4cde if(style->map == NULL) return -1; 4be6: 6800 ldr r0, [r0, #0] 4be8: 2800 cmp r0, #0 4bea: d100 bne.n 4bee 4bec: e07b b.n 4ce6 uint8_t id_to_find = prop & 0xFF; 4bee: b2cc uxtb r4, r1 attr.full = (prop >> 8) & 0xFF; 4bf0: 0a0b lsrs r3, r1, #8 4bf2: 4698 mov r8, r3 4bf4: 1c19 adds r1, r3, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 4bf6: 7803 ldrb r3, [r0, #0] 4bf8: 2bff cmp r3, #255 ; 0xff 4bfa: d04e beq.n 4c9a 4bfc: 2201 movs r2, #1 4bfe: 4252 negs r2, r2 4c00: 9202 str r2, [sp, #8] 4c02: 4693 mov fp, r2 4c04: 2200 movs r2, #0 if(attr_i.bits.state == attr.bits.state) { 4c06: 257f movs r5, #127 ; 0x7f 4c08: 46aa mov sl, r5 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 4c0a: 0649 lsls r1, r1, #25 4c0c: 0e49 lsrs r1, r1, #25 4c0e: 468c mov ip, r1 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 4c10: 3d70 subs r5, #112 ; 0x70 4c12: 46c1 mov r9, r8 4c14: 46b0 mov r8, r6 4c16: e01c b.n 4c52 attr_i.full = style->map[i + 1]; 4c18: 1881 adds r1, r0, r2 4c1a: 7849 ldrb r1, [r1, #1] if(attr_i.bits.state == attr.bits.state) { 4c1c: 464f mov r7, r9 4c1e: 404f eors r7, r1 4c20: 4656 mov r6, sl 4c22: 423e tst r6, r7 4c24: d00d beq.n 4c42 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 4c26: 0649 lsls r1, r1, #25 4c28: 0e49 lsrs r1, r1, #25 4c2a: 9101 str r1, [sp, #4] 4c2c: 000f movs r7, r1 4c2e: 4666 mov r6, ip 4c30: 43b7 bics r7, r6 4c32: d110 bne.n 4c56 if(attr_i.bits.state > weight) { 4c34: 4559 cmp r1, fp 4c36: dd0e ble.n 4c56 weight = attr_i.bits.state; 4c38: b209 sxth r1, r1 4c3a: 468b mov fp, r1 id_guess = i; 4c3c: b211 sxth r1, r2 4c3e: 9102 str r1, [sp, #8] 4c40: e009 b.n 4c56 4c42: 4643 mov r3, r8 4c44: 46c8 mov r8, r9 4c46: 001e movs r6, r3 4c48: e015 b.n 4c76 i += sizeof(lv_style_property_t); 4c4a: 1c8a adds r2, r1, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 4c4c: 5c83 ldrb r3, [r0, r2] 4c4e: 2bff cmp r3, #255 ; 0xff 4c50: d00d beq.n 4c6e if(style->map[i] == id_to_find) { 4c52: 429c cmp r4, r3 4c54: d0e0 beq.n 4c18 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 4c56: 402b ands r3, r5 4c58: 1c91 adds r1, r2, #2 4c5a: 2b08 cmp r3, #8 4c5c: ddf5 ble.n 4c4a else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 4c5e: 1c91 adds r1, r2, #2 4c60: 2b0b cmp r3, #11 4c62: ddf2 ble.n 4c4a else i += sizeof(const void *); 4c64: 1d11 adds r1, r2, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 4c66: 2b0d cmp r3, #13 4c68: dcef bgt.n 4c4a 4c6a: 1c51 adds r1, r2, #1 4c6c: e7ed b.n 4c4a 4c6e: 4643 mov r3, r8 4c70: 46c8 mov r8, r9 4c72: 001e movs r6, r3 return id_guess; 4c74: 9a02 ldr r2, [sp, #8] if(id >= 0) { 4c76: 2a00 cmp r2, #0 4c78: db33 blt.n 4ce2 attr_found.full = *(style->map + id + 1); 4c7a: 0014 movs r4, r2 4c7c: 1880 adds r0, r0, r2 if(attr_found.bits.state == attr_goal.bits.state) { 4c7e: 7843 ldrb r3, [r0, #1] 4c80: 4642 mov r2, r8 4c82: 405a eors r2, r3 4c84: 0013 movs r3, r2 return false; 4c86: 2000 movs r0, #0 if(attr_found.bits.state == attr_goal.bits.state) { 4c88: 065b lsls r3, r3, #25 4c8a: d00a beq.n 4ca2 } 4c8c: b005 add sp, #20 4c8e: bc3c pop {r2, r3, r4, r5} 4c90: 4690 mov r8, r2 4c92: 4699 mov r9, r3 4c94: 46a2 mov sl, r4 4c96: 46ab mov fp, r5 4c98: bdf0 pop {r4, r5, r6, r7, pc} int16_t id_guess = -1; 4c9a: 2301 movs r3, #1 4c9c: 425b negs r3, r3 4c9e: 9302 str r3, [sp, #8] 4ca0: e7e8 b.n 4c74 uint32_t map_size = _lv_style_get_mem_size(style); 4ca2: 0030 movs r0, r6 4ca4: 4b11 ldr r3, [pc, #68] ; (4cec ) 4ca6: 4798 blx r3 if((prop & 0xF) < LV_STYLE_ID_COLOR) prop_size += sizeof(lv_style_int_t); 4ca8: 230f movs r3, #15 4caa: 9a03 ldr r2, [sp, #12] 4cac: 4013 ands r3, r2 else if((prop & 0xF) < LV_STYLE_ID_OPA) prop_size += sizeof(lv_color_t); 4cae: 2104 movs r1, #4 4cb0: 2b0b cmp r3, #11 4cb2: dd03 ble.n 4cbc else if((prop & 0xF) < LV_STYLE_ID_PTR) prop_size += sizeof(lv_opa_t); 4cb4: 3901 subs r1, #1 4cb6: 2b0d cmp r3, #13 4cb8: dd00 ble.n 4cbc else prop_size += sizeof(const void *); 4cba: 3103 adds r1, #3 for(i = id; i < map_size - prop_size; i++) { 4cbc: 000d movs r5, r1 4cbe: 1a41 subs r1, r0, r1 4cc0: 428c cmp r4, r1 4cc2: d206 bcs.n 4cd2 style->map[i] = style->map[i + prop_size]; 4cc4: 6833 ldr r3, [r6, #0] 4cc6: 195a adds r2, r3, r5 4cc8: 5d12 ldrb r2, [r2, r4] 4cca: 551a strb r2, [r3, r4] for(i = id; i < map_size - prop_size; i++) { 4ccc: 3401 adds r4, #1 4cce: 428c cmp r4, r1 4cd0: d1f8 bne.n 4cc4 style->map = lv_mem_realloc(style->map, map_size - prop_size); 4cd2: 6830 ldr r0, [r6, #0] 4cd4: 4b06 ldr r3, [pc, #24] ; (4cf0 ) 4cd6: 4798 blx r3 4cd8: 6030 str r0, [r6, #0] return true; 4cda: 2001 movs r0, #1 4cdc: e7d6 b.n 4c8c if(style == NULL) return false; 4cde: 2000 movs r0, #0 4ce0: e7d4 b.n 4c8c return false; 4ce2: 2000 movs r0, #0 4ce4: e7d2 b.n 4c8c 4ce6: 2000 movs r0, #0 4ce8: e7d0 b.n 4c8c 4cea: 46c0 nop ; (mov r8, r8) 4cec: 00004b5d .word 0x00004b5d 4cf0: 00010e45 .word 0x00010e45 00004cf4 <_lv_style_set_int>: { 4cf4: b5f0 push {r4, r5, r6, r7, lr} 4cf6: 46de mov lr, fp 4cf8: 4657 mov r7, sl 4cfa: 464e mov r6, r9 4cfc: 4645 mov r5, r8 4cfe: b5e0 push {r5, r6, r7, lr} 4d00: b087 sub sp, #28 4d02: 0006 movs r6, r0 4d04: ab02 add r3, sp, #8 4d06: 80d9 strh r1, [r3, #6] 4d08: ab03 add r3, sp, #12 4d0a: 801a strh r2, [r3, #0] if(style->map == NULL) return -1; 4d0c: 6804 ldr r4, [r0, #0] 4d0e: 2c00 cmp r4, #0 4d10: d058 beq.n 4dc4 <_lv_style_set_int+0xd0> uint8_t id_to_find = prop & 0xFF; 4d12: b2cd uxtb r5, r1 attr.full = (prop >> 8) & 0xFF; 4d14: 0a0b lsrs r3, r1, #8 4d16: 469a mov sl, r3 4d18: 1c19 adds r1, r3, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 4d1a: 7823 ldrb r3, [r4, #0] 4d1c: 2bff cmp r3, #255 ; 0xff 4d1e: d04d beq.n 4dbc <_lv_style_set_int+0xc8> 4d20: 2201 movs r2, #1 4d22: 4252 negs r2, r2 4d24: 4690 mov r8, r2 4d26: 4694 mov ip, r2 4d28: 2200 movs r2, #0 if(attr_i.bits.state == attr.bits.state) { 4d2a: 207f movs r0, #127 ; 0x7f 4d2c: 4683 mov fp, r0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 4d2e: 0649 lsls r1, r1, #25 4d30: 0e49 lsrs r1, r1, #25 4d32: 4689 mov r9, r1 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 4d34: 3870 subs r0, #112 ; 0x70 4d36: 9602 str r6, [sp, #8] 4d38: e01a b.n 4d70 <_lv_style_set_int+0x7c> attr_i.full = style->map[i + 1]; 4d3a: 18a1 adds r1, r4, r2 4d3c: 7849 ldrb r1, [r1, #1] if(attr_i.bits.state == attr.bits.state) { 4d3e: 4656 mov r6, sl 4d40: 404e eors r6, r1 4d42: 465f mov r7, fp 4d44: 4237 tst r7, r6 4d46: d00d beq.n 4d64 <_lv_style_set_int+0x70> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 4d48: 0649 lsls r1, r1, #25 4d4a: 0e49 lsrs r1, r1, #25 4d4c: 9101 str r1, [sp, #4] 4d4e: 000e movs r6, r1 4d50: 464f mov r7, r9 4d52: 43be bics r6, r7 4d54: d10e bne.n 4d74 <_lv_style_set_int+0x80> if(attr_i.bits.state > weight) { 4d56: 4561 cmp r1, ip 4d58: dd0c ble.n 4d74 <_lv_style_set_int+0x80> weight = attr_i.bits.state; 4d5a: b209 sxth r1, r1 4d5c: 468c mov ip, r1 id_guess = i; 4d5e: b211 sxth r1, r2 4d60: 4688 mov r8, r1 4d62: e007 b.n 4d74 <_lv_style_set_int+0x80> 4d64: 9e02 ldr r6, [sp, #8] 4d66: e013 b.n 4d90 <_lv_style_set_int+0x9c> i += sizeof(lv_style_property_t); 4d68: 1c8a adds r2, r1, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 4d6a: 5ca3 ldrb r3, [r4, r2] 4d6c: 2bff cmp r3, #255 ; 0xff 4d6e: d00d beq.n 4d8c <_lv_style_set_int+0x98> if(style->map[i] == id_to_find) { 4d70: 429d cmp r5, r3 4d72: d0e2 beq.n 4d3a <_lv_style_set_int+0x46> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 4d74: 4003 ands r3, r0 4d76: 1c91 adds r1, r2, #2 4d78: 2b08 cmp r3, #8 4d7a: ddf5 ble.n 4d68 <_lv_style_set_int+0x74> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 4d7c: 1c91 adds r1, r2, #2 4d7e: 2b0b cmp r3, #11 4d80: ddf2 ble.n 4d68 <_lv_style_set_int+0x74> else i += sizeof(const void *); 4d82: 1d11 adds r1, r2, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 4d84: 2b0d cmp r3, #13 4d86: dcef bgt.n 4d68 <_lv_style_set_int+0x74> 4d88: 1c51 adds r1, r2, #1 4d8a: e7ed b.n 4d68 <_lv_style_set_int+0x74> 4d8c: 9e02 ldr r6, [sp, #8] return id_guess; 4d8e: 4642 mov r2, r8 if(id >= 0) { 4d90: 2a00 cmp r2, #0 4d92: db17 blt.n 4dc4 <_lv_style_set_int+0xd0> attr_found.full = *(style->map + id + 1); 4d94: 18a3 adds r3, r4, r2 if(attr_found.bits.state == attr_goal.bits.state) { 4d96: 785b ldrb r3, [r3, #1] 4d98: 4655 mov r5, sl 4d9a: 405d eors r5, r3 4d9c: 066b lsls r3, r5, #25 4d9e: d111 bne.n 4dc4 <_lv_style_set_int+0xd0> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &value, sizeof(lv_style_int_t)); 4da0: 3202 adds r2, #2 4da2: 18a4 adds r4, r4, r2 *d8 = *s8; 4da4: ab03 add r3, sp, #12 4da6: 781a ldrb r2, [r3, #0] 4da8: 7022 strb r2, [r4, #0] 4daa: 785b ldrb r3, [r3, #1] 4dac: 7063 strb r3, [r4, #1] } 4dae: b007 add sp, #28 4db0: bc3c pop {r2, r3, r4, r5} 4db2: 4690 mov r8, r2 4db4: 4699 mov r9, r3 4db6: 46a2 mov sl, r4 4db8: 46ab mov fp, r5 4dba: bdf0 pop {r4, r5, r6, r7, pc} int16_t id_guess = -1; 4dbc: 2301 movs r3, #1 4dbe: 425b negs r3, r3 4dc0: 4698 mov r8, r3 4dc2: e7e4 b.n 4d8e <_lv_style_set_int+0x9a> lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 4dc4: 22ff movs r2, #255 ; 0xff 4dc6: 230e movs r3, #14 4dc8: a902 add r1, sp, #8 4dca: 468c mov ip, r1 4dcc: 4463 add r3, ip 4dce: 801a strh r2, [r3, #0] uint16_t size = _lv_style_get_mem_size(style); 4dd0: 0030 movs r0, r6 4dd2: 4b1b ldr r3, [pc, #108] ; (4e40 <_lv_style_set_int+0x14c>) 4dd4: 4798 blx r3 if(size == 0) size += end_mark_size; 4dd6: 2800 cmp r0, #0 4dd8: d100 bne.n 4ddc <_lv_style_set_int+0xe8> 4dda: 3002 adds r0, #2 size += sizeof(lv_style_property_t) + sizeof(lv_style_int_t); 4ddc: 3004 adds r0, #4 style->map = lv_mem_realloc(style->map, size); 4dde: b285 uxth r5, r0 4de0: 0029 movs r1, r5 4de2: 0020 movs r0, r4 4de4: 4b17 ldr r3, [pc, #92] ; (4e44 <_lv_style_set_int+0x150>) 4de6: 4798 blx r3 4de8: 6030 str r0, [r6, #0] LV_ASSERT_MEM(style->map); 4dea: 4b17 ldr r3, [pc, #92] ; (4e48 <_lv_style_set_int+0x154>) 4dec: 4798 blx r3 4dee: 2800 cmp r0, #0 4df0: d020 beq.n 4e34 <_lv_style_set_int+0x140> if(style == NULL) return; 4df2: 2e00 cmp r6, #0 4df4: d0db beq.n 4dae <_lv_style_set_int+0xba> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 4df6: 1fab subs r3, r5, #6 4df8: 6832 ldr r2, [r6, #0] 4dfa: 4694 mov ip, r2 4dfc: 4463 add r3, ip 4dfe: aa02 add r2, sp, #8 4e00: 7991 ldrb r1, [r2, #6] 4e02: 3206 adds r2, #6 4e04: 7019 strb r1, [r3, #0] 4e06: 7852 ldrb r2, [r2, #1] 4e08: 705a strb r2, [r3, #1] 4e0a: 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)); 4e0c: 6832 ldr r2, [r6, #0] 4e0e: 4694 mov ip, r2 4e10: 4463 add r3, ip 4e12: aa03 add r2, sp, #12 4e14: 7811 ldrb r1, [r2, #0] 4e16: 7019 strb r1, [r3, #0] 4e18: 7852 ldrb r2, [r2, #1] 4e1a: 705a strb r2, [r3, #1] 4e1c: 3d02 subs r5, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 4e1e: 6833 ldr r3, [r6, #0] 4e20: 195d adds r5, r3, r5 4e22: 230e movs r3, #14 4e24: aa02 add r2, sp, #8 4e26: 4694 mov ip, r2 4e28: 4463 add r3, ip 4e2a: 781a ldrb r2, [r3, #0] 4e2c: 702a strb r2, [r5, #0] 4e2e: 785b ldrb r3, [r3, #1] 4e30: 706b strb r3, [r5, #1] 4e32: e7bc b.n 4dae <_lv_style_set_int+0xba> LV_ASSERT_MEM(style->map); 4e34: 6832 ldr r2, [r6, #0] 4e36: 2300 movs r3, #0 4e38: 4804 ldr r0, [pc, #16] ; (4e4c <_lv_style_set_int+0x158>) 4e3a: 4905 ldr r1, [pc, #20] ; (4e50 <_lv_style_set_int+0x15c>) 4e3c: 4788 blx r1 4e3e: e7fe b.n 4e3e <_lv_style_set_int+0x14a> 4e40: 00004b5d .word 0x00004b5d 4e44: 00010e45 .word 0x00010e45 4e48: 0000147d .word 0x0000147d 4e4c: 00018724 .word 0x00018724 4e50: 00001485 .word 0x00001485 00004e54 <_lv_style_set_color>: { 4e54: b5f0 push {r4, r5, r6, r7, lr} 4e56: 46de mov lr, fp 4e58: 4657 mov r7, sl 4e5a: 464e mov r6, r9 4e5c: 4645 mov r5, r8 4e5e: b5e0 push {r5, r6, r7, lr} 4e60: b087 sub sp, #28 4e62: 0006 movs r6, r0 4e64: ab03 add r3, sp, #12 4e66: 801a strh r2, [r3, #0] 4e68: ab02 add r3, sp, #8 4e6a: 80d9 strh r1, [r3, #6] if(style->map == NULL) return -1; 4e6c: 6804 ldr r4, [r0, #0] 4e6e: 2c00 cmp r4, #0 4e70: d058 beq.n 4f24 <_lv_style_set_color+0xd0> uint8_t id_to_find = prop & 0xFF; 4e72: b2cd uxtb r5, r1 attr.full = (prop >> 8) & 0xFF; 4e74: 0a0b lsrs r3, r1, #8 4e76: 469a mov sl, r3 4e78: 1c19 adds r1, r3, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 4e7a: 7823 ldrb r3, [r4, #0] 4e7c: 2bff cmp r3, #255 ; 0xff 4e7e: d04d beq.n 4f1c <_lv_style_set_color+0xc8> 4e80: 2201 movs r2, #1 4e82: 4252 negs r2, r2 4e84: 4690 mov r8, r2 4e86: 4694 mov ip, r2 4e88: 2200 movs r2, #0 if(attr_i.bits.state == attr.bits.state) { 4e8a: 207f movs r0, #127 ; 0x7f 4e8c: 4683 mov fp, r0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 4e8e: 0649 lsls r1, r1, #25 4e90: 0e49 lsrs r1, r1, #25 4e92: 4689 mov r9, r1 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 4e94: 3870 subs r0, #112 ; 0x70 4e96: 9602 str r6, [sp, #8] 4e98: e01a b.n 4ed0 <_lv_style_set_color+0x7c> attr_i.full = style->map[i + 1]; 4e9a: 18a1 adds r1, r4, r2 4e9c: 7849 ldrb r1, [r1, #1] if(attr_i.bits.state == attr.bits.state) { 4e9e: 4656 mov r6, sl 4ea0: 404e eors r6, r1 4ea2: 465f mov r7, fp 4ea4: 4237 tst r7, r6 4ea6: d00d beq.n 4ec4 <_lv_style_set_color+0x70> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 4ea8: 0649 lsls r1, r1, #25 4eaa: 0e49 lsrs r1, r1, #25 4eac: 9101 str r1, [sp, #4] 4eae: 000e movs r6, r1 4eb0: 464f mov r7, r9 4eb2: 43be bics r6, r7 4eb4: d10e bne.n 4ed4 <_lv_style_set_color+0x80> if(attr_i.bits.state > weight) { 4eb6: 4561 cmp r1, ip 4eb8: dd0c ble.n 4ed4 <_lv_style_set_color+0x80> weight = attr_i.bits.state; 4eba: b209 sxth r1, r1 4ebc: 468c mov ip, r1 id_guess = i; 4ebe: b211 sxth r1, r2 4ec0: 4688 mov r8, r1 4ec2: e007 b.n 4ed4 <_lv_style_set_color+0x80> 4ec4: 9e02 ldr r6, [sp, #8] 4ec6: e013 b.n 4ef0 <_lv_style_set_color+0x9c> i += sizeof(lv_style_property_t); 4ec8: 1c8a adds r2, r1, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 4eca: 5ca3 ldrb r3, [r4, r2] 4ecc: 2bff cmp r3, #255 ; 0xff 4ece: d00d beq.n 4eec <_lv_style_set_color+0x98> if(style->map[i] == id_to_find) { 4ed0: 429d cmp r5, r3 4ed2: d0e2 beq.n 4e9a <_lv_style_set_color+0x46> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 4ed4: 4003 ands r3, r0 4ed6: 1c91 adds r1, r2, #2 4ed8: 2b08 cmp r3, #8 4eda: ddf5 ble.n 4ec8 <_lv_style_set_color+0x74> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 4edc: 1c91 adds r1, r2, #2 4ede: 2b0b cmp r3, #11 4ee0: ddf2 ble.n 4ec8 <_lv_style_set_color+0x74> else i += sizeof(const void *); 4ee2: 1d11 adds r1, r2, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 4ee4: 2b0d cmp r3, #13 4ee6: dcef bgt.n 4ec8 <_lv_style_set_color+0x74> 4ee8: 1c51 adds r1, r2, #1 4eea: e7ed b.n 4ec8 <_lv_style_set_color+0x74> 4eec: 9e02 ldr r6, [sp, #8] return id_guess; 4eee: 4642 mov r2, r8 if(id >= 0) { 4ef0: 2a00 cmp r2, #0 4ef2: db17 blt.n 4f24 <_lv_style_set_color+0xd0> attr_found.full = *(style->map + id + 1); 4ef4: 18a3 adds r3, r4, r2 if(attr_found.bits.state == attr_goal.bits.state) { 4ef6: 785b ldrb r3, [r3, #1] 4ef8: 4655 mov r5, sl 4efa: 405d eors r5, r3 4efc: 066b lsls r3, r5, #25 4efe: d111 bne.n 4f24 <_lv_style_set_color+0xd0> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &color, sizeof(lv_color_t)); 4f00: 3202 adds r2, #2 4f02: 18a4 adds r4, r4, r2 4f04: ab03 add r3, sp, #12 4f06: 781a ldrb r2, [r3, #0] 4f08: 7022 strb r2, [r4, #0] 4f0a: 785b ldrb r3, [r3, #1] 4f0c: 7063 strb r3, [r4, #1] } 4f0e: b007 add sp, #28 4f10: bc3c pop {r2, r3, r4, r5} 4f12: 4690 mov r8, r2 4f14: 4699 mov r9, r3 4f16: 46a2 mov sl, r4 4f18: 46ab mov fp, r5 4f1a: bdf0 pop {r4, r5, r6, r7, pc} int16_t id_guess = -1; 4f1c: 2301 movs r3, #1 4f1e: 425b negs r3, r3 4f20: 4698 mov r8, r3 4f22: e7e4 b.n 4eee <_lv_style_set_color+0x9a> lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 4f24: 22ff movs r2, #255 ; 0xff 4f26: 230e movs r3, #14 4f28: a902 add r1, sp, #8 4f2a: 468c mov ip, r1 4f2c: 4463 add r3, ip 4f2e: 801a strh r2, [r3, #0] uint16_t size = _lv_style_get_mem_size(style); 4f30: 0030 movs r0, r6 4f32: 4b1b ldr r3, [pc, #108] ; (4fa0 <_lv_style_set_color+0x14c>) 4f34: 4798 blx r3 if(size == 0) size += end_mark_size; 4f36: 2800 cmp r0, #0 4f38: d100 bne.n 4f3c <_lv_style_set_color+0xe8> 4f3a: 3002 adds r0, #2 size += sizeof(lv_style_property_t) + sizeof(lv_color_t); 4f3c: 3004 adds r0, #4 style->map = lv_mem_realloc(style->map, size); 4f3e: b285 uxth r5, r0 4f40: 0029 movs r1, r5 4f42: 0020 movs r0, r4 4f44: 4b17 ldr r3, [pc, #92] ; (4fa4 <_lv_style_set_color+0x150>) 4f46: 4798 blx r3 4f48: 6030 str r0, [r6, #0] LV_ASSERT_MEM(style->map); 4f4a: 4b17 ldr r3, [pc, #92] ; (4fa8 <_lv_style_set_color+0x154>) 4f4c: 4798 blx r3 4f4e: 2800 cmp r0, #0 4f50: d020 beq.n 4f94 <_lv_style_set_color+0x140> if(style == NULL) return; 4f52: 2e00 cmp r6, #0 4f54: d0db beq.n 4f0e <_lv_style_set_color+0xba> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 4f56: 1fab subs r3, r5, #6 4f58: 6832 ldr r2, [r6, #0] 4f5a: 4694 mov ip, r2 4f5c: 4463 add r3, ip 4f5e: aa02 add r2, sp, #8 4f60: 7991 ldrb r1, [r2, #6] 4f62: 3206 adds r2, #6 4f64: 7019 strb r1, [r3, #0] 4f66: 7852 ldrb r2, [r2, #1] 4f68: 705a strb r2, [r3, #1] 4f6a: 1f2b subs r3, r5, #4 _lv_memcpy_small(style->map + size - sizeof(lv_color_t) - end_mark_size, &color, sizeof(lv_color_t)); 4f6c: 6832 ldr r2, [r6, #0] 4f6e: 4694 mov ip, r2 4f70: 4463 add r3, ip 4f72: aa03 add r2, sp, #12 4f74: 7811 ldrb r1, [r2, #0] 4f76: 7019 strb r1, [r3, #0] 4f78: 7852 ldrb r2, [r2, #1] 4f7a: 705a strb r2, [r3, #1] 4f7c: 3d02 subs r5, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 4f7e: 6833 ldr r3, [r6, #0] 4f80: 195d adds r5, r3, r5 4f82: 230e movs r3, #14 4f84: aa02 add r2, sp, #8 4f86: 4694 mov ip, r2 4f88: 4463 add r3, ip 4f8a: 781a ldrb r2, [r3, #0] 4f8c: 702a strb r2, [r5, #0] 4f8e: 785b ldrb r3, [r3, #1] 4f90: 706b strb r3, [r5, #1] 4f92: e7bc b.n 4f0e <_lv_style_set_color+0xba> LV_ASSERT_MEM(style->map); 4f94: 6832 ldr r2, [r6, #0] 4f96: 2300 movs r3, #0 4f98: 4804 ldr r0, [pc, #16] ; (4fac <_lv_style_set_color+0x158>) 4f9a: 4905 ldr r1, [pc, #20] ; (4fb0 <_lv_style_set_color+0x15c>) 4f9c: 4788 blx r1 4f9e: e7fe b.n 4f9e <_lv_style_set_color+0x14a> 4fa0: 00004b5d .word 0x00004b5d 4fa4: 00010e45 .word 0x00010e45 4fa8: 0000147d .word 0x0000147d 4fac: 00018724 .word 0x00018724 4fb0: 00001485 .word 0x00001485 00004fb4 <_lv_style_set_opa>: { 4fb4: b5f0 push {r4, r5, r6, r7, lr} 4fb6: 46de mov lr, fp 4fb8: 4657 mov r7, sl 4fba: 464e mov r6, r9 4fbc: 4645 mov r5, r8 4fbe: b5e0 push {r5, r6, r7, lr} 4fc0: b087 sub sp, #28 4fc2: 0006 movs r6, r0 4fc4: 9201 str r2, [sp, #4] 4fc6: ab02 add r3, sp, #8 4fc8: 80d9 strh r1, [r3, #6] if(style->map == NULL) return -1; 4fca: 6804 ldr r4, [r0, #0] 4fcc: 2c00 cmp r4, #0 4fce: d055 beq.n 507c <_lv_style_set_opa+0xc8> uint8_t id_to_find = prop & 0xFF; 4fd0: b2c8 uxtb r0, r1 attr.full = (prop >> 8) & 0xFF; 4fd2: 0a0b lsrs r3, r1, #8 4fd4: 469a mov sl, r3 4fd6: 1c19 adds r1, r3, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 4fd8: 7823 ldrb r3, [r4, #0] 4fda: 2bff cmp r3, #255 ; 0xff 4fdc: d04a beq.n 5074 <_lv_style_set_opa+0xc0> 4fde: 2201 movs r2, #1 4fe0: 4252 negs r2, r2 4fe2: 4690 mov r8, r2 4fe4: 4694 mov ip, r2 4fe6: 2200 movs r2, #0 if(attr_i.bits.state == attr.bits.state) { 4fe8: 257f movs r5, #127 ; 0x7f 4fea: 46ab mov fp, r5 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 4fec: 0649 lsls r1, r1, #25 4fee: 0e49 lsrs r1, r1, #25 4ff0: 4689 mov r9, r1 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 4ff2: 3d70 subs r5, #112 ; 0x70 4ff4: 9602 str r6, [sp, #8] 4ff6: e01a b.n 502e <_lv_style_set_opa+0x7a> attr_i.full = style->map[i + 1]; 4ff8: 18a1 adds r1, r4, r2 4ffa: 7849 ldrb r1, [r1, #1] if(attr_i.bits.state == attr.bits.state) { 4ffc: 4656 mov r6, sl 4ffe: 404e eors r6, r1 5000: 465f mov r7, fp 5002: 4237 tst r7, r6 5004: d00d beq.n 5022 <_lv_style_set_opa+0x6e> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 5006: 0649 lsls r1, r1, #25 5008: 0e49 lsrs r1, r1, #25 500a: 9100 str r1, [sp, #0] 500c: 000e movs r6, r1 500e: 464f mov r7, r9 5010: 43be bics r6, r7 5012: d10e bne.n 5032 <_lv_style_set_opa+0x7e> if(attr_i.bits.state > weight) { 5014: 4561 cmp r1, ip 5016: dd0c ble.n 5032 <_lv_style_set_opa+0x7e> weight = attr_i.bits.state; 5018: b209 sxth r1, r1 501a: 468c mov ip, r1 id_guess = i; 501c: b211 sxth r1, r2 501e: 4688 mov r8, r1 5020: e007 b.n 5032 <_lv_style_set_opa+0x7e> 5022: 9e02 ldr r6, [sp, #8] 5024: e013 b.n 504e <_lv_style_set_opa+0x9a> i += sizeof(lv_style_property_t); 5026: 1c8a adds r2, r1, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 5028: 5ca3 ldrb r3, [r4, r2] 502a: 2bff cmp r3, #255 ; 0xff 502c: d00d beq.n 504a <_lv_style_set_opa+0x96> if(style->map[i] == id_to_find) { 502e: 4298 cmp r0, r3 5030: d0e2 beq.n 4ff8 <_lv_style_set_opa+0x44> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 5032: 402b ands r3, r5 5034: 1c91 adds r1, r2, #2 5036: 2b08 cmp r3, #8 5038: ddf5 ble.n 5026 <_lv_style_set_opa+0x72> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 503a: 1c91 adds r1, r2, #2 503c: 2b0b cmp r3, #11 503e: ddf2 ble.n 5026 <_lv_style_set_opa+0x72> else i += sizeof(const void *); 5040: 1d11 adds r1, r2, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 5042: 2b0d cmp r3, #13 5044: dcef bgt.n 5026 <_lv_style_set_opa+0x72> 5046: 1c51 adds r1, r2, #1 5048: e7ed b.n 5026 <_lv_style_set_opa+0x72> 504a: 9e02 ldr r6, [sp, #8] return id_guess; 504c: 4642 mov r2, r8 if(id >= 0) { 504e: 2a00 cmp r2, #0 5050: db14 blt.n 507c <_lv_style_set_opa+0xc8> attr_found.full = *(style->map + id + 1); 5052: 18a3 adds r3, r4, r2 if(attr_found.bits.state == attr_goal.bits.state) { 5054: 785b ldrb r3, [r3, #1] 5056: 4650 mov r0, sl 5058: 4058 eors r0, r3 505a: 0643 lsls r3, r0, #25 505c: d10e bne.n 507c <_lv_style_set_opa+0xc8> 505e: 18a2 adds r2, r4, r2 5060: 466b mov r3, sp 5062: 791b ldrb r3, [r3, #4] 5064: 7093 strb r3, [r2, #2] } 5066: b007 add sp, #28 5068: bc3c pop {r2, r3, r4, r5} 506a: 4690 mov r8, r2 506c: 4699 mov r9, r3 506e: 46a2 mov sl, r4 5070: 46ab mov fp, r5 5072: bdf0 pop {r4, r5, r6, r7, pc} int16_t id_guess = -1; 5074: 2301 movs r3, #1 5076: 425b negs r3, r3 5078: 4698 mov r8, r3 507a: e7e7 b.n 504c <_lv_style_set_opa+0x98> lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 507c: 22ff movs r2, #255 ; 0xff 507e: 230e movs r3, #14 5080: a902 add r1, sp, #8 5082: 468c mov ip, r1 5084: 4463 add r3, ip 5086: 801a strh r2, [r3, #0] uint16_t size = _lv_style_get_mem_size(style); 5088: 0030 movs r0, r6 508a: 4b1a ldr r3, [pc, #104] ; (50f4 <_lv_style_set_opa+0x140>) 508c: 4798 blx r3 if(size == 0) size += end_mark_size; 508e: 2800 cmp r0, #0 5090: d100 bne.n 5094 <_lv_style_set_opa+0xe0> 5092: 3002 adds r0, #2 size += sizeof(lv_style_property_t) + sizeof(lv_opa_t); 5094: 3003 adds r0, #3 style->map = lv_mem_realloc(style->map, size); 5096: b285 uxth r5, r0 5098: 0029 movs r1, r5 509a: 0020 movs r0, r4 509c: 4b16 ldr r3, [pc, #88] ; (50f8 <_lv_style_set_opa+0x144>) 509e: 4798 blx r3 50a0: 6030 str r0, [r6, #0] LV_ASSERT_MEM(style->map); 50a2: 4b16 ldr r3, [pc, #88] ; (50fc <_lv_style_set_opa+0x148>) 50a4: 4798 blx r3 50a6: 2800 cmp r0, #0 50a8: d01d beq.n 50e6 <_lv_style_set_opa+0x132> if(style == NULL) return; 50aa: 2e00 cmp r6, #0 50ac: d0db beq.n 5066 <_lv_style_set_opa+0xb2> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 50ae: 1f6b subs r3, r5, #5 50b0: 6832 ldr r2, [r6, #0] 50b2: 4694 mov ip, r2 50b4: 4463 add r3, ip 50b6: aa02 add r2, sp, #8 50b8: 7991 ldrb r1, [r2, #6] 50ba: 3206 adds r2, #6 50bc: 7019 strb r1, [r3, #0] 50be: 7852 ldrb r2, [r2, #1] 50c0: 705a strb r2, [r3, #1] 50c2: 6833 ldr r3, [r6, #0] 50c4: 195b adds r3, r3, r5 50c6: 3b03 subs r3, #3 50c8: 466a mov r2, sp 50ca: 7912 ldrb r2, [r2, #4] 50cc: 701a strb r2, [r3, #0] _lv_memcpy_small(style->map + size - sizeof(lv_opa_t) - end_mark_size, &opa, sizeof(lv_opa_t)); 50ce: 3d02 subs r5, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 50d0: 6833 ldr r3, [r6, #0] 50d2: 195d adds r5, r3, r5 50d4: 230e movs r3, #14 50d6: aa02 add r2, sp, #8 50d8: 4694 mov ip, r2 50da: 4463 add r3, ip 50dc: 781a ldrb r2, [r3, #0] 50de: 702a strb r2, [r5, #0] 50e0: 785b ldrb r3, [r3, #1] 50e2: 706b strb r3, [r5, #1] 50e4: e7bf b.n 5066 <_lv_style_set_opa+0xb2> LV_ASSERT_MEM(style->map); 50e6: 6832 ldr r2, [r6, #0] 50e8: 2300 movs r3, #0 50ea: 4805 ldr r0, [pc, #20] ; (5100 <_lv_style_set_opa+0x14c>) 50ec: 4905 ldr r1, [pc, #20] ; (5104 <_lv_style_set_opa+0x150>) 50ee: 4788 blx r1 50f0: e7fe b.n 50f0 <_lv_style_set_opa+0x13c> 50f2: 46c0 nop ; (mov r8, r8) 50f4: 00004b5d .word 0x00004b5d 50f8: 00010e45 .word 0x00010e45 50fc: 0000147d .word 0x0000147d 5100: 00018724 .word 0x00018724 5104: 00001485 .word 0x00001485 00005108 <_lv_style_set_ptr>: { 5108: b5f0 push {r4, r5, r6, r7, lr} 510a: 46de mov lr, fp 510c: 4657 mov r7, sl 510e: 464e mov r6, r9 5110: 4645 mov r5, r8 5112: b5e0 push {r5, r6, r7, lr} 5114: b087 sub sp, #28 5116: 0006 movs r6, r0 5118: 9202 str r2, [sp, #8] 511a: ab02 add r3, sp, #8 511c: 80d9 strh r1, [r3, #6] if(style->map == NULL) return -1; 511e: 6804 ldr r4, [r0, #0] 5120: 2c00 cmp r4, #0 5122: d05f beq.n 51e4 <_lv_style_set_ptr+0xdc> uint8_t id_to_find = prop & 0xFF; 5124: b2cd uxtb r5, r1 attr.full = (prop >> 8) & 0xFF; 5126: 0a0b lsrs r3, r1, #8 5128: 469a mov sl, r3 512a: 1c18 adds r0, r3, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 512c: 7823 ldrb r3, [r4, #0] 512e: 2bff cmp r3, #255 ; 0xff 5130: d054 beq.n 51dc <_lv_style_set_ptr+0xd4> 5132: 2201 movs r2, #1 5134: 4252 negs r2, r2 5136: 4690 mov r8, r2 5138: 4694 mov ip, r2 513a: 2200 movs r2, #0 if(attr_i.bits.state == attr.bits.state) { 513c: 217f movs r1, #127 ; 0x7f 513e: 468b mov fp, r1 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 5140: 0640 lsls r0, r0, #25 5142: 0e41 lsrs r1, r0, #25 5144: 4689 mov r9, r1 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 5146: 210f movs r1, #15 5148: 9601 str r6, [sp, #4] 514a: e01a b.n 5182 <_lv_style_set_ptr+0x7a> attr_i.full = style->map[i + 1]; 514c: 18a0 adds r0, r4, r2 514e: 7840 ldrb r0, [r0, #1] if(attr_i.bits.state == attr.bits.state) { 5150: 4656 mov r6, sl 5152: 4046 eors r6, r0 5154: 465f mov r7, fp 5156: 4237 tst r7, r6 5158: d00d beq.n 5176 <_lv_style_set_ptr+0x6e> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 515a: 0640 lsls r0, r0, #25 515c: 0e40 lsrs r0, r0, #25 515e: 9000 str r0, [sp, #0] 5160: 0006 movs r6, r0 5162: 464f mov r7, r9 5164: 43be bics r6, r7 5166: d10e bne.n 5186 <_lv_style_set_ptr+0x7e> if(attr_i.bits.state > weight) { 5168: 4560 cmp r0, ip 516a: dd0c ble.n 5186 <_lv_style_set_ptr+0x7e> weight = attr_i.bits.state; 516c: b200 sxth r0, r0 516e: 4684 mov ip, r0 id_guess = i; 5170: b210 sxth r0, r2 5172: 4680 mov r8, r0 5174: e007 b.n 5186 <_lv_style_set_ptr+0x7e> 5176: 9e01 ldr r6, [sp, #4] 5178: e013 b.n 51a2 <_lv_style_set_ptr+0x9a> i += sizeof(lv_style_property_t); 517a: 1c82 adds r2, r0, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 517c: 5ca3 ldrb r3, [r4, r2] 517e: 2bff cmp r3, #255 ; 0xff 5180: d00d beq.n 519e <_lv_style_set_ptr+0x96> if(style->map[i] == id_to_find) { 5182: 429d cmp r5, r3 5184: d0e2 beq.n 514c <_lv_style_set_ptr+0x44> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 5186: 400b ands r3, r1 5188: 1c90 adds r0, r2, #2 518a: 2b08 cmp r3, #8 518c: ddf5 ble.n 517a <_lv_style_set_ptr+0x72> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 518e: 1c90 adds r0, r2, #2 5190: 2b0b cmp r3, #11 5192: ddf2 ble.n 517a <_lv_style_set_ptr+0x72> else i += sizeof(const void *); 5194: 1d10 adds r0, r2, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 5196: 2b0d cmp r3, #13 5198: dcef bgt.n 517a <_lv_style_set_ptr+0x72> 519a: 1c50 adds r0, r2, #1 519c: e7ed b.n 517a <_lv_style_set_ptr+0x72> 519e: 9e01 ldr r6, [sp, #4] return id_guess; 51a0: 4642 mov r2, r8 if(id >= 0) { 51a2: 2a00 cmp r2, #0 51a4: db1e blt.n 51e4 <_lv_style_set_ptr+0xdc> attr_found.full = *(style->map + id + 1); 51a6: 18a3 adds r3, r4, r2 if(attr_found.bits.state == attr_goal.bits.state) { 51a8: 785b ldrb r3, [r3, #1] 51aa: 4655 mov r5, sl 51ac: 405d eors r5, r3 51ae: 066b lsls r3, r5, #25 51b0: d118 bne.n 51e4 <_lv_style_set_ptr+0xdc> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &p, sizeof(const void *)); 51b2: 3202 adds r2, #2 51b4: 18a4 adds r4, r4, r2 51b6: ab02 add r3, sp, #8 51b8: 781b ldrb r3, [r3, #0] 51ba: 7023 strb r3, [r4, #0] 51bc: ab02 add r3, sp, #8 51be: 785b ldrb r3, [r3, #1] 51c0: 7063 strb r3, [r4, #1] 51c2: ab02 add r3, sp, #8 51c4: 789b ldrb r3, [r3, #2] 51c6: 70a3 strb r3, [r4, #2] 51c8: ab02 add r3, sp, #8 51ca: 78db ldrb r3, [r3, #3] 51cc: 70e3 strb r3, [r4, #3] } 51ce: b007 add sp, #28 51d0: bc3c pop {r2, r3, r4, r5} 51d2: 4690 mov r8, r2 51d4: 4699 mov r9, r3 51d6: 46a2 mov sl, r4 51d8: 46ab mov fp, r5 51da: bdf0 pop {r4, r5, r6, r7, pc} int16_t id_guess = -1; 51dc: 2301 movs r3, #1 51de: 425b negs r3, r3 51e0: 4698 mov r8, r3 51e2: e7dd b.n 51a0 <_lv_style_set_ptr+0x98> lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 51e4: 22ff movs r2, #255 ; 0xff 51e6: 230e movs r3, #14 51e8: a902 add r1, sp, #8 51ea: 468c mov ip, r1 51ec: 4463 add r3, ip 51ee: 801a strh r2, [r3, #0] uint16_t size = _lv_style_get_mem_size(style); 51f0: 0030 movs r0, r6 51f2: 4b1f ldr r3, [pc, #124] ; (5270 <_lv_style_set_ptr+0x168>) 51f4: 4798 blx r3 if(size == 0) size += end_mark_size; 51f6: 2800 cmp r0, #0 51f8: d100 bne.n 51fc <_lv_style_set_ptr+0xf4> 51fa: 3002 adds r0, #2 size += sizeof(lv_style_property_t) + sizeof(const void *); 51fc: 3006 adds r0, #6 style->map = lv_mem_realloc(style->map, size); 51fe: b285 uxth r5, r0 5200: 0029 movs r1, r5 5202: 0020 movs r0, r4 5204: 4b1b ldr r3, [pc, #108] ; (5274 <_lv_style_set_ptr+0x16c>) 5206: 4798 blx r3 5208: 6030 str r0, [r6, #0] LV_ASSERT_MEM(style->map); 520a: 4b1b ldr r3, [pc, #108] ; (5278 <_lv_style_set_ptr+0x170>) 520c: 4798 blx r3 520e: 2800 cmp r0, #0 5210: d028 beq.n 5264 <_lv_style_set_ptr+0x15c> if(style == NULL) return; 5212: 2e00 cmp r6, #0 5214: d0db beq.n 51ce <_lv_style_set_ptr+0xc6> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 5216: 002b movs r3, r5 5218: 3b08 subs r3, #8 521a: 6832 ldr r2, [r6, #0] 521c: 4694 mov ip, r2 521e: 4463 add r3, ip 5220: aa02 add r2, sp, #8 5222: 7991 ldrb r1, [r2, #6] 5224: 3206 adds r2, #6 5226: 7019 strb r1, [r3, #0] 5228: 7852 ldrb r2, [r2, #1] 522a: 705a strb r2, [r3, #1] 522c: 1fab subs r3, r5, #6 _lv_memcpy_small(style->map + size - sizeof(const void *) - end_mark_size, &p, sizeof(const void *)); 522e: 6832 ldr r2, [r6, #0] 5230: 4694 mov ip, r2 5232: 4463 add r3, ip 5234: aa02 add r2, sp, #8 5236: 7812 ldrb r2, [r2, #0] 5238: 701a strb r2, [r3, #0] 523a: aa02 add r2, sp, #8 523c: 7852 ldrb r2, [r2, #1] 523e: 705a strb r2, [r3, #1] 5240: aa02 add r2, sp, #8 5242: 7892 ldrb r2, [r2, #2] 5244: 709a strb r2, [r3, #2] 5246: aa02 add r2, sp, #8 5248: 78d2 ldrb r2, [r2, #3] 524a: 70da strb r2, [r3, #3] 524c: 3d02 subs r5, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 524e: 6833 ldr r3, [r6, #0] 5250: 195d adds r5, r3, r5 5252: 230e movs r3, #14 5254: aa02 add r2, sp, #8 5256: 4694 mov ip, r2 5258: 4463 add r3, ip 525a: 781a ldrb r2, [r3, #0] 525c: 702a strb r2, [r5, #0] 525e: 785b ldrb r3, [r3, #1] 5260: 706b strb r3, [r5, #1] 5262: e7b4 b.n 51ce <_lv_style_set_ptr+0xc6> LV_ASSERT_MEM(style->map); 5264: 6832 ldr r2, [r6, #0] 5266: 2300 movs r3, #0 5268: 4804 ldr r0, [pc, #16] ; (527c <_lv_style_set_ptr+0x174>) 526a: 4905 ldr r1, [pc, #20] ; (5280 <_lv_style_set_ptr+0x178>) 526c: 4788 blx r1 526e: e7fe b.n 526e <_lv_style_set_ptr+0x166> 5270: 00004b5d .word 0x00004b5d 5274: 00010e45 .word 0x00010e45 5278: 0000147d .word 0x0000147d 527c: 00018724 .word 0x00018724 5280: 00001485 .word 0x00001485 00005284 <_lv_style_get_int>: { 5284: b5f0 push {r4, r5, r6, r7, lr} 5286: 46de mov lr, fp 5288: 4657 mov r7, sl 528a: 464e mov r6, r9 528c: 4645 mov r5, r8 528e: b5e0 push {r5, r6, r7, lr} 5290: b085 sub sp, #20 5292: 4681 mov r9, r0 5294: 9203 str r2, [sp, #12] if(style == NULL) return -1; 5296: 2800 cmp r0, #0 5298: d05b beq.n 5352 <_lv_style_get_int+0xce> if(style->map == NULL) return -1; 529a: 6805 ldr r5, [r0, #0] 529c: 2d00 cmp r5, #0 529e: d05b beq.n 5358 <_lv_style_get_int+0xd4> uint8_t id_to_find = prop & 0xFF; 52a0: b2ce uxtb r6, r1 attr.full = (prop >> 8) & 0xFF; 52a2: 0a09 lsrs r1, r1, #8 52a4: 1c08 adds r0, r1, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 52a6: 782b ldrb r3, [r5, #0] 52a8: 2bff cmp r3, #255 ; 0xff 52aa: d04e beq.n 534a <_lv_style_get_int+0xc6> 52ac: 2201 movs r2, #1 52ae: 4252 negs r2, r2 52b0: 9202 str r2, [sp, #8] 52b2: 4693 mov fp, r2 52b4: 2200 movs r2, #0 if(attr_i.bits.state == attr.bits.state) { 52b6: 247f movs r4, #127 ; 0x7f 52b8: 46a2 mov sl, r4 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 52ba: 0640 lsls r0, r0, #25 52bc: 0e40 lsrs r0, r0, #25 52be: 4684 mov ip, r0 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 52c0: 270f movs r7, #15 52c2: 4688 mov r8, r1 52c4: e01a b.n 52fc <_lv_style_get_int+0x78> attr_i.full = style->map[i + 1]; 52c6: 18a8 adds r0, r5, r2 52c8: 7840 ldrb r0, [r0, #1] if(attr_i.bits.state == attr.bits.state) { 52ca: 4644 mov r4, r8 52cc: 4044 eors r4, r0 52ce: 4651 mov r1, sl 52d0: 4221 tst r1, r4 52d2: d00d beq.n 52f0 <_lv_style_get_int+0x6c> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 52d4: 0640 lsls r0, r0, #25 52d6: 0e40 lsrs r0, r0, #25 52d8: 9001 str r0, [sp, #4] 52da: 0004 movs r4, r0 52dc: 4661 mov r1, ip 52de: 438c bics r4, r1 52e0: d10e bne.n 5300 <_lv_style_get_int+0x7c> if(attr_i.bits.state > weight) { 52e2: 4558 cmp r0, fp 52e4: dd0c ble.n 5300 <_lv_style_get_int+0x7c> weight = attr_i.bits.state; 52e6: b201 sxth r1, r0 52e8: 468b mov fp, r1 id_guess = i; 52ea: b211 sxth r1, r2 52ec: 9102 str r1, [sp, #8] 52ee: e007 b.n 5300 <_lv_style_get_int+0x7c> 52f0: 4641 mov r1, r8 52f2: e013 b.n 531c <_lv_style_get_int+0x98> i += sizeof(lv_style_property_t); 52f4: 1c82 adds r2, r0, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 52f6: 5cab ldrb r3, [r5, r2] 52f8: 2bff cmp r3, #255 ; 0xff 52fa: d00d beq.n 5318 <_lv_style_get_int+0x94> if(style->map[i] == id_to_find) { 52fc: 429e cmp r6, r3 52fe: d0e2 beq.n 52c6 <_lv_style_get_int+0x42> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 5300: 403b ands r3, r7 5302: 1c90 adds r0, r2, #2 5304: 2b08 cmp r3, #8 5306: ddf5 ble.n 52f4 <_lv_style_get_int+0x70> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 5308: 1c90 adds r0, r2, #2 530a: 2b0b cmp r3, #11 530c: ddf2 ble.n 52f4 <_lv_style_get_int+0x70> else i += sizeof(const void *); 530e: 1d10 adds r0, r2, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 5310: 2b0d cmp r3, #13 5312: dcef bgt.n 52f4 <_lv_style_get_int+0x70> 5314: 1c50 adds r0, r2, #1 5316: e7ed b.n 52f4 <_lv_style_get_int+0x70> 5318: 4641 mov r1, r8 return id_guess; 531a: 9a02 ldr r2, [sp, #8] if(id < 0) { 531c: 2a00 cmp r2, #0 531e: db1e blt.n 535e <_lv_style_get_int+0xda> _lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(lv_style_int_t)); 5320: 1c93 adds r3, r2, #2 5322: 18ed adds r5, r5, r3 5324: 782b ldrb r3, [r5, #0] 5326: 9803 ldr r0, [sp, #12] 5328: 7003 strb r3, [r0, #0] 532a: 786b ldrb r3, [r5, #1] 532c: 7043 strb r3, [r0, #1] attr_act.full = style->map[id + 1]; 532e: 464b mov r3, r9 5330: 681b ldr r3, [r3, #0] 5332: 189a adds r2, r3, r2 5334: 7850 ldrb r0, [r2, #1] return attr_act.bits.state & attr_goal.bits.state; 5336: 0649 lsls r1, r1, #25 5338: 0e49 lsrs r1, r1, #25 533a: 4008 ands r0, r1 } 533c: b005 add sp, #20 533e: bc3c pop {r2, r3, r4, r5} 5340: 4690 mov r8, r2 5342: 4699 mov r9, r3 5344: 46a2 mov sl, r4 5346: 46ab mov fp, r5 5348: bdf0 pop {r4, r5, r6, r7, pc} int16_t id_guess = -1; 534a: 2301 movs r3, #1 534c: 425b negs r3, r3 534e: 9302 str r3, [sp, #8] 5350: e7e3 b.n 531a <_lv_style_get_int+0x96> if(style == NULL) return -1; 5352: 2001 movs r0, #1 5354: 4240 negs r0, r0 5356: e7f1 b.n 533c <_lv_style_get_int+0xb8> if(style->map == NULL) return -1; 5358: 2001 movs r0, #1 535a: 4240 negs r0, r0 535c: e7ee b.n 533c <_lv_style_get_int+0xb8> return -1; 535e: 2001 movs r0, #1 5360: 4240 negs r0, r0 5362: e7eb b.n 533c <_lv_style_get_int+0xb8> 00005364 <_lv_style_get_opa>: { 5364: b5f0 push {r4, r5, r6, r7, lr} 5366: 46de mov lr, fp 5368: 4657 mov r7, sl 536a: 464e mov r6, r9 536c: 4645 mov r5, r8 536e: b5e0 push {r5, r6, r7, lr} 5370: b085 sub sp, #20 5372: 4681 mov r9, r0 5374: 9203 str r2, [sp, #12] if(style == NULL) return -1; 5376: 2800 cmp r0, #0 5378: d058 beq.n 542c <_lv_style_get_opa+0xc8> if(style->map == NULL) return -1; 537a: 6805 ldr r5, [r0, #0] 537c: 2d00 cmp r5, #0 537e: d058 beq.n 5432 <_lv_style_get_opa+0xce> uint8_t id_to_find = prop & 0xFF; 5380: b2ce uxtb r6, r1 attr.full = (prop >> 8) & 0xFF; 5382: 0a09 lsrs r1, r1, #8 5384: 1c08 adds r0, r1, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 5386: 782b ldrb r3, [r5, #0] 5388: 2bff cmp r3, #255 ; 0xff 538a: d04b beq.n 5424 <_lv_style_get_opa+0xc0> 538c: 2201 movs r2, #1 538e: 4252 negs r2, r2 5390: 9202 str r2, [sp, #8] 5392: 4693 mov fp, r2 5394: 2200 movs r2, #0 if(attr_i.bits.state == attr.bits.state) { 5396: 247f movs r4, #127 ; 0x7f 5398: 46a2 mov sl, r4 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 539a: 0640 lsls r0, r0, #25 539c: 0e40 lsrs r0, r0, #25 539e: 4684 mov ip, r0 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 53a0: 270f movs r7, #15 53a2: 4688 mov r8, r1 53a4: e01a b.n 53dc <_lv_style_get_opa+0x78> attr_i.full = style->map[i + 1]; 53a6: 18a8 adds r0, r5, r2 53a8: 7840 ldrb r0, [r0, #1] if(attr_i.bits.state == attr.bits.state) { 53aa: 4644 mov r4, r8 53ac: 4044 eors r4, r0 53ae: 4651 mov r1, sl 53b0: 4221 tst r1, r4 53b2: d00d beq.n 53d0 <_lv_style_get_opa+0x6c> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 53b4: 0640 lsls r0, r0, #25 53b6: 0e40 lsrs r0, r0, #25 53b8: 9001 str r0, [sp, #4] 53ba: 0004 movs r4, r0 53bc: 4661 mov r1, ip 53be: 438c bics r4, r1 53c0: d10e bne.n 53e0 <_lv_style_get_opa+0x7c> if(attr_i.bits.state > weight) { 53c2: 4558 cmp r0, fp 53c4: dd0c ble.n 53e0 <_lv_style_get_opa+0x7c> weight = attr_i.bits.state; 53c6: b201 sxth r1, r0 53c8: 468b mov fp, r1 id_guess = i; 53ca: b211 sxth r1, r2 53cc: 9102 str r1, [sp, #8] 53ce: e007 b.n 53e0 <_lv_style_get_opa+0x7c> 53d0: 4641 mov r1, r8 53d2: e013 b.n 53fc <_lv_style_get_opa+0x98> i += sizeof(lv_style_property_t); 53d4: 1c82 adds r2, r0, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 53d6: 5cab ldrb r3, [r5, r2] 53d8: 2bff cmp r3, #255 ; 0xff 53da: d00d beq.n 53f8 <_lv_style_get_opa+0x94> if(style->map[i] == id_to_find) { 53dc: 429e cmp r6, r3 53de: d0e2 beq.n 53a6 <_lv_style_get_opa+0x42> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 53e0: 403b ands r3, r7 53e2: 1c90 adds r0, r2, #2 53e4: 2b08 cmp r3, #8 53e6: ddf5 ble.n 53d4 <_lv_style_get_opa+0x70> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 53e8: 1c90 adds r0, r2, #2 53ea: 2b0b cmp r3, #11 53ec: ddf2 ble.n 53d4 <_lv_style_get_opa+0x70> else i += sizeof(const void *); 53ee: 1d10 adds r0, r2, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 53f0: 2b0d cmp r3, #13 53f2: dcef bgt.n 53d4 <_lv_style_get_opa+0x70> 53f4: 1c50 adds r0, r2, #1 53f6: e7ed b.n 53d4 <_lv_style_get_opa+0x70> 53f8: 4641 mov r1, r8 return id_guess; 53fa: 9a02 ldr r2, [sp, #8] if(id < 0) { 53fc: 2a00 cmp r2, #0 53fe: db1b blt.n 5438 <_lv_style_get_opa+0xd4> 5400: 18ad adds r5, r5, r2 5402: 78ab ldrb r3, [r5, #2] 5404: 9803 ldr r0, [sp, #12] 5406: 7003 strb r3, [r0, #0] attr_act.full = style->map[id + 1]; 5408: 464b mov r3, r9 540a: 681b ldr r3, [r3, #0] 540c: 189a adds r2, r3, r2 540e: 7850 ldrb r0, [r2, #1] return attr_act.bits.state & attr_goal.bits.state; 5410: 0649 lsls r1, r1, #25 5412: 0e49 lsrs r1, r1, #25 5414: 4008 ands r0, r1 } 5416: b005 add sp, #20 5418: bc3c pop {r2, r3, r4, r5} 541a: 4690 mov r8, r2 541c: 4699 mov r9, r3 541e: 46a2 mov sl, r4 5420: 46ab mov fp, r5 5422: bdf0 pop {r4, r5, r6, r7, pc} int16_t id_guess = -1; 5424: 2301 movs r3, #1 5426: 425b negs r3, r3 5428: 9302 str r3, [sp, #8] 542a: e7e6 b.n 53fa <_lv_style_get_opa+0x96> if(style == NULL) return -1; 542c: 2001 movs r0, #1 542e: 4240 negs r0, r0 5430: e7f1 b.n 5416 <_lv_style_get_opa+0xb2> if(style->map == NULL) return -1; 5432: 2001 movs r0, #1 5434: 4240 negs r0, r0 5436: e7ee b.n 5416 <_lv_style_get_opa+0xb2> return -1; 5438: 2001 movs r0, #1 543a: 4240 negs r0, r0 543c: e7eb b.n 5416 <_lv_style_get_opa+0xb2> 0000543e <_lv_style_get_color>: { 543e: b5f0 push {r4, r5, r6, r7, lr} 5440: 46de mov lr, fp 5442: 4657 mov r7, sl 5444: 464e mov r6, r9 5446: 4645 mov r5, r8 5448: b5e0 push {r5, r6, r7, lr} 544a: b085 sub sp, #20 544c: 4681 mov r9, r0 544e: 9203 str r2, [sp, #12] if(style == NULL) return -1; 5450: 2800 cmp r0, #0 5452: d05b beq.n 550c <_lv_style_get_color+0xce> if(style->map == NULL) return -1; 5454: 6805 ldr r5, [r0, #0] 5456: 2d00 cmp r5, #0 5458: d05b beq.n 5512 <_lv_style_get_color+0xd4> uint8_t id_to_find = prop & 0xFF; 545a: b2ce uxtb r6, r1 attr.full = (prop >> 8) & 0xFF; 545c: 0a09 lsrs r1, r1, #8 545e: 1c08 adds r0, r1, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 5460: 782b ldrb r3, [r5, #0] 5462: 2bff cmp r3, #255 ; 0xff 5464: d04e beq.n 5504 <_lv_style_get_color+0xc6> 5466: 2201 movs r2, #1 5468: 4252 negs r2, r2 546a: 9202 str r2, [sp, #8] 546c: 4693 mov fp, r2 546e: 2200 movs r2, #0 if(attr_i.bits.state == attr.bits.state) { 5470: 247f movs r4, #127 ; 0x7f 5472: 46a2 mov sl, r4 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 5474: 0640 lsls r0, r0, #25 5476: 0e40 lsrs r0, r0, #25 5478: 4684 mov ip, r0 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 547a: 270f movs r7, #15 547c: 4688 mov r8, r1 547e: e01a b.n 54b6 <_lv_style_get_color+0x78> attr_i.full = style->map[i + 1]; 5480: 18a8 adds r0, r5, r2 5482: 7840 ldrb r0, [r0, #1] if(attr_i.bits.state == attr.bits.state) { 5484: 4644 mov r4, r8 5486: 4044 eors r4, r0 5488: 4651 mov r1, sl 548a: 4221 tst r1, r4 548c: d00d beq.n 54aa <_lv_style_get_color+0x6c> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 548e: 0640 lsls r0, r0, #25 5490: 0e40 lsrs r0, r0, #25 5492: 9001 str r0, [sp, #4] 5494: 0004 movs r4, r0 5496: 4661 mov r1, ip 5498: 438c bics r4, r1 549a: d10e bne.n 54ba <_lv_style_get_color+0x7c> if(attr_i.bits.state > weight) { 549c: 4558 cmp r0, fp 549e: dd0c ble.n 54ba <_lv_style_get_color+0x7c> weight = attr_i.bits.state; 54a0: b201 sxth r1, r0 54a2: 468b mov fp, r1 id_guess = i; 54a4: b211 sxth r1, r2 54a6: 9102 str r1, [sp, #8] 54a8: e007 b.n 54ba <_lv_style_get_color+0x7c> 54aa: 4641 mov r1, r8 54ac: e013 b.n 54d6 <_lv_style_get_color+0x98> i += sizeof(lv_style_property_t); 54ae: 1c82 adds r2, r0, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 54b0: 5cab ldrb r3, [r5, r2] 54b2: 2bff cmp r3, #255 ; 0xff 54b4: d00d beq.n 54d2 <_lv_style_get_color+0x94> if(style->map[i] == id_to_find) { 54b6: 429e cmp r6, r3 54b8: d0e2 beq.n 5480 <_lv_style_get_color+0x42> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 54ba: 403b ands r3, r7 54bc: 1c90 adds r0, r2, #2 54be: 2b08 cmp r3, #8 54c0: ddf5 ble.n 54ae <_lv_style_get_color+0x70> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 54c2: 1c90 adds r0, r2, #2 54c4: 2b0b cmp r3, #11 54c6: ddf2 ble.n 54ae <_lv_style_get_color+0x70> else i += sizeof(const void *); 54c8: 1d10 adds r0, r2, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 54ca: 2b0d cmp r3, #13 54cc: dcef bgt.n 54ae <_lv_style_get_color+0x70> 54ce: 1c50 adds r0, r2, #1 54d0: e7ed b.n 54ae <_lv_style_get_color+0x70> 54d2: 4641 mov r1, r8 return id_guess; 54d4: 9a02 ldr r2, [sp, #8] if(id < 0) { 54d6: 2a00 cmp r2, #0 54d8: db1e blt.n 5518 <_lv_style_get_color+0xda> _lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(lv_color_t)); 54da: 1c93 adds r3, r2, #2 54dc: 18ed adds r5, r5, r3 54de: 782b ldrb r3, [r5, #0] 54e0: 9803 ldr r0, [sp, #12] 54e2: 7003 strb r3, [r0, #0] 54e4: 786b ldrb r3, [r5, #1] 54e6: 7043 strb r3, [r0, #1] attr_act.full = style->map[id + 1]; 54e8: 464b mov r3, r9 54ea: 681b ldr r3, [r3, #0] 54ec: 189a adds r2, r3, r2 54ee: 7850 ldrb r0, [r2, #1] return attr_act.bits.state & attr_goal.bits.state; 54f0: 0649 lsls r1, r1, #25 54f2: 0e49 lsrs r1, r1, #25 54f4: 4008 ands r0, r1 } 54f6: b005 add sp, #20 54f8: bc3c pop {r2, r3, r4, r5} 54fa: 4690 mov r8, r2 54fc: 4699 mov r9, r3 54fe: 46a2 mov sl, r4 5500: 46ab mov fp, r5 5502: bdf0 pop {r4, r5, r6, r7, pc} int16_t id_guess = -1; 5504: 2301 movs r3, #1 5506: 425b negs r3, r3 5508: 9302 str r3, [sp, #8] 550a: e7e3 b.n 54d4 <_lv_style_get_color+0x96> if(style == NULL) return -1; 550c: 2001 movs r0, #1 550e: 4240 negs r0, r0 5510: e7f1 b.n 54f6 <_lv_style_get_color+0xb8> if(style->map == NULL) return -1; 5512: 2001 movs r0, #1 5514: 4240 negs r0, r0 5516: e7ee b.n 54f6 <_lv_style_get_color+0xb8> return -1; 5518: 2001 movs r0, #1 551a: 4240 negs r0, r0 551c: e7eb b.n 54f6 <_lv_style_get_color+0xb8> 0000551e <_lv_style_get_ptr>: { 551e: b5f0 push {r4, r5, r6, r7, lr} 5520: 46de mov lr, fp 5522: 4657 mov r7, sl 5524: 464e mov r6, r9 5526: 4645 mov r5, r8 5528: b5e0 push {r5, r6, r7, lr} 552a: b085 sub sp, #20 552c: 4681 mov r9, r0 552e: 4693 mov fp, r2 if(style == NULL) return -1; 5530: 2800 cmp r0, #0 5532: d05f beq.n 55f4 <_lv_style_get_ptr+0xd6> if(style->map == NULL) return -1; 5534: 6806 ldr r6, [r0, #0] 5536: 2e00 cmp r6, #0 5538: d05f beq.n 55fa <_lv_style_get_ptr+0xdc> uint8_t id_to_find = prop & 0xFF; 553a: b2cf uxtb r7, r1 attr.full = (prop >> 8) & 0xFF; 553c: 0a0a lsrs r2, r1, #8 553e: 1c11 adds r1, r2, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 5540: 7833 ldrb r3, [r6, #0] 5542: 2bff cmp r3, #255 ; 0xff 5544: d052 beq.n 55ec <_lv_style_get_ptr+0xce> 5546: 2001 movs r0, #1 5548: 4240 negs r0, r0 554a: 9003 str r0, [sp, #12] 554c: 9002 str r0, [sp, #8] 554e: 2400 movs r4, #0 if(attr_i.bits.state == attr.bits.state) { 5550: 3080 adds r0, #128 ; 0x80 5552: 4682 mov sl, r0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 5554: 0649 lsls r1, r1, #25 5556: 0e49 lsrs r1, r1, #25 5558: 468c mov ip, r1 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 555a: 210f movs r1, #15 555c: 4690 mov r8, r2 555e: e01b b.n 5598 <_lv_style_get_ptr+0x7a> attr_i.full = style->map[i + 1]; 5560: 1932 adds r2, r6, r4 5562: 7850 ldrb r0, [r2, #1] if(attr_i.bits.state == attr.bits.state) { 5564: 4642 mov r2, r8 5566: 4042 eors r2, r0 5568: 4655 mov r5, sl 556a: 4215 tst r5, r2 556c: d00e beq.n 558c <_lv_style_get_ptr+0x6e> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 556e: 0640 lsls r0, r0, #25 5570: 0e40 lsrs r0, r0, #25 5572: 9001 str r0, [sp, #4] 5574: 0005 movs r5, r0 5576: 4662 mov r2, ip 5578: 4395 bics r5, r2 557a: d10f bne.n 559c <_lv_style_get_ptr+0x7e> if(attr_i.bits.state > weight) { 557c: 9a02 ldr r2, [sp, #8] 557e: 4290 cmp r0, r2 5580: dd0c ble.n 559c <_lv_style_get_ptr+0x7e> weight = attr_i.bits.state; 5582: b202 sxth r2, r0 5584: 9202 str r2, [sp, #8] id_guess = i; 5586: b222 sxth r2, r4 5588: 9203 str r2, [sp, #12] 558a: e007 b.n 559c <_lv_style_get_ptr+0x7e> 558c: 4642 mov r2, r8 558e: e013 b.n 55b8 <_lv_style_get_ptr+0x9a> i += sizeof(lv_style_property_t); 5590: 1c94 adds r4, r2, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 5592: 5d33 ldrb r3, [r6, r4] 5594: 2bff cmp r3, #255 ; 0xff 5596: d00d beq.n 55b4 <_lv_style_get_ptr+0x96> if(style->map[i] == id_to_find) { 5598: 429f cmp r7, r3 559a: d0e1 beq.n 5560 <_lv_style_get_ptr+0x42> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 559c: 400b ands r3, r1 559e: 1ca2 adds r2, r4, #2 55a0: 2b08 cmp r3, #8 55a2: ddf5 ble.n 5590 <_lv_style_get_ptr+0x72> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 55a4: 1ca2 adds r2, r4, #2 55a6: 2b0b cmp r3, #11 55a8: ddf2 ble.n 5590 <_lv_style_get_ptr+0x72> else i += sizeof(const void *); 55aa: 1d22 adds r2, r4, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 55ac: 2b0d cmp r3, #13 55ae: dcef bgt.n 5590 <_lv_style_get_ptr+0x72> 55b0: 1c62 adds r2, r4, #1 55b2: e7ed b.n 5590 <_lv_style_get_ptr+0x72> 55b4: 4642 mov r2, r8 return id_guess; 55b6: 9c03 ldr r4, [sp, #12] if(id < 0) { 55b8: 2c00 cmp r4, #0 55ba: db21 blt.n 5600 <_lv_style_get_ptr+0xe2> _lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(const void *)); 55bc: 0020 movs r0, r4 55be: 3402 adds r4, #2 55c0: 1936 adds r6, r6, r4 55c2: 2300 movs r3, #0 55c4: 465c mov r4, fp 55c6: 5cf1 ldrb r1, [r6, r3] 55c8: 54e1 strb r1, [r4, r3] 55ca: 3301 adds r3, #1 while(len) { 55cc: 2b04 cmp r3, #4 55ce: d1fa bne.n 55c6 <_lv_style_get_ptr+0xa8> attr_act.full = style->map[id + 1]; 55d0: 464b mov r3, r9 55d2: 681b ldr r3, [r3, #0] 55d4: 181b adds r3, r3, r0 55d6: 7858 ldrb r0, [r3, #1] return attr_act.bits.state & attr_goal.bits.state; 55d8: 0652 lsls r2, r2, #25 55da: 0e52 lsrs r2, r2, #25 55dc: 4010 ands r0, r2 } 55de: b005 add sp, #20 55e0: bc3c pop {r2, r3, r4, r5} 55e2: 4690 mov r8, r2 55e4: 4699 mov r9, r3 55e6: 46a2 mov sl, r4 55e8: 46ab mov fp, r5 55ea: bdf0 pop {r4, r5, r6, r7, pc} int16_t id_guess = -1; 55ec: 2301 movs r3, #1 55ee: 425b negs r3, r3 55f0: 9303 str r3, [sp, #12] 55f2: e7e0 b.n 55b6 <_lv_style_get_ptr+0x98> if(style == NULL) return -1; 55f4: 2001 movs r0, #1 55f6: 4240 negs r0, r0 55f8: e7f1 b.n 55de <_lv_style_get_ptr+0xc0> if(style->map == NULL) return -1; 55fa: 2001 movs r0, #1 55fc: 4240 negs r0, r0 55fe: e7ee b.n 55de <_lv_style_get_ptr+0xc0> return -1; 5600: 2001 movs r0, #1 5602: 4240 negs r0, r0 5604: e7eb b.n 55de <_lv_style_get_ptr+0xc0> 00005606 : if(!list->has_local) return NULL; 5606: 7943 ldrb r3, [r0, #5] 5608: 07da lsls r2, r3, #31 560a: d507 bpl.n 561c if(list->has_trans) return list->style_list[1]; 560c: 079b lsls r3, r3, #30 560e: d402 bmi.n 5616 else return list->style_list[0]; 5610: 6803 ldr r3, [r0, #0] 5612: 6818 ldr r0, [r3, #0] } 5614: 4770 bx lr if(list->has_trans) return list->style_list[1]; 5616: 6803 ldr r3, [r0, #0] 5618: 6858 ldr r0, [r3, #4] 561a: e7fb b.n 5614 if(!list->has_local) return NULL; 561c: 2000 movs r0, #0 561e: e7f9 b.n 5614 00005620 <_lv_style_list_get_transition_style>: if(!list->has_trans) return NULL; 5620: 7943 ldrb r3, [r0, #5] 5622: 079b lsls r3, r3, #30 5624: d502 bpl.n 562c <_lv_style_list_get_transition_style+0xc> return list->style_list[0]; 5626: 6803 ldr r3, [r0, #0] 5628: 6818 ldr r0, [r3, #0] } 562a: 4770 bx lr if(!list->has_trans) return NULL; 562c: 2000 movs r0, #0 562e: e7fc b.n 562a <_lv_style_list_get_transition_style+0xa> 00005630 <_lv_style_list_reset>: { 5630: b570 push {r4, r5, r6, lr} 5632: 1e04 subs r4, r0, #0 if(list == NULL) return; 5634: d026 beq.n 5684 <_lv_style_list_reset+0x54> if(list->has_local) { 5636: 7943 ldrb r3, [r0, #5] 5638: 07db lsls r3, r3, #31 563a: d508 bpl.n 564e <_lv_style_list_reset+0x1e> lv_style_t * local = lv_style_list_get_local_style(list); 563c: 4b14 ldr r3, [pc, #80] ; (5690 <_lv_style_list_reset+0x60>) 563e: 4798 blx r3 5640: 1e05 subs r5, r0, #0 if(local) { 5642: d004 beq.n 564e <_lv_style_list_reset+0x1e> lv_style_reset(local); 5644: 4b13 ldr r3, [pc, #76] ; (5694 <_lv_style_list_reset+0x64>) 5646: 4798 blx r3 lv_mem_free(local); 5648: 0028 movs r0, r5 564a: 4b13 ldr r3, [pc, #76] ; (5698 <_lv_style_list_reset+0x68>) 564c: 4798 blx r3 if(list->has_trans) { 564e: 7963 ldrb r3, [r4, #5] 5650: 079b lsls r3, r3, #30 5652: d509 bpl.n 5668 <_lv_style_list_reset+0x38> lv_style_t * trans = _lv_style_list_get_transition_style(list); 5654: 0020 movs r0, r4 5656: 4b11 ldr r3, [pc, #68] ; (569c <_lv_style_list_reset+0x6c>) 5658: 4798 blx r3 565a: 1e05 subs r5, r0, #0 if(trans) { 565c: d004 beq.n 5668 <_lv_style_list_reset+0x38> lv_style_reset(trans); 565e: 4b0d ldr r3, [pc, #52] ; (5694 <_lv_style_list_reset+0x64>) 5660: 4798 blx r3 lv_mem_free(trans); 5662: 0028 movs r0, r5 5664: 4b0c ldr r3, [pc, #48] ; (5698 <_lv_style_list_reset+0x68>) 5666: 4798 blx r3 if(list->style_cnt > 0) lv_mem_free(list->style_list); 5668: 7923 ldrb r3, [r4, #4] 566a: 2b00 cmp r3, #0 566c: d10b bne.n 5686 <_lv_style_list_reset+0x56> list->style_list = NULL; 566e: 2300 movs r3, #0 5670: 6023 str r3, [r4, #0] list->style_cnt = 0; 5672: 7123 strb r3, [r4, #4] list->has_local = 0; 5674: 7963 ldrb r3, [r4, #5] list->has_trans = 0; 5676: 2201 movs r2, #1 5678: 4393 bics r3, r2 list->skip_trans = 0; 567a: 3201 adds r2, #1 567c: 4393 bics r3, r2 567e: 3202 adds r2, #2 5680: 4393 bics r3, r2 5682: 7163 strb r3, [r4, #5] } 5684: bd70 pop {r4, r5, r6, pc} if(list->style_cnt > 0) lv_mem_free(list->style_list); 5686: 6820 ldr r0, [r4, #0] 5688: 4b03 ldr r3, [pc, #12] ; (5698 <_lv_style_list_reset+0x68>) 568a: 4798 blx r3 568c: e7ef b.n 566e <_lv_style_list_reset+0x3e> 568e: 46c0 nop ; (mov r8, r8) 5690: 00005607 .word 0x00005607 5694: 00004b49 .word 0x00004b49 5698: 00010b39 .word 0x00010b39 569c: 00005621 .word 0x00005621 000056a0 : { 56a0: b570 push {r4, r5, r6, lr} 56a2: 0005 movs r5, r0 56a4: 000c movs r4, r1 _lv_style_list_reset(list_dest); 56a6: 4b2b ldr r3, [pc, #172] ; (5754 ) 56a8: 4798 blx r3 if(list_src->style_list == NULL) return; 56aa: 6823 ldr r3, [r4, #0] 56ac: 2b00 cmp r3, #0 56ae: d03e beq.n 572e if(list_src->has_local == 0) { 56b0: 7963 ldrb r3, [r4, #5] 56b2: 07da lsls r2, r3, #31 56b4: d41f bmi.n 56f6 if(list_src->has_trans) { 56b6: 079b lsls r3, r3, #30 56b8: d510 bpl.n 56dc list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 1) * sizeof(lv_style_t *)); 56ba: 7920 ldrb r0, [r4, #4] 56bc: 3801 subs r0, #1 56be: 0080 lsls r0, r0, #2 56c0: 4b25 ldr r3, [pc, #148] ; (5758 ) 56c2: 4798 blx r3 56c4: 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 *)); 56c6: 7922 ldrb r2, [r4, #4] 56c8: 3a01 subs r2, #1 56ca: 0092 lsls r2, r2, #2 56cc: 6823 ldr r3, [r4, #0] 56ce: 1d19 adds r1, r3, #4 56d0: 4b22 ldr r3, [pc, #136] ; (575c ) 56d2: 4798 blx r3 list_dest->style_cnt = list_src->style_cnt - 1; 56d4: 7923 ldrb r3, [r4, #4] 56d6: 3b01 subs r3, #1 56d8: 712b strb r3, [r5, #4] 56da: e028 b.n 572e list_dest->style_list = lv_mem_alloc(list_src->style_cnt * sizeof(lv_style_t *)); 56dc: 7920 ldrb r0, [r4, #4] 56de: 0080 lsls r0, r0, #2 56e0: 4b1d ldr r3, [pc, #116] ; (5758 ) 56e2: 4798 blx r3 56e4: 6028 str r0, [r5, #0] _lv_memcpy(list_dest->style_list, list_src->style_list, list_src->style_cnt * sizeof(lv_style_t *)); 56e6: 7922 ldrb r2, [r4, #4] 56e8: 0092 lsls r2, r2, #2 56ea: 6821 ldr r1, [r4, #0] 56ec: 4b1b ldr r3, [pc, #108] ; (575c ) 56ee: 4798 blx r3 list_dest->style_cnt = list_src->style_cnt; 56f0: 7923 ldrb r3, [r4, #4] 56f2: 712b strb r3, [r5, #4] 56f4: e01b b.n 572e if(list_src->has_trans) { 56f6: 079b lsls r3, r3, #30 56f8: d51a bpl.n 5730 list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 2) * sizeof(lv_style_t *)); 56fa: 7920 ldrb r0, [r4, #4] 56fc: 3802 subs r0, #2 56fe: 0080 lsls r0, r0, #2 5700: 4b15 ldr r3, [pc, #84] ; (5758 ) 5702: 4798 blx r3 5704: 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 *)); 5706: 7922 ldrb r2, [r4, #4] 5708: 3a02 subs r2, #2 570a: 0092 lsls r2, r2, #2 570c: 6821 ldr r1, [r4, #0] 570e: 3108 adds r1, #8 5710: 4b12 ldr r3, [pc, #72] ; (575c ) 5712: 4798 blx r3 list_dest->style_cnt = list_src->style_cnt - 2; 5714: 7923 ldrb r3, [r4, #4] 5716: 3b02 subs r3, #2 5718: 712b strb r3, [r5, #4] lv_style_t * local_style = get_alloc_local_style(list_dest); 571a: 0028 movs r0, r5 571c: 4d10 ldr r5, [pc, #64] ; (5760 ) 571e: 47a8 blx r5 5720: 0006 movs r6, r0 lv_style_copy(local_style, get_alloc_local_style((lv_style_list_t *)list_src)); 5722: 0020 movs r0, r4 5724: 47a8 blx r5 5726: 0001 movs r1, r0 5728: 0030 movs r0, r6 572a: 4b0e ldr r3, [pc, #56] ; (5764 ) 572c: 4798 blx r3 } 572e: bd70 pop {r4, r5, r6, pc} list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 1) * sizeof(lv_style_t *)); 5730: 7920 ldrb r0, [r4, #4] 5732: 3801 subs r0, #1 5734: 0080 lsls r0, r0, #2 5736: 4b08 ldr r3, [pc, #32] ; (5758 ) 5738: 4798 blx r3 573a: 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 *)); 573c: 7922 ldrb r2, [r4, #4] 573e: 3a01 subs r2, #1 5740: 0092 lsls r2, r2, #2 5742: 6823 ldr r3, [r4, #0] 5744: 1d19 adds r1, r3, #4 5746: 4b05 ldr r3, [pc, #20] ; (575c ) 5748: 4798 blx r3 list_dest->style_cnt = list_src->style_cnt - 1; 574a: 7923 ldrb r3, [r4, #4] 574c: 3b01 subs r3, #1 574e: 712b strb r3, [r5, #4] 5750: e7e3 b.n 571a 5752: 46c0 nop ; (mov r8, r8) 5754: 00005631 .word 0x00005631 5758: 00010a71 .word 0x00010a71 575c: 00010c8d .word 0x00010c8d 5760: 00004ac5 .word 0x00004ac5 5764: 00004b9d .word 0x00004b9d 00005768 <_lv_style_list_add_trans_style>: { 5768: b570 push {r4, r5, r6, lr} 576a: 0005 movs r5, r0 if(list->has_trans) return _lv_style_list_get_transition_style(list); 576c: 7943 ldrb r3, [r0, #5] 576e: 079b lsls r3, r3, #30 5770: d504 bpl.n 577c <_lv_style_list_add_trans_style+0x14> 5772: 4b14 ldr r3, [pc, #80] ; (57c4 <_lv_style_list_add_trans_style+0x5c>) 5774: 4798 blx r3 5776: 0004 movs r4, r0 } 5778: 0020 movs r0, r4 577a: bd70 pop {r4, r5, r6, pc} lv_style_t * trans_style = lv_mem_alloc(sizeof(lv_style_t)); 577c: 2004 movs r0, #4 577e: 4b12 ldr r3, [pc, #72] ; (57c8 <_lv_style_list_add_trans_style+0x60>) 5780: 4798 blx r3 5782: 0004 movs r4, r0 LV_ASSERT_MEM(trans_style); 5784: 4b11 ldr r3, [pc, #68] ; (57cc <_lv_style_list_add_trans_style+0x64>) 5786: 4798 blx r3 5788: 2800 cmp r0, #0 578a: d015 beq.n 57b8 <_lv_style_list_add_trans_style+0x50> if(trans_style == NULL) { 578c: 2c00 cmp r4, #0 578e: d0f3 beq.n 5778 <_lv_style_list_add_trans_style+0x10> lv_style_init(trans_style); 5790: 0020 movs r0, r4 5792: 4b0f ldr r3, [pc, #60] ; (57d0 <_lv_style_list_add_trans_style+0x68>) 5794: 4798 blx r3 _lv_style_list_add_style(list, trans_style); 5796: 0021 movs r1, r4 5798: 0028 movs r0, r5 579a: 4b0e ldr r3, [pc, #56] ; (57d4 <_lv_style_list_add_trans_style+0x6c>) 579c: 4798 blx r3 list->has_trans = 1; 579e: 796b ldrb r3, [r5, #5] 57a0: 2202 movs r2, #2 57a2: 4313 orrs r3, r2 57a4: 716b strb r3, [r5, #5] if(list->has_local) { 57a6: 07db lsls r3, r3, #31 57a8: d5e6 bpl.n 5778 <_lv_style_list_add_trans_style+0x10> lv_style_t * tmp = list->style_list[0]; 57aa: 682b ldr r3, [r5, #0] 57ac: 681a ldr r2, [r3, #0] list->style_list[0] = list->style_list[1]; 57ae: 6859 ldr r1, [r3, #4] 57b0: 6019 str r1, [r3, #0] list->style_list[1] = tmp; 57b2: 682b ldr r3, [r5, #0] 57b4: 605a str r2, [r3, #4] 57b6: e7df b.n 5778 <_lv_style_list_add_trans_style+0x10> LV_ASSERT_MEM(trans_style); 57b8: 0022 movs r2, r4 57ba: 2300 movs r3, #0 57bc: 4806 ldr r0, [pc, #24] ; (57d8 <_lv_style_list_add_trans_style+0x70>) 57be: 4907 ldr r1, [pc, #28] ; (57dc <_lv_style_list_add_trans_style+0x74>) 57c0: 4788 blx r1 57c2: e7fe b.n 57c2 <_lv_style_list_add_trans_style+0x5a> 57c4: 00005621 .word 0x00005621 57c8: 00010a71 .word 0x00010a71 57cc: 0000147d .word 0x0000147d 57d0: 0000494d .word 0x0000494d 57d4: 00004a1d .word 0x00004a1d 57d8: 00018724 .word 0x00018724 57dc: 00001485 .word 0x00001485 000057e0 <_lv_style_list_get_int>: { 57e0: b5f0 push {r4, r5, r6, r7, lr} 57e2: 46d6 mov lr, sl 57e4: 464f mov r7, r9 57e6: 4646 mov r6, r8 57e8: b5c0 push {r6, r7, lr} 57ea: b084 sub sp, #16 57ec: 1e05 subs r5, r0, #0 57ee: 9101 str r1, [sp, #4] 57f0: 4691 mov r9, r2 if(list == NULL) return LV_RES_INV; 57f2: d058 beq.n 58a6 <_lv_style_list_get_int+0xc6> if(list->style_list == NULL) return LV_RES_INV; 57f4: 6803 ldr r3, [r0, #0] 57f6: 2b00 cmp r3, #0 57f8: d057 beq.n 58aa <_lv_style_list_get_int+0xca> int16_t weight_goal = attr.full; 57fa: 0a0b lsrs r3, r1, #8 57fc: 4698 mov r8, r3 lv_style_int_t value_act = 0; 57fe: 2200 movs r2, #0 5800: ab02 add r3, sp, #8 5802: 80da strh r2, [r3, #6] for(ci = 0; ci < list->style_cnt; ci++) { 5804: 7902 ldrb r2, [r0, #4] 5806: 2a00 cmp r2, #0 5808: dd42 ble.n 5890 <_lv_style_list_get_int+0xb0> 580a: 2400 movs r4, #0 580c: 2601 movs r6, #1 580e: 4276 negs r6, r6 if(list->has_trans && list->skip_trans) id++; 5810: 2306 movs r3, #6 5812: 469a mov sl, r3 int16_t weight_act = _lv_style_get_int(class, prop, &value_act); 5814: 4f26 ldr r7, [pc, #152] ; (58b0 <_lv_style_list_get_int+0xd0>) 5816: e016 b.n 5846 <_lv_style_list_get_int+0x66> 5818: 3101 adds r1, #1 581a: b2c9 uxtb r1, r1 581c: e019 b.n 5852 <_lv_style_list_get_int+0x72> *res = value_act; 581e: ab02 add r3, sp, #8 5820: 3306 adds r3, #6 5822: 881b ldrh r3, [r3, #0] 5824: 464a mov r2, r9 5826: 8013 strh r3, [r2, #0] return LV_RES_OK; 5828: 2001 movs r0, #1 582a: e036 b.n 589a <_lv_style_list_get_int+0xba> else if(weight_act > weight) { 582c: 42b3 cmp r3, r6 582e: dd05 ble.n 583c <_lv_style_list_get_int+0x5c> *res = value_act; 5830: ab02 add r3, sp, #8 5832: 3306 adds r3, #6 5834: 881b ldrh r3, [r3, #0] 5836: 464a mov r2, r9 5838: 8013 strh r3, [r2, #0] weight = weight_act; 583a: 0006 movs r6, r0 583c: 3401 adds r4, #1 583e: b224 sxth r4, r4 for(ci = 0; ci < list->style_cnt; ci++) { 5840: 792a ldrb r2, [r5, #4] 5842: 4294 cmp r4, r2 5844: da26 bge.n 5894 <_lv_style_list_get_int+0xb4> lv_style_t * class = lv_style_list_get_style(list, ci); 5846: b2e1 uxtb r1, r4 5848: 796b ldrb r3, [r5, #5] 584a: 4650 mov r0, sl 584c: 4003 ands r3, r0 584e: 2b06 cmp r3, #6 5850: d0e2 beq.n 5818 <_lv_style_list_get_int+0x38> if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 5852: 2000 movs r0, #0 5854: 2a00 cmp r2, #0 5856: d004 beq.n 5862 <_lv_style_list_get_int+0x82> 5858: 4291 cmp r1, r2 585a: d202 bcs.n 5862 <_lv_style_list_get_int+0x82> return list->style_list[id]; 585c: 0089 lsls r1, r1, #2 585e: 682b ldr r3, [r5, #0] 5860: 58c8 ldr r0, [r1, r3] int16_t weight_act = _lv_style_get_int(class, prop, &value_act); 5862: ab02 add r3, sp, #8 5864: 1d9a adds r2, r3, #6 5866: 9901 ldr r1, [sp, #4] 5868: 47b8 blx r7 586a: 0003 movs r3, r0 if(weight_act == weight_goal) { 586c: 4580 cmp r8, r0 586e: d0d6 beq.n 581e <_lv_style_list_get_int+0x3e> else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 5870: 796a ldrb r2, [r5, #5] 5872: 0791 lsls r1, r2, #30 5874: d5da bpl.n 582c <_lv_style_list_get_int+0x4c> 5876: 2800 cmp r0, #0 5878: dbd8 blt.n 582c <_lv_style_list_get_int+0x4c> 587a: 2c00 cmp r4, #0 587c: d1d6 bne.n 582c <_lv_style_list_get_int+0x4c> 587e: 0752 lsls r2, r2, #29 5880: d4d4 bmi.n 582c <_lv_style_list_get_int+0x4c> *res = value_act; 5882: ab02 add r3, sp, #8 5884: 3306 adds r3, #6 5886: 881b ldrh r3, [r3, #0] 5888: 464a mov r2, r9 588a: 8013 strh r3, [r2, #0] return LV_RES_OK; 588c: 2001 movs r0, #1 588e: e004 b.n 589a <_lv_style_list_get_int+0xba> int16_t weight = -1; 5890: 2601 movs r6, #1 5892: 4276 negs r6, r6 if(weight >= 0) return LV_RES_OK; 5894: 43f0 mvns r0, r6 5896: b280 uxth r0, r0 if(list == NULL) return LV_RES_INV; 5898: 0bc0 lsrs r0, r0, #15 } 589a: b004 add sp, #16 589c: bc1c pop {r2, r3, r4} 589e: 4690 mov r8, r2 58a0: 4699 mov r9, r3 58a2: 46a2 mov sl, r4 58a4: bdf0 pop {r4, r5, r6, r7, pc} if(list == NULL) return LV_RES_INV; 58a6: 2000 movs r0, #0 58a8: e7f7 b.n 589a <_lv_style_list_get_int+0xba> if(list->style_list == NULL) return LV_RES_INV; 58aa: 2000 movs r0, #0 58ac: e7f5 b.n 589a <_lv_style_list_get_int+0xba> 58ae: 46c0 nop ; (mov r8, r8) 58b0: 00005285 .word 0x00005285 000058b4 <_lv_style_list_get_color>: { 58b4: b5f0 push {r4, r5, r6, r7, lr} 58b6: 46d6 mov lr, sl 58b8: 464f mov r7, r9 58ba: 4646 mov r6, r8 58bc: b5c0 push {r6, r7, lr} 58be: b084 sub sp, #16 58c0: 1e05 subs r5, r0, #0 58c2: 9101 str r1, [sp, #4] 58c4: 4691 mov r9, r2 if(list == NULL) return LV_RES_INV; 58c6: d054 beq.n 5972 <_lv_style_list_get_color+0xbe> if(list->style_list == NULL) return LV_RES_INV; 58c8: 6803 ldr r3, [r0, #0] 58ca: 2b00 cmp r3, #0 58cc: d053 beq.n 5976 <_lv_style_list_get_color+0xc2> int16_t weight_goal = attr.full; 58ce: 0a0b lsrs r3, r1, #8 58d0: 4698 mov r8, r3 lv_color_t value_act = { 0 }; 58d2: 2200 movs r2, #0 58d4: ab03 add r3, sp, #12 58d6: 801a strh r2, [r3, #0] for(ci = 0; ci < list->style_cnt; ci++) { 58d8: 7902 ldrb r2, [r0, #4] 58da: 2a00 cmp r2, #0 58dc: dd3e ble.n 595c <_lv_style_list_get_color+0xa8> 58de: 2400 movs r4, #0 58e0: 2601 movs r6, #1 58e2: 4276 negs r6, r6 if(list->has_trans && list->skip_trans) id++; 58e4: 2306 movs r3, #6 58e6: 469a mov sl, r3 int16_t weight_act = _lv_style_get_color(class, prop, &value_act); 58e8: 4f24 ldr r7, [pc, #144] ; (597c <_lv_style_list_get_color+0xc8>) 58ea: e014 b.n 5916 <_lv_style_list_get_color+0x62> 58ec: 3101 adds r1, #1 58ee: b2c9 uxtb r1, r1 58f0: e017 b.n 5922 <_lv_style_list_get_color+0x6e> *res = value_act; 58f2: ab03 add r3, sp, #12 58f4: 881b ldrh r3, [r3, #0] 58f6: 464a mov r2, r9 58f8: 8013 strh r3, [r2, #0] return LV_RES_OK; 58fa: 2001 movs r0, #1 58fc: e033 b.n 5966 <_lv_style_list_get_color+0xb2> else if(weight_act > weight) { 58fe: 42b3 cmp r3, r6 5900: dd04 ble.n 590c <_lv_style_list_get_color+0x58> *res = value_act; 5902: ab03 add r3, sp, #12 5904: 881b ldrh r3, [r3, #0] 5906: 464a mov r2, r9 5908: 8013 strh r3, [r2, #0] weight = weight_act; 590a: 0006 movs r6, r0 590c: 3401 adds r4, #1 590e: b224 sxth r4, r4 for(ci = 0; ci < list->style_cnt; ci++) { 5910: 792a ldrb r2, [r5, #4] 5912: 4294 cmp r4, r2 5914: da24 bge.n 5960 <_lv_style_list_get_color+0xac> lv_style_t * class = lv_style_list_get_style(list, ci); 5916: b2e1 uxtb r1, r4 5918: 796b ldrb r3, [r5, #5] 591a: 4650 mov r0, sl 591c: 4003 ands r3, r0 591e: 2b06 cmp r3, #6 5920: d0e4 beq.n 58ec <_lv_style_list_get_color+0x38> if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 5922: 2000 movs r0, #0 5924: 2a00 cmp r2, #0 5926: d004 beq.n 5932 <_lv_style_list_get_color+0x7e> 5928: 4291 cmp r1, r2 592a: d202 bcs.n 5932 <_lv_style_list_get_color+0x7e> return list->style_list[id]; 592c: 0089 lsls r1, r1, #2 592e: 682b ldr r3, [r5, #0] 5930: 58c8 ldr r0, [r1, r3] int16_t weight_act = _lv_style_get_color(class, prop, &value_act); 5932: aa03 add r2, sp, #12 5934: 9901 ldr r1, [sp, #4] 5936: 47b8 blx r7 5938: 0003 movs r3, r0 if(weight_act == weight_goal) { 593a: 4580 cmp r8, r0 593c: d0d9 beq.n 58f2 <_lv_style_list_get_color+0x3e> else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 593e: 796a ldrb r2, [r5, #5] 5940: 0791 lsls r1, r2, #30 5942: d5dc bpl.n 58fe <_lv_style_list_get_color+0x4a> 5944: 2800 cmp r0, #0 5946: dbda blt.n 58fe <_lv_style_list_get_color+0x4a> 5948: 2c00 cmp r4, #0 594a: d1d8 bne.n 58fe <_lv_style_list_get_color+0x4a> 594c: 0752 lsls r2, r2, #29 594e: d4d6 bmi.n 58fe <_lv_style_list_get_color+0x4a> *res = value_act; 5950: ab03 add r3, sp, #12 5952: 881b ldrh r3, [r3, #0] 5954: 464a mov r2, r9 5956: 8013 strh r3, [r2, #0] return LV_RES_OK; 5958: 2001 movs r0, #1 595a: e004 b.n 5966 <_lv_style_list_get_color+0xb2> int16_t weight = -1; 595c: 2601 movs r6, #1 595e: 4276 negs r6, r6 if(weight >= 0) return LV_RES_OK; 5960: 43f0 mvns r0, r6 5962: b280 uxth r0, r0 if(list == NULL) return LV_RES_INV; 5964: 0bc0 lsrs r0, r0, #15 } 5966: b004 add sp, #16 5968: bc1c pop {r2, r3, r4} 596a: 4690 mov r8, r2 596c: 4699 mov r9, r3 596e: 46a2 mov sl, r4 5970: bdf0 pop {r4, r5, r6, r7, pc} if(list == NULL) return LV_RES_INV; 5972: 2000 movs r0, #0 5974: e7f7 b.n 5966 <_lv_style_list_get_color+0xb2> if(list->style_list == NULL) return LV_RES_INV; 5976: 2000 movs r0, #0 5978: e7f5 b.n 5966 <_lv_style_list_get_color+0xb2> 597a: 46c0 nop ; (mov r8, r8) 597c: 0000543f .word 0x0000543f 00005980 <_lv_style_list_get_opa>: { 5980: b5f0 push {r4, r5, r6, r7, lr} 5982: 46d6 mov lr, sl 5984: 464f mov r7, r9 5986: 4646 mov r6, r8 5988: b5c0 push {r6, r7, lr} 598a: b084 sub sp, #16 598c: 1e05 subs r5, r0, #0 598e: 9101 str r1, [sp, #4] 5990: 4691 mov r9, r2 if(list == NULL) return LV_RES_INV; 5992: d058 beq.n 5a46 <_lv_style_list_get_opa+0xc6> if(list->style_list == NULL) return LV_RES_INV; 5994: 6803 ldr r3, [r0, #0] 5996: 2b00 cmp r3, #0 5998: d057 beq.n 5a4a <_lv_style_list_get_opa+0xca> int16_t weight_goal = attr.full; 599a: 0a0b lsrs r3, r1, #8 599c: 4698 mov r8, r3 lv_opa_t value_act = LV_OPA_TRANSP; 599e: 2200 movs r2, #0 59a0: ab02 add r3, sp, #8 59a2: 71da strb r2, [r3, #7] for(ci = 0; ci < list->style_cnt; ci++) { 59a4: 7902 ldrb r2, [r0, #4] 59a6: 2a00 cmp r2, #0 59a8: dd42 ble.n 5a30 <_lv_style_list_get_opa+0xb0> 59aa: 2400 movs r4, #0 59ac: 2601 movs r6, #1 59ae: 4276 negs r6, r6 if(list->has_trans && list->skip_trans) id++; 59b0: 2306 movs r3, #6 59b2: 469a mov sl, r3 int16_t weight_act = _lv_style_get_opa(class, prop, &value_act); 59b4: 4f26 ldr r7, [pc, #152] ; (5a50 <_lv_style_list_get_opa+0xd0>) 59b6: e016 b.n 59e6 <_lv_style_list_get_opa+0x66> 59b8: 3101 adds r1, #1 59ba: b2c9 uxtb r1, r1 59bc: e019 b.n 59f2 <_lv_style_list_get_opa+0x72> *res = value_act; 59be: ab02 add r3, sp, #8 59c0: 3307 adds r3, #7 59c2: 781b ldrb r3, [r3, #0] 59c4: 464a mov r2, r9 59c6: 7013 strb r3, [r2, #0] return LV_RES_OK; 59c8: 2001 movs r0, #1 59ca: e036 b.n 5a3a <_lv_style_list_get_opa+0xba> else if(weight_act > weight) { 59cc: 42b3 cmp r3, r6 59ce: dd05 ble.n 59dc <_lv_style_list_get_opa+0x5c> *res = value_act; 59d0: ab02 add r3, sp, #8 59d2: 3307 adds r3, #7 59d4: 781b ldrb r3, [r3, #0] 59d6: 464a mov r2, r9 59d8: 7013 strb r3, [r2, #0] weight = weight_act; 59da: 0006 movs r6, r0 59dc: 3401 adds r4, #1 59de: b224 sxth r4, r4 for(ci = 0; ci < list->style_cnt; ci++) { 59e0: 792a ldrb r2, [r5, #4] 59e2: 4294 cmp r4, r2 59e4: da26 bge.n 5a34 <_lv_style_list_get_opa+0xb4> lv_style_t * class = lv_style_list_get_style(list, ci); 59e6: b2e1 uxtb r1, r4 59e8: 796b ldrb r3, [r5, #5] 59ea: 4650 mov r0, sl 59ec: 4003 ands r3, r0 59ee: 2b06 cmp r3, #6 59f0: d0e2 beq.n 59b8 <_lv_style_list_get_opa+0x38> if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 59f2: 2000 movs r0, #0 59f4: 2a00 cmp r2, #0 59f6: d004 beq.n 5a02 <_lv_style_list_get_opa+0x82> 59f8: 4291 cmp r1, r2 59fa: d202 bcs.n 5a02 <_lv_style_list_get_opa+0x82> return list->style_list[id]; 59fc: 0089 lsls r1, r1, #2 59fe: 682b ldr r3, [r5, #0] 5a00: 58c8 ldr r0, [r1, r3] int16_t weight_act = _lv_style_get_opa(class, prop, &value_act); 5a02: ab02 add r3, sp, #8 5a04: 1dda adds r2, r3, #7 5a06: 9901 ldr r1, [sp, #4] 5a08: 47b8 blx r7 5a0a: 0003 movs r3, r0 if(weight_act == weight_goal) { 5a0c: 4580 cmp r8, r0 5a0e: d0d6 beq.n 59be <_lv_style_list_get_opa+0x3e> else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 5a10: 796a ldrb r2, [r5, #5] 5a12: 0791 lsls r1, r2, #30 5a14: d5da bpl.n 59cc <_lv_style_list_get_opa+0x4c> 5a16: 2800 cmp r0, #0 5a18: dbd8 blt.n 59cc <_lv_style_list_get_opa+0x4c> 5a1a: 2c00 cmp r4, #0 5a1c: d1d6 bne.n 59cc <_lv_style_list_get_opa+0x4c> 5a1e: 0752 lsls r2, r2, #29 5a20: d4d4 bmi.n 59cc <_lv_style_list_get_opa+0x4c> *res = value_act; 5a22: ab02 add r3, sp, #8 5a24: 3307 adds r3, #7 5a26: 781b ldrb r3, [r3, #0] 5a28: 464a mov r2, r9 5a2a: 7013 strb r3, [r2, #0] return LV_RES_OK; 5a2c: 2001 movs r0, #1 5a2e: e004 b.n 5a3a <_lv_style_list_get_opa+0xba> int16_t weight = -1; 5a30: 2601 movs r6, #1 5a32: 4276 negs r6, r6 if(weight >= 0) return LV_RES_OK; 5a34: 43f0 mvns r0, r6 5a36: b280 uxth r0, r0 if(list == NULL) return LV_RES_INV; 5a38: 0bc0 lsrs r0, r0, #15 } 5a3a: b004 add sp, #16 5a3c: bc1c pop {r2, r3, r4} 5a3e: 4690 mov r8, r2 5a40: 4699 mov r9, r3 5a42: 46a2 mov sl, r4 5a44: bdf0 pop {r4, r5, r6, r7, pc} if(list == NULL) return LV_RES_INV; 5a46: 2000 movs r0, #0 5a48: e7f7 b.n 5a3a <_lv_style_list_get_opa+0xba> if(list->style_list == NULL) return LV_RES_INV; 5a4a: 2000 movs r0, #0 5a4c: e7f5 b.n 5a3a <_lv_style_list_get_opa+0xba> 5a4e: 46c0 nop ; (mov r8, r8) 5a50: 00005365 .word 0x00005365 00005a54 <_lv_style_list_get_ptr>: { 5a54: b5f0 push {r4, r5, r6, r7, lr} 5a56: 46d6 mov lr, sl 5a58: 464f mov r7, r9 5a5a: 4646 mov r6, r8 5a5c: b5c0 push {r6, r7, lr} 5a5e: b084 sub sp, #16 5a60: 0005 movs r5, r0 5a62: 9101 str r1, [sp, #4] 5a64: 0017 movs r7, r2 if(list == NULL) return LV_RES_INV; 5a66: 2800 cmp r0, #0 5a68: d04c beq.n 5b04 <_lv_style_list_get_ptr+0xb0> if(list->style_list == NULL) return LV_RES_INV; 5a6a: 6803 ldr r3, [r0, #0] 5a6c: 2b00 cmp r3, #0 5a6e: d04b beq.n 5b08 <_lv_style_list_get_ptr+0xb4> int16_t weight_goal = attr.full; 5a70: 0a0b lsrs r3, r1, #8 5a72: 4698 mov r8, r3 for(ci = 0; ci < list->style_cnt; ci++) { 5a74: 7902 ldrb r2, [r0, #4] 5a76: 2a00 cmp r2, #0 5a78: dd39 ble.n 5aee <_lv_style_list_get_ptr+0x9a> 5a7a: 2400 movs r4, #0 5a7c: 2601 movs r6, #1 5a7e: 4276 negs r6, r6 if(list->has_trans && list->skip_trans) id++; 5a80: 2306 movs r3, #6 5a82: 469a mov sl, r3 int16_t weight_act = _lv_style_get_ptr(class, prop, &value_act); 5a84: 4b21 ldr r3, [pc, #132] ; (5b0c <_lv_style_list_get_ptr+0xb8>) 5a86: 4699 mov r9, r3 5a88: e010 b.n 5aac <_lv_style_list_get_ptr+0x58> 5a8a: 3101 adds r1, #1 5a8c: b2c9 uxtb r1, r1 5a8e: e013 b.n 5ab8 <_lv_style_list_get_ptr+0x64> *res = value_act; 5a90: 9b03 ldr r3, [sp, #12] 5a92: 603b str r3, [r7, #0] return LV_RES_OK; 5a94: 2001 movs r0, #1 5a96: e02f b.n 5af8 <_lv_style_list_get_ptr+0xa4> else if(weight_act > weight) { 5a98: 42b3 cmp r3, r6 5a9a: dd02 ble.n 5aa2 <_lv_style_list_get_ptr+0x4e> *res = value_act; 5a9c: 9b03 ldr r3, [sp, #12] 5a9e: 603b str r3, [r7, #0] weight = weight_act; 5aa0: 0006 movs r6, r0 5aa2: 3401 adds r4, #1 5aa4: b224 sxth r4, r4 for(ci = 0; ci < list->style_cnt; ci++) { 5aa6: 792a ldrb r2, [r5, #4] 5aa8: 4294 cmp r4, r2 5aaa: da22 bge.n 5af2 <_lv_style_list_get_ptr+0x9e> lv_style_t * class = lv_style_list_get_style(list, ci); 5aac: b2e1 uxtb r1, r4 5aae: 796b ldrb r3, [r5, #5] 5ab0: 4650 mov r0, sl 5ab2: 4003 ands r3, r0 5ab4: 2b06 cmp r3, #6 5ab6: d0e8 beq.n 5a8a <_lv_style_list_get_ptr+0x36> if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 5ab8: 2000 movs r0, #0 5aba: 2a00 cmp r2, #0 5abc: d004 beq.n 5ac8 <_lv_style_list_get_ptr+0x74> 5abe: 4291 cmp r1, r2 5ac0: d202 bcs.n 5ac8 <_lv_style_list_get_ptr+0x74> return list->style_list[id]; 5ac2: 0089 lsls r1, r1, #2 5ac4: 682b ldr r3, [r5, #0] 5ac6: 58c8 ldr r0, [r1, r3] int16_t weight_act = _lv_style_get_ptr(class, prop, &value_act); 5ac8: aa03 add r2, sp, #12 5aca: 9901 ldr r1, [sp, #4] 5acc: 47c8 blx r9 5ace: 0003 movs r3, r0 if(weight_act == weight_goal) { 5ad0: 4580 cmp r8, r0 5ad2: d0dd beq.n 5a90 <_lv_style_list_get_ptr+0x3c> else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 5ad4: 796a ldrb r2, [r5, #5] 5ad6: 0791 lsls r1, r2, #30 5ad8: d5de bpl.n 5a98 <_lv_style_list_get_ptr+0x44> 5ada: 2800 cmp r0, #0 5adc: dbdc blt.n 5a98 <_lv_style_list_get_ptr+0x44> 5ade: 2c00 cmp r4, #0 5ae0: d1da bne.n 5a98 <_lv_style_list_get_ptr+0x44> 5ae2: 0752 lsls r2, r2, #29 5ae4: d4d8 bmi.n 5a98 <_lv_style_list_get_ptr+0x44> *res = value_act; 5ae6: 9b03 ldr r3, [sp, #12] 5ae8: 603b str r3, [r7, #0] return LV_RES_OK; 5aea: 2001 movs r0, #1 5aec: e004 b.n 5af8 <_lv_style_list_get_ptr+0xa4> int16_t weight = -1; 5aee: 2601 movs r6, #1 5af0: 4276 negs r6, r6 if(weight >= 0) return LV_RES_OK; 5af2: 43f0 mvns r0, r6 5af4: b280 uxth r0, r0 if(list == NULL) return LV_RES_INV; 5af6: 0bc0 lsrs r0, r0, #15 } 5af8: b004 add sp, #16 5afa: bc1c pop {r2, r3, r4} 5afc: 4690 mov r8, r2 5afe: 4699 mov r9, r3 5b00: 46a2 mov sl, r4 5b02: bdf0 pop {r4, r5, r6, r7, pc} if(list == NULL) return LV_RES_INV; 5b04: 2000 movs r0, #0 5b06: e7f7 b.n 5af8 <_lv_style_list_get_ptr+0xa4> if(list->style_list == NULL) return LV_RES_INV; 5b08: 2000 movs r0, #0 5b0a: e7f5 b.n 5af8 <_lv_style_list_get_ptr+0xa4> 5b0c: 0000551f .word 0x0000551f 00005b10 : } } } static inline lv_color_t color_blend_true_color_additive(lv_color_t fg, lv_color_t bg, lv_opa_t opa) { 5b10: b5f0 push {r4, r5, r6, r7, lr} 5b12: 1c05 adds r5, r0, #0 5b14: 06cb lsls r3, r1, #27 5b16: 0edb lsrs r3, r3, #27 5b18: 054f lsls r7, r1, #21 5b1a: 0ebf lsrs r7, r7, #26 5b1c: 0409 lsls r1, r1, #16 5b1e: 0ec9 lsrs r1, r1, #27 if(opa <= LV_OPA_MIN) return bg; 5b20: 2a05 cmp r2, #5 5b22: d93d bls.n 5ba0 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; 5b24: 0428 lsls r0, r5, #16 5b26: 0ec0 lsrs r0, r0, #27 5b28: 1840 adds r0, r0, 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); 5b2a: 281f cmp r0, #31 5b2c: d900 bls.n 5b30 5b2e: 201f movs r0, #31 5b30: 241f movs r4, #31 5b32: 4004 ands r4, r0 5b34: 46a4 mov ip, r4 #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; 5b36: 056e lsls r6, r5, #21 5b38: 0eb6 lsrs r6, r6, #26 5b3a: 19f6 adds r6, r6, r7 fg.ch.green = LV_MATH_MIN(tmp, 63); 5b3c: 2e3f cmp r6, #63 ; 0x3f 5b3e: d900 bls.n 5b42 5b40: 263f movs r6, #63 ; 0x3f 5b42: 243f movs r4, #63 ; 0x3f 5b44: 4026 ands r6, r4 #elif LV_COLOR_DEPTH == 32 fg.ch.green = LV_MATH_MIN(tmp, 255); #endif tmp = bg.ch.blue + fg.ch.blue; 5b46: 06ed lsls r5, r5, #27 5b48: 0eed lsrs r5, r5, #27 5b4a: 18ed adds r5, r5, r3 #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); 5b4c: 2d1f cmp r5, #31 5b4e: d900 bls.n 5b52 5b50: 251f movs r5, #31 5b52: 241f movs r4, #31 5b54: 402c ands r4, r5 #elif LV_COLOR_DEPTH == 32 fg.ch.blue = LV_MATH_MIN(tmp, 255); #endif #endif if(opa == LV_OPA_COVER) return fg; 5b56: 2aff cmp r2, #255 ; 0xff 5b58: d027 beq.n 5baa 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))); 5b5a: 25ff movs r5, #255 ; 0xff 5b5c: 1aad subs r5, r5, r2 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))); 5b5e: 4354 muls r4, r2 5b60: 436b muls r3, r5 5b62: 18e3 adds r3, r4, r3 5b64: 0218 lsls r0, r3, #8 5b66: 18c0 adds r0, r0, r3 5b68: 01c0 lsls r0, r0, #7 5b6a: 18c0 adds r0, r0, r3 5b6c: 0100 lsls r0, r0, #4 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 5b6e: 4356 muls r6, r2 5b70: 436f muls r7, r5 5b72: 19f7 adds r7, r6, r7 5b74: 023e lsls r6, r7, #8 5b76: 19f6 adds r6, r6, r7 5b78: 01f6 lsls r6, r6, #7 5b7a: 19f6 adds r6, r6, r7 5b7c: 00f6 lsls r6, r6, #3 5b7e: 0eb6 lsrs r6, r6, #26 5b80: 0176 lsls r6, r6, #5 5b82: 0ec0 lsrs r0, r0, #27 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 5b84: 4663 mov r3, ip 5b86: 435a muls r2, r3 5b88: 4369 muls r1, r5 5b8a: 1852 adds r2, r2, r1 5b8c: 0211 lsls r1, r2, #8 5b8e: 1889 adds r1, r1, r2 5b90: 01c9 lsls r1, r1, #7 5b92: 188a adds r2, r1, r2 5b94: 0dd2 lsrs r2, r2, #23 5b96: b2d2 uxtb r2, r2 5b98: 02d2 lsls r2, r2, #11 5b9a: 4330 orrs r0, r6 5b9c: 4310 orrs r0, r2 return lv_color_mix(fg, bg, opa); } 5b9e: bdf0 pop {r4, r5, r6, r7, pc} if(opa <= LV_OPA_MIN) return bg; 5ba0: 0178 lsls r0, r7, #5 5ba2: 02c9 lsls r1, r1, #11 5ba4: 4318 orrs r0, r3 5ba6: 4308 orrs r0, r1 5ba8: e7f9 b.n 5b9e if(opa == LV_OPA_COVER) return fg; 5baa: 0170 lsls r0, r6, #5 5bac: 4663 mov r3, ip 5bae: 02da lsls r2, r3, #11 5bb0: 4320 orrs r0, r4 5bb2: 4310 orrs r0, r2 5bb4: e7f3 b.n 5b9e 00005bb6 : static inline lv_color_t color_blend_true_color_subtractive(lv_color_t fg, lv_color_t bg, lv_opa_t opa) { 5bb6: b5f0 push {r4, r5, r6, r7, lr} 5bb8: 46c6 mov lr, r8 5bba: b500 push {lr} 5bbc: 1c05 adds r5, r0, #0 5bbe: 06c8 lsls r0, r1, #27 5bc0: 0ec3 lsrs r3, r0, #27 5bc2: 4698 mov r8, r3 5bc4: 054f lsls r7, r1, #21 5bc6: 0ebf lsrs r7, r7, #26 5bc8: 0409 lsls r1, r1, #16 5bca: 0ec9 lsrs r1, r1, #27 if(opa <= LV_OPA_MIN) return bg; 5bcc: 2a05 cmp r2, #5 5bce: d941 bls.n 5c54 int32_t tmp; tmp = bg.ch.red - fg.ch.red; 5bd0: 0428 lsls r0, r5, #16 5bd2: 0ec0 lsrs r0, r0, #27 5bd4: 1a08 subs r0, r1, r0 fg.ch.red = LV_MATH_MAX(tmp, 0); 5bd6: 43c3 mvns r3, r0 5bd8: 17db asrs r3, r3, #31 5bda: 4018 ands r0, r3 5bdc: 231f movs r3, #31 5bde: 4003 ands r3, r0 5be0: 469c mov ip, r3 #if LV_COLOR_16_SWAP == 0 tmp = bg.ch.green - fg.ch.green; 5be2: 056e lsls r6, r5, #21 5be4: 0eb6 lsrs r6, r6, #26 5be6: 1bb8 subs r0, r7, r6 fg.ch.green = LV_MATH_MAX(tmp, 0); 5be8: 43c3 mvns r3, r0 5bea: 17db asrs r3, r3, #31 5bec: 4018 ands r0, r3 5bee: 263f movs r6, #63 ; 0x3f 5bf0: 4006 ands r6, r0 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; 5bf2: 06ed lsls r5, r5, #27 5bf4: 0eed lsrs r5, r5, #27 5bf6: 4643 mov r3, r8 5bf8: 1b5d subs r5, r3, r5 fg.ch.blue = LV_MATH_MAX(tmp, 0); 5bfa: 43e8 mvns r0, r5 5bfc: 17c0 asrs r0, r0, #31 5bfe: 4005 ands r5, r0 5c00: 241f movs r4, #31 5c02: 402c ands r4, r5 if(opa == LV_OPA_COVER) return fg; 5c04: 2aff cmp r2, #255 ; 0xff 5c06: d02b beq.n 5c60 5c08: 25ff movs r5, #255 ; 0xff 5c0a: 1aad subs r5, r5, r2 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 5c0c: 4354 muls r4, r2 5c0e: 4640 mov r0, r8 5c10: 4368 muls r0, r5 5c12: 1824 adds r4, r4, r0 5c14: 0220 lsls r0, r4, #8 5c16: 1900 adds r0, r0, r4 5c18: 01c0 lsls r0, r0, #7 5c1a: 1900 adds r0, r0, r4 5c1c: 0100 lsls r0, r0, #4 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 5c1e: 4356 muls r6, r2 5c20: 436f muls r7, r5 5c22: 19f7 adds r7, r6, r7 5c24: 023e lsls r6, r7, #8 5c26: 19f6 adds r6, r6, r7 5c28: 01f6 lsls r6, r6, #7 5c2a: 19f6 adds r6, r6, r7 5c2c: 00f6 lsls r6, r6, #3 5c2e: 0eb6 lsrs r6, r6, #26 5c30: 0176 lsls r6, r6, #5 5c32: 0ec0 lsrs r0, r0, #27 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 5c34: 4663 mov r3, ip 5c36: 435a muls r2, r3 5c38: 4369 muls r1, r5 5c3a: 1852 adds r2, r2, r1 5c3c: 0211 lsls r1, r2, #8 5c3e: 1889 adds r1, r1, r2 5c40: 01c9 lsls r1, r1, #7 5c42: 188a adds r2, r1, r2 5c44: 0dd2 lsrs r2, r2, #23 5c46: b2d2 uxtb r2, r2 5c48: 02d2 lsls r2, r2, #11 5c4a: 4330 orrs r0, r6 5c4c: 4310 orrs r0, r2 return lv_color_mix(fg, bg, opa); } 5c4e: bc04 pop {r2} 5c50: 4690 mov r8, r2 5c52: bdf0 pop {r4, r5, r6, r7, pc} if(opa <= LV_OPA_MIN) return bg; 5c54: 0178 lsls r0, r7, #5 5c56: 02c9 lsls r1, r1, #11 5c58: 4303 orrs r3, r0 5c5a: 0018 movs r0, r3 5c5c: 4308 orrs r0, r1 5c5e: e7f6 b.n 5c4e if(opa == LV_OPA_COVER) return fg; 5c60: 0176 lsls r6, r6, #5 5c62: 4663 mov r3, ip 5c64: 02d8 lsls r0, r3, #11 5c66: 4334 orrs r4, r6 5c68: 4320 orrs r0, r4 5c6a: e7f0 b.n 5c4e 00005c6c <_lv_blend_fill>: { 5c6c: b5f0 push {r4, r5, r6, r7, lr} 5c6e: 46de mov lr, fp 5c70: 4657 mov r7, sl 5c72: 464e mov r6, r9 5c74: 4645 mov r5, r8 5c76: b5e0 push {r5, r6, r7, lr} 5c78: b093 sub sp, #76 ; 0x4c 5c7a: 0004 movs r4, r0 5c7c: 000d movs r5, r1 5c7e: 4669 mov r1, sp 5c80: 828a strh r2, [r1, #20] 5c82: 9306 str r3, [sp, #24] 5c84: ab1c add r3, sp, #112 ; 0x70 5c86: 781f ldrb r7, [r3, #0] 5c88: ab1d add r3, sp, #116 ; 0x74 5c8a: 781b ldrb r3, [r3, #0] 5c8c: 469b mov fp, r3 5c8e: ab1e add r3, sp, #120 ; 0x78 5c90: 781e ldrb r6, [r3, #0] if(opa < LV_OPA_MIN) return; 5c92: 465b mov r3, fp 5c94: 2b04 cmp r3, #4 5c96: d901 bls.n 5c9c <_lv_blend_fill+0x30> if(mask_res == LV_DRAW_MASK_RES_TRANSP) return; 5c98: 2f00 cmp r7, #0 5c9a: d106 bne.n 5caa <_lv_blend_fill+0x3e> } 5c9c: b013 add sp, #76 ; 0x4c 5c9e: bc3c pop {r2, r3, r4, r5} 5ca0: 4690 mov r8, r2 5ca2: 4699 mov r9, r3 5ca4: 46a2 mov sl, r4 5ca6: 46ab mov fp, r5 5ca8: bdf0 pop {r4, r5, r6, r7, pc} lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 5caa: 4bbf ldr r3, [pc, #764] ; (5fa8 <_lv_blend_fill+0x33c>) 5cac: 4798 blx r3 5cae: 4682 mov sl, r0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 5cb0: 4bbe ldr r3, [pc, #760] ; (5fac <_lv_blend_fill+0x340>) 5cb2: 4798 blx r3 5cb4: 4680 mov r8, r0 lv_color_t * disp_buf = vdb->buf_act; 5cb6: 6883 ldr r3, [r0, #8] 5cb8: 9304 str r3, [sp, #16] is_common = _lv_area_intersect(&draw_area, clip_area, fill_area); 5cba: 002a movs r2, r5 5cbc: 0021 movs r1, r4 5cbe: a810 add r0, sp, #64 ; 0x40 5cc0: 4bbb ldr r3, [pc, #748] ; (5fb0 <_lv_blend_fill+0x344>) 5cc2: 4798 blx r3 if(!is_common) return; 5cc4: 2800 cmp r0, #0 5cc6: d0e9 beq.n 5c9c <_lv_blend_fill+0x30> draw_area.x1 -= disp_area->x1; 5cc8: 4643 mov r3, r8 5cca: 8a1a ldrh r2, [r3, #16] 5ccc: ab10 add r3, sp, #64 ; 0x40 5cce: 8819 ldrh r1, [r3, #0] 5cd0: 1a89 subs r1, r1, r2 5cd2: b289 uxth r1, r1 5cd4: 910b str r1, [sp, #44] ; 0x2c 5cd6: 468c mov ip, r1 5cd8: b208 sxth r0, r1 5cda: 900a str r0, [sp, #40] ; 0x28 5cdc: 8018 strh r0, [r3, #0] draw_area.y1 -= disp_area->y1; 5cde: 4640 mov r0, r8 5ce0: 8a41 ldrh r1, [r0, #18] 5ce2: 885d ldrh r5, [r3, #2] 5ce4: 1a6d subs r5, r5, r1 5ce6: b22d sxth r5, r5 5ce8: 805d strh r5, [r3, #2] draw_area.x2 -= disp_area->x1; 5cea: 8898 ldrh r0, [r3, #4] 5cec: 1a80 subs r0, r0, r2 5cee: b280 uxth r0, r0 5cf0: 8098 strh r0, [r3, #4] draw_area.y2 -= disp_area->y1; 5cf2: 88da ldrh r2, [r3, #6] 5cf4: 1a52 subs r2, r2, r1 5cf6: b212 sxth r2, r2 5cf8: 4691 mov r9, r2 5cfa: 80da strh r2, [r3, #6] if(mask && disp->driver.antialiasing == 0) 5cfc: 9a06 ldr r2, [sp, #24] 5cfe: 2a00 cmp r2, #0 5d00: d018 beq.n 5d34 <_lv_blend_fill+0xc8> 5d02: 4653 mov r3, sl 5d04: 7a1b ldrb r3, [r3, #8] 5d06: 07db lsls r3, r3, #31 5d08: d414 bmi.n 5d34 <_lv_blend_fill+0xc8> * @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); 5d0a: 1c41 adds r1, r0, #1 5d0c: 4663 mov r3, ip 5d0e: 1ac9 subs r1, r1, r3 5d10: b209 sxth r1, r1 for(i = 0; i < mask_w; i++) mask[i] = mask[i] > 128 ? LV_OPA_COVER : LV_OPA_TRANSP; 5d12: 2900 cmp r1, #0 5d14: dd0e ble.n 5d34 <_lv_blend_fill+0xc8> 5d16: 0013 movs r3, r2 5d18: 4694 mov ip, r2 5d1a: 4461 add r1, ip 5d1c: 2480 movs r4, #128 ; 0x80 5d1e: 9a0a ldr r2, [sp, #40] ; 0x28 5d20: 4694 mov ip, r2 5d22: 781a ldrb r2, [r3, #0] 5d24: 4294 cmp r4, r2 5d26: 4192 sbcs r2, r2 5d28: 701a strb r2, [r3, #0] 5d2a: 3301 adds r3, #1 5d2c: 428b cmp r3, r1 5d2e: d1f8 bne.n 5d22 <_lv_blend_fill+0xb6> 5d30: 4663 mov r3, ip 5d32: 930a str r3, [sp, #40] ; 0x28 if(disp->driver.set_px_cb) { 5d34: 4653 mov r3, sl 5d36: 695b ldr r3, [r3, #20] 5d38: 2b00 cmp r3, #0 5d3a: d100 bne.n 5d3e <_lv_blend_fill+0xd2> 5d3c: e08c b.n 5e58 <_lv_blend_fill+0x1ec> 5d3e: 466b mov r3, sp 5d40: 8a9e ldrh r6, [r3, #20] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 5d42: 4b99 ldr r3, [pc, #612] ; (5fa8 <_lv_blend_fill+0x33c>) 5d44: 4798 blx r3 5d46: 0005 movs r5, r0 5d48: 4643 mov r3, r8 5d4a: 8a9b ldrh r3, [r3, #20] 5d4c: 3301 adds r3, #1 5d4e: 4642 mov r2, r8 5d50: 8a12 ldrh r2, [r2, #16] 5d52: 1a9b subs r3, r3, r2 5d54: b21b sxth r3, r3 5d56: 9305 str r3, [sp, #20] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 5d58: 2f01 cmp r7, #1 5d5a: d046 beq.n 5dea <_lv_blend_fill+0x17e> const lv_opa_t * mask_tmp = mask - draw_area->x1; 5d5c: aa10 add r2, sp, #64 ; 0x40 5d5e: 2300 movs r3, #0 5d60: 5ed1 ldrsh r1, [r2, r3] 5d62: 9b06 ldr r3, [sp, #24] 5d64: 1a5b subs r3, r3, r1 5d66: 4698 mov r8, r3 5d68: 8893 ldrh r3, [r2, #4] 5d6a: 3301 adds r3, #1 5d6c: 1a5b subs r3, r3, r1 5d6e: b21b sxth r3, r3 5d70: 9308 str r3, [sp, #32] for(y = draw_area->y1; y <= draw_area->y2; y++) { 5d72: 2102 movs r1, #2 5d74: 5e53 ldrsh r3, [r2, r1] 5d76: 0019 movs r1, r3 5d78: 9307 str r3, [sp, #28] 5d7a: 2306 movs r3, #6 5d7c: 5ed3 ldrsh r3, [r2, r3] 5d7e: 4299 cmp r1, r3 5d80: dd00 ble.n 5d84 <_lv_blend_fill+0x118> 5d82: e78b b.n 5c9c <_lv_blend_fill+0x30> for(x = draw_area->x1; x <= draw_area->x2; x++) { 5d84: af10 add r7, sp, #64 ; 0x40 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, 5d86: ab01 add r3, sp, #4 5d88: 469a mov sl, r3 5d8a: 46b1 mov r9, r6 5d8c: 4646 mov r6, r8 for(x = draw_area->x1; x <= draw_area->x2; x++) { 5d8e: 2300 movs r3, #0 5d90: 5efc ldrsh r4, [r7, r3] 5d92: 2204 movs r2, #4 5d94: 5ebb ldrsh r3, [r7, r2] 5d96: 429c cmp r4, r3 5d98: dc1b bgt.n 5dd2 <_lv_blend_fill+0x166> disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, 5d9a: 466b mov r3, sp 5d9c: 221c movs r2, #28 5d9e: 5e9b ldrsh r3, [r3, r2] 5da0: 4698 mov r8, r3 5da2: 9606 str r6, [sp, #24] 5da4: b223 sxth r3, r4 (uint32_t)((uint32_t)opa * mask_tmp[x]) >> 8); 5da6: 9a06 ldr r2, [sp, #24] 5da8: 5d12 ldrb r2, [r2, r4] 5daa: 4659 mov r1, fp 5dac: 434a muls r2, r1 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, 5dae: 0a12 lsrs r2, r2, #8 5db0: 9202 str r2, [sp, #8] 5db2: 4652 mov r2, sl 5db4: 4649 mov r1, r9 5db6: 8011 strh r1, [r2, #0] 5db8: 4642 mov r2, r8 5dba: 9200 str r2, [sp, #0] 5dbc: 9a05 ldr r2, [sp, #20] 5dbe: 9904 ldr r1, [sp, #16] 5dc0: 0028 movs r0, r5 5dc2: 696e ldr r6, [r5, #20] 5dc4: 47b0 blx r6 for(x = draw_area->x1; x <= draw_area->x2; x++) { 5dc6: 3401 adds r4, #1 5dc8: 2204 movs r2, #4 5dca: 5ebb ldrsh r3, [r7, r2] 5dcc: 429c cmp r4, r3 5dce: dde9 ble.n 5da4 <_lv_blend_fill+0x138> 5dd0: 9e06 ldr r6, [sp, #24] 5dd2: 9b08 ldr r3, [sp, #32] 5dd4: 469c mov ip, r3 5dd6: 4466 add r6, ip for(y = draw_area->y1; y <= draw_area->y2; y++) { 5dd8: 9b07 ldr r3, [sp, #28] 5dda: 3301 adds r3, #1 5ddc: 001a movs r2, r3 5dde: 9307 str r3, [sp, #28] 5de0: 2106 movs r1, #6 5de2: 5e7b ldrsh r3, [r7, r1] 5de4: 429a cmp r2, r3 5de6: ddd2 ble.n 5d8e <_lv_blend_fill+0x122> 5de8: e758 b.n 5c9c <_lv_blend_fill+0x30> for(y = draw_area->y1; y <= draw_area->y2; y++) { 5dea: ab10 add r3, sp, #64 ; 0x40 5dec: 2102 movs r1, #2 5dee: 5e5a ldrsh r2, [r3, r1] 5df0: 4692 mov sl, r2 5df2: 2206 movs r2, #6 5df4: 5e9b ldrsh r3, [r3, r2] 5df6: 459a cmp sl, r3 5df8: dd00 ble.n 5dfc <_lv_blend_fill+0x190> 5dfa: e74f b.n 5c9c <_lv_blend_fill+0x30> for(x = draw_area->x1; x <= draw_area->x2; x++) { 5dfc: ac10 add r4, sp, #64 ; 0x40 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, opa); 5dfe: ab01 add r3, sp, #4 5e00: 4699 mov r9, r3 5e02: 46b0 mov r8, r6 for(x = draw_area->x1; x <= draw_area->x2; x++) { 5e04: 2300 movs r3, #0 5e06: 5ee7 ldrsh r7, [r4, r3] 5e08: 2204 movs r2, #4 5e0a: 5ea3 ldrsh r3, [r4, r2] 5e0c: 429f cmp r7, r3 5e0e: dc1b bgt.n 5e48 <_lv_blend_fill+0x1dc> disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, opa); 5e10: 4653 mov r3, sl 5e12: b21e sxth r6, r3 5e14: 4642 mov r2, r8 5e16: 4669 mov r1, sp 5e18: 830a strh r2, [r1, #24] 5e1a: 46b0 mov r8, r6 5e1c: b23b sxth r3, r7 5e1e: 465a mov r2, fp 5e20: 9202 str r2, [sp, #8] 5e22: 464a mov r2, r9 5e24: 4669 mov r1, sp 5e26: 8b09 ldrh r1, [r1, #24] 5e28: 8011 strh r1, [r2, #0] 5e2a: 4642 mov r2, r8 5e2c: 9200 str r2, [sp, #0] 5e2e: 9a05 ldr r2, [sp, #20] 5e30: 9904 ldr r1, [sp, #16] 5e32: 0028 movs r0, r5 5e34: 696e ldr r6, [r5, #20] 5e36: 47b0 blx r6 for(x = draw_area->x1; x <= draw_area->x2; x++) { 5e38: 3701 adds r7, #1 5e3a: 2204 movs r2, #4 5e3c: 5ea3 ldrsh r3, [r4, r2] 5e3e: 429f cmp r7, r3 5e40: ddec ble.n 5e1c <_lv_blend_fill+0x1b0> 5e42: 466b mov r3, sp 5e44: 8b1b ldrh r3, [r3, #24] 5e46: 4698 mov r8, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 5e48: 2301 movs r3, #1 5e4a: 469c mov ip, r3 5e4c: 44e2 add sl, ip 5e4e: 2206 movs r2, #6 5e50: 5ea3 ldrsh r3, [r4, r2] 5e52: 459a cmp sl, r3 5e54: ddd6 ble.n 5e04 <_lv_blend_fill+0x198> 5e56: e721 b.n 5c9c <_lv_blend_fill+0x30> else if(mode == LV_BLEND_MODE_NORMAL) { 5e58: 2e00 cmp r6, #0 5e5a: d001 beq.n 5e60 <_lv_blend_fill+0x1f4> 5e5c: f000 fc27 bl 66ae <_lv_blend_fill+0xa42> 5e60: 466b mov r3, sp 5e62: 8a9b ldrh r3, [r3, #20] 5e64: 466a mov r2, sp 5e66: 8413 strh r3, [r2, #32] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 5e68: 4b4f ldr r3, [pc, #316] ; (5fa8 <_lv_blend_fill+0x33c>) 5e6a: 4798 blx r3 5e6c: 0004 movs r4, r0 5e6e: 4643 mov r3, r8 5e70: 8a9d ldrh r5, [r3, #20] 5e72: 3501 adds r5, #1 5e74: 8a1b ldrh r3, [r3, #16] 5e76: 1aed subs r5, r5, r3 5e78: b22d sxth r5, r5 5e7a: a810 add r0, sp, #64 ; 0x40 5e7c: 2300 movs r3, #0 5e7e: 5ec1 ldrsh r1, [r0, r3] 5e80: 8883 ldrh r3, [r0, #4] 5e82: 3301 adds r3, #1 5e84: 1a5b subs r3, r3, r1 5e86: b21b sxth r3, r3 5e88: 930b str r3, [sp, #44] ; 0x2c int32_t draw_area_w = lv_area_get_width(draw_area); 5e8a: 930a str r3, [sp, #40] ; 0x28 * @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); 5e8c: 2306 movs r3, #6 5e8e: 5ec2 ldrsh r2, [r0, r3] 5e90: 2302 movs r3, #2 5e92: 5ec3 ldrsh r3, [r0, r3] 5e94: 1c56 adds r6, r2, #1 5e96: 1af6 subs r6, r6, r3 5e98: b236 sxth r6, r6 int32_t draw_area_h = lv_area_get_height(draw_area); 5e9a: 960e str r6, [sp, #56] ; 0x38 lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1; 5e9c: 930c str r3, [sp, #48] ; 0x30 5e9e: 436b muls r3, r5 5ea0: 185b adds r3, r3, r1 5ea2: 005b lsls r3, r3, #1 5ea4: 9904 ldr r1, [sp, #16] 5ea6: 468c mov ip, r1 5ea8: 4463 add r3, ip 5eaa: 9307 str r3, [sp, #28] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 5eac: 2f01 cmp r7, #1 5eae: d01e beq.n 5eee <_lv_blend_fill+0x282> if(opa > LV_OPA_MAX) { 5eb0: 465b mov r3, fp 5eb2: 2bfa cmp r3, #250 ; 0xfa 5eb4: d900 bls.n 5eb8 <_lv_blend_fill+0x24c> 5eb6: e127 b.n 6108 <_lv_blend_fill+0x49c> for(y = draw_area->y1; y <= draw_area->y2; y++) { 5eb8: 9b0c ldr r3, [sp, #48] ; 0x30 5eba: 4293 cmp r3, r2 5ebc: dd00 ble.n 5ec0 <_lv_blend_fill+0x254> 5ebe: e6ed b.n 5c9c <_lv_blend_fill+0x30> last_dest_color.full = disp_buf_first[0].full; 5ec0: 9b07 ldr r3, [sp, #28] 5ec2: 881a ldrh r2, [r3, #0] 5ec4: 466b mov r3, sp 5ec6: 8a99 ldrh r1, [r3, #20] 5ec8: 040b lsls r3, r1, #16 5eca: 0edb lsrs r3, r3, #27 5ecc: 9305 str r3, [sp, #20] LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 5ece: 054b lsls r3, r1, #21 5ed0: 0e9b lsrs r3, r3, #26 5ed2: 9308 str r3, [sp, #32] LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 5ed4: 06cb lsls r3, r1, #27 5ed6: 0edb lsrs r3, r3, #27 5ed8: 469c mov ip, r3 disp_buf_first += disp_w; 5eda: 006b lsls r3, r5, #1 5edc: 930f str r3, [sp, #60] ; 0x3c 5ede: 0013 movs r3, r2 5ee0: 2600 movs r6, #0 5ee2: 2000 movs r0, #0 if(opa_tmp == LV_OPA_COVER) last_res_color = color; 5ee4: b289 uxth r1, r1 5ee6: 910e str r1, [sp, #56] ; 0x38 5ee8: 0002 movs r2, r0 5eea: 4699 mov r9, r3 5eec: e3d0 b.n 6690 <_lv_blend_fill+0xa24> if(opa > LV_OPA_MAX) { 5eee: 465b mov r3, fp 5ef0: 2bfa cmp r3, #250 ; 0xfa 5ef2: d924 bls.n 5f3e <_lv_blend_fill+0x2d2> if(disp->driver.gpu_fill_cb && lv_area_get_size(draw_area) > GPU_SIZE_LIMIT) { 5ef4: 6a63 ldr r3, [r4, #36] ; 0x24 5ef6: 2b00 cmp r3, #0 5ef8: d004 beq.n 5f04 <_lv_blend_fill+0x298> 5efa: a810 add r0, sp, #64 ; 0x40 5efc: 4b2d ldr r3, [pc, #180] ; (5fb4 <_lv_blend_fill+0x348>) 5efe: 4798 blx r3 5f00: 28f0 cmp r0, #240 ; 0xf0 5f02: d812 bhi.n 5f2a <_lv_blend_fill+0x2be> disp_buf_first += disp_w; 5f04: 006d lsls r5, r5, #1 5f06: 2400 movs r4, #0 for(y = 0; y < draw_area_h; y++) { 5f08: 9b0e ldr r3, [sp, #56] ; 0x38 5f0a: 2b00 cmp r3, #0 5f0c: dc00 bgt.n 5f10 <_lv_blend_fill+0x2a4> 5f0e: e6c5 b.n 5c9c <_lv_blend_fill+0x30> lv_color_fill(disp_buf_first, color, draw_area_w); 5f10: 4e29 ldr r6, [pc, #164] ; (5fb8 <_lv_blend_fill+0x34c>) 5f12: 9f07 ldr r7, [sp, #28] 5f14: 9a0b ldr r2, [sp, #44] ; 0x2c 5f16: 466b mov r3, sp 5f18: 8c19 ldrh r1, [r3, #32] 5f1a: 0038 movs r0, r7 5f1c: 47b0 blx r6 disp_buf_first += disp_w; 5f1e: 197f adds r7, r7, r5 for(y = 0; y < draw_area_h; y++) { 5f20: 3401 adds r4, #1 5f22: 9b0e ldr r3, [sp, #56] ; 0x38 5f24: 42a3 cmp r3, r4 5f26: dcf5 bgt.n 5f14 <_lv_blend_fill+0x2a8> 5f28: e6b8 b.n 5c9c <_lv_blend_fill+0x30> disp->driver.gpu_fill_cb(&disp->driver, disp_buf, disp_w, draw_area, color); 5f2a: 466b mov r3, sp 5f2c: 8a9a ldrh r2, [r3, #20] 5f2e: 801a strh r2, [r3, #0] 5f30: 6a66 ldr r6, [r4, #36] ; 0x24 5f32: ab10 add r3, sp, #64 ; 0x40 5f34: 002a movs r2, r5 5f36: 9904 ldr r1, [sp, #16] 5f38: 0020 movs r0, r4 5f3a: 47b0 blx r6 5f3c: e6ae b.n 5c9c <_lv_blend_fill+0x30> if(disp->driver.gpu_blend_cb && lv_area_get_size(draw_area) > GPU_SIZE_LIMIT) { 5f3e: 6a23 ldr r3, [r4, #32] 5f40: 2b00 cmp r3, #0 5f42: d03d beq.n 5fc0 <_lv_blend_fill+0x354> 5f44: a810 add r0, sp, #64 ; 0x40 5f46: 4b1b ldr r3, [pc, #108] ; (5fb4 <_lv_blend_fill+0x348>) 5f48: 4798 blx r3 5f4a: 28f0 cmp r0, #240 ; 0xf0 5f4c: d938 bls.n 5fc0 <_lv_blend_fill+0x354> for(x = 0; x < draw_area_w ; x++) blend_buf[x].full = color.full; 5f4e: 9b0a ldr r3, [sp, #40] ; 0x28 5f50: 2b00 cmp r3, #0 5f52: dd09 ble.n 5f68 <_lv_blend_fill+0x2fc> 5f54: 466b mov r3, sp 5f56: 8a9e ldrh r6, [r3, #20] 5f58: 4b18 ldr r3, [pc, #96] ; (5fbc <_lv_blend_fill+0x350>) 5f5a: 9a0b ldr r2, [sp, #44] ; 0x2c 5f5c: 0052 lsls r2, r2, #1 5f5e: 189a adds r2, r3, r2 5f60: 801e strh r6, [r3, #0] 5f62: 3302 adds r3, #2 5f64: 4293 cmp r3, r2 5f66: d1fb bne.n 5f60 <_lv_blend_fill+0x2f4> for(y = draw_area->y1; y <= draw_area->y2; y++) { 5f68: ab10 add r3, sp, #64 ; 0x40 5f6a: 2202 movs r2, #2 5f6c: 5e9e ldrsh r6, [r3, r2] 5f6e: 2206 movs r2, #6 5f70: 5e9b ldrsh r3, [r3, r2] 5f72: 429e cmp r6, r3 5f74: dd00 ble.n 5f78 <_lv_blend_fill+0x30c> 5f76: e691 b.n 5c9c <_lv_blend_fill+0x30> disp_buf_first += disp_w; 5f78: 006d lsls r5, r5, #1 disp->driver.gpu_blend_cb(&disp->driver, disp_buf_first, blend_buf, draw_area_w, opa); 5f7a: 4b10 ldr r3, [pc, #64] ; (5fbc <_lv_blend_fill+0x350>) 5f7c: 4698 mov r8, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 5f7e: af10 add r7, sp, #64 ; 0x40 5f80: 46aa mov sl, r5 disp->driver.gpu_blend_cb(&disp->driver, disp_buf_first, blend_buf, draw_area_w, opa); 5f82: 465b mov r3, fp 5f84: 9300 str r3, [sp, #0] 5f86: 9b0b ldr r3, [sp, #44] ; 0x2c 5f88: 4642 mov r2, r8 5f8a: 9907 ldr r1, [sp, #28] 5f8c: 4689 mov r9, r1 5f8e: 0020 movs r0, r4 5f90: 6a25 ldr r5, [r4, #32] 5f92: 47a8 blx r5 disp_buf_first += disp_w; 5f94: 46cc mov ip, r9 5f96: 44d4 add ip, sl 5f98: 4663 mov r3, ip 5f9a: 9307 str r3, [sp, #28] for(y = draw_area->y1; y <= draw_area->y2; y++) { 5f9c: 3601 adds r6, #1 5f9e: 2206 movs r2, #6 5fa0: 5ebb ldrsh r3, [r7, r2] 5fa2: 429e cmp r6, r3 5fa4: dded ble.n 5f82 <_lv_blend_fill+0x316> 5fa6: e679 b.n 5c9c <_lv_blend_fill+0x30> 5fa8: 000043b1 .word 0x000043b1 5fac: 0000f709 .word 0x0000f709 5fb0: 0000fc0f .word 0x0000fc0f 5fb4: 0000fbf3 .word 0x0000fbf3 5fb8: 00010235 .word 0x00010235 5fbc: 200026f0 .word 0x200026f0 lv_color_t last_dest_color = LV_COLOR_BLACK; 5fc0: 2300 movs r3, #0 5fc2: 466a mov r2, sp 5fc4: 8313 strh r3, [r2, #24] 5fc6: 8a92 ldrh r2, [r2, #20] 5fc8: 06d3 lsls r3, r2, #27 5fca: 0edb lsrs r3, r3, #27 5fcc: 469c mov ip, r3 5fce: 1c13 adds r3, r2, #0 5fd0: 001a movs r2, r3 5fd2: 0557 lsls r7, r2, #21 5fd4: 0ebf lsrs r7, r7, #26 5fd6: 041c lsls r4, r3, #16 5fd8: 0ee4 lsrs r4, r4, #27 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 5fda: 465b mov r3, fp 5fdc: 4363 muls r3, r4 5fde: 0218 lsls r0, r3, #8 5fe0: 18c0 adds r0, r0, r3 5fe2: 01c0 lsls r0, r0, #7 5fe4: 18c0 adds r0, r0, r3 5fe6: 0dc0 lsrs r0, r0, #23 5fe8: 231f movs r3, #31 5fea: 4698 mov r8, r3 5fec: 4018 ands r0, r3 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 5fee: 465a mov r2, fp 5ff0: 437a muls r2, r7 5ff2: 0213 lsls r3, r2, #8 5ff4: 189b adds r3, r3, r2 5ff6: 01db lsls r3, r3, #7 5ff8: 189a adds r2, r3, r2 5ffa: 00d2 lsls r2, r2, #3 5ffc: 0e93 lsrs r3, r2, #26 5ffe: 469a mov sl, r3 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 6000: 4659 mov r1, fp 6002: 4663 mov r3, ip 6004: 4359 muls r1, r3 6006: 020b lsls r3, r1, #8 6008: 185b adds r3, r3, r1 600a: 01db lsls r3, r3, #7 600c: 1859 adds r1, r3, r1 600e: 0dc9 lsrs r1, r1, #23 6010: 4643 mov r3, r8 6012: 4019 ands r1, r3 } LV_ATTRIBUTE_FAST_MEM static inline void lv_color_premult(lv_color_t c, uint8_t mix, uint16_t * out) { #if LV_COLOR_DEPTH != 1 out[0] = (uint16_t) LV_COLOR_GET_R(c) * mix; 6014: 465b mov r3, fp 6016: 466a mov r2, sp 6018: 8213 strh r3, [r2, #16] 601a: 8a13 ldrh r3, [r2, #16] 601c: 435c muls r4, r3 601e: 9405 str r4, [sp, #20] out[1] = (uint16_t) LV_COLOR_GET_G(c) * mix; 6020: 435f muls r7, r3 6022: 9708 str r7, [sp, #32] out[2] = (uint16_t) LV_COLOR_GET_B(c) * mix; 6024: 4664 mov r4, ip 6026: 435c muls r4, r3 6028: 9409 str r4, [sp, #36] ; 0x24 lv_opa_t opa_inv = 255 - opa; 602a: 465b mov r3, fp 602c: 43df mvns r7, r3 602e: b2ff uxtb r7, r7 for(y = 0; y < draw_area_h; y++) { 6030: 9b0e ldr r3, [sp, #56] ; 0x38 6032: 2b00 cmp r3, #0 6034: dc00 bgt.n 6038 <_lv_blend_fill+0x3cc> 6036: e631 b.n 5c9c <_lv_blend_fill+0x30> disp_buf_first += disp_w; 6038: 006b lsls r3, r5, #1 603a: 930e str r3, [sp, #56] ; 0x38 603c: 1c73 adds r3, r6, #1 603e: 930d str r3, [sp, #52] ; 0x34 6040: 9b0b ldr r3, [sp, #44] ; 0x2c 6042: 005b lsls r3, r3, #1 6044: 930f str r3, [sp, #60] ; 0x3c 6046: 2301 movs r3, #1 6048: 930c str r3, [sp, #48] ; 0x30 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); 604a: b2bf uxth r7, r7 604c: 261f movs r6, #31 LV_COLOR_SET_G(ret, (uint16_t)((uint16_t) premult_c1[1] + LV_COLOR_GET_G(c2) * mix) >> 8); 604e: 333e adds r3, #62 ; 0x3e 6050: 930b str r3, [sp, #44] ; 0x2c disp_buf_first[x] = last_res_color; 6052: 4b63 ldr r3, [pc, #396] ; (61e0 <_lv_blend_fill+0x574>) 6054: 4698 mov r8, r3 6056: 2307 movs r3, #7 6058: 4699 mov r9, r3 605a: 4652 mov r2, sl 605c: e048 b.n 60f0 <_lv_blend_fill+0x484> 605e: 782b ldrb r3, [r5, #0] 6060: 43b3 bics r3, r6 6062: 430b orrs r3, r1 6064: 702b strb r3, [r5, #0] 6066: 9b04 ldr r3, [sp, #16] 6068: 015b lsls r3, r3, #5 606a: 882f ldrh r7, [r5, #0] 606c: 4642 mov r2, r8 606e: 4017 ands r7, r2 6070: 433b orrs r3, r7 6072: 802b strh r3, [r5, #0] 6074: 00c7 lsls r7, r0, #3 6076: 0a1b lsrs r3, r3, #8 6078: 464a mov r2, r9 607a: 4013 ands r3, r2 607c: 431f orrs r7, r3 607e: 706f strb r7, [r5, #1] 6080: 3402 adds r4, #2 for(x = 0; x < draw_area_w; x++) { 6082: 4554 cmp r4, sl 6084: d026 beq.n 60d4 <_lv_blend_fill+0x468> if(last_dest_color.full != disp_buf_first[x].full) { 6086: 0025 movs r5, r4 6088: 466b mov r3, sp 608a: 8b1b ldrh r3, [r3, #24] 608c: 8827 ldrh r7, [r4, #0] 608e: 42bb cmp r3, r7 6090: d0e5 beq.n 605e <_lv_blend_fill+0x3f2> last_dest_color = disp_buf_first[x]; 6092: 466b mov r3, sp 6094: 831f strh r7, [r3, #24] LV_COLOR_SET_R(ret, (uint16_t)((uint16_t) premult_c1[0] + LV_COLOR_GET_R(c2) * mix) >> 8); 6096: 7860 ldrb r0, [r4, #1] 6098: 08c0 lsrs r0, r0, #3 609a: 4663 mov r3, ip 609c: 4358 muls r0, r3 609e: 9b05 ldr r3, [sp, #20] 60a0: 469b mov fp, r3 60a2: 4458 add r0, fp 60a4: 0a00 lsrs r0, r0, #8 60a6: 4030 ands r0, r6 LV_COLOR_SET_G(ret, (uint16_t)((uint16_t) premult_c1[1] + LV_COLOR_GET_G(c2) * mix) >> 8); 60a8: 057a lsls r2, r7, #21 60aa: 0e92 lsrs r2, r2, #26 60ac: 4663 mov r3, ip 60ae: 435a muls r2, r3 60b0: 9b08 ldr r3, [sp, #32] 60b2: 469b mov fp, r3 60b4: 445a add r2, fp 60b6: 0a12 lsrs r2, r2, #8 60b8: 9b0b ldr r3, [sp, #44] ; 0x2c 60ba: 401a ands r2, r3 60bc: 9204 str r2, [sp, #16] LV_COLOR_SET_B(ret, (uint16_t)((uint16_t) premult_c1[2] + LV_COLOR_GET_B(c2) * mix) >> 8); 60be: 7821 ldrb r1, [r4, #0] 60c0: 06c9 lsls r1, r1, #27 60c2: 0ec9 lsrs r1, r1, #27 60c4: 4663 mov r3, ip 60c6: 4359 muls r1, r3 60c8: 9b09 ldr r3, [sp, #36] ; 0x24 60ca: 469b mov fp, r3 60cc: 4459 add r1, fp 60ce: 0a09 lsrs r1, r1, #8 60d0: 4031 ands r1, r6 60d2: e7c4 b.n 605e <_lv_blend_fill+0x3f2> 60d4: 9a04 ldr r2, [sp, #16] 60d6: 4667 mov r7, ip disp_buf_first += disp_w; 60d8: 9b07 ldr r3, [sp, #28] 60da: 9c0e ldr r4, [sp, #56] ; 0x38 60dc: 46a4 mov ip, r4 60de: 4463 add r3, ip 60e0: 9307 str r3, [sp, #28] 60e2: 9b0c ldr r3, [sp, #48] ; 0x30 60e4: 3301 adds r3, #1 60e6: 930c str r3, [sp, #48] ; 0x30 for(y = 0; y < draw_area_h; y++) { 60e8: 9c0d ldr r4, [sp, #52] ; 0x34 60ea: 429c cmp r4, r3 60ec: d100 bne.n 60f0 <_lv_blend_fill+0x484> 60ee: e5d5 b.n 5c9c <_lv_blend_fill+0x30> for(x = 0; x < draw_area_w; x++) { 60f0: 9b0a ldr r3, [sp, #40] ; 0x28 60f2: 2b00 cmp r3, #0 60f4: ddf0 ble.n 60d8 <_lv_blend_fill+0x46c> 60f6: 9b07 ldr r3, [sp, #28] 60f8: 001c movs r4, r3 60fa: 9d0f ldr r5, [sp, #60] ; 0x3c 60fc: 46aa mov sl, r5 60fe: 4453 add r3, sl 6100: 9204 str r2, [sp, #16] 6102: 469a mov sl, r3 6104: 46bc mov ip, r7 6106: e7be b.n 6086 <_lv_blend_fill+0x41a> for(y = 0; y < draw_area_h; y++) { 6108: 9b0e ldr r3, [sp, #56] ; 0x38 610a: 2b00 cmp r3, #0 610c: dc00 bgt.n 6110 <_lv_blend_fill+0x4a4> 610e: e5c5 b.n 5c9c <_lv_blend_fill+0x30> int32_t x_end4 = draw_area_w - 4; 6110: 9b0b ldr r3, [sp, #44] ; 0x2c 6112: 3b04 subs r3, #4 6114: 9305 str r3, [sp, #20] disp_buf_first += disp_w; 6116: 006b lsls r3, r5, #1 6118: 930f str r3, [sp, #60] ; 0x3c 611a: 9b06 ldr r3, [sp, #24] 611c: 9309 str r3, [sp, #36] ; 0x24 611e: 2300 movs r3, #0 6120: 930d str r3, [sp, #52] ; 0x34 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 6122: 466b mov r3, sp 6124: 8c1a ldrh r2, [r3, #32] 6126: 0417 lsls r7, r2, #16 6128: 0efb lsrs r3, r7, #27 612a: 9304 str r3, [sp, #16] LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 612c: 0553 lsls r3, r2, #21 612e: 0e9b lsrs r3, r3, #26 6130: 469a mov sl, r3 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 6132: 06d3 lsls r3, r2, #27 6134: 0edb lsrs r3, r3, #27 6136: 469b mov fp, r3 6138: e213 b.n 6562 <_lv_blend_fill+0x8f6> FILL_NORMAL_MASK_PX(x, color) 613a: 466a mov r2, sp 613c: 8c12 ldrh r2, [r2, #32] 613e: 8032 strh r2, [r6, #0] 6140: 3401 adds r4, #1 for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 6142: 3301 adds r3, #1 6144: 4598 cmp r8, r3 6146: dc01 bgt.n 614c <_lv_blend_fill+0x4e0> 6148: f000 fbe8 bl 691c <_lv_blend_fill+0xcb0> 614c: 3602 adds r6, #2 614e: 07a2 lsls r2, r4, #30 6150: d03f beq.n 61d2 <_lv_blend_fill+0x566> FILL_NORMAL_MASK_PX(x, color) 6152: 7820 ldrb r0, [r4, #0] 6154: 2800 cmp r0, #0 6156: d0f3 beq.n 6140 <_lv_blend_fill+0x4d4> 6158: 28ff cmp r0, #255 ; 0xff 615a: d0ee beq.n 613a <_lv_blend_fill+0x4ce> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 615c: 22ff movs r2, #255 ; 0xff 615e: 1a15 subs r5, r2, r0 6160: 9f04 ldr r7, [sp, #16] 6162: 4347 muls r7, r0 6164: 7871 ldrb r1, [r6, #1] 6166: 08c9 lsrs r1, r1, #3 6168: 4369 muls r1, r5 616a: 187f adds r7, r7, r1 616c: 023a lsls r2, r7, #8 616e: 19d2 adds r2, r2, r7 6170: 01d2 lsls r2, r2, #7 6172: 19d2 adds r2, r2, r7 6174: 0dd2 lsrs r2, r2, #23 6176: 4649 mov r1, r9 6178: 400a ands r2, r1 617a: 9206 str r2, [sp, #24] LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 617c: 4657 mov r7, sl 617e: 4347 muls r7, r0 6180: 8831 ldrh r1, [r6, #0] 6182: 0549 lsls r1, r1, #21 6184: 0e89 lsrs r1, r1, #26 6186: 4369 muls r1, r5 6188: 187f adds r7, r7, r1 618a: 0239 lsls r1, r7, #8 618c: 19c9 adds r1, r1, r7 618e: 01c9 lsls r1, r1, #7 6190: 19c9 adds r1, r1, r7 6192: 00c9 lsls r1, r1, #3 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 6194: 465f mov r7, fp 6196: 4378 muls r0, r7 6198: 7837 ldrb r7, [r6, #0] 619a: 06fa lsls r2, r7, #27 619c: 0ed2 lsrs r2, r2, #27 619e: 4355 muls r5, r2 61a0: 1945 adds r5, r0, r5 61a2: 0228 lsls r0, r5, #8 61a4: 1940 adds r0, r0, r5 61a6: 01c0 lsls r0, r0, #7 61a8: 1940 adds r0, r0, r5 61aa: 0dc0 lsrs r0, r0, #23 61ac: 464a mov r2, r9 61ae: 4010 ands r0, r2 61b0: 4397 bics r7, r2 61b2: 4338 orrs r0, r7 61b4: 7030 strb r0, [r6, #0] 61b6: 0e89 lsrs r1, r1, #26 61b8: 0148 lsls r0, r1, #5 61ba: 8831 ldrh r1, [r6, #0] 61bc: 4d08 ldr r5, [pc, #32] ; (61e0 <_lv_blend_fill+0x574>) 61be: 4029 ands r1, r5 61c0: 4301 orrs r1, r0 61c2: 8031 strh r1, [r6, #0] 61c4: 9a06 ldr r2, [sp, #24] 61c6: 00d2 lsls r2, r2, #3 61c8: 0549 lsls r1, r1, #21 61ca: 0f49 lsrs r1, r1, #29 61cc: 430a orrs r2, r1 61ce: 7072 strb r2, [r6, #1] 61d0: e7b6 b.n 6140 <_lv_blend_fill+0x4d4> 61d2: 0022 movs r2, r4 for(; x <= x_end4; x += 4) { 61d4: 9905 ldr r1, [sp, #20] 61d6: 4299 cmp r1, r3 61d8: db00 blt.n 61dc <_lv_blend_fill+0x570> 61da: e3a4 b.n 6926 <_lv_blend_fill+0xcba> 61dc: e15e b.n 649c <_lv_blend_fill+0x830> 61de: 46c0 nop ; (mov r8, r8) 61e0: fffff81f .word 0xfffff81f disp_buf_first[x] = color; 61e4: 4669 mov r1, sp 61e6: 8c09 ldrh r1, [r1, #32] 61e8: 8021 strh r1, [r4, #0] disp_buf_first[x + 1] = color; 61ea: 8061 strh r1, [r4, #2] disp_buf_first[x + 2] = color; 61ec: 80a1 strh r1, [r4, #4] disp_buf_first[x + 3] = color; 61ee: 80e1 strh r1, [r4, #6] mask32++; 61f0: 3204 adds r2, #4 for(; x <= x_end4; x += 4) { 61f2: 3304 adds r3, #4 61f4: 3408 adds r4, #8 61f6: 9905 ldr r1, [sp, #20] 61f8: 4299 cmp r1, r3 61fa: da00 bge.n 61fe <_lv_blend_fill+0x592> 61fc: e149 b.n 6492 <_lv_blend_fill+0x826> if(*mask32) { 61fe: 6811 ldr r1, [r2, #0] 6200: 2900 cmp r1, #0 6202: d0f5 beq.n 61f0 <_lv_blend_fill+0x584> if((*mask32) == 0xFFFFFFFF) { 6204: 3101 adds r1, #1 6206: d0ed beq.n 61e4 <_lv_blend_fill+0x578> FILL_NORMAL_MASK_PX(x, color) 6208: 7815 ldrb r5, [r2, #0] 620a: 2d00 cmp r5, #0 620c: d046 beq.n 629c <_lv_blend_fill+0x630> 620e: 2dff cmp r5, #255 ; 0xff 6210: d100 bne.n 6214 <_lv_blend_fill+0x5a8> 6212: e12e b.n 6472 <_lv_blend_fill+0x806> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 6214: 21ff movs r1, #255 ; 0xff 6216: 1b49 subs r1, r1, r5 6218: 468c mov ip, r1 621a: 9804 ldr r0, [sp, #16] 621c: 4368 muls r0, r5 621e: 7861 ldrb r1, [r4, #1] 6220: 08c9 lsrs r1, r1, #3 6222: 4666 mov r6, ip 6224: 4371 muls r1, r6 6226: 1840 adds r0, r0, r1 6228: 0201 lsls r1, r0, #8 622a: 1809 adds r1, r1, r0 622c: 01c9 lsls r1, r1, #7 622e: 1809 adds r1, r1, r0 6230: 0dc9 lsrs r1, r1, #23 6232: 4039 ands r1, r7 6234: 468a mov sl, r1 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 6236: 0028 movs r0, r5 6238: 9906 ldr r1, [sp, #24] 623a: 4348 muls r0, r1 623c: 4681 mov r9, r0 623e: 8820 ldrh r0, [r4, #0] 6240: 0540 lsls r0, r0, #21 6242: 0e80 lsrs r0, r0, #26 6244: 4370 muls r0, r6 6246: 4481 add r9, r0 6248: 4648 mov r0, r9 624a: 0200 lsls r0, r0, #8 624c: 4448 add r0, r9 624e: 01c0 lsls r0, r0, #7 6250: 4448 add r0, r9 6252: 00c0 lsls r0, r0, #3 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 6254: 465e mov r6, fp 6256: 4375 muls r5, r6 6258: 7826 ldrb r6, [r4, #0] 625a: 46b0 mov r8, r6 625c: 06f6 lsls r6, r6, #27 625e: 0ef6 lsrs r6, r6, #27 6260: 46b1 mov r9, r6 6262: 4666 mov r6, ip 6264: 4649 mov r1, r9 6266: 434e muls r6, r1 6268: 46b4 mov ip, r6 626a: 44ac add ip, r5 626c: 4661 mov r1, ip 626e: 020d lsls r5, r1, #8 6270: 4465 add r5, ip 6272: 01ed lsls r5, r5, #7 6274: 4465 add r5, ip 6276: 0ded lsrs r5, r5, #23 6278: 403d ands r5, r7 627a: 4646 mov r6, r8 627c: 43be bics r6, r7 627e: 4335 orrs r5, r6 6280: 7025 strb r5, [r4, #0] 6282: 0e80 lsrs r0, r0, #26 6284: 0145 lsls r5, r0, #5 6286: 8820 ldrh r0, [r4, #0] 6288: 49be ldr r1, [pc, #760] ; (6584 <_lv_blend_fill+0x918>) 628a: 4008 ands r0, r1 628c: 4328 orrs r0, r5 628e: 8020 strh r0, [r4, #0] 6290: 4651 mov r1, sl 6292: 00c9 lsls r1, r1, #3 6294: 0540 lsls r0, r0, #21 6296: 0f40 lsrs r0, r0, #29 6298: 4301 orrs r1, r0 629a: 7061 strb r1, [r4, #1] FILL_NORMAL_MASK_PX(x + 1, color) 629c: 7855 ldrb r5, [r2, #1] 629e: 2d00 cmp r5, #0 62a0: d04a beq.n 6338 <_lv_blend_fill+0x6cc> 62a2: 2dff cmp r5, #255 ; 0xff 62a4: d100 bne.n 62a8 <_lv_blend_fill+0x63c> 62a6: e0e8 b.n 647a <_lv_blend_fill+0x80e> 62a8: 1ca1 adds r1, r4, #2 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 62aa: 20ff movs r0, #255 ; 0xff 62ac: 1b40 subs r0, r0, r5 62ae: 4684 mov ip, r0 62b0: 9804 ldr r0, [sp, #16] 62b2: 4368 muls r0, r5 62b4: 4689 mov r9, r1 62b6: 78e1 ldrb r1, [r4, #3] 62b8: 08c9 lsrs r1, r1, #3 62ba: 4666 mov r6, ip 62bc: 4371 muls r1, r6 62be: 1840 adds r0, r0, r1 62c0: 0201 lsls r1, r0, #8 62c2: 1809 adds r1, r1, r0 62c4: 01c9 lsls r1, r1, #7 62c6: 1809 adds r1, r1, r0 62c8: 0dc9 lsrs r1, r1, #23 62ca: 4039 ands r1, r7 62cc: 910c str r1, [sp, #48] ; 0x30 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 62ce: 0028 movs r0, r5 62d0: 9e06 ldr r6, [sp, #24] 62d2: 4370 muls r0, r6 62d4: 4682 mov sl, r0 62d6: 8860 ldrh r0, [r4, #2] 62d8: 0540 lsls r0, r0, #21 62da: 0e80 lsrs r0, r0, #26 62dc: 4666 mov r6, ip 62de: 4370 muls r0, r6 62e0: 4482 add sl, r0 62e2: 4650 mov r0, sl 62e4: 0200 lsls r0, r0, #8 62e6: 4450 add r0, sl 62e8: 01c0 lsls r0, r0, #7 62ea: 4450 add r0, sl 62ec: 00c0 lsls r0, r0, #3 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 62ee: 465e mov r6, fp 62f0: 4375 muls r5, r6 62f2: 78a6 ldrb r6, [r4, #2] 62f4: 46b0 mov r8, r6 62f6: 06f6 lsls r6, r6, #27 62f8: 0ef6 lsrs r6, r6, #27 62fa: 46b2 mov sl, r6 62fc: 4666 mov r6, ip 62fe: 4651 mov r1, sl 6300: 434e muls r6, r1 6302: 46b4 mov ip, r6 6304: 44ac add ip, r5 6306: 4661 mov r1, ip 6308: 020d lsls r5, r1, #8 630a: 4465 add r5, ip 630c: 01ed lsls r5, r5, #7 630e: 4465 add r5, ip 6310: 0ded lsrs r5, r5, #23 6312: 403d ands r5, r7 6314: 4646 mov r6, r8 6316: 43be bics r6, r7 6318: 4335 orrs r5, r6 631a: 70a5 strb r5, [r4, #2] 631c: 0e80 lsrs r0, r0, #26 631e: 0140 lsls r0, r0, #5 6320: 8865 ldrh r5, [r4, #2] 6322: 4998 ldr r1, [pc, #608] ; (6584 <_lv_blend_fill+0x918>) 6324: 400d ands r5, r1 6326: 4328 orrs r0, r5 6328: 8060 strh r0, [r4, #2] 632a: 990c ldr r1, [sp, #48] ; 0x30 632c: 00c9 lsls r1, r1, #3 632e: 0540 lsls r0, r0, #21 6330: 0f40 lsrs r0, r0, #29 6332: 4301 orrs r1, r0 6334: 4648 mov r0, r9 6336: 7041 strb r1, [r0, #1] FILL_NORMAL_MASK_PX(x + 2, color) 6338: 7895 ldrb r5, [r2, #2] 633a: 2d00 cmp r5, #0 633c: d04a beq.n 63d4 <_lv_blend_fill+0x768> 633e: 2dff cmp r5, #255 ; 0xff 6340: d100 bne.n 6344 <_lv_blend_fill+0x6d8> 6342: e09e b.n 6482 <_lv_blend_fill+0x816> 6344: 1d21 adds r1, r4, #4 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 6346: 20ff movs r0, #255 ; 0xff 6348: 1b40 subs r0, r0, r5 634a: 4684 mov ip, r0 634c: 9804 ldr r0, [sp, #16] 634e: 4368 muls r0, r5 6350: 4689 mov r9, r1 6352: 7961 ldrb r1, [r4, #5] 6354: 08c9 lsrs r1, r1, #3 6356: 4666 mov r6, ip 6358: 4371 muls r1, r6 635a: 1840 adds r0, r0, r1 635c: 0201 lsls r1, r0, #8 635e: 1809 adds r1, r1, r0 6360: 01c9 lsls r1, r1, #7 6362: 1809 adds r1, r1, r0 6364: 0dc9 lsrs r1, r1, #23 6366: 4039 ands r1, r7 6368: 910c str r1, [sp, #48] ; 0x30 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 636a: 0028 movs r0, r5 636c: 9e06 ldr r6, [sp, #24] 636e: 4370 muls r0, r6 6370: 4682 mov sl, r0 6372: 88a0 ldrh r0, [r4, #4] 6374: 0540 lsls r0, r0, #21 6376: 0e80 lsrs r0, r0, #26 6378: 4666 mov r6, ip 637a: 4370 muls r0, r6 637c: 4482 add sl, r0 637e: 4650 mov r0, sl 6380: 0200 lsls r0, r0, #8 6382: 4450 add r0, sl 6384: 01c0 lsls r0, r0, #7 6386: 4450 add r0, sl 6388: 00c0 lsls r0, r0, #3 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 638a: 465e mov r6, fp 638c: 4375 muls r5, r6 638e: 7926 ldrb r6, [r4, #4] 6390: 46b0 mov r8, r6 6392: 06f6 lsls r6, r6, #27 6394: 0ef6 lsrs r6, r6, #27 6396: 46b2 mov sl, r6 6398: 4666 mov r6, ip 639a: 4651 mov r1, sl 639c: 434e muls r6, r1 639e: 46b4 mov ip, r6 63a0: 44ac add ip, r5 63a2: 4661 mov r1, ip 63a4: 020d lsls r5, r1, #8 63a6: 4465 add r5, ip 63a8: 01ed lsls r5, r5, #7 63aa: 4465 add r5, ip 63ac: 0ded lsrs r5, r5, #23 63ae: 403d ands r5, r7 63b0: 4646 mov r6, r8 63b2: 43be bics r6, r7 63b4: 4335 orrs r5, r6 63b6: 7125 strb r5, [r4, #4] 63b8: 0e80 lsrs r0, r0, #26 63ba: 0140 lsls r0, r0, #5 63bc: 88a5 ldrh r5, [r4, #4] 63be: 4971 ldr r1, [pc, #452] ; (6584 <_lv_blend_fill+0x918>) 63c0: 400d ands r5, r1 63c2: 4328 orrs r0, r5 63c4: 80a0 strh r0, [r4, #4] 63c6: 990c ldr r1, [sp, #48] ; 0x30 63c8: 00c9 lsls r1, r1, #3 63ca: 0540 lsls r0, r0, #21 63cc: 0f40 lsrs r0, r0, #29 63ce: 4301 orrs r1, r0 63d0: 4648 mov r0, r9 63d2: 7041 strb r1, [r0, #1] FILL_NORMAL_MASK_PX(x + 3, color) 63d4: 78d5 ldrb r5, [r2, #3] 63d6: 2d00 cmp r5, #0 63d8: d100 bne.n 63dc <_lv_blend_fill+0x770> 63da: e709 b.n 61f0 <_lv_blend_fill+0x584> 63dc: 2dff cmp r5, #255 ; 0xff 63de: d054 beq.n 648a <_lv_blend_fill+0x81e> 63e0: 1da1 adds r1, r4, #6 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 63e2: 20ff movs r0, #255 ; 0xff 63e4: 1b40 subs r0, r0, r5 63e6: 4684 mov ip, r0 63e8: 9804 ldr r0, [sp, #16] 63ea: 4368 muls r0, r5 63ec: 4689 mov r9, r1 63ee: 79e1 ldrb r1, [r4, #7] 63f0: 08c9 lsrs r1, r1, #3 63f2: 4666 mov r6, ip 63f4: 4371 muls r1, r6 63f6: 1840 adds r0, r0, r1 63f8: 0201 lsls r1, r0, #8 63fa: 1809 adds r1, r1, r0 63fc: 01c9 lsls r1, r1, #7 63fe: 1809 adds r1, r1, r0 6400: 0dc9 lsrs r1, r1, #23 6402: 4039 ands r1, r7 6404: 910c str r1, [sp, #48] ; 0x30 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 6406: 0028 movs r0, r5 6408: 9e06 ldr r6, [sp, #24] 640a: 4370 muls r0, r6 640c: 4682 mov sl, r0 640e: 88e0 ldrh r0, [r4, #6] 6410: 0540 lsls r0, r0, #21 6412: 0e80 lsrs r0, r0, #26 6414: 4666 mov r6, ip 6416: 4370 muls r0, r6 6418: 4482 add sl, r0 641a: 4650 mov r0, sl 641c: 0200 lsls r0, r0, #8 641e: 4450 add r0, sl 6420: 01c0 lsls r0, r0, #7 6422: 4450 add r0, sl 6424: 00c0 lsls r0, r0, #3 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 6426: 465e mov r6, fp 6428: 4375 muls r5, r6 642a: 79a6 ldrb r6, [r4, #6] 642c: 46b0 mov r8, r6 642e: 06f6 lsls r6, r6, #27 6430: 0ef6 lsrs r6, r6, #27 6432: 46b2 mov sl, r6 6434: 4666 mov r6, ip 6436: 4651 mov r1, sl 6438: 434e muls r6, r1 643a: 46b4 mov ip, r6 643c: 44ac add ip, r5 643e: 4661 mov r1, ip 6440: 020d lsls r5, r1, #8 6442: 4465 add r5, ip 6444: 01ed lsls r5, r5, #7 6446: 4465 add r5, ip 6448: 0ded lsrs r5, r5, #23 644a: 403d ands r5, r7 644c: 4646 mov r6, r8 644e: 43be bics r6, r7 6450: 4335 orrs r5, r6 6452: 71a5 strb r5, [r4, #6] 6454: 0e80 lsrs r0, r0, #26 6456: 0140 lsls r0, r0, #5 6458: 88e5 ldrh r5, [r4, #6] 645a: 494a ldr r1, [pc, #296] ; (6584 <_lv_blend_fill+0x918>) 645c: 400d ands r5, r1 645e: 4328 orrs r0, r5 6460: 80e0 strh r0, [r4, #6] 6462: 990c ldr r1, [sp, #48] ; 0x30 6464: 00c9 lsls r1, r1, #3 6466: 0540 lsls r0, r0, #21 6468: 0f40 lsrs r0, r0, #29 646a: 4301 orrs r1, r0 646c: 4648 mov r0, r9 646e: 7041 strb r1, [r0, #1] 6470: e6be b.n 61f0 <_lv_blend_fill+0x584> FILL_NORMAL_MASK_PX(x, color) 6472: 4669 mov r1, sp 6474: 8c09 ldrh r1, [r1, #32] 6476: 8021 strh r1, [r4, #0] 6478: e710 b.n 629c <_lv_blend_fill+0x630> FILL_NORMAL_MASK_PX(x + 1, color) 647a: 4669 mov r1, sp 647c: 8c09 ldrh r1, [r1, #32] 647e: 8061 strh r1, [r4, #2] 6480: e75a b.n 6338 <_lv_blend_fill+0x6cc> FILL_NORMAL_MASK_PX(x + 2, color) 6482: 4669 mov r1, sp 6484: 8c09 ldrh r1, [r1, #32] 6486: 80a1 strh r1, [r4, #4] 6488: e7a4 b.n 63d4 <_lv_blend_fill+0x768> FILL_NORMAL_MASK_PX(x + 3, color) 648a: 4669 mov r1, sp 648c: 8c09 ldrh r1, [r1, #32] 648e: 80e1 strh r1, [r4, #6] 6490: e6ae b.n 61f0 <_lv_blend_fill+0x584> 6492: 9906 ldr r1, [sp, #24] 6494: 468a mov sl, r1 for(; x < draw_area_w ; x++) { 6496: 990a ldr r1, [sp, #40] ; 0x28 6498: 4299 cmp r1, r3 649a: dd50 ble.n 653e <_lv_blend_fill+0x8d2> 649c: 005e lsls r6, r3, #1 649e: 9907 ldr r1, [sp, #28] 64a0: 468c mov ip, r1 64a2: 4466 add r6, ip FILL_NORMAL_MASK_PX(x, color) 64a4: 1ad2 subs r2, r2, r3 64a6: 4690 mov r8, r2 64a8: 9a0a ldr r2, [sp, #40] ; 0x28 64aa: 4691 mov r9, r2 64ac: e006 b.n 64bc <_lv_blend_fill+0x850> 64ae: 466a mov r2, sp 64b0: 8c12 ldrh r2, [r2, #32] 64b2: 8032 strh r2, [r6, #0] for(; x < draw_area_w ; x++) { 64b4: 3301 adds r3, #1 64b6: 3602 adds r6, #2 64b8: 4599 cmp r9, r3 64ba: dd40 ble.n 653e <_lv_blend_fill+0x8d2> FILL_NORMAL_MASK_PX(x, color) 64bc: 4642 mov r2, r8 64be: 5cd0 ldrb r0, [r2, r3] 64c0: 2800 cmp r0, #0 64c2: d0f7 beq.n 64b4 <_lv_blend_fill+0x848> 64c4: 28ff cmp r0, #255 ; 0xff 64c6: d0f2 beq.n 64ae <_lv_blend_fill+0x842> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 64c8: 22ff movs r2, #255 ; 0xff 64ca: 1a14 subs r4, r2, r0 64cc: 9a04 ldr r2, [sp, #16] 64ce: 4342 muls r2, r0 64d0: 7871 ldrb r1, [r6, #1] 64d2: 08c9 lsrs r1, r1, #3 64d4: 4361 muls r1, r4 64d6: 1851 adds r1, r2, r1 64d8: 020a lsls r2, r1, #8 64da: 1852 adds r2, r2, r1 64dc: 01d2 lsls r2, r2, #7 64de: 1852 adds r2, r2, r1 64e0: 0dd2 lsrs r2, r2, #23 64e2: 271f movs r7, #31 64e4: 403a ands r2, r7 64e6: 9206 str r2, [sp, #24] LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 64e8: 4655 mov r5, sl 64ea: 4345 muls r5, r0 64ec: 8831 ldrh r1, [r6, #0] 64ee: 0549 lsls r1, r1, #21 64f0: 0e89 lsrs r1, r1, #26 64f2: 4361 muls r1, r4 64f4: 186d adds r5, r5, r1 64f6: 0229 lsls r1, r5, #8 64f8: 1949 adds r1, r1, r5 64fa: 01c9 lsls r1, r1, #7 64fc: 1949 adds r1, r1, r5 64fe: 00c9 lsls r1, r1, #3 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 6500: 465d mov r5, fp 6502: 4368 muls r0, r5 6504: 7835 ldrb r5, [r6, #0] 6506: 06ea lsls r2, r5, #27 6508: 0ed2 lsrs r2, r2, #27 650a: 4354 muls r4, r2 650c: 1904 adds r4, r0, r4 650e: 0220 lsls r0, r4, #8 6510: 1900 adds r0, r0, r4 6512: 01c0 lsls r0, r0, #7 6514: 1900 adds r0, r0, r4 6516: 0dc0 lsrs r0, r0, #23 6518: 4007 ands r7, r0 651a: 201f movs r0, #31 651c: 4385 bics r5, r0 651e: 432f orrs r7, r5 6520: 7037 strb r7, [r6, #0] 6522: 0e89 lsrs r1, r1, #26 6524: 0148 lsls r0, r1, #5 6526: 8831 ldrh r1, [r6, #0] 6528: 4c16 ldr r4, [pc, #88] ; (6584 <_lv_blend_fill+0x918>) 652a: 4021 ands r1, r4 652c: 4301 orrs r1, r0 652e: 8031 strh r1, [r6, #0] 6530: 9a06 ldr r2, [sp, #24] 6532: 00d2 lsls r2, r2, #3 6534: 0549 lsls r1, r1, #21 6536: 0f49 lsrs r1, r1, #29 6538: 430a orrs r2, r1 653a: 7072 strb r2, [r6, #1] 653c: e7ba b.n 64b4 <_lv_blend_fill+0x848> disp_buf_first += disp_w; 653e: 9b07 ldr r3, [sp, #28] 6540: 9a0f ldr r2, [sp, #60] ; 0x3c 6542: 4694 mov ip, r2 6544: 4463 add r3, ip 6546: 9307 str r3, [sp, #28] 6548: 9b09 ldr r3, [sp, #36] ; 0x24 654a: 9a0b ldr r2, [sp, #44] ; 0x2c 654c: 4694 mov ip, r2 654e: 4463 add r3, ip 6550: 9309 str r3, [sp, #36] ; 0x24 for(y = 0; y < draw_area_h; y++) { 6552: 9b0d ldr r3, [sp, #52] ; 0x34 6554: 3301 adds r3, #1 6556: 930d str r3, [sp, #52] ; 0x34 6558: 9a0e ldr r2, [sp, #56] ; 0x38 655a: 429a cmp r2, r3 655c: dc01 bgt.n 6562 <_lv_blend_fill+0x8f6> 655e: f7ff fb9d bl 5c9c <_lv_blend_fill+0x30> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 6562: 9a0a ldr r2, [sp, #40] ; 0x28 6564: 2a00 cmp r2, #0 6566: dc00 bgt.n 656a <_lv_blend_fill+0x8fe> 6568: e1e5 b.n 6936 <_lv_blend_fill+0xcca> 656a: 9b09 ldr r3, [sp, #36] ; 0x24 656c: 0799 lsls r1, r3, #30 656e: d100 bne.n 6572 <_lv_blend_fill+0x906> 6570: e1e4 b.n 693c <_lv_blend_fill+0xcd0> 6572: 9e07 ldr r6, [sp, #28] 6574: 4698 mov r8, r3 6576: 2300 movs r3, #0 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 6578: 211f movs r1, #31 657a: 4689 mov r9, r1 657c: 4644 mov r4, r8 657e: 4690 mov r8, r2 6580: e5e7 b.n 6152 <_lv_blend_fill+0x4e6> 6582: 46c0 nop ; (mov r8, r8) 6584: fffff81f .word 0xfffff81f if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 6588: 9e0d ldr r6, [sp, #52] ; 0x34 if(*mask_tmp_x != last_mask || last_dest_color.full != disp_buf_first[x].full) { 658a: 2aff cmp r2, #255 ; 0xff 658c: d065 beq.n 665a <_lv_blend_fill+0x9ee> if(opa_tmp == LV_OPA_COVER) last_res_color = color; 658e: 2eff cmp r6, #255 ; 0xff 6590: d067 beq.n 6662 <_lv_blend_fill+0x9f6> 6592: 23ff movs r3, #255 ; 0xff 6594: 1b9b subs r3, r3, r6 6596: 784a ldrb r2, [r1, #1] 6598: 08d2 lsrs r2, r2, #3 659a: 4699 mov r9, r3 659c: 435a muls r2, r3 659e: 9b05 ldr r3, [sp, #20] 65a0: 4373 muls r3, r6 65a2: 18d2 adds r2, r2, r3 65a4: 0213 lsls r3, r2, #8 65a6: 189b adds r3, r3, r2 65a8: 01db lsls r3, r3, #7 65aa: 189b adds r3, r3, r2 65ac: 0ddb lsrs r3, r3, #23 65ae: 221f movs r2, #31 65b0: 401a ands r2, r3 65b2: 9204 str r2, [sp, #16] LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 65b4: 880a ldrh r2, [r1, #0] 65b6: 0552 lsls r2, r2, #21 65b8: 0e92 lsrs r2, r2, #26 65ba: 464b mov r3, r9 65bc: 435a muls r2, r3 65be: 9b08 ldr r3, [sp, #32] 65c0: 4373 muls r3, r6 65c2: 469a mov sl, r3 65c4: 4452 add r2, sl 65c6: 0213 lsls r3, r2, #8 65c8: 469a mov sl, r3 65ca: 4492 add sl, r2 65cc: 4653 mov r3, sl 65ce: 01db lsls r3, r3, #7 65d0: 469a mov sl, r3 65d2: 4452 add r2, sl 65d4: 0dd2 lsrs r2, r2, #23 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 65d6: 780b ldrb r3, [r1, #0] 65d8: 06db lsls r3, r3, #27 65da: 0edb lsrs r3, r3, #27 65dc: 469a mov sl, r3 65de: 464b mov r3, r9 65e0: 4654 mov r4, sl 65e2: 4363 muls r3, r4 65e4: 469a mov sl, r3 65e6: 4663 mov r3, ip 65e8: 4373 muls r3, r6 65ea: 4699 mov r9, r3 65ec: 44ca add sl, r9 65ee: 4653 mov r3, sl 65f0: 021b lsls r3, r3, #8 65f2: 4699 mov r9, r3 65f4: 44d1 add r9, sl 65f6: 464b mov r3, r9 65f8: 01db lsls r3, r3, #7 65fa: 4699 mov r9, r3 65fc: 44d1 add r9, sl 65fe: 464b mov r3, r9 6600: 0ddb lsrs r3, r3, #23 6602: 241f movs r4, #31 6604: 4023 ands r3, r4 6606: 4699 mov r9, r3 6608: 9b09 ldr r3, [sp, #36] ; 0x24 660a: 43a3 bics r3, r4 660c: 469a mov sl, r3 660e: 464b mov r3, r9 6610: 4654 mov r4, sl 6612: 4323 orrs r3, r4 6614: 4699 mov r9, r3 6616: 233f movs r3, #63 ; 0x3f 6618: 401a ands r2, r3 661a: 0152 lsls r2, r2, #5 661c: 464b mov r3, r9 661e: 4644 mov r4, r8 6620: 4023 ands r3, r4 6622: 431a orrs r2, r3 6624: 9b04 ldr r3, [sp, #16] 6626: 02db lsls r3, r3, #11 6628: 0552 lsls r2, r2, #21 662a: 0d52 lsrs r2, r2, #21 662c: 4313 orrs r3, r2 662e: 466a mov r2, sp 6630: 8493 strh r3, [r2, #36] ; 0x24 6632: b29b uxth r3, r3 last_dest_color.full = disp_buf_first[x].full; 6634: 880a ldrh r2, [r1, #0] 6636: 4691 mov r9, r2 disp_buf_first[x] = last_res_color; 6638: 800b strh r3, [r1, #0] 663a: 002a movs r2, r5 mask_tmp_x++; 663c: 3001 adds r0, #1 663e: 3102 adds r1, #2 for(x = 0; x < draw_area_w; x++) { 6640: 42b8 cmp r0, r7 6642: d010 beq.n 6666 <_lv_blend_fill+0x9fa> if(*mask_tmp_x) { 6644: 7805 ldrb r5, [r0, #0] 6646: 2d00 cmp r5, #0 6648: d0f8 beq.n 663c <_lv_blend_fill+0x9d0> if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 664a: 4295 cmp r5, r2 664c: d005 beq.n 665a <_lv_blend_fill+0x9ee> 664e: 2dff cmp r5, #255 ; 0xff 6650: d09a beq.n 6588 <_lv_blend_fill+0x91c> (uint32_t)((uint32_t)(*mask_tmp_x) * opa) >> 8; 6652: 465e mov r6, fp 6654: 436e muls r6, r5 if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 6656: 0a36 lsrs r6, r6, #8 6658: e799 b.n 658e <_lv_blend_fill+0x922> if(*mask_tmp_x != last_mask || last_dest_color.full != disp_buf_first[x].full) { 665a: 880a ldrh r2, [r1, #0] 665c: 454a cmp r2, r9 665e: d196 bne.n 658e <_lv_blend_fill+0x922> 6660: e7ea b.n 6638 <_lv_blend_fill+0x9cc> if(opa_tmp == LV_OPA_COVER) last_res_color = color; 6662: 9b0e ldr r3, [sp, #56] ; 0x38 6664: e7e6 b.n 6634 <_lv_blend_fill+0x9c8> disp_buf_first += disp_w; 6666: 9907 ldr r1, [sp, #28] 6668: 980f ldr r0, [sp, #60] ; 0x3c 666a: 4680 mov r8, r0 666c: 4441 add r1, r8 666e: 9107 str r1, [sp, #28] 6670: 9906 ldr r1, [sp, #24] 6672: 980b ldr r0, [sp, #44] ; 0x2c 6674: 4680 mov r8, r0 6676: 4441 add r1, r8 6678: 9106 str r1, [sp, #24] for(y = draw_area->y1; y <= draw_area->y2; y++) { 667a: 990c ldr r1, [sp, #48] ; 0x30 667c: 3101 adds r1, #1 667e: 0008 movs r0, r1 6680: 910c str r1, [sp, #48] ; 0x30 6682: a910 add r1, sp, #64 ; 0x40 6684: 2406 movs r4, #6 6686: 5f09 ldrsh r1, [r1, r4] 6688: 4288 cmp r0, r1 668a: dd01 ble.n 6690 <_lv_blend_fill+0xa24> 668c: f7ff fb06 bl 5c9c <_lv_blend_fill+0x30> for(x = 0; x < draw_area_w; x++) { 6690: 990a ldr r1, [sp, #40] ; 0x28 6692: 2900 cmp r1, #0 6694: dde7 ble.n 6666 <_lv_blend_fill+0x9fa> 6696: 9907 ldr r1, [sp, #28] 6698: 9806 ldr r0, [sp, #24] 669a: 0004 movs r4, r0 669c: 9d0b ldr r5, [sp, #44] ; 0x2c 669e: 46a8 mov r8, r5 66a0: 4444 add r4, r8 66a2: 0027 movs r7, r4 66a4: 4ca7 ldr r4, [pc, #668] ; (6944 <_lv_blend_fill+0xcd8>) 66a6: 46a0 mov r8, r4 if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 66a8: 465c mov r4, fp 66aa: 940d str r4, [sp, #52] ; 0x34 66ac: e7ca b.n 6644 <_lv_blend_fill+0x9d8> 66ae: 466b mov r3, sp 66b0: 8a9c ldrh r4, [r3, #20] switch(mode) { 66b2: 2e01 cmp r6, #1 66b4: d045 beq.n 6742 <_lv_blend_fill+0xad6> 66b6: 2e02 cmp r6, #2 66b8: d001 beq.n 66be <_lv_blend_fill+0xa52> 66ba: f7ff faef bl 5c9c <_lv_blend_fill+0x30> blend_fp = color_blend_true_color_subtractive; 66be: 4ba2 ldr r3, [pc, #648] ; (6948 <_lv_blend_fill+0xcdc>) 66c0: 9309 str r3, [sp, #36] ; 0x24 66c2: 466b mov r3, sp 66c4: 8a9a ldrh r2, [r3, #20] 66c6: 06d3 lsls r3, r2, #27 66c8: 0edb lsrs r3, r3, #27 66ca: 930e str r3, [sp, #56] ; 0x38 66cc: 0553 lsls r3, r2, #21 66ce: 0e9b lsrs r3, r3, #26 66d0: 930c str r3, [sp, #48] ; 0x30 66d2: 0416 lsls r6, r2, #16 66d4: 0ef3 lsrs r3, r6, #27 66d6: 930d str r3, [sp, #52] ; 0x34 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 66d8: 4643 mov r3, r8 66da: 8a9b ldrh r3, [r3, #20] 66dc: 3301 adds r3, #1 66de: 4642 mov r2, r8 66e0: 8a12 ldrh r2, [r2, #16] 66e2: 1a9b subs r3, r3, r2 66e4: b219 sxth r1, r3 lv_color_t * disp_buf_tmp = disp_buf + disp_w * draw_area->y1; 66e6: 9508 str r5, [sp, #32] 66e8: 434d muls r5, r1 66ea: 006d lsls r5, r5, #1 66ec: 9b04 ldr r3, [sp, #16] 66ee: 469c mov ip, r3 66f0: 44ac add ip, r5 66f2: 4663 mov r3, ip 66f4: 9307 str r3, [sp, #28] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 66f6: 2f01 cmp r7, #1 66f8: d026 beq.n 6748 <_lv_blend_fill+0xadc> 66fa: 3001 adds r0, #1 66fc: 9b0b ldr r3, [sp, #44] ; 0x2c 66fe: 1ac0 subs r0, r0, r3 6700: b203 sxth r3, r0 6702: 4698 mov r8, r3 const lv_opa_t * mask_tmp = mask - draw_area->x1; 6704: 9b06 ldr r3, [sp, #24] 6706: 9a0a ldr r2, [sp, #40] ; 0x28 6708: 1a9e subs r6, r3, r2 last_dest_color.full = disp_buf_tmp[0].full; 670a: 9b07 ldr r3, [sp, #28] 670c: 881a ldrh r2, [r3, #0] for(y = draw_area->y1; y <= draw_area->y2; y++) { 670e: 9b08 ldr r3, [sp, #32] 6710: 454b cmp r3, r9 6712: dd01 ble.n 6718 <_lv_blend_fill+0xaac> 6714: f7ff fac2 bl 5c9c <_lv_blend_fill+0x30> disp_buf_tmp += disp_w; 6718: 004b lsls r3, r1, #1 671a: 930a str r3, [sp, #40] ; 0x28 671c: 0010 movs r0, r2 671e: 2100 movs r1, #0 last_res_color = blend_fp(color, disp_buf_tmp[x], opa_tmp); 6720: 9b0c ldr r3, [sp, #48] ; 0x30 6722: 015b lsls r3, r3, #5 6724: 469a mov sl, r3 6726: 4643 mov r3, r8 6728: 930b str r3, [sp, #44] ; 0x2c 672a: 9b09 ldr r3, [sp, #36] ; 0x24 672c: 4698 mov r8, r3 672e: 9b0d ldr r3, [sp, #52] ; 0x34 6730: 4699 mov r9, r3 6732: 466b mov r3, sp 6734: 821c strh r4, [r3, #16] 6736: 0034 movs r4, r6 6738: 465b mov r3, fp 673a: 9306 str r3, [sp, #24] 673c: 9b0e ldr r3, [sp, #56] ; 0x38 673e: 469b mov fp, r3 6740: e0de b.n 6900 <_lv_blend_fill+0xc94> blend_fp = color_blend_true_color_additive; 6742: 4b82 ldr r3, [pc, #520] ; (694c <_lv_blend_fill+0xce0>) 6744: 9309 str r3, [sp, #36] ; 0x24 6746: e7bc b.n 66c2 <_lv_blend_fill+0xa56> lv_color_t last_dest_color = LV_COLOR_BLACK; 6748: 2300 movs r3, #0 674a: 466a mov r2, sp 674c: 8293 strh r3, [r2, #20] LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 674e: 465b mov r3, fp 6750: 9f0d ldr r7, [sp, #52] ; 0x34 6752: 437b muls r3, r7 6754: 0218 lsls r0, r3, #8 6756: 18c0 adds r0, r0, r3 6758: 01c0 lsls r0, r0, #7 675a: 18c0 adds r0, r0, r3 675c: 0dc0 lsrs r0, r0, #23 675e: 251f movs r5, #31 6760: 4028 ands r0, r5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 6762: 465a mov r2, fp 6764: 9b0c ldr r3, [sp, #48] ; 0x30 6766: 435a muls r2, r3 6768: 0213 lsls r3, r2, #8 676a: 189b adds r3, r3, r2 676c: 01db lsls r3, r3, #7 676e: 189b adds r3, r3, r2 6770: 00db lsls r3, r3, #3 6772: 0e9a lsrs r2, r3, #26 6774: 4692 mov sl, r2 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 6776: 465a mov r2, fp 6778: 9e0e ldr r6, [sp, #56] ; 0x38 677a: 4372 muls r2, r6 677c: 0213 lsls r3, r2, #8 677e: 189b adds r3, r3, r2 6780: 01db lsls r3, r3, #7 6782: 189b adds r3, r3, r2 6784: 0ddb lsrs r3, r3, #23 6786: 401d ands r5, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6788: 9a08 ldr r2, [sp, #32] 678a: 454a cmp r2, r9 678c: dd01 ble.n 6792 <_lv_blend_fill+0xb26> 678e: f7ff fa85 bl 5c9c <_lv_blend_fill+0x30> disp_buf_tmp += disp_w; 6792: 004a lsls r2, r1, #1 6794: 4691 mov r9, r2 last_res_color = blend_fp(color, disp_buf_tmp[x], opa); 6796: 0033 movs r3, r6 6798: 221f movs r2, #31 679a: 4013 ands r3, r2 679c: 4698 mov r8, r3 679e: 464a mov r2, r9 67a0: 920b str r2, [sp, #44] ; 0x2c 67a2: 46b9 mov r9, r7 67a4: 466b mov r3, sp 67a6: 831c strh r4, [r3, #24] 67a8: 002c movs r4, r5 67aa: 465a mov r2, fp 67ac: 920a str r2, [sp, #40] ; 0x28 67ae: 9b0c ldr r3, [sp, #48] ; 0x30 67b0: 469b mov fp, r3 67b2: e050 b.n 6856 <_lv_blend_fill+0xbea> disp_buf_tmp[x] = last_res_color; 67b4: 782b ldrb r3, [r5, #0] 67b6: 221f movs r2, #31 67b8: 4393 bics r3, r2 67ba: 9a04 ldr r2, [sp, #16] 67bc: 4313 orrs r3, r2 67be: 702b strb r3, [r5, #0] 67c0: 017a lsls r2, r7, #5 67c2: 882b ldrh r3, [r5, #0] 67c4: 469c mov ip, r3 67c6: 4b5f ldr r3, [pc, #380] ; (6944 <_lv_blend_fill+0xcd8>) 67c8: 4661 mov r1, ip 67ca: 400b ands r3, r1 67cc: 4313 orrs r3, r2 67ce: 802b strh r3, [r5, #0] 67d0: 00c2 lsls r2, r0, #3 67d2: 055b lsls r3, r3, #21 67d4: 0f5b lsrs r3, r3, #29 67d6: 4313 orrs r3, r2 67d8: 706b strb r3, [r5, #1] for(x = draw_area->x1; x <= draw_area->x2; x++) { 67da: 3401 adds r4, #1 67dc: 3602 adds r6, #2 67de: ab10 add r3, sp, #64 ; 0x40 67e0: 2204 movs r2, #4 67e2: 5e9b ldrsh r3, [r3, r2] 67e4: 429c cmp r4, r3 67e6: dc24 bgt.n 6832 <_lv_blend_fill+0xbc6> if(last_dest_color.full != disp_buf_tmp[x].full) { 67e8: 0035 movs r5, r6 67ea: 466b mov r3, sp 67ec: 8a9b ldrh r3, [r3, #20] 67ee: 8832 ldrh r2, [r6, #0] 67f0: 4293 cmp r3, r2 67f2: d0df beq.n 67b4 <_lv_blend_fill+0xb48> last_dest_color = disp_buf_tmp[x]; 67f4: 0011 movs r1, r2 67f6: 466b mov r3, sp 67f8: 829a strh r2, [r3, #20] last_res_color = blend_fp(color, disp_buf_tmp[x], opa); 67fa: 9806 ldr r0, [sp, #24] 67fc: 231f movs r3, #31 67fe: 4398 bics r0, r3 6800: 4643 mov r3, r8 6802: 4318 orrs r0, r3 6804: 465b mov r3, fp 6806: 015b lsls r3, r3, #5 6808: 4f4e ldr r7, [pc, #312] ; (6944 <_lv_blend_fill+0xcd8>) 680a: 4038 ands r0, r7 680c: 4318 orrs r0, r3 680e: 464b mov r3, r9 6810: 02db lsls r3, r3, #11 6812: 0540 lsls r0, r0, #21 6814: 0d40 lsrs r0, r0, #21 6816: 4318 orrs r0, r3 6818: 466b mov r3, sp 681a: 8318 strh r0, [r3, #24] 681c: 9a0a ldr r2, [sp, #40] ; 0x28 681e: 9b09 ldr r3, [sp, #36] ; 0x24 6820: 4798 blx r3 6822: 06c1 lsls r1, r0, #27 6824: 0ecb lsrs r3, r1, #27 6826: 9304 str r3, [sp, #16] 6828: 0547 lsls r7, r0, #21 682a: 0ebf lsrs r7, r7, #26 682c: 0400 lsls r0, r0, #16 682e: 0ec0 lsrs r0, r0, #27 6830: e7c0 b.n 67b4 <_lv_blend_fill+0xb48> 6832: 9c04 ldr r4, [sp, #16] 6834: 46ba mov sl, r7 disp_buf_tmp += disp_w; 6836: 9b07 ldr r3, [sp, #28] 6838: 9a0b ldr r2, [sp, #44] ; 0x2c 683a: 4694 mov ip, r2 683c: 4463 add r3, ip 683e: 9307 str r3, [sp, #28] for(y = draw_area->y1; y <= draw_area->y2; y++) { 6840: 9b08 ldr r3, [sp, #32] 6842: 3301 adds r3, #1 6844: 001a movs r2, r3 6846: 9308 str r3, [sp, #32] 6848: ab10 add r3, sp, #64 ; 0x40 684a: 2106 movs r1, #6 684c: 5e5b ldrsh r3, [r3, r1] 684e: 429a cmp r2, r3 6850: dd01 ble.n 6856 <_lv_blend_fill+0xbea> 6852: f7ff fa23 bl 5c9c <_lv_blend_fill+0x30> for(x = draw_area->x1; x <= draw_area->x2; x++) { 6856: ab10 add r3, sp, #64 ; 0x40 6858: 2200 movs r2, #0 685a: 5e9e ldrsh r6, [r3, r2] 685c: 0037 movs r7, r6 685e: 2204 movs r2, #4 6860: 5e9b ldrsh r3, [r3, r2] 6862: 429e cmp r6, r3 6864: dce7 bgt.n 6836 <_lv_blend_fill+0xbca> 6866: 0076 lsls r6, r6, #1 6868: 9b07 ldr r3, [sp, #28] 686a: 469c mov ip, r3 686c: 4466 add r6, ip 686e: 9404 str r4, [sp, #16] 6870: 003c movs r4, r7 6872: 4657 mov r7, sl 6874: e7b8 b.n 67e8 <_lv_blend_fill+0xb7c> if(mask_tmp[x] != last_mask || last_dest_color.full != disp_buf_tmp[x].full) { 6876: 883a ldrh r2, [r7, #0] 6878: 4694 mov ip, r2 687a: 9a05 ldr r2, [sp, #20] 687c: 4594 cmp ip, r2 687e: d124 bne.n 68ca <_lv_blend_fill+0xc5e> 6880: e015 b.n 68ae <_lv_blend_fill+0xc42> last_res_color = blend_fp(color, disp_buf_tmp[x], opa_tmp); 6882: 231f movs r3, #31 6884: 9804 ldr r0, [sp, #16] 6886: 4398 bics r0, r3 6888: 465b mov r3, fp 688a: 4318 orrs r0, r3 688c: 4b2d ldr r3, [pc, #180] ; (6944 <_lv_blend_fill+0xcd8>) 688e: 4018 ands r0, r3 6890: 4653 mov r3, sl 6892: 4318 orrs r0, r3 6894: 464b mov r3, r9 6896: 02db lsls r3, r3, #11 6898: 0540 lsls r0, r0, #21 689a: 0d40 lsrs r0, r0, #21 689c: 4318 orrs r0, r3 689e: 466b mov r3, sp 68a0: 8218 strh r0, [r3, #16] 68a2: 8839 ldrh r1, [r7, #0] 68a4: 47c0 blx r8 68a6: b280 uxth r0, r0 last_mask = mask_tmp[x]; 68a8: 5da1 ldrb r1, [r4, r6] last_dest_color.full = disp_buf_tmp[x].full; 68aa: 883b ldrh r3, [r7, #0] 68ac: 9305 str r3, [sp, #20] disp_buf_tmp[x] = last_res_color; 68ae: 8038 strh r0, [r7, #0] for(x = draw_area->x1; x <= draw_area->x2; x++) { 68b0: 3501 adds r5, #1 68b2: 3702 adds r7, #2 68b4: ab10 add r3, sp, #64 ; 0x40 68b6: 2604 movs r6, #4 68b8: 5f9b ldrsh r3, [r3, r6] 68ba: 429d cmp r5, r3 68bc: dc0c bgt.n 68d8 <_lv_blend_fill+0xc6c> 68be: 002e movs r6, r5 if(mask_tmp[x] == 0) continue; 68c0: 5d63 ldrb r3, [r4, r5] 68c2: 2b00 cmp r3, #0 68c4: d0f4 beq.n 68b0 <_lv_blend_fill+0xc44> if(mask_tmp[x] != last_mask || last_dest_color.full != disp_buf_tmp[x].full) { 68c6: 428b cmp r3, r1 68c8: d0d5 beq.n 6876 <_lv_blend_fill+0xc0a> lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : (uint32_t)((uint32_t)mask_tmp[x] * opa) >> 8; 68ca: 9906 ldr r1, [sp, #24] 68cc: 000a movs r2, r1 68ce: 2bf9 cmp r3, #249 ; 0xf9 68d0: d8d7 bhi.n 6882 <_lv_blend_fill+0xc16> 68d2: 435a muls r2, r3 68d4: 0a12 lsrs r2, r2, #8 68d6: e7d4 b.n 6882 <_lv_blend_fill+0xc16> 68d8: 9a05 ldr r2, [sp, #20] disp_buf_tmp += disp_w; 68da: 9b07 ldr r3, [sp, #28] 68dc: 9d0a ldr r5, [sp, #40] ; 0x28 68de: 46ac mov ip, r5 68e0: 4463 add r3, ip 68e2: 9307 str r3, [sp, #28] 68e4: 9b0b ldr r3, [sp, #44] ; 0x2c 68e6: 469c mov ip, r3 68e8: 4464 add r4, ip for(y = draw_area->y1; y <= draw_area->y2; y++) { 68ea: 9b08 ldr r3, [sp, #32] 68ec: 3301 adds r3, #1 68ee: 001d movs r5, r3 68f0: 9308 str r3, [sp, #32] 68f2: ab10 add r3, sp, #64 ; 0x40 68f4: 2606 movs r6, #6 68f6: 5f9b ldrsh r3, [r3, r6] 68f8: 429d cmp r5, r3 68fa: dd01 ble.n 6900 <_lv_blend_fill+0xc94> 68fc: f7ff f9ce bl 5c9c <_lv_blend_fill+0x30> for(x = draw_area->x1; x <= draw_area->x2; x++) { 6900: ab10 add r3, sp, #64 ; 0x40 6902: 2500 movs r5, #0 6904: 5f5f ldrsh r7, [r3, r5] 6906: 003d movs r5, r7 6908: 2604 movs r6, #4 690a: 5f9b ldrsh r3, [r3, r6] 690c: 429f cmp r7, r3 690e: dce4 bgt.n 68da <_lv_blend_fill+0xc6e> 6910: 007f lsls r7, r7, #1 6912: 9b07 ldr r3, [sp, #28] 6914: 469c mov ip, r3 6916: 4467 add r7, ip 6918: 9205 str r2, [sp, #20] 691a: e7d0 b.n 68be <_lv_blend_fill+0xc52> FILL_NORMAL_MASK_PX(x, color) 691c: 0022 movs r2, r4 for(; x <= x_end4; x += 4) { 691e: 9905 ldr r1, [sp, #20] 6920: 4299 cmp r1, r3 6922: da00 bge.n 6926 <_lv_blend_fill+0xcba> 6924: e60b b.n 653e <_lv_blend_fill+0x8d2> 6926: 005c lsls r4, r3, #1 6928: 9907 ldr r1, [sp, #28] 692a: 468c mov ip, r1 692c: 4464 add r4, ip LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 692e: 271f movs r7, #31 6930: 4651 mov r1, sl 6932: 9106 str r1, [sp, #24] 6934: e463 b.n 61fe <_lv_blend_fill+0x592> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 6936: 9a09 ldr r2, [sp, #36] ; 0x24 6938: 2300 movs r3, #0 693a: e7f0 b.n 691e <_lv_blend_fill+0xcb2> 693c: 9a09 ldr r2, [sp, #36] ; 0x24 693e: 2300 movs r3, #0 6940: e448 b.n 61d4 <_lv_blend_fill+0x568> 6942: 46c0 nop ; (mov r8, r8) 6944: fffff81f .word 0xfffff81f 6948: 00005bb7 .word 0x00005bb7 694c: 00005b11 .word 0x00005b11 00006950 <_lv_blend_map>: { 6950: b5f0 push {r4, r5, r6, r7, lr} 6952: 46de mov lr, fp 6954: 4657 mov r7, sl 6956: 464e mov r6, r9 6958: 4645 mov r5, r8 695a: b5e0 push {r5, r6, r7, lr} 695c: b093 sub sp, #76 ; 0x4c 695e: 000c movs r4, r1 6960: 9207 str r2, [sp, #28] 6962: 001d movs r5, r3 6964: ab1c add r3, sp, #112 ; 0x70 6966: 781f ldrb r7, [r3, #0] 6968: ab1d add r3, sp, #116 ; 0x74 696a: 781b ldrb r3, [r3, #0] 696c: 469b mov fp, r3 696e: ab1e add r3, sp, #120 ; 0x78 6970: 781e ldrb r6, [r3, #0] if(opa < LV_OPA_MIN) return; 6972: 465b mov r3, fp 6974: 2b04 cmp r3, #4 6976: d901 bls.n 697c <_lv_blend_map+0x2c> if(mask_res == LV_DRAW_MASK_RES_TRANSP) return; 6978: 2f00 cmp r7, #0 697a: d106 bne.n 698a <_lv_blend_map+0x3a> } 697c: b013 add sp, #76 ; 0x4c 697e: bc3c pop {r2, r3, r4, r5} 6980: 4690 mov r8, r2 6982: 4699 mov r9, r3 6984: 46a2 mov sl, r4 6986: 46ab mov fp, r5 6988: bdf0 pop {r4, r5, r6, r7, pc} is_common = _lv_area_intersect(&draw_area, clip_area, map_area); 698a: 000a movs r2, r1 698c: 0001 movs r1, r0 698e: a810 add r0, sp, #64 ; 0x40 6990: 4bd7 ldr r3, [pc, #860] ; (6cf0 <_lv_blend_map+0x3a0>) 6992: 4798 blx r3 if(!is_common) return; 6994: 2800 cmp r0, #0 6996: d0f1 beq.n 697c <_lv_blend_map+0x2c> lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 6998: 4bd6 ldr r3, [pc, #856] ; (6cf4 <_lv_blend_map+0x3a4>) 699a: 4798 blx r3 699c: 4680 mov r8, r0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 699e: 4bd6 ldr r3, [pc, #856] ; (6cf8 <_lv_blend_map+0x3a8>) 69a0: 4798 blx r3 69a2: 4681 mov r9, r0 lv_color_t * disp_buf = vdb->buf_act; 69a4: 6883 ldr r3, [r0, #8] 69a6: 9305 str r3, [sp, #20] draw_area.x1 -= disp_area->x1; 69a8: 8a02 ldrh r2, [r0, #16] 69aa: ab10 add r3, sp, #64 ; 0x40 69ac: 8819 ldrh r1, [r3, #0] 69ae: 1a89 subs r1, r1, r2 69b0: b289 uxth r1, r1 69b2: 9109 str r1, [sp, #36] ; 0x24 69b4: 468c mov ip, r1 69b6: b208 sxth r0, r1 69b8: 4682 mov sl, r0 69ba: 8018 strh r0, [r3, #0] draw_area.y1 -= disp_area->y1; 69bc: 4648 mov r0, r9 69be: 8a41 ldrh r1, [r0, #18] 69c0: 8858 ldrh r0, [r3, #2] 69c2: 1a40 subs r0, r0, r1 69c4: b280 uxth r0, r0 69c6: 900a str r0, [sp, #40] ; 0x28 69c8: b200 sxth r0, r0 69ca: 9008 str r0, [sp, #32] 69cc: 8058 strh r0, [r3, #2] draw_area.x2 -= disp_area->x1; 69ce: 8898 ldrh r0, [r3, #4] 69d0: 1a80 subs r0, r0, r2 69d2: b280 uxth r0, r0 69d4: 8098 strh r0, [r3, #4] draw_area.y2 -= disp_area->y1; 69d6: 88da ldrh r2, [r3, #6] 69d8: 1a52 subs r2, r2, r1 69da: b292 uxth r2, r2 69dc: 920b str r2, [sp, #44] ; 0x2c 69de: b212 sxth r2, r2 69e0: 920c str r2, [sp, #48] ; 0x30 69e2: 80da strh r2, [r3, #6] if(mask && disp->driver.antialiasing == 0) 69e4: 2d00 cmp r5, #0 69e6: d014 beq.n 6a12 <_lv_blend_map+0xc2> 69e8: 4643 mov r3, r8 69ea: 7a1b ldrb r3, [r3, #8] 69ec: 07db lsls r3, r3, #31 69ee: d410 bmi.n 6a12 <_lv_blend_map+0xc2> 69f0: 1c41 adds r1, r0, #1 69f2: 4663 mov r3, ip 69f4: 1ac9 subs r1, r1, r3 69f6: b209 sxth r1, r1 for(i = 0; i < mask_w; i++) mask[i] = mask[i] > 128 ? LV_OPA_COVER : LV_OPA_TRANSP; 69f8: 2900 cmp r1, #0 69fa: dd0a ble.n 6a12 <_lv_blend_map+0xc2> 69fc: 002b movs r3, r5 69fe: 1869 adds r1, r5, r1 6a00: 2280 movs r2, #128 ; 0x80 6a02: 4694 mov ip, r2 6a04: 781a ldrb r2, [r3, #0] 6a06: 4594 cmp ip, r2 6a08: 4192 sbcs r2, r2 6a0a: 701a strb r2, [r3, #0] 6a0c: 3301 adds r3, #1 6a0e: 428b cmp r3, r1 6a10: d1f8 bne.n 6a04 <_lv_blend_map+0xb4> if(disp->driver.set_px_cb) { 6a12: 4643 mov r3, r8 6a14: 695b ldr r3, [r3, #20] 6a16: 2b00 cmp r3, #0 6a18: d100 bne.n 6a1c <_lv_blend_map+0xcc> 6a1a: e0c3 b.n 6ba4 <_lv_blend_map+0x254> lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 6a1c: 4bb5 ldr r3, [pc, #724] ; (6cf4 <_lv_blend_map+0x3a4>) 6a1e: 4798 blx r3 6a20: 900c str r0, [sp, #48] ; 0x30 6a22: 464b mov r3, r9 6a24: 2210 movs r2, #16 6a26: 5e9b ldrsh r3, [r3, r2] 6a28: 4698 mov r8, r3 6a2a: 464b mov r3, r9 6a2c: 8a9b ldrh r3, [r3, #20] 6a2e: 3301 adds r3, #1 6a30: 4642 mov r2, r8 6a32: 1a9b subs r3, r3, r2 6a34: b21b sxth r3, r3 6a36: 9306 str r3, [sp, #24] 6a38: a910 add r1, sp, #64 ; 0x40 6a3a: 2300 movs r3, #0 6a3c: 5ec8 ldrsh r0, [r1, r3] 6a3e: 2300 movs r3, #0 6a40: 5ee2 ldrsh r2, [r4, r3] 6a42: 88a3 ldrh r3, [r4, #4] 6a44: 3301 adds r3, #1 6a46: 1a9b subs r3, r3, r2 6a48: b21b sxth r3, r3 const lv_color_t * map_buf_tmp = map_buf + map_w * (draw_area->y1 - (map_area->y1 - disp_area->y1)); 6a4a: 2602 movs r6, #2 6a4c: 5f89 ldrsh r1, [r1, r6] 6a4e: 9109 str r1, [sp, #36] ; 0x24 6a50: 2602 movs r6, #2 6a52: 5fa4 ldrsh r4, [r4, r6] 6a54: 46a4 mov ip, r4 6a56: 464e mov r6, r9 6a58: 2412 movs r4, #18 6a5a: 5f36 ldrsh r6, [r6, r4] 6a5c: 4664 mov r4, ip 6a5e: 1ba4 subs r4, r4, r6 6a60: 1b0c subs r4, r1, r4 6a62: 435c muls r4, r3 map_buf_tmp += (draw_area->x1 - (map_area->x1 - disp_area->x1)); 6a64: 4646 mov r6, r8 6a66: 1b92 subs r2, r2, r6 map_buf_tmp -= draw_area->x1; 6a68: 1aa4 subs r4, r4, r2 6a6a: 0064 lsls r4, r4, #1 6a6c: 9a07 ldr r2, [sp, #28] 6a6e: 4694 mov ip, r2 6a70: 44a4 add ip, r4 6a72: 4662 mov r2, ip 6a74: 9208 str r2, [sp, #32] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 6a76: 2f01 cmp r7, #1 6a78: d053 beq.n 6b22 <_lv_blend_map+0x1d2> const lv_opa_t * mask_tmp = mask - draw_area->x1; 6a7a: 1a2a subs r2, r5, r0 6a7c: 4690 mov r8, r2 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6a7e: aa10 add r2, sp, #64 ; 0x40 6a80: 2406 movs r4, #6 6a82: 5f12 ldrsh r2, [r2, r4] 6a84: 9c09 ldr r4, [sp, #36] ; 0x24 6a86: 4294 cmp r4, r2 6a88: dd00 ble.n 6a8c <_lv_blend_map+0x13c> 6a8a: e777 b.n 697c <_lv_blend_map+0x2c> 6a8c: aa10 add r2, sp, #64 ; 0x40 6a8e: 2404 movs r4, #4 6a90: 5f12 ldrsh r2, [r2, r4] map_buf_tmp += map_w; 6a92: 005b lsls r3, r3, #1 6a94: 930a str r3, [sp, #40] ; 0x28 6a96: 9109 str r1, [sp, #36] ; 0x24 for(x = draw_area->x1; x <= draw_area->x2; x++) { 6a98: ab10 add r3, sp, #64 ; 0x40 6a9a: 9307 str r3, [sp, #28] disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], 6a9c: ab01 add r3, sp, #4 6a9e: 469a mov sl, r3 6aa0: 3201 adds r2, #1 6aa2: 1a13 subs r3, r2, r0 mask_tmp += draw_area_w; 6aa4: b21b sxth r3, r3 6aa6: 930b str r3, [sp, #44] ; 0x2c 6aa8: 9e0c ldr r6, [sp, #48] ; 0x30 for(x = draw_area->x1; x <= draw_area->x2; x++) { 6aaa: 9a07 ldr r2, [sp, #28] 6aac: 0013 movs r3, r2 6aae: 2500 movs r5, #0 6ab0: 5f5d ldrsh r5, [r3, r5] 6ab2: 002c movs r4, r5 6ab4: 0013 movs r3, r2 6ab6: 2204 movs r2, #4 6ab8: 5e9b ldrsh r3, [r3, r2] 6aba: 429d cmp r5, r3 6abc: dc1f bgt.n 6afe <_lv_blend_map+0x1ae> 6abe: 006d lsls r5, r5, #1 6ac0: 9b08 ldr r3, [sp, #32] 6ac2: 469c mov ip, r3 6ac4: 4465 add r5, ip disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], 6ac6: 466b mov r3, sp 6ac8: 2224 movs r2, #36 ; 0x24 6aca: 5e9b ldrsh r3, [r3, r2] 6acc: 4699 mov r9, r3 6ace: b223 sxth r3, r4 (uint32_t)((uint32_t)opa * mask_tmp[x]) >> 8); 6ad0: 4642 mov r2, r8 6ad2: 5d12 ldrb r2, [r2, r4] 6ad4: 4659 mov r1, fp 6ad6: 434a muls r2, r1 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], 6ad8: 0a12 lsrs r2, r2, #8 6ada: 9202 str r2, [sp, #8] 6adc: 882a ldrh r2, [r5, #0] 6ade: 4651 mov r1, sl 6ae0: 800a strh r2, [r1, #0] 6ae2: 464a mov r2, r9 6ae4: 9200 str r2, [sp, #0] 6ae6: 9a06 ldr r2, [sp, #24] 6ae8: 9905 ldr r1, [sp, #20] 6aea: 0030 movs r0, r6 6aec: 6977 ldr r7, [r6, #20] 6aee: 47b8 blx r7 for(x = draw_area->x1; x <= draw_area->x2; x++) { 6af0: 3401 adds r4, #1 6af2: 3502 adds r5, #2 6af4: 9b07 ldr r3, [sp, #28] 6af6: 2204 movs r2, #4 6af8: 5e9b ldrsh r3, [r3, r2] 6afa: 429c cmp r4, r3 6afc: dde7 ble.n 6ace <_lv_blend_map+0x17e> 6afe: 9b0b ldr r3, [sp, #44] ; 0x2c 6b00: 469c mov ip, r3 6b02: 44e0 add r8, ip map_buf_tmp += map_w; 6b04: 9b08 ldr r3, [sp, #32] 6b06: 9a0a ldr r2, [sp, #40] ; 0x28 6b08: 4694 mov ip, r2 6b0a: 4463 add r3, ip 6b0c: 9308 str r3, [sp, #32] for(y = draw_area->y1; y <= draw_area->y2; y++) { 6b0e: 9b09 ldr r3, [sp, #36] ; 0x24 6b10: 3301 adds r3, #1 6b12: 001a movs r2, r3 6b14: 9309 str r3, [sp, #36] ; 0x24 6b16: 9b07 ldr r3, [sp, #28] 6b18: 2106 movs r1, #6 6b1a: 5e5b ldrsh r3, [r3, r1] 6b1c: 429a cmp r2, r3 6b1e: ddc4 ble.n 6aaa <_lv_blend_map+0x15a> 6b20: e72c b.n 697c <_lv_blend_map+0x2c> for(y = draw_area->y1; y <= draw_area->y2; y++) { 6b22: aa10 add r2, sp, #64 ; 0x40 6b24: 2006 movs r0, #6 6b26: 5e12 ldrsh r2, [r2, r0] 6b28: 428a cmp r2, r1 6b2a: da00 bge.n 6b2e <_lv_blend_map+0x1de> 6b2c: e726 b.n 697c <_lv_blend_map+0x2c> map_buf_tmp += map_w; 6b2e: 005b lsls r3, r3, #1 6b30: 9309 str r3, [sp, #36] ; 0x24 6b32: 468a mov sl, r1 for(x = draw_area->x1; x <= draw_area->x2; x++) { 6b34: ab10 add r3, sp, #64 ; 0x40 6b36: 9307 str r3, [sp, #28] disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], opa); 6b38: ab01 add r3, sp, #4 6b3a: 4699 mov r9, r3 6b3c: 9e0c ldr r6, [sp, #48] ; 0x30 for(x = draw_area->x1; x <= draw_area->x2; x++) { 6b3e: 9a07 ldr r2, [sp, #28] 6b40: 0013 movs r3, r2 6b42: 2700 movs r7, #0 6b44: 5fdf ldrsh r7, [r3, r7] 6b46: 003c movs r4, r7 6b48: 0013 movs r3, r2 6b4a: 2204 movs r2, #4 6b4c: 5e9b ldrsh r3, [r3, r2] 6b4e: 429f cmp r7, r3 6b50: dc1a bgt.n 6b88 <_lv_blend_map+0x238> 6b52: 007f lsls r7, r7, #1 6b54: 9b08 ldr r3, [sp, #32] 6b56: 469c mov ip, r3 6b58: 4467 add r7, ip disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], opa); 6b5a: 4653 mov r3, sl 6b5c: b21b sxth r3, r3 6b5e: 4698 mov r8, r3 6b60: b223 sxth r3, r4 6b62: 465a mov r2, fp 6b64: 9202 str r2, [sp, #8] 6b66: 883a ldrh r2, [r7, #0] 6b68: 4649 mov r1, r9 6b6a: 800a strh r2, [r1, #0] 6b6c: 4642 mov r2, r8 6b6e: 9200 str r2, [sp, #0] 6b70: 9a06 ldr r2, [sp, #24] 6b72: 9905 ldr r1, [sp, #20] 6b74: 0030 movs r0, r6 6b76: 6975 ldr r5, [r6, #20] 6b78: 47a8 blx r5 for(x = draw_area->x1; x <= draw_area->x2; x++) { 6b7a: 3401 adds r4, #1 6b7c: 3702 adds r7, #2 6b7e: 9b07 ldr r3, [sp, #28] 6b80: 2204 movs r2, #4 6b82: 5e9b ldrsh r3, [r3, r2] 6b84: 429c cmp r4, r3 6b86: ddeb ble.n 6b60 <_lv_blend_map+0x210> map_buf_tmp += map_w; 6b88: 9b08 ldr r3, [sp, #32] 6b8a: 9a09 ldr r2, [sp, #36] ; 0x24 6b8c: 4694 mov ip, r2 6b8e: 4463 add r3, ip 6b90: 9308 str r3, [sp, #32] for(y = draw_area->y1; y <= draw_area->y2; y++) { 6b92: 2301 movs r3, #1 6b94: 469c mov ip, r3 6b96: 44e2 add sl, ip 6b98: 9b07 ldr r3, [sp, #28] 6b9a: 2206 movs r2, #6 6b9c: 5e9b ldrsh r3, [r3, r2] 6b9e: 459a cmp sl, r3 6ba0: ddcd ble.n 6b3e <_lv_blend_map+0x1ee> 6ba2: e6eb b.n 697c <_lv_blend_map+0x2c> else if(mode == LV_BLEND_MODE_NORMAL) { 6ba4: 2e00 cmp r6, #0 6ba6: d001 beq.n 6bac <_lv_blend_map+0x25c> 6ba8: f000 fbfd bl 73a6 <_lv_blend_map+0xa56> 6bac: 464b mov r3, r9 6bae: 2210 movs r2, #16 6bb0: 5e9b ldrsh r3, [r3, r2] 6bb2: 001a movs r2, r3 6bb4: 464b mov r3, r9 6bb6: 8a9b ldrh r3, [r3, #20] 6bb8: 3301 adds r3, #1 6bba: 920d str r2, [sp, #52] ; 0x34 6bbc: 1a9b subs r3, r3, r2 6bbe: b21b sxth r3, r3 6bc0: 4698 mov r8, r3 6bc2: 3001 adds r0, #1 6bc4: 9b09 ldr r3, [sp, #36] ; 0x24 6bc6: 1ac0 subs r0, r0, r3 6bc8: b203 sxth r3, r0 6bca: 930c str r3, [sp, #48] ; 0x30 int32_t draw_area_w = lv_area_get_width(draw_area); 6bcc: 9306 str r3, [sp, #24] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 6bce: 980b ldr r0, [sp, #44] ; 0x2c 6bd0: 3001 adds r0, #1 6bd2: 9b0a ldr r3, [sp, #40] ; 0x28 6bd4: 1ac0 subs r0, r0, r3 int32_t draw_area_h = lv_area_get_height(draw_area); 6bd6: b203 sxth r3, r0 6bd8: 930b str r3, [sp, #44] ; 0x2c return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 6bda: 2300 movs r3, #0 6bdc: 5ee2 ldrsh r2, [r4, r3] 6bde: 88a6 ldrh r6, [r4, #4] 6be0: 3601 adds r6, #1 6be2: 1ab6 subs r6, r6, r2 6be4: b236 sxth r6, r6 lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1; 6be6: 9808 ldr r0, [sp, #32] 6be8: 0003 movs r3, r0 6bea: 4641 mov r1, r8 6bec: 434b muls r3, r1 6bee: 4453 add r3, sl 6bf0: 005b lsls r3, r3, #1 6bf2: 9905 ldr r1, [sp, #20] 6bf4: 468c mov ip, r1 6bf6: 449c add ip, r3 6bf8: 4663 mov r3, ip 6bfa: 9308 str r3, [sp, #32] const lv_color_t * map_buf_first = map_buf + map_w * (draw_area->y1 - (map_area->y1 - disp_area->y1)); 6bfc: 2102 movs r1, #2 6bfe: 5e63 ldrsh r3, [r4, r1] 6c00: 4649 mov r1, r9 6c02: 2412 movs r4, #18 6c04: 5f09 ldrsh r1, [r1, r4] 6c06: 1a5b subs r3, r3, r1 6c08: 1ac3 subs r3, r0, r3 6c0a: 4373 muls r3, r6 map_buf_first += (draw_area->x1 - (map_area->x1 - disp_area->x1)); 6c0c: 990d ldr r1, [sp, #52] ; 0x34 6c0e: 1a52 subs r2, r2, r1 6c10: 4651 mov r1, sl 6c12: 1a8a subs r2, r1, r2 6c14: 189b adds r3, r3, r2 6c16: 005b lsls r3, r3, #1 6c18: 9a07 ldr r2, [sp, #28] 6c1a: 4694 mov ip, r2 6c1c: 449c add ip, r3 6c1e: 4663 mov r3, ip 6c20: 9309 str r3, [sp, #36] ; 0x24 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 6c22: 4b34 ldr r3, [pc, #208] ; (6cf4 <_lv_blend_map+0x3a4>) 6c24: 4798 blx r3 6c26: 0004 movs r4, r0 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 6c28: 2f01 cmp r7, #1 6c2a: d015 beq.n 6c58 <_lv_blend_map+0x308> if(opa > LV_OPA_MAX) { 6c2c: 465b mov r3, fp 6c2e: 2bfa cmp r3, #250 ; 0xfa 6c30: d900 bls.n 6c34 <_lv_blend_map+0x2e4> 6c32: e0eb b.n 6e0c <_lv_blend_map+0x4bc> for(y = 0; y < draw_area_h; y++) { 6c34: 9b0b ldr r3, [sp, #44] ; 0x2c 6c36: 2b00 cmp r3, #0 6c38: dc00 bgt.n 6c3c <_lv_blend_map+0x2ec> 6c3a: e69f b.n 697c <_lv_blend_map+0x2c> disp_buf_first += disp_w; 6c3c: 4643 mov r3, r8 6c3e: 005b lsls r3, r3, #1 6c40: 930e str r3, [sp, #56] ; 0x38 map_buf_first += map_w; 6c42: 0073 lsls r3, r6, #1 6c44: 930f str r3, [sp, #60] ; 0x3c 6c46: 46a9 mov r9, r5 6c48: 2300 movs r3, #0 6c4a: 930d str r3, [sp, #52] ; 0x34 6c4c: 331f adds r3, #31 6c4e: 4698 mov r8, r3 lv_opa_t opa_tmp = mask[x] >= LV_OPA_MAX ? opa : ((opa * mask[x]) >> 8); 6c50: 465b mov r3, fp 6c52: 9307 str r3, [sp, #28] 6c54: 930a str r3, [sp, #40] ; 0x28 6c56: e39a b.n 738e <_lv_blend_map+0xa3e> if(disp->driver.gpu_blend_cb && (lv_area_get_size(draw_area) > GPU_SIZE_LIMIT)) { 6c58: 6a03 ldr r3, [r0, #32] 6c5a: 2b00 cmp r3, #0 6c5c: d02a beq.n 6cb4 <_lv_blend_map+0x364> 6c5e: a810 add r0, sp, #64 ; 0x40 6c60: 4b26 ldr r3, [pc, #152] ; (6cfc <_lv_blend_map+0x3ac>) 6c62: 4798 blx r3 6c64: 28f0 cmp r0, #240 ; 0xf0 6c66: d925 bls.n 6cb4 <_lv_blend_map+0x364> for(y = draw_area->y1; y <= draw_area->y2; y++) { 6c68: ab10 add r3, sp, #64 ; 0x40 6c6a: 2202 movs r2, #2 6c6c: 5e9f ldrsh r7, [r3, r2] 6c6e: 2206 movs r2, #6 6c70: 5e9b ldrsh r3, [r3, r2] 6c72: 429f cmp r7, r3 6c74: dd00 ble.n 6c78 <_lv_blend_map+0x328> 6c76: e681 b.n 697c <_lv_blend_map+0x2c> disp_buf_first += disp_w; 6c78: 4643 mov r3, r8 6c7a: 005b lsls r3, r3, #1 6c7c: 4698 mov r8, r3 map_buf_first += map_w; 6c7e: 0076 lsls r6, r6, #1 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6c80: ab10 add r3, sp, #64 ; 0x40 6c82: 9305 str r3, [sp, #20] disp->driver.gpu_blend_cb(&disp->driver, disp_buf_first, map_buf_first, draw_area_w, opa); 6c84: 465b mov r3, fp 6c86: 9300 str r3, [sp, #0] 6c88: 9b0c ldr r3, [sp, #48] ; 0x30 6c8a: 9a09 ldr r2, [sp, #36] ; 0x24 6c8c: 4692 mov sl, r2 6c8e: 9908 ldr r1, [sp, #32] 6c90: 4689 mov r9, r1 6c92: 0020 movs r0, r4 6c94: 6a25 ldr r5, [r4, #32] 6c96: 47a8 blx r5 disp_buf_first += disp_w; 6c98: 464b mov r3, r9 6c9a: 4443 add r3, r8 6c9c: 9308 str r3, [sp, #32] map_buf_first += map_w; 6c9e: 46d4 mov ip, sl 6ca0: 44b4 add ip, r6 6ca2: 4663 mov r3, ip 6ca4: 9309 str r3, [sp, #36] ; 0x24 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6ca6: 3701 adds r7, #1 6ca8: 9b05 ldr r3, [sp, #20] 6caa: 2206 movs r2, #6 6cac: 5e9b ldrsh r3, [r3, r2] 6cae: 429f cmp r7, r3 6cb0: dde8 ble.n 6c84 <_lv_blend_map+0x334> 6cb2: e663 b.n 697c <_lv_blend_map+0x2c> if(opa > LV_OPA_MAX) { 6cb4: 465b mov r3, fp 6cb6: 2bfa cmp r3, #250 ; 0xfa 6cb8: d824 bhi.n 6d04 <_lv_blend_map+0x3b4> for(y = 0; y < draw_area_h; y++) { 6cba: 9b0b ldr r3, [sp, #44] ; 0x2c 6cbc: 2b00 cmp r3, #0 6cbe: dc00 bgt.n 6cc2 <_lv_blend_map+0x372> 6cc0: e65c b.n 697c <_lv_blend_map+0x2c> disp_buf_first += disp_w; 6cc2: 4643 mov r3, r8 6cc4: 005b lsls r3, r3, #1 6cc6: 930a str r3, [sp, #40] ; 0x28 map_buf_first += map_w; 6cc8: 0073 lsls r3, r6, #1 6cca: 930d str r3, [sp, #52] ; 0x34 6ccc: 9b0c ldr r3, [sp, #48] ; 0x30 6cce: 005b lsls r3, r3, #1 6cd0: 930c str r3, [sp, #48] ; 0x30 6cd2: 2300 movs r3, #0 6cd4: 9307 str r3, [sp, #28] 6cd6: 27ff movs r7, #255 ; 0xff 6cd8: 465b mov r3, fp 6cda: 1aff subs r7, r7, r3 6cdc: 231f movs r3, #31 6cde: 469c mov ip, r3 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 6ce0: 3320 adds r3, #32 6ce2: 4699 mov r9, r3 disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa); 6ce4: 4b06 ldr r3, [pc, #24] ; (6d00 <_lv_blend_map+0x3b0>) 6ce6: 469a mov sl, r3 6ce8: 46b8 mov r8, r7 6cea: 465f mov r7, fp 6cec: e03b b.n 6d66 <_lv_blend_map+0x416> 6cee: 46c0 nop ; (mov r8, r8) 6cf0: 0000fc0f .word 0x0000fc0f 6cf4: 000043b1 .word 0x000043b1 6cf8: 0000f709 .word 0x0000f709 6cfc: 0000fbf3 .word 0x0000fbf3 6d00: fffff81f .word 0xfffff81f for(y = 0; y < draw_area_h; y++) { 6d04: 9b0b ldr r3, [sp, #44] ; 0x2c 6d06: 2b00 cmp r3, #0 6d08: dc00 bgt.n 6d0c <_lv_blend_map+0x3bc> 6d0a: e637 b.n 697c <_lv_blend_map+0x2c> _lv_memcpy(disp_buf_first, map_buf_first, draw_area_w * sizeof(lv_color_t)); 6d0c: 9b0c ldr r3, [sp, #48] ; 0x30 6d0e: 005c lsls r4, r3, #1 disp_buf_first += disp_w; 6d10: 4643 mov r3, r8 6d12: 005b lsls r3, r3, #1 6d14: 4698 mov r8, r3 map_buf_first += map_w; 6d16: 0076 lsls r6, r6, #1 6d18: 2500 movs r5, #0 _lv_memcpy(disp_buf_first, map_buf_first, draw_area_w * sizeof(lv_color_t)); 6d1a: 4f80 ldr r7, [pc, #512] ; (6f1c <_lv_blend_map+0x5cc>) 6d1c: 0022 movs r2, r4 6d1e: 9b09 ldr r3, [sp, #36] ; 0x24 6d20: 469a mov sl, r3 6d22: 0019 movs r1, r3 6d24: 9b08 ldr r3, [sp, #32] 6d26: 4699 mov r9, r3 6d28: 0018 movs r0, r3 6d2a: 47b8 blx r7 disp_buf_first += disp_w; 6d2c: 464b mov r3, r9 6d2e: 4443 add r3, r8 6d30: 9308 str r3, [sp, #32] map_buf_first += map_w; 6d32: 46d4 mov ip, sl 6d34: 44b4 add ip, r6 6d36: 4663 mov r3, ip 6d38: 9309 str r3, [sp, #36] ; 0x24 for(y = 0; y < draw_area_h; y++) { 6d3a: 3501 adds r5, #1 6d3c: 9b0b ldr r3, [sp, #44] ; 0x2c 6d3e: 42ab cmp r3, r5 6d40: dcec bgt.n 6d1c <_lv_blend_map+0x3cc> 6d42: e61b b.n 697c <_lv_blend_map+0x2c> disp_buf_first += disp_w; 6d44: 9b08 ldr r3, [sp, #32] 6d46: 9a0a ldr r2, [sp, #40] ; 0x28 6d48: 4693 mov fp, r2 6d4a: 445b add r3, fp 6d4c: 9308 str r3, [sp, #32] map_buf_first += map_w; 6d4e: 9b09 ldr r3, [sp, #36] ; 0x24 6d50: 9a0d ldr r2, [sp, #52] ; 0x34 6d52: 4693 mov fp, r2 6d54: 445b add r3, fp 6d56: 9309 str r3, [sp, #36] ; 0x24 for(y = 0; y < draw_area_h; y++) { 6d58: 9b07 ldr r3, [sp, #28] 6d5a: 3301 adds r3, #1 6d5c: 9307 str r3, [sp, #28] 6d5e: 9a0b ldr r2, [sp, #44] ; 0x2c 6d60: 429a cmp r2, r3 6d62: dc00 bgt.n 6d66 <_lv_blend_map+0x416> 6d64: e60a b.n 697c <_lv_blend_map+0x2c> for(x = 0; x < draw_area_w; x++) { 6d66: 9b06 ldr r3, [sp, #24] 6d68: 2b00 cmp r3, #0 6d6a: ddeb ble.n 6d44 <_lv_blend_map+0x3f4> 6d6c: 9b09 ldr r3, [sp, #36] ; 0x24 6d6e: 001e movs r6, r3 6d70: 9d08 ldr r5, [sp, #32] 6d72: 9a0c ldr r2, [sp, #48] ; 0x30 6d74: 4693 mov fp, r2 6d76: 445b add r3, fp 6d78: 469b mov fp, r3 6d7a: 4641 mov r1, r8 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 6d7c: 7873 ldrb r3, [r6, #1] 6d7e: 08db lsrs r3, r3, #3 6d80: 437b muls r3, r7 6d82: 786a ldrb r2, [r5, #1] 6d84: 08d2 lsrs r2, r2, #3 6d86: 434a muls r2, r1 6d88: 189a adds r2, r3, r2 6d8a: 0213 lsls r3, r2, #8 6d8c: 189b adds r3, r3, r2 6d8e: 01db lsls r3, r3, #7 6d90: 189b adds r3, r3, r2 6d92: 0ddb lsrs r3, r3, #23 6d94: 4662 mov r2, ip 6d96: 4013 ands r3, r2 6d98: 9305 str r3, [sp, #20] LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 6d9a: 8832 ldrh r2, [r6, #0] 6d9c: 0552 lsls r2, r2, #21 6d9e: 0e92 lsrs r2, r2, #26 6da0: 437a muls r2, r7 6da2: 882c ldrh r4, [r5, #0] 6da4: 0564 lsls r4, r4, #21 6da6: 0ea4 lsrs r4, r4, #26 6da8: 434c muls r4, r1 6daa: 1914 adds r4, r2, r4 6dac: 0222 lsls r2, r4, #8 6dae: 1912 adds r2, r2, r4 6db0: 01d2 lsls r2, r2, #7 6db2: 1912 adds r2, r2, r4 6db4: 0dd2 lsrs r2, r2, #23 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 6db6: 7834 ldrb r4, [r6, #0] 6db8: 06e4 lsls r4, r4, #27 6dba: 0ee4 lsrs r4, r4, #27 6dbc: 437c muls r4, r7 6dbe: 7828 ldrb r0, [r5, #0] 6dc0: 4680 mov r8, r0 6dc2: 06c0 lsls r0, r0, #27 6dc4: 0ec0 lsrs r0, r0, #27 6dc6: 4348 muls r0, r1 6dc8: 1820 adds r0, r4, r0 6dca: 0204 lsls r4, r0, #8 6dcc: 1824 adds r4, r4, r0 6dce: 01e4 lsls r4, r4, #7 6dd0: 1824 adds r4, r4, r0 6dd2: 0de4 lsrs r4, r4, #23 disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa); 6dd4: 4660 mov r0, ip 6dd6: 4004 ands r4, r0 6dd8: 4640 mov r0, r8 6dda: 4663 mov r3, ip 6ddc: 4398 bics r0, r3 6dde: 4304 orrs r4, r0 6de0: 702c strb r4, [r5, #0] 6de2: 464b mov r3, r9 6de4: 401a ands r2, r3 6de6: 0154 lsls r4, r2, #5 6de8: 882a ldrh r2, [r5, #0] 6dea: 4653 mov r3, sl 6dec: 401a ands r2, r3 6dee: 4322 orrs r2, r4 6df0: 802a strh r2, [r5, #0] 6df2: 9b05 ldr r3, [sp, #20] 6df4: 00db lsls r3, r3, #3 6df6: 0a12 lsrs r2, r2, #8 6df8: 2007 movs r0, #7 6dfa: 4002 ands r2, r0 6dfc: 4313 orrs r3, r2 6dfe: 706b strb r3, [r5, #1] 6e00: 3602 adds r6, #2 6e02: 3502 adds r5, #2 for(x = 0; x < draw_area_w; x++) { 6e04: 455e cmp r6, fp 6e06: d1b9 bne.n 6d7c <_lv_blend_map+0x42c> 6e08: 4688 mov r8, r1 6e0a: e79b b.n 6d44 <_lv_blend_map+0x3f4> int32_t x_end4 = draw_area_w - 4; 6e0c: 9b0c ldr r3, [sp, #48] ; 0x30 6e0e: 3b04 subs r3, #4 6e10: 9307 str r3, [sp, #28] for(y = 0; y < draw_area_h; y++) { 6e12: 9b0b ldr r3, [sp, #44] ; 0x2c 6e14: 2b00 cmp r3, #0 6e16: dc00 bgt.n 6e1a <_lv_blend_map+0x4ca> 6e18: e5b0 b.n 697c <_lv_blend_map+0x2c> disp_buf_first += disp_w; 6e1a: 4643 mov r3, r8 6e1c: 005b lsls r3, r3, #1 6e1e: 930e str r3, [sp, #56] ; 0x38 map_buf_first += map_w; 6e20: 0073 lsls r3, r6, #1 6e22: 930f str r3, [sp, #60] ; 0x3c 6e24: 950a str r5, [sp, #40] ; 0x28 6e26: 2300 movs r3, #0 6e28: 930d str r3, [sp, #52] ; 0x34 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 6e2a: 331f adds r3, #31 6e2c: 469b mov fp, r3 6e2e: 9b06 ldr r3, [sp, #24] 6e30: 4699 mov r9, r3 6e32: e3a6 b.n 7582 <_lv_blend_map+0xc32> MAP_NORMAL_MASK_PX(x) 6e34: 8803 ldrh r3, [r0, #0] 6e36: 800b strh r3, [r1, #0] 6e38: 3701 adds r7, #1 for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 6e3a: 3601 adds r6, #1 6e3c: 9b05 ldr r3, [sp, #20] 6e3e: 42b3 cmp r3, r6 6e40: dc00 bgt.n 6e44 <_lv_blend_map+0x4f4> 6e42: e381 b.n 7548 <_lv_blend_map+0xbf8> 6e44: 3002 adds r0, #2 6e46: 3102 adds r1, #2 6e48: 2303 movs r3, #3 6e4a: 421f tst r7, r3 6e4c: d053 beq.n 6ef6 <_lv_blend_map+0x5a6> MAP_NORMAL_MASK_PX(x) 6e4e: 783d ldrb r5, [r7, #0] 6e50: 2d00 cmp r5, #0 6e52: d0f1 beq.n 6e38 <_lv_blend_map+0x4e8> 6e54: 2dff cmp r5, #255 ; 0xff 6e56: d0ed beq.n 6e34 <_lv_blend_map+0x4e4> 6e58: 23ff movs r3, #255 ; 0xff 6e5a: 1b5b subs r3, r3, r5 6e5c: 4699 mov r9, r3 6e5e: 7843 ldrb r3, [r0, #1] 6e60: 08db lsrs r3, r3, #3 6e62: 436b muls r3, r5 6e64: 784a ldrb r2, [r1, #1] 6e66: 08d2 lsrs r2, r2, #3 6e68: 464c mov r4, r9 6e6a: 4362 muls r2, r4 6e6c: 189a adds r2, r3, r2 6e6e: 0213 lsls r3, r2, #8 6e70: 189b adds r3, r3, r2 6e72: 01db lsls r3, r3, #7 6e74: 189b adds r3, r3, r2 6e76: 0ddb lsrs r3, r3, #23 6e78: 465a mov r2, fp 6e7a: 4013 ands r3, r2 6e7c: 9306 str r3, [sp, #24] LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 6e7e: 8802 ldrh r2, [r0, #0] 6e80: 0552 lsls r2, r2, #21 6e82: 0e92 lsrs r2, r2, #26 6e84: 436a muls r2, r5 6e86: 4694 mov ip, r2 6e88: 880a ldrh r2, [r1, #0] 6e8a: 0552 lsls r2, r2, #21 6e8c: 0e92 lsrs r2, r2, #26 6e8e: 4362 muls r2, r4 6e90: 4462 add r2, ip 6e92: 0214 lsls r4, r2, #8 6e94: 46a4 mov ip, r4 6e96: 4494 add ip, r2 6e98: 4664 mov r4, ip 6e9a: 01e4 lsls r4, r4, #7 6e9c: 46a4 mov ip, r4 6e9e: 4462 add r2, ip 6ea0: 0dd2 lsrs r2, r2, #23 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 6ea2: 7804 ldrb r4, [r0, #0] 6ea4: 06e4 lsls r4, r4, #27 6ea6: 0ee4 lsrs r4, r4, #27 6ea8: 4365 muls r5, r4 6eaa: 780c ldrb r4, [r1, #0] 6eac: 46a4 mov ip, r4 6eae: 06e4 lsls r4, r4, #27 6eb0: 0ee4 lsrs r4, r4, #27 6eb2: 46a0 mov r8, r4 6eb4: 464c mov r4, r9 6eb6: 4643 mov r3, r8 6eb8: 435c muls r4, r3 6eba: 46a0 mov r8, r4 6ebc: 44a8 add r8, r5 6ebe: 4643 mov r3, r8 6ec0: 021d lsls r5, r3, #8 6ec2: 4445 add r5, r8 6ec4: 01ed lsls r5, r5, #7 6ec6: 4445 add r5, r8 6ec8: 0ded lsrs r5, r5, #23 6eca: 465b mov r3, fp 6ecc: 401d ands r5, r3 6ece: 4664 mov r4, ip 6ed0: 439c bics r4, r3 6ed2: 4325 orrs r5, r4 6ed4: 700d strb r5, [r1, #0] 6ed6: 233f movs r3, #63 ; 0x3f 6ed8: 401a ands r2, r3 6eda: 0155 lsls r5, r2, #5 6edc: 880a ldrh r2, [r1, #0] 6ede: 4653 mov r3, sl 6ee0: 401a ands r2, r3 6ee2: 432a orrs r2, r5 6ee4: 800a strh r2, [r1, #0] 6ee6: 9b06 ldr r3, [sp, #24] 6ee8: 00db lsls r3, r3, #3 6eea: 0a12 lsrs r2, r2, #8 6eec: 2407 movs r4, #7 6eee: 4022 ands r2, r4 6ef0: 4313 orrs r3, r2 6ef2: 704b strb r3, [r1, #1] 6ef4: e7a0 b.n 6e38 <_lv_blend_map+0x4e8> 6ef6: 9b05 ldr r3, [sp, #20] 6ef8: 4699 mov r9, r3 for(; x < x_end4; x += 4) { 6efa: 9b07 ldr r3, [sp, #28] 6efc: 42b3 cmp r3, r6 6efe: dc00 bgt.n 6f02 <_lv_blend_map+0x5b2> 6f00: e319 b.n 7536 <_lv_blend_map+0xbe6> 6f02: 0070 lsls r0, r6, #1 6f04: 9b09 ldr r3, [sp, #36] ; 0x24 6f06: 181c adds r4, r3, r0 6f08: 9b08 ldr r3, [sp, #32] 6f0a: 469c mov ip, r3 6f0c: 4460 add r0, ip MAP_NORMAL_MASK_PX(x + 3) 6f0e: 4b04 ldr r3, [pc, #16] ; (6f20 <_lv_blend_map+0x5d0>) 6f10: 469a mov sl, r3 6f12: 464b mov r3, r9 6f14: 9306 str r3, [sp, #24] 6f16: 9605 str r6, [sp, #20] 6f18: e016 b.n 6f48 <_lv_blend_map+0x5f8> 6f1a: 46c0 nop ; (mov r8, r8) 6f1c: 00010c8d .word 0x00010c8d 6f20: fffff81f .word 0xfffff81f disp_buf_first[x] = map_buf_first[x]; 6f24: 8823 ldrh r3, [r4, #0] 6f26: 8003 strh r3, [r0, #0] disp_buf_first[x + 1] = map_buf_first[x + 1]; 6f28: 8863 ldrh r3, [r4, #2] 6f2a: 8043 strh r3, [r0, #2] disp_buf_first[x + 2] = map_buf_first[x + 2]; 6f2c: 88a3 ldrh r3, [r4, #4] 6f2e: 8083 strh r3, [r0, #4] disp_buf_first[x + 3] = map_buf_first[x + 3]; 6f30: 88e3 ldrh r3, [r4, #6] 6f32: 80c3 strh r3, [r0, #6] mask32++; 6f34: 3704 adds r7, #4 for(; x < x_end4; x += 4) { 6f36: 9a05 ldr r2, [sp, #20] 6f38: 3204 adds r2, #4 6f3a: 9205 str r2, [sp, #20] 6f3c: 3408 adds r4, #8 6f3e: 3008 adds r0, #8 6f40: 9b07 ldr r3, [sp, #28] 6f42: 4293 cmp r3, r2 6f44: dc00 bgt.n 6f48 <_lv_blend_map+0x5f8> 6f46: e14b b.n 71e0 <_lv_blend_map+0x890> if(*mask32) { 6f48: 683b ldr r3, [r7, #0] 6f4a: 2b00 cmp r3, #0 6f4c: d0f2 beq.n 6f34 <_lv_blend_map+0x5e4> if((*mask32) == 0xFFFFFFFF) { 6f4e: 3301 adds r3, #1 6f50: d0e8 beq.n 6f24 <_lv_blend_map+0x5d4> MAP_NORMAL_MASK_PX(x) 6f52: 7839 ldrb r1, [r7, #0] 6f54: 2900 cmp r1, #0 6f56: d049 beq.n 6fec <_lv_blend_map+0x69c> 6f58: 29ff cmp r1, #255 ; 0xff 6f5a: d100 bne.n 6f5e <_lv_blend_map+0x60e> 6f5c: e134 b.n 71c8 <_lv_blend_map+0x878> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 6f5e: 23ff movs r3, #255 ; 0xff 6f60: 1a5d subs r5, r3, r1 6f62: 7862 ldrb r2, [r4, #1] 6f64: 08d2 lsrs r2, r2, #3 6f66: 0013 movs r3, r2 6f68: 434b muls r3, r1 6f6a: 7842 ldrb r2, [r0, #1] 6f6c: 08d2 lsrs r2, r2, #3 6f6e: 436a muls r2, r5 6f70: 189a adds r2, r3, r2 6f72: 0213 lsls r3, r2, #8 6f74: 189b adds r3, r3, r2 6f76: 01db lsls r3, r3, #7 6f78: 189b adds r3, r3, r2 6f7a: 0ddb lsrs r3, r3, #23 6f7c: 465a mov r2, fp 6f7e: 4013 ands r3, r2 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 6f80: 8822 ldrh r2, [r4, #0] 6f82: 0552 lsls r2, r2, #21 6f84: 0e92 lsrs r2, r2, #26 6f86: 434a muls r2, r1 6f88: 4694 mov ip, r2 6f8a: 8802 ldrh r2, [r0, #0] 6f8c: 0552 lsls r2, r2, #21 6f8e: 0e92 lsrs r2, r2, #26 6f90: 436a muls r2, r5 6f92: 4462 add r2, ip 6f94: 0216 lsls r6, r2, #8 6f96: 46b4 mov ip, r6 6f98: 4494 add ip, r2 6f9a: 4666 mov r6, ip 6f9c: 01f6 lsls r6, r6, #7 6f9e: 46b4 mov ip, r6 6fa0: 4462 add r2, ip 6fa2: 0dd2 lsrs r2, r2, #23 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 6fa4: 7826 ldrb r6, [r4, #0] 6fa6: 06f6 lsls r6, r6, #27 6fa8: 0ef6 lsrs r6, r6, #27 6faa: 4371 muls r1, r6 6fac: 7806 ldrb r6, [r0, #0] 6fae: 46b4 mov ip, r6 6fb0: 06f6 lsls r6, r6, #27 6fb2: 0ef6 lsrs r6, r6, #27 6fb4: 4375 muls r5, r6 6fb6: 194d adds r5, r1, r5 6fb8: 0229 lsls r1, r5, #8 6fba: 1949 adds r1, r1, r5 6fbc: 01c9 lsls r1, r1, #7 6fbe: 1949 adds r1, r1, r5 6fc0: 0dc9 lsrs r1, r1, #23 6fc2: 465d mov r5, fp 6fc4: 4029 ands r1, r5 6fc6: 4665 mov r5, ip 6fc8: 465e mov r6, fp 6fca: 43b5 bics r5, r6 6fcc: 4329 orrs r1, r5 6fce: 7001 strb r1, [r0, #0] 6fd0: 213f movs r1, #63 ; 0x3f 6fd2: 400a ands r2, r1 6fd4: 0151 lsls r1, r2, #5 6fd6: 8802 ldrh r2, [r0, #0] 6fd8: 4655 mov r5, sl 6fda: 402a ands r2, r5 6fdc: 430a orrs r2, r1 6fde: 8002 strh r2, [r0, #0] 6fe0: 00db lsls r3, r3, #3 6fe2: 0a12 lsrs r2, r2, #8 6fe4: 2107 movs r1, #7 6fe6: 400a ands r2, r1 6fe8: 4313 orrs r3, r2 6fea: 7043 strb r3, [r0, #1] MAP_NORMAL_MASK_PX(x + 1) 6fec: 7879 ldrb r1, [r7, #1] 6fee: 2900 cmp r1, #0 6ff0: d04b beq.n 708a <_lv_blend_map+0x73a> 6ff2: 29ff cmp r1, #255 ; 0xff 6ff4: d100 bne.n 6ff8 <_lv_blend_map+0x6a8> 6ff6: e0ea b.n 71ce <_lv_blend_map+0x87e> 6ff8: 1c83 adds r3, r0, #2 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 6ffa: 22ff movs r2, #255 ; 0xff 6ffc: 1a55 subs r5, r2, r1 6ffe: 78e2 ldrb r2, [r4, #3] 7000: 08d2 lsrs r2, r2, #3 7002: 434a muls r2, r1 7004: 4698 mov r8, r3 7006: 78c3 ldrb r3, [r0, #3] 7008: 08db lsrs r3, r3, #3 700a: 436b muls r3, r5 700c: 18d2 adds r2, r2, r3 700e: 0213 lsls r3, r2, #8 7010: 189b adds r3, r3, r2 7012: 01db lsls r3, r3, #7 7014: 189b adds r3, r3, r2 7016: 0ddb lsrs r3, r3, #23 7018: 465a mov r2, fp 701a: 4013 ands r3, r2 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 701c: 8862 ldrh r2, [r4, #2] 701e: 0552 lsls r2, r2, #21 7020: 0e92 lsrs r2, r2, #26 7022: 434a muls r2, r1 7024: 4694 mov ip, r2 7026: 8842 ldrh r2, [r0, #2] 7028: 0552 lsls r2, r2, #21 702a: 0e92 lsrs r2, r2, #26 702c: 436a muls r2, r5 702e: 4462 add r2, ip 7030: 0216 lsls r6, r2, #8 7032: 46b4 mov ip, r6 7034: 4494 add ip, r2 7036: 4666 mov r6, ip 7038: 01f6 lsls r6, r6, #7 703a: 46b4 mov ip, r6 703c: 4462 add r2, ip 703e: 0dd2 lsrs r2, r2, #23 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 7040: 78a6 ldrb r6, [r4, #2] 7042: 06f6 lsls r6, r6, #27 7044: 0ef6 lsrs r6, r6, #27 7046: 4371 muls r1, r6 7048: 7886 ldrb r6, [r0, #2] 704a: 46b4 mov ip, r6 704c: 06f6 lsls r6, r6, #27 704e: 0ef6 lsrs r6, r6, #27 7050: 4375 muls r5, r6 7052: 194d adds r5, r1, r5 7054: 0229 lsls r1, r5, #8 7056: 1949 adds r1, r1, r5 7058: 01c9 lsls r1, r1, #7 705a: 1949 adds r1, r1, r5 705c: 0dc9 lsrs r1, r1, #23 705e: 465d mov r5, fp 7060: 4029 ands r1, r5 7062: 4665 mov r5, ip 7064: 465e mov r6, fp 7066: 43b5 bics r5, r6 7068: 4329 orrs r1, r5 706a: 7081 strb r1, [r0, #2] 706c: 213f movs r1, #63 ; 0x3f 706e: 400a ands r2, r1 7070: 0151 lsls r1, r2, #5 7072: 8842 ldrh r2, [r0, #2] 7074: 4655 mov r5, sl 7076: 402a ands r2, r5 7078: 430a orrs r2, r1 707a: 8042 strh r2, [r0, #2] 707c: 00db lsls r3, r3, #3 707e: 0a12 lsrs r2, r2, #8 7080: 2107 movs r1, #7 7082: 400a ands r2, r1 7084: 4313 orrs r3, r2 7086: 4642 mov r2, r8 7088: 7053 strb r3, [r2, #1] MAP_NORMAL_MASK_PX(x + 2) 708a: 78b9 ldrb r1, [r7, #2] 708c: 2900 cmp r1, #0 708e: d04b beq.n 7128 <_lv_blend_map+0x7d8> 7090: 29ff cmp r1, #255 ; 0xff 7092: d100 bne.n 7096 <_lv_blend_map+0x746> 7094: e09e b.n 71d4 <_lv_blend_map+0x884> 7096: 1d03 adds r3, r0, #4 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 7098: 22ff movs r2, #255 ; 0xff 709a: 1a55 subs r5, r2, r1 709c: 7962 ldrb r2, [r4, #5] 709e: 08d2 lsrs r2, r2, #3 70a0: 434a muls r2, r1 70a2: 4698 mov r8, r3 70a4: 7943 ldrb r3, [r0, #5] 70a6: 08db lsrs r3, r3, #3 70a8: 436b muls r3, r5 70aa: 18d2 adds r2, r2, r3 70ac: 0213 lsls r3, r2, #8 70ae: 189b adds r3, r3, r2 70b0: 01db lsls r3, r3, #7 70b2: 189b adds r3, r3, r2 70b4: 0ddb lsrs r3, r3, #23 70b6: 465a mov r2, fp 70b8: 4013 ands r3, r2 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 70ba: 88a2 ldrh r2, [r4, #4] 70bc: 0552 lsls r2, r2, #21 70be: 0e92 lsrs r2, r2, #26 70c0: 434a muls r2, r1 70c2: 4694 mov ip, r2 70c4: 8882 ldrh r2, [r0, #4] 70c6: 0552 lsls r2, r2, #21 70c8: 0e92 lsrs r2, r2, #26 70ca: 436a muls r2, r5 70cc: 4462 add r2, ip 70ce: 0216 lsls r6, r2, #8 70d0: 46b4 mov ip, r6 70d2: 4494 add ip, r2 70d4: 4666 mov r6, ip 70d6: 01f6 lsls r6, r6, #7 70d8: 46b4 mov ip, r6 70da: 4462 add r2, ip 70dc: 0dd2 lsrs r2, r2, #23 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 70de: 7926 ldrb r6, [r4, #4] 70e0: 06f6 lsls r6, r6, #27 70e2: 0ef6 lsrs r6, r6, #27 70e4: 4371 muls r1, r6 70e6: 7906 ldrb r6, [r0, #4] 70e8: 46b4 mov ip, r6 70ea: 06f6 lsls r6, r6, #27 70ec: 0ef6 lsrs r6, r6, #27 70ee: 4375 muls r5, r6 70f0: 194d adds r5, r1, r5 70f2: 0229 lsls r1, r5, #8 70f4: 1949 adds r1, r1, r5 70f6: 01c9 lsls r1, r1, #7 70f8: 1949 adds r1, r1, r5 70fa: 0dc9 lsrs r1, r1, #23 70fc: 465d mov r5, fp 70fe: 4029 ands r1, r5 7100: 4665 mov r5, ip 7102: 465e mov r6, fp 7104: 43b5 bics r5, r6 7106: 4329 orrs r1, r5 7108: 7101 strb r1, [r0, #4] 710a: 213f movs r1, #63 ; 0x3f 710c: 400a ands r2, r1 710e: 0151 lsls r1, r2, #5 7110: 8882 ldrh r2, [r0, #4] 7112: 4655 mov r5, sl 7114: 402a ands r2, r5 7116: 430a orrs r2, r1 7118: 8082 strh r2, [r0, #4] 711a: 00db lsls r3, r3, #3 711c: 0a12 lsrs r2, r2, #8 711e: 2107 movs r1, #7 7120: 400a ands r2, r1 7122: 4313 orrs r3, r2 7124: 4642 mov r2, r8 7126: 7053 strb r3, [r2, #1] MAP_NORMAL_MASK_PX(x + 3) 7128: 78f9 ldrb r1, [r7, #3] 712a: 2900 cmp r1, #0 712c: d100 bne.n 7130 <_lv_blend_map+0x7e0> 712e: e701 b.n 6f34 <_lv_blend_map+0x5e4> 7130: 29ff cmp r1, #255 ; 0xff 7132: d052 beq.n 71da <_lv_blend_map+0x88a> 7134: 1d83 adds r3, r0, #6 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 7136: 22ff movs r2, #255 ; 0xff 7138: 1a55 subs r5, r2, r1 713a: 79e2 ldrb r2, [r4, #7] 713c: 08d2 lsrs r2, r2, #3 713e: 434a muls r2, r1 7140: 4698 mov r8, r3 7142: 79c3 ldrb r3, [r0, #7] 7144: 08db lsrs r3, r3, #3 7146: 436b muls r3, r5 7148: 18d2 adds r2, r2, r3 714a: 0213 lsls r3, r2, #8 714c: 189b adds r3, r3, r2 714e: 01db lsls r3, r3, #7 7150: 189b adds r3, r3, r2 7152: 0ddb lsrs r3, r3, #23 7154: 465a mov r2, fp 7156: 4013 ands r3, r2 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 7158: 88e2 ldrh r2, [r4, #6] 715a: 0552 lsls r2, r2, #21 715c: 0e92 lsrs r2, r2, #26 715e: 434a muls r2, r1 7160: 4694 mov ip, r2 7162: 88c2 ldrh r2, [r0, #6] 7164: 0552 lsls r2, r2, #21 7166: 0e92 lsrs r2, r2, #26 7168: 436a muls r2, r5 716a: 4462 add r2, ip 716c: 0216 lsls r6, r2, #8 716e: 46b4 mov ip, r6 7170: 4494 add ip, r2 7172: 4666 mov r6, ip 7174: 01f6 lsls r6, r6, #7 7176: 46b4 mov ip, r6 7178: 4462 add r2, ip 717a: 0dd2 lsrs r2, r2, #23 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 717c: 79a6 ldrb r6, [r4, #6] 717e: 06f6 lsls r6, r6, #27 7180: 0ef6 lsrs r6, r6, #27 7182: 4371 muls r1, r6 7184: 7986 ldrb r6, [r0, #6] 7186: 46b4 mov ip, r6 7188: 06f6 lsls r6, r6, #27 718a: 0ef6 lsrs r6, r6, #27 718c: 4375 muls r5, r6 718e: 194d adds r5, r1, r5 7190: 0229 lsls r1, r5, #8 7192: 1949 adds r1, r1, r5 7194: 01c9 lsls r1, r1, #7 7196: 1949 adds r1, r1, r5 7198: 0dc9 lsrs r1, r1, #23 719a: 465d mov r5, fp 719c: 4029 ands r1, r5 719e: 4665 mov r5, ip 71a0: 465e mov r6, fp 71a2: 43b5 bics r5, r6 71a4: 4329 orrs r1, r5 71a6: 7181 strb r1, [r0, #6] 71a8: 213f movs r1, #63 ; 0x3f 71aa: 400a ands r2, r1 71ac: 0151 lsls r1, r2, #5 71ae: 88c2 ldrh r2, [r0, #6] 71b0: 4655 mov r5, sl 71b2: 402a ands r2, r5 71b4: 430a orrs r2, r1 71b6: 80c2 strh r2, [r0, #6] 71b8: 00db lsls r3, r3, #3 71ba: 0a12 lsrs r2, r2, #8 71bc: 2107 movs r1, #7 71be: 400a ands r2, r1 71c0: 4313 orrs r3, r2 71c2: 4642 mov r2, r8 71c4: 7053 strb r3, [r2, #1] 71c6: e6b5 b.n 6f34 <_lv_blend_map+0x5e4> MAP_NORMAL_MASK_PX(x) 71c8: 8823 ldrh r3, [r4, #0] 71ca: 8003 strh r3, [r0, #0] 71cc: e70e b.n 6fec <_lv_blend_map+0x69c> MAP_NORMAL_MASK_PX(x + 1) 71ce: 8863 ldrh r3, [r4, #2] 71d0: 8043 strh r3, [r0, #2] 71d2: e75a b.n 708a <_lv_blend_map+0x73a> MAP_NORMAL_MASK_PX(x + 2) 71d4: 88a3 ldrh r3, [r4, #4] 71d6: 8083 strh r3, [r0, #4] 71d8: e7a6 b.n 7128 <_lv_blend_map+0x7d8> MAP_NORMAL_MASK_PX(x + 3) 71da: 88e3 ldrh r3, [r4, #6] 71dc: 80c3 strh r3, [r0, #6] 71de: e6a9 b.n 6f34 <_lv_blend_map+0x5e4> 71e0: 9b06 ldr r3, [sp, #24] 71e2: 4699 mov r9, r3 71e4: 0016 movs r6, r2 for(; x < draw_area_w ; x++) { 71e6: 4293 cmp r3, r2 71e8: dc00 bgt.n 71ec <_lv_blend_map+0x89c> 71ea: e1b3 b.n 7554 <_lv_blend_map+0xc04> mask32++; 71ec: 003b movs r3, r7 71ee: 0077 lsls r7, r6, #1 71f0: 9a09 ldr r2, [sp, #36] ; 0x24 71f2: 4690 mov r8, r2 71f4: 44b8 add r8, r7 71f6: 9a08 ldr r2, [sp, #32] 71f8: 4694 mov ip, r2 71fa: 4467 add r7, ip MAP_NORMAL_MASK_PX(x) 71fc: 1b9b subs r3, r3, r6 71fe: 9305 str r3, [sp, #20] 7200: 4bce ldr r3, [pc, #824] ; (753c <_lv_blend_map+0xbec>) 7202: 469a mov sl, r3 7204: 2307 movs r3, #7 7206: 469c mov ip, r3 7208: 4644 mov r4, r8 720a: e007 b.n 721c <_lv_blend_map+0x8cc> 720c: 8823 ldrh r3, [r4, #0] 720e: 803b strh r3, [r7, #0] for(; x < draw_area_w ; x++) { 7210: 3601 adds r6, #1 7212: 3402 adds r4, #2 7214: 3702 adds r7, #2 7216: 45b1 cmp r9, r6 7218: dc00 bgt.n 721c <_lv_blend_map+0x8cc> 721a: e19b b.n 7554 <_lv_blend_map+0xc04> MAP_NORMAL_MASK_PX(x) 721c: 9b05 ldr r3, [sp, #20] 721e: 5d99 ldrb r1, [r3, r6] 7220: 2900 cmp r1, #0 7222: d0f5 beq.n 7210 <_lv_blend_map+0x8c0> 7224: 29ff cmp r1, #255 ; 0xff 7226: d0f1 beq.n 720c <_lv_blend_map+0x8bc> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 7228: 23ff movs r3, #255 ; 0xff 722a: 1a58 subs r0, r3, r1 722c: 7862 ldrb r2, [r4, #1] 722e: 08d2 lsrs r2, r2, #3 7230: 434a muls r2, r1 7232: 0015 movs r5, r2 7234: 787a ldrb r2, [r7, #1] 7236: 08d2 lsrs r2, r2, #3 7238: 4342 muls r2, r0 723a: 18ad adds r5, r5, r2 723c: 022b lsls r3, r5, #8 723e: 195b adds r3, r3, r5 7240: 01db lsls r3, r3, #7 7242: 195b adds r3, r3, r5 7244: 0ddb lsrs r3, r3, #23 7246: 465a mov r2, fp 7248: 4013 ands r3, r2 724a: 9306 str r3, [sp, #24] LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 724c: 8825 ldrh r5, [r4, #0] 724e: 056d lsls r5, r5, #21 7250: 0ead lsrs r5, r5, #26 7252: 434d muls r5, r1 7254: 883a ldrh r2, [r7, #0] 7256: 0552 lsls r2, r2, #21 7258: 0e92 lsrs r2, r2, #26 725a: 4342 muls r2, r0 725c: 18ad adds r5, r5, r2 725e: 022a lsls r2, r5, #8 7260: 1952 adds r2, r2, r5 7262: 01d2 lsls r2, r2, #7 7264: 1952 adds r2, r2, r5 7266: 0dd2 lsrs r2, r2, #23 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 7268: 7825 ldrb r5, [r4, #0] 726a: 06ed lsls r5, r5, #27 726c: 0eed lsrs r5, r5, #27 726e: 4369 muls r1, r5 7270: 783d ldrb r5, [r7, #0] 7272: 06eb lsls r3, r5, #27 7274: 0edb lsrs r3, r3, #27 7276: 4358 muls r0, r3 7278: 1808 adds r0, r1, r0 727a: 0201 lsls r1, r0, #8 727c: 1809 adds r1, r1, r0 727e: 01c9 lsls r1, r1, #7 7280: 1809 adds r1, r1, r0 7282: 0dc9 lsrs r1, r1, #23 7284: 465b mov r3, fp 7286: 4019 ands r1, r3 7288: 439d bics r5, r3 728a: 4329 orrs r1, r5 728c: 7039 strb r1, [r7, #0] 728e: 233f movs r3, #63 ; 0x3f 7290: 401a ands r2, r3 7292: 0151 lsls r1, r2, #5 7294: 883a ldrh r2, [r7, #0] 7296: 4653 mov r3, sl 7298: 401a ands r2, r3 729a: 430a orrs r2, r1 729c: 803a strh r2, [r7, #0] 729e: 9b06 ldr r3, [sp, #24] 72a0: 00db lsls r3, r3, #3 72a2: 0a12 lsrs r2, r2, #8 72a4: 4661 mov r1, ip 72a6: 400a ands r2, r1 72a8: 4313 orrs r3, r2 72aa: 707b strb r3, [r7, #1] 72ac: e7b0 b.n 7210 <_lv_blend_map+0x8c0> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 72ae: 23ff movs r3, #255 ; 0xff 72b0: 1a1d subs r5, r3, r0 72b2: 784b ldrb r3, [r1, #1] 72b4: 08db lsrs r3, r3, #3 72b6: 4343 muls r3, r0 72b8: 7872 ldrb r2, [r6, #1] 72ba: 08d2 lsrs r2, r2, #3 72bc: 436a muls r2, r5 72be: 189a adds r2, r3, r2 72c0: 0213 lsls r3, r2, #8 72c2: 189b adds r3, r3, r2 72c4: 01db lsls r3, r3, #7 72c6: 189b adds r3, r3, r2 72c8: 0ddb lsrs r3, r3, #23 72ca: 4642 mov r2, r8 72cc: 4013 ands r3, r2 72ce: 9305 str r3, [sp, #20] LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 72d0: 880a ldrh r2, [r1, #0] 72d2: 0552 lsls r2, r2, #21 72d4: 0e92 lsrs r2, r2, #26 72d6: 4342 muls r2, r0 72d8: 4691 mov r9, r2 72da: 8832 ldrh r2, [r6, #0] 72dc: 0552 lsls r2, r2, #21 72de: 0e92 lsrs r2, r2, #26 72e0: 436a muls r2, r5 72e2: 444a add r2, r9 72e4: 0213 lsls r3, r2, #8 72e6: 4699 mov r9, r3 72e8: 4491 add r9, r2 72ea: 464b mov r3, r9 72ec: 01db lsls r3, r3, #7 72ee: 4699 mov r9, r3 72f0: 444a add r2, r9 72f2: 0dd2 lsrs r2, r2, #23 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 72f4: 780b ldrb r3, [r1, #0] 72f6: 06db lsls r3, r3, #27 72f8: 0edb lsrs r3, r3, #27 72fa: 4343 muls r3, r0 72fc: 4699 mov r9, r3 72fe: 7833 ldrb r3, [r6, #0] 7300: 469c mov ip, r3 7302: 06db lsls r3, r3, #27 7304: 0edb lsrs r3, r3, #27 7306: 435d muls r5, r3 7308: 44a9 add r9, r5 730a: 464b mov r3, r9 730c: 021d lsls r5, r3, #8 730e: 444d add r5, r9 7310: 01ed lsls r5, r5, #7 7312: 444d add r5, r9 7314: 0ded lsrs r5, r5, #23 disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa_tmp); 7316: 4643 mov r3, r8 7318: 401d ands r5, r3 731a: 4663 mov r3, ip 731c: 4640 mov r0, r8 731e: 4383 bics r3, r0 7320: 431d orrs r5, r3 7322: 7035 strb r5, [r6, #0] 7324: 233f movs r3, #63 ; 0x3f 7326: 401a ands r2, r3 7328: 0155 lsls r5, r2, #5 732a: 8832 ldrh r2, [r6, #0] 732c: 4b83 ldr r3, [pc, #524] ; (753c <_lv_blend_map+0xbec>) 732e: 401a ands r2, r3 7330: 432a orrs r2, r5 7332: 8032 strh r2, [r6, #0] 7334: 9b05 ldr r3, [sp, #20] 7336: 00db lsls r3, r3, #3 7338: 0a12 lsrs r2, r2, #8 733a: 4658 mov r0, fp 733c: 4002 ands r2, r0 733e: 4313 orrs r3, r2 7340: 7073 strb r3, [r6, #1] for(x = 0; x < draw_area_w; x++) { 7342: 3701 adds r7, #1 7344: 3102 adds r1, #2 7346: 3602 adds r6, #2 7348: 9b06 ldr r3, [sp, #24] 734a: 42bb cmp r3, r7 734c: dd09 ble.n 7362 <_lv_blend_map+0xa12> if(mask[x]) { 734e: 5de5 ldrb r5, [r4, r7] 7350: 2d00 cmp r5, #0 7352: d0f6 beq.n 7342 <_lv_blend_map+0x9f2> lv_opa_t opa_tmp = mask[x] >= LV_OPA_MAX ? opa : ((opa * mask[x]) >> 8); 7354: 9807 ldr r0, [sp, #28] 7356: 2df9 cmp r5, #249 ; 0xf9 7358: d8a9 bhi.n 72ae <_lv_blend_map+0x95e> 735a: 9b0a ldr r3, [sp, #40] ; 0x28 735c: 435d muls r5, r3 735e: 0a28 lsrs r0, r5, #8 7360: e7a5 b.n 72ae <_lv_blend_map+0x95e> 7362: 46a1 mov r9, r4 disp_buf_first += disp_w; 7364: 9b08 ldr r3, [sp, #32] 7366: 9a0e ldr r2, [sp, #56] ; 0x38 7368: 4694 mov ip, r2 736a: 4463 add r3, ip 736c: 9308 str r3, [sp, #32] 736e: 9b0c ldr r3, [sp, #48] ; 0x30 7370: 469c mov ip, r3 7372: 44e1 add r9, ip map_buf_first += map_w; 7374: 9b09 ldr r3, [sp, #36] ; 0x24 7376: 9a0f ldr r2, [sp, #60] ; 0x3c 7378: 4694 mov ip, r2 737a: 4463 add r3, ip 737c: 9309 str r3, [sp, #36] ; 0x24 for(y = 0; y < draw_area_h; y++) { 737e: 9b0d ldr r3, [sp, #52] ; 0x34 7380: 3301 adds r3, #1 7382: 930d str r3, [sp, #52] ; 0x34 7384: 9a0b ldr r2, [sp, #44] ; 0x2c 7386: 429a cmp r2, r3 7388: dc01 bgt.n 738e <_lv_blend_map+0xa3e> 738a: f7ff faf7 bl 697c <_lv_blend_map+0x2c> for(x = 0; x < draw_area_w; x++) { 738e: 9b06 ldr r3, [sp, #24] 7390: 2b00 cmp r3, #0 7392: dde7 ble.n 7364 <_lv_blend_map+0xa14> 7394: 9b09 ldr r3, [sp, #36] ; 0x24 7396: 469c mov ip, r3 7398: 9e08 ldr r6, [sp, #32] 739a: 2700 movs r7, #0 disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa_tmp); 739c: 2307 movs r3, #7 739e: 469b mov fp, r3 73a0: 4661 mov r1, ip 73a2: 464c mov r4, r9 73a4: e7d3 b.n 734e <_lv_blend_map+0x9fe> switch(mode) { 73a6: 2e01 cmp r6, #1 73a8: d04d beq.n 7446 <_lv_blend_map+0xaf6> 73aa: 2e02 cmp r6, #2 73ac: d001 beq.n 73b2 <_lv_blend_map+0xa62> 73ae: f7ff fae5 bl 697c <_lv_blend_map+0x2c> blend_fp = color_blend_true_color_subtractive; 73b2: 4b63 ldr r3, [pc, #396] ; (7540 <_lv_blend_map+0xbf0>) 73b4: 930a str r3, [sp, #40] ; 0x28 73b6: 464b mov r3, r9 73b8: 2210 movs r2, #16 73ba: 5e9b ldrsh r3, [r3, r2] 73bc: 001a movs r2, r3 73be: 930b str r3, [sp, #44] ; 0x2c 73c0: 464b mov r3, r9 73c2: 8a9b ldrh r3, [r3, #20] 73c4: 3301 adds r3, #1 73c6: 1a9b subs r3, r3, r2 73c8: b21b sxth r3, r3 73ca: 469c mov ip, r3 73cc: 2300 movs r3, #0 73ce: 5ee2 ldrsh r2, [r4, r3] 73d0: 920d str r2, [sp, #52] ; 0x34 73d2: 88a3 ldrh r3, [r4, #4] 73d4: 3301 adds r3, #1 73d6: 1a9b subs r3, r3, r2 73d8: b219 sxth r1, r3 lv_color_t * disp_buf_tmp = disp_buf + disp_w * draw_area->y1; 73da: 9e08 ldr r6, [sp, #32] 73dc: 4662 mov r2, ip 73de: 4372 muls r2, r6 73e0: 0053 lsls r3, r2, #1 73e2: 9a05 ldr r2, [sp, #20] 73e4: 4690 mov r8, r2 73e6: 4498 add r8, r3 73e8: 4643 mov r3, r8 73ea: 9306 str r3, [sp, #24] const lv_color_t * map_buf_tmp = map_buf + map_w * (draw_area->y1 - (map_area->y1 - disp_area->y1)); 73ec: 2202 movs r2, #2 73ee: 5ea3 ldrsh r3, [r4, r2] 73f0: 464a mov r2, r9 73f2: 2412 movs r4, #18 73f4: 5f14 ldrsh r4, [r2, r4] 73f6: 1b1b subs r3, r3, r4 73f8: 1af3 subs r3, r6, r3 73fa: 434b muls r3, r1 73fc: 005b lsls r3, r3, #1 73fe: 9a07 ldr r2, [sp, #28] 7400: 18d4 adds r4, r2, r3 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 7402: 2f01 cmp r7, #1 7404: d022 beq.n 744c <_lv_blend_map+0xafc> const lv_opa_t * mask_tmp = mask - draw_area->x1; 7406: 4653 mov r3, sl 7408: 1aeb subs r3, r5, r3 740a: 001a movs r2, r3 map_buf_tmp -= draw_area->x1; 740c: 4653 mov r3, sl 740e: 005b lsls r3, r3, #1 7410: 1ae3 subs r3, r4, r3 7412: 4699 mov r9, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 7414: 9b08 ldr r3, [sp, #32] 7416: 9c0c ldr r4, [sp, #48] ; 0x30 7418: 42a3 cmp r3, r4 741a: dd01 ble.n 7420 <_lv_blend_map+0xad0> 741c: f7ff faae bl 697c <_lv_blend_map+0x2c> disp_buf_tmp += disp_w; 7420: 4663 mov r3, ip 7422: 005b lsls r3, r3, #1 7424: 4698 mov r8, r3 map_buf_tmp += map_w; 7426: 004b lsls r3, r1, #1 7428: 9307 str r3, [sp, #28] for(x = draw_area->x1; x <= draw_area->x2; x++) { 742a: af10 add r7, sp, #64 ; 0x40 lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : ((opa * mask_tmp[x]) >> 8); 742c: 465b mov r3, fp 742e: 9305 str r3, [sp, #20] 7430: 3001 adds r0, #1 7432: 9b09 ldr r3, [sp, #36] ; 0x24 7434: 1ac0 subs r0, r0, r3 mask_tmp += draw_area_w; 7436: b203 sxth r3, r0 7438: 9309 str r3, [sp, #36] ; 0x24 743a: 9b0a ldr r3, [sp, #40] ; 0x28 743c: 469a mov sl, r3 743e: 4643 mov r3, r8 7440: 930a str r3, [sp, #40] ; 0x28 7442: 4690 mov r8, r2 7444: e068 b.n 7518 <_lv_blend_map+0xbc8> blend_fp = color_blend_true_color_additive; 7446: 4b3f ldr r3, [pc, #252] ; (7544 <_lv_blend_map+0xbf4>) 7448: 930a str r3, [sp, #40] ; 0x28 744a: e7b4 b.n 73b6 <_lv_blend_map+0xa66> map_buf_tmp -= draw_area->x1; 744c: 9b0b ldr r3, [sp, #44] ; 0x2c 744e: 9a0d ldr r2, [sp, #52] ; 0x34 7450: 1a9b subs r3, r3, r2 7452: 005b lsls r3, r3, #1 7454: 46a1 mov r9, r4 7456: 4499 add r9, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 7458: 9a0c ldr r2, [sp, #48] ; 0x30 745a: 4296 cmp r6, r2 745c: dd01 ble.n 7462 <_lv_blend_map+0xb12> 745e: f7ff fa8d bl 697c <_lv_blend_map+0x2c> disp_buf_tmp += disp_w; 7462: 4663 mov r3, ip 7464: 005b lsls r3, r3, #1 7466: 469a mov sl, r3 map_buf_tmp += map_w; 7468: 004b lsls r3, r1, #1 746a: 4698 mov r8, r3 for(x = draw_area->x1; x <= draw_area->x2; x++) { 746c: af10 add r7, sp, #64 ; 0x40 746e: 465b mov r3, fp 7470: 9305 str r3, [sp, #20] 7472: 46d3 mov fp, sl 7474: 9b0a ldr r3, [sp, #40] ; 0x28 7476: 469a mov sl, r3 7478: 2300 movs r3, #0 747a: 5efd ldrsh r5, [r7, r3] 747c: 002e movs r6, r5 747e: 2204 movs r2, #4 7480: 5ebb ldrsh r3, [r7, r2] 7482: 429d cmp r5, r3 7484: dc0f bgt.n 74a6 <_lv_blend_map+0xb56> 7486: 006d lsls r5, r5, #1 7488: 9b06 ldr r3, [sp, #24] 748a: 195c adds r4, r3, r5 748c: 444d add r5, r9 disp_buf_tmp[x] = blend_fp(map_buf_tmp[x], disp_buf_tmp[x], opa); 748e: 8821 ldrh r1, [r4, #0] 7490: 8828 ldrh r0, [r5, #0] 7492: 9a05 ldr r2, [sp, #20] 7494: 47d0 blx sl 7496: 8020 strh r0, [r4, #0] for(x = draw_area->x1; x <= draw_area->x2; x++) { 7498: 3601 adds r6, #1 749a: 3402 adds r4, #2 749c: 3502 adds r5, #2 749e: 2204 movs r2, #4 74a0: 5ebb ldrsh r3, [r7, r2] 74a2: 429e cmp r6, r3 74a4: ddf3 ble.n 748e <_lv_blend_map+0xb3e> disp_buf_tmp += disp_w; 74a6: 9b06 ldr r3, [sp, #24] 74a8: 445b add r3, fp 74aa: 9306 str r3, [sp, #24] map_buf_tmp += map_w; 74ac: 44c1 add r9, r8 for(y = draw_area->y1; y <= draw_area->y2; y++) { 74ae: 9b08 ldr r3, [sp, #32] 74b0: 3301 adds r3, #1 74b2: 001a movs r2, r3 74b4: 9308 str r3, [sp, #32] 74b6: 2106 movs r1, #6 74b8: 5e7b ldrsh r3, [r7, r1] 74ba: 429a cmp r2, r3 74bc: dddc ble.n 7478 <_lv_blend_map+0xb28> 74be: f7ff fa5d bl 697c <_lv_blend_map+0x2c> disp_buf_tmp[x] = blend_fp(map_buf_tmp[x], disp_buf_tmp[x], opa_tmp); 74c2: 8831 ldrh r1, [r6, #0] 74c4: 8828 ldrh r0, [r5, #0] 74c6: 47d0 blx sl 74c8: 8030 strh r0, [r6, #0] for(x = draw_area->x1; x <= draw_area->x2; x++) { 74ca: 3401 adds r4, #1 74cc: 3602 adds r6, #2 74ce: 3502 adds r5, #2 74d0: 2204 movs r2, #4 74d2: 5ebb ldrsh r3, [r7, r2] 74d4: 429c cmp r4, r3 74d6: dc0a bgt.n 74ee <_lv_blend_map+0xb9e> if(mask_tmp[x] == 0) continue; 74d8: 4643 mov r3, r8 74da: 5d1b ldrb r3, [r3, r4] 74dc: 2b00 cmp r3, #0 74de: d0f4 beq.n 74ca <_lv_blend_map+0xb7a> lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : ((opa * mask_tmp[x]) >> 8); 74e0: 9a05 ldr r2, [sp, #20] 74e2: 2bf9 cmp r3, #249 ; 0xf9 74e4: d8ed bhi.n 74c2 <_lv_blend_map+0xb72> 74e6: 465a mov r2, fp 74e8: 4353 muls r3, r2 74ea: 0a1a lsrs r2, r3, #8 74ec: e7e9 b.n 74c2 <_lv_blend_map+0xb72> disp_buf_tmp += disp_w; 74ee: 9b06 ldr r3, [sp, #24] 74f0: 9a0a ldr r2, [sp, #40] ; 0x28 74f2: 4694 mov ip, r2 74f4: 4463 add r3, ip 74f6: 9306 str r3, [sp, #24] 74f8: 9b09 ldr r3, [sp, #36] ; 0x24 74fa: 469c mov ip, r3 74fc: 44e0 add r8, ip map_buf_tmp += map_w; 74fe: 9b07 ldr r3, [sp, #28] 7500: 469c mov ip, r3 7502: 44e1 add r9, ip for(y = draw_area->y1; y <= draw_area->y2; y++) { 7504: 9b08 ldr r3, [sp, #32] 7506: 3301 adds r3, #1 7508: 001a movs r2, r3 750a: 9308 str r3, [sp, #32] 750c: 2106 movs r1, #6 750e: 5e7b ldrsh r3, [r7, r1] 7510: 429a cmp r2, r3 7512: dd01 ble.n 7518 <_lv_blend_map+0xbc8> 7514: f7ff fa32 bl 697c <_lv_blend_map+0x2c> for(x = draw_area->x1; x <= draw_area->x2; x++) { 7518: 2300 movs r3, #0 751a: 5efd ldrsh r5, [r7, r3] 751c: 002c movs r4, r5 751e: 2204 movs r2, #4 7520: 5ebb ldrsh r3, [r7, r2] 7522: 429d cmp r5, r3 7524: dce3 bgt.n 74ee <_lv_blend_map+0xb9e> 7526: 006d lsls r5, r5, #1 7528: 9b06 ldr r3, [sp, #24] 752a: 195e adds r6, r3, r5 752c: 444d add r5, r9 752e: e7d3 b.n 74d8 <_lv_blend_map+0xb88> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 7530: 9f0a ldr r7, [sp, #40] ; 0x28 7532: 2600 movs r6, #0 7534: e4e1 b.n 6efa <_lv_blend_map+0x5aa> for(; x < x_end4; x += 4) { 7536: 003b movs r3, r7 7538: e659 b.n 71ee <_lv_blend_map+0x89e> 753a: 46c0 nop ; (mov r8, r8) 753c: fffff81f .word 0xfffff81f 7540: 00005bb7 .word 0x00005bb7 7544: 00005b11 .word 0x00005b11 7548: 9b05 ldr r3, [sp, #20] 754a: 4699 mov r9, r3 754c: 9b07 ldr r3, [sp, #28] 754e: 429e cmp r6, r3 7550: da00 bge.n 7554 <_lv_blend_map+0xc04> 7552: e4d6 b.n 6f02 <_lv_blend_map+0x5b2> disp_buf_first += disp_w; 7554: 9b08 ldr r3, [sp, #32] 7556: 9a0e ldr r2, [sp, #56] ; 0x38 7558: 4694 mov ip, r2 755a: 4463 add r3, ip 755c: 9308 str r3, [sp, #32] 755e: 9b0a ldr r3, [sp, #40] ; 0x28 7560: 9a0c ldr r2, [sp, #48] ; 0x30 7562: 4694 mov ip, r2 7564: 4463 add r3, ip 7566: 930a str r3, [sp, #40] ; 0x28 map_buf_first += map_w; 7568: 9b09 ldr r3, [sp, #36] ; 0x24 756a: 9a0f ldr r2, [sp, #60] ; 0x3c 756c: 4694 mov ip, r2 756e: 4463 add r3, ip 7570: 9309 str r3, [sp, #36] ; 0x24 for(y = 0; y < draw_area_h; y++) { 7572: 9b0d ldr r3, [sp, #52] ; 0x34 7574: 3301 adds r3, #1 7576: 930d str r3, [sp, #52] ; 0x34 7578: 9a0b ldr r2, [sp, #44] ; 0x2c 757a: 429a cmp r2, r3 757c: dc01 bgt.n 7582 <_lv_blend_map+0xc32> 757e: f7ff f9fd bl 697c <_lv_blend_map+0x2c> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 7582: 464b mov r3, r9 7584: 2b00 cmp r3, #0 7586: dd0f ble.n 75a8 <_lv_blend_map+0xc58> 7588: 9b0a ldr r3, [sp, #40] ; 0x28 758a: 2203 movs r2, #3 758c: 4213 tst r3, r2 758e: d0cf beq.n 7530 <_lv_blend_map+0xbe0> 7590: 9a09 ldr r2, [sp, #36] ; 0x24 7592: 4690 mov r8, r2 7594: 9a08 ldr r2, [sp, #32] 7596: 001f movs r7, r3 7598: 2600 movs r6, #0 MAP_NORMAL_MASK_PX(x) 759a: 4b05 ldr r3, [pc, #20] ; (75b0 <_lv_blend_map+0xc60>) 759c: 469a mov sl, r3 759e: 464b mov r3, r9 75a0: 9305 str r3, [sp, #20] 75a2: 4640 mov r0, r8 75a4: 0011 movs r1, r2 75a6: e452 b.n 6e4e <_lv_blend_map+0x4fe> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 75a8: 9f0a ldr r7, [sp, #40] ; 0x28 75aa: 2600 movs r6, #0 75ac: e7ce b.n 754c <_lv_blend_map+0xbfc> 75ae: 46c0 nop ; (mov r8, r8) 75b0: fffff81f .word 0xfffff81f 000075b4 : * @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) { 75b4: b5f0 push {r4, r5, r6, r7, lr} 75b6: 46de mov lr, fp 75b8: 4657 mov r7, sl 75ba: 464e mov r6, r9 75bc: 4645 mov r5, r8 75be: b5e0 push {r5, r6, r7, lr} 75c0: b0bf sub sp, #252 ; 0xfc 75c2: 901c str r0, [sp, #112] ; 0x70 75c4: 0008 movs r0, r1 75c6: 9124 str r1, [sp, #144] ; 0x90 75c8: 4690 mov r8, r2 75ca: 930a str r3, [sp, #40] ; 0x28 75cc: ab48 add r3, sp, #288 ; 0x120 75ce: 781b ldrb r3, [r3, #0] 75d0: 930b str r3, [sp, #44] ; 0x2c 75d2: ab49 add r3, sp, #292 ; 0x124 75d4: 781b ldrb r3, [r3, #0] 75d6: 9307 str r3, [sp, #28] 75d8: 2300 movs r3, #0 { uint8_t * d8 = (uint8_t *)dst; const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; 75da: a93c add r1, sp, #240 ; 0xf0 75dc: 5cc2 ldrb r2, [r0, r3] 75de: 545a strb r2, [r3, r1] 75e0: 3301 adds r3, #1 while(len) { 75e2: 2b08 cmp r3, #8 75e4: d1fa bne.n 75dc /* 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(); 75e6: 4bb7 ldr r3, [pc, #732] ; (78c4 ) 75e8: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 75ea: 4bb7 ldr r3, [pc, #732] ; (78c8 ) 75ec: 4798 blx r3 75ee: 9019 str r0, [sp, #100] ; 0x64 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; 75f0: 8a04 ldrh r4, [r0, #16] 75f2: ab3c add r3, sp, #240 ; 0xf0 75f4: 881a ldrh r2, [r3, #0] 75f6: 1b12 subs r2, r2, r4 75f8: 801a strh r2, [r3, #0] draw_area.y1 -= disp_area->y1; 75fa: 8a40 ldrh r0, [r0, #18] 75fc: 885a ldrh r2, [r3, #2] 75fe: 1a12 subs r2, r2, r0 7600: 805a strh r2, [r3, #2] draw_area.x2 -= disp_area->x1; 7602: 8899 ldrh r1, [r3, #4] 7604: 1b09 subs r1, r1, r4 7606: 8099 strh r1, [r3, #4] draw_area.y2 -= disp_area->y1; 7608: 88da ldrh r2, [r3, #6] 760a: 1a12 subs r2, r2, r0 760c: 80da strh r2, [r3, #6] uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 760e: 4baf ldr r3, [pc, #700] ; (78cc ) 7610: 4798 blx r3 7612: 901a str r0, [sp, #104] ; 0x68 /*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 && 7614: 2800 cmp r0, #0 7616: d108 bne.n 762a 7618: 9a0a ldr r2, [sp, #40] ; 0x28 761a: 8853 ldrh r3, [r2, #2] 761c: 2b00 cmp r3, #0 761e: d104 bne.n 762a 7620: 3301 adds r3, #1 7622: 33ff adds r3, #255 ; 0xff 7624: 8912 ldrh r2, [r2, #8] 7626: 429a cmp r2, r3 7628: d072 beq.n 7710 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); 762a: 9b07 ldr r3, [sp, #28] 762c: 1e5a subs r2, r3, #1 762e: 4193 sbcs r3, r2 7630: 3302 adds r3, #2 7632: 4699 mov r9, r3 7634: 9b1c ldr r3, [sp, #112] ; 0x70 7636: 2200 movs r2, #0 7638: 5e99 ldrsh r1, [r3, r2] 763a: 468c mov ip, r1 763c: 889f ldrh r7, [r3, #4] 763e: 3701 adds r7, #1 7640: 1a7f subs r7, r7, r1 7642: b23f sxth r7, r7 /*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; 7644: a93c add r1, sp, #240 ; 0xf0 7646: 2202 movs r2, #2 7648: 5e8d ldrsh r5, [r1, r2] 764a: 9a19 ldr r2, [sp, #100] ; 0x64 764c: 2612 movs r6, #18 764e: 5f94 ldrsh r4, [r2, r6] 7650: 46ca mov sl, r9 map_buf_tmp += (draw_area.x1 - (map_area->x1 - disp_area->x1)) * px_size_byte; 7652: 2000 movs r0, #0 7654: 5e0e ldrsh r6, [r1, r0] 7656: 2010 movs r0, #16 7658: 5e12 ldrsh r2, [r2, r0] map_buf_tmp += map_w * (draw_area.y1 - (map_area->y1 - disp_area->y1)) * px_size_byte; 765a: 2002 movs r0, #2 765c: 5e1b ldrsh r3, [r3, r0] 765e: 1b1b subs r3, r3, r4 7660: 1aeb subs r3, r5, r3 7662: 437b muls r3, r7 map_buf_tmp += (draw_area.x1 - (map_area->x1 - disp_area->x1)) * px_size_byte; 7664: 4660 mov r0, ip 7666: 1a80 subs r0, r0, r2 7668: 1a30 subs r0, r6, r0 766a: 18c0 adds r0, r0, r3 766c: 464b mov r3, r9 766e: 4358 muls r0, r3 7670: 0003 movs r3, r0 7672: 4443 add r3, r8 7674: 9315 str r3, [sp, #84] ; 0x54 uint32_t px_i = 0; const uint8_t * map_px; lv_area_t blend_area; blend_area.x1 = draw_area.x1 + disp_area->x1; 7676: b2b6 uxth r6, r6 7678: 18b2 adds r2, r6, r2 767a: b292 uxth r2, r2 767c: a828 add r0, sp, #160 ; 0xa0 767e: 8002 strh r2, [r0, #0] 7680: 888b ldrh r3, [r1, #4] 7682: 3301 adds r3, #1 7684: 1b9b subs r3, r3, r6 7686: b29b uxth r3, r3 7688: b21e sxth r6, r3 768a: 9617 str r6, [sp, #92] ; 0x5c blend_area.x2 = blend_area.x1 + lv_area_get_width(&draw_area) - 1; 768c: 3b01 subs r3, #1 768e: 18d3 adds r3, r2, r3 7690: 8083 strh r3, [r0, #4] blend_area.y1 = disp_area->y1 + draw_area.y1; 7692: b2ad uxth r5, r5 7694: 192c adds r4, r5, r4 7696: b224 sxth r4, r4 7698: 8044 strh r4, [r0, #2] blend_area.y2 = blend_area.y1; 769a: 80c4 strh r4, [r0, #6] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 769c: 88cb ldrh r3, [r1, #6] 769e: 3301 adds r3, #1 76a0: 1b5d subs r5, r3, r5 76a2: b22d sxth r5, r5 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; 76a4: 980a ldr r0, [sp, #40] ; 0x28 76a6: 8843 ldrh r3, [r0, #2] 76a8: 2b00 cmp r3, #0 76aa: d000 beq.n 76ae 76ac: e344 b.n 7d38 76ae: 8902 ldrh r2, [r0, #8] 76b0: 1e53 subs r3, r2, #1 76b2: 3bff subs r3, #255 ; 0xff 76b4: 1e59 subs r1, r3, #1 76b6: 418b sbcs r3, r1 76b8: b2db uxtb r3, r3 76ba: 469b mov fp, r3 #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) { 76bc: 9b1a ldr r3, [sp, #104] ; 0x68 76be: 2b00 cmp r3, #0 76c0: d000 beq.n 76c4 76c2: e0d5 b.n 7870 76c4: 3301 adds r3, #1 76c6: 33ff adds r3, #255 ; 0xff 76c8: 429a cmp r2, r3 76ca: d000 beq.n 76ce 76cc: e33a b.n 7d44 76ce: 9b0b ldr r3, [sp, #44] ; 0x2c 76d0: 2b00 cmp r3, #0 76d2: d105 bne.n 76e0 76d4: 7a83 ldrb r3, [r0, #10] 76d6: 2b00 cmp r3, #0 76d8: d102 bne.n 76e0 76da: 9b07 ldr r3, [sp, #28] 76dc: 2b00 cmp r3, #0 76de: d134 bne.n 774a _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); 76e0: a83c add r0, sp, #240 ; 0xf0 76e2: 4b7b ldr r3, [pc, #492] ; (78d0 ) 76e4: 4798 blx r3 76e6: 23f0 movs r3, #240 ; 0xf0 76e8: 005b lsls r3, r3, #1 76ea: 4298 cmp r0, r3 76ec: d800 bhi.n 76f0 76ee: e0ca b.n 7886 lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 76f0: 20f0 movs r0, #240 ; 0xf0 76f2: 0080 lsls r0, r0, #2 76f4: 4c77 ldr r4, [pc, #476] ; (78d4 ) 76f6: 47a0 blx r4 76f8: 901b str r0, [sp, #108] ; 0x6c lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 76fa: 26f0 movs r6, #240 ; 0xf0 76fc: 0076 lsls r6, r6, #1 76fe: 0030 movs r0, r6 7700: 47a0 blx r4 7702: 9018 str r0, [sp, #96] ; 0x60 #if LV_USE_IMG_TRANSFORM lv_img_transform_dsc_t trans_dsc; _lv_memset_00(&trans_dsc, sizeof(lv_img_transform_dsc_t)); 7704: 2148 movs r1, #72 ; 0x48 7706: a82a add r0, sp, #168 ; 0xa8 7708: 4b73 ldr r3, [pc, #460] ; (78d8 ) 770a: 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); 770c: 961d str r6, [sp, #116] ; 0x74 770e: e355 b.n 7dbc if(other_mask_cnt == 0 && draw_dsc->angle == 0 && draw_dsc->zoom == LV_IMG_ZOOM_NONE && 7710: 9b0b ldr r3, [sp, #44] ; 0x2c 7712: 2b00 cmp r3, #0 7714: d189 bne.n 762a chroma_key == false && alpha_byte == false && draw_dsc->recolor_opa == LV_OPA_TRANSP) { 7716: 9b07 ldr r3, [sp, #28] 7718: 2b00 cmp r3, #0 771a: d113 bne.n 7744 771c: 9b0a ldr r3, [sp, #40] ; 0x28 771e: 7a9b ldrb r3, [r3, #10] uint8_t px_size_byte = alpha_byte ? LV_IMG_PX_SIZE_ALPHA_BYTE : sizeof(lv_color_t); 7720: 2202 movs r2, #2 7722: 4691 mov r9, r2 chroma_key == false && alpha_byte == false && draw_dsc->recolor_opa == LV_OPA_TRANSP) { 7724: 2b00 cmp r3, #0 7726: d185 bne.n 7634 _lv_blend_map(clip_area, map_area, (lv_color_t *)map_p, NULL, LV_DRAW_MASK_RES_FULL_COVER, draw_dsc->opa, 7728: 9a0a ldr r2, [sp, #40] ; 0x28 772a: 7b93 ldrb r3, [r2, #14] 772c: 9302 str r3, [sp, #8] 772e: 7813 ldrb r3, [r2, #0] 7730: 9301 str r3, [sp, #4] 7732: 2301 movs r3, #1 7734: 9300 str r3, [sp, #0] 7736: 2300 movs r3, #0 7738: 4642 mov r2, r8 773a: 991c ldr r1, [sp, #112] ; 0x70 773c: 9824 ldr r0, [sp, #144] ; 0x90 773e: 4c67 ldr r4, [pc, #412] ; (78dc ) 7740: 47a0 blx r4 7742: e2dd b.n 7d00 uint8_t px_size_byte = alpha_byte ? LV_IMG_PX_SIZE_ALPHA_BYTE : sizeof(lv_color_t); 7744: 2303 movs r3, #3 7746: 4699 mov r9, r3 7748: e774 b.n 7634 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); 774a: a83c add r0, sp, #240 ; 0xf0 774c: 4b60 ldr r3, [pc, #384] ; (78d0 ) 774e: 4798 blx r3 7750: 23f0 movs r3, #240 ; 0xf0 7752: 005b lsls r3, r3, #1 7754: 4298 cmp r0, r3 7756: d819 bhi.n 778c 7758: a83c add r0, sp, #240 ; 0xf0 775a: 4b5d ldr r3, [pc, #372] ; (78d0 ) 775c: 4798 blx r3 775e: 9007 str r0, [sp, #28] lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 7760: 9e07 ldr r6, [sp, #28] 7762: 0070 lsls r0, r6, #1 7764: 4c5b ldr r4, [pc, #364] ; (78d4 ) 7766: 47a0 blx r4 7768: 9005 str r0, [sp, #20] lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 776a: 0030 movs r0, r6 776c: 47a0 blx r4 776e: 9006 str r0, [sp, #24] for(y = 0; y < draw_area_h; y++) { 7770: 2d00 cmp r5, #0 7772: dd61 ble.n 7838 map_buf_tmp += map_w * px_size_byte; 7774: 4653 mov r3, sl 7776: 437b muls r3, r7 7778: 469a mov sl, r3 777a: 1c6b adds r3, r5, #1 777c: 469b mov fp, r3 777e: 2301 movs r3, #1 7780: 4698 mov r8, r3 7782: 2700 movs r7, #0 for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 7784: 9d17 ldr r5, [sp, #92] ; 0x5c 7786: 003e movs r6, r7 7788: 464c mov r4, r9 778a: e031 b.n 77f0 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); 778c: 23f0 movs r3, #240 ; 0xf0 778e: 005b lsls r3, r3, #1 7790: 9307 str r3, [sp, #28] 7792: e7e5 b.n 7760 for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 7794: 3301 adds r3, #1 7796: 1912 adds r2, r2, r4 7798: 3702 adds r7, #2 779a: 42ab cmp r3, r5 779c: da09 bge.n 77b2 lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; 779e: 7891 ldrb r1, [r2, #2] mask_buf[px_i] = px_opa; 77a0: 54c1 strb r1, [r0, r3] if(px_opa) { 77a2: 2900 cmp r1, #0 77a4: d0f6 beq.n 7794 map2[px_i].full = map_px[0] + (map_px[1] << 8); 77a6: 7856 ldrb r6, [r2, #1] 77a8: 0236 lsls r6, r6, #8 77aa: 7811 ldrb r1, [r2, #0] 77ac: 1989 adds r1, r1, r6 77ae: 8039 strh r1, [r7, #0] 77b0: e7f0 b.n 7794 77b2: 4666 mov r6, ip 77b4: 9b17 ldr r3, [sp, #92] ; 0x5c 77b6: 469c mov ip, r3 77b8: 4466 add r6, ip map_buf_tmp += map_w * px_size_byte; 77ba: 9b15 ldr r3, [sp, #84] ; 0x54 77bc: 4453 add r3, sl 77be: 9315 str r3, [sp, #84] ; 0x54 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 77c0: ab24 add r3, sp, #144 ; 0x90 77c2: 2264 movs r2, #100 ; 0x64 77c4: 189b adds r3, r3, r2 77c6: 881b ldrh r3, [r3, #0] 77c8: 3301 adds r3, #1 77ca: aa24 add r2, sp, #144 ; 0x90 77cc: 2160 movs r1, #96 ; 0x60 77ce: 1852 adds r2, r2, r1 77d0: 8812 ldrh r2, [r2, #0] 77d2: 1a9b subs r3, r3, r2 if(px_i + lv_area_get_width(&draw_area) < mask_buf_size) { 77d4: b21b sxth r3, r3 77d6: 199b adds r3, r3, r6 77d8: 9a07 ldr r2, [sp, #28] 77da: 429a cmp r2, r3 77dc: d917 bls.n 780e blend_area.y2 ++; 77de: aa28 add r2, sp, #160 ; 0xa0 77e0: 88d3 ldrh r3, [r2, #6] 77e2: 3301 adds r3, #1 77e4: 80d3 strh r3, [r2, #6] 77e6: 2301 movs r3, #1 77e8: 469c mov ip, r3 77ea: 44e0 add r8, ip for(y = 0; y < draw_area_h; y++) { 77ec: 45d8 cmp r8, fp 77ee: d023 beq.n 7838 for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 77f0: 9b17 ldr r3, [sp, #92] ; 0x5c 77f2: 2b00 cmp r3, #0 77f4: dde1 ble.n 77ba 77f6: 0077 lsls r7, r6, #1 77f8: 9b05 ldr r3, [sp, #20] 77fa: 469c mov ip, r3 77fc: 4467 add r7, ip 77fe: 9a15 ldr r2, [sp, #84] ; 0x54 7800: 2300 movs r3, #0 mask_buf[px_i] = px_opa; 7802: 9906 ldr r1, [sp, #24] 7804: 468c mov ip, r1 7806: 44b4 add ip, r6 7808: 4660 mov r0, ip 780a: 46b4 mov ip, r6 780c: e7c7 b.n 779e _lv_blend_map(clip_area, &blend_area, map2, mask_buf, LV_DRAW_MASK_RES_CHANGED, draw_dsc->opa, draw_dsc->blend_mode); 780e: af28 add r7, sp, #160 ; 0xa0 7810: 9a0a ldr r2, [sp, #40] ; 0x28 7812: 7b93 ldrb r3, [r2, #14] 7814: 9302 str r3, [sp, #8] 7816: 7813 ldrb r3, [r2, #0] 7818: 9301 str r3, [sp, #4] 781a: 2302 movs r3, #2 781c: 9300 str r3, [sp, #0] 781e: 9b06 ldr r3, [sp, #24] 7820: 9a05 ldr r2, [sp, #20] 7822: 0039 movs r1, r7 7824: 9824 ldr r0, [sp, #144] ; 0x90 7826: 4e2d ldr r6, [pc, #180] ; (78dc ) 7828: 47b0 blx r6 blend_area.y1 = blend_area.y2 + 1; 782a: 88fb ldrh r3, [r7, #6] 782c: 3301 adds r3, #1 782e: b21b sxth r3, r3 7830: 807b strh r3, [r7, #2] blend_area.y2 = blend_area.y1; 7832: 80fb strh r3, [r7, #6] px_i = 0; 7834: 2600 movs r6, #0 7836: e7d6 b.n 77e6 if(blend_area.y1 != blend_area.y2) { 7838: aa28 add r2, sp, #160 ; 0xa0 783a: 2106 movs r1, #6 783c: 5e53 ldrsh r3, [r2, r1] 783e: 2102 movs r1, #2 7840: 5e52 ldrsh r2, [r2, r1] 7842: 429a cmp r2, r3 7844: d00e beq.n 7864 blend_area.y2--; 7846: a928 add r1, sp, #160 ; 0xa0 7848: 3b01 subs r3, #1 784a: 80cb strh r3, [r1, #6] _lv_blend_map(clip_area, &blend_area, map2, mask_buf, LV_DRAW_MASK_RES_CHANGED, draw_dsc->opa, draw_dsc->blend_mode); 784c: 9a0a ldr r2, [sp, #40] ; 0x28 784e: 7b93 ldrb r3, [r2, #14] 7850: 9302 str r3, [sp, #8] 7852: 7813 ldrb r3, [r2, #0] 7854: 9301 str r3, [sp, #4] 7856: 2302 movs r3, #2 7858: 9300 str r3, [sp, #0] 785a: 9b06 ldr r3, [sp, #24] 785c: 9a05 ldr r2, [sp, #20] 785e: 9824 ldr r0, [sp, #144] ; 0x90 7860: 4c1e ldr r4, [pc, #120] ; (78dc ) 7862: 47a0 blx r4 _lv_mem_buf_release(mask_buf); 7864: 9806 ldr r0, [sp, #24] 7866: 4c1e ldr r4, [pc, #120] ; (78e0 ) 7868: 47a0 blx r4 _lv_mem_buf_release(map2); 786a: 9805 ldr r0, [sp, #20] 786c: 47a0 blx r4 if(other_mask_cnt == 0 && !transform && !chroma_key && draw_dsc->recolor_opa == LV_OPA_TRANSP && alpha_byte) { 786e: e247 b.n 7d00 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); 7870: a83c add r0, sp, #240 ; 0xf0 7872: 4b17 ldr r3, [pc, #92] ; (78d0 ) 7874: 4798 blx r3 7876: 23f0 movs r3, #240 ; 0xf0 7878: 005b lsls r3, r3, #1 787a: 4298 cmp r0, r3 787c: d903 bls.n 7886 787e: 23f0 movs r3, #240 ; 0xf0 7880: 005b lsls r3, r3, #1 7882: 931d str r3, [sp, #116] ; 0x74 7884: e003 b.n 788e 7886: a83c add r0, sp, #240 ; 0xf0 7888: 4b11 ldr r3, [pc, #68] ; (78d0 ) 788a: 4798 blx r3 788c: 901d str r0, [sp, #116] ; 0x74 lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 788e: 9e1d ldr r6, [sp, #116] ; 0x74 7890: 0070 lsls r0, r6, #1 7892: 4c10 ldr r4, [pc, #64] ; (78d4 ) 7894: 47a0 blx r4 7896: 901b str r0, [sp, #108] ; 0x6c lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 7898: 0030 movs r0, r6 789a: 47a0 blx r4 789c: 9018 str r0, [sp, #96] ; 0x60 _lv_memset_00(&trans_dsc, sizeof(lv_img_transform_dsc_t)); 789e: 2148 movs r1, #72 ; 0x48 78a0: a82a add r0, sp, #168 ; 0xa8 78a2: 4b0d ldr r3, [pc, #52] ; (78d8 ) 78a4: 4798 blx r3 if(transform) { 78a6: 465b mov r3, fp 78a8: 2b00 cmp r3, #0 78aa: d100 bne.n 78ae 78ac: e286 b.n 7dbc 78ae: e260 b.n 7d72 trans_dsc.cfg.antialias = draw_dsc->antialias; _lv_img_buf_transform_init(&trans_dsc); } #endif uint16_t recolor_premult[3] = {0}; 78b0: 2300 movs r3, #0 78b2: 9314 str r3, [sp, #80] ; 0x50 78b4: 9312 str r3, [sp, #72] ; 0x48 78b6: 9311 str r3, [sp, #68] ; 0x44 78b8: e297 b.n 7dea 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) { _lv_memset_ff(mask_buf, mask_buf_size); 78ba: 991d ldr r1, [sp, #116] ; 0x74 78bc: 9818 ldr r0, [sp, #96] ; 0x60 78be: 4b09 ldr r3, [pc, #36] ; (78e4 ) 78c0: 4798 blx r3 78c2: e2a9 b.n 7e18 78c4: 000043b1 .word 0x000043b1 78c8: 0000f709 .word 0x0000f709 78cc: 0000a6c1 .word 0x0000a6c1 78d0: 0000fbf3 .word 0x0000fbf3 78d4: 00010ec1 .word 0x00010ec1 78d8: 0001104d .word 0x0001104d 78dc: 00006951 .word 0x00006951 78e0: 00010bd5 .word 0x00010bd5 78e4: 000110f1 .word 0x000110f1 static inline bool _lv_img_buf_transform(lv_img_transform_dsc_t * dsc, lv_coord_t x, lv_coord_t y) { const uint8_t * src_u8 = (const uint8_t *)dsc->cfg.src; /*Get the target point relative coordinates to the pivot*/ int32_t xt = x - dsc->cfg.pivot_x; 78e8: 9b0d ldr r3, [sp, #52] ; 0x34 78ea: 18f3 adds r3, r6, r3 78ec: b21b sxth r3, r3 78ee: a92a add r1, sp, #168 ; 0xa8 78f0: 2008 movs r0, #8 78f2: 5e0a ldrsh r2, [r1, r0] 78f4: 1a9b subs r3, r3, r2 int32_t yt = y - dsc->cfg.pivot_y; 78f6: 200a movs r0, #10 78f8: 5e0a ldrsh r2, [r1, r0] 78fa: 980e ldr r0, [sp, #56] ; 0x38 78fc: 1a82 subs r2, r0, r2 int32_t xs; int32_t ys; if(dsc->cfg.zoom == LV_IMG_ZOOM_NONE) { 78fe: 2080 movs r0, #128 ; 0x80 7900: 0040 lsls r0, r0, #1 7902: 89c9 ldrh r1, [r1, #14] 7904: 4281 cmp r1, r0 7906: d059 beq.n 79bc /*Get the source pixel from the upscaled image*/ xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_x_256; ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_y_256; } else if(dsc->cfg.angle == 0) { 7908: a92a add r1, sp, #168 ; 0xa8 790a: 200c movs r0, #12 790c: 5e09 ldrsh r1, [r1, r0] 790e: 2900 cmp r1, #0 7910: d16b bne.n 79ea xt *= dsc->tmp.zoom_inv; 7912: a92a add r1, sp, #168 ; 0xa8 7914: 8ec8 ldrh r0, [r1, #54] ; 0x36 7916: 4343 muls r3, r0 7918: 001d movs r5, r3 yt *= dsc->tmp.zoom_inv; xs = xt + dsc->tmp.pivot_x_256; 791a: 9b33 ldr r3, [sp, #204] ; 0xcc 791c: 469a mov sl, r3 791e: 44aa add sl, r5 yt *= dsc->tmp.zoom_inv; 7920: 4342 muls r2, r0 ys = yt + dsc->tmp.pivot_y_256; 7922: 9b34 ldr r3, [sp, #208] ; 0xd0 7924: 18d3 adds r3, r2, r3 7926: 930c str r3, [sp, #48] ; 0x30 xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_x_256; ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_y_256; } /*Get the integer part of the source pixel*/ int32_t xs_int = xs >> 8; 7928: 4653 mov r3, sl 792a: 121b asrs r3, r3, #8 792c: 4698 mov r8, r3 int32_t ys_int = ys >> 8; if(xs_int >= dsc->cfg.src_w) return false; 792e: ab2a add r3, sp, #168 ; 0xa8 7930: 2204 movs r2, #4 7932: 5e9b ldrsh r3, [r3, r2] 7934: 4598 cmp r8, r3 7936: db00 blt.n 793a 7938: e0b0 b.n 7a9c else if(xs_int < 0) return false; 793a: 4642 mov r2, r8 793c: 2a00 cmp r2, #0 793e: da00 bge.n 7942 7940: e0ac b.n 7a9c int32_t ys_int = ys >> 8; 7942: 9a0c ldr r2, [sp, #48] ; 0x30 7944: 1212 asrs r2, r2, #8 7946: 0010 movs r0, r2 7948: 9216 str r2, [sp, #88] ; 0x58 if(ys_int >= dsc->cfg.src_h) return false; 794a: aa2a add r2, sp, #168 ; 0xa8 794c: 2106 movs r1, #6 794e: 5e52 ldrsh r2, [r2, r1] 7950: 4290 cmp r0, r2 7952: db00 blt.n 7956 7954: e0a2 b.n 7a9c else if(ys_int < 0) return false; 7956: 2800 cmp r0, #0 7958: da00 bge.n 795c 795a: e09f b.n 7a9c uint8_t px_size; uint32_t pxi; if(dsc->tmp.native_color) { 795c: 2234 movs r2, #52 ; 0x34 795e: a92a add r1, sp, #168 ; 0xa8 7960: 5c89 ldrb r1, [r1, r2] 7962: 074a lsls r2, r1, #29 7964: d56a bpl.n 7a3c const uint8_t * src_u8 = (const uint8_t *)dsc->cfg.src; 7966: 9a2a ldr r2, [sp, #168] ; 0xa8 if(dsc->tmp.has_alpha == 0) { 7968: 0789 lsls r1, r1, #30 796a: d458 bmi.n 7a1e px_size = LV_COLOR_SIZE >> 3; pxi = dsc->cfg.src_w * ys_int * px_size + xs_int * px_size; 796c: 4343 muls r3, r0 796e: 4443 add r3, r8 7970: 005b lsls r3, r3, #1 _lv_memcpy_small(&dsc->res.color, &src_u8[pxi], px_size); 7972: 18d2 adds r2, r2, r3 *d8 = *s8; 7974: 7810 ldrb r0, [r2, #0] 7976: a92a add r1, sp, #168 ; 0xa8 7978: 7508 strb r0, [r1, #20] 797a: 7852 ldrb r2, [r2, #1] 797c: 754a strb r2, [r1, #21] px_size = LV_COLOR_SIZE >> 3; 797e: 2102 movs r1, #2 px_size = 0; /*unused*/ dsc->res.color = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, xs_int, ys_int, dsc->cfg.color); dsc->res.opa = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, xs_int, ys_int); } if(dsc->tmp.chroma_keyed) { 7980: 2234 movs r2, #52 ; 0x34 7982: a82a add r0, sp, #168 ; 0xa8 7984: 5c82 ldrb r2, [r0, r2] 7986: 07d2 lsls r2, r2, #31 7988: d50f bpl.n 79aa lv_color_t ct = LV_COLOR_TRANSP; 798a: 221f movs r2, #31 798c: 9822 ldr r0, [sp, #136] ; 0x88 798e: 4390 bics r0, r2 7990: 22fc movs r2, #252 ; 0xfc 7992: 00d2 lsls r2, r2, #3 7994: 4302 orrs r2, r0 7996: 0552 lsls r2, r2, #21 7998: 0d52 lsrs r2, r2, #21 799a: 4668 mov r0, sp 799c: 2588 movs r5, #136 ; 0x88 799e: 1940 adds r0, r0, r5 79a0: 8002 strh r2, [r0, #0] if(dsc->res.color.full == ct.full) return false; 79a2: a82a add r0, sp, #168 ; 0xa8 79a4: 8a80 ldrh r0, [r0, #20] 79a6: 4290 cmp r0, r2 79a8: d078 beq.n 7a9c } if(dsc->cfg.antialias == false) return true; 79aa: aa2a add r2, sp, #168 ; 0xa8 79ac: 7cd2 ldrb r2, [r2, #19] 79ae: 2a00 cmp r2, #0 79b0: d160 bne.n 7a74 if(ret == false) { mask_buf[px_i] = LV_OPA_TRANSP; continue; } else { mask_buf[px_i] = trans_dsc.res.opa; 79b2: ab2a add r3, sp, #168 ; 0xa8 79b4: 7d9a ldrb r2, [r3, #22] 79b6: 7022 strb r2, [r4, #0] c.full = trans_dsc.res.color.full; 79b8: 8a9b ldrh r3, [r3, #20] 79ba: e080 b.n 7abe xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_x_256; 79bc: 9936 ldr r1, [sp, #216] ; 0xd8 79be: 9835 ldr r0, [sp, #212] ; 0xd4 79c0: 0005 movs r5, r0 79c2: 910c str r1, [sp, #48] ; 0x30 79c4: 0008 movs r0, r1 79c6: 4358 muls r0, r3 79c8: 0029 movs r1, r5 79ca: 4351 muls r1, r2 79cc: 1a41 subs r1, r0, r1 79ce: 11c9 asrs r1, r1, #7 79d0: 9833 ldr r0, [sp, #204] ; 0xcc 79d2: 9016 str r0, [sp, #88] ; 0x58 79d4: 4682 mov sl, r0 79d6: 448a add sl, r1 ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_y_256; 79d8: 436b muls r3, r5 79da: 980c ldr r0, [sp, #48] ; 0x30 79dc: 4342 muls r2, r0 79de: 189b adds r3, r3, r2 79e0: 11db asrs r3, r3, #7 79e2: 9a34 ldr r2, [sp, #208] ; 0xd0 79e4: 189b adds r3, r3, r2 79e6: 930c str r3, [sp, #48] ; 0x30 79e8: e79e b.n 7928 xt *= dsc->tmp.zoom_inv; 79ea: a92a add r1, sp, #168 ; 0xa8 79ec: 8ec8 ldrh r0, [r1, #54] ; 0x36 79ee: 4343 muls r3, r0 79f0: 001d movs r5, r3 yt *= dsc->tmp.zoom_inv; 79f2: 4342 muls r2, r0 xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_x_256; 79f4: 9836 ldr r0, [sp, #216] ; 0xd8 79f6: 4358 muls r0, r3 79f8: 4680 mov r8, r0 79fa: 9835 ldr r0, [sp, #212] ; 0xd4 79fc: 4350 muls r0, r2 79fe: 4643 mov r3, r8 7a00: 1a18 subs r0, r3, r0 7a02: 13c0 asrs r0, r0, #15 7a04: 9b33 ldr r3, [sp, #204] ; 0xcc 7a06: 469a mov sl, r3 7a08: 4482 add sl, r0 ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_y_256; 7a0a: 9b35 ldr r3, [sp, #212] ; 0xd4 7a0c: 436b muls r3, r5 7a0e: 9836 ldr r0, [sp, #216] ; 0xd8 7a10: 4350 muls r0, r2 7a12: 181b adds r3, r3, r0 7a14: 13db asrs r3, r3, #15 7a16: 9a34 ldr r2, [sp, #208] ; 0xd0 7a18: 189b adds r3, r3, r2 7a1a: 930c str r3, [sp, #48] ; 0x30 7a1c: e784 b.n 7928 pxi = dsc->cfg.src_w * ys_int * px_size + xs_int * px_size; 7a1e: 9916 ldr r1, [sp, #88] ; 0x58 7a20: 434b muls r3, r1 7a22: 4443 add r3, r8 7a24: 0059 lsls r1, r3, #1 7a26: 18cb adds r3, r1, r3 _lv_memcpy_small(&dsc->res.color, &src_u8[pxi], px_size - 1); 7a28: 18d2 adds r2, r2, r3 7a2a: 7810 ldrb r0, [r2, #0] 7a2c: a92a add r1, sp, #168 ; 0xa8 7a2e: 7508 strb r0, [r1, #20] 7a30: 7850 ldrb r0, [r2, #1] 7a32: 7548 strb r0, [r1, #21] dsc->res.opa = src_u8[pxi + px_size - 1]; 7a34: 7892 ldrb r2, [r2, #2] 7a36: 758a strb r2, [r1, #22] px_size = LV_IMG_PX_SIZE_ALPHA_BYTE; 7a38: 2103 movs r1, #3 7a3a: e7a1 b.n 7980 dsc->res.color = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, xs_int, ys_int, dsc->cfg.color); 7a3c: 4643 mov r3, r8 7a3e: b219 sxth r1, r3 7a40: 466b mov r3, sp 7a42: 2258 movs r2, #88 ; 0x58 7a44: 189b adds r3, r3, r2 7a46: 2200 movs r2, #0 7a48: 5e9a ldrsh r2, [r3, r2] 7a4a: ab24 add r3, sp, #144 ; 0x90 7a4c: 8d1b ldrh r3, [r3, #40] ; 0x28 7a4e: 9226 str r2, [sp, #152] ; 0x98 7a50: 9125 str r1, [sp, #148] ; 0x94 7a52: a830 add r0, sp, #192 ; 0xc0 7a54: 4dae ldr r5, [pc, #696] ; (7d10 ) 7a56: 47a8 blx r5 7a58: ab24 add r3, sp, #144 ; 0x90 7a5a: 8598 strh r0, [r3, #44] ; 0x2c dsc->res.opa = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, xs_int, ys_int); 7a5c: 9a26 ldr r2, [sp, #152] ; 0x98 7a5e: 9925 ldr r1, [sp, #148] ; 0x94 7a60: a830 add r0, sp, #192 ; 0xc0 7a62: 4bac ldr r3, [pc, #688] ; (7d14 ) 7a64: 4798 blx r3 7a66: ab24 add r3, sp, #144 ; 0x90 7a68: 222e movs r2, #46 ; 0x2e 7a6a: 189b adds r3, r3, r2 7a6c: 7018 strb r0, [r3, #0] pxi = 0; /*unused*/ 7a6e: 2300 movs r3, #0 px_size = 0; /*unused*/ 7a70: 2100 movs r1, #0 7a72: e785 b.n 7980 dsc->tmp.xs = xs; 7a74: a82a add r0, sp, #168 ; 0xa8 7a76: 4652 mov r2, sl 7a78: 8702 strh r2, [r0, #56] ; 0x38 dsc->tmp.ys = ys; 7a7a: 466a mov r2, sp 7a7c: 8e12 ldrh r2, [r2, #48] ; 0x30 7a7e: 8742 strh r2, [r0, #58] ; 0x3a dsc->tmp.xs_int = xs_int; 7a80: 4642 mov r2, r8 7a82: 8782 strh r2, [r0, #60] ; 0x3c dsc->tmp.ys_int = ys_int; 7a84: 466a mov r2, sp 7a86: 2558 movs r5, #88 ; 0x58 7a88: 1952 adds r2, r2, r5 7a8a: 8812 ldrh r2, [r2, #0] 7a8c: 87c2 strh r2, [r0, #62] ; 0x3e dsc->tmp.pxi = pxi; 7a8e: 6403 str r3, [r0, #64] ; 0x40 dsc->tmp.px_size = px_size; 7a90: 2344 movs r3, #68 ; 0x44 7a92: 54c1 strb r1, [r0, r3] bool ret; ret = _lv_img_buf_transform_anti_alias(dsc); 7a94: 4ba0 ldr r3, [pc, #640] ; (7d18 ) 7a96: 4798 blx r3 if(ret == false) { 7a98: 2800 cmp r0, #0 7a9a: d18a bne.n 79b2 mask_buf[px_i] = LV_OPA_TRANSP; 7a9c: 2300 movs r3, #0 7a9e: 7023 strb r3, [r4, #0] continue; 7aa0: e042 b.n 7b28 #endif continue; } } else { mask_buf[px_i] = 0xFF; 7aa2: 23ff movs r3, #255 ; 0xff 7aa4: 7023 strb r3, [r4, #0] } #if LV_COLOR_DEPTH == 8 c.full = map_px[0]; #elif LV_COLOR_DEPTH == 16 c.full = map_px[0] + (map_px[1] << 8); 7aa6: 787a ldrb r2, [r7, #1] 7aa8: 0212 lsls r2, r2, #8 7aaa: 783b ldrb r3, [r7, #0] 7aac: 189b adds r3, r3, r2 7aae: b29b uxth r3, r3 #elif LV_COLOR_DEPTH == 32 c.full = *((uint32_t *)map_px); c.ch.alpha = 0xFF; #endif if(chroma_key) { 7ab0: 9a0b ldr r2, [sp, #44] ; 0x2c 7ab2: 2a00 cmp r2, #0 7ab4: d003 beq.n 7abe if(c.full == chroma_keyed_color.full) { 7ab6: 4a99 ldr r2, [pc, #612] ; (7d1c ) 7ab8: 8812 ldrh r2, [r2, #0] 7aba: 429a cmp r2, r3 7abc: d04a beq.n 7b54 continue; } } } if(draw_dsc->recolor_opa != 0) { 7abe: 9a0a ldr r2, [sp, #40] ; 0x28 7ac0: 7a92 ldrb r2, [r2, #10] 7ac2: 2a00 cmp r2, #0 7ac4: d02e beq.n 7b24 LV_COLOR_SET_R(ret, (uint16_t)((uint16_t) premult_c1[0] + LV_COLOR_GET_R(c2) * mix) >> 8); 7ac6: 466a mov r2, sp 7ac8: 214c movs r1, #76 ; 0x4c 7aca: 1852 adds r2, r2, r1 7acc: 8812 ldrh r2, [r2, #0] 7ace: 0ad9 lsrs r1, r3, #11 7ad0: 4694 mov ip, r2 7ad2: 4351 muls r1, r2 7ad4: 9a11 ldr r2, [sp, #68] ; 0x44 7ad6: 4690 mov r8, r2 7ad8: 4441 add r1, r8 7ada: 04c9 lsls r1, r1, #19 7adc: 0ec9 lsrs r1, r1, #27 LV_COLOR_SET_G(ret, (uint16_t)((uint16_t) premult_c1[1] + LV_COLOR_GET_G(c2) * mix) >> 8); 7ade: 0558 lsls r0, r3, #21 7ae0: 0e80 lsrs r0, r0, #26 7ae2: 4662 mov r2, ip 7ae4: 4350 muls r0, r2 7ae6: 9a12 ldr r2, [sp, #72] ; 0x48 7ae8: 4690 mov r8, r2 7aea: 4440 add r0, r8 7aec: 0480 lsls r0, r0, #18 LV_COLOR_SET_B(ret, (uint16_t)((uint16_t) premult_c1[2] + LV_COLOR_GET_B(c2) * mix) >> 8); 7aee: 06da lsls r2, r3, #27 7af0: 0ed2 lsrs r2, r2, #27 7af2: 4663 mov r3, ip 7af4: 435a muls r2, r3 7af6: 9b14 ldr r3, [sp, #80] ; 0x50 7af8: 469c mov ip, r3 7afa: 4462 add r2, ip 7afc: 04d2 lsls r2, r2, #19 7afe: 0ed5 lsrs r5, r2, #27 7b00: 231f movs r3, #31 7b02: 9a08 ldr r2, [sp, #32] 7b04: 439a bics r2, r3 7b06: 0013 movs r3, r2 7b08: 002a movs r2, r5 7b0a: 431a orrs r2, r3 7b0c: 0e80 lsrs r0, r0, #26 7b0e: 0140 lsls r0, r0, #5 7b10: 4b83 ldr r3, [pc, #524] ; (7d20 ) 7b12: 4013 ands r3, r2 7b14: 4303 orrs r3, r0 7b16: 02c9 lsls r1, r1, #11 7b18: 055b lsls r3, r3, #21 7b1a: 0d5b lsrs r3, r3, #21 7b1c: 430b orrs r3, r1 7b1e: 466a mov r2, sp 7b20: 8413 strh r3, [r2, #32] 7b22: b29b uxth r3, r3 c = lv_color_mix_premult(recolor_premult, c, recolor_opa_inv); } map2[px_i].full = c.full; 7b24: 9a05 ldr r2, [sp, #20] 7b26: 8013 strh r3, [r2, #0] for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 7b28: 3601 adds r6, #1 7b2a: 9b06 ldr r3, [sp, #24] 7b2c: 469c mov ip, r3 7b2e: 4467 add r7, ip 7b30: 3401 adds r4, #1 7b32: 9b05 ldr r3, [sp, #20] 7b34: 3302 adds r3, #2 7b36: 9305 str r3, [sp, #20] 7b38: 454e cmp r6, r9 7b3a: da0e bge.n 7b5a if(transform) { 7b3c: 465b mov r3, fp 7b3e: 2b00 cmp r3, #0 7b40: d000 beq.n 7b44 7b42: e6d1 b.n 78e8 if(alpha_byte) { 7b44: 9b07 ldr r3, [sp, #28] 7b46: 2b00 cmp r3, #0 7b48: d0ab beq.n 7aa2 lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; 7b4a: 78bb ldrb r3, [r7, #2] mask_buf[px_i] = px_opa; 7b4c: 7023 strb r3, [r4, #0] if(px_opa == 0) { 7b4e: 2b00 cmp r3, #0 7b50: d0ea beq.n 7b28 7b52: e7a8 b.n 7aa6 mask_buf[px_i] = LV_OPA_TRANSP; 7b54: 2300 movs r3, #0 7b56: 7023 strb r3, [r4, #0] continue; 7b58: e7e6 b.n 7b28 7b5a: 9b17 ldr r3, [sp, #92] ; 0x5c 7b5c: 9a0f ldr r2, [sp, #60] ; 0x3c 7b5e: 4694 mov ip, r2 7b60: 4463 add r3, ip 7b62: 001c movs r4, r3 } /*Apply the masks if any*/ if(other_mask_cnt) { 7b64: 9b1a ldr r3, [sp, #104] ; 0x68 7b66: 2b00 cmp r3, #0 7b68: d148 bne.n 7bfc 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; 7b6a: 9b15 ldr r3, [sp, #84] ; 0x54 7b6c: 9a1f ldr r2, [sp, #124] ; 0x7c 7b6e: 4694 mov ip, r2 7b70: 4463 add r3, ip 7b72: 9315 str r3, [sp, #84] ; 0x54 7b74: ab24 add r3, sp, #144 ; 0x90 7b76: 2264 movs r2, #100 ; 0x64 7b78: 189b adds r3, r3, r2 7b7a: 881b ldrh r3, [r3, #0] 7b7c: 3301 adds r3, #1 7b7e: aa24 add r2, sp, #144 ; 0x90 7b80: 2160 movs r1, #96 ; 0x60 7b82: 1852 adds r2, r2, r1 7b84: 8812 ldrh r2, [r2, #0] 7b86: 1a9b subs r3, r3, r2 if(px_i + lv_area_get_width(&draw_area) < mask_buf_size) { 7b88: b21b sxth r3, r3 7b8a: 191b adds r3, r3, r4 7b8c: 9a1d ldr r2, [sp, #116] ; 0x74 7b8e: 429a cmp r2, r3 7b90: d96c bls.n 7c6c blend_area.y2 ++; 7b92: aa28 add r2, sp, #160 ; 0xa0 7b94: 88d3 ldrh r3, [r2, #6] 7b96: 3301 adds r3, #1 7b98: 80d3 strh r3, [r2, #6] 7b9a: 940f str r4, [sp, #60] ; 0x3c for(y = 0; y < draw_area_h; y++) { 7b9c: 9b10 ldr r3, [sp, #64] ; 0x40 7b9e: 3301 adds r3, #1 7ba0: 9310 str r3, [sp, #64] ; 0x40 7ba2: 9a20 ldr r2, [sp, #128] ; 0x80 7ba4: 4293 cmp r3, r2 7ba6: db00 blt.n 7baa 7ba8: e08f b.n 7cca int32_t rot_x = disp_area->x1 + draw_area.x1 - map_area->x1; 7baa: 9b19 ldr r3, [sp, #100] ; 0x64 7bac: 2210 movs r2, #16 7bae: 5e9b ldrsh r3, [r3, r2] 7bb0: aa24 add r2, sp, #144 ; 0x90 7bb2: 2160 movs r1, #96 ; 0x60 7bb4: 1852 adds r2, r2, r1 7bb6: 2100 movs r1, #0 7bb8: 5e52 ldrsh r2, [r2, r1] 7bba: 189b adds r3, r3, r2 7bbc: 9a1c ldr r2, [sp, #112] ; 0x70 7bbe: 2100 movs r1, #0 7bc0: 5e52 ldrsh r2, [r2, r1] 7bc2: 1a9b subs r3, r3, r2 7bc4: 930d str r3, [sp, #52] ; 0x34 for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 7bc6: 9a17 ldr r2, [sp, #92] ; 0x5c 7bc8: 4691 mov r9, r2 7bca: 2a00 cmp r2, #0 7bcc: dd14 ble.n 7bf8 7bce: 9b18 ldr r3, [sp, #96] ; 0x60 7bd0: 4698 mov r8, r3 7bd2: 9a0f ldr r2, [sp, #60] ; 0x3c 7bd4: 4694 mov ip, r2 7bd6: 44e0 add r8, ip 7bd8: 0053 lsls r3, r2, #1 7bda: 9a1b ldr r2, [sp, #108] ; 0x6c 7bdc: 4692 mov sl, r2 7bde: 449a add sl, r3 7be0: 9f15 ldr r7, [sp, #84] ; 0x54 7be2: 2600 movs r6, #0 int32_t yt = y - dsc->cfg.pivot_y; 7be4: 9b21 ldr r3, [sp, #132] ; 0x84 7be6: 9a10 ldr r2, [sp, #64] ; 0x40 7be8: 4694 mov ip, r2 7bea: 4463 add r3, ip 7bec: b21b sxth r3, r3 7bee: 930e str r3, [sp, #56] ; 0x38 7bf0: 4644 mov r4, r8 7bf2: 4653 mov r3, sl 7bf4: 9305 str r3, [sp, #20] 7bf6: e7a1 b.n 7b3c 7bf8: 9c0f ldr r4, [sp, #60] ; 0x3c 7bfa: e7b3 b.n 7b64 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, 7bfc: 9b0f ldr r3, [sp, #60] ; 0x3c 7bfe: 9a18 ldr r2, [sp, #96] ; 0x60 7c00: 4694 mov ip, r2 7c02: 4463 add r3, ip 7c04: 001d movs r5, r3 7c06: ab24 add r3, sp, #144 ; 0x90 7c08: 2260 movs r2, #96 ; 0x60 7c0a: 189b adds r3, r3, r2 7c0c: 8819 ldrh r1, [r3, #0] 7c0e: ab24 add r3, sp, #144 ; 0x90 7c10: 3204 adds r2, #4 7c12: 189b adds r3, r3, r2 7c14: 881b ldrh r3, [r3, #0] 7c16: 3301 adds r3, #1 7c18: 1a5b subs r3, r3, r1 7c1a: b21b sxth r3, r3 7c1c: aa24 add r2, sp, #144 ; 0x90 7c1e: 2062 movs r0, #98 ; 0x62 7c20: 1812 adds r2, r2, r0 7c22: 8812 ldrh r2, [r2, #0] 7c24: 9e19 ldr r6, [sp, #100] ; 0x64 7c26: 8a70 ldrh r0, [r6, #18] 7c28: 1812 adds r2, r2, r0 7c2a: 9810 ldr r0, [sp, #64] ; 0x40 7c2c: 4684 mov ip, r0 7c2e: 4462 add r2, ip 7c30: b212 sxth r2, r2 7c32: 8a30 ldrh r0, [r6, #16] 7c34: 1809 adds r1, r1, r0 7c36: b209 sxth r1, r1 7c38: 0028 movs r0, r5 7c3a: 4e3a ldr r6, [pc, #232] ; (7d24 ) 7c3c: 47b0 blx r6 if(mask_res_sub == LV_DRAW_MASK_RES_TRANSP) { 7c3e: 2800 cmp r0, #0 7c40: d003 beq.n 7c4a else if(mask_res_sub == LV_DRAW_MASK_RES_CHANGED) { 7c42: 2802 cmp r0, #2 7c44: d191 bne.n 7b6a mask_res = LV_DRAW_MASK_RES_CHANGED; 7c46: 901e str r0, [sp, #120] ; 0x78 7c48: e78f b.n 7b6a 7c4a: ab24 add r3, sp, #144 ; 0x90 7c4c: 2264 movs r2, #100 ; 0x64 7c4e: 189b adds r3, r3, r2 7c50: 8819 ldrh r1, [r3, #0] 7c52: 3101 adds r1, #1 7c54: ab24 add r3, sp, #144 ; 0x90 7c56: 3a04 subs r2, #4 7c58: 189b adds r3, r3, r2 7c5a: 881b ldrh r3, [r3, #0] 7c5c: 1ac9 subs r1, r1, r3 _lv_memset_00(mask_buf + px_i_start, lv_area_get_width(&draw_area)); 7c5e: b209 sxth r1, r1 7c60: 0028 movs r0, r5 7c62: 4b31 ldr r3, [pc, #196] ; (7d28 ) 7c64: 4798 blx r3 mask_res = LV_DRAW_MASK_RES_CHANGED; 7c66: 2302 movs r3, #2 7c68: 931e str r3, [sp, #120] ; 0x78 7c6a: e77e b.n 7b6a } else { _lv_blend_map(clip_area, &blend_area, map2, mask_buf, mask_res, draw_dsc->opa, draw_dsc->blend_mode); 7c6c: ac28 add r4, sp, #160 ; 0xa0 7c6e: 9e0a ldr r6, [sp, #40] ; 0x28 7c70: 7bb3 ldrb r3, [r6, #14] 7c72: 9302 str r3, [sp, #8] 7c74: 7833 ldrb r3, [r6, #0] 7c76: 9301 str r3, [sp, #4] 7c78: 9b1e ldr r3, [sp, #120] ; 0x78 7c7a: 9300 str r3, [sp, #0] 7c7c: 9b18 ldr r3, [sp, #96] ; 0x60 7c7e: 9a1b ldr r2, [sp, #108] ; 0x6c 7c80: 0021 movs r1, r4 7c82: 9824 ldr r0, [sp, #144] ; 0x90 7c84: 4d29 ldr r5, [pc, #164] ; (7d2c ) 7c86: 47a8 blx r5 blend_area.y1 = blend_area.y2 + 1; 7c88: 88e3 ldrh r3, [r4, #6] 7c8a: 3301 adds r3, #1 7c8c: b21b sxth r3, r3 7c8e: 8063 strh r3, [r4, #2] blend_area.y2 = blend_area.y1; 7c90: 80e3 strh r3, [r4, #6] px_i = 0; mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 7c92: 2302 movs r3, #2 7c94: 931e str r3, [sp, #120] ; 0x78 7c96: 9b27 ldr r3, [sp, #156] ; 0x9c 7c98: 2b00 cmp r3, #0 7c9a: d109 bne.n 7cb0 7c9c: 8873 ldrh r3, [r6, #2] 7c9e: 2b00 cmp r3, #0 7ca0: d106 bne.n 7cb0 7ca2: 8933 ldrh r3, [r6, #8] 7ca4: 3b01 subs r3, #1 7ca6: 3bff subs r3, #255 ; 0xff 7ca8: 1e5a subs r2, r3, #1 7caa: 4193 sbcs r3, r2 7cac: 3301 adds r3, #1 7cae: 931e str r3, [sp, #120] ; 0x78 px_i = 0; 7cb0: 2300 movs r3, #0 7cb2: 930f str r3, [sp, #60] ; 0x3c 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) { 7cb4: 9b1a ldr r3, [sp, #104] ; 0x68 7cb6: 2b00 cmp r3, #0 7cb8: d100 bne.n 7cbc 7cba: e76f b.n 7b9c _lv_memset_ff(mask_buf, mask_buf_size); 7cbc: 991d ldr r1, [sp, #116] ; 0x74 7cbe: 9818 ldr r0, [sp, #96] ; 0x60 7cc0: 4b1b ldr r3, [pc, #108] ; (7d30 ) 7cc2: 4798 blx r3 px_i = 0; 7cc4: 2300 movs r3, #0 7cc6: 930f str r3, [sp, #60] ; 0x3c 7cc8: e768 b.n 7b9c } } } /*Flush the last part*/ if(blend_area.y1 != blend_area.y2) { 7cca: aa28 add r2, sp, #160 ; 0xa0 7ccc: 2106 movs r1, #6 7cce: 5e53 ldrsh r3, [r2, r1] 7cd0: 2102 movs r1, #2 7cd2: 5e52 ldrsh r2, [r2, r1] 7cd4: 429a cmp r2, r3 7cd6: d00e beq.n 7cf6 blend_area.y2--; 7cd8: a928 add r1, sp, #160 ; 0xa0 7cda: 3b01 subs r3, #1 7cdc: 80cb strh r3, [r1, #6] _lv_blend_map(clip_area, &blend_area, map2, mask_buf, mask_res, draw_dsc->opa, draw_dsc->blend_mode); 7cde: 9a0a ldr r2, [sp, #40] ; 0x28 7ce0: 7b93 ldrb r3, [r2, #14] 7ce2: 9302 str r3, [sp, #8] 7ce4: 7813 ldrb r3, [r2, #0] 7ce6: 9301 str r3, [sp, #4] 7ce8: 9b1e ldr r3, [sp, #120] ; 0x78 7cea: 9300 str r3, [sp, #0] 7cec: 9b18 ldr r3, [sp, #96] ; 0x60 7cee: 9a1b ldr r2, [sp, #108] ; 0x6c 7cf0: 9824 ldr r0, [sp, #144] ; 0x90 7cf2: 4c0e ldr r4, [pc, #56] ; (7d2c ) 7cf4: 47a0 blx r4 } _lv_mem_buf_release(mask_buf); 7cf6: 9818 ldr r0, [sp, #96] ; 0x60 7cf8: 4c0e ldr r4, [pc, #56] ; (7d34 ) 7cfa: 47a0 blx r4 _lv_mem_buf_release(map2); 7cfc: 981b ldr r0, [sp, #108] ; 0x6c 7cfe: 47a0 blx r4 } } } 7d00: b03f add sp, #252 ; 0xfc 7d02: bc3c pop {r2, r3, r4, r5} 7d04: 4690 mov r8, r2 7d06: 4699 mov r9, r3 7d08: 46a2 mov sl, r4 7d0a: 46ab mov fp, r5 7d0c: bdf0 pop {r4, r5, r6, r7, pc} 7d0e: 46c0 nop ; (mov r8, r8) 7d10: 0000d0ed .word 0x0000d0ed 7d14: 0000d20d .word 0x0000d20d 7d18: 0000d615 .word 0x0000d615 7d1c: 000187a4 .word 0x000187a4 7d20: fffff81f .word 0xfffff81f 7d24: 0000a625 .word 0x0000a625 7d28: 0001104d .word 0x0001104d 7d2c: 00006951 .word 0x00006951 7d30: 000110f1 .word 0x000110f1 7d34: 00010bd5 .word 0x00010bd5 if(other_mask_cnt == 0 && !transform && !chroma_key && draw_dsc->recolor_opa == LV_OPA_TRANSP && alpha_byte) { 7d38: 2301 movs r3, #1 7d3a: 469b mov fp, r3 7d3c: 9b1a ldr r3, [sp, #104] ; 0x68 7d3e: 2b00 cmp r3, #0 7d40: d000 beq.n 7d44 7d42: e595 b.n 7870 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); 7d44: a83c add r0, sp, #240 ; 0xf0 7d46: 4b41 ldr r3, [pc, #260] ; (7e4c ) 7d48: 4798 blx r3 7d4a: 23f0 movs r3, #240 ; 0xf0 7d4c: 005b lsls r3, r3, #1 7d4e: 4298 cmp r0, r3 7d50: d800 bhi.n 7d54 7d52: e598 b.n 7886 lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 7d54: 20f0 movs r0, #240 ; 0xf0 7d56: 0080 lsls r0, r0, #2 7d58: 4c3d ldr r4, [pc, #244] ; (7e50 ) 7d5a: 47a0 blx r4 7d5c: 901b str r0, [sp, #108] ; 0x6c lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 7d5e: 26f0 movs r6, #240 ; 0xf0 7d60: 0076 lsls r6, r6, #1 7d62: 0030 movs r0, r6 7d64: 47a0 blx r4 7d66: 9018 str r0, [sp, #96] ; 0x60 _lv_memset_00(&trans_dsc, sizeof(lv_img_transform_dsc_t)); 7d68: 2148 movs r1, #72 ; 0x48 7d6a: a82a add r0, sp, #168 ; 0xa8 7d6c: 4b39 ldr r3, [pc, #228] ; (7e54 ) 7d6e: 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); 7d70: 961d str r6, [sp, #116] ; 0x74 if(alpha_byte) cf = LV_IMG_CF_TRUE_COLOR_ALPHA; 7d72: 2205 movs r2, #5 7d74: 9b07 ldr r3, [sp, #28] 7d76: 2b00 cmp r3, #0 7d78: d104 bne.n 7d84 lv_img_cf_t cf = LV_IMG_CF_TRUE_COLOR; 7d7a: 3a01 subs r2, #1 else if(chroma_key) cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED; 7d7c: 9b0b ldr r3, [sp, #44] ; 0x2c 7d7e: 2b00 cmp r3, #0 7d80: d000 beq.n 7d84 7d82: 3202 adds r2, #2 trans_dsc.cfg.angle = draw_dsc->angle; 7d84: a82a add r0, sp, #168 ; 0xa8 7d86: 9c0a ldr r4, [sp, #40] ; 0x28 7d88: 8863 ldrh r3, [r4, #2] 7d8a: 8183 strh r3, [r0, #12] trans_dsc.cfg.zoom = draw_dsc->zoom; 7d8c: 8923 ldrh r3, [r4, #8] 7d8e: 81c3 strh r3, [r0, #14] trans_dsc.cfg.src = map_p; 7d90: 4643 mov r3, r8 7d92: 932a str r3, [sp, #168] ; 0xa8 trans_dsc.cfg.src_w = map_w; 7d94: 8087 strh r7, [r0, #4] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 7d96: 991c ldr r1, [sp, #112] ; 0x70 7d98: 88cb ldrh r3, [r1, #6] 7d9a: 3301 adds r3, #1 7d9c: 8849 ldrh r1, [r1, #2] 7d9e: 1a5b subs r3, r3, r1 trans_dsc.cfg.src_h = lv_area_get_height(map_area);; 7da0: 80c3 strh r3, [r0, #6] trans_dsc.cfg.cf = cf; 7da2: 7482 strb r2, [r0, #18] trans_dsc.cfg.pivot_x = draw_dsc->pivot.x; 7da4: 88a3 ldrh r3, [r4, #4] 7da6: 8103 strh r3, [r0, #8] trans_dsc.cfg.pivot_y = draw_dsc->pivot.y; 7da8: 88e3 ldrh r3, [r4, #6] 7daa: 8143 strh r3, [r0, #10] trans_dsc.cfg.color = draw_dsc->recolor; 7dac: 89a3 ldrh r3, [r4, #12] 7dae: 8203 strh r3, [r0, #16] trans_dsc.cfg.antialias = draw_dsc->antialias; 7db0: 7be3 ldrb r3, [r4, #15] 7db2: 07db lsls r3, r3, #31 7db4: 0fdb lsrs r3, r3, #31 7db6: 74c3 strb r3, [r0, #19] _lv_img_buf_transform_init(&trans_dsc); 7db8: 4b27 ldr r3, [pc, #156] ; (7e58 ) 7dba: 4798 blx r3 lv_opa_t recolor_opa_inv = 255 - draw_dsc->recolor_opa; 7dbc: 990a ldr r1, [sp, #40] ; 0x28 7dbe: 7a8b ldrb r3, [r1, #10] 7dc0: 43da mvns r2, r3 7dc2: b2d2 uxtb r2, r2 7dc4: 9213 str r2, [sp, #76] ; 0x4c if(draw_dsc->recolor_opa != 0) { 7dc6: 2b00 cmp r3, #0 7dc8: d100 bne.n 7dcc 7dca: e571 b.n 78b0 out[0] = (uint16_t) LV_COLOR_GET_R(c) * mix; 7dcc: b29b uxth r3, r3 7dce: 7b4a ldrb r2, [r1, #13] 7dd0: 08d2 lsrs r2, r2, #3 7dd2: 435a muls r2, r3 7dd4: 9211 str r2, [sp, #68] ; 0x44 out[1] = (uint16_t) LV_COLOR_GET_G(c) * mix; 7dd6: 898a ldrh r2, [r1, #12] 7dd8: 0552 lsls r2, r2, #21 7dda: 0e92 lsrs r2, r2, #26 7ddc: 435a muls r2, r3 7dde: 9212 str r2, [sp, #72] ; 0x48 out[2] = (uint16_t) LV_COLOR_GET_B(c) * mix; 7de0: 7b0a ldrb r2, [r1, #12] 7de2: 06d2 lsls r2, r2, #27 7de4: 0ed2 lsrs r2, r2, #27 7de6: 435a muls r2, r3 7de8: 9214 str r2, [sp, #80] ; 0x50 mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 7dea: 9b0b ldr r3, [sp, #44] ; 0x2c 7dec: 9a07 ldr r2, [sp, #28] 7dee: 4313 orrs r3, r2 7df0: 9327 str r3, [sp, #156] ; 0x9c 7df2: 2202 movs r2, #2 7df4: 921e str r2, [sp, #120] ; 0x78 7df6: 2b00 cmp r3, #0 7df8: d10a bne.n 7e10 7dfa: 9a0a ldr r2, [sp, #40] ; 0x28 7dfc: 8853 ldrh r3, [r2, #2] 7dfe: 2b00 cmp r3, #0 7e00: d106 bne.n 7e10 7e02: 8913 ldrh r3, [r2, #8] 7e04: 3b01 subs r3, #1 7e06: 3bff subs r3, #255 ; 0xff 7e08: 1e5a subs r2, r3, #1 7e0a: 4193 sbcs r3, r2 7e0c: 3301 adds r3, #1 7e0e: 931e str r3, [sp, #120] ; 0x78 if(other_mask_cnt) { 7e10: 9b1a ldr r3, [sp, #104] ; 0x68 7e12: 2b00 cmp r3, #0 7e14: d000 beq.n 7e18 7e16: e550 b.n 78ba int32_t rot_y = disp_area->y1 + draw_area.y1 - map_area->y1; 7e18: 9b19 ldr r3, [sp, #100] ; 0x64 7e1a: 2212 movs r2, #18 7e1c: 5e9b ldrsh r3, [r3, r2] 7e1e: aa3c add r2, sp, #240 ; 0xf0 7e20: 2102 movs r1, #2 7e22: 5e52 ldrsh r2, [r2, r1] 7e24: 189b adds r3, r3, r2 7e26: 9a1c ldr r2, [sp, #112] ; 0x70 7e28: 2102 movs r1, #2 7e2a: 5e52 ldrsh r2, [r2, r1] 7e2c: 1a9b subs r3, r3, r2 7e2e: 9321 str r3, [sp, #132] ; 0x84 for(y = 0; y < draw_area_h; y++) { 7e30: 9520 str r5, [sp, #128] ; 0x80 7e32: 2d00 cmp r5, #0 7e34: dc00 bgt.n 7e38 7e36: e748 b.n 7cca map_buf_tmp += map_w * px_size_byte; 7e38: 4653 mov r3, sl 7e3a: 437b muls r3, r7 7e3c: 931f str r3, [sp, #124] ; 0x7c 7e3e: 2300 movs r3, #0 7e40: 9310 str r3, [sp, #64] ; 0x40 7e42: 930f str r3, [sp, #60] ; 0x3c ret = _lv_img_buf_transform_anti_alias(dsc); 7e44: 464b mov r3, r9 7e46: 9306 str r3, [sp, #24] 7e48: e6af b.n 7baa 7e4a: 46c0 nop ; (mov r8, r8) 7e4c: 0000fbf3 .word 0x0000fbf3 7e50: 00010ec1 .word 0x00010ec1 7e54: 0001104d .word 0x0001104d 7e58: 0000d311 .word 0x0000d311 00007e5c : static void show_error(const lv_area_t * coords, const lv_area_t * clip_area, const char * msg) { 7e5c: b5f0 push {r4, r5, r6, r7, lr} 7e5e: b09f sub sp, #124 ; 0x7c 7e60: 0005 movs r5, r0 7e62: 000e movs r6, r1 7e64: 0017 movs r7, r2 lv_draw_rect_dsc_t rect_dsc; lv_draw_rect_dsc_init(&rect_dsc); 7e66: ac09 add r4, sp, #36 ; 0x24 7e68: 0020 movs r0, r4 7e6a: 4b0b ldr r3, [pc, #44] ; (7e98 ) 7e6c: 4798 blx r3 rect_dsc.bg_color = LV_COLOR_WHITE; 7e6e: 4b0b ldr r3, [pc, #44] ; (7e9c ) 7e70: 881b ldrh r3, [r3, #0] 7e72: 8063 strh r3, [r4, #2] lv_draw_rect(coords, clip_area, &rect_dsc); 7e74: 0022 movs r2, r4 7e76: 0031 movs r1, r6 7e78: 0028 movs r0, r5 7e7a: 4b09 ldr r3, [pc, #36] ; (7ea0 ) 7e7c: 4798 blx r3 lv_draw_label_dsc_t label_dsc; lv_draw_label_dsc_init(&label_dsc); 7e7e: a802 add r0, sp, #8 7e80: 4b08 ldr r3, [pc, #32] ; (7ea4 ) 7e82: 4798 blx r3 lv_draw_label(coords, clip_area, &label_dsc, msg, NULL); 7e84: 2300 movs r3, #0 7e86: 9300 str r3, [sp, #0] 7e88: 003b movs r3, r7 7e8a: aa02 add r2, sp, #8 7e8c: 0031 movs r1, r6 7e8e: 0028 movs r0, r5 7e90: 4c05 ldr r4, [pc, #20] ; (7ea8 ) 7e92: 47a0 blx r4 } 7e94: b01f add sp, #124 ; 0x7c 7e96: bdf0 pop {r4, r5, r6, r7, pc} 7e98: 0000ab21 .word 0x0000ab21 7e9c: 000187d4 .word 0x000187d4 7ea0: 0000abc5 .word 0x0000abc5 7ea4: 000081c5 .word 0x000081c5 7ea8: 00008215 .word 0x00008215 00007eac : { 7eac: b510 push {r4, lr} 7eae: 0004 movs r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_img_dsc_t)); 7eb0: 2110 movs r1, #16 7eb2: 4b0a ldr r3, [pc, #40] ; (7edc ) 7eb4: 4798 blx r3 dsc->recolor = LV_COLOR_BLACK; 7eb6: 7b23 ldrb r3, [r4, #12] 7eb8: 221f movs r2, #31 7eba: 4393 bics r3, r2 7ebc: 7323 strb r3, [r4, #12] 7ebe: 89a3 ldrh r3, [r4, #12] 7ec0: 4a07 ldr r2, [pc, #28] ; (7ee0 ) 7ec2: 4013 ands r3, r2 7ec4: 81a3 strh r3, [r4, #12] 7ec6: 2300 movs r3, #0 7ec8: 7363 strb r3, [r4, #13] dsc->opa = LV_OPA_COVER; 7eca: 33ff adds r3, #255 ; 0xff 7ecc: 7023 strb r3, [r4, #0] dsc->zoom = LV_IMG_ZOOM_NONE; 7ece: 3301 adds r3, #1 7ed0: 8123 strh r3, [r4, #8] dsc->antialias = LV_ANTIALIAS; 7ed2: 7be3 ldrb r3, [r4, #15] 7ed4: 2201 movs r2, #1 7ed6: 4313 orrs r3, r2 7ed8: 73e3 strb r3, [r4, #15] } 7eda: bd10 pop {r4, pc} 7edc: 0001104d .word 0x0001104d 7ee0: fffff81f .word 0xfffff81f 00007ee4 : switch(cf) { 7ee4: 3804 subs r0, #4 7ee6: b2c3 uxtb r3, r0 7ee8: 2b0a cmp r3, #10 7eea: d80f bhi.n 7f0c 7eec: 0098 lsls r0, r3, #2 7eee: 4b08 ldr r3, [pc, #32] ; (7f10 ) 7ef0: 581b ldr r3, [r3, r0] 7ef2: 469f mov pc, r3 px_size = LV_COLOR_SIZE; 7ef4: 2010 movs r0, #16 7ef6: e00a b.n 7f0e px_size = LV_IMG_PX_SIZE_ALPHA_BYTE << 3; 7ef8: 2018 movs r0, #24 break; 7efa: e008 b.n 7f0e px_size = 1; 7efc: 2001 movs r0, #1 break; 7efe: e006 b.n 7f0e px_size = 2; 7f00: 2002 movs r0, #2 break; 7f02: e004 b.n 7f0e px_size = 4; 7f04: 2004 movs r0, #4 break; 7f06: e002 b.n 7f0e px_size = 8; 7f08: 2008 movs r0, #8 break; 7f0a: e000 b.n 7f0e px_size = 0; 7f0c: 2000 movs r0, #0 } 7f0e: 4770 bx lr 7f10: 000187a8 .word 0x000187a8 00007f14 : switch(cf) { 7f14: 2803 cmp r0, #3 7f16: d005 beq.n 7f24 7f18: d302 bcc.n 7f20 7f1a: 3806 subs r0, #6 7f1c: 2804 cmp r0, #4 7f1e: d901 bls.n 7f24 is_chroma_keyed = false; 7f20: 2000 movs r0, #0 } 7f22: 4770 bx lr is_chroma_keyed = true; 7f24: 2001 movs r0, #1 7f26: e7fc b.n 7f22 00007f28 : switch(cf) { 7f28: 2805 cmp r0, #5 7f2a: d007 beq.n 7f3c 7f2c: d803 bhi.n 7f36 7f2e: 2802 cmp r0, #2 7f30: d004 beq.n 7f3c has_alpha = false; 7f32: 2000 movs r0, #0 } 7f34: 4770 bx lr switch(cf) { 7f36: 3807 subs r0, #7 7f38: 2807 cmp r0, #7 7f3a: d8fa bhi.n 7f32 has_alpha = true; 7f3c: 2001 movs r0, #1 7f3e: e7f9 b.n 7f34 00007f40 : { 7f40: b5f0 push {r4, r5, r6, r7, lr} 7f42: 46de mov lr, fp 7f44: 4657 mov r7, sl 7f46: 464e mov r6, r9 7f48: 4645 mov r5, r8 7f4a: b5e0 push {r5, r6, r7, lr} 7f4c: b091 sub sp, #68 ; 0x44 7f4e: 0004 movs r4, r0 7f50: 9103 str r1, [sp, #12] 7f52: 001e movs r6, r3 if(src == NULL) { 7f54: 2a00 cmp r2, #0 7f56: d009 beq.n 7f6c if(dsc->opa <= LV_OPA_MIN) return; 7f58: 781b ldrb r3, [r3, #0] 7f5a: 2b05 cmp r3, #5 7f5c: d80a bhi.n 7f74 } 7f5e: b011 add sp, #68 ; 0x44 7f60: bc3c pop {r2, r3, r4, r5} 7f62: 4690 mov r8, r2 7f64: 4699 mov r9, r3 7f66: 46a2 mov sl, r4 7f68: 46ab mov fp, r5 7f6a: bdf0 pop {r4, r5, r6, r7, pc} show_error(coords, mask, "No\ndata"); 7f6c: 4a6f ldr r2, [pc, #444] ; (812c ) 7f6e: 4b70 ldr r3, [pc, #448] ; (8130 ) 7f70: 4798 blx r3 return; 7f72: e7f4 b.n 7f5e lv_img_cache_entry_t * cdsc = _lv_img_cache_open(src, draw_dsc->recolor); 7f74: 89b1 ldrh r1, [r6, #12] 7f76: 0010 movs r0, r2 7f78: 4b6e ldr r3, [pc, #440] ; (8134 ) 7f7a: 4798 blx r3 7f7c: 1e07 subs r7, r0, #0 if(cdsc == NULL) return LV_RES_INV; 7f7e: d100 bne.n 7f82 7f80: e09e b.n 80c0 bool chroma_keyed = lv_img_cf_is_chroma_keyed(cdsc->dec_dsc.header.cf); 7f82: 7b05 ldrb r5, [r0, #12] 7f84: 06ed lsls r5, r5, #27 7f86: 0eed lsrs r5, r5, #27 7f88: 0028 movs r0, r5 7f8a: 4b6b ldr r3, [pc, #428] ; (8138 ) 7f8c: 4798 blx r3 7f8e: 9004 str r0, [sp, #16] 7f90: 9006 str r0, [sp, #24] bool alpha_byte = lv_img_cf_has_alpha(cdsc->dec_dsc.header.cf); 7f92: 0028 movs r0, r5 7f94: 4b69 ldr r3, [pc, #420] ; (813c ) 7f96: 4798 blx r3 7f98: 9005 str r0, [sp, #20] 7f9a: 9007 str r0, [sp, #28] if(cdsc->dec_dsc.error_msg != NULL) { 7f9c: 69ba ldr r2, [r7, #24] 7f9e: 2a00 cmp r2, #0 7fa0: d004 beq.n 7fac show_error(coords, clip_area, cdsc->dec_dsc.error_msg); 7fa2: 9903 ldr r1, [sp, #12] 7fa4: 0020 movs r0, r4 7fa6: 4b62 ldr r3, [pc, #392] ; (8130 ) 7fa8: 4798 blx r3 7faa: e7d8 b.n 7f5e else if(cdsc->dec_dsc.img_data) { 7fac: 693b ldr r3, [r7, #16] 7fae: 2b00 cmp r3, #0 7fb0: d045 beq.n 803e 7fb2: 2300 movs r3, #0 7fb4: a90c add r1, sp, #48 ; 0x30 7fb6: 5ce2 ldrb r2, [r4, r3] 7fb8: 545a strb r2, [r3, r1] 7fba: 3301 adds r3, #1 while(len) { 7fbc: 2b08 cmp r3, #8 7fbe: d1fa bne.n 7fb6 if(draw_dsc->angle || draw_dsc->zoom != LV_IMG_ZOOM_NONE) { 7fc0: 8873 ldrh r3, [r6, #2] 7fc2: 2b00 cmp r3, #0 7fc4: d104 bne.n 7fd0 7fc6: 2280 movs r2, #128 ; 0x80 7fc8: 0052 lsls r2, r2, #1 7fca: 8931 ldrh r1, [r6, #8] 7fcc: 4291 cmp r1, r2 7fce: d023 beq.n 8018 _lv_img_buf_get_transformed_area(&map_area_rot, w, h, draw_dsc->angle, draw_dsc->zoom, &draw_dsc->pivot); 7fd0: b21b sxth r3, r3 7fd2: 88e2 ldrh r2, [r4, #6] 7fd4: 3201 adds r2, #1 7fd6: 8861 ldrh r1, [r4, #2] 7fd8: 1a52 subs r2, r2, r1 7fda: b212 sxth r2, r2 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 7fdc: 88a1 ldrh r1, [r4, #4] 7fde: 3101 adds r1, #1 7fe0: 8820 ldrh r0, [r4, #0] 7fe2: 1a09 subs r1, r1, r0 7fe4: b209 sxth r1, r1 7fe6: a80c add r0, sp, #48 ; 0x30 7fe8: 0005 movs r5, r0 7fea: 1d30 adds r0, r6, #4 7fec: 9001 str r0, [sp, #4] 7fee: 8930 ldrh r0, [r6, #8] 7ff0: 9000 str r0, [sp, #0] 7ff2: 9506 str r5, [sp, #24] 7ff4: 0028 movs r0, r5 7ff6: 4d52 ldr r5, [pc, #328] ; (8140 ) 7ff8: 47a8 blx r5 map_area_rot.x1 += coords->x1; 7ffa: 8822 ldrh r2, [r4, #0] 7ffc: 9806 ldr r0, [sp, #24] 7ffe: 8803 ldrh r3, [r0, #0] 8000: 18d3 adds r3, r2, r3 8002: 8003 strh r3, [r0, #0] map_area_rot.y1 += coords->y1; 8004: 8863 ldrh r3, [r4, #2] 8006: 8841 ldrh r1, [r0, #2] 8008: 1859 adds r1, r3, r1 800a: 8041 strh r1, [r0, #2] map_area_rot.x2 += coords->x1; 800c: 8881 ldrh r1, [r0, #4] 800e: 1852 adds r2, r2, r1 8010: 8082 strh r2, [r0, #4] map_area_rot.y2 += coords->y1; 8012: 88c2 ldrh r2, [r0, #6] 8014: 189b adds r3, r3, r2 8016: 80c3 strh r3, [r0, #6] union_ok = _lv_area_intersect(&mask_com, clip_area, &map_area_rot); 8018: aa0c add r2, sp, #48 ; 0x30 801a: 9903 ldr r1, [sp, #12] 801c: a80e add r0, sp, #56 ; 0x38 801e: 4b49 ldr r3, [pc, #292] ; (8144 ) 8020: 4798 blx r3 if(union_ok == false) { 8022: 2800 cmp r0, #0 8024: d100 bne.n 8028 8026: e79a b.n 7f5e lv_draw_map(coords, &mask_com, cdsc->dec_dsc.img_data, draw_dsc, chroma_keyed, alpha_byte); 8028: 693a ldr r2, [r7, #16] 802a: 9b05 ldr r3, [sp, #20] 802c: 9301 str r3, [sp, #4] 802e: 9b04 ldr r3, [sp, #16] 8030: 9300 str r3, [sp, #0] 8032: 0033 movs r3, r6 8034: a90e add r1, sp, #56 ; 0x38 8036: 0020 movs r0, r4 8038: 4c43 ldr r4, [pc, #268] ; (8148 ) 803a: 47a0 blx r4 803c: e78f b.n 7f5e union_ok = _lv_area_intersect(&mask_com, clip_area, coords); 803e: 0022 movs r2, r4 8040: 9903 ldr r1, [sp, #12] 8042: a80a add r0, sp, #40 ; 0x28 8044: 4b3f ldr r3, [pc, #252] ; (8144 ) 8046: 4798 blx r3 if(union_ok == false) { 8048: 2800 cmp r0, #0 804a: d100 bne.n 804e 804c: e787 b.n 7f5e 804e: aa0a add r2, sp, #40 ; 0x28 8050: 8893 ldrh r3, [r2, #4] 8052: 3301 adds r3, #1 8054: 8812 ldrh r2, [r2, #0] 8056: 1a9b subs r3, r3, r2 8058: b21b sxth r3, r3 805a: 9305 str r3, [sp, #20] uint8_t * buf = _lv_mem_buf_get(lv_area_get_width(&mask_com) * 805c: 0058 lsls r0, r3, #1 805e: 469c mov ip, r3 8060: 4460 add r0, ip 8062: 4b3a ldr r3, [pc, #232] ; (814c ) 8064: 4798 blx r3 8066: 9004 str r0, [sp, #16] 8068: 2300 movs r3, #0 *d8 = *s8; 806a: a80c add r0, sp, #48 ; 0x30 806c: a90a add r1, sp, #40 ; 0x28 806e: 5c5a ldrb r2, [r3, r1] 8070: 541a strb r2, [r3, r0] 8072: 3301 adds r3, #1 while(len) { 8074: 2b08 cmp r3, #8 8076: d1fa bne.n 806e lv_area_set_height(&line, 1); 8078: 2101 movs r1, #1 807a: a80c add r0, sp, #48 ; 0x30 807c: 4b34 ldr r3, [pc, #208] ; (8150 ) 807e: 4798 blx r3 int32_t x = mask_com.x1 - coords->x1; 8080: aa0a add r2, sp, #40 ; 0x28 8082: 2100 movs r1, #0 8084: 5e53 ldrsh r3, [r2, r1] 8086: 469c mov ip, r3 8088: 2000 movs r0, #0 808a: 5e21 ldrsh r1, [r4, r0] int32_t y = mask_com.y1 - coords->y1; 808c: 2002 movs r0, #2 808e: 5e15 ldrsh r5, [r2, r0] 8090: 2302 movs r3, #2 8092: 5ee0 ldrsh r0, [r4, r3] 8094: 1a28 subs r0, r5, r0 for(row = mask_com.y1; row <= mask_com.y2; row++) { 8096: 2306 movs r3, #6 8098: 5ed2 ldrsh r2, [r2, r3] 809a: 4295 cmp r5, r2 809c: dc42 bgt.n 8124 union_ok = _lv_area_intersect(&mask_line, clip_area, &line); 809e: 4a29 ldr r2, [pc, #164] ; (8144 ) 80a0: 4693 mov fp, r2 read_res = lv_img_decoder_read_line(&cdsc->dec_dsc, x, y, width, buf); 80a2: 4663 mov r3, ip 80a4: 1a5b subs r3, r3, r1 80a6: b21b sxth r3, r3 80a8: 9308 str r3, [sp, #32] 80aa: 9409 str r4, [sp, #36] ; 0x24 80ac: 46b2 mov sl, r6 80ae: 4680 mov r8, r0 80b0: e012 b.n 80d8 80b2: 9c09 ldr r4, [sp, #36] ; 0x24 lv_img_decoder_close(&cdsc->dec_dsc); 80b4: 0038 movs r0, r7 80b6: 4b27 ldr r3, [pc, #156] ; (8154 ) 80b8: 4798 blx r3 _lv_mem_buf_release(buf); 80ba: 9804 ldr r0, [sp, #16] 80bc: 4b26 ldr r3, [pc, #152] ; (8158 ) 80be: 4798 blx r3 show_error(coords, mask, "No\ndata"); 80c0: 4a1a ldr r2, [pc, #104] ; (812c ) 80c2: 9903 ldr r1, [sp, #12] 80c4: 0020 movs r0, r4 80c6: 4b1a ldr r3, [pc, #104] ; (8130 ) 80c8: 4798 blx r3 return; 80ca: e748 b.n 7f5e for(row = mask_com.y1; row <= mask_com.y2; row++) { 80cc: 3501 adds r5, #1 80ce: ab0a add r3, sp, #40 ; 0x28 80d0: 2206 movs r2, #6 80d2: 5e9b ldrsh r3, [r3, r2] 80d4: 429d cmp r5, r3 80d6: dc25 bgt.n 8124 union_ok = _lv_area_intersect(&mask_line, clip_area, &line); 80d8: aa0c add r2, sp, #48 ; 0x30 80da: 9903 ldr r1, [sp, #12] 80dc: a80e add r0, sp, #56 ; 0x38 80de: 47d8 blx fp if(union_ok == false) continue; 80e0: 2800 cmp r0, #0 80e2: d0f3 beq.n 80cc read_res = lv_img_decoder_read_line(&cdsc->dec_dsc, x, y, width, buf); 80e4: 4643 mov r3, r8 80e6: b21a sxth r2, r3 80e8: 9b04 ldr r3, [sp, #16] 80ea: 9300 str r3, [sp, #0] 80ec: 9b05 ldr r3, [sp, #20] 80ee: 9908 ldr r1, [sp, #32] 80f0: 0038 movs r0, r7 80f2: 4c1a ldr r4, [pc, #104] ; (815c ) 80f4: 47a0 blx r4 if(read_res != LV_RES_OK) { 80f6: 2801 cmp r0, #1 80f8: d1db bne.n 80b2 lv_draw_map(&line, &mask_line, buf, draw_dsc, chroma_keyed, alpha_byte); 80fa: ac0c add r4, sp, #48 ; 0x30 80fc: 9b07 ldr r3, [sp, #28] 80fe: 9301 str r3, [sp, #4] 8100: 9b06 ldr r3, [sp, #24] 8102: 9300 str r3, [sp, #0] 8104: 4653 mov r3, sl 8106: 9a04 ldr r2, [sp, #16] 8108: a90e add r1, sp, #56 ; 0x38 810a: 0020 movs r0, r4 810c: 4e0e ldr r6, [pc, #56] ; (8148 ) 810e: 47b0 blx r6 line.y1++; 8110: 8863 ldrh r3, [r4, #2] 8112: 3301 adds r3, #1 8114: 8063 strh r3, [r4, #2] line.y2++; 8116: 88e3 ldrh r3, [r4, #6] 8118: 3301 adds r3, #1 811a: 80e3 strh r3, [r4, #6] y++; 811c: 2301 movs r3, #1 811e: 469c mov ip, r3 8120: 44e0 add r8, ip 8122: e7d3 b.n 80cc _lv_mem_buf_release(buf); 8124: 9804 ldr r0, [sp, #16] 8126: 4b0c ldr r3, [pc, #48] ; (8158 ) 8128: 4798 blx r3 812a: e718 b.n 7f5e 812c: 000187d8 .word 0x000187d8 8130: 00007e5d .word 0x00007e5d 8134: 0000da69 .word 0x0000da69 8138: 00007f15 .word 0x00007f15 813c: 00007f29 .word 0x00007f29 8140: 0000d445 .word 0x0000d445 8144: 0000fc0f .word 0x0000fc0f 8148: 000075b5 .word 0x000075b5 814c: 00010ec1 .word 0x00010ec1 8150: 0000fbe9 .word 0x0000fbe9 8154: 0000e685 .word 0x0000e685 8158: 00010bd5 .word 0x00010bd5 815c: 0000e661 .word 0x0000e661 00008160 : if(src == NULL) return img_src_type; 8160: 2800 cmp r0, #0 8162: d008 beq.n 8176 if(u8_p[0] >= 0x20 && u8_p[0] <= 0x7F) { 8164: 7803 ldrb r3, [r0, #0] 8166: 001a movs r2, r3 8168: 3a20 subs r2, #32 img_src_type = LV_IMG_SRC_FILE; /*If it's an ASCII character then it's file name*/ 816a: 2001 movs r0, #1 if(u8_p[0] >= 0x20 && u8_p[0] <= 0x7F) { 816c: 2a5f cmp r2, #95 ; 0x5f 816e: d901 bls.n 8174 img_src_type = LV_IMG_SRC_VARIABLE; /*`lv_img_dsc_t` is design to the first byte < 0x20*/ 8170: 09d8 lsrs r0, r3, #7 8172: 0040 lsls r0, r0, #1 } 8174: 4770 bx lr if(src == NULL) return img_src_type; 8176: 2003 movs r0, #3 8178: e7fc b.n 8174 ... 0000817c : */ static uint8_t hex_char_to_num(char hex) { uint8_t result = 0; if(hex >= '0' && hex <= '9') { 817c: 0003 movs r3, r0 817e: 3b30 subs r3, #48 ; 0x30 8180: b2db uxtb r3, r3 result = hex - '0'; 8182: 001a movs r2, r3 if(hex >= '0' && hex <= '9') { 8184: 2b09 cmp r3, #9 8186: d918 bls.n 81ba } else { if(hex >= 'a') hex -= 'a' - 'A'; /*Convert to upper case*/ 8188: 2860 cmp r0, #96 ; 0x60 818a: d901 bls.n 8190 818c: 3820 subs r0, #32 818e: b2c0 uxtb r0, r0 switch(hex) { 8190: 3841 subs r0, #65 ; 0x41 8192: b2c3 uxtb r3, r0 8194: 2b05 cmp r3, #5 8196: d80d bhi.n 81b4 8198: 0098 lsls r0, r3, #2 819a: 4b09 ldr r3, [pc, #36] ; (81c0 ) 819c: 581b ldr r3, [r3, r0] 819e: 469f mov pc, r3 case 'A': result = 10; break; case 'B': result = 11; 81a0: 220b movs r2, #11 81a2: e00a b.n 81ba break; case 'C': result = 12; 81a4: 220c movs r2, #12 break; 81a6: e008 b.n 81ba case 'D': result = 13; 81a8: 220d movs r2, #13 break; 81aa: e006 b.n 81ba case 'E': result = 14; 81ac: 220e movs r2, #14 break; 81ae: e004 b.n 81ba case 'F': result = 15; 81b0: 220f movs r2, #15 break; 81b2: e002 b.n 81ba default: result = 0; 81b4: 2200 movs r2, #0 break; 81b6: e000 b.n 81ba result = 10; 81b8: 220a movs r2, #10 } } return result; } 81ba: 0010 movs r0, r2 81bc: 4770 bx lr 81be: 46c0 nop ; (mov r8, r8) 81c0: 000187e0 .word 0x000187e0 000081c4 : { 81c4: b510 push {r4, lr} 81c6: 0004 movs r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_label_dsc_t)); 81c8: 211c movs r1, #28 81ca: 4b0f ldr r3, [pc, #60] ; (8208 ) 81cc: 4798 blx r3 dsc->opa = LV_OPA_COVER; 81ce: 23ff movs r3, #255 ; 0xff 81d0: 7223 strb r3, [r4, #8] dsc->color = LV_COLOR_BLACK; 81d2: 7823 ldrb r3, [r4, #0] 81d4: 221f movs r2, #31 81d6: 4393 bics r3, r2 81d8: 7023 strb r3, [r4, #0] 81da: 8822 ldrh r2, [r4, #0] 81dc: 490b ldr r1, [pc, #44] ; (820c ) 81de: 400a ands r2, r1 81e0: 8022 strh r2, [r4, #0] 81e2: 2300 movs r3, #0 81e4: 7063 strb r3, [r4, #1] dsc->font = LV_THEME_DEFAULT_FONT_NORMAL; 81e6: 4b0a ldr r3, [pc, #40] ; (8210 ) 81e8: 6063 str r3, [r4, #4] dsc->sel_start = LV_DRAW_LABEL_NO_TXT_SEL; 81ea: 2301 movs r3, #1 81ec: 425b negs r3, r3 81ee: 81e3 strh r3, [r4, #14] dsc->sel_end = LV_DRAW_LABEL_NO_TXT_SEL; 81f0: 8223 strh r3, [r4, #16] dsc->sel_color = LV_COLOR_BLUE; 81f2: 78a2 ldrb r2, [r4, #2] 81f4: 231f movs r3, #31 81f6: 431a orrs r2, r3 81f8: 70a2 strb r2, [r4, #2] 81fa: 8863 ldrh r3, [r4, #2] 81fc: 400b ands r3, r1 81fe: 8063 strh r3, [r4, #2] 8200: 2300 movs r3, #0 8202: 70e3 strb r3, [r4, #3] dsc->bidi_dir = LV_BIDI_DIR_LTR; 8204: 75a3 strb r3, [r4, #22] } 8206: bd10 pop {r4, pc} 8208: 0001104d .word 0x0001104d 820c: fffff81f .word 0xfffff81f 8210: 20000030 .word 0x20000030 00008214 : { 8214: b5f0 push {r4, r5, r6, r7, lr} 8216: 46de mov lr, fp 8218: 4657 mov r7, sl 821a: 464e mov r6, r9 821c: 4645 mov r5, r8 821e: b5e0 push {r5, r6, r7, lr} 8220: b0db sub sp, #364 ; 0x16c 8222: 9010 str r0, [sp, #64] ; 0x40 8224: 910e str r1, [sp, #56] ; 0x38 8226: 0017 movs r7, r2 8228: 001a movs r2, r3 822a: 930d str r3, [sp, #52] ; 0x34 822c: 9b64 ldr r3, [sp, #400] ; 0x190 822e: 9305 str r3, [sp, #20] if(dsc->opa <= LV_OPA_MIN) return; 8230: 7a3b ldrb r3, [r7, #8] 8232: 2b05 cmp r3, #5 8234: d902 bls.n 823c if(txt[0] == '\0') return; 8236: 7813 ldrb r3, [r2, #0] 8238: 2b00 cmp r3, #0 823a: d106 bne.n 824a } 823c: b05b add sp, #364 ; 0x16c 823e: bc3c pop {r2, r3, r4, r5} 8240: 4690 mov r8, r2 8242: 4699 mov r9, r3 8244: 46a2 mov sl, r4 8246: 46ab mov fp, r5 8248: bdf0 pop {r4, r5, r6, r7, pc} const lv_font_t * font = dsc->font; 824a: 687b ldr r3, [r7, #4] 824c: 9307 str r3, [sp, #28] bool clip_ok = _lv_area_intersect(&clipped_area, coords, mask); 824e: 000a movs r2, r1 8250: 0004 movs r4, r0 8252: 0001 movs r1, r0 8254: a858 add r0, sp, #352 ; 0x160 8256: 4bd2 ldr r3, [pc, #840] ; (85a0 ) 8258: 4798 blx r3 if(!clip_ok) return; 825a: 2800 cmp r0, #0 825c: d0ee beq.n 823c if((dsc->flag & LV_TXT_FLAG_EXPAND) == 0) { 825e: 7dfa ldrb r2, [r7, #23] 8260: 0791 lsls r1, r2, #30 8262: d424 bmi.n 82ae 8264: 88a3 ldrh r3, [r4, #4] 8266: 3301 adds r3, #1 8268: 8822 ldrh r2, [r4, #0] 826a: 1a9b subs r3, r3, r2 w = lv_area_get_width(coords); 826c: b21b sxth r3, r3 int32_t line_height_font = lv_font_get_line_height(font); 826e: 9a07 ldr r2, [sp, #28] 8270: 2608 movs r6, #8 8272: 5f96 ldrsh r6, [r2, r6] int32_t line_height = line_height_font + dsc->line_space; 8274: 210a movs r1, #10 8276: 5e7a ldrsh r2, [r7, r1] 8278: 4691 mov r9, r2 827a: 44b1 add r9, r6 pos.x = coords->x1; 827c: 9a10 ldr r2, [sp, #64] ; 0x40 827e: 2000 movs r0, #0 8280: 5e11 ldrsh r1, [r2, r0] 8282: 911f str r1, [sp, #124] ; 0x7c pos.y = coords->y1; 8284: 2002 movs r0, #2 8286: 5e10 ldrsh r0, [r2, r0] x_ofs = dsc->ofs_x; 8288: 2112 movs r1, #18 828a: 5e7a ldrsh r2, [r7, r1] 828c: 921e str r2, [sp, #120] ; 0x78 y_ofs = dsc->ofs_y; 828e: 2214 movs r2, #20 8290: 5eb9 ldrsh r1, [r7, r2] pos.y += y_ofs; 8292: 1842 adds r2, r0, r1 8294: b292 uxth r2, r2 8296: b215 sxth r5, r2 if(hint && y_ofs == 0 && coords->y1 < 0) { 8298: 9c05 ldr r4, [sp, #20] 829a: 2c00 cmp r4, #0 829c: d052 beq.n 8344 829e: 2900 cmp r1, #0 82a0: d154 bne.n 834c 82a2: 2800 cmp r0, #0 82a4: db14 blt.n 82d0 pos.y += y_ofs; 82a6: 9511 str r5, [sp, #68] ; 0x44 uint32_t line_start = 0; 82a8: 2200 movs r2, #0 82aa: 9208 str r2, [sp, #32] 82ac: e02e b.n 830c _lv_txt_get_size(&p, txt, dsc->font, dsc->letter_space, dsc->line_space, LV_COORD_MAX, 82ae: 210c movs r1, #12 82b0: 5e7b ldrsh r3, [r7, r1] 82b2: ad3c add r5, sp, #240 ; 0xf0 82b4: 9202 str r2, [sp, #8] 82b6: 4abb ldr r2, [pc, #748] ; (85a4 ) 82b8: 9201 str r2, [sp, #4] 82ba: 210a movs r1, #10 82bc: 5e7a ldrsh r2, [r7, r1] 82be: 9200 str r2, [sp, #0] 82c0: 687a ldr r2, [r7, #4] 82c2: 990d ldr r1, [sp, #52] ; 0x34 82c4: 0028 movs r0, r5 82c6: 4eb8 ldr r6, [pc, #736] ; (85a8 ) 82c8: 47b0 blx r6 w = p.x; 82ca: 2200 movs r2, #0 82cc: 5eab ldrsh r3, [r5, r2] 82ce: e7ce b.n 826e if(LV_MATH_ABS(hint->coord_y - coords->y1) > LV_LABEL_HINT_UPDATE_TH - 2 * line_height) { 82d0: 68a1 ldr r1, [r4, #8] 82d2: 1a08 subs r0, r1, r0 82d4: 17c1 asrs r1, r0, #31 82d6: 1840 adds r0, r0, r1 82d8: 4048 eors r0, r1 82da: 2180 movs r1, #128 ; 0x80 82dc: 0089 lsls r1, r1, #2 82de: 464c mov r4, r9 82e0: 1b09 subs r1, r1, r4 82e2: 0049 lsls r1, r1, #1 82e4: 4288 cmp r0, r1 82e6: dd07 ble.n 82f8 hint->line_start = -1; 82e8: 2201 movs r2, #1 82ea: 4252 negs r2, r2 82ec: 9905 ldr r1, [sp, #20] 82ee: 600a str r2, [r1, #0] pos.y += y_ofs; 82f0: 9511 str r5, [sp, #68] ; 0x44 uint32_t line_start = 0; 82f2: 2200 movs r2, #0 82f4: 9208 str r2, [sp, #32] 82f6: e009 b.n 830c last_line_start = hint->line_start; 82f8: 9805 ldr r0, [sp, #20] 82fa: 6801 ldr r1, [r0, #0] if(hint && last_line_start >= 0) { 82fc: 2900 cmp r1, #0 82fe: db29 blt.n 8354 line_start = last_line_start; 8300: 9108 str r1, [sp, #32] pos.y += hint->y; 8302: 6841 ldr r1, [r0, #4] 8304: 468c mov ip, r1 8306: 4462 add r2, ip 8308: b212 sxth r2, r2 830a: 9211 str r2, [sp, #68] ; 0x44 uint32_t line_end = line_start + _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 830c: b21b sxth r3, r3 830e: 0019 movs r1, r3 8310: 9312 str r3, [sp, #72] ; 0x48 8312: 230c movs r3, #12 8314: 5efa ldrsh r2, [r7, r3] 8316: 9b0d ldr r3, [sp, #52] ; 0x34 8318: 0018 movs r0, r3 831a: 9c08 ldr r4, [sp, #32] 831c: 46a4 mov ip, r4 831e: 4460 add r0, ip 8320: 7dfb ldrb r3, [r7, #23] 8322: 9300 str r3, [sp, #0] 8324: 000b movs r3, r1 8326: 9907 ldr r1, [sp, #28] 8328: 4da0 ldr r5, [pc, #640] ; (85ac ) 832a: 47a8 blx r5 832c: 46a4 mov ip, r4 832e: 4460 add r0, ip line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 8330: 4a9e ldr r2, [pc, #632] ; (85ac ) 8332: 4692 mov sl, r2 if(hint && pos.y >= -LV_LABEL_HINT_UPDATE_TH && hint->line_start < 0) { 8334: 4a9e ldr r2, [pc, #632] ; (85b0 ) 8336: 4690 mov r8, r2 8338: 9606 str r6, [sp, #24] 833a: 0006 movs r6, r0 833c: 9d11 ldr r5, [sp, #68] ; 0x44 833e: 46bb mov fp, r7 8340: 9f05 ldr r7, [sp, #20] while(pos.y + line_height_font < mask->y1) { 8342: e011 b.n 8368 pos.y += y_ofs; 8344: 9511 str r5, [sp, #68] ; 0x44 uint32_t line_start = 0; 8346: 2200 movs r2, #0 8348: 9208 str r2, [sp, #32] 834a: e7df b.n 830c pos.y += y_ofs; 834c: 9511 str r5, [sp, #68] ; 0x44 uint32_t line_start = 0; 834e: 2200 movs r2, #0 8350: 9208 str r2, [sp, #32] 8352: e7db b.n 830c pos.y += y_ofs; 8354: 9511 str r5, [sp, #68] ; 0x44 uint32_t line_start = 0; 8356: 2200 movs r2, #0 8358: 9208 str r2, [sp, #32] 835a: e7d7 b.n 830c 835c: 9608 str r6, [sp, #32] if(txt[line_start] == '\0') return; 835e: 7823 ldrb r3, [r4, #0] 8360: 2b00 cmp r3, #0 8362: d100 bne.n 8366 8364: e76a b.n 823c line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 8366: 0006 movs r6, r0 while(pos.y + line_height_font < mask->y1) { 8368: 9b06 ldr r3, [sp, #24] 836a: 18eb adds r3, r5, r3 836c: 9a0e ldr r2, [sp, #56] ; 0x38 836e: 2102 movs r1, #2 8370: 5e52 ldrsh r2, [r2, r1] 8372: 4293 cmp r3, r2 8374: da20 bge.n 83b8 line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 8376: 9b0d ldr r3, [sp, #52] ; 0x34 8378: 199c adds r4, r3, r6 837a: 465b mov r3, fp 837c: 220c movs r2, #12 837e: 5e9a ldrsh r2, [r3, r2] 8380: 465b mov r3, fp 8382: 7ddb ldrb r3, [r3, #23] 8384: 9300 str r3, [sp, #0] 8386: 9b12 ldr r3, [sp, #72] ; 0x48 8388: 9907 ldr r1, [sp, #28] 838a: 0020 movs r0, r4 838c: 47d0 blx sl 838e: 1980 adds r0, r0, r6 8390: 444d add r5, r9 8392: b22d sxth r5, r5 if(hint && pos.y >= -LV_LABEL_HINT_UPDATE_TH && hint->line_start < 0) { 8394: 2f00 cmp r7, #0 8396: d0e1 beq.n 835c 8398: 4545 cmp r5, r8 839a: dbdf blt.n 835c 839c: 683b ldr r3, [r7, #0] 839e: 2b00 cmp r3, #0 83a0: dadc bge.n 835c hint->line_start = line_start; 83a2: 603e str r6, [r7, #0] hint->y = pos.y - coords->y1; 83a4: 9a10 ldr r2, [sp, #64] ; 0x40 83a6: 2102 movs r1, #2 83a8: 5e53 ldrsh r3, [r2, r1] 83aa: 1aeb subs r3, r5, r3 83ac: 607b str r3, [r7, #4] hint->coord_y = coords->y1; 83ae: 0013 movs r3, r2 83b0: 2202 movs r2, #2 83b2: 5e9b ldrsh r3, [r3, r2] 83b4: 60bb str r3, [r7, #8] 83b6: e7d1 b.n 835c 83b8: 960b str r6, [sp, #44] ; 0x2c 83ba: 9511 str r5, [sp, #68] ; 0x44 83bc: 465f mov r7, fp if(dsc->flag & LV_TXT_FLAG_CENTER) { 83be: 7dfa ldrb r2, [r7, #23] 83c0: 0753 lsls r3, r2, #29 83c2: d42f bmi.n 8424 else if(dsc->flag & LV_TXT_FLAG_RIGHT) { 83c4: 0713 lsls r3, r2, #28 83c6: d449 bmi.n 845c lv_opa_t opa = dsc->opa; 83c8: 7a3b ldrb r3, [r7, #8] 83ca: 930f str r3, [sp, #60] ; 0x3c uint16_t sel_start = dsc->sel_start; 83cc: 89fb ldrh r3, [r7, #14] 83ce: 9306 str r3, [sp, #24] uint16_t sel_end = dsc->sel_end; 83d0: 8a3a ldrh r2, [r7, #16] 83d2: 4692 mov sl, r2 if(sel_start > sel_end) { 83d4: 4553 cmp r3, sl 83d6: d902 bls.n 83de sel_start = sel_end; 83d8: 4652 mov r2, sl 83da: 9206 str r2, [sp, #24] sel_end = tmp; 83dc: 469a mov sl, r3 if((dsc->decor & LV_TEXT_DECOR_UNDERLINE) || (dsc->decor & LV_TEXT_DECOR_STRIKETHROUGH)) { 83de: 7e3b ldrb r3, [r7, #24] 83e0: 079b lsls r3, r3, #30 83e2: d155 bne.n 8490 lv_draw_rect_dsc_init(&draw_dsc_sel); 83e4: ac3f add r4, sp, #252 ; 0xfc 83e6: 0020 movs r0, r4 83e8: 4b72 ldr r3, [pc, #456] ; (85b4 ) 83ea: 4798 blx r3 draw_dsc_sel.bg_color = dsc->sel_color; 83ec: 887b ldrh r3, [r7, #2] 83ee: 8063 strh r3, [r4, #2] 83f0: 9b0f ldr r3, [sp, #60] ; 0x3c 83f2: 2bfa cmp r3, #250 ; 0xfa 83f4: d901 bls.n 83fa 83f6: 4b70 ldr r3, [pc, #448] ; (85b8 ) 83f8: 781b ldrb r3, [r3, #0] 83fa: b2db uxtb r3, r3 83fc: 931c str r3, [sp, #112] ; 0x70 83fe: 464b mov r3, r9 8400: 466a mov r2, sp 8402: 8293 strh r3, [r2, #20] 8404: 8a93 ldrh r3, [r2, #20] 8406: 9318 str r3, [sp, #96] ; 0x60 8408: 466b mov r3, sp 840a: 2244 movs r2, #68 ; 0x44 840c: 189b adds r3, r3, r2 840e: 881b ldrh r3, [r3, #0] 8410: 9314 str r3, [sp, #80] ; 0x50 while(txt[line_start] != '\0') { 8412: 9d1f ldr r5, [sp, #124] ; 0x7c uint16_t par_start = 0; 8414: 2300 movs r3, #0 8416: 931d str r3, [sp, #116] ; 0x74 8418: 9b08 ldr r3, [sp, #32] 841a: 469b mov fp, r3 841c: 46d0 mov r8, sl 841e: 003e movs r6, r7 while(txt[line_start] != '\0') { 8420: f000 fdd2 bl 8fc8 line_width = _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 8424: 210c movs r1, #12 8426: 5e7b ldrsh r3, [r7, r1] 8428: 9c08 ldr r4, [sp, #32] 842a: 1b31 subs r1, r6, r4 842c: b289 uxth r1, r1 842e: 980d ldr r0, [sp, #52] ; 0x34 8430: 46a4 mov ip, r4 8432: 4460 add r0, ip 8434: 9200 str r2, [sp, #0] 8436: 9a07 ldr r2, [sp, #28] 8438: 4c60 ldr r4, [pc, #384] ; (85bc ) 843a: 47a0 blx r4 843c: 9a10 ldr r2, [sp, #64] ; 0x40 843e: 8893 ldrh r3, [r2, #4] 8440: 3301 adds r3, #1 8442: 8812 ldrh r2, [r2, #0] 8444: 1a9b subs r3, r3, r2 pos.x += (lv_area_get_width(coords) - line_width) / 2; 8446: b21b sxth r3, r3 8448: 1a18 subs r0, r3, r0 844a: 0fc3 lsrs r3, r0, #31 844c: 181b adds r3, r3, r0 844e: 105b asrs r3, r3, #1 8450: 9a1f ldr r2, [sp, #124] ; 0x7c 8452: 4694 mov ip, r2 8454: 4463 add r3, ip 8456: b21b sxth r3, r3 8458: 931f str r3, [sp, #124] ; 0x7c 845a: e7b5 b.n 83c8 line_width = _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 845c: 210c movs r1, #12 845e: 5e7b ldrsh r3, [r7, r1] 8460: 980b ldr r0, [sp, #44] ; 0x2c 8462: 9c08 ldr r4, [sp, #32] 8464: 1b01 subs r1, r0, r4 8466: b289 uxth r1, r1 8468: 980d ldr r0, [sp, #52] ; 0x34 846a: 46a4 mov ip, r4 846c: 4460 add r0, ip 846e: 9200 str r2, [sp, #0] 8470: 9a07 ldr r2, [sp, #28] 8472: 4c52 ldr r4, [pc, #328] ; (85bc ) 8474: 47a0 blx r4 8476: 9a10 ldr r2, [sp, #64] ; 0x40 8478: 8893 ldrh r3, [r2, #4] 847a: 3301 adds r3, #1 847c: 8812 ldrh r2, [r2, #0] 847e: 1a9b subs r3, r3, r2 pos.x += lv_area_get_width(coords) - line_width; 8480: b21b sxth r3, r3 8482: 1a1b subs r3, r3, r0 8484: 9a1f ldr r2, [sp, #124] ; 0x7c 8486: 4694 mov ip, r2 8488: 4463 add r3, ip 848a: b21b sxth r3, r3 848c: 931f str r3, [sp, #124] ; 0x7c 848e: e79b b.n 83c8 lv_draw_line_dsc_init(&line_dsc); 8490: ac55 add r4, sp, #340 ; 0x154 8492: 0020 movs r0, r4 8494: 4b4a ldr r3, [pc, #296] ; (85c0 ) 8496: 4798 blx r3 line_dsc.color = dsc->color; 8498: 883b ldrh r3, [r7, #0] 849a: 8023 strh r3, [r4, #0] line_dsc.width = (dsc->font->line_height + 5) / 10; /*+5 for rounding*/ 849c: 687b ldr r3, [r7, #4] 849e: 2008 movs r0, #8 84a0: 5e18 ldrsh r0, [r3, r0] 84a2: 3005 adds r0, #5 84a4: 210a movs r1, #10 84a6: 4b47 ldr r3, [pc, #284] ; (85c4 ) 84a8: 4798 blx r3 84aa: 8060 strh r0, [r4, #2] line_dsc.opa = dsc->opa; 84ac: 7a3b ldrb r3, [r7, #8] 84ae: 7223 strb r3, [r4, #8] line_dsc.blend_mode = dsc->blend_mode; 84b0: 7e7a ldrb r2, [r7, #25] 84b2: 2303 movs r3, #3 84b4: 401a ands r2, r3 84b6: 7a63 ldrb r3, [r4, #9] 84b8: 2103 movs r1, #3 84ba: 438b bics r3, r1 84bc: 4313 orrs r3, r2 84be: 7263 strb r3, [r4, #9] 84c0: e790 b.n 83e4 uint16_t logical_char_pos = 0; 84c2: 2500 movs r5, #0 84c4: e2e2 b.n 8a8c if(cmd_state == CMD_STATE_WAIT) { /*Start char*/ 84c6: 9b09 ldr r3, [sp, #36] ; 0x24 84c8: 2b00 cmp r3, #0 84ca: d107 bne.n 84dc par_start = i; 84cc: ab34 add r3, sp, #208 ; 0xd0 84ce: 2280 movs r2, #128 ; 0x80 84d0: 189b adds r3, r3, r2 84d2: 881b ldrh r3, [r3, #0] 84d4: 931d str r3, [sp, #116] ; 0x74 cmd_state = CMD_STATE_PAR; 84d6: 2301 movs r3, #1 84d8: 9309 str r3, [sp, #36] ; 0x24 continue; 84da: e2c2 b.n 8a62 else if(cmd_state == CMD_STATE_PAR) { /*Other start char in parameter escaped cmd. char */ 84dc: 9b09 ldr r3, [sp, #36] ; 0x24 84de: 2b01 cmp r3, #1 84e0: d101 bne.n 84e6 84e2: f000 fe05 bl 90f0 else if(cmd_state == CMD_STATE_IN) { /*Command end */ 84e6: 2b02 cmp r3, #2 84e8: d101 bne.n 84ee 84ea: f000 fd32 bl 8f52 lv_color_t color = dsc->color; 84ee: 883e ldrh r6, [r7, #0] 84f0: e2ec b.n 8acc if(letter == ' ') { 84f2: 9b05 ldr r3, [sp, #20] 84f4: 2b20 cmp r3, #32 84f6: d000 beq.n 84fa 84f8: e2b3 b.n 8a62 if(i - par_start == LABEL_RECOLOR_PAR_LENGTH + 1) { 84fa: 9b54 ldr r3, [sp, #336] ; 0x150 84fc: 9a1d ldr r2, [sp, #116] ; 0x74 84fe: 1a9b subs r3, r3, r2 8500: 2b07 cmp r3, #7 8502: d004 beq.n 850e recolor.full = dsc->color.full; 8504: 883b ldrh r3, [r7, #0] 8506: 9316 str r3, [sp, #88] ; 0x58 cmd_state = CMD_STATE_IN; /*After the parameter the text is in the command*/ 8508: 2302 movs r3, #2 850a: 9309 str r3, [sp, #36] ; 0x24 850c: e2a9 b.n 8a62 _lv_memcpy_small(buf, &bidi_txt[par_start], LABEL_RECOLOR_PAR_LENGTH); 850e: 9b0c ldr r3, [sp, #48] ; 0x30 8510: 4694 mov ip, r2 8512: 4463 add r3, ip 8514: 0018 movs r0, r3 8516: 2300 movs r3, #0 *d8 = *s8; 8518: a93c add r1, sp, #240 ; 0xf0 851a: 5cc2 ldrb r2, [r0, r3] 851c: 545a strb r2, [r3, r1] 851e: 3301 adds r3, #1 while(len) { 8520: 2b06 cmp r3, #6 8522: d1fa bne.n 851a r = (hex_char_to_num(buf[0]) << 4) + hex_char_to_num(buf[1]); 8524: ad3c add r5, sp, #240 ; 0xf0 8526: 7828 ldrb r0, [r5, #0] 8528: 4e27 ldr r6, [pc, #156] ; (85c8 ) 852a: 47b0 blx r6 852c: 4680 mov r8, r0 852e: 7868 ldrb r0, [r5, #1] 8530: 47b0 blx r6 8532: 4643 mov r3, r8 8534: 011b lsls r3, r3, #4 8536: 4698 mov r8, r3 8538: 4480 add r8, r0 g = (hex_char_to_num(buf[2]) << 4) + hex_char_to_num(buf[3]); 853a: 78a8 ldrb r0, [r5, #2] 853c: 47b0 blx r6 853e: 9005 str r0, [sp, #20] 8540: 78e8 ldrb r0, [r5, #3] 8542: 47b0 blx r6 8544: 9b05 ldr r3, [sp, #20] 8546: 011b lsls r3, r3, #4 8548: 181b adds r3, r3, r0 854a: 9305 str r3, [sp, #20] b = (hex_char_to_num(buf[4]) << 4) + hex_char_to_num(buf[5]); 854c: 7928 ldrb r0, [r5, #4] 854e: 47b0 blx r6 8550: 9008 str r0, [sp, #32] 8552: 7968 ldrb r0, [r5, #5] 8554: 47b0 blx r6 8556: 9a08 ldr r2, [sp, #32] 8558: 0115 lsls r5, r2, #4 855a: 1828 adds r0, r5, r0 #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); 855c: b2c2 uxtb r2, r0 855e: 08d2 lsrs r2, r2, #3 8560: 231f movs r3, #31 8562: 992c ldr r1, [sp, #176] ; 0xb0 8564: 4399 bics r1, r3 8566: 000b movs r3, r1 8568: 4313 orrs r3, r2 856a: 466a mov r2, sp 856c: 7d12 ldrb r2, [r2, #20] 856e: 0892 lsrs r2, r2, #2 8570: 0151 lsls r1, r2, #5 8572: 4a16 ldr r2, [pc, #88] ; (85cc ) 8574: 4013 ands r3, r2 8576: 430b orrs r3, r1 8578: 4642 mov r2, r8 857a: 4669 mov r1, sp 857c: 750a strb r2, [r1, #20] 857e: 7d0a ldrb r2, [r1, #20] 8580: 08d2 lsrs r2, r2, #3 8582: 02d2 lsls r2, r2, #11 8584: 055b lsls r3, r3, #21 8586: 0d5b lsrs r3, r3, #21 8588: 4313 orrs r3, r2 858a: 466a mov r2, sp 858c: 21b0 movs r1, #176 ; 0xb0 858e: 1852 adds r2, r2, r1 8590: 8013 strh r3, [r2, #0] 8592: b29b uxth r3, r3 8594: 9316 str r3, [sp, #88] ; 0x58 cmd_state = CMD_STATE_IN; /*After the parameter the text is in the command*/ 8596: 2302 movs r3, #2 8598: 9309 str r3, [sp, #36] ; 0x24 859a: e262 b.n 8a62 if(cmd_state == CMD_STATE_IN) color = recolor; 859c: 9e16 ldr r6, [sp, #88] ; 0x58 859e: e295 b.n 8acc 85a0: 0000fc0f .word 0x0000fc0f 85a4: 00007c18 .word 0x00007c18 85a8: 00011ae5 .word 0x00011ae5 85ac: 000117c9 .word 0x000117c9 85b0: fffffc00 .word 0xfffffc00 85b4: 0000ab21 .word 0x0000ab21 85b8: 000187f8 .word 0x000187f8 85bc: 00011a41 .word 0x00011a41 85c0: 00009101 .word 0x00009101 85c4: 00017995 .word 0x00017995 85c8: 0000817d .word 0x0000817d 85cc: fffff81f .word 0xfffff81f sel_coords.x1 = pos.x; 85d0: a83c add r0, sp, #240 ; 0xf0 85d2: 8004 strh r4, [r0, #0] sel_coords.y1 = pos.y; 85d4: 9911 ldr r1, [sp, #68] ; 0x44 85d6: 8041 strh r1, [r0, #2] sel_coords.x2 = pos.x + letter_w + dsc->letter_space - 1; 85d8: 89bb ldrh r3, [r7, #12] 85da: 3b01 subs r3, #1 85dc: 18e3 adds r3, r4, r3 85de: 9a0a ldr r2, [sp, #40] ; 0x28 85e0: 4694 mov ip, r2 85e2: 4463 add r3, ip 85e4: 8083 strh r3, [r0, #4] sel_coords.y2 = pos.y + line_height - 1; 85e6: 9b18 ldr r3, [sp, #96] ; 0x60 85e8: 3b01 subs r3, #1 85ea: 468c mov ip, r1 85ec: 4463 add r3, ip 85ee: 80c3 strh r3, [r0, #6] lv_draw_rect(&sel_coords, mask, &draw_dsc_sel); 85f0: aa3f add r2, sp, #252 ; 0xfc 85f2: 990e ldr r1, [sp, #56] ; 0x38 85f4: 4bc6 ldr r3, [pc, #792] ; (8910 ) 85f6: 4798 blx r3 85f8: e27a b.n 8af0 switch(bpp) { 85fa: 2b04 cmp r3, #4 85fc: d100 bne.n 8600 85fe: e0e9 b.n 87d4 8600: 2b08 cmp r3, #8 8602: d000 beq.n 8606 8604: e224 b.n 8a50 uint32_t bpp = g->bpp; 8606: 2608 movs r6, #8 bitmask_init = 0xFF; 8608: 23ff movs r3, #255 ; 0xff 860a: 9320 str r3, [sp, #128] ; 0x80 bpp_opa_table = _lv_bpp8_opa_table; 860c: 4bc1 ldr r3, [pc, #772] ; (8914 ) 860e: 9323 str r3, [sp, #140] ; 0x8c 8610: e003 b.n 861a bitmask_init = 0xC0; 8612: 23c0 movs r3, #192 ; 0xc0 8614: 9320 str r3, [sp, #128] ; 0x80 bpp_opa_table = _lv_bpp2_opa_table; 8616: 4bc0 ldr r3, [pc, #768] ; (8918 ) 8618: 9323 str r3, [sp, #140] ; 0x8c int32_t box_w = g->box_w; 861a: ab3c add r3, sp, #240 ; 0xf0 861c: 885a ldrh r2, [r3, #2] 861e: 921a str r2, [sp, #104] ; 0x68 int32_t box_h = g->box_h; 8620: 889b ldrh r3, [r3, #4] 8622: 931b str r3, [sp, #108] ; 0x6c int32_t width_bit = box_w * bpp; /*Letter width in bits*/ 8624: 4372 muls r2, r6 8626: 9221 str r2, [sp, #132] ; 0x84 int32_t col_start = pos_x >= clip_area->x1 ? 0 : (clip_area->x1 - pos_x) * 3; 8628: 9b0e ldr r3, [sp, #56] ; 0x38 862a: 2200 movs r2, #0 862c: 5e9b ldrsh r3, [r3, r2] 862e: 2200 movs r2, #0 8630: 922b str r2, [sp, #172] ; 0xac 8632: 9905 ldr r1, [sp, #20] 8634: 4299 cmp r1, r3 8636: da03 bge.n 8640 8638: 1a5b subs r3, r3, r1 863a: 005a lsls r2, r3, #1 863c: 18d3 adds r3, r2, r3 863e: 932b str r3, [sp, #172] ; 0xac int32_t col_end = pos_x + box_w / 3 <= clip_area->x2 ? box_w : (clip_area->x2 - pos_x + 1) * 3; 8640: 9b0e ldr r3, [sp, #56] ; 0x38 8642: 2204 movs r2, #4 8644: 5e9b ldrsh r3, [r3, r2] 8646: 9322 str r3, [sp, #136] ; 0x88 8648: 2103 movs r1, #3 864a: 981a ldr r0, [sp, #104] ; 0x68 864c: 4bb3 ldr r3, [pc, #716] ; (891c ) 864e: 4798 blx r3 8650: 9905 ldr r1, [sp, #20] 8652: 468c mov ip, r1 8654: 4460 add r0, ip 8656: 9a1a ldr r2, [sp, #104] ; 0x68 8658: 9219 str r2, [sp, #100] ; 0x64 865a: 9a22 ldr r2, [sp, #136] ; 0x88 865c: 4290 cmp r0, r2 865e: dd04 ble.n 866a 8660: 1a53 subs r3, r2, r1 8662: 1c5a adds r2, r3, #1 8664: 0053 lsls r3, r2, #1 8666: 189b adds r3, r3, r2 8668: 9319 str r3, [sp, #100] ; 0x64 int32_t row_start = pos_y >= clip_area->y1 ? 0 : clip_area->y1 - pos_y; 866a: 9b0e ldr r3, [sp, #56] ; 0x38 866c: 2202 movs r2, #2 866e: 5e9b ldrsh r3, [r3, r2] 8670: 2200 movs r2, #0 8672: 9229 str r2, [sp, #164] ; 0xa4 8674: 9915 ldr r1, [sp, #84] ; 0x54 8676: 4299 cmp r1, r3 8678: da01 bge.n 867e 867a: 1a5b subs r3, r3, r1 867c: 9329 str r3, [sp, #164] ; 0xa4 int32_t row_end = pos_y + box_h <= clip_area->y2 ? box_h : clip_area->y2 - pos_y + 1; 867e: 9b0e ldr r3, [sp, #56] ; 0x38 8680: 2206 movs r2, #6 8682: 5e9b ldrsh r3, [r3, r2] 8684: 991b ldr r1, [sp, #108] ; 0x6c 8686: 000a movs r2, r1 8688: 9815 ldr r0, [sp, #84] ; 0x54 868a: 4684 mov ip, r0 868c: 4462 add r2, ip 868e: 912f str r1, [sp, #188] ; 0xbc 8690: 429a cmp r2, r3 8692: dd02 ble.n 869a 8694: 1a1b subs r3, r3, r0 8696: 3301 adds r3, #1 8698: 932f str r3, [sp, #188] ; 0xbc 869a: 466b mov r3, sp 869c: 2290 movs r2, #144 ; 0x90 869e: 189b adds r3, r3, r2 86a0: 881a ldrh r2, [r3, #0] 86a2: 06d3 lsls r3, r2, #27 86a4: 0edb lsrs r3, r3, #27 86a6: 9326 str r3, [sp, #152] ; 0x98 86a8: 0553 lsls r3, r2, #21 86aa: 0e9b lsrs r3, r3, #26 86ac: 9328 str r3, [sp, #160] ; 0xa0 86ae: 0413 lsls r3, r2, #16 86b0: 0edb lsrs r3, r3, #27 86b2: 9327 str r3, [sp, #156] ; 0x9c int32_t bit_ofs = (row_start * width_bit) + (col_start * bpp); 86b4: 9b21 ldr r3, [sp, #132] ; 0x84 86b6: 9a29 ldr r2, [sp, #164] ; 0xa4 86b8: 4353 muls r3, r2 86ba: 9a2b ldr r2, [sp, #172] ; 0xac 86bc: 4372 muls r2, r6 86be: 189b adds r3, r3, r2 map_p += bit_ofs >> 3; 86c0: 10da asrs r2, r3, #3 86c2: 18ad adds r5, r5, r2 col_bit = bit_ofs & 0x7; /* "& 0x7" equals to "% 8" just faster */ 86c4: 2207 movs r2, #7 86c6: 401a ands r2, r3 86c8: 9234 str r2, [sp, #208] ; 0xd0 int32_t mask_buf_size = box_w * box_h > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : g->box_w * g->box_h; 86ca: 9b1b ldr r3, [sp, #108] ; 0x6c 86cc: 9a1a ldr r2, [sp, #104] ; 0x68 86ce: 4353 muls r3, r2 86d0: 001a movs r2, r3 86d2: 932e str r3, [sp, #184] ; 0xb8 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 86d4: 23f0 movs r3, #240 ; 0xf0 86d6: 005b lsls r3, r3, #1 86d8: 429a cmp r2, r3 86da: dd00 ble.n 86de 86dc: 932e str r3, [sp, #184] ; 0xb8 86de: 982e ldr r0, [sp, #184] ; 0xb8 86e0: 4b8f ldr r3, [pc, #572] ; (8920 ) 86e2: 4798 blx r3 86e4: 9024 str r0, [sp, #144] ; 0x90 lv_color_t * color_buf = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 86e6: 9b2e ldr r3, [sp, #184] ; 0xb8 86e8: 0058 lsls r0, r3, #1 86ea: 4b8d ldr r3, [pc, #564] ; (8920 ) 86ec: 4798 blx r3 86ee: 9025 str r0, [sp, #148] ; 0x94 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 86f0: 4b8c ldr r3, [pc, #560] ; (8924 ) 86f2: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 86f4: 4b8c ldr r3, [pc, #560] ; (8928 ) 86f6: 4798 blx r3 86f8: 2110 movs r1, #16 86fa: 5e42 ldrsh r2, [r0, r1] 86fc: 0011 movs r1, r2 86fe: 8a83 ldrh r3, [r0, #20] 8700: 3301 adds r3, #1 8702: 9122 str r1, [sp, #136] ; 0x88 8704: 1a5b subs r3, r3, r1 int32_t vdb_width = lv_area_get_width(&vdb->area); 8706: b21b sxth r3, r3 8708: 931b str r3, [sp, #108] ; 0x6c lv_color_t * vdb_buf_tmp = vdb->buf_act; 870a: 9021 str r0, [sp, #132] ; 0x84 870c: 6880 ldr r0, [r0, #8] 870e: 902a str r0, [sp, #168] ; 0xa8 vdb_buf_tmp += (row_start * vdb_width) + col_start / 3; 8710: 2103 movs r1, #3 8712: 982b ldr r0, [sp, #172] ; 0xac 8714: 4a81 ldr r2, [pc, #516] ; (891c ) 8716: 4694 mov ip, r2 8718: 47e0 blx ip vdb_buf_tmp += ((pos_y - vdb->area.y1) * vdb_width) + pos_x - vdb->area.x1; 871a: 9b21 ldr r3, [sp, #132] ; 0x84 871c: 2112 movs r1, #18 871e: 5e5b ldrsh r3, [r3, r1] 8720: 9915 ldr r1, [sp, #84] ; 0x54 8722: 1acb subs r3, r1, r3 8724: 991b ldr r1, [sp, #108] ; 0x6c 8726: 434b muls r3, r1 8728: 9a05 ldr r2, [sp, #20] 872a: 4694 mov ip, r2 872c: 4463 add r3, ip 872e: 9a22 ldr r2, [sp, #136] ; 0x88 8730: 1a9b subs r3, r3, r2 vdb_buf_tmp += (row_start * vdb_width) + col_start / 3; 8732: 9a29 ldr r2, [sp, #164] ; 0xa4 8734: 434a muls r2, r1 8736: 1812 adds r2, r2, r0 8738: 189b adds r3, r3, r2 873a: 005b lsls r3, r3, #1 873c: 992a ldr r1, [sp, #168] ; 0xa8 873e: 468c mov ip, r1 8740: 449c add ip, r3 8742: 4661 mov r1, ip 8744: 9105 str r1, [sp, #20] map_area.x1 = col_start / 3 + pos_x; 8746: 4641 mov r1, r8 8748: 466b mov r3, sp 874a: 2254 movs r2, #84 ; 0x54 874c: 189b adds r3, r3, r2 874e: 8019 strh r1, [r3, #0] 8750: b289 uxth r1, r1 8752: 4688 mov r8, r1 8754: 4440 add r0, r8 8756: a934 add r1, sp, #208 ; 0xd0 8758: 8308 strh r0, [r1, #24] map_area.x2 = col_end / 3 + pos_x - 1; 875a: 2103 movs r1, #3 875c: 9819 ldr r0, [sp, #100] ; 0x64 875e: 4b6f ldr r3, [pc, #444] ; (891c ) 8760: 4798 blx r3 8762: 4643 mov r3, r8 8764: 3b01 subs r3, #1 8766: 18c3 adds r3, r0, r3 8768: a834 add r0, sp, #208 ; 0xd0 876a: 8383 strh r3, [r0, #28] map_area.y1 = row_start + pos_y; 876c: 9817 ldr r0, [sp, #92] ; 0x5c 876e: 9a29 ldr r2, [sp, #164] ; 0xa4 8770: 4694 mov ip, r2 8772: 4460 add r0, ip 8774: b203 sxth r3, r0 8776: a834 add r0, sp, #208 ; 0xd0 8778: 8343 strh r3, [r0, #26] map_area.y2 = map_area.y1; 877a: 83c3 strh r3, [r0, #30] uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 877c: 4b6b ldr r3, [pc, #428] ; (892c ) 877e: 4798 blx r3 8780: 9030 str r0, [sp, #192] ; 0xc0 for(row = row_start ; row < row_end; row++) { 8782: 9a29 ldr r2, [sp, #164] ; 0xa4 8784: 982f ldr r0, [sp, #188] ; 0xbc 8786: 4282 cmp r2, r0 8788: db00 blt.n 878c 878a: e147 b.n 8a1c if((uint32_t) mask_p + (col_end - col_start) < mask_buf_size) { 878c: 9a19 ldr r2, [sp, #100] ; 0x64 878e: 982b ldr r0, [sp, #172] ; 0xac 8790: 1a11 subs r1, r2, r0 8792: 0008 movs r0, r1 8794: 9131 str r1, [sp, #196] ; 0xc4 col_bit += ((box_w - col_end) + col_start) * bpp; 8796: 9b1a ldr r3, [sp, #104] ; 0x68 8798: 1a9b subs r3, r3, r2 879a: 992b ldr r1, [sp, #172] ; 0xac 879c: 468c mov ip, r1 879e: 4463 add r3, ip 87a0: 0019 movs r1, r3 87a2: 4371 muls r1, r6 87a4: 9132 str r1, [sp, #200] ; 0xc8 vdb_buf_tmp += vdb_width - (col_end - col_start) / 3; 87a6: 2103 movs r1, #3 87a8: 4249 negs r1, r1 87aa: 4b5c ldr r3, [pc, #368] ; (891c ) 87ac: 4798 blx r3 87ae: 9b1b ldr r3, [sp, #108] ; 0x6c 87b0: 18c3 adds r3, r0, r3 87b2: 005b lsls r3, r3, #1 87b4: 9333 str r3, [sp, #204] ; 0xcc 87b6: 2300 movs r3, #0 87b8: 932a str r3, [sp, #168] ; 0xa8 color_buf[mask_p] = res_color; 87ba: 465b mov r3, fp 87bc: 9335 str r3, [sp, #212] ; 0xd4 87be: 4653 mov r3, sl 87c0: 9336 str r3, [sp, #216] ; 0xd8 87c2: 9b05 ldr r3, [sp, #20] 87c4: 469a mov sl, r3 87c6: 46ab mov fp, r5 87c8: 9b34 ldr r3, [sp, #208] ; 0xd0 87ca: 4698 mov r8, r3 87cc: 9434 str r4, [sp, #208] ; 0xd0 87ce: 9737 str r7, [sp, #220] ; 0xdc 87d0: e0d4 b.n 897c if(bpp == 3) bpp = 4; 87d2: 2604 movs r6, #4 bitmask_init = 0xF0; 87d4: 23f0 movs r3, #240 ; 0xf0 87d6: 9320 str r3, [sp, #128] ; 0x80 bpp_opa_table = _lv_bpp4_opa_table; 87d8: 4b55 ldr r3, [pc, #340] ; (8930 ) 87da: 9323 str r3, [sp, #140] ; 0x8c 87dc: e71d b.n 861a px_opa = bpp == 8 ? letter_px : bpp_opa_table[letter_px]; 87de: 2e08 cmp r6, #8 87e0: d00b beq.n 87fa 87e2: 4663 mov r3, ip 87e4: 4018 ands r0, r3 87e6: 9b23 ldr r3, [sp, #140] ; 0x8c 87e8: 5c1b ldrb r3, [r3, r0] 87ea: e006 b.n 87fa px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8 87ec: 4663 mov r3, ip 87ee: 4003 ands r3, r0 87f0: 991c ldr r1, [sp, #112] ; 0x70 87f2: 434b muls r3, r1 87f4: 0a1b lsrs r3, r3, #8 87f6: e000 b.n 87fa px_opa = 0; 87f8: 2300 movs r3, #0 font_rgb[subpx_cnt] = px_opa; 87fa: 9917 ldr r1, [sp, #92] ; 0x5c 87fc: 548b strb r3, [r1, r2] subpx_cnt ++; 87fe: 3201 adds r2, #1 if(subpx_cnt == 3) { 8800: 2a03 cmp r2, #3 8802: d022 beq.n 884a if(col_bit < 8 - bpp) { 8804: 9815 ldr r0, [sp, #84] ; 0x54 8806: 991a ldr r1, [sp, #104] ; 0x68 8808: 4288 cmp r0, r1 880a: d27b bcs.n 8904 col_bit += bpp; 880c: 1833 adds r3, r6, r0 bitmask = bitmask >> bpp; 880e: 40f5 lsrs r5, r6 for(col = col_start; col < col_end; col++) { 8810: 3401 adds r4, #1 8812: 9919 ldr r1, [sp, #100] ; 0x64 8814: 42a1 cmp r1, r4 8816: d100 bne.n 881a 8818: e08e b.n 8938 letter_px = (*map_p & bitmask) >> (8 - col_bit - bpp); 881a: 9315 str r3, [sp, #84] ; 0x54 881c: 9905 ldr r1, [sp, #20] 881e: 7808 ldrb r0, [r1, #0] 8820: 4028 ands r0, r5 8822: 2108 movs r1, #8 8824: 1acb subs r3, r1, r3 8826: 1b9b subs r3, r3, r6 8828: 40d8 lsrs r0, r3 882a: b2c3 uxtb r3, r0 if(letter_px != 0) { 882c: 2b00 cmp r3, #0 882e: d0e3 beq.n 87f8 if(opa == LV_OPA_COVER) { 8830: 991c ldr r1, [sp, #112] ; 0x70 8832: 29ff cmp r1, #255 ; 0xff 8834: d0d3 beq.n 87de px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8 8836: 2e08 cmp r6, #8 8838: d0d8 beq.n 87ec : (uint32_t)((uint32_t)bpp_opa_table[letter_px] * opa) >> 8; 883a: 4663 mov r3, ip 883c: 4018 ands r0, r3 883e: 9b23 ldr r3, [sp, #140] ; 0x8c 8840: 5c1b ldrb r3, [r3, r0] 8842: 991c ldr r1, [sp, #112] ; 0x70 8844: 434b muls r3, r1 px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8 8846: 0a1b lsrs r3, r3, #8 8848: e7d7 b.n 87fa res_color.ch.red = (uint32_t)((uint16_t)txt_rgb[0] * font_rgb[0] + (bg_rgb[0] * (255 - font_rgb[0]))) >> 8; 884a: 7808 ldrb r0, [r1, #0] uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue}; 884c: 4653 mov r3, sl 884e: 785b ldrb r3, [r3, #1] res_color.ch.red = (uint32_t)((uint16_t)txt_rgb[0] * font_rgb[0] + (bg_rgb[0] * (255 - font_rgb[0]))) >> 8; 8850: 08db lsrs r3, r3, #3 8852: 4662 mov r2, ip 8854: 1a12 subs r2, r2, r0 8856: 4353 muls r3, r2 8858: 9a27 ldr r2, [sp, #156] ; 0x9c 885a: 4342 muls r2, r0 885c: 189b adds r3, r3, r2 885e: 0a1b lsrs r3, r3, #8 8860: 221f movs r2, #31 8862: 401a ands r2, r3 8864: 9221 str r2, [sp, #132] ; 0x84 res_color.ch.blue = (uint32_t)((uint16_t)txt_rgb[2] * font_rgb[2] + (bg_rgb[2] * (255 - font_rgb[2]))) >> 8; 8866: 788b ldrb r3, [r1, #2] 8868: 0019 movs r1, r3 uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue}; 886a: 4653 mov r3, sl 886c: 781a ldrb r2, [r3, #0] 886e: 06d2 lsls r2, r2, #27 res_color.ch.blue = (uint32_t)((uint16_t)txt_rgb[2] * font_rgb[2] + (bg_rgb[2] * (255 - font_rgb[2]))) >> 8; 8870: 0ed2 lsrs r2, r2, #27 8872: 4667 mov r7, ip 8874: 1a7b subs r3, r7, r1 8876: 435a muls r2, r3 8878: 9b26 ldr r3, [sp, #152] ; 0x98 887a: 434b muls r3, r1 887c: 18d2 adds r2, r2, r3 887e: 0a12 lsrs r2, r2, #8 8880: 231f movs r3, #31 8882: 401a ands r2, r3 8884: 9222 str r2, [sp, #136] ; 0x88 res_color.ch.green = (uint32_t)((uint32_t)txt_rgb[1] * font_rgb[1] + (bg_rgb[1] * (255 - font_rgb[1]))) >> 8; 8886: 9b17 ldr r3, [sp, #92] ; 0x5c 8888: 785b ldrb r3, [r3, #1] 888a: 4698 mov r8, r3 uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue}; 888c: 4653 mov r3, sl 888e: 881b ldrh r3, [r3, #0] 8890: 055b lsls r3, r3, #21 res_color.ch.green = (uint32_t)((uint32_t)txt_rgb[1] * font_rgb[1] + (bg_rgb[1] * (255 - font_rgb[1]))) >> 8; 8892: 0e9b lsrs r3, r3, #26 8894: 4662 mov r2, ip 8896: 4647 mov r7, r8 8898: 1bd2 subs r2, r2, r7 889a: 4353 muls r3, r2 889c: 9a28 ldr r2, [sp, #160] ; 0xa0 889e: 437a muls r2, r7 88a0: 4693 mov fp, r2 88a2: 445b add r3, fp 88a4: 0a1b lsrs r3, r3, #8 88a6: 223f movs r2, #63 ; 0x3f 88a8: 4013 ands r3, r2 if(font_rgb[0] == 0 && font_rgb[1] == 0 && font_rgb[2] == 0) mask_buf[mask_p] = LV_OPA_TRANSP; 88aa: 2800 cmp r0, #0 88ac: d107 bne.n 88be 88ae: 2f00 cmp r7, #0 88b0: d105 bne.n 88be 88b2: 2900 cmp r1, #0 88b4: d103 bne.n 88be 88b6: 9a24 ldr r2, [sp, #144] ; 0x90 88b8: 991b ldr r1, [sp, #108] ; 0x6c 88ba: 5450 strb r0, [r2, r1] 88bc: e003 b.n 88c6 else mask_buf[mask_p] = LV_OPA_COVER; 88be: 9a24 ldr r2, [sp, #144] ; 0x90 88c0: 991b ldr r1, [sp, #108] ; 0x6c 88c2: 4660 mov r0, ip 88c4: 5450 strb r0, [r2, r1] color_buf[mask_p] = res_color; 88c6: 991b ldr r1, [sp, #108] ; 0x6c 88c8: 0048 lsls r0, r1, #1 88ca: 9a25 ldr r2, [sp, #148] ; 0x94 88cc: 4690 mov r8, r2 88ce: 4440 add r0, r8 88d0: 7802 ldrb r2, [r0, #0] 88d2: 271f movs r7, #31 88d4: 43ba bics r2, r7 88d6: 9f22 ldr r7, [sp, #136] ; 0x88 88d8: 4317 orrs r7, r2 88da: 7007 strb r7, [r0, #0] 88dc: 015b lsls r3, r3, #5 88de: 8802 ldrh r2, [r0, #0] 88e0: 4f14 ldr r7, [pc, #80] ; (8934 ) 88e2: 403a ands r2, r7 88e4: 4313 orrs r3, r2 88e6: 8003 strh r3, [r0, #0] 88e8: 9a21 ldr r2, [sp, #132] ; 0x84 88ea: 00d2 lsls r2, r2, #3 88ec: 0a1b lsrs r3, r3, #8 88ee: 2707 movs r7, #7 88f0: 403b ands r3, r7 88f2: 4313 orrs r3, r2 88f4: 7043 strb r3, [r0, #1] mask_p++; 88f6: 1c4b adds r3, r1, #1 88f8: 931b str r3, [sp, #108] ; 0x6c vdb_buf_tmp++; 88fa: 2302 movs r3, #2 88fc: 4698 mov r8, r3 88fe: 44c2 add sl, r8 subpx_cnt = 0; 8900: 2200 movs r2, #0 8902: e77f b.n 8804 map_p++; 8904: 9b05 ldr r3, [sp, #20] 8906: 3301 adds r3, #1 8908: 9305 str r3, [sp, #20] bitmask = bitmask_init; 890a: 9d20 ldr r5, [sp, #128] ; 0x80 col_bit = 0; 890c: 2300 movs r3, #0 890e: e77f b.n 8810 8910: 0000abc5 .word 0x0000abc5 8914: 00018814 .word 0x00018814 8918: 00018800 .word 0x00018800 891c: 00017995 .word 0x00017995 8920: 00010ec1 .word 0x00010ec1 8924: 000043b1 .word 0x000043b1 8928: 0000f709 .word 0x0000f709 892c: 0000a6c1 .word 0x0000a6c1 8930: 00018804 .word 0x00018804 8934: fffff81f .word 0xfffff81f 8938: 9a05 ldr r2, [sp, #20] 893a: 4693 mov fp, r2 893c: 4698 mov r8, r3 if(other_mask_cnt) { 893e: 9b30 ldr r3, [sp, #192] ; 0xc0 8940: 2b00 cmp r3, #0 8942: d133 bne.n 89ac if((uint32_t) mask_p + (col_end - col_start) < mask_buf_size) { 8944: 9b31 ldr r3, [sp, #196] ; 0xc4 8946: 991b ldr r1, [sp, #108] ; 0x6c 8948: 468c mov ip, r1 894a: 4463 add r3, ip 894c: 9a2e ldr r2, [sp, #184] ; 0xb8 894e: 429a cmp r2, r3 8950: d949 bls.n 89e6 map_area.y2 ++; 8952: aa3a add r2, sp, #232 ; 0xe8 8954: 88d3 ldrh r3, [r2, #6] 8956: 3301 adds r3, #1 8958: 80d3 strh r3, [r2, #6] 895a: 912a str r1, [sp, #168] ; 0xa8 col_bit += ((box_w - col_end) + col_start) * bpp; 895c: 9b32 ldr r3, [sp, #200] ; 0xc8 895e: 4443 add r3, r8 map_p += (col_bit >> 3); 8960: 10da asrs r2, r3, #3 8962: 4493 add fp, r2 col_bit = col_bit & 0x7; 8964: 2207 movs r2, #7 8966: 401a ands r2, r3 8968: 4690 mov r8, r2 vdb_buf_tmp += vdb_width - (col_end - col_start) / 3; 896a: 9b33 ldr r3, [sp, #204] ; 0xcc 896c: 469c mov ip, r3 896e: 44e2 add sl, ip for(row = row_start ; row < row_end; row++) { 8970: 9b29 ldr r3, [sp, #164] ; 0xa4 8972: 3301 adds r3, #1 8974: 9329 str r3, [sp, #164] ; 0xa4 8976: 9a2f ldr r2, [sp, #188] ; 0xbc 8978: 4293 cmp r3, r2 897a: da49 bge.n 8a10 bitmask = bitmask_init >> col_bit; 897c: 9d20 ldr r5, [sp, #128] ; 0x80 897e: 4643 mov r3, r8 8980: 40dd lsrs r5, r3 for(col = col_start; col < col_end; col++) { 8982: 9c2b ldr r4, [sp, #172] ; 0xac 8984: 9a19 ldr r2, [sp, #100] ; 0x64 8986: 4294 cmp r4, r2 8988: da0d bge.n 89a6 898a: 9b2a ldr r3, [sp, #168] ; 0xa8 898c: 931b str r3, [sp, #108] ; 0x6c 898e: 2200 movs r2, #0 : (uint32_t)((uint32_t)bpp_opa_table[letter_px] * opa) >> 8; 8990: 23ff movs r3, #255 ; 0xff 8992: 469c mov ip, r3 font_rgb[subpx_cnt] = px_opa; 8994: ab39 add r3, sp, #228 ; 0xe4 8996: 9317 str r3, [sp, #92] ; 0x5c if(col_bit < 8 - bpp) { 8998: 2308 movs r3, #8 899a: 1b9b subs r3, r3, r6 899c: 931a str r3, [sp, #104] ; 0x68 899e: 465b mov r3, fp 89a0: 9305 str r3, [sp, #20] 89a2: 4643 mov r3, r8 89a4: e739 b.n 881a for(col = col_start; col < col_end; col++) { 89a6: 9b2a ldr r3, [sp, #168] ; 0xa8 89a8: 931b str r3, [sp, #108] ; 0x6c 89aa: e7c8 b.n 893e lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf + mask_p_start, map_area.x1, map_area.y2, 89ac: 9b2a ldr r3, [sp, #168] ; 0xa8 89ae: 9a24 ldr r2, [sp, #144] ; 0x90 89b0: 4694 mov ip, r2 89b2: 4463 add r3, ip 89b4: 001c movs r4, r3 89b6: aa3a add r2, sp, #232 ; 0xe8 89b8: 2300 movs r3, #0 89ba: 5ed1 ldrsh r1, [r2, r3] 89bc: 8893 ldrh r3, [r2, #4] 89be: 3301 adds r3, #1 89c0: 1a5b subs r3, r3, r1 89c2: b21b sxth r3, r3 89c4: 2006 movs r0, #6 89c6: 5e12 ldrsh r2, [r2, r0] 89c8: 0020 movs r0, r4 89ca: 4db1 ldr r5, [pc, #708] ; (8c90 ) 89cc: 47a8 blx r5 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { 89ce: 2800 cmp r0, #0 89d0: d1b8 bne.n 8944 89d2: ab3a add r3, sp, #232 ; 0xe8 89d4: 8899 ldrh r1, [r3, #4] 89d6: 3101 adds r1, #1 89d8: 881b ldrh r3, [r3, #0] 89da: 1ac9 subs r1, r1, r3 _lv_memset_00(mask_buf + mask_p_start, lv_area_get_width(&map_area)); 89dc: b209 sxth r1, r1 89de: 0020 movs r0, r4 89e0: 4bac ldr r3, [pc, #688] ; (8c94 ) 89e2: 4798 blx r3 89e4: e7ae b.n 8944 _lv_blend_map(clip_area, &map_area, color_buf, mask_buf, LV_DRAW_MASK_RES_CHANGED, opa, blend_mode); 89e6: ac3a add r4, sp, #232 ; 0xe8 89e8: 9b13 ldr r3, [sp, #76] ; 0x4c 89ea: 9302 str r3, [sp, #8] 89ec: 9b1c ldr r3, [sp, #112] ; 0x70 89ee: 9301 str r3, [sp, #4] 89f0: 2302 movs r3, #2 89f2: 9300 str r3, [sp, #0] 89f4: 9b24 ldr r3, [sp, #144] ; 0x90 89f6: 9a25 ldr r2, [sp, #148] ; 0x94 89f8: 0021 movs r1, r4 89fa: 980e ldr r0, [sp, #56] ; 0x38 89fc: 4da6 ldr r5, [pc, #664] ; (8c98 ) 89fe: 47a8 blx r5 map_area.y1 = map_area.y2 + 1; 8a00: 88e3 ldrh r3, [r4, #6] 8a02: 3301 adds r3, #1 8a04: b21b sxth r3, r3 8a06: 8063 strh r3, [r4, #2] map_area.y2 = map_area.y1; 8a08: 80e3 strh r3, [r4, #6] mask_p = 0; 8a0a: 2300 movs r3, #0 8a0c: 932a str r3, [sp, #168] ; 0xa8 8a0e: e7a5 b.n 895c 8a10: 9b35 ldr r3, [sp, #212] ; 0xd4 8a12: 469b mov fp, r3 8a14: 9b36 ldr r3, [sp, #216] ; 0xd8 8a16: 469a mov sl, r3 8a18: 9c34 ldr r4, [sp, #208] ; 0xd0 8a1a: 9f37 ldr r7, [sp, #220] ; 0xdc if(map_area.y1 != map_area.y2) { 8a1c: aa3a add r2, sp, #232 ; 0xe8 8a1e: 2106 movs r1, #6 8a20: 5e53 ldrsh r3, [r2, r1] 8a22: 2102 movs r1, #2 8a24: 5e52 ldrsh r2, [r2, r1] 8a26: 429a cmp r2, r3 8a28: d00d beq.n 8a46 map_area.y2--; 8a2a: a93a add r1, sp, #232 ; 0xe8 8a2c: 3b01 subs r3, #1 8a2e: 80cb strh r3, [r1, #6] _lv_blend_map(clip_area, &map_area, color_buf, mask_buf, LV_DRAW_MASK_RES_CHANGED, opa, blend_mode); 8a30: 9b13 ldr r3, [sp, #76] ; 0x4c 8a32: 9302 str r3, [sp, #8] 8a34: 9b1c ldr r3, [sp, #112] ; 0x70 8a36: 9301 str r3, [sp, #4] 8a38: 2302 movs r3, #2 8a3a: 9300 str r3, [sp, #0] 8a3c: 9b24 ldr r3, [sp, #144] ; 0x90 8a3e: 9a25 ldr r2, [sp, #148] ; 0x94 8a40: 980e ldr r0, [sp, #56] ; 0x38 8a42: 4d95 ldr r5, [pc, #596] ; (8c98 ) 8a44: 47a8 blx r5 _lv_mem_buf_release(mask_buf); 8a46: 9824 ldr r0, [sp, #144] ; 0x90 8a48: 4d94 ldr r5, [pc, #592] ; (8c9c ) 8a4a: 47a8 blx r5 _lv_mem_buf_release(color_buf); 8a4c: 9825 ldr r0, [sp, #148] ; 0x94 8a4e: 47a8 blx r5 if(letter_w > 0) { 8a50: 9b08 ldr r3, [sp, #32] 8a52: 2b00 cmp r3, #0 8a54: dd05 ble.n 8a62 pos.x += letter_w + dsc->letter_space; 8a56: 89bb ldrh r3, [r7, #12] 8a58: 191b adds r3, r3, r4 8a5a: 9a0a ldr r2, [sp, #40] ; 0x28 8a5c: 4694 mov ip, r2 8a5e: 4463 add r3, ip 8a60: b21c sxth r4, r3 while(i < line_end - line_start) { 8a62: 9954 ldr r1, [sp, #336] ; 0x150 8a64: 9b0b ldr r3, [sp, #44] ; 0x2c 8a66: 465a mov r2, fp 8a68: 1a9b subs r3, r3, r2 8a6a: 428b cmp r3, r1 8a6c: d800 bhi.n 8a70 8a6e: e273 b.n 8f58 if(sel_start != 0xFFFF && sel_end != 0xFFFF) { 8a70: 4b8b ldr r3, [pc, #556] ; (8ca0 ) 8a72: 9a06 ldr r2, [sp, #24] 8a74: 429a cmp r2, r3 8a76: d100 bne.n 8a7a 8a78: e523 b.n 84c2 uint16_t logical_char_pos = 0; 8a7a: 2500 movs r5, #0 if(sel_start != 0xFFFF && sel_end != 0xFFFF) { 8a7c: 459a cmp sl, r3 8a7e: d005 beq.n 8a8c logical_char_pos = _lv_txt_encoded_get_char_id(txt, line_start + i); 8a80: 4459 add r1, fp 8a82: 980d ldr r0, [sp, #52] ; 0x34 8a84: 464b mov r3, r9 8a86: 681b ldr r3, [r3, #0] 8a88: 4798 blx r3 8a8a: b285 uxth r5, r0 uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i); 8a8c: 4e85 ldr r6, [pc, #532] ; (8ca4 ) 8a8e: a954 add r1, sp, #336 ; 0x150 8a90: 9b0c ldr r3, [sp, #48] ; 0x30 8a92: 4698 mov r8, r3 8a94: 0018 movs r0, r3 8a96: 6833 ldr r3, [r6, #0] 8a98: 4798 blx r3 8a9a: 9005 str r0, [sp, #20] uint32_t letter_next = _lv_txt_encoded_next(&bidi_txt[i], NULL); 8a9c: 4642 mov r2, r8 8a9e: 9954 ldr r1, [sp, #336] ; 0x150 8aa0: 468c mov ip, r1 8aa2: 4462 add r2, ip 8aa4: 0010 movs r0, r2 8aa6: 6833 ldr r3, [r6, #0] 8aa8: 2100 movs r1, #0 8aaa: 4798 blx r3 if((dsc->flag & LV_TXT_FLAG_RECOLOR) != 0) { 8aac: 7dfb ldrb r3, [r7, #23] 8aae: 07da lsls r2, r3, #31 8ab0: d507 bpl.n 8ac2 if(letter == (uint32_t)LV_TXT_COLOR_CMD[0]) { 8ab2: 9b05 ldr r3, [sp, #20] 8ab4: 2b23 cmp r3, #35 ; 0x23 8ab6: d100 bne.n 8aba 8ab8: e505 b.n 84c6 if(cmd_state == CMD_STATE_PAR) { 8aba: 9b09 ldr r3, [sp, #36] ; 0x24 8abc: 2b01 cmp r3, #1 8abe: d100 bne.n 8ac2 8ac0: e517 b.n 84f2 lv_color_t color = dsc->color; 8ac2: 883e ldrh r6, [r7, #0] if(cmd_state == CMD_STATE_IN) color = recolor; 8ac4: 9b09 ldr r3, [sp, #36] ; 0x24 8ac6: 2b02 cmp r3, #2 8ac8: d100 bne.n 8acc 8aca: e567 b.n 859c letter_w = lv_font_get_glyph_width(font, letter, letter_next); 8acc: 0002 movs r2, r0 8ace: 9905 ldr r1, [sp, #20] 8ad0: 9807 ldr r0, [sp, #28] 8ad2: 4b75 ldr r3, [pc, #468] ; (8ca8 ) 8ad4: 4798 blx r3 8ad6: 900a str r0, [sp, #40] ; 0x28 8ad8: 9008 str r0, [sp, #32] if(sel_start != 0xFFFF && sel_end != 0xFFFF) { 8ada: 4b71 ldr r3, [pc, #452] ; (8ca0 ) 8adc: 9906 ldr r1, [sp, #24] 8ade: 4299 cmp r1, r3 8ae0: d006 beq.n 8af0 8ae2: 459a cmp sl, r3 8ae4: d004 beq.n 8af0 if(logical_char_pos >= sel_start && logical_char_pos < sel_end) { 8ae6: 42a9 cmp r1, r5 8ae8: d802 bhi.n 8af0 8aea: 45aa cmp sl, r5 8aec: d900 bls.n 8af0 8aee: e56f b.n 85d0 if(opa < LV_OPA_MIN) return; 8af0: 9b0f ldr r3, [sp, #60] ; 0x3c 8af2: 2b04 cmp r3, #4 8af4: d9ac bls.n 8a50 if(font_p == NULL) { 8af6: 9807 ldr r0, [sp, #28] 8af8: 2800 cmp r0, #0 8afa: d0a9 beq.n 8a50 lv_draw_letter(&pos, mask, font, letter, color, opa, dsc->blend_mode); 8afc: 7e7b ldrb r3, [r7, #25] 8afe: 9313 str r3, [sp, #76] ; 0x4c bool g_ret = lv_font_get_glyph_dsc(font_p, &g, letter, '\0'); 8b00: 2300 movs r3, #0 8b02: 9a05 ldr r2, [sp, #20] 8b04: a93c add r1, sp, #240 ; 0xf0 8b06: 4d69 ldr r5, [pc, #420] ; (8cac ) 8b08: 47a8 blx r5 if(g_ret == false) { 8b0a: 2800 cmp r0, #0 8b0c: d0a0 beq.n 8a50 if((g.box_h == 0) && (g.box_w == 0)) return; 8b0e: ab3c add r3, sp, #240 ; 0xf0 8b10: 889a ldrh r2, [r3, #4] 8b12: 2a00 cmp r2, #0 8b14: d102 bne.n 8b1c 8b16: 885b ldrh r3, [r3, #2] 8b18: 2b00 cmp r3, #0 8b1a: d099 beq.n 8a50 int32_t pos_x = pos_p->x + g.ofs_x; 8b1c: ab3c add r3, sp, #240 ; 0xf0 8b1e: 2006 movs r0, #6 8b20: 5e19 ldrsh r1, [r3, r0] 8b22: 4688 mov r8, r1 8b24: 44a0 add r8, r4 if(pos_x + g.box_w < clip_area->x1 || 8b26: 885b ldrh r3, [r3, #2] 8b28: 4443 add r3, r8 8b2a: 980e ldr r0, [sp, #56] ; 0x38 8b2c: 2500 movs r5, #0 8b2e: 5f41 ldrsh r1, [r0, r5] 8b30: 428b cmp r3, r1 8b32: db8d blt.n 8a50 pos_x > clip_area->x2 || 8b34: 0001 movs r1, r0 8b36: 2304 movs r3, #4 8b38: 5ecb ldrsh r3, [r1, r3] if(pos_x + g.box_w < clip_area->x1 || 8b3a: 4598 cmp r8, r3 8b3c: dc88 bgt.n 8a50 int32_t pos_y = pos_p->y + (font_p->line_height - font_p->base_line) - g.box_h - g.ofs_y; 8b3e: 9907 ldr r1, [sp, #28] 8b40: 2508 movs r5, #8 8b42: 5f4b ldrsh r3, [r1, r5] 8b44: 250a movs r5, #10 8b46: 5f49 ldrsh r1, [r1, r5] 8b48: 1a5b subs r3, r3, r1 8b4a: 9911 ldr r1, [sp, #68] ; 0x44 8b4c: 468c mov ip, r1 8b4e: 4463 add r3, ip 8b50: 1a9b subs r3, r3, r2 8b52: a93c add r1, sp, #240 ; 0xf0 8b54: 2508 movs r5, #8 8b56: 5f49 ldrsh r1, [r1, r5] 8b58: 1a5b subs r3, r3, r1 8b5a: 001d movs r5, r3 8b5c: 9317 str r3, [sp, #92] ; 0x5c pos_y + g.box_h < clip_area->y1 || 8b5e: 469c mov ip, r3 8b60: 4462 add r2, ip 8b62: 0001 movs r1, r0 8b64: 2002 movs r0, #2 8b66: 5e0b ldrsh r3, [r1, r0] pos_x > clip_area->x2 || 8b68: 429a cmp r2, r3 8b6a: da00 bge.n 8b6e 8b6c: e770 b.n 8a50 pos_y > clip_area->y2) { 8b6e: 2206 movs r2, #6 8b70: 5e8b ldrsh r3, [r1, r2] pos_y + g.box_h < clip_area->y1 || 8b72: 429d cmp r5, r3 8b74: dd00 ble.n 8b78 8b76: e76b b.n 8a50 const uint8_t * map_p = lv_font_get_glyph_bitmap(font_p, letter); 8b78: 9905 ldr r1, [sp, #20] 8b7a: 9807 ldr r0, [sp, #28] 8b7c: 4b4c ldr r3, [pc, #304] ; (8cb0 ) 8b7e: 4798 blx r3 8b80: 1e05 subs r5, r0, #0 if(map_p == NULL) { 8b82: d100 bne.n 8b86 8b84: e764 b.n 8a50 if(font_p->subpx) { 8b86: 9b07 ldr r3, [sp, #28] 8b88: 7b1b ldrb r3, [r3, #12] 8b8a: 079b lsls r3, r3, #30 8b8c: d020 beq.n 8bd0 draw_letter_subpx(pos_x, pos_y, &g, clip_area, map_p, color, opa, blend_mode); 8b8e: 4643 mov r3, r8 8b90: b21b sxth r3, r3 8b92: 9305 str r3, [sp, #20] 8b94: 466b mov r3, sp 8b96: 225c movs r2, #92 ; 0x5c 8b98: 189b adds r3, r3, r2 8b9a: 2200 movs r2, #0 8b9c: 5e9b ldrsh r3, [r3, r2] 8b9e: 9315 str r3, [sp, #84] ; 0x54 8ba0: 466b mov r3, sp 8ba2: 2290 movs r2, #144 ; 0x90 8ba4: 189b adds r3, r3, r2 8ba6: 801e strh r6, [r3, #0] uint32_t bpp = g->bpp; 8ba8: ab3c add r3, sp, #240 ; 0xf0 8baa: 7a9b ldrb r3, [r3, #10] 8bac: 001e movs r6, r3 if(bpp == 3) bpp = 4; 8bae: 2b03 cmp r3, #3 8bb0: d100 bne.n 8bb4 8bb2: e60e b.n 87d2 switch(bpp) { 8bb4: 2b02 cmp r3, #2 8bb6: d100 bne.n 8bba 8bb8: e52b b.n 8612 8bba: d900 bls.n 8bbe 8bbc: e51d b.n 85fa 8bbe: 2b01 cmp r3, #1 8bc0: d000 beq.n 8bc4 8bc2: e745 b.n 8a50 uint32_t bpp = g->bpp; 8bc4: 2601 movs r6, #1 bitmask_init = 0x80; 8bc6: 2380 movs r3, #128 ; 0x80 8bc8: 9320 str r3, [sp, #128] ; 0x80 bpp_opa_table = _lv_bpp1_opa_table; 8bca: 4b3a ldr r3, [pc, #232] ; (8cb4 ) 8bcc: 9323 str r3, [sp, #140] ; 0x8c 8bce: e524 b.n 861a draw_letter_normal(pos_x, pos_y, &g, clip_area, map_p, color, opa, blend_mode); 8bd0: 4643 mov r3, r8 8bd2: b21b sxth r3, r3 8bd4: 469c mov ip, r3 8bd6: 466b mov r3, sp 8bd8: 225c movs r2, #92 ; 0x5c 8bda: 189b adds r3, r3, r2 8bdc: 2200 movs r2, #0 8bde: 5e9b ldrsh r3, [r3, r2] 8be0: 9321 str r3, [sp, #132] ; 0x84 8be2: 466b mov r3, sp 8be4: 22a0 movs r2, #160 ; 0xa0 8be6: 189b adds r3, r3, r2 8be8: 801e strh r6, [r3, #0] uint32_t bpp = g->bpp; 8bea: ab3c add r3, sp, #240 ; 0xf0 8bec: 7a9b ldrb r3, [r3, #10] 8bee: 9320 str r3, [sp, #128] ; 0x80 if(bpp == 3) bpp = 4; 8bf0: 2b03 cmp r3, #3 8bf2: d033 beq.n 8c5c switch(bpp) { 8bf4: 2b02 cmp r3, #2 8bf6: d019 beq.n 8c2c 8bf8: d80a bhi.n 8c10 8bfa: 2b01 cmp r3, #1 8bfc: d000 beq.n 8c00 8bfe: e727 b.n 8a50 uint32_t bpp = g->bpp; 8c00: 2301 movs r3, #1 8c02: 9320 str r3, [sp, #128] ; 0x80 shades = 2; 8c04: 2102 movs r1, #2 bitmask_init = 0x80; 8c06: 337f adds r3, #127 ; 0x7f 8c08: 9315 str r3, [sp, #84] ; 0x54 bpp_opa_table_p = _lv_bpp1_opa_table; 8c0a: 4b2a ldr r3, [pc, #168] ; (8cb4 ) 8c0c: 9327 str r3, [sp, #156] ; 0x9c 8c0e: e012 b.n 8c36 switch(bpp) { 8c10: 2b04 cmp r3, #4 8c12: d025 beq.n 8c60 8c14: 2b08 cmp r3, #8 8c16: d000 beq.n 8c1a 8c18: e71a b.n 8a50 uint32_t bpp = g->bpp; 8c1a: 2308 movs r3, #8 8c1c: 9320 str r3, [sp, #128] ; 0x80 shades = 256; 8c1e: 2180 movs r1, #128 ; 0x80 8c20: 0049 lsls r1, r1, #1 bitmask_init = 0xFF; 8c22: 33f7 adds r3, #247 ; 0xf7 8c24: 9315 str r3, [sp, #84] ; 0x54 bpp_opa_table_p = _lv_bpp8_opa_table; 8c26: 4b24 ldr r3, [pc, #144] ; (8cb8 ) 8c28: 9327 str r3, [sp, #156] ; 0x9c 8c2a: e004 b.n 8c36 shades = 4; 8c2c: 2104 movs r1, #4 bitmask_init = 0xC0; 8c2e: 23c0 movs r3, #192 ; 0xc0 8c30: 9315 str r3, [sp, #84] ; 0x54 bpp_opa_table_p = _lv_bpp2_opa_table; 8c32: 4b22 ldr r3, [pc, #136] ; (8cbc ) 8c34: 9327 str r3, [sp, #156] ; 0x9c if(opa < LV_OPA_MAX) { 8c36: 9a1c ldr r2, [sp, #112] ; 0x70 8c38: 2af9 cmp r2, #249 ; 0xf9 8c3a: d857 bhi.n 8cec if(prev_opa != opa || prev_bpp != bpp) { 8c3c: 4b20 ldr r3, [pc, #128] ; (8cc0 ) 8c3e: 781b ldrb r3, [r3, #0] 8c40: 4293 cmp r3, r2 8c42: d013 beq.n 8c6c for(i = 0; i < shades; i++) { 8c44: 2200 movs r2, #0 8c46: 2900 cmp r1, #0 8c48: d045 beq.n 8cd6 opa_table[i] = bpp_opa_table_p[i] == LV_OPA_COVER ? opa : ((bpp_opa_table_p[i] * opa) >> 8); 8c4a: 9e1c ldr r6, [sp, #112] ; 0x70 8c4c: 481d ldr r0, [pc, #116] ; (8cc4 ) 8c4e: 465b mov r3, fp 8c50: 9319 str r3, [sp, #100] ; 0x64 8c52: 46a3 mov fp, r4 8c54: 0034 movs r4, r6 8c56: 9605 str r6, [sp, #20] 8c58: 9e27 ldr r6, [sp, #156] ; 0x9c 8c5a: e012 b.n 8c82 if(bpp == 3) bpp = 4; 8c5c: 2304 movs r3, #4 8c5e: 9320 str r3, [sp, #128] ; 0x80 shades = 16; 8c60: 2110 movs r1, #16 bitmask_init = 0xF0; 8c62: 23f0 movs r3, #240 ; 0xf0 8c64: 9315 str r3, [sp, #84] ; 0x54 bpp_opa_table_p = _lv_bpp4_opa_table; 8c66: 4b18 ldr r3, [pc, #96] ; (8cc8 ) 8c68: 9327 str r3, [sp, #156] ; 0x9c 8c6a: e7e4 b.n 8c36 if(prev_opa != opa || prev_bpp != bpp) { 8c6c: 4b17 ldr r3, [pc, #92] ; (8ccc ) 8c6e: 681b ldr r3, [r3, #0] 8c70: 9a20 ldr r2, [sp, #128] ; 0x80 8c72: 429a cmp r2, r3 8c74: d1e6 bne.n 8c44 8c76: e02e b.n 8cd6 opa_table[i] = bpp_opa_table_p[i] == LV_OPA_COVER ? opa : ((bpp_opa_table_p[i] * opa) >> 8); 8c78: 9b05 ldr r3, [sp, #20] 8c7a: 5413 strb r3, [r2, r0] for(i = 0; i < shades; i++) { 8c7c: 3201 adds r2, #1 8c7e: 428a cmp r2, r1 8c80: d026 beq.n 8cd0 opa_table[i] = bpp_opa_table_p[i] == LV_OPA_COVER ? opa : ((bpp_opa_table_p[i] * opa) >> 8); 8c82: 5cb3 ldrb r3, [r6, r2] 8c84: 2bff cmp r3, #255 ; 0xff 8c86: d0f7 beq.n 8c78 8c88: 4363 muls r3, r4 8c8a: 0a1b lsrs r3, r3, #8 8c8c: e7f5 b.n 8c7a 8c8e: 46c0 nop ; (mov r8, r8) 8c90: 0000a625 .word 0x0000a625 8c94: 0001104d .word 0x0001104d 8c98: 00006951 .word 0x00006951 8c9c: 00010bd5 .word 0x00010bd5 8ca0: 0000ffff .word 0x0000ffff 8ca4: 20000058 .word 0x20000058 8ca8: 0000e769 .word 0x0000e769 8cac: 0000e761 .word 0x0000e761 8cb0: 0000e759 .word 0x0000e759 8cb4: 000187fc .word 0x000187fc 8cb8: 00018814 .word 0x00018814 8cbc: 00018800 .word 0x00018800 8cc0: 20002bb4 .word 0x20002bb4 8cc4: 20002ab0 .word 0x20002ab0 8cc8: 00018804 .word 0x00018804 8ccc: 20002bb0 .word 0x20002bb0 8cd0: 465c mov r4, fp 8cd2: 9b19 ldr r3, [sp, #100] ; 0x64 8cd4: 469b mov fp, r3 prev_opa = opa; 8cd6: 4bd7 ldr r3, [pc, #860] ; (9034 ) 8cd8: 466a mov r2, sp 8cda: 2170 movs r1, #112 ; 0x70 8cdc: 1852 adds r2, r2, r1 8cde: 7812 ldrb r2, [r2, #0] 8ce0: 701a strb r2, [r3, #0] prev_bpp = bpp; 8ce2: 4bd5 ldr r3, [pc, #852] ; (9038 ) 8ce4: 9a20 ldr r2, [sp, #128] ; 0x80 8ce6: 601a str r2, [r3, #0] bpp_opa_table_p = opa_table; 8ce8: 4bd4 ldr r3, [pc, #848] ; (903c ) 8cea: 9327 str r3, [sp, #156] ; 0x9c int32_t box_w = g->box_w; 8cec: ab3c add r3, sp, #240 ; 0xf0 8cee: 885a ldrh r2, [r3, #2] 8cf0: 9205 str r2, [sp, #20] int32_t box_h = g->box_h; 8cf2: 8899 ldrh r1, [r3, #4] int32_t width_bit = box_w * bpp; /*Letter width in bits*/ 8cf4: 9820 ldr r0, [sp, #128] ; 0x80 8cf6: 4350 muls r0, r2 int32_t col_start = pos_x >= clip_area->x1 ? 0 : clip_area->x1 - pos_x; 8cf8: 9b0e ldr r3, [sp, #56] ; 0x38 8cfa: 2200 movs r2, #0 8cfc: 5e9b ldrsh r3, [r3, r2] 8cfe: 2200 movs r2, #0 8d00: 9219 str r2, [sp, #100] ; 0x64 8d02: 459c cmp ip, r3 8d04: da02 bge.n 8d0c 8d06: 4662 mov r2, ip 8d08: 1a9b subs r3, r3, r2 8d0a: 9319 str r3, [sp, #100] ; 0x64 int32_t col_end = pos_x + box_w <= clip_area->x2 ? box_w : clip_area->x2 - pos_x + 1; 8d0c: 9b0e ldr r3, [sp, #56] ; 0x38 8d0e: 2204 movs r2, #4 8d10: 5e9b ldrsh r3, [r3, r2] 8d12: 9e05 ldr r6, [sp, #20] 8d14: 0032 movs r2, r6 8d16: 4462 add r2, ip 8d18: 961b str r6, [sp, #108] ; 0x6c 8d1a: 429a cmp r2, r3 8d1c: dd03 ble.n 8d26 8d1e: 4662 mov r2, ip 8d20: 1a9b subs r3, r3, r2 8d22: 3301 adds r3, #1 8d24: 931b str r3, [sp, #108] ; 0x6c int32_t row_start = pos_y >= clip_area->y1 ? 0 : clip_area->y1 - pos_y; 8d26: 9b0e ldr r3, [sp, #56] ; 0x38 8d28: 2202 movs r2, #2 8d2a: 5e9b ldrsh r3, [r3, r2] 8d2c: 2200 movs r2, #0 8d2e: 921a str r2, [sp, #104] ; 0x68 8d30: 9e21 ldr r6, [sp, #132] ; 0x84 8d32: 429e cmp r6, r3 8d34: da01 bge.n 8d3a 8d36: 1b9b subs r3, r3, r6 8d38: 931a str r3, [sp, #104] ; 0x68 int32_t row_end = pos_y + box_h <= clip_area->y2 ? box_h : clip_area->y2 - pos_y + 1; 8d3a: 9b0e ldr r3, [sp, #56] ; 0x38 8d3c: 2206 movs r2, #6 8d3e: 5e9a ldrsh r2, [r3, r2] 8d40: 9e21 ldr r6, [sp, #132] ; 0x84 8d42: 198b adds r3, r1, r6 8d44: 9122 str r1, [sp, #136] ; 0x88 8d46: 4293 cmp r3, r2 8d48: dd02 ble.n 8d50 8d4a: 1b92 subs r2, r2, r6 8d4c: 1c53 adds r3, r2, #1 8d4e: 9322 str r3, [sp, #136] ; 0x88 uint32_t bit_ofs = (row_start * width_bit) + (col_start * bpp); 8d50: 9b19 ldr r3, [sp, #100] ; 0x64 8d52: 9326 str r3, [sp, #152] ; 0x98 8d54: 9a1a ldr r2, [sp, #104] ; 0x68 8d56: 4350 muls r0, r2 8d58: 9a20 ldr r2, [sp, #128] ; 0x80 8d5a: 435a muls r2, r3 8d5c: 1880 adds r0, r0, r2 map_p += bit_ofs >> 3; 8d5e: 08c6 lsrs r6, r0, #3 8d60: 19ae adds r6, r5, r6 col_bit = bit_ofs & 0x7; /* "& 0x7" equals to "% 8" just faster */ 8d62: 2507 movs r5, #7 8d64: 4005 ands r5, r0 uint32_t mask_buf_size = box_w * box_h > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : box_w * box_h; 8d66: 9b05 ldr r3, [sp, #20] 8d68: 434b muls r3, r1 8d6a: 001a movs r2, r3 8d6c: 9323 str r3, [sp, #140] ; 0x8c 8d6e: 23f0 movs r3, #240 ; 0xf0 8d70: 005b lsls r3, r3, #1 8d72: 429a cmp r2, r3 8d74: dd00 ble.n 8d78 8d76: 9323 str r3, [sp, #140] ; 0x8c lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 8d78: 9823 ldr r0, [sp, #140] ; 0x8c 8d7a: 4bb1 ldr r3, [pc, #708] ; (9040 ) 8d7c: 4798 blx r3 8d7e: 9021 str r0, [sp, #132] ; 0x84 fill_area.x1 = col_start + pos_x; 8d80: 4643 mov r3, r8 8d82: 466a mov r2, sp 8d84: 2190 movs r1, #144 ; 0x90 8d86: 1852 adds r2, r2, r1 8d88: 8013 strh r3, [r2, #0] 8d8a: 466b mov r3, sp 8d8c: 2290 movs r2, #144 ; 0x90 8d8e: 189b adds r3, r3, r2 8d90: 8819 ldrh r1, [r3, #0] 8d92: ab3a add r3, sp, #232 ; 0xe8 8d94: 9a19 ldr r2, [sp, #100] ; 0x64 8d96: 188a adds r2, r1, r2 8d98: 801a strh r2, [r3, #0] fill_area.x2 = col_end + pos_x - 1; 8d9a: 1e4a subs r2, r1, #1 8d9c: 991b ldr r1, [sp, #108] ; 0x6c 8d9e: 468c mov ip, r1 8da0: 4462 add r2, ip 8da2: 809a strh r2, [r3, #4] fill_area.y1 = row_start + pos_y; 8da4: 9817 ldr r0, [sp, #92] ; 0x5c 8da6: 0002 movs r2, r0 8da8: 981a ldr r0, [sp, #104] ; 0x68 8daa: 4684 mov ip, r0 8dac: 4462 add r2, ip 8dae: b212 sxth r2, r2 8db0: 805a strh r2, [r3, #2] fill_area.y2 = fill_area.y1; 8db2: 80da strh r2, [r3, #6] uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 8db4: 4ba3 ldr r3, [pc, #652] ; (9044 ) 8db6: 4798 blx r3 8db8: 9024 str r0, [sp, #144] ; 0x90 uint32_t col_bit_max = 8 - bpp; 8dba: 2308 movs r3, #8 8dbc: 9a20 ldr r2, [sp, #128] ; 0x80 8dbe: 1a9b subs r3, r3, r2 8dc0: 4698 mov r8, r3 uint32_t col_bit_row_ofs = (box_w + col_start - col_end) * bpp; 8dc2: 9b05 ldr r3, [sp, #20] 8dc4: 9919 ldr r1, [sp, #100] ; 0x64 8dc6: 468c mov ip, r1 8dc8: 4463 add r3, ip 8dca: 991b ldr r1, [sp, #108] ; 0x6c 8dcc: 1a5b subs r3, r3, r1 8dce: 0011 movs r1, r2 8dd0: 435a muls r2, r3 8dd2: 9225 str r2, [sp, #148] ; 0x94 for(row = row_start ; row < row_end; row++) { 8dd4: 981a ldr r0, [sp, #104] ; 0x68 8dd6: 9b22 ldr r3, [sp, #136] ; 0x88 8dd8: 4298 cmp r0, r3 8dda: db00 blt.n 8dde 8ddc: e09d b.n 8f1a 8dde: 2300 movs r3, #0 8de0: 9317 str r3, [sp, #92] ; 0x5c mask_buf[mask_p] = 0; 8de2: 465b mov r3, fp 8de4: 9329 str r3, [sp, #164] ; 0xa4 8de6: 4653 mov r3, sl 8de8: 932a str r3, [sp, #168] ; 0xa8 8dea: 9b27 ldr r3, [sp, #156] ; 0x9c 8dec: 469a mov sl, r3 8dee: 9427 str r4, [sp, #156] ; 0x9c 8df0: 4643 mov r3, r8 8df2: 9320 str r3, [sp, #128] ; 0x80 8df4: 4688 mov r8, r1 8df6: 972b str r7, [sp, #172] ; 0xac 8df8: e039 b.n 8e6e 8dfa: 2300 movs r3, #0 8dfc: 7013 strb r3, [r2, #0] 8dfe: e012 b.n 8e26 map_p++; 8e00: 3601 adds r6, #1 bitmask = bitmask_init; 8e02: 9915 ldr r1, [sp, #84] ; 0x54 col_bit = 0; 8e04: 2500 movs r5, #0 8e06: 3201 adds r2, #1 for(col = col_start; col < col_end; col++) { 8e08: 9b05 ldr r3, [sp, #20] 8e0a: 4293 cmp r3, r2 8e0c: d010 beq.n 8e30 letter_px = (*map_p & bitmask) >> (col_bit_max - col_bit); 8e0e: 7833 ldrb r3, [r6, #0] 8e10: 400b ands r3, r1 8e12: 1b60 subs r0, r4, r5 8e14: 40c3 lsrs r3, r0 if(letter_px) { 8e16: b2d8 uxtb r0, r3 8e18: 2800 cmp r0, #0 8e1a: d0ee beq.n 8dfa mask_buf[mask_p] = bpp_opa_table_p[letter_px]; 8e1c: 4658 mov r0, fp 8e1e: 4003 ands r3, r0 8e20: 4650 mov r0, sl 8e22: 5cc3 ldrb r3, [r0, r3] 8e24: 7013 strb r3, [r2, #0] if(col_bit < col_bit_max) { 8e26: 42ac cmp r4, r5 8e28: d9ea bls.n 8e00 col_bit += bpp; 8e2a: 19ed adds r5, r5, r7 bitmask = bitmask >> bpp; 8e2c: 40f9 lsrs r1, r7 8e2e: e7ea b.n 8e06 8e30: 46b8 mov r8, r7 8e32: 9420 str r4, [sp, #128] ; 0x80 8e34: 4667 mov r7, ip if(other_mask_cnt) { 8e36: 9b24 ldr r3, [sp, #144] ; 0x90 8e38: 2b00 cmp r3, #0 8e3a: d133 bne.n 8ea4 if((uint32_t) mask_p + (col_end - col_start) < mask_buf_size) { 8e3c: 9b1b ldr r3, [sp, #108] ; 0x6c 8e3e: 9a19 ldr r2, [sp, #100] ; 0x64 8e40: 1a9b subs r3, r3, r2 8e42: 19db adds r3, r3, r7 8e44: 9a23 ldr r2, [sp, #140] ; 0x8c 8e46: 429a cmp r2, r3 8e48: d949 bls.n 8ede fill_area.y2 ++; 8e4a: aa3a add r2, sp, #232 ; 0xe8 8e4c: 88d3 ldrh r3, [r2, #6] 8e4e: 3301 adds r3, #1 8e50: 80d3 strh r3, [r2, #6] 8e52: 9717 str r7, [sp, #92] ; 0x5c col_bit += col_bit_row_ofs; 8e54: 9b25 ldr r3, [sp, #148] ; 0x94 8e56: 469c mov ip, r3 8e58: 4465 add r5, ip map_p += (col_bit >> 3); 8e5a: 08eb lsrs r3, r5, #3 8e5c: 18f6 adds r6, r6, r3 col_bit = col_bit & 0x7; 8e5e: 2307 movs r3, #7 8e60: 401d ands r5, r3 for(row = row_start ; row < row_end; row++) { 8e62: 9b1a ldr r3, [sp, #104] ; 0x68 8e64: 3301 adds r3, #1 8e66: 931a str r3, [sp, #104] ; 0x68 8e68: 9a22 ldr r2, [sp, #136] ; 0x88 8e6a: 4293 cmp r3, r2 8e6c: da4f bge.n 8f0e bitmask = bitmask_init >> col_bit; 8e6e: 9915 ldr r1, [sp, #84] ; 0x54 8e70: 40e9 lsrs r1, r5 for(col = col_start; col < col_end; col++) { 8e72: 9b19 ldr r3, [sp, #100] ; 0x64 8e74: 001a movs r2, r3 8e76: 981b ldr r0, [sp, #108] ; 0x6c 8e78: 4282 cmp r2, r0 8e7a: da11 bge.n 8ea0 8e7c: 9f21 ldr r7, [sp, #132] ; 0x84 8e7e: 003a movs r2, r7 8e80: 9c17 ldr r4, [sp, #92] ; 0x5c 8e82: 46a4 mov ip, r4 8e84: 4462 add r2, ip 8e86: 0003 movs r3, r0 8e88: 9826 ldr r0, [sp, #152] ; 0x98 8e8a: 1a1b subs r3, r3, r0 8e8c: 449c add ip, r3 8e8e: 003b movs r3, r7 8e90: 4463 add r3, ip 8e92: 0018 movs r0, r3 mask_buf[mask_p] = bpp_opa_table_p[letter_px]; 8e94: 23ff movs r3, #255 ; 0xff 8e96: 469b mov fp, r3 8e98: 9005 str r0, [sp, #20] 8e9a: 4647 mov r7, r8 8e9c: 9c20 ldr r4, [sp, #128] ; 0x80 8e9e: e7b6 b.n 8e0e for(col = col_start; col < col_end; col++) { 8ea0: 9f17 ldr r7, [sp, #92] ; 0x5c 8ea2: e7c8 b.n 8e36 lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf + mask_p_start, fill_area.x1, fill_area.y2, 8ea4: 9b17 ldr r3, [sp, #92] ; 0x5c 8ea6: 9a21 ldr r2, [sp, #132] ; 0x84 8ea8: 4694 mov ip, r2 8eaa: 4463 add r3, ip 8eac: 469b mov fp, r3 8eae: aa3a add r2, sp, #232 ; 0xe8 8eb0: 2300 movs r3, #0 8eb2: 5ed1 ldrsh r1, [r2, r3] 8eb4: 8893 ldrh r3, [r2, #4] 8eb6: 3301 adds r3, #1 8eb8: 1a5b subs r3, r3, r1 8eba: b21b sxth r3, r3 8ebc: 2006 movs r0, #6 8ebe: 5e12 ldrsh r2, [r2, r0] 8ec0: 4658 mov r0, fp 8ec2: 4c61 ldr r4, [pc, #388] ; (9048 ) 8ec4: 47a0 blx r4 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { 8ec6: 2800 cmp r0, #0 8ec8: d1b8 bne.n 8e3c 8eca: ab3a add r3, sp, #232 ; 0xe8 8ecc: 8899 ldrh r1, [r3, #4] 8ece: 3101 adds r1, #1 8ed0: 881b ldrh r3, [r3, #0] 8ed2: 1ac9 subs r1, r1, r3 _lv_memset_00(mask_buf + mask_p_start, lv_area_get_width(&fill_area)); 8ed4: b209 sxth r1, r1 8ed6: 4658 mov r0, fp 8ed8: 4b5c ldr r3, [pc, #368] ; (904c ) 8eda: 4798 blx r3 8edc: e7ae b.n 8e3c _lv_blend_fill(clip_area, &fill_area, 8ede: af3a add r7, sp, #232 ; 0xe8 8ee0: 9b13 ldr r3, [sp, #76] ; 0x4c 8ee2: 9302 str r3, [sp, #8] 8ee4: 23ff movs r3, #255 ; 0xff 8ee6: 9301 str r3, [sp, #4] 8ee8: 3bfd subs r3, #253 ; 0xfd 8eea: 9300 str r3, [sp, #0] 8eec: 9b21 ldr r3, [sp, #132] ; 0x84 8eee: 466a mov r2, sp 8ef0: 21a0 movs r1, #160 ; 0xa0 8ef2: 1852 adds r2, r2, r1 8ef4: 8812 ldrh r2, [r2, #0] 8ef6: 0039 movs r1, r7 8ef8: 980e ldr r0, [sp, #56] ; 0x38 8efa: 4c55 ldr r4, [pc, #340] ; (9050 ) 8efc: 47a0 blx r4 fill_area.y1 = fill_area.y2 + 1; 8efe: 88fb ldrh r3, [r7, #6] 8f00: 3301 adds r3, #1 8f02: b21b sxth r3, r3 8f04: 807b strh r3, [r7, #2] fill_area.y2 = fill_area.y1; 8f06: 80fb strh r3, [r7, #6] mask_p = 0; 8f08: 2300 movs r3, #0 8f0a: 9317 str r3, [sp, #92] ; 0x5c 8f0c: e7a2 b.n 8e54 8f0e: 9b29 ldr r3, [sp, #164] ; 0xa4 8f10: 469b mov fp, r3 8f12: 9b2a ldr r3, [sp, #168] ; 0xa8 8f14: 469a mov sl, r3 8f16: 9c27 ldr r4, [sp, #156] ; 0x9c 8f18: 9f2b ldr r7, [sp, #172] ; 0xac if(fill_area.y1 != fill_area.y2) { 8f1a: aa3a add r2, sp, #232 ; 0xe8 8f1c: 2106 movs r1, #6 8f1e: 5e53 ldrsh r3, [r2, r1] 8f20: 2102 movs r1, #2 8f22: 5e52 ldrsh r2, [r2, r1] 8f24: 429a cmp r2, r3 8f26: d010 beq.n 8f4a fill_area.y2--; 8f28: a93a add r1, sp, #232 ; 0xe8 8f2a: 3b01 subs r3, #1 8f2c: 80cb strh r3, [r1, #6] _lv_blend_fill(clip_area, &fill_area, 8f2e: 9b13 ldr r3, [sp, #76] ; 0x4c 8f30: 9302 str r3, [sp, #8] 8f32: 23ff movs r3, #255 ; 0xff 8f34: 9301 str r3, [sp, #4] 8f36: 3bfd subs r3, #253 ; 0xfd 8f38: 9300 str r3, [sp, #0] 8f3a: 9b21 ldr r3, [sp, #132] ; 0x84 8f3c: 466a mov r2, sp 8f3e: 20a0 movs r0, #160 ; 0xa0 8f40: 1812 adds r2, r2, r0 8f42: 8812 ldrh r2, [r2, #0] 8f44: 980e ldr r0, [sp, #56] ; 0x38 8f46: 4d42 ldr r5, [pc, #264] ; (9050 ) 8f48: 47a8 blx r5 _lv_mem_buf_release(mask_buf); 8f4a: 9821 ldr r0, [sp, #132] ; 0x84 8f4c: 4b41 ldr r3, [pc, #260] ; (9054 ) 8f4e: 4798 blx r3 8f50: e57e b.n 8a50 cmd_state = CMD_STATE_WAIT; 8f52: 2300 movs r3, #0 8f54: 9309 str r3, [sp, #36] ; 0x24 8f56: e584 b.n 8a62 8f58: 46d0 mov r8, sl 8f5a: 46a2 mov sl, r4 8f5c: 003e movs r6, r7 if(dsc->decor & LV_TEXT_DECOR_STRIKETHROUGH) { 8f5e: 7e3b ldrb r3, [r7, #24] 8f60: 079b lsls r3, r3, #30 8f62: d447 bmi.n 8ff4 if(dsc->decor & LV_TEXT_DECOR_UNDERLINE) { 8f64: 7e33 ldrb r3, [r6, #24] 8f66: 07db lsls r3, r3, #31 8f68: d500 bpl.n 8f6c 8f6a: e07b b.n 9064 line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 8f6c: 9b0d ldr r3, [sp, #52] ; 0x34 8f6e: 001f movs r7, r3 8f70: 9d0b ldr r5, [sp, #44] ; 0x2c 8f72: 46ac mov ip, r5 8f74: 4467 add r7, ip 8f76: 230c movs r3, #12 8f78: 5ef2 ldrsh r2, [r6, r3] 8f7a: 7df3 ldrb r3, [r6, #23] 8f7c: 9300 str r3, [sp, #0] 8f7e: 9b12 ldr r3, [sp, #72] ; 0x48 8f80: 9907 ldr r1, [sp, #28] 8f82: 0038 movs r0, r7 8f84: 4c34 ldr r4, [pc, #208] ; (9058 ) 8f86: 47a0 blx r4 8f88: 1944 adds r4, r0, r5 pos.x = coords->x1; 8f8a: 9b10 ldr r3, [sp, #64] ; 0x40 8f8c: 2500 movs r5, #0 8f8e: 5f5d ldrsh r5, [r3, r5] if(dsc->flag & LV_TXT_FLAG_CENTER) { 8f90: 7df2 ldrb r2, [r6, #23] 8f92: 0753 lsls r3, r2, #29 8f94: d500 bpl.n 8f98 8f96: e084 b.n 90a2 else if(dsc->flag & LV_TXT_FLAG_RIGHT) { 8f98: 0713 lsls r3, r2, #28 8f9a: d500 bpl.n 8f9e 8f9c: e096 b.n 90cc 8f9e: 9b11 ldr r3, [sp, #68] ; 0x44 8fa0: 9918 ldr r1, [sp, #96] ; 0x60 8fa2: 468c mov ip, r1 8fa4: 4463 add r3, ip 8fa6: 9a14 ldr r2, [sp, #80] ; 0x50 8fa8: 4462 add r2, ip 8faa: b292 uxth r2, r2 8fac: 9214 str r2, [sp, #80] ; 0x50 line_start = line_end; 8fae: 9a0b ldr r2, [sp, #44] ; 0x2c 8fb0: 4693 mov fp, r2 pos.y += line_height; 8fb2: b21b sxth r3, r3 8fb4: 001a movs r2, r3 8fb6: 9311 str r3, [sp, #68] ; 0x44 if(pos.y > mask->y2) return; 8fb8: 9b0e ldr r3, [sp, #56] ; 0x38 8fba: 2106 movs r1, #6 8fbc: 5e5b ldrsh r3, [r3, r1] 8fbe: 4293 cmp r3, r2 8fc0: da01 bge.n 8fc6 8fc2: f7ff f93b bl 823c line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 8fc6: 940b str r4, [sp, #44] ; 0x2c while(txt[line_start] != '\0') { 8fc8: 9b0d ldr r3, [sp, #52] ; 0x34 8fca: 445b add r3, fp 8fcc: 930c str r3, [sp, #48] ; 0x30 8fce: 781b ldrb r3, [r3, #0] 8fd0: 2b00 cmp r3, #0 8fd2: d101 bne.n 8fd8 8fd4: f7ff f932 bl 823c pos.x += x_ofs; 8fd8: 9b1e ldr r3, [sp, #120] ; 0x78 8fda: 469c mov ip, r3 8fdc: 4465 add r5, ip 8fde: b22b sxth r3, r5 8fe0: 469a mov sl, r3 i = 0; 8fe2: 2300 movs r3, #0 8fe4: 9354 str r3, [sp, #336] ; 0x150 cmd_state = CMD_STATE_WAIT; 8fe6: 9309 str r3, [sp, #36] ; 0x24 logical_char_pos = _lv_txt_encoded_get_char_id(txt, line_start + i); 8fe8: 4b1c ldr r3, [pc, #112] ; (905c ) 8fea: 4699 mov r9, r3 8fec: 4654 mov r4, sl 8fee: 46c2 mov sl, r8 8ff0: 0037 movs r7, r6 while(i < line_end - line_start) { 8ff2: e536 b.n 8a62 p1.x = pos_x_start; 8ff4: a83a add r0, sp, #232 ; 0xe8 8ff6: 466b mov r3, sp 8ff8: 227c movs r2, #124 ; 0x7c 8ffa: 189b adds r3, r3, r2 8ffc: 881b ldrh r3, [r3, #0] 8ffe: 8003 strh r3, [r0, #0] p1.y = pos.y + (dsc->font->line_height / 2) + line_dsc.width / 2; 9000: 687b ldr r3, [r7, #4] 9002: 2208 movs r2, #8 9004: 5e9b ldrsh r3, [r3, r2] 9006: 0fda lsrs r2, r3, #31 9008: 18d2 adds r2, r2, r3 900a: 1052 asrs r2, r2, #1 900c: ab55 add r3, sp, #340 ; 0x154 900e: 2102 movs r1, #2 9010: 5e5c ldrsh r4, [r3, r1] 9012: 0fe1 lsrs r1, r4, #31 9014: 1909 adds r1, r1, r4 9016: 1049 asrs r1, r1, #1 9018: 1852 adds r2, r2, r1 901a: 9914 ldr r1, [sp, #80] ; 0x50 901c: 468c mov ip, r1 901e: 4462 add r2, ip 9020: b212 sxth r2, r2 9022: 8042 strh r2, [r0, #2] p2.x = pos.x; 9024: a93c add r1, sp, #240 ; 0xf0 9026: 4654 mov r4, sl 9028: 800c strh r4, [r1, #0] p2.y = p1.y; 902a: 804a strh r2, [r1, #2] lv_draw_line(&p1, &p2, mask, &line_dsc); 902c: 9a0e ldr r2, [sp, #56] ; 0x38 902e: 4c0c ldr r4, [pc, #48] ; (9060 ) 9030: 47a0 blx r4 9032: e797 b.n 8f64 9034: 20002bb4 .word 0x20002bb4 9038: 20002bb0 .word 0x20002bb0 903c: 20002ab0 .word 0x20002ab0 9040: 00010ec1 .word 0x00010ec1 9044: 0000a6c1 .word 0x0000a6c1 9048: 0000a625 .word 0x0000a625 904c: 0001104d .word 0x0001104d 9050: 00005c6d .word 0x00005c6d 9054: 00010bd5 .word 0x00010bd5 9058: 000117c9 .word 0x000117c9 905c: 20000054 .word 0x20000054 9060: 00009131 .word 0x00009131 p1.x = pos_x_start; 9064: a83a add r0, sp, #232 ; 0xe8 9066: 466b mov r3, sp 9068: 227c movs r2, #124 ; 0x7c 906a: 189b adds r3, r3, r2 906c: 881b ldrh r3, [r3, #0] 906e: 8003 strh r3, [r0, #0] p1.y = pos.y + dsc->font->line_height - dsc->font->base_line + line_dsc.width / 2 + 1; 9070: 6871 ldr r1, [r6, #4] 9072: ab55 add r3, sp, #340 ; 0x154 9074: 2202 movs r2, #2 9076: 5e9c ldrsh r4, [r3, r2] 9078: 0fe2 lsrs r2, r4, #31 907a: 1912 adds r2, r2, r4 907c: 1052 asrs r2, r2, #1 907e: 3201 adds r2, #1 9080: 890c ldrh r4, [r1, #8] 9082: 1912 adds r2, r2, r4 9084: 8949 ldrh r1, [r1, #10] 9086: 1a52 subs r2, r2, r1 9088: 9914 ldr r1, [sp, #80] ; 0x50 908a: 468c mov ip, r1 908c: 4462 add r2, ip 908e: b212 sxth r2, r2 9090: 8042 strh r2, [r0, #2] p2.x = pos.x; 9092: a93c add r1, sp, #240 ; 0xf0 9094: 4654 mov r4, sl 9096: 800c strh r4, [r1, #0] p2.y = p1.y; 9098: 804a strh r2, [r1, #2] lv_draw_line(&p1, &p2, mask, &line_dsc); 909a: 9a0e ldr r2, [sp, #56] ; 0x38 909c: 4c16 ldr r4, [pc, #88] ; (90f8 ) 909e: 47a0 blx r4 90a0: e764 b.n 8f6c _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 90a2: 210c movs r1, #12 90a4: 5e73 ldrsh r3, [r6, r1] 90a6: 9200 str r2, [sp, #0] 90a8: 9a07 ldr r2, [sp, #28] 90aa: 0001 movs r1, r0 90ac: 0038 movs r0, r7 90ae: 4f13 ldr r7, [pc, #76] ; (90fc ) 90b0: 47b8 blx r7 90b2: 9a10 ldr r2, [sp, #64] ; 0x40 90b4: 8893 ldrh r3, [r2, #4] 90b6: 3301 adds r3, #1 90b8: 8812 ldrh r2, [r2, #0] 90ba: 1a9b subs r3, r3, r2 pos.x += (lv_area_get_width(coords) - line_width) / 2; 90bc: b21b sxth r3, r3 90be: 1a18 subs r0, r3, r0 90c0: 0fc3 lsrs r3, r0, #31 90c2: 1818 adds r0, r3, r0 90c4: 1040 asrs r0, r0, #1 90c6: 1945 adds r5, r0, r5 90c8: b22d sxth r5, r5 90ca: e768 b.n 8f9e _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 90cc: 210c movs r1, #12 90ce: 5e73 ldrsh r3, [r6, r1] 90d0: 9200 str r2, [sp, #0] 90d2: 9a07 ldr r2, [sp, #28] 90d4: 0001 movs r1, r0 90d6: 0038 movs r0, r7 90d8: 4f08 ldr r7, [pc, #32] ; (90fc ) 90da: 47b8 blx r7 90dc: 9a10 ldr r2, [sp, #64] ; 0x40 90de: 8893 ldrh r3, [r2, #4] 90e0: 3301 adds r3, #1 90e2: 8812 ldrh r2, [r2, #0] 90e4: 1a9b subs r3, r3, r2 pos.x += lv_area_get_width(coords) - line_width; 90e6: b21b sxth r3, r3 90e8: 1a18 subs r0, r3, r0 90ea: 1945 adds r5, r0, r5 90ec: b22d sxth r5, r5 90ee: e756 b.n 8f9e cmd_state = CMD_STATE_WAIT; 90f0: 2300 movs r3, #0 90f2: 9309 str r3, [sp, #36] ; 0x24 90f4: f7ff f9fb bl 84ee 90f8: 00009131 .word 0x00009131 90fc: 00011a41 .word 0x00011a41 00009100 : /********************** * GLOBAL FUNCTIONS **********************/ LV_ATTRIBUTE_FAST_MEM void lv_draw_line_dsc_init(lv_draw_line_dsc_t * dsc) { 9100: b510 push {r4, lr} 9102: 0004 movs r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_line_dsc_t)); 9104: 210a movs r1, #10 9106: 4b08 ldr r3, [pc, #32] ; (9128 ) 9108: 4798 blx r3 dsc->width = 1; 910a: 2301 movs r3, #1 910c: 8063 strh r3, [r4, #2] dsc->opa = LV_OPA_COVER; 910e: 33fe adds r3, #254 ; 0xfe 9110: 7223 strb r3, [r4, #8] dsc->color = LV_COLOR_BLACK; 9112: 7823 ldrb r3, [r4, #0] 9114: 221f movs r2, #31 9116: 4393 bics r3, r2 9118: 7023 strb r3, [r4, #0] 911a: 8823 ldrh r3, [r4, #0] 911c: 4a03 ldr r2, [pc, #12] ; (912c ) 911e: 4013 ands r3, r2 9120: 8023 strh r3, [r4, #0] 9122: 2300 movs r3, #0 9124: 7063 strb r3, [r4, #1] } 9126: bd10 pop {r4, pc} 9128: 0001104d .word 0x0001104d 912c: fffff81f .word 0xfffff81f 00009130 : * @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) { 9130: b5f0 push {r4, r5, r6, r7, lr} 9132: 46de mov lr, fp 9134: 4657 mov r7, sl 9136: 464e mov r6, r9 9138: 4645 mov r5, r8 913a: b5e0 push {r5, r6, r7, lr} 913c: b0cb sub sp, #300 ; 0x12c 913e: 9005 str r0, [sp, #20] 9140: 000e movs r6, r1 9142: 9106 str r1, [sp, #24] 9144: 9207 str r2, [sp, #28] 9146: 001c movs r4, r3 if(dsc->width == 0) return; 9148: 2202 movs r2, #2 914a: 5e9b ldrsh r3, [r3, r2] 914c: 2b00 cmp r3, #0 914e: d101 bne.n 9154 9150: f000 fc46 bl 99e0 if(dsc->opa <= LV_OPA_MIN) return; 9154: 7a22 ldrb r2, [r4, #8] 9156: 2a05 cmp r2, #5 9158: d801 bhi.n 915e 915a: f000 fc41 bl 99e0 if(point1->x == point2->x && point1->y == point2->y) return; 915e: 0002 movs r2, r0 9160: 2000 movs r0, #0 9162: 5e11 ldrsh r1, [r2, r0] 9164: 2500 movs r5, #0 9166: 5f70 ldrsh r0, [r6, r5] 9168: 4281 cmp r1, r0 916a: d100 bne.n 916e 916c: e12b b.n 93c6 lv_area_t clip_line; clip_line.x1 = LV_MATH_MIN(point1->x, point2->x) - dsc->width / 2; 916e: 0fda lsrs r2, r3, #31 9170: 18d3 adds r3, r2, r3 9172: 105b asrs r3, r3, #1 9174: b29b uxth r3, r3 9176: 1c0a adds r2, r1, #0 9178: 4281 cmp r1, r0 917a: dd00 ble.n 917e 917c: 1c02 adds r2, r0, #0 917e: 1ad2 subs r2, r2, r3 9180: ad48 add r5, sp, #288 ; 0x120 9182: 802a strh r2, [r5, #0] clip_line.x2 = LV_MATH_MAX(point1->x, point2->x) + dsc->width / 2; 9184: 1c0a adds r2, r1, #0 9186: 4281 cmp r1, r0 9188: da00 bge.n 918c 918a: 1c02 adds r2, r0, #0 918c: 189a adds r2, r3, r2 918e: a948 add r1, sp, #288 ; 0x120 9190: 808a strh r2, [r1, #4] clip_line.y1 = LV_MATH_MIN(point1->y, point2->y) - dsc->width / 2; 9192: 9a06 ldr r2, [sp, #24] 9194: 2102 movs r1, #2 9196: 5e52 ldrsh r2, [r2, r1] 9198: 9905 ldr r1, [sp, #20] 919a: 2002 movs r0, #2 919c: 5e08 ldrsh r0, [r1, r0] 919e: 1c11 adds r1, r2, #0 91a0: 4282 cmp r2, r0 91a2: dd00 ble.n 91a6 91a4: 1c01 adds r1, r0, #0 91a6: 1ac9 subs r1, r1, r3 91a8: ad48 add r5, sp, #288 ; 0x120 91aa: 8069 strh r1, [r5, #2] clip_line.y2 = LV_MATH_MAX(point1->y, point2->y) + dsc->width / 2; 91ac: 1c11 adds r1, r2, #0 91ae: 4282 cmp r2, r0 91b0: da00 bge.n 91b4 91b2: 1c01 adds r1, r0, #0 91b4: 185b adds r3, r3, r1 91b6: aa48 add r2, sp, #288 ; 0x120 91b8: 80d3 strh r3, [r2, #6] bool is_common; is_common = _lv_area_intersect(&clip_line, &clip_line, clip); 91ba: 9a07 ldr r2, [sp, #28] 91bc: a948 add r1, sp, #288 ; 0x120 91be: 0008 movs r0, r1 91c0: 4bd5 ldr r3, [pc, #852] ; (9518 ) 91c2: 4798 blx r3 if(!is_common) return; 91c4: 2800 cmp r0, #0 91c6: d101 bne.n 91cc 91c8: f000 fc0a bl 99e0 if(point1->y == point2->y) draw_line_hor(point1, point2, &clip_line, dsc); 91cc: 9b05 ldr r3, [sp, #20] 91ce: 2602 movs r6, #2 91d0: 5f9e ldrsh r6, [r3, r6] 91d2: 9b06 ldr r3, [sp, #24] 91d4: 2502 movs r5, #2 91d6: 5f5d ldrsh r5, [r3, r5] 91d8: 42ae cmp r6, r5 91da: d100 bne.n 91de 91dc: e0fc b.n 93d8 else if(point1->x == point2->x) draw_line_ver(point1, point2, &clip_line, dsc); 91de: 9b05 ldr r3, [sp, #20] 91e0: 2200 movs r2, #0 91e2: 5e9a ldrsh r2, [r3, r2] 91e4: 0011 movs r1, r2 91e6: 9208 str r2, [sp, #32] 91e8: 9b06 ldr r3, [sp, #24] 91ea: 2200 movs r2, #0 91ec: 5e9b ldrsh r3, [r3, r2] 91ee: 469a mov sl, r3 91f0: 4551 cmp r1, sl 91f2: d100 bne.n 91f6 91f4: e206 b.n 9604 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) { 91f6: 42ae cmp r6, r5 91f8: db06 blt.n 9208 91fa: 0033 movs r3, r6 p2.y = point2->y; p1.x = point1->x; p2.x = point2->x; } else { p1.y = point2->y; 91fc: 002e movs r6, r5 p2.y = point1->y; 91fe: 001d movs r5, r3 if(point1->y < point2->y) { 9200: 9b08 ldr r3, [sp, #32] p1.x = point2->x; 9202: 4652 mov r2, sl 9204: 9208 str r2, [sp, #32] p2.x = point1->x; 9206: 469a mov sl, r3 } int32_t xdiff = p2.x - p1.x; 9208: 4653 mov r3, sl 920a: 9a08 ldr r2, [sp, #32] 920c: 1a9b subs r3, r3, r2 920e: 9309 str r3, [sp, #36] ; 0x24 int32_t ydiff = p2.y - p1.y; 9210: 1baa subs r2, r5, r6 9212: 920a str r2, [sp, #40] ; 0x28 bool flat = LV_MATH_ABS(xdiff) > LV_MATH_ABS(ydiff) ? true : false; 9214: 17d9 asrs r1, r3, #31 9216: 185b adds r3, r3, r1 9218: 404b eors r3, r1 921a: 4699 mov r9, r3 921c: 17d1 asrs r1, r2, #31 921e: 1853 adds r3, r2, r1 9220: 404b eors r3, r1 9222: 469b mov fp, r3 143, 145, 147, 149, 151, 153, 155, 158, 160, 162, 165, 167, 170, 173, 175, 178, 181, }; int32_t w = dsc->width; 9224: 2202 movs r2, #2 9226: 5ea3 ldrsh r3, [r4, r2] 9228: 4698 mov r8, r3 int32_t wcorr_i = 0; if(flat) wcorr_i = (LV_MATH_ABS(ydiff) << 5) / LV_MATH_ABS(xdiff); 922a: 45d9 cmp r9, fp 922c: dc00 bgt.n 9230 922e: e2d0 b.n 97d2 9230: 465b mov r3, fp 9232: 0158 lsls r0, r3, #5 9234: 4649 mov r1, r9 9236: 4bb9 ldr r3, [pc, #740] ; (951c ) 9238: 4798 blx r3 else wcorr_i = (LV_MATH_ABS(xdiff) << 5) / LV_MATH_ABS(ydiff); w = (w * wcorr[wcorr_i] + 63) >> 7; /*+ 63 for rounding*/ 923a: 4bb9 ldr r3, [pc, #740] ; (9520 ) 923c: 5c1b ldrb r3, [r3, r0] 923e: 4642 mov r2, r8 9240: 435a muls r2, r3 9242: 0013 movs r3, r2 9244: 223f movs r2, #63 ; 0x3f 9246: 4690 mov r8, r2 9248: 4498 add r8, r3 924a: 4643 mov r3, r8 924c: 11db asrs r3, r3, #7 924e: 001f movs 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; 9250: b29b uxth r3, r3 9252: 4652 mov r2, sl 9254: 9808 ldr r0, [sp, #32] 9256: 4582 cmp sl, r0 9258: dd00 ble.n 925c 925a: 1c02 adds r2, r0, #0 925c: 1ad2 subs r2, r2, r3 925e: a90e add r1, sp, #56 ; 0x38 9260: 800a strh r2, [r1, #0] draw_area.x2 = LV_MATH_MAX(p1.x, p2.x) + w; 9262: 4652 mov r2, sl 9264: 9808 ldr r0, [sp, #32] 9266: 4582 cmp sl, r0 9268: da00 bge.n 926c 926a: 1c02 adds r2, r0, #0 926c: 189a adds r2, r3, r2 926e: a90e add r1, sp, #56 ; 0x38 9270: 808a strh r2, [r1, #4] draw_area.y1 = LV_MATH_MIN(p1.y, p2.y) - w; 9272: 1c2a adds r2, r5, #0 9274: 42b5 cmp r5, r6 9276: dd00 ble.n 927a 9278: 1c32 adds r2, r6, #0 927a: 1ad2 subs r2, r2, r3 927c: a90e add r1, sp, #56 ; 0x38 927e: 804a strh r2, [r1, #2] draw_area.y2 = LV_MATH_MAX(p1.y, p2.y) + w; 9280: 1c2a adds r2, r5, #0 9282: 42b5 cmp r5, r6 9284: da00 bge.n 9288 9286: 1c32 adds r2, r6, #0 9288: 189b adds r3, r3, r2 928a: aa0e add r2, sp, #56 ; 0x38 928c: 80d3 strh r3, [r2, #6] /* 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); 928e: aa48 add r2, sp, #288 ; 0x120 9290: a90e add r1, sp, #56 ; 0x38 9292: 0008 movs r0, r1 9294: 4ba0 ldr r3, [pc, #640] ; (9518 ) 9296: 4798 blx r3 if(is_common == false) return; 9298: 2800 cmp r0, #0 929a: d100 bne.n 929e 929c: e39c b.n 99d8 int32_t w_half0 = w >> 1; 929e: 4643 mov r3, r8 92a0: 121b asrs r3, r3, #8 92a2: 4698 mov r8, r3 int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ 92a4: 2301 movs r3, #1 92a6: 403b ands r3, r7 92a8: 4443 add r3, r8 92aa: 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) { 92ac: 45d9 cmp r9, fp 92ae: dc00 bgt.n 92b2 92b0: e2ba b.n 9828 if(xdiff > 0) { 92b2: 9a09 ldr r2, [sp, #36] ; 0x24 92b4: 2a00 cmp r2, #0 92b6: dc00 bgt.n 92ba 92b8: e291 b.n 97de lv_draw_mask_line_points_init(&mask_left_param, p1.x, p1.y - w_half0, p2.x, p2.y - w_half0, 92ba: b2b2 uxth r2, r6 92bc: 4641 mov r1, r8 92be: 466b mov r3, sp 92c0: 8619 strh r1, [r3, #48] ; 0x30 92c2: b28b uxth r3, r1 92c4: b2a9 uxth r1, r5 92c6: 4693 mov fp, r2 92c8: 1ad2 subs r2, r2, r3 92ca: b212 sxth r2, r2 92cc: 2000 movs r0, #0 92ce: 9001 str r0, [sp, #4] 92d0: 4689 mov r9, r1 92d2: 1acb subs r3, r1, r3 92d4: b21b sxth r3, r3 92d6: 9300 str r3, [sp, #0] 92d8: 4653 mov r3, sl 92da: 9908 ldr r1, [sp, #32] 92dc: a812 add r0, sp, #72 ; 0x48 92de: 4f91 ldr r7, [pc, #580] ; (9524 ) 92e0: 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, 92e2: 466b mov r3, sp 92e4: 8d9b ldrh r3, [r3, #44] ; 0x2c 92e6: 465a mov r2, fp 92e8: 18d2 adds r2, r2, r3 92ea: b212 sxth r2, r2 92ec: 2101 movs r1, #1 92ee: 9101 str r1, [sp, #4] 92f0: 444b add r3, r9 92f2: b21b sxth r3, r3 92f4: 9300 str r3, [sp, #0] 92f6: 4653 mov r3, sl 92f8: 9908 ldr r1, [sp, #32] 92fa: a81d add r0, sp, #116 ; 0x74 92fc: 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); 92fe: 2100 movs r1, #0 9300: a812 add r0, sp, #72 ; 0x48 9302: 4b89 ldr r3, [pc, #548] ; (9528 ) 9304: 4698 mov r8, r3 9306: 4798 blx r3 9308: 900b str r0, [sp, #44] ; 0x2c int16_t mask_right_id = lv_draw_mask_add(&mask_right_param, NULL); 930a: 2100 movs r1, #0 930c: a81d add r0, sp, #116 ; 0x74 930e: 47c0 blx r8 9310: 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) { 9312: 7a63 ldrb r3, [r4, #9] 9314: 06db lsls r3, r3, #27 9316: d400 bmi.n 931a 9318: e2ac b.n 9874 int16_t mask_bottom_id = LV_MASK_ID_INV; 931a: 2301 movs r3, #1 931c: 425b negs r3, r3 931e: 930d str r3, [sp, #52] ; 0x34 int16_t mask_top_id = LV_MASK_ID_INV; 9320: 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(); 9322: 4b82 ldr r3, [pc, #520] ; (952c ) 9324: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 9326: 4b82 ldr r3, [pc, #520] ; (9530 ) 9328: 4798 blx r3 932a: 4681 mov r9, 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; 932c: 8a02 ldrh r2, [r0, #16] 932e: a80e add r0, sp, #56 ; 0x38 9330: 8805 ldrh r5, [r0, #0] 9332: 1aad subs r5, r5, r2 9334: b2ab uxth r3, r5 9336: 8003 strh r3, [r0, #0] draw_area.y1 -= disp_area->y1; 9338: 4649 mov r1, r9 933a: 8a49 ldrh r1, [r1, #18] 933c: 8845 ldrh r5, [r0, #2] 933e: 1a6d subs r5, r5, r1 9340: 8045 strh r5, [r0, #2] draw_area.x2 -= disp_area->x1; 9342: 8885 ldrh r5, [r0, #4] 9344: 1aad subs r5, r5, r2 9346: b2ad uxth r5, r5 9348: 8085 strh r5, [r0, #4] draw_area.y2 -= disp_area->y1; 934a: 88c2 ldrh r2, [r0, #6] 934c: 1a52 subs r2, r2, r1 934e: 80c2 strh r2, [r0, #6] 9350: 3501 adds r5, #1 9352: 1aed subs r5, r5, r3 9354: 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); 9356: 4b77 ldr r3, [pc, #476] ; (9534 ) 9358: 4798 blx r3 935a: 23e0 movs r3, #224 ; 0xe0 935c: 33ff adds r3, #255 ; 0xff 935e: 4298 cmp r0, r3 9360: d800 bhi.n 9364 9362: e2b3 b.n 98cc 9364: 23f0 movs r3, #240 ; 0xf0 9366: 005b lsls r3, r3, #1 9368: 469b mov fp, r3 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 936a: 4658 mov r0, fp 936c: 4b72 ldr r3, [pc, #456] ; (9538 ) 936e: 4798 blx r3 9370: 4680 mov r8, r0 lv_area_t fill_area; fill_area.x1 = draw_area.x1 + disp_area->x1; 9372: 464b mov r3, r9 9374: 8a1b ldrh r3, [r3, #16] 9376: af0e add r7, sp, #56 ; 0x38 9378: 883a ldrh r2, [r7, #0] 937a: 189a adds r2, r3, r2 937c: b212 sxth r2, r2 937e: 0011 movs r1, r2 9380: 9209 str r2, [sp, #36] ; 0x24 9382: aa10 add r2, sp, #64 ; 0x40 9384: 8011 strh r1, [r2, #0] fill_area.x2 = draw_area.x2 + disp_area->x1; 9386: 88b9 ldrh r1, [r7, #4] 9388: 185b adds r3, r3, r1 938a: 8093 strh r3, [r2, #4] fill_area.y1 = draw_area.y1 + disp_area->y1; 938c: 887b ldrh r3, [r7, #2] 938e: 4649 mov r1, r9 9390: 8a49 ldrh r1, [r1, #18] 9392: 185b adds r3, r3, r1 9394: b21b sxth r3, r3 9396: 8053 strh r3, [r2, #2] fill_area.y2 = fill_area.y1; 9398: 80d3 strh r3, [r2, #6] int32_t x = vdb->area.x1 + draw_area.x1; uint32_t mask_p = 0; _lv_memset_ff(mask_buf, mask_buf_size); 939a: 4659 mov r1, fp 939c: 4b67 ldr r3, [pc, #412] ; (953c ) 939e: 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++) { 93a0: 464b mov r3, r9 93a2: 2212 movs r2, #18 93a4: 5e9a ldrsh r2, [r3, r2] 93a6: 2302 movs r3, #2 93a8: 5efe ldrsh r6, [r7, r3] 93aa: 18b6 adds r6, r6, r2 93ac: 2106 movs r1, #6 93ae: 5e7b ldrsh r3, [r7, r1] 93b0: 189b adds r3, r3, r2 93b2: 429e cmp r6, r3 93b4: dd00 ble.n 93b8 93b6: e2ec b.n 9992 93b8: 2700 movs r7, #0 lv_draw_mask_res_t mask_res = lv_draw_mask_apply(&mask_buf[mask_p], x, h, draw_area_w); 93ba: 4b61 ldr r3, [pc, #388] ; (9540 ) 93bc: 469a mov sl, r3 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, 93be: 0023 movs r3, r4 93c0: 4644 mov r4, r8 93c2: 4698 mov r8, r3 93c4: e2d0 b.n 9968 if(point1->x == point2->x && point1->y == point2->y) return; 93c6: 2502 movs r5, #2 93c8: 5f55 ldrsh r5, [r2, r5] 93ca: 0032 movs r2, r6 93cc: 2602 movs r6, #2 93ce: 5f92 ldrsh r2, [r2, r6] 93d0: 4295 cmp r5, r2 93d2: d000 beq.n 93d6 93d4: e6cb b.n 916e 93d6: e303 b.n 99e0 lv_opa_t opa = dsc->opa; 93d8: 7a23 ldrb r3, [r4, #8] 93da: 4698 mov r8, r3 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 93dc: 4b53 ldr r3, [pc, #332] ; (952c ) 93de: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 93e0: 4b53 ldr r3, [pc, #332] ; (9530 ) 93e2: 4798 blx r3 93e4: 4681 mov r9, r0 int32_t w = dsc->width - 1; 93e6: 2202 movs r2, #2 93e8: 5ea3 ldrsh r3, [r4, r2] 93ea: 3b01 subs r3, #1 int32_t w_half0 = w >> 1; 93ec: 105e asrs r6, r3, #1 int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ 93ee: 2501 movs r5, #1 93f0: 401d ands r5, r3 93f2: 19ad adds r5, r5, r6 bool dashed = dsc->dash_gap && dsc->dash_width ? true : false; 93f4: 2306 movs r3, #6 93f6: 5ee2 ldrsh r2, [r4, r3] 93f8: 2300 movs r3, #0 93fa: 2a00 cmp r2, #0 93fc: d004 beq.n 9408 93fe: 2204 movs r2, #4 9400: 5ea3 ldrsh r3, [r4, r2] 9402: 1e5a subs r2, r3, #1 9404: 4193 sbcs r3, r2 9406: b2db uxtb r3, r3 9408: 001f movs r7, r3 940a: 9309 str r3, [sp, #36] ; 0x24 if(lv_draw_mask_get_cnt()) simple_mode = false; 940c: 4b4d ldr r3, [pc, #308] ; (9544 ) 940e: 4798 blx r3 9410: 2100 movs r1, #0 9412: 2800 cmp r0, #0 9414: d101 bne.n 941a else if(dashed) simple_mode = false; 9416: 3101 adds r1, #1 9418: 4079 eors r1, r7 draw_area.x1 = LV_MATH_MIN(point1->x, point2->x); 941a: 9b06 ldr r3, [sp, #24] 941c: 2200 movs r2, #0 941e: 5e9b ldrsh r3, [r3, r2] 9420: 9a05 ldr r2, [sp, #20] 9422: 2000 movs r0, #0 9424: 5e10 ldrsh r0, [r2, r0] 9426: 1c1a adds r2, r3, #0 9428: 4283 cmp r3, r0 942a: dd00 ble.n 942e 942c: 1c02 adds r2, r0, #0 942e: af28 add r7, sp, #160 ; 0xa0 9430: 803a strh r2, [r7, #0] draw_area.x2 = LV_MATH_MAX(point1->x, point2->x) - 1; 9432: 1c1a adds r2, r3, #0 9434: 4283 cmp r3, r0 9436: da00 bge.n 943a 9438: 1c02 adds r2, r0, #0 943a: 3a01 subs r2, #1 943c: ab28 add r3, sp, #160 ; 0xa0 943e: 809a strh r2, [r3, #4] draw_area.y1 = point1->y - w_half1; 9440: 9b05 ldr r3, [sp, #20] 9442: 885b ldrh r3, [r3, #2] 9444: aa28 add r2, sp, #160 ; 0xa0 9446: 1b5d subs r5, r3, r5 9448: 8055 strh r5, [r2, #2] draw_area.y2 = point1->y + w_half0; 944a: 199e adds r6, r3, r6 944c: 80d6 strh r6, [r2, #6] if(simple_mode) { 944e: 2900 cmp r1, #0 9450: d00e beq.n 9470 _lv_blend_fill(clip, &draw_area, 9452: 8822 ldrh r2, [r4, #0] dsc->blend_mode); 9454: 7a63 ldrb r3, [r4, #9] 9456: 079b lsls r3, r3, #30 _lv_blend_fill(clip, &draw_area, 9458: 0f9b lsrs r3, r3, #30 945a: 9302 str r3, [sp, #8] 945c: 4643 mov r3, r8 945e: 9301 str r3, [sp, #4] 9460: 2301 movs r3, #1 9462: 9300 str r3, [sp, #0] 9464: 2300 movs r3, #0 9466: a928 add r1, sp, #160 ; 0xa0 9468: a848 add r0, sp, #288 ; 0x120 946a: 4d37 ldr r5, [pc, #220] ; (9548 ) 946c: 47a8 blx r5 946e: e2b3 b.n 99d8 is_common = _lv_area_intersect(&draw_area, clip, &draw_area); 9470: aa28 add r2, sp, #160 ; 0xa0 9472: a948 add r1, sp, #288 ; 0x120 9474: 0010 movs r0, r2 9476: 4b28 ldr r3, [pc, #160] ; (9518 ) 9478: 4798 blx r3 if(!is_common) return; 947a: 2800 cmp r0, #0 947c: d100 bne.n 9480 947e: e2ab b.n 99d8 draw_area.x1 -= disp_area->x1; 9480: aa28 add r2, sp, #160 ; 0xa0 9482: 2300 movs r3, #0 9484: 5ed7 ldrsh r7, [r2, r3] 9486: 464b mov r3, r9 9488: 2110 movs r1, #16 948a: 5e5b ldrsh r3, [r3, r1] 948c: 469b mov fp, r3 948e: 4669 mov r1, sp 9490: 840b strh r3, [r1, #32] 9492: 8c0b ldrh r3, [r1, #32] 9494: 1af9 subs r1, r7, r3 9496: b289 uxth r1, r1 9498: 4688 mov r8, r1 949a: b209 sxth r1, r1 949c: 468a mov sl, r1 949e: 8011 strh r1, [r2, #0] draw_area.y1 -= disp_area->y1; 94a0: 2002 movs r0, #2 94a2: 5e11 ldrsh r1, [r2, r0] 94a4: 464d mov r5, r9 94a6: 8a6d ldrh r5, [r5, #18] 94a8: 46ac mov ip, r5 94aa: 1b4d subs r5, r1, r5 94ac: 8055 strh r5, [r2, #2] draw_area.x2 -= disp_area->x1; 94ae: 2004 movs r0, #4 94b0: 5e16 ldrsh r6, [r2, r0] 94b2: 1af3 subs r3, r6, r3 94b4: b29b uxth r3, r3 94b6: 8093 strh r3, [r2, #4] draw_area.y2 -= disp_area->y1; 94b8: 88d5 ldrh r5, [r2, #6] 94ba: 4660 mov r0, ip 94bc: 1a2d subs r5, r5, r0 94be: 80d5 strh r5, [r2, #6] 94c0: 3301 adds r3, #1 94c2: 4642 mov r2, r8 94c4: 1a9b subs r3, r3, r2 94c6: b21b sxth r3, r3 94c8: 930b str r3, [sp, #44] ; 0x2c fill_area.x1 = draw_area.x1 + disp_area->x1; 94ca: ab33 add r3, sp, #204 ; 0xcc 94cc: 801f strh r7, [r3, #0] fill_area.x2 = draw_area.x2 + disp_area->x1; 94ce: 809e strh r6, [r3, #4] fill_area.y1 = draw_area.y1 + disp_area->y1; 94d0: 8059 strh r1, [r3, #2] fill_area.y2 = fill_area.y1; 94d2: 80d9 strh r1, [r3, #6] if(dashed) { 94d4: 2100 movs r1, #0 94d6: 9b09 ldr r3, [sp, #36] ; 0x24 94d8: 2b00 cmp r3, #0 94da: d008 beq.n 94ee dash_start = (vdb->area.x1 + draw_area.x1) % (dsc->dash_gap + dsc->dash_width); 94dc: 4650 mov r0, sl 94de: 4458 add r0, fp 94e0: 2306 movs r3, #6 94e2: 5ee1 ldrsh r1, [r4, r3] 94e4: 2204 movs r2, #4 94e6: 5ea3 ldrsh r3, [r4, r2] 94e8: 18c9 adds r1, r1, r3 94ea: 4b18 ldr r3, [pc, #96] ; (954c ) 94ec: 4798 blx r3 94ee: b20b sxth r3, r1 94f0: 930c str r3, [sp, #48] ; 0x30 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); 94f2: 980b ldr r0, [sp, #44] ; 0x2c 94f4: 0007 movs r7, r0 94f6: 4b10 ldr r3, [pc, #64] ; (9538 ) 94f8: 4798 blx r3 94fa: 9008 str r0, [sp, #32] for(h = draw_area.y1; h <= draw_area.y2; h++) { 94fc: ab28 add r3, sp, #160 ; 0xa0 94fe: 2202 movs r2, #2 9500: 5e9e ldrsh r6, [r3, r2] 9502: 2206 movs r2, #6 9504: 5e9b ldrsh r3, [r3, r2] 9506: 42b3 cmp r3, r6 9508: da00 bge.n 950c 950a: e077 b.n 95fc _lv_memset_ff(mask_buf, draw_area_w); 950c: 4b0b ldr r3, [pc, #44] ; (953c ) 950e: 469b mov fp, r3 lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); 9510: 4b0b ldr r3, [pc, #44] ; (9540 ) 9512: 469a mov sl, r3 9514: 970a str r7, [sp, #40] ; 0x28 9516: e050 b.n 95ba 9518: 0000fc0f .word 0x0000fc0f 951c: 00017995 .word 0x00017995 9520: 00018914 .word 0x00018914 9524: 0000a6e5 .word 0x0000a6e5 9528: 0000a5ed .word 0x0000a5ed 952c: 000043b1 .word 0x000043b1 9530: 0000f709 .word 0x0000f709 9534: 0000fbf3 .word 0x0000fbf3 9538: 00010ec1 .word 0x00010ec1 953c: 000110f1 .word 0x000110f1 9540: 0000a625 .word 0x0000a625 9544: 0000a6c1 .word 0x0000a6c1 9548: 00005c6d .word 0x00005c6d 954c: 00017b61 .word 0x00017b61 else if(dash_cnt >= dsc->dash_gap + dsc->dash_width) { 9550: 2606 movs r6, #6 9552: 5fa5 ldrsh r5, [r4, r6] 9554: 18ed adds r5, r5, r3 dash_cnt = 0; 9556: 000b movs r3, r1 else if(dash_cnt >= dsc->dash_gap + dsc->dash_width) { 9558: 42aa cmp r2, r5 955a: da02 bge.n 9562 mask_buf[i] = 0x00; 955c: 9b08 ldr r3, [sp, #32] 955e: 5419 strb r1, [r3, r0] 9560: 0013 movs r3, r2 for(i = 0; i < draw_area_w; i++, dash_cnt++) { 9562: 3001 adds r0, #1 9564: 3301 adds r3, #1 9566: b21a sxth r2, r3 9568: 4287 cmp r7, r0 956a: d907 bls.n 957c if(dash_cnt <= dsc->dash_width) { 956c: 2504 movs r5, #4 956e: 5f63 ldrsh r3, [r4, r5] 9570: 4293 cmp r3, r2 9572: dbed blt.n 9550 int16_t diff = dsc->dash_width - dash_cnt; 9574: 1a9a subs r2, r3, r2 i += diff; 9576: b212 sxth r2, r2 9578: 1880 adds r0, r0, r2 957a: e7f2 b.n 9562 957c: 970a str r7, [sp, #40] ; 0x28 957e: 4666 mov r6, ip mask_res = LV_DRAW_MASK_RES_CHANGED; 9580: 2002 movs r0, #2 _lv_blend_fill(clip, &fill_area, 9582: 8822 ldrh r2, [r4, #0] 9584: ad33 add r5, sp, #204 ; 0xcc dsc->blend_mode); 9586: 7a63 ldrb r3, [r4, #9] 9588: 079b lsls r3, r3, #30 _lv_blend_fill(clip, &fill_area, 958a: 0f9b lsrs r3, r3, #30 958c: 9302 str r3, [sp, #8] 958e: 7a23 ldrb r3, [r4, #8] 9590: 9301 str r3, [sp, #4] 9592: 9000 str r0, [sp, #0] 9594: 9b08 ldr r3, [sp, #32] 9596: 0029 movs r1, r5 9598: a848 add r0, sp, #288 ; 0x120 959a: 4fd1 ldr r7, [pc, #836] ; (98e0 ) 959c: 47b8 blx r7 fill_area.y1++; 959e: 886b ldrh r3, [r5, #2] 95a0: 3301 adds r3, #1 95a2: 806b strh r3, [r5, #2] fill_area.y2++; 95a4: 88eb ldrh r3, [r5, #6] 95a6: 3301 adds r3, #1 95a8: 80eb strh r3, [r5, #6] for(h = draw_area.y1; h <= draw_area.y2; h++) { 95aa: 3601 adds r6, #1 95ac: ab0a add r3, sp, #40 ; 0x28 95ae: 227e movs r2, #126 ; 0x7e 95b0: 189b adds r3, r3, r2 95b2: 2200 movs r2, #0 95b4: 5e9b ldrsh r3, [r3, r2] 95b6: 429e cmp r6, r3 95b8: dc20 bgt.n 95fc _lv_memset_ff(mask_buf, draw_area_w); 95ba: 9f0a ldr r7, [sp, #40] ; 0x28 95bc: 0039 movs r1, r7 95be: 9d08 ldr r5, [sp, #32] 95c0: 0028 movs r0, r5 95c2: 47d8 blx fp 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); 95c4: 464b mov r3, r9 95c6: 8a5a ldrh r2, [r3, #18] 95c8: 1992 adds r2, r2, r6 95ca: b212 sxth r2, r2 95cc: 8a19 ldrh r1, [r3, #16] 95ce: ab0a add r3, sp, #40 ; 0x28 95d0: 2078 movs r0, #120 ; 0x78 95d2: 181b adds r3, r3, r0 95d4: 881b ldrh r3, [r3, #0] 95d6: 18c9 adds r1, r1, r3 95d8: b209 sxth r1, r1 95da: 9b0b ldr r3, [sp, #44] ; 0x2c 95dc: 0028 movs r0, r5 95de: 47d0 blx sl if(dashed) { 95e0: 9b09 ldr r3, [sp, #36] ; 0x24 95e2: 2b00 cmp r3, #0 95e4: d0cd beq.n 9582 if(mask_res != LV_DRAW_MASK_RES_TRANSP) { 95e6: 2800 cmp r0, #0 95e8: d0cb beq.n 9582 for(i = 0; i < draw_area_w; i++, dash_cnt++) { 95ea: 2f00 cmp r7, #0 95ec: d004 beq.n 95f8 95ee: 9a0c ldr r2, [sp, #48] ; 0x30 95f0: 2000 movs r0, #0 dash_cnt = 0; 95f2: 2100 movs r1, #0 95f4: 46b4 mov ip, r6 95f6: e7b9 b.n 956c mask_res = LV_DRAW_MASK_RES_CHANGED; 95f8: 2002 movs r0, #2 95fa: e7c2 b.n 9582 _lv_mem_buf_release(mask_buf); 95fc: 9808 ldr r0, [sp, #32] 95fe: 4bb9 ldr r3, [pc, #740] ; (98e4 ) 9600: 4798 blx r3 9602: e1e9 b.n 99d8 lv_opa_t opa = dsc->opa; 9604: 7a23 ldrb r3, [r4, #8] 9606: 4698 mov r8, r3 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 9608: 4bb7 ldr r3, [pc, #732] ; (98e8 ) 960a: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 960c: 4bb7 ldr r3, [pc, #732] ; (98ec ) 960e: 4798 blx r3 9610: 0007 movs r7, r0 int32_t w = dsc->width - 1; 9612: 2202 movs r2, #2 9614: 5ea3 ldrsh r3, [r4, r2] 9616: 3b01 subs r3, #1 int32_t w_half0 = w >> 1; 9618: 105e asrs r6, r3, #1 int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ 961a: 2501 movs r5, #1 961c: 401d ands r5, r3 961e: 19ad adds r5, r5, r6 bool dashed = dsc->dash_gap && dsc->dash_width ? true : false; 9620: 2306 movs r3, #6 9622: 5ee2 ldrsh r2, [r4, r3] 9624: 2300 movs r3, #0 9626: 2a00 cmp r2, #0 9628: d004 beq.n 9634 962a: 2204 movs r2, #4 962c: 5ea3 ldrsh r3, [r4, r2] 962e: 1e5a subs r2, r3, #1 9630: 4193 sbcs r3, r2 9632: b2db uxtb r3, r3 9634: 4699 mov r9, r3 9636: 930a str r3, [sp, #40] ; 0x28 if(lv_draw_mask_get_cnt()) simple_mode = false; 9638: 4bad ldr r3, [pc, #692] ; (98f0 ) 963a: 4798 blx r3 963c: 2100 movs r1, #0 963e: 2800 cmp r0, #0 9640: d102 bne.n 9648 else if(dashed) simple_mode = false; 9642: 3101 adds r1, #1 9644: 464b mov r3, r9 9646: 4059 eors r1, r3 draw_area.x1 = point1->x - w_half1; 9648: 9805 ldr r0, [sp, #20] 964a: 8802 ldrh r2, [r0, #0] 964c: ab28 add r3, sp, #160 ; 0xa0 964e: 1b55 subs r5, r2, r5 9650: 801d strh r5, [r3, #0] draw_area.x2 = point1->x + w_half0; 9652: 1996 adds r6, r2, r6 9654: 809e strh r6, [r3, #4] draw_area.y1 = LV_MATH_MIN(point1->y, point2->y); 9656: 9a06 ldr r2, [sp, #24] 9658: 2502 movs r5, #2 965a: 5f52 ldrsh r2, [r2, r5] 965c: 2502 movs r5, #2 965e: 5f45 ldrsh r5, [r0, r5] 9660: 1c10 adds r0, r2, #0 9662: 42aa cmp r2, r5 9664: dd00 ble.n 9668 9666: 1c28 adds r0, r5, #0 9668: 8058 strh r0, [r3, #2] draw_area.y2 = LV_MATH_MAX(point1->y, point2->y) - 1; 966a: 1c13 adds r3, r2, #0 966c: 42aa cmp r2, r5 966e: da00 bge.n 9672 9670: 1c2b adds r3, r5, #0 9672: 3b01 subs r3, #1 9674: aa28 add r2, sp, #160 ; 0xa0 9676: 80d3 strh r3, [r2, #6] if(simple_mode) { 9678: 2900 cmp r1, #0 967a: d00e beq.n 969a _lv_blend_fill(clip, &draw_area, 967c: 8822 ldrh r2, [r4, #0] dsc->blend_mode); 967e: 7a63 ldrb r3, [r4, #9] 9680: 079b lsls r3, r3, #30 _lv_blend_fill(clip, &draw_area, 9682: 0f9b lsrs r3, r3, #30 9684: 9302 str r3, [sp, #8] 9686: 4643 mov r3, r8 9688: 9301 str r3, [sp, #4] 968a: 2301 movs r3, #1 968c: 9300 str r3, [sp, #0] 968e: 2300 movs r3, #0 9690: a928 add r1, sp, #160 ; 0xa0 9692: a848 add r0, sp, #288 ; 0x120 9694: 4d92 ldr r5, [pc, #584] ; (98e0 ) 9696: 47a8 blx r5 9698: e19e b.n 99d8 is_common = _lv_area_intersect(&draw_area, clip, &draw_area); 969a: aa28 add r2, sp, #160 ; 0xa0 969c: a948 add r1, sp, #288 ; 0x120 969e: 0010 movs r0, r2 96a0: 4b94 ldr r3, [pc, #592] ; (98f4 ) 96a2: 4798 blx r3 if(!is_common) return; 96a4: 2800 cmp r0, #0 96a6: d100 bne.n 96aa 96a8: e196 b.n 99d8 draw_area.x1 -= vdb->area.x1; 96aa: aa28 add r2, sp, #160 ; 0xa0 96ac: 2100 movs r1, #0 96ae: 5e53 ldrsh r3, [r2, r1] 96b0: 469c mov ip, r3 96b2: 8a3b ldrh r3, [r7, #16] 96b4: 4661 mov r1, ip 96b6: 1ac9 subs r1, r1, r3 96b8: b289 uxth r1, r1 96ba: 8011 strh r1, [r2, #0] draw_area.y1 -= vdb->area.y1; 96bc: 2502 movs r5, #2 96be: 5f50 ldrsh r0, [r2, r5] 96c0: 8a7d ldrh r5, [r7, #18] 96c2: 46a8 mov r8, r5 96c4: 1b45 subs r5, r0, r5 96c6: 8055 strh r5, [r2, #2] draw_area.x2 -= vdb->area.x1; 96c8: 2504 movs r5, #4 96ca: 5f56 ldrsh r6, [r2, r5] 96cc: 1af3 subs r3, r6, r3 96ce: b29b uxth r3, r3 96d0: 4699 mov r9, r3 96d2: 8093 strh r3, [r2, #4] draw_area.y2 -= vdb->area.y1; 96d4: 88d5 ldrh r5, [r2, #6] 96d6: 4643 mov r3, r8 96d8: 1aed subs r5, r5, r3 96da: 80d5 strh r5, [r2, #6] 96dc: 464b mov r3, r9 96de: 3301 adds r3, #1 96e0: 1a59 subs r1, r3, r1 96e2: b20b sxth r3, r1 96e4: 001a movs r2, r3 96e6: 930b str r3, [sp, #44] ; 0x2c fill_area.x1 = draw_area.x1 + disp_area->x1; 96e8: ab33 add r3, sp, #204 ; 0xcc 96ea: 4661 mov r1, ip 96ec: 8019 strh r1, [r3, #0] fill_area.x2 = draw_area.x2 + disp_area->x1; 96ee: 809e strh r6, [r3, #4] fill_area.y1 = draw_area.y1 + disp_area->y1; 96f0: 8058 strh r0, [r3, #2] fill_area.y2 = fill_area.y1; 96f2: 80d8 strh r0, [r3, #6] lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); 96f4: 920c str r2, [sp, #48] ; 0x30 96f6: 0010 movs r0, r2 96f8: 4b7f ldr r3, [pc, #508] ; (98f8 ) 96fa: 4798 blx r3 96fc: 9008 str r0, [sp, #32] if(dashed) { 96fe: 2100 movs r1, #0 9700: 9b0a ldr r3, [sp, #40] ; 0x28 9702: 2b00 cmp r3, #0 9704: d00c beq.n 9720 dash_start = (vdb->area.x1 + draw_area.x1) % (dsc->dash_gap + dsc->dash_width); 9706: 2310 movs r3, #16 9708: 5ef8 ldrsh r0, [r7, r3] 970a: ab28 add r3, sp, #160 ; 0xa0 970c: 2200 movs r2, #0 970e: 5e9b ldrsh r3, [r3, r2] 9710: 18c0 adds r0, r0, r3 9712: 2306 movs r3, #6 9714: 5ee1 ldrsh r1, [r4, r3] 9716: 2204 movs r2, #4 9718: 5ea3 ldrsh r3, [r4, r2] 971a: 18c9 adds r1, r1, r3 971c: 4b77 ldr r3, [pc, #476] ; (98fc ) 971e: 4798 blx r3 9720: b20b sxth r3, r1 9722: 4699 mov r9, r3 for(h = draw_area.y1; h <= draw_area.y2; h++) { 9724: ab28 add r3, sp, #160 ; 0xa0 9726: 2202 movs r2, #2 9728: 5e9e ldrsh r6, [r3, r2] 972a: 2206 movs r2, #6 972c: 5e9b ldrsh r3, [r3, r2] 972e: 429e cmp r6, r3 9730: dc4b bgt.n 97ca _lv_memset_ff(mask_buf, draw_area_w); 9732: 4b73 ldr r3, [pc, #460] ; (9900 ) 9734: 469b mov fp, r3 lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); 9736: 4b73 ldr r3, [pc, #460] ; (9904 ) 9738: 469a mov sl, r3 973a: 46b8 mov r8, r7 973c: 464b mov r3, r9 973e: 9309 str r3, [sp, #36] ; 0x24 9740: e01d b.n 977e dash_cnt ++; 9742: 9f09 ldr r7, [sp, #36] ; 0x24 9744: 3701 adds r7, #1 9746: b23b sxth r3, r7 9748: 9309 str r3, [sp, #36] ; 0x24 _lv_blend_fill(clip, &fill_area, 974a: 8822 ldrh r2, [r4, #0] 974c: ad33 add r5, sp, #204 ; 0xcc 974e: 2300 movs r3, #0 9750: 9302 str r3, [sp, #8] 9752: 7a23 ldrb r3, [r4, #8] 9754: 9301 str r3, [sp, #4] 9756: 9000 str r0, [sp, #0] 9758: 9b08 ldr r3, [sp, #32] 975a: 0029 movs r1, r5 975c: a848 add r0, sp, #288 ; 0x120 975e: 4f60 ldr r7, [pc, #384] ; (98e0 ) 9760: 47b8 blx r7 fill_area.y1++; 9762: 886b ldrh r3, [r5, #2] 9764: 3301 adds r3, #1 9766: 806b strh r3, [r5, #2] fill_area.y2++; 9768: 88eb ldrh r3, [r5, #6] 976a: 3301 adds r3, #1 976c: 80eb strh r3, [r5, #6] for(h = draw_area.y1; h <= draw_area.y2; h++) { 976e: 3601 adds r6, #1 9770: ab0a add r3, sp, #40 ; 0x28 9772: 227e movs r2, #126 ; 0x7e 9774: 189b adds r3, r3, r2 9776: 2200 movs r2, #0 9778: 5e9b ldrsh r3, [r3, r2] 977a: 429e cmp r6, r3 977c: dc25 bgt.n 97ca _lv_memset_ff(mask_buf, draw_area_w); 977e: 990c ldr r1, [sp, #48] ; 0x30 9780: 9d08 ldr r5, [sp, #32] 9782: 0028 movs r0, r5 9784: 47d8 blx fp 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); 9786: 4643 mov r3, r8 9788: 8a5a ldrh r2, [r3, #18] 978a: 1992 adds r2, r2, r6 978c: b212 sxth r2, r2 978e: 8a19 ldrh r1, [r3, #16] 9790: ab0a add r3, sp, #40 ; 0x28 9792: 2078 movs r0, #120 ; 0x78 9794: 181b adds r3, r3, r0 9796: 881b ldrh r3, [r3, #0] 9798: 18c9 adds r1, r1, r3 979a: b209 sxth r1, r1 979c: 9b0b ldr r3, [sp, #44] ; 0x2c 979e: 0028 movs r0, r5 97a0: 47d0 blx sl if(dashed) { 97a2: 9b0a ldr r3, [sp, #40] ; 0x28 97a4: 2b00 cmp r3, #0 97a6: d0d0 beq.n 974a if(mask_res != LV_DRAW_MASK_RES_TRANSP) { 97a8: 2800 cmp r0, #0 97aa: d0ca beq.n 9742 if(dash_cnt > dsc->dash_width) { 97ac: 2304 movs r3, #4 97ae: 5ee2 ldrsh r2, [r4, r3] 97b0: 9b09 ldr r3, [sp, #36] ; 0x24 97b2: 429a cmp r2, r3 97b4: da00 bge.n 97b8 mask_res = LV_DRAW_MASK_RES_TRANSP; 97b6: 2000 movs r0, #0 if(dash_cnt >= dsc->dash_gap + dsc->dash_width) { 97b8: 2106 movs r1, #6 97ba: 5e63 ldrsh r3, [r4, r1] 97bc: 189b adds r3, r3, r2 97be: 9a09 ldr r2, [sp, #36] ; 0x24 97c0: 429a cmp r2, r3 97c2: dbbe blt.n 9742 dash_cnt = 0; 97c4: 2300 movs r3, #0 97c6: 9309 str r3, [sp, #36] ; 0x24 97c8: e7bb b.n 9742 _lv_mem_buf_release(mask_buf); 97ca: 9808 ldr r0, [sp, #32] 97cc: 4b45 ldr r3, [pc, #276] ; (98e4 ) 97ce: 4798 blx r3 97d0: e102 b.n 99d8 else wcorr_i = (LV_MATH_ABS(xdiff) << 5) / LV_MATH_ABS(ydiff); 97d2: 464b mov r3, r9 97d4: 0158 lsls r0, r3, #5 97d6: 4659 mov r1, fp 97d8: 4b4b ldr r3, [pc, #300] ; (9908 ) 97da: 4798 blx r3 97dc: e52d b.n 923a lv_draw_mask_line_points_init(&mask_left_param, p1.x, p1.y + w_half1, p2.x, p2.y + w_half1, 97de: b2b2 uxth r2, r6 97e0: 466b mov r3, sp 97e2: 8d9b ldrh r3, [r3, #44] ; 0x2c 97e4: b2a9 uxth r1, r5 97e6: 4693 mov fp, r2 97e8: 18d2 adds r2, r2, r3 97ea: b212 sxth r2, r2 97ec: 2000 movs r0, #0 97ee: 9001 str r0, [sp, #4] 97f0: 910b str r1, [sp, #44] ; 0x2c 97f2: 468c mov ip, r1 97f4: 4463 add r3, ip 97f6: b21b sxth r3, r3 97f8: 9300 str r3, [sp, #0] 97fa: 4653 mov r3, sl 97fc: 9908 ldr r1, [sp, #32] 97fe: a812 add r0, sp, #72 ; 0x48 9800: 4f42 ldr r7, [pc, #264] ; (990c ) 9802: 47b8 blx r7 lv_draw_mask_line_points_init(&mask_right_param, p1.x, p1.y - w_half0, p2.x, p2.y - w_half0, 9804: 4643 mov r3, r8 9806: 466a mov r2, sp 9808: 8613 strh r3, [r2, #48] ; 0x30 980a: 8e13 ldrh r3, [r2, #48] ; 0x30 980c: 465a mov r2, fp 980e: 1ad2 subs r2, r2, r3 9810: b212 sxth r2, r2 9812: 2101 movs r1, #1 9814: 9101 str r1, [sp, #4] 9816: 990b ldr r1, [sp, #44] ; 0x2c 9818: 1acb subs r3, r1, r3 981a: b21b sxth r3, r3 981c: 9300 str r3, [sp, #0] 981e: 4653 mov r3, sl 9820: 9908 ldr r1, [sp, #32] 9822: a81d add r0, sp, #116 ; 0x74 9824: 47b8 blx r7 9826: e56a b.n 92fe lv_draw_mask_line_points_init(&mask_left_param, p1.x + w_half1, p1.y, p2.x + w_half1, p2.y, 9828: 466b mov r3, sp 982a: 8c1a ldrh r2, [r3, #32] 982c: 8d99 ldrh r1, [r3, #44] ; 0x2c 982e: 4653 mov r3, sl 9830: 4668 mov r0, sp 9832: 8583 strh r3, [r0, #44] ; 0x2c 9834: 8d83 ldrh r3, [r0, #44] ; 0x2c 9836: 469b mov fp, r3 9838: 18cb adds r3, r1, r3 983a: b21b sxth r3, r3 983c: 920b str r2, [sp, #44] ; 0x2c 983e: 4694 mov ip, r2 9840: 4461 add r1, ip 9842: b209 sxth r1, r1 9844: 2200 movs r2, #0 9846: 9201 str r2, [sp, #4] 9848: 9500 str r5, [sp, #0] 984a: 0032 movs r2, r6 984c: a812 add r0, sp, #72 ; 0x48 984e: 4f2f ldr r7, [pc, #188] ; (990c ) 9850: 47b8 blx r7 lv_draw_mask_line_points_init(&mask_right_param, p1.x - w_half0, p1.y, p2.x - w_half0, p2.y, 9852: 4643 mov r3, r8 9854: 466a mov r2, sp 9856: 8613 strh r3, [r2, #48] ; 0x30 9858: 8e12 ldrh r2, [r2, #48] ; 0x30 985a: 465b mov r3, fp 985c: 1a9b subs r3, r3, r2 985e: b21b sxth r3, r3 9860: 990b ldr r1, [sp, #44] ; 0x2c 9862: 1a8a subs r2, r1, r2 9864: b211 sxth r1, r2 9866: 2201 movs r2, #1 9868: 9201 str r2, [sp, #4] 986a: 9500 str r5, [sp, #0] 986c: 0032 movs r2, r6 986e: a81d add r0, sp, #116 ; 0x74 9870: 47b8 blx r7 9872: e544 b.n 92fe 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); 9874: 466b mov r3, sp 9876: 8d1b ldrh r3, [r3, #40] ; 0x28 9878: 4699 mov r9, r3 987a: 466b mov r3, sp 987c: 8c9b ldrh r3, [r3, #36] ; 0x24 987e: 4698 mov r8, r3 9880: 464b mov r3, r9 9882: 9908 ldr r1, [sp, #32] 9884: 1acb subs r3, r1, r3 9886: b21b sxth r3, r3 9888: 2203 movs r2, #3 988a: 9201 str r2, [sp, #4] 988c: 4642 mov r2, r8 988e: 1992 adds r2, r2, r6 9890: b212 sxth r2, r2 9892: 9200 str r2, [sp, #0] 9894: 0032 movs r2, r6 9896: a828 add r0, sp, #160 ; 0xa0 9898: 4e1c ldr r6, [pc, #112] ; (990c ) 989a: 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); 989c: 4653 mov r3, sl 989e: 464a mov r2, r9 98a0: 1a9b subs r3, r3, r2 98a2: b21b sxth r3, r3 98a4: 2202 movs r2, #2 98a6: 9201 str r2, [sp, #4] 98a8: 4642 mov r2, r8 98aa: 1952 adds r2, r2, r5 98ac: b212 sxth r2, r2 98ae: 9200 str r2, [sp, #0] 98b0: 002a movs r2, r5 98b2: 4651 mov r1, sl 98b4: a833 add r0, sp, #204 ; 0xcc 98b6: 47b0 blx r6 mask_top_id = lv_draw_mask_add(&mask_top_param, NULL); 98b8: 2100 movs r1, #0 98ba: a828 add r0, sp, #160 ; 0xa0 98bc: 4d14 ldr r5, [pc, #80] ; (9910 ) 98be: 47a8 blx r5 98c0: 900a str r0, [sp, #40] ; 0x28 mask_bottom_id = lv_draw_mask_add(&mask_bottom_param, NULL); 98c2: 2100 movs r1, #0 98c4: a833 add r0, sp, #204 ; 0xcc 98c6: 47a8 blx r5 98c8: 900d str r0, [sp, #52] ; 0x34 98ca: e52a b.n 9322 size_t mask_buf_size = LV_MATH_MIN(lv_area_get_size(&draw_area), LV_HOR_RES_MAX); 98cc: a80e add r0, sp, #56 ; 0x38 98ce: 4b11 ldr r3, [pc, #68] ; (9914 ) 98d0: 4798 blx r3 98d2: 4683 mov fp, r0 98d4: e549 b.n 936a _lv_memset_00(&mask_buf[mask_p], draw_area_w); 98d6: 0029 movs r1, r5 98d8: 9808 ldr r0, [sp, #32] 98da: 4b0f ldr r3, [pc, #60] ; (9918 ) 98dc: 4798 blx r3 98de: e04c b.n 997a 98e0: 00005c6d .word 0x00005c6d 98e4: 00010bd5 .word 0x00010bd5 98e8: 000043b1 .word 0x000043b1 98ec: 0000f709 .word 0x0000f709 98f0: 0000a6c1 .word 0x0000a6c1 98f4: 0000fc0f .word 0x0000fc0f 98f8: 00010ec1 .word 0x00010ec1 98fc: 00017b61 .word 0x00017b61 9900: 000110f1 .word 0x000110f1 9904: 0000a625 .word 0x0000a625 9908: 00017995 .word 0x00017995 990c: 0000a6e5 .word 0x0000a6e5 9910: 0000a5ed .word 0x0000a5ed 9914: 0000fbf3 .word 0x0000fbf3 9918: 0001104d .word 0x0001104d _lv_blend_fill(&fill_area, clip, 991c: 4643 mov r3, r8 991e: 881a ldrh r2, [r3, #0] dsc->color, mask_buf, LV_DRAW_MASK_RES_CHANGED, dsc->opa, dsc->blend_mode); 9920: 7a5b ldrb r3, [r3, #9] 9922: 079b lsls r3, r3, #30 _lv_blend_fill(&fill_area, clip, 9924: 0f9b lsrs r3, r3, #30 9926: 9302 str r3, [sp, #8] 9928: 4643 mov r3, r8 992a: 7a1b ldrb r3, [r3, #8] 992c: 9301 str r3, [sp, #4] 992e: 2302 movs r3, #2 9930: 9300 str r3, [sp, #0] 9932: 0023 movs r3, r4 9934: a948 add r1, sp, #288 ; 0x120 9936: a810 add r0, sp, #64 ; 0x40 9938: 4f4d ldr r7, [pc, #308] ; (9a70 ) 993a: 47b8 blx r7 fill_area.y1 = fill_area.y2 + 1; 993c: ab0a add r3, sp, #40 ; 0x28 993e: 8bdb ldrh r3, [r3, #30] 9940: 3301 adds r3, #1 9942: b21b sxth r3, r3 9944: aa0a add r2, sp, #40 ; 0x28 9946: 8353 strh r3, [r2, #26] fill_area.y2 = fill_area.y1; 9948: 83d3 strh r3, [r2, #30] mask_p = 0; _lv_memset_ff(mask_buf, mask_buf_size); 994a: 4659 mov r1, fp 994c: 0020 movs r0, r4 994e: 4b49 ldr r3, [pc, #292] ; (9a74 ) 9950: 4798 blx r3 mask_p = 0; 9952: 2700 movs r7, #0 for(h = draw_area.y1 + disp_area->y1; h <= draw_area.y2 + disp_area->y1; h++) { 9954: 3601 adds r6, #1 9956: ab0e add r3, sp, #56 ; 0x38 9958: 2206 movs r2, #6 995a: 5e9b ldrsh r3, [r3, r2] 995c: 464a mov r2, r9 995e: 2112 movs r1, #18 9960: 5e52 ldrsh r2, [r2, r1] 9962: 189b adds r3, r3, r2 9964: 429e cmp r6, r3 9966: dc11 bgt.n 998c lv_draw_mask_res_t mask_res = lv_draw_mask_apply(&mask_buf[mask_p], x, h, draw_area_w); 9968: 19e3 adds r3, r4, r7 996a: 0018 movs r0, r3 996c: 9308 str r3, [sp, #32] 996e: b232 sxth r2, r6 9970: 002b movs r3, r5 9972: 9909 ldr r1, [sp, #36] ; 0x24 9974: 47d0 blx sl if(mask_res == LV_DRAW_MASK_RES_TRANSP) { 9976: 2800 cmp r0, #0 9978: d0ad beq.n 98d6 mask_p += draw_area_w; 997a: 197f adds r7, r7, r5 if((uint32_t) mask_p + draw_area_w < mask_buf_size) { 997c: 19eb adds r3, r5, r7 997e: 459b cmp fp, r3 9980: d9cc bls.n 991c fill_area.y2 ++; 9982: aa10 add r2, sp, #64 ; 0x40 9984: 88d3 ldrh r3, [r2, #6] 9986: 3301 adds r3, #1 9988: 80d3 strh r3, [r2, #6] 998a: e7e3 b.n 9954 998c: 4643 mov r3, r8 998e: 46a0 mov r8, r4 9990: 001c movs r4, r3 } } /*Flush the last part*/ if(fill_area.y1 != fill_area.y2) { 9992: aa10 add r2, sp, #64 ; 0x40 9994: 2106 movs r1, #6 9996: 5e53 ldrsh r3, [r2, r1] 9998: 2102 movs r1, #2 999a: 5e52 ldrsh r2, [r2, r1] 999c: 429a cmp r2, r3 999e: d00f beq.n 99c0 fill_area.y2--; 99a0: a810 add r0, sp, #64 ; 0x40 99a2: 3b01 subs r3, #1 99a4: 80c3 strh r3, [r0, #6] _lv_blend_fill(&fill_area, clip, 99a6: 8822 ldrh r2, [r4, #0] dsc->color, mask_buf, LV_DRAW_MASK_RES_CHANGED, dsc->opa, dsc->blend_mode); 99a8: 7a63 ldrb r3, [r4, #9] 99aa: 079b lsls r3, r3, #30 _lv_blend_fill(&fill_area, clip, 99ac: 0f9b lsrs r3, r3, #30 99ae: 9302 str r3, [sp, #8] 99b0: 7a23 ldrb r3, [r4, #8] 99b2: 9301 str r3, [sp, #4] 99b4: 2302 movs r3, #2 99b6: 9300 str r3, [sp, #0] 99b8: 4643 mov r3, r8 99ba: a948 add r1, sp, #288 ; 0x120 99bc: 4d2c ldr r5, [pc, #176] ; (9a70 ) 99be: 47a8 blx r5 } _lv_mem_buf_release(mask_buf); 99c0: 4640 mov r0, r8 99c2: 4b2d ldr r3, [pc, #180] ; (9a78 ) 99c4: 4798 blx r3 lv_draw_mask_remove_id(mask_left_id); 99c6: 980b ldr r0, [sp, #44] ; 0x2c 99c8: 4d2c ldr r5, [pc, #176] ; (9a7c ) 99ca: 47a8 blx r5 lv_draw_mask_remove_id(mask_right_id); 99cc: 980c ldr r0, [sp, #48] ; 0x30 99ce: 47a8 blx r5 lv_draw_mask_remove_id(mask_top_id); 99d0: 980a ldr r0, [sp, #40] ; 0x28 99d2: 47a8 blx r5 lv_draw_mask_remove_id(mask_bottom_id); 99d4: 980d ldr r0, [sp, #52] ; 0x34 99d6: 47a8 blx r5 if(dsc->round_end || dsc->round_start) { 99d8: 7a63 ldrb r3, [r4, #9] 99da: 220c movs r2, #12 99dc: 421a tst r2, r3 99de: d106 bne.n 99ee } 99e0: b04b add sp, #300 ; 0x12c 99e2: bc3c pop {r2, r3, r4, r5} 99e4: 4690 mov r8, r2 99e6: 4699 mov r9, r3 99e8: 46a2 mov sl, r4 99ea: 46ab mov fp, r5 99ec: bdf0 pop {r4, r5, r6, r7, pc} lv_draw_rect_dsc_init(&cir_dsc); 99ee: ad33 add r5, sp, #204 ; 0xcc 99f0: 0028 movs r0, r5 99f2: 4b23 ldr r3, [pc, #140] ; (9a80 ) 99f4: 4798 blx r3 cir_dsc.bg_color = dsc->color; 99f6: 8823 ldrh r3, [r4, #0] 99f8: 806b strh r3, [r5, #2] cir_dsc.radius = LV_RADIUS_CIRCLE; 99fa: 4b22 ldr r3, [pc, #136] ; (9a84 ) 99fc: 802b strh r3, [r5, #0] cir_dsc.bg_opa = dsc->opa; 99fe: 7a23 ldrb r3, [r4, #8] 9a00: 732b strb r3, [r5, #12] int32_t r = (dsc->width >> 1); 9a02: 2202 movs r2, #2 9a04: 5ea3 ldrsh r3, [r4, r2] 9a06: 105e asrs r6, r3, #1 int32_t r_corr = (dsc->width & 1) ? 0 : 1; 9a08: 2201 movs r2, #1 9a0a: 4053 eors r3, r2 9a0c: 2501 movs r5, #1 9a0e: 401d ands r5, r3 if(dsc->round_start) { 9a10: 7a63 ldrb r3, [r4, #9] 9a12: 075b lsls r3, r3, #29 9a14: d417 bmi.n 9a46 if(dsc->round_end) { 9a16: 7a63 ldrb r3, [r4, #9] 9a18: 071b lsls r3, r3, #28 9a1a: d5e1 bpl.n 99e0 cir_area.x1 = point2->x - r; 9a1c: 9906 ldr r1, [sp, #24] 9a1e: 880a ldrh r2, [r1, #0] 9a20: b2b6 uxth r6, r6 9a22: a828 add r0, sp, #160 ; 0xa0 9a24: 1b93 subs r3, r2, r6 9a26: 8003 strh r3, [r0, #0] cir_area.y1 = point2->y - r; 9a28: 8849 ldrh r1, [r1, #2] 9a2a: 1b8b subs r3, r1, r6 9a2c: 8043 strh r3, [r0, #2] cir_area.x2 = point2->x + r - r_corr; 9a2e: b2ad uxth r5, r5 9a30: 1992 adds r2, r2, r6 9a32: 1b52 subs r2, r2, r5 9a34: 8082 strh r2, [r0, #4] cir_area.y2 = point2->y + r - r_corr ; 9a36: 1876 adds r6, r6, r1 9a38: 1b76 subs r6, r6, r5 9a3a: 80c6 strh r6, [r0, #6] lv_draw_rect(&cir_area, clip, &cir_dsc); 9a3c: aa33 add r2, sp, #204 ; 0xcc 9a3e: 9907 ldr r1, [sp, #28] 9a40: 4b11 ldr r3, [pc, #68] ; (9a88 ) 9a42: 4798 blx r3 9a44: e7cc b.n 99e0 cir_area.x1 = point1->x - r; 9a46: 9f05 ldr r7, [sp, #20] 9a48: 883a ldrh r2, [r7, #0] 9a4a: b2b3 uxth r3, r6 9a4c: a828 add r0, sp, #160 ; 0xa0 9a4e: 1ad1 subs r1, r2, r3 9a50: 8001 strh r1, [r0, #0] cir_area.y1 = point1->y - r; 9a52: 887f ldrh r7, [r7, #2] 9a54: 1af9 subs r1, r7, r3 9a56: 8041 strh r1, [r0, #2] cir_area.x2 = point1->x + r - r_corr; 9a58: b2a9 uxth r1, r5 9a5a: 18d2 adds r2, r2, r3 9a5c: 1a52 subs r2, r2, r1 9a5e: 8082 strh r2, [r0, #4] cir_area.y2 = point1->y + r - r_corr ; 9a60: 19db adds r3, r3, r7 9a62: 1a5b subs r3, r3, r1 9a64: 80c3 strh r3, [r0, #6] lv_draw_rect(&cir_area, clip, &cir_dsc); 9a66: aa33 add r2, sp, #204 ; 0xcc 9a68: 9907 ldr r1, [sp, #28] 9a6a: 4b07 ldr r3, [pc, #28] ; (9a88 ) 9a6c: 4798 blx r3 9a6e: e7d2 b.n 9a16 9a70: 00005c6d .word 0x00005c6d 9a74: 000110f1 .word 0x000110f1 9a78: 00010bd5 .word 0x00010bd5 9a7c: 0000a679 .word 0x0000a679 9a80: 0000ab21 .word 0x0000ab21 9a84: 00007fff .word 0x00007fff 9a88: 0000abc5 .word 0x0000abc5 00009a8c : **********************/ 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) { 9a8c: b5f8 push {r3, r4, r5, r6, r7, lr} 9a8e: 46de mov lr, fp 9a90: 4657 mov r7, sl 9a92: 464e mov r6, r9 9a94: 4645 mov r5, r8 9a96: b5e0 push {r5, r6, r7, lr} 9a98: 9c0a ldr r4, [sp, #40] ; 0x28 /*Make to points relative to the vertex*/ abs_y -= p->origo.y; 9a9a: 8aa5 ldrh r5, [r4, #20] 9a9c: 1b52 subs r2, r2, r5 9a9e: b212 sxth r2, r2 abs_x -= p->origo.x; 9aa0: 8a65 ldrh r5, [r4, #18] 9aa2: 1b4d subs r5, r1, r5 9aa4: b22d sxth r5, r5 /*Handle special cases*/ if(p->steep == 0) { 9aa6: 6a21 ldr r1, [r4, #32] 9aa8: 2900 cmp r1, #0 9aaa: d140 bne.n 9b2e /*Horizontal*/ if(p->flat) { 9aac: 3128 adds r1, #40 ; 0x28 9aae: 5c61 ldrb r1, [r4, r1] 9ab0: 07c9 lsls r1, r1, #31 9ab2: d511 bpl.n 9ad8 /*Non sense: Can't be on the right/left of a horizontal line*/ if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT || 9ab4: 7c21 ldrb r1, [r4, #16] 9ab6: 2303 movs r3, #3 9ab8: 400b ands r3, r1 9aba: 2b01 cmp r3, #1 9abc: d800 bhi.n 9ac0 9abe: e1c5 b.n 9e4c 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; 9ac0: 2b02 cmp r3, #2 9ac2: d006 beq.n 9ad2 else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_BOTTOM && abs_y > 0) return LV_DRAW_MASK_RES_FULL_COVER; else { return LV_DRAW_MASK_RES_TRANSP; 9ac4: 2400 movs r4, #0 else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_BOTTOM && abs_y > 0) return LV_DRAW_MASK_RES_FULL_COVER; 9ac6: 2b03 cmp r3, #3 9ac8: d145 bne.n 9b56 9aca: 17d4 asrs r4, r2, #31 9acc: 1aa4 subs r4, r4, r2 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; 9ace: 0fe4 lsrs r4, r4, #31 9ad0: e041 b.n 9b56 else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP && abs_y + 1 < 0) return LV_DRAW_MASK_RES_FULL_COVER; 9ad2: 3201 adds r2, #1 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; 9ad4: 0fd4 lsrs r4, r2, #31 9ad6: e03e b.n 9b56 } } /*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 || 9ad8: 7c21 ldrb r1, [r4, #16] 9ada: 2203 movs r2, #3 9adc: 400a ands r2, r1 9ade: 1e91 subs r1, r2, #2 9ae0: 2901 cmp r1, #1 9ae2: d800 bhi.n 9ae6 9ae4: e1b4 b.n 9e50 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; 9ae6: 2a01 cmp r2, #1 9ae8: d00f beq.n 9b0a else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) { 9aea: 2a00 cmp r2, #0 9aec: d110 bne.n 9b10 if(abs_x + len < 0) return LV_DRAW_MASK_RES_FULL_COVER; 9aee: 18e9 adds r1, r5, r3 9af0: d500 bpl.n 9af4 9af2: e1af b.n 9e54 else { int32_t k = - abs_x; 9af4: 426d negs r5, r5 if(k < 0) return LV_DRAW_MASK_RES_TRANSP; 9af6: 2d00 cmp r5, #0 9af8: da00 bge.n 9afc 9afa: e1ad b.n 9e58 if(k >= 0 && k < len) _lv_memset_00(&mask_buf[k], len - k); return LV_DRAW_MASK_RES_CHANGED; 9afc: 2402 movs r4, #2 if(k >= 0 && k < len) _lv_memset_00(&mask_buf[k], len - k); 9afe: 42ab cmp r3, r5 9b00: dd29 ble.n 9b56 9b02: 1940 adds r0, r0, r5 9b04: 4bbd ldr r3, [pc, #756] ; (9dfc ) 9b06: 4798 blx r3 9b08: e025 b.n 9b56 else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT && abs_x > 0) return LV_DRAW_MASK_RES_FULL_COVER; 9b0a: 2401 movs r4, #1 9b0c: 2d00 cmp r5, #0 9b0e: dc22 bgt.n 9b56 } } else { if(abs_x + len < 0) return LV_DRAW_MASK_RES_TRANSP; 9b10: 001a movs r2, r3 9b12: 42dd cmn r5, r3 9b14: d500 bpl.n 9b18 9b16: e1a1 b.n 9e5c else { int32_t k = - abs_x; 9b18: 4269 negs r1, r5 9b1a: 43cb mvns r3, r1 9b1c: 17db asrs r3, r3, #31 9b1e: 4019 ands r1, r3 if(k < 0) k = 0; if(k >= len) return LV_DRAW_MASK_RES_TRANSP; 9b20: 2400 movs r4, #0 9b22: 428a cmp r2, r1 9b24: dd17 ble.n 9b56 else if(k >= 0 && k < len) _lv_memset_00(&mask_buf[0], k); 9b26: 4bb5 ldr r3, [pc, #724] ; (9dfc ) 9b28: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; 9b2a: 3402 adds r4, #2 9b2c: e013 b.n 9b56 } } } lv_draw_mask_res_t res; if(p->flat) { 9b2e: 2128 movs r1, #40 ; 0x28 9b30: 5c61 ldrb r1, [r4, r1] 9b32: 468b mov fp, r1 9b34: 07c9 lsls r1, r1, #31 9b36: d415 bmi.n 9b64 { 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; 9b38: 69a7 ldr r7, [r4, #24] 9b3a: 0011 movs r1, r2 9b3c: 4379 muls r1, r7 9b3e: 1289 asrs r1, r1, #10 9b40: 468c mov ip, r1 if(p->xy_steep > 0) x_at_y++; 9b42: 17f9 asrs r1, r7, #31 9b44: 1bc9 subs r1, r1, r7 9b46: 0fc9 lsrs r1, r1, #31 9b48: 4461 add r1, ip if(x_at_y < abs_x) { 9b4a: 428d cmp r5, r1 9b4c: dc00 bgt.n 9b50 9b4e: e096 b.n 9c7e if(p->inv) { 9b50: 465b mov r3, fp 9b52: 079c lsls r4, r3, #30 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; 9b54: 0fe4 lsrs r4, r4, #31 } 9b56: 0020 movs r0, r4 9b58: bc3c pop {r2, r3, r4, r5} 9b5a: 4690 mov r8, r2 9b5c: 4699 mov r9, r3 9b5e: 46a2 mov sl, r4 9b60: 46ab mov fp, r5 9b62: bdf8 pop {r3, r4, r5, r6, r7, pc} y_at_x = (int32_t)((int32_t)p->yx_steep * abs_x) >> 10; 9b64: 69e1 ldr r1, [r4, #28] 9b66: 002f movs r7, r5 9b68: 434f muls r7, r1 9b6a: 12bf asrs r7, r7, #10 if(p->yx_steep > 0) { 9b6c: 2900 cmp r1, #0 9b6e: dd06 ble.n 9b7e if(y_at_x > abs_y) { 9b70: 4297 cmp r7, r2 9b72: dc00 bgt.n 9b76 9b74: e176 b.n 9e64 if(p->inv) { 9b76: 465b mov r3, fp 9b78: 079c lsls r4, r3, #30 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; 9b7a: 0fe4 lsrs r4, r4, #31 9b7c: e7eb b.n 9b56 if(y_at_x < abs_y) { 9b7e: 4297 cmp r7, r2 9b80: db00 blt.n 9b84 9b82: e1ab b.n 9edc if(p->inv) { 9b84: 465b mov r3, fp 9b86: 079c lsls r4, r3, #30 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; 9b88: 0fe4 lsrs r4, r4, #31 9b8a: e7e4 b.n 9b56 if(p->inv) { 9b8c: 465b mov r3, fp 9b8e: 085e lsrs r6, r3, #1 9b90: 2401 movs r4, #1 9b92: 4066 eors r6, r4 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; 9b94: 2401 movs r4, #1 9b96: 4034 ands r4, r6 9b98: e7dd b.n 9b56 if(p->inv) { 9b9a: 465b mov r3, fp 9b9c: 085e lsrs r6, r3, #1 9b9e: 2401 movs r4, #1 9ba0: 4066 eors r6, r4 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; 9ba2: 2401 movs r4, #1 9ba4: 4034 ands r4, r6 9ba6: e7d6 b.n 9b56 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; 9ba8: 2100 movs r1, #0 9baa: e190 b.n 9ece 9bac: 2100 movs r1, #0 mask_buf[k] = mask_mix(mask_buf[k], m); 9bae: 464b mov r3, r9 9bb0: 54c1 strb r1, [r0, r3] px_h -= p->spx; 9bb2: 6a63 ldr r3, [r4, #36] ; 0x24 9bb4: 1ad2 subs r2, r2, r3 k++; 9bb6: 3501 adds r5, #1 if(k >= len) break; 9bb8: 42bd cmp r5, r7 9bba: da43 bge.n 9c44 while(px_h > p->spx) { 9bbc: 6a63 ldr r3, [r4, #36] ; 0x24 9bbe: 429a cmp r2, r3 9bc0: dd1a ble.n 9bf8 if(k >= 0 && k < len) { 9bc2: 2d00 cmp r5, #0 9bc4: dbf5 blt.n 9bb2 9bc6: 42bd cmp r5, r7 9bc8: daf3 bge.n 9bb2 m = px_h - (p->spx >> 1); 9bca: 105b asrs r3, r3, #1 9bcc: 1ad3 subs r3, r2, r3 9bce: b2db uxtb r3, r3 if(p->inv) m = 255 - m; 9bd0: 4641 mov r1, r8 9bd2: 5c61 ldrb r1, [r4, r1] 9bd4: 420e tst r6, r1 9bd6: d001 beq.n 9bdc 9bd8: 43db mvns r3, r3 9bda: b2db uxtb r3, r3 9bdc: 46a9 mov r9, r5 mask_buf[k] = mask_mix(mask_buf[k], m); 9bde: 5d41 ldrb r1, [r0, r5] if(mask_new >= LV_OPA_MAX) return mask_act; 9be0: 2bf9 cmp r3, #249 ; 0xf9 9be2: d8e4 bhi.n 9bae if(mask_new <= LV_OPA_MIN) return 0; 9be4: 2b05 cmp r3, #5 9be6: d9e1 bls.n 9bac return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); 9be8: 434b muls r3, r1 9bea: 0219 lsls r1, r3, #8 9bec: 18c9 adds r1, r1, r3 9bee: 01c9 lsls r1, r1, #7 9bf0: 18cb adds r3, r1, r3 9bf2: 0ddb lsrs r3, r3, #23 9bf4: b2d9 uxtb r1, r3 9bf6: e7da b.n 9bae if(k < len && k >= 0) { 9bf8: 42bd cmp r5, r7 9bfa: da23 bge.n 9c44 9bfc: 2d00 cmp r5, #0 9bfe: db21 blt.n 9c44 int32_t x_inters = (px_h * p->xy_steep) >> 10; 9c00: 69a3 ldr r3, [r4, #24] 9c02: 4353 muls r3, r2 9c04: 129b asrs r3, r3, #10 m = (x_inters * px_h) >> 9; 9c06: 4353 muls r3, r2 9c08: 125b asrs r3, r3, #9 9c0a: b2db uxtb r3, r3 if(p->yx_steep < 0) m = 255 - m; 9c0c: 69e2 ldr r2, [r4, #28] 9c0e: 2a00 cmp r2, #0 9c10: db13 blt.n 9c3a if(p->inv) m = 255 - m; 9c12: 2228 movs r2, #40 ; 0x28 9c14: 5ca2 ldrb r2, [r4, r2] 9c16: 0792 lsls r2, r2, #30 9c18: d501 bpl.n 9c1e 9c1a: 43db mvns r3, r3 9c1c: b2db uxtb r3, r3 mask_buf[k] = mask_mix(mask_buf[k], m); 9c1e: 1946 adds r6, r0, r5 9c20: 7832 ldrb r2, [r6, #0] if(mask_new >= LV_OPA_MAX) return mask_act; 9c22: 2bf9 cmp r3, #249 ; 0xf9 9c24: d80d bhi.n 9c42 if(mask_new <= LV_OPA_MIN) return 0; 9c26: 2b05 cmp r3, #5 9c28: d90a bls.n 9c40 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); 9c2a: 4353 muls r3, r2 9c2c: 021a lsls r2, r3, #8 9c2e: 18d2 adds r2, r2, r3 9c30: 01d2 lsls r2, r2, #7 9c32: 18d3 adds r3, r2, r3 9c34: 0ddb lsrs r3, r3, #23 9c36: b2da uxtb r2, r3 9c38: e003 b.n 9c42 if(p->yx_steep < 0) m = 255 - m; 9c3a: 43db mvns r3, r3 9c3c: b2db uxtb r3, r3 9c3e: e7e8 b.n 9c12 if(mask_new <= LV_OPA_MIN) return 0; 9c40: 2200 movs r2, #0 mask_buf[k] = mask_mix(mask_buf[k], m); 9c42: 7032 strb r2, [r6, #0] if(p->inv) { 9c44: 2328 movs r3, #40 ; 0x28 9c46: 5ce3 ldrb r3, [r4, r3] 9c48: 079b lsls r3, r3, #30 9c4a: d50c bpl.n 9c66 return LV_DRAW_MASK_RES_TRANSP; 9c4c: 2400 movs r4, #0 if(k > len) { 9c4e: 4567 cmp r7, ip 9c50: da00 bge.n 9c54 9c52: e780 b.n 9b56 return LV_DRAW_MASK_RES_CHANGED; 9c54: 3402 adds r4, #2 if(k >= 0) { 9c56: 4663 mov r3, ip 9c58: 2b00 cmp r3, #0 9c5a: da00 bge.n 9c5e 9c5c: e77b b.n 9b56 _lv_memset_00(&mask_buf[0], k); 9c5e: 4661 mov r1, ip 9c60: 4b66 ldr r3, [pc, #408] ; (9dfc ) 9c62: 4798 blx r3 9c64: e777 b.n 9b56 if(k < 0) { 9c66: 3501 adds r5, #1 9c68: d500 bpl.n 9c6c 9c6a: e0f9 b.n 9e60 return LV_DRAW_MASK_RES_CHANGED; 9c6c: 2402 movs r4, #2 if(k <= len) { 9c6e: 42bd cmp r5, r7 9c70: dd00 ble.n 9c74 9c72: e770 b.n 9b56 _lv_memset_00(&mask_buf[k], len - k); 9c74: 1b79 subs r1, r7, r5 9c76: 1940 adds r0, r0, r5 9c78: 4b60 ldr r3, [pc, #384] ; (9dfc ) 9c7a: 4798 blx r3 9c7c: e76b b.n 9b56 if(x_at_y > abs_x + len) { 9c7e: 4698 mov r8, r3 9c80: 18e9 adds r1, r5, r3 9c82: 458c cmp ip, r1 9c84: dd06 ble.n 9c94 if(p->inv) { 9c86: 465b mov r3, fp 9c88: 085c lsrs r4, r3, #1 9c8a: 2601 movs r6, #1 9c8c: 4066 eors r6, r4 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; 9c8e: 2401 movs r4, #1 9c90: 4034 ands r4, r6 9c92: e760 b.n 9b56 int32_t xs = ((abs_y << 8) * p->xy_steep) >> 10; 9c94: 0211 lsls r1, r2, #8 9c96: 4379 muls r1, r7 int32_t xsi = xs >> 8; 9c98: 148e asrs r6, r1, #18 9c9a: 46b4 mov ip, r6 int32_t xsf = xs & 0xFF; 9c9c: 0389 lsls r1, r1, #14 9c9e: 0e09 lsrs r1, r1, #24 int32_t xe = (((abs_y + 1) << 8) * p->xy_steep) >> 10; 9ca0: 3201 adds r2, #1 9ca2: 0212 lsls r2, r2, #8 9ca4: 437a muls r2, r7 int32_t xei = xe >> 8; 9ca6: 1496 asrs r6, r2, #18 9ca8: 46b2 mov sl, r6 k = xsi - abs_x; 9caa: 4666 mov r6, ip 9cac: 1b76 subs r6, r6, r5 9cae: 46b1 mov r9, r6 if(xsi != xei && (p->xy_steep < 0 && xsf == 0)) { 9cb0: 45d4 cmp ip, sl 9cb2: d05c beq.n 9d6e 9cb4: 2f00 cmp r7, #0 9cb6: db52 blt.n 9d5e y_inters = ((255 - xsf) * p->yx_steep) >> 10; 9cb8: 22ff movs r2, #255 ; 0xff 9cba: 1a51 subs r1, r2, r1 9cbc: 69e5 ldr r5, [r4, #28] 9cbe: 434d muls r5, r1 9cc0: 12ad asrs r5, r5, #10 if(k >= 0 && k < len) { 9cc2: 2e00 cmp r6, #0 9cc4: db19 blt.n 9cfa 9cc6: 45c8 cmp r8, r9 9cc8: dd17 ble.n 9cfa m = 255 - ((y_inters * (255 - xsf)) >> 9); 9cca: 4369 muls r1, r5 9ccc: 1249 asrs r1, r1, #9 9cce: b2ca uxtb r2, r1 if(p->inv) m = 255 - m; 9cd0: 4659 mov r1, fp 9cd2: 0789 lsls r1, r1, #30 9cd4: d401 bmi.n 9cda m = 255 - ((y_inters * (255 - xsf)) >> 9); 9cd6: 43d2 mvns r2, r2 9cd8: b2d2 uxtb r2, r2 mask_buf[k] = mask_mix(mask_buf[k], m); 9cda: 4649 mov r1, r9 9cdc: 1846 adds r6, r0, r1 9cde: 7831 ldrb r1, [r6, #0] if(mask_new >= LV_OPA_MAX) return mask_act; 9ce0: 2af9 cmp r2, #249 ; 0xf9 9ce2: d809 bhi.n 9cf8 if(mask_new <= LV_OPA_MIN) return 0; 9ce4: 2a05 cmp r2, #5 9ce6: d800 bhi.n 9cea 9ce8: e099 b.n 9e1e return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); 9cea: 434a muls r2, r1 9cec: 0211 lsls r1, r2, #8 9cee: 1889 adds r1, r1, r2 9cf0: 01c9 lsls r1, r1, #7 9cf2: 188a adds r2, r1, r2 9cf4: 0dd2 lsrs r2, r2, #23 9cf6: b2d1 uxtb r1, r2 mask_buf[k] = mask_mix(mask_buf[k], m); 9cf8: 7031 strb r1, [r6, #0] if(k >= 0 && k < len) { 9cfa: 464a mov r2, r9 9cfc: 1c51 adds r1, r2, #1 9cfe: d41d bmi.n 9d3c 9d00: 4588 cmp r8, r1 9d02: dd1b ble.n 9d3c int32_t x_inters = ((255 - y_inters) * p->xy_steep) >> 10; 9d04: 22ff movs r2, #255 ; 0xff 9d06: 1b55 subs r5, r2, r5 9d08: 69a2 ldr r2, [r4, #24] 9d0a: 436a muls r2, r5 9d0c: 1292 asrs r2, r2, #10 m = ((255 - y_inters) * x_inters) >> 9; 9d0e: 4355 muls r5, r2 9d10: 126d asrs r5, r5, #9 9d12: b2ea uxtb r2, r5 if(p->inv) m = 255 - m; 9d14: 2528 movs r5, #40 ; 0x28 9d16: 5d65 ldrb r5, [r4, r5] 9d18: 07ad lsls r5, r5, #30 9d1a: d501 bpl.n 9d20 9d1c: 43d2 mvns r2, r2 9d1e: b2d2 uxtb r2, r2 mask_buf[k] = mask_mix(mask_buf[k], m); 9d20: 1841 adds r1, r0, r1 9d22: 780d ldrb r5, [r1, #0] if(mask_new >= LV_OPA_MAX) return mask_act; 9d24: 2af9 cmp r2, #249 ; 0xf9 9d26: d808 bhi.n 9d3a if(mask_new <= LV_OPA_MIN) return 0; 9d28: 2a05 cmp r2, #5 9d2a: d97a bls.n 9e22 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); 9d2c: 436a muls r2, r5 9d2e: 0215 lsls r5, r2, #8 9d30: 18ad adds r5, r5, r2 9d32: 01ed lsls r5, r5, #7 9d34: 18aa adds r2, r5, r2 9d36: 0dd2 lsrs r2, r2, #23 9d38: b2d5 uxtb r5, r2 mask_buf[k] = mask_mix(mask_buf[k], m); 9d3a: 700d strb r5, [r1, #0] if(p->inv) { 9d3c: 2228 movs r2, #40 ; 0x28 9d3e: 5ca2 ldrb r2, [r4, r2] 9d40: 0792 lsls r2, r2, #30 9d42: d570 bpl.n 9e26 if(k > len) return LV_DRAW_MASK_RES_TRANSP; 9d44: 2400 movs r4, #0 9d46: 45c8 cmp r8, r9 9d48: da00 bge.n 9d4c 9d4a: e704 b.n 9b56 return LV_DRAW_MASK_RES_CHANGED; 9d4c: 3402 adds r4, #2 if(k >= 0) _lv_memset_00(&mask_buf[0], k); 9d4e: 464b mov r3, r9 9d50: 2b00 cmp r3, #0 9d52: da00 bge.n 9d56 9d54: e6ff b.n 9b56 9d56: 4649 mov r1, r9 9d58: 4b28 ldr r3, [pc, #160] ; (9dfc ) 9d5a: 4798 blx r3 9d5c: e6fb b.n 9b56 if(xsi != xei && (p->xy_steep < 0 && xsf == 0)) { 9d5e: 2900 cmp r1, #0 9d60: d000 beq.n 9d64 9d62: e0cc b.n 9efe k--; 9d64: 3901 subs r1, #1 9d66: 468c mov ip, r1 9d68: 44e1 add r9, ip xsf = 0xFF; 9d6a: 3101 adds r1, #1 9d6c: 31ff adds r1, #255 ; 0xff if(k >= 0 && k < len) { 9d6e: 464e mov r6, r9 9d70: 2e00 cmp r6, #0 9d72: db1b blt.n 9dac 9d74: 45c8 cmp r8, r9 9d76: dd19 ble.n 9dac int32_t xef = xe & 0xFF; 9d78: 0392 lsls r2, r2, #14 9d7a: 0e12 lsrs r2, r2, #24 m = (xsf + xef) >> 1; 9d7c: 1852 adds r2, r2, r1 9d7e: 0852 lsrs r2, r2, #1 if(p->inv) m = 255 - m; 9d80: 4659 mov r1, fp 9d82: 0789 lsls r1, r1, #30 9d84: d501 bpl.n 9d8a 9d86: 43d2 mvns r2, r2 9d88: b2d2 uxtb r2, r2 mask_buf[k] = mask_mix(mask_buf[k], m); 9d8a: 4649 mov r1, r9 9d8c: 1846 adds r6, r0, r1 9d8e: 7831 ldrb r1, [r6, #0] if(mask_new >= LV_OPA_MAX) return mask_act; 9d90: 2af9 cmp r2, #249 ; 0xf9 9d92: d80a bhi.n 9daa if(mask_new <= LV_OPA_MIN) return 0; 9d94: 2a05 cmp r2, #5 9d96: d907 bls.n 9da8 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); 9d98: 434a muls r2, r1 9d9a: 0211 lsls r1, r2, #8 9d9c: 1889 adds r1, r1, r2 9d9e: 01c9 lsls r1, r1, #7 9da0: 188a adds r2, r1, r2 9da2: 0dd2 lsrs r2, r2, #23 9da4: b2d1 uxtb r1, r2 9da6: e000 b.n 9daa if(mask_new <= LV_OPA_MIN) return 0; 9da8: 2100 movs r1, #0 mask_buf[k] = mask_mix(mask_buf[k], m); 9daa: 7031 strb r1, [r6, #0] if(p->inv) { 9dac: 2228 movs r2, #40 ; 0x28 9dae: 5ca2 ldrb r2, [r4, r2] 9db0: 0792 lsls r2, r2, #30 9db2: d50c bpl.n 9dce k = xsi - abs_x; 9db4: 4653 mov r3, sl 9db6: 1b59 subs r1, r3, r5 return LV_DRAW_MASK_RES_TRANSP; 9db8: 2400 movs r4, #0 if(k >= len) { 9dba: 4588 cmp r8, r1 9dbc: dc00 bgt.n 9dc0 9dbe: e6ca b.n 9b56 return LV_DRAW_MASK_RES_CHANGED; 9dc0: 3402 adds r4, #2 if(k >= 0) _lv_memset_00(&mask_buf[0], k); 9dc2: 2900 cmp r1, #0 9dc4: da00 bge.n 9dc8 9dc6: e6c6 b.n 9b56 9dc8: 4b0c ldr r3, [pc, #48] ; (9dfc ) 9dca: 4798 blx r3 9dcc: e6c3 b.n 9b56 k++; 9dce: 4649 mov r1, r9 9dd0: 3101 adds r1, #1 9dd2: 001a movs r2, r3 9dd4: 4588 cmp r8, r1 9dd6: dd00 ble.n 9dda 9dd8: 000a movs r2, r1 if(k == 0) return LV_DRAW_MASK_RES_TRANSP; 9dda: 2400 movs r4, #0 9ddc: 2a00 cmp r2, #0 9dde: d100 bne.n 9de2 9de0: e6b9 b.n 9b56 return LV_DRAW_MASK_RES_CHANGED; 9de2: 3402 adds r4, #2 else if(k > 0) _lv_memset_00(&mask_buf[k], len - k); 9de4: 2a00 cmp r2, #0 9de6: dc00 bgt.n 9dea 9de8: e6b5 b.n 9b56 9dea: 1a99 subs r1, r3, r2 9dec: 1880 adds r0, r0, r2 9dee: 4b03 ldr r3, [pc, #12] ; (9dfc ) 9df0: 4798 blx r3 9df2: e6b0 b.n 9b56 if(mask_new <= LV_OPA_MIN) return 0; 9df4: 2500 movs r5, #0 9df6: e0a1 b.n 9f3c 9df8: 2500 movs r5, #0 9dfa: e0c2 b.n 9f82 9dfc: 0001104d .word 0x0001104d k += 2; 9e00: 464a mov r2, r9 9e02: 3201 adds r2, #1 if(k > len) return LV_DRAW_MASK_RES_FULL_COVER; 9e04: 2401 movs r4, #1 9e06: 4590 cmp r8, r2 9e08: da00 bge.n 9e0c 9e0a: e6a4 b.n 9b56 return LV_DRAW_MASK_RES_CHANGED; 9e0c: 3401 adds r4, #1 if(k >= 0) _lv_memset_00(&mask_buf[k], len - k); 9e0e: 2a00 cmp r2, #0 9e10: da00 bge.n 9e14 9e12: e6a0 b.n 9b56 9e14: 1a99 subs r1, r3, r2 9e16: 1880 adds r0, r0, r2 9e18: 4b62 ldr r3, [pc, #392] ; (9fa4 ) 9e1a: 4798 blx r3 9e1c: e69b b.n 9b56 if(mask_new <= LV_OPA_MIN) return 0; 9e1e: 2100 movs r1, #0 9e20: e76a b.n 9cf8 9e22: 2500 movs r5, #0 9e24: e789 b.n 9d3a k++; 9e26: 4649 mov r1, r9 9e28: 3102 adds r1, #2 9e2a: 001a movs r2, r3 9e2c: 4588 cmp r8, r1 9e2e: dd00 ble.n 9e32 9e30: 000a movs r2, r1 if(k == 0) return LV_DRAW_MASK_RES_TRANSP; 9e32: 2400 movs r4, #0 9e34: 2a00 cmp r2, #0 9e36: d100 bne.n 9e3a 9e38: e68d b.n 9b56 return LV_DRAW_MASK_RES_CHANGED; 9e3a: 3402 adds r4, #2 else if(k > 0) _lv_memset_00(&mask_buf[k], len - k); 9e3c: 2a00 cmp r2, #0 9e3e: dc00 bgt.n 9e42 9e40: e689 b.n 9b56 9e42: 1a99 subs r1, r3, r2 9e44: 1880 adds r0, r0, r2 9e46: 4b57 ldr r3, [pc, #348] ; (9fa4 ) 9e48: 4798 blx r3 9e4a: e684 b.n 9b56 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; 9e4c: 2401 movs r4, #1 9e4e: e682 b.n 9b56 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_BOTTOM) return LV_DRAW_MASK_RES_FULL_COVER; 9e50: 2401 movs r4, #1 9e52: e680 b.n 9b56 if(abs_x + len < 0) return LV_DRAW_MASK_RES_FULL_COVER; 9e54: 2401 movs r4, #1 9e56: e67e b.n 9b56 if(k < 0) return LV_DRAW_MASK_RES_TRANSP; 9e58: 2400 movs r4, #0 9e5a: e67c b.n 9b56 if(abs_x + len < 0) return LV_DRAW_MASK_RES_TRANSP; 9e5c: 2400 movs r4, #0 9e5e: e67a b.n 9b56 return LV_DRAW_MASK_RES_TRANSP; 9e60: 2400 movs r4, #0 9e62: e678 b.n 9b56 y_at_x = (int32_t)((int32_t)p->yx_steep * (abs_x + len)) >> 10; 9e64: 001f movs r7, r3 9e66: 18eb adds r3, r5, r3 9e68: 4359 muls r1, r3 9e6a: 1289 asrs r1, r1, #10 if(y_at_x < abs_y) { 9e6c: 428a cmp r2, r1 9e6e: dd00 ble.n 9e72 9e70: e68c b.n 9b8c if(p->yx_steep > 0) xe = ((abs_y << 8) * p->xy_steep) >> 10; 9e72: 0212 lsls r2, r2, #8 9e74: 69a3 ldr r3, [r4, #24] 9e76: 435a muls r2, r3 9e78: 1292 asrs r2, r2, #10 int32_t xei = xe >> 8; 9e7a: 1211 asrs r1, r2, #8 int32_t xef = xe & 0xFF; 9e7c: 23ff movs r3, #255 ; 0xff 9e7e: 401a ands r2, r3 if(xef == 0) px_h = 255; 9e80: d039 beq.n 9ef6 else px_h = 255 - (((255 - xef) * p->spx) >> 8); 9e82: 469c mov ip, r3 9e84: 1a9b subs r3, r3, r2 9e86: 4698 mov r8, r3 9e88: 6a63 ldr r3, [r4, #36] ; 0x24 9e8a: 4642 mov r2, r8 9e8c: 4353 muls r3, r2 9e8e: 121b asrs r3, r3, #8 9e90: 4662 mov r2, ip 9e92: 1ad2 subs r2, r2, r3 int32_t k = xei - abs_x; 9e94: 1b49 subs r1, r1, r5 9e96: 468c mov ip, r1 if(k >= 0 && k < len) { 9e98: d41a bmi.n 9ed0 9e9a: 42b9 cmp r1, r7 9e9c: da18 bge.n 9ed0 m = 255 - (((255 - xef) * (255 - px_h)) >> 9); 9e9e: 4641 mov r1, r8 9ea0: 434b muls r3, r1 9ea2: 125b asrs r3, r3, #9 9ea4: b2db uxtb r3, r3 if(p->inv) m = 255 - m; 9ea6: 4659 mov r1, fp 9ea8: 0789 lsls r1, r1, #30 9eaa: d401 bmi.n 9eb0 m = 255 - (((255 - xef) * (255 - px_h)) >> 9); 9eac: 43db mvns r3, r3 9eae: b2db uxtb r3, r3 mask_buf[k] = mask_mix(mask_buf[k], m); 9eb0: 4661 mov r1, ip 9eb2: 1845 adds r5, r0, r1 9eb4: 7829 ldrb r1, [r5, #0] if(mask_new >= LV_OPA_MAX) return mask_act; 9eb6: 2bf9 cmp r3, #249 ; 0xf9 9eb8: d809 bhi.n 9ece if(mask_new <= LV_OPA_MIN) return 0; 9eba: 2b05 cmp r3, #5 9ebc: d800 bhi.n 9ec0 9ebe: e673 b.n 9ba8 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); 9ec0: 434b muls r3, r1 9ec2: 0219 lsls r1, r3, #8 9ec4: 18c9 adds r1, r1, r3 9ec6: 01c9 lsls r1, r1, #7 9ec8: 18cb adds r3, r1, r3 9eca: 0ddb lsrs r3, r3, #23 9ecc: b2d9 uxtb r1, r3 mask_buf[k] = mask_mix(mask_buf[k], m); 9ece: 7029 strb r1, [r5, #0] k++; 9ed0: 4663 mov r3, ip 9ed2: 1c5d adds r5, r3, #1 if(p->inv) m = 255 - m; 9ed4: 2328 movs r3, #40 ; 0x28 9ed6: 4698 mov r8, r3 9ed8: 2602 movs r6, #2 9eda: e66f b.n 9bbc y_at_x = (int32_t)((int32_t)p->yx_steep * (abs_x + len)) >> 10; 9edc: 001f movs r7, r3 9ede: 195b adds r3, r3, r5 9ee0: 4359 muls r1, r3 9ee2: 1289 asrs r1, r1, #10 if(y_at_x > abs_y) { 9ee4: 4291 cmp r1, r2 9ee6: dd00 ble.n 9eea 9ee8: e657 b.n 9b9a else xe = (((abs_y + 1) << 8) * p->xy_steep) >> 10; 9eea: 3201 adds r2, #1 9eec: 0212 lsls r2, r2, #8 9eee: 69a3 ldr r3, [r4, #24] 9ef0: 435a muls r2, r3 9ef2: 1292 asrs r2, r2, #10 9ef4: e7c1 b.n 9e7a int32_t k = xei - abs_x; 9ef6: 1b4d subs r5, r1, r5 9ef8: 46ac mov ip, r5 if(xef == 0) px_h = 255; 9efa: 22ff movs r2, #255 ; 0xff 9efc: e7ea b.n 9ed4 y_inters = (xsf * (-p->yx_steep)) >> 10; 9efe: 69e2 ldr r2, [r4, #28] 9f00: 4252 negs r2, r2 9f02: 434a muls r2, r1 9f04: 1292 asrs r2, r2, #10 if(k >= 0 && k < len) { 9f06: 2e00 cmp r6, #0 9f08: db19 blt.n 9f3e 9f0a: 45c8 cmp r8, r9 9f0c: dd17 ble.n 9f3e m = (y_inters * xsf) >> 9; 9f0e: 4351 muls r1, r2 9f10: 1249 asrs r1, r1, #9 9f12: b2c9 uxtb r1, r1 if(p->inv) m = 255 - m; 9f14: 465d mov r5, fp 9f16: 07ad lsls r5, r5, #30 9f18: d501 bpl.n 9f1e 9f1a: 43c9 mvns r1, r1 9f1c: b2c9 uxtb r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 9f1e: 464d mov r5, r9 9f20: 1946 adds r6, r0, r5 9f22: 7835 ldrb r5, [r6, #0] if(mask_new >= LV_OPA_MAX) return mask_act; 9f24: 29f9 cmp r1, #249 ; 0xf9 9f26: d809 bhi.n 9f3c if(mask_new <= LV_OPA_MIN) return 0; 9f28: 2905 cmp r1, #5 9f2a: d800 bhi.n 9f2e 9f2c: e762 b.n 9df4 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); 9f2e: 4369 muls r1, r5 9f30: 020d lsls r5, r1, #8 9f32: 186d adds r5, r5, r1 9f34: 01ed lsls r5, r5, #7 9f36: 1869 adds r1, r5, r1 9f38: 0dc9 lsrs r1, r1, #23 9f3a: b2cd uxtb r5, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 9f3c: 7035 strb r5, [r6, #0] if(k >= 0 && k < len) { 9f3e: 4649 mov r1, r9 9f40: 3901 subs r1, #1 9f42: d41f bmi.n 9f84 9f44: 4588 cmp r8, r1 9f46: dd1d ble.n 9f84 int32_t x_inters = ((255 - y_inters) * (-p->xy_steep)) >> 10; 9f48: 25ff movs r5, #255 ; 0xff 9f4a: 1aaa subs r2, r5, r2 9f4c: 69a5 ldr r5, [r4, #24] 9f4e: 426d negs r5, r5 9f50: 4355 muls r5, r2 9f52: 12ad asrs r5, r5, #10 m = 255 - (((255 - y_inters) * x_inters) >> 9); 9f54: 436a muls r2, r5 9f56: 1252 asrs r2, r2, #9 9f58: b2d2 uxtb r2, r2 if(p->inv) m = 255 - m; 9f5a: 2528 movs r5, #40 ; 0x28 9f5c: 5d65 ldrb r5, [r4, r5] 9f5e: 07ad lsls r5, r5, #30 9f60: d401 bmi.n 9f66 m = 255 - (((255 - y_inters) * x_inters) >> 9); 9f62: 43d2 mvns r2, r2 9f64: b2d2 uxtb r2, r2 mask_buf[k] = mask_mix(mask_buf[k], m); 9f66: 1846 adds r6, r0, r1 9f68: 7835 ldrb r5, [r6, #0] if(mask_new >= LV_OPA_MAX) return mask_act; 9f6a: 2af9 cmp r2, #249 ; 0xf9 9f6c: d809 bhi.n 9f82 if(mask_new <= LV_OPA_MIN) return 0; 9f6e: 2a05 cmp r2, #5 9f70: d800 bhi.n 9f74 9f72: e741 b.n 9df8 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); 9f74: 436a muls r2, r5 9f76: 0215 lsls r5, r2, #8 9f78: 18ad adds r5, r5, r2 9f7a: 01ed lsls r5, r5, #7 9f7c: 18aa adds r2, r5, r2 9f7e: 0dd2 lsrs r2, r2, #23 9f80: b2d5 uxtb r5, r2 mask_buf[k] = mask_mix(mask_buf[k], m); 9f82: 7035 strb r5, [r6, #0] if(p->inv) { 9f84: 2228 movs r2, #40 ; 0x28 9f86: 5ca2 ldrb r2, [r4, r2] 9f88: 0792 lsls r2, r2, #30 9f8a: d400 bmi.n 9f8e 9f8c: e738 b.n 9e00 return LV_DRAW_MASK_RES_CHANGED; 9f8e: 2402 movs r4, #2 if(k > len) k = len; 9f90: 4588 cmp r8, r1 9f92: da00 bge.n 9f96 9f94: e5df b.n 9b56 else if(k > 0) _lv_memset_00(&mask_buf[0], k); 9f96: 2900 cmp r1, #0 9f98: dc00 bgt.n 9f9c 9f9a: e5dc b.n 9b56 9f9c: 4b01 ldr r3, [pc, #4] ; (9fa4 ) 9f9e: 4798 blx r3 9fa0: e5d9 b.n 9b56 9fa2: 46c0 nop ; (mov r8, r8) 9fa4: 0001104d .word 0x0001104d 00009fa8 : { 9fa8: b5f0 push {r4, r5, r6, r7, lr} 9faa: 46de mov lr, fp 9fac: 4657 mov r7, sl 9fae: 464e mov r6, r9 9fb0: 4645 mov r5, r8 9fb2: b5e0 push {r5, r6, r7, lr} 9fb4: b08d sub sp, #52 ; 0x34 9fb6: 9001 str r0, [sp, #4] 9fb8: 4689 mov r9, r1 9fba: 9300 str r3, [sp, #0] 9fbc: 9d16 ldr r5, [sp, #88] ; 0x58 bool outer = p->cfg.outer; 9fbe: 7cac ldrb r4, [r5, #18] 9fc0: 07e4 lsls r4, r4, #31 9fc2: 0fe4 lsrs r4, r4, #31 int32_t radius = p->cfg.radius; 9fc4: 2310 movs r3, #16 9fc6: 5eee ldrsh r6, [r5, r3] lv_area_copy(&rect, &p->cfg.rect); 9fc8: 002f movs r7, r5 9fca: 3708 adds r7, #8 9fcc: 2300 movs r3, #0 *d8 = *s8; 9fce: a80a add r0, sp, #40 ; 0x28 9fd0: 5cf9 ldrb r1, [r7, r3] 9fd2: 5419 strb r1, [r3, r0] 9fd4: 3301 adds r3, #1 while(len) { 9fd6: 2b08 cmp r3, #8 9fd8: d1fa bne.n 9fd0 if(outer == false) { 9fda: 2c00 cmp r4, #0 9fdc: d145 bne.n a06a if(abs_y < rect.y1 || abs_y > rect.y2) { 9fde: ab0a add r3, sp, #40 ; 0x28 9fe0: 2102 movs r1, #2 9fe2: 5e5b ldrsh r3, [r3, r1] return LV_DRAW_MASK_RES_TRANSP; 9fe4: 2000 movs r0, #0 if(abs_y < rect.y1 || abs_y > rect.y2) { 9fe6: 4293 cmp r3, r2 9fe8: dc4a bgt.n a080 9fea: ab0a add r3, sp, #40 ; 0x28 9fec: 2106 movs r1, #6 9fee: 5e5b ldrsh r3, [r3, r1] 9ff0: 4293 cmp r3, r2 9ff2: db45 blt.n a080 int32_t radius = p->cfg.radius; 9ff4: 46b4 mov ip, r6 if((abs_x >= rect.x1 + radius && abs_x + len <= rect.x2 - radius) || 9ff6: ab0a add r3, sp, #40 ; 0x28 9ff8: 2000 movs r0, #0 9ffa: 5e1b ldrsh r3, [r3, r0] 9ffc: 469a mov sl, r3 9ffe: 18f3 adds r3, r6, r3 a000: 4599 cmp r9, r3 a002: db08 blt.n a016 a004: 9b00 ldr r3, [sp, #0] a006: 444b add r3, r9 a008: 0018 movs r0, r3 a00a: ab0a add r3, sp, #40 ; 0x28 a00c: 2104 movs r1, #4 a00e: 5e5b ldrsh r3, [r3, r1] a010: 1b9b subs r3, r3, r6 a012: 4298 cmp r0, r3 a014: dd0b ble.n a02e (abs_y >= rect.y1 + radius && abs_y <= rect.y2 - radius)) { a016: a80a add r0, sp, #40 ; 0x28 a018: 2702 movs r7, #2 a01a: 5fc0 ldrsh r0, [r0, r7] a01c: 1987 adds r7, r0, r6 if((abs_x >= rect.x1 + radius && abs_x + len <= rect.x2 - radius) || a01e: 42ba cmp r2, r7 a020: db62 blt.n a0e8 (abs_y >= rect.y1 + radius && abs_y <= rect.y2 - radius)) { a022: af0a add r7, sp, #40 ; 0x28 a024: 2106 movs r1, #6 a026: 5e7f ldrsh r7, [r7, r1] a028: 1bbf subs r7, r7, r6 a02a: 42ba cmp r2, r7 a02c: dc5c bgt.n a0e8 if(outer == false) { a02e: 2c00 cmp r4, #0 a030: d13c bne.n a0ac int32_t last = rect.x1 - abs_x; a032: 4653 mov r3, sl a034: 464a mov r2, r9 a036: 1a9c subs r4, r3, r2 if(last > len) return LV_DRAW_MASK_RES_TRANSP; a038: 9d00 ldr r5, [sp, #0] a03a: 2000 movs r0, #0 a03c: 42ac cmp r4, r5 a03e: dc1f bgt.n a080 if(last >= 0) { a040: 2c00 cmp r4, #0 a042: db03 blt.n a04c _lv_memset_00(&mask_buf[0], last); a044: 0021 movs r1, r4 a046: 9801 ldr r0, [sp, #4] a048: 4ba2 ldr r3, [pc, #648] ; (a2d4 ) a04a: 4798 blx r3 int32_t first = rect.x2 - abs_x + 1; a04c: ab0a add r3, sp, #40 ; 0x28 a04e: 2004 movs r0, #4 a050: 5e18 ldrsh r0, [r3, r0] a052: 464b mov r3, r9 a054: 1ac0 subs r0, r0, r3 a056: 3001 adds r0, #1 if(first <= 0) return LV_DRAW_MASK_RES_TRANSP; a058: 2800 cmp r0, #0 a05a: dc00 bgt.n a05e a05c: e20b b.n a476 else if(first < len) { a05e: 4285 cmp r5, r0 a060: dc15 bgt.n a08e if(last == 0 && first == len) return LV_DRAW_MASK_RES_FULL_COVER; a062: 2c00 cmp r4, #0 a064: d01e beq.n a0a4 else return LV_DRAW_MASK_RES_CHANGED; a066: 2002 movs r0, #2 a068: e00a b.n a080 if(abs_y < rect.y1 || abs_y > rect.y2) { a06a: ab0a add r3, sp, #40 ; 0x28 a06c: 2102 movs r1, #2 a06e: 5e5b ldrsh r3, [r3, r1] return LV_DRAW_MASK_RES_FULL_COVER; a070: 2001 movs r0, #1 if(abs_y < rect.y1 || abs_y > rect.y2) { a072: 4293 cmp r3, r2 a074: dc04 bgt.n a080 a076: ab0a add r3, sp, #40 ; 0x28 a078: 2106 movs r1, #6 a07a: 5e5b ldrsh r3, [r3, r1] a07c: 4293 cmp r3, r2 a07e: dab9 bge.n 9ff4 } a080: b00d add sp, #52 ; 0x34 a082: bc3c pop {r2, r3, r4, r5} a084: 4690 mov r8, r2 a086: 4699 mov r9, r3 a088: 46a2 mov sl, r4 a08a: 46ab mov fp, r5 a08c: bdf0 pop {r4, r5, r6, r7, pc} _lv_memset_00(&mask_buf[first], len - first); a08e: 9b00 ldr r3, [sp, #0] a090: 1a19 subs r1, r3, r0 a092: 9b01 ldr r3, [sp, #4] a094: 469c mov ip, r3 a096: 4460 add r0, ip a098: 4b8e ldr r3, [pc, #568] ; (a2d4 ) a09a: 4798 blx r3 if(last == 0 && first == len) return LV_DRAW_MASK_RES_FULL_COVER; a09c: 2c00 cmp r4, #0 a09e: d1e2 bne.n a066 else return LV_DRAW_MASK_RES_CHANGED; a0a0: 2002 movs r0, #2 a0a2: e7ed b.n a080 if(last == 0 && first == len) return LV_DRAW_MASK_RES_FULL_COVER; a0a4: 4285 cmp r5, r0 a0a6: d1de bne.n a066 a0a8: 2001 movs r0, #1 a0aa: e7e9 b.n a080 int32_t first = rect.x1 - abs_x; a0ac: 4653 mov r3, sl a0ae: 464a mov r2, r9 a0b0: 1a9b subs r3, r3, r2 a0b2: 43da mvns r2, r3 a0b4: 17d2 asrs r2, r2, #31 a0b6: 4013 ands r3, r2 if(first <= len) { a0b8: 9a00 ldr r2, [sp, #0] return LV_DRAW_MASK_RES_CHANGED; a0ba: 2002 movs r0, #2 if(first <= len) { a0bc: 4293 cmp r3, r2 a0be: dcdf bgt.n a080 int32_t last = rect.x2 - abs_x - first + 1; a0c0: a90a add r1, sp, #40 ; 0x28 a0c2: 2004 movs r0, #4 a0c4: 5e09 ldrsh r1, [r1, r0] a0c6: 4648 mov r0, r9 a0c8: 1a09 subs r1, r1, r0 a0ca: 1ac9 subs r1, r1, r3 a0cc: 3101 adds r1, #1 if(first + last > len) last = len - first; a0ce: 1858 adds r0, r3, r1 a0d0: 4282 cmp r2, r0 a0d2: da00 bge.n a0d6 a0d4: 1ad1 subs r1, r2, r3 return LV_DRAW_MASK_RES_CHANGED; a0d6: 2002 movs r0, #2 if(last >= 0) { a0d8: 2900 cmp r1, #0 a0da: dbd1 blt.n a080 _lv_memset_00(&mask_buf[first], last); a0dc: 9a01 ldr r2, [sp, #4] a0de: 18d0 adds r0, r2, r3 a0e0: 4b7c ldr r3, [pc, #496] ; (a2d4 ) a0e2: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; a0e4: 2002 movs r0, #2 a0e6: e7cb b.n a080 a0e8: ab0a add r3, sp, #40 ; 0x28 a0ea: 2104 movs r1, #4 a0ec: 5e5f ldrsh r7, [r3, r1] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a0ee: b280 uxth r0, r0 a0f0: 88db ldrh r3, [r3, #6] a0f2: 3301 adds r3, #1 a0f4: 1a1b subs r3, r3, r0 int32_t h = lv_area_get_height(&rect); a0f6: b21b sxth r3, r3 abs_y -= rect.y1; a0f8: 1a12 subs r2, r2, r0 uint32_t r2 = p->cfg.radius * p->cfg.radius; a0fa: 0030 movs r0, r6 a0fc: 4370 muls r0, r6 a0fe: 4680 mov r8, r0 if(abs_y < radius || abs_y > h - radius - 1) { a100: b212 sxth r2, r2 a102: 4594 cmp ip, r2 a104: dd00 ble.n a108 a106: e1e0 b.n a4ca a108: 1b98 subs r0, r3, r6 a10a: 3801 subs r0, #1 a10c: 4282 cmp r2, r0 a10e: dd00 ble.n a112 a110: e1b3 b.n a47a return LV_DRAW_MASK_RES_CHANGED; a112: 2002 movs r0, #2 a114: e7b4 b.n a080 x0.f = p->y_prev_x.f; a116: 8b6b ldrh r3, [r5, #26] a118: aa06 add r2, sp, #24 a11a: 8053 strh r3, [r2, #2] x0.i = p->y_prev_x.i; a11c: 8b2b ldrh r3, [r5, #24] a11e: 8013 strh r3, [r2, #0] a120: e1e9 b.n a4f6 if(radius <= 256) sqrt_mask = 0x800; a122: 2180 movs r1, #128 ; 0x80 a124: 0109 lsls r1, r1, #4 a126: 9102 str r1, [sp, #8] a128: e1af b.n a48a x1.f = p->y_prev_x.f; a12a: ab07 add r3, sp, #28 a12c: 8b6a ldrh r2, [r5, #26] a12e: 805a strh r2, [r3, #2] x1.i = p->y_prev_x.i; a130: 8b2a ldrh r2, [r5, #24] a132: 801a strh r2, [r3, #0] a134: e1b8 b.n a4a8 if(x0.i == x1.i - 1 && x1.f == 0) { a136: a907 add r1, sp, #28 a138: 8849 ldrh r1, [r1, #2] a13a: 2900 cmp r1, #0 a13c: d000 beq.n a140 a13e: e1f5 b.n a52c x1.i--; a140: a907 add r1, sp, #28 a142: 3a01 subs r2, #1 a144: 800a strh r2, [r1, #0] x1.f = 0xFF; a146: 22ff movs r2, #255 ; 0xff a148: 804a strh r2, [r1, #2] a14a: e1ef b.n a52c lv_opa_t m = (x0.f + x1.f) >> 1; a14c: a906 add r1, sp, #24 a14e: 8849 ldrh r1, [r1, #2] a150: ad07 add r5, sp, #28 a152: 886d ldrh r5, [r5, #2] a154: 1949 adds r1, r1, r5 a156: 1049 asrs r1, r1, #1 a158: b2cf uxtb r7, r1 if(outer) m = 255 - m; a15a: 2c00 cmp r4, #0 a15c: d001 beq.n a162 a15e: 43ff mvns r7, r7 a160: b2ff uxtb r7, r7 int32_t ofs = radius - x0.i - 1; a162: 1af3 subs r3, r6, r3 a164: 3b01 subs r3, #1 if(kl >= 0 && kl < len) { a166: 18c1 adds r1, r0, r3 a168: d412 bmi.n a190 a16a: 9d00 ldr r5, [sp, #0] a16c: 42a9 cmp r1, r5 a16e: da0f bge.n a190 mask_buf[kl] = mask_mix(mask_buf[kl], m); a170: 9d01 ldr r5, [sp, #4] a172: 186e adds r6, r5, r1 a174: 7835 ldrb r5, [r6, #0] if(mask_new >= LV_OPA_MAX) return mask_act; a176: 2ff9 cmp r7, #249 ; 0xf9 a178: d809 bhi.n a18e if(mask_new <= LV_OPA_MIN) return 0; a17a: 2f05 cmp r7, #5 a17c: d936 bls.n a1ec return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); a17e: 437d muls r5, r7 a180: 46ac mov ip, r5 a182: 022d lsls r5, r5, #8 a184: 4465 add r5, ip a186: 01ed lsls r5, r5, #7 a188: 4465 add r5, ip a18a: 0ded lsrs r5, r5, #23 a18c: b2ed uxtb r5, r5 mask_buf[kl] = mask_mix(mask_buf[kl], m); a18e: 7035 strb r5, [r6, #0] int32_t kr = k + (w - ofs - 1); a190: 1ad2 subs r2, r2, r3 a192: 3a01 subs r2, #1 if(kr >= 0 && kr < len) { a194: 1815 adds r5, r2, r0 a196: d411 bmi.n a1bc a198: 9b00 ldr r3, [sp, #0] a19a: 429d cmp r5, r3 a19c: da0e bge.n a1bc mask_buf[kr] = mask_mix(mask_buf[kr], m); a19e: 9b01 ldr r3, [sp, #4] a1a0: 195a adds r2, r3, r5 a1a2: 7813 ldrb r3, [r2, #0] if(mask_new >= LV_OPA_MAX) return mask_act; a1a4: 2ff9 cmp r7, #249 ; 0xf9 a1a6: d808 bhi.n a1ba if(mask_new <= LV_OPA_MIN) return 0; a1a8: 2f05 cmp r7, #5 a1aa: d921 bls.n a1f0 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); a1ac: 435f muls r7, r3 a1ae: 023b lsls r3, r7, #8 a1b0: 19db adds r3, r3, r7 a1b2: 01db lsls r3, r3, #7 a1b4: 19df adds r7, r3, r7 a1b6: 0dff lsrs r7, r7, #23 a1b8: b2fb uxtb r3, r7 mask_buf[kr] = mask_mix(mask_buf[kr], m); a1ba: 7013 strb r3, [r2, #0] if(outer == false) { a1bc: 2c00 cmp r4, #0 a1be: d019 beq.n a1f4 kl++; a1c0: 1c48 adds r0, r1, #1 a1c2: 43c3 mvns r3, r0 a1c4: 17db asrs r3, r3, #31 a1c6: 4018 ands r0, r3 if(len_tmp + first > len) len_tmp = len - first; a1c8: 9a00 ldr r2, [sp, #0] a1ca: 0013 movs r3, r2 a1cc: 1a11 subs r1, r2, r0 a1ce: 4295 cmp r5, r2 a1d0: dc00 bgt.n a1d4 int32_t len_tmp = kr - first; a1d2: 1a29 subs r1, r5, r0 if(first < len && len_tmp >= 0) { a1d4: 4298 cmp r0, r3 a1d6: db00 blt.n a1da a1d8: e12d b.n a436 a1da: 2900 cmp r1, #0 a1dc: da00 bge.n a1e0 a1de: e12a b.n a436 _lv_memset_00(&mask_buf[first], len_tmp); a1e0: 9b01 ldr r3, [sp, #4] a1e2: 469c mov ip, r3 a1e4: 4460 add r0, ip a1e6: 4b3b ldr r3, [pc, #236] ; (a2d4 ) a1e8: 4798 blx r3 a1ea: e124 b.n a436 if(mask_new <= LV_OPA_MIN) return 0; a1ec: 2500 movs r5, #0 a1ee: e7ce b.n a18e a1f0: 2300 movs r3, #0 a1f2: e7e2 b.n a1ba if(kl > len) { a1f4: 9c00 ldr r4, [sp, #0] a1f6: 42a1 cmp r1, r4 a1f8: dd00 ble.n a1fc a1fa: e13a b.n a472 if(kl >= 0) { a1fc: 2900 cmp r1, #0 a1fe: db02 blt.n a206 _lv_memset_00(&mask_buf[0], kl); a200: 9801 ldr r0, [sp, #4] a202: 4b34 ldr r3, [pc, #208] ; (a2d4 ) a204: 4798 blx r3 if(kr < 0) { a206: 1c68 adds r0, r5, #1 a208: d500 bpl.n a20c a20a: e132 b.n a472 if(kr <= len) { a20c: 42a0 cmp r0, r4 a20e: dd00 ble.n a212 a210: e111 b.n a436 _lv_memset_00(&mask_buf[kr], len - kr); a212: 9b00 ldr r3, [sp, #0] a214: 1a19 subs r1, r3, r0 a216: 9b01 ldr r3, [sp, #4] a218: 469c mov ip, r3 a21a: 4460 add r0, ip a21c: 4b2d ldr r3, [pc, #180] ; (a2d4 ) a21e: 4798 blx r3 a220: e109 b.n a436 _lv_sqrt(r2 - (i * i), &y_next, sqrt_mask); a222: ad09 add r5, sp, #36 ; 0x24 a224: 9b05 ldr r3, [sp, #20] a226: 0018 movs r0, r3 a228: 4358 muls r0, r3 a22a: 4643 mov r3, r8 a22c: 1a18 subs r0, r3, r0 a22e: 9a02 ldr r2, [sp, #8] a230: 0029 movs r1, r5 a232: 4b29 ldr r3, [pc, #164] ; (a2d8 ) a234: 4798 blx r3 m = 255 - (((255 - x0.f) * (255 - y_next.f)) >> 9); a236: 886a ldrh r2, [r5, #2] a238: ab06 add r3, sp, #24 a23a: 8859 ldrh r1, [r3, #2] a23c: 23ff movs r3, #255 ; 0xff a23e: 1a59 subs r1, r3, r1 a240: 1a9b subs r3, r3, r2 a242: 434b muls r3, r1 a244: 125b asrs r3, r3, #9 a246: b2db uxtb r3, r3 if(outer) m = 255 - m; a248: 2c00 cmp r4, #0 a24a: d101 bne.n a250 m = 255 - (((255 - x0.f) * (255 - y_next.f)) >> 9); a24c: 43db mvns r3, r3 a24e: b2db uxtb r3, r3 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); a250: 9d03 ldr r5, [sp, #12] a252: 2d00 cmp r5, #0 a254: db14 blt.n a280 a256: 9800 ldr r0, [sp, #0] a258: 4285 cmp r5, r0 a25a: da11 bge.n a280 a25c: 9901 ldr r1, [sp, #4] a25e: 0008 movs r0, r1 a260: 46ac mov ip, r5 a262: 4460 add r0, ip a264: 7801 ldrb r1, [r0, #0] if(mask_new >= LV_OPA_MAX) return mask_act; a266: 2bf9 cmp r3, #249 ; 0xf9 a268: d809 bhi.n a27e if(mask_new <= LV_OPA_MIN) return 0; a26a: 2b05 cmp r3, #5 a26c: d92b bls.n a2c6 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); a26e: 4359 muls r1, r3 a270: 000d movs r5, r1 a272: 0209 lsls r1, r1, #8 a274: 1949 adds r1, r1, r5 a276: 01c9 lsls r1, r1, #7 a278: 1949 adds r1, r1, r5 a27a: 0dc9 lsrs r1, r1, #23 a27c: b2c9 uxtb r1, r1 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); a27e: 7001 strb r1, [r0, #0] if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); a280: 9d04 ldr r5, [sp, #16] a282: 2d00 cmp r5, #0 a284: db13 blt.n a2ae a286: 9800 ldr r0, [sp, #0] a288: 4285 cmp r5, r0 a28a: da10 bge.n a2ae a28c: 9901 ldr r1, [sp, #4] a28e: 0008 movs r0, r1 a290: 46ac mov ip, r5 a292: 4460 add r0, ip a294: 7801 ldrb r1, [r0, #0] if(mask_new >= LV_OPA_MAX) return mask_act; a296: 2bf9 cmp r3, #249 ; 0xf9 a298: d808 bhi.n a2ac if(mask_new <= LV_OPA_MIN) return 0; a29a: 2b05 cmp r3, #5 a29c: d915 bls.n a2ca return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); a29e: 434b muls r3, r1 a2a0: 0219 lsls r1, r3, #8 a2a2: 18c9 adds r1, r1, r3 a2a4: 01c9 lsls r1, r1, #7 a2a6: 18c9 adds r1, r1, r3 a2a8: 0dc9 lsrs r1, r1, #23 a2aa: b2c9 uxtb r1, r1 if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); a2ac: 7001 strb r1, [r0, #0] kl--; a2ae: 9b03 ldr r3, [sp, #12] a2b0: 3b01 subs r3, #1 a2b2: 9303 str r3, [sp, #12] kr++; a2b4: 9b04 ldr r3, [sp, #16] a2b6: 3301 adds r3, #1 a2b8: 9304 str r3, [sp, #16] y_prev.f = y_next.f; a2ba: ab08 add r3, sp, #32 a2bc: 805a strh r2, [r3, #2] i++; a2be: 9b05 ldr r3, [sp, #20] a2c0: 3301 adds r3, #1 a2c2: 9305 str r3, [sp, #20] a2c4: e176 b.n a5b4 if(mask_new <= LV_OPA_MIN) return 0; a2c6: 2100 movs r1, #0 a2c8: e7d9 b.n a27e a2ca: 2100 movs r1, #0 a2cc: e7ee b.n a2ac a2ce: 2200 movs r2, #0 a2d0: e03f b.n a352 a2d2: 46c0 nop ; (mov r8, r8) a2d4: 0001104d .word 0x0001104d a2d8: 000109a9 .word 0x000109a9 a2dc: 2200 movs r2, #0 if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); a2de: 9801 ldr r0, [sp, #4] a2e0: 5442 strb r2, [r0, r1] kl--; a2e2: 3c01 subs r4, #1 kr++; a2e4: 2201 movs r2, #1 a2e6: 4694 mov ip, r2 a2e8: 44e2 add sl, ip for(; i <= x1.i; i++) { a2ea: 3701 adds r7, #1 y_prev.f = y_next.f; a2ec: 002e movs r6, r5 for(; i <= x1.i; i++) { a2ee: 455f cmp r7, fp a2f0: d846 bhi.n a380 */ 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); a2f2: 0935 lsrs r5, r6, #4 a2f4: 9b02 ldr r3, [sp, #8] a2f6: 469c mov ip, r3 a2f8: 4465 add r5, ip sqrt_approx(&y_next, &y_prev, r2 - (i * i)); a2fa: 0038 movs r0, r7 a2fc: 4378 muls r0, r7 a2fe: 4643 mov r3, r8 a300: 1a18 subs r0, r3, r0 x = x << 8; /*Upscale for extra precision*/ a302: 0200 lsls r0, r0, #8 uint32_t raw2 = raw * raw; a304: 002b movs r3, r5 a306: 436b muls r3, r5 int32_t d = x - raw2; a308: 1ac0 subs r0, r0, r3 d = (int32_t)d / (int32_t)(2 * raw) + raw; a30a: 0069 lsls r1, r5, #1 a30c: 4bb4 ldr r3, [pc, #720] ; (a5e0 ) a30e: 4798 blx r3 a310: 1945 adds r5, r0, r5 q->i = d >> 4; a312: 112b asrs r3, r5, #4 a314: b29b uxth r3, r3 q->f = (d & 0xF) << 4; a316: 012d lsls r5, r5, #4 a318: 22ff movs r2, #255 ; 0xff a31a: 4015 ands r5, r2 m = (y_prev.f + y_next.f) >> 1; a31c: 1976 adds r6, r6, r5 a31e: 1076 asrs r6, r6, #1 a320: b2f6 uxtb r6, r6 if(outer) m = 255 - m; a322: 464a mov r2, r9 a324: 2a00 cmp r2, #0 a326: d001 beq.n a32c a328: 43f6 mvns r6, r6 a32a: b2f6 uxtb r6, r6 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); a32c: 2c00 cmp r4, #0 a32e: db12 blt.n a356 a330: 9a00 ldr r2, [sp, #0] a332: 42a2 cmp r2, r4 a334: dd0f ble.n a356 a336: 0020 movs r0, r4 a338: 9a01 ldr r2, [sp, #4] a33a: 5d12 ldrb r2, [r2, r4] if(mask_new >= LV_OPA_MAX) return mask_act; a33c: 2ef9 cmp r6, #249 ; 0xf9 a33e: d808 bhi.n a352 if(mask_new <= LV_OPA_MIN) return 0; a340: 2e05 cmp r6, #5 a342: d9c4 bls.n a2ce return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); a344: 4372 muls r2, r6 a346: 0211 lsls r1, r2, #8 a348: 1889 adds r1, r1, r2 a34a: 01c9 lsls r1, r1, #7 a34c: 188a adds r2, r1, r2 a34e: 0dd2 lsrs r2, r2, #23 a350: b2d2 uxtb r2, r2 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); a352: 9901 ldr r1, [sp, #4] a354: 540a strb r2, [r1, r0] if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); a356: 4652 mov r2, sl a358: 2a00 cmp r2, #0 a35a: dbc2 blt.n a2e2 a35c: 9a00 ldr r2, [sp, #0] a35e: 4552 cmp r2, sl a360: ddbf ble.n a2e2 a362: 4651 mov r1, sl a364: 9a01 ldr r2, [sp, #4] a366: 5c52 ldrb r2, [r2, r1] if(mask_new >= LV_OPA_MAX) return mask_act; a368: 2ef9 cmp r6, #249 ; 0xf9 a36a: d8b8 bhi.n a2de if(mask_new <= LV_OPA_MIN) return 0; a36c: 2e05 cmp r6, #5 a36e: d9b5 bls.n a2dc return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); a370: 4356 muls r6, r2 a372: 0232 lsls r2, r6, #8 a374: 1992 adds r2, r2, r6 a376: 01d2 lsls r2, r2, #7 a378: 1996 adds r6, r2, r6 a37a: 0df6 lsrs r6, r6, #23 a37c: b2f2 uxtb r2, r6 a37e: e7ae b.n a2de a380: 464c mov r4, r9 a382: 465a mov r2, fp a384: 43d2 mvns r2, r2 a386: 9e05 ldr r6, [sp, #20] a388: 46b4 mov ip, r6 a38a: 4462 add r2, ip a38c: 9903 ldr r1, [sp, #12] a38e: 468c mov ip, r1 a390: 4494 add ip, r2 a392: 4662 mov r2, ip a394: 9203 str r2, [sp, #12] a396: 465a mov r2, fp a398: 1c50 adds r0, r2, #1 a39a: 9a04 ldr r2, [sp, #16] a39c: 4694 mov ip, r2 a39e: 4460 add r0, ip a3a0: 1b82 subs r2, r0, r6 a3a2: 9204 str r2, [sp, #16] a3a4: aa08 add r2, sp, #32 a3a6: 8055 strh r5, [r2, #2] a3a8: aa09 add r2, sp, #36 ; 0x24 a3aa: 8013 strh r3, [r2, #0] a3ac: 8055 strh r5, [r2, #2] if(y_prev.f) { a3ae: ab08 add r3, sp, #32 a3b0: 885b ldrh r3, [r3, #2] a3b2: 2b00 cmp r3, #0 a3b4: d03d beq.n a432 m = (y_prev.f * x1.f) >> 9; a3b6: aa07 add r2, sp, #28 a3b8: 8852 ldrh r2, [r2, #2] a3ba: 4353 muls r3, r2 a3bc: 125b asrs r3, r3, #9 a3be: b2db uxtb r3, r3 if(outer) m = 255 - m; a3c0: 2c00 cmp r4, #0 a3c2: d001 beq.n a3c8 a3c4: 43db mvns r3, r3 a3c6: b2db uxtb r3, r3 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); a3c8: 9a03 ldr r2, [sp, #12] a3ca: 2a00 cmp r2, #0 a3cc: db14 blt.n a3f8 a3ce: 9900 ldr r1, [sp, #0] a3d0: 0008 movs r0, r1 a3d2: 4290 cmp r0, r2 a3d4: dd10 ble.n a3f8 a3d6: 9901 ldr r1, [sp, #4] a3d8: 4694 mov ip, r2 a3da: 4461 add r1, ip a3dc: 0008 movs r0, r1 a3de: 780a ldrb r2, [r1, #0] if(mask_new >= LV_OPA_MAX) return mask_act; a3e0: 2bf9 cmp r3, #249 ; 0xf9 a3e2: d808 bhi.n a3f6 if(mask_new <= LV_OPA_MIN) return 0; a3e4: 2b05 cmp r3, #5 a3e6: d928 bls.n a43a return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); a3e8: 435a muls r2, r3 a3ea: 0211 lsls r1, r2, #8 a3ec: 1889 adds r1, r1, r2 a3ee: 01c9 lsls r1, r1, #7 a3f0: 188a adds r2, r1, r2 a3f2: 0dd2 lsrs r2, r2, #23 a3f4: b2d2 uxtb r2, r2 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); a3f6: 7002 strb r2, [r0, #0] if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); a3f8: 9a04 ldr r2, [sp, #16] a3fa: 2a00 cmp r2, #0 a3fc: db13 blt.n a426 a3fe: 9900 ldr r1, [sp, #0] a400: 0008 movs r0, r1 a402: 4290 cmp r0, r2 a404: dd0f ble.n a426 a406: 9901 ldr r1, [sp, #4] a408: 4694 mov ip, r2 a40a: 4461 add r1, ip a40c: 780a ldrb r2, [r1, #0] if(mask_new >= LV_OPA_MAX) return mask_act; a40e: 2bf9 cmp r3, #249 ; 0xf9 a410: d808 bhi.n a424 if(mask_new <= LV_OPA_MIN) return 0; a412: 2b05 cmp r3, #5 a414: d913 bls.n a43e return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); a416: 4353 muls r3, r2 a418: 021a lsls r2, r3, #8 a41a: 18d2 adds r2, r2, r3 a41c: 01d2 lsls r2, r2, #7 a41e: 18d3 adds r3, r2, r3 a420: 0ddb lsrs r3, r3, #23 a422: b2da uxtb r2, r3 if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); a424: 700a strb r2, [r1, #0] kl--; a426: 9b03 ldr r3, [sp, #12] a428: 3b01 subs r3, #1 a42a: 9303 str r3, [sp, #12] kr++; a42c: 9b04 ldr r3, [sp, #16] a42e: 3301 adds r3, #1 a430: 9304 str r3, [sp, #16] if(outer == 0) { a432: 2c00 cmp r4, #0 a434: d005 beq.n a442 return LV_DRAW_MASK_RES_CHANGED; a436: 2002 movs r0, #2 a438: e622 b.n a080 if(mask_new <= LV_OPA_MIN) return 0; a43a: 2200 movs r2, #0 a43c: e7db b.n a3f6 a43e: 2200 movs r2, #0 a440: e7f0 b.n a424 kl++; a442: 9903 ldr r1, [sp, #12] a444: 3101 adds r1, #1 if(kl > len) { a446: 9c00 ldr r4, [sp, #0] a448: 42a1 cmp r1, r4 a44a: dc12 bgt.n a472 if(kl >= 0) _lv_memset_00(&mask_buf[0], kl); a44c: 2900 cmp r1, #0 a44e: db02 blt.n a456 a450: 9801 ldr r0, [sp, #4] a452: 4b64 ldr r3, [pc, #400] ; (a5e4 ) a454: 4798 blx r3 if(kr < 0) { a456: 9b04 ldr r3, [sp, #16] a458: 2b00 cmp r3, #0 a45a: db0a blt.n a472 if(kr < len) _lv_memset_00(&mask_buf[kr], len - kr); a45c: 42a3 cmp r3, r4 a45e: daea bge.n a436 a460: 9a00 ldr r2, [sp, #0] a462: 1ad1 subs r1, r2, r3 a464: 9a01 ldr r2, [sp, #4] a466: 469c mov ip, r3 a468: 4462 add r2, ip a46a: 0010 movs r0, r2 a46c: 4b5d ldr r3, [pc, #372] ; (a5e4 ) a46e: 4798 blx r3 a470: e7e1 b.n a436 return LV_DRAW_MASK_RES_TRANSP; a472: 2000 movs r0, #0 a474: e604 b.n a080 if(first <= 0) return LV_DRAW_MASK_RES_TRANSP; a476: 2000 movs r0, #0 a478: e602 b.n a080 if(radius <= 256) sqrt_mask = 0x800; a47a: 2080 movs r0, #128 ; 0x80 a47c: 0040 lsls r0, r0, #1 a47e: 4584 cmp ip, r0 a480: dc00 bgt.n a484 a482: e64e b.n a122 a484: 2180 movs r1, #128 ; 0x80 a486: 0209 lsls r1, r1, #8 a488: 9102 str r1, [sp, #8] y = radius - (h - abs_y) + 1; a48a: 1a9a subs r2, r3, r2 a48c: 1ab0 subs r0, r6, r2 a48e: 1c43 adds r3, r0, #1 a490: 469b mov fp, r3 if((y - 1) == p->y_prev) { a492: 696b ldr r3, [r5, #20] a494: 4298 cmp r0, r3 a496: d100 bne.n a49a a498: e647 b.n a12a _lv_sqrt(r2 - ((y - 1) * (y - 1)), &x1, sqrt_mask); a49a: 4340 muls r0, r0 a49c: 4643 mov r3, r8 a49e: 1a18 subs r0, r3, r0 a4a0: 9a02 ldr r2, [sp, #8] a4a2: a907 add r1, sp, #28 a4a4: 4b50 ldr r3, [pc, #320] ; (a5e8 ) a4a6: 4798 blx r3 _lv_sqrt(r2 - (y * y), &x0, sqrt_mask); a4a8: 4658 mov r0, fp a4aa: 4340 muls r0, r0 a4ac: 4643 mov r3, r8 a4ae: 1a18 subs r0, r3, r0 a4b0: 9a02 ldr r2, [sp, #8] a4b2: a906 add r1, sp, #24 a4b4: 4b4c ldr r3, [pc, #304] ; (a5e8 ) a4b6: 4798 blx r3 p->y_prev = y; a4b8: 465b mov r3, fp a4ba: 616b str r3, [r5, #20] p->y_prev_x.f = x0.f; a4bc: ab06 add r3, sp, #24 a4be: 885b ldrh r3, [r3, #2] a4c0: 836b strh r3, [r5, #26] p->y_prev_x.i = x0.i; a4c2: ab06 add r3, sp, #24 a4c4: 881b ldrh r3, [r3, #0] a4c6: 832b strh r3, [r5, #24] a4c8: e028 b.n a51c if(radius <= 256) sqrt_mask = 0x800; a4ca: 2380 movs r3, #128 ; 0x80 a4cc: 005b lsls r3, r3, #1 a4ce: 459c cmp ip, r3 a4d0: dd00 ble.n a4d4 a4d2: e081 b.n a5d8 a4d4: 2380 movs r3, #128 ; 0x80 a4d6: 011b lsls r3, r3, #4 a4d8: 9302 str r3, [sp, #8] y = radius - abs_y; a4da: 1ab3 subs r3, r6, r2 a4dc: 469b mov fp, r3 if(y == p->y_prev) { a4de: 696b ldr r3, [r5, #20] a4e0: 459b cmp fp, r3 a4e2: d100 bne.n a4e6 a4e4: e617 b.n a116 _lv_sqrt(r2 - (y * y), &x0, sqrt_mask); a4e6: 4658 mov r0, fp a4e8: 4340 muls r0, r0 a4ea: 4643 mov r3, r8 a4ec: 1a18 subs r0, r3, r0 a4ee: 9a02 ldr r2, [sp, #8] a4f0: a906 add r1, sp, #24 a4f2: 4b3d ldr r3, [pc, #244] ; (a5e8 ) a4f4: 4798 blx r3 _lv_sqrt(r2 - ((y - 1) * (y - 1)), &x1, sqrt_mask); a4f6: 465b mov r3, fp a4f8: 3b01 subs r3, #1 a4fa: 0018 movs r0, r3 a4fc: 9303 str r3, [sp, #12] a4fe: 4358 muls r0, r3 a500: 4642 mov r2, r8 a502: 1a10 subs r0, r2, r0 a504: 9a02 ldr r2, [sp, #8] a506: a907 add r1, sp, #28 a508: 4b37 ldr r3, [pc, #220] ; (a5e8 ) a50a: 4798 blx r3 p->y_prev = y - 1; a50c: 9b03 ldr r3, [sp, #12] a50e: 616b str r3, [r5, #20] p->y_prev_x.f = x1.f; a510: ab06 add r3, sp, #24 a512: 88db ldrh r3, [r3, #6] a514: 836b strh r3, [r5, #26] p->y_prev_x.i = x1.i; a516: ab06 add r3, sp, #24 a518: 889b ldrh r3, [r3, #4] a51a: 832b strh r3, [r5, #24] if(x0.i == x1.i - 1 && x1.f == 0) { a51c: ab06 add r3, sp, #24 a51e: 881b ldrh r3, [r3, #0] a520: aa07 add r2, sp, #28 a522: 8812 ldrh r2, [r2, #0] a524: 1e51 subs r1, r2, #1 a526: 428b cmp r3, r1 a528: d100 bne.n a52c a52a: e604 b.n a136 int32_t k = rect.x1 - abs_x; /*First relevant coordinate on the of the mask*/ a52c: 4652 mov r2, sl a52e: 4649 mov r1, r9 a530: 1a50 subs r0, r2, r1 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a532: 3701 adds r7, #1 a534: 1aba subs r2, r7, r2 int32_t w = lv_area_get_width(&rect); a536: b212 sxth r2, r2 if(x0.i == x1.i) { a538: a907 add r1, sp, #28 a53a: 8809 ldrh r1, [r1, #0] a53c: 4299 cmp r1, r3 a53e: d100 bne.n a542 a540: e604 b.n a14c int32_t ofs = radius - (x0.i + 1); a542: 3301 adds r3, #1 a544: 1af6 subs r6, r6, r3 int32_t kl = k + ofs; a546: 1983 adds r3, r0, r6 a548: 0019 movs r1, r3 a54a: 9303 str r3, [sp, #12] int32_t kr = k + (w - ofs - 1); a54c: 1b96 subs r6, r2, r6 a54e: 3e01 subs r6, #1 a550: 1833 adds r3, r6, r0 a552: 001d movs r5, r3 a554: 9304 str r3, [sp, #16] if(outer) { a556: 2c00 cmp r4, #0 a558: d012 beq.n a580 int32_t first = kl + 1; a55a: 1c48 adds r0, r1, #1 a55c: 43c3 mvns r3, r0 a55e: 17db asrs r3, r3, #31 a560: 4018 ands r0, r3 if(len_tmp + first > len) len_tmp = len - first; a562: 9e00 ldr r6, [sp, #0] a564: 0033 movs r3, r6 a566: 1a31 subs r1, r6, r0 a568: 42b5 cmp r5, r6 a56a: dc00 bgt.n a56e int32_t len_tmp = kr - first; a56c: 1a29 subs r1, r5, r0 if(first < len && len_tmp >= 0) { a56e: 4298 cmp r0, r3 a570: da06 bge.n a580 a572: 2900 cmp r1, #0 a574: db04 blt.n a580 _lv_memset_00(&mask_buf[first], len_tmp); a576: 9b01 ldr r3, [sp, #4] a578: 469c mov ip, r3 a57a: 4460 add r0, ip a57c: 4b19 ldr r3, [pc, #100] ; (a5e4 ) a57e: 4798 blx r3 uint32_t i = x0.i + 1; a580: ab06 add r3, sp, #24 a582: 8818 ldrh r0, [r3, #0] a584: 1c43 adds r3, r0, #1 a586: 9305 str r3, [sp, #20] _lv_sqrt(r2 - (x0.i * x0.i), &y_prev, sqrt_mask); a588: ad08 add r5, sp, #32 a58a: 4340 muls r0, r0 a58c: 4643 mov r3, r8 a58e: 1a18 subs r0, r3, r0 a590: 9a02 ldr r2, [sp, #8] a592: 0029 movs r1, r5 a594: 4b14 ldr r3, [pc, #80] ; (a5e8 ) a596: 4798 blx r3 if(y_prev.f == 0) { a598: 886b ldrh r3, [r5, #2] a59a: 2b00 cmp r3, #0 a59c: d105 bne.n a5aa y_prev.i--; a59e: ab08 add r3, sp, #32 a5a0: 881a ldrh r2, [r3, #0] a5a2: 3a01 subs r2, #1 a5a4: 801a strh r2, [r3, #0] y_prev.f = 0xFF; a5a6: 22ff movs r2, #255 ; 0xff a5a8: 805a strh r2, [r3, #2] if(y_prev.i >= y) { a5aa: ab08 add r3, sp, #32 a5ac: 881b ldrh r3, [r3, #0] a5ae: 459b cmp fp, r3 a5b0: dc00 bgt.n a5b4 a5b2: e636 b.n a222 for(; i <= x1.i; i++) { a5b4: ab07 add r3, sp, #28 a5b6: 881b ldrh r3, [r3, #0] a5b8: 469b mov fp, r3 a5ba: 9f05 ldr r7, [sp, #20] a5bc: 455f cmp r7, fp a5be: d900 bls.n a5c2 a5c0: e6f5 b.n a3ae uint32_t raw = (ref->i << 4) + (ref->f >> 4); a5c2: ab08 add r3, sp, #32 a5c4: 881a ldrh r2, [r3, #0] a5c6: 0112 lsls r2, r2, #4 a5c8: 9202 str r2, [sp, #8] a5ca: 885e ldrh r6, [r3, #2] a5cc: 9b04 ldr r3, [sp, #16] a5ce: 469a mov sl, r3 a5d0: 9b03 ldr r3, [sp, #12] if(mask_new <= LV_OPA_MIN) return 0; a5d2: 46a1 mov r9, r4 a5d4: 001c movs r4, r3 a5d6: e68c b.n a2f2 if(radius <= 256) sqrt_mask = 0x800; a5d8: 2380 movs r3, #128 ; 0x80 a5da: 021b lsls r3, r3, #8 a5dc: 9302 str r3, [sp, #8] a5de: e77c b.n a4da a5e0: 00017995 .word 0x00017995 a5e4: 0001104d .word 0x0001104d a5e8: 000109a9 .word 0x000109a9 0000a5ec : { a5ec: b510 push {r4, lr} if(LV_GC_ROOT(_lv_draw_mask_list[i]).param == NULL) break; a5ee: 4b0c ldr r3, [pc, #48] ; (a620 ) a5f0: 681b ldr r3, [r3, #0] a5f2: 2b00 cmp r3, #0 a5f4: d00c beq.n a610 a5f6: 4a0a ldr r2, [pc, #40] ; (a620 ) for(i = 0; i < _LV_MASK_MAX_NUM; i++) { a5f8: 2301 movs r3, #1 if(LV_GC_ROOT(_lv_draw_mask_list[i]).param == NULL) break; a5fa: 6894 ldr r4, [r2, #8] a5fc: 2c00 cmp r4, #0 a5fe: d008 beq.n a612 for(i = 0; i < _LV_MASK_MAX_NUM; i++) { a600: 3301 adds r3, #1 a602: b2db uxtb r3, r3 a604: 3208 adds r2, #8 a606: 2b10 cmp r3, #16 a608: d1f7 bne.n a5fa return LV_MASK_ID_INV; a60a: 2001 movs r0, #1 a60c: 4240 negs r0, r0 a60e: e006 b.n a61e for(i = 0; i < _LV_MASK_MAX_NUM; i++) { a610: 2300 movs r3, #0 LV_GC_ROOT(_lv_draw_mask_list[i]).param = param; a612: 4a03 ldr r2, [pc, #12] ; (a620 ) a614: 00dc lsls r4, r3, #3 a616: 50a0 str r0, [r4, r2] LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id = custom_id; a618: 1912 adds r2, r2, r4 a61a: 6051 str r1, [r2, #4] return i; a61c: b218 sxth r0, r3 } a61e: bd10 pop {r4, pc} a620: 20004d98 .word 0x20004d98 0000a624 : { a624: b5f0 push {r4, r5, r6, r7, lr} a626: b087 sub sp, #28 a628: 9003 str r0, [sp, #12] a62a: 9104 str r1, [sp, #16] a62c: 0016 movs r6, r2 a62e: 001f movs r7, r3 while(m->param) { a630: 4b10 ldr r3, [pc, #64] ; (a674 ) a632: 681b ldr r3, [r3, #0] a634: 2b00 cmp r3, #0 a636: d01b beq.n a670 a638: 4c0e ldr r4, [pc, #56] ; (a674 ) a63a: 2200 movs r2, #0 a63c: 9205 str r2, [sp, #20] a63e: e003 b.n a648 m++; a640: 3408 adds r4, #8 while(m->param) { a642: 6823 ldr r3, [r4, #0] a644: 2b00 cmp r3, #0 a646: d00d beq.n a664 res = dsc->cb(mask_buf, abs_x, abs_y, len, (void *)m->param); a648: 9300 str r3, [sp, #0] a64a: 681d ldr r5, [r3, #0] a64c: 003b movs r3, r7 a64e: 0032 movs r2, r6 a650: 9904 ldr r1, [sp, #16] a652: 9803 ldr r0, [sp, #12] a654: 47a8 blx r5 if(res == LV_DRAW_MASK_RES_TRANSP) return LV_DRAW_MASK_RES_TRANSP; a656: 2800 cmp r0, #0 a658: d008 beq.n a66c else if(res == LV_DRAW_MASK_RES_CHANGED) changed = true; a65a: 2802 cmp r0, #2 a65c: d1f0 bne.n a640 a65e: 2301 movs r3, #1 a660: 9305 str r3, [sp, #20] a662: e7ed b.n a640 return changed ? LV_DRAW_MASK_RES_CHANGED : LV_DRAW_MASK_RES_FULL_COVER; a664: 9805 ldr r0, [sp, #20] a666: 1e43 subs r3, r0, #1 a668: 4198 sbcs r0, r3 a66a: 3001 adds r0, #1 } a66c: b007 add sp, #28 a66e: bdf0 pop {r4, r5, r6, r7, pc} return changed ? LV_DRAW_MASK_RES_CHANGED : LV_DRAW_MASK_RES_FULL_COVER; a670: 2001 movs r0, #1 a672: e7fb b.n a66c a674: 20004d98 .word 0x20004d98 0000a678 : if(id != LV_MASK_ID_INV) { a678: 1c43 adds r3, r0, #1 a67a: d007 beq.n a68c p = LV_GC_ROOT(_lv_draw_mask_list[id]).param; a67c: 4a04 ldr r2, [pc, #16] ; (a690 ) a67e: 00c3 lsls r3, r0, #3 a680: 5898 ldr r0, [r3, r2] LV_GC_ROOT(_lv_draw_mask_list[id]).param = NULL; a682: 2100 movs r1, #0 a684: 5099 str r1, [r3, r2] LV_GC_ROOT(_lv_draw_mask_list[id]).custom_id = NULL; a686: 18d3 adds r3, r2, r3 a688: 6059 str r1, [r3, #4] } a68a: 4770 bx lr void * p = NULL; a68c: 2000 movs r0, #0 return p; a68e: e7fc b.n a68a a690: 20004d98 .word 0x20004d98 0000a694 : { a694: b530 push {r4, r5, lr} a696: 0001 movs r1, r0 a698: 4b08 ldr r3, [pc, #32] ; (a6bc ) a69a: 001a movs r2, r3 a69c: 3280 adds r2, #128 ; 0x80 void * p = NULL; a69e: 2000 movs r0, #0 LV_GC_ROOT(_lv_draw_mask_list[i]).param = NULL; a6a0: 2400 movs r4, #0 a6a2: e002 b.n a6aa a6a4: 3308 adds r3, #8 for(i = 0; i < _LV_MASK_MAX_NUM; i++) { a6a6: 4293 cmp r3, r2 a6a8: d006 beq.n a6b8 if(LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id == custom_id) { a6aa: 685d ldr r5, [r3, #4] a6ac: 428d cmp r5, r1 a6ae: d1f9 bne.n a6a4 p = LV_GC_ROOT(_lv_draw_mask_list[i]).param; a6b0: 6818 ldr r0, [r3, #0] LV_GC_ROOT(_lv_draw_mask_list[i]).param = NULL; a6b2: 601c str r4, [r3, #0] LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id = NULL; a6b4: 605c str r4, [r3, #4] a6b6: e7f5 b.n a6a4 } a6b8: bd30 pop {r4, r5, pc} a6ba: 46c0 nop ; (mov r8, r8) a6bc: 20004d98 .word 0x20004d98 0000a6c0 : { a6c0: 4b07 ldr r3, [pc, #28] ; (a6e0 ) a6c2: 001a movs r2, r3 a6c4: 3280 adds r2, #128 ; 0x80 uint8_t cnt = 0; a6c6: 2000 movs r0, #0 a6c8: e002 b.n a6d0 a6ca: 3308 adds r3, #8 for(i = 0; i < _LV_MASK_MAX_NUM; i++) { a6cc: 4293 cmp r3, r2 a6ce: d005 beq.n a6dc if(LV_GC_ROOT(_lv_draw_mask_list[i]).param) cnt++; a6d0: 6819 ldr r1, [r3, #0] a6d2: 2900 cmp r1, #0 a6d4: d0f9 beq.n a6ca a6d6: 3001 adds r0, #1 a6d8: b2c0 uxtb r0, r0 a6da: e7f6 b.n a6ca } a6dc: 4770 bx lr a6de: 46c0 nop ; (mov r8, r8) a6e0: 20004d98 .word 0x20004d98 0000a6e4 : { a6e4: b5f8 push {r3, r4, r5, r6, r7, lr} a6e6: 46ce mov lr, r9 a6e8: 4647 mov r7, r8 a6ea: b580 push {r7, lr} a6ec: 0004 movs r4, r0 a6ee: 000f movs r7, r1 a6f0: 0015 movs r5, r2 a6f2: 4698 mov r8, r3 a6f4: ab08 add r3, sp, #32 a6f6: 2600 movs r6, #0 a6f8: 5f9e ldrsh r6, [r3, r6] a6fa: ab09 add r3, sp, #36 ; 0x24 a6fc: 781b ldrb r3, [r3, #0] a6fe: 4699 mov r9, r3 _lv_memset_00(param, sizeof(lv_draw_mask_line_param_t)); a700: 212c movs r1, #44 ; 0x2c a702: 4b51 ldr r3, [pc, #324] ; (a848 ) a704: 4798 blx r3 if(p1y > p2y) { a706: 42b5 cmp r5, r6 a708: dd05 ble.n a716 a70a: 002b movs r3, r5 p1y = t; a70c: 0035 movs r5, r6 p2y = p1y; a70e: 001e movs r6, r3 if(p1y > p2y) { a710: 003b movs r3, r7 p1x = t; a712: 4647 mov r7, r8 p2x = p1x; a714: 4698 mov r8, r3 param->cfg.p1.x = p1x; a716: 8127 strh r7, [r4, #8] param->cfg.p1.y = p1y; a718: 8165 strh r5, [r4, #10] param->cfg.p2.x = p2x; a71a: 4643 mov r3, r8 a71c: 81a3 strh r3, [r4, #12] param->cfg.p2.y = p2y; a71e: 81e6 strh r6, [r4, #14] param->cfg.side = side; a720: 2303 movs r3, #3 a722: 464a mov r2, r9 a724: 4013 ands r3, r2 a726: 7c22 ldrb r2, [r4, #16] a728: 2103 movs r1, #3 a72a: 438a bics r2, r1 a72c: 431a orrs r2, r3 a72e: 7422 strb r2, [r4, #16] param->origo.x = p1x; a730: 8267 strh r7, [r4, #18] param->origo.y = p1y; a732: 82a5 strh r5, [r4, #20] param->flat = (LV_MATH_ABS(p2x - p1x) > LV_MATH_ABS(p2y - p1y)) ? 1 : 0; a734: 4643 mov r3, r8 a736: 1bdf subs r7, r3, r7 a738: 1b76 subs r6, r6, r5 a73a: 17fb asrs r3, r7, #31 a73c: 18fa adds r2, r7, r3 a73e: 405a eors r2, r3 a740: 17f1 asrs r1, r6, #31 a742: 1873 adds r3, r6, r1 a744: 404b eors r3, r1 a746: 2501 movs r5, #1 a748: 429a cmp r2, r3 a74a: dc00 bgt.n a74e a74c: 2500 movs r5, #0 a74e: 2128 movs r1, #40 ; 0x28 a750: 2201 movs r2, #1 a752: 002b movs r3, r5 a754: 4013 ands r3, r2 a756: 5c65 ldrb r5, [r4, r1] a758: 2001 movs r0, #1 a75a: 4385 bics r5, r0 a75c: 431d orrs r5, r3 a75e: 5465 strb r5, [r4, r1] param->yx_steep = 0; a760: 2300 movs r3, #0 a762: 61e3 str r3, [r4, #28] param->xy_steep = 0; a764: 61a3 str r3, [r4, #24] param->dsc.cb = (lv_draw_mask_xcb_t)lv_draw_mask_line; a766: 4939 ldr r1, [pc, #228] ; (a84c ) a768: 6021 str r1, [r4, #0] param->dsc.type = LV_DRAW_MASK_TYPE_LINE; a76a: 7123 strb r3, [r4, #4] if(param->flat) { a76c: 422a tst r2, r5 a76e: d027 beq.n a7c0 if(dx) { a770: 2f00 cmp r7, #0 a772: d007 beq.n a784 m = (1 << 20) / dx; /*m is multiplier to normalize y (upscaled by 1024)*/ a774: 0039 movs r1, r7 a776: 2080 movs r0, #128 ; 0x80 a778: 0340 lsls r0, r0, #13 a77a: 4b35 ldr r3, [pc, #212] ; (a850 ) a77c: 4798 blx r3 param->yx_steep = (m * dy) >> 10; a77e: 4370 muls r0, r6 a780: 1280 asrs r0, r0, #10 a782: 61e0 str r0, [r4, #28] if(dy) { a784: 2e00 cmp r6, #0 a786: d007 beq.n a798 m = (1 << 20) / dy; /*m is multiplier to normalize x (upscaled by 1024)*/ a788: 0031 movs r1, r6 a78a: 2080 movs r0, #128 ; 0x80 a78c: 0340 lsls r0, r0, #13 a78e: 4b30 ldr r3, [pc, #192] ; (a850 ) a790: 4798 blx r3 param->xy_steep = (m * dx) >> 10; a792: 4347 muls r7, r0 a794: 12bf asrs r7, r7, #10 a796: 61a7 str r7, [r4, #24] param->steep = param->yx_steep; a798: 69e3 ldr r3, [r4, #28] a79a: 6223 str r3, [r4, #32] if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) param->inv = 0; a79c: 7c22 ldrb r2, [r4, #16] a79e: 2303 movs r3, #3 a7a0: 4013 ands r3, r2 a7a2: d124 bne.n a7ee a7a4: 2228 movs r2, #40 ; 0x28 a7a6: 5ca3 ldrb r3, [r4, r2] a7a8: 2102 movs r1, #2 a7aa: 438b bics r3, r1 a7ac: 54a3 strb r3, [r4, r2] param->spx = param->steep >> 2; a7ae: 6a23 ldr r3, [r4, #32] a7b0: 109a asrs r2, r3, #2 if(param->steep < 0) param->spx = -param->spx; a7b2: 2b00 cmp r3, #0 a7b4: db45 blt.n a842 param->spx = param->steep >> 2; a7b6: 6262 str r2, [r4, #36] ; 0x24 } a7b8: bc0c pop {r2, r3} a7ba: 4690 mov r8, r2 a7bc: 4699 mov r9, r3 a7be: bdf8 pop {r3, r4, r5, r6, r7, pc} if(dy) { a7c0: 2e00 cmp r6, #0 a7c2: d007 beq.n a7d4 m = (1 << 20) / dy; /*m is multiplier to normalize x (upscaled by 1024)*/ a7c4: 0031 movs r1, r6 a7c6: 2080 movs r0, #128 ; 0x80 a7c8: 0340 lsls r0, r0, #13 a7ca: 4b21 ldr r3, [pc, #132] ; (a850 ) a7cc: 4798 blx r3 param->xy_steep = (m * dx) >> 10; a7ce: 4378 muls r0, r7 a7d0: 1280 asrs r0, r0, #10 a7d2: 61a0 str r0, [r4, #24] if(dx) { a7d4: 2f00 cmp r7, #0 a7d6: d007 beq.n a7e8 m = (1 << 20) / dx; /*m is multiplier to normalize x (upscaled by 1024)*/ a7d8: 0039 movs r1, r7 a7da: 2080 movs r0, #128 ; 0x80 a7dc: 0340 lsls r0, r0, #13 a7de: 4b1c ldr r3, [pc, #112] ; (a850 ) a7e0: 4798 blx r3 param->yx_steep = (m * dy) >> 10; a7e2: 4370 muls r0, r6 a7e4: 1280 asrs r0, r0, #10 a7e6: 61e0 str r0, [r4, #28] param->steep = param->xy_steep; a7e8: 69a3 ldr r3, [r4, #24] a7ea: 6223 str r3, [r4, #32] a7ec: e7d6 b.n a79c else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) param->inv = 1; a7ee: 2b01 cmp r3, #1 a7f0: d00c beq.n a80c else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP) { a7f2: 2b02 cmp r3, #2 a7f4: d010 beq.n a818 else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_BOTTOM) { a7f6: 2b03 cmp r3, #3 a7f8: d1d9 bne.n a7ae if(param->steep > 0) param->inv = 0; a7fa: 6a23 ldr r3, [r4, #32] a7fc: 2b00 cmp r3, #0 a7fe: dd1a ble.n a836 a800: 2228 movs r2, #40 ; 0x28 a802: 5ca3 ldrb r3, [r4, r2] a804: 2102 movs r1, #2 a806: 438b bics r3, r1 a808: 54a3 strb r3, [r4, r2] a80a: e7d0 b.n a7ae else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) param->inv = 1; a80c: 2228 movs r2, #40 ; 0x28 a80e: 5ca3 ldrb r3, [r4, r2] a810: 2102 movs r1, #2 a812: 430b orrs r3, r1 a814: 54a3 strb r3, [r4, r2] a816: e7ca b.n a7ae if(param->steep > 0) param->inv = 1; a818: 6a23 ldr r3, [r4, #32] a81a: 2b00 cmp r3, #0 a81c: dd05 ble.n a82a a81e: 2228 movs r2, #40 ; 0x28 a820: 5ca3 ldrb r3, [r4, r2] a822: 2102 movs r1, #2 a824: 430b orrs r3, r1 a826: 54a3 strb r3, [r4, r2] a828: e7c1 b.n a7ae else param->inv = 0; a82a: 2228 movs r2, #40 ; 0x28 a82c: 5ca3 ldrb r3, [r4, r2] a82e: 2102 movs r1, #2 a830: 438b bics r3, r1 a832: 54a3 strb r3, [r4, r2] a834: e7bb b.n a7ae else param->inv = 1; a836: 2228 movs r2, #40 ; 0x28 a838: 5ca3 ldrb r3, [r4, r2] a83a: 2102 movs r1, #2 a83c: 430b orrs r3, r1 a83e: 54a3 strb r3, [r4, r2] a840: e7b5 b.n a7ae if(param->steep < 0) param->spx = -param->spx; a842: 4252 negs r2, r2 a844: 6262 str r2, [r4, #36] ; 0x24 } a846: e7b7 b.n a7b8 a848: 0001104d .word 0x0001104d a84c: 00009a8d .word 0x00009a8d a850: 00017995 .word 0x00017995 0000a854 : { a854: b5f0 push {r4, r5, r6, r7, lr} return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a856: 88cc ldrh r4, [r1, #6] a858: 3401 adds r4, #1 a85a: 884d ldrh r5, [r1, #2] a85c: 1b64 subs r4, r4, r5 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a85e: 888e ldrh r6, [r1, #4] a860: 3601 adds r6, #1 a862: 880d ldrh r5, [r1, #0] a864: 1b76 subs r6, r6, r5 int32_t short_side = LV_MATH_MIN(w, h); a866: 1c25 adds r5, r4, #0 a868: b224 sxth r4, r4 a86a: b237 sxth r7, r6 a86c: 42bc cmp r4, r7 a86e: dd00 ble.n a872 a870: 1c35 adds r5, r6, #0 a872: b22d sxth r5, r5 if(radius > short_side >> 1) radius = short_side >> 1; a874: 106d asrs r5, r5, #1 a876: 42aa cmp r2, r5 a878: dd00 ble.n a87c a87a: b22a sxth r2, r5 a87c: 000e movs r6, r1 a87e: 3608 adds r6, #8 uint8_t * d8 = (uint8_t *)dst; a880: 0004 movs r4, r0 a882: 3408 adds r4, #8 *d8 = *s8; a884: 780d ldrb r5, [r1, #0] a886: 7025 strb r5, [r4, #0] d8++; a888: 3401 adds r4, #1 s8++; a88a: 3101 adds r1, #1 while(len) { a88c: 428e cmp r6, r1 a88e: d1f9 bne.n a884 param->cfg.radius = radius; a890: 8202 strh r2, [r0, #16] param->cfg.outer = inv ? 1 : 0; a892: 2201 movs r2, #1 a894: 401a ands r2, r3 a896: 7c83 ldrb r3, [r0, #18] a898: 2101 movs r1, #1 a89a: 438b bics r3, r1 a89c: 4313 orrs r3, r2 a89e: 7483 strb r3, [r0, #18] param->dsc.cb = (lv_draw_mask_xcb_t)lv_draw_mask_radius; a8a0: 4b05 ldr r3, [pc, #20] ; (a8b8 ) a8a2: 6003 str r3, [r0, #0] param->dsc.type = LV_DRAW_MASK_TYPE_RADIUS; a8a4: 2302 movs r3, #2 a8a6: 7103 strb r3, [r0, #4] param->y_prev = INT32_MIN; a8a8: 2380 movs r3, #128 ; 0x80 a8aa: 061b lsls r3, r3, #24 a8ac: 6143 str r3, [r0, #20] param->y_prev_x.f = 0; a8ae: 2300 movs r3, #0 a8b0: 8343 strh r3, [r0, #26] param->y_prev_x.i = 0; a8b2: 8303 strh r3, [r0, #24] } a8b4: bdf0 pop {r4, r5, r6, r7, pc} a8b6: 46c0 nop ; (mov r8, r8) a8b8: 00009fa9 .word 0x00009fa9 0000a8bc : #endif } LV_ATTRIBUTE_FAST_MEM static void shadow_blur_corner(lv_coord_t size, lv_coord_t sw, uint16_t * sh_ups_buf) { a8bc: b5f0 push {r4, r5, r6, r7, lr} a8be: 46de mov lr, fp a8c0: 4657 mov r7, sl a8c2: 464e mov r6, r9 a8c4: 4645 mov r5, r8 a8c6: b5e0 push {r5, r6, r7, lr} a8c8: b091 sub sp, #68 ; 0x44 a8ca: 900d str r0, [sp, #52] ; 0x34 a8cc: 9102 str r1, [sp, #8] a8ce: 920c str r2, [sp, #48] ; 0x30 int32_t s_left = sw >> 1; a8d0: 104b asrs r3, r1, #1 a8d2: 001e movs r6, r3 a8d4: 930f str r3, [sp, #60] ; 0x3c int32_t s_right = (sw >> 1); if((sw & 1) == 0) s_left--; a8d6: 2301 movs r3, #1 a8d8: 400b ands r3, r1 a8da: 425a negs r2, r3 a8dc: 4153 adcs r3, r2 a8de: 1af3 subs r3, r6, r3 a8e0: 001d movs r5, r3 a8e2: 930e str r3, [sp, #56] ; 0x38 /*Horizontal blur*/ uint16_t * sh_ups_blur_buf = _lv_mem_buf_get(size * sizeof(uint16_t)); a8e4: 0004 movs r4, r0 a8e6: 0047 lsls r7, r0, #1 a8e8: 0038 movs r0, r7 a8ea: 4b88 ldr r3, [pc, #544] ; (ab0c ) a8ec: 4798 blx r3 a8ee: 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++) { a8f0: 1e23 subs r3, r4, #0 a8f2: dc00 bgt.n a8f6 a8f4: e0db b.n aaae int32_t v = sh_ups_tmp_buf[size - 1] * sw; a8f6: 1eb9 subs r1, r7, #2 a8f8: 9103 str r1, [sp, #12] a8fa: 3b01 subs r3, #1 a8fc: 9306 str r3, [sp, #24] a8fe: 468c mov ip, r1 a900: 4460 add r0, ip a902: 9007 str r0, [sp, #28] a904: 0019 movs r1, r3 a906: 1b49 subs r1, r1, r5 a908: 9108 str r1, [sp, #32] a90a: 0029 movs r1, r5 a90c: 0028 movs r0, r5 a90e: 950a str r5, [sp, #40] ; 0x28 a910: 4b7f ldr r3, [pc, #508] ; (ab10 ) a912: 46a4 mov ip, r4 a914: 4463 add r3, ip a916: 1a5b subs r3, r3, r1 a918: 005d lsls r5, r3, #1 a91a: 950b str r5, [sp, #44] ; 0x2c a91c: 0049 lsls r1, r1, #1 a91e: 000a movs r2, r1 a920: 9609 str r6, [sp, #36] ; 0x24 a922: 0071 lsls r1, r6, #1 a924: 4688 mov r8, r1 a926: 9b0c ldr r3, [sp, #48] ; 0x30 a928: 4699 mov r9, r3 a92a: 2300 movs r3, #0 a92c: 9300 str r3, [sp, #0] a92e: 2502 movs r5, #2 a930: 426d negs r5, r5 a932: 1a2b subs r3, r5, r0 uint32_t left_val; if(x - s_left - 1 < 0) left_val = sh_ups_tmp_buf[0]; else left_val = sh_ups_tmp_buf[x - s_left - 1]; v += left_val; } _lv_memcpy(sh_ups_tmp_buf, sh_ups_blur_buf, size * sizeof(uint16_t)); a934: 9701 str r7, [sp, #4] a936: 469b mov fp, r3 a938: 46ca mov sl, r9 a93a: 4691 mov r9, r2 a93c: e024 b.n a988 v -= right_val; a93e: 1a9b subs r3, r3, r2 if(x - s_left - 1 < 0) left_val = sh_ups_tmp_buf[0]; a940: 2e00 cmp r6, #0 a942: db10 blt.n a966 else left_val = sh_ups_tmp_buf[x - s_left - 1]; a944: 882a ldrh r2, [r5, #0] v += left_val; a946: 18d3 adds r3, r2, r3 a948: 3f02 subs r7, #2 a94a: 3d02 subs r5, #2 a94c: 3e01 subs r6, #1 for(x = size - 1; x >= 0; x--) { a94e: 455e cmp r6, fp a950: d00c beq.n a96c sh_ups_blur_buf[x] = v; a952: 803b strh r3, [r7, #0] if(x + s_right < size) right_val = sh_ups_tmp_buf[x + s_right]; a954: 1981 adds r1, r0, r6 a956: 2200 movs r2, #0 a958: 428c cmp r4, r1 a95a: ddf0 ble.n a93e a95c: 464a mov r2, r9 a95e: 18aa adds r2, r5, r2 a960: 4442 add r2, r8 a962: 8852 ldrh r2, [r2, #2] a964: e7eb b.n a93e if(x - s_left - 1 < 0) left_val = sh_ups_tmp_buf[0]; a966: 4652 mov r2, sl a968: 8812 ldrh r2, [r2, #0] a96a: e7ec b.n a946 _lv_memcpy(sh_ups_tmp_buf, sh_ups_blur_buf, size * sizeof(uint16_t)); a96c: 9d01 ldr r5, [sp, #4] a96e: 002a movs r2, r5 a970: 9905 ldr r1, [sp, #20] a972: 4650 mov r0, sl a974: 4b67 ldr r3, [pc, #412] ; (ab14 ) a976: 4798 blx r3 sh_ups_tmp_buf += size; a978: 46ac mov ip, r5 a97a: 44e2 add sl, ip for(y = 0; y < size; y++) { a97c: 9b00 ldr r3, [sp, #0] a97e: 3301 adds r3, #1 a980: 9300 str r3, [sp, #0] a982: 42a3 cmp r3, r4 a984: db00 blt.n a988 a986: e0aa b.n aade int32_t v = sh_ups_tmp_buf[size - 1] * sw; a988: 9a02 ldr r2, [sp, #8] a98a: 9204 str r2, [sp, #16] a98c: 4653 mov r3, sl a98e: 9903 ldr r1, [sp, #12] a990: 5a5b ldrh r3, [r3, r1] a992: 4353 muls r3, r2 for(x = size - 1; x >= 0; x--) { a994: 9a06 ldr r2, [sp, #24] a996: 2a00 cmp r2, #0 a998: dbe8 blt.n a96c a99a: 9a0b ldr r2, [sp, #44] ; 0x2c a99c: 4452 add r2, sl a99e: 0015 movs r5, r2 a9a0: 9a08 ldr r2, [sp, #32] a9a2: 1e56 subs r6, r2, #1 a9a4: 9f07 ldr r7, [sp, #28] if(x + s_right < size) right_val = sh_ups_tmp_buf[x + s_right]; a9a6: 9a09 ldr r2, [sp, #36] ; 0x24 a9a8: 1c50 adds r0, r2, #1 a9aa: 9a0a ldr r2, [sp, #40] ; 0x28 a9ac: 4694 mov ip, r2 a9ae: 4460 add r0, ip a9b0: e7cf b.n a952 } /*Vertical blur*/ uint32_t i; sh_ups_buf[0] = sh_ups_buf[0] / sw; for(i = 1; i < (uint32_t)size * size; i++) { a9b2: 3601 adds r6, #1 a9b4: 3502 adds r5, #2 a9b6: 42a6 cmp r6, r4 a9b8: d207 bcs.n a9ca if(sh_ups_buf[i] == sh_ups_buf[i - 1]) sh_ups_buf[i] = sh_ups_buf[i - 1]; a9ba: 8868 ldrh r0, [r5, #2] a9bc: 882b ldrh r3, [r5, #0] a9be: 4283 cmp r3, r0 a9c0: d0f7 beq.n a9b2 else sh_ups_buf[i] = sh_ups_buf[i] / sw; a9c2: 9904 ldr r1, [sp, #16] a9c4: 47c8 blx r9 a9c6: 8068 strh r0, [r5, #2] a9c8: e7f3 b.n a9b2 a9ca: 4644 mov r4, r8 } for(x = 0; x < size; x++) { a9cc: 2c00 cmp r4, #0 a9ce: dc00 bgt.n a9d2 a9d0: e07b b.n aaca a9d2: 9b0c ldr r3, [sp, #48] ; 0x30 a9d4: 9303 str r3, [sp, #12] a9d6: 980e ldr r0, [sp, #56] ; 0x38 a9d8: 1c42 adds r2, r0, #1 a9da: 0013 movs r3, r2 a9dc: 437b muls r3, r7 a9de: 9308 str r3, [sp, #32] a9e0: 9d0f ldr r5, [sp, #60] ; 0x3c a9e2: 426b negs r3, r5 a9e4: 437b muls r3, r7 a9e6: 469b mov fp, r3 a9e8: 990d ldr r1, [sp, #52] ; 0x34 a9ea: 004b lsls r3, r1, #1 a9ec: 425b negs r3, r3 a9ee: 435a muls r2, r3 a9f0: 9200 str r2, [sp, #0] 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]; a9f2: 000b movs r3, r1 a9f4: 3b01 subs r3, #1 a9f6: 434b muls r3, r1 a9f8: 005b lsls r3, r3, #1 a9fa: 9302 str r3, [sp, #8] a9fc: 2300 movs r3, #0 a9fe: 9306 str r3, [sp, #24] if(y + s_left + 1 < size) bottom_val = sh_ups_buf[(y + s_left + 1) * size + x]; aa00: 0003 movs r3, r0 aa02: 2201 movs r2, #1 aa04: 4694 mov ip, r2 aa06: 4463 add r3, ip aa08: 469a mov sl, r3 aa0a: 46b8 mov r8, r7 aa0c: 465b mov r3, fp aa0e: 9301 str r3, [sp, #4] aa10: 46ab mov fp, r5 aa12: e037 b.n aa84 aa14: 2100 movs r1, #0 aa16: e00f b.n aa38 if(y - s_right <= 0) top_val = sh_ups_tmp_buf[0]; aa18: 4648 mov r0, r9 aa1a: 8800 ldrh r0, [r0, #0] aa1c: e016 b.n aa4c else bottom_val = sh_ups_buf[(size - 1) * size + x]; aa1e: 4641 mov r1, r8 aa20: 9802 ldr r0, [sp, #8] aa22: 5a09 ldrh r1, [r1, r0] v += bottom_val; aa24: 18cb adds r3, r1, r3 for(y = 0; y < size ; y++, sh_ups_tmp_buf += size) { aa26: 3201 adds r2, #1 aa28: 44b9 add r9, r7 aa2a: 19f6 adds r6, r6, r7 aa2c: 3402 adds r4, #2 aa2e: 4562 cmp r2, ip aa30: da12 bge.n aa58 sh_ups_blur_buf[y] = v < 0 ? 0 : (v >> SHADOW_UPSACALE_SHIFT); aa32: 2b00 cmp r3, #0 aa34: dbee blt.n aa14 aa36: 1199 asrs r1, r3, #6 aa38: 8021 strh r1, [r4, #0] aa3a: 0011 movs r1, r2 if(y - s_right <= 0) top_val = sh_ups_tmp_buf[0]; aa3c: 4658 mov r0, fp aa3e: 1a10 subs r0, r2, r0 aa40: 2800 cmp r0, #0 aa42: dde9 ble.n aa18 else top_val = sh_ups_buf[(y - s_right) * size + x]; aa44: 9801 ldr r0, [sp, #4] aa46: 1980 adds r0, r0, r6 aa48: 9d00 ldr r5, [sp, #0] aa4a: 5b40 ldrh r0, [r0, r5] v -= top_val; aa4c: 1a1b subs r3, r3, r0 if(y + s_left + 1 < size) bottom_val = sh_ups_buf[(y + s_left + 1) * size + x]; aa4e: 4451 add r1, sl aa50: 4561 cmp r1, ip aa52: dae4 bge.n aa1e aa54: 8831 ldrh r1, [r6, #0] aa56: e7e5 b.n aa24 aa58: 4645 mov r5, r8 aa5a: 46b8 mov r8, r7 aa5c: 9f07 ldr r7, [sp, #28] aa5e: 4664 mov r4, ip aa60: 2300 movs r3, #0 aa62: 4641 mov r1, r8 } /*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]; aa64: 883a ldrh r2, [r7, #0] aa66: 802a strh r2, [r5, #0] for(y = 0; y < size; y++, sh_ups_tmp_buf += size) { aa68: 3301 adds r3, #1 aa6a: 186d adds r5, r5, r1 aa6c: 3702 adds r7, #2 aa6e: 42a3 cmp r3, r4 aa70: dbf8 blt.n aa64 aa72: 4688 mov r8, r1 for(x = 0; x < size; x++) { aa74: 9b06 ldr r3, [sp, #24] aa76: 3301 adds r3, #1 aa78: 9306 str r3, [sp, #24] aa7a: 9a03 ldr r2, [sp, #12] aa7c: 3202 adds r2, #2 aa7e: 9203 str r2, [sp, #12] aa80: 42a3 cmp r3, r4 aa82: da22 bge.n aaca sh_ups_tmp_buf = &sh_ups_buf[x]; aa84: 9a03 ldr r2, [sp, #12] aa86: 0015 movs r5, r2 int32_t v = sh_ups_tmp_buf[0] * sw; aa88: 8813 ldrh r3, [r2, #0] aa8a: 9904 ldr r1, [sp, #16] aa8c: 434b muls r3, r1 aa8e: 9908 ldr r1, [sp, #32] aa90: 000e movs r6, r1 aa92: 4694 mov ip, r2 aa94: 4466 add r6, ip aa96: 9a05 ldr r2, [sp, #20] aa98: 0017 movs r7, r2 aa9a: 4694 mov ip, r2 aa9c: 46a9 mov r9, r5 aa9e: 2200 movs r2, #0 aaa0: 9707 str r7, [sp, #28] aaa2: 4647 mov r7, r8 aaa4: 0021 movs r1, r4 aaa6: 4664 mov r4, ip aaa8: 468c mov ip, r1 aaaa: 46a8 mov r8, r5 aaac: e7c1 b.n aa32 sh_ups_buf[0] = sh_ups_buf[0] / sw; aaae: 9b02 ldr r3, [sp, #8] aab0: 9304 str r3, [sp, #16] aab2: 9d0c ldr r5, [sp, #48] ; 0x30 aab4: 8828 ldrh r0, [r5, #0] aab6: 0019 movs r1, r3 aab8: 4b17 ldr r3, [pc, #92] ; (ab18 ) aaba: 4798 blx r3 aabc: 8028 strh r0, [r5, #0] for(i = 1; i < (uint32_t)size * size; i++) { aabe: 9a0d ldr r2, [sp, #52] ; 0x34 aac0: 0013 movs r3, r2 aac2: 4353 muls r3, r2 aac4: 4698 mov r8, r3 aac6: 2b01 cmp r3, #1 aac8: d817 bhi.n aafa } } _lv_mem_buf_release(sh_ups_blur_buf); aaca: 9805 ldr r0, [sp, #20] aacc: 4b13 ldr r3, [pc, #76] ; (ab1c ) aace: 4798 blx r3 } aad0: b011 add sp, #68 ; 0x44 aad2: bc3c pop {r2, r3, r4, r5} aad4: 4690 mov r8, r2 aad6: 4699 mov r9, r3 aad8: 46a2 mov sl, r4 aada: 46ab mov fp, r5 aadc: bdf0 pop {r4, r5, r6, r7, pc} aade: 9f01 ldr r7, [sp, #4] sh_ups_buf[0] = sh_ups_buf[0] / sw; aae0: 9d0c ldr r5, [sp, #48] ; 0x30 aae2: 8828 ldrh r0, [r5, #0] aae4: 9904 ldr r1, [sp, #16] aae6: 4b0c ldr r3, [pc, #48] ; (ab18 ) aae8: 4798 blx r3 aaea: 8028 strh r0, [r5, #0] for(i = 1; i < (uint32_t)size * size; i++) { aaec: 9a0d ldr r2, [sp, #52] ; 0x34 aaee: 0013 movs r3, r2 aaf0: 4353 muls r3, r2 aaf2: 4698 mov r8, r3 aaf4: 2b01 cmp r3, #1 aaf6: d800 bhi.n aafa aaf8: e76b b.n a9d2 aafa: 9d0c ldr r5, [sp, #48] ; 0x30 aafc: 2601 movs r6, #1 else sh_ups_buf[i] = sh_ups_buf[i] / sw; aafe: 4b06 ldr r3, [pc, #24] ; (ab18 ) ab00: 4699 mov r9, r3 ab02: 4643 mov r3, r8 ab04: 46a0 mov r8, r4 ab06: 001c movs r4, r3 ab08: e757 b.n a9ba ab0a: 46c0 nop ; (mov r8, r8) ab0c: 00010ec1 .word 0x00010ec1 ab10: 7ffffffe .word 0x7ffffffe ab14: 00010c8d .word 0x00010c8d ab18: 00017995 .word 0x00017995 ab1c: 00010bd5 .word 0x00010bd5 0000ab20 : { ab20: b510 push {r4, lr} ab22: 0004 movs r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_rect_dsc_t)); ab24: 2154 movs r1, #84 ; 0x54 ab26: 4b23 ldr r3, [pc, #140] ; (abb4 ) ab28: 4798 blx r3 dsc->bg_color = LV_COLOR_WHITE; ab2a: 4b23 ldr r3, [pc, #140] ; (abb8 ) ab2c: 881b ldrh r3, [r3, #0] ab2e: 8063 strh r3, [r4, #2] dsc->bg_grad_color = LV_COLOR_BLACK; ab30: 7923 ldrb r3, [r4, #4] ab32: 221f movs r2, #31 ab34: 4393 bics r3, r2 ab36: 7123 strb r3, [r4, #4] ab38: 88a1 ldrh r1, [r4, #4] ab3a: 4b20 ldr r3, [pc, #128] ; (abbc ) ab3c: 4019 ands r1, r3 ab3e: 80a1 strh r1, [r4, #4] ab40: 2100 movs r1, #0 ab42: 7161 strb r1, [r4, #5] dsc->border_color = LV_COLOR_BLACK; ab44: 7ba1 ldrb r1, [r4, #14] ab46: 4391 bics r1, r2 ab48: 73a1 strb r1, [r4, #14] ab4a: 89e1 ldrh r1, [r4, #14] ab4c: 4019 ands r1, r3 ab4e: 81e1 strh r1, [r4, #14] ab50: 2100 movs r1, #0 ab52: 73e1 strb r1, [r4, #15] dsc->pattern_recolor = LV_COLOR_BLACK; ab54: 2034 movs r0, #52 ; 0x34 ab56: 5c21 ldrb r1, [r4, r0] ab58: 4391 bics r1, r2 ab5a: 5421 strb r1, [r4, r0] ab5c: 8ea1 ldrh r1, [r4, #52] ; 0x34 ab5e: 4019 ands r1, r3 ab60: 86a1 strh r1, [r4, #52] ; 0x34 ab62: 0021 movs r1, r4 ab64: 3134 adds r1, #52 ; 0x34 ab66: 2000 movs r0, #0 ab68: 7048 strb r0, [r1, #1] dsc->value_color = LV_COLOR_BLACK; ab6a: 2146 movs r1, #70 ; 0x46 ab6c: 5c60 ldrb r0, [r4, r1] ab6e: 4390 bics r0, r2 ab70: 5460 strb r0, [r4, r1] ab72: 5a60 ldrh r0, [r4, r1] ab74: 4018 ands r0, r3 ab76: 5260 strh r0, [r4, r1] ab78: 0021 movs r1, r4 ab7a: 3146 adds r1, #70 ; 0x46 ab7c: 2000 movs r0, #0 ab7e: 7048 strb r0, [r1, #1] dsc->shadow_color = LV_COLOR_BLACK; ab80: 7fa1 ldrb r1, [r4, #30] ab82: 4391 bics r1, r2 ab84: 77a1 strb r1, [r4, #30] ab86: 8be2 ldrh r2, [r4, #30] ab88: 4013 ands r3, r2 ab8a: 83e3 strh r3, [r4, #30] ab8c: 2300 movs r3, #0 ab8e: 77e3 strb r3, [r4, #31] dsc->bg_grad_color_stop = 0xFF; ab90: 33ff adds r3, #255 ; 0xff ab92: 8163 strh r3, [r4, #10] dsc->bg_opa = LV_OPA_COVER; ab94: 7323 strb r3, [r4, #12] dsc->outline_opa = LV_OPA_COVER; ab96: 7723 strb r3, [r4, #28] dsc->border_opa = LV_OPA_COVER; ab98: 7523 strb r3, [r4, #20] dsc->pattern_opa = LV_OPA_COVER; ab9a: 2236 movs r2, #54 ; 0x36 ab9c: 54a3 strb r3, [r4, r2] dsc->pattern_font = LV_THEME_DEFAULT_FONT_NORMAL; ab9e: 4a08 ldr r2, [pc, #32] ; (abc0 ) aba0: 6322 str r2, [r4, #48] ; 0x30 dsc->value_opa = LV_OPA_COVER; aba2: 2144 movs r1, #68 ; 0x44 aba4: 5463 strb r3, [r4, r1] dsc->value_font = LV_THEME_DEFAULT_FONT_NORMAL; aba6: 6422 str r2, [r4, #64] ; 0x40 dsc->shadow_opa = LV_OPA_COVER; aba8: 2228 movs r2, #40 ; 0x28 abaa: 54a3 strb r3, [r4, r2] dsc->border_side = LV_BORDER_SIDE_FULL; abac: 3bf0 subs r3, #240 ; 0xf0 abae: 8263 strh r3, [r4, #18] } abb0: bd10 pop {r4, pc} abb2: 46c0 nop ; (mov r8, r8) abb4: 0001104d .word 0x0001104d abb8: 00018938 .word 0x00018938 abbc: fffff81f .word 0xfffff81f abc0: 20000030 .word 0x20000030 0000abc4 : { abc4: b5f0 push {r4, r5, r6, r7, lr} abc6: 46de mov lr, fp abc8: 4657 mov r7, sl abca: 464e mov r6, r9 abcc: 4645 mov r5, r8 abce: b5e0 push {r5, r6, r7, lr} abd0: b0b1 sub sp, #196 ; 0xc4 abd2: 4681 mov r9, r0 abd4: 9104 str r1, [sp, #16] abd6: 4693 mov fp, r2 * @param area_p pointer to an area * @return the height of the area (if y1 == y2 -> height = 1) */ static inline lv_coord_t lv_area_get_height(const lv_area_t * area_p) { return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); abd8: 88c4 ldrh r4, [r0, #6] abda: 8845 ldrh r5, [r0, #2] abdc: 1c63 adds r3, r4, #1 abde: 1b5b subs r3, r3, r5 if(lv_area_get_height(coords) < 1 || lv_area_get_width(coords) < 1) return; abe0: b21b sxth r3, r3 abe2: 2b00 cmp r3, #0 abe4: dc01 bgt.n abea abe6: f000 ffce bl bb86 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); abea: 8886 ldrh r6, [r0, #4] abec: 8807 ldrh r7, [r0, #0] abee: 1c73 adds r3, r6, #1 abf0: 1bdb subs r3, r3, r7 abf2: b21b sxth r3, r3 abf4: 2b00 cmp r3, #0 abf6: dc01 bgt.n abfc abf8: f000 ffc5 bl bb86 if(dsc->shadow_width == 0) return; abfc: 0013 movs r3, r2 abfe: 2220 movs r2, #32 ac00: 5e9b ldrsh r3, [r3, r2] ac02: 4698 mov r8, r3 ac04: 2b00 cmp r3, #0 ac06: d101 bne.n ac0c ac08: f000 fee1 bl b9ce if(dsc->shadow_opa <= LV_OPA_MIN) return; ac0c: 2328 movs r3, #40 ; 0x28 ac0e: 465a mov r2, fp ac10: 5cd3 ldrb r3, [r2, r3] ac12: 9306 str r3, [sp, #24] ac14: 2b05 cmp r3, #5 ac16: d801 bhi.n ac1c ac18: f000 fed9 bl b9ce if(dsc->shadow_width == 1 && dsc->shadow_ofs_x == 0 && ac1c: 6a13 ldr r3, [r2, #32] ac1e: 2b01 cmp r3, #1 ac20: d100 bne.n ac24 ac22: e0e2 b.n adea sh_rect_area.x1 = coords->x1 + dsc->shadow_ofs_x - dsc->shadow_spread; ac24: 465b mov r3, fp ac26: 8c59 ldrh r1, [r3, #34] ; 0x22 ac28: 8cda ldrh r2, [r3, #38] ; 0x26 ac2a: 1a8b subs r3, r1, r2 ac2c: 18ff adds r7, r7, r3 ac2e: b2bf uxth r7, r7 ac30: ab14 add r3, sp, #80 ; 0x50 ac32: 801f strh r7, [r3, #0] sh_rect_area.x2 = coords->x2 + dsc->shadow_ofs_x + dsc->shadow_spread; ac34: 1889 adds r1, r1, r2 ac36: 1876 adds r6, r6, r1 ac38: b2b6 uxth r6, r6 ac3a: 809e strh r6, [r3, #4] sh_rect_area.y1 = coords->y1 + dsc->shadow_ofs_y - dsc->shadow_spread; ac3c: 4659 mov r1, fp ac3e: 8c89 ldrh r1, [r1, #36] ; 0x24 ac40: 1a88 subs r0, r1, r2 ac42: 182d adds r5, r5, r0 ac44: b2ad uxth r5, r5 ac46: 805d strh r5, [r3, #2] sh_rect_area.y2 = coords->y2 + dsc->shadow_ofs_y + dsc->shadow_spread; ac48: 1852 adds r2, r2, r1 ac4a: 18a4 adds r4, r4, r2 ac4c: b2a4 uxth r4, r4 ac4e: 80dc strh r4, [r3, #6] sh_area.x1 = sh_rect_area.x1 - sw / 2 - 1; ac50: 4643 mov r3, r8 ac52: 0fdb lsrs r3, r3, #31 ac54: 4443 add r3, r8 ac56: 1059 asrs r1, r3, #1 ac58: 43c9 mvns r1, r1 ac5a: b289 uxth r1, r1 ac5c: aa16 add r2, sp, #88 ; 0x58 ac5e: 1878 adds r0, r7, r1 ac60: 8010 strh r0, [r2, #0] sh_area.x2 = sh_rect_area.x2 + sw / 2 + 1; ac62: 105b asrs r3, r3, #1 ac64: 3301 adds r3, #1 ac66: b29b uxth r3, r3 ac68: 18f0 adds r0, r6, r3 ac6a: 8090 strh r0, [r2, #4] sh_area.y1 = sh_rect_area.y1 - sw / 2 - 1; ac6c: 1869 adds r1, r5, r1 ac6e: 8051 strh r1, [r2, #2] sh_area.y2 = sh_rect_area.y2 + sw / 2 + 1; ac70: 18e3 adds r3, r4, r3 ac72: 80d3 strh r3, [r2, #6] if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; ac74: 9b06 ldr r3, [sp, #24] ac76: 2bfa cmp r3, #250 ; 0xfa ac78: d901 bls.n ac7e ac7a: 23ff movs r3, #255 ; 0xff ac7c: 9306 str r3, [sp, #24] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); ac7e: 4b9f ldr r3, [pc, #636] ; (aefc ) ac80: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); ac82: 4b9f ldr r3, [pc, #636] ; (af00 ) ac84: 4798 blx r3 ac86: 4682 mov sl, r0 is_common = _lv_area_intersect(&draw_area, &sh_area, clip); ac88: 9a04 ldr r2, [sp, #16] ac8a: a916 add r1, sp, #88 ; 0x58 ac8c: a818 add r0, sp, #96 ; 0x60 ac8e: 4b9d ldr r3, [pc, #628] ; (af04 ) ac90: 4798 blx r3 if(is_common == false) return; ac92: 2800 cmp r0, #0 ac94: d101 bne.n ac9a ac96: f000 fe9a bl b9ce draw_area.x1 -= disp_area->x1; ac9a: 4653 mov r3, sl ac9c: 8a1b ldrh r3, [r3, #16] ac9e: 469c mov ip, r3 aca0: ab18 add r3, sp, #96 ; 0x60 aca2: 881a ldrh r2, [r3, #0] aca4: 4661 mov r1, ip aca6: 1a52 subs r2, r2, r1 aca8: 801a strh r2, [r3, #0] draw_area.y1 -= disp_area->y1; acaa: 4652 mov r2, sl acac: 8a50 ldrh r0, [r2, #18] acae: 885a ldrh r2, [r3, #2] acb0: 1a12 subs r2, r2, r0 acb2: 805a strh r2, [r3, #2] draw_area.x2 -= disp_area->x1; acb4: 8899 ldrh r1, [r3, #4] acb6: 4662 mov r2, ip acb8: 1a89 subs r1, r1, r2 acba: 8099 strh r1, [r3, #4] draw_area.y2 -= disp_area->y1; acbc: 88da ldrh r2, [r3, #6] acbe: 1a12 subs r2, r2, r0 acc0: 80da strh r2, [r3, #6] acc2: 2300 movs r3, #0 { uint8_t * d8 = (uint8_t *)dst; const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; acc4: a91a add r1, sp, #104 ; 0x68 acc6: 4648 mov r0, r9 acc8: 5cc2 ldrb r2, [r0, r3] acca: 545a strb r2, [r3, r1] accc: 3301 adds r3, #1 while(len) { acce: 2b08 cmp r3, #8 acd0: d1fa bne.n acc8 acd2: 4681 mov r9, r0 bg_coords.x1 += 1; acd4: ab1a add r3, sp, #104 ; 0x68 acd6: 8819 ldrh r1, [r3, #0] acd8: 3101 adds r1, #1 acda: b28a uxth r2, r1 acdc: 4694 mov ip, r2 acde: 801a strh r2, [r3, #0] bg_coords.y1 += 1; ace0: 8858 ldrh r0, [r3, #2] ace2: 3001 adds r0, #1 ace4: b282 uxth r2, r0 ace6: 9205 str r2, [sp, #20] ace8: 466a mov r2, sp acea: 8a92 ldrh r2, [r2, #20] acec: 805a strh r2, [r3, #2] bg_coords.x2 -= 1; acee: 8898 ldrh r0, [r3, #4] acf0: 1e42 subs r2, r0, #1 acf2: 809a strh r2, [r3, #4] bg_coords.y2 -= 1; acf4: 88da ldrh r2, [r3, #6] acf6: 1e51 subs r1, r2, #1 acf8: 80d9 strh r1, [r3, #6] int32_t r_bg = dsc->radius; acfa: 465b mov r3, fp acfc: 2100 movs r1, #0 acfe: 5e5b ldrsh r3, [r3, r1] ad00: 4661 mov r1, ip ad02: 1a41 subs r1, r0, r1 ad04: b209 sxth r1, r1 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); ad06: 9805 ldr r0, [sp, #20] ad08: 1a10 subs r0, r2, r0 ad0a: b200 sxth r0, r0 int32_t short_side = LV_MATH_MIN(lv_area_get_width(&bg_coords), lv_area_get_height(&bg_coords)); ad0c: 0002 movs r2, r0 ad0e: 4281 cmp r1, r0 ad10: da00 bge.n ad14 ad12: 000a movs r2, r1 if(r_bg > short_side >> 1) r_bg = short_side >> 1; ad14: 1052 asrs r2, r2, #1 ad16: 920f str r2, [sp, #60] ; 0x3c ad18: 429a cmp r2, r3 ad1a: dd00 ble.n ad1e ad1c: 930f str r3, [sp, #60] ; 0x3c return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); ad1e: 3601 adds r6, #1 ad20: 1bf6 subs r6, r6, r7 ad22: b2b2 uxth r2, r6 ad24: 4692 mov sl, r2 ad26: b211 sxth r1, r2 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); ad28: 3401 adds r4, #1 ad2a: 1b65 subs r5, r4, r5 ad2c: b2ad uxth r5, r5 ad2e: b22a sxth r2, r5 short_side = LV_MATH_MIN(lv_area_get_width(&sh_rect_area), lv_area_get_height(&sh_rect_area)); ad30: 0014 movs r4, r2 ad32: 4291 cmp r1, r2 ad34: da00 bge.n ad38 ad36: 000c movs r4, r1 if(r_sh > short_side >> 1) r_sh = short_side >> 1; ad38: 1064 asrs r4, r4, #1 ad3a: 429c cmp r4, r3 ad3c: dd00 ble.n ad40 ad3e: 001c movs r4, r3 int32_t corner_size = sw + r_sh; ad40: 44a0 add r8, r4 ad42: 4643 mov r3, r8 ad44: 9309 str r3, [sp, #36] ; 0x24 sh_buf = _lv_mem_buf_get(corner_size * corner_size * sizeof(uint16_t)); ad46: 4640 mov r0, r8 ad48: 4358 muls r0, r3 ad4a: 0040 lsls r0, r0, #1 ad4c: 4b6e ldr r3, [pc, #440] ; (af08 ) ad4e: 4798 blx r3 ad50: 900e str r0, [sp, #56] ; 0x38 shadow_draw_corner_buf(&sh_rect_area, (uint16_t *)sh_buf, dsc->shadow_width, r_sh); ad52: 465b mov r3, fp ad54: 2720 movs r7, #32 ad56: 5fdf ldrsh r7, [r3, r7] ad58: b222 sxth r2, r4 int32_t sw_ori = sw; ad5a: 46b8 mov r8, r7 int32_t size = sw_ori + r; ad5c: 19d3 adds r3, r2, r7 ad5e: 9307 str r3, [sp, #28] ad60: 2300 movs r3, #0 *d8 = *s8; ad62: a822 add r0, sp, #136 ; 0x88 ad64: a914 add r1, sp, #80 ; 0x50 ad66: 5c5e ldrb r6, [r3, r1] ad68: 541e strb r6, [r3, r0] ad6a: 3301 adds r3, #1 while(len) { ad6c: 2b08 cmp r3, #8 ad6e: d1fa bne.n ad66 sh_area.x2 = sw / 2 + r - 1 - ((sw & 1) ? 0 : 1); ad70: 0ffb lsrs r3, r7, #31 ad72: 19db adds r3, r3, r7 ad74: 105b asrs r3, r3, #1 ad76: b29b uxth r3, r3 ad78: 2101 movs r1, #1 ad7a: 4039 ands r1, r7 ad7c: 000e movs r6, r1 ad7e: 9110 str r1, [sp, #64] ; 0x40 ad80: 1e59 subs r1, r3, #1 ad82: 4270 negs r0, r6 ad84: 4170 adcs r0, r6 ad86: 1a09 subs r1, r1, r0 ad88: 190c adds r4, r1, r4 ad8a: b2a4 uxth r4, r4 ad8c: a922 add r1, sp, #136 ; 0x88 ad8e: 808c strh r4, [r1, #4] sh_area.y1 = sw / 2 + 1; ad90: 3301 adds r3, #1 ad92: b29b uxth r3, r3 ad94: 804b strh r3, [r1, #2] sh_area.x1 = sh_area.x2 - lv_area_get_width(coords); ad96: 4650 mov r0, sl ad98: 1a24 subs r4, r4, r0 ad9a: 800c strh r4, [r1, #0] sh_area.y2 = sh_area.y1 + lv_area_get_height(coords); ad9c: 18ed adds r5, r5, r3 ad9e: 80cd strh r5, [r1, #6] lv_draw_mask_radius_init(&mask_param, &sh_area, r, false); ada0: 2300 movs r3, #0 ada2: a829 add r0, sp, #164 ; 0xa4 ada4: 4c59 ldr r4, [pc, #356] ; (af0c ) ada6: 47a0 blx r4 if(sw_ori == 1) sw = 1; ada8: 4643 mov r3, r8 adaa: 2b01 cmp r3, #1 adac: d101 bne.n adb2 adae: f002 f95b bl d068 adb2: 107b asrs r3, r7, #1 adb4: 930d str r3, [sp, #52] ; 0x34 lv_opa_t * mask_line = _lv_mem_buf_get(size); adb6: 9c07 ldr r4, [sp, #28] adb8: 940c str r4, [sp, #48] ; 0x30 adba: 0020 movs r0, r4 adbc: 4b52 ldr r3, [pc, #328] ; (af08 ) adbe: 4798 blx r3 adc0: 900a str r0, [sp, #40] ; 0x28 for(y = 0; y < size; y++) { adc2: 2c00 cmp r4, #0 adc4: dd61 ble.n ae8a _lv_memset_00(sh_ups_tmp_buf, size * sizeof(sh_ups_tmp_buf[0])); adc6: 9b0c ldr r3, [sp, #48] ; 0x30 adc8: 005b lsls r3, r3, #1 adca: 930b str r3, [sp, #44] ; 0x2c adcc: 9b07 ldr r3, [sp, #28] adce: 4a50 ldr r2, [pc, #320] ; (af10 ) add0: 4694 mov ip, r2 add2: 4463 add r3, ip add4: 005b lsls r3, r3, #1 add6: 9a0e ldr r2, [sp, #56] ; 0x38 add8: 4692 mov sl, r2 adda: 2200 movs r2, #0 addc: 4690 mov r8, r2 else sh_ups_tmp_buf[i] = (mask_line[i] << SHADOW_UPSACALE_SHIFT) / sw; adde: 4f4d ldr r7, [pc, #308] ; (af14 ) ade0: 4652 mov r2, sl ade2: 9208 str r2, [sp, #32] ade4: 46ca mov sl, r9 ade6: 4699 mov r9, r3 ade8: e01c b.n ae24 if(dsc->shadow_width == 1 && dsc->shadow_ofs_x == 0 && adea: 465b mov r3, fp adec: 2224 movs r2, #36 ; 0x24 adee: 5e9b ldrsh r3, [r3, r2] adf0: 2b00 cmp r3, #0 adf2: d000 beq.n adf6 adf4: e716 b.n ac24 dsc->shadow_ofs_y == 0 && dsc->shadow_spread <= 0) { adf6: 465b mov r3, fp adf8: 2226 movs r2, #38 ; 0x26 adfa: 5e9b ldrsh r3, [r3, r2] adfc: 2b00 cmp r3, #0 adfe: dd00 ble.n ae02 ae00: e710 b.n ac24 ae02: f000 fde4 bl b9ce _lv_memset_00(sh_ups_tmp_buf, size * sizeof(sh_ups_tmp_buf[0])); ae06: 990b ldr r1, [sp, #44] ; 0x2c ae08: 9808 ldr r0, [sp, #32] ae0a: 4b43 ldr r3, [pc, #268] ; (af18 ) ae0c: 4798 blx r3 sh_ups_tmp_buf += size; ae0e: 9b08 ldr r3, [sp, #32] ae10: 9a0b ldr r2, [sp, #44] ; 0x2c ae12: 4694 mov ip, r2 ae14: 4463 add r3, ip ae16: 9308 str r3, [sp, #32] for(y = 0; y < size; y++) { ae18: 2301 movs r3, #1 ae1a: 469c mov ip, r3 ae1c: 44e0 add r8, ip ae1e: 9b07 ldr r3, [sp, #28] ae20: 4543 cmp r3, r8 ae22: dd31 ble.n ae88 _lv_memset_ff(mask_line, size); ae24: 990c ldr r1, [sp, #48] ; 0x30 ae26: 9c0a ldr r4, [sp, #40] ; 0x28 ae28: 0020 movs r0, r4 ae2a: 4b3c ldr r3, [pc, #240] ; (af1c ) ae2c: 4798 blx r3 lv_draw_mask_res_t mask_res = mask_param.dsc.cb(mask_line, 0, y, size, &mask_param); ae2e: 466b mov r3, sp ae30: 221c movs r2, #28 ae32: 5e9b ldrsh r3, [r3, r2] ae34: 4642 mov r2, r8 ae36: b212 sxth r2, r2 ae38: a929 add r1, sp, #164 ; 0xa4 ae3a: 9100 str r1, [sp, #0] ae3c: 2100 movs r1, #0 ae3e: 0020 movs r0, r4 ae40: 9c29 ldr r4, [sp, #164] ; 0xa4 ae42: 47a0 blx r4 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { ae44: 2800 cmp r0, #0 ae46: d0de beq.n ae06 sh_ups_tmp_buf[0] = (mask_line[0] << SHADOW_UPSACALE_SHIFT) / sw; ae48: 9b0d ldr r3, [sp, #52] ; 0x34 ae4a: 9305 str r3, [sp, #20] ae4c: 9d0a ldr r5, [sp, #40] ; 0x28 ae4e: 7828 ldrb r0, [r5, #0] ae50: 0180 lsls r0, r0, #6 ae52: 0019 movs r1, r3 ae54: 4b2f ldr r3, [pc, #188] ; (af14 ) ae56: 4798 blx r3 ae58: 9b08 ldr r3, [sp, #32] ae5a: 8018 strh r0, [r3, #0] for(i = 1; i < size; i++) { ae5c: 9a07 ldr r2, [sp, #28] ae5e: 2a01 cmp r2, #1 ae60: ddd5 ble.n ae0e ae62: 001c movs r4, r3 ae64: 444b add r3, r9 ae66: 001e movs r6, r3 ae68: e005 b.n ae76 if(mask_line[i] == mask_line[i - 1]) sh_ups_tmp_buf[i] = sh_ups_tmp_buf[i - 1]; ae6a: 8823 ldrh r3, [r4, #0] ae6c: 8063 strh r3, [r4, #2] ae6e: 3501 adds r5, #1 ae70: 3402 adds r4, #2 for(i = 1; i < size; i++) { ae72: 42a6 cmp r6, r4 ae74: d0cb beq.n ae0e if(mask_line[i] == mask_line[i - 1]) sh_ups_tmp_buf[i] = sh_ups_tmp_buf[i - 1]; ae76: 7868 ldrb r0, [r5, #1] ae78: 782b ldrb r3, [r5, #0] ae7a: 4283 cmp r3, r0 ae7c: d0f5 beq.n ae6a else sh_ups_tmp_buf[i] = (mask_line[i] << SHADOW_UPSACALE_SHIFT) / sw; ae7e: 0180 lsls r0, r0, #6 ae80: 9905 ldr r1, [sp, #20] ae82: 47b8 blx r7 ae84: 8060 strh r0, [r4, #2] ae86: e7f2 b.n ae6e ae88: 46d1 mov r9, sl _lv_mem_buf_release(mask_line); ae8a: 980a ldr r0, [sp, #40] ; 0x28 ae8c: 4b24 ldr r3, [pc, #144] ; (af20 ) ae8e: 4798 blx r3 if(sw == 1) { ae90: 9b0d ldr r3, [sp, #52] ; 0x34 ae92: 2b01 cmp r3, #1 ae94: d101 bne.n ae9a ae96: f002 f8f6 bl d086 shadow_blur_corner(size, sw, sh_buf); ae9a: 466b mov r3, sp ae9c: 221c movs r2, #28 ae9e: 5e9b ldrsh r3, [r3, r2] aea0: 9308 str r3, [sp, #32] aea2: 9c0e ldr r4, [sp, #56] ; 0x38 aea4: 0022 movs r2, r4 aea6: 9d0d ldr r5, [sp, #52] ; 0x34 aea8: 0029 movs r1, r5 aeaa: 0018 movs r0, r3 aeac: 4b1d ldr r3, [pc, #116] ; (af24 ) aeae: 4798 blx r3 sw += sw_ori & 1; aeb0: 9b10 ldr r3, [sp, #64] ; 0x40 aeb2: 46ac mov ip, r5 aeb4: 4463 add r3, ip aeb6: b21f sxth r7, r3 if(sw > 1) { aeb8: 2f01 cmp r7, #1 aeba: dd3a ble.n af32 sh_buf[0] = (sh_buf[0] << SHADOW_UPSACALE_SHIFT) / sw; aebc: 9705 str r7, [sp, #20] aebe: 8820 ldrh r0, [r4, #0] aec0: 0180 lsls r0, r0, #6 aec2: 0039 movs r1, r7 aec4: 4b13 ldr r3, [pc, #76] ; (af14 ) aec6: 4798 blx r3 aec8: 8020 strh r0, [r4, #0] for(i = 1; i < (uint32_t) size * size; i++) { aeca: 9d0c ldr r5, [sp, #48] ; 0x30 aecc: 436d muls r5, r5 aece: 2d01 cmp r5, #1 aed0: d92a bls.n af28 aed2: 4a0f ldr r2, [pc, #60] ; (af10 ) aed4: 4694 mov ip, r2 aed6: 4465 add r5, ip aed8: 006d lsls r5, r5, #1 aeda: 46a4 mov ip, r4 aedc: 4465 add r5, ip else sh_buf[i] = (sh_buf[i] << SHADOW_UPSACALE_SHIFT) / sw; aede: 4e0d ldr r6, [pc, #52] ; (af14 ) aee0: e002 b.n aee8 aee2: 3402 adds r4, #2 for(i = 1; i < (uint32_t) size * size; i++) { aee4: 42a5 cmp r5, r4 aee6: d01f beq.n af28 if(sh_buf[i] == sh_buf[i - 1]) sh_buf[i] = sh_buf[i - 1]; aee8: 8860 ldrh r0, [r4, #2] aeea: 8823 ldrh r3, [r4, #0] aeec: 4283 cmp r3, r0 aeee: d0f8 beq.n aee2 else sh_buf[i] = (sh_buf[i] << SHADOW_UPSACALE_SHIFT) / sw; aef0: 0180 lsls r0, r0, #6 aef2: 9905 ldr r1, [sp, #20] aef4: 47b0 blx r6 aef6: 8060 strh r0, [r4, #2] aef8: e7f3 b.n aee2 aefa: 46c0 nop ; (mov r8, r8) aefc: 000043b1 .word 0x000043b1 af00: 0000f709 .word 0x0000f709 af04: 0000fc0f .word 0x0000fc0f af08: 00010ec1 .word 0x00010ec1 af0c: 0000a855 .word 0x0000a855 af10: 7fffffff .word 0x7fffffff af14: 00017995 .word 0x00017995 af18: 0001104d .word 0x0001104d af1c: 000110f1 .word 0x000110f1 af20: 00010bd5 .word 0x00010bd5 af24: 0000a8bd .word 0x0000a8bd shadow_blur_corner(size, sw, sh_buf); af28: 9a0e ldr r2, [sp, #56] ; 0x38 af2a: 0039 movs r1, r7 af2c: 9808 ldr r0, [sp, #32] af2e: 4bb5 ldr r3, [pc, #724] ; (b204 ) af30: 4798 blx r3 for(x = 0; x < size * size; x++) { af32: 9f07 ldr r7, [sp, #28] af34: 437f muls r7, r7 af36: 2f00 cmp r7, #0 af38: d00a beq.n af50 af3a: 9a0e ldr r2, [sp, #56] ; 0x38 af3c: 0013 movs r3, r2 af3e: 0078 lsls r0, r7, #1 af40: 4694 mov ip, r2 af42: 4460 add r0, ip res_buf[x] = sh_buf[x]; af44: 8819 ldrh r1, [r3, #0] af46: 7011 strb r1, [r2, #0] af48: 3302 adds r3, #2 af4a: 3201 adds r2, #1 for(x = 0; x < size * size; x++) { af4c: 4283 cmp r3, r0 af4e: d1f9 bne.n af44 lv_coord_t h_half = sh_area.y1 + lv_area_get_height(&sh_area) / 2; af50: a916 add r1, sp, #88 ; 0x58 af52: 884a ldrh r2, [r1, #2] af54: 88cb ldrh r3, [r1, #6] af56: 3301 adds r3, #1 af58: 1a9b subs r3, r3, r2 af5a: b21b sxth r3, r3 af5c: 0fd8 lsrs r0, r3, #31 af5e: 18c3 adds r3, r0, r3 af60: 105b asrs r3, r3, #1 af62: 18d3 adds r3, r2, r3 af64: b29b uxth r3, r3 af66: 9310 str r3, [sp, #64] ; 0x40 af68: b21b sxth r3, r3 af6a: 930c str r3, [sp, #48] ; 0x30 lv_coord_t w_half = sh_area.x1 + lv_area_get_width(&sh_area) / 2; af6c: 880a ldrh r2, [r1, #0] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); af6e: 888b ldrh r3, [r1, #4] af70: 3301 adds r3, #1 af72: 1a9b subs r3, r3, r2 af74: b21b sxth r3, r3 af76: 0fd9 lsrs r1, r3, #31 af78: 18cb adds r3, r1, r3 af7a: 105b asrs r3, r3, #1 af7c: 18d3 adds r3, r2, r3 af7e: b29b uxth r3, r3 af80: 9311 str r3, [sp, #68] ; 0x44 af82: b21b sxth r3, r3 af84: 930d str r3, [sp, #52] ; 0x34 if(lv_draw_mask_get_cnt() > 0) simple_mode = false; af86: 4ba0 ldr r3, [pc, #640] ; (b208 ) af88: 4798 blx r3 af8a: 2300 movs r3, #0 af8c: 9308 str r3, [sp, #32] af8e: 2800 cmp r0, #0 af90: d110 bne.n afb4 else if(dsc->shadow_ofs_x != 0 || dsc->shadow_ofs_y != 0) simple_mode = false; af92: 465b mov r3, fp af94: 2222 movs r2, #34 ; 0x22 af96: 5e9b ldrsh r3, [r3, r2] af98: 2b00 cmp r3, #0 af9a: d10b bne.n afb4 af9c: 465b mov r3, fp af9e: 2224 movs r2, #36 ; 0x24 afa0: 5e9b ldrsh r3, [r3, r2] afa2: 2b00 cmp r3, #0 afa4: d106 bne.n afb4 else if(dsc->shadow_spread != 0) simple_mode = false; afa6: 465b mov r3, fp afa8: 2226 movs r2, #38 ; 0x26 afaa: 5e9a ldrsh r2, [r3, r2] afac: 4253 negs r3, r2 afae: 4153 adcs r3, r2 afb0: b2db uxtb r3, r3 afb2: 9308 str r3, [sp, #32] afb4: ac16 add r4, sp, #88 ; 0x58 afb6: 88a0 ldrh r0, [r4, #4] afb8: 3001 adds r0, #1 afba: 8823 ldrh r3, [r4, #0] afbc: 1ac0 subs r0, r0, r3 lv_opa_t * mask_buf = _lv_mem_buf_get(lv_area_get_width(&sh_area)); afbe: b200 sxth r0, r0 afc0: 4b92 ldr r3, [pc, #584] ; (b20c ) afc2: 4798 blx r3 afc4: 9005 str r0, [sp, #20] lv_draw_mask_radius_init(&mask_rout_param, &bg_coords, r_bg, true); afc6: 466b mov r3, sp afc8: 223c movs r2, #60 ; 0x3c afca: 5e9a ldrsh r2, [r3, r2] afcc: 2301 movs r3, #1 afce: a91a add r1, sp, #104 ; 0x68 afd0: a829 add r0, sp, #164 ; 0xa4 afd2: 4d8f ldr r5, [pc, #572] ; (b210 ) afd4: 47a8 blx r5 int16_t mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); afd6: 2100 movs r1, #0 afd8: a829 add r0, sp, #164 ; 0xa4 afda: 4b8e ldr r3, [pc, #568] ; (b214 ) afdc: 4798 blx r3 afde: 900f str r0, [sp, #60] ; 0x3c a.x2 = sh_area.x2; afe0: 2204 movs r2, #4 afe2: 5ea3 ldrsh r3, [r4, r2] afe4: a91c add r1, sp, #112 ; 0x70 afe6: 808b strh r3, [r1, #4] a.x1 = a.x2 - corner_size + 1; afe8: 466a mov r2, sp afea: 8c92 ldrh r2, [r2, #36] ; 0x24 afec: 920a str r2, [sp, #40] ; 0x28 afee: 3301 adds r3, #1 aff0: 1a9b subs r3, r3, r2 aff2: 800b strh r3, [r1, #0] a.y1 = sh_area.y1; aff4: 2002 movs r0, #2 aff6: 5e23 ldrsh r3, [r4, r0] aff8: 804b strh r3, [r1, #2] a.y2 = a.y1 + corner_size - 1; affa: 3b01 subs r3, #1 affc: 4694 mov ip, r2 affe: 4463 add r3, ip b000: 80cb strh r3, [r1, #6] bool has_com = _lv_area_intersect(&ca, &a, clip); b002: 9a04 ldr r2, [sp, #16] b004: a81e add r0, sp, #120 ; 0x78 b006: 4b84 ldr r3, [pc, #528] ; (b218 ) b008: 4798 blx r3 if(has_com) { b00a: 2800 cmp r0, #0 b00c: d071 beq.n b0f2 if(ca.y2 > h_half) ca.y2 = h_half; b00e: ab1e add r3, sp, #120 ; 0x78 b010: 2206 movs r2, #6 b012: 5e9b ldrsh r3, [r3, r2] b014: 990c ldr r1, [sp, #48] ; 0x30 b016: 428b cmp r3, r1 b018: dd01 ble.n b01e b01a: ab1e add r3, sp, #120 ; 0x78 b01c: 80d9 strh r1, [r3, #6] if(ca.x1 <= w_half) ca.x1 = w_half + 1; b01e: ab1e add r3, sp, #120 ; 0x78 b020: 2200 movs r2, #0 b022: 5e9b ldrsh r3, [r3, r2] b024: 9a0d ldr r2, [sp, #52] ; 0x34 b026: 4293 cmp r3, r2 b028: dc03 bgt.n b032 b02a: 9b11 ldr r3, [sp, #68] ; 0x44 b02c: 3301 adds r3, #1 b02e: aa1e add r2, sp, #120 ; 0x78 b030: 8013 strh r3, [r2, #0] b032: ab1e add r3, sp, #120 ; 0x78 b034: 2100 movs r1, #0 b036: 5e5a ldrsh r2, [r3, r1] b038: 889b ldrh r3, [r3, #4] b03a: 3301 adds r3, #1 b03c: 1a9b subs r3, r3, r2 b03e: b21b sxth r3, r3 b040: 930b str r3, [sp, #44] ; 0x2c if(w > 0) { b042: 2b00 cmp r3, #0 b044: dd55 ble.n b0f2 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b046: ab1e add r3, sp, #120 ; 0x78 b048: 2106 movs r1, #6 b04a: 5e5c ldrsh r4, [r3, r1] b04c: 2602 movs r6, #2 b04e: 5f9e ldrsh r6, [r3, r6] sh_buf_tmp += corner_size * (ca.y1 - a.y1); b050: ab1c add r3, sp, #112 ; 0x70 b052: 2102 movs r1, #2 b054: 5e5d ldrsh r5, [r3, r1] b056: 1b75 subs r5, r6, r5 b058: 9909 ldr r1, [sp, #36] ; 0x24 b05a: 434d muls r5, r1 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); b05c: 2100 movs r1, #0 b05e: 5e5b ldrsh r3, [r3, r1] b060: 1ad2 subs r2, r2, r3 sh_buf_tmp += corner_size * (ca.y1 - a.y1); b062: 18ad adds r5, r5, r2 b064: 9b0e ldr r3, [sp, #56] ; 0x38 b066: 469c mov ip, r3 b068: 4465 add r5, ip b06a: 2300 movs r3, #0 *d8 = *s8; b06c: a822 add r0, sp, #136 ; 0x88 b06e: a91e add r1, sp, #120 ; 0x78 b070: 5c5a ldrb r2, [r3, r1] b072: 541a strb r2, [r3, r0] b074: 3301 adds r3, #1 while(len) { b076: 2b08 cmp r3, #8 b078: d1fa bne.n b070 fa.y2 = fa.y1; b07a: ab22 add r3, sp, #136 ; 0x88 b07c: 885a ldrh r2, [r3, #2] b07e: 80da strh r2, [r3, #6] b080: 3401 adds r4, #1 b082: 1ba6 subs r6, r4, r6 b084: b236 sxth r6, r6 for(y = 0; y < h; y++) { b086: 2e00 cmp r6, #0 b088: dd33 ble.n b0f2 b08a: 1c73 adds r3, r6, #1 b08c: 4698 mov r8, r3 b08e: 2601 movs r6, #1 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b090: ac22 add r4, sp, #136 ; 0x88 b092: 4b62 ldr r3, [pc, #392] ; (b21c ) b094: 469a mov sl, r3 b096: 9507 str r5, [sp, #28] b098: 465f mov r7, fp b09a: e019 b.n b0d0 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, b09c: 8bfa ldrh r2, [r7, #30] b09e: 2329 movs r3, #41 ; 0x29 b0a0: 5cfb ldrb r3, [r7, r3] b0a2: 9302 str r3, [sp, #8] b0a4: 9b06 ldr r3, [sp, #24] b0a6: 9301 str r3, [sp, #4] b0a8: 9000 str r0, [sp, #0] b0aa: 9b05 ldr r3, [sp, #20] b0ac: 0021 movs r1, r4 b0ae: 9804 ldr r0, [sp, #16] b0b0: 4d5b ldr r5, [pc, #364] ; (b220 ) b0b2: 47a8 blx r5 fa.y1++; b0b4: 8863 ldrh r3, [r4, #2] b0b6: 3301 adds r3, #1 b0b8: 8063 strh r3, [r4, #2] fa.y2++; b0ba: 88e3 ldrh r3, [r4, #6] b0bc: 3301 adds r3, #1 b0be: 80e3 strh r3, [r4, #6] b0c0: 9b09 ldr r3, [sp, #36] ; 0x24 b0c2: 469c mov ip, r3 b0c4: 9b07 ldr r3, [sp, #28] b0c6: 4463 add r3, ip b0c8: 9307 str r3, [sp, #28] b0ca: 3601 adds r6, #1 for(y = 0; y < h; y++) { b0cc: 45b0 cmp r8, r6 b0ce: d00f beq.n b0f0 _lv_memcpy(mask_buf, sh_buf_tmp, w); b0d0: 9a0b ldr r2, [sp, #44] ; 0x2c b0d2: 9907 ldr r1, [sp, #28] b0d4: 9805 ldr r0, [sp, #20] b0d6: 4b53 ldr r3, [pc, #332] ; (b224 ) b0d8: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b0da: 2102 movs r1, #2 b0dc: 5e62 ldrsh r2, [r4, r1] b0de: 2500 movs r5, #0 b0e0: 5f61 ldrsh r1, [r4, r5] b0e2: 9b0b ldr r3, [sp, #44] ; 0x2c b0e4: 9805 ldr r0, [sp, #20] b0e6: 47d0 blx sl if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; b0e8: 2801 cmp r0, #1 b0ea: d1d7 bne.n b09c b0ec: 3001 adds r0, #1 b0ee: e7d5 b.n b09c b0f0: 46bb mov fp, r7 a.x2 = sh_area.x2; b0f2: aa16 add r2, sp, #88 ; 0x58 b0f4: 2104 movs r1, #4 b0f6: 5e53 ldrsh r3, [r2, r1] b0f8: a91c add r1, sp, #112 ; 0x70 b0fa: 808b strh r3, [r1, #4] a.x1 = a.x2 - corner_size + 1; b0fc: 3301 adds r3, #1 b0fe: 980a ldr r0, [sp, #40] ; 0x28 b100: 1a1b subs r3, r3, r0 b102: 800b strh r3, [r1, #0] a.y1 = sh_area.y2 - corner_size + 1; b104: 2306 movs r3, #6 b106: 5ed2 ldrsh r2, [r2, r3] b108: 1c53 adds r3, r2, #1 b10a: 1a1b subs r3, r3, r0 b10c: 804b strh r3, [r1, #2] a.y2 = sh_area.y2; b10e: 80ca strh r2, [r1, #6] has_com = _lv_area_intersect(&ca, &a, clip); b110: 9a04 ldr r2, [sp, #16] b112: a81e add r0, sp, #120 ; 0x78 b114: 4b40 ldr r3, [pc, #256] ; (b218 ) b116: 4798 blx r3 if(has_com) { b118: 2800 cmp r0, #0 b11a: d100 bne.n b11e b11c: e085 b.n b22a if(ca.y1 <= h_half) ca.y1 = h_half + 1; b11e: ab1e add r3, sp, #120 ; 0x78 b120: 2202 movs r2, #2 b122: 5e9b ldrsh r3, [r3, r2] b124: 9a0c ldr r2, [sp, #48] ; 0x30 b126: 4293 cmp r3, r2 b128: dc03 bgt.n b132 b12a: 9b10 ldr r3, [sp, #64] ; 0x40 b12c: 3301 adds r3, #1 b12e: aa1e add r2, sp, #120 ; 0x78 b130: 8053 strh r3, [r2, #2] if(ca.x1 <= w_half) ca.x1 = w_half + 1; b132: ab1e add r3, sp, #120 ; 0x78 b134: 2200 movs r2, #0 b136: 5e9b ldrsh r3, [r3, r2] b138: 9a0d ldr r2, [sp, #52] ; 0x34 b13a: 4293 cmp r3, r2 b13c: dc03 bgt.n b146 b13e: 9b11 ldr r3, [sp, #68] ; 0x44 b140: 3301 adds r3, #1 b142: aa1e add r2, sp, #120 ; 0x78 b144: 8013 strh r3, [r2, #0] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); b146: ab1e add r3, sp, #120 ; 0x78 b148: 2100 movs r1, #0 b14a: 5e5a ldrsh r2, [r3, r1] b14c: 889b ldrh r3, [r3, #4] b14e: 3301 adds r3, #1 b150: 1a9b subs r3, r3, r2 b152: b21b sxth r3, r3 b154: 930b str r3, [sp, #44] ; 0x2c if(w > 0) { b156: 2b00 cmp r3, #0 b158: dd67 ble.n b22a return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b15a: ab1e add r3, sp, #120 ; 0x78 b15c: 2106 movs r1, #6 b15e: 5e5c ldrsh r4, [r3, r1] b160: 2602 movs r6, #2 b162: 5f9e ldrsh r6, [r3, r6] sh_buf_tmp += corner_size * (a.y2 - ca.y2); b164: ab1c add r3, sp, #112 ; 0x70 b166: 2106 movs r1, #6 b168: 5e5d ldrsh r5, [r3, r1] b16a: 1b2d subs r5, r5, r4 b16c: 9909 ldr r1, [sp, #36] ; 0x24 b16e: 434d muls r5, r1 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); b170: 2100 movs r1, #0 b172: 5e5b ldrsh r3, [r3, r1] b174: 1ad2 subs r2, r2, r3 sh_buf_tmp += corner_size * (a.y2 - ca.y2); b176: 18ad adds r5, r5, r2 b178: 9b0e ldr r3, [sp, #56] ; 0x38 b17a: 469c mov ip, r3 b17c: 4465 add r5, ip b17e: 2300 movs r3, #0 *d8 = *s8; b180: a822 add r0, sp, #136 ; 0x88 b182: a91e add r1, sp, #120 ; 0x78 b184: 5c5a ldrb r2, [r3, r1] b186: 541a strb r2, [r3, r0] b188: 3301 adds r3, #1 while(len) { b18a: 2b08 cmp r3, #8 b18c: d1fa bne.n b184 fa.y1 = fa.y2; /*Fill from bottom to top*/ b18e: ab22 add r3, sp, #136 ; 0x88 b190: 88da ldrh r2, [r3, #6] b192: 805a strh r2, [r3, #2] b194: 3401 adds r4, #1 b196: 1ba6 subs r6, r4, r6 b198: b236 sxth r6, r6 for(y = 0; y < h; y++) { b19a: 2e00 cmp r6, #0 b19c: dd45 ble.n b22a b19e: 1c73 adds r3, r6, #1 b1a0: 4698 mov r8, r3 b1a2: 2601 movs r6, #1 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b1a4: ac22 add r4, sp, #136 ; 0x88 b1a6: 4b1d ldr r3, [pc, #116] ; (b21c ) b1a8: 469a mov sl, r3 b1aa: 9507 str r5, [sp, #28] b1ac: 465f mov r7, fp b1ae: e019 b.n b1e4 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, b1b0: 8bfa ldrh r2, [r7, #30] b1b2: 2329 movs r3, #41 ; 0x29 b1b4: 5cfb ldrb r3, [r7, r3] b1b6: 9302 str r3, [sp, #8] b1b8: 9b06 ldr r3, [sp, #24] b1ba: 9301 str r3, [sp, #4] b1bc: 9000 str r0, [sp, #0] b1be: 9b05 ldr r3, [sp, #20] b1c0: 0021 movs r1, r4 b1c2: 9804 ldr r0, [sp, #16] b1c4: 4d16 ldr r5, [pc, #88] ; (b220 ) b1c6: 47a8 blx r5 fa.y1--; b1c8: 8863 ldrh r3, [r4, #2] b1ca: 3b01 subs r3, #1 b1cc: 8063 strh r3, [r4, #2] fa.y2--; b1ce: 88e3 ldrh r3, [r4, #6] b1d0: 3b01 subs r3, #1 b1d2: 80e3 strh r3, [r4, #6] b1d4: 9b09 ldr r3, [sp, #36] ; 0x24 b1d6: 469c mov ip, r3 b1d8: 9b07 ldr r3, [sp, #28] b1da: 4463 add r3, ip b1dc: 9307 str r3, [sp, #28] b1de: 3601 adds r6, #1 for(y = 0; y < h; y++) { b1e0: 4546 cmp r6, r8 b1e2: d021 beq.n b228 _lv_memcpy(mask_buf, sh_buf_tmp, w); b1e4: 9a0b ldr r2, [sp, #44] ; 0x2c b1e6: 9907 ldr r1, [sp, #28] b1e8: 9805 ldr r0, [sp, #20] b1ea: 4b0e ldr r3, [pc, #56] ; (b224 ) b1ec: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b1ee: 2102 movs r1, #2 b1f0: 5e62 ldrsh r2, [r4, r1] b1f2: 2500 movs r5, #0 b1f4: 5f61 ldrsh r1, [r4, r5] b1f6: 9b0b ldr r3, [sp, #44] ; 0x2c b1f8: 9805 ldr r0, [sp, #20] b1fa: 47d0 blx sl if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; b1fc: 2801 cmp r0, #1 b1fe: d1d7 bne.n b1b0 b200: 3001 adds r0, #1 b202: e7d5 b.n b1b0 b204: 0000a8bd .word 0x0000a8bd b208: 0000a6c1 .word 0x0000a6c1 b20c: 00010ec1 .word 0x00010ec1 b210: 0000a855 .word 0x0000a855 b214: 0000a5ed .word 0x0000a5ed b218: 0000fc0f .word 0x0000fc0f b21c: 0000a625 .word 0x0000a625 b220: 00005c6d .word 0x00005c6d b224: 00010c8d .word 0x00010c8d b228: 46bb mov fp, r7 a.x2 = sh_area.x2; b22a: aa16 add r2, sp, #88 ; 0x58 b22c: 2104 movs r1, #4 b22e: 5e53 ldrsh r3, [r2, r1] b230: a91c add r1, sp, #112 ; 0x70 b232: 808b strh r3, [r1, #4] a.x1 = a.x2 - corner_size + 1; b234: 3301 adds r3, #1 b236: 980a ldr r0, [sp, #40] ; 0x28 b238: 1a1b subs r3, r3, r0 b23a: 800b strh r3, [r1, #0] a.y1 = sh_area.y1 + corner_size; b23c: 8853 ldrh r3, [r2, #2] b23e: 4684 mov ip, r0 b240: 4463 add r3, ip b242: 804b strh r3, [r1, #2] a.y2 = sh_area.y2 - corner_size; b244: 88d3 ldrh r3, [r2, #6] b246: 1a1b subs r3, r3, r0 b248: 80cb strh r3, [r1, #6] has_com = _lv_area_intersect(&ca, &a, clip); b24a: 9a04 ldr r2, [sp, #16] b24c: a81e add r0, sp, #120 ; 0x78 b24e: 4bd1 ldr r3, [pc, #836] ; (b594 ) b250: 4798 blx r3 if(has_com) { b252: 2800 cmp r0, #0 b254: d06c beq.n b330 if(simple_mode) ca.x1 = LV_MATH_MAX(ca.x1, coords->x2); b256: 9b08 ldr r3, [sp, #32] b258: 2b00 cmp r3, #0 b25a: d00a beq.n b272 b25c: aa1e add r2, sp, #120 ; 0x78 b25e: 8810 ldrh r0, [r2, #0] b260: 464b mov r3, r9 b262: 889b ldrh r3, [r3, #4] b264: 1c19 adds r1, r3, #0 b266: b21b sxth r3, r3 b268: b204 sxth r4, r0 b26a: 42a3 cmp r3, r4 b26c: da00 bge.n b270 b26e: 1c01 adds r1, r0, #0 b270: 8011 strh r1, [r2, #0] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); b272: ab1e add r3, sp, #120 ; 0x78 b274: 2100 movs r1, #0 b276: 5e5a ldrsh r2, [r3, r1] b278: 889b ldrh r3, [r3, #4] b27a: 3301 adds r3, #1 b27c: 1a9b subs r3, r3, r2 b27e: b21b sxth r3, r3 b280: 9307 str r3, [sp, #28] if(w > 0) { b282: 2b00 cmp r3, #0 b284: dd54 ble.n b330 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b286: ab1e add r3, sp, #120 ; 0x78 b288: 88df ldrh r7, [r3, #6] b28a: 3701 adds r7, #1 b28c: 885b ldrh r3, [r3, #2] b28e: 1aff subs r7, r7, r3 b290: b23f sxth r7, r7 sh_buf_tmp = sh_buf + corner_size * (corner_size - 1); b292: 9909 ldr r1, [sp, #36] ; 0x24 b294: 000b movs r3, r1 b296: 3b01 subs r3, #1 b298: 434b muls r3, r1 sh_buf_tmp += ca.x1 - a.x1; b29a: a91c add r1, sp, #112 ; 0x70 b29c: 2000 movs r0, #0 b29e: 5e09 ldrsh r1, [r1, r0] b2a0: 1a52 subs r2, r2, r1 b2a2: 189a adds r2, r3, r2 b2a4: 0013 movs r3, r2 b2a6: 990e ldr r1, [sp, #56] ; 0x38 b2a8: 468c mov ip, r1 b2aa: 4463 add r3, ip b2ac: 930b str r3, [sp, #44] ; 0x2c b2ae: 2300 movs r3, #0 *d8 = *s8; b2b0: a822 add r0, sp, #136 ; 0x88 b2b2: a91e add r1, sp, #120 ; 0x78 b2b4: 5c5a ldrb r2, [r3, r1] b2b6: 541a strb r2, [r3, r0] b2b8: 3301 adds r3, #1 while(len) { b2ba: 2b08 cmp r3, #8 b2bc: d1fa bne.n b2b4 fa.y2 = fa.y1; b2be: ab22 add r3, sp, #136 ; 0x88 b2c0: 885a ldrh r2, [r3, #2] b2c2: 80da strh r2, [r3, #6] for(y = 0; y < h; y++) { b2c4: 2f00 cmp r7, #0 b2c6: dd33 ble.n b330 b2c8: 2500 movs r5, #0 _lv_memcpy(mask_buf, sh_buf_tmp, w); b2ca: 4bb3 ldr r3, [pc, #716] ; (b598 ) b2cc: 4698 mov r8, r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b2ce: ac22 add r4, sp, #136 ; 0x88 b2d0: 9b08 ldr r3, [sp, #32] b2d2: 469a mov sl, r3 b2d4: 465e mov r6, fp b2d6: 46bb mov fp, r7 b2d8: e015 b.n b306 _lv_blend_fill(clip, &fa, b2da: 8bf2 ldrh r2, [r6, #30] b2dc: 2329 movs r3, #41 ; 0x29 b2de: 5cf3 ldrb r3, [r6, r3] b2e0: 9302 str r3, [sp, #8] b2e2: 2328 movs r3, #40 ; 0x28 b2e4: 5cf3 ldrb r3, [r6, r3] b2e6: 9301 str r3, [sp, #4] b2e8: 9000 str r0, [sp, #0] b2ea: 9b05 ldr r3, [sp, #20] b2ec: 0021 movs r1, r4 b2ee: 9804 ldr r0, [sp, #16] b2f0: 4faa ldr r7, [pc, #680] ; (b59c ) b2f2: 47b8 blx r7 fa.y1++; b2f4: 8863 ldrh r3, [r4, #2] b2f6: 3301 adds r3, #1 b2f8: 8063 strh r3, [r4, #2] fa.y2++; b2fa: 88e3 ldrh r3, [r4, #6] b2fc: 3301 adds r3, #1 b2fe: 80e3 strh r3, [r4, #6] for(y = 0; y < h; y++) { b300: 3501 adds r5, #1 b302: 455d cmp r5, fp b304: da13 bge.n b32e _lv_memcpy(mask_buf, sh_buf_tmp, w); b306: 9a07 ldr r2, [sp, #28] b308: 990b ldr r1, [sp, #44] ; 0x2c b30a: 9805 ldr r0, [sp, #20] b30c: 47c0 blx r8 mask_res = LV_DRAW_MASK_RES_CHANGED; b30e: 2002 movs r0, #2 if(simple_mode) { b310: 4653 mov r3, sl b312: 2b00 cmp r3, #0 b314: d1e1 bne.n b2da mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b316: 2302 movs r3, #2 b318: 5ee2 ldrsh r2, [r4, r3] b31a: 2300 movs r3, #0 b31c: 5ee1 ldrsh r1, [r4, r3] b31e: 9b07 ldr r3, [sp, #28] b320: 9805 ldr r0, [sp, #20] b322: 4f9f ldr r7, [pc, #636] ; (b5a0 ) b324: 47b8 blx r7 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; b326: 2801 cmp r0, #1 b328: d1d7 bne.n b2da b32a: 3001 adds r0, #1 b32c: e7d5 b.n b2da b32e: 46b3 mov fp, r6 for(y = 0; y < corner_size; y++) { b330: 9b09 ldr r3, [sp, #36] ; 0x24 b332: 2b00 cmp r3, #0 b334: dd1f ble.n b376 for(x = 0; x < corner_size / 2; x++) { b336: 0fdf lsrs r7, r3, #31 b338: 469c mov ip, r3 b33a: 4467 add r7, ip b33c: 107f asrs r7, r7, #1 b33e: 9d0e ldr r5, [sp, #56] ; 0x38 b340: 2600 movs r6, #0 b342: 1e5a subs r2, r3, #1 b344: 4694 mov ip, r2 b346: 46b8 mov r8, r7 b348: 001f movs r7, r3 b34a: e00b b.n b364 lv_opa_t tmp = sh_buf_tmp[x]; b34c: 7819 ldrb r1, [r3, #0] sh_buf_tmp[x] = sh_buf_tmp[corner_size - x - 1]; b34e: 7810 ldrb r0, [r2, #0] b350: 7018 strb r0, [r3, #0] sh_buf_tmp[corner_size - x - 1] = tmp; b352: 7011 strb r1, [r2, #0] b354: 3301 adds r3, #1 b356: 3a01 subs r2, #1 for(x = 0; x < corner_size / 2; x++) { b358: 429c cmp r4, r3 b35a: d1f7 bne.n b34c b35c: 19ed adds r5, r5, r7 for(y = 0; y < corner_size; y++) { b35e: 3601 adds r6, #1 b360: 42b7 cmp r7, r6 b362: d008 beq.n b376 for(x = 0; x < corner_size / 2; x++) { b364: 4643 mov r3, r8 b366: 2b00 cmp r3, #0 b368: d0f8 beq.n b35c b36a: 002b movs r3, r5 b36c: 4662 mov r2, ip b36e: 18aa adds r2, r5, r2 b370: 4641 mov r1, r8 b372: 186c adds r4, r5, r1 b374: e7ea b.n b34c a.x1 = sh_area.x1; b376: aa16 add r2, sp, #88 ; 0x58 b378: 2100 movs r1, #0 b37a: 5e53 ldrsh r3, [r2, r1] b37c: a91c add r1, sp, #112 ; 0x70 b37e: 800b strh r3, [r1, #0] a.x2 = a.x1 + corner_size - 1; b380: 3b01 subs r3, #1 b382: 9c0a ldr r4, [sp, #40] ; 0x28 b384: 46a4 mov ip, r4 b386: 4463 add r3, ip b388: 808b strh r3, [r1, #4] a.y1 = sh_area.y1; b38a: 2302 movs r3, #2 b38c: 5ed3 ldrsh r3, [r2, r3] b38e: 804b strh r3, [r1, #2] a.y2 = a.y1 + corner_size - 1; b390: 3b01 subs r3, #1 b392: 4463 add r3, ip b394: 80cb strh r3, [r1, #6] has_com = _lv_area_intersect(&ca, &a, clip); b396: 9a04 ldr r2, [sp, #16] b398: a81e add r0, sp, #120 ; 0x78 b39a: 4b7e ldr r3, [pc, #504] ; (b594 ) b39c: 4798 blx r3 if(has_com) { b39e: 2800 cmp r0, #0 b3a0: d06f beq.n b482 if(ca.y2 > h_half) ca.y2 = h_half; b3a2: ab1e add r3, sp, #120 ; 0x78 b3a4: 2206 movs r2, #6 b3a6: 5e9b ldrsh r3, [r3, r2] b3a8: 990c ldr r1, [sp, #48] ; 0x30 b3aa: 428b cmp r3, r1 b3ac: dd01 ble.n b3b2 b3ae: ab1e add r3, sp, #120 ; 0x78 b3b0: 80d9 strh r1, [r3, #6] if(ca.x2 > w_half) ca.x2 = w_half; b3b2: ab1e add r3, sp, #120 ; 0x78 b3b4: 2204 movs r2, #4 b3b6: 5e9b ldrsh r3, [r3, r2] b3b8: 990d ldr r1, [sp, #52] ; 0x34 b3ba: 428b cmp r3, r1 b3bc: dd01 ble.n b3c2 b3be: ab1e add r3, sp, #120 ; 0x78 b3c0: 8099 strh r1, [r3, #4] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); b3c2: ab1e add r3, sp, #120 ; 0x78 b3c4: 2100 movs r1, #0 b3c6: 5e5a ldrsh r2, [r3, r1] b3c8: 889b ldrh r3, [r3, #4] b3ca: 3301 adds r3, #1 b3cc: 1a9b subs r3, r3, r2 b3ce: b21b sxth r3, r3 b3d0: 930b str r3, [sp, #44] ; 0x2c if(w > 0) { b3d2: 2b00 cmp r3, #0 b3d4: dd55 ble.n b482 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b3d6: ab1e add r3, sp, #120 ; 0x78 b3d8: 2106 movs r1, #6 b3da: 5e5c ldrsh r4, [r3, r1] b3dc: 2602 movs r6, #2 b3de: 5f9e ldrsh r6, [r3, r6] sh_buf_tmp += corner_size * (ca.y1 - a.y1); b3e0: ab1c add r3, sp, #112 ; 0x70 b3e2: 2102 movs r1, #2 b3e4: 5e5d ldrsh r5, [r3, r1] b3e6: 1b75 subs r5, r6, r5 b3e8: 9909 ldr r1, [sp, #36] ; 0x24 b3ea: 434d muls r5, r1 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); b3ec: 2100 movs r1, #0 b3ee: 5e5b ldrsh r3, [r3, r1] b3f0: 1ad2 subs r2, r2, r3 sh_buf_tmp += corner_size * (ca.y1 - a.y1); b3f2: 18ad adds r5, r5, r2 b3f4: 9b0e ldr r3, [sp, #56] ; 0x38 b3f6: 469c mov ip, r3 b3f8: 4465 add r5, ip b3fa: 2300 movs r3, #0 *d8 = *s8; b3fc: a822 add r0, sp, #136 ; 0x88 b3fe: a91e add r1, sp, #120 ; 0x78 b400: 5c5a ldrb r2, [r3, r1] b402: 541a strb r2, [r3, r0] b404: 3301 adds r3, #1 while(len) { b406: 2b08 cmp r3, #8 b408: d1fa bne.n b400 fa.y2 = fa.y1; b40a: ab22 add r3, sp, #136 ; 0x88 b40c: 885a ldrh r2, [r3, #2] b40e: 80da strh r2, [r3, #6] b410: 3401 adds r4, #1 b412: 1ba6 subs r6, r4, r6 b414: b236 sxth r6, r6 for(y = 0; y < h; y++) { b416: 2e00 cmp r6, #0 b418: dd33 ble.n b482 b41a: 1c73 adds r3, r6, #1 b41c: 4698 mov r8, r3 b41e: 2601 movs r6, #1 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b420: ac22 add r4, sp, #136 ; 0x88 b422: 4b5f ldr r3, [pc, #380] ; (b5a0 ) b424: 469a mov sl, r3 b426: 9507 str r5, [sp, #28] b428: 465f mov r7, fp b42a: e019 b.n b460 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, b42c: 8bfa ldrh r2, [r7, #30] b42e: 2329 movs r3, #41 ; 0x29 b430: 5cfb ldrb r3, [r7, r3] b432: 9302 str r3, [sp, #8] b434: 9b06 ldr r3, [sp, #24] b436: 9301 str r3, [sp, #4] b438: 9000 str r0, [sp, #0] b43a: 9b05 ldr r3, [sp, #20] b43c: 0021 movs r1, r4 b43e: 9804 ldr r0, [sp, #16] b440: 4d56 ldr r5, [pc, #344] ; (b59c ) b442: 47a8 blx r5 fa.y1++; b444: 8863 ldrh r3, [r4, #2] b446: 3301 adds r3, #1 b448: 8063 strh r3, [r4, #2] fa.y2++; b44a: 88e3 ldrh r3, [r4, #6] b44c: 3301 adds r3, #1 b44e: 80e3 strh r3, [r4, #6] b450: 9b09 ldr r3, [sp, #36] ; 0x24 b452: 469c mov ip, r3 b454: 9b07 ldr r3, [sp, #28] b456: 4463 add r3, ip b458: 9307 str r3, [sp, #28] b45a: 3601 adds r6, #1 for(y = 0; y < h; y++) { b45c: 4546 cmp r6, r8 b45e: d00f beq.n b480 _lv_memcpy(mask_buf, sh_buf_tmp, w); b460: 9a0b ldr r2, [sp, #44] ; 0x2c b462: 9907 ldr r1, [sp, #28] b464: 9805 ldr r0, [sp, #20] b466: 4b4c ldr r3, [pc, #304] ; (b598 ) b468: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b46a: 2102 movs r1, #2 b46c: 5e62 ldrsh r2, [r4, r1] b46e: 2500 movs r5, #0 b470: 5f61 ldrsh r1, [r4, r5] b472: 9b0b ldr r3, [sp, #44] ; 0x2c b474: 9805 ldr r0, [sp, #20] b476: 47d0 blx sl if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; b478: 2801 cmp r0, #1 b47a: d1d7 bne.n b42c b47c: 3001 adds r0, #1 b47e: e7d5 b.n b42c b480: 46bb mov fp, r7 a.x1 = sh_area.x1; b482: aa16 add r2, sp, #88 ; 0x58 b484: 2100 movs r1, #0 b486: 5e53 ldrsh r3, [r2, r1] b488: a91c add r1, sp, #112 ; 0x70 b48a: 800b strh r3, [r1, #0] a.x2 = a.x1 + corner_size - 1; b48c: 3b01 subs r3, #1 b48e: 9c0a ldr r4, [sp, #40] ; 0x28 b490: 46a4 mov ip, r4 b492: 4463 add r3, ip b494: 808b strh r3, [r1, #4] a.y1 = sh_area.y2 - corner_size + 1; b496: 2306 movs r3, #6 b498: 5ed2 ldrsh r2, [r2, r3] b49a: 1c53 adds r3, r2, #1 b49c: 1b1b subs r3, r3, r4 b49e: 804b strh r3, [r1, #2] a.y2 = sh_area.y2; b4a0: 80ca strh r2, [r1, #6] has_com = _lv_area_intersect(&ca, &a, clip); b4a2: 9a04 ldr r2, [sp, #16] b4a4: a81e add r0, sp, #120 ; 0x78 b4a6: 4b3b ldr r3, [pc, #236] ; (b594 ) b4a8: 4798 blx r3 if(has_com) { b4aa: 2800 cmp r0, #0 b4ac: d100 bne.n b4b0 b4ae: e07a b.n b5a6 if(ca.y1 <= h_half) ca.y1 = h_half + 1; b4b0: ab1e add r3, sp, #120 ; 0x78 b4b2: 2202 movs r2, #2 b4b4: 5e9b ldrsh r3, [r3, r2] b4b6: 9a0c ldr r2, [sp, #48] ; 0x30 b4b8: 4293 cmp r3, r2 b4ba: dc03 bgt.n b4c4 b4bc: 9b10 ldr r3, [sp, #64] ; 0x40 b4be: 3301 adds r3, #1 b4c0: aa1e add r2, sp, #120 ; 0x78 b4c2: 8053 strh r3, [r2, #2] if(ca.x2 > w_half) ca.x2 = w_half; b4c4: ab1e add r3, sp, #120 ; 0x78 b4c6: 2204 movs r2, #4 b4c8: 5e9b ldrsh r3, [r3, r2] b4ca: 990d ldr r1, [sp, #52] ; 0x34 b4cc: 428b cmp r3, r1 b4ce: dd01 ble.n b4d4 b4d0: ab1e add r3, sp, #120 ; 0x78 b4d2: 8099 strh r1, [r3, #4] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); b4d4: ab1e add r3, sp, #120 ; 0x78 b4d6: 2100 movs r1, #0 b4d8: 5e5a ldrsh r2, [r3, r1] b4da: 889b ldrh r3, [r3, #4] b4dc: 3301 adds r3, #1 b4de: 1a9b subs r3, r3, r2 b4e0: b21b sxth r3, r3 b4e2: 930b str r3, [sp, #44] ; 0x2c if(w > 0) { b4e4: 2b00 cmp r3, #0 b4e6: dd5e ble.n b5a6 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b4e8: ab1e add r3, sp, #120 ; 0x78 b4ea: 2106 movs r1, #6 b4ec: 5e5c ldrsh r4, [r3, r1] b4ee: 2602 movs r6, #2 b4f0: 5f9e ldrsh r6, [r3, r6] sh_buf_tmp += corner_size * (a.y2 - ca.y2); b4f2: ab1c add r3, sp, #112 ; 0x70 b4f4: 2106 movs r1, #6 b4f6: 5e5d ldrsh r5, [r3, r1] b4f8: 1b2d subs r5, r5, r4 b4fa: 9909 ldr r1, [sp, #36] ; 0x24 b4fc: 434d muls r5, r1 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); b4fe: 2100 movs r1, #0 b500: 5e5b ldrsh r3, [r3, r1] b502: 1ad2 subs r2, r2, r3 sh_buf_tmp += corner_size * (a.y2 - ca.y2); b504: 18ad adds r5, r5, r2 b506: 9b0e ldr r3, [sp, #56] ; 0x38 b508: 469c mov ip, r3 b50a: 4465 add r5, ip b50c: 2300 movs r3, #0 *d8 = *s8; b50e: a822 add r0, sp, #136 ; 0x88 b510: a91e add r1, sp, #120 ; 0x78 b512: 5c5a ldrb r2, [r3, r1] b514: 541a strb r2, [r3, r0] b516: 3301 adds r3, #1 while(len) { b518: 2b08 cmp r3, #8 b51a: d1fa bne.n b512 fa.y1 = fa.y2; /*Fill from bottom to top*/ b51c: ab22 add r3, sp, #136 ; 0x88 b51e: 88da ldrh r2, [r3, #6] b520: 805a strh r2, [r3, #2] b522: 3401 adds r4, #1 b524: 1ba6 subs r6, r4, r6 b526: b236 sxth r6, r6 for(y = 0; y < h; y++) { b528: 2e00 cmp r6, #0 b52a: dd3c ble.n b5a6 b52c: 1c73 adds r3, r6, #1 b52e: 4698 mov r8, r3 b530: 2601 movs r6, #1 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b532: ac22 add r4, sp, #136 ; 0x88 b534: 4b1a ldr r3, [pc, #104] ; (b5a0 ) b536: 469a mov sl, r3 b538: 9507 str r5, [sp, #28] b53a: 465f mov r7, fp b53c: e019 b.n b572 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, b53e: 8bfa ldrh r2, [r7, #30] b540: 2329 movs r3, #41 ; 0x29 b542: 5cfb ldrb r3, [r7, r3] b544: 9302 str r3, [sp, #8] b546: 9b06 ldr r3, [sp, #24] b548: 9301 str r3, [sp, #4] b54a: 9000 str r0, [sp, #0] b54c: 9b05 ldr r3, [sp, #20] b54e: 0021 movs r1, r4 b550: 9804 ldr r0, [sp, #16] b552: 4d12 ldr r5, [pc, #72] ; (b59c ) b554: 47a8 blx r5 fa.y1--; b556: 8863 ldrh r3, [r4, #2] b558: 3b01 subs r3, #1 b55a: 8063 strh r3, [r4, #2] fa.y2--; b55c: 88e3 ldrh r3, [r4, #6] b55e: 3b01 subs r3, #1 b560: 80e3 strh r3, [r4, #6] b562: 9b09 ldr r3, [sp, #36] ; 0x24 b564: 469c mov ip, r3 b566: 9b07 ldr r3, [sp, #28] b568: 4463 add r3, ip b56a: 9307 str r3, [sp, #28] b56c: 3601 adds r6, #1 for(y = 0; y < h; y++) { b56e: 4546 cmp r6, r8 b570: d018 beq.n b5a4 _lv_memcpy(mask_buf, sh_buf_tmp, w); b572: 9a0b ldr r2, [sp, #44] ; 0x2c b574: 9907 ldr r1, [sp, #28] b576: 9805 ldr r0, [sp, #20] b578: 4b07 ldr r3, [pc, #28] ; (b598 ) b57a: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b57c: 2102 movs r1, #2 b57e: 5e62 ldrsh r2, [r4, r1] b580: 2500 movs r5, #0 b582: 5f61 ldrsh r1, [r4, r5] b584: 9b0b ldr r3, [sp, #44] ; 0x2c b586: 9805 ldr r0, [sp, #20] b588: 47d0 blx sl if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; b58a: 2801 cmp r0, #1 b58c: d1d7 bne.n b53e b58e: 3001 adds r0, #1 b590: e7d5 b.n b53e b592: 46c0 nop ; (mov r8, r8) b594: 0000fc0f .word 0x0000fc0f b598: 00010c8d .word 0x00010c8d b59c: 00005c6d .word 0x00005c6d b5a0: 0000a625 .word 0x0000a625 b5a4: 46bb mov fp, r7 a.x1 = sh_area.x1; b5a6: aa16 add r2, sp, #88 ; 0x58 b5a8: 2100 movs r1, #0 b5aa: 5e53 ldrsh r3, [r2, r1] b5ac: a91c add r1, sp, #112 ; 0x70 b5ae: 800b strh r3, [r1, #0] a.x2 = a.x1 + corner_size - 1; b5b0: 3b01 subs r3, #1 b5b2: 9c0a ldr r4, [sp, #40] ; 0x28 b5b4: 46a4 mov ip, r4 b5b6: 4463 add r3, ip b5b8: 808b strh r3, [r1, #4] a.y1 = sh_area.y1 + corner_size; b5ba: 8853 ldrh r3, [r2, #2] b5bc: 4463 add r3, ip b5be: 804b strh r3, [r1, #2] a.y2 = sh_area.y2 - corner_size; b5c0: 88d3 ldrh r3, [r2, #6] b5c2: 1b1b subs r3, r3, r4 b5c4: 80cb strh r3, [r1, #6] has_com = _lv_area_intersect(&ca, &a, clip); b5c6: 9a04 ldr r2, [sp, #16] b5c8: a81e add r0, sp, #120 ; 0x78 b5ca: 4bc5 ldr r3, [pc, #788] ; (b8e0 ) b5cc: 4798 blx r3 if(has_com) { b5ce: 2800 cmp r0, #0 b5d0: d06c beq.n b6ac if(simple_mode) ca.x2 = LV_MATH_MIN(coords->x1, ca.x2); b5d2: 9b08 ldr r3, [sp, #32] b5d4: 2b00 cmp r3, #0 b5d6: d00a beq.n b5ee b5d8: aa1e add r2, sp, #120 ; 0x78 b5da: 464b mov r3, r9 b5dc: 8818 ldrh r0, [r3, #0] b5de: 8893 ldrh r3, [r2, #4] b5e0: 1c19 adds r1, r3, #0 b5e2: b21b sxth r3, r3 b5e4: b204 sxth r4, r0 b5e6: 42a3 cmp r3, r4 b5e8: dd00 ble.n b5ec b5ea: 1c01 adds r1, r0, #0 b5ec: 8091 strh r1, [r2, #4] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); b5ee: ab1e add r3, sp, #120 ; 0x78 b5f0: 2100 movs r1, #0 b5f2: 5e5a ldrsh r2, [r3, r1] b5f4: 889b ldrh r3, [r3, #4] b5f6: 3301 adds r3, #1 b5f8: 1a9b subs r3, r3, r2 b5fa: b21b sxth r3, r3 b5fc: 9307 str r3, [sp, #28] if(w > 0) { b5fe: 2b00 cmp r3, #0 b600: dd54 ble.n b6ac return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b602: ab1e add r3, sp, #120 ; 0x78 b604: 88df ldrh r7, [r3, #6] b606: 3701 adds r7, #1 b608: 885b ldrh r3, [r3, #2] b60a: 1aff subs r7, r7, r3 b60c: b23f sxth r7, r7 sh_buf_tmp = sh_buf + corner_size * (corner_size - 1); b60e: 9909 ldr r1, [sp, #36] ; 0x24 b610: 000b movs r3, r1 b612: 3b01 subs r3, #1 b614: 434b muls r3, r1 sh_buf_tmp += ca.x1 - a.x1; b616: a91c add r1, sp, #112 ; 0x70 b618: 2000 movs r0, #0 b61a: 5e09 ldrsh r1, [r1, r0] b61c: 1a52 subs r2, r2, r1 b61e: 189a adds r2, r3, r2 b620: 0013 movs r3, r2 b622: 990e ldr r1, [sp, #56] ; 0x38 b624: 468c mov ip, r1 b626: 4463 add r3, ip b628: 930b str r3, [sp, #44] ; 0x2c b62a: 2300 movs r3, #0 *d8 = *s8; b62c: a822 add r0, sp, #136 ; 0x88 b62e: a91e add r1, sp, #120 ; 0x78 b630: 5c5a ldrb r2, [r3, r1] b632: 541a strb r2, [r3, r0] b634: 3301 adds r3, #1 while(len) { b636: 2b08 cmp r3, #8 b638: d1fa bne.n b630 fa.y2 = fa.y1; b63a: ab22 add r3, sp, #136 ; 0x88 b63c: 885a ldrh r2, [r3, #2] b63e: 80da strh r2, [r3, #6] for(y = 0; y < h; y++) { b640: 2f00 cmp r7, #0 b642: dd33 ble.n b6ac b644: 2500 movs r5, #0 _lv_memcpy(mask_buf, sh_buf_tmp, w); b646: 4ba7 ldr r3, [pc, #668] ; (b8e4 ) b648: 4698 mov r8, r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b64a: ac22 add r4, sp, #136 ; 0x88 b64c: 9b08 ldr r3, [sp, #32] b64e: 469a mov sl, r3 b650: 465e mov r6, fp b652: 46bb mov fp, r7 b654: e015 b.n b682 _lv_blend_fill(clip, &fa, b656: 8bf2 ldrh r2, [r6, #30] b658: 2329 movs r3, #41 ; 0x29 b65a: 5cf3 ldrb r3, [r6, r3] b65c: 9302 str r3, [sp, #8] b65e: 2328 movs r3, #40 ; 0x28 b660: 5cf3 ldrb r3, [r6, r3] b662: 9301 str r3, [sp, #4] b664: 9000 str r0, [sp, #0] b666: 9b05 ldr r3, [sp, #20] b668: 0021 movs r1, r4 b66a: 9804 ldr r0, [sp, #16] b66c: 4f9e ldr r7, [pc, #632] ; (b8e8 ) b66e: 47b8 blx r7 fa.y1++; b670: 8863 ldrh r3, [r4, #2] b672: 3301 adds r3, #1 b674: 8063 strh r3, [r4, #2] fa.y2++; b676: 88e3 ldrh r3, [r4, #6] b678: 3301 adds r3, #1 b67a: 80e3 strh r3, [r4, #6] for(y = 0; y < h; y++) { b67c: 3501 adds r5, #1 b67e: 455d cmp r5, fp b680: da13 bge.n b6aa _lv_memcpy(mask_buf, sh_buf_tmp, w); b682: 9a07 ldr r2, [sp, #28] b684: 990b ldr r1, [sp, #44] ; 0x2c b686: 9805 ldr r0, [sp, #20] b688: 47c0 blx r8 mask_res = LV_DRAW_MASK_RES_CHANGED; b68a: 2002 movs r0, #2 if(simple_mode) { b68c: 4653 mov r3, sl b68e: 2b00 cmp r3, #0 b690: d1e1 bne.n b656 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b692: 2302 movs r3, #2 b694: 5ee2 ldrsh r2, [r4, r3] b696: 2300 movs r3, #0 b698: 5ee1 ldrsh r1, [r4, r3] b69a: 9b07 ldr r3, [sp, #28] b69c: 9805 ldr r0, [sp, #20] b69e: 4f93 ldr r7, [pc, #588] ; (b8ec ) b6a0: 47b8 blx r7 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; b6a2: 2801 cmp r0, #1 b6a4: d1d7 bne.n b656 b6a6: 3001 adds r0, #1 b6a8: e7d5 b.n b656 b6aa: 46b3 mov fp, r6 a.x1 = sh_area.x1 + corner_size; b6ac: a91c add r1, sp, #112 ; 0x70 b6ae: ab16 add r3, sp, #88 ; 0x58 b6b0: 881a ldrh r2, [r3, #0] b6b2: 9c0a ldr r4, [sp, #40] ; 0x28 b6b4: 46a4 mov ip, r4 b6b6: 4462 add r2, ip b6b8: 800a strh r2, [r1, #0] a.x2 = sh_area.x2 - corner_size; b6ba: 889a ldrh r2, [r3, #4] b6bc: 1b12 subs r2, r2, r4 b6be: 808a strh r2, [r1, #4] a.y1 = sh_area.y1; b6c0: 2202 movs r2, #2 b6c2: 5e9b ldrsh r3, [r3, r2] b6c4: 804b strh r3, [r1, #2] a.y2 = sh_area.y1 + corner_size - 1; b6c6: 3b01 subs r3, #1 b6c8: 4463 add r3, ip b6ca: 80cb strh r3, [r1, #6] has_com = _lv_area_intersect(&ca, &a, clip); b6cc: 9a04 ldr r2, [sp, #16] b6ce: a81e add r0, sp, #120 ; 0x78 b6d0: 4b83 ldr r3, [pc, #524] ; (b8e0 ) b6d2: 4798 blx r3 if(has_com) { b6d4: 2800 cmp r0, #0 b6d6: d076 beq.n b7c6 if(simple_mode) ca.y2 = LV_MATH_MIN(ca.y2, coords->y1); b6d8: 9b08 ldr r3, [sp, #32] b6da: 2b00 cmp r3, #0 b6dc: d00a beq.n b6f4 b6de: aa1e add r2, sp, #120 ; 0x78 b6e0: 88d0 ldrh r0, [r2, #6] b6e2: 464b mov r3, r9 b6e4: 885b ldrh r3, [r3, #2] b6e6: 1c19 adds r1, r3, #0 b6e8: b21b sxth r3, r3 b6ea: b204 sxth r4, r0 b6ec: 42a3 cmp r3, r4 b6ee: dd00 ble.n b6f2 b6f0: 1c01 adds r1, r0, #0 b6f2: 80d1 strh r1, [r2, #6] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); b6f4: aa1e add r2, sp, #120 ; 0x78 b6f6: 8893 ldrh r3, [r2, #4] b6f8: 3301 adds r3, #1 b6fa: 8811 ldrh r1, [r2, #0] b6fc: 1a5b subs r3, r3, r1 b6fe: b21b sxth r3, r3 b700: 930b str r3, [sp, #44] ; 0x2c return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b702: 2102 movs r1, #2 b704: 5e53 ldrsh r3, [r2, r1] b706: 88d4 ldrh r4, [r2, #6] b708: 3401 adds r4, #1 b70a: 1ae4 subs r4, r4, r3 b70c: b224 sxth r4, r4 sh_buf_tmp = sh_buf + corner_size - 1; b70e: 9909 ldr r1, [sp, #36] ; 0x24 b710: 910c str r1, [sp, #48] ; 0x30 sh_buf_tmp += corner_size * (ca.y1 - a.y1); b712: aa1c add r2, sp, #112 ; 0x70 b714: 2502 movs r5, #2 b716: 5f55 ldrsh r5, [r2, r5] b718: 1b5d subs r5, r3, r5 b71a: 434d muls r5, r1 sh_buf_tmp = sh_buf + corner_size - 1; b71c: 1e4b subs r3, r1, #1 sh_buf_tmp += corner_size * (ca.y1 - a.y1); b71e: 18ed adds r5, r5, r3 b720: 9b0e ldr r3, [sp, #56] ; 0x38 b722: 469c mov ip, r3 b724: 4465 add r5, ip b726: 2300 movs r3, #0 *d8 = *s8; b728: a822 add r0, sp, #136 ; 0x88 b72a: a91e add r1, sp, #120 ; 0x78 b72c: 5c5a ldrb r2, [r3, r1] b72e: 541a strb r2, [r3, r0] b730: 3301 adds r3, #1 while(len) { b732: 2b08 cmp r3, #8 b734: d1fa bne.n b72c fa.y2 = fa.y1; b736: ab22 add r3, sp, #136 ; 0x88 b738: 885a ldrh r2, [r3, #2] b73a: 80da strh r2, [r3, #6] for(y = 0; y < h; y++) { b73c: 2c00 cmp r4, #0 b73e: dd42 ble.n b7c6 b740: 1c63 adds r3, r4, #1 b742: 4698 mov r8, r3 b744: 2601 movs r6, #1 _lv_memset(mask_buf, opa_tmp, w); b746: 4b6a ldr r3, [pc, #424] ; (b8f0 ) b748: 469a mov sl, r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b74a: ac22 add r4, sp, #136 ; 0x88 b74c: 9507 str r5, [sp, #28] b74e: 465f mov r7, fp b750: e01e b.n b790 if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; b752: 9b06 ldr r3, [sp, #24] b754: 2bff cmp r3, #255 ; 0xff b756: d11f bne.n b798 lv_opa_t opa_tmp = sh_buf_tmp[0]; b758: 9906 ldr r1, [sp, #24] b75a: e020 b.n b79e _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, b75c: 8bfa ldrh r2, [r7, #30] b75e: 2329 movs r3, #41 ; 0x29 b760: 5cfb ldrb r3, [r7, r3] b762: 9302 str r3, [sp, #8] b764: 23ff movs r3, #255 ; 0xff b766: 9301 str r3, [sp, #4] b768: 9000 str r0, [sp, #0] b76a: 9b05 ldr r3, [sp, #20] b76c: 0021 movs r1, r4 b76e: 9804 ldr r0, [sp, #16] b770: 4d5d ldr r5, [pc, #372] ; (b8e8 ) b772: 47a8 blx r5 fa.y1++; b774: 8863 ldrh r3, [r4, #2] b776: 3301 adds r3, #1 b778: 8063 strh r3, [r4, #2] fa.y2++; b77a: 88e3 ldrh r3, [r4, #6] b77c: 3301 adds r3, #1 b77e: 80e3 strh r3, [r4, #6] sh_buf_tmp += corner_size; b780: 9b0c ldr r3, [sp, #48] ; 0x30 b782: 469c mov ip, r3 b784: 9b07 ldr r3, [sp, #28] b786: 4463 add r3, ip b788: 9307 str r3, [sp, #28] b78a: 3601 adds r6, #1 for(y = 0; y < h; y++) { b78c: 4546 cmp r6, r8 b78e: d019 beq.n b7c4 lv_opa_t opa_tmp = sh_buf_tmp[0]; b790: 9b07 ldr r3, [sp, #28] b792: 7819 ldrb r1, [r3, #0] if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; b794: 29ff cmp r1, #255 ; 0xff b796: d0dc beq.n b752 b798: 9b06 ldr r3, [sp, #24] b79a: 4359 muls r1, r3 b79c: 0a09 lsrs r1, r1, #8 _lv_memset(mask_buf, opa_tmp, w); b79e: 9a0b ldr r2, [sp, #44] ; 0x2c b7a0: 9805 ldr r0, [sp, #20] b7a2: 47d0 blx sl mask_res = LV_DRAW_MASK_RES_CHANGED; b7a4: 2002 movs r0, #2 if(simple_mode) { b7a6: 9b08 ldr r3, [sp, #32] b7a8: 2b00 cmp r3, #0 b7aa: d1d7 bne.n b75c mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b7ac: 2302 movs r3, #2 b7ae: 5ee2 ldrsh r2, [r4, r3] b7b0: 2300 movs r3, #0 b7b2: 5ee1 ldrsh r1, [r4, r3] b7b4: 9b0b ldr r3, [sp, #44] ; 0x2c b7b6: 9805 ldr r0, [sp, #20] b7b8: 4d4c ldr r5, [pc, #304] ; (b8ec ) b7ba: 47a8 blx r5 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; b7bc: 2801 cmp r0, #1 b7be: d1cd bne.n b75c b7c0: 3001 adds r0, #1 b7c2: e7cb b.n b75c b7c4: 46bb mov fp, r7 a.x1 = sh_area.x1 + corner_size; b7c6: a91c add r1, sp, #112 ; 0x70 b7c8: ab16 add r3, sp, #88 ; 0x58 b7ca: 881a ldrh r2, [r3, #0] b7cc: 9c0a ldr r4, [sp, #40] ; 0x28 b7ce: 46a4 mov ip, r4 b7d0: 4462 add r2, ip b7d2: 800a strh r2, [r1, #0] a.x2 = sh_area.x2 - corner_size; b7d4: 889a ldrh r2, [r3, #4] b7d6: 1b12 subs r2, r2, r4 b7d8: 808a strh r2, [r1, #4] a.y1 = sh_area.y2 - corner_size + 1; b7da: 2206 movs r2, #6 b7dc: 5e9a ldrsh r2, [r3, r2] b7de: 1c53 adds r3, r2, #1 b7e0: 1b1b subs r3, r3, r4 b7e2: 804b strh r3, [r1, #2] a.y2 = sh_area.y2; b7e4: 80ca strh r2, [r1, #6] has_com = _lv_area_intersect(&ca, &a, clip); b7e6: 9a04 ldr r2, [sp, #16] b7e8: a81e add r0, sp, #120 ; 0x78 b7ea: 4b3d ldr r3, [pc, #244] ; (b8e0 ) b7ec: 4798 blx r3 if(has_com) { b7ee: 2800 cmp r0, #0 b7f0: d100 bne.n b7f4 b7f2: e081 b.n b8f8 if(simple_mode) ca.y1 = LV_MATH_MAX(ca.y1, coords->y2); b7f4: 9b08 ldr r3, [sp, #32] b7f6: 2b00 cmp r3, #0 b7f8: d00a beq.n b810 b7fa: aa1e add r2, sp, #120 ; 0x78 b7fc: 8850 ldrh r0, [r2, #2] b7fe: 464b mov r3, r9 b800: 88db ldrh r3, [r3, #6] b802: 1c19 adds r1, r3, #0 b804: b21b sxth r3, r3 b806: b204 sxth r4, r0 b808: 42a3 cmp r3, r4 b80a: da00 bge.n b80e b80c: 1c01 adds r1, r0, #0 b80e: 8051 strh r1, [r2, #2] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); b810: aa1e add r2, sp, #120 ; 0x78 b812: 8893 ldrh r3, [r2, #4] b814: 3301 adds r3, #1 b816: 8811 ldrh r1, [r2, #0] b818: 1a5b subs r3, r3, r1 b81a: b21b sxth r3, r3 b81c: 930b str r3, [sp, #44] ; 0x2c return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b81e: 2106 movs r1, #6 b820: 5e53 ldrsh r3, [r2, r1] b822: 1c5c adds r4, r3, #1 b824: 8852 ldrh r2, [r2, #2] b826: 1aa4 subs r4, r4, r2 b828: b224 sxth r4, r4 sh_buf_tmp = sh_buf + corner_size - 1; b82a: 9909 ldr r1, [sp, #36] ; 0x24 sh_buf_tmp += corner_size * (a.y2 - ca.y2); b82c: aa1c add r2, sp, #112 ; 0x70 b82e: 2506 movs r5, #6 b830: 5f55 ldrsh r5, [r2, r5] b832: 1aed subs r5, r5, r3 b834: 434d muls r5, r1 sh_buf_tmp = sh_buf + corner_size - 1; b836: 1e4b subs r3, r1, #1 sh_buf_tmp += corner_size * (a.y2 - ca.y2); b838: 18ed adds r5, r5, r3 b83a: 9b0e ldr r3, [sp, #56] ; 0x38 b83c: 469c mov ip, r3 b83e: 4465 add r5, ip b840: 2300 movs r3, #0 *d8 = *s8; b842: a822 add r0, sp, #136 ; 0x88 b844: a91e add r1, sp, #120 ; 0x78 b846: 5c5a ldrb r2, [r3, r1] b848: 541a strb r2, [r3, r0] b84a: 3301 adds r3, #1 while(len) { b84c: 2b08 cmp r3, #8 b84e: d1fa bne.n b846 fa.y1 = fa.y2; b850: ab22 add r3, sp, #136 ; 0x88 b852: 88da ldrh r2, [r3, #6] b854: 805a strh r2, [r3, #2] for(y = 0; y < h; y++) { b856: 2c00 cmp r4, #0 b858: dd4e ble.n b8f8 b85a: 1c63 adds r3, r4, #1 b85c: 4698 mov r8, r3 b85e: 2601 movs r6, #1 _lv_memset(mask_buf, opa_tmp, w); b860: 4b23 ldr r3, [pc, #140] ; (b8f0 ) b862: 469a mov sl, r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b864: ac22 add r4, sp, #136 ; 0x88 b866: 9507 str r5, [sp, #28] b868: 465f mov r7, fp b86a: 46cb mov fp, r9 b86c: e01e b.n b8ac if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; b86e: 9b06 ldr r3, [sp, #24] b870: 2bff cmp r3, #255 ; 0xff b872: d11f bne.n b8b4 lv_opa_t opa_tmp = sh_buf_tmp[0]; b874: 9906 ldr r1, [sp, #24] b876: e020 b.n b8ba _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, b878: 8bfa ldrh r2, [r7, #30] b87a: 2329 movs r3, #41 ; 0x29 b87c: 5cfb ldrb r3, [r7, r3] b87e: 9302 str r3, [sp, #8] b880: 23ff movs r3, #255 ; 0xff b882: 9301 str r3, [sp, #4] b884: 9000 str r0, [sp, #0] b886: 9b05 ldr r3, [sp, #20] b888: 0021 movs r1, r4 b88a: 9804 ldr r0, [sp, #16] b88c: 4d16 ldr r5, [pc, #88] ; (b8e8 ) b88e: 47a8 blx r5 fa.y1--; b890: 8863 ldrh r3, [r4, #2] b892: 3b01 subs r3, #1 b894: 8063 strh r3, [r4, #2] fa.y2--; b896: 88e3 ldrh r3, [r4, #6] b898: 3b01 subs r3, #1 b89a: 80e3 strh r3, [r4, #6] sh_buf_tmp += corner_size; b89c: 9b09 ldr r3, [sp, #36] ; 0x24 b89e: 469c mov ip, r3 b8a0: 9b07 ldr r3, [sp, #28] b8a2: 4463 add r3, ip b8a4: 9307 str r3, [sp, #28] b8a6: 3601 adds r6, #1 for(y = 0; y < h; y++) { b8a8: 45b0 cmp r8, r6 b8aa: d023 beq.n b8f4 lv_opa_t opa_tmp = sh_buf_tmp[0]; b8ac: 9b07 ldr r3, [sp, #28] b8ae: 7819 ldrb r1, [r3, #0] if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; b8b0: 29ff cmp r1, #255 ; 0xff b8b2: d0dc beq.n b86e b8b4: 9b06 ldr r3, [sp, #24] b8b6: 4359 muls r1, r3 b8b8: 0a09 lsrs r1, r1, #8 _lv_memset(mask_buf, opa_tmp, w); b8ba: 9a0b ldr r2, [sp, #44] ; 0x2c b8bc: 9805 ldr r0, [sp, #20] b8be: 47d0 blx sl mask_res = LV_DRAW_MASK_RES_CHANGED; b8c0: 2002 movs r0, #2 if(simple_mode) { b8c2: 9b08 ldr r3, [sp, #32] b8c4: 2b00 cmp r3, #0 b8c6: d1d7 bne.n b878 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b8c8: 2302 movs r3, #2 b8ca: 5ee2 ldrsh r2, [r4, r3] b8cc: 2300 movs r3, #0 b8ce: 5ee1 ldrsh r1, [r4, r3] b8d0: 9b0b ldr r3, [sp, #44] ; 0x2c b8d2: 9805 ldr r0, [sp, #20] b8d4: 4d05 ldr r5, [pc, #20] ; (b8ec ) b8d6: 47a8 blx r5 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; b8d8: 2801 cmp r0, #1 b8da: d1cd bne.n b878 b8dc: 3001 adds r0, #1 b8de: e7cb b.n b878 b8e0: 0000fc0f .word 0x0000fc0f b8e4: 00010c8d .word 0x00010c8d b8e8: 00005c6d .word 0x00005c6d b8ec: 0000a625 .word 0x0000a625 b8f0: 00010fad .word 0x00010fad b8f4: 46d9 mov r9, fp b8f6: 46bb mov fp, r7 a.x1 = sh_area.x1 + corner_size; b8f8: a91c add r1, sp, #112 ; 0x70 b8fa: ab16 add r3, sp, #88 ; 0x58 b8fc: 881a ldrh r2, [r3, #0] b8fe: 9c0a ldr r4, [sp, #40] ; 0x28 b900: 46a4 mov ip, r4 b902: 4462 add r2, ip b904: 800a strh r2, [r1, #0] a.x2 = sh_area.x2 - corner_size; b906: 889a ldrh r2, [r3, #4] b908: 1b12 subs r2, r2, r4 b90a: 808a strh r2, [r1, #4] a.y1 = sh_area.y1 + corner_size; b90c: 885a ldrh r2, [r3, #2] b90e: 4462 add r2, ip b910: 804a strh r2, [r1, #2] a.y2 = sh_area.y2 - corner_size; b912: 88db ldrh r3, [r3, #6] b914: 1b1b subs r3, r3, r4 b916: 80cb strh r3, [r1, #6] has_com = _lv_area_intersect(&ca, &a, clip); b918: 9a04 ldr r2, [sp, #16] b91a: a81e add r0, sp, #120 ; 0x78 b91c: 4bc4 ldr r3, [pc, #784] ; (bc30 ) b91e: 4798 blx r3 if(has_com && simple_mode == false) { b920: 2800 cmp r0, #0 b922: d04c beq.n b9be b924: 9b08 ldr r3, [sp, #32] b926: 2b00 cmp r3, #0 b928: d149 bne.n b9be return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); b92a: aa1e add r2, sp, #120 ; 0x78 b92c: 8893 ldrh r3, [r2, #4] b92e: 3301 adds r3, #1 b930: 8811 ldrh r1, [r2, #0] b932: 1a5b subs r3, r3, r1 b934: b21b sxth r3, r3 b936: 9306 str r3, [sp, #24] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b938: 88d7 ldrh r7, [r2, #6] b93a: 3701 adds r7, #1 b93c: 8853 ldrh r3, [r2, #2] b93e: 1aff subs r7, r7, r3 b940: b23f sxth r7, r7 b942: 2300 movs r3, #0 *d8 = *s8; b944: a822 add r0, sp, #136 ; 0x88 b946: 0011 movs r1, r2 b948: 5c5a ldrb r2, [r3, r1] b94a: 541a strb r2, [r3, r0] b94c: 3301 adds r3, #1 while(len) { b94e: 2b08 cmp r3, #8 b950: d1fa bne.n b948 fa.y2 = fa.y1; b952: ab22 add r3, sp, #136 ; 0x88 b954: 885a ldrh r2, [r3, #2] b956: 80da strh r2, [r3, #6] for(y = 0; y < h; y++) { b958: 2f00 cmp r7, #0 b95a: dd30 ble.n b9be b95c: 3701 adds r7, #1 b95e: 2501 movs r5, #1 _lv_memset(mask_buf, dsc->shadow_opa, w); b960: 4bb4 ldr r3, [pc, #720] ; (bc34 ) b962: 469a mov sl, r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b964: ac22 add r4, sp, #136 ; 0x88 b966: 4bb4 ldr r3, [pc, #720] ; (bc38 ) b968: 4698 mov r8, r3 b96a: 465e mov r6, fp b96c: 46bb mov fp, r7 b96e: e014 b.n b99a _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, b970: 8bf2 ldrh r2, [r6, #30] b972: 2329 movs r3, #41 ; 0x29 b974: 5cf3 ldrb r3, [r6, r3] b976: 9302 str r3, [sp, #8] b978: 23ff movs r3, #255 ; 0xff b97a: 9301 str r3, [sp, #4] b97c: 9000 str r0, [sp, #0] b97e: 9b05 ldr r3, [sp, #20] b980: 0021 movs r1, r4 b982: 9804 ldr r0, [sp, #16] b984: 4fad ldr r7, [pc, #692] ; (bc3c ) b986: 47b8 blx r7 fa.y1++; b988: 8863 ldrh r3, [r4, #2] b98a: 3301 adds r3, #1 b98c: 8063 strh r3, [r4, #2] fa.y2++; b98e: 88e3 ldrh r3, [r4, #6] b990: 3301 adds r3, #1 b992: 80e3 strh r3, [r4, #6] b994: 3501 adds r5, #1 for(y = 0; y < h; y++) { b996: 45ab cmp fp, r5 b998: d010 beq.n b9bc _lv_memset(mask_buf, dsc->shadow_opa, w); b99a: 2328 movs r3, #40 ; 0x28 b99c: 5cf1 ldrb r1, [r6, r3] b99e: 9a06 ldr r2, [sp, #24] b9a0: 9f05 ldr r7, [sp, #20] b9a2: 0038 movs r0, r7 b9a4: 47d0 blx sl mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b9a6: 2102 movs r1, #2 b9a8: 5e62 ldrsh r2, [r4, r1] b9aa: 2000 movs r0, #0 b9ac: 5e21 ldrsh r1, [r4, r0] b9ae: 9b06 ldr r3, [sp, #24] b9b0: 0038 movs r0, r7 b9b2: 47c0 blx r8 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; b9b4: 2801 cmp r0, #1 b9b6: d1db bne.n b970 b9b8: 3001 adds r0, #1 b9ba: e7d9 b.n b970 b9bc: 46b3 mov fp, r6 lv_draw_mask_remove_id(mask_rout_id); b9be: 980f ldr r0, [sp, #60] ; 0x3c b9c0: 4b9f ldr r3, [pc, #636] ; (bc40 ) b9c2: 4798 blx r3 _lv_mem_buf_release(mask_buf); b9c4: 9805 ldr r0, [sp, #20] b9c6: 4c9f ldr r4, [pc, #636] ; (bc44 ) b9c8: 47a0 blx r4 _lv_mem_buf_release(sh_buf); b9ca: 980e ldr r0, [sp, #56] ; 0x38 b9cc: 47a0 blx r4 if(dsc->bg_opa <= LV_OPA_MIN) return; b9ce: 465b mov r3, fp b9d0: 7b1b ldrb r3, [r3, #12] b9d2: 469a mov sl, r3 b9d4: 2b05 cmp r3, #5 b9d6: d93f bls.n ba58 b9d8: 2300 movs r3, #0 *d8 = *s8; b9da: a91a add r1, sp, #104 ; 0x68 b9dc: 4648 mov r0, r9 b9de: 5cc2 ldrb r2, [r0, r3] b9e0: 545a strb r2, [r3, r1] b9e2: 3301 adds r3, #1 while(len) { b9e4: 2b08 cmp r3, #8 b9e6: d1fa bne.n b9de b9e8: 4681 mov r9, r0 if(dsc->border_width > 1 && dsc->border_opa >= LV_OPA_MAX && dsc->radius != 0) { b9ea: 465b mov r3, fp b9ec: 2210 movs r2, #16 b9ee: 5e9b ldrsh r3, [r3, r2] b9f0: 2b01 cmp r3, #1 b9f2: dd1f ble.n ba34 b9f4: 465b mov r3, fp b9f6: 7d1b ldrb r3, [r3, #20] b9f8: 2bf9 cmp r3, #249 ; 0xf9 b9fa: d91b bls.n ba34 b9fc: 465b mov r3, fp b9fe: 2200 movs r2, #0 ba00: 5e9b ldrsh r3, [r3, r2] ba02: 2b00 cmp r3, #0 ba04: d016 beq.n ba34 coords_bg.x1 += (dsc->border_side & LV_BORDER_SIDE_LEFT) ? 1 : 0; ba06: 465b mov r3, fp ba08: 8a58 ldrh r0, [r3, #18] ba0a: ab1a add r3, sp, #104 ; 0x68 ba0c: 0881 lsrs r1, r0, #2 ba0e: 2201 movs r2, #1 ba10: 4011 ands r1, r2 ba12: 881c ldrh r4, [r3, #0] ba14: 1909 adds r1, r1, r4 ba16: 8019 strh r1, [r3, #0] coords_bg.y1 += (dsc->border_side & LV_BORDER_SIDE_TOP) ? 1 : 0; ba18: 0841 lsrs r1, r0, #1 ba1a: 4011 ands r1, r2 ba1c: 885c ldrh r4, [r3, #2] ba1e: 1909 adds r1, r1, r4 ba20: 8059 strh r1, [r3, #2] coords_bg.x2 -= (dsc->border_side & LV_BORDER_SIDE_RIGHT) ? 1 : 0; ba22: 08c4 lsrs r4, r0, #3 ba24: 4014 ands r4, r2 ba26: 8899 ldrh r1, [r3, #4] ba28: 1b09 subs r1, r1, r4 ba2a: 8099 strh r1, [r3, #4] coords_bg.y2 -= (dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? 1 : 0; ba2c: 4002 ands r2, r0 ba2e: 88d9 ldrh r1, [r3, #6] ba30: 1a8a subs r2, r1, r2 ba32: 80da strh r2, [r3, #6] if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; ba34: 4653 mov r3, sl ba36: 2bfa cmp r3, #250 ; 0xfa ba38: d901 bls.n ba3e ba3a: 23ff movs r3, #255 ; 0xff ba3c: 469a mov sl, r3 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); ba3e: 4b82 ldr r3, [pc, #520] ; (bc48 ) ba40: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); ba42: 4b82 ldr r3, [pc, #520] ; (bc4c ) ba44: 4798 blx r3 ba46: 0007 movs r7, r0 is_common = _lv_area_intersect(&draw_area, &coords_bg, clip); ba48: 9a04 ldr r2, [sp, #16] ba4a: a91a add r1, sp, #104 ; 0x68 ba4c: a81c add r0, sp, #112 ; 0x70 ba4e: 4b78 ldr r3, [pc, #480] ; (bc30 ) ba50: 4798 blx r3 if(is_common == false) return; ba52: 2800 cmp r0, #0 ba54: d000 beq.n ba58 ba56: e09d b.n bb94 _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; ba58: 465b mov r3, fp ba5a: 6ad8 ldr r0, [r3, #44] ; 0x2c ba5c: 2800 cmp r0, #0 ba5e: d006 beq.n ba6e if(dsc->pattern_opa <= LV_OPA_MIN) return; ba60: 2336 movs r3, #54 ; 0x36 ba62: 465a mov r2, fp ba64: 5cd3 ldrb r3, [r2, r3] ba66: 2b05 cmp r3, #5 ba68: d901 bls.n ba6e ba6a: f000 fbd7 bl c21c if(dsc->border_opa <= LV_OPA_MIN) return; ba6e: 465b mov r3, fp ba70: 7d1e ldrb r6, [r3, #20] ba72: 2e05 cmp r6, #5 ba74: d919 bls.n baaa if(dsc->border_width == 0) return; ba76: 2210 movs r2, #16 ba78: 5e9b ldrsh r3, [r3, r2] ba7a: 2b00 cmp r3, #0 ba7c: d015 beq.n baaa if(dsc->border_side == LV_BORDER_SIDE_NONE) return; ba7e: 465b mov r3, fp ba80: 2212 movs r2, #18 ba82: 5e9b ldrsh r3, [r3, r2] ba84: 2b00 cmp r3, #0 ba86: d010 beq.n baaa if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; ba88: 2efa cmp r6, #250 ; 0xfa ba8a: d900 bls.n ba8e ba8c: 26ff movs r6, #255 ; 0xff lv_disp_t * disp = _lv_refr_get_disp_refreshing(); ba8e: 4b6e ldr r3, [pc, #440] ; (bc48 ) ba90: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); ba92: 4b6e ldr r3, [pc, #440] ; (bc4c ) ba94: 4798 blx r3 ba96: 0007 movs r7, r0 is_common = _lv_area_intersect(&draw_area, coords, clip); ba98: 9a04 ldr r2, [sp, #16] ba9a: 4649 mov r1, r9 ba9c: a818 add r0, sp, #96 ; 0x60 ba9e: 4b64 ldr r3, [pc, #400] ; (bc30 ) baa0: 4798 blx r3 if(is_common == false) return; baa2: 2800 cmp r0, #0 baa4: d001 beq.n baaa baa6: f000 fd23 bl c4f0 } 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; baaa: 465b mov r3, fp baac: 6bd9 ldr r1, [r3, #60] ; 0x3c baae: 2900 cmp r1, #0 bab0: d006 beq.n bac0 if(dsc->value_opa <= LV_OPA_MIN) return; bab2: 2344 movs r3, #68 ; 0x44 bab4: 465a mov r2, fp bab6: 5cd3 ldrb r3, [r2, r3] bab8: 2b05 cmp r3, #5 baba: d901 bls.n bac0 babc: f001 f838 bl cb30 if(dsc->outline_opa <= LV_OPA_MIN) return; bac0: 465b mov r3, fp bac2: 7f1b ldrb r3, [r3, #28] bac4: 4698 mov r8, r3 bac6: 2b05 cmp r3, #5 bac8: d95d bls.n bb86 if(dsc->outline_width == 0) return; baca: 465b mov r3, fp bacc: 2218 movs r2, #24 bace: 5e9b ldrsh r3, [r3, r2] bad0: 2b00 cmp r3, #0 bad2: d058 beq.n bb86 if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; bad4: 4643 mov r3, r8 bad6: 2bfa cmp r3, #250 ; 0xfa bad8: d901 bls.n bade bada: 23ff movs r3, #255 ; 0xff badc: 4698 mov r8, r3 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); bade: 4b5c ldr r3, [pc, #368] ; (bc50 ) bae0: 4798 blx r3 bae2: 900a str r0, [sp, #40] ; 0x28 bae4: 2300 movs r3, #0 *d8 = *s8; bae6: a916 add r1, sp, #88 ; 0x58 bae8: 4648 mov r0, r9 baea: 5cc2 ldrb r2, [r0, r3] baec: 545a strb r2, [r3, r1] baee: 3301 adds r3, #1 while(len) { baf0: 2b08 cmp r3, #8 baf2: d1fa bne.n baea area_inner.x1 -= dsc->outline_pad; baf4: 465b mov r3, fp baf6: 8b5d ldrh r5, [r3, #26] baf8: ab16 add r3, sp, #88 ; 0x58 bafa: 881a ldrh r2, [r3, #0] bafc: 1b52 subs r2, r2, r5 bafe: b292 uxth r2, r2 bb00: 4692 mov sl, r2 bb02: 801a strh r2, [r3, #0] area_inner.y1 -= dsc->outline_pad; bb04: 885a ldrh r2, [r3, #2] bb06: 1b52 subs r2, r2, r5 bb08: b292 uxth r2, r2 bb0a: 9207 str r2, [sp, #28] bb0c: 805a strh r2, [r3, #2] area_inner.x2 += dsc->outline_pad; bb0e: 889f ldrh r7, [r3, #4] bb10: 19ef adds r7, r5, r7 bb12: b2bf uxth r7, r7 bb14: 809f strh r7, [r3, #4] area_inner.y2 += dsc->outline_pad; bb16: 88da ldrh r2, [r3, #6] bb18: 18ad adds r5, r5, r2 bb1a: b2ad uxth r5, r5 bb1c: 80dd strh r5, [r3, #6] int32_t rin = dsc->radius; bb1e: 465b mov r3, fp bb20: 2200 movs r2, #0 bb22: 5e9b ldrsh r3, [r3, r2] bb24: 9306 str r3, [sp, #24] int32_t rout = rin + dsc->outline_width; bb26: 465b mov r3, fp bb28: 2218 movs r2, #24 bb2a: 5e9b ldrsh r3, [r3, r2] bb2c: 9305 str r3, [sp, #20] bb2e: 2300 movs r3, #0 *d8 = *s8; bb30: a818 add r0, sp, #96 ; 0x60 bb32: a916 add r1, sp, #88 ; 0x58 bb34: 5c5a ldrb r2, [r3, r1] bb36: 541a strb r2, [r3, r0] bb38: 3301 adds r3, #1 while(len) { bb3a: 2b08 cmp r3, #8 bb3c: d1fa bne.n bb34 area_outer.x1 -= dsc->outline_width; bb3e: 466b mov r3, sp bb40: 8a9c ldrh r4, [r3, #20] bb42: ae18 add r6, sp, #96 ; 0x60 bb44: 8833 ldrh r3, [r6, #0] bb46: 1b1b subs r3, r3, r4 bb48: b29b uxth r3, r3 bb4a: 9308 str r3, [sp, #32] bb4c: 8033 strh r3, [r6, #0] area_outer.x2 += dsc->outline_width; bb4e: 88b3 ldrh r3, [r6, #4] bb50: 18e3 adds r3, r4, r3 bb52: b29b uxth r3, r3 bb54: 9309 str r3, [sp, #36] ; 0x24 bb56: 80b3 strh r3, [r6, #4] area_outer.y1 -= dsc->outline_width; bb58: 8873 ldrh r3, [r6, #2] bb5a: 1b1b subs r3, r3, r4 bb5c: b29b uxth r3, r3 bb5e: 930b str r3, [sp, #44] ; 0x2c bb60: 8073 strh r3, [r6, #2] area_outer.y2 += dsc->outline_width; bb62: 88f3 ldrh r3, [r6, #6] bb64: 18e4 adds r4, r4, r3 bb66: b2a4 uxth r4, r4 bb68: 80f4 strh r4, [r6, #6] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); bb6a: 4b37 ldr r3, [pc, #220] ; (bc48 ) bb6c: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); bb6e: 4b37 ldr r3, [pc, #220] ; (bc4c ) bb70: 4798 blx r3 bb72: 4681 mov r9, r0 is_common = _lv_area_intersect(&draw_area, &area_outer, clip); bb74: 9a04 ldr r2, [sp, #16] bb76: 0031 movs r1, r6 bb78: a81a add r0, sp, #104 ; 0x68 bb7a: 4b2d ldr r3, [pc, #180] ; (bc30 ) bb7c: 4798 blx r3 if(is_common == false) return; bb7e: 2800 cmp r0, #0 bb80: d001 beq.n bb86 bb82: f001 f831 bl cbe8 } bb86: b031 add sp, #196 ; 0xc4 bb88: bc3c pop {r2, r3, r4, r5} bb8a: 4690 mov r8, r2 bb8c: 4699 mov r9, r3 bb8e: 46a2 mov sl, r4 bb90: 46ab mov fp, r5 bb92: bdf0 pop {r4, r5, r6, r7, pc} draw_area.x1 -= disp_area->x1; bb94: 8a38 ldrh r0, [r7, #16] bb96: aa1c add r2, sp, #112 ; 0x70 bb98: 8811 ldrh r1, [r2, #0] bb9a: 1a09 subs r1, r1, r0 bb9c: b289 uxth r1, r1 bb9e: 8011 strh r1, [r2, #0] draw_area.y1 -= disp_area->y1; bba0: 8a7d ldrh r5, [r7, #18] bba2: 8854 ldrh r4, [r2, #2] bba4: 1b64 subs r4, r4, r5 bba6: 8054 strh r4, [r2, #2] draw_area.x2 -= disp_area->x1; bba8: 8893 ldrh r3, [r2, #4] bbaa: 1a1b subs r3, r3, r0 bbac: b29b uxth r3, r3 bbae: 8093 strh r3, [r2, #4] draw_area.y2 -= disp_area->y1; bbb0: 88d0 ldrh r0, [r2, #6] bbb2: 1b40 subs r0, r0, r5 bbb4: 80d0 strh r0, [r2, #6] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); bbb6: 3301 adds r3, #1 bbb8: 1a5b subs r3, r3, r1 bbba: b21b sxth r3, r3 bbbc: 930a str r3, [sp, #40] ; 0x28 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); bbbe: 930b str r3, [sp, #44] ; 0x2c bbc0: 0018 movs r0, r3 bbc2: 4b24 ldr r3, [pc, #144] ; (bc54 ) bbc4: 4798 blx r3 bbc6: 9006 str r0, [sp, #24] uint16_t other_mask_cnt = lv_draw_mask_get_cnt(); bbc8: 4b21 ldr r3, [pc, #132] ; (bc50 ) bbca: 4798 blx r3 bbcc: b283 uxth r3, r0 bbce: 930c str r3, [sp, #48] ; 0x30 if(other_mask_cnt) simple_mode = false; bbd0: 2200 movs r2, #0 bbd2: 9207 str r2, [sp, #28] bbd4: 2b00 cmp r3, #0 bbd6: d106 bne.n bbe6 else if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) simple_mode = false; bbd8: 465b mov r3, fp bbda: 799b ldrb r3, [r3, #6] bbdc: 3b02 subs r3, #2 bbde: 1e5a subs r2, r3, #1 bbe0: 4193 sbcs r3, r2 bbe2: b2db uxtb r3, r3 bbe4: 9307 str r3, [sp, #28] bbe6: a91a add r1, sp, #104 ; 0x68 bbe8: 888c ldrh r4, [r1, #4] bbea: 3401 adds r4, #1 bbec: 880b ldrh r3, [r1, #0] bbee: 1ae4 subs r4, r4, r3 bbf0: b224 sxth r4, r4 int32_t coords_w = lv_area_get_width(&coords_bg); bbf2: 0026 movs r6, r4 int32_t rout = dsc->radius; bbf4: 465b mov r3, fp bbf6: 2200 movs r2, #0 bbf8: 5e9a ldrsh r2, [r3, r2] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); bbfa: 88cb ldrh r3, [r1, #6] bbfc: 3301 adds r3, #1 bbfe: 8849 ldrh r1, [r1, #2] bc00: 1a5b subs r3, r3, r1 int32_t short_side = LV_MATH_MIN(coords_w, coords_h); bc02: b21b sxth r3, r3 bc04: 42a3 cmp r3, r4 bc06: dd00 ble.n bc0a bc08: 0023 movs r3, r4 if(rout > short_side >> 1) rout = short_side >> 1; bc0a: 105b asrs r3, r3, #1 bc0c: 4698 mov r8, r3 bc0e: 4293 cmp r3, r2 bc10: dd00 ble.n bc14 bc12: 4690 mov r8, r2 if(simple_mode && rout == 0 && (dsc->bg_grad_dir == LV_GRAD_DIR_NONE)) { bc14: 9b07 ldr r3, [sp, #28] bc16: 2b00 cmp r3, #0 bc18: d02f beq.n bc7a bc1a: 4643 mov r3, r8 bc1c: 2b00 cmp r3, #0 bc1e: d12c bne.n bc7a bc20: 465b mov r3, fp bc22: 799b ldrb r3, [r3, #6] bc24: 2b00 cmp r3, #0 bc26: d017 beq.n bc58 int16_t mask_rout_id = LV_MASK_ID_INV; bc28: 2301 movs r3, #1 bc2a: 425b negs r3, r3 bc2c: 930f str r3, [sp, #60] ; 0x3c bc2e: e033 b.n bc98 bc30: 0000fc0f .word 0x0000fc0f bc34: 00010fad .word 0x00010fad bc38: 0000a625 .word 0x0000a625 bc3c: 00005c6d .word 0x00005c6d bc40: 0000a679 .word 0x0000a679 bc44: 00010bd5 .word 0x00010bd5 bc48: 000043b1 .word 0x000043b1 bc4c: 0000f709 .word 0x0000f709 bc50: 0000a6c1 .word 0x0000a6c1 bc54: 00010ec1 .word 0x00010ec1 _lv_blend_fill(clip, &coords_bg, bc58: 465b mov r3, fp bc5a: 885a ldrh r2, [r3, #2] bc5c: 7b5b ldrb r3, [r3, #13] bc5e: 9302 str r3, [sp, #8] bc60: 4653 mov r3, sl bc62: 9301 str r3, [sp, #4] bc64: 2301 movs r3, #1 bc66: 9300 str r3, [sp, #0] bc68: 2300 movs r3, #0 bc6a: a91a add r1, sp, #104 ; 0x68 bc6c: 9804 ldr r0, [sp, #16] bc6e: 4cae ldr r4, [pc, #696] ; (bf28 ) bc70: 47a0 blx r4 int16_t mask_rout_id = LV_MASK_ID_INV; bc72: 2301 movs r3, #1 bc74: 425b negs r3, r3 bc76: 930f str r3, [sp, #60] ; 0x3c bc78: e277 b.n c16a if(rout > 0) { bc7a: 4643 mov r3, r8 bc7c: 2b00 cmp r3, #0 bc7e: dd37 ble.n bcf0 lv_draw_mask_radius_init(&mask_rout_param, &coords_bg, rout, false); bc80: 4643 mov r3, r8 bc82: b21a sxth r2, r3 bc84: 2300 movs r3, #0 bc86: a91a add r1, sp, #104 ; 0x68 bc88: a829 add r0, sp, #164 ; 0xa4 bc8a: 4da8 ldr r5, [pc, #672] ; (bf2c ) bc8c: 47a8 blx r5 mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); bc8e: 2100 movs r1, #0 bc90: a829 add r0, sp, #164 ; 0xa4 bc92: 4ba7 ldr r3, [pc, #668] ; (bf30 ) bc94: 4798 blx r3 bc96: 900f str r0, [sp, #60] ; 0x3c lv_color_t grad_color = dsc->bg_color; bc98: 465b mov r3, fp bc9a: 885b ldrh r3, [r3, #2] bc9c: 466a mov r2, sp bc9e: 8413 strh r3, [r2, #32] if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR && dsc->bg_color.full != dsc->bg_grad_color.full) { bca0: 465b mov r3, fp bca2: 799b ldrb r3, [r3, #6] lv_color_t * grad_map = NULL; bca4: 2200 movs r2, #0 bca6: 920d str r2, [sp, #52] ; 0x34 if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR && dsc->bg_color.full != dsc->bg_grad_color.full) { bca8: 2b02 cmp r3, #2 bcaa: d025 beq.n bcf8 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); bcac: ab1a add r3, sp, #104 ; 0x68 bcae: 2204 movs r2, #4 bcb0: 5e99 ldrsh r1, [r3, r2] bcb2: 2000 movs r0, #0 bcb4: 5e18 ldrsh r0, [r3, r0] bcb6: 1c4b adds r3, r1, #1 bcb8: 1a1b subs r3, r3, r0 if(lv_area_get_width(&coords_bg) - 2 * rout > SPLIT_LIMIT) split = true; bcba: b21b sxth r3, r3 bcbc: 4642 mov r2, r8 bcbe: 0052 lsls r2, r2, #1 bcc0: 1a9b subs r3, r3, r2 bcc2: 9309 str r3, [sp, #36] ; 0x24 fill_area.x1 = coords_bg.x1; bcc4: aa1e add r2, sp, #120 ; 0x78 bcc6: 8010 strh r0, [r2, #0] fill_area.x2 = coords_bg.x2; bcc8: 8091 strh r1, [r2, #4] fill_area.y1 = disp_area->y1 + draw_area.y1; bcca: a91c add r1, sp, #112 ; 0x70 bccc: 2302 movs r3, #2 bcce: 5ecd ldrsh r5, [r1, r3] bcd0: 8a7b ldrh r3, [r7, #18] bcd2: 195b adds r3, r3, r5 bcd4: b21b sxth r3, r3 bcd6: 8053 strh r3, [r2, #2] fill_area.y2 = fill_area.y1; bcd8: 80d3 strh r3, [r2, #6] for(h = draw_area.y1; h <= draw_area.y2; h++) { bcda: 2206 movs r2, #6 bcdc: 5e8b ldrsh r3, [r1, r2] bcde: 429d cmp r5, r3 bce0: dd00 ble.n bce4 bce2: e232 b.n c14a mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); bce4: 464b mov r3, r9 bce6: 9310 str r3, [sp, #64] ; 0x40 bce8: 46b9 mov r9, r7 bcea: 465e mov r6, fp bcec: 46d3 mov fp, sl bcee: e0e8 b.n bec2 int16_t mask_rout_id = LV_MASK_ID_INV; bcf0: 2301 movs r3, #1 bcf2: 425b negs r3, r3 bcf4: 930f str r3, [sp, #60] ; 0x3c bcf6: e7cf b.n bc98 if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR && dsc->bg_color.full != dsc->bg_grad_color.full) { bcf8: 465b mov r3, fp bcfa: 885a ldrh r2, [r3, #2] bcfc: 889b ldrh r3, [r3, #4] bcfe: 429a cmp r2, r3 bd00: d0d4 beq.n bcac grad_map = _lv_mem_buf_get(coords_w * sizeof(lv_color_t)); bd02: 0060 lsls r0, r4, #1 bd04: 4b8b ldr r3, [pc, #556] ; (bf34 ) bd06: 4798 blx r3 bd08: 900d str r0, [sp, #52] ; 0x34 for(i = 0; i < coords_w; i++) { bd0a: 2e00 cmp r6, #0 bd0c: ddce ble.n bcac bd0e: 2500 movs r5, #0 grad_map[i] = grad_get(dsc, coords_w, i); bd10: 4642 mov r2, r8 bd12: 9209 str r2, [sp, #36] ; 0x24 bd14: 46b0 mov r8, r6 bd16: 002e movs r6, r5 bd18: 465d mov r5, fp bd1a: 46bb mov fp, r7 bd1c: 9005 str r0, [sp, #20] bd1e: e01e b.n bd5e if(i <= min) return dsc->bg_color; bd20: 78a9 ldrb r1, [r5, #2] bd22: 06c9 lsls r1, r1, #27 bd24: 0ec8 lsrs r0, r1, #27 bd26: 886b ldrh r3, [r5, #2] bd28: 055b lsls r3, r3, #21 bd2a: 0e9b lsrs r3, r3, #26 bd2c: 78ea ldrb r2, [r5, #3] bd2e: 08d2 lsrs r2, r2, #3 grad_map[i] = grad_get(dsc, coords_w, i); bd30: 7821 ldrb r1, [r4, #0] bd32: 271f movs r7, #31 bd34: 43b9 bics r1, r7 bd36: 4301 orrs r1, r0 bd38: 7021 strb r1, [r4, #0] bd3a: 0159 lsls r1, r3, #5 bd3c: 8823 ldrh r3, [r4, #0] bd3e: 487e ldr r0, [pc, #504] ; (bf38 ) bd40: 4003 ands r3, r0 bd42: 430b orrs r3, r1 bd44: 8023 strh r3, [r4, #0] bd46: 00d2 lsls r2, r2, #3 bd48: 0a1b lsrs r3, r3, #8 bd4a: 2107 movs r1, #7 bd4c: 400b ands r3, r1 bd4e: 4313 orrs r3, r2 bd50: 7063 strb r3, [r4, #1] for(i = 0; i < coords_w; i++) { bd52: 3601 adds r6, #1 bd54: 9b05 ldr r3, [sp, #20] bd56: 3302 adds r3, #2 bd58: 9305 str r3, [sp, #20] bd5a: 45b0 cmp r8, r6 bd5c: dd58 ble.n be10 grad_map[i] = grad_get(dsc, coords_w, i); bd5e: 9c05 ldr r4, [sp, #20] int32_t min = (dsc->bg_main_color_stop * s) >> 8; bd60: 2308 movs r3, #8 bd62: 5ee9 ldrsh r1, [r5, r3] bd64: 4640 mov r0, r8 bd66: 4348 muls r0, r1 bd68: 1200 asrs r0, r0, #8 if(i <= min) return dsc->bg_color; bd6a: b232 sxth r2, r6 bd6c: 4290 cmp r0, r2 bd6e: dad7 bge.n bd20 int32_t max = (dsc->bg_grad_color_stop * s) >> 8; bd70: 270a movs r7, #10 bd72: 5feb ldrsh r3, [r5, r7] bd74: 4647 mov r7, r8 bd76: 435f muls r7, r3 bd78: 123f asrs r7, r7, #8 if(i >= max) return dsc->bg_grad_color; bd7a: 42ba cmp r2, r7 bd7c: da3f bge.n bdfe int32_t d = dsc->bg_grad_color_stop - dsc->bg_main_color_stop; bd7e: 1a59 subs r1, r3, r1 d = (s * d) >> 8; bd80: 4643 mov r3, r8 bd82: 4359 muls r1, r3 i -= min; bd84: 1a30 subs r0, r6, r0 lv_opa_t mix = (i * 255) / d; bd86: b200 sxth r0, r0 bd88: 0203 lsls r3, r0, #8 bd8a: 1a18 subs r0, r3, r0 d = (s * d) >> 8; bd8c: 1209 asrs r1, r1, #8 lv_opa_t mix = (i * 255) / d; bd8e: 4b6b ldr r3, [pc, #428] ; (bf3c ) bd90: 4798 blx r3 bd92: 23ff movs r3, #255 ; 0xff bd94: 4018 ands r0, r3 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); bd96: 1a19 subs r1, r3, r0 bd98: 796a ldrb r2, [r5, #5] bd9a: 08d2 lsrs r2, r2, #3 bd9c: 4342 muls r2, r0 bd9e: 78eb ldrb r3, [r5, #3] bda0: 08db lsrs r3, r3, #3 bda2: 434b muls r3, r1 bda4: 18d3 adds r3, r2, r3 bda6: 021a lsls r2, r3, #8 bda8: 18d2 adds r2, r2, r3 bdaa: 01d2 lsls r2, r2, #7 bdac: 18d2 adds r2, r2, r3 bdae: 0dd2 lsrs r2, r2, #23 bdb0: 231f movs r3, #31 bdb2: 401a ands r2, r3 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); bdb4: 88ab ldrh r3, [r5, #4] bdb6: 055b lsls r3, r3, #21 bdb8: 0e9b lsrs r3, r3, #26 bdba: 4343 muls r3, r0 bdbc: 469c mov ip, r3 bdbe: 886b ldrh r3, [r5, #2] bdc0: 055b lsls r3, r3, #21 bdc2: 0e9b lsrs r3, r3, #26 bdc4: 434b muls r3, r1 bdc6: 4463 add r3, ip bdc8: 021f lsls r7, r3, #8 bdca: 46bc mov ip, r7 bdcc: 449c add ip, r3 bdce: 4667 mov r7, ip bdd0: 01ff lsls r7, r7, #7 bdd2: 46bc mov ip, r7 bdd4: 4463 add r3, ip bdd6: 0ddb lsrs r3, r3, #23 bdd8: 273f movs r7, #63 ; 0x3f bdda: 403b ands r3, r7 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); bddc: 792f ldrb r7, [r5, #4] bdde: 06ff lsls r7, r7, #27 bde0: 0eff lsrs r7, r7, #27 bde2: 4378 muls r0, r7 bde4: 78af ldrb r7, [r5, #2] bde6: 06ff lsls r7, r7, #27 bde8: 0eff lsrs r7, r7, #27 bdea: 4379 muls r1, r7 bdec: 1840 adds r0, r0, r1 bdee: 0201 lsls r1, r0, #8 bdf0: 1809 adds r1, r1, r0 bdf2: 01c9 lsls r1, r1, #7 bdf4: 1809 adds r1, r1, r0 bdf6: 0dc9 lsrs r1, r1, #23 bdf8: 201f movs r0, #31 bdfa: 4008 ands r0, r1 bdfc: e798 b.n bd30 if(i >= max) return dsc->bg_grad_color; bdfe: 7929 ldrb r1, [r5, #4] be00: 06c9 lsls r1, r1, #27 be02: 0ec8 lsrs r0, r1, #27 be04: 88ab ldrh r3, [r5, #4] be06: 055b lsls r3, r3, #21 be08: 0e9b lsrs r3, r3, #26 be0a: 796a ldrb r2, [r5, #5] be0c: 08d2 lsrs r2, r2, #3 be0e: e78f b.n bd30 be10: 9b09 ldr r3, [sp, #36] ; 0x24 be12: 4698 mov r8, r3 be14: 465f mov r7, fp be16: 46ab mov fp, r5 be18: e748 b.n bcac _lv_memset_ff(mask_buf, draw_area_w); be1a: 990b ldr r1, [sp, #44] ; 0x2c be1c: 9f06 ldr r7, [sp, #24] be1e: 0038 movs r0, r7 be20: 4b47 ldr r3, [pc, #284] ; (bf40 ) be22: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); be24: 464b mov r3, r9 be26: 8a5a ldrh r2, [r3, #18] be28: 1952 adds r2, r2, r5 be2a: b212 sxth r2, r2 be2c: 8a19 ldrh r1, [r3, #16] be2e: ab0e add r3, sp, #56 ; 0x38 be30: 8f1b ldrh r3, [r3, #56] ; 0x38 be32: 18c9 adds r1, r1, r3 be34: b209 sxth r1, r1 be36: 9b0a ldr r3, [sp, #40] ; 0x28 be38: 0038 movs r0, r7 be3a: 4f42 ldr r7, [pc, #264] ; (bf44 ) be3c: 47b8 blx r7 be3e: 9005 str r0, [sp, #20] if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) { be40: 79b3 ldrb r3, [r6, #6] be42: 2b01 cmp r3, #1 be44: d119 bne.n be7a be46: e081 b.n bf4c _lv_memset_ff(mask_buf, draw_area_w); be48: 990b ldr r1, [sp, #44] ; 0x2c be4a: 9f06 ldr r7, [sp, #24] be4c: 0038 movs r0, r7 be4e: 4b3c ldr r3, [pc, #240] ; (bf40 ) be50: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); be52: 464b mov r3, r9 be54: 8a5a ldrh r2, [r3, #18] be56: 1952 adds r2, r2, r5 be58: b212 sxth r2, r2 be5a: 8a19 ldrh r1, [r3, #16] be5c: ab0e add r3, sp, #56 ; 0x38 be5e: 8f1b ldrh r3, [r3, #56] ; 0x38 be60: 18c9 adds r1, r1, r3 be62: b209 sxth r1, r1 be64: 9b0a ldr r3, [sp, #40] ; 0x28 be66: 0038 movs r0, r7 be68: 4f36 ldr r7, [pc, #216] ; (bf44 ) be6a: 47b8 blx r7 be6c: 9005 str r0, [sp, #20] if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) { be6e: 79b3 ldrb r3, [r6, #6] be70: 2b01 cmp r3, #1 be72: d06b beq.n bf4c if(simple_mode && split && be74: 9a07 ldr r2, [sp, #28] be76: 2a00 cmp r2, #0 be78: d13e bne.n bef8 if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) { be7a: 2b02 cmp r3, #2 be7c: d100 bne.n be80 be7e: e153 b.n c128 else if(other_mask_cnt != 0 || !split) { be80: 9b0c ldr r3, [sp, #48] ; 0x30 be82: 2b00 cmp r3, #0 be84: d102 bne.n be8c be86: 9b09 ldr r3, [sp, #36] ; 0x24 be88: 2b32 cmp r3, #50 ; 0x32 be8a: dc0c bgt.n bea6 _lv_blend_fill(clip, &fill_area, be8c: 7b73 ldrb r3, [r6, #13] be8e: 9302 str r3, [sp, #8] be90: 465b mov r3, fp be92: 9301 str r3, [sp, #4] be94: 9b05 ldr r3, [sp, #20] be96: 9300 str r3, [sp, #0] be98: 9b06 ldr r3, [sp, #24] be9a: 466a mov r2, sp be9c: 8c12 ldrh r2, [r2, #32] be9e: a91e add r1, sp, #120 ; 0x78 bea0: 9804 ldr r0, [sp, #16] bea2: 4c21 ldr r4, [pc, #132] ; (bf28 ) bea4: 47a0 blx r4 fill_area.y1++; bea6: ab1e add r3, sp, #120 ; 0x78 bea8: 885a ldrh r2, [r3, #2] beaa: 3201 adds r2, #1 beac: 805a strh r2, [r3, #2] fill_area.y2++; beae: 88da ldrh r2, [r3, #6] beb0: 3201 adds r2, #1 beb2: 80da strh r2, [r3, #6] for(h = draw_area.y1; h <= draw_area.y2; h++) { beb4: 3501 adds r5, #1 beb6: ab0e add r3, sp, #56 ; 0x38 beb8: 223e movs r2, #62 ; 0x3e beba: 5e9b ldrsh r3, [r3, r2] bebc: 429d cmp r5, r3 bebe: dd00 ble.n bec2 bec0: e13f b.n c142 int32_t y = h + vdb->area.y1; bec2: 464b mov r3, r9 bec4: 2412 movs r4, #18 bec6: 5f1c ldrsh r4, [r3, r4] bec8: 1964 adds r4, r4, r5 if(y > coords_bg.y1 + rout + 1 && beca: ab1a add r3, sp, #104 ; 0x68 becc: 2202 movs r2, #2 bece: 5e9b ldrsh r3, [r3, r2] bed0: 4443 add r3, r8 bed2: 3301 adds r3, #1 bed4: 429c cmp r4, r3 bed6: ddb7 ble.n be48 y < coords_bg.y2 - rout - 1) { bed8: ab1a add r3, sp, #104 ; 0x68 beda: 2206 movs r2, #6 bedc: 5e9b ldrsh r3, [r3, r2] bede: 4642 mov r2, r8 bee0: 1a9b subs r3, r3, r2 bee2: 3b01 subs r3, #1 if(y > coords_bg.y1 + rout + 1 && bee4: 429c cmp r4, r3 bee6: daaf bge.n be48 if(simple_mode == false) { bee8: 9b07 ldr r3, [sp, #28] beea: 2b00 cmp r3, #0 beec: d095 beq.n be1a if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) { beee: 79b3 ldrb r3, [r6, #6] bef0: 2b01 cmp r3, #1 bef2: d029 beq.n bf48 mask_res = LV_DRAW_MASK_RES_FULL_COVER; bef4: 2201 movs r2, #1 bef6: 9205 str r2, [sp, #20] if(simple_mode && split && bef8: 9a09 ldr r2, [sp, #36] ; 0x24 befa: 2a32 cmp r2, #50 ; 0x32 befc: dd00 ble.n bf00 befe: e0a0 b.n c042 if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) { bf00: 2b02 cmp r3, #2 bf02: d100 bne.n bf06 bf04: e110 b.n c128 else if(dsc->bg_grad_dir == LV_GRAD_DIR_VER) { bf06: 2b01 cmp r3, #1 bf08: d1ba bne.n be80 _lv_blend_fill(clip, &fill_area, bf0a: 7b73 ldrb r3, [r6, #13] bf0c: 9302 str r3, [sp, #8] bf0e: 465b mov r3, fp bf10: 9301 str r3, [sp, #4] bf12: 9b05 ldr r3, [sp, #20] bf14: 9300 str r3, [sp, #0] bf16: 9b06 ldr r3, [sp, #24] bf18: 466a mov r2, sp bf1a: 8c12 ldrh r2, [r2, #32] bf1c: a91e add r1, sp, #120 ; 0x78 bf1e: 9804 ldr r0, [sp, #16] bf20: 4c01 ldr r4, [pc, #4] ; (bf28 ) bf22: 47a0 blx r4 bf24: e7bf b.n bea6 bf26: 46c0 nop ; (mov r8, r8) bf28: 00005c6d .word 0x00005c6d bf2c: 0000a855 .word 0x0000a855 bf30: 0000a5ed .word 0x0000a5ed bf34: 00010ec1 .word 0x00010ec1 bf38: fffff81f .word 0xfffff81f bf3c: 00017995 .word 0x00017995 bf40: 000110f1 .word 0x000110f1 bf44: 0000a625 .word 0x0000a625 mask_res = LV_DRAW_MASK_RES_FULL_COVER; bf48: 2301 movs r3, #1 bf4a: 9305 str r3, [sp, #20] if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) { bf4c: 8872 ldrh r2, [r6, #2] bf4e: 88b3 ldrh r3, [r6, #4] bf50: 429a cmp r2, r3 bf52: d06d beq.n c030 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); bf54: a91a add r1, sp, #104 ; 0x68 bf56: 884a ldrh r2, [r1, #2] grad_color = grad_get(dsc, lv_area_get_height(&coords_bg), y - coords_bg.y1); bf58: 1aa3 subs r3, r4, r2 bf5a: b29b uxth r3, r3 int32_t min = (dsc->bg_main_color_stop * s) >> 8; bf5c: 2708 movs r7, #8 bf5e: 5ff0 ldrsh r0, [r6, r7] bf60: 4682 mov sl, r0 bf62: 88c9 ldrh r1, [r1, #6] bf64: 3101 adds r1, #1 bf66: 1a89 subs r1, r1, r2 bf68: b209 sxth r1, r1 bf6a: 0002 movs r2, r0 bf6c: 434a muls r2, r1 bf6e: 1212 asrs r2, r2, #8 if(i <= min) return dsc->bg_color; bf70: b218 sxth r0, r3 bf72: 4684 mov ip, r0 bf74: 4282 cmp r2, r0 bf76: da45 bge.n c004 int32_t max = (dsc->bg_grad_color_stop * s) >> 8; bf78: 270a movs r7, #10 bf7a: 5ff0 ldrsh r0, [r6, r7] bf7c: 0007 movs r7, r0 bf7e: 434f muls r7, r1 bf80: 123f asrs r7, r7, #8 if(i >= max) return dsc->bg_grad_color; bf82: 45bc cmp ip, r7 bf84: db00 blt.n bf88 bf86: e0b1 b.n c0ec int32_t d = dsc->bg_grad_color_stop - dsc->bg_main_color_stop; bf88: 4657 mov r7, sl bf8a: 1bc0 subs r0, r0, r7 d = (s * d) >> 8; bf8c: 4341 muls r1, r0 i -= min; bf8e: 1a9b subs r3, r3, r2 lv_opa_t mix = (i * 255) / d; bf90: b21b sxth r3, r3 bf92: 0218 lsls r0, r3, #8 bf94: 1ac0 subs r0, r0, r3 d = (s * d) >> 8; bf96: 1209 asrs r1, r1, #8 lv_opa_t mix = (i * 255) / d; bf98: 4bb8 ldr r3, [pc, #736] ; (c27c ) bf9a: 4798 blx r3 bf9c: 21ff movs r1, #255 ; 0xff bf9e: 4008 ands r0, r1 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); bfa0: 1a09 subs r1, r1, r0 bfa2: 7972 ldrb r2, [r6, #5] bfa4: 08d2 lsrs r2, r2, #3 bfa6: 4342 muls r2, r0 bfa8: 78f3 ldrb r3, [r6, #3] bfaa: 08db lsrs r3, r3, #3 bfac: 434b muls r3, r1 bfae: 18d3 adds r3, r2, r3 bfb0: 021a lsls r2, r3, #8 bfb2: 18d2 adds r2, r2, r3 bfb4: 01d2 lsls r2, r2, #7 bfb6: 18d2 adds r2, r2, r3 bfb8: 0dd2 lsrs r2, r2, #23 bfba: 231f movs r3, #31 bfbc: 469c mov ip, r3 bfbe: 401a ands r2, r3 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); bfc0: 88b3 ldrh r3, [r6, #4] bfc2: 055b lsls r3, r3, #21 bfc4: 0e9b lsrs r3, r3, #26 bfc6: 4343 muls r3, r0 bfc8: 469a mov sl, r3 bfca: 8873 ldrh r3, [r6, #2] bfcc: 055b lsls r3, r3, #21 bfce: 0e9b lsrs r3, r3, #26 bfd0: 434b muls r3, r1 bfd2: 449a add sl, r3 bfd4: 4653 mov r3, sl bfd6: 021b lsls r3, r3, #8 bfd8: 4453 add r3, sl bfda: 01db lsls r3, r3, #7 bfdc: 4453 add r3, sl bfde: 00db lsls r3, r3, #3 bfe0: 0e9b lsrs r3, r3, #26 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); bfe2: 7937 ldrb r7, [r6, #4] bfe4: 06ff lsls r7, r7, #27 bfe6: 0eff lsrs r7, r7, #27 bfe8: 4378 muls r0, r7 bfea: 78b7 ldrb r7, [r6, #2] bfec: 06ff lsls r7, r7, #27 bfee: 0eff lsrs r7, r7, #27 bff0: 4379 muls r1, r7 bff2: 1841 adds r1, r0, r1 bff4: 0208 lsls r0, r1, #8 bff6: 1840 adds r0, r0, r1 bff8: 01c0 lsls r0, r0, #7 bffa: 1840 adds r0, r0, r1 bffc: 0dc0 lsrs r0, r0, #23 bffe: 4661 mov r1, ip c000: 4008 ands r0, r1 c002: e007 b.n c014 if(i <= min) return dsc->bg_color; c004: 78b1 ldrb r1, [r6, #2] c006: 06c9 lsls r1, r1, #27 c008: 0ec8 lsrs r0, r1, #27 c00a: 8873 ldrh r3, [r6, #2] c00c: 055b lsls r3, r3, #21 c00e: 0e9b lsrs r3, r3, #26 c010: 78f2 ldrb r2, [r6, #3] c012: 08d2 lsrs r2, r2, #3 c014: 211f movs r1, #31 c016: 9f08 ldr r7, [sp, #32] c018: 438f bics r7, r1 c01a: 0039 movs r1, r7 c01c: 4301 orrs r1, r0 c01e: 0158 lsls r0, r3, #5 c020: 4b97 ldr r3, [pc, #604] ; (c280 ) c022: 400b ands r3, r1 c024: 4303 orrs r3, r0 c026: 02d2 lsls r2, r2, #11 c028: 055b lsls r3, r3, #21 c02a: 0d5b lsrs r3, r3, #21 c02c: 4313 orrs r3, r2 c02e: 9308 str r3, [sp, #32] if(simple_mode && split && c030: 9b07 ldr r3, [sp, #28] c032: 2b00 cmp r3, #0 c034: d100 bne.n c038 c036: e768 b.n bf0a c038: 2301 movs r3, #1 c03a: 9a09 ldr r2, [sp, #36] ; 0x24 c03c: 2a32 cmp r2, #50 ; 0x32 c03e: dc00 bgt.n c042 c040: e763 b.n bf0a (y < coords_bg.y1 + rout + 1 || c042: aa1a add r2, sp, #104 ; 0x68 c044: 2102 movs r1, #2 c046: 5e52 ldrsh r2, [r2, r1] c048: 4442 add r2, r8 c04a: 3201 adds r2, #1 if(simple_mode && split && c04c: 4294 cmp r4, r2 c04e: db08 blt.n c062 y > coords_bg.y2 - rout - 1)) { c050: aa1a add r2, sp, #104 ; 0x68 c052: 2106 movs r1, #6 c054: 5e52 ldrsh r2, [r2, r1] c056: 4641 mov r1, r8 c058: 1a52 subs r2, r2, r1 c05a: 3a01 subs r2, #1 (y < coords_bg.y1 + rout + 1 || c05c: 4294 cmp r4, r2 c05e: dc00 bgt.n c062 c060: e74e b.n bf00 fill_area2.x1 = coords_bg.x1; c062: ab1a add r3, sp, #104 ; 0x68 c064: 2200 movs r2, #0 c066: 5e9b ldrsh r3, [r3, r2] c068: a922 add r1, sp, #136 ; 0x88 c06a: 800b strh r3, [r1, #0] fill_area2.x2 = coords_bg.x1 + rout - 1; c06c: 4642 mov r2, r8 c06e: 4668 mov r0, sp c070: 8702 strh r2, [r0, #56] ; 0x38 c072: 8f04 ldrh r4, [r0, #56] ; 0x38 c074: 3b01 subs r3, #1 c076: 18e3 adds r3, r4, r3 c078: 808b strh r3, [r1, #4] fill_area2.y1 = fill_area.y1; c07a: ab1e add r3, sp, #120 ; 0x78 c07c: 885a ldrh r2, [r3, #2] c07e: 804a strh r2, [r1, #2] fill_area2.y2 = fill_area.y2; c080: 88db ldrh r3, [r3, #6] c082: 80cb strh r3, [r1, #6] _lv_blend_fill(clip, &fill_area2, c084: 7b73 ldrb r3, [r6, #13] c086: 9302 str r3, [sp, #8] c088: 465b mov r3, fp c08a: 9301 str r3, [sp, #4] c08c: 9b05 ldr r3, [sp, #20] c08e: 9300 str r3, [sp, #0] c090: 9b06 ldr r3, [sp, #24] c092: 8c02 ldrh r2, [r0, #32] c094: 9804 ldr r0, [sp, #16] c096: 4f7b ldr r7, [pc, #492] ; (c284 ) c098: 47b8 blx r7 if(dsc->bg_grad_dir == LV_GRAD_DIR_VER) { c09a: 79b3 ldrb r3, [r6, #6] c09c: 2b01 cmp r3, #1 c09e: d02e beq.n c0fe fill_area2.x1 = coords_bg.x2 - rout + 1; c0a0: ab1a add r3, sp, #104 ; 0x68 c0a2: 2204 movs r2, #4 c0a4: 5e9b ldrsh r3, [r3, r2] c0a6: a922 add r1, sp, #136 ; 0x88 c0a8: 1c5a adds r2, r3, #1 c0aa: 1b14 subs r4, r2, r4 c0ac: 800c strh r4, [r1, #0] fill_area2.x2 = coords_bg.x2; c0ae: 808b strh r3, [r1, #4] int32_t mask_ofs = (coords_bg.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); c0b0: 4642 mov r2, r8 c0b2: 1a9b subs r3, r3, r2 c0b4: 3301 adds r3, #1 c0b6: 464a mov r2, r9 c0b8: 2110 movs r1, #16 c0ba: 5e52 ldrsh r2, [r2, r1] c0bc: a90e add r1, sp, #56 ; 0x38 c0be: 2038 movs r0, #56 ; 0x38 c0c0: 5e09 ldrsh r1, [r1, r0] c0c2: 1852 adds r2, r2, r1 c0c4: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, c0c6: 43da mvns r2, r3 c0c8: 17d2 asrs r2, r2, #31 c0ca: 4013 ands r3, r2 c0cc: 9a06 ldr r2, [sp, #24] c0ce: 4694 mov ip, r2 c0d0: 4463 add r3, ip c0d2: 7b72 ldrb r2, [r6, #13] c0d4: 9202 str r2, [sp, #8] c0d6: 465a mov r2, fp c0d8: 9201 str r2, [sp, #4] c0da: 9a05 ldr r2, [sp, #20] c0dc: 9200 str r2, [sp, #0] c0de: 466a mov r2, sp c0e0: 8c12 ldrh r2, [r2, #32] c0e2: a922 add r1, sp, #136 ; 0x88 c0e4: 9804 ldr r0, [sp, #16] c0e6: 4c67 ldr r4, [pc, #412] ; (c284 ) c0e8: 47a0 blx r4 c0ea: e6dc b.n bea6 if(i >= max) return dsc->bg_grad_color; c0ec: 7931 ldrb r1, [r6, #4] c0ee: 06c9 lsls r1, r1, #27 c0f0: 0ec8 lsrs r0, r1, #27 c0f2: 88b3 ldrh r3, [r6, #4] c0f4: 055b lsls r3, r3, #21 c0f6: 0e9b lsrs r3, r3, #26 c0f8: 7972 ldrb r2, [r6, #5] c0fa: 08d2 lsrs r2, r2, #3 c0fc: e78a b.n c014 fill_area2.x1 = coords_bg.x1 + rout; c0fe: a922 add r1, sp, #136 ; 0x88 c100: aa1a add r2, sp, #104 ; 0x68 c102: 8813 ldrh r3, [r2, #0] c104: 18e3 adds r3, r4, r3 c106: 800b strh r3, [r1, #0] fill_area2.x2 = coords_bg.x2 - rout; c108: 8893 ldrh r3, [r2, #4] c10a: 1b1b subs r3, r3, r4 c10c: 808b strh r3, [r1, #4] _lv_blend_fill(clip, &fill_area2, c10e: 7b73 ldrb r3, [r6, #13] c110: 9302 str r3, [sp, #8] c112: 465b mov r3, fp c114: 9301 str r3, [sp, #4] c116: 2301 movs r3, #1 c118: 9300 str r3, [sp, #0] c11a: 2300 movs r3, #0 c11c: 466a mov r2, sp c11e: 8c12 ldrh r2, [r2, #32] c120: 9804 ldr r0, [sp, #16] c122: 4f58 ldr r7, [pc, #352] ; (c284 ) c124: 47b8 blx r7 c126: e7bb b.n c0a0 _lv_blend_map(clip, &fill_area, grad_map, mask_buf, mask_res, opa, dsc->bg_blend_mode); c128: 7b73 ldrb r3, [r6, #13] c12a: 9302 str r3, [sp, #8] c12c: 465b mov r3, fp c12e: 9301 str r3, [sp, #4] c130: 9b05 ldr r3, [sp, #20] c132: 9300 str r3, [sp, #0] c134: 9b06 ldr r3, [sp, #24] c136: 9a0d ldr r2, [sp, #52] ; 0x34 c138: a91e add r1, sp, #120 ; 0x78 c13a: 9804 ldr r0, [sp, #16] c13c: 4c52 ldr r4, [pc, #328] ; (c288 ) c13e: 47a0 blx r4 c140: e6b1 b.n bea6 c142: 46da mov sl, fp c144: 9b10 ldr r3, [sp, #64] ; 0x40 c146: 4699 mov r9, r3 c148: 46b3 mov fp, r6 if(dsc->bg_grad_dir == LV_GRAD_DIR_NONE && other_mask_cnt == 0 && split) { c14a: 465b mov r3, fp c14c: 799b ldrb r3, [r3, #6] c14e: 2b00 cmp r3, #0 c150: d105 bne.n c15e c152: 9b0c ldr r3, [sp, #48] ; 0x30 c154: 2b00 cmp r3, #0 c156: d102 bne.n c15e c158: 9b09 ldr r3, [sp, #36] ; 0x24 c15a: 2b32 cmp r3, #50 ; 0x32 c15c: dc0c bgt.n c178 if(grad_map) _lv_mem_buf_release(grad_map); c15e: 9b0d ldr r3, [sp, #52] ; 0x34 c160: 2b00 cmp r3, #0 c162: d002 beq.n c16a c164: 0018 movs r0, r3 c166: 4b49 ldr r3, [pc, #292] ; (c28c ) c168: 4798 blx r3 lv_draw_mask_remove_id(mask_rout_id); c16a: 980f ldr r0, [sp, #60] ; 0x3c c16c: 4b48 ldr r3, [pc, #288] ; (c290 ) c16e: 4798 blx r3 _lv_mem_buf_release(mask_buf); c170: 9806 ldr r0, [sp, #24] c172: 4b46 ldr r3, [pc, #280] ; (c28c ) c174: 4798 blx r3 c176: e46f b.n ba58 fill_area.x1 = coords_bg.x1 + rout; c178: 4643 mov r3, r8 c17a: 466a mov r2, sp c17c: 8293 strh r3, [r2, #20] c17e: 8a96 ldrh r6, [r2, #20] c180: ac1e add r4, sp, #120 ; 0x78 c182: ad1a add r5, sp, #104 ; 0x68 c184: 882b ldrh r3, [r5, #0] c186: 18f3 adds r3, r6, r3 c188: 8023 strh r3, [r4, #0] fill_area.x2 = coords_bg.x2 - rout; c18a: 88ab ldrh r3, [r5, #4] c18c: 1b9b subs r3, r3, r6 c18e: 80a3 strh r3, [r4, #4] fill_area.y1 = coords_bg.y1; c190: 2202 movs r2, #2 c192: 5eab ldrsh r3, [r5, r2] c194: 8063 strh r3, [r4, #2] fill_area.y2 = coords_bg.y1 + rout; c196: 18f3 adds r3, r6, r3 c198: 80e3 strh r3, [r4, #6] _lv_blend_fill(clip, &fill_area, c19a: 465b mov r3, fp c19c: 885a ldrh r2, [r3, #2] c19e: 7b5b ldrb r3, [r3, #13] c1a0: 9302 str r3, [sp, #8] c1a2: 4653 mov r3, sl c1a4: 9301 str r3, [sp, #4] c1a6: 2301 movs r3, #1 c1a8: 9300 str r3, [sp, #0] c1aa: 2300 movs r3, #0 c1ac: 0021 movs r1, r4 c1ae: 9804 ldr r0, [sp, #16] c1b0: 4f34 ldr r7, [pc, #208] ; (c284 ) c1b2: 47b8 blx r7 fill_area.y1 = coords_bg.y2 - rout; c1b4: 2306 movs r3, #6 c1b6: 5ee9 ldrsh r1, [r5, r3] c1b8: 1b8a subs r2, r1, r6 c1ba: b212 sxth r2, r2 c1bc: 8062 strh r2, [r4, #2] if(fill_area.y1 <= fill_area.y2) fill_area.y1 = fill_area.y2 + 1; /*Avoid overdrawing the last line*/ c1be: 2006 movs r0, #6 c1c0: 5e23 ldrsh r3, [r4, r0] c1c2: 429a cmp r2, r3 c1c4: dc02 bgt.n c1cc c1c6: 3301 adds r3, #1 c1c8: aa1e add r2, sp, #120 ; 0x78 c1ca: 8053 strh r3, [r2, #2] fill_area.y2 = coords_bg.y2; c1cc: ac1e add r4, sp, #120 ; 0x78 c1ce: 80e1 strh r1, [r4, #6] _lv_blend_fill(clip, &fill_area, c1d0: 465b mov r3, fp c1d2: 885a ldrh r2, [r3, #2] c1d4: 7b5b ldrb r3, [r3, #13] c1d6: 9302 str r3, [sp, #8] c1d8: 4653 mov r3, sl c1da: 9301 str r3, [sp, #4] c1dc: 2701 movs r7, #1 c1de: 9700 str r7, [sp, #0] c1e0: 2300 movs r3, #0 c1e2: 0021 movs r1, r4 c1e4: 9804 ldr r0, [sp, #16] c1e6: 4d27 ldr r5, [pc, #156] ; (c284 ) c1e8: 47a8 blx r5 fill_area.x1 = coords_bg.x1; c1ea: aa1a add r2, sp, #104 ; 0x68 c1ec: 8813 ldrh r3, [r2, #0] c1ee: 8023 strh r3, [r4, #0] fill_area.x2 = coords_bg.x2; c1f0: 8893 ldrh r3, [r2, #4] c1f2: 80a3 strh r3, [r4, #4] fill_area.y1 = coords_bg.y1 + rout + 1; c1f4: 8853 ldrh r3, [r2, #2] c1f6: 3301 adds r3, #1 c1f8: 18f3 adds r3, r6, r3 c1fa: 8063 strh r3, [r4, #2] fill_area.y2 = coords_bg.y2 - rout - 1; c1fc: 88d3 ldrh r3, [r2, #6] c1fe: 3b01 subs r3, #1 c200: 1b9e subs r6, r3, r6 c202: 80e6 strh r6, [r4, #6] _lv_blend_fill(clip, &fill_area, c204: 465b mov r3, fp c206: 885a ldrh r2, [r3, #2] c208: 7b5b ldrb r3, [r3, #13] c20a: 9302 str r3, [sp, #8] c20c: 4653 mov r3, sl c20e: 9301 str r3, [sp, #4] c210: 9700 str r7, [sp, #0] c212: 2300 movs r3, #0 c214: 0021 movs r1, r4 c216: 9804 ldr r0, [sp, #16] c218: 47a8 blx r5 c21a: e7a0 b.n c15e lv_img_src_t src_type = lv_img_src_get_type(dsc->pattern_image); c21c: 4b1d ldr r3, [pc, #116] ; (c294 ) c21e: 4798 blx r3 c220: 0007 movs r7, r0 if(src_type == LV_IMG_SRC_FILE || src_type == LV_IMG_SRC_VARIABLE) { c222: 2801 cmp r0, #1 c224: d909 bls.n c23a else if(src_type == LV_IMG_SRC_SYMBOL) { c226: 2802 cmp r0, #2 c228: d03c beq.n c2a4 lv_draw_img(coords, clip, NULL, NULL); c22a: 2300 movs r3, #0 c22c: 2200 movs r2, #0 c22e: 9904 ldr r1, [sp, #16] c230: 4648 mov r0, r9 c232: 4c19 ldr r4, [pc, #100] ; (c298 ) c234: 47a0 blx r4 c236: f7ff fc1a bl ba6e lv_res_t res = lv_img_decoder_get_info(dsc->pattern_image, &header); c23a: a929 add r1, sp, #164 ; 0xa4 c23c: 465b mov r3, fp c23e: 6ad8 ldr r0, [r3, #44] ; 0x2c c240: 4b16 ldr r3, [pc, #88] ; (c29c ) c242: 4798 blx r3 if(res != LV_RES_OK) { c244: 2801 cmp r0, #1 c246: d001 beq.n c24c c248: f7ff fc11 bl ba6e img_w = header.w; c24c: 9b29 ldr r3, [sp, #164] ; 0xa4 c24e: 02dd lsls r5, r3, #11 c250: 0d6d lsrs r5, r5, #21 img_h = header.h; c252: 236e movs r3, #110 ; 0x6e c254: aa0e add r2, sp, #56 ; 0x38 c256: 4694 mov ip, r2 c258: 4463 add r3, ip c25a: 881e ldrh r6, [r3, #0] c25c: 0976 lsrs r6, r6, #5 lv_draw_img_dsc_init(&img_dsc); c25e: ac1e add r4, sp, #120 ; 0x78 c260: 0020 movs r0, r4 c262: 4b0f ldr r3, [pc, #60] ; (c2a0 ) c264: 4798 blx r3 img_dsc.opa = dsc->pattern_opa; c266: 2336 movs r3, #54 ; 0x36 c268: 465a mov r2, fp c26a: 5cd3 ldrb r3, [r2, r3] c26c: 7023 strb r3, [r4, #0] img_dsc.recolor_opa = dsc->pattern_recolor_opa; c26e: 2337 movs r3, #55 ; 0x37 c270: 5cd3 ldrb r3, [r2, r3] c272: 72a3 strb r3, [r4, #10] img_dsc.recolor = dsc->pattern_recolor; c274: 8e93 ldrh r3, [r2, #52] ; 0x34 c276: 81a3 strh r3, [r4, #12] c278: e037 b.n c2ea c27a: 46c0 nop ; (mov r8, r8) c27c: 00017995 .word 0x00017995 c280: fffff81f .word 0xfffff81f c284: 00005c6d .word 0x00005c6d c288: 00006951 .word 0x00006951 c28c: 00010bd5 .word 0x00010bd5 c290: 0000a679 .word 0x0000a679 c294: 00008161 .word 0x00008161 c298: 00007f41 .word 0x00007f41 c29c: 0000e549 .word 0x0000e549 c2a0: 00007ead .word 0x00007ead lv_draw_label_dsc_init(&label_dsc); c2a4: ac22 add r4, sp, #136 ; 0x88 c2a6: 0020 movs r0, r4 c2a8: 4b87 ldr r3, [pc, #540] ; (c4c8 ) c2aa: 4798 blx r3 label_dsc.color = dsc->pattern_recolor; c2ac: 465b mov r3, fp c2ae: 8e9b ldrh r3, [r3, #52] ; 0x34 c2b0: 8023 strh r3, [r4, #0] label_dsc.font = dsc->pattern_font; c2b2: 465b mov r3, fp c2b4: 6b1b ldr r3, [r3, #48] ; 0x30 c2b6: 6063 str r3, [r4, #4] label_dsc.opa = dsc->pattern_opa; c2b8: 2336 movs r3, #54 ; 0x36 c2ba: 465a mov r2, fp c2bc: 5cd3 ldrb r3, [r2, r3] c2be: 7223 strb r3, [r4, #8] _lv_txt_get_size(&s, dsc->pattern_image, label_dsc.font, label_dsc.letter_space, label_dsc.line_space, LV_COORD_MAX, c2c0: 220c movs r2, #12 c2c2: 5ea3 ldrsh r3, [r4, r2] c2c4: ae29 add r6, sp, #164 ; 0xa4 c2c6: 2200 movs r2, #0 c2c8: 9202 str r2, [sp, #8] c2ca: 4a80 ldr r2, [pc, #512] ; (c4cc ) c2cc: 9201 str r2, [sp, #4] c2ce: 210a movs r1, #10 c2d0: 5e62 ldrsh r2, [r4, r1] c2d2: 9200 str r2, [sp, #0] c2d4: 465a mov r2, fp c2d6: 6b12 ldr r2, [r2, #48] ; 0x30 c2d8: 4659 mov r1, fp c2da: 6ac9 ldr r1, [r1, #44] ; 0x2c c2dc: 0030 movs r0, r6 c2de: 4c7c ldr r4, [pc, #496] ; (c4d0 ) c2e0: 47a0 blx r4 img_w = s.x; c2e2: 2300 movs r3, #0 c2e4: 5ef5 ldrsh r5, [r6, r3] img_h = s.y; c2e6: 2302 movs r3, #2 c2e8: 5ef6 ldrsh r6, [r6, r3] if(dsc->pattern_repeat) { c2ea: 2338 movs r3, #56 ; 0x38 c2ec: 465a mov r2, fp c2ee: 5cd3 ldrb r3, [r2, r3] c2f0: 07db lsls r3, r3, #31 c2f2: d43d bmi.n c370 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c2f4: 464b mov r3, r9 c2f6: 8818 ldrh r0, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c2f8: 8859 ldrh r1, [r3, #2] c2fa: 88db ldrh r3, [r3, #6] c2fc: 3301 adds r3, #1 c2fe: 1a5b subs r3, r3, r1 int32_t obj_h = lv_area_get_height(coords); c300: b21b sxth r3, r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c302: 464a mov r2, r9 c304: 8892 ldrh r2, [r2, #4] c306: 3201 adds r2, #1 c308: 1a12 subs r2, r2, r0 int32_t obj_w = lv_area_get_width(coords); c30a: b212 sxth r2, r2 coords_tmp.x1 = coords->x1 + (obj_w - img_w) / 2; c30c: 1b52 subs r2, r2, r5 c30e: 0fd4 lsrs r4, r2, #31 c310: 18a2 adds r2, r4, r2 c312: 1052 asrs r2, r2, #1 c314: 1880 adds r0, r0, r2 c316: b280 uxth r0, r0 c318: aa1c add r2, sp, #112 ; 0x70 c31a: 8010 strh r0, [r2, #0] coords_tmp.y1 = coords->y1 + (obj_h - img_h) / 2; c31c: 1b9c subs r4, r3, r6 c31e: 0fe3 lsrs r3, r4, #31 c320: 191b adds r3, r3, r4 c322: 105b asrs r3, r3, #1 c324: 18c9 adds r1, r1, r3 c326: b289 uxth r1, r1 c328: 8051 strh r1, [r2, #2] coords_tmp.x2 = coords_tmp.x1 + img_w - 1; c32a: 3d01 subs r5, #1 c32c: 1945 adds r5, r0, r5 c32e: 8095 strh r5, [r2, #4] coords_tmp.y2 = coords_tmp.y1 + img_h - 1; c330: 1e73 subs r3, r6, #1 c332: 18cb adds r3, r1, r3 c334: b29b uxth r3, r3 c336: 80d3 strh r3, [r2, #6] if(src_type == LV_IMG_SRC_SYMBOL) { c338: 2f02 cmp r7, #2 c33a: d100 bne.n c33e c33c: e09a b.n c474 if(_lv_area_is_in(&coords_tmp, coords, dsc->radius) == false) { c33e: 465b mov r3, fp c340: 2200 movs r2, #0 c342: 5e9a ldrsh r2, [r3, r2] c344: 4649 mov r1, r9 c346: a81c add r0, sp, #112 ; 0x70 c348: 4b62 ldr r3, [pc, #392] ; (c4d4 ) c34a: 4798 blx r3 int16_t radius_mask_id = LV_MASK_ID_INV; c34c: 2401 movs r4, #1 c34e: 4264 negs r4, r4 if(_lv_area_is_in(&coords_tmp, coords, dsc->radius) == false) { c350: 2800 cmp r0, #0 c352: d101 bne.n c358 c354: f000 feab bl d0ae else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc); c358: ab1e add r3, sp, #120 ; 0x78 c35a: 465a mov r2, fp c35c: 6ad2 ldr r2, [r2, #44] ; 0x2c c35e: 9904 ldr r1, [sp, #16] c360: a81c add r0, sp, #112 ; 0x70 c362: 4d5d ldr r5, [pc, #372] ; (c4d8 ) c364: 47a8 blx r5 lv_draw_mask_remove_id(radius_mask_id); c366: 0020 movs r0, r4 c368: 4b5c ldr r3, [pc, #368] ; (c4dc ) c36a: 4798 blx r3 c36c: f7ff fb7f bl ba6e lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false); c370: 465b mov r3, fp c372: 2200 movs r2, #0 c374: 5e9a ldrsh r2, [r3, r2] c376: 2300 movs r3, #0 c378: 4649 mov r1, r9 c37a: a829 add r0, sp, #164 ; 0xa4 c37c: 4c58 ldr r4, [pc, #352] ; (c4e0 ) c37e: 47a0 blx r4 int16_t radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL); c380: 2100 movs r1, #0 c382: a829 add r0, sp, #164 ; 0xa4 c384: 4b57 ldr r3, [pc, #348] ; (c4e4 ) c386: 4798 blx r3 c388: 9007 str r0, [sp, #28] c38a: 464b mov r3, r9 c38c: 8898 ldrh r0, [r3, #4] c38e: 3001 adds r0, #1 c390: 881b ldrh r3, [r3, #0] c392: 1ac0 subs r0, r0, r3 int32_t ofs_x = (lv_area_get_width(coords) - (lv_area_get_width(coords) / img_w) * img_w) / 2; c394: b200 sxth r0, r0 c396: 4b54 ldr r3, [pc, #336] ; (c4e8 ) c398: 4698 mov r8, r3 c39a: 0029 movs r1, r5 c39c: 4798 blx r3 c39e: 0fcb lsrs r3, r1, #31 c3a0: 1859 adds r1, r3, r1 c3a2: 104b asrs r3, r1, #1 c3a4: 9306 str r3, [sp, #24] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c3a6: 464b mov r3, r9 c3a8: 2206 movs r2, #6 c3aa: 5e9b ldrsh r3, [r3, r2] c3ac: 469a mov sl, r3 c3ae: 464b mov r3, r9 c3b0: 885c ldrh r4, [r3, #2] c3b2: 4653 mov r3, sl c3b4: 1c58 adds r0, r3, #1 c3b6: 1b00 subs r0, r0, r4 int32_t ofs_y = (lv_area_get_height(coords) - (lv_area_get_height(coords) / img_h) * img_h) / 2; c3b8: b200 sxth r0, r0 c3ba: 0031 movs r1, r6 c3bc: 47c0 blx r8 c3be: 0fcb lsrs r3, r1, #31 c3c0: 185b adds r3, r3, r1 c3c2: 105b asrs r3, r3, #1 coords_tmp.y1 = coords->y1 - ofs_y; c3c4: 1ae4 subs r4, r4, r3 c3c6: b2a4 uxth r4, r4 c3c8: b223 sxth r3, r4 c3ca: aa1c add r2, sp, #112 ; 0x70 c3cc: 8053 strh r3, [r2, #2] coords_tmp.y2 = coords_tmp.y1 + img_h - 1; c3ce: b2b1 uxth r1, r6 c3d0: 4688 mov r8, r1 c3d2: 3901 subs r1, #1 c3d4: 1864 adds r4, r4, r1 c3d6: 80d4 strh r4, [r2, #6] for(; coords_tmp.y1 <= coords->y2; coords_tmp.y1 += img_h, coords_tmp.y2 += img_h) { c3d8: 459a cmp sl, r3 c3da: db46 blt.n c46a coords_tmp.x1 = coords->x1 - ofs_x; c3dc: 0014 movs r4, r2 coords_tmp.x2 = coords_tmp.x1 + img_w - 1; c3de: b2ad uxth r5, r5 if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); c3e0: 4b42 ldr r3, [pc, #264] ; (c4ec ) c3e2: 469a mov sl, r3 else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc); c3e4: 4e3c ldr r6, [pc, #240] ; (c4d8 ) if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); c3e6: 9205 str r2, [sp, #20] c3e8: 464b mov r3, r9 c3ea: 46b9 mov r9, r7 c3ec: 001f movs r7, r3 c3ee: e02a b.n c446 c3f0: 2300 movs r3, #0 c3f2: 9300 str r3, [sp, #0] c3f4: 465b mov r3, fp c3f6: 6adb ldr r3, [r3, #44] ; 0x2c c3f8: aa22 add r2, sp, #136 ; 0x88 c3fa: 9904 ldr r1, [sp, #16] c3fc: 9805 ldr r0, [sp, #20] c3fe: 47d0 blx sl for(; coords_tmp.x1 <= coords->x2; coords_tmp.x1 += img_w, coords_tmp.x2 += img_w) { c400: 8823 ldrh r3, [r4, #0] c402: 18eb adds r3, r5, r3 c404: b21b sxth r3, r3 c406: 8023 strh r3, [r4, #0] c408: 88a2 ldrh r2, [r4, #4] c40a: 18aa adds r2, r5, r2 c40c: 80a2 strh r2, [r4, #4] c40e: 464a mov r2, r9 c410: 2104 movs r1, #4 c412: 5e52 ldrsh r2, [r2, r1] c414: 429a cmp r2, r3 c416: db08 blt.n c42a if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); c418: 2f02 cmp r7, #2 c41a: d0e9 beq.n c3f0 else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc); c41c: ab1e add r3, sp, #120 ; 0x78 c41e: 465a mov r2, fp c420: 6ad2 ldr r2, [r2, #44] ; 0x2c c422: 9904 ldr r1, [sp, #16] c424: 9805 ldr r0, [sp, #20] c426: 47b0 blx r6 c428: e7ea b.n c400 c42a: 464b mov r3, r9 c42c: 46b9 mov r9, r7 c42e: 001f movs r7, r3 for(; coords_tmp.y1 <= coords->y2; coords_tmp.y1 += img_h, coords_tmp.y2 += img_h) { c430: 8863 ldrh r3, [r4, #2] c432: 4443 add r3, r8 c434: b21b sxth r3, r3 c436: 8063 strh r3, [r4, #2] c438: 88e2 ldrh r2, [r4, #6] c43a: 4442 add r2, r8 c43c: 80e2 strh r2, [r4, #6] c43e: 2106 movs r1, #6 c440: 5e7a ldrsh r2, [r7, r1] c442: 429a cmp r2, r3 c444: db10 blt.n c468 coords_tmp.x1 = coords->x1 - ofs_x; c446: 883b ldrh r3, [r7, #0] c448: 9a06 ldr r2, [sp, #24] c44a: 1a9b subs r3, r3, r2 c44c: b29b uxth r3, r3 c44e: b21a sxth r2, r3 c450: 8022 strh r2, [r4, #0] coords_tmp.x2 = coords_tmp.x1 + img_w - 1; c452: 1e69 subs r1, r5, #1 c454: 185b adds r3, r3, r1 c456: 80a3 strh r3, [r4, #4] for(; coords_tmp.x1 <= coords->x2; coords_tmp.x1 += img_w, coords_tmp.x2 += img_w) { c458: 2104 movs r1, #4 c45a: 5e7b ldrsh r3, [r7, r1] c45c: 4293 cmp r3, r2 c45e: dbe7 blt.n c430 c460: 003b movs r3, r7 c462: 464f mov r7, r9 c464: 4699 mov r9, r3 c466: e7d7 b.n c418 c468: 46b9 mov r9, r7 lv_draw_mask_remove_id(radius_mask_id); c46a: 9807 ldr r0, [sp, #28] c46c: 4b1b ldr r3, [pc, #108] ; (c4dc ) c46e: 4798 blx r3 c470: f7ff fafd bl ba6e coords_tmp.y1 += y_corr; c474: 2201 movs r2, #1 c476: 4014 ands r4, r2 c478: a81c add r0, sp, #112 ; 0x70 c47a: 1909 adds r1, r1, r4 c47c: 8041 strh r1, [r0, #2] coords_tmp.y2 += y_corr; c47e: 191b adds r3, r3, r4 c480: 80c3 strh r3, [r0, #6] if(_lv_area_is_in(&coords_tmp, coords, dsc->radius) == false) { c482: 465b mov r3, fp c484: 2200 movs r2, #0 c486: 5e9a ldrsh r2, [r3, r2] c488: 4649 mov r1, r9 c48a: 4b12 ldr r3, [pc, #72] ; (c4d4 ) c48c: 4798 blx r3 c48e: 2800 cmp r0, #0 c490: d116 bne.n c4c0 lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false); c492: 465b mov r3, fp c494: 2200 movs r2, #0 c496: 5e9a ldrsh r2, [r3, r2] c498: 2300 movs r3, #0 c49a: 4649 mov r1, r9 c49c: a829 add r0, sp, #164 ; 0xa4 c49e: 4c10 ldr r4, [pc, #64] ; (c4e0 ) c4a0: 47a0 blx r4 radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL); c4a2: 2100 movs r1, #0 c4a4: a829 add r0, sp, #164 ; 0xa4 c4a6: 4b0f ldr r3, [pc, #60] ; (c4e4 ) c4a8: 4798 blx r3 c4aa: 0004 movs r4, r0 if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); c4ac: 2300 movs r3, #0 c4ae: 9300 str r3, [sp, #0] c4b0: 465b mov r3, fp c4b2: 6adb ldr r3, [r3, #44] ; 0x2c c4b4: aa22 add r2, sp, #136 ; 0x88 c4b6: 9904 ldr r1, [sp, #16] c4b8: a81c add r0, sp, #112 ; 0x70 c4ba: 4d0c ldr r5, [pc, #48] ; (c4ec ) c4bc: 47a8 blx r5 c4be: e752 b.n c366 int16_t radius_mask_id = LV_MASK_ID_INV; c4c0: 2401 movs r4, #1 c4c2: 4264 negs r4, r4 c4c4: e7f2 b.n c4ac c4c6: 46c0 nop ; (mov r8, r8) c4c8: 000081c5 .word 0x000081c5 c4cc: 00007c18 .word 0x00007c18 c4d0: 00011ae5 .word 0x00011ae5 c4d4: 0000fe9d .word 0x0000fe9d c4d8: 00007f41 .word 0x00007f41 c4dc: 0000a679 .word 0x0000a679 c4e0: 0000a855 .word 0x0000a855 c4e4: 0000a5ed .word 0x0000a5ed c4e8: 00017b61 .word 0x00017b61 c4ec: 00008215 .word 0x00008215 draw_area.x1 -= disp_area->x1; c4f0: 8a38 ldrh r0, [r7, #16] c4f2: aa18 add r2, sp, #96 ; 0x60 c4f4: 8811 ldrh r1, [r2, #0] c4f6: 1a09 subs r1, r1, r0 c4f8: b289 uxth r1, r1 c4fa: 8011 strh r1, [r2, #0] draw_area.y1 -= disp_area->y1; c4fc: 8a7d ldrh r5, [r7, #18] c4fe: 8854 ldrh r4, [r2, #2] c500: 1b64 subs r4, r4, r5 c502: 8054 strh r4, [r2, #2] draw_area.x2 -= disp_area->x1; c504: 8893 ldrh r3, [r2, #4] c506: 1a1b subs r3, r3, r0 c508: b29b uxth r3, r3 c50a: 8093 strh r3, [r2, #4] draw_area.y2 -= disp_area->y1; c50c: 88d0 ldrh r0, [r2, #6] c50e: 1b40 subs r0, r0, r5 c510: 80d0 strh r0, [r2, #6] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c512: 3301 adds r3, #1 c514: 1a5b subs r3, r3, r1 c516: b21b sxth r3, r3 c518: 930a str r3, [sp, #40] ; 0x28 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); c51a: 930b str r3, [sp, #44] ; 0x2c c51c: 0018 movs r0, r3 c51e: 4bb8 ldr r3, [pc, #736] ; (c800 ) c520: 4798 blx r3 c522: 9005 str r0, [sp, #20] uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); c524: 4bb7 ldr r3, [pc, #732] ; (c804 ) c526: 4798 blx r3 if(other_mask_cnt) simple_mode = false; c528: 2500 movs r5, #0 c52a: 2800 cmp r0, #0 c52c: d106 bne.n c53c else if(dsc->border_side != LV_BORDER_SIDE_FULL) simple_mode = false; c52e: 465b mov r3, fp c530: 2512 movs r5, #18 c532: 5f5d ldrsh r5, [r3, r5] c534: 3d0f subs r5, #15 c536: 426a negs r2, r5 c538: 416a adcs r2, r5 c53a: b2d5 uxtb r5, r2 int32_t rout = dsc->radius; c53c: 465b mov r3, fp c53e: 2100 movs r1, #0 c540: 5e59 ldrsh r1, [r3, r1] c542: 464b mov r3, r9 c544: 889b ldrh r3, [r3, #4] c546: 3301 adds r3, #1 c548: 464a mov r2, r9 c54a: 8812 ldrh r2, [r2, #0] c54c: 1a9b subs r3, r3, r2 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c54e: 464a mov r2, r9 c550: 88d2 ldrh r2, [r2, #6] c552: 3201 adds r2, #1 c554: 4648 mov r0, r9 c556: 8840 ldrh r0, [r0, #2] c558: 1a12 subs r2, r2, r0 int32_t coords_h = lv_area_get_height(coords); c55a: b212 sxth r2, r2 int32_t short_side = LV_MATH_MIN(coords_w, coords_h); c55c: b21b sxth r3, r3 c55e: 4293 cmp r3, r2 c560: dd00 ble.n c564 c562: 0013 movs r3, r2 if(rout > short_side >> 1) rout = short_side >> 1; c564: 105b asrs r3, r3, #1 c566: 9309 str r3, [sp, #36] ; 0x24 c568: 428b cmp r3, r1 c56a: dd00 ble.n c56e c56c: 9109 str r1, [sp, #36] ; 0x24 if(rout > 0) { c56e: 9b09 ldr r3, [sp, #36] ; 0x24 c570: 2b00 cmp r3, #0 c572: dc00 bgt.n c576 c574: e084 b.n c680 lv_draw_mask_radius_init(&mask_rout_param, coords, rout, false); c576: b21a sxth r2, r3 c578: 2300 movs r3, #0 c57a: 4649 mov r1, r9 c57c: a822 add r0, sp, #136 ; 0x88 c57e: 4ca2 ldr r4, [pc, #648] ; (c808 ) c580: 47a0 blx r4 mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); c582: 2100 movs r1, #0 c584: a822 add r0, sp, #136 ; 0x88 c586: 4ba1 ldr r3, [pc, #644] ; (c80c ) c588: 4798 blx r3 c58a: 900f str r0, [sp, #60] ; 0x3c int32_t rin = rout - dsc->border_width; c58c: 465b mov r3, fp c58e: 2010 movs r0, #16 c590: 5e18 ldrsh r0, [r3, r0] c592: 2300 movs r3, #0 *d8 = *s8; c594: a91a add r1, sp, #104 ; 0x68 c596: 464c mov r4, r9 c598: 5ce2 ldrb r2, [r4, r3] c59a: 545a strb r2, [r3, r1] c59c: 3301 adds r3, #1 while(len) { c59e: 2b08 cmp r3, #8 c5a0: d1fa bne.n c598 c5a2: 46a1 mov r9, r4 area_small.x1 += ((dsc->border_side & LV_BORDER_SIDE_LEFT) ? dsc->border_width : - (dsc->border_width + rout)); c5a4: ab1a add r3, sp, #104 ; 0x68 c5a6: 881a ldrh r2, [r3, #0] c5a8: 465b mov r3, fp c5aa: 8a5b ldrh r3, [r3, #18] c5ac: 0759 lsls r1, r3, #29 c5ae: d56b bpl.n c688 c5b0: b284 uxth r4, r0 c5b2: a91a add r1, sp, #104 ; 0x68 c5b4: 1912 adds r2, r2, r4 c5b6: 800a strh r2, [r1, #0] area_small.x2 -= ((dsc->border_side & LV_BORDER_SIDE_RIGHT) ? dsc->border_width : - (dsc->border_width + rout)); c5b8: 888a ldrh r2, [r1, #4] c5ba: 0719 lsls r1, r3, #28 c5bc: d569 bpl.n c692 c5be: b284 uxth r4, r0 c5c0: a91a add r1, sp, #104 ; 0x68 c5c2: 1b12 subs r2, r2, r4 c5c4: 808a strh r2, [r1, #4] area_small.y1 += ((dsc->border_side & LV_BORDER_SIDE_TOP) ? dsc->border_width : - (dsc->border_width + rout)); c5c6: 884a ldrh r2, [r1, #2] c5c8: 0799 lsls r1, r3, #30 c5ca: d567 bpl.n c69c c5cc: b284 uxth r4, r0 c5ce: a91a add r1, sp, #104 ; 0x68 c5d0: 1912 adds r2, r2, r4 c5d2: 804a strh r2, [r1, #2] area_small.y2 -= ((dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? dsc->border_width : - (dsc->border_width + rout)); c5d4: 88ca ldrh r2, [r1, #6] c5d6: 07db lsls r3, r3, #31 c5d8: d565 bpl.n c6a6 c5da: b283 uxth r3, r0 c5dc: a91a add r1, sp, #104 ; 0x68 c5de: 1ad3 subs r3, r2, r3 c5e0: 80cb strh r3, [r1, #6] lv_draw_mask_radius_init(&mask_rin_param, &area_small, rout - dsc->border_width, true); c5e2: 9b09 ldr r3, [sp, #36] ; 0x24 c5e4: 4698 mov r8, r3 c5e6: 466a mov r2, sp c5e8: 8313 strh r3, [r2, #24] c5ea: 8b13 ldrh r3, [r2, #24] c5ec: 469a mov sl, r3 c5ee: 1a1a subs r2, r3, r0 c5f0: b212 sxth r2, r2 c5f2: 2301 movs r3, #1 c5f4: a829 add r0, sp, #164 ; 0xa4 c5f6: 4c84 ldr r4, [pc, #528] ; (c808 ) c5f8: 47a0 blx r4 int16_t mask_rin_id = lv_draw_mask_add(&mask_rin_param, NULL); c5fa: 2100 movs r1, #0 c5fc: a829 add r0, sp, #164 ; 0xa4 c5fe: 4b83 ldr r3, [pc, #524] ; (c80c ) c600: 4798 blx r3 c602: 9010 str r0, [sp, #64] ; 0x40 int32_t corner_size = LV_MATH_MAX(rout, dsc->border_width - 1); c604: 465b mov r3, fp c606: 2010 movs r0, #16 c608: 5e1b ldrsh r3, [r3, r0] c60a: 3b01 subs r3, #1 c60c: 930d str r3, [sp, #52] ; 0x34 c60e: 4641 mov r1, r8 c610: 4543 cmp r3, r8 c612: da00 bge.n c616 c614: 910d str r1, [sp, #52] ; 0x34 lv_color_t color = dsc->border_color; c616: 465b mov r3, fp c618: 89db ldrh r3, [r3, #14] c61a: 9311 str r3, [sp, #68] ; 0x44 c61c: 466a mov r2, sp c61e: 8393 strh r3, [r2, #28] lv_blend_mode_t blend_mode = dsc->border_blend_mode; c620: 465b mov r3, fp c622: 7d5b ldrb r3, [r3, #21] c624: 9306 str r3, [sp, #24] if(simple_mode) { c626: 2d00 cmp r5, #0 c628: d100 bne.n c62c c62a: e1bc b.n c9a6 int32_t upper_corner_end = coords->y1 - disp_area->y1 + corner_size; c62c: 2212 movs r2, #18 c62e: 5ebb ldrsh r3, [r7, r2] c630: 464a mov r2, r9 c632: 2102 movs r1, #2 c634: 5e52 ldrsh r2, [r2, r1] c636: 1ad2 subs r2, r2, r3 c638: 990d ldr r1, [sp, #52] ; 0x34 c63a: 468c mov ip, r1 c63c: 4462 add r2, ip upper_corner_end = LV_MATH_MIN(upper_corner_end, draw_area.y2); c63e: a918 add r1, sp, #96 ; 0x60 c640: 2006 movs r0, #6 c642: 5e09 ldrsh r1, [r1, r0] c644: 910c str r1, [sp, #48] ; 0x30 c646: 4291 cmp r1, r2 c648: dd00 ble.n c64c c64a: 920c str r2, [sp, #48] ; 0x30 fill_area.x1 = coords->x1; c64c: aa1c add r2, sp, #112 ; 0x70 c64e: 4649 mov r1, r9 c650: 8809 ldrh r1, [r1, #0] c652: 8011 strh r1, [r2, #0] fill_area.x2 = coords->x2; c654: 4649 mov r1, r9 c656: 8889 ldrh r1, [r1, #4] c658: 8091 strh r1, [r2, #4] fill_area.y1 = disp_area->y1 + draw_area.y1; c65a: a918 add r1, sp, #96 ; 0x60 c65c: 2502 movs r5, #2 c65e: 5f4d ldrsh r5, [r1, r5] c660: 195b adds r3, r3, r5 c662: b21b sxth r3, r3 c664: 8053 strh r3, [r2, #2] fill_area.y2 = fill_area.y1; c666: 80d3 strh r3, [r2, #6] for(h = draw_area.y1; h <= upper_corner_end; h++) { c668: 9b0c ldr r3, [sp, #48] ; 0x30 c66a: 42ab cmp r3, r5 c66c: da00 bge.n c670 c66e: e09f b.n c7b0 fill_area2.y1 = fill_area.y1; c670: ac1e add r4, sp, #120 ; 0x78 c672: 9508 str r5, [sp, #32] c674: 464b mov r3, r9 c676: 46b1 mov r9, r6 c678: 465a mov r2, fp c67a: 920e str r2, [sp, #56] ; 0x38 c67c: 001e movs r6, r3 c67e: e047 b.n c710 int16_t mask_rout_id = LV_MASK_ID_INV; c680: 2301 movs r3, #1 c682: 425b negs r3, r3 c684: 930f str r3, [sp, #60] ; 0x3c c686: e781 b.n c58c area_small.x1 += ((dsc->border_side & LV_BORDER_SIDE_LEFT) ? dsc->border_width : - (dsc->border_width + rout)); c688: 9909 ldr r1, [sp, #36] ; 0x24 c68a: 1844 adds r4, r0, r1 c68c: 4264 negs r4, r4 c68e: b2a4 uxth r4, r4 c690: e78f b.n c5b2 area_small.x2 -= ((dsc->border_side & LV_BORDER_SIDE_RIGHT) ? dsc->border_width : - (dsc->border_width + rout)); c692: 9909 ldr r1, [sp, #36] ; 0x24 c694: 1844 adds r4, r0, r1 c696: 4264 negs r4, r4 c698: b2a4 uxth r4, r4 c69a: e791 b.n c5c0 area_small.y1 += ((dsc->border_side & LV_BORDER_SIDE_TOP) ? dsc->border_width : - (dsc->border_width + rout)); c69c: 9909 ldr r1, [sp, #36] ; 0x24 c69e: 1844 adds r4, r0, r1 c6a0: 4264 negs r4, r4 c6a2: b2a4 uxth r4, r4 c6a4: e793 b.n c5ce area_small.y2 -= ((dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? dsc->border_width : - (dsc->border_width + rout)); c6a6: 9b09 ldr r3, [sp, #36] ; 0x24 c6a8: 18c3 adds r3, r0, r3 c6aa: 425b negs r3, r3 c6ac: b29b uxth r3, r3 c6ae: e795 b.n c5dc fill_area2.x1 = coords->x2 - rout + 1; c6b0: 2204 movs r2, #4 c6b2: 5eb3 ldrsh r3, [r6, r2] c6b4: 1c5a adds r2, r3, #1 c6b6: 4651 mov r1, sl c6b8: 1a52 subs r2, r2, r1 c6ba: 8022 strh r2, [r4, #0] fill_area2.x2 = coords->x2; c6bc: 80a3 strh r3, [r4, #4] int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); c6be: 9a09 ldr r2, [sp, #36] ; 0x24 c6c0: 1a9a subs r2, r3, r2 c6c2: 3201 adds r2, #1 c6c4: 2110 movs r1, #16 c6c6: 5e7b ldrsh r3, [r7, r1] c6c8: a90e add r1, sp, #56 ; 0x38 c6ca: 2028 movs r0, #40 ; 0x28 c6cc: 5e09 ldrsh r1, [r1, r0] c6ce: 185b adds r3, r3, r1 c6d0: 1ad3 subs r3, r2, r3 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); c6d2: 43da mvns r2, r3 c6d4: 17d2 asrs r2, r2, #31 c6d6: 4013 ands r3, r2 c6d8: 9a05 ldr r2, [sp, #20] c6da: 4694 mov ip, r2 c6dc: 4463 add r3, ip c6de: 9a06 ldr r2, [sp, #24] c6e0: 9202 str r2, [sp, #8] c6e2: 464a mov r2, r9 c6e4: 9201 str r2, [sp, #4] c6e6: 4642 mov r2, r8 c6e8: 9200 str r2, [sp, #0] c6ea: 466a mov r2, sp c6ec: 8b92 ldrh r2, [r2, #28] c6ee: 0021 movs r1, r4 c6f0: 9804 ldr r0, [sp, #16] c6f2: 4d47 ldr r5, [pc, #284] ; (c810 ) c6f4: 47a8 blx r5 fill_area.y1++; c6f6: ab1c add r3, sp, #112 ; 0x70 c6f8: 885a ldrh r2, [r3, #2] c6fa: 3201 adds r2, #1 c6fc: 805a strh r2, [r3, #2] fill_area.y2++; c6fe: 88da ldrh r2, [r3, #6] c700: 3201 adds r2, #1 c702: 80da strh r2, [r3, #6] for(h = draw_area.y1; h <= upper_corner_end; h++) { c704: 9a08 ldr r2, [sp, #32] c706: 3201 adds r2, #1 c708: 9208 str r2, [sp, #32] c70a: 9b0c ldr r3, [sp, #48] ; 0x30 c70c: 4293 cmp r3, r2 c70e: db4a blt.n c7a6 _lv_memset_ff(mask_buf, draw_area_w); c710: 990b ldr r1, [sp, #44] ; 0x2c c712: 9d05 ldr r5, [sp, #20] c714: 0028 movs r0, r5 c716: 4b3f ldr r3, [pc, #252] ; (c814 ) c718: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); c71a: 8a7a ldrh r2, [r7, #18] c71c: 9b08 ldr r3, [sp, #32] c71e: 469c mov ip, r3 c720: 4462 add r2, ip c722: b212 sxth r2, r2 c724: 8a39 ldrh r1, [r7, #16] c726: ab0e add r3, sp, #56 ; 0x38 c728: 8d1b ldrh r3, [r3, #40] ; 0x28 c72a: 18c9 adds r1, r1, r3 c72c: b209 sxth r1, r1 c72e: 9b0a ldr r3, [sp, #40] ; 0x28 c730: 9505 str r5, [sp, #20] c732: 0028 movs r0, r5 c734: 4d38 ldr r5, [pc, #224] ; (c818 ) c736: 47a8 blx r5 c738: 4680 mov r8, r0 fill_area2.y1 = fill_area.y1; c73a: ab1c add r3, sp, #112 ; 0x70 c73c: 885a ldrh r2, [r3, #2] c73e: 8062 strh r2, [r4, #2] fill_area2.y2 = fill_area.y2; c740: 88db ldrh r3, [r3, #6] c742: 80e3 strh r3, [r4, #6] fill_area2.x1 = coords->x1; c744: 2200 movs r2, #0 c746: 5eb3 ldrsh r3, [r6, r2] c748: 8023 strh r3, [r4, #0] fill_area2.x2 = coords->x1 + rout - 1; c74a: 3b01 subs r3, #1 c74c: 4453 add r3, sl c74e: 80a3 strh r3, [r4, #4] _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); c750: 9a06 ldr r2, [sp, #24] c752: 9202 str r2, [sp, #8] c754: 464a mov r2, r9 c756: 9201 str r2, [sp, #4] c758: 9000 str r0, [sp, #0] c75a: 9b05 ldr r3, [sp, #20] c75c: 466a mov r2, sp c75e: 8b92 ldrh r2, [r2, #28] c760: 0021 movs r1, r4 c762: 9804 ldr r0, [sp, #16] c764: 4d2a ldr r5, [pc, #168] ; (c810 ) c766: 47a8 blx r5 if(fill_area2.y2 < coords->y1 + dsc->border_width) { c768: 2306 movs r3, #6 c76a: 5ee2 ldrsh r2, [r4, r3] c76c: 2102 movs r1, #2 c76e: 5e73 ldrsh r3, [r6, r1] c770: 990e ldr r1, [sp, #56] ; 0x38 c772: 2010 movs r0, #16 c774: 5e09 ldrsh r1, [r1, r0] c776: 185b adds r3, r3, r1 c778: 429a cmp r2, r3 c77a: da99 bge.n c6b0 fill_area2.x1 = coords->x1 + rout; c77c: 8833 ldrh r3, [r6, #0] c77e: 4453 add r3, sl c780: 8023 strh r3, [r4, #0] fill_area2.x2 = coords->x2 - rout; c782: 88b3 ldrh r3, [r6, #4] c784: 4652 mov r2, sl c786: 1a9b subs r3, r3, r2 c788: 80a3 strh r3, [r4, #4] _lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); c78a: 9b06 ldr r3, [sp, #24] c78c: 9302 str r3, [sp, #8] c78e: 464b mov r3, r9 c790: 9301 str r3, [sp, #4] c792: 2301 movs r3, #1 c794: 9300 str r3, [sp, #0] c796: 2300 movs r3, #0 c798: 466a mov r2, sp c79a: 8b92 ldrh r2, [r2, #28] c79c: 0021 movs r1, r4 c79e: 9804 ldr r0, [sp, #16] c7a0: 4d1b ldr r5, [pc, #108] ; (c810 ) c7a2: 47a8 blx r5 c7a4: e784 b.n c6b0 c7a6: 0032 movs r2, r6 c7a8: 464e mov r6, r9 c7aa: 9b0e ldr r3, [sp, #56] ; 0x38 c7ac: 469b mov fp, r3 c7ae: 4691 mov r9, r2 int32_t lower_corner_end = coords->y2 - disp_area->y1 - corner_size; c7b0: 2212 movs r2, #18 c7b2: 5ebb ldrsh r3, [r7, r2] c7b4: 464a mov r2, r9 c7b6: 2106 movs r1, #6 c7b8: 5e52 ldrsh r2, [r2, r1] c7ba: 1ad2 subs r2, r2, r3 c7bc: 990d ldr r1, [sp, #52] ; 0x34 c7be: 1a52 subs r2, r2, r1 lower_corner_end = LV_MATH_MAX(lower_corner_end, draw_area.y1); c7c0: a918 add r1, sp, #96 ; 0x60 c7c2: 2502 movs r5, #2 c7c4: 5f4d ldrsh r5, [r1, r5] c7c6: 4295 cmp r5, r2 c7c8: da00 bge.n c7cc c7ca: 0015 movs r5, r2 if(lower_corner_end <= upper_corner_end) lower_corner_end = upper_corner_end + 1; c7cc: 990c ldr r1, [sp, #48] ; 0x30 c7ce: 000a movs r2, r1 c7d0: 42a9 cmp r1, r5 c7d2: db01 blt.n c7d8 c7d4: 3201 adds r2, #1 c7d6: 0015 movs r5, r2 fill_area.y1 = disp_area->y1 + lower_corner_end; c7d8: 195b adds r3, r3, r5 c7da: b21b sxth r3, r3 c7dc: aa1c add r2, sp, #112 ; 0x70 c7de: 8053 strh r3, [r2, #2] fill_area.y2 = fill_area.y1; c7e0: 80d3 strh r3, [r2, #6] for(h = lower_corner_end; h <= draw_area.y2; h++) { c7e2: ab18 add r3, sp, #96 ; 0x60 c7e4: 2206 movs r2, #6 c7e6: 5e9b ldrsh r3, [r3, r2] c7e8: 429d cmp r5, r3 c7ea: dd00 ble.n c7ee c7ec: e099 b.n c922 fill_area2.x1 = coords->x1; c7ee: ac1e add r4, sp, #120 ; 0x78 c7f0: 9508 str r5, [sp, #32] c7f2: 464b mov r3, r9 c7f4: 46b1 mov r9, r6 c7f6: 465a mov r2, fp c7f8: 920c str r2, [sp, #48] ; 0x30 c7fa: 001e movs r6, r3 c7fc: e041 b.n c882 c7fe: 46c0 nop ; (mov r8, r8) c800: 00010ec1 .word 0x00010ec1 c804: 0000a6c1 .word 0x0000a6c1 c808: 0000a855 .word 0x0000a855 c80c: 0000a5ed .word 0x0000a5ed c810: 00005c6d .word 0x00005c6d c814: 000110f1 .word 0x000110f1 c818: 0000a625 .word 0x0000a625 fill_area2.x1 = coords->x2 - rout + 1; c81c: 2204 movs r2, #4 c81e: 5eb3 ldrsh r3, [r6, r2] c820: 1c5a adds r2, r3, #1 c822: 4651 mov r1, sl c824: 1a52 subs r2, r2, r1 c826: 8022 strh r2, [r4, #0] fill_area2.x2 = coords->x2; c828: 80a3 strh r3, [r4, #4] int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); c82a: 9a09 ldr r2, [sp, #36] ; 0x24 c82c: 1a9a subs r2, r3, r2 c82e: 3201 adds r2, #1 c830: 2110 movs r1, #16 c832: 5e7b ldrsh r3, [r7, r1] c834: a90e add r1, sp, #56 ; 0x38 c836: 2028 movs r0, #40 ; 0x28 c838: 5e09 ldrsh r1, [r1, r0] c83a: 185b adds r3, r3, r1 c83c: 1ad3 subs r3, r2, r3 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); c83e: 43da mvns r2, r3 c840: 17d2 asrs r2, r2, #31 c842: 4013 ands r3, r2 c844: 9a05 ldr r2, [sp, #20] c846: 4694 mov ip, r2 c848: 4463 add r3, ip c84a: 9a06 ldr r2, [sp, #24] c84c: 9202 str r2, [sp, #8] c84e: 464a mov r2, r9 c850: 9201 str r2, [sp, #4] c852: 4642 mov r2, r8 c854: 9200 str r2, [sp, #0] c856: 466a mov r2, sp c858: 8b92 ldrh r2, [r2, #28] c85a: 0021 movs r1, r4 c85c: 9804 ldr r0, [sp, #16] c85e: 4daf ldr r5, [pc, #700] ; (cb1c ) c860: 47a8 blx r5 fill_area.y1++; c862: ab1c add r3, sp, #112 ; 0x70 c864: 885a ldrh r2, [r3, #2] c866: 3201 adds r2, #1 c868: 805a strh r2, [r3, #2] fill_area.y2++; c86a: 88da ldrh r2, [r3, #6] c86c: 3201 adds r2, #1 c86e: 80da strh r2, [r3, #6] for(h = lower_corner_end; h <= draw_area.y2; h++) { c870: 9a08 ldr r2, [sp, #32] c872: 3201 adds r2, #1 c874: 0011 movs r1, r2 c876: 9208 str r2, [sp, #32] c878: ab0e add r3, sp, #56 ; 0x38 c87a: 222e movs r2, #46 ; 0x2e c87c: 5e9b ldrsh r3, [r3, r2] c87e: 4299 cmp r1, r3 c880: dc4a bgt.n c918 _lv_memset_ff(mask_buf, draw_area_w); c882: 990b ldr r1, [sp, #44] ; 0x2c c884: 9d05 ldr r5, [sp, #20] c886: 0028 movs r0, r5 c888: 4ba5 ldr r3, [pc, #660] ; (cb20 ) c88a: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); c88c: 8a7a ldrh r2, [r7, #18] c88e: 9b08 ldr r3, [sp, #32] c890: 469c mov ip, r3 c892: 4462 add r2, ip c894: b212 sxth r2, r2 c896: 8a39 ldrh r1, [r7, #16] c898: ab0e add r3, sp, #56 ; 0x38 c89a: 8d1b ldrh r3, [r3, #40] ; 0x28 c89c: 18c9 adds r1, r1, r3 c89e: b209 sxth r1, r1 c8a0: 9b0a ldr r3, [sp, #40] ; 0x28 c8a2: 9505 str r5, [sp, #20] c8a4: 0028 movs r0, r5 c8a6: 4d9f ldr r5, [pc, #636] ; (cb24 ) c8a8: 47a8 blx r5 c8aa: 4680 mov r8, r0 fill_area2.x1 = coords->x1; c8ac: 2200 movs r2, #0 c8ae: 5eb3 ldrsh r3, [r6, r2] c8b0: 8023 strh r3, [r4, #0] fill_area2.x2 = coords->x1 + rout - 1; c8b2: 3b01 subs r3, #1 c8b4: 4453 add r3, sl c8b6: 80a3 strh r3, [r4, #4] fill_area2.y1 = fill_area.y1; c8b8: ab1c add r3, sp, #112 ; 0x70 c8ba: 885a ldrh r2, [r3, #2] c8bc: 8062 strh r2, [r4, #2] fill_area2.y2 = fill_area.y2; c8be: 88db ldrh r3, [r3, #6] c8c0: 80e3 strh r3, [r4, #6] _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); c8c2: 9a06 ldr r2, [sp, #24] c8c4: 9202 str r2, [sp, #8] c8c6: 464a mov r2, r9 c8c8: 9201 str r2, [sp, #4] c8ca: 9000 str r0, [sp, #0] c8cc: 9b05 ldr r3, [sp, #20] c8ce: 466a mov r2, sp c8d0: 8b92 ldrh r2, [r2, #28] c8d2: 0021 movs r1, r4 c8d4: 9804 ldr r0, [sp, #16] c8d6: 4d91 ldr r5, [pc, #580] ; (cb1c ) c8d8: 47a8 blx r5 if(fill_area2.y2 > coords->y2 - dsc->border_width) { c8da: 2306 movs r3, #6 c8dc: 5ee2 ldrsh r2, [r4, r3] c8de: 2106 movs r1, #6 c8e0: 5e73 ldrsh r3, [r6, r1] c8e2: 990c ldr r1, [sp, #48] ; 0x30 c8e4: 2010 movs r0, #16 c8e6: 5e09 ldrsh r1, [r1, r0] c8e8: 1a5b subs r3, r3, r1 c8ea: 429a cmp r2, r3 c8ec: dd96 ble.n c81c fill_area2.x1 = coords->x1 + rout; c8ee: 8833 ldrh r3, [r6, #0] c8f0: 4453 add r3, sl c8f2: 8023 strh r3, [r4, #0] fill_area2.x2 = coords->x2 - rout; c8f4: 88b3 ldrh r3, [r6, #4] c8f6: 4652 mov r2, sl c8f8: 1a9b subs r3, r3, r2 c8fa: 80a3 strh r3, [r4, #4] _lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); c8fc: 9b06 ldr r3, [sp, #24] c8fe: 9302 str r3, [sp, #8] c900: 464b mov r3, r9 c902: 9301 str r3, [sp, #4] c904: 2301 movs r3, #1 c906: 9300 str r3, [sp, #0] c908: 2300 movs r3, #0 c90a: 466a mov r2, sp c90c: 8b92 ldrh r2, [r2, #28] c90e: 0021 movs r1, r4 c910: 9804 ldr r0, [sp, #16] c912: 4d82 ldr r5, [pc, #520] ; (cb1c ) c914: 47a8 blx r5 c916: e781 b.n c81c c918: 0032 movs r2, r6 c91a: 464e mov r6, r9 c91c: 9b0c ldr r3, [sp, #48] ; 0x30 c91e: 469b mov fp, r3 c920: 4691 mov r9, r2 fill_area.y1 = coords->y1 + corner_size + 1; c922: 466b mov r3, sp c924: 8e99 ldrh r1, [r3, #52] ; 0x34 c926: ac1c add r4, sp, #112 ; 0x70 c928: 464b mov r3, r9 c92a: 885a ldrh r2, [r3, #2] c92c: 3201 adds r2, #1 c92e: 188a adds r2, r1, r2 c930: 8062 strh r2, [r4, #2] fill_area.y2 = coords->y2 - corner_size - 1; c932: 88db ldrh r3, [r3, #6] c934: 3b01 subs r3, #1 c936: 1a5b subs r3, r3, r1 c938: 80e3 strh r3, [r4, #6] fill_area.x1 = coords->x1; c93a: 464b mov r3, r9 c93c: 2200 movs r2, #0 c93e: 5e9b ldrsh r3, [r3, r2] c940: 8023 strh r3, [r4, #0] fill_area.x2 = coords->x1 + dsc->border_width - 1; c942: 465a mov r2, fp c944: 8a12 ldrh r2, [r2, #16] c946: 3a01 subs r2, #1 c948: 189b adds r3, r3, r2 c94a: 80a3 strh r3, [r4, #4] _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); c94c: 9b06 ldr r3, [sp, #24] c94e: 9302 str r3, [sp, #8] c950: 9601 str r6, [sp, #4] c952: 2701 movs r7, #1 c954: 9700 str r7, [sp, #0] c956: 2300 movs r3, #0 c958: 466a mov r2, sp c95a: 2144 movs r1, #68 ; 0x44 c95c: 1852 adds r2, r2, r1 c95e: 8812 ldrh r2, [r2, #0] c960: 0021 movs r1, r4 c962: 9804 ldr r0, [sp, #16] c964: 4d6d ldr r5, [pc, #436] ; (cb1c ) c966: 47a8 blx r5 fill_area.x1 = coords->x2 - dsc->border_width + 1; c968: 464a mov r2, r9 c96a: 2104 movs r1, #4 c96c: 5e52 ldrsh r2, [r2, r1] c96e: 4659 mov r1, fp c970: 8a0b ldrh r3, [r1, #16] c972: 1ad3 subs r3, r2, r3 c974: 3301 adds r3, #1 c976: 8023 strh r3, [r4, #0] fill_area.x2 = coords->x2; c978: 80a2 strh r2, [r4, #4] _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); c97a: 9b06 ldr r3, [sp, #24] c97c: 9302 str r3, [sp, #8] c97e: 9601 str r6, [sp, #4] c980: 9700 str r7, [sp, #0] c982: 2300 movs r3, #0 c984: 466a mov r2, sp c986: 2144 movs r1, #68 ; 0x44 c988: 1852 adds r2, r2, r1 c98a: 8812 ldrh r2, [r2, #0] c98c: 0021 movs r1, r4 c98e: 9804 ldr r0, [sp, #16] c990: 47a8 blx r5 lv_draw_mask_remove_id(mask_rin_id); c992: 9810 ldr r0, [sp, #64] ; 0x40 c994: 4c64 ldr r4, [pc, #400] ; (cb28 ) c996: 47a0 blx r4 lv_draw_mask_remove_id(mask_rout_id); c998: 980f ldr r0, [sp, #60] ; 0x3c c99a: 47a0 blx r4 _lv_mem_buf_release(mask_buf); c99c: 9805 ldr r0, [sp, #20] c99e: 4b63 ldr r3, [pc, #396] ; (cb2c ) c9a0: 4798 blx r3 c9a2: f7ff f882 bl baaa fill_area.x1 = coords->x1; c9a6: 464b mov r3, r9 c9a8: 2100 movs r1, #0 c9aa: 5e59 ldrsh r1, [r3, r1] c9ac: a81c add r0, sp, #112 ; 0x70 c9ae: 8001 strh r1, [r0, #0] fill_area.x2 = coords->x2; c9b0: 464b mov r3, r9 c9b2: 2204 movs r2, #4 c9b4: 5e9a ldrsh r2, [r3, r2] c9b6: 8082 strh r2, [r0, #4] fill_area.y1 = disp_area->y1 + draw_area.y1; c9b8: ab18 add r3, sp, #96 ; 0x60 c9ba: 2402 movs r4, #2 c9bc: 5f1c ldrsh r4, [r3, r4] c9be: 8a7b ldrh r3, [r7, #18] c9c0: 191b adds r3, r3, r4 c9c2: b21b sxth r3, r3 c9c4: 8043 strh r3, [r0, #2] fill_area.y2 = fill_area.y1; c9c6: 80c3 strh r3, [r0, #6] if(dsc->border_side == LV_BORDER_SIDE_LEFT) fill_area.x2 = coords->x1 + corner_size; c9c8: 465b mov r3, fp c9ca: 2012 movs r0, #18 c9cc: 5e1b ldrsh r3, [r3, r0] c9ce: 2b04 cmp r3, #4 c9d0: d02b beq.n ca2a else if(dsc->border_side == LV_BORDER_SIDE_RIGHT) fill_area.x1 = coords->x2 - corner_size; c9d2: 2b08 cmp r3, #8 c9d4: d045 beq.n ca62 volatile bool top_only = false; c9d6: 2200 movs r2, #0 c9d8: 2116 movs r1, #22 c9da: a80e add r0, sp, #56 ; 0x38 c9dc: 4684 mov ip, r0 c9de: 4461 add r1, ip c9e0: 700a strb r2, [r1, #0] volatile bool bottom_only = false; c9e2: 2117 movs r1, #23 c9e4: 4461 add r1, ip c9e6: 700a strb r2, [r1, #0] if(dsc->border_side == LV_BORDER_SIDE_TOP) top_only = true; c9e8: 2b02 cmp r3, #2 c9ea: d12c bne.n ca46 c9ec: 3201 adds r2, #1 c9ee: 3314 adds r3, #20 c9f0: 4463 add r3, ip c9f2: 701a strb r2, [r3, #0] volatile bool normal = !top_only && !bottom_only ? true : false; c9f4: 2316 movs r3, #22 c9f6: aa0e add r2, sp, #56 ; 0x38 c9f8: 4694 mov ip, r2 c9fa: 4463 add r3, ip c9fc: 781b ldrb r3, [r3, #0] c9fe: 2b00 cmp r3, #0 ca00: d104 bne.n ca0c ca02: 3317 adds r3, #23 ca04: 4463 add r3, ip ca06: 781b ldrb r3, [r3, #0] ca08: 2501 movs r5, #1 ca0a: 405d eors r5, r3 ca0c: 2301 movs r3, #1 ca0e: 401d ands r5, r3 ca10: ab14 add r3, sp, #80 ; 0x50 ca12: 701d strb r5, [r3, #0] for(h = draw_area.y1; h <= draw_area.y2; h++) { ca14: 0025 movs r5, r4 ca16: ab18 add r3, sp, #96 ; 0x60 ca18: 2206 movs r2, #6 ca1a: 5e9b ldrsh r3, [r3, r2] ca1c: 429c cmp r4, r3 ca1e: dcb8 bgt.n c992 (bottom_only && fill_area.y1 >= coords->y2 - corner_size)) { ca20: ac1c add r4, sp, #112 ; 0x70 _lv_memset_ff(mask_buf, draw_area_w); ca22: 4b3f ldr r3, [pc, #252] ; (cb20 ) ca24: 469a mov sl, r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); ca26: 46b0 mov r8, r6 ca28: e051 b.n cace if(dsc->border_side == LV_BORDER_SIDE_LEFT) fill_area.x2 = coords->x1 + corner_size; ca2a: 9a0d ldr r2, [sp, #52] ; 0x34 ca2c: 4694 mov ip, r2 ca2e: 4461 add r1, ip ca30: aa1c add r2, sp, #112 ; 0x70 ca32: 8091 strh r1, [r2, #4] volatile bool top_only = false; ca34: 2200 movs r2, #0 ca36: 2116 movs r1, #22 ca38: a80e add r0, sp, #56 ; 0x38 ca3a: 4684 mov ip, r0 ca3c: 4461 add r1, ip ca3e: 700a strb r2, [r1, #0] volatile bool bottom_only = false; ca40: 2117 movs r1, #23 ca42: 4461 add r1, ip ca44: 700a strb r2, [r1, #0] if(dsc->border_side == LV_BORDER_SIDE_BOTTOM) bottom_only = true; ca46: 2b01 cmp r3, #1 ca48: d010 beq.n ca6c if(dsc->border_side == (LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM)) { ca4a: 2b03 cmp r3, #3 ca4c: d1d2 bne.n c9f4 top_only = true; ca4e: 3b02 subs r3, #2 ca50: 2216 movs r2, #22 ca52: a90e add r1, sp, #56 ; 0x38 ca54: 468c mov ip, r1 ca56: 4462 add r2, ip ca58: 7013 strb r3, [r2, #0] bottom_only = true; ca5a: 2217 movs r2, #23 ca5c: 4462 add r2, ip ca5e: 7013 strb r3, [r2, #0] ca60: e7c8 b.n c9f4 else if(dsc->border_side == LV_BORDER_SIDE_RIGHT) fill_area.x1 = coords->x2 - corner_size; ca62: 990d ldr r1, [sp, #52] ; 0x34 ca64: 1a52 subs r2, r2, r1 ca66: a91c add r1, sp, #112 ; 0x70 ca68: 800a strh r2, [r1, #0] ca6a: e7e3 b.n ca34 if(dsc->border_side == LV_BORDER_SIDE_BOTTOM) bottom_only = true; ca6c: 2201 movs r2, #1 ca6e: 3316 adds r3, #22 ca70: a90e add r1, sp, #56 ; 0x38 ca72: 468c mov ip, r1 ca74: 4463 add r3, ip ca76: 701a strb r2, [r3, #0] ca78: e7bc b.n c9f4 _lv_memset_ff(mask_buf, draw_area_w); ca7a: 990b ldr r1, [sp, #44] ; 0x2c ca7c: 9e05 ldr r6, [sp, #20] ca7e: 0030 movs r0, r6 ca80: 47d0 blx sl mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); ca82: 8a7a ldrh r2, [r7, #18] ca84: 1952 adds r2, r2, r5 ca86: b212 sxth r2, r2 ca88: 8a39 ldrh r1, [r7, #16] ca8a: ab0e add r3, sp, #56 ; 0x38 ca8c: 8d1b ldrh r3, [r3, #40] ; 0x28 ca8e: 18c9 adds r1, r1, r3 ca90: b209 sxth r1, r1 ca92: 9b0a ldr r3, [sp, #40] ; 0x28 ca94: 9605 str r6, [sp, #20] ca96: 0030 movs r0, r6 ca98: 4e22 ldr r6, [pc, #136] ; (cb24 ) ca9a: 47b0 blx r6 _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); ca9c: 9a06 ldr r2, [sp, #24] ca9e: 9202 str r2, [sp, #8] caa0: 4642 mov r2, r8 caa2: 9201 str r2, [sp, #4] caa4: 9000 str r0, [sp, #0] caa6: 9b05 ldr r3, [sp, #20] caa8: 466a mov r2, sp caaa: 8b92 ldrh r2, [r2, #28] caac: 0021 movs r1, r4 caae: 9804 ldr r0, [sp, #16] cab0: 4e1a ldr r6, [pc, #104] ; (cb1c ) cab2: 47b0 blx r6 fill_area.y1++; cab4: 8863 ldrh r3, [r4, #2] cab6: 3301 adds r3, #1 cab8: 8063 strh r3, [r4, #2] fill_area.y2++; caba: 88e3 ldrh r3, [r4, #6] cabc: 3301 adds r3, #1 cabe: 80e3 strh r3, [r4, #6] for(h = draw_area.y1; h <= draw_area.y2; h++) { cac0: 3501 adds r5, #1 cac2: ab0e add r3, sp, #56 ; 0x38 cac4: 222e movs r2, #46 ; 0x2e cac6: 5e9b ldrsh r3, [r3, r2] cac8: 429d cmp r5, r3 caca: dd00 ble.n cace cacc: e761 b.n c992 if(normal || cace: ab14 add r3, sp, #80 ; 0x50 cad0: 781b ldrb r3, [r3, #0] cad2: 2b00 cmp r3, #0 cad4: d1d1 bne.n ca7a (top_only && fill_area.y1 <= coords->y1 + corner_size) || cad6: 3316 adds r3, #22 cad8: aa0e add r2, sp, #56 ; 0x38 cada: 4694 mov ip, r2 cadc: 4463 add r3, ip cade: 781b ldrb r3, [r3, #0] if(normal || cae0: 2b00 cmp r3, #0 cae2: d009 beq.n caf8 (top_only && fill_area.y1 <= coords->y1 + corner_size) || cae4: 2302 movs r3, #2 cae6: 5ee2 ldrsh r2, [r4, r3] cae8: 464b mov r3, r9 caea: 2102 movs r1, #2 caec: 5e5b ldrsh r3, [r3, r1] caee: 990d ldr r1, [sp, #52] ; 0x34 caf0: 468c mov ip, r1 caf2: 4463 add r3, ip caf4: 429a cmp r2, r3 caf6: ddc0 ble.n ca7a (bottom_only && fill_area.y1 >= coords->y2 - corner_size)) { caf8: 2317 movs r3, #23 cafa: aa0e add r2, sp, #56 ; 0x38 cafc: 4694 mov ip, r2 cafe: 4463 add r3, ip cb00: 781b ldrb r3, [r3, #0] (top_only && fill_area.y1 <= coords->y1 + corner_size) || cb02: 2b00 cmp r3, #0 cb04: d0d6 beq.n cab4 (bottom_only && fill_area.y1 >= coords->y2 - corner_size)) { cb06: 2302 movs r3, #2 cb08: 5ee2 ldrsh r2, [r4, r3] cb0a: 464b mov r3, r9 cb0c: 2106 movs r1, #6 cb0e: 5e5b ldrsh r3, [r3, r1] cb10: 990d ldr r1, [sp, #52] ; 0x34 cb12: 1a5b subs r3, r3, r1 cb14: 429a cmp r2, r3 cb16: dbcd blt.n cab4 cb18: e7af b.n ca7a cb1a: 46c0 nop ; (mov r8, r8) cb1c: 00005c6d .word 0x00005c6d cb20: 000110f1 .word 0x000110f1 cb24: 0000a625 .word 0x0000a625 cb28: 0000a679 .word 0x0000a679 cb2c: 00010bd5 .word 0x00010bd5 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, cb30: 234c movs r3, #76 ; 0x4c cb32: 4698 mov r8, r3 cb34: 465b mov r3, fp cb36: 4642 mov r2, r8 cb38: 5e9b ldrsh r3, [r3, r2] cb3a: ad1c add r5, sp, #112 ; 0x70 cb3c: 2600 movs r6, #0 cb3e: 9602 str r6, [sp, #8] cb40: 4abc ldr r2, [pc, #752] ; (ce34 ) cb42: 9201 str r2, [sp, #4] cb44: 465a mov r2, fp cb46: 204e movs r0, #78 ; 0x4e cb48: 5e12 ldrsh r2, [r2, r0] cb4a: 9200 str r2, [sp, #0] cb4c: 465a mov r2, fp cb4e: 6c12 ldr r2, [r2, #64] ; 0x40 cb50: 0028 movs r0, r5 cb52: 4cb9 ldr r4, [pc, #740] ; (ce38 ) cb54: 47a0 blx r4 LV_TXT_FLAG_NONE); lv_area_t value_area; value_area.x1 = 0; cb56: ac22 add r4, sp, #136 ; 0x88 cb58: 8026 strh r6, [r4, #0] value_area.y1 = 0; cb5a: 8066 strh r6, [r4, #2] value_area.x2 = s.x - 1; cb5c: 882b ldrh r3, [r5, #0] cb5e: 3b01 subs r3, #1 cb60: 80a3 strh r3, [r4, #4] value_area.y2 = s.y - 1; cb62: 886b ldrh r3, [r5, #2] cb64: 3b01 subs r3, #1 cb66: 80e3 strh r3, [r4, #6] lv_point_t p_align; _lv_area_align(coords, &value_area, dsc->value_align, &p_align); cb68: ad1e add r5, sp, #120 ; 0x78 cb6a: 2350 movs r3, #80 ; 0x50 cb6c: 465a mov r2, fp cb6e: 5cd2 ldrb r2, [r2, r3] cb70: 002b movs r3, r5 cb72: 0021 movs r1, r4 cb74: 4648 mov r0, r9 cb76: 4fb1 ldr r7, [pc, #708] ; (ce3c ) cb78: 47b8 blx r7 value_area.x1 += p_align.x + dsc->value_ofs_x; cb7a: 882a ldrh r2, [r5, #0] cb7c: 2348 movs r3, #72 ; 0x48 cb7e: 4659 mov r1, fp cb80: 5acb ldrh r3, [r1, r3] cb82: 18d2 adds r2, r2, r3 cb84: b292 uxth r2, r2 cb86: 8823 ldrh r3, [r4, #0] cb88: 18d3 adds r3, r2, r3 cb8a: 8023 strh r3, [r4, #0] value_area.y1 += p_align.y + dsc->value_ofs_y; cb8c: 886b ldrh r3, [r5, #2] cb8e: 214a movs r1, #74 ; 0x4a cb90: 4658 mov r0, fp cb92: 5a41 ldrh r1, [r0, r1] cb94: 185b adds r3, r3, r1 cb96: b29b uxth r3, r3 cb98: 8861 ldrh r1, [r4, #2] cb9a: 1859 adds r1, r3, r1 cb9c: 8061 strh r1, [r4, #2] value_area.x2 += p_align.x + dsc->value_ofs_x; cb9e: 88a1 ldrh r1, [r4, #4] cba0: 1852 adds r2, r2, r1 cba2: 80a2 strh r2, [r4, #4] value_area.y2 += p_align.y + dsc->value_ofs_y; cba4: 88e2 ldrh r2, [r4, #6] cba6: 189b adds r3, r3, r2 cba8: 80e3 strh r3, [r4, #6] lv_draw_label_dsc_t label_dsc; lv_draw_label_dsc_init(&label_dsc); cbaa: ad29 add r5, sp, #164 ; 0xa4 cbac: 0028 movs r0, r5 cbae: 4ba4 ldr r3, [pc, #656] ; (ce40 ) cbb0: 4798 blx r3 label_dsc.font = dsc->value_font; cbb2: 465b mov r3, fp cbb4: 6c1b ldr r3, [r3, #64] ; 0x40 cbb6: 606b str r3, [r5, #4] label_dsc.letter_space = dsc->value_letter_space; cbb8: 465b mov r3, fp cbba: 4642 mov r2, r8 cbbc: 5a9b ldrh r3, [r3, r2] cbbe: 81ab strh r3, [r5, #12] label_dsc.line_space = dsc->value_line_space; cbc0: 465b mov r3, fp cbc2: 3202 adds r2, #2 cbc4: 5a9b ldrh r3, [r3, r2] cbc6: 816b strh r3, [r5, #10] label_dsc.color = dsc->value_color; cbc8: 2346 movs r3, #70 ; 0x46 cbca: 465a mov r2, fp cbcc: 5ad3 ldrh r3, [r2, r3] cbce: 802b strh r3, [r5, #0] label_dsc.opa = dsc->value_opa; cbd0: 2344 movs r3, #68 ; 0x44 cbd2: 5cd3 ldrb r3, [r2, r3] cbd4: 722b strb r3, [r5, #8] lv_draw_label(&value_area, clip, &label_dsc, dsc->value_str, NULL); cbd6: 9600 str r6, [sp, #0] cbd8: 6bd3 ldr r3, [r2, #60] ; 0x3c cbda: 002a movs r2, r5 cbdc: 9904 ldr r1, [sp, #16] cbde: 0020 movs r0, r4 cbe0: 4c98 ldr r4, [pc, #608] ; (ce44 ) cbe2: 47a0 blx r4 cbe4: f7fe ff6c bl bac0 int32_t rin = dsc->radius; cbe8: 9b06 ldr r3, [sp, #24] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); cbea: 3701 adds r7, #1 cbec: 4652 mov r2, sl cbee: 1aba subs r2, r7, r2 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); cbf0: 3501 adds r5, #1 cbf2: 9907 ldr r1, [sp, #28] cbf4: 1a69 subs r1, r5, r1 int32_t inner_h = lv_area_get_height(&area_inner); cbf6: b209 sxth r1, r1 int32_t short_side = LV_MATH_MIN(inner_w, inner_h); cbf8: b212 sxth r2, r2 cbfa: 428a cmp r2, r1 cbfc: dd00 ble.n cc00 cbfe: 000a movs r2, r1 if(rin > short_side >> 1) rin = short_side >> 1; cc00: 1052 asrs r2, r2, #1 cc02: 429a cmp r2, r3 cc04: dd00 ble.n cc08 cc06: 9a06 ldr r2, [sp, #24] int32_t rout = rin + dsc->outline_width; cc08: 9b05 ldr r3, [sp, #20] cc0a: 1899 adds r1, r3, r2 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); cc0c: 9b09 ldr r3, [sp, #36] ; 0x24 cc0e: 3301 adds r3, #1 cc10: 9808 ldr r0, [sp, #32] cc12: 1a1b subs r3, r3, r0 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); cc14: 3401 adds r4, #1 cc16: 980b ldr r0, [sp, #44] ; 0x2c cc18: 1a20 subs r0, r4, r0 int32_t coords_out_h = lv_area_get_height(&area_outer); cc1a: b200 sxth r0, r0 short_side = LV_MATH_MIN(coords_out_w, coords_out_h); cc1c: b21b sxth r3, r3 cc1e: 4283 cmp r3, r0 cc20: dd00 ble.n cc24 cc22: 0003 movs r3, r0 if(rout > short_side >> 1) rout = short_side >> 1; cc24: 105b asrs r3, r3, #1 cc26: 9307 str r3, [sp, #28] cc28: 428b cmp r3, r1 cc2a: dd00 ble.n cc2e cc2c: 9107 str r1, [sp, #28] draw_area.x1 -= disp_area->x1; cc2e: 464b mov r3, r9 cc30: 8a1e ldrh r6, [r3, #16] cc32: a91a add r1, sp, #104 ; 0x68 cc34: 880b ldrh r3, [r1, #0] cc36: 1b9b subs r3, r3, r6 cc38: b298 uxth r0, r3 cc3a: 8008 strh r0, [r1, #0] draw_area.y1 -= disp_area->y1; cc3c: 464b mov r3, r9 cc3e: 8a5c ldrh r4, [r3, #18] cc40: 884d ldrh r5, [r1, #2] cc42: 1b2d subs r5, r5, r4 cc44: 804d strh r5, [r1, #2] draw_area.x2 -= disp_area->x1; cc46: 888b ldrh r3, [r1, #4] cc48: 1b9b subs r3, r3, r6 cc4a: b29b uxth r3, r3 cc4c: 808b strh r3, [r1, #4] draw_area.y2 -= disp_area->y1; cc4e: 88cd ldrh r5, [r1, #6] cc50: 1b2c subs r4, r5, r4 cc52: 80cc strh r4, [r1, #6] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); cc54: 3301 adds r3, #1 cc56: 1a1b subs r3, r3, r0 cc58: b21b sxth r3, r3 cc5a: 001e movs r6, r3 cc5c: 9308 str r3, [sp, #32] lv_draw_mask_radius_init(&mask_rin_param, &area_inner, rin, true); cc5e: b212 sxth r2, r2 cc60: 2301 movs r3, #1 cc62: a916 add r1, sp, #88 ; 0x58 cc64: a822 add r0, sp, #136 ; 0x88 cc66: 4d78 ldr r5, [pc, #480] ; (ce48 ) cc68: 47a8 blx r5 int16_t mask_rin_id = lv_draw_mask_add(&mask_rin_param, NULL); cc6a: 2100 movs r1, #0 cc6c: a822 add r0, sp, #136 ; 0x88 cc6e: 4c77 ldr r4, [pc, #476] ; (ce4c ) cc70: 47a0 blx r4 cc72: 900e str r0, [sp, #56] ; 0x38 lv_draw_mask_radius_init(&mask_rout_param, &area_outer, rout, false); cc74: 9f07 ldr r7, [sp, #28] cc76: b23a sxth r2, r7 cc78: 2300 movs r3, #0 cc7a: a918 add r1, sp, #96 ; 0x60 cc7c: a829 add r0, sp, #164 ; 0xa4 cc7e: 47a8 blx r5 int16_t mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); cc80: 2100 movs r1, #0 cc82: a829 add r0, sp, #164 ; 0xa4 cc84: 47a0 blx r4 cc86: 900f str r0, [sp, #60] ; 0x3c lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); cc88: 9609 str r6, [sp, #36] ; 0x24 cc8a: 0030 movs r0, r6 cc8c: 4b70 ldr r3, [pc, #448] ; (ce50 ) cc8e: 4798 blx r3 cc90: 9005 str r0, [sp, #20] int32_t corner_size = LV_MATH_MAX(rout, dsc->outline_width - 1); cc92: 465b mov r3, fp cc94: 2218 movs r2, #24 cc96: 5e9b ldrsh r3, [r3, r2] lv_color_t color = dsc->outline_color; cc98: 465a mov r2, fp cc9a: 8ad2 ldrh r2, [r2, #22] cc9c: 9211 str r2, [sp, #68] ; 0x44 cc9e: 4669 mov r1, sp cca0: 830a strh r2, [r1, #24] lv_blend_mode_t blend_mode = dsc->outline_blend_mode; cca2: 465a mov r2, fp cca4: 7f52 ldrb r2, [r2, #29] cca6: 4692 mov sl, r2 if(simple_mode) { cca8: 9a0a ldr r2, [sp, #40] ; 0x28 ccaa: 2a00 cmp r2, #0 ccac: d000 beq.n ccb0 ccae: e19b b.n cfe8 int32_t corner_size = LV_MATH_MAX(rout, dsc->outline_width - 1); ccb0: 3b01 subs r3, #1 ccb2: 9310 str r3, [sp, #64] ; 0x40 ccb4: 42bb cmp r3, r7 ccb6: da00 bge.n ccba ccb8: 9710 str r7, [sp, #64] ; 0x40 int32_t upper_corner_end = area_outer.y1 - disp_area->y1 + corner_size; ccba: 464b mov r3, r9 ccbc: 2212 movs r2, #18 ccbe: 5e9b ldrsh r3, [r3, r2] ccc0: a918 add r1, sp, #96 ; 0x60 ccc2: 2002 movs r0, #2 ccc4: 5e0a ldrsh r2, [r1, r0] ccc6: 1ad2 subs r2, r2, r3 ccc8: 9810 ldr r0, [sp, #64] ; 0x40 ccca: 4684 mov ip, r0 cccc: 4462 add r2, ip ccce: 0014 movs r4, r2 ccd0: 920c str r2, [sp, #48] ; 0x30 fill_area.x1 = area_outer.x1; ccd2: aa1c add r2, sp, #112 ; 0x70 ccd4: 8808 ldrh r0, [r1, #0] ccd6: 8010 strh r0, [r2, #0] fill_area.x2 = area_outer.x2; ccd8: 8889 ldrh r1, [r1, #4] ccda: 8091 strh r1, [r2, #4] fill_area.y1 = disp_area->y1 + draw_area.y1; ccdc: a91a add r1, sp, #104 ; 0x68 ccde: 2702 movs r7, #2 cce0: 5fcf ldrsh r7, [r1, r7] cce2: 19db adds r3, r3, r7 cce4: b21b sxth r3, r3 cce6: 8053 strh r3, [r2, #2] fill_area.y2 = fill_area.y1; cce8: 80d3 strh r3, [r2, #6] for(h = draw_area.y1; h <= upper_corner_end; h++) { ccea: 42bc cmp r4, r7 ccec: da00 bge.n ccf0 ccee: e082 b.n cdf6 fill_area2.y1 = fill_area.y1; ccf0: ac1e add r4, sp, #120 ; 0x78 ccf2: 465b mov r3, fp ccf4: 930d str r3, [sp, #52] ; 0x34 ccf6: e02e b.n cd56 fill_area2.x1 = area_outer.x2 - rout + 1; ccf8: ab18 add r3, sp, #96 ; 0x60 ccfa: 2204 movs r2, #4 ccfc: 5e9b ldrsh r3, [r3, r2] ccfe: 1c5a adds r2, r3, #1 cd00: 1b55 subs r5, r2, r5 cd02: 8025 strh r5, [r4, #0] fill_area2.x2 = area_outer.x2; cd04: 80a3 strh r3, [r4, #4] int32_t mask_ofs = (area_outer.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); cd06: 9a07 ldr r2, [sp, #28] cd08: 1a9b subs r3, r3, r2 cd0a: 3301 adds r3, #1 cd0c: 464a mov r2, r9 cd0e: 2110 movs r1, #16 cd10: 5e52 ldrsh r2, [r2, r1] cd12: a90e add r1, sp, #56 ; 0x38 cd14: 2030 movs r0, #48 ; 0x30 cd16: 5e09 ldrsh r1, [r1, r0] cd18: 1852 adds r2, r2, r1 cd1a: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); cd1c: 43da mvns r2, r3 cd1e: 17d2 asrs r2, r2, #31 cd20: 4013 ands r3, r2 cd22: 9a05 ldr r2, [sp, #20] cd24: 4694 mov ip, r2 cd26: 4463 add r3, ip cd28: 4652 mov r2, sl cd2a: 9202 str r2, [sp, #8] cd2c: 4642 mov r2, r8 cd2e: 9201 str r2, [sp, #4] cd30: 9a0a ldr r2, [sp, #40] ; 0x28 cd32: 9200 str r2, [sp, #0] cd34: 466a mov r2, sp cd36: 8b12 ldrh r2, [r2, #24] cd38: 0021 movs r1, r4 cd3a: 9804 ldr r0, [sp, #16] cd3c: 4d45 ldr r5, [pc, #276] ; (ce54 ) cd3e: 47a8 blx r5 fill_area.y1++; cd40: ab1c add r3, sp, #112 ; 0x70 cd42: 885a ldrh r2, [r3, #2] cd44: 3201 adds r2, #1 cd46: 805a strh r2, [r3, #2] fill_area.y2++; cd48: 88da ldrh r2, [r3, #6] cd4a: 3201 adds r2, #1 cd4c: 80da strh r2, [r3, #6] for(h = draw_area.y1; h <= upper_corner_end; h++) { cd4e: 3701 adds r7, #1 cd50: 9b0c ldr r3, [sp, #48] ; 0x30 cd52: 42bb cmp r3, r7 cd54: db4d blt.n cdf2 _lv_memset_ff(mask_buf, draw_area_w); cd56: 9909 ldr r1, [sp, #36] ; 0x24 cd58: 9e05 ldr r6, [sp, #20] cd5a: 0030 movs r0, r6 cd5c: 4b3e ldr r3, [pc, #248] ; (ce58 ) cd5e: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); cd60: 464b mov r3, r9 cd62: 8a5a ldrh r2, [r3, #18] cd64: 19d2 adds r2, r2, r7 cd66: b212 sxth r2, r2 cd68: 8a19 ldrh r1, [r3, #16] cd6a: ab0e add r3, sp, #56 ; 0x38 cd6c: 8e1b ldrh r3, [r3, #48] ; 0x30 cd6e: 18c9 adds r1, r1, r3 cd70: b209 sxth r1, r1 cd72: 9b08 ldr r3, [sp, #32] cd74: 0030 movs r0, r6 cd76: 4d39 ldr r5, [pc, #228] ; (ce5c ) cd78: 47a8 blx r5 cd7a: 900a str r0, [sp, #40] ; 0x28 fill_area2.y1 = fill_area.y1; cd7c: ab1c add r3, sp, #112 ; 0x70 cd7e: 885a ldrh r2, [r3, #2] cd80: 8062 strh r2, [r4, #2] fill_area2.y2 = fill_area.y2; cd82: 88db ldrh r3, [r3, #6] cd84: 80e3 strh r3, [r4, #6] fill_area2.x1 = area_outer.x1; cd86: ab18 add r3, sp, #96 ; 0x60 cd88: 930b str r3, [sp, #44] ; 0x2c cd8a: 2100 movs r1, #0 cd8c: 5e5b ldrsh r3, [r3, r1] cd8e: 8023 strh r3, [r4, #0] fill_area2.x2 = area_outer.x1 + rout - 1; cd90: 466a mov r2, sp cd92: 8b95 ldrh r5, [r2, #28] cd94: 3b01 subs r3, #1 cd96: 18eb adds r3, r5, r3 cd98: 80a3 strh r3, [r4, #4] _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); cd9a: 4652 mov r2, sl cd9c: 9202 str r2, [sp, #8] cd9e: 4642 mov r2, r8 cda0: 9201 str r2, [sp, #4] cda2: 9000 str r0, [sp, #0] cda4: 0033 movs r3, r6 cda6: 466a mov r2, sp cda8: 8b12 ldrh r2, [r2, #24] cdaa: 0021 movs r1, r4 cdac: 9804 ldr r0, [sp, #16] cdae: 4e29 ldr r6, [pc, #164] ; (ce54 ) cdb0: 47b0 blx r6 if(fill_area2.y2 < area_outer.y1 + dsc->outline_width) { cdb2: 2306 movs r3, #6 cdb4: 5ee2 ldrsh r2, [r4, r3] cdb6: 9b0b ldr r3, [sp, #44] ; 0x2c cdb8: 2102 movs r1, #2 cdba: 5e5b ldrsh r3, [r3, r1] cdbc: 990d ldr r1, [sp, #52] ; 0x34 cdbe: 2018 movs r0, #24 cdc0: 5e09 ldrsh r1, [r1, r0] cdc2: 185b adds r3, r3, r1 cdc4: 429a cmp r2, r3 cdc6: da97 bge.n ccf8 fill_area2.x1 = area_outer.x1 + rout; cdc8: aa18 add r2, sp, #96 ; 0x60 cdca: 8813 ldrh r3, [r2, #0] cdcc: 18eb adds r3, r5, r3 cdce: 8023 strh r3, [r4, #0] fill_area2.x2 = area_outer.x2 - rout; cdd0: 8893 ldrh r3, [r2, #4] cdd2: 1b5b subs r3, r3, r5 cdd4: 80a3 strh r3, [r4, #4] _lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); cdd6: 4653 mov r3, sl cdd8: 9302 str r3, [sp, #8] cdda: 4643 mov r3, r8 cddc: 9301 str r3, [sp, #4] cdde: 2301 movs r3, #1 cde0: 9300 str r3, [sp, #0] cde2: 2300 movs r3, #0 cde4: 466a mov r2, sp cde6: 8b12 ldrh r2, [r2, #24] cde8: 0021 movs r1, r4 cdea: 9804 ldr r0, [sp, #16] cdec: 4e19 ldr r6, [pc, #100] ; (ce54 ) cdee: 47b0 blx r6 cdf0: e782 b.n ccf8 cdf2: 9b0d ldr r3, [sp, #52] ; 0x34 cdf4: 469b mov fp, r3 int32_t lower_corner_end = area_outer.y2 - disp_area->y1 - corner_size; cdf6: 464b mov r3, r9 cdf8: 2212 movs r2, #18 cdfa: 5e9b ldrsh r3, [r3, r2] cdfc: aa18 add r2, sp, #96 ; 0x60 cdfe: 2706 movs r7, #6 ce00: 5fd7 ldrsh r7, [r2, r7] ce02: 1aff subs r7, r7, r3 ce04: 9a10 ldr r2, [sp, #64] ; 0x40 ce06: 1abf subs r7, r7, r2 if(lower_corner_end <= upper_corner_end) lower_corner_end = upper_corner_end + 1; ce08: 990c ldr r1, [sp, #48] ; 0x30 ce0a: 000a movs r2, r1 ce0c: 42b9 cmp r1, r7 ce0e: db01 blt.n ce14 ce10: 3201 adds r2, #1 ce12: 0017 movs r7, r2 fill_area.y1 = disp_area->y1 + lower_corner_end; ce14: 19db adds r3, r3, r7 ce16: b21b sxth r3, r3 ce18: aa1c add r2, sp, #112 ; 0x70 ce1a: 8053 strh r3, [r2, #2] fill_area.y2 = fill_area.y1; ce1c: 80d3 strh r3, [r2, #6] for(h = lower_corner_end; h <= draw_area.y2; h++) { ce1e: ab1a add r3, sp, #104 ; 0x68 ce20: 2206 movs r2, #6 ce22: 5e9b ldrsh r3, [r3, r2] ce24: 429f cmp r7, r3 ce26: dd00 ble.n ce2a ce28: e09a b.n cf60 fill_area2.x1 = area_outer.x1; ce2a: ac1e add r4, sp, #120 ; 0x78 ce2c: 465b mov r3, fp ce2e: 930b str r3, [sp, #44] ; 0x2c ce30: e047 b.n cec2 ce32: 46c0 nop ; (mov r8, r8) ce34: 00007c18 .word 0x00007c18 ce38: 00011ae5 .word 0x00011ae5 ce3c: 0000ff41 .word 0x0000ff41 ce40: 000081c5 .word 0x000081c5 ce44: 00008215 .word 0x00008215 ce48: 0000a855 .word 0x0000a855 ce4c: 0000a5ed .word 0x0000a5ed ce50: 00010ec1 .word 0x00010ec1 ce54: 00005c6d .word 0x00005c6d ce58: 000110f1 .word 0x000110f1 ce5c: 0000a625 .word 0x0000a625 fill_area2.x1 = area_outer.x2 - rout + 1; ce60: ab18 add r3, sp, #96 ; 0x60 ce62: 2204 movs r2, #4 ce64: 5e9b ldrsh r3, [r3, r2] ce66: 1c5a adds r2, r3, #1 ce68: 1b55 subs r5, r2, r5 ce6a: 8025 strh r5, [r4, #0] fill_area2.x2 = area_outer.x2; ce6c: 80a3 strh r3, [r4, #4] int32_t mask_ofs = (area_outer.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); ce6e: 9a07 ldr r2, [sp, #28] ce70: 1a9b subs r3, r3, r2 ce72: 3301 adds r3, #1 ce74: 464a mov r2, r9 ce76: 2110 movs r1, #16 ce78: 5e52 ldrsh r2, [r2, r1] ce7a: a90e add r1, sp, #56 ; 0x38 ce7c: 2030 movs r0, #48 ; 0x30 ce7e: 5e09 ldrsh r1, [r1, r0] ce80: 1852 adds r2, r2, r1 ce82: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); ce84: 43da mvns r2, r3 ce86: 17d2 asrs r2, r2, #31 ce88: 4013 ands r3, r2 ce8a: 9a05 ldr r2, [sp, #20] ce8c: 4694 mov ip, r2 ce8e: 4463 add r3, ip ce90: 4652 mov r2, sl ce92: 9202 str r2, [sp, #8] ce94: 4642 mov r2, r8 ce96: 9201 str r2, [sp, #4] ce98: 9a0a ldr r2, [sp, #40] ; 0x28 ce9a: 9200 str r2, [sp, #0] ce9c: 466a mov r2, sp ce9e: 8b12 ldrh r2, [r2, #24] cea0: 0021 movs r1, r4 cea2: 9804 ldr r0, [sp, #16] cea4: 4d89 ldr r5, [pc, #548] ; (d0cc ) cea6: 47a8 blx r5 fill_area.y1++; cea8: ab1c add r3, sp, #112 ; 0x70 ceaa: 885a ldrh r2, [r3, #2] ceac: 3201 adds r2, #1 ceae: 805a strh r2, [r3, #2] fill_area.y2++; ceb0: 88da ldrh r2, [r3, #6] ceb2: 3201 adds r2, #1 ceb4: 80da strh r2, [r3, #6] for(h = lower_corner_end; h <= draw_area.y2; h++) { ceb6: 3701 adds r7, #1 ceb8: ab0e add r3, sp, #56 ; 0x38 ceba: 2236 movs r2, #54 ; 0x36 cebc: 5e9b ldrsh r3, [r3, r2] cebe: 429f cmp r7, r3 cec0: dc4c bgt.n cf5c _lv_memset_ff(mask_buf, draw_area_w); cec2: 9909 ldr r1, [sp, #36] ; 0x24 cec4: 9e05 ldr r6, [sp, #20] cec6: 0030 movs r0, r6 cec8: 4b81 ldr r3, [pc, #516] ; (d0d0 ) ceca: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); cecc: 464b mov r3, r9 cece: 8a5a ldrh r2, [r3, #18] ced0: 19d2 adds r2, r2, r7 ced2: b212 sxth r2, r2 ced4: 8a19 ldrh r1, [r3, #16] ced6: ab0e add r3, sp, #56 ; 0x38 ced8: 8e1b ldrh r3, [r3, #48] ; 0x30 ceda: 18c9 adds r1, r1, r3 cedc: b209 sxth r1, r1 cede: 9b08 ldr r3, [sp, #32] cee0: 0030 movs r0, r6 cee2: 4d7c ldr r5, [pc, #496] ; (d0d4 ) cee4: 47a8 blx r5 cee6: 900a str r0, [sp, #40] ; 0x28 fill_area2.x1 = area_outer.x1; cee8: ab0e add r3, sp, #56 ; 0x38 ceea: 2128 movs r1, #40 ; 0x28 ceec: 5e5b ldrsh r3, [r3, r1] ceee: 8023 strh r3, [r4, #0] fill_area2.x2 = area_outer.x1 + rout - 1; cef0: 466a mov r2, sp cef2: 8b95 ldrh r5, [r2, #28] cef4: 3b01 subs r3, #1 cef6: 18eb adds r3, r5, r3 cef8: 80a3 strh r3, [r4, #4] fill_area2.y1 = fill_area.y1; cefa: ab1c add r3, sp, #112 ; 0x70 cefc: 885a ldrh r2, [r3, #2] cefe: 8062 strh r2, [r4, #2] fill_area2.y2 = fill_area.y2; cf00: 88db ldrh r3, [r3, #6] cf02: 80e3 strh r3, [r4, #6] _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); cf04: 4652 mov r2, sl cf06: 9202 str r2, [sp, #8] cf08: 4642 mov r2, r8 cf0a: 9201 str r2, [sp, #4] cf0c: 9000 str r0, [sp, #0] cf0e: 0033 movs r3, r6 cf10: 466a mov r2, sp cf12: 8b12 ldrh r2, [r2, #24] cf14: 0021 movs r1, r4 cf16: 9804 ldr r0, [sp, #16] cf18: 4e6c ldr r6, [pc, #432] ; (d0cc ) cf1a: 47b0 blx r6 if(fill_area2.y2 > area_outer.y2 - dsc->outline_width) { cf1c: 2306 movs r3, #6 cf1e: 5ee2 ldrsh r2, [r4, r3] cf20: ab0e add r3, sp, #56 ; 0x38 cf22: 212e movs r1, #46 ; 0x2e cf24: 5e5b ldrsh r3, [r3, r1] cf26: 990b ldr r1, [sp, #44] ; 0x2c cf28: 2018 movs r0, #24 cf2a: 5e09 ldrsh r1, [r1, r0] cf2c: 1a5b subs r3, r3, r1 cf2e: 429a cmp r2, r3 cf30: dd96 ble.n ce60 fill_area2.x1 = area_outer.x1 + rout; cf32: aa18 add r2, sp, #96 ; 0x60 cf34: 8813 ldrh r3, [r2, #0] cf36: 18eb adds r3, r5, r3 cf38: 8023 strh r3, [r4, #0] fill_area2.x2 = area_outer.x2 - rout; cf3a: 8893 ldrh r3, [r2, #4] cf3c: 1b5b subs r3, r3, r5 cf3e: 80a3 strh r3, [r4, #4] _lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); cf40: 4653 mov r3, sl cf42: 9302 str r3, [sp, #8] cf44: 4643 mov r3, r8 cf46: 9301 str r3, [sp, #4] cf48: 2301 movs r3, #1 cf4a: 9300 str r3, [sp, #0] cf4c: 2300 movs r3, #0 cf4e: 466a mov r2, sp cf50: 8b12 ldrh r2, [r2, #24] cf52: 0021 movs r1, r4 cf54: 9804 ldr r0, [sp, #16] cf56: 4e5d ldr r6, [pc, #372] ; (d0cc ) cf58: 47b0 blx r6 cf5a: e781 b.n ce60 cf5c: 9b0b ldr r3, [sp, #44] ; 0x2c cf5e: 469b mov fp, r3 fill_area.y1 = area_outer.y1 + corner_size + 1; cf60: 466b mov r3, sp cf62: 2240 movs r2, #64 ; 0x40 cf64: 189b adds r3, r3, r2 cf66: 881b ldrh r3, [r3, #0] cf68: ac1c add r4, sp, #112 ; 0x70 cf6a: ad18 add r5, sp, #96 ; 0x60 cf6c: 886a ldrh r2, [r5, #2] cf6e: 3201 adds r2, #1 cf70: 189a adds r2, r3, r2 cf72: 8062 strh r2, [r4, #2] fill_area.y2 = area_outer.y2 - corner_size - 1; cf74: 88ea ldrh r2, [r5, #6] cf76: 3a01 subs r2, #1 cf78: 1ad3 subs r3, r2, r3 cf7a: 80e3 strh r3, [r4, #6] fill_area.x1 = area_outer.x1; cf7c: 2200 movs r2, #0 cf7e: 5eab ldrsh r3, [r5, r2] cf80: 8023 strh r3, [r4, #0] fill_area.x2 = area_outer.x1 + dsc->outline_width - 1; cf82: 3b01 subs r3, #1 cf84: 465a mov r2, fp cf86: 8b12 ldrh r2, [r2, #24] cf88: 18d3 adds r3, r2, r3 cf8a: 80a3 strh r3, [r4, #4] _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); cf8c: 4653 mov r3, sl cf8e: 9302 str r3, [sp, #8] cf90: 4643 mov r3, r8 cf92: 9301 str r3, [sp, #4] cf94: 2701 movs r7, #1 cf96: 9700 str r7, [sp, #0] cf98: 2300 movs r3, #0 cf9a: 466a mov r2, sp cf9c: 2144 movs r1, #68 ; 0x44 cf9e: 1852 adds r2, r2, r1 cfa0: 8812 ldrh r2, [r2, #0] cfa2: 0021 movs r1, r4 cfa4: 9804 ldr r0, [sp, #16] cfa6: 4e49 ldr r6, [pc, #292] ; (d0cc ) cfa8: 47b0 blx r6 fill_area.x1 = area_outer.x2 - dsc->outline_width + 1; cfaa: 2304 movs r3, #4 cfac: 5eea ldrsh r2, [r5, r3] cfae: 1c53 adds r3, r2, #1 cfb0: 4659 mov r1, fp cfb2: 8b09 ldrh r1, [r1, #24] cfb4: 1a5b subs r3, r3, r1 cfb6: 8023 strh r3, [r4, #0] fill_area.x2 = area_outer.x2; cfb8: 80a2 strh r2, [r4, #4] _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); cfba: 4653 mov r3, sl cfbc: 9302 str r3, [sp, #8] cfbe: 4643 mov r3, r8 cfc0: 9301 str r3, [sp, #4] cfc2: 9700 str r7, [sp, #0] cfc4: 2300 movs r3, #0 cfc6: 466a mov r2, sp cfc8: 2144 movs r1, #68 ; 0x44 cfca: 1852 adds r2, r2, r1 cfcc: 8812 ldrh r2, [r2, #0] cfce: 0021 movs r1, r4 cfd0: 9804 ldr r0, [sp, #16] cfd2: 47b0 blx r6 lv_draw_mask_remove_id(mask_rin_id); cfd4: 980e ldr r0, [sp, #56] ; 0x38 cfd6: 4c40 ldr r4, [pc, #256] ; (d0d8 ) cfd8: 47a0 blx r4 lv_draw_mask_remove_id(mask_rout_id); cfda: 980f ldr r0, [sp, #60] ; 0x3c cfdc: 47a0 blx r4 _lv_mem_buf_release(mask_buf); cfde: 9805 ldr r0, [sp, #20] cfe0: 4b3e ldr r3, [pc, #248] ; (d0dc ) cfe2: 4798 blx r3 cfe4: f7fe fdcf bl bb86 fill_area.x1 = area_outer.x1; cfe8: aa1c add r2, sp, #112 ; 0x70 cfea: ab18 add r3, sp, #96 ; 0x60 cfec: 8819 ldrh r1, [r3, #0] cfee: 8011 strh r1, [r2, #0] fill_area.x2 = area_outer.x2; cff0: 889b ldrh r3, [r3, #4] cff2: 8093 strh r3, [r2, #4] fill_area.y1 = disp_area->y1 + draw_area.y1; cff4: a91a add r1, sp, #104 ; 0x68 cff6: 2302 movs r3, #2 cff8: 5ece ldrsh r6, [r1, r3] cffa: 464b mov r3, r9 cffc: 8a5b ldrh r3, [r3, #18] cffe: 199b adds r3, r3, r6 d000: b21b sxth r3, r3 d002: 8053 strh r3, [r2, #2] fill_area.y2 = fill_area.y1; d004: 80d3 strh r3, [r2, #6] for(h = draw_area.y1; h <= draw_area.y2; h++) { d006: 2206 movs r2, #6 d008: 5e8b ldrsh r3, [r1, r2] d00a: 429e cmp r6, r3 d00c: dce2 bgt.n cfd4 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); d00e: 4b31 ldr r3, [pc, #196] ; (d0d4 ) d010: 469b mov fp, r3 _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); d012: 4f2e ldr r7, [pc, #184] ; (d0cc ) _lv_memset_ff(mask_buf, draw_area_w); d014: 9909 ldr r1, [sp, #36] ; 0x24 d016: 9c05 ldr r4, [sp, #20] d018: 0020 movs r0, r4 d01a: 4b2d ldr r3, [pc, #180] ; (d0d0 ) d01c: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); d01e: 464b mov r3, r9 d020: 8a5a ldrh r2, [r3, #18] d022: 1992 adds r2, r2, r6 d024: b212 sxth r2, r2 d026: ad1a add r5, sp, #104 ; 0x68 d028: 8a19 ldrh r1, [r3, #16] d02a: 882b ldrh r3, [r5, #0] d02c: 18c9 adds r1, r1, r3 d02e: b209 sxth r1, r1 d030: 9b08 ldr r3, [sp, #32] d032: 9405 str r4, [sp, #20] d034: 0020 movs r0, r4 d036: 47d8 blx fp _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); d038: ac1c add r4, sp, #112 ; 0x70 d03a: 4652 mov r2, sl d03c: 9202 str r2, [sp, #8] d03e: 4642 mov r2, r8 d040: 9201 str r2, [sp, #4] d042: 9000 str r0, [sp, #0] d044: 9b05 ldr r3, [sp, #20] d046: 466a mov r2, sp d048: 8b12 ldrh r2, [r2, #24] d04a: 0021 movs r1, r4 d04c: 9804 ldr r0, [sp, #16] d04e: 47b8 blx r7 fill_area.y1++; d050: 8863 ldrh r3, [r4, #2] d052: 3301 adds r3, #1 d054: 8063 strh r3, [r4, #2] fill_area.y2++; d056: 88e3 ldrh r3, [r4, #6] d058: 3301 adds r3, #1 d05a: 80e3 strh r3, [r4, #6] for(h = draw_area.y1; h <= draw_area.y2; h++) { d05c: 3601 adds r6, #1 d05e: 2206 movs r2, #6 d060: 5eab ldrsh r3, [r5, r2] d062: 429e cmp r6, r3 d064: ddd6 ble.n d014 d066: e7b5 b.n cfd4 lv_opa_t * mask_line = _lv_mem_buf_get(size); d068: 9c07 ldr r4, [sp, #28] d06a: 940c str r4, [sp, #48] ; 0x30 d06c: 0020 movs r0, r4 d06e: 4b1c ldr r3, [pc, #112] ; (d0e0 ) d070: 4798 blx r3 d072: 900a str r0, [sp, #40] ; 0x28 for(y = 0; y < size; y++) { d074: 2201 movs r2, #1 d076: 920d str r2, [sp, #52] ; 0x34 d078: 2c00 cmp r4, #0 d07a: dd01 ble.n d080 d07c: f7fd fea3 bl adc6 _lv_mem_buf_release(mask_line); d080: 980a ldr r0, [sp, #40] ; 0x28 d082: 4b16 ldr r3, [pc, #88] ; (d0dc ) d084: 4798 blx r3 for(i = 0; i < size * size; i++) { d086: 9f07 ldr r7, [sp, #28] d088: 437f muls r7, r7 d08a: 2f00 cmp r7, #0 d08c: d101 bne.n d092 d08e: f7fd ff5f bl af50 d092: 9a0e ldr r2, [sp, #56] ; 0x38 d094: 0011 movs r1, r2 d096: 0078 lsls r0, r7, #1 d098: 4694 mov ip, r2 d09a: 4460 add r0, ip res_buf[i] = (sh_buf[i] >> SHADOW_UPSACALE_SHIFT); d09c: 880b ldrh r3, [r1, #0] d09e: 099b lsrs r3, r3, #6 d0a0: 7013 strb r3, [r2, #0] d0a2: 3102 adds r1, #2 d0a4: 3201 adds r2, #1 for(i = 0; i < size * size; i++) { d0a6: 4281 cmp r1, r0 d0a8: d1f8 bne.n d09c d0aa: f7fd ff51 bl af50 lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false); d0ae: 465b mov r3, fp d0b0: 2200 movs r2, #0 d0b2: 5e9a ldrsh r2, [r3, r2] d0b4: 2300 movs r3, #0 d0b6: 4649 mov r1, r9 d0b8: a829 add r0, sp, #164 ; 0xa4 d0ba: 4c0a ldr r4, [pc, #40] ; (d0e4 ) d0bc: 47a0 blx r4 radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL); d0be: 2100 movs r1, #0 d0c0: a829 add r0, sp, #164 ; 0xa4 d0c2: 4b09 ldr r3, [pc, #36] ; (d0e8 ) d0c4: 4798 blx r3 d0c6: 0004 movs r4, r0 d0c8: f7ff f946 bl c358 d0cc: 00005c6d .word 0x00005c6d d0d0: 000110f1 .word 0x000110f1 d0d4: 0000a625 .word 0x0000a625 d0d8: 0000a679 .word 0x0000a679 d0dc: 00010bd5 .word 0x00010bd5 d0e0: 00010ec1 .word 0x00010ec1 d0e4: 0000a855 .word 0x0000a855 d0e8: 0000a5ed .word 0x0000a5ed 0000d0ec : * 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) { d0ec: b5f0 push {r4, r5, r6, r7, lr} d0ee: b083 sub sp, #12 d0f0: 0004 movs r4, r0 d0f2: 000e movs r6, r1 d0f4: 0017 movs r7, r2 lv_color_t p_color = LV_COLOR_BLACK; d0f6: aa01 add r2, sp, #4 d0f8: 7811 ldrb r1, [r2, #0] d0fa: 201f movs r0, #31 d0fc: 4381 bics r1, r0 d0fe: 7011 strb r1, [r2, #0] d100: 8811 ldrh r1, [r2, #0] d102: 4840 ldr r0, [pc, #256] ; (d204 ) d104: 4001 ands r1, r0 d106: 8011 strh r1, [r2, #0] d108: 2100 movs r1, #0 d10a: 7051 strb r1, [r2, #1] uint8_t * buf_u8 = (uint8_t *)dsc->data; d10c: 68a5 ldr r5, [r4, #8] if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED || d10e: 7821 ldrb r1, [r4, #0] d110: 221f movs r2, #31 d112: 400a ands r2, r1 d114: 1f11 subs r1, r2, #4 d116: 2902 cmp r1, #2 d118: d90d bls.n d136 _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) { d11a: 2a07 cmp r2, #7 d11c: d022 beq.n d164 * 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) { d11e: 2a08 cmp r2, #8 d120: d034 beq.n d18c * 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) { d122: 2a09 cmp r2, #9 d124: d048 beq.n d1b8 * 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) { d126: 2a0a cmp r2, #10 d128: d05e beq.n d1e8 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 || d12a: 3a0b subs r2, #11 d12c: 2a03 cmp r2, #3 d12e: d815 bhi.n d15c dsc->header.cf == LV_IMG_CF_ALPHA_4BIT || dsc->header.cf == LV_IMG_CF_ALPHA_8BIT) { p_color = color; d130: aa01 add r2, sp, #4 d132: 8013 strh r3, [r2, #0] d134: e012 b.n d15c uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf) >> 3; d136: 7820 ldrb r0, [r4, #0] d138: 06c0 lsls r0, r0, #27 d13a: 0ec0 lsrs r0, r0, #27 d13c: 4b32 ldr r3, [pc, #200] ; (d208 ) d13e: 4798 blx r3 uint32_t px = dsc->header.w * y * px_size + x * px_size; d140: 6823 ldr r3, [r4, #0] d142: 02db lsls r3, r3, #11 d144: 0d5b lsrs r3, r3, #21 d146: 435f muls r7, r3 d148: 19be adds r6, r7, r6 uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf) >> 3; d14a: 08c0 lsrs r0, r0, #3 uint32_t px = dsc->header.w * y * px_size + x * px_size; d14c: b2c0 uxtb r0, r0 d14e: 4370 muls r0, r6 _lv_memcpy_small(&p_color, &buf_u8[px], sizeof(lv_color_t)); d150: 1828 adds r0, r5, r0 *d8 = *s8; d152: ab01 add r3, sp, #4 d154: 7802 ldrb r2, [r0, #0] d156: 701a strb r2, [r3, #0] d158: 7842 ldrb r2, [r0, #1] d15a: 705a strb r2, [r3, #1] } return p_color; d15c: ab01 add r3, sp, #4 d15e: 8818 ldrh r0, [r3, #0] } d160: b003 add sp, #12 d162: bdf0 pop {r4, r5, r6, r7, pc} p_color.full = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); d164: 4032 ands r2, r6 d166: 2307 movs r3, #7 d168: 1a9a subs r2, r3, r2 uint32_t px = ((dsc->header.w + 7) >> 3) * y + x; d16a: 6820 ldr r0, [r4, #0] d16c: 02c0 lsls r0, r0, #11 d16e: 0d40 lsrs r0, r0, #21 d170: 3007 adds r0, #7 d172: 10c0 asrs r0, r0, #3 d174: 4347 muls r7, r0 d176: 10f6 asrs r6, r6, #3 p_color.full = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); d178: 19ed adds r5, r5, r7 d17a: 19ae adds r6, r5, r6 d17c: 7a31 ldrb r1, [r6, #8] d17e: 3b06 subs r3, #6 d180: 4093 lsls r3, r2 d182: 400b ands r3, r1 d184: 4113 asrs r3, r2 d186: aa01 add r2, sp, #4 d188: 8013 strh r3, [r2, #0] d18a: e7e7 b.n d15c uint8_t bit = (x & 0x3) * 2; d18c: 3a05 subs r2, #5 d18e: 4032 ands r2, r6 p_color.full = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); d190: 0052 lsls r2, r2, #1 d192: 2306 movs r3, #6 d194: 1a9a subs r2, r3, r2 uint32_t px = ((dsc->header.w + 3) >> 2) * y + x; d196: 6820 ldr r0, [r4, #0] d198: 02c0 lsls r0, r0, #11 d19a: 0d40 lsrs r0, r0, #21 d19c: 3003 adds r0, #3 d19e: 1080 asrs r0, r0, #2 d1a0: 4347 muls r7, r0 d1a2: 10b6 asrs r6, r6, #2 p_color.full = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); d1a4: 19ed adds r5, r5, r7 d1a6: 19ae adds r6, r5, r6 d1a8: 7c31 ldrb r1, [r6, #16] d1aa: 3b03 subs r3, #3 d1ac: 4093 lsls r3, r2 d1ae: 400b ands r3, r1 d1b0: 4113 asrs r3, r2 d1b2: aa01 add r2, sp, #4 d1b4: 8013 strh r3, [r2, #0] d1b6: e7d1 b.n d15c uint8_t bit = (x & 0x1) * 4; d1b8: 2301 movs r3, #1 d1ba: 4033 ands r3, r6 p_color.full = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); d1bc: 009b lsls r3, r3, #2 d1be: 3a05 subs r2, #5 d1c0: 1ad3 subs r3, r2, r3 uint32_t px = ((dsc->header.w + 1) >> 1) * y + x; d1c2: 6820 ldr r0, [r4, #0] d1c4: 02c0 lsls r0, r0, #11 d1c6: 0d40 lsrs r0, r0, #21 d1c8: 3001 adds r0, #1 d1ca: 1040 asrs r0, r0, #1 d1cc: 4347 muls r7, r0 d1ce: 1076 asrs r6, r6, #1 p_color.full = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); d1d0: 19ed adds r5, r5, r7 d1d2: 19ad adds r5, r5, r6 d1d4: 3540 adds r5, #64 ; 0x40 d1d6: 7829 ldrb r1, [r5, #0] d1d8: 320b adds r2, #11 d1da: 409a lsls r2, r3 d1dc: 400a ands r2, r1 d1de: 411a asrs r2, r3 d1e0: 0013 movs r3, r2 d1e2: aa01 add r2, sp, #4 d1e4: 8013 strh r3, [r2, #0] d1e6: e7b9 b.n d15c uint32_t px = dsc->header.w * y + x; d1e8: 6823 ldr r3, [r4, #0] d1ea: 02db lsls r3, r3, #11 d1ec: 0d5b lsrs r3, r3, #21 d1ee: 437b muls r3, r7 p_color.full = buf_u8[px]; d1f0: 19ad adds r5, r5, r6 d1f2: 18ed adds r5, r5, r3 d1f4: 2380 movs r3, #128 ; 0x80 d1f6: 00db lsls r3, r3, #3 d1f8: 469c mov ip, r3 d1fa: 4465 add r5, ip d1fc: 782a ldrb r2, [r5, #0] d1fe: ab01 add r3, sp, #4 d200: 801a strh r2, [r3, #0] d202: e7ab b.n d15c d204: fffff81f .word 0xfffff81f d208: 00007ee5 .word 0x00007ee5 0000d20c : * @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) { d20c: b5f0 push {r4, r5, r6, r7, lr} d20e: b087 sub sp, #28 d210: 0004 movs r4, r0 d212: 9201 str r2, [sp, #4] uint8_t * buf_u8 = (uint8_t *)dsc->data; d214: 6886 ldr r6, [r0, #8] if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA) { d216: 7800 ldrb r0, [r0, #0] d218: 231f movs r3, #31 d21a: 4003 ands r3, r0 d21c: 2b05 cmp r3, #5 d21e: d00a beq.n d236 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) { d220: 2b0b cmp r3, #11 d222: d012 beq.n d24a * 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) { d224: 2b0c cmp r3, #12 d226: d028 beq.n d27a * 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) { d228: 2b0d cmp r3, #13 d22a: d047 beq.n d2bc else if(dsc->header.cf == LV_IMG_CF_ALPHA_8BIT) { uint32_t px = dsc->header.w * y + x; return buf_u8[px]; } return LV_OPA_COVER; d22c: 20ff movs r0, #255 ; 0xff else if(dsc->header.cf == LV_IMG_CF_ALPHA_8BIT) { d22e: 2b0e cmp r3, #14 d230: d064 beq.n d2fc } d232: b007 add sp, #28 d234: 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; d236: 6823 ldr r3, [r4, #0] d238: 02db lsls r3, r3, #11 d23a: 0d5b lsrs r3, r3, #21 d23c: 435a muls r2, r3 d23e: 1851 adds r1, r2, r1 return buf_u8[px + LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; d240: 004a lsls r2, r1, #1 d242: 1851 adds r1, r2, r1 d244: 1871 adds r1, r6, r1 d246: 7888 ldrb r0, [r1, #2] d248: e7f3 b.n d232 uint8_t px_opa = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); d24a: 2507 movs r5, #7 d24c: 400d ands r5, r1 d24e: 3b04 subs r3, #4 d250: 1b5d subs r5, r3, r5 uint32_t px = ((dsc->header.w + 7) >> 3) * y + x; d252: 6823 ldr r3, [r4, #0] d254: 02db lsls r3, r3, #11 d256: 0d5b lsrs r3, r3, #21 d258: 3307 adds r3, #7 d25a: 10db asrs r3, r3, #3 d25c: 9a01 ldr r2, [sp, #4] d25e: 435a muls r2, r3 d260: 10c9 asrs r1, r1, #3 uint8_t px_opa = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); d262: 18b2 adds r2, r6, r2 d264: 5c53 ldrb r3, [r2, r1] d266: 2001 movs r0, #1 d268: 40a8 lsls r0, r5 d26a: 4018 ands r0, r3 d26c: 4128 asrs r0, r5 return px_opa ? LV_OPA_TRANSP : LV_OPA_COVER; d26e: b2c3 uxtb r3, r0 d270: 4258 negs r0, r3 d272: 4158 adcs r0, r3 d274: 4240 negs r0, r0 d276: b2c0 uxtb r0, r0 d278: e7db b.n d232 const uint8_t opa_table[4] = {0, 85, 170, 255}; /*Opacity mapping with bpp = 2*/ d27a: 2300 movs r3, #0 d27c: a802 add r0, sp, #8 d27e: 7003 strb r3, [r0, #0] d280: 3355 adds r3, #85 ; 0x55 d282: 7043 strb r3, [r0, #1] d284: 3355 adds r3, #85 ; 0x55 d286: 7083 strb r3, [r0, #2] d288: 20ff movs r0, #255 ; 0xff d28a: ab02 add r3, sp, #8 d28c: 70d8 strb r0, [r3, #3] uint8_t bit = (x & 0x3) * 2; d28e: 2503 movs r5, #3 d290: 400d ands r5, r1 uint8_t px_opa = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); d292: 006d lsls r5, r5, #1 d294: 2306 movs r3, #6 d296: 1b5d subs r5, r3, r5 uint32_t px = ((dsc->header.w + 3) >> 2) * y + x; d298: 6823 ldr r3, [r4, #0] d29a: 02db lsls r3, r3, #11 d29c: 0d5b lsrs r3, r3, #21 d29e: 3303 adds r3, #3 d2a0: 109b asrs r3, r3, #2 d2a2: 9a01 ldr r2, [sp, #4] d2a4: 435a muls r2, r3 d2a6: 1089 asrs r1, r1, #2 uint8_t px_opa = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); d2a8: 18b2 adds r2, r6, r2 d2aa: 5c52 ldrb r2, [r2, r1] d2ac: 2303 movs r3, #3 d2ae: 40ab lsls r3, r5 d2b0: 4013 ands r3, r2 d2b2: 412b asrs r3, r5 return opa_table[px_opa]; d2b4: 4003 ands r3, r0 d2b6: aa02 add r2, sp, #8 d2b8: 5cd0 ldrb r0, [r2, r3] d2ba: e7ba b.n d232 const uint8_t opa_table[16] = {0, 17, 34, 51, /*Opacity mapping with bpp = 4*/ d2bc: ab02 add r3, sp, #8 d2be: 469c mov ip, r3 d2c0: 4b12 ldr r3, [pc, #72] ; (d30c ) d2c2: 4665 mov r5, ip d2c4: cb85 ldmia r3!, {r0, r2, r7} d2c6: c585 stmia r5!, {r0, r2, r7} d2c8: 681b ldr r3, [r3, #0] d2ca: 602b str r3, [r5, #0] uint8_t bit = (x & 0x1) * 4; d2cc: 2501 movs r5, #1 d2ce: 400d ands r5, r1 uint8_t px_opa = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); d2d0: 00ad lsls r5, r5, #2 d2d2: 2304 movs r3, #4 d2d4: 1b5d subs r5, r3, r5 uint32_t px = ((dsc->header.w + 1) >> 1) * y + x; d2d6: 6823 ldr r3, [r4, #0] d2d8: 02db lsls r3, r3, #11 d2da: 0d5b lsrs r3, r3, #21 d2dc: 3301 adds r3, #1 d2de: 105b asrs r3, r3, #1 d2e0: 9a01 ldr r2, [sp, #4] d2e2: 435a muls r2, r3 d2e4: 1049 asrs r1, r1, #1 uint8_t px_opa = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); d2e6: 18b2 adds r2, r6, r2 d2e8: 5c52 ldrb r2, [r2, r1] d2ea: 230f movs r3, #15 d2ec: 40ab lsls r3, r5 d2ee: 4013 ands r3, r2 d2f0: 412b asrs r3, r5 return opa_table[px_opa]; d2f2: 22ff movs r2, #255 ; 0xff d2f4: 4013 ands r3, r2 d2f6: 4662 mov r2, ip d2f8: 5cd0 ldrb r0, [r2, r3] d2fa: e79a b.n d232 uint32_t px = dsc->header.w * y + x; d2fc: 6823 ldr r3, [r4, #0] d2fe: 02db lsls r3, r3, #11 d300: 0d5b lsrs r3, r3, #21 d302: 9a01 ldr r2, [sp, #4] d304: 435a muls r2, r3 return buf_u8[px]; d306: 1871 adds r1, r6, r1 d308: 5c88 ldrb r0, [r1, r2] d30a: e792 b.n d232 d30c: 0001893c .word 0x0001893c 0000d310 <_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) { d310: b5f0 push {r4, r5, r6, r7, lr} d312: 46de mov lr, fp d314: 4657 mov r7, sl d316: 464e mov r6, r9 d318: 4645 mov r5, r8 d31a: b5e0 push {r5, r6, r7, lr} d31c: b083 sub sp, #12 d31e: 0004 movs r4, r0 dsc->tmp.pivot_x_256 = dsc->cfg.pivot_x * 256; d320: 2208 movs r2, #8 d322: 5e83 ldrsh r3, [r0, r2] d324: 021b lsls r3, r3, #8 d326: 6243 str r3, [r0, #36] ; 0x24 dsc->tmp.pivot_y_256 = dsc->cfg.pivot_y * 256; d328: 220a movs r2, #10 d32a: 5e83 ldrsh r3, [r0, r2] d32c: 021b lsls r3, r3, #8 d32e: 6283 str r3, [r0, #40] ; 0x28 int32_t angle_low = dsc->cfg.angle / 10; d330: 230c movs r3, #12 d332: 5ec7 ldrsh r7, [r0, r3] d334: 4b3e ldr r3, [pc, #248] ; (d430 <_lv_img_buf_transform_init+0x120>) d336: 469b mov fp, r3 d338: 210a movs r1, #10 d33a: 0038 movs r0, r7 d33c: 4798 blx r3 d33e: b205 sxth r5, r0 int32_t angle_hight = angle_low + 1; int32_t angle_rem = dsc->cfg.angle - (angle_low * 10); d340: 260a movs r6, #10 d342: 4276 negs r6, r6 d344: 436e muls r6, r5 d346: 19f6 adds r6, r6, r7 int32_t s1 = _lv_trigo_sin(-angle_low); d348: b2ab uxth r3, r5 d34a: 4698 mov r8, r3 d34c: 4258 negs r0, r3 d34e: b200 sxth r0, r0 d350: 4b38 ldr r3, [pc, #224] ; (d434 <_lv_img_buf_transform_init+0x124>) d352: 469a mov sl, r3 d354: 4798 blx r3 d356: 4681 mov r9, r0 int32_t angle_hight = angle_low + 1; d358: 3501 adds r5, #1 int32_t s2 = _lv_trigo_sin(-angle_hight); d35a: b2ad uxth r5, r5 d35c: 4268 negs r0, r5 d35e: b200 sxth r0, r0 d360: 47d0 blx sl d362: 9001 str r0, [sp, #4] int32_t c1 = _lv_trigo_sin(-angle_low + 90); d364: 275a movs r7, #90 ; 0x5a d366: 4642 mov r2, r8 d368: 1ab8 subs r0, r7, r2 d36a: b200 sxth r0, r0 d36c: 47d0 blx sl d36e: 4680 mov r8, r0 int32_t c2 = _lv_trigo_sin(-angle_hight + 90); d370: 1b7d subs r5, r7, r5 d372: b228 sxth r0, r5 d374: 47d0 blx sl d376: 0007 movs r7, r0 dsc->tmp.sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; d378: 250a movs r5, #10 d37a: 1bad subs r5, r5, r6 d37c: 464b mov r3, r9 d37e: 436b muls r3, r5 d380: 0018 movs r0, r3 d382: 9b01 ldr r3, [sp, #4] d384: 4373 muls r3, r6 d386: 18c0 adds r0, r0, r3 d388: 210a movs r1, #10 d38a: 47d8 blx fp d38c: 62e0 str r0, [r4, #44] ; 0x2c dsc->tmp.cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10; d38e: 4643 mov r3, r8 d390: 435d muls r5, r3 d392: 0030 movs r0, r6 d394: 4378 muls r0, r7 d396: 1828 adds r0, r5, r0 d398: 210a movs r1, #10 d39a: 47d8 blx fp d39c: 6320 str r0, [r4, #48] ; 0x30 dsc->tmp.chroma_keyed = lv_img_cf_is_chroma_keyed(dsc->cfg.cf) ? 1 : 0; d39e: 7ca0 ldrb r0, [r4, #18] d3a0: 4b25 ldr r3, [pc, #148] ; (d438 <_lv_img_buf_transform_init+0x128>) d3a2: 4798 blx r3 d3a4: 2634 movs r6, #52 ; 0x34 d3a6: 2501 movs r5, #1 d3a8: 0003 movs r3, r0 d3aa: 402b ands r3, r5 d3ac: 5da0 ldrb r0, [r4, r6] d3ae: 2201 movs r2, #1 d3b0: 4390 bics r0, r2 d3b2: 4318 orrs r0, r3 d3b4: 55a0 strb r0, [r4, r6] dsc->tmp.has_alpha = lv_img_cf_has_alpha(dsc->cfg.cf) ? 1 : 0; d3b6: 7ca0 ldrb r0, [r4, #18] d3b8: 4b20 ldr r3, [pc, #128] ; (d43c <_lv_img_buf_transform_init+0x12c>) d3ba: 4798 blx r3 d3bc: 4005 ands r5, r0 d3be: 006d lsls r5, r5, #1 d3c0: 5da0 ldrb r0, [r4, r6] d3c2: 2302 movs r3, #2 d3c4: 4398 bics r0, r3 d3c6: 4305 orrs r5, r0 d3c8: 55a5 strb r5, [r4, r6] if(dsc->cfg.cf == LV_IMG_CF_TRUE_COLOR || dsc->cfg.cf == LV_IMG_CF_TRUE_COLOR_ALPHA || d3ca: 7ca2 ldrb r2, [r4, #18] d3cc: 1f13 subs r3, r2, #4 d3ce: 2b02 cmp r3, #2 d3d0: d928 bls.n d424 <_lv_img_buf_transform_init+0x114> dsc->cfg.cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED) { dsc->tmp.native_color = 1; } else { dsc->tmp.native_color = 0; d3d2: 2134 movs r1, #52 ; 0x34 d3d4: 5c63 ldrb r3, [r4, r1] d3d6: 2004 movs r0, #4 d3d8: 4383 bics r3, r0 d3da: 5463 strb r3, [r4, r1] } dsc->tmp.img_dsc.data = dsc->cfg.src; d3dc: 6823 ldr r3, [r4, #0] d3de: 6223 str r3, [r4, #32] dsc->tmp.img_dsc.header.always_zero = 0; dsc->tmp.img_dsc.header.cf = dsc->cfg.cf; d3e0: 231f movs r3, #31 d3e2: 4013 ands r3, r2 d3e4: 7623 strb r3, [r4, #24] dsc->tmp.img_dsc.header.w = dsc->cfg.src_w; d3e6: 88a3 ldrh r3, [r4, #4] d3e8: 055b lsls r3, r3, #21 d3ea: 0ada lsrs r2, r3, #11 d3ec: 4b14 ldr r3, [pc, #80] ; (d440 <_lv_img_buf_transform_init+0x130>) d3ee: 69a1 ldr r1, [r4, #24] d3f0: 400b ands r3, r1 d3f2: 4313 orrs r3, r2 d3f4: 61a3 str r3, [r4, #24] dsc->tmp.img_dsc.header.h = dsc->cfg.src_h; d3f6: 88e2 ldrh r2, [r4, #6] d3f8: 0152 lsls r2, r2, #5 d3fa: 02db lsls r3, r3, #11 d3fc: 0edb lsrs r3, r3, #27 d3fe: 4313 orrs r3, r2 d400: 8363 strh r3, [r4, #26] dsc->tmp.zoom_inv = (256 * 256) / dsc->cfg.zoom; d402: 89e1 ldrh r1, [r4, #14] d404: 2080 movs r0, #128 ; 0x80 d406: 0240 lsls r0, r0, #9 d408: 4b09 ldr r3, [pc, #36] ; (d430 <_lv_img_buf_transform_init+0x120>) d40a: 4798 blx r3 d40c: 86e0 strh r0, [r4, #54] ; 0x36 dsc->res.opa = LV_OPA_COVER; d40e: 23ff movs r3, #255 ; 0xff d410: 75a3 strb r3, [r4, #22] dsc->res.color = dsc->cfg.color; d412: 8a23 ldrh r3, [r4, #16] d414: 82a3 strh r3, [r4, #20] } d416: b003 add sp, #12 d418: bc3c pop {r2, r3, r4, r5} d41a: 4690 mov r8, r2 d41c: 4699 mov r9, r3 d41e: 46a2 mov sl, r4 d420: 46ab mov fp, r5 d422: bdf0 pop {r4, r5, r6, r7, pc} dsc->tmp.native_color = 1; d424: 2134 movs r1, #52 ; 0x34 d426: b2eb uxtb r3, r5 d428: 2004 movs r0, #4 d42a: 4303 orrs r3, r0 d42c: 5463 strb r3, [r4, r1] d42e: e7d5 b.n d3dc <_lv_img_buf_transform_init+0xcc> d430: 00017995 .word 0x00017995 d434: 00010935 .word 0x00010935 d438: 00007f15 .word 0x00007f15 d43c: 00007f29 .word 0x00007f29 d440: ffe003ff .word 0xffe003ff 0000d444 <_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) { d444: b5f0 push {r4, r5, r6, r7, lr} d446: 46de mov lr, fp d448: 4657 mov r7, sl d44a: 464e mov r6, r9 d44c: 4645 mov r5, r8 d44e: b5e0 push {r5, r6, r7, lr} d450: b087 sub sp, #28 d452: 9000 str r0, [sp, #0] d454: 9102 str r1, [sp, #8] d456: 9205 str r2, [sp, #20] d458: 001d movs r5, r3 d45a: ab10 add r3, sp, #64 ; 0x40 d45c: 881b ldrh r3, [r3, #0] d45e: 469b mov fp, r3 #if LV_USE_IMG_TRANSFORM int32_t angle_low = angle / 10; d460: 4f6a ldr r7, [pc, #424] ; (d60c <_lv_img_buf_get_transformed_area+0x1c8>) d462: 210a movs r1, #10 d464: 0028 movs r0, r5 d466: 47b8 blx r7 d468: b204 sxth r4, r0 int32_t angle_hight = angle_low + 1; d46a: 1c66 adds r6, r4, #1 int32_t angle_rem = angle - (angle_low * 10); d46c: 200a movs r0, #10 d46e: 4240 negs r0, r0 d470: 4360 muls r0, r4 d472: 1945 adds r5, r0, r5 int32_t s1 = _lv_trigo_sin(angle_low); d474: 0020 movs r0, r4 d476: 4b66 ldr r3, [pc, #408] ; (d610 <_lv_img_buf_get_transformed_area+0x1cc>) d478: 4699 mov r9, r3 d47a: 4798 blx r3 d47c: 4680 mov r8, r0 int32_t s2 = _lv_trigo_sin(angle_hight); d47e: b230 sxth r0, r6 d480: 47c8 blx r9 d482: 4682 mov sl, r0 int32_t c1 = _lv_trigo_sin(angle_low + 90); d484: 345a adds r4, #90 ; 0x5a d486: b220 sxth r0, r4 d488: 47c8 blx r9 d48a: 0004 movs r4, r0 int32_t c2 = _lv_trigo_sin(angle_hight + 90); d48c: 365a adds r6, #90 ; 0x5a d48e: b230 sxth r0, r6 d490: 47c8 blx r9 d492: 4681 mov r9, r0 int32_t sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; d494: 260a movs r6, #10 d496: 1b76 subs r6, r6, r5 d498: 4640 mov r0, r8 d49a: 4370 muls r0, r6 d49c: 4653 mov r3, sl d49e: 436b muls r3, r5 d4a0: 18c0 adds r0, r0, r3 d4a2: 210a movs r1, #10 d4a4: 47b8 blx r7 d4a6: 4680 mov r8, r0 int32_t cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10; d4a8: 4374 muls r4, r6 d4aa: 464b mov r3, r9 d4ac: 435d muls r5, r3 d4ae: 1960 adds r0, r4, r5 d4b0: 210a movs r1, #10 d4b2: 47b8 blx r7 lv_coord_t xt; lv_coord_t yt; lv_area_t a; a.x1 = ((-pivot->x) * zoom) >> 8; d4b4: 9b11 ldr r3, [sp, #68] ; 0x44 d4b6: 2200 movs r2, #0 d4b8: 5e9a ldrsh r2, [r3, r2] a.y1 = ((-pivot->y) * zoom) >> 8; d4ba: 9b11 ldr r3, [sp, #68] ; 0x44 d4bc: 2702 movs r7, #2 d4be: 5fdf ldrsh r7, [r3, r7] a.x1 = ((-pivot->x) * zoom) >> 8; d4c0: 4254 negs r4, r2 d4c2: 465b mov r3, fp d4c4: 435c muls r4, r3 d4c6: 1224 asrs r4, r4, #8 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; d4c8: b224 sxth r4, r4 d4ca: 0023 movs r3, r4 d4cc: 4343 muls r3, r0 d4ce: 4699 mov r9, r3 a.y1 = ((-pivot->y) * zoom) >> 8; d4d0: 427b negs r3, r7 d4d2: 465d mov r5, fp d4d4: 436b muls r3, r5 d4d6: 121b asrs r3, r3, #8 lt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; d4d8: b21b sxth r3, r3 d4da: 4641 mov r1, r8 d4dc: 4359 muls r1, r3 d4de: b296 uxth r6, r2 d4e0: 464d mov r5, r9 d4e2: 1a6d subs r5, r5, r1 d4e4: 13ed asrs r5, r5, #15 d4e6: 1975 adds r5, r6, r5 d4e8: b22d sxth r5, r5 d4ea: 46aa mov sl, r5 lt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; d4ec: 4645 mov r5, r8 d4ee: 4365 muls r5, r4 d4f0: 4343 muls r3, r0 d4f2: b2bc uxth r4, r7 d4f4: 9503 str r5, [sp, #12] d4f6: 18ed adds r5, r5, r3 d4f8: 13ed asrs r5, r5, #15 d4fa: 9401 str r4, [sp, #4] d4fc: 46a4 mov ip, r4 d4fe: 4465 add r5, ip d500: b22d sxth r5, r5 a.x2 = ((w - pivot->x) * zoom) >> 8; d502: 9c02 ldr r4, [sp, #8] d504: 1aa2 subs r2, r4, r2 d506: 465c mov r4, fp d508: 4362 muls r2, r4 d50a: 1212 asrs r2, r2, #8 xt = a.x2; yt = a.y1; rt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; d50c: b212 sxth r2, r2 d50e: 0014 movs r4, r2 d510: 4344 muls r4, r0 d512: 9402 str r4, [sp, #8] d514: 1a61 subs r1, r4, r1 d516: 13c9 asrs r1, r1, #15 d518: 1871 adds r1, r6, r1 d51a: b209 sxth r1, r1 rt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; d51c: 4644 mov r4, r8 d51e: 4362 muls r2, r4 d520: 9204 str r2, [sp, #16] d522: 4694 mov ip, r2 d524: 4463 add r3, ip d526: 13db asrs r3, r3, #15 d528: 9c01 ldr r4, [sp, #4] d52a: 46a4 mov ip, r4 d52c: 4463 add r3, ip d52e: b21b sxth r3, r3 a.y2 = ((h - pivot->y) * zoom) >> 8; d530: 9c05 ldr r4, [sp, #20] d532: 1be7 subs r7, r4, r7 d534: 465c mov r4, fp d536: 4367 muls r7, r4 d538: 123f asrs r7, r7, #8 xt = a.x1; yt = a.y2; lb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; d53a: b23f sxth r7, r7 d53c: 4644 mov r4, r8 d53e: 437c muls r4, r7 d540: 46a0 mov r8, r4 d542: 464c mov r4, r9 d544: 4642 mov r2, r8 d546: 1aa4 subs r4, r4, r2 d548: 13e2 asrs r2, r4, #15 d54a: 4691 mov r9, r2 d54c: 44b1 add r9, r6 d54e: 464a mov r2, r9 d550: b212 sxth r2, r2 d552: 4691 mov r9, r2 lb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; d554: 4378 muls r0, r7 d556: 9f03 ldr r7, [sp, #12] d558: 183f adds r7, r7, r0 d55a: 13ff asrs r7, r7, #15 d55c: 46e3 mov fp, ip d55e: 4467 add r7, ip d560: b23f sxth r7, r7 xt = a.x2; yt = a.y2; rb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; d562: 9a02 ldr r2, [sp, #8] d564: 4644 mov r4, r8 d566: 1b12 subs r2, r2, r4 d568: 13d2 asrs r2, r2, #15 d56a: 4690 mov r8, r2 d56c: 4446 add r6, r8 d56e: b236 sxth r6, r6 rb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; d570: 9a04 ldr r2, [sp, #16] d572: 4694 mov ip, r2 d574: 4460 add r0, ip d576: 13c0 asrs r0, r0, #15 d578: 465a mov r2, fp d57a: 1814 adds r4, r2, r0 d57c: b224 sxth r4, r4 res->x1 = LV_MATH_MIN4(lb.x, lt.x, rb.x, rt.x); d57e: 4652 mov r2, sl d580: 458a cmp sl, r1 d582: dd00 ble.n d586 <_lv_img_buf_get_transformed_area+0x142> d584: 1c0a adds r2, r1, #0 d586: 1c10 adds r0, r2, #0 d588: b212 sxth r2, r2 d58a: 454a cmp r2, r9 d58c: dd00 ble.n d590 <_lv_img_buf_get_transformed_area+0x14c> d58e: 4648 mov r0, r9 d590: 1c02 adds r2, r0, #0 d592: b200 sxth r0, r0 d594: 42b0 cmp r0, r6 d596: dd00 ble.n d59a <_lv_img_buf_get_transformed_area+0x156> d598: 1c32 adds r2, r6, #0 d59a: 9800 ldr r0, [sp, #0] d59c: 8002 strh r2, [r0, #0] res->x2 = LV_MATH_MAX4(lb.x, lt.x, rb.x, rt.x); d59e: 4650 mov r0, sl d5a0: 458a cmp sl, r1 d5a2: da00 bge.n d5a6 <_lv_img_buf_get_transformed_area+0x162> d5a4: 1c08 adds r0, r1, #0 d5a6: 1c01 adds r1, r0, #0 d5a8: b200 sxth r0, r0 d5aa: 4548 cmp r0, r9 d5ac: da00 bge.n d5b0 <_lv_img_buf_get_transformed_area+0x16c> d5ae: 4649 mov r1, r9 d5b0: 1c0a adds r2, r1, #0 d5b2: b209 sxth r1, r1 d5b4: 42b1 cmp r1, r6 d5b6: da00 bge.n d5ba <_lv_img_buf_get_transformed_area+0x176> d5b8: 1c32 adds r2, r6, #0 d5ba: 9900 ldr r1, [sp, #0] d5bc: 808a strh r2, [r1, #4] res->y1 = LV_MATH_MIN4(lb.y, lt.y, rb.y, rt.y); d5be: 1c29 adds r1, r5, #0 d5c0: 429d cmp r5, r3 d5c2: dd00 ble.n d5c6 <_lv_img_buf_get_transformed_area+0x182> d5c4: 1c19 adds r1, r3, #0 d5c6: 1c0a adds r2, r1, #0 d5c8: b209 sxth r1, r1 d5ca: 42b9 cmp r1, r7 d5cc: dd00 ble.n d5d0 <_lv_img_buf_get_transformed_area+0x18c> d5ce: 1c3a adds r2, r7, #0 d5d0: 1c11 adds r1, r2, #0 d5d2: b212 sxth r2, r2 d5d4: 42a2 cmp r2, r4 d5d6: dd00 ble.n d5da <_lv_img_buf_get_transformed_area+0x196> d5d8: 1c21 adds r1, r4, #0 d5da: 9a00 ldr r2, [sp, #0] d5dc: 8051 strh r1, [r2, #2] res->y2 = LV_MATH_MAX4(lb.y, lt.y, rb.y, rt.y); d5de: 1c2a adds r2, r5, #0 d5e0: 429d cmp r5, r3 d5e2: da00 bge.n d5e6 <_lv_img_buf_get_transformed_area+0x1a2> d5e4: 1c1a adds r2, r3, #0 d5e6: 1c13 adds r3, r2, #0 d5e8: b212 sxth r2, r2 d5ea: 42ba cmp r2, r7 d5ec: da00 bge.n d5f0 <_lv_img_buf_get_transformed_area+0x1ac> d5ee: 1c3b adds r3, r7, #0 d5f0: 1c1a adds r2, r3, #0 d5f2: b21b sxth r3, r3 d5f4: 42a3 cmp r3, r4 d5f6: da00 bge.n d5fa <_lv_img_buf_get_transformed_area+0x1b6> d5f8: 1c22 adds r2, r4, #0 d5fa: 9b00 ldr r3, [sp, #0] d5fc: 80da strh r2, [r3, #6] res->x1 = 0; res->y1 = 0; res->x2 = w; res->y2 = h; #endif } d5fe: b007 add sp, #28 d600: bc3c pop {r2, r3, r4, r5} d602: 4690 mov r8, r2 d604: 4699 mov r9, r3 d606: 46a2 mov sl, r4 d608: 46ab mov fp, r5 d60a: bdf0 pop {r4, r5, r6, r7, pc} d60c: 00017995 .word 0x00017995 d610: 00010935 .word 0x00010935 0000d614 <_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) { d614: b5f0 push {r4, r5, r6, r7, lr} d616: 46de mov lr, fp d618: 4657 mov r7, sl d61a: 464e mov r6, r9 d61c: 4645 mov r5, r8 d61e: b5e0 push {r5, r6, r7, lr} d620: b08b sub sp, #44 ; 0x2c d622: 0004 movs 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; d624: 2338 movs r3, #56 ; 0x38 d626: 5ec7 ldrsh r7, [r0, r3] d628: 23ff movs r3, #255 ; 0xff d62a: 001a movs r2, r3 d62c: 403a ands r2, r7 int ys_fract = dsc->tmp.ys & 0xff; d62e: 213a movs r1, #58 ; 0x3a d630: 5e46 ldrsh r6, [r0, r1] d632: 4033 ands r3, r6 int32_t xn; /*x neightboor*/ lv_opa_t xr; /*x mix ratio*/ if(xs_fract < 0x70) { d634: 2a6f cmp r2, #111 ; 0x6f d636: dc7e bgt.n d736 <_lv_img_buf_transform_anti_alias+0x122> xn = - 1; if(dsc->tmp.xs_int + xn < 0) xn = 0; d638: 223c movs r2, #60 ; 0x3c d63a: 5e81 ldrsh r1, [r0, r2] d63c: 4249 negs r1, r1 d63e: 17c9 asrs r1, r1, #31 xr = xs_fract + 0x80; d640: 3f80 subs r7, #128 ; 0x80 d642: b2ff uxtb r7, r7 } int32_t yn; /*x neightboor*/ lv_opa_t yr; /*x mix ratio*/ if(ys_fract < 0x70) { d644: 2b6f cmp r3, #111 ; 0x6f d646: dd00 ble.n d64a <_lv_img_buf_transform_anti_alias+0x36> d648: e087 b.n d75a <_lv_img_buf_transform_anti_alias+0x146> yn = - 1; if(dsc->tmp.ys_int + yn < 0) yn = 0; d64a: 233e movs r3, #62 ; 0x3e d64c: 5ee2 ldrsh r2, [r4, r3] d64e: 4252 negs r2, r2 d650: 17d3 asrs r3, r2, #31 d652: 4698 mov r8, r3 yr = ys_fract + 0x80; d654: 3e80 subs r6, #128 ; 0x80 d656: b2f6 uxtb r6, r6 else { yn = 0; yr = 0xFF; } lv_color_t c00 = dsc->res.color; d658: 7d25 ldrb r5, [r4, #20] d65a: 06ed lsls r5, r5, #27 d65c: 0eeb lsrs r3, r5, #27 d65e: 9300 str r3, [sp, #0] d660: 8aa3 ldrh r3, [r4, #20] d662: 055b lsls r3, r3, #21 d664: 0e9b lsrs r3, r3, #26 d666: 9301 str r3, [sp, #4] d668: 7d63 ldrb r3, [r4, #21] d66a: 08db lsrs r3, r3, #3 d66c: 9302 str r3, [sp, #8] lv_color_t c01; lv_color_t c10; lv_color_t c11; lv_opa_t a00 = dsc->res.opa; d66e: 7da3 ldrb r3, [r4, #22] d670: 9303 str r3, [sp, #12] lv_opa_t a10 = 0; lv_opa_t a01 = 0; lv_opa_t a11 = 0; if(dsc->tmp.native_color) { d672: 2334 movs r3, #52 ; 0x34 d674: 5ce3 ldrb r3, [r4, r3] d676: 4699 mov r9, r3 d678: 075b lsls r3, r3, #29 d67a: d400 bmi.n d67e <_lv_img_buf_transform_anti_alias+0x6a> d67c: e081 b.n d782 <_lv_img_buf_transform_anti_alias+0x16e> const uint8_t * src_u8 = dsc->cfg.src; d67e: 6823 ldr r3, [r4, #0] _lv_memcpy_small(&c01, &src_u8[dsc->tmp.pxi + dsc->tmp.px_size * xn], sizeof(lv_color_t)); d680: 2244 movs r2, #68 ; 0x44 d682: 5ca2 ldrb r2, [r4, r2] d684: 4694 mov ip, r2 d686: 4351 muls r1, r2 d688: 6c22 ldr r2, [r4, #64] ; 0x40 d68a: 4692 mov sl, r2 d68c: 4451 add r1, sl d68e: 1858 adds r0, r3, r1 d690: aa09 add r2, sp, #36 ; 0x24 d692: 7805 ldrb r5, [r0, #0] d694: 7015 strb r5, [r2, #0] d696: 7840 ldrb r0, [r0, #1] d698: 7050 strb r0, [r2, #1] _lv_memcpy_small(&c10, &src_u8[dsc->tmp.pxi + dsc->cfg.src_w * dsc->tmp.px_size * yn], sizeof(lv_color_t)); d69a: 2004 movs r0, #4 d69c: 5e22 ldrsh r2, [r4, r0] d69e: 4660 mov r0, ip d6a0: 4342 muls r2, r0 d6a2: 4640 mov r0, r8 d6a4: 4350 muls r0, r2 d6a6: 0002 movs r2, r0 d6a8: 6c20 ldr r0, [r4, #64] ; 0x40 d6aa: 4680 mov r8, r0 d6ac: 4490 add r8, r2 d6ae: 469a mov sl, r3 d6b0: 44c2 add sl, r8 d6b2: a808 add r0, sp, #32 d6b4: 4655 mov r5, sl d6b6: 782d ldrb r5, [r5, #0] d6b8: 7005 strb r5, [r0, #0] d6ba: 4655 mov r5, sl d6bc: 786d ldrb r5, [r5, #1] d6be: 7045 strb r5, [r0, #1] _lv_memcpy_small(&c11, &src_u8[dsc->tmp.pxi + dsc->cfg.src_w * dsc->tmp.px_size * yn + dsc->tmp.px_size * xn], d6c0: 188a adds r2, r1, r2 d6c2: 1898 adds r0, r3, r2 d6c4: 4682 mov sl, r0 d6c6: a807 add r0, sp, #28 d6c8: 4655 mov r5, sl d6ca: 782d ldrb r5, [r5, #0] d6cc: 7005 strb r5, [r0, #0] d6ce: 4655 mov r5, sl d6d0: 786d ldrb r5, [r5, #1] d6d2: 7045 strb r5, [r0, #1] sizeof(lv_color_t)); if(dsc->tmp.has_alpha) { d6d4: 4648 mov r0, r9 d6d6: 0780 lsls r0, r0, #30 d6d8: d400 bmi.n d6dc <_lv_img_buf_transform_anti_alias+0xc8> d6da: e084 b.n d7e6 <_lv_img_buf_transform_anti_alias+0x1d2> d6dc: 4660 mov r0, ip d6de: 3801 subs r0, #1 a10 = src_u8[dsc->tmp.pxi + dsc->tmp.px_size * xn + dsc->tmp.px_size - 1]; d6e0: 181b adds r3, r3, r0 d6e2: 5c59 ldrb r1, [r3, r1] d6e4: 4689 mov r9, r1 a01 = src_u8[dsc->tmp.pxi + dsc->cfg.src_w * dsc->tmp.px_size * yn + dsc->tmp.px_size - 1]; d6e6: 4641 mov r1, r8 d6e8: 5c59 ldrb r1, [r3, r1] d6ea: 468a mov sl, r1 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]; d6ec: 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; d6ee: 21ff movs r1, #255 ; 0xff d6f0: 1bcb subs r3, r1, r7 d6f2: 464a mov r2, r9 d6f4: 435a muls r2, r3 d6f6: 4694 mov ip, r2 d6f8: 9a03 ldr r2, [sp, #12] d6fa: 437a muls r2, r7 d6fc: 4462 add r2, ip d6fe: 1212 asrs r2, r2, #8 lv_opa_t a1 = (a01 * xr + (a11 * (255 - xr))) >> 8; d700: 4343 muls r3, r0 d702: 4655 mov r5, sl d704: 437d muls r5, r7 d706: 46ac mov ip, r5 d708: 4463 add r3, ip d70a: 121b asrs r3, r3, #8 d70c: b2dd uxtb r5, r3 d70e: 46ac mov ip, r5 dsc->res.opa = (a0 * yr + (a1 * (255 - yr))) >> 8; d710: 400b ands r3, r1 d712: 1b8d subs r5, r1, r6 d714: 436b muls r3, r5 d716: 4011 ands r1, r2 d718: 4371 muls r1, r6 d71a: 185b adds r3, r3, r1 d71c: 121b asrs r3, r3, #8 d71e: 75a3 strb r3, [r4, #22] if(a0 <= LV_OPA_MIN && a1 <= LV_OPA_MIN) return false; d720: b2d2 uxtb r2, r2 d722: 2a05 cmp r2, #5 d724: d900 bls.n d728 <_lv_img_buf_transform_anti_alias+0x114> d726: e0dc b.n d8e2 <_lv_img_buf_transform_anti_alias+0x2ce> d728: 2300 movs r3, #0 d72a: 4662 mov r2, ip if(a0 <= LV_OPA_MIN) yr = LV_OPA_TRANSP; d72c: 2600 movs r6, #0 if(a0 <= LV_OPA_MIN && a1 <= LV_OPA_MIN) return false; d72e: 2a05 cmp r2, #5 d730: d900 bls.n d734 <_lv_img_buf_transform_anti_alias+0x120> d732: e0da b.n d8ea <_lv_img_buf_transform_anti_alias+0x2d6> d734: e0ab b.n d88e <_lv_img_buf_transform_anti_alias+0x27a> else if(xs_fract > 0x90) { d736: 2a90 cmp r2, #144 ; 0x90 d738: dd0c ble.n d754 <_lv_img_buf_transform_anti_alias+0x140> if(dsc->tmp.xs_int + xn >= dsc->cfg.src_w) xn = 0; d73a: 213c movs r1, #60 ; 0x3c d73c: 5e42 ldrsh r2, [r0, r1] d73e: 3201 adds r2, #1 d740: 2104 movs r1, #4 d742: 5e40 ldrsh r0, [r0, r1] d744: 2101 movs r1, #1 d746: 4282 cmp r2, r0 d748: db00 blt.n d74c <_lv_img_buf_transform_anti_alias+0x138> d74a: 2100 movs r1, #0 xr = (0xFF - xs_fract) + 0x80; d74c: 227f movs r2, #127 ; 0x7f d74e: 1bd7 subs r7, r2, r7 d750: b2ff uxtb r7, r7 d752: e777 b.n d644 <_lv_img_buf_transform_anti_alias+0x30> xr = 0xFF; d754: 27ff movs r7, #255 ; 0xff xn = 0; d756: 2100 movs r1, #0 d758: e774 b.n d644 <_lv_img_buf_transform_anti_alias+0x30> else if(ys_fract > 0x90) { d75a: 2b90 cmp r3, #144 ; 0x90 d75c: dd0d ble.n d77a <_lv_img_buf_transform_anti_alias+0x166> if(dsc->tmp.ys_int + yn >= dsc->cfg.src_h) yn = 0; d75e: 223e movs r2, #62 ; 0x3e d760: 5ea3 ldrsh r3, [r4, r2] d762: 3301 adds r3, #1 d764: 2206 movs r2, #6 d766: 5ea0 ldrsh r0, [r4, r2] d768: 2201 movs r2, #1 d76a: 4283 cmp r3, r0 d76c: db00 blt.n d770 <_lv_img_buf_transform_anti_alias+0x15c> d76e: 2200 movs r2, #0 yn = 1; d770: 4690 mov r8, r2 yr = (0xFF - ys_fract) + 0x80; d772: 237f movs r3, #127 ; 0x7f d774: 1b9e subs r6, r3, r6 d776: b2f6 uxtb r6, r6 d778: e76e b.n d658 <_lv_img_buf_transform_anti_alias+0x44> yr = 0xFF; d77a: 26ff movs r6, #255 ; 0xff yn = 0; d77c: 2300 movs r3, #0 d77e: 4698 mov r8, r3 d780: e76a b.n d658 <_lv_img_buf_transform_anti_alias+0x44> c01 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int, dsc->cfg.color); d782: 2318 movs r3, #24 d784: 469c mov ip, r3 d786: 44a4 add ip, r4 d788: 4665 mov r5, ip d78a: b28b uxth r3, r1 d78c: 469b mov fp, r3 d78e: 8a23 ldrh r3, [r4, #16] d790: 213e movs r1, #62 ; 0x3e d792: 5e62 ldrsh r2, [r4, r1] d794: 8fa1 ldrh r1, [r4, #60] ; 0x3c d796: 4459 add r1, fp d798: b209 sxth r1, r1 d79a: 9504 str r5, [sp, #16] d79c: 4660 mov r0, ip d79e: 4daf ldr r5, [pc, #700] ; (da5c <_lv_img_buf_transform_anti_alias+0x448>) d7a0: 46a9 mov r9, r5 d7a2: 47a8 blx r5 d7a4: ab09 add r3, sp, #36 ; 0x24 d7a6: 8018 strh r0, [r3, #0] c10 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int, dsc->tmp.ys_int + yn, dsc->cfg.color); d7a8: 4642 mov r2, r8 d7aa: 466b mov r3, sp d7ac: 82da strh r2, [r3, #22] d7ae: b292 uxth r2, r2 d7b0: 4690 mov r8, r2 d7b2: 8a23 ldrh r3, [r4, #16] d7b4: 8fe2 ldrh r2, [r4, #62] ; 0x3e d7b6: 4442 add r2, r8 d7b8: b212 sxth r2, r2 d7ba: 203c movs r0, #60 ; 0x3c d7bc: 5e21 ldrsh r1, [r4, r0] d7be: 9d04 ldr r5, [sp, #16] d7c0: 0028 movs r0, r5 d7c2: 47c8 blx r9 d7c4: ab08 add r3, sp, #32 d7c6: 8018 strh r0, [r3, #0] c11 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int + yn, dsc->cfg.color); d7c8: 8a23 ldrh r3, [r4, #16] d7ca: 8fe2 ldrh r2, [r4, #62] ; 0x3e d7cc: 4442 add r2, r8 d7ce: b212 sxth r2, r2 d7d0: 8fa1 ldrh r1, [r4, #60] ; 0x3c d7d2: 4459 add r1, fp d7d4: b209 sxth r1, r1 d7d6: 0028 movs r0, r5 d7d8: 47c8 blx r9 d7da: ab07 add r3, sp, #28 d7dc: 8018 strh r0, [r3, #0] if(dsc->tmp.has_alpha) { d7de: 2334 movs r3, #52 ; 0x34 d7e0: 5ce3 ldrb r3, [r4, r3] d7e2: 079b lsls r3, r3, #30 d7e4: d45b bmi.n d89e <_lv_img_buf_transform_anti_alias+0x28a> if(a11 <= LV_OPA_MIN) xr1 = LV_OPA_COVER; } else { xr0 = xr; xr1 = xr; dsc->res.opa = LV_OPA_COVER; d7e6: 23ff movs r3, #255 ; 0xff d7e8: 75a3 strb r3, [r4, #22] xr0 = xr; d7ea: 003b movs r3, r7 } lv_color_t c0; if(xr0 == LV_OPA_TRANSP) c0 = c01; d7ec: 2b00 cmp r3, #0 d7ee: d000 beq.n d7f2 <_lv_img_buf_transform_anti_alias+0x1de> d7f0: e08d b.n d90e <_lv_img_buf_transform_anti_alias+0x2fa> d7f2: ab09 add r3, sp, #36 ; 0x24 d7f4: 781d ldrb r5, [r3, #0] d7f6: 06ed lsls r5, r5, #27 d7f8: 0eea lsrs r2, r5, #27 d7fa: 9200 str r2, [sp, #0] d7fc: 881a ldrh r2, [r3, #0] d7fe: 0552 lsls r2, r2, #21 d800: 0e92 lsrs r2, r2, #26 d802: 9201 str r2, [sp, #4] d804: 785b ldrb r3, [r3, #1] d806: 08db lsrs r3, r3, #3 d808: 9302 str r3, [sp, #8] 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; d80a: 2f00 cmp r7, #0 d80c: d000 beq.n d810 <_lv_img_buf_transform_anti_alias+0x1fc> d80e: e0b7 b.n d980 <_lv_img_buf_transform_anti_alias+0x36c> d810: aa07 add r2, sp, #28 d812: 7817 ldrb r7, [r2, #0] d814: 06ff lsls r7, r7, #27 d816: 0eff lsrs r7, r7, #27 d818: 8813 ldrh r3, [r2, #0] d81a: 055b lsls r3, r3, #21 d81c: 0e9b lsrs r3, r3, #26 d81e: 7852 ldrb r2, [r2, #1] d820: 08d2 lsrs r2, r2, #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; d822: 2e00 cmp r6, #0 d824: d100 bne.n d828 <_lv_img_buf_transform_anti_alias+0x214> d826: e0f1 b.n da0c <_lv_img_buf_transform_anti_alias+0x3f8> else if(yr == LV_OPA_COVER) dsc->res.color = c0; d828: 2eff cmp r6, #255 ; 0xff d82a: d100 bne.n d82e <_lv_img_buf_transform_anti_alias+0x21a> d82c: e100 b.n da30 <_lv_img_buf_transform_anti_alias+0x41c> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); d82e: 21ff movs r1, #255 ; 0xff d830: 1b89 subs r1, r1, r6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); d832: 9d00 ldr r5, [sp, #0] d834: 4375 muls r5, r6 d836: 434f muls r7, r1 d838: 19ef adds r7, r5, r7 d83a: 023d lsls r5, r7, #8 d83c: 19ed adds r5, r5, r7 d83e: 01ed lsls r5, r5, #7 d840: 19ed adds r5, r5, r7 else dsc->res.color = lv_color_mix(c0, c1, yr); d842: 012d lsls r5, r5, #4 d844: 0eed lsrs r5, r5, #27 d846: 7d20 ldrb r0, [r4, #20] d848: 271f movs r7, #31 d84a: 43b8 bics r0, r7 d84c: 4305 orrs r5, r0 d84e: 7525 strb r5, [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))); d850: 9801 ldr r0, [sp, #4] d852: 4370 muls r0, r6 d854: 434b muls r3, r1 d856: 18c0 adds r0, r0, r3 d858: 0203 lsls r3, r0, #8 d85a: 181b adds r3, r3, r0 d85c: 01db lsls r3, r3, #7 d85e: 181b adds r3, r3, r0 d860: 00db lsls r3, r3, #3 d862: 0e9b lsrs r3, r3, #26 d864: 015b lsls r3, r3, #5 d866: 8aa0 ldrh r0, [r4, #20] d868: 4d7d ldr r5, [pc, #500] ; (da60 <_lv_img_buf_transform_anti_alias+0x44c>) d86a: 4028 ands r0, r5 d86c: 4303 orrs r3, r0 d86e: 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))); d870: 9802 ldr r0, [sp, #8] d872: 4346 muls r6, r0 d874: 434a muls r2, r1 d876: 18b6 adds r6, r6, r2 d878: 0232 lsls r2, r6, #8 d87a: 1992 adds r2, r2, r6 d87c: 01d2 lsls r2, r2, #7 d87e: 1996 adds r6, r2, r6 d880: 0df6 lsrs r6, r6, #23 d882: 00f6 lsls r6, r6, #3 d884: 055b lsls r3, r3, #21 d886: 0f5b lsrs r3, r3, #29 d888: 431e orrs r6, r3 d88a: 7566 strb r6, [r4, #21] return true; d88c: 2301 movs r3, #1 } d88e: 0018 movs r0, r3 d890: b00b add sp, #44 ; 0x2c d892: bc3c pop {r2, r3, r4, r5} d894: 4690 mov r8, r2 d896: 4699 mov r9, r3 d898: 46a2 mov sl, r4 d89a: 46ab mov fp, r5 d89c: bdf0 pop {r4, r5, r6, r7, pc} a10 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int); d89e: 233e movs r3, #62 ; 0x3e d8a0: 5ee2 ldrsh r2, [r4, r3] d8a2: 8fa1 ldrh r1, [r4, #60] ; 0x3c d8a4: 4459 add r1, fp d8a6: b209 sxth r1, r1 d8a8: 9d04 ldr r5, [sp, #16] d8aa: 0028 movs r0, r5 d8ac: 4b6d ldr r3, [pc, #436] ; (da64 <_lv_img_buf_transform_anti_alias+0x450>) d8ae: 4798 blx r3 d8b0: 4681 mov r9, r0 a01 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int, dsc->tmp.ys_int + yn); d8b2: 8fe2 ldrh r2, [r4, #62] ; 0x3e d8b4: 4442 add r2, r8 d8b6: b212 sxth r2, r2 d8b8: 233c movs r3, #60 ; 0x3c d8ba: 5ee1 ldrsh r1, [r4, r3] d8bc: 0028 movs r0, r5 d8be: 4b69 ldr r3, [pc, #420] ; (da64 <_lv_img_buf_transform_anti_alias+0x450>) d8c0: 4798 blx r3 d8c2: 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); d8c4: 8fe2 ldrh r2, [r4, #62] ; 0x3e d8c6: 4442 add r2, r8 d8c8: b212 sxth r2, r2 d8ca: 8fa1 ldrh r1, [r4, #60] ; 0x3c d8cc: 4459 add r1, fp d8ce: b209 sxth r1, r1 d8d0: 0028 movs r0, r5 d8d2: 4b64 ldr r3, [pc, #400] ; (da64 <_lv_img_buf_transform_anti_alias+0x450>) d8d4: 4798 blx r3 if(dsc->tmp.has_alpha) { d8d6: 2334 movs r3, #52 ; 0x34 d8d8: 5ce3 ldrb r3, [r4, r3] d8da: 079b lsls r3, r3, #30 d8dc: d500 bpl.n d8e0 <_lv_img_buf_transform_anti_alias+0x2cc> d8de: e706 b.n d6ee <_lv_img_buf_transform_anti_alias+0xda> d8e0: e781 b.n d7e6 <_lv_img_buf_transform_anti_alias+0x1d2> if(a1 <= LV_OPA_MIN) yr = LV_OPA_COVER; d8e2: 4663 mov r3, ip d8e4: 2b05 cmp r3, #5 d8e6: d800 bhi.n d8ea <_lv_img_buf_transform_anti_alias+0x2d6> d8e8: 26ff movs r6, #255 ; 0xff lv_opa_t xr0 = xr; d8ea: 003b movs r3, r7 if(a00 <= LV_OPA_MIN) xr0 = LV_OPA_TRANSP; d8ec: 9a03 ldr r2, [sp, #12] d8ee: 2a05 cmp r2, #5 d8f0: d800 bhi.n d8f4 <_lv_img_buf_transform_anti_alias+0x2e0> d8f2: 2300 movs r3, #0 if(a10 <= LV_OPA_MIN) xr0 = LV_OPA_COVER; d8f4: 464a mov r2, r9 d8f6: 2a05 cmp r2, #5 d8f8: d800 bhi.n d8fc <_lv_img_buf_transform_anti_alias+0x2e8> d8fa: 23ff movs r3, #255 ; 0xff if(a01 <= LV_OPA_MIN) xr1 = LV_OPA_TRANSP; d8fc: 4652 mov r2, sl d8fe: 2a05 cmp r2, #5 d900: d800 bhi.n d904 <_lv_img_buf_transform_anti_alias+0x2f0> d902: 2700 movs r7, #0 if(a11 <= LV_OPA_MIN) xr1 = LV_OPA_COVER; d904: 2805 cmp r0, #5 d906: d900 bls.n d90a <_lv_img_buf_transform_anti_alias+0x2f6> d908: e770 b.n d7ec <_lv_img_buf_transform_anti_alias+0x1d8> d90a: 27ff movs r7, #255 ; 0xff d90c: e76e b.n d7ec <_lv_img_buf_transform_anti_alias+0x1d8> else if(xr0 == LV_OPA_COVER) c0 = c00; d90e: 2bff cmp r3, #255 ; 0xff d910: d100 bne.n d914 <_lv_img_buf_transform_anti_alias+0x300> d912: e77a b.n d80a <_lv_img_buf_transform_anti_alias+0x1f6> d914: 22ff movs r2, #255 ; 0xff d916: 1ad2 subs r2, r2, r3 d918: a809 add r0, sp, #36 ; 0x24 d91a: 7841 ldrb r1, [r0, #1] d91c: 08c9 lsrs r1, r1, #3 d91e: 4351 muls r1, r2 d920: 9d02 ldr r5, [sp, #8] d922: 435d muls r5, r3 d924: 46ac mov ip, r5 d926: 448c add ip, r1 d928: 4661 mov r1, ip d92a: 0209 lsls r1, r1, #8 d92c: 4461 add r1, ip d92e: 01c9 lsls r1, r1, #7 d930: 4461 add r1, ip d932: 0dc9 lsrs r1, r1, #23 d934: 251f movs r5, #31 d936: 46ac mov ip, r5 d938: 400d ands r5, r1 d93a: 9502 str r5, [sp, #8] LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); d93c: 8801 ldrh r1, [r0, #0] d93e: 0549 lsls r1, r1, #21 d940: 0e89 lsrs r1, r1, #26 d942: 4351 muls r1, r2 d944: 9d01 ldr r5, [sp, #4] d946: 435d muls r5, r3 d948: 46a8 mov r8, r5 d94a: 4441 add r1, r8 d94c: 020d lsls r5, r1, #8 d94e: 46a8 mov r8, r5 d950: 4488 add r8, r1 d952: 4645 mov r5, r8 d954: 01ed lsls r5, r5, #7 d956: 46a8 mov r8, r5 d958: 4441 add r1, r8 d95a: 00c9 lsls r1, r1, #3 d95c: 0e89 lsrs r1, r1, #26 d95e: 9101 str r1, [sp, #4] LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); d960: 7801 ldrb r1, [r0, #0] d962: 06c9 lsls r1, r1, #27 d964: 0ec9 lsrs r1, r1, #27 d966: 434a muls r2, r1 d968: 9d00 ldr r5, [sp, #0] d96a: 435d muls r5, r3 d96c: 1952 adds r2, r2, r5 d96e: 0215 lsls r5, r2, #8 d970: 18ad adds r5, r5, r2 d972: 01ed lsls r5, r5, #7 d974: 18ad adds r5, r5, r2 d976: 0ded lsrs r5, r5, #23 d978: 4663 mov r3, ip d97a: 401d ands r5, r3 d97c: 9500 str r5, [sp, #0] d97e: e744 b.n d80a <_lv_img_buf_transform_anti_alias+0x1f6> else if(xr1 == LV_OPA_COVER) c1 = c10; d980: 2fff cmp r7, #255 ; 0xff d982: d039 beq.n d9f8 <_lv_img_buf_transform_anti_alias+0x3e4> LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); d984: 23ff movs r3, #255 ; 0xff d986: 1bdb subs r3, r3, r7 d988: 4698 mov r8, r3 d98a: a808 add r0, sp, #32 d98c: 7842 ldrb r2, [r0, #1] d98e: 08d2 lsrs r2, r2, #3 d990: 437a muls r2, r7 d992: a907 add r1, sp, #28 d994: 784b ldrb r3, [r1, #1] d996: 08db lsrs r3, r3, #3 d998: 4645 mov r5, r8 d99a: 436b muls r3, r5 d99c: 18d3 adds r3, r2, r3 d99e: 021a lsls r2, r3, #8 d9a0: 18d2 adds r2, r2, r3 d9a2: 01d2 lsls r2, r2, #7 d9a4: 18d2 adds r2, r2, r3 d9a6: 0dd2 lsrs r2, r2, #23 d9a8: 231f movs r3, #31 d9aa: 469c mov ip, r3 d9ac: 401a ands r2, r3 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); d9ae: 8803 ldrh r3, [r0, #0] d9b0: 055b lsls r3, r3, #21 d9b2: 0e9b lsrs r3, r3, #26 d9b4: 437b muls r3, r7 d9b6: 4699 mov r9, r3 d9b8: 880b ldrh r3, [r1, #0] d9ba: 055b lsls r3, r3, #21 d9bc: 0e9b lsrs r3, r3, #26 d9be: 436b muls r3, r5 d9c0: 444b add r3, r9 d9c2: 021d lsls r5, r3, #8 d9c4: 46a9 mov r9, r5 d9c6: 4499 add r9, r3 d9c8: 464d mov r5, r9 d9ca: 01ed lsls r5, r5, #7 d9cc: 46a9 mov r9, r5 d9ce: 444b add r3, r9 d9d0: 00db lsls r3, r3, #3 d9d2: 0e9b lsrs r3, r3, #26 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); d9d4: 7800 ldrb r0, [r0, #0] d9d6: 06c0 lsls r0, r0, #27 d9d8: 0ec0 lsrs r0, r0, #27 d9da: 4347 muls r7, r0 d9dc: 7809 ldrb r1, [r1, #0] d9de: 06c9 lsls r1, r1, #27 d9e0: 0ec9 lsrs r1, r1, #27 d9e2: 4640 mov r0, r8 d9e4: 4341 muls r1, r0 d9e6: 1879 adds r1, r7, r1 d9e8: 020f lsls r7, r1, #8 d9ea: 187f adds r7, r7, r1 d9ec: 01ff lsls r7, r7, #7 d9ee: 187f adds r7, r7, r1 d9f0: 0dff lsrs r7, r7, #23 d9f2: 4661 mov r1, ip d9f4: 400f ands r7, r1 d9f6: e714 b.n d822 <_lv_img_buf_transform_anti_alias+0x20e> d9f8: aa08 add r2, sp, #32 d9fa: 7817 ldrb r7, [r2, #0] d9fc: 06ff lsls r7, r7, #27 d9fe: 0eff lsrs r7, r7, #27 da00: 8813 ldrh r3, [r2, #0] da02: 055b lsls r3, r3, #21 da04: 0e9b lsrs r3, r3, #26 da06: 7852 ldrb r2, [r2, #1] da08: 08d2 lsrs r2, r2, #3 da0a: e70a b.n d822 <_lv_img_buf_transform_anti_alias+0x20e> if(yr == LV_OPA_TRANSP) dsc->res.color = c1; da0c: 7d25 ldrb r5, [r4, #20] da0e: 211f movs r1, #31 da10: 438d bics r5, r1 da12: 432f orrs r7, r5 da14: 7527 strb r7, [r4, #20] da16: 0159 lsls r1, r3, #5 da18: 8aa3 ldrh r3, [r4, #20] da1a: 4811 ldr r0, [pc, #68] ; (da60 <_lv_img_buf_transform_anti_alias+0x44c>) da1c: 4003 ands r3, r0 da1e: 430b orrs r3, r1 da20: 82a3 strh r3, [r4, #20] da22: 00d2 lsls r2, r2, #3 da24: 055b lsls r3, r3, #21 da26: 0f5b lsrs r3, r3, #29 da28: 431a orrs r2, r3 da2a: 7562 strb r2, [r4, #21] return true; da2c: 2301 movs r3, #1 da2e: e72e b.n d88e <_lv_img_buf_transform_anti_alias+0x27a> else if(yr == LV_OPA_COVER) dsc->res.color = c0; da30: 7d23 ldrb r3, [r4, #20] da32: 221f movs r2, #31 da34: 4393 bics r3, r2 da36: 9d00 ldr r5, [sp, #0] da38: 431d orrs r5, r3 da3a: 7525 strb r5, [r4, #20] da3c: 9b01 ldr r3, [sp, #4] da3e: 015a lsls r2, r3, #5 da40: 8aa3 ldrh r3, [r4, #20] da42: 4907 ldr r1, [pc, #28] ; (da60 <_lv_img_buf_transform_anti_alias+0x44c>) da44: 400b ands r3, r1 da46: 4313 orrs r3, r2 da48: 82a3 strh r3, [r4, #20] da4a: 9a02 ldr r2, [sp, #8] da4c: 00d6 lsls r6, r2, #3 da4e: 055b lsls r3, r3, #21 da50: 0f5b lsrs r3, r3, #29 da52: 4333 orrs r3, r6 da54: 7563 strb r3, [r4, #21] return true; da56: 2301 movs r3, #1 da58: e719 b.n d88e <_lv_img_buf_transform_anti_alias+0x27a> da5a: 46c0 nop ; (mov r8, r8) da5c: 0000d0ed .word 0x0000d0ed da60: fffff81f .word 0xfffff81f da64: 0000d20d .word 0x0000d20d 0000da68 <_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) { da68: b5f0 push {r4, r5, r6, r7, lr} da6a: 46ce mov lr, r9 da6c: 4647 mov r7, r8 da6e: b580 push {r7, lr} da70: b083 sub sp, #12 da72: 4680 mov r8, r0 da74: 466b mov r3, sp da76: 80d9 strh r1, [r3, #6] if(entry_cnt == 0) { da78: 4b51 ldr r3, [pc, #324] ; (dbc0 <_lv_img_cache_open+0x158>) da7a: 8819 ldrh r1, [r3, #0] da7c: 2900 cmp r1, #0 da7e: d100 bne.n da82 <_lv_img_cache_open+0x1a> da80: e09b b.n dbba <_lv_img_cache_open+0x152> 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); da82: 4b50 ldr r3, [pc, #320] ; (dbc4 <_lv_img_cache_open+0x15c>) da84: 681f ldr r7, [r3, #0] da86: 003b movs r3, r7 da88: 3320 adds r3, #32 da8a: 3901 subs r1, #1 da8c: b28a uxth r2, r1 da8e: 00d1 lsls r1, r2, #3 da90: 1889 adds r1, r1, r2 da92: 0089 lsls r1, r1, #2 da94: 3144 adds r1, #68 ; 0x44 da96: 1879 adds r1, r7, r1 /*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) { da98: 484b ldr r0, [pc, #300] ; (dbc8 <_lv_img_cache_open+0x160>) da9a: e002 b.n daa2 <_lv_img_cache_open+0x3a> da9c: 3324 adds r3, #36 ; 0x24 for(i = 0; i < entry_cnt; i++) { da9e: 428b cmp r3, r1 daa0: d005 beq.n daae <_lv_img_cache_open+0x46> if(cache[i].life > INT32_MIN + LV_IMG_CACHE_AGING) { daa2: 681a ldr r2, [r3, #0] daa4: 4282 cmp r2, r0 daa6: dbf9 blt.n da9c <_lv_img_cache_open+0x34> cache[i].life -= LV_IMG_CACHE_AGING; daa8: 3a01 subs r2, #1 daaa: 601a str r2, [r3, #0] daac: e7f6 b.n da9c <_lv_img_cache_open+0x34> daae: 2500 movs r5, #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); dab0: 4e46 ldr r6, [pc, #280] ; (dbcc <_lv_img_cache_open+0x164>) for(i = 0; i < entry_cnt; i++) { dab2: 4b43 ldr r3, [pc, #268] ; (dbc0 <_lv_img_cache_open+0x158>) dab4: 4699 mov r9, r3 dab6: e007 b.n dac8 <_lv_img_cache_open+0x60> 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) { dab8: 2801 cmp r0, #1 daba: d02a beq.n db12 <_lv_img_cache_open+0xaa> for(i = 0; i < entry_cnt; i++) { dabc: 3501 adds r5, #1 dabe: b2ad uxth r5, r5 dac0: 464b mov r3, r9 dac2: 881b ldrh r3, [r3, #0] dac4: 42ab cmp r3, r5 dac6: d92f bls.n db28 <_lv_img_cache_open+0xc0> lv_img_src_t src_type = lv_img_src_get_type(cache[i].dec_dsc.src); dac8: 00ec lsls r4, r5, #3 daca: 1964 adds r4, r4, r5 dacc: 00a4 lsls r4, r4, #2 dace: 193c adds r4, r7, r4 dad0: 6860 ldr r0, [r4, #4] dad2: 47b0 blx r6 if(src_type == LV_IMG_SRC_VARIABLE) { dad4: 2800 cmp r0, #0 dad6: d1ef bne.n dab8 <_lv_img_cache_open+0x50> if(cache[i].dec_dsc.src == src && cache[i].dec_dsc.color.full == color.full) match = true; dad8: 6863 ldr r3, [r4, #4] dada: 4543 cmp r3, r8 dadc: d1ee bne.n dabc <_lv_img_cache_open+0x54> dade: 8920 ldrh r0, [r4, #8] dae0: 466b mov r3, sp dae2: 88db ldrh r3, [r3, #6] dae4: 1ac0 subs r0, r0, r3 dae6: 4242 negs r2, r0 dae8: 4142 adcs r2, r0 daea: b2d0 uxtb r0, r2 if(strcmp(cache[i].dec_dsc.src, src) == 0) match = true; } if(match) { daec: 2800 cmp r0, #0 daee: d0e5 beq.n dabc <_lv_img_cache_open+0x54> /* 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; daf0: 6a23 ldr r3, [r4, #32] daf2: 6962 ldr r2, [r4, #20] daf4: 4694 mov ip, r2 daf6: 4463 add r3, ip if(cached_src->life > LV_IMG_CACHE_LIFE_LIMIT) cached_src->life = LV_IMG_CACHE_LIFE_LIMIT; daf8: 22fa movs r2, #250 ; 0xfa dafa: 0092 lsls r2, r2, #2 dafc: 4293 cmp r3, r2 dafe: dd11 ble.n db24 <_lv_img_cache_open+0xbc> db00: 6222 str r2, [r4, #32] break; } } /*The image is not cached then cache it now*/ if(cached_src == NULL) { db02: 2c00 cmp r4, #0 db04: d010 beq.n db28 <_lv_img_cache_open+0xc0> if(cached_src->dec_dsc.time_to_open == 0) cached_src->dec_dsc.time_to_open = 1; } return cached_src; } db06: 0020 movs r0, r4 db08: b003 add sp, #12 db0a: bc0c pop {r2, r3} db0c: 4690 mov r8, r2 db0e: 4699 mov r9, r3 db10: bdf0 pop {r4, r5, r6, r7, pc} if(strcmp(cache[i].dec_dsc.src, src) == 0) match = true; db12: 4641 mov r1, r8 db14: 6860 ldr r0, [r4, #4] db16: 4b2e ldr r3, [pc, #184] ; (dbd0 <_lv_img_cache_open+0x168>) db18: 4798 blx r3 db1a: 0003 movs r3, r0 db1c: 4258 negs r0, r3 db1e: 4158 adcs r0, r3 db20: b2c0 uxtb r0, r0 db22: e7e3 b.n daec <_lv_img_cache_open+0x84> cached_src->life += cached_src->dec_dsc.time_to_open * LV_IMG_CACHE_LIFE_GAIN; db24: 6223 str r3, [r4, #32] db26: e7ec b.n db02 <_lv_img_cache_open+0x9a> for(i = 1; i < entry_cnt; i++) { db28: 4b25 ldr r3, [pc, #148] ; (dbc0 <_lv_img_cache_open+0x158>) db2a: 881a ldrh r2, [r3, #0] db2c: 2a01 cmp r2, #1 db2e: d913 bls.n db58 <_lv_img_cache_open+0xf0> db30: 003b movs r3, r7 db32: 3324 adds r3, #36 ; 0x24 db34: 3a02 subs r2, #2 db36: b291 uxth r1, r2 db38: 00ca lsls r2, r1, #3 db3a: 1852 adds r2, r2, r1 db3c: 0092 lsls r2, r2, #2 db3e: 3248 adds r2, #72 ; 0x48 db40: 18ba adds r2, r7, r2 db42: 003c movs r4, r7 db44: e002 b.n db4c <_lv_img_cache_open+0xe4> db46: 3324 adds r3, #36 ; 0x24 db48: 4293 cmp r3, r2 db4a: d006 beq.n db5a <_lv_img_cache_open+0xf2> if(cache[i].life < cached_src->life) { db4c: 6a19 ldr r1, [r3, #32] db4e: 6a20 ldr r0, [r4, #32] db50: 4281 cmp r1, r0 db52: daf8 bge.n db46 <_lv_img_cache_open+0xde> cached_src = &cache[i]; db54: 001c movs r4, r3 db56: e7f6 b.n db46 <_lv_img_cache_open+0xde> for(i = 1; i < entry_cnt; i++) { db58: 003c movs r4, r7 if(cached_src->dec_dsc.src) { db5a: 6863 ldr r3, [r4, #4] db5c: 2b00 cmp r3, #0 db5e: d002 beq.n db66 <_lv_img_cache_open+0xfe> lv_img_decoder_close(&cached_src->dec_dsc); db60: 0020 movs r0, r4 db62: 4b1c ldr r3, [pc, #112] ; (dbd4 <_lv_img_cache_open+0x16c>) db64: 4798 blx r3 t_start = lv_tick_get(); db66: 4b1c ldr r3, [pc, #112] ; (dbd8 <_lv_img_cache_open+0x170>) db68: 4798 blx r3 db6a: 0005 movs r5, r0 cached_src->dec_dsc.time_to_open = 0; db6c: 2300 movs r3, #0 db6e: 6163 str r3, [r4, #20] lv_res_t open_res = lv_img_decoder_open(&cached_src->dec_dsc, src, color); db70: 466b mov r3, sp db72: 88da ldrh r2, [r3, #6] db74: 4641 mov r1, r8 db76: 0020 movs r0, r4 db78: 4b18 ldr r3, [pc, #96] ; (dbdc <_lv_img_cache_open+0x174>) db7a: 4798 blx r3 if(open_res == LV_RES_INV) { db7c: 2800 cmp r0, #0 db7e: d00d beq.n db9c <_lv_img_cache_open+0x134> cached_src->life = 0; db80: 2300 movs r3, #0 db82: 6223 str r3, [r4, #32] if(cached_src->dec_dsc.time_to_open == 0) { db84: 6963 ldr r3, [r4, #20] db86: 2b00 cmp r3, #0 db88: d1bd bne.n db06 <_lv_img_cache_open+0x9e> cached_src->dec_dsc.time_to_open = lv_tick_elaps(t_start); db8a: 0028 movs r0, r5 db8c: 4b14 ldr r3, [pc, #80] ; (dbe0 <_lv_img_cache_open+0x178>) db8e: 4798 blx r3 db90: 6160 str r0, [r4, #20] if(cached_src->dec_dsc.time_to_open == 0) cached_src->dec_dsc.time_to_open = 1; db92: 2800 cmp r0, #0 db94: d1b7 bne.n db06 <_lv_img_cache_open+0x9e> db96: 2301 movs r3, #1 db98: 6163 str r3, [r4, #20] db9a: e7b4 b.n db06 <_lv_img_cache_open+0x9e> lv_img_decoder_close(&cached_src->dec_dsc); db9c: 0020 movs r0, r4 db9e: 4b0d ldr r3, [pc, #52] ; (dbd4 <_lv_img_cache_open+0x16c>) dba0: 4798 blx r3 _lv_memset_00(&cached_src->dec_dsc, sizeof(lv_img_decoder_dsc_t)); dba2: 2120 movs r1, #32 dba4: 0020 movs r0, r4 dba6: 4d0f ldr r5, [pc, #60] ; (dbe4 <_lv_img_cache_open+0x17c>) dba8: 47a8 blx r5 _lv_memset_00(cached_src, sizeof(lv_img_cache_entry_t)); dbaa: 2124 movs r1, #36 ; 0x24 dbac: 0020 movs r0, r4 dbae: 47a8 blx r5 cached_src->life = INT32_MIN; /*Make the empty entry very "weak" to force its use */ dbb0: 2380 movs r3, #128 ; 0x80 dbb2: 061b lsls r3, r3, #24 dbb4: 6223 str r3, [r4, #32] return NULL; dbb6: 2400 movs r4, #0 dbb8: e7a5 b.n db06 <_lv_img_cache_open+0x9e> return NULL; dbba: 2400 movs r4, #0 dbbc: e7a3 b.n db06 <_lv_img_cache_open+0x9e> dbbe: 46c0 nop ; (mov r8, r8) dbc0: 20002bb6 .word 0x20002bb6 dbc4: 20004d84 .word 0x20004d84 dbc8: 80000002 .word 0x80000002 dbcc: 00008161 .word 0x00008161 dbd0: 00017e5d .word 0x00017e5d dbd4: 0000e685 .word 0x0000e685 dbd8: 0000f78d .word 0x0000f78d dbdc: 0000e59d .word 0x0000e59d dbe0: 0000f7a9 .word 0x0000f7a9 dbe4: 0001104d .word 0x0001104d 0000dbe8 : * 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) { dbe8: b5f8 push {r3, r4, r5, r6, r7, lr} dbea: 46d6 mov lr, sl dbec: 4647 mov r7, r8 dbee: b580 push {r7, lr} dbf0: 0007 movs r7, r0 lv_img_cache_entry_t * cache = LV_GC_ROOT(_lv_img_cache_array); dbf2: 4b15 ldr r3, [pc, #84] ; (dc48 ) dbf4: 681b ldr r3, [r3, #0] dbf6: 4698 mov r8, r3 uint16_t i; for(i = 0; i < entry_cnt; i++) { dbf8: 4b14 ldr r3, [pc, #80] ; (dc4c ) dbfa: 881b ldrh r3, [r3, #0] dbfc: 2b00 cmp r3, #0 dbfe: d01e beq.n dc3e dc00: 2500 movs r5, #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)); dc02: 4b13 ldr r3, [pc, #76] ; (dc50 ) dc04: 469a mov sl, r3 for(i = 0; i < entry_cnt; i++) { dc06: 4e11 ldr r6, [pc, #68] ; (dc4c ) dc08: e00f b.n dc2a if(cache[i].dec_dsc.src != NULL) { dc0a: 2b00 cmp r3, #0 dc0c: d002 beq.n dc14 lv_img_decoder_close(&cache[i].dec_dsc); dc0e: 0020 movs r0, r4 dc10: 4b10 ldr r3, [pc, #64] ; (dc54 ) dc12: 4798 blx r3 _lv_memset_00(&cache[i].dec_dsc, sizeof(lv_img_decoder_dsc_t)); dc14: 2120 movs r1, #32 dc16: 0020 movs r0, r4 dc18: 47d0 blx sl _lv_memset_00(&cache[i], sizeof(lv_img_cache_entry_t)); dc1a: 2124 movs r1, #36 ; 0x24 dc1c: 0020 movs r0, r4 dc1e: 47d0 blx sl for(i = 0; i < entry_cnt; i++) { dc20: 3501 adds r5, #1 dc22: b2ad uxth r5, r5 dc24: 8833 ldrh r3, [r6, #0] dc26: 42ab cmp r3, r5 dc28: d909 bls.n dc3e if(cache[i].dec_dsc.src == src || src == NULL) { dc2a: 00ec lsls r4, r5, #3 dc2c: 1964 adds r4, r4, r5 dc2e: 00a4 lsls r4, r4, #2 dc30: 4444 add r4, r8 dc32: 6863 ldr r3, [r4, #4] dc34: 42bb cmp r3, r7 dc36: d0e8 beq.n dc0a dc38: 2f00 cmp r7, #0 dc3a: d1f1 bne.n dc20 dc3c: e7e5 b.n dc0a } } } dc3e: bc0c pop {r2, r3} dc40: 4690 mov r8, r2 dc42: 469a mov sl, r3 dc44: bdf8 pop {r3, r4, r5, r6, r7, pc} dc46: 46c0 nop ; (mov r8, r8) dc48: 20004d84 .word 0x20004d84 dc4c: 20002bb6 .word 0x20002bb6 dc50: 0001104d .word 0x0001104d dc54: 0000e685 .word 0x0000e685 0000dc58 : { dc58: b5f0 push {r4, r5, r6, r7, lr} dc5a: 46c6 mov lr, r8 dc5c: b500 push {lr} dc5e: 0004 movs r4, r0 if(LV_GC_ROOT(_lv_img_cache_array) != NULL) { dc60: 4b20 ldr r3, [pc, #128] ; (dce4 ) dc62: 681b ldr r3, [r3, #0] dc64: 2b00 cmp r3, #0 dc66: d006 beq.n dc76 lv_img_cache_invalidate_src(NULL); dc68: 2000 movs r0, #0 dc6a: 4b1f ldr r3, [pc, #124] ; (dce8 ) dc6c: 4798 blx r3 lv_mem_free(LV_GC_ROOT(_lv_img_cache_array)); dc6e: 4b1d ldr r3, [pc, #116] ; (dce4 ) dc70: 6818 ldr r0, [r3, #0] dc72: 4b1e ldr r3, [pc, #120] ; (dcec ) dc74: 4798 blx r3 LV_GC_ROOT(_lv_img_cache_array) = lv_mem_alloc(sizeof(lv_img_cache_entry_t) * new_entry_cnt); dc76: 00e0 lsls r0, r4, #3 dc78: 1900 adds r0, r0, r4 dc7a: 0080 lsls r0, r0, #2 dc7c: 4b1c ldr r3, [pc, #112] ; (dcf0 ) dc7e: 4798 blx r3 dc80: 4b18 ldr r3, [pc, #96] ; (dce4 ) dc82: 6018 str r0, [r3, #0] LV_ASSERT_MEM(LV_GC_ROOT(_lv_img_cache_array)); dc84: 4b1b ldr r3, [pc, #108] ; (dcf4 ) dc86: 4798 blx r3 dc88: 2800 cmp r0, #0 dc8a: d01f beq.n dccc if(LV_GC_ROOT(_lv_img_cache_array) == NULL) { dc8c: 4b15 ldr r3, [pc, #84] ; (dce4 ) dc8e: 681b ldr r3, [r3, #0] dc90: 2b00 cmp r3, #0 dc92: d022 beq.n dcda entry_cnt = new_entry_cnt; dc94: 4b18 ldr r3, [pc, #96] ; (dcf8 ) dc96: 801c strh r4, [r3, #0] for(i = 0; i < entry_cnt; i++) { dc98: 2c00 cmp r4, #0 dc9a: d014 beq.n dcc6 dc9c: 2400 movs r4, #0 _lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i].dec_dsc, sizeof(lv_img_decoder_dsc_t)); dc9e: 4f11 ldr r7, [pc, #68] ; (dce4 ) dca0: 4e16 ldr r6, [pc, #88] ; (dcfc ) for(i = 0; i < entry_cnt; i++) { dca2: 4698 mov r8, r3 _lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i].dec_dsc, sizeof(lv_img_decoder_dsc_t)); dca4: 00e5 lsls r5, r4, #3 dca6: 192d adds r5, r5, r4 dca8: 00ad lsls r5, r5, #2 dcaa: 683b ldr r3, [r7, #0] dcac: 1958 adds r0, r3, r5 dcae: 2120 movs r1, #32 dcb0: 47b0 blx r6 _lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i], sizeof(lv_img_cache_entry_t)); dcb2: 683b ldr r3, [r7, #0] dcb4: 1958 adds r0, r3, r5 dcb6: 2124 movs r1, #36 ; 0x24 dcb8: 47b0 blx r6 for(i = 0; i < entry_cnt; i++) { dcba: 3401 adds r4, #1 dcbc: b2a4 uxth r4, r4 dcbe: 4643 mov r3, r8 dcc0: 881b ldrh r3, [r3, #0] dcc2: 42a3 cmp r3, r4 dcc4: d8ee bhi.n dca4 } dcc6: bc04 pop {r2} dcc8: 4690 mov r8, r2 dcca: bdf0 pop {r4, r5, r6, r7, pc} LV_ASSERT_MEM(LV_GC_ROOT(_lv_img_cache_array)); dccc: 4b05 ldr r3, [pc, #20] ; (dce4 ) dcce: 681a ldr r2, [r3, #0] dcd0: 2300 movs r3, #0 dcd2: 480b ldr r0, [pc, #44] ; (dd00 ) dcd4: 490b ldr r1, [pc, #44] ; (dd04 ) dcd6: 4788 blx r1 dcd8: e7fe b.n dcd8 entry_cnt = 0; dcda: 2200 movs r2, #0 dcdc: 4b06 ldr r3, [pc, #24] ; (dcf8 ) dcde: 801a strh r2, [r3, #0] return; dce0: e7f1 b.n dcc6 dce2: 46c0 nop ; (mov r8, r8) dce4: 20004d84 .word 0x20004d84 dce8: 0000dbe9 .word 0x0000dbe9 dcec: 00010b39 .word 0x00010b39 dcf0: 00010a71 .word 0x00010a71 dcf4: 0000147d .word 0x0000147d dcf8: 20002bb6 .word 0x20002bb6 dcfc: 0001104d .word 0x0001104d dd00: 00018724 .word 0x00018724 dd04: 00001485 .word 0x00001485 0000dd08 : * @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) { dd08: b530 push {r4, r5, lr} dd0a: b085 sub sp, #20 dd0c: 000c movs r4, r1 dd0e: 0015 movs r5, r2 (void)decoder; /*Unused*/ lv_img_src_t src_type = lv_img_src_get_type(src); dd10: 0008 movs r0, r1 dd12: 4b30 ldr r3, [pc, #192] ; (ddd4 ) dd14: 4798 blx r3 dd16: 1e03 subs r3, r0, #0 if(src_type == LV_IMG_SRC_VARIABLE) { dd18: d122 bne.n dd60 lv_img_cf_t cf = ((lv_img_dsc_t *)src)->header.cf; dd1a: 7823 ldrb r3, [r4, #0] dd1c: 06db lsls r3, r3, #27 dd1e: 0edb lsrs r3, r3, #27 if(cf < CF_BUILT_IN_FIRST || cf > CF_BUILT_IN_LAST) return LV_RES_INV; dd20: 3b04 subs r3, #4 dd22: b2db uxtb r3, r3 dd24: 2000 movs r0, #0 dd26: 2b0a cmp r3, #10 dd28: d81f bhi.n dd6a header->w = ((lv_img_dsc_t *)src)->header.w; dd2a: 6823 ldr r3, [r4, #0] dd2c: 02db lsls r3, r3, #11 dd2e: 0d5b lsrs r3, r3, #21 dd30: 029b lsls r3, r3, #10 dd32: 4a29 ldr r2, [pc, #164] ; (ddd8 ) dd34: 6829 ldr r1, [r5, #0] dd36: 400a ands r2, r1 dd38: 4313 orrs r3, r2 dd3a: 602b str r3, [r5, #0] header->h = ((lv_img_dsc_t *)src)->header.h; dd3c: 8863 ldrh r3, [r4, #2] dd3e: 095b lsrs r3, r3, #5 dd40: 015a lsls r2, r3, #5 dd42: 8869 ldrh r1, [r5, #2] dd44: 231f movs r3, #31 dd46: 400b ands r3, r1 dd48: 4313 orrs r3, r2 dd4a: 806b strh r3, [r5, #2] header->cf = ((lv_img_dsc_t *)src)->header.cf; dd4c: 7823 ldrb r3, [r4, #0] dd4e: 06db lsls r3, r3, #27 dd50: 0eda lsrs r2, r3, #27 dd52: 782b ldrb r3, [r5, #0] dd54: 211f movs r1, #31 dd56: 438b bics r3, r1 dd58: 4313 orrs r3, r2 dd5a: 702b strb r3, [r5, #0] } else { LV_LOG_WARN("Image get info found unknown src type"); return LV_RES_INV; } return LV_RES_OK; dd5c: 3001 adds r0, #1 dd5e: e004 b.n dd6a else if(src_type == LV_IMG_SRC_FILE) { dd60: 2801 cmp r0, #1 dd62: d004 beq.n dd6e return LV_RES_INV; dd64: 2000 movs r0, #0 else if(src_type == LV_IMG_SRC_SYMBOL) { dd66: 2b02 cmp r3, #2 dd68: d023 beq.n ddb2 } dd6a: b005 add sp, #20 dd6c: bd30 pop {r4, r5, pc} res = lv_fs_open(&file, src, LV_FS_MODE_RD); dd6e: 2202 movs r2, #2 dd70: 0021 movs r1, r4 dd72: a802 add r0, sp, #8 dd74: 4b19 ldr r3, [pc, #100] ; (dddc ) dd76: 4798 blx r3 if(res == LV_FS_RES_OK) { dd78: 2800 cmp r0, #0 dd7a: d00a beq.n dd92 if(header->cf < CF_BUILT_IN_FIRST || header->cf > CF_BUILT_IN_LAST) return LV_RES_INV; dd7c: 782b ldrb r3, [r5, #0] dd7e: 06db lsls r3, r3, #27 dd80: 0edb lsrs r3, r3, #27 dd82: 331c adds r3, #28 dd84: 221f movs r2, #31 dd86: 4013 ands r3, r2 return LV_RES_OK; dd88: 2001 movs r0, #1 if(header->cf < CF_BUILT_IN_FIRST || header->cf > CF_BUILT_IN_LAST) return LV_RES_INV; dd8a: 2b0a cmp r3, #10 dd8c: d9ed bls.n dd6a return LV_RES_INV; dd8e: 2000 movs r0, #0 dd90: e7eb b.n dd6a res = lv_fs_read(&file, header, sizeof(lv_img_header_t), &rn); dd92: ab01 add r3, sp, #4 dd94: 2204 movs r2, #4 dd96: 0029 movs r1, r5 dd98: a802 add r0, sp, #8 dd9a: 4c11 ldr r4, [pc, #68] ; (dde0 ) dd9c: 47a0 blx r4 dd9e: 0004 movs r4, r0 lv_fs_close(&file); dda0: a802 add r0, sp, #8 dda2: 4b10 ldr r3, [pc, #64] ; (dde4 ) dda4: 4798 blx r3 if(res != LV_FS_RES_OK || rn != sizeof(lv_img_header_t)) { dda6: 2c00 cmp r4, #0 dda8: d1f1 bne.n dd8e ddaa: 9b01 ldr r3, [sp, #4] ddac: 2b04 cmp r3, #4 ddae: d1ee bne.n dd8e ddb0: e7e4 b.n dd7c header->w = 1; ddb2: 4a09 ldr r2, [pc, #36] ; (ddd8 ) ddb4: 682b ldr r3, [r5, #0] ddb6: 401a ands r2, r3 ddb8: 2380 movs r3, #128 ; 0x80 ddba: 00db lsls r3, r3, #3 ddbc: 4313 orrs r3, r2 ddbe: 602b str r3, [r5, #0] header->h = 1; ddc0: 2220 movs r2, #32 ddc2: 806a strh r2, [r5, #2] header->cf = LV_IMG_CF_ALPHA_1BIT; ddc4: 32c0 adds r2, #192 ; 0xc0 ddc6: 4013 ands r3, r2 ddc8: 220b movs r2, #11 ddca: 4313 orrs r3, r2 ddcc: 702b strb r3, [r5, #0] return LV_RES_OK; ddce: 3001 adds r0, #1 ddd0: e7cb b.n dd6a ddd2: 46c0 nop ; (mov r8, r8) ddd4: 00008161 .word 0x00008161 ddd8: ffe003ff .word 0xffe003ff dddc: 00010429 .word 0x00010429 dde0: 0001038d .word 0x0001038d dde4: 0001035d .word 0x0001035d 0000dde8 : * 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) { dde8: b570 push {r4, r5, r6, lr} ddea: 000d movs r5, r1 (void)decoder; /*Unused*/ lv_img_decoder_built_in_data_t * user_data = dsc->user_data; ddec: 69cc ldr r4, [r1, #28] if(user_data) { ddee: 2c00 cmp r4, #0 ddf0: d016 beq.n de20 #if LV_USE_FILESYSTEM if(user_data->f) { ddf2: 6820 ldr r0, [r4, #0] ddf4: 2800 cmp r0, #0 ddf6: d004 beq.n de02 lv_fs_close(user_data->f); ddf8: 4b0a ldr r3, [pc, #40] ; (de24 ) ddfa: 4798 blx r3 lv_mem_free(user_data->f); ddfc: 6820 ldr r0, [r4, #0] ddfe: 4b0a ldr r3, [pc, #40] ; (de28 ) de00: 4798 blx r3 } #endif if(user_data->palette) lv_mem_free(user_data->palette); de02: 6860 ldr r0, [r4, #4] de04: 2800 cmp r0, #0 de06: d001 beq.n de0c de08: 4b07 ldr r3, [pc, #28] ; (de28 ) de0a: 4798 blx r3 if(user_data->opa) lv_mem_free(user_data->opa); de0c: 68a0 ldr r0, [r4, #8] de0e: 2800 cmp r0, #0 de10: d001 beq.n de16 de12: 4b05 ldr r3, [pc, #20] ; (de28 ) de14: 4798 blx r3 lv_mem_free(user_data); de16: 0020 movs r0, r4 de18: 4b03 ldr r3, [pc, #12] ; (de28 ) de1a: 4798 blx r3 dsc->user_data = NULL; de1c: 2300 movs r3, #0 de1e: 61eb str r3, [r5, #28] } } de20: bd70 pop {r4, r5, r6, pc} de22: 46c0 nop ; (mov r8, r8) de24: 0001035d .word 0x0001035d de28: 00010b39 .word 0x00010b39 0000de2c : { de2c: b5f0 push {r4, r5, r6, r7, lr} de2e: 46de mov lr, fp de30: 4657 mov r7, sl de32: 464e mov r6, r9 de34: 4645 mov r5, r8 de36: b5e0 push {r5, r6, r7, lr} de38: b085 sub sp, #20 de3a: 0006 movs r6, r0 de3c: 000c movs r4, r1 if(dsc->src_type == LV_IMG_SRC_FILE) { de3e: 7a8b ldrb r3, [r1, #10] de40: 2b01 cmp r3, #1 de42: d018 beq.n de76 else if(dsc->src_type == LV_IMG_SRC_VARIABLE) { de44: 2b00 cmp r3, #0 de46: d000 beq.n de4a de48: e14a b.n e0e0 if(((lv_img_dsc_t *)dsc->src)->data == NULL) { de4a: 684b ldr r3, [r1, #4] de4c: 689b ldr r3, [r3, #8] de4e: 2b00 cmp r3, #0 de50: d100 bne.n de54 de52: e143 b.n e0dc lv_img_cf_t cf = dsc->header.cf; de54: 7b08 ldrb r0, [r1, #12] de56: 06c0 lsls r0, r0, #27 de58: 0ec0 lsrs r0, r0, #27 if(cf == LV_IMG_CF_TRUE_COLOR || cf == LV_IMG_CF_TRUE_COLOR_ALPHA || cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED) { de5a: 1f03 subs r3, r0, #4 de5c: 2b02 cmp r3, #2 de5e: d85a bhi.n df16 dsc->img_data = ((lv_img_dsc_t *)dsc->src)->data; de60: 6863 ldr r3, [r4, #4] de62: 689b ldr r3, [r3, #8] de64: 6123 str r3, [r4, #16] return LV_RES_OK; de66: 2001 movs r0, #1 } de68: b005 add sp, #20 de6a: bc3c pop {r2, r3, r4, r5} de6c: 4690 mov r8, r2 de6e: 4699 mov r9, r3 de70: 46a2 mov sl, r4 de72: 46ab mov fp, r5 de74: bdf0 pop {r4, r5, r6, r7, pc} if(strcmp(lv_fs_get_ext(dsc->src), "bin")) return LV_RES_INV; de76: 6848 ldr r0, [r1, #4] de78: 4b9f ldr r3, [pc, #636] ; (e0f8 ) de7a: 4798 blx r3 de7c: 499f ldr r1, [pc, #636] ; (e0fc ) de7e: 4ba0 ldr r3, [pc, #640] ; (e100 ) de80: 4798 blx r3 de82: 2800 cmp r0, #0 de84: d11a bne.n debc lv_fs_res_t res = lv_fs_open(&f, dsc->src, LV_FS_MODE_RD); de86: 2202 movs r2, #2 de88: 6861 ldr r1, [r4, #4] de8a: a802 add r0, sp, #8 de8c: 4b9d ldr r3, [pc, #628] ; (e104 ) de8e: 4798 blx r3 if(res != LV_FS_RES_OK) { de90: 2800 cmp r0, #0 de92: d113 bne.n debc if(dsc->user_data == NULL) { de94: 69e3 ldr r3, [r4, #28] de96: 2b00 cmp r3, #0 de98: d012 beq.n dec0 lv_img_decoder_built_in_data_t * user_data = dsc->user_data; de9a: 69e5 ldr r5, [r4, #28] user_data->f = lv_mem_alloc(sizeof(f)); de9c: 2008 movs r0, #8 de9e: 4b9a ldr r3, [pc, #616] ; (e108 ) dea0: 4798 blx r3 dea2: 6028 str r0, [r5, #0] LV_ASSERT_MEM(user_data->f); dea4: 4b99 ldr r3, [pc, #612] ; (e10c ) dea6: 4798 blx r3 dea8: 2800 cmp r0, #0 deaa: d01e beq.n deea if(user_data->f == NULL) { deac: 682a ldr r2, [r5, #0] deae: 2300 movs r3, #0 deb0: 2a00 cmp r2, #0 deb2: d120 bne.n def6 lv_img_decoder_built_in_close(decoder, dsc); deb4: 0021 movs r1, r4 deb6: 0030 movs r0, r6 deb8: 4b95 ldr r3, [pc, #596] ; (e110 ) deba: 4798 blx r3 if(strcmp(lv_fs_get_ext(dsc->src), "bin")) return LV_RES_INV; debc: 2000 movs r0, #0 debe: e7d3 b.n de68 dsc->user_data = lv_mem_alloc(sizeof(lv_img_decoder_built_in_data_t)); dec0: 300c adds r0, #12 dec2: 4b91 ldr r3, [pc, #580] ; (e108 ) dec4: 4798 blx r3 dec6: 61e0 str r0, [r4, #28] LV_ASSERT_MEM(dsc->user_data); dec8: 4b90 ldr r3, [pc, #576] ; (e10c ) deca: 4798 blx r3 decc: 2800 cmp r0, #0 dece: d105 bne.n dedc ded0: 69e2 ldr r2, [r4, #28] ded2: 2300 movs r3, #0 ded4: 488f ldr r0, [pc, #572] ; (e114 ) ded6: 4990 ldr r1, [pc, #576] ; (e118 ) ded8: 4788 blx r1 deda: e7fe b.n deda if(dsc->user_data == NULL) { dedc: 69e0 ldr r0, [r4, #28] dede: 2800 cmp r0, #0 dee0: d0ec beq.n debc _lv_memset_00(dsc->user_data, sizeof(lv_img_decoder_built_in_data_t)); dee2: 210c movs r1, #12 dee4: 4b8d ldr r3, [pc, #564] ; (e11c ) dee6: 4798 blx r3 dee8: e7d7 b.n de9a LV_ASSERT_MEM(user_data->f); deea: 682a ldr r2, [r5, #0] deec: 2300 movs r3, #0 deee: 4889 ldr r0, [pc, #548] ; (e114 ) def0: 4989 ldr r1, [pc, #548] ; (e118 ) def2: 4788 blx r1 def4: e7fe b.n def4 def6: a902 add r1, sp, #8 def8: 5c59 ldrb r1, [r3, r1] defa: 54d1 strb r1, [r2, r3] defc: 3301 adds r3, #1 while(len) { defe: 2b08 cmp r3, #8 df00: d1f9 bne.n def6 lv_img_cf_t cf = dsc->header.cf; df02: 7b20 ldrb r0, [r4, #12] df04: 06c0 lsls r0, r0, #27 df06: 0ec0 lsrs r0, r0, #27 if(cf == LV_IMG_CF_TRUE_COLOR || cf == LV_IMG_CF_TRUE_COLOR_ALPHA || cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED) { df08: 1f03 subs r3, r0, #4 df0a: 2b02 cmp r3, #2 df0c: d803 bhi.n df16 if(dsc->src_type == LV_IMG_SRC_VARIABLE) { df0e: 7aa3 ldrb r3, [r4, #10] df10: 2b00 cmp r3, #0 df12: d0a5 beq.n de60 df14: e0eb b.n e0ee else if(cf == LV_IMG_CF_INDEXED_1BIT || cf == LV_IMG_CF_INDEXED_2BIT || cf == LV_IMG_CF_INDEXED_4BIT || df16: 1fc3 subs r3, r0, #7 df18: 2b03 cmp r3, #3 df1a: d907 bls.n df2c else if(cf == LV_IMG_CF_ALPHA_1BIT || cf == LV_IMG_CF_ALPHA_2BIT || cf == LV_IMG_CF_ALPHA_4BIT || df1c: 380b subs r0, #11 df1e: 2803 cmp r0, #3 df20: d900 bls.n df24 df22: e0d5 b.n e0d0 dsc->img_data = NULL; df24: 2300 movs r3, #0 df26: 6123 str r3, [r4, #16] return LV_RES_OK; /*Nothing to process*/ df28: 2001 movs r0, #1 df2a: e79d b.n de68 uint8_t px_size = lv_img_cf_get_px_size(cf); df2c: 4b7c ldr r3, [pc, #496] ; (e120 ) df2e: 4798 blx r3 df30: 0007 movs r7, r0 if(dsc->user_data == NULL) { df32: 69e3 ldr r3, [r4, #28] df34: 2b00 cmp r3, #0 df36: d00f beq.n df58 lv_img_decoder_built_in_data_t * user_data = dsc->user_data; df38: 69e5 ldr r5, [r4, #28] user_data->palette = lv_mem_alloc(palette_size * sizeof(lv_color_t)); df3a: 2002 movs r0, #2 df3c: 40b8 lsls r0, r7 df3e: 4b72 ldr r3, [pc, #456] ; (e108 ) df40: 4798 blx r3 df42: 6068 str r0, [r5, #4] LV_ASSERT_MEM(user_data->palette); df44: 4b71 ldr r3, [pc, #452] ; (e10c ) df46: 4798 blx r3 df48: 2800 cmp r0, #0 df4a: d120 bne.n df8e df4c: 686a ldr r2, [r5, #4] df4e: 2300 movs r3, #0 df50: 4870 ldr r0, [pc, #448] ; (e114 ) df52: 4971 ldr r1, [pc, #452] ; (e118 ) df54: 4788 blx r1 df56: e7fe b.n df56 dsc->user_data = lv_mem_alloc(sizeof(lv_img_decoder_built_in_data_t)); df58: 200c movs r0, #12 df5a: 4b6b ldr r3, [pc, #428] ; (e108 ) df5c: 4798 blx r3 df5e: 61e0 str r0, [r4, #28] LV_ASSERT_MEM(dsc->user_data); df60: 4b6a ldr r3, [pc, #424] ; (e10c ) df62: 4798 blx r3 df64: 2800 cmp r0, #0 df66: d105 bne.n df74 df68: 69e2 ldr r2, [r4, #28] df6a: 2300 movs r3, #0 df6c: 4869 ldr r0, [pc, #420] ; (e114 ) df6e: 496a ldr r1, [pc, #424] ; (e118 ) df70: 4788 blx r1 df72: e7fe b.n df72 if(dsc->user_data == NULL) { df74: 69e0 ldr r0, [r4, #28] df76: 2800 cmp r0, #0 df78: d105 bne.n df86 lv_img_decoder_built_in_close(decoder, dsc); df7a: 0021 movs r1, r4 df7c: 0030 movs r0, r6 df7e: 4b64 ldr r3, [pc, #400] ; (e110 ) df80: 4798 blx r3 return LV_RES_INV; df82: 2000 movs r0, #0 df84: e770 b.n de68 _lv_memset_00(dsc->user_data, sizeof(lv_img_decoder_built_in_data_t)); df86: 210c movs r1, #12 df88: 4b64 ldr r3, [pc, #400] ; (e11c ) df8a: 4798 blx r3 df8c: e7d4 b.n df38 uint32_t palette_size = 1 << px_size; df8e: 2301 movs r3, #1 df90: 40bb lsls r3, r7 df92: 001f movs r7, r3 user_data->opa = lv_mem_alloc(palette_size * sizeof(lv_opa_t)); df94: 0018 movs r0, r3 df96: 4b5c ldr r3, [pc, #368] ; (e108 ) df98: 4798 blx r3 df9a: 60a8 str r0, [r5, #8] LV_ASSERT_MEM(user_data->opa); df9c: 4b5b ldr r3, [pc, #364] ; (e10c ) df9e: 4798 blx r3 dfa0: 2800 cmp r0, #0 dfa2: d047 beq.n e034 if(user_data->palette == NULL || user_data->opa == NULL) { dfa4: 686b ldr r3, [r5, #4] dfa6: 2b00 cmp r3, #0 dfa8: d04a beq.n e040 dfaa: 68ab ldr r3, [r5, #8] dfac: 2b00 cmp r3, #0 dfae: d047 beq.n e040 if(dsc->src_type == LV_IMG_SRC_FILE) { dfb0: 7aa3 ldrb r3, [r4, #10] dfb2: 2b01 cmp r3, #1 dfb4: d04a beq.n e04c lv_color32_t * palette_p = (lv_color32_t *)((lv_img_dsc_t *)dsc->src)->data; dfb6: 6863 ldr r3, [r4, #4] dfb8: 6898 ldr r0, [r3, #8] for(i = 0; i < palette_size; i++) { dfba: 2f00 cmp r7, #0 dfbc: d100 bne.n dfc0 dfbe: e083 b.n e0c8 dfc0: 2300 movs r3, #0 dfc2: 4698 mov r8, r3 #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); dfc4: 333f adds r3, #63 ; 0x3f dfc6: 469b mov fp, r3 dfc8: 3b20 subs r3, #32 dfca: 4699 mov r9, r3 user_data->palette[i] = lv_color_make(palette_p[i].ch.red, palette_p[i].ch.green, palette_p[i].ch.blue); dfcc: 4b55 ldr r3, [pc, #340] ; (e124 ) dfce: 469a mov sl, r3 dfd0: 4641 mov r1, r8 dfd2: 9401 str r4, [sp, #4] dfd4: 004a lsls r2, r1, #1 dfd6: 686b ldr r3, [r5, #4] dfd8: 469c mov ip, r3 dfda: 4462 add r2, ip dfdc: 7843 ldrb r3, [r0, #1] dfde: 089c lsrs r4, r3, #2 dfe0: 9400 str r4, [sp, #0] dfe2: 7886 ldrb r6, [r0, #2] dfe4: 08f6 lsrs r6, r6, #3 dfe6: 464c mov r4, r9 dfe8: 4026 ands r6, r4 dfea: 7804 ldrb r4, [r0, #0] dfec: 08e4 lsrs r4, r4, #3 dfee: 46a4 mov ip, r4 dff0: 7814 ldrb r4, [r2, #0] dff2: 464b mov r3, r9 dff4: 439c bics r4, r3 dff6: 46a0 mov r8, r4 dff8: 4664 mov r4, ip dffa: 4643 mov r3, r8 dffc: 431c orrs r4, r3 dffe: 7014 strb r4, [r2, #0] e000: 465b mov r3, fp e002: 9c00 ldr r4, [sp, #0] e004: 401c ands r4, r3 e006: 0163 lsls r3, r4, #5 e008: 469c mov ip, r3 e00a: 8813 ldrh r3, [r2, #0] e00c: 4654 mov r4, sl e00e: 4023 ands r3, r4 e010: 4664 mov r4, ip e012: 4323 orrs r3, r4 e014: 8013 strh r3, [r2, #0] e016: 00f6 lsls r6, r6, #3 e018: 0a1b lsrs r3, r3, #8 e01a: 2407 movs r4, #7 e01c: 4023 ands r3, r4 e01e: 4333 orrs r3, r6 e020: 7053 strb r3, [r2, #1] user_data->opa[i] = palette_p[i].ch.alpha; e022: 78c3 ldrb r3, [r0, #3] e024: 68aa ldr r2, [r5, #8] e026: 5453 strb r3, [r2, r1] for(i = 0; i < palette_size; i++) { e028: 3101 adds r1, #1 e02a: 3004 adds r0, #4 e02c: 428f cmp r7, r1 e02e: d1d1 bne.n dfd4 e030: 9c01 ldr r4, [sp, #4] e032: e049 b.n e0c8 LV_ASSERT_MEM(user_data->opa); e034: 68aa ldr r2, [r5, #8] e036: 2300 movs r3, #0 e038: 4836 ldr r0, [pc, #216] ; (e114 ) e03a: 4937 ldr r1, [pc, #220] ; (e118 ) e03c: 4788 blx r1 e03e: e7fe b.n e03e lv_img_decoder_built_in_close(decoder, dsc); e040: 0021 movs r1, r4 e042: 0030 movs r0, r6 e044: 4b32 ldr r3, [pc, #200] ; (e110 ) e046: 4798 blx r3 return LV_RES_INV; e048: 2000 movs r0, #0 e04a: e70d b.n de68 lv_fs_seek(user_data->f, 4); /*Skip the header*/ e04c: 2104 movs r1, #4 e04e: 6828 ldr r0, [r5, #0] e050: 4b35 ldr r3, [pc, #212] ; (e128 ) e052: 4798 blx r3 for(i = 0; i < palette_size; i++) { e054: 2f00 cmp r7, #0 e056: d037 beq.n e0c8 e058: 2600 movs r6, #0 lv_fs_read(user_data->f, &cur_color, sizeof(lv_color32_t), NULL); e05a: 4b34 ldr r3, [pc, #208] ; (e12c ) e05c: 469a mov sl, r3 e05e: 233f movs r3, #63 ; 0x3f e060: 4699 mov r9, r3 e062: 3b20 subs r3, #32 e064: 4698 mov r8, r3 e066: 2300 movs r3, #0 e068: 2204 movs r2, #4 e06a: a902 add r1, sp, #8 e06c: 6828 ldr r0, [r5, #0] e06e: 47d0 blx sl user_data->palette[i] = lv_color_make(cur_color.ch.red, cur_color.ch.green, cur_color.ch.blue); e070: 0072 lsls r2, r6, #1 e072: 686b ldr r3, [r5, #4] e074: 469c mov ip, r3 e076: 4462 add r2, ip e078: ab02 add r3, sp, #8 e07a: 785b ldrb r3, [r3, #1] e07c: 0899 lsrs r1, r3, #2 e07e: 9100 str r1, [sp, #0] e080: a902 add r1, sp, #8 e082: 7889 ldrb r1, [r1, #2] e084: 08c9 lsrs r1, r1, #3 e086: 4640 mov r0, r8 e088: 4001 ands r1, r0 e08a: 468b mov fp, r1 e08c: a902 add r1, sp, #8 e08e: 7808 ldrb r0, [r1, #0] e090: 08c0 lsrs r0, r0, #3 e092: 7811 ldrb r1, [r2, #0] e094: 4643 mov r3, r8 e096: 4399 bics r1, r3 e098: 4308 orrs r0, r1 e09a: 7010 strb r0, [r2, #0] e09c: 464b mov r3, r9 e09e: 9900 ldr r1, [sp, #0] e0a0: 4019 ands r1, r3 e0a2: 0148 lsls r0, r1, #5 e0a4: 8813 ldrh r3, [r2, #0] e0a6: 491f ldr r1, [pc, #124] ; (e124 ) e0a8: 400b ands r3, r1 e0aa: 4303 orrs r3, r0 e0ac: 8013 strh r3, [r2, #0] e0ae: 4659 mov r1, fp e0b0: 00c9 lsls r1, r1, #3 e0b2: 055b lsls r3, r3, #21 e0b4: 0f5b lsrs r3, r3, #29 e0b6: 430b orrs r3, r1 e0b8: 7053 strb r3, [r2, #1] user_data->opa[i] = cur_color.ch.alpha; e0ba: ab02 add r3, sp, #8 e0bc: 78db ldrb r3, [r3, #3] e0be: 68aa ldr r2, [r5, #8] e0c0: 5593 strb r3, [r2, r6] for(i = 0; i < palette_size; i++) { e0c2: 3601 adds r6, #1 e0c4: 42b7 cmp r7, r6 e0c6: d1ce bne.n e066 dsc->img_data = NULL; e0c8: 2300 movs r3, #0 e0ca: 6123 str r3, [r4, #16] return LV_RES_OK; e0cc: 2001 movs r0, #1 e0ce: e6cb b.n de68 lv_img_decoder_built_in_close(decoder, dsc); e0d0: 0021 movs r1, r4 e0d2: 0030 movs r0, r6 e0d4: 4b0e ldr r3, [pc, #56] ; (e110 ) e0d6: 4798 blx r3 return LV_RES_INV; e0d8: 2000 movs r0, #0 e0da: e6c5 b.n de68 return LV_RES_INV; e0dc: 2000 movs r0, #0 e0de: e6c3 b.n de68 lv_img_cf_t cf = dsc->header.cf; e0e0: 7b08 ldrb r0, [r1, #12] e0e2: 06c0 lsls r0, r0, #27 e0e4: 0ec0 lsrs r0, r0, #27 if(cf == LV_IMG_CF_TRUE_COLOR || cf == LV_IMG_CF_TRUE_COLOR_ALPHA || cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED) { e0e6: 1f03 subs r3, r0, #4 e0e8: 2b02 cmp r3, #2 e0ea: d900 bls.n e0ee e0ec: e713 b.n df16 dsc->img_data = NULL; e0ee: 2300 movs r3, #0 e0f0: 6123 str r3, [r4, #16] return LV_RES_OK; e0f2: 2001 movs r0, #1 e0f4: e6b8 b.n de68 e0f6: 46c0 nop ; (mov r8, r8) e0f8: 000104f1 .word 0x000104f1 e0fc: 0001895c .word 0x0001895c e100: 00017e5d .word 0x00017e5d e104: 00010429 .word 0x00010429 e108: 00010a71 .word 0x00010a71 e10c: 0000147d .word 0x0000147d e110: 0000dde9 .word 0x0000dde9 e114: 00018724 .word 0x00018724 e118: 00001485 .word 0x00001485 e11c: 0001104d .word 0x0001104d e120: 00007ee5 .word 0x00007ee5 e124: fffff81f .word 0xfffff81f e128: 000103cf .word 0x000103cf e12c: 0001038d .word 0x0001038d 0000e130 : { e130: b5f0 push {r4, r5, r6, r7, lr} e132: 46de mov lr, fp e134: 4657 mov r7, sl e136: 464e mov r6, r9 e138: 4645 mov r5, r8 e13a: b5e0 push {r5, r6, r7, lr} e13c: b08b sub sp, #44 ; 0x2c e13e: 000d movs r5, r1 e140: 0017 movs r7, r2 e142: 9301 str r3, [sp, #4] e144: ab14 add r3, sp, #80 ; 0x50 e146: 2600 movs r6, #0 e148: 5f9e ldrsh r6, [r3, r6] if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA || e14a: 7b0a ldrb r2, [r1, #12] e14c: 231f movs r3, #31 e14e: 4013 ands r3, r2 e150: 1f1a subs r2, r3, #4 e152: 2a02 cmp r2, #2 e154: d836 bhi.n e1c4 if(dsc->src_type == LV_IMG_SRC_FILE) { e156: 7a8b ldrb r3, [r1, #10] lv_res_t res = LV_RES_INV; e158: 2000 movs r0, #0 if(dsc->src_type == LV_IMG_SRC_FILE) { e15a: 2b01 cmp r3, #1 e15c: d006 beq.n e16c } e15e: b00b add sp, #44 ; 0x2c e160: bc3c pop {r2, r3, r4, r5} e162: 4690 mov r8, r2 e164: 4699 mov r9, r3 e166: 46a2 mov sl, r4 e168: 46ab mov fp, r5 e16a: bdf0 pop {r4, r5, r6, r7, 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; e16c: 69cb ldr r3, [r1, #28] e16e: 4699 mov r9, r3 lv_fs_res_t res; uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf); e170: 7b08 ldrb r0, [r1, #12] e172: 06c0 lsls r0, r0, #27 e174: 0ec0 lsrs r0, r0, #27 e176: 4bd5 ldr r3, [pc, #852] ; (e4cc ) e178: 4798 blx r3 e17a: 4680 mov r8, r0 uint32_t pos = ((y * dsc->header.w + x) * px_size) >> 3; e17c: 68e9 ldr r1, [r5, #12] e17e: 02c9 lsls r1, r1, #11 e180: 0d49 lsrs r1, r1, #21 e182: 9b01 ldr r3, [sp, #4] e184: 434b muls r3, r1 e186: 19d9 adds r1, r3, r7 e188: 4341 muls r1, r0 e18a: 10c9 asrs r1, r1, #3 pos += 4; /*Skip the header*/ e18c: 3104 adds r1, #4 res = lv_fs_seek(user_data->f, pos); e18e: 464b mov r3, r9 e190: 6818 ldr r0, [r3, #0] e192: 4bcf ldr r3, [pc, #828] ; (e4d0 ) e194: 4798 blx r3 e196: 0003 movs r3, r0 if(res != LV_FS_RES_OK) { LV_LOG_WARN("Built-in image decoder seek failed"); return LV_RES_INV; e198: 2000 movs r0, #0 if(res != LV_FS_RES_OK) { e19a: 2b00 cmp r3, #0 e19c: d1df bne.n e15e } uint32_t btr = len * (px_size >> 3); e19e: 4643 mov r3, r8 e1a0: 08d8 lsrs r0, r3, #3 e1a2: b2c0 uxtb r0, r0 e1a4: 4346 muls r6, r0 uint32_t br = 0; e1a6: 2300 movs r3, #0 e1a8: 9306 str r3, [sp, #24] lv_fs_read(user_data->f, buf, btr, &br); e1aa: 464b mov r3, r9 e1ac: 6818 ldr r0, [r3, #0] e1ae: ab06 add r3, sp, #24 e1b0: 0032 movs r2, r6 e1b2: 9915 ldr r1, [sp, #84] ; 0x54 e1b4: 4cc7 ldr r4, [pc, #796] ; (e4d4 ) e1b6: 47a0 blx r4 if(res != LV_FS_RES_OK || btr != br) { e1b8: 9b06 ldr r3, [sp, #24] e1ba: 1b9e subs r6, r3, r6 e1bc: 4270 negs r0, r6 e1be: 4170 adcs r0, r6 return LV_RES_INV; e1c0: b2c0 uxtb r0, r0 e1c2: e7cc b.n e15e else if(dsc->header.cf == LV_IMG_CF_ALPHA_1BIT || dsc->header.cf == LV_IMG_CF_ALPHA_2BIT || e1c4: 001a movs r2, r3 e1c6: 3a0b subs r2, #11 e1c8: 2a03 cmp r2, #3 e1ca: d92d bls.n e228 else if(dsc->header.cf == LV_IMG_CF_INDEXED_1BIT || dsc->header.cf == LV_IMG_CF_INDEXED_2BIT || e1cc: 3b07 subs r3, #7 return LV_RES_INV; e1ce: 2000 movs r0, #0 else if(dsc->header.cf == LV_IMG_CF_INDEXED_1BIT || dsc->header.cf == LV_IMG_CF_INDEXED_2BIT || e1d0: 2b03 cmp r3, #3 e1d2: d8c4 bhi.n e15e 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); e1d4: 7b08 ldrb r0, [r1, #12] e1d6: 06c0 lsls r0, r0, #27 e1d8: 0ec0 lsrs r0, r0, #27 e1da: 4bbc ldr r3, [pc, #752] ; (e4cc ) e1dc: 4798 blx r3 e1de: 4681 mov r9, r0 uint16_t mask = (1 << px_size) - 1; /*E.g. px_size = 2; mask = 0x03*/ e1e0: 2301 movs r3, #1 e1e2: 4083 lsls r3, r0 e1e4: 3b01 subs r3, #1 e1e6: b29b uxth r3, r3 e1e8: 4698 mov r8, r3 lv_coord_t w = 0; int8_t pos = 0; uint32_t ofs = 0; switch(dsc->header.cf) { e1ea: 7b2b ldrb r3, [r5, #12] e1ec: 06db lsls r3, r3, #27 e1ee: 0edb lsrs r3, r3, #27 e1f0: b2da uxtb r2, r3 e1f2: 2a08 cmp r2, #8 e1f4: d100 bne.n e1f8 e1f6: e135 b.n e464 e1f8: d800 bhi.n e1fc e1fa: e0fe b.n e3fa e1fc: b2da uxtb r2, r3 e1fe: 2a09 cmp r2, #9 e200: d100 bne.n e204 e202: e146 b.n e492 e204: 2a0a cmp r2, #10 e206: d000 beq.n e20a e208: e15b b.n e4c2 ofs += w * y + (x >> 1); /*First pixel*/ ofs += 64; /*Skip the palette*/ pos = 4 - ((x & 0x1) * 4); break; case LV_IMG_CF_INDEXED_8BIT: w = dsc->header.w; /*E.g. x = 7 -> w = 7 (bytes)*/ e20a: 68eb ldr r3, [r5, #12] e20c: 02db lsls r3, r3, #11 e20e: 0d5b lsrs r3, r3, #21 e210: b29a uxth r2, r3 e212: b21b sxth r3, r3 e214: 469a mov sl, r3 ofs += w * y + x; /*First pixel*/ e216: 9c01 ldr r4, [sp, #4] e218: 4354 muls r4, r2 e21a: 19e7 adds r7, r4, r7 ofs += 1024; /*Skip the palette*/ e21c: 2380 movs r3, #128 ; 0x80 e21e: 00db lsls r3, r3, #3 e220: 469b mov fp, r3 e222: 44bb add fp, r7 pos = 0; e224: 2400 movs r4, #0 e226: e0fe b.n e426 const lv_opa_t alpha1_opa_table[2] = {0, 255}; /*Opacity mapping with bpp = 1 (Just for compatibility)*/ e228: 2100 movs r1, #0 e22a: ab04 add r3, sp, #16 e22c: 7019 strb r1, [r3, #0] e22e: 22ff movs r2, #255 ; 0xff e230: 705a strb r2, [r3, #1] const lv_opa_t alpha2_opa_table[4] = {0, 85, 170, 255}; /*Opacity mapping with bpp = 2*/ e232: ab05 add r3, sp, #20 e234: 7019 strb r1, [r3, #0] e236: 3155 adds r1, #85 ; 0x55 e238: 7059 strb r1, [r3, #1] e23a: 3155 adds r1, #85 ; 0x55 e23c: 7099 strb r1, [r3, #2] e23e: 70da strb r2, [r3, #3] const lv_opa_t alpha4_opa_table[16] = {0, 17, 34, 51, /*Opacity mapping with bpp = 4*/ e240: aa06 add r2, sp, #24 e242: 4ba5 ldr r3, [pc, #660] ; (e4d8 ) e244: cb13 ldmia r3!, {r0, r1, r4} e246: c213 stmia r2!, {r0, r1, r4} e248: 681b ldr r3, [r3, #0] e24a: 6013 str r3, [r2, #0] lv_color_t bg_color = dsc->color; e24c: 8929 ldrh r1, [r5, #8] for(i = 0; i < len; i++) { e24e: 2e00 cmp r6, #0 e250: dd11 ble.n e276 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + 1] = (bg_color.full >> 8) & 0xFF; e252: 0a08 lsrs r0, r1, #8 e254: 9c15 ldr r4, [sp, #84] ; 0x54 e256: 1e72 subs r2, r6, #1 e258: b292 uxth r2, r2 e25a: 3201 adds r2, #1 e25c: 4694 mov ip, r2 e25e: 0052 lsls r2, r2, #1 e260: 4462 add r2, ip e262: 0023 movs r3, r4 e264: 46a4 mov ip, r4 e266: 4462 add r2, ip e268: 9c01 ldr r4, [sp, #4] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = bg_color.full & 0xFF; e26a: 7019 strb r1, [r3, #0] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + 1] = (bg_color.full >> 8) & 0xFF; e26c: 7058 strb r0, [r3, #1] e26e: 3303 adds r3, #3 for(i = 0; i < len; i++) { e270: 429a cmp r2, r3 e272: d1fa bne.n e26a e274: 9401 str r4, [sp, #4] uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf); e276: 7b28 ldrb r0, [r5, #12] e278: 06c0 lsls r0, r0, #27 e27a: 0ec0 lsrs r0, r0, #27 e27c: 4b93 ldr r3, [pc, #588] ; (e4cc ) e27e: 4798 blx r3 e280: 4681 mov r9, r0 uint16_t mask = (1 << px_size) - 1; /*E.g. px_size = 2; mask = 0x03*/ e282: 2301 movs r3, #1 e284: 4083 lsls r3, r0 e286: 3b01 subs r3, #1 e288: b29b uxth r3, r3 e28a: 4698 mov r8, r3 switch(dsc->header.cf) { e28c: 7b2b ldrb r3, [r5, #12] e28e: 06db lsls r3, r3, #27 e290: 0edb lsrs r3, r3, #27 e292: b2da uxtb r2, r3 e294: 2a0c cmp r2, #12 e296: d04b beq.n e330 e298: d911 bls.n e2be e29a: b2da uxtb r2, r3 e29c: 2a0d cmp r2, #13 e29e: d05d beq.n e35c e2a0: 2a0e cmp r2, #14 e2a2: d170 bne.n e386 w = dsc->header.w; /*E.g. x = 7 -> w = 7 (bytes)*/ e2a4: 68eb ldr r3, [r5, #12] e2a6: 02db lsls r3, r3, #11 e2a8: 0d5b lsrs r3, r3, #21 e2aa: b299 uxth r1, r3 e2ac: b21b sxth r3, r3 e2ae: 9302 str r3, [sp, #8] ofs += w * y + x; /*First pixel*/ e2b0: 9c01 ldr r4, [sp, #4] e2b2: 434c muls r4, r1 e2b4: 19e4 adds r4, r4, r7 pos = 0; e2b6: 2700 movs r7, #0 const lv_opa_t * opa_table = NULL; e2b8: 2300 movs r3, #0 e2ba: 469a mov sl, r3 e2bc: e015 b.n e2ea switch(dsc->header.cf) { e2be: 2a0b cmp r2, #11 e2c0: d161 bne.n e386 w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ e2c2: 68eb ldr r3, [r5, #12] e2c4: 02db lsls r3, r3, #11 e2c6: 0d5b lsrs r3, r3, #21 e2c8: 10da asrs r2, r3, #3 if(dsc->header.w & 0x7) w++; e2ca: 1c51 adds r1, r2, #1 e2cc: 9102 str r1, [sp, #8] e2ce: 075b lsls r3, r3, #29 e2d0: d101 bne.n e2d6 w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ e2d2: b213 sxth r3, r2 e2d4: 9302 str r3, [sp, #8] ofs += w * y + (x >> 3); /*First pixel*/ e2d6: 9b02 ldr r3, [sp, #8] e2d8: 9c01 ldr r4, [sp, #4] e2da: 435c muls r4, r3 e2dc: 10f9 asrs r1, r7, #3 e2de: 1864 adds r4, r4, r1 pos = 7 - (x & 0x7); e2e0: 2307 movs r3, #7 e2e2: 43bb bics r3, r7 e2e4: 001f movs r7, r3 opa_table = alpha1_opa_table; e2e6: ab04 add r3, sp, #16 e2e8: 469a mov sl, r3 lv_img_decoder_built_in_data_t * user_data = dsc->user_data; e2ea: 69eb ldr r3, [r5, #28] e2ec: 469b mov fp, r3 uint8_t * fs_buf = _lv_mem_buf_get(w); e2ee: 9802 ldr r0, [sp, #8] e2f0: 4b7a ldr r3, [pc, #488] ; (e4dc ) e2f2: 4798 blx r3 e2f4: 9003 str r0, [sp, #12] if(dsc->src_type == LV_IMG_SRC_VARIABLE) { e2f6: 7aab ldrb r3, [r5, #10] e2f8: 2b00 cmp r3, #0 e2fa: d14e bne.n e39a data_tmp = img_dsc->data + ofs; e2fc: 686b ldr r3, [r5, #4] e2fe: 6899 ldr r1, [r3, #8] e300: 190c adds r4, r1, r4 for(i = 0; i < len; i++) { e302: 2e00 cmp r6, #0 e304: dd74 ble.n e3f0 e306: 9b15 ldr r3, [sp, #84] ; 0x54 e308: 1c98 adds r0, r3, #2 e30a: 3e01 subs r6, #1 e30c: b2b6 uxth r6, r6 e30e: 0072 lsls r2, r6, #1 e310: 1992 adds r2, r2, r6 e312: 3205 adds r2, #5 e314: 469c mov ip, r3 e316: 4462 add r2, ip dsc->header.cf == LV_IMG_CF_ALPHA_8BIT ? val_act : opa_table[val_act]; e318: 211f movs r1, #31 e31a: 23ff movs r3, #255 ; 0xff e31c: 469b mov fp, r3 pos = 8 - px_size; e31e: 2308 movs r3, #8 e320: 464e mov r6, r9 e322: 1b9b subs r3, r3, r6 e324: b25b sxtb r3, r3 e326: 9301 str r3, [sp, #4] e328: 46ac mov ip, r5 e32a: 0015 movs r5, r2 e32c: 46c1 mov r9, r8 e32e: e04b b.n e3c8 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ e330: 68eb ldr r3, [r5, #12] e332: 02db lsls r3, r3, #11 e334: 0d5b lsrs r3, r3, #21 e336: 109a asrs r2, r3, #2 if(dsc->header.w & 0x3) w++; e338: 1c51 adds r1, r2, #1 e33a: 9102 str r1, [sp, #8] e33c: 079b lsls r3, r3, #30 e33e: d101 bne.n e344 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ e340: b213 sxth r3, r2 e342: 9302 str r3, [sp, #8] ofs += w * y + (x >> 2); /*First pixel*/ e344: 9b02 ldr r3, [sp, #8] e346: 9c01 ldr r4, [sp, #4] e348: 435c muls r4, r3 e34a: 10b9 asrs r1, r7, #2 e34c: 1864 adds r4, r4, r1 pos = 6 - ((x & 0x3) * 2); e34e: b2bb uxth r3, r7 e350: 2703 movs r7, #3 e352: 439f bics r7, r3 e354: 007f lsls r7, r7, #1 opa_table = alpha2_opa_table; e356: ab05 add r3, sp, #20 e358: 469a mov sl, r3 e35a: e7c6 b.n e2ea w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ e35c: 68eb ldr r3, [r5, #12] e35e: 02db lsls r3, r3, #11 e360: 0d5b lsrs r3, r3, #21 e362: 105a asrs r2, r3, #1 if(dsc->header.w & 0x1) w++; e364: 1c51 adds r1, r2, #1 e366: 9102 str r1, [sp, #8] e368: 07db lsls r3, r3, #31 e36a: d401 bmi.n e370 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ e36c: b213 sxth r3, r2 e36e: 9302 str r3, [sp, #8] ofs += w * y + (x >> 1); /*First pixel*/ e370: 9b02 ldr r3, [sp, #8] e372: 9c01 ldr r4, [sp, #4] e374: 435c muls r4, r3 e376: 1079 asrs r1, r7, #1 e378: 1864 adds r4, r4, r1 pos = 4 - ((x & 0x1) * 4); e37a: 07fb lsls r3, r7, #31 e37c: d509 bpl.n e392 e37e: 2700 movs r7, #0 opa_table = alpha4_opa_table; e380: ab06 add r3, sp, #24 e382: 469a mov sl, r3 e384: e7b1 b.n e2ea int8_t pos = 0; e386: 2700 movs r7, #0 uint32_t ofs = 0; e388: 2400 movs r4, #0 lv_coord_t w = 0; e38a: 2300 movs r3, #0 e38c: 9302 str r3, [sp, #8] const lv_opa_t * opa_table = NULL; e38e: 469a mov sl, r3 e390: e7ab b.n e2ea pos = 4 - ((x & 0x1) * 4); e392: 2704 movs r7, #4 opa_table = alpha4_opa_table; e394: ab06 add r3, sp, #24 e396: 469a mov sl, r3 e398: e7a7 b.n e2ea lv_fs_seek(user_data->f, ofs + 4); /*+4 to skip the header*/ e39a: 1d21 adds r1, r4, #4 e39c: 465b mov r3, fp e39e: 6818 ldr r0, [r3, #0] e3a0: 4b4b ldr r3, [pc, #300] ; (e4d0 ) e3a2: 4798 blx r3 lv_fs_read(user_data->f, fs_buf, w, NULL); e3a4: 465b mov r3, fp e3a6: 6818 ldr r0, [r3, #0] e3a8: 2300 movs r3, #0 e3aa: 9a02 ldr r2, [sp, #8] e3ac: 9903 ldr r1, [sp, #12] e3ae: 4c49 ldr r4, [pc, #292] ; (e4d4 ) e3b0: 47a0 blx r4 data_tmp = fs_buf; e3b2: 9c03 ldr r4, [sp, #12] e3b4: e7a5 b.n e302 uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; e3b6: b2db uxtb r3, r3 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = e3b8: 7003 strb r3, [r0, #0] pos -= px_size; e3ba: 1bbf subs r7, r7, r6 e3bc: b27f sxtb r7, r7 if(pos < 0) { e3be: 2f00 cmp r7, #0 e3c0: db13 blt.n e3ea e3c2: 3003 adds r0, #3 for(i = 0; i < len; i++) { e3c4: 4285 cmp r5, r0 e3c6: d013 beq.n e3f0 uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; e3c8: 7823 ldrb r3, [r4, #0] e3ca: 4698 mov r8, r3 e3cc: 464b mov r3, r9 e3ce: 40bb lsls r3, r7 e3d0: 4642 mov r2, r8 e3d2: 4013 ands r3, r2 e3d4: 413b asrs r3, r7 dsc->header.cf == LV_IMG_CF_ALPHA_8BIT ? val_act : opa_table[val_act]; e3d6: 4662 mov r2, ip e3d8: 7b12 ldrb r2, [r2, #12] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = e3da: 400a ands r2, r1 e3dc: 2a0e cmp r2, #14 e3de: d0ea beq.n e3b6 dsc->header.cf == LV_IMG_CF_ALPHA_8BIT ? val_act : opa_table[val_act]; e3e0: 465a mov r2, fp e3e2: 4013 ands r3, r2 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = e3e4: 4652 mov r2, sl e3e6: 5cd3 ldrb r3, [r2, r3] e3e8: e7e6 b.n e3b8 pos = 8 - px_size; e3ea: 9f01 ldr r7, [sp, #4] data_tmp++; e3ec: 3401 adds r4, #1 e3ee: e7e8 b.n e3c2 _lv_mem_buf_release(fs_buf); e3f0: 9803 ldr r0, [sp, #12] e3f2: 4b3b ldr r3, [pc, #236] ; (e4e0 ) e3f4: 4798 blx r3 res = lv_img_decoder_built_in_line_alpha(dsc, x, y, len, buf); e3f6: 2001 movs r0, #1 e3f8: e6b1 b.n e15e switch(dsc->header.cf) { e3fa: 2a07 cmp r2, #7 e3fc: d161 bne.n e4c2 w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ e3fe: 68eb ldr r3, [r5, #12] e400: 02db lsls r3, r3, #11 e402: 0d5b lsrs r3, r3, #21 e404: 10da asrs r2, r3, #3 if(dsc->header.w & 0x7) w++; e406: 1c51 adds r1, r2, #1 e408: 468a mov sl, r1 e40a: 075b lsls r3, r3, #29 e40c: d101 bne.n e412 w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ e40e: b213 sxth r3, r2 e410: 469a mov sl, r3 ofs += w * y + (x >> 3); /*First pixel*/ e412: 4653 mov r3, sl e414: 9c01 ldr r4, [sp, #4] e416: 435c muls r4, r3 e418: 10fb asrs r3, r7, #3 e41a: 18e4 adds r4, r4, r3 ofs += 8; /*Skip the palette*/ e41c: 2308 movs r3, #8 e41e: 469b mov fp, r3 e420: 44a3 add fp, r4 pos = 7 - (x & 0x7); e422: 2407 movs r4, #7 e424: 43bc bics r4, r7 break; } lv_img_decoder_built_in_data_t * user_data = dsc->user_data; e426: 69ef ldr r7, [r5, #28] #if LV_USE_FILESYSTEM uint8_t * fs_buf = _lv_mem_buf_get(w); e428: 4650 mov r0, sl e42a: 4b2c ldr r3, [pc, #176] ; (e4dc ) e42c: 4798 blx r3 e42e: 9002 str r0, [sp, #8] #endif const uint8_t * data_tmp = NULL; if(dsc->src_type == LV_IMG_SRC_VARIABLE) { e430: 7aab ldrb r3, [r5, #10] e432: 2b00 cmp r3, #0 e434: d156 bne.n e4e4 const lv_img_dsc_t * img_dsc = dsc->src; data_tmp = img_dsc->data + ofs; e436: 686b ldr r3, [r5, #4] e438: 6899 ldr r1, [r3, #8] e43a: 4459 add r1, fp return LV_RES_INV; #endif } lv_coord_t i; for(i = 0; i < len; i++) { e43c: 2e00 cmp r6, #0 e43e: dd78 ble.n e532 e440: 9815 ldr r0, [sp, #84] ; 0x54 e442: 3e01 subs r6, #1 e444: b2b6 uxth r6, r6 e446: 3601 adds r6, #1 e448: 0073 lsls r3, r6, #1 e44a: 199e adds r6, r3, r6 e44c: 4684 mov ip, r0 e44e: 4466 add r6, ip uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; lv_color_t color = user_data->palette[val_act]; e450: 23ff movs r3, #255 ; 0xff e452: 469a mov sl, r3 #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; e454: 2208 movs r2, #8 e456: 464b mov r3, r9 e458: 1ad2 subs r2, r2, r3 e45a: b253 sxtb r3, r2 e45c: 9301 str r3, [sp, #4] e45e: 46b4 mov ip, r6 e460: 464e mov r6, r9 e462: e04f b.n e504 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ e464: 68eb ldr r3, [r5, #12] e466: 02db lsls r3, r3, #11 e468: 0d5b lsrs r3, r3, #21 e46a: 109a asrs r2, r3, #2 if(dsc->header.w & 0x3) w++; e46c: 1c51 adds r1, r2, #1 e46e: 468a mov sl, r1 e470: 079b lsls r3, r3, #30 e472: d101 bne.n e478 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ e474: b213 sxth r3, r2 e476: 469a mov sl, r3 ofs += w * y + (x >> 2); /*First pixel*/ e478: 4653 mov r3, sl e47a: 9c01 ldr r4, [sp, #4] e47c: 435c muls r4, r3 e47e: 10bb asrs r3, r7, #2 e480: 18e4 adds r4, r4, r3 ofs += 16; /*Skip the palette*/ e482: 2310 movs r3, #16 e484: 469b mov fp, r3 e486: 44a3 add fp, r4 pos = 6 - ((x & 0x3) * 2); e488: b2bf uxth r7, r7 e48a: 2403 movs r4, #3 e48c: 43bc bics r4, r7 e48e: 0064 lsls r4, r4, #1 e490: e7c9 b.n e426 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ e492: 68eb ldr r3, [r5, #12] e494: 02db lsls r3, r3, #11 e496: 0d5b lsrs r3, r3, #21 e498: 105a asrs r2, r3, #1 if(dsc->header.w & 0x1) w++; e49a: 1c51 adds r1, r2, #1 e49c: 468a mov sl, r1 e49e: 07db lsls r3, r3, #31 e4a0: d401 bmi.n e4a6 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ e4a2: b213 sxth r3, r2 e4a4: 469a mov sl, r3 ofs += w * y + (x >> 1); /*First pixel*/ e4a6: 4653 mov r3, sl e4a8: 9c01 ldr r4, [sp, #4] e4aa: 435c muls r4, r3 e4ac: 107b asrs r3, r7, #1 e4ae: 18e4 adds r4, r4, r3 ofs += 64; /*Skip the palette*/ e4b0: 2340 movs r3, #64 ; 0x40 e4b2: 469b mov fp, r3 e4b4: 44a3 add fp, r4 pos = 4 - ((x & 0x1) * 4); e4b6: 2401 movs r4, #1 e4b8: 4027 ands r7, r4 e4ba: 427c negs r4, r7 e4bc: 417c adcs r4, r7 e4be: 00a4 lsls r4, r4, #2 e4c0: e7b1 b.n e426 uint32_t ofs = 0; e4c2: 2300 movs r3, #0 e4c4: 469b mov fp, r3 int8_t pos = 0; e4c6: 2400 movs r4, #0 lv_coord_t w = 0; e4c8: 469a mov sl, r3 e4ca: e7ac b.n e426 e4cc: 00007ee5 .word 0x00007ee5 e4d0: 000103cf .word 0x000103cf e4d4: 0001038d .word 0x0001038d e4d8: 0001894c .word 0x0001894c e4dc: 00010ec1 .word 0x00010ec1 e4e0: 00010bd5 .word 0x00010bd5 lv_fs_seek(user_data->f, ofs + 4); /*+4 to skip the header*/ e4e4: 4659 mov r1, fp e4e6: 3104 adds r1, #4 e4e8: 6838 ldr r0, [r7, #0] e4ea: 4b14 ldr r3, [pc, #80] ; (e53c ) e4ec: 4798 blx r3 lv_fs_read(user_data->f, fs_buf, w, NULL); e4ee: 2300 movs r3, #0 e4f0: 4652 mov r2, sl e4f2: 9902 ldr r1, [sp, #8] e4f4: 6838 ldr r0, [r7, #0] e4f6: 4d12 ldr r5, [pc, #72] ; (e540 ) e4f8: 47a8 blx r5 data_tmp = fs_buf; e4fa: 9902 ldr r1, [sp, #8] e4fc: e79e b.n e43c e4fe: 3003 adds r0, #3 for(i = 0; i < len; i++) { e500: 4560 cmp r0, ip e502: d016 beq.n e532 uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; e504: 780a ldrb r2, [r1, #0] e506: 4643 mov r3, r8 e508: 40a3 lsls r3, r4 e50a: 4013 ands r3, r2 e50c: 4123 asrs r3, r4 lv_color_t color = user_data->palette[val_act]; e50e: 4652 mov r2, sl e510: 4013 ands r3, r2 e512: 005a lsls r2, r3, #1 e514: 687d ldr r5, [r7, #4] e516: 5b52 ldrh r2, [r2, r5] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = color.full & 0xFF; e518: 7002 strb r2, [r0, #0] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + 1] = (color.full >> 8) & 0xFF; e51a: 0a12 lsrs r2, r2, #8 e51c: 7042 strb r2, [r0, #1] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = user_data->opa[val_act]; e51e: 68ba ldr r2, [r7, #8] e520: 5cd3 ldrb r3, [r2, r3] e522: 7083 strb r3, [r0, #2] pos -= px_size; e524: 1ba4 subs r4, r4, r6 e526: b264 sxtb r4, r4 if(pos < 0) { e528: 2c00 cmp r4, #0 e52a: dae8 bge.n e4fe pos = 8 - px_size; e52c: 9c01 ldr r4, [sp, #4] data_tmp++; e52e: 3101 adds r1, #1 e530: e7e5 b.n e4fe } } #if LV_USE_FILESYSTEM _lv_mem_buf_release(fs_buf); e532: 9802 ldr r0, [sp, #8] e534: 4b03 ldr r3, [pc, #12] ; (e544 ) e536: 4798 blx r3 res = lv_img_decoder_built_in_line_indexed(dsc, x, y, len, buf); e538: 2001 movs r0, #1 e53a: e610 b.n e15e e53c: 000103cf .word 0x000103cf e540: 0001038d .word 0x0001038d e544: 00010bd5 .word 0x00010bd5 0000e548 : { e548: b5f0 push {r4, r5, r6, r7, lr} e54a: b083 sub sp, #12 e54c: 9001 str r0, [sp, #4] e54e: 000d movs r5, r1 header->always_zero = 0; e550: 780a ldrb r2, [r1, #0] e552: 231f movs r3, #31 e554: 4013 ands r3, r2 e556: 700b strb r3, [r1, #0] _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { e558: 480d ldr r0, [pc, #52] ; (e590 ) e55a: 4b0e ldr r3, [pc, #56] ; (e594 ) e55c: 4798 blx r3 e55e: 1e04 subs r4, r0, #0 e560: d014 beq.n e58c e562: 4e0d ldr r6, [pc, #52] ; (e598 ) e564: e005 b.n e572 res = LV_RES_INV; e566: 2700 movs r7, #0 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { e568: 0021 movs r1, r4 e56a: 4809 ldr r0, [pc, #36] ; (e590 ) e56c: 47b0 blx r6 e56e: 1e04 subs r4, r0, #0 e570: d009 beq.n e586 if(d->info_cb) { e572: 6823 ldr r3, [r4, #0] e574: 2b00 cmp r3, #0 e576: d0f6 beq.n e566 res = d->info_cb(d, src, header); e578: 002a movs r2, r5 e57a: 9901 ldr r1, [sp, #4] e57c: 0020 movs r0, r4 e57e: 4798 blx r3 e580: 0007 movs r7, r0 if(res == LV_RES_OK) break; e582: 2801 cmp r0, #1 e584: d1f0 bne.n e568 } e586: 0038 movs r0, r7 e588: b003 add sp, #12 e58a: bdf0 pop {r4, r5, r6, r7, pc} lv_res_t res = LV_RES_INV; e58c: 2700 movs r7, #0 e58e: e7fa b.n e586 e590: 20004cd0 .word 0x20004cd0 e594: 0001066d .word 0x0001066d e598: 00010685 .word 0x00010685 0000e59c : { e59c: b5f0 push {r4, r5, r6, r7, lr} e59e: b083 sub sp, #12 e5a0: 0007 movs r7, r0 e5a2: 9100 str r1, [sp, #0] dsc->color = color; e5a4: 8102 strh r2, [r0, #8] dsc->src_type = lv_img_src_get_type(src); e5a6: 0008 movs r0, r1 e5a8: 4b25 ldr r3, [pc, #148] ; (e640 ) e5aa: 4798 blx r3 e5ac: 72b8 strb r0, [r7, #10] dsc->user_data = NULL; e5ae: 2300 movs r3, #0 e5b0: 61fb str r3, [r7, #28] if(dsc->src_type == LV_IMG_SRC_FILE) { e5b2: 2801 cmp r0, #1 e5b4: d00e beq.n e5d4 dsc->src = src; e5b6: 9b00 ldr r3, [sp, #0] e5b8: 607b str r3, [r7, #4] _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { e5ba: 4822 ldr r0, [pc, #136] ; (e644 ) e5bc: 4b22 ldr r3, [pc, #136] ; (e648 ) e5be: 4798 blx r3 e5c0: 1e04 subs r4, r0, #0 e5c2: d036 beq.n e632 e5c4: 2500 movs r5, #0 res = d->info_cb(d, src, &dsc->header); e5c6: 230c movs r3, #12 e5c8: 469c mov ip, r3 e5ca: 44bc add ip, r7 e5cc: 4663 mov r3, ip e5ce: 9301 str r3, [sp, #4] _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { e5d0: 4e1e ldr r6, [pc, #120] ; (e64c ) e5d2: e010 b.n e5f6 size_t fnlen = strlen(src); e5d4: 9c00 ldr r4, [sp, #0] e5d6: 0020 movs r0, r4 e5d8: 4b1d ldr r3, [pc, #116] ; (e650 ) e5da: 4798 blx r3 dsc->src = lv_mem_alloc(fnlen + 1); e5dc: 3001 adds r0, #1 e5de: 4b1d ldr r3, [pc, #116] ; (e654 ) e5e0: 4798 blx r3 e5e2: 6078 str r0, [r7, #4] strcpy((char *)dsc->src, src); e5e4: 0021 movs r1, r4 e5e6: 4b1c ldr r3, [pc, #112] ; (e658 ) e5e8: 4798 blx r3 e5ea: e7e6 b.n e5ba _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { e5ec: 0021 movs r1, r4 e5ee: 4815 ldr r0, [pc, #84] ; (e644 ) e5f0: 47b0 blx r6 e5f2: 1e04 subs r4, r0, #0 e5f4: d018 beq.n e628 if(d->info_cb == NULL || d->open_cb == NULL) continue; e5f6: 6823 ldr r3, [r4, #0] e5f8: 2b00 cmp r3, #0 e5fa: d0f7 beq.n e5ec e5fc: 6862 ldr r2, [r4, #4] e5fe: 2a00 cmp r2, #0 e600: d0f4 beq.n e5ec res = d->info_cb(d, src, &dsc->header); e602: 9a01 ldr r2, [sp, #4] e604: 9900 ldr r1, [sp, #0] e606: 0020 movs r0, r4 e608: 4798 blx r3 e60a: 0005 movs r5, r0 if(res != LV_RES_OK) continue; e60c: 2801 cmp r0, #1 e60e: d1ed bne.n e5ec dsc->error_msg = NULL; e610: 2300 movs r3, #0 e612: 61bb str r3, [r7, #24] dsc->img_data = NULL; e614: 613b str r3, [r7, #16] dsc->decoder = d; e616: 603c str r4, [r7, #0] res = d->open_cb(d, dsc); e618: 0039 movs r1, r7 e61a: 0020 movs r0, r4 e61c: 6863 ldr r3, [r4, #4] e61e: 4798 blx r3 e620: 0005 movs r5, r0 if(res == LV_RES_OK) break; e622: 2801 cmp r0, #1 e624: d1e2 bne.n e5ec e626: e001 b.n e62c if(res == LV_RES_INV) { e628: 2d00 cmp r5, #0 e62a: d003 beq.n e634 } e62c: 0028 movs r0, r5 e62e: b003 add sp, #12 e630: bdf0 pop {r4, r5, r6, r7, pc} lv_res_t res = LV_RES_INV; e632: 2500 movs r5, #0 _lv_memset_00(dsc, sizeof(lv_img_decoder_dsc_t)); e634: 2120 movs r1, #32 e636: 0038 movs r0, r7 e638: 4b08 ldr r3, [pc, #32] ; (e65c ) e63a: 4798 blx r3 e63c: e7f6 b.n e62c e63e: 46c0 nop ; (mov r8, r8) e640: 00008161 .word 0x00008161 e644: 20004cd0 .word 0x20004cd0 e648: 0001066d .word 0x0001066d e64c: 00010685 .word 0x00010685 e650: 00017e81 .word 0x00017e81 e654: 00010a71 .word 0x00010a71 e658: 00017e71 .word 0x00017e71 e65c: 0001104d .word 0x0001104d 0000e660 : { e660: b570 push {r4, r5, r6, lr} e662: b082 sub sp, #8 if(dsc->decoder->read_line_cb) res = dsc->decoder->read_line_cb(dsc->decoder, dsc, x, y, len, buf); e664: 6805 ldr r5, [r0, #0] e666: 68ac ldr r4, [r5, #8] e668: 2c00 cmp r4, #0 e66a: d009 beq.n e680 e66c: 9e06 ldr r6, [sp, #24] e66e: 9601 str r6, [sp, #4] e670: 9300 str r3, [sp, #0] e672: 0013 movs r3, r2 e674: 000a movs r2, r1 e676: 0001 movs r1, r0 e678: 0028 movs r0, r5 e67a: 47a0 blx r4 } e67c: b002 add sp, #8 e67e: bd70 pop {r4, r5, r6, pc} lv_res_t res = LV_RES_INV; e680: 2000 movs r0, #0 e682: e7fb b.n e67c 0000e684 : { e684: b510 push {r4, lr} e686: 0004 movs r4, r0 if(dsc->decoder) { e688: 6800 ldr r0, [r0, #0] e68a: 2800 cmp r0, #0 e68c: d007 beq.n e69e if(dsc->decoder->close_cb) dsc->decoder->close_cb(dsc->decoder, dsc); e68e: 68c3 ldr r3, [r0, #12] e690: 2b00 cmp r3, #0 e692: d001 beq.n e698 e694: 0021 movs r1, r4 e696: 4798 blx r3 if(dsc->src_type == LV_IMG_SRC_FILE) { e698: 7aa3 ldrb r3, [r4, #10] e69a: 2b01 cmp r3, #1 e69c: d000 beq.n e6a0 } e69e: bd10 pop {r4, pc} lv_mem_free(dsc->src); e6a0: 6860 ldr r0, [r4, #4] e6a2: 4b02 ldr r3, [pc, #8] ; (e6ac ) e6a4: 4798 blx r3 dsc->src = NULL; e6a6: 2300 movs r3, #0 e6a8: 6063 str r3, [r4, #4] } e6aa: e7f8 b.n e69e e6ac: 00010b39 .word 0x00010b39 0000e6b0 : { e6b0: b510 push {r4, lr} decoder = _lv_ll_ins_head(&LV_GC_ROOT(_lv_img_defoder_ll)); e6b2: 480b ldr r0, [pc, #44] ; (e6e0 ) e6b4: 4b0b ldr r3, [pc, #44] ; (e6e4 ) e6b6: 4798 blx r3 e6b8: 0004 movs r4, r0 LV_ASSERT_MEM(decoder); e6ba: 4b0b ldr r3, [pc, #44] ; (e6e8 ) e6bc: 4798 blx r3 e6be: 2800 cmp r0, #0 e6c0: d007 beq.n e6d2 if(decoder == NULL) return NULL; e6c2: 2c00 cmp r4, #0 e6c4: d003 beq.n e6ce _lv_memset_00(decoder, sizeof(lv_img_decoder_t)); e6c6: 2110 movs r1, #16 e6c8: 0020 movs r0, r4 e6ca: 4b08 ldr r3, [pc, #32] ; (e6ec ) e6cc: 4798 blx r3 } e6ce: 0020 movs r0, r4 e6d0: bd10 pop {r4, pc} LV_ASSERT_MEM(decoder); e6d2: 0022 movs r2, r4 e6d4: 2300 movs r3, #0 e6d6: 4806 ldr r0, [pc, #24] ; (e6f0 ) e6d8: 4906 ldr r1, [pc, #24] ; (e6f4 ) e6da: 4788 blx r1 e6dc: e7fe b.n e6dc e6de: 46c0 nop ; (mov r8, r8) e6e0: 20004cd0 .word 0x20004cd0 e6e4: 000105cd .word 0x000105cd e6e8: 0000147d .word 0x0000147d e6ec: 0001104d .word 0x0001104d e6f0: 00018724 .word 0x00018724 e6f4: 00001485 .word 0x00001485 0000e6f8 <_lv_img_decoder_init>: { e6f8: b510 push {r4, lr} _lv_ll_init(&LV_GC_ROOT(_lv_img_defoder_ll), sizeof(lv_img_decoder_t)); e6fa: 2110 movs r1, #16 e6fc: 480c ldr r0, [pc, #48] ; (e730 <_lv_img_decoder_init+0x38>) e6fe: 4b0d ldr r3, [pc, #52] ; (e734 <_lv_img_decoder_init+0x3c>) e700: 4798 blx r3 decoder = lv_img_decoder_create(); e702: 4b0d ldr r3, [pc, #52] ; (e738 <_lv_img_decoder_init+0x40>) e704: 4798 blx r3 if(decoder == NULL) { e706: 2800 cmp r0, #0 e708: d008 beq.n e71c <_lv_img_decoder_init+0x24> decoder->info_cb = info_cb; e70a: 4b0c ldr r3, [pc, #48] ; (e73c <_lv_img_decoder_init+0x44>) e70c: 6003 str r3, [r0, #0] decoder->open_cb = open_cb; e70e: 4b0c ldr r3, [pc, #48] ; (e740 <_lv_img_decoder_init+0x48>) e710: 6043 str r3, [r0, #4] decoder->read_line_cb = read_line_cb; e712: 4b0c ldr r3, [pc, #48] ; (e744 <_lv_img_decoder_init+0x4c>) e714: 6083 str r3, [r0, #8] decoder->close_cb = close_cb; e716: 4b0c ldr r3, [pc, #48] ; (e748 <_lv_img_decoder_init+0x50>) e718: 60c3 str r3, [r0, #12] } e71a: bd10 pop {r4, pc} LV_ASSERT_MEM(decoder); e71c: 4b0b ldr r3, [pc, #44] ; (e74c <_lv_img_decoder_init+0x54>) e71e: 4798 blx r3 e720: 2800 cmp r0, #0 e722: d1fa bne.n e71a <_lv_img_decoder_init+0x22> e724: 2200 movs r2, #0 e726: 2300 movs r3, #0 e728: 4809 ldr r0, [pc, #36] ; (e750 <_lv_img_decoder_init+0x58>) e72a: 490a ldr r1, [pc, #40] ; (e754 <_lv_img_decoder_init+0x5c>) e72c: 4788 blx r1 e72e: e7fe b.n e72e <_lv_img_decoder_init+0x36> e730: 20004cd0 .word 0x20004cd0 e734: 000105b9 .word 0x000105b9 e738: 0000e6b1 .word 0x0000e6b1 e73c: 0000dd09 .word 0x0000dd09 e740: 0000de2d .word 0x0000de2d e744: 0000e131 .word 0x0000e131 e748: 0000dde9 .word 0x0000dde9 e74c: 0000147d .word 0x0000147d e750: 00018724 .word 0x00018724 e754: 00001485 .word 0x00001485 0000e758 : * @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) { e758: b510 push {r4, lr} return font_p->get_glyph_bitmap(font_p, letter); e75a: 6843 ldr r3, [r0, #4] e75c: 4798 blx r3 } e75e: bd10 pop {r4, pc} 0000e760 : * @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) { e760: b510 push {r4, lr} return font_p->get_glyph_dsc(font_p, dsc_out, letter, letter_next); e762: 6804 ldr r4, [r0, #0] e764: 47a0 blx r4 } e766: bd10 pop {r4, pc} 0000e768 : * @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) { e768: b510 push {r4, lr} e76a: b084 sub sp, #16 e76c: 0013 movs r3, r2 lv_font_glyph_dsc_t g; bool ret; ret = lv_font_get_glyph_dsc(font, &g, letter, letter_next); e76e: 000a movs r2, r1 e770: a901 add r1, sp, #4 e772: 4c05 ldr r4, [pc, #20] ; (e788 ) e774: 47a0 blx r4 if(ret) return g.adv_w; else return 0; e776: 2300 movs r3, #0 if(ret) return g.adv_w; e778: 2800 cmp r0, #0 e77a: d001 beq.n e780 e77c: ab01 add r3, sp, #4 e77e: 881b ldrh r3, [r3, #0] } e780: 0018 movs r0, r3 e782: b004 add sp, #16 e784: bd10 pop {r4, pc} e786: 46c0 nop ; (mov r8, r8) e788: 0000e761 .word 0x0000e761 0000e78c : { 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]; e78c: 7803 ldrb r3, [r0, #0] e78e: 780a ldrb r2, [r1, #0] e790: 4293 cmp r3, r2 e792: d001 beq.n e798 e794: 1a98 subs r0, r3, r2 else return (int32_t) ref8_p[1] - element8_p[1]; } e796: 4770 bx lr else return (int32_t) ref8_p[1] - element8_p[1]; e798: 7840 ldrb r0, [r0, #1] e79a: 784b ldrb r3, [r1, #1] e79c: 1ac0 subs r0, r0, r3 e79e: e7fa b.n e796 0000e7a0 : { 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]; e7a0: 8803 ldrh r3, [r0, #0] e7a2: 880a ldrh r2, [r1, #0] e7a4: 4293 cmp r3, r2 e7a6: d001 beq.n e7ac e7a8: 1a98 subs r0, r3, r2 else return (int32_t) ref16_p[1] - element16_p[1]; } e7aa: 4770 bx lr else return (int32_t) ref16_p[1] - element16_p[1]; e7ac: 8840 ldrh r0, [r0, #2] e7ae: 884b ldrh r3, [r1, #2] e7b0: 1ac0 subs r0, r0, r3 e7b2: e7fa b.n e7aa 0000e7b4 : * @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)); e7b4: 8800 ldrh r0, [r0, #0] e7b6: 880b ldrh r3, [r1, #0] e7b8: 1ac0 subs r0, r0, r3 } e7ba: 4770 bx lr 0000e7bc : { e7bc: b5f0 push {r4, r5, r6, r7, lr} e7be: b087 sub sp, #28 e7c0: 000c movs r4, r1 if(letter == '\0') return 0; e7c2: 1e0b subs r3, r1, #0 e7c4: d018 beq.n e7f8 lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; e7c6: 6906 ldr r6, [r0, #16] if(letter == fdsc->last_letter) return fdsc->last_glyph_id; e7c8: 69b3 ldr r3, [r6, #24] e7ca: 4299 cmp r1, r3 e7cc: d017 beq.n e7fe for(i = 0; i < fdsc->cmap_num; i++) { e7ce: 8a72 ldrh r2, [r6, #18] e7d0: 0592 lsls r2, r2, #22 e7d2: 0d92 lsrs r2, r2, #22 e7d4: 2a00 cmp r2, #0 e7d6: dd62 ble.n e89e uint32_t rcp = letter - fdsc->cmaps[i].range_start; e7d8: 68b7 ldr r7, [r6, #8] e7da: 683b ldr r3, [r7, #0] e7dc: 1ac8 subs r0, r1, r3 e7de: 9005 str r0, [sp, #20] if(rcp > fdsc->cmaps[i].range_length) continue; e7e0: 88bb ldrh r3, [r7, #4] e7e2: 4298 cmp r0, r3 e7e4: d80d bhi.n e802 uint32_t rcp = letter - fdsc->cmaps[i].range_start; e7e6: 2300 movs r3, #0 e7e8: 9303 str r3, [sp, #12] if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY) { e7ea: 7cba ldrb r2, [r7, #18] e7ec: 2a00 cmp r2, #0 e7ee: d11a bne.n e826 glyph_id = fdsc->cmaps[i].glyph_id_start + rcp; e7f0: 88fb ldrh r3, [r7, #6] e7f2: 181b adds r3, r3, r0 fdsc->last_letter = letter; e7f4: 61b4 str r4, [r6, #24] fdsc->last_glyph_id = glyph_id; e7f6: 61f3 str r3, [r6, #28] } e7f8: 0018 movs r0, r3 e7fa: b007 add sp, #28 e7fc: bdf0 pop {r4, r5, r6, r7, pc} if(letter == fdsc->last_letter) return fdsc->last_glyph_id; e7fe: 69f3 ldr r3, [r6, #28] e800: e7fa b.n e7f8 if(rcp > fdsc->cmaps[i].range_length) continue; e802: 2100 movs r1, #0 for(i = 0; i < fdsc->cmap_num; i++) { e804: 3101 adds r1, #1 e806: b289 uxth r1, r1 e808: 4291 cmp r1, r2 e80a: da48 bge.n e89e uint32_t rcp = letter - fdsc->cmaps[i].range_start; e80c: 008b lsls r3, r1, #2 e80e: 185b adds r3, r3, r1 e810: 009b lsls r3, r3, #2 e812: 9303 str r3, [sp, #12] e814: 18fb adds r3, r7, r3 e816: 6818 ldr r0, [r3, #0] e818: 1a20 subs r0, r4, r0 e81a: 9005 str r0, [sp, #20] if(rcp > fdsc->cmaps[i].range_length) continue; e81c: 889d ldrh r5, [r3, #4] e81e: 42a8 cmp r0, r5 e820: d8f0 bhi.n e804 uint32_t rcp = letter - fdsc->cmaps[i].range_start; e822: 001f movs r7, r3 e824: e7e1 b.n e7ea else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL) { e826: 2a01 cmp r2, #1 e828: d01b beq.n e862 else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_SPARSE_TINY) { e82a: 2a02 cmp r2, #2 e82c: d01e beq.n e86c uint32_t glyph_id = 0; e82e: 2300 movs r3, #0 else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_SPARSE_FULL) { e830: 2a03 cmp r2, #3 e832: d1df bne.n e7f4 uint8_t * p = _lv_utils_bsearch(&rcp, fdsc->cmaps[i].unicode_list, fdsc->cmaps[i].list_length, e834: 8a3a ldrh r2, [r7, #16] e836: 68b9 ldr r1, [r7, #8] e838: 4b1b ldr r3, [pc, #108] ; (e8a8 ) e83a: 9300 str r3, [sp, #0] e83c: 2302 movs r3, #2 e83e: a805 add r0, sp, #20 e840: 4f1a ldr r7, [pc, #104] ; (e8ac ) e842: 47b8 blx r7 if(p) { e844: 2800 cmp r0, #0 e846: d028 beq.n e89a lv_uintptr_t ofs = (lv_uintptr_t)(p - (uint8_t *) fdsc->cmaps[i].unicode_list); e848: 9b03 ldr r3, [sp, #12] e84a: 68b2 ldr r2, [r6, #8] e84c: 4694 mov ip, r2 e84e: 4463 add r3, ip e850: 001d movs r5, r3 e852: 689b ldr r3, [r3, #8] e854: 1ac0 subs r0, r0, r3 ofs = ofs >> 1; /*The list stores `uint16_t` so the get the index divide by 2*/ e856: 0840 lsrs r0, r0, #1 glyph_id = fdsc->cmaps[i].glyph_id_start + gid_ofs_16[ofs]; e858: 68eb ldr r3, [r5, #12] e85a: 5c18 ldrb r0, [r3, r0] e85c: 88eb ldrh r3, [r5, #6] e85e: 18c3 adds r3, r0, r3 e860: e7c8 b.n e7f4 glyph_id = fdsc->cmaps[i].glyph_id_start + gid_ofs_8[rcp]; e862: 68fb ldr r3, [r7, #12] e864: 5c18 ldrb r0, [r3, r0] e866: 88fb ldrh r3, [r7, #6] e868: 18c3 adds r3, r0, r3 e86a: e7c3 b.n e7f4 uint8_t * p = _lv_utils_bsearch(&rcp, fdsc->cmaps[i].unicode_list, fdsc->cmaps[i].list_length, e86c: 8a3a ldrh r2, [r7, #16] e86e: 68b9 ldr r1, [r7, #8] e870: 4b0d ldr r3, [pc, #52] ; (e8a8 ) e872: 9300 str r3, [sp, #0] e874: 2302 movs r3, #2 e876: a805 add r0, sp, #20 e878: 4f0c ldr r7, [pc, #48] ; (e8ac ) e87a: 47b8 blx r7 if(p) { e87c: 2800 cmp r0, #0 e87e: d00a beq.n e896 lv_uintptr_t ofs = (lv_uintptr_t)(p - (uint8_t *) fdsc->cmaps[i].unicode_list); e880: 9b03 ldr r3, [sp, #12] e882: 68b2 ldr r2, [r6, #8] e884: 4694 mov ip, r2 e886: 4463 add r3, ip e888: 001d movs r5, r3 e88a: 689b ldr r3, [r3, #8] e88c: 1ac0 subs r0, r0, r3 ofs = ofs >> 1; /*The list stores `uint16_t` so the get the index divide by 2*/ e88e: 0840 lsrs r0, r0, #1 glyph_id = fdsc->cmaps[i].glyph_id_start + ofs; e890: 88eb ldrh r3, [r5, #6] e892: 18c3 adds r3, r0, r3 e894: e7ae b.n e7f4 uint32_t glyph_id = 0; e896: 2300 movs r3, #0 e898: e7ac b.n e7f4 e89a: 2300 movs r3, #0 e89c: e7aa b.n e7f4 fdsc->last_letter = letter; e89e: 61b4 str r4, [r6, #24] fdsc->last_glyph_id = 0; e8a0: 2300 movs r3, #0 e8a2: 61f3 str r3, [r6, #28] return 0; e8a4: e7a8 b.n e7f8 e8a6: 46c0 nop ; (mov r8, r8) e8a8: 0000e7b5 .word 0x0000e7b5 e8ac: 00011bf1 .word 0x00011bf1 0000e8b0 : { e8b0: b5f0 push {r4, r5, r6, r7, lr} e8b2: 46de mov lr, fp e8b4: 4657 mov r7, sl e8b6: 464e mov r6, r9 e8b8: 4645 mov r5, r8 e8ba: b5e0 push {r5, r6, r7, lr} e8bc: b099 sub sp, #100 ; 0x64 if(unicode_letter == '\t') unicode_letter = ' '; e8be: 2909 cmp r1, #9 e8c0: d01c beq.n e8fc lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; e8c2: 6905 ldr r5, [r0, #16] uint32_t gid = get_glyph_dsc_id(font, unicode_letter); e8c4: 4bcd ldr r3, [pc, #820] ; (ebfc ) e8c6: 4798 blx r3 if(!gid) return NULL; e8c8: 2800 cmp r0, #0 e8ca: d101 bne.n e8d0 e8cc: f000 fcdb bl f286 const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[gid]; e8d0: 00c0 lsls r0, r0, #3 e8d2: 686b ldr r3, [r5, #4] e8d4: 181e adds r6, r3, r0 if(fdsc->bitmap_format == LV_FONT_FMT_TXT_PLAIN) { e8d6: 7d2b ldrb r3, [r5, #20] e8d8: 079b lsls r3, r3, #30 e8da: d111 bne.n e900 if(gdsc) return &fdsc->glyph_bitmap[gdsc->bitmap_index]; e8dc: 2e00 cmp r6, #0 e8de: d101 bne.n e8e4 e8e0: f000 fcd4 bl f28c e8e4: 6830 ldr r0, [r6, #0] e8e6: 0300 lsls r0, r0, #12 e8e8: 0b03 lsrs r3, r0, #12 e8ea: 6828 ldr r0, [r5, #0] e8ec: 18c0 adds r0, r0, r3 } e8ee: b019 add sp, #100 ; 0x64 e8f0: bc3c pop {r2, r3, r4, r5} e8f2: 4690 mov r8, r2 e8f4: 4699 mov r9, r3 e8f6: 46a2 mov sl, r4 e8f8: 46ab mov fp, r5 e8fa: bdf0 pop {r4, r5, r6, r7, pc} if(unicode_letter == '\t') unicode_letter = ' '; e8fc: 3117 adds r1, #23 e8fe: e7e0 b.n e8c2 uint32_t gsize = gdsc->box_w * gdsc->box_h; e900: 7933 ldrb r3, [r6, #4] e902: 7974 ldrb r4, [r6, #5] e904: 435c muls r4, r3 if(gsize == 0) return NULL; e906: 2c00 cmp r4, #0 e908: d101 bne.n e90e e90a: f000 fcc2 bl f292 switch(fdsc->bpp) { e90e: 7ceb ldrb r3, [r5, #19] e910: 069b lsls r3, r3, #26 e912: 0f1b lsrs r3, r3, #28 e914: b2da uxtb r2, r3 e916: 2a02 cmp r2, #2 e918: d100 bne.n e91c e91a: e08d b.n ea38 e91c: d908 bls.n e930 e91e: b2da uxtb r2, r3 e920: 2a03 cmp r2, #3 e922: d100 bne.n e926 e924: e08b b.n ea3e e926: 2a04 cmp r2, #4 e928: d104 bne.n e934 buf_size = (gsize + 1) >> 1; e92a: 3401 adds r4, #1 e92c: 0864 lsrs r4, r4, #1 break; e92e: e001 b.n e934 switch(fdsc->bpp) { e930: 2a01 cmp r2, #1 e932: d07e beq.n ea32 if(_lv_mem_get_size(decompr_buf) < buf_size) { e934: 4bb2 ldr r3, [pc, #712] ; (ec00 ) e936: 6818 ldr r0, [r3, #0] e938: 4bb2 ldr r3, [pc, #712] ; (ec04 ) e93a: 4798 blx r3 e93c: 4284 cmp r4, r0 e93e: d90f bls.n e960 decompr_buf = lv_mem_realloc(decompr_buf, buf_size); e940: 4faf ldr r7, [pc, #700] ; (ec00 ) e942: 0021 movs r1, r4 e944: 6838 ldr r0, [r7, #0] e946: 4bb0 ldr r3, [pc, #704] ; (ec08 ) e948: 4798 blx r3 e94a: 6038 str r0, [r7, #0] LV_ASSERT_MEM(decompr_buf); e94c: 4baf ldr r3, [pc, #700] ; (ec0c ) e94e: 4798 blx r3 e950: 2800 cmp r0, #0 e952: d077 beq.n ea44 if(decompr_buf == NULL) return NULL; e954: 4baa ldr r3, [pc, #680] ; (ec00 ) e956: 681b ldr r3, [r3, #0] e958: 2b00 cmp r3, #0 e95a: d101 bne.n e960 e95c: f000 fc9c bl f298 decompress(&fdsc->glyph_bitmap[gdsc->bitmap_index], decompr_buf, gdsc->box_w, gdsc->box_h, (uint8_t)fdsc->bpp); e960: 6833 ldr r3, [r6, #0] e962: 031b lsls r3, r3, #12 e964: 0b1b lsrs r3, r3, #12 e966: 682a ldr r2, [r5, #0] e968: 18d2 adds r2, r2, r3 e96a: 4ba5 ldr r3, [pc, #660] ; (ec00 ) e96c: 681b ldr r3, [r3, #0] e96e: 9303 str r3, [sp, #12] e970: 7933 ldrb r3, [r6, #4] e972: 930d str r3, [sp, #52] ; 0x34 e974: b21b sxth r3, r3 e976: 9311 str r3, [sp, #68] ; 0x44 e978: 7973 ldrb r3, [r6, #5] e97a: 9310 str r3, [sp, #64] ; 0x40 e97c: b21b sxth r3, r3 e97e: 930e str r3, [sp, #56] ; 0x38 e980: 7ceb ldrb r3, [r5, #19] e982: 069b lsls r3, r3, #26 e984: 0f1b lsrs r3, r3, #28 e986: b2d9 uxtb r1, r3 e988: 9100 str r1, [sp, #0] uint8_t wr_size = bpp; e98a: 9106 str r1, [sp, #24] if(bpp == 3) wr_size = 4; e98c: 2903 cmp r1, #3 e98e: d060 beq.n ea52 rle_in = in; e990: 499f ldr r1, [pc, #636] ; (ec10 ) e992: 600a str r2, [r1, #0] rle_bpp = bpp; e994: 4a9f ldr r2, [pc, #636] ; (ec14 ) e996: 7013 strb r3, [r2, #0] rle_state = RLE_STATE_SINGLE; e998: 2300 movs r3, #0 e99a: 4a9f ldr r2, [pc, #636] ; (ec18 ) e99c: 7013 strb r3, [r2, #0] rle_rdp = 0; e99e: 4a9f ldr r2, [pc, #636] ; (ec1c ) e9a0: 6013 str r3, [r2, #0] rle_prev_v = 0; e9a2: 4a9f ldr r2, [pc, #636] ; (ec20 ) e9a4: 7013 strb r3, [r2, #0] rle_cnt = 0; e9a6: 4a9f ldr r2, [pc, #636] ; (ec24 ) e9a8: 7013 strb r3, [r2, #0] uint8_t * line_buf1 = _lv_mem_buf_get(w); e9aa: 9f0d ldr r7, [sp, #52] ; 0x34 e9ac: 0038 movs r0, r7 e9ae: 4c9e ldr r4, [pc, #632] ; (ec28 ) e9b0: 47a0 blx r4 e9b2: 0005 movs r5, r0 e9b4: 9017 str r0, [sp, #92] ; 0x5c uint8_t * line_buf2 = _lv_mem_buf_get(w); e9b6: 0038 movs r0, r7 e9b8: 47a0 blx r4 e9ba: 9001 str r0, [sp, #4] for(i = 0; i < w; i++) { e9bc: 9b11 ldr r3, [sp, #68] ; 0x44 e9be: 2b00 cmp r3, #0 e9c0: dc00 bgt.n e9c4 e9c2: e25e b.n ee82 e9c4: 4b96 ldr r3, [pc, #600] ; (ec20 ) e9c6: 781b ldrb r3, [r3, #0] e9c8: 9302 str r3, [sp, #8] e9ca: 4b96 ldr r3, [pc, #600] ; (ec24 ) e9cc: 781b ldrb r3, [r3, #0] e9ce: 469a mov sl, r3 ret = get_bits(rle_in, rle_rdp, rle_bpp); e9d0: 4b8f ldr r3, [pc, #572] ; (ec10 ) e9d2: 681e ldr r6, [r3, #0] e9d4: 4b91 ldr r3, [pc, #580] ; (ec1c ) e9d6: 6818 ldr r0, [r3, #0] e9d8: 4b8e ldr r3, [pc, #568] ; (ec14 ) e9da: 781b ldrb r3, [r3, #0] e9dc: 4699 mov r9, r3 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; e9de: 2301 movs r3, #1 e9e0: 4649 mov r1, r9 e9e2: 408b lsls r3, r1 e9e4: 3b01 subs r3, #1 e9e6: b2db uxtb r3, r3 e9e8: 930b str r3, [sp, #44] ; 0x2c e9ea: 2308 movs r3, #8 e9ec: 1a5b subs r3, r3, r1 e9ee: 930c str r3, [sp, #48] ; 0x30 e9f0: 2310 movs r3, #16 e9f2: 1a5b subs r3, r3, r1 e9f4: 930a str r3, [sp, #40] ; 0x28 e9f6: 4b88 ldr r3, [pc, #544] ; (ec18 ) e9f8: 781b ldrb r3, [r3, #0] e9fa: 469c mov ip, r3 e9fc: 002c movs r4, r5 e9fe: 003b movs r3, r7 ea00: 3b01 subs r3, #1 ea02: b29b uxth r3, r3 ea04: 3301 adds r3, #1 ea06: 930f str r3, [sp, #60] ; 0x3c ea08: 002a movs r2, r5 ea0a: 469b mov fp, r3 ea0c: 445a add r2, fp ea0e: 9209 str r2, [sp, #36] ; 0x24 if(bit_pos + len >= 8) { ea10: 2300 movs r3, #0 ea12: 9305 str r3, [sp, #20] ea14: 9308 str r3, [sp, #32] ea16: 2100 movs r1, #0 ea18: 9307 str r3, [sp, #28] switch(len) { ea1a: 464b mov r3, r9 ea1c: 009b lsls r3, r3, #2 ea1e: 469b mov fp, r3 ea20: 4b82 ldr r3, [pc, #520] ; (ec2c ) ea22: 445b add r3, fp ea24: 9312 str r3, [sp, #72] ; 0x48 ea26: 4653 mov r3, sl ea28: 9304 str r3, [sp, #16] ea2a: 46a8 mov r8, r5 ea2c: 4667 mov r7, ip ea2e: 464d mov r5, r9 ea30: e031 b.n ea96 buf_size = (gsize + 7) >> 3; ea32: 3407 adds r4, #7 ea34: 08e4 lsrs r4, r4, #3 break; ea36: e77d b.n e934 buf_size = (gsize + 3) >> 2; ea38: 3403 adds r4, #3 ea3a: 08a4 lsrs r4, r4, #2 break; ea3c: e77a b.n e934 buf_size = (gsize + 1) >> 1; ea3e: 3401 adds r4, #1 ea40: 0864 lsrs r4, r4, #1 break; ea42: e777 b.n e934 LV_ASSERT_MEM(decompr_buf); ea44: 4b6e ldr r3, [pc, #440] ; (ec00 ) ea46: 681a ldr r2, [r3, #0] ea48: 2300 movs r3, #0 ea4a: 4879 ldr r0, [pc, #484] ; (ec30 ) ea4c: 4979 ldr r1, [pc, #484] ; (ec34 ) ea4e: 4788 blx r1 ea50: e7fe b.n ea50 if(bpp == 3) wr_size = 4; ea52: 3101 adds r1, #1 ea54: 9106 str r1, [sp, #24] ea56: e79b b.n e990 bit_mask = 0x3; ea58: 2303 movs r3, #3 ea5a: 469c mov ip, r3 uint32_t byte_pos = bit_pos >> 3; ea5c: 08c3 lsrs r3, r0, #3 bit_pos = bit_pos & 0x7; ea5e: 2107 movs r1, #7 ea60: 4001 ands r1, r0 if(bit_pos + len >= 8) { ea62: 194a adds r2, r1, r5 ea64: 2a07 cmp r2, #7 ea66: d82f bhi.n eac8 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; ea68: 5cf3 ldrb r3, [r6, r3] ea6a: 9a0c ldr r2, [sp, #48] ; 0x30 ea6c: 1a51 subs r1, r2, r1 ea6e: 410b asrs r3, r1 ea70: 4662 mov r2, ip ea72: 401a ands r2, r3 ea74: 0013 movs r3, r2 if(rle_rdp != 0 && rle_prev_v == ret) { ea76: 2800 cmp r0, #0 ea78: d002 beq.n ea80 ea7a: 9a02 ldr r2, [sp, #8] ea7c: 4293 cmp r3, r2 ea7e: d031 beq.n eae4 rle_rdp += rle_bpp; ea80: 1940 adds r0, r0, r5 rle_prev_v = ret; ea82: 9302 str r3, [sp, #8] rle_rdp += rle_bpp; ea84: 2101 movs r1, #1 ea86: 2201 movs r2, #1 ea88: 9207 str r2, [sp, #28] out[i] = rle_next(); ea8a: 7023 strb r3, [r4, #0] ea8c: 3401 adds r4, #1 for(i = 0; i < w; i++) { ea8e: 9b09 ldr r3, [sp, #36] ; 0x24 ea90: 429c cmp r4, r3 ea92: d100 bne.n ea96 ea94: e14b b.n ed2e if(rle_state == RLE_STATE_SINGLE) { ea96: 2f00 cmp r7, #0 ea98: d12c bne.n eaf4 switch(len) { ea9a: 464b mov r3, r9 ea9c: 2b08 cmp r3, #8 ea9e: d80d bhi.n eabc eaa0: 4b65 ldr r3, [pc, #404] ; (ec38 ) eaa2: 465a mov r2, fp eaa4: 589b ldr r3, [r3, r2] eaa6: 9307 str r3, [sp, #28] eaa8: 469f mov pc, r3 bit_mask = 0x7; eaaa: 2307 movs r3, #7 eaac: 469c mov ip, r3 eaae: e7d5 b.n ea5c bit_mask = 0xF; eab0: 230f movs r3, #15 eab2: 469c mov ip, r3 eab4: e7d2 b.n ea5c bit_mask = 0xFF; eab6: 23ff movs r3, #255 ; 0xff eab8: 469c mov ip, r3 eaba: e7cf b.n ea5c bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; eabc: 9b0b ldr r3, [sp, #44] ; 0x2c eabe: 469c mov ip, r3 eac0: e7cc b.n ea5c bit_mask = 0x1; eac2: 2301 movs r3, #1 eac4: 469c mov ip, r3 eac6: e7c9 b.n ea5c uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; eac8: 5cf2 ldrb r2, [r6, r3] eaca: 0212 lsls r2, r2, #8 eacc: 4692 mov sl, r2 eace: 18f3 adds r3, r6, r3 ead0: 785b ldrb r3, [r3, #1] ead2: 4453 add r3, sl return (in16 >> (16 - bit_pos - len)) & bit_mask; ead4: b29b uxth r3, r3 ead6: 9a0a ldr r2, [sp, #40] ; 0x28 ead8: 1a51 subs r1, r2, r1 eada: 410b asrs r3, r1 eadc: 4662 mov r2, ip eade: 401a ands r2, r3 eae0: 0013 movs r3, r2 eae2: e7c8 b.n ea76 if(rle_rdp != 0 && rle_prev_v == ret) { eae4: 2201 movs r2, #1 eae6: 9205 str r2, [sp, #20] rle_cnt = 0; eae8: 2200 movs r2, #0 eaea: 9204 str r2, [sp, #16] if(rle_rdp != 0 && rle_prev_v == ret) { eaec: 3201 adds r2, #1 eaee: 9208 str r2, [sp, #32] rle_state = RLE_STATE_REPEATE; eaf0: 2701 movs r7, #1 eaf2: e7c5 b.n ea80 else if(rle_state == RLE_STATE_REPEATE) { eaf4: 2f01 cmp r7, #1 eaf6: d011 beq.n eb1c uint8_t ret = 0; eaf8: 2300 movs r3, #0 else if(rle_state == RLE_STATE_COUNTER) { eafa: 2f02 cmp r7, #2 eafc: d1c5 bne.n ea8a rle_cnt--; eafe: 9a04 ldr r2, [sp, #16] eb00: 3a01 subs r2, #1 eb02: b2d3 uxtb r3, r2 eb04: 9304 str r3, [sp, #16] if(rle_cnt == 0) { eb06: 2b00 cmp r3, #0 eb08: d000 beq.n eb0c eb0a: e10c b.n ed26 switch(len) { eb0c: 464b mov r3, r9 eb0e: 2b08 cmp r3, #8 eb10: d900 bls.n eb14 eb12: e0f1 b.n ecf8 eb14: 9b12 ldr r3, [sp, #72] ; 0x48 eb16: 681b ldr r3, [r3, #0] eb18: 9302 str r3, [sp, #8] eb1a: 469f mov pc, r3 uint32_t byte_pos = bit_pos >> 3; eb1c: 08c3 lsrs r3, r0, #3 bit_pos = bit_pos & 0x7; eb1e: 2107 movs r1, #7 eb20: 4001 ands r1, r0 if(bit_pos + len >= 8) { eb22: 1c4a adds r2, r1, #1 eb24: 2a07 cmp r2, #7 eb26: d815 bhi.n eb54 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; eb28: 5cf3 ldrb r3, [r6, r3] eb2a: 43c9 mvns r1, r1 eb2c: 3108 adds r1, #8 eb2e: 410b asrs r3, r1 eb30: 2201 movs r2, #1 eb32: 4013 ands r3, r2 rle_cnt++; eb34: 9a04 ldr r2, [sp, #16] eb36: 3201 adds r2, #1 eb38: b2d2 uxtb r2, r2 eb3a: 9204 str r2, [sp, #16] rle_rdp += 1; eb3c: 1c41 adds r1, r0, #1 if(v == 1) { eb3e: 2b01 cmp r3, #1 eb40: d015 beq.n eb6e switch(len) { eb42: 464b mov r3, r9 eb44: 2b08 cmp r3, #8 eb46: d900 bls.n eb4a eb48: e0ab b.n eca2 eb4a: 4b3c ldr r3, [pc, #240] ; (ec3c ) eb4c: 465a mov r2, fp eb4e: 589b ldr r3, [r3, r2] eb50: 9302 str r3, [sp, #8] eb52: 469f mov pc, r3 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; eb54: 5cf2 ldrb r2, [r6, r3] eb56: 0212 lsls r2, r2, #8 eb58: 4694 mov ip, r2 eb5a: 18f3 adds r3, r6, r3 eb5c: 785b ldrb r3, [r3, #1] eb5e: 4463 add r3, ip return (in16 >> (16 - bit_pos - len)) & bit_mask; eb60: b29b uxth r3, r3 eb62: 43c9 mvns r1, r1 eb64: 3110 adds r1, #16 eb66: 410b asrs r3, r1 eb68: 2201 movs r2, #1 eb6a: 4013 ands r3, r2 eb6c: e7e2 b.n eb34 if(rle_cnt == 11) { eb6e: 2a0b cmp r2, #11 eb70: d005 beq.n eb7e rle_rdp += 1; eb72: 0008 movs r0, r1 ret = rle_prev_v; eb74: 9b02 ldr r3, [sp, #8] if(rle_cnt == 11) { eb76: 2201 movs r2, #1 eb78: 9205 str r2, [sp, #20] eb7a: 2101 movs r1, #1 eb7c: e785 b.n ea8a uint32_t byte_pos = bit_pos >> 3; eb7e: 08cb lsrs r3, r1, #3 bit_pos = bit_pos & 0x7; eb80: 2207 movs r2, #7 eb82: 4011 ands r1, r2 if(bit_pos + len >= 8) { eb84: 1d8a adds r2, r1, #6 eb86: 2a07 cmp r2, #7 eb88: d813 bhi.n ebb2 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; eb8a: 5cf2 ldrb r2, [r6, r3] eb8c: 2302 movs r3, #2 eb8e: 1a59 subs r1, r3, r1 eb90: 410a asrs r2, r1 eb92: 333d adds r3, #61 ; 0x3d eb94: 401a ands r2, r3 eb96: 9204 str r2, [sp, #16] rle_rdp += 6; eb98: 3007 adds r0, #7 if(rle_cnt != 0) { eb9a: 9b04 ldr r3, [sp, #16] eb9c: 2b00 cmp r3, #0 eb9e: d000 beq.n eba2 eba0: e0ba b.n ed18 switch(len) { eba2: 464b mov r3, r9 eba4: 2b08 cmp r3, #8 eba6: d824 bhi.n ebf2 eba8: 4b25 ldr r3, [pc, #148] ; (ec40 ) ebaa: 465a mov r2, fp ebac: 589b ldr r3, [r3, r2] ebae: 9302 str r3, [sp, #8] ebb0: 469f mov pc, r3 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; ebb2: 5cf2 ldrb r2, [r6, r3] ebb4: 0212 lsls r2, r2, #8 ebb6: 18f3 adds r3, r6, r3 ebb8: 785b ldrb r3, [r3, #1] ebba: 189a adds r2, r3, r2 return (in16 >> (16 - bit_pos - len)) & bit_mask; ebbc: b292 uxth r2, r2 ebbe: 230a movs r3, #10 ebc0: 1a59 subs r1, r3, r1 ebc2: 410a asrs r2, r1 ebc4: 3335 adds r3, #53 ; 0x35 ebc6: 401a ands r2, r3 ebc8: 9204 str r2, [sp, #16] ebca: e7e5 b.n eb98 bit_mask = 0x3; ebcc: 2303 movs r3, #3 uint32_t byte_pos = bit_pos >> 3; ebce: 08c7 lsrs r7, r0, #3 bit_pos = bit_pos & 0x7; ebd0: 2107 movs r1, #7 ebd2: 4001 ands r1, r0 if(bit_pos + len >= 8) { ebd4: 194a adds r2, r1, r5 ebd6: 2a07 cmp r2, #7 ebd8: d834 bhi.n ec44 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; ebda: 5df7 ldrb r7, [r6, r7] ebdc: 9a0c ldr r2, [sp, #48] ; 0x30 ebde: 1a51 subs r1, r2, r1 ebe0: 410f asrs r7, r1 ebe2: 403b ands r3, r7 ebe4: e039 b.n ec5a bit_mask = 0x7; ebe6: 2307 movs r3, #7 ebe8: e7f1 b.n ebce bit_mask = 0xF; ebea: 230f movs r3, #15 ebec: e7ef b.n ebce bit_mask = 0xFF; ebee: 23ff movs r3, #255 ; 0xff ebf0: e7ed b.n ebce bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; ebf2: 9b0b ldr r3, [sp, #44] ; 0x2c ebf4: e7eb b.n ebce bit_mask = 0x1; ebf6: 2301 movs r3, #1 ebf8: e7e9 b.n ebce ebfa: 46c0 nop ; (mov r8, r8) ebfc: 0000e7bd .word 0x0000e7bd ec00: 20002bb8 .word 0x20002bb8 ec04: 00010bb5 .word 0x00010bb5 ec08: 00010e45 .word 0x00010e45 ec0c: 0000147d .word 0x0000147d ec10: 20002bc0 .word 0x20002bc0 ec14: 20002bbc .word 0x20002bbc ec18: 20002bcc .word 0x20002bcc ec1c: 20002bc8 .word 0x20002bc8 ec20: 20002bc4 .word 0x20002bc4 ec24: 20002bbd .word 0x20002bbd ec28: 00010ec1 .word 0x00010ec1 ec2c: 00018984 .word 0x00018984 ec30: 00018724 .word 0x00018724 ec34: 00001485 .word 0x00001485 ec38: 00018960 .word 0x00018960 ec3c: 000189a8 .word 0x000189a8 ec40: 000189cc .word 0x000189cc uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; ec44: 5df2 ldrb r2, [r6, r7] ec46: 0212 lsls r2, r2, #8 ec48: 4694 mov ip, r2 ec4a: 19f7 adds r7, r6, r7 ec4c: 787f ldrb r7, [r7, #1] ec4e: 4467 add r7, ip return (in16 >> (16 - bit_pos - len)) & bit_mask; ec50: b2bf uxth r7, r7 ec52: 9a0a ldr r2, [sp, #40] ; 0x28 ec54: 1a51 subs r1, r2, r1 ec56: 410f asrs r7, r1 ec58: 403b ands r3, r7 rle_rdp += rle_bpp; ec5a: 1940 adds r0, r0, r5 rle_prev_v = ret; ec5c: 9302 str r3, [sp, #8] rle_rdp += rle_bpp; ec5e: 2201 movs r2, #1 ec60: 9205 str r2, [sp, #20] ec62: 9208 str r2, [sp, #32] rle_state = RLE_STATE_SINGLE; ec64: 2700 movs r7, #0 rle_rdp += rle_bpp; ec66: 2101 movs r1, #1 ec68: 9207 str r2, [sp, #28] ec6a: e70e b.n ea8a bit_mask = 0x3; ec6c: 2303 movs r3, #3 uint32_t byte_pos = bit_pos >> 3; ec6e: 08cf lsrs r7, r1, #3 bit_pos = bit_pos & 0x7; ec70: 2007 movs r0, #7 ec72: 4008 ands r0, r1 if(bit_pos + len >= 8) { ec74: 1942 adds r2, r0, r5 ec76: 2a07 cmp r2, #7 ec78: d817 bhi.n ecaa return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; ec7a: 5df7 ldrb r7, [r6, r7] ec7c: 9a0c ldr r2, [sp, #48] ; 0x30 ec7e: 1a10 subs r0, r2, r0 ec80: 4107 asrs r7, r0 ec82: 403b ands r3, r7 rle_rdp += rle_bpp; ec84: 1948 adds r0, r1, r5 rle_prev_v = ret; ec86: 9302 str r3, [sp, #8] rle_rdp += rle_bpp; ec88: 2201 movs r2, #1 ec8a: 9205 str r2, [sp, #20] ec8c: 9208 str r2, [sp, #32] rle_state = RLE_STATE_SINGLE; ec8e: 2700 movs r7, #0 rle_rdp += rle_bpp; ec90: 2101 movs r1, #1 ec92: 9207 str r2, [sp, #28] ec94: e6f9 b.n ea8a bit_mask = 0x7; ec96: 2307 movs r3, #7 ec98: e7e9 b.n ec6e bit_mask = 0xF; ec9a: 230f movs r3, #15 ec9c: e7e7 b.n ec6e bit_mask = 0xFF; ec9e: 23ff movs r3, #255 ; 0xff eca0: e7e5 b.n ec6e bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; eca2: 9b0b ldr r3, [sp, #44] ; 0x2c eca4: e7e3 b.n ec6e bit_mask = 0x1; eca6: 2301 movs r3, #1 eca8: e7e1 b.n ec6e uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; ecaa: 5df2 ldrb r2, [r6, r7] ecac: 0212 lsls r2, r2, #8 ecae: 4694 mov ip, r2 ecb0: 19f7 adds r7, r6, r7 ecb2: 787f ldrb r7, [r7, #1] ecb4: 4467 add r7, ip return (in16 >> (16 - bit_pos - len)) & bit_mask; ecb6: b2bf uxth r7, r7 ecb8: 9a0a ldr r2, [sp, #40] ; 0x28 ecba: 1a10 subs r0, r2, r0 ecbc: 4107 asrs r7, r0 ecbe: 403b ands r3, r7 ecc0: e7e0 b.n ec84 bit_mask = 0x3; ecc2: 2303 movs r3, #3 uint32_t byte_pos = bit_pos >> 3; ecc4: 08c7 lsrs r7, r0, #3 bit_pos = bit_pos & 0x7; ecc6: 2107 movs r1, #7 ecc8: 4001 ands r1, r0 if(bit_pos + len >= 8) { ecca: 194a adds r2, r1, r5 eccc: 2a07 cmp r2, #7 ecce: d817 bhi.n ed00 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; ecd0: 5df7 ldrb r7, [r6, r7] ecd2: 9a0c ldr r2, [sp, #48] ; 0x30 ecd4: 1a51 subs r1, r2, r1 ecd6: 410f asrs r7, r1 ecd8: 403b ands r3, r7 rle_rdp += rle_bpp; ecda: 1940 adds r0, r0, r5 rle_prev_v = ret; ecdc: 9302 str r3, [sp, #8] rle_rdp += rle_bpp; ecde: 2201 movs r2, #1 ece0: 9205 str r2, [sp, #20] ece2: 9208 str r2, [sp, #32] rle_state = RLE_STATE_SINGLE; ece4: 2700 movs r7, #0 rle_rdp += rle_bpp; ece6: 2101 movs r1, #1 ece8: 9207 str r2, [sp, #28] ecea: e6ce b.n ea8a bit_mask = 0x7; ecec: 2307 movs r3, #7 ecee: e7e9 b.n ecc4 bit_mask = 0xF; ecf0: 230f movs r3, #15 ecf2: e7e7 b.n ecc4 bit_mask = 0xFF; ecf4: 23ff movs r3, #255 ; 0xff ecf6: e7e5 b.n ecc4 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; ecf8: 9b0b ldr r3, [sp, #44] ; 0x2c ecfa: e7e3 b.n ecc4 bit_mask = 0x1; ecfc: 2301 movs r3, #1 ecfe: e7e1 b.n ecc4 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; ed00: 5df2 ldrb r2, [r6, r7] ed02: 0212 lsls r2, r2, #8 ed04: 4694 mov ip, r2 ed06: 19f7 adds r7, r6, r7 ed08: 787f ldrb r7, [r7, #1] ed0a: 4467 add r7, ip return (in16 >> (16 - bit_pos - len)) & bit_mask; ed0c: b2bf uxth r7, r7 ed0e: 9a0a ldr r2, [sp, #40] ; 0x28 ed10: 1a51 subs r1, r2, r1 ed12: 410f asrs r7, r1 ed14: 403b ands r3, r7 ed16: e7e0 b.n ecda ret = rle_prev_v; ed18: 9b02 ldr r3, [sp, #8] if(rle_cnt != 0) { ed1a: 2201 movs r2, #1 ed1c: 9205 str r2, [sp, #20] ed1e: 9208 str r2, [sp, #32] rle_state = RLE_STATE_COUNTER; ed20: 2702 movs r7, #2 if(rle_cnt != 0) { ed22: 2101 movs r1, #1 ed24: e6b1 b.n ea8a ret = rle_prev_v; ed26: 9b02 ldr r3, [sp, #8] if(rle_cnt == 0) { ed28: 2201 movs r2, #1 ed2a: 9205 str r2, [sp, #20] ed2c: e6ad b.n ea8a ed2e: 9b04 ldr r3, [sp, #16] ed30: 469a mov sl, r3 ed32: 4645 mov r5, r8 ed34: 46bc mov ip, r7 ed36: 9b07 ldr r3, [sp, #28] ed38: 2b00 cmp r3, #0 ed3a: d114 bne.n ed66 ed3c: 2900 cmp r1, #0 ed3e: d001 beq.n ed44 ed40: 4bcc ldr r3, [pc, #816] ; (f074 ) ed42: 6018 str r0, [r3, #0] ed44: 9b08 ldr r3, [sp, #32] ed46: 2b00 cmp r3, #0 ed48: d002 beq.n ed50 ed4a: 4bcb ldr r3, [pc, #812] ; (f078 ) ed4c: 4662 mov r2, ip ed4e: 701a strb r2, [r3, #0] ed50: 9b05 ldr r3, [sp, #20] ed52: 2b00 cmp r3, #0 ed54: d002 beq.n ed5c ed56: 4bc9 ldr r3, [pc, #804] ; (f07c ) ed58: 4652 mov r2, sl ed5a: 701a strb r2, [r3, #0] rle_rdp += rle_bpp; ed5c: 2600 movs r6, #0 if(len == 3) { ed5e: 9b00 ldr r3, [sp, #0] ed60: 9302 str r3, [sp, #8] val = 6; ed62: 002f movs r7, r5 ed64: e023 b.n edae ed66: 4bc6 ldr r3, [pc, #792] ; (f080 ) ed68: 466a mov r2, sp ed6a: 7a12 ldrb r2, [r2, #8] ed6c: 701a strb r2, [r3, #0] ed6e: e7e5 b.n ed3c len = 4; ed70: 2304 movs r3, #4 val = 0; ed72: 2200 movs r2, #0 bit_pos = bit_pos & 0x7; ed74: 2107 movs r1, #7 ed76: 4031 ands r1, r6 ed78: 2508 movs r5, #8 ed7a: 1a6d subs r5, r5, r1 bit_pos = 8 - bit_pos - len; ed7c: 1aed subs r5, r5, r3 out[byte_pos] &= ((~bit_mask) << bit_pos); ed7e: 0371 lsls r1, r6, #13 ed80: 0c09 lsrs r1, r1, #16 ed82: 9803 ldr r0, [sp, #12] ed84: 4684 mov ip, r0 ed86: 4461 add r1, ip uint8_t bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; ed88: 2001 movs r0, #1 ed8a: 4098 lsls r0, r3 ed8c: 0003 movs r3, r0 ed8e: 3b01 subs r3, #1 out[byte_pos] &= ((~bit_mask) << bit_pos); ed90: b2db uxtb r3, r3 ed92: 43db mvns r3, r3 ed94: 40ab lsls r3, r5 ed96: 7808 ldrb r0, [r1, #0] ed98: 4003 ands r3, r0 out[byte_pos] |= (val << bit_pos); ed9a: 40aa lsls r2, r5 ed9c: 431a orrs r2, r3 ed9e: 700a strb r2, [r1, #0] wrp += wr_size; eda0: 9a06 ldr r2, [sp, #24] eda2: 0013 movs r3, r2 eda4: 4694 mov ip, r2 eda6: 4466 add r6, ip eda8: 3701 adds r7, #1 for(x = 0; x < w; x++) { edaa: 42a7 cmp r7, r4 edac: d021 beq.n edf2 bits_write(out, wrp, line_buf1[x], bpp); edae: 783a ldrb r2, [r7, #0] if(len == 3) { edb0: 9b02 ldr r3, [sp, #8] edb2: 9900 ldr r1, [sp, #0] edb4: 2903 cmp r1, #3 edb6: d1dd bne.n ed74 switch(val) { edb8: 2a07 cmp r2, #7 edba: d818 bhi.n edee edbc: 0092 lsls r2, r2, #2 edbe: 4bb1 ldr r3, [pc, #708] ; (f084 ) edc0: 589b ldr r3, [r3, r2] edc2: 469f mov pc, r3 len = 4; edc4: 2304 movs r3, #4 val = 2; edc6: 2202 movs r2, #2 edc8: e7d4 b.n ed74 len = 4; edca: 2304 movs r3, #4 val = 4; edcc: 2204 movs r2, #4 edce: e7d1 b.n ed74 len = 4; edd0: 2304 movs r3, #4 val = 6; edd2: 2206 movs r2, #6 edd4: e7ce b.n ed74 len = 4; edd6: 2304 movs r3, #4 val = 9; edd8: 2209 movs r2, #9 edda: e7cb b.n ed74 len = 4; eddc: 2304 movs r3, #4 val = 11; edde: 220b movs r2, #11 ede0: e7c8 b.n ed74 len = 4; ede2: 2304 movs r3, #4 val = 13; ede4: 220d movs r2, #13 ede6: e7c5 b.n ed74 len = 4; ede8: 2304 movs r3, #4 val = 15; edea: 220f movs r2, #15 edec: e7c2 b.n ed74 len = 4; edee: 2304 movs r3, #4 edf0: e7c0 b.n ed74 edf2: 9a0f ldr r2, [sp, #60] ; 0x3c edf4: 435a muls r2, r3 edf6: 920f str r2, [sp, #60] ; 0x3c for(y = 1; y < h; y++) { edf8: 9b0e ldr r3, [sp, #56] ; 0x38 edfa: 2b01 cmp r3, #1 edfc: dc00 bgt.n ee00 edfe: e234 b.n f26a ret = get_bits(rle_in, rle_rdp, rle_bpp); ee00: 4ba1 ldr r3, [pc, #644] ; (f088 ) ee02: 681b ldr r3, [r3, #0] ee04: 001e movs r6, r3 ee06: 4ba1 ldr r3, [pc, #644] ; (f08c ) ee08: 781b ldrb r3, [r3, #0] ee0a: 001a movs r2, r3 ee0c: 9309 str r3, [sp, #36] ; 0x24 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; ee0e: 2301 movs r3, #1 ee10: 4093 lsls r3, r2 ee12: 3b01 subs r3, #1 ee14: b2db uxtb r3, r3 ee16: 9312 str r3, [sp, #72] ; 0x48 if(bit_pos + len >= 8) { ee18: 4692 mov sl, r2 ee1a: 4b98 ldr r3, [pc, #608] ; (f07c ) ee1c: 781b ldrb r3, [r3, #0] ee1e: 4698 mov r8, r3 ee20: 2308 movs r3, #8 ee22: 1a9b subs r3, r3, r2 ee24: 930c str r3, [sp, #48] ; 0x30 ee26: 2310 movs r3, #16 ee28: 1a9b subs r3, r3, r2 ee2a: 930e str r3, [sp, #56] ; 0x38 ee2c: 4b94 ldr r3, [pc, #592] ; (f080 ) ee2e: 781b ldrb r3, [r3, #0] ee30: 9302 str r3, [sp, #8] ee32: 4b90 ldr r3, [pc, #576] ; (f074 ) ee34: 6818 ldr r0, [r3, #0] ee36: 4b90 ldr r3, [pc, #576] ; (f078 ) ee38: 7819 ldrb r1, [r3, #0] ee3a: 9b10 ldr r3, [sp, #64] ; 0x40 ee3c: 3b02 subs r3, #2 ee3e: b29b uxth r3, r3 ee40: 3301 adds r3, #1 ee42: 9313 str r3, [sp, #76] ; 0x4c ee44: 9c06 ldr r4, [sp, #24] ee46: 9404 str r4, [sp, #16] ee48: 9b0d ldr r3, [sp, #52] ; 0x34 ee4a: 3b01 subs r3, #1 ee4c: b29b uxth r3, r3 ee4e: 001d movs r5, r3 ee50: 9314 str r3, [sp, #80] ; 0x50 ee52: 0023 movs r3, r4 ee54: 436b muls r3, r5 ee56: 9315 str r3, [sp, #84] ; 0x54 ee58: 2300 movs r3, #0 ee5a: 9310 str r3, [sp, #64] ; 0x40 ee5c: 930b str r3, [sp, #44] ; 0x2c ee5e: 930d str r3, [sp, #52] ; 0x34 ee60: 9307 str r3, [sp, #28] ee62: 9308 str r3, [sp, #32] switch(len) { ee64: 0093 lsls r3, r2, #2 ee66: 930a str r3, [sp, #40] ; 0x28 ee68: 4a89 ldr r2, [pc, #548] ; (f090 ) ee6a: 469c mov ip, r3 ee6c: 4462 add r2, ip ee6e: 9216 str r2, [sp, #88] ; 0x58 ee70: 9b11 ldr r3, [sp, #68] ; 0x44 ee72: 469b mov fp, r3 ee74: 4643 mov r3, r8 ee76: 9306 str r3, [sp, #24] ee78: 9b17 ldr r3, [sp, #92] ; 0x5c ee7a: 001d movs r5, r3 ee7c: 468c mov ip, r1 ee7e: 46b1 mov r9, r6 ee80: e1cf b.n f222 for(i = 0; i < w; i++) { ee82: 2300 movs r3, #0 ee84: 930f str r3, [sp, #60] ; 0x3c ee86: e7b7 b.n edf8 bit_mask = 0x3; ee88: 2303 movs r3, #3 ee8a: e008 b.n ee9e bit_mask = 0x7; ee8c: 2307 movs r3, #7 ee8e: e006 b.n ee9e bit_mask = 0xF; ee90: 230f movs r3, #15 ee92: e004 b.n ee9e bit_mask = 0xFF; ee94: 23ff movs r3, #255 ; 0xff ee96: e002 b.n ee9e bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; ee98: 9b12 ldr r3, [sp, #72] ; 0x48 ee9a: e000 b.n ee9e bit_mask = 0x1; ee9c: 2301 movs r3, #1 uint32_t byte_pos = bit_pos >> 3; ee9e: 08c5 lsrs r5, r0, #3 bit_pos = bit_pos & 0x7; eea0: 2207 movs r2, #7 eea2: 4002 ands r2, r0 if(bit_pos + len >= 8) { eea4: 1997 adds r7, r2, r6 eea6: 2f07 cmp r7, #7 eea8: d81f bhi.n eeea return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; eeaa: 464f mov r7, r9 eeac: 5d7d ldrb r5, [r7, r5] eeae: 9f0c ldr r7, [sp, #48] ; 0x30 eeb0: 1aba subs r2, r7, r2 eeb2: 4115 asrs r5, r2 eeb4: 402b ands r3, r5 eeb6: b2db uxtb r3, r3 if(rle_rdp != 0 && rle_prev_v == ret) { eeb8: 2800 cmp r0, #0 eeba: d002 beq.n eec2 eebc: 9a02 ldr r2, [sp, #8] eebe: 429a cmp r2, r3 eec0: d021 beq.n ef06 rle_rdp += rle_bpp; eec2: 1980 adds r0, r0, r6 rle_prev_v = ret; eec4: 9302 str r3, [sp, #8] rle_rdp += rle_bpp; eec6: 2201 movs r2, #1 eec8: 9207 str r2, [sp, #28] eeca: 9208 str r2, [sp, #32] out[i] = rle_next(); eecc: 7023 strb r3, [r4, #0] eece: 3401 adds r4, #1 for(i = 0; i < w; i++) { eed0: 4564 cmp r4, ip eed2: d100 bne.n eed6 eed4: e141 b.n f15a if(rle_state == RLE_STATE_SINGLE) { eed6: 2900 cmp r1, #0 eed8: d11d bne.n ef16 switch(len) { eeda: 9b09 ldr r3, [sp, #36] ; 0x24 eedc: 2b08 cmp r3, #8 eede: d8db bhi.n ee98 eee0: 9b0a ldr r3, [sp, #40] ; 0x28 eee2: 4a6c ldr r2, [pc, #432] ; (f094 ) eee4: 58d3 ldr r3, [r2, r3] eee6: 9305 str r3, [sp, #20] eee8: 469f mov pc, r3 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; eeea: 464f mov r7, r9 eeec: 5d7f ldrb r7, [r7, r5] eeee: 023f lsls r7, r7, #8 eef0: 46ba mov sl, r7 eef2: 444d add r5, r9 eef4: 786d ldrb r5, [r5, #1] eef6: 4455 add r5, sl return (in16 >> (16 - bit_pos - len)) & bit_mask; eef8: b2ad uxth r5, r5 eefa: 9f0e ldr r7, [sp, #56] ; 0x38 eefc: 1aba subs r2, r7, r2 eefe: 4115 asrs r5, r2 ef00: 402b ands r3, r5 ef02: b2db uxtb r3, r3 ef04: e7d8 b.n eeb8 if(rle_rdp != 0 && rle_prev_v == ret) { ef06: 2201 movs r2, #1 ef08: 920b str r2, [sp, #44] ; 0x2c rle_cnt = 0; ef0a: 2200 movs r2, #0 ef0c: 9206 str r2, [sp, #24] if(rle_rdp != 0 && rle_prev_v == ret) { ef0e: 3201 adds r2, #1 ef10: 920d str r2, [sp, #52] ; 0x34 rle_state = RLE_STATE_REPEATE; ef12: 2101 movs r1, #1 ef14: e7d5 b.n eec2 else if(rle_state == RLE_STATE_REPEATE) { ef16: 2901 cmp r1, #1 ef18: d011 beq.n ef3e uint8_t ret = 0; ef1a: 2300 movs r3, #0 else if(rle_state == RLE_STATE_COUNTER) { ef1c: 2902 cmp r1, #2 ef1e: d1d5 bne.n eecc rle_cnt--; ef20: 9b06 ldr r3, [sp, #24] ef22: 3b01 subs r3, #1 ef24: b2db uxtb r3, r3 ef26: 9306 str r3, [sp, #24] if(rle_cnt == 0) { ef28: 2b00 cmp r3, #0 ef2a: d000 beq.n ef2e ef2c: e111 b.n f152 switch(len) { ef2e: 9b09 ldr r3, [sp, #36] ; 0x24 ef30: 2b08 cmp r3, #8 ef32: d900 bls.n ef36 ef34: e0e0 b.n f0f8 ef36: 9b16 ldr r3, [sp, #88] ; 0x58 ef38: 681b ldr r3, [r3, #0] ef3a: 9302 str r3, [sp, #8] ef3c: 469f mov pc, r3 uint32_t byte_pos = bit_pos >> 3; ef3e: 08c3 lsrs r3, r0, #3 bit_pos = bit_pos & 0x7; ef40: 2207 movs r2, #7 ef42: 4002 ands r2, r0 if(bit_pos + len >= 8) { ef44: 1c55 adds r5, r2, #1 ef46: 2d07 cmp r5, #7 ef48: d816 bhi.n ef78 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; ef4a: 464d mov r5, r9 ef4c: 5ceb ldrb r3, [r5, r3] ef4e: 43d2 mvns r2, r2 ef50: 3208 adds r2, #8 ef52: 4113 asrs r3, r2 ef54: 2201 movs r2, #1 ef56: 4013 ands r3, r2 rle_cnt++; ef58: 9a06 ldr r2, [sp, #24] ef5a: 3201 adds r2, #1 ef5c: b2d2 uxtb r2, r2 ef5e: 9206 str r2, [sp, #24] rle_rdp += 1; ef60: 1c45 adds r5, r0, #1 if(v == 1) { ef62: 2b01 cmp r3, #1 ef64: d015 beq.n ef92 switch(len) { ef66: 9b09 ldr r3, [sp, #36] ; 0x24 ef68: 2b08 cmp r3, #8 ef6a: d900 bls.n ef6e ef6c: e080 b.n f070 ef6e: 4b4a ldr r3, [pc, #296] ; (f098 ) ef70: 9a0a ldr r2, [sp, #40] ; 0x28 ef72: 589b ldr r3, [r3, r2] ef74: 9302 str r3, [sp, #8] ef76: 469f mov pc, r3 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; ef78: 464d mov r5, r9 ef7a: 5ced ldrb r5, [r5, r3] ef7c: 022d lsls r5, r5, #8 ef7e: 444b add r3, r9 ef80: 785b ldrb r3, [r3, #1] ef82: 195b adds r3, r3, r5 return (in16 >> (16 - bit_pos - len)) & bit_mask; ef84: b29b uxth r3, r3 ef86: 43d2 mvns r2, r2 ef88: 3210 adds r2, #16 ef8a: 4113 asrs r3, r2 ef8c: 2201 movs r2, #1 ef8e: 4013 ands r3, r2 ef90: e7e2 b.n ef58 if(rle_cnt == 11) { ef92: 2a0b cmp r2, #11 ef94: d005 beq.n efa2 rle_rdp += 1; ef96: 0028 movs r0, r5 ret = rle_prev_v; ef98: 9b02 ldr r3, [sp, #8] if(rle_cnt == 11) { ef9a: 2201 movs r2, #1 ef9c: 920b str r2, [sp, #44] ; 0x2c ef9e: 9207 str r2, [sp, #28] efa0: e794 b.n eecc uint32_t byte_pos = bit_pos >> 3; efa2: 08eb lsrs r3, r5, #3 bit_pos = bit_pos & 0x7; efa4: 2207 movs r2, #7 efa6: 4015 ands r5, r2 if(bit_pos + len >= 8) { efa8: 1daa adds r2, r5, #6 efaa: 2a07 cmp r2, #7 efac: d814 bhi.n efd8 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; efae: 464a mov r2, r9 efb0: 5cd3 ldrb r3, [r2, r3] efb2: 2202 movs r2, #2 efb4: 1b55 subs r5, r2, r5 efb6: 412b asrs r3, r5 efb8: 323d adds r2, #61 ; 0x3d efba: 401a ands r2, r3 efbc: 9206 str r2, [sp, #24] rle_rdp += 6; efbe: 3007 adds r0, #7 if(rle_cnt != 0) { efc0: 9b06 ldr r3, [sp, #24] efc2: 2b00 cmp r3, #0 efc4: d000 beq.n efc8 efc6: e0bd b.n f144 switch(len) { efc8: 9b09 ldr r3, [sp, #36] ; 0x24 efca: 2b08 cmp r3, #8 efcc: d834 bhi.n f038 efce: 4b33 ldr r3, [pc, #204] ; (f09c ) efd0: 9a0a ldr r2, [sp, #40] ; 0x28 efd2: 589b ldr r3, [r3, r2] efd4: 9302 str r3, [sp, #8] efd6: 469f mov pc, r3 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; efd8: 464a mov r2, r9 efda: 5cd2 ldrb r2, [r2, r3] efdc: 0212 lsls r2, r2, #8 efde: 444b add r3, r9 efe0: 785b ldrb r3, [r3, #1] efe2: 189b adds r3, r3, r2 return (in16 >> (16 - bit_pos - len)) & bit_mask; efe4: b29b uxth r3, r3 efe6: 220a movs r2, #10 efe8: 1b55 subs r5, r2, r5 efea: 412b asrs r3, r5 efec: 3235 adds r2, #53 ; 0x35 efee: 401a ands r2, r3 eff0: 9206 str r2, [sp, #24] eff2: e7e4 b.n efbe bit_mask = 0x3; eff4: 2303 movs r3, #3 eff6: 469a mov sl, r3 uint32_t byte_pos = bit_pos >> 3; eff8: 08c5 lsrs r5, r0, #3 bit_pos = bit_pos & 0x7; effa: 2307 movs r3, #7 effc: 4003 ands r3, r0 if(bit_pos + len >= 8) { effe: 199a adds r2, r3, r6 f000: 2a07 cmp r2, #7 f002: d81f bhi.n f044 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; f004: 464a mov r2, r9 f006: 5d52 ldrb r2, [r2, r5] f008: 990c ldr r1, [sp, #48] ; 0x30 f00a: 1acb subs r3, r1, r3 f00c: 411a asrs r2, r3 f00e: 4653 mov r3, sl f010: 4013 ands r3, r2 f012: b2db uxtb r3, r3 rle_rdp += rle_bpp; f014: 1980 adds r0, r0, r6 rle_prev_v = ret; f016: 9302 str r3, [sp, #8] rle_rdp += rle_bpp; f018: 2201 movs r2, #1 f01a: 920b str r2, [sp, #44] ; 0x2c f01c: 920d str r2, [sp, #52] ; 0x34 rle_state = RLE_STATE_SINGLE; f01e: 2100 movs r1, #0 rle_rdp += rle_bpp; f020: 9207 str r2, [sp, #28] f022: 9208 str r2, [sp, #32] f024: e752 b.n eecc bit_mask = 0x7; f026: 2307 movs r3, #7 f028: 469a mov sl, r3 f02a: e7e5 b.n eff8 bit_mask = 0xF; f02c: 230f movs r3, #15 f02e: 469a mov sl, r3 f030: e7e2 b.n eff8 bit_mask = 0xFF; f032: 23ff movs r3, #255 ; 0xff f034: 469a mov sl, r3 f036: e7df b.n eff8 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; f038: 9b12 ldr r3, [sp, #72] ; 0x48 f03a: 469a mov sl, r3 f03c: e7dc b.n eff8 bit_mask = 0x1; f03e: 2301 movs r3, #1 f040: 469a mov sl, r3 f042: e7d9 b.n eff8 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; f044: 464a mov r2, r9 f046: 5d51 ldrb r1, [r2, r5] f048: 0209 lsls r1, r1, #8 f04a: 444d add r5, r9 f04c: 786a ldrb r2, [r5, #1] f04e: 1852 adds r2, r2, r1 return (in16 >> (16 - bit_pos - len)) & bit_mask; f050: b292 uxth r2, r2 f052: 990e ldr r1, [sp, #56] ; 0x38 f054: 1acb subs r3, r1, r3 f056: 411a asrs r2, r3 f058: 4653 mov r3, sl f05a: 4013 ands r3, r2 f05c: b2db uxtb r3, r3 f05e: e7d9 b.n f014 bit_mask = 0x3; f060: 2303 movs r3, #3 f062: e01e b.n f0a2 bit_mask = 0x7; f064: 2307 movs r3, #7 f066: e01c b.n f0a2 bit_mask = 0xF; f068: 230f movs r3, #15 f06a: e01a b.n f0a2 bit_mask = 0xFF; f06c: 23ff movs r3, #255 ; 0xff f06e: e018 b.n f0a2 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; f070: 9b12 ldr r3, [sp, #72] ; 0x48 f072: e016 b.n f0a2 f074: 20002bc8 .word 0x20002bc8 f078: 20002bcc .word 0x20002bcc f07c: 20002bbd .word 0x20002bbd f080: 20002bc4 .word 0x20002bc4 f084: 000189f0 .word 0x000189f0 f088: 20002bc0 .word 0x20002bc0 f08c: 20002bbc .word 0x20002bbc f090: 00018a34 .word 0x00018a34 f094: 00018a10 .word 0x00018a10 f098: 00018a58 .word 0x00018a58 f09c: 00018a7c .word 0x00018a7c bit_mask = 0x1; f0a0: 2301 movs r3, #1 uint32_t byte_pos = bit_pos >> 3; f0a2: 08e9 lsrs r1, r5, #3 bit_pos = bit_pos & 0x7; f0a4: 2207 movs r2, #7 f0a6: 402a ands r2, r5 if(bit_pos + len >= 8) { f0a8: 1990 adds r0, r2, r6 f0aa: 2807 cmp r0, #7 f0ac: d80f bhi.n f0ce return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; f0ae: 4648 mov r0, r9 f0b0: 5c41 ldrb r1, [r0, r1] f0b2: 980c ldr r0, [sp, #48] ; 0x30 f0b4: 1a82 subs r2, r0, r2 f0b6: 4111 asrs r1, r2 f0b8: 400b ands r3, r1 f0ba: b2db uxtb r3, r3 rle_rdp += rle_bpp; f0bc: 19a8 adds r0, r5, r6 rle_prev_v = ret; f0be: 9302 str r3, [sp, #8] rle_rdp += rle_bpp; f0c0: 2201 movs r2, #1 f0c2: 920b str r2, [sp, #44] ; 0x2c f0c4: 920d str r2, [sp, #52] ; 0x34 rle_state = RLE_STATE_SINGLE; f0c6: 2100 movs r1, #0 rle_rdp += rle_bpp; f0c8: 9207 str r2, [sp, #28] f0ca: 9208 str r2, [sp, #32] f0cc: e6fe b.n eecc uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; f0ce: 4648 mov r0, r9 f0d0: 5c40 ldrb r0, [r0, r1] f0d2: 0200 lsls r0, r0, #8 f0d4: 4449 add r1, r9 f0d6: 7849 ldrb r1, [r1, #1] f0d8: 1809 adds r1, r1, r0 return (in16 >> (16 - bit_pos - len)) & bit_mask; f0da: b289 uxth r1, r1 f0dc: 980e ldr r0, [sp, #56] ; 0x38 f0de: 1a82 subs r2, r0, r2 f0e0: 4111 asrs r1, r2 f0e2: 400b ands r3, r1 f0e4: b2db uxtb r3, r3 f0e6: e7e9 b.n f0bc bit_mask = 0x3; f0e8: 2303 movs r3, #3 f0ea: e008 b.n f0fe bit_mask = 0x7; f0ec: 2307 movs r3, #7 f0ee: e006 b.n f0fe bit_mask = 0xF; f0f0: 230f movs r3, #15 f0f2: e004 b.n f0fe bit_mask = 0xFF; f0f4: 23ff movs r3, #255 ; 0xff f0f6: e002 b.n f0fe bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; f0f8: 9b12 ldr r3, [sp, #72] ; 0x48 f0fa: e000 b.n f0fe bit_mask = 0x1; f0fc: 2301 movs r3, #1 uint32_t byte_pos = bit_pos >> 3; f0fe: 08c1 lsrs r1, r0, #3 bit_pos = bit_pos & 0x7; f100: 2207 movs r2, #7 f102: 4002 ands r2, r0 if(bit_pos + len >= 8) { f104: 1995 adds r5, r2, r6 f106: 2d07 cmp r5, #7 f108: d80f bhi.n f12a return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; f10a: 464d mov r5, r9 f10c: 5c69 ldrb r1, [r5, r1] f10e: 9d0c ldr r5, [sp, #48] ; 0x30 f110: 1aaa subs r2, r5, r2 f112: 4111 asrs r1, r2 f114: 400b ands r3, r1 f116: b2db uxtb r3, r3 rle_rdp += rle_bpp; f118: 1980 adds r0, r0, r6 rle_prev_v = ret; f11a: 9302 str r3, [sp, #8] rle_rdp += rle_bpp; f11c: 2201 movs r2, #1 f11e: 920b str r2, [sp, #44] ; 0x2c f120: 920d str r2, [sp, #52] ; 0x34 rle_state = RLE_STATE_SINGLE; f122: 2100 movs r1, #0 rle_rdp += rle_bpp; f124: 9207 str r2, [sp, #28] f126: 9208 str r2, [sp, #32] f128: e6d0 b.n eecc uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; f12a: 464d mov r5, r9 f12c: 5c6d ldrb r5, [r5, r1] f12e: 022d lsls r5, r5, #8 f130: 4449 add r1, r9 f132: 7849 ldrb r1, [r1, #1] f134: 1949 adds r1, r1, r5 return (in16 >> (16 - bit_pos - len)) & bit_mask; f136: b289 uxth r1, r1 f138: 9d0e ldr r5, [sp, #56] ; 0x38 f13a: 1aaa subs r2, r5, r2 f13c: 4111 asrs r1, r2 f13e: 400b ands r3, r1 f140: b2db uxtb r3, r3 f142: e7e9 b.n f118 ret = rle_prev_v; f144: 9b02 ldr r3, [sp, #8] if(rle_cnt != 0) { f146: 2201 movs r2, #1 f148: 920b str r2, [sp, #44] ; 0x2c f14a: 920d str r2, [sp, #52] ; 0x34 rle_state = RLE_STATE_COUNTER; f14c: 2102 movs r1, #2 if(rle_cnt != 0) { f14e: 9207 str r2, [sp, #28] f150: e6bc b.n eecc ret = rle_prev_v; f152: 9b02 ldr r3, [sp, #8] if(rle_cnt == 0) { f154: 2201 movs r2, #1 f156: 920b str r2, [sp, #44] ; 0x2c f158: e6b8 b.n eecc f15a: 468c mov ip, r1 f15c: 46b2 mov sl, r6 for(i = 0; i < w; i++) { f15e: 990f ldr r1, [sp, #60] ; 0x3c f160: 2700 movs r7, #0 if(len == 3) { f162: 9b00 ldr r3, [sp, #0] f164: 9305 str r3, [sp, #20] val = 6; f166: 0003 movs r3, r0 f168: 4640 mov r0, r8 f16a: 4662 mov r2, ip f16c: 9211 str r2, [sp, #68] ; 0x44 f16e: 4698 mov r8, r3 f170: e01e b.n f1b0 len = 4; f172: 2304 movs r3, #4 val = 0; f174: 2400 movs r4, #0 bit_pos = bit_pos & 0x7; f176: 2207 movs r2, #7 f178: 400a ands r2, r1 f17a: 2608 movs r6, #8 f17c: 1ab6 subs r6, r6, r2 bit_pos = 8 - bit_pos - len; f17e: 1af6 subs r6, r6, r3 out[byte_pos] &= ((~bit_mask) << bit_pos); f180: 034d lsls r5, r1, #13 f182: 0c2d lsrs r5, r5, #16 f184: 9a03 ldr r2, [sp, #12] f186: 4694 mov ip, r2 f188: 4465 add r5, ip uint8_t bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; f18a: 2201 movs r2, #1 f18c: 409a lsls r2, r3 f18e: 0013 movs r3, r2 f190: 3b01 subs r3, #1 out[byte_pos] &= ((~bit_mask) << bit_pos); f192: b2db uxtb r3, r3 f194: 43db mvns r3, r3 f196: 40b3 lsls r3, r6 f198: 782a ldrb r2, [r5, #0] f19a: 4013 ands r3, r2 out[byte_pos] |= (val << bit_pos); f19c: 40b4 lsls r4, r6 f19e: 4323 orrs r3, r4 f1a0: 702b strb r3, [r5, #0] f1a2: 9b04 ldr r3, [sp, #16] f1a4: 469c mov ip, r3 f1a6: 4461 add r1, ip f1a8: 3701 adds r7, #1 for(x = 0; x < w; x++) { f1aa: b23b sxth r3, r7 f1ac: 459b cmp fp, r3 f1ae: dd25 ble.n f1fc line_buf1[x] = line_buf2[x] ^ line_buf1[x]; f1b0: 9b01 ldr r3, [sp, #4] f1b2: 5ddc ldrb r4, [r3, r7] f1b4: 5dc3 ldrb r3, [r0, r7] f1b6: 405c eors r4, r3 f1b8: 55c4 strb r4, [r0, r7] if(len == 3) { f1ba: 9b05 ldr r3, [sp, #20] f1bc: 9a00 ldr r2, [sp, #0] f1be: 2a03 cmp r2, #3 f1c0: d1d9 bne.n f176 switch(val) { f1c2: 2c07 cmp r4, #7 f1c4: d818 bhi.n f1f8 f1c6: 00a4 lsls r4, r4, #2 f1c8: 4b35 ldr r3, [pc, #212] ; (f2a0 ) f1ca: 591b ldr r3, [r3, r4] f1cc: 469f mov pc, r3 len = 4; f1ce: 2304 movs r3, #4 val = 2; f1d0: 2402 movs r4, #2 f1d2: e7d0 b.n f176 len = 4; f1d4: 2304 movs r3, #4 val = 4; f1d6: 2404 movs r4, #4 f1d8: e7cd b.n f176 len = 4; f1da: 2304 movs r3, #4 val = 6; f1dc: 2406 movs r4, #6 f1de: e7ca b.n f176 len = 4; f1e0: 2304 movs r3, #4 val = 9; f1e2: 2409 movs r4, #9 f1e4: e7c7 b.n f176 len = 4; f1e6: 2304 movs r3, #4 val = 11; f1e8: 240b movs r4, #11 f1ea: e7c4 b.n f176 len = 4; f1ec: 2304 movs r3, #4 val = 13; f1ee: 240d movs r4, #13 f1f0: e7c1 b.n f176 len = 4; f1f2: 2304 movs r3, #4 val = 15; f1f4: 240f movs r4, #15 f1f6: e7be b.n f176 len = 4; f1f8: 2304 movs r3, #4 f1fa: e7bc b.n f176 f1fc: 0005 movs r5, r0 f1fe: 9a11 ldr r2, [sp, #68] ; 0x44 f200: 4694 mov ip, r2 f202: 4640 mov r0, r8 f204: 9b15 ldr r3, [sp, #84] ; 0x54 f206: 9a04 ldr r2, [sp, #16] f208: 4690 mov r8, r2 f20a: 4443 add r3, r8 f20c: 9a0f ldr r2, [sp, #60] ; 0x3c f20e: 4690 mov r8, r2 f210: 4498 add r8, r3 f212: 4643 mov r3, r8 f214: 930f str r3, [sp, #60] ; 0x3c f216: 9b10 ldr r3, [sp, #64] ; 0x40 f218: 3301 adds r3, #1 f21a: 9310 str r3, [sp, #64] ; 0x40 for(y = 1; y < h; y++) { f21c: 9a13 ldr r2, [sp, #76] ; 0x4c f21e: 4293 cmp r3, r2 f220: d00d beq.n f23e for(i = 0; i < w; i++) { f222: 465b mov r3, fp f224: 2b00 cmp r3, #0 f226: ddf6 ble.n f216 f228: 9b01 ldr r3, [sp, #4] f22a: 4698 mov r8, r3 f22c: 001c movs r4, r3 f22e: 9b14 ldr r3, [sp, #80] ; 0x50 f230: 1c5e adds r6, r3, #1 f232: 4446 add r6, r8 f234: 46a8 mov r8, r5 f236: 4661 mov r1, ip f238: 46b4 mov ip, r6 f23a: 4656 mov r6, sl f23c: e64b b.n eed6 f23e: 9b06 ldr r3, [sp, #24] f240: 4698 mov r8, r3 f242: 4661 mov r1, ip f244: 9b08 ldr r3, [sp, #32] f246: 2b00 cmp r3, #0 f248: d118 bne.n f27c f24a: 9b07 ldr r3, [sp, #28] f24c: 2b00 cmp r3, #0 f24e: d001 beq.n f254 f250: 4b14 ldr r3, [pc, #80] ; (f2a4 ) f252: 6018 str r0, [r3, #0] f254: 9b0d ldr r3, [sp, #52] ; 0x34 f256: 2b00 cmp r3, #0 f258: d001 beq.n f25e f25a: 4b13 ldr r3, [pc, #76] ; (f2a8 ) f25c: 7019 strb r1, [r3, #0] f25e: 9b0b ldr r3, [sp, #44] ; 0x2c f260: 2b00 cmp r3, #0 f262: d002 beq.n f26a f264: 4b11 ldr r3, [pc, #68] ; (f2ac ) f266: 4642 mov r2, r8 f268: 701a strb r2, [r3, #0] _lv_mem_buf_release(line_buf1); f26a: 9817 ldr r0, [sp, #92] ; 0x5c f26c: 4c10 ldr r4, [pc, #64] ; (f2b0 ) f26e: 47a0 blx r4 _lv_mem_buf_release(line_buf2); f270: 9801 ldr r0, [sp, #4] f272: 47a0 blx r4 return decompr_buf; f274: 4b0f ldr r3, [pc, #60] ; (f2b4 ) f276: 6818 ldr r0, [r3, #0] f278: f7ff fb39 bl e8ee f27c: 4b0e ldr r3, [pc, #56] ; (f2b8 ) f27e: 466a mov r2, sp f280: 7a12 ldrb r2, [r2, #8] f282: 701a strb r2, [r3, #0] f284: e7e1 b.n f24a if(!gid) return NULL; f286: 2000 movs r0, #0 f288: f7ff fb31 bl e8ee return NULL; f28c: 2000 movs r0, #0 f28e: f7ff fb2e bl e8ee if(gsize == 0) return NULL; f292: 2000 movs r0, #0 f294: f7ff fb2b bl e8ee if(decompr_buf == NULL) return NULL; f298: 2000 movs r0, #0 f29a: f7ff fb28 bl e8ee f29e: 46c0 nop ; (mov r8, r8) f2a0: 00018aa0 .word 0x00018aa0 f2a4: 20002bc8 .word 0x20002bc8 f2a8: 20002bcc .word 0x20002bcc f2ac: 20002bbd .word 0x20002bbd f2b0: 00010bd5 .word 0x00010bd5 f2b4: 20002bb8 .word 0x20002bb8 f2b8: 20002bc4 .word 0x20002bc4 0000f2bc : { f2bc: b5f0 push {r4, r5, r6, r7, lr} f2be: 46de mov lr, fp f2c0: 4657 mov r7, sl f2c2: 464e mov r6, r9 f2c4: 4645 mov r5, r8 f2c6: b5e0 push {r5, r6, r7, lr} f2c8: b085 sub sp, #20 f2ca: 4681 mov r9, r0 f2cc: 000c movs r4, r1 f2ce: 001f movs r7, r3 bool is_tab = false; f2d0: 2500 movs r5, #0 if(unicode_letter == '\t') { f2d2: 2a09 cmp r2, #9 f2d4: d03a beq.n f34c lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; f2d6: 464b mov r3, r9 f2d8: 691e ldr r6, [r3, #16] uint32_t gid = get_glyph_dsc_id(font, unicode_letter); f2da: 0011 movs r1, r2 f2dc: 4648 mov r0, r9 f2de: 4b53 ldr r3, [pc, #332] ; (f42c ) f2e0: 4798 blx r3 f2e2: 4683 mov fp, r0 if(!gid) return false; f2e4: 2800 cmp r0, #0 f2e6: d100 bne.n f2ea f2e8: e094 b.n f414 if(fdsc->kern_dsc) { f2ea: 68f3 ldr r3, [r6, #12] f2ec: 2b00 cmp r3, #0 f2ee: d100 bne.n f2f2 f2f0: e08e b.n f410 uint32_t gid_next = get_glyph_dsc_id(font, unicode_letter_next); f2f2: 0039 movs r1, r7 f2f4: 4648 mov r0, r9 f2f6: 4b4d ldr r3, [pc, #308] ; (f42c ) f2f8: 4798 blx r3 int8_t kvalue = 0; f2fa: 2300 movs r3, #0 if(gid_next) { f2fc: 2800 cmp r0, #0 f2fe: d128 bne.n f352 const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[gid]; f300: 465a mov r2, fp f302: 00d0 lsls r0, r2, #3 f304: 6872 ldr r2, [r6, #4] f306: 4694 mov ip, r2 f308: 4460 add r0, ip int32_t kv = ((int32_t)((int32_t)kvalue * fdsc->kern_scale) >> 4); f30a: 8a32 ldrh r2, [r6, #16] f30c: 435a muls r2, r3 f30e: 1112 asrs r2, r2, #4 uint32_t adv_w = gdsc->adv_w; f310: 8841 ldrh r1, [r0, #2] f312: 0909 lsrs r1, r1, #4 if(is_tab) adv_w *= 2; f314: 2d00 cmp r5, #0 f316: d000 beq.n f31a f318: 0049 lsls r1, r1, #1 adv_w = (adv_w + (1 << 3)) >> 4; f31a: 0013 movs r3, r2 f31c: 3308 adds r3, #8 f31e: 185b adds r3, r3, r1 f320: 091b lsrs r3, r3, #4 dsc_out->adv_w = adv_w; f322: 8023 strh r3, [r4, #0] dsc_out->box_h = gdsc->box_h; f324: 7943 ldrb r3, [r0, #5] f326: 80a3 strh r3, [r4, #4] dsc_out->box_w = gdsc->box_w; f328: 7902 ldrb r2, [r0, #4] f32a: 8062 strh r2, [r4, #2] dsc_out->ofs_x = gdsc->ofs_x; f32c: 2306 movs r3, #6 f32e: 56c3 ldrsb r3, [r0, r3] f330: 80e3 strh r3, [r4, #6] dsc_out->ofs_y = gdsc->ofs_y; f332: 2307 movs r3, #7 f334: 56c3 ldrsb r3, [r0, r3] f336: 8123 strh r3, [r4, #8] dsc_out->bpp = (uint8_t)fdsc->bpp; f338: 7cf3 ldrb r3, [r6, #19] f33a: 069b lsls r3, r3, #26 f33c: 0f1b lsrs r3, r3, #28 f33e: 72a3 strb r3, [r4, #10] if(is_tab) dsc_out->box_w = dsc_out->box_w * 2; f340: 2d00 cmp r5, #0 f342: d100 bne.n f346 f344: e06f b.n f426 f346: 0052 lsls r2, r2, #1 f348: 8062 strh r2, [r4, #2] f34a: e064 b.n f416 is_tab = true; f34c: 3501 adds r5, #1 unicode_letter = ' '; f34e: 3217 adds r2, #23 f350: e7c1 b.n f2d6 lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; f352: 464b mov r3, r9 f354: 691b ldr r3, [r3, #16] if(fdsc->kern_classes == 0) { f356: 7cda ldrb r2, [r3, #19] f358: 0652 lsls r2, r2, #25 f35a: d442 bmi.n f3e2 const lv_font_fmt_txt_kern_pair_t * kdsc = fdsc->kern_dsc; f35c: 68db ldr r3, [r3, #12] f35e: 4698 mov r8, r3 if(kdsc->glyph_ids_size == 0) { f360: 7adb ldrb r3, [r3, #11] f362: 2203 movs r2, #3 f364: 401a ands r2, r3 f366: d01c beq.n f3a2 int8_t value = 0; f368: 2300 movs r3, #0 else if(kdsc->glyph_ids_size == 1) { f36a: 2a01 cmp r2, #1 f36c: d1c8 bne.n f300 const uint16_t * g_ids = kdsc->glyph_ids; f36e: 4643 mov r3, r8 f370: 681b ldr r3, [r3, #0] f372: 4699 mov r9, r3 lv_uintptr_t g_id_both = (uint32_t)((uint32_t)gid_right << 8) + gid_left; /*Create one number from the ids*/ f374: 0200 lsls r0, r0, #8 f376: 4458 add r0, fp f378: 9003 str r0, [sp, #12] uint8_t * kid_p = _lv_utils_bsearch(&g_id_both, g_ids, kdsc->pair_cnt, 4, kern_pair_16_compare); f37a: 4643 mov r3, r8 f37c: 689b ldr r3, [r3, #8] f37e: 021a lsls r2, r3, #8 f380: 0a12 lsrs r2, r2, #8 f382: 4b2b ldr r3, [pc, #172] ; (f430 ) f384: 9300 str r3, [sp, #0] f386: 2304 movs r3, #4 f388: 4649 mov r1, r9 f38a: a803 add r0, sp, #12 f38c: 4f29 ldr r7, [pc, #164] ; (f434 ) f38e: 47b8 blx r7 if(kid_p) { f390: 2800 cmp r0, #0 f392: d024 beq.n f3de lv_uintptr_t ofs = (lv_uintptr_t)(kid_p - (const uint8_t *)g_ids); f394: 464b mov r3, r9 f396: 1ac0 subs r0, r0, r3 ofs = ofs >> 4; /*ofs is 4 byte pairs, divide by 4 to refer as a single value*/ f398: 0900 lsrs r0, r0, #4 value = kdsc->values[ofs]; f39a: 4643 mov r3, r8 f39c: 685b ldr r3, [r3, #4] f39e: 561b ldrsb r3, [r3, r0] f3a0: e7ae b.n f300 const uint8_t * g_ids = kdsc->glyph_ids; f3a2: 4643 mov r3, r8 f3a4: 681b ldr r3, [r3, #0] f3a6: 4699 mov r9, r3 uint16_t g_id_both = (gid_right << 8) + gid_left; /*Create one number from the ids*/ f3a8: ab03 add r3, sp, #12 f3aa: 469c mov ip, r3 f3ac: 0200 lsls r0, r0, #8 f3ae: 4458 add r0, fp f3b0: 8018 strh r0, [r3, #0] uint8_t * kid_p = _lv_utils_bsearch(&g_id_both, g_ids, kdsc->pair_cnt, 2, kern_pair_8_compare); f3b2: 4643 mov r3, r8 f3b4: 689b ldr r3, [r3, #8] f3b6: 021a lsls r2, r3, #8 f3b8: 0a12 lsrs r2, r2, #8 f3ba: 4b1f ldr r3, [pc, #124] ; (f438 ) f3bc: 9300 str r3, [sp, #0] f3be: 2302 movs r3, #2 f3c0: 4649 mov r1, r9 f3c2: 4660 mov r0, ip f3c4: 4f1b ldr r7, [pc, #108] ; (f434 ) f3c6: 47b8 blx r7 if(kid_p) { f3c8: 2800 cmp r0, #0 f3ca: d006 beq.n f3da lv_uintptr_t ofs = (lv_uintptr_t)(kid_p - g_ids); f3cc: 464b mov r3, r9 f3ce: 1ac0 subs r0, r0, r3 ofs = ofs >> 1; /*ofs is for pair, divide by 2 to refer as a single value*/ f3d0: 0840 lsrs r0, r0, #1 value = kdsc->values[ofs]; f3d2: 4643 mov r3, r8 f3d4: 685b ldr r3, [r3, #4] f3d6: 561b ldrsb r3, [r3, r0] f3d8: e792 b.n f300 int8_t value = 0; f3da: 2300 movs r3, #0 f3dc: e790 b.n f300 f3de: 2300 movs r3, #0 f3e0: e78e b.n f300 const lv_font_fmt_txt_kern_classes_t * kdsc = fdsc->kern_dsc; f3e2: 68da ldr r2, [r3, #12] uint8_t left_class = kdsc->left_class_mapping[gid_left]; f3e4: 6853 ldr r3, [r2, #4] f3e6: 4659 mov r1, fp f3e8: 5c59 ldrb r1, [r3, r1] int8_t value = 0; f3ea: 2300 movs r3, #0 if(left_class > 0 && right_class > 0) { f3ec: 2900 cmp r1, #0 f3ee: d087 beq.n f300 uint8_t right_class = kdsc->right_class_mapping[gid_right]; f3f0: 6893 ldr r3, [r2, #8] f3f2: 5c18 ldrb r0, [r3, r0] int8_t value = 0; f3f4: 2300 movs r3, #0 if(left_class > 0 && right_class > 0) { f3f6: 2800 cmp r0, #0 f3f8: d100 bne.n f3fc f3fa: e781 b.n f300 value = kdsc->class_pair_values[(left_class - 1) * kdsc->right_class_cnt + (right_class - 1)]; f3fc: 3901 subs r1, #1 f3fe: 7b53 ldrb r3, [r2, #13] f400: 434b muls r3, r1 f402: 6811 ldr r1, [r2, #0] f404: 1809 adds r1, r1, r0 f406: 18c9 adds r1, r1, r3 f408: 3901 subs r1, #1 f40a: 2300 movs r3, #0 f40c: 56cb ldrsb r3, [r1, r3] f40e: e777 b.n f300 int8_t kvalue = 0; f410: 2300 movs r3, #0 f412: e775 b.n f300 if(!gid) return false; f414: 2500 movs r5, #0 } f416: 0028 movs r0, r5 f418: b005 add sp, #20 f41a: bc3c pop {r2, r3, r4, r5} f41c: 4690 mov r8, r2 f41e: 4699 mov r9, r3 f420: 46a2 mov sl, r4 f422: 46ab mov fp, r5 f424: bdf0 pop {r4, r5, r6, r7, pc} return true; f426: 2501 movs r5, #1 f428: e7f5 b.n f416 f42a: 46c0 nop ; (mov r8, r8) f42c: 0000e7bd .word 0x0000e7bd f430: 0000e7a1 .word 0x0000e7a1 f434: 00011bf1 .word 0x00011bf1 f438: 0000e78d .word 0x0000e78d 0000f43c <_lv_font_clean_up_fmt_txt>: { f43c: b510 push {r4, lr} if(decompr_buf) { f43e: 4b05 ldr r3, [pc, #20] ; (f454 <_lv_font_clean_up_fmt_txt+0x18>) f440: 6818 ldr r0, [r3, #0] f442: 2800 cmp r0, #0 f444: d004 beq.n f450 <_lv_font_clean_up_fmt_txt+0x14> lv_mem_free(decompr_buf); f446: 4b04 ldr r3, [pc, #16] ; (f458 <_lv_font_clean_up_fmt_txt+0x1c>) f448: 4798 blx r3 decompr_buf = NULL; f44a: 2200 movs r2, #0 f44c: 4b01 ldr r3, [pc, #4] ; (f454 <_lv_font_clean_up_fmt_txt+0x18>) f44e: 601a str r2, [r3, #0] } f450: bd10 pop {r4, pc} f452: 46c0 nop ; (mov r8, r8) f454: 20002bb8 .word 0x20002bb8 f458: 00010b39 .word 0x00010b39 0000f45c : * 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) { f45c: b510 push {r4, lr} f45e: 0004 movs r4, r0 _lv_memset_00(driver, sizeof(lv_disp_drv_t)); f460: 212c movs r1, #44 ; 0x2c f462: 4b15 ldr r3, [pc, #84] ; (f4b8 ) f464: 4798 blx r3 driver->flush_cb = NULL; f466: 2200 movs r2, #0 f468: 60e2 str r2, [r4, #12] driver->hor_res = LV_HOR_RES_MAX; f46a: 23f0 movs r3, #240 ; 0xf0 f46c: 005b lsls r3, r3, #1 f46e: 8023 strh r3, [r4, #0] driver->ver_res = LV_VER_RES_MAX; f470: 3ba0 subs r3, #160 ; 0xa0 f472: 8063 strh r3, [r4, #2] driver->buffer = NULL; f474: 6062 str r2, [r4, #4] driver->rotated = 0; f476: 7a23 ldrb r3, [r4, #8] f478: 2102 movs r1, #2 f47a: 438b bics r3, r1 f47c: 7223 strb r3, [r4, #8] driver->color_chroma_key = LV_COLOR_TRANSP; f47e: 3126 adds r1, #38 ; 0x26 f480: 5c63 ldrb r3, [r4, r1] f482: 201f movs r0, #31 f484: 4383 bics r3, r0 f486: 5463 strb r3, [r4, r1] f488: 8d21 ldrh r1, [r4, #40] ; 0x28 f48a: 23fc movs r3, #252 ; 0xfc f48c: 00db lsls r3, r3, #3 f48e: 430b orrs r3, r1 f490: 8523 strh r3, [r4, #40] ; 0x28 f492: 0021 movs r1, r4 f494: 3128 adds r1, #40 ; 0x28 f496: 055b lsls r3, r3, #21 f498: 0f5b lsrs r3, r3, #29 f49a: 704b strb r3, [r1, #1] driver->dpi = LV_DPI; f49c: 8923 ldrh r3, [r4, #8] f49e: 4907 ldr r1, [pc, #28] ; (f4bc ) f4a0: 4019 ands r1, r3 f4a2: 2382 movs r3, #130 ; 0x82 f4a4: 009b lsls r3, r3, #2 f4a6: 430b orrs r3, r1 f4a8: 8123 strh r3, [r4, #8] #if LV_ANTIALIAS driver->antialiasing = true; f4aa: 2101 movs r1, #1 f4ac: 430b orrs r3, r1 f4ae: 7223 strb r3, [r4, #8] #if LV_COLOR_SCREEN_TRANSP driver->screen_transp = 1; #endif #if LV_USE_GPU driver->gpu_blend_cb = NULL; f4b0: 6222 str r2, [r4, #32] driver->gpu_fill_cb = NULL; f4b2: 6262 str r2, [r4, #36] ; 0x24 #if LV_USE_USER_DATA driver->user_data = NULL; #endif driver->set_px_cb = NULL; f4b4: 6162 str r2, [r4, #20] } f4b6: bd10 pop {r4, pc} f4b8: 0001104d .word 0x0001104d f4bc: fffff003 .word 0xfffff003 0000f4c0 : * 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) { f4c0: b5f8 push {r3, r4, r5, r6, r7, lr} f4c2: 0004 movs r4, r0 f4c4: 000d movs r5, r1 f4c6: 0017 movs r7, r2 f4c8: 001e movs r6, r3 _lv_memset_00(disp_buf, sizeof(lv_disp_buf_t)); f4ca: 2124 movs r1, #36 ; 0x24 f4cc: 4b03 ldr r3, [pc, #12] ; (f4dc ) f4ce: 4798 blx r3 disp_buf->buf1 = buf1; f4d0: 6025 str r5, [r4, #0] disp_buf->buf2 = buf2; f4d2: 6067 str r7, [r4, #4] disp_buf->buf_act = disp_buf->buf1; f4d4: 60a5 str r5, [r4, #8] disp_buf->size = size_in_px_cnt; f4d6: 60e6 str r6, [r4, #12] } f4d8: bdf8 pop {r3, r4, r5, r6, r7, pc} f4da: 46c0 nop ; (mov r8, r8) f4dc: 0001104d .word 0x0001104d 0000f4e0 : * 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) { f4e0: b570 push {r4, r5, r6, lr} f4e2: 0005 movs r5, r0 lv_disp_t * disp = _lv_ll_ins_head(&LV_GC_ROOT(_lv_disp_ll)); f4e4: 4838 ldr r0, [pc, #224] ; (f5c8 ) f4e6: 4b39 ldr r3, [pc, #228] ; (f5cc ) f4e8: 4798 blx r3 f4ea: 1e04 subs r4, r0, #0 if(!disp) { f4ec: d055 beq.n f59a LV_ASSERT_MEM(disp); return NULL; } _lv_memset_00(disp, sizeof(lv_disp_t)); f4ee: 21b8 movs r1, #184 ; 0xb8 f4f0: 0049 lsls r1, r1, #1 f4f2: 4b37 ldr r3, [pc, #220] ; (f5d0 ) f4f4: 4798 blx r3 _lv_memcpy(&disp->driver, driver, sizeof(lv_disp_drv_t)); f4f6: 222c movs r2, #44 ; 0x2c f4f8: 0029 movs r1, r5 f4fa: 0020 movs r0, r4 f4fc: 4b35 ldr r3, [pc, #212] ; (f5d4 ) f4fe: 4798 blx r3 _lv_ll_init(&disp->scr_ll, sizeof(lv_obj_t)); f500: 0020 movs r0, r4 f502: 3030 adds r0, #48 ; 0x30 f504: 214c movs r1, #76 ; 0x4c f506: 4b34 ldr r3, [pc, #208] ; (f5d8 ) f508: 4798 blx r3 disp->last_activity_time = 0; f50a: 2200 movs r2, #0 f50c: 23b6 movs r3, #182 ; 0xb6 f50e: 005b lsls r3, r3, #1 f510: 50e2 str r2, [r4, r3] if(disp_def == NULL) disp_def = disp; f512: 4b32 ldr r3, [pc, #200] ; (f5dc ) f514: 681b ldr r3, [r3, #0] f516: 2b00 cmp r3, #0 f518: d04a beq.n f5b0 lv_disp_t * disp_def_tmp = disp_def; f51a: 4b30 ldr r3, [pc, #192] ; (f5dc ) f51c: 681e ldr r6, [r3, #0] disp_def = disp; /*Temporarily change the default screen to create the default screens on the f51e: 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); f520: 0023 movs r3, r4 f522: 2203 movs r2, #3 f524: 211e movs r1, #30 f526: 482e ldr r0, [pc, #184] ; (f5e0 ) f528: 4d2e ldr r5, [pc, #184] ; (f5e4 ) f52a: 47a8 blx r5 f52c: 62e0 str r0, [r4, #44] ; 0x2c LV_ASSERT_MEM(disp->refr_task); f52e: 4b2e ldr r3, [pc, #184] ; (f5e8 ) f530: 4798 blx r3 f532: 2800 cmp r0, #0 f534: d03f beq.n f5b6 if(disp->refr_task == NULL) return NULL; f536: 6ae3 ldr r3, [r4, #44] ; 0x2c f538: 2b00 cmp r3, #0 f53a: d042 beq.n f5c2 disp->inv_p = 0; f53c: 22b4 movs r2, #180 ; 0xb4 f53e: 0052 lsls r2, r2, #1 f540: 5aa3 ldrh r3, [r4, r2] f542: 0a9b lsrs r3, r3, #10 f544: 029b lsls r3, r3, #10 f546: 52a3 strh r3, [r4, r2] disp->last_activity_time = 0; f548: 2200 movs r2, #0 f54a: 23b6 movs r3, #182 ; 0xb6 f54c: 005b lsls r3, r3, #1 f54e: 50e2 str r2, [r4, r3] disp->act_scr = lv_obj_create(NULL, NULL); /*Create a default screen on the display*/ f550: 2100 movs r1, #0 f552: 2000 movs r0, #0 f554: 4d25 ldr r5, [pc, #148] ; (f5ec ) f556: 47a8 blx r5 f558: 63e0 str r0, [r4, #60] ; 0x3c disp->top_layer = lv_obj_create(NULL, NULL); /*Create top layer on the display*/ f55a: 2100 movs r1, #0 f55c: 2000 movs r0, #0 f55e: 47a8 blx r5 f560: 6420 str r0, [r4, #64] ; 0x40 disp->sys_layer = lv_obj_create(NULL, NULL); /*Create sys layer on the display*/ f562: 2100 movs r1, #0 f564: 2000 movs r0, #0 f566: 47a8 blx r5 f568: 6460 str r0, [r4, #68] ; 0x44 lv_obj_reset_style_list(disp->top_layer, LV_OBJ_PART_MAIN); f56a: 2100 movs r1, #0 f56c: 6c20 ldr r0, [r4, #64] ; 0x40 f56e: 4d20 ldr r5, [pc, #128] ; (f5f0 ) f570: 47a8 blx r5 lv_obj_reset_style_list(disp->sys_layer, LV_OBJ_PART_MAIN); f572: 2100 movs r1, #0 f574: 6c60 ldr r0, [r4, #68] ; 0x44 f576: 47a8 blx r5 lv_obj_set_click(disp->top_layer, false); f578: 2100 movs r1, #0 f57a: 6c20 ldr r0, [r4, #64] ; 0x40 f57c: 4d1d ldr r5, [pc, #116] ; (f5f4 ) f57e: 47a8 blx r5 lv_obj_set_click(disp->sys_layer, false); f580: 2100 movs r1, #0 f582: 6c60 ldr r0, [r4, #68] ; 0x44 f584: 47a8 blx r5 lv_obj_invalidate(disp->act_scr); f586: 6be0 ldr r0, [r4, #60] ; 0x3c f588: 4b1b ldr r3, [pc, #108] ; (f5f8 ) f58a: 4798 blx r3 disp_def = disp_def_tmp; /*Revert the default display*/ f58c: 4b13 ldr r3, [pc, #76] ; (f5dc ) f58e: 601e str r6, [r3, #0] lv_task_ready(disp->refr_task); /*Be sure the screen will be refreshed immediately on start up*/ f590: 6ae0 ldr r0, [r4, #44] ; 0x2c f592: 4b1a ldr r3, [pc, #104] ; (f5fc ) f594: 4798 blx r3 return disp; } f596: 0020 movs r0, r4 f598: bd70 pop {r4, r5, r6, pc} LV_ASSERT_MEM(disp); f59a: 2000 movs r0, #0 f59c: 4b12 ldr r3, [pc, #72] ; (f5e8 ) f59e: 4798 blx r3 f5a0: 2800 cmp r0, #0 f5a2: d1f8 bne.n f596 f5a4: 2200 movs r2, #0 f5a6: 2300 movs r3, #0 f5a8: 4815 ldr r0, [pc, #84] ; (f600 ) f5aa: 4916 ldr r1, [pc, #88] ; (f604 ) f5ac: 4788 blx r1 f5ae: e7fe b.n f5ae if(disp_def == NULL) disp_def = disp; f5b0: 4b0a ldr r3, [pc, #40] ; (f5dc ) f5b2: 601c str r4, [r3, #0] f5b4: e7b1 b.n f51a LV_ASSERT_MEM(disp->refr_task); f5b6: 6ae2 ldr r2, [r4, #44] ; 0x2c f5b8: 2300 movs r3, #0 f5ba: 4811 ldr r0, [pc, #68] ; (f600 ) f5bc: 4911 ldr r1, [pc, #68] ; (f604 ) f5be: 4788 blx r1 f5c0: e7fe b.n f5c0 if(disp->refr_task == NULL) return NULL; f5c2: 2400 movs r4, #0 f5c4: e7e7 b.n f596 f5c6: 46c0 nop ; (mov r8, r8) f5c8: 20004cc4 .word 0x20004cc4 f5cc: 000105cd .word 0x000105cd f5d0: 0001104d .word 0x0001104d f5d4: 00010c8d .word 0x00010c8d f5d8: 000105b9 .word 0x000105b9 f5dc: 20002bd0 .word 0x20002bd0 f5e0: 000043bd .word 0x000043bd f5e4: 000115d9 .word 0x000115d9 f5e8: 0000147d .word 0x0000147d f5ec: 000028e5 .word 0x000028e5 f5f0: 00002679 .word 0x00002679 f5f4: 00001915 .word 0x00001915 f5f8: 00001fb1 .word 0x00001fb1 f5fc: 0001162d .word 0x0001162d f600: 00018724 .word 0x00018724 f604: 00001485 .word 0x00001485 0000f608 : * Get the default display * @return pointer to the default display */ lv_disp_t * lv_disp_get_default(void) { return disp_def; f608: 4b01 ldr r3, [pc, #4] ; (f610 ) f60a: 6818 ldr r0, [r3, #0] } f60c: 4770 bx lr f60e: 46c0 nop ; (mov r8, r8) f610: 20002bd0 .word 0x20002bd0 0000f614 : * Get the horizontal resolution of a display * @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) { f614: 1e03 subs r3, r0, #0 if(disp == NULL) disp = lv_disp_get_default(); f616: d005 beq.n f624 if(disp == NULL) return LV_HOR_RES_MAX; else return disp->driver.rotated == 0 ? disp->driver.hor_res : disp->driver.ver_res; f618: 7a1a ldrb r2, [r3, #8] f61a: 0792 lsls r2, r2, #30 f61c: d509 bpl.n f632 f61e: 2002 movs r0, #2 f620: 5e18 ldrsh r0, [r3, r0] } f622: 4770 bx lr return disp_def; f624: 4b04 ldr r3, [pc, #16] ; (f638 ) f626: 681b ldr r3, [r3, #0] return LV_HOR_RES_MAX; f628: 20f0 movs r0, #240 ; 0xf0 f62a: 0040 lsls r0, r0, #1 if(disp == NULL) f62c: 2b00 cmp r3, #0 f62e: d0f8 beq.n f622 f630: e7f2 b.n f618 return disp->driver.rotated == 0 ? disp->driver.hor_res : disp->driver.ver_res; f632: 2000 movs r0, #0 f634: 5e18 ldrsh r0, [r3, r0] f636: e7f4 b.n f622 f638: 20002bd0 .word 0x20002bd0 0000f63c : * Get the vertical resolution of a display * @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) { f63c: 1e03 subs r3, r0, #0 if(disp == NULL) disp = lv_disp_get_default(); f63e: d005 beq.n f64c if(disp == NULL) return LV_VER_RES_MAX; else return disp->driver.rotated == 0 ? disp->driver.ver_res : disp->driver.hor_res; f640: 7a1a ldrb r2, [r3, #8] f642: 0792 lsls r2, r2, #30 f644: d509 bpl.n f65a f646: 2000 movs r0, #0 f648: 5e18 ldrsh r0, [r3, r0] } f64a: 4770 bx lr return disp_def; f64c: 4b04 ldr r3, [pc, #16] ; (f660 ) f64e: 681b ldr r3, [r3, #0] return LV_VER_RES_MAX; f650: 20a0 movs r0, #160 ; 0xa0 f652: 0040 lsls r0, r0, #1 if(disp == NULL) f654: 2b00 cmp r3, #0 f656: d0f8 beq.n f64a f658: e7f2 b.n f640 return disp->driver.rotated == 0 ? disp->driver.ver_res : disp->driver.hor_res; f65a: 2002 movs r0, #2 f65c: 5e18 ldrsh r0, [r3, r0] f65e: e7f4 b.n f64a f660: 20002bd0 .word 0x20002bd0 0000f664 : * Get the DPI of the display * @param disp pointer to a display (NULL to use the default display) * @return dpi of the display */ uint32_t lv_disp_get_dpi(lv_disp_t * disp) { f664: 1e03 subs r3, r0, #0 if(disp == NULL) disp = lv_disp_get_default(); f666: d003 beq.n f670 if(disp == NULL) return LV_DPI; /*Do not return 0 because it might be a divider*/ return disp->driver.dpi; f668: 8918 ldrh r0, [r3, #8] f66a: 0500 lsls r0, r0, #20 f66c: 0d80 lsrs r0, r0, #22 } f66e: 4770 bx lr return disp_def; f670: 4b02 ldr r3, [pc, #8] ; (f67c ) f672: 681b ldr r3, [r3, #0] f674: 2082 movs r0, #130 ; 0x82 if(disp == NULL) return LV_DPI; /*Do not return 0 because it might be a divider*/ f676: 2b00 cmp r3, #0 f678: d0f9 beq.n f66e f67a: e7f5 b.n f668 f67c: 20002bd0 .word 0x20002bd0 0000f680 : * 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) { f680: b570 push {r4, r5, r6, lr} f682: 1e05 subs r5, r0, #0 if(disp == NULL) disp = lv_disp_get_default(); f684: d019 beq.n f6ba uint32_t w; if(disp == NULL) w = LV_HOR_RES_MAX; else w = lv_disp_get_hor_res(disp); f686: 0028 movs r0, r5 f688: 4b0f ldr r3, [pc, #60] ; (f6c8 ) f68a: 4798 blx r3 f68c: 0004 movs r4, r0 uint32_t dpi = lv_disp_get_dpi(disp); f68e: 0028 movs r0, r5 f690: 4b0e ldr r3, [pc, #56] ; (f6cc ) f692: 4798 blx r3 f694: 0001 movs r1, r0 w = w * 10 / dpi; f696: 00a0 lsls r0, r4, #2 f698: 1900 adds r0, r0, r4 f69a: 0040 lsls r0, r0, #1 f69c: 4b0c ldr r3, [pc, #48] ; (f6d0 ) f69e: 4798 blx r3 f6a0: 0002 movs r2, r0 if(w < LV_DISP_SMALL_LIMIT) return LV_DISP_SIZE_SMALL; f6a2: 2000 movs r0, #0 f6a4: 2a1d cmp r2, #29 f6a6: d907 bls.n f6b8 if(w < LV_DISP_MEDIUM_LIMIT) return LV_DISP_SIZE_MEDIUM; f6a8: 3001 adds r0, #1 f6aa: 2a31 cmp r2, #49 ; 0x31 f6ac: d904 bls.n f6b8 if(w < LV_DISP_LARGE_LIMIT) return LV_DISP_SIZE_LARGE; else return LV_DISP_SIZE_EXTRA_LARGE; f6ae: 3044 adds r0, #68 ; 0x44 f6b0: 4290 cmp r0, r2 f6b2: 4180 sbcs r0, r0 f6b4: 4240 negs r0, r0 f6b6: 3002 adds r0, #2 } f6b8: bd70 pop {r4, r5, r6, pc} return disp_def; f6ba: 4b06 ldr r3, [pc, #24] ; (f6d4 ) f6bc: 681d ldr r5, [r3, #0] f6be: 24f0 movs r4, #240 ; 0xf0 f6c0: 0064 lsls r4, r4, #1 if(disp == NULL) w = LV_HOR_RES_MAX; f6c2: 2d00 cmp r5, #0 f6c4: d0e3 beq.n f68e f6c6: e7de b.n f686 f6c8: 0000f615 .word 0x0000f615 f6cc: 0000f665 .word 0x0000f665 f6d0: 00017881 .word 0x00017881 f6d4: 20002bd0 .word 0x20002bd0 0000f6d8 : 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; f6d8: 6842 ldr r2, [r0, #4] f6da: 2300 movs r3, #0 f6dc: 6193 str r3, [r2, #24] disp_drv->buffer->flushing_last = 0; f6de: 6842 ldr r2, [r0, #4] f6e0: 61d3 str r3, [r2, #28] } f6e2: 4770 bx lr 0000f6e4 : * 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) { f6e4: b510 push {r4, lr} if(disp == NULL) f6e6: 2800 cmp r0, #0 f6e8: d004 beq.n f6f4 return _lv_ll_get_head(&LV_GC_ROOT(_lv_disp_ll)); else return _lv_ll_get_next(&LV_GC_ROOT(_lv_disp_ll), disp); f6ea: 0001 movs r1, r0 f6ec: 4803 ldr r0, [pc, #12] ; (f6fc ) f6ee: 4b04 ldr r3, [pc, #16] ; (f700 ) f6f0: 4798 blx r3 } f6f2: bd10 pop {r4, pc} return _lv_ll_get_head(&LV_GC_ROOT(_lv_disp_ll)); f6f4: 4801 ldr r0, [pc, #4] ; (f6fc ) f6f6: 4b03 ldr r3, [pc, #12] ; (f704 ) f6f8: 4798 blx r3 f6fa: e7fa b.n f6f2 f6fc: 20004cc4 .word 0x20004cc4 f700: 00010685 .word 0x00010685 f704: 0001066d .word 0x0001066d 0000f708 : * @param disp pointer to a display * @return pointer to the internal buffers */ lv_disp_buf_t * lv_disp_get_buf(lv_disp_t * disp) { return disp->driver.buffer; f708: 6840 ldr r0, [r0, #4] } f70a: 4770 bx lr 0000f70c : * @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) f70c: 6843 ldr r3, [r0, #4] f70e: 681a ldr r2, [r3, #0] f710: 2a00 cmp r2, #0 f712: d004 beq.n f71e f714: 6858 ldr r0, [r3, #4] f716: 1e43 subs r3, r0, #1 f718: 4198 sbcs r0, r3 f71a: b2c0 uxtb r0, r0 return true; else return false; } f71c: 4770 bx lr return false; f71e: 2000 movs r0, #0 f720: e7fc b.n f71c ... 0000f724 : * `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) { f724: b510 push {r4, lr} f726: 0004 movs 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) { f728: 4b07 ldr r3, [pc, #28] ; (f748 ) f72a: 4798 blx r3 f72c: 2800 cmp r0, #0 f72e: d00a beq.n f746 uint32_t scr_size = disp->driver.hor_res * disp->driver.ver_res; f730: 2200 movs r2, #0 f732: 5ea3 ldrsh r3, [r4, r2] f734: 2202 movs r2, #2 f736: 5ea0 ldrsh r0, [r4, r2] f738: 4358 muls r0, r3 if(lv_disp_is_double_buf(disp) && disp->driver.buffer->size == scr_size) { f73a: 6863 ldr r3, [r4, #4] f73c: 68db ldr r3, [r3, #12] f73e: 1ac0 subs r0, r0, r3 f740: 4243 negs r3, r0 f742: 4158 adcs r0, r3 f744: b2c0 uxtb r0, r0 return true; } else { return false; } } f746: bd10 pop {r4, pc} f748: 0000f70d .word 0x0000f70d 0000f74c : * @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) { f74c: b510 push {r4, lr} if(indev == NULL) f74e: 2800 cmp r0, #0 f750: d004 beq.n f75c return _lv_ll_get_head(&LV_GC_ROOT(_lv_indev_ll)); else return _lv_ll_get_next(&LV_GC_ROOT(_lv_indev_ll), indev); f752: 0001 movs r1, r0 f754: 4803 ldr r0, [pc, #12] ; (f764 ) f756: 4b04 ldr r3, [pc, #16] ; (f768 ) f758: 4798 blx r3 } f75a: bd10 pop {r4, pc} return _lv_ll_get_head(&LV_GC_ROOT(_lv_indev_ll)); f75c: 4801 ldr r0, [pc, #4] ; (f764 ) f75e: 4b03 ldr r3, [pc, #12] ; (f76c ) f760: 4798 blx r3 f762: e7fa b.n f75a f764: 20004cb8 .word 0x20004cb8 f768: 00010685 .word 0x00010685 f76c: 0001066d .word 0x0001066d 0000f770 : * 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; f770: 2200 movs r2, #0 f772: 4b04 ldr r3, [pc, #16] ; (f784 ) f774: 701a strb r2, [r3, #0] sys_time += tick_period; f776: 4b04 ldr r3, [pc, #16] ; (f788 ) f778: 681a ldr r2, [r3, #0] f77a: 4694 mov ip, r2 f77c: 4460 add r0, ip f77e: 6018 str r0, [r3, #0] } f780: 4770 bx lr f782: 46c0 nop ; (mov r8, r8) f784: 20002bd8 .word 0x20002bd8 f788: 20002bd4 .word 0x20002bd4 0000f78c : uint32_t lv_tick_get(void) { #if LV_TICK_CUSTOM == 0 uint32_t result; do { tick_irq_flag = 1; f78c: 4b04 ldr r3, [pc, #16] ; (f7a0 ) f78e: 2101 movs r1, #1 f790: 7019 strb r1, [r3, #0] result = sys_time; } while(!tick_irq_flag); /*'lv_tick_inc()' clears this flag which can be in an interrupt. f792: 781a ldrb r2, [r3, #0] f794: 2a00 cmp r2, #0 f796: d0fb beq.n f790 result = sys_time; f798: 4b02 ldr r3, [pc, #8] ; (f7a4 ) Continue until make a non interrupted cycle */ return result; f79a: 6818 ldr r0, [r3, #0] #else return LV_TICK_CUSTOM_SYS_TIME_EXPR; #endif } f79c: 4770 bx lr f79e: 46c0 nop ; (mov r8, r8) f7a0: 20002bd8 .word 0x20002bd8 f7a4: 20002bd4 .word 0x20002bd4 0000f7a8 : * 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) { f7a8: b510 push {r4, lr} f7aa: 0004 movs r4, r0 uint32_t act_time = lv_tick_get(); f7ac: 4b01 ldr r3, [pc, #4] ; (f7b4 ) f7ae: 4798 blx r3 if(act_time >= prev_tick) { prev_tick = act_time - prev_tick; } else { prev_tick = UINT32_MAX - prev_tick + 1; prev_tick += act_time; f7b0: 1b00 subs r0, r0, r4 } return prev_tick; } f7b2: bd10 pop {r4, pc} f7b4: 0000f78d .word 0x0000f78d 0000f7b8 : * Calculate the current value of an animation applying linear characteristic * @param a pointer to an animation * @return the current value to set */ lv_anim_value_t lv_anim_path_linear(const lv_anim_path_t * path, const lv_anim_t * a) { f7b8: b510 push {r4, lr} f7ba: 000c movs r4, r1 /*Calculate the current step*/ uint32_t step; if(a->time == a->act_time) { f7bc: 6a09 ldr r1, [r1, #32] f7be: 6a60 ldr r0, [r4, #36] ; 0x24 f7c0: 4281 cmp r1, r0 f7c2: d00a beq.n f7da 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; f7c4: 0280 lsls r0, r0, #10 f7c6: 4b06 ldr r3, [pc, #24] ; (f7e0 ) f7c8: 4798 blx r3 } /* 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); f7ca: 69a3 ldr r3, [r4, #24] f7cc: 69e2 ldr r2, [r4, #28] f7ce: 1ad2 subs r2, r2, r3 f7d0: 4350 muls r0, r2 new_value = new_value >> LV_ANIM_RES_SHIFT; f7d2: 1280 asrs r0, r0, #10 new_value += a->start; f7d4: 1818 adds r0, r3, r0 return (lv_anim_value_t)new_value; f7d6: b200 sxth r0, r0 } f7d8: bd10 pop {r4, pc} step = LV_ANIM_RESOLUTION; /*Use the last value if the time fully elapsed*/ f7da: 2080 movs r0, #128 ; 0x80 f7dc: 00c0 lsls r0, r0, #3 f7de: e7f4 b.n f7ca f7e0: 00017881 .word 0x00017881 0000f7e4 : } return anim_list_changed; } static void anim_mark_list_change(void) { f7e4: b510 push {r4, lr} anim_list_changed = true; f7e6: 2201 movs r2, #1 f7e8: 4b09 ldr r3, [pc, #36] ; (f810 ) f7ea: 701a strb r2, [r3, #0] if(_lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)) == NULL) f7ec: 4809 ldr r0, [pc, #36] ; (f814 ) f7ee: 4b0a ldr r3, [pc, #40] ; (f818 ) f7f0: 4798 blx r3 f7f2: 2800 cmp r0, #0 f7f4: d005 beq.n f802 lv_task_set_prio(_lv_anim_task, LV_TASK_PRIO_OFF); else lv_task_set_prio(_lv_anim_task, LV_ANIM_TASK_PRIO); f7f6: 4b09 ldr r3, [pc, #36] ; (f81c ) f7f8: 6818 ldr r0, [r3, #0] f7fa: 2104 movs r1, #4 f7fc: 4b08 ldr r3, [pc, #32] ; (f820 ) f7fe: 4798 blx r3 } f800: bd10 pop {r4, pc} lv_task_set_prio(_lv_anim_task, LV_TASK_PRIO_OFF); f802: 4b06 ldr r3, [pc, #24] ; (f81c ) f804: 6818 ldr r0, [r3, #0] f806: 2100 movs r1, #0 f808: 4b05 ldr r3, [pc, #20] ; (f820 ) f80a: 4798 blx r3 f80c: e7f8 b.n f800 f80e: 46c0 nop ; (mov r8, r8) f810: 20002be0 .word 0x20002be0 f814: 20004d88 .word 0x20004d88 f818: 0001066d .word 0x0001066d f81c: 20002bdc .word 0x20002bdc f820: 00011549 .word 0x00011549 0000f824 : { f824: b5f0 push {r4, r5, r6, r7, lr} f826: 46ce mov lr, r9 f828: 4647 mov r7, r8 f82a: b580 push {r7, lr} f82c: b091 sub sp, #68 ; 0x44 _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { f82e: 4865 ldr r0, [pc, #404] ; (f9c4 ) f830: 4b65 ldr r3, [pc, #404] ; (f9c8 ) f832: 4798 blx r3 f834: 2800 cmp r0, #0 f836: d00b beq.n f850 a->has_run = 0; f838: 253c movs r5, #60 ; 0x3c _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { f83a: 4c62 ldr r4, [pc, #392] ; (f9c4 ) f83c: 4e63 ldr r6, [pc, #396] ; (f9cc ) a->has_run = 0; f83e: 5d43 ldrb r3, [r0, r5] f840: 2202 movs r2, #2 f842: 4393 bics r3, r2 f844: 5543 strb r3, [r0, r5] _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { f846: 0001 movs r1, r0 f848: 0020 movs r0, r4 f84a: 47b0 blx r6 f84c: 2800 cmp r0, #0 f84e: d1f6 bne.n f83e uint32_t elaps = lv_tick_elaps(last_task_run); f850: 4b5f ldr r3, [pc, #380] ; (f9d0 ) f852: 6818 ldr r0, [r3, #0] f854: 4b5f ldr r3, [pc, #380] ; (f9d4 ) f856: 4798 blx r3 f858: 0007 movs r7, r0 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); f85a: 485a ldr r0, [pc, #360] ; (f9c4 ) f85c: 4b5a ldr r3, [pc, #360] ; (f9c8 ) f85e: 4798 blx r3 f860: 1e04 subs r4, r0, #0 while(a != NULL) { f862: d100 bne.n f866 f864: e08c b.n f980 anim_list_changed = false; f866: 4e5c ldr r6, [pc, #368] ; (f9d8 ) f868: 2500 movs r5, #0 if(anim_list_changed) f86a: 46b0 mov r8, r6 f86c: e026 b.n f8bc int32_t new_act_time = a->act_time + elaps; f86e: 19db adds r3, r3, r7 if(a->act_time <= 0 && new_act_time >= 0) { f870: 2b00 cmp r3, #0 f872: da00 bge.n f876 f874: e08d b.n f992 if(a->start_cb) a->start_cb(a); f876: 68a2 ldr r2, [r4, #8] f878: 2a00 cmp r2, #0 f87a: d100 bne.n f87e f87c: e090 b.n f9a0 f87e: 0020 movs r0, r4 f880: 4790 blx r2 f882: e028 b.n f8d6 if(a->path.cb) new_value = a->path.cb(&a->path, a); f884: 6923 ldr r3, [r4, #16] f886: 2b00 cmp r3, #0 f888: d02f beq.n f8ea f88a: 0020 movs r0, r4 f88c: 3010 adds r0, #16 f88e: 0021 movs r1, r4 f890: 4798 blx r3 if(a->exec_cb) a->exec_cb(a->var, new_value); f892: 6863 ldr r3, [r4, #4] f894: 2b00 cmp r3, #0 f896: d002 beq.n f89e f898: b201 sxth r1, r0 f89a: 6820 ldr r0, [r4, #0] f89c: 4798 blx r3 if(a->act_time >= a->time) { f89e: 6a63 ldr r3, [r4, #36] ; 0x24 f8a0: 6a22 ldr r2, [r4, #32] f8a2: 4293 cmp r3, r2 f8a4: d227 bcs.n f8f6 if(anim_list_changed) f8a6: 4643 mov r3, r8 f8a8: 781b ldrb r3, [r3, #0] f8aa: 2b00 cmp r3, #0 f8ac: d100 bne.n f8b0 f8ae: e071 b.n f994 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); f8b0: 4844 ldr r0, [pc, #272] ; (f9c4 ) f8b2: 4b45 ldr r3, [pc, #276] ; (f9c8 ) f8b4: 4798 blx r3 f8b6: 0004 movs r4, r0 while(a != NULL) { f8b8: 2c00 cmp r4, #0 f8ba: d061 beq.n f980 anim_list_changed = false; f8bc: 7035 strb r5, [r6, #0] if(!a->has_run) { f8be: 233c movs r3, #60 ; 0x3c f8c0: 5ce3 ldrb r3, [r4, r3] f8c2: 079b lsls r3, r3, #30 f8c4: d466 bmi.n f994 a->has_run = 1; /*The list readying might be reseted so need to know which anim has run already*/ f8c6: 223c movs r2, #60 ; 0x3c f8c8: 5ca3 ldrb r3, [r4, r2] f8ca: 2102 movs r1, #2 f8cc: 430b orrs r3, r1 f8ce: 54a3 strb r3, [r4, r2] int32_t new_act_time = a->act_time + elaps; f8d0: 6a63 ldr r3, [r4, #36] ; 0x24 if(a->act_time <= 0 && new_act_time >= 0) { f8d2: 2b00 cmp r3, #0 f8d4: ddcb ble.n f86e a->act_time += elaps; f8d6: 6a63 ldr r3, [r4, #36] ; 0x24 f8d8: 18fb adds r3, r7, r3 f8da: 6263 str r3, [r4, #36] ; 0x24 if(a->act_time >= 0) { f8dc: 2b00 cmp r3, #0 f8de: dbe2 blt.n f8a6 if(a->act_time > a->time) a->act_time = a->time; f8e0: 6a22 ldr r2, [r4, #32] f8e2: 429a cmp r2, r3 f8e4: d2ce bcs.n f884 f8e6: 6262 str r2, [r4, #36] ; 0x24 f8e8: e7cc b.n f884 else new_value = lv_anim_path_linear(&a->path, a); f8ea: 0020 movs r0, r4 f8ec: 3010 adds r0, #16 f8ee: 0021 movs r1, r4 f8f0: 4b3a ldr r3, [pc, #232] ; (f9dc ) f8f2: 4798 blx r3 f8f4: e7cd b.n f892 if(a->playback_now == 0 && a->repeat_cnt > 0 && a->repeat_cnt != LV_ANIM_REPEAT_INFINITE) { f8f6: 233c movs r3, #60 ; 0x3c f8f8: 5ce3 ldrb r3, [r4, r3] f8fa: 2201 movs r2, #1 f8fc: 4013 ands r3, r2 f8fe: 1e18 subs r0, r3, #0 f900: d107 bne.n f912 f902: 8ea2 ldrh r2, [r4, #52] ; 0x34 f904: 2a00 cmp r2, #0 f906: d04d beq.n f9a4 f908: 4935 ldr r1, [pc, #212] ; (f9e0 ) f90a: 428a cmp r2, r1 f90c: d051 beq.n f9b2 a->repeat_cnt--; f90e: 3a01 subs r2, #1 f910: 86a2 strh r2, [r4, #52] ; 0x34 if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) { f912: 8ea2 ldrh r2, [r4, #52] ; 0x34 f914: 2a00 cmp r2, #0 f916: d01a beq.n f94e a->act_time = -a->repeat_delay; /*Restart the animation*/ f918: 6b23 ldr r3, [r4, #48] ; 0x30 f91a: 425a negs r2, r3 f91c: 6262 str r2, [r4, #36] ; 0x24 if(a->playback_time != 0) { f91e: 6ae2 ldr r2, [r4, #44] ; 0x2c f920: 2a00 cmp r2, #0 f922: d0c0 beq.n f8a6 if(a->playback_now == 0) a->act_time = -a->playback_delay; f924: 2800 cmp r0, #0 f926: d040 beq.n f9aa a->playback_now = a->playback_now == 0 ? 1 : 0; f928: 4243 negs r3, r0 f92a: 4143 adcs r3, r0 f92c: 4699 mov r9, r3 f92e: 203c movs r0, #60 ; 0x3c f930: 5c21 ldrb r1, [r4, r0] f932: 2301 movs r3, #1 f934: 4399 bics r1, r3 f936: 464b mov r3, r9 f938: 430b orrs r3, r1 f93a: 5423 strb r3, [r4, r0] tmp = a->start; f93c: 69a1 ldr r1, [r4, #24] a->start = a->end; f93e: 69e0 ldr r0, [r4, #28] f940: 61a0 str r0, [r4, #24] a->end = tmp; f942: 61e1 str r1, [r4, #28] a->time = a->playback_now == 0 ? a->time_orig : a->playback_time; f944: 07db lsls r3, r3, #31 f946: d400 bmi.n f94a f948: 6ba2 ldr r2, [r4, #56] ; 0x38 f94a: 6222 str r2, [r4, #32] f94c: e7ab b.n f8a6 if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) { f94e: 6ae2 ldr r2, [r4, #44] ; 0x2c f950: 2a00 cmp r2, #0 f952: d001 beq.n f958 f954: 2800 cmp r0, #0 f956: d028 beq.n f9aa _lv_memcpy(&a_tmp, a, sizeof(lv_anim_t)); f958: 2240 movs r2, #64 ; 0x40 f95a: 0021 movs r1, r4 f95c: 4668 mov r0, sp f95e: 4b21 ldr r3, [pc, #132] ; (f9e4 ) f960: 4798 blx r3 _lv_ll_remove(&LV_GC_ROOT(_lv_anim_ll), a); f962: 0021 movs r1, r4 f964: 4817 ldr r0, [pc, #92] ; (f9c4 ) f966: 4b20 ldr r3, [pc, #128] ; (f9e8 ) f968: 4798 blx r3 lv_mem_free(a); f96a: 0020 movs r0, r4 f96c: 4b1f ldr r3, [pc, #124] ; (f9ec ) f96e: 4798 blx r3 anim_mark_list_change(); f970: 4b1f ldr r3, [pc, #124] ; (f9f0 ) f972: 4798 blx r3 if(a_tmp.ready_cb != NULL) a_tmp.ready_cb(&a_tmp); f974: 9b03 ldr r3, [sp, #12] f976: 2b00 cmp r3, #0 f978: d095 beq.n f8a6 f97a: 4668 mov r0, sp f97c: 4798 blx r3 f97e: e792 b.n f8a6 last_task_run = lv_tick_get(); f980: 4b1c ldr r3, [pc, #112] ; (f9f4 ) f982: 4798 blx r3 f984: 4b12 ldr r3, [pc, #72] ; (f9d0 ) f986: 6018 str r0, [r3, #0] } f988: b011 add sp, #68 ; 0x44 f98a: bc0c pop {r2, r3} f98c: 4690 mov r8, r2 f98e: 4699 mov r9, r3 f990: bdf0 pop {r4, r5, r6, r7, pc} a->act_time += elaps; f992: 6263 str r3, [r4, #36] ; 0x24 a = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); f994: 0021 movs r1, r4 f996: 480b ldr r0, [pc, #44] ; (f9c4 ) f998: 4b0c ldr r3, [pc, #48] ; (f9cc ) f99a: 4798 blx r3 f99c: 0004 movs r4, r0 f99e: e78b b.n f8b8 a->act_time += elaps; f9a0: 6263 str r3, [r4, #36] ; 0x24 f9a2: e79d b.n f8e0 if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) { f9a4: 6ae2 ldr r2, [r4, #44] ; 0x2c f9a6: 2a00 cmp r2, #0 f9a8: d0d6 beq.n f958 if(a->playback_now == 0) a->act_time = -a->playback_delay; f9aa: 6aa3 ldr r3, [r4, #40] ; 0x28 f9ac: 4259 negs r1, r3 f9ae: 6261 str r1, [r4, #36] ; 0x24 f9b0: e7ba b.n f928 a->act_time = -a->repeat_delay; /*Restart the animation*/ f9b2: 6b23 ldr r3, [r4, #48] ; 0x30 f9b4: 425a negs r2, r3 f9b6: 6262 str r2, [r4, #36] ; 0x24 if(a->playback_time != 0) { f9b8: 6ae2 ldr r2, [r4, #44] ; 0x2c f9ba: 2a00 cmp r2, #0 f9bc: d100 bne.n f9c0 f9be: e772 b.n f8a6 f9c0: e7f3 b.n f9aa f9c2: 46c0 nop ; (mov r8, r8) f9c4: 20004d88 .word 0x20004d88 f9c8: 0001066d .word 0x0001066d f9cc: 00010685 .word 0x00010685 f9d0: 20002be4 .word 0x20002be4 f9d4: 0000f7a9 .word 0x0000f7a9 f9d8: 20002be0 .word 0x20002be0 f9dc: 0000f7b9 .word 0x0000f7b9 f9e0: 0000ffff .word 0x0000ffff f9e4: 00010c8d .word 0x00010c8d f9e8: 00010755 .word 0x00010755 f9ec: 00010b39 .word 0x00010b39 f9f0: 0000f7e5 .word 0x0000f7e5 f9f4: 0000f78d .word 0x0000f78d 0000f9f8 <_lv_anim_core_init>: { f9f8: b510 push {r4, lr} _lv_ll_init(&LV_GC_ROOT(_lv_anim_ll), sizeof(lv_anim_t)); f9fa: 2140 movs r1, #64 ; 0x40 f9fc: 480a ldr r0, [pc, #40] ; (fa28 <_lv_anim_core_init+0x30>) f9fe: 4b0b ldr r3, [pc, #44] ; (fa2c <_lv_anim_core_init+0x34>) fa00: 4798 blx r3 last_task_run = lv_tick_get(); fa02: 4b0b ldr r3, [pc, #44] ; (fa30 <_lv_anim_core_init+0x38>) fa04: 4798 blx r3 fa06: 4b0b ldr r3, [pc, #44] ; (fa34 <_lv_anim_core_init+0x3c>) fa08: 6018 str r0, [r3, #0] _lv_anim_task = lv_task_create(anim_task, LV_DISP_DEF_REFR_PERIOD, LV_ANIM_TASK_PRIO, NULL); fa0a: 2300 movs r3, #0 fa0c: 2204 movs r2, #4 fa0e: 211e movs r1, #30 fa10: 4809 ldr r0, [pc, #36] ; (fa38 <_lv_anim_core_init+0x40>) fa12: 4c0a ldr r4, [pc, #40] ; (fa3c <_lv_anim_core_init+0x44>) fa14: 47a0 blx r4 fa16: 4b0a ldr r3, [pc, #40] ; (fa40 <_lv_anim_core_init+0x48>) fa18: 6018 str r0, [r3, #0] anim_mark_list_change(); /*Turn off the animation task*/ fa1a: 4b0a ldr r3, [pc, #40] ; (fa44 <_lv_anim_core_init+0x4c>) fa1c: 4798 blx r3 anim_list_changed = false; /*The list has not actaully changed*/ fa1e: 2200 movs r2, #0 fa20: 4b09 ldr r3, [pc, #36] ; (fa48 <_lv_anim_core_init+0x50>) fa22: 701a strb r2, [r3, #0] } fa24: bd10 pop {r4, pc} fa26: 46c0 nop ; (mov r8, r8) fa28: 20004d88 .word 0x20004d88 fa2c: 000105b9 .word 0x000105b9 fa30: 0000f78d .word 0x0000f78d fa34: 20002be4 .word 0x20002be4 fa38: 0000f825 .word 0x0000f825 fa3c: 000115d9 .word 0x000115d9 fa40: 20002bdc .word 0x20002bdc fa44: 0000f7e5 .word 0x0000f7e5 fa48: 20002be0 .word 0x20002be0 0000fa4c : { fa4c: b510 push {r4, lr} fa4e: 0004 movs r4, r0 _lv_memset_00(a, sizeof(lv_anim_t)); fa50: 2140 movs r1, #64 ; 0x40 fa52: 4b0d ldr r3, [pc, #52] ; (fa88 ) fa54: 4798 blx r3 a->time = 500; fa56: 23fa movs r3, #250 ; 0xfa fa58: 005b lsls r3, r3, #1 fa5a: 6223 str r3, [r4, #32] a->start = 0; fa5c: 2300 movs r3, #0 fa5e: 61a3 str r3, [r4, #24] a->end = 100; fa60: 3364 adds r3, #100 ; 0x64 fa62: 61e3 str r3, [r4, #28] { uint8_t * d8 = (uint8_t *)dst; const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; fa64: 4b09 ldr r3, [pc, #36] ; (fa8c ) fa66: 781a ldrb r2, [r3, #0] fa68: 7422 strb r2, [r4, #16] fa6a: 785a ldrb r2, [r3, #1] fa6c: 7462 strb r2, [r4, #17] fa6e: 789a ldrb r2, [r3, #2] fa70: 74a2 strb r2, [r4, #18] fa72: 78db ldrb r3, [r3, #3] fa74: 74e3 strb r3, [r4, #19] a->repeat_cnt = 1; fa76: 2301 movs r3, #1 fa78: 86a3 strh r3, [r4, #52] ; 0x34 a->early_apply = 1; fa7a: 2236 movs r2, #54 ; 0x36 fa7c: 5ca3 ldrb r3, [r4, r2] fa7e: 2101 movs r1, #1 fa80: 430b orrs r3, r1 fa82: 54a3 strb r3, [r4, r2] } fa84: bd10 pop {r4, pc} fa86: 46c0 nop ; (mov r8, r8) fa88: 0001104d .word 0x0001104d fa8c: 0001c768 .word 0x0001c768 0000fa90 : { fa90: b5f0 push {r4, r5, r6, r7, lr} fa92: 46d6 mov lr, sl fa94: b500 push {lr} fa96: b082 sub sp, #8 fa98: 0006 movs r6, r0 fa9a: 468a mov sl, r1 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); fa9c: 4815 ldr r0, [pc, #84] ; (faf4 ) fa9e: 4b16 ldr r3, [pc, #88] ; (faf8 ) faa0: 4798 blx r3 faa2: 1e04 subs r4, r0, #0 while(a != NULL) { faa4: d01e beq.n fae4 faa6: 2300 movs r3, #0 faa8: 9301 str r3, [sp, #4] a_next = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); faaa: 4f14 ldr r7, [pc, #80] ; (fafc ) faac: e00c b.n fac8 _lv_ll_remove(&LV_GC_ROOT(_lv_anim_ll), a); faae: 0021 movs r1, r4 fab0: 4810 ldr r0, [pc, #64] ; (faf4 ) fab2: 4b13 ldr r3, [pc, #76] ; (fb00 ) fab4: 4798 blx r3 lv_mem_free(a); fab6: 0020 movs r0, r4 fab8: 4b12 ldr r3, [pc, #72] ; (fb04 ) faba: 4798 blx r3 anim_mark_list_change(); /*Read by `anim_task`. It need to know if a delete occurred in fabc: 4b12 ldr r3, [pc, #72] ; (fb08 ) fabe: 4798 blx r3 del = true; fac0: 2301 movs r3, #1 fac2: 9301 str r3, [sp, #4] fac4: 1e2c subs r4, r5, #0 while(a != NULL) { fac6: d00f beq.n fae8 a_next = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); fac8: 0021 movs r1, r4 faca: 480a ldr r0, [pc, #40] ; (faf4 ) facc: 47b8 blx r7 face: 0005 movs r5, r0 if(a->var == var && (a->exec_cb == exec_cb || exec_cb == NULL)) { fad0: 6823 ldr r3, [r4, #0] fad2: 42b3 cmp r3, r6 fad4: d1f6 bne.n fac4 fad6: 6863 ldr r3, [r4, #4] fad8: 4553 cmp r3, sl fada: d0e8 beq.n faae fadc: 4653 mov r3, sl fade: 2b00 cmp r3, #0 fae0: d1f0 bne.n fac4 fae2: e7e4 b.n faae bool del = false; fae4: 2300 movs r3, #0 fae6: 9301 str r3, [sp, #4] } fae8: 9801 ldr r0, [sp, #4] faea: b002 add sp, #8 faec: bc04 pop {r2} faee: 4692 mov sl, r2 faf0: bdf0 pop {r4, r5, r6, r7, pc} faf2: 46c0 nop ; (mov r8, r8) faf4: 20004d88 .word 0x20004d88 faf8: 0001066d .word 0x0001066d fafc: 00010685 .word 0x00010685 fb00: 00010755 .word 0x00010755 fb04: 00010b39 .word 0x00010b39 fb08: 0000f7e5 .word 0x0000f7e5 0000fb0c : { fb0c: b570 push {r4, r5, r6, lr} fb0e: 0005 movs r5, r0 if(a->exec_cb != NULL) lv_anim_del(a->var, a->exec_cb); /*fp == NULL would delete all animations of var*/ fb10: 6841 ldr r1, [r0, #4] fb12: 2900 cmp r1, #0 fb14: d002 beq.n fb1c fb16: 6800 ldr r0, [r0, #0] fb18: 4b19 ldr r3, [pc, #100] ; (fb80 ) fb1a: 4798 blx r3 if(_lv_ll_is_empty(&LV_GC_ROOT(_lv_anim_ll))) { fb1c: 4819 ldr r0, [pc, #100] ; (fb84 ) fb1e: 4b1a ldr r3, [pc, #104] ; (fb88 ) fb20: 4798 blx r3 fb22: 2800 cmp r0, #0 fb24: d120 bne.n fb68 lv_anim_t * new_anim = _lv_ll_ins_head(&LV_GC_ROOT(_lv_anim_ll)); fb26: 4817 ldr r0, [pc, #92] ; (fb84 ) fb28: 4b18 ldr r3, [pc, #96] ; (fb8c ) fb2a: 4798 blx r3 fb2c: 0004 movs r4, r0 LV_ASSERT_MEM(new_anim); fb2e: 4b18 ldr r3, [pc, #96] ; (fb90 ) fb30: 4798 blx r3 fb32: 2800 cmp r0, #0 fb34: d01e beq.n fb74 if(new_anim == NULL) return; fb36: 2c00 cmp r4, #0 fb38: d015 beq.n fb66 a->time_orig = a->time; fb3a: 6a2b ldr r3, [r5, #32] fb3c: 63ab str r3, [r5, #56] ; 0x38 _lv_memcpy(new_anim, a, sizeof(lv_anim_t)); fb3e: 2240 movs r2, #64 ; 0x40 fb40: 0029 movs r1, r5 fb42: 0020 movs r0, r4 fb44: 4b13 ldr r3, [pc, #76] ; (fb94 ) fb46: 4798 blx r3 if(new_anim->early_apply) { fb48: 2336 movs r3, #54 ; 0x36 fb4a: 5ce3 ldrb r3, [r4, r3] fb4c: 07db lsls r3, r3, #31 fb4e: d508 bpl.n fb62 if(new_anim->exec_cb && new_anim->var) new_anim->exec_cb(new_anim->var, new_anim->start); fb50: 6863 ldr r3, [r4, #4] fb52: 2b00 cmp r3, #0 fb54: d005 beq.n fb62 fb56: 6820 ldr r0, [r4, #0] fb58: 2800 cmp r0, #0 fb5a: d002 beq.n fb62 fb5c: 2218 movs r2, #24 fb5e: 5ea1 ldrsh r1, [r4, r2] fb60: 4798 blx r3 anim_mark_list_change(); fb62: 4b0d ldr r3, [pc, #52] ; (fb98 ) fb64: 4798 blx r3 } fb66: bd70 pop {r4, r5, r6, pc} last_task_run = lv_tick_get() - 1; fb68: 4b0c ldr r3, [pc, #48] ; (fb9c ) fb6a: 4798 blx r3 fb6c: 3801 subs r0, #1 fb6e: 4b0c ldr r3, [pc, #48] ; (fba0 ) fb70: 6018 str r0, [r3, #0] fb72: e7d8 b.n fb26 LV_ASSERT_MEM(new_anim); fb74: 0022 movs r2, r4 fb76: 2300 movs r3, #0 fb78: 480a ldr r0, [pc, #40] ; (fba4 ) fb7a: 490b ldr r1, [pc, #44] ; (fba8 ) fb7c: 4788 blx r1 fb7e: e7fe b.n fb7e fb80: 0000fa91 .word 0x0000fa91 fb84: 20004d88 .word 0x20004d88 fb88: 00010915 .word 0x00010915 fb8c: 000105cd .word 0x000105cd fb90: 0000147d .word 0x0000147d fb94: 00010c8d .word 0x00010c8d fb98: 0000f7e5 .word 0x0000f7e5 fb9c: 0000f78d .word 0x0000f78d fba0: 20002be4 .word 0x20002be4 fba4: 00018724 .word 0x00018724 fba8: 00001485 .word 0x00001485 0000fbac : /********************** * STATIC FUNCTIONS **********************/ static bool lv_point_within_circle(const lv_area_t * area, const lv_point_t * p) { fbac: b570 push {r4, r5, r6, lr} lv_coord_t r = (area->x2 - area->x1) / 2; fbae: 2300 movs r3, #0 fbb0: 5ec6 ldrsh r6, [r0, r3] fbb2: 2304 movs r3, #4 fbb4: 5ec2 ldrsh r2, [r0, r3] fbb6: 1b92 subs r2, r2, r6 fbb8: 0fd4 lsrs r4, r2, #31 fbba: 18a4 adds r4, r4, r2 fbbc: 1064 asrs r4, r4, #1 /* Circle center */ lv_coord_t cx = area->x1 + r; fbbe: b2a5 uxth r5, r4 /*Simplify the code by moving everything to (0, 0) */ lv_coord_t px = p->x - cx; lv_coord_t py = p->y - cy; int32_t r_sqrd = r * r; fbc0: b224 sxth r4, r4 lv_coord_t px = p->x - cx; fbc2: 880b ldrh r3, [r1, #0] fbc4: 1b9b subs r3, r3, r6 fbc6: 1b5b subs r3, r3, r5 int32_t dist = (px * px) + (py * py); fbc8: b21b sxth r3, r3 lv_coord_t py = p->y - cy; fbca: 884a ldrh r2, [r1, #2] fbcc: 8841 ldrh r1, [r0, #2] fbce: 1a52 subs r2, r2, r1 fbd0: 1b52 subs r2, r2, r5 int32_t dist = (px * px) + (py * py); fbd2: b212 sxth r2, r2 int32_t r_sqrd = r * r; fbd4: 4364 muls r4, r4 int32_t dist = (px * px) + (py * py); fbd6: 435b muls r3, r3 fbd8: 4352 muls r2, r2 fbda: 189b adds r3, r3, r2 if(dist <= r_sqrd) fbdc: 17e0 asrs r0, r4, #31 fbde: 0fda lsrs r2, r3, #31 fbe0: 429c cmp r4, r3 fbe2: 4150 adcs r0, r2 fbe4: b2c0 uxtb r0, r0 return true; else return false; } fbe6: bd70 pop {r4, r5, r6, pc} 0000fbe8 : area_p->y2 = area_p->y1 + h - 1; fbe8: 1e4b subs r3, r1, #1 fbea: 8841 ldrh r1, [r0, #2] fbec: 18c9 adds r1, r1, r3 fbee: 80c1 strh r1, [r0, #6] } fbf0: 4770 bx lr 0000fbf2 : size = (uint32_t)(area_p->x2 - area_p->x1 + 1) * (area_p->y2 - area_p->y1 + 1); fbf2: 2304 movs r3, #4 fbf4: 5ec2 ldrsh r2, [r0, r3] fbf6: 2100 movs r1, #0 fbf8: 5e43 ldrsh r3, [r0, r1] fbfa: 1ad2 subs r2, r2, r3 fbfc: 3201 adds r2, #1 fbfe: 2106 movs r1, #6 fc00: 5e43 ldrsh r3, [r0, r1] fc02: 2102 movs r1, #2 fc04: 5e40 ldrsh r0, [r0, r1] fc06: 1a18 subs r0, r3, r0 fc08: 3001 adds r0, #1 fc0a: 4350 muls r0, r2 } fc0c: 4770 bx lr 0000fc0e <_lv_area_intersect>: { fc0e: b5f0 push {r4, r5, r6, r7, lr} fc10: 46c6 mov lr, r8 fc12: b500 push {lr} res_p->x1 = LV_MATH_MAX(a1_p->x1, a2_p->x1); fc14: 880d ldrh r5, [r1, #0] fc16: 8813 ldrh r3, [r2, #0] fc18: 1c1c adds r4, r3, #0 fc1a: b21b sxth r3, r3 fc1c: b22e sxth r6, r5 fc1e: 42b3 cmp r3, r6 fc20: da00 bge.n fc24 <_lv_area_intersect+0x16> fc22: 1c2c adds r4, r5, #0 fc24: b226 sxth r6, r4 fc26: 8004 strh r4, [r0, #0] res_p->y1 = LV_MATH_MAX(a1_p->y1, a2_p->y1); fc28: 884d ldrh r5, [r1, #2] fc2a: 8853 ldrh r3, [r2, #2] fc2c: 1c1c adds r4, r3, #0 fc2e: b21b sxth r3, r3 fc30: b22f sxth r7, r5 fc32: 42bb cmp r3, r7 fc34: da00 bge.n fc38 <_lv_area_intersect+0x2a> fc36: 1c2c adds r4, r5, #0 fc38: b227 sxth r7, r4 fc3a: 8044 strh r4, [r0, #2] res_p->x2 = LV_MATH_MIN(a1_p->x2, a2_p->x2); fc3c: 888d ldrh r5, [r1, #4] fc3e: 8893 ldrh r3, [r2, #4] fc40: 1c1c adds r4, r3, #0 fc42: b21b sxth r3, r3 fc44: 4698 mov r8, r3 fc46: b22b sxth r3, r5 fc48: 4598 cmp r8, r3 fc4a: dd00 ble.n fc4e <_lv_area_intersect+0x40> fc4c: 1c2c adds r4, r5, #0 fc4e: b225 sxth r5, r4 fc50: 8084 strh r4, [r0, #4] res_p->y2 = LV_MATH_MIN(a1_p->y2, a2_p->y2); fc52: 88c9 ldrh r1, [r1, #6] fc54: 88d3 ldrh r3, [r2, #6] fc56: 1c1a adds r2, r3, #0 fc58: b21b sxth r3, r3 fc5a: b20c sxth r4, r1 fc5c: 42a3 cmp r3, r4 fc5e: dd00 ble.n fc62 <_lv_area_intersect+0x54> fc60: 1c0a adds r2, r1, #0 fc62: b213 sxth r3, r2 fc64: 80c2 strh r2, [r0, #6] union_ok = false; fc66: 2000 movs r0, #0 if((res_p->x1 > res_p->x2) || (res_p->y1 > res_p->y2)) { fc68: 42ae cmp r6, r5 fc6a: dc04 bgt.n fc76 <_lv_area_intersect+0x68> fc6c: 0ff8 lsrs r0, r7, #31 fc6e: 17da asrs r2, r3, #31 fc70: 42bb cmp r3, r7 fc72: 4150 adcs r0, r2 fc74: b2c0 uxtb r0, r0 } fc76: bc04 pop {r2} fc78: 4690 mov r8, r2 fc7a: bdf0 pop {r4, r5, r6, r7, pc} 0000fc7c <_lv_area_join>: { fc7c: b570 push {r4, r5, r6, lr} a_res_p->x1 = LV_MATH_MIN(a1_p->x1, a2_p->x1); fc7e: 880d ldrh r5, [r1, #0] fc80: 8813 ldrh r3, [r2, #0] fc82: 1c1c adds r4, r3, #0 fc84: b21b sxth r3, r3 fc86: b22e sxth r6, r5 fc88: 42b3 cmp r3, r6 fc8a: dd00 ble.n fc8e <_lv_area_join+0x12> fc8c: 1c2c adds r4, r5, #0 fc8e: 8004 strh r4, [r0, #0] a_res_p->y1 = LV_MATH_MIN(a1_p->y1, a2_p->y1); fc90: 884d ldrh r5, [r1, #2] fc92: 8853 ldrh r3, [r2, #2] fc94: 1c1c adds r4, r3, #0 fc96: b21b sxth r3, r3 fc98: b22e sxth r6, r5 fc9a: 42b3 cmp r3, r6 fc9c: dd00 ble.n fca0 <_lv_area_join+0x24> fc9e: 1c2c adds r4, r5, #0 fca0: 8044 strh r4, [r0, #2] a_res_p->x2 = LV_MATH_MAX(a1_p->x2, a2_p->x2); fca2: 888d ldrh r5, [r1, #4] fca4: 8893 ldrh r3, [r2, #4] fca6: 1c1c adds r4, r3, #0 fca8: b21b sxth r3, r3 fcaa: b22e sxth r6, r5 fcac: 42b3 cmp r3, r6 fcae: da00 bge.n fcb2 <_lv_area_join+0x36> fcb0: 1c2c adds r4, r5, #0 fcb2: 8084 strh r4, [r0, #4] a_res_p->y2 = LV_MATH_MAX(a1_p->y2, a2_p->y2); fcb4: 88c9 ldrh r1, [r1, #6] fcb6: 88d3 ldrh r3, [r2, #6] fcb8: 1c1a adds r2, r3, #0 fcba: b21b sxth r3, r3 fcbc: b20c sxth r4, r1 fcbe: 42a3 cmp r3, r4 fcc0: da00 bge.n fcc4 <_lv_area_join+0x48> fcc2: 1c0a adds r2, r1, #0 fcc4: 80c2 strh r2, [r0, #6] } fcc6: bd70 pop {r4, r5, r6, pc} 0000fcc8 <_lv_area_is_point_on>: { fcc8: b5f0 push {r4, r5, r6, r7, lr} fcca: 46de mov lr, fp fccc: 4657 mov r7, sl fcce: 464e mov r6, r9 fcd0: 4645 mov r5, r8 fcd2: b5e0 push {r5, r6, r7, lr} fcd4: b085 sub sp, #20 fcd6: 000e movs r6, r1 if((p_p->x >= a_p->x1 && p_p->x <= a_p->x2) && ((p_p->y >= a_p->y1 && p_p->y <= a_p->y2))) { fcd8: 2300 movs r3, #0 fcda: 5ecc ldrsh r4, [r1, r3] fcdc: 2300 movs r3, #0 fcde: 5ec1 ldrsh r1, [r0, r3] return false; fce0: 2300 movs r3, #0 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))) { fce2: 428c cmp r4, r1 fce4: db5e blt.n fda4 <_lv_area_is_point_on+0xdc> fce6: 2504 movs r5, #4 fce8: 5f43 ldrsh r3, [r0, r5] fcea: 4698 mov r8, r3 return false; fcec: 2300 movs r3, #0 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))) { fcee: 4544 cmp r4, r8 fcf0: dc58 bgt.n fda4 <_lv_area_is_point_on+0xdc> fcf2: 2302 movs r3, #2 fcf4: 5ef4 ldrsh r4, [r6, r3] fcf6: 2502 movs r5, #2 fcf8: 5f43 ldrsh r3, [r0, r5] fcfa: 469a mov sl, r3 return false; fcfc: 2300 movs r3, #0 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))) { fcfe: 4554 cmp r4, sl fd00: db50 blt.n fda4 <_lv_area_is_point_on+0xdc> fd02: 2306 movs r3, #6 fd04: 5ec3 ldrsh r3, [r0, r3] fd06: 001d movs r5, r3 fd08: 9301 str r3, [sp, #4] return false; fd0a: 2300 movs r3, #0 if(!is_on_rect) fd0c: 42ac cmp r4, r5 fd0e: dc49 bgt.n fda4 <_lv_area_is_point_on+0xdc> if(radius <= 0) { fd10: 2a00 cmp r2, #0 fd12: dc00 bgt.n fd16 <_lv_area_is_point_on+0x4e> fd14: e09b b.n fe4e <_lv_area_is_point_on+0x186> * @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); fd16: 4643 mov r3, r8 fd18: 4668 mov r0, sp fd1a: 8003 strh r3, [r0, #0] fd1c: 8803 ldrh r3, [r0, #0] fd1e: 4699 mov r9, r3 fd20: b28c uxth r4, r1 * @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); fd22: b2af uxth r7, r5 fd24: 4653 mov r3, sl fd26: 8003 strh r3, [r0, #0] fd28: 8800 ldrh r0, [r0, #0] corner_area.x1 = a_p->x1; fd2a: ab02 add r3, sp, #8 fd2c: 8019 strh r1, [r3, #0] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); fd2e: 464b mov r3, r9 fd30: 3301 adds r3, #1 fd32: 1b1b subs r3, r3, r4 lv_coord_t w = lv_area_get_width(a_p) / 2; fd34: b21b sxth r3, r3 fd36: 0fd9 lsrs r1, r3, #31 fd38: 18cb adds r3, r1, r3 fd3a: 105b asrs r3, r3, #1 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); fd3c: 1c79 adds r1, r7, #1 fd3e: 1a09 subs r1, r1, r0 lv_coord_t h = lv_area_get_height(a_p) / 2; fd40: b209 sxth r1, r1 fd42: 0fcd lsrs r5, r1, #31 fd44: 186d adds r5, r5, r1 fd46: 106d asrs r5, r5, #1 lv_coord_t max_radius = LV_MATH_MIN(w, h); fd48: 1c19 adds r1, r3, #0 fd4a: b21b sxth r3, r3 fd4c: 42ab cmp r3, r5 fd4e: dd00 ble.n fd52 <_lv_area_is_point_on+0x8a> fd50: 1c29 adds r1, r5, #0 corner_area.x2 = a_p->x1 + radius; fd52: 1c0d adds r5, r1, #0 fd54: b209 sxth r1, r1 fd56: 4291 cmp r1, r2 fd58: dd00 ble.n fd5c <_lv_area_is_point_on+0x94> fd5a: 1c15 adds r5, r2, #0 fd5c: b2ad uxth r5, r5 fd5e: 192c adds r4, r5, r4 fd60: b2a4 uxth r4, r4 fd62: ab02 add r3, sp, #8 fd64: 809c strh r4, [r3, #4] corner_area.y1 = a_p->y1; fd66: 4652 mov r2, sl fd68: 805a strh r2, [r3, #2] corner_area.y2 = a_p->y1 + radius; fd6a: 1828 adds r0, r5, r0 fd6c: b283 uxth r3, r0 fd6e: 9300 str r3, [sp, #0] fd70: 466b mov r3, sp fd72: 2100 movs r1, #0 fd74: 5e5a ldrsh r2, [r3, r1] fd76: 4693 mov fp, r2 fd78: aa02 add r2, sp, #8 fd7a: 4659 mov r1, fp fd7c: 80d1 strh r1, [r2, #6] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { fd7e: 2200 movs r2, #0 fd80: 0031 movs r1, r6 fd82: a802 add r0, sp, #8 fd84: f7ff ffa0 bl fcc8 <_lv_area_is_point_on> fd88: 2800 cmp r0, #0 fd8a: d013 beq.n fdb4 <_lv_area_is_point_on+0xec> corner_area.x2 += radius; fd8c: 192c adds r4, r5, r4 fd8e: aa02 add r2, sp, #8 fd90: 8094 strh r4, [r2, #4] corner_area.y2 += radius; fd92: 9b00 ldr r3, [sp, #0] fd94: 469c mov ip, r3 fd96: 4465 add r5, ip fd98: 80d5 strh r5, [r2, #6] return lv_point_within_circle(&corner_area, p_p); fd9a: 0031 movs r1, r6 fd9c: 0010 movs r0, r2 fd9e: 4b2d ldr r3, [pc, #180] ; (fe54 <_lv_area_is_point_on+0x18c>) fda0: 4798 blx r3 fda2: 0003 movs r3, r0 } fda4: 0018 movs r0, r3 fda6: b005 add sp, #20 fda8: bc3c pop {r2, r3, r4, r5} fdaa: 4690 mov r8, r2 fdac: 4699 mov r9, r3 fdae: 46a2 mov sl, r4 fdb0: 46ab mov fp, r5 fdb2: bdf0 pop {r4, r5, r6, r7, pc} corner_area.y1 = a_p->y2 - radius; fdb4: 1b7f subs r7, r7, r5 fdb6: b2bf uxth r7, r7 fdb8: ab02 add r3, sp, #8 fdba: 805f strh r7, [r3, #2] corner_area.y2 = a_p->y2; fdbc: 466a mov r2, sp fdbe: 8892 ldrh r2, [r2, #4] fdc0: 80da strh r2, [r3, #6] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { fdc2: 2200 movs r2, #0 fdc4: 0031 movs r1, r6 fdc6: 0018 movs r0, r3 fdc8: f7ff ff7e bl fcc8 <_lv_area_is_point_on> fdcc: 2800 cmp r0, #0 fdce: d00a beq.n fde6 <_lv_area_is_point_on+0x11e> corner_area.x2 += radius; fdd0: 192c adds r4, r5, r4 fdd2: ab02 add r3, sp, #8 fdd4: 809c strh r4, [r3, #4] corner_area.y1 -= radius; fdd6: 1b7d subs r5, r7, r5 fdd8: 805d strh r5, [r3, #2] return lv_point_within_circle(&corner_area, p_p); fdda: 0031 movs r1, r6 fddc: 0018 movs r0, r3 fdde: 4b1d ldr r3, [pc, #116] ; (fe54 <_lv_area_is_point_on+0x18c>) fde0: 4798 blx r3 fde2: 0003 movs r3, r0 fde4: e7de b.n fda4 <_lv_area_is_point_on+0xdc> corner_area.x1 = a_p->x2 - radius; fde6: 464b mov r3, r9 fde8: 1b5c subs r4, r3, r5 fdea: b2a4 uxth r4, r4 fdec: ab02 add r3, sp, #8 fdee: 801c strh r4, [r3, #0] corner_area.x2 = a_p->x2; fdf0: 4642 mov r2, r8 fdf2: 809a strh r2, [r3, #4] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { fdf4: 2200 movs r2, #0 fdf6: 0031 movs r1, r6 fdf8: 0018 movs r0, r3 fdfa: f7ff ff65 bl fcc8 <_lv_area_is_point_on> fdfe: 2800 cmp r0, #0 fe00: d00a beq.n fe18 <_lv_area_is_point_on+0x150> corner_area.x1 -= radius; fe02: 1b64 subs r4, r4, r5 fe04: ab02 add r3, sp, #8 fe06: 801c strh r4, [r3, #0] corner_area.y1 -= radius; fe08: 1b7d subs r5, r7, r5 fe0a: 805d strh r5, [r3, #2] return lv_point_within_circle(&corner_area, p_p); fe0c: 0031 movs r1, r6 fe0e: 0018 movs r0, r3 fe10: 4b10 ldr r3, [pc, #64] ; (fe54 <_lv_area_is_point_on+0x18c>) fe12: 4798 blx r3 fe14: 0003 movs r3, r0 fe16: e7c5 b.n fda4 <_lv_area_is_point_on+0xdc> corner_area.y1 = a_p->y1; fe18: ab02 add r3, sp, #8 fe1a: 4652 mov r2, sl fe1c: 805a strh r2, [r3, #2] corner_area.y2 = a_p->y1 + radius; fe1e: 465a mov r2, fp fe20: 80da strh r2, [r3, #6] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { fe22: 2200 movs r2, #0 fe24: 0031 movs r1, r6 fe26: 0018 movs r0, r3 fe28: f7ff ff4e bl fcc8 <_lv_area_is_point_on> return true; fe2c: 2301 movs r3, #1 if(_lv_area_is_point_on(&corner_area, p_p, 0)) { fe2e: 2800 cmp r0, #0 fe30: d0b8 beq.n fda4 <_lv_area_is_point_on+0xdc> corner_area.x1 -= radius; fe32: 1b64 subs r4, r4, r5 fe34: ab02 add r3, sp, #8 fe36: 801c strh r4, [r3, #0] corner_area.y2 += radius; fe38: 9b00 ldr r3, [sp, #0] fe3a: 469c mov ip, r3 fe3c: 4465 add r5, ip fe3e: ab02 add r3, sp, #8 fe40: 80dd strh r5, [r3, #6] return lv_point_within_circle(&corner_area, p_p); fe42: 0031 movs r1, r6 fe44: 0018 movs r0, r3 fe46: 4b03 ldr r3, [pc, #12] ; (fe54 <_lv_area_is_point_on+0x18c>) fe48: 4798 blx r3 fe4a: 0003 movs r3, r0 fe4c: e7aa b.n fda4 <_lv_area_is_point_on+0xdc> return true; fe4e: 2301 movs r3, #1 fe50: e7a8 b.n fda4 <_lv_area_is_point_on+0xdc> fe52: 46c0 nop ; (mov r8, r8) fe54: 0000fbad .word 0x0000fbad 0000fe58 <_lv_area_is_on>: { fe58: b510 push {r4, lr} 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)) { fe5a: 2300 movs r3, #0 fe5c: 5ec4 ldrsh r4, [r0, r3] fe5e: 2304 movs r3, #4 fe60: 5eca ldrsh r2, [r1, r3] return false; fe62: 2300 movs r3, #0 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)) { fe64: 4294 cmp r4, r2 fe66: dc16 bgt.n fe96 <_lv_area_is_on+0x3e> fe68: 2304 movs r3, #4 fe6a: 5ec4 ldrsh r4, [r0, r3] fe6c: 2300 movs r3, #0 fe6e: 5eca ldrsh r2, [r1, r3] return false; fe70: 2300 movs r3, #0 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)) { fe72: 4294 cmp r4, r2 fe74: db0f blt.n fe96 <_lv_area_is_on+0x3e> fe76: 2302 movs r3, #2 fe78: 5ec4 ldrsh r4, [r0, r3] fe7a: 2306 movs r3, #6 fe7c: 5eca ldrsh r2, [r1, r3] return false; fe7e: 2300 movs r3, #0 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)) { fe80: 4294 cmp r4, r2 fe82: dc08 bgt.n fe96 <_lv_area_is_on+0x3e> fe84: 2306 movs r3, #6 fe86: 5ec4 ldrsh r4, [r0, r3] fe88: 2302 movs r3, #2 fe8a: 5eca ldrsh r2, [r1, r3] fe8c: 17e3 asrs r3, r4, #31 fe8e: 0fd0 lsrs r0, r2, #31 fe90: 4294 cmp r4, r2 fe92: 4143 adcs r3, r0 fe94: b2db uxtb r3, r3 } fe96: 0018 movs r0, r3 fe98: bd10 pop {r4, pc} ... 0000fe9c <_lv_area_is_in>: { fe9c: b5f0 push {r4, r5, r6, r7, lr} fe9e: 46c6 mov lr, r8 fea0: b500 push {lr} fea2: b082 sub sp, #8 fea4: 0005 movs r5, r0 fea6: 000c movs r4, r1 fea8: 0016 movs r6, r2 if(ain_p->x1 >= aholder_p->x1 && ain_p->y1 >= aholder_p->y1 && ain_p->x2 <= aholder_p->x2 && feaa: 2300 movs r3, #0 feac: 5ec7 ldrsh r7, [r0, r3] feae: 2200 movs r2, #0 feb0: 5e8b ldrsh r3, [r1, r2] bool is_in = false; feb2: 2000 movs r0, #0 if(ain_p->x1 >= aholder_p->x1 && ain_p->y1 >= aholder_p->y1 && ain_p->x2 <= aholder_p->x2 && feb4: 42bb cmp r3, r7 feb6: dc14 bgt.n fee2 <_lv_area_is_in+0x46> feb8: 2302 movs r3, #2 feba: 5eea ldrsh r2, [r5, r3] febc: 2102 movs r1, #2 febe: 5e63 ldrsh r3, [r4, r1] fec0: 429a cmp r2, r3 fec2: db0e blt.n fee2 <_lv_area_is_in+0x46> fec4: 2304 movs r3, #4 fec6: 5eea ldrsh r2, [r5, r3] fec8: 2104 movs r1, #4 feca: 5e63 ldrsh r3, [r4, r1] fecc: 429a cmp r2, r3 fece: dc08 bgt.n fee2 <_lv_area_is_in+0x46> fed0: 2206 movs r2, #6 fed2: 5eab ldrsh r3, [r5, r2] fed4: 2106 movs r1, #6 fed6: 5e62 ldrsh r2, [r4, r1] fed8: 0fd8 lsrs r0, r3, #31 feda: 17d1 asrs r1, r2, #31 fedc: 429a cmp r2, r3 fede: 4148 adcs r0, r1 fee0: b2c0 uxtb r0, r0 if(radius == 0) return is_in; fee2: 2e00 cmp r6, #0 fee4: d103 bne.n feee <_lv_area_is_in+0x52> } fee6: b002 add sp, #8 fee8: bc04 pop {r2} feea: 4690 mov r8, r2 feec: bdf0 pop {r4, r5, r6, r7, pc} p.x = ain_p->x1; feee: a901 add r1, sp, #4 fef0: 800f strh r7, [r1, #0] p.y = ain_p->y1; fef2: 886b ldrh r3, [r5, #2] fef4: 804b strh r3, [r1, #2] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; fef6: 0032 movs r2, r6 fef8: 0020 movs r0, r4 fefa: 4b10 ldr r3, [pc, #64] ; (ff3c <_lv_area_is_in+0xa0>) fefc: 4798 blx r3 fefe: 2800 cmp r0, #0 ff00: d0f1 beq.n fee6 <_lv_area_is_in+0x4a> p.x = ain_p->x2; ff02: 2204 movs r2, #4 ff04: 5eab ldrsh r3, [r5, r2] ff06: 4698 mov r8, r3 ff08: a901 add r1, sp, #4 ff0a: 800b strh r3, [r1, #0] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; ff0c: 0032 movs r2, r6 ff0e: 0020 movs r0, r4 ff10: 4b0a ldr r3, [pc, #40] ; (ff3c <_lv_area_is_in+0xa0>) ff12: 4798 blx r3 ff14: 2800 cmp r0, #0 ff16: d0e6 beq.n fee6 <_lv_area_is_in+0x4a> p.x = ain_p->x1; ff18: a901 add r1, sp, #4 ff1a: 800f strh r7, [r1, #0] p.y = ain_p->y2; ff1c: 88eb ldrh r3, [r5, #6] ff1e: 804b strh r3, [r1, #2] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; ff20: 0032 movs r2, r6 ff22: 0020 movs r0, r4 ff24: 4b05 ldr r3, [pc, #20] ; (ff3c <_lv_area_is_in+0xa0>) ff26: 4798 blx r3 ff28: 2800 cmp r0, #0 ff2a: d0dc beq.n fee6 <_lv_area_is_in+0x4a> p.x = ain_p->x2; ff2c: a901 add r1, sp, #4 ff2e: 4643 mov r3, r8 ff30: 800b strh r3, [r1, #0] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; ff32: 0032 movs r2, r6 ff34: 0020 movs r0, r4 ff36: 4b01 ldr r3, [pc, #4] ; (ff3c <_lv_area_is_in+0xa0>) ff38: 4798 blx r3 ff3a: e7d4 b.n fee6 <_lv_area_is_in+0x4a> ff3c: 0000fcc9 .word 0x0000fcc9 0000ff40 <_lv_area_align>: { ff40: b530 push {r4, r5, lr} switch(align) { ff42: 2a14 cmp r2, #20 ff44: d827 bhi.n ff96 <_lv_area_align+0x56> ff46: 0092 lsls r2, r2, #2 ff48: 4cb2 ldr r4, [pc, #712] ; (10214 <_lv_area_align+0x2d4>) ff4a: 58a2 ldr r2, [r4, r2] ff4c: 4697 mov pc, r2 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); ff4e: 8882 ldrh r2, [r0, #4] ff50: 3201 adds r2, #1 ff52: 8804 ldrh r4, [r0, #0] ff54: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; ff56: b212 sxth r2, r2 ff58: 0fd4 lsrs r4, r2, #31 ff5a: 18a4 adds r4, r4, r2 ff5c: 1064 asrs r4, r4, #1 ff5e: 888a ldrh r2, [r1, #4] ff60: 3201 adds r2, #1 ff62: 880d ldrh r5, [r1, #0] ff64: 1b52 subs r2, r2, r5 ff66: b212 sxth r2, r2 ff68: 0fd5 lsrs r5, r2, #31 ff6a: 18aa adds r2, r5, r2 ff6c: 1052 asrs r2, r2, #1 ff6e: 1aa2 subs r2, r4, r2 ff70: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); ff72: 88c2 ldrh r2, [r0, #6] ff74: 3201 adds r2, #1 ff76: 8844 ldrh r4, [r0, #2] ff78: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; ff7a: b212 sxth r2, r2 ff7c: 0fd4 lsrs r4, r2, #31 ff7e: 18a4 adds r4, r4, r2 ff80: 1064 asrs r4, r4, #1 ff82: 88ca ldrh r2, [r1, #6] ff84: 3201 adds r2, #1 ff86: 8849 ldrh r1, [r1, #2] ff88: 1a52 subs r2, r2, r1 ff8a: b212 sxth r2, r2 ff8c: 0fd1 lsrs r1, r2, #31 ff8e: 188a adds r2, r1, r2 ff90: 1052 asrs r2, r2, #1 ff92: 1aa2 subs r2, r4, r2 ff94: 805a strh r2, [r3, #2] res->x += base->x1; ff96: 881a ldrh r2, [r3, #0] ff98: 8801 ldrh r1, [r0, #0] ff9a: 1852 adds r2, r2, r1 ff9c: 801a strh r2, [r3, #0] res->y += base->y1; ff9e: 885a ldrh r2, [r3, #2] ffa0: 8841 ldrh r1, [r0, #2] ffa2: 1852 adds r2, r2, r1 ffa4: 805a strh r2, [r3, #2] } ffa6: bd30 pop {r4, r5, pc} res->x = 0; ffa8: 2200 movs r2, #0 ffaa: 801a strh r2, [r3, #0] res->y = 0; ffac: 805a strh r2, [r3, #2] break; ffae: e7f2 b.n ff96 <_lv_area_align+0x56> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); ffb0: 8882 ldrh r2, [r0, #4] ffb2: 3201 adds r2, #1 ffb4: 8804 ldrh r4, [r0, #0] ffb6: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; ffb8: b212 sxth r2, r2 ffba: 0fd4 lsrs r4, r2, #31 ffbc: 18a4 adds r4, r4, r2 ffbe: 1064 asrs r4, r4, #1 ffc0: 888a ldrh r2, [r1, #4] ffc2: 3201 adds r2, #1 ffc4: 8809 ldrh r1, [r1, #0] ffc6: 1a52 subs r2, r2, r1 ffc8: b212 sxth r2, r2 ffca: 0fd1 lsrs r1, r2, #31 ffcc: 188a adds r2, r1, r2 ffce: 1052 asrs r2, r2, #1 ffd0: 1aa2 subs r2, r4, r2 ffd2: 801a strh r2, [r3, #0] res->y = 0; ffd4: 2200 movs r2, #0 ffd6: 805a strh r2, [r3, #2] break; ffd8: e7dd b.n ff96 <_lv_area_align+0x56> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); ffda: 8882 ldrh r2, [r0, #4] ffdc: 888c ldrh r4, [r1, #4] ffde: 1b12 subs r2, r2, r4 ffe0: 8804 ldrh r4, [r0, #0] ffe2: 1b12 subs r2, r2, r4 ffe4: 8809 ldrh r1, [r1, #0] ffe6: 1852 adds r2, r2, r1 ffe8: 801a strh r2, [r3, #0] res->y = 0; ffea: 2200 movs r2, #0 ffec: 805a strh r2, [r3, #2] break; ffee: e7d2 b.n ff96 <_lv_area_align+0x56> res->x = 0; fff0: 2200 movs r2, #0 fff2: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); fff4: 88c2 ldrh r2, [r0, #6] fff6: 88cc ldrh r4, [r1, #6] fff8: 1b12 subs r2, r2, r4 fffa: 8844 ldrh r4, [r0, #2] fffc: 1b12 subs r2, r2, r4 fffe: 8849 ldrh r1, [r1, #2] 10000: 1852 adds r2, r2, r1 10002: 805a strh r2, [r3, #2] break; 10004: e7c7 b.n ff96 <_lv_area_align+0x56> 10006: 8882 ldrh r2, [r0, #4] 10008: 3201 adds r2, #1 1000a: 8804 ldrh r4, [r0, #0] 1000c: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; 1000e: b212 sxth r2, r2 10010: 0fd4 lsrs r4, r2, #31 10012: 18a4 adds r4, r4, r2 10014: 1064 asrs r4, r4, #1 10016: 888a ldrh r2, [r1, #4] 10018: 3201 adds r2, #1 1001a: 880d ldrh r5, [r1, #0] 1001c: 1b52 subs r2, r2, r5 1001e: b212 sxth r2, r2 10020: 0fd5 lsrs r5, r2, #31 10022: 18aa adds r2, r5, r2 10024: 1052 asrs r2, r2, #1 10026: 1aa2 subs r2, r4, r2 10028: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); 1002a: 88c2 ldrh r2, [r0, #6] 1002c: 88cc ldrh r4, [r1, #6] 1002e: 1b12 subs r2, r2, r4 10030: 8844 ldrh r4, [r0, #2] 10032: 1b12 subs r2, r2, r4 10034: 8849 ldrh r1, [r1, #2] 10036: 1852 adds r2, r2, r1 10038: 805a strh r2, [r3, #2] break; 1003a: e7ac b.n ff96 <_lv_area_align+0x56> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); 1003c: 8882 ldrh r2, [r0, #4] 1003e: 888c ldrh r4, [r1, #4] 10040: 1b12 subs r2, r2, r4 10042: 8804 ldrh r4, [r0, #0] 10044: 1b12 subs r2, r2, r4 10046: 880c ldrh r4, [r1, #0] 10048: 1912 adds r2, r2, r4 1004a: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); 1004c: 88c2 ldrh r2, [r0, #6] 1004e: 88cc ldrh r4, [r1, #6] 10050: 1b12 subs r2, r2, r4 10052: 8844 ldrh r4, [r0, #2] 10054: 1b12 subs r2, r2, r4 10056: 8849 ldrh r1, [r1, #2] 10058: 1852 adds r2, r2, r1 1005a: 805a strh r2, [r3, #2] break; 1005c: e79b b.n ff96 <_lv_area_align+0x56> res->x = 0; 1005e: 2200 movs r2, #0 10060: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 10062: 88c2 ldrh r2, [r0, #6] 10064: 3201 adds r2, #1 10066: 8844 ldrh r4, [r0, #2] 10068: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; 1006a: b212 sxth r2, r2 1006c: 0fd4 lsrs r4, r2, #31 1006e: 18a4 adds r4, r4, r2 10070: 1064 asrs r4, r4, #1 10072: 88ca ldrh r2, [r1, #6] 10074: 3201 adds r2, #1 10076: 8849 ldrh r1, [r1, #2] 10078: 1a52 subs r2, r2, r1 1007a: b212 sxth r2, r2 1007c: 0fd1 lsrs r1, r2, #31 1007e: 188a adds r2, r1, r2 10080: 1052 asrs r2, r2, #1 10082: 1aa2 subs r2, r4, r2 10084: 805a strh r2, [r3, #2] break; 10086: e786 b.n ff96 <_lv_area_align+0x56> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); 10088: 8882 ldrh r2, [r0, #4] 1008a: 888c ldrh r4, [r1, #4] 1008c: 1b12 subs r2, r2, r4 1008e: 8804 ldrh r4, [r0, #0] 10090: 1b12 subs r2, r2, r4 10092: 880c ldrh r4, [r1, #0] 10094: 1912 adds r2, r2, r4 10096: 801a strh r2, [r3, #0] 10098: 88c2 ldrh r2, [r0, #6] 1009a: 3201 adds r2, #1 1009c: 8844 ldrh r4, [r0, #2] 1009e: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; 100a0: b212 sxth r2, r2 100a2: 0fd4 lsrs r4, r2, #31 100a4: 18a4 adds r4, r4, r2 100a6: 1064 asrs r4, r4, #1 100a8: 88ca ldrh r2, [r1, #6] 100aa: 3201 adds r2, #1 100ac: 8849 ldrh r1, [r1, #2] 100ae: 1a52 subs r2, r2, r1 100b0: b212 sxth r2, r2 100b2: 0fd1 lsrs r1, r2, #31 100b4: 188a adds r2, r1, r2 100b6: 1052 asrs r2, r2, #1 100b8: 1aa2 subs r2, r4, r2 100ba: 805a strh r2, [r3, #2] break; 100bc: e76b b.n ff96 <_lv_area_align+0x56> res->x = 0; 100be: 2200 movs r2, #0 100c0: 801a strh r2, [r3, #0] 100c2: 88ca ldrh r2, [r1, #6] 100c4: 8849 ldrh r1, [r1, #2] 100c6: 1a52 subs r2, r2, r1 res->y = -lv_area_get_height(to_align); 100c8: 43d2 mvns r2, r2 100ca: 805a strh r2, [r3, #2] break; 100cc: e763 b.n ff96 <_lv_area_align+0x56> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 100ce: 8882 ldrh r2, [r0, #4] 100d0: 3201 adds r2, #1 100d2: 8804 ldrh r4, [r0, #0] 100d4: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; 100d6: b212 sxth r2, r2 100d8: 0fd4 lsrs r4, r2, #31 100da: 18a4 adds r4, r4, r2 100dc: 1064 asrs r4, r4, #1 100de: 888a ldrh r2, [r1, #4] 100e0: 3201 adds r2, #1 100e2: 880d ldrh r5, [r1, #0] 100e4: 1b52 subs r2, r2, r5 100e6: b212 sxth r2, r2 100e8: 0fd5 lsrs r5, r2, #31 100ea: 18aa adds r2, r5, r2 100ec: 1052 asrs r2, r2, #1 100ee: 1aa2 subs r2, r4, r2 100f0: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 100f2: 88ca ldrh r2, [r1, #6] 100f4: 8849 ldrh r1, [r1, #2] 100f6: 1a52 subs r2, r2, r1 res->y = -lv_area_get_height(to_align); 100f8: 43d2 mvns r2, r2 100fa: 805a strh r2, [r3, #2] break; 100fc: e74b b.n ff96 <_lv_area_align+0x56> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); 100fe: 8882 ldrh r2, [r0, #4] 10100: 888c ldrh r4, [r1, #4] 10102: 1b12 subs r2, r2, r4 10104: 8804 ldrh r4, [r0, #0] 10106: 1b12 subs r2, r2, r4 10108: 880c ldrh r4, [r1, #0] 1010a: 1912 adds r2, r2, r4 1010c: 801a strh r2, [r3, #0] 1010e: 88ca ldrh r2, [r1, #6] 10110: 8849 ldrh r1, [r1, #2] 10112: 1a52 subs r2, r2, r1 res->y = -lv_area_get_height(to_align); 10114: 43d2 mvns r2, r2 10116: 805a strh r2, [r3, #2] break; 10118: e73d b.n ff96 <_lv_area_align+0x56> res->x = 0; 1011a: 2200 movs r2, #0 1011c: 801a strh r2, [r3, #0] 1011e: 88c2 ldrh r2, [r0, #6] 10120: 3201 adds r2, #1 10122: 8841 ldrh r1, [r0, #2] 10124: 1a52 subs r2, r2, r1 res->y = lv_area_get_height(base); 10126: 805a strh r2, [r3, #2] break; 10128: e735 b.n ff96 <_lv_area_align+0x56> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1012a: 8882 ldrh r2, [r0, #4] 1012c: 3201 adds r2, #1 1012e: 8804 ldrh r4, [r0, #0] 10130: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; 10132: b212 sxth r2, r2 10134: 0fd4 lsrs r4, r2, #31 10136: 18a4 adds r4, r4, r2 10138: 1064 asrs r4, r4, #1 1013a: 888a ldrh r2, [r1, #4] 1013c: 3201 adds r2, #1 1013e: 8809 ldrh r1, [r1, #0] 10140: 1a52 subs r2, r2, r1 10142: b212 sxth r2, r2 10144: 0fd1 lsrs r1, r2, #31 10146: 188a adds r2, r1, r2 10148: 1052 asrs r2, r2, #1 1014a: 1aa2 subs r2, r4, r2 1014c: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1014e: 88c2 ldrh r2, [r0, #6] 10150: 3201 adds r2, #1 10152: 8841 ldrh r1, [r0, #2] 10154: 1a52 subs r2, r2, r1 res->y = lv_area_get_height(base); 10156: 805a strh r2, [r3, #2] break; 10158: e71d b.n ff96 <_lv_area_align+0x56> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); 1015a: 8882 ldrh r2, [r0, #4] 1015c: 888c ldrh r4, [r1, #4] 1015e: 1b12 subs r2, r2, r4 10160: 8804 ldrh r4, [r0, #0] 10162: 1b12 subs r2, r2, r4 10164: 8809 ldrh r1, [r1, #0] 10166: 1852 adds r2, r2, r1 10168: 801a strh r2, [r3, #0] 1016a: 88c2 ldrh r2, [r0, #6] 1016c: 3201 adds r2, #1 1016e: 8841 ldrh r1, [r0, #2] 10170: 1a52 subs r2, r2, r1 res->y = lv_area_get_height(base); 10172: 805a strh r2, [r3, #2] break; 10174: e70f b.n ff96 <_lv_area_align+0x56> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 10176: 888a ldrh r2, [r1, #4] 10178: 8809 ldrh r1, [r1, #0] 1017a: 1a52 subs r2, r2, r1 res->x = -lv_area_get_width(to_align); 1017c: 43d2 mvns r2, r2 1017e: 801a strh r2, [r3, #0] res->y = 0; 10180: 2200 movs r2, #0 10182: 805a strh r2, [r3, #2] break; 10184: e707 b.n ff96 <_lv_area_align+0x56> 10186: 888a ldrh r2, [r1, #4] 10188: 880c ldrh r4, [r1, #0] 1018a: 1b12 subs r2, r2, r4 res->x = -lv_area_get_width(to_align); 1018c: 43d2 mvns r2, r2 1018e: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 10190: 88c2 ldrh r2, [r0, #6] 10192: 3201 adds r2, #1 10194: 8844 ldrh r4, [r0, #2] 10196: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; 10198: b212 sxth r2, r2 1019a: 0fd4 lsrs r4, r2, #31 1019c: 18a4 adds r4, r4, r2 1019e: 1064 asrs r4, r4, #1 101a0: 88ca ldrh r2, [r1, #6] 101a2: 3201 adds r2, #1 101a4: 8849 ldrh r1, [r1, #2] 101a6: 1a52 subs r2, r2, r1 101a8: b212 sxth r2, r2 101aa: 0fd1 lsrs r1, r2, #31 101ac: 188a adds r2, r1, r2 101ae: 1052 asrs r2, r2, #1 101b0: 1aa2 subs r2, r4, r2 101b2: 805a strh r2, [r3, #2] break; 101b4: e6ef b.n ff96 <_lv_area_align+0x56> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 101b6: 888a ldrh r2, [r1, #4] 101b8: 880c ldrh r4, [r1, #0] 101ba: 1b12 subs r2, r2, r4 res->x = -lv_area_get_width(to_align); 101bc: 43d2 mvns r2, r2 101be: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); 101c0: 88c2 ldrh r2, [r0, #6] 101c2: 88cc ldrh r4, [r1, #6] 101c4: 1b12 subs r2, r2, r4 101c6: 8844 ldrh r4, [r0, #2] 101c8: 1b12 subs r2, r2, r4 101ca: 8849 ldrh r1, [r1, #2] 101cc: 1852 adds r2, r2, r1 101ce: 805a strh r2, [r3, #2] break; 101d0: e6e1 b.n ff96 <_lv_area_align+0x56> 101d2: 8882 ldrh r2, [r0, #4] 101d4: 3201 adds r2, #1 101d6: 8801 ldrh r1, [r0, #0] 101d8: 1a52 subs r2, r2, r1 res->x = lv_area_get_width(base); 101da: 801a strh r2, [r3, #0] res->y = 0; 101dc: 2200 movs r2, #0 101de: 805a strh r2, [r3, #2] break; 101e0: e6d9 b.n ff96 <_lv_area_align+0x56> 101e2: 8882 ldrh r2, [r0, #4] 101e4: 3201 adds r2, #1 101e6: 8804 ldrh r4, [r0, #0] 101e8: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base); 101ea: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 101ec: 88c2 ldrh r2, [r0, #6] 101ee: 3201 adds r2, #1 101f0: 8844 ldrh r4, [r0, #2] 101f2: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; 101f4: b212 sxth r2, r2 101f6: 0fd4 lsrs r4, r2, #31 101f8: 18a4 adds r4, r4, r2 101fa: 1064 asrs r4, r4, #1 101fc: 88ca ldrh r2, [r1, #6] 101fe: 3201 adds r2, #1 10200: 8849 ldrh r1, [r1, #2] 10202: 1a52 subs r2, r2, r1 10204: b212 sxth r2, r2 10206: 0fd1 lsrs r1, r2, #31 10208: 188a adds r2, r1, r2 1020a: 1052 asrs r2, r2, #1 1020c: 1aa2 subs r2, r4, r2 1020e: 805a strh r2, [r3, #2] break; 10210: e6c1 b.n ff96 <_lv_area_align+0x56> 10212: 46c0 nop ; (mov r8, r8) 10214: 0001c770 .word 0x0001c770 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 10218: 8882 ldrh r2, [r0, #4] 1021a: 3201 adds r2, #1 1021c: 8804 ldrh r4, [r0, #0] 1021e: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base); 10220: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); 10222: 88c2 ldrh r2, [r0, #6] 10224: 88cc ldrh r4, [r1, #6] 10226: 1b12 subs r2, r2, r4 10228: 8844 ldrh r4, [r0, #2] 1022a: 1b12 subs r2, r2, r4 1022c: 8849 ldrh r1, [r1, #2] 1022e: 1852 adds r2, r2, r1 10230: 805a strh r2, [r3, #2] break; 10232: e6b0 b.n ff96 <_lv_area_align+0x56> 00010234 : /********************** * STATIC FUNCTIONS **********************/ LV_ATTRIBUTE_FAST_MEM void lv_color_fill(lv_color_t * buf, lv_color_t color, uint32_t px_num) { 10234: b530 push {r4, r5, lr} 10236: b28d uxth r5, r1 #if LV_COLOR_DEPTH == 16 uintptr_t buf_int = (uintptr_t) buf; if(buf_int & 0x3) { 10238: 0783 lsls r3, r0, #30 1023a: d002 beq.n 10242 *buf = color; 1023c: 8001 strh r1, [r0, #0] buf++; 1023e: 3002 adds r0, #2 px_num--; 10240: 3a01 subs r2, #1 } uint32_t c32 = color.full + (color.full << 16); 10242: 0429 lsls r1, r5, #16 10244: 1949 adds r1, r1, r5 uint32_t * buf32 = (uint32_t *)buf; while(px_num > 16) { 10246: 2a10 cmp r2, #16 10248: d916 bls.n 10278 1024a: 0003 movs r3, r0 1024c: 0014 movs r4, r2 *buf32 = c32; 1024e: 6019 str r1, [r3, #0] buf32++; *buf32 = c32; 10250: 6059 str r1, [r3, #4] buf32++; *buf32 = c32; 10252: 6099 str r1, [r3, #8] buf32++; *buf32 = c32; 10254: 60d9 str r1, [r3, #12] buf32++; *buf32 = c32; 10256: 6119 str r1, [r3, #16] buf32++; *buf32 = c32; 10258: 6159 str r1, [r3, #20] buf32++; *buf32 = c32; 1025a: 6199 str r1, [r3, #24] buf32++; *buf32 = c32; 1025c: 61d9 str r1, [r3, #28] 1025e: 3320 adds r3, #32 buf32++; px_num -= 16; 10260: 3c10 subs r4, #16 while(px_num > 16) { 10262: 2c10 cmp r4, #16 10264: d8f3 bhi.n 1024e 10266: 0011 movs r1, r2 10268: 3911 subs r1, #17 1026a: 0909 lsrs r1, r1, #4 1026c: 1c4c adds r4, r1, #1 1026e: 0164 lsls r4, r4, #5 10270: 3a10 subs r2, #16 10272: 0109 lsls r1, r1, #4 10274: 1a52 subs r2, r2, r1 buf32++; 10276: 1900 adds r0, r0, r4 } buf = (lv_color_t *)buf32; while(px_num) { 10278: 2a00 cmp r2, #0 1027a: d004 beq.n 10286 *buf = color; 1027c: 8005 strh r5, [r0, #0] buf++; 1027e: 3002 adds r0, #2 px_num --; 10280: 3a01 subs r2, #1 while(px_num) { 10282: 2a00 cmp r2, #0 10284: d1fa bne.n 1027c *buf = color; buf++; px_num --; } #endif } 10286: bd30 pop {r4, r5, pc} 00010288 : lv_color_t lv_color_lighten(lv_color_t c, lv_opa_t lvl) { 10288: b570 push {r4, r5, r6, lr} LV_ATTRIBUTE_FAST_MEM static inline lv_color_t lv_color_mix(lv_color_t c1, lv_color_t c2, uint8_t mix) { lv_color_t ret; #if LV_COLOR_DEPTH != 1 /*LV_COLOR_DEPTH == 8, 16 or 32*/ LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 1028a: 014a lsls r2, r1, #5 1028c: 1a52 subs r2, r2, r1 1028e: 24ff movs r4, #255 ; 0xff 10290: 1a64 subs r4, r4, r1 10292: 0403 lsls r3, r0, #16 10294: 0edb lsrs r3, r3, #27 10296: 4363 muls r3, r4 10298: 189d adds r5, r3, r2 1029a: 022b lsls r3, r5, #8 1029c: 195b adds r3, r3, r5 1029e: 01db lsls r3, r3, #7 102a0: 195b adds r3, r3, r5 102a2: 011b lsls r3, r3, #4 102a4: 0edb lsrs r3, r3, #27 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 102a6: 0545 lsls r5, r0, #21 102a8: 0ead lsrs r5, r5, #26 102aa: 4365 muls r5, r4 102ac: 018e lsls r6, r1, #6 102ae: 1a71 subs r1, r6, r1 102b0: 186d adds r5, r5, r1 102b2: 0229 lsls r1, r5, #8 102b4: 1949 adds r1, r1, r5 102b6: 01c9 lsls r1, r1, #7 102b8: 1949 adds r1, r1, r5 102ba: 00c9 lsls r1, r1, #3 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 102bc: 06c0 lsls r0, r0, #27 102be: 0ec0 lsrs r0, r0, #27 102c0: 4360 muls r0, r4 102c2: 1882 adds r2, r0, r2 102c4: 0210 lsls r0, r2, #8 102c6: 1880 adds r0, r0, r2 102c8: 01c0 lsls r0, r0, #7 102ca: 1880 adds r0, r0, r2 102cc: 0100 lsls r0, r0, #4 102ce: 0e89 lsrs r1, r1, #26 102d0: 0149 lsls r1, r1, #5 102d2: 0ec0 lsrs r0, r0, #27 102d4: 02db lsls r3, r3, #11 102d6: 4308 orrs r0, r1 102d8: 4318 orrs r0, r3 return lv_color_mix(LV_COLOR_WHITE, c, lvl); } 102da: bd70 pop {r4, r5, r6, pc} 000102dc : lv_color_t lv_color_darken(lv_color_t c, lv_opa_t lvl) { 102dc: b510 push {r4, lr} LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 102de: 23ff movs r3, #255 ; 0xff 102e0: 1a59 subs r1, r3, r1 102e2: 0403 lsls r3, r0, #16 102e4: 0edb lsrs r3, r3, #27 102e6: 434b muls r3, r1 102e8: 001a movs r2, r3 102ea: 021b lsls r3, r3, #8 102ec: 189b adds r3, r3, r2 102ee: 01db lsls r3, r3, #7 102f0: 189b adds r3, r3, r2 102f2: 011b lsls r3, r3, #4 102f4: 0edb lsrs r3, r3, #27 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 102f6: 0542 lsls r2, r0, #21 102f8: 0e92 lsrs r2, r2, #26 102fa: 434a muls r2, r1 102fc: 0014 movs r4, r2 102fe: 0212 lsls r2, r2, #8 10300: 1912 adds r2, r2, r4 10302: 01d2 lsls r2, r2, #7 10304: 1912 adds r2, r2, r4 10306: 00d2 lsls r2, r2, #3 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 10308: 06c0 lsls r0, r0, #27 1030a: 0ec0 lsrs r0, r0, #27 1030c: 4341 muls r1, r0 1030e: 0208 lsls r0, r1, #8 10310: 1840 adds r0, r0, r1 10312: 01c0 lsls r0, r0, #7 10314: 1840 adds r0, r0, r1 10316: 0100 lsls r0, r0, #4 10318: 0e92 lsrs r2, r2, #26 1031a: 0152 lsls r2, r2, #5 1031c: 0ec0 lsrs r0, r0, #27 1031e: 02db lsls r3, r3, #11 10320: 4310 orrs r0, r2 10322: 4318 orrs r0, r3 return lv_color_mix(LV_COLOR_BLACK, c, lvl); } 10324: bd10 pop {r4, pc} 00010326 : 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*/ 10326: 1c42 adds r2, r0, #1 while(*path != '\0') { 10328: 7843 ldrb r3, [r0, #1] 1032a: 2b00 cmp r3, #0 1032c: d104 bne.n 10338 1032e: e009 b.n 10344 if(*path == ':' || *path == '\\' || *path == '/') { path++; 10330: 3201 adds r2, #1 while(*path != '\0') { 10332: 7813 ldrb r3, [r2, #0] 10334: 2b00 cmp r3, #0 10336: d005 beq.n 10344 if(*path == ':' || *path == '\\' || *path == '/') { 10338: 2b3a cmp r3, #58 ; 0x3a 1033a: d0f9 beq.n 10330 1033c: 2b5c cmp r3, #92 ; 0x5c 1033e: d0f7 beq.n 10330 10340: 2b2f cmp r3, #47 ; 0x2f 10342: d0f5 beq.n 10330 break; } } return path; } 10344: 0010 movs r0, r2 10346: 4770 bx lr 00010348 <_lv_fs_init>: { 10348: b510 push {r4, lr} _lv_ll_init(&LV_GC_ROOT(_lv_drv_ll), sizeof(lv_fs_drv_t)); 1034a: 2144 movs r1, #68 ; 0x44 1034c: 4801 ldr r0, [pc, #4] ; (10354 <_lv_fs_init+0xc>) 1034e: 4b02 ldr r3, [pc, #8] ; (10358 <_lv_fs_init+0x10>) 10350: 4798 blx r3 } 10352: bd10 pop {r4, pc} 10354: 20004d5c .word 0x20004d5c 10358: 000105b9 .word 0x000105b9 0001035c : { 1035c: b570 push {r4, r5, r6, lr} 1035e: 0004 movs r4, r0 if(file_p->drv == NULL) { 10360: 6840 ldr r0, [r0, #4] 10362: 2800 cmp r0, #0 10364: d00e beq.n 10384 if(file_p->drv->close_cb == NULL) { 10366: 6903 ldr r3, [r0, #16] return LV_FS_RES_NOT_IMP; 10368: 2509 movs r5, #9 if(file_p->drv->close_cb == NULL) { 1036a: 2b00 cmp r3, #0 1036c: d008 beq.n 10380 lv_fs_res_t res = file_p->drv->close_cb(file_p->drv, file_p->file_d); 1036e: 6821 ldr r1, [r4, #0] 10370: 4798 blx r3 10372: 0005 movs r5, r0 lv_mem_free(file_p->file_d); /*Clean up*/ 10374: 6820 ldr r0, [r4, #0] 10376: 4b04 ldr r3, [pc, #16] ; (10388 ) 10378: 4798 blx r3 file_p->file_d = NULL; 1037a: 2300 movs r3, #0 1037c: 6023 str r3, [r4, #0] file_p->drv = NULL; 1037e: 6063 str r3, [r4, #4] } 10380: 0028 movs r0, r5 10382: bd70 pop {r4, r5, r6, pc} return LV_FS_RES_INV_PARAM; 10384: 250b movs r5, #11 10386: e7fb b.n 10380 10388: 00010b39 .word 0x00010b39 0001038c : { 1038c: b570 push {r4, r5, r6, lr} 1038e: b084 sub sp, #16 10390: 1e1c subs r4, r3, #0 if(br != NULL) *br = 0; 10392: d001 beq.n 10398 10394: 2300 movs r3, #0 10396: 6023 str r3, [r4, #0] if(file_p->drv == NULL) return LV_FS_RES_INV_PARAM; 10398: 6845 ldr r5, [r0, #4] 1039a: 2d00 cmp r5, #0 1039c: d015 beq.n 103ca if(file_p->drv->read_cb == NULL) return LV_FS_RES_NOT_IMP; 1039e: 69ae ldr r6, [r5, #24] 103a0: 2309 movs r3, #9 103a2: 2e00 cmp r6, #0 103a4: d00e beq.n 103c4 uint32_t br_tmp = 0; 103a6: 2300 movs r3, #0 103a8: 9303 str r3, [sp, #12] lv_fs_res_t res = file_p->drv->read_cb(file_p->drv, file_p->file_d, buf, btr, &br_tmp); 103aa: 6800 ldr r0, [r0, #0] 103ac: ab03 add r3, sp, #12 103ae: 9300 str r3, [sp, #0] 103b0: 0013 movs r3, r2 103b2: 000a movs r2, r1 103b4: 0001 movs r1, r0 103b6: 0028 movs r0, r5 103b8: 47b0 blx r6 103ba: 0003 movs r3, r0 if(br != NULL) *br = br_tmp; 103bc: 2c00 cmp r4, #0 103be: d001 beq.n 103c4 103c0: 9a03 ldr r2, [sp, #12] 103c2: 6022 str r2, [r4, #0] } 103c4: 0018 movs r0, r3 103c6: b004 add sp, #16 103c8: bd70 pop {r4, r5, r6, pc} if(file_p->drv == NULL) return LV_FS_RES_INV_PARAM; 103ca: 230b movs r3, #11 103cc: e7fa b.n 103c4 000103ce : { 103ce: b570 push {r4, r5, r6, lr} 103d0: 000a movs r2, r1 if(file_p->drv == NULL) { 103d2: 6844 ldr r4, [r0, #4] 103d4: 2c00 cmp r4, #0 103d6: d009 beq.n 103ec if(file_p->drv->seek_cb == NULL) { 103d8: 6a25 ldr r5, [r4, #32] return LV_FS_RES_NOT_IMP; 103da: 2309 movs r3, #9 if(file_p->drv->seek_cb == NULL) { 103dc: 2d00 cmp r5, #0 103de: d003 beq.n 103e8 lv_fs_res_t res = file_p->drv->seek_cb(file_p->drv, file_p->file_d, pos); 103e0: 6801 ldr r1, [r0, #0] 103e2: 0020 movs r0, r4 103e4: 47a8 blx r5 103e6: 0003 movs r3, r0 } 103e8: 0018 movs r0, r3 103ea: bd70 pop {r4, r5, r6, pc} return LV_FS_RES_INV_PARAM; 103ec: 230b movs r3, #11 103ee: e7fb b.n 103e8 000103f0 : { 103f0: b570 push {r4, r5, r6, lr} 103f2: 0004 movs r4, r0 _LV_LL_READ(LV_GC_ROOT(_lv_drv_ll), drv) { 103f4: 4809 ldr r0, [pc, #36] ; (1041c ) 103f6: 4b0a ldr r3, [pc, #40] ; (10420 ) 103f8: 4798 blx r3 103fa: 2800 cmp r0, #0 103fc: d00c beq.n 10418 if(drv->letter == letter) { 103fe: 7803 ldrb r3, [r0, #0] 10400: 42a3 cmp r3, r4 10402: d009 beq.n 10418 _LV_LL_READ(LV_GC_ROOT(_lv_drv_ll), drv) { 10404: 4d05 ldr r5, [pc, #20] ; (1041c ) 10406: 4e07 ldr r6, [pc, #28] ; (10424 ) 10408: 0001 movs r1, r0 1040a: 0028 movs r0, r5 1040c: 47b0 blx r6 1040e: 2800 cmp r0, #0 10410: d002 beq.n 10418 if(drv->letter == letter) { 10412: 7803 ldrb r3, [r0, #0] 10414: 42a3 cmp r3, r4 10416: d1f7 bne.n 10408 } 10418: bd70 pop {r4, r5, r6, pc} 1041a: 46c0 nop ; (mov r8, r8) 1041c: 20004d5c .word 0x20004d5c 10420: 0001066d .word 0x0001066d 10424: 00010685 .word 0x00010685 00010428 : { 10428: b5f0 push {r4, r5, r6, r7, lr} 1042a: 46d6 mov lr, sl 1042c: 464f mov r7, r9 1042e: b580 push {r7, lr} 10430: b083 sub sp, #12 10432: 0004 movs r4, r0 10434: 000f movs r7, r1 10436: 9201 str r2, [sp, #4] file_p->drv = NULL; 10438: 2300 movs r3, #0 1043a: 6043 str r3, [r0, #4] file_p->file_d = NULL; 1043c: 6003 str r3, [r0, #0] if(path == NULL) return LV_FS_RES_INV_PARAM; 1043e: 2900 cmp r1, #0 10440: d041 beq.n 104c6 file_p->drv = lv_fs_get_drv(letter); 10442: 7808 ldrb r0, [r1, #0] 10444: 4b23 ldr r3, [pc, #140] ; (104d4 ) 10446: 4798 blx r3 10448: 6060 str r0, [r4, #4] if(file_p->drv == NULL) { 1044a: 2800 cmp r0, #0 1044c: d00a beq.n 10464 if(file_p->drv->ready_cb != NULL) { 1044e: 6883 ldr r3, [r0, #8] 10450: 2b00 cmp r3, #0 10452: d00b beq.n 1046c if(file_p->drv->ready_cb(file_p->drv) == false) { 10454: 4798 blx r3 10456: 2800 cmp r0, #0 10458: d108 bne.n 1046c file_p->drv = NULL; 1045a: 2300 movs r3, #0 1045c: 6063 str r3, [r4, #4] file_p->file_d = NULL; 1045e: 6023 str r3, [r4, #0] return LV_FS_RES_HW_ERR; 10460: 2501 movs r5, #1 10462: e031 b.n 104c8 file_p->file_d = NULL; 10464: 2300 movs r3, #0 10466: 6023 str r3, [r4, #0] return LV_FS_RES_NOT_EX; 10468: 2503 movs r5, #3 1046a: e02d b.n 104c8 file_p->file_d = lv_mem_alloc(file_p->drv->file_size); 1046c: 6863 ldr r3, [r4, #4] 1046e: 8858 ldrh r0, [r3, #2] 10470: 4b19 ldr r3, [pc, #100] ; (104d8 ) 10472: 4798 blx r3 10474: 6020 str r0, [r4, #0] LV_ASSERT_MEM(file_p->file_d); 10476: 4b19 ldr r3, [pc, #100] ; (104dc ) 10478: 4798 blx r3 1047a: 2800 cmp r0, #0 1047c: d006 beq.n 1048c if(file_p->file_d == NULL) { 1047e: 6823 ldr r3, [r4, #0] 10480: 469a mov sl, r3 10482: 2b00 cmp r3, #0 10484: d108 bne.n 10498 file_p->drv = NULL; 10486: 6063 str r3, [r4, #4] return LV_FS_RES_OUT_OF_MEM; /* Out of memory */ 10488: 250a movs r5, #10 1048a: e01d b.n 104c8 LV_ASSERT_MEM(file_p->file_d); 1048c: 6822 ldr r2, [r4, #0] 1048e: 2300 movs r3, #0 10490: 4813 ldr r0, [pc, #76] ; (104e0 ) 10492: 4914 ldr r1, [pc, #80] ; (104e4 ) 10494: 4788 blx r1 10496: e7fe b.n 10496 if(file_p->drv->open_cb == NULL) { 10498: 6863 ldr r3, [r4, #4] 1049a: 4699 mov r9, r3 1049c: 68de ldr r6, [r3, #12] return LV_FS_RES_NOT_IMP; 1049e: 2509 movs r5, #9 if(file_p->drv->open_cb == NULL) { 104a0: 2e00 cmp r6, #0 104a2: d011 beq.n 104c8 const char * real_path = lv_fs_get_real_path(path); 104a4: 0038 movs r0, r7 104a6: 4b10 ldr r3, [pc, #64] ; (104e8 ) 104a8: 4798 blx r3 104aa: 0002 movs r2, r0 lv_fs_res_t res = file_p->drv->open_cb(file_p->drv, file_p->file_d, real_path, mode); 104ac: 9b01 ldr r3, [sp, #4] 104ae: 4651 mov r1, sl 104b0: 4648 mov r0, r9 104b2: 47b0 blx r6 104b4: 1e05 subs r5, r0, #0 if(res != LV_FS_RES_OK) { 104b6: d007 beq.n 104c8 lv_mem_free(file_p->file_d); 104b8: 6820 ldr r0, [r4, #0] 104ba: 4b0c ldr r3, [pc, #48] ; (104ec ) 104bc: 4798 blx r3 file_p->file_d = NULL; 104be: 2300 movs r3, #0 104c0: 6023 str r3, [r4, #0] file_p->drv = NULL; 104c2: 6063 str r3, [r4, #4] 104c4: e000 b.n 104c8 if(path == NULL) return LV_FS_RES_INV_PARAM; 104c6: 250b movs r5, #11 } 104c8: 0028 movs r0, r5 104ca: b003 add sp, #12 104cc: bc0c pop {r2, r3} 104ce: 4691 mov r9, r2 104d0: 469a mov sl, r3 104d2: bdf0 pop {r4, r5, r6, r7, pc} 104d4: 000103f1 .word 0x000103f1 104d8: 00010a71 .word 0x00010a71 104dc: 0000147d .word 0x0000147d 104e0: 00018724 .word 0x00018724 104e4: 00001485 .word 0x00001485 104e8: 00010327 .word 0x00010327 104ec: 00010b39 .word 0x00010b39 000104f0 : { 104f0: b510 push {r4, lr} 104f2: 0004 movs r4, r0 for(i = strlen(fn); i > 0; i--) { 104f4: 4b11 ldr r3, [pc, #68] ; (1053c ) 104f6: 4798 blx r3 104f8: 1e03 subs r3, r0, #0 104fa: d017 beq.n 1052c if(fn[i] == '.') { 104fc: 5c22 ldrb r2, [r4, r0] 104fe: 2a2e cmp r2, #46 ; 0x2e 10500: d00f beq.n 10522 else if(fn[i] == '/' || fn[i] == '\\') { 10502: 2a2f cmp r2, #47 ; 0x2f 10504: d014 beq.n 10530 10506: 2a5c cmp r2, #92 ; 0x5c 10508: d014 beq.n 10534 for(i = strlen(fn); i > 0; i--) { 1050a: 3b01 subs r3, #1 1050c: 2b00 cmp r3, #0 1050e: d00b beq.n 10528 if(fn[i] == '.') { 10510: 5ce2 ldrb r2, [r4, r3] 10512: 2a2e cmp r2, #46 ; 0x2e 10514: d005 beq.n 10522 else if(fn[i] == '/' || fn[i] == '\\') { 10516: 2a2f cmp r2, #47 ; 0x2f 10518: d00e beq.n 10538 1051a: 2a5c cmp r2, #92 ; 0x5c 1051c: d1f5 bne.n 1050a return ""; /*No extension if a '\' or '/' found*/ 1051e: 4808 ldr r0, [pc, #32] ; (10540 ) 10520: e001 b.n 10526 return &fn[i + 1]; 10522: 3301 adds r3, #1 10524: 18e0 adds r0, r4, r3 } 10526: bd10 pop {r4, pc} return ""; /*Empty string if no '.' in the file name. */ 10528: 4805 ldr r0, [pc, #20] ; (10540 ) 1052a: e7fc b.n 10526 1052c: 4804 ldr r0, [pc, #16] ; (10540 ) 1052e: e7fa b.n 10526 return ""; /*No extension if a '\' or '/' found*/ 10530: 4803 ldr r0, [pc, #12] ; (10540 ) 10532: e7f8 b.n 10526 10534: 4802 ldr r0, [pc, #8] ; (10540 ) 10536: e7f6 b.n 10526 10538: 4801 ldr r0, [pc, #4] ; (10540 ) 1053a: e7f4 b.n 10526 1053c: 00017e81 .word 0x00017e81 10540: 0001c948 .word 0x0001c948 00010544 : * @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) { 10544: b500 push {lr} 10546: b083 sub sp, #12 10548: 9201 str r2, [sp, #4] if(act == NULL) return; /*Can't set the next node of `NULL`*/ 1054a: 2900 cmp r1, #0 1054c: d00d beq.n 1056a uint32_t node_p_size = sizeof(lv_ll_node_t *); if(next) 1054e: 2a00 cmp r2, #0 10550: d00d beq.n 1056e _lv_memcpy_small(act + LL_NEXT_P_OFFSET(ll_p), &next, node_p_size); 10552: 6800 ldr r0, [r0, #0] 10554: 3004 adds r0, #4 10556: 1809 adds r1, r1, r0 10558: ab01 add r3, sp, #4 1055a: 781a ldrb r2, [r3, #0] 1055c: 700a strb r2, [r1, #0] 1055e: 785a ldrb r2, [r3, #1] 10560: 704a strb r2, [r1, #1] 10562: 789a ldrb r2, [r3, #2] 10564: 708a strb r2, [r1, #2] 10566: 78db ldrb r3, [r3, #3] 10568: 70cb strb r3, [r1, #3] else _lv_memset_00(act + LL_NEXT_P_OFFSET(ll_p), node_p_size); } 1056a: b003 add sp, #12 1056c: bd00 pop {pc} _lv_memset_00(act + LL_NEXT_P_OFFSET(ll_p), node_p_size); 1056e: 6800 ldr r0, [r0, #0] 10570: 3004 adds r0, #4 10572: 1808 adds r0, r1, r0 10574: 2104 movs r1, #4 10576: 4b01 ldr r3, [pc, #4] ; (1057c ) 10578: 4798 blx r3 1057a: e7f6 b.n 1056a 1057c: 0001104d .word 0x0001104d 00010580 : { 10580: b500 push {lr} 10582: b083 sub sp, #12 10584: 9201 str r2, [sp, #4] if(act == NULL) return; /*Can't set the prev node of `NULL`*/ 10586: 2900 cmp r1, #0 10588: d00c beq.n 105a4 if(prev) 1058a: 2a00 cmp r2, #0 1058c: d00c beq.n 105a8 _lv_memcpy_small(act + LL_PREV_P_OFFSET(ll_p), &prev, node_p_size); 1058e: 6800 ldr r0, [r0, #0] 10590: 1809 adds r1, r1, r0 10592: ab01 add r3, sp, #4 10594: 781a ldrb r2, [r3, #0] 10596: 700a strb r2, [r1, #0] 10598: 785a ldrb r2, [r3, #1] 1059a: 704a strb r2, [r1, #1] 1059c: 789a ldrb r2, [r3, #2] 1059e: 708a strb r2, [r1, #2] 105a0: 78db ldrb r3, [r3, #3] 105a2: 70cb strb r3, [r1, #3] } 105a4: b003 add sp, #12 105a6: bd00 pop {pc} _lv_memset_00(act + LL_PREV_P_OFFSET(ll_p), node_p_size); 105a8: 6800 ldr r0, [r0, #0] 105aa: 1808 adds r0, r1, r0 105ac: 2104 movs r1, #4 105ae: 4b01 ldr r3, [pc, #4] ; (105b4 ) 105b0: 4798 blx r3 105b2: e7f7 b.n 105a4 105b4: 0001104d .word 0x0001104d 000105b8 <_lv_ll_init>: ll_p->head = NULL; 105b8: 2300 movs r3, #0 105ba: 6043 str r3, [r0, #4] ll_p->tail = NULL; 105bc: 6083 str r3, [r0, #8] if(node_size & 0x3) { 105be: 078b lsls r3, r1, #30 105c0: d002 beq.n 105c8 <_lv_ll_init+0x10> node_size = node_size & (~0x3); 105c2: 2303 movs r3, #3 105c4: 4399 bics r1, r3 node_size += 4; 105c6: 3104 adds r1, #4 ll_p->n_size = node_size; 105c8: 6001 str r1, [r0, #0] } 105ca: 4770 bx lr 000105cc <_lv_ll_ins_head>: { 105cc: b570 push {r4, r5, r6, lr} 105ce: 0004 movs r4, r0 n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); 105d0: 6800 ldr r0, [r0, #0] 105d2: 3008 adds r0, #8 105d4: 4b0e ldr r3, [pc, #56] ; (10610 <_lv_ll_ins_head+0x44>) 105d6: 4798 blx r3 105d8: 1e05 subs r5, r0, #0 if(n_new != NULL) { 105da: d014 beq.n 10606 <_lv_ll_ins_head+0x3a> node_set_prev(ll_p, n_new, NULL); /*No prev. before the new head*/ 105dc: 2200 movs r2, #0 105de: 0001 movs r1, r0 105e0: 0020 movs r0, r4 105e2: 4b0c ldr r3, [pc, #48] ; (10614 <_lv_ll_ins_head+0x48>) 105e4: 4798 blx r3 node_set_next(ll_p, n_new, ll_p->head); /*After new comes the old head*/ 105e6: 6862 ldr r2, [r4, #4] 105e8: 0029 movs r1, r5 105ea: 0020 movs r0, r4 105ec: 4b0a ldr r3, [pc, #40] ; (10618 <_lv_ll_ins_head+0x4c>) 105ee: 4798 blx r3 if(ll_p->head != NULL) { /*If there is old head then before it goes the new*/ 105f0: 6861 ldr r1, [r4, #4] 105f2: 2900 cmp r1, #0 105f4: d003 beq.n 105fe <_lv_ll_ins_head+0x32> node_set_prev(ll_p, ll_p->head, n_new); 105f6: 002a movs r2, r5 105f8: 0020 movs r0, r4 105fa: 4b06 ldr r3, [pc, #24] ; (10614 <_lv_ll_ins_head+0x48>) 105fc: 4798 blx r3 ll_p->head = n_new; /*Set the new head in the dsc.*/ 105fe: 6065 str r5, [r4, #4] if(ll_p->tail == NULL) { /*If there is no tail (1. node) set the tail too*/ 10600: 68a3 ldr r3, [r4, #8] 10602: 2b00 cmp r3, #0 10604: d001 beq.n 1060a <_lv_ll_ins_head+0x3e> } 10606: 0028 movs r0, r5 10608: bd70 pop {r4, r5, r6, pc} ll_p->tail = n_new; 1060a: 60a5 str r5, [r4, #8] 1060c: e7fb b.n 10606 <_lv_ll_ins_head+0x3a> 1060e: 46c0 nop ; (mov r8, r8) 10610: 00010a71 .word 0x00010a71 10614: 00010581 .word 0x00010581 10618: 00010545 .word 0x00010545 0001061c <_lv_ll_ins_tail>: { 1061c: b570 push {r4, r5, r6, lr} 1061e: 0004 movs r4, r0 n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); 10620: 6800 ldr r0, [r0, #0] 10622: 3008 adds r0, #8 10624: 4b0e ldr r3, [pc, #56] ; (10660 <_lv_ll_ins_tail+0x44>) 10626: 4798 blx r3 10628: 1e05 subs r5, r0, #0 if(n_new != NULL) { 1062a: d014 beq.n 10656 <_lv_ll_ins_tail+0x3a> node_set_next(ll_p, n_new, NULL); /*No next after the new tail*/ 1062c: 2200 movs r2, #0 1062e: 0001 movs r1, r0 10630: 0020 movs r0, r4 10632: 4b0c ldr r3, [pc, #48] ; (10664 <_lv_ll_ins_tail+0x48>) 10634: 4798 blx r3 node_set_prev(ll_p, n_new, ll_p->tail); /*The prev. before new is tho old tail*/ 10636: 68a2 ldr r2, [r4, #8] 10638: 0029 movs r1, r5 1063a: 0020 movs r0, r4 1063c: 4b0a ldr r3, [pc, #40] ; (10668 <_lv_ll_ins_tail+0x4c>) 1063e: 4798 blx r3 if(ll_p->tail != NULL) { /*If there is old tail then the new comes after it*/ 10640: 68a1 ldr r1, [r4, #8] 10642: 2900 cmp r1, #0 10644: d003 beq.n 1064e <_lv_ll_ins_tail+0x32> node_set_next(ll_p, ll_p->tail, n_new); 10646: 002a movs r2, r5 10648: 0020 movs r0, r4 1064a: 4b06 ldr r3, [pc, #24] ; (10664 <_lv_ll_ins_tail+0x48>) 1064c: 4798 blx r3 ll_p->tail = n_new; /*Set the new tail in the dsc.*/ 1064e: 60a5 str r5, [r4, #8] if(ll_p->head == NULL) { /*If there is no head (1. node) set the head too*/ 10650: 6863 ldr r3, [r4, #4] 10652: 2b00 cmp r3, #0 10654: d001 beq.n 1065a <_lv_ll_ins_tail+0x3e> } 10656: 0028 movs r0, r5 10658: bd70 pop {r4, r5, r6, pc} ll_p->head = n_new; 1065a: 6065 str r5, [r4, #4] 1065c: e7fb b.n 10656 <_lv_ll_ins_tail+0x3a> 1065e: 46c0 nop ; (mov r8, r8) 10660: 00010a71 .word 0x00010a71 10664: 00010545 .word 0x00010545 10668: 00010581 .word 0x00010581 0001066c <_lv_ll_get_head>: if(ll_p != NULL) { 1066c: 2800 cmp r0, #0 1066e: d001 beq.n 10674 <_lv_ll_get_head+0x8> head = ll_p->head; 10670: 6840 ldr r0, [r0, #4] } 10672: 4770 bx lr void * head = NULL; 10674: 2000 movs r0, #0 return head; 10676: e7fc b.n 10672 <_lv_ll_get_head+0x6> 00010678 <_lv_ll_get_tail>: if(ll_p != NULL) { 10678: 2800 cmp r0, #0 1067a: d001 beq.n 10680 <_lv_ll_get_tail+0x8> tail = ll_p->tail; 1067c: 6880 ldr r0, [r0, #8] } 1067e: 4770 bx lr void * tail = NULL; 10680: 2000 movs r0, #0 return tail; 10682: e7fc b.n 1067e <_lv_ll_get_tail+0x6> 00010684 <_lv_ll_get_next>: { 10684: b082 sub sp, #8 void * next = NULL; 10686: 2300 movs r3, #0 10688: 9301 str r3, [sp, #4] if(ll_p != NULL) { 1068a: 2800 cmp r0, #0 1068c: d00b beq.n 106a6 <_lv_ll_get_next+0x22> _lv_memcpy_small(&next, n_act_d + LL_NEXT_P_OFFSET(ll_p), sizeof(void *)); 1068e: 6803 ldr r3, [r0, #0] 10690: 3304 adds r3, #4 10692: 18c9 adds r1, r1, r3 10694: ab01 add r3, sp, #4 10696: 780a ldrb r2, [r1, #0] 10698: 701a strb r2, [r3, #0] 1069a: 784a ldrb r2, [r1, #1] 1069c: 705a strb r2, [r3, #1] 1069e: 788a ldrb r2, [r1, #2] 106a0: 709a strb r2, [r3, #2] 106a2: 78ca ldrb r2, [r1, #3] 106a4: 70da strb r2, [r3, #3] } 106a6: 9801 ldr r0, [sp, #4] 106a8: b002 add sp, #8 106aa: 4770 bx lr 000106ac <_lv_ll_get_prev>: { 106ac: b082 sub sp, #8 void * prev = NULL; 106ae: 2300 movs r3, #0 106b0: 9301 str r3, [sp, #4] if(ll_p != NULL) { 106b2: 2800 cmp r0, #0 106b4: d00a beq.n 106cc <_lv_ll_get_prev+0x20> _lv_memcpy_small(&prev, n_act_d + LL_PREV_P_OFFSET(ll_p), sizeof(void *)); 106b6: 6803 ldr r3, [r0, #0] 106b8: 18c9 adds r1, r1, r3 106ba: ab01 add r3, sp, #4 106bc: 780a ldrb r2, [r1, #0] 106be: 701a strb r2, [r3, #0] 106c0: 784a ldrb r2, [r1, #1] 106c2: 705a strb r2, [r3, #1] 106c4: 788a ldrb r2, [r1, #2] 106c6: 709a strb r2, [r3, #2] 106c8: 78ca ldrb r2, [r1, #3] 106ca: 70da strb r2, [r3, #3] } 106cc: 9801 ldr r0, [sp, #4] 106ce: b002 add sp, #8 106d0: 4770 bx lr ... 000106d4 <_lv_ll_ins_prev>: { 106d4: b5f0 push {r4, r5, r6, r7, lr} 106d6: 46c6 mov lr, r8 106d8: b500 push {lr} 106da: 0004 movs r4, r0 106dc: 000e movs r6, r1 if(NULL == ll_p || NULL == n_act) return NULL; 106de: 2800 cmp r0, #0 106e0: d029 beq.n 10736 <_lv_ll_ins_prev+0x62> 106e2: 2900 cmp r1, #0 106e4: d029 beq.n 1073a <_lv_ll_ins_prev+0x66> if(_lv_ll_get_head(ll_p) == n_act) { 106e6: 6843 ldr r3, [r0, #4] 106e8: 4299 cmp r1, r3 106ea: d021 beq.n 10730 <_lv_ll_ins_prev+0x5c> n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); 106ec: 6800 ldr r0, [r0, #0] 106ee: 3008 adds r0, #8 106f0: 4b13 ldr r3, [pc, #76] ; (10740 <_lv_ll_ins_prev+0x6c>) 106f2: 4798 blx r3 106f4: 1e05 subs r5, r0, #0 if(n_new == NULL) return NULL; 106f6: d018 beq.n 1072a <_lv_ll_ins_prev+0x56> n_prev = _lv_ll_get_prev(ll_p, n_act); 106f8: 0031 movs r1, r6 106fa: 0020 movs r0, r4 106fc: 4b11 ldr r3, [pc, #68] ; (10744 <_lv_ll_ins_prev+0x70>) 106fe: 4798 blx r3 10700: 0007 movs r7, r0 node_set_next(ll_p, n_prev, n_new); 10702: 002a movs r2, r5 10704: 0001 movs r1, r0 10706: 0020 movs r0, r4 10708: 4b0f ldr r3, [pc, #60] ; (10748 <_lv_ll_ins_prev+0x74>) 1070a: 4698 mov r8, r3 1070c: 4798 blx r3 node_set_prev(ll_p, n_new, n_prev); 1070e: 003a movs r2, r7 10710: 0029 movs r1, r5 10712: 0020 movs r0, r4 10714: 4f0d ldr r7, [pc, #52] ; (1074c <_lv_ll_ins_prev+0x78>) 10716: 47b8 blx r7 node_set_prev(ll_p, n_act, n_new); 10718: 002a movs r2, r5 1071a: 0031 movs r1, r6 1071c: 0020 movs r0, r4 1071e: 47b8 blx r7 node_set_next(ll_p, n_new, n_act); 10720: 0032 movs r2, r6 10722: 0029 movs r1, r5 10724: 0020 movs r0, r4 10726: 47c0 blx r8 n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); 10728: 0028 movs r0, r5 } 1072a: bc04 pop {r2} 1072c: 4690 mov r8, r2 1072e: bdf0 pop {r4, r5, r6, r7, pc} n_new = _lv_ll_ins_head(ll_p); 10730: 4b07 ldr r3, [pc, #28] ; (10750 <_lv_ll_ins_prev+0x7c>) 10732: 4798 blx r3 10734: e7f9 b.n 1072a <_lv_ll_ins_prev+0x56> if(NULL == ll_p || NULL == n_act) return NULL; 10736: 2000 movs r0, #0 10738: e7f7 b.n 1072a <_lv_ll_ins_prev+0x56> 1073a: 0008 movs r0, r1 1073c: e7f5 b.n 1072a <_lv_ll_ins_prev+0x56> 1073e: 46c0 nop ; (mov r8, r8) 10740: 00010a71 .word 0x00010a71 10744: 000106ad .word 0x000106ad 10748: 00010545 .word 0x00010545 1074c: 00010581 .word 0x00010581 10750: 000105cd .word 0x000105cd 00010754 <_lv_ll_remove>: { 10754: b570 push {r4, r5, r6, lr} 10756: 0004 movs r4, r0 10758: 000d movs r5, r1 if(ll_p != NULL) { 1075a: 2800 cmp r0, #0 1075c: d02b beq.n 107b6 <_lv_ll_remove+0x62> if(_lv_ll_get_head(ll_p) == node_p) { 1075e: 6843 ldr r3, [r0, #4] 10760: 4299 cmp r1, r3 10762: d02a beq.n 107ba <_lv_ll_remove+0x66> else if(_lv_ll_get_tail(ll_p) == node_p) { 10764: 6883 ldr r3, [r0, #8] 10766: 4299 cmp r1, r3 10768: d017 beq.n 1079a <_lv_ll_remove+0x46> lv_ll_node_t * n_prev = _lv_ll_get_prev(ll_p, node_p); 1076a: 0029 movs r1, r5 1076c: 0020 movs r0, r4 1076e: 4b19 ldr r3, [pc, #100] ; (107d4 <_lv_ll_remove+0x80>) 10770: 4798 blx r3 10772: 0006 movs r6, r0 lv_ll_node_t * n_next = _lv_ll_get_next(ll_p, node_p); 10774: 0029 movs r1, r5 10776: 0020 movs r0, r4 10778: 4b17 ldr r3, [pc, #92] ; (107d8 <_lv_ll_remove+0x84>) 1077a: 4798 blx r3 1077c: 0005 movs r5, r0 node_set_next(ll_p, n_prev, n_next); 1077e: 0002 movs r2, r0 10780: 0031 movs r1, r6 10782: 0020 movs r0, r4 10784: 4b15 ldr r3, [pc, #84] ; (107dc <_lv_ll_remove+0x88>) 10786: 4798 blx r3 node_set_prev(ll_p, n_next, n_prev); 10788: 0032 movs r2, r6 1078a: 0029 movs r1, r5 1078c: 0020 movs r0, r4 1078e: 4b14 ldr r3, [pc, #80] ; (107e0 <_lv_ll_remove+0x8c>) 10790: 4798 blx r3 } 10792: bd70 pop {r4, r5, r6, pc} ll_p->tail = NULL; 10794: 2300 movs r3, #0 10796: 60a3 str r3, [r4, #8] 10798: e7fb b.n 10792 <_lv_ll_remove+0x3e> ll_p->tail = _lv_ll_get_prev(ll_p, node_p); 1079a: 4b0e ldr r3, [pc, #56] ; (107d4 <_lv_ll_remove+0x80>) 1079c: 4798 blx r3 1079e: 60a0 str r0, [r4, #8] if(ll_p->tail == NULL) { 107a0: 2800 cmp r0, #0 107a2: d005 beq.n 107b0 <_lv_ll_remove+0x5c> node_set_next(ll_p, ll_p->tail, NULL); 107a4: 2200 movs r2, #0 107a6: 0001 movs r1, r0 107a8: 0020 movs r0, r4 107aa: 4b0c ldr r3, [pc, #48] ; (107dc <_lv_ll_remove+0x88>) 107ac: 4798 blx r3 107ae: e7f0 b.n 10792 <_lv_ll_remove+0x3e> ll_p->head = NULL; 107b0: 2300 movs r3, #0 107b2: 6063 str r3, [r4, #4] 107b4: e7ed b.n 10792 <_lv_ll_remove+0x3e> if(_lv_ll_get_head(ll_p) == node_p) { 107b6: 2900 cmp r1, #0 107b8: d1d7 bne.n 1076a <_lv_ll_remove+0x16> ll_p->head = _lv_ll_get_next(ll_p, node_p); 107ba: 0029 movs r1, r5 107bc: 0020 movs r0, r4 107be: 4b06 ldr r3, [pc, #24] ; (107d8 <_lv_ll_remove+0x84>) 107c0: 4798 blx r3 107c2: 6060 str r0, [r4, #4] if(ll_p->head == NULL) { 107c4: 2800 cmp r0, #0 107c6: d0e5 beq.n 10794 <_lv_ll_remove+0x40> node_set_prev(ll_p, ll_p->head, NULL); 107c8: 2200 movs r2, #0 107ca: 0001 movs r1, r0 107cc: 0020 movs r0, r4 107ce: 4b04 ldr r3, [pc, #16] ; (107e0 <_lv_ll_remove+0x8c>) 107d0: 4798 blx r3 107d2: e7de b.n 10792 <_lv_ll_remove+0x3e> 107d4: 000106ad .word 0x000106ad 107d8: 00010685 .word 0x00010685 107dc: 00010545 .word 0x00010545 107e0: 00010581 .word 0x00010581 000107e4 <_lv_ll_chg_list>: { 107e4: b570 push {r4, r5, r6, lr} 107e6: 000c movs r4, r1 107e8: 0015 movs r5, r2 107ea: 001e movs r6, r3 _lv_ll_remove(ll_ori_p, node); 107ec: 0011 movs r1, r2 107ee: 4b19 ldr r3, [pc, #100] ; (10854 <_lv_ll_chg_list+0x70>) 107f0: 4798 blx r3 if(head) { 107f2: 2e00 cmp r6, #0 107f4: d017 beq.n 10826 <_lv_ll_chg_list+0x42> node_set_prev(ll_new_p, node, NULL); 107f6: 2200 movs r2, #0 107f8: 0029 movs r1, r5 107fa: 0020 movs r0, r4 107fc: 4b16 ldr r3, [pc, #88] ; (10858 <_lv_ll_chg_list+0x74>) 107fe: 4798 blx r3 node_set_next(ll_new_p, node, ll_new_p->head); 10800: 6862 ldr r2, [r4, #4] 10802: 0029 movs r1, r5 10804: 0020 movs r0, r4 10806: 4b15 ldr r3, [pc, #84] ; (1085c <_lv_ll_chg_list+0x78>) 10808: 4798 blx r3 if(ll_new_p->head != NULL) { /*If there is old head then before it goes the new*/ 1080a: 6861 ldr r1, [r4, #4] 1080c: 2900 cmp r1, #0 1080e: d003 beq.n 10818 <_lv_ll_chg_list+0x34> node_set_prev(ll_new_p, ll_new_p->head, node); 10810: 002a movs r2, r5 10812: 0020 movs r0, r4 10814: 4b10 ldr r3, [pc, #64] ; (10858 <_lv_ll_chg_list+0x74>) 10816: 4798 blx r3 ll_new_p->head = node; /*Set the new head in the dsc.*/ 10818: 6065 str r5, [r4, #4] if(ll_new_p->tail == NULL) { /*If there is no tail (first node) set the tail too*/ 1081a: 68a3 ldr r3, [r4, #8] 1081c: 2b00 cmp r3, #0 1081e: d000 beq.n 10822 <_lv_ll_chg_list+0x3e> } 10820: bd70 pop {r4, r5, r6, pc} ll_new_p->tail = node; 10822: 60a5 str r5, [r4, #8] 10824: e7fc b.n 10820 <_lv_ll_chg_list+0x3c> node_set_prev(ll_new_p, node, ll_new_p->tail); 10826: 68a2 ldr r2, [r4, #8] 10828: 0029 movs r1, r5 1082a: 0020 movs r0, r4 1082c: 4b0a ldr r3, [pc, #40] ; (10858 <_lv_ll_chg_list+0x74>) 1082e: 4798 blx r3 node_set_next(ll_new_p, node, NULL); 10830: 2200 movs r2, #0 10832: 0029 movs r1, r5 10834: 0020 movs r0, r4 10836: 4b09 ldr r3, [pc, #36] ; (1085c <_lv_ll_chg_list+0x78>) 10838: 4798 blx r3 if(ll_new_p->tail != NULL) { /*If there is old tail then after it goes the new*/ 1083a: 68a1 ldr r1, [r4, #8] 1083c: 2900 cmp r1, #0 1083e: d003 beq.n 10848 <_lv_ll_chg_list+0x64> node_set_next(ll_new_p, ll_new_p->tail, node); 10840: 002a movs r2, r5 10842: 0020 movs r0, r4 10844: 4b05 ldr r3, [pc, #20] ; (1085c <_lv_ll_chg_list+0x78>) 10846: 4798 blx r3 ll_new_p->tail = node; /*Set the new tail in the dsc.*/ 10848: 60a5 str r5, [r4, #8] if(ll_new_p->head == NULL) { /*If there is no head (first node) set the head too*/ 1084a: 6863 ldr r3, [r4, #4] 1084c: 2b00 cmp r3, #0 1084e: d1e7 bne.n 10820 <_lv_ll_chg_list+0x3c> ll_new_p->head = node; 10850: 6065 str r5, [r4, #4] } 10852: e7e5 b.n 10820 <_lv_ll_chg_list+0x3c> 10854: 00010755 .word 0x00010755 10858: 00010581 .word 0x00010581 1085c: 00010545 .word 0x00010545 00010860 <_lv_ll_move_before>: { 10860: b5f8 push {r3, r4, r5, r6, r7, lr} 10862: 46ce mov lr, r9 10864: 4647 mov r7, r8 10866: b580 push {r7, lr} 10868: 0005 movs r5, r0 1086a: 000c movs r4, r1 1086c: 0016 movs r6, r2 if(n_act == n_after) return; /*Can't move before itself*/ 1086e: 4291 cmp r1, r2 10870: d021 beq.n 108b6 <_lv_ll_move_before+0x56> if(n_after != NULL) 10872: 2a00 cmp r2, #0 10874: d023 beq.n 108be <_lv_ll_move_before+0x5e> n_before = _lv_ll_get_prev(ll_p, n_after); 10876: 0011 movs r1, r2 10878: 4b22 ldr r3, [pc, #136] ; (10904 <_lv_ll_move_before+0xa4>) 1087a: 4798 blx r3 1087c: 0007 movs r7, r0 if(n_act == n_before) return; /*Already before `n_after`*/ 1087e: 4284 cmp r4, r0 10880: d019 beq.n 108b6 <_lv_ll_move_before+0x56> _lv_ll_remove(ll_p, n_act); 10882: 0021 movs r1, r4 10884: 0028 movs r0, r5 10886: 4b20 ldr r3, [pc, #128] ; (10908 <_lv_ll_move_before+0xa8>) 10888: 4798 blx r3 node_set_next(ll_p, n_before, n_act); 1088a: 0022 movs r2, r4 1088c: 0039 movs r1, r7 1088e: 0028 movs r0, r5 10890: 4b1e ldr r3, [pc, #120] ; (1090c <_lv_ll_move_before+0xac>) 10892: 4698 mov r8, r3 10894: 4798 blx r3 node_set_prev(ll_p, n_act, n_before); 10896: 003a movs r2, r7 10898: 0021 movs r1, r4 1089a: 0028 movs r0, r5 1089c: 4b1c ldr r3, [pc, #112] ; (10910 <_lv_ll_move_before+0xb0>) 1089e: 4699 mov r9, r3 108a0: 4798 blx r3 node_set_prev(ll_p, n_after, n_act); 108a2: 0022 movs r2, r4 108a4: 0031 movs r1, r6 108a6: 0028 movs r0, r5 108a8: 47c8 blx r9 node_set_next(ll_p, n_act, n_after); 108aa: 0032 movs r2, r6 108ac: 0021 movs r1, r4 108ae: 0028 movs r0, r5 108b0: 47c0 blx r8 if(n_before == NULL) ll_p->head = n_act; 108b2: 2f00 cmp r7, #0 108b4: d021 beq.n 108fa <_lv_ll_move_before+0x9a> } 108b6: bc0c pop {r2, r3} 108b8: 4690 mov r8, r2 108ba: 4699 mov r9, r3 108bc: bdf8 pop {r3, r4, r5, r6, r7, pc} if(ll_p != NULL) { 108be: 2800 cmp r0, #0 108c0: d01d beq.n 108fe <_lv_ll_move_before+0x9e> tail = ll_p->tail; 108c2: 6887 ldr r7, [r0, #8] if(n_act == n_before) return; /*Already before `n_after`*/ 108c4: 42bc cmp r4, r7 108c6: d0f6 beq.n 108b6 <_lv_ll_move_before+0x56> _lv_ll_remove(ll_p, n_act); 108c8: 0021 movs r1, r4 108ca: 0028 movs r0, r5 108cc: 4b0e ldr r3, [pc, #56] ; (10908 <_lv_ll_move_before+0xa8>) 108ce: 4798 blx r3 node_set_next(ll_p, n_before, n_act); 108d0: 0022 movs r2, r4 108d2: 0039 movs r1, r7 108d4: 0028 movs r0, r5 108d6: 4e0d ldr r6, [pc, #52] ; (1090c <_lv_ll_move_before+0xac>) 108d8: 47b0 blx r6 node_set_prev(ll_p, n_act, n_before); 108da: 003a movs r2, r7 108dc: 0021 movs r1, r4 108de: 0028 movs r0, r5 108e0: 4b0b ldr r3, [pc, #44] ; (10910 <_lv_ll_move_before+0xb0>) 108e2: 4698 mov r8, r3 108e4: 4798 blx r3 node_set_prev(ll_p, n_after, n_act); 108e6: 0022 movs r2, r4 108e8: 2100 movs r1, #0 108ea: 0028 movs r0, r5 108ec: 47c0 blx r8 node_set_next(ll_p, n_act, n_after); 108ee: 2200 movs r2, #0 108f0: 0021 movs r1, r4 108f2: 0028 movs r0, r5 108f4: 47b0 blx r6 if(n_after == NULL) ll_p->tail = n_act; 108f6: 60ac str r4, [r5, #8] 108f8: e7db b.n 108b2 <_lv_ll_move_before+0x52> if(n_before == NULL) ll_p->head = n_act; 108fa: 606c str r4, [r5, #4] 108fc: e7db b.n 108b6 <_lv_ll_move_before+0x56> void * tail = NULL; 108fe: 0017 movs r7, r2 10900: e7e0 b.n 108c4 <_lv_ll_move_before+0x64> 10902: 46c0 nop ; (mov r8, r8) 10904: 000106ad .word 0x000106ad 10908: 00010755 .word 0x00010755 1090c: 00010545 .word 0x00010545 10910: 00010581 .word 0x00010581 00010914 <_lv_ll_is_empty>: if(ll_p == NULL) return true; 10914: 2800 cmp r0, #0 10916: d00a beq.n 1092e <_lv_ll_is_empty+0x1a> return false; 10918: 2300 movs r3, #0 if(ll_p->head == NULL && ll_p->tail == NULL) return true; 1091a: 6842 ldr r2, [r0, #4] 1091c: 2a00 cmp r2, #0 1091e: d001 beq.n 10924 <_lv_ll_is_empty+0x10> } 10920: 0018 movs r0, r3 10922: 4770 bx lr if(ll_p->head == NULL && ll_p->tail == NULL) return true; 10924: 6882 ldr r2, [r0, #8] 10926: 4253 negs r3, r2 10928: 4153 adcs r3, r2 1092a: b2db uxtb r3, r3 1092c: e7f8 b.n 10920 <_lv_ll_is_empty+0xc> if(ll_p == NULL) return true; 1092e: 2301 movs r3, #1 10930: e7f6 b.n 10920 <_lv_ll_is_empty+0xc> ... 00010934 <_lv_trigo_sin>: * Return with sinus of an angle * @param angle * @return sinus of 'angle'. sin(-90) = -32767, sin(90) = 32767 */ LV_ATTRIBUTE_FAST_MEM int16_t _lv_trigo_sin(int16_t angle) { 10934: b510 push {r4, lr} int16_t ret = 0; angle = angle % 360; 10936: 21b4 movs r1, #180 ; 0xb4 10938: 0049 lsls r1, r1, #1 1093a: 4b19 ldr r3, [pc, #100] ; (109a0 <_lv_trigo_sin+0x6c>) 1093c: 4798 blx r3 1093e: b209 sxth r1, r1 if(angle < 0) angle = 360 + angle; 10940: 2900 cmp r1, #0 10942: db16 blt.n 10972 <_lv_trigo_sin+0x3e> if(angle < 90) { 10944: 2959 cmp r1, #89 ; 0x59 10946: dd18 ble.n 1097a <_lv_trigo_sin+0x46> ret = sin0_90_table[angle]; } else if(angle >= 90 && angle < 180) { 10948: b289 uxth r1, r1 1094a: 000b movs r3, r1 1094c: 3b5a subs r3, #90 ; 0x5a 1094e: b29b uxth r3, r3 10950: 2b59 cmp r3, #89 ; 0x59 10952: d916 bls.n 10982 <_lv_trigo_sin+0x4e> angle = 180 - angle; ret = sin0_90_table[angle]; } else if(angle >= 180 && angle < 270) { 10954: 000b movs r3, r1 10956: 3bb4 subs r3, #180 ; 0xb4 10958: b29b uxth r3, r3 1095a: 2b59 cmp r3, #89 ; 0x59 1095c: d918 bls.n 10990 <_lv_trigo_sin+0x5c> angle = angle - 180; ret = -sin0_90_table[angle]; } else { /*angle >=270*/ angle = 360 - angle; 1095e: 23b4 movs r3, #180 ; 0xb4 10960: 005b lsls r3, r3, #1 10962: 1a59 subs r1, r3, r1 ret = -sin0_90_table[angle]; 10964: b209 sxth r1, r1 10966: 0049 lsls r1, r1, #1 10968: 4b0e ldr r3, [pc, #56] ; (109a4 <_lv_trigo_sin+0x70>) 1096a: 5ac8 ldrh r0, [r1, r3] 1096c: 4240 negs r0, r0 1096e: b200 sxth r0, r0 10970: e006 b.n 10980 <_lv_trigo_sin+0x4c> if(angle < 0) angle = 360 + angle; 10972: 3169 adds r1, #105 ; 0x69 10974: 31ff adds r1, #255 ; 0xff 10976: b209 sxth r1, r1 10978: e7e4 b.n 10944 <_lv_trigo_sin+0x10> ret = sin0_90_table[angle]; 1097a: 0049 lsls r1, r1, #1 1097c: 4b09 ldr r3, [pc, #36] ; (109a4 <_lv_trigo_sin+0x70>) 1097e: 5ec8 ldrsh r0, [r1, r3] } return ret; } 10980: bd10 pop {r4, pc} angle = 180 - angle; 10982: 23b4 movs r3, #180 ; 0xb4 10984: 1a59 subs r1, r3, r1 ret = sin0_90_table[angle]; 10986: b209 sxth r1, r1 10988: 0049 lsls r1, r1, #1 1098a: 4b06 ldr r3, [pc, #24] ; (109a4 <_lv_trigo_sin+0x70>) 1098c: 5ec8 ldrsh r0, [r1, r3] 1098e: e7f7 b.n 10980 <_lv_trigo_sin+0x4c> ret = -sin0_90_table[angle]; 10990: b21b sxth r3, r3 10992: 005b lsls r3, r3, #1 10994: 4a03 ldr r2, [pc, #12] ; (109a4 <_lv_trigo_sin+0x70>) 10996: 5a98 ldrh r0, [r3, r2] 10998: 4240 negs r0, r0 1099a: b200 sxth r0, r0 1099c: e7f0 b.n 10980 <_lv_trigo_sin+0x4c> 1099e: 46c0 nop ; (mov r8, r8) 109a0: 00017b61 .word 0x00017b61 109a4: 0001c7c4 .word 0x0001c7c4 000109a8 <_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) { 109a8: b530 push {r4, r5, lr} x = x << 8; /*To get 4 bit precision. (sqrt(256) = 16 = 4 bit)*/ 109aa: 0200 lsls r0, r0, #8 uint32_t root = 0; 109ac: 2500 movs r5, #0 109ae: e001 b.n 109b4 <_lv_sqrt+0xc> uint32_t trial; // http://ww1.microchip.com/...en/AppNotes/91040a.pdf do { trial = root + mask; if((uint32_t)trial * trial <= x) root = trial; mask = mask >> 1; 109b0: 0852 lsrs r2, r2, #1 } while(mask); 109b2: d006 beq.n 109c2 <_lv_sqrt+0x1a> trial = root + mask; 109b4: 1953 adds r3, r2, r5 if((uint32_t)trial * trial <= x) root = trial; 109b6: 001c movs r4, r3 109b8: 435c muls r4, r3 109ba: 42a0 cmp r0, r4 109bc: d3f8 bcc.n 109b0 <_lv_sqrt+0x8> 109be: 001d movs r5, r3 109c0: e7f6 b.n 109b0 <_lv_sqrt+0x8> q->i = (uint32_t) root >> 4; 109c2: 092b lsrs r3, r5, #4 109c4: 800b strh r3, [r1, #0] q->f = (uint32_t)(root & 0xf) << 4; 109c6: 012d lsls r5, r5, #4 109c8: 23ff movs r3, #255 ; 0xff 109ca: 401d ands r5, r3 109cc: 804d strh r5, [r1, #2] } 109ce: bd30 pop {r4, r5, pc} 000109d0 : */ 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*/ 109d0: 2800 cmp r0, #0 109d2: d00e beq.n 109f2 next_e = (lv_mem_ent_t *)work_mem; } else { /*Get the next entry */ uint8_t * data = &act_e->first_data; 109d4: 1d03 adds r3, r0, #4 next_e = (lv_mem_ent_t *)&data[act_e->header.s.d_size]; 109d6: 6800 ldr r0, [r0, #0] 109d8: 0840 lsrs r0, r0, #1 109da: 1818 adds r0, r3, r0 if(&next_e->first_data >= &work_mem[LV_MEM_SIZE]) next_e = NULL; 109dc: 1d02 adds r2, r0, #4 109de: 4b06 ldr r3, [pc, #24] ; (109f8 ) 109e0: 681b ldr r3, [r3, #0] 109e2: 2180 movs r1, #128 ; 0x80 109e4: 0189 lsls r1, r1, #6 109e6: 468c mov ip, r1 109e8: 4463 add r3, ip 109ea: 429a cmp r2, r3 109ec: 419b sbcs r3, r3 109ee: 4018 ands r0, r3 } return next_e; } 109f0: 4770 bx lr next_e = (lv_mem_ent_t *)work_mem; 109f2: 4b01 ldr r3, [pc, #4] ; (109f8 ) 109f4: 6818 ldr r0, [r3, #0] 109f6: e7fb b.n 109f0 109f8: 20002c0c .word 0x20002c0c 000109fc : * Truncate the data of entry to the given size * @param e Pointer to an entry * @param size new size in bytes */ static void ent_trunc(lv_mem_ent_t * e, size_t size) { 109fc: b530 push {r4, r5, lr} size = size & (~0x7); size += 8; } #else /*Round the size up to 4*/ if(size & 0x3) { 109fe: 078b lsls r3, r1, #30 10a00: d002 beq.n 10a08 size = size & (~0x3); 10a02: 2303 movs r3, #3 10a04: 4399 bics r1, r3 size += 4; 10a06: 3104 adds 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)) { 10a08: 6803 ldr r3, [r0, #0] 10a0a: 085b lsrs r3, r3, #1 10a0c: 1d0a adds r2, r1, #4 10a0e: 4293 cmp r3, r2 10a10: d017 beq.n 10a42 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) { 10a12: 4299 cmp r1, r3 10a14: d00e beq.n 10a34 uint8_t * e_data = &e->first_data; 10a16: 1d02 adds r2, r0, #4 lv_mem_ent_t * after_new_e = (lv_mem_ent_t *)&e_data[size]; 10a18: 1852 adds r2, r2, r1 after_new_e->header.s.used = 0; 10a1a: 7813 ldrb r3, [r2, #0] 10a1c: 2401 movs r4, #1 10a1e: 43a3 bics r3, r4 10a20: 7013 strb r3, [r2, #0] after_new_e->header.s.d_size = (uint32_t)e->header.s.d_size - size - sizeof(lv_mem_header_t); 10a22: 6803 ldr r3, [r0, #0] 10a24: 085b lsrs r3, r3, #1 10a26: 3b04 subs r3, #4 10a28: 1a5b subs r3, r3, r1 10a2a: 005b lsls r3, r3, #1 10a2c: 6815 ldr r5, [r2, #0] 10a2e: 402c ands r4, r5 10a30: 4323 orrs r3, r4 10a32: 6013 str r3, [r2, #0] } /* Set the new size for the original entry */ e->header.s.d_size = (uint32_t)size; 10a34: 0049 lsls r1, r1, #1 10a36: 2301 movs r3, #1 10a38: 6802 ldr r2, [r0, #0] 10a3a: 4013 ands r3, r2 10a3c: 4319 orrs r1, r3 10a3e: 6001 str r1, [r0, #0] } 10a40: bd30 pop {r4, r5, pc} size = e->header.s.d_size; 10a42: 0011 movs r1, r2 10a44: e7f6 b.n 10a34 ... 00010a48 <_lv_mem_init>: work_mem = (uint8_t *)work_mem_int; 10a48: 4b06 ldr r3, [pc, #24] ; (10a64 <_lv_mem_init+0x1c>) 10a4a: 4a07 ldr r2, [pc, #28] ; (10a68 <_lv_mem_init+0x20>) 10a4c: 6013 str r3, [r2, #0] full->header.s.used = 0; 10a4e: 7819 ldrb r1, [r3, #0] 10a50: 2201 movs r2, #1 10a52: 4391 bics r1, r2 10a54: 7019 strb r1, [r3, #0] full->header.s.d_size = LV_MEM_SIZE - sizeof(lv_mem_header_t); 10a56: 6819 ldr r1, [r3, #0] 10a58: 400a ands r2, r1 10a5a: 4904 ldr r1, [pc, #16] ; (10a6c <_lv_mem_init+0x24>) 10a5c: 430a orrs r2, r1 10a5e: 601a str r2, [r3, #0] } 10a60: 4770 bx lr 10a62: 46c0 nop ; (mov r8, r8) 10a64: 20002c10 .word 0x20002c10 10a68: 20002c0c .word 0x20002c0c 10a6c: 00003ff8 .word 0x00003ff8 00010a70 : { 10a70: b5f0 push {r4, r5, r6, r7, lr} 10a72: 46c6 mov lr, r8 10a74: b500 push {lr} 10a76: 1e05 subs r5, r0, #0 if(size == 0) { 10a78: d020 beq.n 10abc if(size & 0x3) { 10a7a: 0783 lsls r3, r0, #30 10a7c: d002 beq.n 10a84 size = size & (~0x3); 10a7e: 2303 movs r3, #3 10a80: 439d bics r5, r3 size += 4; 10a82: 3504 adds r5, #4 lv_mem_ent_t * e = NULL; 10a84: 2400 movs r4, #0 e = ent_get_next(e); 10a86: 4e10 ldr r6, [pc, #64] ; (10ac8 ) if(e->header.s.used == 0 && e->header.s.d_size >= size) { 10a88: 2301 movs r3, #1 10a8a: 4698 mov r8, r3 ent_trunc(e, size); 10a8c: 4f0f ldr r7, [pc, #60] ; (10acc ) 10a8e: e008 b.n 10aa2 10a90: 0029 movs r1, r5 10a92: 47b8 blx r7 e->header.s.used = 1; 10a94: 7823 ldrb r3, [r4, #0] 10a96: 2201 movs r2, #1 10a98: 4313 orrs r3, r2 10a9a: 7023 strb r3, [r4, #0] alloc = &e->first_data; 10a9c: 1d20 adds r0, r4, #4 } while(e != NULL && alloc == NULL); 10a9e: 2800 cmp r0, #0 10aa0: d10f bne.n 10ac2 e = ent_get_next(e); 10aa2: 0020 movs r0, r4 10aa4: 47b0 blx r6 10aa6: 1e04 subs r4, r0, #0 if(e != NULL) { 10aa8: d00a beq.n 10ac0 if(e->header.s.used == 0 && e->header.s.d_size >= size) { 10aaa: 7803 ldrb r3, [r0, #0] 10aac: 4642 mov r2, r8 10aae: 421a tst r2, r3 10ab0: d1f7 bne.n 10aa2 10ab2: 6803 ldr r3, [r0, #0] 10ab4: 085b lsrs r3, r3, #1 10ab6: 429d cmp r5, r3 10ab8: d9ea bls.n 10a90 10aba: e7f2 b.n 10aa2 return &zero_mem; 10abc: 4804 ldr r0, [pc, #16] ; (10ad0 ) 10abe: e000 b.n 10ac2 10ac0: 2000 movs r0, #0 } 10ac2: bc04 pop {r2} 10ac4: 4690 mov r8, r2 10ac6: bdf0 pop {r4, r5, r6, r7, pc} 10ac8: 000109d1 .word 0x000109d1 10acc: 000109fd .word 0x000109fd 10ad0: 20004c10 .word 0x20004c10 00010ad4 : { 10ad4: b5f0 push {r4, r5, r6, r7, lr} 10ad6: 46c6 mov lr, r8 10ad8: b500 push {lr} e_free = ent_get_next(NULL); 10ada: 2000 movs r0, #0 10adc: 4b15 ldr r3, [pc, #84] ; (10b34 ) 10ade: 4798 blx r3 10ae0: 0004 movs r4, r0 if(e_free->header.s.used != 0) { 10ae2: 2501 movs r5, #1 e_next = ent_get_next(e_free); 10ae4: 4f13 ldr r7, [pc, #76] ; (10b34 ) e_next = ent_get_next(e_next); 10ae6: 003e movs r6, r7 e_free = ent_get_next(e_free); 10ae8: 46b8 mov r8, r7 10aea: e017 b.n 10b1c e_next = ent_get_next(e_free); 10aec: 0020 movs r0, r4 10aee: 47b8 blx r7 while(e_next != NULL) { 10af0: 2800 cmp r0, #0 10af2: d01c beq.n 10b2e if(e_next->header.s.used == 0) { 10af4: 7803 ldrb r3, [r0, #0] 10af6: 421d tst r5, r3 10af8: d10f bne.n 10b1a e_free->header.s.d_size += e_next->header.s.d_size + sizeof(e_next->header); 10afa: 6822 ldr r2, [r4, #0] 10afc: 0853 lsrs r3, r2, #1 10afe: 3304 adds r3, #4 10b00: 6801 ldr r1, [r0, #0] 10b02: 0849 lsrs r1, r1, #1 10b04: 185b adds r3, r3, r1 10b06: 005b lsls r3, r3, #1 10b08: 402a ands r2, r5 10b0a: 4313 orrs r3, r2 10b0c: 6023 str r3, [r4, #0] e_next = ent_get_next(e_next); 10b0e: 47b0 blx r6 while(e_next != NULL) { 10b10: 2800 cmp r0, #0 10b12: d00c beq.n 10b2e if(e_next->header.s.used == 0) { 10b14: 7803 ldrb r3, [r0, #0] 10b16: 421d tst r5, r3 10b18: d0ef beq.n 10afa { 10b1a: 0004 movs r4, r0 while(e_free != NULL) { 10b1c: 2c00 cmp r4, #0 10b1e: d006 beq.n 10b2e if(e_free->header.s.used != 0) { 10b20: 7823 ldrb r3, [r4, #0] 10b22: 421d tst r5, r3 10b24: d0e2 beq.n 10aec e_free = ent_get_next(e_free); 10b26: 0020 movs r0, r4 10b28: 47c0 blx r8 10b2a: 0004 movs r4, r0 10b2c: e7f6 b.n 10b1c } 10b2e: bc04 pop {r2} 10b30: 4690 mov r8, r2 10b32: bdf0 pop {r4, r5, r6, r7, pc} 10b34: 000109d1 .word 0x000109d1 00010b38 : { 10b38: b570 push {r4, r5, r6, lr} 10b3a: 0004 movs r4, r0 if(data == &zero_mem) return; 10b3c: 4b19 ldr r3, [pc, #100] ; (10ba4 ) 10b3e: 4298 cmp r0, r3 10b40: d028 beq.n 10b94 if(data == NULL) return; 10b42: 2800 cmp r0, #0 10b44: d026 beq.n 10b94 e->header.s.used = 0; 10b46: 1f02 subs r2, r0, #4 10b48: 7813 ldrb r3, [r2, #0] 10b4a: 2101 movs r1, #1 10b4c: 438b bics r3, r1 10b4e: 7013 strb r3, [r2, #0] full_defrag_cnt++; 10b50: 4a15 ldr r2, [pc, #84] ; (10ba8 ) 10b52: 8813 ldrh r3, [r2, #0] 10b54: 3301 adds r3, #1 10b56: b29b uxth r3, r3 10b58: 8013 strh r3, [r2, #0] if(full_defrag_cnt < LV_MEM_FULL_DEFRAG_CNT) { 10b5a: 2b0f cmp r3, #15 10b5c: d81b bhi.n 10b96 lv_mem_ent_t * e = (lv_mem_ent_t *)((uint8_t *)data - sizeof(lv_mem_header_t)); 10b5e: 3804 subs r0, #4 e_next = ent_get_next(e); 10b60: 4b12 ldr r3, [pc, #72] ; (10bac ) 10b62: 4798 blx r3 while(e_next != NULL) { 10b64: 2800 cmp r0, #0 10b66: d015 beq.n 10b94 if(e_next->header.s.used == 0) { 10b68: 7803 ldrb r3, [r0, #0] 10b6a: 07db lsls r3, r3, #31 10b6c: d412 bmi.n 10b94 e->header.s.d_size += e_next->header.s.d_size + sizeof(e->header); 10b6e: 3c04 subs r4, #4 10b70: 2501 movs r5, #1 e_next = ent_get_next(e_next); 10b72: 4e0e ldr r6, [pc, #56] ; (10bac ) e->header.s.d_size += e_next->header.s.d_size + sizeof(e->header); 10b74: 6822 ldr r2, [r4, #0] 10b76: 0853 lsrs r3, r2, #1 10b78: 3304 adds r3, #4 10b7a: 6801 ldr r1, [r0, #0] 10b7c: 0849 lsrs r1, r1, #1 10b7e: 185b adds r3, r3, r1 10b80: 005b lsls r3, r3, #1 10b82: 402a ands r2, r5 10b84: 4313 orrs r3, r2 10b86: 6023 str r3, [r4, #0] e_next = ent_get_next(e_next); 10b88: 47b0 blx r6 while(e_next != NULL) { 10b8a: 2800 cmp r0, #0 10b8c: d002 beq.n 10b94 if(e_next->header.s.used == 0) { 10b8e: 7803 ldrb r3, [r0, #0] 10b90: 421d tst r5, r3 10b92: d0ef beq.n 10b74 } 10b94: bd70 pop {r4, r5, r6, pc} full_defrag_cnt = 0; 10b96: 2200 movs r2, #0 10b98: 4b03 ldr r3, [pc, #12] ; (10ba8 ) 10b9a: 801a strh r2, [r3, #0] lv_mem_defrag(); 10b9c: 4b04 ldr r3, [pc, #16] ; (10bb0 ) 10b9e: 4798 blx r3 10ba0: e7f8 b.n 10b94 10ba2: 46c0 nop ; (mov r8, r8) 10ba4: 20004c10 .word 0x20004c10 10ba8: 20002be8 .word 0x20002be8 10bac: 000109d1 .word 0x000109d1 10bb0: 00010ad5 .word 0x00010ad5 00010bb4 <_lv_mem_get_size>: if(data == NULL) return 0; 10bb4: 2800 cmp r0, #0 10bb6: d006 beq.n 10bc6 <_lv_mem_get_size+0x12> if(data == &zero_mem) return 0; 10bb8: 4b05 ldr r3, [pc, #20] ; (10bd0 <_lv_mem_get_size+0x1c>) 10bba: 4298 cmp r0, r3 10bbc: d005 beq.n 10bca <_lv_mem_get_size+0x16> return e->header.s.d_size; 10bbe: 3804 subs r0, #4 10bc0: 6800 ldr r0, [r0, #0] 10bc2: 0840 lsrs r0, r0, #1 } 10bc4: 4770 bx lr if(data == NULL) return 0; 10bc6: 2000 movs r0, #0 10bc8: e7fc b.n 10bc4 <_lv_mem_get_size+0x10> if(data == &zero_mem) return 0; 10bca: 2000 movs r0, #0 10bcc: e7fa b.n 10bc4 <_lv_mem_get_size+0x10> 10bce: 46c0 nop ; (mov r8, r8) 10bd0: 20004c10 .word 0x20004c10 00010bd4 <_lv_mem_buf_release>: { 10bd4: b510 push {r4, lr} if(mem_buf_small[i].p == p) { 10bd6: 4b15 ldr r3, [pc, #84] ; (10c2c <_lv_mem_buf_release+0x58>) 10bd8: 681b ldr r3, [r3, #0] 10bda: 4298 cmp r0, r3 10bdc: d013 beq.n 10c06 <_lv_mem_buf_release+0x32> 10bde: 4b13 ldr r3, [pc, #76] ; (10c2c <_lv_mem_buf_release+0x58>) 10be0: 689b ldr r3, [r3, #8] 10be2: 2201 movs r2, #1 10be4: 4283 cmp r3, r0 10be6: d00f beq.n 10c08 <_lv_mem_buf_release+0x34> if(LV_GC_ROOT(_lv_mem_buf[i]).p == p) { 10be8: 4b11 ldr r3, [pc, #68] ; (10c30 <_lv_mem_buf_release+0x5c>) 10bea: 681b ldr r3, [r3, #0] 10bec: 4298 cmp r0, r3 10bee: d013 beq.n 10c18 <_lv_mem_buf_release+0x44> 10bf0: 2301 movs r3, #1 10bf2: 4c0f ldr r4, [pc, #60] ; (10c30 <_lv_mem_buf_release+0x5c>) 10bf4: 0019 movs r1, r3 10bf6: 00da lsls r2, r3, #3 10bf8: 58a2 ldr r2, [r4, r2] 10bfa: 4290 cmp r0, r2 10bfc: d00d beq.n 10c1a <_lv_mem_buf_release+0x46> 10bfe: 3301 adds r3, #1 for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { 10c00: 2b10 cmp r3, #16 10c02: d1f7 bne.n 10bf4 <_lv_mem_buf_release+0x20> } 10c04: bd10 pop {r4, pc} if(mem_buf_small[i].p == p) { 10c06: 2200 movs r2, #0 mem_buf_small[i].used = 0; 10c08: 00d2 lsls r2, r2, #3 10c0a: 4b08 ldr r3, [pc, #32] ; (10c2c <_lv_mem_buf_release+0x58>) 10c0c: 189b adds r3, r3, r2 10c0e: 799a ldrb r2, [r3, #6] 10c10: 2101 movs r1, #1 10c12: 438a bics r2, r1 10c14: 719a strb r2, [r3, #6] return; 10c16: e7f5 b.n 10c04 <_lv_mem_buf_release+0x30> if(LV_GC_ROOT(_lv_mem_buf[i]).p == p) { 10c18: 2100 movs r1, #0 LV_GC_ROOT(_lv_mem_buf[i]).used = 0; 10c1a: 00c9 lsls r1, r1, #3 10c1c: 4b04 ldr r3, [pc, #16] ; (10c30 <_lv_mem_buf_release+0x5c>) 10c1e: 1859 adds r1, r3, r1 10c20: 798b ldrb r3, [r1, #6] 10c22: 2201 movs r2, #1 10c24: 4393 bics r3, r2 10c26: 718b strb r3, [r1, #6] return; 10c28: e7ec b.n 10c04 <_lv_mem_buf_release+0x30> 10c2a: 46c0 nop ; (mov r8, r8) 10c2c: 20000044 .word 0x20000044 10c30: 20004cdc .word 0x20004cdc 00010c34 <_lv_mem_buf_free_all>: { 10c34: b5f0 push {r4, r5, r6, r7, lr} 10c36: 46c6 mov lr, r8 10c38: b500 push {lr} mem_buf_small[i].used = 0; 10c3a: 4b11 ldr r3, [pc, #68] ; (10c80 <_lv_mem_buf_free_all+0x4c>) 10c3c: 799a ldrb r2, [r3, #6] 10c3e: 2101 movs r1, #1 10c40: 438a bics r2, r1 10c42: 719a strb r2, [r3, #6] 10c44: 7b9a ldrb r2, [r3, #14] 10c46: 438a bics r2, r1 10c48: 739a strb r2, [r3, #14] 10c4a: 4c0e ldr r4, [pc, #56] ; (10c84 <_lv_mem_buf_free_all+0x50>) 10c4c: 2500 movs r5, #0 lv_mem_free(LV_GC_ROOT(_lv_mem_buf[i]).p); 10c4e: 4b0e ldr r3, [pc, #56] ; (10c88 <_lv_mem_buf_free_all+0x54>) 10c50: 4698 mov r8, r3 LV_GC_ROOT(_lv_mem_buf[i]).p = NULL; 10c52: 2600 movs r6, #0 LV_GC_ROOT(_lv_mem_buf[i]).used = 0; 10c54: 0027 movs r7, r4 10c56: e003 b.n 10c60 <_lv_mem_buf_free_all+0x2c> 10c58: 3501 adds r5, #1 10c5a: 3408 adds r4, #8 for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { 10c5c: 2d10 cmp r5, #16 10c5e: d00c beq.n 10c7a <_lv_mem_buf_free_all+0x46> if(LV_GC_ROOT(_lv_mem_buf[i]).p) { 10c60: 6820 ldr r0, [r4, #0] 10c62: 2800 cmp r0, #0 10c64: d0f8 beq.n 10c58 <_lv_mem_buf_free_all+0x24> lv_mem_free(LV_GC_ROOT(_lv_mem_buf[i]).p); 10c66: 47c0 blx r8 LV_GC_ROOT(_lv_mem_buf[i]).p = NULL; 10c68: 6026 str r6, [r4, #0] LV_GC_ROOT(_lv_mem_buf[i]).used = 0; 10c6a: 00eb lsls r3, r5, #3 10c6c: 18fb adds r3, r7, r3 10c6e: 799a ldrb r2, [r3, #6] 10c70: 2101 movs r1, #1 10c72: 438a bics r2, r1 10c74: 719a strb r2, [r3, #6] LV_GC_ROOT(_lv_mem_buf[i]).size = 0; 10c76: 80a6 strh r6, [r4, #4] 10c78: e7ee b.n 10c58 <_lv_mem_buf_free_all+0x24> } 10c7a: bc04 pop {r2} 10c7c: 4690 mov r8, r2 10c7e: bdf0 pop {r4, r5, r6, r7, pc} 10c80: 20000044 .word 0x20000044 10c84: 20004cdc .word 0x20004cdc 10c88: 00010b39 .word 0x00010b39 00010c8c <_lv_memcpy>: { 10c8c: b5f0 push {r4, r5, r6, r7, lr} 10c8e: 46c6 mov lr, r8 10c90: b500 push {lr} lv_uintptr_t d_align = (lv_uintptr_t)d8 & ALIGN_MASK; 10c92: 2303 movs r3, #3 10c94: 001c movs r4, r3 10c96: 4004 ands r4, r0 lv_uintptr_t s_align = (lv_uintptr_t)s8 & ALIGN_MASK; 10c98: 400b ands r3, r1 if(s_align != d_align) { 10c9a: 429c cmp r4, r3 10c9c: d067 beq.n 10d6e <_lv_memcpy+0xe2> while(len > 32) { 10c9e: 2a20 cmp r2, #32 10ca0: d963 bls.n 10d6a <_lv_memcpy+0xde> 10ca2: 2321 movs r3, #33 ; 0x21 10ca4: 425b negs r3, r3 10ca6: 469c mov ip, r3 10ca8: 4494 add ip, r2 10caa: 4663 mov r3, ip 10cac: 095f lsrs r7, r3, #5 10cae: 1c7b adds r3, r7, #1 10cb0: 015b lsls r3, r3, #5 10cb2: 18c5 adds r5, r0, r3 10cb4: 000c movs r4, r1 10cb6: 0003 movs r3, r0 REPEAT8(COPY8); 10cb8: 7826 ldrb r6, [r4, #0] 10cba: 701e strb r6, [r3, #0] 10cbc: 7866 ldrb r6, [r4, #1] 10cbe: 705e strb r6, [r3, #1] 10cc0: 78a6 ldrb r6, [r4, #2] 10cc2: 709e strb r6, [r3, #2] 10cc4: 78e6 ldrb r6, [r4, #3] 10cc6: 70de strb r6, [r3, #3] 10cc8: 7926 ldrb r6, [r4, #4] 10cca: 711e strb r6, [r3, #4] 10ccc: 7966 ldrb r6, [r4, #5] 10cce: 715e strb r6, [r3, #5] 10cd0: 79a6 ldrb r6, [r4, #6] 10cd2: 719e strb r6, [r3, #6] 10cd4: 79e6 ldrb r6, [r4, #7] 10cd6: 71de strb r6, [r3, #7] REPEAT8(COPY8); 10cd8: 7a26 ldrb r6, [r4, #8] 10cda: 721e strb r6, [r3, #8] 10cdc: 7a66 ldrb r6, [r4, #9] 10cde: 725e strb r6, [r3, #9] 10ce0: 7aa6 ldrb r6, [r4, #10] 10ce2: 729e strb r6, [r3, #10] 10ce4: 7ae6 ldrb r6, [r4, #11] 10ce6: 72de strb r6, [r3, #11] 10ce8: 7b26 ldrb r6, [r4, #12] 10cea: 731e strb r6, [r3, #12] 10cec: 7b66 ldrb r6, [r4, #13] 10cee: 735e strb r6, [r3, #13] 10cf0: 7ba6 ldrb r6, [r4, #14] 10cf2: 739e strb r6, [r3, #14] 10cf4: 7be6 ldrb r6, [r4, #15] 10cf6: 73de strb r6, [r3, #15] REPEAT8(COPY8); 10cf8: 7c26 ldrb r6, [r4, #16] 10cfa: 741e strb r6, [r3, #16] 10cfc: 7c66 ldrb r6, [r4, #17] 10cfe: 745e strb r6, [r3, #17] 10d00: 7ca6 ldrb r6, [r4, #18] 10d02: 749e strb r6, [r3, #18] 10d04: 7ce6 ldrb r6, [r4, #19] 10d06: 74de strb r6, [r3, #19] 10d08: 7d26 ldrb r6, [r4, #20] 10d0a: 751e strb r6, [r3, #20] 10d0c: 7d66 ldrb r6, [r4, #21] 10d0e: 755e strb r6, [r3, #21] 10d10: 7da6 ldrb r6, [r4, #22] 10d12: 759e strb r6, [r3, #22] 10d14: 7de6 ldrb r6, [r4, #23] 10d16: 75de strb r6, [r3, #23] REPEAT8(COPY8); 10d18: 7e26 ldrb r6, [r4, #24] 10d1a: 761e strb r6, [r3, #24] 10d1c: 7e66 ldrb r6, [r4, #25] 10d1e: 765e strb r6, [r3, #25] 10d20: 7ea6 ldrb r6, [r4, #26] 10d22: 769e strb r6, [r3, #26] 10d24: 7ee6 ldrb r6, [r4, #27] 10d26: 76de strb r6, [r3, #27] 10d28: 7f26 ldrb r6, [r4, #28] 10d2a: 771e strb r6, [r3, #28] 10d2c: 7f66 ldrb r6, [r4, #29] 10d2e: 775e strb r6, [r3, #29] 10d30: 7fa6 ldrb r6, [r4, #30] 10d32: 779e strb r6, [r3, #30] 10d34: 7fe6 ldrb r6, [r4, #31] 10d36: 77de strb r6, [r3, #31] 10d38: 3320 adds r3, #32 10d3a: 3420 adds r4, #32 while(len > 32) { 10d3c: 42ab cmp r3, r5 10d3e: d1bb bne.n 10cb8 <_lv_memcpy+0x2c> 10d40: 231f movs r3, #31 10d42: 4665 mov r5, ip 10d44: 439d bics r5, r3 10d46: 3520 adds r5, #32 10d48: 1943 adds r3, r0, r5 10d4a: 1949 adds r1, r1, r5 10d4c: 3a20 subs r2, #32 10d4e: 017f lsls r7, r7, #5 10d50: 1bd2 subs r2, r2, r7 while(len) { 10d52: 2a00 cmp r2, #0 10d54: d006 beq.n 10d64 <_lv_memcpy+0xd8> 10d56: 189a adds r2, r3, r2 COPY8 10d58: 780c ldrb r4, [r1, #0] 10d5a: 701c strb r4, [r3, #0] 10d5c: 3301 adds r3, #1 10d5e: 3101 adds r1, #1 while(len) { 10d60: 4293 cmp r3, r2 10d62: d1f9 bne.n 10d58 <_lv_memcpy+0xcc> } 10d64: bc04 pop {r2} 10d66: 4690 mov r8, r2 10d68: bdf0 pop {r4, r5, r6, r7, pc} while(len > 32) { 10d6a: 0003 movs r3, r0 10d6c: e7f1 b.n 10d52 <_lv_memcpy+0xc6> uint8_t * d8 = dst; 10d6e: 0005 movs r5, r0 if(d_align) { 10d70: 2c00 cmp r4, #0 10d72: d014 beq.n 10d9e <_lv_memcpy+0x112> d_align = ALIGN_MASK + 1 - d_align; 10d74: 2504 movs r5, #4 10d76: 1b2d subs r5, r5, r4 while(d_align && len) { 10d78: d00e beq.n 10d98 <_lv_memcpy+0x10c> 10d7a: 2a00 cmp r2, #0 10d7c: d05f beq.n 10e3e <_lv_memcpy+0x1b2> 10d7e: 1945 adds r5, r0, r5 10d80: 0003 movs r3, r0 COPY8; 10d82: 780c ldrb r4, [r1, #0] 10d84: 701c strb r4, [r3, #0] 10d86: 3301 adds r3, #1 10d88: 3101 adds r1, #1 len--; 10d8a: 3a01 subs r2, #1 while(d_align && len) { 10d8c: 42ab cmp r3, r5 10d8e: d005 beq.n 10d9c <_lv_memcpy+0x110> 10d90: 2a00 cmp r2, #0 10d92: d1f6 bne.n 10d82 <_lv_memcpy+0xf6> while(len > 4) { 10d94: 2200 movs r2, #0 10d96: e048 b.n 10e2a <_lv_memcpy+0x19e> uint8_t * d8 = dst; 10d98: 0005 movs r5, r0 10d9a: e000 b.n 10d9e <_lv_memcpy+0x112> COPY8; 10d9c: 001d movs r5, r3 while(len > 32) { 10d9e: 2a20 cmp r2, #32 10da0: d928 bls.n 10df4 <_lv_memcpy+0x168> 10da2: 0017 movs r7, r2 10da4: 3f21 subs r7, #33 ; 0x21 10da6: 46b8 mov r8, r7 10da8: 097b lsrs r3, r7, #5 10daa: 469c mov ip, r3 10dac: 1c5e adds r6, r3, #1 10dae: 0176 lsls r6, r6, #5 10db0: 19ae adds r6, r5, r6 10db2: 000c movs r4, r1 10db4: 002b movs r3, r5 REPEAT8(COPY32) 10db6: 6827 ldr r7, [r4, #0] 10db8: 601f str r7, [r3, #0] 10dba: 6867 ldr r7, [r4, #4] 10dbc: 605f str r7, [r3, #4] 10dbe: 68a7 ldr r7, [r4, #8] 10dc0: 609f str r7, [r3, #8] 10dc2: 68e7 ldr r7, [r4, #12] 10dc4: 60df str r7, [r3, #12] 10dc6: 6927 ldr r7, [r4, #16] 10dc8: 611f str r7, [r3, #16] 10dca: 6967 ldr r7, [r4, #20] 10dcc: 615f str r7, [r3, #20] 10dce: 69a7 ldr r7, [r4, #24] 10dd0: 619f str r7, [r3, #24] 10dd2: 69e7 ldr r7, [r4, #28] 10dd4: 61df str r7, [r3, #28] 10dd6: 3320 adds r3, #32 10dd8: 3420 adds r4, #32 while(len > 32) { 10dda: 429e cmp r6, r3 10ddc: d1eb bne.n 10db6 <_lv_memcpy+0x12a> 10dde: 231f movs r3, #31 10de0: 4647 mov r7, r8 10de2: 439f bics r7, r3 10de4: 3720 adds r7, #32 10de6: 19ed adds r5, r5, r7 10de8: 19c9 adds r1, r1, r7 10dea: 0013 movs r3, r2 10dec: 3b20 subs r3, #32 10dee: 4662 mov r2, ip 10df0: 0152 lsls r2, r2, #5 10df2: 1a9a subs r2, r3, r2 while(len > 4) { 10df4: 002b movs r3, r5 10df6: 2a04 cmp r2, #4 10df8: d917 bls.n 10e2a <_lv_memcpy+0x19e> 10dfa: 1f53 subs r3, r2, #5 10dfc: 469c mov ip, r3 10dfe: 089b lsrs r3, r3, #2 10e00: 4698 mov r8, r3 10e02: 3301 adds r3, #1 10e04: 009b lsls r3, r3, #2 10e06: 18eb adds r3, r5, r3 10e08: 000e movs r6, r1 10e0a: 002c movs r4, r5 COPY32; 10e0c: ce80 ldmia r6!, {r7} 10e0e: c480 stmia r4!, {r7} while(len > 4) { 10e10: 429c cmp r4, r3 10e12: d1fb bne.n 10e0c <_lv_memcpy+0x180> 10e14: 2303 movs r3, #3 10e16: 4664 mov r4, ip 10e18: 439c bics r4, r3 10e1a: 0023 movs r3, r4 10e1c: 3304 adds r3, #4 10e1e: 1f14 subs r4, r2, #4 10e20: 4642 mov r2, r8 10e22: 0092 lsls r2, r2, #2 10e24: 1aa2 subs r2, r4, r2 COPY32; 10e26: 18c9 adds r1, r1, r3 10e28: 18eb adds r3, r5, r3 while(len) { 10e2a: 2a00 cmp r2, #0 10e2c: d09a beq.n 10d64 <_lv_memcpy+0xd8> 10e2e: 189a adds r2, r3, r2 COPY8 10e30: 780c ldrb r4, [r1, #0] 10e32: 701c strb r4, [r3, #0] 10e34: 3301 adds r3, #1 10e36: 3101 adds r1, #1 while(len) { 10e38: 4293 cmp r3, r2 10e3a: d1f9 bne.n 10e30 <_lv_memcpy+0x1a4> 10e3c: e792 b.n 10d64 <_lv_memcpy+0xd8> uint8_t * d8 = dst; 10e3e: 0003 movs r3, r0 10e40: e7a8 b.n 10d94 <_lv_memcpy+0x108> ... 00010e44 : { 10e44: b5f8 push {r3, r4, r5, r6, r7, lr} 10e46: 0005 movs r5, r0 10e48: 000c movs r4, r1 if(new_size & 0x3) { 10e4a: 078b lsls r3, r1, #30 10e4c: d002 beq.n 10e54 new_size = new_size & (~0x3); 10e4e: 2303 movs r3, #3 10e50: 439c bics r4, r3 new_size += 4; 10e52: 3404 adds r4, #4 if(data_p != NULL) { 10e54: 2d00 cmp r5, #0 10e56: d004 beq.n 10e62 if(e->header.s.used == 0) { 10e58: 1f2b subs r3, r5, #4 10e5a: 781b ldrb r3, [r3, #0] data_p = NULL; 10e5c: 07db lsls r3, r3, #31 10e5e: 17db asrs r3, r3, #31 10e60: 401d ands r5, r3 uint32_t old_size = _lv_mem_get_size(data_p); 10e62: 0028 movs r0, r5 10e64: 4b11 ldr r3, [pc, #68] ; (10eac ) 10e66: 4798 blx r3 10e68: 0007 movs r7, r0 if(old_size == new_size) return data_p; /*Also avoid reallocating the same memory*/ 10e6a: 4284 cmp r4, r0 10e6c: d01c beq.n 10ea8 if(new_size < old_size) { 10e6e: d314 bcc.n 10e9a new_p = lv_mem_alloc(new_size); 10e70: 0020 movs r0, r4 10e72: 4b0f ldr r3, [pc, #60] ; (10eb0 ) 10e74: 4798 blx r3 10e76: 1e06 subs r6, r0, #0 if(new_p == NULL) { 10e78: d014 beq.n 10ea4 if(data_p != NULL) { 10e7a: 2d00 cmp r5, #0 10e7c: d012 beq.n 10ea4 if(old_size != 0) { 10e7e: 2f00 cmp r7, #0 10e80: d010 beq.n 10ea4 _lv_memcpy(new_p, data_p, LV_MATH_MIN(new_size, old_size)); 10e82: 0022 movs r2, r4 10e84: 42bc cmp r4, r7 10e86: d900 bls.n 10e8a 10e88: 003a movs r2, r7 10e8a: 0029 movs r1, r5 10e8c: 0030 movs r0, r6 10e8e: 4b09 ldr r3, [pc, #36] ; (10eb4 ) 10e90: 4798 blx r3 lv_mem_free(data_p); 10e92: 0028 movs r0, r5 10e94: 4b08 ldr r3, [pc, #32] ; (10eb8 ) 10e96: 4798 blx r3 10e98: e004 b.n 10ea4 lv_mem_ent_t * e = (lv_mem_ent_t *)((uint8_t *)data_p - sizeof(lv_mem_header_t)); 10e9a: 1f28 subs r0, r5, #4 ent_trunc(e, new_size); 10e9c: 0021 movs r1, r4 10e9e: 4b07 ldr r3, [pc, #28] ; (10ebc ) 10ea0: 4798 blx r3 return &e->first_data; 10ea2: 002e movs r6, r5 } 10ea4: 0030 movs r0, r6 10ea6: bdf8 pop {r3, r4, r5, r6, r7, pc} if(old_size == new_size) return data_p; /*Also avoid reallocating the same memory*/ 10ea8: 002e movs r6, r5 10eaa: e7fb b.n 10ea4 10eac: 00010bb5 .word 0x00010bb5 10eb0: 00010a71 .word 0x00010a71 10eb4: 00010c8d .word 0x00010c8d 10eb8: 00010b39 .word 0x00010b39 10ebc: 000109fd .word 0x000109fd 00010ec0 <_lv_mem_buf_get>: { 10ec0: b5f8 push {r3, r4, r5, r6, r7, lr} if(size == 0) return NULL; 10ec2: 2800 cmp r0, #0 10ec4: d100 bne.n 10ec8 <_lv_mem_buf_get+0x8> 10ec6: e068 b.n 10f9a <_lv_mem_buf_get+0xda> if(size <= MEM_BUF_SMALL_SIZE) { 10ec8: 2810 cmp r0, #16 10eca: d807 bhi.n 10edc <_lv_mem_buf_get+0x1c> if(mem_buf_small[i].used == 0) { 10ecc: 4b34 ldr r3, [pc, #208] ; (10fa0 <_lv_mem_buf_get+0xe0>) 10ece: 799b ldrb r3, [r3, #6] 10ed0: 07db lsls r3, r3, #31 10ed2: d513 bpl.n 10efc <_lv_mem_buf_get+0x3c> 10ed4: 4b32 ldr r3, [pc, #200] ; (10fa0 <_lv_mem_buf_get+0xe0>) 10ed6: 7b9b ldrb r3, [r3, #14] 10ed8: 07db lsls r3, r3, #31 10eda: d505 bpl.n 10ee8 <_lv_mem_buf_get+0x28> 10edc: 4c31 ldr r4, [pc, #196] ; (10fa4 <_lv_mem_buf_get+0xe4>) 10ede: 2300 movs r3, #0 10ee0: 2601 movs r6, #1 10ee2: 4276 negs r6, r6 if(LV_GC_ROOT(_lv_mem_buf[i]).used == 0 && LV_GC_ROOT(_lv_mem_buf[i]).size >= size) { 10ee4: 0027 movs r7, r4 10ee6: e019 b.n 10f1c <_lv_mem_buf_get+0x5c> if(mem_buf_small[i].used == 0) { 10ee8: 2301 movs r3, #1 mem_buf_small[i].used = 1; 10eea: 492d ldr r1, [pc, #180] ; (10fa0 <_lv_mem_buf_get+0xe0>) 10eec: 00db lsls r3, r3, #3 10eee: 18c8 adds r0, r1, r3 10ef0: 7982 ldrb r2, [r0, #6] 10ef2: 2401 movs r4, #1 10ef4: 4322 orrs r2, r4 10ef6: 7182 strb r2, [r0, #6] return mem_buf_small[i].p; 10ef8: 5858 ldr r0, [r3, r1] 10efa: e02d b.n 10f58 <_lv_mem_buf_get+0x98> if(mem_buf_small[i].used == 0) { 10efc: 2300 movs r3, #0 10efe: e7f4 b.n 10eea <_lv_mem_buf_get+0x2a> LV_GC_ROOT(_lv_mem_buf[i]).used = 1; 10f00: 4a28 ldr r2, [pc, #160] ; (10fa4 <_lv_mem_buf_get+0xe4>) 10f02: 00dd lsls r5, r3, #3 10f04: 1951 adds r1, r2, r5 10f06: 798b ldrb r3, [r1, #6] 10f08: 2001 movs r0, #1 10f0a: 4303 orrs r3, r0 10f0c: 718b strb r3, [r1, #6] return LV_GC_ROOT(_lv_mem_buf[i]).p; 10f0e: 58a8 ldr r0, [r5, r2] 10f10: e022 b.n 10f58 <_lv_mem_buf_get+0x98> i_guess = i; 10f12: b25e sxtb r6, r3 10f14: 3301 adds r3, #1 10f16: 3408 adds r4, #8 for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { 10f18: 2b10 cmp r3, #16 10f1a: d013 beq.n 10f44 <_lv_mem_buf_get+0x84> if(LV_GC_ROOT(_lv_mem_buf[i]).used == 0 && LV_GC_ROOT(_lv_mem_buf[i]).size >= size) { 10f1c: 00da lsls r2, r3, #3 10f1e: 18ba adds r2, r7, r2 10f20: 7992 ldrb r2, [r2, #6] 10f22: 07d2 lsls r2, r2, #31 10f24: d4f6 bmi.n 10f14 <_lv_mem_buf_get+0x54> 10f26: 88a2 ldrh r2, [r4, #4] 10f28: 4290 cmp r0, r2 10f2a: d8f3 bhi.n 10f14 <_lv_mem_buf_get+0x54> if(LV_GC_ROOT(_lv_mem_buf[i]).size == size) { 10f2c: d0e8 beq.n 10f00 <_lv_mem_buf_get+0x40> else if(i_guess < 0) { 10f2e: 2e00 cmp r6, #0 10f30: dbef blt.n 10f12 <_lv_mem_buf_get+0x52> else if(LV_GC_ROOT(_lv_mem_buf[i]).size < LV_GC_ROOT(_lv_mem_buf[i_guess]).size) { 10f32: 00f1 lsls r1, r6, #3 10f34: 4d1b ldr r5, [pc, #108] ; (10fa4 <_lv_mem_buf_get+0xe4>) 10f36: 46ac mov ip, r5 10f38: 4461 add r1, ip 10f3a: 8889 ldrh r1, [r1, #4] 10f3c: 4291 cmp r1, r2 10f3e: d9e9 bls.n 10f14 <_lv_mem_buf_get+0x54> i_guess = i; 10f40: b25e sxtb r6, r3 10f42: e7e7 b.n 10f14 <_lv_mem_buf_get+0x54> if(i_guess >= 0) { 10f44: 2e00 cmp r6, #0 10f46: db08 blt.n 10f5a <_lv_mem_buf_get+0x9a> LV_GC_ROOT(_lv_mem_buf[i_guess]).used = 1; 10f48: 4916 ldr r1, [pc, #88] ; (10fa4 <_lv_mem_buf_get+0xe4>) 10f4a: 00f3 lsls r3, r6, #3 10f4c: 18c8 adds r0, r1, r3 10f4e: 7982 ldrb r2, [r0, #6] 10f50: 2401 movs r4, #1 10f52: 4322 orrs r2, r4 10f54: 7182 strb r2, [r0, #6] return LV_GC_ROOT(_lv_mem_buf[i_guess]).p; 10f56: 5858 ldr r0, [r3, r1] } 10f58: bdf8 pop {r3, r4, r5, r6, r7, pc} if(LV_GC_ROOT(_lv_mem_buf[i]).used == 0) { 10f5a: 4b12 ldr r3, [pc, #72] ; (10fa4 <_lv_mem_buf_get+0xe4>) 10f5c: 799a ldrb r2, [r3, #6] 10f5e: 2301 movs r3, #1 10f60: 2400 movs r4, #0 10f62: 07d2 lsls r2, r2, #31 10f64: d50b bpl.n 10f7e <_lv_mem_buf_get+0xbe> 10f66: 490f ldr r1, [pc, #60] ; (10fa4 <_lv_mem_buf_get+0xe4>) 10f68: 001c movs r4, r3 10f6a: 00da lsls r2, r3, #3 10f6c: 188a adds r2, r1, r2 10f6e: 7992 ldrb r2, [r2, #6] 10f70: 07d2 lsls r2, r2, #31 10f72: d504 bpl.n 10f7e <_lv_mem_buf_get+0xbe> 10f74: 3301 adds r3, #1 for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { 10f76: 2b10 cmp r3, #16 10f78: d1f6 bne.n 10f68 <_lv_mem_buf_get+0xa8> return NULL; 10f7a: 2000 movs r0, #0 10f7c: e7ec b.n 10f58 <_lv_mem_buf_get+0x98> LV_GC_ROOT(_lv_mem_buf[i]).used = 1; 10f7e: 4d09 ldr r5, [pc, #36] ; (10fa4 <_lv_mem_buf_get+0xe4>) 10f80: 00e4 lsls r4, r4, #3 10f82: 192b adds r3, r5, r4 10f84: 799a ldrb r2, [r3, #6] 10f86: 2101 movs r1, #1 10f88: 430a orrs r2, r1 10f8a: 719a strb r2, [r3, #6] LV_GC_ROOT(_lv_mem_buf[i]).size = size; 10f8c: 8098 strh r0, [r3, #4] LV_GC_ROOT(_lv_mem_buf[i]).p = lv_mem_realloc(LV_GC_ROOT(_lv_mem_buf[i]).p, size); 10f8e: 0001 movs r1, r0 10f90: 5960 ldr r0, [r4, r5] 10f92: 4b05 ldr r3, [pc, #20] ; (10fa8 <_lv_mem_buf_get+0xe8>) 10f94: 4798 blx r3 10f96: 5160 str r0, [r4, r5] return LV_GC_ROOT(_lv_mem_buf[i]).p; 10f98: e7de b.n 10f58 <_lv_mem_buf_get+0x98> if(size == 0) return NULL; 10f9a: 2000 movs r0, #0 10f9c: e7dc b.n 10f58 <_lv_mem_buf_get+0x98> 10f9e: 46c0 nop ; (mov r8, r8) 10fa0: 20000044 .word 0x20000044 10fa4: 20004cdc .word 0x20004cdc 10fa8: 00010e45 .word 0x00010e45 00010fac <_lv_memset>: { 10fac: b5f0 push {r4, r5, r6, r7, lr} uintptr_t d_align = (lv_uintptr_t) d8 & ALIGN_MASK; 10fae: 2403 movs r4, #3 10fb0: 4004 ands r4, r0 if(d_align) { 10fb2: d00e beq.n 10fd2 <_lv_memset+0x26> d_align = ALIGN_MASK + 1 - d_align; 10fb4: 2304 movs r3, #4 10fb6: 1b1b subs r3, r3, r4 while(d_align && len) { 10fb8: d00b beq.n 10fd2 <_lv_memset+0x26> 10fba: 2a00 cmp r2, #0 10fbc: d007 beq.n 10fce <_lv_memset+0x22> 10fbe: 18c3 adds r3, r0, r3 *d8 = v; 10fc0: 7001 strb r1, [r0, #0] d8++; 10fc2: 3001 adds r0, #1 len--; 10fc4: 3a01 subs r2, #1 while(d_align && len) { 10fc6: 4298 cmp r0, r3 10fc8: d003 beq.n 10fd2 <_lv_memset+0x26> 10fca: 2a00 cmp r2, #0 10fcc: d1f8 bne.n 10fc0 <_lv_memset+0x14> while(len > 4) { 10fce: 2200 movs r2, #0 10fd0: e034 b.n 1103c <_lv_memset+0x90> uint32_t v32 = v + (v << 8) + (v << 16) + (v << 24); 10fd2: 020c lsls r4, r1, #8 10fd4: 1864 adds r4, r4, r1 10fd6: 040b lsls r3, r1, #16 10fd8: 18e4 adds r4, r4, r3 10fda: 060b lsls r3, r1, #24 10fdc: 18e4 adds r4, r4, r3 while(len > 32) { 10fde: 0006 movs r6, r0 10fe0: 2a20 cmp r2, #32 10fe2: d918 bls.n 11016 <_lv_memset+0x6a> 10fe4: 0016 movs r6, r2 10fe6: 3e21 subs r6, #33 ; 0x21 10fe8: 0977 lsrs r7, r6, #5 10fea: 1c7d adds r5, r7, #1 10fec: 016d lsls r5, r5, #5 10fee: 1945 adds r5, r0, r5 10ff0: 0003 movs r3, r0 SET32(v32); 10ff2: 601c str r4, [r3, #0] SET32(v32); 10ff4: 605c str r4, [r3, #4] SET32(v32); 10ff6: 609c str r4, [r3, #8] SET32(v32); 10ff8: 60dc str r4, [r3, #12] SET32(v32); 10ffa: 611c str r4, [r3, #16] SET32(v32); 10ffc: 615c str r4, [r3, #20] SET32(v32); 10ffe: 619c str r4, [r3, #24] SET32(v32); 11000: 61dc str r4, [r3, #28] 11002: 3320 adds r3, #32 while(len > 32) { 11004: 429d cmp r5, r3 11006: d1f4 bne.n 10ff2 <_lv_memset+0x46> 11008: 231f movs r3, #31 1100a: 439e bics r6, r3 1100c: 3620 adds r6, #32 1100e: 1986 adds r6, r0, r6 11010: 3a20 subs r2, #32 11012: 017f lsls r7, r7, #5 11014: 1bd2 subs r2, r2, r7 while(len > 4) { 11016: 0030 movs r0, r6 11018: 2a04 cmp r2, #4 1101a: d90f bls.n 1103c <_lv_memset+0x90> 1101c: 1f50 subs r0, r2, #5 1101e: 0887 lsrs r7, r0, #2 11020: 1c7d adds r5, r7, #1 11022: 00ad lsls r5, r5, #2 11024: 1975 adds r5, r6, r5 11026: 0033 movs r3, r6 SET32(v32); 11028: c310 stmia r3!, {r4} while(len > 4) { 1102a: 42ab cmp r3, r5 1102c: d1fc bne.n 11028 <_lv_memset+0x7c> 1102e: 2303 movs r3, #3 11030: 4398 bics r0, r3 11032: 3004 adds r0, #4 11034: 3a04 subs r2, #4 11036: 00bf lsls r7, r7, #2 11038: 1bd2 subs r2, r2, r7 SET32(v32); 1103a: 1830 adds r0, r6, r0 while(len) { 1103c: 2a00 cmp r2, #0 1103e: d004 beq.n 1104a <_lv_memset+0x9e> 11040: 1882 adds r2, r0, r2 *d8 = v; 11042: 7001 strb r1, [r0, #0] d8++; 11044: 3001 adds r0, #1 while(len) { 11046: 4290 cmp r0, r2 11048: d1fb bne.n 11042 <_lv_memset+0x96> } 1104a: bdf0 pop {r4, r5, r6, r7, pc} 0001104c <_lv_memset_00>: { 1104c: b570 push {r4, r5, r6, lr} uintptr_t d_align = (lv_uintptr_t) d8 & ALIGN_MASK; 1104e: 2303 movs r3, #3 11050: 4003 ands r3, r0 if(d_align) { 11052: d13a bne.n 110ca <_lv_memset_00+0x7e> while(len > 32) { 11054: 2920 cmp r1, #32 11056: d919 bls.n 1108c <_lv_memset_00+0x40> 11058: 000d movs r5, r1 1105a: 3d21 subs r5, #33 ; 0x21 1105c: 096e lsrs r6, r5, #5 1105e: 1c74 adds r4, r6, #1 11060: 0164 lsls r4, r4, #5 11062: 1904 adds r4, r0, r4 11064: 0003 movs r3, r0 SET32(0); 11066: 2200 movs r2, #0 11068: 601a str r2, [r3, #0] SET32(0); 1106a: 605a str r2, [r3, #4] SET32(0); 1106c: 609a str r2, [r3, #8] SET32(0); 1106e: 60da str r2, [r3, #12] SET32(0); 11070: 611a str r2, [r3, #16] SET32(0); 11072: 615a str r2, [r3, #20] SET32(0); 11074: 619a str r2, [r3, #24] SET32(0); 11076: 61da str r2, [r3, #28] 11078: 3320 adds r3, #32 while(len > 32) { 1107a: 429c cmp r4, r3 1107c: d1f4 bne.n 11068 <_lv_memset_00+0x1c> 1107e: 231f movs r3, #31 11080: 439d bics r5, r3 11082: 3520 adds r5, #32 11084: 1940 adds r0, r0, r5 11086: 3920 subs r1, #32 11088: 0176 lsls r6, r6, #5 1108a: 1b89 subs r1, r1, r6 while(len > 4) { 1108c: 0003 movs r3, r0 1108e: 2904 cmp r1, #4 11090: d910 bls.n 110b4 <_lv_memset_00+0x68> 11092: 1f4b subs r3, r1, #5 11094: 089e lsrs r6, r3, #2 11096: 1c74 adds r4, r6, #1 11098: 00a4 lsls r4, r4, #2 1109a: 1904 adds r4, r0, r4 1109c: 0002 movs r2, r0 SET32(0); 1109e: 2500 movs r5, #0 110a0: c220 stmia r2!, {r5} while(len > 4) { 110a2: 42a2 cmp r2, r4 110a4: d1fc bne.n 110a0 <_lv_memset_00+0x54> 110a6: 2203 movs r2, #3 110a8: 4393 bics r3, r2 110aa: 3304 adds r3, #4 110ac: 3904 subs r1, #4 110ae: 00b6 lsls r6, r6, #2 110b0: 1b89 subs r1, r1, r6 SET32(0); 110b2: 18c3 adds r3, r0, r3 while(len) { 110b4: 2900 cmp r1, #0 110b6: d005 beq.n 110c4 <_lv_memset_00+0x78> 110b8: 1859 adds r1, r3, r1 *d8 = 0; 110ba: 2200 movs r2, #0 110bc: 701a strb r2, [r3, #0] d8++; 110be: 3301 adds r3, #1 while(len) { 110c0: 428b cmp r3, r1 110c2: d1fb bne.n 110bc <_lv_memset_00+0x70> } 110c4: bd70 pop {r4, r5, r6, pc} d8++; 110c6: 0018 movs r0, r3 110c8: e7c4 b.n 11054 <_lv_memset_00+0x8> d_align = ALIGN_MASK + 1 - d_align; 110ca: 2204 movs r2, #4 110cc: 1ad2 subs r2, r2, r3 while(d_align && len) { 110ce: d0c1 beq.n 11054 <_lv_memset_00+0x8> 110d0: 2900 cmp r1, #0 110d2: d00b beq.n 110ec <_lv_memset_00+0xa0> 110d4: 1882 adds r2, r0, r2 110d6: 0003 movs r3, r0 *d8 = 0x00; 110d8: 2000 movs r0, #0 110da: 7018 strb r0, [r3, #0] d8++; 110dc: 3301 adds r3, #1 len--; 110de: 3901 subs r1, #1 while(d_align && len) { 110e0: 4293 cmp r3, r2 110e2: d0f0 beq.n 110c6 <_lv_memset_00+0x7a> 110e4: 2900 cmp r1, #0 110e6: d1f8 bne.n 110da <_lv_memset_00+0x8e> while(len > 4) { 110e8: 2100 movs r1, #0 110ea: e7e3 b.n 110b4 <_lv_memset_00+0x68> uint8_t * d8 = (uint8_t *) dst; 110ec: 0003 movs r3, r0 110ee: e7fb b.n 110e8 <_lv_memset_00+0x9c> 000110f0 <_lv_memset_ff>: { 110f0: b570 push {r4, r5, r6, lr} uintptr_t d_align = (lv_uintptr_t) d8 & ALIGN_MASK; 110f2: 2303 movs r3, #3 110f4: 4003 ands r3, r0 if(d_align) { 110f6: d13c bne.n 11172 <_lv_memset_ff+0x82> while(len > 32) { 110f8: 2920 cmp r1, #32 110fa: d91a bls.n 11132 <_lv_memset_ff+0x42> 110fc: 000d movs r5, r1 110fe: 3d21 subs r5, #33 ; 0x21 11100: 096e lsrs r6, r5, #5 11102: 1c74 adds r4, r6, #1 11104: 0164 lsls r4, r4, #5 11106: 1904 adds r4, r0, r4 11108: 0003 movs r3, r0 SET32(0xFFFFFFFF); 1110a: 2201 movs r2, #1 1110c: 4252 negs r2, r2 1110e: 601a str r2, [r3, #0] SET32(0xFFFFFFFF); 11110: 605a str r2, [r3, #4] SET32(0xFFFFFFFF); 11112: 609a str r2, [r3, #8] SET32(0xFFFFFFFF); 11114: 60da str r2, [r3, #12] SET32(0xFFFFFFFF); 11116: 611a str r2, [r3, #16] SET32(0xFFFFFFFF); 11118: 615a str r2, [r3, #20] SET32(0xFFFFFFFF); 1111a: 619a str r2, [r3, #24] SET32(0xFFFFFFFF); 1111c: 61da str r2, [r3, #28] 1111e: 3320 adds r3, #32 while(len > 32) { 11120: 429c cmp r4, r3 11122: d1f4 bne.n 1110e <_lv_memset_ff+0x1e> 11124: 231f movs r3, #31 11126: 439d bics r5, r3 11128: 3520 adds r5, #32 1112a: 1940 adds r0, r0, r5 1112c: 3920 subs r1, #32 1112e: 0176 lsls r6, r6, #5 11130: 1b89 subs r1, r1, r6 while(len > 4) { 11132: 0003 movs r3, r0 11134: 2904 cmp r1, #4 11136: d911 bls.n 1115c <_lv_memset_ff+0x6c> 11138: 1f4b subs r3, r1, #5 1113a: 089e lsrs r6, r3, #2 1113c: 1c74 adds r4, r6, #1 1113e: 00a4 lsls r4, r4, #2 11140: 1904 adds r4, r0, r4 11142: 0002 movs r2, r0 SET32(0xFFFFFFFF); 11144: 2501 movs r5, #1 11146: 426d negs r5, r5 11148: c220 stmia r2!, {r5} while(len > 4) { 1114a: 42a2 cmp r2, r4 1114c: d1fc bne.n 11148 <_lv_memset_ff+0x58> 1114e: 2203 movs r2, #3 11150: 4393 bics r3, r2 11152: 3304 adds r3, #4 11154: 3904 subs r1, #4 11156: 00b6 lsls r6, r6, #2 11158: 1b89 subs r1, r1, r6 SET32(0xFFFFFFFF); 1115a: 18c3 adds r3, r0, r3 while(len) { 1115c: 2900 cmp r1, #0 1115e: d005 beq.n 1116c <_lv_memset_ff+0x7c> 11160: 1859 adds r1, r3, r1 *d8 = 0xFF; 11162: 22ff movs r2, #255 ; 0xff 11164: 701a strb r2, [r3, #0] d8++; 11166: 3301 adds r3, #1 while(len) { 11168: 428b cmp r3, r1 1116a: d1fb bne.n 11164 <_lv_memset_ff+0x74> } 1116c: bd70 pop {r4, r5, r6, pc} d8++; 1116e: 0018 movs r0, r3 11170: e7c2 b.n 110f8 <_lv_memset_ff+0x8> d_align = ALIGN_MASK + 1 - d_align; 11172: 2204 movs r2, #4 11174: 1ad2 subs r2, r2, r3 while(d_align && len) { 11176: d0bf beq.n 110f8 <_lv_memset_ff+0x8> 11178: 2900 cmp r1, #0 1117a: d00b beq.n 11194 <_lv_memset_ff+0xa4> 1117c: 1882 adds r2, r0, r2 1117e: 0003 movs r3, r0 *d8 = 0xFF; 11180: 20ff movs r0, #255 ; 0xff 11182: 7018 strb r0, [r3, #0] d8++; 11184: 3301 adds r3, #1 len--; 11186: 3901 subs r1, #1 while(d_align && len) { 11188: 4293 cmp r3, r2 1118a: d0f0 beq.n 1116e <_lv_memset_ff+0x7e> 1118c: 2900 cmp r1, #0 1118e: d1f8 bne.n 11182 <_lv_memset_ff+0x92> while(len > 4) { 11190: 2100 movs r1, #0 11192: e7e3 b.n 1115c <_lv_memset_ff+0x6c> uint8_t * d8 = (uint8_t *) dst; 11194: 0003 movs r3, r0 11196: e7fb b.n 11190 <_lv_memset_ff+0xa0> 00011198 <_lv_task_core_init>: /** * Init the lv_task module */ void _lv_task_core_init(void) { 11198: b510 push {r4, lr} _lv_ll_init(&LV_GC_ROOT(_lv_task_ll), sizeof(lv_task_t)); 1119a: 2118 movs r1, #24 1119c: 4804 ldr r0, [pc, #16] ; (111b0 <_lv_task_core_init+0x18>) 1119e: 4b05 ldr r3, [pc, #20] ; (111b4 <_lv_task_core_init+0x1c>) 111a0: 4798 blx r3 task_list_changed = false; 111a2: 2200 movs r2, #0 111a4: 4b04 ldr r3, [pc, #16] ; (111b8 <_lv_task_core_init+0x20>) 111a6: 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; 111a8: 3201 adds r2, #1 111aa: 4b04 ldr r3, [pc, #16] ; (111bc <_lv_task_core_init+0x24>) 111ac: 701a strb r2, [r3, #0] } 111ae: bd10 pop {r4, pc} 111b0: 20004cac .word 0x20004cac 111b4: 000105b9 .word 0x000105b9 111b8: 20004c2b .word 0x20004c2b 111bc: 20004c28 .word 0x20004c28 000111c0 : { 111c0: b570 push {r4, r5, r6, lr} tmp = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); 111c2: 482f ldr r0, [pc, #188] ; (11280 ) 111c4: 4b2f ldr r3, [pc, #188] ; (11284 ) 111c6: 4798 blx r3 111c8: 1e04 subs r4, r0, #0 if(NULL == tmp) { 111ca: d018 beq.n 111fe tmp = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), tmp); 111cc: 4d2e ldr r5, [pc, #184] ; (11288 ) if(tmp->prio <= DEF_PRIO) { 111ce: 7d23 ldrb r3, [r4, #20] 111d0: 075b lsls r3, r3, #29 111d2: 0f5b lsrs r3, r3, #29 111d4: 2b03 cmp r3, #3 111d6: dd23 ble.n 11220 tmp = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), tmp); 111d8: 0021 movs r1, r4 111da: 4829 ldr r0, [pc, #164] ; (11280 ) 111dc: 47a8 blx r5 111de: 1e04 subs r4, r0, #0 } while(tmp != NULL); 111e0: d1f5 bne.n 111ce new_task = _lv_ll_ins_tail(&LV_GC_ROOT(_lv_task_ll)); 111e2: 4827 ldr r0, [pc, #156] ; (11280 ) 111e4: 4b29 ldr r3, [pc, #164] ; (1128c ) 111e6: 4798 blx r3 111e8: 0005 movs r5, r0 LV_ASSERT_MEM(new_task); 111ea: 4b29 ldr r3, [pc, #164] ; (11290 ) 111ec: 4798 blx r3 111ee: 2800 cmp r0, #0 111f0: d142 bne.n 11278 111f2: 002a movs r2, r5 111f4: 2300 movs r3, #0 111f6: 4827 ldr r0, [pc, #156] ; (11294 ) 111f8: 4927 ldr r1, [pc, #156] ; (11298 ) 111fa: 4788 blx r1 111fc: e7fe b.n 111fc new_task = _lv_ll_ins_head(&LV_GC_ROOT(_lv_task_ll)); 111fe: 4820 ldr r0, [pc, #128] ; (11280 ) 11200: 4b26 ldr r3, [pc, #152] ; (1129c ) 11202: 4798 blx r3 11204: 0005 movs r5, r0 LV_ASSERT_MEM(new_task); 11206: 4b22 ldr r3, [pc, #136] ; (11290 ) 11208: 4798 blx r3 1120a: 2800 cmp r0, #0 1120c: d105 bne.n 1121a 1120e: 002a movs r2, r5 11210: 2300 movs r3, #0 11212: 4820 ldr r0, [pc, #128] ; (11294 ) 11214: 4920 ldr r1, [pc, #128] ; (11298 ) 11216: 4788 blx r1 11218: e7fe b.n 11218 if(new_task == NULL) return NULL; 1121a: 2d00 cmp r5, #0 1121c: d10d bne.n 1123a 1121e: e023 b.n 11268 new_task = _lv_ll_ins_prev(&LV_GC_ROOT(_lv_task_ll), tmp); 11220: 0021 movs r1, r4 11222: 4817 ldr r0, [pc, #92] ; (11280 ) 11224: 4b1e ldr r3, [pc, #120] ; (112a0 ) 11226: 4798 blx r3 11228: 0005 movs r5, r0 LV_ASSERT_MEM(new_task); 1122a: 4b19 ldr r3, [pc, #100] ; (11290 ) 1122c: 4798 blx r3 1122e: 2800 cmp r0, #0 11230: d01c beq.n 1126c if(new_task == NULL) return NULL; 11232: 2d00 cmp r5, #0 11234: d018 beq.n 11268 if(tmp == NULL) { 11236: 2c00 cmp r4, #0 11238: d0d3 beq.n 111e2 task_list_changed = true; 1123a: 2401 movs r4, #1 1123c: 4b19 ldr r3, [pc, #100] ; (112a4 ) 1123e: 701c strb r4, [r3, #0] new_task->period = DEF_PERIOD; 11240: 23fa movs r3, #250 ; 0xfa 11242: 005b lsls r3, r3, #1 11244: 602b str r3, [r5, #0] new_task->task_cb = NULL; 11246: 2600 movs r6, #0 11248: 60ae str r6, [r5, #8] new_task->prio = DEF_PRIO; 1124a: 7d2b ldrb r3, [r5, #20] 1124c: 2207 movs r2, #7 1124e: 4393 bics r3, r2 11250: 2203 movs r2, #3 11252: 4313 orrs r3, r2 11254: 752b strb r3, [r5, #20] new_task->repeat_count = -1; 11256: 2301 movs r3, #1 11258: 425b negs r3, r3 1125a: 612b str r3, [r5, #16] new_task->last_run = lv_tick_get(); 1125c: 4b12 ldr r3, [pc, #72] ; (112a8 ) 1125e: 4798 blx r3 11260: 6068 str r0, [r5, #4] new_task->user_data = NULL; 11262: 60ee str r6, [r5, #12] task_created = true; 11264: 4b11 ldr r3, [pc, #68] ; (112ac ) 11266: 701c strb r4, [r3, #0] } 11268: 0028 movs r0, r5 1126a: bd70 pop {r4, r5, r6, pc} LV_ASSERT_MEM(new_task); 1126c: 002a movs r2, r5 1126e: 2300 movs r3, #0 11270: 4808 ldr r0, [pc, #32] ; (11294 ) 11272: 4909 ldr r1, [pc, #36] ; (11298 ) 11274: 4788 blx r1 11276: e7fe b.n 11276 if(new_task == NULL) return NULL; 11278: 2d00 cmp r5, #0 1127a: d1de bne.n 1123a 1127c: e7f4 b.n 11268 1127e: 46c0 nop ; (mov r8, r8) 11280: 20004cac .word 0x20004cac 11284: 0001066d .word 0x0001066d 11288: 00010685 .word 0x00010685 1128c: 0001061d .word 0x0001061d 11290: 0000147d .word 0x0000147d 11294: 00018724 .word 0x00018724 11298: 00001485 .word 0x00001485 1129c: 000105cd .word 0x000105cd 112a0: 000106d5 .word 0x000106d5 112a4: 20004c2b .word 0x20004c2b 112a8: 0000f78d .word 0x0000f78d 112ac: 20004c29 .word 0x20004c29 000112b0 : { 112b0: b510 push {r4, lr} 112b2: 0004 movs r4, r0 _lv_ll_remove(&LV_GC_ROOT(_lv_task_ll), task); 112b4: 0001 movs r1, r0 112b6: 4809 ldr r0, [pc, #36] ; (112dc ) 112b8: 4b09 ldr r3, [pc, #36] ; (112e0 ) 112ba: 4798 blx r3 task_list_changed = true; 112bc: 2201 movs r2, #1 112be: 4b09 ldr r3, [pc, #36] ; (112e4 ) 112c0: 701a strb r2, [r3, #0] lv_mem_free(task); 112c2: 0020 movs r0, r4 112c4: 4b08 ldr r3, [pc, #32] ; (112e8 ) 112c6: 4798 blx r3 if(LV_GC_ROOT(_lv_task_act) == task) task_deleted = true; /*The active task was deleted*/ 112c8: 4b08 ldr r3, [pc, #32] ; (112ec ) 112ca: 681b ldr r3, [r3, #0] 112cc: 429c cmp r4, r3 112ce: d000 beq.n 112d2 } 112d0: bd10 pop {r4, pc} if(LV_GC_ROOT(_lv_task_act) == task) task_deleted = true; /*The active task was deleted*/ 112d2: 2201 movs r2, #1 112d4: 4b06 ldr r3, [pc, #24] ; (112f0 ) 112d6: 701a strb r2, [r3, #0] } 112d8: e7fa b.n 112d0 112da: 46c0 nop ; (mov r8, r8) 112dc: 20004cac .word 0x20004cac 112e0: 00010755 .word 0x00010755 112e4: 20004c2b .word 0x20004c2b 112e8: 00010b39 .word 0x00010b39 112ec: 20004d78 .word 0x20004d78 112f0: 20004c2a .word 0x20004c2a 000112f4 : * 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) { 112f4: b510 push {r4, lr} 112f6: 0004 movs 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); 112f8: 6840 ldr r0, [r0, #4] 112fa: 4b13 ldr r3, [pc, #76] ; (11348 ) 112fc: 4798 blx r3 bool exec = false; 112fe: 2300 movs r3, #0 if(elp >= task->period) 11300: 6822 ldr r2, [r4, #0] 11302: 4290 cmp r0, r2 11304: d201 bcs.n 1130a } 11306: 0018 movs r0, r3 11308: bd10 pop {r4, pc} task->last_run = lv_tick_get(); 1130a: 4b10 ldr r3, [pc, #64] ; (1134c ) 1130c: 4798 blx r3 1130e: 6060 str r0, [r4, #4] task_deleted = false; 11310: 2300 movs r3, #0 11312: 4a0f ldr r2, [pc, #60] ; (11350 ) 11314: 7013 strb r3, [r2, #0] task_created = false; 11316: 4a0f ldr r2, [pc, #60] ; (11354 ) 11318: 7013 strb r3, [r2, #0] if(task->task_cb) task->task_cb(task); 1131a: 68a3 ldr r3, [r4, #8] 1131c: 2b00 cmp r3, #0 1131e: d005 beq.n 1132c 11320: 0020 movs r0, r4 11322: 4798 blx r3 if(task_deleted == false) { /*The task might be deleted by itself as well*/ 11324: 4b0a ldr r3, [pc, #40] ; (11350 ) 11326: 781b ldrb r3, [r3, #0] 11328: 2b00 cmp r3, #0 1132a: d1ec bne.n 11306 if(task->repeat_count > 0) { 1132c: 6923 ldr r3, [r4, #16] 1132e: 2b00 cmp r3, #0 11330: dd01 ble.n 11336 task->repeat_count--; 11332: 3b01 subs r3, #1 11334: 6123 str r3, [r4, #16] exec = true; 11336: 2301 movs r3, #1 if(task->repeat_count == 0) { 11338: 6922 ldr r2, [r4, #16] 1133a: 2a00 cmp r2, #0 1133c: d1e3 bne.n 11306 lv_task_del(task); 1133e: 0020 movs r0, r4 11340: 4b05 ldr r3, [pc, #20] ; (11358 ) 11342: 4798 blx r3 exec = true; 11344: 2301 movs r3, #1 11346: e7de b.n 11306 11348: 0000f7a9 .word 0x0000f7a9 1134c: 0000f78d .word 0x0000f78d 11350: 20004c2a .word 0x20004c2a 11354: 20004c29 .word 0x20004c29 11358: 000112b1 .word 0x000112b1 0001135c : { 1135c: b5f0 push {r4, r5, r6, r7, lr} 1135e: 46de mov lr, fp 11360: 4657 mov r7, sl 11362: 464e mov r6, r9 11364: b5c0 push {r6, r7, lr} if(already_running) return 1; 11366: 4b66 ldr r3, [pc, #408] ; (11500 ) 11368: 781b ldrb r3, [r3, #0] 1136a: 2001 movs r0, #1 1136c: 2b00 cmp r3, #0 1136e: d109 bne.n 11384 already_running = true; 11370: 2201 movs r2, #1 11372: 4b63 ldr r3, [pc, #396] ; (11500 ) 11374: 701a strb r2, [r3, #0] if(lv_task_run == false) { 11376: 4b63 ldr r3, [pc, #396] ; (11504 ) 11378: 781b ldrb r3, [r3, #0] 1137a: 2b00 cmp r3, #0 1137c: d107 bne.n 1138e already_running = false; /*Release mutex*/ 1137e: 2200 movs r2, #0 11380: 4b5f ldr r3, [pc, #380] ; (11500 ) 11382: 701a strb r2, [r3, #0] } 11384: bc1c pop {r2, r3, r4} 11386: 4691 mov r9, r2 11388: 469a mov sl, r3 1138a: 46a3 mov fp, r4 1138c: bdf0 pop {r4, r5, r6, r7, pc} handler_start = lv_tick_get(); 1138e: 4b5e ldr r3, [pc, #376] ; (11508 ) 11390: 4798 blx r3 11392: 4b5e ldr r3, [pc, #376] ; (1150c ) 11394: 6018 str r0, [r3, #0] lv_task_t * task_interrupter = NULL; 11396: 2400 movs r4, #0 task_deleted = false; 11398: 4b5d ldr r3, [pc, #372] ; (11510 ) 1139a: 469b mov fp, r3 1139c: 2300 movs r3, #0 1139e: 4699 mov r9, r3 task_created = false; 113a0: 4b5c ldr r3, [pc, #368] ; (11514 ) 113a2: 469a mov sl, r3 113a4: e084 b.n 114b0 LV_GC_ROOT(_lv_task_act) = next; 113a6: 4b5c ldr r3, [pc, #368] ; (11518 ) 113a8: 601d str r5, [r3, #0] task_interrupter = NULL; /*From this point only task after the interrupter comes, so 113aa: 2400 movs r4, #0 continue; /*Load the next task*/ 113ac: e00f b.n 113ce lv_task_exec(LV_GC_ROOT(_lv_task_act)); 113ae: 4b5b ldr r3, [pc, #364] ; (1151c ) 113b0: 4798 blx r3 if(task_created || task_deleted) { 113b2: 4b58 ldr r3, [pc, #352] ; (11514 ) 113b4: 781b ldrb r3, [r3, #0] 113b6: 2b00 cmp r3, #0 113b8: d12f bne.n 1141a 113ba: 4b55 ldr r3, [pc, #340] ; (11510 ) 113bc: 781b ldrb r3, [r3, #0] 113be: 2b00 cmp r3, #0 113c0: d12b bne.n 1141a if(task_list_changed) { 113c2: 4b57 ldr r3, [pc, #348] ; (11520 ) 113c4: 781b ldrb r3, [r3, #0] 113c6: 2b00 cmp r3, #0 113c8: d16e bne.n 114a8 LV_GC_ROOT(_lv_task_act) = next; /*Load the next task*/ 113ca: 4b53 ldr r3, [pc, #332] ; (11518 ) 113cc: 601d str r5, [r3, #0] while(LV_GC_ROOT(_lv_task_act)) { 113ce: 6831 ldr r1, [r6, #0] 113d0: 2900 cmp r1, #0 113d2: d022 beq.n 1141a next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), LV_GC_ROOT(_lv_task_act)); 113d4: 4853 ldr r0, [pc, #332] ; (11524 ) 113d6: 47b8 blx r7 113d8: 0005 movs r5, r0 if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio == LV_TASK_PRIO_OFF) { 113da: 4b4f ldr r3, [pc, #316] ; (11518 ) 113dc: 6818 ldr r0, [r3, #0] 113de: 7d02 ldrb r2, [r0, #20] 113e0: 2307 movs r3, #7 113e2: 4013 ands r3, r2 113e4: d019 beq.n 1141a if(LV_GC_ROOT(_lv_task_act) == task_interrupter) { 113e6: 4284 cmp r4, r0 113e8: d0dd beq.n 113a6 if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio == LV_TASK_PRIO_HIGHEST) { 113ea: 2b05 cmp r3, #5 113ec: d0df beq.n 113ae else if(task_interrupter) { 113ee: 2c00 cmp r4, #0 113f0: d04b beq.n 1148a if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio > task_interrupter->prio) { 113f2: 7d02 ldrb r2, [r0, #20] 113f4: 0752 lsls r2, r2, #29 113f6: 0f52 lsrs r2, r2, #29 113f8: 7d23 ldrb r3, [r4, #20] 113fa: 075b lsls r3, r3, #29 113fc: 0f5b lsrs r3, r3, #29 113fe: 429a cmp r2, r3 11400: ddd7 ble.n 113b2 if(lv_task_exec(LV_GC_ROOT(_lv_task_act))) { 11402: 4b46 ldr r3, [pc, #280] ; (1151c ) 11404: 4798 blx r3 11406: 2800 cmp r0, #0 11408: d0d3 beq.n 113b2 if(!task_created && !task_deleted) { 1140a: 4b42 ldr r3, [pc, #264] ; (11514 ) 1140c: 781b ldrb r3, [r3, #0] 1140e: 2b00 cmp r3, #0 11410: d103 bne.n 1141a 11412: 4b3f ldr r3, [pc, #252] ; (11510 ) 11414: 781b ldrb r3, [r3, #0] 11416: 2b00 cmp r3, #0 11418: d034 beq.n 11484 busy_time += lv_tick_elaps(handler_start); 1141a: 4b3c ldr r3, [pc, #240] ; (1150c ) 1141c: 6818 ldr r0, [r3, #0] 1141e: 4c42 ldr r4, [pc, #264] ; (11528 ) 11420: 47a0 blx r4 11422: 4b42 ldr r3, [pc, #264] ; (1152c ) 11424: 681a ldr r2, [r3, #0] 11426: 4694 mov ip, r2 11428: 4460 add r0, ip 1142a: 6018 str r0, [r3, #0] uint32_t idle_period_time = lv_tick_elaps(idle_period_start); 1142c: 4b40 ldr r3, [pc, #256] ; (11530 ) 1142e: 6818 ldr r0, [r3, #0] 11430: 47a0 blx r4 if(idle_period_time >= IDLE_MEAS_PERIOD) { 11432: 23f4 movs r3, #244 ; 0xf4 11434: 33ff adds r3, #255 ; 0xff 11436: 4298 cmp r0, r3 11438: d917 bls.n 1146a idle_last = (uint32_t)((uint32_t)busy_time * 100) / IDLE_MEAS_PERIOD; /*Calculate the busy percentage*/ 1143a: 4b3c ldr r3, [pc, #240] ; (1152c ) 1143c: 6818 ldr r0, [r3, #0] 1143e: 2364 movs r3, #100 ; 0x64 11440: 4358 muls r0, r3 11442: 21fa movs r1, #250 ; 0xfa 11444: 0049 lsls r1, r1, #1 11446: 4b3b ldr r3, [pc, #236] ; (11534 ) 11448: 4798 blx r3 1144a: b2c0 uxtb r0, r0 idle_last = idle_last > 100 ? 0 : 100 - idle_last; /*But we need idle time*/ 1144c: 2300 movs r3, #0 1144e: 2864 cmp r0, #100 ; 0x64 11450: d802 bhi.n 11458 11452: 2364 movs r3, #100 ; 0x64 11454: 1a1b subs r3, r3, r0 11456: b2db uxtb r3, r3 11458: 4a37 ldr r2, [pc, #220] ; (11538 ) 1145a: 7013 strb r3, [r2, #0] busy_time = 0; 1145c: 2200 movs r2, #0 1145e: 4b33 ldr r3, [pc, #204] ; (1152c ) 11460: 601a str r2, [r3, #0] idle_period_start = lv_tick_get(); 11462: 4b29 ldr r3, [pc, #164] ; (11508 ) 11464: 4798 blx r3 11466: 4b32 ldr r3, [pc, #200] ; (11530 ) 11468: 6018 str r0, [r3, #0] time_till_next = LV_NO_TASK_READY; 1146a: 2201 movs r2, #1 1146c: 4252 negs r2, r2 1146e: 4b33 ldr r3, [pc, #204] ; (1153c ) 11470: 601a str r2, [r3, #0] next = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); 11472: 482c ldr r0, [pc, #176] ; (11524 ) 11474: 4b32 ldr r3, [pc, #200] ; (11540 ) 11476: 4798 blx r3 11478: 1e04 subs r4, r0, #0 while(next) { 1147a: d03b beq.n 114f4 uint32_t elp = lv_tick_elaps(task->last_run); 1147c: 4d2a ldr r5, [pc, #168] ; (11528 ) if(delay < time_till_next) 1147e: 4f2f ldr r7, [pc, #188] ; (1153c ) time_till_next = delay; 11480: 003e movs r6, r7 11482: e028 b.n 114d6 task_interrupter = LV_GC_ROOT(_lv_task_act); 11484: 4b24 ldr r3, [pc, #144] ; (11518 ) 11486: 681c ldr r4, [r3, #0] break; 11488: e012 b.n 114b0 if(lv_task_exec(LV_GC_ROOT(_lv_task_act))) { 1148a: 4b24 ldr r3, [pc, #144] ; (1151c ) 1148c: 4798 blx r3 1148e: 2800 cmp r0, #0 11490: d08f beq.n 113b2 if(!task_created && !task_deleted) { 11492: 4b20 ldr r3, [pc, #128] ; (11514 ) 11494: 781b ldrb r3, [r3, #0] 11496: 2b00 cmp r3, #0 11498: d1bf bne.n 1141a 1149a: 4b1d ldr r3, [pc, #116] ; (11510 ) 1149c: 781b ldrb r3, [r3, #0] 1149e: 2b00 cmp r3, #0 114a0: d1bb bne.n 1141a task_interrupter = LV_GC_ROOT(_lv_task_act); /*Check all tasks again from the highest priority */ 114a2: 4b1d ldr r3, [pc, #116] ; (11518 ) 114a4: 681c ldr r4, [r3, #0] break; 114a6: e003 b.n 114b0 task_list_changed = false; 114a8: 4b1d ldr r3, [pc, #116] ; (11520 ) 114aa: 2200 movs r2, #0 114ac: 701a strb r2, [r3, #0] task_interrupter = NULL; 114ae: 2400 movs r4, #0 task_deleted = false; 114b0: 465b mov r3, fp 114b2: 464a mov r2, r9 114b4: 701a strb r2, [r3, #0] task_created = false; 114b6: 4653 mov r3, sl 114b8: 701a strb r2, [r3, #0] LV_GC_ROOT(_lv_task_act) = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); 114ba: 481a ldr r0, [pc, #104] ; (11524 ) 114bc: 4b20 ldr r3, [pc, #128] ; (11540 ) 114be: 4798 blx r3 114c0: 4b15 ldr r3, [pc, #84] ; (11518 ) 114c2: 6018 str r0, [r3, #0] while(LV_GC_ROOT(_lv_task_act)) { 114c4: 001e movs r6, r3 next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), LV_GC_ROOT(_lv_task_act)); 114c6: 4f1f ldr r7, [pc, #124] ; (11544 ) while(LV_GC_ROOT(_lv_task_act)) { 114c8: e781 b.n 113ce next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), next); /*Find the next task*/ 114ca: 0021 movs r1, r4 114cc: 4815 ldr r0, [pc, #84] ; (11524 ) 114ce: 4b1d ldr r3, [pc, #116] ; (11544 ) 114d0: 4798 blx r3 114d2: 1e04 subs r4, r0, #0 while(next) { 114d4: d00e beq.n 114f4 if(next->prio != LV_TASK_PRIO_OFF) { 114d6: 7d23 ldrb r3, [r4, #20] 114d8: 075b lsls r3, r3, #29 114da: d0f6 beq.n 114ca uint32_t elp = lv_tick_elaps(task->last_run); 114dc: 6860 ldr r0, [r4, #4] 114de: 47a8 blx r5 if(elp >= task->period) 114e0: 6822 ldr r2, [r4, #0] return 0; 114e2: 2300 movs r3, #0 if(elp >= task->period) 114e4: 4290 cmp r0, r2 114e6: d200 bcs.n 114ea return task->period - elp; 114e8: 1a13 subs r3, r2, r0 if(delay < time_till_next) 114ea: 683a ldr r2, [r7, #0] 114ec: 429a cmp r2, r3 114ee: d9ec bls.n 114ca time_till_next = delay; 114f0: 6033 str r3, [r6, #0] 114f2: e7ea b.n 114ca already_running = false; /*Release the mutex*/ 114f4: 2200 movs r2, #0 114f6: 4b02 ldr r3, [pc, #8] ; (11500 ) 114f8: 701a strb r2, [r3, #0] return time_till_next; 114fa: 4b10 ldr r3, [pc, #64] ; (1153c ) 114fc: 6818 ldr r0, [r3, #0] 114fe: e741 b.n 11384 11500: 20004c14 .word 0x20004c14 11504: 20004c28 .word 0x20004c28 11508: 0000f78d .word 0x0000f78d 1150c: 20004c1c .word 0x20004c1c 11510: 20004c2a .word 0x20004c2a 11514: 20004c29 .word 0x20004c29 11518: 20004d78 .word 0x20004d78 1151c: 000112f5 .word 0x000112f5 11520: 20004c2b .word 0x20004c2b 11524: 20004cac .word 0x20004cac 11528: 0000f7a9 .word 0x0000f7a9 1152c: 20004c18 .word 0x20004c18 11530: 20004c24 .word 0x20004c24 11534: 00017881 .word 0x00017881 11538: 20004c20 .word 0x20004c20 1153c: 20004c2c .word 0x20004c2c 11540: 0001066d .word 0x0001066d 11544: 00010685 .word 0x00010685 00011548 : { 11548: b5f0 push {r4, r5, r6, r7, lr} 1154a: 46ce mov lr, r9 1154c: b500 push {lr} 1154e: 0005 movs r5, r0 11550: 4689 mov r9, r1 if(task->prio == prio) return; 11552: 000e movs r6, r1 11554: 7d03 ldrb r3, [r0, #20] 11556: 075b lsls r3, r3, #29 11558: 0f5b lsrs r3, r3, #29 1155a: 428b cmp r3, r1 1155c: d028 beq.n 115b0 _LV_LL_READ(LV_GC_ROOT(_lv_task_ll), i) { 1155e: 4819 ldr r0, [pc, #100] ; (115c4 ) 11560: 4b19 ldr r3, [pc, #100] ; (115c8 ) 11562: 4798 blx r3 11564: 1e04 subs r4, r0, #0 11566: d026 beq.n 115b6 if(i->prio <= prio) { 11568: 7d03 ldrb r3, [r0, #20] 1156a: 075b lsls r3, r3, #29 1156c: 0f5b lsrs r3, r3, #29 1156e: 429e cmp r6, r3 11570: da0a bge.n 11588 _LV_LL_READ(LV_GC_ROOT(_lv_task_ll), i) { 11572: 4f16 ldr r7, [pc, #88] ; (115cc ) 11574: 0021 movs r1, r4 11576: 4813 ldr r0, [pc, #76] ; (115c4 ) 11578: 47b8 blx r7 1157a: 1e04 subs r4, r0, #0 1157c: d01b beq.n 115b6 if(i->prio <= prio) { 1157e: 7d23 ldrb r3, [r4, #20] 11580: 075b lsls r3, r3, #29 11582: 0f5b lsrs r3, r3, #29 11584: 429e cmp r6, r3 11586: dbf5 blt.n 11574 if(i != task) _lv_ll_move_before(&LV_GC_ROOT(_lv_task_ll), task, i); 11588: 42a5 cmp r5, r4 1158a: d006 beq.n 1159a 1158c: 0022 movs r2, r4 1158e: 0029 movs r1, r5 11590: 480c ldr r0, [pc, #48] ; (115c4 ) 11592: 4b0f ldr r3, [pc, #60] ; (115d0 ) 11594: 4798 blx r3 if(i == NULL) { 11596: 2c00 cmp r4, #0 11598: d00d beq.n 115b6 task_list_changed = true; 1159a: 2201 movs r2, #1 1159c: 4b0d ldr r3, [pc, #52] ; (115d4 ) 1159e: 701a strb r2, [r3, #0] task->prio = prio; 115a0: 3206 adds r2, #6 115a2: 464b mov r3, r9 115a4: 401a ands r2, r3 115a6: 7d2b ldrb r3, [r5, #20] 115a8: 2107 movs r1, #7 115aa: 438b bics r3, r1 115ac: 4313 orrs r3, r2 115ae: 752b strb r3, [r5, #20] } 115b0: bc04 pop {r2} 115b2: 4691 mov r9, r2 115b4: bdf0 pop {r4, r5, r6, r7, pc} _lv_ll_move_before(&LV_GC_ROOT(_lv_task_ll), task, NULL); 115b6: 2200 movs r2, #0 115b8: 0029 movs r1, r5 115ba: 4802 ldr r0, [pc, #8] ; (115c4 ) 115bc: 4b04 ldr r3, [pc, #16] ; (115d0 ) 115be: 4798 blx r3 115c0: e7eb b.n 1159a 115c2: 46c0 nop ; (mov r8, r8) 115c4: 20004cac .word 0x20004cac 115c8: 0001066d .word 0x0001066d 115cc: 00010685 .word 0x00010685 115d0: 00010861 .word 0x00010861 115d4: 20004c2b .word 0x20004c2b 000115d8 : { 115d8: b5f0 push {r4, r5, r6, r7, lr} 115da: b083 sub sp, #12 115dc: 0006 movs r6, r0 115de: 000f movs r7, r1 115e0: 9201 str r2, [sp, #4] 115e2: 001d movs r5, r3 lv_task_t * new_task = lv_task_create_basic(); 115e4: 4b0c ldr r3, [pc, #48] ; (11618 ) 115e6: 4798 blx r3 115e8: 0004 movs r4, r0 LV_ASSERT_MEM(new_task); 115ea: 4b0c ldr r3, [pc, #48] ; (1161c ) 115ec: 4798 blx r3 115ee: 2800 cmp r0, #0 115f0: d00b beq.n 1160a if(new_task == NULL) return NULL; 115f2: 2c00 cmp r4, #0 115f4: d006 beq.n 11604 task->task_cb = task_cb; 115f6: 60a6 str r6, [r4, #8] task->period = period; 115f8: 6027 str r7, [r4, #0] lv_task_set_prio(new_task, prio); 115fa: 9901 ldr r1, [sp, #4] 115fc: 0020 movs r0, r4 115fe: 4b08 ldr r3, [pc, #32] ; (11620 ) 11600: 4798 blx r3 new_task->user_data = user_data; 11602: 60e5 str r5, [r4, #12] } 11604: 0020 movs r0, r4 11606: b003 add sp, #12 11608: bdf0 pop {r4, r5, r6, r7, pc} LV_ASSERT_MEM(new_task); 1160a: 0022 movs r2, r4 1160c: 2300 movs r3, #0 1160e: 4805 ldr r0, [pc, #20] ; (11624 ) 11610: 4905 ldr r1, [pc, #20] ; (11628 ) 11612: 4788 blx r1 11614: e7fe b.n 11614 11616: 46c0 nop ; (mov r8, r8) 11618: 000111c1 .word 0x000111c1 1161c: 0000147d .word 0x0000147d 11620: 00011549 .word 0x00011549 11624: 00018724 .word 0x00018724 11628: 00001485 .word 0x00001485 0001162c : { 1162c: b510 push {r4, lr} 1162e: 0004 movs r4, r0 task->last_run = lv_tick_get() - task->period - 1; 11630: 4b03 ldr r3, [pc, #12] ; (11640 ) 11632: 4798 blx r3 11634: 6823 ldr r3, [r4, #0] 11636: 43db mvns r3, r3 11638: 1818 adds r0, r3, r0 1163a: 6060 str r0, [r4, #4] } 1163c: bd10 pop {r4, pc} 1163e: 46c0 nop ; (mov r8, r8) 11640: 0000f78d .word 0x0000f78d 00011644 : * 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) { 11644: b5f0 push {r4, r5, r6, r7, lr} 11646: b083 sub sp, #12 * */ uint32_t result = 0; /*Dummy 'i' pointer is required*/ uint32_t i_tmp = 0; 11648: 2300 movs r3, #0 1164a: 9301 str r3, [sp, #4] if(i == NULL) i = &i_tmp; 1164c: 2900 cmp r1, #0 1164e: d00a beq.n 11666 /*Normal ASCII*/ if((txt[*i] & 0x80) == 0) { 11650: 680b ldr r3, [r1, #0] 11652: 5cc2 ldrb r2, [r0, r3] 11654: b254 sxtb r4, r2 11656: 2c00 cmp r4, #0 11658: db07 blt.n 1166a result = txt[*i]; 1165a: 0014 movs r4, r2 (*i)++; 1165c: 3301 adds r3, #1 1165e: 600b str r3, [r1, #0] else { (*i)++; /*Not UTF-8 char. Go the next.*/ } } return result; } 11660: 0020 movs r0, r4 11662: b003 add sp, #12 11664: bdf0 pop {r4, r5, r6, r7, pc} if(i == NULL) i = &i_tmp; 11666: a901 add r1, sp, #4 11668: e7f2 b.n 11650 if((txt[*i] & 0xE0) == 0xC0) { 1166a: 241f movs r4, #31 1166c: 0015 movs r5, r2 1166e: 43a5 bics r5, r4 11670: 2dc0 cmp r5, #192 ; 0xc0 11672: d00d beq.n 11690 else if((txt[*i] & 0xF0) == 0xE0) { 11674: 240f movs r4, #15 11676: 0015 movs r5, r2 11678: 43a5 bics r5, r4 1167a: 2de0 cmp r5, #224 ; 0xe0 1167c: d01c beq.n 116b8 else if((txt[*i] & 0xF8) == 0xF0) { 1167e: 2407 movs r4, #7 11680: 0015 movs r5, r2 11682: 43a5 bics r5, r4 11684: 2df0 cmp r5, #240 ; 0xf0 11686: d036 beq.n 116f6 (*i)++; /*Not UTF-8 char. Go the next.*/ 11688: 3301 adds r3, #1 1168a: 600b str r3, [r1, #0] uint32_t result = 0; 1168c: 2400 movs r4, #0 1168e: e7e7 b.n 11660 (*i)++; 11690: 1c5c adds r4, r3, #1 11692: 600c str r4, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 11694: 5d05 ldrb r5, [r0, r4] 11696: 203f movs r0, #63 ; 0x3f 11698: 002c movs r4, r5 1169a: 4384 bics r4, r0 1169c: 0020 movs r0, r4 1169e: 2400 movs r4, #0 116a0: 2880 cmp r0, #128 ; 0x80 116a2: d1dd bne.n 11660 result = (uint32_t)(txt[*i] & 0x1F) << 6; 116a4: 0192 lsls r2, r2, #6 116a6: 24f8 movs r4, #248 ; 0xf8 116a8: 00e4 lsls r4, r4, #3 116aa: 4022 ands r2, r4 result += (txt[*i] & 0x3F); 116ac: 243f movs r4, #63 ; 0x3f 116ae: 402c ands r4, r5 116b0: 18a4 adds r4, r4, r2 (*i)++; 116b2: 3302 adds r3, #2 116b4: 600b str r3, [r1, #0] 116b6: e7d3 b.n 11660 (*i)++; 116b8: 1c5c adds r4, r3, #1 116ba: 600c str r4, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 116bc: 5d05 ldrb r5, [r0, r4] 116be: 243f movs r4, #63 ; 0x3f 116c0: 002e movs r6, r5 116c2: 43a6 bics r6, r4 116c4: 2400 movs r4, #0 116c6: 2e80 cmp r6, #128 ; 0x80 116c8: d1ca bne.n 11660 (*i)++; 116ca: 1c9c adds r4, r3, #2 116cc: 600c str r4, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 116ce: 5d00 ldrb r0, [r0, r4] 116d0: 243f movs r4, #63 ; 0x3f 116d2: 0006 movs r6, r0 116d4: 43a6 bics r6, r4 116d6: 2400 movs r4, #0 116d8: 2e80 cmp r6, #128 ; 0x80 116da: d1c1 bne.n 11660 result = (uint32_t)(txt[*i] & 0x0F) << 12; 116dc: 0714 lsls r4, r2, #28 116de: 0c24 lsrs r4, r4, #16 result += (txt[*i] & 0x3F); 116e0: 223f movs r2, #63 ; 0x3f 116e2: 4010 ands r0, r2 116e4: 1824 adds r4, r4, r0 result += (uint32_t)(txt[*i] & 0x3F) << 6; 116e6: 01ad lsls r5, r5, #6 116e8: 20fc movs r0, #252 ; 0xfc 116ea: 0100 lsls r0, r0, #4 116ec: 4005 ands r5, r0 result += (txt[*i] & 0x3F); 116ee: 192c adds r4, r5, r4 (*i)++; 116f0: 3303 adds r3, #3 116f2: 600b str r3, [r1, #0] 116f4: e7b4 b.n 11660 (*i)++; 116f6: 1c5c adds r4, r3, #1 116f8: 600c str r4, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 116fa: 5d05 ldrb r5, [r0, r4] 116fc: 243f movs r4, #63 ; 0x3f 116fe: 002e movs r6, r5 11700: 43a6 bics r6, r4 11702: 2400 movs r4, #0 11704: 2e80 cmp r6, #128 ; 0x80 11706: d1ab bne.n 11660 (*i)++; 11708: 1c9c adds r4, r3, #2 1170a: 600c str r4, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 1170c: 5d06 ldrb r6, [r0, r4] 1170e: 243f movs r4, #63 ; 0x3f 11710: 0037 movs r7, r6 11712: 43a7 bics r7, r4 11714: 2400 movs r4, #0 11716: 2f80 cmp r7, #128 ; 0x80 11718: d1a2 bne.n 11660 (*i)++; 1171a: 1cdc adds r4, r3, #3 1171c: 600c str r4, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 1171e: 5d00 ldrb r0, [r0, r4] 11720: 243f movs r4, #63 ; 0x3f 11722: 0007 movs r7, r0 11724: 43a7 bics r7, r4 11726: 2400 movs r4, #0 11728: 2f80 cmp r7, #128 ; 0x80 1172a: d199 bne.n 11660 result = (uint32_t)(txt[*i] & 0x07) << 18; 1172c: 0492 lsls r2, r2, #18 1172e: 24e0 movs r4, #224 ; 0xe0 11730: 0364 lsls r4, r4, #13 11732: 4022 ands r2, r4 result += (uint32_t)(txt[*i] & 0x3F) << 12; 11734: 032c lsls r4, r5, #12 11736: 25fc movs r5, #252 ; 0xfc 11738: 02ad lsls r5, r5, #10 1173a: 402c ands r4, r5 1173c: 4322 orrs r2, r4 result += (uint32_t)(txt[*i] & 0x3F) << 6; 1173e: 01b4 lsls r4, r6, #6 11740: 26fc movs r6, #252 ; 0xfc 11742: 0136 lsls r6, r6, #4 11744: 4034 ands r4, r6 result += txt[*i] & 0x3F; 11746: 253f movs r5, #63 ; 0x3f 11748: 4028 ands r0, r5 1174a: 1824 adds r4, r4, r0 1174c: 18a4 adds r4, r4, r2 (*i)++; 1174e: 3304 adds r3, #4 11750: 600b str r3, [r1, #0] 11752: e785 b.n 11660 00011754 : * @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) { 11754: b5f0 push {r4, r5, r6, r7, lr} 11756: b083 sub sp, #12 11758: 0006 movs r6, r0 1175a: 000d movs r5, r1 uint32_t i = 0; 1175c: 2300 movs r3, #0 1175e: 9301 str r3, [sp, #4] uint32_t char_cnt = 0; while(i < byte_id) { 11760: 2900 cmp r1, #0 11762: d00c beq.n 1177e 11764: 2400 movs r4, #0 _lv_txt_encoded_next(txt, &i); /*'i' points to the next letter so use the prev. value*/ 11766: 4f07 ldr r7, [pc, #28] ; (11784 ) 11768: a901 add r1, sp, #4 1176a: 0030 movs r0, r6 1176c: 683b ldr r3, [r7, #0] 1176e: 4798 blx r3 char_cnt++; 11770: 3401 adds r4, #1 while(i < byte_id) { 11772: 9b01 ldr r3, [sp, #4] 11774: 42ab cmp r3, r5 11776: d3f7 bcc.n 11768 } return char_cnt; } 11778: 0020 movs r0, r4 1177a: b003 add sp, #12 1177c: bdf0 pop {r4, r5, r6, r7, pc} uint32_t char_cnt = 0; 1177e: 000c movs r4, r1 return char_cnt; 11780: e7fa b.n 11778 11782: 46c0 nop ; (mov r8, r8) 11784: 20000058 .word 0x20000058 00011788 <_lv_txt_is_cmd>: if(c == (uint32_t)LV_TXT_COLOR_CMD[0]) { 11788: 2923 cmp r1, #35 ; 0x23 1178a: d005 beq.n 11798 <_lv_txt_is_cmd+0x10> if(*state == LV_TXT_CMD_STATE_PAR) { 1178c: 7802 ldrb r2, [r0, #0] bool ret = false; 1178e: 2300 movs r3, #0 if(*state == LV_TXT_CMD_STATE_PAR) { 11790: 2a01 cmp r2, #1 11792: d012 beq.n 117ba <_lv_txt_is_cmd+0x32> } 11794: 0018 movs r0, r3 11796: 4770 bx lr if(*state == LV_TXT_CMD_STATE_WAIT) { /*Start char*/ 11798: 7802 ldrb r2, [r0, #0] 1179a: 2a00 cmp r2, #0 1179c: d102 bne.n 117a4 <_lv_txt_is_cmd+0x1c> *state = LV_TXT_CMD_STATE_PAR; 1179e: 2301 movs r3, #1 117a0: 7003 strb r3, [r0, #0] 117a2: e7f7 b.n 11794 <_lv_txt_is_cmd+0xc> else if(*state == LV_TXT_CMD_STATE_PAR) { 117a4: 2a01 cmp r2, #1 117a6: d005 beq.n 117b4 <_lv_txt_is_cmd+0x2c> bool ret = false; 117a8: 2300 movs r3, #0 else if(*state == LV_TXT_CMD_STATE_IN) { 117aa: 2a02 cmp r2, #2 117ac: d1f2 bne.n 11794 <_lv_txt_is_cmd+0xc> *state = LV_TXT_CMD_STATE_WAIT; 117ae: 7003 strb r3, [r0, #0] ret = true; 117b0: 3301 adds r3, #1 117b2: e7ef b.n 11794 <_lv_txt_is_cmd+0xc> *state = LV_TXT_CMD_STATE_WAIT; 117b4: 2300 movs r3, #0 117b6: 7003 strb r3, [r0, #0] 117b8: e7ec b.n 11794 <_lv_txt_is_cmd+0xc> ret = true; 117ba: 3301 adds r3, #1 if(c == ' ') { 117bc: 2920 cmp r1, #32 117be: d1e9 bne.n 11794 <_lv_txt_is_cmd+0xc> *state = LV_TXT_CMD_STATE_IN; /*After the parameter the text is in the command*/ 117c0: 3301 adds r3, #1 117c2: 7003 strb r3, [r0, #0] ret = true; 117c4: 3b01 subs r3, #1 117c6: e7e5 b.n 11794 <_lv_txt_is_cmd+0xc> 000117c8 <_lv_txt_get_next_line>: { 117c8: b5f0 push {r4, r5, r6, r7, lr} 117ca: 46de mov lr, fp 117cc: 4657 mov r7, sl 117ce: 464e mov r6, r9 117d0: 4645 mov r5, r8 117d2: b5e0 push {r5, r6, r7, lr} 117d4: b091 sub sp, #68 ; 0x44 117d6: 9007 str r0, [sp, #28] 117d8: 9103 str r1, [sp, #12] 117da: 4692 mov sl, r2 117dc: 9305 str r3, [sp, #20] 117de: ab1a add r3, sp, #104 ; 0x68 117e0: 781b ldrb r3, [r3, #0] 117e2: 001a movs r2, r3 117e4: 930a str r3, [sp, #40] ; 0x28 if(txt == NULL) return 0; 117e6: 2800 cmp r0, #0 117e8: d100 bne.n 117ec <_lv_txt_get_next_line+0x24> 117ea: e10b b.n 11a04 <_lv_txt_get_next_line+0x23c> if(font == NULL) return 0; 117ec: 2900 cmp r1, #0 117ee: d100 bne.n 117f2 <_lv_txt_get_next_line+0x2a> 117f0: e10a b.n 11a08 <_lv_txt_get_next_line+0x240> if((flag & LV_TXT_FLAG_EXPAND) || (flag & LV_TXT_FLAG_FIT)) { 117f2: 2312 movs r3, #18 117f4: 4213 tst r3, r2 117f6: d016 beq.n 11826 <_lv_txt_get_next_line+0x5e> for(i = 0; txt[i] != '\n' && txt[i] != '\r' && txt[i] != '\0'; i++) { 117f8: 0002 movs r2, r0 117fa: 7803 ldrb r3, [r0, #0] 117fc: 2b0a cmp r3, #10 117fe: d100 bne.n 11802 <_lv_txt_get_next_line+0x3a> 11800: e104 b.n 11a0c <_lv_txt_get_next_line+0x244> 11802: 2b0d cmp r3, #13 11804: d100 bne.n 11808 <_lv_txt_get_next_line+0x40> 11806: e10b b.n 11a20 <_lv_txt_get_next_line+0x258> 11808: 2b00 cmp r3, #0 1180a: d100 bne.n 1180e <_lv_txt_get_next_line+0x46> 1180c: e10a b.n 11a24 <_lv_txt_get_next_line+0x25c> 1180e: 2000 movs r0, #0 11810: 3001 adds r0, #1 11812: 5c13 ldrb r3, [r2, r0] 11814: 2b0a cmp r3, #10 11816: d100 bne.n 1181a <_lv_txt_get_next_line+0x52> 11818: e0f9 b.n 11a0e <_lv_txt_get_next_line+0x246> 1181a: 2b0d cmp r3, #13 1181c: d100 bne.n 11820 <_lv_txt_get_next_line+0x58> 1181e: e0f6 b.n 11a0e <_lv_txt_get_next_line+0x246> 11820: 2b00 cmp r3, #0 11822: d1f5 bne.n 11810 <_lv_txt_get_next_line+0x48> 11824: e0f4 b.n 11a10 <_lv_txt_get_next_line+0x248> 11826: 2302 movs r3, #2 11828: 9a0a ldr r2, [sp, #40] ; 0x28 1182a: 401a ands r2, r3 1182c: 920b str r2, [sp, #44] ; 0x2c if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX; 1182e: d001 beq.n 11834 <_lv_txt_get_next_line+0x6c> 11830: 4b7d ldr r3, [pc, #500] ; (11a28 <_lv_txt_get_next_line+0x260>) 11832: 9305 str r3, [sp, #20] lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; 11834: 2300 movs r3, #0 11836: 220f movs r2, #15 11838: a90c add r1, sp, #48 ; 0x30 1183a: 468c mov ip, r1 1183c: 4462 add r2, ip 1183e: 7013 strb r3, [r2, #0] uint32_t i = 0; /* Iterating index into txt */ 11840: 930e str r3, [sp, #56] ; 0x38 letter_next = _lv_txt_encoded_next(txt, &i_next_next); 11842: 4b7a ldr r3, [pc, #488] ; (11a2c <_lv_txt_get_next_line+0x264>) 11844: 4699 mov r9, r3 { uint8_t i; bool ret = false; /*Compare the letter to TXT_BREAK_CHARS*/ for(i = 0; LV_TXT_BREAK_CHARS[i] != '\0'; i++) { 11846: 4f7a ldr r7, [pc, #488] ; (11a30 <_lv_txt_get_next_line+0x268>) 11848: 4653 mov r3, sl 1184a: 9304 str r3, [sp, #16] while(txt[i] != '\0' && max_width > 0) { 1184c: e083 b.n 11956 <_lv_txt_get_next_line+0x18e> letter_w = lv_font_get_glyph_width(font, letter, letter_next); 1184e: 9a00 ldr r2, [sp, #0] 11850: 0021 movs r1, r4 11852: 9803 ldr r0, [sp, #12] 11854: 4b77 ldr r3, [pc, #476] ; (11a34 <_lv_txt_get_next_line+0x26c>) 11856: 4798 blx r3 cur_w += letter_w; 11858: 1945 adds r5, r0, r5 1185a: b2ad uxth r5, r5 if(letter_w > 0) { 1185c: b200 sxth r0, r0 1185e: 2800 cmp r0, #0 11860: dd03 ble.n 1186a <_lv_txt_get_next_line+0xa2> cur_w += letter_space; 11862: 9b04 ldr r3, [sp, #16] 11864: 469c mov ip, r3 11866: 4465 add r5, ip 11868: b2ad uxth r5, r5 1186a: b22d sxth r5, r5 if(break_index == NO_BREAK_FOUND && (cur_w - letter_space) > max_width) { 1186c: 4643 mov r3, r8 1186e: 3301 adds r3, #1 11870: d039 beq.n 118e6 <_lv_txt_get_next_line+0x11e> if(letter == '\n' || letter == '\r' || is_break_char(letter)) { 11872: 0022 movs r2, r4 11874: 3a0a subs r2, #10 11876: 2a16 cmp r2, #22 11878: d83c bhi.n 118f4 <_lv_txt_get_next_line+0x12c> 1187a: 4b6f ldr r3, [pc, #444] ; (11a38 <_lv_txt_get_next_line+0x270>) 1187c: 40d3 lsrs r3, r2 1187e: 2201 movs r2, #1 11880: 421a tst r2, r3 11882: d13a bne.n 118fa <_lv_txt_get_next_line+0x132> 11884: 2301 movs r3, #1 11886: 322b adds r2, #43 ; 0x2b if(letter == (uint32_t)LV_TXT_BREAK_CHARS[i]) { 11888: 4294 cmp r4, r2 1188a: d038 beq.n 118fe <_lv_txt_get_next_line+0x136> for(i = 0; LV_TXT_BREAK_CHARS[i] != '\0'; i++) { 1188c: 3301 adds r3, #1 1188e: b2db uxtb r3, r3 11890: 5cfa ldrb r2, [r7, r3] 11892: 2a00 cmp r2, #0 11894: d1f8 bne.n 11888 <_lv_txt_get_next_line+0xc0> if(word_w_ptr != NULL && break_index == NO_BREAK_FOUND) *word_w_ptr = cur_w; 11896: 4643 mov r3, r8 11898: 3301 adds r3, #1 1189a: d100 bne.n 1189e <_lv_txt_get_next_line+0xd6> 1189c: e08d b.n 119ba <_lv_txt_get_next_line+0x1f2> i = i_next; 1189e: 9e0c ldr r6, [sp, #48] ; 0x30 i_next = i_next_next; 118a0: 9b0d ldr r3, [sp, #52] ; 0x34 118a2: 930c str r3, [sp, #48] ; 0x30 letter_next = _lv_txt_encoded_next(txt, &i_next_next); 118a4: 9b02 ldr r3, [sp, #8] 118a6: 9301 str r3, [sp, #4] 118a8: 9c00 ldr r4, [sp, #0] while(txt[i] != '\0') { 118aa: 4653 mov r3, sl 118ac: 5d9b ldrb r3, [r3, r6] 118ae: 2b00 cmp r3, #0 118b0: d100 bne.n 118b4 <_lv_txt_get_next_line+0xec> 118b2: e084 b.n 119be <_lv_txt_get_next_line+0x1f6> letter_next = _lv_txt_encoded_next(txt, &i_next_next); 118b4: a90d add r1, sp, #52 ; 0x34 118b6: 4650 mov r0, sl 118b8: 464b mov r3, r9 118ba: 681b ldr r3, [r3, #0] 118bc: 4798 blx r3 118be: 9000 str r0, [sp, #0] word_len++; 118c0: 9b01 ldr r3, [sp, #4] 118c2: 3301 adds r3, #1 118c4: 9302 str r3, [sp, #8] if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 118c6: 465b mov r3, fp 118c8: 2b00 cmp r3, #0 118ca: d0c0 beq.n 1184e <_lv_txt_get_next_line+0x86> if(_lv_txt_is_cmd(cmd_state, letter) != false) { 118cc: 0021 movs r1, r4 118ce: 200f movs r0, #15 118d0: ab0c add r3, sp, #48 ; 0x30 118d2: 469c mov ip, r3 118d4: 4460 add r0, ip 118d6: 4b59 ldr r3, [pc, #356] ; (11a3c <_lv_txt_get_next_line+0x274>) 118d8: 4798 blx r3 118da: 2800 cmp r0, #0 118dc: d0b7 beq.n 1184e <_lv_txt_get_next_line+0x86> i = i_next; 118de: 9e0c ldr r6, [sp, #48] ; 0x30 i_next = i_next_next; 118e0: 9b0d ldr r3, [sp, #52] ; 0x34 118e2: 930c str r3, [sp, #48] ; 0x30 118e4: e7de b.n 118a4 <_lv_txt_get_next_line+0xdc> if(break_index == NO_BREAK_FOUND && (cur_w - letter_space) > max_width) { 118e6: 9b04 ldr r3, [sp, #16] 118e8: 1aeb subs r3, r5, r3 118ea: 9a08 ldr r2, [sp, #32] 118ec: 4293 cmp r3, r2 118ee: ddc0 ble.n 11872 <_lv_txt_get_next_line+0xaa> 118f0: 46b0 mov r8, r6 118f2: e7be b.n 11872 <_lv_txt_get_next_line+0xaa> if(letter == '\n' || letter == '\r' || is_break_char(letter)) { 118f4: 2301 movs r3, #1 118f6: 222c movs r2, #44 ; 0x2c 118f8: e7c6 b.n 11888 <_lv_txt_get_next_line+0xc0> 118fa: 46b2 mov sl, r6 118fc: e000 b.n 11900 <_lv_txt_get_next_line+0x138> 118fe: 46b2 mov sl, r6 if(i == 0 && break_index == NO_BREAK_FOUND && word_w_ptr != NULL) *word_w_ptr = cur_w; 11900: 4653 mov r3, sl 11902: 2b00 cmp r3, #0 11904: d15c bne.n 119c0 <_lv_txt_get_next_line+0x1f8> 11906: 4643 mov r3, r8 11908: 3301 adds r3, #1 1190a: d15c bne.n 119c6 <_lv_txt_get_next_line+0x1fe> 1190c: 9506 str r5, [sp, #24] if(word_len == 0 || (letter == '\r' && letter_next == '\n')) i = i_next; 1190e: 9b01 ldr r3, [sp, #4] 11910: 2b00 cmp r3, #0 11912: d004 beq.n 1191e <_lv_txt_get_next_line+0x156> 11914: 2c0d cmp r4, #13 11916: d104 bne.n 11922 <_lv_txt_get_next_line+0x15a> 11918: 9b00 ldr r3, [sp, #0] 1191a: 2b0a cmp r3, #10 1191c: d101 bne.n 11922 <_lv_txt_get_next_line+0x15a> 1191e: 9b0c ldr r3, [sp, #48] ; 0x30 11920: 469a mov sl, r3 return i; 11922: 4653 mov r3, sl 11924: 466a mov r2, sp 11926: 8013 strh r3, [r2, #0] 11928: 8816 ldrh r6, [r2, #0] max_width -= word_w; 1192a: 9b05 ldr r3, [sp, #20] 1192c: 9a06 ldr r2, [sp, #24] 1192e: 1a9b subs r3, r3, r2 11930: b21b sxth r3, r3 11932: 9305 str r3, [sp, #20] if(advance == 0) { 11934: 2e00 cmp r6, #0 11936: d049 beq.n 119cc <_lv_txt_get_next_line+0x204> i += advance; 11938: 9b0e ldr r3, [sp, #56] ; 0x38 1193a: 469c mov ip, r3 1193c: 4466 add r6, ip 1193e: 960e str r6, [sp, #56] ; 0x38 if(txt[0] == '\n' || txt[0] == '\r') break; 11940: 9a07 ldr r2, [sp, #28] 11942: 7813 ldrb r3, [r2, #0] 11944: 2b0a cmp r3, #10 11946: d051 beq.n 119ec <_lv_txt_get_next_line+0x224> 11948: 2b0d cmp r3, #13 1194a: d04f beq.n 119ec <_lv_txt_get_next_line+0x224> if(txt[i] == '\n' || txt[i] == '\r') { 1194c: 5d93 ldrb r3, [r2, r6] 1194e: 2b0a cmp r3, #10 11950: d04a beq.n 119e8 <_lv_txt_get_next_line+0x220> 11952: 2b0d cmp r3, #13 11954: d048 beq.n 119e8 <_lv_txt_get_next_line+0x220> while(txt[i] != '\0' && max_width > 0) { 11956: 9b0e ldr r3, [sp, #56] ; 0x38 11958: 9309 str r3, [sp, #36] ; 0x24 1195a: 9a07 ldr r2, [sp, #28] 1195c: 469c mov ip, r3 1195e: 4462 add r2, ip 11960: 0016 movs r6, r2 11962: 7813 ldrb r3, [r2, #0] 11964: 2b00 cmp r3, #0 11966: d041 beq.n 119ec <_lv_txt_get_next_line+0x224> 11968: 9b05 ldr r3, [sp, #20] 1196a: 2b00 cmp r3, #0 1196c: dd3e ble.n 119ec <_lv_txt_get_next_line+0x224> if(txt == NULL || txt[0] == '\0') return 0; 1196e: 2e00 cmp r6, #0 11970: d02c beq.n 119cc <_lv_txt_get_next_line+0x204> if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX; 11972: 9b05 ldr r3, [sp, #20] 11974: 9308 str r3, [sp, #32] 11976: 9b0b ldr r3, [sp, #44] ; 0x2c 11978: 2b00 cmp r3, #0 1197a: d001 beq.n 11980 <_lv_txt_get_next_line+0x1b8> 1197c: 4b2a ldr r3, [pc, #168] ; (11a28 <_lv_txt_get_next_line+0x260>) 1197e: 9308 str r3, [sp, #32] uint32_t i = 0, i_next = 0, i_next_next = 0; /* Iterating index into txt */ 11980: 2300 movs r3, #0 11982: 930c str r3, [sp, #48] ; 0x30 11984: 930d str r3, [sp, #52] ; 0x34 letter = _lv_txt_encoded_next(txt, &i_next); 11986: a90c add r1, sp, #48 ; 0x30 11988: 0030 movs r0, r6 1198a: 4b28 ldr r3, [pc, #160] ; (11a2c <_lv_txt_get_next_line+0x264>) 1198c: 681b ldr r3, [r3, #0] 1198e: 9300 str r3, [sp, #0] 11990: 4798 blx r3 11992: 0004 movs r4, r0 i_next_next = i_next; 11994: 9b0c ldr r3, [sp, #48] ; 0x30 11996: 930d str r3, [sp, #52] ; 0x34 uint32_t word_w = 0; 11998: 2300 movs r3, #0 1199a: 9306 str r3, [sp, #24] uint32_t break_index = NO_BREAK_FOUND; /* only used for "long" words */ 1199c: 3b01 subs r3, #1 1199e: 4698 mov r8, r3 uint32_t word_len = 0; /* Number of characters in the transversed word */ 119a0: 2300 movs r3, #0 119a2: 9301 str r3, [sp, #4] lv_coord_t cur_w = 0; /* Pixel Width of transversed string */ 119a4: 2500 movs r5, #0 uint32_t letter_next = 0; /* Letter at i_next */ 119a6: 9300 str r3, [sp, #0] uint32_t i = 0, i_next = 0, i_next_next = 0; /* Iterating index into txt */ 119a8: 469a mov sl, r3 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 119aa: 3301 adds r3, #1 119ac: 9a0a ldr r2, [sp, #40] ; 0x28 119ae: 4013 ands r3, r2 119b0: 469b mov fp, r3 119b2: 4653 mov r3, sl 119b4: 46b2 mov sl, r6 119b6: 001e movs r6, r3 119b8: e777 b.n 118aa <_lv_txt_get_next_line+0xe2> if(word_w_ptr != NULL && break_index == NO_BREAK_FOUND) *word_w_ptr = cur_w; 119ba: 9506 str r5, [sp, #24] 119bc: e76f b.n 1189e <_lv_txt_get_next_line+0xd6> 119be: 46b2 mov sl, r6 if(break_index == NO_BREAK_FOUND) { 119c0: 4643 mov r3, r8 119c2: 3301 adds r3, #1 119c4: d0a3 beq.n 1190e <_lv_txt_get_next_line+0x146> if(force) return break_index; 119c6: 9b09 ldr r3, [sp, #36] ; 0x24 119c8: 2b00 cmp r3, #0 119ca: d008 beq.n 119de <_lv_txt_get_next_line+0x216> if(i == 0) _lv_txt_encoded_next(txt, &i); // prevent inf loops 119cc: 9b0e ldr r3, [sp, #56] ; 0x38 119ce: 2b00 cmp r3, #0 119d0: d10f bne.n 119f2 <_lv_txt_get_next_line+0x22a> 119d2: 4b16 ldr r3, [pc, #88] ; (11a2c <_lv_txt_get_next_line+0x264>) 119d4: 681b ldr r3, [r3, #0] 119d6: a90e add r1, sp, #56 ; 0x38 119d8: 9807 ldr r0, [sp, #28] 119da: 4798 blx r3 119dc: e006 b.n 119ec <_lv_txt_get_next_line+0x224> if(force) return break_index; 119de: 4643 mov r3, r8 119e0: 466a mov r2, sp 119e2: 8013 strh r3, [r2, #0] 119e4: 8816 ldrh r6, [r2, #0] 119e6: e7a0 b.n 1192a <_lv_txt_get_next_line+0x162> i++; /* Include the following newline in the current line */ 119e8: 3601 adds r6, #1 119ea: 960e str r6, [sp, #56] ; 0x38 if(i == 0) { 119ec: 9b0e ldr r3, [sp, #56] ; 0x38 119ee: 2b00 cmp r3, #0 119f0: d002 beq.n 119f8 <_lv_txt_get_next_line+0x230> return i; 119f2: ab0c add r3, sp, #48 ; 0x30 119f4: 8918 ldrh r0, [r3, #8] 119f6: e00c b.n 11a12 <_lv_txt_get_next_line+0x24a> _lv_txt_encoded_next(txt, &i); 119f8: 4b0c ldr r3, [pc, #48] ; (11a2c <_lv_txt_get_next_line+0x264>) 119fa: 681b ldr r3, [r3, #0] 119fc: a90e add r1, sp, #56 ; 0x38 119fe: 9807 ldr r0, [sp, #28] 11a00: 4798 blx r3 11a02: e7f6 b.n 119f2 <_lv_txt_get_next_line+0x22a> if(txt == NULL) return 0; 11a04: 2000 movs r0, #0 11a06: e004 b.n 11a12 <_lv_txt_get_next_line+0x24a> if(font == NULL) return 0; 11a08: 2000 movs r0, #0 11a0a: e002 b.n 11a12 <_lv_txt_get_next_line+0x24a> for(i = 0; txt[i] != '\n' && txt[i] != '\r' && txt[i] != '\0'; i++) { 11a0c: 2000 movs r0, #0 if(txt[i] != '\0') i++; /*To go beyond `\n`*/ 11a0e: 3001 adds r0, #1 return i; 11a10: b280 uxth r0, r0 } 11a12: b011 add sp, #68 ; 0x44 11a14: bc3c pop {r2, r3, r4, r5} 11a16: 4690 mov r8, r2 11a18: 4699 mov r9, r3 11a1a: 46a2 mov sl, r4 11a1c: 46ab mov fp, r5 11a1e: bdf0 pop {r4, r5, r6, r7, pc} for(i = 0; txt[i] != '\n' && txt[i] != '\r' && txt[i] != '\0'; i++) { 11a20: 2000 movs r0, #0 11a22: e7f4 b.n 11a0e <_lv_txt_get_next_line+0x246> 11a24: 2000 movs r0, #0 11a26: e7f3 b.n 11a10 <_lv_txt_get_next_line+0x248> 11a28: 00007c18 .word 0x00007c18 11a2c: 20000058 .word 0x20000058 11a30: 0001c87c .word 0x0001c87c 11a34: 0000e769 .word 0x0000e769 11a38: 00400009 .word 0x00400009 11a3c: 00011789 .word 0x00011789 00011a40 <_lv_txt_get_width>: { 11a40: b5f0 push {r4, r5, r6, r7, lr} 11a42: 46ce mov lr, r9 11a44: 4647 mov r7, r8 11a46: b580 push {r7, lr} 11a48: b085 sub sp, #20 11a4a: 0005 movs r5, r0 11a4c: 4689 mov r9, r1 11a4e: 9201 str r2, [sp, #4] 11a50: 4698 mov r8, r3 11a52: ab0c add r3, sp, #48 ; 0x30 11a54: 781f ldrb r7, [r3, #0] if(txt == NULL) return 0; 11a56: 2800 cmp r0, #0 11a58: d03a beq.n 11ad0 <_lv_txt_get_width+0x90> if(font == NULL) return 0; 11a5a: 2a00 cmp r2, #0 11a5c: d03a beq.n 11ad4 <_lv_txt_get_width+0x94> uint32_t i = 0; 11a5e: 2300 movs r3, #0 11a60: 9303 str r3, [sp, #12] lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; 11a62: aa02 add r2, sp, #8 11a64: 70d3 strb r3, [r2, #3] 11a66: 2400 movs r4, #0 if(length != 0) { 11a68: 2900 cmp r1, #0 11a6a: d02b beq.n 11ac4 <_lv_txt_get_width+0x84> if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 11a6c: 2301 movs r3, #1 11a6e: 401f ands r7, r3 11a70: e00a b.n 11a88 <_lv_txt_get_width+0x48> lv_coord_t char_width = lv_font_get_glyph_width(font, letter, letter_next); 11a72: 0032 movs r2, r6 11a74: 9900 ldr r1, [sp, #0] 11a76: 9801 ldr r0, [sp, #4] 11a78: 4b17 ldr r3, [pc, #92] ; (11ad8 <_lv_txt_get_width+0x98>) 11a7a: 4798 blx r3 if(char_width > 0) { 11a7c: b203 sxth r3, r0 11a7e: 2b00 cmp r3, #0 11a80: dd02 ble.n 11a88 <_lv_txt_get_width+0x48> width += letter_space; 11a82: 4444 add r4, r8 11a84: 1904 adds r4, r0, r4 11a86: b224 sxth r4, r4 while(i < length) { 11a88: 9b03 ldr r3, [sp, #12] 11a8a: 4599 cmp r9, r3 11a8c: d915 bls.n 11aba <_lv_txt_get_width+0x7a> uint32_t letter = _lv_txt_encoded_next(txt, &i); 11a8e: 4e13 ldr r6, [pc, #76] ; (11adc <_lv_txt_get_width+0x9c>) 11a90: a903 add r1, sp, #12 11a92: 0028 movs r0, r5 11a94: 6833 ldr r3, [r6, #0] 11a96: 4798 blx r3 11a98: 9000 str r0, [sp, #0] uint32_t letter_next = _lv_txt_encoded_next(&txt[i], NULL); 11a9a: 9b03 ldr r3, [sp, #12] 11a9c: 18e8 adds r0, r5, r3 11a9e: 6833 ldr r3, [r6, #0] 11aa0: 2100 movs r1, #0 11aa2: 4798 blx r3 11aa4: 0006 movs r6, r0 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 11aa6: 2f00 cmp r7, #0 11aa8: d0e3 beq.n 11a72 <_lv_txt_get_width+0x32> if(_lv_txt_is_cmd(&cmd_state, letter) != false) { 11aaa: 9900 ldr r1, [sp, #0] 11aac: ab02 add r3, sp, #8 11aae: 1cd8 adds r0, r3, #3 11ab0: 4b0b ldr r3, [pc, #44] ; (11ae0 <_lv_txt_get_width+0xa0>) 11ab2: 4798 blx r3 11ab4: 2800 cmp r0, #0 11ab6: d1e7 bne.n 11a88 <_lv_txt_get_width+0x48> 11ab8: e7db b.n 11a72 <_lv_txt_get_width+0x32> if(width > 0) { 11aba: 2c00 cmp r4, #0 11abc: dd02 ble.n 11ac4 <_lv_txt_get_width+0x84> width -= letter_space; /*Trim the last letter space. Important if the text is center 11abe: 4643 mov r3, r8 11ac0: 1ae4 subs r4, r4, r3 11ac2: b224 sxth r4, r4 } 11ac4: 0020 movs r0, r4 11ac6: b005 add sp, #20 11ac8: bc0c pop {r2, r3} 11aca: 4690 mov r8, r2 11acc: 4699 mov r9, r3 11ace: bdf0 pop {r4, r5, r6, r7, pc} if(txt == NULL) return 0; 11ad0: 2400 movs r4, #0 11ad2: e7f7 b.n 11ac4 <_lv_txt_get_width+0x84> if(font == NULL) return 0; 11ad4: 2400 movs r4, #0 11ad6: e7f5 b.n 11ac4 <_lv_txt_get_width+0x84> 11ad8: 0000e769 .word 0x0000e769 11adc: 20000058 .word 0x20000058 11ae0: 00011789 .word 0x00011789 00011ae4 <_lv_txt_get_size>: { 11ae4: b5f0 push {r4, r5, r6, r7, lr} 11ae6: 46de mov lr, fp 11ae8: 4657 mov r7, sl 11aea: 464e mov r6, r9 11aec: 4645 mov r5, r8 11aee: b5e0 push {r5, r6, r7, lr} 11af0: b089 sub sp, #36 ; 0x24 11af2: 0004 movs r4, r0 11af4: 4689 mov r9, r1 11af6: 9202 str r2, [sp, #8] 11af8: 9303 str r3, [sp, #12] 11afa: ab12 add r3, sp, #72 ; 0x48 11afc: 2100 movs r1, #0 11afe: 5e5b ldrsh r3, [r3, r1] 11b00: 9306 str r3, [sp, #24] 11b02: ab13 add r3, sp, #76 ; 0x4c 11b04: 2100 movs r1, #0 11b06: 5e5b ldrsh r3, [r3, r1] 11b08: 9304 str r3, [sp, #16] 11b0a: ab14 add r3, sp, #80 ; 0x50 11b0c: 781f ldrb r7, [r3, #0] size_res->x = 0; 11b0e: 2300 movs r3, #0 11b10: 8003 strh r3, [r0, #0] size_res->y = 0; 11b12: 8043 strh r3, [r0, #2] if(text == NULL) return; 11b14: 464b mov r3, r9 11b16: 2b00 cmp r3, #0 11b18: d051 beq.n 11bbe <_lv_txt_get_size+0xda> if(font == NULL) return; 11b1a: 2a00 cmp r2, #0 11b1c: d04f beq.n 11bbe <_lv_txt_get_size+0xda> if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX; 11b1e: 07bb lsls r3, r7, #30 11b20: d501 bpl.n 11b26 <_lv_txt_get_size+0x42> 11b22: 4b2f ldr r3, [pc, #188] ; (11be0 <_lv_txt_get_size+0xfc>) 11b24: 9304 str r3, [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; 11b26: 9b02 ldr r3, [sp, #8] 11b28: 2208 movs r2, #8 11b2a: 5e9b ldrsh r3, [r3, r2] 11b2c: 9307 str r3, [sp, #28] uint16_t letter_height = lv_font_get_line_height(font); 11b2e: b29a uxth r2, r3 while(text[line_start] != '\0') { 11b30: 464b mov r3, r9 11b32: 781b ldrb r3, [r3, #0] 11b34: 2b00 cmp r3, #0 11b36: d04f beq.n 11bd8 <_lv_txt_get_size+0xf4> 11b38: 464d mov r5, r9 11b3a: 2600 movs r6, #0 new_line_start += _lv_txt_get_next_line(&text[line_start], font, letter_space, max_width, flag); 11b3c: 4b29 ldr r3, [pc, #164] ; (11be4 <_lv_txt_get_size+0x100>) 11b3e: 469b mov fp, r3 if((unsigned long)size_res->y + (unsigned long)letter_height + (unsigned long)line_space > LV_MAX_OF(lv_coord_t)) { 11b40: 9b06 ldr r3, [sp, #24] 11b42: 469a mov sl, r3 11b44: 4492 add sl, r2 11b46: 4653 mov r3, sl 11b48: 466a mov r2, sp 11b4a: 8293 strh r3, [r2, #20] 11b4c: 8a93 ldrh r3, [r2, #20] 11b4e: 4698 mov r8, r3 11b50: e005 b.n 11b5e <_lv_txt_get_size+0x7a> size_res->x = LV_MATH_MAX(act_line_length, size_res->x); 11b52: 8022 strh r2, [r4, #0] while(text[line_start] != '\0') { 11b54: 464b mov r3, r9 11b56: 199d adds r5, r3, r6 11b58: 782b ldrb r3, [r5, #0] 11b5a: 2b00 cmp r3, #0 11b5c: d01f beq.n 11b9e <_lv_txt_get_size+0xba> new_line_start += _lv_txt_get_next_line(&text[line_start], font, letter_space, max_width, flag); 11b5e: 9700 str r7, [sp, #0] 11b60: 9b04 ldr r3, [sp, #16] 11b62: 9a03 ldr r2, [sp, #12] 11b64: 9902 ldr r1, [sp, #8] 11b66: 0028 movs r0, r5 11b68: 47d8 blx fp 11b6a: 1836 adds r6, r6, r0 if((unsigned long)size_res->y + (unsigned long)letter_height + (unsigned long)line_space > LV_MAX_OF(lv_coord_t)) { 11b6c: 2102 movs r1, #2 11b6e: 5e63 ldrsh r3, [r4, r1] 11b70: 4651 mov r1, sl 11b72: 18c9 adds r1, r1, r3 11b74: 4a1c ldr r2, [pc, #112] ; (11be8 <_lv_txt_get_size+0x104>) 11b76: 4291 cmp r1, r2 11b78: d821 bhi.n 11bbe <_lv_txt_get_size+0xda> 11b7a: 4641 mov r1, r8 11b7c: 9105 str r1, [sp, #20] size_res->y += line_space; 11b7e: 4443 add r3, r8 11b80: 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, 11b82: 9700 str r7, [sp, #0] 11b84: 9b03 ldr r3, [sp, #12] 11b86: 9a02 ldr r2, [sp, #8] 11b88: 0001 movs r1, r0 11b8a: 0028 movs r0, r5 11b8c: 4d17 ldr r5, [pc, #92] ; (11bec <_lv_txt_get_size+0x108>) 11b8e: 47a8 blx r5 size_res->x = LV_MATH_MAX(act_line_length, size_res->x); 11b90: 8823 ldrh r3, [r4, #0] 11b92: 1c1a adds r2, r3, #0 11b94: b21b sxth r3, r3 11b96: 4283 cmp r3, r0 11b98: dadb bge.n 11b52 <_lv_txt_get_size+0x6e> 11b9a: 1c02 adds r2, r0, #0 11b9c: e7d9 b.n 11b52 <_lv_txt_get_size+0x6e> if((line_start != 0) && (text[line_start - 1] == '\n' || text[line_start - 1] == '\r')) { 11b9e: 2e00 cmp r6, #0 11ba0: d006 beq.n 11bb0 <_lv_txt_get_size+0xcc> 11ba2: 002e movs r6, r5 11ba4: 3e01 subs r6, #1 11ba6: 7833 ldrb r3, [r6, #0] 11ba8: 2b0a cmp r3, #10 11baa: d00f beq.n 11bcc <_lv_txt_get_size+0xe8> 11bac: 2b0d cmp r3, #13 11bae: d00d beq.n 11bcc <_lv_txt_get_size+0xe8> if(size_res->y == 0) 11bb0: 2202 movs r2, #2 11bb2: 5ea3 ldrsh r3, [r4, r2] 11bb4: 2b00 cmp r3, #0 11bb6: d00f beq.n 11bd8 <_lv_txt_get_size+0xf4> size_res->y -= line_space; 11bb8: 9a06 ldr r2, [sp, #24] 11bba: 1a9b subs r3, r3, r2 11bbc: 8063 strh r3, [r4, #2] } 11bbe: b009 add sp, #36 ; 0x24 11bc0: bc3c pop {r2, r3, r4, r5} 11bc2: 4690 mov r8, r2 11bc4: 4699 mov r9, r3 11bc6: 46a2 mov sl, r4 11bc8: 46ab mov fp, r5 11bca: bdf0 pop {r4, r5, r6, r7, pc} size_res->y += letter_height + line_space; 11bcc: 8863 ldrh r3, [r4, #2] 11bce: 9a05 ldr r2, [sp, #20] 11bd0: 4694 mov ip, r2 11bd2: 4463 add r3, ip 11bd4: 8063 strh r3, [r4, #2] 11bd6: e7eb b.n 11bb0 <_lv_txt_get_size+0xcc> size_res->y = letter_height; 11bd8: 466b mov r3, sp 11bda: 8b9b ldrh r3, [r3, #28] 11bdc: 8063 strh r3, [r4, #2] 11bde: e7ee b.n 11bbe <_lv_txt_get_size+0xda> 11be0: 00007c18 .word 0x00007c18 11be4: 000117c9 .word 0x000117c9 11be8: 00007fff .word 0x00007fff 11bec: 00011a41 .word 0x00011a41 00011bf0 <_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)) { 11bf0: b5f0 push {r4, r5, r6, r7, lr} 11bf2: 46d6 mov lr, sl 11bf4: 464f mov r7, r9 11bf6: 4646 mov r6, r8 11bf8: b5c0 push {r6, r7, lr} 11bfa: b082 sub sp, #8 11bfc: 9001 str r0, [sp, #4] 11bfe: 000f movs r7, r1 11c00: 1e14 subs r4, r2, #0 11c02: 4699 mov r9, r3 11c04: 9b0a ldr r3, [sp, #40] ; 0x28 11c06: 469a mov sl, r3 const char * middle; int32_t c; for(middle = base; n != 0;) { 11c08: d01d beq.n 11c46 <_lv_utils_bsearch+0x56> middle += (n / 2) * size; if((c = (*cmp)(key, middle)) > 0) { n = (n / 2) - ((n & 1) == 0); 11c0a: 2301 movs r3, #1 11c0c: 4698 mov r8, r3 11c0e: e004 b.n 11c1a <_lv_utils_bsearch+0x2a> base = (middle += size); } else if(c < 0) { 11c10: 2800 cmp r0, #0 11c12: da1a bge.n 11c4a <_lv_utils_bsearch+0x5a> n /= 2; 11c14: 0034 movs r4, r6 for(middle = base; n != 0;) { 11c16: 2c00 cmp r4, #0 11c18: d00e beq.n 11c38 <_lv_utils_bsearch+0x48> middle += (n / 2) * size; 11c1a: 0866 lsrs r6, r4, #1 11c1c: 464d mov r5, r9 11c1e: 4375 muls r5, r6 11c20: 197d adds r5, r7, r5 if((c = (*cmp)(key, middle)) > 0) { 11c22: 0029 movs r1, r5 11c24: 9801 ldr r0, [sp, #4] 11c26: 47d0 blx sl 11c28: 2800 cmp r0, #0 11c2a: ddf1 ble.n 11c10 <_lv_utils_bsearch+0x20> n = (n / 2) - ((n & 1) == 0); 11c2c: 4643 mov r3, r8 11c2e: 43a3 bics r3, r4 11c30: 1af4 subs r4, r6, r3 base = (middle += size); 11c32: 444d add r5, r9 11c34: 002f movs r7, r5 11c36: e7ee b.n 11c16 <_lv_utils_bsearch+0x26> } else { return (char *)middle; } } return NULL; 11c38: 2000 movs r0, #0 } 11c3a: b002 add sp, #8 11c3c: bc1c pop {r2, r3, r4} 11c3e: 4690 mov r8, r2 11c40: 4699 mov r9, r3 11c42: 46a2 mov sl, r4 11c44: bdf0 pop {r4, r5, r6, r7, pc} return NULL; 11c46: 2000 movs r0, #0 11c48: e7f7 b.n 11c3a <_lv_utils_bsearch+0x4a> middle += (n / 2) * size; 11c4a: 0028 movs r0, r5 11c4c: e7f5 b.n 11c3a <_lv_utils_bsearch+0x4a> ... 00011c50 : * 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; 11c50: 4b01 ldr r3, [pc, #4] ; (11c58 ) 11c52: 6018 str r0, [r3, #0] } 11c54: 4770 bx lr 11c56: 46c0 nop ; (mov r8, r8) 11c58: 20004c30 .word 0x20004c30 00011c5c : * 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; 11c5c: 4b01 ldr r3, [pc, #4] ; (11c64 ) 11c5e: 681b ldr r3, [r3, #0] 11c60: 68d8 ldr r0, [r3, #12] } 11c62: 4770 bx lr 11c64: 20004c30 .word 0x20004c30 00011c68 : { return act_theme->flags; } void lv_theme_apply(lv_obj_t * obj, lv_theme_style_t name) { 11c68: b510 push {r4, lr} act_theme->apply_xcb(obj, name); 11c6a: 4b02 ldr r3, [pc, #8] ; (11c74 ) 11c6c: 681b ldr r3, [r3, #0] 11c6e: 681b ldr r3, [r3, #0] 11c70: 4798 blx r3 } 11c72: bd10 pop {r4, pc} 11c74: 20004c30 .word 0x20004c30 00011c78 : return &theme; } static void theme_apply(lv_obj_t * obj, lv_theme_style_t name) { 11c78: b5f0 push {r4, r5, r6, r7, lr} 11c7a: 46ce mov lr, r9 11c7c: 4647 mov r7, r8 11c7e: b580 push {r7, lr} 11c80: b083 sub sp, #12 11c82: 0004 movs r4, r0 lv_style_list_t * list; switch(name) { 11c84: 2928 cmp r1, #40 ; 0x28 11c86: d80e bhi.n 11ca6 11c88: 0089 lsls r1, r1, #2 11c8a: 4be4 ldr r3, [pc, #912] ; (1201c ) 11c8c: 585b ldr r3, [r3, r1] 11c8e: 469f mov pc, r3 case LV_THEME_NONE: break; case LV_THEME_SCR: lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 11c90: 2100 movs r1, #0 11c92: 4be3 ldr r3, [pc, #908] ; (12020 ) 11c94: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN); 11c96: 2100 movs r1, #0 11c98: 0020 movs r0, r4 11c9a: 4be2 ldr r3, [pc, #904] ; (12024 ) 11c9c: 4798 blx r3 _lv_style_list_add_style(list, &styles->scr); 11c9e: 4be2 ldr r3, [pc, #904] ; (12028 ) 11ca0: 6819 ldr r1, [r3, #0] 11ca2: 4be2 ldr r3, [pc, #904] ; (1202c ) 11ca4: 4798 blx r3 #endif default: break; } lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 11ca6: 21ff movs r1, #255 ; 0xff 11ca8: 0020 movs r0, r4 11caa: 4be1 ldr r3, [pc, #900] ; (12030 ) 11cac: 4798 blx r3 } 11cae: b003 add sp, #12 11cb0: bc0c pop {r2, r3} 11cb2: 4690 mov r8, r2 11cb4: 4699 mov r9, r3 11cb6: bdf0 pop {r4, r5, r6, r7, pc} lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 11cb8: 2100 movs r1, #0 11cba: 4bd9 ldr r3, [pc, #868] ; (12020 ) 11cbc: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN); 11cbe: 2100 movs r1, #0 11cc0: 0020 movs r0, r4 11cc2: 4bd8 ldr r3, [pc, #864] ; (12024 ) 11cc4: 4798 blx r3 _lv_style_list_add_style(list, &styles->bg); 11cc6: 4bd8 ldr r3, [pc, #864] ; (12028 ) 11cc8: 6819 ldr r1, [r3, #0] 11cca: 3104 adds r1, #4 11ccc: 4bd7 ldr r3, [pc, #860] ; (1202c ) 11cce: 4798 blx r3 break; 11cd0: e7e9 b.n 11ca6 lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 11cd2: 2100 movs r1, #0 11cd4: 4bd2 ldr r3, [pc, #840] ; (12020 ) 11cd6: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_CONT_PART_MAIN); 11cd8: 2100 movs r1, #0 11cda: 0020 movs r0, r4 11cdc: 4bd1 ldr r3, [pc, #836] ; (12024 ) 11cde: 4798 blx r3 _lv_style_list_add_style(list, &styles->bg); 11ce0: 4bd1 ldr r3, [pc, #836] ; (12028 ) 11ce2: 6819 ldr r1, [r3, #0] 11ce4: 3104 adds r1, #4 11ce6: 4bd1 ldr r3, [pc, #836] ; (1202c ) 11ce8: 4798 blx r3 break; 11cea: e7dc b.n 11ca6 lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 11cec: 2100 movs r1, #0 11cee: 4bcc ldr r3, [pc, #816] ; (12020 ) 11cf0: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 11cf2: 2100 movs r1, #0 11cf4: 0020 movs r0, r4 11cf6: 4bcb ldr r3, [pc, #812] ; (12024 ) 11cf8: 4798 blx r3 _lv_style_list_add_style(list, &styles->btn); 11cfa: 4bcb ldr r3, [pc, #812] ; (12028 ) 11cfc: 6819 ldr r1, [r3, #0] 11cfe: 3110 adds r1, #16 11d00: 4bca ldr r3, [pc, #808] ; (1202c ) 11d02: 4798 blx r3 break; 11d04: e7cf b.n 11ca6 lv_obj_clean_style_list(obj, LV_BTNMATRIX_PART_BG); 11d06: 2100 movs r1, #0 11d08: 4bc5 ldr r3, [pc, #788] ; (12020 ) 11d0a: 4699 mov r9, r3 11d0c: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BG); 11d0e: 2100 movs r1, #0 11d10: 0020 movs r0, r4 11d12: 4fc4 ldr r7, [pc, #784] ; (12024 ) 11d14: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 11d16: 4ec4 ldr r6, [pc, #784] ; (12028 ) 11d18: 6833 ldr r3, [r6, #0] 11d1a: 1d19 adds r1, r3, #4 11d1c: 9001 str r0, [sp, #4] 11d1e: 4dc3 ldr r5, [pc, #780] ; (1202c ) 11d20: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 11d22: 6831 ldr r1, [r6, #0] 11d24: 3118 adds r1, #24 11d26: 9801 ldr r0, [sp, #4] 11d28: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_BTNMATRIX_PART_BTN); 11d2a: 2101 movs r1, #1 11d2c: 0020 movs r0, r4 11d2e: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BTN); 11d30: 2101 movs r1, #1 11d32: 0020 movs r0, r4 11d34: 47b8 blx r7 11d36: 0007 movs r7, r0 _lv_style_list_add_style(list, &styles->bg); 11d38: 6833 ldr r3, [r6, #0] 11d3a: 1d19 adds r1, r3, #4 11d3c: 47a8 blx r5 _lv_style_list_add_style(list, &styles->bg_click); 11d3e: 6831 ldr r1, [r6, #0] 11d40: 3108 adds r1, #8 11d42: 0038 movs r0, r7 11d44: 47a8 blx r5 break; 11d46: e7ae b.n 11ca6 lv_obj_clean_style_list(obj, LV_KEYBOARD_PART_BG); 11d48: 2100 movs r1, #0 11d4a: 4bb5 ldr r3, [pc, #724] ; (12020 ) 11d4c: 4699 mov r9, r3 11d4e: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BG); 11d50: 2100 movs r1, #0 11d52: 0020 movs r0, r4 11d54: 4fb3 ldr r7, [pc, #716] ; (12024 ) 11d56: 47b8 blx r7 _lv_style_list_add_style(list, &styles->scr); 11d58: 4eb3 ldr r6, [pc, #716] ; (12028 ) 11d5a: 6831 ldr r1, [r6, #0] 11d5c: 9001 str r0, [sp, #4] 11d5e: 4db3 ldr r5, [pc, #716] ; (1202c ) 11d60: 47a8 blx r5 _lv_style_list_add_style(list, &styles->kb_bg); 11d62: 6831 ldr r1, [r6, #0] 11d64: 3168 adds r1, #104 ; 0x68 11d66: 9801 ldr r0, [sp, #4] 11d68: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_KEYBOARD_PART_BTN); 11d6a: 2101 movs r1, #1 11d6c: 0020 movs r0, r4 11d6e: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BTN); 11d70: 2101 movs r1, #1 11d72: 0020 movs r0, r4 11d74: 47b8 blx r7 11d76: 0007 movs r7, r0 _lv_style_list_add_style(list, &styles->bg); 11d78: 6833 ldr r3, [r6, #0] 11d7a: 1d19 adds r1, r3, #4 11d7c: 47a8 blx r5 _lv_style_list_add_style(list, &styles->bg_click); 11d7e: 6831 ldr r1, [r6, #0] 11d80: 3108 adds r1, #8 11d82: 0038 movs r0, r7 11d84: 47a8 blx r5 break; 11d86: e78e b.n 11ca6 lv_obj_clean_style_list(obj, LV_BAR_PART_BG); 11d88: 2100 movs r1, #0 11d8a: 4ba5 ldr r3, [pc, #660] ; (12020 ) 11d8c: 4698 mov r8, r3 11d8e: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BAR_PART_BG); 11d90: 2100 movs r1, #0 11d92: 0020 movs r0, r4 11d94: 4fa3 ldr r7, [pc, #652] ; (12024 ) 11d96: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_bg); 11d98: 4ea3 ldr r6, [pc, #652] ; (12028 ) 11d9a: 6831 ldr r1, [r6, #0] 11d9c: 3124 adds r1, #36 ; 0x24 11d9e: 4da3 ldr r5, [pc, #652] ; (1202c ) 11da0: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_BAR_PART_INDIC); 11da2: 2101 movs r1, #1 11da4: 0020 movs r0, r4 11da6: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_BAR_PART_INDIC); 11da8: 2101 movs r1, #1 11daa: 0020 movs r0, r4 11dac: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_indic); 11dae: 6831 ldr r1, [r6, #0] 11db0: 3128 adds r1, #40 ; 0x28 11db2: 47a8 blx r5 break; 11db4: e777 b.n 11ca6 lv_obj_clean_style_list(obj, LV_SWITCH_PART_BG); 11db6: 2100 movs r1, #0 11db8: 4b99 ldr r3, [pc, #612] ; (12020 ) 11dba: 4698 mov r8, r3 11dbc: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_SWITCH_PART_BG); 11dbe: 2100 movs r1, #0 11dc0: 0020 movs r0, r4 11dc2: 4f98 ldr r7, [pc, #608] ; (12024 ) 11dc4: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_bg); 11dc6: 4e98 ldr r6, [pc, #608] ; (12028 ) 11dc8: 6831 ldr r1, [r6, #0] 11dca: 3124 adds r1, #36 ; 0x24 11dcc: 4d97 ldr r5, [pc, #604] ; (1202c ) 11dce: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SWITCH_PART_INDIC); 11dd0: 2101 movs r1, #1 11dd2: 0020 movs r0, r4 11dd4: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SWITCH_PART_INDIC); 11dd6: 2101 movs r1, #1 11dd8: 0020 movs r0, r4 11dda: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_indic); 11ddc: 6831 ldr r1, [r6, #0] 11dde: 3128 adds r1, #40 ; 0x28 11de0: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SWITCH_PART_KNOB); 11de2: 2102 movs r1, #2 11de4: 0020 movs r0, r4 11de6: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SWITCH_PART_KNOB); 11de8: 2102 movs r1, #2 11dea: 0020 movs r0, r4 11dec: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sw_knob); 11dee: 6831 ldr r1, [r6, #0] 11df0: 319c adds r1, #156 ; 0x9c 11df2: 47a8 blx r5 break; 11df4: e757 b.n 11ca6 lv_obj_clean_style_list(obj, LV_CANVAS_PART_MAIN); 11df6: 2100 movs r1, #0 11df8: 4b89 ldr r3, [pc, #548] ; (12020 ) 11dfa: 4798 blx r3 break; 11dfc: e753 b.n 11ca6 lv_obj_clean_style_list(obj, LV_IMG_PART_MAIN); 11dfe: 2100 movs r1, #0 11e00: 4b87 ldr r3, [pc, #540] ; (12020 ) 11e02: 4798 blx r3 break; 11e04: e74f b.n 11ca6 lv_obj_clean_style_list(obj, LV_IMG_PART_MAIN); 11e06: 2100 movs r1, #0 11e08: 4b85 ldr r3, [pc, #532] ; (12020 ) 11e0a: 4798 blx r3 break; 11e0c: e74b b.n 11ca6 lv_obj_clean_style_list(obj, LV_LABEL_PART_MAIN); 11e0e: 2100 movs r1, #0 11e10: 4b83 ldr r3, [pc, #524] ; (12020 ) 11e12: 4798 blx r3 break; 11e14: e747 b.n 11ca6 lv_obj_clean_style_list(obj, LV_LABEL_PART_MAIN); 11e16: 2100 movs r1, #0 11e18: 4b81 ldr r3, [pc, #516] ; (12020 ) 11e1a: 4798 blx r3 break; 11e1c: e743 b.n 11ca6 lv_obj_clean_style_list(obj, LV_ARC_PART_BG); 11e1e: 2100 movs r1, #0 11e20: 4b7f ldr r3, [pc, #508] ; (12020 ) 11e22: 4699 mov r9, r3 11e24: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_ARC_PART_BG); 11e26: 2100 movs r1, #0 11e28: 0020 movs r0, r4 11e2a: 4f7e ldr r7, [pc, #504] ; (12024 ) 11e2c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 11e2e: 4e7e ldr r6, [pc, #504] ; (12028 ) 11e30: 6833 ldr r3, [r6, #0] 11e32: 1d19 adds r1, r3, #4 11e34: 9001 str r0, [sp, #4] 11e36: 4d7d ldr r5, [pc, #500] ; (1202c ) 11e38: 47a8 blx r5 _lv_style_list_add_style(list, &styles->arc_bg); 11e3a: 6831 ldr r1, [r6, #0] 11e3c: 3120 adds r1, #32 11e3e: 9801 ldr r0, [sp, #4] 11e40: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_ARC_PART_INDIC); 11e42: 2101 movs r1, #1 11e44: 0020 movs r0, r4 11e46: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_ARC_PART_INDIC); 11e48: 2101 movs r1, #1 11e4a: 0020 movs r0, r4 11e4c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->arc_indic); 11e4e: 6831 ldr r1, [r6, #0] 11e50: 311c adds r1, #28 11e52: 47a8 blx r5 break; 11e54: e727 b.n 11ca6 lv_obj_clean_style_list(obj, LV_SPINNER_PART_BG); 11e56: 2100 movs r1, #0 11e58: 4b71 ldr r3, [pc, #452] ; (12020 ) 11e5a: 4698 mov r8, r3 11e5c: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_SPINNER_PART_BG); 11e5e: 2100 movs r1, #0 11e60: 0020 movs r0, r4 11e62: 4f70 ldr r7, [pc, #448] ; (12024 ) 11e64: 47b8 blx r7 _lv_style_list_add_style(list, &styles->arc_bg); 11e66: 4e70 ldr r6, [pc, #448] ; (12028 ) 11e68: 6831 ldr r1, [r6, #0] 11e6a: 3120 adds r1, #32 11e6c: 4d6f ldr r5, [pc, #444] ; (1202c ) 11e6e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SPINNER_PART_INDIC); 11e70: 2101 movs r1, #1 11e72: 0020 movs r0, r4 11e74: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SPINNER_PART_INDIC); 11e76: 2101 movs r1, #1 11e78: 0020 movs r0, r4 11e7a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->arc_indic); 11e7c: 6831 ldr r1, [r6, #0] 11e7e: 311c adds r1, #28 11e80: 47a8 blx r5 break; 11e82: e710 b.n 11ca6 lv_obj_clean_style_list(obj, LV_SLIDER_PART_BG); 11e84: 2100 movs r1, #0 11e86: 4b66 ldr r3, [pc, #408] ; (12020 ) 11e88: 4699 mov r9, r3 11e8a: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_BG); 11e8c: 2100 movs r1, #0 11e8e: 0020 movs r0, r4 11e90: 4f64 ldr r7, [pc, #400] ; (12024 ) 11e92: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_bg); 11e94: 4e64 ldr r6, [pc, #400] ; (12028 ) 11e96: 6831 ldr r1, [r6, #0] 11e98: 3124 adds r1, #36 ; 0x24 11e9a: 9001 str r0, [sp, #4] 11e9c: 4d63 ldr r5, [pc, #396] ; (1202c ) 11e9e: 47a8 blx r5 _lv_style_list_add_style(list, &styles->slider_bg); 11ea0: 6831 ldr r1, [r6, #0] 11ea2: 3194 adds r1, #148 ; 0x94 11ea4: 9801 ldr r0, [sp, #4] 11ea6: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SLIDER_PART_INDIC); 11ea8: 2101 movs r1, #1 11eaa: 0020 movs r0, r4 11eac: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_INDIC); 11eae: 2101 movs r1, #1 11eb0: 0020 movs r0, r4 11eb2: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_indic); 11eb4: 6831 ldr r1, [r6, #0] 11eb6: 3128 adds r1, #40 ; 0x28 11eb8: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SLIDER_PART_KNOB); 11eba: 2102 movs r1, #2 11ebc: 0020 movs r0, r4 11ebe: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_KNOB); 11ec0: 2102 movs r1, #2 11ec2: 0020 movs r0, r4 11ec4: 47b8 blx r7 _lv_style_list_add_style(list, &styles->slider_knob); 11ec6: 6831 ldr r1, [r6, #0] 11ec8: 3190 adds r1, #144 ; 0x90 11eca: 47a8 blx r5 break; 11ecc: e6eb b.n 11ca6 lv_obj_clean_style_list(obj, LV_CHECKBOX_PART_BG); 11ece: 2100 movs r1, #0 11ed0: 4b53 ldr r3, [pc, #332] ; (12020 ) 11ed2: 4698 mov r8, r3 11ed4: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BG); 11ed6: 2100 movs r1, #0 11ed8: 0020 movs r0, r4 11eda: 4e52 ldr r6, [pc, #328] ; (12024 ) 11edc: 47b0 blx r6 _lv_style_list_add_style(list, &styles->cb_bg); 11ede: 4f52 ldr r7, [pc, #328] ; (12028 ) 11ee0: 6839 ldr r1, [r7, #0] 11ee2: 314c adds r1, #76 ; 0x4c 11ee4: 4d51 ldr r5, [pc, #324] ; (1202c ) 11ee6: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CHECKBOX_PART_BULLET); 11ee8: 2140 movs r1, #64 ; 0x40 11eea: 0020 movs r0, r4 11eec: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BULLET); 11eee: 2140 movs r1, #64 ; 0x40 11ef0: 0020 movs r0, r4 11ef2: 47b0 blx r6 11ef4: 0006 movs r6, r0 _lv_style_list_add_style(list, &styles->btn); 11ef6: 6839 ldr r1, [r7, #0] 11ef8: 3110 adds r1, #16 11efa: 47a8 blx r5 _lv_style_list_add_style(list, &styles->cb_bullet); 11efc: 6839 ldr r1, [r7, #0] 11efe: 3150 adds r1, #80 ; 0x50 11f00: 0030 movs r0, r6 11f02: 47a8 blx r5 break; 11f04: e6cf b.n 11ca6 lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BG); 11f06: 2100 movs r1, #0 11f08: 4b45 ldr r3, [pc, #276] ; (12020 ) 11f0a: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BG); 11f0c: 2100 movs r1, #0 11f0e: 0020 movs r0, r4 11f10: 4b44 ldr r3, [pc, #272] ; (12024 ) 11f12: 4798 blx r3 11f14: 0005 movs r5, r0 _lv_style_list_add_style(list, &styles->bg); 11f16: 4f44 ldr r7, [pc, #272] ; (12028 ) 11f18: 683b ldr r3, [r7, #0] 11f1a: 1d19 adds r1, r3, #4 11f1c: 4e43 ldr r6, [pc, #268] ; (1202c ) 11f1e: 47b0 blx r6 _lv_style_list_add_style(list, &styles->mbox_bg); 11f20: 6839 ldr r1, [r7, #0] 11f22: 317c adds r1, #124 ; 0x7c 11f24: 0028 movs r0, r5 11f26: 47b0 blx r6 break; 11f28: e6bd b.n 11ca6 lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BTN_BG); 11f2a: 2140 movs r1, #64 ; 0x40 11f2c: 4b3c ldr r3, [pc, #240] ; (12020 ) 11f2e: 4698 mov r8, r3 11f30: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN_BG); 11f32: 2140 movs r1, #64 ; 0x40 11f34: 0020 movs r0, r4 11f36: 4f3b ldr r7, [pc, #236] ; (12024 ) 11f38: 47b8 blx r7 _lv_style_list_add_style(list, &styles->pad_small); 11f3a: 4e3b ldr r6, [pc, #236] ; (12028 ) 11f3c: 6831 ldr r1, [r6, #0] 11f3e: 3118 adds r1, #24 11f40: 4d3a ldr r5, [pc, #232] ; (1202c ) 11f42: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BTN); 11f44: 2141 movs r1, #65 ; 0x41 11f46: 0020 movs r0, r4 11f48: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN); 11f4a: 2141 movs r1, #65 ; 0x41 11f4c: 0020 movs r0, r4 11f4e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->btn); 11f50: 6831 ldr r1, [r6, #0] 11f52: 3110 adds r1, #16 11f54: 47a8 blx r5 break; 11f56: e6a6 b.n 11ca6 lv_obj_clean_style_list(obj, LV_LED_PART_MAIN); 11f58: 2100 movs r1, #0 11f5a: 4b31 ldr r3, [pc, #196] ; (12020 ) 11f5c: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_LED_PART_MAIN); 11f5e: 2100 movs r1, #0 11f60: 0020 movs r0, r4 11f62: 4b30 ldr r3, [pc, #192] ; (12024 ) 11f64: 4798 blx r3 _lv_style_list_add_style(list, &styles->led); 11f66: 4b30 ldr r3, [pc, #192] ; (12028 ) 11f68: 6819 ldr r1, [r3, #0] 11f6a: 316c adds r1, #108 ; 0x6c 11f6c: 4b2f ldr r3, [pc, #188] ; (1202c ) 11f6e: 4798 blx r3 break; 11f70: e699 b.n 11ca6 lv_obj_clean_style_list(obj, LV_PAGE_PART_BG); 11f72: 2100 movs r1, #0 11f74: 4b2a ldr r3, [pc, #168] ; (12020 ) 11f76: 4698 mov r8, r3 11f78: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_PAGE_PART_BG); 11f7a: 2100 movs r1, #0 11f7c: 0020 movs r0, r4 11f7e: 4f29 ldr r7, [pc, #164] ; (12024 ) 11f80: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 11f82: 4e29 ldr r6, [pc, #164] ; (12028 ) 11f84: 6833 ldr r3, [r6, #0] 11f86: 1d19 adds r1, r3, #4 11f88: 4d28 ldr r5, [pc, #160] ; (1202c ) 11f8a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_SCROLLABLE); 11f8c: 2140 movs r1, #64 ; 0x40 11f8e: 0020 movs r0, r4 11f90: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLABLE); 11f92: 2140 movs r1, #64 ; 0x40 11f94: 0020 movs r0, r4 11f96: 47b8 blx r7 _lv_style_list_add_style(list, &styles->pad_inner); 11f98: 6831 ldr r1, [r6, #0] 11f9a: 3114 adds r1, #20 11f9c: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_SCROLLBAR); 11f9e: 2101 movs r1, #1 11fa0: 0020 movs r0, r4 11fa2: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLBAR); 11fa4: 2101 movs r1, #1 11fa6: 0020 movs r0, r4 11fa8: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 11faa: 6831 ldr r1, [r6, #0] 11fac: 3180 adds r1, #128 ; 0x80 11fae: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_EDGE_FLASH); 11fb0: 2102 movs r1, #2 11fb2: 0020 movs r0, r4 11fb4: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_PAGE_PART_EDGE_FLASH); 11fb6: 2102 movs r1, #2 11fb8: 0020 movs r0, r4 11fba: 47b8 blx r7 _lv_style_list_add_style(list, &styles->edge_flash); 11fbc: 6831 ldr r1, [r6, #0] 11fbe: 3184 adds r1, #132 ; 0x84 11fc0: 47a8 blx r5 break; 11fc2: e670 b.n 11ca6 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_BG); 11fc4: 2100 movs r1, #0 11fc6: 4d16 ldr r5, [pc, #88] ; (12020 ) 11fc8: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_BG); 11fca: 2100 movs r1, #0 11fcc: 0020 movs r0, r4 11fce: 4b15 ldr r3, [pc, #84] ; (12024 ) 11fd0: 4698 mov r8, r3 11fd2: 4798 blx r3 _lv_style_list_add_style(list, &styles->scr); 11fd4: 4f14 ldr r7, [pc, #80] ; (12028 ) 11fd6: 6839 ldr r1, [r7, #0] 11fd8: 4e14 ldr r6, [pc, #80] ; (1202c ) 11fda: 47b0 blx r6 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_BG_SCRLLABLE); 11fdc: 2140 movs r1, #64 ; 0x40 11fde: 0020 movs r0, r4 11fe0: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_TAB_BG); 11fe2: 2141 movs r1, #65 ; 0x41 11fe4: 0020 movs r0, r4 11fe6: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_TAB_BG); 11fe8: 2141 movs r1, #65 ; 0x41 11fea: 0020 movs r0, r4 11fec: 47c0 blx r8 _lv_style_list_add_style(list, &styles->tabview_btns_bg); 11fee: 6839 ldr r1, [r7, #0] 11ff0: 31a8 adds r1, #168 ; 0xa8 11ff2: 47b0 blx r6 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_INDIC); 11ff4: 2143 movs r1, #67 ; 0x43 11ff6: 0020 movs r0, r4 11ff8: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_INDIC); 11ffa: 2143 movs r1, #67 ; 0x43 11ffc: 0020 movs r0, r4 11ffe: 47c0 blx r8 _lv_style_list_add_style(list, &styles->tabview_indic); 12000: 6839 ldr r1, [r7, #0] 12002: 31ac adds r1, #172 ; 0xac 12004: 47b0 blx r6 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_TAB_BTN); 12006: 2142 movs r1, #66 ; 0x42 12008: 0020 movs r0, r4 1200a: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_TAB_BTN); 1200c: 2142 movs r1, #66 ; 0x42 1200e: 0020 movs r0, r4 12010: 47c0 blx r8 _lv_style_list_add_style(list, &styles->tabview_btns); 12012: 6839 ldr r1, [r7, #0] 12014: 31a4 adds r1, #164 ; 0xa4 12016: 47b0 blx r6 break; 12018: e645 b.n 11ca6 1201a: 46c0 nop ; (mov r8, r8) 1201c: 0001c884 .word 0x0001c884 12020: 00001dd5 .word 0x00001dd5 12024: 00001cf9 .word 0x00001cf9 12028: 20004c38 .word 0x20004c38 1202c: 00004a1d .word 0x00004a1d 12030: 0000258d .word 0x0000258d lv_obj_clean_style_list(obj, LV_PAGE_PART_BG); 12034: 2100 movs r1, #0 12036: 4df3 ldr r5, [pc, #972] ; (12404 ) 12038: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_SCROLLABLE); 1203a: 2140 movs r1, #64 ; 0x40 1203c: 0020 movs r0, r4 1203e: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLABLE); 12040: 2140 movs r1, #64 ; 0x40 12042: 0020 movs r0, r4 12044: 4bf0 ldr r3, [pc, #960] ; (12408 ) 12046: 4798 blx r3 _lv_style_list_add_style(list, &styles->tabview_page_scrl); 12048: 4bf0 ldr r3, [pc, #960] ; (1240c ) 1204a: 6819 ldr r1, [r3, #0] 1204c: 31b0 adds r1, #176 ; 0xb0 1204e: 4bf0 ldr r3, [pc, #960] ; (12410 ) 12050: 4798 blx r3 break; 12052: e628 b.n 11ca6 lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_BG); 12054: 2100 movs r1, #0 12056: 4beb ldr r3, [pc, #940] ; (12404 ) 12058: 4698 mov r8, r3 1205a: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_BG); 1205c: 2100 movs r1, #0 1205e: 0020 movs r0, r4 12060: 4fe9 ldr r7, [pc, #932] ; (12408 ) 12062: 47b8 blx r7 _lv_style_list_add_style(list, &styles->scr); 12064: 4ee9 ldr r6, [pc, #932] ; (1240c ) 12066: 6831 ldr r1, [r6, #0] 12068: 4de9 ldr r5, [pc, #932] ; (12410 ) 1206a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_SCROLLBAR); 1206c: 2101 movs r1, #1 1206e: 0020 movs r0, r4 12070: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_SCROLLBAR); 12072: 2101 movs r1, #1 12074: 0020 movs r0, r4 12076: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 12078: 6831 ldr r1, [r6, #0] 1207a: 3180 adds r1, #128 ; 0x80 1207c: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_EDGE_FLASH); 1207e: 2102 movs r1, #2 12080: 0020 movs r0, r4 12082: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_EDGE_FLASH); 12084: 2102 movs r1, #2 12086: 0020 movs r0, r4 12088: 47b8 blx r7 _lv_style_list_add_style(list, &styles->edge_flash); 1208a: 6831 ldr r1, [r6, #0] 1208c: 3184 adds r1, #132 ; 0x84 1208e: 47a8 blx r5 break; 12090: e609 b.n 11ca6 lv_obj_clean_style_list(obj, LV_ROLLER_PART_BG); 12092: 2100 movs r1, #0 12094: 4bdb ldr r3, [pc, #876] ; (12404 ) 12096: 4699 mov r9, r3 12098: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_ROLLER_PART_BG); 1209a: 2100 movs r1, #0 1209c: 0020 movs r0, r4 1209e: 4fda ldr r7, [pc, #872] ; (12408 ) 120a0: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 120a2: 4eda ldr r6, [pc, #872] ; (1240c ) 120a4: 6833 ldr r3, [r6, #0] 120a6: 1d19 adds r1, r3, #4 120a8: 9001 str r0, [sp, #4] 120aa: 4dd9 ldr r5, [pc, #868] ; (12410 ) 120ac: 47a8 blx r5 _lv_style_list_add_style(list, &styles->roller_bg); 120ae: 6831 ldr r1, [r6, #0] 120b0: 3188 adds r1, #136 ; 0x88 120b2: 9801 ldr r0, [sp, #4] 120b4: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_ROLLER_PART_SELECTED); 120b6: 2103 movs r1, #3 120b8: 0020 movs r0, r4 120ba: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_ROLLER_PART_SELECTED); 120bc: 2103 movs r1, #3 120be: 0020 movs r0, r4 120c0: 47b8 blx r7 _lv_style_list_add_style(list, &styles->roller_sel); 120c2: 6831 ldr r1, [r6, #0] 120c4: 318c adds r1, #140 ; 0x8c 120c6: 47a8 blx r5 break; 120c8: e5ed b.n 11ca6 lv_obj_clean_style_list(obj, LV_OBJMASK_PART_MAIN); 120ca: 2100 movs r1, #0 120cc: 4bcd ldr r3, [pc, #820] ; (12404 ) 120ce: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_OBJMASK_PART_MAIN); 120d0: 2100 movs r1, #0 120d2: 0020 movs r0, r4 120d4: 4bcc ldr r3, [pc, #816] ; (12408 ) 120d6: 4798 blx r3 break; 120d8: e5e5 b.n 11ca6 lv_obj_clean_style_list(obj, LV_LIST_PART_BG); 120da: 2100 movs r1, #0 120dc: 4bc9 ldr r3, [pc, #804] ; (12404 ) 120de: 4698 mov r8, r3 120e0: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_LIST_PART_BG); 120e2: 2100 movs r1, #0 120e4: 0020 movs r0, r4 120e6: 4fc8 ldr r7, [pc, #800] ; (12408 ) 120e8: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 120ea: 4ec8 ldr r6, [pc, #800] ; (1240c ) 120ec: 6833 ldr r3, [r6, #0] 120ee: 1d19 adds r1, r3, #4 120f0: 9001 str r0, [sp, #4] 120f2: 4dc7 ldr r5, [pc, #796] ; (12410 ) 120f4: 47a8 blx r5 _lv_style_list_add_style(list, &styles->list_bg); 120f6: 6831 ldr r1, [r6, #0] 120f8: 3174 adds r1, #116 ; 0x74 120fa: 9801 ldr r0, [sp, #4] 120fc: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_LIST_PART_SCROLLABLE); 120fe: 2140 movs r1, #64 ; 0x40 12100: 0020 movs r0, r4 12102: 47c0 blx r8 lv_obj_clean_style_list(obj, LV_LIST_PART_SCROLLBAR); 12104: 2101 movs r1, #1 12106: 0020 movs r0, r4 12108: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_LIST_PART_SCROLLBAR); 1210a: 2101 movs r1, #1 1210c: 0020 movs r0, r4 1210e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 12110: 6831 ldr r1, [r6, #0] 12112: 3180 adds r1, #128 ; 0x80 12114: 47a8 blx r5 break; 12116: e5c6 b.n 11ca6 lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 12118: 2100 movs r1, #0 1211a: 4bba ldr r3, [pc, #744] ; (12404 ) 1211c: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 1211e: 2100 movs r1, #0 12120: 0020 movs r0, r4 12122: 4bb9 ldr r3, [pc, #740] ; (12408 ) 12124: 4798 blx r3 _lv_style_list_add_style(list, &styles->list_btn); 12126: 4bb9 ldr r3, [pc, #740] ; (1240c ) 12128: 6819 ldr r1, [r3, #0] 1212a: 3178 adds r1, #120 ; 0x78 1212c: 4bb8 ldr r3, [pc, #736] ; (12410 ) 1212e: 4798 blx r3 break; 12130: e5b9 b.n 11ca6 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_MAIN); 12132: 2100 movs r1, #0 12134: 4bb3 ldr r3, [pc, #716] ; (12404 ) 12136: 4699 mov r9, r3 12138: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_MAIN); 1213a: 2100 movs r1, #0 1213c: 0020 movs r0, r4 1213e: 4fb2 ldr r7, [pc, #712] ; (12408 ) 12140: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 12142: 4eb2 ldr r6, [pc, #712] ; (1240c ) 12144: 6833 ldr r3, [r6, #0] 12146: 1d19 adds r1, r3, #4 12148: 9001 str r0, [sp, #4] 1214a: 4db1 ldr r5, [pc, #708] ; (12410 ) 1214c: 47a8 blx r5 _lv_style_list_add_style(list, &styles->bg_click); 1214e: 6831 ldr r1, [r6, #0] 12150: 3108 adds r1, #8 12152: 9801 ldr r0, [sp, #4] 12154: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 12156: 6831 ldr r1, [r6, #0] 12158: 3118 adds r1, #24 1215a: 9801 ldr r0, [sp, #4] 1215c: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_LIST); 1215e: 2140 movs r1, #64 ; 0x40 12160: 0020 movs r0, r4 12162: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_LIST); 12164: 2140 movs r1, #64 ; 0x40 12166: 0020 movs r0, r4 12168: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 1216a: 6833 ldr r3, [r6, #0] 1216c: 1d19 adds r1, r3, #4 1216e: 9001 str r0, [sp, #4] 12170: 47a8 blx r5 _lv_style_list_add_style(list, &styles->ddlist_page); 12172: 6831 ldr r1, [r6, #0] 12174: 3154 adds r1, #84 ; 0x54 12176: 9801 ldr r0, [sp, #4] 12178: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SCROLLBAR); 1217a: 2141 movs r1, #65 ; 0x41 1217c: 0020 movs r0, r4 1217e: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SCROLLBAR); 12180: 2141 movs r1, #65 ; 0x41 12182: 0020 movs r0, r4 12184: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 12186: 6831 ldr r1, [r6, #0] 12188: 3180 adds r1, #128 ; 0x80 1218a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SELECTED); 1218c: 2142 movs r1, #66 ; 0x42 1218e: 0020 movs r0, r4 12190: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SELECTED); 12192: 2142 movs r1, #66 ; 0x42 12194: 0020 movs r0, r4 12196: 47b8 blx r7 _lv_style_list_add_style(list, &styles->ddlist_sel); 12198: 6831 ldr r1, [r6, #0] 1219a: 3158 adds r1, #88 ; 0x58 1219c: 47a8 blx r5 break; 1219e: e582 b.n 11ca6 lv_obj_clean_style_list(obj, LV_CHART_PART_BG); 121a0: 2100 movs r1, #0 121a2: 4b98 ldr r3, [pc, #608] ; (12404 ) 121a4: 4699 mov r9, r3 121a6: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_CHART_PART_BG); 121a8: 2100 movs r1, #0 121aa: 0020 movs r0, r4 121ac: 4f96 ldr r7, [pc, #600] ; (12408 ) 121ae: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 121b0: 4e96 ldr r6, [pc, #600] ; (1240c ) 121b2: 6833 ldr r3, [r6, #0] 121b4: 1d19 adds r1, r3, #4 121b6: 9001 str r0, [sp, #4] 121b8: 4d95 ldr r5, [pc, #596] ; (12410 ) 121ba: 47a8 blx r5 _lv_style_list_add_style(list, &styles->chart_bg); 121bc: 6831 ldr r1, [r6, #0] 121be: 3140 adds r1, #64 ; 0x40 121c0: 9801 ldr r0, [sp, #4] 121c2: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 121c4: 6831 ldr r1, [r6, #0] 121c6: 3118 adds r1, #24 121c8: 9801 ldr r0, [sp, #4] 121ca: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CHART_PART_SERIES_BG); 121cc: 2101 movs r1, #1 121ce: 0020 movs r0, r4 121d0: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES_BG); 121d2: 2101 movs r1, #1 121d4: 0020 movs r0, r4 121d6: 47b8 blx r7 _lv_style_list_add_style(list, &styles->pad_small); 121d8: 6831 ldr r1, [r6, #0] 121da: 3118 adds r1, #24 121dc: 9001 str r0, [sp, #4] 121de: 47a8 blx r5 _lv_style_list_add_style(list, &styles->chart_series_bg); 121e0: 6831 ldr r1, [r6, #0] 121e2: 3144 adds r1, #68 ; 0x44 121e4: 9801 ldr r0, [sp, #4] 121e6: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CHART_PART_SERIES); 121e8: 2102 movs r1, #2 121ea: 0020 movs r0, r4 121ec: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES); 121ee: 2102 movs r1, #2 121f0: 0020 movs r0, r4 121f2: 47b8 blx r7 _lv_style_list_add_style(list, &styles->chart_series); 121f4: 6831 ldr r1, [r6, #0] 121f6: 3148 adds r1, #72 ; 0x48 121f8: 47a8 blx r5 break; 121fa: e554 b.n 11ca6 lv_obj_clean_style_list(obj, LV_TABLE_PART_BG); 121fc: 2100 movs r1, #0 121fe: 4b81 ldr r3, [pc, #516] ; (12404 ) 12200: 4698 mov r8, r3 12202: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_TABLE_PART_BG); 12204: 2100 movs r1, #0 12206: 0020 movs r0, r4 12208: 4f7f ldr r7, [pc, #508] ; (12408 ) 1220a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 1220c: 4e7f ldr r6, [pc, #508] ; (1240c ) 1220e: 6833 ldr r3, [r6, #0] 12210: 1d19 adds r1, r3, #4 12212: 4d7f ldr r5, [pc, #508] ; (12410 ) 12214: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL1); 12216: 2101 movs r1, #1 12218: 0020 movs r0, r4 1221a: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL1); 1221c: 2101 movs r1, #1 1221e: 0020 movs r0, r4 12220: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 12222: 6831 ldr r1, [r6, #0] 12224: 31a0 adds r1, #160 ; 0xa0 12226: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL2); 12228: 2102 movs r1, #2 1222a: 0020 movs r0, r4 1222c: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL2); 1222e: 2102 movs r1, #2 12230: 0020 movs r0, r4 12232: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 12234: 6831 ldr r1, [r6, #0] 12236: 31a0 adds r1, #160 ; 0xa0 12238: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL3); 1223a: 2103 movs r1, #3 1223c: 0020 movs r0, r4 1223e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL3); 12240: 2103 movs r1, #3 12242: 0020 movs r0, r4 12244: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 12246: 6831 ldr r1, [r6, #0] 12248: 31a0 adds r1, #160 ; 0xa0 1224a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL4); 1224c: 2104 movs r1, #4 1224e: 0020 movs r0, r4 12250: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL4); 12252: 2104 movs r1, #4 12254: 0020 movs r0, r4 12256: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 12258: 6831 ldr r1, [r6, #0] 1225a: 31a0 adds r1, #160 ; 0xa0 1225c: 47a8 blx r5 break; 1225e: e522 b.n 11ca6 lv_obj_clean_style_list(obj, LV_WIN_PART_BG); 12260: 2100 movs r1, #0 12262: 4b68 ldr r3, [pc, #416] ; (12404 ) 12264: 4698 mov r8, r3 12266: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_WIN_PART_BG); 12268: 2100 movs r1, #0 1226a: 0020 movs r0, r4 1226c: 4f66 ldr r7, [pc, #408] ; (12408 ) 1226e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->scr); 12270: 4e66 ldr r6, [pc, #408] ; (1240c ) 12272: 6831 ldr r1, [r6, #0] 12274: 4d66 ldr r5, [pc, #408] ; (12410 ) 12276: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_WIN_PART_SCROLLBAR); 12278: 2142 movs r1, #66 ; 0x42 1227a: 0020 movs r0, r4 1227c: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_SCROLLBAR); 1227e: 2142 movs r1, #66 ; 0x42 12280: 0020 movs r0, r4 12282: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 12284: 6831 ldr r1, [r6, #0] 12286: 3180 adds r1, #128 ; 0x80 12288: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_WIN_PART_CONTENT_SCROLLABLE); 1228a: 2141 movs r1, #65 ; 0x41 1228c: 0020 movs r0, r4 1228e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_CONTENT_SCROLLABLE); 12290: 2141 movs r1, #65 ; 0x41 12292: 0020 movs r0, r4 12294: 47b8 blx r7 _lv_style_list_add_style(list, &styles->tabview_page_scrl); 12296: 6831 ldr r1, [r6, #0] 12298: 31b0 adds r1, #176 ; 0xb0 1229a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_WIN_PART_HEADER); 1229c: 2140 movs r1, #64 ; 0x40 1229e: 0020 movs r0, r4 122a0: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_HEADER); 122a2: 2140 movs r1, #64 ; 0x40 122a4: 0020 movs r0, r4 122a6: 47b8 blx r7 _lv_style_list_add_style(list, &styles->tabview_btns_bg); 122a8: 6831 ldr r1, [r6, #0] 122aa: 31a8 adds r1, #168 ; 0xa8 122ac: 47a8 blx r5 break; 122ae: e4fa b.n 11ca6 lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 122b0: 2100 movs r1, #0 122b2: 4b54 ldr r3, [pc, #336] ; (12404 ) 122b4: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 122b6: 2100 movs r1, #0 122b8: 0020 movs r0, r4 122ba: 4b53 ldr r3, [pc, #332] ; (12408 ) 122bc: 4798 blx r3 _lv_style_list_add_style(list, &styles->tabview_btns); 122be: 4b53 ldr r3, [pc, #332] ; (1240c ) 122c0: 6819 ldr r1, [r3, #0] 122c2: 31a4 adds r1, #164 ; 0xa4 122c4: 4b52 ldr r3, [pc, #328] ; (12410 ) 122c6: 4798 blx r3 break; 122c8: e4ed b.n 11ca6 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_BG); 122ca: 2100 movs r1, #0 122cc: 4b4d ldr r3, [pc, #308] ; (12404 ) 122ce: 4699 mov r9, r3 122d0: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_BG); 122d2: 2100 movs r1, #0 122d4: 0020 movs r0, r4 122d6: 4f4c ldr r7, [pc, #304] ; (12408 ) 122d8: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 122da: 4e4c ldr r6, [pc, #304] ; (1240c ) 122dc: 6833 ldr r3, [r6, #0] 122de: 1d19 adds r1, r3, #4 122e0: 9001 str r0, [sp, #4] 122e2: 4d4b ldr r5, [pc, #300] ; (12410 ) 122e4: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 122e6: 6831 ldr r1, [r6, #0] 122e8: 3118 adds r1, #24 122ea: 9801 ldr r0, [sp, #4] 122ec: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_PLACEHOLDER); 122ee: 2104 movs r1, #4 122f0: 0020 movs r0, r4 122f2: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_PLACEHOLDER); 122f4: 2104 movs r1, #4 122f6: 0020 movs r0, r4 122f8: 47b8 blx r7 _lv_style_list_add_style(list, &styles->ta_placeholder); 122fa: 6831 ldr r1, [r6, #0] 122fc: 31b8 adds r1, #184 ; 0xb8 122fe: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_CURSOR); 12300: 2103 movs r1, #3 12302: 0020 movs r0, r4 12304: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_CURSOR); 12306: 2103 movs r1, #3 12308: 0020 movs r0, r4 1230a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->ta_cursor); 1230c: 6831 ldr r1, [r6, #0] 1230e: 31b4 adds r1, #180 ; 0xb4 12310: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_SCROLLBAR); 12312: 2101 movs r1, #1 12314: 0020 movs r0, r4 12316: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_SCROLLBAR); 12318: 2101 movs r1, #1 1231a: 0020 movs r0, r4 1231c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 1231e: 6831 ldr r1, [r6, #0] 12320: 3180 adds r1, #128 ; 0x80 12322: 47a8 blx r5 break; 12324: e4bf b.n 11ca6 lv_obj_clean_style_list(obj, LV_SPINBOX_PART_BG); 12326: 2100 movs r1, #0 12328: 4b36 ldr r3, [pc, #216] ; (12404 ) 1232a: 4699 mov r9, r3 1232c: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_BG); 1232e: 2100 movs r1, #0 12330: 0020 movs r0, r4 12332: 4f35 ldr r7, [pc, #212] ; (12408 ) 12334: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 12336: 4e35 ldr r6, [pc, #212] ; (1240c ) 12338: 6833 ldr r3, [r6, #0] 1233a: 1d19 adds r1, r3, #4 1233c: 9001 str r0, [sp, #4] 1233e: 4d34 ldr r5, [pc, #208] ; (12410 ) 12340: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 12342: 6831 ldr r1, [r6, #0] 12344: 3118 adds r1, #24 12346: 9801 ldr r0, [sp, #4] 12348: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SPINBOX_PART_CURSOR); 1234a: 2103 movs r1, #3 1234c: 0020 movs r0, r4 1234e: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_CURSOR); 12350: 2103 movs r1, #3 12352: 0020 movs r0, r4 12354: 47b8 blx r7 _lv_style_list_add_style(list, &styles->spinbox_cursor); 12356: 6831 ldr r1, [r6, #0] 12358: 3198 adds r1, #152 ; 0x98 1235a: 47a8 blx r5 break; 1235c: e4a3 b.n 11ca6 lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 1235e: 2100 movs r1, #0 12360: 4b28 ldr r3, [pc, #160] ; (12404 ) 12362: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 12364: 2100 movs r1, #0 12366: 0020 movs r0, r4 12368: 4b27 ldr r3, [pc, #156] ; (12408 ) 1236a: 4798 blx r3 1236c: 0005 movs r5, r0 _lv_style_list_add_style(list, &styles->bg); 1236e: 4f27 ldr r7, [pc, #156] ; (1240c ) 12370: 683b ldr r3, [r7, #0] 12372: 1d19 adds r1, r3, #4 12374: 4e26 ldr r6, [pc, #152] ; (12410 ) 12376: 47b0 blx r6 _lv_style_list_add_style(list, &styles->bg_click); 12378: 6839 ldr r1, [r7, #0] 1237a: 3108 adds r1, #8 1237c: 0028 movs r0, r5 1237e: 47b0 blx r6 break; 12380: e491 b.n 11ca6 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_BG); 12382: 2100 movs r1, #0 12384: 4b1f ldr r3, [pc, #124] ; (12404 ) 12386: 4698 mov r8, r3 12388: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_BG); 1238a: 2100 movs r1, #0 1238c: 0020 movs r0, r4 1238e: 4f1e ldr r7, [pc, #120] ; (12408 ) 12390: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 12392: 4e1e ldr r6, [pc, #120] ; (1240c ) 12394: 6833 ldr r3, [r6, #0] 12396: 1d19 adds r1, r3, #4 12398: 4d1d ldr r5, [pc, #116] ; (12410 ) 1239a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_DATE); 1239c: 2103 movs r1, #3 1239e: 0020 movs r0, r4 123a0: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_DATE); 123a2: 2103 movs r1, #3 123a4: 0020 movs r0, r4 123a6: 47b8 blx r7 _lv_style_list_add_style(list, &styles->calendar_date_nums); 123a8: 6831 ldr r1, [r6, #0] 123aa: 312c adds r1, #44 ; 0x2c 123ac: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_HEADER); 123ae: 2101 movs r1, #1 123b0: 0020 movs r0, r4 123b2: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_HEADER); 123b4: 2101 movs r1, #1 123b6: 0020 movs r0, r4 123b8: 47b8 blx r7 _lv_style_list_add_style(list, &styles->calendar_header); 123ba: 6831 ldr r1, [r6, #0] 123bc: 3130 adds r1, #48 ; 0x30 123be: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_DAY_NAMES); 123c0: 2102 movs r1, #2 123c2: 0020 movs r0, r4 123c4: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_DAY_NAMES); 123c6: 2102 movs r1, #2 123c8: 0020 movs r0, r4 123ca: 47b8 blx r7 _lv_style_list_add_style(list, &styles->calendar_daynames); 123cc: 6831 ldr r1, [r6, #0] 123ce: 3134 adds r1, #52 ; 0x34 123d0: 47a8 blx r5 break; 123d2: e468 b.n 11ca6 lv_obj_clean_style_list(obj, LV_CPICKER_PART_MAIN); 123d4: 2100 movs r1, #0 123d6: 4b0b ldr r3, [pc, #44] ; (12404 ) 123d8: 4698 mov r8, r3 123da: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_CPICKER_PART_MAIN); 123dc: 2100 movs r1, #0 123de: 0020 movs r0, r4 123e0: 4f09 ldr r7, [pc, #36] ; (12408 ) 123e2: 47b8 blx r7 _lv_style_list_add_style(list, &styles->cpicker_bg); 123e4: 4e09 ldr r6, [pc, #36] ; (1240c ) 123e6: 6831 ldr r1, [r6, #0] 123e8: 3138 adds r1, #56 ; 0x38 123ea: 4d09 ldr r5, [pc, #36] ; (12410 ) 123ec: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CPICKER_PART_KNOB); 123ee: 2101 movs r1, #1 123f0: 0020 movs r0, r4 123f2: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CPICKER_PART_KNOB); 123f4: 2101 movs r1, #1 123f6: 0020 movs r0, r4 123f8: 47b8 blx r7 _lv_style_list_add_style(list, &styles->cpicker_indic); 123fa: 6831 ldr r1, [r6, #0] 123fc: 313c adds r1, #60 ; 0x3c 123fe: 47a8 blx r5 break; 12400: e451 b.n 11ca6 12402: 46c0 nop ; (mov r8, r8) 12404: 00001dd5 .word 0x00001dd5 12408: 00001cf9 .word 0x00001cf9 1240c: 20004c38 .word 0x20004c38 12410: 00004a1d .word 0x00004a1d lv_obj_clean_style_list(obj, LV_LINEMETER_PART_MAIN); 12414: 2100 movs r1, #0 12416: 4b1b ldr r3, [pc, #108] ; (12484 ) 12418: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_LINEMETER_PART_MAIN); 1241a: 2100 movs r1, #0 1241c: 0020 movs r0, r4 1241e: 4b1a ldr r3, [pc, #104] ; (12488 ) 12420: 4798 blx r3 12422: 0005 movs r5, r0 _lv_style_list_add_style(list, &styles->bg); 12424: 4f19 ldr r7, [pc, #100] ; (1248c ) 12426: 683b ldr r3, [r7, #0] 12428: 1d19 adds r1, r3, #4 1242a: 4e19 ldr r6, [pc, #100] ; (12490 ) 1242c: 47b0 blx r6 _lv_style_list_add_style(list, &styles->lmeter); 1242e: 6839 ldr r1, [r7, #0] 12430: 3170 adds r1, #112 ; 0x70 12432: 0028 movs r0, r5 12434: 47b0 blx r6 break; 12436: e436 b.n 11ca6 lv_obj_clean_style_list(obj, LV_GAUGE_PART_MAIN); 12438: 2100 movs r1, #0 1243a: 4b12 ldr r3, [pc, #72] ; (12484 ) 1243c: 4699 mov r9, r3 1243e: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAIN); 12440: 2100 movs r1, #0 12442: 0020 movs r0, r4 12444: 4f10 ldr r7, [pc, #64] ; (12488 ) 12446: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 12448: 4e10 ldr r6, [pc, #64] ; (1248c ) 1244a: 6833 ldr r3, [r6, #0] 1244c: 1d19 adds r1, r3, #4 1244e: 9001 str r0, [sp, #4] 12450: 4d0f ldr r5, [pc, #60] ; (12490 ) 12452: 47a8 blx r5 _lv_style_list_add_style(list, &styles->gauge_main); 12454: 6831 ldr r1, [r6, #0] 12456: 315c adds r1, #92 ; 0x5c 12458: 9801 ldr r0, [sp, #4] 1245a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_GAUGE_PART_MAJOR); 1245c: 2101 movs r1, #1 1245e: 0020 movs r0, r4 12460: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAJOR); 12462: 2101 movs r1, #1 12464: 0020 movs r0, r4 12466: 47b8 blx r7 _lv_style_list_add_style(list, &styles->gauge_strong); 12468: 6831 ldr r1, [r6, #0] 1246a: 3160 adds r1, #96 ; 0x60 1246c: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_GAUGE_PART_NEEDLE); 1246e: 2102 movs r1, #2 12470: 0020 movs r0, r4 12472: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_NEEDLE); 12474: 2102 movs r1, #2 12476: 0020 movs r0, r4 12478: 47b8 blx r7 _lv_style_list_add_style(list, &styles->gauge_needle); 1247a: 6831 ldr r1, [r6, #0] 1247c: 3164 adds r1, #100 ; 0x64 1247e: 47a8 blx r5 break; 12480: f7ff fc11 bl 11ca6 12484: 00001dd5 .word 0x00001dd5 12488: 00001cf9 .word 0x00001cf9 1248c: 20004c38 .word 0x20004c38 12490: 00004a1d .word 0x00004a1d 00012494 : /********************** * STATIC FUNCTIONS **********************/ static void style_init_reset(lv_style_t * style) { 12494: b510 push {r4, lr} if(inited) lv_style_reset(style); 12496: 4b05 ldr r3, [pc, #20] ; (124ac ) 12498: 781b ldrb r3, [r3, #0] 1249a: 2b00 cmp r3, #0 1249c: d102 bne.n 124a4 else lv_style_init(style); 1249e: 4b04 ldr r3, [pc, #16] ; (124b0 ) 124a0: 4798 blx r3 } 124a2: bd10 pop {r4, pc} if(inited) lv_style_reset(style); 124a4: 4b03 ldr r3, [pc, #12] ; (124b4 ) 124a6: 4798 blx r3 124a8: e7fb b.n 124a2 124aa: 46c0 nop ; (mov r8, r8) 124ac: 20004c34 .word 0x20004c34 124b0: 0000494d .word 0x0000494d 124b4: 00004b49 .word 0x00004b49 000124b8 : { 124b8: b5f8 push {r3, r4, r5, r6, r7, lr} 124ba: 46ce mov lr, r9 124bc: 4647 mov r7, r8 124be: b580 push {r7, lr} style_init_reset(&styles->scr); 124c0: 4cf9 ldr r4, [pc, #996] ; (128a8 ) 124c2: 6820 ldr r0, [r4, #0] 124c4: 4bf9 ldr r3, [pc, #996] ; (128ac ) 124c6: 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) 124c8: 22ff movs r2, #255 ; 0xff 124ca: 212c movs r1, #44 ; 0x2c 124cc: 6820 ldr r0, [r4, #0] 124ce: 4bf8 ldr r3, [pc, #992] ; (128b0 ) 124d0: 4798 blx r3 lv_style_set_bg_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR); 124d2: 6820 ldr r0, [r4, #0] 124d4: 4bf7 ldr r3, [pc, #988] ; (128b4 ) 124d6: 699b ldr r3, [r3, #24] 124d8: 079b lsls r3, r3, #30 124da: d501 bpl.n 124e0 124dc: f000 fe5d bl 1319a 124e0: 2308 movs r3, #8 124e2: 2112 movs r1, #18 124e4: 220b movs r2, #11 124e6: 0149 lsls r1, r1, #5 124e8: 02db lsls r3, r3, #11 124ea: 430a orrs r2, r1 124ec: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 124ee: 2129 movs r1, #41 ; 0x29 124f0: 4bf1 ldr r3, [pc, #964] ; (128b8 ) 124f2: 4798 blx r3 lv_style_set_text_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 124f4: 4bec ldr r3, [pc, #944] ; (128a8 ) 124f6: 6818 ldr r0, [r3, #0] 124f8: 4bee ldr r3, [pc, #952] ; (128b4 ) 124fa: 699b ldr r3, [r3, #24] 124fc: 079b lsls r3, r3, #30 124fe: d501 bpl.n 12504 12500: f000 fe50 bl 131a4 12504: 231c movs r3, #28 12506: 213a movs r1, #58 ; 0x3a 12508: 221d movs r2, #29 1250a: 0149 lsls r1, r1, #5 1250c: 02db lsls r3, r3, #11 1250e: 430a orrs r2, r1 12510: 431a orrs r2, r3 _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) 12512: 49ea ldr r1, [pc, #936] ; (128bc ) 12514: 4be8 ldr r3, [pc, #928] ; (128b8 ) 12516: 4798 blx r3 lv_style_set_value_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 12518: 4be3 ldr r3, [pc, #908] ; (128a8 ) 1251a: 6818 ldr r0, [r3, #0] 1251c: 4be5 ldr r3, [pc, #916] ; (128b4 ) 1251e: 699b ldr r3, [r3, #24] 12520: 079b lsls r3, r3, #30 12522: d501 bpl.n 12528 12524: f000 fe43 bl 131ae 12528: 231c movs r3, #28 1252a: 213a movs r1, #58 ; 0x3a 1252c: 221d movs r2, #29 1252e: 0149 lsls r1, r1, #5 12530: 02db lsls r3, r3, #11 12532: 430a orrs r2, r1 12534: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 12536: 2179 movs r1, #121 ; 0x79 12538: 4bdf ldr r3, [pc, #892] ; (128b8 ) 1253a: 4798 blx r3 lv_style_set_text_font(&styles->scr, LV_STATE_DEFAULT, theme.font_normal); 1253c: 4edd ldr r6, [pc, #884] ; (128b4 ) 1253e: 4cda ldr r4, [pc, #872] ; (128a8 ) _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) 12540: 68f2 ldr r2, [r6, #12] 12542: 49df ldr r1, [pc, #892] ; (128c0 ) 12544: 6820 ldr r0, [r4, #0] 12546: 4ddf ldr r5, [pc, #892] ; (128c4 ) 12548: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 1254a: 68f2 ldr r2, [r6, #12] 1254c: 217e movs r1, #126 ; 0x7e 1254e: 6820 ldr r0, [r4, #0] 12550: 47a8 blx r5 style_init_reset(&styles->bg); 12552: 6823 ldr r3, [r4, #0] 12554: 1d18 adds r0, r3, #4 12556: 4bd5 ldr r3, [pc, #852] ; (128ac ) 12558: 4798 blx r3 lv_style_set_radius(&styles->bg, LV_STATE_DEFAULT, LV_DPX(8)); 1255a: 6824 ldr r4, [r4, #0] 1255c: 3404 adds r4, #4 1255e: 2000 movs r0, #0 12560: 4bd9 ldr r3, [pc, #868] ; (128c8 ) 12562: 4798 blx r3 12564: 300a adds r0, #10 12566: 00c0 lsls r0, r0, #3 12568: 2340 movs r3, #64 ; 0x40 1256a: 33ff adds r3, #255 ; 0xff 1256c: 2201 movs r2, #1 1256e: 4298 cmp r0, r3 12570: d901 bls.n 12576 12572: f000 fe21 bl 131b8 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 12576: 2101 movs r1, #1 12578: 0020 movs r0, r4 1257a: 4bd4 ldr r3, [pc, #848] ; (128cc ) 1257c: 4798 blx r3 lv_style_set_bg_opa(&styles->bg, LV_STATE_DEFAULT, LV_OPA_COVER); 1257e: 4cca ldr r4, [pc, #808] ; (128a8 ) 12580: 6823 ldr r3, [r4, #0] 12582: 1d18 adds r0, r3, #4 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 12584: 22ff movs r2, #255 ; 0xff 12586: 212c movs r1, #44 ; 0x2c 12588: 4bc9 ldr r3, [pc, #804] ; (128b0 ) 1258a: 4798 blx r3 lv_style_set_bg_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG); 1258c: 6820 ldr r0, [r4, #0] 1258e: 3004 adds r0, #4 12590: 4bc8 ldr r3, [pc, #800] ; (128b4 ) 12592: 699b ldr r3, [r3, #24] 12594: 079b lsls r3, r3, #30 12596: d501 bpl.n 1259c 12598: f000 fe19 bl 131ce 1259c: 230b movs r3, #11 1259e: 2118 movs r1, #24 125a0: 220e movs r2, #14 125a2: 0149 lsls r1, r1, #5 125a4: 02db lsls r3, r3, #11 125a6: 430a orrs r2, r1 125a8: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 125aa: 2129 movs r1, #41 ; 0x29 125ac: 4bc2 ldr r3, [pc, #776] ; (128b8 ) 125ae: 4798 blx r3 lv_style_set_border_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_BORDER); 125b0: 4bbd ldr r3, [pc, #756] ; (128a8 ) 125b2: 6818 ldr r0, [r3, #0] 125b4: 3004 adds r0, #4 125b6: 4bbf ldr r3, [pc, #764] ; (128b4 ) 125b8: 699b ldr r3, [r3, #24] 125ba: 079b lsls r3, r3, #30 125bc: d501 bpl.n 125c2 125be: f000 fe0b bl 131d8 125c2: 2310 movs r3, #16 125c4: 2122 movs r1, #34 ; 0x22 125c6: 2212 movs r2, #18 125c8: 0149 lsls r1, r1, #5 125ca: 02db lsls r3, r3, #11 125cc: 430a orrs r2, r1 125ce: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 125d0: 2139 movs r1, #57 ; 0x39 125d2: 4db9 ldr r5, [pc, #740] ; (128b8 ) 125d4: 47a8 blx r5 lv_style_set_border_color(&styles->bg, LV_STATE_FOCUSED, theme.color_primary); 125d6: 4cb4 ldr r4, [pc, #720] ; (128a8 ) 125d8: 6823 ldr r3, [r4, #0] 125da: 1d18 adds r0, r3, #4 125dc: 4eb5 ldr r6, [pc, #724] ; (128b4 ) 125de: 88b2 ldrh r2, [r6, #4] 125e0: 49bb ldr r1, [pc, #748] ; (128d0 ) 125e2: 47a8 blx r5 lv_style_set_border_color(&styles->bg, LV_STATE_EDITED, theme.color_secondary); 125e4: 6823 ldr r3, [r4, #0] 125e6: 1d18 adds r0, r3, #4 125e8: 88f2 ldrh r2, [r6, #6] 125ea: 49ba ldr r1, [pc, #744] ; (128d4 ) 125ec: 47a8 blx r5 lv_style_set_border_width(&styles->bg, LV_STATE_DEFAULT, BORDER_WIDTH); 125ee: 6824 ldr r4, [r4, #0] 125f0: 3404 adds r4, #4 125f2: 2000 movs r0, #0 125f4: 4bb4 ldr r3, [pc, #720] ; (128c8 ) 125f6: 4798 blx r3 125f8: 3028 adds r0, #40 ; 0x28 125fa: 0040 lsls r0, r0, #1 125fc: 2340 movs r3, #64 ; 0x40 125fe: 33ff adds r3, #255 ; 0xff 12600: 2201 movs r2, #1 12602: 4298 cmp r0, r3 12604: d901 bls.n 1260a 12606: f000 fdec bl 131e2 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 1260a: 2130 movs r1, #48 ; 0x30 1260c: 0020 movs r0, r4 1260e: 4daf ldr r5, [pc, #700] ; (128cc ) 12610: 47a8 blx r5 lv_style_set_border_post(&styles->bg, LV_STATE_DEFAULT, true); 12612: 4ca5 ldr r4, [pc, #660] ; (128a8 ) 12614: 6823 ldr r3, [r4, #0] 12616: 1d18 adds r0, r3, #4 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 12618: 2201 movs r2, #1 1261a: 2133 movs r1, #51 ; 0x33 1261c: 47a8 blx r5 lv_style_set_text_font(&styles->bg, LV_STATE_DEFAULT, theme.font_normal); 1261e: 4da5 ldr r5, [pc, #660] ; (128b4 ) 12620: 6823 ldr r3, [r4, #0] 12622: 1d18 adds r0, r3, #4 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 12624: 68ea ldr r2, [r5, #12] 12626: 49a6 ldr r1, [pc, #664] ; (128c0 ) 12628: 4ba6 ldr r3, [pc, #664] ; (128c4 ) 1262a: 4798 blx r3 lv_style_set_text_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 1262c: 6820 ldr r0, [r4, #0] 1262e: 3004 adds r0, #4 12630: 69ab ldr r3, [r5, #24] 12632: 079b lsls r3, r3, #30 12634: d501 bpl.n 1263a 12636: f000 fddf bl 131f8 1263a: 231f movs r3, #31 1263c: 213f movs r1, #63 ; 0x3f 1263e: 221f movs r2, #31 12640: 0149 lsls r1, r1, #5 12642: 02db lsls r3, r3, #11 12644: 430a orrs r2, r1 12646: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 12648: 499c ldr r1, [pc, #624] ; (128bc ) 1264a: 4b9b ldr r3, [pc, #620] ; (128b8 ) 1264c: 4798 blx r3 lv_style_set_value_font(&styles->bg, LV_STATE_DEFAULT, theme.font_normal); 1264e: 4c99 ldr r4, [pc, #612] ; (128b4 ) 12650: 4d95 ldr r5, [pc, #596] ; (128a8 ) 12652: 682b ldr r3, [r5, #0] 12654: 1d18 adds r0, r3, #4 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 12656: 68e2 ldr r2, [r4, #12] 12658: 217e movs r1, #126 ; 0x7e 1265a: 4b9a ldr r3, [pc, #616] ; (128c4 ) 1265c: 4798 blx r3 lv_style_set_value_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 1265e: 6828 ldr r0, [r5, #0] 12660: 3004 adds r0, #4 12662: 69a3 ldr r3, [r4, #24] 12664: 079b lsls r3, r3, #30 12666: d501 bpl.n 1266c 12668: f000 fdcb bl 13202 1266c: 231f movs r3, #31 1266e: 213f movs r1, #63 ; 0x3f 12670: 221f movs r2, #31 12672: 0149 lsls r1, r1, #5 12674: 02db lsls r3, r3, #11 12676: 430a orrs r2, r1 12678: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 1267a: 2179 movs r1, #121 ; 0x79 1267c: 4b8e ldr r3, [pc, #568] ; (128b8 ) 1267e: 4798 blx r3 lv_style_set_image_recolor(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 12680: 4b89 ldr r3, [pc, #548] ; (128a8 ) 12682: 6818 ldr r0, [r3, #0] 12684: 3004 adds r0, #4 12686: 4b8b ldr r3, [pc, #556] ; (128b4 ) 12688: 699b ldr r3, [r3, #24] 1268a: 079b lsls r3, r3, #30 1268c: d501 bpl.n 12692 1268e: f000 fdbd bl 1320c 12692: 231f movs r3, #31 12694: 213f movs r1, #63 ; 0x3f 12696: 221f movs r2, #31 12698: 0149 lsls r1, r1, #5 1269a: 02db lsls r3, r3, #11 1269c: 430a orrs r2, r1 1269e: 431a orrs r2, r3 _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) 126a0: 498d ldr r1, [pc, #564] ; (128d8 ) 126a2: 4b85 ldr r3, [pc, #532] ; (128b8 ) 126a4: 4798 blx r3 lv_style_set_line_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 126a6: 4b80 ldr r3, [pc, #512] ; (128a8 ) 126a8: 6818 ldr r0, [r3, #0] 126aa: 3004 adds r0, #4 126ac: 4b81 ldr r3, [pc, #516] ; (128b4 ) 126ae: 699b ldr r3, [r3, #24] 126b0: 079b lsls r3, r3, #30 126b2: d501 bpl.n 126b8 126b4: f000 fdaf bl 13216 126b8: 231f movs r3, #31 126ba: 213f movs r1, #63 ; 0x3f 126bc: 221f movs r2, #31 126be: 0149 lsls r1, r1, #5 126c0: 02db lsls r3, r3, #11 126c2: 430a orrs r2, r1 126c4: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 126c6: 2199 movs r1, #153 ; 0x99 126c8: 4b7b ldr r3, [pc, #492] ; (128b8 ) 126ca: 4798 blx r3 lv_style_set_line_width(&styles->bg, LV_STATE_DEFAULT, 1); 126cc: 4c76 ldr r4, [pc, #472] ; (128a8 ) 126ce: 6823 ldr r3, [r4, #0] 126d0: 1d18 adds r0, r3, #4 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 126d2: 2201 movs r2, #1 126d4: 2190 movs r1, #144 ; 0x90 126d6: 4b7d ldr r3, [pc, #500] ; (128cc ) 126d8: 4798 blx r3 lv_style_set_pad_left(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 126da: 6825 ldr r5, [r4, #0] 126dc: 3504 adds r5, #4 126de: 2000 movs r0, #0 126e0: 4b7e ldr r3, [pc, #504] ; (128dc ) 126e2: 4798 blx r3 126e4: 2801 cmp r0, #1 126e6: d801 bhi.n 126ec 126e8: f000 fd9a bl 13220 126ec: 2000 movs r0, #0 126ee: 4b76 ldr r3, [pc, #472] ; (128c8 ) 126f0: 4798 blx r3 126f2: 0103 lsls r3, r0, #4 126f4: 1a18 subs r0, r3, r0 126f6: 0040 lsls r0, r0, #1 126f8: 3050 adds r0, #80 ; 0x50 126fa: 2340 movs r3, #64 ; 0x40 126fc: 33ff adds r3, #255 ; 0xff 126fe: 2401 movs r4, #1 12700: 4298 cmp r0, r3 12702: d901 bls.n 12708 12704: f000 fda5 bl 13252 12708: 2000 movs r0, #0 1270a: 4b6f ldr r3, [pc, #444] ; (128c8 ) 1270c: 4798 blx r3 1270e: 0003 movs r3, r0 12710: 3328 adds r3, #40 ; 0x28 12712: 005b lsls r3, r3, #1 12714: 2140 movs r1, #64 ; 0x40 12716: 31ff adds r1, #255 ; 0xff 12718: 2201 movs r2, #1 1271a: 428b cmp r3, r1 1271c: d901 bls.n 12722 1271e: f000 fda5 bl 1326c 12722: 18a2 adds r2, r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 12724: b212 sxth r2, r2 12726: 2112 movs r1, #18 12728: 0028 movs r0, r5 1272a: 4b68 ldr r3, [pc, #416] ; (128cc ) 1272c: 4798 blx r3 lv_style_set_pad_right(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 1272e: 4b5e ldr r3, [pc, #376] ; (128a8 ) 12730: 681d ldr r5, [r3, #0] 12732: 3504 adds r5, #4 12734: 2000 movs r0, #0 12736: 4b69 ldr r3, [pc, #420] ; (128dc ) 12738: 4798 blx r3 1273a: 2801 cmp r0, #1 1273c: d801 bhi.n 12742 1273e: f000 fda0 bl 13282 12742: 2000 movs r0, #0 12744: 4b60 ldr r3, [pc, #384] ; (128c8 ) 12746: 4798 blx r3 12748: 0103 lsls r3, r0, #4 1274a: 1a18 subs r0, r3, r0 1274c: 0040 lsls r0, r0, #1 1274e: 3050 adds r0, #80 ; 0x50 12750: 2340 movs r3, #64 ; 0x40 12752: 33ff adds r3, #255 ; 0xff 12754: 2401 movs r4, #1 12756: 4298 cmp r0, r3 12758: d901 bls.n 1275e 1275a: f000 fdab bl 132b4 1275e: 2000 movs r0, #0 12760: 4b59 ldr r3, [pc, #356] ; (128c8 ) 12762: 4798 blx r3 12764: 0003 movs r3, r0 12766: 3328 adds r3, #40 ; 0x28 12768: 005b lsls r3, r3, #1 1276a: 2140 movs r1, #64 ; 0x40 1276c: 31ff adds r1, #255 ; 0xff 1276e: 2201 movs r2, #1 12770: 428b cmp r3, r1 12772: d901 bls.n 12778 12774: f000 fdab bl 132ce 12778: 18a2 adds r2, r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 1277a: b212 sxth r2, r2 1277c: 2113 movs r1, #19 1277e: 0028 movs r0, r5 12780: 4b52 ldr r3, [pc, #328] ; (128cc ) 12782: 4798 blx r3 lv_style_set_pad_top(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 12784: 4b48 ldr r3, [pc, #288] ; (128a8 ) 12786: 681d ldr r5, [r3, #0] 12788: 3504 adds r5, #4 1278a: 2000 movs r0, #0 1278c: 4b53 ldr r3, [pc, #332] ; (128dc ) 1278e: 4798 blx r3 12790: 2801 cmp r0, #1 12792: d801 bhi.n 12798 12794: f000 fda6 bl 132e4 12798: 2000 movs r0, #0 1279a: 4b4b ldr r3, [pc, #300] ; (128c8 ) 1279c: 4798 blx r3 1279e: 0103 lsls r3, r0, #4 127a0: 1a18 subs r0, r3, r0 127a2: 0040 lsls r0, r0, #1 127a4: 3050 adds r0, #80 ; 0x50 127a6: 2340 movs r3, #64 ; 0x40 127a8: 33ff adds r3, #255 ; 0xff 127aa: 2401 movs r4, #1 127ac: 4298 cmp r0, r3 127ae: d901 bls.n 127b4 127b0: f000 fdb1 bl 13316 127b4: 2000 movs r0, #0 127b6: 4b44 ldr r3, [pc, #272] ; (128c8 ) 127b8: 4798 blx r3 127ba: 0003 movs r3, r0 127bc: 3328 adds r3, #40 ; 0x28 127be: 005b lsls r3, r3, #1 127c0: 2140 movs r1, #64 ; 0x40 127c2: 31ff adds r1, #255 ; 0xff 127c4: 2201 movs r2, #1 127c6: 428b cmp r3, r1 127c8: d901 bls.n 127ce 127ca: f000 fdb1 bl 13330 127ce: 18a2 adds r2, r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 127d0: b212 sxth r2, r2 127d2: 2110 movs r1, #16 127d4: 0028 movs r0, r5 127d6: 4b3d ldr r3, [pc, #244] ; (128cc ) 127d8: 4798 blx r3 lv_style_set_pad_bottom(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 127da: 4b33 ldr r3, [pc, #204] ; (128a8 ) 127dc: 681d ldr r5, [r3, #0] 127de: 3504 adds r5, #4 127e0: 2000 movs r0, #0 127e2: 4b3e ldr r3, [pc, #248] ; (128dc ) 127e4: 4798 blx r3 127e6: 2801 cmp r0, #1 127e8: d801 bhi.n 127ee 127ea: f000 fdac bl 13346 127ee: 2000 movs r0, #0 127f0: 4b35 ldr r3, [pc, #212] ; (128c8 ) 127f2: 4798 blx r3 127f4: 0103 lsls r3, r0, #4 127f6: 1a18 subs r0, r3, r0 127f8: 0040 lsls r0, r0, #1 127fa: 3050 adds r0, #80 ; 0x50 127fc: 2340 movs r3, #64 ; 0x40 127fe: 33ff adds r3, #255 ; 0xff 12800: 2401 movs r4, #1 12802: 4298 cmp r0, r3 12804: d901 bls.n 1280a 12806: f000 fdb7 bl 13378 1280a: 2000 movs r0, #0 1280c: 4b2e ldr r3, [pc, #184] ; (128c8 ) 1280e: 4798 blx r3 12810: 0003 movs r3, r0 12812: 3328 adds r3, #40 ; 0x28 12814: 005b lsls r3, r3, #1 12816: 2140 movs r1, #64 ; 0x40 12818: 31ff adds r1, #255 ; 0xff 1281a: 2201 movs r2, #1 1281c: 428b cmp r3, r1 1281e: d901 bls.n 12824 12820: f000 fdb7 bl 13392 12824: 18a2 adds r2, r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 12826: b212 sxth r2, r2 12828: 2111 movs r1, #17 1282a: 0028 movs r0, r5 1282c: 4b27 ldr r3, [pc, #156] ; (128cc ) 1282e: 4798 blx r3 lv_style_set_pad_inner(&styles->bg, LV_STATE_DEFAULT, PAD_DEF); 12830: 4b1d ldr r3, [pc, #116] ; (128a8 ) 12832: 681c ldr r4, [r3, #0] 12834: 3404 adds r4, #4 12836: 2000 movs r0, #0 12838: 4b28 ldr r3, [pc, #160] ; (128dc ) 1283a: 4798 blx r3 1283c: 2801 cmp r0, #1 1283e: d801 bhi.n 12844 12840: f000 fdb2 bl 133a8 12844: 2000 movs r0, #0 12846: 4b20 ldr r3, [pc, #128] ; (128c8 ) 12848: 4798 blx r3 1284a: 0103 lsls r3, r0, #4 1284c: 1a1b subs r3, r3, r0 1284e: 005b lsls r3, r3, #1 12850: 3350 adds r3, #80 ; 0x50 12852: 2140 movs r1, #64 ; 0x40 12854: 31ff adds r1, #255 ; 0xff 12856: 2201 movs r2, #1 12858: 428b cmp r3, r1 1285a: d901 bls.n 12860 1285c: f000 fdbd bl 133da _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 12860: 2114 movs r1, #20 12862: 0020 movs r0, r4 12864: 4d19 ldr r5, [pc, #100] ; (128cc ) 12866: 47a8 blx r5 lv_style_set_transition_time(&styles->bg, LV_STATE_DEFAULT, TRANSITION_TIME); 12868: 4c0f ldr r4, [pc, #60] ; (128a8 ) 1286a: 6823 ldr r3, [r4, #0] 1286c: 1d18 adds r0, r3, #4 _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) 1286e: 2296 movs r2, #150 ; 0x96 12870: 21b0 movs r1, #176 ; 0xb0 12872: 47a8 blx r5 lv_style_set_transition_prop_6(&styles->bg, LV_STATE_DEFAULT, LV_STYLE_BORDER_COLOR); 12874: 6823 ldr r3, [r4, #0] 12876: 1d18 adds r0, r3, #4 _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) 12878: 2239 movs r2, #57 ; 0x39 1287a: 21b7 movs r1, #183 ; 0xb7 1287c: 47a8 blx r5 style_init_reset(&styles->bg_sec); 1287e: 6820 ldr r0, [r4, #0] 12880: 300c adds r0, #12 12882: 4b0a ldr r3, [pc, #40] ; (128ac ) 12884: 4798 blx r3 lv_style_copy(&styles->bg_sec, &styles->bg); 12886: 6820 ldr r0, [r4, #0] 12888: 1d01 adds r1, r0, #4 1288a: 300c adds r0, #12 1288c: 4b14 ldr r3, [pc, #80] ; (128e0 ) 1288e: 4798 blx r3 lv_style_set_bg_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC); 12890: 6820 ldr r0, [r4, #0] 12892: 300c adds r0, #12 12894: 4b07 ldr r3, [pc, #28] ; (128b4 ) 12896: 699b ldr r3, [r3, #24] 12898: 079b lsls r3, r3, #30 1289a: d501 bpl.n 128a0 1289c: f000 fdaa bl 133f4 128a0: 2308 movs r3, #8 128a2: 2112 movs r1, #18 128a4: 2209 movs r2, #9 128a6: e01d b.n 128e4 128a8: 20004c38 .word 0x20004c38 128ac: 00012495 .word 0x00012495 128b0: 00004fb5 .word 0x00004fb5 128b4: 20004c3c .word 0x20004c3c 128b8: 00004e55 .word 0x00004e55 128bc: 00008089 .word 0x00008089 128c0: 0000808e .word 0x0000808e 128c4: 00005109 .word 0x00005109 128c8: 0000f665 .word 0x0000f665 128cc: 00004cf5 .word 0x00004cf5 128d0: 00000239 .word 0x00000239 128d4: 00000439 .word 0x00000439 128d8: 000080a9 .word 0x000080a9 128dc: 0000f681 .word 0x0000f681 128e0: 00004b9d .word 0x00004b9d 128e4: 0149 lsls r1, r1, #5 128e6: 02db lsls r3, r3, #11 128e8: 430a orrs r2, r1 128ea: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 128ec: 2129 movs r1, #41 ; 0x29 128ee: 4bfb ldr r3, [pc, #1004] ; (12cdc ) 128f0: 4798 blx r3 lv_style_set_border_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_BORDER); 128f2: 4bfb ldr r3, [pc, #1004] ; (12ce0 ) 128f4: 6818 ldr r0, [r3, #0] 128f6: 300c adds r0, #12 128f8: 4bfa ldr r3, [pc, #1000] ; (12ce4 ) 128fa: 699b ldr r3, [r3, #24] 128fc: 079b lsls r3, r3, #30 128fe: d501 bpl.n 12904 12900: f000 fd7d bl 133fe 12904: 2308 movs r3, #8 12906: 2110 movs r1, #16 12908: 2208 movs r2, #8 1290a: 0149 lsls r1, r1, #5 1290c: 02db lsls r3, r3, #11 1290e: 430a orrs r2, r1 12910: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 12912: 2139 movs r1, #57 ; 0x39 12914: 4bf1 ldr r3, [pc, #964] ; (12cdc ) 12916: 4798 blx r3 lv_style_set_text_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 12918: 4bf1 ldr r3, [pc, #964] ; (12ce0 ) 1291a: 6818 ldr r0, [r3, #0] 1291c: 300c adds r0, #12 1291e: 4bf1 ldr r3, [pc, #964] ; (12ce4 ) 12920: 699b ldr r3, [r3, #24] 12922: 079b lsls r3, r3, #30 12924: d501 bpl.n 1292a 12926: f000 fd6f bl 13408 1292a: 2314 movs r3, #20 1292c: 212a movs r1, #42 ; 0x2a 1292e: 2215 movs r2, #21 12930: 0149 lsls r1, r1, #5 12932: 02db lsls r3, r3, #11 12934: 430a orrs r2, r1 12936: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 12938: 49eb ldr r1, [pc, #940] ; (12ce8 ) 1293a: 4be8 ldr r3, [pc, #928] ; (12cdc ) 1293c: 4798 blx r3 lv_style_set_value_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 1293e: 4be8 ldr r3, [pc, #928] ; (12ce0 ) 12940: 6818 ldr r0, [r3, #0] 12942: 300c adds r0, #12 12944: 4be7 ldr r3, [pc, #924] ; (12ce4 ) 12946: 699b ldr r3, [r3, #24] 12948: 079b lsls r3, r3, #30 1294a: d501 bpl.n 12950 1294c: f000 fd61 bl 13412 12950: 2314 movs r3, #20 12952: 212a movs r1, #42 ; 0x2a 12954: 2215 movs r2, #21 12956: 0149 lsls r1, r1, #5 12958: 02db lsls r3, r3, #11 1295a: 430a orrs r2, r1 1295c: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 1295e: 2179 movs r1, #121 ; 0x79 12960: 4bde ldr r3, [pc, #888] ; (12cdc ) 12962: 4798 blx r3 lv_style_set_image_recolor(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 12964: 4bde ldr r3, [pc, #888] ; (12ce0 ) 12966: 6818 ldr r0, [r3, #0] 12968: 300c adds r0, #12 1296a: 4bde ldr r3, [pc, #888] ; (12ce4 ) 1296c: 699b ldr r3, [r3, #24] 1296e: 079b lsls r3, r3, #30 12970: d501 bpl.n 12976 12972: f000 fd53 bl 1341c 12976: 2314 movs r3, #20 12978: 212a movs r1, #42 ; 0x2a 1297a: 2215 movs r2, #21 1297c: 0149 lsls r1, r1, #5 1297e: 02db lsls r3, r3, #11 12980: 430a orrs r2, r1 12982: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 12984: 49d9 ldr r1, [pc, #868] ; (12cec ) 12986: 4bd5 ldr r3, [pc, #852] ; (12cdc ) 12988: 4798 blx r3 lv_style_set_line_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 1298a: 4bd5 ldr r3, [pc, #852] ; (12ce0 ) 1298c: 6818 ldr r0, [r3, #0] 1298e: 300c adds r0, #12 12990: 4bd4 ldr r3, [pc, #848] ; (12ce4 ) 12992: 699b ldr r3, [r3, #24] 12994: 079b lsls r3, r3, #30 12996: d501 bpl.n 1299c 12998: f000 fd45 bl 13426 1299c: 2314 movs r3, #20 1299e: 212a movs r1, #42 ; 0x2a 129a0: 2215 movs r2, #21 129a2: 0149 lsls r1, r1, #5 129a4: 02db lsls r3, r3, #11 129a6: 430a orrs r2, r1 129a8: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 129aa: 2199 movs r1, #153 ; 0x99 129ac: 4bcb ldr r3, [pc, #812] ; (12cdc ) 129ae: 4798 blx r3 style_init_reset(&styles->bg_click); 129b0: 4ccb ldr r4, [pc, #812] ; (12ce0 ) 129b2: 6820 ldr r0, [r4, #0] 129b4: 3008 adds r0, #8 129b6: 4bce ldr r3, [pc, #824] ; (12cf0 ) 129b8: 4798 blx r3 lv_style_set_bg_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_PR); 129ba: 6820 ldr r0, [r4, #0] 129bc: 3008 adds r0, #8 129be: 4bc9 ldr r3, [pc, #804] ; (12ce4 ) 129c0: 699b ldr r3, [r3, #24] 129c2: 079b lsls r3, r3, #30 129c4: d501 bpl.n 129ca 129c6: f000 fd33 bl 13430 129ca: 2309 movs r3, #9 129cc: 2113 movs r1, #19 129ce: 220a movs r2, #10 129d0: 0149 lsls r1, r1, #5 129d2: 02db lsls r3, r3, #11 129d4: 430a orrs r2, r1 129d6: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 129d8: 49c6 ldr r1, [pc, #792] ; (12cf4 ) 129da: 4fc0 ldr r7, [pc, #768] ; (12cdc ) 129dc: 47b8 blx r7 lv_style_set_bg_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_CHK); 129de: 4ec0 ldr r6, [pc, #768] ; (12ce0 ) 129e0: 6830 ldr r0, [r6, #0] 129e2: 3008 adds r0, #8 129e4: 4dbf ldr r5, [pc, #764] ; (12ce4 ) 129e6: 88aa ldrh r2, [r5, #4] 129e8: 212a movs r1, #42 ; 0x2a 129ea: 31ff adds r1, #255 ; 0xff 129ec: 47b8 blx r7 lv_style_set_bg_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_PR_CHK); 129ee: 6834 ldr r4, [r6, #0] 129f0: 3408 adds r4, #8 129f2: 88a8 ldrh r0, [r5, #4] 129f4: 2133 movs r1, #51 ; 0x33 129f6: 4bc0 ldr r3, [pc, #768] ; (12cf8 ) 129f8: 4798 blx r3 129fa: 1c02 adds r2, r0, #0 129fc: 49bf ldr r1, [pc, #764] ; (12cfc ) 129fe: 0020 movs r0, r4 12a00: 47b8 blx r7 lv_style_set_bg_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_DIS); 12a02: 6830 ldr r0, [r6, #0] 12a04: 3008 adds r0, #8 12a06: 69ab ldr r3, [r5, #24] 12a08: 079b lsls r3, r3, #30 12a0a: d501 bpl.n 12a10 12a0c: f000 fd15 bl 1343a 12a10: 230b movs r3, #11 12a12: 2118 movs r1, #24 12a14: 220e movs r2, #14 12a16: 0149 lsls r1, r1, #5 12a18: 02db lsls r3, r3, #11 12a1a: 430a orrs r2, r1 12a1c: 431a orrs r2, r3 12a1e: 49b8 ldr r1, [pc, #736] ; (12d00 ) 12a20: 4fae ldr r7, [pc, #696] ; (12cdc ) 12a22: 47b8 blx r7 lv_style_set_border_width(&styles->bg_click, LV_STATE_CHECKED, 0); 12a24: 4dae ldr r5, [pc, #696] ; (12ce0 ) 12a26: 6828 ldr r0, [r5, #0] 12a28: 3008 adds r0, #8 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 12a2a: 2200 movs r2, #0 12a2c: 2198 movs r1, #152 ; 0x98 12a2e: 0049 lsls r1, r1, #1 12a30: 4bb4 ldr r3, [pc, #720] ; (12d04 ) 12a32: 4798 blx r3 lv_style_set_border_color(&styles->bg_click, LV_STATE_FOCUSED | LV_STATE_PRESSED, lv_color_darken(theme.color_primary, 12a34: 682c ldr r4, [r5, #0] 12a36: 3408 adds r4, #8 12a38: 4eaa ldr r6, [pc, #680] ; (12ce4 ) 12a3a: 88b0 ldrh r0, [r6, #4] 12a3c: 2133 movs r1, #51 ; 0x33 12a3e: 4bae ldr r3, [pc, #696] ; (12cf8 ) 12a40: 4798 blx r3 12a42: 1c02 adds r2, r0, #0 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 12a44: 49b0 ldr r1, [pc, #704] ; (12d08 ) 12a46: 0020 movs r0, r4 12a48: 47b8 blx r7 lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_BORDER_PR); 12a4a: 6828 ldr r0, [r5, #0] 12a4c: 3008 adds r0, #8 12a4e: 69b3 ldr r3, [r6, #24] 12a50: 079b lsls r3, r3, #30 12a52: d501 bpl.n 12a58 12a54: f000 fcf6 bl 13444 12a58: 230b movs r3, #11 12a5a: 2119 movs r1, #25 12a5c: 220d movs r2, #13 12a5e: 0149 lsls r1, r1, #5 12a60: 02db lsls r3, r3, #11 12a62: 430a orrs r2, r1 12a64: 431a orrs r2, r3 12a66: 49a9 ldr r1, [pc, #676] ; (12d0c ) 12a68: 4b9c ldr r3, [pc, #624] ; (12cdc ) 12a6a: 4798 blx r3 lv_style_set_border_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_BORDER_CHK); 12a6c: 4b9c ldr r3, [pc, #624] ; (12ce0 ) 12a6e: 6818 ldr r0, [r3, #0] 12a70: 3008 adds r0, #8 12a72: 4b9c ldr r3, [pc, #624] ; (12ce4 ) 12a74: 699b ldr r3, [r3, #24] 12a76: 079b lsls r3, r3, #30 12a78: d501 bpl.n 12a7e 12a7a: f000 fce8 bl 1344e 12a7e: 230b movs r3, #11 12a80: 2119 movs r1, #25 12a82: 220d movs r2, #13 12a84: 0149 lsls r1, r1, #5 12a86: 02db lsls r3, r3, #11 12a88: 430a orrs r2, r1 12a8a: 431a orrs r2, r3 12a8c: 213a movs r1, #58 ; 0x3a 12a8e: 31ff adds r1, #255 ; 0xff 12a90: 4b92 ldr r3, [pc, #584] ; (12cdc ) 12a92: 4798 blx r3 lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_BORDER_CHK_PR); 12a94: 4b92 ldr r3, [pc, #584] ; (12ce0 ) 12a96: 6818 ldr r0, [r3, #0] 12a98: 3008 adds r0, #8 12a9a: 4b92 ldr r3, [pc, #584] ; (12ce4 ) 12a9c: 699b ldr r3, [r3, #24] 12a9e: 079b lsls r3, r3, #30 12aa0: d501 bpl.n 12aa6 12aa2: f000 fcd9 bl 13458 12aa6: 230b movs r3, #11 12aa8: 2119 movs r1, #25 12aaa: 220d movs r2, #13 12aac: 0149 lsls r1, r1, #5 12aae: 02db lsls r3, r3, #11 12ab0: 430a orrs r2, r1 12ab2: 431a orrs r2, r3 12ab4: 4996 ldr r1, [pc, #600] ; (12d10 ) 12ab6: 4b89 ldr r3, [pc, #548] ; (12cdc ) 12ab8: 4798 blx r3 lv_style_set_border_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_BORDER_DIS); 12aba: 4b89 ldr r3, [pc, #548] ; (12ce0 ) 12abc: 6818 ldr r0, [r3, #0] 12abe: 3008 adds r0, #8 12ac0: 4b88 ldr r3, [pc, #544] ; (12ce4 ) 12ac2: 699b ldr r3, [r3, #24] 12ac4: 079b lsls r3, r3, #30 12ac6: d501 bpl.n 12acc 12ac8: f000 fccb bl 13462 12acc: 230b movs r3, #11 12ace: 2119 movs r1, #25 12ad0: 220d movs r2, #13 12ad2: 0149 lsls r1, r1, #5 12ad4: 02db lsls r3, r3, #11 12ad6: 430a orrs r2, r1 12ad8: 431a orrs r2, r3 12ada: 498e ldr r1, [pc, #568] ; (12d14 ) 12adc: 4b7f ldr r3, [pc, #508] ; (12cdc ) 12ade: 4798 blx r3 lv_style_set_text_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 12ae0: 4b7f ldr r3, [pc, #508] ; (12ce0 ) 12ae2: 6818 ldr r0, [r3, #0] 12ae4: 3008 adds r0, #8 12ae6: 4b7f ldr r3, [pc, #508] ; (12ce4 ) 12ae8: 699b ldr r3, [r3, #24] 12aea: 079b lsls r3, r3, #30 12aec: d501 bpl.n 12af2 12aee: f000 fcbd bl 1346c 12af2: 231f movs r3, #31 12af4: 213f movs r1, #63 ; 0x3f 12af6: 221f movs r2, #31 12af8: 241f movs r4, #31 12afa: 46a0 mov r8, r4 12afc: 0149 lsls r1, r1, #5 12afe: 02db lsls r3, r3, #11 12b00: 430a orrs r2, r1 12b02: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 12b04: 4984 ldr r1, [pc, #528] ; (12d18 ) 12b06: 4f75 ldr r7, [pc, #468] ; (12cdc ) 12b08: 47b8 blx r7 lv_style_set_text_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 12b0a: 4e75 ldr r6, [pc, #468] ; (12ce0 ) 12b0c: 6830 ldr r0, [r6, #0] 12b0e: 3008 adds r0, #8 12b10: 25fc movs r5, #252 ; 0xfc 12b12: 00ed lsls r5, r5, #3 12b14: 4642 mov r2, r8 12b16: 432a orrs r2, r5 12b18: 4c80 ldr r4, [pc, #512] ; (12d1c ) 12b1a: 4322 orrs r2, r4 12b1c: 4980 ldr r1, [pc, #512] ; (12d20 ) 12b1e: 47b8 blx r7 lv_style_set_text_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_TEXT_CHK_PR); 12b20: 6830 ldr r0, [r6, #0] 12b22: 3008 adds r0, #8 12b24: 4642 mov r2, r8 12b26: 432a orrs r2, r5 12b28: 4322 orrs r2, r4 12b2a: 497e ldr r1, [pc, #504] ; (12d24 ) 12b2c: 47b8 blx r7 lv_style_set_text_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 12b2e: 6830 ldr r0, [r6, #0] 12b30: 3008 adds r0, #8 12b32: 4b6c ldr r3, [pc, #432] ; (12ce4 ) 12b34: 699b ldr r3, [r3, #24] 12b36: 079b lsls r3, r3, #30 12b38: d501 bpl.n 12b3e 12b3a: f000 fc9c bl 13476 12b3e: 2226 movs r2, #38 ; 0x26 12b40: 2313 movs r3, #19 12b42: 0152 lsls r2, r2, #5 12b44: 02d9 lsls r1, r3, #11 12b46: 431a orrs r2, r3 12b48: 430a orrs r2, r1 12b4a: 4977 ldr r1, [pc, #476] ; (12d28 ) 12b4c: 4b63 ldr r3, [pc, #396] ; (12cdc ) 12b4e: 4798 blx r3 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 12b50: 4b63 ldr r3, [pc, #396] ; (12ce0 ) 12b52: 6818 ldr r0, [r3, #0] 12b54: 3008 adds r0, #8 12b56: 4b63 ldr r3, [pc, #396] ; (12ce4 ) 12b58: 699b ldr r3, [r3, #24] 12b5a: 079b lsls r3, r3, #30 12b5c: d501 bpl.n 12b62 12b5e: f000 fc8e bl 1347e 12b62: 231f movs r3, #31 12b64: 213f movs r1, #63 ; 0x3f 12b66: 221f movs r2, #31 12b68: 241f movs r4, #31 12b6a: 46a0 mov r8, r4 12b6c: 0149 lsls r1, r1, #5 12b6e: 02db lsls r3, r3, #11 12b70: 430a orrs r2, r1 12b72: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 12b74: 496d ldr r1, [pc, #436] ; (12d2c ) 12b76: 4f59 ldr r7, [pc, #356] ; (12cdc ) 12b78: 47b8 blx r7 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 12b7a: 4e59 ldr r6, [pc, #356] ; (12ce0 ) 12b7c: 6830 ldr r0, [r6, #0] 12b7e: 3008 adds r0, #8 12b80: 25fc movs r5, #252 ; 0xfc 12b82: 00ed lsls r5, r5, #3 12b84: 4642 mov r2, r8 12b86: 432a orrs r2, r5 12b88: 4c64 ldr r4, [pc, #400] ; (12d1c ) 12b8a: 4322 orrs r2, r4 12b8c: 4968 ldr r1, [pc, #416] ; (12d30 ) 12b8e: 47b8 blx r7 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_TEXT_CHK_PR); 12b90: 6830 ldr r0, [r6, #0] 12b92: 3008 adds r0, #8 12b94: 4642 mov r2, r8 12b96: 432a orrs r2, r5 12b98: 4322 orrs r2, r4 12b9a: 4966 ldr r1, [pc, #408] ; (12d34 ) 12b9c: 47b8 blx r7 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 12b9e: 6830 ldr r0, [r6, #0] 12ba0: 3008 adds r0, #8 12ba2: 4b50 ldr r3, [pc, #320] ; (12ce4 ) 12ba4: 699b ldr r3, [r3, #24] 12ba6: 079b lsls r3, r3, #30 12ba8: d501 bpl.n 12bae 12baa: f000 fc6d bl 13488 12bae: 2226 movs r2, #38 ; 0x26 12bb0: 2313 movs r3, #19 12bb2: 0152 lsls r2, r2, #5 12bb4: 02d9 lsls r1, r3, #11 12bb6: 431a orrs r2, r3 12bb8: 430a orrs r2, r1 12bba: 495f ldr r1, [pc, #380] ; (12d38 ) 12bbc: 4b47 ldr r3, [pc, #284] ; (12cdc ) 12bbe: 4798 blx r3 lv_style_set_transition_prop_5(&styles->bg_click, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); 12bc0: 4c47 ldr r4, [pc, #284] ; (12ce0 ) 12bc2: 6820 ldr r0, [r4, #0] 12bc4: 3008 adds r0, #8 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 12bc6: 2229 movs r2, #41 ; 0x29 12bc8: 21b6 movs r1, #182 ; 0xb6 12bca: 4d4e ldr r5, [pc, #312] ; (12d04 ) 12bcc: 47a8 blx r5 style_init_reset(&styles->btn); 12bce: 6820 ldr r0, [r4, #0] 12bd0: 3010 adds r0, #16 12bd2: 4b47 ldr r3, [pc, #284] ; (12cf0 ) 12bd4: 4798 blx r3 lv_style_set_radius(&styles->btn, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 12bd6: 6820 ldr r0, [r4, #0] 12bd8: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 12bda: 4a58 ldr r2, [pc, #352] ; (12d3c ) 12bdc: 2101 movs r1, #1 12bde: 47a8 blx r5 lv_style_set_bg_opa(&styles->btn, LV_STATE_DEFAULT, LV_OPA_COVER); 12be0: 6820 ldr r0, [r4, #0] 12be2: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 12be4: 22ff movs r2, #255 ; 0xff 12be6: 212c movs r1, #44 ; 0x2c 12be8: 4b55 ldr r3, [pc, #340] ; (12d40 ) 12bea: 4798 blx r3 lv_style_set_bg_color(&styles->btn, LV_STATE_DEFAULT, COLOR_BTN); 12bec: 6820 ldr r0, [r4, #0] 12bee: 3010 adds r0, #16 12bf0: 4b3c ldr r3, [pc, #240] ; (12ce4 ) 12bf2: 699b ldr r3, [r3, #24] 12bf4: 079b lsls r3, r3, #30 12bf6: d501 bpl.n 12bfc 12bf8: f000 fc4a bl 13490 12bfc: 230b movs r3, #11 12bfe: 2118 movs r1, #24 12c00: 220e movs r2, #14 12c02: 0149 lsls r1, r1, #5 12c04: 02db lsls r3, r3, #11 12c06: 430a orrs r2, r1 12c08: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 12c0a: 2129 movs r1, #41 ; 0x29 12c0c: 4b33 ldr r3, [pc, #204] ; (12cdc ) 12c0e: 4798 blx r3 lv_style_set_bg_color(&styles->btn, LV_STATE_PRESSED, COLOR_BTN_PR); 12c10: 4b33 ldr r3, [pc, #204] ; (12ce0 ) 12c12: 6818 ldr r0, [r3, #0] 12c14: 3010 adds r0, #16 12c16: 4b33 ldr r3, [pc, #204] ; (12ce4 ) 12c18: 699b ldr r3, [r3, #24] 12c1a: 079b lsls r3, r3, #30 12c1c: d401 bmi.n 12c22 12c1e: f000 fc3c bl 1349a 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))); 12c22: 4d30 ldr r5, [pc, #192] ; (12ce4 ) 12c24: 796a ldrb r2, [r5, #5] 12c26: 08d2 lsrs r2, r2, #3 12c28: 0093 lsls r3, r2, #2 12c2a: 189b adds r3, r3, r2 12c2c: 009a lsls r2, r3, #2 12c2e: 189b adds r3, r3, r2 12c30: 4a44 ldr r2, [pc, #272] ; (12d44 ) 12c32: 4694 mov ip, r2 12c34: 4463 add r3, ip 12c36: 021a lsls r2, r3, #8 12c38: 18d2 adds r2, r2, r3 12c3a: 01d2 lsls r2, r2, #7 12c3c: 18d2 adds r2, r2, r3 12c3e: 0dd2 lsrs r2, r2, #23 12c40: 211f movs r1, #31 12c42: 400a ands r2, r1 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 12c44: 88ac ldrh r4, [r5, #4] 12c46: 0564 lsls r4, r4, #21 12c48: 0ea3 lsrs r3, r4, #26 12c4a: 009c lsls r4, r3, #2 12c4c: 18e4 adds r4, r4, r3 12c4e: 00a3 lsls r3, r4, #2 12c50: 18e4 adds r4, r4, r3 12c52: 4b3d ldr r3, [pc, #244] ; (12d48 ) 12c54: 469c mov ip, r3 12c56: 4464 add r4, ip 12c58: 0223 lsls r3, r4, #8 12c5a: 191b adds r3, r3, r4 12c5c: 01db lsls r3, r3, #7 12c5e: 191b adds r3, r3, r4 12c60: 00db lsls r3, r3, #3 12c62: 0e9b lsrs r3, r3, #26 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 12c64: 792c ldrb r4, [r5, #4] 12c66: 06e4 lsls r4, r4, #27 12c68: 0ee5 lsrs r5, r4, #27 12c6a: 00ac lsls r4, r5, #2 12c6c: 1964 adds r4, r4, r5 12c6e: 00a5 lsls r5, r4, #2 12c70: 1964 adds r4, r4, r5 12c72: 4d34 ldr r5, [pc, #208] ; (12d44 ) 12c74: 46ac mov ip, r5 12c76: 4464 add r4, ip 12c78: 0225 lsls r5, r4, #8 12c7a: 192d adds r5, r5, r4 12c7c: 01ed lsls r5, r5, #7 12c7e: 192c adds r4, r5, r4 12c80: 0de4 lsrs r4, r4, #23 12c82: 4021 ands r1, r4 12c84: 015b lsls r3, r3, #5 12c86: 02d2 lsls r2, r2, #11 12c88: 430b orrs r3, r1 12c8a: 431a orrs r2, r3 12c8c: 4919 ldr r1, [pc, #100] ; (12cf4 ) 12c8e: 4f13 ldr r7, [pc, #76] ; (12cdc ) 12c90: 47b8 blx r7 lv_style_set_bg_color(&styles->btn, LV_STATE_CHECKED, COLOR_BTN_CHK); 12c92: 4e13 ldr r6, [pc, #76] ; (12ce0 ) 12c94: 6830 ldr r0, [r6, #0] 12c96: 3010 adds r0, #16 12c98: 4d12 ldr r5, [pc, #72] ; (12ce4 ) 12c9a: 88aa ldrh r2, [r5, #4] 12c9c: 212a movs r1, #42 ; 0x2a 12c9e: 31ff adds r1, #255 ; 0xff 12ca0: 47b8 blx r7 lv_style_set_bg_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, COLOR_BTN_CHK_PR); 12ca2: 6834 ldr r4, [r6, #0] 12ca4: 3410 adds r4, #16 12ca6: 88a8 ldrh r0, [r5, #4] 12ca8: 214c movs r1, #76 ; 0x4c 12caa: 4b13 ldr r3, [pc, #76] ; (12cf8 ) 12cac: 4798 blx r3 12cae: 1c02 adds r2, r0, #0 12cb0: 4912 ldr r1, [pc, #72] ; (12cfc ) 12cb2: 0020 movs r0, r4 12cb4: 47b8 blx r7 lv_style_set_bg_color(&styles->btn, LV_STATE_DISABLED, COLOR_BTN); 12cb6: 6830 ldr r0, [r6, #0] 12cb8: 3010 adds r0, #16 12cba: 69ab ldr r3, [r5, #24] 12cbc: 079b lsls r3, r3, #30 12cbe: d501 bpl.n 12cc4 12cc0: f000 fc15 bl 134ee 12cc4: 230b movs r3, #11 12cc6: 2118 movs r1, #24 12cc8: 220e movs r2, #14 12cca: 0149 lsls r1, r1, #5 12ccc: 02db lsls r3, r3, #11 12cce: 430a orrs r2, r1 12cd0: 431a orrs r2, r3 12cd2: 490b ldr r1, [pc, #44] ; (12d00 ) 12cd4: 4b01 ldr r3, [pc, #4] ; (12cdc ) 12cd6: 4798 blx r3 12cd8: e038 b.n 12d4c 12cda: 46c0 nop ; (mov r8, r8) 12cdc: 00004e55 .word 0x00004e55 12ce0: 20004c38 .word 0x20004c38 12ce4: 20004c3c .word 0x20004c3c 12ce8: 00008089 .word 0x00008089 12cec: 000080a9 .word 0x000080a9 12cf0: 00012495 .word 0x00012495 12cf4: 00001029 .word 0x00001029 12cf8: 000102dd .word 0x000102dd 12cfc: 00001129 .word 0x00001129 12d00: 00002029 .word 0x00002029 12d04: 00004cf5 .word 0x00004cf5 12d08: 00001239 .word 0x00001239 12d0c: 00001039 .word 0x00001039 12d10: 00001139 .word 0x00001139 12d14: 00002039 .word 0x00002039 12d18: 00009089 .word 0x00009089 12d1c: fffff800 .word 0xfffff800 12d20: 00008189 .word 0x00008189 12d24: 00009189 .word 0x00009189 12d28: 0000a089 .word 0x0000a089 12d2c: 000090a9 .word 0x000090a9 12d30: 000081a9 .word 0x000081a9 12d34: 000091a9 .word 0x000091a9 12d38: 0000a0a9 .word 0x0000a0a9 12d3c: 00007fff .word 0x00007fff 12d40: 00004fb5 .word 0x00004fb5 12d44: 00001bda .word 0x00001bda 12d48: 0000389a .word 0x0000389a lv_style_set_bg_color(&styles->btn, LV_STATE_DISABLED | LV_STATE_CHECKED, COLOR_BTN_DIS); 12d4c: 4bf1 ldr r3, [pc, #964] ; (13114 ) 12d4e: 6818 ldr r0, [r3, #0] 12d50: 3010 adds r0, #16 12d52: 4bf1 ldr r3, [pc, #964] ; (13118 ) 12d54: 699b ldr r3, [r3, #24] 12d56: 079b lsls r3, r3, #30 12d58: d500 bpl.n 12d5c 12d5a: e3cd b.n 134f8 12d5c: 2222 movs r2, #34 ; 0x22 12d5e: 2311 movs r3, #17 12d60: 0152 lsls r2, r2, #5 12d62: 02d9 lsls r1, r3, #11 12d64: 431a orrs r2, r3 12d66: 430a orrs r2, r1 12d68: 49ec ldr r1, [pc, #944] ; (1311c ) 12d6a: 4ded ldr r5, [pc, #948] ; (13120 ) 12d6c: 47a8 blx r5 lv_style_set_border_color(&styles->btn, LV_STATE_DEFAULT, COLOR_BTN_BORDER); 12d6e: 4ce9 ldr r4, [pc, #932] ; (13114 ) 12d70: 6820 ldr r0, [r4, #0] 12d72: 3010 adds r0, #16 12d74: 4ee8 ldr r6, [pc, #928] ; (13118 ) 12d76: 88b2 ldrh r2, [r6, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 12d78: 2139 movs r1, #57 ; 0x39 12d7a: 47a8 blx r5 lv_style_set_border_color(&styles->btn, LV_STATE_PRESSED, COLOR_BTN_BORDER_PR); 12d7c: 6820 ldr r0, [r4, #0] 12d7e: 3010 adds r0, #16 12d80: 88b2 ldrh r2, [r6, #4] 12d82: 49e8 ldr r1, [pc, #928] ; (13124 ) 12d84: 47a8 blx r5 lv_style_set_border_color(&styles->btn, LV_STATE_DISABLED, COLOR_BTN_BORDER_INA); 12d86: 6820 ldr r0, [r4, #0] 12d88: 3010 adds r0, #16 12d8a: 69b3 ldr r3, [r6, #24] 12d8c: 079b lsls r3, r3, #30 12d8e: d500 bpl.n 12d92 12d90: e3b5 b.n 134fe 12d92: 2210 movs r2, #16 12d94: 2308 movs r3, #8 12d96: 0152 lsls r2, r2, #5 12d98: 02d9 lsls r1, r3, #11 12d9a: 431a orrs r2, r3 12d9c: 430a orrs r2, r1 12d9e: 49e2 ldr r1, [pc, #904] ; (13128 ) 12da0: 4bdf ldr r3, [pc, #892] ; (13120 ) 12da2: 4798 blx r3 lv_style_set_border_width(&styles->btn, LV_STATE_DEFAULT, BORDER_WIDTH); 12da4: 4bdb ldr r3, [pc, #876] ; (13114 ) 12da6: 681c ldr r4, [r3, #0] 12da8: 3410 adds r4, #16 12daa: 2000 movs r0, #0 12dac: 4bdf ldr r3, [pc, #892] ; (1312c ) 12dae: 4798 blx r3 12db0: 3028 adds r0, #40 ; 0x28 12db2: 0040 lsls r0, r0, #1 12db4: 2340 movs r3, #64 ; 0x40 12db6: 33ff adds r3, #255 ; 0xff 12db8: 2201 movs r2, #1 12dba: 4298 cmp r0, r3 12dbc: d900 bls.n 12dc0 12dbe: e3a1 b.n 13504 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 12dc0: 2130 movs r1, #48 ; 0x30 12dc2: 0020 movs r0, r4 12dc4: 4bda ldr r3, [pc, #872] ; (13130 ) 12dc6: 4798 blx r3 lv_style_set_border_opa(&styles->btn, LV_STATE_CHECKED, LV_OPA_TRANSP); 12dc8: 4cd2 ldr r4, [pc, #840] ; (13114 ) 12dca: 6820 ldr r0, [r4, #0] 12dcc: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar) 12dce: 2200 movs r2, #0 12dd0: 219e movs r1, #158 ; 0x9e 12dd2: 0049 lsls r1, r1, #1 12dd4: 4bd7 ldr r3, [pc, #860] ; (13134 ) 12dd6: 4798 blx r3 lv_style_set_text_color(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 12dd8: 6820 ldr r0, [r4, #0] 12dda: 3010 adds r0, #16 12ddc: 4bce ldr r3, [pc, #824] ; (13118 ) 12dde: 699b ldr r3, [r3, #24] 12de0: 079b lsls r3, r3, #30 12de2: d500 bpl.n 12de6 12de4: e398 b.n 13518 12de6: 231f movs r3, #31 12de8: 213f movs r1, #63 ; 0x3f 12dea: 221f movs r2, #31 12dec: 0149 lsls r1, r1, #5 12dee: 02db lsls r3, r3, #11 12df0: 430a orrs r2, r1 12df2: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 12df4: 49d0 ldr r1, [pc, #832] ; (13138 ) 12df6: 4bca ldr r3, [pc, #808] ; (13120 ) 12df8: 4798 blx r3 lv_style_set_text_color(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 12dfa: 4bc6 ldr r3, [pc, #792] ; (13114 ) 12dfc: 6818 ldr r0, [r3, #0] 12dfe: 3010 adds r0, #16 12e00: 4bc5 ldr r3, [pc, #788] ; (13118 ) 12e02: 699b ldr r3, [r3, #24] 12e04: 079b lsls r3, r3, #30 12e06: d500 bpl.n 12e0a 12e08: e38a b.n 13520 12e0a: 231f movs r3, #31 12e0c: 213f movs r1, #63 ; 0x3f 12e0e: 221f movs r2, #31 12e10: 241f movs r4, #31 12e12: 46a0 mov r8, r4 12e14: 0149 lsls r1, r1, #5 12e16: 02db lsls r3, r3, #11 12e18: 430a orrs r2, r1 12e1a: 431a orrs r2, r3 12e1c: 49c7 ldr r1, [pc, #796] ; (1313c ) 12e1e: 4dc0 ldr r5, [pc, #768] ; (13120 ) 12e20: 47a8 blx r5 lv_style_set_text_color(&styles->btn, LV_STATE_CHECKED, lv_color_hex(0xffffff)); 12e22: 4cbc ldr r4, [pc, #752] ; (13114 ) 12e24: 6820 ldr r0, [r4, #0] 12e26: 3010 adds r0, #16 12e28: 27fc movs r7, #252 ; 0xfc 12e2a: 00ff lsls r7, r7, #3 12e2c: 4642 mov r2, r8 12e2e: 433a orrs r2, r7 12e30: 4ec3 ldr r6, [pc, #780] ; (13140 ) 12e32: 4332 orrs r2, r6 12e34: 49c3 ldr r1, [pc, #780] ; (13144 ) 12e36: 47a8 blx r5 lv_style_set_text_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); 12e38: 6820 ldr r0, [r4, #0] 12e3a: 3010 adds r0, #16 12e3c: 4642 mov r2, r8 12e3e: 433a orrs r2, r7 12e40: 4332 orrs r2, r6 12e42: 49c1 ldr r1, [pc, #772] ; (13148 ) 12e44: 47a8 blx r5 lv_style_set_text_color(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); 12e46: 6820 ldr r0, [r4, #0] 12e48: 3010 adds r0, #16 12e4a: 4bc0 ldr r3, [pc, #768] ; (1314c ) 12e4c: 881a ldrh r2, [r3, #0] 12e4e: 49c0 ldr r1, [pc, #768] ; (13150 ) 12e50: 47a8 blx r5 lv_style_set_image_recolor(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 12e52: 6820 ldr r0, [r4, #0] 12e54: 3010 adds r0, #16 12e56: 4bb0 ldr r3, [pc, #704] ; (13118 ) 12e58: 699b ldr r3, [r3, #24] 12e5a: 079b lsls r3, r3, #30 12e5c: d500 bpl.n 12e60 12e5e: e363 b.n 13528 12e60: 231f movs r3, #31 12e62: 213f movs r1, #63 ; 0x3f 12e64: 221f movs r2, #31 12e66: 0149 lsls r1, r1, #5 12e68: 02db lsls r3, r3, #11 12e6a: 430a orrs r2, r1 12e6c: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 12e6e: 49b9 ldr r1, [pc, #740] ; (13154 ) 12e70: 4bab ldr r3, [pc, #684] ; (13120 ) 12e72: 4798 blx r3 lv_style_set_image_recolor(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 12e74: 4ba7 ldr r3, [pc, #668] ; (13114 ) 12e76: 6818 ldr r0, [r3, #0] 12e78: 3010 adds r0, #16 12e7a: 4ba7 ldr r3, [pc, #668] ; (13118 ) 12e7c: 699b ldr r3, [r3, #24] 12e7e: 079b lsls r3, r3, #30 12e80: d500 bpl.n 12e84 12e82: e355 b.n 13530 12e84: 231f movs r3, #31 12e86: 213f movs r1, #63 ; 0x3f 12e88: 221f movs r2, #31 12e8a: 261f movs r6, #31 12e8c: 0149 lsls r1, r1, #5 12e8e: 02db lsls r3, r3, #11 12e90: 430a orrs r2, r1 12e92: 431a orrs r2, r3 12e94: 49b0 ldr r1, [pc, #704] ; (13158 ) 12e96: 4da2 ldr r5, [pc, #648] ; (13120 ) 12e98: 47a8 blx r5 lv_style_set_image_recolor(&styles->btn, LV_STATE_PRESSED, lv_color_hex(0xffffff)); 12e9a: 4c9e ldr r4, [pc, #632] ; (13114 ) 12e9c: 6820 ldr r0, [r4, #0] 12e9e: 3010 adds r0, #16 12ea0: 23fc movs r3, #252 ; 0xfc 12ea2: 00db lsls r3, r3, #3 12ea4: 4699 mov r9, r3 12ea6: 001a movs r2, r3 12ea8: 4332 orrs r2, r6 12eaa: 4fa5 ldr r7, [pc, #660] ; (13140 ) 12eac: 433a orrs r2, r7 12eae: 49aa ldr r1, [pc, #680] ; (13158 ) 12eb0: 47a8 blx r5 lv_style_set_image_recolor(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); 12eb2: 6820 ldr r0, [r4, #0] 12eb4: 3010 adds r0, #16 12eb6: 464a mov r2, r9 12eb8: 4332 orrs r2, r6 12eba: 433a orrs r2, r7 12ebc: 49a7 ldr r1, [pc, #668] ; (1315c ) 12ebe: 47a8 blx r5 lv_style_set_image_recolor(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); 12ec0: 6820 ldr r0, [r4, #0] 12ec2: 3010 adds r0, #16 12ec4: 4ba1 ldr r3, [pc, #644] ; (1314c ) 12ec6: 881a ldrh r2, [r3, #0] 12ec8: 49a5 ldr r1, [pc, #660] ; (13160 ) 12eca: 47a8 blx r5 lv_style_set_value_color(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 12ecc: 6820 ldr r0, [r4, #0] 12ece: 3010 adds r0, #16 12ed0: 4b91 ldr r3, [pc, #580] ; (13118 ) 12ed2: 699b ldr r3, [r3, #24] 12ed4: 079b lsls r3, r3, #30 12ed6: d500 bpl.n 12eda 12ed8: e32e b.n 13538 12eda: 231f movs r3, #31 12edc: 213f movs r1, #63 ; 0x3f 12ede: 221f movs r2, #31 12ee0: 0149 lsls r1, r1, #5 12ee2: 02db lsls r3, r3, #11 12ee4: 430a orrs r2, r1 12ee6: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 12ee8: 2179 movs r1, #121 ; 0x79 12eea: 4b8d ldr r3, [pc, #564] ; (13120 ) 12eec: 4798 blx r3 lv_style_set_value_color(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 12eee: 4b89 ldr r3, [pc, #548] ; (13114 ) 12ef0: 6818 ldr r0, [r3, #0] 12ef2: 3010 adds r0, #16 12ef4: 4b88 ldr r3, [pc, #544] ; (13118 ) 12ef6: 699b ldr r3, [r3, #24] 12ef8: 079b lsls r3, r3, #30 12efa: d500 bpl.n 12efe 12efc: e320 b.n 13540 12efe: 231f movs r3, #31 12f00: 213f movs r1, #63 ; 0x3f 12f02: 221f movs r2, #31 12f04: 241f movs r4, #31 12f06: 46a0 mov r8, r4 12f08: 0149 lsls r1, r1, #5 12f0a: 02db lsls r3, r3, #11 12f0c: 430a orrs r2, r1 12f0e: 431a orrs r2, r3 12f10: 4994 ldr r1, [pc, #592] ; (13164 ) 12f12: 4d83 ldr r5, [pc, #524] ; (13120 ) 12f14: 47a8 blx r5 lv_style_set_value_color(&styles->btn, LV_STATE_CHECKED, lv_color_hex(0xffffff)); 12f16: 4c7f ldr r4, [pc, #508] ; (13114 ) 12f18: 6820 ldr r0, [r4, #0] 12f1a: 3010 adds r0, #16 12f1c: 27fc movs r7, #252 ; 0xfc 12f1e: 00ff lsls r7, r7, #3 12f20: 4642 mov r2, r8 12f22: 433a orrs r2, r7 12f24: 4e86 ldr r6, [pc, #536] ; (13140 ) 12f26: 4332 orrs r2, r6 12f28: 217a movs r1, #122 ; 0x7a 12f2a: 31ff adds r1, #255 ; 0xff 12f2c: 47a8 blx r5 lv_style_set_value_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); 12f2e: 6820 ldr r0, [r4, #0] 12f30: 3010 adds r0, #16 12f32: 4642 mov r2, r8 12f34: 433a orrs r2, r7 12f36: 4332 orrs r2, r6 12f38: 498b ldr r1, [pc, #556] ; (13168 ) 12f3a: 47a8 blx r5 lv_style_set_value_color(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); 12f3c: 6820 ldr r0, [r4, #0] 12f3e: 3010 adds r0, #16 12f40: 4b82 ldr r3, [pc, #520] ; (1314c ) 12f42: 881a ldrh r2, [r3, #0] 12f44: 4989 ldr r1, [pc, #548] ; (1316c ) 12f46: 47a8 blx r5 lv_style_set_pad_left(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 12f48: 6824 ldr r4, [r4, #0] 12f4a: 3410 adds r4, #16 12f4c: 2000 movs r0, #0 12f4e: 4b77 ldr r3, [pc, #476] ; (1312c ) 12f50: 4798 blx r3 12f52: 0083 lsls r3, r0, #2 12f54: 181b adds r3, r3, r0 12f56: 00db lsls r3, r3, #3 12f58: 3350 adds r3, #80 ; 0x50 12f5a: 2140 movs r1, #64 ; 0x40 12f5c: 31ff adds r1, #255 ; 0xff 12f5e: 2201 movs r2, #1 12f60: 428b cmp r3, r1 12f62: d900 bls.n 12f66 12f64: e2f0 b.n 13548 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 12f66: 2112 movs r1, #18 12f68: 0020 movs r0, r4 12f6a: 4b71 ldr r3, [pc, #452] ; (13130 ) 12f6c: 4798 blx r3 lv_style_set_pad_right(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 12f6e: 4b69 ldr r3, [pc, #420] ; (13114 ) 12f70: 681c ldr r4, [r3, #0] 12f72: 3410 adds r4, #16 12f74: 2000 movs r0, #0 12f76: 4b6d ldr r3, [pc, #436] ; (1312c ) 12f78: 4798 blx r3 12f7a: 0083 lsls r3, r0, #2 12f7c: 181b adds r3, r3, r0 12f7e: 00db lsls r3, r3, #3 12f80: 3350 adds r3, #80 ; 0x50 12f82: 2140 movs r1, #64 ; 0x40 12f84: 31ff adds r1, #255 ; 0xff 12f86: 2201 movs r2, #1 12f88: 428b cmp r3, r1 12f8a: d900 bls.n 12f8e 12f8c: e2e9 b.n 13562 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 12f8e: 2113 movs r1, #19 12f90: 0020 movs r0, r4 12f92: 4b67 ldr r3, [pc, #412] ; (13130 ) 12f94: 4798 blx r3 lv_style_set_pad_top(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 12f96: 4b5f ldr r3, [pc, #380] ; (13114 ) 12f98: 681c ldr r4, [r3, #0] 12f9a: 3410 adds r4, #16 12f9c: 2000 movs r0, #0 12f9e: 4b63 ldr r3, [pc, #396] ; (1312c ) 12fa0: 4798 blx r3 12fa2: 0103 lsls r3, r0, #4 12fa4: 1a18 subs r0, r3, r0 12fa6: 3050 adds r0, #80 ; 0x50 12fa8: 2340 movs r3, #64 ; 0x40 12faa: 33ff adds r3, #255 ; 0xff 12fac: 2201 movs r2, #1 12fae: 4298 cmp r0, r3 12fb0: d900 bls.n 12fb4 12fb2: e2e3 b.n 1357c _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 12fb4: 2110 movs r1, #16 12fb6: 0020 movs r0, r4 12fb8: 4b5d ldr r3, [pc, #372] ; (13130 ) 12fba: 4798 blx r3 lv_style_set_pad_bottom(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 12fbc: 4b55 ldr r3, [pc, #340] ; (13114 ) 12fbe: 681c ldr r4, [r3, #0] 12fc0: 3410 adds r4, #16 12fc2: 2000 movs r0, #0 12fc4: 4b59 ldr r3, [pc, #356] ; (1312c ) 12fc6: 4798 blx r3 12fc8: 0103 lsls r3, r0, #4 12fca: 1a18 subs r0, r3, r0 12fcc: 3050 adds r0, #80 ; 0x50 12fce: 2340 movs r3, #64 ; 0x40 12fd0: 33ff adds r3, #255 ; 0xff 12fd2: 2201 movs r2, #1 12fd4: 4298 cmp r0, r3 12fd6: d900 bls.n 12fda 12fd8: e2e8 b.n 135ac _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 12fda: 2111 movs r1, #17 12fdc: 0020 movs r0, r4 12fde: 4b54 ldr r3, [pc, #336] ; (13130 ) 12fe0: 4798 blx r3 lv_style_set_pad_inner(&styles->btn, LV_STATE_DEFAULT, LV_DPX(20)); 12fe2: 4b4c ldr r3, [pc, #304] ; (13114 ) 12fe4: 681c ldr r4, [r3, #0] 12fe6: 3410 adds r4, #16 12fe8: 2000 movs r0, #0 12fea: 4b50 ldr r3, [pc, #320] ; (1312c ) 12fec: 4798 blx r3 12fee: 0083 lsls r3, r0, #2 12ff0: 181b adds r3, r3, r0 12ff2: 009b lsls r3, r3, #2 12ff4: 3350 adds r3, #80 ; 0x50 12ff6: 2140 movs r1, #64 ; 0x40 12ff8: 31ff adds r1, #255 ; 0xff 12ffa: 2201 movs r2, #1 12ffc: 428b cmp r3, r1 12ffe: d900 bls.n 13002 13000: e2df b.n 135c2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 13002: 2114 movs r1, #20 13004: 0020 movs r0, r4 13006: 4d4a ldr r5, [pc, #296] ; (13130 ) 13008: 47a8 blx r5 lv_style_set_outline_width(&styles->btn, LV_STATE_DEFAULT, 3); 1300a: 4c42 ldr r4, [pc, #264] ; (13114 ) 1300c: 6820 ldr r0, [r4, #0] 1300e: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 13010: 2203 movs r2, #3 13012: 2140 movs r1, #64 ; 0x40 13014: 47a8 blx r5 lv_style_set_outline_opa(&styles->btn, LV_STATE_DEFAULT, LV_OPA_0); 13016: 6820 ldr r0, [r4, #0] 13018: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 1301a: 2200 movs r2, #0 1301c: 214c movs r1, #76 ; 0x4c 1301e: 4e45 ldr r6, [pc, #276] ; (13134 ) 13020: 47b0 blx r6 lv_style_set_outline_opa(&styles->btn, LV_STATE_FOCUSED, LV_OPA_50); 13022: 6820 ldr r0, [r4, #0] 13024: 3010 adds r0, #16 13026: 227f movs r2, #127 ; 0x7f 13028: 2193 movs r1, #147 ; 0x93 1302a: 0089 lsls r1, r1, #2 1302c: 47b0 blx r6 lv_style_set_outline_color(&styles->btn, LV_STATE_DEFAULT, theme.color_primary); 1302e: 6820 ldr r0, [r4, #0] 13030: 3010 adds r0, #16 13032: 4f39 ldr r7, [pc, #228] ; (13118 ) 13034: 88ba ldrh r2, [r7, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 13036: 2149 movs r1, #73 ; 0x49 13038: 4e39 ldr r6, [pc, #228] ; (13120 ) 1303a: 47b0 blx r6 lv_style_set_outline_color(&styles->btn, LV_STATE_EDITED, theme.color_secondary); 1303c: 6820 ldr r0, [r4, #0] 1303e: 3010 adds r0, #16 13040: 88fa ldrh r2, [r7, #6] 13042: 494b ldr r1, [pc, #300] ; (13170 ) 13044: 47b0 blx r6 lv_style_set_transition_time(&styles->btn, LV_STATE_DEFAULT, TRANSITION_TIME); 13046: 6820 ldr r0, [r4, #0] 13048: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 1304a: 2296 movs r2, #150 ; 0x96 1304c: 21b0 movs r1, #176 ; 0xb0 1304e: 47a8 blx r5 lv_style_set_transition_prop_4(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_BORDER_OPA); 13050: 6820 ldr r0, [r4, #0] 13052: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_4, transition_prop_4, lv_style_int_t, _int, scalar) 13054: 223c movs r2, #60 ; 0x3c 13056: 21b5 movs r1, #181 ; 0xb5 13058: 47a8 blx r5 lv_style_set_transition_prop_5(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); 1305a: 6820 ldr r0, [r4, #0] 1305c: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 1305e: 2229 movs r2, #41 ; 0x29 13060: 21b6 movs r1, #182 ; 0xb6 13062: 47a8 blx r5 lv_style_set_transition_prop_6(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); 13064: 6820 ldr r0, [r4, #0] 13066: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 13068: 224c movs r2, #76 ; 0x4c 1306a: 21b7 movs r1, #183 ; 0xb7 1306c: 47a8 blx r5 lv_style_set_transition_delay(&styles->btn, LV_STATE_DEFAULT, TRANSITION_TIME); 1306e: 6820 ldr r0, [r4, #0] 13070: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_DELAY, transition_delay, lv_style_int_t, _int, scalar) 13072: 2296 movs r2, #150 ; 0x96 13074: 21b1 movs r1, #177 ; 0xb1 13076: 47a8 blx r5 lv_style_set_transition_delay(&styles->btn, LV_STATE_PRESSED, 0); 13078: 6820 ldr r0, [r4, #0] 1307a: 3010 adds r0, #16 1307c: 2200 movs r2, #0 1307e: 493d ldr r1, [pc, #244] ; (13174 ) 13080: 47a8 blx r5 style_init_reset(&styles->pad_inner); 13082: 6820 ldr r0, [r4, #0] 13084: 3014 adds r0, #20 13086: 4b3c ldr r3, [pc, #240] ; (13178 ) 13088: 4798 blx r3 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 1308a: 6824 ldr r4, [r4, #0] 1308c: 3414 adds r4, #20 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 1308e: 2000 movs r0, #0 13090: 4b3a ldr r3, [pc, #232] ; (1317c ) 13092: 4798 blx r3 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 13094: 2832 cmp r0, #50 ; 0x32 13096: d900 bls.n 1309a 13098: e2ad b.n 135f6 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 1309a: 2000 movs r0, #0 1309c: 4b23 ldr r3, [pc, #140] ; (1312c ) 1309e: 4798 blx r3 130a0: 0083 lsls r3, r0, #2 130a2: 181b adds r3, r3, r0 130a4: 009b lsls r3, r3, #2 130a6: 3350 adds r3, #80 ; 0x50 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 130a8: 2140 movs r1, #64 ; 0x40 130aa: 31ff adds r1, #255 ; 0xff 130ac: 2201 movs r2, #1 130ae: 428b cmp r3, r1 130b0: d900 bls.n 130b4 130b2: e293 b.n 135dc _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 130b4: 2114 movs r1, #20 130b6: 0020 movs r0, r4 130b8: 4b1d ldr r3, [pc, #116] ; (13130 ) 130ba: 4798 blx r3 style_init_reset(&styles->pad_small); 130bc: 4b15 ldr r3, [pc, #84] ; (13114 ) 130be: 6818 ldr r0, [r3, #0] 130c0: 3018 adds r0, #24 130c2: 4b2d ldr r3, [pc, #180] ; (13178 ) 130c4: 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); 130c6: 2000 movs r0, #0 130c8: 4b2c ldr r3, [pc, #176] ; (1317c ) 130ca: 4798 blx r3 130cc: 2832 cmp r0, #50 ; 0x32 130ce: d900 bls.n 130d2 130d0: e2b8 b.n 13644 130d2: 2000 movs r0, #0 130d4: 4b15 ldr r3, [pc, #84] ; (1312c ) 130d6: 4798 blx r3 130d8: 0003 movs r3, r0 130da: 0080 lsls r0, r0, #2 130dc: 18c0 adds r0, r0, r3 130de: 0040 lsls r0, r0, #1 130e0: 3050 adds r0, #80 ; 0x50 130e2: 2340 movs r3, #64 ; 0x40 130e4: 33ff adds r3, #255 ; 0xff 130e6: 2401 movs r4, #1 130e8: 4298 cmp r0, r3 130ea: d900 bls.n 130ee 130ec: e29d b.n 1362a lv_style_set_pad_left(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 130ee: 4e09 ldr r6, [pc, #36] ; (13114 ) 130f0: 6830 ldr r0, [r6, #0] 130f2: 3018 adds r0, #24 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 130f4: 0022 movs r2, r4 130f6: 2112 movs r1, #18 130f8: 4d0d ldr r5, [pc, #52] ; (13130 ) 130fa: 47a8 blx r5 lv_style_set_pad_right(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 130fc: 6830 ldr r0, [r6, #0] 130fe: 3018 adds r0, #24 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 13100: 0022 movs r2, r4 13102: 2113 movs r1, #19 13104: 47a8 blx r5 lv_style_set_pad_top(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 13106: 6830 ldr r0, [r6, #0] 13108: 3018 adds r0, #24 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1310a: 0022 movs r2, r4 1310c: 2110 movs r1, #16 1310e: 47a8 blx r5 lv_style_set_pad_bottom(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 13110: 6830 ldr r0, [r6, #0] 13112: e035 b.n 13180 13114: 20004c38 .word 0x20004c38 13118: 20004c3c .word 0x20004c3c 1311c: 00002129 .word 0x00002129 13120: 00004e55 .word 0x00004e55 13124: 00001039 .word 0x00001039 13128: 00002039 .word 0x00002039 1312c: 0000f665 .word 0x0000f665 13130: 00004cf5 .word 0x00004cf5 13134: 00004fb5 .word 0x00004fb5 13138: 00008089 .word 0x00008089 1313c: 00009089 .word 0x00009089 13140: fffff800 .word 0xfffff800 13144: 00008189 .word 0x00008189 13148: 00009189 .word 0x00009189 1314c: 0001c928 .word 0x0001c928 13150: 0000a089 .word 0x0000a089 13154: 000080a9 .word 0x000080a9 13158: 000090a9 .word 0x000090a9 1315c: 000091a9 .word 0x000091a9 13160: 0000a0a9 .word 0x0000a0a9 13164: 00001079 .word 0x00001079 13168: 00001179 .word 0x00001179 1316c: 00002079 .word 0x00002079 13170: 00000449 .word 0x00000449 13174: 000010b1 .word 0x000010b1 13178: 00012495 .word 0x00012495 1317c: 0000f681 .word 0x0000f681 13180: 3018 adds r0, #24 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 13182: 0022 movs r2, r4 13184: 2111 movs r1, #17 13186: 47a8 blx r5 lv_style_set_pad_inner(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 13188: 6830 ldr r0, [r6, #0] 1318a: 3018 adds r0, #24 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 1318c: 0022 movs r2, r4 1318e: 2114 movs r1, #20 13190: 47a8 blx r5 } 13192: bc0c pop {r2, r3} 13194: 4690 mov r8, r2 13196: 4699 mov r9, r3 13198: bdf8 pop {r3, r4, r5, r6, r7, pc} 1319a: 231d movs r3, #29 1319c: 213b movs r1, #59 ; 0x3b 1319e: 221e movs r2, #30 131a0: f7ff f9a1 bl 124e6 131a4: 2307 movs r3, #7 131a6: 210f movs r1, #15 131a8: 2208 movs r2, #8 131aa: f7ff f9ae bl 1250a 131ae: 2307 movs r3, #7 131b0: 210f movs r1, #15 131b2: 2208 movs r2, #8 131b4: f7ff f9bb bl 1252e lv_style_set_radius(&styles->bg, LV_STATE_DEFAULT, LV_DPX(8)); 131b8: 2000 movs r0, #0 131ba: 4bf6 ldr r3, [pc, #984] ; (13594 ) 131bc: 4798 blx r3 131be: 300a adds r0, #10 131c0: 00c0 lsls r0, r0, #3 131c2: 21a0 movs r1, #160 ; 0xa0 131c4: 4bf4 ldr r3, [pc, #976] ; (13598 ) 131c6: 4798 blx r3 131c8: b202 sxth r2, r0 131ca: f7ff f9d4 bl 12576 131ce: 231f movs r3, #31 131d0: 213f movs r1, #63 ; 0x3f 131d2: 221f movs r2, #31 131d4: f7ff f9e5 bl 125a2 131d8: 231a movs r3, #26 131da: 2137 movs r1, #55 ; 0x37 131dc: 221c movs r2, #28 131de: f7ff f9f3 bl 125c8 lv_style_set_border_width(&styles->bg, LV_STATE_DEFAULT, BORDER_WIDTH); 131e2: 2000 movs r0, #0 131e4: 4beb ldr r3, [pc, #940] ; (13594 ) 131e6: 4798 blx r3 131e8: 3028 adds r0, #40 ; 0x28 131ea: 0040 lsls r0, r0, #1 131ec: 21a0 movs r1, #160 ; 0xa0 131ee: 4bea ldr r3, [pc, #936] ; (13598 ) 131f0: 4798 blx r3 131f2: b202 sxth r2, r0 131f4: f7ff fa09 bl 1260a 131f8: 2307 movs r3, #7 131fa: 210f movs r1, #15 131fc: 2208 movs r2, #8 131fe: f7ff fa1f bl 12640 13202: 2307 movs r3, #7 13204: 210f movs r1, #15 13206: 2208 movs r2, #8 13208: f7ff fa33 bl 12672 1320c: 2307 movs r3, #7 1320e: 210f movs r1, #15 13210: 2208 movs r2, #8 13212: f7ff fa41 bl 12698 13216: 2307 movs r3, #7 13218: 210f movs r1, #15 1321a: 2208 movs r2, #8 1321c: f7ff fa4f bl 126be lv_style_set_pad_left(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 13220: 2000 movs r0, #0 13222: 4bdc ldr r3, [pc, #880] ; (13594 ) 13224: 4798 blx r3 13226: 0103 lsls r3, r0, #4 13228: 1a18 subs r0, r3, r0 1322a: 3050 adds r0, #80 ; 0x50 1322c: 2340 movs r3, #64 ; 0x40 1322e: 33ff adds r3, #255 ; 0xff 13230: 2401 movs r4, #1 13232: 4298 cmp r0, r3 13234: d801 bhi.n 1323a 13236: f7ff fa67 bl 12708 1323a: 2000 movs r0, #0 1323c: 4bd5 ldr r3, [pc, #852] ; (13594 ) 1323e: 4798 blx r3 13240: 0103 lsls r3, r0, #4 13242: 1a18 subs r0, r3, r0 13244: 3050 adds r0, #80 ; 0x50 13246: 21a0 movs r1, #160 ; 0xa0 13248: 4bd3 ldr r3, [pc, #844] ; (13598 ) 1324a: 4798 blx r3 1324c: b284 uxth r4, r0 1324e: f7ff fa5b bl 12708 13252: 2000 movs r0, #0 13254: 4bcf ldr r3, [pc, #828] ; (13594 ) 13256: 4798 blx r3 13258: 0103 lsls r3, r0, #4 1325a: 1a18 subs r0, r3, r0 1325c: 0040 lsls r0, r0, #1 1325e: 3050 adds r0, #80 ; 0x50 13260: 21a0 movs r1, #160 ; 0xa0 13262: 4bcd ldr r3, [pc, #820] ; (13598 ) 13264: 4798 blx r3 13266: b284 uxth r4, r0 13268: f7ff fa4e bl 12708 1326c: 2000 movs r0, #0 1326e: 4bc9 ldr r3, [pc, #804] ; (13594 ) 13270: 4798 blx r3 13272: 3028 adds r0, #40 ; 0x28 13274: 0040 lsls r0, r0, #1 13276: 21a0 movs r1, #160 ; 0xa0 13278: 4bc7 ldr r3, [pc, #796] ; (13598 ) 1327a: 4798 blx r3 1327c: b282 uxth r2, r0 1327e: f7ff fa50 bl 12722 lv_style_set_pad_right(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 13282: 2000 movs r0, #0 13284: 4bc3 ldr r3, [pc, #780] ; (13594 ) 13286: 4798 blx r3 13288: 0103 lsls r3, r0, #4 1328a: 1a18 subs r0, r3, r0 1328c: 3050 adds r0, #80 ; 0x50 1328e: 2340 movs r3, #64 ; 0x40 13290: 33ff adds r3, #255 ; 0xff 13292: 2401 movs r4, #1 13294: 4298 cmp r0, r3 13296: d801 bhi.n 1329c 13298: f7ff fa61 bl 1275e 1329c: 2000 movs r0, #0 1329e: 4bbd ldr r3, [pc, #756] ; (13594 ) 132a0: 4798 blx r3 132a2: 0103 lsls r3, r0, #4 132a4: 1a18 subs r0, r3, r0 132a6: 3050 adds r0, #80 ; 0x50 132a8: 21a0 movs r1, #160 ; 0xa0 132aa: 4bbb ldr r3, [pc, #748] ; (13598 ) 132ac: 4798 blx r3 132ae: b284 uxth r4, r0 132b0: f7ff fa55 bl 1275e 132b4: 2000 movs r0, #0 132b6: 4bb7 ldr r3, [pc, #732] ; (13594 ) 132b8: 4798 blx r3 132ba: 0103 lsls r3, r0, #4 132bc: 1a18 subs r0, r3, r0 132be: 0040 lsls r0, r0, #1 132c0: 3050 adds r0, #80 ; 0x50 132c2: 21a0 movs r1, #160 ; 0xa0 132c4: 4bb4 ldr r3, [pc, #720] ; (13598 ) 132c6: 4798 blx r3 132c8: b284 uxth r4, r0 132ca: f7ff fa48 bl 1275e 132ce: 2000 movs r0, #0 132d0: 4bb0 ldr r3, [pc, #704] ; (13594 ) 132d2: 4798 blx r3 132d4: 3028 adds r0, #40 ; 0x28 132d6: 0040 lsls r0, r0, #1 132d8: 21a0 movs r1, #160 ; 0xa0 132da: 4baf ldr r3, [pc, #700] ; (13598 ) 132dc: 4798 blx r3 132de: b282 uxth r2, r0 132e0: f7ff fa4a bl 12778 lv_style_set_pad_top(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 132e4: 2000 movs r0, #0 132e6: 4bab ldr r3, [pc, #684] ; (13594 ) 132e8: 4798 blx r3 132ea: 0103 lsls r3, r0, #4 132ec: 1a18 subs r0, r3, r0 132ee: 3050 adds r0, #80 ; 0x50 132f0: 2340 movs r3, #64 ; 0x40 132f2: 33ff adds r3, #255 ; 0xff 132f4: 2401 movs r4, #1 132f6: 4298 cmp r0, r3 132f8: d801 bhi.n 132fe 132fa: f7ff fa5b bl 127b4 132fe: 2000 movs r0, #0 13300: 4ba4 ldr r3, [pc, #656] ; (13594 ) 13302: 4798 blx r3 13304: 0103 lsls r3, r0, #4 13306: 1a18 subs r0, r3, r0 13308: 3050 adds r0, #80 ; 0x50 1330a: 21a0 movs r1, #160 ; 0xa0 1330c: 4ba2 ldr r3, [pc, #648] ; (13598 ) 1330e: 4798 blx r3 13310: b284 uxth r4, r0 13312: f7ff fa4f bl 127b4 13316: 2000 movs r0, #0 13318: 4b9e ldr r3, [pc, #632] ; (13594 ) 1331a: 4798 blx r3 1331c: 0103 lsls r3, r0, #4 1331e: 1a18 subs r0, r3, r0 13320: 0040 lsls r0, r0, #1 13322: 3050 adds r0, #80 ; 0x50 13324: 21a0 movs r1, #160 ; 0xa0 13326: 4b9c ldr r3, [pc, #624] ; (13598 ) 13328: 4798 blx r3 1332a: b284 uxth r4, r0 1332c: f7ff fa42 bl 127b4 13330: 2000 movs r0, #0 13332: 4b98 ldr r3, [pc, #608] ; (13594 ) 13334: 4798 blx r3 13336: 3028 adds r0, #40 ; 0x28 13338: 0040 lsls r0, r0, #1 1333a: 21a0 movs r1, #160 ; 0xa0 1333c: 4b96 ldr r3, [pc, #600] ; (13598 ) 1333e: 4798 blx r3 13340: b282 uxth r2, r0 13342: f7ff fa44 bl 127ce lv_style_set_pad_bottom(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 13346: 2000 movs r0, #0 13348: 4b92 ldr r3, [pc, #584] ; (13594 ) 1334a: 4798 blx r3 1334c: 0103 lsls r3, r0, #4 1334e: 1a18 subs r0, r3, r0 13350: 3050 adds r0, #80 ; 0x50 13352: 2340 movs r3, #64 ; 0x40 13354: 33ff adds r3, #255 ; 0xff 13356: 2401 movs r4, #1 13358: 4298 cmp r0, r3 1335a: d801 bhi.n 13360 1335c: f7ff fa55 bl 1280a 13360: 2000 movs r0, #0 13362: 4b8c ldr r3, [pc, #560] ; (13594 ) 13364: 4798 blx r3 13366: 0103 lsls r3, r0, #4 13368: 1a18 subs r0, r3, r0 1336a: 3050 adds r0, #80 ; 0x50 1336c: 21a0 movs r1, #160 ; 0xa0 1336e: 4b8a ldr r3, [pc, #552] ; (13598 ) 13370: 4798 blx r3 13372: b284 uxth r4, r0 13374: f7ff fa49 bl 1280a 13378: 2000 movs r0, #0 1337a: 4b86 ldr r3, [pc, #536] ; (13594 ) 1337c: 4798 blx r3 1337e: 0103 lsls r3, r0, #4 13380: 1a18 subs r0, r3, r0 13382: 0040 lsls r0, r0, #1 13384: 3050 adds r0, #80 ; 0x50 13386: 21a0 movs r1, #160 ; 0xa0 13388: 4b83 ldr r3, [pc, #524] ; (13598 ) 1338a: 4798 blx r3 1338c: b284 uxth r4, r0 1338e: f7ff fa3c bl 1280a 13392: 2000 movs r0, #0 13394: 4b7f ldr r3, [pc, #508] ; (13594 ) 13396: 4798 blx r3 13398: 3028 adds r0, #40 ; 0x28 1339a: 0040 lsls r0, r0, #1 1339c: 21a0 movs r1, #160 ; 0xa0 1339e: 4b7e ldr r3, [pc, #504] ; (13598 ) 133a0: 4798 blx r3 133a2: b282 uxth r2, r0 133a4: f7ff fa3e bl 12824 lv_style_set_pad_inner(&styles->bg, LV_STATE_DEFAULT, PAD_DEF); 133a8: 2000 movs r0, #0 133aa: 4b7a ldr r3, [pc, #488] ; (13594 ) 133ac: 4798 blx r3 133ae: 0103 lsls r3, r0, #4 133b0: 1a18 subs r0, r3, r0 133b2: 3050 adds r0, #80 ; 0x50 133b4: 2340 movs r3, #64 ; 0x40 133b6: 33ff adds r3, #255 ; 0xff 133b8: 2201 movs r2, #1 133ba: 4298 cmp r0, r3 133bc: d801 bhi.n 133c2 133be: f7ff fa4f bl 12860 133c2: 2000 movs r0, #0 133c4: 4b73 ldr r3, [pc, #460] ; (13594 ) 133c6: 4798 blx r3 133c8: 0103 lsls r3, r0, #4 133ca: 1a18 subs r0, r3, r0 133cc: 3050 adds r0, #80 ; 0x50 133ce: 21a0 movs r1, #160 ; 0xa0 133d0: 4b71 ldr r3, [pc, #452] ; (13598 ) 133d2: 4798 blx r3 133d4: b202 sxth r2, r0 133d6: f7ff fa43 bl 12860 133da: 2000 movs r0, #0 133dc: 4b6d ldr r3, [pc, #436] ; (13594 ) 133de: 4798 blx r3 133e0: 0103 lsls r3, r0, #4 133e2: 1a18 subs r0, r3, r0 133e4: 0040 lsls r0, r0, #1 133e6: 3050 adds r0, #80 ; 0x50 133e8: 21a0 movs r1, #160 ; 0xa0 133ea: 4b6b ldr r3, [pc, #428] ; (13598 ) 133ec: 4798 blx r3 133ee: b202 sxth r2, r0 133f0: f7ff fa36 bl 12860 133f4: 231a movs r3, #26 133f6: 2135 movs r1, #53 ; 0x35 133f8: 221b movs r2, #27 133fa: f7ff fa73 bl 128e4 133fe: 231b movs r3, #27 13400: 2139 movs r1, #57 ; 0x39 13402: 221d movs r2, #29 13404: f7ff fa81 bl 1290a 13408: 2306 movs r3, #6 1340a: 2110 movs r1, #16 1340c: 2209 movs r2, #9 1340e: f7ff fa8f bl 12930 13412: 2306 movs r3, #6 13414: 2110 movs r1, #16 13416: 2209 movs r2, #9 13418: f7ff fa9d bl 12956 1341c: 2306 movs r3, #6 1341e: 2110 movs r1, #16 13420: 2209 movs r2, #9 13422: f7ff faab bl 1297c 13426: 2306 movs r3, #6 13428: 2110 movs r1, #16 1342a: 2209 movs r2, #9 1342c: f7ff fab9 bl 129a2 13430: 231d movs r3, #29 13432: 213b movs r1, #59 ; 0x3b 13434: 221d movs r2, #29 13436: f7ff facb bl 129d0 1343a: 231f movs r3, #31 1343c: 213f movs r1, #63 ; 0x3f 1343e: 221f movs r2, #31 13440: f7ff fae9 bl 12a16 13444: 2319 movs r3, #25 13446: 2133 movs r1, #51 ; 0x33 13448: 2219 movs r2, #25 1344a: f7ff fb08 bl 12a5e 1344e: 2307 movs r3, #7 13450: 210f movs r1, #15 13452: 2208 movs r2, #8 13454: f7ff fb16 bl 12a84 13458: 2307 movs r3, #7 1345a: 210f movs r1, #15 1345c: 2208 movs r2, #8 1345e: f7ff fb25 bl 12aac 13462: 231a movs r3, #26 13464: 2137 movs r1, #55 ; 0x37 13466: 221c movs r2, #28 13468: f7ff fb33 bl 12ad2 1346c: 2307 movs r3, #7 1346e: 210f movs r1, #15 13470: 2208 movs r2, #8 13472: f7ff fb41 bl 12af8 13476: 222a movs r2, #42 ; 0x2a 13478: 2315 movs r3, #21 1347a: f7ff fb62 bl 12b42 1347e: 2307 movs r3, #7 13480: 210f movs r1, #15 13482: 2208 movs r2, #8 13484: f7ff fb70 bl 12b68 13488: 222a movs r2, #42 ; 0x2a 1348a: 2315 movs r3, #21 1348c: f7ff fb91 bl 12bb2 13490: 231f movs r3, #31 13492: 213f movs r1, #63 ; 0x3f 13494: 221f movs r2, #31 13496: f7ff fbb4 bl 12c02 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 1349a: 4e40 ldr r6, [pc, #256] ; (1359c ) 1349c: 7972 ldrb r2, [r6, #5] 1349e: 08d2 lsrs r2, r2, #3 134a0: 254c movs r5, #76 ; 0x4c 134a2: 436a muls r2, r5 134a4: 4b3e ldr r3, [pc, #248] ; (135a0 ) 134a6: 18d3 adds r3, r2, r3 134a8: 021a lsls r2, r3, #8 134aa: 18d2 adds r2, r2, r3 134ac: 01d2 lsls r2, r2, #7 134ae: 18d2 adds r2, r2, r3 134b0: 0dd2 lsrs r2, r2, #23 134b2: 211f movs r1, #31 134b4: 400a ands r2, r1 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 134b6: 88b4 ldrh r4, [r6, #4] 134b8: 0564 lsls r4, r4, #21 134ba: 0ea4 lsrs r4, r4, #26 134bc: 436c muls r4, r5 134be: 4b39 ldr r3, [pc, #228] ; (135a4 ) 134c0: 469c mov ip, r3 134c2: 4464 add r4, ip 134c4: 0223 lsls r3, r4, #8 134c6: 191b adds r3, r3, r4 134c8: 01db lsls r3, r3, #7 134ca: 191b adds r3, r3, r4 134cc: 00db lsls r3, r3, #3 134ce: 0e9b lsrs r3, r3, #26 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 134d0: 7934 ldrb r4, [r6, #4] 134d2: 06e4 lsls r4, r4, #27 134d4: 0ee4 lsrs r4, r4, #27 134d6: 4365 muls r5, r4 134d8: 4c33 ldr r4, [pc, #204] ; (135a8 ) 134da: 46a4 mov ip, r4 134dc: 4465 add r5, ip 134de: 022c lsls r4, r5, #8 134e0: 1964 adds r4, r4, r5 134e2: 01e4 lsls r4, r4, #7 134e4: 1964 adds r4, r4, r5 134e6: 0de4 lsrs r4, r4, #23 134e8: 4021 ands r1, r4 134ea: f7ff fbcb bl 12c84 134ee: 231f movs r3, #31 134f0: 213f movs r1, #63 ; 0x3f 134f2: 221f movs r2, #31 134f4: f7ff fbe9 bl 12cca 134f8: 2233 movs r2, #51 ; 0x33 134fa: 2319 movs r3, #25 134fc: e430 b.n 12d60 134fe: 2222 movs r2, #34 ; 0x22 13500: 2311 movs r3, #17 13502: e448 b.n 12d96 lv_style_set_border_width(&styles->btn, LV_STATE_DEFAULT, BORDER_WIDTH); 13504: 2000 movs r0, #0 13506: 4b23 ldr r3, [pc, #140] ; (13594 ) 13508: 4798 blx r3 1350a: 3028 adds r0, #40 ; 0x28 1350c: 0040 lsls r0, r0, #1 1350e: 21a0 movs r1, #160 ; 0xa0 13510: 4b21 ldr r3, [pc, #132] ; (13598 ) 13512: 4798 blx r3 13514: b202 sxth r2, r0 13516: e453 b.n 12dc0 13518: 2306 movs r3, #6 1351a: 2110 movs r1, #16 1351c: 2209 movs r2, #9 1351e: e465 b.n 12dec 13520: 2306 movs r3, #6 13522: 2110 movs r1, #16 13524: 2209 movs r2, #9 13526: e473 b.n 12e10 13528: 2306 movs r3, #6 1352a: 2110 movs r1, #16 1352c: 2209 movs r2, #9 1352e: e49a b.n 12e66 13530: 2306 movs r3, #6 13532: 2110 movs r1, #16 13534: 2209 movs r2, #9 13536: e4a8 b.n 12e8a 13538: 2306 movs r3, #6 1353a: 2110 movs r1, #16 1353c: 2209 movs r2, #9 1353e: e4cf b.n 12ee0 13540: 2306 movs r3, #6 13542: 2110 movs r1, #16 13544: 2209 movs r2, #9 13546: e4dd b.n 12f04 lv_style_set_pad_left(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 13548: 2000 movs r0, #0 1354a: 4b12 ldr r3, [pc, #72] ; (13594 ) 1354c: 4798 blx r3 1354e: 0003 movs r3, r0 13550: 0080 lsls r0, r0, #2 13552: 18c0 adds r0, r0, r3 13554: 00c0 lsls r0, r0, #3 13556: 3050 adds r0, #80 ; 0x50 13558: 21a0 movs r1, #160 ; 0xa0 1355a: 4b0f ldr r3, [pc, #60] ; (13598 ) 1355c: 4798 blx r3 1355e: b202 sxth r2, r0 13560: e501 b.n 12f66 lv_style_set_pad_right(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 13562: 2000 movs r0, #0 13564: 4b0b ldr r3, [pc, #44] ; (13594 ) 13566: 4798 blx r3 13568: 0003 movs r3, r0 1356a: 0080 lsls r0, r0, #2 1356c: 18c0 adds r0, r0, r3 1356e: 00c0 lsls r0, r0, #3 13570: 3050 adds r0, #80 ; 0x50 13572: 21a0 movs r1, #160 ; 0xa0 13574: 4b08 ldr r3, [pc, #32] ; (13598 ) 13576: 4798 blx r3 13578: b202 sxth r2, r0 1357a: e508 b.n 12f8e lv_style_set_pad_top(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 1357c: 2000 movs r0, #0 1357e: 4b05 ldr r3, [pc, #20] ; (13594 ) 13580: 4798 blx r3 13582: 0103 lsls r3, r0, #4 13584: 1a18 subs r0, r3, r0 13586: 3050 adds r0, #80 ; 0x50 13588: 21a0 movs r1, #160 ; 0xa0 1358a: 4b03 ldr r3, [pc, #12] ; (13598 ) 1358c: 4798 blx r3 1358e: b202 sxth r2, r0 13590: e510 b.n 12fb4 13592: 46c0 nop ; (mov r8, r8) 13594: 0000f665 .word 0x0000f665 13598: 00017881 .word 0x00017881 1359c: 20004c3c .word 0x20004c3c 135a0: 000007b1 .word 0x000007b1 135a4: 000010c8 .word 0x000010c8 135a8: 000009ca .word 0x000009ca lv_style_set_pad_bottom(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 135ac: 2000 movs r0, #0 135ae: 4b33 ldr r3, [pc, #204] ; (1367c ) 135b0: 4798 blx r3 135b2: 0103 lsls r3, r0, #4 135b4: 1a18 subs r0, r3, r0 135b6: 3050 adds r0, #80 ; 0x50 135b8: 21a0 movs r1, #160 ; 0xa0 135ba: 4b31 ldr r3, [pc, #196] ; (13680 ) 135bc: 4798 blx r3 135be: b202 sxth r2, r0 135c0: e50b b.n 12fda lv_style_set_pad_inner(&styles->btn, LV_STATE_DEFAULT, LV_DPX(20)); 135c2: 2000 movs r0, #0 135c4: 4b2d ldr r3, [pc, #180] ; (1367c ) 135c6: 4798 blx r3 135c8: 0003 movs r3, r0 135ca: 0080 lsls r0, r0, #2 135cc: 18c0 adds r0, r0, r3 135ce: 0080 lsls r0, r0, #2 135d0: 3050 adds r0, #80 ; 0x50 135d2: 21a0 movs r1, #160 ; 0xa0 135d4: 4b2a ldr r3, [pc, #168] ; (13680 ) 135d6: 4798 blx r3 135d8: b202 sxth r2, r0 135da: e512 b.n 13002 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 135dc: 2000 movs r0, #0 135de: 4b27 ldr r3, [pc, #156] ; (1367c ) 135e0: 4798 blx r3 135e2: 0003 movs r3, r0 135e4: 0080 lsls r0, r0, #2 135e6: 18c0 adds r0, r0, r3 135e8: 0080 lsls r0, r0, #2 135ea: 3050 adds r0, #80 ; 0x50 135ec: 21a0 movs r1, #160 ; 0xa0 135ee: 4b24 ldr r3, [pc, #144] ; (13680 ) 135f0: 4798 blx r3 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 135f2: b202 sxth r2, r0 135f4: e55e b.n 130b4 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 135f6: 2000 movs r0, #0 135f8: 4b20 ldr r3, [pc, #128] ; (1367c ) 135fa: 4798 blx r3 135fc: 0083 lsls r3, r0, #2 135fe: 181b adds r3, r3, r0 13600: 00db lsls r3, r3, #3 13602: 3350 adds r3, #80 ; 0x50 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 13604: 2140 movs r1, #64 ; 0x40 13606: 31ff adds r1, #255 ; 0xff 13608: 2201 movs r2, #1 1360a: 428b cmp r3, r1 1360c: d800 bhi.n 13610 1360e: e551 b.n 130b4 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 13610: 2000 movs r0, #0 13612: 4b1a ldr r3, [pc, #104] ; (1367c ) 13614: 4798 blx r3 13616: 0003 movs r3, r0 13618: 0080 lsls r0, r0, #2 1361a: 18c0 adds r0, r0, r3 1361c: 00c0 lsls r0, r0, #3 1361e: 3050 adds r0, #80 ; 0x50 13620: 21a0 movs r1, #160 ; 0xa0 13622: 4b17 ldr r3, [pc, #92] ; (13680 ) 13624: 4798 blx r3 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 13626: b202 sxth r2, r0 13628: e544 b.n 130b4 lv_style_int_t pad_small_value = lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(10) : LV_DPX(20); 1362a: 2000 movs r0, #0 1362c: 4b13 ldr r3, [pc, #76] ; (1367c ) 1362e: 4798 blx r3 13630: 0003 movs r3, r0 13632: 0080 lsls r0, r0, #2 13634: 18c0 adds r0, r0, r3 13636: 0040 lsls r0, r0, #1 13638: 3050 adds r0, #80 ; 0x50 1363a: 21a0 movs r1, #160 ; 0xa0 1363c: 4b10 ldr r3, [pc, #64] ; (13680 ) 1363e: 4798 blx r3 13640: b204 sxth r4, r0 13642: e554 b.n 130ee 13644: 2000 movs r0, #0 13646: 4b0d ldr r3, [pc, #52] ; (1367c ) 13648: 4798 blx r3 1364a: 0003 movs r3, r0 1364c: 0080 lsls r0, r0, #2 1364e: 18c0 adds r0, r0, r3 13650: 0080 lsls r0, r0, #2 13652: 3050 adds r0, #80 ; 0x50 13654: 2340 movs r3, #64 ; 0x40 13656: 33ff adds r3, #255 ; 0xff 13658: 2401 movs r4, #1 1365a: 4298 cmp r0, r3 1365c: d800 bhi.n 13660 1365e: e546 b.n 130ee 13660: 2000 movs r0, #0 13662: 4b06 ldr r3, [pc, #24] ; (1367c ) 13664: 4798 blx r3 13666: 0003 movs r3, r0 13668: 0080 lsls r0, r0, #2 1366a: 18c0 adds r0, r0, r3 1366c: 0080 lsls r0, r0, #2 1366e: 3050 adds r0, #80 ; 0x50 13670: 21a0 movs r1, #160 ; 0xa0 13672: 4b03 ldr r3, [pc, #12] ; (13680 ) 13674: 4798 blx r3 13676: b204 sxth r4, r0 13678: e539 b.n 130ee 1367a: 46c0 nop ; (mov r8, r8) 1367c: 0000f665 .word 0x0000f665 13680: 00017881 .word 0x00017881 00013684 : { 13684: b5f0 push {r4, r5, r6, r7, lr} 13686: 46c6 mov lr, r8 13688: b500 push {lr} style_init_reset(&styles->bar_bg); 1368a: 4c49 ldr r4, [pc, #292] ; (137b0 ) 1368c: 6820 ldr r0, [r4, #0] 1368e: 3024 adds r0, #36 ; 0x24 13690: 4b48 ldr r3, [pc, #288] ; (137b4 ) 13692: 4798 blx r3 lv_style_set_radius(&styles->bar_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 13694: 6820 ldr r0, [r4, #0] 13696: 3024 adds r0, #36 ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 13698: 4a47 ldr r2, [pc, #284] ; (137b8 ) 1369a: 2101 movs r1, #1 1369c: 4b47 ldr r3, [pc, #284] ; (137bc ) 1369e: 4798 blx r3 lv_style_set_bg_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_COVER); 136a0: 6820 ldr r0, [r4, #0] 136a2: 3024 adds r0, #36 ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 136a4: 22ff movs r2, #255 ; 0xff 136a6: 212c movs r1, #44 ; 0x2c 136a8: 4b45 ldr r3, [pc, #276] ; (137c0 ) 136aa: 4798 blx r3 lv_style_set_bg_color(&styles->bar_bg, LV_STATE_DEFAULT, COLOR_BG_SEC); 136ac: 6820 ldr r0, [r4, #0] 136ae: 3024 adds r0, #36 ; 0x24 136b0: 4b44 ldr r3, [pc, #272] ; (137c4 ) 136b2: 699b ldr r3, [r3, #24] 136b4: 079b lsls r3, r3, #30 136b6: d500 bpl.n 136ba 136b8: e06e b.n 13798 136ba: 2308 movs r3, #8 136bc: 2112 movs r1, #18 136be: 2209 movs r2, #9 136c0: 0149 lsls r1, r1, #5 136c2: 02db lsls r3, r3, #11 136c4: 430a orrs r2, r1 136c6: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 136c8: 2129 movs r1, #41 ; 0x29 136ca: 4b3f ldr r3, [pc, #252] ; (137c8 ) 136cc: 4798 blx r3 lv_style_set_value_color(&styles->bar_bg, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 136ce: 4b38 ldr r3, [pc, #224] ; (137b0 ) 136d0: 6818 ldr r0, [r3, #0] 136d2: 3024 adds r0, #36 ; 0x24 136d4: 4b3b ldr r3, [pc, #236] ; (137c4 ) 136d6: 699b ldr r3, [r3, #24] 136d8: 079b lsls r3, r3, #30 136da: d461 bmi.n 137a0 136dc: 231f movs r3, #31 136de: 213f movs r1, #63 ; 0x3f 136e0: 221f movs r2, #31 136e2: 0149 lsls r1, r1, #5 136e4: 02db lsls r3, r3, #11 136e6: 430a orrs r2, r1 136e8: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 136ea: 2179 movs r1, #121 ; 0x79 136ec: 4d36 ldr r5, [pc, #216] ; (137c8 ) 136ee: 47a8 blx r5 lv_style_set_outline_color(&styles->bar_bg, LV_STATE_DEFAULT, theme.color_primary); 136f0: 4c2f ldr r4, [pc, #188] ; (137b0 ) 136f2: 6820 ldr r0, [r4, #0] 136f4: 3024 adds r0, #36 ; 0x24 136f6: 4e33 ldr r6, [pc, #204] ; (137c4 ) 136f8: 88b2 ldrh r2, [r6, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 136fa: 2149 movs r1, #73 ; 0x49 136fc: 47a8 blx r5 lv_style_set_outline_color(&styles->bar_bg, LV_STATE_EDITED, theme.color_secondary); 136fe: 6820 ldr r0, [r4, #0] 13700: 3024 adds r0, #36 ; 0x24 13702: 88f2 ldrh r2, [r6, #6] 13704: 4931 ldr r1, [pc, #196] ; (137cc ) 13706: 47a8 blx r5 lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_TRANSP); 13708: 6820 ldr r0, [r4, #0] 1370a: 3024 adds r0, #36 ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 1370c: 2200 movs r2, #0 1370e: 214c movs r1, #76 ; 0x4c 13710: 4b2b ldr r3, [pc, #172] ; (137c0 ) 13712: 4698 mov r8, r3 13714: 4798 blx r3 lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_FOCUSED, LV_OPA_50); 13716: 6820 ldr r0, [r4, #0] 13718: 3024 adds r0, #36 ; 0x24 1371a: 227f movs r2, #127 ; 0x7f 1371c: 2193 movs r1, #147 ; 0x93 1371e: 0089 lsls r1, r1, #2 13720: 47c0 blx r8 lv_style_set_outline_width(&styles->bar_bg, LV_STATE_DEFAULT, 3); 13722: 6820 ldr r0, [r4, #0] 13724: 3024 adds r0, #36 ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 13726: 2203 movs r2, #3 13728: 2140 movs r1, #64 ; 0x40 1372a: 4f24 ldr r7, [pc, #144] ; (137bc ) 1372c: 47b8 blx r7 lv_style_set_transition_time(&styles->bar_bg, LV_STATE_DEFAULT, TRANSITION_TIME); 1372e: 6820 ldr r0, [r4, #0] 13730: 3024 adds r0, #36 ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 13732: 2296 movs r2, #150 ; 0x96 13734: 21b0 movs r1, #176 ; 0xb0 13736: 47b8 blx r7 lv_style_set_transition_prop_6(&styles->bar_bg, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); 13738: 6820 ldr r0, [r4, #0] 1373a: 3024 adds r0, #36 ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 1373c: 224c movs r2, #76 ; 0x4c 1373e: 21b7 movs r1, #183 ; 0xb7 13740: 47b8 blx r7 style_init_reset(&styles->bar_indic); 13742: 6820 ldr r0, [r4, #0] 13744: 3028 adds r0, #40 ; 0x28 13746: 4b1b ldr r3, [pc, #108] ; (137b4 ) 13748: 4798 blx r3 lv_style_set_bg_opa(&styles->bar_indic, LV_STATE_DEFAULT, LV_OPA_COVER); 1374a: 6820 ldr r0, [r4, #0] 1374c: 3028 adds r0, #40 ; 0x28 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 1374e: 22ff movs r2, #255 ; 0xff 13750: 212c movs r1, #44 ; 0x2c 13752: 47c0 blx r8 lv_style_set_radius(&styles->bar_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 13754: 6820 ldr r0, [r4, #0] 13756: 3028 adds r0, #40 ; 0x28 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 13758: 4a17 ldr r2, [pc, #92] ; (137b8 ) 1375a: 2101 movs r1, #1 1375c: 47b8 blx r7 lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DEFAULT, theme.color_primary); 1375e: 6820 ldr r0, [r4, #0] 13760: 3028 adds r0, #40 ; 0x28 13762: 88b2 ldrh r2, [r6, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 13764: 2129 movs r1, #41 ; 0x29 13766: 47a8 blx r5 lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DISABLED, lv_color_hex3(0x888)); 13768: 6820 ldr r0, [r4, #0] 1376a: 3028 adds r0, #40 ; 0x28 1376c: 4b18 ldr r3, [pc, #96] ; (137d0 ) 1376e: 881a ldrh r2, [r3, #0] 13770: 4918 ldr r1, [pc, #96] ; (137d4 ) 13772: 47a8 blx r5 lv_style_set_value_color(&styles->bar_indic, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x41404f) : LV_COLOR_WHITE); 13774: 6820 ldr r0, [r4, #0] 13776: 3028 adds r0, #40 ; 0x28 13778: 69b3 ldr r3, [r6, #24] 1377a: 079b lsls r3, r3, #30 1377c: d414 bmi.n 137a8 1377e: 231f movs r3, #31 13780: 213f movs r1, #63 ; 0x3f 13782: 221f movs r2, #31 13784: 0149 lsls r1, r1, #5 13786: 02db lsls r3, r3, #11 13788: 430a orrs r2, r1 1378a: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 1378c: 2179 movs r1, #121 ; 0x79 1378e: 4b0e ldr r3, [pc, #56] ; (137c8 ) 13790: 4798 blx r3 } 13792: bc04 pop {r2} 13794: 4690 mov r8, r2 13796: bdf0 pop {r4, r5, r6, r7, pc} 13798: 231a movs r3, #26 1379a: 2135 movs r1, #53 ; 0x35 1379c: 221b movs r2, #27 1379e: e78f b.n 136c0 137a0: 2306 movs r3, #6 137a2: 2110 movs r1, #16 137a4: 2209 movs r2, #9 137a6: e79c b.n 136e2 137a8: 2308 movs r3, #8 137aa: 2110 movs r1, #16 137ac: 2209 movs r2, #9 137ae: e7e9 b.n 13784 137b0: 20004c38 .word 0x20004c38 137b4: 00012495 .word 0x00012495 137b8: 00007fff .word 0x00007fff 137bc: 00004cf5 .word 0x00004cf5 137c0: 00004fb5 .word 0x00004fb5 137c4: 20004c3c .word 0x20004c3c 137c8: 00004e55 .word 0x00004e55 137cc: 00000449 .word 0x00000449 137d0: 0001c928 .word 0x0001c928 137d4: 00002029 .word 0x00002029 000137d8 : { 137d8: b510 push {r4, lr} style_init_reset(&styles->slider_knob); 137da: 4c9a ldr r4, [pc, #616] ; (13a44 ) 137dc: 6820 ldr r0, [r4, #0] 137de: 3090 adds r0, #144 ; 0x90 137e0: 4b99 ldr r3, [pc, #612] ; (13a48 ) 137e2: 4798 blx r3 lv_style_set_bg_opa(&styles->slider_knob, LV_STATE_DEFAULT, LV_OPA_COVER); 137e4: 6820 ldr r0, [r4, #0] 137e6: 3090 adds r0, #144 ; 0x90 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 137e8: 22ff movs r2, #255 ; 0xff 137ea: 212c movs r1, #44 ; 0x2c 137ec: 4b97 ldr r3, [pc, #604] ; (13a4c ) 137ee: 4798 blx r3 lv_style_set_bg_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? theme.color_primary : LV_COLOR_WHITE); 137f0: 6820 ldr r0, [r4, #0] 137f2: 3090 adds r0, #144 ; 0x90 137f4: 4b96 ldr r3, [pc, #600] ; (13a50 ) 137f6: 699b ldr r3, [r3, #24] 137f8: 079b lsls r3, r3, #30 137fa: d400 bmi.n 137fe 137fc: e0bb b.n 13976 137fe: 4b94 ldr r3, [pc, #592] ; (13a50 ) 13800: 889a ldrh r2, [r3, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 13802: 2129 movs r1, #41 ; 0x29 13804: 4b93 ldr r3, [pc, #588] ; (13a54 ) 13806: 4798 blx r3 lv_style_set_value_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 13808: 4b8e ldr r3, [pc, #568] ; (13a44 ) 1380a: 6818 ldr r0, [r3, #0] 1380c: 3090 adds r0, #144 ; 0x90 1380e: 4b90 ldr r3, [pc, #576] ; (13a50 ) 13810: 699b ldr r3, [r3, #24] 13812: 079b lsls r3, r3, #30 13814: d500 bpl.n 13818 13816: e0b1 b.n 1397c 13818: 231f movs r3, #31 1381a: 213f movs r1, #63 ; 0x3f 1381c: 221f movs r2, #31 1381e: 0149 lsls r1, r1, #5 13820: 02db lsls r3, r3, #11 13822: 430a orrs r2, r1 13824: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 13826: 2179 movs r1, #121 ; 0x79 13828: 4b8a ldr r3, [pc, #552] ; (13a54 ) 1382a: 4798 blx r3 lv_style_set_radius(&styles->slider_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 1382c: 4c85 ldr r4, [pc, #532] ; (13a44 ) 1382e: 6820 ldr r0, [r4, #0] 13830: 3090 adds r0, #144 ; 0x90 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 13832: 4a89 ldr r2, [pc, #548] ; (13a58 ) 13834: 2101 movs r1, #1 13836: 4b89 ldr r3, [pc, #548] ; (13a5c ) 13838: 4798 blx r3 lv_style_set_pad_left(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 1383a: 6824 ldr r4, [r4, #0] 1383c: 3490 adds r4, #144 ; 0x90 1383e: 2000 movs r0, #0 13840: 4b87 ldr r3, [pc, #540] ; (13a60 ) 13842: 4798 blx r3 13844: 00c3 lsls r3, r0, #3 13846: 1a18 subs r0, r3, r0 13848: 3050 adds r0, #80 ; 0x50 1384a: 2340 movs r3, #64 ; 0x40 1384c: 33ff adds r3, #255 ; 0xff 1384e: 2201 movs r2, #1 13850: 4298 cmp r0, r3 13852: d900 bls.n 13856 13854: e096 b.n 13984 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 13856: 2112 movs r1, #18 13858: 0020 movs r0, r4 1385a: 4b80 ldr r3, [pc, #512] ; (13a5c ) 1385c: 4798 blx r3 lv_style_set_pad_right(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 1385e: 4b79 ldr r3, [pc, #484] ; (13a44 ) 13860: 681c ldr r4, [r3, #0] 13862: 3490 adds r4, #144 ; 0x90 13864: 2000 movs r0, #0 13866: 4b7e ldr r3, [pc, #504] ; (13a60 ) 13868: 4798 blx r3 1386a: 00c3 lsls r3, r0, #3 1386c: 1a18 subs r0, r3, r0 1386e: 3050 adds r0, #80 ; 0x50 13870: 2340 movs r3, #64 ; 0x40 13872: 33ff adds r3, #255 ; 0xff 13874: 2201 movs r2, #1 13876: 4298 cmp r0, r3 13878: d900 bls.n 1387c 1387a: e08e b.n 1399a _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 1387c: 2113 movs r1, #19 1387e: 0020 movs r0, r4 13880: 4b76 ldr r3, [pc, #472] ; (13a5c ) 13882: 4798 blx r3 lv_style_set_pad_top(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 13884: 4b6f ldr r3, [pc, #444] ; (13a44 ) 13886: 681c ldr r4, [r3, #0] 13888: 3490 adds r4, #144 ; 0x90 1388a: 2000 movs r0, #0 1388c: 4b74 ldr r3, [pc, #464] ; (13a60 ) 1388e: 4798 blx r3 13890: 00c3 lsls r3, r0, #3 13892: 1a18 subs r0, r3, r0 13894: 3050 adds r0, #80 ; 0x50 13896: 2340 movs r3, #64 ; 0x40 13898: 33ff adds r3, #255 ; 0xff 1389a: 2201 movs r2, #1 1389c: 4298 cmp r0, r3 1389e: d900 bls.n 138a2 138a0: e086 b.n 139b0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 138a2: 2110 movs r1, #16 138a4: 0020 movs r0, r4 138a6: 4b6d ldr r3, [pc, #436] ; (13a5c ) 138a8: 4798 blx r3 lv_style_set_pad_bottom(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 138aa: 4b66 ldr r3, [pc, #408] ; (13a44 ) 138ac: 681c ldr r4, [r3, #0] 138ae: 3490 adds r4, #144 ; 0x90 138b0: 2000 movs r0, #0 138b2: 4b6b ldr r3, [pc, #428] ; (13a60 ) 138b4: 4798 blx r3 138b6: 00c3 lsls r3, r0, #3 138b8: 1a18 subs r0, r3, r0 138ba: 3050 adds r0, #80 ; 0x50 138bc: 2340 movs r3, #64 ; 0x40 138be: 33ff adds r3, #255 ; 0xff 138c0: 2201 movs r2, #1 138c2: 4298 cmp r0, r3 138c4: d900 bls.n 138c8 138c6: e07e b.n 139c6 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 138c8: 2111 movs r1, #17 138ca: 0020 movs r0, r4 138cc: 4b63 ldr r3, [pc, #396] ; (13a5c ) 138ce: 4798 blx r3 style_init_reset(&styles->slider_bg); 138d0: 4c5c ldr r4, [pc, #368] ; (13a44 ) 138d2: 6820 ldr r0, [r4, #0] 138d4: 3094 adds r0, #148 ; 0x94 138d6: 4b5c ldr r3, [pc, #368] ; (13a48 ) 138d8: 4798 blx r3 lv_style_set_margin_left(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 138da: 6824 ldr r4, [r4, #0] 138dc: 3494 adds r4, #148 ; 0x94 138de: 2000 movs r0, #0 138e0: 4b5f ldr r3, [pc, #380] ; (13a60 ) 138e2: 4798 blx r3 138e4: 0083 lsls r3, r0, #2 138e6: 181b adds r3, r3, r0 138e8: 005b lsls r3, r3, #1 138ea: 3350 adds r3, #80 ; 0x50 138ec: 2140 movs r1, #64 ; 0x40 138ee: 31ff adds r1, #255 ; 0xff 138f0: 2201 movs r2, #1 138f2: 428b cmp r3, r1 138f4: d900 bls.n 138f8 138f6: e071 b.n 139dc _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_LEFT, margin_left, lv_style_int_t, _int, scalar) 138f8: 2117 movs r1, #23 138fa: 0020 movs r0, r4 138fc: 4b57 ldr r3, [pc, #348] ; (13a5c ) 138fe: 4798 blx r3 lv_style_set_margin_right(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 13900: 4b50 ldr r3, [pc, #320] ; (13a44 ) 13902: 681c ldr r4, [r3, #0] 13904: 3494 adds r4, #148 ; 0x94 13906: 2000 movs r0, #0 13908: 4b55 ldr r3, [pc, #340] ; (13a60 ) 1390a: 4798 blx r3 1390c: 0083 lsls r3, r0, #2 1390e: 181b adds r3, r3, r0 13910: 005b lsls r3, r3, #1 13912: 3350 adds r3, #80 ; 0x50 13914: 2140 movs r1, #64 ; 0x40 13916: 31ff adds r1, #255 ; 0xff 13918: 2201 movs r2, #1 1391a: 428b cmp r3, r1 1391c: d900 bls.n 13920 1391e: e06a b.n 139f6 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_RIGHT, margin_right, lv_style_int_t, _int, scalar) 13920: 2118 movs r1, #24 13922: 0020 movs r0, r4 13924: 4b4d ldr r3, [pc, #308] ; (13a5c ) 13926: 4798 blx r3 lv_style_set_margin_top(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 13928: 4b46 ldr r3, [pc, #280] ; (13a44 ) 1392a: 681c ldr r4, [r3, #0] 1392c: 3494 adds r4, #148 ; 0x94 1392e: 2000 movs r0, #0 13930: 4b4b ldr r3, [pc, #300] ; (13a60 ) 13932: 4798 blx r3 13934: 0083 lsls r3, r0, #2 13936: 181b adds r3, r3, r0 13938: 005b lsls r3, r3, #1 1393a: 3350 adds r3, #80 ; 0x50 1393c: 2140 movs r1, #64 ; 0x40 1393e: 31ff adds r1, #255 ; 0xff 13940: 2201 movs r2, #1 13942: 428b cmp r3, r1 13944: d864 bhi.n 13a10 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_TOP, margin_top, lv_style_int_t, _int, scalar) 13946: 2115 movs r1, #21 13948: 0020 movs r0, r4 1394a: 4b44 ldr r3, [pc, #272] ; (13a5c ) 1394c: 4798 blx r3 lv_style_set_margin_bottom(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 1394e: 4b3d ldr r3, [pc, #244] ; (13a44 ) 13950: 681c ldr r4, [r3, #0] 13952: 3494 adds r4, #148 ; 0x94 13954: 2000 movs r0, #0 13956: 4b42 ldr r3, [pc, #264] ; (13a60 ) 13958: 4798 blx r3 1395a: 0083 lsls r3, r0, #2 1395c: 181b adds r3, r3, r0 1395e: 005b lsls r3, r3, #1 13960: 3350 adds r3, #80 ; 0x50 13962: 2140 movs r1, #64 ; 0x40 13964: 31ff adds r1, #255 ; 0xff 13966: 2201 movs r2, #1 13968: 428b cmp r3, r1 1396a: d85e bhi.n 13a2a _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_BOTTOM, margin_bottom, lv_style_int_t, _int, scalar) 1396c: 2116 movs r1, #22 1396e: 0020 movs r0, r4 13970: 4b3a ldr r3, [pc, #232] ; (13a5c ) 13972: 4798 blx r3 } 13974: bd10 pop {r4, pc} lv_style_set_bg_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? theme.color_primary : LV_COLOR_WHITE); 13976: 4b3b ldr r3, [pc, #236] ; (13a64 ) 13978: 881a ldrh r2, [r3, #0] 1397a: e742 b.n 13802 1397c: 2306 movs r3, #6 1397e: 2110 movs r1, #16 13980: 2209 movs r2, #9 13982: e74c b.n 1381e lv_style_set_pad_left(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 13984: 2000 movs r0, #0 13986: 4b36 ldr r3, [pc, #216] ; (13a60 ) 13988: 4798 blx r3 1398a: 00c3 lsls r3, r0, #3 1398c: 1a18 subs r0, r3, r0 1398e: 3050 adds r0, #80 ; 0x50 13990: 21a0 movs r1, #160 ; 0xa0 13992: 4b35 ldr r3, [pc, #212] ; (13a68 ) 13994: 4798 blx r3 13996: b202 sxth r2, r0 13998: e75d b.n 13856 lv_style_set_pad_right(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 1399a: 2000 movs r0, #0 1399c: 4b30 ldr r3, [pc, #192] ; (13a60 ) 1399e: 4798 blx r3 139a0: 00c3 lsls r3, r0, #3 139a2: 1a18 subs r0, r3, r0 139a4: 3050 adds r0, #80 ; 0x50 139a6: 21a0 movs r1, #160 ; 0xa0 139a8: 4b2f ldr r3, [pc, #188] ; (13a68 ) 139aa: 4798 blx r3 139ac: b202 sxth r2, r0 139ae: e765 b.n 1387c lv_style_set_pad_top(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 139b0: 2000 movs r0, #0 139b2: 4b2b ldr r3, [pc, #172] ; (13a60 ) 139b4: 4798 blx r3 139b6: 00c3 lsls r3, r0, #3 139b8: 1a18 subs r0, r3, r0 139ba: 3050 adds r0, #80 ; 0x50 139bc: 21a0 movs r1, #160 ; 0xa0 139be: 4b2a ldr r3, [pc, #168] ; (13a68 ) 139c0: 4798 blx r3 139c2: b202 sxth r2, r0 139c4: e76d b.n 138a2 lv_style_set_pad_bottom(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 139c6: 2000 movs r0, #0 139c8: 4b25 ldr r3, [pc, #148] ; (13a60 ) 139ca: 4798 blx r3 139cc: 00c3 lsls r3, r0, #3 139ce: 1a18 subs r0, r3, r0 139d0: 3050 adds r0, #80 ; 0x50 139d2: 21a0 movs r1, #160 ; 0xa0 139d4: 4b24 ldr r3, [pc, #144] ; (13a68 ) 139d6: 4798 blx r3 139d8: b202 sxth r2, r0 139da: e775 b.n 138c8 lv_style_set_margin_left(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 139dc: 2000 movs r0, #0 139de: 4b20 ldr r3, [pc, #128] ; (13a60 ) 139e0: 4798 blx r3 139e2: 0003 movs r3, r0 139e4: 0080 lsls r0, r0, #2 139e6: 18c0 adds r0, r0, r3 139e8: 0040 lsls r0, r0, #1 139ea: 3050 adds r0, #80 ; 0x50 139ec: 21a0 movs r1, #160 ; 0xa0 139ee: 4b1e ldr r3, [pc, #120] ; (13a68 ) 139f0: 4798 blx r3 139f2: b202 sxth r2, r0 139f4: e780 b.n 138f8 lv_style_set_margin_right(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 139f6: 2000 movs r0, #0 139f8: 4b19 ldr r3, [pc, #100] ; (13a60 ) 139fa: 4798 blx r3 139fc: 0003 movs r3, r0 139fe: 0080 lsls r0, r0, #2 13a00: 18c0 adds r0, r0, r3 13a02: 0040 lsls r0, r0, #1 13a04: 3050 adds r0, #80 ; 0x50 13a06: 21a0 movs r1, #160 ; 0xa0 13a08: 4b17 ldr r3, [pc, #92] ; (13a68 ) 13a0a: 4798 blx r3 13a0c: b202 sxth r2, r0 13a0e: e787 b.n 13920 lv_style_set_margin_top(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 13a10: 2000 movs r0, #0 13a12: 4b13 ldr r3, [pc, #76] ; (13a60 ) 13a14: 4798 blx r3 13a16: 0003 movs r3, r0 13a18: 0080 lsls r0, r0, #2 13a1a: 18c0 adds r0, r0, r3 13a1c: 0040 lsls r0, r0, #1 13a1e: 3050 adds r0, #80 ; 0x50 13a20: 21a0 movs r1, #160 ; 0xa0 13a22: 4b11 ldr r3, [pc, #68] ; (13a68 ) 13a24: 4798 blx r3 13a26: b202 sxth r2, r0 13a28: e78d b.n 13946 lv_style_set_margin_bottom(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 13a2a: 2000 movs r0, #0 13a2c: 4b0c ldr r3, [pc, #48] ; (13a60 ) 13a2e: 4798 blx r3 13a30: 0003 movs r3, r0 13a32: 0080 lsls r0, r0, #2 13a34: 18c0 adds r0, r0, r3 13a36: 0040 lsls r0, r0, #1 13a38: 3050 adds r0, #80 ; 0x50 13a3a: 21a0 movs r1, #160 ; 0xa0 13a3c: 4b0a ldr r3, [pc, #40] ; (13a68 ) 13a3e: 4798 blx r3 13a40: b202 sxth r2, r0 13a42: e793 b.n 1396c 13a44: 20004c38 .word 0x20004c38 13a48: 00012495 .word 0x00012495 13a4c: 00004fb5 .word 0x00004fb5 13a50: 20004c3c .word 0x20004c3c 13a54: 00004e55 .word 0x00004e55 13a58: 00007fff .word 0x00007fff 13a5c: 00004cf5 .word 0x00004cf5 13a60: 0000f665 .word 0x0000f665 13a64: 0001c92c .word 0x0001c92c 13a68: 00017881 .word 0x00017881 00013a6c : { 13a6c: b510 push {r4, lr} style_init_reset(&styles->sw_knob); 13a6e: 4c46 ldr r4, [pc, #280] ; (13b88 ) 13a70: 6820 ldr r0, [r4, #0] 13a72: 309c adds r0, #156 ; 0x9c 13a74: 4b45 ldr r3, [pc, #276] ; (13b8c ) 13a76: 4798 blx r3 lv_style_set_bg_opa(&styles->sw_knob, LV_STATE_DEFAULT, LV_OPA_COVER); 13a78: 6820 ldr r0, [r4, #0] 13a7a: 309c adds r0, #156 ; 0x9c _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 13a7c: 22ff movs r2, #255 ; 0xff 13a7e: 212c movs r1, #44 ; 0x2c 13a80: 4b43 ldr r3, [pc, #268] ; (13b90 ) 13a82: 4798 blx r3 lv_style_set_bg_color(&styles->sw_knob, LV_STATE_DEFAULT, LV_COLOR_WHITE); 13a84: 6820 ldr r0, [r4, #0] 13a86: 309c adds r0, #156 ; 0x9c 13a88: 4b42 ldr r3, [pc, #264] ; (13b94 ) 13a8a: 881a ldrh r2, [r3, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 13a8c: 2129 movs r1, #41 ; 0x29 13a8e: 4b42 ldr r3, [pc, #264] ; (13b98 ) 13a90: 4798 blx r3 lv_style_set_radius(&styles->sw_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 13a92: 6820 ldr r0, [r4, #0] 13a94: 309c adds r0, #156 ; 0x9c _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 13a96: 4a41 ldr r2, [pc, #260] ; (13b9c ) 13a98: 2101 movs r1, #1 13a9a: 4b41 ldr r3, [pc, #260] ; (13ba0 ) 13a9c: 4798 blx r3 lv_style_set_pad_top(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 13a9e: 6824 ldr r4, [r4, #0] 13aa0: 349c adds r4, #156 ; 0x9c 13aa2: 2000 movs r0, #0 13aa4: 4b3f ldr r3, [pc, #252] ; (13ba4 ) 13aa6: 4798 blx r3 13aa8: 3014 adds r0, #20 13aaa: 0080 lsls r0, r0, #2 13aac: 2340 movs r3, #64 ; 0x40 13aae: 33ff adds r3, #255 ; 0xff 13ab0: 4298 cmp r0, r3 13ab2: d83c bhi.n 13b2e 13ab4: 2201 movs r2, #1 13ab6: 4252 negs r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 13ab8: 2110 movs r1, #16 13aba: 0020 movs r0, r4 13abc: 4b38 ldr r3, [pc, #224] ; (13ba0 ) 13abe: 4798 blx r3 lv_style_set_pad_bottom(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 13ac0: 4b31 ldr r3, [pc, #196] ; (13b88 ) 13ac2: 681c ldr r4, [r3, #0] 13ac4: 349c adds r4, #156 ; 0x9c 13ac6: 2000 movs r0, #0 13ac8: 4b36 ldr r3, [pc, #216] ; (13ba4 ) 13aca: 4798 blx r3 13acc: 3014 adds r0, #20 13ace: 0080 lsls r0, r0, #2 13ad0: 2340 movs r3, #64 ; 0x40 13ad2: 33ff adds r3, #255 ; 0xff 13ad4: 4298 cmp r0, r3 13ad6: d835 bhi.n 13b44 13ad8: 2201 movs r2, #1 13ada: 4252 negs r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 13adc: 2111 movs r1, #17 13ade: 0020 movs r0, r4 13ae0: 4b2f ldr r3, [pc, #188] ; (13ba0 ) 13ae2: 4798 blx r3 lv_style_set_pad_left(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 13ae4: 4b28 ldr r3, [pc, #160] ; (13b88 ) 13ae6: 681c ldr r4, [r3, #0] 13ae8: 349c adds r4, #156 ; 0x9c 13aea: 2000 movs r0, #0 13aec: 4b2d ldr r3, [pc, #180] ; (13ba4 ) 13aee: 4798 blx r3 13af0: 3014 adds r0, #20 13af2: 0080 lsls r0, r0, #2 13af4: 2340 movs r3, #64 ; 0x40 13af6: 33ff adds r3, #255 ; 0xff 13af8: 4298 cmp r0, r3 13afa: d82e bhi.n 13b5a 13afc: 2201 movs r2, #1 13afe: 4252 negs r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 13b00: 2112 movs r1, #18 13b02: 0020 movs r0, r4 13b04: 4b26 ldr r3, [pc, #152] ; (13ba0 ) 13b06: 4798 blx r3 lv_style_set_pad_right(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 13b08: 4b1f ldr r3, [pc, #124] ; (13b88 ) 13b0a: 681c ldr r4, [r3, #0] 13b0c: 349c adds r4, #156 ; 0x9c 13b0e: 2000 movs r0, #0 13b10: 4b24 ldr r3, [pc, #144] ; (13ba4 ) 13b12: 4798 blx r3 13b14: 3014 adds r0, #20 13b16: 0080 lsls r0, r0, #2 13b18: 2340 movs r3, #64 ; 0x40 13b1a: 33ff adds r3, #255 ; 0xff 13b1c: 4298 cmp r0, r3 13b1e: d827 bhi.n 13b70 13b20: 2201 movs r2, #1 13b22: 4252 negs r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 13b24: 2113 movs r1, #19 13b26: 0020 movs r0, r4 13b28: 4b1d ldr r3, [pc, #116] ; (13ba0 ) 13b2a: 4798 blx r3 } 13b2c: bd10 pop {r4, pc} lv_style_set_pad_top(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 13b2e: 2000 movs r0, #0 13b30: 4b1c ldr r3, [pc, #112] ; (13ba4 ) 13b32: 4798 blx r3 13b34: 3014 adds r0, #20 13b36: 0080 lsls r0, r0, #2 13b38: 21a0 movs r1, #160 ; 0xa0 13b3a: 4b1b ldr r3, [pc, #108] ; (13ba8 ) 13b3c: 4798 blx r3 13b3e: 4242 negs r2, r0 13b40: b212 sxth r2, r2 13b42: e7b9 b.n 13ab8 lv_style_set_pad_bottom(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 13b44: 2000 movs r0, #0 13b46: 4b17 ldr r3, [pc, #92] ; (13ba4 ) 13b48: 4798 blx r3 13b4a: 3014 adds r0, #20 13b4c: 0080 lsls r0, r0, #2 13b4e: 21a0 movs r1, #160 ; 0xa0 13b50: 4b15 ldr r3, [pc, #84] ; (13ba8 ) 13b52: 4798 blx r3 13b54: 4242 negs r2, r0 13b56: b212 sxth r2, r2 13b58: e7c0 b.n 13adc lv_style_set_pad_left(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 13b5a: 2000 movs r0, #0 13b5c: 4b11 ldr r3, [pc, #68] ; (13ba4 ) 13b5e: 4798 blx r3 13b60: 3014 adds r0, #20 13b62: 0080 lsls r0, r0, #2 13b64: 21a0 movs r1, #160 ; 0xa0 13b66: 4b10 ldr r3, [pc, #64] ; (13ba8 ) 13b68: 4798 blx r3 13b6a: 4242 negs r2, r0 13b6c: b212 sxth r2, r2 13b6e: e7c7 b.n 13b00 lv_style_set_pad_right(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 13b70: 2000 movs r0, #0 13b72: 4b0c ldr r3, [pc, #48] ; (13ba4 ) 13b74: 4798 blx r3 13b76: 3014 adds r0, #20 13b78: 0080 lsls r0, r0, #2 13b7a: 21a0 movs r1, #160 ; 0xa0 13b7c: 4b0a ldr r3, [pc, #40] ; (13ba8 ) 13b7e: 4798 blx r3 13b80: 4242 negs r2, r0 13b82: b212 sxth r2, r2 13b84: e7ce b.n 13b24 13b86: 46c0 nop ; (mov r8, r8) 13b88: 20004c38 .word 0x20004c38 13b8c: 00012495 .word 0x00012495 13b90: 00004fb5 .word 0x00004fb5 13b94: 0001c92c .word 0x0001c92c 13b98: 00004e55 .word 0x00004e55 13b9c: 00007fff .word 0x00007fff 13ba0: 00004cf5 .word 0x00004cf5 13ba4: 0000f665 .word 0x0000f665 13ba8: 00017881 .word 0x00017881 00013bac : { 13bac: b570 push {r4, r5, r6, lr} style_init_reset(&styles->lmeter); 13bae: 4c7f ldr r4, [pc, #508] ; (13dac ) 13bb0: 6820 ldr r0, [r4, #0] 13bb2: 3070 adds r0, #112 ; 0x70 13bb4: 4b7e ldr r3, [pc, #504] ; (13db0 ) 13bb6: 4798 blx r3 lv_style_set_radius(&styles->lmeter, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 13bb8: 6820 ldr r0, [r4, #0] 13bba: 3070 adds r0, #112 ; 0x70 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 13bbc: 4a7d ldr r2, [pc, #500] ; (13db4 ) 13bbe: 2101 movs r1, #1 13bc0: 4b7d ldr r3, [pc, #500] ; (13db8 ) 13bc2: 4798 blx r3 lv_style_set_pad_left(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 13bc4: 6824 ldr r4, [r4, #0] 13bc6: 3470 adds r4, #112 ; 0x70 13bc8: 2000 movs r0, #0 13bca: 4b7c ldr r3, [pc, #496] ; (13dbc ) 13bcc: 4798 blx r3 13bce: 0083 lsls r3, r0, #2 13bd0: 181b adds r3, r3, r0 13bd2: 009b lsls r3, r3, #2 13bd4: 3350 adds r3, #80 ; 0x50 13bd6: 2140 movs r1, #64 ; 0x40 13bd8: 31ff adds r1, #255 ; 0xff 13bda: 2201 movs r2, #1 13bdc: 428b cmp r3, r1 13bde: d900 bls.n 13be2 13be0: e08c b.n 13cfc _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 13be2: 2112 movs r1, #18 13be4: 0020 movs r0, r4 13be6: 4b74 ldr r3, [pc, #464] ; (13db8 ) 13be8: 4798 blx r3 lv_style_set_pad_right(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 13bea: 4b70 ldr r3, [pc, #448] ; (13dac ) 13bec: 681c ldr r4, [r3, #0] 13bee: 3470 adds r4, #112 ; 0x70 13bf0: 2000 movs r0, #0 13bf2: 4b72 ldr r3, [pc, #456] ; (13dbc ) 13bf4: 4798 blx r3 13bf6: 0083 lsls r3, r0, #2 13bf8: 181b adds r3, r3, r0 13bfa: 009b lsls r3, r3, #2 13bfc: 3350 adds r3, #80 ; 0x50 13bfe: 2140 movs r1, #64 ; 0x40 13c00: 31ff adds r1, #255 ; 0xff 13c02: 2201 movs r2, #1 13c04: 428b cmp r3, r1 13c06: d900 bls.n 13c0a 13c08: e085 b.n 13d16 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 13c0a: 2113 movs r1, #19 13c0c: 0020 movs r0, r4 13c0e: 4b6a ldr r3, [pc, #424] ; (13db8 ) 13c10: 4798 blx r3 lv_style_set_pad_top(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 13c12: 4b66 ldr r3, [pc, #408] ; (13dac ) 13c14: 681c ldr r4, [r3, #0] 13c16: 3470 adds r4, #112 ; 0x70 13c18: 2000 movs r0, #0 13c1a: 4b68 ldr r3, [pc, #416] ; (13dbc ) 13c1c: 4798 blx r3 13c1e: 0083 lsls r3, r0, #2 13c20: 181b adds r3, r3, r0 13c22: 009b lsls r3, r3, #2 13c24: 3350 adds r3, #80 ; 0x50 13c26: 2140 movs r1, #64 ; 0x40 13c28: 31ff adds r1, #255 ; 0xff 13c2a: 2201 movs r2, #1 13c2c: 428b cmp r3, r1 13c2e: d900 bls.n 13c32 13c30: e07e b.n 13d30 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 13c32: 2110 movs r1, #16 13c34: 0020 movs r0, r4 13c36: 4b60 ldr r3, [pc, #384] ; (13db8 ) 13c38: 4798 blx r3 lv_style_set_pad_inner(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(30)); 13c3a: 4b5c ldr r3, [pc, #368] ; (13dac ) 13c3c: 681c ldr r4, [r3, #0] 13c3e: 3470 adds r4, #112 ; 0x70 13c40: 2000 movs r0, #0 13c42: 4b5e ldr r3, [pc, #376] ; (13dbc ) 13c44: 4798 blx r3 13c46: 0103 lsls r3, r0, #4 13c48: 1a1b subs r3, r3, r0 13c4a: 005b lsls r3, r3, #1 13c4c: 3350 adds r3, #80 ; 0x50 13c4e: 2140 movs r1, #64 ; 0x40 13c50: 31ff adds r1, #255 ; 0xff 13c52: 2201 movs r2, #1 13c54: 428b cmp r3, r1 13c56: d900 bls.n 13c5a 13c58: e077 b.n 13d4a _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 13c5a: 2114 movs r1, #20 13c5c: 0020 movs r0, r4 13c5e: 4b56 ldr r3, [pc, #344] ; (13db8 ) 13c60: 4798 blx r3 lv_style_set_scale_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(25)); 13c62: 4b52 ldr r3, [pc, #328] ; (13dac ) 13c64: 681c ldr r4, [r3, #0] 13c66: 3470 adds r4, #112 ; 0x70 13c68: 2000 movs r0, #0 13c6a: 4b54 ldr r3, [pc, #336] ; (13dbc ) 13c6c: 4798 blx r3 13c6e: 0083 lsls r3, r0, #2 13c70: 1818 adds r0, r3, r0 13c72: 0083 lsls r3, r0, #2 13c74: 18c0 adds r0, r0, r3 13c76: 3050 adds r0, #80 ; 0x50 13c78: 2340 movs r3, #64 ; 0x40 13c7a: 33ff adds r3, #255 ; 0xff 13c7c: 2201 movs r2, #1 13c7e: 4298 cmp r0, r3 13c80: d900 bls.n 13c84 13c82: e06e b.n 13d62 _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) 13c84: 21c0 movs r1, #192 ; 0xc0 13c86: 0020 movs r0, r4 13c88: 4b4b ldr r3, [pc, #300] ; (13db8 ) 13c8a: 4798 blx r3 lv_style_set_line_color(&styles->lmeter, LV_STATE_DEFAULT, theme.color_primary); 13c8c: 4c47 ldr r4, [pc, #284] ; (13dac ) 13c8e: 6820 ldr r0, [r4, #0] 13c90: 3070 adds r0, #112 ; 0x70 13c92: 4e4b ldr r6, [pc, #300] ; (13dc0 ) 13c94: 88b2 ldrh r2, [r6, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 13c96: 2199 movs r1, #153 ; 0x99 13c98: 4d4a ldr r5, [pc, #296] ; (13dc4 ) 13c9a: 47a8 blx r5 lv_style_set_scale_grad_color(&styles->lmeter, LV_STATE_DEFAULT, theme.color_primary); 13c9c: 6820 ldr r0, [r4, #0] 13c9e: 3070 adds r0, #112 ; 0x70 13ca0: 88b2 ldrh r2, [r6, #4] _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) 13ca2: 21c9 movs r1, #201 ; 0xc9 13ca4: 47a8 blx r5 lv_style_set_scale_end_color(&styles->lmeter, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 13ca6: 6820 ldr r0, [r4, #0] 13ca8: 3070 adds r0, #112 ; 0x70 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar) 13caa: 4b47 ldr r3, [pc, #284] ; (13dc8 ) 13cac: 881a ldrh r2, [r3, #0] 13cae: 21ca movs r1, #202 ; 0xca 13cb0: 47a8 blx r5 lv_style_set_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(10)); 13cb2: 6824 ldr r4, [r4, #0] 13cb4: 3470 adds r4, #112 ; 0x70 13cb6: 2000 movs r0, #0 13cb8: 4b40 ldr r3, [pc, #256] ; (13dbc ) 13cba: 4798 blx r3 13cbc: 0083 lsls r3, r0, #2 13cbe: 181b adds r3, r3, r0 13cc0: 005b lsls r3, r3, #1 13cc2: 3350 adds r3, #80 ; 0x50 13cc4: 2140 movs r1, #64 ; 0x40 13cc6: 31ff adds r1, #255 ; 0xff 13cc8: 2201 movs r2, #1 13cca: 428b cmp r3, r1 13ccc: d856 bhi.n 13d7c _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 13cce: 2190 movs r1, #144 ; 0x90 13cd0: 0020 movs r0, r4 13cd2: 4b39 ldr r3, [pc, #228] ; (13db8 ) 13cd4: 4798 blx r3 lv_style_set_scale_end_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(7)); 13cd6: 4b35 ldr r3, [pc, #212] ; (13dac ) 13cd8: 681c ldr r4, [r3, #0] 13cda: 3470 adds r4, #112 ; 0x70 13cdc: 2000 movs r0, #0 13cde: 4b37 ldr r3, [pc, #220] ; (13dbc ) 13ce0: 4798 blx r3 13ce2: 00c3 lsls r3, r0, #3 13ce4: 1a18 subs r0, r3, r0 13ce6: 3050 adds r0, #80 ; 0x50 13ce8: 2340 movs r3, #64 ; 0x40 13cea: 33ff adds r3, #255 ; 0xff 13cec: 2201 movs r2, #1 13cee: 4298 cmp r0, r3 13cf0: d851 bhi.n 13d96 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) 13cf2: 21c3 movs r1, #195 ; 0xc3 13cf4: 0020 movs r0, r4 13cf6: 4b30 ldr r3, [pc, #192] ; (13db8 ) 13cf8: 4798 blx r3 } 13cfa: bd70 pop {r4, r5, r6, pc} lv_style_set_pad_left(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 13cfc: 2000 movs r0, #0 13cfe: 4b2f ldr r3, [pc, #188] ; (13dbc ) 13d00: 4798 blx r3 13d02: 0003 movs r3, r0 13d04: 0080 lsls r0, r0, #2 13d06: 18c0 adds r0, r0, r3 13d08: 0080 lsls r0, r0, #2 13d0a: 3050 adds r0, #80 ; 0x50 13d0c: 21a0 movs r1, #160 ; 0xa0 13d0e: 4b2f ldr r3, [pc, #188] ; (13dcc ) 13d10: 4798 blx r3 13d12: b202 sxth r2, r0 13d14: e765 b.n 13be2 lv_style_set_pad_right(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 13d16: 2000 movs r0, #0 13d18: 4b28 ldr r3, [pc, #160] ; (13dbc ) 13d1a: 4798 blx r3 13d1c: 0003 movs r3, r0 13d1e: 0080 lsls r0, r0, #2 13d20: 18c0 adds r0, r0, r3 13d22: 0080 lsls r0, r0, #2 13d24: 3050 adds r0, #80 ; 0x50 13d26: 21a0 movs r1, #160 ; 0xa0 13d28: 4b28 ldr r3, [pc, #160] ; (13dcc ) 13d2a: 4798 blx r3 13d2c: b202 sxth r2, r0 13d2e: e76c b.n 13c0a lv_style_set_pad_top(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 13d30: 2000 movs r0, #0 13d32: 4b22 ldr r3, [pc, #136] ; (13dbc ) 13d34: 4798 blx r3 13d36: 0003 movs r3, r0 13d38: 0080 lsls r0, r0, #2 13d3a: 18c0 adds r0, r0, r3 13d3c: 0080 lsls r0, r0, #2 13d3e: 3050 adds r0, #80 ; 0x50 13d40: 21a0 movs r1, #160 ; 0xa0 13d42: 4b22 ldr r3, [pc, #136] ; (13dcc ) 13d44: 4798 blx r3 13d46: b202 sxth r2, r0 13d48: e773 b.n 13c32 lv_style_set_pad_inner(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(30)); 13d4a: 2000 movs r0, #0 13d4c: 4b1b ldr r3, [pc, #108] ; (13dbc ) 13d4e: 4798 blx r3 13d50: 0103 lsls r3, r0, #4 13d52: 1a18 subs r0, r3, r0 13d54: 0040 lsls r0, r0, #1 13d56: 3050 adds r0, #80 ; 0x50 13d58: 21a0 movs r1, #160 ; 0xa0 13d5a: 4b1c ldr r3, [pc, #112] ; (13dcc ) 13d5c: 4798 blx r3 13d5e: b202 sxth r2, r0 13d60: e77b b.n 13c5a lv_style_set_scale_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(25)); 13d62: 2000 movs r0, #0 13d64: 4b15 ldr r3, [pc, #84] ; (13dbc ) 13d66: 4798 blx r3 13d68: 0083 lsls r3, r0, #2 13d6a: 1818 adds r0, r3, r0 13d6c: 0083 lsls r3, r0, #2 13d6e: 18c0 adds r0, r0, r3 13d70: 3050 adds r0, #80 ; 0x50 13d72: 21a0 movs r1, #160 ; 0xa0 13d74: 4b15 ldr r3, [pc, #84] ; (13dcc ) 13d76: 4798 blx r3 13d78: b202 sxth r2, r0 13d7a: e783 b.n 13c84 lv_style_set_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(10)); 13d7c: 2000 movs r0, #0 13d7e: 4b0f ldr r3, [pc, #60] ; (13dbc ) 13d80: 4798 blx r3 13d82: 0003 movs r3, r0 13d84: 0080 lsls r0, r0, #2 13d86: 18c0 adds r0, r0, r3 13d88: 0040 lsls r0, r0, #1 13d8a: 3050 adds r0, #80 ; 0x50 13d8c: 21a0 movs r1, #160 ; 0xa0 13d8e: 4b0f ldr r3, [pc, #60] ; (13dcc ) 13d90: 4798 blx r3 13d92: b202 sxth r2, r0 13d94: e79b b.n 13cce lv_style_set_scale_end_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(7)); 13d96: 2000 movs r0, #0 13d98: 4b08 ldr r3, [pc, #32] ; (13dbc ) 13d9a: 4798 blx r3 13d9c: 00c3 lsls r3, r0, #3 13d9e: 1a18 subs r0, r3, r0 13da0: 3050 adds r0, #80 ; 0x50 13da2: 21a0 movs r1, #160 ; 0xa0 13da4: 4b09 ldr r3, [pc, #36] ; (13dcc ) 13da6: 4798 blx r3 13da8: b202 sxth r2, r0 13daa: e7a2 b.n 13cf2 13dac: 20004c38 .word 0x20004c38 13db0: 00012495 .word 0x00012495 13db4: 00007fff .word 0x00007fff 13db8: 00004cf5 .word 0x00004cf5 13dbc: 0000f665 .word 0x0000f665 13dc0: 20004c3c .word 0x20004c3c 13dc4: 00004e55 .word 0x00004e55 13dc8: 0001c928 .word 0x0001c928 13dcc: 00017881 .word 0x00017881 00013dd0 : { 13dd0: b5f0 push {r4, r5, r6, r7, lr} 13dd2: 46c6 mov lr, r8 13dd4: b500 push {lr} style_init_reset(&styles->gauge_main); 13dd6: 4de3 ldr r5, [pc, #908] ; (14164 ) 13dd8: 6828 ldr r0, [r5, #0] 13dda: 305c adds r0, #92 ; 0x5c 13ddc: 4be2 ldr r3, [pc, #904] ; (14168 ) 13dde: 4798 blx r3 lv_style_set_line_color(&styles->gauge_main, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 13de0: 6828 ldr r0, [r5, #0] 13de2: 305c adds r0, #92 ; 0x5c 13de4: 2711 movs r7, #17 13de6: 2488 movs r4, #136 ; 0x88 13de8: 00e4 lsls r4, r4, #3 13dea: 0022 movs r2, r4 13dec: 433a orrs r2, r7 13dee: 0552 lsls r2, r2, #21 13df0: 0d52 lsrs r2, r2, #21 13df2: 4ede ldr r6, [pc, #888] ; (1416c ) 13df4: 4332 orrs r2, r6 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 13df6: 2199 movs r1, #153 ; 0x99 13df8: 4bdd ldr r3, [pc, #884] ; (14170 ) 13dfa: 4698 mov r8, r3 13dfc: 4798 blx r3 lv_style_set_scale_grad_color(&styles->gauge_main, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 13dfe: 6828 ldr r0, [r5, #0] 13e00: 305c adds r0, #92 ; 0x5c 13e02: 0022 movs r2, r4 13e04: 433a orrs r2, r7 13e06: 0552 lsls r2, r2, #21 13e08: 0d52 lsrs r2, r2, #21 13e0a: 4332 orrs r2, r6 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_GRAD_COLOR, scale_grad_color, lv_color_t, _color, nonscalar) 13e0c: 21c9 movs r1, #201 ; 0xc9 13e0e: 47c0 blx r8 lv_style_set_scale_end_color(&styles->gauge_main, LV_STATE_DEFAULT, theme.color_primary); 13e10: 6828 ldr r0, [r5, #0] 13e12: 305c adds r0, #92 ; 0x5c 13e14: 4bd7 ldr r3, [pc, #860] ; (14174 ) 13e16: 889a ldrh r2, [r3, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar) 13e18: 21ca movs r1, #202 ; 0xca 13e1a: 47c0 blx r8 lv_style_set_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(5)); 13e1c: 682c ldr r4, [r5, #0] 13e1e: 345c adds r4, #92 ; 0x5c 13e20: 2000 movs r0, #0 13e22: 4bd5 ldr r3, [pc, #852] ; (14178 ) 13e24: 4798 blx r3 13e26: 0083 lsls r3, r0, #2 13e28: 1818 adds r0, r3, r0 13e2a: 3050 adds r0, #80 ; 0x50 13e2c: 2340 movs r3, #64 ; 0x40 13e2e: 33ff adds r3, #255 ; 0xff 13e30: 2201 movs r2, #1 13e32: 4298 cmp r0, r3 13e34: d900 bls.n 13e38 13e36: e15b b.n 140f0 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 13e38: 2190 movs r1, #144 ; 0x90 13e3a: 0020 movs r0, r4 13e3c: 4bcf ldr r3, [pc, #828] ; (1417c ) 13e3e: 4798 blx r3 lv_style_set_scale_end_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(4)); 13e40: 4bc8 ldr r3, [pc, #800] ; (14164 ) 13e42: 681c ldr r4, [r3, #0] 13e44: 345c adds r4, #92 ; 0x5c 13e46: 2000 movs r0, #0 13e48: 4bcb ldr r3, [pc, #812] ; (14178 ) 13e4a: 4798 blx r3 13e4c: 3014 adds r0, #20 13e4e: 0080 lsls r0, r0, #2 13e50: 2340 movs r3, #64 ; 0x40 13e52: 33ff adds r3, #255 ; 0xff 13e54: 2201 movs r2, #1 13e56: 4298 cmp r0, r3 13e58: d900 bls.n 13e5c 13e5a: e155 b.n 14108 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) 13e5c: 21c3 movs r1, #195 ; 0xc3 13e5e: 0020 movs r0, r4 13e60: 4bc6 ldr r3, [pc, #792] ; (1417c ) 13e62: 4798 blx r3 lv_style_set_scale_end_border_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(8)); 13e64: 4bbf ldr r3, [pc, #764] ; (14164 ) 13e66: 681c ldr r4, [r3, #0] 13e68: 345c adds r4, #92 ; 0x5c 13e6a: 2000 movs r0, #0 13e6c: 4bc2 ldr r3, [pc, #776] ; (14178 ) 13e6e: 4798 blx r3 13e70: 300a adds r0, #10 13e72: 00c0 lsls r0, r0, #3 13e74: 2340 movs r3, #64 ; 0x40 13e76: 33ff adds r3, #255 ; 0xff 13e78: 2201 movs r2, #1 13e7a: 4298 cmp r0, r3 13e7c: d900 bls.n 13e80 13e7e: e14d b.n 1411c _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_BORDER_WIDTH, scale_end_border_width, lv_style_int_t, _int, scalar) 13e80: 21c2 movs r1, #194 ; 0xc2 13e82: 0020 movs r0, r4 13e84: 4bbd ldr r3, [pc, #756] ; (1417c ) 13e86: 4798 blx r3 lv_style_set_pad_left(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 13e88: 4bb6 ldr r3, [pc, #728] ; (14164 ) 13e8a: 681c ldr r4, [r3, #0] 13e8c: 345c adds r4, #92 ; 0x5c 13e8e: 2000 movs r0, #0 13e90: 4bb9 ldr r3, [pc, #740] ; (14178 ) 13e92: 4798 blx r3 13e94: 0083 lsls r3, r0, #2 13e96: 181b adds r3, r3, r0 13e98: 009b lsls r3, r3, #2 13e9a: 3350 adds r3, #80 ; 0x50 13e9c: 2140 movs r1, #64 ; 0x40 13e9e: 31ff adds r1, #255 ; 0xff 13ea0: 2201 movs r2, #1 13ea2: 428b cmp r3, r1 13ea4: d900 bls.n 13ea8 13ea6: e143 b.n 14130 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 13ea8: 2112 movs r1, #18 13eaa: 0020 movs r0, r4 13eac: 4bb3 ldr r3, [pc, #716] ; (1417c ) 13eae: 4798 blx r3 lv_style_set_pad_right(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 13eb0: 4bac ldr r3, [pc, #688] ; (14164 ) 13eb2: 681c ldr r4, [r3, #0] 13eb4: 345c adds r4, #92 ; 0x5c 13eb6: 2000 movs r0, #0 13eb8: 4baf ldr r3, [pc, #700] ; (14178 ) 13eba: 4798 blx r3 13ebc: 0083 lsls r3, r0, #2 13ebe: 181b adds r3, r3, r0 13ec0: 009b lsls r3, r3, #2 13ec2: 3350 adds r3, #80 ; 0x50 13ec4: 2140 movs r1, #64 ; 0x40 13ec6: 31ff adds r1, #255 ; 0xff 13ec8: 2201 movs r2, #1 13eca: 428b cmp r3, r1 13ecc: d900 bls.n 13ed0 13ece: e13c b.n 1414a _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 13ed0: 2113 movs r1, #19 13ed2: 0020 movs r0, r4 13ed4: 4ba9 ldr r3, [pc, #676] ; (1417c ) 13ed6: 4798 blx r3 lv_style_set_pad_top(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 13ed8: 4ba2 ldr r3, [pc, #648] ; (14164 ) 13eda: 681c ldr r4, [r3, #0] 13edc: 345c adds r4, #92 ; 0x5c 13ede: 2000 movs r0, #0 13ee0: 4ba5 ldr r3, [pc, #660] ; (14178 ) 13ee2: 4798 blx r3 13ee4: 0083 lsls r3, r0, #2 13ee6: 181b adds r3, r3, r0 13ee8: 009b lsls r3, r3, #2 13eea: 3350 adds r3, #80 ; 0x50 13eec: 2140 movs r1, #64 ; 0x40 13eee: 31ff adds r1, #255 ; 0xff 13ef0: 2201 movs r2, #1 13ef2: 428b cmp r3, r1 13ef4: d900 bls.n 13ef8 13ef6: e149 b.n 1418c _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 13ef8: 2110 movs r1, #16 13efa: 0020 movs r0, r4 13efc: 4b9f ldr r3, [pc, #636] ; (1417c ) 13efe: 4798 blx r3 lv_style_set_pad_inner(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 13f00: 4b98 ldr r3, [pc, #608] ; (14164 ) 13f02: 681c ldr r4, [r3, #0] 13f04: 345c adds r4, #92 ; 0x5c 13f06: 2000 movs r0, #0 13f08: 4b9b ldr r3, [pc, #620] ; (14178 ) 13f0a: 4798 blx r3 13f0c: 0083 lsls r3, r0, #2 13f0e: 181b adds r3, r3, r0 13f10: 009b lsls r3, r3, #2 13f12: 3350 adds r3, #80 ; 0x50 13f14: 2140 movs r1, #64 ; 0x40 13f16: 31ff adds r1, #255 ; 0xff 13f18: 2201 movs r2, #1 13f1a: 428b cmp r3, r1 13f1c: d900 bls.n 13f20 13f1e: e142 b.n 141a6 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 13f20: 2114 movs r1, #20 13f22: 0020 movs r0, r4 13f24: 4b95 ldr r3, [pc, #596] ; (1417c ) 13f26: 4798 blx r3 lv_style_set_scale_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(15)); 13f28: 4b8e ldr r3, [pc, #568] ; (14164 ) 13f2a: 681c ldr r4, [r3, #0] 13f2c: 345c adds r4, #92 ; 0x5c 13f2e: 2000 movs r0, #0 13f30: 4b91 ldr r3, [pc, #580] ; (14178 ) 13f32: 4798 blx r3 13f34: 0103 lsls r3, r0, #4 13f36: 1a18 subs r0, r3, r0 13f38: 3050 adds r0, #80 ; 0x50 13f3a: 2340 movs r3, #64 ; 0x40 13f3c: 33ff adds r3, #255 ; 0xff 13f3e: 2201 movs r2, #1 13f40: 4298 cmp r0, r3 13f42: d900 bls.n 13f46 13f44: e13c b.n 141c0 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 13f46: 21c0 movs r1, #192 ; 0xc0 13f48: 0020 movs r0, r4 13f4a: 4c8c ldr r4, [pc, #560] ; (1417c ) 13f4c: 47a0 blx r4 lv_style_set_radius(&styles->gauge_main, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 13f4e: 4d85 ldr r5, [pc, #532] ; (14164 ) 13f50: 6828 ldr r0, [r5, #0] 13f52: 305c adds r0, #92 ; 0x5c _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 13f54: 4a8a ldr r2, [pc, #552] ; (14180 ) 13f56: 2101 movs r1, #1 13f58: 47a0 blx r4 style_init_reset(&styles->gauge_strong); 13f5a: 6828 ldr r0, [r5, #0] 13f5c: 3060 adds r0, #96 ; 0x60 13f5e: 4b82 ldr r3, [pc, #520] ; (14168 ) 13f60: 4798 blx r3 lv_style_set_line_color(&styles->gauge_strong, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 13f62: 6828 ldr r0, [r5, #0] 13f64: 3060 adds r0, #96 ; 0x60 13f66: 2711 movs r7, #17 13f68: 2488 movs r4, #136 ; 0x88 13f6a: 00e4 lsls r4, r4, #3 13f6c: 0022 movs r2, r4 13f6e: 433a orrs r2, r7 13f70: 0552 lsls r2, r2, #21 13f72: 0d52 lsrs r2, r2, #21 13f74: 4e7d ldr r6, [pc, #500] ; (1416c ) 13f76: 4332 orrs r2, r6 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 13f78: 2199 movs r1, #153 ; 0x99 13f7a: 4b7d ldr r3, [pc, #500] ; (14170 ) 13f7c: 4698 mov r8, r3 13f7e: 4798 blx r3 lv_style_set_scale_grad_color(&styles->gauge_strong, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 13f80: 6828 ldr r0, [r5, #0] 13f82: 3060 adds r0, #96 ; 0x60 13f84: 0022 movs r2, r4 13f86: 433a orrs r2, r7 13f88: 0552 lsls r2, r2, #21 13f8a: 0d52 lsrs r2, r2, #21 13f8c: 4332 orrs r2, r6 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_GRAD_COLOR, scale_grad_color, lv_color_t, _color, nonscalar) 13f8e: 21c9 movs r1, #201 ; 0xc9 13f90: 47c0 blx r8 lv_style_set_scale_end_color(&styles->gauge_strong, LV_STATE_DEFAULT, theme.color_primary); 13f92: 6828 ldr r0, [r5, #0] 13f94: 3060 adds r0, #96 ; 0x60 13f96: 4b77 ldr r3, [pc, #476] ; (14174 ) 13f98: 889a ldrh r2, [r3, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar) 13f9a: 21ca movs r1, #202 ; 0xca 13f9c: 47c0 blx r8 lv_style_set_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 13f9e: 682c ldr r4, [r5, #0] 13fa0: 3460 adds r4, #96 ; 0x60 13fa2: 2000 movs r0, #0 13fa4: 4b74 ldr r3, [pc, #464] ; (14178 ) 13fa6: 4798 blx r3 13fa8: 300a adds r0, #10 13faa: 00c0 lsls r0, r0, #3 13fac: 2340 movs r3, #64 ; 0x40 13fae: 33ff adds r3, #255 ; 0xff 13fb0: 2201 movs r2, #1 13fb2: 4298 cmp r0, r3 13fb4: d900 bls.n 13fb8 13fb6: e10e b.n 141d6 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 13fb8: 2190 movs r1, #144 ; 0x90 13fba: 0020 movs r0, r4 13fbc: 4b6f ldr r3, [pc, #444] ; (1417c ) 13fbe: 4798 blx r3 lv_style_set_scale_end_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 13fc0: 4b68 ldr r3, [pc, #416] ; (14164 ) 13fc2: 681c ldr r4, [r3, #0] 13fc4: 3460 adds r4, #96 ; 0x60 13fc6: 2000 movs r0, #0 13fc8: 4b6b ldr r3, [pc, #428] ; (14178 ) 13fca: 4798 blx r3 13fcc: 300a adds r0, #10 13fce: 00c0 lsls r0, r0, #3 13fd0: 2340 movs r3, #64 ; 0x40 13fd2: 33ff adds r3, #255 ; 0xff 13fd4: 2201 movs r2, #1 13fd6: 4298 cmp r0, r3 13fd8: d900 bls.n 13fdc 13fda: e106 b.n 141ea _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) 13fdc: 21c3 movs r1, #195 ; 0xc3 13fde: 0020 movs r0, r4 13fe0: 4b66 ldr r3, [pc, #408] ; (1417c ) 13fe2: 4798 blx r3 lv_style_set_scale_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(25)); 13fe4: 4b5f ldr r3, [pc, #380] ; (14164 ) 13fe6: 681c ldr r4, [r3, #0] 13fe8: 3460 adds r4, #96 ; 0x60 13fea: 2000 movs r0, #0 13fec: 4b62 ldr r3, [pc, #392] ; (14178 ) 13fee: 4798 blx r3 13ff0: 0083 lsls r3, r0, #2 13ff2: 1818 adds r0, r3, r0 13ff4: 0083 lsls r3, r0, #2 13ff6: 18c0 adds r0, r0, r3 13ff8: 3050 adds r0, #80 ; 0x50 13ffa: 2340 movs r3, #64 ; 0x40 13ffc: 33ff adds r3, #255 ; 0xff 13ffe: 2201 movs r2, #1 14000: 4298 cmp r0, r3 14002: d900 bls.n 14006 14004: e0fb b.n 141fe _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 14006: 21c0 movs r1, #192 ; 0xc0 14008: 0020 movs r0, r4 1400a: 4b5c ldr r3, [pc, #368] ; (1417c ) 1400c: 4798 blx r3 style_init_reset(&styles->gauge_needle); 1400e: 4c55 ldr r4, [pc, #340] ; (14164 ) 14010: 6820 ldr r0, [r4, #0] 14012: 3064 adds r0, #100 ; 0x64 14014: 4b54 ldr r3, [pc, #336] ; (14168 ) 14016: 4798 blx r3 lv_style_set_line_color(&styles->gauge_needle, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE); 14018: 6820 ldr r0, [r4, #0] 1401a: 3064 adds r0, #100 ; 0x64 1401c: 4b55 ldr r3, [pc, #340] ; (14174 ) 1401e: 699b ldr r3, [r3, #24] 14020: 079b lsls r3, r3, #30 14022: d500 bpl.n 14026 14024: e0f8 b.n 14218 14026: 231f movs r3, #31 14028: 213f movs r1, #63 ; 0x3f 1402a: 221f movs r2, #31 1402c: 0149 lsls r1, r1, #5 1402e: 02db lsls r3, r3, #11 14030: 430a orrs r2, r1 14032: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 14034: 2199 movs r1, #153 ; 0x99 14036: 4b4e ldr r3, [pc, #312] ; (14170 ) 14038: 4798 blx r3 lv_style_set_line_width(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(8)); 1403a: 4b4a ldr r3, [pc, #296] ; (14164 ) 1403c: 681c ldr r4, [r3, #0] 1403e: 3464 adds r4, #100 ; 0x64 14040: 2000 movs r0, #0 14042: 4b4d ldr r3, [pc, #308] ; (14178 ) 14044: 4798 blx r3 14046: 300a adds r0, #10 14048: 00c0 lsls r0, r0, #3 1404a: 2340 movs r3, #64 ; 0x40 1404c: 33ff adds r3, #255 ; 0xff 1404e: 2201 movs r2, #1 14050: 4298 cmp r0, r3 14052: d900 bls.n 14056 14054: e0e4 b.n 14220 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 14056: 2190 movs r1, #144 ; 0x90 14058: 0020 movs r0, r4 1405a: 4b48 ldr r3, [pc, #288] ; (1417c ) 1405c: 4798 blx r3 lv_style_set_bg_opa(&styles->gauge_needle, LV_STATE_DEFAULT, LV_OPA_COVER); 1405e: 4c41 ldr r4, [pc, #260] ; (14164 ) 14060: 6820 ldr r0, [r4, #0] 14062: 3064 adds r0, #100 ; 0x64 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 14064: 22ff movs r2, #255 ; 0xff 14066: 212c movs r1, #44 ; 0x2c 14068: 4b46 ldr r3, [pc, #280] ; (14184 ) 1406a: 4798 blx r3 lv_style_set_bg_color(&styles->gauge_needle, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE); 1406c: 6820 ldr r0, [r4, #0] 1406e: 3064 adds r0, #100 ; 0x64 14070: 4b40 ldr r3, [pc, #256] ; (14174 ) 14072: 699b ldr r3, [r3, #24] 14074: 079b lsls r3, r3, #30 14076: d500 bpl.n 1407a 14078: e0dc b.n 14234 1407a: 231f movs r3, #31 1407c: 213f movs r1, #63 ; 0x3f 1407e: 221f movs r2, #31 14080: 0149 lsls r1, r1, #5 14082: 02db lsls r3, r3, #11 14084: 430a orrs r2, r1 14086: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 14088: 2129 movs r1, #41 ; 0x29 1408a: 4b39 ldr r3, [pc, #228] ; (14170 ) 1408c: 4798 blx r3 lv_style_set_radius(&styles->gauge_needle, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 1408e: 4c35 ldr r4, [pc, #212] ; (14164 ) 14090: 6820 ldr r0, [r4, #0] 14092: 3064 adds r0, #100 ; 0x64 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 14094: 4a3a ldr r2, [pc, #232] ; (14180 ) 14096: 2101 movs r1, #1 14098: 4b38 ldr r3, [pc, #224] ; (1417c ) 1409a: 4798 blx r3 lv_style_set_size(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(30)); 1409c: 6824 ldr r4, [r4, #0] 1409e: 3464 adds r4, #100 ; 0x64 140a0: 2000 movs r0, #0 140a2: 4b35 ldr r3, [pc, #212] ; (14178 ) 140a4: 4798 blx r3 140a6: 0103 lsls r3, r0, #4 140a8: 1a1b subs r3, r3, r0 140aa: 005b lsls r3, r3, #1 140ac: 3350 adds r3, #80 ; 0x50 140ae: 2140 movs r1, #64 ; 0x40 140b0: 31ff adds r1, #255 ; 0xff 140b2: 2201 movs r2, #1 140b4: 428b cmp r3, r1 140b6: d900 bls.n 140ba 140b8: e0c0 b.n 1423c _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 140ba: 2103 movs r1, #3 140bc: 0020 movs r0, r4 140be: 4b2f ldr r3, [pc, #188] ; (1417c ) 140c0: 4798 blx r3 lv_style_set_pad_inner(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(10)); 140c2: 4b28 ldr r3, [pc, #160] ; (14164 ) 140c4: 681c ldr r4, [r3, #0] 140c6: 3464 adds r4, #100 ; 0x64 140c8: 2000 movs r0, #0 140ca: 4b2b ldr r3, [pc, #172] ; (14178 ) 140cc: 4798 blx r3 140ce: 0083 lsls r3, r0, #2 140d0: 181b adds r3, r3, r0 140d2: 005b lsls r3, r3, #1 140d4: 3350 adds r3, #80 ; 0x50 140d6: 2140 movs r1, #64 ; 0x40 140d8: 31ff adds r1, #255 ; 0xff 140da: 2201 movs r2, #1 140dc: 428b cmp r3, r1 140de: d900 bls.n 140e2 140e0: e0b8 b.n 14254 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 140e2: 2114 movs r1, #20 140e4: 0020 movs r0, r4 140e6: 4b25 ldr r3, [pc, #148] ; (1417c ) 140e8: 4798 blx r3 } 140ea: bc04 pop {r2} 140ec: 4690 mov r8, r2 140ee: bdf0 pop {r4, r5, r6, r7, pc} lv_style_set_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(5)); 140f0: 2000 movs r0, #0 140f2: 4b21 ldr r3, [pc, #132] ; (14178 ) 140f4: 4798 blx r3 140f6: 0003 movs r3, r0 140f8: 0080 lsls r0, r0, #2 140fa: 18c0 adds r0, r0, r3 140fc: 3050 adds r0, #80 ; 0x50 140fe: 21a0 movs r1, #160 ; 0xa0 14100: 4b21 ldr r3, [pc, #132] ; (14188 ) 14102: 4798 blx r3 14104: b202 sxth r2, r0 14106: e697 b.n 13e38 lv_style_set_scale_end_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(4)); 14108: 2000 movs r0, #0 1410a: 4b1b ldr r3, [pc, #108] ; (14178 ) 1410c: 4798 blx r3 1410e: 3014 adds r0, #20 14110: 0080 lsls r0, r0, #2 14112: 21a0 movs r1, #160 ; 0xa0 14114: 4b1c ldr r3, [pc, #112] ; (14188 ) 14116: 4798 blx r3 14118: b202 sxth r2, r0 1411a: e69f b.n 13e5c lv_style_set_scale_end_border_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(8)); 1411c: 2000 movs r0, #0 1411e: 4b16 ldr r3, [pc, #88] ; (14178 ) 14120: 4798 blx r3 14122: 300a adds r0, #10 14124: 00c0 lsls r0, r0, #3 14126: 21a0 movs r1, #160 ; 0xa0 14128: 4b17 ldr r3, [pc, #92] ; (14188 ) 1412a: 4798 blx r3 1412c: b202 sxth r2, r0 1412e: e6a7 b.n 13e80 lv_style_set_pad_left(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 14130: 2000 movs r0, #0 14132: 4b11 ldr r3, [pc, #68] ; (14178 ) 14134: 4798 blx r3 14136: 0003 movs r3, r0 14138: 0080 lsls r0, r0, #2 1413a: 18c0 adds r0, r0, r3 1413c: 0080 lsls r0, r0, #2 1413e: 3050 adds r0, #80 ; 0x50 14140: 21a0 movs r1, #160 ; 0xa0 14142: 4b11 ldr r3, [pc, #68] ; (14188 ) 14144: 4798 blx r3 14146: b202 sxth r2, r0 14148: e6ae b.n 13ea8 lv_style_set_pad_right(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 1414a: 2000 movs r0, #0 1414c: 4b0a ldr r3, [pc, #40] ; (14178 ) 1414e: 4798 blx r3 14150: 0003 movs r3, r0 14152: 0080 lsls r0, r0, #2 14154: 18c0 adds r0, r0, r3 14156: 0080 lsls r0, r0, #2 14158: 3050 adds r0, #80 ; 0x50 1415a: 21a0 movs r1, #160 ; 0xa0 1415c: 4b0a ldr r3, [pc, #40] ; (14188 ) 1415e: 4798 blx r3 14160: b202 sxth r2, r0 14162: e6b5 b.n 13ed0 14164: 20004c38 .word 0x20004c38 14168: 00012495 .word 0x00012495 1416c: ffff8800 .word 0xffff8800 14170: 00004e55 .word 0x00004e55 14174: 20004c3c .word 0x20004c3c 14178: 0000f665 .word 0x0000f665 1417c: 00004cf5 .word 0x00004cf5 14180: 00007fff .word 0x00007fff 14184: 00004fb5 .word 0x00004fb5 14188: 00017881 .word 0x00017881 lv_style_set_pad_top(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 1418c: 2000 movs r0, #0 1418e: 4b38 ldr r3, [pc, #224] ; (14270 ) 14190: 4798 blx r3 14192: 0003 movs r3, r0 14194: 0080 lsls r0, r0, #2 14196: 18c0 adds r0, r0, r3 14198: 0080 lsls r0, r0, #2 1419a: 3050 adds r0, #80 ; 0x50 1419c: 21a0 movs r1, #160 ; 0xa0 1419e: 4b35 ldr r3, [pc, #212] ; (14274 ) 141a0: 4798 blx r3 141a2: b202 sxth r2, r0 141a4: e6a8 b.n 13ef8 lv_style_set_pad_inner(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 141a6: 2000 movs r0, #0 141a8: 4b31 ldr r3, [pc, #196] ; (14270 ) 141aa: 4798 blx r3 141ac: 0003 movs r3, r0 141ae: 0080 lsls r0, r0, #2 141b0: 18c0 adds r0, r0, r3 141b2: 0080 lsls r0, r0, #2 141b4: 3050 adds r0, #80 ; 0x50 141b6: 21a0 movs r1, #160 ; 0xa0 141b8: 4b2e ldr r3, [pc, #184] ; (14274 ) 141ba: 4798 blx r3 141bc: b202 sxth r2, r0 141be: e6af b.n 13f20 lv_style_set_scale_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(15)); 141c0: 2000 movs r0, #0 141c2: 4b2b ldr r3, [pc, #172] ; (14270 ) 141c4: 4798 blx r3 141c6: 0103 lsls r3, r0, #4 141c8: 1a18 subs r0, r3, r0 141ca: 3050 adds r0, #80 ; 0x50 141cc: 21a0 movs r1, #160 ; 0xa0 141ce: 4b29 ldr r3, [pc, #164] ; (14274 ) 141d0: 4798 blx r3 141d2: b202 sxth r2, r0 141d4: e6b7 b.n 13f46 lv_style_set_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 141d6: 2000 movs r0, #0 141d8: 4b25 ldr r3, [pc, #148] ; (14270 ) 141da: 4798 blx r3 141dc: 300a adds r0, #10 141de: 00c0 lsls r0, r0, #3 141e0: 21a0 movs r1, #160 ; 0xa0 141e2: 4b24 ldr r3, [pc, #144] ; (14274 ) 141e4: 4798 blx r3 141e6: b202 sxth r2, r0 141e8: e6e6 b.n 13fb8 lv_style_set_scale_end_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 141ea: 2000 movs r0, #0 141ec: 4b20 ldr r3, [pc, #128] ; (14270 ) 141ee: 4798 blx r3 141f0: 300a adds r0, #10 141f2: 00c0 lsls r0, r0, #3 141f4: 21a0 movs r1, #160 ; 0xa0 141f6: 4b1f ldr r3, [pc, #124] ; (14274 ) 141f8: 4798 blx r3 141fa: b202 sxth r2, r0 141fc: e6ee b.n 13fdc lv_style_set_scale_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(25)); 141fe: 2000 movs r0, #0 14200: 4b1b ldr r3, [pc, #108] ; (14270 ) 14202: 4798 blx r3 14204: 0083 lsls r3, r0, #2 14206: 1818 adds r0, r3, r0 14208: 0083 lsls r3, r0, #2 1420a: 18c0 adds r0, r0, r3 1420c: 3050 adds r0, #80 ; 0x50 1420e: 21a0 movs r1, #160 ; 0xa0 14210: 4b18 ldr r3, [pc, #96] ; (14274 ) 14212: 4798 blx r3 14214: b202 sxth r2, r0 14216: e6f6 b.n 14006 14218: 2308 movs r3, #8 1421a: 2112 movs r1, #18 1421c: 220b movs r2, #11 1421e: e705 b.n 1402c lv_style_set_line_width(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(8)); 14220: 2000 movs r0, #0 14222: 4b13 ldr r3, [pc, #76] ; (14270 ) 14224: 4798 blx r3 14226: 300a adds r0, #10 14228: 00c0 lsls r0, r0, #3 1422a: 21a0 movs r1, #160 ; 0xa0 1422c: 4b11 ldr r3, [pc, #68] ; (14274 ) 1422e: 4798 blx r3 14230: b202 sxth r2, r0 14232: e710 b.n 14056 14234: 2308 movs r3, #8 14236: 2112 movs r1, #18 14238: 220b movs r2, #11 1423a: e721 b.n 14080 lv_style_set_size(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(30)); 1423c: 2000 movs r0, #0 1423e: 4b0c ldr r3, [pc, #48] ; (14270 ) 14240: 4798 blx r3 14242: 0103 lsls r3, r0, #4 14244: 1a18 subs r0, r3, r0 14246: 0040 lsls r0, r0, #1 14248: 3050 adds r0, #80 ; 0x50 1424a: 21a0 movs r1, #160 ; 0xa0 1424c: 4b09 ldr r3, [pc, #36] ; (14274 ) 1424e: 4798 blx r3 14250: b202 sxth r2, r0 14252: e732 b.n 140ba lv_style_set_pad_inner(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(10)); 14254: 2000 movs r0, #0 14256: 4b06 ldr r3, [pc, #24] ; (14270 ) 14258: 4798 blx r3 1425a: 0003 movs r3, r0 1425c: 0080 lsls r0, r0, #2 1425e: 18c0 adds r0, r0, r3 14260: 0040 lsls r0, r0, #1 14262: 3050 adds r0, #80 ; 0x50 14264: 21a0 movs r1, #160 ; 0xa0 14266: 4b03 ldr r3, [pc, #12] ; (14274 ) 14268: 4798 blx r3 1426a: b202 sxth r2, r0 1426c: e739 b.n 140e2 1426e: 46c0 nop ; (mov r8, r8) 14270: 0000f665 .word 0x0000f665 14274: 00017881 .word 0x00017881 00014278 : { 14278: b570 push {r4, r5, r6, lr} style_init_reset(&styles->arc_indic); 1427a: 4c39 ldr r4, [pc, #228] ; (14360 ) 1427c: 6820 ldr r0, [r4, #0] 1427e: 301c adds r0, #28 14280: 4b38 ldr r3, [pc, #224] ; (14364 ) 14282: 4798 blx r3 lv_style_set_line_color(&styles->arc_indic, LV_STATE_DEFAULT, theme.color_primary); 14284: 6820 ldr r0, [r4, #0] 14286: 301c adds r0, #28 14288: 4b37 ldr r3, [pc, #220] ; (14368 ) 1428a: 889a ldrh r2, [r3, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 1428c: 2199 movs r1, #153 ; 0x99 1428e: 4b37 ldr r3, [pc, #220] ; (1436c ) 14290: 4798 blx r3 lv_style_set_line_width(&styles->arc_indic, LV_STATE_DEFAULT, LV_DPX(25)); 14292: 6824 ldr r4, [r4, #0] 14294: 341c adds r4, #28 14296: 2000 movs r0, #0 14298: 4b35 ldr r3, [pc, #212] ; (14370 ) 1429a: 4798 blx r3 1429c: 0083 lsls r3, r0, #2 1429e: 1818 adds r0, r3, r0 142a0: 0083 lsls r3, r0, #2 142a2: 18c0 adds r0, r0, r3 142a4: 3050 adds r0, #80 ; 0x50 142a6: 2340 movs r3, #64 ; 0x40 142a8: 33ff adds r3, #255 ; 0xff 142aa: 2201 movs r2, #1 142ac: 4298 cmp r0, r3 142ae: d838 bhi.n 14322 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 142b0: 2190 movs r1, #144 ; 0x90 142b2: 0020 movs r0, r4 142b4: 4d2f ldr r5, [pc, #188] ; (14374 ) 142b6: 47a8 blx r5 lv_style_set_line_rounded(&styles->arc_indic, LV_STATE_DEFAULT, true); 142b8: 4c29 ldr r4, [pc, #164] ; (14360 ) 142ba: 6820 ldr r0, [r4, #0] 142bc: 301c adds r0, #28 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_ROUNDED, line_rounded, bool, _int, scalar) 142be: 2201 movs r2, #1 142c0: 2194 movs r1, #148 ; 0x94 142c2: 47a8 blx r5 style_init_reset(&styles->arc_bg); 142c4: 6820 ldr r0, [r4, #0] 142c6: 3020 adds r0, #32 142c8: 4b26 ldr r3, [pc, #152] ; (14364 ) 142ca: 4798 blx r3 lv_style_set_line_color(&styles->arc_bg, LV_STATE_DEFAULT, COLOR_BG_SEC); 142cc: 6820 ldr r0, [r4, #0] 142ce: 3020 adds r0, #32 142d0: 4b25 ldr r3, [pc, #148] ; (14368 ) 142d2: 699b ldr r3, [r3, #24] 142d4: 079b lsls r3, r3, #30 142d6: d431 bmi.n 1433c 142d8: 2308 movs r3, #8 142da: 2112 movs r1, #18 142dc: 2209 movs r2, #9 142de: 0149 lsls r1, r1, #5 142e0: 02db lsls r3, r3, #11 142e2: 430a orrs r2, r1 142e4: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 142e6: 2199 movs r1, #153 ; 0x99 142e8: 4b20 ldr r3, [pc, #128] ; (1436c ) 142ea: 4798 blx r3 lv_style_set_line_width(&styles->arc_bg, LV_STATE_DEFAULT, LV_DPX(25)); 142ec: 4b1c ldr r3, [pc, #112] ; (14360 ) 142ee: 681c ldr r4, [r3, #0] 142f0: 3420 adds r4, #32 142f2: 2000 movs r0, #0 142f4: 4b1e ldr r3, [pc, #120] ; (14370 ) 142f6: 4798 blx r3 142f8: 0083 lsls r3, r0, #2 142fa: 1818 adds r0, r3, r0 142fc: 0083 lsls r3, r0, #2 142fe: 18c0 adds r0, r0, r3 14300: 3050 adds r0, #80 ; 0x50 14302: 2340 movs r3, #64 ; 0x40 14304: 33ff adds r3, #255 ; 0xff 14306: 2201 movs r2, #1 14308: 4298 cmp r0, r3 1430a: d81b bhi.n 14344 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 1430c: 2190 movs r1, #144 ; 0x90 1430e: 0020 movs r0, r4 14310: 4c18 ldr r4, [pc, #96] ; (14374 ) 14312: 47a0 blx r4 lv_style_set_line_rounded(&styles->arc_bg, LV_STATE_DEFAULT, true); 14314: 4b12 ldr r3, [pc, #72] ; (14360 ) 14316: 6818 ldr r0, [r3, #0] 14318: 3020 adds r0, #32 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_ROUNDED, line_rounded, bool, _int, scalar) 1431a: 2201 movs r2, #1 1431c: 2194 movs r1, #148 ; 0x94 1431e: 47a0 blx r4 } 14320: bd70 pop {r4, r5, r6, pc} lv_style_set_line_width(&styles->arc_indic, LV_STATE_DEFAULT, LV_DPX(25)); 14322: 2000 movs r0, #0 14324: 4b12 ldr r3, [pc, #72] ; (14370 ) 14326: 4798 blx r3 14328: 0083 lsls r3, r0, #2 1432a: 1818 adds r0, r3, r0 1432c: 0083 lsls r3, r0, #2 1432e: 18c0 adds r0, r0, r3 14330: 3050 adds r0, #80 ; 0x50 14332: 21a0 movs r1, #160 ; 0xa0 14334: 4b10 ldr r3, [pc, #64] ; (14378 ) 14336: 4798 blx r3 14338: b202 sxth r2, r0 1433a: e7b9 b.n 142b0 1433c: 231a movs r3, #26 1433e: 2135 movs r1, #53 ; 0x35 14340: 221b movs r2, #27 14342: e7cc b.n 142de lv_style_set_line_width(&styles->arc_bg, LV_STATE_DEFAULT, LV_DPX(25)); 14344: 2000 movs r0, #0 14346: 4b0a ldr r3, [pc, #40] ; (14370 ) 14348: 4798 blx r3 1434a: 0083 lsls r3, r0, #2 1434c: 1818 adds r0, r3, r0 1434e: 0083 lsls r3, r0, #2 14350: 18c0 adds r0, r0, r3 14352: 3050 adds r0, #80 ; 0x50 14354: 21a0 movs r1, #160 ; 0xa0 14356: 4b08 ldr r3, [pc, #32] ; (14378 ) 14358: 4798 blx r3 1435a: b202 sxth r2, r0 1435c: e7d6 b.n 1430c 1435e: 46c0 nop ; (mov r8, r8) 14360: 20004c38 .word 0x20004c38 14364: 00012495 .word 0x00012495 14368: 20004c3c .word 0x20004c3c 1436c: 00004e55 .word 0x00004e55 14370: 0000f665 .word 0x0000f665 14374: 00004cf5 .word 0x00004cf5 14378: 00017881 .word 0x00017881 0001437c : { 1437c: b5f0 push {r4, r5, r6, r7, lr} 1437e: 46c6 mov lr, r8 14380: b500 push {lr} style_init_reset(&styles->led); 14382: 4c39 ldr r4, [pc, #228] ; (14468 ) 14384: 6820 ldr r0, [r4, #0] 14386: 306c adds r0, #108 ; 0x6c 14388: 4b38 ldr r3, [pc, #224] ; (1446c ) 1438a: 4798 blx r3 lv_style_set_bg_opa(&styles->led, LV_STATE_DEFAULT, LV_OPA_COVER); 1438c: 6820 ldr r0, [r4, #0] 1438e: 306c adds r0, #108 ; 0x6c _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 14390: 22ff movs r2, #255 ; 0xff 14392: 212c movs r1, #44 ; 0x2c 14394: 4d36 ldr r5, [pc, #216] ; (14470 ) 14396: 47a8 blx r5 lv_style_set_bg_color(&styles->led, LV_STATE_DEFAULT, theme.color_primary); 14398: 6820 ldr r0, [r4, #0] 1439a: 306c adds r0, #108 ; 0x6c 1439c: 4b35 ldr r3, [pc, #212] ; (14474 ) 1439e: 4698 mov r8, r3 143a0: 889a ldrh r2, [r3, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 143a2: 2129 movs r1, #41 ; 0x29 143a4: 4f34 ldr r7, [pc, #208] ; (14478 ) 143a6: 47b8 blx r7 lv_style_set_border_width(&styles->led, LV_STATE_DEFAULT, 2); 143a8: 6820 ldr r0, [r4, #0] 143aa: 306c adds r0, #108 ; 0x6c _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 143ac: 2202 movs r2, #2 143ae: 2130 movs r1, #48 ; 0x30 143b0: 4e32 ldr r6, [pc, #200] ; (1447c ) 143b2: 47b0 blx r6 lv_style_set_border_opa(&styles->led, LV_STATE_DEFAULT, LV_OPA_50); 143b4: 6820 ldr r0, [r4, #0] 143b6: 306c adds r0, #108 ; 0x6c _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar) 143b8: 227f movs r2, #127 ; 0x7f 143ba: 213c movs r1, #60 ; 0x3c 143bc: 47a8 blx r5 lv_style_set_border_color(&styles->led, LV_STATE_DEFAULT, lv_color_lighten(theme.color_primary, LV_OPA_30)); 143be: 6825 ldr r5, [r4, #0] 143c0: 356c adds r5, #108 ; 0x6c 143c2: 4643 mov r3, r8 143c4: 8898 ldrh r0, [r3, #4] 143c6: 214c movs r1, #76 ; 0x4c 143c8: 4b2d ldr r3, [pc, #180] ; (14480 ) 143ca: 4798 blx r3 143cc: 1c02 adds r2, r0, #0 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 143ce: 2139 movs r1, #57 ; 0x39 143d0: 0028 movs r0, r5 143d2: 47b8 blx r7 lv_style_set_radius(&styles->led, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 143d4: 6820 ldr r0, [r4, #0] 143d6: 306c adds r0, #108 ; 0x6c _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 143d8: 4a2a ldr r2, [pc, #168] ; (14484 ) 143da: 2101 movs r1, #1 143dc: 47b0 blx r6 lv_style_set_shadow_width(&styles->led, LV_STATE_DEFAULT, LV_DPX(15)); 143de: 6824 ldr r4, [r4, #0] 143e0: 346c adds r4, #108 ; 0x6c 143e2: 2000 movs r0, #0 143e4: 4b28 ldr r3, [pc, #160] ; (14488 ) 143e6: 4798 blx r3 143e8: 0103 lsls r3, r0, #4 143ea: 1a18 subs r0, r3, r0 143ec: 3050 adds r0, #80 ; 0x50 143ee: 2340 movs r3, #64 ; 0x40 143f0: 33ff adds r3, #255 ; 0xff 143f2: 2201 movs r2, #1 143f4: 4298 cmp r0, r3 143f6: d81f bhi.n 14438 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 143f8: 2150 movs r1, #80 ; 0x50 143fa: 0020 movs r0, r4 143fc: 4b1f ldr r3, [pc, #124] ; (1447c ) 143fe: 4798 blx r3 lv_style_set_shadow_color(&styles->led, LV_STATE_DEFAULT, theme.color_primary); 14400: 4c19 ldr r4, [pc, #100] ; (14468 ) 14402: 6820 ldr r0, [r4, #0] 14404: 306c adds r0, #108 ; 0x6c 14406: 4b1b ldr r3, [pc, #108] ; (14474 ) 14408: 889a ldrh r2, [r3, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar) 1440a: 2159 movs r1, #89 ; 0x59 1440c: 4b1a ldr r3, [pc, #104] ; (14478 ) 1440e: 4798 blx r3 lv_style_set_shadow_spread(&styles->led, LV_STATE_DEFAULT, LV_DPX(5)); 14410: 6824 ldr r4, [r4, #0] 14412: 346c adds r4, #108 ; 0x6c 14414: 2000 movs r0, #0 14416: 4b1c ldr r3, [pc, #112] ; (14488 ) 14418: 4798 blx r3 1441a: 0083 lsls r3, r0, #2 1441c: 1818 adds r0, r3, r0 1441e: 3050 adds r0, #80 ; 0x50 14420: 2340 movs r3, #64 ; 0x40 14422: 33ff adds r3, #255 ; 0xff 14424: 2201 movs r2, #1 14426: 4298 cmp r0, r3 14428: d811 bhi.n 1444e _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar) 1442a: 2153 movs r1, #83 ; 0x53 1442c: 0020 movs r0, r4 1442e: 4b13 ldr r3, [pc, #76] ; (1447c ) 14430: 4798 blx r3 } 14432: bc04 pop {r2} 14434: 4690 mov r8, r2 14436: bdf0 pop {r4, r5, r6, r7, pc} lv_style_set_shadow_width(&styles->led, LV_STATE_DEFAULT, LV_DPX(15)); 14438: 2000 movs r0, #0 1443a: 4b13 ldr r3, [pc, #76] ; (14488 ) 1443c: 4798 blx r3 1443e: 0103 lsls r3, r0, #4 14440: 1a18 subs r0, r3, r0 14442: 3050 adds r0, #80 ; 0x50 14444: 21a0 movs r1, #160 ; 0xa0 14446: 4b11 ldr r3, [pc, #68] ; (1448c ) 14448: 4798 blx r3 1444a: b202 sxth r2, r0 1444c: e7d4 b.n 143f8 lv_style_set_shadow_spread(&styles->led, LV_STATE_DEFAULT, LV_DPX(5)); 1444e: 2000 movs r0, #0 14450: 4b0d ldr r3, [pc, #52] ; (14488 ) 14452: 4798 blx r3 14454: 0003 movs r3, r0 14456: 0080 lsls r0, r0, #2 14458: 18c0 adds r0, r0, r3 1445a: 3050 adds r0, #80 ; 0x50 1445c: 21a0 movs r1, #160 ; 0xa0 1445e: 4b0b ldr r3, [pc, #44] ; (1448c ) 14460: 4798 blx r3 14462: b202 sxth r2, r0 14464: e7e1 b.n 1442a 14466: 46c0 nop ; (mov r8, r8) 14468: 20004c38 .word 0x20004c38 1446c: 00012495 .word 0x00012495 14470: 00004fb5 .word 0x00004fb5 14474: 20004c3c .word 0x20004c3c 14478: 00004e55 .word 0x00004e55 1447c: 00004cf5 .word 0x00004cf5 14480: 00010289 .word 0x00010289 14484: 00007fff .word 0x00007fff 14488: 0000f665 .word 0x0000f665 1448c: 00017881 .word 0x00017881 00014490 : { 14490: b5f0 push {r4, r5, r6, r7, lr} 14492: 46c6 mov lr, r8 14494: b500 push {lr} 14496: 4680 mov r8, r0 14498: 1c0f adds r7, r1, #0 1449a: 0015 movs r5, r2 1449c: 001e movs r6, r3 if(!inited) { 1449e: 4bfe ldr r3, [pc, #1016] ; (14898 ) 144a0: 781b ldrb r3, [r3, #0] 144a2: 2b00 cmp r3, #0 144a4: d101 bne.n 144aa 144a6: f001 fb9e bl 15be6 theme.color_primary = color_primary; 144aa: 4cfc ldr r4, [pc, #1008] ; (1489c ) 144ac: 4643 mov r3, r8 144ae: 80a3 strh r3, [r4, #4] theme.color_secondary = color_secondary; 144b0: 80e7 strh r7, [r4, #6] theme.font_small = font_small; 144b2: 60a6 str r6, [r4, #8] theme.font_normal = font_normal; 144b4: 9b06 ldr r3, [sp, #24] 144b6: 60e3 str r3, [r4, #12] theme.font_subtitle = font_subtitle; 144b8: 9b07 ldr r3, [sp, #28] 144ba: 6123 str r3, [r4, #16] theme.font_title = font_title; 144bc: 9b08 ldr r3, [sp, #32] 144be: 6163 str r3, [r4, #20] theme.flags = flags; 144c0: 61a5 str r5, [r4, #24] basic_init(); 144c2: 4bf7 ldr r3, [pc, #988] ; (148a0 ) 144c4: 4798 blx r3 bar_init(); 144c6: 4bf7 ldr r3, [pc, #988] ; (148a4 ) 144c8: 4798 blx r3 led_init(); 144ca: 4bf7 ldr r3, [pc, #988] ; (148a8 ) 144cc: 4798 blx r3 slider_init(); 144ce: 4bf7 ldr r3, [pc, #988] ; (148ac ) 144d0: 4798 blx r3 switch_init(); 144d2: 4bf7 ldr r3, [pc, #988] ; (148b0 ) 144d4: 4798 blx r3 linemeter_init(); 144d6: 4bf7 ldr r3, [pc, #988] ; (148b4 ) 144d8: 4798 blx r3 gauge_init(); 144da: 4bf7 ldr r3, [pc, #988] ; (148b8 ) 144dc: 4798 blx r3 arc_init(); 144de: 4bf7 ldr r3, [pc, #988] ; (148bc ) 144e0: 4798 blx r3 style_init_reset(&styles->chart_bg); 144e2: 4df7 ldr r5, [pc, #988] ; (148c0 ) 144e4: 6828 ldr r0, [r5, #0] 144e6: 3040 adds r0, #64 ; 0x40 144e8: 4bf6 ldr r3, [pc, #984] ; (148c4 ) 144ea: 4798 blx r3 lv_style_set_text_color(&styles->chart_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 144ec: 6828 ldr r0, [r5, #0] 144ee: 3040 adds r0, #64 ; 0x40 144f0: 69a3 ldr r3, [r4, #24] 144f2: 079b lsls r3, r3, #30 144f4: d501 bpl.n 144fa 144f6: f001 fb7f bl 15bf8 144fa: 2314 movs r3, #20 144fc: 212b movs r1, #43 ; 0x2b 144fe: 2217 movs r2, #23 14500: 0149 lsls r1, r1, #5 14502: 02db lsls r3, r3, #11 14504: 430a orrs r2, r1 14506: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 14508: 49ef ldr r1, [pc, #956] ; (148c8 ) 1450a: 4bf0 ldr r3, [pc, #960] ; (148cc ) 1450c: 4798 blx r3 style_init_reset(&styles->chart_series_bg); 1450e: 4cec ldr r4, [pc, #944] ; (148c0 ) 14510: 6820 ldr r0, [r4, #0] 14512: 3044 adds r0, #68 ; 0x44 14514: 4beb ldr r3, [pc, #940] ; (148c4 ) 14516: 4798 blx r3 lv_style_set_line_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(1)); 14518: 6824 ldr r4, [r4, #0] 1451a: 3444 adds r4, #68 ; 0x44 1451c: 2000 movs r0, #0 1451e: 4bec ldr r3, [pc, #944] ; (148d0 ) 14520: 4798 blx r3 14522: 3050 adds r0, #80 ; 0x50 14524: 2340 movs r3, #64 ; 0x40 14526: 33ff adds r3, #255 ; 0xff 14528: 2201 movs r2, #1 1452a: 4298 cmp r0, r3 1452c: d901 bls.n 14532 1452e: f001 fb68 bl 15c02 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 14532: 2190 movs r1, #144 ; 0x90 14534: 0020 movs r0, r4 14536: 4be7 ldr r3, [pc, #924] ; (148d4 ) 14538: 4798 blx r3 lv_style_set_line_dash_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 1453a: 4be1 ldr r3, [pc, #900] ; (148c0 ) 1453c: 681c ldr r4, [r3, #0] 1453e: 3444 adds r4, #68 ; 0x44 14540: 2000 movs r0, #0 14542: 4be3 ldr r3, [pc, #908] ; (148d0 ) 14544: 4798 blx r3 14546: 0083 lsls r3, r0, #2 14548: 181b adds r3, r3, r0 1454a: 005b lsls r3, r3, #1 1454c: 3350 adds r3, #80 ; 0x50 1454e: 2140 movs r1, #64 ; 0x40 14550: 31ff adds r1, #255 ; 0xff 14552: 2201 movs r2, #1 14554: 428b cmp r3, r1 14556: d901 bls.n 1455c 14558: f001 fb5d bl 15c16 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_DASH_WIDTH, line_dash_width, lv_style_int_t, _int, scalar) 1455c: 2192 movs r1, #146 ; 0x92 1455e: 0020 movs r0, r4 14560: 4bdc ldr r3, [pc, #880] ; (148d4 ) 14562: 4798 blx r3 lv_style_set_line_dash_gap(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 14564: 4bd6 ldr r3, [pc, #856] ; (148c0 ) 14566: 681c ldr r4, [r3, #0] 14568: 3444 adds r4, #68 ; 0x44 1456a: 2000 movs r0, #0 1456c: 4bd8 ldr r3, [pc, #864] ; (148d0 ) 1456e: 4798 blx r3 14570: 0083 lsls r3, r0, #2 14572: 181b adds r3, r3, r0 14574: 005b lsls r3, r3, #1 14576: 3350 adds r3, #80 ; 0x50 14578: 2140 movs r1, #64 ; 0x40 1457a: 31ff adds r1, #255 ; 0xff 1457c: 2201 movs r2, #1 1457e: 428b cmp r3, r1 14580: d901 bls.n 14586 14582: f001 fb56 bl 15c32 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_DASH_GAP, line_dash_gap, lv_style_int_t, _int, scalar) 14586: 2193 movs r1, #147 ; 0x93 14588: 0020 movs r0, r4 1458a: 4bd2 ldr r3, [pc, #840] ; (148d4 ) 1458c: 4798 blx r3 lv_style_set_line_color(&styles->chart_series_bg, LV_STATE_DEFAULT, COLOR_BG_BORDER); 1458e: 4bcc ldr r3, [pc, #816] ; (148c0 ) 14590: 6818 ldr r0, [r3, #0] 14592: 3044 adds r0, #68 ; 0x44 14594: 4bc1 ldr r3, [pc, #772] ; (1489c ) 14596: 699b ldr r3, [r3, #24] 14598: 079b lsls r3, r3, #30 1459a: d501 bpl.n 145a0 1459c: f001 fb57 bl 15c4e 145a0: 2310 movs r3, #16 145a2: 2122 movs r1, #34 ; 0x22 145a4: 2212 movs r2, #18 145a6: 0149 lsls r1, r1, #5 145a8: 02db lsls r3, r3, #11 145aa: 430a orrs r2, r1 145ac: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 145ae: 2199 movs r1, #153 ; 0x99 145b0: 4bc6 ldr r3, [pc, #792] ; (148cc ) 145b2: 4798 blx r3 style_init_reset(&styles->chart_series); 145b4: 4cc2 ldr r4, [pc, #776] ; (148c0 ) 145b6: 6820 ldr r0, [r4, #0] 145b8: 3048 adds r0, #72 ; 0x48 145ba: 4bc2 ldr r3, [pc, #776] ; (148c4 ) 145bc: 4798 blx r3 lv_style_set_line_width(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(3)); 145be: 6824 ldr r4, [r4, #0] 145c0: 3448 adds r4, #72 ; 0x48 145c2: 2000 movs r0, #0 145c4: 4bc2 ldr r3, [pc, #776] ; (148d0 ) 145c6: 4798 blx r3 145c8: 0043 lsls r3, r0, #1 145ca: 1818 adds r0, r3, r0 145cc: 3050 adds r0, #80 ; 0x50 145ce: 2340 movs r3, #64 ; 0x40 145d0: 33ff adds r3, #255 ; 0xff 145d2: 2201 movs r2, #1 145d4: 4298 cmp r0, r3 145d6: d901 bls.n 145dc 145d8: f001 fb3e bl 15c58 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 145dc: 2190 movs r1, #144 ; 0x90 145de: 0020 movs r0, r4 145e0: 4bbc ldr r3, [pc, #752] ; (148d4 ) 145e2: 4798 blx r3 lv_style_set_size(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(4)); 145e4: 4bb6 ldr r3, [pc, #728] ; (148c0 ) 145e6: 681c ldr r4, [r3, #0] 145e8: 3448 adds r4, #72 ; 0x48 145ea: 2000 movs r0, #0 145ec: 4bb8 ldr r3, [pc, #736] ; (148d0 ) 145ee: 4798 blx r3 145f0: 3014 adds r0, #20 145f2: 0080 lsls r0, r0, #2 145f4: 2340 movs r3, #64 ; 0x40 145f6: 33ff adds r3, #255 ; 0xff 145f8: 2201 movs r2, #1 145fa: 4298 cmp r0, r3 145fc: d901 bls.n 14602 145fe: f001 fb38 bl 15c72 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 14602: 2103 movs r1, #3 14604: 0020 movs r0, r4 14606: 4bb3 ldr r3, [pc, #716] ; (148d4 ) 14608: 4798 blx r3 lv_style_set_pad_inner(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(2)); /*Space between columns*/ 1460a: 4bad ldr r3, [pc, #692] ; (148c0 ) 1460c: 681c ldr r4, [r3, #0] 1460e: 3448 adds r4, #72 ; 0x48 14610: 2000 movs r0, #0 14612: 4baf ldr r3, [pc, #700] ; (148d0 ) 14614: 4798 blx r3 14616: 3028 adds r0, #40 ; 0x28 14618: 0040 lsls r0, r0, #1 1461a: 2340 movs r3, #64 ; 0x40 1461c: 33ff adds r3, #255 ; 0xff 1461e: 2201 movs r2, #1 14620: 4298 cmp r0, r3 14622: d901 bls.n 14628 14624: f001 fb30 bl 15c88 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 14628: 2114 movs r1, #20 1462a: 0020 movs r0, r4 1462c: 4ba9 ldr r3, [pc, #676] ; (148d4 ) 1462e: 4798 blx r3 lv_style_set_radius(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(1)); 14630: 4ba3 ldr r3, [pc, #652] ; (148c0 ) 14632: 681c ldr r4, [r3, #0] 14634: 3448 adds r4, #72 ; 0x48 14636: 2000 movs r0, #0 14638: 4ba5 ldr r3, [pc, #660] ; (148d0 ) 1463a: 4798 blx r3 1463c: 3050 adds r0, #80 ; 0x50 1463e: 2340 movs r3, #64 ; 0x40 14640: 33ff adds r3, #255 ; 0xff 14642: 2201 movs r2, #1 14644: 4298 cmp r0, r3 14646: d901 bls.n 1464c 14648: f001 fb29 bl 15c9e _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 1464c: 2101 movs r1, #1 1464e: 0020 movs r0, r4 14650: 4ba0 ldr r3, [pc, #640] ; (148d4 ) 14652: 4798 blx r3 style_init_reset(&styles->calendar_header); 14654: 4c9a ldr r4, [pc, #616] ; (148c0 ) 14656: 6820 ldr r0, [r4, #0] 14658: 3030 adds r0, #48 ; 0x30 1465a: 4b9a ldr r3, [pc, #616] ; (148c4 ) 1465c: 4798 blx r3 lv_style_set_pad_top(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 1465e: 6824 ldr r4, [r4, #0] 14660: 3430 adds r4, #48 ; 0x30 14662: 2000 movs r0, #0 14664: 4b9c ldr r3, [pc, #624] ; (148d8 ) 14666: 4798 blx r3 14668: 2801 cmp r0, #1 1466a: d801 bhi.n 14670 1466c: f001 fb21 bl 15cb2 14670: 2000 movs r0, #0 14672: 4b97 ldr r3, [pc, #604] ; (148d0 ) 14674: 4798 blx r3 14676: 0103 lsls r3, r0, #4 14678: 1a1b subs r3, r3, r0 1467a: 005b lsls r3, r3, #1 1467c: 3350 adds r3, #80 ; 0x50 1467e: 2140 movs r1, #64 ; 0x40 14680: 31ff adds r1, #255 ; 0xff 14682: 2201 movs r2, #1 14684: 428b cmp r3, r1 14686: d901 bls.n 1468c 14688: f001 fb2c bl 15ce4 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1468c: 2110 movs r1, #16 1468e: 0020 movs r0, r4 14690: 4b90 ldr r3, [pc, #576] ; (148d4 ) 14692: 4798 blx r3 lv_style_set_pad_left(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 14694: 4b8a ldr r3, [pc, #552] ; (148c0 ) 14696: 681c ldr r4, [r3, #0] 14698: 3430 adds r4, #48 ; 0x30 1469a: 2000 movs r0, #0 1469c: 4b8e ldr r3, [pc, #568] ; (148d8 ) 1469e: 4798 blx r3 146a0: 2801 cmp r0, #1 146a2: d801 bhi.n 146a8 146a4: f001 fb2b bl 15cfe 146a8: 2000 movs r0, #0 146aa: 4b89 ldr r3, [pc, #548] ; (148d0 ) 146ac: 4798 blx r3 146ae: 0103 lsls r3, r0, #4 146b0: 1a1b subs r3, r3, r0 146b2: 005b lsls r3, r3, #1 146b4: 3350 adds r3, #80 ; 0x50 146b6: 2140 movs r1, #64 ; 0x40 146b8: 31ff adds r1, #255 ; 0xff 146ba: 2201 movs r2, #1 146bc: 428b cmp r3, r1 146be: d901 bls.n 146c4 146c0: f001 fb36 bl 15d30 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 146c4: 2112 movs r1, #18 146c6: 0020 movs r0, r4 146c8: 4b82 ldr r3, [pc, #520] ; (148d4 ) 146ca: 4798 blx r3 lv_style_set_pad_right(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 146cc: 4b7c ldr r3, [pc, #496] ; (148c0 ) 146ce: 681c ldr r4, [r3, #0] 146d0: 3430 adds r4, #48 ; 0x30 146d2: 2000 movs r0, #0 146d4: 4b80 ldr r3, [pc, #512] ; (148d8 ) 146d6: 4798 blx r3 146d8: 2801 cmp r0, #1 146da: d801 bhi.n 146e0 146dc: f001 fb35 bl 15d4a 146e0: 2000 movs r0, #0 146e2: 4b7b ldr r3, [pc, #492] ; (148d0 ) 146e4: 4798 blx r3 146e6: 0103 lsls r3, r0, #4 146e8: 1a1b subs r3, r3, r0 146ea: 005b lsls r3, r3, #1 146ec: 3350 adds r3, #80 ; 0x50 146ee: 2140 movs r1, #64 ; 0x40 146f0: 31ff adds r1, #255 ; 0xff 146f2: 2201 movs r2, #1 146f4: 428b cmp r3, r1 146f6: d901 bls.n 146fc 146f8: f001 fb40 bl 15d7c _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 146fc: 2113 movs r1, #19 146fe: 0020 movs r0, r4 14700: 4b74 ldr r3, [pc, #464] ; (148d4 ) 14702: 4798 blx r3 lv_style_set_pad_bottom(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 14704: 4b6e ldr r3, [pc, #440] ; (148c0 ) 14706: 681c ldr r4, [r3, #0] 14708: 3430 adds r4, #48 ; 0x30 1470a: 2000 movs r0, #0 1470c: 4b72 ldr r3, [pc, #456] ; (148d8 ) 1470e: 4798 blx r3 14710: 2801 cmp r0, #1 14712: d801 bhi.n 14718 14714: f001 fb3f bl 15d96 14718: 2000 movs r0, #0 1471a: 4b6d ldr r3, [pc, #436] ; (148d0 ) 1471c: 4798 blx r3 1471e: 0103 lsls r3, r0, #4 14720: 1a1b subs r3, r3, r0 14722: 005b lsls r3, r3, #1 14724: 3350 adds r3, #80 ; 0x50 14726: 2140 movs r1, #64 ; 0x40 14728: 31ff adds r1, #255 ; 0xff 1472a: 2201 movs r2, #1 1472c: 428b cmp r3, r1 1472e: d901 bls.n 14734 14730: f001 fb64 bl 15dfc _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 14734: 2111 movs r1, #17 14736: 0020 movs r0, r4 14738: 4b66 ldr r3, [pc, #408] ; (148d4 ) 1473a: 4798 blx r3 lv_style_set_text_color(&styles->calendar_header, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x888888) : LV_COLOR_WHITE); 1473c: 4b60 ldr r3, [pc, #384] ; (148c0 ) 1473e: 6818 ldr r0, [r3, #0] 14740: 3030 adds r0, #48 ; 0x30 14742: 4b56 ldr r3, [pc, #344] ; (1489c ) 14744: 699b ldr r3, [r3, #24] 14746: 079b lsls r3, r3, #30 14748: d501 bpl.n 1474e 1474a: f001 fb64 bl 15e16 1474e: 223f movs r2, #63 ; 0x3f 14750: 231f movs r3, #31 14752: 0152 lsls r2, r2, #5 14754: 02d9 lsls r1, r3, #11 14756: 431a orrs r2, r3 14758: 430a orrs r2, r1 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 1475a: 4960 ldr r1, [pc, #384] ; (148dc ) 1475c: 4b5b ldr r3, [pc, #364] ; (148cc ) 1475e: 4798 blx r3 style_init_reset(&styles->calendar_daynames); 14760: 4c57 ldr r4, [pc, #348] ; (148c0 ) 14762: 6820 ldr r0, [r4, #0] 14764: 3034 adds r0, #52 ; 0x34 14766: 4b57 ldr r3, [pc, #348] ; (148c4 ) 14768: 4798 blx r3 lv_style_set_text_color(&styles->calendar_daynames, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex3(0xeee)); 1476a: 6820 ldr r0, [r4, #0] 1476c: 3034 adds r0, #52 ; 0x34 1476e: 4b4b ldr r3, [pc, #300] ; (1489c ) 14770: 699b ldr r3, [r3, #24] 14772: 079b lsls r3, r3, #30 14774: d501 bpl.n 1477a 14776: f001 fb52 bl 15e1e 1477a: 231d movs r3, #29 1477c: 213b movs r1, #59 ; 0x3b 1477e: 221d movs r2, #29 14780: 0149 lsls r1, r1, #5 14782: 02db lsls r3, r3, #11 14784: 430a orrs r2, r1 14786: 431a orrs r2, r3 14788: 494f ldr r1, [pc, #316] ; (148c8 ) 1478a: 4b50 ldr r3, [pc, #320] ; (148cc ) 1478c: 4798 blx r3 lv_style_set_pad_left(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 1478e: 4b4c ldr r3, [pc, #304] ; (148c0 ) 14790: 681c ldr r4, [r3, #0] 14792: 3434 adds r4, #52 ; 0x34 14794: 2000 movs r0, #0 14796: 4b50 ldr r3, [pc, #320] ; (148d8 ) 14798: 4798 blx r3 1479a: 2801 cmp r0, #1 1479c: d801 bhi.n 147a2 1479e: f001 fb43 bl 15e28 147a2: 2000 movs r0, #0 147a4: 4b4a ldr r3, [pc, #296] ; (148d0 ) 147a6: 4798 blx r3 147a8: 0103 lsls r3, r0, #4 147aa: 1a1b subs r3, r3, r0 147ac: 005b lsls r3, r3, #1 147ae: 3350 adds r3, #80 ; 0x50 147b0: 2140 movs r1, #64 ; 0x40 147b2: 31ff adds r1, #255 ; 0xff 147b4: 2201 movs r2, #1 147b6: 428b cmp r3, r1 147b8: d901 bls.n 147be 147ba: f001 fb4e bl 15e5a _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 147be: 2112 movs r1, #18 147c0: 0020 movs r0, r4 147c2: 4b44 ldr r3, [pc, #272] ; (148d4 ) 147c4: 4798 blx r3 lv_style_set_pad_right(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 147c6: 4b3e ldr r3, [pc, #248] ; (148c0 ) 147c8: 681c ldr r4, [r3, #0] 147ca: 3434 adds r4, #52 ; 0x34 147cc: 2000 movs r0, #0 147ce: 4b42 ldr r3, [pc, #264] ; (148d8 ) 147d0: 4798 blx r3 147d2: 2801 cmp r0, #1 147d4: d801 bhi.n 147da 147d6: f001 fb4d bl 15e74 147da: 2000 movs r0, #0 147dc: 4b3c ldr r3, [pc, #240] ; (148d0 ) 147de: 4798 blx r3 147e0: 0103 lsls r3, r0, #4 147e2: 1a1b subs r3, r3, r0 147e4: 005b lsls r3, r3, #1 147e6: 3350 adds r3, #80 ; 0x50 147e8: 2140 movs r1, #64 ; 0x40 147ea: 31ff adds r1, #255 ; 0xff 147ec: 2201 movs r2, #1 147ee: 428b cmp r3, r1 147f0: d901 bls.n 147f6 147f2: f001 fb58 bl 15ea6 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 147f6: 2113 movs r1, #19 147f8: 0020 movs r0, r4 147fa: 4b36 ldr r3, [pc, #216] ; (148d4 ) 147fc: 4798 blx r3 lv_style_set_pad_bottom(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 147fe: 4b30 ldr r3, [pc, #192] ; (148c0 ) 14800: 681c ldr r4, [r3, #0] 14802: 3434 adds r4, #52 ; 0x34 14804: 2000 movs r0, #0 14806: 4b34 ldr r3, [pc, #208] ; (148d8 ) 14808: 4798 blx r3 1480a: 2801 cmp r0, #1 1480c: d801 bhi.n 14812 1480e: f001 fb57 bl 15ec0 14812: 2000 movs r0, #0 14814: 4b2e ldr r3, [pc, #184] ; (148d0 ) 14816: 4798 blx r3 14818: 0103 lsls r3, r0, #4 1481a: 1a1b subs r3, r3, r0 1481c: 005b lsls r3, r3, #1 1481e: 3350 adds r3, #80 ; 0x50 14820: 2140 movs r1, #64 ; 0x40 14822: 31ff adds r1, #255 ; 0xff 14824: 2201 movs r2, #1 14826: 428b cmp r3, r1 14828: d901 bls.n 1482e 1482a: f001 fb62 bl 15ef2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 1482e: 2111 movs r1, #17 14830: 0020 movs r0, r4 14832: 4b28 ldr r3, [pc, #160] ; (148d4 ) 14834: 4798 blx r3 style_init_reset(&styles->calendar_date_nums); 14836: 4c22 ldr r4, [pc, #136] ; (148c0 ) 14838: 6820 ldr r0, [r4, #0] 1483a: 302c adds r0, #44 ; 0x2c 1483c: 4b21 ldr r3, [pc, #132] ; (148c4 ) 1483e: 4798 blx r3 lv_style_set_radius(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(4)); 14840: 6824 ldr r4, [r4, #0] 14842: 342c adds r4, #44 ; 0x2c 14844: 2000 movs r0, #0 14846: 4b22 ldr r3, [pc, #136] ; (148d0 ) 14848: 4798 blx r3 1484a: 3014 adds r0, #20 1484c: 0080 lsls r0, r0, #2 1484e: 2340 movs r3, #64 ; 0x40 14850: 33ff adds r3, #255 ; 0xff 14852: 2201 movs r2, #1 14854: 4298 cmp r0, r3 14856: d901 bls.n 1485c 14858: f001 fb58 bl 15f0c _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 1485c: 2101 movs r1, #1 1485e: 0020 movs r0, r4 14860: 4b1c ldr r3, [pc, #112] ; (148d4 ) 14862: 4798 blx r3 lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 14864: 4b16 ldr r3, [pc, #88] ; (148c0 ) 14866: 6818 ldr r0, [r3, #0] 14868: 302c adds r0, #44 ; 0x2c 1486a: 4b0c ldr r3, [pc, #48] ; (1489c ) 1486c: 699b ldr r3, [r3, #24] 1486e: 079b lsls r3, r3, #30 14870: d501 bpl.n 14876 14872: f001 fb56 bl 15f22 14876: 231f movs r3, #31 14878: 213f movs r1, #63 ; 0x3f 1487a: 221f movs r2, #31 1487c: 0149 lsls r1, r1, #5 1487e: 02db lsls r3, r3, #11 14880: 430a orrs r2, r1 14882: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 14884: 4916 ldr r1, [pc, #88] ; (148e0 ) 14886: 4b11 ldr r3, [pc, #68] ; (148cc ) 14888: 4798 blx r3 lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? LV_OPA_20 : LV_OPA_40); 1488a: 4b0d ldr r3, [pc, #52] ; (148c0 ) 1488c: 6818 ldr r0, [r3, #0] 1488e: 302c adds r0, #44 ; 0x2c 14890: 4b02 ldr r3, [pc, #8] ; (1489c ) 14892: 699b ldr r3, [r3, #24] 14894: 2233 movs r2, #51 ; 0x33 14896: e025 b.n 148e4 14898: 20004c34 .word 0x20004c34 1489c: 20004c3c .word 0x20004c3c 148a0: 000124b9 .word 0x000124b9 148a4: 00013685 .word 0x00013685 148a8: 0001437d .word 0x0001437d 148ac: 000137d9 .word 0x000137d9 148b0: 00013a6d .word 0x00013a6d 148b4: 00013bad .word 0x00013bad 148b8: 00013dd1 .word 0x00013dd1 148bc: 00014279 .word 0x00014279 148c0: 20004c38 .word 0x20004c38 148c4: 00012495 .word 0x00012495 148c8: 00008089 .word 0x00008089 148cc: 00004e55 .word 0x00004e55 148d0: 0000f665 .word 0x0000f665 148d4: 00004cf5 .word 0x00004cf5 148d8: 0000f681 .word 0x0000f681 148dc: 00009089 .word 0x00009089 148e0: 00008189 .word 0x00008189 148e4: 079b lsls r3, r3, #30 148e6: d400 bmi.n 148ea 148e8: 3233 adds r2, #51 ; 0x33 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 148ea: 2196 movs r1, #150 ; 0x96 148ec: 0049 lsls r1, r1, #1 148ee: 4dfa ldr r5, [pc, #1000] ; (14cd8 ) 148f0: 47a8 blx r5 lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_PRESSED, LV_OPA_20); 148f2: 4cfa ldr r4, [pc, #1000] ; (14cdc ) 148f4: 6820 ldr r0, [r4, #0] 148f6: 302c adds r0, #44 ; 0x2c 148f8: 2233 movs r2, #51 ; 0x33 148fa: 49f9 ldr r1, [pc, #996] ; (14ce0 ) 148fc: 47a8 blx r5 lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_FOCUSED, LV_OPA_COVER); 148fe: 6820 ldr r0, [r4, #0] 14900: 302c adds r0, #44 ; 0x2c 14902: 22ff movs r2, #255 ; 0xff 14904: 218b movs r1, #139 ; 0x8b 14906: 0089 lsls r1, r1, #2 14908: 47a8 blx r5 lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_FOCUSED, LV_COLOR_WHITE); 1490a: 6820 ldr r0, [r4, #0] 1490c: 302c adds r0, #44 ; 0x2c 1490e: 4bf5 ldr r3, [pc, #980] ; (14ce4 ) 14910: 881a ldrh r2, [r3, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 14912: 49f5 ldr r1, [pc, #980] ; (14ce8 ) 14914: 4ef5 ldr r6, [pc, #980] ; (14cec ) 14916: 47b0 blx r6 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_FOCUSED, theme.color_primary); 14918: 6820 ldr r0, [r4, #0] 1491a: 302c adds r0, #44 ; 0x2c 1491c: 4df4 ldr r5, [pc, #976] ; (14cf0 ) 1491e: 88aa ldrh r2, [r5, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 14920: 49f4 ldr r1, [pc, #976] ; (14cf4 ) 14922: 47b0 blx r6 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x666666) : LV_COLOR_WHITE); 14924: 6820 ldr r0, [r4, #0] 14926: 302c adds r0, #44 ; 0x2c 14928: 69ab ldr r3, [r5, #24] 1492a: 079b lsls r3, r3, #30 1492c: d501 bpl.n 14932 1492e: f001 fafd bl 15f2c 14932: 223f movs r2, #63 ; 0x3f 14934: 231f movs r3, #31 14936: 0152 lsls r2, r2, #5 14938: 02d9 lsls r1, r3, #11 1493a: 431a orrs r2, r3 1493c: 430a orrs r2, r1 1493e: 2129 movs r1, #41 ; 0x29 14940: 4eea ldr r6, [pc, #936] ; (14cec ) 14942: 47b0 blx r6 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_CHECKED, theme.color_primary); 14944: 4ce5 ldr r4, [pc, #916] ; (14cdc ) 14946: 6820 ldr r0, [r4, #0] 14948: 302c adds r0, #44 ; 0x2c 1494a: 4fe9 ldr r7, [pc, #932] ; (14cf0 ) 1494c: 88ba ldrh r2, [r7, #4] 1494e: 212a movs r1, #42 ; 0x2a 14950: 31ff adds r1, #255 ; 0xff 14952: 47b0 blx r6 lv_style_set_border_width(&styles->calendar_date_nums, LV_STATE_CHECKED, 2); 14954: 6820 ldr r0, [r4, #0] 14956: 302c adds r0, #44 ; 0x2c _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 14958: 2202 movs r2, #2 1495a: 2198 movs r1, #152 ; 0x98 1495c: 0049 lsls r1, r1, #1 1495e: 4de6 ldr r5, [pc, #920] ; (14cf8 ) 14960: 47a8 blx r5 lv_style_set_border_side(&styles->calendar_date_nums, LV_STATE_CHECKED, LV_BORDER_SIDE_LEFT); 14962: 6820 ldr r0, [r4, #0] 14964: 302c adds r0, #44 ; 0x2c _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 14966: 2204 movs r2, #4 14968: 2132 movs r1, #50 ; 0x32 1496a: 31ff adds r1, #255 ; 0xff 1496c: 47a8 blx r5 lv_style_set_border_color(&styles->calendar_date_nums, LV_STATE_CHECKED, theme.color_primary); 1496e: 6820 ldr r0, [r4, #0] 14970: 302c adds r0, #44 ; 0x2c 14972: 88ba ldrh r2, [r7, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 14974: 213a movs r1, #58 ; 0x3a 14976: 31ff adds r1, #255 ; 0xff 14978: 47b0 blx r6 lv_style_set_pad_inner(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(3)); 1497a: 6824 ldr r4, [r4, #0] 1497c: 342c adds r4, #44 ; 0x2c 1497e: 2000 movs r0, #0 14980: 4bde ldr r3, [pc, #888] ; (14cfc ) 14982: 4798 blx r3 14984: 0043 lsls r3, r0, #1 14986: 1818 adds r0, r3, r0 14988: 3050 adds r0, #80 ; 0x50 1498a: 2340 movs r3, #64 ; 0x40 1498c: 33ff adds r3, #255 ; 0xff 1498e: 2201 movs r2, #1 14990: 4298 cmp r0, r3 14992: d901 bls.n 14998 14994: f001 face bl 15f34 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 14998: 2114 movs r1, #20 1499a: 0020 movs r0, r4 1499c: 4bd6 ldr r3, [pc, #856] ; (14cf8 ) 1499e: 4798 blx r3 lv_style_set_pad_left(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 149a0: 4bce ldr r3, [pc, #824] ; (14cdc ) 149a2: 681c ldr r4, [r3, #0] 149a4: 342c adds r4, #44 ; 0x2c 149a6: 2000 movs r0, #0 149a8: 4bd5 ldr r3, [pc, #852] ; (14d00 ) 149aa: 4798 blx r3 149ac: 2801 cmp r0, #1 149ae: d801 bhi.n 149b4 149b0: f001 facd bl 15f4e 149b4: 2000 movs r0, #0 149b6: 4bd1 ldr r3, [pc, #836] ; (14cfc ) 149b8: 4798 blx r3 149ba: 0103 lsls r3, r0, #4 149bc: 1a1b subs r3, r3, r0 149be: 005b lsls r3, r3, #1 149c0: 3350 adds r3, #80 ; 0x50 149c2: 2140 movs r1, #64 ; 0x40 149c4: 31ff adds r1, #255 ; 0xff 149c6: 2201 movs r2, #1 149c8: 428b cmp r3, r1 149ca: d901 bls.n 149d0 149cc: f001 fad8 bl 15f80 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 149d0: 2112 movs r1, #18 149d2: 0020 movs r0, r4 149d4: 4bc8 ldr r3, [pc, #800] ; (14cf8 ) 149d6: 4798 blx r3 lv_style_set_pad_right(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 149d8: 4bc0 ldr r3, [pc, #768] ; (14cdc ) 149da: 681c ldr r4, [r3, #0] 149dc: 342c adds r4, #44 ; 0x2c 149de: 2000 movs r0, #0 149e0: 4bc7 ldr r3, [pc, #796] ; (14d00 ) 149e2: 4798 blx r3 149e4: 2801 cmp r0, #1 149e6: d801 bhi.n 149ec 149e8: f001 fad7 bl 15f9a 149ec: 2000 movs r0, #0 149ee: 4bc3 ldr r3, [pc, #780] ; (14cfc ) 149f0: 4798 blx r3 149f2: 0103 lsls r3, r0, #4 149f4: 1a1b subs r3, r3, r0 149f6: 005b lsls r3, r3, #1 149f8: 3350 adds r3, #80 ; 0x50 149fa: 2140 movs r1, #64 ; 0x40 149fc: 31ff adds r1, #255 ; 0xff 149fe: 2201 movs r2, #1 14a00: 428b cmp r3, r1 14a02: d901 bls.n 14a08 14a04: f001 fae2 bl 15fcc _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14a08: 2113 movs r1, #19 14a0a: 0020 movs r0, r4 14a0c: 4bba ldr r3, [pc, #744] ; (14cf8 ) 14a0e: 4798 blx r3 lv_style_set_pad_bottom(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 14a10: 4bb2 ldr r3, [pc, #712] ; (14cdc ) 14a12: 681c ldr r4, [r3, #0] 14a14: 342c adds r4, #44 ; 0x2c 14a16: 2000 movs r0, #0 14a18: 4bb9 ldr r3, [pc, #740] ; (14d00 ) 14a1a: 4798 blx r3 14a1c: 2801 cmp r0, #1 14a1e: d801 bhi.n 14a24 14a20: f001 fae1 bl 15fe6 14a24: 2000 movs r0, #0 14a26: 4bb5 ldr r3, [pc, #724] ; (14cfc ) 14a28: 4798 blx r3 14a2a: 0103 lsls r3, r0, #4 14a2c: 1a1b subs r3, r3, r0 14a2e: 005b lsls r3, r3, #1 14a30: 3350 adds r3, #80 ; 0x50 14a32: 2140 movs r1, #64 ; 0x40 14a34: 31ff adds r1, #255 ; 0xff 14a36: 2201 movs r2, #1 14a38: 428b cmp r3, r1 14a3a: d901 bls.n 14a40 14a3c: f001 faec bl 16018 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 14a40: 2111 movs r1, #17 14a42: 0020 movs r0, r4 14a44: 4bac ldr r3, [pc, #688] ; (14cf8 ) 14a46: 4798 blx r3 style_init_reset(&styles->cpicker_bg); 14a48: 4ca4 ldr r4, [pc, #656] ; (14cdc ) 14a4a: 6820 ldr r0, [r4, #0] 14a4c: 3038 adds r0, #56 ; 0x38 14a4e: 4bad ldr r3, [pc, #692] ; (14d04 ) 14a50: 4798 blx r3 lv_style_set_scale_width(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(30)); 14a52: 6824 ldr r4, [r4, #0] 14a54: 3438 adds r4, #56 ; 0x38 14a56: 2000 movs r0, #0 14a58: 4ba8 ldr r3, [pc, #672] ; (14cfc ) 14a5a: 4798 blx r3 14a5c: 0103 lsls r3, r0, #4 14a5e: 1a1b subs r3, r3, r0 14a60: 005b lsls r3, r3, #1 14a62: 3350 adds r3, #80 ; 0x50 14a64: 2140 movs r1, #64 ; 0x40 14a66: 31ff adds r1, #255 ; 0xff 14a68: 2201 movs r2, #1 14a6a: 428b cmp r3, r1 14a6c: d901 bls.n 14a72 14a6e: f001 fae0 bl 16032 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 14a72: 21c0 movs r1, #192 ; 0xc0 14a74: 0020 movs r0, r4 14a76: 4ba0 ldr r3, [pc, #640] ; (14cf8 ) 14a78: 4798 blx r3 lv_style_set_bg_opa(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_OPA_COVER); 14a7a: 4c98 ldr r4, [pc, #608] ; (14cdc ) 14a7c: 6820 ldr r0, [r4, #0] 14a7e: 3038 adds r0, #56 ; 0x38 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 14a80: 22ff movs r2, #255 ; 0xff 14a82: 212c movs r1, #44 ; 0x2c 14a84: 4b94 ldr r3, [pc, #592] ; (14cd8 ) 14a86: 4798 blx r3 lv_style_set_bg_color(&styles->cpicker_bg, LV_STATE_DEFAULT, COLOR_SCR); 14a88: 6820 ldr r0, [r4, #0] 14a8a: 3038 adds r0, #56 ; 0x38 14a8c: 4b98 ldr r3, [pc, #608] ; (14cf0 ) 14a8e: 699b ldr r3, [r3, #24] 14a90: 079b lsls r3, r3, #30 14a92: d501 bpl.n 14a98 14a94: f001 fada bl 1604c 14a98: 2308 movs r3, #8 14a9a: 2112 movs r1, #18 14a9c: 220b movs r2, #11 14a9e: 0149 lsls r1, r1, #5 14aa0: 02db lsls r3, r3, #11 14aa2: 430a orrs r2, r1 14aa4: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 14aa6: 2129 movs r1, #41 ; 0x29 14aa8: 4b90 ldr r3, [pc, #576] ; (14cec ) 14aaa: 4798 blx r3 lv_style_set_pad_inner(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(20)); 14aac: 4b8b ldr r3, [pc, #556] ; (14cdc ) 14aae: 681c ldr r4, [r3, #0] 14ab0: 3438 adds r4, #56 ; 0x38 14ab2: 2000 movs r0, #0 14ab4: 4b91 ldr r3, [pc, #580] ; (14cfc ) 14ab6: 4798 blx r3 14ab8: 0083 lsls r3, r0, #2 14aba: 181b adds r3, r3, r0 14abc: 009b lsls r3, r3, #2 14abe: 3350 adds r3, #80 ; 0x50 14ac0: 2140 movs r1, #64 ; 0x40 14ac2: 31ff adds r1, #255 ; 0xff 14ac4: 2201 movs r2, #1 14ac6: 428b cmp r3, r1 14ac8: d901 bls.n 14ace 14aca: f001 fac4 bl 16056 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 14ace: 2114 movs r1, #20 14ad0: 0020 movs r0, r4 14ad2: 4e89 ldr r6, [pc, #548] ; (14cf8 ) 14ad4: 47b0 blx r6 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 14ad6: 4d8c ldr r5, [pc, #560] ; (14d08 ) lv_style_set_radius(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 14ad8: 4c80 ldr r4, [pc, #512] ; (14cdc ) 14ada: 6820 ldr r0, [r4, #0] 14adc: 3038 adds r0, #56 ; 0x38 14ade: 002a movs r2, r5 14ae0: 2101 movs r1, #1 14ae2: 47b0 blx r6 style_init_reset(&styles->cpicker_indic); 14ae4: 6820 ldr r0, [r4, #0] 14ae6: 303c adds r0, #60 ; 0x3c 14ae8: 4b86 ldr r3, [pc, #536] ; (14d04 ) 14aea: 4798 blx r3 lv_style_set_radius(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 14aec: 6820 ldr r0, [r4, #0] 14aee: 303c adds r0, #60 ; 0x3c 14af0: 002a movs r2, r5 14af2: 2101 movs r1, #1 14af4: 47b0 blx r6 lv_style_set_bg_color(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_COLOR_WHITE); 14af6: 6820 ldr r0, [r4, #0] 14af8: 303c adds r0, #60 ; 0x3c 14afa: 4f7a ldr r7, [pc, #488] ; (14ce4 ) 14afc: 883a ldrh r2, [r7, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 14afe: 2129 movs r1, #41 ; 0x29 14b00: 4d7a ldr r5, [pc, #488] ; (14cec ) 14b02: 47a8 blx r5 lv_style_set_bg_opa(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_OPA_COVER); 14b04: 6820 ldr r0, [r4, #0] 14b06: 303c adds r0, #60 ; 0x3c _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 14b08: 22ff movs r2, #255 ; 0xff 14b0a: 212c movs r1, #44 ; 0x2c 14b0c: 4b72 ldr r3, [pc, #456] ; (14cd8 ) 14b0e: 4798 blx r3 lv_style_set_border_width(&styles->cpicker_indic, LV_STATE_DEFAULT, 2); 14b10: 6820 ldr r0, [r4, #0] 14b12: 303c adds r0, #60 ; 0x3c _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 14b14: 2202 movs r2, #2 14b16: 2130 movs r1, #48 ; 0x30 14b18: 47b0 blx r6 lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_COLOR_GRAY); 14b1a: 6820 ldr r0, [r4, #0] 14b1c: 303c adds r0, #60 ; 0x3c 14b1e: 88ba ldrh r2, [r7, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 14b20: 2139 movs r1, #57 ; 0x39 14b22: 47a8 blx r5 lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_FOCUSED, theme.color_primary); 14b24: 6820 ldr r0, [r4, #0] 14b26: 303c adds r0, #60 ; 0x3c 14b28: 4e71 ldr r6, [pc, #452] ; (14cf0 ) 14b2a: 88b2 ldrh r2, [r6, #4] 14b2c: 4977 ldr r1, [pc, #476] ; (14d0c ) 14b2e: 47a8 blx r5 lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_EDITED, theme.color_secondary); 14b30: 6820 ldr r0, [r4, #0] 14b32: 303c adds r0, #60 ; 0x3c 14b34: 88f2 ldrh r2, [r6, #6] 14b36: 4976 ldr r1, [pc, #472] ; (14d10 ) 14b38: 47a8 blx r5 lv_style_set_pad_left(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 14b3a: 6824 ldr r4, [r4, #0] 14b3c: 343c adds r4, #60 ; 0x3c 14b3e: 2000 movs r0, #0 14b40: 4b6e ldr r3, [pc, #440] ; (14cfc ) 14b42: 4798 blx r3 14b44: 0003 movs r3, r0 14b46: 0040 lsls r0, r0, #1 14b48: 18c0 adds r0, r0, r3 14b4a: 0080 lsls r0, r0, #2 14b4c: 18c0 adds r0, r0, r3 14b4e: 3050 adds r0, #80 ; 0x50 14b50: 2340 movs r3, #64 ; 0x40 14b52: 33ff adds r3, #255 ; 0xff 14b54: 2201 movs r2, #1 14b56: 4298 cmp r0, r3 14b58: d901 bls.n 14b5e 14b5a: f001 fa8a bl 16072 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 14b5e: 2112 movs r1, #18 14b60: 0020 movs r0, r4 14b62: 4b65 ldr r3, [pc, #404] ; (14cf8 ) 14b64: 4798 blx r3 lv_style_set_pad_right(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 14b66: 4b5d ldr r3, [pc, #372] ; (14cdc ) 14b68: 681c ldr r4, [r3, #0] 14b6a: 343c adds r4, #60 ; 0x3c 14b6c: 2000 movs r0, #0 14b6e: 4b63 ldr r3, [pc, #396] ; (14cfc ) 14b70: 4798 blx r3 14b72: 0003 movs r3, r0 14b74: 0040 lsls r0, r0, #1 14b76: 18c0 adds r0, r0, r3 14b78: 0080 lsls r0, r0, #2 14b7a: 18c0 adds r0, r0, r3 14b7c: 3050 adds r0, #80 ; 0x50 14b7e: 2340 movs r3, #64 ; 0x40 14b80: 33ff adds r3, #255 ; 0xff 14b82: 2201 movs r2, #1 14b84: 4298 cmp r0, r3 14b86: d901 bls.n 14b8c 14b88: f001 fa82 bl 16090 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14b8c: 2113 movs r1, #19 14b8e: 0020 movs r0, r4 14b90: 4b59 ldr r3, [pc, #356] ; (14cf8 ) 14b92: 4798 blx r3 lv_style_set_pad_top(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 14b94: 4b51 ldr r3, [pc, #324] ; (14cdc ) 14b96: 681c ldr r4, [r3, #0] 14b98: 343c adds r4, #60 ; 0x3c 14b9a: 2000 movs r0, #0 14b9c: 4b57 ldr r3, [pc, #348] ; (14cfc ) 14b9e: 4798 blx r3 14ba0: 0003 movs r3, r0 14ba2: 0040 lsls r0, r0, #1 14ba4: 18c0 adds r0, r0, r3 14ba6: 0080 lsls r0, r0, #2 14ba8: 18c0 adds r0, r0, r3 14baa: 3050 adds r0, #80 ; 0x50 14bac: 2340 movs r3, #64 ; 0x40 14bae: 33ff adds r3, #255 ; 0xff 14bb0: 2201 movs r2, #1 14bb2: 4298 cmp r0, r3 14bb4: d901 bls.n 14bba 14bb6: f001 fa7a bl 160ae _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 14bba: 2110 movs r1, #16 14bbc: 0020 movs r0, r4 14bbe: 4b4e ldr r3, [pc, #312] ; (14cf8 ) 14bc0: 4798 blx r3 lv_style_set_pad_bottom(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 14bc2: 4b46 ldr r3, [pc, #280] ; (14cdc ) 14bc4: 681c ldr r4, [r3, #0] 14bc6: 343c adds r4, #60 ; 0x3c 14bc8: 2000 movs r0, #0 14bca: 4b4c ldr r3, [pc, #304] ; (14cfc ) 14bcc: 4798 blx r3 14bce: 0003 movs r3, r0 14bd0: 0040 lsls r0, r0, #1 14bd2: 18c0 adds r0, r0, r3 14bd4: 0080 lsls r0, r0, #2 14bd6: 18c0 adds r0, r0, r3 14bd8: 3050 adds r0, #80 ; 0x50 14bda: 2340 movs r3, #64 ; 0x40 14bdc: 33ff adds r3, #255 ; 0xff 14bde: 2201 movs r2, #1 14be0: 4298 cmp r0, r3 14be2: d901 bls.n 14be8 14be4: f001 fa72 bl 160cc _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 14be8: 2111 movs r1, #17 14bea: 0020 movs r0, r4 14bec: 4b42 ldr r3, [pc, #264] ; (14cf8 ) 14bee: 4798 blx r3 style_init_reset(&styles->cb_bg); 14bf0: 4c3a ldr r4, [pc, #232] ; (14cdc ) 14bf2: 6820 ldr r0, [r4, #0] 14bf4: 304c adds r0, #76 ; 0x4c 14bf6: 4b43 ldr r3, [pc, #268] ; (14d04 ) 14bf8: 4798 blx r3 lv_style_set_radius(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 14bfa: 6824 ldr r4, [r4, #0] 14bfc: 344c adds r4, #76 ; 0x4c 14bfe: 2000 movs r0, #0 14c00: 4b3e ldr r3, [pc, #248] ; (14cfc ) 14c02: 4798 blx r3 14c04: 3014 adds r0, #20 14c06: 0080 lsls r0, r0, #2 14c08: 2340 movs r3, #64 ; 0x40 14c0a: 33ff adds r3, #255 ; 0xff 14c0c: 2201 movs r2, #1 14c0e: 4298 cmp r0, r3 14c10: d901 bls.n 14c16 14c12: f001 fa6a bl 160ea _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 14c16: 2101 movs r1, #1 14c18: 0020 movs r0, r4 14c1a: 4b37 ldr r3, [pc, #220] ; (14cf8 ) 14c1c: 4798 blx r3 lv_style_set_pad_inner(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 14c1e: 4b2f ldr r3, [pc, #188] ; (14cdc ) 14c20: 681c ldr r4, [r3, #0] 14c22: 344c adds r4, #76 ; 0x4c 14c24: 2000 movs r0, #0 14c26: 4b35 ldr r3, [pc, #212] ; (14cfc ) 14c28: 4798 blx r3 14c2a: 0083 lsls r3, r0, #2 14c2c: 181b adds r3, r3, r0 14c2e: 005b lsls r3, r3, #1 14c30: 3350 adds r3, #80 ; 0x50 14c32: 2140 movs r1, #64 ; 0x40 14c34: 31ff adds r1, #255 ; 0xff 14c36: 2201 movs r2, #1 14c38: 428b cmp r3, r1 14c3a: d901 bls.n 14c40 14c3c: f001 fa60 bl 16100 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 14c40: 2114 movs r1, #20 14c42: 0020 movs r0, r4 14c44: 4b2c ldr r3, [pc, #176] ; (14cf8 ) 14c46: 4798 blx r3 lv_style_set_outline_color(&styles->cb_bg, LV_STATE_DEFAULT, theme.color_primary); 14c48: 4c24 ldr r4, [pc, #144] ; (14cdc ) 14c4a: 6820 ldr r0, [r4, #0] 14c4c: 304c adds r0, #76 ; 0x4c 14c4e: 4b28 ldr r3, [pc, #160] ; (14cf0 ) 14c50: 889a ldrh r2, [r3, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 14c52: 2149 movs r1, #73 ; 0x49 14c54: 4b25 ldr r3, [pc, #148] ; (14cec ) 14c56: 4798 blx r3 lv_style_set_outline_opa(&styles->cb_bg, LV_STATE_DEFAULT, LV_OPA_TRANSP); 14c58: 6820 ldr r0, [r4, #0] 14c5a: 304c adds r0, #76 ; 0x4c _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 14c5c: 2200 movs r2, #0 14c5e: 214c movs r1, #76 ; 0x4c 14c60: 4d1d ldr r5, [pc, #116] ; (14cd8 ) 14c62: 47a8 blx r5 lv_style_set_outline_opa(&styles->cb_bg, LV_STATE_FOCUSED, LV_OPA_50); 14c64: 6820 ldr r0, [r4, #0] 14c66: 304c adds r0, #76 ; 0x4c 14c68: 227f movs r2, #127 ; 0x7f 14c6a: 2193 movs r1, #147 ; 0x93 14c6c: 0089 lsls r1, r1, #2 14c6e: 47a8 blx r5 lv_style_set_outline_width(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 14c70: 6824 ldr r4, [r4, #0] 14c72: 344c adds r4, #76 ; 0x4c 14c74: 2000 movs r0, #0 14c76: 4b21 ldr r3, [pc, #132] ; (14cfc ) 14c78: 4798 blx r3 14c7a: 0043 lsls r3, r0, #1 14c7c: 1818 adds r0, r3, r0 14c7e: 3050 adds r0, #80 ; 0x50 14c80: 2340 movs r3, #64 ; 0x40 14c82: 33ff adds r3, #255 ; 0xff 14c84: 2201 movs r2, #1 14c86: 4298 cmp r0, r3 14c88: d901 bls.n 14c8e 14c8a: f001 fa47 bl 1611c _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 14c8e: 2140 movs r1, #64 ; 0x40 14c90: 0020 movs r0, r4 14c92: 4b19 ldr r3, [pc, #100] ; (14cf8 ) 14c94: 4798 blx r3 lv_style_set_outline_pad(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 14c96: 4b11 ldr r3, [pc, #68] ; (14cdc ) 14c98: 681c ldr r4, [r3, #0] 14c9a: 344c adds r4, #76 ; 0x4c 14c9c: 2000 movs r0, #0 14c9e: 4b17 ldr r3, [pc, #92] ; (14cfc ) 14ca0: 4798 blx r3 14ca2: 0083 lsls r3, r0, #2 14ca4: 181b adds r3, r3, r0 14ca6: 005b lsls r3, r3, #1 14ca8: 3350 adds r3, #80 ; 0x50 14caa: 2140 movs r1, #64 ; 0x40 14cac: 31ff adds r1, #255 ; 0xff 14cae: 2201 movs r2, #1 14cb0: 428b cmp r3, r1 14cb2: d901 bls.n 14cb8 14cb4: f001 fa3f bl 16136 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar) 14cb8: 2141 movs r1, #65 ; 0x41 14cba: 0020 movs r0, r4 14cbc: 4d0e ldr r5, [pc, #56] ; (14cf8 ) 14cbe: 47a8 blx r5 lv_style_set_transition_time(&styles->cb_bg, LV_STATE_DEFAULT, TRANSITION_TIME); 14cc0: 4c06 ldr r4, [pc, #24] ; (14cdc ) 14cc2: 6820 ldr r0, [r4, #0] 14cc4: 304c adds r0, #76 ; 0x4c _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 14cc6: 2296 movs r2, #150 ; 0x96 14cc8: 21b0 movs r1, #176 ; 0xb0 14cca: 47a8 blx r5 lv_style_set_transition_prop_6(&styles->cb_bg, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); 14ccc: 6820 ldr r0, [r4, #0] 14cce: 304c adds r0, #76 ; 0x4c _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 14cd0: 224c movs r2, #76 ; 0x4c 14cd2: 21b7 movs r1, #183 ; 0xb7 14cd4: e01e b.n 14d14 14cd6: 46c0 nop ; (mov r8, r8) 14cd8: 00004fb5 .word 0x00004fb5 14cdc: 20004c38 .word 0x20004c38 14ce0: 0000102c .word 0x0000102c 14ce4: 0001c92c .word 0x0001c92c 14ce8: 00008289 .word 0x00008289 14cec: 00004e55 .word 0x00004e55 14cf0: 20004c3c .word 0x20004c3c 14cf4: 00000229 .word 0x00000229 14cf8: 00004cf5 .word 0x00004cf5 14cfc: 0000f665 .word 0x0000f665 14d00: 0000f681 .word 0x0000f681 14d04: 00012495 .word 0x00012495 14d08: 00007fff .word 0x00007fff 14d0c: 00000239 .word 0x00000239 14d10: 00000439 .word 0x00000439 14d14: 47a8 blx r5 style_init_reset(&styles->cb_bullet); 14d16: 6820 ldr r0, [r4, #0] 14d18: 3050 adds r0, #80 ; 0x50 14d1a: 4bfd ldr r3, [pc, #1012] ; (15110 ) 14d1c: 4798 blx r3 lv_style_set_outline_opa(&styles->cb_bullet, LV_STATE_FOCUSED, LV_OPA_TRANSP); 14d1e: 6820 ldr r0, [r4, #0] 14d20: 3050 adds r0, #80 ; 0x50 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 14d22: 2200 movs r2, #0 14d24: 2193 movs r1, #147 ; 0x93 14d26: 0089 lsls r1, r1, #2 14d28: 4bfa ldr r3, [pc, #1000] ; (15114 ) 14d2a: 4798 blx r3 lv_style_set_radius(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(4)); 14d2c: 6824 ldr r4, [r4, #0] 14d2e: 3450 adds r4, #80 ; 0x50 14d30: 2000 movs r0, #0 14d32: 4bf9 ldr r3, [pc, #996] ; (15118 ) 14d34: 4798 blx r3 14d36: 3014 adds r0, #20 14d38: 0080 lsls r0, r0, #2 14d3a: 2340 movs r3, #64 ; 0x40 14d3c: 33ff adds r3, #255 ; 0xff 14d3e: 2201 movs r2, #1 14d40: 4298 cmp r0, r3 14d42: d901 bls.n 14d48 14d44: f001 fa05 bl 16152 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 14d48: 2101 movs r1, #1 14d4a: 0020 movs r0, r4 14d4c: 4bf3 ldr r3, [pc, #972] ; (1511c ) 14d4e: 4798 blx r3 lv_style_set_pattern_image(&styles->cb_bullet, LV_STATE_CHECKED, LV_SYMBOL_OK); 14d50: 4cf3 ldr r4, [pc, #972] ; (15120 ) 14d52: 6820 ldr r0, [r4, #0] 14d54: 3050 adds r0, #80 ; 0x50 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_IMAGE, pattern_image, const void *, _ptr, scalar) 14d56: 4af3 ldr r2, [pc, #972] ; (15124 ) 14d58: 21b7 movs r1, #183 ; 0xb7 14d5a: 0049 lsls r1, r1, #1 14d5c: 4df2 ldr r5, [pc, #968] ; (15128 ) 14d5e: 47a8 blx r5 lv_style_set_pattern_recolor(&styles->cb_bullet, LV_STATE_CHECKED, LV_COLOR_WHITE); 14d60: 6820 ldr r0, [r4, #0] 14d62: 3050 adds r0, #80 ; 0x50 14d64: 4bf1 ldr r3, [pc, #964] ; (1512c ) 14d66: 881a ldrh r2, [r3, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 14d68: 216a movs r1, #106 ; 0x6a 14d6a: 31ff adds r1, #255 ; 0xff 14d6c: 4bf0 ldr r3, [pc, #960] ; (15130 ) 14d6e: 4798 blx r3 lv_style_set_text_font(&styles->cb_bullet, LV_STATE_CHECKED, theme.font_small); 14d70: 4bf0 ldr r3, [pc, #960] ; (15134 ) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 14d72: 689a ldr r2, [r3, #8] 14d74: 6820 ldr r0, [r4, #0] 14d76: 3050 adds r0, #80 ; 0x50 14d78: 49ef ldr r1, [pc, #956] ; (15138 ) 14d7a: 47a8 blx r5 lv_style_set_pad_left(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 14d7c: 6824 ldr r4, [r4, #0] 14d7e: 3450 adds r4, #80 ; 0x50 14d80: 2000 movs r0, #0 14d82: 4be5 ldr r3, [pc, #916] ; (15118 ) 14d84: 4798 blx r3 14d86: 0043 lsls r3, r0, #1 14d88: 1818 adds r0, r3, r0 14d8a: 3050 adds r0, #80 ; 0x50 14d8c: 2340 movs r3, #64 ; 0x40 14d8e: 33ff adds r3, #255 ; 0xff 14d90: 2201 movs r2, #1 14d92: 4298 cmp r0, r3 14d94: d901 bls.n 14d9a 14d96: f001 f9e7 bl 16168 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 14d9a: 2112 movs r1, #18 14d9c: 0020 movs r0, r4 14d9e: 4bdf ldr r3, [pc, #892] ; (1511c ) 14da0: 4798 blx r3 lv_style_set_pad_right(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 14da2: 4bdf ldr r3, [pc, #892] ; (15120 ) 14da4: 681c ldr r4, [r3, #0] 14da6: 3450 adds r4, #80 ; 0x50 14da8: 2000 movs r0, #0 14daa: 4bdb ldr r3, [pc, #876] ; (15118 ) 14dac: 4798 blx r3 14dae: 0043 lsls r3, r0, #1 14db0: 1818 adds r0, r3, r0 14db2: 3050 adds r0, #80 ; 0x50 14db4: 2340 movs r3, #64 ; 0x40 14db6: 33ff adds r3, #255 ; 0xff 14db8: 2201 movs r2, #1 14dba: 4298 cmp r0, r3 14dbc: d901 bls.n 14dc2 14dbe: f001 f9e0 bl 16182 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14dc2: 2113 movs r1, #19 14dc4: 0020 movs r0, r4 14dc6: 4bd5 ldr r3, [pc, #852] ; (1511c ) 14dc8: 4798 blx r3 lv_style_set_pad_top(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 14dca: 4bd5 ldr r3, [pc, #852] ; (15120 ) 14dcc: 681c ldr r4, [r3, #0] 14dce: 3450 adds r4, #80 ; 0x50 14dd0: 2000 movs r0, #0 14dd2: 4bd1 ldr r3, [pc, #836] ; (15118 ) 14dd4: 4798 blx r3 14dd6: 0043 lsls r3, r0, #1 14dd8: 1818 adds r0, r3, r0 14dda: 3050 adds r0, #80 ; 0x50 14ddc: 2340 movs r3, #64 ; 0x40 14dde: 33ff adds r3, #255 ; 0xff 14de0: 2201 movs r2, #1 14de2: 4298 cmp r0, r3 14de4: d901 bls.n 14dea 14de6: f001 f9d9 bl 1619c _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 14dea: 2110 movs r1, #16 14dec: 0020 movs r0, r4 14dee: 4bcb ldr r3, [pc, #812] ; (1511c ) 14df0: 4798 blx r3 lv_style_set_pad_bottom(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 14df2: 4bcb ldr r3, [pc, #812] ; (15120 ) 14df4: 681c ldr r4, [r3, #0] 14df6: 3450 adds r4, #80 ; 0x50 14df8: 2000 movs r0, #0 14dfa: 4bc7 ldr r3, [pc, #796] ; (15118 ) 14dfc: 4798 blx r3 14dfe: 0043 lsls r3, r0, #1 14e00: 1818 adds r0, r3, r0 14e02: 3050 adds r0, #80 ; 0x50 14e04: 2340 movs r3, #64 ; 0x40 14e06: 33ff adds r3, #255 ; 0xff 14e08: 2201 movs r2, #1 14e0a: 4298 cmp r0, r3 14e0c: d901 bls.n 14e12 14e0e: f001 f9d2 bl 161b6 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 14e12: 2111 movs r1, #17 14e14: 0020 movs r0, r4 14e16: 4dc1 ldr r5, [pc, #772] ; (1511c ) 14e18: 47a8 blx r5 style_init_reset(&styles->kb_bg); 14e1a: 4cc1 ldr r4, [pc, #772] ; (15120 ) 14e1c: 6820 ldr r0, [r4, #0] 14e1e: 3068 adds r0, #104 ; 0x68 14e20: 4bbb ldr r3, [pc, #748] ; (15110 ) 14e22: 4798 blx r3 lv_style_set_radius(&styles->kb_bg, LV_STATE_DEFAULT, 0); 14e24: 6820 ldr r0, [r4, #0] 14e26: 3068 adds r0, #104 ; 0x68 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 14e28: 2200 movs r2, #0 14e2a: 2101 movs r1, #1 14e2c: 47a8 blx r5 lv_style_set_border_width(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 14e2e: 6824 ldr r4, [r4, #0] 14e30: 3468 adds r4, #104 ; 0x68 14e32: 2000 movs r0, #0 14e34: 4bb8 ldr r3, [pc, #736] ; (15118 ) 14e36: 4798 blx r3 14e38: 3014 adds r0, #20 14e3a: 0080 lsls r0, r0, #2 14e3c: 2340 movs r3, #64 ; 0x40 14e3e: 33ff adds r3, #255 ; 0xff 14e40: 2201 movs r2, #1 14e42: 4298 cmp r0, r3 14e44: d901 bls.n 14e4a 14e46: f001 f9c3 bl 161d0 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 14e4a: 2130 movs r1, #48 ; 0x30 14e4c: 0020 movs r0, r4 14e4e: 4db3 ldr r5, [pc, #716] ; (1511c ) 14e50: 47a8 blx r5 lv_style_set_border_side(&styles->kb_bg, LV_STATE_DEFAULT, LV_BORDER_SIDE_TOP); 14e52: 4cb3 ldr r4, [pc, #716] ; (15120 ) 14e54: 6820 ldr r0, [r4, #0] 14e56: 3068 adds r0, #104 ; 0x68 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 14e58: 2202 movs r2, #2 14e5a: 2131 movs r1, #49 ; 0x31 14e5c: 47a8 blx r5 lv_style_set_border_color(&styles->kb_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT : LV_COLOR_BLACK); 14e5e: 6820 ldr r0, [r4, #0] 14e60: 3068 adds r0, #104 ; 0x68 14e62: 4bb4 ldr r3, [pc, #720] ; (15134 ) 14e64: 699b ldr r3, [r3, #24] 14e66: 079b lsls r3, r3, #30 14e68: d501 bpl.n 14e6e 14e6a: f001 f9bc bl 161e6 14e6e: 2300 movs r3, #0 14e70: 2100 movs r1, #0 14e72: 2200 movs r2, #0 14e74: 0149 lsls r1, r1, #5 14e76: 02db lsls r3, r3, #11 14e78: 430a orrs r2, r1 14e7a: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 14e7c: 2139 movs r1, #57 ; 0x39 14e7e: 4dac ldr r5, [pc, #688] ; (15130 ) 14e80: 47a8 blx r5 lv_style_set_border_color(&styles->kb_bg, LV_STATE_EDITED, theme.color_secondary); 14e82: 4ca7 ldr r4, [pc, #668] ; (15120 ) 14e84: 6820 ldr r0, [r4, #0] 14e86: 3068 adds r0, #104 ; 0x68 14e88: 4baa ldr r3, [pc, #680] ; (15134 ) 14e8a: 88da ldrh r2, [r3, #6] 14e8c: 49ab ldr r1, [pc, #684] ; (1513c ) 14e8e: 47a8 blx r5 lv_style_set_pad_left(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 14e90: 6824 ldr r4, [r4, #0] 14e92: 3468 adds r4, #104 ; 0x68 14e94: 2000 movs r0, #0 14e96: 4ba0 ldr r3, [pc, #640] ; (15118 ) 14e98: 4798 blx r3 14e9a: 0083 lsls r3, r0, #2 14e9c: 1818 adds r0, r3, r0 14e9e: 3050 adds r0, #80 ; 0x50 14ea0: 2340 movs r3, #64 ; 0x40 14ea2: 33ff adds r3, #255 ; 0xff 14ea4: 2201 movs r2, #1 14ea6: 4298 cmp r0, r3 14ea8: d901 bls.n 14eae 14eaa: f001 f9a5 bl 161f8 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 14eae: 2112 movs r1, #18 14eb0: 0020 movs r0, r4 14eb2: 4b9a ldr r3, [pc, #616] ; (1511c ) 14eb4: 4798 blx r3 lv_style_set_pad_right(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 14eb6: 4b9a ldr r3, [pc, #616] ; (15120 ) 14eb8: 681c ldr r4, [r3, #0] 14eba: 3468 adds r4, #104 ; 0x68 14ebc: 2000 movs r0, #0 14ebe: 4b96 ldr r3, [pc, #600] ; (15118 ) 14ec0: 4798 blx r3 14ec2: 0083 lsls r3, r0, #2 14ec4: 1818 adds r0, r3, r0 14ec6: 3050 adds r0, #80 ; 0x50 14ec8: 2340 movs r3, #64 ; 0x40 14eca: 33ff adds r3, #255 ; 0xff 14ecc: 2201 movs r2, #1 14ece: 4298 cmp r0, r3 14ed0: d901 bls.n 14ed6 14ed2: f001 f99e bl 16212 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14ed6: 2113 movs r1, #19 14ed8: 0020 movs r0, r4 14eda: 4b90 ldr r3, [pc, #576] ; (1511c ) 14edc: 4798 blx r3 lv_style_set_pad_top(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 14ede: 4b90 ldr r3, [pc, #576] ; (15120 ) 14ee0: 681c ldr r4, [r3, #0] 14ee2: 3468 adds r4, #104 ; 0x68 14ee4: 2000 movs r0, #0 14ee6: 4b8c ldr r3, [pc, #560] ; (15118 ) 14ee8: 4798 blx r3 14eea: 0083 lsls r3, r0, #2 14eec: 1818 adds r0, r3, r0 14eee: 3050 adds r0, #80 ; 0x50 14ef0: 2340 movs r3, #64 ; 0x40 14ef2: 33ff adds r3, #255 ; 0xff 14ef4: 2201 movs r2, #1 14ef6: 4298 cmp r0, r3 14ef8: d901 bls.n 14efe 14efa: f001 f997 bl 1622c _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 14efe: 2110 movs r1, #16 14f00: 0020 movs r0, r4 14f02: 4b86 ldr r3, [pc, #536] ; (1511c ) 14f04: 4798 blx r3 lv_style_set_pad_bottom(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 14f06: 4b86 ldr r3, [pc, #536] ; (15120 ) 14f08: 681c ldr r4, [r3, #0] 14f0a: 3468 adds r4, #104 ; 0x68 14f0c: 2000 movs r0, #0 14f0e: 4b82 ldr r3, [pc, #520] ; (15118 ) 14f10: 4798 blx r3 14f12: 0083 lsls r3, r0, #2 14f14: 1818 adds r0, r3, r0 14f16: 3050 adds r0, #80 ; 0x50 14f18: 2340 movs r3, #64 ; 0x40 14f1a: 33ff adds r3, #255 ; 0xff 14f1c: 2201 movs r2, #1 14f1e: 4298 cmp r0, r3 14f20: d901 bls.n 14f26 14f22: f001 f990 bl 16246 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 14f26: 2111 movs r1, #17 14f28: 0020 movs r0, r4 14f2a: 4b7c ldr r3, [pc, #496] ; (1511c ) 14f2c: 4798 blx r3 lv_style_set_pad_inner(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 14f2e: 4b7c ldr r3, [pc, #496] ; (15120 ) 14f30: 681c ldr r4, [r3, #0] 14f32: 3468 adds r4, #104 ; 0x68 14f34: 2000 movs r0, #0 14f36: 4b78 ldr r3, [pc, #480] ; (15118 ) 14f38: 4798 blx r3 14f3a: 0043 lsls r3, r0, #1 14f3c: 1818 adds r0, r3, r0 14f3e: 3050 adds r0, #80 ; 0x50 14f40: 2340 movs r3, #64 ; 0x40 14f42: 33ff adds r3, #255 ; 0xff 14f44: 2201 movs r2, #1 14f46: 4298 cmp r0, r3 14f48: d901 bls.n 14f4e 14f4a: f001 f989 bl 16260 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 14f4e: 2114 movs r1, #20 14f50: 0020 movs r0, r4 14f52: 4b72 ldr r3, [pc, #456] ; (1511c ) 14f54: 4798 blx r3 style_init_reset(&styles->mbox_bg); 14f56: 4c72 ldr r4, [pc, #456] ; (15120 ) 14f58: 6820 ldr r0, [r4, #0] 14f5a: 307c adds r0, #124 ; 0x7c 14f5c: 4b6c ldr r3, [pc, #432] ; (15110 ) 14f5e: 4798 blx r3 lv_style_set_shadow_width(&styles->mbox_bg, LV_STATE_DEFAULT, LV_DPX(50)); 14f60: 6824 ldr r4, [r4, #0] 14f62: 347c adds r4, #124 ; 0x7c 14f64: 2000 movs r0, #0 14f66: 4b6c ldr r3, [pc, #432] ; (15118 ) 14f68: 4798 blx r3 14f6a: 2332 movs r3, #50 ; 0x32 14f6c: 4358 muls r0, r3 14f6e: 3050 adds r0, #80 ; 0x50 14f70: 2340 movs r3, #64 ; 0x40 14f72: 33ff adds r3, #255 ; 0xff 14f74: 2201 movs r2, #1 14f76: 4298 cmp r0, r3 14f78: d901 bls.n 14f7e 14f7a: f001 f97e bl 1627a _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 14f7e: 2150 movs r1, #80 ; 0x50 14f80: 0020 movs r0, r4 14f82: 4b66 ldr r3, [pc, #408] ; (1511c ) 14f84: 4798 blx r3 lv_style_set_shadow_color(&styles->mbox_bg, LV_STATE_DEFAULT, IS_LIGHT ? LV_COLOR_SILVER : lv_color_hex3(0x999)); 14f86: 4b66 ldr r3, [pc, #408] ; (15120 ) 14f88: 6818 ldr r0, [r3, #0] 14f8a: 307c adds r0, #124 ; 0x7c 14f8c: 4b69 ldr r3, [pc, #420] ; (15134 ) 14f8e: 699b ldr r3, [r3, #24] 14f90: 079b lsls r3, r3, #30 14f92: d401 bmi.n 14f98 14f94: f001 f97e bl 16294 14f98: 2230 movs r2, #48 ; 0x30 14f9a: 2318 movs r3, #24 14f9c: 0152 lsls r2, r2, #5 14f9e: 02d9 lsls r1, r3, #11 14fa0: 431a orrs r2, r3 14fa2: 430a orrs r2, r1 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar) 14fa4: 2159 movs r1, #89 ; 0x59 14fa6: 4b62 ldr r3, [pc, #392] ; (15130 ) 14fa8: 4798 blx r3 style_init_reset(&styles->sb); 14faa: 4c5d ldr r4, [pc, #372] ; (15120 ) 14fac: 6820 ldr r0, [r4, #0] 14fae: 3080 adds r0, #128 ; 0x80 14fb0: 4b57 ldr r3, [pc, #348] ; (15110 ) 14fb2: 4798 blx r3 lv_style_set_bg_opa(&styles->sb, LV_STATE_DEFAULT, LV_OPA_COVER); 14fb4: 6820 ldr r0, [r4, #0] 14fb6: 3080 adds r0, #128 ; 0x80 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 14fb8: 22ff movs r2, #255 ; 0xff 14fba: 212c movs r1, #44 ; 0x2c 14fbc: 4b55 ldr r3, [pc, #340] ; (15114 ) 14fbe: 4798 blx r3 lv_style_set_bg_color(&styles->sb, LV_STATE_DEFAULT, (IS_LIGHT ? lv_color_hex(0xcccfd1) : lv_color_hex(0x777f85))); 14fc0: 6820 ldr r0, [r4, #0] 14fc2: 3080 adds r0, #128 ; 0x80 14fc4: 4b5b ldr r3, [pc, #364] ; (15134 ) 14fc6: 699b ldr r3, [r3, #24] 14fc8: 079b lsls r3, r3, #30 14fca: d501 bpl.n 14fd0 14fcc: f001 f966 bl 1629c 14fd0: 230e movs r3, #14 14fd2: 211f movs r1, #31 14fd4: 2210 movs r2, #16 14fd6: 0149 lsls r1, r1, #5 14fd8: 02db lsls r3, r3, #11 14fda: 430a orrs r2, r1 14fdc: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 14fde: 2129 movs r1, #41 ; 0x29 14fe0: 4b53 ldr r3, [pc, #332] ; (15130 ) 14fe2: 4798 blx r3 lv_style_set_radius(&styles->sb, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 14fe4: 4c4e ldr r4, [pc, #312] ; (15120 ) 14fe6: 6820 ldr r0, [r4, #0] 14fe8: 3080 adds r0, #128 ; 0x80 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 14fea: 4a55 ldr r2, [pc, #340] ; (15140 ) 14fec: 2101 movs r1, #1 14fee: 4b4b ldr r3, [pc, #300] ; (1511c ) 14ff0: 4798 blx r3 lv_style_set_size(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 14ff2: 6824 ldr r4, [r4, #0] 14ff4: 3480 adds r4, #128 ; 0x80 14ff6: 2000 movs r0, #0 14ff8: 4b47 ldr r3, [pc, #284] ; (15118 ) 14ffa: 4798 blx r3 14ffc: 00c3 lsls r3, r0, #3 14ffe: 1a18 subs r0, r3, r0 15000: 3050 adds r0, #80 ; 0x50 15002: 2340 movs r3, #64 ; 0x40 15004: 33ff adds r3, #255 ; 0xff 15006: 2201 movs r2, #1 15008: 4298 cmp r0, r3 1500a: d901 bls.n 15010 1500c: f001 f94b bl 162a6 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 15010: 2103 movs r1, #3 15012: 0020 movs r0, r4 15014: 4b41 ldr r3, [pc, #260] ; (1511c ) 15016: 4798 blx r3 lv_style_set_pad_right(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 15018: 4b41 ldr r3, [pc, #260] ; (15120 ) 1501a: 681c ldr r4, [r3, #0] 1501c: 3480 adds r4, #128 ; 0x80 1501e: 2000 movs r0, #0 15020: 4b3d ldr r3, [pc, #244] ; (15118 ) 15022: 4798 blx r3 15024: 00c3 lsls r3, r0, #3 15026: 1a18 subs r0, r3, r0 15028: 3050 adds r0, #80 ; 0x50 1502a: 2340 movs r3, #64 ; 0x40 1502c: 33ff adds r3, #255 ; 0xff 1502e: 2201 movs r2, #1 15030: 4298 cmp r0, r3 15032: d901 bls.n 15038 15034: f001 f943 bl 162be _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 15038: 2113 movs r1, #19 1503a: 0020 movs r0, r4 1503c: 4b37 ldr r3, [pc, #220] ; (1511c ) 1503e: 4798 blx r3 lv_style_set_pad_bottom(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 15040: 4b37 ldr r3, [pc, #220] ; (15120 ) 15042: 681c ldr r4, [r3, #0] 15044: 3480 adds r4, #128 ; 0x80 15046: 2000 movs r0, #0 15048: 4b33 ldr r3, [pc, #204] ; (15118 ) 1504a: 4798 blx r3 1504c: 00c3 lsls r3, r0, #3 1504e: 1a18 subs r0, r3, r0 15050: 3050 adds r0, #80 ; 0x50 15052: 2340 movs r3, #64 ; 0x40 15054: 33ff adds r3, #255 ; 0xff 15056: 2201 movs r2, #1 15058: 4298 cmp r0, r3 1505a: d901 bls.n 15060 1505c: f001 f93b bl 162d6 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 15060: 2111 movs r1, #17 15062: 0020 movs r0, r4 15064: 4b2d ldr r3, [pc, #180] ; (1511c ) 15066: 4798 blx r3 style_init_reset(&styles->edge_flash); 15068: 4c2d ldr r4, [pc, #180] ; (15120 ) 1506a: 6820 ldr r0, [r4, #0] 1506c: 3084 adds r0, #132 ; 0x84 1506e: 4d28 ldr r5, [pc, #160] ; (15110 ) 15070: 47a8 blx r5 lv_style_set_bg_opa(&styles->edge_flash, LV_STATE_DEFAULT, LV_OPA_COVER); 15072: 6820 ldr r0, [r4, #0] 15074: 3084 adds r0, #132 ; 0x84 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 15076: 22ff movs r2, #255 ; 0xff 15078: 212c movs r1, #44 ; 0x2c 1507a: 4b26 ldr r3, [pc, #152] ; (15114 ) 1507c: 4798 blx r3 lv_style_set_bg_color(&styles->edge_flash, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 1507e: 6820 ldr r0, [r4, #0] 15080: 3084 adds r0, #132 ; 0x84 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 15082: 4b30 ldr r3, [pc, #192] ; (15144 ) 15084: 881a ldrh r2, [r3, #0] 15086: 2129 movs r1, #41 ; 0x29 15088: 4b29 ldr r3, [pc, #164] ; (15130 ) 1508a: 4798 blx r3 style_init_reset(&styles->ta_cursor); 1508c: 6820 ldr r0, [r4, #0] 1508e: 30b4 adds r0, #180 ; 0xb4 15090: 47a8 blx r5 lv_style_set_border_color(&styles->ta_cursor, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 15092: 6820 ldr r0, [r4, #0] 15094: 30b4 adds r0, #180 ; 0xb4 15096: 4b27 ldr r3, [pc, #156] ; (15134 ) 15098: 699b ldr r3, [r3, #24] 1509a: 079b lsls r3, r3, #30 1509c: d501 bpl.n 150a2 1509e: f001 f926 bl 162ee 150a2: 2314 movs r3, #20 150a4: 212a movs r1, #42 ; 0x2a 150a6: 2215 movs r2, #21 150a8: 0149 lsls r1, r1, #5 150aa: 02db lsls r3, r3, #11 150ac: 430a orrs r2, r1 150ae: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 150b0: 2139 movs r1, #57 ; 0x39 150b2: 4b1f ldr r3, [pc, #124] ; (15130 ) 150b4: 4798 blx r3 lv_style_set_border_width(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(2)); 150b6: 4b1a ldr r3, [pc, #104] ; (15120 ) 150b8: 681c ldr r4, [r3, #0] 150ba: 34b4 adds r4, #180 ; 0xb4 150bc: 2000 movs r0, #0 150be: 4b16 ldr r3, [pc, #88] ; (15118 ) 150c0: 4798 blx r3 150c2: 3028 adds r0, #40 ; 0x28 150c4: 0040 lsls r0, r0, #1 150c6: 2340 movs r3, #64 ; 0x40 150c8: 33ff adds r3, #255 ; 0xff 150ca: 2201 movs r2, #1 150cc: 4298 cmp r0, r3 150ce: d901 bls.n 150d4 150d0: f001 f912 bl 162f8 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 150d4: 2130 movs r1, #48 ; 0x30 150d6: 0020 movs r0, r4 150d8: 4b10 ldr r3, [pc, #64] ; (1511c ) 150da: 4798 blx r3 lv_style_set_pad_left(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(1)); 150dc: 4b10 ldr r3, [pc, #64] ; (15120 ) 150de: 681c ldr r4, [r3, #0] 150e0: 34b4 adds r4, #180 ; 0xb4 150e2: 2000 movs r0, #0 150e4: 4b0c ldr r3, [pc, #48] ; (15118 ) 150e6: 4798 blx r3 150e8: 3050 adds r0, #80 ; 0x50 150ea: 2340 movs r3, #64 ; 0x40 150ec: 33ff adds r3, #255 ; 0xff 150ee: 2201 movs r2, #1 150f0: 4298 cmp r0, r3 150f2: d901 bls.n 150f8 150f4: f001 f90b bl 1630e _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 150f8: 2112 movs r1, #18 150fa: 0020 movs r0, r4 150fc: 4d07 ldr r5, [pc, #28] ; (1511c ) 150fe: 47a8 blx r5 lv_style_set_border_side(&styles->ta_cursor, LV_STATE_DEFAULT, LV_BORDER_SIDE_LEFT); 15100: 4c07 ldr r4, [pc, #28] ; (15120 ) 15102: 6820 ldr r0, [r4, #0] 15104: 30b4 adds r0, #180 ; 0xb4 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 15106: 2204 movs r2, #4 15108: 2131 movs r1, #49 ; 0x31 1510a: 47a8 blx r5 1510c: e01c b.n 15148 1510e: 46c0 nop ; (mov r8, r8) 15110: 00012495 .word 0x00012495 15114: 00004fb5 .word 0x00004fb5 15118: 0000f665 .word 0x0000f665 1511c: 00004cf5 .word 0x00004cf5 15120: 20004c38 .word 0x20004c38 15124: 0001c934 .word 0x0001c934 15128: 00005109 .word 0x00005109 1512c: 0001c92c .word 0x0001c92c 15130: 00004e55 .word 0x00004e55 15134: 20004c3c .word 0x20004c3c 15138: 0000818e .word 0x0000818e 1513c: 00000439 .word 0x00000439 15140: 00007fff .word 0x00007fff 15144: 0001c928 .word 0x0001c928 style_init_reset(&styles->ta_placeholder); 15148: 6820 ldr r0, [r4, #0] 1514a: 30b8 adds r0, #184 ; 0xb8 1514c: 4bfb ldr r3, [pc, #1004] ; (1553c ) 1514e: 4798 blx r3 lv_style_set_text_color(&styles->ta_placeholder, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 15150: 6820 ldr r0, [r4, #0] 15152: 30b8 adds r0, #184 ; 0xb8 15154: 4bfa ldr r3, [pc, #1000] ; (15540 ) 15156: 699b ldr r3, [r3, #24] 15158: 079b lsls r3, r3, #30 1515a: d501 bpl.n 15160 1515c: f001 f8e1 bl 16322 15160: 2314 movs r3, #20 15162: 212b movs r1, #43 ; 0x2b 15164: 2217 movs r2, #23 15166: 0149 lsls r1, r1, #5 15168: 02db lsls r3, r3, #11 1516a: 430a orrs r2, r1 1516c: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 1516e: 4ef5 ldr r6, [pc, #980] ; (15544 ) 15170: 0031 movs r1, r6 15172: 4df5 ldr r5, [pc, #980] ; (15548 ) 15174: 47a8 blx r5 style_init_reset(&styles->spinbox_cursor); 15176: 4cf5 ldr r4, [pc, #980] ; (1554c ) 15178: 6820 ldr r0, [r4, #0] 1517a: 3098 adds r0, #152 ; 0x98 1517c: 4bef ldr r3, [pc, #956] ; (1553c ) 1517e: 4798 blx r3 lv_style_set_bg_opa(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_OPA_COVER); 15180: 6820 ldr r0, [r4, #0] 15182: 3098 adds r0, #152 ; 0x98 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 15184: 22ff movs r2, #255 ; 0xff 15186: 212c movs r1, #44 ; 0x2c 15188: 4bf1 ldr r3, [pc, #964] ; (15550 ) 1518a: 4798 blx r3 lv_style_set_bg_color(&styles->spinbox_cursor, LV_STATE_DEFAULT, theme.color_primary); 1518c: 6820 ldr r0, [r4, #0] 1518e: 3098 adds r0, #152 ; 0x98 15190: 4beb ldr r3, [pc, #940] ; (15540 ) 15192: 889a ldrh r2, [r3, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 15194: 2129 movs r1, #41 ; 0x29 15196: 47a8 blx r5 lv_style_set_text_color(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_COLOR_WHITE); 15198: 6820 ldr r0, [r4, #0] 1519a: 3098 adds r0, #152 ; 0x98 1519c: 4bed ldr r3, [pc, #948] ; (15554 ) 1519e: 881a ldrh r2, [r3, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 151a0: 0031 movs r1, r6 151a2: 47a8 blx r5 lv_style_set_pad_top(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 151a4: 6824 ldr r4, [r4, #0] 151a6: 3498 adds r4, #152 ; 0x98 151a8: 2000 movs r0, #0 151aa: 4beb ldr r3, [pc, #940] ; (15558 ) 151ac: 4798 blx r3 151ae: 2364 movs r3, #100 ; 0x64 151b0: 4358 muls r0, r3 151b2: 3050 adds r0, #80 ; 0x50 151b4: 2340 movs r3, #64 ; 0x40 151b6: 33ff adds r3, #255 ; 0xff 151b8: 2201 movs r2, #1 151ba: 4298 cmp r0, r3 151bc: d901 bls.n 151c2 151be: f001 f8b5 bl 1632c _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 151c2: 2110 movs r1, #16 151c4: 0020 movs r0, r4 151c6: 4be5 ldr r3, [pc, #916] ; (1555c ) 151c8: 4798 blx r3 lv_style_set_pad_bottom(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 151ca: 4be0 ldr r3, [pc, #896] ; (1554c ) 151cc: 681c ldr r4, [r3, #0] 151ce: 3498 adds r4, #152 ; 0x98 151d0: 2000 movs r0, #0 151d2: 4be1 ldr r3, [pc, #900] ; (15558 ) 151d4: 4798 blx r3 151d6: 2364 movs r3, #100 ; 0x64 151d8: 4358 muls r0, r3 151da: 3050 adds r0, #80 ; 0x50 151dc: 2340 movs r3, #64 ; 0x40 151de: 33ff adds r3, #255 ; 0xff 151e0: 2201 movs r2, #1 151e2: 4298 cmp r0, r3 151e4: d901 bls.n 151ea 151e6: f001 f8ae bl 16346 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 151ea: 2111 movs r1, #17 151ec: 0020 movs r0, r4 151ee: 4ddb ldr r5, [pc, #876] ; (1555c ) 151f0: 47a8 blx r5 style_init_reset(&styles->list_bg); 151f2: 4cd6 ldr r4, [pc, #856] ; (1554c ) 151f4: 6820 ldr r0, [r4, #0] 151f6: 3074 adds r0, #116 ; 0x74 151f8: 4ed0 ldr r6, [pc, #832] ; (1553c ) 151fa: 47b0 blx r6 lv_style_set_clip_corner(&styles->list_bg, LV_STATE_DEFAULT, true); 151fc: 6820 ldr r0, [r4, #0] 151fe: 3074 adds r0, #116 ; 0x74 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 15200: 2201 movs r2, #1 15202: 2102 movs r1, #2 15204: 47a8 blx r5 lv_style_set_pad_left(&styles->list_bg, LV_STATE_DEFAULT, 0); 15206: 6820 ldr r0, [r4, #0] 15208: 3074 adds r0, #116 ; 0x74 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1520a: 2200 movs r2, #0 1520c: 2112 movs r1, #18 1520e: 47a8 blx r5 lv_style_set_pad_right(&styles->list_bg, LV_STATE_DEFAULT, 0); 15210: 6820 ldr r0, [r4, #0] 15212: 3074 adds r0, #116 ; 0x74 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 15214: 2200 movs r2, #0 15216: 2113 movs r1, #19 15218: 47a8 blx r5 lv_style_set_pad_top(&styles->list_bg, LV_STATE_DEFAULT, 0); 1521a: 6820 ldr r0, [r4, #0] 1521c: 3074 adds r0, #116 ; 0x74 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1521e: 2200 movs r2, #0 15220: 2110 movs r1, #16 15222: 47a8 blx r5 lv_style_set_pad_bottom(&styles->list_bg, LV_STATE_DEFAULT, 0); 15224: 6820 ldr r0, [r4, #0] 15226: 3074 adds r0, #116 ; 0x74 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 15228: 2200 movs r2, #0 1522a: 2111 movs r1, #17 1522c: 47a8 blx r5 lv_style_set_pad_inner(&styles->list_bg, LV_STATE_DEFAULT, 0); 1522e: 6820 ldr r0, [r4, #0] 15230: 3074 adds r0, #116 ; 0x74 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 15232: 2200 movs r2, #0 15234: 2114 movs r1, #20 15236: 47a8 blx r5 style_init_reset(&styles->list_btn); 15238: 6820 ldr r0, [r4, #0] 1523a: 3078 adds r0, #120 ; 0x78 1523c: 47b0 blx r6 lv_style_set_bg_opa(&styles->list_btn, LV_STATE_DEFAULT, LV_OPA_COVER); 1523e: 6820 ldr r0, [r4, #0] 15240: 3078 adds r0, #120 ; 0x78 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 15242: 22ff movs r2, #255 ; 0xff 15244: 212c movs r1, #44 ; 0x2c 15246: 4bc2 ldr r3, [pc, #776] ; (15550 ) 15248: 4798 blx r3 lv_style_set_bg_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG); 1524a: 6820 ldr r0, [r4, #0] 1524c: 3078 adds r0, #120 ; 0x78 1524e: 4bbc ldr r3, [pc, #752] ; (15540 ) 15250: 699b ldr r3, [r3, #24] 15252: 079b lsls r3, r3, #30 15254: d501 bpl.n 1525a 15256: f001 f883 bl 16360 1525a: 230b movs r3, #11 1525c: 2118 movs r1, #24 1525e: 220e movs r2, #14 15260: 0149 lsls r1, r1, #5 15262: 02db lsls r3, r3, #11 15264: 430a orrs r2, r1 15266: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 15268: 2129 movs r1, #41 ; 0x29 1526a: 4bb7 ldr r3, [pc, #732] ; (15548 ) 1526c: 4798 blx r3 lv_style_set_bg_color(&styles->list_btn, LV_STATE_PRESSED, COLOR_BG_PR); 1526e: 4bb7 ldr r3, [pc, #732] ; (1554c ) 15270: 6818 ldr r0, [r3, #0] 15272: 3078 adds r0, #120 ; 0x78 15274: 4bb2 ldr r3, [pc, #712] ; (15540 ) 15276: 699b ldr r3, [r3, #24] 15278: 079b lsls r3, r3, #30 1527a: d501 bpl.n 15280 1527c: f001 f875 bl 1636a 15280: 2309 movs r3, #9 15282: 2113 movs r1, #19 15284: 220a movs r2, #10 15286: 0149 lsls r1, r1, #5 15288: 02db lsls r3, r3, #11 1528a: 430a orrs r2, r1 1528c: 431a orrs r2, r3 1528e: 49b4 ldr r1, [pc, #720] ; (15560 ) 15290: 4bad ldr r3, [pc, #692] ; (15548 ) 15292: 4798 blx r3 lv_style_set_bg_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_DIS); 15294: 4bad ldr r3, [pc, #692] ; (1554c ) 15296: 6818 ldr r0, [r3, #0] 15298: 3078 adds r0, #120 ; 0x78 1529a: 4ba9 ldr r3, [pc, #676] ; (15540 ) 1529c: 699b ldr r3, [r3, #24] 1529e: 079b lsls r3, r3, #30 152a0: d501 bpl.n 152a6 152a2: f001 f867 bl 16374 152a6: 230b movs r3, #11 152a8: 2118 movs r1, #24 152aa: 220e movs r2, #14 152ac: 0149 lsls r1, r1, #5 152ae: 02db lsls r3, r3, #11 152b0: 430a orrs r2, r1 152b2: 431a orrs r2, r3 152b4: 49ab ldr r1, [pc, #684] ; (15564 ) 152b6: 4ea4 ldr r6, [pc, #656] ; (15548 ) 152b8: 47b0 blx r6 lv_style_set_bg_color(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_CHK); 152ba: 4da4 ldr r5, [pc, #656] ; (1554c ) 152bc: 6828 ldr r0, [r5, #0] 152be: 3078 adds r0, #120 ; 0x78 152c0: 4c9f ldr r4, [pc, #636] ; (15540 ) 152c2: 88a2 ldrh r2, [r4, #4] 152c4: 212a movs r1, #42 ; 0x2a 152c6: 31ff adds r1, #255 ; 0xff 152c8: 47b0 blx r6 lv_style_set_bg_color(&styles->list_btn, LV_STATE_CHECKED | LV_STATE_PRESSED, COLOR_BG_PR_CHK); 152ca: 682f ldr r7, [r5, #0] 152cc: 3778 adds r7, #120 ; 0x78 152ce: 88a0 ldrh r0, [r4, #4] 152d0: 2133 movs r1, #51 ; 0x33 152d2: 4ba5 ldr r3, [pc, #660] ; (15568 ) 152d4: 4798 blx r3 152d6: 1c02 adds r2, r0, #0 152d8: 49a4 ldr r1, [pc, #656] ; (1556c ) 152da: 0038 movs r0, r7 152dc: 47b0 blx r6 lv_style_set_text_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 152de: 6828 ldr r0, [r5, #0] 152e0: 3078 adds r0, #120 ; 0x78 152e2: 69a3 ldr r3, [r4, #24] 152e4: 079b lsls r3, r3, #30 152e6: d501 bpl.n 152ec 152e8: f001 f849 bl 1637e 152ec: 231f movs r3, #31 152ee: 213f movs r1, #63 ; 0x3f 152f0: 221f movs r2, #31 152f2: 0149 lsls r1, r1, #5 152f4: 02db lsls r3, r3, #11 152f6: 430a orrs r2, r1 152f8: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 152fa: 4992 ldr r1, [pc, #584] ; (15544 ) 152fc: 4d92 ldr r5, [pc, #584] ; (15548 ) 152fe: 47a8 blx r5 lv_style_set_text_color(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 15300: 4c92 ldr r4, [pc, #584] ; (1554c ) 15302: 6820 ldr r0, [r4, #0] 15304: 3078 adds r0, #120 ; 0x78 15306: 2201 movs r2, #1 15308: 4252 negs r2, r2 1530a: 4999 ldr r1, [pc, #612] ; (15570 ) 1530c: 47a8 blx r5 lv_style_set_text_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 1530e: 6820 ldr r0, [r4, #0] 15310: 3078 adds r0, #120 ; 0x78 15312: 4b8b ldr r3, [pc, #556] ; (15540 ) 15314: 699b ldr r3, [r3, #24] 15316: 079b lsls r3, r3, #30 15318: d501 bpl.n 1531e 1531a: f001 f835 bl 16388 1531e: 2226 movs r2, #38 ; 0x26 15320: 2313 movs r3, #19 15322: 0152 lsls r2, r2, #5 15324: 02d9 lsls r1, r3, #11 15326: 431a orrs r2, r3 15328: 430a orrs r2, r1 1532a: 4992 ldr r1, [pc, #584] ; (15574 ) 1532c: 4b86 ldr r3, [pc, #536] ; (15548 ) 1532e: 4798 blx r3 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 15330: 4b86 ldr r3, [pc, #536] ; (1554c ) 15332: 6818 ldr r0, [r3, #0] 15334: 3078 adds r0, #120 ; 0x78 15336: 4b82 ldr r3, [pc, #520] ; (15540 ) 15338: 699b ldr r3, [r3, #24] 1533a: 079b lsls r3, r3, #30 1533c: d501 bpl.n 15342 1533e: f001 f827 bl 16390 15342: 231f movs r3, #31 15344: 213f movs r1, #63 ; 0x3f 15346: 221f movs r2, #31 15348: 0149 lsls r1, r1, #5 1534a: 02db lsls r3, r3, #11 1534c: 430a orrs r2, r1 1534e: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 15350: 4989 ldr r1, [pc, #548] ; (15578 ) 15352: 4d7d ldr r5, [pc, #500] ; (15548 ) 15354: 47a8 blx r5 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 15356: 4c7d ldr r4, [pc, #500] ; (1554c ) 15358: 6820 ldr r0, [r4, #0] 1535a: 3078 adds r0, #120 ; 0x78 1535c: 2201 movs r2, #1 1535e: 4252 negs r2, r2 15360: 4986 ldr r1, [pc, #536] ; (1557c ) 15362: 47a8 blx r5 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 15364: 6820 ldr r0, [r4, #0] 15366: 3078 adds r0, #120 ; 0x78 15368: 4b75 ldr r3, [pc, #468] ; (15540 ) 1536a: 699b ldr r3, [r3, #24] 1536c: 079b lsls r3, r3, #30 1536e: d501 bpl.n 15374 15370: f001 f813 bl 1639a 15374: 2226 movs r2, #38 ; 0x26 15376: 2313 movs r3, #19 15378: 0152 lsls r2, r2, #5 1537a: 02d9 lsls r1, r3, #11 1537c: 431a orrs r2, r3 1537e: 430a orrs r2, r1 15380: 497f ldr r1, [pc, #508] ; (15580 ) 15382: 4b71 ldr r3, [pc, #452] ; (15548 ) 15384: 4798 blx r3 lv_style_set_border_side(&styles->list_btn, LV_STATE_DEFAULT, LV_BORDER_SIDE_BOTTOM); 15386: 4c71 ldr r4, [pc, #452] ; (1554c ) 15388: 6820 ldr r0, [r4, #0] 1538a: 3078 adds r0, #120 ; 0x78 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 1538c: 2201 movs r2, #1 1538e: 2131 movs r1, #49 ; 0x31 15390: 4b72 ldr r3, [pc, #456] ; (1555c ) 15392: 4798 blx r3 lv_style_set_border_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_BORDER); 15394: 6820 ldr r0, [r4, #0] 15396: 3078 adds r0, #120 ; 0x78 15398: 4b69 ldr r3, [pc, #420] ; (15540 ) 1539a: 699b ldr r3, [r3, #24] 1539c: 079b lsls r3, r3, #30 1539e: d501 bpl.n 153a4 153a0: f000 ffff bl 163a2 153a4: 2310 movs r3, #16 153a6: 2122 movs r1, #34 ; 0x22 153a8: 2212 movs r2, #18 153aa: 0149 lsls r1, r1, #5 153ac: 02db lsls r3, r3, #11 153ae: 430a orrs r2, r1 153b0: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 153b2: 2139 movs r1, #57 ; 0x39 153b4: 4d64 ldr r5, [pc, #400] ; (15548 ) 153b6: 47a8 blx r5 lv_style_set_border_color(&styles->list_btn, LV_STATE_FOCUSED, theme.color_primary); 153b8: 4c64 ldr r4, [pc, #400] ; (1554c ) 153ba: 6820 ldr r0, [r4, #0] 153bc: 3078 adds r0, #120 ; 0x78 153be: 4b60 ldr r3, [pc, #384] ; (15540 ) 153c0: 889a ldrh r2, [r3, #4] 153c2: 4970 ldr r1, [pc, #448] ; (15584 ) 153c4: 47a8 blx r5 lv_style_set_border_width(&styles->list_btn, LV_STATE_DEFAULT, 1); 153c6: 6820 ldr r0, [r4, #0] 153c8: 3078 adds r0, #120 ; 0x78 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 153ca: 2201 movs r2, #1 153cc: 2130 movs r1, #48 ; 0x30 153ce: 4b63 ldr r3, [pc, #396] ; (1555c ) 153d0: 4798 blx r3 lv_style_set_pad_left(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 153d2: 6824 ldr r4, [r4, #0] 153d4: 3478 adds r4, #120 ; 0x78 153d6: 2000 movs r0, #0 153d8: 4b6b ldr r3, [pc, #428] ; (15588 ) 153da: 4798 blx r3 153dc: 2801 cmp r0, #1 153de: d801 bhi.n 153e4 153e0: f000 ffe4 bl 163ac 153e4: 2000 movs r0, #0 153e6: 4b5c ldr r3, [pc, #368] ; (15558 ) 153e8: 4798 blx r3 153ea: 0103 lsls r3, r0, #4 153ec: 1a1b subs r3, r3, r0 153ee: 005b lsls r3, r3, #1 153f0: 3350 adds r3, #80 ; 0x50 153f2: 2140 movs r1, #64 ; 0x40 153f4: 31ff adds r1, #255 ; 0xff 153f6: 2201 movs r2, #1 153f8: 428b cmp r3, r1 153fa: d901 bls.n 15400 153fc: f000 ffef bl 163de _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 15400: 2112 movs r1, #18 15402: 0020 movs r0, r4 15404: 4b55 ldr r3, [pc, #340] ; (1555c ) 15406: 4798 blx r3 lv_style_set_pad_right(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 15408: 4b50 ldr r3, [pc, #320] ; (1554c ) 1540a: 681c ldr r4, [r3, #0] 1540c: 3478 adds r4, #120 ; 0x78 1540e: 2000 movs r0, #0 15410: 4b5d ldr r3, [pc, #372] ; (15588 ) 15412: 4798 blx r3 15414: 2801 cmp r0, #1 15416: d801 bhi.n 1541c 15418: f000 ffee bl 163f8 1541c: 2000 movs r0, #0 1541e: 4b4e ldr r3, [pc, #312] ; (15558 ) 15420: 4798 blx r3 15422: 0103 lsls r3, r0, #4 15424: 1a1b subs r3, r3, r0 15426: 005b lsls r3, r3, #1 15428: 3350 adds r3, #80 ; 0x50 1542a: 2140 movs r1, #64 ; 0x40 1542c: 31ff adds r1, #255 ; 0xff 1542e: 2201 movs r2, #1 15430: 428b cmp r3, r1 15432: d901 bls.n 15438 15434: f000 fff9 bl 1642a _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 15438: 2113 movs r1, #19 1543a: 0020 movs r0, r4 1543c: 4b47 ldr r3, [pc, #284] ; (1555c ) 1543e: 4798 blx r3 lv_style_set_pad_top(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 15440: 4b42 ldr r3, [pc, #264] ; (1554c ) 15442: 681c ldr r4, [r3, #0] 15444: 3478 adds r4, #120 ; 0x78 15446: 2000 movs r0, #0 15448: 4b4f ldr r3, [pc, #316] ; (15588 ) 1544a: 4798 blx r3 1544c: 2801 cmp r0, #1 1544e: d801 bhi.n 15454 15450: f000 fff8 bl 16444 15454: 2000 movs r0, #0 15456: 4b40 ldr r3, [pc, #256] ; (15558 ) 15458: 4798 blx r3 1545a: 0103 lsls r3, r0, #4 1545c: 1a1b subs r3, r3, r0 1545e: 005b lsls r3, r3, #1 15460: 3350 adds r3, #80 ; 0x50 15462: 2140 movs r1, #64 ; 0x40 15464: 31ff adds r1, #255 ; 0xff 15466: 2201 movs r2, #1 15468: 428b cmp r3, r1 1546a: d901 bls.n 15470 1546c: f001 f803 bl 16476 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 15470: 2110 movs r1, #16 15472: 0020 movs r0, r4 15474: 4b39 ldr r3, [pc, #228] ; (1555c ) 15476: 4798 blx r3 lv_style_set_pad_bottom(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 15478: 4b34 ldr r3, [pc, #208] ; (1554c ) 1547a: 681c ldr r4, [r3, #0] 1547c: 3478 adds r4, #120 ; 0x78 1547e: 2000 movs r0, #0 15480: 4b41 ldr r3, [pc, #260] ; (15588 ) 15482: 4798 blx r3 15484: 2801 cmp r0, #1 15486: d801 bhi.n 1548c 15488: f001 f802 bl 16490 1548c: 2000 movs r0, #0 1548e: 4b32 ldr r3, [pc, #200] ; (15558 ) 15490: 4798 blx r3 15492: 0103 lsls r3, r0, #4 15494: 1a1b subs r3, r3, r0 15496: 005b lsls r3, r3, #1 15498: 3350 adds r3, #80 ; 0x50 1549a: 2140 movs r1, #64 ; 0x40 1549c: 31ff adds r1, #255 ; 0xff 1549e: 2201 movs r2, #1 154a0: 428b cmp r3, r1 154a2: d901 bls.n 154a8 154a4: f001 f80d bl 164c2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 154a8: 2111 movs r1, #17 154aa: 0020 movs r0, r4 154ac: 4b2b ldr r3, [pc, #172] ; (1555c ) 154ae: 4798 blx r3 lv_style_set_pad_inner(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 154b0: 4b26 ldr r3, [pc, #152] ; (1554c ) 154b2: 681c ldr r4, [r3, #0] 154b4: 3478 adds r4, #120 ; 0x78 154b6: 2000 movs r0, #0 154b8: 4b33 ldr r3, [pc, #204] ; (15588 ) 154ba: 4798 blx r3 154bc: 2801 cmp r0, #1 154be: d801 bhi.n 154c4 154c0: f001 f80c bl 164dc 154c4: 2000 movs r0, #0 154c6: 4b24 ldr r3, [pc, #144] ; (15558 ) 154c8: 4798 blx r3 154ca: 0103 lsls r3, r0, #4 154cc: 1a1b subs r3, r3, r0 154ce: 005b lsls r3, r3, #1 154d0: 3350 adds r3, #80 ; 0x50 154d2: 2140 movs r1, #64 ; 0x40 154d4: 31ff adds r1, #255 ; 0xff 154d6: 2201 movs r2, #1 154d8: 428b cmp r3, r1 154da: d901 bls.n 154e0 154dc: f001 f817 bl 1650e _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 154e0: 2114 movs r1, #20 154e2: 0020 movs r0, r4 154e4: 4b1d ldr r3, [pc, #116] ; (1555c ) 154e6: 4798 blx r3 lv_style_set_transform_width(&styles->list_btn, LV_STATE_DEFAULT, - PAD_DEF); 154e8: 4b18 ldr r3, [pc, #96] ; (1554c ) 154ea: 681c ldr r4, [r3, #0] 154ec: 3478 adds r4, #120 ; 0x78 154ee: 2000 movs r0, #0 154f0: 4b25 ldr r3, [pc, #148] ; (15588 ) 154f2: 4798 blx r3 154f4: 2801 cmp r0, #1 154f6: d801 bhi.n 154fc 154f8: f001 f816 bl 16528 154fc: 2000 movs r0, #0 154fe: 4b16 ldr r3, [pc, #88] ; (15558 ) 15500: 4798 blx r3 15502: 0103 lsls r3, r0, #4 15504: 1a18 subs r0, r3, r0 15506: 0040 lsls r0, r0, #1 15508: 3050 adds r0, #80 ; 0x50 1550a: 2340 movs r3, #64 ; 0x40 1550c: 33ff adds r3, #255 ; 0xff 1550e: 4298 cmp r0, r3 15510: d901 bls.n 15516 15512: f001 f824 bl 1655e 15516: 2201 movs r2, #1 15518: 4252 negs r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 1551a: 2104 movs r1, #4 1551c: 0020 movs r0, r4 1551e: 4d0f ldr r5, [pc, #60] ; (1555c ) 15520: 47a8 blx r5 lv_style_set_transform_width(&styles->list_btn, LV_STATE_PRESSED, 0); 15522: 4c0a ldr r4, [pc, #40] ; (1554c ) 15524: 6820 ldr r0, [r4, #0] 15526: 3078 adds r0, #120 ; 0x78 15528: 2200 movs r2, #0 1552a: 4918 ldr r1, [pc, #96] ; (1558c ) 1552c: 47a8 blx r5 lv_style_set_transform_width(&styles->list_btn, LV_STATE_CHECKED, 0); 1552e: 6820 ldr r0, [r4, #0] 15530: 3078 adds r0, #120 ; 0x78 15532: 2200 movs r2, #0 15534: 2182 movs r1, #130 ; 0x82 15536: 0049 lsls r1, r1, #1 15538: 47a8 blx r5 1553a: e029 b.n 15590 1553c: 00012495 .word 0x00012495 15540: 20004c3c .word 0x20004c3c 15544: 00008089 .word 0x00008089 15548: 00004e55 .word 0x00004e55 1554c: 20004c38 .word 0x20004c38 15550: 00004fb5 .word 0x00004fb5 15554: 0001c92c .word 0x0001c92c 15558: 0000f665 .word 0x0000f665 1555c: 00004cf5 .word 0x00004cf5 15560: 00001029 .word 0x00001029 15564: 00002029 .word 0x00002029 15568: 000102dd .word 0x000102dd 1556c: 00001129 .word 0x00001129 15570: 00008189 .word 0x00008189 15574: 0000a089 .word 0x0000a089 15578: 000080a9 .word 0x000080a9 1557c: 000081a9 .word 0x000081a9 15580: 0000a0a9 .word 0x0000a0a9 15584: 00000239 .word 0x00000239 15588: 0000f681 .word 0x0000f681 1558c: 00001004 .word 0x00001004 lv_style_set_transform_width(&styles->list_btn, LV_STATE_DISABLED, 0); 15590: 6820 ldr r0, [r4, #0] 15592: 3078 adds r0, #120 ; 0x78 15594: 2200 movs r2, #0 15596: 49fa ldr r1, [pc, #1000] ; (15980 ) 15598: 47a8 blx r5 lv_style_set_transition_time(&styles->list_btn, LV_STATE_DEFAULT, TRANSITION_TIME); 1559a: 6820 ldr r0, [r4, #0] 1559c: 3078 adds r0, #120 ; 0x78 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 1559e: 2296 movs r2, #150 ; 0x96 155a0: 21b0 movs r1, #176 ; 0xb0 155a2: 47a8 blx r5 lv_style_set_transition_prop_6(&styles->list_btn, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); 155a4: 6820 ldr r0, [r4, #0] 155a6: 3078 adds r0, #120 ; 0x78 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 155a8: 2229 movs r2, #41 ; 0x29 155aa: 21b7 movs r1, #183 ; 0xb7 155ac: 47a8 blx r5 lv_style_set_transition_prop_5(&styles->list_btn, LV_STATE_DEFAULT, LV_STYLE_TRANSFORM_WIDTH); 155ae: 6820 ldr r0, [r4, #0] 155b0: 3078 adds r0, #120 ; 0x78 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 155b2: 2204 movs r2, #4 155b4: 21b6 movs r1, #182 ; 0xb6 155b6: 47a8 blx r5 style_init_reset(&styles->ddlist_page); 155b8: 6820 ldr r0, [r4, #0] 155ba: 3054 adds r0, #84 ; 0x54 155bc: 4bf1 ldr r3, [pc, #964] ; (15984 ) 155be: 4798 blx r3 lv_style_set_text_line_space(&styles->ddlist_page, LV_STATE_DEFAULT, LV_DPX(20)); 155c0: 6824 ldr r4, [r4, #0] 155c2: 3454 adds r4, #84 ; 0x54 155c4: 2000 movs r0, #0 155c6: 4bf0 ldr r3, [pc, #960] ; (15988 ) 155c8: 4798 blx r3 155ca: 0083 lsls r3, r0, #2 155cc: 181b adds r3, r3, r0 155ce: 009b lsls r3, r3, #2 155d0: 3350 adds r3, #80 ; 0x50 155d2: 2140 movs r1, #64 ; 0x40 155d4: 31ff adds r1, #255 ; 0xff 155d6: 2201 movs r2, #1 155d8: 428b cmp r3, r1 155da: d901 bls.n 155e0 155dc: f000 ffcd bl 1657a _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 155e0: 49ea ldr r1, [pc, #936] ; (1598c ) 155e2: 0020 movs r0, r4 155e4: 4dea ldr r5, [pc, #936] ; (15990 ) 155e6: 47a8 blx r5 lv_style_set_clip_corner(&styles->ddlist_page, LV_STATE_DEFAULT, true); 155e8: 4cea ldr r4, [pc, #936] ; (15994 ) 155ea: 6820 ldr r0, [r4, #0] 155ec: 3054 adds r0, #84 ; 0x54 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 155ee: 2201 movs r2, #1 155f0: 2102 movs r1, #2 155f2: 47a8 blx r5 style_init_reset(&styles->ddlist_sel); 155f4: 6820 ldr r0, [r4, #0] 155f6: 3058 adds r0, #88 ; 0x58 155f8: 4be2 ldr r3, [pc, #904] ; (15984 ) 155fa: 4798 blx r3 lv_style_set_bg_opa(&styles->ddlist_sel, LV_STATE_DEFAULT, LV_OPA_COVER); 155fc: 6820 ldr r0, [r4, #0] 155fe: 3058 adds r0, #88 ; 0x58 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 15600: 22ff movs r2, #255 ; 0xff 15602: 212c movs r1, #44 ; 0x2c 15604: 4be4 ldr r3, [pc, #912] ; (15998 ) 15606: 4798 blx r3 lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_DEFAULT, theme.color_primary); 15608: 6820 ldr r0, [r4, #0] 1560a: 3058 adds r0, #88 ; 0x58 1560c: 4de3 ldr r5, [pc, #908] ; (1599c ) 1560e: 88aa ldrh r2, [r5, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 15610: 2129 movs r1, #41 ; 0x29 15612: 4ee3 ldr r6, [pc, #908] ; (159a0 ) 15614: 47b0 blx r6 lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex3(0xfff) : lv_color_hex3(0xfff)); 15616: 6820 ldr r0, [r4, #0] 15618: 3058 adds r0, #88 ; 0x58 1561a: 2201 movs r2, #1 1561c: 4252 negs r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 1561e: 49e1 ldr r1, [pc, #900] ; (159a4 ) 15620: 47b0 blx r6 lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_PR); 15622: 6820 ldr r0, [r4, #0] 15624: 3058 adds r0, #88 ; 0x58 15626: 69ab ldr r3, [r5, #24] 15628: 079b lsls r3, r3, #30 1562a: d501 bpl.n 15630 1562c: f000 ffb3 bl 16596 15630: 2309 movs r3, #9 15632: 2113 movs r1, #19 15634: 220a movs r2, #10 15636: 0149 lsls r1, r1, #5 15638: 02db lsls r3, r3, #11 1563a: 430a orrs r2, r1 1563c: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 1563e: 49da ldr r1, [pc, #872] ; (159a8 ) 15640: 4bd7 ldr r3, [pc, #860] ; (159a0 ) 15642: 4798 blx r3 lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 15644: 4bd3 ldr r3, [pc, #844] ; (15994 ) 15646: 6818 ldr r0, [r3, #0] 15648: 3058 adds r0, #88 ; 0x58 1564a: 4bd4 ldr r3, [pc, #848] ; (1599c ) 1564c: 699b ldr r3, [r3, #24] 1564e: 079b lsls r3, r3, #30 15650: d501 bpl.n 15656 15652: f000 ffa5 bl 165a0 15656: 231f movs r3, #31 15658: 213f movs r1, #63 ; 0x3f 1565a: 221f movs r2, #31 1565c: 0149 lsls r1, r1, #5 1565e: 02db lsls r3, r3, #11 15660: 430a orrs r2, r1 15662: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 15664: 49d1 ldr r1, [pc, #836] ; (159ac ) 15666: 4bce ldr r3, [pc, #824] ; (159a0 ) 15668: 4798 blx r3 style_init_reset(&styles->roller_bg); 1566a: 4cca ldr r4, [pc, #808] ; (15994 ) 1566c: 6820 ldr r0, [r4, #0] 1566e: 3088 adds r0, #136 ; 0x88 15670: 4bc4 ldr r3, [pc, #784] ; (15984 ) 15672: 4798 blx r3 lv_style_set_text_line_space(&styles->roller_bg, LV_STATE_DEFAULT, LV_DPX(25)); 15674: 6824 ldr r4, [r4, #0] 15676: 3488 adds r4, #136 ; 0x88 15678: 2000 movs r0, #0 1567a: 4bc3 ldr r3, [pc, #780] ; (15988 ) 1567c: 4798 blx r3 1567e: 0083 lsls r3, r0, #2 15680: 1818 adds r0, r3, r0 15682: 0083 lsls r3, r0, #2 15684: 18c0 adds r0, r0, r3 15686: 3050 adds r0, #80 ; 0x50 15688: 2340 movs r3, #64 ; 0x40 1568a: 33ff adds r3, #255 ; 0xff 1568c: 2201 movs r2, #1 1568e: 4298 cmp r0, r3 15690: d901 bls.n 15696 15692: f000 ff8a bl 165aa _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 15696: 49bd ldr r1, [pc, #756] ; (1598c ) 15698: 0020 movs r0, r4 1569a: 4bbd ldr r3, [pc, #756] ; (15990 ) 1569c: 4798 blx r3 style_init_reset(&styles->roller_sel); 1569e: 4cbd ldr r4, [pc, #756] ; (15994 ) 156a0: 6820 ldr r0, [r4, #0] 156a2: 308c adds r0, #140 ; 0x8c 156a4: 4fb7 ldr r7, [pc, #732] ; (15984 ) 156a6: 47b8 blx r7 lv_style_set_bg_opa(&styles->roller_sel, LV_STATE_DEFAULT, LV_OPA_COVER); 156a8: 6820 ldr r0, [r4, #0] 156aa: 308c adds r0, #140 ; 0x8c _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 156ac: 22ff movs r2, #255 ; 0xff 156ae: 212c movs r1, #44 ; 0x2c 156b0: 4eb9 ldr r6, [pc, #740] ; (15998 ) 156b2: 47b0 blx r6 lv_style_set_bg_color(&styles->roller_sel, LV_STATE_DEFAULT, theme.color_primary); 156b4: 6820 ldr r0, [r4, #0] 156b6: 308c adds r0, #140 ; 0x8c 156b8: 4db8 ldr r5, [pc, #736] ; (1599c ) 156ba: 88aa ldrh r2, [r5, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 156bc: 2129 movs r1, #41 ; 0x29 156be: 4bb8 ldr r3, [pc, #736] ; (159a0 ) 156c0: 4698 mov r8, r3 156c2: 4798 blx r3 lv_style_set_text_color(&styles->roller_sel, LV_STATE_DEFAULT, LV_COLOR_WHITE); 156c4: 6820 ldr r0, [r4, #0] 156c6: 308c adds r0, #140 ; 0x8c 156c8: 4bb9 ldr r3, [pc, #740] ; (159b0 ) 156ca: 881a ldrh r2, [r3, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 156cc: 49b5 ldr r1, [pc, #724] ; (159a4 ) 156ce: 47c0 blx r8 style_init_reset(&styles->tabview_btns_bg); 156d0: 6820 ldr r0, [r4, #0] 156d2: 30a8 adds r0, #168 ; 0xa8 156d4: 47b8 blx r7 lv_style_set_bg_opa(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_OPA_COVER); 156d6: 6820 ldr r0, [r4, #0] 156d8: 30a8 adds r0, #168 ; 0xa8 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 156da: 22ff movs r2, #255 ; 0xff 156dc: 212c movs r1, #44 ; 0x2c 156de: 47b0 blx r6 lv_style_set_bg_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_BG); 156e0: 6820 ldr r0, [r4, #0] 156e2: 30a8 adds r0, #168 ; 0xa8 156e4: 69ab ldr r3, [r5, #24] 156e6: 079b lsls r3, r3, #30 156e8: d501 bpl.n 156ee 156ea: f000 ff6c bl 165c6 156ee: 230b movs r3, #11 156f0: 2118 movs r1, #24 156f2: 220e movs r2, #14 156f4: 0149 lsls r1, r1, #5 156f6: 02db lsls r3, r3, #11 156f8: 430a orrs r2, r1 156fa: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 156fc: 2129 movs r1, #41 ; 0x29 156fe: 4ba8 ldr r3, [pc, #672] ; (159a0 ) 15700: 4798 blx r3 lv_style_set_border_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, 15702: 4ba4 ldr r3, [pc, #656] ; (15994 ) 15704: 6818 ldr r0, [r3, #0] 15706: 30a8 adds r0, #168 ; 0xa8 IS_LIGHT ? lv_color_hex(0xe4eaf0) : lv_color_hex(0x3b3e42)); 15708: 4ba4 ldr r3, [pc, #656] ; (1599c ) 1570a: 699b ldr r3, [r3, #24] lv_style_set_border_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, 1570c: 079b lsls r3, r3, #30 1570e: d501 bpl.n 15714 15710: f000 ff5e bl 165d0 15714: 2307 movs r3, #7 15716: 210f movs r1, #15 15718: 2208 movs r2, #8 1571a: 0149 lsls r1, r1, #5 1571c: 02db lsls r3, r3, #11 1571e: 430a orrs r2, r1 15720: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 15722: 2139 movs r1, #57 ; 0x39 15724: 4b9e ldr r3, [pc, #632] ; (159a0 ) 15726: 4798 blx r3 lv_style_set_border_width(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(5)); 15728: 4b9a ldr r3, [pc, #616] ; (15994 ) 1572a: 681c ldr r4, [r3, #0] 1572c: 34a8 adds r4, #168 ; 0xa8 1572e: 2000 movs r0, #0 15730: 4b95 ldr r3, [pc, #596] ; (15988 ) 15732: 4798 blx r3 15734: 0083 lsls r3, r0, #2 15736: 1818 adds r0, r3, r0 15738: 3050 adds r0, #80 ; 0x50 1573a: 2340 movs r3, #64 ; 0x40 1573c: 33ff adds r3, #255 ; 0xff 1573e: 2201 movs r2, #1 15740: 4298 cmp r0, r3 15742: d901 bls.n 15748 15744: f000 ff4e bl 165e4 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 15748: 2130 movs r1, #48 ; 0x30 1574a: 0020 movs r0, r4 1574c: 4d90 ldr r5, [pc, #576] ; (15990 ) 1574e: 47a8 blx r5 lv_style_set_border_side(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_BORDER_SIDE_BOTTOM); 15750: 4c90 ldr r4, [pc, #576] ; (15994 ) 15752: 6820 ldr r0, [r4, #0] 15754: 30a8 adds r0, #168 ; 0xa8 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 15756: 2201 movs r2, #1 15758: 2131 movs r1, #49 ; 0x31 1575a: 47a8 blx r5 lv_style_set_text_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 1575c: 6820 ldr r0, [r4, #0] 1575e: 30a8 adds r0, #168 ; 0xa8 15760: 4b8e ldr r3, [pc, #568] ; (1599c ) 15762: 699b ldr r3, [r3, #24] 15764: 079b lsls r3, r3, #30 15766: d501 bpl.n 1576c 15768: f000 ff49 bl 165fe 1576c: 231c movs r3, #28 1576e: 213a movs r1, #58 ; 0x3a 15770: 221d movs r2, #29 15772: 0149 lsls r1, r1, #5 15774: 02db lsls r3, r3, #11 15776: 430a orrs r2, r1 15778: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 1577a: 498a ldr r1, [pc, #552] ; (159a4 ) 1577c: 4d88 ldr r5, [pc, #544] ; (159a0 ) 1577e: 47a8 blx r5 lv_style_set_text_font(&styles->tabview_btns_bg, LV_STATE_DEFAULT, theme.font_normal); 15780: 4b86 ldr r3, [pc, #536] ; (1599c ) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 15782: 68da ldr r2, [r3, #12] 15784: 4c83 ldr r4, [pc, #524] ; (15994 ) 15786: 6820 ldr r0, [r4, #0] 15788: 30a8 adds r0, #168 ; 0xa8 1578a: 498a ldr r1, [pc, #552] ; (159b4 ) 1578c: 4b8a ldr r3, [pc, #552] ; (159b8 ) 1578e: 4798 blx r3 lv_style_set_image_recolor(&styles->tabview_btns_bg, LV_STATE_DEFAULT, lv_color_hex(0x979a9f)); 15790: 6820 ldr r0, [r4, #0] 15792: 30a8 adds r0, #168 ; 0xa8 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 15794: 4b89 ldr r3, [pc, #548] ; (159bc ) 15796: 881a ldrh r2, [r3, #0] 15798: 4989 ldr r1, [pc, #548] ; (159c0 ) 1579a: 47a8 blx r5 lv_style_set_pad_top(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 1579c: 6824 ldr r4, [r4, #0] 1579e: 34a8 adds r4, #168 ; 0xa8 157a0: 2000 movs r0, #0 157a2: 4b79 ldr r3, [pc, #484] ; (15988 ) 157a4: 4798 blx r3 157a6: 00c3 lsls r3, r0, #3 157a8: 1a18 subs r0, r3, r0 157aa: 3050 adds r0, #80 ; 0x50 157ac: 2340 movs r3, #64 ; 0x40 157ae: 33ff adds r3, #255 ; 0xff 157b0: 2201 movs r2, #1 157b2: 4298 cmp r0, r3 157b4: d901 bls.n 157ba 157b6: f000 ff27 bl 16608 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 157ba: 2110 movs r1, #16 157bc: 0020 movs r0, r4 157be: 4b74 ldr r3, [pc, #464] ; (15990 ) 157c0: 4798 blx r3 lv_style_set_pad_left(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 157c2: 4b74 ldr r3, [pc, #464] ; (15994 ) 157c4: 681c ldr r4, [r3, #0] 157c6: 34a8 adds r4, #168 ; 0xa8 157c8: 2000 movs r0, #0 157ca: 4b6f ldr r3, [pc, #444] ; (15988 ) 157cc: 4798 blx r3 157ce: 00c3 lsls r3, r0, #3 157d0: 1a18 subs r0, r3, r0 157d2: 3050 adds r0, #80 ; 0x50 157d4: 2340 movs r3, #64 ; 0x40 157d6: 33ff adds r3, #255 ; 0xff 157d8: 2201 movs r2, #1 157da: 4298 cmp r0, r3 157dc: d901 bls.n 157e2 157de: f000 ff1f bl 16620 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 157e2: 2112 movs r1, #18 157e4: 0020 movs r0, r4 157e6: 4b6a ldr r3, [pc, #424] ; (15990 ) 157e8: 4798 blx r3 lv_style_set_pad_right(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 157ea: 4b6a ldr r3, [pc, #424] ; (15994 ) 157ec: 681c ldr r4, [r3, #0] 157ee: 34a8 adds r4, #168 ; 0xa8 157f0: 2000 movs r0, #0 157f2: 4b65 ldr r3, [pc, #404] ; (15988 ) 157f4: 4798 blx r3 157f6: 00c3 lsls r3, r0, #3 157f8: 1a18 subs r0, r3, r0 157fa: 3050 adds r0, #80 ; 0x50 157fc: 2340 movs r3, #64 ; 0x40 157fe: 33ff adds r3, #255 ; 0xff 15800: 2201 movs r2, #1 15802: 4298 cmp r0, r3 15804: d901 bls.n 1580a 15806: f000 ff17 bl 16638 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 1580a: 2113 movs r1, #19 1580c: 0020 movs r0, r4 1580e: 4b60 ldr r3, [pc, #384] ; (15990 ) 15810: 4798 blx r3 style_init_reset(&styles->tabview_btns); 15812: 4c60 ldr r4, [pc, #384] ; (15994 ) 15814: 6820 ldr r0, [r4, #0] 15816: 30a4 adds r0, #164 ; 0xa4 15818: 4b5a ldr r3, [pc, #360] ; (15984 ) 1581a: 4798 blx r3 lv_style_set_bg_opa(&styles->tabview_btns, LV_STATE_PRESSED, LV_OPA_50); 1581c: 6820 ldr r0, [r4, #0] 1581e: 30a4 adds r0, #164 ; 0xa4 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 15820: 227f movs r2, #127 ; 0x7f 15822: 4968 ldr r1, [pc, #416] ; (159c4 ) 15824: 4b5c ldr r3, [pc, #368] ; (15998 ) 15826: 4798 blx r3 lv_style_set_bg_color(&styles->tabview_btns, LV_STATE_PRESSED, lv_color_hex3(0x888)); 15828: 6820 ldr r0, [r4, #0] 1582a: 30a4 adds r0, #164 ; 0xa4 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 1582c: 4b66 ldr r3, [pc, #408] ; (159c8 ) 1582e: 881a ldrh r2, [r3, #0] 15830: 495d ldr r1, [pc, #372] ; (159a8 ) 15832: 4b5b ldr r3, [pc, #364] ; (159a0 ) 15834: 4798 blx r3 lv_style_set_text_color(&styles->tabview_btns, LV_STATE_CHECKED, COLOR_SCR_TEXT); 15836: 6820 ldr r0, [r4, #0] 15838: 30a4 adds r0, #164 ; 0xa4 1583a: 4b58 ldr r3, [pc, #352] ; (1599c ) 1583c: 699b ldr r3, [r3, #24] 1583e: 079b lsls r3, r3, #30 15840: d501 bpl.n 15846 15842: f000 ff05 bl 16650 15846: 231c movs r3, #28 15848: 213a movs r1, #58 ; 0x3a 1584a: 221d movs r2, #29 1584c: 0149 lsls r1, r1, #5 1584e: 02db lsls r3, r3, #11 15850: 430a orrs r2, r1 15852: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 15854: 495d ldr r1, [pc, #372] ; (159cc ) 15856: 4b52 ldr r3, [pc, #328] ; (159a0 ) 15858: 4798 blx r3 lv_style_set_pad_top(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 1585a: 4b4e ldr r3, [pc, #312] ; (15994 ) 1585c: 681c ldr r4, [r3, #0] 1585e: 34a4 adds r4, #164 ; 0xa4 15860: 2000 movs r0, #0 15862: 4b49 ldr r3, [pc, #292] ; (15988 ) 15864: 4798 blx r3 15866: 0083 lsls r3, r0, #2 15868: 181b adds r3, r3, r0 1586a: 009b lsls r3, r3, #2 1586c: 3350 adds r3, #80 ; 0x50 1586e: 2140 movs r1, #64 ; 0x40 15870: 31ff adds r1, #255 ; 0xff 15872: 2201 movs r2, #1 15874: 428b cmp r3, r1 15876: d901 bls.n 1587c 15878: f000 feef bl 1665a _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1587c: 2110 movs r1, #16 1587e: 0020 movs r0, r4 15880: 4b43 ldr r3, [pc, #268] ; (15990 ) 15882: 4798 blx r3 lv_style_set_pad_bottom(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 15884: 4b43 ldr r3, [pc, #268] ; (15994 ) 15886: 681c ldr r4, [r3, #0] 15888: 34a4 adds r4, #164 ; 0xa4 1588a: 2000 movs r0, #0 1588c: 4b3e ldr r3, [pc, #248] ; (15988 ) 1588e: 4798 blx r3 15890: 0083 lsls r3, r0, #2 15892: 181b adds r3, r3, r0 15894: 009b lsls r3, r3, #2 15896: 3350 adds r3, #80 ; 0x50 15898: 2140 movs r1, #64 ; 0x40 1589a: 31ff adds r1, #255 ; 0xff 1589c: 2201 movs r2, #1 1589e: 428b cmp r3, r1 158a0: d901 bls.n 158a6 158a2: f000 fee8 bl 16676 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 158a6: 2111 movs r1, #17 158a8: 0020 movs r0, r4 158aa: 4b39 ldr r3, [pc, #228] ; (15990 ) 158ac: 4798 blx r3 lv_style_set_text_color(&styles->tabview_btns, LV_STATE_FOCUSED, theme.color_primary); 158ae: 4c39 ldr r4, [pc, #228] ; (15994 ) 158b0: 6820 ldr r0, [r4, #0] 158b2: 30a4 adds r0, #164 ; 0xa4 158b4: 4e39 ldr r6, [pc, #228] ; (1599c ) 158b6: 88b2 ldrh r2, [r6, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 158b8: 4945 ldr r1, [pc, #276] ; (159d0 ) 158ba: 4d39 ldr r5, [pc, #228] ; (159a0 ) 158bc: 47a8 blx r5 lv_style_set_text_color(&styles->tabview_btns, LV_STATE_EDITED, theme.color_secondary); 158be: 6820 ldr r0, [r4, #0] 158c0: 30a4 adds r0, #164 ; 0xa4 158c2: 88f2 ldrh r2, [r6, #6] 158c4: 4943 ldr r1, [pc, #268] ; (159d4 ) 158c6: 47a8 blx r5 style_init_reset(&styles->tabview_indic); 158c8: 6820 ldr r0, [r4, #0] 158ca: 30ac adds r0, #172 ; 0xac 158cc: 4b2d ldr r3, [pc, #180] ; (15984 ) 158ce: 4798 blx r3 lv_style_set_bg_opa(&styles->tabview_indic, LV_STATE_DEFAULT, LV_OPA_COVER); 158d0: 6820 ldr r0, [r4, #0] 158d2: 30ac adds r0, #172 ; 0xac _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 158d4: 22ff movs r2, #255 ; 0xff 158d6: 212c movs r1, #44 ; 0x2c 158d8: 4b2f ldr r3, [pc, #188] ; (15998 ) 158da: 4798 blx r3 lv_style_set_bg_color(&styles->tabview_indic, LV_STATE_DEFAULT, theme.color_primary); 158dc: 6820 ldr r0, [r4, #0] 158de: 30ac adds r0, #172 ; 0xac 158e0: 88b2 ldrh r2, [r6, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 158e2: 2129 movs r1, #41 ; 0x29 158e4: 47a8 blx r5 lv_style_set_bg_color(&styles->tabview_indic, LV_STATE_EDITED, theme.color_secondary); 158e6: 6820 ldr r0, [r4, #0] 158e8: 30ac adds r0, #172 ; 0xac 158ea: 88f2 ldrh r2, [r6, #6] 158ec: 493a ldr r1, [pc, #232] ; (159d8 ) 158ee: 47a8 blx r5 lv_style_set_size(&styles->tabview_indic, LV_STATE_DEFAULT, LV_DPX(5)); 158f0: 6824 ldr r4, [r4, #0] 158f2: 34ac adds r4, #172 ; 0xac 158f4: 2000 movs r0, #0 158f6: 4b24 ldr r3, [pc, #144] ; (15988 ) 158f8: 4798 blx r3 158fa: 0083 lsls r3, r0, #2 158fc: 1818 adds r0, r3, r0 158fe: 3050 adds r0, #80 ; 0x50 15900: 2340 movs r3, #64 ; 0x40 15902: 33ff adds r3, #255 ; 0xff 15904: 2201 movs r2, #1 15906: 4298 cmp r0, r3 15908: d901 bls.n 1590e 1590a: f000 fec2 bl 16692 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 1590e: 2103 movs r1, #3 15910: 0020 movs r0, r4 15912: 4d1f ldr r5, [pc, #124] ; (15990 ) 15914: 47a8 blx r5 lv_style_set_radius(&styles->tabview_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 15916: 4c1f ldr r4, [pc, #124] ; (15994 ) 15918: 6820 ldr r0, [r4, #0] 1591a: 30ac adds r0, #172 ; 0xac _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 1591c: 4a2f ldr r2, [pc, #188] ; (159dc ) 1591e: 2101 movs r1, #1 15920: 47a8 blx r5 style_init_reset(&styles->tabview_page_scrl); 15922: 6820 ldr r0, [r4, #0] 15924: 30b0 adds r0, #176 ; 0xb0 15926: 4b17 ldr r3, [pc, #92] ; (15984 ) 15928: 4798 blx r3 lv_style_set_pad_top(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 1592a: 6824 ldr r4, [r4, #0] 1592c: 34b0 adds r4, #176 ; 0xb0 1592e: 2000 movs r0, #0 15930: 4b2b ldr r3, [pc, #172] ; (159e0 ) 15932: 4798 blx r3 15934: 2801 cmp r0, #1 15936: d801 bhi.n 1593c 15938: f000 feb8 bl 166ac 1593c: 2000 movs r0, #0 1593e: 4b12 ldr r3, [pc, #72] ; (15988 ) 15940: 4798 blx r3 15942: 0103 lsls r3, r0, #4 15944: 1a1b subs r3, r3, r0 15946: 005b lsls r3, r3, #1 15948: 3350 adds r3, #80 ; 0x50 1594a: 2140 movs r1, #64 ; 0x40 1594c: 31ff adds r1, #255 ; 0xff 1594e: 2201 movs r2, #1 15950: 428b cmp r3, r1 15952: d901 bls.n 15958 15954: f000 fec3 bl 166de _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 15958: 2110 movs r1, #16 1595a: 0020 movs r0, r4 1595c: 4b0c ldr r3, [pc, #48] ; (15990 ) 1595e: 4798 blx r3 lv_style_set_pad_bottom(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 15960: 4b0c ldr r3, [pc, #48] ; (15994 ) 15962: 681c ldr r4, [r3, #0] 15964: 34b0 adds r4, #176 ; 0xb0 15966: 2000 movs r0, #0 15968: 4b1d ldr r3, [pc, #116] ; (159e0 ) 1596a: 4798 blx r3 1596c: 2801 cmp r0, #1 1596e: d801 bhi.n 15974 15970: f000 fec2 bl 166f8 15974: 2000 movs r0, #0 15976: 4b04 ldr r3, [pc, #16] ; (15988 ) 15978: 4798 blx r3 1597a: 0103 lsls r3, r0, #4 1597c: e032 b.n 159e4 1597e: 46c0 nop ; (mov r8, r8) 15980: 00002004 .word 0x00002004 15984: 00012495 .word 0x00012495 15988: 0000f665 .word 0x0000f665 1598c: 00008081 .word 0x00008081 15990: 00004cf5 .word 0x00004cf5 15994: 20004c38 .word 0x20004c38 15998: 00004fb5 .word 0x00004fb5 1599c: 20004c3c .word 0x20004c3c 159a0: 00004e55 .word 0x00004e55 159a4: 00008089 .word 0x00008089 159a8: 00001029 .word 0x00001029 159ac: 00009089 .word 0x00009089 159b0: 0001c92c .word 0x0001c92c 159b4: 0000808e .word 0x0000808e 159b8: 00005109 .word 0x00005109 159bc: 0001c92a .word 0x0001c92a 159c0: 000080a9 .word 0x000080a9 159c4: 0000102c .word 0x0000102c 159c8: 0001c928 .word 0x0001c928 159cc: 00008189 .word 0x00008189 159d0: 00008289 .word 0x00008289 159d4: 00008489 .word 0x00008489 159d8: 00000429 .word 0x00000429 159dc: 00007fff .word 0x00007fff 159e0: 0000f681 .word 0x0000f681 159e4: 1a1b subs r3, r3, r0 159e6: 005b lsls r3, r3, #1 159e8: 3350 adds r3, #80 ; 0x50 159ea: 2140 movs r1, #64 ; 0x40 159ec: 31ff adds r1, #255 ; 0xff 159ee: 2201 movs r2, #1 159f0: 428b cmp r3, r1 159f2: d901 bls.n 159f8 159f4: f000 fe99 bl 1672a _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 159f8: 2111 movs r1, #17 159fa: 0020 movs r0, r4 159fc: 4bf2 ldr r3, [pc, #968] ; (15dc8 ) 159fe: 4798 blx r3 lv_style_set_pad_left(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 15a00: 4bf2 ldr r3, [pc, #968] ; (15dcc ) 15a02: 681c ldr r4, [r3, #0] 15a04: 34b0 adds r4, #176 ; 0xb0 15a06: 2000 movs r0, #0 15a08: 4bf1 ldr r3, [pc, #964] ; (15dd0 ) 15a0a: 4798 blx r3 15a0c: 2801 cmp r0, #1 15a0e: d801 bhi.n 15a14 15a10: f000 fe98 bl 16744 15a14: 2000 movs r0, #0 15a16: 4bef ldr r3, [pc, #956] ; (15dd4 ) 15a18: 4798 blx r3 15a1a: 0103 lsls r3, r0, #4 15a1c: 1a1b subs r3, r3, r0 15a1e: 005b lsls r3, r3, #1 15a20: 3350 adds r3, #80 ; 0x50 15a22: 2140 movs r1, #64 ; 0x40 15a24: 31ff adds r1, #255 ; 0xff 15a26: 2201 movs r2, #1 15a28: 428b cmp r3, r1 15a2a: d901 bls.n 15a30 15a2c: f000 fea3 bl 16776 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 15a30: 2112 movs r1, #18 15a32: 0020 movs r0, r4 15a34: 4be4 ldr r3, [pc, #912] ; (15dc8 ) 15a36: 4798 blx r3 lv_style_set_pad_right(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 15a38: 4be4 ldr r3, [pc, #912] ; (15dcc ) 15a3a: 681c ldr r4, [r3, #0] 15a3c: 34b0 adds r4, #176 ; 0xb0 15a3e: 2000 movs r0, #0 15a40: 4be3 ldr r3, [pc, #908] ; (15dd0 ) 15a42: 4798 blx r3 15a44: 2801 cmp r0, #1 15a46: d801 bhi.n 15a4c 15a48: f000 fea2 bl 16790 15a4c: 2000 movs r0, #0 15a4e: 4be1 ldr r3, [pc, #900] ; (15dd4 ) 15a50: 4798 blx r3 15a52: 0103 lsls r3, r0, #4 15a54: 1a1b subs r3, r3, r0 15a56: 005b lsls r3, r3, #1 15a58: 3350 adds r3, #80 ; 0x50 15a5a: 2140 movs r1, #64 ; 0x40 15a5c: 31ff adds r1, #255 ; 0xff 15a5e: 2201 movs r2, #1 15a60: 428b cmp r3, r1 15a62: d901 bls.n 15a68 15a64: f000 fead bl 167c2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 15a68: 2113 movs r1, #19 15a6a: 0020 movs r0, r4 15a6c: 4bd6 ldr r3, [pc, #856] ; (15dc8 ) 15a6e: 4798 blx r3 lv_style_set_pad_inner(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 15a70: 4bd6 ldr r3, [pc, #856] ; (15dcc ) 15a72: 681c ldr r4, [r3, #0] 15a74: 34b0 adds r4, #176 ; 0xb0 15a76: 2000 movs r0, #0 15a78: 4bd5 ldr r3, [pc, #852] ; (15dd0 ) 15a7a: 4798 blx r3 15a7c: 2801 cmp r0, #1 15a7e: d801 bhi.n 15a84 15a80: f000 feac bl 167dc 15a84: 2000 movs r0, #0 15a86: 4bd3 ldr r3, [pc, #844] ; (15dd4 ) 15a88: 4798 blx r3 15a8a: 0103 lsls r3, r0, #4 15a8c: 1a1b subs r3, r3, r0 15a8e: 005b lsls r3, r3, #1 15a90: 3350 adds r3, #80 ; 0x50 15a92: 2140 movs r1, #64 ; 0x40 15a94: 31ff adds r1, #255 ; 0xff 15a96: 2201 movs r2, #1 15a98: 428b cmp r3, r1 15a9a: d901 bls.n 15aa0 15a9c: f000 feb7 bl 1680e _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 15aa0: 2114 movs r1, #20 15aa2: 0020 movs r0, r4 15aa4: 4bc8 ldr r3, [pc, #800] ; (15dc8 ) 15aa6: 4798 blx r3 style_init_reset(&styles->table_cell); 15aa8: 4cc8 ldr r4, [pc, #800] ; (15dcc ) 15aaa: 6820 ldr r0, [r4, #0] 15aac: 30a0 adds r0, #160 ; 0xa0 15aae: 4bca ldr r3, [pc, #808] ; (15dd8 ) 15ab0: 4798 blx r3 lv_style_set_border_color(&styles->table_cell, LV_STATE_DEFAULT, COLOR_BG_BORDER); 15ab2: 6820 ldr r0, [r4, #0] 15ab4: 30a0 adds r0, #160 ; 0xa0 15ab6: 4bc9 ldr r3, [pc, #804] ; (15ddc ) 15ab8: 699b ldr r3, [r3, #24] 15aba: 079b lsls r3, r3, #30 15abc: d501 bpl.n 15ac2 15abe: f000 feb3 bl 16828 15ac2: 2310 movs r3, #16 15ac4: 2122 movs r1, #34 ; 0x22 15ac6: 2212 movs r2, #18 15ac8: 0149 lsls r1, r1, #5 15aca: 02db lsls r3, r3, #11 15acc: 430a orrs r2, r1 15ace: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 15ad0: 2139 movs r1, #57 ; 0x39 15ad2: 4bc3 ldr r3, [pc, #780] ; (15de0 ) 15ad4: 4798 blx r3 lv_style_set_border_width(&styles->table_cell, LV_STATE_DEFAULT, 1); 15ad6: 4cbd ldr r4, [pc, #756] ; (15dcc ) 15ad8: 6820 ldr r0, [r4, #0] 15ada: 30a0 adds r0, #160 ; 0xa0 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 15adc: 2201 movs r2, #1 15ade: 2130 movs r1, #48 ; 0x30 15ae0: 4db9 ldr r5, [pc, #740] ; (15dc8 ) 15ae2: 47a8 blx r5 lv_style_set_border_side(&styles->table_cell, LV_STATE_DEFAULT, LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM); 15ae4: 6820 ldr r0, [r4, #0] 15ae6: 30a0 adds r0, #160 ; 0xa0 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 15ae8: 2203 movs r2, #3 15aea: 2131 movs r1, #49 ; 0x31 15aec: 47a8 blx r5 lv_style_set_pad_left(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 15aee: 6824 ldr r4, [r4, #0] 15af0: 34a0 adds r4, #160 ; 0xa0 15af2: 2000 movs r0, #0 15af4: 4bb6 ldr r3, [pc, #728] ; (15dd0 ) 15af6: 4798 blx r3 15af8: 2801 cmp r0, #1 15afa: d801 bhi.n 15b00 15afc: f000 fe99 bl 16832 15b00: 2000 movs r0, #0 15b02: 4bb4 ldr r3, [pc, #720] ; (15dd4 ) 15b04: 4798 blx r3 15b06: 0103 lsls r3, r0, #4 15b08: 1a1b subs r3, r3, r0 15b0a: 005b lsls r3, r3, #1 15b0c: 3350 adds r3, #80 ; 0x50 15b0e: 2140 movs r1, #64 ; 0x40 15b10: 31ff adds r1, #255 ; 0xff 15b12: 2201 movs r2, #1 15b14: 428b cmp r3, r1 15b16: d901 bls.n 15b1c 15b18: f000 fea4 bl 16864 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 15b1c: 2112 movs r1, #18 15b1e: 0020 movs r0, r4 15b20: 4ba9 ldr r3, [pc, #676] ; (15dc8 ) 15b22: 4798 blx r3 lv_style_set_pad_right(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 15b24: 4ba9 ldr r3, [pc, #676] ; (15dcc ) 15b26: 681c ldr r4, [r3, #0] 15b28: 34a0 adds r4, #160 ; 0xa0 15b2a: 2000 movs r0, #0 15b2c: 4ba8 ldr r3, [pc, #672] ; (15dd0 ) 15b2e: 4798 blx r3 15b30: 2801 cmp r0, #1 15b32: d801 bhi.n 15b38 15b34: f000 fea3 bl 1687e 15b38: 2000 movs r0, #0 15b3a: 4ba6 ldr r3, [pc, #664] ; (15dd4 ) 15b3c: 4798 blx r3 15b3e: 0103 lsls r3, r0, #4 15b40: 1a1b subs r3, r3, r0 15b42: 005b lsls r3, r3, #1 15b44: 3350 adds r3, #80 ; 0x50 15b46: 2140 movs r1, #64 ; 0x40 15b48: 31ff adds r1, #255 ; 0xff 15b4a: 2201 movs r2, #1 15b4c: 428b cmp r3, r1 15b4e: d901 bls.n 15b54 15b50: f000 feae bl 168b0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 15b54: 2113 movs r1, #19 15b56: 0020 movs r0, r4 15b58: 4b9b ldr r3, [pc, #620] ; (15dc8 ) 15b5a: 4798 blx r3 lv_style_set_pad_top(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 15b5c: 4b9b ldr r3, [pc, #620] ; (15dcc ) 15b5e: 681c ldr r4, [r3, #0] 15b60: 34a0 adds r4, #160 ; 0xa0 15b62: 2000 movs r0, #0 15b64: 4b9a ldr r3, [pc, #616] ; (15dd0 ) 15b66: 4798 blx r3 15b68: 2801 cmp r0, #1 15b6a: d801 bhi.n 15b70 15b6c: f000 fead bl 168ca 15b70: 2000 movs r0, #0 15b72: 4b98 ldr r3, [pc, #608] ; (15dd4 ) 15b74: 4798 blx r3 15b76: 0103 lsls r3, r0, #4 15b78: 1a1b subs r3, r3, r0 15b7a: 005b lsls r3, r3, #1 15b7c: 3350 adds r3, #80 ; 0x50 15b7e: 2140 movs r1, #64 ; 0x40 15b80: 31ff adds r1, #255 ; 0xff 15b82: 2201 movs r2, #1 15b84: 428b cmp r3, r1 15b86: d901 bls.n 15b8c 15b88: f000 feb8 bl 168fc _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 15b8c: 2110 movs r1, #16 15b8e: 0020 movs r0, r4 15b90: 4b8d ldr r3, [pc, #564] ; (15dc8 ) 15b92: 4798 blx r3 lv_style_set_pad_bottom(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 15b94: 4b8d ldr r3, [pc, #564] ; (15dcc ) 15b96: 681c ldr r4, [r3, #0] 15b98: 34a0 adds r4, #160 ; 0xa0 15b9a: 2000 movs r0, #0 15b9c: 4b8c ldr r3, [pc, #560] ; (15dd0 ) 15b9e: 4798 blx r3 15ba0: 2801 cmp r0, #1 15ba2: d801 bhi.n 15ba8 15ba4: f000 feb7 bl 16916 15ba8: 2000 movs r0, #0 15baa: 4b8a ldr r3, [pc, #552] ; (15dd4 ) 15bac: 4798 blx r3 15bae: 0103 lsls r3, r0, #4 15bb0: 1a1b subs r3, r3, r0 15bb2: 005b lsls r3, r3, #1 15bb4: 3350 adds r3, #80 ; 0x50 15bb6: 2140 movs r1, #64 ; 0x40 15bb8: 31ff adds r1, #255 ; 0xff 15bba: 2201 movs r2, #1 15bbc: 428b cmp r3, r1 15bbe: d901 bls.n 15bc4 15bc0: f000 fec2 bl 16948 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 15bc4: 2111 movs r1, #17 15bc6: 0020 movs r0, r4 15bc8: 4b7f ldr r3, [pc, #508] ; (15dc8 ) 15bca: 4798 blx r3 theme.apply_xcb = theme_apply; 15bcc: 4c83 ldr r4, [pc, #524] ; (15ddc ) 15bce: 4b85 ldr r3, [pc, #532] ; (15de4 ) 15bd0: 6023 str r3, [r4, #0] inited = true; 15bd2: 2201 movs r2, #1 15bd4: 4b84 ldr r3, [pc, #528] ; (15de8 ) 15bd6: 701a strb r2, [r3, #0] lv_obj_report_style_mod(NULL); 15bd8: 2000 movs r0, #0 15bda: 4b84 ldr r3, [pc, #528] ; (15dec ) 15bdc: 4798 blx r3 } 15bde: 0020 movs r0, r4 15be0: bc04 pop {r2} 15be2: 4690 mov r8, r2 15be4: bdf0 pop {r4, r5, r6, r7, pc} LV_GC_ROOT(_lv_theme_material_styles) = lv_mem_alloc(sizeof(theme_styles_t)); 15be6: 20bc movs r0, #188 ; 0xbc 15be8: 4b81 ldr r3, [pc, #516] ; (15df0 ) 15bea: 4798 blx r3 15bec: 4b81 ldr r3, [pc, #516] ; (15df4 ) 15bee: 6018 str r0, [r3, #0] styles = (theme_styles_t *)LV_GC_ROOT(_lv_theme_material_styles); 15bf0: 4b76 ldr r3, [pc, #472] ; (15dcc ) 15bf2: 6018 str r0, [r3, #0] 15bf4: f7fe fc59 bl 144aa lv_style_set_text_color(&styles->chart_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 15bf8: 2315 movs r3, #21 15bfa: 212a movs r1, #42 ; 0x2a 15bfc: 2215 movs r2, #21 15bfe: f7fe fc7f bl 14500 lv_style_set_line_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(1)); 15c02: 2000 movs r0, #0 15c04: 4b73 ldr r3, [pc, #460] ; (15dd4 ) 15c06: 4798 blx r3 15c08: 3050 adds r0, #80 ; 0x50 15c0a: 21a0 movs r1, #160 ; 0xa0 15c0c: 4b7a ldr r3, [pc, #488] ; (15df8 ) 15c0e: 4798 blx r3 15c10: b202 sxth r2, r0 15c12: f7fe fc8e bl 14532 lv_style_set_line_dash_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 15c16: 2000 movs r0, #0 15c18: 4b6e ldr r3, [pc, #440] ; (15dd4 ) 15c1a: 4798 blx r3 15c1c: 0003 movs r3, r0 15c1e: 0080 lsls r0, r0, #2 15c20: 18c0 adds r0, r0, r3 15c22: 0040 lsls r0, r0, #1 15c24: 3050 adds r0, #80 ; 0x50 15c26: 21a0 movs r1, #160 ; 0xa0 15c28: 4b73 ldr r3, [pc, #460] ; (15df8 ) 15c2a: 4798 blx r3 15c2c: b202 sxth r2, r0 15c2e: f7fe fc95 bl 1455c lv_style_set_line_dash_gap(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 15c32: 2000 movs r0, #0 15c34: 4b67 ldr r3, [pc, #412] ; (15dd4 ) 15c36: 4798 blx r3 15c38: 0003 movs r3, r0 15c3a: 0080 lsls r0, r0, #2 15c3c: 18c0 adds r0, r0, r3 15c3e: 0040 lsls r0, r0, #1 15c40: 3050 adds r0, #80 ; 0x50 15c42: 21a0 movs r1, #160 ; 0xa0 15c44: 4b6c ldr r3, [pc, #432] ; (15df8 ) 15c46: 4798 blx r3 15c48: b202 sxth r2, r0 15c4a: f7fe fc9c bl 14586 lv_style_set_line_color(&styles->chart_series_bg, LV_STATE_DEFAULT, COLOR_BG_BORDER); 15c4e: 231a movs r3, #26 15c50: 2137 movs r1, #55 ; 0x37 15c52: 221c movs r2, #28 15c54: f7fe fca7 bl 145a6 lv_style_set_line_width(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(3)); 15c58: 2000 movs r0, #0 15c5a: 4b5e ldr r3, [pc, #376] ; (15dd4 ) 15c5c: 4798 blx r3 15c5e: 0003 movs r3, r0 15c60: 0040 lsls r0, r0, #1 15c62: 18c0 adds r0, r0, r3 15c64: 3050 adds r0, #80 ; 0x50 15c66: 21a0 movs r1, #160 ; 0xa0 15c68: 4b63 ldr r3, [pc, #396] ; (15df8 ) 15c6a: 4798 blx r3 15c6c: b202 sxth r2, r0 15c6e: f7fe fcb5 bl 145dc lv_style_set_size(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(4)); 15c72: 2000 movs r0, #0 15c74: 4b57 ldr r3, [pc, #348] ; (15dd4 ) 15c76: 4798 blx r3 15c78: 3014 adds r0, #20 15c7a: 0080 lsls r0, r0, #2 15c7c: 21a0 movs r1, #160 ; 0xa0 15c7e: 4b5e ldr r3, [pc, #376] ; (15df8 ) 15c80: 4798 blx r3 15c82: b202 sxth r2, r0 15c84: f7fe fcbd bl 14602 lv_style_set_pad_inner(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(2)); /*Space between columns*/ 15c88: 2000 movs r0, #0 15c8a: 4b52 ldr r3, [pc, #328] ; (15dd4 ) 15c8c: 4798 blx r3 15c8e: 3028 adds r0, #40 ; 0x28 15c90: 0040 lsls r0, r0, #1 15c92: 21a0 movs r1, #160 ; 0xa0 15c94: 4b58 ldr r3, [pc, #352] ; (15df8 ) 15c96: 4798 blx r3 15c98: b202 sxth r2, r0 15c9a: f7fe fcc5 bl 14628 lv_style_set_radius(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(1)); 15c9e: 2000 movs r0, #0 15ca0: 4b4c ldr r3, [pc, #304] ; (15dd4 ) 15ca2: 4798 blx r3 15ca4: 3050 adds r0, #80 ; 0x50 15ca6: 21a0 movs r1, #160 ; 0xa0 15ca8: 4b53 ldr r3, [pc, #332] ; (15df8 ) 15caa: 4798 blx r3 15cac: b202 sxth r2, r0 15cae: f7fe fccd bl 1464c lv_style_set_pad_top(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 15cb2: 2000 movs r0, #0 15cb4: 4b47 ldr r3, [pc, #284] ; (15dd4 ) 15cb6: 4798 blx r3 15cb8: 0103 lsls r3, r0, #4 15cba: 1a18 subs r0, r3, r0 15cbc: 3050 adds r0, #80 ; 0x50 15cbe: 2340 movs r3, #64 ; 0x40 15cc0: 33ff adds r3, #255 ; 0xff 15cc2: 2201 movs r2, #1 15cc4: 4298 cmp r0, r3 15cc6: d801 bhi.n 15ccc 15cc8: f7fe fce0 bl 1468c 15ccc: 2000 movs r0, #0 15cce: 4b41 ldr r3, [pc, #260] ; (15dd4 ) 15cd0: 4798 blx r3 15cd2: 0103 lsls r3, r0, #4 15cd4: 1a18 subs r0, r3, r0 15cd6: 3050 adds r0, #80 ; 0x50 15cd8: 21a0 movs r1, #160 ; 0xa0 15cda: 4b47 ldr r3, [pc, #284] ; (15df8 ) 15cdc: 4798 blx r3 15cde: b202 sxth r2, r0 15ce0: f7fe fcd4 bl 1468c 15ce4: 2000 movs r0, #0 15ce6: 4b3b ldr r3, [pc, #236] ; (15dd4 ) 15ce8: 4798 blx r3 15cea: 0103 lsls r3, r0, #4 15cec: 1a18 subs r0, r3, r0 15cee: 0040 lsls r0, r0, #1 15cf0: 3050 adds r0, #80 ; 0x50 15cf2: 21a0 movs r1, #160 ; 0xa0 15cf4: 4b40 ldr r3, [pc, #256] ; (15df8 ) 15cf6: 4798 blx r3 15cf8: b202 sxth r2, r0 15cfa: f7fe fcc7 bl 1468c lv_style_set_pad_left(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 15cfe: 2000 movs r0, #0 15d00: 4b34 ldr r3, [pc, #208] ; (15dd4 ) 15d02: 4798 blx r3 15d04: 0103 lsls r3, r0, #4 15d06: 1a18 subs r0, r3, r0 15d08: 3050 adds r0, #80 ; 0x50 15d0a: 2340 movs r3, #64 ; 0x40 15d0c: 33ff adds r3, #255 ; 0xff 15d0e: 2201 movs r2, #1 15d10: 4298 cmp r0, r3 15d12: d801 bhi.n 15d18 15d14: f7fe fcd6 bl 146c4 15d18: 2000 movs r0, #0 15d1a: 4b2e ldr r3, [pc, #184] ; (15dd4 ) 15d1c: 4798 blx r3 15d1e: 0103 lsls r3, r0, #4 15d20: 1a18 subs r0, r3, r0 15d22: 3050 adds r0, #80 ; 0x50 15d24: 21a0 movs r1, #160 ; 0xa0 15d26: 4b34 ldr r3, [pc, #208] ; (15df8 ) 15d28: 4798 blx r3 15d2a: b202 sxth r2, r0 15d2c: f7fe fcca bl 146c4 15d30: 2000 movs r0, #0 15d32: 4b28 ldr r3, [pc, #160] ; (15dd4 ) 15d34: 4798 blx r3 15d36: 0103 lsls r3, r0, #4 15d38: 1a18 subs r0, r3, r0 15d3a: 0040 lsls r0, r0, #1 15d3c: 3050 adds r0, #80 ; 0x50 15d3e: 21a0 movs r1, #160 ; 0xa0 15d40: 4b2d ldr r3, [pc, #180] ; (15df8 ) 15d42: 4798 blx r3 15d44: b202 sxth r2, r0 15d46: f7fe fcbd bl 146c4 lv_style_set_pad_right(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 15d4a: 2000 movs r0, #0 15d4c: 4b21 ldr r3, [pc, #132] ; (15dd4 ) 15d4e: 4798 blx r3 15d50: 0103 lsls r3, r0, #4 15d52: 1a18 subs r0, r3, r0 15d54: 3050 adds r0, #80 ; 0x50 15d56: 2340 movs r3, #64 ; 0x40 15d58: 33ff adds r3, #255 ; 0xff 15d5a: 2201 movs r2, #1 15d5c: 4298 cmp r0, r3 15d5e: d801 bhi.n 15d64 15d60: f7fe fccc bl 146fc 15d64: 2000 movs r0, #0 15d66: 4b1b ldr r3, [pc, #108] ; (15dd4 ) 15d68: 4798 blx r3 15d6a: 0103 lsls r3, r0, #4 15d6c: 1a18 subs r0, r3, r0 15d6e: 3050 adds r0, #80 ; 0x50 15d70: 21a0 movs r1, #160 ; 0xa0 15d72: 4b21 ldr r3, [pc, #132] ; (15df8 ) 15d74: 4798 blx r3 15d76: b202 sxth r2, r0 15d78: f7fe fcc0 bl 146fc 15d7c: 2000 movs r0, #0 15d7e: 4b15 ldr r3, [pc, #84] ; (15dd4 ) 15d80: 4798 blx r3 15d82: 0103 lsls r3, r0, #4 15d84: 1a18 subs r0, r3, r0 15d86: 0040 lsls r0, r0, #1 15d88: 3050 adds r0, #80 ; 0x50 15d8a: 21a0 movs r1, #160 ; 0xa0 15d8c: 4b1a ldr r3, [pc, #104] ; (15df8 ) 15d8e: 4798 blx r3 15d90: b202 sxth r2, r0 15d92: f7fe fcb3 bl 146fc lv_style_set_pad_bottom(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 15d96: 2000 movs r0, #0 15d98: 4b0e ldr r3, [pc, #56] ; (15dd4 ) 15d9a: 4798 blx r3 15d9c: 0103 lsls r3, r0, #4 15d9e: 1a18 subs r0, r3, r0 15da0: 3050 adds r0, #80 ; 0x50 15da2: 2340 movs r3, #64 ; 0x40 15da4: 33ff adds r3, #255 ; 0xff 15da6: 2201 movs r2, #1 15da8: 4298 cmp r0, r3 15daa: d801 bhi.n 15db0 15dac: f7fe fcc2 bl 14734 15db0: 2000 movs r0, #0 15db2: 4b08 ldr r3, [pc, #32] ; (15dd4 ) 15db4: 4798 blx r3 15db6: 0103 lsls r3, r0, #4 15db8: 1a18 subs r0, r3, r0 15dba: 3050 adds r0, #80 ; 0x50 15dbc: 21a0 movs r1, #160 ; 0xa0 15dbe: 4b0e ldr r3, [pc, #56] ; (15df8 ) 15dc0: 4798 blx r3 15dc2: b202 sxth r2, r0 15dc4: f7fe fcb6 bl 14734 15dc8: 00004cf5 .word 0x00004cf5 15dcc: 20004c38 .word 0x20004c38 15dd0: 0000f681 .word 0x0000f681 15dd4: 0000f665 .word 0x0000f665 15dd8: 00012495 .word 0x00012495 15ddc: 20004c3c .word 0x20004c3c 15de0: 00004e55 .word 0x00004e55 15de4: 00011c79 .word 0x00011c79 15de8: 20004c34 .word 0x20004c34 15dec: 00002735 .word 0x00002735 15df0: 00010a71 .word 0x00010a71 15df4: 20004d74 .word 0x20004d74 15df8: 00017881 .word 0x00017881 15dfc: 2000 movs r0, #0 15dfe: 4bfc ldr r3, [pc, #1008] ; (161f0 ) 15e00: 4798 blx r3 15e02: 0103 lsls r3, r0, #4 15e04: 1a18 subs r0, r3, r0 15e06: 0040 lsls r0, r0, #1 15e08: 3050 adds r0, #80 ; 0x50 15e0a: 21a0 movs r1, #160 ; 0xa0 15e0c: 4bf9 ldr r3, [pc, #996] ; (161f4 ) 15e0e: 4798 blx r3 15e10: b202 sxth r2, r0 15e12: f7fe fc8f bl 14734 lv_style_set_text_color(&styles->calendar_header, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x888888) : LV_COLOR_WHITE); 15e16: 2222 movs r2, #34 ; 0x22 15e18: 2311 movs r3, #17 15e1a: f7fe fc9a bl 14752 lv_style_set_text_color(&styles->calendar_daynames, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex3(0xeee)); 15e1e: 2306 movs r3, #6 15e20: 2110 movs r1, #16 15e22: 2209 movs r2, #9 15e24: f7fe fcac bl 14780 lv_style_set_pad_left(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 15e28: 2000 movs r0, #0 15e2a: 4bf1 ldr r3, [pc, #964] ; (161f0 ) 15e2c: 4798 blx r3 15e2e: 0103 lsls r3, r0, #4 15e30: 1a18 subs r0, r3, r0 15e32: 3050 adds r0, #80 ; 0x50 15e34: 2340 movs r3, #64 ; 0x40 15e36: 33ff adds r3, #255 ; 0xff 15e38: 2201 movs r2, #1 15e3a: 4298 cmp r0, r3 15e3c: d801 bhi.n 15e42 15e3e: f7fe fcbe bl 147be 15e42: 2000 movs r0, #0 15e44: 4bea ldr r3, [pc, #936] ; (161f0 ) 15e46: 4798 blx r3 15e48: 0103 lsls r3, r0, #4 15e4a: 1a18 subs r0, r3, r0 15e4c: 3050 adds r0, #80 ; 0x50 15e4e: 21a0 movs r1, #160 ; 0xa0 15e50: 4be8 ldr r3, [pc, #928] ; (161f4 ) 15e52: 4798 blx r3 15e54: b202 sxth r2, r0 15e56: f7fe fcb2 bl 147be 15e5a: 2000 movs r0, #0 15e5c: 4be4 ldr r3, [pc, #912] ; (161f0 ) 15e5e: 4798 blx r3 15e60: 0103 lsls r3, r0, #4 15e62: 1a18 subs r0, r3, r0 15e64: 0040 lsls r0, r0, #1 15e66: 3050 adds r0, #80 ; 0x50 15e68: 21a0 movs r1, #160 ; 0xa0 15e6a: 4be2 ldr r3, [pc, #904] ; (161f4 ) 15e6c: 4798 blx r3 15e6e: b202 sxth r2, r0 15e70: f7fe fca5 bl 147be lv_style_set_pad_right(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 15e74: 2000 movs r0, #0 15e76: 4bde ldr r3, [pc, #888] ; (161f0 ) 15e78: 4798 blx r3 15e7a: 0103 lsls r3, r0, #4 15e7c: 1a18 subs r0, r3, r0 15e7e: 3050 adds r0, #80 ; 0x50 15e80: 2340 movs r3, #64 ; 0x40 15e82: 33ff adds r3, #255 ; 0xff 15e84: 2201 movs r2, #1 15e86: 4298 cmp r0, r3 15e88: d801 bhi.n 15e8e 15e8a: f7fe fcb4 bl 147f6 15e8e: 2000 movs r0, #0 15e90: 4bd7 ldr r3, [pc, #860] ; (161f0 ) 15e92: 4798 blx r3 15e94: 0103 lsls r3, r0, #4 15e96: 1a18 subs r0, r3, r0 15e98: 3050 adds r0, #80 ; 0x50 15e9a: 21a0 movs r1, #160 ; 0xa0 15e9c: 4bd5 ldr r3, [pc, #852] ; (161f4 ) 15e9e: 4798 blx r3 15ea0: b202 sxth r2, r0 15ea2: f7fe fca8 bl 147f6 15ea6: 2000 movs r0, #0 15ea8: 4bd1 ldr r3, [pc, #836] ; (161f0 ) 15eaa: 4798 blx r3 15eac: 0103 lsls r3, r0, #4 15eae: 1a18 subs r0, r3, r0 15eb0: 0040 lsls r0, r0, #1 15eb2: 3050 adds r0, #80 ; 0x50 15eb4: 21a0 movs r1, #160 ; 0xa0 15eb6: 4bcf ldr r3, [pc, #828] ; (161f4 ) 15eb8: 4798 blx r3 15eba: b202 sxth r2, r0 15ebc: f7fe fc9b bl 147f6 lv_style_set_pad_bottom(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 15ec0: 2000 movs r0, #0 15ec2: 4bcb ldr r3, [pc, #812] ; (161f0 ) 15ec4: 4798 blx r3 15ec6: 0103 lsls r3, r0, #4 15ec8: 1a18 subs r0, r3, r0 15eca: 3050 adds r0, #80 ; 0x50 15ecc: 2340 movs r3, #64 ; 0x40 15ece: 33ff adds r3, #255 ; 0xff 15ed0: 2201 movs r2, #1 15ed2: 4298 cmp r0, r3 15ed4: d801 bhi.n 15eda 15ed6: f7fe fcaa bl 1482e 15eda: 2000 movs r0, #0 15edc: 4bc4 ldr r3, [pc, #784] ; (161f0 ) 15ede: 4798 blx r3 15ee0: 0103 lsls r3, r0, #4 15ee2: 1a18 subs r0, r3, r0 15ee4: 3050 adds r0, #80 ; 0x50 15ee6: 21a0 movs r1, #160 ; 0xa0 15ee8: 4bc2 ldr r3, [pc, #776] ; (161f4 ) 15eea: 4798 blx r3 15eec: b202 sxth r2, r0 15eee: f7fe fc9e bl 1482e 15ef2: 2000 movs r0, #0 15ef4: 4bbe ldr r3, [pc, #760] ; (161f0 ) 15ef6: 4798 blx r3 15ef8: 0103 lsls r3, r0, #4 15efa: 1a18 subs r0, r3, r0 15efc: 0040 lsls r0, r0, #1 15efe: 3050 adds r0, #80 ; 0x50 15f00: 21a0 movs r1, #160 ; 0xa0 15f02: 4bbc ldr r3, [pc, #752] ; (161f4 ) 15f04: 4798 blx r3 15f06: b202 sxth r2, r0 15f08: f7fe fc91 bl 1482e lv_style_set_radius(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(4)); 15f0c: 2000 movs r0, #0 15f0e: 4bb8 ldr r3, [pc, #736] ; (161f0 ) 15f10: 4798 blx r3 15f12: 3014 adds r0, #20 15f14: 0080 lsls r0, r0, #2 15f16: 21a0 movs r1, #160 ; 0xa0 15f18: 4bb6 ldr r3, [pc, #728] ; (161f4 ) 15f1a: 4798 blx r3 15f1c: b202 sxth r2, r0 15f1e: f7fe fc9d bl 1485c lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 15f22: 2306 movs r3, #6 15f24: 2110 movs r1, #16 15f26: 2209 movs r2, #9 15f28: f7fe fca8 bl 1487c lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x666666) : LV_COLOR_WHITE); 15f2c: 2219 movs r2, #25 15f2e: 230c movs r3, #12 15f30: f7fe fd01 bl 14936 lv_style_set_pad_inner(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(3)); 15f34: 2000 movs r0, #0 15f36: 4bae ldr r3, [pc, #696] ; (161f0 ) 15f38: 4798 blx r3 15f3a: 0003 movs r3, r0 15f3c: 0040 lsls r0, r0, #1 15f3e: 18c0 adds r0, r0, r3 15f40: 3050 adds r0, #80 ; 0x50 15f42: 21a0 movs r1, #160 ; 0xa0 15f44: 4bab ldr r3, [pc, #684] ; (161f4 ) 15f46: 4798 blx r3 15f48: b202 sxth r2, r0 15f4a: f7fe fd25 bl 14998 lv_style_set_pad_left(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 15f4e: 2000 movs r0, #0 15f50: 4ba7 ldr r3, [pc, #668] ; (161f0 ) 15f52: 4798 blx r3 15f54: 0103 lsls r3, r0, #4 15f56: 1a18 subs r0, r3, r0 15f58: 3050 adds r0, #80 ; 0x50 15f5a: 2340 movs r3, #64 ; 0x40 15f5c: 33ff adds r3, #255 ; 0xff 15f5e: 2201 movs r2, #1 15f60: 4298 cmp r0, r3 15f62: d801 bhi.n 15f68 15f64: f7fe fd34 bl 149d0 15f68: 2000 movs r0, #0 15f6a: 4ba1 ldr r3, [pc, #644] ; (161f0 ) 15f6c: 4798 blx r3 15f6e: 0103 lsls r3, r0, #4 15f70: 1a18 subs r0, r3, r0 15f72: 3050 adds r0, #80 ; 0x50 15f74: 21a0 movs r1, #160 ; 0xa0 15f76: 4b9f ldr r3, [pc, #636] ; (161f4 ) 15f78: 4798 blx r3 15f7a: b202 sxth r2, r0 15f7c: f7fe fd28 bl 149d0 15f80: 2000 movs r0, #0 15f82: 4b9b ldr r3, [pc, #620] ; (161f0 ) 15f84: 4798 blx r3 15f86: 0103 lsls r3, r0, #4 15f88: 1a18 subs r0, r3, r0 15f8a: 0040 lsls r0, r0, #1 15f8c: 3050 adds r0, #80 ; 0x50 15f8e: 21a0 movs r1, #160 ; 0xa0 15f90: 4b98 ldr r3, [pc, #608] ; (161f4 ) 15f92: 4798 blx r3 15f94: b202 sxth r2, r0 15f96: f7fe fd1b bl 149d0 lv_style_set_pad_right(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 15f9a: 2000 movs r0, #0 15f9c: 4b94 ldr r3, [pc, #592] ; (161f0 ) 15f9e: 4798 blx r3 15fa0: 0103 lsls r3, r0, #4 15fa2: 1a18 subs r0, r3, r0 15fa4: 3050 adds r0, #80 ; 0x50 15fa6: 2340 movs r3, #64 ; 0x40 15fa8: 33ff adds r3, #255 ; 0xff 15faa: 2201 movs r2, #1 15fac: 4298 cmp r0, r3 15fae: d801 bhi.n 15fb4 15fb0: f7fe fd2a bl 14a08 15fb4: 2000 movs r0, #0 15fb6: 4b8e ldr r3, [pc, #568] ; (161f0 ) 15fb8: 4798 blx r3 15fba: 0103 lsls r3, r0, #4 15fbc: 1a18 subs r0, r3, r0 15fbe: 3050 adds r0, #80 ; 0x50 15fc0: 21a0 movs r1, #160 ; 0xa0 15fc2: 4b8c ldr r3, [pc, #560] ; (161f4 ) 15fc4: 4798 blx r3 15fc6: b202 sxth r2, r0 15fc8: f7fe fd1e bl 14a08 15fcc: 2000 movs r0, #0 15fce: 4b88 ldr r3, [pc, #544] ; (161f0 ) 15fd0: 4798 blx r3 15fd2: 0103 lsls r3, r0, #4 15fd4: 1a18 subs r0, r3, r0 15fd6: 0040 lsls r0, r0, #1 15fd8: 3050 adds r0, #80 ; 0x50 15fda: 21a0 movs r1, #160 ; 0xa0 15fdc: 4b85 ldr r3, [pc, #532] ; (161f4 ) 15fde: 4798 blx r3 15fe0: b202 sxth r2, r0 15fe2: f7fe fd11 bl 14a08 lv_style_set_pad_bottom(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 15fe6: 2000 movs r0, #0 15fe8: 4b81 ldr r3, [pc, #516] ; (161f0 ) 15fea: 4798 blx r3 15fec: 0103 lsls r3, r0, #4 15fee: 1a18 subs r0, r3, r0 15ff0: 3050 adds r0, #80 ; 0x50 15ff2: 2340 movs r3, #64 ; 0x40 15ff4: 33ff adds r3, #255 ; 0xff 15ff6: 2201 movs r2, #1 15ff8: 4298 cmp r0, r3 15ffa: d801 bhi.n 16000 15ffc: f7fe fd20 bl 14a40 16000: 2000 movs r0, #0 16002: 4b7b ldr r3, [pc, #492] ; (161f0 ) 16004: 4798 blx r3 16006: 0103 lsls r3, r0, #4 16008: 1a18 subs r0, r3, r0 1600a: 3050 adds r0, #80 ; 0x50 1600c: 21a0 movs r1, #160 ; 0xa0 1600e: 4b79 ldr r3, [pc, #484] ; (161f4 ) 16010: 4798 blx r3 16012: b202 sxth r2, r0 16014: f7fe fd14 bl 14a40 16018: 2000 movs r0, #0 1601a: 4b75 ldr r3, [pc, #468] ; (161f0 ) 1601c: 4798 blx r3 1601e: 0103 lsls r3, r0, #4 16020: 1a18 subs r0, r3, r0 16022: 0040 lsls r0, r0, #1 16024: 3050 adds r0, #80 ; 0x50 16026: 21a0 movs r1, #160 ; 0xa0 16028: 4b72 ldr r3, [pc, #456] ; (161f4 ) 1602a: 4798 blx r3 1602c: b202 sxth r2, r0 1602e: f7fe fd07 bl 14a40 lv_style_set_scale_width(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(30)); 16032: 2000 movs r0, #0 16034: 4b6e ldr r3, [pc, #440] ; (161f0 ) 16036: 4798 blx r3 16038: 0103 lsls r3, r0, #4 1603a: 1a18 subs r0, r3, r0 1603c: 0040 lsls r0, r0, #1 1603e: 3050 adds r0, #80 ; 0x50 16040: 21a0 movs r1, #160 ; 0xa0 16042: 4b6c ldr r3, [pc, #432] ; (161f4 ) 16044: 4798 blx r3 16046: b202 sxth r2, r0 16048: f7fe fd13 bl 14a72 lv_style_set_bg_color(&styles->cpicker_bg, LV_STATE_DEFAULT, COLOR_SCR); 1604c: 231d movs r3, #29 1604e: 213b movs r1, #59 ; 0x3b 16050: 221e movs r2, #30 16052: f7fe fd24 bl 14a9e lv_style_set_pad_inner(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(20)); 16056: 2000 movs r0, #0 16058: 4b65 ldr r3, [pc, #404] ; (161f0 ) 1605a: 4798 blx r3 1605c: 0003 movs r3, r0 1605e: 0080 lsls r0, r0, #2 16060: 18c0 adds r0, r0, r3 16062: 0080 lsls r0, r0, #2 16064: 3050 adds r0, #80 ; 0x50 16066: 21a0 movs r1, #160 ; 0xa0 16068: 4b62 ldr r3, [pc, #392] ; (161f4 ) 1606a: 4798 blx r3 1606c: b202 sxth r2, r0 1606e: f7fe fd2e bl 14ace lv_style_set_pad_left(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 16072: 2000 movs r0, #0 16074: 4b5e ldr r3, [pc, #376] ; (161f0 ) 16076: 4798 blx r3 16078: 0003 movs r3, r0 1607a: 0040 lsls r0, r0, #1 1607c: 18c0 adds r0, r0, r3 1607e: 0080 lsls r0, r0, #2 16080: 18c0 adds r0, r0, r3 16082: 3050 adds r0, #80 ; 0x50 16084: 21a0 movs r1, #160 ; 0xa0 16086: 4b5b ldr r3, [pc, #364] ; (161f4 ) 16088: 4798 blx r3 1608a: b202 sxth r2, r0 1608c: f7fe fd67 bl 14b5e lv_style_set_pad_right(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 16090: 2000 movs r0, #0 16092: 4b57 ldr r3, [pc, #348] ; (161f0 ) 16094: 4798 blx r3 16096: 0003 movs r3, r0 16098: 0040 lsls r0, r0, #1 1609a: 18c0 adds r0, r0, r3 1609c: 0080 lsls r0, r0, #2 1609e: 18c0 adds r0, r0, r3 160a0: 3050 adds r0, #80 ; 0x50 160a2: 21a0 movs r1, #160 ; 0xa0 160a4: 4b53 ldr r3, [pc, #332] ; (161f4 ) 160a6: 4798 blx r3 160a8: b202 sxth r2, r0 160aa: f7fe fd6f bl 14b8c lv_style_set_pad_top(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 160ae: 2000 movs r0, #0 160b0: 4b4f ldr r3, [pc, #316] ; (161f0 ) 160b2: 4798 blx r3 160b4: 0003 movs r3, r0 160b6: 0040 lsls r0, r0, #1 160b8: 18c0 adds r0, r0, r3 160ba: 0080 lsls r0, r0, #2 160bc: 18c0 adds r0, r0, r3 160be: 3050 adds r0, #80 ; 0x50 160c0: 21a0 movs r1, #160 ; 0xa0 160c2: 4b4c ldr r3, [pc, #304] ; (161f4 ) 160c4: 4798 blx r3 160c6: b202 sxth r2, r0 160c8: f7fe fd77 bl 14bba lv_style_set_pad_bottom(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 160cc: 2000 movs r0, #0 160ce: 4b48 ldr r3, [pc, #288] ; (161f0 ) 160d0: 4798 blx r3 160d2: 0003 movs r3, r0 160d4: 0040 lsls r0, r0, #1 160d6: 18c0 adds r0, r0, r3 160d8: 0080 lsls r0, r0, #2 160da: 18c0 adds r0, r0, r3 160dc: 3050 adds r0, #80 ; 0x50 160de: 21a0 movs r1, #160 ; 0xa0 160e0: 4b44 ldr r3, [pc, #272] ; (161f4 ) 160e2: 4798 blx r3 160e4: b202 sxth r2, r0 160e6: f7fe fd7f bl 14be8 lv_style_set_radius(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 160ea: 2000 movs r0, #0 160ec: 4b40 ldr r3, [pc, #256] ; (161f0 ) 160ee: 4798 blx r3 160f0: 3014 adds r0, #20 160f2: 0080 lsls r0, r0, #2 160f4: 21a0 movs r1, #160 ; 0xa0 160f6: 4b3f ldr r3, [pc, #252] ; (161f4 ) 160f8: 4798 blx r3 160fa: b202 sxth r2, r0 160fc: f7fe fd8b bl 14c16 lv_style_set_pad_inner(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 16100: 2000 movs r0, #0 16102: 4b3b ldr r3, [pc, #236] ; (161f0 ) 16104: 4798 blx r3 16106: 0003 movs r3, r0 16108: 0080 lsls r0, r0, #2 1610a: 18c0 adds r0, r0, r3 1610c: 0040 lsls r0, r0, #1 1610e: 3050 adds r0, #80 ; 0x50 16110: 21a0 movs r1, #160 ; 0xa0 16112: 4b38 ldr r3, [pc, #224] ; (161f4 ) 16114: 4798 blx r3 16116: b202 sxth r2, r0 16118: f7fe fd92 bl 14c40 lv_style_set_outline_width(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 1611c: 2000 movs r0, #0 1611e: 4b34 ldr r3, [pc, #208] ; (161f0 ) 16120: 4798 blx r3 16122: 0003 movs r3, r0 16124: 0040 lsls r0, r0, #1 16126: 18c0 adds r0, r0, r3 16128: 3050 adds r0, #80 ; 0x50 1612a: 21a0 movs r1, #160 ; 0xa0 1612c: 4b31 ldr r3, [pc, #196] ; (161f4 ) 1612e: 4798 blx r3 16130: b202 sxth r2, r0 16132: f7fe fdac bl 14c8e lv_style_set_outline_pad(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 16136: 2000 movs r0, #0 16138: 4b2d ldr r3, [pc, #180] ; (161f0 ) 1613a: 4798 blx r3 1613c: 0003 movs r3, r0 1613e: 0080 lsls r0, r0, #2 16140: 18c0 adds r0, r0, r3 16142: 0040 lsls r0, r0, #1 16144: 3050 adds r0, #80 ; 0x50 16146: 21a0 movs r1, #160 ; 0xa0 16148: 4b2a ldr r3, [pc, #168] ; (161f4 ) 1614a: 4798 blx r3 1614c: b202 sxth r2, r0 1614e: f7fe fdb3 bl 14cb8 lv_style_set_radius(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(4)); 16152: 2000 movs r0, #0 16154: 4b26 ldr r3, [pc, #152] ; (161f0 ) 16156: 4798 blx r3 16158: 3014 adds r0, #20 1615a: 0080 lsls r0, r0, #2 1615c: 21a0 movs r1, #160 ; 0xa0 1615e: 4b25 ldr r3, [pc, #148] ; (161f4 ) 16160: 4798 blx r3 16162: b202 sxth r2, r0 16164: f7fe fdf0 bl 14d48 lv_style_set_pad_left(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 16168: 2000 movs r0, #0 1616a: 4b21 ldr r3, [pc, #132] ; (161f0 ) 1616c: 4798 blx r3 1616e: 0003 movs r3, r0 16170: 0040 lsls r0, r0, #1 16172: 18c0 adds r0, r0, r3 16174: 3050 adds r0, #80 ; 0x50 16176: 21a0 movs r1, #160 ; 0xa0 16178: 4b1e ldr r3, [pc, #120] ; (161f4 ) 1617a: 4798 blx r3 1617c: b202 sxth r2, r0 1617e: f7fe fe0c bl 14d9a lv_style_set_pad_right(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 16182: 2000 movs r0, #0 16184: 4b1a ldr r3, [pc, #104] ; (161f0 ) 16186: 4798 blx r3 16188: 0003 movs r3, r0 1618a: 0040 lsls r0, r0, #1 1618c: 18c0 adds r0, r0, r3 1618e: 3050 adds r0, #80 ; 0x50 16190: 21a0 movs r1, #160 ; 0xa0 16192: 4b18 ldr r3, [pc, #96] ; (161f4 ) 16194: 4798 blx r3 16196: b202 sxth r2, r0 16198: f7fe fe13 bl 14dc2 lv_style_set_pad_top(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 1619c: 2000 movs r0, #0 1619e: 4b14 ldr r3, [pc, #80] ; (161f0 ) 161a0: 4798 blx r3 161a2: 0003 movs r3, r0 161a4: 0040 lsls r0, r0, #1 161a6: 18c0 adds r0, r0, r3 161a8: 3050 adds r0, #80 ; 0x50 161aa: 21a0 movs r1, #160 ; 0xa0 161ac: 4b11 ldr r3, [pc, #68] ; (161f4 ) 161ae: 4798 blx r3 161b0: b202 sxth r2, r0 161b2: f7fe fe1a bl 14dea lv_style_set_pad_bottom(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 161b6: 2000 movs r0, #0 161b8: 4b0d ldr r3, [pc, #52] ; (161f0 ) 161ba: 4798 blx r3 161bc: 0003 movs r3, r0 161be: 0040 lsls r0, r0, #1 161c0: 18c0 adds r0, r0, r3 161c2: 3050 adds r0, #80 ; 0x50 161c4: 21a0 movs r1, #160 ; 0xa0 161c6: 4b0b ldr r3, [pc, #44] ; (161f4 ) 161c8: 4798 blx r3 161ca: b202 sxth r2, r0 161cc: f7fe fe21 bl 14e12 lv_style_set_border_width(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 161d0: 2000 movs r0, #0 161d2: 4b07 ldr r3, [pc, #28] ; (161f0 ) 161d4: 4798 blx r3 161d6: 3014 adds r0, #20 161d8: 0080 lsls r0, r0, #2 161da: 21a0 movs r1, #160 ; 0xa0 161dc: 4b05 ldr r3, [pc, #20] ; (161f4 ) 161de: 4798 blx r3 161e0: b202 sxth r2, r0 161e2: f7fe fe32 bl 14e4a lv_style_set_border_color(&styles->kb_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT : LV_COLOR_BLACK); 161e6: 2307 movs r3, #7 161e8: 210f movs r1, #15 161ea: 2208 movs r2, #8 161ec: f7fe fe42 bl 14e74 161f0: 0000f665 .word 0x0000f665 161f4: 00017881 .word 0x00017881 lv_style_set_pad_left(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 161f8: 2000 movs r0, #0 161fa: 4bf8 ldr r3, [pc, #992] ; (165dc ) 161fc: 4798 blx r3 161fe: 0003 movs r3, r0 16200: 0080 lsls r0, r0, #2 16202: 18c0 adds r0, r0, r3 16204: 3050 adds r0, #80 ; 0x50 16206: 21a0 movs r1, #160 ; 0xa0 16208: 4bf5 ldr r3, [pc, #980] ; (165e0 ) 1620a: 4798 blx r3 1620c: b202 sxth r2, r0 1620e: f7fe fe4e bl 14eae lv_style_set_pad_right(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 16212: 2000 movs r0, #0 16214: 4bf1 ldr r3, [pc, #964] ; (165dc ) 16216: 4798 blx r3 16218: 0003 movs r3, r0 1621a: 0080 lsls r0, r0, #2 1621c: 18c0 adds r0, r0, r3 1621e: 3050 adds r0, #80 ; 0x50 16220: 21a0 movs r1, #160 ; 0xa0 16222: 4bef ldr r3, [pc, #956] ; (165e0 ) 16224: 4798 blx r3 16226: b202 sxth r2, r0 16228: f7fe fe55 bl 14ed6 lv_style_set_pad_top(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 1622c: 2000 movs r0, #0 1622e: 4beb ldr r3, [pc, #940] ; (165dc ) 16230: 4798 blx r3 16232: 0003 movs r3, r0 16234: 0080 lsls r0, r0, #2 16236: 18c0 adds r0, r0, r3 16238: 3050 adds r0, #80 ; 0x50 1623a: 21a0 movs r1, #160 ; 0xa0 1623c: 4be8 ldr r3, [pc, #928] ; (165e0 ) 1623e: 4798 blx r3 16240: b202 sxth r2, r0 16242: f7fe fe5c bl 14efe lv_style_set_pad_bottom(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 16246: 2000 movs r0, #0 16248: 4be4 ldr r3, [pc, #912] ; (165dc ) 1624a: 4798 blx r3 1624c: 0003 movs r3, r0 1624e: 0080 lsls r0, r0, #2 16250: 18c0 adds r0, r0, r3 16252: 3050 adds r0, #80 ; 0x50 16254: 21a0 movs r1, #160 ; 0xa0 16256: 4be2 ldr r3, [pc, #904] ; (165e0 ) 16258: 4798 blx r3 1625a: b202 sxth r2, r0 1625c: f7fe fe63 bl 14f26 lv_style_set_pad_inner(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 16260: 2000 movs r0, #0 16262: 4bde ldr r3, [pc, #888] ; (165dc ) 16264: 4798 blx r3 16266: 0003 movs r3, r0 16268: 0040 lsls r0, r0, #1 1626a: 18c0 adds r0, r0, r3 1626c: 3050 adds r0, #80 ; 0x50 1626e: 21a0 movs r1, #160 ; 0xa0 16270: 4bdb ldr r3, [pc, #876] ; (165e0 ) 16272: 4798 blx r3 16274: b202 sxth r2, r0 16276: f7fe fe6a bl 14f4e lv_style_set_shadow_width(&styles->mbox_bg, LV_STATE_DEFAULT, LV_DPX(50)); 1627a: 2000 movs r0, #0 1627c: 4bd7 ldr r3, [pc, #860] ; (165dc ) 1627e: 4798 blx r3 16280: 0003 movs r3, r0 16282: 2032 movs r0, #50 ; 0x32 16284: 4358 muls r0, r3 16286: 3050 adds r0, #80 ; 0x50 16288: 21a0 movs r1, #160 ; 0xa0 1628a: 4bd5 ldr r3, [pc, #852] ; (165e0 ) 1628c: 4798 blx r3 1628e: b202 sxth r2, r0 16290: f7fe fe75 bl 14f7e lv_style_set_shadow_color(&styles->mbox_bg, LV_STATE_DEFAULT, IS_LIGHT ? LV_COLOR_SILVER : lv_color_hex3(0x999)); 16294: 2226 movs r2, #38 ; 0x26 16296: 2313 movs r3, #19 16298: f7fe fe80 bl 14f9c lv_style_set_bg_color(&styles->sb, LV_STATE_DEFAULT, (IS_LIGHT ? lv_color_hex(0xcccfd1) : lv_color_hex(0x777f85))); 1629c: 2319 movs r3, #25 1629e: 2133 movs r1, #51 ; 0x33 162a0: 221a movs r2, #26 162a2: f7fe fe98 bl 14fd6 lv_style_set_size(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 162a6: 2000 movs r0, #0 162a8: 4bcc ldr r3, [pc, #816] ; (165dc ) 162aa: 4798 blx r3 162ac: 00c3 lsls r3, r0, #3 162ae: 1a18 subs r0, r3, r0 162b0: 3050 adds r0, #80 ; 0x50 162b2: 21a0 movs r1, #160 ; 0xa0 162b4: 4bca ldr r3, [pc, #808] ; (165e0 ) 162b6: 4798 blx r3 162b8: b202 sxth r2, r0 162ba: f7fe fea9 bl 15010 lv_style_set_pad_right(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 162be: 2000 movs r0, #0 162c0: 4bc6 ldr r3, [pc, #792] ; (165dc ) 162c2: 4798 blx r3 162c4: 00c3 lsls r3, r0, #3 162c6: 1a18 subs r0, r3, r0 162c8: 3050 adds r0, #80 ; 0x50 162ca: 21a0 movs r1, #160 ; 0xa0 162cc: 4bc4 ldr r3, [pc, #784] ; (165e0 ) 162ce: 4798 blx r3 162d0: b202 sxth r2, r0 162d2: f7fe feb1 bl 15038 lv_style_set_pad_bottom(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 162d6: 2000 movs r0, #0 162d8: 4bc0 ldr r3, [pc, #768] ; (165dc ) 162da: 4798 blx r3 162dc: 00c3 lsls r3, r0, #3 162de: 1a18 subs r0, r3, r0 162e0: 3050 adds r0, #80 ; 0x50 162e2: 21a0 movs r1, #160 ; 0xa0 162e4: 4bbe ldr r3, [pc, #760] ; (165e0 ) 162e6: 4798 blx r3 162e8: b202 sxth r2, r0 162ea: f7fe feb9 bl 15060 lv_style_set_border_color(&styles->ta_cursor, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 162ee: 2306 movs r3, #6 162f0: 2110 movs r1, #16 162f2: 2209 movs r2, #9 162f4: f7fe fed8 bl 150a8 lv_style_set_border_width(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(2)); 162f8: 2000 movs r0, #0 162fa: 4bb8 ldr r3, [pc, #736] ; (165dc ) 162fc: 4798 blx r3 162fe: 3028 adds r0, #40 ; 0x28 16300: 0040 lsls r0, r0, #1 16302: 21a0 movs r1, #160 ; 0xa0 16304: 4bb6 ldr r3, [pc, #728] ; (165e0 ) 16306: 4798 blx r3 16308: b202 sxth r2, r0 1630a: f7fe fee3 bl 150d4 lv_style_set_pad_left(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(1)); 1630e: 2000 movs r0, #0 16310: 4bb2 ldr r3, [pc, #712] ; (165dc ) 16312: 4798 blx r3 16314: 3050 adds r0, #80 ; 0x50 16316: 21a0 movs r1, #160 ; 0xa0 16318: 4bb1 ldr r3, [pc, #708] ; (165e0 ) 1631a: 4798 blx r3 1631c: b202 sxth r2, r0 1631e: f7fe feeb bl 150f8 lv_style_set_text_color(&styles->ta_placeholder, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 16322: 2315 movs r3, #21 16324: 212a movs r1, #42 ; 0x2a 16326: 2215 movs r2, #21 16328: f7fe ff1d bl 15166 lv_style_set_pad_top(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 1632c: 2000 movs r0, #0 1632e: 4bab ldr r3, [pc, #684] ; (165dc ) 16330: 4798 blx r3 16332: 0003 movs r3, r0 16334: 2064 movs r0, #100 ; 0x64 16336: 4358 muls r0, r3 16338: 3050 adds r0, #80 ; 0x50 1633a: 21a0 movs r1, #160 ; 0xa0 1633c: 4ba8 ldr r3, [pc, #672] ; (165e0 ) 1633e: 4798 blx r3 16340: b202 sxth r2, r0 16342: f7fe ff3e bl 151c2 lv_style_set_pad_bottom(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 16346: 2000 movs r0, #0 16348: 4ba4 ldr r3, [pc, #656] ; (165dc ) 1634a: 4798 blx r3 1634c: 0003 movs r3, r0 1634e: 2064 movs r0, #100 ; 0x64 16350: 4358 muls r0, r3 16352: 3050 adds r0, #80 ; 0x50 16354: 21a0 movs r1, #160 ; 0xa0 16356: 4ba2 ldr r3, [pc, #648] ; (165e0 ) 16358: 4798 blx r3 1635a: b202 sxth r2, r0 1635c: f7fe ff45 bl 151ea lv_style_set_bg_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG); 16360: 231f movs r3, #31 16362: 213f movs r1, #63 ; 0x3f 16364: 221f movs r2, #31 16366: f7fe ff7b bl 15260 lv_style_set_bg_color(&styles->list_btn, LV_STATE_PRESSED, COLOR_BG_PR); 1636a: 231d movs r3, #29 1636c: 213b movs r1, #59 ; 0x3b 1636e: 221d movs r2, #29 16370: f7fe ff89 bl 15286 lv_style_set_bg_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_DIS); 16374: 231f movs r3, #31 16376: 213f movs r1, #63 ; 0x3f 16378: 221f movs r2, #31 1637a: f7fe ff97 bl 152ac lv_style_set_text_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 1637e: 2307 movs r3, #7 16380: 210f movs r1, #15 16382: 2208 movs r2, #8 16384: f7fe ffb5 bl 152f2 lv_style_set_text_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 16388: 222a movs r2, #42 ; 0x2a 1638a: 2315 movs r3, #21 1638c: f7fe ffc9 bl 15322 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 16390: 2307 movs r3, #7 16392: 210f movs r1, #15 16394: 2208 movs r2, #8 16396: f7fe ffd7 bl 15348 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 1639a: 222a movs r2, #42 ; 0x2a 1639c: 2315 movs r3, #21 1639e: f7fe ffeb bl 15378 lv_style_set_border_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_BORDER); 163a2: 231a movs r3, #26 163a4: 2137 movs r1, #55 ; 0x37 163a6: 221c movs r2, #28 163a8: f7fe ffff bl 153aa lv_style_set_pad_left(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 163ac: 2000 movs r0, #0 163ae: 4b8b ldr r3, [pc, #556] ; (165dc ) 163b0: 4798 blx r3 163b2: 0103 lsls r3, r0, #4 163b4: 1a18 subs r0, r3, r0 163b6: 3050 adds r0, #80 ; 0x50 163b8: 2340 movs r3, #64 ; 0x40 163ba: 33ff adds r3, #255 ; 0xff 163bc: 2201 movs r2, #1 163be: 4298 cmp r0, r3 163c0: d801 bhi.n 163c6 163c2: f7ff f81d bl 15400 163c6: 2000 movs r0, #0 163c8: 4b84 ldr r3, [pc, #528] ; (165dc ) 163ca: 4798 blx r3 163cc: 0103 lsls r3, r0, #4 163ce: 1a18 subs r0, r3, r0 163d0: 3050 adds r0, #80 ; 0x50 163d2: 21a0 movs r1, #160 ; 0xa0 163d4: 4b82 ldr r3, [pc, #520] ; (165e0 ) 163d6: 4798 blx r3 163d8: b202 sxth r2, r0 163da: f7ff f811 bl 15400 163de: 2000 movs r0, #0 163e0: 4b7e ldr r3, [pc, #504] ; (165dc ) 163e2: 4798 blx r3 163e4: 0103 lsls r3, r0, #4 163e6: 1a18 subs r0, r3, r0 163e8: 0040 lsls r0, r0, #1 163ea: 3050 adds r0, #80 ; 0x50 163ec: 21a0 movs r1, #160 ; 0xa0 163ee: 4b7c ldr r3, [pc, #496] ; (165e0 ) 163f0: 4798 blx r3 163f2: b202 sxth r2, r0 163f4: f7ff f804 bl 15400 lv_style_set_pad_right(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 163f8: 2000 movs r0, #0 163fa: 4b78 ldr r3, [pc, #480] ; (165dc ) 163fc: 4798 blx r3 163fe: 0103 lsls r3, r0, #4 16400: 1a18 subs r0, r3, r0 16402: 3050 adds r0, #80 ; 0x50 16404: 2340 movs r3, #64 ; 0x40 16406: 33ff adds r3, #255 ; 0xff 16408: 2201 movs r2, #1 1640a: 4298 cmp r0, r3 1640c: d801 bhi.n 16412 1640e: f7ff f813 bl 15438 16412: 2000 movs r0, #0 16414: 4b71 ldr r3, [pc, #452] ; (165dc ) 16416: 4798 blx r3 16418: 0103 lsls r3, r0, #4 1641a: 1a18 subs r0, r3, r0 1641c: 3050 adds r0, #80 ; 0x50 1641e: 21a0 movs r1, #160 ; 0xa0 16420: 4b6f ldr r3, [pc, #444] ; (165e0 ) 16422: 4798 blx r3 16424: b202 sxth r2, r0 16426: f7ff f807 bl 15438 1642a: 2000 movs r0, #0 1642c: 4b6b ldr r3, [pc, #428] ; (165dc ) 1642e: 4798 blx r3 16430: 0103 lsls r3, r0, #4 16432: 1a18 subs r0, r3, r0 16434: 0040 lsls r0, r0, #1 16436: 3050 adds r0, #80 ; 0x50 16438: 21a0 movs r1, #160 ; 0xa0 1643a: 4b69 ldr r3, [pc, #420] ; (165e0 ) 1643c: 4798 blx r3 1643e: b202 sxth r2, r0 16440: f7fe fffa bl 15438 lv_style_set_pad_top(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 16444: 2000 movs r0, #0 16446: 4b65 ldr r3, [pc, #404] ; (165dc ) 16448: 4798 blx r3 1644a: 0103 lsls r3, r0, #4 1644c: 1a18 subs r0, r3, r0 1644e: 3050 adds r0, #80 ; 0x50 16450: 2340 movs r3, #64 ; 0x40 16452: 33ff adds r3, #255 ; 0xff 16454: 2201 movs r2, #1 16456: 4298 cmp r0, r3 16458: d801 bhi.n 1645e 1645a: f7ff f809 bl 15470 1645e: 2000 movs r0, #0 16460: 4b5e ldr r3, [pc, #376] ; (165dc ) 16462: 4798 blx r3 16464: 0103 lsls r3, r0, #4 16466: 1a18 subs r0, r3, r0 16468: 3050 adds r0, #80 ; 0x50 1646a: 21a0 movs r1, #160 ; 0xa0 1646c: 4b5c ldr r3, [pc, #368] ; (165e0 ) 1646e: 4798 blx r3 16470: b202 sxth r2, r0 16472: f7fe fffd bl 15470 16476: 2000 movs r0, #0 16478: 4b58 ldr r3, [pc, #352] ; (165dc ) 1647a: 4798 blx r3 1647c: 0103 lsls r3, r0, #4 1647e: 1a18 subs r0, r3, r0 16480: 0040 lsls r0, r0, #1 16482: 3050 adds r0, #80 ; 0x50 16484: 21a0 movs r1, #160 ; 0xa0 16486: 4b56 ldr r3, [pc, #344] ; (165e0 ) 16488: 4798 blx r3 1648a: b202 sxth r2, r0 1648c: f7fe fff0 bl 15470 lv_style_set_pad_bottom(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 16490: 2000 movs r0, #0 16492: 4b52 ldr r3, [pc, #328] ; (165dc ) 16494: 4798 blx r3 16496: 0103 lsls r3, r0, #4 16498: 1a18 subs r0, r3, r0 1649a: 3050 adds r0, #80 ; 0x50 1649c: 2340 movs r3, #64 ; 0x40 1649e: 33ff adds r3, #255 ; 0xff 164a0: 2201 movs r2, #1 164a2: 4298 cmp r0, r3 164a4: d801 bhi.n 164aa 164a6: f7fe ffff bl 154a8 164aa: 2000 movs r0, #0 164ac: 4b4b ldr r3, [pc, #300] ; (165dc ) 164ae: 4798 blx r3 164b0: 0103 lsls r3, r0, #4 164b2: 1a18 subs r0, r3, r0 164b4: 3050 adds r0, #80 ; 0x50 164b6: 21a0 movs r1, #160 ; 0xa0 164b8: 4b49 ldr r3, [pc, #292] ; (165e0 ) 164ba: 4798 blx r3 164bc: b202 sxth r2, r0 164be: f7fe fff3 bl 154a8 164c2: 2000 movs r0, #0 164c4: 4b45 ldr r3, [pc, #276] ; (165dc ) 164c6: 4798 blx r3 164c8: 0103 lsls r3, r0, #4 164ca: 1a18 subs r0, r3, r0 164cc: 0040 lsls r0, r0, #1 164ce: 3050 adds r0, #80 ; 0x50 164d0: 21a0 movs r1, #160 ; 0xa0 164d2: 4b43 ldr r3, [pc, #268] ; (165e0 ) 164d4: 4798 blx r3 164d6: b202 sxth r2, r0 164d8: f7fe ffe6 bl 154a8 lv_style_set_pad_inner(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 164dc: 2000 movs r0, #0 164de: 4b3f ldr r3, [pc, #252] ; (165dc ) 164e0: 4798 blx r3 164e2: 0103 lsls r3, r0, #4 164e4: 1a18 subs r0, r3, r0 164e6: 3050 adds r0, #80 ; 0x50 164e8: 2340 movs r3, #64 ; 0x40 164ea: 33ff adds r3, #255 ; 0xff 164ec: 2201 movs r2, #1 164ee: 4298 cmp r0, r3 164f0: d801 bhi.n 164f6 164f2: f7fe fff5 bl 154e0 164f6: 2000 movs r0, #0 164f8: 4b38 ldr r3, [pc, #224] ; (165dc ) 164fa: 4798 blx r3 164fc: 0103 lsls r3, r0, #4 164fe: 1a18 subs r0, r3, r0 16500: 3050 adds r0, #80 ; 0x50 16502: 21a0 movs r1, #160 ; 0xa0 16504: 4b36 ldr r3, [pc, #216] ; (165e0 ) 16506: 4798 blx r3 16508: b202 sxth r2, r0 1650a: f7fe ffe9 bl 154e0 1650e: 2000 movs r0, #0 16510: 4b32 ldr r3, [pc, #200] ; (165dc ) 16512: 4798 blx r3 16514: 0103 lsls r3, r0, #4 16516: 1a18 subs r0, r3, r0 16518: 0040 lsls r0, r0, #1 1651a: 3050 adds r0, #80 ; 0x50 1651c: 21a0 movs r1, #160 ; 0xa0 1651e: 4b30 ldr r3, [pc, #192] ; (165e0 ) 16520: 4798 blx r3 16522: b202 sxth r2, r0 16524: f7fe ffdc bl 154e0 lv_style_set_transform_width(&styles->list_btn, LV_STATE_DEFAULT, - PAD_DEF); 16528: 2000 movs r0, #0 1652a: 4b2c ldr r3, [pc, #176] ; (165dc ) 1652c: 4798 blx r3 1652e: 0103 lsls r3, r0, #4 16530: 1a18 subs r0, r3, r0 16532: 3050 adds r0, #80 ; 0x50 16534: 2340 movs r3, #64 ; 0x40 16536: 33ff adds r3, #255 ; 0xff 16538: 4298 cmp r0, r3 1653a: d803 bhi.n 16544 1653c: 2201 movs r2, #1 1653e: 4252 negs r2, r2 16540: f7fe ffeb bl 1551a 16544: 2000 movs r0, #0 16546: 4b25 ldr r3, [pc, #148] ; (165dc ) 16548: 4798 blx r3 1654a: 0103 lsls r3, r0, #4 1654c: 1a18 subs r0, r3, r0 1654e: 3050 adds r0, #80 ; 0x50 16550: 21a0 movs r1, #160 ; 0xa0 16552: 4b23 ldr r3, [pc, #140] ; (165e0 ) 16554: 4798 blx r3 16556: 4242 negs r2, r0 16558: b212 sxth r2, r2 1655a: f7fe ffde bl 1551a 1655e: 2000 movs r0, #0 16560: 4b1e ldr r3, [pc, #120] ; (165dc ) 16562: 4798 blx r3 16564: 0103 lsls r3, r0, #4 16566: 1a18 subs r0, r3, r0 16568: 0040 lsls r0, r0, #1 1656a: 3050 adds r0, #80 ; 0x50 1656c: 21a0 movs r1, #160 ; 0xa0 1656e: 4b1c ldr r3, [pc, #112] ; (165e0 ) 16570: 4798 blx r3 16572: 4242 negs r2, r0 16574: b212 sxth r2, r2 16576: f7fe ffd0 bl 1551a lv_style_set_text_line_space(&styles->ddlist_page, LV_STATE_DEFAULT, LV_DPX(20)); 1657a: 2000 movs r0, #0 1657c: 4b17 ldr r3, [pc, #92] ; (165dc ) 1657e: 4798 blx r3 16580: 0003 movs r3, r0 16582: 0080 lsls r0, r0, #2 16584: 18c0 adds r0, r0, r3 16586: 0080 lsls r0, r0, #2 16588: 3050 adds r0, #80 ; 0x50 1658a: 21a0 movs r1, #160 ; 0xa0 1658c: 4b14 ldr r3, [pc, #80] ; (165e0 ) 1658e: 4798 blx r3 16590: b202 sxth r2, r0 16592: f7ff f825 bl 155e0 lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_PR); 16596: 231d movs r3, #29 16598: 213b movs r1, #59 ; 0x3b 1659a: 221d movs r2, #29 1659c: f7ff f84b bl 15636 lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 165a0: 2307 movs r3, #7 165a2: 210f movs r1, #15 165a4: 2208 movs r2, #8 165a6: f7ff f859 bl 1565c lv_style_set_text_line_space(&styles->roller_bg, LV_STATE_DEFAULT, LV_DPX(25)); 165aa: 2000 movs r0, #0 165ac: 4b0b ldr r3, [pc, #44] ; (165dc ) 165ae: 4798 blx r3 165b0: 0083 lsls r3, r0, #2 165b2: 1818 adds r0, r3, r0 165b4: 0083 lsls r3, r0, #2 165b6: 18c0 adds r0, r0, r3 165b8: 3050 adds r0, #80 ; 0x50 165ba: 21a0 movs r1, #160 ; 0xa0 165bc: 4b08 ldr r3, [pc, #32] ; (165e0 ) 165be: 4798 blx r3 165c0: b202 sxth r2, r0 165c2: f7ff f868 bl 15696 lv_style_set_bg_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_BG); 165c6: 231f movs r3, #31 165c8: 213f movs r1, #63 ; 0x3f 165ca: 221f movs r2, #31 165cc: f7ff f892 bl 156f4 lv_style_set_border_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, 165d0: 231c movs r3, #28 165d2: 213a movs r1, #58 ; 0x3a 165d4: 221e movs r2, #30 165d6: f7ff f8a0 bl 1571a 165da: 46c0 nop ; (mov r8, r8) 165dc: 0000f665 .word 0x0000f665 165e0: 00017881 .word 0x00017881 lv_style_set_border_width(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(5)); 165e4: 2000 movs r0, #0 165e6: 4bdf ldr r3, [pc, #892] ; (16964 ) 165e8: 4798 blx r3 165ea: 0003 movs r3, r0 165ec: 0080 lsls r0, r0, #2 165ee: 18c0 adds r0, r0, r3 165f0: 3050 adds r0, #80 ; 0x50 165f2: 21a0 movs r1, #160 ; 0xa0 165f4: 4bdc ldr r3, [pc, #880] ; (16968 ) 165f6: 4798 blx r3 165f8: b202 sxth r2, r0 165fa: f7ff f8a5 bl 15748 lv_style_set_text_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 165fe: 2307 movs r3, #7 16600: 210f movs r1, #15 16602: 2208 movs r2, #8 16604: f7ff f8b5 bl 15772 lv_style_set_pad_top(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 16608: 2000 movs r0, #0 1660a: 4bd6 ldr r3, [pc, #856] ; (16964 ) 1660c: 4798 blx r3 1660e: 00c3 lsls r3, r0, #3 16610: 1a18 subs r0, r3, r0 16612: 3050 adds r0, #80 ; 0x50 16614: 21a0 movs r1, #160 ; 0xa0 16616: 4bd4 ldr r3, [pc, #848] ; (16968 ) 16618: 4798 blx r3 1661a: b202 sxth r2, r0 1661c: f7ff f8cd bl 157ba lv_style_set_pad_left(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 16620: 2000 movs r0, #0 16622: 4bd0 ldr r3, [pc, #832] ; (16964 ) 16624: 4798 blx r3 16626: 00c3 lsls r3, r0, #3 16628: 1a18 subs r0, r3, r0 1662a: 3050 adds r0, #80 ; 0x50 1662c: 21a0 movs r1, #160 ; 0xa0 1662e: 4bce ldr r3, [pc, #824] ; (16968 ) 16630: 4798 blx r3 16632: b202 sxth r2, r0 16634: f7ff f8d5 bl 157e2 lv_style_set_pad_right(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 16638: 2000 movs r0, #0 1663a: 4bca ldr r3, [pc, #808] ; (16964 ) 1663c: 4798 blx r3 1663e: 00c3 lsls r3, r0, #3 16640: 1a18 subs r0, r3, r0 16642: 3050 adds r0, #80 ; 0x50 16644: 21a0 movs r1, #160 ; 0xa0 16646: 4bc8 ldr r3, [pc, #800] ; (16968 ) 16648: 4798 blx r3 1664a: b202 sxth r2, r0 1664c: f7ff f8dd bl 1580a lv_style_set_text_color(&styles->tabview_btns, LV_STATE_CHECKED, COLOR_SCR_TEXT); 16650: 2307 movs r3, #7 16652: 210f movs r1, #15 16654: 2208 movs r2, #8 16656: f7ff f8f9 bl 1584c lv_style_set_pad_top(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 1665a: 2000 movs r0, #0 1665c: 4bc1 ldr r3, [pc, #772] ; (16964 ) 1665e: 4798 blx r3 16660: 0003 movs r3, r0 16662: 0080 lsls r0, r0, #2 16664: 18c0 adds r0, r0, r3 16666: 0080 lsls r0, r0, #2 16668: 3050 adds r0, #80 ; 0x50 1666a: 21a0 movs r1, #160 ; 0xa0 1666c: 4bbe ldr r3, [pc, #760] ; (16968 ) 1666e: 4798 blx r3 16670: b202 sxth r2, r0 16672: f7ff f903 bl 1587c lv_style_set_pad_bottom(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 16676: 2000 movs r0, #0 16678: 4bba ldr r3, [pc, #744] ; (16964 ) 1667a: 4798 blx r3 1667c: 0003 movs r3, r0 1667e: 0080 lsls r0, r0, #2 16680: 18c0 adds r0, r0, r3 16682: 0080 lsls r0, r0, #2 16684: 3050 adds r0, #80 ; 0x50 16686: 21a0 movs r1, #160 ; 0xa0 16688: 4bb7 ldr r3, [pc, #732] ; (16968 ) 1668a: 4798 blx r3 1668c: b202 sxth r2, r0 1668e: f7ff f90a bl 158a6 lv_style_set_size(&styles->tabview_indic, LV_STATE_DEFAULT, LV_DPX(5)); 16692: 2000 movs r0, #0 16694: 4bb3 ldr r3, [pc, #716] ; (16964 ) 16696: 4798 blx r3 16698: 0003 movs r3, r0 1669a: 0080 lsls r0, r0, #2 1669c: 18c0 adds r0, r0, r3 1669e: 3050 adds r0, #80 ; 0x50 166a0: 21a0 movs r1, #160 ; 0xa0 166a2: 4bb1 ldr r3, [pc, #708] ; (16968 ) 166a4: 4798 blx r3 166a6: b202 sxth r2, r0 166a8: f7ff f931 bl 1590e lv_style_set_pad_top(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 166ac: 2000 movs r0, #0 166ae: 4bad ldr r3, [pc, #692] ; (16964 ) 166b0: 4798 blx r3 166b2: 0103 lsls r3, r0, #4 166b4: 1a18 subs r0, r3, r0 166b6: 3050 adds r0, #80 ; 0x50 166b8: 2340 movs r3, #64 ; 0x40 166ba: 33ff adds r3, #255 ; 0xff 166bc: 2201 movs r2, #1 166be: 4298 cmp r0, r3 166c0: d801 bhi.n 166c6 166c2: f7ff f949 bl 15958 166c6: 2000 movs r0, #0 166c8: 4ba6 ldr r3, [pc, #664] ; (16964 ) 166ca: 4798 blx r3 166cc: 0103 lsls r3, r0, #4 166ce: 1a18 subs r0, r3, r0 166d0: 3050 adds r0, #80 ; 0x50 166d2: 21a0 movs r1, #160 ; 0xa0 166d4: 4ba4 ldr r3, [pc, #656] ; (16968 ) 166d6: 4798 blx r3 166d8: b202 sxth r2, r0 166da: f7ff f93d bl 15958 166de: 2000 movs r0, #0 166e0: 4ba0 ldr r3, [pc, #640] ; (16964 ) 166e2: 4798 blx r3 166e4: 0103 lsls r3, r0, #4 166e6: 1a18 subs r0, r3, r0 166e8: 0040 lsls r0, r0, #1 166ea: 3050 adds r0, #80 ; 0x50 166ec: 21a0 movs r1, #160 ; 0xa0 166ee: 4b9e ldr r3, [pc, #632] ; (16968 ) 166f0: 4798 blx r3 166f2: b202 sxth r2, r0 166f4: f7ff f930 bl 15958 lv_style_set_pad_bottom(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 166f8: 2000 movs r0, #0 166fa: 4b9a ldr r3, [pc, #616] ; (16964 ) 166fc: 4798 blx r3 166fe: 0103 lsls r3, r0, #4 16700: 1a18 subs r0, r3, r0 16702: 3050 adds r0, #80 ; 0x50 16704: 2340 movs r3, #64 ; 0x40 16706: 33ff adds r3, #255 ; 0xff 16708: 2201 movs r2, #1 1670a: 4298 cmp r0, r3 1670c: d801 bhi.n 16712 1670e: f7ff f973 bl 159f8 16712: 2000 movs r0, #0 16714: 4b93 ldr r3, [pc, #588] ; (16964 ) 16716: 4798 blx r3 16718: 0103 lsls r3, r0, #4 1671a: 1a18 subs r0, r3, r0 1671c: 3050 adds r0, #80 ; 0x50 1671e: 21a0 movs r1, #160 ; 0xa0 16720: 4b91 ldr r3, [pc, #580] ; (16968 ) 16722: 4798 blx r3 16724: b202 sxth r2, r0 16726: f7ff f967 bl 159f8 1672a: 2000 movs r0, #0 1672c: 4b8d ldr r3, [pc, #564] ; (16964 ) 1672e: 4798 blx r3 16730: 0103 lsls r3, r0, #4 16732: 1a18 subs r0, r3, r0 16734: 0040 lsls r0, r0, #1 16736: 3050 adds r0, #80 ; 0x50 16738: 21a0 movs r1, #160 ; 0xa0 1673a: 4b8b ldr r3, [pc, #556] ; (16968 ) 1673c: 4798 blx r3 1673e: b202 sxth r2, r0 16740: f7ff f95a bl 159f8 lv_style_set_pad_left(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 16744: 2000 movs r0, #0 16746: 4b87 ldr r3, [pc, #540] ; (16964 ) 16748: 4798 blx r3 1674a: 0103 lsls r3, r0, #4 1674c: 1a18 subs r0, r3, r0 1674e: 3050 adds r0, #80 ; 0x50 16750: 2340 movs r3, #64 ; 0x40 16752: 33ff adds r3, #255 ; 0xff 16754: 2201 movs r2, #1 16756: 4298 cmp r0, r3 16758: d801 bhi.n 1675e 1675a: f7ff f969 bl 15a30 1675e: 2000 movs r0, #0 16760: 4b80 ldr r3, [pc, #512] ; (16964 ) 16762: 4798 blx r3 16764: 0103 lsls r3, r0, #4 16766: 1a18 subs r0, r3, r0 16768: 3050 adds r0, #80 ; 0x50 1676a: 21a0 movs r1, #160 ; 0xa0 1676c: 4b7e ldr r3, [pc, #504] ; (16968 ) 1676e: 4798 blx r3 16770: b202 sxth r2, r0 16772: f7ff f95d bl 15a30 16776: 2000 movs r0, #0 16778: 4b7a ldr r3, [pc, #488] ; (16964 ) 1677a: 4798 blx r3 1677c: 0103 lsls r3, r0, #4 1677e: 1a18 subs r0, r3, r0 16780: 0040 lsls r0, r0, #1 16782: 3050 adds r0, #80 ; 0x50 16784: 21a0 movs r1, #160 ; 0xa0 16786: 4b78 ldr r3, [pc, #480] ; (16968 ) 16788: 4798 blx r3 1678a: b202 sxth r2, r0 1678c: f7ff f950 bl 15a30 lv_style_set_pad_right(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 16790: 2000 movs r0, #0 16792: 4b74 ldr r3, [pc, #464] ; (16964 ) 16794: 4798 blx r3 16796: 0103 lsls r3, r0, #4 16798: 1a18 subs r0, r3, r0 1679a: 3050 adds r0, #80 ; 0x50 1679c: 2340 movs r3, #64 ; 0x40 1679e: 33ff adds r3, #255 ; 0xff 167a0: 2201 movs r2, #1 167a2: 4298 cmp r0, r3 167a4: d801 bhi.n 167aa 167a6: f7ff f95f bl 15a68 167aa: 2000 movs r0, #0 167ac: 4b6d ldr r3, [pc, #436] ; (16964 ) 167ae: 4798 blx r3 167b0: 0103 lsls r3, r0, #4 167b2: 1a18 subs r0, r3, r0 167b4: 3050 adds r0, #80 ; 0x50 167b6: 21a0 movs r1, #160 ; 0xa0 167b8: 4b6b ldr r3, [pc, #428] ; (16968 ) 167ba: 4798 blx r3 167bc: b202 sxth r2, r0 167be: f7ff f953 bl 15a68 167c2: 2000 movs r0, #0 167c4: 4b67 ldr r3, [pc, #412] ; (16964 ) 167c6: 4798 blx r3 167c8: 0103 lsls r3, r0, #4 167ca: 1a18 subs r0, r3, r0 167cc: 0040 lsls r0, r0, #1 167ce: 3050 adds r0, #80 ; 0x50 167d0: 21a0 movs r1, #160 ; 0xa0 167d2: 4b65 ldr r3, [pc, #404] ; (16968 ) 167d4: 4798 blx r3 167d6: b202 sxth r2, r0 167d8: f7ff f946 bl 15a68 lv_style_set_pad_inner(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 167dc: 2000 movs r0, #0 167de: 4b61 ldr r3, [pc, #388] ; (16964 ) 167e0: 4798 blx r3 167e2: 0103 lsls r3, r0, #4 167e4: 1a18 subs r0, r3, r0 167e6: 3050 adds r0, #80 ; 0x50 167e8: 2340 movs r3, #64 ; 0x40 167ea: 33ff adds r3, #255 ; 0xff 167ec: 2201 movs r2, #1 167ee: 4298 cmp r0, r3 167f0: d801 bhi.n 167f6 167f2: f7ff f955 bl 15aa0 167f6: 2000 movs r0, #0 167f8: 4b5a ldr r3, [pc, #360] ; (16964 ) 167fa: 4798 blx r3 167fc: 0103 lsls r3, r0, #4 167fe: 1a18 subs r0, r3, r0 16800: 3050 adds r0, #80 ; 0x50 16802: 21a0 movs r1, #160 ; 0xa0 16804: 4b58 ldr r3, [pc, #352] ; (16968 ) 16806: 4798 blx r3 16808: b202 sxth r2, r0 1680a: f7ff f949 bl 15aa0 1680e: 2000 movs r0, #0 16810: 4b54 ldr r3, [pc, #336] ; (16964 ) 16812: 4798 blx r3 16814: 0103 lsls r3, r0, #4 16816: 1a18 subs r0, r3, r0 16818: 0040 lsls r0, r0, #1 1681a: 3050 adds r0, #80 ; 0x50 1681c: 21a0 movs r1, #160 ; 0xa0 1681e: 4b52 ldr r3, [pc, #328] ; (16968 ) 16820: 4798 blx r3 16822: b202 sxth r2, r0 16824: f7ff f93c bl 15aa0 lv_style_set_border_color(&styles->table_cell, LV_STATE_DEFAULT, COLOR_BG_BORDER); 16828: 231a movs r3, #26 1682a: 2137 movs r1, #55 ; 0x37 1682c: 221c movs r2, #28 1682e: f7ff f94b bl 15ac8 lv_style_set_pad_left(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 16832: 2000 movs r0, #0 16834: 4b4b ldr r3, [pc, #300] ; (16964 ) 16836: 4798 blx r3 16838: 0103 lsls r3, r0, #4 1683a: 1a18 subs r0, r3, r0 1683c: 3050 adds r0, #80 ; 0x50 1683e: 2340 movs r3, #64 ; 0x40 16840: 33ff adds r3, #255 ; 0xff 16842: 2201 movs r2, #1 16844: 4298 cmp r0, r3 16846: d801 bhi.n 1684c 16848: f7ff f968 bl 15b1c 1684c: 2000 movs r0, #0 1684e: 4b45 ldr r3, [pc, #276] ; (16964 ) 16850: 4798 blx r3 16852: 0103 lsls r3, r0, #4 16854: 1a18 subs r0, r3, r0 16856: 3050 adds r0, #80 ; 0x50 16858: 21a0 movs r1, #160 ; 0xa0 1685a: 4b43 ldr r3, [pc, #268] ; (16968 ) 1685c: 4798 blx r3 1685e: b202 sxth r2, r0 16860: f7ff f95c bl 15b1c 16864: 2000 movs r0, #0 16866: 4b3f ldr r3, [pc, #252] ; (16964 ) 16868: 4798 blx r3 1686a: 0103 lsls r3, r0, #4 1686c: 1a18 subs r0, r3, r0 1686e: 0040 lsls r0, r0, #1 16870: 3050 adds r0, #80 ; 0x50 16872: 21a0 movs r1, #160 ; 0xa0 16874: 4b3c ldr r3, [pc, #240] ; (16968 ) 16876: 4798 blx r3 16878: b202 sxth r2, r0 1687a: f7ff f94f bl 15b1c lv_style_set_pad_right(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 1687e: 2000 movs r0, #0 16880: 4b38 ldr r3, [pc, #224] ; (16964 ) 16882: 4798 blx r3 16884: 0103 lsls r3, r0, #4 16886: 1a18 subs r0, r3, r0 16888: 3050 adds r0, #80 ; 0x50 1688a: 2340 movs r3, #64 ; 0x40 1688c: 33ff adds r3, #255 ; 0xff 1688e: 2201 movs r2, #1 16890: 4298 cmp r0, r3 16892: d801 bhi.n 16898 16894: f7ff f95e bl 15b54 16898: 2000 movs r0, #0 1689a: 4b32 ldr r3, [pc, #200] ; (16964 ) 1689c: 4798 blx r3 1689e: 0103 lsls r3, r0, #4 168a0: 1a18 subs r0, r3, r0 168a2: 3050 adds r0, #80 ; 0x50 168a4: 21a0 movs r1, #160 ; 0xa0 168a6: 4b30 ldr r3, [pc, #192] ; (16968 ) 168a8: 4798 blx r3 168aa: b202 sxth r2, r0 168ac: f7ff f952 bl 15b54 168b0: 2000 movs r0, #0 168b2: 4b2c ldr r3, [pc, #176] ; (16964 ) 168b4: 4798 blx r3 168b6: 0103 lsls r3, r0, #4 168b8: 1a18 subs r0, r3, r0 168ba: 0040 lsls r0, r0, #1 168bc: 3050 adds r0, #80 ; 0x50 168be: 21a0 movs r1, #160 ; 0xa0 168c0: 4b29 ldr r3, [pc, #164] ; (16968 ) 168c2: 4798 blx r3 168c4: b202 sxth r2, r0 168c6: f7ff f945 bl 15b54 lv_style_set_pad_top(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 168ca: 2000 movs r0, #0 168cc: 4b25 ldr r3, [pc, #148] ; (16964 ) 168ce: 4798 blx r3 168d0: 0103 lsls r3, r0, #4 168d2: 1a18 subs r0, r3, r0 168d4: 3050 adds r0, #80 ; 0x50 168d6: 2340 movs r3, #64 ; 0x40 168d8: 33ff adds r3, #255 ; 0xff 168da: 2201 movs r2, #1 168dc: 4298 cmp r0, r3 168de: d801 bhi.n 168e4 168e0: f7ff f954 bl 15b8c 168e4: 2000 movs r0, #0 168e6: 4b1f ldr r3, [pc, #124] ; (16964 ) 168e8: 4798 blx r3 168ea: 0103 lsls r3, r0, #4 168ec: 1a18 subs r0, r3, r0 168ee: 3050 adds r0, #80 ; 0x50 168f0: 21a0 movs r1, #160 ; 0xa0 168f2: 4b1d ldr r3, [pc, #116] ; (16968 ) 168f4: 4798 blx r3 168f6: b202 sxth r2, r0 168f8: f7ff f948 bl 15b8c 168fc: 2000 movs r0, #0 168fe: 4b19 ldr r3, [pc, #100] ; (16964 ) 16900: 4798 blx r3 16902: 0103 lsls r3, r0, #4 16904: 1a18 subs r0, r3, r0 16906: 0040 lsls r0, r0, #1 16908: 3050 adds r0, #80 ; 0x50 1690a: 21a0 movs r1, #160 ; 0xa0 1690c: 4b16 ldr r3, [pc, #88] ; (16968 ) 1690e: 4798 blx r3 16910: b202 sxth r2, r0 16912: f7ff f93b bl 15b8c lv_style_set_pad_bottom(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 16916: 2000 movs r0, #0 16918: 4b12 ldr r3, [pc, #72] ; (16964 ) 1691a: 4798 blx r3 1691c: 0103 lsls r3, r0, #4 1691e: 1a18 subs r0, r3, r0 16920: 3050 adds r0, #80 ; 0x50 16922: 2340 movs r3, #64 ; 0x40 16924: 33ff adds r3, #255 ; 0xff 16926: 2201 movs r2, #1 16928: 4298 cmp r0, r3 1692a: d801 bhi.n 16930 1692c: f7ff f94a bl 15bc4 16930: 2000 movs r0, #0 16932: 4b0c ldr r3, [pc, #48] ; (16964 ) 16934: 4798 blx r3 16936: 0103 lsls r3, r0, #4 16938: 1a18 subs r0, r3, r0 1693a: 3050 adds r0, #80 ; 0x50 1693c: 21a0 movs r1, #160 ; 0xa0 1693e: 4b0a ldr r3, [pc, #40] ; (16968 ) 16940: 4798 blx r3 16942: b202 sxth r2, r0 16944: f7ff f93e bl 15bc4 16948: 2000 movs r0, #0 1694a: 4b06 ldr r3, [pc, #24] ; (16964 ) 1694c: 4798 blx r3 1694e: 0103 lsls r3, r0, #4 16950: 1a18 subs r0, r3, r0 16952: 0040 lsls r0, r0, #1 16954: 3050 adds r0, #80 ; 0x50 16956: 21a0 movs r1, #160 ; 0xa0 16958: 4b03 ldr r3, [pc, #12] ; (16968 ) 1695a: 4798 blx r3 1695c: b202 sxth r2, r0 1695e: f7ff f931 bl 15bc4 16962: 46c0 nop ; (mov r8, r8) 16964: 0000f665 .word 0x0000f665 16968: 00017881 .word 0x00017881 0001696c : /********************** * GLOBAL FUNCTIONS **********************/ void ssd1963_init(void) { 1696c: b5f0 push {r4, r5, r6, r7, lr} 1696e: 46d6 mov lr, sl 16970: 464f mov r7, r9 16972: 4646 mov r6, r8 16974: b5c0 push {r6, r7, lr} asm volatile("nop"); 16976: 46c0 nop ; (mov r8, r8) p_gpio_parallel_wr_word(SSD1963_TFT_DATA_PORT, SSD1963_TFT_DATA_MASK, 0xAAAA); 16978: 4ae8 ldr r2, [pc, #928] ; (16d1c ) 1697a: 49e9 ldr r1, [pc, #932] ; (16d20 ) 1697c: 48e9 ldr r0, [pc, #932] ; (16d24 ) 1697e: 4bea ldr r3, [pc, #936] ; (16d28 ) 16980: 4798 blx r3 asm volatile("nop"); 16982: 46c0 nop ; (mov r8, r8) delay_ms(100); 16984: 2000 movs r0, #0 16986: 4be9 ldr r3, [pc, #932] ; (16d2c ) 16988: 469a mov sl, r3 1698a: 4798 blx r3 1698c: 4be8 ldr r3, [pc, #928] ; (16d30 ) 1698e: 4699 mov r9, r3 16990: 2264 movs r2, #100 ; 0x64 16992: 2300 movs r3, #0 16994: 2100 movs r1, #0 16996: 47c8 blx r9 16998: 4ee6 ldr r6, [pc, #920] ; (16d34 ) 1699a: 2700 movs r7, #0 1699c: 1980 adds r0, r0, r6 1699e: 4179 adcs r1, r7 169a0: 4de5 ldr r5, [pc, #916] ; (16d38 ) 169a2: 4ae6 ldr r2, [pc, #920] ; (16d3c ) 169a4: 2300 movs r3, #0 169a6: 47a8 blx r5 169a8: 4ce5 ldr r4, [pc, #916] ; (16d40 ) 169aa: 47a0 blx r4 169ac: 4be5 ldr r3, [pc, #916] ; (16d44 ) 169ae: 4698 mov r8, r3 169b0: 2310 movs r3, #16 169b2: 4642 mov r2, r8 169b4: 6193 str r3, [r2, #24] LV_DRV_DISP_RST(1); delay_ms(100); 169b6: 2000 movs r0, #0 169b8: 47d0 blx sl 169ba: 2264 movs r2, #100 ; 0x64 169bc: 2300 movs r3, #0 169be: 2100 movs r1, #0 169c0: 47c8 blx r9 169c2: 1980 adds r0, r0, r6 169c4: 4179 adcs r1, r7 169c6: 4add ldr r2, [pc, #884] ; (16d3c ) 169c8: 2300 movs r3, #0 169ca: 47a8 blx r5 169cc: 47a0 blx r4 delay_ms(100); 169ce: 2000 movs r0, #0 169d0: 47d0 blx sl 169d2: 2264 movs r2, #100 ; 0x64 169d4: 2300 movs r3, #0 169d6: 2100 movs r1, #0 169d8: 47c8 blx r9 169da: 1980 adds r0, r0, r6 169dc: 4179 adcs r1, r7 169de: 4ad7 ldr r2, [pc, #860] ; (16d3c ) 169e0: 2300 movs r3, #0 169e2: 47a8 blx r5 169e4: 47a0 blx r4 } else { port_base->OUTCLR.reg = pin_mask; 169e6: 2340 movs r3, #64 ; 0x40 169e8: 4642 mov r2, r8 169ea: 6153 str r3, [r2, #20] /** * Command mode */ static inline void ssd1963_cmd_mode(void) { if(cmd_mode == false) { 169ec: 4bd6 ldr r3, [pc, #856] ; (16d48 ) 169ee: 781b ldrb r3, [r3, #0] 169f0: 2b00 cmp r3, #0 169f2: d105 bne.n 16a00 169f4: 2220 movs r2, #32 169f6: 4643 mov r3, r8 169f8: 615a str r2, [r3, #20] LV_DRV_DISP_CMD_DATA(SSD1963_CMD_MODE); cmd_mode = true; 169fa: 3a1f subs r2, #31 169fc: 4bd2 ldr r3, [pc, #840] ; (16d48 ) 169fe: 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); 16a00: 2201 movs r2, #1 16a02: 49c7 ldr r1, [pc, #796] ; (16d20 ) 16a04: 48c7 ldr r0, [pc, #796] ; (16d24 ) 16a06: 4bc8 ldr r3, [pc, #800] ; (16d28 ) 16a08: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 16a0a: 4bce ldr r3, [pc, #824] ; (16d44 ) 16a0c: 2240 movs r2, #64 ; 0x40 16a0e: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16a10: 615a str r2, [r3, #20] if(cmd_mode == false) { 16a12: 4bcd ldr r3, [pc, #820] ; (16d48 ) 16a14: 781b ldrb r3, [r3, #0] 16a16: 2b00 cmp r3, #0 16a18: d105 bne.n 16a26 16a1a: 3a20 subs r2, #32 16a1c: 4bc9 ldr r3, [pc, #804] ; (16d44 ) 16a1e: 615a str r2, [r3, #20] cmd_mode = true; 16a20: 3a1f subs r2, #31 16a22: 4bc9 ldr r3, [pc, #804] ; (16d48 ) 16a24: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 16a26: 2201 movs r2, #1 16a28: 49bd ldr r1, [pc, #756] ; (16d20 ) 16a2a: 48be ldr r0, [pc, #760] ; (16d24 ) 16a2c: 4bbe ldr r3, [pc, #760] ; (16d28 ) 16a2e: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 16a30: 4bc4 ldr r3, [pc, #784] ; (16d44 ) 16a32: 2240 movs r2, #64 ; 0x40 16a34: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16a36: 615a str r2, [r3, #20] if(cmd_mode == false) { 16a38: 4bc3 ldr r3, [pc, #780] ; (16d48 ) 16a3a: 781b ldrb r3, [r3, #0] 16a3c: 2b00 cmp r3, #0 16a3e: d105 bne.n 16a4c 16a40: 3a20 subs r2, #32 16a42: 4bc0 ldr r3, [pc, #768] ; (16d44 ) 16a44: 615a str r2, [r3, #20] cmd_mode = true; 16a46: 3a1f subs r2, #31 16a48: 4bbf ldr r3, [pc, #764] ; (16d48 ) 16a4a: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 16a4c: 2201 movs r2, #1 16a4e: 49b4 ldr r1, [pc, #720] ; (16d20 ) 16a50: 48b4 ldr r0, [pc, #720] ; (16d24 ) 16a52: 4bb5 ldr r3, [pc, #724] ; (16d28 ) 16a54: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 16a56: 4bbb ldr r3, [pc, #748] ; (16d44 ) 16a58: 2240 movs r2, #64 ; 0x40 16a5a: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16a5c: 615a str r2, [r3, #20] if(cmd_mode == false) { 16a5e: 4bba ldr r3, [pc, #744] ; (16d48 ) 16a60: 781b ldrb r3, [r3, #0] 16a62: 2b00 cmp r3, #0 16a64: d105 bne.n 16a72 16a66: 3a20 subs r2, #32 16a68: 4bb6 ldr r3, [pc, #728] ; (16d44 ) 16a6a: 615a str r2, [r3, #20] cmd_mode = true; 16a6c: 3a1f subs r2, #31 16a6e: 4bb6 ldr r3, [pc, #728] ; (16d48 ) 16a70: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 16a72: 22e2 movs r2, #226 ; 0xe2 16a74: 49aa ldr r1, [pc, #680] ; (16d20 ) 16a76: 48ab ldr r0, [pc, #684] ; (16d24 ) 16a78: 4bab ldr r3, [pc, #684] ; (16d28 ) 16a7a: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 16a7c: 4bb1 ldr r3, [pc, #708] ; (16d44 ) 16a7e: 2240 movs r2, #64 ; 0x40 16a80: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16a82: 615a str r2, [r3, #20] if(cmd_mode != false) { 16a84: 4bb0 ldr r3, [pc, #704] ; (16d48 ) 16a86: 781b ldrb r3, [r3, #0] 16a88: 2b00 cmp r3, #0 16a8a: d005 beq.n 16a98 port_base->OUTSET.reg = pin_mask; 16a8c: 3a20 subs r2, #32 16a8e: 4bad ldr r3, [pc, #692] ; (16d44 ) 16a90: 619a str r2, [r3, #24] cmd_mode = false; 16a92: 2200 movs r2, #0 16a94: 4bac ldr r3, [pc, #688] ; (16d48 ) 16a96: 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); 16a98: 2223 movs r2, #35 ; 0x23 16a9a: 49a1 ldr r1, [pc, #644] ; (16d20 ) 16a9c: 48a1 ldr r0, [pc, #644] ; (16d24 ) 16a9e: 4ba2 ldr r3, [pc, #648] ; (16d28 ) 16aa0: 4798 blx r3 16aa2: 4ba8 ldr r3, [pc, #672] ; (16d44 ) 16aa4: 2240 movs r2, #64 ; 0x40 16aa6: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16aa8: 615a str r2, [r3, #20] if(cmd_mode != false) { 16aaa: 4ba7 ldr r3, [pc, #668] ; (16d48 ) 16aac: 781b ldrb r3, [r3, #0] 16aae: 2b00 cmp r3, #0 16ab0: d005 beq.n 16abe port_base->OUTSET.reg = pin_mask; 16ab2: 3a20 subs r2, #32 16ab4: 4ba3 ldr r3, [pc, #652] ; (16d44 ) 16ab6: 619a str r2, [r3, #24] cmd_mode = false; 16ab8: 2200 movs r2, #0 16aba: 4ba3 ldr r3, [pc, #652] ; (16d48 ) 16abc: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16abe: 2202 movs r2, #2 16ac0: 4997 ldr r1, [pc, #604] ; (16d20 ) 16ac2: 4898 ldr r0, [pc, #608] ; (16d24 ) 16ac4: 4b98 ldr r3, [pc, #608] ; (16d28 ) 16ac6: 4798 blx r3 16ac8: 4b9e ldr r3, [pc, #632] ; (16d44 ) 16aca: 2240 movs r2, #64 ; 0x40 16acc: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16ace: 615a str r2, [r3, #20] if(cmd_mode != false) { 16ad0: 4b9d ldr r3, [pc, #628] ; (16d48 ) 16ad2: 781b ldrb r3, [r3, #0] 16ad4: 2b00 cmp r3, #0 16ad6: d005 beq.n 16ae4 port_base->OUTSET.reg = pin_mask; 16ad8: 3a20 subs r2, #32 16ada: 4b9a ldr r3, [pc, #616] ; (16d44 ) 16adc: 619a str r2, [r3, #24] cmd_mode = false; 16ade: 2200 movs r2, #0 16ae0: 4b99 ldr r3, [pc, #612] ; (16d48 ) 16ae2: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16ae4: 2254 movs r2, #84 ; 0x54 16ae6: 498e ldr r1, [pc, #568] ; (16d20 ) 16ae8: 488e ldr r0, [pc, #568] ; (16d24 ) 16aea: 4b8f ldr r3, [pc, #572] ; (16d28 ) 16aec: 4798 blx r3 16aee: 4b95 ldr r3, [pc, #596] ; (16d44 ) 16af0: 2240 movs r2, #64 ; 0x40 16af2: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16af4: 615a str r2, [r3, #20] if(cmd_mode == false) { 16af6: 4b94 ldr r3, [pc, #592] ; (16d48 ) 16af8: 781b ldrb r3, [r3, #0] 16afa: 2b00 cmp r3, #0 16afc: d105 bne.n 16b0a 16afe: 3a20 subs r2, #32 16b00: 4b90 ldr r3, [pc, #576] ; (16d44 ) 16b02: 615a str r2, [r3, #20] cmd_mode = true; 16b04: 3a1f subs r2, #31 16b06: 4b90 ldr r3, [pc, #576] ; (16d48 ) 16b08: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 16b0a: 22e0 movs r2, #224 ; 0xe0 16b0c: 4984 ldr r1, [pc, #528] ; (16d20 ) 16b0e: 4885 ldr r0, [pc, #532] ; (16d24 ) 16b10: 4b85 ldr r3, [pc, #532] ; (16d28 ) 16b12: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 16b14: 4b8b ldr r3, [pc, #556] ; (16d44 ) 16b16: 2240 movs r2, #64 ; 0x40 16b18: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16b1a: 615a str r2, [r3, #20] if(cmd_mode != false) { 16b1c: 4b8a ldr r3, [pc, #552] ; (16d48 ) 16b1e: 781b ldrb r3, [r3, #0] 16b20: 2b00 cmp r3, #0 16b22: d005 beq.n 16b30 port_base->OUTSET.reg = pin_mask; 16b24: 3a20 subs r2, #32 16b26: 4b87 ldr r3, [pc, #540] ; (16d44 ) 16b28: 619a str r2, [r3, #24] cmd_mode = false; 16b2a: 2200 movs r2, #0 16b2c: 4b86 ldr r3, [pc, #536] ; (16d48 ) 16b2e: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16b30: 2201 movs r2, #1 16b32: 497b ldr r1, [pc, #492] ; (16d20 ) 16b34: 487b ldr r0, [pc, #492] ; (16d24 ) 16b36: 4b7c ldr r3, [pc, #496] ; (16d28 ) 16b38: 4798 blx r3 16b3a: 4c82 ldr r4, [pc, #520] ; (16d44 ) 16b3c: 2540 movs r5, #64 ; 0x40 16b3e: 61a5 str r5, [r4, #24] delay_us(100); 16b40: 2000 movs r0, #0 16b42: 4b7a ldr r3, [pc, #488] ; (16d2c ) 16b44: 4798 blx r3 16b46: 2264 movs r2, #100 ; 0x64 16b48: 2300 movs r3, #0 16b4a: 2100 movs r1, #0 16b4c: 4e78 ldr r6, [pc, #480] ; (16d30 ) 16b4e: 47b0 blx r6 16b50: 4a7e ldr r2, [pc, #504] ; (16d4c ) 16b52: 2300 movs r3, #0 16b54: 1880 adds r0, r0, r2 16b56: 4159 adcs r1, r3 16b58: 4a7d ldr r2, [pc, #500] ; (16d50 ) 16b5a: 2300 movs r3, #0 16b5c: 4e76 ldr r6, [pc, #472] ; (16d38 ) 16b5e: 47b0 blx r6 16b60: 4b77 ldr r3, [pc, #476] ; (16d40 ) 16b62: 4798 blx r3 port_base->OUTCLR.reg = pin_mask; 16b64: 6165 str r5, [r4, #20] if(cmd_mode == false) { 16b66: 4b78 ldr r3, [pc, #480] ; (16d48 ) 16b68: 781b ldrb r3, [r3, #0] 16b6a: 2b00 cmp r3, #0 16b6c: d104 bne.n 16b78 16b6e: 2220 movs r2, #32 16b70: 6162 str r2, [r4, #20] cmd_mode = true; 16b72: 3a1f subs r2, #31 16b74: 4b74 ldr r3, [pc, #464] ; (16d48 ) 16b76: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 16b78: 22e0 movs r2, #224 ; 0xe0 16b7a: 4969 ldr r1, [pc, #420] ; (16d20 ) 16b7c: 4869 ldr r0, [pc, #420] ; (16d24 ) 16b7e: 4b6a ldr r3, [pc, #424] ; (16d28 ) 16b80: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 16b82: 4b70 ldr r3, [pc, #448] ; (16d44 ) 16b84: 2240 movs r2, #64 ; 0x40 16b86: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16b88: 615a str r2, [r3, #20] if(cmd_mode != false) { 16b8a: 4b6f ldr r3, [pc, #444] ; (16d48 ) 16b8c: 781b ldrb r3, [r3, #0] 16b8e: 2b00 cmp r3, #0 16b90: d005 beq.n 16b9e port_base->OUTSET.reg = pin_mask; 16b92: 3a20 subs r2, #32 16b94: 4b6b ldr r3, [pc, #428] ; (16d44 ) 16b96: 619a str r2, [r3, #24] cmd_mode = false; 16b98: 2200 movs r2, #0 16b9a: 4b6b ldr r3, [pc, #428] ; (16d48 ) 16b9c: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16b9e: 2203 movs r2, #3 16ba0: 495f ldr r1, [pc, #380] ; (16d20 ) 16ba2: 4860 ldr r0, [pc, #384] ; (16d24 ) 16ba4: 4b60 ldr r3, [pc, #384] ; (16d28 ) 16ba6: 4798 blx r3 16ba8: 4b66 ldr r3, [pc, #408] ; (16d44 ) 16baa: 2240 movs r2, #64 ; 0x40 16bac: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16bae: 615a str r2, [r3, #20] if(cmd_mode == false) { 16bb0: 4b65 ldr r3, [pc, #404] ; (16d48 ) 16bb2: 781b ldrb r3, [r3, #0] 16bb4: 2b00 cmp r3, #0 16bb6: d105 bne.n 16bc4 16bb8: 3a20 subs r2, #32 16bba: 4b62 ldr r3, [pc, #392] ; (16d44 ) 16bbc: 615a str r2, [r3, #20] cmd_mode = true; 16bbe: 3a1f subs r2, #31 16bc0: 4b61 ldr r3, [pc, #388] ; (16d48 ) 16bc2: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 16bc4: 22b0 movs r2, #176 ; 0xb0 16bc6: 4956 ldr r1, [pc, #344] ; (16d20 ) 16bc8: 4856 ldr r0, [pc, #344] ; (16d24 ) 16bca: 4b57 ldr r3, [pc, #348] ; (16d28 ) 16bcc: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 16bce: 4b5d ldr r3, [pc, #372] ; (16d44 ) 16bd0: 2240 movs r2, #64 ; 0x40 16bd2: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16bd4: 615a str r2, [r3, #20] if(cmd_mode != false) { 16bd6: 4b5c ldr r3, [pc, #368] ; (16d48 ) 16bd8: 781b ldrb r3, [r3, #0] 16bda: 2b00 cmp r3, #0 16bdc: d005 beq.n 16bea port_base->OUTSET.reg = pin_mask; 16bde: 3a20 subs r2, #32 16be0: 4b58 ldr r3, [pc, #352] ; (16d44 ) 16be2: 619a str r2, [r3, #24] cmd_mode = false; 16be4: 2200 movs r2, #0 16be6: 4b58 ldr r3, [pc, #352] ; (16d48 ) 16be8: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16bea: 2228 movs r2, #40 ; 0x28 16bec: 494c ldr r1, [pc, #304] ; (16d20 ) 16bee: 484d ldr r0, [pc, #308] ; (16d24 ) 16bf0: 4b4d ldr r3, [pc, #308] ; (16d28 ) 16bf2: 4798 blx r3 16bf4: 4b53 ldr r3, [pc, #332] ; (16d44 ) 16bf6: 2240 movs r2, #64 ; 0x40 16bf8: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16bfa: 615a str r2, [r3, #20] if(cmd_mode != false) { 16bfc: 4b52 ldr r3, [pc, #328] ; (16d48 ) 16bfe: 781b ldrb r3, [r3, #0] 16c00: 2b00 cmp r3, #0 16c02: d005 beq.n 16c10 port_base->OUTSET.reg = pin_mask; 16c04: 3a20 subs r2, #32 16c06: 4b4f ldr r3, [pc, #316] ; (16d44 ) 16c08: 619a str r2, [r3, #24] cmd_mode = false; 16c0a: 2200 movs r2, #0 16c0c: 4b4e ldr r3, [pc, #312] ; (16d48 ) 16c0e: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16c10: 2220 movs r2, #32 16c12: 4943 ldr r1, [pc, #268] ; (16d20 ) 16c14: 4843 ldr r0, [pc, #268] ; (16d24 ) 16c16: 4b44 ldr r3, [pc, #272] ; (16d28 ) 16c18: 4798 blx r3 16c1a: 4c4a ldr r4, [pc, #296] ; (16d44 ) 16c1c: 2540 movs r5, #64 ; 0x40 16c1e: 61a5 str r5, [r4, #24] ssd1963_data(((SSD1963_HOR_RES - 1) >> 8) & 0X00FF); //Set HDP 16c20: 4b4c ldr r3, [pc, #304] ; (16d54 ) 16c22: 4798 blx r3 16c24: 4b4c ldr r3, [pc, #304] ; (16d58 ) 16c26: 4798 blx r3 16c28: 1e42 subs r2, r0, #1 16c2a: 1212 asrs r2, r2, #8 port_base->OUTCLR.reg = pin_mask; 16c2c: 6165 str r5, [r4, #20] if(cmd_mode != false) { 16c2e: 4b46 ldr r3, [pc, #280] ; (16d48 ) 16c30: 781b ldrb r3, [r3, #0] 16c32: 2b00 cmp r3, #0 16c34: d004 beq.n 16c40 port_base->OUTSET.reg = pin_mask; 16c36: 2120 movs r1, #32 16c38: 61a1 str r1, [r4, #24] cmd_mode = false; 16c3a: 2100 movs r1, #0 16c3c: 4b42 ldr r3, [pc, #264] ; (16d48 ) 16c3e: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16c40: 20ff movs r0, #255 ; 0xff 16c42: 4002 ands r2, r0 16c44: 4936 ldr r1, [pc, #216] ; (16d20 ) 16c46: 4837 ldr r0, [pc, #220] ; (16d24 ) 16c48: 4b37 ldr r3, [pc, #220] ; (16d28 ) 16c4a: 4798 blx r3 16c4c: 4c3d ldr r4, [pc, #244] ; (16d44 ) 16c4e: 2540 movs r5, #64 ; 0x40 16c50: 61a5 str r5, [r4, #24] ssd1963_data((SSD1963_HOR_RES - 1) & 0X00FF); 16c52: 4b40 ldr r3, [pc, #256] ; (16d54 ) 16c54: 4798 blx r3 16c56: 4b40 ldr r3, [pc, #256] ; (16d58 ) 16c58: 4798 blx r3 16c5a: 3801 subs r0, #1 16c5c: b2c2 uxtb r2, r0 port_base->OUTCLR.reg = pin_mask; 16c5e: 6165 str r5, [r4, #20] if(cmd_mode != false) { 16c60: 4b39 ldr r3, [pc, #228] ; (16d48 ) 16c62: 781b ldrb r3, [r3, #0] 16c64: 2b00 cmp r3, #0 16c66: d004 beq.n 16c72 port_base->OUTSET.reg = pin_mask; 16c68: 2120 movs r1, #32 16c6a: 61a1 str r1, [r4, #24] cmd_mode = false; 16c6c: 2100 movs r1, #0 16c6e: 4b36 ldr r3, [pc, #216] ; (16d48 ) 16c70: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16c72: 492b ldr r1, [pc, #172] ; (16d20 ) 16c74: 482b ldr r0, [pc, #172] ; (16d24 ) 16c76: 4b2c ldr r3, [pc, #176] ; (16d28 ) 16c78: 4798 blx r3 16c7a: 4c32 ldr r4, [pc, #200] ; (16d44 ) 16c7c: 2540 movs r5, #64 ; 0x40 16c7e: 61a5 str r5, [r4, #24] ssd1963_data(((SSD1963_VER_RES - 1) >> 8) & 0X00FF); //Set VDP 16c80: 4b34 ldr r3, [pc, #208] ; (16d54 ) 16c82: 4798 blx r3 16c84: 4b35 ldr r3, [pc, #212] ; (16d5c ) 16c86: 4798 blx r3 16c88: 1e42 subs r2, r0, #1 16c8a: 1212 asrs r2, r2, #8 port_base->OUTCLR.reg = pin_mask; 16c8c: 6165 str r5, [r4, #20] if(cmd_mode != false) { 16c8e: 4b2e ldr r3, [pc, #184] ; (16d48 ) 16c90: 781b ldrb r3, [r3, #0] 16c92: 2b00 cmp r3, #0 16c94: d004 beq.n 16ca0 port_base->OUTSET.reg = pin_mask; 16c96: 2120 movs r1, #32 16c98: 61a1 str r1, [r4, #24] cmd_mode = false; 16c9a: 2100 movs r1, #0 16c9c: 4b2a ldr r3, [pc, #168] ; (16d48 ) 16c9e: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16ca0: 20ff movs r0, #255 ; 0xff 16ca2: 4002 ands r2, r0 16ca4: 491e ldr r1, [pc, #120] ; (16d20 ) 16ca6: 481f ldr r0, [pc, #124] ; (16d24 ) 16ca8: 4b1f ldr r3, [pc, #124] ; (16d28 ) 16caa: 4798 blx r3 16cac: 4c25 ldr r4, [pc, #148] ; (16d44 ) 16cae: 2540 movs r5, #64 ; 0x40 16cb0: 61a5 str r5, [r4, #24] ssd1963_data((SSD1963_VER_RES - 1) & 0X00FF); 16cb2: 4b28 ldr r3, [pc, #160] ; (16d54 ) 16cb4: 4798 blx r3 16cb6: 4b29 ldr r3, [pc, #164] ; (16d5c ) 16cb8: 4798 blx r3 16cba: 3801 subs r0, #1 16cbc: b2c2 uxtb r2, r0 port_base->OUTCLR.reg = pin_mask; 16cbe: 6165 str r5, [r4, #20] if(cmd_mode != false) { 16cc0: 4b21 ldr r3, [pc, #132] ; (16d48 ) 16cc2: 781b ldrb r3, [r3, #0] 16cc4: 2b00 cmp r3, #0 16cc6: d004 beq.n 16cd2 port_base->OUTSET.reg = pin_mask; 16cc8: 2120 movs r1, #32 16cca: 61a1 str r1, [r4, #24] cmd_mode = false; 16ccc: 2100 movs r1, #0 16cce: 4b1e ldr r3, [pc, #120] ; (16d48 ) 16cd0: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16cd2: 4913 ldr r1, [pc, #76] ; (16d20 ) 16cd4: 4813 ldr r0, [pc, #76] ; (16d24 ) 16cd6: 4b14 ldr r3, [pc, #80] ; (16d28 ) 16cd8: 4798 blx r3 16cda: 4b1a ldr r3, [pc, #104] ; (16d44 ) 16cdc: 2240 movs r2, #64 ; 0x40 16cde: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16ce0: 615a str r2, [r3, #20] if(cmd_mode != false) { 16ce2: 4b19 ldr r3, [pc, #100] ; (16d48 ) 16ce4: 781b ldrb r3, [r3, #0] 16ce6: 2b00 cmp r3, #0 16ce8: d005 beq.n 16cf6 port_base->OUTSET.reg = pin_mask; 16cea: 3a20 subs r2, #32 16cec: 4b15 ldr r3, [pc, #84] ; (16d44 ) 16cee: 619a str r2, [r3, #24] cmd_mode = false; 16cf0: 2200 movs r2, #0 16cf2: 4b15 ldr r3, [pc, #84] ; (16d48 ) 16cf4: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16cf6: 2200 movs r2, #0 16cf8: 4909 ldr r1, [pc, #36] ; (16d20 ) 16cfa: 480a ldr r0, [pc, #40] ; (16d24 ) 16cfc: 4b0a ldr r3, [pc, #40] ; (16d28 ) 16cfe: 4798 blx r3 16d00: 4b10 ldr r3, [pc, #64] ; (16d44 ) 16d02: 2240 movs r2, #64 ; 0x40 16d04: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16d06: 615a str r2, [r3, #20] if(cmd_mode == false) { 16d08: 4b0f ldr r3, [pc, #60] ; (16d48 ) 16d0a: 781b ldrb r3, [r3, #0] 16d0c: 2b00 cmp r3, #0 16d0e: d129 bne.n 16d64 16d10: 3a20 subs r2, #32 16d12: 4b0c ldr r3, [pc, #48] ; (16d44 ) 16d14: 615a str r2, [r3, #20] cmd_mode = true; 16d16: 3a1f subs r2, #31 16d18: e022 b.n 16d60 16d1a: 46c0 nop ; (mov r8, r8) 16d1c: 0000aaaa .word 0x0000aaaa 16d20: 0000ffff .word 0x0000ffff 16d24: 41004480 .word 0x41004480 16d28: 00017635 .word 0x00017635 16d2c: 000010cd .word 0x000010cd 16d30: 00017bad .word 0x00017bad 16d34: 00001b57 .word 0x00001b57 16d38: 00017b6d .word 0x00017b6d 16d3c: 00001b58 .word 0x00001b58 16d40: 20000001 .word 0x20000001 16d44: 41004400 .word 0x41004400 16d48: 2000005c .word 0x2000005c 16d4c: 006acfbf .word 0x006acfbf 16d50: 006acfc0 .word 0x006acfc0 16d54: 0000f609 .word 0x0000f609 16d58: 0000f615 .word 0x0000f615 16d5c: 0000f63d .word 0x0000f63d 16d60: 4be5 ldr r3, [pc, #916] ; (170f8 ) 16d62: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 16d64: 22f0 movs r2, #240 ; 0xf0 16d66: 49e5 ldr r1, [pc, #916] ; (170fc ) 16d68: 48e5 ldr r0, [pc, #916] ; (17100 ) 16d6a: 4be6 ldr r3, [pc, #920] ; (17104 ) 16d6c: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 16d6e: 4be6 ldr r3, [pc, #920] ; (17108 ) 16d70: 2240 movs r2, #64 ; 0x40 16d72: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16d74: 615a str r2, [r3, #20] if(cmd_mode != false) { 16d76: 4be0 ldr r3, [pc, #896] ; (170f8 ) 16d78: 781b ldrb r3, [r3, #0] 16d7a: 2b00 cmp r3, #0 16d7c: d005 beq.n 16d8a port_base->OUTSET.reg = pin_mask; 16d7e: 3a20 subs r2, #32 16d80: 4be1 ldr r3, [pc, #900] ; (17108 ) 16d82: 619a str r2, [r3, #24] cmd_mode = false; 16d84: 2200 movs r2, #0 16d86: 4bdc ldr r3, [pc, #880] ; (170f8 ) 16d88: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16d8a: 2203 movs r2, #3 16d8c: 49db ldr r1, [pc, #876] ; (170fc ) 16d8e: 48dc ldr r0, [pc, #880] ; (17100 ) 16d90: 4bdc ldr r3, [pc, #880] ; (17104 ) 16d92: 4798 blx r3 16d94: 4bdc ldr r3, [pc, #880] ; (17108 ) 16d96: 2240 movs r2, #64 ; 0x40 16d98: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16d9a: 615a str r2, [r3, #20] if(cmd_mode == false) { 16d9c: 4bd6 ldr r3, [pc, #856] ; (170f8 ) 16d9e: 781b ldrb r3, [r3, #0] 16da0: 2b00 cmp r3, #0 16da2: d105 bne.n 16db0 16da4: 3a20 subs r2, #32 16da6: 4bd8 ldr r3, [pc, #864] ; (17108 ) 16da8: 615a str r2, [r3, #20] cmd_mode = true; 16daa: 3a1f subs r2, #31 16dac: 4bd2 ldr r3, [pc, #840] ; (170f8 ) 16dae: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 16db0: 223a movs r2, #58 ; 0x3a 16db2: 49d2 ldr r1, [pc, #840] ; (170fc ) 16db4: 48d2 ldr r0, [pc, #840] ; (17100 ) 16db6: 4bd3 ldr r3, [pc, #844] ; (17104 ) 16db8: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 16dba: 4bd3 ldr r3, [pc, #844] ; (17108 ) 16dbc: 2240 movs r2, #64 ; 0x40 16dbe: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16dc0: 615a str r2, [r3, #20] if(cmd_mode != false) { 16dc2: 4bcd ldr r3, [pc, #820] ; (170f8 ) 16dc4: 781b ldrb r3, [r3, #0] 16dc6: 2b00 cmp r3, #0 16dc8: d005 beq.n 16dd6 port_base->OUTSET.reg = pin_mask; 16dca: 3a20 subs r2, #32 16dcc: 4bce ldr r3, [pc, #824] ; (17108 ) 16dce: 619a str r2, [r3, #24] cmd_mode = false; 16dd0: 2200 movs r2, #0 16dd2: 4bc9 ldr r3, [pc, #804] ; (170f8 ) 16dd4: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16dd6: 2250 movs r2, #80 ; 0x50 16dd8: 49c8 ldr r1, [pc, #800] ; (170fc ) 16dda: 48c9 ldr r0, [pc, #804] ; (17100 ) 16ddc: 4bc9 ldr r3, [pc, #804] ; (17104 ) 16dde: 4798 blx r3 16de0: 4bc9 ldr r3, [pc, #804] ; (17108 ) 16de2: 2240 movs r2, #64 ; 0x40 16de4: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16de6: 615a str r2, [r3, #20] if(cmd_mode == false) { 16de8: 4bc3 ldr r3, [pc, #780] ; (170f8 ) 16dea: 781b ldrb r3, [r3, #0] 16dec: 2b00 cmp r3, #0 16dee: d105 bne.n 16dfc 16df0: 3a20 subs r2, #32 16df2: 4bc5 ldr r3, [pc, #788] ; (17108 ) 16df4: 615a str r2, [r3, #20] cmd_mode = true; 16df6: 3a1f subs r2, #31 16df8: 4bbf ldr r3, [pc, #764] ; (170f8 ) 16dfa: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 16dfc: 22e6 movs r2, #230 ; 0xe6 16dfe: 49bf ldr r1, [pc, #764] ; (170fc ) 16e00: 48bf ldr r0, [pc, #764] ; (17100 ) 16e02: 4bc0 ldr r3, [pc, #768] ; (17104 ) 16e04: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 16e06: 4bc0 ldr r3, [pc, #768] ; (17108 ) 16e08: 2240 movs r2, #64 ; 0x40 16e0a: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16e0c: 615a str r2, [r3, #20] if(cmd_mode != false) { 16e0e: 4bba ldr r3, [pc, #744] ; (170f8 ) 16e10: 781b ldrb r3, [r3, #0] 16e12: 2b00 cmp r3, #0 16e14: d005 beq.n 16e22 port_base->OUTSET.reg = pin_mask; 16e16: 3a20 subs r2, #32 16e18: 4bbb ldr r3, [pc, #748] ; (17108 ) 16e1a: 619a str r2, [r3, #24] cmd_mode = false; 16e1c: 2200 movs r2, #0 16e1e: 4bb6 ldr r3, [pc, #728] ; (170f8 ) 16e20: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16e22: 2204 movs r2, #4 16e24: 49b5 ldr r1, [pc, #724] ; (170fc ) 16e26: 48b6 ldr r0, [pc, #728] ; (17100 ) 16e28: 4bb6 ldr r3, [pc, #728] ; (17104 ) 16e2a: 4798 blx r3 16e2c: 4bb6 ldr r3, [pc, #728] ; (17108 ) 16e2e: 2240 movs r2, #64 ; 0x40 16e30: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16e32: 615a str r2, [r3, #20] if(cmd_mode != false) { 16e34: 4bb0 ldr r3, [pc, #704] ; (170f8 ) 16e36: 781b ldrb r3, [r3, #0] 16e38: 2b00 cmp r3, #0 16e3a: d005 beq.n 16e48 port_base->OUTSET.reg = pin_mask; 16e3c: 3a20 subs r2, #32 16e3e: 4bb2 ldr r3, [pc, #712] ; (17108 ) 16e40: 619a str r2, [r3, #24] cmd_mode = false; 16e42: 2200 movs r2, #0 16e44: 4bac ldr r3, [pc, #688] ; (170f8 ) 16e46: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16e48: 223a movs r2, #58 ; 0x3a 16e4a: 49ac ldr r1, [pc, #688] ; (170fc ) 16e4c: 48ac ldr r0, [pc, #688] ; (17100 ) 16e4e: 4bad ldr r3, [pc, #692] ; (17104 ) 16e50: 4798 blx r3 16e52: 4bad ldr r3, [pc, #692] ; (17108 ) 16e54: 2240 movs r2, #64 ; 0x40 16e56: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16e58: 615a str r2, [r3, #20] if(cmd_mode != false) { 16e5a: 4ba7 ldr r3, [pc, #668] ; (170f8 ) 16e5c: 781b ldrb r3, [r3, #0] 16e5e: 2b00 cmp r3, #0 16e60: d005 beq.n 16e6e port_base->OUTSET.reg = pin_mask; 16e62: 3a20 subs r2, #32 16e64: 4ba8 ldr r3, [pc, #672] ; (17108 ) 16e66: 619a str r2, [r3, #24] cmd_mode = false; 16e68: 2200 movs r2, #0 16e6a: 4ba3 ldr r3, [pc, #652] ; (170f8 ) 16e6c: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16e6e: 22b6 movs r2, #182 ; 0xb6 16e70: 49a2 ldr r1, [pc, #648] ; (170fc ) 16e72: 48a3 ldr r0, [pc, #652] ; (17100 ) 16e74: 4ba3 ldr r3, [pc, #652] ; (17104 ) 16e76: 4798 blx r3 16e78: 4ba3 ldr r3, [pc, #652] ; (17108 ) 16e7a: 2240 movs r2, #64 ; 0x40 16e7c: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16e7e: 615a str r2, [r3, #20] if(cmd_mode == false) { 16e80: 4b9d ldr r3, [pc, #628] ; (170f8 ) 16e82: 781b ldrb r3, [r3, #0] 16e84: 2b00 cmp r3, #0 16e86: d105 bne.n 16e94 16e88: 3a20 subs r2, #32 16e8a: 4b9f ldr r3, [pc, #636] ; (17108 ) 16e8c: 615a str r2, [r3, #20] cmd_mode = true; 16e8e: 3a1f subs r2, #31 16e90: 4b99 ldr r3, [pc, #612] ; (170f8 ) 16e92: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 16e94: 22b4 movs r2, #180 ; 0xb4 16e96: 4999 ldr r1, [pc, #612] ; (170fc ) 16e98: 4899 ldr r0, [pc, #612] ; (17100 ) 16e9a: 4b9a ldr r3, [pc, #616] ; (17104 ) 16e9c: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 16e9e: 4b9a ldr r3, [pc, #616] ; (17108 ) 16ea0: 2240 movs r2, #64 ; 0x40 16ea2: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16ea4: 615a str r2, [r3, #20] if(cmd_mode != false) { 16ea6: 4b94 ldr r3, [pc, #592] ; (170f8 ) 16ea8: 781b ldrb r3, [r3, #0] 16eaa: 2b00 cmp r3, #0 16eac: d005 beq.n 16eba port_base->OUTSET.reg = pin_mask; 16eae: 3a20 subs r2, #32 16eb0: 4b95 ldr r3, [pc, #596] ; (17108 ) 16eb2: 619a str r2, [r3, #24] cmd_mode = false; 16eb4: 2200 movs r2, #0 16eb6: 4b90 ldr r3, [pc, #576] ; (170f8 ) 16eb8: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16eba: 2204 movs r2, #4 16ebc: 498f ldr r1, [pc, #572] ; (170fc ) 16ebe: 4890 ldr r0, [pc, #576] ; (17100 ) 16ec0: 4b90 ldr r3, [pc, #576] ; (17104 ) 16ec2: 4798 blx r3 16ec4: 4b90 ldr r3, [pc, #576] ; (17108 ) 16ec6: 2240 movs r2, #64 ; 0x40 16ec8: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16eca: 615a str r2, [r3, #20] if(cmd_mode != false) { 16ecc: 4b8a ldr r3, [pc, #552] ; (170f8 ) 16ece: 781b ldrb r3, [r3, #0] 16ed0: 2b00 cmp r3, #0 16ed2: d005 beq.n 16ee0 port_base->OUTSET.reg = pin_mask; 16ed4: 3a20 subs r2, #32 16ed6: 4b8c ldr r3, [pc, #560] ; (17108 ) 16ed8: 619a str r2, [r3, #24] cmd_mode = false; 16eda: 2200 movs r2, #0 16edc: 4b86 ldr r3, [pc, #536] ; (170f8 ) 16ede: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16ee0: 2220 movs r2, #32 16ee2: 4986 ldr r1, [pc, #536] ; (170fc ) 16ee4: 4886 ldr r0, [pc, #536] ; (17100 ) 16ee6: 4b87 ldr r3, [pc, #540] ; (17104 ) 16ee8: 4798 blx r3 16eea: 4b87 ldr r3, [pc, #540] ; (17108 ) 16eec: 2240 movs r2, #64 ; 0x40 16eee: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16ef0: 615a str r2, [r3, #20] if(cmd_mode != false) { 16ef2: 4b81 ldr r3, [pc, #516] ; (170f8 ) 16ef4: 781b ldrb r3, [r3, #0] 16ef6: 2b00 cmp r3, #0 16ef8: d005 beq.n 16f06 port_base->OUTSET.reg = pin_mask; 16efa: 3a20 subs r2, #32 16efc: 4b82 ldr r3, [pc, #520] ; (17108 ) 16efe: 619a str r2, [r3, #24] cmd_mode = false; 16f00: 2200 movs r2, #0 16f02: 4b7d ldr r3, [pc, #500] ; (170f8 ) 16f04: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16f06: 2200 movs r2, #0 16f08: 497c ldr r1, [pc, #496] ; (170fc ) 16f0a: 487d ldr r0, [pc, #500] ; (17100 ) 16f0c: 4b7d ldr r3, [pc, #500] ; (17104 ) 16f0e: 4798 blx r3 16f10: 4b7d ldr r3, [pc, #500] ; (17108 ) 16f12: 2240 movs r2, #64 ; 0x40 16f14: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16f16: 615a str r2, [r3, #20] if(cmd_mode != false) { 16f18: 4b77 ldr r3, [pc, #476] ; (170f8 ) 16f1a: 781b ldrb r3, [r3, #0] 16f1c: 2b00 cmp r3, #0 16f1e: d005 beq.n 16f2c port_base->OUTSET.reg = pin_mask; 16f20: 3a20 subs r2, #32 16f22: 4b79 ldr r3, [pc, #484] ; (17108 ) 16f24: 619a str r2, [r3, #24] cmd_mode = false; 16f26: 2200 movs r2, #0 16f28: 4b73 ldr r3, [pc, #460] ; (170f8 ) 16f2a: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16f2c: 2230 movs r2, #48 ; 0x30 16f2e: 4973 ldr r1, [pc, #460] ; (170fc ) 16f30: 4873 ldr r0, [pc, #460] ; (17100 ) 16f32: 4b74 ldr r3, [pc, #464] ; (17104 ) 16f34: 4798 blx r3 16f36: 4b74 ldr r3, [pc, #464] ; (17108 ) 16f38: 2240 movs r2, #64 ; 0x40 16f3a: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16f3c: 615a str r2, [r3, #20] if(cmd_mode != false) { 16f3e: 4b6e ldr r3, [pc, #440] ; (170f8 ) 16f40: 781b ldrb r3, [r3, #0] 16f42: 2b00 cmp r3, #0 16f44: d005 beq.n 16f52 port_base->OUTSET.reg = pin_mask; 16f46: 3a20 subs r2, #32 16f48: 4b6f ldr r3, [pc, #444] ; (17108 ) 16f4a: 619a str r2, [r3, #24] cmd_mode = false; 16f4c: 2200 movs r2, #0 16f4e: 4b6a ldr r3, [pc, #424] ; (170f8 ) 16f50: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16f52: 2230 movs r2, #48 ; 0x30 16f54: 4969 ldr r1, [pc, #420] ; (170fc ) 16f56: 486a ldr r0, [pc, #424] ; (17100 ) 16f58: 4b6a ldr r3, [pc, #424] ; (17104 ) 16f5a: 4798 blx r3 16f5c: 4b6a ldr r3, [pc, #424] ; (17108 ) 16f5e: 2240 movs r2, #64 ; 0x40 16f60: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16f62: 615a str r2, [r3, #20] if(cmd_mode != false) { 16f64: 4b64 ldr r3, [pc, #400] ; (170f8 ) 16f66: 781b ldrb r3, [r3, #0] 16f68: 2b00 cmp r3, #0 16f6a: d005 beq.n 16f78 port_base->OUTSET.reg = pin_mask; 16f6c: 3a20 subs r2, #32 16f6e: 4b66 ldr r3, [pc, #408] ; (17108 ) 16f70: 619a str r2, [r3, #24] cmd_mode = false; 16f72: 2200 movs r2, #0 16f74: 4b60 ldr r3, [pc, #384] ; (170f8 ) 16f76: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16f78: 2200 movs r2, #0 16f7a: 4960 ldr r1, [pc, #384] ; (170fc ) 16f7c: 4860 ldr r0, [pc, #384] ; (17100 ) 16f7e: 4b61 ldr r3, [pc, #388] ; (17104 ) 16f80: 4798 blx r3 16f82: 4b61 ldr r3, [pc, #388] ; (17108 ) 16f84: 2240 movs r2, #64 ; 0x40 16f86: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16f88: 615a str r2, [r3, #20] if(cmd_mode != false) { 16f8a: 4b5b ldr r3, [pc, #364] ; (170f8 ) 16f8c: 781b ldrb r3, [r3, #0] 16f8e: 2b00 cmp r3, #0 16f90: d005 beq.n 16f9e port_base->OUTSET.reg = pin_mask; 16f92: 3a20 subs r2, #32 16f94: 4b5c ldr r3, [pc, #368] ; (17108 ) 16f96: 619a str r2, [r3, #24] cmd_mode = false; 16f98: 2200 movs r2, #0 16f9a: 4b57 ldr r3, [pc, #348] ; (170f8 ) 16f9c: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16f9e: 2200 movs r2, #0 16fa0: 4956 ldr r1, [pc, #344] ; (170fc ) 16fa2: 4857 ldr r0, [pc, #348] ; (17100 ) 16fa4: 4b57 ldr r3, [pc, #348] ; (17104 ) 16fa6: 4798 blx r3 16fa8: 4b57 ldr r3, [pc, #348] ; (17108 ) 16faa: 2240 movs r2, #64 ; 0x40 16fac: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16fae: 615a str r2, [r3, #20] if(cmd_mode != false) { 16fb0: 4b51 ldr r3, [pc, #324] ; (170f8 ) 16fb2: 781b ldrb r3, [r3, #0] 16fb4: 2b00 cmp r3, #0 16fb6: d005 beq.n 16fc4 port_base->OUTSET.reg = pin_mask; 16fb8: 3a20 subs r2, #32 16fba: 4b53 ldr r3, [pc, #332] ; (17108 ) 16fbc: 619a str r2, [r3, #24] cmd_mode = false; 16fbe: 2200 movs r2, #0 16fc0: 4b4d ldr r3, [pc, #308] ; (170f8 ) 16fc2: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 16fc4: 2200 movs r2, #0 16fc6: 494d ldr r1, [pc, #308] ; (170fc ) 16fc8: 484d ldr r0, [pc, #308] ; (17100 ) 16fca: 4b4e ldr r3, [pc, #312] ; (17104 ) 16fcc: 4798 blx r3 16fce: 4b4e ldr r3, [pc, #312] ; (17108 ) 16fd0: 2240 movs r2, #64 ; 0x40 16fd2: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16fd4: 615a str r2, [r3, #20] if(cmd_mode == false) { 16fd6: 4b48 ldr r3, [pc, #288] ; (170f8 ) 16fd8: 781b ldrb r3, [r3, #0] 16fda: 2b00 cmp r3, #0 16fdc: d105 bne.n 16fea 16fde: 3a20 subs r2, #32 16fe0: 4b49 ldr r3, [pc, #292] ; (17108 ) 16fe2: 615a str r2, [r3, #20] cmd_mode = true; 16fe4: 3a1f subs r2, #31 16fe6: 4b44 ldr r3, [pc, #272] ; (170f8 ) 16fe8: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 16fea: 22b6 movs r2, #182 ; 0xb6 16fec: 4943 ldr r1, [pc, #268] ; (170fc ) 16fee: 4844 ldr r0, [pc, #272] ; (17100 ) 16ff0: 4b44 ldr r3, [pc, #272] ; (17104 ) 16ff2: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 16ff4: 4b44 ldr r3, [pc, #272] ; (17108 ) 16ff6: 2240 movs r2, #64 ; 0x40 16ff8: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 16ffa: 615a str r2, [r3, #20] if(cmd_mode != false) { 16ffc: 4b3e ldr r3, [pc, #248] ; (170f8 ) 16ffe: 781b ldrb r3, [r3, #0] 17000: 2b00 cmp r3, #0 17002: d005 beq.n 17010 port_base->OUTSET.reg = pin_mask; 17004: 3a20 subs r2, #32 17006: 4b40 ldr r3, [pc, #256] ; (17108 ) 17008: 619a str r2, [r3, #24] cmd_mode = false; 1700a: 2200 movs r2, #0 1700c: 4b3a ldr r3, [pc, #232] ; (170f8 ) 1700e: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 17010: 2202 movs r2, #2 17012: 493a ldr r1, [pc, #232] ; (170fc ) 17014: 483a ldr r0, [pc, #232] ; (17100 ) 17016: 4b3b ldr r3, [pc, #236] ; (17104 ) 17018: 4798 blx r3 1701a: 4b3b ldr r3, [pc, #236] ; (17108 ) 1701c: 2240 movs r2, #64 ; 0x40 1701e: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 17020: 615a str r2, [r3, #20] if(cmd_mode != false) { 17022: 4b35 ldr r3, [pc, #212] ; (170f8 ) 17024: 781b ldrb r3, [r3, #0] 17026: 2b00 cmp r3, #0 17028: d005 beq.n 17036 port_base->OUTSET.reg = pin_mask; 1702a: 3a20 subs r2, #32 1702c: 4b36 ldr r3, [pc, #216] ; (17108 ) 1702e: 619a str r2, [r3, #24] cmd_mode = false; 17030: 2200 movs r2, #0 17032: 4b31 ldr r3, [pc, #196] ; (170f8 ) 17034: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 17036: 220d movs r2, #13 17038: 4930 ldr r1, [pc, #192] ; (170fc ) 1703a: 4831 ldr r0, [pc, #196] ; (17100 ) 1703c: 4b31 ldr r3, [pc, #196] ; (17104 ) 1703e: 4798 blx r3 17040: 4b31 ldr r3, [pc, #196] ; (17108 ) 17042: 2240 movs r2, #64 ; 0x40 17044: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 17046: 615a str r2, [r3, #20] if(cmd_mode != false) { 17048: 4b2b ldr r3, [pc, #172] ; (170f8 ) 1704a: 781b ldrb r3, [r3, #0] 1704c: 2b00 cmp r3, #0 1704e: d005 beq.n 1705c port_base->OUTSET.reg = pin_mask; 17050: 3a20 subs r2, #32 17052: 4b2d ldr r3, [pc, #180] ; (17108 ) 17054: 619a str r2, [r3, #24] cmd_mode = false; 17056: 2200 movs r2, #0 17058: 4b27 ldr r3, [pc, #156] ; (170f8 ) 1705a: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1705c: 2200 movs r2, #0 1705e: 4927 ldr r1, [pc, #156] ; (170fc ) 17060: 4827 ldr r0, [pc, #156] ; (17100 ) 17062: 4b28 ldr r3, [pc, #160] ; (17104 ) 17064: 4798 blx r3 17066: 4b28 ldr r3, [pc, #160] ; (17108 ) 17068: 2240 movs r2, #64 ; 0x40 1706a: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1706c: 615a str r2, [r3, #20] if(cmd_mode != false) { 1706e: 4b22 ldr r3, [pc, #136] ; (170f8 ) 17070: 781b ldrb r3, [r3, #0] 17072: 2b00 cmp r3, #0 17074: d005 beq.n 17082 port_base->OUTSET.reg = pin_mask; 17076: 3a20 subs r2, #32 17078: 4b23 ldr r3, [pc, #140] ; (17108 ) 1707a: 619a str r2, [r3, #24] cmd_mode = false; 1707c: 2200 movs r2, #0 1707e: 4b1e ldr r3, [pc, #120] ; (170f8 ) 17080: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 17082: 2216 movs r2, #22 17084: 491d ldr r1, [pc, #116] ; (170fc ) 17086: 481e ldr r0, [pc, #120] ; (17100 ) 17088: 4b1e ldr r3, [pc, #120] ; (17104 ) 1708a: 4798 blx r3 1708c: 4b1e ldr r3, [pc, #120] ; (17108 ) 1708e: 2240 movs r2, #64 ; 0x40 17090: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 17092: 615a str r2, [r3, #20] if(cmd_mode != false) { 17094: 4b18 ldr r3, [pc, #96] ; (170f8 ) 17096: 781b ldrb r3, [r3, #0] 17098: 2b00 cmp r3, #0 1709a: d005 beq.n 170a8 port_base->OUTSET.reg = pin_mask; 1709c: 3a20 subs r2, #32 1709e: 4b1a ldr r3, [pc, #104] ; (17108 ) 170a0: 619a str r2, [r3, #24] cmd_mode = false; 170a2: 2200 movs r2, #0 170a4: 4b14 ldr r3, [pc, #80] ; (170f8 ) 170a6: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 170a8: 2204 movs r2, #4 170aa: 4914 ldr r1, [pc, #80] ; (170fc ) 170ac: 4814 ldr r0, [pc, #80] ; (17100 ) 170ae: 4b15 ldr r3, [pc, #84] ; (17104 ) 170b0: 4798 blx r3 170b2: 4b15 ldr r3, [pc, #84] ; (17108 ) 170b4: 2240 movs r2, #64 ; 0x40 170b6: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 170b8: 615a str r2, [r3, #20] if(cmd_mode != false) { 170ba: 4b0f ldr r3, [pc, #60] ; (170f8 ) 170bc: 781b ldrb r3, [r3, #0] 170be: 2b00 cmp r3, #0 170c0: d005 beq.n 170ce port_base->OUTSET.reg = pin_mask; 170c2: 3a20 subs r2, #32 170c4: 4b10 ldr r3, [pc, #64] ; (17108 ) 170c6: 619a str r2, [r3, #24] cmd_mode = false; 170c8: 2200 movs r2, #0 170ca: 4b0b ldr r3, [pc, #44] ; (170f8 ) 170cc: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 170ce: 2200 movs r2, #0 170d0: 490a ldr r1, [pc, #40] ; (170fc ) 170d2: 480b ldr r0, [pc, #44] ; (17100 ) 170d4: 4b0b ldr r3, [pc, #44] ; (17104 ) 170d6: 4798 blx r3 170d8: 4b0b ldr r3, [pc, #44] ; (17108 ) 170da: 2240 movs r2, #64 ; 0x40 170dc: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 170de: 615a str r2, [r3, #20] if(cmd_mode != false) { 170e0: 4b05 ldr r3, [pc, #20] ; (170f8 ) 170e2: 781b ldrb r3, [r3, #0] 170e4: 2b00 cmp r3, #0 170e6: d011 beq.n 1710c port_base->OUTSET.reg = pin_mask; 170e8: 3a20 subs r2, #32 170ea: 4b07 ldr r3, [pc, #28] ; (17108 ) 170ec: 619a str r2, [r3, #24] cmd_mode = false; 170ee: 2200 movs r2, #0 170f0: 4b01 ldr r3, [pc, #4] ; (170f8 ) 170f2: 701a strb r2, [r3, #0] 170f4: e00a b.n 1710c 170f6: 46c0 nop ; (mov r8, r8) 170f8: 2000005c .word 0x2000005c 170fc: 0000ffff .word 0x0000ffff 17100: 41004480 .word 0x41004480 17104: 00017635 .word 0x00017635 17108: 41004400 .word 0x41004400 LV_DRV_DISP_PAR_WR_WORD(data); 1710c: 2200 movs r2, #0 1710e: 495c ldr r1, [pc, #368] ; (17280 ) 17110: 485c ldr r0, [pc, #368] ; (17284 ) 17112: 4b5d ldr r3, [pc, #372] ; (17288 ) 17114: 4798 blx r3 17116: 4b5d ldr r3, [pc, #372] ; (1728c ) 17118: 2240 movs r2, #64 ; 0x40 1711a: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1711c: 615a str r2, [r3, #20] if(cmd_mode == false) { 1711e: 4b5c ldr r3, [pc, #368] ; (17290 ) 17120: 781b ldrb r3, [r3, #0] 17122: 2b00 cmp r3, #0 17124: d105 bne.n 17132 17126: 3a20 subs r2, #32 17128: 4b58 ldr r3, [pc, #352] ; (1728c ) 1712a: 615a str r2, [r3, #20] cmd_mode = true; 1712c: 3a1f subs r2, #31 1712e: 4b58 ldr r3, [pc, #352] ; (17290 ) 17130: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 17132: 2229 movs r2, #41 ; 0x29 17134: 4952 ldr r1, [pc, #328] ; (17280 ) 17136: 4853 ldr r0, [pc, #332] ; (17284 ) 17138: 4b53 ldr r3, [pc, #332] ; (17288 ) 1713a: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1713c: 4b53 ldr r3, [pc, #332] ; (1728c ) 1713e: 2240 movs r2, #64 ; 0x40 17140: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 17142: 615a str r2, [r3, #20] if(cmd_mode == false) { 17144: 4b52 ldr r3, [pc, #328] ; (17290 ) 17146: 781b ldrb r3, [r3, #0] 17148: 2b00 cmp r3, #0 1714a: d105 bne.n 17158 1714c: 3a20 subs r2, #32 1714e: 4b4f ldr r3, [pc, #316] ; (1728c ) 17150: 615a str r2, [r3, #20] cmd_mode = true; 17152: 3a1f subs r2, #31 17154: 4b4e ldr r3, [pc, #312] ; (17290 ) 17156: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 17158: 22be movs r2, #190 ; 0xbe 1715a: 4949 ldr r1, [pc, #292] ; (17280 ) 1715c: 4849 ldr r0, [pc, #292] ; (17284 ) 1715e: 4b4a ldr r3, [pc, #296] ; (17288 ) 17160: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 17162: 4b4a ldr r3, [pc, #296] ; (1728c ) 17164: 2240 movs r2, #64 ; 0x40 17166: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 17168: 615a str r2, [r3, #20] if(cmd_mode != false) { 1716a: 4b49 ldr r3, [pc, #292] ; (17290 ) 1716c: 781b ldrb r3, [r3, #0] 1716e: 2b00 cmp r3, #0 17170: d005 beq.n 1717e port_base->OUTSET.reg = pin_mask; 17172: 3a20 subs r2, #32 17174: 4b45 ldr r3, [pc, #276] ; (1728c ) 17176: 619a str r2, [r3, #24] cmd_mode = false; 17178: 2200 movs r2, #0 1717a: 4b45 ldr r3, [pc, #276] ; (17290 ) 1717c: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1717e: 2206 movs r2, #6 17180: 493f ldr r1, [pc, #252] ; (17280 ) 17182: 4840 ldr r0, [pc, #256] ; (17284 ) 17184: 4b40 ldr r3, [pc, #256] ; (17288 ) 17186: 4798 blx r3 17188: 4b40 ldr r3, [pc, #256] ; (1728c ) 1718a: 2240 movs r2, #64 ; 0x40 1718c: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1718e: 615a str r2, [r3, #20] if(cmd_mode != false) { 17190: 4b3f ldr r3, [pc, #252] ; (17290 ) 17192: 781b ldrb r3, [r3, #0] 17194: 2b00 cmp r3, #0 17196: d005 beq.n 171a4 port_base->OUTSET.reg = pin_mask; 17198: 3a20 subs r2, #32 1719a: 4b3c ldr r3, [pc, #240] ; (1728c ) 1719c: 619a str r2, [r3, #24] cmd_mode = false; 1719e: 2200 movs r2, #0 171a0: 4b3b ldr r3, [pc, #236] ; (17290 ) 171a2: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 171a4: 2280 movs r2, #128 ; 0x80 171a6: 4936 ldr r1, [pc, #216] ; (17280 ) 171a8: 4836 ldr r0, [pc, #216] ; (17284 ) 171aa: 4b37 ldr r3, [pc, #220] ; (17288 ) 171ac: 4798 blx r3 171ae: 4b37 ldr r3, [pc, #220] ; (1728c ) 171b0: 2240 movs r2, #64 ; 0x40 171b2: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 171b4: 615a str r2, [r3, #20] if(cmd_mode != false) { 171b6: 4b36 ldr r3, [pc, #216] ; (17290 ) 171b8: 781b ldrb r3, [r3, #0] 171ba: 2b00 cmp r3, #0 171bc: d005 beq.n 171ca port_base->OUTSET.reg = pin_mask; 171be: 3a20 subs r2, #32 171c0: 4b32 ldr r3, [pc, #200] ; (1728c ) 171c2: 619a str r2, [r3, #24] cmd_mode = false; 171c4: 2200 movs r2, #0 171c6: 4b32 ldr r3, [pc, #200] ; (17290 ) 171c8: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 171ca: 2201 movs r2, #1 171cc: 492c ldr r1, [pc, #176] ; (17280 ) 171ce: 482d ldr r0, [pc, #180] ; (17284 ) 171d0: 4b2d ldr r3, [pc, #180] ; (17288 ) 171d2: 4798 blx r3 171d4: 4b2d ldr r3, [pc, #180] ; (1728c ) 171d6: 2240 movs r2, #64 ; 0x40 171d8: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 171da: 615a str r2, [r3, #20] if(cmd_mode != false) { 171dc: 4b2c ldr r3, [pc, #176] ; (17290 ) 171de: 781b ldrb r3, [r3, #0] 171e0: 2b00 cmp r3, #0 171e2: d005 beq.n 171f0 port_base->OUTSET.reg = pin_mask; 171e4: 3a20 subs r2, #32 171e6: 4b29 ldr r3, [pc, #164] ; (1728c ) 171e8: 619a str r2, [r3, #24] cmd_mode = false; 171ea: 2200 movs r2, #0 171ec: 4b28 ldr r3, [pc, #160] ; (17290 ) 171ee: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 171f0: 22f0 movs r2, #240 ; 0xf0 171f2: 4923 ldr r1, [pc, #140] ; (17280 ) 171f4: 4823 ldr r0, [pc, #140] ; (17284 ) 171f6: 4b24 ldr r3, [pc, #144] ; (17288 ) 171f8: 4798 blx r3 171fa: 4b24 ldr r3, [pc, #144] ; (1728c ) 171fc: 2240 movs r2, #64 ; 0x40 171fe: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 17200: 615a str r2, [r3, #20] if(cmd_mode != false) { 17202: 4b23 ldr r3, [pc, #140] ; (17290 ) 17204: 781b ldrb r3, [r3, #0] 17206: 2b00 cmp r3, #0 17208: d005 beq.n 17216 port_base->OUTSET.reg = pin_mask; 1720a: 3a20 subs r2, #32 1720c: 4b1f ldr r3, [pc, #124] ; (1728c ) 1720e: 619a str r2, [r3, #24] cmd_mode = false; 17210: 2200 movs r2, #0 17212: 4b1f ldr r3, [pc, #124] ; (17290 ) 17214: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 17216: 2200 movs r2, #0 17218: 4919 ldr r1, [pc, #100] ; (17280 ) 1721a: 481a ldr r0, [pc, #104] ; (17284 ) 1721c: 4b1a ldr r3, [pc, #104] ; (17288 ) 1721e: 4798 blx r3 17220: 4b1a ldr r3, [pc, #104] ; (1728c ) 17222: 2240 movs r2, #64 ; 0x40 17224: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 17226: 615a str r2, [r3, #20] if(cmd_mode != false) { 17228: 4b19 ldr r3, [pc, #100] ; (17290 ) 1722a: 781b ldrb r3, [r3, #0] 1722c: 2b00 cmp r3, #0 1722e: d005 beq.n 1723c port_base->OUTSET.reg = pin_mask; 17230: 3a20 subs r2, #32 17232: 4b16 ldr r3, [pc, #88] ; (1728c ) 17234: 619a str r2, [r3, #24] cmd_mode = false; 17236: 2200 movs r2, #0 17238: 4b15 ldr r3, [pc, #84] ; (17290 ) 1723a: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1723c: 2200 movs r2, #0 1723e: 4910 ldr r1, [pc, #64] ; (17280 ) 17240: 4810 ldr r0, [pc, #64] ; (17284 ) 17242: 4b11 ldr r3, [pc, #68] ; (17288 ) 17244: 4798 blx r3 17246: 2240 movs r2, #64 ; 0x40 17248: 4b10 ldr r3, [pc, #64] ; (1728c ) 1724a: 619a str r2, [r3, #24] LV_DRV_DELAY_MS(30); 1724c: 2000 movs r0, #0 1724e: 4b11 ldr r3, [pc, #68] ; (17294 ) 17250: 4798 blx r3 17252: 0002 movs r2, r0 17254: 2300 movs r3, #0 17256: 0f11 lsrs r1, r2, #28 17258: 0110 lsls r0, r2, #4 1725a: 1a80 subs r0, r0, r2 1725c: 4199 sbcs r1, r3 1725e: 1800 adds r0, r0, r0 17260: 4149 adcs r1, r1 17262: 4a0d ldr r2, [pc, #52] ; (17298 ) 17264: 2300 movs r3, #0 17266: 1880 adds r0, r0, r2 17268: 4159 adcs r1, r3 1726a: 4a0c ldr r2, [pc, #48] ; (1729c ) 1726c: 2300 movs r3, #0 1726e: 4c0c ldr r4, [pc, #48] ; (172a0 ) 17270: 47a0 blx r4 17272: 4b0c ldr r3, [pc, #48] ; (172a4 ) 17274: 4798 blx r3 } 17276: bc1c pop {r2, r3, r4} 17278: 4690 mov r8, r2 1727a: 4699 mov r9, r3 1727c: 46a2 mov sl, r4 1727e: bdf0 pop {r4, r5, r6, r7, pc} 17280: 0000ffff .word 0x0000ffff 17284: 41004480 .word 0x41004480 17288: 00017635 .word 0x00017635 1728c: 41004400 .word 0x41004400 17290: 2000005c .word 0x2000005c 17294: 000010cd .word 0x000010cd 17298: 00001b57 .word 0x00001b57 1729c: 00001b58 .word 0x00001b58 172a0: 00017b6d .word 0x00017b6d 172a4: 20000001 .word 0x20000001 000172a8 : { 172a8: b5f0 push {r4, r5, r6, r7, lr} 172aa: 46de mov lr, fp 172ac: 4657 mov r7, sl 172ae: 464e mov r6, r9 172b0: 4645 mov r5, r8 172b2: b5e0 push {r5, r6, r7, lr} 172b4: b083 sub sp, #12 172b6: 9000 str r0, [sp, #0] 172b8: 000f movs r7, r1 172ba: 0016 movs r6, r2 if(area->x2 < 0) return; 172bc: 2204 movs r2, #4 172be: 5e8b ldrsh r3, [r1, r2] 172c0: 2b00 cmp r3, #0 172c2: db0c blt.n 172de if(area->y2 < 0) return; 172c4: 2206 movs r2, #6 172c6: 5e8b ldrsh r3, [r1, r2] 172c8: 2b00 cmp r3, #0 172ca: db08 blt.n 172de if(area->x1 > SSD1963_HOR_RES - 1) return; 172cc: 2300 movs r3, #0 172ce: 5ecc ldrsh r4, [r1, r3] 172d0: 4bb2 ldr r3, [pc, #712] ; (1759c ) 172d2: 4798 blx r3 172d4: 4bb2 ldr r3, [pc, #712] ; (175a0 ) 172d6: 4798 blx r3 172d8: 3801 subs r0, #1 172da: 4284 cmp r4, r0 172dc: dd06 ble.n 172ec } 172de: b003 add sp, #12 172e0: bc3c pop {r2, r3, r4, r5} 172e2: 4690 mov r8, r2 172e4: 4699 mov r9, r3 172e6: 46a2 mov sl, r4 172e8: 46ab mov fp, r5 172ea: bdf0 pop {r4, r5, r6, r7, pc} if(area->y1 > SSD1963_VER_RES - 1) return; 172ec: 2302 movs r3, #2 172ee: 5efc ldrsh r4, [r7, r3] 172f0: 4baa ldr r3, [pc, #680] ; (1759c ) 172f2: 4798 blx r3 172f4: 4bab ldr r3, [pc, #684] ; (175a4 ) 172f6: 4798 blx r3 172f8: 3801 subs r0, #1 172fa: 4284 cmp r4, r0 172fc: dcef bgt.n 172de int32_t act_x1 = area->x1 < 0 ? 0 : area->x1; 172fe: 883b ldrh r3, [r7, #0] 17300: 1c1d adds r5, r3, #0 17302: b21b sxth r3, r3 17304: 2b00 cmp r3, #0 17306: da00 bge.n 1730a 17308: e136 b.n 17578 1730a: b22b sxth r3, r5 1730c: 4699 mov r9, r3 int32_t act_y1 = area->y1 < 0 ? 0 : area->y1; 1730e: 887b ldrh r3, [r7, #2] 17310: 1c1c adds r4, r3, #0 17312: b21b sxth r3, r3 17314: 2b00 cmp r3, #0 17316: da00 bge.n 1731a 17318: e130 b.n 1757c 1731a: b224 sxth r4, r4 1731c: 46a3 mov fp, r4 int32_t act_x2 = area->x2 > SSD1963_HOR_RES - 1 ? SSD1963_HOR_RES - 1 : area->x2; 1731e: 2304 movs r3, #4 17320: 5efd ldrsh r5, [r7, r3] 17322: 4b9e ldr r3, [pc, #632] ; (1759c ) 17324: 4798 blx r3 17326: 4b9e ldr r3, [pc, #632] ; (175a0 ) 17328: 4798 blx r3 1732a: 3801 subs r0, #1 1732c: 4285 cmp r5, r0 1732e: dd00 ble.n 17332 17330: e126 b.n 17580 17332: 2304 movs r3, #4 17334: 5efd ldrsh r5, [r7, r3] int32_t act_y2 = area->y2 > SSD1963_VER_RES - 1 ? SSD1963_VER_RES - 1 : area->y2; 17336: 2206 movs r2, #6 17338: 5ebb ldrsh r3, [r7, r2] 1733a: 469a mov sl, r3 1733c: 4b97 ldr r3, [pc, #604] ; (1759c ) 1733e: 4798 blx r3 17340: 4b98 ldr r3, [pc, #608] ; (175a4 ) 17342: 4798 blx r3 17344: 3801 subs r0, #1 17346: 4582 cmp sl, r0 17348: dd00 ble.n 1734c 1734a: e11f b.n 1758c 1734c: 2206 movs r2, #6 1734e: 5ebb ldrsh r3, [r7, r2] 17350: 469a mov sl, r3 port_base->OUTCLR.reg = pin_mask; 17352: 2240 movs r2, #64 ; 0x40 17354: 4b94 ldr r3, [pc, #592] ; (175a8 ) 17356: 615a str r2, [r3, #20] if(cmd_mode == false) { 17358: 4b94 ldr r3, [pc, #592] ; (175ac ) 1735a: 781b ldrb r3, [r3, #0] 1735c: 2b00 cmp r3, #0 1735e: d105 bne.n 1736c 17360: 3a20 subs r2, #32 17362: 4b91 ldr r3, [pc, #580] ; (175a8 ) 17364: 615a str r2, [r3, #20] cmd_mode = true; 17366: 3a1f subs r2, #31 17368: 4b90 ldr r3, [pc, #576] ; (175ac ) 1736a: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1736c: 222a movs r2, #42 ; 0x2a 1736e: 4990 ldr r1, [pc, #576] ; (175b0 ) 17370: 4890 ldr r0, [pc, #576] ; (175b4 ) 17372: 4b91 ldr r3, [pc, #580] ; (175b8 ) 17374: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 17376: 4b8c ldr r3, [pc, #560] ; (175a8 ) 17378: 2140 movs r1, #64 ; 0x40 1737a: 6199 str r1, [r3, #24] ssd1963_data(act_x1 >> 8); 1737c: 464a mov r2, r9 1737e: 1210 asrs r0, r2, #8 port_base->OUTCLR.reg = pin_mask; 17380: 6159 str r1, [r3, #20] if(cmd_mode != false) { 17382: 4b8a ldr r3, [pc, #552] ; (175ac ) 17384: 781b ldrb r3, [r3, #0] 17386: 2b00 cmp r3, #0 17388: d005 beq.n 17396 port_base->OUTSET.reg = pin_mask; 1738a: 2220 movs r2, #32 1738c: 4b86 ldr r3, [pc, #536] ; (175a8 ) 1738e: 619a str r2, [r3, #24] cmd_mode = false; 17390: 2200 movs r2, #0 17392: 4b86 ldr r3, [pc, #536] ; (175ac ) 17394: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 17396: 22ff movs r2, #255 ; 0xff 17398: 4002 ands r2, r0 1739a: 4985 ldr r1, [pc, #532] ; (175b0 ) 1739c: 4885 ldr r0, [pc, #532] ; (175b4 ) 1739e: 4b86 ldr r3, [pc, #536] ; (175b8 ) 173a0: 4798 blx r3 173a2: 4b81 ldr r3, [pc, #516] ; (175a8 ) 173a4: 2140 movs r1, #64 ; 0x40 173a6: 6199 str r1, [r3, #24] ssd1963_data(0x00FF & act_x1); 173a8: 464a mov r2, r9 173aa: 4668 mov r0, sp 173ac: 7102 strb r2, [r0, #4] 173ae: 7902 ldrb r2, [r0, #4] port_base->OUTCLR.reg = pin_mask; 173b0: 6159 str r1, [r3, #20] if(cmd_mode != false) { 173b2: 4b7e ldr r3, [pc, #504] ; (175ac ) 173b4: 781b ldrb r3, [r3, #0] 173b6: 2b00 cmp r3, #0 173b8: d005 beq.n 173c6 port_base->OUTSET.reg = pin_mask; 173ba: 3920 subs r1, #32 173bc: 4b7a ldr r3, [pc, #488] ; (175a8 ) 173be: 6199 str r1, [r3, #24] cmd_mode = false; 173c0: 2100 movs r1, #0 173c2: 4b7a ldr r3, [pc, #488] ; (175ac ) 173c4: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 173c6: 497a ldr r1, [pc, #488] ; (175b0 ) 173c8: 487a ldr r0, [pc, #488] ; (175b4 ) 173ca: 4b7b ldr r3, [pc, #492] ; (175b8 ) 173cc: 4798 blx r3 173ce: 4b76 ldr r3, [pc, #472] ; (175a8 ) 173d0: 2140 movs r1, #64 ; 0x40 173d2: 6199 str r1, [r3, #24] ssd1963_data(act_x2 >> 8); 173d4: 1228 asrs r0, r5, #8 port_base->OUTCLR.reg = pin_mask; 173d6: 6159 str r1, [r3, #20] if(cmd_mode != false) { 173d8: 4b74 ldr r3, [pc, #464] ; (175ac ) 173da: 781b ldrb r3, [r3, #0] 173dc: 2b00 cmp r3, #0 173de: d005 beq.n 173ec port_base->OUTSET.reg = pin_mask; 173e0: 2220 movs r2, #32 173e2: 4b71 ldr r3, [pc, #452] ; (175a8 ) 173e4: 619a str r2, [r3, #24] cmd_mode = false; 173e6: 2200 movs r2, #0 173e8: 4b70 ldr r3, [pc, #448] ; (175ac ) 173ea: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 173ec: 22ff movs r2, #255 ; 0xff 173ee: 4002 ands r2, r0 173f0: 496f ldr r1, [pc, #444] ; (175b0 ) 173f2: 4870 ldr r0, [pc, #448] ; (175b4 ) 173f4: 4b70 ldr r3, [pc, #448] ; (175b8 ) 173f6: 4798 blx r3 173f8: 4b6b ldr r3, [pc, #428] ; (175a8 ) 173fa: 2240 movs r2, #64 ; 0x40 173fc: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 173fe: 615a str r2, [r3, #20] if(cmd_mode != false) { 17400: 4b6a ldr r3, [pc, #424] ; (175ac ) 17402: 781b ldrb r3, [r3, #0] 17404: 2b00 cmp r3, #0 17406: d005 beq.n 17414 port_base->OUTSET.reg = pin_mask; 17408: 3a20 subs r2, #32 1740a: 4b67 ldr r3, [pc, #412] ; (175a8 ) 1740c: 619a str r2, [r3, #24] cmd_mode = false; 1740e: 2200 movs r2, #0 17410: 4b66 ldr r3, [pc, #408] ; (175ac ) 17412: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 17414: 22ff movs r2, #255 ; 0xff 17416: 402a ands r2, r5 17418: 4965 ldr r1, [pc, #404] ; (175b0 ) 1741a: 4866 ldr r0, [pc, #408] ; (175b4 ) 1741c: 4b66 ldr r3, [pc, #408] ; (175b8 ) 1741e: 4798 blx r3 17420: 4b61 ldr r3, [pc, #388] ; (175a8 ) 17422: 2240 movs r2, #64 ; 0x40 17424: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 17426: 615a str r2, [r3, #20] if(cmd_mode == false) { 17428: 4b60 ldr r3, [pc, #384] ; (175ac ) 1742a: 781b ldrb r3, [r3, #0] 1742c: 2b00 cmp r3, #0 1742e: d105 bne.n 1743c 17430: 3a20 subs r2, #32 17432: 4b5d ldr r3, [pc, #372] ; (175a8 ) 17434: 615a str r2, [r3, #20] cmd_mode = true; 17436: 3a1f subs r2, #31 17438: 4b5c ldr r3, [pc, #368] ; (175ac ) 1743a: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1743c: 222b movs r2, #43 ; 0x2b 1743e: 495c ldr r1, [pc, #368] ; (175b0 ) 17440: 485c ldr r0, [pc, #368] ; (175b4 ) 17442: 4b5d ldr r3, [pc, #372] ; (175b8 ) 17444: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 17446: 4b58 ldr r3, [pc, #352] ; (175a8 ) 17448: 2140 movs r1, #64 ; 0x40 1744a: 6199 str r1, [r3, #24] ssd1963_data(act_y1 >> 8); 1744c: 465a mov r2, fp 1744e: 1210 asrs r0, r2, #8 port_base->OUTCLR.reg = pin_mask; 17450: 6159 str r1, [r3, #20] if(cmd_mode != false) { 17452: 4b56 ldr r3, [pc, #344] ; (175ac ) 17454: 781b ldrb r3, [r3, #0] 17456: 2b00 cmp r3, #0 17458: d005 beq.n 17466 port_base->OUTSET.reg = pin_mask; 1745a: 2220 movs r2, #32 1745c: 4b52 ldr r3, [pc, #328] ; (175a8 ) 1745e: 619a str r2, [r3, #24] cmd_mode = false; 17460: 2200 movs r2, #0 17462: 4b52 ldr r3, [pc, #328] ; (175ac ) 17464: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 17466: 22ff movs r2, #255 ; 0xff 17468: 4002 ands r2, r0 1746a: 4951 ldr r1, [pc, #324] ; (175b0 ) 1746c: 4851 ldr r0, [pc, #324] ; (175b4 ) 1746e: 4b52 ldr r3, [pc, #328] ; (175b8 ) 17470: 4798 blx r3 17472: 4b4d ldr r3, [pc, #308] ; (175a8 ) 17474: 2140 movs r1, #64 ; 0x40 17476: 6199 str r1, [r3, #24] ssd1963_data(0x00FF & act_y1); 17478: b2e2 uxtb r2, r4 port_base->OUTCLR.reg = pin_mask; 1747a: 6159 str r1, [r3, #20] if(cmd_mode != false) { 1747c: 4b4b ldr r3, [pc, #300] ; (175ac ) 1747e: 781b ldrb r3, [r3, #0] 17480: 2b00 cmp r3, #0 17482: d005 beq.n 17490 port_base->OUTSET.reg = pin_mask; 17484: 3920 subs r1, #32 17486: 4b48 ldr r3, [pc, #288] ; (175a8 ) 17488: 6199 str r1, [r3, #24] cmd_mode = false; 1748a: 2100 movs r1, #0 1748c: 4b47 ldr r3, [pc, #284] ; (175ac ) 1748e: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 17490: 4947 ldr r1, [pc, #284] ; (175b0 ) 17492: 4848 ldr r0, [pc, #288] ; (175b4 ) 17494: 4b48 ldr r3, [pc, #288] ; (175b8 ) 17496: 4798 blx r3 17498: 4b43 ldr r3, [pc, #268] ; (175a8 ) 1749a: 2140 movs r1, #64 ; 0x40 1749c: 6199 str r1, [r3, #24] ssd1963_data(act_y2 >> 8); 1749e: 4652 mov r2, sl 174a0: 1210 asrs r0, r2, #8 port_base->OUTCLR.reg = pin_mask; 174a2: 6159 str r1, [r3, #20] if(cmd_mode != false) { 174a4: 4b41 ldr r3, [pc, #260] ; (175ac ) 174a6: 781b ldrb r3, [r3, #0] 174a8: 2b00 cmp r3, #0 174aa: d005 beq.n 174b8 port_base->OUTSET.reg = pin_mask; 174ac: 2220 movs r2, #32 174ae: 4b3e ldr r3, [pc, #248] ; (175a8 ) 174b0: 619a str r2, [r3, #24] cmd_mode = false; 174b2: 2200 movs r2, #0 174b4: 4b3d ldr r3, [pc, #244] ; (175ac ) 174b6: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 174b8: 22ff movs r2, #255 ; 0xff 174ba: 4002 ands r2, r0 174bc: 493c ldr r1, [pc, #240] ; (175b0 ) 174be: 483d ldr r0, [pc, #244] ; (175b4 ) 174c0: 4b3d ldr r3, [pc, #244] ; (175b8 ) 174c2: 4798 blx r3 174c4: 4b38 ldr r3, [pc, #224] ; (175a8 ) 174c6: 2240 movs r2, #64 ; 0x40 174c8: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 174ca: 615a str r2, [r3, #20] if(cmd_mode != false) { 174cc: 4b37 ldr r3, [pc, #220] ; (175ac ) 174ce: 781b ldrb r3, [r3, #0] 174d0: 2b00 cmp r3, #0 174d2: d005 beq.n 174e0 port_base->OUTSET.reg = pin_mask; 174d4: 3a20 subs r2, #32 174d6: 4b34 ldr r3, [pc, #208] ; (175a8 ) 174d8: 619a str r2, [r3, #24] cmd_mode = false; 174da: 2200 movs r2, #0 174dc: 4b33 ldr r3, [pc, #204] ; (175ac ) 174de: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 174e0: 22ff movs r2, #255 ; 0xff 174e2: 4653 mov r3, sl 174e4: 401a ands r2, r3 174e6: 4932 ldr r1, [pc, #200] ; (175b0 ) 174e8: 4832 ldr r0, [pc, #200] ; (175b4 ) 174ea: 4b33 ldr r3, [pc, #204] ; (175b8 ) 174ec: 4798 blx r3 174ee: 4b2e ldr r3, [pc, #184] ; (175a8 ) 174f0: 2240 movs r2, #64 ; 0x40 174f2: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 174f4: 615a str r2, [r3, #20] if(cmd_mode == false) { 174f6: 4b2d ldr r3, [pc, #180] ; (175ac ) 174f8: 781b ldrb r3, [r3, #0] 174fa: 2b00 cmp r3, #0 174fc: d105 bne.n 1750a 174fe: 3a20 subs r2, #32 17500: 4b29 ldr r3, [pc, #164] ; (175a8 ) 17502: 615a str r2, [r3, #20] cmd_mode = true; 17504: 3a1f subs r2, #31 17506: 4b29 ldr r3, [pc, #164] ; (175ac ) 17508: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1750a: 222c movs r2, #44 ; 0x2c 1750c: 4928 ldr r1, [pc, #160] ; (175b0 ) 1750e: 4829 ldr r0, [pc, #164] ; (175b4 ) 17510: 4b29 ldr r3, [pc, #164] ; (175b8 ) 17512: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 17514: 2240 movs r2, #64 ; 0x40 17516: 4b24 ldr r3, [pc, #144] ; (175a8 ) 17518: 619a str r2, [r3, #24] uint16_t full_w = area->x2 - area->x1 + 1; 1751a: 88bb ldrh r3, [r7, #4] 1751c: 3301 adds r3, #1 1751e: 883a ldrh r2, [r7, #0] 17520: 1a9b subs r3, r3, r2 17522: b29f uxth r7, r3 if(cmd_mode != false) { 17524: 4a21 ldr r2, [pc, #132] ; (175ac ) 17526: 7812 ldrb r2, [r2, #0] 17528: 2a00 cmp r2, #0 1752a: d005 beq.n 17538 1752c: 2120 movs r1, #32 1752e: 4a1e ldr r2, [pc, #120] ; (175a8 ) 17530: 6191 str r1, [r2, #24] cmd_mode = false; 17532: 2100 movs r1, #0 17534: 4a1d ldr r2, [pc, #116] ; (175ac ) 17536: 7011 strb r1, [r2, #0] port_base->OUTCLR.reg = pin_mask; 17538: 2140 movs r1, #64 ; 0x40 1753a: 4a1b ldr r2, [pc, #108] ; (175a8 ) 1753c: 6151 str r1, [r2, #20] uint16_t act_w = act_x2 - act_x1 + 1; 1753e: 464b mov r3, r9 17540: 1aed subs r5, r5, r3 17542: 3501 adds r5, #1 17544: b2ad uxth r5, r5 for(i = act_y1; i <= act_y2; i++) { 17546: 45da cmp sl, fp 17548: db0f blt.n 1756a color_p += full_w; 1754a: 007f lsls r7, r7, #1 LV_DRV_DISP_PAR_WR_ARRAY((uint16_t *)color_p, act_w); 1754c: 4b1b ldr r3, [pc, #108] ; (175bc ) 1754e: 4698 mov r8, r3 17550: 9501 str r5, [sp, #4] 17552: 003d movs r5, r7 17554: 4657 mov r7, sl 17556: 9b01 ldr r3, [sp, #4] 17558: 0032 movs r2, r6 1755a: 4915 ldr r1, [pc, #84] ; (175b0 ) 1755c: 4815 ldr r0, [pc, #84] ; (175b4 ) 1755e: 47c0 blx r8 color_p += full_w; 17560: 1976 adds r6, r6, r5 17562: 3401 adds r4, #1 17564: b224 sxth r4, r4 for(i = act_y1; i <= act_y2; i++) { 17566: 42a7 cmp r7, r4 17568: daf5 bge.n 17556 port_base->OUTSET.reg = pin_mask; 1756a: 2240 movs r2, #64 ; 0x40 1756c: 4b0e ldr r3, [pc, #56] ; (175a8 ) 1756e: 619a str r2, [r3, #24] lv_disp_flush_ready(disp_drv); 17570: 9800 ldr r0, [sp, #0] 17572: 4b13 ldr r3, [pc, #76] ; (175c0 ) 17574: 4798 blx r3 17576: e6b2 b.n 172de int32_t act_x1 = area->x1 < 0 ? 0 : area->x1; 17578: 2500 movs r5, #0 1757a: e6c6 b.n 1730a int32_t act_y1 = area->y1 < 0 ? 0 : area->y1; 1757c: 2400 movs r4, #0 1757e: e6cc b.n 1731a int32_t act_x2 = area->x2 > SSD1963_HOR_RES - 1 ? SSD1963_HOR_RES - 1 : area->x2; 17580: 4b06 ldr r3, [pc, #24] ; (1759c ) 17582: 4798 blx r3 17584: 4b06 ldr r3, [pc, #24] ; (175a0 ) 17586: 4798 blx r3 17588: 1e45 subs r5, r0, #1 1758a: e6d4 b.n 17336 int32_t act_y2 = area->y2 > SSD1963_VER_RES - 1 ? SSD1963_VER_RES - 1 : area->y2; 1758c: 4b03 ldr r3, [pc, #12] ; (1759c ) 1758e: 4798 blx r3 17590: 4b04 ldr r3, [pc, #16] ; (175a4 ) 17592: 4798 blx r3 17594: 1e43 subs r3, r0, #1 17596: 469a mov sl, r3 17598: e6db b.n 17352 1759a: 46c0 nop ; (mov r8, r8) 1759c: 0000f609 .word 0x0000f609 175a0: 0000f615 .word 0x0000f615 175a4: 0000f63d .word 0x0000f63d 175a8: 41004400 .word 0x41004400 175ac: 2000005c .word 0x2000005c 175b0: 0000ffff .word 0x0000ffff 175b4: 41004480 .word 0x41004480 175b8: 00017635 .word 0x00017635 175bc: 000176bd .word 0x000176bd 175c0: 0000f6d9 .word 0x0000f6d9 000175c4 : #include "p_gpio.h" void p_gpio_init(void) { 175c4: b530 push {r4, r5, lr} 175c6: b083 sub sp, #12 config->powersave = false; 175c8: aa01 add r2, sp, #4 175ca: 2400 movs r4, #0 175cc: 7094 strb r4, [r2, #2] struct port_config data_port_config; port_get_config_defaults(&data_port_config); data_port_config.direction = SSD1963_TFT_DATA_DIR; 175ce: 2501 movs r5, #1 175d0: 7015 strb r5, [r2, #0] data_port_config.input_pull = SSD1963_TFT_DATA_PULL; 175d2: 7054 strb r4, [r2, #1] port_group_set_config(SSD1963_TFT_DATA_PORT, SSD1963_TFT_DATA_MASK, &data_port_config); 175d4: 4912 ldr r1, [pc, #72] ; (17620 ) 175d6: 4813 ldr r0, [pc, #76] ; (17624 ) 175d8: 4b13 ldr r3, [pc, #76] ; (17628 ) 175da: 4798 blx r3 175dc: 466b mov r3, sp 175de: 709c strb r4, [r3, #2] struct port_config ssd1963_ctrl_pins_conf; port_get_config_defaults(&ssd1963_ctrl_pins_conf); ssd1963_ctrl_pins_conf.input_pull = PORT_PIN_PULL_NONE; 175e0: 705c strb r4, [r3, #1] ssd1963_ctrl_pins_conf.direction = PORT_PIN_DIR_OUTPUT; 175e2: 701d strb r5, [r3, #0] port_pin_set_config(SSD1963_TFT_nRST, &ssd1963_ctrl_pins_conf); 175e4: 4669 mov r1, sp 175e6: 2004 movs r0, #4 175e8: 4c10 ldr r4, [pc, #64] ; (1762c ) 175ea: 47a0 blx r4 port_pin_set_config(SSD1963_TFT_RSDC, &ssd1963_ctrl_pins_conf); 175ec: 4669 mov r1, sp 175ee: 2005 movs r0, #5 175f0: 47a0 blx r4 port_pin_set_config(SSD1963_TFT_nCS, &ssd1963_ctrl_pins_conf); 175f2: 4669 mov r1, sp 175f4: 2006 movs r0, #6 175f6: 47a0 blx r4 port_pin_set_config(SSD1963_TFT_WR, &ssd1963_ctrl_pins_conf); 175f8: 4669 mov r1, sp 175fa: 2007 movs r0, #7 175fc: 47a0 blx r4 port_pin_set_config(SSD1963_TFT_RD, &ssd1963_ctrl_pins_conf); 175fe: 4669 mov r1, sp 17600: 200a movs r0, #10 17602: 47a0 blx r4 port_base->OUTSET.reg = pin_mask; 17604: 4b0a ldr r3, [pc, #40] ; (17630 ) 17606: 2210 movs r2, #16 17608: 619a str r2, [r3, #24] 1760a: 3210 adds r2, #16 1760c: 619a str r2, [r3, #24] 1760e: 3220 adds r2, #32 17610: 619a str r2, [r3, #24] 17612: 3240 adds r2, #64 ; 0x40 17614: 619a str r2, [r3, #24] 17616: 2280 movs r2, #128 ; 0x80 17618: 00d2 lsls r2, r2, #3 1761a: 619a str r2, [r3, #24] port_pin_set_output_level(SSD1963_TFT_nRST, 1); port_pin_set_output_level(SSD1963_TFT_RSDC, 1); port_pin_set_output_level(SSD1963_TFT_nCS, 1); port_pin_set_output_level(SSD1963_TFT_WR, 1); port_pin_set_output_level(SSD1963_TFT_RD, 1); } 1761c: b003 add sp, #12 1761e: bd30 pop {r4, r5, pc} 17620: 0000ffff .word 0x0000ffff 17624: 41004480 .word 0x41004480 17628: 00000d79 .word 0x00000d79 1762c: 00000d55 .word 0x00000d55 17630: 41004400 .word 0x41004400 00017634 : void p_gpio_parallel_wr_word(PortGroup* group, uint32_t mask, uint32_t data) { 17634: b5f0 push {r4, r5, r6, r7, lr} 17636: 46d6 mov lr, sl 17638: 464f mov r7, r9 1763a: 4646 mov r6, r8 1763c: b5c0 push {r6, r7, lr} port->OUTSET.reg = (mask & level_mask); 1763e: 0013 movs r3, r2 17640: 400b ands r3, r1 17642: 6183 str r3, [r0, #24] port->OUTCLR.reg = (mask & ~level_mask); 17644: 4391 bics r1, r2 17646: 6141 str r1, [r0, #20] port_base->OUTCLR.reg = pin_mask; 17648: 4b16 ldr r3, [pc, #88] ; (176a4 ) 1764a: 4699 mov r9, r3 1764c: 2380 movs r3, #128 ; 0x80 1764e: 469a mov sl, r3 17650: 464b mov r3, r9 17652: 4652 mov r2, sl 17654: 615a str r2, [r3, #20] port_group_set_output_level(group, mask, data); port_pin_set_output_level(SSD1963_TFT_WR, 0); delay_us(1); 17656: 2000 movs r0, #0 17658: 4b13 ldr r3, [pc, #76] ; (176a8 ) 1765a: 4698 mov r8, r3 1765c: 4798 blx r3 1765e: 0002 movs r2, r0 17660: 2300 movs r3, #0 17662: 4c12 ldr r4, [pc, #72] ; (176ac ) 17664: 2500 movs r5, #0 17666: 1912 adds r2, r2, r4 17668: 416b adcs r3, r5 1766a: 0010 movs r0, r2 1766c: 0019 movs r1, r3 1766e: 4f10 ldr r7, [pc, #64] ; (176b0 ) 17670: 4a10 ldr r2, [pc, #64] ; (176b4 ) 17672: 2300 movs r3, #0 17674: 47b8 blx r7 17676: 4e10 ldr r6, [pc, #64] ; (176b8 ) 17678: 47b0 blx r6 port_base->OUTSET.reg = pin_mask; 1767a: 464b mov r3, r9 1767c: 4652 mov r2, sl 1767e: 619a str r2, [r3, #24] port_pin_set_output_level(SSD1963_TFT_WR, 1); delay_us(1); 17680: 2000 movs r0, #0 17682: 47c0 blx r8 17684: 0002 movs r2, r0 17686: 2300 movs r3, #0 17688: 1912 adds r2, r2, r4 1768a: 416b adcs r3, r5 1768c: 0010 movs r0, r2 1768e: 0019 movs r1, r3 17690: 4a08 ldr r2, [pc, #32] ; (176b4 ) 17692: 2300 movs r3, #0 17694: 47b8 blx r7 17696: 47b0 blx r6 } 17698: bc1c pop {r2, r3, r4} 1769a: 4690 mov r8, r2 1769c: 4699 mov r9, r3 1769e: 46a2 mov sl, r4 176a0: bdf0 pop {r4, r5, r6, r7, pc} 176a2: 46c0 nop ; (mov r8, r8) 176a4: 41004400 .word 0x41004400 176a8: 000010cd .word 0x000010cd 176ac: 006acfbf .word 0x006acfbf 176b0: 00017b6d .word 0x00017b6d 176b4: 006acfc0 .word 0x006acfc0 176b8: 20000001 .word 0x20000001 000176bc : void p_gpio_parallel_wr_arr(PortGroup* group, uint32_t mask, uint32_t* data, uint32_t len) { 176bc: b5f0 push {r4, r5, r6, r7, lr} 176be: b083 sub sp, #12 176c0: 9000 str r0, [sp, #0] 176c2: 9101 str r1, [sp, #4] for(int ind = 0; ind < len; ind++) 176c4: 2b00 cmp r3, #0 176c6: d00a beq.n 176de 176c8: 0015 movs r5, r2 176ca: 001f movs r7, r3 176cc: 2400 movs r4, #0 { p_gpio_parallel_wr_word(group, mask, data[ind]); 176ce: 4e05 ldr r6, [pc, #20] ; (176e4 ) 176d0: cd04 ldmia r5!, {r2} 176d2: 9901 ldr r1, [sp, #4] 176d4: 9800 ldr r0, [sp, #0] 176d6: 47b0 blx r6 for(int ind = 0; ind < len; ind++) 176d8: 3401 adds r4, #1 176da: 42bc cmp r4, r7 176dc: d1f8 bne.n 176d0 } } 176de: b003 add sp, #12 176e0: bdf0 pop {r4, r5, r6, r7, pc} 176e2: 46c0 nop ; (mov r8, r8) 176e4: 00017635 .word 0x00017635 000176e8 : #include "p_i2c.h" void p_i2c_init(void) { 176e8: 4770 bx lr ... 000176ec : p_printf("Hello WOrld\n"); } void p_printf(const char* str, ...) { 176ec: b40f push {r0, r1, r2, r3} 176ee: b530 push {r4, r5, lr} 176f0: b0c3 sub sp, #268 ; 0x10c 176f2: ac46 add r4, sp, #280 ; 0x118 176f4: cc20 ldmia r4!, {r5} volatile uint8_t pprint_buffer[ORACLE_DEBUG_PRINT_BUFF_SIZE + 1]; memset(pprint_buffer, '\0', ORACLE_DEBUG_PRINT_BUFF_SIZE + 1); 176f6: 2202 movs r2, #2 176f8: 32ff adds r2, #255 ; 0xff 176fa: 2100 movs r1, #0 176fc: a801 add r0, sp, #4 176fe: 4b0f ldr r3, [pc, #60] ; (1773c ) 17700: 4798 blx r3 va_list args; va_start(args, str); 17702: 9400 str r4, [sp, #0] vsprintf(pprint_buffer, str, args); 17704: 0022 movs r2, r4 17706: 0029 movs r1, r5 17708: a801 add r0, sp, #4 1770a: 4b0d ldr r3, [pc, #52] ; (17740 ) 1770c: 4798 blx r3 va_end(args); uint16_t strsize = (uint16_t)strlen(pprint_buffer); 1770e: a801 add r0, sp, #4 17710: 4b0c ldr r3, [pc, #48] ; (17744 ) 17712: 4798 blx r3 17714: b282 uxth r2, r0 if(strsize > ORACLE_DEBUG_PRINT_BUFF_SIZE) 17716: 2380 movs r3, #128 ; 0x80 17718: 005b lsls r3, r3, #1 1771a: 429a cmp r2, r3 1771c: d904 bls.n 17728 // return error return; } usart_write_buffer_wait(&p_debug_inst, pprint_buffer, strsize); usart_read_job(&p_debug_inst, &rx_char); } 1771e: b043 add sp, #268 ; 0x10c 17720: bc30 pop {r4, r5} 17722: bc08 pop {r3} 17724: b004 add sp, #16 17726: 4718 bx r3 usart_write_buffer_wait(&p_debug_inst, pprint_buffer, strsize); 17728: 4c07 ldr r4, [pc, #28] ; (17748 ) 1772a: a901 add r1, sp, #4 1772c: 0020 movs r0, r4 1772e: 4b07 ldr r3, [pc, #28] ; (1774c ) 17730: 4798 blx r3 usart_read_job(&p_debug_inst, &rx_char); 17732: 4907 ldr r1, [pc, #28] ; (17750 ) 17734: 0020 movs r0, r4 17736: 4b07 ldr r3, [pc, #28] ; (17754 ) 17738: 4798 blx r3 1773a: e7f0 b.n 1771e 1773c: 00017e4d .word 0x00017e4d 17740: 00017ec1 .word 0x00017ec1 17744: 00017e81 .word 0x00017e81 17748: 20004c58 .word 0x20004c58 1774c: 00000915 .word 0x00000915 17750: 20004e30 .word 0x20004e30 17754: 00000a39 .word 0x00000a39 00017758 : { 17758: b570 push {r4, r5, r6, lr} 1775a: b090 sub sp, #64 ; 0x40 { /* Sanity check arguments */ Assert(config); /* Set default config in the config struct */ config->data_order = USART_DATAORDER_LSB; 1775c: 2380 movs r3, #128 ; 0x80 1775e: 05db lsls r3, r3, #23 17760: 9300 str r3, [sp, #0] config->transfer_mode = USART_TRANSFER_ASYNCHRONOUSLY; 17762: 2300 movs r3, #0 17764: 9301 str r3, [sp, #4] config->parity = USART_PARITY_NONE; 17766: 22ff movs r2, #255 ; 0xff 17768: 4669 mov r1, sp 1776a: 810a strh r2, [r1, #8] config->stopbits = USART_STOPBITS_1; 1776c: 2200 movs r2, #0 1776e: 728b strb r3, [r1, #10] config->character_size = USART_CHARACTER_SIZE_8BIT; 17770: 72cb strb r3, [r1, #11] config->baudrate = 9600; config->receiver_enable = true; 17772: 2401 movs r4, #1 17774: 2124 movs r1, #36 ; 0x24 17776: 4668 mov r0, sp 17778: 5444 strb r4, [r0, r1] config->transmitter_enable = true; 1777a: 3101 adds r1, #1 1777c: 5444 strb r4, [r0, r1] config->clock_polarity_inverted = false; 1777e: 3101 adds r1, #1 17780: 5443 strb r3, [r0, r1] config->use_external_clock = false; 17782: 3101 adds r1, #1 17784: 5443 strb r3, [r0, r1] config->ext_clock_freq = 0; 17786: 930a str r3, [sp, #40] ; 0x28 config->mux_setting = USART_RX_1_TX_2_XCK_3; config->run_in_standby = false; 17788: 3105 adds r1, #5 1778a: 5443 strb r3, [r0, r1] config->generator_source = GCLK_GENERATOR_0; 1778c: 3101 adds r1, #1 1778e: 5443 strb r3, [r0, r1] config->pinmux_pad0 = PINMUX_DEFAULT; config->pinmux_pad1 = PINMUX_DEFAULT; config->pinmux_pad2 = PINMUX_DEFAULT; config->pinmux_pad3 = PINMUX_DEFAULT; #ifdef FEATURE_USART_OVER_SAMPLE config->sample_adjustment = USART_SAMPLE_ADJUSTMENT_7_8_9; 17790: 9305 str r3, [sp, #20] config->sample_rate = USART_SAMPLE_RATE_16X_ARITHMETIC; 17792: 8203 strh r3, [r0, #16] #endif #ifdef FEATURE_USART_LIN_SLAVE config->lin_slave_enable = false; 17794: 76c3 strb r3, [r0, #27] config->lin_header_delay = LIN_MASTER_HEADER_DELAY_0; config->lin_break_length = LIN_MASTER_BREAK_LENGTH_13_BIT; #endif #ifdef FEATURE_USART_IMMEDIATE_BUFFER_OVERFLOW_NOTIFICATION config->immediate_buffer_overflow_notification = false; 17796: 7602 strb r2, [r0, #24] #endif #ifdef FEATURE_USART_START_FRAME_DECTION config->start_frame_detection_enable = false; 17798: 7702 strb r2, [r0, #28] #endif #ifdef FEATURE_USART_IRDA config->encoding_format_enable = false; 1779a: 7642 strb r2, [r0, #25] config->receive_pulse_length = 19; 1779c: 2313 movs r3, #19 1779e: 7683 strb r3, [r0, #26] config->iso7816_config.inhibit_nack = ISO7816_INHIBIT_NACK_DISABLE; config->iso7816_config.successive_recv_nack = ISO7816_SUCCESSIVE_RECV_NACK_DISABLE; config->iso7816_config.max_iterations = 7; #endif #ifdef FEATURE_USART_COLLISION_DECTION config->collision_detection_enable = false; 177a0: 7742 strb r2, [r0, #29] p_debug_conf.baudrate = USART_DEBUG_BAUDRATE; 177a2: 23e1 movs r3, #225 ; 0xe1 177a4: 025b lsls r3, r3, #9 177a6: 9308 str r3, [sp, #32] p_debug_conf.pinmux_pad0 = USART_DEBUG_PINMUX_PAD0; 177a8: 4b18 ldr r3, [pc, #96] ; (1780c ) 177aa: 930c str r3, [sp, #48] ; 0x30 p_debug_conf.pinmux_pad1 = USART_DEBUG_PINMUX_PAD1; 177ac: 4b18 ldr r3, [pc, #96] ; (17810 ) 177ae: 930d str r3, [sp, #52] ; 0x34 p_debug_conf.pinmux_pad2 = USART_DEBUG_PINMUX_PAD2; 177b0: 2301 movs r3, #1 177b2: 425b negs r3, r3 177b4: 930e str r3, [sp, #56] ; 0x38 p_debug_conf.pinmux_pad3 = USART_DEBUG_PINMUX_PAD3; 177b6: 930f str r3, [sp, #60] ; 0x3c p_debug_conf.mux_setting = USART_DEBUG_MUX_SETTING; 177b8: 2380 movs r3, #128 ; 0x80 177ba: 035b lsls r3, r3, #13 177bc: 9303 str r3, [sp, #12] usart_init(&p_debug_inst, USART_DEBUG_MODULE, &p_debug_conf); 177be: 4e15 ldr r6, [pc, #84] ; (17814 ) 177c0: 466a mov r2, sp 177c2: 4915 ldr r1, [pc, #84] ; (17818 ) 177c4: 0030 movs r0, r6 177c6: 4b15 ldr r3, [pc, #84] ; (1781c ) 177c8: 4798 blx r3 /* Sanity check arguments */ Assert(module); Assert(module->hw); /* Get a pointer to the hardware module instance */ SercomUsart *const usart_hw = &(module->hw->USART); 177ca: 6835 ldr r5, [r6, #0] #if USART_CALLBACK_MODE == true /* Enable Global interrupt for module */ system_interrupt_enable(_sercom_get_interrupt_vector(module->hw)); 177cc: 0028 movs r0, r5 177ce: 4b14 ldr r3, [pc, #80] ; (17820 ) 177d0: 4798 blx r3 * \param[in] vector Interrupt vector to enable */ static inline void system_interrupt_enable( const enum system_interrupt_vector vector) { NVIC->ISER[0] = (uint32_t)(1 << ((uint32_t)vector & 0x0000001f)); 177d2: 231f movs r3, #31 177d4: 4018 ands r0, r3 177d6: 4084 lsls r4, r0 177d8: 4b12 ldr r3, [pc, #72] ; (17824 ) 177da: 601c str r4, [r3, #0] SercomUsart *const usart_hw = &(module->hw->USART); 177dc: 6832 ldr r2, [r6, #0] return (usart_hw->SYNCBUSY.reg); 177de: 69d3 ldr r3, [r2, #28] while (usart_is_syncing(module)) { 177e0: 2b00 cmp r3, #0 177e2: d1fc bne.n 177de /* Wait until synchronization is complete */ _usart_wait_for_sync(module); /* Enable USART module */ usart_hw->CTRLA.reg |= SERCOM_USART_CTRLA_ENABLE; 177e4: 682b ldr r3, [r5, #0] 177e6: 2202 movs r2, #2 177e8: 4313 orrs r3, r2 177ea: 602b str r3, [r5, #0] usart_register_callback(&p_debug_inst, p_debug_rx_cb, USART_CALLBACK_BUFFER_RECEIVED); 177ec: 4c09 ldr r4, [pc, #36] ; (17814 ) 177ee: 3a01 subs r2, #1 177f0: 490d ldr r1, [pc, #52] ; (17828 ) 177f2: 0020 movs r0, r4 177f4: 4b0d ldr r3, [pc, #52] ; (1782c ) 177f6: 4798 blx r3 { /* Sanity check arguments */ Assert(module); /* Enable callback */ module->callback_enable_mask |= (1 << callback_type); 177f8: 2231 movs r2, #49 ; 0x31 177fa: 5ca3 ldrb r3, [r4, r2] 177fc: 2102 movs r1, #2 177fe: 430b orrs r3, r1 17800: 54a3 strb r3, [r4, r2] p_printf("Hello WOrld\n"); 17802: 480b ldr r0, [pc, #44] ; (17830 ) 17804: 4b0b ldr r3, [pc, #44] ; (17834 ) 17806: 4798 blx r3 } 17808: b010 add sp, #64 ; 0x40 1780a: bd70 pop {r4, r5, r6, pc} 1780c: 00160002 .word 0x00160002 17810: 00170002 .word 0x00170002 17814: 20004c58 .word 0x20004c58 17818: 42001400 .word 0x42001400 1781c: 000005b1 .word 0x000005b1 17820: 00000c1d .word 0x00000c1d 17824: e000e100 .word 0xe000e100 17828: 00017839 .word 0x00017839 1782c: 00000a21 .word 0x00000a21 17830: 0001c93c .word 0x0001c93c 17834: 000176ed .word 0x000176ed 00017838 : { 17838: b510 push {r4, lr} p_printf("%c", (char)rx_char); 1783a: 4b03 ldr r3, [pc, #12] ; (17848 ) 1783c: 8819 ldrh r1, [r3, #0] 1783e: b2c9 uxtb r1, r1 17840: 4802 ldr r0, [pc, #8] ; (1784c ) 17842: 4b03 ldr r3, [pc, #12] ; (17850 ) 17844: 4798 blx r3 } 17846: bd10 pop {r4, pc} 17848: 20004e30 .word 0x20004e30 1784c: 0001c938 .word 0x0001c938 17850: 000176ed .word 0x000176ed 00017854 : void p_debug_start_service(void) { 17854: b510 push {r4, lr} usart_read_job(&p_debug_inst, &rx_char); 17856: 4902 ldr r1, [pc, #8] ; (17860 ) 17858: 4802 ldr r0, [pc, #8] ; (17864 ) 1785a: 4b03 ldr r3, [pc, #12] ; (17868 ) 1785c: 4798 blx r3 } 1785e: bd10 pop {r4, pc} 17860: 20004e30 .word 0x20004e30 17864: 20004c58 .word 0x20004c58 17868: 00000a39 .word 0x00000a39 0001786c
: /* * Support and FAQ: visit Microchip Support */ #include "oracle.h" int main (void) { 1786c: b510 push {r4, lr} oracle_init(); 1786e: 4b02 ldr r3, [pc, #8] ; (17878 ) 17870: 4798 blx r3 for(;;) { oracle_service(); 17872: 4c02 ldr r4, [pc, #8] ; (1787c ) 17874: 47a0 blx r4 17876: e7fd b.n 17874 17878: 00000169 .word 0x00000169 1787c: 000001fd .word 0x000001fd 00017880 <__udivsi3>: 17880: 2200 movs r2, #0 17882: 0843 lsrs r3, r0, #1 17884: 428b cmp r3, r1 17886: d374 bcc.n 17972 <__udivsi3+0xf2> 17888: 0903 lsrs r3, r0, #4 1788a: 428b cmp r3, r1 1788c: d35f bcc.n 1794e <__udivsi3+0xce> 1788e: 0a03 lsrs r3, r0, #8 17890: 428b cmp r3, r1 17892: d344 bcc.n 1791e <__udivsi3+0x9e> 17894: 0b03 lsrs r3, r0, #12 17896: 428b cmp r3, r1 17898: d328 bcc.n 178ec <__udivsi3+0x6c> 1789a: 0c03 lsrs r3, r0, #16 1789c: 428b cmp r3, r1 1789e: d30d bcc.n 178bc <__udivsi3+0x3c> 178a0: 22ff movs r2, #255 ; 0xff 178a2: 0209 lsls r1, r1, #8 178a4: ba12 rev r2, r2 178a6: 0c03 lsrs r3, r0, #16 178a8: 428b cmp r3, r1 178aa: d302 bcc.n 178b2 <__udivsi3+0x32> 178ac: 1212 asrs r2, r2, #8 178ae: 0209 lsls r1, r1, #8 178b0: d065 beq.n 1797e <__udivsi3+0xfe> 178b2: 0b03 lsrs r3, r0, #12 178b4: 428b cmp r3, r1 178b6: d319 bcc.n 178ec <__udivsi3+0x6c> 178b8: e000 b.n 178bc <__udivsi3+0x3c> 178ba: 0a09 lsrs r1, r1, #8 178bc: 0bc3 lsrs r3, r0, #15 178be: 428b cmp r3, r1 178c0: d301 bcc.n 178c6 <__udivsi3+0x46> 178c2: 03cb lsls r3, r1, #15 178c4: 1ac0 subs r0, r0, r3 178c6: 4152 adcs r2, r2 178c8: 0b83 lsrs r3, r0, #14 178ca: 428b cmp r3, r1 178cc: d301 bcc.n 178d2 <__udivsi3+0x52> 178ce: 038b lsls r3, r1, #14 178d0: 1ac0 subs r0, r0, r3 178d2: 4152 adcs r2, r2 178d4: 0b43 lsrs r3, r0, #13 178d6: 428b cmp r3, r1 178d8: d301 bcc.n 178de <__udivsi3+0x5e> 178da: 034b lsls r3, r1, #13 178dc: 1ac0 subs r0, r0, r3 178de: 4152 adcs r2, r2 178e0: 0b03 lsrs r3, r0, #12 178e2: 428b cmp r3, r1 178e4: d301 bcc.n 178ea <__udivsi3+0x6a> 178e6: 030b lsls r3, r1, #12 178e8: 1ac0 subs r0, r0, r3 178ea: 4152 adcs r2, r2 178ec: 0ac3 lsrs r3, r0, #11 178ee: 428b cmp r3, r1 178f0: d301 bcc.n 178f6 <__udivsi3+0x76> 178f2: 02cb lsls r3, r1, #11 178f4: 1ac0 subs r0, r0, r3 178f6: 4152 adcs r2, r2 178f8: 0a83 lsrs r3, r0, #10 178fa: 428b cmp r3, r1 178fc: d301 bcc.n 17902 <__udivsi3+0x82> 178fe: 028b lsls r3, r1, #10 17900: 1ac0 subs r0, r0, r3 17902: 4152 adcs r2, r2 17904: 0a43 lsrs r3, r0, #9 17906: 428b cmp r3, r1 17908: d301 bcc.n 1790e <__udivsi3+0x8e> 1790a: 024b lsls r3, r1, #9 1790c: 1ac0 subs r0, r0, r3 1790e: 4152 adcs r2, r2 17910: 0a03 lsrs r3, r0, #8 17912: 428b cmp r3, r1 17914: d301 bcc.n 1791a <__udivsi3+0x9a> 17916: 020b lsls r3, r1, #8 17918: 1ac0 subs r0, r0, r3 1791a: 4152 adcs r2, r2 1791c: d2cd bcs.n 178ba <__udivsi3+0x3a> 1791e: 09c3 lsrs r3, r0, #7 17920: 428b cmp r3, r1 17922: d301 bcc.n 17928 <__udivsi3+0xa8> 17924: 01cb lsls r3, r1, #7 17926: 1ac0 subs r0, r0, r3 17928: 4152 adcs r2, r2 1792a: 0983 lsrs r3, r0, #6 1792c: 428b cmp r3, r1 1792e: d301 bcc.n 17934 <__udivsi3+0xb4> 17930: 018b lsls r3, r1, #6 17932: 1ac0 subs r0, r0, r3 17934: 4152 adcs r2, r2 17936: 0943 lsrs r3, r0, #5 17938: 428b cmp r3, r1 1793a: d301 bcc.n 17940 <__udivsi3+0xc0> 1793c: 014b lsls r3, r1, #5 1793e: 1ac0 subs r0, r0, r3 17940: 4152 adcs r2, r2 17942: 0903 lsrs r3, r0, #4 17944: 428b cmp r3, r1 17946: d301 bcc.n 1794c <__udivsi3+0xcc> 17948: 010b lsls r3, r1, #4 1794a: 1ac0 subs r0, r0, r3 1794c: 4152 adcs r2, r2 1794e: 08c3 lsrs r3, r0, #3 17950: 428b cmp r3, r1 17952: d301 bcc.n 17958 <__udivsi3+0xd8> 17954: 00cb lsls r3, r1, #3 17956: 1ac0 subs r0, r0, r3 17958: 4152 adcs r2, r2 1795a: 0883 lsrs r3, r0, #2 1795c: 428b cmp r3, r1 1795e: d301 bcc.n 17964 <__udivsi3+0xe4> 17960: 008b lsls r3, r1, #2 17962: 1ac0 subs r0, r0, r3 17964: 4152 adcs r2, r2 17966: 0843 lsrs r3, r0, #1 17968: 428b cmp r3, r1 1796a: d301 bcc.n 17970 <__udivsi3+0xf0> 1796c: 004b lsls r3, r1, #1 1796e: 1ac0 subs r0, r0, r3 17970: 4152 adcs r2, r2 17972: 1a41 subs r1, r0, r1 17974: d200 bcs.n 17978 <__udivsi3+0xf8> 17976: 4601 mov r1, r0 17978: 4152 adcs r2, r2 1797a: 4610 mov r0, r2 1797c: 4770 bx lr 1797e: e7ff b.n 17980 <__udivsi3+0x100> 17980: b501 push {r0, lr} 17982: 2000 movs r0, #0 17984: f000 f8f0 bl 17b68 <__aeabi_idiv0> 17988: bd02 pop {r1, pc} 1798a: 46c0 nop ; (mov r8, r8) 0001798c <__aeabi_uidivmod>: 1798c: 2900 cmp r1, #0 1798e: d0f7 beq.n 17980 <__udivsi3+0x100> 17990: e776 b.n 17880 <__udivsi3> 17992: 4770 bx lr 00017994 <__divsi3>: 17994: 4603 mov r3, r0 17996: 430b orrs r3, r1 17998: d47f bmi.n 17a9a <__divsi3+0x106> 1799a: 2200 movs r2, #0 1799c: 0843 lsrs r3, r0, #1 1799e: 428b cmp r3, r1 179a0: d374 bcc.n 17a8c <__divsi3+0xf8> 179a2: 0903 lsrs r3, r0, #4 179a4: 428b cmp r3, r1 179a6: d35f bcc.n 17a68 <__divsi3+0xd4> 179a8: 0a03 lsrs r3, r0, #8 179aa: 428b cmp r3, r1 179ac: d344 bcc.n 17a38 <__divsi3+0xa4> 179ae: 0b03 lsrs r3, r0, #12 179b0: 428b cmp r3, r1 179b2: d328 bcc.n 17a06 <__divsi3+0x72> 179b4: 0c03 lsrs r3, r0, #16 179b6: 428b cmp r3, r1 179b8: d30d bcc.n 179d6 <__divsi3+0x42> 179ba: 22ff movs r2, #255 ; 0xff 179bc: 0209 lsls r1, r1, #8 179be: ba12 rev r2, r2 179c0: 0c03 lsrs r3, r0, #16 179c2: 428b cmp r3, r1 179c4: d302 bcc.n 179cc <__divsi3+0x38> 179c6: 1212 asrs r2, r2, #8 179c8: 0209 lsls r1, r1, #8 179ca: d065 beq.n 17a98 <__divsi3+0x104> 179cc: 0b03 lsrs r3, r0, #12 179ce: 428b cmp r3, r1 179d0: d319 bcc.n 17a06 <__divsi3+0x72> 179d2: e000 b.n 179d6 <__divsi3+0x42> 179d4: 0a09 lsrs r1, r1, #8 179d6: 0bc3 lsrs r3, r0, #15 179d8: 428b cmp r3, r1 179da: d301 bcc.n 179e0 <__divsi3+0x4c> 179dc: 03cb lsls r3, r1, #15 179de: 1ac0 subs r0, r0, r3 179e0: 4152 adcs r2, r2 179e2: 0b83 lsrs r3, r0, #14 179e4: 428b cmp r3, r1 179e6: d301 bcc.n 179ec <__divsi3+0x58> 179e8: 038b lsls r3, r1, #14 179ea: 1ac0 subs r0, r0, r3 179ec: 4152 adcs r2, r2 179ee: 0b43 lsrs r3, r0, #13 179f0: 428b cmp r3, r1 179f2: d301 bcc.n 179f8 <__divsi3+0x64> 179f4: 034b lsls r3, r1, #13 179f6: 1ac0 subs r0, r0, r3 179f8: 4152 adcs r2, r2 179fa: 0b03 lsrs r3, r0, #12 179fc: 428b cmp r3, r1 179fe: d301 bcc.n 17a04 <__divsi3+0x70> 17a00: 030b lsls r3, r1, #12 17a02: 1ac0 subs r0, r0, r3 17a04: 4152 adcs r2, r2 17a06: 0ac3 lsrs r3, r0, #11 17a08: 428b cmp r3, r1 17a0a: d301 bcc.n 17a10 <__divsi3+0x7c> 17a0c: 02cb lsls r3, r1, #11 17a0e: 1ac0 subs r0, r0, r3 17a10: 4152 adcs r2, r2 17a12: 0a83 lsrs r3, r0, #10 17a14: 428b cmp r3, r1 17a16: d301 bcc.n 17a1c <__divsi3+0x88> 17a18: 028b lsls r3, r1, #10 17a1a: 1ac0 subs r0, r0, r3 17a1c: 4152 adcs r2, r2 17a1e: 0a43 lsrs r3, r0, #9 17a20: 428b cmp r3, r1 17a22: d301 bcc.n 17a28 <__divsi3+0x94> 17a24: 024b lsls r3, r1, #9 17a26: 1ac0 subs r0, r0, r3 17a28: 4152 adcs r2, r2 17a2a: 0a03 lsrs r3, r0, #8 17a2c: 428b cmp r3, r1 17a2e: d301 bcc.n 17a34 <__divsi3+0xa0> 17a30: 020b lsls r3, r1, #8 17a32: 1ac0 subs r0, r0, r3 17a34: 4152 adcs r2, r2 17a36: d2cd bcs.n 179d4 <__divsi3+0x40> 17a38: 09c3 lsrs r3, r0, #7 17a3a: 428b cmp r3, r1 17a3c: d301 bcc.n 17a42 <__divsi3+0xae> 17a3e: 01cb lsls r3, r1, #7 17a40: 1ac0 subs r0, r0, r3 17a42: 4152 adcs r2, r2 17a44: 0983 lsrs r3, r0, #6 17a46: 428b cmp r3, r1 17a48: d301 bcc.n 17a4e <__divsi3+0xba> 17a4a: 018b lsls r3, r1, #6 17a4c: 1ac0 subs r0, r0, r3 17a4e: 4152 adcs r2, r2 17a50: 0943 lsrs r3, r0, #5 17a52: 428b cmp r3, r1 17a54: d301 bcc.n 17a5a <__divsi3+0xc6> 17a56: 014b lsls r3, r1, #5 17a58: 1ac0 subs r0, r0, r3 17a5a: 4152 adcs r2, r2 17a5c: 0903 lsrs r3, r0, #4 17a5e: 428b cmp r3, r1 17a60: d301 bcc.n 17a66 <__divsi3+0xd2> 17a62: 010b lsls r3, r1, #4 17a64: 1ac0 subs r0, r0, r3 17a66: 4152 adcs r2, r2 17a68: 08c3 lsrs r3, r0, #3 17a6a: 428b cmp r3, r1 17a6c: d301 bcc.n 17a72 <__divsi3+0xde> 17a6e: 00cb lsls r3, r1, #3 17a70: 1ac0 subs r0, r0, r3 17a72: 4152 adcs r2, r2 17a74: 0883 lsrs r3, r0, #2 17a76: 428b cmp r3, r1 17a78: d301 bcc.n 17a7e <__divsi3+0xea> 17a7a: 008b lsls r3, r1, #2 17a7c: 1ac0 subs r0, r0, r3 17a7e: 4152 adcs r2, r2 17a80: 0843 lsrs r3, r0, #1 17a82: 428b cmp r3, r1 17a84: d301 bcc.n 17a8a <__divsi3+0xf6> 17a86: 004b lsls r3, r1, #1 17a88: 1ac0 subs r0, r0, r3 17a8a: 4152 adcs r2, r2 17a8c: 1a41 subs r1, r0, r1 17a8e: d200 bcs.n 17a92 <__divsi3+0xfe> 17a90: 4601 mov r1, r0 17a92: 4152 adcs r2, r2 17a94: 4610 mov r0, r2 17a96: 4770 bx lr 17a98: e05d b.n 17b56 <__divsi3+0x1c2> 17a9a: 0fca lsrs r2, r1, #31 17a9c: d000 beq.n 17aa0 <__divsi3+0x10c> 17a9e: 4249 negs r1, r1 17aa0: 1003 asrs r3, r0, #32 17aa2: d300 bcc.n 17aa6 <__divsi3+0x112> 17aa4: 4240 negs r0, r0 17aa6: 4053 eors r3, r2 17aa8: 2200 movs r2, #0 17aaa: 469c mov ip, r3 17aac: 0903 lsrs r3, r0, #4 17aae: 428b cmp r3, r1 17ab0: d32d bcc.n 17b0e <__divsi3+0x17a> 17ab2: 0a03 lsrs r3, r0, #8 17ab4: 428b cmp r3, r1 17ab6: d312 bcc.n 17ade <__divsi3+0x14a> 17ab8: 22fc movs r2, #252 ; 0xfc 17aba: 0189 lsls r1, r1, #6 17abc: ba12 rev r2, r2 17abe: 0a03 lsrs r3, r0, #8 17ac0: 428b cmp r3, r1 17ac2: d30c bcc.n 17ade <__divsi3+0x14a> 17ac4: 0189 lsls r1, r1, #6 17ac6: 1192 asrs r2, r2, #6 17ac8: 428b cmp r3, r1 17aca: d308 bcc.n 17ade <__divsi3+0x14a> 17acc: 0189 lsls r1, r1, #6 17ace: 1192 asrs r2, r2, #6 17ad0: 428b cmp r3, r1 17ad2: d304 bcc.n 17ade <__divsi3+0x14a> 17ad4: 0189 lsls r1, r1, #6 17ad6: d03a beq.n 17b4e <__divsi3+0x1ba> 17ad8: 1192 asrs r2, r2, #6 17ada: e000 b.n 17ade <__divsi3+0x14a> 17adc: 0989 lsrs r1, r1, #6 17ade: 09c3 lsrs r3, r0, #7 17ae0: 428b cmp r3, r1 17ae2: d301 bcc.n 17ae8 <__divsi3+0x154> 17ae4: 01cb lsls r3, r1, #7 17ae6: 1ac0 subs r0, r0, r3 17ae8: 4152 adcs r2, r2 17aea: 0983 lsrs r3, r0, #6 17aec: 428b cmp r3, r1 17aee: d301 bcc.n 17af4 <__divsi3+0x160> 17af0: 018b lsls r3, r1, #6 17af2: 1ac0 subs r0, r0, r3 17af4: 4152 adcs r2, r2 17af6: 0943 lsrs r3, r0, #5 17af8: 428b cmp r3, r1 17afa: d301 bcc.n 17b00 <__divsi3+0x16c> 17afc: 014b lsls r3, r1, #5 17afe: 1ac0 subs r0, r0, r3 17b00: 4152 adcs r2, r2 17b02: 0903 lsrs r3, r0, #4 17b04: 428b cmp r3, r1 17b06: d301 bcc.n 17b0c <__divsi3+0x178> 17b08: 010b lsls r3, r1, #4 17b0a: 1ac0 subs r0, r0, r3 17b0c: 4152 adcs r2, r2 17b0e: 08c3 lsrs r3, r0, #3 17b10: 428b cmp r3, r1 17b12: d301 bcc.n 17b18 <__divsi3+0x184> 17b14: 00cb lsls r3, r1, #3 17b16: 1ac0 subs r0, r0, r3 17b18: 4152 adcs r2, r2 17b1a: 0883 lsrs r3, r0, #2 17b1c: 428b cmp r3, r1 17b1e: d301 bcc.n 17b24 <__divsi3+0x190> 17b20: 008b lsls r3, r1, #2 17b22: 1ac0 subs r0, r0, r3 17b24: 4152 adcs r2, r2 17b26: d2d9 bcs.n 17adc <__divsi3+0x148> 17b28: 0843 lsrs r3, r0, #1 17b2a: 428b cmp r3, r1 17b2c: d301 bcc.n 17b32 <__divsi3+0x19e> 17b2e: 004b lsls r3, r1, #1 17b30: 1ac0 subs r0, r0, r3 17b32: 4152 adcs r2, r2 17b34: 1a41 subs r1, r0, r1 17b36: d200 bcs.n 17b3a <__divsi3+0x1a6> 17b38: 4601 mov r1, r0 17b3a: 4663 mov r3, ip 17b3c: 4152 adcs r2, r2 17b3e: 105b asrs r3, r3, #1 17b40: 4610 mov r0, r2 17b42: d301 bcc.n 17b48 <__divsi3+0x1b4> 17b44: 4240 negs r0, r0 17b46: 2b00 cmp r3, #0 17b48: d500 bpl.n 17b4c <__divsi3+0x1b8> 17b4a: 4249 negs r1, r1 17b4c: 4770 bx lr 17b4e: 4663 mov r3, ip 17b50: 105b asrs r3, r3, #1 17b52: d300 bcc.n 17b56 <__divsi3+0x1c2> 17b54: 4240 negs r0, r0 17b56: b501 push {r0, lr} 17b58: 2000 movs r0, #0 17b5a: f000 f805 bl 17b68 <__aeabi_idiv0> 17b5e: bd02 pop {r1, pc} 00017b60 <__aeabi_idivmod>: 17b60: 2900 cmp r1, #0 17b62: d0f8 beq.n 17b56 <__divsi3+0x1c2> 17b64: e716 b.n 17994 <__divsi3> 17b66: 4770 bx lr 00017b68 <__aeabi_idiv0>: 17b68: 4770 bx lr 17b6a: 46c0 nop ; (mov r8, r8) 00017b6c <__aeabi_uldivmod>: 17b6c: 2b00 cmp r3, #0 17b6e: d111 bne.n 17b94 <__aeabi_uldivmod+0x28> 17b70: 2a00 cmp r2, #0 17b72: d10f bne.n 17b94 <__aeabi_uldivmod+0x28> 17b74: 2900 cmp r1, #0 17b76: d100 bne.n 17b7a <__aeabi_uldivmod+0xe> 17b78: 2800 cmp r0, #0 17b7a: d002 beq.n 17b82 <__aeabi_uldivmod+0x16> 17b7c: 2100 movs r1, #0 17b7e: 43c9 mvns r1, r1 17b80: 1c08 adds r0, r1, #0 17b82: b407 push {r0, r1, r2} 17b84: 4802 ldr r0, [pc, #8] ; (17b90 <__aeabi_uldivmod+0x24>) 17b86: a102 add r1, pc, #8 ; (adr r1, 17b90 <__aeabi_uldivmod+0x24>) 17b88: 1840 adds r0, r0, r1 17b8a: 9002 str r0, [sp, #8] 17b8c: bd03 pop {r0, r1, pc} 17b8e: 46c0 nop ; (mov r8, r8) 17b90: ffffffd9 .word 0xffffffd9 17b94: b403 push {r0, r1} 17b96: 4668 mov r0, sp 17b98: b501 push {r0, lr} 17b9a: 9802 ldr r0, [sp, #8] 17b9c: f000 f830 bl 17c00 <__udivmoddi4> 17ba0: 9b01 ldr r3, [sp, #4] 17ba2: 469e mov lr, r3 17ba4: b002 add sp, #8 17ba6: bc0c pop {r2, r3} 17ba8: 4770 bx lr 17baa: 46c0 nop ; (mov r8, r8) 00017bac <__aeabi_lmul>: 17bac: b5f0 push {r4, r5, r6, r7, lr} 17bae: 46ce mov lr, r9 17bb0: 4647 mov r7, r8 17bb2: 0415 lsls r5, r2, #16 17bb4: 0c2d lsrs r5, r5, #16 17bb6: 002e movs r6, r5 17bb8: b580 push {r7, lr} 17bba: 0407 lsls r7, r0, #16 17bbc: 0c14 lsrs r4, r2, #16 17bbe: 0c3f lsrs r7, r7, #16 17bc0: 4699 mov r9, r3 17bc2: 0c03 lsrs r3, r0, #16 17bc4: 437e muls r6, r7 17bc6: 435d muls r5, r3 17bc8: 4367 muls r7, r4 17bca: 4363 muls r3, r4 17bcc: 197f adds r7, r7, r5 17bce: 0c34 lsrs r4, r6, #16 17bd0: 19e4 adds r4, r4, r7 17bd2: 469c mov ip, r3 17bd4: 42a5 cmp r5, r4 17bd6: d903 bls.n 17be0 <__aeabi_lmul+0x34> 17bd8: 2380 movs r3, #128 ; 0x80 17bda: 025b lsls r3, r3, #9 17bdc: 4698 mov r8, r3 17bde: 44c4 add ip, r8 17be0: 464b mov r3, r9 17be2: 4351 muls r1, r2 17be4: 4343 muls r3, r0 17be6: 0436 lsls r6, r6, #16 17be8: 0c36 lsrs r6, r6, #16 17bea: 0c25 lsrs r5, r4, #16 17bec: 0424 lsls r4, r4, #16 17bee: 4465 add r5, ip 17bf0: 19a4 adds r4, r4, r6 17bf2: 1859 adds r1, r3, r1 17bf4: 1949 adds r1, r1, r5 17bf6: 0020 movs r0, r4 17bf8: bc0c pop {r2, r3} 17bfa: 4690 mov r8, r2 17bfc: 4699 mov r9, r3 17bfe: bdf0 pop {r4, r5, r6, r7, pc} 00017c00 <__udivmoddi4>: 17c00: b5f0 push {r4, r5, r6, r7, lr} 17c02: 4657 mov r7, sl 17c04: 464e mov r6, r9 17c06: 4645 mov r5, r8 17c08: 46de mov lr, fp 17c0a: b5e0 push {r5, r6, r7, lr} 17c0c: 0004 movs r4, r0 17c0e: b083 sub sp, #12 17c10: 000d movs r5, r1 17c12: 4692 mov sl, r2 17c14: 4699 mov r9, r3 17c16: 428b cmp r3, r1 17c18: d82f bhi.n 17c7a <__udivmoddi4+0x7a> 17c1a: d02c beq.n 17c76 <__udivmoddi4+0x76> 17c1c: 4649 mov r1, r9 17c1e: 4650 mov r0, sl 17c20: f000 f8cc bl 17dbc <__clzdi2> 17c24: 0029 movs r1, r5 17c26: 0006 movs r6, r0 17c28: 0020 movs r0, r4 17c2a: f000 f8c7 bl 17dbc <__clzdi2> 17c2e: 1a33 subs r3, r6, r0 17c30: 4698 mov r8, r3 17c32: 3b20 subs r3, #32 17c34: 469b mov fp, r3 17c36: d500 bpl.n 17c3a <__udivmoddi4+0x3a> 17c38: e074 b.n 17d24 <__udivmoddi4+0x124> 17c3a: 4653 mov r3, sl 17c3c: 465a mov r2, fp 17c3e: 4093 lsls r3, r2 17c40: 001f movs r7, r3 17c42: 4653 mov r3, sl 17c44: 4642 mov r2, r8 17c46: 4093 lsls r3, r2 17c48: 001e movs r6, r3 17c4a: 42af cmp r7, r5 17c4c: d829 bhi.n 17ca2 <__udivmoddi4+0xa2> 17c4e: d026 beq.n 17c9e <__udivmoddi4+0x9e> 17c50: 465b mov r3, fp 17c52: 1ba4 subs r4, r4, r6 17c54: 41bd sbcs r5, r7 17c56: 2b00 cmp r3, #0 17c58: da00 bge.n 17c5c <__udivmoddi4+0x5c> 17c5a: e079 b.n 17d50 <__udivmoddi4+0x150> 17c5c: 2200 movs r2, #0 17c5e: 2300 movs r3, #0 17c60: 9200 str r2, [sp, #0] 17c62: 9301 str r3, [sp, #4] 17c64: 2301 movs r3, #1 17c66: 465a mov r2, fp 17c68: 4093 lsls r3, r2 17c6a: 9301 str r3, [sp, #4] 17c6c: 2301 movs r3, #1 17c6e: 4642 mov r2, r8 17c70: 4093 lsls r3, r2 17c72: 9300 str r3, [sp, #0] 17c74: e019 b.n 17caa <__udivmoddi4+0xaa> 17c76: 4282 cmp r2, r0 17c78: d9d0 bls.n 17c1c <__udivmoddi4+0x1c> 17c7a: 2200 movs r2, #0 17c7c: 2300 movs r3, #0 17c7e: 9200 str r2, [sp, #0] 17c80: 9301 str r3, [sp, #4] 17c82: 9b0c ldr r3, [sp, #48] ; 0x30 17c84: 2b00 cmp r3, #0 17c86: d001 beq.n 17c8c <__udivmoddi4+0x8c> 17c88: 601c str r4, [r3, #0] 17c8a: 605d str r5, [r3, #4] 17c8c: 9800 ldr r0, [sp, #0] 17c8e: 9901 ldr r1, [sp, #4] 17c90: b003 add sp, #12 17c92: bc3c pop {r2, r3, r4, r5} 17c94: 4690 mov r8, r2 17c96: 4699 mov r9, r3 17c98: 46a2 mov sl, r4 17c9a: 46ab mov fp, r5 17c9c: bdf0 pop {r4, r5, r6, r7, pc} 17c9e: 42a3 cmp r3, r4 17ca0: d9d6 bls.n 17c50 <__udivmoddi4+0x50> 17ca2: 2200 movs r2, #0 17ca4: 2300 movs r3, #0 17ca6: 9200 str r2, [sp, #0] 17ca8: 9301 str r3, [sp, #4] 17caa: 4643 mov r3, r8 17cac: 2b00 cmp r3, #0 17cae: d0e8 beq.n 17c82 <__udivmoddi4+0x82> 17cb0: 07fb lsls r3, r7, #31 17cb2: 0872 lsrs r2, r6, #1 17cb4: 431a orrs r2, r3 17cb6: 4646 mov r6, r8 17cb8: 087b lsrs r3, r7, #1 17cba: e00e b.n 17cda <__udivmoddi4+0xda> 17cbc: 42ab cmp r3, r5 17cbe: d101 bne.n 17cc4 <__udivmoddi4+0xc4> 17cc0: 42a2 cmp r2, r4 17cc2: d80c bhi.n 17cde <__udivmoddi4+0xde> 17cc4: 1aa4 subs r4, r4, r2 17cc6: 419d sbcs r5, r3 17cc8: 2001 movs r0, #1 17cca: 1924 adds r4, r4, r4 17ccc: 416d adcs r5, r5 17cce: 2100 movs r1, #0 17cd0: 3e01 subs r6, #1 17cd2: 1824 adds r4, r4, r0 17cd4: 414d adcs r5, r1 17cd6: 2e00 cmp r6, #0 17cd8: d006 beq.n 17ce8 <__udivmoddi4+0xe8> 17cda: 42ab cmp r3, r5 17cdc: d9ee bls.n 17cbc <__udivmoddi4+0xbc> 17cde: 3e01 subs r6, #1 17ce0: 1924 adds r4, r4, r4 17ce2: 416d adcs r5, r5 17ce4: 2e00 cmp r6, #0 17ce6: d1f8 bne.n 17cda <__udivmoddi4+0xda> 17ce8: 465b mov r3, fp 17cea: 9800 ldr r0, [sp, #0] 17cec: 9901 ldr r1, [sp, #4] 17cee: 1900 adds r0, r0, r4 17cf0: 4169 adcs r1, r5 17cf2: 2b00 cmp r3, #0 17cf4: db22 blt.n 17d3c <__udivmoddi4+0x13c> 17cf6: 002b movs r3, r5 17cf8: 465a mov r2, fp 17cfa: 40d3 lsrs r3, r2 17cfc: 002a movs r2, r5 17cfe: 4644 mov r4, r8 17d00: 40e2 lsrs r2, r4 17d02: 001c movs r4, r3 17d04: 465b mov r3, fp 17d06: 0015 movs r5, r2 17d08: 2b00 cmp r3, #0 17d0a: db2c blt.n 17d66 <__udivmoddi4+0x166> 17d0c: 0026 movs r6, r4 17d0e: 409e lsls r6, r3 17d10: 0033 movs r3, r6 17d12: 0026 movs r6, r4 17d14: 4647 mov r7, r8 17d16: 40be lsls r6, r7 17d18: 0032 movs r2, r6 17d1a: 1a80 subs r0, r0, r2 17d1c: 4199 sbcs r1, r3 17d1e: 9000 str r0, [sp, #0] 17d20: 9101 str r1, [sp, #4] 17d22: e7ae b.n 17c82 <__udivmoddi4+0x82> 17d24: 4642 mov r2, r8 17d26: 2320 movs r3, #32 17d28: 1a9b subs r3, r3, r2 17d2a: 4652 mov r2, sl 17d2c: 40da lsrs r2, r3 17d2e: 4641 mov r1, r8 17d30: 0013 movs r3, r2 17d32: 464a mov r2, r9 17d34: 408a lsls r2, r1 17d36: 0017 movs r7, r2 17d38: 431f orrs r7, r3 17d3a: e782 b.n 17c42 <__udivmoddi4+0x42> 17d3c: 4642 mov r2, r8 17d3e: 2320 movs r3, #32 17d40: 1a9b subs r3, r3, r2 17d42: 002a movs r2, r5 17d44: 4646 mov r6, r8 17d46: 409a lsls r2, r3 17d48: 0023 movs r3, r4 17d4a: 40f3 lsrs r3, r6 17d4c: 4313 orrs r3, r2 17d4e: e7d5 b.n 17cfc <__udivmoddi4+0xfc> 17d50: 4642 mov r2, r8 17d52: 2320 movs r3, #32 17d54: 2100 movs r1, #0 17d56: 1a9b subs r3, r3, r2 17d58: 2200 movs r2, #0 17d5a: 9100 str r1, [sp, #0] 17d5c: 9201 str r2, [sp, #4] 17d5e: 2201 movs r2, #1 17d60: 40da lsrs r2, r3 17d62: 9201 str r2, [sp, #4] 17d64: e782 b.n 17c6c <__udivmoddi4+0x6c> 17d66: 4642 mov r2, r8 17d68: 2320 movs r3, #32 17d6a: 0026 movs r6, r4 17d6c: 1a9b subs r3, r3, r2 17d6e: 40de lsrs r6, r3 17d70: 002f movs r7, r5 17d72: 46b4 mov ip, r6 17d74: 4097 lsls r7, r2 17d76: 4666 mov r6, ip 17d78: 003b movs r3, r7 17d7a: 4333 orrs r3, r6 17d7c: e7c9 b.n 17d12 <__udivmoddi4+0x112> 17d7e: 46c0 nop ; (mov r8, r8) 00017d80 <__clzsi2>: 17d80: 211c movs r1, #28 17d82: 2301 movs r3, #1 17d84: 041b lsls r3, r3, #16 17d86: 4298 cmp r0, r3 17d88: d301 bcc.n 17d8e <__clzsi2+0xe> 17d8a: 0c00 lsrs r0, r0, #16 17d8c: 3910 subs r1, #16 17d8e: 0a1b lsrs r3, r3, #8 17d90: 4298 cmp r0, r3 17d92: d301 bcc.n 17d98 <__clzsi2+0x18> 17d94: 0a00 lsrs r0, r0, #8 17d96: 3908 subs r1, #8 17d98: 091b lsrs r3, r3, #4 17d9a: 4298 cmp r0, r3 17d9c: d301 bcc.n 17da2 <__clzsi2+0x22> 17d9e: 0900 lsrs r0, r0, #4 17da0: 3904 subs r1, #4 17da2: a202 add r2, pc, #8 ; (adr r2, 17dac <__clzsi2+0x2c>) 17da4: 5c10 ldrb r0, [r2, r0] 17da6: 1840 adds r0, r0, r1 17da8: 4770 bx lr 17daa: 46c0 nop ; (mov r8, r8) 17dac: 02020304 .word 0x02020304 17db0: 01010101 .word 0x01010101 ... 00017dbc <__clzdi2>: 17dbc: b510 push {r4, lr} 17dbe: 2900 cmp r1, #0 17dc0: d103 bne.n 17dca <__clzdi2+0xe> 17dc2: f7ff ffdd bl 17d80 <__clzsi2> 17dc6: 3020 adds r0, #32 17dc8: e002 b.n 17dd0 <__clzdi2+0x14> 17dca: 1c08 adds r0, r1, #0 17dcc: f7ff ffd8 bl 17d80 <__clzsi2> 17dd0: bd10 pop {r4, pc} 17dd2: 46c0 nop ; (mov r8, r8) 00017dd4 <__libc_init_array>: 17dd4: b570 push {r4, r5, r6, lr} 17dd6: 2600 movs r6, #0 17dd8: 4d0c ldr r5, [pc, #48] ; (17e0c <__libc_init_array+0x38>) 17dda: 4c0d ldr r4, [pc, #52] ; (17e10 <__libc_init_array+0x3c>) 17ddc: 1b64 subs r4, r4, r5 17dde: 10a4 asrs r4, r4, #2 17de0: 42a6 cmp r6, r4 17de2: d109 bne.n 17df8 <__libc_init_array+0x24> 17de4: 2600 movs r6, #0 17de6: f004 fdcb bl 1c980 <_init> 17dea: 4d0a ldr r5, [pc, #40] ; (17e14 <__libc_init_array+0x40>) 17dec: 4c0a ldr r4, [pc, #40] ; (17e18 <__libc_init_array+0x44>) 17dee: 1b64 subs r4, r4, r5 17df0: 10a4 asrs r4, r4, #2 17df2: 42a6 cmp r6, r4 17df4: d105 bne.n 17e02 <__libc_init_array+0x2e> 17df6: bd70 pop {r4, r5, r6, pc} 17df8: 00b3 lsls r3, r6, #2 17dfa: 58eb ldr r3, [r5, r3] 17dfc: 4798 blx r3 17dfe: 3601 adds r6, #1 17e00: e7ee b.n 17de0 <__libc_init_array+0xc> 17e02: 00b3 lsls r3, r6, #2 17e04: 58eb ldr r3, [r5, r3] 17e06: 4798 blx r3 17e08: 3601 adds r6, #1 17e0a: e7f2 b.n 17df2 <__libc_init_array+0x1e> 17e0c: 0001c98c .word 0x0001c98c 17e10: 0001c98c .word 0x0001c98c 17e14: 0001c98c .word 0x0001c98c 17e18: 0001c990 .word 0x0001c990 00017e1c : 17e1c: b530 push {r4, r5, lr} 17e1e: 2400 movs r4, #0 17e20: 42a2 cmp r2, r4 17e22: d101 bne.n 17e28 17e24: 2000 movs r0, #0 17e26: e005 b.n 17e34 17e28: 5d03 ldrb r3, [r0, r4] 17e2a: 1c65 adds r5, r4, #1 17e2c: 5d0c ldrb r4, [r1, r4] 17e2e: 42a3 cmp r3, r4 17e30: d001 beq.n 17e36 17e32: 1b18 subs r0, r3, r4 17e34: bd30 pop {r4, r5, pc} 17e36: 002c movs r4, r5 17e38: e7f2 b.n 17e20 00017e3a : 17e3a: 2300 movs r3, #0 17e3c: b510 push {r4, lr} 17e3e: 429a cmp r2, r3 17e40: d100 bne.n 17e44 17e42: bd10 pop {r4, pc} 17e44: 5ccc ldrb r4, [r1, r3] 17e46: 54c4 strb r4, [r0, r3] 17e48: 3301 adds r3, #1 17e4a: e7f8 b.n 17e3e 00017e4c : 17e4c: 0003 movs r3, r0 17e4e: 1882 adds r2, r0, r2 17e50: 4293 cmp r3, r2 17e52: d100 bne.n 17e56 17e54: 4770 bx lr 17e56: 7019 strb r1, [r3, #0] 17e58: 3301 adds r3, #1 17e5a: e7f9 b.n 17e50 00017e5c : 17e5c: 7802 ldrb r2, [r0, #0] 17e5e: 780b ldrb r3, [r1, #0] 17e60: 2a00 cmp r2, #0 17e62: d003 beq.n 17e6c 17e64: 3001 adds r0, #1 17e66: 3101 adds r1, #1 17e68: 429a cmp r2, r3 17e6a: d0f7 beq.n 17e5c 17e6c: 1ad0 subs r0, r2, r3 17e6e: 4770 bx lr 00017e70 : 17e70: 1c03 adds r3, r0, #0 17e72: 780a ldrb r2, [r1, #0] 17e74: 3101 adds r1, #1 17e76: 701a strb r2, [r3, #0] 17e78: 3301 adds r3, #1 17e7a: 2a00 cmp r2, #0 17e7c: d1f9 bne.n 17e72 17e7e: 4770 bx lr 00017e80 : 17e80: 2300 movs r3, #0 17e82: 5cc2 ldrb r2, [r0, r3] 17e84: 3301 adds r3, #1 17e86: 2a00 cmp r2, #0 17e88: d1fb bne.n 17e82 17e8a: 1e58 subs r0, r3, #1 17e8c: 4770 bx lr ... 00017e90 <_vsiprintf_r>: 17e90: b530 push {r4, r5, lr} 17e92: b09b sub sp, #108 ; 0x6c 17e94: 9100 str r1, [sp, #0] 17e96: 9104 str r1, [sp, #16] 17e98: 4908 ldr r1, [pc, #32] ; (17ebc <_vsiprintf_r+0x2c>) 17e9a: 466d mov r5, sp 17e9c: 9102 str r1, [sp, #8] 17e9e: 9105 str r1, [sp, #20] 17ea0: 2101 movs r1, #1 17ea2: 2482 movs r4, #130 ; 0x82 17ea4: 4249 negs r1, r1 17ea6: 81e9 strh r1, [r5, #14] 17ea8: 00a4 lsls r4, r4, #2 17eaa: 4669 mov r1, sp 17eac: 81ac strh r4, [r5, #12] 17eae: f000 f875 bl 17f9c <_svfiprintf_r> 17eb2: 2300 movs r3, #0 17eb4: 9a00 ldr r2, [sp, #0] 17eb6: 7013 strb r3, [r2, #0] 17eb8: b01b add sp, #108 ; 0x6c 17eba: bd30 pop {r4, r5, pc} 17ebc: 7fffffff .word 0x7fffffff 00017ec0 : 17ec0: b510 push {r4, lr} 17ec2: 0013 movs r3, r2 17ec4: 000a movs r2, r1 17ec6: 0001 movs r1, r0 17ec8: 4802 ldr r0, [pc, #8] ; (17ed4 ) 17eca: 6800 ldr r0, [r0, #0] 17ecc: f7ff ffe0 bl 17e90 <_vsiprintf_r> 17ed0: bd10 pop {r4, pc} 17ed2: 46c0 nop ; (mov r8, r8) 17ed4: 20000060 .word 0x20000060 00017ed8 <__ssputs_r>: 17ed8: b5f0 push {r4, r5, r6, r7, lr} 17eda: 688e ldr r6, [r1, #8] 17edc: b085 sub sp, #20 17ede: 0007 movs r7, r0 17ee0: 000c movs r4, r1 17ee2: 9203 str r2, [sp, #12] 17ee4: 9301 str r3, [sp, #4] 17ee6: 429e cmp r6, r3 17ee8: d839 bhi.n 17f5e <__ssputs_r+0x86> 17eea: 2390 movs r3, #144 ; 0x90 17eec: 898a ldrh r2, [r1, #12] 17eee: 00db lsls r3, r3, #3 17ef0: 421a tst r2, r3 17ef2: d034 beq.n 17f5e <__ssputs_r+0x86> 17ef4: 2503 movs r5, #3 17ef6: 6909 ldr r1, [r1, #16] 17ef8: 6823 ldr r3, [r4, #0] 17efa: 1a5b subs r3, r3, r1 17efc: 9302 str r3, [sp, #8] 17efe: 6963 ldr r3, [r4, #20] 17f00: 9802 ldr r0, [sp, #8] 17f02: 435d muls r5, r3 17f04: 0feb lsrs r3, r5, #31 17f06: 195d adds r5, r3, r5 17f08: 9b01 ldr r3, [sp, #4] 17f0a: 106d asrs r5, r5, #1 17f0c: 3301 adds r3, #1 17f0e: 181b adds r3, r3, r0 17f10: 42ab cmp r3, r5 17f12: d900 bls.n 17f16 <__ssputs_r+0x3e> 17f14: 001d movs r5, r3 17f16: 0553 lsls r3, r2, #21 17f18: d532 bpl.n 17f80 <__ssputs_r+0xa8> 17f1a: 0029 movs r1, r5 17f1c: 0038 movs r0, r7 17f1e: f000 fb31 bl 18584 <_malloc_r> 17f22: 1e06 subs r6, r0, #0 17f24: d109 bne.n 17f3a <__ssputs_r+0x62> 17f26: 230c movs r3, #12 17f28: 603b str r3, [r7, #0] 17f2a: 2340 movs r3, #64 ; 0x40 17f2c: 2001 movs r0, #1 17f2e: 89a2 ldrh r2, [r4, #12] 17f30: 4240 negs r0, r0 17f32: 4313 orrs r3, r2 17f34: 81a3 strh r3, [r4, #12] 17f36: b005 add sp, #20 17f38: bdf0 pop {r4, r5, r6, r7, pc} 17f3a: 9a02 ldr r2, [sp, #8] 17f3c: 6921 ldr r1, [r4, #16] 17f3e: f7ff ff7c bl 17e3a 17f42: 89a3 ldrh r3, [r4, #12] 17f44: 4a14 ldr r2, [pc, #80] ; (17f98 <__ssputs_r+0xc0>) 17f46: 401a ands r2, r3 17f48: 2380 movs r3, #128 ; 0x80 17f4a: 4313 orrs r3, r2 17f4c: 81a3 strh r3, [r4, #12] 17f4e: 9b02 ldr r3, [sp, #8] 17f50: 6126 str r6, [r4, #16] 17f52: 18f6 adds r6, r6, r3 17f54: 6026 str r6, [r4, #0] 17f56: 6165 str r5, [r4, #20] 17f58: 9e01 ldr r6, [sp, #4] 17f5a: 1aed subs r5, r5, r3 17f5c: 60a5 str r5, [r4, #8] 17f5e: 9b01 ldr r3, [sp, #4] 17f60: 42b3 cmp r3, r6 17f62: d200 bcs.n 17f66 <__ssputs_r+0x8e> 17f64: 001e movs r6, r3 17f66: 0032 movs r2, r6 17f68: 9903 ldr r1, [sp, #12] 17f6a: 6820 ldr r0, [r4, #0] 17f6c: f000 faad bl 184ca 17f70: 68a3 ldr r3, [r4, #8] 17f72: 2000 movs r0, #0 17f74: 1b9b subs r3, r3, r6 17f76: 60a3 str r3, [r4, #8] 17f78: 6823 ldr r3, [r4, #0] 17f7a: 199e adds r6, r3, r6 17f7c: 6026 str r6, [r4, #0] 17f7e: e7da b.n 17f36 <__ssputs_r+0x5e> 17f80: 002a movs r2, r5 17f82: 0038 movs r0, r7 17f84: f000 fb5c bl 18640 <_realloc_r> 17f88: 1e06 subs r6, r0, #0 17f8a: d1e0 bne.n 17f4e <__ssputs_r+0x76> 17f8c: 6921 ldr r1, [r4, #16] 17f8e: 0038 movs r0, r7 17f90: f000 faae bl 184f0 <_free_r> 17f94: e7c7 b.n 17f26 <__ssputs_r+0x4e> 17f96: 46c0 nop ; (mov r8, r8) 17f98: fffffb7f .word 0xfffffb7f 00017f9c <_svfiprintf_r>: 17f9c: b5f0 push {r4, r5, r6, r7, lr} 17f9e: b09f sub sp, #124 ; 0x7c 17fa0: 9002 str r0, [sp, #8] 17fa2: 9305 str r3, [sp, #20] 17fa4: 898b ldrh r3, [r1, #12] 17fa6: 000f movs r7, r1 17fa8: 0016 movs r6, r2 17faa: 061b lsls r3, r3, #24 17fac: d511 bpl.n 17fd2 <_svfiprintf_r+0x36> 17fae: 690b ldr r3, [r1, #16] 17fb0: 2b00 cmp r3, #0 17fb2: d10e bne.n 17fd2 <_svfiprintf_r+0x36> 17fb4: 2140 movs r1, #64 ; 0x40 17fb6: f000 fae5 bl 18584 <_malloc_r> 17fba: 6038 str r0, [r7, #0] 17fbc: 6138 str r0, [r7, #16] 17fbe: 2800 cmp r0, #0 17fc0: d105 bne.n 17fce <_svfiprintf_r+0x32> 17fc2: 230c movs r3, #12 17fc4: 9a02 ldr r2, [sp, #8] 17fc6: 3801 subs r0, #1 17fc8: 6013 str r3, [r2, #0] 17fca: b01f add sp, #124 ; 0x7c 17fcc: bdf0 pop {r4, r5, r6, r7, pc} 17fce: 2340 movs r3, #64 ; 0x40 17fd0: 617b str r3, [r7, #20] 17fd2: 2300 movs r3, #0 17fd4: ad06 add r5, sp, #24 17fd6: 616b str r3, [r5, #20] 17fd8: 3320 adds r3, #32 17fda: 766b strb r3, [r5, #25] 17fdc: 3310 adds r3, #16 17fde: 76ab strb r3, [r5, #26] 17fe0: 0034 movs r4, r6 17fe2: 7823 ldrb r3, [r4, #0] 17fe4: 2b00 cmp r3, #0 17fe6: d147 bne.n 18078 <_svfiprintf_r+0xdc> 17fe8: 1ba3 subs r3, r4, r6 17fea: 9304 str r3, [sp, #16] 17fec: d00d beq.n 1800a <_svfiprintf_r+0x6e> 17fee: 1ba3 subs r3, r4, r6 17ff0: 0032 movs r2, r6 17ff2: 0039 movs r1, r7 17ff4: 9802 ldr r0, [sp, #8] 17ff6: f7ff ff6f bl 17ed8 <__ssputs_r> 17ffa: 1c43 adds r3, r0, #1 17ffc: d100 bne.n 18000 <_svfiprintf_r+0x64> 17ffe: e0b5 b.n 1816c <_svfiprintf_r+0x1d0> 18000: 696a ldr r2, [r5, #20] 18002: 9b04 ldr r3, [sp, #16] 18004: 4694 mov ip, r2 18006: 4463 add r3, ip 18008: 616b str r3, [r5, #20] 1800a: 7823 ldrb r3, [r4, #0] 1800c: 2b00 cmp r3, #0 1800e: d100 bne.n 18012 <_svfiprintf_r+0x76> 18010: e0ac b.n 1816c <_svfiprintf_r+0x1d0> 18012: 2201 movs r2, #1 18014: 2300 movs r3, #0 18016: 4252 negs r2, r2 18018: 606a str r2, [r5, #4] 1801a: a902 add r1, sp, #8 1801c: 3254 adds r2, #84 ; 0x54 1801e: 1852 adds r2, r2, r1 18020: 3401 adds r4, #1 18022: 602b str r3, [r5, #0] 18024: 60eb str r3, [r5, #12] 18026: 60ab str r3, [r5, #8] 18028: 7013 strb r3, [r2, #0] 1802a: 65ab str r3, [r5, #88] ; 0x58 1802c: 4e58 ldr r6, [pc, #352] ; (18190 <_svfiprintf_r+0x1f4>) 1802e: 2205 movs r2, #5 18030: 7821 ldrb r1, [r4, #0] 18032: 0030 movs r0, r6 18034: f000 fa3e bl 184b4 18038: 1c62 adds r2, r4, #1 1803a: 2800 cmp r0, #0 1803c: d120 bne.n 18080 <_svfiprintf_r+0xe4> 1803e: 6829 ldr r1, [r5, #0] 18040: 06cb lsls r3, r1, #27 18042: d504 bpl.n 1804e <_svfiprintf_r+0xb2> 18044: 2353 movs r3, #83 ; 0x53 18046: ae02 add r6, sp, #8 18048: 3020 adds r0, #32 1804a: 199b adds r3, r3, r6 1804c: 7018 strb r0, [r3, #0] 1804e: 070b lsls r3, r1, #28 18050: d504 bpl.n 1805c <_svfiprintf_r+0xc0> 18052: 2353 movs r3, #83 ; 0x53 18054: 202b movs r0, #43 ; 0x2b 18056: ae02 add r6, sp, #8 18058: 199b adds r3, r3, r6 1805a: 7018 strb r0, [r3, #0] 1805c: 7823 ldrb r3, [r4, #0] 1805e: 2b2a cmp r3, #42 ; 0x2a 18060: d016 beq.n 18090 <_svfiprintf_r+0xf4> 18062: 2000 movs r0, #0 18064: 210a movs r1, #10 18066: 9b09 ldr r3, [sp, #36] ; 0x24 18068: 7822 ldrb r2, [r4, #0] 1806a: 3a30 subs r2, #48 ; 0x30 1806c: 2a09 cmp r2, #9 1806e: d955 bls.n 1811c <_svfiprintf_r+0x180> 18070: 2800 cmp r0, #0 18072: d015 beq.n 180a0 <_svfiprintf_r+0x104> 18074: 9309 str r3, [sp, #36] ; 0x24 18076: e013 b.n 180a0 <_svfiprintf_r+0x104> 18078: 2b25 cmp r3, #37 ; 0x25 1807a: d0b5 beq.n 17fe8 <_svfiprintf_r+0x4c> 1807c: 3401 adds r4, #1 1807e: e7b0 b.n 17fe2 <_svfiprintf_r+0x46> 18080: 2301 movs r3, #1 18082: 1b80 subs r0, r0, r6 18084: 4083 lsls r3, r0 18086: 6829 ldr r1, [r5, #0] 18088: 0014 movs r4, r2 1808a: 430b orrs r3, r1 1808c: 602b str r3, [r5, #0] 1808e: e7cd b.n 1802c <_svfiprintf_r+0x90> 18090: 9b05 ldr r3, [sp, #20] 18092: 1d18 adds r0, r3, #4 18094: 681b ldr r3, [r3, #0] 18096: 9005 str r0, [sp, #20] 18098: 2b00 cmp r3, #0 1809a: db39 blt.n 18110 <_svfiprintf_r+0x174> 1809c: 9309 str r3, [sp, #36] ; 0x24 1809e: 0014 movs r4, r2 180a0: 7823 ldrb r3, [r4, #0] 180a2: 2b2e cmp r3, #46 ; 0x2e 180a4: d10b bne.n 180be <_svfiprintf_r+0x122> 180a6: 7863 ldrb r3, [r4, #1] 180a8: 1c62 adds r2, r4, #1 180aa: 2b2a cmp r3, #42 ; 0x2a 180ac: d13e bne.n 1812c <_svfiprintf_r+0x190> 180ae: 9b05 ldr r3, [sp, #20] 180b0: 3402 adds r4, #2 180b2: 1d1a adds r2, r3, #4 180b4: 681b ldr r3, [r3, #0] 180b6: 9205 str r2, [sp, #20] 180b8: 2b00 cmp r3, #0 180ba: db34 blt.n 18126 <_svfiprintf_r+0x18a> 180bc: 9307 str r3, [sp, #28] 180be: 4e35 ldr r6, [pc, #212] ; (18194 <_svfiprintf_r+0x1f8>) 180c0: 7821 ldrb r1, [r4, #0] 180c2: 2203 movs r2, #3 180c4: 0030 movs r0, r6 180c6: f000 f9f5 bl 184b4 180ca: 2800 cmp r0, #0 180cc: d006 beq.n 180dc <_svfiprintf_r+0x140> 180ce: 2340 movs r3, #64 ; 0x40 180d0: 1b80 subs r0, r0, r6 180d2: 4083 lsls r3, r0 180d4: 682a ldr r2, [r5, #0] 180d6: 3401 adds r4, #1 180d8: 4313 orrs r3, r2 180da: 602b str r3, [r5, #0] 180dc: 7821 ldrb r1, [r4, #0] 180de: 2206 movs r2, #6 180e0: 482d ldr r0, [pc, #180] ; (18198 <_svfiprintf_r+0x1fc>) 180e2: 1c66 adds r6, r4, #1 180e4: 7629 strb r1, [r5, #24] 180e6: f000 f9e5 bl 184b4 180ea: 2800 cmp r0, #0 180ec: d046 beq.n 1817c <_svfiprintf_r+0x1e0> 180ee: 4b2b ldr r3, [pc, #172] ; (1819c <_svfiprintf_r+0x200>) 180f0: 2b00 cmp r3, #0 180f2: d12f bne.n 18154 <_svfiprintf_r+0x1b8> 180f4: 6829 ldr r1, [r5, #0] 180f6: 9b05 ldr r3, [sp, #20] 180f8: 2207 movs r2, #7 180fa: 05c9 lsls r1, r1, #23 180fc: d528 bpl.n 18150 <_svfiprintf_r+0x1b4> 180fe: 189b adds r3, r3, r2 18100: 4393 bics r3, r2 18102: 3308 adds r3, #8 18104: 9305 str r3, [sp, #20] 18106: 696b ldr r3, [r5, #20] 18108: 9a03 ldr r2, [sp, #12] 1810a: 189b adds r3, r3, r2 1810c: 616b str r3, [r5, #20] 1810e: e767 b.n 17fe0 <_svfiprintf_r+0x44> 18110: 425b negs r3, r3 18112: 60eb str r3, [r5, #12] 18114: 2302 movs r3, #2 18116: 430b orrs r3, r1 18118: 602b str r3, [r5, #0] 1811a: e7c0 b.n 1809e <_svfiprintf_r+0x102> 1811c: 434b muls r3, r1 1811e: 3401 adds r4, #1 18120: 189b adds r3, r3, r2 18122: 2001 movs r0, #1 18124: e7a0 b.n 18068 <_svfiprintf_r+0xcc> 18126: 2301 movs r3, #1 18128: 425b negs r3, r3 1812a: e7c7 b.n 180bc <_svfiprintf_r+0x120> 1812c: 2300 movs r3, #0 1812e: 0014 movs r4, r2 18130: 200a movs r0, #10 18132: 001a movs r2, r3 18134: 606b str r3, [r5, #4] 18136: 7821 ldrb r1, [r4, #0] 18138: 3930 subs r1, #48 ; 0x30 1813a: 2909 cmp r1, #9 1813c: d903 bls.n 18146 <_svfiprintf_r+0x1aa> 1813e: 2b00 cmp r3, #0 18140: d0bd beq.n 180be <_svfiprintf_r+0x122> 18142: 9207 str r2, [sp, #28] 18144: e7bb b.n 180be <_svfiprintf_r+0x122> 18146: 4342 muls r2, r0 18148: 3401 adds r4, #1 1814a: 1852 adds r2, r2, r1 1814c: 2301 movs r3, #1 1814e: e7f2 b.n 18136 <_svfiprintf_r+0x19a> 18150: 3307 adds r3, #7 18152: e7d5 b.n 18100 <_svfiprintf_r+0x164> 18154: ab05 add r3, sp, #20 18156: 9300 str r3, [sp, #0] 18158: 003a movs r2, r7 1815a: 4b11 ldr r3, [pc, #68] ; (181a0 <_svfiprintf_r+0x204>) 1815c: 0029 movs r1, r5 1815e: 9802 ldr r0, [sp, #8] 18160: e000 b.n 18164 <_svfiprintf_r+0x1c8> 18162: bf00 nop 18164: 9003 str r0, [sp, #12] 18166: 9b03 ldr r3, [sp, #12] 18168: 3301 adds r3, #1 1816a: d1cc bne.n 18106 <_svfiprintf_r+0x16a> 1816c: 89bb ldrh r3, [r7, #12] 1816e: 980b ldr r0, [sp, #44] ; 0x2c 18170: 065b lsls r3, r3, #25 18172: d400 bmi.n 18176 <_svfiprintf_r+0x1da> 18174: e729 b.n 17fca <_svfiprintf_r+0x2e> 18176: 2001 movs r0, #1 18178: 4240 negs r0, r0 1817a: e726 b.n 17fca <_svfiprintf_r+0x2e> 1817c: ab05 add r3, sp, #20 1817e: 9300 str r3, [sp, #0] 18180: 003a movs r2, r7 18182: 4b07 ldr r3, [pc, #28] ; (181a0 <_svfiprintf_r+0x204>) 18184: 0029 movs r1, r5 18186: 9802 ldr r0, [sp, #8] 18188: f000 f87a bl 18280 <_printf_i> 1818c: e7ea b.n 18164 <_svfiprintf_r+0x1c8> 1818e: 46c0 nop ; (mov r8, r8) 18190: 0001c94c .word 0x0001c94c 18194: 0001c952 .word 0x0001c952 18198: 0001c956 .word 0x0001c956 1819c: 00000000 .word 0x00000000 181a0: 00017ed9 .word 0x00017ed9 000181a4 <_printf_common>: 181a4: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} 181a6: 0015 movs r5, r2 181a8: 9301 str r3, [sp, #4] 181aa: 688a ldr r2, [r1, #8] 181ac: 690b ldr r3, [r1, #16] 181ae: 9000 str r0, [sp, #0] 181b0: 000c movs r4, r1 181b2: 4293 cmp r3, r2 181b4: da00 bge.n 181b8 <_printf_common+0x14> 181b6: 0013 movs r3, r2 181b8: 0022 movs r2, r4 181ba: 602b str r3, [r5, #0] 181bc: 3243 adds r2, #67 ; 0x43 181be: 7812 ldrb r2, [r2, #0] 181c0: 2a00 cmp r2, #0 181c2: d001 beq.n 181c8 <_printf_common+0x24> 181c4: 3301 adds r3, #1 181c6: 602b str r3, [r5, #0] 181c8: 6823 ldr r3, [r4, #0] 181ca: 069b lsls r3, r3, #26 181cc: d502 bpl.n 181d4 <_printf_common+0x30> 181ce: 682b ldr r3, [r5, #0] 181d0: 3302 adds r3, #2 181d2: 602b str r3, [r5, #0] 181d4: 2706 movs r7, #6 181d6: 6823 ldr r3, [r4, #0] 181d8: 401f ands r7, r3 181da: d027 beq.n 1822c <_printf_common+0x88> 181dc: 0023 movs r3, r4 181de: 3343 adds r3, #67 ; 0x43 181e0: 781b ldrb r3, [r3, #0] 181e2: 1e5a subs r2, r3, #1 181e4: 4193 sbcs r3, r2 181e6: 6822 ldr r2, [r4, #0] 181e8: 0692 lsls r2, r2, #26 181ea: d430 bmi.n 1824e <_printf_common+0xaa> 181ec: 0022 movs r2, r4 181ee: 9901 ldr r1, [sp, #4] 181f0: 3243 adds r2, #67 ; 0x43 181f2: 9800 ldr r0, [sp, #0] 181f4: 9e08 ldr r6, [sp, #32] 181f6: 47b0 blx r6 181f8: 1c43 adds r3, r0, #1 181fa: d025 beq.n 18248 <_printf_common+0xa4> 181fc: 2306 movs r3, #6 181fe: 6820 ldr r0, [r4, #0] 18200: 682a ldr r2, [r5, #0] 18202: 68e1 ldr r1, [r4, #12] 18204: 4003 ands r3, r0 18206: 2500 movs r5, #0 18208: 2b04 cmp r3, #4 1820a: d103 bne.n 18214 <_printf_common+0x70> 1820c: 1a8d subs r5, r1, r2 1820e: 43eb mvns r3, r5 18210: 17db asrs r3, r3, #31 18212: 401d ands r5, r3 18214: 68a3 ldr r3, [r4, #8] 18216: 6922 ldr r2, [r4, #16] 18218: 4293 cmp r3, r2 1821a: dd01 ble.n 18220 <_printf_common+0x7c> 1821c: 1a9b subs r3, r3, r2 1821e: 18ed adds r5, r5, r3 18220: 2700 movs r7, #0 18222: 42bd cmp r5, r7 18224: d120 bne.n 18268 <_printf_common+0xc4> 18226: 2000 movs r0, #0 18228: e010 b.n 1824c <_printf_common+0xa8> 1822a: 3701 adds r7, #1 1822c: 68e3 ldr r3, [r4, #12] 1822e: 682a ldr r2, [r5, #0] 18230: 1a9b subs r3, r3, r2 18232: 429f cmp r7, r3 18234: dad2 bge.n 181dc <_printf_common+0x38> 18236: 0022 movs r2, r4 18238: 2301 movs r3, #1 1823a: 3219 adds r2, #25 1823c: 9901 ldr r1, [sp, #4] 1823e: 9800 ldr r0, [sp, #0] 18240: 9e08 ldr r6, [sp, #32] 18242: 47b0 blx r6 18244: 1c43 adds r3, r0, #1 18246: d1f0 bne.n 1822a <_printf_common+0x86> 18248: 2001 movs r0, #1 1824a: 4240 negs r0, r0 1824c: bdfe pop {r1, r2, r3, r4, r5, r6, r7, pc} 1824e: 2030 movs r0, #48 ; 0x30 18250: 18e1 adds r1, r4, r3 18252: 3143 adds r1, #67 ; 0x43 18254: 7008 strb r0, [r1, #0] 18256: 0021 movs r1, r4 18258: 1c5a adds r2, r3, #1 1825a: 3145 adds r1, #69 ; 0x45 1825c: 7809 ldrb r1, [r1, #0] 1825e: 18a2 adds r2, r4, r2 18260: 3243 adds r2, #67 ; 0x43 18262: 3302 adds r3, #2 18264: 7011 strb r1, [r2, #0] 18266: e7c1 b.n 181ec <_printf_common+0x48> 18268: 0022 movs r2, r4 1826a: 2301 movs r3, #1 1826c: 321a adds r2, #26 1826e: 9901 ldr r1, [sp, #4] 18270: 9800 ldr r0, [sp, #0] 18272: 9e08 ldr r6, [sp, #32] 18274: 47b0 blx r6 18276: 1c43 adds r3, r0, #1 18278: d0e6 beq.n 18248 <_printf_common+0xa4> 1827a: 3701 adds r7, #1 1827c: e7d1 b.n 18222 <_printf_common+0x7e> ... 00018280 <_printf_i>: 18280: b5f0 push {r4, r5, r6, r7, lr} 18282: b08b sub sp, #44 ; 0x2c 18284: 9206 str r2, [sp, #24] 18286: 000a movs r2, r1 18288: 3243 adds r2, #67 ; 0x43 1828a: 9307 str r3, [sp, #28] 1828c: 9005 str r0, [sp, #20] 1828e: 9204 str r2, [sp, #16] 18290: 7e0a ldrb r2, [r1, #24] 18292: 000c movs r4, r1 18294: 9b10 ldr r3, [sp, #64] ; 0x40 18296: 2a6e cmp r2, #110 ; 0x6e 18298: d100 bne.n 1829c <_printf_i+0x1c> 1829a: e08f b.n 183bc <_printf_i+0x13c> 1829c: d817 bhi.n 182ce <_printf_i+0x4e> 1829e: 2a63 cmp r2, #99 ; 0x63 182a0: d02c beq.n 182fc <_printf_i+0x7c> 182a2: d808 bhi.n 182b6 <_printf_i+0x36> 182a4: 2a00 cmp r2, #0 182a6: d100 bne.n 182aa <_printf_i+0x2a> 182a8: e099 b.n 183de <_printf_i+0x15e> 182aa: 2a58 cmp r2, #88 ; 0x58 182ac: d054 beq.n 18358 <_printf_i+0xd8> 182ae: 0026 movs r6, r4 182b0: 3642 adds r6, #66 ; 0x42 182b2: 7032 strb r2, [r6, #0] 182b4: e029 b.n 1830a <_printf_i+0x8a> 182b6: 2a64 cmp r2, #100 ; 0x64 182b8: d001 beq.n 182be <_printf_i+0x3e> 182ba: 2a69 cmp r2, #105 ; 0x69 182bc: d1f7 bne.n 182ae <_printf_i+0x2e> 182be: 6821 ldr r1, [r4, #0] 182c0: 681a ldr r2, [r3, #0] 182c2: 0608 lsls r0, r1, #24 182c4: d523 bpl.n 1830e <_printf_i+0x8e> 182c6: 1d11 adds r1, r2, #4 182c8: 6019 str r1, [r3, #0] 182ca: 6815 ldr r5, [r2, #0] 182cc: e025 b.n 1831a <_printf_i+0x9a> 182ce: 2a73 cmp r2, #115 ; 0x73 182d0: d100 bne.n 182d4 <_printf_i+0x54> 182d2: e088 b.n 183e6 <_printf_i+0x166> 182d4: d808 bhi.n 182e8 <_printf_i+0x68> 182d6: 2a6f cmp r2, #111 ; 0x6f 182d8: d029 beq.n 1832e <_printf_i+0xae> 182da: 2a70 cmp r2, #112 ; 0x70 182dc: d1e7 bne.n 182ae <_printf_i+0x2e> 182de: 2220 movs r2, #32 182e0: 6809 ldr r1, [r1, #0] 182e2: 430a orrs r2, r1 182e4: 6022 str r2, [r4, #0] 182e6: e003 b.n 182f0 <_printf_i+0x70> 182e8: 2a75 cmp r2, #117 ; 0x75 182ea: d020 beq.n 1832e <_printf_i+0xae> 182ec: 2a78 cmp r2, #120 ; 0x78 182ee: d1de bne.n 182ae <_printf_i+0x2e> 182f0: 0022 movs r2, r4 182f2: 2178 movs r1, #120 ; 0x78 182f4: 3245 adds r2, #69 ; 0x45 182f6: 7011 strb r1, [r2, #0] 182f8: 4a6c ldr r2, [pc, #432] ; (184ac <_printf_i+0x22c>) 182fa: e030 b.n 1835e <_printf_i+0xde> 182fc: 000e movs r6, r1 182fe: 681a ldr r2, [r3, #0] 18300: 3642 adds r6, #66 ; 0x42 18302: 1d11 adds r1, r2, #4 18304: 6019 str r1, [r3, #0] 18306: 6813 ldr r3, [r2, #0] 18308: 7033 strb r3, [r6, #0] 1830a: 2301 movs r3, #1 1830c: e079 b.n 18402 <_printf_i+0x182> 1830e: 0649 lsls r1, r1, #25 18310: d5d9 bpl.n 182c6 <_printf_i+0x46> 18312: 1d11 adds r1, r2, #4 18314: 6019 str r1, [r3, #0] 18316: 2300 movs r3, #0 18318: 5ed5 ldrsh r5, [r2, r3] 1831a: 2d00 cmp r5, #0 1831c: da03 bge.n 18326 <_printf_i+0xa6> 1831e: 232d movs r3, #45 ; 0x2d 18320: 9a04 ldr r2, [sp, #16] 18322: 426d negs r5, r5 18324: 7013 strb r3, [r2, #0] 18326: 4b62 ldr r3, [pc, #392] ; (184b0 <_printf_i+0x230>) 18328: 270a movs r7, #10 1832a: 9303 str r3, [sp, #12] 1832c: e02f b.n 1838e <_printf_i+0x10e> 1832e: 6820 ldr r0, [r4, #0] 18330: 6819 ldr r1, [r3, #0] 18332: 0605 lsls r5, r0, #24 18334: d503 bpl.n 1833e <_printf_i+0xbe> 18336: 1d08 adds r0, r1, #4 18338: 6018 str r0, [r3, #0] 1833a: 680d ldr r5, [r1, #0] 1833c: e005 b.n 1834a <_printf_i+0xca> 1833e: 0640 lsls r0, r0, #25 18340: d5f9 bpl.n 18336 <_printf_i+0xb6> 18342: 680d ldr r5, [r1, #0] 18344: 1d08 adds r0, r1, #4 18346: 6018 str r0, [r3, #0] 18348: b2ad uxth r5, r5 1834a: 4b59 ldr r3, [pc, #356] ; (184b0 <_printf_i+0x230>) 1834c: 2708 movs r7, #8 1834e: 9303 str r3, [sp, #12] 18350: 2a6f cmp r2, #111 ; 0x6f 18352: d018 beq.n 18386 <_printf_i+0x106> 18354: 270a movs r7, #10 18356: e016 b.n 18386 <_printf_i+0x106> 18358: 3145 adds r1, #69 ; 0x45 1835a: 700a strb r2, [r1, #0] 1835c: 4a54 ldr r2, [pc, #336] ; (184b0 <_printf_i+0x230>) 1835e: 9203 str r2, [sp, #12] 18360: 681a ldr r2, [r3, #0] 18362: 6821 ldr r1, [r4, #0] 18364: 1d10 adds r0, r2, #4 18366: 6018 str r0, [r3, #0] 18368: 6815 ldr r5, [r2, #0] 1836a: 0608 lsls r0, r1, #24 1836c: d522 bpl.n 183b4 <_printf_i+0x134> 1836e: 07cb lsls r3, r1, #31 18370: d502 bpl.n 18378 <_printf_i+0xf8> 18372: 2320 movs r3, #32 18374: 4319 orrs r1, r3 18376: 6021 str r1, [r4, #0] 18378: 2710 movs r7, #16 1837a: 2d00 cmp r5, #0 1837c: d103 bne.n 18386 <_printf_i+0x106> 1837e: 2320 movs r3, #32 18380: 6822 ldr r2, [r4, #0] 18382: 439a bics r2, r3 18384: 6022 str r2, [r4, #0] 18386: 0023 movs r3, r4 18388: 2200 movs r2, #0 1838a: 3343 adds r3, #67 ; 0x43 1838c: 701a strb r2, [r3, #0] 1838e: 6863 ldr r3, [r4, #4] 18390: 60a3 str r3, [r4, #8] 18392: 2b00 cmp r3, #0 18394: db5c blt.n 18450 <_printf_i+0x1d0> 18396: 2204 movs r2, #4 18398: 6821 ldr r1, [r4, #0] 1839a: 4391 bics r1, r2 1839c: 6021 str r1, [r4, #0] 1839e: 2d00 cmp r5, #0 183a0: d158 bne.n 18454 <_printf_i+0x1d4> 183a2: 9e04 ldr r6, [sp, #16] 183a4: 2b00 cmp r3, #0 183a6: d064 beq.n 18472 <_printf_i+0x1f2> 183a8: 0026 movs r6, r4 183aa: 9b03 ldr r3, [sp, #12] 183ac: 3642 adds r6, #66 ; 0x42 183ae: 781b ldrb r3, [r3, #0] 183b0: 7033 strb r3, [r6, #0] 183b2: e05e b.n 18472 <_printf_i+0x1f2> 183b4: 0648 lsls r0, r1, #25 183b6: d5da bpl.n 1836e <_printf_i+0xee> 183b8: b2ad uxth r5, r5 183ba: e7d8 b.n 1836e <_printf_i+0xee> 183bc: 6809 ldr r1, [r1, #0] 183be: 681a ldr r2, [r3, #0] 183c0: 0608 lsls r0, r1, #24 183c2: d505 bpl.n 183d0 <_printf_i+0x150> 183c4: 1d11 adds r1, r2, #4 183c6: 6019 str r1, [r3, #0] 183c8: 6813 ldr r3, [r2, #0] 183ca: 6962 ldr r2, [r4, #20] 183cc: 601a str r2, [r3, #0] 183ce: e006 b.n 183de <_printf_i+0x15e> 183d0: 0649 lsls r1, r1, #25 183d2: d5f7 bpl.n 183c4 <_printf_i+0x144> 183d4: 1d11 adds r1, r2, #4 183d6: 6019 str r1, [r3, #0] 183d8: 6813 ldr r3, [r2, #0] 183da: 8aa2 ldrh r2, [r4, #20] 183dc: 801a strh r2, [r3, #0] 183de: 2300 movs r3, #0 183e0: 9e04 ldr r6, [sp, #16] 183e2: 6123 str r3, [r4, #16] 183e4: e054 b.n 18490 <_printf_i+0x210> 183e6: 681a ldr r2, [r3, #0] 183e8: 1d11 adds r1, r2, #4 183ea: 6019 str r1, [r3, #0] 183ec: 6816 ldr r6, [r2, #0] 183ee: 2100 movs r1, #0 183f0: 6862 ldr r2, [r4, #4] 183f2: 0030 movs r0, r6 183f4: f000 f85e bl 184b4 183f8: 2800 cmp r0, #0 183fa: d001 beq.n 18400 <_printf_i+0x180> 183fc: 1b80 subs r0, r0, r6 183fe: 6060 str r0, [r4, #4] 18400: 6863 ldr r3, [r4, #4] 18402: 6123 str r3, [r4, #16] 18404: 2300 movs r3, #0 18406: 9a04 ldr r2, [sp, #16] 18408: 7013 strb r3, [r2, #0] 1840a: e041 b.n 18490 <_printf_i+0x210> 1840c: 6923 ldr r3, [r4, #16] 1840e: 0032 movs r2, r6 18410: 9906 ldr r1, [sp, #24] 18412: 9805 ldr r0, [sp, #20] 18414: 9d07 ldr r5, [sp, #28] 18416: 47a8 blx r5 18418: 1c43 adds r3, r0, #1 1841a: d043 beq.n 184a4 <_printf_i+0x224> 1841c: 6823 ldr r3, [r4, #0] 1841e: 2500 movs r5, #0 18420: 079b lsls r3, r3, #30 18422: d40f bmi.n 18444 <_printf_i+0x1c4> 18424: 9b09 ldr r3, [sp, #36] ; 0x24 18426: 68e0 ldr r0, [r4, #12] 18428: 4298 cmp r0, r3 1842a: da3d bge.n 184a8 <_printf_i+0x228> 1842c: 0018 movs r0, r3 1842e: e03b b.n 184a8 <_printf_i+0x228> 18430: 0022 movs r2, r4 18432: 2301 movs r3, #1 18434: 3219 adds r2, #25 18436: 9906 ldr r1, [sp, #24] 18438: 9805 ldr r0, [sp, #20] 1843a: 9e07 ldr r6, [sp, #28] 1843c: 47b0 blx r6 1843e: 1c43 adds r3, r0, #1 18440: d030 beq.n 184a4 <_printf_i+0x224> 18442: 3501 adds r5, #1 18444: 68e3 ldr r3, [r4, #12] 18446: 9a09 ldr r2, [sp, #36] ; 0x24 18448: 1a9b subs r3, r3, r2 1844a: 429d cmp r5, r3 1844c: dbf0 blt.n 18430 <_printf_i+0x1b0> 1844e: e7e9 b.n 18424 <_printf_i+0x1a4> 18450: 2d00 cmp r5, #0 18452: d0a9 beq.n 183a8 <_printf_i+0x128> 18454: 9e04 ldr r6, [sp, #16] 18456: 0028 movs r0, r5 18458: 0039 movs r1, r7 1845a: f7ff fa97 bl 1798c <__aeabi_uidivmod> 1845e: 9b03 ldr r3, [sp, #12] 18460: 3e01 subs r6, #1 18462: 5c5b ldrb r3, [r3, r1] 18464: 0028 movs r0, r5 18466: 7033 strb r3, [r6, #0] 18468: 0039 movs r1, r7 1846a: f7ff fa09 bl 17880 <__udivsi3> 1846e: 1e05 subs r5, r0, #0 18470: d1f1 bne.n 18456 <_printf_i+0x1d6> 18472: 2f08 cmp r7, #8 18474: d109 bne.n 1848a <_printf_i+0x20a> 18476: 6823 ldr r3, [r4, #0] 18478: 07db lsls r3, r3, #31 1847a: d506 bpl.n 1848a <_printf_i+0x20a> 1847c: 6863 ldr r3, [r4, #4] 1847e: 6922 ldr r2, [r4, #16] 18480: 4293 cmp r3, r2 18482: dc02 bgt.n 1848a <_printf_i+0x20a> 18484: 2330 movs r3, #48 ; 0x30 18486: 3e01 subs r6, #1 18488: 7033 strb r3, [r6, #0] 1848a: 9b04 ldr r3, [sp, #16] 1848c: 1b9b subs r3, r3, r6 1848e: 6123 str r3, [r4, #16] 18490: 9b07 ldr r3, [sp, #28] 18492: aa09 add r2, sp, #36 ; 0x24 18494: 9300 str r3, [sp, #0] 18496: 0021 movs r1, r4 18498: 9b06 ldr r3, [sp, #24] 1849a: 9805 ldr r0, [sp, #20] 1849c: f7ff fe82 bl 181a4 <_printf_common> 184a0: 1c43 adds r3, r0, #1 184a2: d1b3 bne.n 1840c <_printf_i+0x18c> 184a4: 2001 movs r0, #1 184a6: 4240 negs r0, r0 184a8: b00b add sp, #44 ; 0x2c 184aa: bdf0 pop {r4, r5, r6, r7, pc} 184ac: 0001c96e .word 0x0001c96e 184b0: 0001c95d .word 0x0001c95d 000184b4 : 184b4: b2c9 uxtb r1, r1 184b6: 1882 adds r2, r0, r2 184b8: 4290 cmp r0, r2 184ba: d101 bne.n 184c0 184bc: 2000 movs r0, #0 184be: 4770 bx lr 184c0: 7803 ldrb r3, [r0, #0] 184c2: 428b cmp r3, r1 184c4: d0fb beq.n 184be 184c6: 3001 adds r0, #1 184c8: e7f6 b.n 184b8 000184ca : 184ca: b510 push {r4, lr} 184cc: 4288 cmp r0, r1 184ce: d902 bls.n 184d6 184d0: 188b adds r3, r1, r2 184d2: 4298 cmp r0, r3 184d4: d308 bcc.n 184e8 184d6: 2300 movs r3, #0 184d8: 429a cmp r2, r3 184da: d007 beq.n 184ec 184dc: 5ccc ldrb r4, [r1, r3] 184de: 54c4 strb r4, [r0, r3] 184e0: 3301 adds r3, #1 184e2: e7f9 b.n 184d8 184e4: 5c8b ldrb r3, [r1, r2] 184e6: 5483 strb r3, [r0, r2] 184e8: 3a01 subs r2, #1 184ea: d2fb bcs.n 184e4 184ec: bd10 pop {r4, pc} ... 000184f0 <_free_r>: 184f0: b570 push {r4, r5, r6, lr} 184f2: 0005 movs r5, r0 184f4: 2900 cmp r1, #0 184f6: d010 beq.n 1851a <_free_r+0x2a> 184f8: 1f0c subs r4, r1, #4 184fa: 6823 ldr r3, [r4, #0] 184fc: 2b00 cmp r3, #0 184fe: da00 bge.n 18502 <_free_r+0x12> 18500: 18e4 adds r4, r4, r3 18502: 0028 movs r0, r5 18504: f000 f8d4 bl 186b0 <__malloc_lock> 18508: 4a1d ldr r2, [pc, #116] ; (18580 <_free_r+0x90>) 1850a: 6813 ldr r3, [r2, #0] 1850c: 2b00 cmp r3, #0 1850e: d105 bne.n 1851c <_free_r+0x2c> 18510: 6063 str r3, [r4, #4] 18512: 6014 str r4, [r2, #0] 18514: 0028 movs r0, r5 18516: f000 f8cc bl 186b2 <__malloc_unlock> 1851a: bd70 pop {r4, r5, r6, pc} 1851c: 42a3 cmp r3, r4 1851e: d909 bls.n 18534 <_free_r+0x44> 18520: 6821 ldr r1, [r4, #0] 18522: 1860 adds r0, r4, r1 18524: 4283 cmp r3, r0 18526: d1f3 bne.n 18510 <_free_r+0x20> 18528: 6818 ldr r0, [r3, #0] 1852a: 685b ldr r3, [r3, #4] 1852c: 1841 adds r1, r0, r1 1852e: 6021 str r1, [r4, #0] 18530: e7ee b.n 18510 <_free_r+0x20> 18532: 0013 movs r3, r2 18534: 685a ldr r2, [r3, #4] 18536: 2a00 cmp r2, #0 18538: d001 beq.n 1853e <_free_r+0x4e> 1853a: 42a2 cmp r2, r4 1853c: d9f9 bls.n 18532 <_free_r+0x42> 1853e: 6819 ldr r1, [r3, #0] 18540: 1858 adds r0, r3, r1 18542: 42a0 cmp r0, r4 18544: d10b bne.n 1855e <_free_r+0x6e> 18546: 6820 ldr r0, [r4, #0] 18548: 1809 adds r1, r1, r0 1854a: 1858 adds r0, r3, r1 1854c: 6019 str r1, [r3, #0] 1854e: 4282 cmp r2, r0 18550: d1e0 bne.n 18514 <_free_r+0x24> 18552: 6810 ldr r0, [r2, #0] 18554: 6852 ldr r2, [r2, #4] 18556: 1841 adds r1, r0, r1 18558: 6019 str r1, [r3, #0] 1855a: 605a str r2, [r3, #4] 1855c: e7da b.n 18514 <_free_r+0x24> 1855e: 42a0 cmp r0, r4 18560: d902 bls.n 18568 <_free_r+0x78> 18562: 230c movs r3, #12 18564: 602b str r3, [r5, #0] 18566: e7d5 b.n 18514 <_free_r+0x24> 18568: 6821 ldr r1, [r4, #0] 1856a: 1860 adds r0, r4, r1 1856c: 4282 cmp r2, r0 1856e: d103 bne.n 18578 <_free_r+0x88> 18570: 6810 ldr r0, [r2, #0] 18572: 6852 ldr r2, [r2, #4] 18574: 1841 adds r1, r0, r1 18576: 6021 str r1, [r4, #0] 18578: 6062 str r2, [r4, #4] 1857a: 605c str r4, [r3, #4] 1857c: e7ca b.n 18514 <_free_r+0x24> 1857e: 46c0 nop ; (mov r8, r8) 18580: 20004c8c .word 0x20004c8c 00018584 <_malloc_r>: 18584: 2303 movs r3, #3 18586: b570 push {r4, r5, r6, lr} 18588: 1ccd adds r5, r1, #3 1858a: 439d bics r5, r3 1858c: 3508 adds r5, #8 1858e: 0006 movs r6, r0 18590: 2d0c cmp r5, #12 18592: d21e bcs.n 185d2 <_malloc_r+0x4e> 18594: 250c movs r5, #12 18596: 42a9 cmp r1, r5 18598: d81d bhi.n 185d6 <_malloc_r+0x52> 1859a: 0030 movs r0, r6 1859c: f000 f888 bl 186b0 <__malloc_lock> 185a0: 4a25 ldr r2, [pc, #148] ; (18638 <_malloc_r+0xb4>) 185a2: 6814 ldr r4, [r2, #0] 185a4: 0021 movs r1, r4 185a6: 2900 cmp r1, #0 185a8: d119 bne.n 185de <_malloc_r+0x5a> 185aa: 4c24 ldr r4, [pc, #144] ; (1863c <_malloc_r+0xb8>) 185ac: 6823 ldr r3, [r4, #0] 185ae: 2b00 cmp r3, #0 185b0: d103 bne.n 185ba <_malloc_r+0x36> 185b2: 0030 movs r0, r6 185b4: f000 f86a bl 1868c <_sbrk_r> 185b8: 6020 str r0, [r4, #0] 185ba: 0029 movs r1, r5 185bc: 0030 movs r0, r6 185be: f000 f865 bl 1868c <_sbrk_r> 185c2: 1c43 adds r3, r0, #1 185c4: d12c bne.n 18620 <_malloc_r+0x9c> 185c6: 230c movs r3, #12 185c8: 0030 movs r0, r6 185ca: 6033 str r3, [r6, #0] 185cc: f000 f871 bl 186b2 <__malloc_unlock> 185d0: e003 b.n 185da <_malloc_r+0x56> 185d2: 2d00 cmp r5, #0 185d4: dadf bge.n 18596 <_malloc_r+0x12> 185d6: 230c movs r3, #12 185d8: 6033 str r3, [r6, #0] 185da: 2000 movs r0, #0 185dc: bd70 pop {r4, r5, r6, pc} 185de: 680b ldr r3, [r1, #0] 185e0: 1b5b subs r3, r3, r5 185e2: d41a bmi.n 1861a <_malloc_r+0x96> 185e4: 2b0b cmp r3, #11 185e6: d903 bls.n 185f0 <_malloc_r+0x6c> 185e8: 600b str r3, [r1, #0] 185ea: 18cc adds r4, r1, r3 185ec: 6025 str r5, [r4, #0] 185ee: e003 b.n 185f8 <_malloc_r+0x74> 185f0: 428c cmp r4, r1 185f2: d10e bne.n 18612 <_malloc_r+0x8e> 185f4: 6863 ldr r3, [r4, #4] 185f6: 6013 str r3, [r2, #0] 185f8: 0030 movs r0, r6 185fa: f000 f85a bl 186b2 <__malloc_unlock> 185fe: 0020 movs r0, r4 18600: 2207 movs r2, #7 18602: 300b adds r0, #11 18604: 1d23 adds r3, r4, #4 18606: 4390 bics r0, r2 18608: 1ac3 subs r3, r0, r3 1860a: d0e7 beq.n 185dc <_malloc_r+0x58> 1860c: 425a negs r2, r3 1860e: 50e2 str r2, [r4, r3] 18610: e7e4 b.n 185dc <_malloc_r+0x58> 18612: 684b ldr r3, [r1, #4] 18614: 6063 str r3, [r4, #4] 18616: 000c movs r4, r1 18618: e7ee b.n 185f8 <_malloc_r+0x74> 1861a: 000c movs r4, r1 1861c: 6849 ldr r1, [r1, #4] 1861e: e7c2 b.n 185a6 <_malloc_r+0x22> 18620: 2303 movs r3, #3 18622: 1cc4 adds r4, r0, #3 18624: 439c bics r4, r3 18626: 42a0 cmp r0, r4 18628: d0e0 beq.n 185ec <_malloc_r+0x68> 1862a: 1a21 subs r1, r4, r0 1862c: 0030 movs r0, r6 1862e: f000 f82d bl 1868c <_sbrk_r> 18632: 1c43 adds r3, r0, #1 18634: d1da bne.n 185ec <_malloc_r+0x68> 18636: e7c6 b.n 185c6 <_malloc_r+0x42> 18638: 20004c8c .word 0x20004c8c 1863c: 20004c90 .word 0x20004c90 00018640 <_realloc_r>: 18640: b5f8 push {r3, r4, r5, r6, r7, lr} 18642: 0007 movs r7, r0 18644: 000d movs r5, r1 18646: 0016 movs r6, r2 18648: 2900 cmp r1, #0 1864a: d105 bne.n 18658 <_realloc_r+0x18> 1864c: 0011 movs r1, r2 1864e: f7ff ff99 bl 18584 <_malloc_r> 18652: 0004 movs r4, r0 18654: 0020 movs r0, r4 18656: bdf8 pop {r3, r4, r5, r6, r7, pc} 18658: 2a00 cmp r2, #0 1865a: d103 bne.n 18664 <_realloc_r+0x24> 1865c: f7ff ff48 bl 184f0 <_free_r> 18660: 0034 movs r4, r6 18662: e7f7 b.n 18654 <_realloc_r+0x14> 18664: f000 f826 bl 186b4 <_malloc_usable_size_r> 18668: 002c movs r4, r5 1866a: 4286 cmp r6, r0 1866c: d9f2 bls.n 18654 <_realloc_r+0x14> 1866e: 0031 movs r1, r6 18670: 0038 movs r0, r7 18672: f7ff ff87 bl 18584 <_malloc_r> 18676: 1e04 subs r4, r0, #0 18678: d0ec beq.n 18654 <_realloc_r+0x14> 1867a: 0029 movs r1, r5 1867c: 0032 movs r2, r6 1867e: f7ff fbdc bl 17e3a 18682: 0029 movs r1, r5 18684: 0038 movs r0, r7 18686: f7ff ff33 bl 184f0 <_free_r> 1868a: e7e3 b.n 18654 <_realloc_r+0x14> 0001868c <_sbrk_r>: 1868c: 2300 movs r3, #0 1868e: b570 push {r4, r5, r6, lr} 18690: 4c06 ldr r4, [pc, #24] ; (186ac <_sbrk_r+0x20>) 18692: 0005 movs r5, r0 18694: 0008 movs r0, r1 18696: 6023 str r3, [r4, #0] 18698: f7e8 fede bl 1458 <_sbrk> 1869c: 1c43 adds r3, r0, #1 1869e: d103 bne.n 186a8 <_sbrk_r+0x1c> 186a0: 6823 ldr r3, [r4, #0] 186a2: 2b00 cmp r3, #0 186a4: d000 beq.n 186a8 <_sbrk_r+0x1c> 186a6: 602b str r3, [r5, #0] 186a8: bd70 pop {r4, r5, r6, pc} 186aa: 46c0 nop ; (mov r8, r8) 186ac: 20004e34 .word 0x20004e34 000186b0 <__malloc_lock>: 186b0: 4770 bx lr 000186b2 <__malloc_unlock>: 186b2: 4770 bx lr 000186b4 <_malloc_usable_size_r>: 186b4: 1f0b subs r3, r1, #4 186b6: 681b ldr r3, [r3, #0] 186b8: 1f18 subs r0, r3, #4 186ba: 2b00 cmp r3, #0 186bc: da01 bge.n 186c2 <_malloc_usable_size_r+0xe> 186be: 580b ldr r3, [r1, r0] 186c0: 18c0 adds r0, r0, r3 186c2: 4770 bx lr 186c4: 42000800 .word 0x42000800 186c8: 42000c00 .word 0x42000c00 186cc: 42001000 .word 0x42001000 186d0: 42001400 .word 0x42001400 186d4: 42001800 .word 0x42001800 186d8: 42001c00 .word 0x42001c00 186dc: 00000dae .word 0x00000dae 186e0: 00000daa .word 0x00000daa 186e4: 00000daa .word 0x00000daa 186e8: 00000e10 .word 0x00000e10 186ec: 00000e10 .word 0x00000e10 186f0: 00000dc2 .word 0x00000dc2 186f4: 00000db4 .word 0x00000db4 186f8: 00000dc8 .word 0x00000dc8 186fc: 00000dfe .word 0x00000dfe 18700: 00000e98 .word 0x00000e98 18704: 00000e78 .word 0x00000e78 18708: 00000e78 .word 0x00000e78 1870c: 00000f04 .word 0x00000f04 18710: 00000e8a .word 0x00000e8a 18714: 00000ea6 .word 0x00000ea6 18718: 00000e7c .word 0x00000e7c 1871c: 00000eb4 .word 0x00000eb4 18720: 00000ef4 .word 0x00000ef4 18724: 2074754f .word 0x2074754f 18728: 6d20666f .word 0x6d20666f 1872c: 726f6d65 .word 0x726f6d65 18730: 0079 .short 0x0079 18732: f800 .short 0xf800 18734: 000022aa .word 0x000022aa 18738: 00002326 .word 0x00002326 1873c: 00002330 .word 0x00002330 18740: 00002346 .word 0x00002346 18744: 00002356 .word 0x00002356 18748: 00002366 .word 0x00002366 1874c: 00002384 .word 0x00002384 18750: 0000239c .word 0x0000239c 18754: 000023b2 .word 0x000023b2 18758: 000023d0 .word 0x000023d0 1875c: 000023da .word 0x000023da 18760: 000023f0 .word 0x000023f0 18764: 00002400 .word 0x00002400 18768: 00002410 .word 0x00002410 1876c: 0000242e .word 0x0000242e 18770: 00002446 .word 0x00002446 18774: 00002450 .word 0x00002450 18778: 00002466 .word 0x00002466 1877c: 00002476 .word 0x00002476 18780: 00002486 .word 0x00002486 18784: 000024a4 .word 0x000024a4 18788: 0000ffff .word 0x0000ffff 1878c: 4c4c554e .word 0x4c4c554e 18790: 696f7020 .word 0x696f7020 18794: 7265746e .word 0x7265746e 18798: 00000000 .word 0x00000000 1879c: 6f5f766c .word 0x6f5f766c 187a0: 00006a62 .word 0x00006a62 187a4: 000007e0 .word 0x000007e0 187a8: 00007ef4 .word 0x00007ef4 187ac: 00007ef8 .word 0x00007ef8 187b0: 00007ef4 .word 0x00007ef4 187b4: 00007efc .word 0x00007efc 187b8: 00007f00 .word 0x00007f00 187bc: 00007f04 .word 0x00007f04 187c0: 00007f08 .word 0x00007f08 187c4: 00007efc .word 0x00007efc 187c8: 00007f00 .word 0x00007f00 187cc: 00007f04 .word 0x00007f04 187d0: 00007f08 .word 0x00007f08 187d4: 0000ffff .word 0x0000ffff 187d8: 640a6f4e .word 0x640a6f4e 187dc: 00617461 .word 0x00617461 187e0: 000081b8 .word 0x000081b8 187e4: 000081a0 .word 0x000081a0 187e8: 000081a4 .word 0x000081a4 187ec: 000081a8 .word 0x000081a8 187f0: 000081ac .word 0x000081ac 187f4: 000081b0 .word 0x000081b0 187f8: 000000ff .word 0x000000ff 000187fc <_lv_bpp1_opa_table>: 187fc: 0000ff00 .... 00018800 <_lv_bpp2_opa_table>: 18800: ffaa5500 .U.. 00018804 <_lv_bpp4_opa_table>: 18804: 33221100 77665544 bbaa9988 ffeeddcc .."3DUfw........ 00018814 <_lv_bpp8_opa_table>: 18814: 03020100 07060504 0b0a0908 0f0e0d0c ................ 18824: 13121110 17161514 1b1a1918 1f1e1d1c ................ 18834: 23222120 27262524 2b2a2928 2f2e2d2c !"#$%&'()*+,-./ 18844: 33323130 37363534 3b3a3938 3f3e3d3c 0123456789:;<=>? 18854: 43424140 47464544 4b4a4948 4f4e4d4c @ABCDEFGHIJKLMNO 18864: 53525150 57565554 5b5a5958 5f5e5d5c PQRSTUVWXYZ[\]^_ 18874: 63626160 67666564 6b6a6968 6f6e6d6c `abcdefghijklmno 18884: 73727170 77767574 7b7a7978 7f7e7d7c pqrstuvwxyz{|}~. 18894: 83828180 87868584 8b8a8988 8f8e8d8c ................ 188a4: 93929190 97969594 9b9a9998 9f9e9d9c ................ 188b4: a3a2a1a0 a7a6a5a4 abaaa9a8 afaeadac ................ 188c4: b3b2b1b0 b7b6b5b4 bbbab9b8 bfbebdbc ................ 188d4: c3c2c1c0 c7c6c5c4 cbcac9c8 cfcecdcc ................ 188e4: d3d2d1d0 d7d6d5d4 dbdad9d8 dfdedddc ................ 188f4: e3e2e1e0 e7e6e5e4 ebeae9e8 efeeedec ................ 18904: f3f2f1f0 f7f6f5f4 fbfaf9f8 fffefdfc ................ 00018914 : 18914: 81808080 83828281 87868584 8d8c8a89 ................ 18924: 9593918f 9e9b9997 a7a5a2a0 b2afadaa ................ 18934: 000000b5 0000ffff 33221100 77665544 .........."3DUfw 18944: bbaa9988 ffeeddcc 33221100 77665544 .........."3DUfw 18954: bbaa9988 ffeeddcc 006e6962 0000eabc ........bin..... 18964: 0000eac2 0000ea58 0000eaaa 0000eab0 ....X........... 18974: 0000eabc 0000eabc 0000eabc 0000eab6 ................ 18984: 0000ecf8 0000ecfc 0000ecc2 0000ecec ................ 18994: 0000ecf0 0000ecf8 0000ecf8 0000ecf8 ................ 189a4: 0000ecf4 0000eca2 0000eca6 0000ec6c ............l... 189b4: 0000ec96 0000ec9a 0000eca2 0000eca2 ................ 189c4: 0000eca2 0000ec9e 0000ebf2 0000ebf6 ................ 189d4: 0000ebcc 0000ebe6 0000ebea 0000ebf2 ................ 189e4: 0000ebf2 0000ebf2 0000ebee 0000ed70 ............p... 189f4: 0000edc4 0000edca 0000edd0 0000edd6 ................ 18a04: 0000eddc 0000ede2 0000ede8 0000ee98 ................ 18a14: 0000ee9c 0000ee88 0000ee8c 0000ee90 ................ 18a24: 0000ee98 0000ee98 0000ee98 0000ee94 ................ 18a34: 0000f0f8 0000f0fc 0000f0e8 0000f0ec ................ 18a44: 0000f0f0 0000f0f8 0000f0f8 0000f0f8 ................ 18a54: 0000f0f4 0000f070 0000f0a0 0000f060 ....p.......`... 18a64: 0000f064 0000f068 0000f070 0000f070 d...h...p...p... 18a74: 0000f070 0000f06c 0000f038 0000f03e p...l...8...>... 18a84: 0000eff4 0000f026 0000f02c 0000f038 ....&...,...8... 18a94: 0000f038 0000f038 0000f032 0000f172 8...8...2...r... 18aa4: 0000f1ce 0000f1d4 0000f1da 0000f1e0 ................ 18ab4: 0000f1e6 0000f1ec 0000f1f2 ............ 00018ac0 : 18ac0: 00000020 0001005f 00000000 00000000 ..._........... 18ad0: 00000000 000000b0 0060f7f3 0001c6f0 ..........`..... 18ae0: 00000000 0002003b ....;... 00018ae8 : ... 18af0: 04500000 00000000 04500000 00010c03 ..P.......P..... 18b00: 06400012 07010505 0b40001f 00000c0b ..@.......@..... 18b10: 09f00061 fe00100a 0d8000b1 00000c0d a............... 18b20: 0b0000ff ff000d0b 03600147 07010502 ........G.`..... 18b30: 0560014c fd010f04 0570016a fd000f04 L.`.....j.p..... 18b40: 06600188 05000707 095001a1 02010808 ..`.......P..... 18b50: 03a001c1 fe000503 062001c9 03000306 .......... ..... 18b60: 03a001d2 00000303 05a001d7 feff1008 ................ 18b70: 0ab00217 00000c0a 05f00253 00000c05 ........S....... 18b80: 09300271 00000c09 092002a7 00000c09 q.0....... ..... 18b90: 0ab002dd 00000c0b 0930031f 00000c09 ..........0..... 18ba0: 09e00355 00000c0a 09900391 00000c09 U............... 18bb0: 0a5003c7 00000c0a 09e00403 00000c0a ..P............. 18bc0: 03a0043f 00000903 03a0044d fd000c03 ?.......M....... 18bd0: 0950045f 02010808 0950047f 03010608 _.P.......P..... 18be0: 09500497 02010808 093004b7 00000c09 ..P.......0..... 18bf0: 109004ed fd000f10 0bb00565 00ff0c0d ........e....... 18c00: 0c2005b3 00010c0b 0b9005f5 00000c0b .. ............. 18c10: 0d300637 00010c0c 0ac0067f 00010c09 7.0............. 18c20: 0a3006b5 00010c09 0c6006eb 00000c0c ..0.......`..... 18c30: 0d000733 00010c0b 04f00775 00010c03 3.......u....... 18c40: 08300787 00ff0c08 0b8007b7 00010c0b ..0............. 18c50: 098007f9 00010c09 0f40082f 00010c0d ......../.@..... 18c60: 0d00087d 00010c0b 0d7008bf 00000c0d }.........p..... 18c70: 0b90090d 00010c0a 0d700949 fd000f0e ........I.p..... 18c80: 0ba009b2 00010c0a 09f009ee 00000c0a ................ 18c90: 09600a2a 00000c0a 0ca00a66 00010c0b *.`.....f....... 18ca0: 0b600aa8 00ff0c0d 12000af6 00000c12 ..`............. 18cb0: 0ac00b62 00000c0b 0a600ba4 00ff0c0c b.........`..... 18cc0: 0a800bec 00000c0b 05500c2e fd010f05 ..........P..... 18cd0: 05a00c54 feff1008 05500c94 fd000f04 T.........P..... 18ce0: 09500cb2 02010708 08000cce fe000208 ..P............. 18cf0: 09a00cd6 0a010205 09900cdb 00000909 ................ 18d00: 0af00d04 00010c0a 09200d40 00000909 ........@. ..... 18d10: 0af00d69 00000c0a 09d00da5 0000090a i............... 18d20: 05a00dd2 00000c07 0b100dfc fd000c0a ................ 18d30: 0ae00e38 00010c09 04700e6e 00010c03 8.......n.p..... 18d40: 04900e80 fdfe0f06 09e00ead 00010c09 ................ 18d50: 04700ee3 00010c02 10f00eef 0001090f ..p............. 18d60: 0ae00f33 00010909 0a300f5c 0000090a 3.......\.0..... 18d70: 0af00f89 fd010c0a 0af00fc5 fd000c0a ................ 18d80: 06901001 00010906 0800101c 00000908 ................ 18d90: 06a01040 00000b07 0ad01067 00010909 @.......g....... 18da0: 08f01090 00ff090a 0e6010bd 0000090f ..........`..... 18db0: 08d01101 00000909 08f0112a fdff0c0a ........*....... 18dc0: 08501166 00000908 05a0118a fd000f06 f.P............. 18dd0: 04d011b7 fd010f03 05a011ce fd000f05 ................ 18de0: 095011f4 04000509 06b0120b 06000606 ..P............. 18df0: 0500121d 03010403 10001223 fe001110 ........#....... 18e00: 100012ab 00000c10 1000130b ff000e10 ................ 18e10: 1000137b 00000c10 0b0013db 00000c0b {............... 18e20: 1000141d fe001010 1000149d fe001010 ................ 18e30: 1200151d ff000e12 1000159b fe001010 ................ 18e40: 1200161b 00000c12 10001687 fe001010 ................ 18e50: 08001707 ff000e08 0c00173f ff000e0c ........?....... 18e60: 12001793 fe001012 10001823 00000c10 ........#....... 18e70: 0e001883 fe02100a 0e0018d3 fd00120e ................ 18e80: 0e001951 ff000f0e 0e0019ba ff000e0e Q............... 18e90: 0e001a1c fe02100a 0e001a6c ffff0e10 ........l....... 18ea0: 0a001adc ff000e0a 0a001b22 ff000e0a ........"....... 18eb0: 0e001b68 ff000e0e 0e001bca 0400040e h............... 18ec0: 12001be6 00000c12 14001c52 fe001014 ........R....... 18ed0: 12001cf2 feff1014 10001d92 fe001010 ................ 18ee0: 0e001e12 01000a0e 0e001e58 01000a0e ........X....... 18ef0: 14001e9e ff000e14 10001f2a 00000c10 ........*....... 18f00: 10001f8a fe001010 1000200a feff1111 ......... ...... 18f10: 0e00209b ff000e0f 0e002104 fe00100e . .......!...... 18f20: 0e002174 ff000e0e 0a0021d6 feff100c t!.......!...... 18f30: 0e002236 fe00100e 0e0022a6 fe00100e 6"......."...... 18f40: 12002316 00000c12 10002382 fdff1212 .#.......#...... 18f50: 0c002424 fe00100c 14002484 ff000f14 $$.......$...... 18f60: 1400251a 01000a14 1400257e 01000a14 .%......~%...... 18f70: 140025e2 01000a14 14002646 01000a14 .%......F&...... 18f80: 140026aa 01000a14 1400270e ff000e15 .&.......'...... 18f90: 0e0027a1 fe01100c 0e002801 fe00100e .'.......(...... 18fa0: 10002871 fdff1111 14002902 00000c14 q(.......)...... 18fb0: 0c00297a fe00100c 102029da 01000b11 z).......) ..... 00018fc0 : 18fc0: aff00bbf 089ee00a c0078cd0 bf100000 ................ 18fd0: 1ff5e01a e4f3513f f2403e0f 00100872 ....?Q...>@.r... 18fe0: e003c005 007a0000 0900005c 01a00780 ......z.\....... 18ff0: ffffffff 733e03fd 0030833c 00c500f2 ......>s<.0..... 19000: 0e100f00 f0020030 9f00f200 ffffffff ....0........... 19010: 36c33841 890030e3 00005c00 a007700a A8.6.0...\...p.. 19020: 79000000 00000000 00000079 20e9ff5c ...y....y...\.. 19030: 9ebcfc06 79b00e90 800f1000 0d000079 .......y....y... 19040: 000079f5 50fdef03 cf060000 000040fe .y.....P.....@.. 19050: 00f15e79 f3057900 07790007 bce92ff1 y^...y....y../.. 19060: ae03a0af 0000d7ff 00007900 00790000 .........y....y. 19070: 80de0300 00d00500 01500ce4 004c00e3 ..........P...L. 19080: 00a9005a c004a006 4c00004e 500d5a00 Z.......N..L.Z.P 19090: 1ce40000 0000a058 e173ce03 0000e93c ....X.....s.<... 190a0: 400ed600 7c0000a8 d003c003 3c202e00 ...@...|...... < 190b0: 0b003d00 09e20070 00d00680 00a0dd04 .=..p........... 190c0: 00b1ef09 3ce40900 d90000a0 00007d00 .......<.....}.. 190d0: a01cc00c ae3f0000 010000c1 0000c0df ......?......... 190e0: 708feb03 00db0018 3ff0657f ea8f0040 ...p.....e.?@... 190f0: 0000f703 f90b70cf 40bfcf66 30eadf08 .....p..f..@...0 19100: 000000a5 f5000000 72e4e4f5 f205da00 ...........r.... 19110: 700fc00b 205f403f 007f106f 205f106f ...p?@_ o...o._ 19120: 700f403f f205c00b 303fda00 f106b00c ?@.p......?0.... 19130: e900f601 ad00bc00 ad00ae00 e900bc00 ................ 19140: f106f601 303fb00c 06004a00 2ba0a474 ......?0.J..t..+ 19150: 7f00e5ff 6b7b20fb a004008d 00130000 ..... {k........ 19160: 10050000 500f0000 500f0000 511f0100 .......P...P...Q 19170: ffffef10 744f34f3 500f0040 500f0000 .....4Ot@..P...P 19180: fd520900 0fc5a00b 10110100 04f3ff1f ..R............. 19190: 12034044 00901efc 00f10500 00b00a00 D@.............. 191a0: 00600f00 00105f00 0000ab00 0000f600 ..`.._.......... 191b0: 0000f105 0000b00a 0000600f 0000104f .........`..O... 191c0: 000000ac 040000f6 0a0000f1 0e0000c0 ................ 191d0: 4f000060 00000010 00c5ef08 cfa8cf00 `..O............ 191e0: 00f50770 c00df20a 1ff80100 dc000080 p............... 191f0: 0000603f 00603fbd 801fbd00 0ddc0000 ?`...?`......... 19200: f80100c0 0a00f507 a8cf00f2 080070cf .............p.. 19210: ef00c5ef f37a36ff 05305f00 305f00f3 .....6z.._0..._0 19220: 5f00f305 00f30530 f305305f 05305f00 ..._0..._0..._0. 19230: fdbe04f3 98fd0770 002890cf 0000bf00 ....p.....(..... 19240: 00f20700 00af0000 804f0000 c03f0000 ..........O...?. 19250: c13e0000 c12e0000 d12e0000 f82e0000 ..>............. 19260: ff467777 6ffaffff 02ffffff b09f7777 wwF....o....ww.. 19270: e10c0000 f3090000 f6050000 df000000 ................ 19280: 040010e9 0000fd59 00f40600 643f0000 ....Y.........?d 19290: f3080040 fb8cc9bf d7ff7c00 01000000 @........|...... 192a0: 000000eb 0010be00 506f0000 2f000000 ..........oP.../ 192b0: 00000090 0000d00c 01f30800 f80300d5 ................ 192c0: 00602f00 f72322ed ffff6f21 5581ffff ./`.."#.!o.....U 192d0: 52f95655 2f000000 00000060 0500f602 UV.R.../`....... 192e0: 00ffffff 7077777f 0000e008 0000ad00 .....wwp........ 192f0: 10c20b00 ffdf0000 550430fb 0020ff68 .........0.Uh. . 19300: 00f80400 920f0000 f6050050 fd8ad98f ........P....... 19310: e9ef5b10 ce050010 9f0060fc 05708bc8 .[.......`....p. 19320: 000000f8 0000d00c 00801f00 682f0000 ............../h 19330: 3f10faef d08f64ee 0600f12f 00c00ef4 ...?.d../....... 19340: f109f602 01f30600 b09f86de d8ef1900 ................ 19350: ffff8f00 77f7e8ff 008ffc77 90554f00 .......ww....OU. 19360: 00e00b00 00f80200 109f0000 b00f0000 ................ 19370: f4060000 dd000000 3f000000 0a000070 ...........?p... 19380: 010000f1 000000f9 00d7ff5c af76fc06 ........\.....v. 19390: 00d00ca0 c00df109 07f20700 c05e11f7 ..............^. 193a0: feffbf00 54f90910 802fd07e 4ff60400 .......T~./....O 193b0: f8000050 0500a01f 76fb09f6 6c00d0af P..........v...l 193c0: 0010d8ff 0080fd8e fc68f80c 00505f00 ..........h.._P. 193d0: 008f703f 7fc00e00 f01f0030 cf13d41f ?p......0....... 193e0: ffef04f1 0200f0a9 00f00a31 a00e0000 ........1....... 193f0: 9f000000 8da70930 df0700f7 1e0040eb ....0........@.. 19400: 1003fc92 00000000 1efc1203 fc921e90 ................ 19410: 00001003 01000000 a8d01fe9 00a0300e .............0.. 19420: 00420000 03f37d01 bf10e89f ee0000b5 ..B..}.......... 19430: 17000081 0000b4df 00d2af04 ef820100 ................ 19440: 45f3ffff 00515555 01000000 ef101111 ...EUUQ......... 19450: 34f3ffff 50404444 ef000000 06000092 ...4DD@P........ 19460: 0000b5cf 00e29f03 02f36c00 bf20e99e .........l.... . 19470: 930000c6 04000000 0770fdbe a0bf77fc ..........p..w.. 19480: cf000027 09000000 010000f0 010000ea '............... 19490: 000010dd 000010ce 0000603f 00003001 ........?`...0.. 194a0: 00000100 00f50600 405f0000 17000000 .........._@.... 194b0: 00b5fdce fb050000 c27d2353 406e0000 ........S#}...n@ 194c0: 8e000000 01f40210 493ffaae 1e900ab0 ..........?I.... 194d0: 40ef5be6 8f300fe3 40af0010 d9001f98 .[.@..0....@.... 194e0: 403f0000 e8003f6a 401f0000 d9001f5c ..?@j?.....@\... 194f0: 403f0000 8f300f6a 40af0010 1e900a98 ..?@j.0....@.... 19500: a6de5ad6 01f303f2 ee16faaf 406e0050 .Z..........P.n@ 19510: 00000000 fb060000 00752353 17000000 ........S#u..... 19520: 00a3fdce 02000000 000000fd f49f0000 ................ 19530: 00000000 00b09e0f f2060000 0000207f ............. .. 19540: f801dc00 4f000000 00e00b60 00f00b00 .......O`....... 19550: 0100604f ed1111fa ff8f0000 00f3ffff O`.............. 19560: 4444c40e f406a04f af000000 0000cd10 ..DDO........... 19570: 5ff80200 40ebffff 5755f805 405f40df ..._...@..UW.@_@ 19580: 05fa0100 0f0000f4 11515fa0 ff05f43a ........._Q.:... 19590: 00faffff 5944745f 00f405fa 5ff20800 ...._tDY......._ 195a0: 5f000040 0000f445 855ff209 05fb6a55 @.._E....._.Uj.. 195b0: d7ffffff 8d020000 0400b4fe f99db8ff ................ 195c0: 0020fd02 20bf5008 0f000000 000000a0 .. ..P. ........ 195d0: 0000f602 602f0000 00000000 000000fa ....../`........ 195e0: 00f20b00 2f000000 850000d2 89fb5f00 ......./....._.. 195f0: 290080df 5f40ebdf 30eaffff 77975f00 ...)..@_...0._.w 19600: 5f00f89e af000040 00405f60 5fe00d00 ..._@...`_@...._ 19610: 06000040 00405ff4 5ff60300 03000040 @...._@...._@... 19620: 00405ff6 5ff40600 0d000040 00405fe0 ._@...._@...._@. 19630: 5f60af00 f89e7797 ffff5f00 5f0030ea ..`_.w..._...0._ 19640: 95ffffff 747777f9 0000405f 0000f405 .....wwt_@...... 19650: 11515f00 ffff0511 745fe0ff f4054444 ._Q......._tDD.. 19660: 5f000000 05000040 000000f4 7777975f ..._@......._.ww 19670: ffffff65 ffff5ffd 77f995ff 405f7477 e...._.....wwt_@ 19680: f4050000 5f000000 05000040 102222f5 ......._@...."". 19690: feffff5f 5555f805 00405f40 00f40500 _.....UU@_@..... 196a0: 405f0000 f4050000 00000000 b5fe8d01 .._@............ 196b0: fb4f0000 02b0df89 060020fd 00f20b60 ..O...... ..`... 196c0: 0f000000 000000a0 00602f00 2f000000 ........./`..../ 196d0: 09000060 00a00ff0 0bf00900 090000f2 `............... 196e0: 20fd02f0 00f00a00 df89fb4f 8d0200c0 ... ....O....... 196f0: 5f00c6fe 4f000040 0000f455 405ff504 ..._@..OU....._@ 19700: 554f0000 040000f4 22525ff5 ff555f22 ..OU....._R""_U. 19710: f5ffffff 5555855f 00f4558f 5ff50400 ...._.UU.U....._ 19720: 4f000040 0000f455 405ff504 554f0000 @..OU....._@..OU 19730: 040000f4 f4455ff5 5ff4455f 455ff445 ....._E._E._E._E 19740: f4455ff4 00f4455f 00faffff 00fa7777 ._E._E......ww.. 19750: 00fa0000 00fa0000 00fa0000 00fa0000 ................ 19760: 00fa0000 00fa0000 07f90000 0df60320 ............ ... 19770: 01f18ee9 5f30fbae eb020040 0100f405 ......0_@....... 19780: 405f00ec 0510de01 20ce00f4 bf405f00 .._@....... ._@. 19790: f4050030 0000909f 40efcf5f 91ff0500 0......._..@.... 197a0: 5f0010ee 00fc03a0 0600f405 405f00f8 ..._.........._@ 197b0: 05f50900 0c0000f4 00405ff2 00f40500 ........._@..... 197c0: 405f0000 f4050000 5f000000 05000040 .._@......._@... 197d0: 000000f4 0000405f 0000f405 00405f00 ...._@......._@. 197e0: 00f40500 975f0000 ff257777 5ff5ffff ......_.ww%...._ 197f0: 00000040 00fc951e f9080000 0000f55f @..........._... 19800: fd95ff02 ae0000e0 705f5ff9 955f3f00 .........__p.?_. 19810: 0b108ff3 315ff9c0 0ff304e9 f207f395 ......_1........ 19820: 5ff900db 20ef0d30 00f3950f f900905f ..._0.. ...._... 19830: 7100305f f3950f00 00000000 00505ff9 _0.q........._P. 19840: ff554f00 f5040020 0000fd5f f9fa554f .OU. ..._...OU.. 19850: 5ff50400 4f00f54a f20df455 405ff504 ..._J..OU....._@ 19860: 554fd02f 946f00f4 00405ff5 f455afaf /.OU..o.._@...U. 19870: f5df0000 0200405f 00f455ff 00f50600 ...._@...U...... 19880: b5fe8d01 ff040000 00fa9eb8 0020fd02 .............. . 19890: bf00f908 0a000020 00a00ff2 723f0000 .... .........?r 198a0: 000000f6 602ff900 0f000000 0000fa90 ....../`........ 198b0: 0bf70300 000000f2 d22f20af 908f0000 ......... /..... 198c0: 89fb4f00 0000a0ef 50ebdf28 ffff5f00 .O......(..P._.. 198d0: 975f00d7 5fc0bf78 f6070040 0000405f .._.x.._@..._@.. 198e0: 00405ffa 405ffa00 5ff80300 f16e2362 ._@..._@..._b#n. 198f0: fdffff5f 54855f30 405f0020 5f000000 _...0_.T ._@..._ 19900: 00000040 0000405f 8d010000 0000b5fe @..._@.......... 19910: 89fb4e00 0200a0ef 080020fd f20a00f9 .N....... ...... 19920: af000000 00a00f20 703f0000 0000602f .... .....?p/`.. 19930: 2f900f00 00000060 901f900f 2f000000 .../`........../ 19940: 00f10b70 20af0000 0010fc03 0000f907 p...... ........ 19950: df78fa6f 030000b0 00c5ffae 00000000 o.x............. 19960: b015d43e 02000000 0080ffbf 01000000 >............... 19970: ff5f0031 5f00d7ff c0bf7897 0700405f 1._...._.x.._@.. 19980: 00405ff6 405ffa00 5ffa0000 f8030040 ._@..._@..._@... 19990: 6e23525f ffff5fe1 855f30fc 5f00f955 _R#n._...0_.U.._ 199a0: 407f0040 0c00405f 00405fe0 5c00f902 @..@_@..._@....\ 199b0: 0720d9ef 90af87fc 0100c00e 00800f10 .. ............. 199c0: f50d0000 03000000 0050eaef feae0500 ..........P..... 199d0: 00000040 0000f14e 08f30500 f2080000 @...N........... 199e0: bf77fa2f ff9d02a0 ffff00c7 67f5ffff /.w............g 199f0: 7277fb78 00f70100 f7010000 01000000 x.wr............ 19a00: 000000f7 0000f701 00f70100 f7010000 ................ 19a10: 01000000 000000f7 0000f701 00f70100 ................ 19a20: f7010000 306f0000 168f0000 080000f3 ......o0........ 19a30: 00306ff1 f3168f00 f1080000 0000306f .o0.........o0.. 19a40: 00f3168f 6ff10800 8f000030 0000f405 .......o0....... 19a50: 703ff009 00cd0000 5f0020de a8ff0480 ..?p..... ._.... 19a60: 0300d0bf 0081fdbe 0000e00c 6f306f00 .............o0o 19a70: 0c000050 00fb00c0 00f60300 0000f209 P............... 19a80: 2f0000ae 901f0080 00ce0000 0000f207 .../............ 19a90: db00f605 0e000000 00504fc0 3b8f0000 .........OP....; 19aa0: 000000e0 00f8fb02 0b000000 000010ff ................ 19ab0: b04f0000 405f0000 00df0000 0ff50200 ..O..._@........ 19ac0: ff020090 f0070040 0700e00b 0c0090fe ....@........... 19ad0: 00f306b0 00e0aa0c f801601f f3541f00 .........`....T. 19ae0: 00106f00 107f00cd 00cc00f8 cb207f00 .o............ . 19af0: f701ad00 712f0000 265f00f6 0d0000f2 ....../q.._&.... 19b00: 0f00f1c6 0000d07b 00c0fd08 0080df0b ....{........... 19b10: 70ff0300 30ff0600 ef000000 fe010020 ...p...0.... ... 19b20: 903f0000 00cd0000 7f00408f 10de0030 ..?......@..0... 19b30: 0300802f 00d00cfa f3fb0700 0c000000 /............... 19b40: 000000f8 00c0ef01 7fbf0000 6f000070 ............p..o 19b50: 0020af60 ed01b02f 00f10c00 f607f804 `. ./........... 19b60: f3090000 0000e00c f703f207 901f0000 ................ 19b70: 0010af00 1f00109e 00f602a0 0bf30800 ................ 19b80: 000000d0 00404fec fb5f0000 00000000 .....O@..._..... 19b90: 0000f20c f0090000 00000000 0000f009 ................ 19ba0: f0090000 00000000 0000f009 ffffff3f ............?... 19bb0: 777701fd 0090bf77 c01e0000 0c000000 ..www........... 19bc0: 000000f2 0000f508 00f90400 ec010000 ................ 19bd0: 00000000 000020cf 00508f00 904f0000 ..... ....P...O. 19be0: 1e000000 777777f8 ffffff05 ff5ff0ff .....www......_. 19bf0: 5f50f705 00f30530 f305305f 05305f00 ..P_0..._0..._0. 19c00: 305f00f3 5f00f305 00f30530 f705305f .._0..._0..._0.. 19c10: 00ff5f50 0000007e 0000401f 0000900c P_..~....@...... 19c20: 0000e007 0000f402 0000c900 00007e00 .............~.. 19c30: 00402f00 00900c00 00e00700 00f30200 ./@............. 19c40: 00d90000 007e0000 302f0000 900d0000 ......~.../0.... 19c50: e0070000 ea35fabf ea00ea00 ea00ea00 ......5......... 19c60: ea00ea00 ea00ea00 ea00ea00 ea35ea00 ..............5. 19c70: 2f00fabf 9d000080 f30000e0 d00600d5 .../............ 19c80: 600c007b 103f201f 009a800b ffffe004 {..`. ?......... 19c90: 1111ffff f6071111 01e70300 0080fd9e ................ 19ca0: 90af87ce af000002 06000000 ffbe02f2 ................ 19cb0: 42ec20ff 502ff227 ec207f00 02f27f42 . .B'./P.. .B... 19cc0: 206ffbbf 0000008f 00008f00 008f0000 ..o ............ 19cd0: 8f000000 00b3fe2b ef78ec8f 00a08f30 ....+.....x.0... 19ce0: 208fc01e 8ff10700 f3050000 0700208f ... ......... .. 19cf0: 00a08ff1 ec8fd01e 8e30ef78 00b3fe2b ........x.0.+... 19d00: c4ef3a00 7cd84f00 00d00df4 00f61307 .:...O.|........ 19d10: 304f0000 f6030000 0d000000 100600d0 ..O0............ 19d20: f47cd74f c4ef3a00 00000000 0000f701 O.|..:.......... 19d30: 00f70100 f7010000 a3ff3b00 87fd04f7 .........;...... 19d40: d00ef7ce 3ff70b00 f7030060 0100304f .......?`...O0.. 19d50: 00503ff7 c00ef703 04f70a00 f7be65fc .?P..........e.. 19d60: b2ff3b00 fe3b00f7 fc0400a2 0e20ee67 .;....;.....g. . 19d70: a01e00c0 0700503f ffff4ff0 723ff1ff ....?P...O....?r 19d80: 0e202222 000200c0 af87fd04 ef3a0050 "" .........P.:. 19d90: 5d0000d6 b52f00fc 00f30470 a0ffff0c ...]../.p....... 19da0: 0053f748 0500305f 5f0000f3 f3050030 H.S._0....._0... 19db0: 305f0000 00f30500 00305f00 b2ff3b00 .._0....._0..;.. 19dc0: 87fe04e9 d10ef9cf 3ff90a00 f9010060 ...........?`... 19dd0: 0000404f 00603ff9 d00ef901 04f90900 O@...?`......... 19de0: f8cf87fd b3ff3b00 000000f7 e909f405 .....;.......... 19df0: 01b0af77 00d8ff7c 0000008f 0000f008 w...|........... 19e00: 00008f00 bff20800 fb8f10ea f808fd89 ................ 19e10: 8ff40600 781f0010 f80000f0 0f00008f .......x........ 19e20: 0000f088 00008ff8 00f0880f 1a9ef800 ................ 19e30: f00800f2 8ff0088f 088ff008 f0088ff0 ................ 19e40: 00e20700 0000f309 f1070000 00f10700 ................ 19e50: 0700f107 f10700f1 00f10700 0700f107 ................ 19e60: f10700f1 18f00800 fc3ec06e 00008f20 ........n.>. ... 19e70: 00f00800 008f0000 f0080000 8fd11d00 ................ 19e80: 08e21d00 00e21df0 00f32d8f 70fffe08 .........-.....p 19e90: bfe28f00 01f20830 008f10ee f008fb03 ....0........... 19ea0: 8ff70700 8f8f8f8f 8f8f8f8f 8e8f8f8f ................ 19eb0: 3b91fe3c ff08a2fe c6cf9f96 708fd08f <..;...........p 19ec0: 00c09f00 00f1585f 0100f605 00008ff7 ...._X.......... 19ed0: 0f00404f 0400f088 f80000f4 4f00008f O@.............O 19ee0: 880f0040 f40400f0 8ff80000 404f0000 @.............O@ 19ef0: 8e800f00 08a1fe3b d08fa6ff 6f00808f ....;..........o 19f00: 0100f148 00008ff7 00f0880f 008ff800 H............... 19f10: f0880f00 8ff80000 800f0000 c4ef3b00 .............;.. 19f20: 87fd0400 d00e60cf 3ff10b00 f5030060 .....`.....?`... 19f30: 0100304f 00603ff7 d00ef503 04f10b00 O0...?`......... 19f40: 60cf77fd c4ef3b00 fe3b8e00 fb8f00b3 .w.`.;....;..... 19f50: 8f30df57 c00d0090 0700108f 00008ff1 W.0............. 19f60: 208ff305 8ff10700 d01e00a0 ef78ec8f ... ..........x. 19f70: fe2b8f30 008f00b3 8f000000 00000000 0.+............. 19f80: 0000008f ff3b0000 fd04f7a2 0ef7de87 ......;......... 19f90: f70b00d0 0300603f 00304ff7 603ff701 ....?`...O0...?` 19fa0: 0ef70300 f70b00d0 ce77fd04 ff3b00f7 ..........w...;. 19fb0: 0000f7a3 00f70100 f7010000 01000000 ................ 19fc0: f02b8ef7 8f90ed8f 208f00a0 00008f00 ..+........ .... 19fd0: 8f00008f 008f0000 00008f00 91fdae02 ................ 19fe0: d069d71e 0000304f 0010b42f 60fdef06 ..i.O0../......` 19ff0: f55b0100 f7000001 f36ba75f 40ecdf19 ..[....._.k....@ 1a000: 0000f305 cf00305f 8f04faff f3053075 ...._0......u0.. 1a010: 305f0000 00f30500 00305f00 0000f404 .._0....._0..... 1a020: 0080c61f ae10fc5d 5a2f0000 f50200e0 ....]...../Z.... 1a030: 2f0000ae 0200e05a 0000aef5 00f0592f .../Z......./Y.. 1a040: 306ff504 ee51af00 02f5bf76 503ffbbe ..o0..Q.v.....?P 1a050: 0000c00d 00f206cb f900f502 00e00900 ................ 1a060: 800f009e 6f602f00 c00c0010 050000cb ...../`o........ 1a070: 0000f4f6 00d0ef00 708f0000 0000bb00 ...........p.... 1a080: 4f00109f 0e00f116 c00900f6 fc05600f ...O.........`.. 1a090: 00f600b0 5fab00ac 05105f10 f7500ff1 ......._._....P. 1a0a0: 0f00b00a c009f076 ac0000f5 8f4f00ba ....v.........O. 1a0b0: ff040000 a0ef0040 e00e0000 00f40800 ....@........... 1a0c0: 00704f00 308f209f cd00505f 0200902e .Op.. .0_P...... 1a0d0: 0000d0ff 0000f60a 00e1fd04 c00deb01 ................ 1a0e0: 3f10be00 00406f80 c00d407f 06cb0000 ...?.o@..@...... 1a0f0: f40200f3 0900ea00 108f00d0 1f00701f .............p.. 1a100: 00107f70 00d9e00a f2f90300 cf000000 p............... 1a110: 000000b0 0000406f 0000ad00 00f5791c ....o@.......y.. 1a120: 70ee1a00 ff4f0000 5515f9ff 0000f45b ...p..O....U[... 1a130: 0100804f 0b0000ec 8f0000e1 f7040040 O...........@... 1a140: e51e0000 ff5f5355 2c00fcff 61af00f5 ....US_....,...a 1a150: 0000cc00 db0000db 00db0000 1f00ea02 ................ 1a160: fa0500f4 00db0000 0000db00 cc0000db ................ 1a170: 61af0000 5ff52c00 155ff115 f1155ff1 ...a.,._.._.._.. 1a180: 5ff1155f 155ff115 f1155ff1 80be105f _.._.._.._.._... 1a190: 0140af03 701f00f6 1f00f701 00f90070 ..@....p....p... 1a1a0: fb00fb0a 01701f20 701f00f7 af03f601 .... .p....p.... 1a1b0: 0090be40 00000000 00e43d00 f5860cb5 @........=...... 1a1c0: 03f0201e 000290ef 02001000 400d90ce . .............@ 1a1d0: 0e003b89 0d0e003b ce028940 f8080090 .;..;...@....... 1a1e0: 00f7e7ef 00000000 00000000 00000000 ................ 1a1f0: 00dc4900 16000000 00ffffbf ff8d0300 .I.............. 1a200: 00ffffff ffffcf00 00ffffff ffffff00 ................ 1a210: 00ffc7ff eaffff00 00ff0051 0083ff00 ........Q....... 1a220: 00ff0000 0000ff00 00ff0000 0000ff00 ................ 1a230: 00ff0000 0000ff00 00ff0000 0000ff00 ................ 1a240: 00ffff2b 0000ff00 2bffffdf 0000ffff +..........+.... 1a250: dffdffdf 0000ffff dfb2ff2b 0000fdff ........+....... 1a260: 2b000000 0000b2ff d0000000 ffffff0f ...+............ 1a270: ff0df0ff 8888c8ff f0ffff8c 0000800f ................ 1a280: f00ff008 0000800f ff0ff008 000080ff ................ 1a290: f0ffff08 ccccec0f f00ff0ce ccccec0f ................ 1a2a0: ff0ff0ce 000080ff f0ffff08 0000800f ................ 1a2b0: f00ff008 0000800f ff0ff008 8888c8ff ................ 1a2c0: d0ffff8c ffffff0f df0df0ff ffff73ff .............s.. 1a2d0: fffdffff ffffa5ff ffffffff ffffa5ff ................ 1a2e0: dfffffff ffff73ff 00fdffff 00000000 .....s.......... 1a2f0: df000000 ffff73ff fffdffff ffffa5ff .....s.......... 1a300: ffffffff ffffa5ff dfffffff ffff73ff .............s.. 1a310: 00fdffff 00000000 df000000 ffff73ff .............s.. 1a320: fffdffff ffffa5ff ffffffff ffffa5ff ................ 1a330: dfffffff ffff73ff 00fdffff 00000000 .....s.......... 1a340: 00b10a00 00000000 00fcbf00 00000000 ................ 1a350: 00fbff0b 00000000 1bc0ffbf 0b0000a0 ................ 1a360: cf00fcff bf0000fb bf00c0ff ff0bb0ff ................ 1a370: 0c0000fc ffbffbff 000000c0 fbffffcf ................ 1a380: 00000000 b0ffff0c 00000000 00fbbf00 ................ 1a390: 00000000 00b00b00 03000000 03000000 ................ 1a3a0: 0010fc08 fcfff81c f5ff1c10 ff2cfcff ..............,. 1a3b0: ffff05f5 0500f5ff 00f5ffff fdff1d00 ................ 1a3c0: ff1c0010 1c10fcff fcfff9ff 05f5ff1c ................ 1a3d0: f5dffcff d1ff0500 040000a4 000000a1 ................ 1a3e0: 0000e04f 10020000 1003f16f d05f0000 O.......o....._. 1a3f0: d13ff16f f1ff0300 fd5ff16f 40ff0d00 o.?.....o._....@ 1a400: ff09f16f 00f74f70 cf00f16f 00f09fe0 o...pO..o....... 1a410: 5f00f16f 00c0bff3 2f00f16f 00c0bff5 o.._....o../.... 1a420: 1f00e04f 00e0aff6 4f000000 00f46ff4 O..........O.o.. 1a430: af000000 10fe0ff0 ff050000 d3ff06a0 ................ 1a440: ff7f0000 ff9f0020 f4ffbeda ff060000 .... ........... 1a450: 30fdffff 17000000 0050cabd 00000000 ...0......P..... 1a460: 0000b88b 00000000 0000ffff 06300000 ..............0. 1a470: 0360ffff dffd0400 effdffff ffff0d40 ..`.........@... 1a480: ffffffff ffff4fd0 ffff9ff9 ffff08f4 .....O.......... 1a490: ffff0220 f9ff0080 ff9f0000 f9ff0000 ............... 1a4a0: ff9f0000 ffff0800 ffff0220 ffff4f80 ........ ....O.. 1a4b0: ffff9ff9 ffff0df4 ffffffff dffe04d0 ................ 1a4c0: dffdffff 06300040 0360ffff 00000000 ....@.0...`..... 1a4d0: 0000ffff 00000000 0000b88b 00000000 ................ 1a4e0: 3f30dd03 000000f3 f5ff6f00 0000f44f ..0?.....o..O... 1a4f0: 99ff0900 00f4bfff f6bf0100 f4ff6f22 ............"o.. 1a500: fe2d0000 ef53ff35 ff0400f4 f8ff8fc1 ..-.5.S......... 1a510: 7f40fe2d ffff1afa f7afa1ff ffdf82cf -.@............. 1a520: 28fdffff ff0e14fc ffffffff 0f0041e0 ...(.........A.. 1a530: ffffffff 0000f0ff 00f9ff0f 00f0ff8f ................ 1a540: f8ff0f00 f0ff8f00 ff0f0000 ff8f00f8 ................ 1a550: 0e0000f0 6f00f6ff 0000e0ff fddf0000 .......o........ 1a560: 00000000 ffff0000 00000000 ffff0000 ................ 1a570: 00000000 ffff0000 00000000 ffff0000 ................ 1a580: 00000000 ffff0000 00000000 ffffff4f ............O... 1a590: 0000f4ff ffffff0b 0000b0ff ffffbf00 ................ 1a5a0: 000000fb ffff0b00 000000b0 fbbf0000 ................ 1a5b0: df000000 b11bfcff fffdffcf 2cc2ffff ..............., 1a5c0: ffffffff ffffffff ffffffff ffffffff ................ 1a5d0: dfffe0f0 ffffffff 00fdffff ffffef04 ................ 1a5e0: 0040feff ffff1e00 e1ffffff b0af0000 ..@............. 1a5f0: 0b000000 ff0500fa 00000010 1e50ff01 ..............P. 1a600: 000000f6 e16f0000 0000b0af 0b000000 ......o......... 1a610: fffffffa ff080080 ffffffff 1f00f1ff ................ 1a620: ffffffff ffffffff ffffffff ffffffff ................ 1a630: ffffffff ffffffff ffffffff ff8fffff ................ 1a640: ffffffff 00f8ffff dabd0600 00ff0250 ............P... 1a650: ffffef05 00ff42fe 7ba7ff7f 05fff9ff .....B.....{.... 1a660: 0000c1ff 0effff2c 020000fc 5fffdf22 ....,.......".._ 1a670: 0f0000f2 8fffffff 0f0000b0 00ffffff ................ ... 1a68c: ff000000 00f0ffff fff80b00 00f0ffff ................ 1a69c: fff42f00 002022fd ffe0cf00 0000c2ff ./..." ......... 1a6ac: ff40ff2c 6ab7ff9f ff00f7ff ffffdf24 ,.@....j....$... 1a6bc: ff0050fe dbac0520 00000060 00000000 .P.. ...`....... 1a6cc: 008d0000 00ff0800 dfff8f00 ffffffff ................ 1a6dc: ffffffff ffffffff ffffffff dfffffff ................ 1a6ec: 00ffffff 00ff8f00 00ff0800 008d0000 ................ ... 1a708: 0000008d 00ff0800 8f000000 cf0000ff ................ 1a718: 01ffffff ffffff50 fff706ff 00ffffff ....P........... 1a728: ffffffbe ffae00ff 05ffffff ffffdff8 ................ 1a738: 006002ff 00ff9f00 09000000 000000ff ..`............. 1a748: 009e0000 00000000 00000000 00000000 ................ 1a758: 00100600 00000000 d21f0000 00000000 ................ 1a768: 0300008d 000010ee 0a00ff08 00b02fb1 ............./.. 1a778: 00ff8f00 f407fc05 ffffffdf 605f5002 .............P_` 1a788: fffffff9 0df706ff ffffbdc0 ae00ffff ................ 1a798: ff9ff009 00ffffff 8ff009ae ffffffff ................ 1a7a8: c00df706 ffffdfad 5f5002ff 0000e960 ..........P_`... 1a7b8: 0500ff8f 00f406fc 00ff0800 b02fb10a ............../. 1a7c8: 8d000000 ee020000 00000010 1f000000 ................ 1a7d8: 000000d2 00000000 8f001006 ffffffff ................ 1a7e8: fff8ffff fffffffc ffffffff ffff2f20 ............ /.. 1a7f8: fcffffff ffff0c00 ffffffee feff2f20 ............ /.. 1a808: ffffef22 e2fffffc ffff2e00 20fe4efe "............N. 1a818: ffff0200 00c202e2 ffff0000 00000020 ............ ... 1a828: ffff0000 00000000 ffff0000 ffffffff ................ 1a838: 8fffffff ffffffff 00f8ffff 00000000 ................ 1a848: 010030ff 0040ffcc 40ffff2d ffffef03 .0....@.-..@.... 1a858: ffff3f40 ffff44ff ff9fffff ffffffff @?...D.......... 1a868: ffffffff ffffffff ffffafff ff45ffff ..............E. 1a878: 40ffffff ffffff4f ffef0340 2e0040ff ...@O...@....@.. 1a888: 0030ffff 0000cc01 00000000 00000000 ..0............. 1a898: 918f0000 00000000 70ffff00 00000000 ...........p.... 1a8a8: 40fdffff ff000000 10faffff ffff0000 ...@............ 1a8b8: 00f7ffff ffffff00 00d5ffff ffffffff ................ 1a8c8: ffb2ffff ffffffff fffffdff ffffffff ................ 1a8d8: fffffffd b2ffffff ffffffff ff00d5ff ................ 1a8e8: f7ffffff ffff0000 0010faff fdffff00 ................ 1a8f8: 00000040 0070ffff 8e000000 000000a1 @.....p......... ... 1a918: 00f8ff8f fff8ff8f ff00ffff ffffffff ................ 1a928: ffff00ff ffffffff ffffff00 00ffffff ................ 1a938: ffffffff ff00ffff ffffffff ffff00ff ................ 1a948: ffffffff ffffff00 00ffffff ffffffff ................ 1a958: ff00ffff ffffffff ffff00ff ffffffff ................ 1a968: ffffff00 00ffffff 7fffffff 7f00f7ff ................ 1a978: ff8ff7ff ffffffff fffffff8 ffffffff ................ 1a988: ffffffff ffffffff ffffffff ffffffff ................ 1a998: ffffffff ffffffff ffffffff ffffffff ................ 1a9a8: ffffffff ffffffff ffffffff ffffffff ................ 1a9b8: ffffffff ffffffff ffffffff ffffffff ................ 1a9c8: ffffffff ffffffff ffffffff ffff8fff ................ 1a9d8: f8ffffff 00000000 0010cc00 d2ffff03 ................ 1a9e8: ffff0400 ff0430fe 04f4ffff ffffffff .....0.......... 1a9f8: ffffff54 fffff9ff ffffffff ffffffff T............... 1aa08: ffffffff fffffff9 ffff44ff ff04f3ff .........D...... 1aa18: 0430feff 00d2ffff 10ccff04 00ff0300 ..0............. 1aa28: 00000000 2d000000 000000d2 ef010000 .......-........ 1aa38: 000010fe ff1d0000 0000d1ff ffcf0000 ................ 1aa48: 0000fcff ffff0b00 00b0ffff ffffaf00 ................ 1aa58: 00faffff ffffff09 90ffffff ffffff0f ................ 1aa68: f0ffffff ffffff08 80ffffff 00000000 ................ 1aa78: 00000000 ffffff0c c0ffffff ffffff0f ................ 1aa88: f0ffffff ffffff0f f0ffffff ffffff0c ................ 1aa98: c0ffffff 1a000000 01000040 0000f0df ........@....... 1aaa8: 00a0ff1d 00fadf01 a0ff1d00 fadf0100 ................ 1aab8: ff0c0000 0d0000a0 000080ff 00f8df01 ................ 1aac8: ff1d0000 01000080 0000f8df 80ff1d00 ................ 1aad8: df010000 000000f0 a104501b 0f000000 .........P...... 1aae8: 000010fd 00d1ff0a fdaf0000 0a000010 ................ 1aaf8: 0000d1ff 10fdaf00 ff0a0000 080000c0 ................ 1ab08: 0000d0ff 0010fd8f 00d1ff08 10fd8f00 ................ 1ab18: d1ff0800 fd0f0000 05000010 000000b1 ................ 1ab28: ff040000 00000040 80ff0800 00000000 ....@........... 1ab38: 0080ff08 08000000 000080ff ff080000 ................ 1ab48: 48000080 c8ff8c88 ffff8488 ffffffff ...H............ 1ab58: ffffffff ffffffff ff8c8848 008488c8 ........H....... 1ab68: 80ff0800 00000000 0080ff08 08000000 ................ 1ab78: 000080ff ff080000 00000080 40ff0400 ...............@ 1ab88: 44140000 44444444 ffffef41 feffffff ...DDDDDA....... 1ab98: ffffffff 7bffffff bbbbbbbb 0000b7bb .......{........ 1aba8: daffad05 00000050 88fcdf04 0040fdcf ....P.........@. 1abb8: 40fe7f00 f7ef0400 f4ff0700 4f809e00 ...@...........O 1abc8: ff4f70ff f8af00c0 dff4ff0c ff9a80ff .pO............. 1abd8: fdff08fe ef80ffdf ff08feff c0ff4ffd .............O.. 1abe8: 0cf8ff8f ff07f4ff 80ee08f4 0070ff4f ............O.p. 1abf8: 0040fe7f 00f8ef04 fcdf0400 40fdcf88 ..@............@ 1ac08: 05000000 50daffad 208c0000 00000000 .......P... .... 1ac18: 00000000 0000e4df 00000000 ff1b0000 ................ 1ac28: fddf4980 000000a5 ffff7f00 d4ff8cd8 .I.............. 1ac38: 04000000 0000f8ef 0070ff4e ff1c0000 ........N.p..... 1ac48: ff04e869 e30400f7 fffe9f00 40ffcf80 i..............@ 1ac58: 0570ff0d 8fe0ffff ff0dd0ff ff2d00f7 ..p...........-. 1ac68: d0ff8fe0 00fcff04 cff8af00 7f0030ff .............0.. 1ac78: 060040ff 00f7ffff f4ff0800 ff3e0000 .@............>. 1ac88: 000000a0 82c8ff4d 00f7bf01 5a000000 ....M..........Z 1ac98: 0810fcdf 0000a0ff 00000000 fd4e0000 ..............N. ... 1acb0: 0000c802 d22d0000 00000000 00000000 ......-......... 1acc0: 0000fbbf 00000000 ffff0500 00000050 ............P... 1acd0: 0d000000 00d0ffff 00000000 ffff7f00 ................ 1ace0: 000000f7 ff010000 10ff8dd8 00000000 ................ 1acf0: 0aa0ff0a 0000a0ff ff3f0000 f3ff0bb0 ..........?..... 1ad00: 00000000 0cc0ffcf 0000fcff ffff0500 ................ 1ad10: ffff0dd0 0e000050 9ff9ffff 00e0ffff ....P........... 1ad20: ffff8f00 ffff2ee2 ff0200f8 0990ffff ................ 1ad30: 10ffffff ffffff0a ffff3ee3 ff0fa0ff .........>...... 1ad40: ffffffff f0ffffff ffffff08 ffffffff ................ 1ad50: 000080ff 00000000 00000000 00000000 ................ 1ad60: 000000d8 00000000 ffff80ff ff070070 ............p... 1ad70: fffff8ff ff6f00f6 8e78fdff e8ff15ff ......o...x..... 1ad80: 0200e2ff 20fe4fe5 000020fe 00f3ff13 .....O. . ...... 1ad90: 00000052 0031ff3f 02000052 205ef4ef R...?.1.R.....^ 1ada0: 8e7820fe e8ff51ff ffffe2ff ff6f00f6 . x..Q........o. 1adb0: fffffdff ff070070 0000f8ff 00000000 ....p........... 1adc0: 000080ff 00000000 000000d8 00000000 ................ ... 1add8: 01000000 000010dd ff1d0000 000000d1 ................ 1ade8: fdffdf01 1d000010 d1ff99ff f9df0100 ................ 1adf8: 10fd9f00 0090ff1d bfd1ff09 000000f9 ................ 1ae08: 905ffb9f 09000000 000000f5 00000000 .._............. 1ae18: 00000000 5f000000 00000090 f9bff509 ......._........ 1ae28: 9f000000 90ff1dfb d1ff0900 00f9df01 ................ 1ae38: 0010fd9f ff99ff1d 010000d1 10fdffdf ................ 1ae48: 1d000000 0000d1ff dd010000 00000010 ................ ... 1ae68: 00d11d00 00000000 df010000 ffef10fd ................ 1ae78: 00d0ffff d1ffff1d ffffffaf cfcf00f0 ................ 1ae88: 0000fcfc 00f00f00 b6f11f6b 0f000000 ........k....... 1ae98: 0f0000f0 000000f0 00f00f00 00f00f00 ................ 1aea8: 0f000000 0f0000f0 000000f0 b6f11f6b ............k... 1aeb8: 00f00f00 cfcf0000 0f00fcfc faffffff ................ 1aec8: d1ffff1d ffff0d00 df01feff 000010fd ................ 1aed8: 00000000 00d11d00 00000000 00000000 ................ 1aee8: ff8f0000 0000e2ff ffff0000 0020feff .............. . 1aef8: ffff0000 ffffffff fffff8ff ffffffff ................ 1af08: ffffffff ffffffff ffffffff ffffffff ................ 1af18: ffffffff ffffffff ffffffff ffffffff ................ 1af28: ffffffff ffffffff ffffffff ffffffff ................ 1af38: ffffffff ffffffff ff8fffff ffffffff ................ 1af48: 0000f8ff 00b00b00 00000000 00fbbf00 ................ 1af58: 00000000 b0ffff0b 00000000 fbffffbf ................ 1af68: 0b000000 ffffffff 4f0000b0 ffffffff ...........O.... 1af78: 000000f4 00ffff00 00000000 00ffff00 ................ 1af88: 00000000 00ffff00 00000000 00ffff00 ................ 1af98: 00000000 00ffff00 ffdf0000 0ffddff0 ................ 1afa8: fffffdff 9f0000f9 ffffffff ffffffff ................ 1afb8: ffffffff f0ffffff ffdfffe0 ffffffff ................ 1afc8: 0000fdff 00000000 00000000 00000000 ................ 1afd8: 0062ea0a 00000000 f0ffff02 00000000 ..b............. 1afe8: ffff9f00 00000000 ffff0f00 000000d0 ................ 1aff8: ffff0200 000000fb ef030000 000070ff .............p.. 1b008: 04000000 0000f2ff 00000000 0000fbbf ................ 1b018: 00000000 0030ff6f 00000200 0090ff4f ....o.0.....O... 1b028: 00f38f02 00d0ff6f e4ffff0a 00d1ffbf ....o........... 1b038: ffffef00 00d1ffff ffff0a00 0090ffff ................ 1b048: ff6f0000 0030fbff ff020000 000072db ..o...0......r.. 1b058: 08000000 000080ee ff086106 2d0080ff .........a.....- 1b068: 33efd0ff ff2e00fe 3ff30ef3 f3ff2ee0 ...3.......?.... 1b078: ffff8f00 00f3ff6e ffff8e00 0000f3ff ....n........... 1b088: ffef0200 000000f3 ffff2e00 08000030 ............0... 1b098: ffffffef ff080030 ffeff6ff 33ef0030 ....0.......0..3 1b0a8: ffef02fe 3ff30e30 ffef02e0 f8ff8f30 ....0..?....0... 1b0b8: fddf0200 00e88e00 10660000 ffdf0000 ..........f..... 1b0c8: 00200dff ffffff00 0000e20f 0fffffff .. ............. 1b0d8: fff0dffd 0020ffff fffff0ff ffffffff ...... ......... 1b0e8: fffffff0 f0ffffff ffffffff fff0ffff ................ 1b0f8: ffffffff fffff0ff ffffffff fffffff0 ................ 1b108: f0ffffff ffffffff fff0ffff ffffffff ................ 1b118: ffdff0ff fffdffff 000000f9 ffff0000 ................ 1b128: 00ffffff ffffdf00 0000fdff ffffff8f ................ 1b138: ff00c2ff ffffffff 00ff20fe ff010000 ......... ...... 1b148: 0000ffe2 fcff0000 000000ff ffffff00 ................ 1b158: 00000000 ffffffff ffffffff ffffffff ................ 1b168: ffffffff 11fbffff ffffffbf 1f00f1ff ................ 1b178: ffffffff ff1f00f1 fbffffff ffffbf11 ................ 1b188: ffffffff 8fffffff ffffffff df00f8ff ................ 1b198: 0000fdff fcffff01 ff030000 0000f7ff ................ 1b1a8: f2ffff06 ff080000 0000d0ff ffffff0a ................ 1b1b8: ff0cd0ff a0ffffff ffffff0e ff0d20ff ............. .. 1b1c8: 00f8ffff ff0a0000 000000e0 0050ff0e ..............P. 1b1d8: fc2f0000 00000000 0000f35f a09f0000 ../....._....... 1b1e8: 00000000 000010df 00d70000 04000000 ................ 1b1f8: 000040ee 99ffdf00 0000fdff ff99ffff .@.............. 1b208: ff0000ff ffffffff ffff0000 00000090 ................ 1b218: 0dffff00 200dffff ff0fffff ffe20fff ....... ........ 1b228: ffff0fff fffffd0f 20ffff0f 0fffff00 ........... .... 1b238: ffffffff ff0fffff ffffffff ffff0fff ................ 1b248: ffdfffff ffffff0f 0f0000ff ffffffff ................ 1b258: ff0f0000 00ffffff ffff0d00 0000fdff ................ 1b268: 0000cc00 02000000 000030ff ffbf0100 .........0...... 1b278: 000020fc ffffff1e 9f0000e1 f8ffffff . .............. 1b288: ffef0000 00fdffff ffffff00 0100ffff ................ 1b298: ffffffff ff0300ff ffffffff ffff0830 ............0... 1b2a8: 80ffffff ffffff1e cfe1ffff ffffffff ................ 1b2b8: ffcffcff ffffffff 000000fc 00000000 ................ 1b2c8: ff0e0000 000000e0 40ee0400 ff8f0000 ...........@.... 1b2d8: ffffffff fff8ffff ffffffff ffffffff ................ 1b2e8: 0ff000ff 000ff000 f000ffff 0ff0000f ................ 1b2f8: ffffff00 ffffffff ffffffff 888008f8 ................ 1b308: ff8f8008 8008f8ff 8f800888 ffffffff ................ 1b318: ffffffff 00ffffff 000000f0 ffff000f ................ 1b328: 0000f000 ff000f00 ffffffff ffffffff ................ 1b338: ffff8fff ffffffff 0000f8ff 00000000 ................ ... 1b350: 70af0300 00000000 ffcf0400 000000f0 ...p............ 1b360: ffdf0600 0000a0ff ffef1700 0030ffff ..............0. 1b370: ffff1800 00fcffff ffff2a00 f4ffffff .........*...... 1b380: ffff0800 ffffffff ff0f00d0 ffffffff ................ 1b390: 080060ff ffffffff 0000feff 00000000 .`.............. 1b3a0: 00f7ffff 00000000 f1ffff00 00000000 ................ 1b3b0: ffff0000 00000080 ff000000 000010ff ................ 1b3c0: 00000000 0000faff 00000000 00f2ff00 ................ 1b3d0: 00000000 808f0000 00000000 00000000 ................ 1b3e0: 00000000 f0ffffdf ffff00d2 20fef0ff ............... 1b3f0: f0ffffff ffffe2ff fdfff0ff f2ffffff ................ 1b400: ffff0000 ffffffff ffffffff ffffffff ................ 1b410: ffffffff ffffffff ffffffff ffffffff ................ 1b420: ffffffff ffffffff ffffffff ffffffff ................ 1b430: ffffffff ffffffff ffffffff ffdfffff ................ 1b440: fdffffff 00000000 00000000 00000000 ................ 1b450: feef9c04 000040c9 ffef0700 feffffff .....@.......... 1b460: df040070 8aa8fcff 40fdffcf 00d5ff6f p..........@o... 1b470: 5d000000 f6cff6ff 00000000 fc6f0000 ...]..........o. 1b480: 5a00301a 00a5fddf 0000a103 ffffff4d .0.Z........M... 1b490: 0000d4ff feff0500 ffef8aa8 01000050 ............P... 1b4a0: 000070df 0010fd07 00120000 21000000 .p.............! 1b4b0: 00000000 e44e0000 00000000 00000000 ......N......... 1b4c0: 0000feef 00000000 feef0000 00000000 ................ 1b4d0: 00000000 0000e44e ff8f0000 ffffffff ....N........... 1b4e0: 80ffffff ffffffff ffffffff 00fff0ff ................ 1b4f0: 00000000 fd0f0000 ffff0fff ffffffff ................ 1b500: 0fffff0f ffffffff ff00ffff ffff0fff ................ 1b510: ffffffff 0fffff00 ffffffff ff0fffff ................ 1b520: 000000ff 00000000 fffffd0f ffffffff ................ 1b530: f0ffffff ffffff8f ffffffff ff8f80ff ................ 1b540: ffffffff 80ffffff ffffffff ffffffff ................ 1b550: 00fff0ff 00000000 fd0f0000 ffff0fff ................ 1b560: 00f0ffff 0fffff0f ffffffff ff0000f0 ................ 1b570: ffff0fff 00f0ffff 0fffff00 ffffffff ................ 1b580: ff0f00f0 000000ff 00000000 fffffd0f ................ 1b590: ffffffff f0ffffff ffffff8f ffffffff ................ 1b5a0: ff8f80ff ffffffff 80ffffff ffffffff ................ 1b5b0: ffffffff 00fff0ff 00000000 fd0f0000 ................ 1b5c0: ffff0fff 000000ff 0fffff0f 00ffffff ................ 1b5d0: ff000000 ffff0fff 000000ff 0fffff00 ................ 1b5e0: 00ffffff ff0f0000 000000ff 00000000 ................ 1b5f0: fffffd0f ffffffff f0ffffff ffffff8f ................ 1b600: ffffffff ff8f80ff ffffffff 80ffffff ................ 1b610: ffffffff ffffffff 00fff0ff 00000000 ................ 1b620: fd0f0000 f0ff0fff 00000000 0fffff0f ................ 1b630: 0000f0ff ff000000 f0ff0fff 00000000 ................ 1b640: 0fffff00 0000f0ff ff0f0000 000000ff ................ 1b650: 00000000 fffffd0f ffffffff f0ffffff ................ 1b660: ffffff8f ffffffff ff8f80ff ffffffff ................ 1b670: 80ffffff ffffffff ffffffff 00fff0ff ................ 1b680: 00000000 fd0f0000 000000ff 00000000 ................ 1b690: 00ffff0f 00000000 ff000000 000000ff ................ 1b6a0: 00000000 00ffff00 00000000 ff0f0000 ................ 1b6b0: 000000ff 00000000 fffffd0f ffffffff ................ 1b6c0: f0ffffff ffffff8f ffffffff 000080ff ................ 1b6d0: 01000000 00000000 00000000 10fd0700 ................ 1b6e0: 00000000 cf010000 0000f5ff 00000000 ................ 1b6f0: fe29b900 00000010 3f000000 00000210 ..)........?.... 1b700: df030000 00900a80 70030000 77ffdf00 ...........p...w 1b710: 555555f7 0fd38f55 dfccfdff cdccccdc .UUUU........... 1b720: fe8fb0ff 00aa0010 404d0000 00104600 ..........M@.F.. 1b730: 3302f201 00000010 09000000 00f9cfb1 ...3............ 1b740: 00000000 ff0a0000 000090ff 00000000 ................ 1b750: f9bf0000 00000000 00000000 00002201 .............".. 1b760: df180000 020092fd ffeffbef faff0d30 ............0... 1b770: 4fe0ff2e ff03faff fafa9ff5 cffa4f35 ...O........5O.. 1b780: 0b3d8ac0 03fbeffd fffe8f12 ff06b0ff ..=............. 1b790: d1ffffff efffff08 9f1011fd 59d1dfff ...............Y 1b7a0: affd0b3b 1d38fad7 faff5ffb 0df7df01 ;.....8.._...... 1b7b0: ff1dfaff fcef03f1 0050ffdf a3fedf18 ..........P..... 1b7c0: 7f000000 0000f7ff ffffffef effeffff ................ 1b7d0: ffffffff 0000feff 00000000 ffff0f00 ................ 1b7e0: f0ffffff ffffff0f 0ff0ffff f9999ff9 ................ 1b7f0: f80ff09f 8ff8888f 8ff80ff0 f08ff888 ................ 1b800: 888ff80f 0ff08ff8 f8888ff8 f80ff08f ................ 1b810: 8ff8888f 8ff80ff0 f08ff888 999ff90f ................ 1b820: 0ff09ff9 ffffffff ff08f0ff ffffffff ................ 1b830: 00000080 7f000000 000000a0 8f000000 ................ 1b840: 0000b0ff 0d000000 00a0ffff 8a000000 ................ 1b850: 00ffff1d 8f000000 70ff1dfa 8f000000 ...........p.... 1b860: 801dfaff 8f000000 00faffff 8f000000 ................ 1b870: 80ffffff 8f000000 80ffffff 8f000000 ................ 1b880: 80ffffff 8f000000 80ffffff 6f000000 ...............o 1b890: 80ffffff 0b000000 80ffffff 00000000 ................ 1b8a0: 80ffffdf 00000000 80ffff0e 00000000 ................ 1b8b0: 60dbde00 00000000 00000000 00000000 ...`............ 1b8c0: 00000000 ffffff1b e4ffffff ffdf0100 ................ 1b8d0: ffffffff 1d00feff effaffff ffffaffe ................ 1b8e0: ffffdf01 0ae22ea0 ff1dffff 02e2ffff ................ 1b8f0: ffff2e20 ffffffcf ef0220fe ffcfffff ........ ...... 1b900: 20feffff ffffef02 ffffff1d 2e2002e2 ... .......... . 1b910: df01ffff 2ea0ffff ffff0ae2 ffff1d00 ................ 1b920: affeeffa 0100ffff ffffffdf feffffff ................ 1b930: ff1b0000 ffffffff 0800e4ff e4ffffff ................ 1b940: ffff8f00 f808feff ff400b0f 0b0ff88f ..........@..... 1b950: f8ffff40 ff400b0f ffffffff ffffffff @.....@......... 1b960: ffffffff ffffffff ffffffff ffffffff ................ 1b970: ffffffff ffffffff ffffffff ffffffff ................ 1b980: ffffffff ffffffff ffffffff ffefffff ................ 1b990: feffffff ffffff4e 0000e4ff 00000000 ....N........... 1b9a0: 00000100 00000000 00e00300 00001000 ................ 1b9b0: 10ef0200 0000bf00 f17f0000 00f1cf00 ................ 1b9c0: ff070000 77ffcf11 bf777777 ffffcff1 .......wwww..... 1b9d0: ffffffff ffff17ff ffffffff ff07e0ff ................ 1b9e0: 000000f1 06000000 000010ff 00000000 ................ 1b9f0: 0000a005 00000000 ........ 0001b9f8 : 1b9f8: 00000100 00000000 00000100 00000003 ................ 1ba08: 00000200 00000000 00000000 00000000 ................ 1ba18: 00010000 00000000 00000000 00000000 ................ 1ba28: 000c0100 0000fa07 f1f20000 04060c02 ................ 1ba38: 010d02f6 0008030b 00000000 00000000 ................ 1ba48: 020f0000 000000fe 00000000 00000000 ................ 1ba58: f8000500 00000000 0504fb00 00fd0000 ................ 1ba68: fd0003fe fbfffd00 00000000 fd0000fd ................ 1ba78: fd0000fc 0000fb00 00000000 fd000000 ................ 1ba88: 00fc00fd 00e100f9 0500fb00 fb000008 ................ 1ba98: 05080303 000005fc 000000f1 00000000 ................ 1baa8: 00000000 000000f7 00000000 00000000 ................ 1bab8: f9000000 f600f3fd 000000fe 000a0100 ................ 1bac8: 01fffef8 0000fc00 0000edfe 00000000 ................ 1bad8: 00000000 0afeec00 00000000 00000000 ................ 1bae8: 00000000 000000f6 00000000 08000000 ................ 1baf8: 00000300 000000fb 00000000 00000000 ................ 1bb08: 00000000 020a0000 00000001 00000000 ................ ... 1bb38: 000000f7 00000000 00000000 00000000 ................ 1bb48: 00000000 02000000 fd080305 fd050000 ................ 1bb58: 0702ddf8 00fd0105 00080009 00e80008 ................ 1bb68: 080008fd 000305fd 00fd0100 0014fc00 ................ 1bb78: 00080014 0804030b f7000000 00000000 ................ 1bb88: 0200fe01 02fbfdfb 0000fd00 0000f600 ................ ... 1bba0: 0000ef00 00000000 00000000 00000000 ................ 1bbb0: 00f20100 000000f0 1900fe00 0303fdfd ................ 1bbc0: 03fd00fe 00f20000 00000000 00000000 ................ 1bbd0: 00e70000 00000003 00000000 00000000 ................ 1bbe0: 0f00f000 00f70000 e7ef0008 0008fbef ................ 1bbf0: 0300ef00 00fc00fa 00000000 00000000 ................ 1bc00: 07000000 0000e108 00000000 00000000 ................ 1bc10: 000c0000 00000002 02020000 ff00fbfd ................ 1bc20: 0000fdff 000000fe 00fe00fb fa00fbfa ................ 1bc30: 00fbf8f8 00fb00fb fe000000 00030000 ................ 1bc40: 0100fd02 03000000 000000fe ff0303fe ................ 1bc50: fb000000 0000ff00 01000000 00fe0300 ................ 1bc60: 00fc00fd 0800fe00 00fd0000 00000000 ................ 1bc70: fefe01ff 00fd0000 000000fd 00000000 ................ 1bc80: ffff0000 00fdfd00 00000000 fe000001 ................ 1bc90: fdfdfd00 00000000 00000000 0000fe00 ................ 1bca0: fdfe0000 f800fc00 0005f8fe 0503fb00 ................ 1bcb0: fffa0007 f4ff00fd f202fe03 01000003 ................ 1bcc0: fef200f3 f300feea 00070500 00000003 ................ 1bcd0: fb000100 00f800fd 00fd0000 00fd0000 ................ 1bce0: 00000000 ff00ffff 000000fd 00000000 ................ 1bcf0: fe00fdfd 0000fefd 000000fd 00000000 ................ 1bd00: 00000000 fd00fefe fb00fe00 fd000003 ................ 1bd10: 00030301 00000000 0000fe00 02000000 ................ 1bd20: 00fd0000 00fdfefd 00000000 00020000 ................ 1bd30: 000000fe 00fcfd00 fe0800fb 0000f801 ................ 1bd40: f5f3f307 fe0003fb fb00fbef fb04fb00 ................ 1bd50: 00f900f0 02ff0100 000300fe f300f6f8 ................ 1bd60: f8fafbfa fbfff9fd 010002f9 0000fd00 ................ 1bd70: 03000200 00000000 00000000 fd000000 ................ 1bd80: ff00ff00 fafc00fd f800fffa 00000000 ................ 1bd90: 00fe0000 01000000 000000fe 00000003 ................ 1bda0: 00000000 00000c00 00000000 00000002 ................ 1bdb0: 000000fd 00000000 00000000 000300fb ................ ... 1bdcc: 000000fe 000000fb 00f8f300 f3fc0000 ................ 1bddc: 03fd0000 0000f900 00000000 00000000 ................ 1bdec: fb0000fc 00000000 00000000 00000000 ................ 1bdfc: 00fb0003 03000000 fbfb0200 fdfdfd00 ................ 1be0c: 00000000 00f80000 fdfc00fd f8fafa00 ................ 1be1c: 00fb00fe 000000f8 00001400 fd000001 ................ 1be2c: f5000300 00000000 08fbe800 00f5fe08 ................ 1be3c: f300fc03 ee03fdff 040003fd f8f7fcf7 ................ 1be4c: f10000f5 00000f00 000000ff f9fdffff ................ 1be5c: 00e8fff8 00000000 00000000 00000001 ................ ... 1be78: ff00fd00 0000fcfd 00fd00fb 00000000 ................ ... 1be90: 00ff0000 050000fb fa0003ff f9fffe03 ................ 1bea0: fdfd00fd fcfc00fe fffe0000 00fdfcfe ................ 1beb0: 0300fd00 00fa00fe 00fb0000 fcfc00fc ................ 1bec0: 00000003 00000000 0003fb00 fdfe00fc ................ 1bed0: fefefef8 fffdfeff 00000000 fefefd00 ................ 1bee0: 00000000 fe00fe03 fe000000 fdfefefd ................ 1bef0: 0a0200fe 00f900ff fd0005fe 0004fdf5 ................ 1bf00: 03fcf400 fe0002fc fc00f8fe fc000001 ................ 1bf10: 03000000 00fbfb03 fdfcfdfc 01fc00fd ................ 1bf20: 0008fcfb 00000000 00000000 00000003 ................ ... 1bf44: 000000fc 00000000 00000000 00000000 ................ ... 1bf70: 000000fe 00000000 00000000 00000000 ................ ... 1bf8c: fdfe0000 00000000 00000000 00000000 ................ 1bf9c: fd0000fc fdfd0000 00000000 000000fd ................ 1bfac: 0000ff00 fe000000 00000000 00fb00fc ................ 1bfbc: 00f80000 0105fa02 0000f4fe f600fdfa ................ 1bfcc: 0000f9fa f6f6fdf5 00f900f4 00fd1102 ................ 1bfdc: fdfffdfa f7fbf9fc 00fdfaf6 0100fe00 ................ 1bfec: feee0000 f7fa0608 00f80100 05fdfef3 ................ 1bffc: 0001fde8 f3fdef00 0000edfd 010f00ee ................ 1c00c: 0000fe00 feff0000 ef00fef6 00000000 ................ 1c01c: 00fe00f8 00f4f9ff f8fcff00 00fe00fd ................ 1c02c: f4000000 fef8f8fd fcfdfafc f8fefb00 ................ 1c03c: fbfd00fc 0100fbfd 00f8fe00 00fb0005 ................ 1c04c: 03000000 0afb0200 fdfdfd00 00000000 ................ 1c05c: 00f80000 fdfc00fd f8fafa00 02fb00fe ................ 1c06c: 0000000a 00001400 fd000001 00000300 ................ 1c07c: 00000000 00ff0000 00000000 0000fbfe ................ 1c08c: ff000000 fd000000 fb0000fd fb0000fd ................ 1c09c: 00ff0400 00000000 00000100 05040000 ................ 1c0ac: f800fe02 f80800fc 0afbfbf8 feea0305 ................ 1c0bc: fd00fd05 00f7fd03 fefd03fd 0000fef8 ................ 1c0cc: f9000508 07fdf200 fd01f6fd 0afdf8f8 ................ 1c0dc: 00fc0003 080200f9 faf6f7fa ed010008 ................ 1c0ec: fefc03fe f7fa00fa 00fefcfc fdfbfa00 ................ 1c0fc: fd060800 fcf200f2 fff1f700 f9f8fcf8 ................ 1c10c: fd000007 00fefb00 0400fbfd 000003f8 ................ 1c11c: fafd00f2 faf8fefc f800faf8 f8fbfafd ................ 1c12c: 010000fd f800fc0c fbfd00fd f6f9f9fa ................ 1c13c: 0005fbfd fdf300fc f7f80502 fd08f8fb ................ 1c14c: 05fbe801 00f7fcfa fdfdf5f8 f8fbfdfe ................ 1c15c: 080000ff 00effe07 f606faf1 f5f7fbef ................ 1c16c: 0005f8f3 fd000000 fd030000 05fb0205 ................ 1c17c: fff80000 0100ff00 0000fe01 00000000 ................ 1c18c: 000000fd 01080200 0000fd00 fefe0000 ................ 1c19c: 000000fd 00000201 00020000 000a00fe ................ 1c1ac: fd010105 00000500 00000200 00000000 ................ 1c1bc: 00000000 07000800 00000000 00000000 ................ 1c1cc: 00000000 00f10000 080004fd 03190000 ................ 1c1dc: 0303fbfb 00f301fe 00f10c00 00000000 ................ 1c1ec: 00000000 0aef0000 00000024 00000000 ........$....... 1c1fc: 00000000 0000f100 00000000 00000000 ................ ... 1c21c: fb0000fc 000000fe 00000000 00000000 ................ ... 1c234: 00f900fe 00000100 fefb2103 03f90708 .........!...... 1c244: 03030000 000000fd 00000000 00000000 ................ 1c254: 000007df 00000000 00000000 00000000 ................ 1c264: f9000000 f9000000 00000000 0000fffa ................ 1c274: fd00fa00 0000f400 00000000 00000000 ................ 1c284: 0000ef00 00010000 00000000 0000fd00 ................ 1c294: 00fc00fb 000000f9 00fd03fc fafdf900 ................ 1c2a4: 00f90000 00f400fd eb0000fd f7fdf6fb ................ 1c2b4: 00ef0000 0000fff9 00000000 fbfc0000 ................ 1c2c4: 0000fcfe 00fa0000 05fd03fa fefafe00 ................ 1c2d4: fd00fbfc f902feff 000000ff 00fcfee9 ................ 1c2e4: f4fe00fa fe0000fe 000000fe fe000200 ................ 1c2f4: 0004fefc 00000000 00000000 00000000 ................ ... 1c320: 00030000 00000000 fe00fa00 fb000000 ................ 1c330: 00000003 00fbfdf9 fd00f900 0000f400 ................ 1c340: 00e70000 00f3f7fb fe00ef00 000000fc ................ 1c350: 00000000 fffcfd00 000001fc 0800fd04 ................ 1c360: f8fdfd0d 06040d03 030b03f9 00070607 ................ ... 1c378: 0c100000 fe00fdfb 00140b14 00030000 ................ 1c388: 00000900 000000fc 00000000 00fe0000 ................ 1c398: 00000000 04000000 00000000 f6fefdea ................ 1c3a8: ef0000f3 00000000 00000000 00000000 ................ 1c3b8: 00000000 0000fc00 00000000 fe000000 ................ ... 1c3d0: 00000004 fefdea00 0000f3f6 000000f6 ................ ... 1c3f0: 000000fe fd0003fa f8030502 03feff00 ................ 1c400: 00000200 00fa0000 00fbfefe 1000f6fe ................ 1c410: fefa00fd 00fcfe00 fdfbf9fd fc000000 ................ ... 1c428: 0000fe00 00000000 00040000 ea000000 ................ 1c438: f3f6fefd 00ef0000 00000000 00000d00 ................ ... 1c450: fdf800fc fdfe08fe 01fe01f6 0601f9fe ................ 1c460: 02010201 00fdf6fa f5f9fbf6 fbfc00f6 ................ 1c470: fefefdfd fe00fefd 040004ff 000800fe ................ ... 1c488: fe000000 0000fdfd 00ff00f9 000000fc ................ ... 1c4a0: 000000f1 00000000 00000000 fd00fdfd ................ 1c4b0: 00000000 fc0000fe fc0003fd f900fefb ................ 1c4c0: fdfefafe 0000fc00 00000000 00000000 ................ 1c4d0: 0800ef00 00fb0000 fd000000 0000fd00 ................ 1c4e0: fe0000ff 0000fa00 f8f8fd0b ff030302 ................ 1c4f0: 020402f9 fe080208 f60000f9 f9f80000 ................ 1c500: 00fb0000 fc00fcfd fe00fc00 f8fe0004 ................ 1c510: 000009fd 00fb00fe 00fa0300 0002fd03 ................ 1c520: fe00f800 03fd00ff 000000fe 00fafdf6 ................ 1c530: f40000f8 00fd0900 000200fb f8fd00fd ................ 1c540: 0003fd00 fe000000 fd030000 fd000001 ................ 1c550: 00fd00fe 00000000 00000000 00000000 ................ 1c560: 00000000 000600f0 0000fe00 00010000 ................ 1c570: 0000fdfd 06000500 00000000 01f1f000 ................ 1c580: f604080b 09000b02 00000500 00000000 ................ 1c590: 00000000 00000e00 00000000 00000000 ................ ... 0001c5a8 : 1c5a8: 0001b9f8 0001c5b8 0001c654 0000313d ........T...=1.. 0001c5b8 : 1c5b8: 02010000 05040300 08070602 0a090a09 ................ 1c5c8: 0d000c0b 11100f0e 140c1312 00000014 ................ 1c5d8: 18171615 1b1a1619 1e1d1d1c 1d1d201f ............. .. 1c5e8: 23222116 251e2403 28272625 002b2a29 .!"#.$.%%&'()*+. 1c5f8: 2e2d002c 3231302f 34342d33 2d2d3035 ,.-./0123-4450-- 1c608: 37362e2e 3a333938 3c3a3b3a 09000029 ..67893::;:<)... 1c618: 0000093d 00000000 00000000 00000000 =............... ... 0001c654 : 1c654: 02010000 05040300 08070602 0a090a09 ................ 1c664: 0e0d0c0b 0c11100f 15141312 00000015 ................ 1c674: 19181716 19191917 1a191917 19191919 ................ 1c684: 19171917 1d1c1b03 201f1e1d 00232221 ........... !"#. 1c694: 26250024 00272727 29282627 2a2a2626 $.%&'''.'&()&&** 1c6a4: 2a272a27 2e2d2c2b 302e2f2e 09230000 '*'*+,-../.0..#. 1c6b4: 00000931 00000000 00000000 00000000 1............... ... 0001c6f0 : 1c6f0: 1f720000 ef58ef51 ef5cef5b ef61ef5d ..r.Q.X.[.\.].a. 1c700: ef65ef63 ef6cef69 ef76ef71 ef78ef77 c.e.i.l.q.v.w.x. 1c710: ef98ef8e ef9cef9b efa1ef9d efa3efa2 ................ 1c720: efb7efa4 efbeefb8 efc1efc0 efc7efc4 ................ 1c730: efc9efc8 efe3efcb f014efe5 f017f015 ................ 1c740: f03af037 f06cf043 f0abf074 f190f13b 7.:.C.l.t...;... 1c750: f192f191 f194f193 f1e3f1d7 f254f23d ............=.T. 1c760: f712f4aa 0000f7f2 ........ 0001c768 : 1c768: 0000f7b9 00000000 0000ff4e 0000ffa8 ........N....... 1c778: 0000ffb0 0000ffda 0000fff0 00010006 ................ 1c788: 0001003c 0001005e 00010088 000100be <...^........... 1c798: 000100ce 000100fe 0001011a 0001012a ............*... 1c7a8: 0001015a 00010176 00010186 000101b6 Z...v........... 1c7b8: 000101d2 000101e2 00010218 ............ 0001c7c4 : 1c7c4: 023c0000 06b30478 0b2808ee 0f990d61 ..<.x.....(.a... 1c7d4: 140611d0 186c163a 1ccb1a9d 21211ef7 ....:.l.......!! 1c7e4: 256c2348 29ac278e 2ddf2bc7 32032ff3 H#l%.'.).+.-./.2 1c7f4: 36183410 3a1c381c 3e0e3c17 41ec3fff .4.6.8.:.<.>.?.A 1c804: 45b643d4 496a4793 4d084b3c 508d4ecd .C.E.GjI: 1c980: b5f8 push {r3, r4, r5, r6, r7, lr} 1c982: 46c0 nop ; (mov r8, r8) 1c984: bcf8 pop {r3, r4, r5, r6, r7} 1c986: bc08 pop {r3} 1c988: 469e mov lr, r3 1c98a: 4770 bx lr 0001c98c <__init_array_start>: 1c98c: 000000dd .word 0x000000dd 0001c990 <_fini>: 1c990: b5f8 push {r3, r4, r5, r6, r7, lr} 1c992: 46c0 nop ; (mov r8, r8) 1c994: bcf8 pop {r3, r4, r5, r6, r7} 1c996: bc08 pop {r3} 1c998: 469e mov lr, r3 1c99a: 4770 bx lr 0001c99c <__fini_array_start>: 1c99c: 000000b5 .word 0x000000b5 Disassembly of section .relocate: 20000000 : RAMFUNC void portable_delay_cycles(unsigned long n) { UNUSED(n); __asm ( 20000000: f3bf 8f5f dmb sy 20000004: 3801 subs r0, #1 20000006: 2800 cmp r0, #0 20000008: d1fa bne.n 20000000 "SUB r0, r0, #1 \n" #endif "CMP r0, #0 \n" "BNE loop " ); } 2000000a: 4770 bx lr 2000000c : 2000000c: 0001 0000 .... 20000010 : 20000010: 8fc0 0001 8ae8 0001 8ac0 0001 c5a8 0001 ................ 20000020: 0010 5002 0000 0000 0000 0000 0000 0000 ...P............ 20000030 : 20000030: f2bd 0000 e8b1 0000 0012 0003 0000 0000 ................ 20000040: 0010 2000 ... 20000044 : 20000044: 2bec 2000 0010 0000 2bfc 2000 0010 0000 .+. .....+. .... 20000054 <_lv_txt_encoded_get_char_id>: 20000054: 1755 0001 U... 20000058 <_lv_txt_encoded_next>: 20000058: 1645 0001 E... 2000005c : 2000005c: 0001 0000 .... 20000060 <_impure_ptr>: 20000060: 0064 2000 d.. 20000064 : ...